| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519152015211522152315241525152615271528152915301531153215331534153515361537153815391540154115421543154415451546154715481549155015511552155315541555155615571558155915601561156215631564156515661567156815691570157115721573157415751576157715781579158015811582158315841585158615871588158915901591159215931594159515961597159815991600160116021603160416051606160716081609161016111612161316141615161616171618161916201621162216231624162516261627162816291630163116321633163416351636163716381639164016411642164316441645164616471648164916501651165216531654165516561657165816591660166116621663166416651666166716681669167016711672167316741675167616771678167916801681168216831684168516861687168816891690169116921693169416951696169716981699170017011702170317041705170617071708170917101711171217131714171517161717171817191720172117221723172417251726172717281729173017311732173317341735173617371738173917401741174217431744174517461747174817491750175117521753175417551756175717581759176017611762176317641765176617671768176917701771177217731774177517761777177817791780178117821783178417851786178717881789179017911792179317941795179617971798179918001801180218031804180518061807180818091810181118121813181418151816181718181819182018211822182318241825182618271828182918301831183218331834183518361837183818391840184118421843184418451846184718481849185018511852185318541855185618571858185918601861186218631864186518661867186818691870187118721873187418751876187718781879188018811882188318841885188618871888188918901891189218931894189518961897189818991900190119021903190419051906190719081909191019111912191319141915191619171918191919201921192219231924192519261927192819291930193119321933193419351936193719381939194019411942194319441945194619471948194919501951195219531954195519561957195819591960196119621963196419651966196719681969197019711972197319741975197619771978197919801981198219831984198519861987198819891990199119921993199419951996199719981999200020012002200320042005200620072008200920102011201220132014201520162017201820192020202120222023202420252026202720282029203020312032203320342035203620372038203920402041204220432044204520462047204820492050205120522053205420552056205720582059206020612062206320642065206620672068206920702071207220732074207520762077207820792080208120822083208420852086208720882089209020912092209320942095209620972098209921002101210221032104210521062107210821092110211121122113211421152116211721182119212021212122212321242125212621272128212921302131213221332134213521362137213821392140214121422143214421452146214721482149215021512152215321542155215621572158215921602161216221632164216521662167216821692170217121722173217421752176217721782179218021812182218321842185218621872188218921902191219221932194219521962197219821992200220122022203220422052206220722082209221022112212221322142215221622172218221922202221222222232224222522262227222822292230223122322233223422352236223722382239224022412242224322442245224622472248224922502251225222532254225522562257225822592260226122622263226422652266226722682269227022712272227322742275227622772278227922802281228222832284228522862287228822892290229122922293229422952296229722982299230023012302230323042305230623072308230923102311231223132314231523162317231823192320232123222323232423252326232723282329233023312332233323342335233623372338233923402341234223432344234523462347234823492350235123522353235423552356235723582359236023612362236323642365236623672368236923702371237223732374237523762377237823792380238123822383238423852386238723882389239023912392239323942395239623972398239924002401240224032404240524062407240824092410241124122413241424152416241724182419242024212422242324242425242624272428242924302431243224332434243524362437243824392440244124422443244424452446244724482449245024512452245324542455245624572458245924602461246224632464246524662467246824692470247124722473247424752476247724782479248024812482248324842485248624872488248924902491249224932494249524962497249824992500250125022503250425052506250725082509251025112512251325142515251625172518251925202521252225232524252525262527252825292530253125322533253425352536253725382539254025412542254325442545254625472548254925502551255225532554255525562557255825592560256125622563256425652566256725682569257025712572257325742575257625772578257925802581258225832584258525862587258825892590259125922593259425952596259725982599260026012602260326042605260626072608260926102611261226132614261526162617261826192620262126222623262426252626262726282629263026312632263326342635263626372638263926402641264226432644264526462647264826492650265126522653265426552656265726582659266026612662266326642665266626672668266926702671267226732674267526762677267826792680268126822683268426852686268726882689269026912692269326942695269626972698269927002701270227032704270527062707270827092710271127122713271427152716271727182719272027212722272327242725272627272728272927302731273227332734273527362737273827392740274127422743274427452746274727482749275027512752275327542755275627572758275927602761276227632764276527662767276827692770277127722773277427752776277727782779278027812782278327842785278627872788278927902791279227932794279527962797279827992800280128022803280428052806280728082809281028112812281328142815281628172818281928202821282228232824282528262827282828292830283128322833283428352836283728382839284028412842284328442845284628472848284928502851285228532854285528562857285828592860286128622863286428652866286728682869287028712872287328742875287628772878287928802881288228832884288528862887288828892890289128922893289428952896289728982899290029012902290329042905290629072908290929102911291229132914291529162917291829192920292129222923292429252926292729282929293029312932293329342935293629372938293929402941294229432944294529462947294829492950295129522953295429552956295729582959296029612962296329642965296629672968296929702971297229732974297529762977297829792980298129822983298429852986298729882989299029912992299329942995299629972998299930003001300230033004300530063007300830093010301130123013301430153016301730183019302030213022302330243025302630273028302930303031303230333034303530363037303830393040304130423043304430453046304730483049305030513052305330543055305630573058305930603061306230633064306530663067306830693070307130723073307430753076307730783079308030813082308330843085308630873088308930903091309230933094309530963097309830993100310131023103310431053106310731083109311031113112311331143115311631173118311931203121312231233124312531263127312831293130313131323133313431353136313731383139314031413142314331443145314631473148314931503151315231533154315531563157315831593160316131623163316431653166316731683169317031713172317331743175317631773178317931803181318231833184318531863187318831893190319131923193319431953196319731983199320032013202320332043205320632073208320932103211321232133214321532163217321832193220322132223223322432253226322732283229323032313232323332343235323632373238323932403241324232433244324532463247324832493250325132523253325432553256325732583259326032613262326332643265326632673268326932703271327232733274327532763277327832793280328132823283328432853286328732883289329032913292329332943295329632973298329933003301330233033304330533063307330833093310331133123313331433153316331733183319332033213322332333243325332633273328332933303331333233333334333533363337333833393340334133423343334433453346334733483349335033513352335333543355335633573358335933603361336233633364336533663367336833693370337133723373337433753376337733783379338033813382338333843385338633873388338933903391339233933394339533963397339833993400340134023403340434053406340734083409341034113412341334143415341634173418341934203421342234233424342534263427342834293430343134323433343434353436343734383439344034413442344334443445344634473448344934503451345234533454345534563457345834593460346134623463346434653466346734683469347034713472347334743475347634773478347934803481348234833484348534863487348834893490349134923493349434953496349734983499350035013502350335043505350635073508350935103511351235133514351535163517351835193520352135223523352435253526352735283529353035313532353335343535353635373538353935403541354235433544354535463547354835493550355135523553355435553556355735583559356035613562356335643565356635673568356935703571357235733574357535763577357835793580358135823583358435853586358735883589359035913592359335943595359635973598359936003601360236033604360536063607360836093610361136123613361436153616361736183619362036213622362336243625362636273628362936303631363236333634363536363637363836393640364136423643364436453646364736483649365036513652365336543655365636573658365936603661366236633664366536663667366836693670367136723673367436753676367736783679368036813682368336843685368636873688368936903691369236933694369536963697369836993700370137023703370437053706370737083709371037113712371337143715371637173718371937203721372237233724372537263727372837293730373137323733373437353736373737383739374037413742374337443745374637473748374937503751375237533754375537563757375837593760376137623763376437653766376737683769377037713772377337743775377637773778377937803781378237833784378537863787378837893790379137923793379437953796379737983799380038013802380338043805380638073808380938103811381238133814381538163817381838193820382138223823382438253826382738283829383038313832383338343835383638373838383938403841384238433844384538463847384838493850385138523853385438553856385738583859386038613862386338643865386638673868386938703871387238733874387538763877387838793880388138823883388438853886388738883889389038913892389338943895389638973898389939003901390239033904390539063907390839093910391139123913391439153916391739183919392039213922392339243925392639273928392939303931393239333934393539363937393839393940394139423943394439453946394739483949395039513952395339543955395639573958395939603961396239633964396539663967396839693970397139723973397439753976397739783979398039813982398339843985398639873988398939903991399239933994399539963997399839994000400140024003400440054006400740084009401040114012401340144015401640174018401940204021402240234024402540264027402840294030403140324033403440354036403740384039404040414042404340444045404640474048404940504051405240534054405540564057405840594060406140624063406440654066406740684069407040714072407340744075407640774078407940804081408240834084408540864087408840894090409140924093409440954096409740984099410041014102410341044105410641074108410941104111411241134114411541164117411841194120412141224123412441254126412741284129413041314132413341344135413641374138413941404141414241434144414541464147414841494150415141524153415441554156415741584159416041614162416341644165416641674168416941704171417241734174417541764177417841794180418141824183418441854186418741884189419041914192419341944195419641974198419942004201420242034204420542064207420842094210421142124213421442154216421742184219422042214222422342244225422642274228422942304231423242334234423542364237423842394240424142424243424442454246424742484249425042514252425342544255425642574258425942604261426242634264426542664267426842694270427142724273427442754276427742784279428042814282428342844285428642874288428942904291429242934294429542964297429842994300430143024303430443054306430743084309431043114312431343144315431643174318431943204321432243234324432543264327432843294330433143324333433443354336433743384339434043414342434343444345434643474348434943504351435243534354435543564357435843594360436143624363436443654366436743684369437043714372437343744375437643774378437943804381438243834384438543864387438843894390439143924393439443954396439743984399440044014402440344044405440644074408440944104411441244134414441544164417441844194420442144224423442444254426442744284429443044314432443344344435443644374438443944404441444244434444444544464447444844494450445144524453445444554456445744584459446044614462446344644465446644674468446944704471447244734474447544764477447844794480448144824483448444854486448744884489449044914492449344944495449644974498449945004501450245034504450545064507450845094510451145124513451445154516451745184519452045214522452345244525452645274528452945304531453245334534453545364537453845394540454145424543454445454546454745484549455045514552455345544555455645574558455945604561456245634564456545664567456845694570457145724573457445754576457745784579458045814582458345844585458645874588458945904591459245934594459545964597459845994600460146024603460446054606460746084609461046114612461346144615461646174618461946204621462246234624462546264627462846294630463146324633463446354636463746384639464046414642464346444645464646474648464946504651465246534654465546564657465846594660466146624663466446654666466746684669467046714672467346744675467646774678467946804681468246834684468546864687468846894690469146924693469446954696469746984699470047014702470347044705470647074708470947104711471247134714471547164717471847194720472147224723472447254726472747284729473047314732473347344735473647374738473947404741474247434744474547464747474847494750475147524753475447554756475747584759476047614762476347644765476647674768476947704771477247734774477547764777477847794780478147824783478447854786478747884789479047914792479347944795479647974798479948004801480248034804480548064807480848094810481148124813481448154816481748184819482048214822482348244825482648274828482948304831483248334834483548364837483848394840484148424843484448454846484748484849485048514852485348544855485648574858485948604861486248634864486548664867486848694870487148724873487448754876487748784879488048814882488348844885488648874888488948904891489248934894489548964897489848994900490149024903490449054906490749084909491049114912491349144915491649174918491949204921492249234924492549264927492849294930493149324933493449354936493749384939494049414942494349444945494649474948494949504951495249534954495549564957495849594960496149624963496449654966496749684969497049714972497349744975497649774978497949804981498249834984498549864987498849894990499149924993499449954996499749984999500050015002500350045005500650075008500950105011501250135014501550165017501850195020502150225023502450255026502750285029503050315032503350345035503650375038503950405041504250435044504550465047504850495050505150525053505450555056505750585059506050615062506350645065506650675068506950705071507250735074507550765077507850795080508150825083508450855086508750885089509050915092509350945095509650975098509951005101510251035104510551065107510851095110511151125113511451155116511751185119512051215122512351245125512651275128512951305131513251335134513551365137513851395140514151425143514451455146514751485149515051515152515351545155515651575158515951605161516251635164516551665167516851695170517151725173517451755176517751785179518051815182518351845185518651875188518951905191519251935194519551965197519851995200520152025203520452055206520752085209521052115212521352145215521652175218521952205221522252235224522552265227522852295230523152325233523452355236523752385239524052415242524352445245524652475248524952505251525252535254525552565257525852595260526152625263526452655266526752685269527052715272527352745275527652775278527952805281528252835284528552865287528852895290529152925293529452955296529752985299530053015302530353045305530653075308530953105311531253135314531553165317531853195320532153225323532453255326532753285329533053315332533353345335533653375338533953405341534253435344534553465347534853495350535153525353535453555356535753585359536053615362536353645365536653675368536953705371537253735374537553765377537853795380538153825383538453855386538753885389539053915392539353945395539653975398539954005401540254035404540554065407540854095410541154125413541454155416541754185419542054215422542354245425542654275428542954305431543254335434543554365437543854395440544154425443544454455446544754485449545054515452545354545455545654575458545954605461546254635464546554665467546854695470547154725473547454755476547754785479548054815482548354845485548654875488548954905491549254935494549554965497549854995500550155025503550455055506550755085509551055115512551355145515551655175518551955205521552255235524552555265527552855295530553155325533553455355536553755385539554055415542554355445545554655475548554955505551555255535554555555565557555855595560556155625563556455655566556755685569557055715572557355745575557655775578557955805581558255835584558555865587558855895590559155925593559455955596559755985599560056015602560356045605560656075608560956105611561256135614561556165617561856195620562156225623562456255626562756285629563056315632563356345635563656375638563956405641564256435644564556465647564856495650565156525653565456555656565756585659566056615662566356645665566656675668566956705671567256735674567556765677567856795680568156825683568456855686568756885689569056915692569356945695569656975698569957005701570257035704570557065707570857095710571157125713571457155716571757185719572057215722572357245725572657275728572957305731573257335734573557365737573857395740574157425743574457455746574757485749575057515752575357545755575657575758575957605761576257635764576557665767576857695770577157725773577457755776577757785779578057815782578357845785578657875788578957905791579257935794579557965797579857995800580158025803580458055806580758085809581058115812581358145815581658175818581958205821582258235824582558265827582858295830583158325833583458355836583758385839584058415842584358445845584658475848584958505851585258535854585558565857585858595860586158625863586458655866586758685869587058715872587358745875587658775878587958805881588258835884588558865887588858895890589158925893589458955896589758985899590059015902590359045905590659075908590959105911591259135914591559165917591859195920592159225923592459255926592759285929593059315932593359345935593659375938593959405941594259435944594559465947594859495950595159525953595459555956595759585959596059615962596359645965596659675968596959705971597259735974597559765977597859795980598159825983598459855986598759885989599059915992599359945995599659975998599960006001600260036004600560066007600860096010601160126013601460156016601760186019602060216022602360246025602660276028602960306031603260336034603560366037603860396040604160426043604460456046604760486049605060516052605360546055605660576058605960606061606260636064606560666067606860696070607160726073607460756076607760786079608060816082608360846085608660876088608960906091609260936094609560966097609860996100610161026103610461056106610761086109611061116112611361146115611661176118611961206121612261236124612561266127612861296130613161326133613461356136613761386139614061416142614361446145614661476148614961506151615261536154615561566157615861596160616161626163616461656166616761686169617061716172617361746175617661776178617961806181618261836184618561866187618861896190619161926193619461956196619761986199620062016202620362046205620662076208620962106211621262136214621562166217621862196220622162226223622462256226622762286229623062316232623362346235623662376238623962406241624262436244624562466247624862496250625162526253625462556256625762586259626062616262626362646265626662676268626962706271627262736274627562766277627862796280628162826283628462856286628762886289629062916292629362946295629662976298629963006301630263036304630563066307630863096310631163126313631463156316631763186319632063216322632363246325632663276328632963306331633263336334633563366337633863396340634163426343634463456346634763486349635063516352635363546355635663576358635963606361636263636364636563666367636863696370637163726373637463756376637763786379638063816382638363846385638663876388638963906391639263936394639563966397639863996400640164026403640464056406640764086409641064116412641364146415641664176418641964206421642264236424642564266427642864296430643164326433643464356436643764386439644064416442644364446445644664476448644964506451645264536454645564566457645864596460646164626463646464656466646764686469647064716472647364746475647664776478647964806481648264836484648564866487648864896490649164926493649464956496649764986499650065016502650365046505650665076508650965106511651265136514651565166517651865196520652165226523652465256526652765286529653065316532653365346535653665376538653965406541654265436544654565466547654865496550655165526553655465556556655765586559656065616562656365646565656665676568656965706571657265736574657565766577657865796580658165826583658465856586658765886589659065916592659365946595659665976598659966006601660266036604660566066607660866096610661166126613661466156616661766186619662066216622662366246625662666276628662966306631663266336634663566366637663866396640664166426643664466456646664766486649665066516652665366546655665666576658665966606661666266636664666566666667666866696670667166726673667466756676667766786679668066816682668366846685668666876688668966906691669266936694669566966697669866996700670167026703670467056706670767086709671067116712671367146715671667176718671967206721672267236724672567266727672867296730673167326733673467356736673767386739674067416742674367446745674667476748674967506751675267536754675567566757675867596760676167626763676467656766676767686769677067716772677367746775677667776778677967806781678267836784678567866787678867896790679167926793679467956796679767986799680068016802680368046805680668076808680968106811681268136814681568166817681868196820682168226823682468256826682768286829683068316832683368346835683668376838683968406841684268436844684568466847684868496850685168526853685468556856685768586859686068616862686368646865686668676868686968706871687268736874687568766877687868796880688168826883688468856886688768886889689068916892689368946895689668976898689969006901690269036904690569066907690869096910691169126913691469156916691769186919692069216922692369246925692669276928692969306931693269336934693569366937693869396940694169426943694469456946694769486949695069516952695369546955695669576958695969606961696269636964696569666967696869696970697169726973697469756976697769786979698069816982698369846985698669876988698969906991699269936994699569966997699869997000700170027003700470057006700770087009701070117012701370147015701670177018701970207021702270237024702570267027702870297030703170327033703470357036703770387039704070417042704370447045704670477048704970507051705270537054705570567057705870597060706170627063706470657066706770687069707070717072707370747075707670777078707970807081708270837084708570867087708870897090709170927093709470957096709770987099710071017102710371047105710671077108710971107111711271137114711571167117711871197120712171227123712471257126712771287129713071317132713371347135713671377138713971407141714271437144714571467147714871497150715171527153715471557156715771587159716071617162716371647165716671677168716971707171717271737174717571767177717871797180718171827183718471857186718771887189719071917192719371947195719671977198719972007201720272037204720572067207720872097210721172127213721472157216721772187219722072217222722372247225722672277228722972307231723272337234723572367237723872397240724172427243724472457246724772487249725072517252725372547255725672577258725972607261726272637264726572667267726872697270727172727273727472757276727772787279728072817282728372847285728672877288728972907291729272937294729572967297729872997300730173027303730473057306730773087309731073117312731373147315731673177318731973207321732273237324732573267327732873297330733173327333733473357336733773387339734073417342734373447345734673477348734973507351735273537354735573567357735873597360736173627363736473657366736773687369737073717372737373747375737673777378737973807381738273837384738573867387738873897390739173927393739473957396739773987399740074017402740374047405740674077408740974107411741274137414741574167417741874197420742174227423742474257426742774287429743074317432743374347435743674377438743974407441744274437444744574467447744874497450745174527453745474557456745774587459746074617462746374647465746674677468746974707471747274737474747574767477747874797480748174827483748474857486748774887489749074917492749374947495749674977498749975007501750275037504750575067507750875097510751175127513751475157516751775187519752075217522752375247525752675277528752975307531753275337534753575367537753875397540754175427543754475457546754775487549755075517552755375547555755675577558755975607561756275637564756575667567756875697570757175727573757475757576757775787579758075817582758375847585758675877588758975907591759275937594759575967597759875997600760176027603760476057606760776087609761076117612761376147615761676177618761976207621762276237624762576267627762876297630763176327633763476357636763776387639764076417642764376447645764676477648764976507651765276537654765576567657765876597660766176627663766476657666766776687669767076717672767376747675767676777678767976807681768276837684768576867687768876897690769176927693769476957696769776987699770077017702770377047705770677077708770977107711771277137714771577167717771877197720772177227723772477257726772777287729773077317732773377347735773677377738773977407741774277437744774577467747774877497750775177527753775477557756775777587759776077617762776377647765776677677768776977707771777277737774777577767777777877797780778177827783778477857786778777887789779077917792779377947795779677977798779978007801780278037804780578067807780878097810781178127813781478157816781778187819782078217822782378247825782678277828782978307831783278337834783578367837783878397840784178427843784478457846784778487849785078517852785378547855785678577858785978607861786278637864786578667867786878697870787178727873787478757876787778787879788078817882788378847885788678877888788978907891789278937894789578967897789878997900790179027903790479057906790779087909791079117912791379147915791679177918791979207921792279237924792579267927792879297930793179327933793479357936793779387939794079417942794379447945794679477948794979507951795279537954795579567957795879597960796179627963796479657966796779687969797079717972797379747975797679777978797979807981798279837984798579867987798879897990799179927993799479957996799779987999800080018002800380048005800680078008800980108011801280138014801580168017801880198020802180228023802480258026802780288029803080318032803380348035803680378038803980408041804280438044804580468047804880498050805180528053805480558056805780588059806080618062806380648065806680678068806980708071807280738074807580768077807880798080808180828083808480858086808780888089809080918092809380948095809680978098809981008101810281038104810581068107810881098110811181128113811481158116811781188119812081218122812381248125812681278128812981308131813281338134813581368137813881398140814181428143814481458146814781488149815081518152815381548155815681578158815981608161816281638164816581668167816881698170817181728173817481758176817781788179818081818182818381848185818681878188818981908191819281938194819581968197819881998200820182028203820482058206820782088209821082118212821382148215821682178218821982208221822282238224822582268227822882298230823182328233823482358236823782388239824082418242824382448245824682478248824982508251825282538254825582568257825882598260826182628263826482658266826782688269827082718272827382748275827682778278827982808281828282838284828582868287828882898290829182928293829482958296829782988299830083018302830383048305830683078308830983108311831283138314831583168317831883198320832183228323832483258326832783288329833083318332833383348335833683378338833983408341834283438344834583468347834883498350835183528353835483558356835783588359836083618362836383648365836683678368836983708371837283738374837583768377837883798380838183828383838483858386838783888389839083918392839383948395839683978398839984008401840284038404840584068407840884098410841184128413841484158416841784188419842084218422842384248425842684278428842984308431843284338434843584368437843884398440844184428443844484458446844784488449845084518452845384548455845684578458845984608461846284638464846584668467846884698470847184728473847484758476847784788479848084818482848384848485848684878488848984908491849284938494849584968497849884998500850185028503850485058506850785088509851085118512851385148515851685178518851985208521852285238524852585268527852885298530853185328533853485358536853785388539854085418542854385448545854685478548854985508551855285538554855585568557855885598560856185628563856485658566856785688569857085718572857385748575857685778578857985808581858285838584858585868587858885898590859185928593859485958596859785988599860086018602860386048605860686078608860986108611861286138614861586168617861886198620862186228623862486258626862786288629863086318632863386348635863686378638863986408641864286438644864586468647864886498650865186528653865486558656865786588659866086618662866386648665866686678668866986708671867286738674867586768677867886798680868186828683868486858686868786888689869086918692869386948695869686978698869987008701870287038704870587068707870887098710871187128713871487158716871787188719872087218722872387248725872687278728872987308731873287338734873587368737873887398740874187428743874487458746874787488749875087518752875387548755875687578758875987608761876287638764876587668767876887698770877187728773877487758776877787788779878087818782878387848785878687878788878987908791879287938794879587968797879887998800880188028803880488058806880788088809881088118812881388148815881688178818881988208821882288238824882588268827882888298830883188328833883488358836883788388839884088418842884388448845884688478848884988508851885288538854885588568857885888598860886188628863886488658866886788688869887088718872887388748875887688778878887988808881888288838884888588868887888888898890889188928893889488958896889788988899890089018902890389048905890689078908890989108911891289138914891589168917891889198920892189228923892489258926892789288929893089318932893389348935893689378938893989408941894289438944894589468947894889498950895189528953895489558956895789588959896089618962896389648965896689678968896989708971897289738974897589768977897889798980898189828983898489858986898789888989899089918992899389948995899689978998899990009001900290039004900590069007900890099010901190129013901490159016901790189019902090219022902390249025902690279028902990309031903290339034903590369037903890399040904190429043904490459046904790489049905090519052905390549055905690579058905990609061906290639064906590669067906890699070907190729073907490759076907790789079908090819082908390849085908690879088908990909091909290939094909590969097909890999100910191029103910491059106910791089109911091119112911391149115911691179118911991209121912291239124912591269127912891299130913191329133913491359136913791389139914091419142914391449145914691479148914991509151915291539154915591569157915891599160916191629163916491659166916791689169917091719172917391749175917691779178917991809181918291839184918591869187918891899190919191929193919491959196919791989199920092019202920392049205920692079208920992109211921292139214921592169217921892199220922192229223922492259226922792289229923092319232923392349235923692379238923992409241924292439244924592469247924892499250925192529253925492559256925792589259926092619262926392649265926692679268926992709271927292739274927592769277927892799280928192829283928492859286928792889289929092919292929392949295929692979298929993009301930293039304930593069307930893099310931193129313931493159316931793189319932093219322932393249325932693279328932993309331933293339334933593369337933893399340934193429343934493459346934793489349935093519352935393549355935693579358935993609361936293639364936593669367936893699370937193729373937493759376937793789379938093819382938393849385938693879388938993909391939293939394939593969397939893999400940194029403940494059406940794089409941094119412941394149415941694179418941994209421942294239424942594269427942894299430943194329433943494359436943794389439944094419442944394449445944694479448944994509451945294539454945594569457945894599460946194629463946494659466946794689469947094719472947394749475947694779478947994809481948294839484948594869487948894899490949194929493949494959496949794989499950095019502950395049505950695079508950995109511951295139514951595169517951895199520952195229523952495259526952795289529953095319532953395349535953695379538953995409541954295439544954595469547954895499550955195529553955495559556955795589559956095619562956395649565956695679568956995709571957295739574957595769577957895799580958195829583958495859586958795889589959095919592959395949595959695979598959996009601960296039604960596069607960896099610961196129613961496159616961796189619962096219622962396249625962696279628962996309631963296339634963596369637963896399640964196429643964496459646964796489649965096519652965396549655965696579658965996609661966296639664966596669667966896699670967196729673967496759676967796789679968096819682968396849685968696879688968996909691969296939694969596969697969896999700970197029703970497059706970797089709971097119712971397149715971697179718971997209721972297239724972597269727972897299730973197329733973497359736973797389739974097419742974397449745974697479748974997509751975297539754975597569757975897599760976197629763976497659766976797689769977097719772977397749775977697779778977997809781978297839784978597869787978897899790979197929793979497959796979797989799980098019802980398049805980698079808980998109811981298139814981598169817981898199820982198229823982498259826982798289829983098319832983398349835983698379838983998409841984298439844984598469847984898499850985198529853985498559856985798589859986098619862986398649865986698679868986998709871987298739874987598769877987898799880988198829883988498859886988798889889989098919892989398949895989698979898989999009901990299039904990599069907990899099910991199129913991499159916991799189919992099219922992399249925992699279928992999309931993299339934993599369937993899399940994199429943994499459946994799489949995099519952995399549955995699579958995999609961996299639964996599669967996899699970997199729973997499759976997799789979998099819982998399849985998699879988998999909991999299939994999599969997999899991000010001100021000310004100051000610007100081000910010100111001210013100141001510016100171001810019100201002110022100231002410025100261002710028100291003010031100321003310034100351003610037100381003910040100411004210043100441004510046100471004810049100501005110052100531005410055100561005710058100591006010061100621006310064100651006610067100681006910070100711007210073100741007510076100771007810079100801008110082100831008410085100861008710088100891009010091100921009310094100951009610097100981009910100101011010210103101041010510106101071010810109101101011110112101131011410115101161011710118101191012010121101221012310124101251012610127101281012910130101311013210133101341013510136101371013810139101401014110142101431014410145101461014710148101491015010151101521015310154101551015610157101581015910160101611016210163101641016510166101671016810169101701017110172101731017410175101761017710178101791018010181101821018310184101851018610187101881018910190101911019210193101941019510196101971019810199102001020110202102031020410205102061020710208102091021010211102121021310214102151021610217102181021910220102211022210223102241022510226102271022810229102301023110232102331023410235102361023710238102391024010241102421024310244102451024610247102481024910250102511025210253102541025510256102571025810259102601026110262102631026410265102661026710268102691027010271102721027310274102751027610277102781027910280102811028210283102841028510286102871028810289102901029110292102931029410295102961029710298102991030010301103021030310304103051030610307103081030910310103111031210313103141031510316103171031810319103201032110322103231032410325103261032710328103291033010331103321033310334103351033610337103381033910340103411034210343103441034510346103471034810349103501035110352103531035410355103561035710358103591036010361103621036310364103651036610367103681036910370103711037210373103741037510376103771037810379103801038110382103831038410385103861038710388103891039010391103921039310394103951039610397103981039910400104011040210403104041040510406104071040810409104101041110412104131041410415104161041710418104191042010421104221042310424104251042610427104281042910430104311043210433104341043510436104371043810439104401044110442104431044410445104461044710448104491045010451104521045310454104551045610457104581045910460104611046210463104641046510466104671046810469104701047110472104731047410475104761047710478104791048010481104821048310484104851048610487104881048910490104911049210493104941049510496104971049810499105001050110502105031050410505105061050710508105091051010511105121051310514105151051610517105181051910520105211052210523105241052510526105271052810529105301053110532105331053410535105361053710538105391054010541105421054310544105451054610547105481054910550105511055210553105541055510556105571055810559105601056110562105631056410565105661056710568105691057010571105721057310574105751057610577105781057910580105811058210583105841058510586105871058810589105901059110592105931059410595105961059710598105991060010601106021060310604106051060610607106081060910610106111061210613106141061510616106171061810619106201062110622106231062410625106261062710628106291063010631106321063310634106351063610637106381063910640106411064210643106441064510646106471064810649106501065110652106531065410655106561065710658106591066010661106621066310664106651066610667106681066910670106711067210673106741067510676106771067810679106801068110682106831068410685106861068710688106891069010691106921069310694106951069610697106981069910700107011070210703107041070510706107071070810709107101071110712107131071410715107161071710718107191072010721107221072310724107251072610727107281072910730107311073210733107341073510736107371073810739107401074110742107431074410745107461074710748107491075010751107521075310754107551075610757107581075910760107611076210763107641076510766107671076810769107701077110772107731077410775107761077710778107791078010781107821078310784107851078610787107881078910790107911079210793107941079510796107971079810799108001080110802108031080410805108061080710808108091081010811108121081310814108151081610817108181081910820108211082210823108241082510826108271082810829108301083110832108331083410835108361083710838108391084010841108421084310844108451084610847108481084910850108511085210853108541085510856108571085810859108601086110862108631086410865108661086710868108691087010871108721087310874108751087610877108781087910880108811088210883108841088510886108871088810889108901089110892108931089410895108961089710898108991090010901109021090310904109051090610907109081090910910109111091210913109141091510916109171091810919109201092110922109231092410925109261092710928109291093010931109321093310934109351093610937109381093910940109411094210943109441094510946109471094810949109501095110952109531095410955109561095710958109591096010961109621096310964109651096610967109681096910970109711097210973109741097510976109771097810979109801098110982109831098410985109861098710988109891099010991109921099310994109951099610997109981099911000110011100211003110041100511006110071100811009110101101111012110131101411015110161101711018110191102011021110221102311024110251102611027110281102911030110311103211033110341103511036110371103811039110401104111042110431104411045110461104711048110491105011051110521105311054110551105611057110581105911060110611106211063110641106511066110671106811069110701107111072110731107411075110761107711078110791108011081110821108311084110851108611087110881108911090110911109211093110941109511096110971109811099111001110111102111031110411105111061110711108111091111011111111121111311114111151111611117111181111911120111211112211123111241112511126111271112811129111301113111132111331113411135111361113711138111391114011141111421114311144111451114611147111481114911150111511115211153111541115511156111571115811159111601116111162111631116411165111661116711168111691117011171111721117311174111751117611177111781117911180111811118211183111841118511186111871118811189111901119111192111931119411195111961119711198111991120011201112021120311204112051120611207112081120911210112111121211213112141121511216112171121811219112201122111222112231122411225112261122711228112291123011231112321123311234112351123611237112381123911240112411124211243112441124511246112471124811249112501125111252112531125411255112561125711258112591126011261112621126311264112651126611267112681126911270112711127211273112741127511276112771127811279112801128111282112831128411285112861128711288112891129011291112921129311294112951129611297112981129911300113011130211303113041130511306113071130811309113101131111312113131131411315113161131711318113191132011321113221132311324113251132611327113281132911330113311133211333113341133511336113371133811339113401134111342113431134411345113461134711348113491135011351113521135311354113551135611357113581135911360113611136211363113641136511366113671136811369113701137111372113731137411375113761137711378113791138011381113821138311384113851138611387113881138911390113911139211393113941139511396113971139811399114001140111402114031140411405114061140711408114091141011411114121141311414114151141611417114181141911420114211142211423114241142511426114271142811429114301143111432114331143411435114361143711438114391144011441114421144311444114451144611447114481144911450114511145211453114541145511456114571145811459114601146111462114631146411465114661146711468114691147011471114721147311474114751147611477114781147911480114811148211483114841148511486114871148811489114901149111492114931149411495114961149711498114991150011501115021150311504115051150611507115081150911510115111151211513115141151511516115171151811519115201152111522115231152411525115261152711528115291153011531115321153311534115351153611537115381153911540115411154211543115441154511546115471154811549115501155111552115531155411555115561155711558115591156011561115621156311564115651156611567115681156911570115711157211573115741157511576115771157811579115801158111582115831158411585115861158711588115891159011591115921159311594115951159611597115981159911600116011160211603116041160511606116071160811609116101161111612116131161411615116161161711618116191162011621116221162311624116251162611627116281162911630116311163211633116341163511636116371163811639116401164111642116431164411645116461164711648116491165011651116521165311654116551165611657116581165911660116611166211663116641166511666116671166811669116701167111672116731167411675116761167711678116791168011681116821168311684116851168611687116881168911690116911169211693116941169511696116971169811699117001170111702117031170411705117061170711708117091171011711117121171311714117151171611717117181171911720117211172211723117241172511726117271172811729117301173111732117331173411735117361173711738117391174011741117421174311744117451174611747117481174911750117511175211753117541175511756117571175811759117601176111762117631176411765117661176711768117691177011771117721177311774117751177611777117781177911780117811178211783117841178511786117871178811789117901179111792117931179411795117961179711798117991180011801118021180311804118051180611807118081180911810118111181211813118141181511816118171181811819118201182111822118231182411825118261182711828118291183011831118321183311834118351183611837118381183911840118411184211843118441184511846118471184811849118501185111852118531185411855118561185711858118591186011861118621186311864118651186611867118681186911870118711187211873118741187511876118771187811879118801188111882 |
- (this["webpackJsonp"] = this["webpackJsonp"] || []).push([["app-service"],[
- /* 0 */
- /*!**************************************************!*\
- !*** D:/Work2/Orienteering/TrackOffical/main.js ***!
- \**************************************************/
- /*! no static exports found */
- /***/ (function(module, exports, __webpack_require__) {
- "use strict";
- eval("\n\nvar _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ 1);\nvar _defineProperty2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/defineProperty */ 2));\n__webpack_require__(/*! uni-pages */ 6);\nvar _vue = _interopRequireDefault(__webpack_require__(/*! vue */ 60));\nvar _App = _interopRequireDefault(__webpack_require__(/*! ./App */ 61));\nvar _track_offical_grpc_web_pb = __webpack_require__(/*! ./grpc/track_offical_grpc_web_pb.js */ 64);\nvar _SqliteHelper = _interopRequireDefault(__webpack_require__(/*! ./utils/SqliteHelper.js */ 67));\nvar _ouuNfc = _interopRequireDefault(__webpack_require__(/*! ./utils/ouu-nfc.js */ 71));\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { (0, _defineProperty2.default)(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n_vue.default.config.productionTip = false;\n_App.default.mpType = 'app';\n\n// 建立grpc连接服务 \n\n// 测试版\nvar client = new _track_offical_grpc_web_pb.ApiToClient(\"http://192.168.0.3:10000\", null, null);\n\n// 正式版\n// let client = new ApiToClient(\"http://otapi.beswell.com:10000\", null, null)\n\n// 挂载为全局方法 \n_vue.default.prototype.$client = client;\n\n// import { usqlite } from '@/uni_modules/onemue-USQLite/js_sdk/usqlite.js'\n\n_vue.default.prototype.$dbHelper = _SqliteHelper.default;\n_vue.default.prototype.$nfc = _ouuNfc.default;\n_ouuNfc.default.listenNFCStatus();\nvar app = new _vue.default(_objectSpread({}, _App.default));\napp.$mount();//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInVuaS1hcHA6Ly8vbWFpbi5qcyJdLCJuYW1lcyI6WyJWdWUiLCJjb25maWciLCJwcm9kdWN0aW9uVGlwIiwiQXBwIiwibXBUeXBlIiwiY2xpZW50IiwiQXBpVG9DbGllbnQiLCJwcm90b3R5cGUiLCIkY2xpZW50IiwiJGRiSGVscGVyIiwiU3FsaXRlSGVscGVyIiwiJG5mYyIsIm5mYyIsImxpc3Rlbk5GQ1N0YXR1cyIsImFwcCIsIiRtb3VudCJdLCJtYXBwaW5ncyI6Ijs7OztBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBc0JBO0FBQ0E7QUFBb0M7QUFBQTtBQW5CcENBLFlBQUcsQ0FBQ0MsTUFBTSxDQUFDQyxhQUFhLEdBQUcsS0FBSztBQUVoQ0MsWUFBRyxDQUFDQyxNQUFNLEdBQUcsS0FBSzs7QUFFbEI7O0FBRUE7QUFDQSxJQUFJQyxNQUFNLEdBQUcsSUFBSUMsc0NBQVcsQ0FBQywwQkFBMEIsRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDOztBQUVwRTtBQUNBOztBQUVBO0FBQ0FOLFlBQUcsQ0FBQ08sU0FBUyxDQUFDQyxPQUFPLEdBQUdILE1BQU07O0FBSTlCOztBQUlBTCxZQUFHLENBQUNPLFNBQVMsQ0FBQ0UsU0FBUyxHQUFHQyxxQkFBWTtBQUN0Q1YsWUFBRyxDQUFDTyxTQUFTLENBQUNJLElBQUksR0FBR0MsZUFBRztBQUN4QkEsZUFBRyxDQUFDQyxlQUFlLEVBQUU7QUFXckIsSUFBTUMsR0FBRyxHQUFHLElBQUlkLFlBQUcsbUJBQ2ZHLFlBQUcsRUFDTDtBQUNGVyxHQUFHLENBQUNDLE1BQU0sRUFBRSIsImZpbGUiOiIwLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICd1bmktcGFnZXMnO1xyXG5pbXBvcnQgVnVlIGZyb20gJ3Z1ZSdcclxuaW1wb3J0IEFwcCBmcm9tICcuL0FwcCdcclxuaW1wb3J0IHtcclxuXHRBcGlUb0NsaWVudFxyXG59IGZyb20gXCIuL2dycGMvdHJhY2tfb2ZmaWNhbF9ncnBjX3dlYl9wYi5qc1wiXHJcblxyXG5WdWUuY29uZmlnLnByb2R1Y3Rpb25UaXAgPSBmYWxzZVxyXG5cclxuQXBwLm1wVHlwZSA9ICdhcHAnXHJcblxyXG4vLyDlu7rnq4tncnBj6L+e5o6l5pyN5YqhIFxyXG5cclxuLy8g5rWL6K+V54mIXHJcbmxldCBjbGllbnQgPSBuZXcgQXBpVG9DbGllbnQoXCJodHRwOi8vMTkyLjE2OC4wLjM6MTAwMDBcIiwgbnVsbCwgbnVsbClcclxuXHJcbi8vIOato+W8j+eJiFxyXG4vLyBsZXQgY2xpZW50ID0gbmV3IEFwaVRvQ2xpZW50KFwiaHR0cDovL290YXBpLmJlc3dlbGwuY29tOjEwMDAwXCIsIG51bGwsIG51bGwpXHJcblxyXG4vLyDmjILovb3kuLrlhajlsYDmlrnms5UgXHJcblZ1ZS5wcm90b3R5cGUuJGNsaWVudCA9IGNsaWVudFxyXG5cclxuXHJcblxyXG4vLyBpbXBvcnQgeyB1c3FsaXRlIH0gZnJvbSAnQC91bmlfbW9kdWxlcy9vbmVtdWUtVVNRTGl0ZS9qc19zZGsvdXNxbGl0ZS5qcydcclxuaW1wb3J0IFNxbGl0ZUhlbHBlciBmcm9tICcuL3V0aWxzL1NxbGl0ZUhlbHBlci5qcydcclxuaW1wb3J0IG5mYyBmcm9tICcuL3V0aWxzL291dS1uZmMuanMnXHJcblxyXG5WdWUucHJvdG90eXBlLiRkYkhlbHBlciA9IFNxbGl0ZUhlbHBlclxyXG5WdWUucHJvdG90eXBlLiRuZmMgPSBuZmNcclxubmZjLmxpc3Rlbk5GQ1N0YXR1cygpO1xyXG5cclxuXHJcblxyXG5cclxuXHJcblxyXG5cclxuXHJcblxyXG5cclxuY29uc3QgYXBwID0gbmV3IFZ1ZSh7XHJcblx0Li4uQXBwXHJcbn0pXHJcbmFwcC4kbW91bnQoKVxyXG5cclxuXHJcblxyXG5cclxuXHJcblxyXG5cclxuXHJcblxyXG5cclxuXHJcblxyXG5cclxuIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///0\n");
- /***/ }),
- /* 1 */
- /*!**********************************************************************!*\
- !*** ./node_modules/@babel/runtime/helpers/interopRequireDefault.js ***!
- \**********************************************************************/
- /*! no static exports found */
- /***/ (function(module, exports) {
- function _interopRequireDefault(obj) {
- return obj && obj.__esModule ? obj : {
- "default": obj
- };
- }
- module.exports = _interopRequireDefault, module.exports.__esModule = true, module.exports["default"] = module.exports;
- /***/ }),
- /* 2 */
- /*!***************************************************************!*\
- !*** ./node_modules/@babel/runtime/helpers/defineProperty.js ***!
- \***************************************************************/
- /*! no static exports found */
- /***/ (function(module, exports, __webpack_require__) {
- var toPropertyKey = __webpack_require__(/*! ./toPropertyKey.js */ 3);
- function _defineProperty(obj, key, value) {
- key = toPropertyKey(key);
- if (key in obj) {
- Object.defineProperty(obj, key, {
- value: value,
- enumerable: true,
- configurable: true,
- writable: true
- });
- } else {
- obj[key] = value;
- }
- return obj;
- }
- module.exports = _defineProperty, module.exports.__esModule = true, module.exports["default"] = module.exports;
- /***/ }),
- /* 3 */
- /*!**************************************************************!*\
- !*** ./node_modules/@babel/runtime/helpers/toPropertyKey.js ***!
- \**************************************************************/
- /*! no static exports found */
- /***/ (function(module, exports, __webpack_require__) {
- var _typeof = __webpack_require__(/*! ./typeof.js */ 4)["default"];
- var toPrimitive = __webpack_require__(/*! ./toPrimitive.js */ 5);
- function _toPropertyKey(arg) {
- var key = toPrimitive(arg, "string");
- return _typeof(key) === "symbol" ? key : String(key);
- }
- module.exports = _toPropertyKey, module.exports.__esModule = true, module.exports["default"] = module.exports;
- /***/ }),
- /* 4 */
- /*!*******************************************************!*\
- !*** ./node_modules/@babel/runtime/helpers/typeof.js ***!
- \*******************************************************/
- /*! no static exports found */
- /***/ (function(module, exports) {
- function _typeof(obj) {
- "@babel/helpers - typeof";
- return (module.exports = _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) {
- return typeof obj;
- } : function (obj) {
- return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj;
- }, module.exports.__esModule = true, module.exports["default"] = module.exports), _typeof(obj);
- }
- module.exports = _typeof, module.exports.__esModule = true, module.exports["default"] = module.exports;
- /***/ }),
- /* 5 */
- /*!************************************************************!*\
- !*** ./node_modules/@babel/runtime/helpers/toPrimitive.js ***!
- \************************************************************/
- /*! no static exports found */
- /***/ (function(module, exports, __webpack_require__) {
- var _typeof = __webpack_require__(/*! ./typeof.js */ 4)["default"];
- function _toPrimitive(input, hint) {
- if (_typeof(input) !== "object" || input === null) return input;
- var prim = input[Symbol.toPrimitive];
- if (prim !== undefined) {
- var res = prim.call(input, hint || "default");
- if (_typeof(res) !== "object") return res;
- throw new TypeError("@@toPrimitive must return a primitive value.");
- }
- return (hint === "string" ? String : Number)(input);
- }
- module.exports = _toPrimitive, module.exports.__esModule = true, module.exports["default"] = module.exports;
- /***/ }),
- /* 6 */
- /*!*****************************************************!*\
- !*** D:/Work2/Orienteering/TrackOffical/pages.json ***!
- \*****************************************************/
- /*! no static exports found */
- /***/ (function(module, exports, __webpack_require__) {
- if (typeof Promise !== 'undefined' && !Promise.prototype.finally) {
- Promise.prototype.finally = function (callback) {
- var promise = this.constructor;
- return this.then(function (value) {
- return promise.resolve(callback()).then(function () {
- return value;
- });
- }, function (reason) {
- return promise.resolve(callback()).then(function () {
- throw reason;
- });
- });
- };
- }
- if (typeof uni !== 'undefined' && uni && uni.requireGlobal) {
- var global = uni.requireGlobal();
- ArrayBuffer = global.ArrayBuffer;
- Int8Array = global.Int8Array;
- Uint8Array = global.Uint8Array;
- Uint8ClampedArray = global.Uint8ClampedArray;
- Int16Array = global.Int16Array;
- Uint16Array = global.Uint16Array;
- Int32Array = global.Int32Array;
- Uint32Array = global.Uint32Array;
- Float32Array = global.Float32Array;
- Float64Array = global.Float64Array;
- BigInt64Array = global.BigInt64Array;
- BigUint64Array = global.BigUint64Array;
- }
- if (uni.restoreGlobal) {
- uni.restoreGlobal(weex, plus, setTimeout, clearTimeout, setInterval, clearInterval);
- }
- __definePage('pages/AO/mapShow', function () {
- return Vue.extend(__webpack_require__(/*! pages/AO/mapShow.vue?mpType=page */ 7).default);
- });
- __definePage('pages/nfc/nfc', function () {
- return Vue.extend(__webpack_require__(/*! pages/nfc/nfc.vue?mpType=page */ 42).default);
- });
- __definePage('pages/verify/verify', function () {
- return Vue.extend(__webpack_require__(/*! pages/verify/verify.vue?mpType=page */ 52).default);
- });
- /***/ }),
- /* 7 */
- /*!***************************************************************************!*\
- !*** D:/Work2/Orienteering/TrackOffical/pages/AO/mapShow.vue?mpType=page ***!
- \***************************************************************************/
- /*! no static exports found */
- /***/ (function(module, __webpack_exports__, __webpack_require__) {
- "use strict";
- eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _mapShow_vue_vue_type_template_id_7c4266a1_scoped_true_filter_modules_eyJsZWFmbGV0Ijp7InR5cGUiOiJyZW5kZXJqcyIsImNvbnRlbnQiOiIiLCJzdGFydCI6MTE5NiwiYXR0cnMiOnsibW9kdWxlIjoibGVhZmxldCIsImxhbmciOiJqcyJ9LCJlbmQiOjMwNTF9fQ_3D_3D_mpType_page__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./mapShow.vue?vue&type=template&id=7c4266a1&scoped=true&filter-modules=eyJsZWFmbGV0Ijp7InR5cGUiOiJyZW5kZXJqcyIsImNvbnRlbnQiOiIiLCJzdGFydCI6MTE5NiwiYXR0cnMiOnsibW9kdWxlIjoibGVhZmxldCIsImxhbmciOiJqcyJ9LCJlbmQiOjMwNTF9fQ%3D%3D&mpType=page */ 8);\n/* harmony import */ var _mapShow_vue_vue_type_script_lang_js_mpType_page__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./mapShow.vue?vue&type=script&lang=js&mpType=page */ 32);\n/* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _mapShow_vue_vue_type_script_lang_js_mpType_page__WEBPACK_IMPORTED_MODULE_1__) if([\"default\"].indexOf(__WEBPACK_IMPORT_KEY__) < 0) (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _mapShow_vue_vue_type_script_lang_js_mpType_page__WEBPACK_IMPORTED_MODULE_1__[key]; }) }(__WEBPACK_IMPORT_KEY__));\n/* harmony import */ var _Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../../../../Program Files/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/runtime/componentNormalizer.js */ 15);\n\nvar renderjs\n\n\n\n\n/* normalize component */\n\nvar component = Object(_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(\n _mapShow_vue_vue_type_script_lang_js_mpType_page__WEBPACK_IMPORTED_MODULE_1__[\"default\"],\n _mapShow_vue_vue_type_template_id_7c4266a1_scoped_true_filter_modules_eyJsZWFmbGV0Ijp7InR5cGUiOiJyZW5kZXJqcyIsImNvbnRlbnQiOiIiLCJzdGFydCI6MTE5NiwiYXR0cnMiOnsibW9kdWxlIjoibGVhZmxldCIsImxhbmciOiJqcyJ9LCJlbmQiOjMwNTF9fQ_3D_3D_mpType_page__WEBPACK_IMPORTED_MODULE_0__[\"render\"],\n _mapShow_vue_vue_type_template_id_7c4266a1_scoped_true_filter_modules_eyJsZWFmbGV0Ijp7InR5cGUiOiJyZW5kZXJqcyIsImNvbnRlbnQiOiIiLCJzdGFydCI6MTE5NiwiYXR0cnMiOnsibW9kdWxlIjoibGVhZmxldCIsImxhbmciOiJqcyJ9LCJlbmQiOjMwNTF9fQ_3D_3D_mpType_page__WEBPACK_IMPORTED_MODULE_0__[\"staticRenderFns\"],\n false,\n null,\n \"7c4266a1\",\n null,\n false,\n _mapShow_vue_vue_type_template_id_7c4266a1_scoped_true_filter_modules_eyJsZWFmbGV0Ijp7InR5cGUiOiJyZW5kZXJqcyIsImNvbnRlbnQiOiIiLCJzdGFydCI6MTE5NiwiYXR0cnMiOnsibW9kdWxlIjoibGVhZmxldCIsImxhbmciOiJqcyJ9LCJlbmQiOjMwNTF9fQ_3D_3D_mpType_page__WEBPACK_IMPORTED_MODULE_0__[\"components\"],\n renderjs\n)\n\ncomponent.options.__file = \"pages/AO/mapShow.vue\"\n/* harmony default export */ __webpack_exports__[\"default\"] = (component.exports);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbbnVsbF0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBbVQ7QUFDblQ7QUFDc0U7QUFDTDs7O0FBR2pFO0FBQ29MO0FBQ3BMLGdCQUFnQiwyTEFBVTtBQUMxQixFQUFFLHdGQUFNO0FBQ1IsRUFBRSxpUkFBTTtBQUNSLEVBQUUsMFJBQWU7QUFDakI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEVBQUUscVJBQVU7QUFDWjtBQUNBOztBQUVBO0FBQ2UsZ0YiLCJmaWxlIjoiNy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHJlbmRlciwgc3RhdGljUmVuZGVyRm5zLCByZWN5Y2xhYmxlUmVuZGVyLCBjb21wb25lbnRzIH0gZnJvbSBcIi4vbWFwU2hvdy52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9N2M0MjY2YTEmc2NvcGVkPXRydWUmZmlsdGVyLW1vZHVsZXM9ZXlKc1pXRm1iR1YwSWpwN0luUjVjR1VpT2lKeVpXNWtaWEpxY3lJc0ltTnZiblJsYm5RaU9pSWlMQ0p6ZEdGeWRDSTZNVEU1Tml3aVlYUjBjbk1pT25zaWJXOWtkV3hsSWpvaWJHVmhabXhsZENJc0lteGhibWNpT2lKcWN5SjlMQ0psYm1RaU9qTXdOVEY5ZlElM0QlM0QmbXBUeXBlPXBhZ2VcIlxudmFyIHJlbmRlcmpzXG5pbXBvcnQgc2NyaXB0IGZyb20gXCIuL21hcFNob3cudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPWpzJm1wVHlwZT1wYWdlXCJcbmV4cG9ydCAqIGZyb20gXCIuL21hcFNob3cudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPWpzJm1wVHlwZT1wYWdlXCJcblxuXG4vKiBub3JtYWxpemUgY29tcG9uZW50ICovXG5pbXBvcnQgbm9ybWFsaXplciBmcm9tIFwiIS4uLy4uLy4uLy4uLy4uL1Byb2dyYW0gRmlsZXMvSEJ1aWxkZXJYL3BsdWdpbnMvdW5pYXBwLWNsaS9ub2RlX21vZHVsZXMvQGRjbG91ZGlvL3Z1ZS1jbGktcGx1Z2luLXVuaS9wYWNrYWdlcy92dWUtbG9hZGVyL2xpYi9ydW50aW1lL2NvbXBvbmVudE5vcm1hbGl6ZXIuanNcIlxudmFyIGNvbXBvbmVudCA9IG5vcm1hbGl6ZXIoXG4gIHNjcmlwdCxcbiAgcmVuZGVyLFxuICBzdGF0aWNSZW5kZXJGbnMsXG4gIGZhbHNlLFxuICBudWxsLFxuICBcIjdjNDI2NmExXCIsXG4gIG51bGwsXG4gIGZhbHNlLFxuICBjb21wb25lbnRzLFxuICByZW5kZXJqc1xuKVxuXG5jb21wb25lbnQub3B0aW9ucy5fX2ZpbGUgPSBcInBhZ2VzL0FPL21hcFNob3cudnVlXCJcbmV4cG9ydCBkZWZhdWx0IGNvbXBvbmVudC5leHBvcnRzIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///7\n");
- /***/ }),
- /* 8 */
- /*!*********************************************************************************************************************************************************************************************************************************************************************************************!*\
- !*** D:/Work2/Orienteering/TrackOffical/pages/AO/mapShow.vue?vue&type=template&id=7c4266a1&scoped=true&filter-modules=eyJsZWFmbGV0Ijp7InR5cGUiOiJyZW5kZXJqcyIsImNvbnRlbnQiOiIiLCJzdGFydCI6MTE5NiwiYXR0cnMiOnsibW9kdWxlIjoibGVhZmxldCIsImxhbmciOiJqcyJ9LCJlbmQiOjMwNTF9fQ%3D%3D&mpType=page ***!
- \*********************************************************************************************************************************************************************************************************************************************************************************************/
- /*! exports provided: render, staticRenderFns, recyclableRender, components */
- /***/ (function(module, __webpack_exports__, __webpack_require__) {
- "use strict";
- __webpack_require__.r(__webpack_exports__);
- /* harmony import */ var _Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_11_0_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_filter_modules_template_js_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_page_meta_js_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_mapShow_vue_vue_type_template_id_7c4266a1_scoped_true_filter_modules_eyJsZWFmbGV0Ijp7InR5cGUiOiJyZW5kZXJqcyIsImNvbnRlbnQiOiIiLCJzdGFydCI6MTE5NiwiYXR0cnMiOnsibW9kdWxlIjoibGVhZmxldCIsImxhbmciOiJqcyJ9LCJlbmQiOjMwNTF9fQ_3D_3D_mpType_page__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../../../Program Files/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../../../../Program Files/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--11-0!../../../../../Program Files/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/filter-modules-template.js!../../../../../Program Files/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/page-meta.js!../../../../../Program Files/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib??vue-loader-options!./mapShow.vue?vue&type=template&id=7c4266a1&scoped=true&filter-modules=eyJsZWFmbGV0Ijp7InR5cGUiOiJyZW5kZXJqcyIsImNvbnRlbnQiOiIiLCJzdGFydCI6MTE5NiwiYXR0cnMiOnsibW9kdWxlIjoibGVhZmxldCIsImxhbmciOiJqcyJ9LCJlbmQiOjMwNTF9fQ%3D%3D&mpType=page */ 9);
- /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "render", function() { return _Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_11_0_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_filter_modules_template_js_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_page_meta_js_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_mapShow_vue_vue_type_template_id_7c4266a1_scoped_true_filter_modules_eyJsZWFmbGV0Ijp7InR5cGUiOiJyZW5kZXJqcyIsImNvbnRlbnQiOiIiLCJzdGFydCI6MTE5NiwiYXR0cnMiOnsibW9kdWxlIjoibGVhZmxldCIsImxhbmciOiJqcyJ9LCJlbmQiOjMwNTF9fQ_3D_3D_mpType_page__WEBPACK_IMPORTED_MODULE_0__["render"]; });
- /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "staticRenderFns", function() { return _Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_11_0_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_filter_modules_template_js_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_page_meta_js_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_mapShow_vue_vue_type_template_id_7c4266a1_scoped_true_filter_modules_eyJsZWFmbGV0Ijp7InR5cGUiOiJyZW5kZXJqcyIsImNvbnRlbnQiOiIiLCJzdGFydCI6MTE5NiwiYXR0cnMiOnsibW9kdWxlIjoibGVhZmxldCIsImxhbmciOiJqcyJ9LCJlbmQiOjMwNTF9fQ_3D_3D_mpType_page__WEBPACK_IMPORTED_MODULE_0__["staticRenderFns"]; });
- /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "recyclableRender", function() { return _Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_11_0_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_filter_modules_template_js_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_page_meta_js_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_mapShow_vue_vue_type_template_id_7c4266a1_scoped_true_filter_modules_eyJsZWFmbGV0Ijp7InR5cGUiOiJyZW5kZXJqcyIsImNvbnRlbnQiOiIiLCJzdGFydCI6MTE5NiwiYXR0cnMiOnsibW9kdWxlIjoibGVhZmxldCIsImxhbmciOiJqcyJ9LCJlbmQiOjMwNTF9fQ_3D_3D_mpType_page__WEBPACK_IMPORTED_MODULE_0__["recyclableRender"]; });
- /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "components", function() { return _Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_11_0_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_filter_modules_template_js_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_page_meta_js_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_mapShow_vue_vue_type_template_id_7c4266a1_scoped_true_filter_modules_eyJsZWFmbGV0Ijp7InR5cGUiOiJyZW5kZXJqcyIsImNvbnRlbnQiOiIiLCJzdGFydCI6MTE5NiwiYXR0cnMiOnsibW9kdWxlIjoibGVhZmxldCIsImxhbmciOiJqcyJ9LCJlbmQiOjMwNTF9fQ_3D_3D_mpType_page__WEBPACK_IMPORTED_MODULE_0__["components"]; });
- /***/ }),
- /* 9 */
- /*!*************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
- !*** ./node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--11-0!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/filter-modules-template.js!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/page-meta.js!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib??vue-loader-options!D:/Work2/Orienteering/TrackOffical/pages/AO/mapShow.vue?vue&type=template&id=7c4266a1&scoped=true&filter-modules=eyJsZWFmbGV0Ijp7InR5cGUiOiJyZW5kZXJqcyIsImNvbnRlbnQiOiIiLCJzdGFydCI6MTE5NiwiYXR0cnMiOnsibW9kdWxlIjoibGVhZmxldCIsImxhbmciOiJqcyJ9LCJlbmQiOjMwNTF9fQ%3D%3D&mpType=page ***!
- \*************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/
- /*! exports provided: render, staticRenderFns, recyclableRender, components */
- /***/ (function(module, __webpack_exports__, __webpack_require__) {
- "use strict";
- __webpack_require__.r(__webpack_exports__);
- /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "render", function() { return render; });
- /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "staticRenderFns", function() { return staticRenderFns; });
- /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "recyclableRender", function() { return recyclableRender; });
- /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "components", function() { return components; });
- var components
- try {
- components = {
- uniList: __webpack_require__(/*! @/uni_modules/uni-list/components/uni-list/uni-list.vue */ 10)
- .default,
- uniListItem:
- __webpack_require__(/*! @/uni_modules/uni-list/components/uni-list-item/uni-list-item.vue */ 16)
- .default,
- }
- } catch (e) {
- if (
- e.message.indexOf("Cannot find module") !== -1 &&
- e.message.indexOf(".vue") !== -1
- ) {
- console.error(e.message)
- console.error("1. 排查组件名称拼写是否正确")
- console.error(
- "2. 排查组件是否符合 easycom 规范,文档:https://uniapp.dcloud.net.cn/collocation/pages?id=easycom"
- )
- console.error(
- "3. 若组件不符合 easycom 规范,需手动引入,并在 components 中注册该组件"
- )
- } else {
- throw e
- }
- }
- var render = function () {
- var _vm = this
- var _h = _vm.$createElement
- var _c = _vm._self._c || _h
- return _c(
- "view",
- {
- staticClass: _vm._$s(0, "sc", "page"),
- style: _vm._$s(0, "s", {
- height: _vm.pageHeight + "px",
- flexDirection: _vm.flexDirection,
- }),
- attrs: { _i: 0 },
- },
- [
- _c("view", {
- staticClass: _vm._$s(1, "sc", "map"),
- style: _vm._$s(1, "s", { height: _vm.pageHeight + "px" }),
- attrs: { id: "map", _i: 1 },
- }),
- _c(
- "view",
- {
- directives: [
- {
- name: "show",
- rawName: "v-show",
- value: _vm._$s(2, "v-show", _vm.popupShow),
- expression: "_$s(2,'v-show',popupShow)",
- },
- ],
- staticClass: _vm._$s(2, "sc", "popup"),
- style: _vm._$s(2, "s", { height: _vm.popupHeight + "px" }),
- attrs: { _i: 2 },
- },
- _vm._l(
- _vm._$s(3, "f", { forItems: _vm.players }),
- function (item, index, $20, $30) {
- return _c(
- "uni-list",
- {
- key: _vm._$s(3, "f", { forIndex: $20, key: index }),
- attrs: { border: true, _i: "3-" + $30 },
- },
- [
- _c("uni-list-item", {
- attrs: {
- title:
- item.name +
- " 打点数: " +
- item.effectivenum +
- " / " +
- item.totalcontrolnum +
- " 距离: " +
- item.distance +
- "米 配速: " +
- item.pace,
- note:
- "平均心率: " +
- item.avghr +
- " 最大心率: " +
- item.maxhr +
- " CAL: " +
- item.calorie +
- " Ck: " +
- item.ck +
- " Ei: " +
- item.ei,
- _i: "4-" + $30,
- },
- }),
- ],
- 1
- )
- }
- ),
- 1
- ),
- ]
- )
- }
- var recyclableRender = false
- var staticRenderFns = []
- render._withStripped = true
- /***/ }),
- /* 10 */
- /*!************************************************************************************************!*\
- !*** D:/Work2/Orienteering/TrackOffical/uni_modules/uni-list/components/uni-list/uni-list.vue ***!
- \************************************************************************************************/
- /*! no static exports found */
- /***/ (function(module, __webpack_exports__, __webpack_require__) {
- "use strict";
- eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _uni_list_vue_vue_type_template_id_5009d455___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./uni-list.vue?vue&type=template&id=5009d455& */ 11);\n/* harmony import */ var _uni_list_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./uni-list.vue?vue&type=script&lang=js& */ 13);\n/* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _uni_list_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__) if([\"default\"].indexOf(__WEBPACK_IMPORT_KEY__) < 0) (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _uni_list_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__[key]; }) }(__WEBPACK_IMPORT_KEY__));\n/* harmony import */ var _Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../../../../../../Program Files/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/runtime/componentNormalizer.js */ 15);\n\nvar renderjs\n\n\n\n\n/* normalize component */\n\nvar component = Object(_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(\n _uni_list_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__[\"default\"],\n _uni_list_vue_vue_type_template_id_5009d455___WEBPACK_IMPORTED_MODULE_0__[\"render\"],\n _uni_list_vue_vue_type_template_id_5009d455___WEBPACK_IMPORTED_MODULE_0__[\"staticRenderFns\"],\n false,\n null,\n null,\n null,\n false,\n _uni_list_vue_vue_type_template_id_5009d455___WEBPACK_IMPORTED_MODULE_0__[\"components\"],\n renderjs\n)\n\ncomponent.options.__file = \"uni_modules/uni-list/components/uni-list/uni-list.vue\"\n/* harmony default export */ __webpack_exports__[\"default\"] = (component.exports);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbbnVsbF0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBcUg7QUFDckg7QUFDNEQ7QUFDTDs7O0FBR3ZEO0FBQzBMO0FBQzFMLGdCQUFnQiwyTEFBVTtBQUMxQixFQUFFLDhFQUFNO0FBQ1IsRUFBRSxtRkFBTTtBQUNSLEVBQUUsNEZBQWU7QUFDakI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEVBQUUsdUZBQVU7QUFDWjtBQUNBOztBQUVBO0FBQ2UsZ0YiLCJmaWxlIjoiMTAuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyByZW5kZXIsIHN0YXRpY1JlbmRlckZucywgcmVjeWNsYWJsZVJlbmRlciwgY29tcG9uZW50cyB9IGZyb20gXCIuL3VuaS1saXN0LnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD01MDA5ZDQ1NSZcIlxudmFyIHJlbmRlcmpzXG5pbXBvcnQgc2NyaXB0IGZyb20gXCIuL3VuaS1saXN0LnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz1qcyZcIlxuZXhwb3J0ICogZnJvbSBcIi4vdW5pLWxpc3QudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPWpzJlwiXG5cblxuLyogbm9ybWFsaXplIGNvbXBvbmVudCAqL1xuaW1wb3J0IG5vcm1hbGl6ZXIgZnJvbSBcIiEuLi8uLi8uLi8uLi8uLi8uLi8uLi9Qcm9ncmFtIEZpbGVzL0hCdWlsZGVyWC9wbHVnaW5zL3VuaWFwcC1jbGkvbm9kZV9tb2R1bGVzL0BkY2xvdWRpby92dWUtY2xpLXBsdWdpbi11bmkvcGFja2FnZXMvdnVlLWxvYWRlci9saWIvcnVudGltZS9jb21wb25lbnROb3JtYWxpemVyLmpzXCJcbnZhciBjb21wb25lbnQgPSBub3JtYWxpemVyKFxuICBzY3JpcHQsXG4gIHJlbmRlcixcbiAgc3RhdGljUmVuZGVyRm5zLFxuICBmYWxzZSxcbiAgbnVsbCxcbiAgbnVsbCxcbiAgbnVsbCxcbiAgZmFsc2UsXG4gIGNvbXBvbmVudHMsXG4gIHJlbmRlcmpzXG4pXG5cbmNvbXBvbmVudC5vcHRpb25zLl9fZmlsZSA9IFwidW5pX21vZHVsZXMvdW5pLWxpc3QvY29tcG9uZW50cy91bmktbGlzdC91bmktbGlzdC52dWVcIlxuZXhwb3J0IGRlZmF1bHQgY29tcG9uZW50LmV4cG9ydHMiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///10\n");
- /***/ }),
- /* 11 */
- /*!*******************************************************************************************************************************!*\
- !*** D:/Work2/Orienteering/TrackOffical/uni_modules/uni-list/components/uni-list/uni-list.vue?vue&type=template&id=5009d455& ***!
- \*******************************************************************************************************************************/
- /*! exports provided: render, staticRenderFns, recyclableRender, components */
- /***/ (function(module, __webpack_exports__, __webpack_require__) {
- "use strict";
- __webpack_require__.r(__webpack_exports__);
- /* harmony import */ var _Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_11_0_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_filter_modules_template_js_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_page_meta_js_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_uni_list_vue_vue_type_template_id_5009d455___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../../../../../Program Files/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../../../../../../Program Files/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--11-0!../../../../../../../Program Files/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/filter-modules-template.js!../../../../../../../Program Files/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/page-meta.js!../../../../../../../Program Files/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib??vue-loader-options!./uni-list.vue?vue&type=template&id=5009d455& */ 12);
- /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "render", function() { return _Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_11_0_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_filter_modules_template_js_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_page_meta_js_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_uni_list_vue_vue_type_template_id_5009d455___WEBPACK_IMPORTED_MODULE_0__["render"]; });
- /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "staticRenderFns", function() { return _Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_11_0_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_filter_modules_template_js_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_page_meta_js_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_uni_list_vue_vue_type_template_id_5009d455___WEBPACK_IMPORTED_MODULE_0__["staticRenderFns"]; });
- /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "recyclableRender", function() { return _Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_11_0_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_filter_modules_template_js_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_page_meta_js_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_uni_list_vue_vue_type_template_id_5009d455___WEBPACK_IMPORTED_MODULE_0__["recyclableRender"]; });
- /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "components", function() { return _Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_11_0_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_filter_modules_template_js_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_page_meta_js_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_uni_list_vue_vue_type_template_id_5009d455___WEBPACK_IMPORTED_MODULE_0__["components"]; });
- /***/ }),
- /* 12 */
- /*!***********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
- !*** ./node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--11-0!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/filter-modules-template.js!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/page-meta.js!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib??vue-loader-options!D:/Work2/Orienteering/TrackOffical/uni_modules/uni-list/components/uni-list/uni-list.vue?vue&type=template&id=5009d455& ***!
- \***********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/
- /*! exports provided: render, staticRenderFns, recyclableRender, components */
- /***/ (function(module, __webpack_exports__, __webpack_require__) {
- "use strict";
- __webpack_require__.r(__webpack_exports__);
- /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "render", function() { return render; });
- /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "staticRenderFns", function() { return staticRenderFns; });
- /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "recyclableRender", function() { return recyclableRender; });
- /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "components", function() { return components; });
- var components
- var render = function () {
- var _vm = this
- var _h = _vm.$createElement
- var _c = _vm._self._c || _h
- return _c(
- "view",
- {
- staticClass: _vm._$s(0, "sc", "uni-list uni-border-top-bottom"),
- attrs: { _i: 0 },
- },
- [
- _vm._$s(1, "i", _vm.border)
- ? _c("view", {
- staticClass: _vm._$s(1, "sc", "uni-list--border-top"),
- attrs: { _i: 1 },
- })
- : _vm._e(),
- _vm._t("default", null, { _i: 2 }),
- _vm._$s(3, "i", _vm.border)
- ? _c("view", {
- staticClass: _vm._$s(3, "sc", "uni-list--border-bottom"),
- attrs: { _i: 3 },
- })
- : _vm._e(),
- ],
- 2
- )
- }
- var recyclableRender = false
- var staticRenderFns = []
- render._withStripped = true
- /***/ }),
- /* 13 */
- /*!*************************************************************************************************************************!*\
- !*** D:/Work2/Orienteering/TrackOffical/uni_modules/uni-list/components/uni-list/uni-list.vue?vue&type=script&lang=js& ***!
- \*************************************************************************************************************************/
- /*! no static exports found */
- /***/ (function(module, __webpack_exports__, __webpack_require__) {
- "use strict";
- eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_7_1_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_using_components_js_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_uni_list_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../../../../../Program Files/HBuilderX/plugins/uniapp-cli/node_modules/babel-loader/lib!../../../../../../../Program Files/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--7-1!../../../../../../../Program Files/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/using-components.js!../../../../../../../Program Files/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib??vue-loader-options!./uni-list.vue?vue&type=script&lang=js& */ 14);\n/* harmony import */ var _Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_7_1_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_using_components_js_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_uni_list_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_7_1_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_using_components_js_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_uni_list_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__);\n/* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_7_1_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_using_components_js_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_uni_list_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__) if([\"default\"].indexOf(__WEBPACK_IMPORT_KEY__) < 0) (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_7_1_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_using_components_js_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_uni_list_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__[key]; }) }(__WEBPACK_IMPORT_KEY__));\n /* harmony default export */ __webpack_exports__[\"default\"] = (_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_7_1_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_using_components_js_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_uni_list_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0___default.a); //# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbbnVsbF0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQWdvQixDQUFnQixzbkJBQUcsRUFBQyIsImZpbGUiOiIxMy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBtb2QgZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vLi4vLi4vUHJvZ3JhbSBGaWxlcy9IQnVpbGRlclgvcGx1Z2lucy91bmlhcHAtY2xpL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzIS4uLy4uLy4uLy4uLy4uLy4uLy4uL1Byb2dyYW0gRmlsZXMvSEJ1aWxkZXJYL3BsdWdpbnMvdW5pYXBwLWNsaS9ub2RlX21vZHVsZXMvQGRjbG91ZGlvL3Z1ZS1jbGktcGx1Z2luLXVuaS9wYWNrYWdlcy93ZWJwYWNrLXByZXByb2Nlc3MtbG9hZGVyL2luZGV4LmpzPz9yZWYtLTctMSEuLi8uLi8uLi8uLi8uLi8uLi8uLi9Qcm9ncmFtIEZpbGVzL0hCdWlsZGVyWC9wbHVnaW5zL3VuaWFwcC1jbGkvbm9kZV9tb2R1bGVzL0BkY2xvdWRpby92dWUtY2xpLXBsdWdpbi11bmkvcGFja2FnZXMvd2VicGFjay11bmktYXBwLWxvYWRlci91c2luZy1jb21wb25lbnRzLmpzIS4uLy4uLy4uLy4uLy4uLy4uLy4uL1Byb2dyYW0gRmlsZXMvSEJ1aWxkZXJYL3BsdWdpbnMvdW5pYXBwLWNsaS9ub2RlX21vZHVsZXMvQGRjbG91ZGlvL3Z1ZS1jbGktcGx1Z2luLXVuaS9wYWNrYWdlcy92dWUtbG9hZGVyL2xpYi9pbmRleC5qcz8/dnVlLWxvYWRlci1vcHRpb25zIS4vdW5pLWxpc3QudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPWpzJlwiOyBleHBvcnQgZGVmYXVsdCBtb2Q7IGV4cG9ydCAqIGZyb20gXCItIS4uLy4uLy4uLy4uLy4uLy4uLy4uL1Byb2dyYW0gRmlsZXMvSEJ1aWxkZXJYL3BsdWdpbnMvdW5pYXBwLWNsaS9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcyEuLi8uLi8uLi8uLi8uLi8uLi8uLi9Qcm9ncmFtIEZpbGVzL0hCdWlsZGVyWC9wbHVnaW5zL3VuaWFwcC1jbGkvbm9kZV9tb2R1bGVzL0BkY2xvdWRpby92dWUtY2xpLXBsdWdpbi11bmkvcGFja2FnZXMvd2VicGFjay1wcmVwcm9jZXNzLWxvYWRlci9pbmRleC5qcz8/cmVmLS03LTEhLi4vLi4vLi4vLi4vLi4vLi4vLi4vUHJvZ3JhbSBGaWxlcy9IQnVpbGRlclgvcGx1Z2lucy91bmlhcHAtY2xpL25vZGVfbW9kdWxlcy9AZGNsb3VkaW8vdnVlLWNsaS1wbHVnaW4tdW5pL3BhY2thZ2VzL3dlYnBhY2stdW5pLWFwcC1sb2FkZXIvdXNpbmctY29tcG9uZW50cy5qcyEuLi8uLi8uLi8uLi8uLi8uLi8uLi9Qcm9ncmFtIEZpbGVzL0hCdWlsZGVyWC9wbHVnaW5zL3VuaWFwcC1jbGkvbm9kZV9tb2R1bGVzL0BkY2xvdWRpby92dWUtY2xpLXBsdWdpbi11bmkvcGFja2FnZXMvdnVlLWxvYWRlci9saWIvaW5kZXguanM/P3Z1ZS1sb2FkZXItb3B0aW9ucyEuL3VuaS1saXN0LnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz1qcyZcIiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///13\n");
- /***/ }),
- /* 14 */
- /*!******************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
- !*** ./node_modules/babel-loader/lib!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--7-1!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/using-components.js!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib??vue-loader-options!D:/Work2/Orienteering/TrackOffical/uni_modules/uni-list/components/uni-list/uni-list.vue?vue&type=script&lang=js& ***!
- \******************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/
- /*! no static exports found */
- /***/ (function(module, exports, __webpack_require__) {
- "use strict";
- eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n/**\r\n * List 列表\r\n * @description 列表组件\r\n * @tutorial https://ext.dcloud.net.cn/plugin?id=24\r\n * @property {String} \tborder = [true|false] \t\t标题\r\n */\nvar _default = {\n name: 'uniList',\n 'mp-weixin': {\n options: {\n multipleSlots: false\n }\n },\n props: {\n enableBackToTop: {\n type: [Boolean, String],\n default: false\n },\n scrollY: {\n type: [Boolean, String],\n default: false\n },\n border: {\n type: Boolean,\n default: true\n }\n },\n // provide() {\n // \treturn {\n // \t\tlist: this\n // \t};\n // },\n created: function created() {\n this.firstChildAppend = false;\n },\n methods: {\n loadMore: function loadMore(e) {\n this.$emit('scrolltolower');\n }\n }\n};\nexports.default = _default;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInVuaS1hcHA6Ly8vdW5pX21vZHVsZXMvdW5pLWxpc3QvY29tcG9uZW50cy91bmktbGlzdC91bmktbGlzdC52dWUiXSwibmFtZXMiOlsibmFtZSIsIm9wdGlvbnMiLCJtdWx0aXBsZVNsb3RzIiwicHJvcHMiLCJlbmFibGVCYWNrVG9Ub3AiLCJ0eXBlIiwiZGVmYXVsdCIsInNjcm9sbFkiLCJib3JkZXIiLCJjcmVhdGVkIiwibWV0aG9kcyIsImxvYWRNb3JlIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBY0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBTEEsZUFNQTtFQUNBQTtFQUNBO0lBQ0FDO01BQ0FDO0lBQ0E7RUFDQTtFQUNBQztJQUNBQztNQUNBQztNQUNBQztJQUNBO0lBQ0FDO01BQ0FGO01BQ0FDO0lBQ0E7SUFDQUU7TUFDQUg7TUFDQUM7SUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBRztJQUNBO0VBQ0E7RUFDQUM7SUFDQUM7TUFDQTtJQUNBO0VBQ0E7QUFDQTtBQUFBIiwiZmlsZSI6IjE0LmpzIiwic291cmNlc0NvbnRlbnQiOlsiPHRlbXBsYXRlPlxyXG5cdDwhLS0gI2lmbmRlZiBBUFAtTlZVRSAtLT5cclxuXHQ8dmlldyBjbGFzcz1cInVuaS1saXN0IHVuaS1ib3JkZXItdG9wLWJvdHRvbVwiPlxyXG5cdFx0PHZpZXcgdi1pZj1cImJvcmRlclwiIGNsYXNzPVwidW5pLWxpc3QtLWJvcmRlci10b3BcIj48L3ZpZXc+XHJcblx0XHQ8c2xvdCAvPlxyXG5cdFx0PHZpZXcgdi1pZj1cImJvcmRlclwiIGNsYXNzPVwidW5pLWxpc3QtLWJvcmRlci1ib3R0b21cIj48L3ZpZXc+XHJcblx0PC92aWV3PlxyXG5cdDwhLS0gI2VuZGlmIC0tPlxyXG5cdDwhLS0gI2lmZGVmIEFQUC1OVlVFIC0tPlxyXG5cdDxsaXN0IGNsYXNzPVwidW5pLWxpc3RcIiA6Y2xhc3M9XCJ7ICd1bmktbGlzdC0tYm9yZGVyJzogYm9yZGVyIH1cIiA6ZW5hYmxlQmFja1RvVG9wPVwiZW5hYmxlQmFja1RvVG9wXCIgbG9hZG1vcmVvZmZzZXQ9XCIxNVwiPjxzbG90IC8+PC9saXN0PlxyXG5cdDwhLS0gI2VuZGlmIC0tPlxyXG48L3RlbXBsYXRlPlxyXG5cclxuPHNjcmlwdD5cclxuLyoqXHJcbiAqIExpc3Qg5YiX6KGoXHJcbiAqIEBkZXNjcmlwdGlvbiDliJfooajnu4Tku7ZcclxuICogQHR1dG9yaWFsIGh0dHBzOi8vZXh0LmRjbG91ZC5uZXQuY24vcGx1Z2luP2lkPTI0XHJcbiAqIEBwcm9wZXJ0eSB7U3RyaW5nfSBcdGJvcmRlciA9IFt0cnVlfGZhbHNlXSBcdFx05qCH6aKYXHJcbiAqL1xyXG5leHBvcnQgZGVmYXVsdCB7XHJcblx0bmFtZTogJ3VuaUxpc3QnLFxyXG5cdCdtcC13ZWl4aW4nOiB7XHJcblx0XHRvcHRpb25zOiB7XHJcblx0XHRcdG11bHRpcGxlU2xvdHM6IGZhbHNlXHJcblx0XHR9XHJcblx0fSxcclxuXHRwcm9wczoge1xyXG5cdFx0ZW5hYmxlQmFja1RvVG9wOiB7XHJcblx0XHRcdHR5cGU6IFtCb29sZWFuLCBTdHJpbmddLFxyXG5cdFx0XHRkZWZhdWx0OiBmYWxzZVxyXG5cdFx0fSxcclxuXHRcdHNjcm9sbFk6IHtcclxuXHRcdFx0dHlwZTogW0Jvb2xlYW4sIFN0cmluZ10sXHJcblx0XHRcdGRlZmF1bHQ6IGZhbHNlXHJcblx0XHR9LFxyXG5cdFx0Ym9yZGVyOiB7XHJcblx0XHRcdHR5cGU6IEJvb2xlYW4sXHJcblx0XHRcdGRlZmF1bHQ6IHRydWVcclxuXHRcdH1cclxuXHR9LFxyXG5cdC8vIHByb3ZpZGUoKSB7XHJcblx0Ly8gXHRyZXR1cm4ge1xyXG5cdC8vIFx0XHRsaXN0OiB0aGlzXHJcblx0Ly8gXHR9O1xyXG5cdC8vIH0sXHJcblx0Y3JlYXRlZCgpIHtcclxuXHRcdHRoaXMuZmlyc3RDaGlsZEFwcGVuZCA9IGZhbHNlO1xyXG5cdH0sXHJcblx0bWV0aG9kczoge1xyXG5cdFx0bG9hZE1vcmUoZSkge1xyXG5cdFx0XHR0aGlzLiRlbWl0KCdzY3JvbGx0b2xvd2VyJyk7XHJcblx0XHR9XHJcblx0fVxyXG59O1xyXG48L3NjcmlwdD5cclxuPHN0eWxlIGxhbmc9XCJzY3NzXCIgPlxyXG4kdW5pLWJnLWNvbG9yOiNmZmZmZmY7XHJcbiR1bmktYm9yZGVyLWNvbG9yOiNlNWU1ZTU7XHJcbi51bmktbGlzdCB7XHJcblx0LyogI2lmbmRlZiBBUFAtTlZVRSAqL1xyXG5cdGRpc3BsYXk6IGZsZXg7XHJcblx0LyogI2VuZGlmICovXHJcblx0YmFja2dyb3VuZC1jb2xvcjogJHVuaS1iZy1jb2xvcjtcclxuXHRwb3NpdGlvbjogcmVsYXRpdmU7XHJcblx0ZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcclxufVxyXG5cclxuLnVuaS1saXN0LS1ib3JkZXIge1xyXG5cdHBvc2l0aW9uOiByZWxhdGl2ZTtcclxuXHQvKiAjaWZkZWYgQVBQLU5WVUUgKi9cclxuXHRib3JkZXItdG9wLWNvbG9yOiAkdW5pLWJvcmRlci1jb2xvcjtcclxuXHRib3JkZXItdG9wLXN0eWxlOiBzb2xpZDtcclxuXHRib3JkZXItdG9wLXdpZHRoOiAwLjVweDtcclxuXHRib3JkZXItYm90dG9tLWNvbG9yOiAkdW5pLWJvcmRlci1jb2xvcjtcclxuXHRib3JkZXItYm90dG9tLXN0eWxlOiBzb2xpZDtcclxuXHRib3JkZXItYm90dG9tLXdpZHRoOiAwLjVweDtcclxuXHQvKiAjZW5kaWYgKi9cclxuXHR6LWluZGV4OiAtMTtcclxufVxyXG5cclxuLyogI2lmbmRlZiBBUFAtTlZVRSAqL1xyXG5cclxuLnVuaS1saXN0LS1ib3JkZXItdG9wIHtcclxuXHRwb3NpdGlvbjogYWJzb2x1dGU7XHJcblx0dG9wOiAwO1xyXG5cdHJpZ2h0OiAwO1xyXG5cdGxlZnQ6IDA7XHJcblx0aGVpZ2h0OiAxcHg7XHJcblx0LXdlYmtpdC10cmFuc2Zvcm06IHNjYWxlWSgwLjUpO1xyXG5cdHRyYW5zZm9ybTogc2NhbGVZKDAuNSk7XHJcblx0YmFja2dyb3VuZC1jb2xvcjogJHVuaS1ib3JkZXItY29sb3I7XHJcblx0ei1pbmRleDogMTtcclxufVxyXG5cclxuLnVuaS1saXN0LS1ib3JkZXItYm90dG9tIHtcclxuXHRwb3NpdGlvbjogYWJzb2x1dGU7XHJcblx0Ym90dG9tOiAwO1xyXG5cdHJpZ2h0OiAwO1xyXG5cdGxlZnQ6IDA7XHJcblx0aGVpZ2h0OiAxcHg7XHJcblx0LXdlYmtpdC10cmFuc2Zvcm06IHNjYWxlWSgwLjUpO1xyXG5cdHRyYW5zZm9ybTogc2NhbGVZKDAuNSk7XHJcblx0YmFja2dyb3VuZC1jb2xvcjogJHVuaS1ib3JkZXItY29sb3I7XHJcbn1cclxuXHJcbi8qICNlbmRpZiAqL1xyXG48L3N0eWxlPlxyXG4iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///14\n");
- /***/ }),
- /* 15 */
- /*!**********************************************************************************************************!*\
- !*** ./node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/runtime/componentNormalizer.js ***!
- \**********************************************************************************************************/
- /*! exports provided: default */
- /***/ (function(module, __webpack_exports__, __webpack_require__) {
- "use strict";
- __webpack_require__.r(__webpack_exports__);
- /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return normalizeComponent; });
- /* globals __VUE_SSR_CONTEXT__ */
- // IMPORTANT: Do NOT use ES2015 features in this file (except for modules).
- // This module is a runtime utility for cleaner component module output and will
- // be included in the final webpack user bundle.
- function normalizeComponent (
- scriptExports,
- render,
- staticRenderFns,
- functionalTemplate,
- injectStyles,
- scopeId,
- moduleIdentifier, /* server only */
- shadowMode, /* vue-cli only */
- components, // fixed by xxxxxx auto components
- renderjs // fixed by xxxxxx renderjs
- ) {
- // Vue.extend constructor export interop
- var options = typeof scriptExports === 'function'
- ? scriptExports.options
- : scriptExports
- // fixed by xxxxxx auto components
- if (components) {
- if (!options.components) {
- options.components = {}
- }
- var hasOwn = Object.prototype.hasOwnProperty
- for (var name in components) {
- if (hasOwn.call(components, name) && !hasOwn.call(options.components, name)) {
- options.components[name] = components[name]
- }
- }
- }
- // fixed by xxxxxx renderjs
- if (renderjs) {
- if(typeof renderjs.beforeCreate === 'function'){
- renderjs.beforeCreate = [renderjs.beforeCreate]
- }
- (renderjs.beforeCreate || (renderjs.beforeCreate = [])).unshift(function() {
- this[renderjs.__module] = this
- });
- (options.mixins || (options.mixins = [])).push(renderjs)
- }
- // render functions
- if (render) {
- options.render = render
- options.staticRenderFns = staticRenderFns
- options._compiled = true
- }
- // functional template
- if (functionalTemplate) {
- options.functional = true
- }
- // scopedId
- if (scopeId) {
- options._scopeId = 'data-v-' + scopeId
- }
- var hook
- if (moduleIdentifier) { // server build
- hook = function (context) {
- // 2.3 injection
- context =
- context || // cached call
- (this.$vnode && this.$vnode.ssrContext) || // stateful
- (this.parent && this.parent.$vnode && this.parent.$vnode.ssrContext) // functional
- // 2.2 with runInNewContext: true
- if (!context && typeof __VUE_SSR_CONTEXT__ !== 'undefined') {
- context = __VUE_SSR_CONTEXT__
- }
- // inject component styles
- if (injectStyles) {
- injectStyles.call(this, context)
- }
- // register component module identifier for async chunk inferrence
- if (context && context._registeredComponents) {
- context._registeredComponents.add(moduleIdentifier)
- }
- }
- // used by ssr in case component is cached and beforeCreate
- // never gets called
- options._ssrRegister = hook
- } else if (injectStyles) {
- hook = shadowMode
- ? function () { injectStyles.call(this, this.$root.$options.shadowRoot) }
- : injectStyles
- }
- if (hook) {
- if (options.functional) {
- // for template-only hot-reload because in that case the render fn doesn't
- // go through the normalizer
- options._injectStyles = hook
- // register for functioal component in vue file
- var originalRender = options.render
- options.render = function renderWithStyleInjection (h, context) {
- hook.call(context)
- return originalRender(h, context)
- }
- } else {
- // inject component registration as beforeCreate hook
- var existing = options.beforeCreate
- options.beforeCreate = existing
- ? [].concat(existing, hook)
- : [hook]
- }
- }
- return {
- exports: scriptExports,
- options: options
- }
- }
- /***/ }),
- /* 16 */
- /*!**********************************************************************************************************!*\
- !*** D:/Work2/Orienteering/TrackOffical/uni_modules/uni-list/components/uni-list-item/uni-list-item.vue ***!
- \**********************************************************************************************************/
- /*! no static exports found */
- /***/ (function(module, __webpack_exports__, __webpack_require__) {
- "use strict";
- eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _uni_list_item_vue_vue_type_template_id_296a3d7e___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./uni-list-item.vue?vue&type=template&id=296a3d7e& */ 17);\n/* harmony import */ var _uni_list_item_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./uni-list-item.vue?vue&type=script&lang=js& */ 30);\n/* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _uni_list_item_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__) if([\"default\"].indexOf(__WEBPACK_IMPORT_KEY__) < 0) (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _uni_list_item_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__[key]; }) }(__WEBPACK_IMPORT_KEY__));\n/* harmony import */ var _Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../../../../../../Program Files/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/runtime/componentNormalizer.js */ 15);\n\nvar renderjs\n\n\n\n\n/* normalize component */\n\nvar component = Object(_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(\n _uni_list_item_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__[\"default\"],\n _uni_list_item_vue_vue_type_template_id_296a3d7e___WEBPACK_IMPORTED_MODULE_0__[\"render\"],\n _uni_list_item_vue_vue_type_template_id_296a3d7e___WEBPACK_IMPORTED_MODULE_0__[\"staticRenderFns\"],\n false,\n null,\n null,\n null,\n false,\n _uni_list_item_vue_vue_type_template_id_296a3d7e___WEBPACK_IMPORTED_MODULE_0__[\"components\"],\n renderjs\n)\n\ncomponent.options.__file = \"uni_modules/uni-list/components/uni-list-item/uni-list-item.vue\"\n/* harmony default export */ __webpack_exports__[\"default\"] = (component.exports);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbbnVsbF0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBMEg7QUFDMUg7QUFDaUU7QUFDTDs7O0FBRzVEO0FBQzBMO0FBQzFMLGdCQUFnQiwyTEFBVTtBQUMxQixFQUFFLG1GQUFNO0FBQ1IsRUFBRSx3RkFBTTtBQUNSLEVBQUUsaUdBQWU7QUFDakI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEVBQUUsNEZBQVU7QUFDWjtBQUNBOztBQUVBO0FBQ2UsZ0YiLCJmaWxlIjoiMTYuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyByZW5kZXIsIHN0YXRpY1JlbmRlckZucywgcmVjeWNsYWJsZVJlbmRlciwgY29tcG9uZW50cyB9IGZyb20gXCIuL3VuaS1saXN0LWl0ZW0udnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTI5NmEzZDdlJlwiXG52YXIgcmVuZGVyanNcbmltcG9ydCBzY3JpcHQgZnJvbSBcIi4vdW5pLWxpc3QtaXRlbS52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9anMmXCJcbmV4cG9ydCAqIGZyb20gXCIuL3VuaS1saXN0LWl0ZW0udnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPWpzJlwiXG5cblxuLyogbm9ybWFsaXplIGNvbXBvbmVudCAqL1xuaW1wb3J0IG5vcm1hbGl6ZXIgZnJvbSBcIiEuLi8uLi8uLi8uLi8uLi8uLi8uLi9Qcm9ncmFtIEZpbGVzL0hCdWlsZGVyWC9wbHVnaW5zL3VuaWFwcC1jbGkvbm9kZV9tb2R1bGVzL0BkY2xvdWRpby92dWUtY2xpLXBsdWdpbi11bmkvcGFja2FnZXMvdnVlLWxvYWRlci9saWIvcnVudGltZS9jb21wb25lbnROb3JtYWxpemVyLmpzXCJcbnZhciBjb21wb25lbnQgPSBub3JtYWxpemVyKFxuICBzY3JpcHQsXG4gIHJlbmRlcixcbiAgc3RhdGljUmVuZGVyRm5zLFxuICBmYWxzZSxcbiAgbnVsbCxcbiAgbnVsbCxcbiAgbnVsbCxcbiAgZmFsc2UsXG4gIGNvbXBvbmVudHMsXG4gIHJlbmRlcmpzXG4pXG5cbmNvbXBvbmVudC5vcHRpb25zLl9fZmlsZSA9IFwidW5pX21vZHVsZXMvdW5pLWxpc3QvY29tcG9uZW50cy91bmktbGlzdC1pdGVtL3VuaS1saXN0LWl0ZW0udnVlXCJcbmV4cG9ydCBkZWZhdWx0IGNvbXBvbmVudC5leHBvcnRzIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///16\n");
- /***/ }),
- /* 17 */
- /*!*****************************************************************************************************************************************!*\
- !*** D:/Work2/Orienteering/TrackOffical/uni_modules/uni-list/components/uni-list-item/uni-list-item.vue?vue&type=template&id=296a3d7e& ***!
- \*****************************************************************************************************************************************/
- /*! exports provided: render, staticRenderFns, recyclableRender, components */
- /***/ (function(module, __webpack_exports__, __webpack_require__) {
- "use strict";
- __webpack_require__.r(__webpack_exports__);
- /* harmony import */ var _Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_11_0_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_filter_modules_template_js_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_page_meta_js_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_uni_list_item_vue_vue_type_template_id_296a3d7e___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../../../../../Program Files/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../../../../../../Program Files/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--11-0!../../../../../../../Program Files/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/filter-modules-template.js!../../../../../../../Program Files/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/page-meta.js!../../../../../../../Program Files/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib??vue-loader-options!./uni-list-item.vue?vue&type=template&id=296a3d7e& */ 18);
- /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "render", function() { return _Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_11_0_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_filter_modules_template_js_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_page_meta_js_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_uni_list_item_vue_vue_type_template_id_296a3d7e___WEBPACK_IMPORTED_MODULE_0__["render"]; });
- /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "staticRenderFns", function() { return _Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_11_0_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_filter_modules_template_js_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_page_meta_js_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_uni_list_item_vue_vue_type_template_id_296a3d7e___WEBPACK_IMPORTED_MODULE_0__["staticRenderFns"]; });
- /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "recyclableRender", function() { return _Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_11_0_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_filter_modules_template_js_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_page_meta_js_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_uni_list_item_vue_vue_type_template_id_296a3d7e___WEBPACK_IMPORTED_MODULE_0__["recyclableRender"]; });
- /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "components", function() { return _Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_11_0_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_filter_modules_template_js_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_page_meta_js_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_uni_list_item_vue_vue_type_template_id_296a3d7e___WEBPACK_IMPORTED_MODULE_0__["components"]; });
- /***/ }),
- /* 18 */
- /*!*********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
- !*** ./node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--11-0!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/filter-modules-template.js!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/page-meta.js!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib??vue-loader-options!D:/Work2/Orienteering/TrackOffical/uni_modules/uni-list/components/uni-list-item/uni-list-item.vue?vue&type=template&id=296a3d7e& ***!
- \*********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/
- /*! exports provided: render, staticRenderFns, recyclableRender, components */
- /***/ (function(module, __webpack_exports__, __webpack_require__) {
- "use strict";
- __webpack_require__.r(__webpack_exports__);
- /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "render", function() { return render; });
- /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "staticRenderFns", function() { return staticRenderFns; });
- /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "recyclableRender", function() { return recyclableRender; });
- /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "components", function() { return components; });
- var components
- try {
- components = {
- uniIcons:
- __webpack_require__(/*! @/uni_modules/uni-icons/components/uni-icons/uni-icons.vue */ 19)
- .default,
- uniBadge:
- __webpack_require__(/*! @/uni_modules/uni-badge/components/uni-badge/uni-badge.vue */ 25)
- .default,
- }
- } catch (e) {
- if (
- e.message.indexOf("Cannot find module") !== -1 &&
- e.message.indexOf(".vue") !== -1
- ) {
- console.error(e.message)
- console.error("1. 排查组件名称拼写是否正确")
- console.error(
- "2. 排查组件是否符合 easycom 规范,文档:https://uniapp.dcloud.net.cn/collocation/pages?id=easycom"
- )
- console.error(
- "3. 若组件不符合 easycom 规范,需手动引入,并在 components 中注册该组件"
- )
- } else {
- throw e
- }
- }
- var render = function () {
- var _vm = this
- var _h = _vm.$createElement
- var _c = _vm._self._c || _h
- return _c(
- "view",
- {
- staticClass: _vm._$s(0, "sc", "uni-list-item"),
- class: _vm._$s(0, "c", { "uni-list-item--disabled": _vm.disabled }),
- attrs: {
- "hover-class": _vm._$s(
- 0,
- "a-hover-class",
- (!_vm.clickable && !_vm.link) || _vm.disabled || _vm.showSwitch
- ? ""
- : "uni-list-item--hover"
- ),
- _i: 0,
- },
- on: { click: _vm.onClick },
- },
- [
- _vm._$s(1, "i", !_vm.isFirstChild)
- ? _c("view", {
- staticClass: _vm._$s(1, "sc", "border--left"),
- class: _vm._$s(1, "c", { "uni-list--border": _vm.border }),
- attrs: { _i: 1 },
- })
- : _vm._e(),
- _c(
- "view",
- {
- staticClass: _vm._$s(2, "sc", "uni-list-item__container"),
- class: _vm._$s(2, "c", {
- "container--right": _vm.showArrow || _vm.link,
- "flex--direction": _vm.direction === "column",
- }),
- attrs: { _i: 2 },
- },
- [
- _vm._t(
- "header",
- [
- _c(
- "view",
- {
- staticClass: _vm._$s(4, "sc", "uni-list-item__header"),
- attrs: { _i: 4 },
- },
- [
- _vm._$s(5, "i", _vm.thumb)
- ? _c(
- "view",
- {
- staticClass: _vm._$s(5, "sc", "uni-list-item__icon"),
- attrs: { _i: 5 },
- },
- [
- _c("image", {
- staticClass: _vm._$s(
- 6,
- "sc",
- "uni-list-item__icon-img"
- ),
- class: _vm._$s(6, "c", [
- "uni-list--" + _vm.thumbSize,
- ]),
- attrs: {
- src: _vm._$s(6, "a-src", _vm.thumb),
- _i: 6,
- },
- }),
- ]
- )
- : _vm._$s(7, "e", _vm.showExtraIcon)
- ? _c(
- "view",
- {
- staticClass: _vm._$s(7, "sc", "uni-list-item__icon"),
- attrs: { _i: 7 },
- },
- [
- _c("uni-icons", {
- attrs: {
- color: _vm.extraIcon.color,
- size: _vm.extraIcon.size,
- type: _vm.extraIcon.type,
- _i: 8,
- },
- }),
- ],
- 1
- )
- : _vm._e(),
- ]
- ),
- ],
- { _i: 3 }
- ),
- _vm._t(
- "body",
- [
- _c(
- "view",
- {
- staticClass: _vm._$s(10, "sc", "uni-list-item__content"),
- class: _vm._$s(10, "c", {
- "uni-list-item__content--center":
- _vm.thumb ||
- _vm.showExtraIcon ||
- _vm.showBadge ||
- _vm.showSwitch,
- }),
- attrs: { _i: 10 },
- },
- [
- _vm._$s(11, "i", _vm.title)
- ? _c(
- "text",
- {
- staticClass: _vm._$s(
- 11,
- "sc",
- "uni-list-item__content-title"
- ),
- class: _vm._$s(11, "c", [
- _vm.ellipsis !== 0 && _vm.ellipsis <= 2
- ? "uni-ellipsis-" + _vm.ellipsis
- : "",
- ]),
- attrs: { _i: 11 },
- },
- [_vm._v(_vm._$s(11, "t0-0", _vm._s(_vm.title)))]
- )
- : _vm._e(),
- _vm._$s(12, "i", _vm.note)
- ? _c(
- "text",
- {
- staticClass: _vm._$s(
- 12,
- "sc",
- "uni-list-item__content-note"
- ),
- attrs: { _i: 12 },
- },
- [_vm._v(_vm._$s(12, "t0-0", _vm._s(_vm.note)))]
- )
- : _vm._e(),
- ]
- ),
- ],
- { _i: 9 }
- ),
- _vm._t(
- "footer",
- [
- _vm._$s(14, "i", _vm.rightText || _vm.showBadge || _vm.showSwitch)
- ? _c(
- "view",
- {
- staticClass: _vm._$s(14, "sc", "uni-list-item__extra"),
- class: _vm._$s(14, "c", {
- "flex--justify": _vm.direction === "column",
- }),
- attrs: { _i: 14 },
- },
- [
- _vm._$s(15, "i", _vm.rightText)
- ? _c(
- "text",
- {
- staticClass: _vm._$s(
- 15,
- "sc",
- "uni-list-item__extra-text"
- ),
- attrs: { _i: 15 },
- },
- [_vm._v(_vm._$s(15, "t0-0", _vm._s(_vm.rightText)))]
- )
- : _vm._e(),
- _vm._$s(16, "i", _vm.showBadge)
- ? _c("uni-badge", {
- attrs: {
- type: _vm.badgeType,
- text: _vm.badgeText,
- "custom-style": _vm.badgeStyle,
- _i: 16,
- },
- })
- : _vm._e(),
- _vm._$s(17, "i", _vm.showSwitch)
- ? _c("switch", {
- attrs: {
- disabled: _vm._$s(17, "a-disabled", _vm.disabled),
- checked: _vm._$s(
- 17,
- "a-checked",
- _vm.switchChecked
- ),
- _i: 17,
- },
- on: { change: _vm.onSwitchChange },
- })
- : _vm._e(),
- ],
- 1
- )
- : _vm._e(),
- ],
- { _i: 13 }
- ),
- ],
- 2
- ),
- _vm._$s(18, "i", _vm.showArrow || _vm.link)
- ? _c("uni-icons", {
- staticClass: _vm._$s(18, "sc", "uni-icon-wrapper"),
- attrs: { size: 16, color: "#bbb", type: "arrowright", _i: 18 },
- })
- : _vm._e(),
- ],
- 1
- )
- }
- var recyclableRender = false
- var staticRenderFns = []
- render._withStripped = true
- /***/ }),
- /* 19 */
- /*!***************************************************************************************************!*\
- !*** D:/Work2/Orienteering/TrackOffical/uni_modules/uni-icons/components/uni-icons/uni-icons.vue ***!
- \***************************************************************************************************/
- /*! no static exports found */
- /***/ (function(module, __webpack_exports__, __webpack_require__) {
- "use strict";
- eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _uni_icons_vue_vue_type_template_id_a2e81f6e___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./uni-icons.vue?vue&type=template&id=a2e81f6e& */ 20);\n/* harmony import */ var _uni_icons_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./uni-icons.vue?vue&type=script&lang=js& */ 22);\n/* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _uni_icons_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__) if([\"default\"].indexOf(__WEBPACK_IMPORT_KEY__) < 0) (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _uni_icons_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__[key]; }) }(__WEBPACK_IMPORT_KEY__));\n/* harmony import */ var _Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../../../../../../Program Files/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/runtime/componentNormalizer.js */ 15);\n\nvar renderjs\n\n\n\n\n/* normalize component */\n\nvar component = Object(_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(\n _uni_icons_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__[\"default\"],\n _uni_icons_vue_vue_type_template_id_a2e81f6e___WEBPACK_IMPORTED_MODULE_0__[\"render\"],\n _uni_icons_vue_vue_type_template_id_a2e81f6e___WEBPACK_IMPORTED_MODULE_0__[\"staticRenderFns\"],\n false,\n null,\n null,\n null,\n false,\n _uni_icons_vue_vue_type_template_id_a2e81f6e___WEBPACK_IMPORTED_MODULE_0__[\"components\"],\n renderjs\n)\n\ncomponent.options.__file = \"uni_modules/uni-icons/components/uni-icons/uni-icons.vue\"\n/* harmony default export */ __webpack_exports__[\"default\"] = (component.exports);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbbnVsbF0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBc0g7QUFDdEg7QUFDNkQ7QUFDTDs7O0FBR3hEO0FBQzBMO0FBQzFMLGdCQUFnQiwyTEFBVTtBQUMxQixFQUFFLCtFQUFNO0FBQ1IsRUFBRSxvRkFBTTtBQUNSLEVBQUUsNkZBQWU7QUFDakI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEVBQUUsd0ZBQVU7QUFDWjtBQUNBOztBQUVBO0FBQ2UsZ0YiLCJmaWxlIjoiMTkuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyByZW5kZXIsIHN0YXRpY1JlbmRlckZucywgcmVjeWNsYWJsZVJlbmRlciwgY29tcG9uZW50cyB9IGZyb20gXCIuL3VuaS1pY29ucy52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9YTJlODFmNmUmXCJcbnZhciByZW5kZXJqc1xuaW1wb3J0IHNjcmlwdCBmcm9tIFwiLi91bmktaWNvbnMudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPWpzJlwiXG5leHBvcnQgKiBmcm9tIFwiLi91bmktaWNvbnMudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPWpzJlwiXG5cblxuLyogbm9ybWFsaXplIGNvbXBvbmVudCAqL1xuaW1wb3J0IG5vcm1hbGl6ZXIgZnJvbSBcIiEuLi8uLi8uLi8uLi8uLi8uLi8uLi9Qcm9ncmFtIEZpbGVzL0hCdWlsZGVyWC9wbHVnaW5zL3VuaWFwcC1jbGkvbm9kZV9tb2R1bGVzL0BkY2xvdWRpby92dWUtY2xpLXBsdWdpbi11bmkvcGFja2FnZXMvdnVlLWxvYWRlci9saWIvcnVudGltZS9jb21wb25lbnROb3JtYWxpemVyLmpzXCJcbnZhciBjb21wb25lbnQgPSBub3JtYWxpemVyKFxuICBzY3JpcHQsXG4gIHJlbmRlcixcbiAgc3RhdGljUmVuZGVyRm5zLFxuICBmYWxzZSxcbiAgbnVsbCxcbiAgbnVsbCxcbiAgbnVsbCxcbiAgZmFsc2UsXG4gIGNvbXBvbmVudHMsXG4gIHJlbmRlcmpzXG4pXG5cbmNvbXBvbmVudC5vcHRpb25zLl9fZmlsZSA9IFwidW5pX21vZHVsZXMvdW5pLWljb25zL2NvbXBvbmVudHMvdW5pLWljb25zL3VuaS1pY29ucy52dWVcIlxuZXhwb3J0IGRlZmF1bHQgY29tcG9uZW50LmV4cG9ydHMiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///19\n");
- /***/ }),
- /* 20 */
- /*!**********************************************************************************************************************************!*\
- !*** D:/Work2/Orienteering/TrackOffical/uni_modules/uni-icons/components/uni-icons/uni-icons.vue?vue&type=template&id=a2e81f6e& ***!
- \**********************************************************************************************************************************/
- /*! exports provided: render, staticRenderFns, recyclableRender, components */
- /***/ (function(module, __webpack_exports__, __webpack_require__) {
- "use strict";
- __webpack_require__.r(__webpack_exports__);
- /* harmony import */ var _Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_11_0_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_filter_modules_template_js_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_page_meta_js_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_uni_icons_vue_vue_type_template_id_a2e81f6e___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../../../../../Program Files/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../../../../../../Program Files/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--11-0!../../../../../../../Program Files/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/filter-modules-template.js!../../../../../../../Program Files/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/page-meta.js!../../../../../../../Program Files/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib??vue-loader-options!./uni-icons.vue?vue&type=template&id=a2e81f6e& */ 21);
- /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "render", function() { return _Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_11_0_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_filter_modules_template_js_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_page_meta_js_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_uni_icons_vue_vue_type_template_id_a2e81f6e___WEBPACK_IMPORTED_MODULE_0__["render"]; });
- /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "staticRenderFns", function() { return _Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_11_0_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_filter_modules_template_js_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_page_meta_js_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_uni_icons_vue_vue_type_template_id_a2e81f6e___WEBPACK_IMPORTED_MODULE_0__["staticRenderFns"]; });
- /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "recyclableRender", function() { return _Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_11_0_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_filter_modules_template_js_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_page_meta_js_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_uni_icons_vue_vue_type_template_id_a2e81f6e___WEBPACK_IMPORTED_MODULE_0__["recyclableRender"]; });
- /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "components", function() { return _Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_11_0_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_filter_modules_template_js_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_page_meta_js_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_uni_icons_vue_vue_type_template_id_a2e81f6e___WEBPACK_IMPORTED_MODULE_0__["components"]; });
- /***/ }),
- /* 21 */
- /*!**************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
- !*** ./node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--11-0!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/filter-modules-template.js!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/page-meta.js!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib??vue-loader-options!D:/Work2/Orienteering/TrackOffical/uni_modules/uni-icons/components/uni-icons/uni-icons.vue?vue&type=template&id=a2e81f6e& ***!
- \**************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/
- /*! exports provided: render, staticRenderFns, recyclableRender, components */
- /***/ (function(module, __webpack_exports__, __webpack_require__) {
- "use strict";
- __webpack_require__.r(__webpack_exports__);
- /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "render", function() { return render; });
- /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "staticRenderFns", function() { return staticRenderFns; });
- /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "recyclableRender", function() { return recyclableRender; });
- /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "components", function() { return components; });
- var components
- var render = function () {
- var _vm = this
- var _h = _vm.$createElement
- var _c = _vm._self._c || _h
- return _c("text", {
- staticClass: _vm._$s(0, "sc", "uni-icons"),
- class: _vm._$s(0, "c", [
- "uniui-" + _vm.type,
- _vm.customPrefix,
- _vm.customPrefix ? _vm.type : "",
- ]),
- style: _vm._$s(0, "s", { color: _vm.color, "font-size": _vm.iconSize }),
- attrs: { _i: 0 },
- on: { click: _vm._onClick },
- })
- }
- var recyclableRender = false
- var staticRenderFns = []
- render._withStripped = true
- /***/ }),
- /* 22 */
- /*!****************************************************************************************************************************!*\
- !*** D:/Work2/Orienteering/TrackOffical/uni_modules/uni-icons/components/uni-icons/uni-icons.vue?vue&type=script&lang=js& ***!
- \****************************************************************************************************************************/
- /*! no static exports found */
- /***/ (function(module, __webpack_exports__, __webpack_require__) {
- "use strict";
- eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_7_1_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_using_components_js_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_uni_icons_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../../../../../Program Files/HBuilderX/plugins/uniapp-cli/node_modules/babel-loader/lib!../../../../../../../Program Files/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--7-1!../../../../../../../Program Files/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/using-components.js!../../../../../../../Program Files/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib??vue-loader-options!./uni-icons.vue?vue&type=script&lang=js& */ 23);\n/* harmony import */ var _Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_7_1_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_using_components_js_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_uni_icons_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_7_1_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_using_components_js_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_uni_icons_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__);\n/* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_7_1_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_using_components_js_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_uni_icons_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__) if([\"default\"].indexOf(__WEBPACK_IMPORT_KEY__) < 0) (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_7_1_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_using_components_js_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_uni_icons_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__[key]; }) }(__WEBPACK_IMPORT_KEY__));\n /* harmony default export */ __webpack_exports__[\"default\"] = (_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_7_1_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_using_components_js_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_uni_icons_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0___default.a); //# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbbnVsbF0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQWlvQixDQUFnQix1bkJBQUcsRUFBQyIsImZpbGUiOiIyMi5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBtb2QgZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vLi4vLi4vUHJvZ3JhbSBGaWxlcy9IQnVpbGRlclgvcGx1Z2lucy91bmlhcHAtY2xpL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzIS4uLy4uLy4uLy4uLy4uLy4uLy4uL1Byb2dyYW0gRmlsZXMvSEJ1aWxkZXJYL3BsdWdpbnMvdW5pYXBwLWNsaS9ub2RlX21vZHVsZXMvQGRjbG91ZGlvL3Z1ZS1jbGktcGx1Z2luLXVuaS9wYWNrYWdlcy93ZWJwYWNrLXByZXByb2Nlc3MtbG9hZGVyL2luZGV4LmpzPz9yZWYtLTctMSEuLi8uLi8uLi8uLi8uLi8uLi8uLi9Qcm9ncmFtIEZpbGVzL0hCdWlsZGVyWC9wbHVnaW5zL3VuaWFwcC1jbGkvbm9kZV9tb2R1bGVzL0BkY2xvdWRpby92dWUtY2xpLXBsdWdpbi11bmkvcGFja2FnZXMvd2VicGFjay11bmktYXBwLWxvYWRlci91c2luZy1jb21wb25lbnRzLmpzIS4uLy4uLy4uLy4uLy4uLy4uLy4uL1Byb2dyYW0gRmlsZXMvSEJ1aWxkZXJYL3BsdWdpbnMvdW5pYXBwLWNsaS9ub2RlX21vZHVsZXMvQGRjbG91ZGlvL3Z1ZS1jbGktcGx1Z2luLXVuaS9wYWNrYWdlcy92dWUtbG9hZGVyL2xpYi9pbmRleC5qcz8/dnVlLWxvYWRlci1vcHRpb25zIS4vdW5pLWljb25zLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz1qcyZcIjsgZXhwb3J0IGRlZmF1bHQgbW9kOyBleHBvcnQgKiBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi8uLi8uLi9Qcm9ncmFtIEZpbGVzL0hCdWlsZGVyWC9wbHVnaW5zL3VuaWFwcC1jbGkvbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanMhLi4vLi4vLi4vLi4vLi4vLi4vLi4vUHJvZ3JhbSBGaWxlcy9IQnVpbGRlclgvcGx1Z2lucy91bmlhcHAtY2xpL25vZGVfbW9kdWxlcy9AZGNsb3VkaW8vdnVlLWNsaS1wbHVnaW4tdW5pL3BhY2thZ2VzL3dlYnBhY2stcHJlcHJvY2Vzcy1sb2FkZXIvaW5kZXguanM/P3JlZi0tNy0xIS4uLy4uLy4uLy4uLy4uLy4uLy4uL1Byb2dyYW0gRmlsZXMvSEJ1aWxkZXJYL3BsdWdpbnMvdW5pYXBwLWNsaS9ub2RlX21vZHVsZXMvQGRjbG91ZGlvL3Z1ZS1jbGktcGx1Z2luLXVuaS9wYWNrYWdlcy93ZWJwYWNrLXVuaS1hcHAtbG9hZGVyL3VzaW5nLWNvbXBvbmVudHMuanMhLi4vLi4vLi4vLi4vLi4vLi4vLi4vUHJvZ3JhbSBGaWxlcy9IQnVpbGRlclgvcGx1Z2lucy91bmlhcHAtY2xpL25vZGVfbW9kdWxlcy9AZGNsb3VkaW8vdnVlLWNsaS1wbHVnaW4tdW5pL3BhY2thZ2VzL3Z1ZS1sb2FkZXIvbGliL2luZGV4LmpzPz92dWUtbG9hZGVyLW9wdGlvbnMhLi91bmktaWNvbnMudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPWpzJlwiIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///22\n");
- /***/ }),
- /* 23 */
- /*!*********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
- !*** ./node_modules/babel-loader/lib!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--7-1!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/using-components.js!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib??vue-loader-options!D:/Work2/Orienteering/TrackOffical/uni_modules/uni-icons/components/uni-icons/uni-icons.vue?vue&type=script&lang=js& ***!
- \*********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/
- /*! no static exports found */
- /***/ (function(module, exports, __webpack_require__) {
- "use strict";
- eval("\n\nvar _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ 1);\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar _icons = _interopRequireDefault(__webpack_require__(/*! ./icons.js */ 24));\n//\n//\n//\n//\n//\n//\n//\n//\n//\n\nvar getVal = function getVal(val) {\n var reg = /^[0-9]*$/g;\n return typeof val === 'number' || reg.test(val) ? val + 'px' : val;\n};\n\n/**\n * Icons 图标\n * @description 用于展示 icons 图标\n * @tutorial https://ext.dcloud.net.cn/plugin?id=28\n * @property {Number} size 图标大小\n * @property {String} type 图标图案,参考示例\n * @property {String} color 图标颜色\n * @property {String} customPrefix 自定义图标\n * @event {Function} click 点击 Icon 触发事件\n */\nvar _default = {\n name: 'UniIcons',\n emits: ['click'],\n props: {\n type: {\n type: String,\n default: ''\n },\n color: {\n type: String,\n default: '#333333'\n },\n size: {\n type: [Number, String],\n default: 16\n },\n customPrefix: {\n type: String,\n default: ''\n }\n },\n data: function data() {\n return {\n icons: _icons.default.glyphs\n };\n },\n computed: {\n unicode: function unicode() {\n var _this = this;\n var code = this.icons.find(function (v) {\n return v.font_class === _this.type;\n });\n if (code) {\n return unescape(\"%u\".concat(code.unicode));\n }\n return '';\n },\n iconSize: function iconSize() {\n return getVal(this.size);\n }\n },\n methods: {\n _onClick: function _onClick() {\n this.$emit('click');\n }\n }\n};\nexports.default = _default;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInVuaS1hcHA6Ly8vdW5pX21vZHVsZXMvdW5pLWljb25zL2NvbXBvbmVudHMvdW5pLWljb25zL3VuaS1pY29ucy52dWUiXSwibmFtZXMiOlsibmFtZSIsImVtaXRzIiwicHJvcHMiLCJ0eXBlIiwiZGVmYXVsdCIsImNvbG9yIiwic2l6ZSIsImN1c3RvbVByZWZpeCIsImRhdGEiLCJpY29ucyIsImNvbXB1dGVkIiwidW5pY29kZSIsImljb25TaXplIiwibWV0aG9kcyIsIl9vbkNsaWNrIl0sIm1hcHBpbmdzIjoiOzs7Ozs7O0FBVUE7Ozs7Ozs7Ozs7O0FBQ0E7RUFDQTtFQUNBO0FBQ0E7O0FBVUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFUQSxlQVVBO0VBQ0FBO0VBQ0FDO0VBQ0FDO0lBQ0FDO01BQ0FBO01BQ0FDO0lBQ0E7SUFDQUM7TUFDQUY7TUFDQUM7SUFDQTtJQUNBRTtNQUNBSDtNQUNBQztJQUNBO0lBQ0FHO01BQ0FKO01BQ0FDO0lBQ0E7RUFDQTtFQUNBSTtJQUNBO01BQ0FDO0lBQ0E7RUFDQTtFQUNBQztJQUNBQztNQUFBO01BQ0E7UUFBQTtNQUFBO01BQ0E7UUFDQTtNQUNBO01BQ0E7SUFDQTtJQUNBQztNQUNBO0lBQ0E7RUFDQTtFQUNBQztJQUNBQztNQUNBO0lBQ0E7RUFDQTtBQUNBO0FBQUEiLCJmaWxlIjoiMjMuanMiLCJzb3VyY2VzQ29udGVudCI6WyI8dGVtcGxhdGU+XG5cdDwhLS0gI2lmZGVmIEFQUC1OVlVFIC0tPlxuXHQ8dGV4dCA6c3R5bGU9XCJ7IGNvbG9yOiBjb2xvciwgJ2ZvbnQtc2l6ZSc6IGljb25TaXplIH1cIiBjbGFzcz1cInVuaS1pY29uc1wiIEBjbGljaz1cIl9vbkNsaWNrXCI+e3t1bmljb2RlfX08L3RleHQ+XG5cdDwhLS0gI2VuZGlmIC0tPlxuXHQ8IS0tICNpZm5kZWYgQVBQLU5WVUUgLS0+XG5cdDx0ZXh0IDpzdHlsZT1cInsgY29sb3I6IGNvbG9yLCAnZm9udC1zaXplJzogaWNvblNpemUgfVwiIGNsYXNzPVwidW5pLWljb25zXCIgOmNsYXNzPVwiWyd1bml1aS0nK3R5cGUsY3VzdG9tUHJlZml4LGN1c3RvbVByZWZpeD90eXBlOicnXVwiIEBjbGljaz1cIl9vbkNsaWNrXCI+PC90ZXh0PlxuXHQ8IS0tICNlbmRpZiAtLT5cclxuPC90ZW1wbGF0ZT5cclxuXHJcbjxzY3JpcHQ+XHJcblx0aW1wb3J0IGljb25zIGZyb20gJy4vaWNvbnMuanMnO1xuXHRjb25zdCBnZXRWYWwgPSAodmFsKSA9PiB7XG5cdFx0Y29uc3QgcmVnID0gL15bMC05XSokL2dcblx0XHRyZXR1cm4gKHR5cGVvZiB2YWwgPT09ICdudW1iZXInIHx844CAcmVnLnRlc3QodmFsKSApPyB2YWwgKyAncHgnIDogdmFsO1xuXHR9IFxyXG5cdC8vICNpZmRlZiBBUFAtTlZVRVxyXG5cdHZhciBkb21Nb2R1bGUgPSB3ZWV4LnJlcXVpcmVNb2R1bGUoJ2RvbScpO1xyXG5cdGltcG9ydCBpY29uVXJsIGZyb20gJy4vdW5paWNvbnMudHRmJ1xyXG5cdGRvbU1vZHVsZS5hZGRSdWxlKCdmb250RmFjZScsIHtcclxuXHRcdCdmb250RmFtaWx5JzogXCJ1bmlpY29uc1wiLFxyXG5cdFx0J3NyYyc6IFwidXJsKCdcIitpY29uVXJsK1wiJylcIlxyXG5cdH0pO1xyXG5cdC8vICNlbmRpZlxyXG5cclxuXHQvKipcclxuXHQgKiBJY29ucyDlm77moIdcclxuXHQgKiBAZGVzY3JpcHRpb24g55So5LqO5bGV56S6IGljb25zIOWbvuagh1xyXG5cdCAqIEB0dXRvcmlhbCBodHRwczovL2V4dC5kY2xvdWQubmV0LmNuL3BsdWdpbj9pZD0yOFxyXG5cdCAqIEBwcm9wZXJ0eSB7TnVtYmVyfSBzaXplIOWbvuagh+Wkp+Wwj1xyXG5cdCAqIEBwcm9wZXJ0eSB7U3RyaW5nfSB0eXBlIOWbvuagh+WbvuahiO+8jOWPguiAg+ekuuS+i1xyXG5cdCAqIEBwcm9wZXJ0eSB7U3RyaW5nfSBjb2xvciDlm77moIfpopzoibJcblx0ICogQHByb3BlcnR5IHtTdHJpbmd9IGN1c3RvbVByZWZpeCDoh6rlrprkuYnlm77moIdcblx0ICogQGV2ZW50IHtGdW5jdGlvbn0gY2xpY2sg54K55Ye7IEljb24g6Kem5Y+R5LqL5Lu2XHJcblx0ICovXHJcblx0ZXhwb3J0IGRlZmF1bHQge1xyXG5cdFx0bmFtZTogJ1VuaUljb25zJyxcclxuXHRcdGVtaXRzOlsnY2xpY2snXSxcclxuXHRcdHByb3BzOiB7XHJcblx0XHRcdHR5cGU6IHtcclxuXHRcdFx0XHR0eXBlOiBTdHJpbmcsXHJcblx0XHRcdFx0ZGVmYXVsdDogJydcclxuXHRcdFx0fSxcclxuXHRcdFx0Y29sb3I6IHtcclxuXHRcdFx0XHR0eXBlOiBTdHJpbmcsXHJcblx0XHRcdFx0ZGVmYXVsdDogJyMzMzMzMzMnXHJcblx0XHRcdH0sXHJcblx0XHRcdHNpemU6IHtcclxuXHRcdFx0XHR0eXBlOiBbTnVtYmVyLCBTdHJpbmddLFxyXG5cdFx0XHRcdGRlZmF1bHQ6IDE2XHJcblx0XHRcdH0sXG5cdFx0XHRjdXN0b21QcmVmaXg6e1xuXHRcdFx0XHR0eXBlOiBTdHJpbmcsXG5cdFx0XHRcdGRlZmF1bHQ6ICcnXG5cdFx0XHR9XHJcblx0XHR9LFxyXG5cdFx0ZGF0YSgpIHtcclxuXHRcdFx0cmV0dXJuIHtcclxuXHRcdFx0XHRpY29uczogaWNvbnMuZ2x5cGhzXHJcblx0XHRcdH1cclxuXHRcdH0sXG5cdFx0Y29tcHV0ZWQ6e1xuXHRcdFx0dW5pY29kZSgpe1xuXHRcdFx0XHRsZXQgY29kZSA9IHRoaXMuaWNvbnMuZmluZCh2PT52LmZvbnRfY2xhc3MgPT09IHRoaXMudHlwZSlcblx0XHRcdFx0aWYoY29kZSl7XG5cdFx0XHRcdFx0cmV0dXJuIHVuZXNjYXBlKGAldSR7Y29kZS51bmljb2RlfWApXG5cdFx0XHRcdH1cblx0XHRcdFx0cmV0dXJuICcnXG5cdFx0XHR9LFxuXHRcdFx0aWNvblNpemUoKXtcblx0XHRcdFx0cmV0dXJuIGdldFZhbCh0aGlzLnNpemUpXG5cdFx0XHR9XG5cdFx0fSxcclxuXHRcdG1ldGhvZHM6IHtcclxuXHRcdFx0X29uQ2xpY2soKSB7XHJcblx0XHRcdFx0dGhpcy4kZW1pdCgnY2xpY2snKVxyXG5cdFx0XHR9XHJcblx0XHR9XHJcblx0fVxyXG48L3NjcmlwdD5cclxuXHJcbjxzdHlsZSBsYW5nPVwic2Nzc1wiPlxuXHQvKiAjaWZuZGVmIEFQUC1OVlVFICovXG5cdEBpbXBvcnQgJy4vdW5paWNvbnMuY3NzJztcclxuXHRAZm9udC1mYWNlIHtcclxuXHRcdGZvbnQtZmFtaWx5OiB1bmlpY29ucztcclxuXHRcdHNyYzogdXJsKCcuL3VuaWljb25zLnR0ZicpIGZvcm1hdCgndHJ1ZXR5cGUnKTtcclxuXHR9XHJcblxyXG5cdC8qICNlbmRpZiAqL1xuXHQudW5pLWljb25zIHtcclxuXHRcdGZvbnQtZmFtaWx5OiB1bmlpY29ucztcclxuXHRcdHRleHQtZGVjb3JhdGlvbjogbm9uZTtcclxuXHRcdHRleHQtYWxpZ246IGNlbnRlcjtcclxuXHR9XHJcblxyXG48L3N0eWxlPlxuIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///23\n");
- /***/ }),
- /* 24 */
- /*!**********************************************************************************************!*\
- !*** D:/Work2/Orienteering/TrackOffical/uni_modules/uni-icons/components/uni-icons/icons.js ***!
- \**********************************************************************************************/
- /*! no static exports found */
- /***/ (function(module, exports, __webpack_require__) {
- "use strict";
- eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar _default = {\n \"id\": \"2852637\",\n \"name\": \"uniui图标库\",\n \"font_family\": \"uniicons\",\n \"css_prefix_text\": \"uniui-\",\n \"description\": \"\",\n \"glyphs\": [{\n \"icon_id\": \"25027049\",\n \"name\": \"yanse\",\n \"font_class\": \"color\",\n \"unicode\": \"e6cf\",\n \"unicode_decimal\": 59087\n }, {\n \"icon_id\": \"25027048\",\n \"name\": \"wallet\",\n \"font_class\": \"wallet\",\n \"unicode\": \"e6b1\",\n \"unicode_decimal\": 59057\n }, {\n \"icon_id\": \"25015720\",\n \"name\": \"settings-filled\",\n \"font_class\": \"settings-filled\",\n \"unicode\": \"e6ce\",\n \"unicode_decimal\": 59086\n }, {\n \"icon_id\": \"25015434\",\n \"name\": \"shimingrenzheng-filled\",\n \"font_class\": \"auth-filled\",\n \"unicode\": \"e6cc\",\n \"unicode_decimal\": 59084\n }, {\n \"icon_id\": \"24934246\",\n \"name\": \"shop-filled\",\n \"font_class\": \"shop-filled\",\n \"unicode\": \"e6cd\",\n \"unicode_decimal\": 59085\n }, {\n \"icon_id\": \"24934159\",\n \"name\": \"staff-filled-01\",\n \"font_class\": \"staff-filled\",\n \"unicode\": \"e6cb\",\n \"unicode_decimal\": 59083\n }, {\n \"icon_id\": \"24932461\",\n \"name\": \"VIP-filled\",\n \"font_class\": \"vip-filled\",\n \"unicode\": \"e6c6\",\n \"unicode_decimal\": 59078\n }, {\n \"icon_id\": \"24932462\",\n \"name\": \"plus_circle_fill\",\n \"font_class\": \"plus-filled\",\n \"unicode\": \"e6c7\",\n \"unicode_decimal\": 59079\n }, {\n \"icon_id\": \"24932463\",\n \"name\": \"folder_add-filled\",\n \"font_class\": \"folder-add-filled\",\n \"unicode\": \"e6c8\",\n \"unicode_decimal\": 59080\n }, {\n \"icon_id\": \"24932464\",\n \"name\": \"yanse-filled\",\n \"font_class\": \"color-filled\",\n \"unicode\": \"e6c9\",\n \"unicode_decimal\": 59081\n }, {\n \"icon_id\": \"24932465\",\n \"name\": \"tune-filled\",\n \"font_class\": \"tune-filled\",\n \"unicode\": \"e6ca\",\n \"unicode_decimal\": 59082\n }, {\n \"icon_id\": \"24932455\",\n \"name\": \"a-rilidaka-filled\",\n \"font_class\": \"calendar-filled\",\n \"unicode\": \"e6c0\",\n \"unicode_decimal\": 59072\n }, {\n \"icon_id\": \"24932456\",\n \"name\": \"notification-filled\",\n \"font_class\": \"notification-filled\",\n \"unicode\": \"e6c1\",\n \"unicode_decimal\": 59073\n }, {\n \"icon_id\": \"24932457\",\n \"name\": \"wallet-filled\",\n \"font_class\": \"wallet-filled\",\n \"unicode\": \"e6c2\",\n \"unicode_decimal\": 59074\n }, {\n \"icon_id\": \"24932458\",\n \"name\": \"paihangbang-filled\",\n \"font_class\": \"medal-filled\",\n \"unicode\": \"e6c3\",\n \"unicode_decimal\": 59075\n }, {\n \"icon_id\": \"24932459\",\n \"name\": \"gift-filled\",\n \"font_class\": \"gift-filled\",\n \"unicode\": \"e6c4\",\n \"unicode_decimal\": 59076\n }, {\n \"icon_id\": \"24932460\",\n \"name\": \"fire-filled\",\n \"font_class\": \"fire-filled\",\n \"unicode\": \"e6c5\",\n \"unicode_decimal\": 59077\n }, {\n \"icon_id\": \"24928001\",\n \"name\": \"refreshempty\",\n \"font_class\": \"refreshempty\",\n \"unicode\": \"e6bf\",\n \"unicode_decimal\": 59071\n }, {\n \"icon_id\": \"24926853\",\n \"name\": \"location-ellipse\",\n \"font_class\": \"location-filled\",\n \"unicode\": \"e6af\",\n \"unicode_decimal\": 59055\n }, {\n \"icon_id\": \"24926735\",\n \"name\": \"person-filled\",\n \"font_class\": \"person-filled\",\n \"unicode\": \"e69d\",\n \"unicode_decimal\": 59037\n }, {\n \"icon_id\": \"24926703\",\n \"name\": \"personadd-filled\",\n \"font_class\": \"personadd-filled\",\n \"unicode\": \"e698\",\n \"unicode_decimal\": 59032\n }, {\n \"icon_id\": \"24923351\",\n \"name\": \"back\",\n \"font_class\": \"back\",\n \"unicode\": \"e6b9\",\n \"unicode_decimal\": 59065\n }, {\n \"icon_id\": \"24923352\",\n \"name\": \"forward\",\n \"font_class\": \"forward\",\n \"unicode\": \"e6ba\",\n \"unicode_decimal\": 59066\n }, {\n \"icon_id\": \"24923353\",\n \"name\": \"arrowthinright\",\n \"font_class\": \"arrow-right\",\n \"unicode\": \"e6bb\",\n \"unicode_decimal\": 59067\n }, {\n \"icon_id\": \"24923353\",\n \"name\": \"arrowthinright\",\n \"font_class\": \"arrowthinright\",\n \"unicode\": \"e6bb\",\n \"unicode_decimal\": 59067\n }, {\n \"icon_id\": \"24923354\",\n \"name\": \"arrowthinleft\",\n \"font_class\": \"arrow-left\",\n \"unicode\": \"e6bc\",\n \"unicode_decimal\": 59068\n }, {\n \"icon_id\": \"24923354\",\n \"name\": \"arrowthinleft\",\n \"font_class\": \"arrowthinleft\",\n \"unicode\": \"e6bc\",\n \"unicode_decimal\": 59068\n }, {\n \"icon_id\": \"24923355\",\n \"name\": \"arrowthinup\",\n \"font_class\": \"arrow-up\",\n \"unicode\": \"e6bd\",\n \"unicode_decimal\": 59069\n }, {\n \"icon_id\": \"24923355\",\n \"name\": \"arrowthinup\",\n \"font_class\": \"arrowthinup\",\n \"unicode\": \"e6bd\",\n \"unicode_decimal\": 59069\n }, {\n \"icon_id\": \"24923356\",\n \"name\": \"arrowthindown\",\n \"font_class\": \"arrow-down\",\n \"unicode\": \"e6be\",\n \"unicode_decimal\": 59070\n }, {\n \"icon_id\": \"24923356\",\n \"name\": \"arrowthindown\",\n \"font_class\": \"arrowthindown\",\n \"unicode\": \"e6be\",\n \"unicode_decimal\": 59070\n }, {\n \"icon_id\": \"24923349\",\n \"name\": \"arrowdown\",\n \"font_class\": \"bottom\",\n \"unicode\": \"e6b8\",\n \"unicode_decimal\": 59064\n }, {\n \"icon_id\": \"24923349\",\n \"name\": \"arrowdown\",\n \"font_class\": \"arrowdown\",\n \"unicode\": \"e6b8\",\n \"unicode_decimal\": 59064\n }, {\n \"icon_id\": \"24923346\",\n \"name\": \"arrowright\",\n \"font_class\": \"right\",\n \"unicode\": \"e6b5\",\n \"unicode_decimal\": 59061\n }, {\n \"icon_id\": \"24923346\",\n \"name\": \"arrowright\",\n \"font_class\": \"arrowright\",\n \"unicode\": \"e6b5\",\n \"unicode_decimal\": 59061\n }, {\n \"icon_id\": \"24923347\",\n \"name\": \"arrowup\",\n \"font_class\": \"top\",\n \"unicode\": \"e6b6\",\n \"unicode_decimal\": 59062\n }, {\n \"icon_id\": \"24923347\",\n \"name\": \"arrowup\",\n \"font_class\": \"arrowup\",\n \"unicode\": \"e6b6\",\n \"unicode_decimal\": 59062\n }, {\n \"icon_id\": \"24923348\",\n \"name\": \"arrowleft\",\n \"font_class\": \"left\",\n \"unicode\": \"e6b7\",\n \"unicode_decimal\": 59063\n }, {\n \"icon_id\": \"24923348\",\n \"name\": \"arrowleft\",\n \"font_class\": \"arrowleft\",\n \"unicode\": \"e6b7\",\n \"unicode_decimal\": 59063\n }, {\n \"icon_id\": \"24923334\",\n \"name\": \"eye\",\n \"font_class\": \"eye\",\n \"unicode\": \"e651\",\n \"unicode_decimal\": 58961\n }, {\n \"icon_id\": \"24923335\",\n \"name\": \"eye-filled\",\n \"font_class\": \"eye-filled\",\n \"unicode\": \"e66a\",\n \"unicode_decimal\": 58986\n }, {\n \"icon_id\": \"24923336\",\n \"name\": \"eye-slash\",\n \"font_class\": \"eye-slash\",\n \"unicode\": \"e6b3\",\n \"unicode_decimal\": 59059\n }, {\n \"icon_id\": \"24923337\",\n \"name\": \"eye-slash-filled\",\n \"font_class\": \"eye-slash-filled\",\n \"unicode\": \"e6b4\",\n \"unicode_decimal\": 59060\n }, {\n \"icon_id\": \"24923305\",\n \"name\": \"info-filled\",\n \"font_class\": \"info-filled\",\n \"unicode\": \"e649\",\n \"unicode_decimal\": 58953\n }, {\n \"icon_id\": \"24923299\",\n \"name\": \"reload-01\",\n \"font_class\": \"reload\",\n \"unicode\": \"e6b2\",\n \"unicode_decimal\": 59058\n }, {\n \"icon_id\": \"24923195\",\n \"name\": \"mic_slash_fill\",\n \"font_class\": \"micoff-filled\",\n \"unicode\": \"e6b0\",\n \"unicode_decimal\": 59056\n }, {\n \"icon_id\": \"24923165\",\n \"name\": \"map-pin-ellipse\",\n \"font_class\": \"map-pin-ellipse\",\n \"unicode\": \"e6ac\",\n \"unicode_decimal\": 59052\n }, {\n \"icon_id\": \"24923166\",\n \"name\": \"map-pin\",\n \"font_class\": \"map-pin\",\n \"unicode\": \"e6ad\",\n \"unicode_decimal\": 59053\n }, {\n \"icon_id\": \"24923167\",\n \"name\": \"location\",\n \"font_class\": \"location\",\n \"unicode\": \"e6ae\",\n \"unicode_decimal\": 59054\n }, {\n \"icon_id\": \"24923064\",\n \"name\": \"starhalf\",\n \"font_class\": \"starhalf\",\n \"unicode\": \"e683\",\n \"unicode_decimal\": 59011\n }, {\n \"icon_id\": \"24923065\",\n \"name\": \"star\",\n \"font_class\": \"star\",\n \"unicode\": \"e688\",\n \"unicode_decimal\": 59016\n }, {\n \"icon_id\": \"24923066\",\n \"name\": \"star-filled\",\n \"font_class\": \"star-filled\",\n \"unicode\": \"e68f\",\n \"unicode_decimal\": 59023\n }, {\n \"icon_id\": \"24899646\",\n \"name\": \"a-rilidaka\",\n \"font_class\": \"calendar\",\n \"unicode\": \"e6a0\",\n \"unicode_decimal\": 59040\n }, {\n \"icon_id\": \"24899647\",\n \"name\": \"fire\",\n \"font_class\": \"fire\",\n \"unicode\": \"e6a1\",\n \"unicode_decimal\": 59041\n }, {\n \"icon_id\": \"24899648\",\n \"name\": \"paihangbang\",\n \"font_class\": \"medal\",\n \"unicode\": \"e6a2\",\n \"unicode_decimal\": 59042\n }, {\n \"icon_id\": \"24899649\",\n \"name\": \"font\",\n \"font_class\": \"font\",\n \"unicode\": \"e6a3\",\n \"unicode_decimal\": 59043\n }, {\n \"icon_id\": \"24899650\",\n \"name\": \"gift\",\n \"font_class\": \"gift\",\n \"unicode\": \"e6a4\",\n \"unicode_decimal\": 59044\n }, {\n \"icon_id\": \"24899651\",\n \"name\": \"link\",\n \"font_class\": \"link\",\n \"unicode\": \"e6a5\",\n \"unicode_decimal\": 59045\n }, {\n \"icon_id\": \"24899652\",\n \"name\": \"notification\",\n \"font_class\": \"notification\",\n \"unicode\": \"e6a6\",\n \"unicode_decimal\": 59046\n }, {\n \"icon_id\": \"24899653\",\n \"name\": \"staff\",\n \"font_class\": \"staff\",\n \"unicode\": \"e6a7\",\n \"unicode_decimal\": 59047\n }, {\n \"icon_id\": \"24899654\",\n \"name\": \"VIP\",\n \"font_class\": \"vip\",\n \"unicode\": \"e6a8\",\n \"unicode_decimal\": 59048\n }, {\n \"icon_id\": \"24899655\",\n \"name\": \"folder_add\",\n \"font_class\": \"folder-add\",\n \"unicode\": \"e6a9\",\n \"unicode_decimal\": 59049\n }, {\n \"icon_id\": \"24899656\",\n \"name\": \"tune\",\n \"font_class\": \"tune\",\n \"unicode\": \"e6aa\",\n \"unicode_decimal\": 59050\n }, {\n \"icon_id\": \"24899657\",\n \"name\": \"shimingrenzheng\",\n \"font_class\": \"auth\",\n \"unicode\": \"e6ab\",\n \"unicode_decimal\": 59051\n }, {\n \"icon_id\": \"24899565\",\n \"name\": \"person\",\n \"font_class\": \"person\",\n \"unicode\": \"e699\",\n \"unicode_decimal\": 59033\n }, {\n \"icon_id\": \"24899566\",\n \"name\": \"email-filled\",\n \"font_class\": \"email-filled\",\n \"unicode\": \"e69a\",\n \"unicode_decimal\": 59034\n }, {\n \"icon_id\": \"24899567\",\n \"name\": \"phone-filled\",\n \"font_class\": \"phone-filled\",\n \"unicode\": \"e69b\",\n \"unicode_decimal\": 59035\n }, {\n \"icon_id\": \"24899568\",\n \"name\": \"phone\",\n \"font_class\": \"phone\",\n \"unicode\": \"e69c\",\n \"unicode_decimal\": 59036\n }, {\n \"icon_id\": \"24899570\",\n \"name\": \"email\",\n \"font_class\": \"email\",\n \"unicode\": \"e69e\",\n \"unicode_decimal\": 59038\n }, {\n \"icon_id\": \"24899571\",\n \"name\": \"personadd\",\n \"font_class\": \"personadd\",\n \"unicode\": \"e69f\",\n \"unicode_decimal\": 59039\n }, {\n \"icon_id\": \"24899558\",\n \"name\": \"chatboxes-filled\",\n \"font_class\": \"chatboxes-filled\",\n \"unicode\": \"e692\",\n \"unicode_decimal\": 59026\n }, {\n \"icon_id\": \"24899559\",\n \"name\": \"contact\",\n \"font_class\": \"contact\",\n \"unicode\": \"e693\",\n \"unicode_decimal\": 59027\n }, {\n \"icon_id\": \"24899560\",\n \"name\": \"chatbubble-filled\",\n \"font_class\": \"chatbubble-filled\",\n \"unicode\": \"e694\",\n \"unicode_decimal\": 59028\n }, {\n \"icon_id\": \"24899561\",\n \"name\": \"contact-filled\",\n \"font_class\": \"contact-filled\",\n \"unicode\": \"e695\",\n \"unicode_decimal\": 59029\n }, {\n \"icon_id\": \"24899562\",\n \"name\": \"chatboxes\",\n \"font_class\": \"chatboxes\",\n \"unicode\": \"e696\",\n \"unicode_decimal\": 59030\n }, {\n \"icon_id\": \"24899563\",\n \"name\": \"chatbubble\",\n \"font_class\": \"chatbubble\",\n \"unicode\": \"e697\",\n \"unicode_decimal\": 59031\n }, {\n \"icon_id\": \"24881290\",\n \"name\": \"upload-filled\",\n \"font_class\": \"upload-filled\",\n \"unicode\": \"e68e\",\n \"unicode_decimal\": 59022\n }, {\n \"icon_id\": \"24881292\",\n \"name\": \"upload\",\n \"font_class\": \"upload\",\n \"unicode\": \"e690\",\n \"unicode_decimal\": 59024\n }, {\n \"icon_id\": \"24881293\",\n \"name\": \"weixin\",\n \"font_class\": \"weixin\",\n \"unicode\": \"e691\",\n \"unicode_decimal\": 59025\n }, {\n \"icon_id\": \"24881274\",\n \"name\": \"compose\",\n \"font_class\": \"compose\",\n \"unicode\": \"e67f\",\n \"unicode_decimal\": 59007\n }, {\n \"icon_id\": \"24881275\",\n \"name\": \"qq\",\n \"font_class\": \"qq\",\n \"unicode\": \"e680\",\n \"unicode_decimal\": 59008\n }, {\n \"icon_id\": \"24881276\",\n \"name\": \"download-filled\",\n \"font_class\": \"download-filled\",\n \"unicode\": \"e681\",\n \"unicode_decimal\": 59009\n }, {\n \"icon_id\": \"24881277\",\n \"name\": \"pengyouquan\",\n \"font_class\": \"pyq\",\n \"unicode\": \"e682\",\n \"unicode_decimal\": 59010\n }, {\n \"icon_id\": \"24881279\",\n \"name\": \"sound\",\n \"font_class\": \"sound\",\n \"unicode\": \"e684\",\n \"unicode_decimal\": 59012\n }, {\n \"icon_id\": \"24881280\",\n \"name\": \"trash-filled\",\n \"font_class\": \"trash-filled\",\n \"unicode\": \"e685\",\n \"unicode_decimal\": 59013\n }, {\n \"icon_id\": \"24881281\",\n \"name\": \"sound-filled\",\n \"font_class\": \"sound-filled\",\n \"unicode\": \"e686\",\n \"unicode_decimal\": 59014\n }, {\n \"icon_id\": \"24881282\",\n \"name\": \"trash\",\n \"font_class\": \"trash\",\n \"unicode\": \"e687\",\n \"unicode_decimal\": 59015\n }, {\n \"icon_id\": \"24881284\",\n \"name\": \"videocam-filled\",\n \"font_class\": \"videocam-filled\",\n \"unicode\": \"e689\",\n \"unicode_decimal\": 59017\n }, {\n \"icon_id\": \"24881285\",\n \"name\": \"spinner-cycle\",\n \"font_class\": \"spinner-cycle\",\n \"unicode\": \"e68a\",\n \"unicode_decimal\": 59018\n }, {\n \"icon_id\": \"24881286\",\n \"name\": \"weibo\",\n \"font_class\": \"weibo\",\n \"unicode\": \"e68b\",\n \"unicode_decimal\": 59019\n }, {\n \"icon_id\": \"24881288\",\n \"name\": \"videocam\",\n \"font_class\": \"videocam\",\n \"unicode\": \"e68c\",\n \"unicode_decimal\": 59020\n }, {\n \"icon_id\": \"24881289\",\n \"name\": \"download\",\n \"font_class\": \"download\",\n \"unicode\": \"e68d\",\n \"unicode_decimal\": 59021\n }, {\n \"icon_id\": \"24879601\",\n \"name\": \"help\",\n \"font_class\": \"help\",\n \"unicode\": \"e679\",\n \"unicode_decimal\": 59001\n }, {\n \"icon_id\": \"24879602\",\n \"name\": \"navigate-filled\",\n \"font_class\": \"navigate-filled\",\n \"unicode\": \"e67a\",\n \"unicode_decimal\": 59002\n }, {\n \"icon_id\": \"24879603\",\n \"name\": \"plusempty\",\n \"font_class\": \"plusempty\",\n \"unicode\": \"e67b\",\n \"unicode_decimal\": 59003\n }, {\n \"icon_id\": \"24879604\",\n \"name\": \"smallcircle\",\n \"font_class\": \"smallcircle\",\n \"unicode\": \"e67c\",\n \"unicode_decimal\": 59004\n }, {\n \"icon_id\": \"24879605\",\n \"name\": \"minus-filled\",\n \"font_class\": \"minus-filled\",\n \"unicode\": \"e67d\",\n \"unicode_decimal\": 59005\n }, {\n \"icon_id\": \"24879606\",\n \"name\": \"micoff\",\n \"font_class\": \"micoff\",\n \"unicode\": \"e67e\",\n \"unicode_decimal\": 59006\n }, {\n \"icon_id\": \"24879588\",\n \"name\": \"closeempty\",\n \"font_class\": \"closeempty\",\n \"unicode\": \"e66c\",\n \"unicode_decimal\": 58988\n }, {\n \"icon_id\": \"24879589\",\n \"name\": \"clear\",\n \"font_class\": \"clear\",\n \"unicode\": \"e66d\",\n \"unicode_decimal\": 58989\n }, {\n \"icon_id\": \"24879590\",\n \"name\": \"navigate\",\n \"font_class\": \"navigate\",\n \"unicode\": \"e66e\",\n \"unicode_decimal\": 58990\n }, {\n \"icon_id\": \"24879591\",\n \"name\": \"minus\",\n \"font_class\": \"minus\",\n \"unicode\": \"e66f\",\n \"unicode_decimal\": 58991\n }, {\n \"icon_id\": \"24879592\",\n \"name\": \"image\",\n \"font_class\": \"image\",\n \"unicode\": \"e670\",\n \"unicode_decimal\": 58992\n }, {\n \"icon_id\": \"24879593\",\n \"name\": \"mic\",\n \"font_class\": \"mic\",\n \"unicode\": \"e671\",\n \"unicode_decimal\": 58993\n }, {\n \"icon_id\": \"24879594\",\n \"name\": \"paperplane\",\n \"font_class\": \"paperplane\",\n \"unicode\": \"e672\",\n \"unicode_decimal\": 58994\n }, {\n \"icon_id\": \"24879595\",\n \"name\": \"close\",\n \"font_class\": \"close\",\n \"unicode\": \"e673\",\n \"unicode_decimal\": 58995\n }, {\n \"icon_id\": \"24879596\",\n \"name\": \"help-filled\",\n \"font_class\": \"help-filled\",\n \"unicode\": \"e674\",\n \"unicode_decimal\": 58996\n }, {\n \"icon_id\": \"24879597\",\n \"name\": \"plus-filled\",\n \"font_class\": \"paperplane-filled\",\n \"unicode\": \"e675\",\n \"unicode_decimal\": 58997\n }, {\n \"icon_id\": \"24879598\",\n \"name\": \"plus\",\n \"font_class\": \"plus\",\n \"unicode\": \"e676\",\n \"unicode_decimal\": 58998\n }, {\n \"icon_id\": \"24879599\",\n \"name\": \"mic-filled\",\n \"font_class\": \"mic-filled\",\n \"unicode\": \"e677\",\n \"unicode_decimal\": 58999\n }, {\n \"icon_id\": \"24879600\",\n \"name\": \"image-filled\",\n \"font_class\": \"image-filled\",\n \"unicode\": \"e678\",\n \"unicode_decimal\": 59000\n }, {\n \"icon_id\": \"24855900\",\n \"name\": \"locked-filled\",\n \"font_class\": \"locked-filled\",\n \"unicode\": \"e668\",\n \"unicode_decimal\": 58984\n }, {\n \"icon_id\": \"24855901\",\n \"name\": \"info\",\n \"font_class\": \"info\",\n \"unicode\": \"e669\",\n \"unicode_decimal\": 58985\n }, {\n \"icon_id\": \"24855903\",\n \"name\": \"locked\",\n \"font_class\": \"locked\",\n \"unicode\": \"e66b\",\n \"unicode_decimal\": 58987\n }, {\n \"icon_id\": \"24855884\",\n \"name\": \"camera-filled\",\n \"font_class\": \"camera-filled\",\n \"unicode\": \"e658\",\n \"unicode_decimal\": 58968\n }, {\n \"icon_id\": \"24855885\",\n \"name\": \"chat-filled\",\n \"font_class\": \"chat-filled\",\n \"unicode\": \"e659\",\n \"unicode_decimal\": 58969\n }, {\n \"icon_id\": \"24855886\",\n \"name\": \"camera\",\n \"font_class\": \"camera\",\n \"unicode\": \"e65a\",\n \"unicode_decimal\": 58970\n }, {\n \"icon_id\": \"24855887\",\n \"name\": \"circle\",\n \"font_class\": \"circle\",\n \"unicode\": \"e65b\",\n \"unicode_decimal\": 58971\n }, {\n \"icon_id\": \"24855888\",\n \"name\": \"checkmarkempty\",\n \"font_class\": \"checkmarkempty\",\n \"unicode\": \"e65c\",\n \"unicode_decimal\": 58972\n }, {\n \"icon_id\": \"24855889\",\n \"name\": \"chat\",\n \"font_class\": \"chat\",\n \"unicode\": \"e65d\",\n \"unicode_decimal\": 58973\n }, {\n \"icon_id\": \"24855890\",\n \"name\": \"circle-filled\",\n \"font_class\": \"circle-filled\",\n \"unicode\": \"e65e\",\n \"unicode_decimal\": 58974\n }, {\n \"icon_id\": \"24855891\",\n \"name\": \"flag\",\n \"font_class\": \"flag\",\n \"unicode\": \"e65f\",\n \"unicode_decimal\": 58975\n }, {\n \"icon_id\": \"24855892\",\n \"name\": \"flag-filled\",\n \"font_class\": \"flag-filled\",\n \"unicode\": \"e660\",\n \"unicode_decimal\": 58976\n }, {\n \"icon_id\": \"24855893\",\n \"name\": \"gear-filled\",\n \"font_class\": \"gear-filled\",\n \"unicode\": \"e661\",\n \"unicode_decimal\": 58977\n }, {\n \"icon_id\": \"24855894\",\n \"name\": \"home\",\n \"font_class\": \"home\",\n \"unicode\": \"e662\",\n \"unicode_decimal\": 58978\n }, {\n \"icon_id\": \"24855895\",\n \"name\": \"home-filled\",\n \"font_class\": \"home-filled\",\n \"unicode\": \"e663\",\n \"unicode_decimal\": 58979\n }, {\n \"icon_id\": \"24855896\",\n \"name\": \"gear\",\n \"font_class\": \"gear\",\n \"unicode\": \"e664\",\n \"unicode_decimal\": 58980\n }, {\n \"icon_id\": \"24855897\",\n \"name\": \"smallcircle-filled\",\n \"font_class\": \"smallcircle-filled\",\n \"unicode\": \"e665\",\n \"unicode_decimal\": 58981\n }, {\n \"icon_id\": \"24855898\",\n \"name\": \"map-filled\",\n \"font_class\": \"map-filled\",\n \"unicode\": \"e666\",\n \"unicode_decimal\": 58982\n }, {\n \"icon_id\": \"24855899\",\n \"name\": \"map\",\n \"font_class\": \"map\",\n \"unicode\": \"e667\",\n \"unicode_decimal\": 58983\n }, {\n \"icon_id\": \"24855825\",\n \"name\": \"refresh-filled\",\n \"font_class\": \"refresh-filled\",\n \"unicode\": \"e656\",\n \"unicode_decimal\": 58966\n }, {\n \"icon_id\": \"24855826\",\n \"name\": \"refresh\",\n \"font_class\": \"refresh\",\n \"unicode\": \"e657\",\n \"unicode_decimal\": 58967\n }, {\n \"icon_id\": \"24855808\",\n \"name\": \"cloud-upload\",\n \"font_class\": \"cloud-upload\",\n \"unicode\": \"e645\",\n \"unicode_decimal\": 58949\n }, {\n \"icon_id\": \"24855809\",\n \"name\": \"cloud-download-filled\",\n \"font_class\": \"cloud-download-filled\",\n \"unicode\": \"e646\",\n \"unicode_decimal\": 58950\n }, {\n \"icon_id\": \"24855810\",\n \"name\": \"cloud-download\",\n \"font_class\": \"cloud-download\",\n \"unicode\": \"e647\",\n \"unicode_decimal\": 58951\n }, {\n \"icon_id\": \"24855811\",\n \"name\": \"cloud-upload-filled\",\n \"font_class\": \"cloud-upload-filled\",\n \"unicode\": \"e648\",\n \"unicode_decimal\": 58952\n }, {\n \"icon_id\": \"24855813\",\n \"name\": \"redo\",\n \"font_class\": \"redo\",\n \"unicode\": \"e64a\",\n \"unicode_decimal\": 58954\n }, {\n \"icon_id\": \"24855814\",\n \"name\": \"images-filled\",\n \"font_class\": \"images-filled\",\n \"unicode\": \"e64b\",\n \"unicode_decimal\": 58955\n }, {\n \"icon_id\": \"24855815\",\n \"name\": \"undo-filled\",\n \"font_class\": \"undo-filled\",\n \"unicode\": \"e64c\",\n \"unicode_decimal\": 58956\n }, {\n \"icon_id\": \"24855816\",\n \"name\": \"more\",\n \"font_class\": \"more\",\n \"unicode\": \"e64d\",\n \"unicode_decimal\": 58957\n }, {\n \"icon_id\": \"24855817\",\n \"name\": \"more-filled\",\n \"font_class\": \"more-filled\",\n \"unicode\": \"e64e\",\n \"unicode_decimal\": 58958\n }, {\n \"icon_id\": \"24855818\",\n \"name\": \"undo\",\n \"font_class\": \"undo\",\n \"unicode\": \"e64f\",\n \"unicode_decimal\": 58959\n }, {\n \"icon_id\": \"24855819\",\n \"name\": \"images\",\n \"font_class\": \"images\",\n \"unicode\": \"e650\",\n \"unicode_decimal\": 58960\n }, {\n \"icon_id\": \"24855821\",\n \"name\": \"paperclip\",\n \"font_class\": \"paperclip\",\n \"unicode\": \"e652\",\n \"unicode_decimal\": 58962\n }, {\n \"icon_id\": \"24855822\",\n \"name\": \"settings\",\n \"font_class\": \"settings\",\n \"unicode\": \"e653\",\n \"unicode_decimal\": 58963\n }, {\n \"icon_id\": \"24855823\",\n \"name\": \"search\",\n \"font_class\": \"search\",\n \"unicode\": \"e654\",\n \"unicode_decimal\": 58964\n }, {\n \"icon_id\": \"24855824\",\n \"name\": \"redo-filled\",\n \"font_class\": \"redo-filled\",\n \"unicode\": \"e655\",\n \"unicode_decimal\": 58965\n }, {\n \"icon_id\": \"24841702\",\n \"name\": \"list\",\n \"font_class\": \"list\",\n \"unicode\": \"e644\",\n \"unicode_decimal\": 58948\n }, {\n \"icon_id\": \"24841489\",\n \"name\": \"mail-open-filled\",\n \"font_class\": \"mail-open-filled\",\n \"unicode\": \"e63a\",\n \"unicode_decimal\": 58938\n }, {\n \"icon_id\": \"24841491\",\n \"name\": \"hand-thumbsdown-filled\",\n \"font_class\": \"hand-down-filled\",\n \"unicode\": \"e63c\",\n \"unicode_decimal\": 58940\n }, {\n \"icon_id\": \"24841492\",\n \"name\": \"hand-thumbsdown\",\n \"font_class\": \"hand-down\",\n \"unicode\": \"e63d\",\n \"unicode_decimal\": 58941\n }, {\n \"icon_id\": \"24841493\",\n \"name\": \"hand-thumbsup-filled\",\n \"font_class\": \"hand-up-filled\",\n \"unicode\": \"e63e\",\n \"unicode_decimal\": 58942\n }, {\n \"icon_id\": \"24841494\",\n \"name\": \"hand-thumbsup\",\n \"font_class\": \"hand-up\",\n \"unicode\": \"e63f\",\n \"unicode_decimal\": 58943\n }, {\n \"icon_id\": \"24841496\",\n \"name\": \"heart-filled\",\n \"font_class\": \"heart-filled\",\n \"unicode\": \"e641\",\n \"unicode_decimal\": 58945\n }, {\n \"icon_id\": \"24841498\",\n \"name\": \"mail-open\",\n \"font_class\": \"mail-open\",\n \"unicode\": \"e643\",\n \"unicode_decimal\": 58947\n }, {\n \"icon_id\": \"24841488\",\n \"name\": \"heart\",\n \"font_class\": \"heart\",\n \"unicode\": \"e639\",\n \"unicode_decimal\": 58937\n }, {\n \"icon_id\": \"24839963\",\n \"name\": \"loop\",\n \"font_class\": \"loop\",\n \"unicode\": \"e633\",\n \"unicode_decimal\": 58931\n }, {\n \"icon_id\": \"24839866\",\n \"name\": \"pulldown\",\n \"font_class\": \"pulldown\",\n \"unicode\": \"e632\",\n \"unicode_decimal\": 58930\n }, {\n \"icon_id\": \"24813798\",\n \"name\": \"scan\",\n \"font_class\": \"scan\",\n \"unicode\": \"e62a\",\n \"unicode_decimal\": 58922\n }, {\n \"icon_id\": \"24813786\",\n \"name\": \"bars\",\n \"font_class\": \"bars\",\n \"unicode\": \"e627\",\n \"unicode_decimal\": 58919\n }, {\n \"icon_id\": \"24813788\",\n \"name\": \"cart-filled\",\n \"font_class\": \"cart-filled\",\n \"unicode\": \"e629\",\n \"unicode_decimal\": 58921\n }, {\n \"icon_id\": \"24813790\",\n \"name\": \"checkbox\",\n \"font_class\": \"checkbox\",\n \"unicode\": \"e62b\",\n \"unicode_decimal\": 58923\n }, {\n \"icon_id\": \"24813791\",\n \"name\": \"checkbox-filled\",\n \"font_class\": \"checkbox-filled\",\n \"unicode\": \"e62c\",\n \"unicode_decimal\": 58924\n }, {\n \"icon_id\": \"24813794\",\n \"name\": \"shop\",\n \"font_class\": \"shop\",\n \"unicode\": \"e62f\",\n \"unicode_decimal\": 58927\n }, {\n \"icon_id\": \"24813795\",\n \"name\": \"headphones\",\n \"font_class\": \"headphones\",\n \"unicode\": \"e630\",\n \"unicode_decimal\": 58928\n }, {\n \"icon_id\": \"24813796\",\n \"name\": \"cart\",\n \"font_class\": \"cart\",\n \"unicode\": \"e631\",\n \"unicode_decimal\": 58929\n }]\n};\nexports.default = _default;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInVuaS1hcHA6Ly8vdW5pX21vZHVsZXMvdW5pLWljb25zL2NvbXBvbmVudHMvdW5pLWljb25zL2ljb25zLmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7OztlQUFlO0VBQ2IsSUFBSSxFQUFFLFNBQVM7RUFDZixNQUFNLEVBQUUsVUFBVTtFQUNsQixhQUFhLEVBQUUsVUFBVTtFQUN6QixpQkFBaUIsRUFBRSxRQUFRO0VBQzNCLGFBQWEsRUFBRSxFQUFFO0VBQ2pCLFFBQVEsRUFBRSxDQUNSO0lBQ0UsU0FBUyxFQUFFLFVBQVU7SUFDckIsTUFBTSxFQUFFLE9BQU87SUFDZixZQUFZLEVBQUUsT0FBTztJQUNyQixTQUFTLEVBQUUsTUFBTTtJQUNqQixpQkFBaUIsRUFBRTtFQUNyQixDQUFDLEVBQ0Q7SUFDRSxTQUFTLEVBQUUsVUFBVTtJQUNyQixNQUFNLEVBQUUsUUFBUTtJQUNoQixZQUFZLEVBQUUsUUFBUTtJQUN0QixTQUFTLEVBQUUsTUFBTTtJQUNqQixpQkFBaUIsRUFBRTtFQUNyQixDQUFDLEVBQ0Q7SUFDRSxTQUFTLEVBQUUsVUFBVTtJQUNyQixNQUFNLEVBQUUsaUJBQWlCO0lBQ3pCLFlBQVksRUFBRSxpQkFBaUI7SUFDL0IsU0FBUyxFQUFFLE1BQU07SUFDakIsaUJBQWlCLEVBQUU7RUFDckIsQ0FBQyxFQUNEO0lBQ0UsU0FBUyxFQUFFLFVBQVU7SUFDckIsTUFBTSxFQUFFLHdCQUF3QjtJQUNoQyxZQUFZLEVBQUUsYUFBYTtJQUMzQixTQUFTLEVBQUUsTUFBTTtJQUNqQixpQkFBaUIsRUFBRTtFQUNyQixDQUFDLEVBQ0Q7SUFDRSxTQUFTLEVBQUUsVUFBVTtJQUNyQixNQUFNLEVBQUUsYUFBYTtJQUNyQixZQUFZLEVBQUUsYUFBYTtJQUMzQixTQUFTLEVBQUUsTUFBTTtJQUNqQixpQkFBaUIsRUFBRTtFQUNyQixDQUFDLEVBQ0Q7SUFDRSxTQUFTLEVBQUUsVUFBVTtJQUNyQixNQUFNLEVBQUUsaUJBQWlCO0lBQ3pCLFlBQVksRUFBRSxj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QWE7SUFDckIsWUFBWSxFQUFFLGFBQWE7SUFDM0IsU0FBUyxFQUFFLE1BQU07SUFDakIsaUJBQWlCLEVBQUU7RUFDckIsQ0FBQyxFQUNDO0lBQ0UsU0FBUyxFQUFFLFVBQVU7SUFDckIsTUFBTSxFQUFFLGVBQWU7SUFDdkIsWUFBWSxFQUFFLFlBQVk7SUFDMUIsU0FBUyxFQUFFLE1BQU07SUFDakIsaUJBQWlCLEVBQUU7RUFDckIsQ0FBQyxFQUFDO0lBQ0EsU0FBUyxFQUFFLFVBQVU7SUFDckIsTUFBTSxFQUFFLGVBQWU7SUFDdkIsWUFBWSxFQUFFLGVBQWU7SUFDN0IsU0FBUyxFQUFFLE1BQU07SUFDakIsaUJBQWlCLEVBQUU7RUFDckIsQ0FBQyxFQUNEO0lBQ0UsU0FBUyxFQUFFLFVBQVU7SUFDckIsTUFBTSxFQUFFLFdBQVc7SUFDbkIsWUFBWSxFQUFFLFFBQVE7SUFDdEIsU0FBUyxFQUFFLE1BQU07SUFDakIsaUJBQWlCLEVBQUU7RUFDckIsQ0FBQyxFQUFDO0lBQ0EsU0FBUyxFQUFFLFVBQVU7SUFDckIsTUFBTSxFQUFFLFdBQVc7SUFDbkIsWUFBWSxFQUFFLFdBQVc7SUFDekIsU0FBUyxFQUFFLE1BQU07SUFDakIsaUJBQWlCLEVBQUU7RUFDckIsQ0FBQyxFQUNEO0lBQ0UsU0FBUyxFQUFFLFVBQVU7SUFDckIsTUFBTSxFQUFFLFlBQVk7SUFDcEIsWUFBWSxFQUFFLE9BQU87SUFDckIsU0FBUyxFQUFFLE1BQU07SUFDakIsaUJBQWlCLEVBQUU7RUFDckIsQ0FBQyxFQUNIO0lBQ0UsU0FBUyxFQUFFLFVBQVU7SUFDckIsTUFBTSxFQUFFLFlBQVk7SUFDcEIsWUFBWSxFQUFFLFlBQVk7SUFDMUIsU0FBUyxFQUFFLE1BQU07SUFDakIsaUJBQWlCLEVBQUU7RUFDckIsQ0FBQyxFQUNDO0lBQ0UsU0FBUyxFQUFFLFVBQVU7SUFDckIsTUFBTSxFQUFFLFNBQVM7SUFDakIsWUFBWSxFQUFFLEtBQUs7SUFDbkIsU0FBUyxFQUFFLE1BQU07SUFDakIsaUJBQWlCLEVBQUU7RUFDckIsQ0FBQyxFQUNIO0lB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dCBkZWZhdWx0IHtcbiAgXCJpZFwiOiBcIjI4NTI2MzdcIixcbiAgXCJuYW1lXCI6IFwidW5pdWnlm77moIflupNcIixcbiAgXCJmb250X2ZhbWlseVwiOiBcInVuaWljb25zXCIsXG4gIFwiY3NzX3ByZWZpeF90ZXh0XCI6IFwidW5pdWktXCIsXG4gIFwiZGVzY3JpcHRpb25cIjogXCJcIixcbiAgXCJnbHlwaHNcIjogW1xuICAgIHtcbiAgICAgIFwiaWNvbl9pZFwiOiBcIjI1MDI3MDQ5XCIsXG4gICAgICBcIm5hbWVcIjogXCJ5YW5zZVwiLFxuICAgICAgXCJmb250X2NsYXNzXCI6IFwiY29sb3JcIixcbiAgICAgIFwidW5pY29kZVwiOiBcImU2Y2ZcIixcbiAgICAgIFwidW5pY29kZV9kZWNpbWFsXCI6IDU5MDg3XG4gICAgfSxcbiAgICB7XG4gICAgICBcImljb25faWRcIjogXCIyNTAyNzA0OFwiLFxuICAgICAgXCJuYW1lXCI6IFwid2FsbGV0XCIsXG4gICAgICBcImZvbnRfY2xhc3NcIjogXCJ3YWxsZXRcIixcbiAgICAgIFwidW5pY29kZVwiOiBcImU2YjFcIixcbiAgICAgIFwidW5pY29kZV9kZWNpbWFsXCI6IDU5MDU3XG4gICAgfSxcbiAgICB7XG4gICAgICBcImljb25faWRcIjogXCIyNTAxNTcyMFwiLFxuICAgICAgXCJuYW1lXCI6IFwic2V0dGluZ3MtZmlsbGVkXCIsXG4gICAgICBcImZvbnRfY2xhc3NcIjogXCJzZXR0aW5ncy1maWxsZWRcIixcbiAgICAgIFwidW5pY29kZVwiOiBcImU2Y2VcIixcbiAgICAgIFwidW5pY29kZV9kZWNpbWFsXCI6IDU5MDg2XG4gICAgfSxcbiAgICB7XG4gICAgICBcImljb25faWRcIjogXCIyNTAxNTQzNFwiLFxuICAgICAgXCJuYW1lXCI6IFwic2hpbWluZ3JlbnpoZW5nLWZpbGxlZFwiLFxuICAgICAgXCJmb250X2NsYXNzXCI6IFwiYXV0aC1maWxsZWRcIixcbiAgICAgIFwidW5pY29kZVwiOiBcImU2Y2NcIixcbiAgICAgIFwidW5pY29kZV9kZWNpbWFsXCI6IDU5MDg0XG4gICAgfSxcbiAgICB7XG4gICAgICBcImljb25faWRcIjogXCIyNDkzNDI0NlwiLFxuICAgICAgXCJuYW1lXCI6IFwic2hvcC1maWxsZWRcIixcbiAgICAgIFwiZm9udF9jbGFzc1wiOiBcInNob3AtZmlsbGVkXCIsXG4gICAgICBcInVuaWNvZGVcIjogXCJlNmNkXCIsXG4gICAgICBcInVuaWNvZGVfZGVjaW1hbFwiOiA1OTA4NVxuICAgIH0sXG4gICAge1xuICAgICAgXCJpY29uX2lkXCI6IFwiMjQ5MzQxNTlcIixcbiAgICAgIFwibmFtZVwiOiBcInN0YWZmLWZpbGxlZC0wMVwiLFxuICAgICAgXCJmb250X2NsYXNzXCI6IFwic3RhZmYtZmlsbGVkXCIsXG4gICAgICBcInVuaWNvZGVcIjogXCJlNmNiXCIsXG4gICAgICBcInVuaWNvZGVfZGVjaW1hbFwiOiA1OTA4M1xuICAgIH0sXG4gICAge1xuICAgICAgXCJpY29uX2lkXCI6IFwiMjQ5MzI0NjFcIixcbiAgICAgIFwibmFtZVwiOiBcIlZJUC1maWxsZWRcIixcbiAgICAgIFwiZm9udF9jbGFzc1wiOiBcInZpcC1maWxsZWRcIixcbiAgICAgIFwidW5pY29kZVwiOiBcImU2YzZcIixcbiAgICAgIFwidW5pY29kZV9kZWNpbWFsXCI6IDU5MDc4XG4gICAgfSxcbiAgICB7XG4gICAgICBcImljb25faWRcIjogXCIyNDkzMjQ2MlwiLFxuICAgICAgXCJuYW1lXCI6IFwicGx1c19jaXJjbGVfZmlsbFwiLFxuICAgICAgXCJmb250X2NsYXNzXCI6IFwicGx1cy1maWxsZWRcIixcbiAgICAgIFwidW5pY29kZVwiOiBcImU2YzdcIixcbiAgICAgIFwidW5pY29kZV9kZWNpbWFsXCI6IDU5MDc5XG4gICAgfSxcbiAgICB7XG4gICAgICBcImljb25faWRcIjogXCIyNDkzMjQ2M1wiLFxuICAgICAgXCJuYW1lXCI6IFwiZm9sZGVyX2FkZC1maWxsZWRcIixcbiAgICAgIFwiZm9udF9jbGFzc1wiOiBcImZvbGRlci1hZGQtZmlsbGVkXCIsXG4gICAgICBcInVuaWNvZGVcIjogXCJlNmM4XCIsXG4gICAgICBcInVuaWNvZGVfZGVjaW1hbFwiOiA1OTA4MFxuICAgIH0sXG4gICAge1xuICAgICAgXCJpY29uX2lkXCI6IFwiMjQ5MzI0NjRcIixcbiAgICAgIFwibmFtZVwiOiBcInlhbnNlLWZpbGxlZFwiLFxuICAgICAgXCJmb250X2NsYXNzXCI6IFwiY29sb3ItZmlsbGVkXCIsXG4gICAgICBcInVuaWNvZGVcIjogXCJlNmM5XCIsXG4gICAgICBcInVuaWNvZGVfZGVjaW1hbFwiOiA1OTA4MVxuICAgIH0sXG4gICAge1xuICAgICAgXCJpY29uX2lkXCI6IFwiMjQ5MzI0NjVcIixcbiAgICAgIFwibmFtZVwiOiBcInR1bmUtZmlsbGVkXCIsXG4gICAgICBcImZvbnRfY2xhc3NcIjogXCJ0dW5lLWZpbGxlZFwiLFxuICAgICAgXCJ1bmljb2RlXCI6IFwiZTZjYVwiLFxuICAgICAgXCJ1bmljb2RlX2RlY2ltYWxcIjogNTkwODJcbiAgICB9LFxuICAgIHtcbiAgICAgIFwiaWNvbl9pZFwiOiBcIjI0OTMyNDU1XCIsXG4gICAgICBcIm5hbWVcIjogXCJhLXJpbGlkYWthLWZpbGxlZFwiLFxuICAgICAgXCJmb250X2NsYXNzXCI6IFwiY2FsZW5kYXItZmlsbGVkXCIsXG4gICAgICBcInVuaWNvZGVcIjogXCJlNmMwXCIsXG4gICAgICBcInVuaWNvZGVfZGVjaW1hbFwiOiA1OTA3MlxuICAgIH0sXG4gICAge1xuICAgICAgXCJpY29uX2lkXCI6IFwiMjQ5MzI0NTZcIixcbiAgICAgIFwibmFtZVwiOiBcIm5vdGlmaWNhdGlvbi1maWxsZWRcIixcbiAgICAgIFwiZm9udF9jbGFzc1wiOiBcIm5vdGlmaWNhdGlvbi1maWxsZWRcIixcbiAgICAgIFwidW5pY29kZVwiOiBcImU2YzFcIixcbiAgICAgIFwidW5pY29kZV9kZWNpbWFsXCI6IDU5MDczXG4gICAgfSxcbiAgICB7XG4gICAgICBcImljb25faWRcIjogXCIyNDkzMjQ1N1wiLFxuICAgICAgXCJuYW1lXCI6IFwid2FsbGV0LWZpbGxlZFwiLFxuICAgICAgXCJmb250X2NsYXNzXCI6IFwid2FsbGV0LWZpbGxlZFwiLFxuICAgICAgXCJ1bmljb2RlXCI6IFwiZTZjMlwiLFxuICAgICAgXCJ1bmljb2RlX2RlY2ltYWxcIjogNTkwNzRcbiAgICB9LFxuICAgIHtcbiAgICAgIFwiaWNvbl9pZFwiOiBcIjI0OTMyNDU4XCIsXG4gICAgICBcIm5hbWVcIjogXCJwYWloYW5nYmFuZy1maWxsZWRcIixcbiAgICAgIFwiZm9udF9jbGFzc1wiOiBcIm1lZGFsLWZpbGxlZFwiLFxuICAgICAgXCJ1bmljb2RlXCI6IFwiZTZjM1wiLFxuICAgICAgXCJ1bmljb2RlX2RlY2ltYWxcIjogNTkwNzVcbiAgICB9LFxuICAgIHtcbiAgICAgIFwiaWNvbl9pZFwiOiBcIjI0OTMyNDU5XCIsXG4gICAgICBcIm5hbWVcIjogXCJnaWZ0LWZpbGxlZFwiLFxuICAgICAgXCJmb250X2NsYXNzXCI6IFwiZ2lmdC1maWxsZWRcIixcbiAgICAgIFwidW5pY29kZVwiOiBcImU2YzRcIixcbiAgICAgIFwidW5pY29kZV9kZWNpbWFsXCI6IDU5MDc2XG4gICAgfSxcbiAgICB7XG4gICAgICBcImljb25faWRcIjogXCIyNDkzMjQ2MFwiLFxuICAgICAgXCJuYW1lXCI6IFwiZmlyZS1maWxsZWRcIixcbiAgICAgIFwiZm9udF9jbGFzc1wiOiBcImZpcmUtZmlsbGVkXCIsXG4gICAgICBcInVuaWNvZGVcIjogXCJlNmM1XCIsXG4gICAgICBcInVuaWNvZGVfZGVjaW1hbFwiOiA1OTA3N1xuICAgIH0sXG4gICAge1xuICAgICAgXCJpY29uX2lkXCI6IFwiMjQ5MjgwMDFcIixcbiAgICAgIFwibmFtZVwiOiBcInJlZnJlc2hlbXB0eVwiLFxuICAgICAgXCJmb250X2NsYXNzXCI6IFwicmVmcmVzaGVtcHR5XCIsXG4gICAgICBcInVuaWNvZGVcIjogXCJlNmJmXCIsXG4gICAgICBcInVuaWNvZGVfZGVjaW1hbFwiOiA1OTA3MVxuICAgIH0sXG4gICAge1xuICAgICAgXCJpY29uX2lkXCI6IFwiMjQ5MjY4NTNcIixcbiAgICAgIFwibmFtZVwiOiBcImxvY2F0aW9uLWVsbGlwc2VcIixcbiAgICAgIFwiZm9udF9jbGFzc1wiOiBcImxvY2F0aW9uLWZpbGxlZFwiLFxuICAgICAgXCJ1bmljb2RlXCI6IFwiZTZhZlwiLFxuICAgICAgXCJ1bmljb2RlX2RlY2ltYWxcIjogNTkwNTVcbiAgICB9LFxuICAgIHtcbiAgICAgIFwiaWNvbl9pZFwiOiBcIjI0OTI2NzM1XCIsXG4gICAgICBcIm5hbWVcIjogXCJwZXJzb24tZmlsbGVkXCIsXG4gICAgICBcImZvbnRfY2xhc3NcIjogXCJwZXJzb24tZmlsbGVkXCIsXG4gICAgICBcInVuaWNvZGVcIjogXCJlNjlkXCIsXG4gICAgICBcInVuaWNvZGVfZGVjaW1hbFwiOiA1OTAzN1xuICAgIH0sXG4gICAge1xuICAgICAgXCJpY29uX2lkXCI6IFwiMjQ5MjY3MDNcIixcbiAgICAgIFwibmFtZVwiOiBcInBlcnNvbmFkZC1maWxsZWRcIixcbiAgICAgIFwiZm9udF9jbGFzc1wiOiBcInBlcnNvbmFkZC1maWxsZWRcIixcbiAgICAgIFwidW5pY29kZVwiOiBcImU2OThcIixcbiAgICAgIFwidW5pY29kZV9kZWNpbWFsXCI6IDU5MDMyXG4gICAgfSxcbiAgICB7XG4gICAgICBcImljb25faWRcIjogXCIyNDkyMzM1MVwiLFxuICAgICAgXCJuYW1lXCI6IFwiYmFja1wiLFxuICAgICAgXCJmb250X2NsYXNzXCI6IFwiYmFja1wiLFxuICAgICAgXCJ1bmljb2RlXCI6IFwiZTZiOVwiLFxuICAgICAgXCJ1bmljb2RlX2RlY2ltYWxcIjogNTkwNjVcbiAgICB9LFxuICAgIHtcbiAgICAgIFwiaWNvbl9pZFwiOiBcIjI0OTIzMzUyXCIsXG4gICAgICBcIm5hbWVcIjogXCJmb3J3YXJkXCIsXG4gICAgICBcImZvbnRfY2xhc3NcIjogXCJmb3J3YXJkXCIsXG4gICAgICBcInVuaWNvZGVcIjogXCJlNmJhXCIsXG4gICAgICBcInVuaWNvZGVfZGVjaW1hbFwiOiA1OTA2NlxuICAgIH0sXG4gICAge1xuICAgICAgXCJpY29uX2lkXCI6IFwiMjQ5MjMzNTNcIixcbiAgICAgIFwibmFtZVwiOiBcImFycm93dGhpbnJpZ2h0XCIsXG4gICAgICBcImZvbnRfY2xhc3NcIjogXCJhcnJvdy1yaWdodFwiLFxuICAgICAgXCJ1bmljb2RlXCI6IFwiZTZiYlwiLFxuICAgICAgXCJ1bmljb2RlX2RlY2ltYWxcIjogNTkwNjdcbiAgICB9LFxuXHRcdHtcblx0XHQgIFwiaWNvbl9pZFwiOiBcIjI0OTIzMzUzXCIsXG5cdFx0ICBcIm5hbWVcIjogXCJhcnJvd3RoaW5yaWdodFwiLFxuXHRcdCAgXCJmb250X2NsYXNzXCI6IFwiYXJyb3d0aGlucmlnaHRcIixcblx0XHQgIFwidW5pY29kZVwiOiBcImU2YmJcIixcblx0XHQgIFwidW5pY29kZV9kZWNpbWFsXCI6IDU5MDY3XG5cdFx0fSxcbiAgICB7XG4gICAgICBcImljb25faWRcIjogXCIyNDkyMzM1NFwiLFxuICAgICAgXCJuYW1lXCI6IFwiYXJyb3d0aGlubGVmdFwiLFxuICAgICAgXCJmb250X2NsYXNzXCI6IFwiYXJyb3ctbGVmdFwiLFxuICAgICAgXCJ1bmljb2RlXCI6IFwiZTZiY1wiLFxuICAgICAgXCJ1bmljb2RlX2RlY2ltYWxcIjogNTkwNjhcbiAgICB9LFxuXHRcdHtcblx0XHQgIFwiaWNvbl9pZFwiOiBcIjI0OTIzMzU0XCIsXG5cdFx0ICBcIm5hbWVcIjogXCJhcnJvd3RoaW5sZWZ0XCIsXG5cdFx0ICBcImZvbnRfY2xhc3NcIjogXCJhcnJvd3RoaW5sZWZ0XCIsXG5cdFx0ICBcInVuaWNvZGVcIjogXCJlNmJjXCIsXG5cdFx0ICBcInVuaWNvZGVfZGVjaW1hbFwiOiA1OTA2OFxuXHRcdH0sXG4gICAge1xuICAgICAgXCJpY29uX2lkXCI6IFwiMjQ5MjMzNTVcIixcbiAgICAgIFwibmFtZVwiOiBcImFycm93dGhpbnVwXCIsXG4gICAgICBcImZvbnRfY2xhc3NcIjogXCJhcnJvdy11cFwiLFxuICAgICAgXCJ1bmljb2RlXCI6IFwiZTZiZFwiLFxuICAgICAgXCJ1bmljb2RlX2RlY2ltYWxcIjogNTkwNjlcbiAgICB9LFxuXHRcdHtcblx0XHQgIFwiaWNvbl9pZFwiOiBcIjI0OTIzMzU1XCIsXG5cdFx0ICBcIm5hbWVcIjogXCJhcnJvd3RoaW51cFwiLFxuXHRcdCAgXCJmb250X2NsYXNzXCI6IFwiYXJyb3d0aGludXBcIixcblx0XHQgIFwidW5pY29kZVwiOiBcImU2YmRcIixcblx0XHQgIFwidW5pY29kZV9kZWNpbWFsXCI6IDU5MDY5XG5cdFx0fSxcbiAgICB7XG4gICAgICBcImljb25faWRcIjogXCIyNDkyMzM1NlwiLFxuICAgICAgXCJuYW1lXCI6IFwiYXJyb3d0aGluZG93blwiLFxuICAgICAgXCJmb250X2NsYXNzXCI6IFwiYXJyb3ctZG93blwiLFxuICAgICAgXCJ1bmljb2RlXCI6IFwiZTZiZVwiLFxuICAgICAgXCJ1bmljb2RlX2RlY2ltYWxcIjogNTkwNzBcbiAgICB9LHtcbiAgICAgIFwiaWNvbl9pZFwiOiBcIjI0OTIzMzU2XCIsXG4gICAgICBcIm5hbWVcIjogXCJhcnJvd3RoaW5kb3duXCIsXG4gICAgICBcImZvbnRfY2xhc3NcIjogXCJhcnJvd3RoaW5kb3duXCIsXG4gICAgICBcInVuaWNvZGVcIjogXCJlNmJlXCIsXG4gICAgICBcInVuaWNvZGVfZGVjaW1hbFwiOiA1OTA3MFxuICAgIH0sXG4gICAge1xuICAgICAgXCJpY29uX2lkXCI6IFwiMjQ5MjMzNDlcIixcbiAgICAgIFwibmFtZVwiOiBcImFycm93ZG93blwiLFxuICAgICAgXCJmb250X2NsYXNzXCI6IFwiYm90dG9tXCIsXG4gICAgICBcInVuaWNvZGVcIjogXCJlNmI4XCIsXG4gICAgICBcInVuaWNvZGVfZGVjaW1hbFwiOiA1OTA2NFxuICAgIH0se1xuICAgICAgXCJpY29uX2lkXCI6IFwiMjQ5MjMzNDlcIixcbiAgICAgIFwibmFtZVwiOiBcImFycm93ZG93blwiLFxuICAgICAgXCJmb250X2NsYXNzXCI6IFwiYXJyb3dkb3duXCIsXG4gICAgICBcInVuaWNvZGVcIjogXCJlNmI4XCIsXG4gICAgICBcInVuaWNvZGVfZGVjaW1hbFwiOiA1OTA2NFxuICAgIH0sXG4gICAge1xuICAgICAgXCJpY29uX2lkXCI6IFwiMjQ5MjMzNDZcIixcbiAgICAgIFwibmFtZVwiOiBcImFycm93cmlnaHRcIixcbiAgICAgIFwiZm9udF9jbGFzc1wiOiBcInJpZ2h0XCIsXG4gICAgICBcInVuaWNvZGVcIjogXCJlNmI1XCIsXG4gICAgICBcInVuaWNvZGVfZGVjaW1hbFwiOiA1OTA2MVxuICAgIH0sXG5cdFx0e1xuXHRcdCAgXCJpY29uX2lkXCI6IFwiMjQ5MjMzNDZcIixcblx0XHQgIFwibmFtZVwiOiBcImFycm93cmlnaHRcIixcblx0XHQgIFwiZm9udF9jbGFzc1wiOiBcImFycm93cmlnaHRcIixcblx0XHQgIFwidW5pY29kZVwiOiBcImU2YjVcIixcblx0XHQgIFwidW5pY29kZV9kZWNpbWFsXCI6IDU5MDYxXG5cdFx0fSxcbiAgICB7XG4gICAgICBcImljb25faWRcIjogXCIyNDkyMzM0N1wiLFxuICAgICAgXCJuYW1lXCI6IFwiYXJyb3d1cFwiLFxuICAgICAgXCJmb250X2NsYXNzXCI6IFwidG9wXCIsXG4gICAgICBcInVuaWNvZGVcIjogXCJlNmI2XCIsXG4gICAgICBcInVuaWNvZGVfZGVjaW1hbFwiOiA1OTA2MlxuICAgIH0sXG5cdFx0e1xuXHRcdCAgXCJpY29uX2lkXCI6IFwiMjQ5MjMzNDdcIixcblx0XHQgIFwibmFtZVwiOiBcImFycm93dXBcIixcblx0XHQgIFwiZm9udF9jbGFzc1wiOiBcImFycm93dXBcIixcblx0XHQgIFwidW5pY29kZVwiOiBcImU2YjZcIixcblx0XHQgIFwidW5pY29kZV9kZWNpbWFsXCI6IDU5MDYyXG5cdFx0fSxcbiAgICB7XG4gICAgICBcImljb25faWRcIjogXCIyNDkyMzM0OFwiLFxuICAgICAgXCJuYW1lXCI6IFwiYXJyb3dsZWZ0XCIsXG4gICAgICBcImZvbnRfY2xhc3NcIjogXCJsZWZ0XCIsXG4gICAgICBcInVuaWNvZGVcIjogXCJlNmI3XCIsXG4gICAgICBcInVuaWNvZGVfZGVjaW1hbFwiOiA1OTA2M1xuICAgIH0sXG5cdFx0e1xuXHRcdCAgXCJpY29uX2lkXCI6IFwiMjQ5MjMzNDhcIixcblx0XHQgIFwibmFtZVwiOiBcImFycm93bGVmdFwiLFxuXHRcdCAgXCJmb250X2NsYXNzXCI6IFwiYXJyb3dsZWZ0XCIsXG5cdFx0ICBcInVuaWNvZGVcIjogXCJlNmI3XCIsXG5cdFx0ICBcInVuaWNvZGVfZGVjaW1hbFwiOiA1OTA2M1xuXHRcdH0sXG4gICAge1xuICAgICAgXCJpY29uX2lkXCI6IFwiMjQ5MjMzMzRcIixcbiAgICAgIFwibmFtZVwiOiBcImV5ZVwiLFxuICAgICAgXCJmb250X2NsYXNzXCI6IFwiZXllXCIsXG4gICAgICBcInVuaWNvZGVcIjogXCJlNjUxXCIsXG4gICAgICBcInVuaWNvZGVfZGVjaW1hbFwiOiA1ODk2MVxuICAgIH0sXG4gICAge1xuICAgICAgXCJpY29uX2lkXCI6IFwiMjQ5MjMzMzVcIixcbiAgICAgIFwibmFtZVwiOiBcImV5ZS1maWxsZWRcIixcbiAgICAgIFwiZm9udF9jbGFzc1wiOiBcImV5ZS1maWxsZWRcIixcbiAgICAgIFwidW5pY29kZVwiOiBcImU2NmFcIixcbiAgICAgIFwidW5pY29kZV9kZWNpbWFsXCI6IDU4OTg2XG4gICAgfSxcbiAgICB7XG4gICAgICBcImljb25faWRcIjogXCIyNDkyMzMzNlwiLFxuICAgICAgXCJuYW1lXCI6IFwiZXllLXNsYXNoXCIsXG4gICAgICBcImZvbnRfY2xhc3NcIjogXCJleWUtc2xhc2hcIixcbiAgICAgIFwidW5pY29kZVwiOiBcImU2YjNcIixcbiAgICAgIFwidW5pY29kZV9kZWNpbWFsXCI6IDU5MDU5XG4gICAgfSxcbiAgICB7XG4gICAgICBcImljb25faWRcIjogXCIyNDkyMzMzN1wiLFxuICAgICAgXCJuYW1lXCI6IFwiZXllLXNsYXNoLWZpbGxlZFwiLFxuICAgICAgXCJmb250X2NsYXNzXCI6IFwiZXllLXNsYXNoLWZpbGxlZFwiLFxuICAgICAgXCJ1bmljb2RlXCI6IFwiZTZiNFwiLFxuICAgICAgXCJ1bmljb2RlX2RlY2ltYWxcIjogNTkwNjBcbiAgICB9LFxuICAgIHtcbiAgICAgIFwiaWNvbl9pZFwiOiBcIjI0OTIzMzA1XCIsXG4gICAgICBcIm5hbWVcIjogXCJpbmZvLWZpbGxlZFwiLFxuICAgICAgXCJmb250X2NsYXNzXCI6IFwiaW5mby1maWxsZWRcIixcbiAgICAgIFwidW5pY29kZVwiOiBcImU2NDlcIixcbiAgICAgIFwidW5pY29kZV9kZWNpbWFsXCI6IDU4OTUzXG4gICAgfSxcbiAgICB7XG4gICAgICBcImljb25faWRcIjogXCIyNDkyMzI5OVwiLFxuICAgICAgXCJuYW1lXCI6IFwicmVsb2FkLTAxXCIsXG4gICAgICBcImZvbnRfY2xhc3NcIjogXCJyZWxvYWRcIixcbiAgICAgIFwidW5pY29kZVwiOiBcImU2YjJcIixcbiAgICAgIFwidW5pY29kZV9kZWNpbWFsXCI6IDU5MDU4XG4gICAgfSxcbiAgICB7XG4gICAgICBcImljb25faWRcIjogXCIyNDkyMzE5NVwiLFxuICAgICAgXCJuYW1lXCI6IFwibWljX3NsYXNoX2ZpbGxcIixcbiAgICAgIFwiZm9udF9jbGFzc1wiOiBcIm1pY29mZi1maWxsZWRcIixcbiAgICAgIFwidW5pY29kZVwiOiBcImU2YjBcIixcbiAgICAgIFwidW5pY29kZV9kZWNpbWFsXCI6IDU5MDU2XG4gICAgfSxcbiAgICB7XG4gICAgICBcImljb25faWRcIjogXCIyNDkyMzE2NVwiLFxuICAgICAgXCJuYW1lXCI6IFwibWFwLXBpbi1lbGxpcHNlXCIsXG4gICAgICBcImZvbnRfY2xhc3NcIjogXCJtYXAtcGluLWVsbGlwc2VcIixcbiAgICAgIFwidW5pY29kZVwiOiBcImU2YWNcIixcbiAgICAgIFwidW5pY29kZV9kZWNpbWFsXCI6IDU5MDUyXG4gICAgfSxcbiAgICB7XG4gICAgICBcImljb25faWRcIjogXCIyNDkyMzE2NlwiLFxuICAgICAgXCJuYW1lXCI6IFwibWFwLXBpblwiLFxuICAgICAgXCJmb250X2NsYXNzXCI6IFwibWFwLXBpblwiLFxuICAgICAgXCJ1bmljb2RlXCI6IFwiZTZhZFwiLFxuICAgICAgXCJ1bmljb2RlX2RlY2ltYWxcIjogNTkwNTNcbiAgICB9LFxuICAgIHtcbiAgICAgIFwiaWNvbl9pZFwiOiBcIjI0OTIzMTY3XCIsXG4gICAgICBcIm5hbWVcIjogXCJsb2NhdGlvblwiLFxuICAgICAgXCJmb250X2NsYXNzXCI6IFwibG9jYXRpb25cIixcbiAgICAgIFwidW5pY29kZVwiOiBcImU2YWVcIixcbiAgICAgIFwidW5pY29kZV9kZWNpbWFsXCI6IDU5MDU0XG4gICAgfSxcbiAgICB7XG4gICAgICBcImljb25faWRcIjogXCIyNDkyMzA2NFwiLFxuICAgICAgXCJuYW1lXCI6IFwic3RhcmhhbGZcIixcbiAgICAgIFwiZm9udF9jbGFzc1wiOiBcInN0YXJoYWxmXCIsXG4gICAgICBcInVuaWNvZGVcIjogXCJlNjgzXCIsXG4gICAgICBcInVuaWNvZGVfZGVjaW1hbFwiOiA1OTAxMVxuICAgIH0sXG4gICAge1xuICAgICAgXCJpY29uX2lkXCI6IFwiMjQ5MjMwNjVcIixcbiAgICAgIFwibmFtZVwiOiBcInN0YXJcIixcbiAgICAgIFwiZm9udF9jbGFzc1wiOiBcInN0YXJcIixcbiAgICAgIFwidW5pY29kZVwiOiBcImU2ODhcIixcbiAgICAgIFwidW5pY29kZV9kZWNpbWFsXCI6IDU5MDE2XG4gICAgfSxcbiAgICB7XG4gICAgICBcImljb25faWRcIjogXCIyNDkyMzA2NlwiLFxuICAgICAgXCJuYW1lXCI6IFwic3Rhci1maWxsZWRcIixcbiAgICAgIFwiZm9udF9jbGFzc1wiOiBcInN0YXItZmlsbGVkXCIsXG4gICAgICBcInVuaWNvZGVcIjogXCJlNjhmXCIsXG4gICAgICBcInVuaWNvZGVfZGVjaW1hbFwiOiA1OTAyM1xuICAgIH0sXG4gICAge1xuICAgICAgXCJpY29uX2lkXCI6IFwiMjQ4OTk2NDZcIixcbiAgICAgIFwibmFtZVwiOiBcImEtcmlsaWRha2FcIixcbiAgICAgIFwiZm9udF9jbGFzc1wiOiBcImNhbGVuZGFyXCIsXG4gICAgICBcInVuaWNvZGVcIjogXCJlNmEwXCIsXG4gICAgICBcInVuaWNvZGVfZGVjaW1hbFwiOiA1OTA0MFxuICAgIH0sXG4gICAge1xuICAgICAgXCJpY29uX2lkXCI6IFwiMjQ4OTk2NDdcIixcbiAgICAgIFwibmFtZVwiOiBcImZpcmVcIixcbiAgICAgIFwiZm9udF9jbGFzc1wiOiBcImZpcmVcIixcbiAgICAgIFwidW5pY29kZVwiOiBcImU2YTFcIixcbiAgICAgIFwidW5pY29kZV9kZWNpbWFsXCI6IDU5MDQxXG4gICAgfSxcbiAgICB7XG4gICAgICBcImljb25faWRcIjogXCIyNDg5OTY0OFwiLFxuICAgICAgXCJuYW1lXCI6IFwicGFpaGFuZ2JhbmdcIixcbiAgICAgIFwiZm9udF9jbGFzc1wiOiBcIm1lZGFsXCIsXG4gICAgICBcInVuaWNvZGVcIjogXCJlNmEyXCIsXG4gICAgICBcInVuaWNvZGVfZGVjaW1hbFwiOiA1OTA0MlxuICAgIH0sXG4gICAge1xuICAgICAgXCJpY29uX2lkXCI6IFwiMjQ4OTk2NDlcIixcbiAgICAgIFwibmFtZVwiOiBcImZvbnRcIixcbiAgICAgIFwiZm9udF9jbGFzc1wiOiBcImZvbnRcIixcbiAgICAgIFwidW5pY29kZVwiOiBcImU2YTNcIixcbiAgICAgIFwidW5pY29kZV9kZWNpbWFsXCI6IDU5MDQzXG4gICAgfSxcbiAgICB7XG4gICAgICBcImljb25faWRcIjogXCIyNDg5OTY1MFwiLFxuICAgICAgXCJuYW1lXCI6IFwiZ2lmdFwiLFxuICAgICAgXCJmb250X2NsYXNzXCI6IFwiZ2lmdFwiLFxuICAgICAgXCJ1bmljb2RlXCI6IFwiZTZhNFwiLFxuICAgICAgXCJ1bmljb2RlX2RlY2ltYWxcIjogNTkwNDRcbiAgICB9LFxuICAgIHtcbiAgICAgIFwiaWNvbl9pZFwiOiBcIjI0ODk5NjUxXCIsXG4gICAgICBcIm5hbWVcIjogXCJsaW5rXCIsXG4gICAgICBcImZvbnRfY2xhc3NcIjogXCJsaW5rXCIsXG4gICAgICBcInVuaWNvZGVcIjogXCJlNmE1XCIsXG4gICAgICBcInVuaWNvZGVfZGVjaW1hbFwiOiA1OTA0NVxuICAgIH0sXG4gICAge1xuICAgICAgXCJpY29uX2lkXCI6IFwiMjQ4OTk2NTJcIixcbiAgICAgIFwibmFtZVwiOiBcIm5vdGlmaWNhdGlvblwiLFxuICAgICAgXCJmb250X2NsYXNzXCI6IFwibm90aWZpY2F0aW9uXCIsXG4gICAgICBcInVuaWNvZGVcIjogXCJlNmE2XCIsXG4gICAgICBcInVuaWNvZGVfZGVjaW1hbFwiOiA1OTA0NlxuICAgIH0sXG4gICAge1xuICAgICAgXCJpY29uX2lkXCI6IFwiMjQ4OTk2NTNcIixcbiAgICAgIFwibmFtZVwiOiBcInN0YWZmXCIsXG4gICAgICBcImZvbnRfY2xhc3NcIjogXCJzdGFmZlwiLFxuICAgICAgXCJ1bmljb2RlXCI6IFwiZTZhN1wiLFxuICAgICAgXCJ1bmljb2RlX2RlY2ltYWxcIjogNTkwNDdcbiAgICB9LFxuICAgIHtcbiAgICAgIFwiaWNvbl9pZFwiOiBcIjI0ODk5NjU0XCIsXG4gICAgICBcIm5hbWVcIjogXCJWSVBcIixcbiAgICAgIFwiZm9udF9jbGFzc1wiOiBcInZpcFwiLFxuICAgICAgXCJ1bmljb2RlXCI6IFwiZTZhOFwiLFxuICAgICAgXCJ1bmljb2RlX2RlY2ltYWxcIjogNTkwNDhcbiAgICB9LFxuICAgIHtcbiAgICAgIFwiaWNvbl9pZFwiOiBcIjI0ODk5NjU1XCIsXG4gICAgICBcIm5hbWVcIjogXCJmb2xkZXJfYWRkXCIsXG4gICAgICBcImZvbnRfY2xhc3NcIjogXCJmb2xkZXItYWRkXCIsXG4gICAgICBcInVuaWNvZGVcIjogXCJlNmE5XCIsXG4gICAgICBcInVuaWNvZGVfZGVjaW1hbFwiOiA1OTA0OVxuICAgIH0sXG4gICAge1xuICAgICAgXCJpY29uX2lkXCI6IFwiMjQ4OTk2NTZcIixcbiAgICAgIFwibmFtZVwiOiBcInR1bmVcIixcbiAgICAgIFwiZm9udF9jbGFzc1wiOiBcInR1bmVcIixcbiAgICAgIFwidW5pY29kZVwiOiBcImU2YWFcIixcbiAgICAgIFwidW5pY29kZV9kZWNpbWFsXCI6IDU5MDUwXG4gICAgfSxcbiAgICB7XG4gICAgICBcImljb25faWRcIjogXCIyNDg5OTY1N1wiLFxuICAgICAgXCJuYW1lXCI6IFwic2hpbWluZ3JlbnpoZW5nXCIsXG4gICAgICBcImZvbnRfY2xhc3NcIjogXCJhdXRoXCIsXG4gICAgICBcInVuaWNvZGVcIjogXCJlNmFiXCIsXG4gICAgICBcInVuaWNvZGVfZGVjaW1hbFwiOiA1OTA1MVxuICAgIH0sXG4gICAge1xuICAgICAgXCJpY29uX2lkXCI6IFwiMjQ4OTk1NjVcIixcbiAgICAgIFwibmFtZVwiOiBcInBlcnNvblwiLFxuICAgICAgXCJmb250X2NsYXNzXCI6IFwicGVyc29uXCIsXG4gICAgICBcInVuaWNvZGVcIjogXCJlNjk5XCIsXG4gICAgICBcInVuaWNvZGVfZGVjaW1hbFwiOiA1OTAzM1xuICAgIH0sXG4gICAge1xuICAgICAgXCJpY29uX2lkXCI6IFwiMjQ4OTk1NjZcIixcbiAgICAgIFwibmFtZVwiOiBcImVtYWlsLWZpbGxlZFwiLFxuICAgICAgXCJmb250X2NsYXNzXCI6IFwiZW1haWwtZmlsbGVkXCIsXG4gICAgICBcInVuaWNvZGVcIjogXCJlNjlhXCIsXG4gICAgICBcInVuaWNvZGVfZGVjaW1hbFwiOiA1OTAzNFxuICAgIH0sXG4gICAge1xuICAgICAgXCJpY29uX2lkXCI6IFwiMjQ4OTk1NjdcIixcbiAgICAgIFwibmFtZVwiOiBcInBob25lLWZpbGxlZFwiLFxuICAgICAgXCJmb250X2NsYXNzXCI6IFwicGhvbmUtZmlsbGVkXCIsXG4gICAgICBcInVuaWNvZGVcIjogXCJlNjliXCIsXG4gICAgICBcInVuaWNvZGVfZGVjaW1hbFwiOiA1OTAzNVxuICAgIH0sXG4gICAge1xuICAgICAgXCJpY29uX2lkXCI6IFwiMjQ4OTk1NjhcIixcbiAgICAgIFwibmFtZVwiOiBcInBob25lXCIsXG4gICAgICBcImZvbnRfY2xhc3NcIjogXCJwaG9uZVwiLFxuICAgICAgXCJ1bmljb2RlXCI6IFwiZTY5Y1wiLFxuICAgICAgXCJ1bmljb2RlX2RlY2ltYWxcIjogNTkwMzZcbiAgICB9LFxuICAgIHtcbiAgICAgIFwiaWNvbl9pZFwiOiBcIjI0ODk5NTcwXCIsXG4gICAgICBcIm5hbWVcIjogXCJlbWFpbFwiLFxuICAgICAgXCJmb250X2NsYXNzXCI6IFwiZW1haWxcIixcbiAgICAgIFwidW5pY29kZVwiOiBcImU2OWVcIixcbiAgICAgIFwidW5pY29kZV9kZWNpbWFsXCI6IDU5MDM4XG4gICAgfSxcbiAgICB7XG4gICAgICBcImljb25faWRcIjogXCIyNDg5OTU3MVwiLFxuICAgICAgXCJuYW1lXCI6IFwicGVyc29uYWRkXCIsXG4gICAgICBcImZvbnRfY2xhc3NcIjogXCJwZXJzb25hZGRcIixcbiAgICAgIFwidW5pY29kZVwiOiBcImU2OWZcIixcbiAgICAgIFwidW5pY29kZV9kZWNpbWFsXCI6IDU5MDM5XG4gICAgfSxcbiAgICB7XG4gICAgICBcImljb25faWRcIjogXCIyNDg5OTU1OFwiLFxuICAgICAgXCJuYW1lXCI6IFwiY2hhdGJveGVzLWZpbGxlZFwiLFxuICAgICAgXCJmb250X2NsYXNzXCI6IFwiY2hhdGJveGVzLWZpbGxlZFwiLFxuICAgICAgXCJ1bmljb2RlXCI6IFwiZTY5MlwiLFxuICAgICAgXCJ1bmljb2RlX2RlY2ltYWxcIjogNTkwMjZcbiAgICB9LFxuICAgIHtcbiAgICAgIFwiaWNvbl9pZFwiOiBcIjI0ODk5NTU5XCIsXG4gICAgICBcIm5hbWVcIjogXCJjb250YWN0XCIsXG4gICAgICBcImZvbnRfY2xhc3NcIjogXCJjb250YWN0XCIsXG4gICAgICBcInVuaWNvZGVcIjogXCJlNjkzXCIsXG4gICAgICBcInVuaWNvZGVfZGVjaW1hbFwiOiA1OTAyN1xuICAgIH0sXG4gICAge1xuICAgICAgXCJpY29uX2lkXCI6IFwiMjQ4OTk1NjBcIixcbiAgICAgIFwibmFtZVwiOiBcImNoYXRidWJibGUtZmlsbGVkXCIsXG4gICAgICBcImZvbnRfY2xhc3NcIjogXCJjaGF0YnViYmxlLWZpbGxlZFwiLFxuICAgICAgXCJ1bmljb2RlXCI6IFwiZTY5NFwiLFxuICAgICAgXCJ1bmljb2RlX2RlY2ltYWxcIjogNTkwMjhcbiAgICB9LFxuICAgIHtcbiAgICAgIFwiaWNvbl9pZFwiOiBcIjI0ODk5NTYxXCIsXG4gICAgICBcIm5hbWVcIjogXCJjb250YWN0LWZpbGxlZFwiLFxuICAgICAgXCJmb250X2NsYXNzXCI6IFwiY29udGFjdC1maWxsZWRcIixcbiAgICAgIFwidW5pY29kZVwiOiBcImU2OTVcIixcbiAgICAgIFwidW5pY29kZV9kZWNpbWFsXCI6IDU5MDI5XG4gICAgfSxcbiAgICB7XG4gICAgICBcImljb25faWRcIjogXCIyNDg5OTU2MlwiLFxuICAgICAgXCJuYW1lXCI6IFwiY2hhdGJveGVzXCIsXG4gICAgICBcImZvbnRfY2xhc3NcIjogXCJjaGF0Ym94ZXNcIixcbiAgICAgIFwidW5pY29kZVwiOiBcImU2OTZcIixcbiAgICAgIFwidW5pY29kZV9kZWNpbWFsXCI6IDU5MDMwXG4gICAgfSxcbiAgICB7XG4gICAgICBcImljb25faWRcIjogXCIyNDg5OTU2M1wiLFxuICAgICAgXCJuYW1lXCI6IFwiY2hhdGJ1YmJsZVwiLFxuICAgICAgXCJmb250X2NsYXNzXCI6IFwiY2hhdGJ1YmJsZVwiLFxuICAgICAgXCJ1bmljb2RlXCI6IFwiZTY5N1wiLFxuICAgICAgXCJ1bmljb2RlX2RlY2ltYWxcIjogNTkwMzFcbiAgICB9LFxuICAgIHtcbiAgICAgIFwiaWNvbl9pZFwiOiBcIjI0ODgxMjkwXCIsXG4gICAgICBcIm5hbWVcIjogXCJ1cGxvYWQtZmlsbGVkXCIsXG4gICAgICBcImZvbnRfY2xhc3NcIjogXCJ1cGxvYWQtZmlsbGVkXCIsXG4gICAgICBcInVuaWNvZGVcIjogXCJlNjhlXCIsXG4gICAgICBcInVuaWNvZGVfZGVjaW1hbFwiOiA1OTAyMlxuICAgIH0sXG4gICAge1xuICAgICAgXCJpY29uX2lkXCI6IFwiMjQ4ODEyOTJcIixcbiAgICAgIFwibmFtZVwiOiBcInVwbG9hZFwiLFxuICAgICAgXCJmb250X2NsYXNzXCI6IFwidXBsb2FkXCIsXG4gICAgICBcInVuaWNvZGVcIjogXCJlNjkwXCIsXG4gICAgICBcInVuaWNvZGVfZGVjaW1hbFwiOiA1OTAyNFxuICAgIH0sXG4gICAge1xuICAgICAgXCJpY29uX2lkXCI6IFwiMjQ4ODEyOTNcIixcbiAgICAgIFwibmFtZVwiOiBcIndlaXhpblwiLFxuICAgICAgXCJmb250X2NsYXNzXCI6IFwid2VpeGluXCIsXG4gICAgICBcInVuaWNvZGVcIjogXCJlNjkxXCIsXG4gICAgICBcInVuaWNvZGVfZGVjaW1hbFwiOiA1OTAyNVxuICAgIH0sXG4gICAge1xuICAgICAgXCJpY29uX2lkXCI6IFwiMjQ4ODEyNzRcIixcbiAgICAgIFwibmFtZVwiOiBcImNvbXBvc2VcIixcbiAgICAgIFwiZm9udF9jbGFzc1wiOiBcImNvbXBvc2VcIixcbiAgICAgIFwidW5pY29kZVwiOiBcImU2N2ZcIixcbiAgICAgIFwidW5pY29kZV9kZWNpbWFsXCI6IDU5MDA3XG4gICAgfSxcbiAgICB7XG4gICAgICBcImljb25faWRcIjogXCIyNDg4MTI3NVwiLFxuICAgICAgXCJuYW1lXCI6IFwicXFcIixcbiAgICAgIFwiZm9udF9jbGFzc1wiOiBcInFxXCIsXG4gICAgICBcInVuaWNvZGVcIjogXCJlNjgwXCIsXG4gICAgICBcInVuaWNvZGVfZGVjaW1hbFwiOiA1OTAwOFxuICAgIH0sXG4gICAge1xuICAgICAgXCJpY29uX2lkXCI6IFwiMjQ4ODEyNzZcIixcbiAgICAgIFwibmFtZVwiOiBcImRvd25sb2FkLWZpbGxlZFwiLFxuICAgICAgXCJmb250X2NsYXNzXCI6IFwiZG93bmxvYWQtZmlsbGVkXCIsXG4gICAgICBcInVuaWNvZGVcIjogXCJlNjgxXCIsXG4gICAgICBcInVuaWNvZGVfZGVjaW1hbFwiOiA1OTAwOVxuICAgIH0sXG4gICAge1xuICAgICAgXCJpY29uX2lkXCI6IFwiMjQ4ODEyNzdcIixcbiAgICAgIFwibmFtZVwiOiBcInBlbmd5b3VxdWFuXCIsXG4gICAgICBcImZvbnRfY2xhc3NcIjogXCJweXFcIixcbiAgICAgIFwidW5pY29kZVwiOiBcImU2ODJcIixcbiAgICAgIFwidW5pY29kZV9kZWNpbWFsXCI6IDU5MDEwXG4gICAgfSxcbiAgICB7XG4gICAgICBcImljb25faWRcIjogXCIyNDg4MTI3OVwiLFxuICAgICAgXCJuYW1lXCI6IFwic291bmRcIixcbiAgICAgIFwiZm9udF9jbGFzc1wiOiBcInNvdW5kXCIsXG4gICAgICBcInVuaWNvZGVcIjogXCJlNjg0XCIsXG4gICAgICBcInVuaWNvZGVfZGVjaW1hbFwiOiA1OTAxMlxuICAgIH0sXG4gICAge1xuICAgICAgXCJpY29uX2lkXCI6IFwiMjQ4ODEyODBcIixcbiAgICAgIFwibmFtZVwiOiBcInRyYXNoLWZpbGxlZFwiLFxuICAgICAgXCJmb250X2NsYXNzXCI6IFwidHJhc2gtZmlsbGVkXCIsXG4gICAgICBcInVuaWNvZGVcIjogXCJlNjg1XCIsXG4gICAgICBcInVuaWNvZGVfZGVjaW1hbFwiOiA1OTAxM1xuICAgIH0sXG4gICAge1xuICAgICAgXCJpY29uX2lkXCI6IFwiMjQ4ODEyODFcIixcbiAgICAgIFwibmFtZVwiOiBcInNvdW5kLWZpbGxlZFwiLFxuICAgICAgXCJmb250X2NsYXNzXCI6IFwic291bmQtZmlsbGVkXCIsXG4gICAgICBcInVuaWNvZGVcIjogXCJlNjg2XCIsXG4gICAgICBcInVuaWNvZGVfZGVjaW1hbFwiOiA1OTAxNFxuICAgIH0sXG4gICAge1xuICAgICAgXCJpY29uX2lkXCI6IFwiMjQ4ODEyODJcIixcbiAgICAgIFwibmFtZVwiOiBcInRyYXNoXCIsXG4gICAgICBcImZvbnRfY2xhc3NcIjogXCJ0cmFzaFwiLFxuICAgICAgXCJ1bmljb2RlXCI6IFwiZTY4N1wiLFxuICAgICAgXCJ1bmljb2RlX2RlY2ltYWxcIjogNTkwMTVcbiAgICB9LFxuICAgIHtcbiAgICAgIFwiaWNvbl9pZFwiOiBcIjI0ODgxMjg0XCIsXG4gICAgICBcIm5hbWVcIjogXCJ2aWRlb2NhbS1maWxsZWRcIixcbiAgICAgIFwiZm9udF9jbGFzc1wiOiBcInZpZGVvY2FtLWZpbGxlZFwiLFxuICAgICAgXCJ1bmljb2RlXCI6IFwiZTY4OVwiLFxuICAgICAgXCJ1bmljb2RlX2RlY2ltYWxcIjogNTkwMTdcbiAgICB9LFxuICAgIHtcbiAgICAgIFwiaWNvbl9pZFwiOiBcIjI0ODgxMjg1XCIsXG4gICAgICBcIm5hbWVcIjogXCJzcGlubmVyLWN5Y2xlXCIsXG4gICAgICBcImZvbnRfY2xhc3NcIjogXCJzcGlubmVyLWN5Y2xlXCIsXG4gICAgICBcInVuaWNvZGVcIjogXCJlNjhhXCIsXG4gICAgICBcInVuaWNvZGVfZGVjaW1hbFwiOiA1OTAxOFxuICAgIH0sXG4gICAge1xuICAgICAgXCJpY29uX2lkXCI6IFwiMjQ4ODEyODZcIixcbiAgICAgIFwibmFtZVwiOiBcIndlaWJvXCIsXG4gICAgICBcImZvbnRfY2xhc3NcIjogXCJ3ZWlib1wiLFxuICAgICAgXCJ1bmljb2RlXCI6IFwiZTY4YlwiLFxuICAgICAgXCJ1bmljb2RlX2RlY2ltYWxcIjogNTkwMTlcbiAgICB9LFxuICAgIHtcbiAgICAgIFwiaWNvbl9pZFwiOiBcIjI0ODgxMjg4XCIsXG4gICAgICBcIm5hbWVcIjogXCJ2aWRlb2NhbVwiLFxuICAgICAgXCJmb250X2NsYXNzXCI6IFwidmlkZW9jYW1cIixcbiAgICAgIFwidW5pY29kZVwiOiBcImU2OGNcIixcbiAgICAgIFwidW5pY29kZV9kZWNpbWFsXCI6IDU5MDIwXG4gICAgfSxcbiAgICB7XG4gICAgICBcImljb25faWRcIjogXCIyNDg4MTI4OVwiLFxuICAgICAgXCJuYW1lXCI6IFwiZG93bmxvYWRcIixcbiAgICAgIFwiZm9udF9jbGFzc1wiOiBcImRvd25sb2FkXCIsXG4gICAgICBcInVuaWNvZGVcIjogXCJlNjhkXCIsXG4gICAgICBcInVuaWNvZGVfZGVjaW1hbFwiOiA1OTAyMVxuICAgIH0sXG4gICAge1xuICAgICAgXCJpY29uX2lkXCI6IFwiMjQ4Nzk2MDFcIixcbiAgICAgIFwibmFtZVwiOiBcImhlbHBcIixcbiAgICAgIFwiZm9udF9jbGFzc1wiOiBcImhlbHBcIixcbiAgICAgIFwidW5pY29kZVwiOiBcImU2NzlcIixcbiAgICAgIFwidW5pY29kZV9kZWNpbWFsXCI6IDU5MDAxXG4gICAgfSxcbiAgICB7XG4gICAgICBcImljb25faWRcIjogXCIyNDg3OTYwMlwiLFxuICAgICAgXCJuYW1lXCI6IFwibmF2aWdhdGUtZmlsbGVkXCIsXG4gICAgICBcImZvbnRfY2xhc3NcIjogXCJuYXZpZ2F0ZS1maWxsZWRcIixcbiAgICAgIFwidW5pY29kZVwiOiBcImU2N2FcIixcbiAgICAgIFwidW5pY29kZV9kZWNpbWFsXCI6IDU5MDAyXG4gICAgfSxcbiAgICB7XG4gICAgICBcImljb25faWRcIjogXCIyNDg3OTYwM1wiLFxuICAgICAgXCJuYW1lXCI6IFwicGx1c2VtcHR5XCIsXG4gICAgICBcImZvbnRfY2xhc3NcIjogXCJwbHVzZW1wdHlcIixcbiAgICAgIFwidW5pY29kZVwiOiBcImU2N2JcIixcbiAgICAgIFwidW5pY29kZV9kZWNpbWFsXCI6IDU5MDAzXG4gICAgfSxcbiAgICB7XG4gICAgICBcImljb25faWRcIjogXCIyNDg3OTYwNFwiLFxuICAgICAgXCJuYW1lXCI6IFwic21hbGxjaXJjbGVcIixcbiAgICAgIFwiZm9udF9jbGFzc1wiOiBcInNtYWxsY2lyY2xlXCIsXG4gICAgICBcInVuaWNvZGVcIjogXCJlNjdjXCIsXG4gICAgICBcInVuaWNvZGVfZGVjaW1hbFwiOiA1OTAwNFxuICAgIH0sXG4gICAge1xuICAgICAgXCJpY29uX2lkXCI6IFwiMjQ4Nzk2MDVcIixcbiAgICAgIFwibmFtZVwiOiBcIm1pbnVzLWZpbGxlZFwiLFxuICAgICAgXCJmb250X2NsYXNzXCI6IFwibWludXMtZmlsbGVkXCIsXG4gICAgICBcInVuaWNvZGVcIjogXCJlNjdkXCIsXG4gICAgICBcInVuaWNvZGVfZGVjaW1hbFwiOiA1OTAwNVxuICAgIH0sXG4gICAge1xuICAgICAgXCJpY29uX2lkXCI6IFwiMjQ4Nzk2MDZcIixcbiAgICAgIFwibmFtZVwiOiBcIm1pY29mZlwiLFxuICAgICAgXCJmb250X2NsYXNzXCI6IFwibWljb2ZmXCIsXG4gICAgICBcInVuaWNvZGVcIjogXCJlNjdlXCIsXG4gICAgICBcInVuaWNvZGVfZGVjaW1hbFwiOiA1OTAwNlxuICAgIH0sXG4gICAge1xuICAgICAgXCJpY29uX2lkXCI6IFwiMjQ4Nzk1ODhcIixcbiAgICAgIFwibmFtZVwiOiBcImNsb3NlZW1wdHlcIixcbiAgICAgIFwiZm9udF9jbGFzc1wiOiBcImNsb3NlZW1wdHlcIixcbiAgICAgIFwidW5pY29kZVwiOiBcImU2NmNcIixcbiAgICAgIFwidW5pY29kZV9kZWNpbWFsXCI6IDU4OTg4XG4gICAgfSxcbiAgICB7XG4gICAgICBcImljb25faWRcIjogXCIyNDg3OTU4OVwiLFxuICAgICAgXCJuYW1lXCI6IFwiY2xlYXJcIixcbiAgICAgIFwiZm9udF9jbGFzc1wiOiBcImNsZWFyXCIsXG4gICAgICBcInVuaWNvZGVcIjogXCJlNjZkXCIsXG4gICAgICBcInVuaWNvZGVfZGVjaW1hbFwiOiA1ODk4OVxuICAgIH0sXG4gICAge1xuICAgICAgXCJpY29uX2lkXCI6IFwiMjQ4Nzk1OTBcIixcbiAgICAgIFwibmFtZVwiOiBcIm5hdmlnYXRlXCIsXG4gICAgICBcImZvbnRfY2xhc3NcIjogXCJuYXZpZ2F0ZVwiLFxuICAgICAgXCJ1bmljb2RlXCI6IFwiZTY2ZVwiLFxuICAgICAgXCJ1bmljb2RlX2RlY2ltYWxcIjogNTg5OTBcbiAgICB9LFxuICAgIHtcbiAgICAgIFwiaWNvbl9pZFwiOiBcIjI0ODc5NTkxXCIsXG4gICAgICBcIm5hbWVcIjogXCJtaW51c1wiLFxuICAgICAgXCJmb250X2NsYXNzXCI6IFwibWludXNcIixcbiAgICAgIFwidW5pY29kZVwiOiBcImU2NmZcIixcbiAgICAgIFwidW5pY29kZV9kZWNpbWFsXCI6IDU4OTkxXG4gICAgfSxcbiAgICB7XG4gICAgICBcImljb25faWRcIjogXCIyNDg3OTU5MlwiLFxuICAgICAgXCJuYW1lXCI6IFwiaW1hZ2VcIixcbiAgICAgIFwiZm9udF9jbGFzc1wiOiBcImltYWdlXCIsXG4gICAgICBcInVuaWNvZGVcIjogXCJlNjcwXCIsXG4gICAgICBcInVuaWNvZGVfZGVjaW1hbFwiOiA1ODk5MlxuICAgIH0sXG4gICAge1xuICAgICAgXCJpY29uX2lkXCI6IFwiMjQ4Nzk1OTNcIixcbiAgICAgIFwibmFtZVwiOiBcIm1pY1wiLFxuICAgICAgXCJmb250X2NsYXNzXCI6IFwibWljXCIsXG4gICAgICBcInVuaWNvZGVcIjogXCJlNjcxXCIsXG4gICAgICBcInVuaWNvZGVfZGVjaW1hbFwiOiA1ODk5M1xuICAgIH0sXG4gICAge1xuICAgICAgXCJpY29uX2lkXCI6IFwiMjQ4Nzk1OTRcIixcbiAgICAgIFwibmFtZVwiOiBcInBhcGVycGxhbmVcIixcbiAgICAgIFwiZm9udF9jbGFzc1wiOiBcInBhcGVycGxhbmVcIixcbiAgICAgIFwidW5pY29kZVwiOiBcImU2NzJcIixcbiAgICAgIFwidW5pY29kZV9kZWNpbWFsXCI6IDU4OTk0XG4gICAgfSxcbiAgICB7XG4gICAgICBcImljb25faWRcIjogXCIyNDg3OTU5NVwiLFxuICAgICAgXCJuYW1lXCI6IFwiY2xvc2VcIixcbiAgICAgIFwiZm9udF9jbGFzc1wiOiBcImNsb3NlXCIsXG4gICAgICBcInVuaWNvZGVcIjogXCJlNjczXCIsXG4gICAgICBcInVuaWNvZGVfZGVjaW1hbFwiOiA1ODk5NVxuICAgIH0sXG4gICAge1xuICAgICAgXCJpY29uX2lkXCI6IFwiMjQ4Nzk1OTZcIixcbiAgICAgIFwibmFtZVwiOiBcImhlbHAtZmlsbGVkXCIsXG4gICAgICBcImZvbnRfY2xhc3NcIjogXCJoZWxwLWZpbGxlZFwiLFxuICAgICAgXCJ1bmljb2RlXCI6IFwiZTY3NFwiLFxuICAgICAgXCJ1bmljb2RlX2RlY2ltYWxcIjogNTg5OTZcbiAgICB9LFxuICAgIHtcbiAgICAgIFwiaWNvbl9pZFwiOiBcIjI0ODc5NTk3XCIsXG4gICAgICBcIm5hbWVcIjogXCJwbHVzLWZpbGxlZFwiLFxuICAgICAgXCJmb250X2NsYXNzXCI6IFwicGFwZXJwbGFuZS1maWxsZWRcIixcbiAgICAgIFwidW5pY29kZVwiOiBcImU2NzVcIixcbiAgICAgIFwidW5pY29kZV9kZWNpbWFsXCI6IDU4OTk3XG4gICAgfSxcbiAgICB7XG4gICAgICBcImljb25faWRcIjogXCIyNDg3OTU5OFwiLFxuICAgICAgXCJuYW1lXCI6IFwicGx1c1wiLFxuICAgICAgXCJmb250X2NsYXNzXCI6IFwicGx1c1wiLFxuICAgICAgXCJ1bmljb2RlXCI6IFwiZTY3NlwiLFxuICAgICAgXCJ1bmljb2RlX2RlY2ltYWxcIjogNTg5OThcbiAgICB9LFxuICAgIHtcbiAgICAgIFwiaWNvbl9pZFwiOiBcIjI0ODc5NTk5XCIsXG4gICAgICBcIm5hbWVcIjogXCJtaWMtZmlsbGVkXCIsXG4gICAgICBcImZvbnRfY2xhc3NcIjogXCJtaWMtZmlsbGVkXCIsXG4gICAgICBcInVuaWNvZGVcIjogXCJlNjc3XCIsXG4gICAgICBcInVuaWNvZGVfZGVjaW1hbFwiOiA1ODk5OVxuICAgIH0sXG4gICAge1xuICAgICAgXCJpY29uX2lkXCI6IFwiMjQ4Nzk2MDBcIixcbiAgICAgIFwibmFtZVwiOiBcImltYWdlLWZpbGxlZFwiLFxuICAgICAgXCJmb250X2NsYXNzXCI6IFwiaW1hZ2UtZmlsbGVkXCIsXG4gICAgICBcInVuaWNvZGVcIjogXCJlNjc4XCIsXG4gICAgICBcInVuaWNvZGVfZGVjaW1hbFwiOiA1OTAwMFxuICAgIH0sXG4gICAge1xuICAgICAgXCJpY29uX2lkXCI6IFwiMjQ4NTU5MDBcIixcbiAgICAgIFwibmFtZVwiOiBcImxvY2tlZC1maWxsZWRcIixcbiAgICAgIFwiZm9udF9jbGFzc1wiOiBcImxvY2tlZC1maWxsZWRcIixcbiAgICAgIFwidW5pY29kZVwiOiBcImU2NjhcIixcbiAgICAgIFwidW5pY29kZV9kZWNpbWFsXCI6IDU4OTg0XG4gICAgfSxcbiAgICB7XG4gICAgICBcImljb25faWRcIjogXCIyNDg1NTkwMVwiLFxuICAgICAgXCJuYW1lXCI6IFwiaW5mb1wiLFxuICAgICAgXCJmb250X2NsYXNzXCI6IFwiaW5mb1wiLFxuICAgICAgXCJ1bmljb2RlXCI6IFwiZTY2OVwiLFxuICAgICAgXCJ1bmljb2RlX2RlY2ltYWxcIjogNTg5ODVcbiAgICB9LFxuICAgIHtcbiAgICAgIFwiaWNvbl9pZFwiOiBcIjI0ODU1OTAzXCIsXG4gICAgICBcIm5hbWVcIjogXCJsb2NrZWRcIixcbiAgICAgIFwiZm9udF9jbGFzc1wiOiBcImxvY2tlZFwiLFxuICAgICAgXCJ1bmljb2RlXCI6IFwiZTY2YlwiLFxuICAgICAgXCJ1bmljb2RlX2RlY2ltYWxcIjogNTg5ODdcbiAgICB9LFxuICAgIHtcbiAgICAgIFwiaWNvbl9pZFwiOiBcIjI0ODU1ODg0XCIsXG4gICAgICBcIm5hbWVcIjogXCJjYW1lcmEtZmlsbGVkXCIsXG4gICAgICBcImZvbnRfY2xhc3NcIjogXCJjYW1lcmEtZmlsbGVkXCIsXG4gICAgICBcInVuaWNvZGVcIjogXCJlNjU4XCIsXG4gICAgICBcInVuaWNvZGVfZGVjaW1hbFwiOiA1ODk2OFxuICAgIH0sXG4gICAge1xuICAgICAgXCJpY29uX2lkXCI6IFwiMjQ4NTU4ODVcIixcbiAgICAgIFwibmFtZVwiOiBcImNoYXQtZmlsbGVkXCIsXG4gICAgICBcImZvbnRfY2xhc3NcIjogXCJjaGF0LWZpbGxlZFwiLFxuICAgICAgXCJ1bmljb2RlXCI6IFwiZTY1OVwiLFxuICAgICAgXCJ1bmljb2RlX2RlY2ltYWxcIjogNTg5NjlcbiAgICB9LFxuICAgIHtcbiAgICAgIFwiaWNvbl9pZFwiOiBcIjI0ODU1ODg2XCIsXG4gICAgICBcIm5hbWVcIjogXCJjYW1lcmFcIixcbiAgICAgIFwiZm9udF9jbGFzc1wiOiBcImNhbWVyYVwiLFxuICAgICAgXCJ1bmljb2RlXCI6IFwiZTY1YVwiLFxuICAgICAgXCJ1bmljb2RlX2RlY2ltYWxcIjogNTg5NzBcbiAgICB9LFxuICAgIHtcbiAgICAgIFwiaWNvbl9pZFwiOiBcIjI0ODU1ODg3XCIsXG4gICAgICBcIm5hbWVcIjogXCJjaXJjbGVcIixcbiAgICAgIFwiZm9udF9jbGFzc1wiOiBcImNpcmNsZVwiLFxuICAgICAgXCJ1bmljb2RlXCI6IFwiZTY1YlwiLFxuICAgICAgXCJ1bmljb2RlX2RlY2ltYWxcIjogNTg5NzFcbiAgICB9LFxuICAgIHtcbiAgICAgIFwiaWNvbl9pZFwiOiBcIjI0ODU1ODg4XCIsXG4gICAgICBcIm5hbWVcIjogXCJjaGVja21hcmtlbXB0eVwiLFxuICAgICAgXCJmb250X2NsYXNzXCI6IFwiY2hlY2ttYXJrZW1wdHlcIixcbiAgICAgIFwidW5pY29kZVwiOiBcImU2NWNcIixcbiAgICAgIFwidW5pY29kZV9kZWNpbWFsXCI6IDU4OTcyXG4gICAgfSxcbiAgICB7XG4gICAgICBcImljb25faWRcIjogXCIyNDg1NTg4OVwiLFxuICAgICAgXCJuYW1lXCI6IFwiY2hhdFwiLFxuICAgICAgXCJmb250X2NsYXNzXCI6IFwiY2hhdFwiLFxuICAgICAgXCJ1bmljb2RlXCI6IFwiZTY1ZFwiLFxuICAgICAgXCJ1bmljb2RlX2RlY2ltYWxcIjogNTg5NzNcbiAgICB9LFxuICAgIHtcbiAgICAgIFwiaWNvbl9pZFwiOiBcIjI0ODU1ODkwXCIsXG4gICAgICBcIm5hbWVcIjogXCJjaXJjbGUtZmlsbGVkXCIsXG4gICAgICBcImZvbnRfY2xhc3NcIjogXCJjaXJjbGUtZmlsbGVkXCIsXG4gICAgICBcInVuaWNvZGVcIjogXCJlNjVlXCIsXG4gICAgICBcInVuaWNvZGVfZGVjaW1hbFwiOiA1ODk3NFxuICAgIH0sXG4gICAge1xuICAgICAgXCJpY29uX2lkXCI6IFwiMjQ4NTU4OTFcIixcbiAgICAgIFwibmFtZVwiOiBcImZsYWdcIixcbiAgICAgIFwiZm9udF9jbGFzc1wiOiBcImZsYWdcIixcbiAgICAgIFwidW5pY29kZVwiOiBcImU2NWZcIixcbiAgICAgIFwidW5pY29kZV9kZWNpbWFsXCI6IDU4OTc1XG4gICAgfSxcbiAgICB7XG4gICAgICBcImljb25faWRcIjogXCIyNDg1NTg5MlwiLFxuICAgICAgXCJuYW1lXCI6IFwiZmxhZy1maWxsZWRcIixcbiAgICAgIFwiZm9udF9jbGFzc1wiOiBcImZsYWctZmlsbGVkXCIsXG4gICAgICBcInVuaWNvZGVcIjogXCJlNjYwXCIsXG4gICAgICBcInVuaWNvZGVfZGVjaW1hbFwiOiA1ODk3NlxuICAgIH0sXG4gICAge1xuICAgICAgXCJpY29uX2lkXCI6IFwiMjQ4NTU4OTNcIixcbiAgICAgIFwibmFtZVwiOiBcImdlYXItZmlsbGVkXCIsXG4gICAgICBcImZvbnRfY2xhc3NcIjogXCJnZWFyLWZpbGxlZFwiLFxuICAgICAgXCJ1bmljb2RlXCI6IFwiZTY2MVwiLFxuICAgICAgXCJ1bmljb2RlX2RlY2ltYWxcIjogNTg5NzdcbiAgICB9LFxuICAgIHtcbiAgICAgIFwiaWNvbl9pZFwiOiBcIjI0ODU1ODk0XCIsXG4gICAgICBcIm5hbWVcIjogXCJob21lXCIsXG4gICAgICBcImZvbnRfY2xhc3NcIjogXCJob21lXCIsXG4gICAgICBcInVuaWNvZGVcIjogXCJlNjYyXCIsXG4gICAgICBcInVuaWNvZGVfZGVjaW1hbFwiOiA1ODk3OFxuICAgIH0sXG4gICAge1xuICAgICAgXCJpY29uX2lkXCI6IFwiMjQ4NTU4OTVcIixcbiAgICAgIFwibmFtZVwiOiBcImhvbWUtZmlsbGVkXCIsXG4gICAgICBcImZvbnRfY2xhc3NcIjogXCJob21lLWZpbGxlZFwiLFxuICAgICAgXCJ1bmljb2RlXCI6IFwiZTY2M1wiLFxuICAgICAgXCJ1bmljb2RlX2RlY2ltYWxcIjogNTg5NzlcbiAgICB9LFxuICAgIHtcbiAgICAgIFwiaWNvbl9pZFwiOiBcIjI0ODU1ODk2XCIsXG4gICAgICBcIm5hbWVcIjogXCJnZWFyXCIsXG4gICAgICBcImZvbnRfY2xhc3NcIjogXCJnZWFyXCIsXG4gICAgICBcInVuaWNvZGVcIjogXCJlNjY0XCIsXG4gICAgICBcInVuaWNvZGVfZGVjaW1hbFwiOiA1ODk4MFxuICAgIH0sXG4gICAge1xuICAgICAgXCJpY29uX2lkXCI6IFwiMjQ4NTU4OTdcIixcbiAgICAgIFwibmFtZVwiOiBcInNtYWxsY2lyY2xlLWZpbGxlZFwiLFxuICAgICAgXCJmb250X2NsYXNzXCI6IFwic21hbGxjaXJjbGUtZmlsbGVkXCIsXG4gICAgICBcInVuaWNvZGVcIjogXCJlNjY1XCIsXG4gICAgICBcInVuaWNvZGVfZGVjaW1hbFwiOiA1ODk4MVxuICAgIH0sXG4gICAge1xuICAgICAgXCJpY29uX2lkXCI6IFwiMjQ4NTU4OThcIixcbiAgICAgIFwibmFtZVwiOiBcIm1hcC1maWxsZWRcIixcbiAgICAgIFwiZm9udF9jbGFzc1wiOiBcIm1hcC1maWxsZWRcIixcbiAgICAgIFwidW5pY29kZVwiOiBcImU2NjZcIixcbiAgICAgIFwidW5pY29kZV9kZWNpbWFsXCI6IDU4OTgyXG4gICAgfSxcbiAgICB7XG4gICAgICBcImljb25faWRcIjogXCIyNDg1NTg5OVwiLFxuICAgICAgXCJuYW1lXCI6IFwibWFwXCIsXG4gICAgICBcImZvbnRfY2xhc3NcIjogXCJtYXBcIixcbiAgICAgIFwidW5pY29kZVwiOiBcImU2NjdcIixcbiAgICAgIFwidW5pY29kZV9kZWNpbWFsXCI6IDU4OTgzXG4gICAgfSxcbiAgICB7XG4gICAgICBcImljb25faWRcIjogXCIyNDg1NTgyNVwiLFxuICAgICAgXCJuYW1lXCI6IFwicmVmcmVzaC1maWxsZWRcIixcbiAgICAgIFwiZm9udF9jbGFzc1wiOiBcInJlZnJlc2gtZmlsbGVkXCIsXG4gICAgICBcInVuaWNvZGVcIjogXCJlNjU2XCIsXG4gICAgICBcInVuaWNvZGVfZGVjaW1hbFwiOiA1ODk2NlxuICAgIH0sXG4gICAge1xuICAgICAgXCJpY29uX2lkXCI6IFwiMjQ4NTU4MjZcIixcbiAgICAgIFwibmFtZVwiOiBcInJlZnJlc2hcIixcbiAgICAgIFwiZm9udF9jbGFzc1wiOiBcInJlZnJlc2hcIixcbiAgICAgIFwidW5pY29kZVwiOiBcImU2NTdcIixcbiAgICAgIFwidW5pY29kZV9kZWNpbWFsXCI6IDU4OTY3XG4gICAgfSxcbiAgICB7XG4gICAgICBcImljb25faWRcIjogXCIyNDg1NTgwOFwiLFxuICAgICAgXCJuYW1lXCI6IFwiY2xvdWQtdXBsb2FkXCIsXG4gICAgICBcImZvbnRfY2xhc3NcIjogXCJjbG91ZC11cGxvYWRcIixcbiAgICAgIFwidW5pY29kZVwiOiBcImU2NDVcIixcbiAgICAgIFwidW5pY29kZV9kZWNpbWFsXCI6IDU4OTQ5XG4gICAgfSxcbiAgICB7XG4gICAgICBcImljb25faWRcIjogXCIyNDg1NTgwOVwiLFxuICAgICAgXCJuYW1lXCI6IFwiY2xvdWQtZG93bmxvYWQtZmlsbGVkXCIsXG4gICAgICBcImZvbnRfY2xhc3NcIjogXCJjbG91ZC1kb3dubG9hZC1maWxsZWRcIixcbiAgICAgIFwidW5pY29kZVwiOiBcImU2NDZcIixcbiAgICAgIFwidW5pY29kZV9kZWNpbWFsXCI6IDU4OTUwXG4gICAgfSxcbiAgICB7XG4gICAgICBcImljb25faWRcIjogXCIyNDg1NTgxMFwiLFxuICAgICAgXCJuYW1lXCI6IFwiY2xvdWQtZG93bmxvYWRcIixcbiAgICAgIFwiZm9udF9jbGFzc1wiOiBcImNsb3VkLWRvd25sb2FkXCIsXG4gICAgICBcInVuaWNvZGVcIjogXCJlNjQ3XCIsXG4gICAgICBcInVuaWNvZGVfZGVjaW1hbFwiOiA1ODk1MVxuICAgIH0sXG4gICAge1xuICAgICAgXCJpY29uX2lkXCI6IFwiMjQ4NTU4MTFcIixcbiAgICAgIFwibmFtZVwiOiBcImNsb3VkLXVwbG9hZC1maWxsZWRcIixcbiAgICAgIFwiZm9udF9jbGFzc1wiOiBcImNsb3VkLXVwbG9hZC1maWxsZWRcIixcbiAgICAgIFwidW5pY29kZVwiOiBcImU2NDhcIixcbiAgICAgIFwidW5pY29kZV9kZWNpbWFsXCI6IDU4OTUyXG4gICAgfSxcbiAgICB7XG4gICAgICBcImljb25faWRcIjogXCIyNDg1NTgxM1wiLFxuICAgICAgXCJuYW1lXCI6IFwicmVkb1wiLFxuICAgICAgXCJmb250X2NsYXNzXCI6IFwicmVkb1wiLFxuICAgICAgXCJ1bmljb2RlXCI6IFwiZTY0YVwiLFxuICAgICAgXCJ1bmljb2RlX2RlY2ltYWxcIjogNTg5NTRcbiAgICB9LFxuICAgIHtcbiAgICAgIFwiaWNvbl9pZFwiOiBcIjI0ODU1ODE0XCIsXG4gICAgICBcIm5hbWVcIjogXCJpbWFnZXMtZmlsbGVkXCIsXG4gICAgICBcImZvbnRfY2xhc3NcIjogXCJpbWFnZXMtZmlsbGVkXCIsXG4gICAgICBcInVuaWNvZGVcIjogXCJlNjRiXCIsXG4gICAgICBcInVuaWNvZGVfZGVjaW1hbFwiOiA1ODk1NVxuICAgIH0sXG4gICAge1xuICAgICAgXCJpY29uX2lkXCI6IFwiMjQ4NTU4MTVcIixcbiAgICAgIFwibmFtZVwiOiBcInVuZG8tZmlsbGVkXCIsXG4gICAgICBcImZvbnRfY2xhc3NcIjogXCJ1bmRvLWZpbGxlZFwiLFxuICAgICAgXCJ1bmljb2RlXCI6IFwiZTY0Y1wiLFxuICAgICAgXCJ1bmljb2RlX2RlY2ltYWxcIjogNTg5NTZcbiAgICB9LFxuICAgIHtcbiAgICAgIFwiaWNvbl9pZFwiOiBcIjI0ODU1ODE2XCIsXG4gICAgICBcIm5hbWVcIjogXCJtb3JlXCIsXG4gICAgICBcImZvbnRfY2xhc3NcIjogXCJtb3JlXCIsXG4gICAgICBcInVuaWNvZGVcIjogXCJlNjRkXCIsXG4gICAgICBcInVuaWNvZGVfZGVjaW1hbFwiOiA1ODk1N1xuICAgIH0sXG4gICAge1xuICAgICAgXCJpY29uX2lkXCI6IFwiMjQ4NTU4MTdcIixcbiAgICAgIFwibmFtZVwiOiBcIm1vcmUtZmlsbGVkXCIsXG4gICAgICBcImZvbnRfY2xhc3NcIjogXCJtb3JlLWZpbGxlZFwiLFxuICAgICAgXCJ1bmljb2RlXCI6IFwiZTY0ZVwiLFxuICAgICAgXCJ1bmljb2RlX2RlY2ltYWxcIjogNTg5NThcbiAgICB9LFxuICAgIHtcbiAgICAgIFwiaWNvbl9pZFwiOiBcIjI0ODU1ODE4XCIsXG4gICAgICBcIm5hbWVcIjogXCJ1bmRvXCIsXG4gICAgICBcImZvbnRfY2xhc3NcIjogXCJ1bmRvXCIsXG4gICAgICBcInVuaWNvZGVcIjogXCJlNjRmXCIsXG4gICAgICBcInVuaWNvZGVfZGVjaW1hbFwiOiA1ODk1OVxuICAgIH0sXG4gICAge1xuICAgICAgXCJpY29uX2lkXCI6IFwiMjQ4NTU4MTlcIixcbiAgICAgIFwibmFtZVwiOiBcImltYWdlc1wiLFxuICAgICAgXCJmb250X2NsYXNzXCI6IFwiaW1hZ2VzXCIsXG4gICAgICBcInVuaWNvZGVcIjogXCJlNjUwXCIsXG4gICAgICBcInVuaWNvZGVfZGVjaW1hbFwiOiA1ODk2MFxuICAgIH0sXG4gICAge1xuICAgICAgXCJpY29uX2lkXCI6IFwiMjQ4NTU4MjFcIixcbiAgICAgIFwibmFtZVwiOiBcInBhcGVyY2xpcFwiLFxuICAgICAgXCJmb250X2NsYXNzXCI6IFwicGFwZXJjbGlwXCIsXG4gICAgICBcInVuaWNvZGVcIjogXCJlNjUyXCIsXG4gICAgICBcInVuaWNvZGVfZGVjaW1hbFwiOiA1ODk2MlxuICAgIH0sXG4gICAge1xuICAgICAgXCJpY29uX2lkXCI6IFwiMjQ4NTU4MjJcIixcbiAgICAgIFwibmFtZVwiOiBcInNldHRpbmdzXCIsXG4gICAgICBcImZvbnRfY2xhc3NcIjogXCJzZXR0aW5nc1wiLFxuICAgICAgXCJ1bmljb2RlXCI6IFwiZTY1M1wiLFxuICAgICAgXCJ1bmljb2RlX2RlY2ltYWxcIjogNTg5NjNcbiAgICB9LFxuICAgIHtcbiAgICAgIFwiaWNvbl9pZFwiOiBcIjI0ODU1ODIzXCIsXG4gICAgICBcIm5hbWVcIjogXCJzZWFyY2hcIixcbiAgICAgIFwiZm9udF9jbGFzc1wiOiBcInNlYXJjaFwiLFxuICAgICAgXCJ1bmljb2RlXCI6IFwiZTY1NFwiLFxuICAgICAgXCJ1bmljb2RlX2RlY2ltYWxcIjogNTg5NjRcbiAgICB9LFxuICAgIHtcbiAgICAgIFwiaWNvbl9pZFwiOiBcIjI0ODU1ODI0XCIsXG4gICAgICBcIm5hbWVcIjogXCJyZWRvLWZpbGxlZFwiLFxuICAgICAgXCJmb250X2NsYXNzXCI6IFwicmVkby1maWxsZWRcIixcbiAgICAgIFwidW5pY29kZVwiOiBcImU2NTVcIixcbiAgICAgIFwidW5pY29kZV9kZWNpbWFsXCI6IDU4OTY1XG4gICAgfSxcbiAgICB7XG4gICAgICBcImljb25faWRcIjogXCIyNDg0MTcwMlwiLFxuICAgICAgXCJuYW1lXCI6IFwibGlzdFwiLFxuICAgICAgXCJmb250X2NsYXNzXCI6IFwibGlzdFwiLFxuICAgICAgXCJ1bmljb2RlXCI6IFwiZTY0NFwiLFxuICAgICAgXCJ1bmljb2RlX2RlY2ltYWxcIjogNTg5NDhcbiAgICB9LFxuICAgIHtcbiAgICAgIFwiaWNvbl9pZFwiOiBcIjI0ODQxNDg5XCIsXG4gICAgICBcIm5hbWVcIjogXCJtYWlsLW9wZW4tZmlsbGVkXCIsXG4gICAgICBcImZvbnRfY2xhc3NcIjogXCJtYWlsLW9wZW4tZmlsbGVkXCIsXG4gICAgICBcInVuaWNvZGVcIjogXCJlNjNhXCIsXG4gICAgICBcInVuaWNvZGVfZGVjaW1hbFwiOiA1ODkzOFxuICAgIH0sXG4gICAge1xuICAgICAgXCJpY29uX2lkXCI6IFwiMjQ4NDE0OTFcIixcbiAgICAgIFwibmFtZVwiOiBcImhhbmQtdGh1bWJzZG93bi1maWxsZWRcIixcbiAgICAgIFwiZm9udF9jbGFzc1wiOiBcImhhbmQtZG93bi1maWxsZWRcIixcbiAgICAgIFwidW5pY29kZVwiOiBcImU2M2NcIixcbiAgICAgIFwidW5pY29kZV9kZWNpbWFsXCI6IDU4OTQwXG4gICAgfSxcbiAgICB7XG4gICAgICBcImljb25faWRcIjogXCIyNDg0MTQ5MlwiLFxuICAgICAgXCJuYW1lXCI6IFwiaGFuZC10aHVtYnNkb3duXCIsXG4gICAgICBcImZvbnRfY2xhc3NcIjogXCJoYW5kLWRvd25cIixcbiAgICAgIFwidW5pY29kZVwiOiBcImU2M2RcIixcbiAgICAgIFwidW5pY29kZV9kZWNpbWFsXCI6IDU4OTQxXG4gICAgfSxcbiAgICB7XG4gICAgICBcImljb25faWRcIjogXCIyNDg0MTQ5M1wiLFxuICAgICAgXCJuYW1lXCI6IFwiaGFuZC10aHVtYnN1cC1maWxsZWRcIixcbiAgICAgIFwiZm9udF9jbGFzc1wiOiBcImhhbmQtdXAtZmlsbGVkXCIsXG4gICAgICBcInVuaWNvZGVcIjogXCJlNjNlXCIsXG4gICAgICBcInVuaWNvZGVfZGVjaW1hbFwiOiA1ODk0MlxuICAgIH0sXG4gICAge1xuICAgICAgXCJpY29uX2lkXCI6IFwiMjQ4NDE0OTRcIixcbiAgICAgIFwibmFtZVwiOiBcImhhbmQtdGh1bWJzdXBcIixcbiAgICAgIFwiZm9udF9jbGFzc1wiOiBcImhhbmQtdXBcIixcbiAgICAgIFwidW5pY29kZVwiOiBcImU2M2ZcIixcbiAgICAgIFwidW5pY29kZV9kZWNpbWFsXCI6IDU4OTQzXG4gICAgfSxcbiAgICB7XG4gICAgICBcImljb25faWRcIjogXCIyNDg0MTQ5NlwiLFxuICAgICAgXCJuYW1lXCI6IFwiaGVhcnQtZmlsbGVkXCIsXG4gICAgICBcImZvbnRfY2xhc3NcIjogXCJoZWFydC1maWxsZWRcIixcbiAgICAgIFwidW5pY29kZVwiOiBcImU2NDFcIixcbiAgICAgIFwidW5pY29kZV9kZWNpbWFsXCI6IDU4OTQ1XG4gICAgfSxcbiAgICB7XG4gICAgICBcImljb25faWRcIjogXCIyNDg0MTQ5OFwiLFxuICAgICAgXCJuYW1lXCI6IFwibWFpbC1vcGVuXCIsXG4gICAgICBcImZvbnRfY2xhc3NcIjogXCJtYWlsLW9wZW5cIixcbiAgICAgIFwidW5pY29kZVwiOiBcImU2NDNcIixcbiAgICAgIFwidW5pY29kZV9kZWNpbWFsXCI6IDU4OTQ3XG4gICAgfSxcbiAgICB7XG4gICAgICBcImljb25faWRcIjogXCIyNDg0MTQ4OFwiLFxuICAgICAgXCJuYW1lXCI6IFwiaGVhcnRcIixcbiAgICAgIFwiZm9udF9jbGFzc1wiOiBcImhlYXJ0XCIsXG4gICAgICBcInVuaWNvZGVcIjogXCJlNjM5XCIsXG4gICAgICBcInVuaWNvZGVfZGVjaW1hbFwiOiA1ODkzN1xuICAgIH0sXG4gICAge1xuICAgICAgXCJpY29uX2lkXCI6IFwiMjQ4Mzk5NjNcIixcbiAgICAgIFwibmFtZVwiOiBcImxvb3BcIixcbiAgICAgIFwiZm9udF9jbGFzc1wiOiBcImxvb3BcIixcbiAgICAgIFwidW5pY29kZVwiOiBcImU2MzNcIixcbiAgICAgIFwidW5pY29kZV9kZWNpbWFsXCI6IDU4OTMxXG4gICAgfSxcbiAgICB7XG4gICAgICBcImljb25faWRcIjogXCIyNDgzOTg2NlwiLFxuICAgICAgXCJuYW1lXCI6IFwicHVsbGRvd25cIixcbiAgICAgIFwiZm9udF9jbGFzc1wiOiBcInB1bGxkb3duXCIsXG4gICAgICBcInVuaWNvZGVcIjogXCJlNjMyXCIsXG4gICAgICBcInVuaWNvZGVfZGVjaW1hbFwiOiA1ODkzMFxuICAgIH0sXG4gICAge1xuICAgICAgXCJpY29uX2lkXCI6IFwiMjQ4MTM3OThcIixcbiAgICAgIFwibmFtZVwiOiBcInNjYW5cIixcbiAgICAgIFwiZm9udF9jbGFzc1wiOiBcInNjYW5cIixcbiAgICAgIFwidW5pY29kZVwiOiBcImU2MmFcIixcbiAgICAgIFwidW5pY29kZV9kZWNpbWFsXCI6IDU4OTIyXG4gICAgfSxcbiAgICB7XG4gICAgICBcImljb25faWRcIjogXCIyNDgxMzc4NlwiLFxuICAgICAgXCJuYW1lXCI6IFwiYmFyc1wiLFxuICAgICAgXCJmb250X2NsYXNzXCI6IFwiYmFyc1wiLFxuICAgICAgXCJ1bmljb2RlXCI6IFwiZTYyN1wiLFxuICAgICAgXCJ1bmljb2RlX2RlY2ltYWxcIjogNTg5MTlcbiAgICB9LFxuICAgIHtcbiAgICAgIFwiaWNvbl9pZFwiOiBcIjI0ODEzNzg4XCIsXG4gICAgICBcIm5hbWVcIjogXCJjYXJ0LWZpbGxlZFwiLFxuICAgICAgXCJmb250X2NsYXNzXCI6IFwiY2FydC1maWxsZWRcIixcbiAgICAgIFwidW5pY29kZVwiOiBcImU2MjlcIixcbiAgICAgIFwidW5pY29kZV9kZWNpbWFsXCI6IDU4OTIxXG4gICAgfSxcbiAgICB7XG4gICAgICBcImljb25faWRcIjogXCIyNDgxMzc5MFwiLFxuICAgICAgXCJuYW1lXCI6IFwiY2hlY2tib3hcIixcbiAgICAgIFwiZm9udF9jbGFzc1wiOiBcImNoZWNrYm94XCIsXG4gICAgICBcInVuaWNvZGVcIjogXCJlNjJiXCIsXG4gICAgICBcInVuaWNvZGVfZGVjaW1hbFwiOiA1ODkyM1xuICAgIH0sXG4gICAge1xuICAgICAgXCJpY29uX2lkXCI6IFwiMjQ4MTM3OTFcIixcbiAgICAgIFwibmFtZVwiOiBcImNoZWNrYm94LWZpbGxlZFwiLFxuICAgICAgXCJmb250X2NsYXNzXCI6IFwiY2hlY2tib3gtZmlsbGVkXCIsXG4gICAgICBcInVuaWNvZGVcIjogXCJlNjJjXCIsXG4gICAgICBcInVuaWNvZGVfZGVjaW1hbFwiOiA1ODkyNFxuICAgIH0sXG4gICAge1xuICAgICAgXCJpY29uX2lkXCI6IFwiMjQ4MTM3OTRcIixcbiAgICAgIFwibmFtZVwiOiBcInNob3BcIixcbiAgICAgIFwiZm9udF9jbGFzc1wiOiBcInNob3BcIixcbiAgICAgIFwidW5pY29kZVwiOiBcImU2MmZcIixcbiAgICAgIFwidW5pY29kZV9kZWNpbWFsXCI6IDU4OTI3XG4gICAgfSxcbiAgICB7XG4gICAgICBcImljb25faWRcIjogXCIyNDgxMzc5NVwiLFxuICAgICAgXCJuYW1lXCI6IFwiaGVhZHBob25lc1wiLFxuICAgICAgXCJmb250X2NsYXNzXCI6IFwiaGVhZHBob25lc1wiLFxuICAgICAgXCJ1bmljb2RlXCI6IFwiZTYzMFwiLFxuICAgICAgXCJ1bmljb2RlX2RlY2ltYWxcIjogNTg5MjhcbiAgICB9LFxuICAgIHtcbiAgICAgIFwiaWNvbl9pZFwiOiBcIjI0ODEzNzk2XCIsXG4gICAgICBcIm5hbWVcIjogXCJjYXJ0XCIsXG4gICAgICBcImZvbnRfY2xhc3NcIjogXCJjYXJ0XCIsXG4gICAgICBcInVuaWNvZGVcIjogXCJlNjMxXCIsXG4gICAgICBcInVuaWNvZGVfZGVjaW1hbFwiOiA1ODkyOVxuICAgIH1cbiAgXVxufVxuIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///24\n");
- /***/ }),
- /* 25 */
- /*!***************************************************************************************************!*\
- !*** D:/Work2/Orienteering/TrackOffical/uni_modules/uni-badge/components/uni-badge/uni-badge.vue ***!
- \***************************************************************************************************/
- /*! no static exports found */
- /***/ (function(module, __webpack_exports__, __webpack_require__) {
- "use strict";
- eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _uni_badge_vue_vue_type_template_id_7c66581c___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./uni-badge.vue?vue&type=template&id=7c66581c& */ 26);\n/* harmony import */ var _uni_badge_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./uni-badge.vue?vue&type=script&lang=js& */ 28);\n/* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _uni_badge_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__) if([\"default\"].indexOf(__WEBPACK_IMPORT_KEY__) < 0) (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _uni_badge_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__[key]; }) }(__WEBPACK_IMPORT_KEY__));\n/* harmony import */ var _Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../../../../../../Program Files/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/runtime/componentNormalizer.js */ 15);\n\nvar renderjs\n\n\n\n\n/* normalize component */\n\nvar component = Object(_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(\n _uni_badge_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__[\"default\"],\n _uni_badge_vue_vue_type_template_id_7c66581c___WEBPACK_IMPORTED_MODULE_0__[\"render\"],\n _uni_badge_vue_vue_type_template_id_7c66581c___WEBPACK_IMPORTED_MODULE_0__[\"staticRenderFns\"],\n false,\n null,\n null,\n null,\n false,\n _uni_badge_vue_vue_type_template_id_7c66581c___WEBPACK_IMPORTED_MODULE_0__[\"components\"],\n renderjs\n)\n\ncomponent.options.__file = \"uni_modules/uni-badge/components/uni-badge/uni-badge.vue\"\n/* harmony default export */ __webpack_exports__[\"default\"] = (component.exports);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbbnVsbF0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBc0g7QUFDdEg7QUFDNkQ7QUFDTDs7O0FBR3hEO0FBQzBMO0FBQzFMLGdCQUFnQiwyTEFBVTtBQUMxQixFQUFFLCtFQUFNO0FBQ1IsRUFBRSxvRkFBTTtBQUNSLEVBQUUsNkZBQWU7QUFDakI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEVBQUUsd0ZBQVU7QUFDWjtBQUNBOztBQUVBO0FBQ2UsZ0YiLCJmaWxlIjoiMjUuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyByZW5kZXIsIHN0YXRpY1JlbmRlckZucywgcmVjeWNsYWJsZVJlbmRlciwgY29tcG9uZW50cyB9IGZyb20gXCIuL3VuaS1iYWRnZS52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9N2M2NjU4MWMmXCJcbnZhciByZW5kZXJqc1xuaW1wb3J0IHNjcmlwdCBmcm9tIFwiLi91bmktYmFkZ2UudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPWpzJlwiXG5leHBvcnQgKiBmcm9tIFwiLi91bmktYmFkZ2UudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPWpzJlwiXG5cblxuLyogbm9ybWFsaXplIGNvbXBvbmVudCAqL1xuaW1wb3J0IG5vcm1hbGl6ZXIgZnJvbSBcIiEuLi8uLi8uLi8uLi8uLi8uLi8uLi9Qcm9ncmFtIEZpbGVzL0hCdWlsZGVyWC9wbHVnaW5zL3VuaWFwcC1jbGkvbm9kZV9tb2R1bGVzL0BkY2xvdWRpby92dWUtY2xpLXBsdWdpbi11bmkvcGFja2FnZXMvdnVlLWxvYWRlci9saWIvcnVudGltZS9jb21wb25lbnROb3JtYWxpemVyLmpzXCJcbnZhciBjb21wb25lbnQgPSBub3JtYWxpemVyKFxuICBzY3JpcHQsXG4gIHJlbmRlcixcbiAgc3RhdGljUmVuZGVyRm5zLFxuICBmYWxzZSxcbiAgbnVsbCxcbiAgbnVsbCxcbiAgbnVsbCxcbiAgZmFsc2UsXG4gIGNvbXBvbmVudHMsXG4gIHJlbmRlcmpzXG4pXG5cbmNvbXBvbmVudC5vcHRpb25zLl9fZmlsZSA9IFwidW5pX21vZHVsZXMvdW5pLWJhZGdlL2NvbXBvbmVudHMvdW5pLWJhZGdlL3VuaS1iYWRnZS52dWVcIlxuZXhwb3J0IGRlZmF1bHQgY29tcG9uZW50LmV4cG9ydHMiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///25\n");
- /***/ }),
- /* 26 */
- /*!**********************************************************************************************************************************!*\
- !*** D:/Work2/Orienteering/TrackOffical/uni_modules/uni-badge/components/uni-badge/uni-badge.vue?vue&type=template&id=7c66581c& ***!
- \**********************************************************************************************************************************/
- /*! exports provided: render, staticRenderFns, recyclableRender, components */
- /***/ (function(module, __webpack_exports__, __webpack_require__) {
- "use strict";
- __webpack_require__.r(__webpack_exports__);
- /* harmony import */ var _Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_11_0_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_filter_modules_template_js_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_page_meta_js_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_uni_badge_vue_vue_type_template_id_7c66581c___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../../../../../Program Files/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../../../../../../Program Files/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--11-0!../../../../../../../Program Files/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/filter-modules-template.js!../../../../../../../Program Files/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/page-meta.js!../../../../../../../Program Files/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib??vue-loader-options!./uni-badge.vue?vue&type=template&id=7c66581c& */ 27);
- /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "render", function() { return _Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_11_0_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_filter_modules_template_js_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_page_meta_js_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_uni_badge_vue_vue_type_template_id_7c66581c___WEBPACK_IMPORTED_MODULE_0__["render"]; });
- /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "staticRenderFns", function() { return _Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_11_0_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_filter_modules_template_js_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_page_meta_js_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_uni_badge_vue_vue_type_template_id_7c66581c___WEBPACK_IMPORTED_MODULE_0__["staticRenderFns"]; });
- /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "recyclableRender", function() { return _Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_11_0_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_filter_modules_template_js_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_page_meta_js_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_uni_badge_vue_vue_type_template_id_7c66581c___WEBPACK_IMPORTED_MODULE_0__["recyclableRender"]; });
- /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "components", function() { return _Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_11_0_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_filter_modules_template_js_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_page_meta_js_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_uni_badge_vue_vue_type_template_id_7c66581c___WEBPACK_IMPORTED_MODULE_0__["components"]; });
- /***/ }),
- /* 27 */
- /*!**************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
- !*** ./node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--11-0!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/filter-modules-template.js!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/page-meta.js!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib??vue-loader-options!D:/Work2/Orienteering/TrackOffical/uni_modules/uni-badge/components/uni-badge/uni-badge.vue?vue&type=template&id=7c66581c& ***!
- \**************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/
- /*! exports provided: render, staticRenderFns, recyclableRender, components */
- /***/ (function(module, __webpack_exports__, __webpack_require__) {
- "use strict";
- __webpack_require__.r(__webpack_exports__);
- /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "render", function() { return render; });
- /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "staticRenderFns", function() { return staticRenderFns; });
- /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "recyclableRender", function() { return recyclableRender; });
- /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "components", function() { return components; });
- var components
- var render = function () {
- var _vm = this
- var _h = _vm.$createElement
- var _c = _vm._self._c || _h
- return _c(
- "view",
- { staticClass: _vm._$s(0, "sc", "uni-badge--x"), attrs: { _i: 0 } },
- [
- _vm._t("default", null, { _i: 1 }),
- _vm._$s(2, "i", _vm.text)
- ? _c(
- "text",
- {
- staticClass: _vm._$s(2, "sc", "uni-badge"),
- class: _vm._$s(2, "c", _vm.classNames),
- style: _vm._$s(2, "s", [
- _vm.positionStyle,
- _vm.customStyle,
- _vm.dotStyle,
- ]),
- attrs: { _i: 2 },
- on: {
- click: function ($event) {
- return _vm.onClick()
- },
- },
- },
- [_vm._v(_vm._$s(2, "t0-0", _vm._s(_vm.displayValue)))]
- )
- : _vm._e(),
- ],
- 2
- )
- }
- var recyclableRender = false
- var staticRenderFns = []
- render._withStripped = true
- /***/ }),
- /* 28 */
- /*!****************************************************************************************************************************!*\
- !*** D:/Work2/Orienteering/TrackOffical/uni_modules/uni-badge/components/uni-badge/uni-badge.vue?vue&type=script&lang=js& ***!
- \****************************************************************************************************************************/
- /*! no static exports found */
- /***/ (function(module, __webpack_exports__, __webpack_require__) {
- "use strict";
- eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_7_1_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_using_components_js_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_uni_badge_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../../../../../Program Files/HBuilderX/plugins/uniapp-cli/node_modules/babel-loader/lib!../../../../../../../Program Files/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--7-1!../../../../../../../Program Files/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/using-components.js!../../../../../../../Program Files/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib??vue-loader-options!./uni-badge.vue?vue&type=script&lang=js& */ 29);\n/* harmony import */ var _Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_7_1_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_using_components_js_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_uni_badge_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_7_1_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_using_components_js_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_uni_badge_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__);\n/* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_7_1_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_using_components_js_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_uni_badge_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__) if([\"default\"].indexOf(__WEBPACK_IMPORT_KEY__) < 0) (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_7_1_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_using_components_js_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_uni_badge_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__[key]; }) }(__WEBPACK_IMPORT_KEY__));\n /* harmony default export */ __webpack_exports__[\"default\"] = (_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_7_1_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_using_components_js_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_uni_badge_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0___default.a); //# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbbnVsbF0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQWlvQixDQUFnQix1bkJBQUcsRUFBQyIsImZpbGUiOiIyOC5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBtb2QgZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vLi4vLi4vUHJvZ3JhbSBGaWxlcy9IQnVpbGRlclgvcGx1Z2lucy91bmlhcHAtY2xpL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzIS4uLy4uLy4uLy4uLy4uLy4uLy4uL1Byb2dyYW0gRmlsZXMvSEJ1aWxkZXJYL3BsdWdpbnMvdW5pYXBwLWNsaS9ub2RlX21vZHVsZXMvQGRjbG91ZGlvL3Z1ZS1jbGktcGx1Z2luLXVuaS9wYWNrYWdlcy93ZWJwYWNrLXByZXByb2Nlc3MtbG9hZGVyL2luZGV4LmpzPz9yZWYtLTctMSEuLi8uLi8uLi8uLi8uLi8uLi8uLi9Qcm9ncmFtIEZpbGVzL0hCdWlsZGVyWC9wbHVnaW5zL3VuaWFwcC1jbGkvbm9kZV9tb2R1bGVzL0BkY2xvdWRpby92dWUtY2xpLXBsdWdpbi11bmkvcGFja2FnZXMvd2VicGFjay11bmktYXBwLWxvYWRlci91c2luZy1jb21wb25lbnRzLmpzIS4uLy4uLy4uLy4uLy4uLy4uLy4uL1Byb2dyYW0gRmlsZXMvSEJ1aWxkZXJYL3BsdWdpbnMvdW5pYXBwLWNsaS9ub2RlX21vZHVsZXMvQGRjbG91ZGlvL3Z1ZS1jbGktcGx1Z2luLXVuaS9wYWNrYWdlcy92dWUtbG9hZGVyL2xpYi9pbmRleC5qcz8/dnVlLWxvYWRlci1vcHRpb25zIS4vdW5pLWJhZGdlLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz1qcyZcIjsgZXhwb3J0IGRlZmF1bHQgbW9kOyBleHBvcnQgKiBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi8uLi8uLi9Qcm9ncmFtIEZpbGVzL0hCdWlsZGVyWC9wbHVnaW5zL3VuaWFwcC1jbGkvbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanMhLi4vLi4vLi4vLi4vLi4vLi4vLi4vUHJvZ3JhbSBGaWxlcy9IQnVpbGRlclgvcGx1Z2lucy91bmlhcHAtY2xpL25vZGVfbW9kdWxlcy9AZGNsb3VkaW8vdnVlLWNsaS1wbHVnaW4tdW5pL3BhY2thZ2VzL3dlYnBhY2stcHJlcHJvY2Vzcy1sb2FkZXIvaW5kZXguanM/P3JlZi0tNy0xIS4uLy4uLy4uLy4uLy4uLy4uLy4uL1Byb2dyYW0gRmlsZXMvSEJ1aWxkZXJYL3BsdWdpbnMvdW5pYXBwLWNsaS9ub2RlX21vZHVsZXMvQGRjbG91ZGlvL3Z1ZS1jbGktcGx1Z2luLXVuaS9wYWNrYWdlcy93ZWJwYWNrLXVuaS1hcHAtbG9hZGVyL3VzaW5nLWNvbXBvbmVudHMuanMhLi4vLi4vLi4vLi4vLi4vLi4vLi4vUHJvZ3JhbSBGaWxlcy9IQnVpbGRlclgvcGx1Z2lucy91bmlhcHAtY2xpL25vZGVfbW9kdWxlcy9AZGNsb3VkaW8vdnVlLWNsaS1wbHVnaW4tdW5pL3BhY2thZ2VzL3Z1ZS1sb2FkZXIvbGliL2luZGV4LmpzPz92dWUtbG9hZGVyLW9wdGlvbnMhLi91bmktYmFkZ2UudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPWpzJlwiIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///28\n");
- /***/ }),
- /* 29 */
- /*!*********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
- !*** ./node_modules/babel-loader/lib!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--7-1!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/using-components.js!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib??vue-loader-options!D:/Work2/Orienteering/TrackOffical/uni_modules/uni-badge/components/uni-badge/uni-badge.vue?vue&type=script&lang=js& ***!
- \*********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/
- /*! no static exports found */
- /***/ (function(module, exports, __webpack_require__) {
- "use strict";
- eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n//\n//\n//\n//\n//\n//\n//\n//\n/**\n * Badge 数字角标\n * @description 数字角标一般和其它控件(列表、9宫格等)配合使用,用于进行数量提示,默认为实心灰色背景\n * @tutorial https://ext.dcloud.net.cn/plugin?id=21\n * @property {String} text 角标内容\n * @property {String} size = [normal|small] 角标内容\n * @property {String} type = [info|primary|success|warning|error] 颜色类型\n * \t@value info 灰色\n * \t@value primary 蓝色\n * \t@value success 绿色\n * \t@value warning 黄色\n * \t@value error 红色\n * @property {String} inverted = [true|false] 是否无需背景颜色\n * @property {Number} maxNum 展示封顶的数字值,超过 99 显示 99+\n * @property {String} absolute = [rightTop|rightBottom|leftBottom|leftTop] 开启绝对定位, 角标将定位到其包裹的标签的四角上\t\t\n * \t@value rightTop 右上\n * \t@value rightBottom 右下\n * \t@value leftTop 左上\n * \t@value leftBottom 左下\n * @property {Array[number]} offset\t距定位角中心点的偏移量,只有存在 absolute 属性时有效,例如:[-10, -10] 表示向外偏移 10px,[10, 10] 表示向 absolute 指定的内偏移 10px\n * @property {String} isDot = [true|false] 是否显示为一个小点\n * @event {Function} click 点击 Badge 触发事件\n * @example <uni-badge text=\"1\"></uni-badge>\n */\nvar _default2 = {\n name: 'UniBadge',\n emits: ['click'],\n props: {\n type: {\n type: String,\n default: 'error'\n },\n inverted: {\n type: Boolean,\n default: false\n },\n isDot: {\n type: Boolean,\n default: false\n },\n maxNum: {\n type: Number,\n default: 99\n },\n absolute: {\n type: String,\n default: ''\n },\n offset: {\n type: Array,\n default: function _default() {\n return [0, 0];\n }\n },\n text: {\n type: [String, Number],\n default: ''\n },\n size: {\n type: String,\n default: 'small'\n },\n customStyle: {\n type: Object,\n default: function _default() {\n return {};\n }\n }\n },\n data: function data() {\n return {};\n },\n computed: {\n width: function width() {\n return String(this.text).length * 8 + 12;\n },\n classNames: function classNames() {\n var inverted = this.inverted,\n type = this.type,\n size = this.size,\n absolute = this.absolute;\n return [inverted ? 'uni-badge--' + type + '-inverted' : '', 'uni-badge--' + type, 'uni-badge--' + size, absolute ? 'uni-badge--absolute' : ''].join(' ');\n },\n positionStyle: function positionStyle() {\n if (!this.absolute) return {};\n var w = this.width / 2,\n h = 10;\n if (this.isDot) {\n w = 5;\n h = 5;\n }\n var x = \"\".concat(-w + this.offset[0], \"px\");\n var y = \"\".concat(-h + this.offset[1], \"px\");\n var whiteList = {\n rightTop: {\n right: x,\n top: y\n },\n rightBottom: {\n right: x,\n bottom: y\n },\n leftBottom: {\n left: x,\n bottom: y\n },\n leftTop: {\n left: x,\n top: y\n }\n };\n var match = whiteList[this.absolute];\n return match ? match : whiteList['rightTop'];\n },\n dotStyle: function dotStyle() {\n if (!this.isDot) return {};\n return {\n width: '10px',\n minWidth: '0',\n height: '10px',\n padding: '0',\n borderRadius: '10px'\n };\n },\n displayValue: function displayValue() {\n var isDot = this.isDot,\n text = this.text,\n maxNum = this.maxNum;\n return isDot ? '' : Number(text) > maxNum ? \"\".concat(maxNum, \"+\") : text;\n }\n },\n methods: {\n onClick: function onClick() {\n this.$emit('click');\n }\n }\n};\nexports.default = _default2;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInVuaS1hcHA6Ly8vdW5pX21vZHVsZXMvdW5pLWJhZGdlL2NvbXBvbmVudHMvdW5pLWJhZGdlL3VuaS1iYWRnZS52dWUiXSwibmFtZXMiOlsibmFtZSIsImVtaXRzIiwicHJvcHMiLCJ0eXBlIiwiZGVmYXVsdCIsImludmVydGVkIiwiaXNEb3QiLCJtYXhOdW0iLCJhYnNvbHV0ZSIsIm9mZnNldCIsInRleHQiLCJzaXplIiwiY3VzdG9tU3R5bGUiLCJkYXRhIiwiY29tcHV0ZWQiLCJ3aWR0aCIsImNsYXNzTmFtZXMiLCJwb3NpdGlvblN0eWxlIiwiaCIsInciLCJyaWdodFRvcCIsInJpZ2h0IiwidG9wIiwicmlnaHRCb3R0b20iLCJib3R0b20iLCJsZWZ0Qm90dG9tIiwibGVmdCIsImxlZnRUb3AiLCJkb3RTdHlsZSIsIm1pbldpZHRoIiwiaGVpZ2h0IiwicGFkZGluZyIsImJvcmRlclJhZGl1cyIsImRpc3BsYXlWYWx1ZSIsIm1ldGhvZHMiLCJvbkNsaWNrIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7OztBQVNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQXZCQSxnQkF5QkE7RUFDQUE7RUFDQUM7RUFDQUM7SUFDQUM7TUFDQUE7TUFDQUM7SUFDQTtJQUNBQztNQUNBRjtNQUNBQztJQUNBO0lBQ0FFO01BQ0FIO01BQ0FDO0lBQ0E7SUFDQUc7TUFDQUo7TUFDQUM7SUFDQTtJQUNBSTtNQUNBTDtNQUNBQztJQUNBO0lBQ0FLO01BQ0FOO01BQ0FDO1FBQ0E7TUFDQTtJQUNBO0lBQ0FNO01BQ0FQO01BQ0FDO0lBQ0E7SUFDQU87TUFDQVI7TUFDQUM7SUFDQTtJQUNBUTtNQUNBVDtNQUNBQztRQUNBO01BQ0E7SUFDQTtFQUNBO0VBQ0FTO0lBQ0E7RUFDQTtFQUNBQztJQUNBQztNQUNBO0lBQ0E7SUFDQUM7TUFDQSxJQUNBWCxXQUlBLEtBSkFBO1FBQ0FGLE9BR0EsS0FIQUE7UUFDQVEsT0FFQSxLQUZBQTtRQUNBSCxXQUNBLEtBREFBO01BRUEsUUFDQUgsb0RBQ0Esc0JBQ0Esc0JBQ0FHLHNDQUNBO0lBQ0E7SUFDQVM7TUFDQTtNQUNBO1FBQ0FDO01BQ0E7UUFDQUM7UUFDQUQ7TUFDQTtNQUNBO01BQ0E7TUFFQTtRQUNBRTtVQUNBQztVQUNBQztRQUNBO1FBQ0FDO1VBQ0FGO1VBQ0FHO1FBQ0E7UUFDQUM7VUFDQUM7VUFDQUY7UUFDQTtRQUNBRztVQUNBRDtVQUNBSjtRQUNBO01BQ0E7TUFDQTtNQUNBO0lBQ0E7SUFDQU07TUFDQTtNQUNBO1FBQ0FiO1FBQ0FjO1FBQ0FDO1FBQ0FDO1FBQ0FDO01BQ0E7SUFDQTtJQUNBQztNQUNBLElBQ0EzQixRQUdBLEtBSEFBO1FBQ0FJLE9BRUEsS0FGQUE7UUFDQUgsU0FDQSxLQURBQTtNQUVBO0lBQ0E7RUFDQTtFQUNBMkI7SUFDQUM7TUFDQTtJQUNBO0VBQ0E7QUFDQTtBQUFBIiwiZmlsZSI6IjI5LmpzIiwic291cmNlc0NvbnRlbnQiOlsiPHRlbXBsYXRlPlxyXG5cdDx2aWV3IGNsYXNzPVwidW5pLWJhZGdlLS14XCI+XHJcblx0XHQ8c2xvdCAvPlxyXG5cdFx0PHRleHQgdi1pZj1cInRleHRcIiA6Y2xhc3M9XCJjbGFzc05hbWVzXCIgOnN0eWxlPVwiW3Bvc2l0aW9uU3R5bGUsIGN1c3RvbVN0eWxlLCBkb3RTdHlsZV1cIlxyXG5cdFx0XHRjbGFzcz1cInVuaS1iYWRnZVwiIEBjbGljaz1cIm9uQ2xpY2soKVwiPnt7ZGlzcGxheVZhbHVlfX08L3RleHQ+XHJcblx0PC92aWV3PlxyXG48L3RlbXBsYXRlPlxyXG5cclxuPHNjcmlwdD5cclxuXHQvKipcclxuXHQgKiBCYWRnZSDmlbDlrZfop5LmoIdcclxuXHQgKiBAZGVzY3JpcHRpb24g5pWw5a2X6KeS5qCH5LiA6Iis5ZKM5YW25a6D5o6n5Lu277yI5YiX6KGo44CBOeWuq+agvOetie+8iemFjeWQiOS9v+eUqO+8jOeUqOS6jui/m+ihjOaVsOmHj+aPkOekuu+8jOm7mOiupOS4uuWunuW/g+eBsOiJsuiDjOaZr1xyXG5cdCAqIEB0dXRvcmlhbCBodHRwczovL2V4dC5kY2xvdWQubmV0LmNuL3BsdWdpbj9pZD0yMVxyXG5cdCAqIEBwcm9wZXJ0eSB7U3RyaW5nfSB0ZXh0IOinkuagh+WGheWuuVxyXG5cdCAqIEBwcm9wZXJ0eSB7U3RyaW5nfSBzaXplID0gW25vcm1hbHxzbWFsbF0g6KeS5qCH5YaF5a65XHJcblx0ICogQHByb3BlcnR5IHtTdHJpbmd9IHR5cGUgPSBbaW5mb3xwcmltYXJ5fHN1Y2Nlc3N8d2FybmluZ3xlcnJvcl0g6aKc6Imy57G75Z6LXHJcblx0ICogXHRAdmFsdWUgaW5mbyDngbDoibJcclxuXHQgKiBcdEB2YWx1ZSBwcmltYXJ5IOiTneiJslxyXG5cdCAqIFx0QHZhbHVlIHN1Y2Nlc3Mg57u/6ImyXHJcblx0ICogXHRAdmFsdWUgd2FybmluZyDpu4ToibJcclxuXHQgKiBcdEB2YWx1ZSBlcnJvciDnuqLoibJcclxuXHQgKiBAcHJvcGVydHkge1N0cmluZ30gaW52ZXJ0ZWQgPSBbdHJ1ZXxmYWxzZV0g5piv5ZCm5peg6ZyA6IOM5pmv6aKc6ImyXHJcblx0ICogQHByb3BlcnR5IHtOdW1iZXJ9IG1heE51bSDlsZXnpLrlsIHpobbnmoTmlbDlrZflgLzvvIzotoXov4cgOTkg5pi+56S6IDk5K1xyXG5cdCAqIEBwcm9wZXJ0eSB7U3RyaW5nfSBhYnNvbHV0ZSA9IFtyaWdodFRvcHxyaWdodEJvdHRvbXxsZWZ0Qm90dG9tfGxlZnRUb3BdIOW8gOWQr+e7neWvueWumuS9jSwg6KeS5qCH5bCG5a6a5L2N5Yiw5YW25YyF6KO555qE5qCH562+55qE5Zub6KeS5LiKXHRcdFxyXG5cdCAqIFx0QHZhbHVlIHJpZ2h0VG9wIOWPs+S4ilxyXG5cdCAqIFx0QHZhbHVlIHJpZ2h0Qm90dG9tIOWPs+S4i1xyXG5cdCAqIFx0QHZhbHVlIGxlZnRUb3Ag5bem5LiKXHJcblx0ICogXHRAdmFsdWUgbGVmdEJvdHRvbSDlt6bkuItcclxuXHQgKiBAcHJvcGVydHkge0FycmF5W251bWJlcl19IG9mZnNldFx06Led5a6a5L2N6KeS5Lit5b+D54K555qE5YGP56e76YeP77yM5Y+q5pyJ5a2Y5ZyoIGFic29sdXRlIOWxnuaAp+aXtuacieaViO+8jOS+i+Wmgu+8mlstMTAsIC0xMF0g6KGo56S65ZCR5aSW5YGP56e7IDEwcHjvvIxbMTAsIDEwXSDooajnpLrlkJEgYWJzb2x1dGUg5oyH5a6a55qE5YaF5YGP56e7IDEwcHhcclxuXHQgKiBAcHJvcGVydHkge1N0cmluZ30gaXNEb3QgPSBbdHJ1ZXxmYWxzZV0g5piv5ZCm5pi+56S65Li65LiA5Liq5bCP54K5XHJcblx0ICogQGV2ZW50IHtGdW5jdGlvbn0gY2xpY2sg54K55Ye7IEJhZGdlIOinpuWPkeS6i+S7tlxyXG5cdCAqIEBleGFtcGxlIDx1bmktYmFkZ2UgdGV4dD1cIjFcIj48L3VuaS1iYWRnZT5cclxuXHQgKi9cclxuXHJcblx0ZXhwb3J0IGRlZmF1bHQge1xyXG5cdFx0bmFtZTogJ1VuaUJhZGdlJyxcclxuXHRcdGVtaXRzOiBbJ2NsaWNrJ10sXHJcblx0XHRwcm9wczoge1xyXG5cdFx0XHR0eXBlOiB7XHJcblx0XHRcdFx0dHlwZTogU3RyaW5nLFxyXG5cdFx0XHRcdGRlZmF1bHQ6ICdlcnJvcidcclxuXHRcdFx0fSxcclxuXHRcdFx0aW52ZXJ0ZWQ6IHtcclxuXHRcdFx0XHR0eXBlOiBCb29sZWFuLFxyXG5cdFx0XHRcdGRlZmF1bHQ6IGZhbHNlXHJcblx0XHRcdH0sXHJcblx0XHRcdGlzRG90OiB7XHJcblx0XHRcdFx0dHlwZTogQm9vbGVhbixcclxuXHRcdFx0XHRkZWZhdWx0OiBmYWxzZVxyXG5cdFx0XHR9LFxyXG5cdFx0XHRtYXhOdW06IHtcclxuXHRcdFx0XHR0eXBlOiBOdW1iZXIsXHJcblx0XHRcdFx0ZGVmYXVsdDogOTlcclxuXHRcdFx0fSxcclxuXHRcdFx0YWJzb2x1dGU6IHtcclxuXHRcdFx0XHR0eXBlOiBTdHJpbmcsXHJcblx0XHRcdFx0ZGVmYXVsdDogJydcclxuXHRcdFx0fSxcclxuXHRcdFx0b2Zmc2V0OiB7XHJcblx0XHRcdFx0dHlwZTogQXJyYXksXHJcblx0XHRcdFx0ZGVmYXVsdCAoKSB7XHJcblx0XHRcdFx0XHRyZXR1cm4gWzAsIDBdXHJcblx0XHRcdFx0fVxyXG5cdFx0XHR9LFxyXG5cdFx0XHR0ZXh0OiB7XHJcblx0XHRcdFx0dHlwZTogW1N0cmluZywgTnVtYmVyXSxcclxuXHRcdFx0XHRkZWZhdWx0OiAnJ1xyXG5cdFx0XHR9LFxyXG5cdFx0XHRzaXplOiB7XHJcblx0XHRcdFx0dHlwZTogU3RyaW5nLFxyXG5cdFx0XHRcdGRlZmF1bHQ6ICdzbWFsbCdcclxuXHRcdFx0fSxcclxuXHRcdFx0Y3VzdG9tU3R5bGU6IHtcclxuXHRcdFx0XHR0eXBlOiBPYmplY3QsXHJcblx0XHRcdFx0ZGVmYXVsdCAoKSB7XHJcblx0XHRcdFx0XHRyZXR1cm4ge31cclxuXHRcdFx0XHR9XHJcblx0XHRcdH1cclxuXHRcdH0sXHJcblx0XHRkYXRhKCkge1xyXG5cdFx0XHRyZXR1cm4ge307XHJcblx0XHR9LFxyXG5cdFx0Y29tcHV0ZWQ6IHtcclxuXHRcdFx0d2lkdGgoKSB7XHJcblx0XHRcdFx0cmV0dXJuIFN0cmluZyh0aGlzLnRleHQpLmxlbmd0aCAqIDggKyAxMlxyXG5cdFx0XHR9LFxyXG5cdFx0XHRjbGFzc05hbWVzKCkge1xyXG5cdFx0XHRcdGNvbnN0IHtcclxuXHRcdFx0XHRcdGludmVydGVkLFxyXG5cdFx0XHRcdFx0dHlwZSxcclxuXHRcdFx0XHRcdHNpemUsXHJcblx0XHRcdFx0XHRhYnNvbHV0ZVxyXG5cdFx0XHRcdH0gPSB0aGlzXHJcblx0XHRcdFx0cmV0dXJuIFtcclxuXHRcdFx0XHRcdGludmVydGVkID8gJ3VuaS1iYWRnZS0tJyArIHR5cGUgKyAnLWludmVydGVkJyA6ICcnLFxyXG5cdFx0XHRcdFx0J3VuaS1iYWRnZS0tJyArIHR5cGUsXHJcblx0XHRcdFx0XHQndW5pLWJhZGdlLS0nICsgc2l6ZSxcclxuXHRcdFx0XHRcdGFic29sdXRlID8gJ3VuaS1iYWRnZS0tYWJzb2x1dGUnIDogJydcclxuXHRcdFx0XHRdLmpvaW4oJyAnKVxyXG5cdFx0XHR9LFxyXG5cdFx0XHRwb3NpdGlvblN0eWxlKCkge1xyXG5cdFx0XHRcdGlmICghdGhpcy5hYnNvbHV0ZSkgcmV0dXJuIHt9XHJcblx0XHRcdFx0bGV0IHcgPSB0aGlzLndpZHRoIC8gMixcclxuXHRcdFx0XHRcdGggPSAxMFxyXG5cdFx0XHRcdGlmICh0aGlzLmlzRG90KSB7XHJcblx0XHRcdFx0XHR3ID0gNVxyXG5cdFx0XHRcdFx0aCA9IDVcclxuXHRcdFx0XHR9XHJcblx0XHRcdFx0Y29uc3QgeCA9IGAkey0gdyAgKyB0aGlzLm9mZnNldFswXX1weGBcclxuXHRcdFx0XHRjb25zdCB5ID0gYCR7LSBoICsgdGhpcy5vZmZzZXRbMV19cHhgXHJcblxyXG5cdFx0XHRcdGNvbnN0IHdoaXRlTGlzdCA9IHtcclxuXHRcdFx0XHRcdHJpZ2h0VG9wOiB7XHJcblx0XHRcdFx0XHRcdHJpZ2h0OiB4LFxyXG5cdFx0XHRcdFx0XHR0b3A6IHlcclxuXHRcdFx0XHRcdH0sXHJcblx0XHRcdFx0XHRyaWdodEJvdHRvbToge1xyXG5cdFx0XHRcdFx0XHRyaWdodDogeCxcclxuXHRcdFx0XHRcdFx0Ym90dG9tOiB5XHJcblx0XHRcdFx0XHR9LFxyXG5cdFx0XHRcdFx0bGVmdEJvdHRvbToge1xyXG5cdFx0XHRcdFx0XHRsZWZ0OiB4LFxyXG5cdFx0XHRcdFx0XHRib3R0b206IHlcclxuXHRcdFx0XHRcdH0sXHJcblx0XHRcdFx0XHRsZWZ0VG9wOiB7XHJcblx0XHRcdFx0XHRcdGxlZnQ6IHgsXHJcblx0XHRcdFx0XHRcdHRvcDogeVxyXG5cdFx0XHRcdFx0fVxyXG5cdFx0XHRcdH1cclxuXHRcdFx0XHRjb25zdCBtYXRjaCA9IHdoaXRlTGlzdFt0aGlzLmFic29sdXRlXVxyXG5cdFx0XHRcdHJldHVybiBtYXRjaCA/IG1hdGNoIDogd2hpdGVMaXN0WydyaWdodFRvcCddXHJcblx0XHRcdH0sXHJcblx0XHRcdGRvdFN0eWxlKCkge1xyXG5cdFx0XHRcdGlmICghdGhpcy5pc0RvdCkgcmV0dXJuIHt9XHJcblx0XHRcdFx0cmV0dXJuIHtcclxuXHRcdFx0XHRcdHdpZHRoOiAnMTBweCcsXHJcblx0XHRcdFx0XHRtaW5XaWR0aDogJzAnLFxyXG5cdFx0XHRcdFx0aGVpZ2h0OiAnMTBweCcsXHJcblx0XHRcdFx0XHRwYWRkaW5nOiAnMCcsXHJcblx0XHRcdFx0XHRib3JkZXJSYWRpdXM6ICcxMHB4J1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0fSxcclxuXHRcdFx0ZGlzcGxheVZhbHVlKCkge1xyXG5cdFx0XHRcdGNvbnN0IHtcclxuXHRcdFx0XHRcdGlzRG90LFxyXG5cdFx0XHRcdFx0dGV4dCxcclxuXHRcdFx0XHRcdG1heE51bVxyXG5cdFx0XHRcdH0gPSB0aGlzXHJcblx0XHRcdFx0cmV0dXJuIGlzRG90ID8gJycgOiAoTnVtYmVyKHRleHQpID4gbWF4TnVtID8gYCR7bWF4TnVtfStgIDogdGV4dClcclxuXHRcdFx0fVxyXG5cdFx0fSxcclxuXHRcdG1ldGhvZHM6IHtcclxuXHRcdFx0b25DbGljaygpIHtcclxuXHRcdFx0XHR0aGlzLiRlbWl0KCdjbGljaycpO1xyXG5cdFx0XHR9XHJcblx0XHR9XHJcblx0fTtcclxuPC9zY3JpcHQ+XHJcblxyXG48c3R5bGUgbGFuZz1cInNjc3NcIiA+XHJcblx0JHVuaS1wcmltYXJ5OiAjMjk3OWZmICFkZWZhdWx0O1xyXG5cdCR1bmktc3VjY2VzczogIzRjZDk2NCAhZGVmYXVsdDtcclxuXHQkdW5pLXdhcm5pbmc6ICNmMGFkNGUgIWRlZmF1bHQ7XHJcblx0JHVuaS1lcnJvcjogI2RkNTI0ZCAhZGVmYXVsdDtcclxuXHQkdW5pLWluZm86ICM5MDkzOTkgIWRlZmF1bHQ7XHJcblxyXG5cclxuXHQkYmFnZS1zaXplOiAxMnB4O1xyXG5cdCRiYWdlLXNtYWxsOiBzY2FsZSgwLjgpO1xyXG5cclxuXHQudW5pLWJhZGdlLS14IHtcclxuXHRcdC8qICNpZmRlZiBBUFAtTlZVRSAqL1xyXG5cdFx0Ly8gYWxpZ24tc2VsZjogZmxleC1zdGFydDtcclxuXHRcdC8qICNlbmRpZiAqL1xyXG5cdFx0LyogI2lmbmRlZiBBUFAtTlZVRSAqL1xyXG5cdFx0ZGlzcGxheTogaW5saW5lLWJsb2NrO1xyXG5cdFx0LyogI2VuZGlmICovXHJcblx0XHRwb3NpdGlvbjogcmVsYXRpdmU7XHJcblx0fVxyXG5cclxuXHQudW5pLWJhZGdlLS1hYnNvbHV0ZSB7XHJcblx0XHRwb3NpdGlvbjogYWJzb2x1dGU7XHJcblx0fVxyXG5cclxuXHQudW5pLWJhZGdlLS1zbWFsbCB7XHJcblx0XHR0cmFuc2Zvcm06ICRiYWdlLXNtYWxsO1xyXG5cdFx0dHJhbnNmb3JtLW9yaWdpbjogY2VudGVyIGNlbnRlcjtcclxuXHR9XHJcblxyXG5cdC51bmktYmFkZ2Uge1xyXG5cdFx0LyogI2lmbmRlZiBBUFAtTlZVRSAqL1xyXG5cdFx0ZGlzcGxheTogZmxleDtcclxuXHRcdG92ZXJmbG93OiBoaWRkZW47XHJcblx0XHRib3gtc2l6aW5nOiBib3JkZXItYm94O1xyXG5cdFx0LyogI2VuZGlmICovXHJcblx0XHRqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcclxuXHRcdGZsZXgtZGlyZWN0aW9uOiByb3c7XHJcblx0XHRoZWlnaHQ6IDIwcHg7XHJcblx0XHRtaW4td2lkdGg6IDIwcHg7XHJcblx0XHRwYWRkaW5nOiAwIDRweDtcclxuXHRcdGxpbmUtaGVpZ2h0OiAxOHB4O1xyXG5cdFx0Y29sb3I6ICNmZmY7XHJcblx0XHRib3JkZXItcmFkaXVzOiAxMDBweDtcclxuXHRcdGJhY2tncm91bmQtY29sb3I6ICR1bmktaW5mbztcclxuXHRcdGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50O1xyXG5cdFx0Ym9yZGVyOiAxcHggc29saWQgI2ZmZjtcclxuXHRcdHRleHQtYWxpZ246IGNlbnRlcjtcclxuXHRcdGZvbnQtZmFtaWx5OiAnSGVsdmV0aWNhIE5ldWUnLCBIZWx2ZXRpY2EsIHNhbnMtc2VyaWY7XHJcblx0XHRmb250LWZlYXR1cmUtc2V0dGluZ3M6IFwidG51bVwiO1xyXG5cdFx0Zm9udC1zaXplOiAkYmFnZS1zaXplO1xyXG5cdFx0LyogI2lmZGVmIEg1ICovXHJcblx0XHR6LWluZGV4OiA5OTk7XHJcblx0XHRjdXJzb3I6IHBvaW50ZXI7XHJcblx0XHQvKiAjZW5kaWYgKi9cclxuXHJcblx0XHQmLS1pbmZvIHtcclxuXHRcdFx0Y29sb3I6ICNmZmY7XHJcblx0XHRcdGJhY2tncm91bmQtY29sb3I6ICR1bmktaW5mbztcclxuXHRcdH1cclxuXHJcblx0XHQmLS1wcmltYXJ5IHtcclxuXHRcdFx0YmFja2dyb3VuZC1jb2xvcjogJHVuaS1wcmltYXJ5O1xyXG5cdFx0fVxyXG5cclxuXHRcdCYtLXN1Y2Nlc3Mge1xyXG5cdFx0XHRiYWNrZ3JvdW5kLWNvbG9yOiAkdW5pLXN1Y2Nlc3M7XHJcblx0XHR9XHJcblxyXG5cdFx0Ji0td2FybmluZyB7XHJcblx0XHRcdGJhY2tncm91bmQtY29sb3I6ICR1bmktd2FybmluZztcclxuXHRcdH1cclxuXHJcblx0XHQmLS1lcnJvciB7XHJcblx0XHRcdGJhY2tncm91bmQtY29sb3I6ICR1bmktZXJyb3I7XHJcblx0XHR9XHJcblxyXG5cdFx0Ji0taW52ZXJ0ZWQge1xyXG5cdFx0XHRwYWRkaW5nOiAwIDVweCAwIDA7XHJcblx0XHRcdGNvbG9yOiAkdW5pLWluZm87XHJcblx0XHR9XHJcblxyXG5cdFx0Ji0taW5mby1pbnZlcnRlZCB7XHJcblx0XHRcdGNvbG9yOiAkdW5pLWluZm87XHJcblx0XHRcdGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50O1xyXG5cdFx0fVxyXG5cclxuXHRcdCYtLXByaW1hcnktaW52ZXJ0ZWQge1xyXG5cdFx0XHRjb2xvcjogJHVuaS1wcmltYXJ5O1xyXG5cdFx0XHRiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDtcclxuXHRcdH1cclxuXHJcblx0XHQmLS1zdWNjZXNzLWludmVydGVkIHtcclxuXHRcdFx0Y29sb3I6ICR1bmktc3VjY2VzcztcclxuXHRcdFx0YmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7XHJcblx0XHR9XHJcblxyXG5cdFx0Ji0td2FybmluZy1pbnZlcnRlZCB7XHJcblx0XHRcdGNvbG9yOiAkdW5pLXdhcm5pbmc7XHJcblx0XHRcdGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50O1xyXG5cdFx0fVxyXG5cclxuXHRcdCYtLWVycm9yLWludmVydGVkIHtcclxuXHRcdFx0Y29sb3I6ICR1bmktZXJyb3I7XHJcblx0XHRcdGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50O1xyXG5cdFx0fVxyXG5cclxuXHR9XHJcbjwvc3R5bGU+XHJcbiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///29\n");
- /***/ }),
- /* 30 */
- /*!***********************************************************************************************************************************!*\
- !*** D:/Work2/Orienteering/TrackOffical/uni_modules/uni-list/components/uni-list-item/uni-list-item.vue?vue&type=script&lang=js& ***!
- \***********************************************************************************************************************************/
- /*! no static exports found */
- /***/ (function(module, __webpack_exports__, __webpack_require__) {
- "use strict";
- eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_7_1_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_using_components_js_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_uni_list_item_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../../../../../Program Files/HBuilderX/plugins/uniapp-cli/node_modules/babel-loader/lib!../../../../../../../Program Files/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--7-1!../../../../../../../Program Files/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/using-components.js!../../../../../../../Program Files/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib??vue-loader-options!./uni-list-item.vue?vue&type=script&lang=js& */ 31);\n/* harmony import */ var _Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_7_1_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_using_components_js_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_uni_list_item_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_7_1_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_using_components_js_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_uni_list_item_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__);\n/* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_7_1_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_using_components_js_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_uni_list_item_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__) if([\"default\"].indexOf(__WEBPACK_IMPORT_KEY__) < 0) (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_7_1_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_using_components_js_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_uni_list_item_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__[key]; }) }(__WEBPACK_IMPORT_KEY__));\n /* harmony default export */ __webpack_exports__[\"default\"] = (_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_7_1_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_using_components_js_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_uni_list_item_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0___default.a); //# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbbnVsbF0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQXFvQixDQUFnQiwybkJBQUcsRUFBQyIsImZpbGUiOiIzMC5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBtb2QgZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vLi4vLi4vUHJvZ3JhbSBGaWxlcy9IQnVpbGRlclgvcGx1Z2lucy91bmlhcHAtY2xpL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzIS4uLy4uLy4uLy4uLy4uLy4uLy4uL1Byb2dyYW0gRmlsZXMvSEJ1aWxkZXJYL3BsdWdpbnMvdW5pYXBwLWNsaS9ub2RlX21vZHVsZXMvQGRjbG91ZGlvL3Z1ZS1jbGktcGx1Z2luLXVuaS9wYWNrYWdlcy93ZWJwYWNrLXByZXByb2Nlc3MtbG9hZGVyL2luZGV4LmpzPz9yZWYtLTctMSEuLi8uLi8uLi8uLi8uLi8uLi8uLi9Qcm9ncmFtIEZpbGVzL0hCdWlsZGVyWC9wbHVnaW5zL3VuaWFwcC1jbGkvbm9kZV9tb2R1bGVzL0BkY2xvdWRpby92dWUtY2xpLXBsdWdpbi11bmkvcGFja2FnZXMvd2VicGFjay11bmktYXBwLWxvYWRlci91c2luZy1jb21wb25lbnRzLmpzIS4uLy4uLy4uLy4uLy4uLy4uLy4uL1Byb2dyYW0gRmlsZXMvSEJ1aWxkZXJYL3BsdWdpbnMvdW5pYXBwLWNsaS9ub2RlX21vZHVsZXMvQGRjbG91ZGlvL3Z1ZS1jbGktcGx1Z2luLXVuaS9wYWNrYWdlcy92dWUtbG9hZGVyL2xpYi9pbmRleC5qcz8/dnVlLWxvYWRlci1vcHRpb25zIS4vdW5pLWxpc3QtaXRlbS52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9anMmXCI7IGV4cG9ydCBkZWZhdWx0IG1vZDsgZXhwb3J0ICogZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vLi4vLi4vUHJvZ3JhbSBGaWxlcy9IQnVpbGRlclgvcGx1Z2lucy91bmlhcHAtY2xpL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzIS4uLy4uLy4uLy4uLy4uLy4uLy4uL1Byb2dyYW0gRmlsZXMvSEJ1aWxkZXJYL3BsdWdpbnMvdW5pYXBwLWNsaS9ub2RlX21vZHVsZXMvQGRjbG91ZGlvL3Z1ZS1jbGktcGx1Z2luLXVuaS9wYWNrYWdlcy93ZWJwYWNrLXByZXByb2Nlc3MtbG9hZGVyL2luZGV4LmpzPz9yZWYtLTctMSEuLi8uLi8uLi8uLi8uLi8uLi8uLi9Qcm9ncmFtIEZpbGVzL0hCdWlsZGVyWC9wbHVnaW5zL3VuaWFwcC1jbGkvbm9kZV9tb2R1bGVzL0BkY2xvdWRpby92dWUtY2xpLXBsdWdpbi11bmkvcGFja2FnZXMvd2VicGFjay11bmktYXBwLWxvYWRlci91c2luZy1jb21wb25lbnRzLmpzIS4uLy4uLy4uLy4uLy4uLy4uLy4uL1Byb2dyYW0gRmlsZXMvSEJ1aWxkZXJYL3BsdWdpbnMvdW5pYXBwLWNsaS9ub2RlX21vZHVsZXMvQGRjbG91ZGlvL3Z1ZS1jbGktcGx1Z2luLXVuaS9wYWNrYWdlcy92dWUtbG9hZGVyL2xpYi9pbmRleC5qcz8/dnVlLWxvYWRlci1vcHRpb25zIS4vdW5pLWxpc3QtaXRlbS52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9anMmXCIiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///30\n");
- /***/ }),
- /* 31 */
- /*!****************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
- !*** ./node_modules/babel-loader/lib!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--7-1!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/using-components.js!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib??vue-loader-options!D:/Work2/Orienteering/TrackOffical/uni_modules/uni-list/components/uni-list-item/uni-list-item.vue?vue&type=script&lang=js& ***!
- \****************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/
- /*! no static exports found */
- /***/ (function(module, exports, __webpack_require__) {
- "use strict";
- eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n/**\n * ListItem 列表子组件\n * @description 列表子组件\n * @tutorial https://ext.dcloud.net.cn/plugin?id=24\n * @property {String} \ttitle \t\t\t\t\t\t\t标题\n * @property {String} \tnote \t\t\t\t\t\t\t描述\n * @property {String} \tthumb \t\t\t\t\t\t\t左侧缩略图,若thumb有值,则不会显示扩展图标\n * @property {String} \tthumbSize = [lg|base|sm]\t\t略缩图大小\n * \t@value \t lg\t\t\t大图\n * \t@value \t base\t\t一般\n * \t@value \t sm\t\t\t小图\n * @property {String} \tbadgeText\t\t\t\t\t\t数字角标内容\n * @property {String} \tbadgeType \t\t\t\t\t\t数字角标类型,参考[uni-icons](https://ext.dcloud.net.cn/plugin?id=21)\n * @property {Object} badgeStyle 数字角标样式\n * @property {String} \trightText \t\t\t\t\t\t右侧文字内容\n * @property {Boolean} \tdisabled = [true|false]\t\t\t是否禁用\n * @property {Boolean} \tclickable = [true|false] \t\t是否开启点击反馈\n * @property {String} \tlink = [navigateTo|redirectTo|reLaunch|switchTab] 是否展示右侧箭头并开启点击反馈\n * @value \tnavigateTo \t同 uni.navigateTo()\n * \t@value redirectTo \t同 uni.redirectTo()\n * \t@value reLaunch \t同 uni.reLaunch()\n * \t@value switchTab \t同 uni.switchTab()\n * @property {String | PageURIString} \tto \t\t\t跳转目标页面\n * @property {Boolean} \tshowBadge = [true|false] \t\t是否显示数字角标\n * @property {Boolean} \tshowSwitch = [true|false] \t\t是否显示Switch\n * @property {Boolean} \tswitchChecked = [true|false] \tSwitch是否被选中\n * @property {Boolean} \tshowExtraIcon = [true|false] \t左侧是否显示扩展图标\n * @property {Object} \textraIcon \t\t\t\t\t\t扩展图标参数,格式为 {color: '#4cd964',size: '22',type: 'spinner'}\n * @property {String} \tdirection = [row|column]\t\t排版方向\n * @value row \t\t\t水平排列\n * @value column \t\t垂直排列\n * @event {Function} \tclick \t\t\t\t\t\t\t点击 uniListItem 触发事件\n * @event {Function} \tswitchChange \t\t\t\t\t点击切换 Switch 时触发\n */\nvar _default2 = {\n name: 'UniListItem',\n emits: ['click', 'switchChange'],\n props: {\n direction: {\n type: String,\n default: 'row'\n },\n title: {\n type: String,\n default: ''\n },\n note: {\n type: String,\n default: ''\n },\n ellipsis: {\n type: [Number, String],\n default: 0\n },\n disabled: {\n type: [Boolean, String],\n default: false\n },\n clickable: {\n type: Boolean,\n default: false\n },\n showArrow: {\n type: [Boolean, String],\n default: false\n },\n link: {\n type: [Boolean, String],\n default: false\n },\n to: {\n type: String,\n default: ''\n },\n showBadge: {\n type: [Boolean, String],\n default: false\n },\n showSwitch: {\n type: [Boolean, String],\n default: false\n },\n switchChecked: {\n type: [Boolean, String],\n default: false\n },\n badgeText: {\n type: String,\n default: ''\n },\n badgeType: {\n type: String,\n default: 'success'\n },\n badgeStyle: {\n type: Object,\n default: function _default() {\n return {};\n }\n },\n rightText: {\n type: String,\n default: ''\n },\n thumb: {\n type: String,\n default: ''\n },\n thumbSize: {\n type: String,\n default: 'base'\n },\n showExtraIcon: {\n type: [Boolean, String],\n default: false\n },\n extraIcon: {\n type: Object,\n default: function _default() {\n return {\n type: '',\n color: '#000000',\n size: 20\n };\n }\n },\n border: {\n type: Boolean,\n default: true\n }\n },\n // inject: ['list'],\n data: function data() {\n return {\n isFirstChild: false\n };\n },\n mounted: function mounted() {\n this.list = this.getForm();\n // 判断是否存在 uni-list 组件\n if (this.list) {\n if (!this.list.firstChildAppend) {\n this.list.firstChildAppend = true;\n this.isFirstChild = true;\n }\n }\n },\n methods: {\n /**\n * 获取父元素实例\n */\n getForm: function getForm() {\n var name = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 'uniList';\n var parent = this.$parent;\n var parentName = parent.$options.name;\n while (parentName !== name) {\n parent = parent.$parent;\n if (!parent) return false;\n parentName = parent.$options.name;\n }\n return parent;\n },\n onClick: function onClick() {\n if (this.to !== '') {\n this.openPage();\n return;\n }\n if (this.clickable || this.link) {\n this.$emit('click', {\n data: {}\n });\n }\n },\n onSwitchChange: function onSwitchChange(e) {\n this.$emit('switchChange', e.detail);\n },\n openPage: function openPage() {\n if (['navigateTo', 'redirectTo', 'reLaunch', 'switchTab'].indexOf(this.link) !== -1) {\n this.pageApi(this.link);\n } else {\n this.pageApi('navigateTo');\n }\n },\n pageApi: function pageApi(api) {\n var _this = this;\n var callback = {\n url: this.to,\n success: function success(res) {\n _this.$emit('click', {\n data: res\n });\n },\n fail: function fail(err) {\n _this.$emit('click', {\n data: err\n });\n }\n };\n switch (api) {\n case 'navigateTo':\n uni.navigateTo(callback);\n break;\n case 'redirectTo':\n uni.redirectTo(callback);\n break;\n case 'reLaunch':\n uni.reLaunch(callback);\n break;\n case 'switchTab':\n uni.switchTab(callback);\n break;\n default:\n uni.navigateTo(callback);\n }\n }\n }\n};\nexports.default = _default2;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInVuaS1hcHA6Ly8vdW5pX21vZHVsZXMvdW5pLWxpc3QvY29tcG9uZW50cy91bmktbGlzdC1pdGVtL3VuaS1saXN0LWl0ZW0udnVlIl0sIm5hbWVzIjpbIm5hbWUiLCJlbWl0cyIsInByb3BzIiwiZGlyZWN0aW9uIiwidHlwZSIsImRlZmF1bHQiLCJ0aXRsZSIsIm5vdGUiLCJlbGxpcHNpcyIsImRpc2FibGVkIiwiY2xpY2thYmxlIiwic2hvd0Fycm93IiwibGluayIsInRvIiwic2hvd0JhZGdlIiwic2hvd1N3aXRjaCIsInN3aXRjaENoZWNrZWQiLCJiYWRnZVRleHQiLCJiYWRnZVR5cGUiLCJiYWRnZVN0eWxlIiwicmlnaHRUZXh0IiwidGh1bWIiLCJ0aHVtYlNpemUiLCJzaG93RXh0cmFJY29uIiwiZXh0cmFJY29uIiwiY29sb3IiLCJzaXplIiwiYm9yZGVyIiwiZGF0YSIsImlzRmlyc3RDaGlsZCIsIm1vdW50ZWQiLCJtZXRob2RzIiwiZ2V0Rm9ybSIsInBhcmVudCIsInBhcmVudE5hbWUiLCJvbkNsaWNrIiwib25Td2l0Y2hDaGFuZ2UiLCJvcGVuUGFnZSIsInBhZ2VBcGkiLCJ1cmwiLCJzdWNjZXNzIiwiZmFpbCIsInVuaSJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQStDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQWpDQSxnQkFrQ0E7RUFDQUE7RUFDQUM7RUFDQUM7SUFDQUM7TUFDQUM7TUFDQUM7SUFDQTtJQUNBQztNQUNBRjtNQUNBQztJQUNBO0lBQ0FFO01BQ0FIO01BQ0FDO0lBQ0E7SUFDQUc7TUFDQUo7TUFDQUM7SUFDQTtJQUNBSTtNQUNBTDtNQUNBQztJQUNBO0lBQ0FLO01BQ0FOO01BQ0FDO0lBQ0E7SUFDQU07TUFDQVA7TUFDQUM7SUFDQTtJQUNBTztNQUNBUjtNQUNBQztJQUNBO0lBQ0FRO01BQ0FUO01BQ0FDO0lBQ0E7SUFDQVM7TUFDQVY7TUFDQUM7SUFDQTtJQUNBVTtNQUNBWDtNQUNBQztJQUNBO0lBQ0FXO01BQ0FaO01BQ0FDO0lBQ0E7SUFDQVk7TUFDQWI7TUFDQUM7SUFDQTtJQUNBYTtNQUNBZDtNQUNBQztJQUNBO0lBQ0FjO01BQ0FmO01BQ0FDO1FBQ0E7TUFDQTtJQUNBO0lBQ0FlO01BQ0FoQjtNQUNBQztJQUNBO0lBQ0FnQjtNQUNBakI7TUFDQUM7SUFDQTtJQUNBaUI7TUFDQWxCO01BQ0FDO0lBQ0E7SUFDQWtCO01BQ0FuQjtNQUNBQztJQUNBO0lBQ0FtQjtNQUNBcEI7TUFDQUM7UUFDQTtVQUNBRDtVQUNBcUI7VUFDQUM7UUFDQTtNQUNBO0lBQ0E7SUFDQUM7TUFDQXZCO01BQ0FDO0lBQ0E7RUFDQTtFQUNBO0VBQ0F1QjtJQUNBO01BQ0FDO0lBQ0E7RUFDQTtFQUNBQztJQUNBO0lBQ0E7SUFDQTtNQUNBO1FBQ0E7UUFDQTtNQUNBO0lBQ0E7RUFDQTtFQUNBQztJQUNBO0FBQ0E7QUFDQTtJQUNBQztNQUFBO01BQ0E7TUFDQTtNQUNBO1FBQ0FDO1FBQ0E7UUFDQUM7TUFDQTtNQUNBO0lBQ0E7SUFDQUM7TUFDQTtRQUNBO1FBQ0E7TUFDQTtNQUNBO1FBQ0E7VUFDQVA7UUFDQTtNQUNBO0lBQ0E7SUFDQVE7TUFDQTtJQUNBO0lBQ0FDO01BQ0E7UUFDQTtNQUNBO1FBQ0E7TUFDQTtJQUNBO0lBQ0FDO01BQUE7TUFDQTtRQUNBQztRQUNBQztVQUNBO1lBQ0FaO1VBQ0E7UUFDQTtRQUNBYTtVQUNBO1lBQ0FiO1VBQ0E7UUFDQTtNQUNBO01BQ0E7UUFDQTtVQUNBYztVQUNBO1FBQ0E7VUFDQUE7VUFDQTtRQUNBO1VBQ0FBO1VBQ0E7UUFDQTtVQUNBQTtVQUNBO1FBQ0E7VUFDQUE7TUFBQTtJQUVBO0VBQ0E7QUFDQTtBQUFBIiwiZmlsZSI6IjMxLmpzIiwic291cmNlc0NvbnRlbnQiOlsiPHRlbXBsYXRlPlxuXHQ8IS0tICNpZmRlZiBBUFAtTlZVRSAtLT5cblx0PGNlbGw+XG5cdFx0PCEtLSAjZW5kaWYgLS0+XG5cblx0XHQ8dmlldyA6Y2xhc3M9XCJ7ICd1bmktbGlzdC1pdGVtLS1kaXNhYmxlZCc6IGRpc2FibGVkIH1cIlxuXHRcdFx0OmhvdmVyLWNsYXNzPVwiKCFjbGlja2FibGUgJiYgIWxpbmspIHx8IGRpc2FibGVkIHx8IHNob3dTd2l0Y2ggPyAnJyA6ICd1bmktbGlzdC1pdGVtLS1ob3ZlcidcIlxuXHRcdFx0Y2xhc3M9XCJ1bmktbGlzdC1pdGVtXCIgQGNsaWNrPVwib25DbGlja1wiPlxuXHRcdFx0PHZpZXcgdi1pZj1cIiFpc0ZpcnN0Q2hpbGRcIiBjbGFzcz1cImJvcmRlci0tbGVmdFwiIDpjbGFzcz1cInsgJ3VuaS1saXN0LS1ib3JkZXInOiBib3JkZXIgfVwiPjwvdmlldz5cblx0XHRcdDx2aWV3IGNsYXNzPVwidW5pLWxpc3QtaXRlbV9fY29udGFpbmVyXCJcblx0XHRcdFx0OmNsYXNzPVwieyAnY29udGFpbmVyLS1yaWdodCc6IHNob3dBcnJvdyB8fCBsaW5rLCAnZmxleC0tZGlyZWN0aW9uJzogZGlyZWN0aW9uID09PSAnY29sdW1uJyB9XCI+XG5cdFx0XHRcdDxzbG90IG5hbWU9XCJoZWFkZXJcIj5cblx0XHRcdFx0XHQ8dmlldyBjbGFzcz1cInVuaS1saXN0LWl0ZW1fX2hlYWRlclwiPlxuXHRcdFx0XHRcdFx0PHZpZXcgdi1pZj1cInRodW1iXCIgY2xhc3M9XCJ1bmktbGlzdC1pdGVtX19pY29uXCI+XG5cdFx0XHRcdFx0XHRcdDxpbWFnZSA6c3JjPVwidGh1bWJcIiBjbGFzcz1cInVuaS1saXN0LWl0ZW1fX2ljb24taW1nXCIgOmNsYXNzPVwiWyd1bmktbGlzdC0tJyArIHRodW1iU2l6ZV1cIiAvPlxuXHRcdFx0XHRcdFx0PC92aWV3PlxuXHRcdFx0XHRcdFx0PHZpZXcgdi1lbHNlLWlmPVwic2hvd0V4dHJhSWNvblwiIGNsYXNzPVwidW5pLWxpc3QtaXRlbV9faWNvblwiPlxuXHRcdFx0XHRcdFx0XHQ8dW5pLWljb25zIDpjb2xvcj1cImV4dHJhSWNvbi5jb2xvclwiIDpzaXplPVwiZXh0cmFJY29uLnNpemVcIiA6dHlwZT1cImV4dHJhSWNvbi50eXBlXCIgLz5cblx0XHRcdFx0XHRcdDwvdmlldz5cblx0XHRcdFx0XHQ8L3ZpZXc+XG5cdFx0XHRcdDwvc2xvdD5cblx0XHRcdFx0PHNsb3QgbmFtZT1cImJvZHlcIj5cblx0XHRcdFx0XHQ8dmlldyBjbGFzcz1cInVuaS1saXN0LWl0ZW1fX2NvbnRlbnRcIlxuXHRcdFx0XHRcdFx0OmNsYXNzPVwieyAndW5pLWxpc3QtaXRlbV9fY29udGVudC0tY2VudGVyJzogdGh1bWIgfHwgc2hvd0V4dHJhSWNvbiB8fCBzaG93QmFkZ2UgfHwgc2hvd1N3aXRjaCB9XCI+XG5cdFx0XHRcdFx0XHQ8dGV4dCB2LWlmPVwidGl0bGVcIiBjbGFzcz1cInVuaS1saXN0LWl0ZW1fX2NvbnRlbnQtdGl0bGVcIlxuXHRcdFx0XHRcdFx0XHQ6Y2xhc3M9XCJbZWxsaXBzaXMgIT09IDAgJiYgZWxsaXBzaXMgPD0gMiA/ICd1bmktZWxsaXBzaXMtJyArIGVsbGlwc2lzIDogJyddXCI+e3sgdGl0bGUgfX08L3RleHQ+XG5cdFx0XHRcdFx0XHQ8dGV4dCB2LWlmPVwibm90ZVwiIGNsYXNzPVwidW5pLWxpc3QtaXRlbV9fY29udGVudC1ub3RlXCI+e3sgbm90ZSB9fTwvdGV4dD5cblx0XHRcdFx0XHQ8L3ZpZXc+XG5cdFx0XHRcdDwvc2xvdD5cblx0XHRcdFx0PHNsb3QgbmFtZT1cImZvb3RlclwiPlxuXHRcdFx0XHRcdDx2aWV3IHYtaWY9XCJyaWdodFRleHQgfHwgc2hvd0JhZGdlIHx8IHNob3dTd2l0Y2hcIiBjbGFzcz1cInVuaS1saXN0LWl0ZW1fX2V4dHJhXCJcblx0XHRcdFx0XHRcdDpjbGFzcz1cInsgJ2ZsZXgtLWp1c3RpZnknOiBkaXJlY3Rpb24gPT09ICdjb2x1bW4nIH1cIj5cblx0XHRcdFx0XHRcdDx0ZXh0IHYtaWY9XCJyaWdodFRleHRcIiBjbGFzcz1cInVuaS1saXN0LWl0ZW1fX2V4dHJhLXRleHRcIj57eyByaWdodFRleHQgfX08L3RleHQ+XG5cdFx0XHRcdFx0XHQ8dW5pLWJhZGdlIHYtaWY9XCJzaG93QmFkZ2VcIiA6dHlwZT1cImJhZGdlVHlwZVwiIDp0ZXh0PVwiYmFkZ2VUZXh0XCIgOmN1c3RvbS1zdHlsZT1cImJhZGdlU3R5bGVcIiAvPlxuXHRcdFx0XHRcdFx0PHN3aXRjaCB2LWlmPVwic2hvd1N3aXRjaFwiIDpkaXNhYmxlZD1cImRpc2FibGVkXCIgOmNoZWNrZWQ9XCJzd2l0Y2hDaGVja2VkXCJcblx0XHRcdFx0XHRcdFx0QGNoYW5nZT1cIm9uU3dpdGNoQ2hhbmdlXCIgLz5cblx0XHRcdFx0XHQ8L3ZpZXc+XG5cdFx0XHRcdDwvc2xvdD5cblx0XHRcdDwvdmlldz5cblx0XHRcdDx1bmktaWNvbnMgdi1pZj1cInNob3dBcnJvdyB8fCBsaW5rXCIgOnNpemU9XCIxNlwiIGNsYXNzPVwidW5pLWljb24td3JhcHBlclwiIGNvbG9yPVwiI2JiYlwiIHR5cGU9XCJhcnJvd3JpZ2h0XCIgLz5cblx0XHQ8L3ZpZXc+XG5cdFx0PCEtLSAjaWZkZWYgQVBQLU5WVUUgLS0+XG5cdDwvY2VsbD5cblx0PCEtLSAjZW5kaWYgLS0+XG48L3RlbXBsYXRlPlxuXG48c2NyaXB0PlxuXHQvKipcblx0ICogTGlzdEl0ZW0g5YiX6KGo5a2Q57uE5Lu2XG5cdCAqIEBkZXNjcmlwdGlvbiDliJfooajlrZDnu4Tku7Zcblx0ICogQHR1dG9yaWFsIGh0dHBzOi8vZXh0LmRjbG91ZC5uZXQuY24vcGx1Z2luP2lkPTI0XG5cdCAqIEBwcm9wZXJ0eSB7U3RyaW5nfSBcdHRpdGxlIFx0XHRcdFx0XHRcdFx05qCH6aKYXG5cdCAqIEBwcm9wZXJ0eSB7U3RyaW5nfSBcdG5vdGUgXHRcdFx0XHRcdFx0XHTmj4/ov7Bcblx0ICogQHByb3BlcnR5IHtTdHJpbmd9IFx0dGh1bWIgXHRcdFx0XHRcdFx0XHTlt6bkvqfnvKnnlaXlm77vvIzoi6V0aHVtYuacieWAvO+8jOWImeS4jeS8muaYvuekuuaJqeWxleWbvuagh1xuXHQgKiBAcHJvcGVydHkge1N0cmluZ30gIFx0dGh1bWJTaXplID0gW2xnfGJhc2V8c21dXHRcdOeVpee8qeWbvuWkp+Wwj1xuXHQgKiBcdEB2YWx1ZSBcdCBsZ1x0XHRcdOWkp+WbvlxuXHQgKiBcdEB2YWx1ZSBcdCBiYXNlXHRcdOS4gOiIrFxuXHQgKiBcdEB2YWx1ZSBcdCBzbVx0XHRcdOWwj+WbvlxuXHQgKiBAcHJvcGVydHkge1N0cmluZ30gXHRiYWRnZVRleHRcdFx0XHRcdFx0XHTmlbDlrZfop5LmoIflhoXlrrlcblx0ICogQHByb3BlcnR5IHtTdHJpbmd9IFx0YmFkZ2VUeXBlIFx0XHRcdFx0XHRcdOaVsOWtl+inkuagh+exu+Wei++8jOWPguiAg1t1bmktaWNvbnNdKGh0dHBzOi8vZXh0LmRjbG91ZC5uZXQuY24vcGx1Z2luP2lkPTIxKVxuXHQgKiBAcHJvcGVydHkge09iamVjdH0gICBiYWRnZVN0eWxlICAgICAgICAgICDmlbDlrZfop5LmoIfmoLflvI9cblx0ICogQHByb3BlcnR5IHtTdHJpbmd9IFx0cmlnaHRUZXh0IFx0XHRcdFx0XHRcdOWPs+S+p+aWh+Wtl+WGheWuuVxuXHQgKiBAcHJvcGVydHkge0Jvb2xlYW59IFx0ZGlzYWJsZWQgPSBbdHJ1ZXxmYWxzZV1cdFx0XHTmmK/lkKbnpoHnlKhcblx0ICogQHByb3BlcnR5IHtCb29sZWFufSBcdGNsaWNrYWJsZSA9IFt0cnVlfGZhbHNlXSBcdFx05piv5ZCm5byA5ZCv54K55Ye75Y+N6aaIXG5cdCAqIEBwcm9wZXJ0eSB7U3RyaW5nfSBcdGxpbmsgPSBbbmF2aWdhdGVUb3xyZWRpcmVjdFRvfHJlTGF1bmNofHN3aXRjaFRhYl0g5piv5ZCm5bGV56S65Y+z5L6n566t5aS05bm25byA5ZCv54K55Ye75Y+N6aaIXG5cdCAqICBAdmFsdWUgXHRuYXZpZ2F0ZVRvIFx05ZCMIHVuaS5uYXZpZ2F0ZVRvKClcblx0ICogXHRAdmFsdWUgcmVkaXJlY3RUbyBcdOWQjCB1bmkucmVkaXJlY3RUbygpXG5cdCAqIFx0QHZhbHVlIHJlTGF1bmNoICAgXHTlkIwgdW5pLnJlTGF1bmNoKClcblx0ICogXHRAdmFsdWUgc3dpdGNoVGFiICBcdOWQjCB1bmkuc3dpdGNoVGFiKClcblx0ICogQHByb3BlcnR5IHtTdHJpbmcgfCBQYWdlVVJJU3RyaW5nfSBcdHRvICBcdFx0XHTot7Povaznm67moIfpobXpnaJcblx0ICogQHByb3BlcnR5IHtCb29sZWFufSBcdHNob3dCYWRnZSA9IFt0cnVlfGZhbHNlXSBcdFx05piv5ZCm5pi+56S65pWw5a2X6KeS5qCHXG5cdCAqIEBwcm9wZXJ0eSB7Qm9vbGVhbn0gXHRzaG93U3dpdGNoID0gW3RydWV8ZmFsc2VdIFx0XHTmmK/lkKbmmL7npLpTd2l0Y2hcblx0ICogQHByb3BlcnR5IHtCb29sZWFufSBcdHN3aXRjaENoZWNrZWQgPSBbdHJ1ZXxmYWxzZV0gXHRTd2l0Y2jmmK/lkKbooqvpgInkuK1cblx0ICogQHByb3BlcnR5IHtCb29sZWFufSBcdHNob3dFeHRyYUljb24gPSBbdHJ1ZXxmYWxzZV0gXHTlt6bkvqfmmK/lkKbmmL7npLrmianlsZXlm77moIdcblx0ICogQHByb3BlcnR5IHtPYmplY3R9IFx0ZXh0cmFJY29uIFx0XHRcdFx0XHRcdOaJqeWxleWbvuagh+WPguaVsO+8jOagvOW8j+S4uiB7Y29sb3I6ICcjNGNkOTY0JyxzaXplOiAnMjInLHR5cGU6ICdzcGlubmVyJ31cblx0ICogQHByb3BlcnR5IHtTdHJpbmd9IFx0ZGlyZWN0aW9uID0gW3Jvd3xjb2x1bW5dXHRcdOaOkueJiOaWueWQkVxuXHQgKiBAdmFsdWUgcm93IFx0XHRcdOawtOW5s+aOkuWIl1xuXHQgKiBAdmFsdWUgY29sdW1uIFx0XHTlnoLnm7TmjpLliJdcblx0ICogQGV2ZW50IHtGdW5jdGlvbn0gXHRjbGljayBcdFx0XHRcdFx0XHRcdOeCueWHuyB1bmlMaXN0SXRlbSDop6blj5Hkuovku7Zcblx0ICogQGV2ZW50IHtGdW5jdGlvbn0gXHRzd2l0Y2hDaGFuZ2UgXHRcdFx0XHRcdOeCueWHu+WIh+aNoiBTd2l0Y2gg5pe26Kem5Y+RXG5cdCAqL1xuXHRleHBvcnQgZGVmYXVsdCB7XG5cdFx0bmFtZTogJ1VuaUxpc3RJdGVtJyxcblx0XHRlbWl0czogWydjbGljaycsICdzd2l0Y2hDaGFuZ2UnXSxcblx0XHRwcm9wczoge1xuXHRcdFx0ZGlyZWN0aW9uOiB7XG5cdFx0XHRcdHR5cGU6IFN0cmluZyxcblx0XHRcdFx0ZGVmYXVsdDogJ3Jvdydcblx0XHRcdH0sXG5cdFx0XHR0aXRsZToge1xuXHRcdFx0XHR0eXBlOiBTdHJpbmcsXG5cdFx0XHRcdGRlZmF1bHQ6ICcnXG5cdFx0XHR9LFxuXHRcdFx0bm90ZToge1xuXHRcdFx0XHR0eXBlOiBTdHJpbmcsXG5cdFx0XHRcdGRlZmF1bHQ6ICcnXG5cdFx0XHR9LFxuXHRcdFx0ZWxsaXBzaXM6IHtcblx0XHRcdFx0dHlwZTogW051bWJlcixTdHJpbmddLFxuXHRcdFx0XHRkZWZhdWx0OiAwXG5cdFx0XHR9LFxuXHRcdFx0ZGlzYWJsZWQ6IHtcblx0XHRcdFx0dHlwZTogW0Jvb2xlYW4sIFN0cmluZ10sXG5cdFx0XHRcdGRlZmF1bHQ6IGZhbHNlXG5cdFx0XHR9LFxuXHRcdFx0Y2xpY2thYmxlOiB7XG5cdFx0XHRcdHR5cGU6IEJvb2xlYW4sXG5cdFx0XHRcdGRlZmF1bHQ6IGZhbHNlXG5cdFx0XHR9LFxuXHRcdFx0c2hvd0Fycm93OiB7XG5cdFx0XHRcdHR5cGU6IFtCb29sZWFuLCBTdHJpbmddLFxuXHRcdFx0XHRkZWZhdWx0OiBmYWxzZVxuXHRcdFx0fSxcblx0XHRcdGxpbms6IHtcblx0XHRcdFx0dHlwZTogW0Jvb2xlYW4sIFN0cmluZ10sXG5cdFx0XHRcdGRlZmF1bHQ6IGZhbHNlXG5cdFx0XHR9LFxuXHRcdFx0dG86IHtcblx0XHRcdFx0dHlwZTogU3RyaW5nLFxuXHRcdFx0XHRkZWZhdWx0OiAnJ1xuXHRcdFx0fSxcblx0XHRcdHNob3dCYWRnZToge1xuXHRcdFx0XHR0eXBlOiBbQm9vbGVhbiwgU3RyaW5nXSxcblx0XHRcdFx0ZGVmYXVsdDogZmFsc2Vcblx0XHRcdH0sXG5cdFx0XHRzaG93U3dpdGNoOiB7XG5cdFx0XHRcdHR5cGU6IFtCb29sZWFuLCBTdHJpbmddLFxuXHRcdFx0XHRkZWZhdWx0OiBmYWxzZVxuXHRcdFx0fSxcblx0XHRcdHN3aXRjaENoZWNrZWQ6IHtcblx0XHRcdFx0dHlwZTogW0Jvb2xlYW4sIFN0cmluZ10sXG5cdFx0XHRcdGRlZmF1bHQ6IGZhbHNlXG5cdFx0XHR9LFxuXHRcdFx0YmFkZ2VUZXh0OiB7XG5cdFx0XHRcdHR5cGU6IFN0cmluZyxcblx0XHRcdFx0ZGVmYXVsdDogJydcblx0XHRcdH0sXG5cdFx0XHRiYWRnZVR5cGU6IHtcblx0XHRcdFx0dHlwZTogU3RyaW5nLFxuXHRcdFx0XHRkZWZhdWx0OiAnc3VjY2Vzcydcblx0XHRcdH0sXG5cdFx0XHRiYWRnZVN0eWxlOntcblx0XHRcdFx0dHlwZTogT2JqZWN0LFxuXHRcdFx0XHRkZWZhdWx0ICgpIHtcblx0XHRcdFx0XHRyZXR1cm4ge31cblx0XHRcdFx0fVxuXHRcdFx0fSxcblx0XHRcdHJpZ2h0VGV4dDoge1xuXHRcdFx0XHR0eXBlOiBTdHJpbmcsXG5cdFx0XHRcdGRlZmF1bHQ6ICcnXG5cdFx0XHR9LFxuXHRcdFx0dGh1bWI6IHtcblx0XHRcdFx0dHlwZTogU3RyaW5nLFxuXHRcdFx0XHRkZWZhdWx0OiAnJ1xuXHRcdFx0fSxcblx0XHRcdHRodW1iU2l6ZToge1xuXHRcdFx0XHR0eXBlOiBTdHJpbmcsXG5cdFx0XHRcdGRlZmF1bHQ6ICdiYXNlJ1xuXHRcdFx0fSxcblx0XHRcdHNob3dFeHRyYUljb246IHtcblx0XHRcdFx0dHlwZTogW0Jvb2xlYW4sIFN0cmluZ10sXG5cdFx0XHRcdGRlZmF1bHQ6IGZhbHNlXG5cdFx0XHR9LFxuXHRcdFx0ZXh0cmFJY29uOiB7XG5cdFx0XHRcdHR5cGU6IE9iamVjdCxcblx0XHRcdFx0ZGVmYXVsdCAoKSB7XG5cdFx0XHRcdFx0cmV0dXJuIHtcblx0XHRcdFx0XHRcdHR5cGU6ICcnLFxuXHRcdFx0XHRcdFx0Y29sb3I6ICcjMDAwMDAwJyxcblx0XHRcdFx0XHRcdHNpemU6IDIwXG5cdFx0XHRcdFx0fTtcblx0XHRcdFx0fVxuXHRcdFx0fSxcblx0XHRcdGJvcmRlcjoge1xuXHRcdFx0XHR0eXBlOiBCb29sZWFuLFxuXHRcdFx0XHRkZWZhdWx0OiB0cnVlXG5cdFx0XHR9XG5cdFx0fSxcblx0XHQvLyBpbmplY3Q6IFsnbGlzdCddLFxuXHRcdGRhdGEoKSB7XG5cdFx0XHRyZXR1cm4ge1xuXHRcdFx0XHRpc0ZpcnN0Q2hpbGQ6IGZhbHNlXG5cdFx0XHR9O1xuXHRcdH0sXG5cdFx0bW91bnRlZCgpIHtcblx0XHRcdHRoaXMubGlzdCA9IHRoaXMuZ2V0Rm9ybSgpXG5cdFx0XHQvLyDliKTmlq3mmK/lkKblrZjlnKggdW5pLWxpc3Qg57uE5Lu2XG5cdFx0XHRpZiAodGhpcy5saXN0KSB7XG5cdFx0XHRcdGlmICghdGhpcy5saXN0LmZpcnN0Q2hpbGRBcHBlbmQpIHtcblx0XHRcdFx0XHR0aGlzLmxpc3QuZmlyc3RDaGlsZEFwcGVuZCA9IHRydWU7XG5cdFx0XHRcdFx0dGhpcy5pc0ZpcnN0Q2hpbGQgPSB0cnVlO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fSxcblx0XHRtZXRob2RzOiB7XG5cdFx0XHQvKipcblx0XHRcdCAqIOiOt+WPlueItuWFg+e0oOWunuS+i1xuXHRcdFx0ICovXG5cdFx0XHRnZXRGb3JtKG5hbWUgPSAndW5pTGlzdCcpIHtcblx0XHRcdFx0bGV0IHBhcmVudCA9IHRoaXMuJHBhcmVudDtcblx0XHRcdFx0bGV0IHBhcmVudE5hbWUgPSBwYXJlbnQuJG9wdGlvbnMubmFtZTtcblx0XHRcdFx0d2hpbGUgKHBhcmVudE5hbWUgIT09IG5hbWUpIHtcblx0XHRcdFx0XHRwYXJlbnQgPSBwYXJlbnQuJHBhcmVudDtcblx0XHRcdFx0XHRpZiAoIXBhcmVudCkgcmV0dXJuIGZhbHNlXG5cdFx0XHRcdFx0cGFyZW50TmFtZSA9IHBhcmVudC4kb3B0aW9ucy5uYW1lO1xuXHRcdFx0XHR9XG5cdFx0XHRcdHJldHVybiBwYXJlbnQ7XG5cdFx0XHR9LFxuXHRcdFx0b25DbGljaygpIHtcblx0XHRcdFx0aWYgKHRoaXMudG8gIT09ICcnKSB7XG5cdFx0XHRcdFx0dGhpcy5vcGVuUGFnZSgpO1xuXHRcdFx0XHRcdHJldHVybjtcblx0XHRcdFx0fVxuXHRcdFx0XHRpZiAodGhpcy5jbGlja2FibGUgfHwgdGhpcy5saW5rKSB7XG5cdFx0XHRcdFx0dGhpcy4kZW1pdCgnY2xpY2snLCB7XG5cdFx0XHRcdFx0XHRkYXRhOiB7fVxuXHRcdFx0XHRcdH0pO1xuXHRcdFx0XHR9XG5cdFx0XHR9LFxuXHRcdFx0b25Td2l0Y2hDaGFuZ2UoZSkge1xuXHRcdFx0XHR0aGlzLiRlbWl0KCdzd2l0Y2hDaGFuZ2UnLCBlLmRldGFpbCk7XG5cdFx0XHR9LFxuXHRcdFx0b3BlblBhZ2UoKSB7XG5cdFx0XHRcdGlmIChbJ25hdmlnYXRlVG8nLCAncmVkaXJlY3RUbycsICdyZUxhdW5jaCcsICdzd2l0Y2hUYWInXS5pbmRleE9mKHRoaXMubGluaykgIT09IC0xKSB7XG5cdFx0XHRcdFx0dGhpcy5wYWdlQXBpKHRoaXMubGluayk7XG5cdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0dGhpcy5wYWdlQXBpKCduYXZpZ2F0ZVRvJyk7XG5cdFx0XHRcdH1cblx0XHRcdH0sXG5cdFx0XHRwYWdlQXBpKGFwaSkge1xuXHRcdFx0XHRsZXQgY2FsbGJhY2sgPSB7XG5cdFx0XHRcdFx0dXJsOiB0aGlzLnRvLFxuXHRcdFx0XHRcdHN1Y2Nlc3M6IHJlcyA9PiB7XG5cdFx0XHRcdFx0XHR0aGlzLiRlbWl0KCdjbGljaycsIHtcblx0XHRcdFx0XHRcdFx0ZGF0YTogcmVzXG5cdFx0XHRcdFx0XHR9KTtcblx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdGZhaWw6IGVyciA9PiB7XG5cdFx0XHRcdFx0XHR0aGlzLiRlbWl0KCdjbGljaycsIHtcblx0XHRcdFx0XHRcdFx0ZGF0YTogZXJyXG5cdFx0XHRcdFx0XHR9KTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdFx0c3dpdGNoIChhcGkpIHtcblx0XHRcdFx0XHRjYXNlICduYXZpZ2F0ZVRvJzpcblx0XHRcdFx0XHRcdHVuaS5uYXZpZ2F0ZVRvKGNhbGxiYWNrKVxuXHRcdFx0XHRcdFx0YnJlYWtcblx0XHRcdFx0XHRjYXNlICdyZWRpcmVjdFRvJzpcblx0XHRcdFx0XHRcdHVuaS5yZWRpcmVjdFRvKGNhbGxiYWNrKVxuXHRcdFx0XHRcdFx0YnJlYWtcblx0XHRcdFx0XHRjYXNlICdyZUxhdW5jaCc6XG5cdFx0XHRcdFx0XHR1bmkucmVMYXVuY2goY2FsbGJhY2spXG5cdFx0XHRcdFx0XHRicmVha1xuXHRcdFx0XHRcdGNhc2UgJ3N3aXRjaFRhYic6XG5cdFx0XHRcdFx0XHR1bmkuc3dpdGNoVGFiKGNhbGxiYWNrKVxuXHRcdFx0XHRcdFx0YnJlYWtcblx0XHRcdFx0XHRkZWZhdWx0OlxuXHRcdFx0XHRcdHVuaS5uYXZpZ2F0ZVRvKGNhbGxiYWNrKVxuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXHR9O1xuPC9zY3JpcHQ+XG5cbjxzdHlsZSBsYW5nPVwic2Nzc1wiPlxuXHQkdW5pLWZvbnQtc2l6ZS1zbToxMnB4O1xuXHQkdW5pLWZvbnQtc2l6ZS1iYXNlOjE0cHg7XG5cdCR1bmktZm9udC1zaXplLWxnOjE2cHg7XG5cdCR1bmktc3BhY2luZy1jb2wtbGc6IDEycHg7XG5cdCR1bmktc3BhY2luZy1yb3ctbGc6IDE1cHg7XG5cdCR1bmktaW1nLXNpemUtc206MjBweDtcblx0JHVuaS1pbWctc2l6ZS1iYXNlOjI2cHg7XG5cdCR1bmktaW1nLXNpemUtbGc6NDBweDtcblx0JHVuaS1ib3JkZXItY29sb3I6I2U1ZTVlNTtcblx0JHVuaS1iZy1jb2xvci1ob3ZlcjojZjFmMWYxO1xuXHQkdW5pLXRleHQtY29sb3ItZ3JleTojOTk5O1xuXHQkbGlzdC1pdGVtLXBkOiAkdW5pLXNwYWNpbmctY29sLWxnICR1bmktc3BhY2luZy1yb3ctbGc7XG5cdC51bmktbGlzdC1pdGVtIHtcblx0XHQvKiAjaWZuZGVmIEFQUC1OVlVFICovXG5cdFx0ZGlzcGxheTogZmxleDtcblx0XHQvKiAjZW5kaWYgKi9cblx0XHRmb250LXNpemU6ICR1bmktZm9udC1zaXplLWxnO1xuXHRcdHBvc2l0aW9uOiByZWxhdGl2ZTtcblx0XHRqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG5cdFx0YWxpZ24taXRlbXM6IGNlbnRlcjtcblx0XHRiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmO1xuXHRcdGZsZXgtZGlyZWN0aW9uOiByb3c7XG5cdFx0LyogI2lmZGVmIEg1ICovXG5cdFx0Y3Vyc29yOiBwb2ludGVyO1xuXHRcdC8qICNlbmRpZiAqL1xuXHR9XG5cdC51bmktbGlzdC1pdGVtLS1kaXNhYmxlZCB7XG5cdFx0b3BhY2l0eTogMC4zO1xuXHR9XG5cdC51bmktbGlzdC1pdGVtLS1ob3ZlciB7XG5cdFx0YmFja2dyb3VuZC1jb2xvcjogJHVuaS1iZy1jb2xvci1ob3Zlcjtcblx0fVxuXHQudW5pLWxpc3QtaXRlbV9fY29udGFpbmVyIHtcblx0XHRwb3NpdGlvbjogcmVsYXRpdmU7XG5cdFx0LyogI2lmbmRlZiBBUFAtTlZVRSAqL1xuXHRcdGRpc3BsYXk6IGZsZXg7XG5cdFx0LyogI2VuZGlmICovXG5cdFx0ZmxleC1kaXJlY3Rpb246IHJvdztcblx0XHRwYWRkaW5nOiAkbGlzdC1pdGVtLXBkO1xuXHRcdHBhZGRpbmctbGVmdDogJHVuaS1zcGFjaW5nLXJvdy1sZztcblx0XHRmbGV4OiAxO1xuXHRcdG92ZXJmbG93OiBoaWRkZW47XG5cdFx0Ly8gYWxpZ24taXRlbXM6IGNlbnRlcjtcblx0fVxuXHQuY29udGFpbmVyLS1yaWdodCB7XG5cdFx0cGFkZGluZy1yaWdodDogMDtcblx0fVxuXHQvLyAuYm9yZGVyLS1sZWZ0IHtcblx0Ly8gXHRtYXJnaW4tbGVmdDogJHVuaS1zcGFjaW5nLXJvdy1sZztcblx0Ly8gfVxuXHQudW5pLWxpc3QtLWJvcmRlciB7XG5cdFx0cG9zaXRpb246IGFic29sdXRlO1xuXHRcdHRvcDogMDtcblx0XHRyaWdodDogMDtcblx0XHRsZWZ0OiAwO1xuXHRcdC8qICNpZmRlZiBBUFAtTlZVRSAqL1xuXHRcdGJvcmRlci10b3AtY29sb3I6ICR1bmktYm9yZGVyLWNvbG9yO1xuXHRcdGJvcmRlci10b3Atc3R5bGU6IHNvbGlkO1xuXHRcdGJvcmRlci10b3Atd2lkdGg6IDAuNXB4O1xuXHRcdC8qICNlbmRpZiAqL1xuXHR9XG5cdC8qICNpZm5kZWYgQVBQLU5WVUUgKi9cblx0LnVuaS1saXN0LS1ib3JkZXI6YWZ0ZXIge1xuXHRcdHBvc2l0aW9uOiBhYnNvbHV0ZTtcblx0XHR0b3A6IDA7XG5cdFx0cmlnaHQ6IDA7XG5cdFx0bGVmdDogMDtcblx0XHRoZWlnaHQ6IDFweDtcblx0XHRjb250ZW50OiAnJztcblx0XHQtd2Via2l0LXRyYW5zZm9ybTogc2NhbGVZKDAuNSk7XG5cdFx0dHJhbnNmb3JtOiBzY2FsZVkoMC41KTtcblx0XHRiYWNrZ3JvdW5kLWNvbG9yOiAkdW5pLWJvcmRlci1jb2xvcjtcblx0fVxuXHQvKiAjZW5kaWYgKi9cblx0LnVuaS1saXN0LWl0ZW1fX2NvbnRlbnQge1xuXHRcdC8qICNpZm5kZWYgQVBQLU5WVUUgKi9cblx0XHRkaXNwbGF5OiBmbGV4O1xuXHRcdC8qICNlbmRpZiAqL1xuXHRcdHBhZGRpbmctcmlnaHQ6IDhweDtcblx0XHRmbGV4OiAxO1xuXHRcdGNvbG9yOiAjM2I0MTQ0O1xuXHRcdC8vIG92ZXJmbG93OiBoaWRkZW47XG5cdFx0ZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcblx0XHRqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG5cdFx0b3ZlcmZsb3c6IGhpZGRlbjtcblx0fVxuXHQudW5pLWxpc3QtaXRlbV9fY29udGVudC0tY2VudGVyIHtcblx0XHRqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcblx0fVxuXHQudW5pLWxpc3QtaXRlbV9fY29udGVudC10aXRsZSB7XG5cdFx0Zm9udC1zaXplOiAkdW5pLWZvbnQtc2l6ZS1iYXNlO1xuXHRcdGNvbG9yOiAjM2I0MTQ0O1xuXHRcdG92ZXJmbG93OiBoaWRkZW47XG5cdH1cblx0LnVuaS1saXN0LWl0ZW1fX2NvbnRlbnQtbm90ZSB7XG5cdFx0bWFyZ2luLXRvcDogNnJweDtcblx0XHRjb2xvcjogJHVuaS10ZXh0LWNvbG9yLWdyZXk7XG5cdFx0Zm9udC1zaXplOiAkdW5pLWZvbnQtc2l6ZS1zbTtcblx0XHRvdmVyZmxvdzogaGlkZGVuO1xuXHR9XG5cdC51bmktbGlzdC1pdGVtX19leHRyYSB7XG5cdFx0Ly8gd2lkdGg6IDI1JTtcblx0XHQvKiAjaWZuZGVmIEFQUC1OVlVFICovXG5cdFx0ZGlzcGxheTogZmxleDtcblx0XHQvKiAjZW5kaWYgKi9cblx0XHRmbGV4LWRpcmVjdGlvbjogcm93O1xuXHRcdGp1c3RpZnktY29udGVudDogZmxleC1lbmQ7XG5cdFx0YWxpZ24taXRlbXM6IGNlbnRlcjtcblx0fVxuXHQudW5pLWxpc3QtaXRlbV9faGVhZGVyIHtcblx0XHQvKiAjaWZuZGVmIEFQUC1OVlVFICovXG5cdFx0ZGlzcGxheTogZmxleDtcblx0XHQvKiAjZW5kaWYgKi9cblx0XHRmbGV4LWRpcmVjdGlvbjogcm93O1xuXHRcdGFsaWduLWl0ZW1zOiBjZW50ZXI7XG5cdH1cblx0LnVuaS1saXN0LWl0ZW1fX2ljb24ge1xuXHRcdG1hcmdpbi1yaWdodDogMThycHg7XG5cdFx0ZmxleC1kaXJlY3Rpb246IHJvdztcblx0XHRqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcblx0XHRhbGlnbi1pdGVtczogY2VudGVyO1xuXHR9XG5cdC51bmktbGlzdC1pdGVtX19pY29uLWltZyB7XG5cdFx0LyogI2lmbmRlZiBBUFAtTlZVRSAqL1xuXHRcdGRpc3BsYXk6IGJsb2NrO1xuXHRcdC8qICNlbmRpZiAqL1xuXHRcdGhlaWdodDogJHVuaS1pbWctc2l6ZS1iYXNlO1xuXHRcdHdpZHRoOiAkdW5pLWltZy1zaXplLWJhc2U7XG5cdFx0bWFyZ2luLXJpZ2h0OiAxMHB4O1xuXHR9XG5cdC51bmktaWNvbi13cmFwcGVyIHtcblx0XHQvKiAjaWZuZGVmIEFQUC1OVlVFICovXG5cdFx0ZGlzcGxheTogZmxleDtcblx0XHQvKiAjZW5kaWYgKi9cblx0XHRhbGlnbi1pdGVtczogY2VudGVyO1xuXHRcdHBhZGRpbmc6IDAgMTBweDtcblx0fVxuXHQuZmxleC0tZGlyZWN0aW9uIHtcblx0XHRmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuXHRcdC8qICNpZm5kZWYgQVBQLU5WVUUgKi9cblx0XHRhbGlnbi1pdGVtczogaW5pdGlhbDtcblx0XHQvKiAjZW5kaWYgKi9cblx0fVxuXHQuZmxleC0tanVzdGlmeSB7XG5cdFx0LyogI2lmbmRlZiBBUFAtTlZVRSAqL1xuXHRcdGp1c3RpZnktY29udGVudDogaW5pdGlhbDtcblx0XHQvKiAjZW5kaWYgKi9cblx0fVxuXHQudW5pLWxpc3QtLWxnIHtcblx0XHRoZWlnaHQ6ICR1bmktaW1nLXNpemUtbGc7XG5cdFx0d2lkdGg6ICR1bmktaW1nLXNpemUtbGc7XG5cdH1cblx0LnVuaS1saXN0LS1iYXNlIHtcblx0XHRoZWlnaHQ6ICR1bmktaW1nLXNpemUtYmFzZTtcblx0XHR3aWR0aDogJHVuaS1pbWctc2l6ZS1iYXNlO1xuXHR9XG5cdC51bmktbGlzdC0tc20ge1xuXHRcdGhlaWdodDogJHVuaS1pbWctc2l6ZS1zbTtcblx0XHR3aWR0aDogJHVuaS1pbWctc2l6ZS1zbTtcblx0fVxuXHQudW5pLWxpc3QtaXRlbV9fZXh0cmEtdGV4dCB7XG5cdFx0Y29sb3I6ICR1bmktdGV4dC1jb2xvci1ncmV5O1xuXHRcdGZvbnQtc2l6ZTogJHVuaS1mb250LXNpemUtc207XG5cdH1cblx0LnVuaS1lbGxpcHNpcy0xIHtcblx0XHQvKiAjaWZuZGVmIEFQUC1OVlVFICovXG5cdFx0b3ZlcmZsb3c6IGhpZGRlbjtcblx0XHR3aGl0ZS1zcGFjZTogbm93cmFwO1xuXHRcdHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzO1xuXHRcdC8qICNlbmRpZiAqL1xuXHRcdC8qICNpZmRlZiBBUFAtTlZVRSAqL1xuXHRcdGxpbmVzOiAxO1xuXHRcdHRleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7XG5cdFx0LyogI2VuZGlmICovXG5cdH1cblx0LnVuaS1lbGxpcHNpcy0yIHtcblx0XHQvKiAjaWZuZGVmIEFQUC1OVlVFICovXG5cdFx0b3ZlcmZsb3c6IGhpZGRlbjtcblx0XHR0ZXh0LW92ZXJmbG93OiBlbGxpcHNpcztcblx0XHRkaXNwbGF5OiAtd2Via2l0LWJveDtcblx0XHQtd2Via2l0LWxpbmUtY2xhbXA6IDI7XG5cdFx0LXdlYmtpdC1ib3gtb3JpZW50OiB2ZXJ0aWNhbDtcblx0XHQvKiAjZW5kaWYgKi9cblx0XHQvKiAjaWZkZWYgQVBQLU5WVUUgKi9cblx0XHRsaW5lczogMjtcblx0XHR0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO1xuXHRcdC8qICNlbmRpZiAqL1xuXHR9XG48L3N0eWxlPlxuIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///31\n");
- /***/ }),
- /* 32 */
- /*!***************************************************************************************************!*\
- !*** D:/Work2/Orienteering/TrackOffical/pages/AO/mapShow.vue?vue&type=script&lang=js&mpType=page ***!
- \***************************************************************************************************/
- /*! no static exports found */
- /***/ (function(module, __webpack_exports__, __webpack_require__) {
- "use strict";
- eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_7_1_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_using_components_js_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_mapShow_vue_vue_type_script_lang_js_mpType_page__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../../../Program Files/HBuilderX/plugins/uniapp-cli/node_modules/babel-loader/lib!../../../../../Program Files/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--7-1!../../../../../Program Files/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/using-components.js!../../../../../Program Files/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib??vue-loader-options!./mapShow.vue?vue&type=script&lang=js&mpType=page */ 33);\n/* harmony import */ var _Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_7_1_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_using_components_js_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_mapShow_vue_vue_type_script_lang_js_mpType_page__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_7_1_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_using_components_js_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_mapShow_vue_vue_type_script_lang_js_mpType_page__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_7_1_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_using_components_js_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_mapShow_vue_vue_type_script_lang_js_mpType_page__WEBPACK_IMPORTED_MODULE_0__) if([\"default\"].indexOf(__WEBPACK_IMPORT_KEY__) < 0) (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_7_1_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_using_components_js_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_mapShow_vue_vue_type_script_lang_js_mpType_page__WEBPACK_IMPORTED_MODULE_0__[key]; }) }(__WEBPACK_IMPORT_KEY__));\n /* harmony default export */ __webpack_exports__[\"default\"] = (_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_7_1_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_using_components_js_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_mapShow_vue_vue_type_script_lang_js_mpType_page__WEBPACK_IMPORTED_MODULE_0___default.a); //# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbbnVsbF0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQWtuQixDQUFnQixnb0JBQUcsRUFBQyIsImZpbGUiOiIzMi5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBtb2QgZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vUHJvZ3JhbSBGaWxlcy9IQnVpbGRlclgvcGx1Z2lucy91bmlhcHAtY2xpL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzIS4uLy4uLy4uLy4uLy4uL1Byb2dyYW0gRmlsZXMvSEJ1aWxkZXJYL3BsdWdpbnMvdW5pYXBwLWNsaS9ub2RlX21vZHVsZXMvQGRjbG91ZGlvL3Z1ZS1jbGktcGx1Z2luLXVuaS9wYWNrYWdlcy93ZWJwYWNrLXByZXByb2Nlc3MtbG9hZGVyL2luZGV4LmpzPz9yZWYtLTctMSEuLi8uLi8uLi8uLi8uLi9Qcm9ncmFtIEZpbGVzL0hCdWlsZGVyWC9wbHVnaW5zL3VuaWFwcC1jbGkvbm9kZV9tb2R1bGVzL0BkY2xvdWRpby92dWUtY2xpLXBsdWdpbi11bmkvcGFja2FnZXMvd2VicGFjay11bmktYXBwLWxvYWRlci91c2luZy1jb21wb25lbnRzLmpzIS4uLy4uLy4uLy4uLy4uL1Byb2dyYW0gRmlsZXMvSEJ1aWxkZXJYL3BsdWdpbnMvdW5pYXBwLWNsaS9ub2RlX21vZHVsZXMvQGRjbG91ZGlvL3Z1ZS1jbGktcGx1Z2luLXVuaS9wYWNrYWdlcy92dWUtbG9hZGVyL2xpYi9pbmRleC5qcz8/dnVlLWxvYWRlci1vcHRpb25zIS4vbWFwU2hvdy52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9anMmbXBUeXBlPXBhZ2VcIjsgZXhwb3J0IGRlZmF1bHQgbW9kOyBleHBvcnQgKiBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi9Qcm9ncmFtIEZpbGVzL0hCdWlsZGVyWC9wbHVnaW5zL3VuaWFwcC1jbGkvbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanMhLi4vLi4vLi4vLi4vLi4vUHJvZ3JhbSBGaWxlcy9IQnVpbGRlclgvcGx1Z2lucy91bmlhcHAtY2xpL25vZGVfbW9kdWxlcy9AZGNsb3VkaW8vdnVlLWNsaS1wbHVnaW4tdW5pL3BhY2thZ2VzL3dlYnBhY2stcHJlcHJvY2Vzcy1sb2FkZXIvaW5kZXguanM/P3JlZi0tNy0xIS4uLy4uLy4uLy4uLy4uL1Byb2dyYW0gRmlsZXMvSEJ1aWxkZXJYL3BsdWdpbnMvdW5pYXBwLWNsaS9ub2RlX21vZHVsZXMvQGRjbG91ZGlvL3Z1ZS1jbGktcGx1Z2luLXVuaS9wYWNrYWdlcy93ZWJwYWNrLXVuaS1hcHAtbG9hZGVyL3VzaW5nLWNvbXBvbmVudHMuanMhLi4vLi4vLi4vLi4vLi4vUHJvZ3JhbSBGaWxlcy9IQnVpbGRlclgvcGx1Z2lucy91bmlhcHAtY2xpL25vZGVfbW9kdWxlcy9AZGNsb3VkaW8vdnVlLWNsaS1wbHVnaW4tdW5pL3BhY2thZ2VzL3Z1ZS1sb2FkZXIvbGliL2luZGV4LmpzPz92dWUtbG9hZGVyLW9wdGlvbnMhLi9tYXBTaG93LnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz1qcyZtcFR5cGU9cGFnZVwiIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///32\n");
- /***/ }),
- /* 33 */
- /*!********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
- !*** ./node_modules/babel-loader/lib!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--7-1!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/using-components.js!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib??vue-loader-options!D:/Work2/Orienteering/TrackOffical/pages/AO/mapShow.vue?vue&type=script&lang=js&mpType=page ***!
- \********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/
- /*! no static exports found */
- /***/ (function(module, exports, __webpack_require__) {
- "use strict";
- eval("/* WEBPACK VAR INJECTION */(function(__f__) {\n\nvar _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ 1);\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar _regenerator = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/regenerator */ 35));\nvar _asyncToGenerator2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/asyncToGenerator */ 37));\nvar _base_pb = __webpack_require__(/*! @/grpc/base_pb.js */ 38);\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\nvar _default = {\n components: {},\n data: function data() {\n return {\n interval: null,\n systemInfo: null,\n deviceOrientation: 'portrait',\n // 设备方向(竖屏 portrait | 横屏 landscape)\n flexDirection: 'column',\n pageHeight: 0,\n // mapHeight: 0,\n popupHeight: 200,\n popupType: 'bottom',\n popupShow: false,\n actionId: 2,\n actionDetail: {},\n mapUrl: null,\n mapInfo: {},\n map: null,\n checkPoints: [{\n cp_id: 1,\n // 检查点ID\n serial_num: 1,\n // 序号\n c_type: 1,\n // 检查点类型 1:起始点 2:途经点 3:结束点 4:其他\n category: 1,\n // 检查点种类 1:实体点 2:虚拟点 3:VR点\n latitude: 36.67205,\n longitude: 117.126945\n }, {\n cp_id: 2,\n serial_num: 2,\n c_type: 1,\n category: 1,\n latitude: 36.670871,\n longitude: 117.12725\n }, {\n cp_id: 3,\n serial_num: 3,\n c_type: 1,\n category: 1,\n latitude: 36.671723,\n longitude: 117.128565\n }, {\n cp_id: 4,\n serial_num: 4,\n c_type: 1,\n category: 1,\n latitude: 36.672704,\n longitude: 117.128415\n }, {\n cp_id: 5,\n serial_num: 5,\n c_type: 1,\n category: 1,\n latitude: 36.672003,\n longitude: 117.129305\n }, {\n cp_id: 6,\n serial_num: 6,\n c_type: 1,\n category: 1,\n latitude: 36.672416,\n longitude: 117.127116\n }, {\n cp_id: 7,\n serial_num: 7,\n c_type: 1,\n category: 1,\n latitude: 36.671689,\n longitude: 117.127798\n }, {\n cp_id: 8,\n serial_num: 8,\n c_type: 1,\n category: 1,\n latitude: 36.67094,\n longitude: 117.128522\n }],\n players: [{\n id: 1,\n name: '小鱼儿',\n phone: '13105310001'\n }, {\n id: 2,\n name: '花无缺',\n phone: '13105310002'\n }, {\n id: 3,\n name: '李大嘴',\n phone: '13105310003'\n }, {\n id: 4,\n name: '叶南天',\n phone: '13105310004'\n }],\n players_position: [{\n id: 1,\n latitude: 36.671357,\n longitude: 117.127925\n }, {\n id: 2,\n latitude: 36.671657,\n longitude: 117.125925\n }, {\n id: 3,\n latitude: 36.672257,\n longitude: 117.128925\n }, {\n id: 4,\n latitude: 36.670433,\n longitude: 117.127873\n }]\n };\n },\n computed: {},\n mounted: function mounted() {},\n onLoad: function onLoad() {\n this.loadData(this.actionId);\n },\n onReady: function onReady() {\n this.layoutInit();\n },\n onShow: function onShow() {\n var _this = this;\n __f__(\"log\", '[onShow]', \" at pages/AO/mapShow.vue:228\");\n uni.onWindowResize(function (res) {\n // console.log('[onWindowResize]', res)\n // this.deviceOrientation = res.deviceOrientation\n // console.log('[onWindowResize] deviceOrientation', this.deviceOrientation)\n\n _this.layoutInit();\n });\n },\n beforeDestroy: function beforeDestroy() {\n // console.log(\"beforeDestroy\")\n clearInterval(this.interval);\n // leafletHelper.free()\n },\n\n methods: {\n // 布局初始化 设置地图高度\n layoutInit: function layoutInit() {\n this.systemInfo = uni.getSystemInfoSync();\n // console.log('[layoutInit] systemInfo', this.systemInfo)\n this.pageHeight = this.systemInfo.windowHeight;\n this.deviceOrientation = this.systemInfo.deviceOrientation;\n if (this.deviceOrientation == 'portrait') {\n // 竖屏\n __f__(\"log\", '[layoutInit] 竖屏', \" at pages/AO/mapShow.vue:251\");\n this.flexDirection = 'column';\n // if (this.popupShow) {\n // \tthis.mapHeight = this.pageHeight - this.popupHeight\n // } else {\n // \tthis.mapHeight = this.pageHeight\n // }\n } else if (this.deviceOrientation == 'landscape') {\n // 横屏\n __f__(\"log\", '[layoutInit] 横屏', \" at pages/AO/mapShow.vue:259\");\n this.flexDirection = 'row';\n // this.mapHeight = this.pageHeight\n }\n },\n popupToggle: function popupToggle() {\n // console.log('[popupToggle]')\n this.popupShow = !this.popupShow;\n },\n loadData: function loadData() {\n var _this2 = this;\n return (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee2() {\n var that;\n return _regenerator.default.wrap(function _callee2$(_context2) {\n while (1) {\n switch (_context2.prev = _context2.next) {\n case 0:\n _context2.next = 2;\n return _this2.getToActionDetail(_this2.actionId);\n case 2:\n _this2.actionDetail = _context2.sent;\n uni.setNavigationBarTitle({\n title: _this2.actionDetail.name\n });\n // console.log(this.actionDetail)\n\n _this2.initMap();\n _this2.handleMapDrawRoute();\n if (_this2.interval != null) {\n clearInterval(_this2.interval);\n }\n that = _this2;\n _context2.next = 10;\n return that.getToUsersInGameDetail(that.actionId);\n case 10:\n that.players = _context2.sent;\n _context2.next = 13;\n return that.getToUsersInGameGpsQuery(that.actionId);\n case 13:\n that.players_position = _context2.sent;\n // leafletHelper.global.setPlayersPosition(this.players_position)\n\n that.handleMapDrawPlayer();\n _this2.interval = setInterval( /*#__PURE__*/(0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee() {\n return _regenerator.default.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n _context.next = 2;\n return that.getToUsersInGameGpsQuery(that.actionId);\n case 2:\n that.players_position = _context.sent;\n case 3:\n case \"end\":\n return _context.stop();\n }\n }\n }, _callee);\n })), 1000);\n\n // await mapHelper.handleMapInfo(this, this.mapInfo)\n _this2.handleMapToggle();\n case 17:\n case \"end\":\n return _context2.stop();\n }\n }\n }, _callee2);\n }))();\n },\n //场控端_活动详情\n getToActionDetail: function getToActionDetail(actId) {\n var _this3 = this;\n return (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee3() {\n return _regenerator.default.wrap(function _callee3$(_context3) {\n while (1) {\n switch (_context3.prev = _context3.next) {\n case 0:\n _context3.prev = 0;\n return _context3.abrupt(\"return\", new Promise(function (resolve, reject) {\n // 创建请求参数并赋值\n var request = new _base_pb.IdRequest();\n request.setId(actId);\n // 调用客户端相应的grpc方法,发送grpc请求,并接受后台发送回来的返回值\n _this3.$client.toActionDetail(request, {}, function (err, response) {\n if (err) {\n __f__(\"log\", \"[toActionDetail] err: code = \".concat(err.code) + \", message = \\\"\".concat(err.message, \"\\\"\"), \" at pages/AO/mapShow.vue:314\");\n reject(err);\n } else {\n var res = response.toObject();\n __f__(\"log\", '[toActionDetail]', res, \" at pages/AO/mapShow.vue:319\");\n resolve(res);\n }\n });\n }));\n case 4:\n _context3.prev = 4;\n _context3.t0 = _context3[\"catch\"](0);\n __f__(\"log\", '[getToActionDetail] err', _context3.t0, \" at pages/AO/mapShow.vue:325\");\n reject(_context3.t0);\n case 8:\n case \"end\":\n return _context3.stop();\n }\n }\n }, _callee3, null, [[0, 4]]);\n }))();\n },\n //场控端_正在进行中所有用户实时信息\n getToUsersInGameDetail: function getToUsersInGameDetail(actId) {\n var _this4 = this;\n return (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee4() {\n return _regenerator.default.wrap(function _callee4$(_context4) {\n while (1) {\n switch (_context4.prev = _context4.next) {\n case 0:\n _context4.prev = 0;\n return _context4.abrupt(\"return\", new Promise(function (resolve, reject) {\n // 创建请求参数并赋值\n var request = new _base_pb.IdRequest();\n request.setId(actId);\n // 调用客户端相应的grpc方法,发送grpc请求,并接受后台发送回来的返回值\n _this4.$client.toUsersInGameDetail(request, {}, function (err, response) {\n if (err) {\n __f__(\"log\", \"[toUsersInGameDetail] err: code = \".concat(err.code) + \", message = \\\"\".concat(err.message, \"\\\"\"), \" at pages/AO/mapShow.vue:339\");\n reject(err);\n } else {\n var res = response.toObject();\n // console.log('[toUsersInGameDetail]', res)\n resolve(res.usersList);\n }\n });\n }));\n case 4:\n _context4.prev = 4;\n _context4.t0 = _context4[\"catch\"](0);\n __f__(\"log\", '[getToUsersInGameDetail] err', _context4.t0, \" at pages/AO/mapShow.vue:350\");\n reject(_context4.t0);\n case 8:\n case \"end\":\n return _context4.stop();\n }\n }\n }, _callee4, null, [[0, 4]]);\n }))();\n },\n //场控端_正在进行中所有用户实时gps查询\n getToUsersInGameGpsQuery: function getToUsersInGameGpsQuery(actId) {\n var _this5 = this;\n return (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee5() {\n return _regenerator.default.wrap(function _callee5$(_context5) {\n while (1) {\n switch (_context5.prev = _context5.next) {\n case 0:\n _context5.prev = 0;\n return _context5.abrupt(\"return\", new Promise(function (resolve, reject) {\n // 创建请求参数并赋值\n var request = new _base_pb.IdRequest();\n request.setId(actId);\n // 调用客户端相应的grpc方法,发送grpc请求,并接受后台发送回来的返回值\n _this5.$client.toUsersInGameGpsQuery(request, {}, function (err, response) {\n if (err) {\n __f__(\"log\", \"[toUsersInGameGpsQuery] err: code = \".concat(err.code) + \", message = \\\"\".concat(err.message, \"\\\"\"), \" at pages/AO/mapShow.vue:364\");\n reject(err);\n } else {\n var res = response.toObject();\n // console.log('[toUsersInGameGpsQuery]', res)\n resolve(res.gpsinfoList);\n }\n });\n }));\n case 4:\n _context5.prev = 4;\n _context5.t0 = _context5[\"catch\"](0);\n __f__(\"log\", '[getToUsersInGameGpsQuery] err', _context5.t0, \" at pages/AO/mapShow.vue:375\");\n reject(_context5.t0);\n case 8:\n case \"end\":\n return _context5.stop();\n }\n }\n }, _callee5, null, [[0, 4]]);\n }))();\n } // trigger(e) {\n // \tconsole.log(e)\n // \tthis.content[e.index].active = !e.item.active\n // \tuni.showModal({\n // \t\ttitle: '提示',\n // \t\tcontent: `您${this.content[e.index].active ? '选中了' : '取消了'}${e.item.text}`,\n // \t\tsuccess: function(res) {\n // \t\t\tif (res.confirm) {\n // \t\t\t\tconsole.log('用户点击确定')\n // \t\t\t} else if (res.cancel) {\n // \t\t\t\tconsole.log('用户点击取消')\n // \t\t\t}\n // \t\t}\n // \t})\n // },\n // fabClick() {\n // \tuni.showToast({\n // \t\ttitle: '点击了悬浮按钮',\n // \t\ticon: 'none'\n // \t})\n // },\n }\n};\nexports.default = _default;\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./node_modules/@dcloudio/vue-cli-plugin-uni/lib/format-log.js */ 34)[\"default\"]))//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInVuaS1hcHA6Ly8vcGFnZXMvQU8vbWFwU2hvdy52dWUiXSwibmFtZXMiOlsiY29tcG9uZW50cyIsImRhdGEiLCJpbnRlcnZhbCIsInN5c3RlbUluZm8iLCJkZXZpY2VPcmllbnRhdGlvbiIsImZsZXhEaXJlY3Rpb24iLCJwYWdlSGVpZ2h0IiwicG9wdXBIZWlnaHQiLCJwb3B1cFR5cGUiLCJwb3B1cFNob3ciLCJhY3Rpb25JZCIsImFjdGlvbkRldGFpbCIsIm1hcFVybCIsIm1hcEluZm8iLCJtYXAiLCJjaGVja1BvaW50cyIsImNwX2lkIiwic2VyaWFsX251bSIsImNfdHlwZSIsImNhdGVnb3J5IiwibGF0aXR1ZGUiLCJsb25naXR1ZGUiLCJwbGF5ZXJzIiwiaWQiLCJuYW1lIiwicGhvbmUiLCJwbGF5ZXJzX3Bvc2l0aW9uIiwiY29tcHV0ZWQiLCJtb3VudGVkIiwib25Mb2FkIiwib25SZWFkeSIsIm9uU2hvdyIsInVuaSIsImJlZm9yZURlc3Ryb3kiLCJjbGVhckludGVydmFsIiwibWV0aG9kcyIsImxheW91dEluaXQiLCJwb3B1cFRvZ2dsZSIsImxvYWREYXRhIiwidGl0bGUiLCJ0aGF0IiwiZ2V0VG9BY3Rpb25EZXRhaWwiLCJyZXF1ZXN0IiwiZXJyIiwicmVqZWN0IiwicmVzb2x2ZSIsImdldFRvVXNlcnNJbkdhbWVEZXRhaWwiLCJnZXRUb1VzZXJzSW5HYW1lR3BzUXVlcnkiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7OztBQWtGQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztlQU1BO0VBQ0FBO0VBQ0FDO0lBQ0E7TUFDQUM7TUFFQUM7TUFDQUM7TUFBQTtNQUNBQztNQUNBQztNQUNBO01BQ0FDO01BQ0FDO01BQ0FDO01BRUFDO01BQ0FDO01BQ0FDO01BQ0FDO01BRUFDO01BQ0FDO1FBQ0FDO1FBQUE7UUFDQUM7UUFBQTtRQUNBQztRQUFBO1FBQ0FDO1FBQUE7UUFDQUM7UUFDQUM7TUFDQSxHQUNBO1FBQ0FMO1FBQ0FDO1FBQ0FDO1FBQ0FDO1FBQ0FDO1FBQ0FDO01BQ0EsR0FDQTtRQUNBTDtRQUNBQztRQUNBQztRQUNBQztRQUNBQztRQUNBQztNQUNBLEdBQ0E7UUFDQUw7UUFDQUM7UUFDQUM7UUFDQUM7UUFDQUM7UUFDQUM7TUFDQSxHQUNBO1FBQ0FMO1FBQ0FDO1FBQ0FDO1FBQ0FDO1FBQ0FDO1FBQ0FDO01BQ0EsR0FDQTtRQUNBTDtRQUNBQztRQUNBQztRQUNBQztRQUNBQztRQUNBQztNQUNBLEdBQ0E7UUFDQUw7UUFDQUM7UUFDQUM7UUFDQUM7UUFDQUM7UUFDQUM7TUFDQSxHQUNBO1FBQ0FMO1FBQ0FDO1FBQ0FDO1FBQ0FDO1FBQ0FDO1FBQ0FDO01BQ0EsRUFDQTtNQUNBQztRQUNBQztRQUNBQztRQUNBQztNQUNBLEdBQ0E7UUFDQUY7UUFDQUM7UUFDQUM7TUFDQSxHQUNBO1FBQ0FGO1FBQ0FDO1FBQ0FDO01BQ0EsR0FDQTtRQUNBRjtRQUNBQztRQUNBQztNQUNBLEVBQ0E7TUFDQUM7UUFDQUg7UUFDQUg7UUFDQUM7TUFDQSxHQUNBO1FBQ0FFO1FBQ0FIO1FBQ0FDO01BQ0EsR0FDQTtRQUNBRTtRQUNBSDtRQUNBQztNQUNBLEdBQ0E7UUFDQUU7UUFDQUg7UUFDQUM7TUFDQTtJQUVBO0VBQ0E7RUFDQU07RUFDQUM7RUFDQUM7SUFDQTtFQUNBO0VBQ0FDO0lBQ0E7RUFDQTtFQUNBQztJQUFBO0lBQ0E7SUFDQUM7TUFDQTtNQUNBO01BQ0E7O01BRUE7SUFDQTtFQUNBO0VBQ0FDO0lBQ0E7SUFDQUM7SUFDQTtFQUNBOztFQUNBQztJQUNBO0lBQ0FDO01BQ0E7TUFDQTtNQUNBO01BQ0E7TUFFQTtRQUFBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7TUFDQTtRQUFBO1FBQ0E7UUFDQTtRQUNBO01BQ0E7SUFFQTtJQUNBQztNQUNBO01BQ0E7SUFDQTtJQUNBQztNQUFBO01BQUE7UUFBQTtRQUFBO1VBQUE7WUFBQTtjQUFBO2dCQUFBO2dCQUFBLE9BQ0E7Y0FBQTtnQkFBQTtnQkFDQU47a0JBQ0FPO2dCQUNBO2dCQUNBOztnQkFFQTtnQkFDQTtnQkFFQTtrQkFDQUw7Z0JBQ0E7Z0JBRUFNO2dCQUFBO2dCQUFBLE9BQ0FBO2NBQUE7Z0JBQUFBO2dCQUFBO2dCQUFBLE9BSUFBO2NBQUE7Z0JBQUFBO2dCQUNBOztnQkFFQUE7Z0JBRUE7a0JBQUE7b0JBQUE7c0JBQUE7d0JBQUE7MEJBQUE7MEJBQUEsT0FFQUE7d0JBQUE7MEJBQUFBO3dCQUFBO3dCQUFBOzBCQUFBO3NCQUFBO29CQUFBO2tCQUFBO2dCQUFBLENBSUE7O2dCQUVBO2dCQUNBO2NBQUE7Y0FBQTtnQkFBQTtZQUFBO1VBQUE7UUFBQTtNQUFBO0lBQ0E7SUFDQTtJQUNBQztNQUFBO01BQUE7UUFBQTtVQUFBO1lBQUE7Y0FBQTtnQkFBQTtnQkFBQSxrQ0FFQTtrQkFDQTtrQkFDQTtrQkFDQUM7a0JBQ0E7a0JBQ0E7b0JBQ0E7c0JBQ0Esd0ZBQ0FDO3NCQUNBQztvQkFDQTtzQkFDQTtzQkFDQTtzQkFDQUM7b0JBQ0E7a0JBQ0E7Z0JBQ0E7Y0FBQTtnQkFBQTtnQkFBQTtnQkFFQTtnQkFDQUQ7Y0FBQTtjQUFBO2dCQUFBO1lBQUE7VUFBQTtRQUFBO01BQUE7SUFFQTtJQUNBO0lBQ0FFO01BQUE7TUFBQTtRQUFBO1VBQUE7WUFBQTtjQUFBO2dCQUFBO2dCQUFBLGtDQUVBO2tCQUNBO2tCQUNBO2tCQUNBSjtrQkFDQTtrQkFDQTtvQkFDQTtzQkFDQSw2RkFDQUM7c0JBQ0FDO29CQUNBO3NCQUNBO3NCQUNBO3NCQUNBQztvQkFDQTtrQkFDQTtnQkFDQTtjQUFBO2dCQUFBO2dCQUFBO2dCQUVBO2dCQUNBRDtjQUFBO2NBQUE7Z0JBQUE7WUFBQTtVQUFBO1FBQUE7TUFBQTtJQUVBO0lBQ0E7SUFDQUc7TUFBQTtNQUFBO1FBQUE7VUFBQTtZQUFBO2NBQUE7Z0JBQUE7Z0JBQUEsa0NBRUE7a0JBQ0E7a0JBQ0E7a0JBQ0FMO2tCQUNBO2tCQUNBO29CQUNBO3NCQUNBLCtGQUNBQztzQkFDQUM7b0JBQ0E7c0JBQ0E7c0JBQ0E7c0JBQ0FDO29CQUNBO2tCQUNBO2dCQUNBO2NBQUE7Z0JBQUE7Z0JBQUE7Z0JBRUE7Z0JBQ0FEO2NBQUE7Y0FBQTtnQkFBQTtZQUFBO1VBQUE7UUFBQTtNQUFBO0lBRUEsRUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7RUFDQTtBQUNBO0FBQUEsMkIiLCJmaWxlIjoiMzMuanMiLCJzb3VyY2VzQ29udGVudCI6WyI8dGVtcGxhdGU+XHJcblx0PHZpZXcgY2xhc3M9XCJwYWdlXCIgOnN0eWxlPVwieyBoZWlnaHQ6IHBhZ2VIZWlnaHQgKyAncHgnLCBmbGV4RGlyZWN0aW9uOiBmbGV4RGlyZWN0aW9uIH1cIj5cclxuXHRcdDx2aWV3IGlkPVwibWFwXCIgOnN0eWxlPVwieyBoZWlnaHQ6IHBhZ2VIZWlnaHQgKyAncHgnIH1cIiBjbGFzcz0nbWFwJyAvPlxyXG5cclxuXHRcdDwhLS0gPHZpZXcgY2xhc3M9XCJmYWJcIj5cclxuXHRcdFx0PHVuaS1mYWIgcmVmPVwiZmFiXCIgOnBhdHRlcm49XCJmYWIucGF0dGVyblwiIDpjb250ZW50PVwiZmFiLmNvbnRlbnRcIiA6aG9yaXpvbnRhbD1cImZhYi5ob3Jpem9udGFsXCJcclxuXHRcdFx0XHQ6dmVydGljYWw9XCJmYWIudmVydGljYWxcIiA6ZGlyZWN0aW9uPVwiZmFiLmRpcmVjdGlvblwiIEB0cmlnZ2VyPVwidHJpZ2dlclwiIEBmYWJDbGljaz1cImZhYkNsaWNrXCIgLz5cclxuXHRcdDwvdmlldz4gLS0+XHJcblxyXG5cdFx0PHZpZXcgdi1zaG93PVwicG9wdXBTaG93XCIgOnN0eWxlPVwieyBoZWlnaHQ6IHBvcHVwSGVpZ2h0ICsgJ3B4JyB9XCIgY2xhc3M9XCJwb3B1cFwiPlxyXG5cdFx0XHQ8dW5pLWxpc3Qgdi1mb3I9XCIoaXRlbSwgaW5kZXgpIGluIHBsYXllcnNcIiA6a2V5PVwiaW5kZXhcIiA6Ym9yZGVyPVwidHJ1ZVwiPlxyXG5cdFx0XHRcdDwhLS0g5Y+z5L6n5bim6KeS5qCHIC0tPlxyXG5cdFx0XHRcdDwhLS0gPHVuaS1saXN0LWNoYXQgOnRpdGxlPVwiaXRlbS5uYW1lXCIgYXZhdGFyPVwiaHR0cHM6Ly93ZWItYXNzZXRzLmRjbG91ZC5uZXQuY24vdW5pZG9jL3poL3VuaWNsb3VkbG9nby5wbmdcIlxyXG5cdFx0XHRcdFx0bm90ZT1cIuaCqOaUtuWIsOS4gOadoeaWsOeahOa2iOaBr1wiIHRpbWU9XCIyMDIwLTAyLTAyIDIwOjIwXCIgYmFkZ2UtdGV4dD1cIjEyXCI+PC91bmktbGlzdC1jaGF0PiAtLT5cclxuXHRcdFx0XHQ8dW5pLWxpc3QtaXRlbVxyXG5cdFx0XHRcdFx0OnRpdGxlPVwiaXRlbS5uYW1lICsgJyDmiZPngrnmlbA6ICcgKyBpdGVtLmVmZmVjdGl2ZW51bSArICcgLyAnICsgaXRlbS50b3RhbGNvbnRyb2xudW0gKyAnIOi3neemuzogJyArIGl0ZW0uZGlzdGFuY2UgKyAn57GzIOmFjemAnzogJyArIGl0ZW0ucGFjZVwiXHJcblx0XHRcdFx0XHQ6bm90ZT1cIiflubPlnYflv4Pnjoc6ICcgKyBpdGVtLmF2Z2hyICsgJyDmnIDlpKflv4Pnjoc6ICcgKyBpdGVtLm1heGhyICsgJyBDQUw6ICcgKyBpdGVtLmNhbG9yaWUgKyAnIENrOiAnICsgaXRlbS5jayArICcgRWk6ICcgKyBpdGVtLmVpXCI+XHJcblx0XHRcdFx0PC91bmktbGlzdC1pdGVtPlxyXG5cdFx0XHQ8L3VuaS1saXN0PlxyXG5cdFx0PC92aWV3PlxyXG5cclxuXHQ8L3ZpZXc+XHJcbjwvdGVtcGxhdGU+XHJcblxyXG48c2NyaXB0IG1vZHVsZT1cImxlYWZsZXRcIiBsYW5nPVwicmVuZGVyanNcIj5cclxuXHRpbXBvcnQgJ2xlYWZsZXQvZGlzdC9sZWFmbGV0LmNzcydcclxuXHRpbXBvcnQgJ0AvdXRpbHMvbWFwL2xlYWZsZXRIZWxwZXIuY3NzJ1xyXG5cclxuXHQvLyBpbXBvcnQgbWFwSGVscGVyIGZyb20gJ0AvdXRpbHMvbWFwSGVscGVyJ1xyXG5cdGltcG9ydCBsZWFmbGV0SGVscGVyIGZyb20gJ0AvdXRpbHMvbWFwL2xlYWZsZXRIZWxwZXInXHJcblxyXG5cdGV4cG9ydCBkZWZhdWx0IHtcclxuXHRcdGNvbXBvbmVudHM6IHt9LFxyXG5cdFx0Ly8gZGF0YSgpIHtcclxuXHRcdC8vIFx0cmV0dXJuIHt9LFxyXG5cdFx0Ly8gfSxcclxuXHRcdGJlZm9yZURlc3Ryb3koKSB7XHJcblx0XHRcdC8vIGNvbnNvbGUubG9nKFwiYmVmb3JlRGVzdHJveVwiKVxyXG5cdFx0XHQvLyBjbGVhckludGVydmFsKHRoaXMuaW50ZXJ2YWwpXHJcblx0XHRcdGxlYWZsZXRIZWxwZXIuZnJlZSgpXHJcblx0XHR9LFxyXG5cdFx0bWV0aG9kczoge1xyXG5cdFx0XHRpbml0TWFwKCkge1xyXG5cdFx0XHRcdC8vIGxlYWZsZXRIZWxwZXIuaW5pdCh0aGlzLCAnbWFwJywgWzM2LjY3MTc1NzcyMTE5NjI4LCAxMTcuMTI3OTI1ODA2MDMzNjldLCAxNylcclxuXHRcdFx0XHJcblx0XHRcdFx0Ly8gY29uc3QgbWFwaWQgPSB0aGlzLmFjdGlvbkRldGFpbC5tYXBpbmZvLmxpZFxyXG5cdFx0XHRcdGNvbnN0IG1hcHVybCA9IHRoaXMuYWN0aW9uRGV0YWlsLm1hcGluZm8ubWFwdXJsXHJcblx0XHRcdFx0Y29uc3QgY2VudFBvaW50ID0gW3RoaXMuYWN0aW9uRGV0YWlsLm1hcGluZm8uY2VudGVybGF0aXR1ZGUsIHRoaXMuYWN0aW9uRGV0YWlsLm1hcGluZm8uY2VudGVybG9uZ2l0dWRlXVxyXG5cdFx0XHRcdGNvbnN0IHpvb21OdW0gPSB0aGlzLmFjdGlvbkRldGFpbC5tYXBpbmZvLmRlZnNjYWxlXHJcblx0XHRcdFx0bGVhZmxldEhlbHBlci5pbml0KHRoaXMsICdtYXAnLCBjZW50UG9pbnQsIHpvb21OdW0pXHJcblx0XHRcdFx0bGVhZmxldEhlbHBlci5hZGRNYXBMYXllcihtYXB1cmwpXHJcblx0XHRcdH0sXHJcblx0XHRcdGhhbmRsZU1hcERyYXdSb3V0ZSgpIHtcclxuXHRcdFx0XHQvLyBsZWFmbGV0SGVscGVyLmdsb2JhbC5zZXRDaGVja1BvaW50cyh0aGlzLmNoZWNrUG9pbnRzKVxyXG5cdFx0XHRcdGxlYWZsZXRIZWxwZXIuZ2xvYmFsLnNldFJvdXRlcyh0aGlzLmFjdGlvbkRldGFpbC5yb3V0ZXNMaXN0KVxyXG5cdFx0XHRcclxuXHRcdFx0XHQvLyBsZWFmbGV0SGVscGVyLmNoZWNrUG9pbnQuZHJhd0FsbENoZWNrUG9pbnRzKClcclxuXHRcdFx0XHQvLyBsZWFmbGV0SGVscGVyLmNoZWNrUG9pbnQuZHJhd1BhdGgoKVxyXG5cdFx0XHRcdGxlYWZsZXRIZWxwZXIucm91dGUuZHJhd0FsbFJvdXRlcygpXHJcblx0XHRcdFx0bGVhZmxldEhlbHBlci5yb3V0ZS5kcmF3QWxsUGF0aCgpXHJcblx0XHRcdH0sXHJcblx0XHRcdGhhbmRsZU1hcERyYXdQbGF5ZXIoKSB7XHJcblx0XHRcdFx0Ly8gbGVhZmxldEhlbHBlci5nbG9iYWwuc2V0UGxheWVycyh0aGlzLnBsYXllcnMpXHJcblx0XHRcdFx0Ly8gbGVhZmxldEhlbHBlci5nbG9iYWwuc2V0UGxheWVyc1Bvc2l0aW9uKHRoaXMucGxheWVyc19wb3NpdGlvbilcclxuXHRcdFx0XHJcblx0XHRcdFx0bGVhZmxldEhlbHBlci5wbGF5ZXIuZHJhd0FsbFBsYXllcnMoKVxyXG5cdFx0XHRcdC8vIGxlYWZsZXRIZWxwZXIucGxheWVyLmRyYXdPbmVUcmFpbCgxLCAxMDAwMCwgdHJ1ZSlcclxuXHRcdFx0XHQvLyBsZWFmbGV0SGVscGVyLnBsYXllci5kcmF3T25lVHJhaWwoMiwgMCwgZmFsc2UpXHJcblx0XHRcdFx0bGVhZmxldEhlbHBlci5wbGF5ZXIuZHJhd0FsbFRyYWlscyg1MDAwKVxyXG5cdFx0XHR9LFxyXG5cdFx0XHRoYW5kbGVNYXBUb2dnbGUoKSB7XHJcblx0XHRcdFx0Ly8gbGVhZmxldEhlbHBlci5jaGVja1BvaW50LnRvZ2dsZSh0cnVlKVxyXG5cdFx0XHRcdGxlYWZsZXRIZWxwZXIucm91dGUudG9nZ2xlKHRydWUpXHJcblx0XHRcdFx0bGVhZmxldEhlbHBlci5wbGF5ZXIudG9nZ2xlUGxheWVyKHRydWUpXHJcblx0XHRcdFx0bGVhZmxldEhlbHBlci5wbGF5ZXIudG9nZ2xlVG9vbHRpcCh0cnVlKVxyXG5cdFx0XHRcdGxlYWZsZXRIZWxwZXIucGxheWVyLnRvZ2dsZVRyYWlsKHRydWUpXHJcblx0XHRcdH0sXHJcblx0XHR9LFxyXG5cdH1cclxuPC9zY3JpcHQ+XHJcblxyXG48c2NyaXB0PlxyXG5cdGltcG9ydCB7XHJcblx0XHREZWZhdWx0UmVxdWVzdCxcclxuXHRcdElkUmVxdWVzdFxyXG5cdH0gZnJvbSBcIkAvZ3JwYy9iYXNlX3BiLmpzXCJcclxuXHJcblxyXG5cdGV4cG9ydCBkZWZhdWx0IHtcclxuXHRcdGNvbXBvbmVudHM6IHt9LFxyXG5cdFx0ZGF0YSgpIHtcclxuXHRcdFx0cmV0dXJuIHtcclxuXHRcdFx0XHRpbnRlcnZhbDogbnVsbCxcclxuXHJcblx0XHRcdFx0c3lzdGVtSW5mbzogbnVsbCxcclxuXHRcdFx0XHRkZXZpY2VPcmllbnRhdGlvbjogJ3BvcnRyYWl0JywgLy8g6K6+5aSH5pa55ZCR77yI56uW5bGPIHBvcnRyYWl0IHwg5qiq5bGPIGxhbmRzY2FwZe+8iVxyXG5cdFx0XHRcdGZsZXhEaXJlY3Rpb246ICdjb2x1bW4nLFxyXG5cdFx0XHRcdHBhZ2VIZWlnaHQ6IDAsXHJcblx0XHRcdFx0Ly8gbWFwSGVpZ2h0OiAwLFxyXG5cdFx0XHRcdHBvcHVwSGVpZ2h0OiAyMDAsXHJcblx0XHRcdFx0cG9wdXBUeXBlOiAnYm90dG9tJyxcclxuXHRcdFx0XHRwb3B1cFNob3c6IGZhbHNlLFxyXG5cclxuXHRcdFx0XHRhY3Rpb25JZDogMixcclxuXHRcdFx0XHRhY3Rpb25EZXRhaWw6IHt9LFxyXG5cdFx0XHRcdG1hcFVybDogbnVsbCxcclxuXHRcdFx0XHRtYXBJbmZvOiB7fSxcclxuXHJcblx0XHRcdFx0bWFwOiBudWxsLFxyXG5cdFx0XHRcdGNoZWNrUG9pbnRzOiBbe1xyXG5cdFx0XHRcdFx0XHRjcF9pZDogMSwgLy8g5qOA5p+l54K5SURcclxuXHRcdFx0XHRcdFx0c2VyaWFsX251bTogMSwgLy8g5bqP5Y+3XHJcblx0XHRcdFx0XHRcdGNfdHlwZTogMSwgLy8g5qOA5p+l54K557G75Z6LIDHvvJrotbflp4vngrkgMu+8mumAlOe7j+eCuSAz77ya57uT5p2f54K5IDTvvJrlhbbku5ZcclxuXHRcdFx0XHRcdFx0Y2F0ZWdvcnk6IDEsIC8vIOajgOafpeeCueenjeexuyAx77ya5a6e5L2T54K5IDLvvJromZrmi5/ngrkgM++8mlZS54K5XHJcblx0XHRcdFx0XHRcdGxhdGl0dWRlOiAzNi42NzIwNSxcclxuXHRcdFx0XHRcdFx0bG9uZ2l0dWRlOiAxMTcuMTI2OTQ1XHJcblx0XHRcdFx0XHR9LFxyXG5cdFx0XHRcdFx0e1xyXG5cdFx0XHRcdFx0XHRjcF9pZDogMixcclxuXHRcdFx0XHRcdFx0c2VyaWFsX251bTogMixcclxuXHRcdFx0XHRcdFx0Y190eXBlOiAxLFxyXG5cdFx0XHRcdFx0XHRjYXRlZ29yeTogMSxcclxuXHRcdFx0XHRcdFx0bGF0aXR1ZGU6IDM2LjY3MDg3MSxcclxuXHRcdFx0XHRcdFx0bG9uZ2l0dWRlOiAxMTcuMTI3MjVcclxuXHRcdFx0XHRcdH0sXHJcblx0XHRcdFx0XHR7XHJcblx0XHRcdFx0XHRcdGNwX2lkOiAzLFxyXG5cdFx0XHRcdFx0XHRzZXJpYWxfbnVtOiAzLFxyXG5cdFx0XHRcdFx0XHRjX3R5cGU6IDEsXHJcblx0XHRcdFx0XHRcdGNhdGVnb3J5OiAxLFxyXG5cdFx0XHRcdFx0XHRsYXRpdHVkZTogMzYuNjcxNzIzLFxyXG5cdFx0XHRcdFx0XHRsb25naXR1ZGU6IDExNy4xMjg1NjVcclxuXHRcdFx0XHRcdH0sXHJcblx0XHRcdFx0XHR7XHJcblx0XHRcdFx0XHRcdGNwX2lkOiA0LFxyXG5cdFx0XHRcdFx0XHRzZXJpYWxfbnVtOiA0LFxyXG5cdFx0XHRcdFx0XHRjX3R5cGU6IDEsXHJcblx0XHRcdFx0XHRcdGNhdGVnb3J5OiAxLFxyXG5cdFx0XHRcdFx0XHRsYXRpdHVkZTogMzYuNjcyNzA0LFxyXG5cdFx0XHRcdFx0XHRsb25naXR1ZGU6IDExNy4xMjg0MTVcclxuXHRcdFx0XHRcdH0sXHJcblx0XHRcdFx0XHR7XHJcblx0XHRcdFx0XHRcdGNwX2lkOiA1LFxyXG5cdFx0XHRcdFx0XHRzZXJpYWxfbnVtOiA1LFxyXG5cdFx0XHRcdFx0XHRjX3R5cGU6IDEsXHJcblx0XHRcdFx0XHRcdGNhdGVnb3J5OiAxLFxyXG5cdFx0XHRcdFx0XHRsYXRpdHVkZTogMzYuNjcyMDAzLFxyXG5cdFx0XHRcdFx0XHRsb25naXR1ZGU6IDExNy4xMjkzMDVcclxuXHRcdFx0XHRcdH0sXHJcblx0XHRcdFx0XHR7XHJcblx0XHRcdFx0XHRcdGNwX2lkOiA2LFxyXG5cdFx0XHRcdFx0XHRzZXJpYWxfbnVtOiA2LFxyXG5cdFx0XHRcdFx0XHRjX3R5cGU6IDEsXHJcblx0XHRcdFx0XHRcdGNhdGVnb3J5OiAxLFxyXG5cdFx0XHRcdFx0XHRsYXRpdHVkZTogMzYuNjcyNDE2LFxyXG5cdFx0XHRcdFx0XHRsb25naXR1ZGU6IDExNy4xMjcxMTZcclxuXHRcdFx0XHRcdH0sXHJcblx0XHRcdFx0XHR7XHJcblx0XHRcdFx0XHRcdGNwX2lkOiA3LFxyXG5cdFx0XHRcdFx0XHRzZXJpYWxfbnVtOiA3LFxyXG5cdFx0XHRcdFx0XHRjX3R5cGU6IDEsXHJcblx0XHRcdFx0XHRcdGNhdGVnb3J5OiAxLFxyXG5cdFx0XHRcdFx0XHRsYXRpdHVkZTogMzYuNjcxNjg5LFxyXG5cdFx0XHRcdFx0XHRsb25naXR1ZGU6IDExNy4xMjc3OThcclxuXHRcdFx0XHRcdH0sXHJcblx0XHRcdFx0XHR7XHJcblx0XHRcdFx0XHRcdGNwX2lkOiA4LFxyXG5cdFx0XHRcdFx0XHRzZXJpYWxfbnVtOiA4LFxyXG5cdFx0XHRcdFx0XHRjX3R5cGU6IDEsXHJcblx0XHRcdFx0XHRcdGNhdGVnb3J5OiAxLFxyXG5cdFx0XHRcdFx0XHRsYXRpdHVkZTogMzYuNjcwOTQsXHJcblx0XHRcdFx0XHRcdGxvbmdpdHVkZTogMTE3LjEyODUyMlxyXG5cdFx0XHRcdFx0fSxcclxuXHRcdFx0XHRdLFxyXG5cdFx0XHRcdHBsYXllcnM6IFt7XHJcblx0XHRcdFx0XHRcdGlkOiAxLFxyXG5cdFx0XHRcdFx0XHRuYW1lOiAn5bCP6bG85YS/JyxcclxuXHRcdFx0XHRcdFx0cGhvbmU6ICcxMzEwNTMxMDAwMScsXHJcblx0XHRcdFx0XHR9LFxyXG5cdFx0XHRcdFx0e1xyXG5cdFx0XHRcdFx0XHRpZDogMixcclxuXHRcdFx0XHRcdFx0bmFtZTogJ+iKseaXoOe8uicsXHJcblx0XHRcdFx0XHRcdHBob25lOiAnMTMxMDUzMTAwMDInLFxyXG5cdFx0XHRcdFx0fSxcclxuXHRcdFx0XHRcdHtcclxuXHRcdFx0XHRcdFx0aWQ6IDMsXHJcblx0XHRcdFx0XHRcdG5hbWU6ICfmnY7lpKflmLQnLFxyXG5cdFx0XHRcdFx0XHRwaG9uZTogJzEzMTA1MzEwMDAzJyxcclxuXHRcdFx0XHRcdH0sXHJcblx0XHRcdFx0XHR7XHJcblx0XHRcdFx0XHRcdGlkOiA0LFxyXG5cdFx0XHRcdFx0XHRuYW1lOiAn5Y+25Y2X5aSpJyxcclxuXHRcdFx0XHRcdFx0cGhvbmU6ICcxMzEwNTMxMDAwNCcsXHJcblx0XHRcdFx0XHR9LFxyXG5cdFx0XHRcdF0sXHJcblx0XHRcdFx0cGxheWVyc19wb3NpdGlvbjogW3tcclxuXHRcdFx0XHRcdFx0aWQ6IDEsXHJcblx0XHRcdFx0XHRcdGxhdGl0dWRlOiAzNi42NzEzNTcsXHJcblx0XHRcdFx0XHRcdGxvbmdpdHVkZTogMTE3LjEyNzkyNVxyXG5cdFx0XHRcdFx0fSxcclxuXHRcdFx0XHRcdHtcclxuXHRcdFx0XHRcdFx0aWQ6IDIsXHJcblx0XHRcdFx0XHRcdGxhdGl0dWRlOiAzNi42NzE2NTcsXHJcblx0XHRcdFx0XHRcdGxvbmdpdHVkZTogMTE3LjEyNTkyNVxyXG5cdFx0XHRcdFx0fSxcclxuXHRcdFx0XHRcdHtcclxuXHRcdFx0XHRcdFx0aWQ6IDMsXHJcblx0XHRcdFx0XHRcdGxhdGl0dWRlOiAzNi42NzIyNTcsXHJcblx0XHRcdFx0XHRcdGxvbmdpdHVkZTogMTE3LjEyODkyNVxyXG5cdFx0XHRcdFx0fSxcclxuXHRcdFx0XHRcdHtcclxuXHRcdFx0XHRcdFx0aWQ6IDQsXHJcblx0XHRcdFx0XHRcdGxhdGl0dWRlOiAzNi42NzA0MzMsXHJcblx0XHRcdFx0XHRcdGxvbmdpdHVkZTogMTE3LjEyNzg3M1xyXG5cdFx0XHRcdFx0fVxyXG5cdFx0XHRcdF0sXHJcblx0XHRcdH1cclxuXHRcdH0sXHJcblx0XHRjb21wdXRlZDoge30sXHJcblx0XHRtb3VudGVkKCkge30sXHJcblx0XHRvbkxvYWQoKSB7XHJcblx0XHRcdHRoaXMubG9hZERhdGEodGhpcy5hY3Rpb25JZClcclxuXHRcdH0sXHJcblx0XHRvblJlYWR5KCkge1xyXG5cdFx0XHR0aGlzLmxheW91dEluaXQoKVxyXG5cdFx0fSxcclxuXHRcdG9uU2hvdygpIHtcclxuXHRcdFx0Y29uc29sZS5sb2coJ1tvblNob3ddJylcclxuXHRcdFx0dW5pLm9uV2luZG93UmVzaXplKHJlcyA9PiB7XHJcblx0XHRcdFx0Ly8gY29uc29sZS5sb2coJ1tvbldpbmRvd1Jlc2l6ZV0nLCByZXMpXHJcblx0XHRcdFx0Ly8gdGhpcy5kZXZpY2VPcmllbnRhdGlvbiA9IHJlcy5kZXZpY2VPcmllbnRhdGlvblxyXG5cdFx0XHRcdC8vIGNvbnNvbGUubG9nKCdbb25XaW5kb3dSZXNpemVdIGRldmljZU9yaWVudGF0aW9uJywgdGhpcy5kZXZpY2VPcmllbnRhdGlvbilcclxuXHJcblx0XHRcdFx0dGhpcy5sYXlvdXRJbml0KClcclxuXHRcdFx0fSk7XHJcblx0XHR9LFxyXG5cdFx0YmVmb3JlRGVzdHJveSgpIHtcclxuXHRcdFx0Ly8gY29uc29sZS5sb2coXCJiZWZvcmVEZXN0cm95XCIpXHJcblx0XHRcdGNsZWFySW50ZXJ2YWwodGhpcy5pbnRlcnZhbClcclxuXHRcdFx0Ly8gbGVhZmxldEhlbHBlci5mcmVlKClcclxuXHRcdH0sXHJcblx0XHRtZXRob2RzOiB7XHJcblx0XHRcdC8vIOW4g+WxgOWIneWni+WMliDorr7nva7lnLDlm77pq5jluqZcclxuXHRcdFx0bGF5b3V0SW5pdCgpIHtcclxuXHRcdFx0XHR0aGlzLnN5c3RlbUluZm8gPSB1bmkuZ2V0U3lzdGVtSW5mb1N5bmMoKVxyXG5cdFx0XHRcdC8vIGNvbnNvbGUubG9nKCdbbGF5b3V0SW5pdF0gc3lzdGVtSW5mbycsIHRoaXMuc3lzdGVtSW5mbylcclxuXHRcdFx0XHR0aGlzLnBhZ2VIZWlnaHQgPSB0aGlzLnN5c3RlbUluZm8ud2luZG93SGVpZ2h0XHJcblx0XHRcdFx0dGhpcy5kZXZpY2VPcmllbnRhdGlvbiA9IHRoaXMuc3lzdGVtSW5mby5kZXZpY2VPcmllbnRhdGlvblxyXG5cclxuXHRcdFx0XHRpZiAodGhpcy5kZXZpY2VPcmllbnRhdGlvbiA9PSAncG9ydHJhaXQnKSB7IC8vIOerluWxj1xyXG5cdFx0XHRcdFx0Y29uc29sZS5sb2coJ1tsYXlvdXRJbml0XSDnq5blsY8nKVxyXG5cdFx0XHRcdFx0dGhpcy5mbGV4RGlyZWN0aW9uID0gJ2NvbHVtbidcclxuXHRcdFx0XHRcdC8vIGlmICh0aGlzLnBvcHVwU2hvdykge1xyXG5cdFx0XHRcdFx0Ly8gXHR0aGlzLm1hcEhlaWdodCA9IHRoaXMucGFnZUhlaWdodCAtIHRoaXMucG9wdXBIZWlnaHRcclxuXHRcdFx0XHRcdC8vIH0gZWxzZSB7XHJcblx0XHRcdFx0XHQvLyBcdHRoaXMubWFwSGVpZ2h0ID0gdGhpcy5wYWdlSGVpZ2h0XHJcblx0XHRcdFx0XHQvLyB9XHJcblx0XHRcdFx0fSBlbHNlIGlmICh0aGlzLmRldmljZU9yaWVudGF0aW9uID09ICdsYW5kc2NhcGUnKSB7IC8vIOaoquWxj1xyXG5cdFx0XHRcdFx0Y29uc29sZS5sb2coJ1tsYXlvdXRJbml0XSDmqKrlsY8nKVxyXG5cdFx0XHRcdFx0dGhpcy5mbGV4RGlyZWN0aW9uID0gJ3JvdydcclxuXHRcdFx0XHRcdC8vIHRoaXMubWFwSGVpZ2h0ID0gdGhpcy5wYWdlSGVpZ2h0XHJcblx0XHRcdFx0fVxyXG5cclxuXHRcdFx0fSxcclxuXHRcdFx0cG9wdXBUb2dnbGUoKSB7XHJcblx0XHRcdFx0Ly8gY29uc29sZS5sb2coJ1twb3B1cFRvZ2dsZV0nKVxyXG5cdFx0XHRcdHRoaXMucG9wdXBTaG93ID0gIXRoaXMucG9wdXBTaG93XHJcblx0XHRcdH0sXHJcblx0XHRcdGFzeW5jIGxvYWREYXRhKCkge1xyXG5cdFx0XHRcdHRoaXMuYWN0aW9uRGV0YWlsID0gYXdhaXQgdGhpcy5nZXRUb0FjdGlvbkRldGFpbCh0aGlzLmFjdGlvbklkKVxyXG5cdFx0XHRcdHVuaS5zZXROYXZpZ2F0aW9uQmFyVGl0bGUoe1xyXG5cdFx0XHRcdFx0dGl0bGU6IHRoaXMuYWN0aW9uRGV0YWlsLm5hbWVcclxuXHRcdFx0XHR9KTtcclxuXHRcdFx0XHQvLyBjb25zb2xlLmxvZyh0aGlzLmFjdGlvbkRldGFpbClcclxuXHJcblx0XHRcdFx0dGhpcy5pbml0TWFwKClcclxuXHRcdFx0XHR0aGlzLmhhbmRsZU1hcERyYXdSb3V0ZSgpXHJcblxyXG5cdFx0XHRcdGlmICh0aGlzLmludGVydmFsICE9IG51bGwpIHtcclxuXHRcdFx0XHRcdGNsZWFySW50ZXJ2YWwodGhpcy5pbnRlcnZhbClcclxuXHRcdFx0XHR9XHJcblxyXG5cdFx0XHRcdGxldCB0aGF0ID0gdGhpc1xyXG5cdFx0XHRcdHRoYXQucGxheWVycyA9IGF3YWl0IHRoYXQuZ2V0VG9Vc2Vyc0luR2FtZURldGFpbCh0aGF0LmFjdGlvbklkKVxyXG5cdFx0XHRcdC8vIGNvbnNvbGUubG9nKCdwbGF5ZXJzJywgdGhhdC5wbGF5ZXJzKVxyXG5cdFx0XHRcdC8vIGxlYWZsZXRIZWxwZXIuZ2xvYmFsLnNldFBsYXllcnModGhpcy5wbGF5ZXJzKVxyXG5cclxuXHRcdFx0XHR0aGF0LnBsYXllcnNfcG9zaXRpb24gPSBhd2FpdCB0aGF0LmdldFRvVXNlcnNJbkdhbWVHcHNRdWVyeSh0aGF0LmFjdGlvbklkKVxyXG5cdFx0XHRcdC8vIGxlYWZsZXRIZWxwZXIuZ2xvYmFsLnNldFBsYXllcnNQb3NpdGlvbih0aGlzLnBsYXllcnNfcG9zaXRpb24pXHJcblxyXG5cdFx0XHRcdHRoYXQuaGFuZGxlTWFwRHJhd1BsYXllcigpXHJcblxyXG5cdFx0XHRcdHRoaXMuaW50ZXJ2YWwgPSBzZXRJbnRlcnZhbChhc3luYyBmdW5jdGlvbigpIHtcclxuXHJcblx0XHRcdFx0XHR0aGF0LnBsYXllcnNfcG9zaXRpb24gPSBhd2FpdCB0aGF0LmdldFRvVXNlcnNJbkdhbWVHcHNRdWVyeSh0aGF0LmFjdGlvbklkKVxyXG5cdFx0XHRcdFx0Ly8vLyBsZWFmbGV0LmxlYWZsZXRIZWxwZXIuZ2xvYmFsLnNldFBsYXllcnModGhhdC5wbGF5ZXJzKVxyXG5cdFx0XHRcdFx0Ly8gbGVhZmxldEhlbHBlci5nbG9iYWwuc2V0UGxheWVyc1Bvc2l0aW9uKHRoYXQucGxheWVyc19wb3NpdGlvbilcclxuXHJcblx0XHRcdFx0fSwgMTAwMCk7XHJcblxyXG5cdFx0XHRcdC8vIGF3YWl0IG1hcEhlbHBlci5oYW5kbGVNYXBJbmZvKHRoaXMsIHRoaXMubWFwSW5mbylcclxuXHRcdFx0XHR0aGlzLmhhbmRsZU1hcFRvZ2dsZSgpXHJcblx0XHRcdH0sXHJcblx0XHRcdC8v5Zy65o6n56uvX+a0u+WKqOivpuaDhVxyXG5cdFx0XHRhc3luYyBnZXRUb0FjdGlvbkRldGFpbChhY3RJZCkge1xyXG5cdFx0XHRcdHRyeSB7XHJcblx0XHRcdFx0XHRyZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xyXG5cdFx0XHRcdFx0XHQvLyDliJvlu7ror7fmsYLlj4LmlbDlubbotYvlgLxcclxuXHRcdFx0XHRcdFx0dmFyIHJlcXVlc3QgPSBuZXcgSWRSZXF1ZXN0KClcclxuXHRcdFx0XHRcdFx0cmVxdWVzdC5zZXRJZChhY3RJZClcclxuXHRcdFx0XHRcdFx0Ly8g6LCD55So5a6i5oi356uv55u45bqU55qEZ3JwY+aWueazle+8jOWPkemAgWdycGPor7fmsYLvvIzlubbmjqXlj5flkI7lj7Dlj5HpgIHlm57mnaXnmoTov5Tlm57lgLxcclxuXHRcdFx0XHRcdFx0dGhpcy4kY2xpZW50LnRvQWN0aW9uRGV0YWlsKHJlcXVlc3QsIHt9LCAoZXJyLCByZXNwb25zZSkgPT4ge1xyXG5cdFx0XHRcdFx0XHRcdGlmIChlcnIpIHtcclxuXHRcdFx0XHRcdFx0XHRcdGNvbnNvbGUubG9nKGBbdG9BY3Rpb25EZXRhaWxdIGVycjogY29kZSA9ICR7ZXJyLmNvZGV9YCArXHJcblx0XHRcdFx0XHRcdFx0XHRcdGAsIG1lc3NhZ2UgPSBcIiR7ZXJyLm1lc3NhZ2V9XCJgKVxyXG5cdFx0XHRcdFx0XHRcdFx0cmVqZWN0KGVycilcclxuXHRcdFx0XHRcdFx0XHR9IGVsc2Uge1xyXG5cdFx0XHRcdFx0XHRcdFx0bGV0IHJlcyA9IHJlc3BvbnNlLnRvT2JqZWN0KClcclxuXHRcdFx0XHRcdFx0XHRcdGNvbnNvbGUubG9nKCdbdG9BY3Rpb25EZXRhaWxdJywgcmVzKVxyXG5cdFx0XHRcdFx0XHRcdFx0cmVzb2x2ZShyZXMpXHJcblx0XHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0XHR9KVxyXG5cdFx0XHRcdFx0fSk7XHJcblx0XHRcdFx0fSBjYXRjaCAoZSkge1xyXG5cdFx0XHRcdFx0Y29uc29sZS5sb2coJ1tnZXRUb0FjdGlvbkRldGFpbF0gZXJyJywgZSlcclxuXHRcdFx0XHRcdHJlamVjdChlKVxyXG5cdFx0XHRcdH1cclxuXHRcdFx0fSxcclxuXHRcdFx0Ly/lnLrmjqfnq69f5q2j5Zyo6L+b6KGM5Lit5omA5pyJ55So5oi35a6e5pe25L+h5oGvXHJcblx0XHRcdGFzeW5jIGdldFRvVXNlcnNJbkdhbWVEZXRhaWwoYWN0SWQpIHtcclxuXHRcdFx0XHR0cnkge1xyXG5cdFx0XHRcdFx0cmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcclxuXHRcdFx0XHRcdFx0Ly8g5Yib5bu66K+35rGC5Y+C5pWw5bm26LWL5YC8XHJcblx0XHRcdFx0XHRcdHZhciByZXF1ZXN0ID0gbmV3IElkUmVxdWVzdCgpXHJcblx0XHRcdFx0XHRcdHJlcXVlc3Quc2V0SWQoYWN0SWQpXHJcblx0XHRcdFx0XHRcdC8vIOiwg+eUqOWuouaIt+err+ebuOW6lOeahGdycGPmlrnms5XvvIzlj5HpgIFncnBj6K+35rGC77yM5bm25o6l5Y+X5ZCO5Y+w5Y+R6YCB5Zue5p2l55qE6L+U5Zue5YC8XHJcblx0XHRcdFx0XHRcdHRoaXMuJGNsaWVudC50b1VzZXJzSW5HYW1lRGV0YWlsKHJlcXVlc3QsIHt9LCAoZXJyLCByZXNwb25zZSkgPT4ge1xyXG5cdFx0XHRcdFx0XHRcdGlmIChlcnIpIHtcclxuXHRcdFx0XHRcdFx0XHRcdGNvbnNvbGUubG9nKGBbdG9Vc2Vyc0luR2FtZURldGFpbF0gZXJyOiBjb2RlID0gJHtlcnIuY29kZX1gICtcclxuXHRcdFx0XHRcdFx0XHRcdFx0YCwgbWVzc2FnZSA9IFwiJHtlcnIubWVzc2FnZX1cImApXHJcblx0XHRcdFx0XHRcdFx0XHRyZWplY3QoZXJyKVxyXG5cdFx0XHRcdFx0XHRcdH0gZWxzZSB7XHJcblx0XHRcdFx0XHRcdFx0XHRsZXQgcmVzID0gcmVzcG9uc2UudG9PYmplY3QoKVxyXG5cdFx0XHRcdFx0XHRcdFx0Ly8gY29uc29sZS5sb2coJ1t0b1VzZXJzSW5HYW1lRGV0YWlsXScsIHJlcylcclxuXHRcdFx0XHRcdFx0XHRcdHJlc29sdmUocmVzLnVzZXJzTGlzdClcclxuXHRcdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRcdH0pXHJcblx0XHRcdFx0XHR9KTtcclxuXHRcdFx0XHR9IGNhdGNoIChlKSB7XHJcblx0XHRcdFx0XHRjb25zb2xlLmxvZygnW2dldFRvVXNlcnNJbkdhbWVEZXRhaWxdIGVycicsIGUpXHJcblx0XHRcdFx0XHRyZWplY3QoZSlcclxuXHRcdFx0XHR9XHJcblx0XHRcdH0sXHJcblx0XHRcdC8v5Zy65o6n56uvX+ato+WcqOi/m+ihjOS4reaJgOacieeUqOaIt+WunuaXtmdwc+afpeivolxyXG5cdFx0XHRhc3luYyBnZXRUb1VzZXJzSW5HYW1lR3BzUXVlcnkoYWN0SWQpIHtcclxuXHRcdFx0XHR0cnkge1xyXG5cdFx0XHRcdFx0cmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcclxuXHRcdFx0XHRcdFx0Ly8g5Yib5bu66K+35rGC5Y+C5pWw5bm26LWL5YC8XHJcblx0XHRcdFx0XHRcdHZhciByZXF1ZXN0ID0gbmV3IElkUmVxdWVzdCgpXHJcblx0XHRcdFx0XHRcdHJlcXVlc3Quc2V0SWQoYWN0SWQpXHJcblx0XHRcdFx0XHRcdC8vIOiwg+eUqOWuouaIt+err+ebuOW6lOeahGdycGPmlrnms5XvvIzlj5HpgIFncnBj6K+35rGC77yM5bm25o6l5Y+X5ZCO5Y+w5Y+R6YCB5Zue5p2l55qE6L+U5Zue5YC8XHJcblx0XHRcdFx0XHRcdHRoaXMuJGNsaWVudC50b1VzZXJzSW5HYW1lR3BzUXVlcnkocmVxdWVzdCwge30sIChlcnIsIHJlc3BvbnNlKSA9PiB7XHJcblx0XHRcdFx0XHRcdFx0aWYgKGVycikge1xyXG5cdFx0XHRcdFx0XHRcdFx0Y29uc29sZS5sb2coYFt0b1VzZXJzSW5HYW1lR3BzUXVlcnldIGVycjogY29kZSA9ICR7ZXJyLmNvZGV9YCArXHJcblx0XHRcdFx0XHRcdFx0XHRcdGAsIG1lc3NhZ2UgPSBcIiR7ZXJyLm1lc3NhZ2V9XCJgKVxyXG5cdFx0XHRcdFx0XHRcdFx0cmVqZWN0KGVycilcclxuXHRcdFx0XHRcdFx0XHR9IGVsc2Uge1xyXG5cdFx0XHRcdFx0XHRcdFx0bGV0IHJlcyA9IHJlc3BvbnNlLnRvT2JqZWN0KClcclxuXHRcdFx0XHRcdFx0XHRcdC8vIGNvbnNvbGUubG9nKCdbdG9Vc2Vyc0luR2FtZUdwc1F1ZXJ5XScsIHJlcylcclxuXHRcdFx0XHRcdFx0XHRcdHJlc29sdmUocmVzLmdwc2luZm9MaXN0KVxyXG5cdFx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdFx0fSlcclxuXHRcdFx0XHRcdH0pO1xyXG5cdFx0XHRcdH0gY2F0Y2ggKGUpIHtcclxuXHRcdFx0XHRcdGNvbnNvbGUubG9nKCdbZ2V0VG9Vc2Vyc0luR2FtZUdwc1F1ZXJ5XSBlcnInLCBlKVxyXG5cdFx0XHRcdFx0cmVqZWN0KGUpXHJcblx0XHRcdFx0fVxyXG5cdFx0XHR9LFxyXG5cdFx0XHQvLyB0cmlnZ2VyKGUpIHtcclxuXHRcdFx0Ly8gXHRjb25zb2xlLmxvZyhlKVxyXG5cdFx0XHQvLyBcdHRoaXMuY29udGVudFtlLmluZGV4XS5hY3RpdmUgPSAhZS5pdGVtLmFjdGl2ZVxyXG5cdFx0XHQvLyBcdHVuaS5zaG93TW9kYWwoe1xyXG5cdFx0XHQvLyBcdFx0dGl0bGU6ICfmj5DnpLonLFxyXG5cdFx0XHQvLyBcdFx0Y29udGVudDogYOaCqCR7dGhpcy5jb250ZW50W2UuaW5kZXhdLmFjdGl2ZSA/ICfpgInkuK3kuoYnIDogJ+WPlua2iOS6hid9JHtlLml0ZW0udGV4dH1gLFxyXG5cdFx0XHQvLyBcdFx0c3VjY2VzczogZnVuY3Rpb24ocmVzKSB7XHJcblx0XHRcdC8vIFx0XHRcdGlmIChyZXMuY29uZmlybSkge1xyXG5cdFx0XHQvLyBcdFx0XHRcdGNvbnNvbGUubG9nKCfnlKjmiLfngrnlh7vnoa7lrponKVxyXG5cdFx0XHQvLyBcdFx0XHR9IGVsc2UgaWYgKHJlcy5jYW5jZWwpIHtcclxuXHRcdFx0Ly8gXHRcdFx0XHRjb25zb2xlLmxvZygn55So5oi354K55Ye75Y+W5raIJylcclxuXHRcdFx0Ly8gXHRcdFx0fVxyXG5cdFx0XHQvLyBcdFx0fVxyXG5cdFx0XHQvLyBcdH0pXHJcblx0XHRcdC8vIH0sXHJcblx0XHRcdC8vIGZhYkNsaWNrKCkge1xyXG5cdFx0XHQvLyBcdHVuaS5zaG93VG9hc3Qoe1xyXG5cdFx0XHQvLyBcdFx0dGl0bGU6ICfngrnlh7vkuobmgqzmta7mjInpkq4nLFxyXG5cdFx0XHQvLyBcdFx0aWNvbjogJ25vbmUnXHJcblx0XHRcdC8vIFx0fSlcclxuXHRcdFx0Ly8gfSxcclxuXHRcdH1cclxuXHR9XHJcbjwvc2NyaXB0PlxyXG5cclxuPHN0eWxlIGxhbmc9XCJzY3NzXCIgc2NvcGVkPlxyXG5cdC5wYWdlIHtcclxuXHRcdGJhY2tncm91bmQtY29sb3I6IHJlZDtcclxuXHRcdGRpc3BsYXk6IGZsZXg7XHJcblx0fVxyXG5cclxuXHQubWFwIHtcclxuXHRcdGZsZXg6IDEgMSBhdXRvO1xyXG5cdFx0YmFja2dyb3VuZC1jb2xvcjogd2hpdGU7XHJcblx0XHR6LWluZGV4OiAwO1xyXG5cdFx0Ly8gZGlzcGxheTogZmxleDtcclxuXHRcdC8vIGp1c3RpZnktY29udGVudDogY2VudGVyO1xyXG5cdFx0Ly8gYWxpZ24taXRlbXM6IGNlbnRlcjtcclxuXHR9XHJcblxyXG5cdC5wb3B1cCB7XHJcblx0XHQvLyBoZWlnaHQ6IDIwMHB4O1xyXG5cdH1cclxuXHJcblx0Ly8gLmZhYiB7XHJcblx0Ly8gXHR6LWluZGV4OiAxMDAwO1xyXG5cdC8vIFx0d2lkdGg6IDIwcHg7XHJcblx0Ly8gfVxyXG48L3N0eWxlPiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///33\n");
- /***/ }),
- /* 34 */
- /*!*********************************************************************!*\
- !*** ./node_modules/@dcloudio/vue-cli-plugin-uni/lib/format-log.js ***!
- \*********************************************************************/
- /*! exports provided: log, default */
- /***/ (function(module, __webpack_exports__, __webpack_require__) {
- "use strict";
- __webpack_require__.r(__webpack_exports__);
- /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "log", function() { return log; });
- /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return formatLog; });
- function typof (v) {
- var s = Object.prototype.toString.call(v)
- return s.substring(8, s.length - 1)
- }
- function isDebugMode () {
- /* eslint-disable no-undef */
- return typeof __channelId__ === 'string' && __channelId__
- }
- function jsonStringifyReplacer (k, p) {
- switch (typof(p)) {
- case 'Function':
- return 'function() { [native code] }'
- default :
- return p
- }
- }
- function log (type) {
- for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {
- args[_key - 1] = arguments[_key]
- }
- console[type].apply(console, args)
- }
- function formatLog () {
- for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
- args[_key] = arguments[_key]
- }
- var type = args.shift()
- if (isDebugMode()) {
- args.push(args.pop().replace('at ', 'uni-app:///'))
- return console[type].apply(console, args)
- }
- var msgs = args.map(function (v) {
- var type = Object.prototype.toString.call(v).toLowerCase()
- if (type === '[object object]' || type === '[object array]') {
- try {
- v = '---BEGIN:JSON---' + JSON.stringify(v, jsonStringifyReplacer) + '---END:JSON---'
- } catch (e) {
- v = type
- }
- } else {
- if (v === null) {
- v = '---NULL---'
- } else if (v === undefined) {
- v = '---UNDEFINED---'
- } else {
- var vType = typof(v).toUpperCase()
- if (vType === 'NUMBER' || vType === 'BOOLEAN') {
- v = '---BEGIN:' + vType + '---' + v + '---END:' + vType + '---'
- } else {
- v = String(v)
- }
- }
- }
- return v
- })
- var msg = ''
- if (msgs.length > 1) {
- var lastMsg = msgs.pop()
- msg = msgs.join('---COMMA---')
- if (lastMsg.indexOf(' at ') === 0) {
- msg += lastMsg
- } else {
- msg += '---COMMA---' + lastMsg
- }
- } else {
- msg = msgs[0]
- }
- console[type](msg)
- }
- /***/ }),
- /* 35 */
- /*!**********************************************************!*\
- !*** ./node_modules/@babel/runtime/regenerator/index.js ***!
- \**********************************************************/
- /*! no static exports found */
- /***/ (function(module, exports, __webpack_require__) {
- var _typeof = __webpack_require__(/*! @babel/runtime/helpers/typeof */ 4);
- // TODO(Babel 8): Remove this file.
- var runtime = __webpack_require__(/*! ../helpers/regeneratorRuntime */ 36)();
- module.exports = runtime;
- // Copied from https://github.com/facebook/regenerator/blob/main/packages/runtime/runtime.js#L736=
- try {
- regeneratorRuntime = runtime;
- } catch (accidentalStrictMode) {
- if ((typeof globalThis === "undefined" ? "undefined" : _typeof(globalThis)) === "object") {
- globalThis.regeneratorRuntime = runtime;
- } else {
- Function("r", "regeneratorRuntime = r")(runtime);
- }
- }
- /***/ }),
- /* 36 */
- /*!*******************************************************************!*\
- !*** ./node_modules/@babel/runtime/helpers/regeneratorRuntime.js ***!
- \*******************************************************************/
- /*! no static exports found */
- /***/ (function(module, exports, __webpack_require__) {
- var _typeof = __webpack_require__(/*! ./typeof.js */ 4)["default"];
- function _regeneratorRuntime() {
- "use strict";
- /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */
- module.exports = _regeneratorRuntime = function _regeneratorRuntime() {
- return exports;
- }, module.exports.__esModule = true, module.exports["default"] = module.exports;
- var exports = {},
- Op = Object.prototype,
- hasOwn = Op.hasOwnProperty,
- defineProperty = Object.defineProperty || function (obj, key, desc) {
- obj[key] = desc.value;
- },
- $Symbol = "function" == typeof Symbol ? Symbol : {},
- iteratorSymbol = $Symbol.iterator || "@@iterator",
- asyncIteratorSymbol = $Symbol.asyncIterator || "@@asyncIterator",
- toStringTagSymbol = $Symbol.toStringTag || "@@toStringTag";
- function define(obj, key, value) {
- return Object.defineProperty(obj, key, {
- value: value,
- enumerable: !0,
- configurable: !0,
- writable: !0
- }), obj[key];
- }
- try {
- define({}, "");
- } catch (err) {
- define = function define(obj, key, value) {
- return obj[key] = value;
- };
- }
- function wrap(innerFn, outerFn, self, tryLocsList) {
- var protoGenerator = outerFn && outerFn.prototype instanceof Generator ? outerFn : Generator,
- generator = Object.create(protoGenerator.prototype),
- context = new Context(tryLocsList || []);
- return defineProperty(generator, "_invoke", {
- value: makeInvokeMethod(innerFn, self, context)
- }), generator;
- }
- function tryCatch(fn, obj, arg) {
- try {
- return {
- type: "normal",
- arg: fn.call(obj, arg)
- };
- } catch (err) {
- return {
- type: "throw",
- arg: err
- };
- }
- }
- exports.wrap = wrap;
- var ContinueSentinel = {};
- function Generator() {}
- function GeneratorFunction() {}
- function GeneratorFunctionPrototype() {}
- var IteratorPrototype = {};
- define(IteratorPrototype, iteratorSymbol, function () {
- return this;
- });
- var getProto = Object.getPrototypeOf,
- NativeIteratorPrototype = getProto && getProto(getProto(values([])));
- NativeIteratorPrototype && NativeIteratorPrototype !== Op && hasOwn.call(NativeIteratorPrototype, iteratorSymbol) && (IteratorPrototype = NativeIteratorPrototype);
- var Gp = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(IteratorPrototype);
- function defineIteratorMethods(prototype) {
- ["next", "throw", "return"].forEach(function (method) {
- define(prototype, method, function (arg) {
- return this._invoke(method, arg);
- });
- });
- }
- function AsyncIterator(generator, PromiseImpl) {
- function invoke(method, arg, resolve, reject) {
- var record = tryCatch(generator[method], generator, arg);
- if ("throw" !== record.type) {
- var result = record.arg,
- value = result.value;
- return value && "object" == _typeof(value) && hasOwn.call(value, "__await") ? PromiseImpl.resolve(value.__await).then(function (value) {
- invoke("next", value, resolve, reject);
- }, function (err) {
- invoke("throw", err, resolve, reject);
- }) : PromiseImpl.resolve(value).then(function (unwrapped) {
- result.value = unwrapped, resolve(result);
- }, function (error) {
- return invoke("throw", error, resolve, reject);
- });
- }
- reject(record.arg);
- }
- var previousPromise;
- defineProperty(this, "_invoke", {
- value: function value(method, arg) {
- function callInvokeWithMethodAndArg() {
- return new PromiseImpl(function (resolve, reject) {
- invoke(method, arg, resolve, reject);
- });
- }
- return previousPromise = previousPromise ? previousPromise.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg();
- }
- });
- }
- function makeInvokeMethod(innerFn, self, context) {
- var state = "suspendedStart";
- return function (method, arg) {
- if ("executing" === state) throw new Error("Generator is already running");
- if ("completed" === state) {
- if ("throw" === method) throw arg;
- return doneResult();
- }
- for (context.method = method, context.arg = arg;;) {
- var delegate = context.delegate;
- if (delegate) {
- var delegateResult = maybeInvokeDelegate(delegate, context);
- if (delegateResult) {
- if (delegateResult === ContinueSentinel) continue;
- return delegateResult;
- }
- }
- if ("next" === context.method) context.sent = context._sent = context.arg;else if ("throw" === context.method) {
- if ("suspendedStart" === state) throw state = "completed", context.arg;
- context.dispatchException(context.arg);
- } else "return" === context.method && context.abrupt("return", context.arg);
- state = "executing";
- var record = tryCatch(innerFn, self, context);
- if ("normal" === record.type) {
- if (state = context.done ? "completed" : "suspendedYield", record.arg === ContinueSentinel) continue;
- return {
- value: record.arg,
- done: context.done
- };
- }
- "throw" === record.type && (state = "completed", context.method = "throw", context.arg = record.arg);
- }
- };
- }
- function maybeInvokeDelegate(delegate, context) {
- var methodName = context.method,
- method = delegate.iterator[methodName];
- if (undefined === method) return context.delegate = null, "throw" === methodName && delegate.iterator["return"] && (context.method = "return", context.arg = undefined, maybeInvokeDelegate(delegate, context), "throw" === context.method) || "return" !== methodName && (context.method = "throw", context.arg = new TypeError("The iterator does not provide a '" + methodName + "' method")), ContinueSentinel;
- var record = tryCatch(method, delegate.iterator, context.arg);
- if ("throw" === record.type) return context.method = "throw", context.arg = record.arg, context.delegate = null, ContinueSentinel;
- var info = record.arg;
- return info ? info.done ? (context[delegate.resultName] = info.value, context.next = delegate.nextLoc, "return" !== context.method && (context.method = "next", context.arg = undefined), context.delegate = null, ContinueSentinel) : info : (context.method = "throw", context.arg = new TypeError("iterator result is not an object"), context.delegate = null, ContinueSentinel);
- }
- function pushTryEntry(locs) {
- var entry = {
- tryLoc: locs[0]
- };
- 1 in locs && (entry.catchLoc = locs[1]), 2 in locs && (entry.finallyLoc = locs[2], entry.afterLoc = locs[3]), this.tryEntries.push(entry);
- }
- function resetTryEntry(entry) {
- var record = entry.completion || {};
- record.type = "normal", delete record.arg, entry.completion = record;
- }
- function Context(tryLocsList) {
- this.tryEntries = [{
- tryLoc: "root"
- }], tryLocsList.forEach(pushTryEntry, this), this.reset(!0);
- }
- function values(iterable) {
- if (iterable) {
- var iteratorMethod = iterable[iteratorSymbol];
- if (iteratorMethod) return iteratorMethod.call(iterable);
- if ("function" == typeof iterable.next) return iterable;
- if (!isNaN(iterable.length)) {
- var i = -1,
- next = function next() {
- for (; ++i < iterable.length;) {
- if (hasOwn.call(iterable, i)) return next.value = iterable[i], next.done = !1, next;
- }
- return next.value = undefined, next.done = !0, next;
- };
- return next.next = next;
- }
- }
- return {
- next: doneResult
- };
- }
- function doneResult() {
- return {
- value: undefined,
- done: !0
- };
- }
- return GeneratorFunction.prototype = GeneratorFunctionPrototype, defineProperty(Gp, "constructor", {
- value: GeneratorFunctionPrototype,
- configurable: !0
- }), defineProperty(GeneratorFunctionPrototype, "constructor", {
- value: GeneratorFunction,
- configurable: !0
- }), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, toStringTagSymbol, "GeneratorFunction"), exports.isGeneratorFunction = function (genFun) {
- var ctor = "function" == typeof genFun && genFun.constructor;
- return !!ctor && (ctor === GeneratorFunction || "GeneratorFunction" === (ctor.displayName || ctor.name));
- }, exports.mark = function (genFun) {
- return Object.setPrototypeOf ? Object.setPrototypeOf(genFun, GeneratorFunctionPrototype) : (genFun.__proto__ = GeneratorFunctionPrototype, define(genFun, toStringTagSymbol, "GeneratorFunction")), genFun.prototype = Object.create(Gp), genFun;
- }, exports.awrap = function (arg) {
- return {
- __await: arg
- };
- }, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, asyncIteratorSymbol, function () {
- return this;
- }), exports.AsyncIterator = AsyncIterator, exports.async = function (innerFn, outerFn, self, tryLocsList, PromiseImpl) {
- void 0 === PromiseImpl && (PromiseImpl = Promise);
- var iter = new AsyncIterator(wrap(innerFn, outerFn, self, tryLocsList), PromiseImpl);
- return exports.isGeneratorFunction(outerFn) ? iter : iter.next().then(function (result) {
- return result.done ? result.value : iter.next();
- });
- }, defineIteratorMethods(Gp), define(Gp, toStringTagSymbol, "Generator"), define(Gp, iteratorSymbol, function () {
- return this;
- }), define(Gp, "toString", function () {
- return "[object Generator]";
- }), exports.keys = function (val) {
- var object = Object(val),
- keys = [];
- for (var key in object) {
- keys.push(key);
- }
- return keys.reverse(), function next() {
- for (; keys.length;) {
- var key = keys.pop();
- if (key in object) return next.value = key, next.done = !1, next;
- }
- return next.done = !0, next;
- };
- }, exports.values = values, Context.prototype = {
- constructor: Context,
- reset: function reset(skipTempReset) {
- if (this.prev = 0, this.next = 0, this.sent = this._sent = undefined, this.done = !1, this.delegate = null, this.method = "next", this.arg = undefined, this.tryEntries.forEach(resetTryEntry), !skipTempReset) for (var name in this) {
- "t" === name.charAt(0) && hasOwn.call(this, name) && !isNaN(+name.slice(1)) && (this[name] = undefined);
- }
- },
- stop: function stop() {
- this.done = !0;
- var rootRecord = this.tryEntries[0].completion;
- if ("throw" === rootRecord.type) throw rootRecord.arg;
- return this.rval;
- },
- dispatchException: function dispatchException(exception) {
- if (this.done) throw exception;
- var context = this;
- function handle(loc, caught) {
- return record.type = "throw", record.arg = exception, context.next = loc, caught && (context.method = "next", context.arg = undefined), !!caught;
- }
- for (var i = this.tryEntries.length - 1; i >= 0; --i) {
- var entry = this.tryEntries[i],
- record = entry.completion;
- if ("root" === entry.tryLoc) return handle("end");
- if (entry.tryLoc <= this.prev) {
- var hasCatch = hasOwn.call(entry, "catchLoc"),
- hasFinally = hasOwn.call(entry, "finallyLoc");
- if (hasCatch && hasFinally) {
- if (this.prev < entry.catchLoc) return handle(entry.catchLoc, !0);
- if (this.prev < entry.finallyLoc) return handle(entry.finallyLoc);
- } else if (hasCatch) {
- if (this.prev < entry.catchLoc) return handle(entry.catchLoc, !0);
- } else {
- if (!hasFinally) throw new Error("try statement without catch or finally");
- if (this.prev < entry.finallyLoc) return handle(entry.finallyLoc);
- }
- }
- }
- },
- abrupt: function abrupt(type, arg) {
- for (var i = this.tryEntries.length - 1; i >= 0; --i) {
- var entry = this.tryEntries[i];
- if (entry.tryLoc <= this.prev && hasOwn.call(entry, "finallyLoc") && this.prev < entry.finallyLoc) {
- var finallyEntry = entry;
- break;
- }
- }
- finallyEntry && ("break" === type || "continue" === type) && finallyEntry.tryLoc <= arg && arg <= finallyEntry.finallyLoc && (finallyEntry = null);
- var record = finallyEntry ? finallyEntry.completion : {};
- return record.type = type, record.arg = arg, finallyEntry ? (this.method = "next", this.next = finallyEntry.finallyLoc, ContinueSentinel) : this.complete(record);
- },
- complete: function complete(record, afterLoc) {
- if ("throw" === record.type) throw record.arg;
- return "break" === record.type || "continue" === record.type ? this.next = record.arg : "return" === record.type ? (this.rval = this.arg = record.arg, this.method = "return", this.next = "end") : "normal" === record.type && afterLoc && (this.next = afterLoc), ContinueSentinel;
- },
- finish: function finish(finallyLoc) {
- for (var i = this.tryEntries.length - 1; i >= 0; --i) {
- var entry = this.tryEntries[i];
- if (entry.finallyLoc === finallyLoc) return this.complete(entry.completion, entry.afterLoc), resetTryEntry(entry), ContinueSentinel;
- }
- },
- "catch": function _catch(tryLoc) {
- for (var i = this.tryEntries.length - 1; i >= 0; --i) {
- var entry = this.tryEntries[i];
- if (entry.tryLoc === tryLoc) {
- var record = entry.completion;
- if ("throw" === record.type) {
- var thrown = record.arg;
- resetTryEntry(entry);
- }
- return thrown;
- }
- }
- throw new Error("illegal catch attempt");
- },
- delegateYield: function delegateYield(iterable, resultName, nextLoc) {
- return this.delegate = {
- iterator: values(iterable),
- resultName: resultName,
- nextLoc: nextLoc
- }, "next" === this.method && (this.arg = undefined), ContinueSentinel;
- }
- }, exports;
- }
- module.exports = _regeneratorRuntime, module.exports.__esModule = true, module.exports["default"] = module.exports;
- /***/ }),
- /* 37 */
- /*!*****************************************************************!*\
- !*** ./node_modules/@babel/runtime/helpers/asyncToGenerator.js ***!
- \*****************************************************************/
- /*! no static exports found */
- /***/ (function(module, exports) {
- function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {
- try {
- var info = gen[key](arg);
- var value = info.value;
- } catch (error) {
- reject(error);
- return;
- }
- if (info.done) {
- resolve(value);
- } else {
- Promise.resolve(value).then(_next, _throw);
- }
- }
- function _asyncToGenerator(fn) {
- return function () {
- var self = this,
- args = arguments;
- return new Promise(function (resolve, reject) {
- var gen = fn.apply(self, args);
- function _next(value) {
- asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value);
- }
- function _throw(err) {
- asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err);
- }
- _next(undefined);
- });
- };
- }
- module.exports = _asyncToGenerator, module.exports.__esModule = true, module.exports["default"] = module.exports;
- /***/ }),
- /* 38 */
- /*!**********************************************************!*\
- !*** D:/Work2/Orienteering/TrackOffical/grpc/base_pb.js ***!
- \**********************************************************/
- /*! no static exports found */
- /***/ (function(module, exports, __webpack_require__) {
- eval("// source: base.proto\n/**\n * @fileoverview\n * @enhanceable\n * @suppress {missingRequire} reports error on implicit type usages.\n * @suppress {messageConventions} JS Compiler reports an error if a variable or\n * field starts with 'MSG_' and isn't a translatable message.\n * @public\n */\n// GENERATED CODE -- DO NOT EDIT!\n/* eslint-disable */\n// @ts-nocheck\n\nvar jspb = __webpack_require__(/*! google-protobuf */ 39);\nvar goog = jspb;\nvar global = function () {\n return this || window || global || self || Function('return this')();\n}.call(null);\nvar google_protobuf_timestamp_pb = __webpack_require__(/*! google-protobuf/google/protobuf/timestamp_pb.js */ 41);\ngoog.object.extend(proto, google_protobuf_timestamp_pb);\ngoog.exportSymbol('proto.base.v1.BaseMapInfo', null, global);\ngoog.exportSymbol('proto.base.v1.CType', null, global);\ngoog.exportSymbol('proto.base.v1.ControlInfoList', null, global);\ngoog.exportSymbol('proto.base.v1.ControlPoint', null, global);\ngoog.exportSymbol('proto.base.v1.ControlPointInfo', null, global);\ngoog.exportSymbol('proto.base.v1.ControlPointSimple', null, global);\ngoog.exportSymbol('proto.base.v1.CourseInfo', null, global);\ngoog.exportSymbol('proto.base.v1.CriterionType', null, global);\ngoog.exportSymbol('proto.base.v1.DefaultReply', null, global);\ngoog.exportSymbol('proto.base.v1.DefaultRequest', null, global);\ngoog.exportSymbol('proto.base.v1.ErrorCode', null, global);\ngoog.exportSymbol('proto.base.v1.GameGpsInfo', null, global);\ngoog.exportSymbol('proto.base.v1.HeartRate', null, global);\ngoog.exportSymbol('proto.base.v1.HrBandType', null, global);\ngoog.exportSymbol('proto.base.v1.IdRequest', null, global);\ngoog.exportSymbol('proto.base.v1.Image', null, global);\ngoog.exportSymbol('proto.base.v1.LoginSource', null, global);\ngoog.exportSymbol('proto.base.v1.MapRoute', null, global);\ngoog.exportSymbol('proto.base.v1.NetImage', null, global);\ngoog.exportSymbol('proto.base.v1.Position', null, global);\ngoog.exportSymbol('proto.base.v1.ProjectContentType', null, global);\ngoog.exportSymbol('proto.base.v1.Region', null, global);\ngoog.exportSymbol('proto.base.v1.ShopList', null, global);\ngoog.exportSymbol('proto.base.v1.ShopType', null, global);\ngoog.exportSymbol('proto.base.v1.SignInReply', null, global);\ngoog.exportSymbol('proto.base.v1.SmsType', null, global);\ngoog.exportSymbol('proto.base.v1.StatusEditRequest', null, global);\ngoog.exportSymbol('proto.base.v1.StatusType', null, global);\ngoog.exportSymbol('proto.base.v1.User', null, global);\ngoog.exportSymbol('proto.base.v1.User.Sex', null, global);\ngoog.exportSymbol('proto.base.v1.UserType', null, global);\n/**\n * Generated by JsPbCodeGenerator.\n * @param {Array=} opt_data Optional initial data array, typically from a\n * server response, or constructed directly in Javascript. The array is used\n * in place and becomes part of the constructed object. It is not cloned.\n * If no data is provided, the constructed object will be empty, but still\n * valid.\n * @extends {jspb.Message}\n * @constructor\n */\nproto.base.v1.NetImage = function (opt_data) {\n jspb.Message.initialize(this, opt_data, 0, -1, null, null);\n};\ngoog.inherits(proto.base.v1.NetImage, jspb.Message);\nif (goog.DEBUG && !COMPILED) {\n /**\n * @public\n * @override\n */\n proto.base.v1.NetImage.displayName = 'proto.base.v1.NetImage';\n}\n/**\n * Generated by JsPbCodeGenerator.\n * @param {Array=} opt_data Optional initial data array, typically from a\n * server response, or constructed directly in Javascript. The array is used\n * in place and becomes part of the constructed object. It is not cloned.\n * If no data is provided, the constructed object will be empty, but still\n * valid.\n * @extends {jspb.Message}\n * @constructor\n */\nproto.base.v1.User = function (opt_data) {\n jspb.Message.initialize(this, opt_data, 0, -1, null, null);\n};\ngoog.inherits(proto.base.v1.User, jspb.Message);\nif (goog.DEBUG && !COMPILED) {\n /**\n * @public\n * @override\n */\n proto.base.v1.User.displayName = 'proto.base.v1.User';\n}\n/**\n * Generated by JsPbCodeGenerator.\n * @param {Array=} opt_data Optional initial data array, typically from a\n * server response, or constructed directly in Javascript. The array is used\n * in place and becomes part of the constructed object. It is not cloned.\n * If no data is provided, the constructed object will be empty, but still\n * valid.\n * @extends {jspb.Message}\n * @constructor\n */\nproto.base.v1.GameGpsInfo = function (opt_data) {\n jspb.Message.initialize(this, opt_data, 0, -1, null, null);\n};\ngoog.inherits(proto.base.v1.GameGpsInfo, jspb.Message);\nif (goog.DEBUG && !COMPILED) {\n /**\n * @public\n * @override\n */\n proto.base.v1.GameGpsInfo.displayName = 'proto.base.v1.GameGpsInfo';\n}\n/**\n * Generated by JsPbCodeGenerator.\n * @param {Array=} opt_data Optional initial data array, typically from a\n * server response, or constructed directly in Javascript. The array is used\n * in place and becomes part of the constructed object. It is not cloned.\n * If no data is provided, the constructed object will be empty, but still\n * valid.\n * @extends {jspb.Message}\n * @constructor\n */\nproto.base.v1.HeartRate = function (opt_data) {\n jspb.Message.initialize(this, opt_data, 0, -1, null, null);\n};\ngoog.inherits(proto.base.v1.HeartRate, jspb.Message);\nif (goog.DEBUG && !COMPILED) {\n /**\n * @public\n * @override\n */\n proto.base.v1.HeartRate.displayName = 'proto.base.v1.HeartRate';\n}\n/**\n * Generated by JsPbCodeGenerator.\n * @param {Array=} opt_data Optional initial data array, typically from a\n * server response, or constructed directly in Javascript. The array is used\n * in place and becomes part of the constructed object. It is not cloned.\n * If no data is provided, the constructed object will be empty, but still\n * valid.\n * @extends {jspb.Message}\n * @constructor\n */\nproto.base.v1.SignInReply = function (opt_data) {\n jspb.Message.initialize(this, opt_data, 0, -1, null, null);\n};\ngoog.inherits(proto.base.v1.SignInReply, jspb.Message);\nif (goog.DEBUG && !COMPILED) {\n /**\n * @public\n * @override\n */\n proto.base.v1.SignInReply.displayName = 'proto.base.v1.SignInReply';\n}\n/**\n * Generated by JsPbCodeGenerator.\n * @param {Array=} opt_data Optional initial data array, typically from a\n * server response, or constructed directly in Javascript. The array is used\n * in place and becomes part of the constructed object. It is not cloned.\n * If no data is provided, the constructed object will be empty, but still\n * valid.\n * @extends {jspb.Message}\n * @constructor\n */\nproto.base.v1.MapRoute = function (opt_data) {\n jspb.Message.initialize(this, opt_data, 0, -1, null, null);\n};\ngoog.inherits(proto.base.v1.MapRoute, jspb.Message);\nif (goog.DEBUG && !COMPILED) {\n /**\n * @public\n * @override\n */\n proto.base.v1.MapRoute.displayName = 'proto.base.v1.MapRoute';\n}\n/**\n * Generated by JsPbCodeGenerator.\n * @param {Array=} opt_data Optional initial data array, typically from a\n * server response, or constructed directly in Javascript. The array is used\n * in place and becomes part of the constructed object. It is not cloned.\n * If no data is provided, the constructed object will be empty, but still\n * valid.\n * @extends {jspb.Message}\n * @constructor\n */\nproto.base.v1.BaseMapInfo = function (opt_data) {\n jspb.Message.initialize(this, opt_data, 0, -1, null, null);\n};\ngoog.inherits(proto.base.v1.BaseMapInfo, jspb.Message);\nif (goog.DEBUG && !COMPILED) {\n /**\n * @public\n * @override\n */\n proto.base.v1.BaseMapInfo.displayName = 'proto.base.v1.BaseMapInfo';\n}\n/**\n * Generated by JsPbCodeGenerator.\n * @param {Array=} opt_data Optional initial data array, typically from a\n * server response, or constructed directly in Javascript. The array is used\n * in place and becomes part of the constructed object. It is not cloned.\n * If no data is provided, the constructed object will be empty, but still\n * valid.\n * @extends {jspb.Message}\n * @constructor\n */\nproto.base.v1.Region = function (opt_data) {\n jspb.Message.initialize(this, opt_data, 0, -1, null, null);\n};\ngoog.inherits(proto.base.v1.Region, jspb.Message);\nif (goog.DEBUG && !COMPILED) {\n /**\n * @public\n * @override\n */\n proto.base.v1.Region.displayName = 'proto.base.v1.Region';\n}\n/**\n * Generated by JsPbCodeGenerator.\n * @param {Array=} opt_data Optional initial data array, typically from a\n * server response, or constructed directly in Javascript. The array is used\n * in place and becomes part of the constructed object. It is not cloned.\n * If no data is provided, the constructed object will be empty, but still\n * valid.\n * @extends {jspb.Message}\n * @constructor\n */\nproto.base.v1.ShopList = function (opt_data) {\n jspb.Message.initialize(this, opt_data, 0, -1, null, null);\n};\ngoog.inherits(proto.base.v1.ShopList, jspb.Message);\nif (goog.DEBUG && !COMPILED) {\n /**\n * @public\n * @override\n */\n proto.base.v1.ShopList.displayName = 'proto.base.v1.ShopList';\n}\n/**\n * Generated by JsPbCodeGenerator.\n * @param {Array=} opt_data Optional initial data array, typically from a\n * server response, or constructed directly in Javascript. The array is used\n * in place and becomes part of the constructed object. It is not cloned.\n * If no data is provided, the constructed object will be empty, but still\n * valid.\n * @extends {jspb.Message}\n * @constructor\n */\nproto.base.v1.ControlInfoList = function (opt_data) {\n jspb.Message.initialize(this, opt_data, 0, -1, null, null);\n};\ngoog.inherits(proto.base.v1.ControlInfoList, jspb.Message);\nif (goog.DEBUG && !COMPILED) {\n /**\n * @public\n * @override\n */\n proto.base.v1.ControlInfoList.displayName = 'proto.base.v1.ControlInfoList';\n}\n/**\n * Generated by JsPbCodeGenerator.\n * @param {Array=} opt_data Optional initial data array, typically from a\n * server response, or constructed directly in Javascript. The array is used\n * in place and becomes part of the constructed object. It is not cloned.\n * If no data is provided, the constructed object will be empty, but still\n * valid.\n * @extends {jspb.Message}\n * @constructor\n */\nproto.base.v1.DefaultReply = function (opt_data) {\n jspb.Message.initialize(this, opt_data, 0, -1, null, null);\n};\ngoog.inherits(proto.base.v1.DefaultReply, jspb.Message);\nif (goog.DEBUG && !COMPILED) {\n /**\n * @public\n * @override\n */\n proto.base.v1.DefaultReply.displayName = 'proto.base.v1.DefaultReply';\n}\n/**\n * Generated by JsPbCodeGenerator.\n * @param {Array=} opt_data Optional initial data array, typically from a\n * server response, or constructed directly in Javascript. The array is used\n * in place and becomes part of the constructed object. It is not cloned.\n * If no data is provided, the constructed object will be empty, but still\n * valid.\n * @extends {jspb.Message}\n * @constructor\n */\nproto.base.v1.IdRequest = function (opt_data) {\n jspb.Message.initialize(this, opt_data, 0, -1, null, null);\n};\ngoog.inherits(proto.base.v1.IdRequest, jspb.Message);\nif (goog.DEBUG && !COMPILED) {\n /**\n * @public\n * @override\n */\n proto.base.v1.IdRequest.displayName = 'proto.base.v1.IdRequest';\n}\n/**\n * Generated by JsPbCodeGenerator.\n * @param {Array=} opt_data Optional initial data array, typically from a\n * server response, or constructed directly in Javascript. The array is used\n * in place and becomes part of the constructed object. It is not cloned.\n * If no data is provided, the constructed object will be empty, but still\n * valid.\n * @extends {jspb.Message}\n * @constructor\n */\nproto.base.v1.DefaultRequest = function (opt_data) {\n jspb.Message.initialize(this, opt_data, 0, -1, null, null);\n};\ngoog.inherits(proto.base.v1.DefaultRequest, jspb.Message);\nif (goog.DEBUG && !COMPILED) {\n /**\n * @public\n * @override\n */\n proto.base.v1.DefaultRequest.displayName = 'proto.base.v1.DefaultRequest';\n}\n/**\n * Generated by JsPbCodeGenerator.\n * @param {Array=} opt_data Optional initial data array, typically from a\n * server response, or constructed directly in Javascript. The array is used\n * in place and becomes part of the constructed object. It is not cloned.\n * If no data is provided, the constructed object will be empty, but still\n * valid.\n * @extends {jspb.Message}\n * @constructor\n */\nproto.base.v1.Position = function (opt_data) {\n jspb.Message.initialize(this, opt_data, 0, -1, null, null);\n};\ngoog.inherits(proto.base.v1.Position, jspb.Message);\nif (goog.DEBUG && !COMPILED) {\n /**\n * @public\n * @override\n */\n proto.base.v1.Position.displayName = 'proto.base.v1.Position';\n}\n/**\n * Generated by JsPbCodeGenerator.\n * @param {Array=} opt_data Optional initial data array, typically from a\n * server response, or constructed directly in Javascript. The array is used\n * in place and becomes part of the constructed object. It is not cloned.\n * If no data is provided, the constructed object will be empty, but still\n * valid.\n * @extends {jspb.Message}\n * @constructor\n */\nproto.base.v1.ControlPointInfo = function (opt_data) {\n jspb.Message.initialize(this, opt_data, 0, -1, null, null);\n};\ngoog.inherits(proto.base.v1.ControlPointInfo, jspb.Message);\nif (goog.DEBUG && !COMPILED) {\n /**\n * @public\n * @override\n */\n proto.base.v1.ControlPointInfo.displayName = 'proto.base.v1.ControlPointInfo';\n}\n/**\n * Generated by JsPbCodeGenerator.\n * @param {Array=} opt_data Optional initial data array, typically from a\n * server response, or constructed directly in Javascript. The array is used\n * in place and becomes part of the constructed object. It is not cloned.\n * If no data is provided, the constructed object will be empty, but still\n * valid.\n * @extends {jspb.Message}\n * @constructor\n */\nproto.base.v1.Image = function (opt_data) {\n jspb.Message.initialize(this, opt_data, 0, -1, null, null);\n};\ngoog.inherits(proto.base.v1.Image, jspb.Message);\nif (goog.DEBUG && !COMPILED) {\n /**\n * @public\n * @override\n */\n proto.base.v1.Image.displayName = 'proto.base.v1.Image';\n}\n/**\n * Generated by JsPbCodeGenerator.\n * @param {Array=} opt_data Optional initial data array, typically from a\n * server response, or constructed directly in Javascript. The array is used\n * in place and becomes part of the constructed object. It is not cloned.\n * If no data is provided, the constructed object will be empty, but still\n * valid.\n * @extends {jspb.Message}\n * @constructor\n */\nproto.base.v1.StatusEditRequest = function (opt_data) {\n jspb.Message.initialize(this, opt_data, 0, -1, null, null);\n};\ngoog.inherits(proto.base.v1.StatusEditRequest, jspb.Message);\nif (goog.DEBUG && !COMPILED) {\n /**\n * @public\n * @override\n */\n proto.base.v1.StatusEditRequest.displayName = 'proto.base.v1.StatusEditRequest';\n}\n/**\n * Generated by JsPbCodeGenerator.\n * @param {Array=} opt_data Optional initial data array, typically from a\n * server response, or constructed directly in Javascript. The array is used\n * in place and becomes part of the constructed object. It is not cloned.\n * If no data is provided, the constructed object will be empty, but still\n * valid.\n * @extends {jspb.Message}\n * @constructor\n */\nproto.base.v1.CourseInfo = function (opt_data) {\n jspb.Message.initialize(this, opt_data, 0, -1, proto.base.v1.CourseInfo.repeatedFields_, null);\n};\ngoog.inherits(proto.base.v1.CourseInfo, jspb.Message);\nif (goog.DEBUG && !COMPILED) {\n /**\n * @public\n * @override\n */\n proto.base.v1.CourseInfo.displayName = 'proto.base.v1.CourseInfo';\n}\n/**\n * Generated by JsPbCodeGenerator.\n * @param {Array=} opt_data Optional initial data array, typically from a\n * server response, or constructed directly in Javascript. The array is used\n * in place and becomes part of the constructed object. It is not cloned.\n * If no data is provided, the constructed object will be empty, but still\n * valid.\n * @extends {jspb.Message}\n * @constructor\n */\nproto.base.v1.ControlPoint = function (opt_data) {\n jspb.Message.initialize(this, opt_data, 0, -1, proto.base.v1.ControlPoint.repeatedFields_, null);\n};\ngoog.inherits(proto.base.v1.ControlPoint, jspb.Message);\nif (goog.DEBUG && !COMPILED) {\n /**\n * @public\n * @override\n */\n proto.base.v1.ControlPoint.displayName = 'proto.base.v1.ControlPoint';\n}\n/**\n * Generated by JsPbCodeGenerator.\n * @param {Array=} opt_data Optional initial data array, typically from a\n * server response, or constructed directly in Javascript. The array is used\n * in place and becomes part of the constructed object. It is not cloned.\n * If no data is provided, the constructed object will be empty, but still\n * valid.\n * @extends {jspb.Message}\n * @constructor\n */\nproto.base.v1.ControlPointSimple = function (opt_data) {\n jspb.Message.initialize(this, opt_data, 0, -1, proto.base.v1.ControlPointSimple.repeatedFields_, null);\n};\ngoog.inherits(proto.base.v1.ControlPointSimple, jspb.Message);\nif (goog.DEBUG && !COMPILED) {\n /**\n * @public\n * @override\n */\n proto.base.v1.ControlPointSimple.displayName = 'proto.base.v1.ControlPointSimple';\n}\nif (jspb.Message.GENERATE_TO_OBJECT) {\n /**\n * Creates an object representation of this proto.\n * Field names that are reserved in JavaScript and will be renamed to pb_name.\n * Optional fields that are not set will be set to undefined.\n * To access a reserved field use, foo.pb_<name>, eg, foo.pb_default.\n * For the list of reserved names please see:\n * net/proto2/compiler/js/internal/generator.cc#kKeyword.\n * @param {boolean=} opt_includeInstance Deprecated. whether to include the\n * JSPB instance for transitional soy proto support:\n * http://goto/soy-param-migration\n * @return {!Object}\n */\n proto.base.v1.NetImage.prototype.toObject = function (opt_includeInstance) {\n return proto.base.v1.NetImage.toObject(opt_includeInstance, this);\n };\n\n /**\n * Static version of the {@see toObject} method.\n * @param {boolean|undefined} includeInstance Deprecated. Whether to include\n * the JSPB instance for transitional soy proto support:\n * http://goto/soy-param-migration\n * @param {!proto.base.v1.NetImage} msg The msg instance to transform.\n * @return {!Object}\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\n proto.base.v1.NetImage.toObject = function (includeInstance, msg) {\n var f,\n obj = {\n url: jspb.Message.getFieldWithDefault(msg, 1, \"\"),\n md5: msg.getMd5_asB64()\n };\n if (includeInstance) {\n obj.$jspbMessageInstance = msg;\n }\n return obj;\n };\n}\n\n/**\n * Deserializes binary data (in protobuf wire format).\n * @param {jspb.ByteSource} bytes The bytes to deserialize.\n * @return {!proto.base.v1.NetImage}\n */\nproto.base.v1.NetImage.deserializeBinary = function (bytes) {\n var reader = new jspb.BinaryReader(bytes);\n var msg = new proto.base.v1.NetImage();\n return proto.base.v1.NetImage.deserializeBinaryFromReader(msg, reader);\n};\n\n/**\n * Deserializes binary data (in protobuf wire format) from the\n * given reader into the given message object.\n * @param {!proto.base.v1.NetImage} msg The message object to deserialize into.\n * @param {!jspb.BinaryReader} reader The BinaryReader to use.\n * @return {!proto.base.v1.NetImage}\n */\nproto.base.v1.NetImage.deserializeBinaryFromReader = function (msg, reader) {\n while (reader.nextField()) {\n if (reader.isEndGroup()) {\n break;\n }\n var field = reader.getFieldNumber();\n switch (field) {\n case 1:\n var value = /** @type {string} */reader.readString();\n msg.setUrl(value);\n break;\n case 2:\n var value = /** @type {!Uint8Array} */reader.readBytes();\n msg.setMd5(value);\n break;\n default:\n reader.skipField();\n break;\n }\n }\n return msg;\n};\n\n/**\n * Serializes the message to binary data (in protobuf wire format).\n * @return {!Uint8Array}\n */\nproto.base.v1.NetImage.prototype.serializeBinary = function () {\n var writer = new jspb.BinaryWriter();\n proto.base.v1.NetImage.serializeBinaryToWriter(this, writer);\n return writer.getResultBuffer();\n};\n\n/**\n * Serializes the given message to binary data (in protobuf wire\n * format), writing to the given BinaryWriter.\n * @param {!proto.base.v1.NetImage} message\n * @param {!jspb.BinaryWriter} writer\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\nproto.base.v1.NetImage.serializeBinaryToWriter = function (message, writer) {\n var f = undefined;\n f = message.getUrl();\n if (f.length > 0) {\n writer.writeString(1, f);\n }\n f = message.getMd5_asU8();\n if (f.length > 0) {\n writer.writeBytes(2, f);\n }\n};\n\n/**\n * optional string url = 1;\n * @return {string}\n */\nproto.base.v1.NetImage.prototype.getUrl = function () {\n return (/** @type {string} */jspb.Message.getFieldWithDefault(this, 1, \"\")\n );\n};\n\n/**\n * @param {string} value\n * @return {!proto.base.v1.NetImage} returns this\n */\nproto.base.v1.NetImage.prototype.setUrl = function (value) {\n return jspb.Message.setProto3StringField(this, 1, value);\n};\n\n/**\n * optional bytes md5 = 2;\n * @return {string}\n */\nproto.base.v1.NetImage.prototype.getMd5 = function () {\n return (/** @type {string} */jspb.Message.getFieldWithDefault(this, 2, \"\")\n );\n};\n\n/**\n * optional bytes md5 = 2;\n * This is a type-conversion wrapper around `getMd5()`\n * @return {string}\n */\nproto.base.v1.NetImage.prototype.getMd5_asB64 = function () {\n return (/** @type {string} */jspb.Message.bytesAsB64(this.getMd5())\n );\n};\n\n/**\n * optional bytes md5 = 2;\n * Note that Uint8Array is not supported on all browsers.\n * @see http://caniuse.com/Uint8Array\n * This is a type-conversion wrapper around `getMd5()`\n * @return {!Uint8Array}\n */\nproto.base.v1.NetImage.prototype.getMd5_asU8 = function () {\n return (/** @type {!Uint8Array} */jspb.Message.bytesAsU8(this.getMd5())\n );\n};\n\n/**\n * @param {!(string|Uint8Array)} value\n * @return {!proto.base.v1.NetImage} returns this\n */\nproto.base.v1.NetImage.prototype.setMd5 = function (value) {\n return jspb.Message.setProto3BytesField(this, 2, value);\n};\nif (jspb.Message.GENERATE_TO_OBJECT) {\n /**\n * Creates an object representation of this proto.\n * Field names that are reserved in JavaScript and will be renamed to pb_name.\n * Optional fields that are not set will be set to undefined.\n * To access a reserved field use, foo.pb_<name>, eg, foo.pb_default.\n * For the list of reserved names please see:\n * net/proto2/compiler/js/internal/generator.cc#kKeyword.\n * @param {boolean=} opt_includeInstance Deprecated. whether to include the\n * JSPB instance for transitional soy proto support:\n * http://goto/soy-param-migration\n * @return {!Object}\n */\n proto.base.v1.User.prototype.toObject = function (opt_includeInstance) {\n return proto.base.v1.User.toObject(opt_includeInstance, this);\n };\n\n /**\n * Static version of the {@see toObject} method.\n * @param {boolean|undefined} includeInstance Deprecated. Whether to include\n * the JSPB instance for transitional soy proto support:\n * http://goto/soy-param-migration\n * @param {!proto.base.v1.User} msg The msg instance to transform.\n * @return {!Object}\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\n proto.base.v1.User.toObject = function (includeInstance, msg) {\n var f,\n obj = {};\n if (includeInstance) {\n obj.$jspbMessageInstance = msg;\n }\n return obj;\n };\n}\n\n/**\n * Deserializes binary data (in protobuf wire format).\n * @param {jspb.ByteSource} bytes The bytes to deserialize.\n * @return {!proto.base.v1.User}\n */\nproto.base.v1.User.deserializeBinary = function (bytes) {\n var reader = new jspb.BinaryReader(bytes);\n var msg = new proto.base.v1.User();\n return proto.base.v1.User.deserializeBinaryFromReader(msg, reader);\n};\n\n/**\n * Deserializes binary data (in protobuf wire format) from the\n * given reader into the given message object.\n * @param {!proto.base.v1.User} msg The message object to deserialize into.\n * @param {!jspb.BinaryReader} reader The BinaryReader to use.\n * @return {!proto.base.v1.User}\n */\nproto.base.v1.User.deserializeBinaryFromReader = function (msg, reader) {\n while (reader.nextField()) {\n if (reader.isEndGroup()) {\n break;\n }\n var field = reader.getFieldNumber();\n switch (field) {\n default:\n reader.skipField();\n break;\n }\n }\n return msg;\n};\n\n/**\n * Serializes the message to binary data (in protobuf wire format).\n * @return {!Uint8Array}\n */\nproto.base.v1.User.prototype.serializeBinary = function () {\n var writer = new jspb.BinaryWriter();\n proto.base.v1.User.serializeBinaryToWriter(this, writer);\n return writer.getResultBuffer();\n};\n\n/**\n * Serializes the given message to binary data (in protobuf wire\n * format), writing to the given BinaryWriter.\n * @param {!proto.base.v1.User} message\n * @param {!jspb.BinaryWriter} writer\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\nproto.base.v1.User.serializeBinaryToWriter = function (message, writer) {\n var f = undefined;\n};\n\n/**\n * @enum {number}\n */\nproto.base.v1.User.Sex = {\n UNDEFINE: 0,\n MALE: 1,\n FEMALE: 2\n};\nif (jspb.Message.GENERATE_TO_OBJECT) {\n /**\n * Creates an object representation of this proto.\n * Field names that are reserved in JavaScript and will be renamed to pb_name.\n * Optional fields that are not set will be set to undefined.\n * To access a reserved field use, foo.pb_<name>, eg, foo.pb_default.\n * For the list of reserved names please see:\n * net/proto2/compiler/js/internal/generator.cc#kKeyword.\n * @param {boolean=} opt_includeInstance Deprecated. whether to include the\n * JSPB instance for transitional soy proto support:\n * http://goto/soy-param-migration\n * @return {!Object}\n */\n proto.base.v1.GameGpsInfo.prototype.toObject = function (opt_includeInstance) {\n return proto.base.v1.GameGpsInfo.toObject(opt_includeInstance, this);\n };\n\n /**\n * Static version of the {@see toObject} method.\n * @param {boolean|undefined} includeInstance Deprecated. Whether to include\n * the JSPB instance for transitional soy proto support:\n * http://goto/soy-param-migration\n * @param {!proto.base.v1.GameGpsInfo} msg The msg instance to transform.\n * @return {!Object}\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\n proto.base.v1.GameGpsInfo.toObject = function (includeInstance, msg) {\n var f,\n obj = {\n gpstime: (f = msg.getGpstime()) && google_protobuf_timestamp_pb.Timestamp.toObject(includeInstance, f),\n longitude: jspb.Message.getFloatingPointFieldWithDefault(msg, 2, 0.0),\n latitude: jspb.Message.getFloatingPointFieldWithDefault(msg, 3, 0.0),\n directionradian: jspb.Message.getFloatingPointFieldWithDefault(msg, 4, 0.0)\n };\n if (includeInstance) {\n obj.$jspbMessageInstance = msg;\n }\n return obj;\n };\n}\n\n/**\n * Deserializes binary data (in protobuf wire format).\n * @param {jspb.ByteSource} bytes The bytes to deserialize.\n * @return {!proto.base.v1.GameGpsInfo}\n */\nproto.base.v1.GameGpsInfo.deserializeBinary = function (bytes) {\n var reader = new jspb.BinaryReader(bytes);\n var msg = new proto.base.v1.GameGpsInfo();\n return proto.base.v1.GameGpsInfo.deserializeBinaryFromReader(msg, reader);\n};\n\n/**\n * Deserializes binary data (in protobuf wire format) from the\n * given reader into the given message object.\n * @param {!proto.base.v1.GameGpsInfo} msg The message object to deserialize into.\n * @param {!jspb.BinaryReader} reader The BinaryReader to use.\n * @return {!proto.base.v1.GameGpsInfo}\n */\nproto.base.v1.GameGpsInfo.deserializeBinaryFromReader = function (msg, reader) {\n while (reader.nextField()) {\n if (reader.isEndGroup()) {\n break;\n }\n var field = reader.getFieldNumber();\n switch (field) {\n case 1:\n var value = new google_protobuf_timestamp_pb.Timestamp();\n reader.readMessage(value, google_protobuf_timestamp_pb.Timestamp.deserializeBinaryFromReader);\n msg.setGpstime(value);\n break;\n case 2:\n var value = /** @type {number} */reader.readDouble();\n msg.setLongitude(value);\n break;\n case 3:\n var value = /** @type {number} */reader.readDouble();\n msg.setLatitude(value);\n break;\n case 4:\n var value = /** @type {number} */reader.readDouble();\n msg.setDirectionradian(value);\n break;\n default:\n reader.skipField();\n break;\n }\n }\n return msg;\n};\n\n/**\n * Serializes the message to binary data (in protobuf wire format).\n * @return {!Uint8Array}\n */\nproto.base.v1.GameGpsInfo.prototype.serializeBinary = function () {\n var writer = new jspb.BinaryWriter();\n proto.base.v1.GameGpsInfo.serializeBinaryToWriter(this, writer);\n return writer.getResultBuffer();\n};\n\n/**\n * Serializes the given message to binary data (in protobuf wire\n * format), writing to the given BinaryWriter.\n * @param {!proto.base.v1.GameGpsInfo} message\n * @param {!jspb.BinaryWriter} writer\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\nproto.base.v1.GameGpsInfo.serializeBinaryToWriter = function (message, writer) {\n var f = undefined;\n f = message.getGpstime();\n if (f != null) {\n writer.writeMessage(1, f, google_protobuf_timestamp_pb.Timestamp.serializeBinaryToWriter);\n }\n f = message.getLongitude();\n if (f !== 0.0) {\n writer.writeDouble(2, f);\n }\n f = message.getLatitude();\n if (f !== 0.0) {\n writer.writeDouble(3, f);\n }\n f = message.getDirectionradian();\n if (f !== 0.0) {\n writer.writeDouble(4, f);\n }\n};\n\n/**\n * optional google.protobuf.Timestamp gpsTime = 1;\n * @return {?proto.google.protobuf.Timestamp}\n */\nproto.base.v1.GameGpsInfo.prototype.getGpstime = function () {\n return (/** @type{?proto.google.protobuf.Timestamp} */\n jspb.Message.getWrapperField(this, google_protobuf_timestamp_pb.Timestamp, 1)\n );\n};\n\n/**\n * @param {?proto.google.protobuf.Timestamp|undefined} value\n * @return {!proto.base.v1.GameGpsInfo} returns this\n*/\nproto.base.v1.GameGpsInfo.prototype.setGpstime = function (value) {\n return jspb.Message.setWrapperField(this, 1, value);\n};\n\n/**\n * Clears the message field making it undefined.\n * @return {!proto.base.v1.GameGpsInfo} returns this\n */\nproto.base.v1.GameGpsInfo.prototype.clearGpstime = function () {\n return this.setGpstime(undefined);\n};\n\n/**\n * Returns whether this field is set.\n * @return {boolean}\n */\nproto.base.v1.GameGpsInfo.prototype.hasGpstime = function () {\n return jspb.Message.getField(this, 1) != null;\n};\n\n/**\n * optional double longitude = 2;\n * @return {number}\n */\nproto.base.v1.GameGpsInfo.prototype.getLongitude = function () {\n return (/** @type {number} */jspb.Message.getFloatingPointFieldWithDefault(this, 2, 0.0)\n );\n};\n\n/**\n * @param {number} value\n * @return {!proto.base.v1.GameGpsInfo} returns this\n */\nproto.base.v1.GameGpsInfo.prototype.setLongitude = function (value) {\n return jspb.Message.setProto3FloatField(this, 2, value);\n};\n\n/**\n * optional double latitude = 3;\n * @return {number}\n */\nproto.base.v1.GameGpsInfo.prototype.getLatitude = function () {\n return (/** @type {number} */jspb.Message.getFloatingPointFieldWithDefault(this, 3, 0.0)\n );\n};\n\n/**\n * @param {number} value\n * @return {!proto.base.v1.GameGpsInfo} returns this\n */\nproto.base.v1.GameGpsInfo.prototype.setLatitude = function (value) {\n return jspb.Message.setProto3FloatField(this, 3, value);\n};\n\n/**\n * optional double directionRadian = 4;\n * @return {number}\n */\nproto.base.v1.GameGpsInfo.prototype.getDirectionradian = function () {\n return (/** @type {number} */jspb.Message.getFloatingPointFieldWithDefault(this, 4, 0.0)\n );\n};\n\n/**\n * @param {number} value\n * @return {!proto.base.v1.GameGpsInfo} returns this\n */\nproto.base.v1.GameGpsInfo.prototype.setDirectionradian = function (value) {\n return jspb.Message.setProto3FloatField(this, 4, value);\n};\nif (jspb.Message.GENERATE_TO_OBJECT) {\n /**\n * Creates an object representation of this proto.\n * Field names that are reserved in JavaScript and will be renamed to pb_name.\n * Optional fields that are not set will be set to undefined.\n * To access a reserved field use, foo.pb_<name>, eg, foo.pb_default.\n * For the list of reserved names please see:\n * net/proto2/compiler/js/internal/generator.cc#kKeyword.\n * @param {boolean=} opt_includeInstance Deprecated. whether to include the\n * JSPB instance for transitional soy proto support:\n * http://goto/soy-param-migration\n * @return {!Object}\n */\n proto.base.v1.HeartRate.prototype.toObject = function (opt_includeInstance) {\n return proto.base.v1.HeartRate.toObject(opt_includeInstance, this);\n };\n\n /**\n * Static version of the {@see toObject} method.\n * @param {boolean|undefined} includeInstance Deprecated. Whether to include\n * the JSPB instance for transitional soy proto support:\n * http://goto/soy-param-migration\n * @param {!proto.base.v1.HeartRate} msg The msg instance to transform.\n * @return {!Object}\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\n proto.base.v1.HeartRate.toObject = function (includeInstance, msg) {\n var f,\n obj = {\n timestampms: jspb.Message.getFieldWithDefault(msg, 1, 0),\n hr: jspb.Message.getFieldWithDefault(msg, 2, 0)\n };\n if (includeInstance) {\n obj.$jspbMessageInstance = msg;\n }\n return obj;\n };\n}\n\n/**\n * Deserializes binary data (in protobuf wire format).\n * @param {jspb.ByteSource} bytes The bytes to deserialize.\n * @return {!proto.base.v1.HeartRate}\n */\nproto.base.v1.HeartRate.deserializeBinary = function (bytes) {\n var reader = new jspb.BinaryReader(bytes);\n var msg = new proto.base.v1.HeartRate();\n return proto.base.v1.HeartRate.deserializeBinaryFromReader(msg, reader);\n};\n\n/**\n * Deserializes binary data (in protobuf wire format) from the\n * given reader into the given message object.\n * @param {!proto.base.v1.HeartRate} msg The message object to deserialize into.\n * @param {!jspb.BinaryReader} reader The BinaryReader to use.\n * @return {!proto.base.v1.HeartRate}\n */\nproto.base.v1.HeartRate.deserializeBinaryFromReader = function (msg, reader) {\n while (reader.nextField()) {\n if (reader.isEndGroup()) {\n break;\n }\n var field = reader.getFieldNumber();\n switch (field) {\n case 1:\n var value = /** @type {number} */reader.readInt64();\n msg.setTimestampms(value);\n break;\n case 2:\n var value = /** @type {number} */reader.readInt32();\n msg.setHr(value);\n break;\n default:\n reader.skipField();\n break;\n }\n }\n return msg;\n};\n\n/**\n * Serializes the message to binary data (in protobuf wire format).\n * @return {!Uint8Array}\n */\nproto.base.v1.HeartRate.prototype.serializeBinary = function () {\n var writer = new jspb.BinaryWriter();\n proto.base.v1.HeartRate.serializeBinaryToWriter(this, writer);\n return writer.getResultBuffer();\n};\n\n/**\n * Serializes the given message to binary data (in protobuf wire\n * format), writing to the given BinaryWriter.\n * @param {!proto.base.v1.HeartRate} message\n * @param {!jspb.BinaryWriter} writer\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\nproto.base.v1.HeartRate.serializeBinaryToWriter = function (message, writer) {\n var f = undefined;\n f = message.getTimestampms();\n if (f !== 0) {\n writer.writeInt64(1, f);\n }\n f = message.getHr();\n if (f !== 0) {\n writer.writeInt32(2, f);\n }\n};\n\n/**\n * optional int64 timeStampMs = 1;\n * @return {number}\n */\nproto.base.v1.HeartRate.prototype.getTimestampms = function () {\n return (/** @type {number} */jspb.Message.getFieldWithDefault(this, 1, 0)\n );\n};\n\n/**\n * @param {number} value\n * @return {!proto.base.v1.HeartRate} returns this\n */\nproto.base.v1.HeartRate.prototype.setTimestampms = function (value) {\n return jspb.Message.setProto3IntField(this, 1, value);\n};\n\n/**\n * optional int32 hr = 2;\n * @return {number}\n */\nproto.base.v1.HeartRate.prototype.getHr = function () {\n return (/** @type {number} */jspb.Message.getFieldWithDefault(this, 2, 0)\n );\n};\n\n/**\n * @param {number} value\n * @return {!proto.base.v1.HeartRate} returns this\n */\nproto.base.v1.HeartRate.prototype.setHr = function (value) {\n return jspb.Message.setProto3IntField(this, 2, value);\n};\nif (jspb.Message.GENERATE_TO_OBJECT) {\n /**\n * Creates an object representation of this proto.\n * Field names that are reserved in JavaScript and will be renamed to pb_name.\n * Optional fields that are not set will be set to undefined.\n * To access a reserved field use, foo.pb_<name>, eg, foo.pb_default.\n * For the list of reserved names please see:\n * net/proto2/compiler/js/internal/generator.cc#kKeyword.\n * @param {boolean=} opt_includeInstance Deprecated. whether to include the\n * JSPB instance for transitional soy proto support:\n * http://goto/soy-param-migration\n * @return {!Object}\n */\n proto.base.v1.SignInReply.prototype.toObject = function (opt_includeInstance) {\n return proto.base.v1.SignInReply.toObject(opt_includeInstance, this);\n };\n\n /**\n * Static version of the {@see toObject} method.\n * @param {boolean|undefined} includeInstance Deprecated. Whether to include\n * the JSPB instance for transitional soy proto support:\n * http://goto/soy-param-migration\n * @param {!proto.base.v1.SignInReply} msg The msg instance to transform.\n * @return {!Object}\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\n proto.base.v1.SignInReply.toObject = function (includeInstance, msg) {\n var f,\n obj = {\n token: jspb.Message.getFieldWithDefault(msg, 1, \"\")\n };\n if (includeInstance) {\n obj.$jspbMessageInstance = msg;\n }\n return obj;\n };\n}\n\n/**\n * Deserializes binary data (in protobuf wire format).\n * @param {jspb.ByteSource} bytes The bytes to deserialize.\n * @return {!proto.base.v1.SignInReply}\n */\nproto.base.v1.SignInReply.deserializeBinary = function (bytes) {\n var reader = new jspb.BinaryReader(bytes);\n var msg = new proto.base.v1.SignInReply();\n return proto.base.v1.SignInReply.deserializeBinaryFromReader(msg, reader);\n};\n\n/**\n * Deserializes binary data (in protobuf wire format) from the\n * given reader into the given message object.\n * @param {!proto.base.v1.SignInReply} msg The message object to deserialize into.\n * @param {!jspb.BinaryReader} reader The BinaryReader to use.\n * @return {!proto.base.v1.SignInReply}\n */\nproto.base.v1.SignInReply.deserializeBinaryFromReader = function (msg, reader) {\n while (reader.nextField()) {\n if (reader.isEndGroup()) {\n break;\n }\n var field = reader.getFieldNumber();\n switch (field) {\n case 1:\n var value = /** @type {string} */reader.readString();\n msg.setToken(value);\n break;\n default:\n reader.skipField();\n break;\n }\n }\n return msg;\n};\n\n/**\n * Serializes the message to binary data (in protobuf wire format).\n * @return {!Uint8Array}\n */\nproto.base.v1.SignInReply.prototype.serializeBinary = function () {\n var writer = new jspb.BinaryWriter();\n proto.base.v1.SignInReply.serializeBinaryToWriter(this, writer);\n return writer.getResultBuffer();\n};\n\n/**\n * Serializes the given message to binary data (in protobuf wire\n * format), writing to the given BinaryWriter.\n * @param {!proto.base.v1.SignInReply} message\n * @param {!jspb.BinaryWriter} writer\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\nproto.base.v1.SignInReply.serializeBinaryToWriter = function (message, writer) {\n var f = undefined;\n f = message.getToken();\n if (f.length > 0) {\n writer.writeString(1, f);\n }\n};\n\n/**\n * optional string token = 1;\n * @return {string}\n */\nproto.base.v1.SignInReply.prototype.getToken = function () {\n return (/** @type {string} */jspb.Message.getFieldWithDefault(this, 1, \"\")\n );\n};\n\n/**\n * @param {string} value\n * @return {!proto.base.v1.SignInReply} returns this\n */\nproto.base.v1.SignInReply.prototype.setToken = function (value) {\n return jspb.Message.setProto3StringField(this, 1, value);\n};\nif (jspb.Message.GENERATE_TO_OBJECT) {\n /**\n * Creates an object representation of this proto.\n * Field names that are reserved in JavaScript and will be renamed to pb_name.\n * Optional fields that are not set will be set to undefined.\n * To access a reserved field use, foo.pb_<name>, eg, foo.pb_default.\n * For the list of reserved names please see:\n * net/proto2/compiler/js/internal/generator.cc#kKeyword.\n * @param {boolean=} opt_includeInstance Deprecated. whether to include the\n * JSPB instance for transitional soy proto support:\n * http://goto/soy-param-migration\n * @return {!Object}\n */\n proto.base.v1.MapRoute.prototype.toObject = function (opt_includeInstance) {\n return proto.base.v1.MapRoute.toObject(opt_includeInstance, this);\n };\n\n /**\n * Static version of the {@see toObject} method.\n * @param {boolean|undefined} includeInstance Deprecated. Whether to include\n * the JSPB instance for transitional soy proto support:\n * http://goto/soy-param-migration\n * @param {!proto.base.v1.MapRoute} msg The msg instance to transform.\n * @return {!Object}\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\n proto.base.v1.MapRoute.toObject = function (includeInstance, msg) {\n var f,\n obj = {\n id: jspb.Message.getFieldWithDefault(msg, 1, 0),\n name: jspb.Message.getFieldWithDefault(msg, 2, \"\"),\n image: (f = msg.getImage()) && proto.base.v1.NetImage.toObject(includeInstance, f),\n isnfc: jspb.Message.getBooleanFieldWithDefault(msg, 4, false)\n };\n if (includeInstance) {\n obj.$jspbMessageInstance = msg;\n }\n return obj;\n };\n}\n\n/**\n * Deserializes binary data (in protobuf wire format).\n * @param {jspb.ByteSource} bytes The bytes to deserialize.\n * @return {!proto.base.v1.MapRoute}\n */\nproto.base.v1.MapRoute.deserializeBinary = function (bytes) {\n var reader = new jspb.BinaryReader(bytes);\n var msg = new proto.base.v1.MapRoute();\n return proto.base.v1.MapRoute.deserializeBinaryFromReader(msg, reader);\n};\n\n/**\n * Deserializes binary data (in protobuf wire format) from the\n * given reader into the given message object.\n * @param {!proto.base.v1.MapRoute} msg The message object to deserialize into.\n * @param {!jspb.BinaryReader} reader The BinaryReader to use.\n * @return {!proto.base.v1.MapRoute}\n */\nproto.base.v1.MapRoute.deserializeBinaryFromReader = function (msg, reader) {\n while (reader.nextField()) {\n if (reader.isEndGroup()) {\n break;\n }\n var field = reader.getFieldNumber();\n switch (field) {\n case 1:\n var value = /** @type {number} */reader.readInt64();\n msg.setId(value);\n break;\n case 2:\n var value = /** @type {string} */reader.readString();\n msg.setName(value);\n break;\n case 3:\n var value = new proto.base.v1.NetImage();\n reader.readMessage(value, proto.base.v1.NetImage.deserializeBinaryFromReader);\n msg.setImage(value);\n break;\n case 4:\n var value = /** @type {boolean} */reader.readBool();\n msg.setIsnfc(value);\n break;\n default:\n reader.skipField();\n break;\n }\n }\n return msg;\n};\n\n/**\n * Serializes the message to binary data (in protobuf wire format).\n * @return {!Uint8Array}\n */\nproto.base.v1.MapRoute.prototype.serializeBinary = function () {\n var writer = new jspb.BinaryWriter();\n proto.base.v1.MapRoute.serializeBinaryToWriter(this, writer);\n return writer.getResultBuffer();\n};\n\n/**\n * Serializes the given message to binary data (in protobuf wire\n * format), writing to the given BinaryWriter.\n * @param {!proto.base.v1.MapRoute} message\n * @param {!jspb.BinaryWriter} writer\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\nproto.base.v1.MapRoute.serializeBinaryToWriter = function (message, writer) {\n var f = undefined;\n f = message.getId();\n if (f !== 0) {\n writer.writeInt64(1, f);\n }\n f = message.getName();\n if (f.length > 0) {\n writer.writeString(2, f);\n }\n f = message.getImage();\n if (f != null) {\n writer.writeMessage(3, f, proto.base.v1.NetImage.serializeBinaryToWriter);\n }\n f = message.getIsnfc();\n if (f) {\n writer.writeBool(4, f);\n }\n};\n\n/**\n * optional int64 id = 1;\n * @return {number}\n */\nproto.base.v1.MapRoute.prototype.getId = function () {\n return (/** @type {number} */jspb.Message.getFieldWithDefault(this, 1, 0)\n );\n};\n\n/**\n * @param {number} value\n * @return {!proto.base.v1.MapRoute} returns this\n */\nproto.base.v1.MapRoute.prototype.setId = function (value) {\n return jspb.Message.setProto3IntField(this, 1, value);\n};\n\n/**\n * optional string name = 2;\n * @return {string}\n */\nproto.base.v1.MapRoute.prototype.getName = function () {\n return (/** @type {string} */jspb.Message.getFieldWithDefault(this, 2, \"\")\n );\n};\n\n/**\n * @param {string} value\n * @return {!proto.base.v1.MapRoute} returns this\n */\nproto.base.v1.MapRoute.prototype.setName = function (value) {\n return jspb.Message.setProto3StringField(this, 2, value);\n};\n\n/**\n * optional NetImage image = 3;\n * @return {?proto.base.v1.NetImage}\n */\nproto.base.v1.MapRoute.prototype.getImage = function () {\n return (/** @type{?proto.base.v1.NetImage} */\n jspb.Message.getWrapperField(this, proto.base.v1.NetImage, 3)\n );\n};\n\n/**\n * @param {?proto.base.v1.NetImage|undefined} value\n * @return {!proto.base.v1.MapRoute} returns this\n*/\nproto.base.v1.MapRoute.prototype.setImage = function (value) {\n return jspb.Message.setWrapperField(this, 3, value);\n};\n\n/**\n * Clears the message field making it undefined.\n * @return {!proto.base.v1.MapRoute} returns this\n */\nproto.base.v1.MapRoute.prototype.clearImage = function () {\n return this.setImage(undefined);\n};\n\n/**\n * Returns whether this field is set.\n * @return {boolean}\n */\nproto.base.v1.MapRoute.prototype.hasImage = function () {\n return jspb.Message.getField(this, 3) != null;\n};\n\n/**\n * optional bool isNfc = 4;\n * @return {boolean}\n */\nproto.base.v1.MapRoute.prototype.getIsnfc = function () {\n return (/** @type {boolean} */jspb.Message.getBooleanFieldWithDefault(this, 4, false)\n );\n};\n\n/**\n * @param {boolean} value\n * @return {!proto.base.v1.MapRoute} returns this\n */\nproto.base.v1.MapRoute.prototype.setIsnfc = function (value) {\n return jspb.Message.setProto3BooleanField(this, 4, value);\n};\nif (jspb.Message.GENERATE_TO_OBJECT) {\n /**\n * Creates an object representation of this proto.\n * Field names that are reserved in JavaScript and will be renamed to pb_name.\n * Optional fields that are not set will be set to undefined.\n * To access a reserved field use, foo.pb_<name>, eg, foo.pb_default.\n * For the list of reserved names please see:\n * net/proto2/compiler/js/internal/generator.cc#kKeyword.\n * @param {boolean=} opt_includeInstance Deprecated. whether to include the\n * JSPB instance for transitional soy proto support:\n * http://goto/soy-param-migration\n * @return {!Object}\n */\n proto.base.v1.BaseMapInfo.prototype.toObject = function (opt_includeInstance) {\n return proto.base.v1.BaseMapInfo.toObject(opt_includeInstance, this);\n };\n\n /**\n * Static version of the {@see toObject} method.\n * @param {boolean|undefined} includeInstance Deprecated. Whether to include\n * the JSPB instance for transitional soy proto support:\n * http://goto/soy-param-migration\n * @param {!proto.base.v1.BaseMapInfo} msg The msg instance to transform.\n * @return {!Object}\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\n proto.base.v1.BaseMapInfo.toObject = function (includeInstance, msg) {\n var f,\n obj = {\n shopid: jspb.Message.getFieldWithDefault(msg, 1, 0),\n mapname: jspb.Message.getFieldWithDefault(msg, 2, \"\"),\n zipimage: (f = msg.getZipimage()) && proto.base.v1.NetImage.toObject(includeInstance, f)\n };\n if (includeInstance) {\n obj.$jspbMessageInstance = msg;\n }\n return obj;\n };\n}\n\n/**\n * Deserializes binary data (in protobuf wire format).\n * @param {jspb.ByteSource} bytes The bytes to deserialize.\n * @return {!proto.base.v1.BaseMapInfo}\n */\nproto.base.v1.BaseMapInfo.deserializeBinary = function (bytes) {\n var reader = new jspb.BinaryReader(bytes);\n var msg = new proto.base.v1.BaseMapInfo();\n return proto.base.v1.BaseMapInfo.deserializeBinaryFromReader(msg, reader);\n};\n\n/**\n * Deserializes binary data (in protobuf wire format) from the\n * given reader into the given message object.\n * @param {!proto.base.v1.BaseMapInfo} msg The message object to deserialize into.\n * @param {!jspb.BinaryReader} reader The BinaryReader to use.\n * @return {!proto.base.v1.BaseMapInfo}\n */\nproto.base.v1.BaseMapInfo.deserializeBinaryFromReader = function (msg, reader) {\n while (reader.nextField()) {\n if (reader.isEndGroup()) {\n break;\n }\n var field = reader.getFieldNumber();\n switch (field) {\n case 1:\n var value = /** @type {number} */reader.readInt32();\n msg.setShopid(value);\n break;\n case 2:\n var value = /** @type {string} */reader.readString();\n msg.setMapname(value);\n break;\n case 3:\n var value = new proto.base.v1.NetImage();\n reader.readMessage(value, proto.base.v1.NetImage.deserializeBinaryFromReader);\n msg.setZipimage(value);\n break;\n default:\n reader.skipField();\n break;\n }\n }\n return msg;\n};\n\n/**\n * Serializes the message to binary data (in protobuf wire format).\n * @return {!Uint8Array}\n */\nproto.base.v1.BaseMapInfo.prototype.serializeBinary = function () {\n var writer = new jspb.BinaryWriter();\n proto.base.v1.BaseMapInfo.serializeBinaryToWriter(this, writer);\n return writer.getResultBuffer();\n};\n\n/**\n * Serializes the given message to binary data (in protobuf wire\n * format), writing to the given BinaryWriter.\n * @param {!proto.base.v1.BaseMapInfo} message\n * @param {!jspb.BinaryWriter} writer\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\nproto.base.v1.BaseMapInfo.serializeBinaryToWriter = function (message, writer) {\n var f = undefined;\n f = message.getShopid();\n if (f !== 0) {\n writer.writeInt32(1, f);\n }\n f = message.getMapname();\n if (f.length > 0) {\n writer.writeString(2, f);\n }\n f = message.getZipimage();\n if (f != null) {\n writer.writeMessage(3, f, proto.base.v1.NetImage.serializeBinaryToWriter);\n }\n};\n\n/**\n * optional int32 shopId = 1;\n * @return {number}\n */\nproto.base.v1.BaseMapInfo.prototype.getShopid = function () {\n return (/** @type {number} */jspb.Message.getFieldWithDefault(this, 1, 0)\n );\n};\n\n/**\n * @param {number} value\n * @return {!proto.base.v1.BaseMapInfo} returns this\n */\nproto.base.v1.BaseMapInfo.prototype.setShopid = function (value) {\n return jspb.Message.setProto3IntField(this, 1, value);\n};\n\n/**\n * optional string mapName = 2;\n * @return {string}\n */\nproto.base.v1.BaseMapInfo.prototype.getMapname = function () {\n return (/** @type {string} */jspb.Message.getFieldWithDefault(this, 2, \"\")\n );\n};\n\n/**\n * @param {string} value\n * @return {!proto.base.v1.BaseMapInfo} returns this\n */\nproto.base.v1.BaseMapInfo.prototype.setMapname = function (value) {\n return jspb.Message.setProto3StringField(this, 2, value);\n};\n\n/**\n * optional NetImage zipImage = 3;\n * @return {?proto.base.v1.NetImage}\n */\nproto.base.v1.BaseMapInfo.prototype.getZipimage = function () {\n return (/** @type{?proto.base.v1.NetImage} */\n jspb.Message.getWrapperField(this, proto.base.v1.NetImage, 3)\n );\n};\n\n/**\n * @param {?proto.base.v1.NetImage|undefined} value\n * @return {!proto.base.v1.BaseMapInfo} returns this\n*/\nproto.base.v1.BaseMapInfo.prototype.setZipimage = function (value) {\n return jspb.Message.setWrapperField(this, 3, value);\n};\n\n/**\n * Clears the message field making it undefined.\n * @return {!proto.base.v1.BaseMapInfo} returns this\n */\nproto.base.v1.BaseMapInfo.prototype.clearZipimage = function () {\n return this.setZipimage(undefined);\n};\n\n/**\n * Returns whether this field is set.\n * @return {boolean}\n */\nproto.base.v1.BaseMapInfo.prototype.hasZipimage = function () {\n return jspb.Message.getField(this, 3) != null;\n};\nif (jspb.Message.GENERATE_TO_OBJECT) {\n /**\n * Creates an object representation of this proto.\n * Field names that are reserved in JavaScript and will be renamed to pb_name.\n * Optional fields that are not set will be set to undefined.\n * To access a reserved field use, foo.pb_<name>, eg, foo.pb_default.\n * For the list of reserved names please see:\n * net/proto2/compiler/js/internal/generator.cc#kKeyword.\n * @param {boolean=} opt_includeInstance Deprecated. whether to include the\n * JSPB instance for transitional soy proto support:\n * http://goto/soy-param-migration\n * @return {!Object}\n */\n proto.base.v1.Region.prototype.toObject = function (opt_includeInstance) {\n return proto.base.v1.Region.toObject(opt_includeInstance, this);\n };\n\n /**\n * Static version of the {@see toObject} method.\n * @param {boolean|undefined} includeInstance Deprecated. Whether to include\n * the JSPB instance for transitional soy proto support:\n * http://goto/soy-param-migration\n * @param {!proto.base.v1.Region} msg The msg instance to transform.\n * @return {!Object}\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\n proto.base.v1.Region.toObject = function (includeInstance, msg) {\n var f,\n obj = {\n code: jspb.Message.getFieldWithDefault(msg, 1, \"\"),\n name: jspb.Message.getFieldWithDefault(msg, 2, \"\")\n };\n if (includeInstance) {\n obj.$jspbMessageInstance = msg;\n }\n return obj;\n };\n}\n\n/**\n * Deserializes binary data (in protobuf wire format).\n * @param {jspb.ByteSource} bytes The bytes to deserialize.\n * @return {!proto.base.v1.Region}\n */\nproto.base.v1.Region.deserializeBinary = function (bytes) {\n var reader = new jspb.BinaryReader(bytes);\n var msg = new proto.base.v1.Region();\n return proto.base.v1.Region.deserializeBinaryFromReader(msg, reader);\n};\n\n/**\n * Deserializes binary data (in protobuf wire format) from the\n * given reader into the given message object.\n * @param {!proto.base.v1.Region} msg The message object to deserialize into.\n * @param {!jspb.BinaryReader} reader The BinaryReader to use.\n * @return {!proto.base.v1.Region}\n */\nproto.base.v1.Region.deserializeBinaryFromReader = function (msg, reader) {\n while (reader.nextField()) {\n if (reader.isEndGroup()) {\n break;\n }\n var field = reader.getFieldNumber();\n switch (field) {\n case 1:\n var value = /** @type {string} */reader.readString();\n msg.setCode(value);\n break;\n case 2:\n var value = /** @type {string} */reader.readString();\n msg.setName(value);\n break;\n default:\n reader.skipField();\n break;\n }\n }\n return msg;\n};\n\n/**\n * Serializes the message to binary data (in protobuf wire format).\n * @return {!Uint8Array}\n */\nproto.base.v1.Region.prototype.serializeBinary = function () {\n var writer = new jspb.BinaryWriter();\n proto.base.v1.Region.serializeBinaryToWriter(this, writer);\n return writer.getResultBuffer();\n};\n\n/**\n * Serializes the given message to binary data (in protobuf wire\n * format), writing to the given BinaryWriter.\n * @param {!proto.base.v1.Region} message\n * @param {!jspb.BinaryWriter} writer\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\nproto.base.v1.Region.serializeBinaryToWriter = function (message, writer) {\n var f = undefined;\n f = message.getCode();\n if (f.length > 0) {\n writer.writeString(1, f);\n }\n f = message.getName();\n if (f.length > 0) {\n writer.writeString(2, f);\n }\n};\n\n/**\n * optional string code = 1;\n * @return {string}\n */\nproto.base.v1.Region.prototype.getCode = function () {\n return (/** @type {string} */jspb.Message.getFieldWithDefault(this, 1, \"\")\n );\n};\n\n/**\n * @param {string} value\n * @return {!proto.base.v1.Region} returns this\n */\nproto.base.v1.Region.prototype.setCode = function (value) {\n return jspb.Message.setProto3StringField(this, 1, value);\n};\n\n/**\n * optional string name = 2;\n * @return {string}\n */\nproto.base.v1.Region.prototype.getName = function () {\n return (/** @type {string} */jspb.Message.getFieldWithDefault(this, 2, \"\")\n );\n};\n\n/**\n * @param {string} value\n * @return {!proto.base.v1.Region} returns this\n */\nproto.base.v1.Region.prototype.setName = function (value) {\n return jspb.Message.setProto3StringField(this, 2, value);\n};\nif (jspb.Message.GENERATE_TO_OBJECT) {\n /**\n * Creates an object representation of this proto.\n * Field names that are reserved in JavaScript and will be renamed to pb_name.\n * Optional fields that are not set will be set to undefined.\n * To access a reserved field use, foo.pb_<name>, eg, foo.pb_default.\n * For the list of reserved names please see:\n * net/proto2/compiler/js/internal/generator.cc#kKeyword.\n * @param {boolean=} opt_includeInstance Deprecated. whether to include the\n * JSPB instance for transitional soy proto support:\n * http://goto/soy-param-migration\n * @return {!Object}\n */\n proto.base.v1.ShopList.prototype.toObject = function (opt_includeInstance) {\n return proto.base.v1.ShopList.toObject(opt_includeInstance, this);\n };\n\n /**\n * Static version of the {@see toObject} method.\n * @param {boolean|undefined} includeInstance Deprecated. Whether to include\n * the JSPB instance for transitional soy proto support:\n * http://goto/soy-param-migration\n * @param {!proto.base.v1.ShopList} msg The msg instance to transform.\n * @return {!Object}\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\n proto.base.v1.ShopList.toObject = function (includeInstance, msg) {\n var f,\n obj = {\n shopid: jspb.Message.getFieldWithDefault(msg, 1, 0),\n name: jspb.Message.getFieldWithDefault(msg, 2, \"\")\n };\n if (includeInstance) {\n obj.$jspbMessageInstance = msg;\n }\n return obj;\n };\n}\n\n/**\n * Deserializes binary data (in protobuf wire format).\n * @param {jspb.ByteSource} bytes The bytes to deserialize.\n * @return {!proto.base.v1.ShopList}\n */\nproto.base.v1.ShopList.deserializeBinary = function (bytes) {\n var reader = new jspb.BinaryReader(bytes);\n var msg = new proto.base.v1.ShopList();\n return proto.base.v1.ShopList.deserializeBinaryFromReader(msg, reader);\n};\n\n/**\n * Deserializes binary data (in protobuf wire format) from the\n * given reader into the given message object.\n * @param {!proto.base.v1.ShopList} msg The message object to deserialize into.\n * @param {!jspb.BinaryReader} reader The BinaryReader to use.\n * @return {!proto.base.v1.ShopList}\n */\nproto.base.v1.ShopList.deserializeBinaryFromReader = function (msg, reader) {\n while (reader.nextField()) {\n if (reader.isEndGroup()) {\n break;\n }\n var field = reader.getFieldNumber();\n switch (field) {\n case 1:\n var value = /** @type {number} */reader.readInt32();\n msg.setShopid(value);\n break;\n case 2:\n var value = /** @type {string} */reader.readString();\n msg.setName(value);\n break;\n default:\n reader.skipField();\n break;\n }\n }\n return msg;\n};\n\n/**\n * Serializes the message to binary data (in protobuf wire format).\n * @return {!Uint8Array}\n */\nproto.base.v1.ShopList.prototype.serializeBinary = function () {\n var writer = new jspb.BinaryWriter();\n proto.base.v1.ShopList.serializeBinaryToWriter(this, writer);\n return writer.getResultBuffer();\n};\n\n/**\n * Serializes the given message to binary data (in protobuf wire\n * format), writing to the given BinaryWriter.\n * @param {!proto.base.v1.ShopList} message\n * @param {!jspb.BinaryWriter} writer\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\nproto.base.v1.ShopList.serializeBinaryToWriter = function (message, writer) {\n var f = undefined;\n f = message.getShopid();\n if (f !== 0) {\n writer.writeInt32(1, f);\n }\n f = message.getName();\n if (f.length > 0) {\n writer.writeString(2, f);\n }\n};\n\n/**\n * optional int32 shopId = 1;\n * @return {number}\n */\nproto.base.v1.ShopList.prototype.getShopid = function () {\n return (/** @type {number} */jspb.Message.getFieldWithDefault(this, 1, 0)\n );\n};\n\n/**\n * @param {number} value\n * @return {!proto.base.v1.ShopList} returns this\n */\nproto.base.v1.ShopList.prototype.setShopid = function (value) {\n return jspb.Message.setProto3IntField(this, 1, value);\n};\n\n/**\n * optional string name = 2;\n * @return {string}\n */\nproto.base.v1.ShopList.prototype.getName = function () {\n return (/** @type {string} */jspb.Message.getFieldWithDefault(this, 2, \"\")\n );\n};\n\n/**\n * @param {string} value\n * @return {!proto.base.v1.ShopList} returns this\n */\nproto.base.v1.ShopList.prototype.setName = function (value) {\n return jspb.Message.setProto3StringField(this, 2, value);\n};\nif (jspb.Message.GENERATE_TO_OBJECT) {\n /**\n * Creates an object representation of this proto.\n * Field names that are reserved in JavaScript and will be renamed to pb_name.\n * Optional fields that are not set will be set to undefined.\n * To access a reserved field use, foo.pb_<name>, eg, foo.pb_default.\n * For the list of reserved names please see:\n * net/proto2/compiler/js/internal/generator.cc#kKeyword.\n * @param {boolean=} opt_includeInstance Deprecated. whether to include the\n * JSPB instance for transitional soy proto support:\n * http://goto/soy-param-migration\n * @return {!Object}\n */\n proto.base.v1.ControlInfoList.prototype.toObject = function (opt_includeInstance) {\n return proto.base.v1.ControlInfoList.toObject(opt_includeInstance, this);\n };\n\n /**\n * Static version of the {@see toObject} method.\n * @param {boolean|undefined} includeInstance Deprecated. Whether to include\n * the JSPB instance for transitional soy proto support:\n * http://goto/soy-param-migration\n * @param {!proto.base.v1.ControlInfoList} msg The msg instance to transform.\n * @return {!Object}\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\n proto.base.v1.ControlInfoList.toObject = function (includeInstance, msg) {\n var f,\n obj = {\n ciid: jspb.Message.getFieldWithDefault(msg, 1, 0),\n cicode: jspb.Message.getFieldWithDefault(msg, 2, \"\")\n };\n if (includeInstance) {\n obj.$jspbMessageInstance = msg;\n }\n return obj;\n };\n}\n\n/**\n * Deserializes binary data (in protobuf wire format).\n * @param {jspb.ByteSource} bytes The bytes to deserialize.\n * @return {!proto.base.v1.ControlInfoList}\n */\nproto.base.v1.ControlInfoList.deserializeBinary = function (bytes) {\n var reader = new jspb.BinaryReader(bytes);\n var msg = new proto.base.v1.ControlInfoList();\n return proto.base.v1.ControlInfoList.deserializeBinaryFromReader(msg, reader);\n};\n\n/**\n * Deserializes binary data (in protobuf wire format) from the\n * given reader into the given message object.\n * @param {!proto.base.v1.ControlInfoList} msg The message object to deserialize into.\n * @param {!jspb.BinaryReader} reader The BinaryReader to use.\n * @return {!proto.base.v1.ControlInfoList}\n */\nproto.base.v1.ControlInfoList.deserializeBinaryFromReader = function (msg, reader) {\n while (reader.nextField()) {\n if (reader.isEndGroup()) {\n break;\n }\n var field = reader.getFieldNumber();\n switch (field) {\n case 1:\n var value = /** @type {number} */reader.readInt32();\n msg.setCiid(value);\n break;\n case 2:\n var value = /** @type {string} */reader.readString();\n msg.setCicode(value);\n break;\n default:\n reader.skipField();\n break;\n }\n }\n return msg;\n};\n\n/**\n * Serializes the message to binary data (in protobuf wire format).\n * @return {!Uint8Array}\n */\nproto.base.v1.ControlInfoList.prototype.serializeBinary = function () {\n var writer = new jspb.BinaryWriter();\n proto.base.v1.ControlInfoList.serializeBinaryToWriter(this, writer);\n return writer.getResultBuffer();\n};\n\n/**\n * Serializes the given message to binary data (in protobuf wire\n * format), writing to the given BinaryWriter.\n * @param {!proto.base.v1.ControlInfoList} message\n * @param {!jspb.BinaryWriter} writer\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\nproto.base.v1.ControlInfoList.serializeBinaryToWriter = function (message, writer) {\n var f = undefined;\n f = message.getCiid();\n if (f !== 0) {\n writer.writeInt32(1, f);\n }\n f = message.getCicode();\n if (f.length > 0) {\n writer.writeString(2, f);\n }\n};\n\n/**\n * optional int32 ciId = 1;\n * @return {number}\n */\nproto.base.v1.ControlInfoList.prototype.getCiid = function () {\n return (/** @type {number} */jspb.Message.getFieldWithDefault(this, 1, 0)\n );\n};\n\n/**\n * @param {number} value\n * @return {!proto.base.v1.ControlInfoList} returns this\n */\nproto.base.v1.ControlInfoList.prototype.setCiid = function (value) {\n return jspb.Message.setProto3IntField(this, 1, value);\n};\n\n/**\n * optional string ciCode = 2;\n * @return {string}\n */\nproto.base.v1.ControlInfoList.prototype.getCicode = function () {\n return (/** @type {string} */jspb.Message.getFieldWithDefault(this, 2, \"\")\n );\n};\n\n/**\n * @param {string} value\n * @return {!proto.base.v1.ControlInfoList} returns this\n */\nproto.base.v1.ControlInfoList.prototype.setCicode = function (value) {\n return jspb.Message.setProto3StringField(this, 2, value);\n};\nif (jspb.Message.GENERATE_TO_OBJECT) {\n /**\n * Creates an object representation of this proto.\n * Field names that are reserved in JavaScript and will be renamed to pb_name.\n * Optional fields that are not set will be set to undefined.\n * To access a reserved field use, foo.pb_<name>, eg, foo.pb_default.\n * For the list of reserved names please see:\n * net/proto2/compiler/js/internal/generator.cc#kKeyword.\n * @param {boolean=} opt_includeInstance Deprecated. whether to include the\n * JSPB instance for transitional soy proto support:\n * http://goto/soy-param-migration\n * @return {!Object}\n */\n proto.base.v1.DefaultReply.prototype.toObject = function (opt_includeInstance) {\n return proto.base.v1.DefaultReply.toObject(opt_includeInstance, this);\n };\n\n /**\n * Static version of the {@see toObject} method.\n * @param {boolean|undefined} includeInstance Deprecated. Whether to include\n * the JSPB instance for transitional soy proto support:\n * http://goto/soy-param-migration\n * @param {!proto.base.v1.DefaultReply} msg The msg instance to transform.\n * @return {!Object}\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\n proto.base.v1.DefaultReply.toObject = function (includeInstance, msg) {\n var f,\n obj = {};\n if (includeInstance) {\n obj.$jspbMessageInstance = msg;\n }\n return obj;\n };\n}\n\n/**\n * Deserializes binary data (in protobuf wire format).\n * @param {jspb.ByteSource} bytes The bytes to deserialize.\n * @return {!proto.base.v1.DefaultReply}\n */\nproto.base.v1.DefaultReply.deserializeBinary = function (bytes) {\n var reader = new jspb.BinaryReader(bytes);\n var msg = new proto.base.v1.DefaultReply();\n return proto.base.v1.DefaultReply.deserializeBinaryFromReader(msg, reader);\n};\n\n/**\n * Deserializes binary data (in protobuf wire format) from the\n * given reader into the given message object.\n * @param {!proto.base.v1.DefaultReply} msg The message object to deserialize into.\n * @param {!jspb.BinaryReader} reader The BinaryReader to use.\n * @return {!proto.base.v1.DefaultReply}\n */\nproto.base.v1.DefaultReply.deserializeBinaryFromReader = function (msg, reader) {\n while (reader.nextField()) {\n if (reader.isEndGroup()) {\n break;\n }\n var field = reader.getFieldNumber();\n switch (field) {\n default:\n reader.skipField();\n break;\n }\n }\n return msg;\n};\n\n/**\n * Serializes the message to binary data (in protobuf wire format).\n * @return {!Uint8Array}\n */\nproto.base.v1.DefaultReply.prototype.serializeBinary = function () {\n var writer = new jspb.BinaryWriter();\n proto.base.v1.DefaultReply.serializeBinaryToWriter(this, writer);\n return writer.getResultBuffer();\n};\n\n/**\n * Serializes the given message to binary data (in protobuf wire\n * format), writing to the given BinaryWriter.\n * @param {!proto.base.v1.DefaultReply} message\n * @param {!jspb.BinaryWriter} writer\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\nproto.base.v1.DefaultReply.serializeBinaryToWriter = function (message, writer) {\n var f = undefined;\n};\nif (jspb.Message.GENERATE_TO_OBJECT) {\n /**\n * Creates an object representation of this proto.\n * Field names that are reserved in JavaScript and will be renamed to pb_name.\n * Optional fields that are not set will be set to undefined.\n * To access a reserved field use, foo.pb_<name>, eg, foo.pb_default.\n * For the list of reserved names please see:\n * net/proto2/compiler/js/internal/generator.cc#kKeyword.\n * @param {boolean=} opt_includeInstance Deprecated. whether to include the\n * JSPB instance for transitional soy proto support:\n * http://goto/soy-param-migration\n * @return {!Object}\n */\n proto.base.v1.IdRequest.prototype.toObject = function (opt_includeInstance) {\n return proto.base.v1.IdRequest.toObject(opt_includeInstance, this);\n };\n\n /**\n * Static version of the {@see toObject} method.\n * @param {boolean|undefined} includeInstance Deprecated. Whether to include\n * the JSPB instance for transitional soy proto support:\n * http://goto/soy-param-migration\n * @param {!proto.base.v1.IdRequest} msg The msg instance to transform.\n * @return {!Object}\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\n proto.base.v1.IdRequest.toObject = function (includeInstance, msg) {\n var f,\n obj = {\n id: jspb.Message.getFieldWithDefault(msg, 1, 0)\n };\n if (includeInstance) {\n obj.$jspbMessageInstance = msg;\n }\n return obj;\n };\n}\n\n/**\n * Deserializes binary data (in protobuf wire format).\n * @param {jspb.ByteSource} bytes The bytes to deserialize.\n * @return {!proto.base.v1.IdRequest}\n */\nproto.base.v1.IdRequest.deserializeBinary = function (bytes) {\n var reader = new jspb.BinaryReader(bytes);\n var msg = new proto.base.v1.IdRequest();\n return proto.base.v1.IdRequest.deserializeBinaryFromReader(msg, reader);\n};\n\n/**\n * Deserializes binary data (in protobuf wire format) from the\n * given reader into the given message object.\n * @param {!proto.base.v1.IdRequest} msg The message object to deserialize into.\n * @param {!jspb.BinaryReader} reader The BinaryReader to use.\n * @return {!proto.base.v1.IdRequest}\n */\nproto.base.v1.IdRequest.deserializeBinaryFromReader = function (msg, reader) {\n while (reader.nextField()) {\n if (reader.isEndGroup()) {\n break;\n }\n var field = reader.getFieldNumber();\n switch (field) {\n case 1:\n var value = /** @type {number} */reader.readInt64();\n msg.setId(value);\n break;\n default:\n reader.skipField();\n break;\n }\n }\n return msg;\n};\n\n/**\n * Serializes the message to binary data (in protobuf wire format).\n * @return {!Uint8Array}\n */\nproto.base.v1.IdRequest.prototype.serializeBinary = function () {\n var writer = new jspb.BinaryWriter();\n proto.base.v1.IdRequest.serializeBinaryToWriter(this, writer);\n return writer.getResultBuffer();\n};\n\n/**\n * Serializes the given message to binary data (in protobuf wire\n * format), writing to the given BinaryWriter.\n * @param {!proto.base.v1.IdRequest} message\n * @param {!jspb.BinaryWriter} writer\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\nproto.base.v1.IdRequest.serializeBinaryToWriter = function (message, writer) {\n var f = undefined;\n f = message.getId();\n if (f !== 0) {\n writer.writeInt64(1, f);\n }\n};\n\n/**\n * optional int64 id = 1;\n * @return {number}\n */\nproto.base.v1.IdRequest.prototype.getId = function () {\n return (/** @type {number} */jspb.Message.getFieldWithDefault(this, 1, 0)\n );\n};\n\n/**\n * @param {number} value\n * @return {!proto.base.v1.IdRequest} returns this\n */\nproto.base.v1.IdRequest.prototype.setId = function (value) {\n return jspb.Message.setProto3IntField(this, 1, value);\n};\nif (jspb.Message.GENERATE_TO_OBJECT) {\n /**\n * Creates an object representation of this proto.\n * Field names that are reserved in JavaScript and will be renamed to pb_name.\n * Optional fields that are not set will be set to undefined.\n * To access a reserved field use, foo.pb_<name>, eg, foo.pb_default.\n * For the list of reserved names please see:\n * net/proto2/compiler/js/internal/generator.cc#kKeyword.\n * @param {boolean=} opt_includeInstance Deprecated. whether to include the\n * JSPB instance for transitional soy proto support:\n * http://goto/soy-param-migration\n * @return {!Object}\n */\n proto.base.v1.DefaultRequest.prototype.toObject = function (opt_includeInstance) {\n return proto.base.v1.DefaultRequest.toObject(opt_includeInstance, this);\n };\n\n /**\n * Static version of the {@see toObject} method.\n * @param {boolean|undefined} includeInstance Deprecated. Whether to include\n * the JSPB instance for transitional soy proto support:\n * http://goto/soy-param-migration\n * @param {!proto.base.v1.DefaultRequest} msg The msg instance to transform.\n * @return {!Object}\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\n proto.base.v1.DefaultRequest.toObject = function (includeInstance, msg) {\n var f,\n obj = {};\n if (includeInstance) {\n obj.$jspbMessageInstance = msg;\n }\n return obj;\n };\n}\n\n/**\n * Deserializes binary data (in protobuf wire format).\n * @param {jspb.ByteSource} bytes The bytes to deserialize.\n * @return {!proto.base.v1.DefaultRequest}\n */\nproto.base.v1.DefaultRequest.deserializeBinary = function (bytes) {\n var reader = new jspb.BinaryReader(bytes);\n var msg = new proto.base.v1.DefaultRequest();\n return proto.base.v1.DefaultRequest.deserializeBinaryFromReader(msg, reader);\n};\n\n/**\n * Deserializes binary data (in protobuf wire format) from the\n * given reader into the given message object.\n * @param {!proto.base.v1.DefaultRequest} msg The message object to deserialize into.\n * @param {!jspb.BinaryReader} reader The BinaryReader to use.\n * @return {!proto.base.v1.DefaultRequest}\n */\nproto.base.v1.DefaultRequest.deserializeBinaryFromReader = function (msg, reader) {\n while (reader.nextField()) {\n if (reader.isEndGroup()) {\n break;\n }\n var field = reader.getFieldNumber();\n switch (field) {\n default:\n reader.skipField();\n break;\n }\n }\n return msg;\n};\n\n/**\n * Serializes the message to binary data (in protobuf wire format).\n * @return {!Uint8Array}\n */\nproto.base.v1.DefaultRequest.prototype.serializeBinary = function () {\n var writer = new jspb.BinaryWriter();\n proto.base.v1.DefaultRequest.serializeBinaryToWriter(this, writer);\n return writer.getResultBuffer();\n};\n\n/**\n * Serializes the given message to binary data (in protobuf wire\n * format), writing to the given BinaryWriter.\n * @param {!proto.base.v1.DefaultRequest} message\n * @param {!jspb.BinaryWriter} writer\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\nproto.base.v1.DefaultRequest.serializeBinaryToWriter = function (message, writer) {\n var f = undefined;\n};\nif (jspb.Message.GENERATE_TO_OBJECT) {\n /**\n * Creates an object representation of this proto.\n * Field names that are reserved in JavaScript and will be renamed to pb_name.\n * Optional fields that are not set will be set to undefined.\n * To access a reserved field use, foo.pb_<name>, eg, foo.pb_default.\n * For the list of reserved names please see:\n * net/proto2/compiler/js/internal/generator.cc#kKeyword.\n * @param {boolean=} opt_includeInstance Deprecated. whether to include the\n * JSPB instance for transitional soy proto support:\n * http://goto/soy-param-migration\n * @return {!Object}\n */\n proto.base.v1.Position.prototype.toObject = function (opt_includeInstance) {\n return proto.base.v1.Position.toObject(opt_includeInstance, this);\n };\n\n /**\n * Static version of the {@see toObject} method.\n * @param {boolean|undefined} includeInstance Deprecated. Whether to include\n * the JSPB instance for transitional soy proto support:\n * http://goto/soy-param-migration\n * @param {!proto.base.v1.Position} msg The msg instance to transform.\n * @return {!Object}\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\n proto.base.v1.Position.toObject = function (includeInstance, msg) {\n var f,\n obj = {\n longitude: jspb.Message.getFloatingPointFieldWithDefault(msg, 1, 0.0),\n latitude: jspb.Message.getFloatingPointFieldWithDefault(msg, 2, 0.0)\n };\n if (includeInstance) {\n obj.$jspbMessageInstance = msg;\n }\n return obj;\n };\n}\n\n/**\n * Deserializes binary data (in protobuf wire format).\n * @param {jspb.ByteSource} bytes The bytes to deserialize.\n * @return {!proto.base.v1.Position}\n */\nproto.base.v1.Position.deserializeBinary = function (bytes) {\n var reader = new jspb.BinaryReader(bytes);\n var msg = new proto.base.v1.Position();\n return proto.base.v1.Position.deserializeBinaryFromReader(msg, reader);\n};\n\n/**\n * Deserializes binary data (in protobuf wire format) from the\n * given reader into the given message object.\n * @param {!proto.base.v1.Position} msg The message object to deserialize into.\n * @param {!jspb.BinaryReader} reader The BinaryReader to use.\n * @return {!proto.base.v1.Position}\n */\nproto.base.v1.Position.deserializeBinaryFromReader = function (msg, reader) {\n while (reader.nextField()) {\n if (reader.isEndGroup()) {\n break;\n }\n var field = reader.getFieldNumber();\n switch (field) {\n case 1:\n var value = /** @type {number} */reader.readDouble();\n msg.setLongitude(value);\n break;\n case 2:\n var value = /** @type {number} */reader.readDouble();\n msg.setLatitude(value);\n break;\n default:\n reader.skipField();\n break;\n }\n }\n return msg;\n};\n\n/**\n * Serializes the message to binary data (in protobuf wire format).\n * @return {!Uint8Array}\n */\nproto.base.v1.Position.prototype.serializeBinary = function () {\n var writer = new jspb.BinaryWriter();\n proto.base.v1.Position.serializeBinaryToWriter(this, writer);\n return writer.getResultBuffer();\n};\n\n/**\n * Serializes the given message to binary data (in protobuf wire\n * format), writing to the given BinaryWriter.\n * @param {!proto.base.v1.Position} message\n * @param {!jspb.BinaryWriter} writer\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\nproto.base.v1.Position.serializeBinaryToWriter = function (message, writer) {\n var f = undefined;\n f = message.getLongitude();\n if (f !== 0.0) {\n writer.writeDouble(1, f);\n }\n f = message.getLatitude();\n if (f !== 0.0) {\n writer.writeDouble(2, f);\n }\n};\n\n/**\n * optional double longitude = 1;\n * @return {number}\n */\nproto.base.v1.Position.prototype.getLongitude = function () {\n return (/** @type {number} */jspb.Message.getFloatingPointFieldWithDefault(this, 1, 0.0)\n );\n};\n\n/**\n * @param {number} value\n * @return {!proto.base.v1.Position} returns this\n */\nproto.base.v1.Position.prototype.setLongitude = function (value) {\n return jspb.Message.setProto3FloatField(this, 1, value);\n};\n\n/**\n * optional double latitude = 2;\n * @return {number}\n */\nproto.base.v1.Position.prototype.getLatitude = function () {\n return (/** @type {number} */jspb.Message.getFloatingPointFieldWithDefault(this, 2, 0.0)\n );\n};\n\n/**\n * @param {number} value\n * @return {!proto.base.v1.Position} returns this\n */\nproto.base.v1.Position.prototype.setLatitude = function (value) {\n return jspb.Message.setProto3FloatField(this, 2, value);\n};\nif (jspb.Message.GENERATE_TO_OBJECT) {\n /**\n * Creates an object representation of this proto.\n * Field names that are reserved in JavaScript and will be renamed to pb_name.\n * Optional fields that are not set will be set to undefined.\n * To access a reserved field use, foo.pb_<name>, eg, foo.pb_default.\n * For the list of reserved names please see:\n * net/proto2/compiler/js/internal/generator.cc#kKeyword.\n * @param {boolean=} opt_includeInstance Deprecated. whether to include the\n * JSPB instance for transitional soy proto support:\n * http://goto/soy-param-migration\n * @return {!Object}\n */\n proto.base.v1.ControlPointInfo.prototype.toObject = function (opt_includeInstance) {\n return proto.base.v1.ControlPointInfo.toObject(opt_includeInstance, this);\n };\n\n /**\n * Static version of the {@see toObject} method.\n * @param {boolean|undefined} includeInstance Deprecated. Whether to include\n * the JSPB instance for transitional soy proto support:\n * http://goto/soy-param-migration\n * @param {!proto.base.v1.ControlPointInfo} msg The msg instance to transform.\n * @return {!Object}\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\n proto.base.v1.ControlPointInfo.toObject = function (includeInstance, msg) {\n var f,\n obj = {\n image: (f = msg.getImage()) && proto.base.v1.NetImage.toObject(includeInstance, f),\n content: jspb.Message.getFieldWithDefault(msg, 2, \"\")\n };\n if (includeInstance) {\n obj.$jspbMessageInstance = msg;\n }\n return obj;\n };\n}\n\n/**\n * Deserializes binary data (in protobuf wire format).\n * @param {jspb.ByteSource} bytes The bytes to deserialize.\n * @return {!proto.base.v1.ControlPointInfo}\n */\nproto.base.v1.ControlPointInfo.deserializeBinary = function (bytes) {\n var reader = new jspb.BinaryReader(bytes);\n var msg = new proto.base.v1.ControlPointInfo();\n return proto.base.v1.ControlPointInfo.deserializeBinaryFromReader(msg, reader);\n};\n\n/**\n * Deserializes binary data (in protobuf wire format) from the\n * given reader into the given message object.\n * @param {!proto.base.v1.ControlPointInfo} msg The message object to deserialize into.\n * @param {!jspb.BinaryReader} reader The BinaryReader to use.\n * @return {!proto.base.v1.ControlPointInfo}\n */\nproto.base.v1.ControlPointInfo.deserializeBinaryFromReader = function (msg, reader) {\n while (reader.nextField()) {\n if (reader.isEndGroup()) {\n break;\n }\n var field = reader.getFieldNumber();\n switch (field) {\n case 1:\n var value = new proto.base.v1.NetImage();\n reader.readMessage(value, proto.base.v1.NetImage.deserializeBinaryFromReader);\n msg.setImage(value);\n break;\n case 2:\n var value = /** @type {string} */reader.readString();\n msg.setContent(value);\n break;\n default:\n reader.skipField();\n break;\n }\n }\n return msg;\n};\n\n/**\n * Serializes the message to binary data (in protobuf wire format).\n * @return {!Uint8Array}\n */\nproto.base.v1.ControlPointInfo.prototype.serializeBinary = function () {\n var writer = new jspb.BinaryWriter();\n proto.base.v1.ControlPointInfo.serializeBinaryToWriter(this, writer);\n return writer.getResultBuffer();\n};\n\n/**\n * Serializes the given message to binary data (in protobuf wire\n * format), writing to the given BinaryWriter.\n * @param {!proto.base.v1.ControlPointInfo} message\n * @param {!jspb.BinaryWriter} writer\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\nproto.base.v1.ControlPointInfo.serializeBinaryToWriter = function (message, writer) {\n var f = undefined;\n f = message.getImage();\n if (f != null) {\n writer.writeMessage(1, f, proto.base.v1.NetImage.serializeBinaryToWriter);\n }\n f = message.getContent();\n if (f.length > 0) {\n writer.writeString(2, f);\n }\n};\n\n/**\n * optional NetImage image = 1;\n * @return {?proto.base.v1.NetImage}\n */\nproto.base.v1.ControlPointInfo.prototype.getImage = function () {\n return (/** @type{?proto.base.v1.NetImage} */\n jspb.Message.getWrapperField(this, proto.base.v1.NetImage, 1)\n );\n};\n\n/**\n * @param {?proto.base.v1.NetImage|undefined} value\n * @return {!proto.base.v1.ControlPointInfo} returns this\n*/\nproto.base.v1.ControlPointInfo.prototype.setImage = function (value) {\n return jspb.Message.setWrapperField(this, 1, value);\n};\n\n/**\n * Clears the message field making it undefined.\n * @return {!proto.base.v1.ControlPointInfo} returns this\n */\nproto.base.v1.ControlPointInfo.prototype.clearImage = function () {\n return this.setImage(undefined);\n};\n\n/**\n * Returns whether this field is set.\n * @return {boolean}\n */\nproto.base.v1.ControlPointInfo.prototype.hasImage = function () {\n return jspb.Message.getField(this, 1) != null;\n};\n\n/**\n * optional string content = 2;\n * @return {string}\n */\nproto.base.v1.ControlPointInfo.prototype.getContent = function () {\n return (/** @type {string} */jspb.Message.getFieldWithDefault(this, 2, \"\")\n );\n};\n\n/**\n * @param {string} value\n * @return {!proto.base.v1.ControlPointInfo} returns this\n */\nproto.base.v1.ControlPointInfo.prototype.setContent = function (value) {\n return jspb.Message.setProto3StringField(this, 2, value);\n};\nif (jspb.Message.GENERATE_TO_OBJECT) {\n /**\n * Creates an object representation of this proto.\n * Field names that are reserved in JavaScript and will be renamed to pb_name.\n * Optional fields that are not set will be set to undefined.\n * To access a reserved field use, foo.pb_<name>, eg, foo.pb_default.\n * For the list of reserved names please see:\n * net/proto2/compiler/js/internal/generator.cc#kKeyword.\n * @param {boolean=} opt_includeInstance Deprecated. whether to include the\n * JSPB instance for transitional soy proto support:\n * http://goto/soy-param-migration\n * @return {!Object}\n */\n proto.base.v1.Image.prototype.toObject = function (opt_includeInstance) {\n return proto.base.v1.Image.toObject(opt_includeInstance, this);\n };\n\n /**\n * Static version of the {@see toObject} method.\n * @param {boolean|undefined} includeInstance Deprecated. Whether to include\n * the JSPB instance for transitional soy proto support:\n * http://goto/soy-param-migration\n * @param {!proto.base.v1.Image} msg The msg instance to transform.\n * @return {!Object}\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\n proto.base.v1.Image.toObject = function (includeInstance, msg) {\n var f,\n obj = {\n ext: jspb.Message.getFieldWithDefault(msg, 1, \"\"),\n data: msg.getData_asB64()\n };\n if (includeInstance) {\n obj.$jspbMessageInstance = msg;\n }\n return obj;\n };\n}\n\n/**\n * Deserializes binary data (in protobuf wire format).\n * @param {jspb.ByteSource} bytes The bytes to deserialize.\n * @return {!proto.base.v1.Image}\n */\nproto.base.v1.Image.deserializeBinary = function (bytes) {\n var reader = new jspb.BinaryReader(bytes);\n var msg = new proto.base.v1.Image();\n return proto.base.v1.Image.deserializeBinaryFromReader(msg, reader);\n};\n\n/**\n * Deserializes binary data (in protobuf wire format) from the\n * given reader into the given message object.\n * @param {!proto.base.v1.Image} msg The message object to deserialize into.\n * @param {!jspb.BinaryReader} reader The BinaryReader to use.\n * @return {!proto.base.v1.Image}\n */\nproto.base.v1.Image.deserializeBinaryFromReader = function (msg, reader) {\n while (reader.nextField()) {\n if (reader.isEndGroup()) {\n break;\n }\n var field = reader.getFieldNumber();\n switch (field) {\n case 1:\n var value = /** @type {string} */reader.readString();\n msg.setExt(value);\n break;\n case 2:\n var value = /** @type {!Uint8Array} */reader.readBytes();\n msg.setData(value);\n break;\n default:\n reader.skipField();\n break;\n }\n }\n return msg;\n};\n\n/**\n * Serializes the message to binary data (in protobuf wire format).\n * @return {!Uint8Array}\n */\nproto.base.v1.Image.prototype.serializeBinary = function () {\n var writer = new jspb.BinaryWriter();\n proto.base.v1.Image.serializeBinaryToWriter(this, writer);\n return writer.getResultBuffer();\n};\n\n/**\n * Serializes the given message to binary data (in protobuf wire\n * format), writing to the given BinaryWriter.\n * @param {!proto.base.v1.Image} message\n * @param {!jspb.BinaryWriter} writer\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\nproto.base.v1.Image.serializeBinaryToWriter = function (message, writer) {\n var f = undefined;\n f = message.getExt();\n if (f.length > 0) {\n writer.writeString(1, f);\n }\n f = message.getData_asU8();\n if (f.length > 0) {\n writer.writeBytes(2, f);\n }\n};\n\n/**\n * optional string ext = 1;\n * @return {string}\n */\nproto.base.v1.Image.prototype.getExt = function () {\n return (/** @type {string} */jspb.Message.getFieldWithDefault(this, 1, \"\")\n );\n};\n\n/**\n * @param {string} value\n * @return {!proto.base.v1.Image} returns this\n */\nproto.base.v1.Image.prototype.setExt = function (value) {\n return jspb.Message.setProto3StringField(this, 1, value);\n};\n\n/**\n * optional bytes data = 2;\n * @return {string}\n */\nproto.base.v1.Image.prototype.getData = function () {\n return (/** @type {string} */jspb.Message.getFieldWithDefault(this, 2, \"\")\n );\n};\n\n/**\n * optional bytes data = 2;\n * This is a type-conversion wrapper around `getData()`\n * @return {string}\n */\nproto.base.v1.Image.prototype.getData_asB64 = function () {\n return (/** @type {string} */jspb.Message.bytesAsB64(this.getData())\n );\n};\n\n/**\n * optional bytes data = 2;\n * Note that Uint8Array is not supported on all browsers.\n * @see http://caniuse.com/Uint8Array\n * This is a type-conversion wrapper around `getData()`\n * @return {!Uint8Array}\n */\nproto.base.v1.Image.prototype.getData_asU8 = function () {\n return (/** @type {!Uint8Array} */jspb.Message.bytesAsU8(this.getData())\n );\n};\n\n/**\n * @param {!(string|Uint8Array)} value\n * @return {!proto.base.v1.Image} returns this\n */\nproto.base.v1.Image.prototype.setData = function (value) {\n return jspb.Message.setProto3BytesField(this, 2, value);\n};\nif (jspb.Message.GENERATE_TO_OBJECT) {\n /**\n * Creates an object representation of this proto.\n * Field names that are reserved in JavaScript and will be renamed to pb_name.\n * Optional fields that are not set will be set to undefined.\n * To access a reserved field use, foo.pb_<name>, eg, foo.pb_default.\n * For the list of reserved names please see:\n * net/proto2/compiler/js/internal/generator.cc#kKeyword.\n * @param {boolean=} opt_includeInstance Deprecated. whether to include the\n * JSPB instance for transitional soy proto support:\n * http://goto/soy-param-migration\n * @return {!Object}\n */\n proto.base.v1.StatusEditRequest.prototype.toObject = function (opt_includeInstance) {\n return proto.base.v1.StatusEditRequest.toObject(opt_includeInstance, this);\n };\n\n /**\n * Static version of the {@see toObject} method.\n * @param {boolean|undefined} includeInstance Deprecated. Whether to include\n * the JSPB instance for transitional soy proto support:\n * http://goto/soy-param-migration\n * @param {!proto.base.v1.StatusEditRequest} msg The msg instance to transform.\n * @return {!Object}\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\n proto.base.v1.StatusEditRequest.toObject = function (includeInstance, msg) {\n var f,\n obj = {\n id: jspb.Message.getFieldWithDefault(msg, 1, 0),\n status: jspb.Message.getFieldWithDefault(msg, 2, 0)\n };\n if (includeInstance) {\n obj.$jspbMessageInstance = msg;\n }\n return obj;\n };\n}\n\n/**\n * Deserializes binary data (in protobuf wire format).\n * @param {jspb.ByteSource} bytes The bytes to deserialize.\n * @return {!proto.base.v1.StatusEditRequest}\n */\nproto.base.v1.StatusEditRequest.deserializeBinary = function (bytes) {\n var reader = new jspb.BinaryReader(bytes);\n var msg = new proto.base.v1.StatusEditRequest();\n return proto.base.v1.StatusEditRequest.deserializeBinaryFromReader(msg, reader);\n};\n\n/**\n * Deserializes binary data (in protobuf wire format) from the\n * given reader into the given message object.\n * @param {!proto.base.v1.StatusEditRequest} msg The message object to deserialize into.\n * @param {!jspb.BinaryReader} reader The BinaryReader to use.\n * @return {!proto.base.v1.StatusEditRequest}\n */\nproto.base.v1.StatusEditRequest.deserializeBinaryFromReader = function (msg, reader) {\n while (reader.nextField()) {\n if (reader.isEndGroup()) {\n break;\n }\n var field = reader.getFieldNumber();\n switch (field) {\n case 1:\n var value = /** @type {number} */reader.readInt64();\n msg.setId(value);\n break;\n case 2:\n var value = /** @type {!proto.base.v1.StatusType} */reader.readEnum();\n msg.setStatus(value);\n break;\n default:\n reader.skipField();\n break;\n }\n }\n return msg;\n};\n\n/**\n * Serializes the message to binary data (in protobuf wire format).\n * @return {!Uint8Array}\n */\nproto.base.v1.StatusEditRequest.prototype.serializeBinary = function () {\n var writer = new jspb.BinaryWriter();\n proto.base.v1.StatusEditRequest.serializeBinaryToWriter(this, writer);\n return writer.getResultBuffer();\n};\n\n/**\n * Serializes the given message to binary data (in protobuf wire\n * format), writing to the given BinaryWriter.\n * @param {!proto.base.v1.StatusEditRequest} message\n * @param {!jspb.BinaryWriter} writer\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\nproto.base.v1.StatusEditRequest.serializeBinaryToWriter = function (message, writer) {\n var f = undefined;\n f = message.getId();\n if (f !== 0) {\n writer.writeInt64(1, f);\n }\n f = message.getStatus();\n if (f !== 0.0) {\n writer.writeEnum(2, f);\n }\n};\n\n/**\n * optional int64 id = 1;\n * @return {number}\n */\nproto.base.v1.StatusEditRequest.prototype.getId = function () {\n return (/** @type {number} */jspb.Message.getFieldWithDefault(this, 1, 0)\n );\n};\n\n/**\n * @param {number} value\n * @return {!proto.base.v1.StatusEditRequest} returns this\n */\nproto.base.v1.StatusEditRequest.prototype.setId = function (value) {\n return jspb.Message.setProto3IntField(this, 1, value);\n};\n\n/**\n * optional StatusType status = 2;\n * @return {!proto.base.v1.StatusType}\n */\nproto.base.v1.StatusEditRequest.prototype.getStatus = function () {\n return (/** @type {!proto.base.v1.StatusType} */jspb.Message.getFieldWithDefault(this, 2, 0)\n );\n};\n\n/**\n * @param {!proto.base.v1.StatusType} value\n * @return {!proto.base.v1.StatusEditRequest} returns this\n */\nproto.base.v1.StatusEditRequest.prototype.setStatus = function (value) {\n return jspb.Message.setProto3EnumField(this, 2, value);\n};\n\n/**\n * List of repeated fields within this message type.\n * @private {!Array<number>}\n * @const\n */\nproto.base.v1.CourseInfo.repeatedFields_ = [5];\nif (jspb.Message.GENERATE_TO_OBJECT) {\n /**\n * Creates an object representation of this proto.\n * Field names that are reserved in JavaScript and will be renamed to pb_name.\n * Optional fields that are not set will be set to undefined.\n * To access a reserved field use, foo.pb_<name>, eg, foo.pb_default.\n * For the list of reserved names please see:\n * net/proto2/compiler/js/internal/generator.cc#kKeyword.\n * @param {boolean=} opt_includeInstance Deprecated. whether to include the\n * JSPB instance for transitional soy proto support:\n * http://goto/soy-param-migration\n * @return {!Object}\n */\n proto.base.v1.CourseInfo.prototype.toObject = function (opt_includeInstance) {\n return proto.base.v1.CourseInfo.toObject(opt_includeInstance, this);\n };\n\n /**\n * Static version of the {@see toObject} method.\n * @param {boolean|undefined} includeInstance Deprecated. Whether to include\n * the JSPB instance for transitional soy proto support:\n * http://goto/soy-param-migration\n * @param {!proto.base.v1.CourseInfo} msg The msg instance to transform.\n * @return {!Object}\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\n proto.base.v1.CourseInfo.toObject = function (includeInstance, msg) {\n var f,\n obj = {\n id: jspb.Message.getFieldWithDefault(msg, 1, 0),\n name: jspb.Message.getFieldWithDefault(msg, 2, \"\"),\n totalcontrolnum: jspb.Message.getFieldWithDefault(msg, 3, 0),\n maxrange: jspb.Message.getFieldWithDefault(msg, 4, 0),\n controlPointSortedListList: jspb.Message.toObjectList(msg.getControlPointSortedListList(), proto.base.v1.ControlPoint.toObject, includeInstance)\n };\n if (includeInstance) {\n obj.$jspbMessageInstance = msg;\n }\n return obj;\n };\n}\n\n/**\n * Deserializes binary data (in protobuf wire format).\n * @param {jspb.ByteSource} bytes The bytes to deserialize.\n * @return {!proto.base.v1.CourseInfo}\n */\nproto.base.v1.CourseInfo.deserializeBinary = function (bytes) {\n var reader = new jspb.BinaryReader(bytes);\n var msg = new proto.base.v1.CourseInfo();\n return proto.base.v1.CourseInfo.deserializeBinaryFromReader(msg, reader);\n};\n\n/**\n * Deserializes binary data (in protobuf wire format) from the\n * given reader into the given message object.\n * @param {!proto.base.v1.CourseInfo} msg The message object to deserialize into.\n * @param {!jspb.BinaryReader} reader The BinaryReader to use.\n * @return {!proto.base.v1.CourseInfo}\n */\nproto.base.v1.CourseInfo.deserializeBinaryFromReader = function (msg, reader) {\n while (reader.nextField()) {\n if (reader.isEndGroup()) {\n break;\n }\n var field = reader.getFieldNumber();\n switch (field) {\n case 1:\n var value = /** @type {number} */reader.readInt32();\n msg.setId(value);\n break;\n case 2:\n var value = /** @type {string} */reader.readString();\n msg.setName(value);\n break;\n case 3:\n var value = /** @type {number} */reader.readInt32();\n msg.setTotalcontrolnum(value);\n break;\n case 4:\n var value = /** @type {number} */reader.readInt32();\n msg.setMaxrange(value);\n break;\n case 5:\n var value = new proto.base.v1.ControlPoint();\n reader.readMessage(value, proto.base.v1.ControlPoint.deserializeBinaryFromReader);\n msg.addControlPointSortedList(value);\n break;\n default:\n reader.skipField();\n break;\n }\n }\n return msg;\n};\n\n/**\n * Serializes the message to binary data (in protobuf wire format).\n * @return {!Uint8Array}\n */\nproto.base.v1.CourseInfo.prototype.serializeBinary = function () {\n var writer = new jspb.BinaryWriter();\n proto.base.v1.CourseInfo.serializeBinaryToWriter(this, writer);\n return writer.getResultBuffer();\n};\n\n/**\n * Serializes the given message to binary data (in protobuf wire\n * format), writing to the given BinaryWriter.\n * @param {!proto.base.v1.CourseInfo} message\n * @param {!jspb.BinaryWriter} writer\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\nproto.base.v1.CourseInfo.serializeBinaryToWriter = function (message, writer) {\n var f = undefined;\n f = message.getId();\n if (f !== 0) {\n writer.writeInt32(1, f);\n }\n f = message.getName();\n if (f.length > 0) {\n writer.writeString(2, f);\n }\n f = message.getTotalcontrolnum();\n if (f !== 0) {\n writer.writeInt32(3, f);\n }\n f = message.getMaxrange();\n if (f !== 0) {\n writer.writeInt32(4, f);\n }\n f = message.getControlPointSortedListList();\n if (f.length > 0) {\n writer.writeRepeatedMessage(5, f, proto.base.v1.ControlPoint.serializeBinaryToWriter);\n }\n};\n\n/**\n * optional int32 id = 1;\n * @return {number}\n */\nproto.base.v1.CourseInfo.prototype.getId = function () {\n return (/** @type {number} */jspb.Message.getFieldWithDefault(this, 1, 0)\n );\n};\n\n/**\n * @param {number} value\n * @return {!proto.base.v1.CourseInfo} returns this\n */\nproto.base.v1.CourseInfo.prototype.setId = function (value) {\n return jspb.Message.setProto3IntField(this, 1, value);\n};\n\n/**\n * optional string name = 2;\n * @return {string}\n */\nproto.base.v1.CourseInfo.prototype.getName = function () {\n return (/** @type {string} */jspb.Message.getFieldWithDefault(this, 2, \"\")\n );\n};\n\n/**\n * @param {string} value\n * @return {!proto.base.v1.CourseInfo} returns this\n */\nproto.base.v1.CourseInfo.prototype.setName = function (value) {\n return jspb.Message.setProto3StringField(this, 2, value);\n};\n\n/**\n * optional int32 totalControlNum = 3;\n * @return {number}\n */\nproto.base.v1.CourseInfo.prototype.getTotalcontrolnum = function () {\n return (/** @type {number} */jspb.Message.getFieldWithDefault(this, 3, 0)\n );\n};\n\n/**\n * @param {number} value\n * @return {!proto.base.v1.CourseInfo} returns this\n */\nproto.base.v1.CourseInfo.prototype.setTotalcontrolnum = function (value) {\n return jspb.Message.setProto3IntField(this, 3, value);\n};\n\n/**\n * optional int32 maxRange = 4;\n * @return {number}\n */\nproto.base.v1.CourseInfo.prototype.getMaxrange = function () {\n return (/** @type {number} */jspb.Message.getFieldWithDefault(this, 4, 0)\n );\n};\n\n/**\n * @param {number} value\n * @return {!proto.base.v1.CourseInfo} returns this\n */\nproto.base.v1.CourseInfo.prototype.setMaxrange = function (value) {\n return jspb.Message.setProto3IntField(this, 4, value);\n};\n\n/**\n * repeated ControlPoint control_point_sorted_list = 5;\n * @return {!Array<!proto.base.v1.ControlPoint>}\n */\nproto.base.v1.CourseInfo.prototype.getControlPointSortedListList = function () {\n return (/** @type{!Array<!proto.base.v1.ControlPoint>} */\n jspb.Message.getRepeatedWrapperField(this, proto.base.v1.ControlPoint, 5)\n );\n};\n\n/**\n * @param {!Array<!proto.base.v1.ControlPoint>} value\n * @return {!proto.base.v1.CourseInfo} returns this\n*/\nproto.base.v1.CourseInfo.prototype.setControlPointSortedListList = function (value) {\n return jspb.Message.setRepeatedWrapperField(this, 5, value);\n};\n\n/**\n * @param {!proto.base.v1.ControlPoint=} opt_value\n * @param {number=} opt_index\n * @return {!proto.base.v1.ControlPoint}\n */\nproto.base.v1.CourseInfo.prototype.addControlPointSortedList = function (opt_value, opt_index) {\n return jspb.Message.addToRepeatedWrapperField(this, 5, opt_value, proto.base.v1.ControlPoint, opt_index);\n};\n\n/**\n * Clears the list making it empty but non-null.\n * @return {!proto.base.v1.CourseInfo} returns this\n */\nproto.base.v1.CourseInfo.prototype.clearControlPointSortedListList = function () {\n return this.setControlPointSortedListList([]);\n};\n\n/**\n * List of repeated fields within this message type.\n * @private {!Array<number>}\n * @const\n */\nproto.base.v1.ControlPoint.repeatedFields_ = [3];\nif (jspb.Message.GENERATE_TO_OBJECT) {\n /**\n * Creates an object representation of this proto.\n * Field names that are reserved in JavaScript and will be renamed to pb_name.\n * Optional fields that are not set will be set to undefined.\n * To access a reserved field use, foo.pb_<name>, eg, foo.pb_default.\n * For the list of reserved names please see:\n * net/proto2/compiler/js/internal/generator.cc#kKeyword.\n * @param {boolean=} opt_includeInstance Deprecated. whether to include the\n * JSPB instance for transitional soy proto support:\n * http://goto/soy-param-migration\n * @return {!Object}\n */\n proto.base.v1.ControlPoint.prototype.toObject = function (opt_includeInstance) {\n return proto.base.v1.ControlPoint.toObject(opt_includeInstance, this);\n };\n\n /**\n * Static version of the {@see toObject} method.\n * @param {boolean|undefined} includeInstance Deprecated. Whether to include\n * the JSPB instance for transitional soy proto support:\n * http://goto/soy-param-migration\n * @param {!proto.base.v1.ControlPoint} msg The msg instance to transform.\n * @return {!Object}\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\n proto.base.v1.ControlPoint.toObject = function (includeInstance, msg) {\n var f,\n obj = {\n id: jspb.Message.getFieldWithDefault(msg, 1, 0),\n info: (f = msg.getInfo()) && proto.base.v1.ControlPointInfo.toObject(includeInstance, f),\n nfcIdListList: (f = jspb.Message.getRepeatedField(msg, 3)) == null ? undefined : f,\n onMapX: jspb.Message.getFieldWithDefault(msg, 4, 0),\n onMapY: jspb.Message.getFieldWithDefault(msg, 5, 0),\n sn: jspb.Message.getFieldWithDefault(msg, 6, \"\"),\n ciposition: (f = msg.getCiposition()) && proto.base.v1.Position.toObject(includeInstance, f),\n mapposition: (f = msg.getMapposition()) && proto.base.v1.Position.toObject(includeInstance, f),\n category: jspb.Message.getFieldWithDefault(msg, 9, 0)\n };\n if (includeInstance) {\n obj.$jspbMessageInstance = msg;\n }\n return obj;\n };\n}\n\n/**\n * Deserializes binary data (in protobuf wire format).\n * @param {jspb.ByteSource} bytes The bytes to deserialize.\n * @return {!proto.base.v1.ControlPoint}\n */\nproto.base.v1.ControlPoint.deserializeBinary = function (bytes) {\n var reader = new jspb.BinaryReader(bytes);\n var msg = new proto.base.v1.ControlPoint();\n return proto.base.v1.ControlPoint.deserializeBinaryFromReader(msg, reader);\n};\n\n/**\n * Deserializes binary data (in protobuf wire format) from the\n * given reader into the given message object.\n * @param {!proto.base.v1.ControlPoint} msg The message object to deserialize into.\n * @param {!jspb.BinaryReader} reader The BinaryReader to use.\n * @return {!proto.base.v1.ControlPoint}\n */\nproto.base.v1.ControlPoint.deserializeBinaryFromReader = function (msg, reader) {\n while (reader.nextField()) {\n if (reader.isEndGroup()) {\n break;\n }\n var field = reader.getFieldNumber();\n switch (field) {\n case 1:\n var value = /** @type {number} */reader.readInt64();\n msg.setId(value);\n break;\n case 2:\n var value = new proto.base.v1.ControlPointInfo();\n reader.readMessage(value, proto.base.v1.ControlPointInfo.deserializeBinaryFromReader);\n msg.setInfo(value);\n break;\n case 3:\n var value = /** @type {string} */reader.readString();\n msg.addNfcIdList(value);\n break;\n case 4:\n var value = /** @type {number} */reader.readInt64();\n msg.setOnMapX(value);\n break;\n case 5:\n var value = /** @type {number} */reader.readInt64();\n msg.setOnMapY(value);\n break;\n case 6:\n var value = /** @type {string} */reader.readString();\n msg.setSn(value);\n break;\n case 7:\n var value = new proto.base.v1.Position();\n reader.readMessage(value, proto.base.v1.Position.deserializeBinaryFromReader);\n msg.setCiposition(value);\n break;\n case 8:\n var value = new proto.base.v1.Position();\n reader.readMessage(value, proto.base.v1.Position.deserializeBinaryFromReader);\n msg.setMapposition(value);\n break;\n case 9:\n var value = /** @type {number} */reader.readInt32();\n msg.setCategory(value);\n break;\n default:\n reader.skipField();\n break;\n }\n }\n return msg;\n};\n\n/**\n * Serializes the message to binary data (in protobuf wire format).\n * @return {!Uint8Array}\n */\nproto.base.v1.ControlPoint.prototype.serializeBinary = function () {\n var writer = new jspb.BinaryWriter();\n proto.base.v1.ControlPoint.serializeBinaryToWriter(this, writer);\n return writer.getResultBuffer();\n};\n\n/**\n * Serializes the given message to binary data (in protobuf wire\n * format), writing to the given BinaryWriter.\n * @param {!proto.base.v1.ControlPoint} message\n * @param {!jspb.BinaryWriter} writer\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\nproto.base.v1.ControlPoint.serializeBinaryToWriter = function (message, writer) {\n var f = undefined;\n f = message.getId();\n if (f !== 0) {\n writer.writeInt64(1, f);\n }\n f = message.getInfo();\n if (f != null) {\n writer.writeMessage(2, f, proto.base.v1.ControlPointInfo.serializeBinaryToWriter);\n }\n f = message.getNfcIdListList();\n if (f.length > 0) {\n writer.writeRepeatedString(3, f);\n }\n f = message.getOnMapX();\n if (f !== 0) {\n writer.writeInt64(4, f);\n }\n f = message.getOnMapY();\n if (f !== 0) {\n writer.writeInt64(5, f);\n }\n f = message.getSn();\n if (f.length > 0) {\n writer.writeString(6, f);\n }\n f = message.getCiposition();\n if (f != null) {\n writer.writeMessage(7, f, proto.base.v1.Position.serializeBinaryToWriter);\n }\n f = message.getMapposition();\n if (f != null) {\n writer.writeMessage(8, f, proto.base.v1.Position.serializeBinaryToWriter);\n }\n f = message.getCategory();\n if (f !== 0) {\n writer.writeInt32(9, f);\n }\n};\n\n/**\n * optional int64 id = 1;\n * @return {number}\n */\nproto.base.v1.ControlPoint.prototype.getId = function () {\n return (/** @type {number} */jspb.Message.getFieldWithDefault(this, 1, 0)\n );\n};\n\n/**\n * @param {number} value\n * @return {!proto.base.v1.ControlPoint} returns this\n */\nproto.base.v1.ControlPoint.prototype.setId = function (value) {\n return jspb.Message.setProto3IntField(this, 1, value);\n};\n\n/**\n * optional ControlPointInfo info = 2;\n * @return {?proto.base.v1.ControlPointInfo}\n */\nproto.base.v1.ControlPoint.prototype.getInfo = function () {\n return (/** @type{?proto.base.v1.ControlPointInfo} */\n jspb.Message.getWrapperField(this, proto.base.v1.ControlPointInfo, 2)\n );\n};\n\n/**\n * @param {?proto.base.v1.ControlPointInfo|undefined} value\n * @return {!proto.base.v1.ControlPoint} returns this\n*/\nproto.base.v1.ControlPoint.prototype.setInfo = function (value) {\n return jspb.Message.setWrapperField(this, 2, value);\n};\n\n/**\n * Clears the message field making it undefined.\n * @return {!proto.base.v1.ControlPoint} returns this\n */\nproto.base.v1.ControlPoint.prototype.clearInfo = function () {\n return this.setInfo(undefined);\n};\n\n/**\n * Returns whether this field is set.\n * @return {boolean}\n */\nproto.base.v1.ControlPoint.prototype.hasInfo = function () {\n return jspb.Message.getField(this, 2) != null;\n};\n\n/**\n * repeated string nfc_id_list = 3;\n * @return {!Array<string>}\n */\nproto.base.v1.ControlPoint.prototype.getNfcIdListList = function () {\n return (/** @type {!Array<string>} */jspb.Message.getRepeatedField(this, 3)\n );\n};\n\n/**\n * @param {!Array<string>} value\n * @return {!proto.base.v1.ControlPoint} returns this\n */\nproto.base.v1.ControlPoint.prototype.setNfcIdListList = function (value) {\n return jspb.Message.setField(this, 3, value || []);\n};\n\n/**\n * @param {string} value\n * @param {number=} opt_index\n * @return {!proto.base.v1.ControlPoint} returns this\n */\nproto.base.v1.ControlPoint.prototype.addNfcIdList = function (value, opt_index) {\n return jspb.Message.addToRepeatedField(this, 3, value, opt_index);\n};\n\n/**\n * Clears the list making it empty but non-null.\n * @return {!proto.base.v1.ControlPoint} returns this\n */\nproto.base.v1.ControlPoint.prototype.clearNfcIdListList = function () {\n return this.setNfcIdListList([]);\n};\n\n/**\n * optional int64 on_map_x = 4;\n * @return {number}\n */\nproto.base.v1.ControlPoint.prototype.getOnMapX = function () {\n return (/** @type {number} */jspb.Message.getFieldWithDefault(this, 4, 0)\n );\n};\n\n/**\n * @param {number} value\n * @return {!proto.base.v1.ControlPoint} returns this\n */\nproto.base.v1.ControlPoint.prototype.setOnMapX = function (value) {\n return jspb.Message.setProto3IntField(this, 4, value);\n};\n\n/**\n * optional int64 on_map_y = 5;\n * @return {number}\n */\nproto.base.v1.ControlPoint.prototype.getOnMapY = function () {\n return (/** @type {number} */jspb.Message.getFieldWithDefault(this, 5, 0)\n );\n};\n\n/**\n * @param {number} value\n * @return {!proto.base.v1.ControlPoint} returns this\n */\nproto.base.v1.ControlPoint.prototype.setOnMapY = function (value) {\n return jspb.Message.setProto3IntField(this, 5, value);\n};\n\n/**\n * optional string sn = 6;\n * @return {string}\n */\nproto.base.v1.ControlPoint.prototype.getSn = function () {\n return (/** @type {string} */jspb.Message.getFieldWithDefault(this, 6, \"\")\n );\n};\n\n/**\n * @param {string} value\n * @return {!proto.base.v1.ControlPoint} returns this\n */\nproto.base.v1.ControlPoint.prototype.setSn = function (value) {\n return jspb.Message.setProto3StringField(this, 6, value);\n};\n\n/**\n * optional Position ciPosition = 7;\n * @return {?proto.base.v1.Position}\n */\nproto.base.v1.ControlPoint.prototype.getCiposition = function () {\n return (/** @type{?proto.base.v1.Position} */\n jspb.Message.getWrapperField(this, proto.base.v1.Position, 7)\n );\n};\n\n/**\n * @param {?proto.base.v1.Position|undefined} value\n * @return {!proto.base.v1.ControlPoint} returns this\n*/\nproto.base.v1.ControlPoint.prototype.setCiposition = function (value) {\n return jspb.Message.setWrapperField(this, 7, value);\n};\n\n/**\n * Clears the message field making it undefined.\n * @return {!proto.base.v1.ControlPoint} returns this\n */\nproto.base.v1.ControlPoint.prototype.clearCiposition = function () {\n return this.setCiposition(undefined);\n};\n\n/**\n * Returns whether this field is set.\n * @return {boolean}\n */\nproto.base.v1.ControlPoint.prototype.hasCiposition = function () {\n return jspb.Message.getField(this, 7) != null;\n};\n\n/**\n * optional Position mapPosition = 8;\n * @return {?proto.base.v1.Position}\n */\nproto.base.v1.ControlPoint.prototype.getMapposition = function () {\n return (/** @type{?proto.base.v1.Position} */\n jspb.Message.getWrapperField(this, proto.base.v1.Position, 8)\n );\n};\n\n/**\n * @param {?proto.base.v1.Position|undefined} value\n * @return {!proto.base.v1.ControlPoint} returns this\n*/\nproto.base.v1.ControlPoint.prototype.setMapposition = function (value) {\n return jspb.Message.setWrapperField(this, 8, value);\n};\n\n/**\n * Clears the message field making it undefined.\n * @return {!proto.base.v1.ControlPoint} returns this\n */\nproto.base.v1.ControlPoint.prototype.clearMapposition = function () {\n return this.setMapposition(undefined);\n};\n\n/**\n * Returns whether this field is set.\n * @return {boolean}\n */\nproto.base.v1.ControlPoint.prototype.hasMapposition = function () {\n return jspb.Message.getField(this, 8) != null;\n};\n\n/**\n * optional int32 category = 9;\n * @return {number}\n */\nproto.base.v1.ControlPoint.prototype.getCategory = function () {\n return (/** @type {number} */jspb.Message.getFieldWithDefault(this, 9, 0)\n );\n};\n\n/**\n * @param {number} value\n * @return {!proto.base.v1.ControlPoint} returns this\n */\nproto.base.v1.ControlPoint.prototype.setCategory = function (value) {\n return jspb.Message.setProto3IntField(this, 9, value);\n};\n\n/**\n * List of repeated fields within this message type.\n * @private {!Array<number>}\n * @const\n */\nproto.base.v1.ControlPointSimple.repeatedFields_ = [2];\nif (jspb.Message.GENERATE_TO_OBJECT) {\n /**\n * Creates an object representation of this proto.\n * Field names that are reserved in JavaScript and will be renamed to pb_name.\n * Optional fields that are not set will be set to undefined.\n * To access a reserved field use, foo.pb_<name>, eg, foo.pb_default.\n * For the list of reserved names please see:\n * net/proto2/compiler/js/internal/generator.cc#kKeyword.\n * @param {boolean=} opt_includeInstance Deprecated. whether to include the\n * JSPB instance for transitional soy proto support:\n * http://goto/soy-param-migration\n * @return {!Object}\n */\n proto.base.v1.ControlPointSimple.prototype.toObject = function (opt_includeInstance) {\n return proto.base.v1.ControlPointSimple.toObject(opt_includeInstance, this);\n };\n\n /**\n * Static version of the {@see toObject} method.\n * @param {boolean|undefined} includeInstance Deprecated. Whether to include\n * the JSPB instance for transitional soy proto support:\n * http://goto/soy-param-migration\n * @param {!proto.base.v1.ControlPointSimple} msg The msg instance to transform.\n * @return {!Object}\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\n proto.base.v1.ControlPointSimple.toObject = function (includeInstance, msg) {\n var f,\n obj = {\n id: jspb.Message.getFieldWithDefault(msg, 1, 0),\n nfcIdListList: (f = jspb.Message.getRepeatedField(msg, 2)) == null ? undefined : f,\n sn: jspb.Message.getFieldWithDefault(msg, 3, \"\")\n };\n if (includeInstance) {\n obj.$jspbMessageInstance = msg;\n }\n return obj;\n };\n}\n\n/**\n * Deserializes binary data (in protobuf wire format).\n * @param {jspb.ByteSource} bytes The bytes to deserialize.\n * @return {!proto.base.v1.ControlPointSimple}\n */\nproto.base.v1.ControlPointSimple.deserializeBinary = function (bytes) {\n var reader = new jspb.BinaryReader(bytes);\n var msg = new proto.base.v1.ControlPointSimple();\n return proto.base.v1.ControlPointSimple.deserializeBinaryFromReader(msg, reader);\n};\n\n/**\n * Deserializes binary data (in protobuf wire format) from the\n * given reader into the given message object.\n * @param {!proto.base.v1.ControlPointSimple} msg The message object to deserialize into.\n * @param {!jspb.BinaryReader} reader The BinaryReader to use.\n * @return {!proto.base.v1.ControlPointSimple}\n */\nproto.base.v1.ControlPointSimple.deserializeBinaryFromReader = function (msg, reader) {\n while (reader.nextField()) {\n if (reader.isEndGroup()) {\n break;\n }\n var field = reader.getFieldNumber();\n switch (field) {\n case 1:\n var value = /** @type {number} */reader.readInt64();\n msg.setId(value);\n break;\n case 2:\n var value = /** @type {string} */reader.readString();\n msg.addNfcIdList(value);\n break;\n case 3:\n var value = /** @type {string} */reader.readString();\n msg.setSn(value);\n break;\n default:\n reader.skipField();\n break;\n }\n }\n return msg;\n};\n\n/**\n * Serializes the message to binary data (in protobuf wire format).\n * @return {!Uint8Array}\n */\nproto.base.v1.ControlPointSimple.prototype.serializeBinary = function () {\n var writer = new jspb.BinaryWriter();\n proto.base.v1.ControlPointSimple.serializeBinaryToWriter(this, writer);\n return writer.getResultBuffer();\n};\n\n/**\n * Serializes the given message to binary data (in protobuf wire\n * format), writing to the given BinaryWriter.\n * @param {!proto.base.v1.ControlPointSimple} message\n * @param {!jspb.BinaryWriter} writer\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\nproto.base.v1.ControlPointSimple.serializeBinaryToWriter = function (message, writer) {\n var f = undefined;\n f = message.getId();\n if (f !== 0) {\n writer.writeInt64(1, f);\n }\n f = message.getNfcIdListList();\n if (f.length > 0) {\n writer.writeRepeatedString(2, f);\n }\n f = message.getSn();\n if (f.length > 0) {\n writer.writeString(3, f);\n }\n};\n\n/**\n * optional int64 id = 1;\n * @return {number}\n */\nproto.base.v1.ControlPointSimple.prototype.getId = function () {\n return (/** @type {number} */jspb.Message.getFieldWithDefault(this, 1, 0)\n );\n};\n\n/**\n * @param {number} value\n * @return {!proto.base.v1.ControlPointSimple} returns this\n */\nproto.base.v1.ControlPointSimple.prototype.setId = function (value) {\n return jspb.Message.setProto3IntField(this, 1, value);\n};\n\n/**\n * repeated string nfc_id_list = 2;\n * @return {!Array<string>}\n */\nproto.base.v1.ControlPointSimple.prototype.getNfcIdListList = function () {\n return (/** @type {!Array<string>} */jspb.Message.getRepeatedField(this, 2)\n );\n};\n\n/**\n * @param {!Array<string>} value\n * @return {!proto.base.v1.ControlPointSimple} returns this\n */\nproto.base.v1.ControlPointSimple.prototype.setNfcIdListList = function (value) {\n return jspb.Message.setField(this, 2, value || []);\n};\n\n/**\n * @param {string} value\n * @param {number=} opt_index\n * @return {!proto.base.v1.ControlPointSimple} returns this\n */\nproto.base.v1.ControlPointSimple.prototype.addNfcIdList = function (value, opt_index) {\n return jspb.Message.addToRepeatedField(this, 2, value, opt_index);\n};\n\n/**\n * Clears the list making it empty but non-null.\n * @return {!proto.base.v1.ControlPointSimple} returns this\n */\nproto.base.v1.ControlPointSimple.prototype.clearNfcIdListList = function () {\n return this.setNfcIdListList([]);\n};\n\n/**\n * optional string sn = 3;\n * @return {string}\n */\nproto.base.v1.ControlPointSimple.prototype.getSn = function () {\n return (/** @type {string} */jspb.Message.getFieldWithDefault(this, 3, \"\")\n );\n};\n\n/**\n * @param {string} value\n * @return {!proto.base.v1.ControlPointSimple} returns this\n */\nproto.base.v1.ControlPointSimple.prototype.setSn = function (value) {\n return jspb.Message.setProto3StringField(this, 3, value);\n};\n\n/**\n * @enum {number}\n */\nproto.base.v1.ErrorCode = {\n OK: 0,\n TOKENEXPIRE: 1000,\n USERBAN: 1001,\n VFCODEEXPIRE: 1002,\n SMSSENDFAIL: 1003,\n USERSTATUSERR: 1008,\n STATUSERR: 1009,\n PHONENOTEXIST: 2001,\n UNKNOWNERR: 2002,\n PARAMERR: 5000,\n HEADSOURCEERR: 5001,\n DATABASE: 9000,\n NORECORD: 9001\n};\n\n/**\n * @enum {number}\n */\nproto.base.v1.ShopType = {\n UNKNOWSHOP: 0,\n PARKSHOP: 1,\n IPSHOP: 2,\n ADMINSHOP: 3\n};\n\n/**\n * @enum {number}\n */\nproto.base.v1.UserType = {\n UNDEFINE: 0,\n APPUSER: 1,\n PARKADMIN: 2,\n IPADMIN: 3,\n SYSADMIN: 4\n};\n\n/**\n * @enum {number}\n */\nproto.base.v1.LoginSource = {\n UNDEF: 0,\n USERAPP: 1,\n WEBADMIN: 2,\n SHOPAPP: 3\n};\n\n/**\n * @enum {number}\n */\nproto.base.v1.SmsType = {\n UNKNOW: 0,\n LOGIN: 1,\n SIGNUP: 2\n};\n\n/**\n * @enum {number}\n */\nproto.base.v1.ProjectContentType = {\n TEXT: 0,\n HTML: 1\n};\n\n/**\n * @enum {number}\n */\nproto.base.v1.CriterionType = {\n CRUNKNOW: 0,\n CRORDER: 1,\n CRNUM: 2\n};\n\n/**\n * @enum {number}\n */\nproto.base.v1.CType = {\n UNKNOWTYPE: 0,\n BEGINTYPE: 1,\n MIDDLETYPE: 2,\n ENDTYPE: 3\n};\n\n/**\n * @enum {number}\n */\nproto.base.v1.StatusType = {\n UNKNOWSTATUS: 0,\n NORMALSTATUS: 1,\n DISABLEDSTATUS: 8,\n DELETESTATUS: 9\n};\n\n/**\n * @enum {number}\n */\nproto.base.v1.HrBandType = {\n UNKNOWHRBAND: 0,\n USEHRBAND: 1,\n NOTUSEHRBAND: 2\n};\ngoog.object.extend(exports, proto.base.v1);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInVuaS1hcHA6Ly8vZ3JwYy9iYXNlX3BiLmpzIl0sIm5hbWVzIjpbImpzcGIiLCJyZXF1aXJlIiwiZ29vZyIsImdsb2JhbCIsIndpbmRvdyIsInNlbGYiLCJGdW5jdGlvbiIsImNhbGwiLCJnb29nbGVfcHJvdG9idWZfdGltZXN0YW1wX3BiIiwib2JqZWN0IiwiZXh0ZW5kIiwicHJvdG8iLCJleHBvcnRTeW1ib2wiLCJiYXNlIiwidjEiLCJOZXRJbWFnZSIsIm9wdF9kYXRhIiwiTWVzc2FnZSIsImluaXRpYWxpemUiLCJpbmhlcml0cyIsIkRFQlVHIiwiQ09NUElMRUQiLCJkaXNwbGF5TmFtZSIsIlVzZXIiLCJHYW1lR3BzSW5mbyIsIkhlYXJ0UmF0ZSIsIlNpZ25JblJlcGx5IiwiTWFwUm91dGUiLCJCYXNlTWFwSW5mbyIsIlJlZ2lvbiIsIlNob3BMaXN0IiwiQ29udHJvbEluZm9MaXN0IiwiRGVmYXVsdFJlcGx5IiwiSWRSZXF1ZXN0IiwiRGVmYXVsdFJlcXVlc3QiLCJQb3NpdGlvbiIsIkNvbnRyb2xQb2ludEluZm8iLCJJbWFnZSIsIlN0YXR1c0VkaXRSZXF1ZXN0IiwiQ291cnNlSW5mbyIsInJlcGVhdGVkRmllbGRzXyIsIkNvbnRyb2xQb2ludCIsIkNvbnRyb2xQb2ludFNpbXBsZSIsIkdFTkVSQVRFX1RPX09CSkVDVCIsInByb3RvdHlwZSIsInRvT2JqZWN0Iiwib3B0X2luY2x1ZGVJbnN0YW5jZSIsImluY2x1ZGVJbnN0YW5jZSIsIm1zZyIsImYiLCJvYmoiLCJ1cmwiLCJnZXRGaWVsZFdpdGhEZWZhdWx0IiwibWQ1IiwiZ2V0TWQ1X2FzQjY0IiwiJGpzcGJNZXNzYWdlSW5zdGFuY2UiLCJkZXNlcmlhbGl6ZUJpbmFyeSIsImJ5dGVzIiwicmVhZGVyIiwiQmluYXJ5UmVhZGVyIiwiZGVzZXJpYWxpemVCaW5hcnlGcm9tUmVhZGVyIiwibmV4dEZpZWxkIiwiaXNFbmRHcm91cCIsImZpZWxkIiwiZ2V0RmllbGROdW1iZXIiLCJ2YWx1ZSIsInJlYWRTdHJpbmciLCJzZXRVcmwiLCJyZWFkQnl0ZXMiLCJzZXRNZDUiLCJza2lwRmllbGQiLCJzZXJpYWxpemVCaW5hcnkiLCJ3cml0ZXIiLCJCaW5hcnlXcml0ZXIiLCJzZXJpYWxpemVCaW5hcnlUb1dyaXRlciIsImdldFJlc3VsdEJ1ZmZlciIsIm1lc3NhZ2UiLCJ1bmRlZmluZWQiLCJnZXRVcmwiLCJsZW5ndGgiLCJ3cml0ZVN0cmluZyIsImdldE1kNV9hc1U4Iiwid3JpdGVCeXRlcyIsInNldFByb3RvM1N0cmluZ0ZpZWxkIiwiZ2V0TWQ1IiwiYnl0ZXNBc0I2NCIsImJ5dGVzQXNVOCIsInNldFByb3RvM0J5dGVzRmllbGQiLCJTZXgiLCJVTkRFRklORSIsIk1BTEUiLCJGRU1BTEUiLCJncHN0aW1lIiwiZ2V0R3BzdGltZSIsIlRpbWVzdGFtcCIsImxvbmdpdHVkZSIsImdldEZsb2F0aW5nUG9pbnRGaWVsZFdpdGhEZWZhdWx0IiwibGF0aXR1ZGUiLCJkaXJlY3Rpb25yYWRpYW4iLCJyZWFkTWVzc2FnZSIsInNldEdwc3RpbWUiLCJyZWFkRG91YmxlIiwic2V0TG9uZ2l0dWRlIiwic2V0TGF0aXR1ZGUiLCJzZXREaXJlY3Rpb25yYWRpYW4iLCJ3cml0ZU1lc3NhZ2UiLCJnZXRMb25naXR1ZGUiLCJ3cml0ZURvdWJsZSIsImdldExhdGl0dWRlIiwiZ2V0RGlyZWN0aW9ucmFkaWFuIiwiZ2V0V3JhcHBlckZpZWxkIiwic2V0V3JhcHBlckZpZWxkIiwiY2xlYXJHcHN0aW1lIiwiaGFzR3BzdGltZSIsImdldEZpZWxkIiwic2V0UHJvdG8zRmxvYXRGaWVsZCIsInRpbWVzdGFtcG1zIiwiaHIiLCJyZWFkSW50NjQiLCJzZXRUaW1lc3RhbXBtcyIsInJlYWRJbnQzMiIsInNldEhyIiwiZ2V0VGltZXN0YW1wbXMiLCJ3cml0ZUludDY0IiwiZ2V0SHIiLCJ3cml0ZUludDMyIiwic2V0UHJvdG8zSW50RmllbGQiLCJ0b2tlbiIsInNldFRva2VuIiwiZ2V0VG9rZW4iLCJpZCIsIm5hbWUiLCJpbWFnZSIsImdldEltYWdlIiwiaXNuZmMiLCJnZXRCb29sZWFuRmllbGRXaXRoRGVmYXVsdCIsInNldElkIiwic2V0TmFtZSIsInNldEltYWdlIiwicmVhZEJvb2wiLCJzZXRJc25mYyIsImdldElkIiwiZ2V0TmFtZSIsImdldElzbmZjIiwid3JpdGVCb29sIiwiY2xlYXJJbWFnZSIsImhhc0ltYWdlIiwic2V0UHJvdG8zQm9vbGVhbkZpZWxkIiwic2hvcGlkIiwibWFwbmFtZSIsInppcGltYWdlIiwiZ2V0WmlwaW1hZ2UiLCJzZXRTaG9waWQiLCJzZXRNYXBuYW1lIiwic2V0WmlwaW1hZ2UiLCJnZXRTaG9waWQiLCJnZXRNYXBuYW1lIiwiY2xlYXJaaXBpbWFnZSIsImhhc1ppcGltYWdlIiwiY29kZSIsInNldENvZGUiLCJnZXRDb2RlIiwiY2lpZCIsImNpY29kZSIsInNldENpaWQiLCJzZXRDaWNvZGUiLCJnZXRDaWlkIiwiZ2V0Q2ljb2RlIiwiY29udGVudCIsInNldENvbnRlbnQiLCJnZXRDb250ZW50IiwiZXh0IiwiZGF0YSIsImdldERhdGFfYXNCNjQiLCJzZXRFeHQiLCJzZXREYXRhIiwiZ2V0RXh0IiwiZ2V0RGF0YV9hc1U4IiwiZ2V0RGF0YSIsInN0YXR1cyIsInJlYWRFbnVtIiwic2V0U3RhdHVzIiwiZ2V0U3RhdHVzIiwid3JpdGVFbnVtIiwic2V0UHJvdG8zRW51bUZpZWxkIiwidG90YWxjb250cm9sbnVtIiwibWF4cmFuZ2UiLCJjb250cm9sUG9pbnRTb3J0ZWRMaXN0TGlzdCIsInRvT2JqZWN0TGlzdCIsImdldENvbnRyb2xQb2ludFNvcnRlZExpc3RMaXN0Iiwic2V0VG90YWxjb250cm9sbnVtIiwic2V0TWF4cmFuZ2UiLCJhZGRDb250cm9sUG9pbnRTb3J0ZWRMaXN0IiwiZ2V0VG90YWxjb250cm9sbnVtIiwiZ2V0TWF4cmFuZ2UiLCJ3cml0ZVJlcGVhdGVkTWVzc2FnZSIsImdldFJlcGVhdGVkV3JhcHBlckZpZWxkIiwic2V0Q29udHJvbFBvaW50U29ydGVkTGlzdExpc3QiLCJzZXRSZXBlYXRlZFdyYXBwZXJGaWVsZCIsIm9wdF92YWx1ZSIsIm9wdF9pbmRleCIsImFkZFRvUmVwZWF0ZWRXcmFwcGVyRmllbGQiLCJjbGVhckNvbnRyb2xQb2ludFNvcnRlZExpc3RMaXN0IiwiaW5mbyIsImdldEluZm8iLCJuZmNJZExpc3RMaXN0IiwiZ2V0UmVwZWF0ZWRGaWVsZCIsIm9uTWFwWCIsIm9uTWFwWSIsInNuIiwiY2lwb3NpdGlvbiIsImdldENpcG9zaXRpb24iLCJtYXBwb3NpdGlvbiIsImdldE1hcHBvc2l0aW9uIiwiY2F0ZWdvcnkiLCJzZXRJbmZvIiwiYWRkTmZjSWRMaXN0Iiwic2V0T25NYXBYIiwic2V0T25NYXBZIiwic2V0U24iLCJzZXRDaXBvc2l0aW9uIiwic2V0TWFwcG9zaXRpb24iLCJzZXRDYXRlZ29yeSIsImdldE5mY0lkTGlzdExpc3QiLCJ3cml0ZVJlcGVhdGVkU3RyaW5nIiwiZ2V0T25NYXBYIiwiZ2V0T25NYXBZIiwiZ2V0U24iLCJnZXRDYXRlZ29yeSIsImNsZWFySW5mbyIsImhhc0luZm8iLCJzZXROZmNJZExpc3RMaXN0Iiwic2V0RmllbGQiLCJhZGRUb1JlcGVhdGVkRmllbGQiLCJjbGVhck5mY0lkTGlzdExpc3QiLCJjbGVhckNpcG9zaXRpb24iLCJoYXNDaXBvc2l0aW9uIiwiY2xlYXJNYXBwb3NpdGlvbiIsImhhc01hcHBvc2l0aW9uIiwiRXJyb3JDb2RlIiwiT0siLCJUT0tFTkVYUElSRSIsIlVTRVJCQU4iLCJWRkNPREVFWFBJUkUiLCJTTVNTRU5ERkFJTCIsIlVTRVJTVEFUVVNFUlIiLCJTVEFUVVNFUlIiLCJQSE9ORU5PVEVYSVNUIiwiVU5LTk9XTkVSUiIsIlBBUkFNRVJSIiwiSEVBRFNPVVJDRUVSUiIsIkRBVEFCQVNFIiwiTk9SRUNPUkQiLCJTaG9wVHlwZSIsIlVOS05PV1NIT1AiLCJQQVJLU0hPUCIsIklQU0hPUCIsIkFETUlOU0hPUCIsIlVzZXJUeXBlIiwiQVBQVVNFUiIsIlBBUktBRE1JTiIsIklQQURNSU4iLCJTWVNBRE1JTiIsIkxvZ2luU291cmNlIiwiVU5ERUYiLCJVU0VSQVBQIiwiV0VCQURNSU4iLCJTSE9QQVBQIiwiU21zVHlwZSIsIlVOS05PVyIsIkxPR0lOIiwiU0lHTlVQIiwiUHJvamVjdENvbnRlbnRUeXBlIiwiVEVYVCIsIkhUTUwiLCJDcml0ZXJpb25UeXBlIiwiQ1JVTktOT1ciLCJDUk9SREVSIiwiQ1JOVU0iLCJDVHlwZSIsIlVOS05PV1RZUEUiLCJCRUdJTlRZUEUiLCJNSURETEVUWVBFIiwiRU5EVFlQRSIsIlN0YXR1c1R5cGUiLCJVTktOT1dTVEFUVVMiLCJOT1JNQUxTVEFUVVMiLCJESVNBQkxFRFNUQVRVUyIsIkRFTEVURVNUQVRVUyIsIkhyQmFuZFR5cGUiLCJVTktOT1dIUkJBTkQiLCJVU0VIUkJBTkQiLCJOT1RVU0VIUkJBTkQiLCJleHBvcnRzIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsSUFBSUEsSUFBSSxHQUFHQyxtQkFBTyxDQUFDLHlCQUFpQixDQUFDO0FBQ3JDLElBQUlDLElBQUksR0FBR0YsSUFBSTtBQUNmLElBQUlHLE1BQU0sR0FBSSxZQUFXO0VBQUUsT0FBTyxJQUFJLElBQUlDLE1BQU0sSUFBSUQsTUFBTSxJQUFJRSxJQUFJLElBQUlDLFFBQVEsQ0FBQyxhQUFhLENBQUMsRUFBRTtBQUFFLENBQUMsQ0FBRUMsSUFBSSxDQUFDLElBQUksQ0FBQztBQUU5RyxJQUFJQyw0QkFBNEIsR0FBR1AsbUJBQU8sQ0FBQyx5REFBaUQsQ0FBQztBQUM3RkMsSUFBSSxDQUFDTyxNQUFNLENBQUNDLE1BQU0sQ0FBQ0MsS0FBSyxFQUFFSCw0QkFBNEIsQ0FBQztBQUN2RE4sSUFBSSxDQUFDVSxZQUFZLENBQUMsMkJBQTJCLEVBQUUsSUFBSSxFQUFFVCxNQUFNLENBQUM7QUFDNURELElBQUksQ0FBQ1UsWUFBWSxDQUFDLHFCQUFxQixFQUFFLElBQUksRUFBRVQsTUFBTSxDQUFDO0FBQ3RERCxJQUFJLENBQUNVLFlBQVksQ0FBQywr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NUJDLFFBQVEsRUFBRSxDQUFDO0VBQ1hDLE9BQU8sRUFBRSxDQUFDO0VBQ1ZDLEtBQUssRUFBRTtBQUNULENBQUM7O0FBRUQ7QUFDQTtBQUNBO0FBQ0EzUSxLQUFLLENBQUNFLElBQUksQ0FBQ0MsRUFBRSxDQUFDeVEsS0FBSyxHQUFHO0VBQ3BCQyxVQUFVLEVBQUUsQ0FBQztFQUNiQyxTQUFTLEVBQUUsQ0FBQztFQUNaQyxVQUFVLEVBQUUsQ0FBQztFQUNiQyxPQUFPLEVBQUU7QUFDWCxDQUFDOztBQUVEO0FBQ0E7QUFDQTtBQUNBaFIsS0FBSyxDQUFDRSxJQUFJLENBQUNDLEVBQUUsQ0FBQzhRLFVBQVUsR0FBRztFQUN6QkMsWUFBWSxFQUFFLENBQUM7RUFDZkMsWUFBWSxFQUFFLENBQUM7RUFDZkMsY0FBYyxFQUFFLENBQUM7RUFDakJDLFlBQVksRUFBRTtBQUNoQixDQUFDOztBQUVEO0FBQ0E7QUFDQTtBQUNBclIsS0FBSyxDQUFDRSxJQUFJLENBQUNDLEVBQUUsQ0FBQ21SLFVBQVUsR0FBRztFQUN6QkMsWUFBWSxFQUFFLENBQUM7RUFDZkMsU0FBUyxFQUFFLENBQUM7RUFDWkMsWUFBWSxFQUFFO0FBQ2hCLENBQUM7QUFFRGxTLElBQUksQ0FBQ08sTUFBTSxDQUFDQyxNQUFNLENBQUMyUixPQUFPLEVBQUUxUixLQUFLLENBQUNFLElBQUksQ0FBQ0MsRUFBRSxDQUFDIiwiZmlsZSI6IjM4LmpzIiwic291cmNlc0NvbnRlbnQiOlsiLy8gc291cmNlOiBiYXNlLnByb3RvXG4vKipcbiAqIEBmaWxlb3ZlcnZpZXdcbiAqIEBlbmhhbmNlYWJsZVxuICogQHN1cHByZXNzIHttaXNzaW5nUmVxdWlyZX0gcmVwb3J0cyBlcnJvciBvbiBpbXBsaWNpdCB0eXBlIHVzYWdlcy5cbiAqIEBzdXBwcmVzcyB7bWVzc2FnZUNvbnZlbnRpb25zfSBKUyBDb21waWxlciByZXBvcnRzIGFuIGVycm9yIGlmIGEgdmFyaWFibGUgb3JcbiAqICAgICBmaWVsZCBzdGFydHMgd2l0aCAnTVNHXycgYW5kIGlzbid0IGEgdHJhbnNsYXRhYmxlIG1lc3NhZ2UuXG4gKiBAcHVibGljXG4gKi9cbi8vIEdFTkVSQVRFRCBDT0RFIC0tIERPIE5PVCBFRElUIVxuLyogZXNsaW50LWRpc2FibGUgKi9cbi8vIEB0cy1ub2NoZWNrXG5cbnZhciBqc3BiID0gcmVxdWlyZSgnZ29vZ2xlLXByb3RvYnVmJyk7XG52YXIgZ29vZyA9IGpzcGI7XG52YXIgZ2xvYmFsID0gKGZ1bmN0aW9uKCkgeyByZXR1cm4gdGhpcyB8fCB3aW5kb3cgfHwgZ2xvYmFsIHx8IHNlbGYgfHwgRnVuY3Rpb24oJ3JldHVybiB0aGlzJykoKTsgfSkuY2FsbChudWxsKTtcblxudmFyIGdvb2dsZV9wcm90b2J1Zl90aW1lc3RhbXBfcGIgPSByZXF1aXJlKCdnb29nbGUtcHJvdG9idWYvZ29vZ2xlL3Byb3RvYnVmL3RpbWVzdGFtcF9wYi5qcycpO1xuZ29vZy5vYmplY3QuZXh0ZW5kKHByb3RvLCBnb29nbGVfcHJvdG9idWZfdGltZXN0YW1wX3BiKTtcbmdvb2cuZXhwb3J0U3ltYm9sKCdwcm90by5iYXNlLnYxLkJhc2VNYXBJbmZvJywgbnVsbCwgZ2xvYmFsKTtcbmdvb2cuZXhwb3J0U3ltYm9sKCdwcm90by5iYXNlLnYxLkNUeXBlJywgbnVsbCwgZ2xvYmFsKTtcbmdvb2cuZXhwb3J0U3ltYm9sKCdwcm90by5iYXNlLnYxLkNvbnRyb2xJbmZvTGlzdCcsIG51bGwsIGdsb2JhbCk7XG5nb29nLmV4cG9ydFN5bWJvbCgncHJvdG8uYmFzZS52MS5Db250cm9sUG9pbnQnLCBudWxsLCBnbG9iYWwpO1xuZ29vZy5leHBvcnRTeW1ib2woJ3Byb3RvLmJhc2UudjEuQ29udHJvbFBvaW50SW5mbycsIG51bGwsIGdsb2JhbCk7XG5nb29nLmV4cG9ydFN5bWJvbCgncHJvdG8uYmFzZS52MS5Db250cm9sUG9pbnRTaW1wbGUnLCBudWxsLCBnbG9iYWwpO1xuZ29vZy5leHBvcnRTeW1ib2woJ3Byb3RvLmJhc2UudjEuQ291cnNlSW5mbycsIG51bGwsIGdsb2JhbCk7XG5nb29nLmV4cG9ydFN5bWJvbCgncHJvdG8uYmFzZS52MS5Dcml0ZXJpb25UeXBlJywgbnVsbCwgZ2xvYmFsKTtcbmdvb2cuZXhwb3J0U3ltYm9sKCdwcm90by5iYXNlLnYxLkRlZmF1bHRSZXBseScsIG51bGwsIGdsb2JhbCk7XG5nb29nLmV4cG9ydFN5bWJvbCgncHJvdG8uYmFzZS52MS5EZWZhdWx0UmVxdWVzdCcsIG51bGwsIGdsb2JhbCk7XG5nb29nLmV4cG9ydFN5bWJvbCgncHJvdG8uYmFzZS52MS5FcnJvckNvZGUnLCBudWxsLCBnbG9iYWwpO1xuZ29vZy5leHBvcnRTeW1ib2woJ3Byb3RvLmJhc2UudjEuR2FtZUdwc0luZm8nLCBudWxsLCBnbG9iYWwpO1xuZ29vZy5leHBvcnRTeW1ib2woJ3Byb3RvLmJhc2UudjEuSGVhcnRSYXRlJywgbnVsbCwgZ2xvYmFsKTtcbmdvb2cuZXhwb3J0U3ltYm9sKCdwcm90by5iYXNlLnYxLkhyQmFuZFR5cGUnLCBudWxsLCBnbG9iYWwpO1xuZ29vZy5leHBvcnRTeW1ib2woJ3Byb3RvLmJhc2UudjEuSWRSZXF1ZXN0JywgbnVsbCwgZ2xvYmFsKTtcbmdvb2cuZXhwb3J0U3ltYm9sKCdwcm90by5iYXNlLnYxLkltYWdlJywgbnVsbCwgZ2xvYmFsKTtcbmdvb2cuZXhwb3J0U3ltYm9sKCdwcm90by5iYXNlLnYxLkxvZ2luU291cmNlJywgbnVsbCwgZ2xvYmFsKTtcbmdvb2cuZXhwb3J0U3ltYm9sKCdwcm90by5iYXNlLnYxLk1hcFJvdXRlJywgbnVsbCwgZ2xvYmFsKTtcbmdvb2cuZXhwb3J0U3ltYm9sKCdwcm90by5iYXNlLnYxLk5ldEltYWdlJywgbnVsbCwgZ2xvYmFsKTtcbmdvb2cuZXhwb3J0U3ltYm9sKCdwcm90by5iYXNlLnYxLlBvc2l0aW9uJywgbnVsbCwgZ2xvYmFsKTtcbmdvb2cuZXhwb3J0U3ltYm9sKCdwcm90by5iYXNlLnYxLlByb2plY3RDb250ZW50VHlwZScsIG51bGwsIGdsb2JhbCk7XG5nb29nLmV4cG9ydFN5bWJvbCgncHJvdG8uYmFzZS52MS5SZWdpb24nLCBudWxsLCBnbG9iYWwpO1xuZ29vZy5leHBvcnRTeW1ib2woJ3Byb3RvLmJhc2UudjEuU2hvcExpc3QnLCBudWxsLCBnbG9iYWwpO1xuZ29vZy5leHBvcnRTeW1ib2woJ3Byb3RvLmJhc2UudjEuU2hvcFR5cGUnLCBudWxsLCBnbG9iYWwpO1xuZ29vZy5leHBvcnRTeW1ib2woJ3Byb3RvLmJhc2UudjEuU2lnbkluUmVwbHknLCBudWxsLCBnbG9iYWwpO1xuZ29vZy5leHBvcnRTeW1ib2woJ3Byb3RvLmJhc2UudjEuU21zVHlwZScsIG51bGwsIGdsb2JhbCk7XG5nb29nLmV4cG9ydFN5bWJvbCgncHJvdG8uYmFzZS52MS5TdGF0dXNFZGl0UmVxdWVzdCcsIG51bGwsIGdsb2JhbCk7XG5nb29nLmV4cG9ydFN5bWJvbCgncHJvdG8uYmFzZS52MS5TdGF0dXNUeXBlJywgbnVsbCwgZ2xvYmFsKTtcbmdvb2cuZXhwb3J0U3ltYm9sKCdwcm90by5iYXNlLnYxLlVzZXInLCBudWxsLCBnbG9iYWwpO1xuZ29vZy5leHBvcnRTeW1ib2woJ3Byb3RvLmJhc2UudjEuVXNlci5TZXgnLCBudWxsLCBnbG9iYWwpO1xuZ29vZy5leHBvcnRTeW1ib2woJ3Byb3RvLmJhc2UudjEuVXNlclR5cGUnLCBudWxsLCBnbG9iYWwpO1xuLyoqXG4gKiBHZW5lcmF0ZWQgYnkgSnNQYkNvZGVHZW5lcmF0b3IuXG4gKiBAcGFyYW0ge0FycmF5PX0gb3B0X2RhdGEgT3B0aW9uYWwgaW5pdGlhbCBkYXRhIGFycmF5LCB0eXBpY2FsbHkgZnJvbSBhXG4gKiBzZXJ2ZXIgcmVzcG9uc2UsIG9yIGNvbnN0cnVjdGVkIGRpcmVjdGx5IGluIEphdmFzY3JpcHQuIFRoZSBhcnJheSBpcyB1c2VkXG4gKiBpbiBwbGFjZSBhbmQgYmVjb21lcyBwYXJ0IG9mIHRoZSBjb25zdHJ1Y3RlZCBvYmplY3QuIEl0IGlzIG5vdCBjbG9uZWQuXG4gKiBJZiBubyBkYXRhIGlzIHByb3ZpZGVkLCB0aGUgY29uc3RydWN0ZWQgb2JqZWN0IHdpbGwgYmUgZW1wdHksIGJ1dCBzdGlsbFxuICogdmFsaWQuXG4gKiBAZXh0ZW5kcyB7anNwYi5NZXNzYWdlfVxuICogQGNvbnN0cnVjdG9yXG4gKi9cbnByb3RvLmJhc2UudjEuTmV0SW1hZ2UgPSBmdW5jdGlvbihvcHRfZGF0YSkge1xuICBqc3BiLk1lc3NhZ2UuaW5pdGlhbGl6ZSh0aGlzLCBvcHRfZGF0YSwgMCwgLTEsIG51bGwsIG51bGwpO1xufTtcbmdvb2cuaW5oZXJpdHMocHJvdG8uYmFzZS52MS5OZXRJbWFnZSwganNwYi5NZXNzYWdlKTtcbmlmIChnb29nLkRFQlVHICYmICFDT01QSUxFRCkge1xuICAvKipcbiAgICogQHB1YmxpY1xuICAgKiBAb3ZlcnJpZGVcbiAgICovXG4gIHByb3RvLmJhc2UudjEuTmV0SW1hZ2UuZGlzcGxheU5hbWUgPSAncHJvdG8uYmFzZS52MS5OZXRJbWFnZSc7XG59XG4vKipcbiAqIEdlbmVyYXRlZCBieSBKc1BiQ29kZUdlbmVyYXRvci5cbiAqIEBwYXJhbSB7QXJyYXk9fSBvcHRfZGF0YSBPcHRpb25hbCBpbml0aWFsIGRhdGEgYXJyYXksIHR5cGljYWxseSBmcm9tIGFcbiAqIHNlcnZlciByZXNwb25zZSwgb3IgY29uc3RydWN0ZWQgZGlyZWN0bHkgaW4gSmF2YXNjcmlwdC4gVGhlIGFycmF5IGlzIHVzZWRcbiAqIGluIHBsYWNlIGFuZCBiZWNvbWVzIHBhcnQgb2YgdGhlIGNvbnN0cnVjdGVkIG9iamVjdC4gSXQgaXMgbm90IGNsb25lZC5cbiAqIElmIG5vIGRhdGEgaXMgcHJvdmlkZWQsIHRoZSBjb25zdHJ1Y3RlZCBvYmplY3Qgd2lsbCBiZSBlbXB0eSwgYnV0IHN0aWxsXG4gKiB2YWxpZC5cbiAqIEBleHRlbmRzIHtqc3BiLk1lc3NhZ2V9XG4gKiBAY29uc3RydWN0b3JcbiAqL1xucHJvdG8uYmFzZS52MS5Vc2VyID0gZnVuY3Rpb24ob3B0X2RhdGEpIHtcbiAganNwYi5NZXNzYWdlLmluaXRpYWxpemUodGhpcywgb3B0X2RhdGEsIDAsIC0xLCBudWxsLCBudWxsKTtcbn07XG5nb29nLmluaGVyaXRzKHByb3RvLmJhc2UudjEuVXNlciwganNwYi5NZXNzYWdlKTtcbmlmIChnb29nLkRFQlVHICYmICFDT01QSUxFRCkge1xuICAvKipcbiAgICogQHB1YmxpY1xuICAgKiBAb3ZlcnJpZGVcbiAgICovXG4gIHByb3RvLmJhc2UudjEuVXNlci5kaXNwbGF5TmFtZSA9ICdwcm90by5iYXNlLnYxLlVzZXInO1xufVxuLyoqXG4gKiBHZW5lcmF0ZWQgYnkgSnNQYkNvZGVHZW5lcmF0b3IuXG4gKiBAcGFyYW0ge0FycmF5PX0gb3B0X2RhdGEgT3B0aW9uYWwgaW5pdGlhbCBkYXRhIGFycmF5LCB0eXBpY2FsbHkgZnJvbSBhXG4gKiBzZXJ2ZXIgcmVzcG9uc2UsIG9yIGNvbnN0cnVjdGVkIGRpcmVjdGx5IGluIEphdmFzY3JpcHQuIFRoZSBhcnJheSBpcyB1c2VkXG4gKiBpbiBwbGFjZSBhbmQgYmVjb21lcyBwYXJ0IG9mIHRoZSBjb25zdHJ1Y3RlZCBvYmplY3QuIEl0IGlzIG5vdCBjbG9uZWQuXG4gKiBJZiBubyBkYXRhIGlzIHByb3ZpZGVkLCB0aGUgY29uc3RydWN0ZWQgb2JqZWN0IHdpbGwgYmUgZW1wdHksIGJ1dCBzdGlsbFxuICogdmFsaWQuXG4gKiBAZXh0ZW5kcyB7anNwYi5NZXNzYWdlfVxuICogQGNvbnN0cnVjdG9yXG4gKi9cbnByb3RvLmJhc2UudjEuR2FtZUdwc0luZm8gPSBmdW5jdGlvbihvcHRfZGF0YSkge1xuICBqc3BiLk1lc3NhZ2UuaW5pdGlhbGl6ZSh0aGlzLCBvcHRfZGF0YSwgMCwgLTEsIG51bGwsIG51bGwpO1xufTtcbmdvb2cuaW5oZXJpdHMocHJvdG8uYmFzZS52MS5HYW1lR3BzSW5mbywganNwYi5NZXNzYWdlKTtcbmlmIChnb29nLkRFQlVHICYmICFDT01QSUxFRCkge1xuICAvKipcbiAgICogQHB1YmxpY1xuICAgKiBAb3ZlcnJpZGVcbiAgICovXG4gIHByb3RvLmJhc2UudjEuR2FtZUdwc0luZm8uZGlzcGxheU5hbWUgPSAncHJvdG8uYmFzZS52MS5HYW1lR3BzSW5mbyc7XG59XG4vKipcbiAqIEdlbmVyYXRlZCBieSBKc1BiQ29kZUdlbmVyYXRvci5cbiAqIEBwYXJhbSB7QXJyYXk9fSBvcHRfZGF0YSBPcHRpb25hbCBpbml0aWFsIGRhdGEgYXJyYXksIHR5cGljYWxseSBmcm9tIGFcbiAqIHNlcnZlciByZXNwb25zZSwgb3IgY29uc3RydWN0ZWQgZGlyZWN0bHkgaW4gSmF2YXNjcmlwdC4gVGhlIGFycmF5IGlzIHVzZWRcbiAqIGluIHBsYWNlIGFuZCBiZWNvbWVzIHBhcnQgb2YgdGhlIGNvbnN0cnVjdGVkIG9iamVjdC4gSXQgaXMgbm90IGNsb25lZC5cbiAqIElmIG5vIGRhdGEgaXMgcHJvdmlkZWQsIHRoZSBjb25zdHJ1Y3RlZCBvYmplY3Qgd2lsbCBiZSBlbXB0eSwgYnV0IHN0aWxsXG4gKiB2YWxpZC5cbiAqIEBleHRlbmRzIHtqc3BiLk1lc3NhZ2V9XG4gKiBAY29uc3RydWN0b3JcbiAqL1xucHJvdG8uYmFzZS52MS5IZWFydFJhdGUgPSBmdW5jdGlvbihvcHRfZGF0YSkge1xuICBqc3BiLk1lc3NhZ2UuaW5pdGlhbGl6ZSh0aGlzLCBvcHRfZGF0YSwgMCwgLTEsIG51bGwsIG51bGwpO1xufTtcbmdvb2cuaW5oZXJpdHMocHJvdG8uYmFzZS52MS5IZWFydFJhdGUsIGpzcGIuTWVzc2FnZSk7XG5pZiAoZ29vZy5ERUJVRyAmJiAhQ09NUElMRUQpIHtcbiAgLyoqXG4gICAqIEBwdWJsaWNcbiAgICogQG92ZXJyaWRlXG4gICAqL1xuICBwcm90by5iYXNlLnYxLkhlYXJ0UmF0ZS5kaXNwbGF5TmFtZSA9ICdwcm90by5iYXNlLnYxLkhlYXJ0UmF0ZSc7XG59XG4vKipcbiAqIEdlbmVyYXRlZCBieSBKc1BiQ29kZUdlbmVyYXRvci5cbiAqIEBwYXJhbSB7QXJyYXk9fSBvcHRfZGF0YSBPcHRpb25hbCBpbml0aWFsIGRhdGEgYXJyYXksIHR5cGljYWxseSBmcm9tIGFcbiAqIHNlcnZlciByZXNwb25zZSwgb3IgY29uc3RydWN0ZWQgZGlyZWN0bHkgaW4gSmF2YXNjcmlwdC4gVGhlIGFycmF5IGlzIHVzZWRcbiAqIGluIHBsYWNlIGFuZCBiZWNvbWVzIHBhcnQgb2YgdGhlIGNvbnN0cnVjdGVkIG9iamVjdC4gSXQgaXMgbm90IGNsb25lZC5cbiAqIElmIG5vIGRhdGEgaXMgcHJvdmlkZWQsIHRoZSBjb25zdHJ1Y3RlZCBvYmplY3Qgd2lsbCBiZSBlbXB0eSwgYnV0IHN0aWxsXG4gKiB2YWxpZC5cbiAqIEBleHRlbmRzIHtqc3BiLk1lc3NhZ2V9XG4gKiBAY29uc3RydWN0b3JcbiAqL1xucHJvdG8uYmFzZS52MS5TaWduSW5SZXBseSA9IGZ1bmN0aW9uKG9wdF9kYXRhKSB7XG4gIGpzcGIuTWVzc2FnZS5pbml0aWFsaXplKHRoaXMsIG9wdF9kYXRhLCAwLCAtMSwgbnVsbCwgbnVsbCk7XG59O1xuZ29vZy5pbmhlcml0cyhwcm90by5iYXNlLnYxLlNpZ25JblJlcGx5LCBqc3BiLk1lc3NhZ2UpO1xuaWYgKGdvb2cuREVCVUcgJiYgIUNPTVBJTEVEKSB7XG4gIC8qKlxuICAgKiBAcHVibGljXG4gICAqIEBvdmVycmlkZVxuICAgKi9cbiAgcHJvdG8uYmFzZS52MS5TaWduSW5SZXBseS5kaXNwbGF5TmFtZSA9ICdwcm90by5iYXNlLnYxLlNpZ25JblJlcGx5Jztcbn1cbi8qKlxuICogR2VuZXJhdGVkIGJ5IEpzUGJDb2RlR2VuZXJhdG9yLlxuICogQHBhcmFtIHtBcnJheT19IG9wdF9kYXRhIE9wdGlvbmFsIGluaXRpYWwgZGF0YSBhcnJheSwgdHlwaWNhbGx5IGZyb20gYVxuICogc2VydmVyIHJlc3BvbnNlLCBvciBjb25zdHJ1Y3RlZCBkaXJlY3RseSBpbiBKYXZhc2NyaXB0LiBUaGUgYXJyYXkgaXMgdXNlZFxuICogaW4gcGxhY2UgYW5kIGJlY29tZXMgcGFydCBvZiB0aGUgY29uc3RydWN0ZWQgb2JqZWN0LiBJdCBpcyBub3QgY2xvbmVkLlxuICogSWYgbm8gZGF0YSBpcyBwcm92aWRlZCwgdGhlIGNvbnN0cnVjdGVkIG9iamVjdCB3aWxsIGJlIGVtcHR5LCBidXQgc3RpbGxcbiAqIHZhbGlkLlxuICogQGV4dGVuZHMge2pzcGIuTWVzc2FnZX1cbiAqIEBjb25zdHJ1Y3RvclxuICovXG5wcm90by5iYXNlLnYxLk1hcFJvdXRlID0gZnVuY3Rpb24ob3B0X2RhdGEpIHtcbiAganNwYi5NZXNzYWdlLmluaXRpYWxpemUodGhpcywgb3B0X2RhdGEsIDAsIC0xLCBudWxsLCBudWxsKTtcbn07XG5nb29nLmluaGVyaXRzKHByb3RvLmJhc2UudjEuTWFwUm91dGUsIGpzcGIuTWVzc2FnZSk7XG5pZiAoZ29vZy5ERUJVRyAmJiAhQ09NUElMRUQpIHtcbiAgLyoqXG4gICAqIEBwdWJsaWNcbiAgICogQG92ZXJyaWRlXG4gICAqL1xuICBwcm90by5iYXNlLnYxLk1hcFJvdXRlLmRpc3BsYXlOYW1lID0gJ3Byb3RvLmJhc2UudjEuTWFwUm91dGUnO1xufVxuLyoqXG4gKiBHZW5lcmF0ZWQgYnkgSnNQYkNvZGVHZW5lcmF0b3IuXG4gKiBAcGFyYW0ge0FycmF5PX0gb3B0X2RhdGEgT3B0aW9uYWwgaW5pdGlhbCBkYXRhIGFycmF5LCB0eXBpY2FsbHkgZnJvbSBhXG4gKiBzZXJ2ZXIgcmVzcG9uc2UsIG9yIGNvbnN0cnVjdGVkIGRpcmVjdGx5IGluIEphdmFzY3JpcHQuIFRoZSBhcnJheSBpcyB1c2VkXG4gKiBpbiBwbGFjZSBhbmQgYmVjb21lcyBwYXJ0IG9mIHRoZSBjb25zdHJ1Y3RlZCBvYmplY3QuIEl0IGlzIG5vdCBjbG9uZWQuXG4gKiBJZiBubyBkYXRhIGlzIHByb3ZpZGVkLCB0aGUgY29uc3RydWN0ZWQgb2JqZWN0IHdpbGwgYmUgZW1wdHksIGJ1dCBzdGlsbFxuICogdmFsaWQuXG4gKiBAZXh0ZW5kcyB7anNwYi5NZXNzYWdlfVxuICogQGNvbnN0cnVjdG9yXG4gKi9cbnByb3RvLmJhc2UudjEuQmFzZU1hcEluZm8gPSBmdW5jdGlvbihvcHRfZGF0YSkge1xuICBqc3BiLk1lc3NhZ2UuaW5pdGlhbGl6ZSh0aGlzLCBvcHRfZGF0YSwgMCwgLTEsIG51bGwsIG51bGwpO1xufTtcbmdvb2cuaW5oZXJpdHMocHJvdG8uYmFzZS52MS5CYXNlTWFwSW5mbywganNwYi5NZXNzYWdlKTtcbmlmIChnb29nLkRFQlVHICYmICFDT01QSUxFRCkge1xuICAvKipcbiAgICogQHB1YmxpY1xuICAgKiBAb3ZlcnJpZGVcbiAgICovXG4gIHByb3RvLmJhc2UudjEuQmFzZU1hcEluZm8uZGlzcGxheU5hbWUgPSAncHJvdG8uYmFzZS52MS5CYXNlTWFwSW5mbyc7XG59XG4vKipcbiAqIEdlbmVyYXRlZCBieSBKc1BiQ29kZUdlbmVyYXRvci5cbiAqIEBwYXJhbSB7QXJyYXk9fSBvcHRfZGF0YSBPcHRpb25hbCBpbml0aWFsIGRhdGEgYXJyYXksIHR5cGljYWxseSBmcm9tIGFcbiAqIHNlcnZlciByZXNwb25zZSwgb3IgY29uc3RydWN0ZWQgZGlyZWN0bHkgaW4gSmF2YXNjcmlwdC4gVGhlIGFycmF5IGlzIHVzZWRcbiAqIGluIHBsYWNlIGFuZCBiZWNvbWVzIHBhcnQgb2YgdGhlIGNvbnN0cnVjdGVkIG9iamVjdC4gSXQgaXMgbm90IGNsb25lZC5cbiAqIElmIG5vIGRhdGEgaXMgcHJvdmlkZWQsIHRoZSBjb25zdHJ1Y3RlZCBvYmplY3Qgd2lsbCBiZSBlbXB0eSwgYnV0IHN0aWxsXG4gKiB2YWxpZC5cbiAqIEBleHRlbmRzIHtqc3BiLk1lc3NhZ2V9XG4gKiBAY29uc3RydWN0b3JcbiAqL1xucHJvdG8uYmFzZS52MS5SZWdpb24gPSBmdW5jdGlvbihvcHRfZGF0YSkge1xuICBqc3BiLk1lc3NhZ2UuaW5pdGlhbGl6ZSh0aGlzLCBvcHRfZGF0YSwgMCwgLTEsIG51bGwsIG51bGwpO1xufTtcbmdvb2cuaW5oZXJpdHMocHJvdG8uYmFzZS52MS5SZWdpb24sIGpzcGIuTWVzc2FnZSk7XG5pZiAoZ29vZy5ERUJVRyAmJiAhQ09NUElMRUQpIHtcbiAgLyoqXG4gICAqIEBwdWJsaWNcbiAgICogQG92ZXJyaWRlXG4gICAqL1xuICBwcm90by5iYXNlLnYxLlJlZ2lvbi5kaXNwbGF5TmFtZSA9ICdwcm90by5iYXNlLnYxLlJlZ2lvbic7XG59XG4vKipcbiAqIEdlbmVyYXRlZCBieSBKc1BiQ29kZUdlbmVyYXRvci5cbiAqIEBwYXJhbSB7QXJyYXk9fSBvcHRfZGF0YSBPcHRpb25hbCBpbml0aWFsIGRhdGEgYXJyYXksIHR5cGljYWxseSBmcm9tIGFcbiAqIHNlcnZlciByZXNwb25zZSwgb3IgY29uc3RydWN0ZWQgZGlyZWN0bHkgaW4gSmF2YXNjcmlwdC4gVGhlIGFycmF5IGlzIHVzZWRcbiAqIGluIHBsYWNlIGFuZCBiZWNvbWVzIHBhcnQgb2YgdGhlIGNvbnN0cnVjdGVkIG9iamVjdC4gSXQgaXMgbm90IGNsb25lZC5cbiAqIElmIG5vIGRhdGEgaXMgcHJvdmlkZWQsIHRoZSBjb25zdHJ1Y3RlZCBvYmplY3Qgd2lsbCBiZSBlbXB0eSwgYnV0IHN0aWxsXG4gKiB2YWxpZC5cbiAqIEBleHRlbmRzIHtqc3BiLk1lc3NhZ2V9XG4gKiBAY29uc3RydWN0b3JcbiAqL1xucHJvdG8uYmFzZS52MS5TaG9wTGlzdCA9IGZ1bmN0aW9uKG9wdF9kYXRhKSB7XG4gIGpzcGIuTWVzc2FnZS5pbml0aWFsaXplKHRoaXMsIG9wdF9kYXRhLCAwLCAtMSwgbnVsbCwgbnVsbCk7XG59O1xuZ29vZy5pbmhlcml0cyhwcm90by5iYXNlLnYxLlNob3BMaXN0LCBqc3BiLk1lc3NhZ2UpO1xuaWYgKGdvb2cuREVCVUcgJiYgIUNPTVBJTEVEKSB7XG4gIC8qKlxuICAgKiBAcHVibGljXG4gICAqIEBvdmVycmlkZVxuICAgKi9cbiAgcHJvdG8uYmFzZS52MS5TaG9wTGlzdC5kaXNwbGF5TmFtZSA9ICdwcm90by5iYXNlLnYxLlNob3BMaXN0Jztcbn1cbi8qKlxuICogR2VuZXJhdGVkIGJ5IEpzUGJDb2RlR2VuZXJhdG9yLlxuICogQHBhcmFtIHtBcnJheT19IG9wdF9kYXRhIE9wdGlvbmFsIGluaXRpYWwgZGF0YSBhcnJheSwgdHlwaWNhbGx5IGZyb20gYVxuICogc2VydmVyIHJlc3BvbnNlLCBvciBjb25zdHJ1Y3RlZCBkaXJlY3RseSBpbiBKYXZhc2NyaXB0LiBUaGUgYXJyYXkgaXMgdXNlZFxuICogaW4gcGxhY2UgYW5kIGJlY29tZXMgcGFydCBvZiB0aGUgY29uc3RydWN0ZWQgb2JqZWN0LiBJdCBpcyBub3QgY2xvbmVkLlxuICogSWYgbm8gZGF0YSBpcyBwcm92aWRlZCwgdGhlIGNvbnN0cnVjdGVkIG9iamVjdCB3aWxsIGJlIGVtcHR5LCBidXQgc3RpbGxcbiAqIHZhbGlkLlxuICogQGV4dGVuZHMge2pzcGIuTWVzc2FnZX1cbiAqIEBjb25zdHJ1Y3RvclxuICovXG5wcm90by5iYXNlLnYxLkNvbnRyb2xJbmZvTGlzdCA9IGZ1bmN0aW9uKG9wdF9kYXRhKSB7XG4gIGpzcGIuTWVzc2FnZS5pbml0aWFsaXplKHRoaXMsIG9wdF9kYXRhLCAwLCAtMSwgbnVsbCwgbnVsbCk7XG59O1xuZ29vZy5pbmhlcml0cyhwcm90by5iYXNlLnYxLkNvbnRyb2xJbmZvTGlzdCwganNwYi5NZXNzYWdlKTtcbmlmIChnb29nLkRFQlVHICYmICFDT01QSUxFRCkge1xuICAvKipcbiAgICogQHB1YmxpY1xuICAgKiBAb3ZlcnJpZGVcbiAgICovXG4gIHByb3RvLmJhc2UudjEuQ29udHJvbEluZm9MaXN0LmRpc3BsYXlOYW1lID0gJ3Byb3RvLmJhc2UudjEuQ29udHJvbEluZm9MaXN0Jztcbn1cbi8qKlxuICogR2VuZXJhdGVkIGJ5IEpzUGJDb2RlR2VuZXJhdG9yLlxuICogQHBhcmFtIHtBcnJheT19IG9wdF9kYXRhIE9wdGlvbmFsIGluaXRpYWwgZGF0YSBhcnJheSwgdHlwaWNhbGx5IGZyb20gYVxuICogc2VydmVyIHJlc3BvbnNlLCBvciBjb25zdHJ1Y3RlZCBkaXJlY3RseSBpbiBKYXZhc2NyaXB0LiBUaGUgYXJyYXkgaXMgdXNlZFxuICogaW4gcGxhY2UgYW5kIGJlY29tZXMgcGFydCBvZiB0aGUgY29uc3RydWN0ZWQgb2JqZWN0LiBJdCBpcyBub3QgY2xvbmVkLlxuICogSWYgbm8gZGF0YSBpcyBwcm92aWRlZCwgdGhlIGNvbnN0cnVjdGVkIG9iamVjdCB3aWxsIGJlIGVtcHR5LCBidXQgc3RpbGxcbiAqIHZhbGlkLlxuICogQGV4dGVuZHMge2pzcGIuTWVzc2FnZX1cbiAqIEBjb25zdHJ1Y3RvclxuICovXG5wcm90by5iYXNlLnYxLkRlZmF1bHRSZXBseSA9IGZ1bmN0aW9uKG9wdF9kYXRhKSB7XG4gIGpzcGIuTWVzc2FnZS5pbml0aWFsaXplKHRoaXMsIG9wdF9kYXRhLCAwLCAtMSwgbnVsbCwgbnVsbCk7XG59O1xuZ29vZy5pbmhlcml0cyhwcm90by5iYXNlLnYxLkRlZmF1bHRSZXBseSwganNwYi5NZXNzYWdlKTtcbmlmIChnb29nLkRFQlVHICYmICFDT01QSUxFRCkge1xuICAvKipcbiAgICogQHB1YmxpY1xuICAgKiBAb3ZlcnJpZGVcbiAgICovXG4gIHByb3RvLmJhc2UudjEuRGVmYXVsdFJlcGx5LmRpc3BsYXlOYW1lID0gJ3Byb3RvLmJhc2UudjEuRGVmYXVsdFJlcGx5Jztcbn1cbi8qKlxuICogR2VuZXJhdGVkIGJ5IEpzUGJDb2RlR2VuZXJhdG9yLlxuICogQHBhcmFtIHtBcnJheT19IG9wdF9kYXRhIE9wdGlvbmFsIGluaXRpYWwgZGF0YSBhcnJheSwgdHlwaWNhbGx5IGZyb20gYVxuICogc2VydmVyIHJlc3BvbnNlLCBvciBjb25zdHJ1Y3RlZCBkaXJlY3RseSBpbiBKYXZhc2NyaXB0LiBUaGUgYXJyYXkgaXMgdXNlZFxuICogaW4gcGxhY2UgYW5kIGJlY29tZXMgcGFydCBvZiB0aGUgY29uc3RydWN0ZWQgb2JqZWN0LiBJdCBpcyBub3QgY2xvbmVkLlxuICogSWYgbm8gZGF0YSBpcyBwcm92aWRlZCwgdGhlIGNvbnN0cnVjdGVkIG9iamVjdCB3aWxsIGJlIGVtcHR5LCBidXQgc3RpbGxcbiAqIHZhbGlkLlxuICogQGV4dGVuZHMge2pzcGIuTWVzc2FnZX1cbiAqIEBjb25zdHJ1Y3RvclxuICovXG5wcm90by5iYXNlLnYxLklkUmVxdWVzdCA9IGZ1bmN0aW9uKG9wdF9kYXRhKSB7XG4gIGpzcGIuTWVzc2FnZS5pbml0aWFsaXplKHRoaXMsIG9wdF9kYXRhLCAwLCAtMSwgbnVsbCwgbnVsbCk7XG59O1xuZ29vZy5pbmhlcml0cyhwcm90by5iYXNlLnYxLklkUmVxdWVzdCwganNwYi5NZXNzYWdlKTtcbmlmIChnb29nLkRFQlVHICYmICFDT01QSUxFRCkge1xuICAvKipcbiAgICogQHB1YmxpY1xuICAgKiBAb3ZlcnJpZGVcbiAgICovXG4gIHByb3RvLmJhc2UudjEuSWRSZXF1ZXN0LmRpc3BsYXlOYW1lID0gJ3Byb3RvLmJhc2UudjEuSWRSZXF1ZXN0Jztcbn1cbi8qKlxuICogR2VuZXJhdGVkIGJ5IEpzUGJDb2RlR2VuZXJhdG9yLlxuICogQHBhcmFtIHtBcnJheT19IG9wdF9kYXRhIE9wdGlvbmFsIGluaXRpYWwgZGF0YSBhcnJheSwgdHlwaWNhbGx5IGZyb20gYVxuICogc2VydmVyIHJlc3BvbnNlLCBvciBjb25zdHJ1Y3RlZCBkaXJlY3RseSBpbiBKYXZhc2NyaXB0LiBUaGUgYXJyYXkgaXMgdXNlZFxuICogaW4gcGxhY2UgYW5kIGJlY29tZXMgcGFydCBvZiB0aGUgY29uc3RydWN0ZWQgb2JqZWN0LiBJdCBpcyBub3QgY2xvbmVkLlxuICogSWYgbm8gZGF0YSBpcyBwcm92aWRlZCwgdGhlIGNvbnN0cnVjdGVkIG9iamVjdCB3aWxsIGJlIGVtcHR5LCBidXQgc3RpbGxcbiAqIHZhbGlkLlxuICogQGV4dGVuZHMge2pzcGIuTWVzc2FnZX1cbiAqIEBjb25zdHJ1Y3RvclxuICovXG5wcm90by5iYXNlLnYxLkRlZmF1bHRSZXF1ZXN0ID0gZnVuY3Rpb24ob3B0X2RhdGEpIHtcbiAganNwYi5NZXNzYWdlLmluaXRpYWxpemUodGhpcywgb3B0X2RhdGEsIDAsIC0xLCBudWxsLCBudWxsKTtcbn07XG5nb29nLmluaGVyaXRzKHByb3RvLmJhc2UudjEuRGVmYXVsdFJlcXVlc3QsIGpzcGIuTWVzc2FnZSk7XG5pZiAoZ29vZy5ERUJVRyAmJiAhQ09NUElMRUQpIHtcbiAgLyoqXG4gICAqIEBwdWJsaWNcbiAgICogQG92ZXJyaWRlXG4gICAqL1xuICBwcm90by5iYXNlLnYxLkRlZmF1bHRSZXF1ZXN0LmRpc3BsYXlOYW1lID0gJ3Byb3RvLmJhc2UudjEuRGVmYXVsdFJlcXVlc3QnO1xufVxuLyoqXG4gKiBHZW5lcmF0ZWQgYnkgSnNQYkNvZGVHZW5lcmF0b3IuXG4gKiBAcGFyYW0ge0FycmF5PX0gb3B0X2RhdGEgT3B0aW9uYWwgaW5pdGlhbCBkYXRhIGFycmF5LCB0eXBpY2FsbHkgZnJvbSBhXG4gKiBzZXJ2ZXIgcmVzcG9uc2UsIG9yIGNvbnN0cnVjdGVkIGRpcmVjdGx5IGluIEphdmFzY3JpcHQuIFRoZSBhcnJheSBpcyB1c2VkXG4gKiBpbiBwbGFjZSBhbmQgYmVjb21lcyBwYXJ0IG9mIHRoZSBjb25zdHJ1Y3RlZCBvYmplY3QuIEl0IGlzIG5vdCBjbG9uZWQuXG4gKiBJZiBubyBkYXRhIGlzIHByb3ZpZGVkLCB0aGUgY29uc3RydWN0ZWQgb2JqZWN0IHdpbGwgYmUgZW1wdHksIGJ1dCBzdGlsbFxuICogdmFsaWQuXG4gKiBAZXh0ZW5kcyB7anNwYi5NZXNzYWdlfVxuICogQGNvbnN0cnVjdG9yXG4gKi9cbnByb3RvLmJhc2UudjEuUG9zaXRpb24gPSBmdW5jdGlvbihvcHRfZGF0YSkge1xuICBqc3BiLk1lc3NhZ2UuaW5pdGlhbGl6ZSh0aGlzLCBvcHRfZGF0YSwgMCwgLTEsIG51bGwsIG51bGwpO1xufTtcbmdvb2cuaW5oZXJpdHMocHJvdG8uYmFzZS52MS5Qb3NpdGlvbiwganNwYi5NZXNzYWdlKTtcbmlmIChnb29nLkRFQlVHICYmICFDT01QSUxFRCkge1xuICAvKipcbiAgICogQHB1YmxpY1xuICAgKiBAb3ZlcnJpZGVcbiAgICovXG4gIHByb3RvLmJhc2UudjEuUG9zaXRpb24uZGlzcGxheU5hbWUgPSAncHJvdG8uYmFzZS52MS5Qb3NpdGlvbic7XG59XG4vKipcbiAqIEdlbmVyYXRlZCBieSBKc1BiQ29kZUdlbmVyYXRvci5cbiAqIEBwYXJhbSB7QXJyYXk9fSBvcHRfZGF0YSBPcHRpb25hbCBpbml0aWFsIGRhdGEgYXJyYXksIHR5cGljYWxseSBmcm9tIGFcbiAqIHNlcnZlciByZXNwb25zZSwgb3IgY29uc3RydWN0ZWQgZGlyZWN0bHkgaW4gSmF2YXNjcmlwdC4gVGhlIGFycmF5IGlzIHVzZWRcbiAqIGluIHBsYWNlIGFuZCBiZWNvbWVzIHBhcnQgb2YgdGhlIGNvbnN0cnVjdGVkIG9iamVjdC4gSXQgaXMgbm90IGNsb25lZC5cbiAqIElmIG5vIGRhdGEgaXMgcHJvdmlkZWQsIHRoZSBjb25zdHJ1Y3RlZCBvYmplY3Qgd2lsbCBiZSBlbXB0eSwgYnV0IHN0aWxsXG4gKiB2YWxpZC5cbiAqIEBleHRlbmRzIHtqc3BiLk1lc3NhZ2V9XG4gKiBAY29uc3RydWN0b3JcbiAqL1xucHJvdG8uYmFzZS52MS5Db250cm9sUG9pbnRJbmZvID0gZnVuY3Rpb24ob3B0X2RhdGEpIHtcbiAganNwYi5NZXNzYWdlLmluaXRpYWxpemUodGhpcywgb3B0X2RhdGEsIDAsIC0xLCBudWxsLCBudWxsKTtcbn07XG5nb29nLmluaGVyaXRzKHByb3RvLmJhc2UudjEuQ29udHJvbFBvaW50SW5mbywganNwYi5NZXNzYWdlKTtcbmlmIChnb29nLkRFQlVHICYmICFDT01QSUxFRCkge1xuICAvKipcbiAgICogQHB1YmxpY1xuICAgKiBAb3ZlcnJpZGVcbiAgICovXG4gIHByb3RvLmJhc2UudjEuQ29udHJvbFBvaW50SW5mby5kaXNwbGF5TmFtZSA9ICdwcm90by5iYXNlLnYxLkNvbnRyb2xQb2ludEluZm8nO1xufVxuLyoqXG4gKiBHZW5lcmF0ZWQgYnkgSnNQYkNvZGVHZW5lcmF0b3IuXG4gKiBAcGFyYW0ge0FycmF5PX0gb3B0X2RhdGEgT3B0aW9uYWwgaW5pdGlhbCBkYXRhIGFycmF5LCB0eXBpY2FsbHkgZnJvbSBhXG4gKiBzZXJ2ZXIgcmVzcG9uc2UsIG9yIGNvbnN0cnVjdGVkIGRpcmVjdGx5IGluIEphdmFzY3JpcHQuIFRoZSBhcnJheSBpcyB1c2VkXG4gKiBpbiBwbGFjZSBhbmQgYmVjb21lcyBwYXJ0IG9mIHRoZSBjb25zdHJ1Y3RlZCBvYmplY3QuIEl0IGlzIG5vdCBjbG9uZWQuXG4gKiBJZiBubyBkYXRhIGlzIHByb3ZpZGVkLCB0aGUgY29uc3RydWN0ZWQgb2JqZWN0IHdpbGwgYmUgZW1wdHksIGJ1dCBzdGlsbFxuICogdmFsaWQuXG4gKiBAZXh0ZW5kcyB7anNwYi5NZXNzYWdlfVxuICogQGNvbnN0cnVjdG9yXG4gKi9cbnByb3RvLmJhc2UudjEuSW1hZ2UgPSBmdW5jdGlvbihvcHRfZGF0YSkge1xuICBqc3BiLk1lc3NhZ2UuaW5pdGlhbGl6ZSh0aGlzLCBvcHRfZGF0YSwgMCwgLTEsIG51bGwsIG51bGwpO1xufTtcbmdvb2cuaW5oZXJpdHMocHJvdG8uYmFzZS52MS5JbWFnZSwganNwYi5NZXNzYWdlKTtcbmlmIChnb29nLkRFQlVHICYmICFDT01QSUxFRCkge1xuICAvKipcbiAgICogQHB1YmxpY1xuICAgKiBAb3ZlcnJpZGVcbiAgICovXG4gIHByb3RvLmJhc2UudjEuSW1hZ2UuZGlzcGxheU5hbWUgPSAncHJvdG8uYmFzZS52MS5JbWFnZSc7XG59XG4vKipcbiAqIEdlbmVyYXRlZCBieSBKc1BiQ29kZUdlbmVyYXRvci5cbiAqIEBwYXJhbSB7QXJyYXk9fSBvcHRfZGF0YSBPcHRpb25hbCBpbml0aWFsIGRhdGEgYXJyYXksIHR5cGljYWxseSBmcm9tIGFcbiAqIHNlcnZlciByZXNwb25zZSwgb3IgY29uc3RydWN0ZWQgZGlyZWN0bHkgaW4gSmF2YXNjcmlwdC4gVGhlIGFycmF5IGlzIHVzZWRcbiAqIGluIHBsYWNlIGFuZCBiZWNvbWVzIHBhcnQgb2YgdGhlIGNvbnN0cnVjdGVkIG9iamVjdC4gSXQgaXMgbm90IGNsb25lZC5cbiAqIElmIG5vIGRhdGEgaXMgcHJvdmlkZWQsIHRoZSBjb25zdHJ1Y3RlZCBvYmplY3Qgd2lsbCBiZSBlbXB0eSwgYnV0IHN0aWxsXG4gKiB2YWxpZC5cbiAqIEBleHRlbmRzIHtqc3BiLk1lc3NhZ2V9XG4gKiBAY29uc3RydWN0b3JcbiAqL1xucHJvdG8uYmFzZS52MS5TdGF0dXNFZGl0UmVxdWVzdCA9IGZ1bmN0aW9uKG9wdF9kYXRhKSB7XG4gIGpzcGIuTWVzc2FnZS5pbml0aWFsaXplKHRoaXMsIG9wdF9kYXRhLCAwLCAtMSwgbnVsbCwgbnVsbCk7XG59O1xuZ29vZy5pbmhlcml0cyhwcm90by5iYXNlLnYxLlN0YXR1c0VkaXRSZXF1ZXN0LCBqc3BiLk1lc3NhZ2UpO1xuaWYgKGdvb2cuREVCVUcgJiYgIUNPTVBJTEVEKSB7XG4gIC8qKlxuICAgKiBAcHVibGljXG4gICAqIEBvdmVycmlkZVxuICAgKi9cbiAgcHJvdG8uYmFzZS52MS5TdGF0dXNFZGl0UmVxdWVzdC5kaXNwbGF5TmFtZSA9ICdwcm90by5iYXNlLnYxLlN0YXR1c0VkaXRSZXF1ZXN0Jztcbn1cbi8qKlxuICogR2VuZXJhdGVkIGJ5IEpzUGJDb2RlR2VuZXJhdG9yLlxuICogQHBhcmFtIHtBcnJheT19IG9wdF9kYXRhIE9wdGlvbmFsIGluaXRpYWwgZGF0YSBhcnJheSwgdHlwaWNhbGx5IGZyb20gYVxuICogc2VydmVyIHJlc3BvbnNlLCBvciBjb25zdHJ1Y3RlZCBkaXJlY3RseSBpbiBKYXZhc2NyaXB0LiBUaGUgYXJyYXkgaXMgdXNlZFxuICogaW4gcGxhY2UgYW5kIGJlY29tZXMgcGFydCBvZiB0aGUgY29uc3RydWN0ZWQgb2JqZWN0LiBJdCBpcyBub3QgY2xvbmVkLlxuICogSWYgbm8gZGF0YSBpcyBwcm92aWRlZCwgdGhlIGNvbnN0cnVjdGVkIG9iamVjdCB3aWxsIGJlIGVtcHR5LCBidXQgc3RpbGxcbiAqIHZhbGlkLlxuICogQGV4dGVuZHMge2pzcGIuTWVzc2FnZX1cbiAqIEBjb25zdHJ1Y3RvclxuICovXG5wcm90by5iYXNlLnYxLkNvdXJzZUluZm8gPSBmdW5jdGlvbihvcHRfZGF0YSkge1xuICBqc3BiLk1lc3NhZ2UuaW5pdGlhbGl6ZSh0aGlzLCBvcHRfZGF0YSwgMCwgLTEsIHByb3RvLmJhc2UudjEuQ291cnNlSW5mby5yZXBlYXRlZEZpZWxkc18sIG51bGwpO1xufTtcbmdvb2cuaW5oZXJpdHMocHJvdG8uYmFzZS52MS5Db3Vyc2VJbmZvLCBqc3BiLk1lc3NhZ2UpO1xuaWYgKGdvb2cuREVCVUcgJiYgIUNPTVBJTEVEKSB7XG4gIC8qKlxuICAgKiBAcHVibGljXG4gICAqIEBvdmVycmlkZVxuICAgKi9cbiAgcHJvdG8uYmFzZS52MS5Db3Vyc2VJbmZvLmRpc3BsYXlOYW1lID0gJ3Byb3RvLmJhc2UudjEuQ291cnNlSW5mbyc7XG59XG4vKipcbiAqIEdlbmVyYXRlZCBieSBKc1BiQ29kZUdlbmVyYXRvci5cbiAqIEBwYXJhbSB7QXJyYXk9fSBvcHRfZGF0YSBPcHRpb25hbCBpbml0aWFsIGRhdGEgYXJyYXksIHR5cGljYWxseSBmcm9tIGFcbiAqIHNlcnZlciByZXNwb25zZSwgb3IgY29uc3RydWN0ZWQgZGlyZWN0bHkgaW4gSmF2YXNjcmlwdC4gVGhlIGFycmF5IGlzIHVzZWRcbiAqIGluIHBsYWNlIGFuZCBiZWNvbWVzIHBhcnQgb2YgdGhlIGNvbnN0cnVjdGVkIG9iamVjdC4gSXQgaXMgbm90IGNsb25lZC5cbiAqIElmIG5vIGRhdGEgaXMgcHJvdmlkZWQsIHRoZSBjb25zdHJ1Y3RlZCBvYmplY3Qgd2lsbCBiZSBlbXB0eSwgYnV0IHN0aWxsXG4gKiB2YWxpZC5cbiAqIEBleHRlbmRzIHtqc3BiLk1lc3NhZ2V9XG4gKiBAY29uc3RydWN0b3JcbiAqL1xucHJvdG8uYmFzZS52MS5Db250cm9sUG9pbnQgPSBmdW5jdGlvbihvcHRfZGF0YSkge1xuICBqc3BiLk1lc3NhZ2UuaW5pdGlhbGl6ZSh0aGlzLCBvcHRfZGF0YSwgMCwgLTEsIHByb3RvLmJhc2UudjEuQ29udHJvbFBvaW50LnJlcGVhdGVkRmllbGRzXywgbnVsbCk7XG59O1xuZ29vZy5pbmhlcml0cyhwcm90by5iYXNlLnYxLkNvbnRyb2xQb2ludCwganNwYi5NZXNzYWdlKTtcbmlmIChnb29nLkRFQlVHICYmICFDT01QSUxFRCkge1xuICAvKipcbiAgICogQHB1YmxpY1xuICAgKiBAb3ZlcnJpZGVcbiAgICovXG4gIHByb3RvLmJhc2UudjEuQ29udHJvbFBvaW50LmRpc3BsYXlOYW1lID0gJ3Byb3RvLmJhc2UudjEuQ29udHJvbFBvaW50Jztcbn1cbi8qKlxuICogR2VuZXJhdGVkIGJ5IEpzUGJDb2RlR2VuZXJhdG9yLlxuICogQHBhcmFtIHtBcnJheT19IG9wdF9kYXRhIE9wdGlvbmFsIGluaXRpYWwgZGF0YSBhcnJheSwgdHlwaWNhbGx5IGZyb20gYVxuICogc2VydmVyIHJlc3BvbnNlLCBvciBjb25zdHJ1Y3RlZCBkaXJlY3RseSBpbiBKYXZhc2NyaXB0LiBUaGUgYXJyYXkgaXMgdXNlZFxuICogaW4gcGxhY2UgYW5kIGJlY29tZXMgcGFydCBvZiB0aGUgY29uc3RydWN0ZWQgb2JqZWN0LiBJdCBpcyBub3QgY2xvbmVkLlxuICogSWYgbm8gZGF0YSBpcyBwcm92aWRlZCwgdGhlIGNvbnN0cnVjdGVkIG9iamVjdCB3aWxsIGJlIGVtcHR5LCBidXQgc3RpbGxcbiAqIHZhbGlkLlxuICogQGV4dGVuZHMge2pzcGIuTWVzc2FnZX1cbiAqIEBjb25zdHJ1Y3RvclxuICovXG5wcm90by5iYXNlLnYxLkNvbnRyb2xQb2ludFNpbXBsZSA9IGZ1bmN0aW9uKG9wdF9kYXRhKSB7XG4gIGpzcGIuTWVzc2FnZS5pbml0aWFsaXplKHRoaXMsIG9wdF9kYXRhLCAwLCAtMSwgcHJvdG8uYmFzZS52MS5Db250cm9sUG9pbnRTaW1wbGUucmVwZWF0ZWRGaWVsZHNfLCBudWxsKTtcbn07XG5nb29nLmluaGVyaXRzKHByb3RvLmJhc2UudjEuQ29udHJvbFBvaW50U2ltcGxlLCBqc3BiLk1lc3NhZ2UpO1xuaWYgKGdvb2cuREVCVUcgJiYgIUNPTVBJTEVEKSB7XG4gIC8qKlxuICAgKiBAcHVibGljXG4gICAqIEBvdmVycmlkZVxuICAgKi9cbiAgcHJvdG8uYmFzZS52MS5Db250cm9sUG9pbnRTaW1wbGUuZGlzcGxheU5hbWUgPSAncHJvdG8uYmFzZS52MS5Db250cm9sUG9pbnRTaW1wbGUnO1xufVxuXG5cblxuaWYgKGpzcGIuTWVzc2FnZS5HRU5FUkFURV9UT19PQkpFQ1QpIHtcbi8qKlxuICogQ3JlYXRlcyBhbiBvYmplY3QgcmVwcmVzZW50YXRpb24gb2YgdGhpcyBwcm90by5cbiAqIEZpZWxkIG5hbWVzIHRoYXQgYXJlIHJlc2VydmVkIGluIEphdmFTY3JpcHQgYW5kIHdpbGwgYmUgcmVuYW1lZCB0byBwYl9uYW1lLlxuICogT3B0aW9uYWwgZmllbGRzIHRoYXQgYXJlIG5vdCBzZXQgd2lsbCBiZSBzZXQgdG8gdW5kZWZpbmVkLlxuICogVG8gYWNjZXNzIGEgcmVzZXJ2ZWQgZmllbGQgdXNlLCBmb28ucGJfPG5hbWU+LCBlZywgZm9vLnBiX2RlZmF1bHQuXG4gKiBGb3IgdGhlIGxpc3Qgb2YgcmVzZXJ2ZWQgbmFtZXMgcGxlYXNlIHNlZTpcbiAqICAgICBuZXQvcHJvdG8yL2NvbXBpbGVyL2pzL2ludGVybmFsL2dlbmVyYXRvci5jYyNrS2V5d29yZC5cbiAqIEBwYXJhbSB7Ym9vbGVhbj19IG9wdF9pbmNsdWRlSW5zdGFuY2UgRGVwcmVjYXRlZC4gd2hldGhlciB0byBpbmNsdWRlIHRoZVxuICogICAgIEpTUEIgaW5zdGFuY2UgZm9yIHRyYW5zaXRpb25hbCBzb3kgcHJvdG8gc3VwcG9ydDpcbiAqICAgICBodHRwOi8vZ290by9zb3ktcGFyYW0tbWlncmF0aW9uXG4gKiBAcmV0dXJuIHshT2JqZWN0fVxuICovXG5wcm90by5iYXNlLnYxLk5ldEltYWdlLnByb3RvdHlwZS50b09iamVjdCA9IGZ1bmN0aW9uKG9wdF9pbmNsdWRlSW5zdGFuY2UpIHtcbiAgcmV0dXJuIHByb3RvLmJhc2UudjEuTmV0SW1hZ2UudG9PYmplY3Qob3B0X2luY2x1ZGVJbnN0YW5jZSwgdGhpcyk7XG59O1xuXG5cbi8qKlxuICogU3RhdGljIHZlcnNpb24gb2YgdGhlIHtAc2VlIHRvT2JqZWN0fSBtZXRob2QuXG4gKiBAcGFyYW0ge2Jvb2xlYW58dW5kZWZpbmVkfSBpbmNsdWRlSW5zdGFuY2UgRGVwcmVjYXRlZC4gV2hldGhlciB0byBpbmNsdWRlXG4gKiAgICAgdGhlIEpTUEIgaW5zdGFuY2UgZm9yIHRyYW5zaXRpb25hbCBzb3kgcHJvdG8gc3VwcG9ydDpcbiAqICAgICBodHRwOi8vZ290by9zb3ktcGFyYW0tbWlncmF0aW9uXG4gKiBAcGFyYW0geyFwcm90by5iYXNlLnYxLk5ldEltYWdlfSBtc2cgVGhlIG1zZyBpbnN0YW5jZSB0byB0cmFuc2Zvcm0uXG4gKiBAcmV0dXJuIHshT2JqZWN0fVxuICogQHN1cHByZXNzIHt1bnVzZWRMb2NhbFZhcmlhYmxlc30gZiBpcyBvbmx5IHVzZWQgZm9yIG5lc3RlZCBtZXNzYWdlc1xuICovXG5wcm90by5iYXNlLnYxLk5ldEltYWdlLnRvT2JqZWN0ID0gZnVuY3Rpb24oaW5jbHVkZUluc3RhbmNlLCBtc2cpIHtcbiAgdmFyIGYsIG9iaiA9IHtcbiAgICB1cmw6IGpzcGIuTWVzc2FnZS5nZXRGaWVsZFdpdGhEZWZhdWx0KG1zZywgMSwgXCJcIiksXG4gICAgbWQ1OiBtc2cuZ2V0TWQ1X2FzQjY0KClcbiAgfTtcblxuICBpZiAoaW5jbHVkZUluc3RhbmNlKSB7XG4gICAgb2JqLiRqc3BiTWVzc2FnZUluc3RhbmNlID0gbXNnO1xuICB9XG4gIHJldHVybiBvYmo7XG59O1xufVxuXG5cbi8qKlxuICogRGVzZXJpYWxpemVzIGJpbmFyeSBkYXRhIChpbiBwcm90b2J1ZiB3aXJlIGZvcm1hdCkuXG4gKiBAcGFyYW0ge2pzcGIuQnl0ZVNvdXJjZX0gYnl0ZXMgVGhlIGJ5dGVzIHRvIGRlc2VyaWFsaXplLlxuICogQHJldHVybiB7IXByb3RvLmJhc2UudjEuTmV0SW1hZ2V9XG4gKi9cbnByb3RvLmJhc2UudjEuTmV0SW1hZ2UuZGVzZXJpYWxpemVCaW5hcnkgPSBmdW5jdGlvbihieXRlcykge1xuICB2YXIgcmVhZGVyID0gbmV3IGpzcGIuQmluYXJ5UmVhZGVyKGJ5dGVzKTtcbiAgdmFyIG1zZyA9IG5ldyBwcm90by5iYXNlLnYxLk5ldEltYWdlO1xuICByZXR1cm4gcHJvdG8uYmFzZS52MS5OZXRJbWFnZS5kZXNlcmlhbGl6ZUJpbmFyeUZyb21SZWFkZXIobXNnLCByZWFkZXIpO1xufTtcblxuXG4vKipcbiAqIERlc2VyaWFsaXplcyBiaW5hcnkgZGF0YSAoaW4gcHJvdG9idWYgd2lyZSBmb3JtYXQpIGZyb20gdGhlXG4gKiBnaXZlbiByZWFkZXIgaW50byB0aGUgZ2l2ZW4gbWVzc2FnZSBvYmplY3QuXG4gKiBAcGFyYW0geyFwcm90by5iYXNlLnYxLk5ldEltYWdlfSBtc2cgVGhlIG1lc3NhZ2Ugb2JqZWN0IHRvIGRlc2VyaWFsaXplIGludG8uXG4gKiBAcGFyYW0geyFqc3BiLkJpbmFyeVJlYWRlcn0gcmVhZGVyIFRoZSBCaW5hcnlSZWFkZXIgdG8gdXNlLlxuICogQHJldHVybiB7IXByb3RvLmJhc2UudjEuTmV0SW1hZ2V9XG4gKi9cbnByb3RvLmJhc2UudjEuTmV0SW1hZ2UuZGVzZXJpYWxpemVCaW5hcnlGcm9tUmVhZGVyID0gZnVuY3Rpb24obXNnLCByZWFkZXIpIHtcbiAgd2hpbGUgKHJlYWRlci5uZXh0RmllbGQoKSkge1xuICAgIGlmIChyZWFkZXIuaXNFbmRHcm91cCgpKSB7XG4gICAgICBicmVhaztcbiAgICB9XG4gICAgdmFyIGZpZWxkID0gcmVhZGVyLmdldEZpZWxkTnVtYmVyKCk7XG4gICAgc3dpdGNoIChmaWVsZCkge1xuICAgIGNhc2UgMTpcbiAgICAgIHZhciB2YWx1ZSA9IC8qKiBAdHlwZSB7c3RyaW5nfSAqLyAocmVhZGVyLnJlYWRTdHJpbmcoKSk7XG4gICAgICBtc2cuc2V0VXJsKHZhbHVlKTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgMjpcbiAgICAgIHZhciB2YWx1ZSA9IC8qKiBAdHlwZSB7IVVpbnQ4QXJyYXl9ICovIChyZWFkZXIucmVhZEJ5dGVzKCkpO1xuICAgICAgbXNnLnNldE1kNSh2YWx1ZSk7XG4gICAgICBicmVhaztcbiAgICBkZWZhdWx0OlxuICAgICAgcmVhZGVyLnNraXBGaWVsZCgpO1xuICAgICAgYnJlYWs7XG4gICAgfVxuICB9XG4gIHJldHVybiBtc2c7XG59O1xuXG5cbi8qKlxuICogU2VyaWFsaXplcyB0aGUgbWVzc2FnZSB0byBiaW5hcnkgZGF0YSAoaW4gcHJvdG9idWYgd2lyZSBmb3JtYXQpLlxuICogQHJldHVybiB7IVVpbnQ4QXJyYXl9XG4gKi9cbnByb3RvLmJhc2UudjEuTmV0SW1hZ2UucHJvdG90eXBlLnNlcmlhbGl6ZUJpbmFyeSA9IGZ1bmN0aW9uKCkge1xuICB2YXIgd3JpdGVyID0gbmV3IGpzcGIuQmluYXJ5V3JpdGVyKCk7XG4gIHByb3RvLmJhc2UudjEuTmV0SW1hZ2Uuc2VyaWFsaXplQmluYXJ5VG9Xcml0ZXIodGhpcywgd3JpdGVyKTtcbiAgcmV0dXJuIHdyaXRlci5nZXRSZXN1bHRCdWZmZXIoKTtcbn07XG5cblxuLyoqXG4gKiBTZXJpYWxpemVzIHRoZSBnaXZlbiBtZXNzYWdlIHRvIGJpbmFyeSBkYXRhIChpbiBwcm90b2J1ZiB3aXJlXG4gKiBmb3JtYXQpLCB3cml0aW5nIHRvIHRoZSBnaXZlbiBCaW5hcnlXcml0ZXIuXG4gKiBAcGFyYW0geyFwcm90by5iYXNlLnYxLk5ldEltYWdlfSBtZXNzYWdlXG4gKiBAcGFyYW0geyFqc3BiLkJpbmFyeVdyaXRlcn0gd3JpdGVyXG4gKiBAc3VwcHJlc3Mge3VudXNlZExvY2FsVmFyaWFibGVzfSBmIGlzIG9ubHkgdXNlZCBmb3IgbmVzdGVkIG1lc3NhZ2VzXG4gKi9cbnByb3RvLmJhc2UudjEuTmV0SW1hZ2Uuc2VyaWFsaXplQmluYXJ5VG9Xcml0ZXIgPSBmdW5jdGlvbihtZXNzYWdlLCB3cml0ZXIpIHtcbiAgdmFyIGYgPSB1bmRlZmluZWQ7XG4gIGYgPSBtZXNzYWdlLmdldFVybCgpO1xuICBpZiAoZi5sZW5ndGggPiAwKSB7XG4gICAgd3JpdGVyLndyaXRlU3RyaW5nKFxuICAgICAgMSxcbiAgICAgIGZcbiAgICApO1xuICB9XG4gIGYgPSBtZXNzYWdlLmdldE1kNV9hc1U4KCk7XG4gIGlmIChmLmxlbmd0aCA+IDApIHtcbiAgICB3cml0ZXIud3JpdGVCeXRlcyhcbiAgICAgIDIsXG4gICAgICBmXG4gICAgKTtcbiAgfVxufTtcblxuXG4vKipcbiAqIG9wdGlvbmFsIHN0cmluZyB1cmwgPSAxO1xuICogQHJldHVybiB7c3RyaW5nfVxuICovXG5wcm90by5iYXNlLnYxLk5ldEltYWdlLnByb3RvdHlwZS5nZXRVcmwgPSBmdW5jdGlvbigpIHtcbiAgcmV0dXJuIC8qKiBAdHlwZSB7c3RyaW5nfSAqLyAoanNwYi5NZXNzYWdlLmdldEZpZWxkV2l0aERlZmF1bHQodGhpcywgMSwgXCJcIikpO1xufTtcblxuXG4vKipcbiAqIEBwYXJhbSB7c3RyaW5nfSB2YWx1ZVxuICogQHJldHVybiB7IXByb3RvLmJhc2UudjEuTmV0SW1hZ2V9IHJldHVybnMgdGhpc1xuICovXG5wcm90by5iYXNlLnYxLk5ldEltYWdlLnByb3RvdHlwZS5zZXRVcmwgPSBmdW5jdGlvbih2YWx1ZSkge1xuICByZXR1cm4ganNwYi5NZXNzYWdlLnNldFByb3RvM1N0cmluZ0ZpZWxkKHRoaXMsIDEsIHZhbHVlKTtcbn07XG5cblxuLyoqXG4gKiBvcHRpb25hbCBieXRlcyBtZDUgPSAyO1xuICogQHJldHVybiB7c3RyaW5nfVxuICovXG5wcm90by5iYXNlLnYxLk5ldEltYWdlLnByb3RvdHlwZS5nZXRNZDUgPSBmdW5jdGlvbigpIHtcbiAgcmV0dXJuIC8qKiBAdHlwZSB7c3RyaW5nfSAqLyAoanNwYi5NZXNzYWdlLmdldEZpZWxkV2l0aERlZmF1bHQodGhpcywgMiwgXCJcIikpO1xufTtcblxuXG4vKipcbiAqIG9wdGlvbmFsIGJ5dGVzIG1kNSA9IDI7XG4gKiBUaGlzIGlzIGEgdHlwZS1jb252ZXJzaW9uIHdyYXBwZXIgYXJvdW5kIGBnZXRNZDUoKWBcbiAqIEByZXR1cm4ge3N0cmluZ31cbiAqL1xucHJvdG8uYmFzZS52MS5OZXRJbWFnZS5wcm90b3R5cGUuZ2V0TWQ1X2FzQjY0ID0gZnVuY3Rpb24oKSB7XG4gIHJldHVybiAvKiogQHR5cGUge3N0cmluZ30gKi8gKGpzcGIuTWVzc2FnZS5ieXRlc0FzQjY0KFxuICAgICAgdGhpcy5nZXRNZDUoKSkpO1xufTtcblxuXG4vKipcbiAqIG9wdGlvbmFsIGJ5dGVzIG1kNSA9IDI7XG4gKiBOb3RlIHRoYXQgVWludDhBcnJheSBpcyBub3Qgc3VwcG9ydGVkIG9uIGFsbCBicm93c2Vycy5cbiAqIEBzZWUgaHR0cDovL2Nhbml1c2UuY29tL1VpbnQ4QXJyYXlcbiAqIFRoaXMgaXMgYSB0eXBlLWNvbnZlcnNpb24gd3JhcHBlciBhcm91bmQgYGdldE1kNSgpYFxuICogQHJldHVybiB7IVVpbnQ4QXJyYXl9XG4gKi9cbnByb3RvLmJhc2UudjEuTmV0SW1hZ2UucHJvdG90eXBlLmdldE1kNV9hc1U4ID0gZnVuY3Rpb24oKSB7XG4gIHJldHVybiAvKiogQHR5cGUgeyFVaW50OEFycmF5fSAqLyAoanNwYi5NZXNzYWdlLmJ5dGVzQXNVOChcbiAgICAgIHRoaXMuZ2V0TWQ1KCkpKTtcbn07XG5cblxuLyoqXG4gKiBAcGFyYW0geyEoc3RyaW5nfFVpbnQ4QXJyYXkpfSB2YWx1ZVxuICogQHJldHVybiB7IXByb3RvLmJhc2UudjEuTmV0SW1hZ2V9IHJldHVybnMgdGhpc1xuICovXG5wcm90by5iYXNlLnYxLk5ldEltYWdlLnByb3RvdHlwZS5zZXRNZDUgPSBmdW5jdGlvbih2YWx1ZSkge1xuICByZXR1cm4ganNwYi5NZXNzYWdlLnNldFByb3RvM0J5dGVzRmllbGQodGhpcywgMiwgdmFsdWUpO1xufTtcblxuXG5cblxuXG5pZiAoanNwYi5NZXNzYWdlLkdFTkVSQVRFX1RPX09CSkVDVCkge1xuLyoqXG4gKiBDcmVhdGVzIGFuIG9iamVjdCByZXByZXNlbnRhdGlvbiBvZiB0aGlzIHByb3RvLlxuICogRmllbGQgbmFtZXMgdGhhdCBhcmUgcmVzZXJ2ZWQgaW4gSmF2YVNjcmlwdCBhbmQgd2lsbCBiZSByZW5hbWVkIHRvIHBiX25hbWUuXG4gKiBPcHRpb25hbCBmaWVsZHMgdGhhdCBhcmUgbm90IHNldCB3aWxsIGJlIHNldCB0byB1bmRlZmluZWQuXG4gKiBUbyBhY2Nlc3MgYSByZXNlcnZlZCBmaWVsZCB1c2UsIGZvby5wYl88bmFtZT4sIGVnLCBmb28ucGJfZGVmYXVsdC5cbiAqIEZvciB0aGUgbGlzdCBvZiByZXNlcnZlZCBuYW1lcyBwbGVhc2Ugc2VlOlxuICogICAgIG5ldC9wcm90bzIvY29tcGlsZXIvanMvaW50ZXJuYWwvZ2VuZXJhdG9yLmNjI2tLZXl3b3JkLlxuICogQHBhcmFtIHtib29sZWFuPX0gb3B0X2luY2x1ZGVJbnN0YW5jZSBEZXByZWNhdGVkLiB3aGV0aGVyIHRvIGluY2x1ZGUgdGhlXG4gKiAgICAgSlNQQiBpbnN0YW5jZSBmb3IgdHJhbnNpdGlvbmFsIHNveSBwcm90byBzdXBwb3J0OlxuICogICAgIGh0dHA6Ly9nb3RvL3NveS1wYXJhbS1taWdyYXRpb25cbiAqIEByZXR1cm4geyFPYmplY3R9XG4gKi9cbnByb3RvLmJhc2UudjEuVXNlci5wcm90b3R5cGUudG9PYmplY3QgPSBmdW5jdGlvbihvcHRfaW5jbHVkZUluc3RhbmNlKSB7XG4gIHJldHVybiBwcm90by5iYXNlLnYxLlVzZXIudG9PYmplY3Qob3B0X2luY2x1ZGVJbnN0YW5jZSwgdGhpcyk7XG59O1xuXG5cbi8qKlxuICogU3RhdGljIHZlcnNpb24gb2YgdGhlIHtAc2VlIHRvT2JqZWN0fSBtZXRob2QuXG4gKiBAcGFyYW0ge2Jvb2xlYW58dW5kZWZpbmVkfSBpbmNsdWRlSW5zdGFuY2UgRGVwcmVjYXRlZC4gV2hldGhlciB0byBpbmNsdWRlXG4gKiAgICAgdGhlIEpTUEIgaW5zdGFuY2UgZm9yIHRyYW5zaXRpb25hbCBzb3kgcHJvdG8gc3VwcG9ydDpcbiAqICAgICBodHRwOi8vZ290by9zb3ktcGFyYW0tbWlncmF0aW9uXG4gKiBAcGFyYW0geyFwcm90by5iYXNlLnYxLlVzZXJ9IG1zZyBUaGUgbXNnIGluc3RhbmNlIHRvIHRyYW5zZm9ybS5cbiAqIEByZXR1cm4geyFPYmplY3R9XG4gKiBAc3VwcHJlc3Mge3VudXNlZExvY2FsVmFyaWFibGVzfSBmIGlzIG9ubHkgdXNlZCBmb3IgbmVzdGVkIG1lc3NhZ2VzXG4gKi9cbnByb3RvLmJhc2UudjEuVXNlci50b09iamVjdCA9IGZ1bmN0aW9uKGluY2x1ZGVJbnN0YW5jZSwgbXNnKSB7XG4gIHZhciBmLCBvYmogPSB7XG5cbiAgfTtcblxuICBpZiAoaW5jbHVkZUluc3RhbmNlKSB7XG4gICAgb2JqLiRqc3BiTWVzc2FnZUluc3RhbmNlID0gbXNnO1xuICB9XG4gIHJldHVybiBvYmo7XG59O1xufVxuXG5cbi8qKlxuICogRGVzZXJpYWxpemVzIGJpbmFyeSBkYXRhIChpbiBwcm90b2J1ZiB3aXJlIGZvcm1hdCkuXG4gKiBAcGFyYW0ge2pzcGIuQnl0ZVNvdXJjZX0gYnl0ZXMgVGhlIGJ5dGVzIHRvIGRlc2VyaWFsaXplLlxuICogQHJldHVybiB7IXByb3RvLmJhc2UudjEuVXNlcn1cbiAqL1xucHJvdG8uYmFzZS52MS5Vc2VyLmRlc2VyaWFsaXplQmluYXJ5ID0gZnVuY3Rpb24oYnl0ZXMpIHtcbiAgdmFyIHJlYWRlciA9IG5ldyBqc3BiLkJpbmFyeVJlYWRlcihieXRlcyk7XG4gIHZhciBtc2cgPSBuZXcgcHJvdG8uYmFzZS52MS5Vc2VyO1xuICByZXR1cm4gcHJvdG8uYmFzZS52MS5Vc2VyLmRlc2VyaWFsaXplQmluYXJ5RnJvbVJlYWRlcihtc2csIHJlYWRlcik7XG59O1xuXG5cbi8qKlxuICogRGVzZXJpYWxpemVzIGJpbmFyeSBkYXRhIChpbiBwcm90b2J1ZiB3aXJlIGZvcm1hdCkgZnJvbSB0aGVcbiAqIGdpdmVuIHJlYWRlciBpbnRvIHRoZSBnaXZlbiBtZXNzYWdlIG9iamVjdC5cbiAqIEBwYXJhbSB7IXByb3RvLmJhc2UudjEuVXNlcn0gbXNnIFRoZSBtZXNzYWdlIG9iamVjdCB0byBkZXNlcmlhbGl6ZSBpbnRvLlxuICogQHBhcmFtIHshanNwYi5CaW5hcnlSZWFkZXJ9IHJlYWRlciBUaGUgQmluYXJ5UmVhZGVyIHRvIHVzZS5cbiAqIEByZXR1cm4geyFwcm90by5iYXNlLnYxLlVzZXJ9XG4gKi9cbnByb3RvLmJhc2UudjEuVXNlci5kZXNlcmlhbGl6ZUJpbmFyeUZyb21SZWFkZXIgPSBmdW5jdGlvbihtc2csIHJlYWRlcikge1xuICB3aGlsZSAocmVhZGVyLm5leHRGaWVsZCgpKSB7XG4gICAgaWYgKHJlYWRlci5pc0VuZEdyb3VwKCkpIHtcbiAgICAgIGJyZWFrO1xuICAgIH1cbiAgICB2YXIgZmllbGQgPSByZWFkZXIuZ2V0RmllbGROdW1iZXIoKTtcbiAgICBzd2l0Y2ggKGZpZWxkKSB7XG4gICAgZGVmYXVsdDpcbiAgICAgIHJlYWRlci5za2lwRmllbGQoKTtcbiAgICAgIGJyZWFrO1xuICAgIH1cbiAgfVxuICByZXR1cm4gbXNnO1xufTtcblxuXG4vKipcbiAqIFNlcmlhbGl6ZXMgdGhlIG1lc3NhZ2UgdG8gYmluYXJ5IGRhdGEgKGluIHByb3RvYnVmIHdpcmUgZm9ybWF0KS5cbiAqIEByZXR1cm4geyFVaW50OEFycmF5fVxuICovXG5wcm90by5iYXNlLnYxLlVzZXIucHJvdG90eXBlLnNlcmlhbGl6ZUJpbmFyeSA9IGZ1bmN0aW9uKCkge1xuICB2YXIgd3JpdGVyID0gbmV3IGpzcGIuQmluYXJ5V3JpdGVyKCk7XG4gIHByb3RvLmJhc2UudjEuVXNlci5zZXJpYWxpemVCaW5hcnlUb1dyaXRlcih0aGlzLCB3cml0ZXIpO1xuICByZXR1cm4gd3JpdGVyLmdldFJlc3VsdEJ1ZmZlcigpO1xufTtcblxuXG4vKipcbiAqIFNlcmlhbGl6ZXMgdGhlIGdpdmVuIG1lc3NhZ2UgdG8gYmluYXJ5IGRhdGEgKGluIHByb3RvYnVmIHdpcmVcbiAqIGZvcm1hdCksIHdyaXRpbmcgdG8gdGhlIGdpdmVuIEJpbmFyeVdyaXRlci5cbiAqIEBwYXJhbSB7IXByb3RvLmJhc2UudjEuVXNlcn0gbWVzc2FnZVxuICogQHBhcmFtIHshanNwYi5CaW5hcnlXcml0ZXJ9IHdyaXRlclxuICogQHN1cHByZXNzIHt1bnVzZWRMb2NhbFZhcmlhYmxlc30gZiBpcyBvbmx5IHVzZWQgZm9yIG5lc3RlZCBtZXNzYWdlc1xuICovXG5wcm90by5iYXNlLnYxLlVzZXIuc2VyaWFsaXplQmluYXJ5VG9Xcml0ZXIgPSBmdW5jdGlvbihtZXNzYWdlLCB3cml0ZXIpIHtcbiAgdmFyIGYgPSB1bmRlZmluZWQ7XG59O1xuXG5cbi8qKlxuICogQGVudW0ge251bWJlcn1cbiAqL1xucHJvdG8uYmFzZS52MS5Vc2VyLlNleCA9IHtcbiAgVU5ERUZJTkU6IDAsXG4gIE1BTEU6IDEsXG4gIEZFTUFMRTogMlxufTtcblxuXG5cblxuaWYgKGpzcGIuTWVzc2FnZS5HRU5FUkFURV9UT19PQkpFQ1QpIHtcbi8qKlxuICogQ3JlYXRlcyBhbiBvYmplY3QgcmVwcmVzZW50YXRpb24gb2YgdGhpcyBwcm90by5cbiAqIEZpZWxkIG5hbWVzIHRoYXQgYXJlIHJlc2VydmVkIGluIEphdmFTY3JpcHQgYW5kIHdpbGwgYmUgcmVuYW1lZCB0byBwYl9uYW1lLlxuICogT3B0aW9uYWwgZmllbGRzIHRoYXQgYXJlIG5vdCBzZXQgd2lsbCBiZSBzZXQgdG8gdW5kZWZpbmVkLlxuICogVG8gYWNjZXNzIGEgcmVzZXJ2ZWQgZmllbGQgdXNlLCBmb28ucGJfPG5hbWU+LCBlZywgZm9vLnBiX2RlZmF1bHQuXG4gKiBGb3IgdGhlIGxpc3Qgb2YgcmVzZXJ2ZWQgbmFtZXMgcGxlYXNlIHNlZTpcbiAqICAgICBuZXQvcHJvdG8yL2NvbXBpbGVyL2pzL2ludGVybmFsL2dlbmVyYXRvci5jYyNrS2V5d29yZC5cbiAqIEBwYXJhbSB7Ym9vbGVhbj19IG9wdF9pbmNsdWRlSW5zdGFuY2UgRGVwcmVjYXRlZC4gd2hldGhlciB0byBpbmNsdWRlIHRoZVxuICogICAgIEpTUEIgaW5zdGFuY2UgZm9yIHRyYW5zaXRpb25hbCBzb3kgcHJvdG8gc3VwcG9ydDpcbiAqICAgICBodHRwOi8vZ290by9zb3ktcGFyYW0tbWlncmF0aW9uXG4gKiBAcmV0dXJuIHshT2JqZWN0fVxuICovXG5wcm90by5iYXNlLnYxLkdhbWVHcHNJbmZvLnByb3RvdHlwZS50b09iamVjdCA9IGZ1bmN0aW9uKG9wdF9pbmNsdWRlSW5zdGFuY2UpIHtcbiAgcmV0dXJuIHByb3RvLmJhc2UudjEuR2FtZUdwc0luZm8udG9PYmplY3Qob3B0X2luY2x1ZGVJbnN0YW5jZSwgdGhpcyk7XG59O1xuXG5cbi8qKlxuICogU3RhdGljIHZlcnNpb24gb2YgdGhlIHtAc2VlIHRvT2JqZWN0fSBtZXRob2QuXG4gKiBAcGFyYW0ge2Jvb2xlYW58dW5kZWZpbmVkfSBpbmNsdWRlSW5zdGFuY2UgRGVwcmVjYXRlZC4gV2hldGhlciB0byBpbmNsdWRlXG4gKiAgICAgdGhlIEpTUEIgaW5zdGFuY2UgZm9yIHRyYW5zaXRpb25hbCBzb3kgcHJvdG8gc3VwcG9ydDpcbiAqICAgICBodHRwOi8vZ290by9zb3ktcGFyYW0tbWlncmF0aW9uXG4gKiBAcGFyYW0geyFwcm90by5iYXNlLnYxLkdhbWVHcHNJbmZvfSBtc2cgVGhlIG1zZyBpbnN0YW5jZSB0byB0cmFuc2Zvcm0uXG4gKiBAcmV0dXJuIHshT2JqZWN0fVxuICogQHN1cHByZXNzIHt1bnVzZWRMb2NhbFZhcmlhYmxlc30gZiBpcyBvbmx5IHVzZWQgZm9yIG5lc3RlZCBtZXNzYWdlc1xuICovXG5wcm90by5iYXNlLnYxLkdhbWVHcHNJbmZvLnRvT2JqZWN0ID0gZnVuY3Rpb24oaW5jbHVkZUluc3RhbmNlLCBtc2cpIHtcbiAgdmFyIGYsIG9iaiA9IHtcbiAgICBncHN0aW1lOiAoZiA9IG1zZy5nZXRHcHN0aW1lKCkpICYmIGdvb2dsZV9wcm90b2J1Zl90aW1lc3RhbXBfcGIuVGltZXN0YW1wLnRvT2JqZWN0KGluY2x1ZGVJbnN0YW5jZSwgZiksXG4gICAgbG9uZ2l0dWRlOiBqc3BiLk1lc3NhZ2UuZ2V0RmxvYXRpbmdQb2ludEZpZWxkV2l0aERlZmF1bHQobXNnLCAyLCAwLjApLFxuICAgIGxhdGl0dWRlOiBqc3BiLk1lc3NhZ2UuZ2V0RmxvYXRpbmdQb2ludEZpZWxkV2l0aERlZmF1bHQobXNnLCAzLCAwLjApLFxuICAgIGRpcmVjdGlvbnJhZGlhbjoganNwYi5NZXNzYWdlLmdldEZsb2F0aW5nUG9pbnRGaWVsZFdpdGhEZWZhdWx0KG1zZywgNCwgMC4wKVxuICB9O1xuXG4gIGlmIChpbmNsdWRlSW5zdGFuY2UpIHtcbiAgICBvYmouJGpzcGJNZXNzYWdlSW5zdGFuY2UgPSBtc2c7XG4gIH1cbiAgcmV0dXJuIG9iajtcbn07XG59XG5cblxuLyoqXG4gKiBEZXNlcmlhbGl6ZXMgYmluYXJ5IGRhdGEgKGluIHByb3RvYnVmIHdpcmUgZm9ybWF0KS5cbiAqIEBwYXJhbSB7anNwYi5CeXRlU291cmNlfSBieXRlcyBUaGUgYnl0ZXMgdG8gZGVzZXJpYWxpemUuXG4gKiBAcmV0dXJuIHshcHJvdG8uYmFzZS52MS5HYW1lR3BzSW5mb31cbiAqL1xucHJvdG8uYmFzZS52MS5HYW1lR3BzSW5mby5kZXNlcmlhbGl6ZUJpbmFyeSA9IGZ1bmN0aW9uKGJ5dGVzKSB7XG4gIHZhciByZWFkZXIgPSBuZXcganNwYi5CaW5hcnlSZWFkZXIoYnl0ZXMpO1xuICB2YXIgbXNnID0gbmV3IHByb3RvLmJhc2UudjEuR2FtZUdwc0luZm87XG4gIHJldHVybiBwcm90by5iYXNlLnYxLkdhbWVHcHNJbmZvLmRlc2VyaWFsaXplQmluYXJ5RnJvbVJlYWRlcihtc2csIHJlYWRlcik7XG59O1xuXG5cbi8qKlxuICogRGVzZXJpYWxpemVzIGJpbmFyeSBkYXRhIChpbiBwcm90b2J1ZiB3aXJlIGZvcm1hdCkgZnJvbSB0aGVcbiAqIGdpdmVuIHJlYWRlciBpbnRvIHRoZSBnaXZlbiBtZXNzYWdlIG9iamVjdC5cbiAqIEBwYXJhbSB7IXByb3RvLmJhc2UudjEuR2FtZUdwc0luZm99IG1zZyBUaGUgbWVzc2FnZSBvYmplY3QgdG8gZGVzZXJpYWxpemUgaW50by5cbiAqIEBwYXJhbSB7IWpzcGIuQmluYXJ5UmVhZGVyfSByZWFkZXIgVGhlIEJpbmFyeVJlYWRlciB0byB1c2UuXG4gKiBAcmV0dXJuIHshcHJvdG8uYmFzZS52MS5HYW1lR3BzSW5mb31cbiAqL1xucHJvdG8uYmFzZS52MS5HYW1lR3BzSW5mby5kZXNlcmlhbGl6ZUJpbmFyeUZyb21SZWFkZXIgPSBmdW5jdGlvbihtc2csIHJlYWRlcikge1xuICB3aGlsZSAocmVhZGVyLm5leHRGaWVsZCgpKSB7XG4gICAgaWYgKHJlYWRlci5pc0VuZEdyb3VwKCkpIHtcbiAgICAgIGJyZWFrO1xuICAgIH1cbiAgICB2YXIgZmllbGQgPSByZWFkZXIuZ2V0RmllbGROdW1iZXIoKTtcbiAgICBzd2l0Y2ggKGZpZWxkKSB7XG4gICAgY2FzZSAxOlxuICAgICAgdmFyIHZhbHVlID0gbmV3IGdvb2dsZV9wcm90b2J1Zl90aW1lc3RhbXBfcGIuVGltZXN0YW1wO1xuICAgICAgcmVhZGVyLnJlYWRNZXNzYWdlKHZhbHVlLGdvb2dsZV9wcm90b2J1Zl90aW1lc3RhbXBfcGIuVGltZXN0YW1wLmRlc2VyaWFsaXplQmluYXJ5RnJvbVJlYWRlcik7XG4gICAgICBtc2cuc2V0R3BzdGltZSh2YWx1ZSk7XG4gICAgICBicmVhaztcbiAgICBjYXNlIDI6XG4gICAgICB2YXIgdmFsdWUgPSAvKiogQHR5cGUge251bWJlcn0gKi8gKHJlYWRlci5yZWFkRG91YmxlKCkpO1xuICAgICAgbXNnLnNldExvbmdpdHVkZSh2YWx1ZSk7XG4gICAgICBicmVhaztcbiAgICBjYXNlIDM6XG4gICAgICB2YXIgdmFsdWUgPSAvKiogQHR5cGUge251bWJlcn0gKi8gKHJlYWRlci5yZWFkRG91YmxlKCkpO1xuICAgICAgbXNnLnNldExhdGl0dWRlKHZhbHVlKTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgNDpcbiAgICAgIHZhciB2YWx1ZSA9IC8qKiBAdHlwZSB7bnVtYmVyfSAqLyAocmVhZGVyLnJlYWREb3VibGUoKSk7XG4gICAgICBtc2cuc2V0RGlyZWN0aW9ucmFkaWFuKHZhbHVlKTtcbiAgICAgIGJyZWFrO1xuICAgIGRlZmF1bHQ6XG4gICAgICByZWFkZXIuc2tpcEZpZWxkKCk7XG4gICAgICBicmVhaztcbiAgICB9XG4gIH1cbiAgcmV0dXJuIG1zZztcbn07XG5cblxuLyoqXG4gKiBTZXJpYWxpemVzIHRoZSBtZXNzYWdlIHRvIGJpbmFyeSBkYXRhIChpbiBwcm90b2J1ZiB3aXJlIGZvcm1hdCkuXG4gKiBAcmV0dXJuIHshVWludDhBcnJheX1cbiAqL1xucHJvdG8uYmFzZS52MS5HYW1lR3BzSW5mby5wcm90b3R5cGUuc2VyaWFsaXplQmluYXJ5ID0gZnVuY3Rpb24oKSB7XG4gIHZhciB3cml0ZXIgPSBuZXcganNwYi5CaW5hcnlXcml0ZXIoKTtcbiAgcHJvdG8uYmFzZS52MS5HYW1lR3BzSW5mby5zZXJpYWxpemVCaW5hcnlUb1dyaXRlcih0aGlzLCB3cml0ZXIpO1xuICByZXR1cm4gd3JpdGVyLmdldFJlc3VsdEJ1ZmZlcigpO1xufTtcblxuXG4vKipcbiAqIFNlcmlhbGl6ZXMgdGhlIGdpdmVuIG1lc3NhZ2UgdG8gYmluYXJ5IGRhdGEgKGluIHByb3RvYnVmIHdpcmVcbiAqIGZvcm1hdCksIHdyaXRpbmcgdG8gdGhlIGdpdmVuIEJpbmFyeVdyaXRlci5cbiAqIEBwYXJhbSB7IXByb3RvLmJhc2UudjEuR2FtZUdwc0luZm99IG1lc3NhZ2VcbiAqIEBwYXJhbSB7IWpzcGIuQmluYXJ5V3JpdGVyfSB3cml0ZXJcbiAqIEBzdXBwcmVzcyB7dW51c2VkTG9jYWxWYXJpYWJsZXN9IGYgaXMgb25seSB1c2VkIGZvciBuZXN0ZWQgbWVzc2FnZXNcbiAqL1xucHJvdG8uYmFzZS52MS5HYW1lR3BzSW5mby5zZXJpYWxpemVCaW5hcnlUb1dyaXRlciA9IGZ1bmN0aW9uKG1lc3NhZ2UsIHdyaXRlcikge1xuICB2YXIgZiA9IHVuZGVmaW5lZDtcbiAgZiA9IG1lc3NhZ2UuZ2V0R3BzdGltZSgpO1xuICBpZiAoZiAhPSBudWxsKSB7XG4gICAgd3JpdGVyLndyaXRlTWVzc2FnZShcbiAgICAgIDEsXG4gICAgICBmLFxuICAgICAgZ29vZ2xlX3Byb3RvYnVmX3RpbWVzdGFtcF9wYi5UaW1lc3RhbXAuc2VyaWFsaXplQmluYXJ5VG9Xcml0ZXJcbiAgICApO1xuICB9XG4gIGYgPSBtZXNzYWdlLmdldExvbmdpdHVkZSgpO1xuICBpZiAoZiAhPT0gMC4wKSB7XG4gICAgd3JpdGVyLndyaXRlRG91YmxlKFxuICAgICAgMixcbiAgICAgIGZcbiAgICApO1xuICB9XG4gIGYgPSBtZXNzYWdlLmdldExhdGl0dWRlKCk7XG4gIGlmIChmICE9PSAwLjApIHtcbiAgICB3cml0ZXIud3JpdGVEb3VibGUoXG4gICAgICAzLFxuICAgICAgZlxuICAgICk7XG4gIH1cbiAgZiA9IG1lc3NhZ2UuZ2V0RGlyZWN0aW9ucmFkaWFuKCk7XG4gIGlmIChmICE9PSAwLjApIHtcbiAgICB3cml0ZXIud3JpdGVEb3VibGUoXG4gICAgICA0LFxuICAgICAgZlxuICAgICk7XG4gIH1cbn07XG5cblxuLyoqXG4gKiBvcHRpb25hbCBnb29nbGUucHJvdG9idWYuVGltZXN0YW1wIGdwc1RpbWUgPSAxO1xuICogQHJldHVybiB7P3Byb3RvLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXB9XG4gKi9cbnByb3RvLmJhc2UudjEuR2FtZUdwc0luZm8ucHJvdG90eXBlLmdldEdwc3RpbWUgPSBmdW5jdGlvbigpIHtcbiAgcmV0dXJuIC8qKiBAdHlwZXs/cHJvdG8uZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcH0gKi8gKFxuICAgIGpzcGIuTWVzc2FnZS5nZXRXcmFwcGVyRmllbGQodGhpcywgZ29vZ2xlX3Byb3RvYnVmX3RpbWVzdGFtcF9wYi5UaW1lc3RhbXAsIDEpKTtcbn07XG5cblxuLyoqXG4gKiBAcGFyYW0gez9wcm90by5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wfHVuZGVmaW5lZH0gdmFsdWVcbiAqIEByZXR1cm4geyFwcm90by5iYXNlLnYxLkdhbWVHcHNJbmZvfSByZXR1cm5zIHRoaXNcbiovXG5wcm90by5iYXNlLnYxLkdhbWVHcHNJbmZvLnByb3RvdHlwZS5zZXRHcHN0aW1lID0gZnVuY3Rpb24odmFsdWUpIHtcbiAgcmV0dXJuIGpzcGIuTWVzc2FnZS5zZXRXcmFwcGVyRmllbGQodGhpcywgMSwgdmFsdWUpO1xufTtcblxuXG4vKipcbiAqIENsZWFycyB0aGUgbWVzc2FnZSBmaWVsZCBtYWtpbmcgaXQgdW5kZWZpbmVkLlxuICogQHJldHVybiB7IXByb3RvLmJhc2UudjEuR2FtZUdwc0luZm99IHJldHVybnMgdGhpc1xuICovXG5wcm90by5iYXNlLnYxLkdhbWVHcHNJbmZvLnByb3RvdHlwZS5jbGVhckdwc3RpbWUgPSBmdW5jdGlvbigpIHtcbiAgcmV0dXJuIHRoaXMuc2V0R3BzdGltZSh1bmRlZmluZWQpO1xufTtcblxuXG4vKipcbiAqIFJldHVybnMgd2hldGhlciB0aGlzIGZpZWxkIGlzIHNldC5cbiAqIEByZXR1cm4ge2Jvb2xlYW59XG4gKi9cbnByb3RvLmJhc2UudjEuR2FtZUdwc0luZm8ucHJvdG90eXBlLmhhc0dwc3RpbWUgPSBmdW5jdGlvbigpIHtcbiAgcmV0dXJuIGpzcGIuTWVzc2FnZS5nZXRGaWVsZCh0aGlzLCAxKSAhPSBudWxsO1xufTtcblxuXG4vKipcbiAqIG9wdGlvbmFsIGRvdWJsZSBsb25naXR1ZGUgPSAyO1xuICogQHJldHVybiB7bnVtYmVyfVxuICovXG5wcm90by5iYXNlLnYxLkdhbWVHcHNJbmZvLnByb3RvdHlwZS5nZXRMb25naXR1ZGUgPSBmdW5jdGlvbigpIHtcbiAgcmV0dXJuIC8qKiBAdHlwZSB7bnVtYmVyfSAqLyAoanNwYi5NZXNzYWdlLmdldEZsb2F0aW5nUG9pbnRGaWVsZFdpdGhEZWZhdWx0KHRoaXMsIDIsIDAuMCkpO1xufTtcblxuXG4vKipcbiAqIEBwYXJhbSB7bnVtYmVyfSB2YWx1ZVxuICogQHJldHVybiB7IXByb3RvLmJhc2UudjEuR2FtZUdwc0luZm99IHJldHVybnMgdGhpc1xuICovXG5wcm90by5iYXNlLnYxLkdhbWVHcHNJbmZvLnByb3RvdHlwZS5zZXRMb25naXR1ZGUgPSBmdW5jdGlvbih2YWx1ZSkge1xuICByZXR1cm4ganNwYi5NZXNzYWdlLnNldFByb3RvM0Zsb2F0RmllbGQodGhpcywgMiwgdmFsdWUpO1xufTtcblxuXG4vKipcbiAqIG9wdGlvbmFsIGRvdWJsZSBsYXRpdHVkZSA9IDM7XG4gKiBAcmV0dXJuIHtudW1iZXJ9XG4gKi9cbnByb3RvLmJhc2UudjEuR2FtZUdwc0luZm8ucHJvdG90eXBlLmdldExhdGl0dWRlID0gZnVuY3Rpb24oKSB7XG4gIHJldHVybiAvKiogQHR5cGUge251bWJlcn0gKi8gKGpzcGIuTWVzc2FnZS5nZXRGbG9hdGluZ1BvaW50RmllbGRXaXRoRGVmYXVsdCh0aGlzLCAzLCAwLjApKTtcbn07XG5cblxuLyoqXG4gKiBAcGFyYW0ge251bWJlcn0gdmFsdWVcbiAqIEByZXR1cm4geyFwcm90by5iYXNlLnYxLkdhbWVHcHNJbmZvfSByZXR1cm5zIHRoaXNcbiAqL1xucHJvdG8uYmFzZS52MS5HYW1lR3BzSW5mby5wcm90b3R5cGUuc2V0TGF0aXR1ZGUgPSBmdW5jdGlvbih2YWx1ZSkge1xuICByZXR1cm4ganNwYi5NZXNzYWdlLnNldFByb3RvM0Zsb2F0RmllbGQodGhpcywgMywgdmFsdWUpO1xufTtcblxuXG4vKipcbiAqIG9wdGlvbmFsIGRvdWJsZSBkaXJlY3Rpb25SYWRpYW4gPSA0O1xuICogQHJldHVybiB7bnVtYmVyfVxuICovXG5wcm90by5iYXNlLnYxLkdhbWVHcHNJbmZvLnByb3RvdHlwZS5nZXREaXJlY3Rpb25yYWRpYW4gPSBmdW5jdGlvbigpIHtcbiAgcmV0dXJuIC8qKiBAdHlwZSB7bnVtYmVyfSAqLyAoanNwYi5NZXNzYWdlLmdldEZsb2F0aW5nUG9pbnRGaWVsZFdpdGhEZWZhdWx0KHRoaXMsIDQsIDAuMCkpO1xufTtcblxuXG4vKipcbiAqIEBwYXJhbSB7bnVtYmVyfSB2YWx1ZVxuICogQHJldHVybiB7IXByb3RvLmJhc2UudjEuR2FtZUdwc0luZm99IHJldHVybnMgdGhpc1xuICovXG5wcm90by5iYXNlLnYxLkdhbWVHcHNJbmZvLnByb3RvdHlwZS5zZXREaXJlY3Rpb25yYWRpYW4gPSBmdW5jdGlvbih2YWx1ZSkge1xuICByZXR1cm4ganNwYi5NZXNzYWdlLnNldFByb3RvM0Zsb2F0RmllbGQodGhpcywgNCwgdmFsdWUpO1xufTtcblxuXG5cblxuXG5pZiAoanNwYi5NZXNzYWdlLkdFTkVSQVRFX1RPX09CSkVDVCkge1xuLyoqXG4gKiBDcmVhdGVzIGFuIG9iamVjdCByZXByZXNlbnRhdGlvbiBvZiB0aGlzIHByb3RvLlxuICogRmllbGQgbmFtZXMgdGhhdCBhcmUgcmVzZXJ2ZWQgaW4gSmF2YVNjcmlwdCBhbmQgd2lsbCBiZSByZW5hbWVkIHRvIHBiX25hbWUuXG4gKiBPcHRpb25hbCBmaWVsZHMgdGhhdCBhcmUgbm90IHNldCB3aWxsIGJlIHNldCB0byB1bmRlZmluZWQuXG4gKiBUbyBhY2Nlc3MgYSByZXNlcnZlZCBmaWVsZCB1c2UsIGZvby5wYl88bmFtZT4sIGVnLCBmb28ucGJfZGVmYXVsdC5cbiAqIEZvciB0aGUgbGlzdCBvZiByZXNlcnZlZCBuYW1lcyBwbGVhc2Ugc2VlOlxuICogICAgIG5ldC9wcm90bzIvY29tcGlsZXIvanMvaW50ZXJuYWwvZ2VuZXJhdG9yLmNjI2tLZXl3b3JkLlxuICogQHBhcmFtIHtib29sZWFuPX0gb3B0X2luY2x1ZGVJbnN0YW5jZSBEZXByZWNhdGVkLiB3aGV0aGVyIHRvIGluY2x1ZGUgdGhlXG4gKiAgICAgSlNQQiBpbnN0YW5jZSBmb3IgdHJhbnNpdGlvbmFsIHNveSBwcm90byBzdXBwb3J0OlxuICogICAgIGh0dHA6Ly9nb3RvL3NveS1wYXJhbS1taWdyYXRpb25cbiAqIEByZXR1cm4geyFPYmplY3R9XG4gKi9cbnByb3RvLmJhc2UudjEuSGVhcnRSYXRlLnByb3RvdHlwZS50b09iamVjdCA9IGZ1bmN0aW9uKG9wdF9pbmNsdWRlSW5zdGFuY2UpIHtcbiAgcmV0dXJuIHByb3RvLmJhc2UudjEuSGVhcnRSYXRlLnRvT2JqZWN0KG9wdF9pbmNsdWRlSW5zdGFuY2UsIHRoaXMpO1xufTtcblxuXG4vKipcbiAqIFN0YXRpYyB2ZXJzaW9uIG9mIHRoZSB7QHNlZSB0b09iamVjdH0gbWV0aG9kLlxuICogQHBhcmFtIHtib29sZWFufHVuZGVmaW5lZH0gaW5jbHVkZUluc3RhbmNlIERlcHJlY2F0ZWQuIFdoZXRoZXIgdG8gaW5jbHVkZVxuICogICAgIHRoZSBKU1BCIGluc3RhbmNlIGZvciB0cmFuc2l0aW9uYWwgc295IHByb3RvIHN1cHBvcnQ6XG4gKiAgICAgaHR0cDovL2dvdG8vc295LXBhcmFtLW1pZ3JhdGlvblxuICogQHBhcmFtIHshcHJvdG8uYmFzZS52MS5IZWFydFJhdGV9IG1zZyBUaGUgbXNnIGluc3RhbmNlIHRvIHRyYW5zZm9ybS5cbiAqIEByZXR1cm4geyFPYmplY3R9XG4gKiBAc3VwcHJlc3Mge3VudXNlZExvY2FsVmFyaWFibGVzfSBmIGlzIG9ubHkgdXNlZCBmb3IgbmVzdGVkIG1lc3NhZ2VzXG4gKi9cbnByb3RvLmJhc2UudjEuSGVhcnRSYXRlLnRvT2JqZWN0ID0gZnVuY3Rpb24oaW5jbHVkZUluc3RhbmNlLCBtc2cpIHtcbiAgdmFyIGYsIG9iaiA9IHtcbiAgICB0aW1lc3RhbXBtczoganNwYi5NZXNzYWdlLmdldEZpZWxkV2l0aERlZmF1bHQobXNnLCAxLCAwKSxcbiAgICBocjoganNwYi5NZXNzYWdlLmdldEZpZWxkV2l0aERlZmF1bHQobXNnLCAyLCAwKVxuICB9O1xuXG4gIGlmIChpbmNsdWRlSW5zdGFuY2UpIHtcbiAgICBvYmouJGpzcGJNZXNzYWdlSW5zdGFuY2UgPSBtc2c7XG4gIH1cbiAgcmV0dXJuIG9iajtcbn07XG59XG5cblxuLyoqXG4gKiBEZXNlcmlhbGl6ZXMgYmluYXJ5IGRhdGEgKGluIHByb3RvYnVmIHdpcmUgZm9ybWF0KS5cbiAqIEBwYXJhbSB7anNwYi5CeXRlU291cmNlfSBieXRlcyBUaGUgYnl0ZXMgdG8gZGVzZXJpYWxpemUuXG4gKiBAcmV0dXJuIHshcHJvdG8uYmFzZS52MS5IZWFydFJhdGV9XG4gKi9cbnByb3RvLmJhc2UudjEuSGVhcnRSYXRlLmRlc2VyaWFsaXplQmluYXJ5ID0gZnVuY3Rpb24oYnl0ZXMpIHtcbiAgdmFyIHJlYWRlciA9IG5ldyBqc3BiLkJpbmFyeVJlYWRlcihieXRlcyk7XG4gIHZhciBtc2cgPSBuZXcgcHJvdG8uYmFzZS52MS5IZWFydFJhdGU7XG4gIHJldHVybiBwcm90by5iYXNlLnYxLkhlYXJ0UmF0ZS5kZXNlcmlhbGl6ZUJpbmFyeUZyb21SZWFkZXIobXNnLCByZWFkZXIpO1xufTtcblxuXG4vKipcbiAqIERlc2VyaWFsaXplcyBiaW5hcnkgZGF0YSAoaW4gcHJvdG9idWYgd2lyZSBmb3JtYXQpIGZyb20gdGhlXG4gKiBnaXZlbiByZWFkZXIgaW50byB0aGUgZ2l2ZW4gbWVzc2FnZSBvYmplY3QuXG4gKiBAcGFyYW0geyFwcm90by5iYXNlLnYxLkhlYXJ0UmF0ZX0gbXNnIFRoZSBtZXNzYWdlIG9iamVjdCB0byBkZXNlcmlhbGl6ZSBpbnRvLlxuICogQHBhcmFtIHshanNwYi5CaW5hcnlSZWFkZXJ9IHJlYWRlciBUaGUgQmluYXJ5UmVhZGVyIHRvIHVzZS5cbiAqIEByZXR1cm4geyFwcm90by5iYXNlLnYxLkhlYXJ0UmF0ZX1cbiAqL1xucHJvdG8uYmFzZS52MS5IZWFydFJhdGUuZGVzZXJpYWxpemVCaW5hcnlGcm9tUmVhZGVyID0gZnVuY3Rpb24obXNnLCByZWFkZXIpIHtcbiAgd2hpbGUgKHJlYWRlci5uZXh0RmllbGQoKSkge1xuICAgIGlmIChyZWFkZXIuaXNFbmRHcm91cCgpKSB7XG4gICAgICBicmVhaztcbiAgICB9XG4gICAgdmFyIGZpZWxkID0gcmVhZGVyLmdldEZpZWxkTnVtYmVyKCk7XG4gICAgc3dpdGNoIChmaWVsZCkge1xuICAgIGNhc2UgMTpcbiAgICAgIHZhciB2YWx1ZSA9IC8qKiBAdHlwZSB7bnVtYmVyfSAqLyAocmVhZGVyLnJlYWRJbnQ2NCgpKTtcbiAgICAgIG1zZy5zZXRUaW1lc3RhbXBtcyh2YWx1ZSk7XG4gICAgICBicmVhaztcbiAgICBjYXNlIDI6XG4gICAgICB2YXIgdmFsdWUgPSAvKiogQHR5cGUge251bWJlcn0gKi8gKHJlYWRlci5yZWFkSW50MzIoKSk7XG4gICAgICBtc2cuc2V0SHIodmFsdWUpO1xuICAgICAgYnJlYWs7XG4gICAgZGVmYXVsdDpcbiAgICAgIHJlYWRlci5za2lwRmllbGQoKTtcbiAgICAgIGJyZWFrO1xuICAgIH1cbiAgfVxuICByZXR1cm4gbXNnO1xufTtcblxuXG4vKipcbiAqIFNlcmlhbGl6ZXMgdGhlIG1lc3NhZ2UgdG8gYmluYXJ5IGRhdGEgKGluIHByb3RvYnVmIHdpcmUgZm9ybWF0KS5cbiAqIEByZXR1cm4geyFVaW50OEFycmF5fVxuICovXG5wcm90by5iYXNlLnYxLkhlYXJ0UmF0ZS5wcm90b3R5cGUuc2VyaWFsaXplQmluYXJ5ID0gZnVuY3Rpb24oKSB7XG4gIHZhciB3cml0ZXIgPSBuZXcganNwYi5CaW5hcnlXcml0ZXIoKTtcbiAgcHJvdG8uYmFzZS52MS5IZWFydFJhdGUuc2VyaWFsaXplQmluYXJ5VG9Xcml0ZXIodGhpcywgd3JpdGVyKTtcbiAgcmV0dXJuIHdyaXRlci5nZXRSZXN1bHRCdWZmZXIoKTtcbn07XG5cblxuLyoqXG4gKiBTZXJpYWxpemVzIHRoZSBnaXZlbiBtZXNzYWdlIHRvIGJpbmFyeSBkYXRhIChpbiBwcm90b2J1ZiB3aXJlXG4gKiBmb3JtYXQpLCB3cml0aW5nIHRvIHRoZSBnaXZlbiBCaW5hcnlXcml0ZXIuXG4gKiBAcGFyYW0geyFwcm90by5iYXNlLnYxLkhlYXJ0UmF0ZX0gbWVzc2FnZVxuICogQHBhcmFtIHshanNwYi5CaW5hcnlXcml0ZXJ9IHdyaXRlclxuICogQHN1cHByZXNzIHt1bnVzZWRMb2NhbFZhcmlhYmxlc30gZiBpcyBvbmx5IHVzZWQgZm9yIG5lc3RlZCBtZXNzYWdlc1xuICovXG5wcm90by5iYXNlLnYxLkhlYXJ0UmF0ZS5zZXJpYWxpemVCaW5hcnlUb1dyaXRlciA9IGZ1bmN0aW9uKG1lc3NhZ2UsIHdyaXRlcikge1xuICB2YXIgZiA9IHVuZGVmaW5lZDtcbiAgZiA9IG1lc3NhZ2UuZ2V0VGltZXN0YW1wbXMoKTtcbiAgaWYgKGYgIT09IDApIHtcbiAgICB3cml0ZXIud3JpdGVJbnQ2NChcbiAgICAgIDEsXG4gICAgICBmXG4gICAgKTtcbiAgfVxuICBmID0gbWVzc2FnZS5nZXRIcigpO1xuICBpZiAoZiAhPT0gMCkge1xuICAgIHdyaXRlci53cml0ZUludDMyKFxuICAgICAgMixcbiAgICAgIGZcbiAgICApO1xuICB9XG59O1xuXG5cbi8qKlxuICogb3B0aW9uYWwgaW50NjQgdGltZVN0YW1wTXMgPSAxO1xuICogQHJldHVybiB7bnVtYmVyfVxuICovXG5wcm90by5iYXNlLnYxLkhlYXJ0UmF0ZS5wcm90b3R5cGUuZ2V0VGltZXN0YW1wbXMgPSBmdW5jdGlvbigpIHtcbiAgcmV0dXJuIC8qKiBAdHlwZSB7bnVtYmVyfSAqLyAoanNwYi5NZXNzYWdlLmdldEZpZWxkV2l0aERlZmF1bHQodGhpcywgMSwgMCkpO1xufTtcblxuXG4vKipcbiAqIEBwYXJhbSB7bnVtYmVyfSB2YWx1ZVxuICogQHJldHVybiB7IXByb3RvLmJhc2UudjEuSGVhcnRSYXRlfSByZXR1cm5zIHRoaXNcbiAqL1xucHJvdG8uYmFzZS52MS5IZWFydFJhdGUucHJvdG90eXBlLnNldFRpbWVzdGFtcG1zID0gZnVuY3Rpb24odmFsdWUpIHtcbiAgcmV0dXJuIGpzcGIuTWVzc2FnZS5zZXRQcm90bzNJbnRGaWVsZCh0aGlzLCAxLCB2YWx1ZSk7XG59O1xuXG5cbi8qKlxuICogb3B0aW9uYWwgaW50MzIgaHIgPSAyO1xuICogQHJldHVybiB7bnVtYmVyfVxuICovXG5wcm90by5iYXNlLnYxLkhlYXJ0UmF0ZS5wcm90b3R5cGUuZ2V0SHIgPSBmdW5jdGlvbigpIHtcbiAgcmV0dXJuIC8qKiBAdHlwZSB7bnVtYmVyfSAqLyAoanNwYi5NZXNzYWdlLmdldEZpZWxkV2l0aERlZmF1bHQodGhpcywgMiwgMCkpO1xufTtcblxuXG4vKipcbiAqIEBwYXJhbSB7bnVtYmVyfSB2YWx1ZVxuICogQHJldHVybiB7IXByb3RvLmJhc2UudjEuSGVhcnRSYXRlfSByZXR1cm5zIHRoaXNcbiAqL1xucHJvdG8uYmFzZS52MS5IZWFydFJhdGUucHJvdG90eXBlLnNldEhyID0gZnVuY3Rpb24odmFsdWUpIHtcbiAgcmV0dXJuIGpzcGIuTWVzc2FnZS5zZXRQcm90bzNJbnRGaWVsZCh0aGlzLCAyLCB2YWx1ZSk7XG59O1xuXG5cblxuXG5cbmlmIChqc3BiLk1lc3NhZ2UuR0VORVJBVEVfVE9fT0JKRUNUKSB7XG4vKipcbiAqIENyZWF0ZXMgYW4gb2JqZWN0IHJlcHJlc2VudGF0aW9uIG9mIHRoaXMgcHJvdG8uXG4gKiBGaWVsZCBuYW1lcyB0aGF0IGFyZSByZXNlcnZlZCBpbiBKYXZhU2NyaXB0IGFuZCB3aWxsIGJlIHJlbmFtZWQgdG8gcGJfbmFtZS5cbiAqIE9wdGlvbmFsIGZpZWxkcyB0aGF0IGFyZSBub3Qgc2V0IHdpbGwgYmUgc2V0IHRvIHVuZGVmaW5lZC5cbiAqIFRvIGFjY2VzcyBhIHJlc2VydmVkIGZpZWxkIHVzZSwgZm9vLnBiXzxuYW1lPiwgZWcsIGZvby5wYl9kZWZhdWx0LlxuICogRm9yIHRoZSBsaXN0IG9mIHJlc2VydmVkIG5hbWVzIHBsZWFzZSBzZWU6XG4gKiAgICAgbmV0L3Byb3RvMi9jb21waWxlci9qcy9pbnRlcm5hbC9nZW5lcmF0b3IuY2Mja0tleXdvcmQuXG4gKiBAcGFyYW0ge2Jvb2xlYW49fSBvcHRfaW5jbHVkZUluc3RhbmNlIERlcHJlY2F0ZWQuIHdoZXRoZXIgdG8gaW5jbHVkZSB0aGVcbiAqICAgICBKU1BCIGluc3RhbmNlIGZvciB0cmFuc2l0aW9uYWwgc295IHByb3RvIHN1cHBvcnQ6XG4gKiAgICAgaHR0cDovL2dvdG8vc295LXBhcmFtLW1pZ3JhdGlvblxuICogQHJldHVybiB7IU9iamVjdH1cbiAqL1xucHJvdG8uYmFzZS52MS5TaWduSW5SZXBseS5wcm90b3R5cGUudG9PYmplY3QgPSBmdW5jdGlvbihvcHRfaW5jbHVkZUluc3RhbmNlKSB7XG4gIHJldHVybiBwcm90by5iYXNlLnYxLlNpZ25JblJlcGx5LnRvT2JqZWN0KG9wdF9pbmNsdWRlSW5zdGFuY2UsIHRoaXMpO1xufTtcblxuXG4vKipcbiAqIFN0YXRpYyB2ZXJzaW9uIG9mIHRoZSB7QHNlZSB0b09iamVjdH0gbWV0aG9kLlxuICogQHBhcmFtIHtib29sZWFufHVuZGVmaW5lZH0gaW5jbHVkZUluc3RhbmNlIERlcHJlY2F0ZWQuIFdoZXRoZXIgdG8gaW5jbHVkZVxuICogICAgIHRoZSBKU1BCIGluc3RhbmNlIGZvciB0cmFuc2l0aW9uYWwgc295IHByb3RvIHN1cHBvcnQ6XG4gKiAgICAgaHR0cDovL2dvdG8vc295LXBhcmFtLW1pZ3JhdGlvblxuICogQHBhcmFtIHshcHJvdG8uYmFzZS52MS5TaWduSW5SZXBseX0gbXNnIFRoZSBtc2cgaW5zdGFuY2UgdG8gdHJhbnNmb3JtLlxuICogQHJldHVybiB7IU9iamVjdH1cbiAqIEBzdXBwcmVzcyB7dW51c2VkTG9jYWxWYXJpYWJsZXN9IGYgaXMgb25seSB1c2VkIGZvciBuZXN0ZWQgbWVzc2FnZXNcbiAqL1xucHJvdG8uYmFzZS52MS5TaWduSW5SZXBseS50b09iamVjdCA9IGZ1bmN0aW9uKGluY2x1ZGVJbnN0YW5jZSwgbXNnKSB7XG4gIHZhciBmLCBvYmogPSB7XG4gICAgdG9rZW46IGpzcGIuTWVzc2FnZS5nZXRGaWVsZFdpdGhEZWZhdWx0KG1zZywgMSwgXCJcIilcbiAgfTtcblxuICBpZiAoaW5jbHVkZUluc3RhbmNlKSB7XG4gICAgb2JqLiRqc3BiTWVzc2FnZUluc3RhbmNlID0gbXNnO1xuICB9XG4gIHJldHVybiBvYmo7XG59O1xufVxuXG5cbi8qKlxuICogRGVzZXJpYWxpemVzIGJpbmFyeSBkYXRhIChpbiBwcm90b2J1ZiB3aXJlIGZvcm1hdCkuXG4gKiBAcGFyYW0ge2pzcGIuQnl0ZVNvdXJjZX0gYnl0ZXMgVGhlIGJ5dGVzIHRvIGRlc2VyaWFsaXplLlxuICogQHJldHVybiB7IXByb3RvLmJhc2UudjEuU2lnbkluUmVwbHl9XG4gKi9cbnByb3RvLmJhc2UudjEuU2lnbkluUmVwbHkuZGVzZXJpYWxpemVCaW5hcnkgPSBmdW5jdGlvbihieXRlcykge1xuICB2YXIgcmVhZGVyID0gbmV3IGpzcGIuQmluYXJ5UmVhZGVyKGJ5dGVzKTtcbiAgdmFyIG1zZyA9IG5ldyBwcm90by5iYXNlLnYxLlNpZ25JblJlcGx5O1xuICByZXR1cm4gcHJvdG8uYmFzZS52MS5TaWduSW5SZXBseS5kZXNlcmlhbGl6ZUJpbmFyeUZyb21SZWFkZXIobXNnLCByZWFkZXIpO1xufTtcblxuXG4vKipcbiAqIERlc2VyaWFsaXplcyBiaW5hcnkgZGF0YSAoaW4gcHJvdG9idWYgd2lyZSBmb3JtYXQpIGZyb20gdGhlXG4gKiBnaXZlbiByZWFkZXIgaW50byB0aGUgZ2l2ZW4gbWVzc2FnZSBvYmplY3QuXG4gKiBAcGFyYW0geyFwcm90by5iYXNlLnYxLlNpZ25JblJlcGx5fSBtc2cgVGhlIG1lc3NhZ2Ugb2JqZWN0IHRvIGRlc2VyaWFsaXplIGludG8uXG4gKiBAcGFyYW0geyFqc3BiLkJpbmFyeVJlYWRlcn0gcmVhZGVyIFRoZSBCaW5hcnlSZWFkZXIgdG8gdXNlLlxuICogQHJldHVybiB7IXByb3RvLmJhc2UudjEuU2lnbkluUmVwbHl9XG4gKi9cbnByb3RvLmJhc2UudjEuU2lnbkluUmVwbHkuZGVzZXJpYWxpemVCaW5hcnlGcm9tUmVhZGVyID0gZnVuY3Rpb24obXNnLCByZWFkZXIpIHtcbiAgd2hpbGUgKHJlYWRlci5uZXh0RmllbGQoKSkge1xuICAgIGlmIChyZWFkZXIuaXNFbmRHcm91cCgpKSB7XG4gICAgICBicmVhaztcbiAgICB9XG4gICAgdmFyIGZpZWxkID0gcmVhZGVyLmdldEZpZWxkTnVtYmVyKCk7XG4gICAgc3dpdGNoIChmaWVsZCkge1xuICAgIGNhc2UgMTpcbiAgICAgIHZhciB2YWx1ZSA9IC8qKiBAdHlwZSB7c3RyaW5nfSAqLyAocmVhZGVyLnJlYWRTdHJpbmcoKSk7XG4gICAgICBtc2cuc2V0VG9rZW4odmFsdWUpO1xuICAgICAgYnJlYWs7XG4gICAgZGVmYXVsdDpcbiAgICAgIHJlYWRlci5za2lwRmllbGQoKTtcbiAgICAgIGJyZWFrO1xuICAgIH1cbiAgfVxuICByZXR1cm4gbXNnO1xufTtcblxuXG4vKipcbiAqIFNlcmlhbGl6ZXMgdGhlIG1lc3NhZ2UgdG8gYmluYXJ5IGRhdGEgKGluIHByb3RvYnVmIHdpcmUgZm9ybWF0KS5cbiAqIEByZXR1cm4geyFVaW50OEFycmF5fVxuICovXG5wcm90by5iYXNlLnYxLlNpZ25JblJlcGx5LnByb3RvdHlwZS5zZXJpYWxpemVCaW5hcnkgPSBmdW5jdGlvbigpIHtcbiAgdmFyIHdyaXRlciA9IG5ldyBqc3BiLkJpbmFyeVdyaXRlcigpO1xuICBwcm90by5iYXNlLnYxLlNpZ25JblJlcGx5LnNlcmlhbGl6ZUJpbmFyeVRvV3JpdGVyKHRoaXMsIHdyaXRlcik7XG4gIHJldHVybiB3cml0ZXIuZ2V0UmVzdWx0QnVmZmVyKCk7XG59O1xuXG5cbi8qKlxuICogU2VyaWFsaXplcyB0aGUgZ2l2ZW4gbWVzc2FnZSB0byBiaW5hcnkgZGF0YSAoaW4gcHJvdG9idWYgd2lyZVxuICogZm9ybWF0KSwgd3JpdGluZyB0byB0aGUgZ2l2ZW4gQmluYXJ5V3JpdGVyLlxuICogQHBhcmFtIHshcHJvdG8uYmFzZS52MS5TaWduSW5SZXBseX0gbWVzc2FnZVxuICogQHBhcmFtIHshanNwYi5CaW5hcnlXcml0ZXJ9IHdyaXRlclxuICogQHN1cHByZXNzIHt1bnVzZWRMb2NhbFZhcmlhYmxlc30gZiBpcyBvbmx5IHVzZWQgZm9yIG5lc3RlZCBtZXNzYWdlc1xuICovXG5wcm90by5iYXNlLnYxLlNpZ25JblJlcGx5LnNlcmlhbGl6ZUJpbmFyeVRvV3JpdGVyID0gZnVuY3Rpb24obWVzc2FnZSwgd3JpdGVyKSB7XG4gIHZhciBmID0gdW5kZWZpbmVkO1xuICBmID0gbWVzc2FnZS5nZXRUb2tlbigpO1xuICBpZiAoZi5sZW5ndGggPiAwKSB7XG4gICAgd3JpdGVyLndyaXRlU3RyaW5nKFxuICAgICAgMSxcbiAgICAgIGZcbiAgICApO1xuICB9XG59O1xuXG5cbi8qKlxuICogb3B0aW9uYWwgc3RyaW5nIHRva2VuID0gMTtcbiAqIEByZXR1cm4ge3N0cmluZ31cbiAqL1xucHJvdG8uYmFzZS52MS5TaWduSW5SZXBseS5wcm90b3R5cGUuZ2V0VG9rZW4gPSBmdW5jdGlvbigpIHtcbiAgcmV0dXJuIC8qKiBAdHlwZSB7c3RyaW5nfSAqLyAoanNwYi5NZXNzYWdlLmdldEZpZWxkV2l0aERlZmF1bHQodGhpcywgMSwgXCJcIikpO1xufTtcblxuXG4vKipcbiAqIEBwYXJhbSB7c3RyaW5nfSB2YWx1ZVxuICogQHJldHVybiB7IXByb3RvLmJhc2UudjEuU2lnbkluUmVwbHl9IHJldHVybnMgdGhpc1xuICovXG5wcm90by5iYXNlLnYxLlNpZ25JblJlcGx5LnByb3RvdHlwZS5zZXRUb2tlbiA9IGZ1bmN0aW9uKHZhbHVlKSB7XG4gIHJldHVybiBqc3BiLk1lc3NhZ2Uuc2V0UHJvdG8zU3RyaW5nRmllbGQodGhpcywgMSwgdmFsdWUpO1xufTtcblxuXG5cblxuXG5pZiAoanNwYi5NZXNzYWdlLkdFTkVSQVRFX1RPX09CSkVDVCkge1xuLyoqXG4gKiBDcmVhdGVzIGFuIG9iamVjdCByZXByZXNlbnRhdGlvbiBvZiB0aGlzIHByb3RvLlxuICogRmllbGQgbmFtZXMgdGhhdCBhcmUgcmVzZXJ2ZWQgaW4gSmF2YVNjcmlwdCBhbmQgd2lsbCBiZSByZW5hbWVkIHRvIHBiX25hbWUuXG4gKiBPcHRpb25hbCBmaWVsZHMgdGhhdCBhcmUgbm90IHNldCB3aWxsIGJlIHNldCB0byB1bmRlZmluZWQuXG4gKiBUbyBhY2Nlc3MgYSByZXNlcnZlZCBmaWVsZCB1c2UsIGZvby5wYl88bmFtZT4sIGVnLCBmb28ucGJfZGVmYXVsdC5cbiAqIEZvciB0aGUgbGlzdCBvZiByZXNlcnZlZCBuYW1lcyBwbGVhc2Ugc2VlOlxuICogICAgIG5ldC9wcm90bzIvY29tcGlsZXIvanMvaW50ZXJuYWwvZ2VuZXJhdG9yLmNjI2tLZXl3b3JkLlxuICogQHBhcmFtIHtib29sZWFuPX0gb3B0X2luY2x1ZGVJbnN0YW5jZSBEZXByZWNhdGVkLiB3aGV0aGVyIHRvIGluY2x1ZGUgdGhlXG4gKiAgICAgSlNQQiBpbnN0YW5jZSBmb3IgdHJhbnNpdGlvbmFsIHNveSBwcm90byBzdXBwb3J0OlxuICogICAgIGh0dHA6Ly9nb3RvL3NveS1wYXJhbS1taWdyYXRpb25cbiAqIEByZXR1cm4geyFPYmplY3R9XG4gKi9cbnByb3RvLmJhc2UudjEuTWFwUm91dGUucHJvdG90eXBlLnRvT2JqZWN0ID0gZnVuY3Rpb24ob3B0X2luY2x1ZGVJbnN0YW5jZSkge1xuICByZXR1cm4gcHJvdG8uYmFzZS52MS5NYXBSb3V0ZS50b09iamVjdChvcHRfaW5jbHVkZUluc3RhbmNlLCB0aGlzKTtcbn07XG5cblxuLyoqXG4gKiBTdGF0aWMgdmVyc2lvbiBvZiB0aGUge0BzZWUgdG9PYmplY3R9IG1ldGhvZC5cbiAqIEBwYXJhbSB7Ym9vbGVhbnx1bmRlZmluZWR9IGluY2x1ZGVJbnN0YW5jZSBEZXByZWNhdGVkLiBXaGV0aGVyIHRvIGluY2x1ZGVcbiAqICAgICB0aGUgSlNQQiBpbnN0YW5jZSBmb3IgdHJhbnNpdGlvbmFsIHNveSBwcm90byBzdXBwb3J0OlxuICogICAgIGh0dHA6Ly9nb3RvL3NveS1wYXJhbS1taWdyYXRpb25cbiAqIEBwYXJhbSB7IXByb3RvLmJhc2UudjEuTWFwUm91dGV9IG1zZyBUaGUgbXNnIGluc3RhbmNlIHRvIHRyYW5zZm9ybS5cbiAqIEByZXR1cm4geyFPYmplY3R9XG4gKiBAc3VwcHJlc3Mge3VudXNlZExvY2FsVmFyaWFibGVzfSBmIGlzIG9ubHkgdXNlZCBmb3IgbmVzdGVkIG1lc3NhZ2VzXG4gKi9cbnByb3RvLmJhc2UudjEuTWFwUm91dGUudG9PYmplY3QgPSBmdW5jdGlvbihpbmNsdWRlSW5zdGFuY2UsIG1zZykge1xuICB2YXIgZiwgb2JqID0ge1xuICAgIGlkOiBqc3BiLk1lc3NhZ2UuZ2V0RmllbGRXaXRoRGVmYXVsdChtc2csIDEsIDApLFxuICAgIG5hbWU6IGpzcGIuTWVzc2FnZS5nZXRGaWVsZFdpdGhEZWZhdWx0KG1zZywgMiwgXCJcIiksXG4gICAgaW1hZ2U6IChmID0gbXNnLmdldEltYWdlKCkpICYmIHByb3RvLmJhc2UudjEuTmV0SW1hZ2UudG9PYmplY3QoaW5jbHVkZUluc3RhbmNlLCBmKSxcbiAgICBpc25mYzoganNwYi5NZXNzYWdlLmdldEJvb2xlYW5GaWVsZFdpdGhEZWZhdWx0KG1zZywgNCwgZmFsc2UpXG4gIH07XG5cbiAgaWYgKGluY2x1ZGVJbnN0YW5jZSkge1xuICAgIG9iai4kanNwYk1lc3NhZ2VJbnN0YW5jZSA9IG1zZztcbiAgfVxuICByZXR1cm4gb2JqO1xufTtcbn1cblxuXG4vKipcbiAqIERlc2VyaWFsaXplcyBiaW5hcnkgZGF0YSAoaW4gcHJvdG9idWYgd2lyZSBmb3JtYXQpLlxuICogQHBhcmFtIHtqc3BiLkJ5dGVTb3VyY2V9IGJ5dGVzIFRoZSBieXRlcyB0byBkZXNlcmlhbGl6ZS5cbiAqIEByZXR1cm4geyFwcm90by5iYXNlLnYxLk1hcFJvdXRlfVxuICovXG5wcm90by5iYXNlLnYxLk1hcFJvdXRlLmRlc2VyaWFsaXplQmluYXJ5ID0gZnVuY3Rpb24oYnl0ZXMpIHtcbiAgdmFyIHJlYWRlciA9IG5ldyBqc3BiLkJpbmFyeVJlYWRlcihieXRlcyk7XG4gIHZhciBtc2cgPSBuZXcgcHJvdG8uYmFzZS52MS5NYXBSb3V0ZTtcbiAgcmV0dXJuIHByb3RvLmJhc2UudjEuTWFwUm91dGUuZGVzZXJpYWxpemVCaW5hcnlGcm9tUmVhZGVyKG1zZywgcmVhZGVyKTtcbn07XG5cblxuLyoqXG4gKiBEZXNlcmlhbGl6ZXMgYmluYXJ5IGRhdGEgKGluIHByb3RvYnVmIHdpcmUgZm9ybWF0KSBmcm9tIHRoZVxuICogZ2l2ZW4gcmVhZGVyIGludG8gdGhlIGdpdmVuIG1lc3NhZ2Ugb2JqZWN0LlxuICogQHBhcmFtIHshcHJvdG8uYmFzZS52MS5NYXBSb3V0ZX0gbXNnIFRoZSBtZXNzYWdlIG9iamVjdCB0byBkZXNlcmlhbGl6ZSBpbnRvLlxuICogQHBhcmFtIHshanNwYi5CaW5hcnlSZWFkZXJ9IHJlYWRlciBUaGUgQmluYXJ5UmVhZGVyIHRvIHVzZS5cbiAqIEByZXR1cm4geyFwcm90by5iYXNlLnYxLk1hcFJvdXRlfVxuICovXG5wcm90by5iYXNlLnYxLk1hcFJvdXRlLmRlc2VyaWFsaXplQmluYXJ5RnJvbVJlYWRlciA9IGZ1bmN0aW9uKG1zZywgcmVhZGVyKSB7XG4gIHdoaWxlIChyZWFkZXIubmV4dEZpZWxkKCkpIHtcbiAgICBpZiAocmVhZGVyLmlzRW5kR3JvdXAoKSkge1xuICAgICAgYnJlYWs7XG4gICAgfVxuICAgIHZhciBmaWVsZCA9IHJlYWRlci5nZXRGaWVsZE51bWJlcigpO1xuICAgIHN3aXRjaCAoZmllbGQpIHtcbiAgICBjYXNlIDE6XG4gICAgICB2YXIgdmFsdWUgPSAvKiogQHR5cGUge251bWJlcn0gKi8gKHJlYWRlci5yZWFkSW50NjQoKSk7XG4gICAgICBtc2cuc2V0SWQodmFsdWUpO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSAyOlxuICAgICAgdmFyIHZhbHVlID0gLyoqIEB0eXBlIHtzdHJpbmd9ICovIChyZWFkZXIucmVhZFN0cmluZygpKTtcbiAgICAgIG1zZy5zZXROYW1lKHZhbHVlKTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgMzpcbiAgICAgIHZhciB2YWx1ZSA9IG5ldyBwcm90by5iYXNlLnYxLk5ldEltYWdlO1xuICAgICAgcmVhZGVyLnJlYWRNZXNzYWdlKHZhbHVlLHByb3RvLmJhc2UudjEuTmV0SW1hZ2UuZGVzZXJpYWxpemVCaW5hcnlGcm9tUmVhZGVyKTtcbiAgICAgIG1zZy5zZXRJbWFnZSh2YWx1ZSk7XG4gICAgICBicmVhaztcbiAgICBjYXNlIDQ6XG4gICAgICB2YXIgdmFsdWUgPSAvKiogQHR5cGUge2Jvb2xlYW59ICovIChyZWFkZXIucmVhZEJvb2woKSk7XG4gICAgICBtc2cuc2V0SXNuZmModmFsdWUpO1xuICAgICAgYnJlYWs7XG4gICAgZGVmYXVsdDpcbiAgICAgIHJlYWRlci5za2lwRmllbGQoKTtcbiAgICAgIGJyZWFrO1xuICAgIH1cbiAgfVxuICByZXR1cm4gbXNnO1xufTtcblxuXG4vKipcbiAqIFNlcmlhbGl6ZXMgdGhlIG1lc3NhZ2UgdG8gYmluYXJ5IGRhdGEgKGluIHByb3RvYnVmIHdpcmUgZm9ybWF0KS5cbiAqIEByZXR1cm4geyFVaW50OEFycmF5fVxuICovXG5wcm90by5iYXNlLnYxLk1hcFJvdXRlLnByb3RvdHlwZS5zZXJpYWxpemVCaW5hcnkgPSBmdW5jdGlvbigpIHtcbiAgdmFyIHdyaXRlciA9IG5ldyBqc3BiLkJpbmFyeVdyaXRlcigpO1xuICBwcm90by5iYXNlLnYxLk1hcFJvdXRlLnNlcmlhbGl6ZUJpbmFyeVRvV3JpdGVyKHRoaXMsIHdyaXRlcik7XG4gIHJldHVybiB3cml0ZXIuZ2V0UmVzdWx0QnVmZmVyKCk7XG59O1xuXG5cbi8qKlxuICogU2VyaWFsaXplcyB0aGUgZ2l2ZW4gbWVzc2FnZSB0byBiaW5hcnkgZGF0YSAoaW4gcHJvdG9idWYgd2lyZVxuICogZm9ybWF0KSwgd3JpdGluZyB0byB0aGUgZ2l2ZW4gQmluYXJ5V3JpdGVyLlxuICogQHBhcmFtIHshcHJvdG8uYmFzZS52MS5NYXBSb3V0ZX0gbWVzc2FnZVxuICogQHBhcmFtIHshanNwYi5CaW5hcnlXcml0ZXJ9IHdyaXRlclxuICogQHN1cHByZXNzIHt1bnVzZWRMb2NhbFZhcmlhYmxlc30gZiBpcyBvbmx5IHVzZWQgZm9yIG5lc3RlZCBtZXNzYWdlc1xuICovXG5wcm90by5iYXNlLnYxLk1hcFJvdXRlLnNlcmlhbGl6ZUJpbmFyeVRvV3JpdGVyID0gZnVuY3Rpb24obWVzc2FnZSwgd3JpdGVyKSB7XG4gIHZhciBmID0gdW5kZWZpbmVkO1xuICBmID0gbWVzc2FnZS5nZXRJZCgpO1xuICBpZiAoZiAhPT0gMCkge1xuICAgIHdyaXRlci53cml0ZUludDY0KFxuICAgICAgMSxcbiAgICAgIGZcbiAgICApO1xuICB9XG4gIGYgPSBtZXNzYWdlLmdldE5hbWUoKTtcbiAgaWYgKGYubGVuZ3RoID4gMCkge1xuICAgIHdyaXRlci53cml0ZVN0cmluZyhcbiAgICAgIDIsXG4gICAgICBmXG4gICAgKTtcbiAgfVxuICBmID0gbWVzc2FnZS5nZXRJbWFnZSgpO1xuICBpZiAoZiAhPSBudWxsKSB7XG4gICAgd3JpdGVyLndyaXRlTWVzc2FnZShcbiAgICAgIDMsXG4gICAgICBmLFxuICAgICAgcHJvdG8uYmFzZS52MS5OZXRJbWFnZS5zZXJpYWxpemVCaW5hcnlUb1dyaXRlclxuICAgICk7XG4gIH1cbiAgZiA9IG1lc3NhZ2UuZ2V0SXNuZmMoKTtcbiAgaWYgKGYpIHtcbiAgICB3cml0ZXIud3JpdGVCb29sKFxuICAgICAgNCxcbiAgICAgIGZcbiAgICApO1xuICB9XG59O1xuXG5cbi8qKlxuICogb3B0aW9uYWwgaW50NjQgaWQgPSAxO1xuICogQHJldHVybiB7bnVtYmVyfVxuICovXG5wcm90by5iYXNlLnYxLk1hcFJvdXRlLnByb3RvdHlwZS5nZXRJZCA9IGZ1bmN0aW9uKCkge1xuICByZXR1cm4gLyoqIEB0eXBlIHtudW1iZXJ9ICovIChqc3BiLk1lc3NhZ2UuZ2V0RmllbGRXaXRoRGVmYXVsdCh0aGlzLCAxLCAwKSk7XG59O1xuXG5cbi8qKlxuICogQHBhcmFtIHtudW1iZXJ9IHZhbHVlXG4gKiBAcmV0dXJuIHshcHJvdG8uYmFzZS52MS5NYXBSb3V0ZX0gcmV0dXJucyB0aGlzXG4gKi9cbnByb3RvLmJhc2UudjEuTWFwUm91dGUucHJvdG90eXBlLnNldElkID0gZnVuY3Rpb24odmFsdWUpIHtcbiAgcmV0dXJuIGpzcGIuTWVzc2FnZS5zZXRQcm90bzNJbnRGaWVsZCh0aGlzLCAxLCB2YWx1ZSk7XG59O1xuXG5cbi8qKlxuICogb3B0aW9uYWwgc3RyaW5nIG5hbWUgPSAyO1xuICogQHJldHVybiB7c3RyaW5nfVxuICovXG5wcm90by5iYXNlLnYxLk1hcFJvdXRlLnByb3RvdHlwZS5nZXROYW1lID0gZnVuY3Rpb24oKSB7XG4gIHJldHVybiAvKiogQHR5cGUge3N0cmluZ30gKi8gKGpzcGIuTWVzc2FnZS5nZXRGaWVsZFdpdGhEZWZhdWx0KHRoaXMsIDIsIFwiXCIpKTtcbn07XG5cblxuLyoqXG4gKiBAcGFyYW0ge3N0cmluZ30gdmFsdWVcbiAqIEByZXR1cm4geyFwcm90by5iYXNlLnYxLk1hcFJvdXRlfSByZXR1cm5zIHRoaXNcbiAqL1xucHJvdG8uYmFzZS52MS5NYXBSb3V0ZS5wcm90b3R5cGUuc2V0TmFtZSA9IGZ1bmN0aW9uKHZhbHVlKSB7XG4gIHJldHVybiBqc3BiLk1lc3NhZ2Uuc2V0UHJvdG8zU3RyaW5nRmllbGQodGhpcywgMiwgdmFsdWUpO1xufTtcblxuXG4vKipcbiAqIG9wdGlvbmFsIE5ldEltYWdlIGltYWdlID0gMztcbiAqIEByZXR1cm4gez9wcm90by5iYXNlLnYxLk5ldEltYWdlfVxuICovXG5wcm90by5iYXNlLnYxLk1hcFJvdXRlLnByb3RvdHlwZS5nZXRJbWFnZSA9IGZ1bmN0aW9uKCkge1xuICByZXR1cm4gLyoqIEB0eXBlez9wcm90by5iYXNlLnYxLk5ldEltYWdlfSAqLyAoXG4gICAganNwYi5NZXNzYWdlLmdldFdyYXBwZXJGaWVsZCh0aGlzLCBwcm90by5iYXNlLnYxLk5ldEltYWdlLCAzKSk7XG59O1xuXG5cbi8qKlxuICogQHBhcmFtIHs/cHJvdG8uYmFzZS52MS5OZXRJbWFnZXx1bmRlZmluZWR9IHZhbHVlXG4gKiBAcmV0dXJuIHshcHJvdG8uYmFzZS52MS5NYXBSb3V0ZX0gcmV0dXJucyB0aGlzXG4qL1xucHJvdG8uYmFzZS52MS5NYXBSb3V0ZS5wcm90b3R5cGUuc2V0SW1hZ2UgPSBmdW5jdGlvbih2YWx1ZSkge1xuICByZXR1cm4ganNwYi5NZXNzYWdlLnNldFdyYXBwZXJGaWVsZCh0aGlzLCAzLCB2YWx1ZSk7XG59O1xuXG5cbi8qKlxuICogQ2xlYXJzIHRoZSBtZXNzYWdlIGZpZWxkIG1ha2luZyBpdCB1bmRlZmluZWQuXG4gKiBAcmV0dXJuIHshcHJvdG8uYmFzZS52MS5NYXBSb3V0ZX0gcmV0dXJucyB0aGlzXG4gKi9cbnByb3RvLmJhc2UudjEuTWFwUm91dGUucHJvdG90eXBlLmNsZWFySW1hZ2UgPSBmdW5jdGlvbigpIHtcbiAgcmV0dXJuIHRoaXMuc2V0SW1hZ2UodW5kZWZpbmVkKTtcbn07XG5cblxuLyoqXG4gKiBSZXR1cm5zIHdoZXRoZXIgdGhpcyBmaWVsZCBpcyBzZXQuXG4gKiBAcmV0dXJuIHtib29sZWFufVxuICovXG5wcm90by5iYXNlLnYxLk1hcFJvdXRlLnByb3RvdHlwZS5oYXNJbWFnZSA9IGZ1bmN0aW9uKCkge1xuICByZXR1cm4ganNwYi5NZXNzYWdlLmdldEZpZWxkKHRoaXMsIDMpICE9IG51bGw7XG59O1xuXG5cbi8qKlxuICogb3B0aW9uYWwgYm9vbCBpc05mYyA9IDQ7XG4gKiBAcmV0dXJuIHtib29sZWFufVxuICovXG5wcm90by5iYXNlLnYxLk1hcFJvdXRlLnByb3RvdHlwZS5nZXRJc25mYyA9IGZ1bmN0aW9uKCkge1xuICByZXR1cm4gLyoqIEB0eXBlIHtib29sZWFufSAqLyAoanNwYi5NZXNzYWdlLmdldEJvb2xlYW5GaWVsZFdpdGhEZWZhdWx0KHRoaXMsIDQsIGZhbHNlKSk7XG59O1xuXG5cbi8qKlxuICogQHBhcmFtIHtib29sZWFufSB2YWx1ZVxuICogQHJldHVybiB7IXByb3RvLmJhc2UudjEuTWFwUm91dGV9IHJldHVybnMgdGhpc1xuICovXG5wcm90by5iYXNlLnYxLk1hcFJvdXRlLnByb3RvdHlwZS5zZXRJc25mYyA9IGZ1bmN0aW9uKHZhbHVlKSB7XG4gIHJldHVybiBqc3BiLk1lc3NhZ2Uuc2V0UHJvdG8zQm9vbGVhbkZpZWxkKHRoaXMsIDQsIHZhbHVlKTtcbn07XG5cblxuXG5cblxuaWYgKGpzcGIuTWVzc2FnZS5HRU5FUkFURV9UT19PQkpFQ1QpIHtcbi8qKlxuICogQ3JlYXRlcyBhbiBvYmplY3QgcmVwcmVzZW50YXRpb24gb2YgdGhpcyBwcm90by5cbiAqIEZpZWxkIG5hbWVzIHRoYXQgYXJlIHJlc2VydmVkIGluIEphdmFTY3JpcHQgYW5kIHdpbGwgYmUgcmVuYW1lZCB0byBwYl9uYW1lLlxuICogT3B0aW9uYWwgZmllbGRzIHRoYXQgYXJlIG5vdCBzZXQgd2lsbCBiZSBzZXQgdG8gdW5kZWZpbmVkLlxuICogVG8gYWNjZXNzIGEgcmVzZXJ2ZWQgZmllbGQgdXNlLCBmb28ucGJfPG5hbWU+LCBlZywgZm9vLnBiX2RlZmF1bHQuXG4gKiBGb3IgdGhlIGxpc3Qgb2YgcmVzZXJ2ZWQgbmFtZXMgcGxlYXNlIHNlZTpcbiAqICAgICBuZXQvcHJvdG8yL2NvbXBpbGVyL2pzL2ludGVybmFsL2dlbmVyYXRvci5jYyNrS2V5d29yZC5cbiAqIEBwYXJhbSB7Ym9vbGVhbj19IG9wdF9pbmNsdWRlSW5zdGFuY2UgRGVwcmVjYXRlZC4gd2hldGhlciB0byBpbmNsdWRlIHRoZVxuICogICAgIEpTUEIgaW5zdGFuY2UgZm9yIHRyYW5zaXRpb25hbCBzb3kgcHJvdG8gc3VwcG9ydDpcbiAqICAgICBodHRwOi8vZ290by9zb3ktcGFyYW0tbWlncmF0aW9uXG4gKiBAcmV0dXJuIHshT2JqZWN0fVxuICovXG5wcm90by5iYXNlLnYxLkJhc2VNYXBJbmZvLnByb3RvdHlwZS50b09iamVjdCA9IGZ1bmN0aW9uKG9wdF9pbmNsdWRlSW5zdGFuY2UpIHtcbiAgcmV0dXJuIHByb3RvLmJhc2UudjEuQmFzZU1hcEluZm8udG9PYmplY3Qob3B0X2luY2x1ZGVJbnN0YW5jZSwgdGhpcyk7XG59O1xuXG5cbi8qKlxuICogU3RhdGljIHZlcnNpb24gb2YgdGhlIHtAc2VlIHRvT2JqZWN0fSBtZXRob2QuXG4gKiBAcGFyYW0ge2Jvb2xlYW58dW5kZWZpbmVkfSBpbmNsdWRlSW5zdGFuY2UgRGVwcmVjYXRlZC4gV2hldGhlciB0byBpbmNsdWRlXG4gKiAgICAgdGhlIEpTUEIgaW5zdGFuY2UgZm9yIHRyYW5zaXRpb25hbCBzb3kgcHJvdG8gc3VwcG9ydDpcbiAqICAgICBodHRwOi8vZ290by9zb3ktcGFyYW0tbWlncmF0aW9uXG4gKiBAcGFyYW0geyFwcm90by5iYXNlLnYxLkJhc2VNYXBJbmZvfSBtc2cgVGhlIG1zZyBpbnN0YW5jZSB0byB0cmFuc2Zvcm0uXG4gKiBAcmV0dXJuIHshT2JqZWN0fVxuICogQHN1cHByZXNzIHt1bnVzZWRMb2NhbFZhcmlhYmxlc30gZiBpcyBvbmx5IHVzZWQgZm9yIG5lc3RlZCBtZXNzYWdlc1xuICovXG5wcm90by5iYXNlLnYxLkJhc2VNYXBJbmZvLnRvT2JqZWN0ID0gZnVuY3Rpb24oaW5jbHVkZUluc3RhbmNlLCBtc2cpIHtcbiAgdmFyIGYsIG9iaiA9IHtcbiAgICBzaG9waWQ6IGpzcGIuTWVzc2FnZS5nZXRGaWVsZFdpdGhEZWZhdWx0KG1zZywgMSwgMCksXG4gICAgbWFwbmFtZToganNwYi5NZXNzYWdlLmdldEZpZWxkV2l0aERlZmF1bHQobXNnLCAyLCBcIlwiKSxcbiAgICB6aXBpbWFnZTogKGYgPSBtc2cuZ2V0WmlwaW1hZ2UoKSkgJiYgcHJvdG8uYmFzZS52MS5OZXRJbWFnZS50b09iamVjdChpbmNsdWRlSW5zdGFuY2UsIGYpXG4gIH07XG5cbiAgaWYgKGluY2x1ZGVJbnN0YW5jZSkge1xuICAgIG9iai4kanNwYk1lc3NhZ2VJbnN0YW5jZSA9IG1zZztcbiAgfVxuICByZXR1cm4gb2JqO1xufTtcbn1cblxuXG4vKipcbiAqIERlc2VyaWFsaXplcyBiaW5hcnkgZGF0YSAoaW4gcHJvdG9idWYgd2lyZSBmb3JtYXQpLlxuICogQHBhcmFtIHtqc3BiLkJ5dGVTb3VyY2V9IGJ5dGVzIFRoZSBieXRlcyB0byBkZXNlcmlhbGl6ZS5cbiAqIEByZXR1cm4geyFwcm90by5iYXNlLnYxLkJhc2VNYXBJbmZvfVxuICovXG5wcm90by5iYXNlLnYxLkJhc2VNYXBJbmZvLmRlc2VyaWFsaXplQmluYXJ5ID0gZnVuY3Rpb24oYnl0ZXMpIHtcbiAgdmFyIHJlYWRlciA9IG5ldyBqc3BiLkJpbmFyeVJlYWRlcihieXRlcyk7XG4gIHZhciBtc2cgPSBuZXcgcHJvdG8uYmFzZS52MS5CYXNlTWFwSW5mbztcbiAgcmV0dXJuIHByb3RvLmJhc2UudjEuQmFzZU1hcEluZm8uZGVzZXJpYWxpemVCaW5hcnlGcm9tUmVhZGVyKG1zZywgcmVhZGVyKTtcbn07XG5cblxuLyoqXG4gKiBEZXNlcmlhbGl6ZXMgYmluYXJ5IGRhdGEgKGluIHByb3RvYnVmIHdpcmUgZm9ybWF0KSBmcm9tIHRoZVxuICogZ2l2ZW4gcmVhZGVyIGludG8gdGhlIGdpdmVuIG1lc3NhZ2Ugb2JqZWN0LlxuICogQHBhcmFtIHshcHJvdG8uYmFzZS52MS5CYXNlTWFwSW5mb30gbXNnIFRoZSBtZXNzYWdlIG9iamVjdCB0byBkZXNlcmlhbGl6ZSBpbnRvLlxuICogQHBhcmFtIHshanNwYi5CaW5hcnlSZWFkZXJ9IHJlYWRlciBUaGUgQmluYXJ5UmVhZGVyIHRvIHVzZS5cbiAqIEByZXR1cm4geyFwcm90by5iYXNlLnYxLkJhc2VNYXBJbmZvfVxuICovXG5wcm90by5iYXNlLnYxLkJhc2VNYXBJbmZvLmRlc2VyaWFsaXplQmluYXJ5RnJvbVJlYWRlciA9IGZ1bmN0aW9uKG1zZywgcmVhZGVyKSB7XG4gIHdoaWxlIChyZWFkZXIubmV4dEZpZWxkKCkpIHtcbiAgICBpZiAocmVhZGVyLmlzRW5kR3JvdXAoKSkge1xuICAgICAgYnJlYWs7XG4gICAgfVxuICAgIHZhciBmaWVsZCA9IHJlYWRlci5nZXRGaWVsZE51bWJlcigpO1xuICAgIHN3aXRjaCAoZmllbGQpIHtcbiAgICBjYXNlIDE6XG4gICAgICB2YXIgdmFsdWUgPSAvKiogQHR5cGUge251bWJlcn0gKi8gKHJlYWRlci5yZWFkSW50MzIoKSk7XG4gICAgICBtc2cuc2V0U2hvcGlkKHZhbHVlKTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgMjpcbiAgICAgIHZhciB2YWx1ZSA9IC8qKiBAdHlwZSB7c3RyaW5nfSAqLyAocmVhZGVyLnJlYWRTdHJpbmcoKSk7XG4gICAgICBtc2cuc2V0TWFwbmFtZSh2YWx1ZSk7XG4gICAgICBicmVhaztcbiAgICBjYXNlIDM6XG4gICAgICB2YXIgdmFsdWUgPSBuZXcgcHJvdG8uYmFzZS52MS5OZXRJbWFnZTtcbiAgICAgIHJlYWRlci5yZWFkTWVzc2FnZSh2YWx1ZSxwcm90by5iYXNlLnYxLk5ldEltYWdlLmRlc2VyaWFsaXplQmluYXJ5RnJvbVJlYWRlcik7XG4gICAgICBtc2cuc2V0WmlwaW1hZ2UodmFsdWUpO1xuICAgICAgYnJlYWs7XG4gICAgZGVmYXVsdDpcbiAgICAgIHJlYWRlci5za2lwRmllbGQoKTtcbiAgICAgIGJyZWFrO1xuICAgIH1cbiAgfVxuICByZXR1cm4gbXNnO1xufTtcblxuXG4vKipcbiAqIFNlcmlhbGl6ZXMgdGhlIG1lc3NhZ2UgdG8gYmluYXJ5IGRhdGEgKGluIHByb3RvYnVmIHdpcmUgZm9ybWF0KS5cbiAqIEByZXR1cm4geyFVaW50OEFycmF5fVxuICovXG5wcm90by5iYXNlLnYxLkJhc2VNYXBJbmZvLnByb3RvdHlwZS5zZXJpYWxpemVCaW5hcnkgPSBmdW5jdGlvbigpIHtcbiAgdmFyIHdyaXRlciA9IG5ldyBqc3BiLkJpbmFyeVdyaXRlcigpO1xuICBwcm90by5iYXNlLnYxLkJhc2VNYXBJbmZvLnNlcmlhbGl6ZUJpbmFyeVRvV3JpdGVyKHRoaXMsIHdyaXRlcik7XG4gIHJldHVybiB3cml0ZXIuZ2V0UmVzdWx0QnVmZmVyKCk7XG59O1xuXG5cbi8qKlxuICogU2VyaWFsaXplcyB0aGUgZ2l2ZW4gbWVzc2FnZSB0byBiaW5hcnkgZGF0YSAoaW4gcHJvdG9idWYgd2lyZVxuICogZm9ybWF0KSwgd3JpdGluZyB0byB0aGUgZ2l2ZW4gQmluYXJ5V3JpdGVyLlxuICogQHBhcmFtIHshcHJvdG8uYmFzZS52MS5CYXNlTWFwSW5mb30gbWVzc2FnZVxuICogQHBhcmFtIHshanNwYi5CaW5hcnlXcml0ZXJ9IHdyaXRlclxuICogQHN1cHByZXNzIHt1bnVzZWRMb2NhbFZhcmlhYmxlc30gZiBpcyBvbmx5IHVzZWQgZm9yIG5lc3RlZCBtZXNzYWdlc1xuICovXG5wcm90by5iYXNlLnYxLkJhc2VNYXBJbmZvLnNlcmlhbGl6ZUJpbmFyeVRvV3JpdGVyID0gZnVuY3Rpb24obWVzc2FnZSwgd3JpdGVyKSB7XG4gIHZhciBmID0gdW5kZWZpbmVkO1xuICBmID0gbWVzc2FnZS5nZXRTaG9waWQoKTtcbiAgaWYgKGYgIT09IDApIHtcbiAgICB3cml0ZXIud3JpdGVJbnQzMihcbiAgICAgIDEsXG4gICAgICBmXG4gICAgKTtcbiAgfVxuICBmID0gbWVzc2FnZS5nZXRNYXBuYW1lKCk7XG4gIGlmIChmLmxlbmd0aCA+IDApIHtcbiAgICB3cml0ZXIud3JpdGVTdHJpbmcoXG4gICAgICAyLFxuICAgICAgZlxuICAgICk7XG4gIH1cbiAgZiA9IG1lc3NhZ2UuZ2V0WmlwaW1hZ2UoKTtcbiAgaWYgKGYgIT0gbnVsbCkge1xuICAgIHdyaXRlci53cml0ZU1lc3NhZ2UoXG4gICAgICAzLFxuICAgICAgZixcbiAgICAgIHByb3RvLmJhc2UudjEuTmV0SW1hZ2Uuc2VyaWFsaXplQmluYXJ5VG9Xcml0ZXJcbiAgICApO1xuICB9XG59O1xuXG5cbi8qKlxuICogb3B0aW9uYWwgaW50MzIgc2hvcElkID0gMTtcbiAqIEByZXR1cm4ge251bWJlcn1cbiAqL1xucHJvdG8uYmFzZS52MS5CYXNlTWFwSW5mby5wcm90b3R5cGUuZ2V0U2hvcGlkID0gZnVuY3Rpb24oKSB7XG4gIHJldHVybiAvKiogQHR5cGUge251bWJlcn0gKi8gKGpzcGIuTWVzc2FnZS5nZXRGaWVsZFdpdGhEZWZhdWx0KHRoaXMsIDEsIDApKTtcbn07XG5cblxuLyoqXG4gKiBAcGFyYW0ge251bWJlcn0gdmFsdWVcbiAqIEByZXR1cm4geyFwcm90by5iYXNlLnYxLkJhc2VNYXBJbmZvfSByZXR1cm5zIHRoaXNcbiAqL1xucHJvdG8uYmFzZS52MS5CYXNlTWFwSW5mby5wcm90b3R5cGUuc2V0U2hvcGlkID0gZnVuY3Rpb24odmFsdWUpIHtcbiAgcmV0dXJuIGpzcGIuTWVzc2FnZS5zZXRQcm90bzNJbnRGaWVsZCh0aGlzLCAxLCB2YWx1ZSk7XG59O1xuXG5cbi8qKlxuICogb3B0aW9uYWwgc3RyaW5nIG1hcE5hbWUgPSAyO1xuICogQHJldHVybiB7c3RyaW5nfVxuICovXG5wcm90by5iYXNlLnYxLkJhc2VNYXBJbmZvLnByb3RvdHlwZS5nZXRNYXBuYW1lID0gZnVuY3Rpb24oKSB7XG4gIHJldHVybiAvKiogQHR5cGUge3N0cmluZ30gKi8gKGpzcGIuTWVzc2FnZS5nZXRGaWVsZFdpdGhEZWZhdWx0KHRoaXMsIDIsIFwiXCIpKTtcbn07XG5cblxuLyoqXG4gKiBAcGFyYW0ge3N0cmluZ30gdmFsdWVcbiAqIEByZXR1cm4geyFwcm90by5iYXNlLnYxLkJhc2VNYXBJbmZvfSByZXR1cm5zIHRoaXNcbiAqL1xucHJvdG8uYmFzZS52MS5CYXNlTWFwSW5mby5wcm90b3R5cGUuc2V0TWFwbmFtZSA9IGZ1bmN0aW9uKHZhbHVlKSB7XG4gIHJldHVybiBqc3BiLk1lc3NhZ2Uuc2V0UHJvdG8zU3RyaW5nRmllbGQodGhpcywgMiwgdmFsdWUpO1xufTtcblxuXG4vKipcbiAqIG9wdGlvbmFsIE5ldEltYWdlIHppcEltYWdlID0gMztcbiAqIEByZXR1cm4gez9wcm90by5iYXNlLnYxLk5ldEltYWdlfVxuICovXG5wcm90by5iYXNlLnYxLkJhc2VNYXBJbmZvLnByb3RvdHlwZS5nZXRaaXBpbWFnZSA9IGZ1bmN0aW9uKCkge1xuICByZXR1cm4gLyoqIEB0eXBlez9wcm90by5iYXNlLnYxLk5ldEltYWdlfSAqLyAoXG4gICAganNwYi5NZXNzYWdlLmdldFdyYXBwZXJGaWVsZCh0aGlzLCBwcm90by5iYXNlLnYxLk5ldEltYWdlLCAzKSk7XG59O1xuXG5cbi8qKlxuICogQHBhcmFtIHs/cHJvdG8uYmFzZS52MS5OZXRJbWFnZXx1bmRlZmluZWR9IHZhbHVlXG4gKiBAcmV0dXJuIHshcHJvdG8uYmFzZS52MS5CYXNlTWFwSW5mb30gcmV0dXJucyB0aGlzXG4qL1xucHJvdG8uYmFzZS52MS5CYXNlTWFwSW5mby5wcm90b3R5cGUuc2V0WmlwaW1hZ2UgPSBmdW5jdGlvbih2YWx1ZSkge1xuICByZXR1cm4ganNwYi5NZXNzYWdlLnNldFdyYXBwZXJGaWVsZCh0aGlzLCAzLCB2YWx1ZSk7XG59O1xuXG5cbi8qKlxuICogQ2xlYXJzIHRoZSBtZXNzYWdlIGZpZWxkIG1ha2luZyBpdCB1bmRlZmluZWQuXG4gKiBAcmV0dXJuIHshcHJvdG8uYmFzZS52MS5CYXNlTWFwSW5mb30gcmV0dXJucyB0aGlzXG4gKi9cbnByb3RvLmJhc2UudjEuQmFzZU1hcEluZm8ucHJvdG90eXBlLmNsZWFyWmlwaW1hZ2UgPSBmdW5jdGlvbigpIHtcbiAgcmV0dXJuIHRoaXMuc2V0WmlwaW1hZ2UodW5kZWZpbmVkKTtcbn07XG5cblxuLyoqXG4gKiBSZXR1cm5zIHdoZXRoZXIgdGhpcyBmaWVsZCBpcyBzZXQuXG4gKiBAcmV0dXJuIHtib29sZWFufVxuICovXG5wcm90by5iYXNlLnYxLkJhc2VNYXBJbmZvLnByb3RvdHlwZS5oYXNaaXBpbWFnZSA9IGZ1bmN0aW9uKCkge1xuICByZXR1cm4ganNwYi5NZXNzYWdlLmdldEZpZWxkKHRoaXMsIDMpICE9IG51bGw7XG59O1xuXG5cblxuXG5cbmlmIChqc3BiLk1lc3NhZ2UuR0VORVJBVEVfVE9fT0JKRUNUKSB7XG4vKipcbiAqIENyZWF0ZXMgYW4gb2JqZWN0IHJlcHJlc2VudGF0aW9uIG9mIHRoaXMgcHJvdG8uXG4gKiBGaWVsZCBuYW1lcyB0aGF0IGFyZSByZXNlcnZlZCBpbiBKYXZhU2NyaXB0IGFuZCB3aWxsIGJlIHJlbmFtZWQgdG8gcGJfbmFtZS5cbiAqIE9wdGlvbmFsIGZpZWxkcyB0aGF0IGFyZSBub3Qgc2V0IHdpbGwgYmUgc2V0IHRvIHVuZGVmaW5lZC5cbiAqIFRvIGFjY2VzcyBhIHJlc2VydmVkIGZpZWxkIHVzZSwgZm9vLnBiXzxuYW1lPiwgZWcsIGZvby5wYl9kZWZhdWx0LlxuICogRm9yIHRoZSBsaXN0IG9mIHJlc2VydmVkIG5hbWVzIHBsZWFzZSBzZWU6XG4gKiAgICAgbmV0L3Byb3RvMi9jb21waWxlci9qcy9pbnRlcm5hbC9nZW5lcmF0b3IuY2Mja0tleXdvcmQuXG4gKiBAcGFyYW0ge2Jvb2xlYW49fSBvcHRfaW5jbHVkZUluc3RhbmNlIERlcHJlY2F0ZWQuIHdoZXRoZXIgdG8gaW5jbHVkZSB0aGVcbiAqICAgICBKU1BCIGluc3RhbmNlIGZvciB0cmFuc2l0aW9uYWwgc295IHByb3RvIHN1cHBvcnQ6XG4gKiAgICAgaHR0cDovL2dvdG8vc295LXBhcmFtLW1pZ3JhdGlvblxuICogQHJldHVybiB7IU9iamVjdH1cbiAqL1xucHJvdG8uYmFzZS52MS5SZWdpb24ucHJvdG90eXBlLnRvT2JqZWN0ID0gZnVuY3Rpb24ob3B0X2luY2x1ZGVJbnN0YW5jZSkge1xuICByZXR1cm4gcHJvdG8uYmFzZS52MS5SZWdpb24udG9PYmplY3Qob3B0X2luY2x1ZGVJbnN0YW5jZSwgdGhpcyk7XG59O1xuXG5cbi8qKlxuICogU3RhdGljIHZlcnNpb24gb2YgdGhlIHtAc2VlIHRvT2JqZWN0fSBtZXRob2QuXG4gKiBAcGFyYW0ge2Jvb2xlYW58dW5kZWZpbmVkfSBpbmNsdWRlSW5zdGFuY2UgRGVwcmVjYXRlZC4gV2hldGhlciB0byBpbmNsdWRlXG4gKiAgICAgdGhlIEpTUEIgaW5zdGFuY2UgZm9yIHRyYW5zaXRpb25hbCBzb3kgcHJvdG8gc3VwcG9ydDpcbiAqICAgICBodHRwOi8vZ290by9zb3ktcGFyYW0tbWlncmF0aW9uXG4gKiBAcGFyYW0geyFwcm90by5iYXNlLnYxLlJlZ2lvbn0gbXNnIFRoZSBtc2cgaW5zdGFuY2UgdG8gdHJhbnNmb3JtLlxuICogQHJldHVybiB7IU9iamVjdH1cbiAqIEBzdXBwcmVzcyB7dW51c2VkTG9jYWxWYXJpYWJsZXN9IGYgaXMgb25seSB1c2VkIGZvciBuZXN0ZWQgbWVzc2FnZXNcbiAqL1xucHJvdG8uYmFzZS52MS5SZWdpb24udG9PYmplY3QgPSBmdW5jdGlvbihpbmNsdWRlSW5zdGFuY2UsIG1zZykge1xuICB2YXIgZiwgb2JqID0ge1xuICAgIGNvZGU6IGpzcGIuTWVzc2FnZS5nZXRGaWVsZFdpdGhEZWZhdWx0KG1zZywgMSwgXCJcIiksXG4gICAgbmFtZToganNwYi5NZXNzYWdlLmdldEZpZWxkV2l0aERlZmF1bHQobXNnLCAyLCBcIlwiKVxuICB9O1xuXG4gIGlmIChpbmNsdWRlSW5zdGFuY2UpIHtcbiAgICBvYmouJGpzcGJNZXNzYWdlSW5zdGFuY2UgPSBtc2c7XG4gIH1cbiAgcmV0dXJuIG9iajtcbn07XG59XG5cblxuLyoqXG4gKiBEZXNlcmlhbGl6ZXMgYmluYXJ5IGRhdGEgKGluIHByb3RvYnVmIHdpcmUgZm9ybWF0KS5cbiAqIEBwYXJhbSB7anNwYi5CeXRlU291cmNlfSBieXRlcyBUaGUgYnl0ZXMgdG8gZGVzZXJpYWxpemUuXG4gKiBAcmV0dXJuIHshcHJvdG8uYmFzZS52MS5SZWdpb259XG4gKi9cbnByb3RvLmJhc2UudjEuUmVnaW9uLmRlc2VyaWFsaXplQmluYXJ5ID0gZnVuY3Rpb24oYnl0ZXMpIHtcbiAgdmFyIHJlYWRlciA9IG5ldyBqc3BiLkJpbmFyeVJlYWRlcihieXRlcyk7XG4gIHZhciBtc2cgPSBuZXcgcHJvdG8uYmFzZS52MS5SZWdpb247XG4gIHJldHVybiBwcm90by5iYXNlLnYxLlJlZ2lvbi5kZXNlcmlhbGl6ZUJpbmFyeUZyb21SZWFkZXIobXNnLCByZWFkZXIpO1xufTtcblxuXG4vKipcbiAqIERlc2VyaWFsaXplcyBiaW5hcnkgZGF0YSAoaW4gcHJvdG9idWYgd2lyZSBmb3JtYXQpIGZyb20gdGhlXG4gKiBnaXZlbiByZWFkZXIgaW50byB0aGUgZ2l2ZW4gbWVzc2FnZSBvYmplY3QuXG4gKiBAcGFyYW0geyFwcm90by5iYXNlLnYxLlJlZ2lvbn0gbXNnIFRoZSBtZXNzYWdlIG9iamVjdCB0byBkZXNlcmlhbGl6ZSBpbnRvLlxuICogQHBhcmFtIHshanNwYi5CaW5hcnlSZWFkZXJ9IHJlYWRlciBUaGUgQmluYXJ5UmVhZGVyIHRvIHVzZS5cbiAqIEByZXR1cm4geyFwcm90by5iYXNlLnYxLlJlZ2lvbn1cbiAqL1xucHJvdG8uYmFzZS52MS5SZWdpb24uZGVzZXJpYWxpemVCaW5hcnlGcm9tUmVhZGVyID0gZnVuY3Rpb24obXNnLCByZWFkZXIpIHtcbiAgd2hpbGUgKHJlYWRlci5uZXh0RmllbGQoKSkge1xuICAgIGlmIChyZWFkZXIuaXNFbmRHcm91cCgpKSB7XG4gICAgICBicmVhaztcbiAgICB9XG4gICAgdmFyIGZpZWxkID0gcmVhZGVyLmdldEZpZWxkTnVtYmVyKCk7XG4gICAgc3dpdGNoIChmaWVsZCkge1xuICAgIGNhc2UgMTpcbiAgICAgIHZhciB2YWx1ZSA9IC8qKiBAdHlwZSB7c3RyaW5nfSAqLyAocmVhZGVyLnJlYWRTdHJpbmcoKSk7XG4gICAgICBtc2cuc2V0Q29kZSh2YWx1ZSk7XG4gICAgICBicmVhaztcbiAgICBjYXNlIDI6XG4gICAgICB2YXIgdmFsdWUgPSAvKiogQHR5cGUge3N0cmluZ30gKi8gKHJlYWRlci5yZWFkU3RyaW5nKCkpO1xuICAgICAgbXNnLnNldE5hbWUodmFsdWUpO1xuICAgICAgYnJlYWs7XG4gICAgZGVmYXVsdDpcbiAgICAgIHJlYWRlci5za2lwRmllbGQoKTtcbiAgICAgIGJyZWFrO1xuICAgIH1cbiAgfVxuICByZXR1cm4gbXNnO1xufTtcblxuXG4vKipcbiAqIFNlcmlhbGl6ZXMgdGhlIG1lc3NhZ2UgdG8gYmluYXJ5IGRhdGEgKGluIHByb3RvYnVmIHdpcmUgZm9ybWF0KS5cbiAqIEByZXR1cm4geyFVaW50OEFycmF5fVxuICovXG5wcm90by5iYXNlLnYxLlJlZ2lvbi5wcm90b3R5cGUuc2VyaWFsaXplQmluYXJ5ID0gZnVuY3Rpb24oKSB7XG4gIHZhciB3cml0ZXIgPSBuZXcganNwYi5CaW5hcnlXcml0ZXIoKTtcbiAgcHJvdG8uYmFzZS52MS5SZWdpb24uc2VyaWFsaXplQmluYXJ5VG9Xcml0ZXIodGhpcywgd3JpdGVyKTtcbiAgcmV0dXJuIHdyaXRlci5nZXRSZXN1bHRCdWZmZXIoKTtcbn07XG5cblxuLyoqXG4gKiBTZXJpYWxpemVzIHRoZSBnaXZlbiBtZXNzYWdlIHRvIGJpbmFyeSBkYXRhIChpbiBwcm90b2J1ZiB3aXJlXG4gKiBmb3JtYXQpLCB3cml0aW5nIHRvIHRoZSBnaXZlbiBCaW5hcnlXcml0ZXIuXG4gKiBAcGFyYW0geyFwcm90by5iYXNlLnYxLlJlZ2lvbn0gbWVzc2FnZVxuICogQHBhcmFtIHshanNwYi5CaW5hcnlXcml0ZXJ9IHdyaXRlclxuICogQHN1cHByZXNzIHt1bnVzZWRMb2NhbFZhcmlhYmxlc30gZiBpcyBvbmx5IHVzZWQgZm9yIG5lc3RlZCBtZXNzYWdlc1xuICovXG5wcm90by5iYXNlLnYxLlJlZ2lvbi5zZXJpYWxpemVCaW5hcnlUb1dyaXRlciA9IGZ1bmN0aW9uKG1lc3NhZ2UsIHdyaXRlcikge1xuICB2YXIgZiA9IHVuZGVmaW5lZDtcbiAgZiA9IG1lc3NhZ2UuZ2V0Q29kZSgpO1xuICBpZiAoZi5sZW5ndGggPiAwKSB7XG4gICAgd3JpdGVyLndyaXRlU3RyaW5nKFxuICAgICAgMSxcbiAgICAgIGZcbiAgICApO1xuICB9XG4gIGYgPSBtZXNzYWdlLmdldE5hbWUoKTtcbiAgaWYgKGYubGVuZ3RoID4gMCkge1xuICAgIHdyaXRlci53cml0ZVN0cmluZyhcbiAgICAgIDIsXG4gICAgICBmXG4gICAgKTtcbiAgfVxufTtcblxuXG4vKipcbiAqIG9wdGlvbmFsIHN0cmluZyBjb2RlID0gMTtcbiAqIEByZXR1cm4ge3N0cmluZ31cbiAqL1xucHJvdG8uYmFzZS52MS5SZWdpb24ucHJvdG90eXBlLmdldENvZGUgPSBmdW5jdGlvbigpIHtcbiAgcmV0dXJuIC8qKiBAdHlwZSB7c3RyaW5nfSAqLyAoanNwYi5NZXNzYWdlLmdldEZpZWxkV2l0aERlZmF1bHQodGhpcywgMSwgXCJcIikpO1xufTtcblxuXG4vKipcbiAqIEBwYXJhbSB7c3RyaW5nfSB2YWx1ZVxuICogQHJldHVybiB7IXByb3RvLmJhc2UudjEuUmVnaW9ufSByZXR1cm5zIHRoaXNcbiAqL1xucHJvdG8uYmFzZS52MS5SZWdpb24ucHJvdG90eXBlLnNldENvZGUgPSBmdW5jdGlvbih2YWx1ZSkge1xuICByZXR1cm4ganNwYi5NZXNzYWdlLnNldFByb3RvM1N0cmluZ0ZpZWxkKHRoaXMsIDEsIHZhbHVlKTtcbn07XG5cblxuLyoqXG4gKiBvcHRpb25hbCBzdHJpbmcgbmFtZSA9IDI7XG4gKiBAcmV0dXJuIHtzdHJpbmd9XG4gKi9cbnByb3RvLmJhc2UudjEuUmVnaW9uLnByb3RvdHlwZS5nZXROYW1lID0gZnVuY3Rpb24oKSB7XG4gIHJldHVybiAvKiogQHR5cGUge3N0cmluZ30gKi8gKGpzcGIuTWVzc2FnZS5nZXRGaWVsZFdpdGhEZWZhdWx0KHRoaXMsIDIsIFwiXCIpKTtcbn07XG5cblxuLyoqXG4gKiBAcGFyYW0ge3N0cmluZ30gdmFsdWVcbiAqIEByZXR1cm4geyFwcm90by5iYXNlLnYxLlJlZ2lvbn0gcmV0dXJucyB0aGlzXG4gKi9cbnByb3RvLmJhc2UudjEuUmVnaW9uLnByb3RvdHlwZS5zZXROYW1lID0gZnVuY3Rpb24odmFsdWUpIHtcbiAgcmV0dXJuIGpzcGIuTWVzc2FnZS5zZXRQcm90bzNTdHJpbmdGaWVsZCh0aGlzLCAyLCB2YWx1ZSk7XG59O1xuXG5cblxuXG5cbmlmIChqc3BiLk1lc3NhZ2UuR0VORVJBVEVfVE9fT0JKRUNUKSB7XG4vKipcbiAqIENyZWF0ZXMgYW4gb2JqZWN0IHJlcHJlc2VudGF0aW9uIG9mIHRoaXMgcHJvdG8uXG4gKiBGaWVsZCBuYW1lcyB0aGF0IGFyZSByZXNlcnZlZCBpbiBKYXZhU2NyaXB0IGFuZCB3aWxsIGJlIHJlbmFtZWQgdG8gcGJfbmFtZS5cbiAqIE9wdGlvbmFsIGZpZWxkcyB0aGF0IGFyZSBub3Qgc2V0IHdpbGwgYmUgc2V0IHRvIHVuZGVmaW5lZC5cbiAqIFRvIGFjY2VzcyBhIHJlc2VydmVkIGZpZWxkIHVzZSwgZm9vLnBiXzxuYW1lPiwgZWcsIGZvby5wYl9kZWZhdWx0LlxuICogRm9yIHRoZSBsaXN0IG9mIHJlc2VydmVkIG5hbWVzIHBsZWFzZSBzZWU6XG4gKiAgICAgbmV0L3Byb3RvMi9jb21waWxlci9qcy9pbnRlcm5hbC9nZW5lcmF0b3IuY2Mja0tleXdvcmQuXG4gKiBAcGFyYW0ge2Jvb2xlYW49fSBvcHRfaW5jbHVkZUluc3RhbmNlIERlcHJlY2F0ZWQuIHdoZXRoZXIgdG8gaW5jbHVkZSB0aGVcbiAqICAgICBKU1BCIGluc3RhbmNlIGZvciB0cmFuc2l0aW9uYWwgc295IHByb3RvIHN1cHBvcnQ6XG4gKiAgICAgaHR0cDovL2dvdG8vc295LXBhcmFtLW1pZ3JhdGlvblxuICogQHJldHVybiB7IU9iamVjdH1cbiAqL1xucHJvdG8uYmFzZS52MS5TaG9wTGlzdC5wcm90b3R5cGUudG9PYmplY3QgPSBmdW5jdGlvbihvcHRfaW5jbHVkZUluc3RhbmNlKSB7XG4gIHJldHVybiBwcm90by5iYXNlLnYxLlNob3BMaXN0LnRvT2JqZWN0KG9wdF9pbmNsdWRlSW5zdGFuY2UsIHRoaXMpO1xufTtcblxuXG4vKipcbiAqIFN0YXRpYyB2ZXJzaW9uIG9mIHRoZSB7QHNlZSB0b09iamVjdH0gbWV0aG9kLlxuICogQHBhcmFtIHtib29sZWFufHVuZGVmaW5lZH0gaW5jbHVkZUluc3RhbmNlIERlcHJlY2F0ZWQuIFdoZXRoZXIgdG8gaW5jbHVkZVxuICogICAgIHRoZSBKU1BCIGluc3RhbmNlIGZvciB0cmFuc2l0aW9uYWwgc295IHByb3RvIHN1cHBvcnQ6XG4gKiAgICAgaHR0cDovL2dvdG8vc295LXBhcmFtLW1pZ3JhdGlvblxuICogQHBhcmFtIHshcHJvdG8uYmFzZS52MS5TaG9wTGlzdH0gbXNnIFRoZSBtc2cgaW5zdGFuY2UgdG8gdHJhbnNmb3JtLlxuICogQHJldHVybiB7IU9iamVjdH1cbiAqIEBzdXBwcmVzcyB7dW51c2VkTG9jYWxWYXJpYWJsZXN9IGYgaXMgb25seSB1c2VkIGZvciBuZXN0ZWQgbWVzc2FnZXNcbiAqL1xucHJvdG8uYmFzZS52MS5TaG9wTGlzdC50b09iamVjdCA9IGZ1bmN0aW9uKGluY2x1ZGVJbnN0YW5jZSwgbXNnKSB7XG4gIHZhciBmLCBvYmogPSB7XG4gICAgc2hvcGlkOiBqc3BiLk1lc3NhZ2UuZ2V0RmllbGRXaXRoRGVmYXVsdChtc2csIDEsIDApLFxuICAgIG5hbWU6IGpzcGIuTWVzc2FnZS5nZXRGaWVsZFdpdGhEZWZhdWx0KG1zZywgMiwgXCJcIilcbiAgfTtcblxuICBpZiAoaW5jbHVkZUluc3RhbmNlKSB7XG4gICAgb2JqLiRqc3BiTWVzc2FnZUluc3RhbmNlID0gbXNnO1xuICB9XG4gIHJldHVybiBvYmo7XG59O1xufVxuXG5cbi8qKlxuICogRGVzZXJpYWxpemVzIGJpbmFyeSBkYXRhIChpbiBwcm90b2J1ZiB3aXJlIGZvcm1hdCkuXG4gKiBAcGFyYW0ge2pzcGIuQnl0ZVNvdXJjZX0gYnl0ZXMgVGhlIGJ5dGVzIHRvIGRlc2VyaWFsaXplLlxuICogQHJldHVybiB7IXByb3RvLmJhc2UudjEuU2hvcExpc3R9XG4gKi9cbnByb3RvLmJhc2UudjEuU2hvcExpc3QuZGVzZXJpYWxpemVCaW5hcnkgPSBmdW5jdGlvbihieXRlcykge1xuICB2YXIgcmVhZGVyID0gbmV3IGpzcGIuQmluYXJ5UmVhZGVyKGJ5dGVzKTtcbiAgdmFyIG1zZyA9IG5ldyBwcm90by5iYXNlLnYxLlNob3BMaXN0O1xuICByZXR1cm4gcHJvdG8uYmFzZS52MS5TaG9wTGlzdC5kZXNlcmlhbGl6ZUJpbmFyeUZyb21SZWFkZXIobXNnLCByZWFkZXIpO1xufTtcblxuXG4vKipcbiAqIERlc2VyaWFsaXplcyBiaW5hcnkgZGF0YSAoaW4gcHJvdG9idWYgd2lyZSBmb3JtYXQpIGZyb20gdGhlXG4gKiBnaXZlbiByZWFkZXIgaW50byB0aGUgZ2l2ZW4gbWVzc2FnZSBvYmplY3QuXG4gKiBAcGFyYW0geyFwcm90by5iYXNlLnYxLlNob3BMaXN0fSBtc2cgVGhlIG1lc3NhZ2Ugb2JqZWN0IHRvIGRlc2VyaWFsaXplIGludG8uXG4gKiBAcGFyYW0geyFqc3BiLkJpbmFyeVJlYWRlcn0gcmVhZGVyIFRoZSBCaW5hcnlSZWFkZXIgdG8gdXNlLlxuICogQHJldHVybiB7IXByb3RvLmJhc2UudjEuU2hvcExpc3R9XG4gKi9cbnByb3RvLmJhc2UudjEuU2hvcExpc3QuZGVzZXJpYWxpemVCaW5hcnlGcm9tUmVhZGVyID0gZnVuY3Rpb24obXNnLCByZWFkZXIpIHtcbiAgd2hpbGUgKHJlYWRlci5uZXh0RmllbGQoKSkge1xuICAgIGlmIChyZWFkZXIuaXNFbmRHcm91cCgpKSB7XG4gICAgICBicmVhaztcbiAgICB9XG4gICAgdmFyIGZpZWxkID0gcmVhZGVyLmdldEZpZWxkTnVtYmVyKCk7XG4gICAgc3dpdGNoIChmaWVsZCkge1xuICAgIGNhc2UgMTpcbiAgICAgIHZhciB2YWx1ZSA9IC8qKiBAdHlwZSB7bnVtYmVyfSAqLyAocmVhZGVyLnJlYWRJbnQzMigpKTtcbiAgICAgIG1zZy5zZXRTaG9waWQodmFsdWUpO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSAyOlxuICAgICAgdmFyIHZhbHVlID0gLyoqIEB0eXBlIHtzdHJpbmd9ICovIChyZWFkZXIucmVhZFN0cmluZygpKTtcbiAgICAgIG1zZy5zZXROYW1lKHZhbHVlKTtcbiAgICAgIGJyZWFrO1xuICAgIGRlZmF1bHQ6XG4gICAgICByZWFkZXIuc2tpcEZpZWxkKCk7XG4gICAgICBicmVhaztcbiAgICB9XG4gIH1cbiAgcmV0dXJuIG1zZztcbn07XG5cblxuLyoqXG4gKiBTZXJpYWxpemVzIHRoZSBtZXNzYWdlIHRvIGJpbmFyeSBkYXRhIChpbiBwcm90b2J1ZiB3aXJlIGZvcm1hdCkuXG4gKiBAcmV0dXJuIHshVWludDhBcnJheX1cbiAqL1xucHJvdG8uYmFzZS52MS5TaG9wTGlzdC5wcm90b3R5cGUuc2VyaWFsaXplQmluYXJ5ID0gZnVuY3Rpb24oKSB7XG4gIHZhciB3cml0ZXIgPSBuZXcganNwYi5CaW5hcnlXcml0ZXIoKTtcbiAgcHJvdG8uYmFzZS52MS5TaG9wTGlzdC5zZXJpYWxpemVCaW5hcnlUb1dyaXRlcih0aGlzLCB3cml0ZXIpO1xuICByZXR1cm4gd3JpdGVyLmdldFJlc3VsdEJ1ZmZlcigpO1xufTtcblxuXG4vKipcbiAqIFNlcmlhbGl6ZXMgdGhlIGdpdmVuIG1lc3NhZ2UgdG8gYmluYXJ5IGRhdGEgKGluIHByb3RvYnVmIHdpcmVcbiAqIGZvcm1hdCksIHdyaXRpbmcgdG8gdGhlIGdpdmVuIEJpbmFyeVdyaXRlci5cbiAqIEBwYXJhbSB7IXByb3RvLmJhc2UudjEuU2hvcExpc3R9IG1lc3NhZ2VcbiAqIEBwYXJhbSB7IWpzcGIuQmluYXJ5V3JpdGVyfSB3cml0ZXJcbiAqIEBzdXBwcmVzcyB7dW51c2VkTG9jYWxWYXJpYWJsZXN9IGYgaXMgb25seSB1c2VkIGZvciBuZXN0ZWQgbWVzc2FnZXNcbiAqL1xucHJvdG8uYmFzZS52MS5TaG9wTGlzdC5zZXJpYWxpemVCaW5hcnlUb1dyaXRlciA9IGZ1bmN0aW9uKG1lc3NhZ2UsIHdyaXRlcikge1xuICB2YXIgZiA9IHVuZGVmaW5lZDtcbiAgZiA9IG1lc3NhZ2UuZ2V0U2hvcGlkKCk7XG4gIGlmIChmICE9PSAwKSB7XG4gICAgd3JpdGVyLndyaXRlSW50MzIoXG4gICAgICAxLFxuICAgICAgZlxuICAgICk7XG4gIH1cbiAgZiA9IG1lc3NhZ2UuZ2V0TmFtZSgpO1xuICBpZiAoZi5sZW5ndGggPiAwKSB7XG4gICAgd3JpdGVyLndyaXRlU3RyaW5nKFxuICAgICAgMixcbiAgICAgIGZcbiAgICApO1xuICB9XG59O1xuXG5cbi8qKlxuICogb3B0aW9uYWwgaW50MzIgc2hvcElkID0gMTtcbiAqIEByZXR1cm4ge251bWJlcn1cbiAqL1xucHJvdG8uYmFzZS52MS5TaG9wTGlzdC5wcm90b3R5cGUuZ2V0U2hvcGlkID0gZnVuY3Rpb24oKSB7XG4gIHJldHVybiAvKiogQHR5cGUge251bWJlcn0gKi8gKGpzcGIuTWVzc2FnZS5nZXRGaWVsZFdpdGhEZWZhdWx0KHRoaXMsIDEsIDApKTtcbn07XG5cblxuLyoqXG4gKiBAcGFyYW0ge251bWJlcn0gdmFsdWVcbiAqIEByZXR1cm4geyFwcm90by5iYXNlLnYxLlNob3BMaXN0fSByZXR1cm5zIHRoaXNcbiAqL1xucHJvdG8uYmFzZS52MS5TaG9wTGlzdC5wcm90b3R5cGUuc2V0U2hvcGlkID0gZnVuY3Rpb24odmFsdWUpIHtcbiAgcmV0dXJuIGpzcGIuTWVzc2FnZS5zZXRQcm90bzNJbnRGaWVsZCh0aGlzLCAxLCB2YWx1ZSk7XG59O1xuXG5cbi8qKlxuICogb3B0aW9uYWwgc3RyaW5nIG5hbWUgPSAyO1xuICogQHJldHVybiB7c3RyaW5nfVxuICovXG5wcm90by5iYXNlLnYxLlNob3BMaXN0LnByb3RvdHlwZS5nZXROYW1lID0gZnVuY3Rpb24oKSB7XG4gIHJldHVybiAvKiogQHR5cGUge3N0cmluZ30gKi8gKGpzcGIuTWVzc2FnZS5nZXRGaWVsZFdpdGhEZWZhdWx0KHRoaXMsIDIsIFwiXCIpKTtcbn07XG5cblxuLyoqXG4gKiBAcGFyYW0ge3N0cmluZ30gdmFsdWVcbiAqIEByZXR1cm4geyFwcm90by5iYXNlLnYxLlNob3BMaXN0fSByZXR1cm5zIHRoaXNcbiAqL1xucHJvdG8uYmFzZS52MS5TaG9wTGlzdC5wcm90b3R5cGUuc2V0TmFtZSA9IGZ1bmN0aW9uKHZhbHVlKSB7XG4gIHJldHVybiBqc3BiLk1lc3NhZ2Uuc2V0UHJvdG8zU3RyaW5nRmllbGQodGhpcywgMiwgdmFsdWUpO1xufTtcblxuXG5cblxuXG5pZiAoanNwYi5NZXNzYWdlLkdFTkVSQVRFX1RPX09CSkVDVCkge1xuLyoqXG4gKiBDcmVhdGVzIGFuIG9iamVjdCByZXByZXNlbnRhdGlvbiBvZiB0aGlzIHByb3RvLlxuICogRmllbGQgbmFtZXMgdGhhdCBhcmUgcmVzZXJ2ZWQgaW4gSmF2YVNjcmlwdCBhbmQgd2lsbCBiZSByZW5hbWVkIHRvIHBiX25hbWUuXG4gKiBPcHRpb25hbCBmaWVsZHMgdGhhdCBhcmUgbm90IHNldCB3aWxsIGJlIHNldCB0byB1bmRlZmluZWQuXG4gKiBUbyBhY2Nlc3MgYSByZXNlcnZlZCBmaWVsZCB1c2UsIGZvby5wYl88bmFtZT4sIGVnLCBmb28ucGJfZGVmYXVsdC5cbiAqIEZvciB0aGUgbGlzdCBvZiByZXNlcnZlZCBuYW1lcyBwbGVhc2Ugc2VlOlxuICogICAgIG5ldC9wcm90bzIvY29tcGlsZXIvanMvaW50ZXJuYWwvZ2VuZXJhdG9yLmNjI2tLZXl3b3JkLlxuICogQHBhcmFtIHtib29sZWFuPX0gb3B0X2luY2x1ZGVJbnN0YW5jZSBEZXByZWNhdGVkLiB3aGV0aGVyIHRvIGluY2x1ZGUgdGhlXG4gKiAgICAgSlNQQiBpbnN0YW5jZSBmb3IgdHJhbnNpdGlvbmFsIHNveSBwcm90byBzdXBwb3J0OlxuICogICAgIGh0dHA6Ly9nb3RvL3NveS1wYXJhbS1taWdyYXRpb25cbiAqIEByZXR1cm4geyFPYmplY3R9XG4gKi9cbnByb3RvLmJhc2UudjEuQ29udHJvbEluZm9MaXN0LnByb3RvdHlwZS50b09iamVjdCA9IGZ1bmN0aW9uKG9wdF9pbmNsdWRlSW5zdGFuY2UpIHtcbiAgcmV0dXJuIHByb3RvLmJhc2UudjEuQ29udHJvbEluZm9MaXN0LnRvT2JqZWN0KG9wdF9pbmNsdWRlSW5zdGFuY2UsIHRoaXMpO1xufTtcblxuXG4vKipcbiAqIFN0YXRpYyB2ZXJzaW9uIG9mIHRoZSB7QHNlZSB0b09iamVjdH0gbWV0aG9kLlxuICogQHBhcmFtIHtib29sZWFufHVuZGVmaW5lZH0gaW5jbHVkZUluc3RhbmNlIERlcHJlY2F0ZWQuIFdoZXRoZXIgdG8gaW5jbHVkZVxuICogICAgIHRoZSBKU1BCIGluc3RhbmNlIGZvciB0cmFuc2l0aW9uYWwgc295IHByb3RvIHN1cHBvcnQ6XG4gKiAgICAgaHR0cDovL2dvdG8vc295LXBhcmFtLW1pZ3JhdGlvblxuICogQHBhcmFtIHshcHJvdG8uYmFzZS52MS5Db250cm9sSW5mb0xpc3R9IG1zZyBUaGUgbXNnIGluc3RhbmNlIHRvIHRyYW5zZm9ybS5cbiAqIEByZXR1cm4geyFPYmplY3R9XG4gKiBAc3VwcHJlc3Mge3VudXNlZExvY2FsVmFyaWFibGVzfSBmIGlzIG9ubHkgdXNlZCBmb3IgbmVzdGVkIG1lc3NhZ2VzXG4gKi9cbnByb3RvLmJhc2UudjEuQ29udHJvbEluZm9MaXN0LnRvT2JqZWN0ID0gZnVuY3Rpb24oaW5jbHVkZUluc3RhbmNlLCBtc2cpIHtcbiAgdmFyIGYsIG9iaiA9IHtcbiAgICBjaWlkOiBqc3BiLk1lc3NhZ2UuZ2V0RmllbGRXaXRoRGVmYXVsdChtc2csIDEsIDApLFxuICAgIGNpY29kZToganNwYi5NZXNzYWdlLmdldEZpZWxkV2l0aERlZmF1bHQobXNnLCAyLCBcIlwiKVxuICB9O1xuXG4gIGlmIChpbmNsdWRlSW5zdGFuY2UpIHtcbiAgICBvYmouJGpzcGJNZXNzYWdlSW5zdGFuY2UgPSBtc2c7XG4gIH1cbiAgcmV0dXJuIG9iajtcbn07XG59XG5cblxuLyoqXG4gKiBEZXNlcmlhbGl6ZXMgYmluYXJ5IGRhdGEgKGluIHByb3RvYnVmIHdpcmUgZm9ybWF0KS5cbiAqIEBwYXJhbSB7anNwYi5CeXRlU291cmNlfSBieXRlcyBUaGUgYnl0ZXMgdG8gZGVzZXJpYWxpemUuXG4gKiBAcmV0dXJuIHshcHJvdG8uYmFzZS52MS5Db250cm9sSW5mb0xpc3R9XG4gKi9cbnByb3RvLmJhc2UudjEuQ29udHJvbEluZm9MaXN0LmRlc2VyaWFsaXplQmluYXJ5ID0gZnVuY3Rpb24oYnl0ZXMpIHtcbiAgdmFyIHJlYWRlciA9IG5ldyBqc3BiLkJpbmFyeVJlYWRlcihieXRlcyk7XG4gIHZhciBtc2cgPSBuZXcgcHJvdG8uYmFzZS52MS5Db250cm9sSW5mb0xpc3Q7XG4gIHJldHVybiBwcm90by5iYXNlLnYxLkNvbnRyb2xJbmZvTGlzdC5kZXNlcmlhbGl6ZUJpbmFyeUZyb21SZWFkZXIobXNnLCByZWFkZXIpO1xufTtcblxuXG4vKipcbiAqIERlc2VyaWFsaXplcyBiaW5hcnkgZGF0YSAoaW4gcHJvdG9idWYgd2lyZSBmb3JtYXQpIGZyb20gdGhlXG4gKiBnaXZlbiByZWFkZXIgaW50byB0aGUgZ2l2ZW4gbWVzc2FnZSBvYmplY3QuXG4gKiBAcGFyYW0geyFwcm90by5iYXNlLnYxLkNvbnRyb2xJbmZvTGlzdH0gbXNnIFRoZSBtZXNzYWdlIG9iamVjdCB0byBkZXNlcmlhbGl6ZSBpbnRvLlxuICogQHBhcmFtIHshanNwYi5CaW5hcnlSZWFkZXJ9IHJlYWRlciBUaGUgQmluYXJ5UmVhZGVyIHRvIHVzZS5cbiAqIEByZXR1cm4geyFwcm90by5iYXNlLnYxLkNvbnRyb2xJbmZvTGlzdH1cbiAqL1xucHJvdG8uYmFzZS52MS5Db250cm9sSW5mb0xpc3QuZGVzZXJpYWxpemVCaW5hcnlGcm9tUmVhZGVyID0gZnVuY3Rpb24obXNnLCByZWFkZXIpIHtcbiAgd2hpbGUgKHJlYWRlci5uZXh0RmllbGQoKSkge1xuICAgIGlmIChyZWFkZXIuaXNFbmRHcm91cCgpKSB7XG4gICAgICBicmVhaztcbiAgICB9XG4gICAgdmFyIGZpZWxkID0gcmVhZGVyLmdldEZpZWxkTnVtYmVyKCk7XG4gICAgc3dpdGNoIChmaWVsZCkge1xuICAgIGNhc2UgMTpcbiAgICAgIHZhciB2YWx1ZSA9IC8qKiBAdHlwZSB7bnVtYmVyfSAqLyAocmVhZGVyLnJlYWRJbnQzMigpKTtcbiAgICAgIG1zZy5zZXRDaWlkKHZhbHVlKTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgMjpcbiAgICAgIHZhciB2YWx1ZSA9IC8qKiBAdHlwZSB7c3RyaW5nfSAqLyAocmVhZGVyLnJlYWRTdHJpbmcoKSk7XG4gICAgICBtc2cuc2V0Q2ljb2RlKHZhbHVlKTtcbiAgICAgIGJyZWFrO1xuICAgIGRlZmF1bHQ6XG4gICAgICByZWFkZXIuc2tpcEZpZWxkKCk7XG4gICAgICBicmVhaztcbiAgICB9XG4gIH1cbiAgcmV0dXJuIG1zZztcbn07XG5cblxuLyoqXG4gKiBTZXJpYWxpemVzIHRoZSBtZXNzYWdlIHRvIGJpbmFyeSBkYXRhIChpbiBwcm90b2J1ZiB3aXJlIGZvcm1hdCkuXG4gKiBAcmV0dXJuIHshVWludDhBcnJheX1cbiAqL1xucHJvdG8uYmFzZS52MS5Db250cm9sSW5mb0xpc3QucHJvdG90eXBlLnNlcmlhbGl6ZUJpbmFyeSA9IGZ1bmN0aW9uKCkge1xuICB2YXIgd3JpdGVyID0gbmV3IGpzcGIuQmluYXJ5V3JpdGVyKCk7XG4gIHByb3RvLmJhc2UudjEuQ29udHJvbEluZm9MaXN0LnNlcmlhbGl6ZUJpbmFyeVRvV3JpdGVyKHRoaXMsIHdyaXRlcik7XG4gIHJldHVybiB3cml0ZXIuZ2V0UmVzdWx0QnVmZmVyKCk7XG59O1xuXG5cbi8qKlxuICogU2VyaWFsaXplcyB0aGUgZ2l2ZW4gbWVzc2FnZSB0byBiaW5hcnkgZGF0YSAoaW4gcHJvdG9idWYgd2lyZVxuICogZm9ybWF0KSwgd3JpdGluZyB0byB0aGUgZ2l2ZW4gQmluYXJ5V3JpdGVyLlxuICogQHBhcmFtIHshcHJvdG8uYmFzZS52MS5Db250cm9sSW5mb0xpc3R9IG1lc3NhZ2VcbiAqIEBwYXJhbSB7IWpzcGIuQmluYXJ5V3JpdGVyfSB3cml0ZXJcbiAqIEBzdXBwcmVzcyB7dW51c2VkTG9jYWxWYXJpYWJsZXN9IGYgaXMgb25seSB1c2VkIGZvciBuZXN0ZWQgbWVzc2FnZXNcbiAqL1xucHJvdG8uYmFzZS52MS5Db250cm9sSW5mb0xpc3Quc2VyaWFsaXplQmluYXJ5VG9Xcml0ZXIgPSBmdW5jdGlvbihtZXNzYWdlLCB3cml0ZXIpIHtcbiAgdmFyIGYgPSB1bmRlZmluZWQ7XG4gIGYgPSBtZXNzYWdlLmdldENpaWQoKTtcbiAgaWYgKGYgIT09IDApIHtcbiAgICB3cml0ZXIud3JpdGVJbnQzMihcbiAgICAgIDEsXG4gICAgICBmXG4gICAgKTtcbiAgfVxuICBmID0gbWVzc2FnZS5nZXRDaWNvZGUoKTtcbiAgaWYgKGYubGVuZ3RoID4gMCkge1xuICAgIHdyaXRlci53cml0ZVN0cmluZyhcbiAgICAgIDIsXG4gICAgICBmXG4gICAgKTtcbiAgfVxufTtcblxuXG4vKipcbiAqIG9wdGlvbmFsIGludDMyIGNpSWQgPSAxO1xuICogQHJldHVybiB7bnVtYmVyfVxuICovXG5wcm90by5iYXNlLnYxLkNvbnRyb2xJbmZvTGlzdC5wcm90b3R5cGUuZ2V0Q2lpZCA9IGZ1bmN0aW9uKCkge1xuICByZXR1cm4gLyoqIEB0eXBlIHtudW1iZXJ9ICovIChqc3BiLk1lc3NhZ2UuZ2V0RmllbGRXaXRoRGVmYXVsdCh0aGlzLCAxLCAwKSk7XG59O1xuXG5cbi8qKlxuICogQHBhcmFtIHtudW1iZXJ9IHZhbHVlXG4gKiBAcmV0dXJuIHshcHJvdG8uYmFzZS52MS5Db250cm9sSW5mb0xpc3R9IHJldHVybnMgdGhpc1xuICovXG5wcm90by5iYXNlLnYxLkNvbnRyb2xJbmZvTGlzdC5wcm90b3R5cGUuc2V0Q2lpZCA9IGZ1bmN0aW9uKHZhbHVlKSB7XG4gIHJldHVybiBqc3BiLk1lc3NhZ2Uuc2V0UHJvdG8zSW50RmllbGQodGhpcywgMSwgdmFsdWUpO1xufTtcblxuXG4vKipcbiAqIG9wdGlvbmFsIHN0cmluZyBjaUNvZGUgPSAyO1xuICogQHJldHVybiB7c3RyaW5nfVxuICovXG5wcm90by5iYXNlLnYxLkNvbnRyb2xJbmZvTGlzdC5wcm90b3R5cGUuZ2V0Q2ljb2RlID0gZnVuY3Rpb24oKSB7XG4gIHJldHVybiAvKiogQHR5cGUge3N0cmluZ30gKi8gKGpzcGIuTWVzc2FnZS5nZXRGaWVsZFdpdGhEZWZhdWx0KHRoaXMsIDIsIFwiXCIpKTtcbn07XG5cblxuLyoqXG4gKiBAcGFyYW0ge3N0cmluZ30gdmFsdWVcbiAqIEByZXR1cm4geyFwcm90by5iYXNlLnYxLkNvbnRyb2xJbmZvTGlzdH0gcmV0dXJucyB0aGlzXG4gKi9cbnByb3RvLmJhc2UudjEuQ29udHJvbEluZm9MaXN0LnByb3RvdHlwZS5zZXRDaWNvZGUgPSBmdW5jdGlvbih2YWx1ZSkge1xuICByZXR1cm4ganNwYi5NZXNzYWdlLnNldFByb3RvM1N0cmluZ0ZpZWxkKHRoaXMsIDIsIHZhbHVlKTtcbn07XG5cblxuXG5cblxuaWYgKGpzcGIuTWVzc2FnZS5HRU5FUkFURV9UT19PQkpFQ1QpIHtcbi8qKlxuICogQ3JlYXRlcyBhbiBvYmplY3QgcmVwcmVzZW50YXRpb24gb2YgdGhpcyBwcm90by5cbiAqIEZpZWxkIG5hbWVzIHRoYXQgYXJlIHJlc2VydmVkIGluIEphdmFTY3JpcHQgYW5kIHdpbGwgYmUgcmVuYW1lZCB0byBwYl9uYW1lLlxuICogT3B0aW9uYWwgZmllbGRzIHRoYXQgYXJlIG5vdCBzZXQgd2lsbCBiZSBzZXQgdG8gdW5kZWZpbmVkLlxuICogVG8gYWNjZXNzIGEgcmVzZXJ2ZWQgZmllbGQgdXNlLCBmb28ucGJfPG5hbWU+LCBlZywgZm9vLnBiX2RlZmF1bHQuXG4gKiBGb3IgdGhlIGxpc3Qgb2YgcmVzZXJ2ZWQgbmFtZXMgcGxlYXNlIHNlZTpcbiAqICAgICBuZXQvcHJvdG8yL2NvbXBpbGVyL2pzL2ludGVybmFsL2dlbmVyYXRvci5jYyNrS2V5d29yZC5cbiAqIEBwYXJhbSB7Ym9vbGVhbj19IG9wdF9pbmNsdWRlSW5zdGFuY2UgRGVwcmVjYXRlZC4gd2hldGhlciB0byBpbmNsdWRlIHRoZVxuICogICAgIEpTUEIgaW5zdGFuY2UgZm9yIHRyYW5zaXRpb25hbCBzb3kgcHJvdG8gc3VwcG9ydDpcbiAqICAgICBodHRwOi8vZ290by9zb3ktcGFyYW0tbWlncmF0aW9uXG4gKiBAcmV0dXJuIHshT2JqZWN0fVxuICovXG5wcm90by5iYXNlLnYxLkRlZmF1bHRSZXBseS5wcm90b3R5cGUudG9PYmplY3QgPSBmdW5jdGlvbihvcHRfaW5jbHVkZUluc3RhbmNlKSB7XG4gIHJldHVybiBwcm90by5iYXNlLnYxLkRlZmF1bHRSZXBseS50b09iamVjdChvcHRfaW5jbHVkZUluc3RhbmNlLCB0aGlzKTtcbn07XG5cblxuLyoqXG4gKiBTdGF0aWMgdmVyc2lvbiBvZiB0aGUge0BzZWUgdG9PYmplY3R9IG1ldGhvZC5cbiAqIEBwYXJhbSB7Ym9vbGVhbnx1bmRlZmluZWR9IGluY2x1ZGVJbnN0YW5jZSBEZXByZWNhdGVkLiBXaGV0aGVyIHRvIGluY2x1ZGVcbiAqICAgICB0aGUgSlNQQiBpbnN0YW5jZSBmb3IgdHJhbnNpdGlvbmFsIHNveSBwcm90byBzdXBwb3J0OlxuICogICAgIGh0dHA6Ly9nb3RvL3NveS1wYXJhbS1taWdyYXRpb25cbiAqIEBwYXJhbSB7IXByb3RvLmJhc2UudjEuRGVmYXVsdFJlcGx5fSBtc2cgVGhlIG1zZyBpbnN0YW5jZSB0byB0cmFuc2Zvcm0uXG4gKiBAcmV0dXJuIHshT2JqZWN0fVxuICogQHN1cHByZXNzIHt1bnVzZWRMb2NhbFZhcmlhYmxlc30gZiBpcyBvbmx5IHVzZWQgZm9yIG5lc3RlZCBtZXNzYWdlc1xuICovXG5wcm90by5iYXNlLnYxLkRlZmF1bHRSZXBseS50b09iamVjdCA9IGZ1bmN0aW9uKGluY2x1ZGVJbnN0YW5jZSwgbXNnKSB7XG4gIHZhciBmLCBvYmogPSB7XG5cbiAgfTtcblxuICBpZiAoaW5jbHVkZUluc3RhbmNlKSB7XG4gICAgb2JqLiRqc3BiTWVzc2FnZUluc3RhbmNlID0gbXNnO1xuICB9XG4gIHJldHVybiBvYmo7XG59O1xufVxuXG5cbi8qKlxuICogRGVzZXJpYWxpemVzIGJpbmFyeSBkYXRhIChpbiBwcm90b2J1ZiB3aXJlIGZvcm1hdCkuXG4gKiBAcGFyYW0ge2pzcGIuQnl0ZVNvdXJjZX0gYnl0ZXMgVGhlIGJ5dGVzIHRvIGRlc2VyaWFsaXplLlxuICogQHJldHVybiB7IXByb3RvLmJhc2UudjEuRGVmYXVsdFJlcGx5fVxuICovXG5wcm90by5iYXNlLnYxLkRlZmF1bHRSZXBseS5kZXNlcmlhbGl6ZUJpbmFyeSA9IGZ1bmN0aW9uKGJ5dGVzKSB7XG4gIHZhciByZWFkZXIgPSBuZXcganNwYi5CaW5hcnlSZWFkZXIoYnl0ZXMpO1xuICB2YXIgbXNnID0gbmV3IHByb3RvLmJhc2UudjEuRGVmYXVsdFJlcGx5O1xuICByZXR1cm4gcHJvdG8uYmFzZS52MS5EZWZhdWx0UmVwbHkuZGVzZXJpYWxpemVCaW5hcnlGcm9tUmVhZGVyKG1zZywgcmVhZGVyKTtcbn07XG5cblxuLyoqXG4gKiBEZXNlcmlhbGl6ZXMgYmluYXJ5IGRhdGEgKGluIHByb3RvYnVmIHdpcmUgZm9ybWF0KSBmcm9tIHRoZVxuICogZ2l2ZW4gcmVhZGVyIGludG8gdGhlIGdpdmVuIG1lc3NhZ2Ugb2JqZWN0LlxuICogQHBhcmFtIHshcHJvdG8uYmFzZS52MS5EZWZhdWx0UmVwbHl9IG1zZyBUaGUgbWVzc2FnZSBvYmplY3QgdG8gZGVzZXJpYWxpemUgaW50by5cbiAqIEBwYXJhbSB7IWpzcGIuQmluYXJ5UmVhZGVyfSByZWFkZXIgVGhlIEJpbmFyeVJlYWRlciB0byB1c2UuXG4gKiBAcmV0dXJuIHshcHJvdG8uYmFzZS52MS5EZWZhdWx0UmVwbHl9XG4gKi9cbnByb3RvLmJhc2UudjEuRGVmYXVsdFJlcGx5LmRlc2VyaWFsaXplQmluYXJ5RnJvbVJlYWRlciA9IGZ1bmN0aW9uKG1zZywgcmVhZGVyKSB7XG4gIHdoaWxlIChyZWFkZXIubmV4dEZpZWxkKCkpIHtcbiAgICBpZiAocmVhZGVyLmlzRW5kR3JvdXAoKSkge1xuICAgICAgYnJlYWs7XG4gICAgfVxuICAgIHZhciBmaWVsZCA9IHJlYWRlci5nZXRGaWVsZE51bWJlcigpO1xuICAgIHN3aXRjaCAoZmllbGQpIHtcbiAgICBkZWZhdWx0OlxuICAgICAgcmVhZGVyLnNraXBGaWVsZCgpO1xuICAgICAgYnJlYWs7XG4gICAgfVxuICB9XG4gIHJldHVybiBtc2c7XG59O1xuXG5cbi8qKlxuICogU2VyaWFsaXplcyB0aGUgbWVzc2FnZSB0byBiaW5hcnkgZGF0YSAoaW4gcHJvdG9idWYgd2lyZSBmb3JtYXQpLlxuICogQHJldHVybiB7IVVpbnQ4QXJyYXl9XG4gKi9cbnByb3RvLmJhc2UudjEuRGVmYXVsdFJlcGx5LnByb3RvdHlwZS5zZXJpYWxpemVCaW5hcnkgPSBmdW5jdGlvbigpIHtcbiAgdmFyIHdyaXRlciA9IG5ldyBqc3BiLkJpbmFyeVdyaXRlcigpO1xuICBwcm90by5iYXNlLnYxLkRlZmF1bHRSZXBseS5zZXJpYWxpemVCaW5hcnlUb1dyaXRlcih0aGlzLCB3cml0ZXIpO1xuICByZXR1cm4gd3JpdGVyLmdldFJlc3VsdEJ1ZmZlcigpO1xufTtcblxuXG4vKipcbiAqIFNlcmlhbGl6ZXMgdGhlIGdpdmVuIG1lc3NhZ2UgdG8gYmluYXJ5IGRhdGEgKGluIHByb3RvYnVmIHdpcmVcbiAqIGZvcm1hdCksIHdyaXRpbmcgdG8gdGhlIGdpdmVuIEJpbmFyeVdyaXRlci5cbiAqIEBwYXJhbSB7IXByb3RvLmJhc2UudjEuRGVmYXVsdFJlcGx5fSBtZXNzYWdlXG4gKiBAcGFyYW0geyFqc3BiLkJpbmFyeVdyaXRlcn0gd3JpdGVyXG4gKiBAc3VwcHJlc3Mge3VudXNlZExvY2FsVmFyaWFibGVzfSBmIGlzIG9ubHkgdXNlZCBmb3IgbmVzdGVkIG1lc3NhZ2VzXG4gKi9cbnByb3RvLmJhc2UudjEuRGVmYXVsdFJlcGx5LnNlcmlhbGl6ZUJpbmFyeVRvV3JpdGVyID0gZnVuY3Rpb24obWVzc2FnZSwgd3JpdGVyKSB7XG4gIHZhciBmID0gdW5kZWZpbmVkO1xufTtcblxuXG5cblxuXG5pZiAoanNwYi5NZXNzYWdlLkdFTkVSQVRFX1RPX09CSkVDVCkge1xuLyoqXG4gKiBDcmVhdGVzIGFuIG9iamVjdCByZXByZXNlbnRhdGlvbiBvZiB0aGlzIHByb3RvLlxuICogRmllbGQgbmFtZXMgdGhhdCBhcmUgcmVzZXJ2ZWQgaW4gSmF2YVNjcmlwdCBhbmQgd2lsbCBiZSByZW5hbWVkIHRvIHBiX25hbWUuXG4gKiBPcHRpb25hbCBmaWVsZHMgdGhhdCBhcmUgbm90IHNldCB3aWxsIGJlIHNldCB0byB1bmRlZmluZWQuXG4gKiBUbyBhY2Nlc3MgYSByZXNlcnZlZCBmaWVsZCB1c2UsIGZvby5wYl88bmFtZT4sIGVnLCBmb28ucGJfZGVmYXVsdC5cbiAqIEZvciB0aGUgbGlzdCBvZiByZXNlcnZlZCBuYW1lcyBwbGVhc2Ugc2VlOlxuICogICAgIG5ldC9wcm90bzIvY29tcGlsZXIvanMvaW50ZXJuYWwvZ2VuZXJhdG9yLmNjI2tLZXl3b3JkLlxuICogQHBhcmFtIHtib29sZWFuPX0gb3B0X2luY2x1ZGVJbnN0YW5jZSBEZXByZWNhdGVkLiB3aGV0aGVyIHRvIGluY2x1ZGUgdGhlXG4gKiAgICAgSlNQQiBpbnN0YW5jZSBmb3IgdHJhbnNpdGlvbmFsIHNveSBwcm90byBzdXBwb3J0OlxuICogICAgIGh0dHA6Ly9nb3RvL3NveS1wYXJhbS1taWdyYXRpb25cbiAqIEByZXR1cm4geyFPYmplY3R9XG4gKi9cbnByb3RvLmJhc2UudjEuSWRSZXF1ZXN0LnByb3RvdHlwZS50b09iamVjdCA9IGZ1bmN0aW9uKG9wdF9pbmNsdWRlSW5zdGFuY2UpIHtcbiAgcmV0dXJuIHByb3RvLmJhc2UudjEuSWRSZXF1ZXN0LnRvT2JqZWN0KG9wdF9pbmNsdWRlSW5zdGFuY2UsIHRoaXMpO1xufTtcblxuXG4vKipcbiAqIFN0YXRpYyB2ZXJzaW9uIG9mIHRoZSB7QHNlZSB0b09iamVjdH0gbWV0aG9kLlxuICogQHBhcmFtIHtib29sZWFufHVuZGVmaW5lZH0gaW5jbHVkZUluc3RhbmNlIERlcHJlY2F0ZWQuIFdoZXRoZXIgdG8gaW5jbHVkZVxuICogICAgIHRoZSBKU1BCIGluc3RhbmNlIGZvciB0cmFuc2l0aW9uYWwgc295IHByb3RvIHN1cHBvcnQ6XG4gKiAgICAgaHR0cDovL2dvdG8vc295LXBhcmFtLW1pZ3JhdGlvblxuICogQHBhcmFtIHshcHJvdG8uYmFzZS52MS5JZFJlcXVlc3R9IG1zZyBUaGUgbXNnIGluc3RhbmNlIHRvIHRyYW5zZm9ybS5cbiAqIEByZXR1cm4geyFPYmplY3R9XG4gKiBAc3VwcHJlc3Mge3VudXNlZExvY2FsVmFyaWFibGVzfSBmIGlzIG9ubHkgdXNlZCBmb3IgbmVzdGVkIG1lc3NhZ2VzXG4gKi9cbnByb3RvLmJhc2UudjEuSWRSZXF1ZXN0LnRvT2JqZWN0ID0gZnVuY3Rpb24oaW5jbHVkZUluc3RhbmNlLCBtc2cpIHtcbiAgdmFyIGYsIG9iaiA9IHtcbiAgICBpZDoganNwYi5NZXNzYWdlLmdldEZpZWxkV2l0aERlZmF1bHQobXNnLCAxLCAwKVxuICB9O1xuXG4gIGlmIChpbmNsdWRlSW5zdGFuY2UpIHtcbiAgICBvYmouJGpzcGJNZXNzYWdlSW5zdGFuY2UgPSBtc2c7XG4gIH1cbiAgcmV0dXJuIG9iajtcbn07XG59XG5cblxuLyoqXG4gKiBEZXNlcmlhbGl6ZXMgYmluYXJ5IGRhdGEgKGluIHByb3RvYnVmIHdpcmUgZm9ybWF0KS5cbiAqIEBwYXJhbSB7anNwYi5CeXRlU291cmNlfSBieXRlcyBUaGUgYnl0ZXMgdG8gZGVzZXJpYWxpemUuXG4gKiBAcmV0dXJuIHshcHJvdG8uYmFzZS52MS5JZFJlcXVlc3R9XG4gKi9cbnByb3RvLmJhc2UudjEuSWRSZXF1ZXN0LmRlc2VyaWFsaXplQmluYXJ5ID0gZnVuY3Rpb24oYnl0ZXMpIHtcbiAgdmFyIHJlYWRlciA9IG5ldyBqc3BiLkJpbmFyeVJlYWRlcihieXRlcyk7XG4gIHZhciBtc2cgPSBuZXcgcHJvdG8uYmFzZS52MS5JZFJlcXVlc3Q7XG4gIHJldHVybiBwcm90by5iYXNlLnYxLklkUmVxdWVzdC5kZXNlcmlhbGl6ZUJpbmFyeUZyb21SZWFkZXIobXNnLCByZWFkZXIpO1xufTtcblxuXG4vKipcbiAqIERlc2VyaWFsaXplcyBiaW5hcnkgZGF0YSAoaW4gcHJvdG9idWYgd2lyZSBmb3JtYXQpIGZyb20gdGhlXG4gKiBnaXZlbiByZWFkZXIgaW50byB0aGUgZ2l2ZW4gbWVzc2FnZSBvYmplY3QuXG4gKiBAcGFyYW0geyFwcm90by5iYXNlLnYxLklkUmVxdWVzdH0gbXNnIFRoZSBtZXNzYWdlIG9iamVjdCB0byBkZXNlcmlhbGl6ZSBpbnRvLlxuICogQHBhcmFtIHshanNwYi5CaW5hcnlSZWFkZXJ9IHJlYWRlciBUaGUgQmluYXJ5UmVhZGVyIHRvIHVzZS5cbiAqIEByZXR1cm4geyFwcm90by5iYXNlLnYxLklkUmVxdWVzdH1cbiAqL1xucHJvdG8uYmFzZS52MS5JZFJlcXVlc3QuZGVzZXJpYWxpemVCaW5hcnlGcm9tUmVhZGVyID0gZnVuY3Rpb24obXNnLCByZWFkZXIpIHtcbiAgd2hpbGUgKHJlYWRlci5uZXh0RmllbGQoKSkge1xuICAgIGlmIChyZWFkZXIuaXNFbmRHcm91cCgpKSB7XG4gICAgICBicmVhaztcbiAgICB9XG4gICAgdmFyIGZpZWxkID0gcmVhZGVyLmdldEZpZWxkTnVtYmVyKCk7XG4gICAgc3dpdGNoIChmaWVsZCkge1xuICAgIGNhc2UgMTpcbiAgICAgIHZhciB2YWx1ZSA9IC8qKiBAdHlwZSB7bnVtYmVyfSAqLyAocmVhZGVyLnJlYWRJbnQ2NCgpKTtcbiAgICAgIG1zZy5zZXRJZCh2YWx1ZSk7XG4gICAgICBicmVhaztcbiAgICBkZWZhdWx0OlxuICAgICAgcmVhZGVyLnNraXBGaWVsZCgpO1xuICAgICAgYnJlYWs7XG4gICAgfVxuICB9XG4gIHJldHVybiBtc2c7XG59O1xuXG5cbi8qKlxuICogU2VyaWFsaXplcyB0aGUgbWVzc2FnZSB0byBiaW5hcnkgZGF0YSAoaW4gcHJvdG9idWYgd2lyZSBmb3JtYXQpLlxuICogQHJldHVybiB7IVVpbnQ4QXJyYXl9XG4gKi9cbnByb3RvLmJhc2UudjEuSWRSZXF1ZXN0LnByb3RvdHlwZS5zZXJpYWxpemVCaW5hcnkgPSBmdW5jdGlvbigpIHtcbiAgdmFyIHdyaXRlciA9IG5ldyBqc3BiLkJpbmFyeVdyaXRlcigpO1xuICBwcm90by5iYXNlLnYxLklkUmVxdWVzdC5zZXJpYWxpemVCaW5hcnlUb1dyaXRlcih0aGlzLCB3cml0ZXIpO1xuICByZXR1cm4gd3JpdGVyLmdldFJlc3VsdEJ1ZmZlcigpO1xufTtcblxuXG4vKipcbiAqIFNlcmlhbGl6ZXMgdGhlIGdpdmVuIG1lc3NhZ2UgdG8gYmluYXJ5IGRhdGEgKGluIHByb3RvYnVmIHdpcmVcbiAqIGZvcm1hdCksIHdyaXRpbmcgdG8gdGhlIGdpdmVuIEJpbmFyeVdyaXRlci5cbiAqIEBwYXJhbSB7IXByb3RvLmJhc2UudjEuSWRSZXF1ZXN0fSBtZXNzYWdlXG4gKiBAcGFyYW0geyFqc3BiLkJpbmFyeVdyaXRlcn0gd3JpdGVyXG4gKiBAc3VwcHJlc3Mge3VudXNlZExvY2FsVmFyaWFibGVzfSBmIGlzIG9ubHkgdXNlZCBmb3IgbmVzdGVkIG1lc3NhZ2VzXG4gKi9cbnByb3RvLmJhc2UudjEuSWRSZXF1ZXN0LnNlcmlhbGl6ZUJpbmFyeVRvV3JpdGVyID0gZnVuY3Rpb24obWVzc2FnZSwgd3JpdGVyKSB7XG4gIHZhciBmID0gdW5kZWZpbmVkO1xuICBmID0gbWVzc2FnZS5nZXRJZCgpO1xuICBpZiAoZiAhPT0gMCkge1xuICAgIHdyaXRlci53cml0ZUludDY0KFxuICAgICAgMSxcbiAgICAgIGZcbiAgICApO1xuICB9XG59O1xuXG5cbi8qKlxuICogb3B0aW9uYWwgaW50NjQgaWQgPSAxO1xuICogQHJldHVybiB7bnVtYmVyfVxuICovXG5wcm90by5iYXNlLnYxLklkUmVxdWVzdC5wcm90b3R5cGUuZ2V0SWQgPSBmdW5jdGlvbigpIHtcbiAgcmV0dXJuIC8qKiBAdHlwZSB7bnVtYmVyfSAqLyAoanNwYi5NZXNzYWdlLmdldEZpZWxkV2l0aERlZmF1bHQodGhpcywgMSwgMCkpO1xufTtcblxuXG4vKipcbiAqIEBwYXJhbSB7bnVtYmVyfSB2YWx1ZVxuICogQHJldHVybiB7IXByb3RvLmJhc2UudjEuSWRSZXF1ZXN0fSByZXR1cm5zIHRoaXNcbiAqL1xucHJvdG8uYmFzZS52MS5JZFJlcXVlc3QucHJvdG90eXBlLnNldElkID0gZnVuY3Rpb24odmFsdWUpIHtcbiAgcmV0dXJuIGpzcGIuTWVzc2FnZS5zZXRQcm90bzNJbnRGaWVsZCh0aGlzLCAxLCB2YWx1ZSk7XG59O1xuXG5cblxuXG5cbmlmIChqc3BiLk1lc3NhZ2UuR0VORVJBVEVfVE9fT0JKRUNUKSB7XG4vKipcbiAqIENyZWF0ZXMgYW4gb2JqZWN0IHJlcHJlc2VudGF0aW9uIG9mIHRoaXMgcHJvdG8uXG4gKiBGaWVsZCBuYW1lcyB0aGF0IGFyZSByZXNlcnZlZCBpbiBKYXZhU2NyaXB0IGFuZCB3aWxsIGJlIHJlbmFtZWQgdG8gcGJfbmFtZS5cbiAqIE9wdGlvbmFsIGZpZWxkcyB0aGF0IGFyZSBub3Qgc2V0IHdpbGwgYmUgc2V0IHRvIHVuZGVmaW5lZC5cbiAqIFRvIGFjY2VzcyBhIHJlc2VydmVkIGZpZWxkIHVzZSwgZm9vLnBiXzxuYW1lPiwgZWcsIGZvby5wYl9kZWZhdWx0LlxuICogRm9yIHRoZSBsaXN0IG9mIHJlc2VydmVkIG5hbWVzIHBsZWFzZSBzZWU6XG4gKiAgICAgbmV0L3Byb3RvMi9jb21waWxlci9qcy9pbnRlcm5hbC9nZW5lcmF0b3IuY2Mja0tleXdvcmQuXG4gKiBAcGFyYW0ge2Jvb2xlYW49fSBvcHRfaW5jbHVkZUluc3RhbmNlIERlcHJlY2F0ZWQuIHdoZXRoZXIgdG8gaW5jbHVkZSB0aGVcbiAqICAgICBKU1BCIGluc3RhbmNlIGZvciB0cmFuc2l0aW9uYWwgc295IHByb3RvIHN1cHBvcnQ6XG4gKiAgICAgaHR0cDovL2dvdG8vc295LXBhcmFtLW1pZ3JhdGlvblxuICogQHJldHVybiB7IU9iamVjdH1cbiAqL1xucHJvdG8uYmFzZS52MS5EZWZhdWx0UmVxdWVzdC5wcm90b3R5cGUudG9PYmplY3QgPSBmdW5jdGlvbihvcHRfaW5jbHVkZUluc3RhbmNlKSB7XG4gIHJldHVybiBwcm90by5iYXNlLnYxLkRlZmF1bHRSZXF1ZXN0LnRvT2JqZWN0KG9wdF9pbmNsdWRlSW5zdGFuY2UsIHRoaXMpO1xufTtcblxuXG4vKipcbiAqIFN0YXRpYyB2ZXJzaW9uIG9mIHRoZSB7QHNlZSB0b09iamVjdH0gbWV0aG9kLlxuICogQHBhcmFtIHtib29sZWFufHVuZGVmaW5lZH0gaW5jbHVkZUluc3RhbmNlIERlcHJlY2F0ZWQuIFdoZXRoZXIgdG8gaW5jbHVkZVxuICogICAgIHRoZSBKU1BCIGluc3RhbmNlIGZvciB0cmFuc2l0aW9uYWwgc295IHByb3RvIHN1cHBvcnQ6XG4gKiAgICAgaHR0cDovL2dvdG8vc295LXBhcmFtLW1pZ3JhdGlvblxuICogQHBhcmFtIHshcHJvdG8uYmFzZS52MS5EZWZhdWx0UmVxdWVzdH0gbXNnIFRoZSBtc2cgaW5zdGFuY2UgdG8gdHJhbnNmb3JtLlxuICogQHJldHVybiB7IU9iamVjdH1cbiAqIEBzdXBwcmVzcyB7dW51c2VkTG9jYWxWYXJpYWJsZXN9IGYgaXMgb25seSB1c2VkIGZvciBuZXN0ZWQgbWVzc2FnZXNcbiAqL1xucHJvdG8uYmFzZS52MS5EZWZhdWx0UmVxdWVzdC50b09iamVjdCA9IGZ1bmN0aW9uKGluY2x1ZGVJbnN0YW5jZSwgbXNnKSB7XG4gIHZhciBmLCBvYmogPSB7XG5cbiAgfTtcblxuICBpZiAoaW5jbHVkZUluc3RhbmNlKSB7XG4gICAgb2JqLiRqc3BiTWVzc2FnZUluc3RhbmNlID0gbXNnO1xuICB9XG4gIHJldHVybiBvYmo7XG59O1xufVxuXG5cbi8qKlxuICogRGVzZXJpYWxpemVzIGJpbmFyeSBkYXRhIChpbiBwcm90b2J1ZiB3aXJlIGZvcm1hdCkuXG4gKiBAcGFyYW0ge2pzcGIuQnl0ZVNvdXJjZX0gYnl0ZXMgVGhlIGJ5dGVzIHRvIGRlc2VyaWFsaXplLlxuICogQHJldHVybiB7IXByb3RvLmJhc2UudjEuRGVmYXVsdFJlcXVlc3R9XG4gKi9cbnByb3RvLmJhc2UudjEuRGVmYXVsdFJlcXVlc3QuZGVzZXJpYWxpemVCaW5hcnkgPSBmdW5jdGlvbihieXRlcykge1xuICB2YXIgcmVhZGVyID0gbmV3IGpzcGIuQmluYXJ5UmVhZGVyKGJ5dGVzKTtcbiAgdmFyIG1zZyA9IG5ldyBwcm90by5iYXNlLnYxLkRlZmF1bHRSZXF1ZXN0O1xuICByZXR1cm4gcHJvdG8uYmFzZS52MS5EZWZhdWx0UmVxdWVzdC5kZXNlcmlhbGl6ZUJpbmFyeUZyb21SZWFkZXIobXNnLCByZWFkZXIpO1xufTtcblxuXG4vKipcbiAqIERlc2VyaWFsaXplcyBiaW5hcnkgZGF0YSAoaW4gcHJvdG9idWYgd2lyZSBmb3JtYXQpIGZyb20gdGhlXG4gKiBnaXZlbiByZWFkZXIgaW50byB0aGUgZ2l2ZW4gbWVzc2FnZSBvYmplY3QuXG4gKiBAcGFyYW0geyFwcm90by5iYXNlLnYxLkRlZmF1bHRSZXF1ZXN0fSBtc2cgVGhlIG1lc3NhZ2Ugb2JqZWN0IHRvIGRlc2VyaWFsaXplIGludG8uXG4gKiBAcGFyYW0geyFqc3BiLkJpbmFyeVJlYWRlcn0gcmVhZGVyIFRoZSBCaW5hcnlSZWFkZXIgdG8gdXNlLlxuICogQHJldHVybiB7IXByb3RvLmJhc2UudjEuRGVmYXVsdFJlcXVlc3R9XG4gKi9cbnByb3RvLmJhc2UudjEuRGVmYXVsdFJlcXVlc3QuZGVzZXJpYWxpemVCaW5hcnlGcm9tUmVhZGVyID0gZnVuY3Rpb24obXNnLCByZWFkZXIpIHtcbiAgd2hpbGUgKHJlYWRlci5uZXh0RmllbGQoKSkge1xuICAgIGlmIChyZWFkZXIuaXNFbmRHcm91cCgpKSB7XG4gICAgICBicmVhaztcbiAgICB9XG4gICAgdmFyIGZpZWxkID0gcmVhZGVyLmdldEZpZWxkTnVtYmVyKCk7XG4gICAgc3dpdGNoIChmaWVsZCkge1xuICAgIGRlZmF1bHQ6XG4gICAgICByZWFkZXIuc2tpcEZpZWxkKCk7XG4gICAgICBicmVhaztcbiAgICB9XG4gIH1cbiAgcmV0dXJuIG1zZztcbn07XG5cblxuLyoqXG4gKiBTZXJpYWxpemVzIHRoZSBtZXNzYWdlIHRvIGJpbmFyeSBkYXRhIChpbiBwcm90b2J1ZiB3aXJlIGZvcm1hdCkuXG4gKiBAcmV0dXJuIHshVWludDhBcnJheX1cbiAqL1xucHJvdG8uYmFzZS52MS5EZWZhdWx0UmVxdWVzdC5wcm90b3R5cGUuc2VyaWFsaXplQmluYXJ5ID0gZnVuY3Rpb24oKSB7XG4gIHZhciB3cml0ZXIgPSBuZXcganNwYi5CaW5hcnlXcml0ZXIoKTtcbiAgcHJvdG8uYmFzZS52MS5EZWZhdWx0UmVxdWVzdC5zZXJpYWxpemVCaW5hcnlUb1dyaXRlcih0aGlzLCB3cml0ZXIpO1xuICByZXR1cm4gd3JpdGVyLmdldFJlc3VsdEJ1ZmZlcigpO1xufTtcblxuXG4vKipcbiAqIFNlcmlhbGl6ZXMgdGhlIGdpdmVuIG1lc3NhZ2UgdG8gYmluYXJ5IGRhdGEgKGluIHByb3RvYnVmIHdpcmVcbiAqIGZvcm1hdCksIHdyaXRpbmcgdG8gdGhlIGdpdmVuIEJpbmFyeVdyaXRlci5cbiAqIEBwYXJhbSB7IXByb3RvLmJhc2UudjEuRGVmYXVsdFJlcXVlc3R9IG1lc3NhZ2VcbiAqIEBwYXJhbSB7IWpzcGIuQmluYXJ5V3JpdGVyfSB3cml0ZXJcbiAqIEBzdXBwcmVzcyB7dW51c2VkTG9jYWxWYXJpYWJsZXN9IGYgaXMgb25seSB1c2VkIGZvciBuZXN0ZWQgbWVzc2FnZXNcbiAqL1xucHJvdG8uYmFzZS52MS5EZWZhdWx0UmVxdWVzdC5zZXJpYWxpemVCaW5hcnlUb1dyaXRlciA9IGZ1bmN0aW9uKG1lc3NhZ2UsIHdyaXRlcikge1xuICB2YXIgZiA9IHVuZGVmaW5lZDtcbn07XG5cblxuXG5cblxuaWYgKGpzcGIuTWVzc2FnZS5HRU5FUkFURV9UT19PQkpFQ1QpIHtcbi8qKlxuICogQ3JlYXRlcyBhbiBvYmplY3QgcmVwcmVzZW50YXRpb24gb2YgdGhpcyBwcm90by5cbiAqIEZpZWxkIG5hbWVzIHRoYXQgYXJlIHJlc2VydmVkIGluIEphdmFTY3JpcHQgYW5kIHdpbGwgYmUgcmVuYW1lZCB0byBwYl9uYW1lLlxuICogT3B0aW9uYWwgZmllbGRzIHRoYXQgYXJlIG5vdCBzZXQgd2lsbCBiZSBzZXQgdG8gdW5kZWZpbmVkLlxuICogVG8gYWNjZXNzIGEgcmVzZXJ2ZWQgZmllbGQgdXNlLCBmb28ucGJfPG5hbWU+LCBlZywgZm9vLnBiX2RlZmF1bHQuXG4gKiBGb3IgdGhlIGxpc3Qgb2YgcmVzZXJ2ZWQgbmFtZXMgcGxlYXNlIHNlZTpcbiAqICAgICBuZXQvcHJvdG8yL2NvbXBpbGVyL2pzL2ludGVybmFsL2dlbmVyYXRvci5jYyNrS2V5d29yZC5cbiAqIEBwYXJhbSB7Ym9vbGVhbj19IG9wdF9pbmNsdWRlSW5zdGFuY2UgRGVwcmVjYXRlZC4gd2hldGhlciB0byBpbmNsdWRlIHRoZVxuICogICAgIEpTUEIgaW5zdGFuY2UgZm9yIHRyYW5zaXRpb25hbCBzb3kgcHJvdG8gc3VwcG9ydDpcbiAqICAgICBodHRwOi8vZ290by9zb3ktcGFyYW0tbWlncmF0aW9uXG4gKiBAcmV0dXJuIHshT2JqZWN0fVxuICovXG5wcm90by5iYXNlLnYxLlBvc2l0aW9uLnByb3RvdHlwZS50b09iamVjdCA9IGZ1bmN0aW9uKG9wdF9pbmNsdWRlSW5zdGFuY2UpIHtcbiAgcmV0dXJuIHByb3RvLmJhc2UudjEuUG9zaXRpb24udG9PYmplY3Qob3B0X2luY2x1ZGVJbnN0YW5jZSwgdGhpcyk7XG59O1xuXG5cbi8qKlxuICogU3RhdGljIHZlcnNpb24gb2YgdGhlIHtAc2VlIHRvT2JqZWN0fSBtZXRob2QuXG4gKiBAcGFyYW0ge2Jvb2xlYW58dW5kZWZpbmVkfSBpbmNsdWRlSW5zdGFuY2UgRGVwcmVjYXRlZC4gV2hldGhlciB0byBpbmNsdWRlXG4gKiAgICAgdGhlIEpTUEIgaW5zdGFuY2UgZm9yIHRyYW5zaXRpb25hbCBzb3kgcHJvdG8gc3VwcG9ydDpcbiAqICAgICBodHRwOi8vZ290by9zb3ktcGFyYW0tbWlncmF0aW9uXG4gKiBAcGFyYW0geyFwcm90by5iYXNlLnYxLlBvc2l0aW9ufSBtc2cgVGhlIG1zZyBpbnN0YW5jZSB0byB0cmFuc2Zvcm0uXG4gKiBAcmV0dXJuIHshT2JqZWN0fVxuICogQHN1cHByZXNzIHt1bnVzZWRMb2NhbFZhcmlhYmxlc30gZiBpcyBvbmx5IHVzZWQgZm9yIG5lc3RlZCBtZXNzYWdlc1xuICovXG5wcm90by5iYXNlLnYxLlBvc2l0aW9uLnRvT2JqZWN0ID0gZnVuY3Rpb24oaW5jbHVkZUluc3RhbmNlLCBtc2cpIHtcbiAgdmFyIGYsIG9iaiA9IHtcbiAgICBsb25naXR1ZGU6IGpzcGIuTWVzc2FnZS5nZXRGbG9hdGluZ1BvaW50RmllbGRXaXRoRGVmYXVsdChtc2csIDEsIDAuMCksXG4gICAgbGF0aXR1ZGU6IGpzcGIuTWVzc2FnZS5nZXRGbG9hdGluZ1BvaW50RmllbGRXaXRoRGVmYXVsdChtc2csIDIsIDAuMClcbiAgfTtcblxuICBpZiAoaW5jbHVkZUluc3RhbmNlKSB7XG4gICAgb2JqLiRqc3BiTWVzc2FnZUluc3RhbmNlID0gbXNnO1xuICB9XG4gIHJldHVybiBvYmo7XG59O1xufVxuXG5cbi8qKlxuICogRGVzZXJpYWxpemVzIGJpbmFyeSBkYXRhIChpbiBwcm90b2J1ZiB3aXJlIGZvcm1hdCkuXG4gKiBAcGFyYW0ge2pzcGIuQnl0ZVNvdXJjZX0gYnl0ZXMgVGhlIGJ5dGVzIHRvIGRlc2VyaWFsaXplLlxuICogQHJldHVybiB7IXByb3RvLmJhc2UudjEuUG9zaXRpb259XG4gKi9cbnByb3RvLmJhc2UudjEuUG9zaXRpb24uZGVzZXJpYWxpemVCaW5hcnkgPSBmdW5jdGlvbihieXRlcykge1xuICB2YXIgcmVhZGVyID0gbmV3IGpzcGIuQmluYXJ5UmVhZGVyKGJ5dGVzKTtcbiAgdmFyIG1zZyA9IG5ldyBwcm90by5iYXNlLnYxLlBvc2l0aW9uO1xuICByZXR1cm4gcHJvdG8uYmFzZS52MS5Qb3NpdGlvbi5kZXNlcmlhbGl6ZUJpbmFyeUZyb21SZWFkZXIobXNnLCByZWFkZXIpO1xufTtcblxuXG4vKipcbiAqIERlc2VyaWFsaXplcyBiaW5hcnkgZGF0YSAoaW4gcHJvdG9idWYgd2lyZSBmb3JtYXQpIGZyb20gdGhlXG4gKiBnaXZlbiByZWFkZXIgaW50byB0aGUgZ2l2ZW4gbWVzc2FnZSBvYmplY3QuXG4gKiBAcGFyYW0geyFwcm90by5iYXNlLnYxLlBvc2l0aW9ufSBtc2cgVGhlIG1lc3NhZ2Ugb2JqZWN0IHRvIGRlc2VyaWFsaXplIGludG8uXG4gKiBAcGFyYW0geyFqc3BiLkJpbmFyeVJlYWRlcn0gcmVhZGVyIFRoZSBCaW5hcnlSZWFkZXIgdG8gdXNlLlxuICogQHJldHVybiB7IXByb3RvLmJhc2UudjEuUG9zaXRpb259XG4gKi9cbnByb3RvLmJhc2UudjEuUG9zaXRpb24uZGVzZXJpYWxpemVCaW5hcnlGcm9tUmVhZGVyID0gZnVuY3Rpb24obXNnLCByZWFkZXIpIHtcbiAgd2hpbGUgKHJlYWRlci5uZXh0RmllbGQoKSkge1xuICAgIGlmIChyZWFkZXIuaXNFbmRHcm91cCgpKSB7XG4gICAgICBicmVhaztcbiAgICB9XG4gICAgdmFyIGZpZWxkID0gcmVhZGVyLmdldEZpZWxkTnVtYmVyKCk7XG4gICAgc3dpdGNoIChmaWVsZCkge1xuICAgIGNhc2UgMTpcbiAgICAgIHZhciB2YWx1ZSA9IC8qKiBAdHlwZSB7bnVtYmVyfSAqLyAocmVhZGVyLnJlYWREb3VibGUoKSk7XG4gICAgICBtc2cuc2V0TG9uZ2l0dWRlKHZhbHVlKTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgMjpcbiAgICAgIHZhciB2YWx1ZSA9IC8qKiBAdHlwZSB7bnVtYmVyfSAqLyAocmVhZGVyLnJlYWREb3VibGUoKSk7XG4gICAgICBtc2cuc2V0TGF0aXR1ZGUodmFsdWUpO1xuICAgICAgYnJlYWs7XG4gICAgZGVmYXVsdDpcbiAgICAgIHJlYWRlci5za2lwRmllbGQoKTtcbiAgICAgIGJyZWFrO1xuICAgIH1cbiAgfVxuICByZXR1cm4gbXNnO1xufTtcblxuXG4vKipcbiAqIFNlcmlhbGl6ZXMgdGhlIG1lc3NhZ2UgdG8gYmluYXJ5IGRhdGEgKGluIHByb3RvYnVmIHdpcmUgZm9ybWF0KS5cbiAqIEByZXR1cm4geyFVaW50OEFycmF5fVxuICovXG5wcm90by5iYXNlLnYxLlBvc2l0aW9uLnByb3RvdHlwZS5zZXJpYWxpemVCaW5hcnkgPSBmdW5jdGlvbigpIHtcbiAgdmFyIHdyaXRlciA9IG5ldyBqc3BiLkJpbmFyeVdyaXRlcigpO1xuICBwcm90by5iYXNlLnYxLlBvc2l0aW9uLnNlcmlhbGl6ZUJpbmFyeVRvV3JpdGVyKHRoaXMsIHdyaXRlcik7XG4gIHJldHVybiB3cml0ZXIuZ2V0UmVzdWx0QnVmZmVyKCk7XG59O1xuXG5cbi8qKlxuICogU2VyaWFsaXplcyB0aGUgZ2l2ZW4gbWVzc2FnZSB0byBiaW5hcnkgZGF0YSAoaW4gcHJvdG9idWYgd2lyZVxuICogZm9ybWF0KSwgd3JpdGluZyB0byB0aGUgZ2l2ZW4gQmluYXJ5V3JpdGVyLlxuICogQHBhcmFtIHshcHJvdG8uYmFzZS52MS5Qb3NpdGlvbn0gbWVzc2FnZVxuICogQHBhcmFtIHshanNwYi5CaW5hcnlXcml0ZXJ9IHdyaXRlclxuICogQHN1cHByZXNzIHt1bnVzZWRMb2NhbFZhcmlhYmxlc30gZiBpcyBvbmx5IHVzZWQgZm9yIG5lc3RlZCBtZXNzYWdlc1xuICovXG5wcm90by5iYXNlLnYxLlBvc2l0aW9uLnNlcmlhbGl6ZUJpbmFyeVRvV3JpdGVyID0gZnVuY3Rpb24obWVzc2FnZSwgd3JpdGVyKSB7XG4gIHZhciBmID0gdW5kZWZpbmVkO1xuICBmID0gbWVzc2FnZS5nZXRMb25naXR1ZGUoKTtcbiAgaWYgKGYgIT09IDAuMCkge1xuICAgIHdyaXRlci53cml0ZURvdWJsZShcbiAgICAgIDEsXG4gICAgICBmXG4gICAgKTtcbiAgfVxuICBmID0gbWVzc2FnZS5nZXRMYXRpdHVkZSgpO1xuICBpZiAoZiAhPT0gMC4wKSB7XG4gICAgd3JpdGVyLndyaXRlRG91YmxlKFxuICAgICAgMixcbiAgICAgIGZcbiAgICApO1xuICB9XG59O1xuXG5cbi8qKlxuICogb3B0aW9uYWwgZG91YmxlIGxvbmdpdHVkZSA9IDE7XG4gKiBAcmV0dXJuIHtudW1iZXJ9XG4gKi9cbnByb3RvLmJhc2UudjEuUG9zaXRpb24ucHJvdG90eXBlLmdldExvbmdpdHVkZSA9IGZ1bmN0aW9uKCkge1xuICByZXR1cm4gLyoqIEB0eXBlIHtudW1iZXJ9ICovIChqc3BiLk1lc3NhZ2UuZ2V0RmxvYXRpbmdQb2ludEZpZWxkV2l0aERlZmF1bHQodGhpcywgMSwgMC4wKSk7XG59O1xuXG5cbi8qKlxuICogQHBhcmFtIHtudW1iZXJ9IHZhbHVlXG4gKiBAcmV0dXJuIHshcHJvdG8uYmFzZS52MS5Qb3NpdGlvbn0gcmV0dXJucyB0aGlzXG4gKi9cbnByb3RvLmJhc2UudjEuUG9zaXRpb24ucHJvdG90eXBlLnNldExvbmdpdHVkZSA9IGZ1bmN0aW9uKHZhbHVlKSB7XG4gIHJldHVybiBqc3BiLk1lc3NhZ2Uuc2V0UHJvdG8zRmxvYXRGaWVsZCh0aGlzLCAxLCB2YWx1ZSk7XG59O1xuXG5cbi8qKlxuICogb3B0aW9uYWwgZG91YmxlIGxhdGl0dWRlID0gMjtcbiAqIEByZXR1cm4ge251bWJlcn1cbiAqL1xucHJvdG8uYmFzZS52MS5Qb3NpdGlvbi5wcm90b3R5cGUuZ2V0TGF0aXR1ZGUgPSBmdW5jdGlvbigpIHtcbiAgcmV0dXJuIC8qKiBAdHlwZSB7bnVtYmVyfSAqLyAoanNwYi5NZXNzYWdlLmdldEZsb2F0aW5nUG9pbnRGaWVsZFdpdGhEZWZhdWx0KHRoaXMsIDIsIDAuMCkpO1xufTtcblxuXG4vKipcbiAqIEBwYXJhbSB7bnVtYmVyfSB2YWx1ZVxuICogQHJldHVybiB7IXByb3RvLmJhc2UudjEuUG9zaXRpb259IHJldHVybnMgdGhpc1xuICovXG5wcm90by5iYXNlLnYxLlBvc2l0aW9uLnByb3RvdHlwZS5zZXRMYXRpdHVkZSA9IGZ1bmN0aW9uKHZhbHVlKSB7XG4gIHJldHVybiBqc3BiLk1lc3NhZ2Uuc2V0UHJvdG8zRmxvYXRGaWVsZCh0aGlzLCAyLCB2YWx1ZSk7XG59O1xuXG5cblxuXG5cbmlmIChqc3BiLk1lc3NhZ2UuR0VORVJBVEVfVE9fT0JKRUNUKSB7XG4vKipcbiAqIENyZWF0ZXMgYW4gb2JqZWN0IHJlcHJlc2VudGF0aW9uIG9mIHRoaXMgcHJvdG8uXG4gKiBGaWVsZCBuYW1lcyB0aGF0IGFyZSByZXNlcnZlZCBpbiBKYXZhU2NyaXB0IGFuZCB3aWxsIGJlIHJlbmFtZWQgdG8gcGJfbmFtZS5cbiAqIE9wdGlvbmFsIGZpZWxkcyB0aGF0IGFyZSBub3Qgc2V0IHdpbGwgYmUgc2V0IHRvIHVuZGVmaW5lZC5cbiAqIFRvIGFjY2VzcyBhIHJlc2VydmVkIGZpZWxkIHVzZSwgZm9vLnBiXzxuYW1lPiwgZWcsIGZvby5wYl9kZWZhdWx0LlxuICogRm9yIHRoZSBsaXN0IG9mIHJlc2VydmVkIG5hbWVzIHBsZWFzZSBzZWU6XG4gKiAgICAgbmV0L3Byb3RvMi9jb21waWxlci9qcy9pbnRlcm5hbC9nZW5lcmF0b3IuY2Mja0tleXdvcmQuXG4gKiBAcGFyYW0ge2Jvb2xlYW49fSBvcHRfaW5jbHVkZUluc3RhbmNlIERlcHJlY2F0ZWQuIHdoZXRoZXIgdG8gaW5jbHVkZSB0aGVcbiAqICAgICBKU1BCIGluc3RhbmNlIGZvciB0cmFuc2l0aW9uYWwgc295IHByb3RvIHN1cHBvcnQ6XG4gKiAgICAgaHR0cDovL2dvdG8vc295LXBhcmFtLW1pZ3JhdGlvblxuICogQHJldHVybiB7IU9iamVjdH1cbiAqL1xucHJvdG8uYmFzZS52MS5Db250cm9sUG9pbnRJbmZvLnByb3RvdHlwZS50b09iamVjdCA9IGZ1bmN0aW9uKG9wdF9pbmNsdWRlSW5zdGFuY2UpIHtcbiAgcmV0dXJuIHByb3RvLmJhc2UudjEuQ29udHJvbFBvaW50SW5mby50b09iamVjdChvcHRfaW5jbHVkZUluc3RhbmNlLCB0aGlzKTtcbn07XG5cblxuLyoqXG4gKiBTdGF0aWMgdmVyc2lvbiBvZiB0aGUge0BzZWUgdG9PYmplY3R9IG1ldGhvZC5cbiAqIEBwYXJhbSB7Ym9vbGVhbnx1bmRlZmluZWR9IGluY2x1ZGVJbnN0YW5jZSBEZXByZWNhdGVkLiBXaGV0aGVyIHRvIGluY2x1ZGVcbiAqICAgICB0aGUgSlNQQiBpbnN0YW5jZSBmb3IgdHJhbnNpdGlvbmFsIHNveSBwcm90byBzdXBwb3J0OlxuICogICAgIGh0dHA6Ly9nb3RvL3NveS1wYXJhbS1taWdyYXRpb25cbiAqIEBwYXJhbSB7IXByb3RvLmJhc2UudjEuQ29udHJvbFBvaW50SW5mb30gbXNnIFRoZSBtc2cgaW5zdGFuY2UgdG8gdHJhbnNmb3JtLlxuICogQHJldHVybiB7IU9iamVjdH1cbiAqIEBzdXBwcmVzcyB7dW51c2VkTG9jYWxWYXJpYWJsZXN9IGYgaXMgb25seSB1c2VkIGZvciBuZXN0ZWQgbWVzc2FnZXNcbiAqL1xucHJvdG8uYmFzZS52MS5Db250cm9sUG9pbnRJbmZvLnRvT2JqZWN0ID0gZnVuY3Rpb24oaW5jbHVkZUluc3RhbmNlLCBtc2cpIHtcbiAgdmFyIGYsIG9iaiA9IHtcbiAgICBpbWFnZTogKGYgPSBtc2cuZ2V0SW1hZ2UoKSkgJiYgcHJvdG8uYmFzZS52MS5OZXRJbWFnZS50b09iamVjdChpbmNsdWRlSW5zdGFuY2UsIGYpLFxuICAgIGNvbnRlbnQ6IGpzcGIuTWVzc2FnZS5nZXRGaWVsZFdpdGhEZWZhdWx0KG1zZywgMiwgXCJcIilcbiAgfTtcblxuICBpZiAoaW5jbHVkZUluc3RhbmNlKSB7XG4gICAgb2JqLiRqc3BiTWVzc2FnZUluc3RhbmNlID0gbXNnO1xuICB9XG4gIHJldHVybiBvYmo7XG59O1xufVxuXG5cbi8qKlxuICogRGVzZXJpYWxpemVzIGJpbmFyeSBkYXRhIChpbiBwcm90b2J1ZiB3aXJlIGZvcm1hdCkuXG4gKiBAcGFyYW0ge2pzcGIuQnl0ZVNvdXJjZX0gYnl0ZXMgVGhlIGJ5dGVzIHRvIGRlc2VyaWFsaXplLlxuICogQHJldHVybiB7IXByb3RvLmJhc2UudjEuQ29udHJvbFBvaW50SW5mb31cbiAqL1xucHJvdG8uYmFzZS52MS5Db250cm9sUG9pbnRJbmZvLmRlc2VyaWFsaXplQmluYXJ5ID0gZnVuY3Rpb24oYnl0ZXMpIHtcbiAgdmFyIHJlYWRlciA9IG5ldyBqc3BiLkJpbmFyeVJlYWRlcihieXRlcyk7XG4gIHZhciBtc2cgPSBuZXcgcHJvdG8uYmFzZS52MS5Db250cm9sUG9pbnRJbmZvO1xuICByZXR1cm4gcHJvdG8uYmFzZS52MS5Db250cm9sUG9pbnRJbmZvLmRlc2VyaWFsaXplQmluYXJ5RnJvbVJlYWRlcihtc2csIHJlYWRlcik7XG59O1xuXG5cbi8qKlxuICogRGVzZXJpYWxpemVzIGJpbmFyeSBkYXRhIChpbiBwcm90b2J1ZiB3aXJlIGZvcm1hdCkgZnJvbSB0aGVcbiAqIGdpdmVuIHJlYWRlciBpbnRvIHRoZSBnaXZlbiBtZXNzYWdlIG9iamVjdC5cbiAqIEBwYXJhbSB7IXByb3RvLmJhc2UudjEuQ29udHJvbFBvaW50SW5mb30gbXNnIFRoZSBtZXNzYWdlIG9iamVjdCB0byBkZXNlcmlhbGl6ZSBpbnRvLlxuICogQHBhcmFtIHshanNwYi5CaW5hcnlSZWFkZXJ9IHJlYWRlciBUaGUgQmluYXJ5UmVhZGVyIHRvIHVzZS5cbiAqIEByZXR1cm4geyFwcm90by5iYXNlLnYxLkNvbnRyb2xQb2ludEluZm99XG4gKi9cbnByb3RvLmJhc2UudjEuQ29udHJvbFBvaW50SW5mby5kZXNlcmlhbGl6ZUJpbmFyeUZyb21SZWFkZXIgPSBmdW5jdGlvbihtc2csIHJlYWRlcikge1xuICB3aGlsZSAocmVhZGVyLm5leHRGaWVsZCgpKSB7XG4gICAgaWYgKHJlYWRlci5pc0VuZEdyb3VwKCkpIHtcbiAgICAgIGJyZWFrO1xuICAgIH1cbiAgICB2YXIgZmllbGQgPSByZWFkZXIuZ2V0RmllbGROdW1iZXIoKTtcbiAgICBzd2l0Y2ggKGZpZWxkKSB7XG4gICAgY2FzZSAxOlxuICAgICAgdmFyIHZhbHVlID0gbmV3IHByb3RvLmJhc2UudjEuTmV0SW1hZ2U7XG4gICAgICByZWFkZXIucmVhZE1lc3NhZ2UodmFsdWUscHJvdG8uYmFzZS52MS5OZXRJbWFnZS5kZXNlcmlhbGl6ZUJpbmFyeUZyb21SZWFkZXIpO1xuICAgICAgbXNnLnNldEltYWdlKHZhbHVlKTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgMjpcbiAgICAgIHZhciB2YWx1ZSA9IC8qKiBAdHlwZSB7c3RyaW5nfSAqLyAocmVhZGVyLnJlYWRTdHJpbmcoKSk7XG4gICAgICBtc2cuc2V0Q29udGVudCh2YWx1ZSk7XG4gICAgICBicmVhaztcbiAgICBkZWZhdWx0OlxuICAgICAgcmVhZGVyLnNraXBGaWVsZCgpO1xuICAgICAgYnJlYWs7XG4gICAgfVxuICB9XG4gIHJldHVybiBtc2c7XG59O1xuXG5cbi8qKlxuICogU2VyaWFsaXplcyB0aGUgbWVzc2FnZSB0byBiaW5hcnkgZGF0YSAoaW4gcHJvdG9idWYgd2lyZSBmb3JtYXQpLlxuICogQHJldHVybiB7IVVpbnQ4QXJyYXl9XG4gKi9cbnByb3RvLmJhc2UudjEuQ29udHJvbFBvaW50SW5mby5wcm90b3R5cGUuc2VyaWFsaXplQmluYXJ5ID0gZnVuY3Rpb24oKSB7XG4gIHZhciB3cml0ZXIgPSBuZXcganNwYi5CaW5hcnlXcml0ZXIoKTtcbiAgcHJvdG8uYmFzZS52MS5Db250cm9sUG9pbnRJbmZvLnNlcmlhbGl6ZUJpbmFyeVRvV3JpdGVyKHRoaXMsIHdyaXRlcik7XG4gIHJldHVybiB3cml0ZXIuZ2V0UmVzdWx0QnVmZmVyKCk7XG59O1xuXG5cbi8qKlxuICogU2VyaWFsaXplcyB0aGUgZ2l2ZW4gbWVzc2FnZSB0byBiaW5hcnkgZGF0YSAoaW4gcHJvdG9idWYgd2lyZVxuICogZm9ybWF0KSwgd3JpdGluZyB0byB0aGUgZ2l2ZW4gQmluYXJ5V3JpdGVyLlxuICogQHBhcmFtIHshcHJvdG8uYmFzZS52MS5Db250cm9sUG9pbnRJbmZvfSBtZXNzYWdlXG4gKiBAcGFyYW0geyFqc3BiLkJpbmFyeVdyaXRlcn0gd3JpdGVyXG4gKiBAc3VwcHJlc3Mge3VudXNlZExvY2FsVmFyaWFibGVzfSBmIGlzIG9ubHkgdXNlZCBmb3IgbmVzdGVkIG1lc3NhZ2VzXG4gKi9cbnByb3RvLmJhc2UudjEuQ29udHJvbFBvaW50SW5mby5zZXJpYWxpemVCaW5hcnlUb1dyaXRlciA9IGZ1bmN0aW9uKG1lc3NhZ2UsIHdyaXRlcikge1xuICB2YXIgZiA9IHVuZGVmaW5lZDtcbiAgZiA9IG1lc3NhZ2UuZ2V0SW1hZ2UoKTtcbiAgaWYgKGYgIT0gbnVsbCkge1xuICAgIHdyaXRlci53cml0ZU1lc3NhZ2UoXG4gICAgICAxLFxuICAgICAgZixcbiAgICAgIHByb3RvLmJhc2UudjEuTmV0SW1hZ2Uuc2VyaWFsaXplQmluYXJ5VG9Xcml0ZXJcbiAgICApO1xuICB9XG4gIGYgPSBtZXNzYWdlLmdldENvbnRlbnQoKTtcbiAgaWYgKGYubGVuZ3RoID4gMCkge1xuICAgIHdyaXRlci53cml0ZVN0cmluZyhcbiAgICAgIDIsXG4gICAgICBmXG4gICAgKTtcbiAgfVxufTtcblxuXG4vKipcbiAqIG9wdGlvbmFsIE5ldEltYWdlIGltYWdlID0gMTtcbiAqIEByZXR1cm4gez9wcm90by5iYXNlLnYxLk5ldEltYWdlfVxuICovXG5wcm90by5iYXNlLnYxLkNvbnRyb2xQb2ludEluZm8ucHJvdG90eXBlLmdldEltYWdlID0gZnVuY3Rpb24oKSB7XG4gIHJldHVybiAvKiogQHR5cGV7P3Byb3RvLmJhc2UudjEuTmV0SW1hZ2V9ICovIChcbiAgICBqc3BiLk1lc3NhZ2UuZ2V0V3JhcHBlckZpZWxkKHRoaXMsIHByb3RvLmJhc2UudjEuTmV0SW1hZ2UsIDEpKTtcbn07XG5cblxuLyoqXG4gKiBAcGFyYW0gez9wcm90by5iYXNlLnYxLk5ldEltYWdlfHVuZGVmaW5lZH0gdmFsdWVcbiAqIEByZXR1cm4geyFwcm90by5iYXNlLnYxLkNvbnRyb2xQb2ludEluZm99IHJldHVybnMgdGhpc1xuKi9cbnByb3RvLmJhc2UudjEuQ29udHJvbFBvaW50SW5mby5wcm90b3R5cGUuc2V0SW1hZ2UgPSBmdW5jdGlvbih2YWx1ZSkge1xuICByZXR1cm4ganNwYi5NZXNzYWdlLnNldFdyYXBwZXJGaWVsZCh0aGlzLCAxLCB2YWx1ZSk7XG59O1xuXG5cbi8qKlxuICogQ2xlYXJzIHRoZSBtZXNzYWdlIGZpZWxkIG1ha2luZyBpdCB1bmRlZmluZWQuXG4gKiBAcmV0dXJuIHshcHJvdG8uYmFzZS52MS5Db250cm9sUG9pbnRJbmZvfSByZXR1cm5zIHRoaXNcbiAqL1xucHJvdG8uYmFzZS52MS5Db250cm9sUG9pbnRJbmZvLnByb3RvdHlwZS5jbGVhckltYWdlID0gZnVuY3Rpb24oKSB7XG4gIHJldHVybiB0aGlzLnNldEltYWdlKHVuZGVmaW5lZCk7XG59O1xuXG5cbi8qKlxuICogUmV0dXJucyB3aGV0aGVyIHRoaXMgZmllbGQgaXMgc2V0LlxuICogQHJldHVybiB7Ym9vbGVhbn1cbiAqL1xucHJvdG8uYmFzZS52MS5Db250cm9sUG9pbnRJbmZvLnByb3RvdHlwZS5oYXNJbWFnZSA9IGZ1bmN0aW9uKCkge1xuICByZXR1cm4ganNwYi5NZXNzYWdlLmdldEZpZWxkKHRoaXMsIDEpICE9IG51bGw7XG59O1xuXG5cbi8qKlxuICogb3B0aW9uYWwgc3RyaW5nIGNvbnRlbnQgPSAyO1xuICogQHJldHVybiB7c3RyaW5nfVxuICovXG5wcm90by5iYXNlLnYxLkNvbnRyb2xQb2ludEluZm8ucHJvdG90eXBlLmdldENvbnRlbnQgPSBmdW5jdGlvbigpIHtcbiAgcmV0dXJuIC8qKiBAdHlwZSB7c3RyaW5nfSAqLyAoanNwYi5NZXNzYWdlLmdldEZpZWxkV2l0aERlZmF1bHQodGhpcywgMiwgXCJcIikpO1xufTtcblxuXG4vKipcbiAqIEBwYXJhbSB7c3RyaW5nfSB2YWx1ZVxuICogQHJldHVybiB7IXByb3RvLmJhc2UudjEuQ29udHJvbFBvaW50SW5mb30gcmV0dXJucyB0aGlzXG4gKi9cbnByb3RvLmJhc2UudjEuQ29udHJvbFBvaW50SW5mby5wcm90b3R5cGUuc2V0Q29udGVudCA9IGZ1bmN0aW9uKHZhbHVlKSB7XG4gIHJldHVybiBqc3BiLk1lc3NhZ2Uuc2V0UHJvdG8zU3RyaW5nRmllbGQodGhpcywgMiwgdmFsdWUpO1xufTtcblxuXG5cblxuXG5pZiAoanNwYi5NZXNzYWdlLkdFTkVSQVRFX1RPX09CSkVDVCkge1xuLyoqXG4gKiBDcmVhdGVzIGFuIG9iamVjdCByZXByZXNlbnRhdGlvbiBvZiB0aGlzIHByb3RvLlxuICogRmllbGQgbmFtZXMgdGhhdCBhcmUgcmVzZXJ2ZWQgaW4gSmF2YVNjcmlwdCBhbmQgd2lsbCBiZSByZW5hbWVkIHRvIHBiX25hbWUuXG4gKiBPcHRpb25hbCBmaWVsZHMgdGhhdCBhcmUgbm90IHNldCB3aWxsIGJlIHNldCB0byB1bmRlZmluZWQuXG4gKiBUbyBhY2Nlc3MgYSByZXNlcnZlZCBmaWVsZCB1c2UsIGZvby5wYl88bmFtZT4sIGVnLCBmb28ucGJfZGVmYXVsdC5cbiAqIEZvciB0aGUgbGlzdCBvZiByZXNlcnZlZCBuYW1lcyBwbGVhc2Ugc2VlOlxuICogICAgIG5ldC9wcm90bzIvY29tcGlsZXIvanMvaW50ZXJuYWwvZ2VuZXJhdG9yLmNjI2tLZXl3b3JkLlxuICogQHBhcmFtIHtib29sZWFuPX0gb3B0X2luY2x1ZGVJbnN0YW5jZSBEZXByZWNhdGVkLiB3aGV0aGVyIHRvIGluY2x1ZGUgdGhlXG4gKiAgICAgSlNQQiBpbnN0YW5jZSBmb3IgdHJhbnNpdGlvbmFsIHNveSBwcm90byBzdXBwb3J0OlxuICogICAgIGh0dHA6Ly9nb3RvL3NveS1wYXJhbS1taWdyYXRpb25cbiAqIEByZXR1cm4geyFPYmplY3R9XG4gKi9cbnByb3RvLmJhc2UudjEuSW1hZ2UucHJvdG90eXBlLnRvT2JqZWN0ID0gZnVuY3Rpb24ob3B0X2luY2x1ZGVJbnN0YW5jZSkge1xuICByZXR1cm4gcHJvdG8uYmFzZS52MS5JbWFnZS50b09iamVjdChvcHRfaW5jbHVkZUluc3RhbmNlLCB0aGlzKTtcbn07XG5cblxuLyoqXG4gKiBTdGF0aWMgdmVyc2lvbiBvZiB0aGUge0BzZWUgdG9PYmplY3R9IG1ldGhvZC5cbiAqIEBwYXJhbSB7Ym9vbGVhbnx1bmRlZmluZWR9IGluY2x1ZGVJbnN0YW5jZSBEZXByZWNhdGVkLiBXaGV0aGVyIHRvIGluY2x1ZGVcbiAqICAgICB0aGUgSlNQQiBpbnN0YW5jZSBmb3IgdHJhbnNpdGlvbmFsIHNveSBwcm90byBzdXBwb3J0OlxuICogICAgIGh0dHA6Ly9nb3RvL3NveS1wYXJhbS1taWdyYXRpb25cbiAqIEBwYXJhbSB7IXByb3RvLmJhc2UudjEuSW1hZ2V9IG1zZyBUaGUgbXNnIGluc3RhbmNlIHRvIHRyYW5zZm9ybS5cbiAqIEByZXR1cm4geyFPYmplY3R9XG4gKiBAc3VwcHJlc3Mge3VudXNlZExvY2FsVmFyaWFibGVzfSBmIGlzIG9ubHkgdXNlZCBmb3IgbmVzdGVkIG1lc3NhZ2VzXG4gKi9cbnByb3RvLmJhc2UudjEuSW1hZ2UudG9PYmplY3QgPSBmdW5jdGlvbihpbmNsdWRlSW5zdGFuY2UsIG1zZykge1xuICB2YXIgZiwgb2JqID0ge1xuICAgIGV4dDoganNwYi5NZXNzYWdlLmdldEZpZWxkV2l0aERlZmF1bHQobXNnLCAxLCBcIlwiKSxcbiAgICBkYXRhOiBtc2cuZ2V0RGF0YV9hc0I2NCgpXG4gIH07XG5cbiAgaWYgKGluY2x1ZGVJbnN0YW5jZSkge1xuICAgIG9iai4kanNwYk1lc3NhZ2VJbnN0YW5jZSA9IG1zZztcbiAgfVxuICByZXR1cm4gb2JqO1xufTtcbn1cblxuXG4vKipcbiAqIERlc2VyaWFsaXplcyBiaW5hcnkgZGF0YSAoaW4gcHJvdG9idWYgd2lyZSBmb3JtYXQpLlxuICogQHBhcmFtIHtqc3BiLkJ5dGVTb3VyY2V9IGJ5dGVzIFRoZSBieXRlcyB0byBkZXNlcmlhbGl6ZS5cbiAqIEByZXR1cm4geyFwcm90by5iYXNlLnYxLkltYWdlfVxuICovXG5wcm90by5iYXNlLnYxLkltYWdlLmRlc2VyaWFsaXplQmluYXJ5ID0gZnVuY3Rpb24oYnl0ZXMpIHtcbiAgdmFyIHJlYWRlciA9IG5ldyBqc3BiLkJpbmFyeVJlYWRlcihieXRlcyk7XG4gIHZhciBtc2cgPSBuZXcgcHJvdG8uYmFzZS52MS5JbWFnZTtcbiAgcmV0dXJuIHByb3RvLmJhc2UudjEuSW1hZ2UuZGVzZXJpYWxpemVCaW5hcnlGcm9tUmVhZGVyKG1zZywgcmVhZGVyKTtcbn07XG5cblxuLyoqXG4gKiBEZXNlcmlhbGl6ZXMgYmluYXJ5IGRhdGEgKGluIHByb3RvYnVmIHdpcmUgZm9ybWF0KSBmcm9tIHRoZVxuICogZ2l2ZW4gcmVhZGVyIGludG8gdGhlIGdpdmVuIG1lc3NhZ2Ugb2JqZWN0LlxuICogQHBhcmFtIHshcHJvdG8uYmFzZS52MS5JbWFnZX0gbXNnIFRoZSBtZXNzYWdlIG9iamVjdCB0byBkZXNlcmlhbGl6ZSBpbnRvLlxuICogQHBhcmFtIHshanNwYi5CaW5hcnlSZWFkZXJ9IHJlYWRlciBUaGUgQmluYXJ5UmVhZGVyIHRvIHVzZS5cbiAqIEByZXR1cm4geyFwcm90by5iYXNlLnYxLkltYWdlfVxuICovXG5wcm90by5iYXNlLnYxLkltYWdlLmRlc2VyaWFsaXplQmluYXJ5RnJvbVJlYWRlciA9IGZ1bmN0aW9uKG1zZywgcmVhZGVyKSB7XG4gIHdoaWxlIChyZWFkZXIubmV4dEZpZWxkKCkpIHtcbiAgICBpZiAocmVhZGVyLmlzRW5kR3JvdXAoKSkge1xuICAgICAgYnJlYWs7XG4gICAgfVxuICAgIHZhciBmaWVsZCA9IHJlYWRlci5nZXRGaWVsZE51bWJlcigpO1xuICAgIHN3aXRjaCAoZmllbGQpIHtcbiAgICBjYXNlIDE6XG4gICAgICB2YXIgdmFsdWUgPSAvKiogQHR5cGUge3N0cmluZ30gKi8gKHJlYWRlci5yZWFkU3RyaW5nKCkpO1xuICAgICAgbXNnLnNldEV4dCh2YWx1ZSk7XG4gICAgICBicmVhaztcbiAgICBjYXNlIDI6XG4gICAgICB2YXIgdmFsdWUgPSAvKiogQHR5cGUgeyFVaW50OEFycmF5fSAqLyAocmVhZGVyLnJlYWRCeXRlcygpKTtcbiAgICAgIG1zZy5zZXREYXRhKHZhbHVlKTtcbiAgICAgIGJyZWFrO1xuICAgIGRlZmF1bHQ6XG4gICAgICByZWFkZXIuc2tpcEZpZWxkKCk7XG4gICAgICBicmVhaztcbiAgICB9XG4gIH1cbiAgcmV0dXJuIG1zZztcbn07XG5cblxuLyoqXG4gKiBTZXJpYWxpemVzIHRoZSBtZXNzYWdlIHRvIGJpbmFyeSBkYXRhIChpbiBwcm90b2J1ZiB3aXJlIGZvcm1hdCkuXG4gKiBAcmV0dXJuIHshVWludDhBcnJheX1cbiAqL1xucHJvdG8uYmFzZS52MS5JbWFnZS5wcm90b3R5cGUuc2VyaWFsaXplQmluYXJ5ID0gZnVuY3Rpb24oKSB7XG4gIHZhciB3cml0ZXIgPSBuZXcganNwYi5CaW5hcnlXcml0ZXIoKTtcbiAgcHJvdG8uYmFzZS52MS5JbWFnZS5zZXJpYWxpemVCaW5hcnlUb1dyaXRlcih0aGlzLCB3cml0ZXIpO1xuICByZXR1cm4gd3JpdGVyLmdldFJlc3VsdEJ1ZmZlcigpO1xufTtcblxuXG4vKipcbiAqIFNlcmlhbGl6ZXMgdGhlIGdpdmVuIG1lc3NhZ2UgdG8gYmluYXJ5IGRhdGEgKGluIHByb3RvYnVmIHdpcmVcbiAqIGZvcm1hdCksIHdyaXRpbmcgdG8gdGhlIGdpdmVuIEJpbmFyeVdyaXRlci5cbiAqIEBwYXJhbSB7IXByb3RvLmJhc2UudjEuSW1hZ2V9IG1lc3NhZ2VcbiAqIEBwYXJhbSB7IWpzcGIuQmluYXJ5V3JpdGVyfSB3cml0ZXJcbiAqIEBzdXBwcmVzcyB7dW51c2VkTG9jYWxWYXJpYWJsZXN9IGYgaXMgb25seSB1c2VkIGZvciBuZXN0ZWQgbWVzc2FnZXNcbiAqL1xucHJvdG8uYmFzZS52MS5JbWFnZS5zZXJpYWxpemVCaW5hcnlUb1dyaXRlciA9IGZ1bmN0aW9uKG1lc3NhZ2UsIHdyaXRlcikge1xuICB2YXIgZiA9IHVuZGVmaW5lZDtcbiAgZiA9IG1lc3NhZ2UuZ2V0RXh0KCk7XG4gIGlmIChmLmxlbmd0aCA+IDApIHtcbiAgICB3cml0ZXIud3JpdGVTdHJpbmcoXG4gICAgICAxLFxuICAgICAgZlxuICAgICk7XG4gIH1cbiAgZiA9IG1lc3NhZ2UuZ2V0RGF0YV9hc1U4KCk7XG4gIGlmIChmLmxlbmd0aCA+IDApIHtcbiAgICB3cml0ZXIud3JpdGVCeXRlcyhcbiAgICAgIDIsXG4gICAgICBmXG4gICAgKTtcbiAgfVxufTtcblxuXG4vKipcbiAqIG9wdGlvbmFsIHN0cmluZyBleHQgPSAxO1xuICogQHJldHVybiB7c3RyaW5nfVxuICovXG5wcm90by5iYXNlLnYxLkltYWdlLnByb3RvdHlwZS5nZXRFeHQgPSBmdW5jdGlvbigpIHtcbiAgcmV0dXJuIC8qKiBAdHlwZSB7c3RyaW5nfSAqLyAoanNwYi5NZXNzYWdlLmdldEZpZWxkV2l0aERlZmF1bHQodGhpcywgMSwgXCJcIikpO1xufTtcblxuXG4vKipcbiAqIEBwYXJhbSB7c3RyaW5nfSB2YWx1ZVxuICogQHJldHVybiB7IXByb3RvLmJhc2UudjEuSW1hZ2V9IHJldHVybnMgdGhpc1xuICovXG5wcm90by5iYXNlLnYxLkltYWdlLnByb3RvdHlwZS5zZXRFeHQgPSBmdW5jdGlvbih2YWx1ZSkge1xuICByZXR1cm4ganNwYi5NZXNzYWdlLnNldFByb3RvM1N0cmluZ0ZpZWxkKHRoaXMsIDEsIHZhbHVlKTtcbn07XG5cblxuLyoqXG4gKiBvcHRpb25hbCBieXRlcyBkYXRhID0gMjtcbiAqIEByZXR1cm4ge3N0cmluZ31cbiAqL1xucHJvdG8uYmFzZS52MS5JbWFnZS5wcm90b3R5cGUuZ2V0RGF0YSA9IGZ1bmN0aW9uKCkge1xuICByZXR1cm4gLyoqIEB0eXBlIHtzdHJpbmd9ICovIChqc3BiLk1lc3NhZ2UuZ2V0RmllbGRXaXRoRGVmYXVsdCh0aGlzLCAyLCBcIlwiKSk7XG59O1xuXG5cbi8qKlxuICogb3B0aW9uYWwgYnl0ZXMgZGF0YSA9IDI7XG4gKiBUaGlzIGlzIGEgdHlwZS1jb252ZXJzaW9uIHdyYXBwZXIgYXJvdW5kIGBnZXREYXRhKClgXG4gKiBAcmV0dXJuIHtzdHJpbmd9XG4gKi9cbnByb3RvLmJhc2UudjEuSW1hZ2UucHJvdG90eXBlLmdldERhdGFfYXNCNjQgPSBmdW5jdGlvbigpIHtcbiAgcmV0dXJuIC8qKiBAdHlwZSB7c3RyaW5nfSAqLyAoanNwYi5NZXNzYWdlLmJ5dGVzQXNCNjQoXG4gICAgICB0aGlzLmdldERhdGEoKSkpO1xufTtcblxuXG4vKipcbiAqIG9wdGlvbmFsIGJ5dGVzIGRhdGEgPSAyO1xuICogTm90ZSB0aGF0IFVpbnQ4QXJyYXkgaXMgbm90IHN1cHBvcnRlZCBvbiBhbGwgYnJvd3NlcnMuXG4gKiBAc2VlIGh0dHA6Ly9jYW5pdXNlLmNvbS9VaW50OEFycmF5XG4gKiBUaGlzIGlzIGEgdHlwZS1jb252ZXJzaW9uIHdyYXBwZXIgYXJvdW5kIGBnZXREYXRhKClgXG4gKiBAcmV0dXJuIHshVWludDhBcnJheX1cbiAqL1xucHJvdG8uYmFzZS52MS5JbWFnZS5wcm90b3R5cGUuZ2V0RGF0YV9hc1U4ID0gZnVuY3Rpb24oKSB7XG4gIHJldHVybiAvKiogQHR5cGUgeyFVaW50OEFycmF5fSAqLyAoanNwYi5NZXNzYWdlLmJ5dGVzQXNVOChcbiAgICAgIHRoaXMuZ2V0RGF0YSgpKSk7XG59O1xuXG5cbi8qKlxuICogQHBhcmFtIHshKHN0cmluZ3xVaW50OEFycmF5KX0gdmFsdWVcbiAqIEByZXR1cm4geyFwcm90by5iYXNlLnYxLkltYWdlfSByZXR1cm5zIHRoaXNcbiAqL1xucHJvdG8uYmFzZS52MS5JbWFnZS5wcm90b3R5cGUuc2V0RGF0YSA9IGZ1bmN0aW9uKHZhbHVlKSB7XG4gIHJldHVybiBqc3BiLk1lc3NhZ2Uuc2V0UHJvdG8zQnl0ZXNGaWVsZCh0aGlzLCAyLCB2YWx1ZSk7XG59O1xuXG5cblxuXG5cbmlmIChqc3BiLk1lc3NhZ2UuR0VORVJBVEVfVE9fT0JKRUNUKSB7XG4vKipcbiAqIENyZWF0ZXMgYW4gb2JqZWN0IHJlcHJlc2VudGF0aW9uIG9mIHRoaXMgcHJvdG8uXG4gKiBGaWVsZCBuYW1lcyB0aGF0IGFyZSByZXNlcnZlZCBpbiBKYXZhU2NyaXB0IGFuZCB3aWxsIGJlIHJlbmFtZWQgdG8gcGJfbmFtZS5cbiAqIE9wdGlvbmFsIGZpZWxkcyB0aGF0IGFyZSBub3Qgc2V0IHdpbGwgYmUgc2V0IHRvIHVuZGVmaW5lZC5cbiAqIFRvIGFjY2VzcyBhIHJlc2VydmVkIGZpZWxkIHVzZSwgZm9vLnBiXzxuYW1lPiwgZWcsIGZvby5wYl9kZWZhdWx0LlxuICogRm9yIHRoZSBsaXN0IG9mIHJlc2VydmVkIG5hbWVzIHBsZWFzZSBzZWU6XG4gKiAgICAgbmV0L3Byb3RvMi9jb21waWxlci9qcy9pbnRlcm5hbC9nZW5lcmF0b3IuY2Mja0tleXdvcmQuXG4gKiBAcGFyYW0ge2Jvb2xlYW49fSBvcHRfaW5jbHVkZUluc3RhbmNlIERlcHJlY2F0ZWQuIHdoZXRoZXIgdG8gaW5jbHVkZSB0aGVcbiAqICAgICBKU1BCIGluc3RhbmNlIGZvciB0cmFuc2l0aW9uYWwgc295IHByb3RvIHN1cHBvcnQ6XG4gKiAgICAgaHR0cDovL2dvdG8vc295LXBhcmFtLW1pZ3JhdGlvblxuICogQHJldHVybiB7IU9iamVjdH1cbiAqL1xucHJvdG8uYmFzZS52MS5TdGF0dXNFZGl0UmVxdWVzdC5wcm90b3R5cGUudG9PYmplY3QgPSBmdW5jdGlvbihvcHRfaW5jbHVkZUluc3RhbmNlKSB7XG4gIHJldHVybiBwcm90by5iYXNlLnYxLlN0YXR1c0VkaXRSZXF1ZXN0LnRvT2JqZWN0KG9wdF9pbmNsdWRlSW5zdGFuY2UsIHRoaXMpO1xufTtcblxuXG4vKipcbiAqIFN0YXRpYyB2ZXJzaW9uIG9mIHRoZSB7QHNlZSB0b09iamVjdH0gbWV0aG9kLlxuICogQHBhcmFtIHtib29sZWFufHVuZGVmaW5lZH0gaW5jbHVkZUluc3RhbmNlIERlcHJlY2F0ZWQuIFdoZXRoZXIgdG8gaW5jbHVkZVxuICogICAgIHRoZSBKU1BCIGluc3RhbmNlIGZvciB0cmFuc2l0aW9uYWwgc295IHByb3RvIHN1cHBvcnQ6XG4gKiAgICAgaHR0cDovL2dvdG8vc295LXBhcmFtLW1pZ3JhdGlvblxuICogQHBhcmFtIHshcHJvdG8uYmFzZS52MS5TdGF0dXNFZGl0UmVxdWVzdH0gbXNnIFRoZSBtc2cgaW5zdGFuY2UgdG8gdHJhbnNmb3JtLlxuICogQHJldHVybiB7IU9iamVjdH1cbiAqIEBzdXBwcmVzcyB7dW51c2VkTG9jYWxWYXJpYWJsZXN9IGYgaXMgb25seSB1c2VkIGZvciBuZXN0ZWQgbWVzc2FnZXNcbiAqL1xucHJvdG8uYmFzZS52MS5TdGF0dXNFZGl0UmVxdWVzdC50b09iamVjdCA9IGZ1bmN0aW9uKGluY2x1ZGVJbnN0YW5jZSwgbXNnKSB7XG4gIHZhciBmLCBvYmogPSB7XG4gICAgaWQ6IGpzcGIuTWVzc2FnZS5nZXRGaWVsZFdpdGhEZWZhdWx0KG1zZywgMSwgMCksXG4gICAgc3RhdHVzOiBqc3BiLk1lc3NhZ2UuZ2V0RmllbGRXaXRoRGVmYXVsdChtc2csIDIsIDApXG4gIH07XG5cbiAgaWYgKGluY2x1ZGVJbnN0YW5jZSkge1xuICAgIG9iai4kanNwYk1lc3NhZ2VJbnN0YW5jZSA9IG1zZztcbiAgfVxuICByZXR1cm4gb2JqO1xufTtcbn1cblxuXG4vKipcbiAqIERlc2VyaWFsaXplcyBiaW5hcnkgZGF0YSAoaW4gcHJvdG9idWYgd2lyZSBmb3JtYXQpLlxuICogQHBhcmFtIHtqc3BiLkJ5dGVTb3VyY2V9IGJ5dGVzIFRoZSBieXRlcyB0byBkZXNlcmlhbGl6ZS5cbiAqIEByZXR1cm4geyFwcm90by5iYXNlLnYxLlN0YXR1c0VkaXRSZXF1ZXN0fVxuICovXG5wcm90by5iYXNlLnYxLlN0YXR1c0VkaXRSZXF1ZXN0LmRlc2VyaWFsaXplQmluYXJ5ID0gZnVuY3Rpb24oYnl0ZXMpIHtcbiAgdmFyIHJlYWRlciA9IG5ldyBqc3BiLkJpbmFyeVJlYWRlcihieXRlcyk7XG4gIHZhciBtc2cgPSBuZXcgcHJvdG8uYmFzZS52MS5TdGF0dXNFZGl0UmVxdWVzdDtcbiAgcmV0dXJuIHByb3RvLmJhc2UudjEuU3RhdHVzRWRpdFJlcXVlc3QuZGVzZXJpYWxpemVCaW5hcnlGcm9tUmVhZGVyKG1zZywgcmVhZGVyKTtcbn07XG5cblxuLyoqXG4gKiBEZXNlcmlhbGl6ZXMgYmluYXJ5IGRhdGEgKGluIHByb3RvYnVmIHdpcmUgZm9ybWF0KSBmcm9tIHRoZVxuICogZ2l2ZW4gcmVhZGVyIGludG8gdGhlIGdpdmVuIG1lc3NhZ2Ugb2JqZWN0LlxuICogQHBhcmFtIHshcHJvdG8uYmFzZS52MS5TdGF0dXNFZGl0UmVxdWVzdH0gbXNnIFRoZSBtZXNzYWdlIG9iamVjdCB0byBkZXNlcmlhbGl6ZSBpbnRvLlxuICogQHBhcmFtIHshanNwYi5CaW5hcnlSZWFkZXJ9IHJlYWRlciBUaGUgQmluYXJ5UmVhZGVyIHRvIHVzZS5cbiAqIEByZXR1cm4geyFwcm90by5iYXNlLnYxLlN0YXR1c0VkaXRSZXF1ZXN0fVxuICovXG5wcm90by5iYXNlLnYxLlN0YXR1c0VkaXRSZXF1ZXN0LmRlc2VyaWFsaXplQmluYXJ5RnJvbVJlYWRlciA9IGZ1bmN0aW9uKG1zZywgcmVhZGVyKSB7XG4gIHdoaWxlIChyZWFkZXIubmV4dEZpZWxkKCkpIHtcbiAgICBpZiAocmVhZGVyLmlzRW5kR3JvdXAoKSkge1xuICAgICAgYnJlYWs7XG4gICAgfVxuICAgIHZhciBmaWVsZCA9IHJlYWRlci5nZXRGaWVsZE51bWJlcigpO1xuICAgIHN3aXRjaCAoZmllbGQpIHtcbiAgICBjYXNlIDE6XG4gICAgICB2YXIgdmFsdWUgPSAvKiogQHR5cGUge251bWJlcn0gKi8gKHJlYWRlci5yZWFkSW50NjQoKSk7XG4gICAgICBtc2cuc2V0SWQodmFsdWUpO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSAyOlxuICAgICAgdmFyIHZhbHVlID0gLyoqIEB0eXBlIHshcHJvdG8uYmFzZS52MS5TdGF0dXNUeXBlfSAqLyAocmVhZGVyLnJlYWRFbnVtKCkpO1xuICAgICAgbXNnLnNldFN0YXR1cyh2YWx1ZSk7XG4gICAgICBicmVhaztcbiAgICBkZWZhdWx0OlxuICAgICAgcmVhZGVyLnNraXBGaWVsZCgpO1xuICAgICAgYnJlYWs7XG4gICAgfVxuICB9XG4gIHJldHVybiBtc2c7XG59O1xuXG5cbi8qKlxuICogU2VyaWFsaXplcyB0aGUgbWVzc2FnZSB0byBiaW5hcnkgZGF0YSAoaW4gcHJvdG9idWYgd2lyZSBmb3JtYXQpLlxuICogQHJldHVybiB7IVVpbnQ4QXJyYXl9XG4gKi9cbnByb3RvLmJhc2UudjEuU3RhdHVzRWRpdFJlcXVlc3QucHJvdG90eXBlLnNlcmlhbGl6ZUJpbmFyeSA9IGZ1bmN0aW9uKCkge1xuICB2YXIgd3JpdGVyID0gbmV3IGpzcGIuQmluYXJ5V3JpdGVyKCk7XG4gIHByb3RvLmJhc2UudjEuU3RhdHVzRWRpdFJlcXVlc3Quc2VyaWFsaXplQmluYXJ5VG9Xcml0ZXIodGhpcywgd3JpdGVyKTtcbiAgcmV0dXJuIHdyaXRlci5nZXRSZXN1bHRCdWZmZXIoKTtcbn07XG5cblxuLyoqXG4gKiBTZXJpYWxpemVzIHRoZSBnaXZlbiBtZXNzYWdlIHRvIGJpbmFyeSBkYXRhIChpbiBwcm90b2J1ZiB3aXJlXG4gKiBmb3JtYXQpLCB3cml0aW5nIHRvIHRoZSBnaXZlbiBCaW5hcnlXcml0ZXIuXG4gKiBAcGFyYW0geyFwcm90by5iYXNlLnYxLlN0YXR1c0VkaXRSZXF1ZXN0fSBtZXNzYWdlXG4gKiBAcGFyYW0geyFqc3BiLkJpbmFyeVdyaXRlcn0gd3JpdGVyXG4gKiBAc3VwcHJlc3Mge3VudXNlZExvY2FsVmFyaWFibGVzfSBmIGlzIG9ubHkgdXNlZCBmb3IgbmVzdGVkIG1lc3NhZ2VzXG4gKi9cbnByb3RvLmJhc2UudjEuU3RhdHVzRWRpdFJlcXVlc3Quc2VyaWFsaXplQmluYXJ5VG9Xcml0ZXIgPSBmdW5jdGlvbihtZXNzYWdlLCB3cml0ZXIpIHtcbiAgdmFyIGYgPSB1bmRlZmluZWQ7XG4gIGYgPSBtZXNzYWdlLmdldElkKCk7XG4gIGlmIChmICE9PSAwKSB7XG4gICAgd3JpdGVyLndyaXRlSW50NjQoXG4gICAgICAxLFxuICAgICAgZlxuICAgICk7XG4gIH1cbiAgZiA9IG1lc3NhZ2UuZ2V0U3RhdHVzKCk7XG4gIGlmIChmICE9PSAwLjApIHtcbiAgICB3cml0ZXIud3JpdGVFbnVtKFxuICAgICAgMixcbiAgICAgIGZcbiAgICApO1xuICB9XG59O1xuXG5cbi8qKlxuICogb3B0aW9uYWwgaW50NjQgaWQgPSAxO1xuICogQHJldHVybiB7bnVtYmVyfVxuICovXG5wcm90by5iYXNlLnYxLlN0YXR1c0VkaXRSZXF1ZXN0LnByb3RvdHlwZS5nZXRJZCA9IGZ1bmN0aW9uKCkge1xuICByZXR1cm4gLyoqIEB0eXBlIHtudW1iZXJ9ICovIChqc3BiLk1lc3NhZ2UuZ2V0RmllbGRXaXRoRGVmYXVsdCh0aGlzLCAxLCAwKSk7XG59O1xuXG5cbi8qKlxuICogQHBhcmFtIHtudW1iZXJ9IHZhbHVlXG4gKiBAcmV0dXJuIHshcHJvdG8uYmFzZS52MS5TdGF0dXNFZGl0UmVxdWVzdH0gcmV0dXJucyB0aGlzXG4gKi9cbnByb3RvLmJhc2UudjEuU3RhdHVzRWRpdFJlcXVlc3QucHJvdG90eXBlLnNldElkID0gZnVuY3Rpb24odmFsdWUpIHtcbiAgcmV0dXJuIGpzcGIuTWVzc2FnZS5zZXRQcm90bzNJbnRGaWVsZCh0aGlzLCAxLCB2YWx1ZSk7XG59O1xuXG5cbi8qKlxuICogb3B0aW9uYWwgU3RhdHVzVHlwZSBzdGF0dXMgPSAyO1xuICogQHJldHVybiB7IXByb3RvLmJhc2UudjEuU3RhdHVzVHlwZX1cbiAqL1xucHJvdG8uYmFzZS52MS5TdGF0dXNFZGl0UmVxdWVzdC5wcm90b3R5cGUuZ2V0U3RhdHVzID0gZnVuY3Rpb24oKSB7XG4gIHJldHVybiAvKiogQHR5cGUgeyFwcm90by5iYXNlLnYxLlN0YXR1c1R5cGV9ICovIChqc3BiLk1lc3NhZ2UuZ2V0RmllbGRXaXRoRGVmYXVsdCh0aGlzLCAyLCAwKSk7XG59O1xuXG5cbi8qKlxuICogQHBhcmFtIHshcHJvdG8uYmFzZS52MS5TdGF0dXNUeXBlfSB2YWx1ZVxuICogQHJldHVybiB7IXByb3RvLmJhc2UudjEuU3RhdHVzRWRpdFJlcXVlc3R9IHJldHVybnMgdGhpc1xuICovXG5wcm90by5iYXNlLnYxLlN0YXR1c0VkaXRSZXF1ZXN0LnByb3RvdHlwZS5zZXRTdGF0dXMgPSBmdW5jdGlvbih2YWx1ZSkge1xuICByZXR1cm4ganNwYi5NZXNzYWdlLnNldFByb3RvM0VudW1GaWVsZCh0aGlzLCAyLCB2YWx1ZSk7XG59O1xuXG5cblxuLyoqXG4gKiBMaXN0IG9mIHJlcGVhdGVkIGZpZWxkcyB3aXRoaW4gdGhpcyBtZXNzYWdlIHR5cGUuXG4gKiBAcHJpdmF0ZSB7IUFycmF5PG51bWJlcj59XG4gKiBAY29uc3RcbiAqL1xucHJvdG8uYmFzZS52MS5Db3Vyc2VJbmZvLnJlcGVhdGVkRmllbGRzXyA9IFs1XTtcblxuXG5cbmlmIChqc3BiLk1lc3NhZ2UuR0VORVJBVEVfVE9fT0JKRUNUKSB7XG4vKipcbiAqIENyZWF0ZXMgYW4gb2JqZWN0IHJlcHJlc2VudGF0aW9uIG9mIHRoaXMgcHJvdG8uXG4gKiBGaWVsZCBuYW1lcyB0aGF0IGFyZSByZXNlcnZlZCBpbiBKYXZhU2NyaXB0IGFuZCB3aWxsIGJlIHJlbmFtZWQgdG8gcGJfbmFtZS5cbiAqIE9wdGlvbmFsIGZpZWxkcyB0aGF0IGFyZSBub3Qgc2V0IHdpbGwgYmUgc2V0IHRvIHVuZGVmaW5lZC5cbiAqIFRvIGFjY2VzcyBhIHJlc2VydmVkIGZpZWxkIHVzZSwgZm9vLnBiXzxuYW1lPiwgZWcsIGZvby5wYl9kZWZhdWx0LlxuICogRm9yIHRoZSBsaXN0IG9mIHJlc2VydmVkIG5hbWVzIHBsZWFzZSBzZWU6XG4gKiAgICAgbmV0L3Byb3RvMi9jb21waWxlci9qcy9pbnRlcm5hbC9nZW5lcmF0b3IuY2Mja0tleXdvcmQuXG4gKiBAcGFyYW0ge2Jvb2xlYW49fSBvcHRfaW5jbHVkZUluc3RhbmNlIERlcHJlY2F0ZWQuIHdoZXRoZXIgdG8gaW5jbHVkZSB0aGVcbiAqICAgICBKU1BCIGluc3RhbmNlIGZvciB0cmFuc2l0aW9uYWwgc295IHByb3RvIHN1cHBvcnQ6XG4gKiAgICAgaHR0cDovL2dvdG8vc295LXBhcmFtLW1pZ3JhdGlvblxuICogQHJldHVybiB7IU9iamVjdH1cbiAqL1xucHJvdG8uYmFzZS52MS5Db3Vyc2VJbmZvLnByb3RvdHlwZS50b09iamVjdCA9IGZ1bmN0aW9uKG9wdF9pbmNsdWRlSW5zdGFuY2UpIHtcbiAgcmV0dXJuIHByb3RvLmJhc2UudjEuQ291cnNlSW5mby50b09iamVjdChvcHRfaW5jbHVkZUluc3RhbmNlLCB0aGlzKTtcbn07XG5cblxuLyoqXG4gKiBTdGF0aWMgdmVyc2lvbiBvZiB0aGUge0BzZWUgdG9PYmplY3R9IG1ldGhvZC5cbiAqIEBwYXJhbSB7Ym9vbGVhbnx1bmRlZmluZWR9IGluY2x1ZGVJbnN0YW5jZSBEZXByZWNhdGVkLiBXaGV0aGVyIHRvIGluY2x1ZGVcbiAqICAgICB0aGUgSlNQQiBpbnN0YW5jZSBmb3IgdHJhbnNpdGlvbmFsIHNveSBwcm90byBzdXBwb3J0OlxuICogICAgIGh0dHA6Ly9nb3RvL3NveS1wYXJhbS1taWdyYXRpb25cbiAqIEBwYXJhbSB7IXByb3RvLmJhc2UudjEuQ291cnNlSW5mb30gbXNnIFRoZSBtc2cgaW5zdGFuY2UgdG8gdHJhbnNmb3JtLlxuICogQHJldHVybiB7IU9iamVjdH1cbiAqIEBzdXBwcmVzcyB7dW51c2VkTG9jYWxWYXJpYWJsZXN9IGYgaXMgb25seSB1c2VkIGZvciBuZXN0ZWQgbWVzc2FnZXNcbiAqL1xucHJvdG8uYmFzZS52MS5Db3Vyc2VJbmZvLnRvT2JqZWN0ID0gZnVuY3Rpb24oaW5jbHVkZUluc3RhbmNlLCBtc2cpIHtcbiAgdmFyIGYsIG9iaiA9IHtcbiAgICBpZDoganNwYi5NZXNzYWdlLmdldEZpZWxkV2l0aERlZmF1bHQobXNnLCAxLCAwKSxcbiAgICBuYW1lOiBqc3BiLk1lc3NhZ2UuZ2V0RmllbGRXaXRoRGVmYXVsdChtc2csIDIsIFwiXCIpLFxuICAgIHRvdGFsY29udHJvbG51bToganNwYi5NZXNzYWdlLmdldEZpZWxkV2l0aERlZmF1bHQobXNnLCAzLCAwKSxcbiAgICBtYXhyYW5nZToganNwYi5NZXNzYWdlLmdldEZpZWxkV2l0aERlZmF1bHQobXNnLCA0LCAwKSxcbiAgICBjb250cm9sUG9pbnRTb3J0ZWRMaXN0TGlzdDoganNwYi5NZXNzYWdlLnRvT2JqZWN0TGlzdChtc2cuZ2V0Q29udHJvbFBvaW50U29ydGVkTGlzdExpc3QoKSxcbiAgICBwcm90by5iYXNlLnYxLkNvbnRyb2xQb2ludC50b09iamVjdCwgaW5jbHVkZUluc3RhbmNlKVxuICB9O1xuXG4gIGlmIChpbmNsdWRlSW5zdGFuY2UpIHtcbiAgICBvYmouJGpzcGJNZXNzYWdlSW5zdGFuY2UgPSBtc2c7XG4gIH1cbiAgcmV0dXJuIG9iajtcbn07XG59XG5cblxuLyoqXG4gKiBEZXNlcmlhbGl6ZXMgYmluYXJ5IGRhdGEgKGluIHByb3RvYnVmIHdpcmUgZm9ybWF0KS5cbiAqIEBwYXJhbSB7anNwYi5CeXRlU291cmNlfSBieXRlcyBUaGUgYnl0ZXMgdG8gZGVzZXJpYWxpemUuXG4gKiBAcmV0dXJuIHshcHJvdG8uYmFzZS52MS5Db3Vyc2VJbmZvfVxuICovXG5wcm90by5iYXNlLnYxLkNvdXJzZUluZm8uZGVzZXJpYWxpemVCaW5hcnkgPSBmdW5jdGlvbihieXRlcykge1xuICB2YXIgcmVhZGVyID0gbmV3IGpzcGIuQmluYXJ5UmVhZGVyKGJ5dGVzKTtcbiAgdmFyIG1zZyA9IG5ldyBwcm90by5iYXNlLnYxLkNvdXJzZUluZm87XG4gIHJldHVybiBwcm90by5iYXNlLnYxLkNvdXJzZUluZm8uZGVzZXJpYWxpemVCaW5hcnlGcm9tUmVhZGVyKG1zZywgcmVhZGVyKTtcbn07XG5cblxuLyoqXG4gKiBEZXNlcmlhbGl6ZXMgYmluYXJ5IGRhdGEgKGluIHByb3RvYnVmIHdpcmUgZm9ybWF0KSBmcm9tIHRoZVxuICogZ2l2ZW4gcmVhZGVyIGludG8gdGhlIGdpdmVuIG1lc3NhZ2Ugb2JqZWN0LlxuICogQHBhcmFtIHshcHJvdG8uYmFzZS52MS5Db3Vyc2VJbmZvfSBtc2cgVGhlIG1lc3NhZ2Ugb2JqZWN0IHRvIGRlc2VyaWFsaXplIGludG8uXG4gKiBAcGFyYW0geyFqc3BiLkJpbmFyeVJlYWRlcn0gcmVhZGVyIFRoZSBCaW5hcnlSZWFkZXIgdG8gdXNlLlxuICogQHJldHVybiB7IXByb3RvLmJhc2UudjEuQ291cnNlSW5mb31cbiAqL1xucHJvdG8uYmFzZS52MS5Db3Vyc2VJbmZvLmRlc2VyaWFsaXplQmluYXJ5RnJvbVJlYWRlciA9IGZ1bmN0aW9uKG1zZywgcmVhZGVyKSB7XG4gIHdoaWxlIChyZWFkZXIubmV4dEZpZWxkKCkpIHtcbiAgICBpZiAocmVhZGVyLmlzRW5kR3JvdXAoKSkge1xuICAgICAgYnJlYWs7XG4gICAgfVxuICAgIHZhciBmaWVsZCA9IHJlYWRlci5nZXRGaWVsZE51bWJlcigpO1xuICAgIHN3aXRjaCAoZmllbGQpIHtcbiAgICBjYXNlIDE6XG4gICAgICB2YXIgdmFsdWUgPSAvKiogQHR5cGUge251bWJlcn0gKi8gKHJlYWRlci5yZWFkSW50MzIoKSk7XG4gICAgICBtc2cuc2V0SWQodmFsdWUpO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSAyOlxuICAgICAgdmFyIHZhbHVlID0gLyoqIEB0eXBlIHtzdHJpbmd9ICovIChyZWFkZXIucmVhZFN0cmluZygpKTtcbiAgICAgIG1zZy5zZXROYW1lKHZhbHVlKTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgMzpcbiAgICAgIHZhciB2YWx1ZSA9IC8qKiBAdHlwZSB7bnVtYmVyfSAqLyAocmVhZGVyLnJlYWRJbnQzMigpKTtcbiAgICAgIG1zZy5zZXRUb3RhbGNvbnRyb2xudW0odmFsdWUpO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSA0OlxuICAgICAgdmFyIHZhbHVlID0gLyoqIEB0eXBlIHtudW1iZXJ9ICovIChyZWFkZXIucmVhZEludDMyKCkpO1xuICAgICAgbXNnLnNldE1heHJhbmdlKHZhbHVlKTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgNTpcbiAgICAgIHZhciB2YWx1ZSA9IG5ldyBwcm90by5iYXNlLnYxLkNvbnRyb2xQb2ludDtcbiAgICAgIHJlYWRlci5yZWFkTWVzc2FnZSh2YWx1ZSxwcm90by5iYXNlLnYxLkNvbnRyb2xQb2ludC5kZXNlcmlhbGl6ZUJpbmFyeUZyb21SZWFkZXIpO1xuICAgICAgbXNnLmFkZENvbnRyb2xQb2ludFNvcnRlZExpc3QodmFsdWUpO1xuICAgICAgYnJlYWs7XG4gICAgZGVmYXVsdDpcbiAgICAgIHJlYWRlci5za2lwRmllbGQoKTtcbiAgICAgIGJyZWFrO1xuICAgIH1cbiAgfVxuICByZXR1cm4gbXNnO1xufTtcblxuXG4vKipcbiAqIFNlcmlhbGl6ZXMgdGhlIG1lc3NhZ2UgdG8gYmluYXJ5IGRhdGEgKGluIHByb3RvYnVmIHdpcmUgZm9ybWF0KS5cbiAqIEByZXR1cm4geyFVaW50OEFycmF5fVxuICovXG5wcm90by5iYXNlLnYxLkNvdXJzZUluZm8ucHJvdG90eXBlLnNlcmlhbGl6ZUJpbmFyeSA9IGZ1bmN0aW9uKCkge1xuICB2YXIgd3JpdGVyID0gbmV3IGpzcGIuQmluYXJ5V3JpdGVyKCk7XG4gIHByb3RvLmJhc2UudjEuQ291cnNlSW5mby5zZXJpYWxpemVCaW5hcnlUb1dyaXRlcih0aGlzLCB3cml0ZXIpO1xuICByZXR1cm4gd3JpdGVyLmdldFJlc3VsdEJ1ZmZlcigpO1xufTtcblxuXG4vKipcbiAqIFNlcmlhbGl6ZXMgdGhlIGdpdmVuIG1lc3NhZ2UgdG8gYmluYXJ5IGRhdGEgKGluIHByb3RvYnVmIHdpcmVcbiAqIGZvcm1hdCksIHdyaXRpbmcgdG8gdGhlIGdpdmVuIEJpbmFyeVdyaXRlci5cbiAqIEBwYXJhbSB7IXByb3RvLmJhc2UudjEuQ291cnNlSW5mb30gbWVzc2FnZVxuICogQHBhcmFtIHshanNwYi5CaW5hcnlXcml0ZXJ9IHdyaXRlclxuICogQHN1cHByZXNzIHt1bnVzZWRMb2NhbFZhcmlhYmxlc30gZiBpcyBvbmx5IHVzZWQgZm9yIG5lc3RlZCBtZXNzYWdlc1xuICovXG5wcm90by5iYXNlLnYxLkNvdXJzZUluZm8uc2VyaWFsaXplQmluYXJ5VG9Xcml0ZXIgPSBmdW5jdGlvbihtZXNzYWdlLCB3cml0ZXIpIHtcbiAgdmFyIGYgPSB1bmRlZmluZWQ7XG4gIGYgPSBtZXNzYWdlLmdldElkKCk7XG4gIGlmIChmICE9PSAwKSB7XG4gICAgd3JpdGVyLndyaXRlSW50MzIoXG4gICAgICAxLFxuICAgICAgZlxuICAgICk7XG4gIH1cbiAgZiA9IG1lc3NhZ2UuZ2V0TmFtZSgpO1xuICBpZiAoZi5sZW5ndGggPiAwKSB7XG4gICAgd3JpdGVyLndyaXRlU3RyaW5nKFxuICAgICAgMixcbiAgICAgIGZcbiAgICApO1xuICB9XG4gIGYgPSBtZXNzYWdlLmdldFRvdGFsY29udHJvbG51bSgpO1xuICBpZiAoZiAhPT0gMCkge1xuICAgIHdyaXRlci53cml0ZUludDMyKFxuICAgICAgMyxcbiAgICAgIGZcbiAgICApO1xuICB9XG4gIGYgPSBtZXNzYWdlLmdldE1heHJhbmdlKCk7XG4gIGlmIChmICE9PSAwKSB7XG4gICAgd3JpdGVyLndyaXRlSW50MzIoXG4gICAgICA0LFxuICAgICAgZlxuICAgICk7XG4gIH1cbiAgZiA9IG1lc3NhZ2UuZ2V0Q29udHJvbFBvaW50U29ydGVkTGlzdExpc3QoKTtcbiAgaWYgKGYubGVuZ3RoID4gMCkge1xuICAgIHdyaXRlci53cml0ZVJlcGVhdGVkTWVzc2FnZShcbiAgICAgIDUsXG4gICAgICBmLFxuICAgICAgcHJvdG8uYmFzZS52MS5Db250cm9sUG9pbnQuc2VyaWFsaXplQmluYXJ5VG9Xcml0ZXJcbiAgICApO1xuICB9XG59O1xuXG5cbi8qKlxuICogb3B0aW9uYWwgaW50MzIgaWQgPSAxO1xuICogQHJldHVybiB7bnVtYmVyfVxuICovXG5wcm90by5iYXNlLnYxLkNvdXJzZUluZm8ucHJvdG90eXBlLmdldElkID0gZnVuY3Rpb24oKSB7XG4gIHJldHVybiAvKiogQHR5cGUge251bWJlcn0gKi8gKGpzcGIuTWVzc2FnZS5nZXRGaWVsZFdpdGhEZWZhdWx0KHRoaXMsIDEsIDApKTtcbn07XG5cblxuLyoqXG4gKiBAcGFyYW0ge251bWJlcn0gdmFsdWVcbiAqIEByZXR1cm4geyFwcm90by5iYXNlLnYxLkNvdXJzZUluZm99IHJldHVybnMgdGhpc1xuICovXG5wcm90by5iYXNlLnYxLkNvdXJzZUluZm8ucHJvdG90eXBlLnNldElkID0gZnVuY3Rpb24odmFsdWUpIHtcbiAgcmV0dXJuIGpzcGIuTWVzc2FnZS5zZXRQcm90bzNJbnRGaWVsZCh0aGlzLCAxLCB2YWx1ZSk7XG59O1xuXG5cbi8qKlxuICogb3B0aW9uYWwgc3RyaW5nIG5hbWUgPSAyO1xuICogQHJldHVybiB7c3RyaW5nfVxuICovXG5wcm90by5iYXNlLnYxLkNvdXJzZUluZm8ucHJvdG90eXBlLmdldE5hbWUgPSBmdW5jdGlvbigpIHtcbiAgcmV0dXJuIC8qKiBAdHlwZSB7c3RyaW5nfSAqLyAoanNwYi5NZXNzYWdlLmdldEZpZWxkV2l0aERlZmF1bHQodGhpcywgMiwgXCJcIikpO1xufTtcblxuXG4vKipcbiAqIEBwYXJhbSB7c3RyaW5nfSB2YWx1ZVxuICogQHJldHVybiB7IXByb3RvLmJhc2UudjEuQ291cnNlSW5mb30gcmV0dXJucyB0aGlzXG4gKi9cbnByb3RvLmJhc2UudjEuQ291cnNlSW5mby5wcm90b3R5cGUuc2V0TmFtZSA9IGZ1bmN0aW9uKHZhbHVlKSB7XG4gIHJldHVybiBqc3BiLk1lc3NhZ2Uuc2V0UHJvdG8zU3RyaW5nRmllbGQodGhpcywgMiwgdmFsdWUpO1xufTtcblxuXG4vKipcbiAqIG9wdGlvbmFsIGludDMyIHRvdGFsQ29udHJvbE51bSA9IDM7XG4gKiBAcmV0dXJuIHtudW1iZXJ9XG4gKi9cbnByb3RvLmJhc2UudjEuQ291cnNlSW5mby5wcm90b3R5cGUuZ2V0VG90YWxjb250cm9sbnVtID0gZnVuY3Rpb24oKSB7XG4gIHJldHVybiAvKiogQHR5cGUge251bWJlcn0gKi8gKGpzcGIuTWVzc2FnZS5nZXRGaWVsZFdpdGhEZWZhdWx0KHRoaXMsIDMsIDApKTtcbn07XG5cblxuLyoqXG4gKiBAcGFyYW0ge251bWJlcn0gdmFsdWVcbiAqIEByZXR1cm4geyFwcm90by5iYXNlLnYxLkNvdXJzZUluZm99IHJldHVybnMgdGhpc1xuICovXG5wcm90by5iYXNlLnYxLkNvdXJzZUluZm8ucHJvdG90eXBlLnNldFRvdGFsY29udHJvbG51bSA9IGZ1bmN0aW9uKHZhbHVlKSB7XG4gIHJldHVybiBqc3BiLk1lc3NhZ2Uuc2V0UHJvdG8zSW50RmllbGQodGhpcywgMywgdmFsdWUpO1xufTtcblxuXG4vKipcbiAqIG9wdGlvbmFsIGludDMyIG1heFJhbmdlID0gNDtcbiAqIEByZXR1cm4ge251bWJlcn1cbiAqL1xucHJvdG8uYmFzZS52MS5Db3Vyc2VJbmZvLnByb3RvdHlwZS5nZXRNYXhyYW5nZSA9IGZ1bmN0aW9uKCkge1xuICByZXR1cm4gLyoqIEB0eXBlIHtudW1iZXJ9ICovIChqc3BiLk1lc3NhZ2UuZ2V0RmllbGRXaXRoRGVmYXVsdCh0aGlzLCA0LCAwKSk7XG59O1xuXG5cbi8qKlxuICogQHBhcmFtIHtudW1iZXJ9IHZhbHVlXG4gKiBAcmV0dXJuIHshcHJvdG8uYmFzZS52MS5Db3Vyc2VJbmZvfSByZXR1cm5zIHRoaXNcbiAqL1xucHJvdG8uYmFzZS52MS5Db3Vyc2VJbmZvLnByb3RvdHlwZS5zZXRNYXhyYW5nZSA9IGZ1bmN0aW9uKHZhbHVlKSB7XG4gIHJldHVybiBqc3BiLk1lc3NhZ2Uuc2V0UHJvdG8zSW50RmllbGQodGhpcywgNCwgdmFsdWUpO1xufTtcblxuXG4vKipcbiAqIHJlcGVhdGVkIENvbnRyb2xQb2ludCBjb250cm9sX3BvaW50X3NvcnRlZF9saXN0ID0gNTtcbiAqIEByZXR1cm4geyFBcnJheTwhcHJvdG8uYmFzZS52MS5Db250cm9sUG9pbnQ+fVxuICovXG5wcm90by5iYXNlLnYxLkNvdXJzZUluZm8ucHJvdG90eXBlLmdldENvbnRyb2xQb2ludFNvcnRlZExpc3RMaXN0ID0gZnVuY3Rpb24oKSB7XG4gIHJldHVybiAvKiogQHR5cGV7IUFycmF5PCFwcm90by5iYXNlLnYxLkNvbnRyb2xQb2ludD59ICovIChcbiAgICBqc3BiLk1lc3NhZ2UuZ2V0UmVwZWF0ZWRXcmFwcGVyRmllbGQodGhpcywgcHJvdG8uYmFzZS52MS5Db250cm9sUG9pbnQsIDUpKTtcbn07XG5cblxuLyoqXG4gKiBAcGFyYW0geyFBcnJheTwhcHJvdG8uYmFzZS52MS5Db250cm9sUG9pbnQ+fSB2YWx1ZVxuICogQHJldHVybiB7IXByb3RvLmJhc2UudjEuQ291cnNlSW5mb30gcmV0dXJucyB0aGlzXG4qL1xucHJvdG8uYmFzZS52MS5Db3Vyc2VJbmZvLnByb3RvdHlwZS5zZXRDb250cm9sUG9pbnRTb3J0ZWRMaXN0TGlzdCA9IGZ1bmN0aW9uKHZhbHVlKSB7XG4gIHJldHVybiBqc3BiLk1lc3NhZ2Uuc2V0UmVwZWF0ZWRXcmFwcGVyRmllbGQodGhpcywgNSwgdmFsdWUpO1xufTtcblxuXG4vKipcbiAqIEBwYXJhbSB7IXByb3RvLmJhc2UudjEuQ29udHJvbFBvaW50PX0gb3B0X3ZhbHVlXG4gKiBAcGFyYW0ge251bWJlcj19IG9wdF9pbmRleFxuICogQHJldHVybiB7IXByb3RvLmJhc2UudjEuQ29udHJvbFBvaW50fVxuICovXG5wcm90by5iYXNlLnYxLkNvdXJzZUluZm8ucHJvdG90eXBlLmFkZENvbnRyb2xQb2ludFNvcnRlZExpc3QgPSBmdW5jdGlvbihvcHRfdmFsdWUsIG9wdF9pbmRleCkge1xuICByZXR1cm4ganNwYi5NZXNzYWdlLmFkZFRvUmVwZWF0ZWRXcmFwcGVyRmllbGQodGhpcywgNSwgb3B0X3ZhbHVlLCBwcm90by5iYXNlLnYxLkNvbnRyb2xQb2ludCwgb3B0X2luZGV4KTtcbn07XG5cblxuLyoqXG4gKiBDbGVhcnMgdGhlIGxpc3QgbWFraW5nIGl0IGVtcHR5IGJ1dCBub24tbnVsbC5cbiAqIEByZXR1cm4geyFwcm90by5iYXNlLnYxLkNvdXJzZUluZm99IHJldHVybnMgdGhpc1xuICovXG5wcm90by5iYXNlLnYxLkNvdXJzZUluZm8ucHJvdG90eXBlLmNsZWFyQ29udHJvbFBvaW50U29ydGVkTGlzdExpc3QgPSBmdW5jdGlvbigpIHtcbiAgcmV0dXJuIHRoaXMuc2V0Q29udHJvbFBvaW50U29ydGVkTGlzdExpc3QoW10pO1xufTtcblxuXG5cbi8qKlxuICogTGlzdCBvZiByZXBlYXRlZCBmaWVsZHMgd2l0aGluIHRoaXMgbWVzc2FnZSB0eXBlLlxuICogQHByaXZhdGUgeyFBcnJheTxudW1iZXI+fVxuICogQGNvbnN0XG4gKi9cbnByb3RvLmJhc2UudjEuQ29udHJvbFBvaW50LnJlcGVhdGVkRmllbGRzXyA9IFszXTtcblxuXG5cbmlmIChqc3BiLk1lc3NhZ2UuR0VORVJBVEVfVE9fT0JKRUNUKSB7XG4vKipcbiAqIENyZWF0ZXMgYW4gb2JqZWN0IHJlcHJlc2VudGF0aW9uIG9mIHRoaXMgcHJvdG8uXG4gKiBGaWVsZCBuYW1lcyB0aGF0IGFyZSByZXNlcnZlZCBpbiBKYXZhU2NyaXB0IGFuZCB3aWxsIGJlIHJlbmFtZWQgdG8gcGJfbmFtZS5cbiAqIE9wdGlvbmFsIGZpZWxkcyB0aGF0IGFyZSBub3Qgc2V0IHdpbGwgYmUgc2V0IHRvIHVuZGVmaW5lZC5cbiAqIFRvIGFjY2VzcyBhIHJlc2VydmVkIGZpZWxkIHVzZSwgZm9vLnBiXzxuYW1lPiwgZWcsIGZvby5wYl9kZWZhdWx0LlxuICogRm9yIHRoZSBsaXN0IG9mIHJlc2VydmVkIG5hbWVzIHBsZWFzZSBzZWU6XG4gKiAgICAgbmV0L3Byb3RvMi9jb21waWxlci9qcy9pbnRlcm5hbC9nZW5lcmF0b3IuY2Mja0tleXdvcmQuXG4gKiBAcGFyYW0ge2Jvb2xlYW49fSBvcHRfaW5jbHVkZUluc3RhbmNlIERlcHJlY2F0ZWQuIHdoZXRoZXIgdG8gaW5jbHVkZSB0aGVcbiAqICAgICBKU1BCIGluc3RhbmNlIGZvciB0cmFuc2l0aW9uYWwgc295IHByb3RvIHN1cHBvcnQ6XG4gKiAgICAgaHR0cDovL2dvdG8vc295LXBhcmFtLW1pZ3JhdGlvblxuICogQHJldHVybiB7IU9iamVjdH1cbiAqL1xucHJvdG8uYmFzZS52MS5Db250cm9sUG9pbnQucHJvdG90eXBlLnRvT2JqZWN0ID0gZnVuY3Rpb24ob3B0X2luY2x1ZGVJbnN0YW5jZSkge1xuICByZXR1cm4gcHJvdG8uYmFzZS52MS5Db250cm9sUG9pbnQudG9PYmplY3Qob3B0X2luY2x1ZGVJbnN0YW5jZSwgdGhpcyk7XG59O1xuXG5cbi8qKlxuICogU3RhdGljIHZlcnNpb24gb2YgdGhlIHtAc2VlIHRvT2JqZWN0fSBtZXRob2QuXG4gKiBAcGFyYW0ge2Jvb2xlYW58dW5kZWZpbmVkfSBpbmNsdWRlSW5zdGFuY2UgRGVwcmVjYXRlZC4gV2hldGhlciB0byBpbmNsdWRlXG4gKiAgICAgdGhlIEpTUEIgaW5zdGFuY2UgZm9yIHRyYW5zaXRpb25hbCBzb3kgcHJvdG8gc3VwcG9ydDpcbiAqICAgICBodHRwOi8vZ290by9zb3ktcGFyYW0tbWlncmF0aW9uXG4gKiBAcGFyYW0geyFwcm90by5iYXNlLnYxLkNvbnRyb2xQb2ludH0gbXNnIFRoZSBtc2cgaW5zdGFuY2UgdG8gdHJhbnNmb3JtLlxuICogQHJldHVybiB7IU9iamVjdH1cbiAqIEBzdXBwcmVzcyB7dW51c2VkTG9jYWxWYXJpYWJsZXN9IGYgaXMgb25seSB1c2VkIGZvciBuZXN0ZWQgbWVzc2FnZXNcbiAqL1xucHJvdG8uYmFzZS52MS5Db250cm9sUG9pbnQudG9PYmplY3QgPSBmdW5jdGlvbihpbmNsdWRlSW5zdGFuY2UsIG1zZykge1xuICB2YXIgZiwgb2JqID0ge1xuICAgIGlkOiBqc3BiLk1lc3NhZ2UuZ2V0RmllbGRXaXRoRGVmYXVsdChtc2csIDEsIDApLFxuICAgIGluZm86IChmID0gbXNnLmdldEluZm8oKSkgJiYgcHJvdG8uYmFzZS52MS5Db250cm9sUG9pbnRJbmZvLnRvT2JqZWN0KGluY2x1ZGVJbnN0YW5jZSwgZiksXG4gICAgbmZjSWRMaXN0TGlzdDogKGYgPSBqc3BiLk1lc3NhZ2UuZ2V0UmVwZWF0ZWRGaWVsZChtc2csIDMpKSA9PSBudWxsID8gdW5kZWZpbmVkIDogZixcbiAgICBvbk1hcFg6IGpzcGIuTWVzc2FnZS5nZXRGaWVsZFdpdGhEZWZhdWx0KG1zZywgNCwgMCksXG4gICAgb25NYXBZOiBqc3BiLk1lc3NhZ2UuZ2V0RmllbGRXaXRoRGVmYXVsdChtc2csIDUsIDApLFxuICAgIHNuOiBqc3BiLk1lc3NhZ2UuZ2V0RmllbGRXaXRoRGVmYXVsdChtc2csIDYsIFwiXCIpLFxuICAgIGNpcG9zaXRpb246IChmID0gbXNnLmdldENpcG9zaXRpb24oKSkgJiYgcHJvdG8uYmFzZS52MS5Qb3NpdGlvbi50b09iamVjdChpbmNsdWRlSW5zdGFuY2UsIGYpLFxuICAgIG1hcHBvc2l0aW9uOiAoZiA9IG1zZy5nZXRNYXBwb3NpdGlvbigpKSAmJiBwcm90by5iYXNlLnYxLlBvc2l0aW9uLnRvT2JqZWN0KGluY2x1ZGVJbnN0YW5jZSwgZiksXG4gICAgY2F0ZWdvcnk6IGpzcGIuTWVzc2FnZS5nZXRGaWVsZFdpdGhEZWZhdWx0KG1zZywgOSwgMClcbiAgfTtcblxuICBpZiAoaW5jbHVkZUluc3RhbmNlKSB7XG4gICAgb2JqLiRqc3BiTWVzc2FnZUluc3RhbmNlID0gbXNnO1xuICB9XG4gIHJldHVybiBvYmo7XG59O1xufVxuXG5cbi8qKlxuICogRGVzZXJpYWxpemVzIGJpbmFyeSBkYXRhIChpbiBwcm90b2J1ZiB3aXJlIGZvcm1hdCkuXG4gKiBAcGFyYW0ge2pzcGIuQnl0ZVNvdXJjZX0gYnl0ZXMgVGhlIGJ5dGVzIHRvIGRlc2VyaWFsaXplLlxuICogQHJldHVybiB7IXByb3RvLmJhc2UudjEuQ29udHJvbFBvaW50fVxuICovXG5wcm90by5iYXNlLnYxLkNvbnRyb2xQb2ludC5kZXNlcmlhbGl6ZUJpbmFyeSA9IGZ1bmN0aW9uKGJ5dGVzKSB7XG4gIHZhciByZWFkZXIgPSBuZXcganNwYi5CaW5hcnlSZWFkZXIoYnl0ZXMpO1xuICB2YXIgbXNnID0gbmV3IHByb3RvLmJhc2UudjEuQ29udHJvbFBvaW50O1xuICByZXR1cm4gcHJvdG8uYmFzZS52MS5Db250cm9sUG9pbnQuZGVzZXJpYWxpemVCaW5hcnlGcm9tUmVhZGVyKG1zZywgcmVhZGVyKTtcbn07XG5cblxuLyoqXG4gKiBEZXNlcmlhbGl6ZXMgYmluYXJ5IGRhdGEgKGluIHByb3RvYnVmIHdpcmUgZm9ybWF0KSBmcm9tIHRoZVxuICogZ2l2ZW4gcmVhZGVyIGludG8gdGhlIGdpdmVuIG1lc3NhZ2Ugb2JqZWN0LlxuICogQHBhcmFtIHshcHJvdG8uYmFzZS52MS5Db250cm9sUG9pbnR9IG1zZyBUaGUgbWVzc2FnZSBvYmplY3QgdG8gZGVzZXJpYWxpemUgaW50by5cbiAqIEBwYXJhbSB7IWpzcGIuQmluYXJ5UmVhZGVyfSByZWFkZXIgVGhlIEJpbmFyeVJlYWRlciB0byB1c2UuXG4gKiBAcmV0dXJuIHshcHJvdG8uYmFzZS52MS5Db250cm9sUG9pbnR9XG4gKi9cbnByb3RvLmJhc2UudjEuQ29udHJvbFBvaW50LmRlc2VyaWFsaXplQmluYXJ5RnJvbVJlYWRlciA9IGZ1bmN0aW9uKG1zZywgcmVhZGVyKSB7XG4gIHdoaWxlIChyZWFkZXIubmV4dEZpZWxkKCkpIHtcbiAgICBpZiAocmVhZGVyLmlzRW5kR3JvdXAoKSkge1xuICAgICAgYnJlYWs7XG4gICAgfVxuICAgIHZhciBmaWVsZCA9IHJlYWRlci5nZXRGaWVsZE51bWJlcigpO1xuICAgIHN3aXRjaCAoZmllbGQpIHtcbiAgICBjYXNlIDE6XG4gICAgICB2YXIgdmFsdWUgPSAvKiogQHR5cGUge251bWJlcn0gKi8gKHJlYWRlci5yZWFkSW50NjQoKSk7XG4gICAgICBtc2cuc2V0SWQodmFsdWUpO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSAyOlxuICAgICAgdmFyIHZhbHVlID0gbmV3IHByb3RvLmJhc2UudjEuQ29udHJvbFBvaW50SW5mbztcbiAgICAgIHJlYWRlci5yZWFkTWVzc2FnZSh2YWx1ZSxwcm90by5iYXNlLnYxLkNvbnRyb2xQb2ludEluZm8uZGVzZXJpYWxpemVCaW5hcnlGcm9tUmVhZGVyKTtcbiAgICAgIG1zZy5zZXRJbmZvKHZhbHVlKTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgMzpcbiAgICAgIHZhciB2YWx1ZSA9IC8qKiBAdHlwZSB7c3RyaW5nfSAqLyAocmVhZGVyLnJlYWRTdHJpbmcoKSk7XG4gICAgICBtc2cuYWRkTmZjSWRMaXN0KHZhbHVlKTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgNDpcbiAgICAgIHZhciB2YWx1ZSA9IC8qKiBAdHlwZSB7bnVtYmVyfSAqLyAocmVhZGVyLnJlYWRJbnQ2NCgpKTtcbiAgICAgIG1zZy5zZXRPbk1hcFgodmFsdWUpO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSA1OlxuICAgICAgdmFyIHZhbHVlID0gLyoqIEB0eXBlIHtudW1iZXJ9ICovIChyZWFkZXIucmVhZEludDY0KCkpO1xuICAgICAgbXNnLnNldE9uTWFwWSh2YWx1ZSk7XG4gICAgICBicmVhaztcbiAgICBjYXNlIDY6XG4gICAgICB2YXIgdmFsdWUgPSAvKiogQHR5cGUge3N0cmluZ30gKi8gKHJlYWRlci5yZWFkU3RyaW5nKCkpO1xuICAgICAgbXNnLnNldFNuKHZhbHVlKTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgNzpcbiAgICAgIHZhciB2YWx1ZSA9IG5ldyBwcm90by5iYXNlLnYxLlBvc2l0aW9uO1xuICAgICAgcmVhZGVyLnJlYWRNZXNzYWdlKHZhbHVlLHByb3RvLmJhc2UudjEuUG9zaXRpb24uZGVzZXJpYWxpemVCaW5hcnlGcm9tUmVhZGVyKTtcbiAgICAgIG1zZy5zZXRDaXBvc2l0aW9uKHZhbHVlKTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgODpcbiAgICAgIHZhciB2YWx1ZSA9IG5ldyBwcm90by5iYXNlLnYxLlBvc2l0aW9uO1xuICAgICAgcmVhZGVyLnJlYWRNZXNzYWdlKHZhbHVlLHByb3RvLmJhc2UudjEuUG9zaXRpb24uZGVzZXJpYWxpemVCaW5hcnlGcm9tUmVhZGVyKTtcbiAgICAgIG1zZy5zZXRNYXBwb3NpdGlvbih2YWx1ZSk7XG4gICAgICBicmVhaztcbiAgICBjYXNlIDk6XG4gICAgICB2YXIgdmFsdWUgPSAvKiogQHR5cGUge251bWJlcn0gKi8gKHJlYWRlci5yZWFkSW50MzIoKSk7XG4gICAgICBtc2cuc2V0Q2F0ZWdvcnkodmFsdWUpO1xuICAgICAgYnJlYWs7XG4gICAgZGVmYXVsdDpcbiAgICAgIHJlYWRlci5za2lwRmllbGQoKTtcbiAgICAgIGJyZWFrO1xuICAgIH1cbiAgfVxuICByZXR1cm4gbXNnO1xufTtcblxuXG4vKipcbiAqIFNlcmlhbGl6ZXMgdGhlIG1lc3NhZ2UgdG8gYmluYXJ5IGRhdGEgKGluIHByb3RvYnVmIHdpcmUgZm9ybWF0KS5cbiAqIEByZXR1cm4geyFVaW50OEFycmF5fVxuICovXG5wcm90by5iYXNlLnYxLkNvbnRyb2xQb2ludC5wcm90b3R5cGUuc2VyaWFsaXplQmluYXJ5ID0gZnVuY3Rpb24oKSB7XG4gIHZhciB3cml0ZXIgPSBuZXcganNwYi5CaW5hcnlXcml0ZXIoKTtcbiAgcHJvdG8uYmFzZS52MS5Db250cm9sUG9pbnQuc2VyaWFsaXplQmluYXJ5VG9Xcml0ZXIodGhpcywgd3JpdGVyKTtcbiAgcmV0dXJuIHdyaXRlci5nZXRSZXN1bHRCdWZmZXIoKTtcbn07XG5cblxuLyoqXG4gKiBTZXJpYWxpemVzIHRoZSBnaXZlbiBtZXNzYWdlIHRvIGJpbmFyeSBkYXRhIChpbiBwcm90b2J1ZiB3aXJlXG4gKiBmb3JtYXQpLCB3cml0aW5nIHRvIHRoZSBnaXZlbiBCaW5hcnlXcml0ZXIuXG4gKiBAcGFyYW0geyFwcm90by5iYXNlLnYxLkNvbnRyb2xQb2ludH0gbWVzc2FnZVxuICogQHBhcmFtIHshanNwYi5CaW5hcnlXcml0ZXJ9IHdyaXRlclxuICogQHN1cHByZXNzIHt1bnVzZWRMb2NhbFZhcmlhYmxlc30gZiBpcyBvbmx5IHVzZWQgZm9yIG5lc3RlZCBtZXNzYWdlc1xuICovXG5wcm90by5iYXNlLnYxLkNvbnRyb2xQb2ludC5zZXJpYWxpemVCaW5hcnlUb1dyaXRlciA9IGZ1bmN0aW9uKG1lc3NhZ2UsIHdyaXRlcikge1xuICB2YXIgZiA9IHVuZGVmaW5lZDtcbiAgZiA9IG1lc3NhZ2UuZ2V0SWQoKTtcbiAgaWYgKGYgIT09IDApIHtcbiAgICB3cml0ZXIud3JpdGVJbnQ2NChcbiAgICAgIDEsXG4gICAgICBmXG4gICAgKTtcbiAgfVxuICBmID0gbWVzc2FnZS5nZXRJbmZvKCk7XG4gIGlmIChmICE9IG51bGwpIHtcbiAgICB3cml0ZXIud3JpdGVNZXNzYWdlKFxuICAgICAgMixcbiAgICAgIGYsXG4gICAgICBwcm90by5iYXNlLnYxLkNvbnRyb2xQb2ludEluZm8uc2VyaWFsaXplQmluYXJ5VG9Xcml0ZXJcbiAgICApO1xuICB9XG4gIGYgPSBtZXNzYWdlLmdldE5mY0lkTGlzdExpc3QoKTtcbiAgaWYgKGYubGVuZ3RoID4gMCkge1xuICAgIHdyaXRlci53cml0ZVJlcGVhdGVkU3RyaW5nKFxuICAgICAgMyxcbiAgICAgIGZcbiAgICApO1xuICB9XG4gIGYgPSBtZXNzYWdlLmdldE9uTWFwWCgpO1xuICBpZiAoZiAhPT0gMCkge1xuICAgIHdyaXRlci53cml0ZUludDY0KFxuICAgICAgNCxcbiAgICAgIGZcbiAgICApO1xuICB9XG4gIGYgPSBtZXNzYWdlLmdldE9uTWFwWSgpO1xuICBpZiAoZiAhPT0gMCkge1xuICAgIHdyaXRlci53cml0ZUludDY0KFxuICAgICAgNSxcbiAgICAgIGZcbiAgICApO1xuICB9XG4gIGYgPSBtZXNzYWdlLmdldFNuKCk7XG4gIGlmIChmLmxlbmd0aCA+IDApIHtcbiAgICB3cml0ZXIud3JpdGVTdHJpbmcoXG4gICAgICA2LFxuICAgICAgZlxuICAgICk7XG4gIH1cbiAgZiA9IG1lc3NhZ2UuZ2V0Q2lwb3NpdGlvbigpO1xuICBpZiAoZiAhPSBudWxsKSB7XG4gICAgd3JpdGVyLndyaXRlTWVzc2FnZShcbiAgICAgIDcsXG4gICAgICBmLFxuICAgICAgcHJvdG8uYmFzZS52MS5Qb3NpdGlvbi5zZXJpYWxpemVCaW5hcnlUb1dyaXRlclxuICAgICk7XG4gIH1cbiAgZiA9IG1lc3NhZ2UuZ2V0TWFwcG9zaXRpb24oKTtcbiAgaWYgKGYgIT0gbnVsbCkge1xuICAgIHdyaXRlci53cml0ZU1lc3NhZ2UoXG4gICAgICA4LFxuICAgICAgZixcbiAgICAgIHByb3RvLmJhc2UudjEuUG9zaXRpb24uc2VyaWFsaXplQmluYXJ5VG9Xcml0ZXJcbiAgICApO1xuICB9XG4gIGYgPSBtZXNzYWdlLmdldENhdGVnb3J5KCk7XG4gIGlmIChmICE9PSAwKSB7XG4gICAgd3JpdGVyLndyaXRlSW50MzIoXG4gICAgICA5LFxuICAgICAgZlxuICAgICk7XG4gIH1cbn07XG5cblxuLyoqXG4gKiBvcHRpb25hbCBpbnQ2NCBpZCA9IDE7XG4gKiBAcmV0dXJuIHtudW1iZXJ9XG4gKi9cbnByb3RvLmJhc2UudjEuQ29udHJvbFBvaW50LnByb3RvdHlwZS5nZXRJZCA9IGZ1bmN0aW9uKCkge1xuICByZXR1cm4gLyoqIEB0eXBlIHtudW1iZXJ9ICovIChqc3BiLk1lc3NhZ2UuZ2V0RmllbGRXaXRoRGVmYXVsdCh0aGlzLCAxLCAwKSk7XG59O1xuXG5cbi8qKlxuICogQHBhcmFtIHtudW1iZXJ9IHZhbHVlXG4gKiBAcmV0dXJuIHshcHJvdG8uYmFzZS52MS5Db250cm9sUG9pbnR9IHJldHVybnMgdGhpc1xuICovXG5wcm90by5iYXNlLnYxLkNvbnRyb2xQb2ludC5wcm90b3R5cGUuc2V0SWQgPSBmdW5jdGlvbih2YWx1ZSkge1xuICByZXR1cm4ganNwYi5NZXNzYWdlLnNldFByb3RvM0ludEZpZWxkKHRoaXMsIDEsIHZhbHVlKTtcbn07XG5cblxuLyoqXG4gKiBvcHRpb25hbCBDb250cm9sUG9pbnRJbmZvIGluZm8gPSAyO1xuICogQHJldHVybiB7P3Byb3RvLmJhc2UudjEuQ29udHJvbFBvaW50SW5mb31cbiAqL1xucHJvdG8uYmFzZS52MS5Db250cm9sUG9pbnQucHJvdG90eXBlLmdldEluZm8gPSBmdW5jdGlvbigpIHtcbiAgcmV0dXJuIC8qKiBAdHlwZXs/cHJvdG8uYmFzZS52MS5Db250cm9sUG9pbnRJbmZvfSAqLyAoXG4gICAganNwYi5NZXNzYWdlLmdldFdyYXBwZXJGaWVsZCh0aGlzLCBwcm90by5iYXNlLnYxLkNvbnRyb2xQb2ludEluZm8sIDIpKTtcbn07XG5cblxuLyoqXG4gKiBAcGFyYW0gez9wcm90by5iYXNlLnYxLkNvbnRyb2xQb2ludEluZm98dW5kZWZpbmVkfSB2YWx1ZVxuICogQHJldHVybiB7IXByb3RvLmJhc2UudjEuQ29udHJvbFBvaW50fSByZXR1cm5zIHRoaXNcbiovXG5wcm90by5iYXNlLnYxLkNvbnRyb2xQb2ludC5wcm90b3R5cGUuc2V0SW5mbyA9IGZ1bmN0aW9uKHZhbHVlKSB7XG4gIHJldHVybiBqc3BiLk1lc3NhZ2Uuc2V0V3JhcHBlckZpZWxkKHRoaXMsIDIsIHZhbHVlKTtcbn07XG5cblxuLyoqXG4gKiBDbGVhcnMgdGhlIG1lc3NhZ2UgZmllbGQgbWFraW5nIGl0IHVuZGVmaW5lZC5cbiAqIEByZXR1cm4geyFwcm90by5iYXNlLnYxLkNvbnRyb2xQb2ludH0gcmV0dXJucyB0aGlzXG4gKi9cbnByb3RvLmJhc2UudjEuQ29udHJvbFBvaW50LnByb3RvdHlwZS5jbGVhckluZm8gPSBmdW5jdGlvbigpIHtcbiAgcmV0dXJuIHRoaXMuc2V0SW5mbyh1bmRlZmluZWQpO1xufTtcblxuXG4vKipcbiAqIFJldHVybnMgd2hldGhlciB0aGlzIGZpZWxkIGlzIHNldC5cbiAqIEByZXR1cm4ge2Jvb2xlYW59XG4gKi9cbnByb3RvLmJhc2UudjEuQ29udHJvbFBvaW50LnByb3RvdHlwZS5oYXNJbmZvID0gZnVuY3Rpb24oKSB7XG4gIHJldHVybiBqc3BiLk1lc3NhZ2UuZ2V0RmllbGQodGhpcywgMikgIT0gbnVsbDtcbn07XG5cblxuLyoqXG4gKiByZXBlYXRlZCBzdHJpbmcgbmZjX2lkX2xpc3QgPSAzO1xuICogQHJldHVybiB7IUFycmF5PHN0cmluZz59XG4gKi9cbnByb3RvLmJhc2UudjEuQ29udHJvbFBvaW50LnByb3RvdHlwZS5nZXROZmNJZExpc3RMaXN0ID0gZnVuY3Rpb24oKSB7XG4gIHJldHVybiAvKiogQHR5cGUgeyFBcnJheTxzdHJpbmc+fSAqLyAoanNwYi5NZXNzYWdlLmdldFJlcGVhdGVkRmllbGQodGhpcywgMykpO1xufTtcblxuXG4vKipcbiAqIEBwYXJhbSB7IUFycmF5PHN0cmluZz59IHZhbHVlXG4gKiBAcmV0dXJuIHshcHJvdG8uYmFzZS52MS5Db250cm9sUG9pbnR9IHJldHVybnMgdGhpc1xuICovXG5wcm90by5iYXNlLnYxLkNvbnRyb2xQb2ludC5wcm90b3R5cGUuc2V0TmZjSWRMaXN0TGlzdCA9IGZ1bmN0aW9uKHZhbHVlKSB7XG4gIHJldHVybiBqc3BiLk1lc3NhZ2Uuc2V0RmllbGQodGhpcywgMywgdmFsdWUgfHwgW10pO1xufTtcblxuXG4vKipcbiAqIEBwYXJhbSB7c3RyaW5nfSB2YWx1ZVxuICogQHBhcmFtIHtudW1iZXI9fSBvcHRfaW5kZXhcbiAqIEByZXR1cm4geyFwcm90by5iYXNlLnYxLkNvbnRyb2xQb2ludH0gcmV0dXJucyB0aGlzXG4gKi9cbnByb3RvLmJhc2UudjEuQ29udHJvbFBvaW50LnByb3RvdHlwZS5hZGROZmNJZExpc3QgPSBmdW5jdGlvbih2YWx1ZSwgb3B0X2luZGV4KSB7XG4gIHJldHVybiBqc3BiLk1lc3NhZ2UuYWRkVG9SZXBlYXRlZEZpZWxkKHRoaXMsIDMsIHZhbHVlLCBvcHRfaW5kZXgpO1xufTtcblxuXG4vKipcbiAqIENsZWFycyB0aGUgbGlzdCBtYWtpbmcgaXQgZW1wdHkgYnV0IG5vbi1udWxsLlxuICogQHJldHVybiB7IXByb3RvLmJhc2UudjEuQ29udHJvbFBvaW50fSByZXR1cm5zIHRoaXNcbiAqL1xucHJvdG8uYmFzZS52MS5Db250cm9sUG9pbnQucHJvdG90eXBlLmNsZWFyTmZjSWRMaXN0TGlzdCA9IGZ1bmN0aW9uKCkge1xuICByZXR1cm4gdGhpcy5zZXROZmNJZExpc3RMaXN0KFtdKTtcbn07XG5cblxuLyoqXG4gKiBvcHRpb25hbCBpbnQ2NCBvbl9tYXBfeCA9IDQ7XG4gKiBAcmV0dXJuIHtudW1iZXJ9XG4gKi9cbnByb3RvLmJhc2UudjEuQ29udHJvbFBvaW50LnByb3RvdHlwZS5nZXRPbk1hcFggPSBmdW5jdGlvbigpIHtcbiAgcmV0dXJuIC8qKiBAdHlwZSB7bnVtYmVyfSAqLyAoanNwYi5NZXNzYWdlLmdldEZpZWxkV2l0aERlZmF1bHQodGhpcywgNCwgMCkpO1xufTtcblxuXG4vKipcbiAqIEBwYXJhbSB7bnVtYmVyfSB2YWx1ZVxuICogQHJldHVybiB7IXByb3RvLmJhc2UudjEuQ29udHJvbFBvaW50fSByZXR1cm5zIHRoaXNcbiAqL1xucHJvdG8uYmFzZS52MS5Db250cm9sUG9pbnQucHJvdG90eXBlLnNldE9uTWFwWCA9IGZ1bmN0aW9uKHZhbHVlKSB7XG4gIHJldHVybiBqc3BiLk1lc3NhZ2Uuc2V0UHJvdG8zSW50RmllbGQodGhpcywgNCwgdmFsdWUpO1xufTtcblxuXG4vKipcbiAqIG9wdGlvbmFsIGludDY0IG9uX21hcF95ID0gNTtcbiAqIEByZXR1cm4ge251bWJlcn1cbiAqL1xucHJvdG8uYmFzZS52MS5Db250cm9sUG9pbnQucHJvdG90eXBlLmdldE9uTWFwWSA9IGZ1bmN0aW9uKCkge1xuICByZXR1cm4gLyoqIEB0eXBlIHtudW1iZXJ9ICovIChqc3BiLk1lc3NhZ2UuZ2V0RmllbGRXaXRoRGVmYXVsdCh0aGlzLCA1LCAwKSk7XG59O1xuXG5cbi8qKlxuICogQHBhcmFtIHtudW1iZXJ9IHZhbHVlXG4gKiBAcmV0dXJuIHshcHJvdG8uYmFzZS52MS5Db250cm9sUG9pbnR9IHJldHVybnMgdGhpc1xuICovXG5wcm90by5iYXNlLnYxLkNvbnRyb2xQb2ludC5wcm90b3R5cGUuc2V0T25NYXBZID0gZnVuY3Rpb24odmFsdWUpIHtcbiAgcmV0dXJuIGpzcGIuTWVzc2FnZS5zZXRQcm90bzNJbnRGaWVsZCh0aGlzLCA1LCB2YWx1ZSk7XG59O1xuXG5cbi8qKlxuICogb3B0aW9uYWwgc3RyaW5nIHNuID0gNjtcbiAqIEByZXR1cm4ge3N0cmluZ31cbiAqL1xucHJvdG8uYmFzZS52MS5Db250cm9sUG9pbnQucHJvdG90eXBlLmdldFNuID0gZnVuY3Rpb24oKSB7XG4gIHJldHVybiAvKiogQHR5cGUge3N0cmluZ30gKi8gKGpzcGIuTWVzc2FnZS5nZXRGaWVsZFdpdGhEZWZhdWx0KHRoaXMsIDYsIFwiXCIpKTtcbn07XG5cblxuLyoqXG4gKiBAcGFyYW0ge3N0cmluZ30gdmFsdWVcbiAqIEByZXR1cm4geyFwcm90by5iYXNlLnYxLkNvbnRyb2xQb2ludH0gcmV0dXJucyB0aGlzXG4gKi9cbnByb3RvLmJhc2UudjEuQ29udHJvbFBvaW50LnByb3RvdHlwZS5zZXRTbiA9IGZ1bmN0aW9uKHZhbHVlKSB7XG4gIHJldHVybiBqc3BiLk1lc3NhZ2Uuc2V0UHJvdG8zU3RyaW5nRmllbGQodGhpcywgNiwgdmFsdWUpO1xufTtcblxuXG4vKipcbiAqIG9wdGlvbmFsIFBvc2l0aW9uIGNpUG9zaXRpb24gPSA3O1xuICogQHJldHVybiB7P3Byb3RvLmJhc2UudjEuUG9zaXRpb259XG4gKi9cbnByb3RvLmJhc2UudjEuQ29udHJvbFBvaW50LnByb3RvdHlwZS5nZXRDaXBvc2l0aW9uID0gZnVuY3Rpb24oKSB7XG4gIHJldHVybiAvKiogQHR5cGV7P3Byb3RvLmJhc2UudjEuUG9zaXRpb259ICovIChcbiAgICBqc3BiLk1lc3NhZ2UuZ2V0V3JhcHBlckZpZWxkKHRoaXMsIHByb3RvLmJhc2UudjEuUG9zaXRpb24sIDcpKTtcbn07XG5cblxuLyoqXG4gKiBAcGFyYW0gez9wcm90by5iYXNlLnYxLlBvc2l0aW9ufHVuZGVmaW5lZH0gdmFsdWVcbiAqIEByZXR1cm4geyFwcm90by5iYXNlLnYxLkNvbnRyb2xQb2ludH0gcmV0dXJucyB0aGlzXG4qL1xucHJvdG8uYmFzZS52MS5Db250cm9sUG9pbnQucHJvdG90eXBlLnNldENpcG9zaXRpb24gPSBmdW5jdGlvbih2YWx1ZSkge1xuICByZXR1cm4ganNwYi5NZXNzYWdlLnNldFdyYXBwZXJGaWVsZCh0aGlzLCA3LCB2YWx1ZSk7XG59O1xuXG5cbi8qKlxuICogQ2xlYXJzIHRoZSBtZXNzYWdlIGZpZWxkIG1ha2luZyBpdCB1bmRlZmluZWQuXG4gKiBAcmV0dXJuIHshcHJvdG8uYmFzZS52MS5Db250cm9sUG9pbnR9IHJldHVybnMgdGhpc1xuICovXG5wcm90by5iYXNlLnYxLkNvbnRyb2xQb2ludC5wcm90b3R5cGUuY2xlYXJDaXBvc2l0aW9uID0gZnVuY3Rpb24oKSB7XG4gIHJldHVybiB0aGlzLnNldENpcG9zaXRpb24odW5kZWZpbmVkKTtcbn07XG5cblxuLyoqXG4gKiBSZXR1cm5zIHdoZXRoZXIgdGhpcyBmaWVsZCBpcyBzZXQuXG4gKiBAcmV0dXJuIHtib29sZWFufVxuICovXG5wcm90by5iYXNlLnYxLkNvbnRyb2xQb2ludC5wcm90b3R5cGUuaGFzQ2lwb3NpdGlvbiA9IGZ1bmN0aW9uKCkge1xuICByZXR1cm4ganNwYi5NZXNzYWdlLmdldEZpZWxkKHRoaXMsIDcpICE9IG51bGw7XG59O1xuXG5cbi8qKlxuICogb3B0aW9uYWwgUG9zaXRpb24gbWFwUG9zaXRpb24gPSA4O1xuICogQHJldHVybiB7P3Byb3RvLmJhc2UudjEuUG9zaXRpb259XG4gKi9cbnByb3RvLmJhc2UudjEuQ29udHJvbFBvaW50LnByb3RvdHlwZS5nZXRNYXBwb3NpdGlvbiA9IGZ1bmN0aW9uKCkge1xuICByZXR1cm4gLyoqIEB0eXBlez9wcm90by5iYXNlLnYxLlBvc2l0aW9ufSAqLyAoXG4gICAganNwYi5NZXNzYWdlLmdldFdyYXBwZXJGaWVsZCh0aGlzLCBwcm90by5iYXNlLnYxLlBvc2l0aW9uLCA4KSk7XG59O1xuXG5cbi8qKlxuICogQHBhcmFtIHs/cHJvdG8uYmFzZS52MS5Qb3NpdGlvbnx1bmRlZmluZWR9IHZhbHVlXG4gKiBAcmV0dXJuIHshcHJvdG8uYmFzZS52MS5Db250cm9sUG9pbnR9IHJldHVybnMgdGhpc1xuKi9cbnByb3RvLmJhc2UudjEuQ29udHJvbFBvaW50LnByb3RvdHlwZS5zZXRNYXBwb3NpdGlvbiA9IGZ1bmN0aW9uKHZhbHVlKSB7XG4gIHJldHVybiBqc3BiLk1lc3NhZ2Uuc2V0V3JhcHBlckZpZWxkKHRoaXMsIDgsIHZhbHVlKTtcbn07XG5cblxuLyoqXG4gKiBDbGVhcnMgdGhlIG1lc3NhZ2UgZmllbGQgbWFraW5nIGl0IHVuZGVmaW5lZC5cbiAqIEByZXR1cm4geyFwcm90by5iYXNlLnYxLkNvbnRyb2xQb2ludH0gcmV0dXJucyB0aGlzXG4gKi9cbnByb3RvLmJhc2UudjEuQ29udHJvbFBvaW50LnByb3RvdHlwZS5jbGVhck1hcHBvc2l0aW9uID0gZnVuY3Rpb24oKSB7XG4gIHJldHVybiB0aGlzLnNldE1hcHBvc2l0aW9uKHVuZGVmaW5lZCk7XG59O1xuXG5cbi8qKlxuICogUmV0dXJucyB3aGV0aGVyIHRoaXMgZmllbGQgaXMgc2V0LlxuICogQHJldHVybiB7Ym9vbGVhbn1cbiAqL1xucHJvdG8uYmFzZS52MS5Db250cm9sUG9pbnQucHJvdG90eXBlLmhhc01hcHBvc2l0aW9uID0gZnVuY3Rpb24oKSB7XG4gIHJldHVybiBqc3BiLk1lc3NhZ2UuZ2V0RmllbGQodGhpcywgOCkgIT0gbnVsbDtcbn07XG5cblxuLyoqXG4gKiBvcHRpb25hbCBpbnQzMiBjYXRlZ29yeSA9IDk7XG4gKiBAcmV0dXJuIHtudW1iZXJ9XG4gKi9cbnByb3RvLmJhc2UudjEuQ29udHJvbFBvaW50LnByb3RvdHlwZS5nZXRDYXRlZ29yeSA9IGZ1bmN0aW9uKCkge1xuICByZXR1cm4gLyoqIEB0eXBlIHtudW1iZXJ9ICovIChqc3BiLk1lc3NhZ2UuZ2V0RmllbGRXaXRoRGVmYXVsdCh0aGlzLCA5LCAwKSk7XG59O1xuXG5cbi8qKlxuICogQHBhcmFtIHtudW1iZXJ9IHZhbHVlXG4gKiBAcmV0dXJuIHshcHJvdG8uYmFzZS52MS5Db250cm9sUG9pbnR9IHJldHVybnMgdGhpc1xuICovXG5wcm90by5iYXNlLnYxLkNvbnRyb2xQb2ludC5wcm90b3R5cGUuc2V0Q2F0ZWdvcnkgPSBmdW5jdGlvbih2YWx1ZSkge1xuICByZXR1cm4ganNwYi5NZXNzYWdlLnNldFByb3RvM0ludEZpZWxkKHRoaXMsIDksIHZhbHVlKTtcbn07XG5cblxuXG4vKipcbiAqIExpc3Qgb2YgcmVwZWF0ZWQgZmllbGRzIHdpdGhpbiB0aGlzIG1lc3NhZ2UgdHlwZS5cbiAqIEBwcml2YXRlIHshQXJyYXk8bnVtYmVyPn1cbiAqIEBjb25zdFxuICovXG5wcm90by5iYXNlLnYxLkNvbnRyb2xQb2ludFNpbXBsZS5yZXBlYXRlZEZpZWxkc18gPSBbMl07XG5cblxuXG5pZiAoanNwYi5NZXNzYWdlLkdFTkVSQVRFX1RPX09CSkVDVCkge1xuLyoqXG4gKiBDcmVhdGVzIGFuIG9iamVjdCByZXByZXNlbnRhdGlvbiBvZiB0aGlzIHByb3RvLlxuICogRmllbGQgbmFtZXMgdGhhdCBhcmUgcmVzZXJ2ZWQgaW4gSmF2YVNjcmlwdCBhbmQgd2lsbCBiZSByZW5hbWVkIHRvIHBiX25hbWUuXG4gKiBPcHRpb25hbCBmaWVsZHMgdGhhdCBhcmUgbm90IHNldCB3aWxsIGJlIHNldCB0byB1bmRlZmluZWQuXG4gKiBUbyBhY2Nlc3MgYSByZXNlcnZlZCBmaWVsZCB1c2UsIGZvby5wYl88bmFtZT4sIGVnLCBmb28ucGJfZGVmYXVsdC5cbiAqIEZvciB0aGUgbGlzdCBvZiByZXNlcnZlZCBuYW1lcyBwbGVhc2Ugc2VlOlxuICogICAgIG5ldC9wcm90bzIvY29tcGlsZXIvanMvaW50ZXJuYWwvZ2VuZXJhdG9yLmNjI2tLZXl3b3JkLlxuICogQHBhcmFtIHtib29sZWFuPX0gb3B0X2luY2x1ZGVJbnN0YW5jZSBEZXByZWNhdGVkLiB3aGV0aGVyIHRvIGluY2x1ZGUgdGhlXG4gKiAgICAgSlNQQiBpbnN0YW5jZSBmb3IgdHJhbnNpdGlvbmFsIHNveSBwcm90byBzdXBwb3J0OlxuICogICAgIGh0dHA6Ly9nb3RvL3NveS1wYXJhbS1taWdyYXRpb25cbiAqIEByZXR1cm4geyFPYmplY3R9XG4gKi9cbnByb3RvLmJhc2UudjEuQ29udHJvbFBvaW50U2ltcGxlLnByb3RvdHlwZS50b09iamVjdCA9IGZ1bmN0aW9uKG9wdF9pbmNsdWRlSW5zdGFuY2UpIHtcbiAgcmV0dXJuIHByb3RvLmJhc2UudjEuQ29udHJvbFBvaW50U2ltcGxlLnRvT2JqZWN0KG9wdF9pbmNsdWRlSW5zdGFuY2UsIHRoaXMpO1xufTtcblxuXG4vKipcbiAqIFN0YXRpYyB2ZXJzaW9uIG9mIHRoZSB7QHNlZSB0b09iamVjdH0gbWV0aG9kLlxuICogQHBhcmFtIHtib29sZWFufHVuZGVmaW5lZH0gaW5jbHVkZUluc3RhbmNlIERlcHJlY2F0ZWQuIFdoZXRoZXIgdG8gaW5jbHVkZVxuICogICAgIHRoZSBKU1BCIGluc3RhbmNlIGZvciB0cmFuc2l0aW9uYWwgc295IHByb3RvIHN1cHBvcnQ6XG4gKiAgICAgaHR0cDovL2dvdG8vc295LXBhcmFtLW1pZ3JhdGlvblxuICogQHBhcmFtIHshcHJvdG8uYmFzZS52MS5Db250cm9sUG9pbnRTaW1wbGV9IG1zZyBUaGUgbXNnIGluc3RhbmNlIHRvIHRyYW5zZm9ybS5cbiAqIEByZXR1cm4geyFPYmplY3R9XG4gKiBAc3VwcHJlc3Mge3VudXNlZExvY2FsVmFyaWFibGVzfSBmIGlzIG9ubHkgdXNlZCBmb3IgbmVzdGVkIG1lc3NhZ2VzXG4gKi9cbnByb3RvLmJhc2UudjEuQ29udHJvbFBvaW50U2ltcGxlLnRvT2JqZWN0ID0gZnVuY3Rpb24oaW5jbHVkZUluc3RhbmNlLCBtc2cpIHtcbiAgdmFyIGYsIG9iaiA9IHtcbiAgICBpZDoganNwYi5NZXNzYWdlLmdldEZpZWxkV2l0aERlZmF1bHQobXNnLCAxLCAwKSxcbiAgICBuZmNJZExpc3RMaXN0OiAoZiA9IGpzcGIuTWVzc2FnZS5nZXRSZXBlYXRlZEZpZWxkKG1zZywgMikpID09IG51bGwgPyB1bmRlZmluZWQgOiBmLFxuICAgIHNuOiBqc3BiLk1lc3NhZ2UuZ2V0RmllbGRXaXRoRGVmYXVsdChtc2csIDMsIFwiXCIpXG4gIH07XG5cbiAgaWYgKGluY2x1ZGVJbnN0YW5jZSkge1xuICAgIG9iai4kanNwYk1lc3NhZ2VJbnN0YW5jZSA9IG1zZztcbiAgfVxuICByZXR1cm4gb2JqO1xufTtcbn1cblxuXG4vKipcbiAqIERlc2VyaWFsaXplcyBiaW5hcnkgZGF0YSAoaW4gcHJvdG9idWYgd2lyZSBmb3JtYXQpLlxuICogQHBhcmFtIHtqc3BiLkJ5dGVTb3VyY2V9IGJ5dGVzIFRoZSBieXRlcyB0byBkZXNlcmlhbGl6ZS5cbiAqIEByZXR1cm4geyFwcm90by5iYXNlLnYxLkNvbnRyb2xQb2ludFNpbXBsZX1cbiAqL1xucHJvdG8uYmFzZS52MS5Db250cm9sUG9pbnRTaW1wbGUuZGVzZXJpYWxpemVCaW5hcnkgPSBmdW5jdGlvbihieXRlcykge1xuICB2YXIgcmVhZGVyID0gbmV3IGpzcGIuQmluYXJ5UmVhZGVyKGJ5dGVzKTtcbiAgdmFyIG1zZyA9IG5ldyBwcm90by5iYXNlLnYxLkNvbnRyb2xQb2ludFNpbXBsZTtcbiAgcmV0dXJuIHByb3RvLmJhc2UudjEuQ29udHJvbFBvaW50U2ltcGxlLmRlc2VyaWFsaXplQmluYXJ5RnJvbVJlYWRlcihtc2csIHJlYWRlcik7XG59O1xuXG5cbi8qKlxuICogRGVzZXJpYWxpemVzIGJpbmFyeSBkYXRhIChpbiBwcm90b2J1ZiB3aXJlIGZvcm1hdCkgZnJvbSB0aGVcbiAqIGdpdmVuIHJlYWRlciBpbnRvIHRoZSBnaXZlbiBtZXNzYWdlIG9iamVjdC5cbiAqIEBwYXJhbSB7IXByb3RvLmJhc2UudjEuQ29udHJvbFBvaW50U2ltcGxlfSBtc2cgVGhlIG1lc3NhZ2Ugb2JqZWN0IHRvIGRlc2VyaWFsaXplIGludG8uXG4gKiBAcGFyYW0geyFqc3BiLkJpbmFyeVJlYWRlcn0gcmVhZGVyIFRoZSBCaW5hcnlSZWFkZXIgdG8gdXNlLlxuICogQHJldHVybiB7IXByb3RvLmJhc2UudjEuQ29udHJvbFBvaW50U2ltcGxlfVxuICovXG5wcm90by5iYXNlLnYxLkNvbnRyb2xQb2ludFNpbXBsZS5kZXNlcmlhbGl6ZUJpbmFyeUZyb21SZWFkZXIgPSBmdW5jdGlvbihtc2csIHJlYWRlcikge1xuICB3aGlsZSAocmVhZGVyLm5leHRGaWVsZCgpKSB7XG4gICAgaWYgKHJlYWRlci5pc0VuZEdyb3VwKCkpIHtcbiAgICAgIGJyZWFrO1xuICAgIH1cbiAgICB2YXIgZmllbGQgPSByZWFkZXIuZ2V0RmllbGROdW1iZXIoKTtcbiAgICBzd2l0Y2ggKGZpZWxkKSB7XG4gICAgY2FzZSAxOlxuICAgICAgdmFyIHZhbHVlID0gLyoqIEB0eXBlIHtudW1iZXJ9ICovIChyZWFkZXIucmVhZEludDY0KCkpO1xuICAgICAgbXNnLnNldElkKHZhbHVlKTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgMjpcbiAgICAgIHZhciB2YWx1ZSA9IC8qKiBAdHlwZSB7c3RyaW5nfSAqLyAocmVhZGVyLnJlYWRTdHJpbmcoKSk7XG4gICAgICBtc2cuYWRkTmZjSWRMaXN0KHZhbHVlKTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgMzpcbiAgICAgIHZhciB2YWx1ZSA9IC8qKiBAdHlwZSB7c3RyaW5nfSAqLyAocmVhZGVyLnJlYWRTdHJpbmcoKSk7XG4gICAgICBtc2cuc2V0U24odmFsdWUpO1xuICAgICAgYnJlYWs7XG4gICAgZGVmYXVsdDpcbiAgICAgIHJlYWRlci5za2lwRmllbGQoKTtcbiAgICAgIGJyZWFrO1xuICAgIH1cbiAgfVxuICByZXR1cm4gbXNnO1xufTtcblxuXG4vKipcbiAqIFNlcmlhbGl6ZXMgdGhlIG1lc3NhZ2UgdG8gYmluYXJ5IGRhdGEgKGluIHByb3RvYnVmIHdpcmUgZm9ybWF0KS5cbiAqIEByZXR1cm4geyFVaW50OEFycmF5fVxuICovXG5wcm90by5iYXNlLnYxLkNvbnRyb2xQb2ludFNpbXBsZS5wcm90b3R5cGUuc2VyaWFsaXplQmluYXJ5ID0gZnVuY3Rpb24oKSB7XG4gIHZhciB3cml0ZXIgPSBuZXcganNwYi5CaW5hcnlXcml0ZXIoKTtcbiAgcHJvdG8uYmFzZS52MS5Db250cm9sUG9pbnRTaW1wbGUuc2VyaWFsaXplQmluYXJ5VG9Xcml0ZXIodGhpcywgd3JpdGVyKTtcbiAgcmV0dXJuIHdyaXRlci5nZXRSZXN1bHRCdWZmZXIoKTtcbn07XG5cblxuLyoqXG4gKiBTZXJpYWxpemVzIHRoZSBnaXZlbiBtZXNzYWdlIHRvIGJpbmFyeSBkYXRhIChpbiBwcm90b2J1ZiB3aXJlXG4gKiBmb3JtYXQpLCB3cml0aW5nIHRvIHRoZSBnaXZlbiBCaW5hcnlXcml0ZXIuXG4gKiBAcGFyYW0geyFwcm90by5iYXNlLnYxLkNvbnRyb2xQb2ludFNpbXBsZX0gbWVzc2FnZVxuICogQHBhcmFtIHshanNwYi5CaW5hcnlXcml0ZXJ9IHdyaXRlclxuICogQHN1cHByZXNzIHt1bnVzZWRMb2NhbFZhcmlhYmxlc30gZiBpcyBvbmx5IHVzZWQgZm9yIG5lc3RlZCBtZXNzYWdlc1xuICovXG5wcm90by5iYXNlLnYxLkNvbnRyb2xQb2ludFNpbXBsZS5zZXJpYWxpemVCaW5hcnlUb1dyaXRlciA9IGZ1bmN0aW9uKG1lc3NhZ2UsIHdyaXRlcikge1xuICB2YXIgZiA9IHVuZGVmaW5lZDtcbiAgZiA9IG1lc3NhZ2UuZ2V0SWQoKTtcbiAgaWYgKGYgIT09IDApIHtcbiAgICB3cml0ZXIud3JpdGVJbnQ2NChcbiAgICAgIDEsXG4gICAgICBmXG4gICAgKTtcbiAgfVxuICBmID0gbWVzc2FnZS5nZXROZmNJZExpc3RMaXN0KCk7XG4gIGlmIChmLmxlbmd0aCA+IDApIHtcbiAgICB3cml0ZXIud3JpdGVSZXBlYXRlZFN0cmluZyhcbiAgICAgIDIsXG4gICAgICBmXG4gICAgKTtcbiAgfVxuICBmID0gbWVzc2FnZS5nZXRTbigpO1xuICBpZiAoZi5sZW5ndGggPiAwKSB7XG4gICAgd3JpdGVyLndyaXRlU3RyaW5nKFxuICAgICAgMyxcbiAgICAgIGZcbiAgICApO1xuICB9XG59O1xuXG5cbi8qKlxuICogb3B0aW9uYWwgaW50NjQgaWQgPSAxO1xuICogQHJldHVybiB7bnVtYmVyfVxuICovXG5wcm90by5iYXNlLnYxLkNvbnRyb2xQb2ludFNpbXBsZS5wcm90b3R5cGUuZ2V0SWQgPSBmdW5jdGlvbigpIHtcbiAgcmV0dXJuIC8qKiBAdHlwZSB7bnVtYmVyfSAqLyAoanNwYi5NZXNzYWdlLmdldEZpZWxkV2l0aERlZmF1bHQodGhpcywgMSwgMCkpO1xufTtcblxuXG4vKipcbiAqIEBwYXJhbSB7bnVtYmVyfSB2YWx1ZVxuICogQHJldHVybiB7IXByb3RvLmJhc2UudjEuQ29udHJvbFBvaW50U2ltcGxlfSByZXR1cm5zIHRoaXNcbiAqL1xucHJvdG8uYmFzZS52MS5Db250cm9sUG9pbnRTaW1wbGUucHJvdG90eXBlLnNldElkID0gZnVuY3Rpb24odmFsdWUpIHtcbiAgcmV0dXJuIGpzcGIuTWVzc2FnZS5zZXRQcm90bzNJbnRGaWVsZCh0aGlzLCAxLCB2YWx1ZSk7XG59O1xuXG5cbi8qKlxuICogcmVwZWF0ZWQgc3RyaW5nIG5mY19pZF9saXN0ID0gMjtcbiAqIEByZXR1cm4geyFBcnJheTxzdHJpbmc+fVxuICovXG5wcm90by5iYXNlLnYxLkNvbnRyb2xQb2ludFNpbXBsZS5wcm90b3R5cGUuZ2V0TmZjSWRMaXN0TGlzdCA9IGZ1bmN0aW9uKCkge1xuICByZXR1cm4gLyoqIEB0eXBlIHshQXJyYXk8c3RyaW5nPn0gKi8gKGpzcGIuTWVzc2FnZS5nZXRSZXBlYXRlZEZpZWxkKHRoaXMsIDIpKTtcbn07XG5cblxuLyoqXG4gKiBAcGFyYW0geyFBcnJheTxzdHJpbmc+fSB2YWx1ZVxuICogQHJldHVybiB7IXByb3RvLmJhc2UudjEuQ29udHJvbFBvaW50U2ltcGxlfSByZXR1cm5zIHRoaXNcbiAqL1xucHJvdG8uYmFzZS52MS5Db250cm9sUG9pbnRTaW1wbGUucHJvdG90eXBlLnNldE5mY0lkTGlzdExpc3QgPSBmdW5jdGlvbih2YWx1ZSkge1xuICByZXR1cm4ganNwYi5NZXNzYWdlLnNldEZpZWxkKHRoaXMsIDIsIHZhbHVlIHx8IFtdKTtcbn07XG5cblxuLyoqXG4gKiBAcGFyYW0ge3N0cmluZ30gdmFsdWVcbiAqIEBwYXJhbSB7bnVtYmVyPX0gb3B0X2luZGV4XG4gKiBAcmV0dXJuIHshcHJvdG8uYmFzZS52MS5Db250cm9sUG9pbnRTaW1wbGV9IHJldHVybnMgdGhpc1xuICovXG5wcm90by5iYXNlLnYxLkNvbnRyb2xQb2ludFNpbXBsZS5wcm90b3R5cGUuYWRkTmZjSWRMaXN0ID0gZnVuY3Rpb24odmFsdWUsIG9wdF9pbmRleCkge1xuICByZXR1cm4ganNwYi5NZXNzYWdlLmFkZFRvUmVwZWF0ZWRGaWVsZCh0aGlzLCAyLCB2YWx1ZSwgb3B0X2luZGV4KTtcbn07XG5cblxuLyoqXG4gKiBDbGVhcnMgdGhlIGxpc3QgbWFraW5nIGl0IGVtcHR5IGJ1dCBub24tbnVsbC5cbiAqIEByZXR1cm4geyFwcm90by5iYXNlLnYxLkNvbnRyb2xQb2ludFNpbXBsZX0gcmV0dXJucyB0aGlzXG4gKi9cbnByb3RvLmJhc2UudjEuQ29udHJvbFBvaW50U2ltcGxlLnByb3RvdHlwZS5jbGVhck5mY0lkTGlzdExpc3QgPSBmdW5jdGlvbigpIHtcbiAgcmV0dXJuIHRoaXMuc2V0TmZjSWRMaXN0TGlzdChbXSk7XG59O1xuXG5cbi8qKlxuICogb3B0aW9uYWwgc3RyaW5nIHNuID0gMztcbiAqIEByZXR1cm4ge3N0cmluZ31cbiAqL1xucHJvdG8uYmFzZS52MS5Db250cm9sUG9pbnRTaW1wbGUucHJvdG90eXBlLmdldFNuID0gZnVuY3Rpb24oKSB7XG4gIHJldHVybiAvKiogQHR5cGUge3N0cmluZ30gKi8gKGpzcGIuTWVzc2FnZS5nZXRGaWVsZFdpdGhEZWZhdWx0KHRoaXMsIDMsIFwiXCIpKTtcbn07XG5cblxuLyoqXG4gKiBAcGFyYW0ge3N0cmluZ30gdmFsdWVcbiAqIEByZXR1cm4geyFwcm90by5iYXNlLnYxLkNvbnRyb2xQb2ludFNpbXBsZX0gcmV0dXJucyB0aGlzXG4gKi9cbnByb3RvLmJhc2UudjEuQ29udHJvbFBvaW50U2ltcGxlLnByb3RvdHlwZS5zZXRTbiA9IGZ1bmN0aW9uKHZhbHVlKSB7XG4gIHJldHVybiBqc3BiLk1lc3NhZ2Uuc2V0UHJvdG8zU3RyaW5nRmllbGQodGhpcywgMywgdmFsdWUpO1xufTtcblxuXG4vKipcbiAqIEBlbnVtIHtudW1iZXJ9XG4gKi9cbnByb3RvLmJhc2UudjEuRXJyb3JDb2RlID0ge1xuICBPSzogMCxcbiAgVE9LRU5FWFBJUkU6IDEwMDAsXG4gIFVTRVJCQU46IDEwMDEsXG4gIFZGQ09ERUVYUElSRTogMTAwMixcbiAgU01TU0VOREZBSUw6IDEwMDMsXG4gIFVTRVJTVEFUVVNFUlI6IDEwMDgsXG4gIFNUQVRVU0VSUjogMTAwOSxcbiAgUEhPTkVOT1RFWElTVDogMjAwMSxcbiAgVU5LTk9XTkVSUjogMjAwMixcbiAgUEFSQU1FUlI6IDUwMDAsXG4gIEhFQURTT1VSQ0VFUlI6IDUwMDEsXG4gIERBVEFCQVNFOiA5MDAwLFxuICBOT1JFQ09SRDogOTAwMVxufTtcblxuLyoqXG4gKiBAZW51bSB7bnVtYmVyfVxuICovXG5wcm90by5iYXNlLnYxLlNob3BUeXBlID0ge1xuICBVTktOT1dTSE9QOiAwLFxuICBQQVJLU0hPUDogMSxcbiAgSVBTSE9QOiAyLFxuICBBRE1JTlNIT1A6IDNcbn07XG5cbi8qKlxuICogQGVudW0ge251bWJlcn1cbiAqL1xucHJvdG8uYmFzZS52MS5Vc2VyVHlwZSA9IHtcbiAgVU5ERUZJTkU6IDAsXG4gIEFQUFVTRVI6IDEsXG4gIFBBUktBRE1JTjogMixcbiAgSVBBRE1JTjogMyxcbiAgU1lTQURNSU46IDRcbn07XG5cbi8qKlxuICogQGVudW0ge251bWJlcn1cbiAqL1xucHJvdG8uYmFzZS52MS5Mb2dpblNvdXJjZSA9IHtcbiAgVU5ERUY6IDAsXG4gIFVTRVJBUFA6IDEsXG4gIFdFQkFETUlOOiAyLFxuICBTSE9QQVBQOiAzXG59O1xuXG4vKipcbiAqIEBlbnVtIHtudW1iZXJ9XG4gKi9cbnByb3RvLmJhc2UudjEuU21zVHlwZSA9IHtcbiAgVU5LTk9XOiAwLFxuICBMT0dJTjogMSxcbiAgU0lHTlVQOiAyXG59O1xuXG4vKipcbiAqIEBlbnVtIHtudW1iZXJ9XG4gKi9cbnByb3RvLmJhc2UudjEuUHJvamVjdENvbnRlbnRUeXBlID0ge1xuICBURVhUOiAwLFxuICBIVE1MOiAxXG59O1xuXG4vKipcbiAqIEBlbnVtIHtudW1iZXJ9XG4gKi9cbnByb3RvLmJhc2UudjEuQ3JpdGVyaW9uVHlwZSA9IHtcbiAgQ1JVTktOT1c6IDAsXG4gIENST1JERVI6IDEsXG4gIENSTlVNOiAyXG59O1xuXG4vKipcbiAqIEBlbnVtIHtudW1iZXJ9XG4gKi9cbnByb3RvLmJhc2UudjEuQ1R5cGUgPSB7XG4gIFVOS05PV1RZUEU6IDAsXG4gIEJFR0lOVFlQRTogMSxcbiAgTUlERExFVFlQRTogMixcbiAgRU5EVFlQRTogM1xufTtcblxuLyoqXG4gKiBAZW51bSB7bnVtYmVyfVxuICovXG5wcm90by5iYXNlLnYxLlN0YXR1c1R5cGUgPSB7XG4gIFVOS05PV1NUQVRVUzogMCxcbiAgTk9STUFMU1RBVFVTOiAxLFxuICBESVNBQkxFRFNUQVRVUzogOCxcbiAgREVMRVRFU1RBVFVTOiA5XG59O1xuXG4vKipcbiAqIEBlbnVtIHtudW1iZXJ9XG4gKi9cbnByb3RvLmJhc2UudjEuSHJCYW5kVHlwZSA9IHtcbiAgVU5LTk9XSFJCQU5EOiAwLFxuICBVU0VIUkJBTkQ6IDEsXG4gIE5PVFVTRUhSQkFORDogMlxufTtcblxuZ29vZy5vYmplY3QuZXh0ZW5kKGV4cG9ydHMsIHByb3RvLmJhc2UudjEpO1xuIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///38\n");
- /***/ }),
- /* 39 */
- /*!******************************************************************************************!*\
- !*** D:/Work2/Orienteering/TrackOffical/node_modules/google-protobuf/google-protobuf.js ***!
- \******************************************************************************************/
- /*! no static exports found */
- /***/ (function(module, exports, __webpack_require__) {
- /* WEBPACK VAR INJECTION */(function(global) {var _typeof = __webpack_require__(/*! @babel/runtime/helpers/typeof */ 4);
- /*
- Copyright The Closure Library Authors.
- SPDX-License-Identifier: Apache-2.0
- */
- var $jscomp = $jscomp || {};
- $jscomp.scope = {};
- $jscomp.findInternal = function (a, b, c) {
- a instanceof String && (a = String(a));
- for (var d = a.length, e = 0; e < d; e++) {
- var f = a[e];
- if (b.call(c, f, e, a)) return {
- i: e,
- v: f
- };
- }
- return {
- i: -1,
- v: void 0
- };
- };
- $jscomp.ASSUME_ES5 = !1;
- $jscomp.ASSUME_NO_NATIVE_MAP = !1;
- $jscomp.ASSUME_NO_NATIVE_SET = !1;
- $jscomp.SIMPLE_FROUND_POLYFILL = !1;
- $jscomp.defineProperty = $jscomp.ASSUME_ES5 || "function" == typeof Object.defineProperties ? Object.defineProperty : function (a, b, c) {
- a != Array.prototype && a != Object.prototype && (a[b] = c.value);
- };
- $jscomp.getGlobal = function (a) {
- return "undefined" != typeof window && window === a ? a : "undefined" != typeof global && null != global ? global : a;
- };
- $jscomp.global = $jscomp.getGlobal(this);
- $jscomp.polyfill = function (a, b, c, d) {
- if (b) {
- c = $jscomp.global;
- a = a.split(".");
- for (d = 0; d < a.length - 1; d++) {
- var e = a[d];
- e in c || (c[e] = {});
- c = c[e];
- }
- a = a[a.length - 1];
- d = c[a];
- b = b(d);
- b != d && null != b && $jscomp.defineProperty(c, a, {
- configurable: !0,
- writable: !0,
- value: b
- });
- }
- };
- $jscomp.polyfill("Array.prototype.findIndex", function (a) {
- return a ? a : function (a, c) {
- return $jscomp.findInternal(this, a, c).i;
- };
- }, "es6", "es3");
- $jscomp.checkStringArgs = function (a, b, c) {
- if (null == a) throw new TypeError("The 'this' value for String.prototype." + c + " must not be null or undefined");
- if (b instanceof RegExp) throw new TypeError("First argument to String.prototype." + c + " must not be a regular expression");
- return a + "";
- };
- $jscomp.polyfill("String.prototype.endsWith", function (a) {
- return a ? a : function (a, c) {
- var b = $jscomp.checkStringArgs(this, a, "endsWith");
- a += "";
- void 0 === c && (c = b.length);
- c = Math.max(0, Math.min(c | 0, b.length));
- for (var e = a.length; 0 < e && 0 < c;) {
- if (b[--c] != a[--e]) return !1;
- }
- return 0 >= e;
- };
- }, "es6", "es3");
- $jscomp.polyfill("Array.prototype.find", function (a) {
- return a ? a : function (a, c) {
- return $jscomp.findInternal(this, a, c).v;
- };
- }, "es6", "es3");
- $jscomp.polyfill("String.prototype.startsWith", function (a) {
- return a ? a : function (a, c) {
- var b = $jscomp.checkStringArgs(this, a, "startsWith");
- a += "";
- var e = b.length,
- f = a.length;
- c = Math.max(0, Math.min(c | 0, b.length));
- for (var g = 0; g < f && c < e;) {
- if (b[c++] != a[g++]) return !1;
- }
- return g >= f;
- };
- }, "es6", "es3");
- $jscomp.polyfill("String.prototype.repeat", function (a) {
- return a ? a : function (a) {
- var b = $jscomp.checkStringArgs(this, null, "repeat");
- if (0 > a || 1342177279 < a) throw new RangeError("Invalid count value");
- a |= 0;
- for (var d = ""; a;) {
- if (a & 1 && (d += b), a >>>= 1) b += b;
- }
- return d;
- };
- }, "es6", "es3");
- var COMPILED = !0,
- goog = goog || {};
- goog.global = this || self;
- goog.exportPath_ = function (a, b, c) {
- a = a.split(".");
- c = c || goog.global;
- a[0] in c || "undefined" == typeof c.execScript || c.execScript("var " + a[0]);
- for (var d; a.length && (d = a.shift());) {
- a.length || void 0 === b ? c = c[d] && c[d] !== Object.prototype[d] ? c[d] : c[d] = {} : c[d] = b;
- }
- };
- goog.define = function (a, b) {
- if (!COMPILED) {
- var c = goog.global.CLOSURE_UNCOMPILED_DEFINES,
- d = goog.global.CLOSURE_DEFINES;
- c && void 0 === c.nodeType && Object.prototype.hasOwnProperty.call(c, a) ? b = c[a] : d && void 0 === d.nodeType && Object.prototype.hasOwnProperty.call(d, a) && (b = d[a]);
- }
- return b;
- };
- goog.FEATURESET_YEAR = 2012;
- goog.DEBUG = !0;
- goog.LOCALE = "en";
- goog.TRUSTED_SITE = !0;
- goog.STRICT_MODE_COMPATIBLE = !1;
- goog.DISALLOW_TEST_ONLY_CODE = COMPILED && !goog.DEBUG;
- goog.ENABLE_CHROME_APP_SAFE_SCRIPT_LOADING = !1;
- goog.provide = function (a) {
- if (goog.isInModuleLoader_()) throw Error("goog.provide cannot be used within a module.");
- if (!COMPILED && goog.isProvided_(a)) throw Error('Namespace "' + a + '" already declared.');
- goog.constructNamespace_(a);
- };
- goog.constructNamespace_ = function (a, b) {
- if (!COMPILED) {
- delete goog.implicitNamespaces_[a];
- for (var c = a; (c = c.substring(0, c.lastIndexOf("."))) && !goog.getObjectByName(c);) {
- goog.implicitNamespaces_[c] = !0;
- }
- }
- goog.exportPath_(a, b);
- };
- goog.getScriptNonce = function (a) {
- if (a && a != goog.global) return goog.getScriptNonce_(a.document);
- null === goog.cspNonce_ && (goog.cspNonce_ = goog.getScriptNonce_(goog.global.document));
- return goog.cspNonce_;
- };
- goog.NONCE_PATTERN_ = /^[\w+/_-]+[=]{0,2}$/;
- goog.cspNonce_ = null;
- goog.getScriptNonce_ = function (a) {
- return (a = a.querySelector && a.querySelector("script[nonce]")) && (a = a.nonce || a.getAttribute("nonce")) && goog.NONCE_PATTERN_.test(a) ? a : "";
- };
- goog.VALID_MODULE_RE_ = /^[a-zA-Z_$][a-zA-Z0-9._$]*$/;
- goog.module = function (a) {
- if ("string" !== typeof a || !a || -1 == a.search(goog.VALID_MODULE_RE_)) throw Error("Invalid module identifier");
- if (!goog.isInGoogModuleLoader_()) throw Error("Module " + a + " has been loaded incorrectly. Note, modules cannot be loaded as normal scripts. They require some kind of pre-processing step. You're likely trying to load a module via a script tag or as a part of a concatenated bundle without rewriting the module. For more info see: https://github.com/google/closure-library/wiki/goog.module:-an-ES6-module-like-alternative-to-goog.provide.");
- if (goog.moduleLoaderState_.moduleName) throw Error("goog.module may only be called once per module.");
- goog.moduleLoaderState_.moduleName = a;
- if (!COMPILED) {
- if (goog.isProvided_(a)) throw Error('Namespace "' + a + '" already declared.');
- delete goog.implicitNamespaces_[a];
- }
- };
- goog.module.get = function (a) {
- return goog.module.getInternal_(a);
- };
- goog.module.getInternal_ = function (a) {
- if (!COMPILED) {
- if (a in goog.loadedModules_) return goog.loadedModules_[a].exports;
- if (!goog.implicitNamespaces_[a]) return a = goog.getObjectByName(a), null != a ? a : null;
- }
- return null;
- };
- goog.ModuleType = {
- ES6: "es6",
- GOOG: "goog"
- };
- goog.moduleLoaderState_ = null;
- goog.isInModuleLoader_ = function () {
- return goog.isInGoogModuleLoader_() || goog.isInEs6ModuleLoader_();
- };
- goog.isInGoogModuleLoader_ = function () {
- return !!goog.moduleLoaderState_ && goog.moduleLoaderState_.type == goog.ModuleType.GOOG;
- };
- goog.isInEs6ModuleLoader_ = function () {
- if (goog.moduleLoaderState_ && goog.moduleLoaderState_.type == goog.ModuleType.ES6) return !0;
- var a = goog.global.$jscomp;
- return a ? "function" != typeof a.getCurrentModulePath ? !1 : !!a.getCurrentModulePath() : !1;
- };
- goog.module.declareLegacyNamespace = function () {
- if (!COMPILED && !goog.isInGoogModuleLoader_()) throw Error("goog.module.declareLegacyNamespace must be called from within a goog.module");
- if (!COMPILED && !goog.moduleLoaderState_.moduleName) throw Error("goog.module must be called prior to goog.module.declareLegacyNamespace.");
- goog.moduleLoaderState_.declareLegacyNamespace = !0;
- };
- goog.declareModuleId = function (a) {
- if (!COMPILED) {
- if (!goog.isInEs6ModuleLoader_()) throw Error("goog.declareModuleId may only be called from within an ES6 module");
- if (goog.moduleLoaderState_ && goog.moduleLoaderState_.moduleName) throw Error("goog.declareModuleId may only be called once per module.");
- if (a in goog.loadedModules_) throw Error('Module with namespace "' + a + '" already exists.');
- }
- if (goog.moduleLoaderState_) goog.moduleLoaderState_.moduleName = a;else {
- var b = goog.global.$jscomp;
- if (!b || "function" != typeof b.getCurrentModulePath) throw Error('Module with namespace "' + a + '" has been loaded incorrectly.');
- b = b.require(b.getCurrentModulePath());
- goog.loadedModules_[a] = {
- exports: b,
- type: goog.ModuleType.ES6,
- moduleId: a
- };
- }
- };
- goog.setTestOnly = function (a) {
- if (goog.DISALLOW_TEST_ONLY_CODE) throw a = a || "", Error("Importing test-only code into non-debug environment" + (a ? ": " + a : "."));
- };
- goog.forwardDeclare = function (a) {};
- COMPILED || (goog.isProvided_ = function (a) {
- return a in goog.loadedModules_ || !goog.implicitNamespaces_[a] && null != goog.getObjectByName(a);
- }, goog.implicitNamespaces_ = {
- "goog.module": !0
- });
- goog.getObjectByName = function (a, b) {
- a = a.split(".");
- b = b || goog.global;
- for (var c = 0; c < a.length; c++) {
- if (b = b[a[c]], null == b) return null;
- }
- return b;
- };
- goog.globalize = function (a, b) {
- b = b || goog.global;
- for (var c in a) {
- b[c] = a[c];
- }
- };
- goog.addDependency = function (a, b, c, d) {
- !COMPILED && goog.DEPENDENCIES_ENABLED && goog.debugLoader_.addDependency(a, b, c, d);
- };
- goog.ENABLE_DEBUG_LOADER = !0;
- goog.logToConsole_ = function (a) {
- goog.global.console && goog.global.console.error(a);
- };
- goog.require = function (a) {
- if (!COMPILED) {
- goog.ENABLE_DEBUG_LOADER && goog.debugLoader_.requested(a);
- if (goog.isProvided_(a)) {
- if (goog.isInModuleLoader_()) return goog.module.getInternal_(a);
- } else if (goog.ENABLE_DEBUG_LOADER) {
- var b = goog.moduleLoaderState_;
- goog.moduleLoaderState_ = null;
- try {
- goog.debugLoader_.load_(a);
- } finally {
- goog.moduleLoaderState_ = b;
- }
- }
- return null;
- }
- };
- goog.requireType = function (a) {
- return {};
- };
- goog.basePath = "";
- goog.nullFunction = function () {};
- goog.abstractMethod = function () {
- throw Error("unimplemented abstract method");
- };
- goog.addSingletonGetter = function (a) {
- a.instance_ = void 0;
- a.getInstance = function () {
- if (a.instance_) return a.instance_;
- goog.DEBUG && (goog.instantiatedSingletons_[goog.instantiatedSingletons_.length] = a);
- return a.instance_ = new a();
- };
- };
- goog.instantiatedSingletons_ = [];
- goog.LOAD_MODULE_USING_EVAL = !0;
- goog.SEAL_MODULE_EXPORTS = goog.DEBUG;
- goog.loadedModules_ = {};
- goog.DEPENDENCIES_ENABLED = !COMPILED && goog.ENABLE_DEBUG_LOADER;
- goog.TRANSPILE = "detect";
- goog.ASSUME_ES_MODULES_TRANSPILED = !1;
- goog.TRANSPILE_TO_LANGUAGE = "";
- goog.TRANSPILER = "transpile.js";
- goog.hasBadLetScoping = null;
- goog.useSafari10Workaround = function () {
- if (null == goog.hasBadLetScoping) {
- try {
- var a = !eval('"use strict";let x = 1; function f() { return typeof x; };f() == "number";');
- } catch (b) {
- a = !1;
- }
- goog.hasBadLetScoping = a;
- }
- return goog.hasBadLetScoping;
- };
- goog.workaroundSafari10EvalBug = function (a) {
- return "(function(){" + a + "\n;})();\n";
- };
- goog.loadModule = function (a) {
- var b = goog.moduleLoaderState_;
- try {
- goog.moduleLoaderState_ = {
- moduleName: "",
- declareLegacyNamespace: !1,
- type: goog.ModuleType.GOOG
- };
- if (goog.isFunction(a)) var c = a.call(void 0, {});else if ("string" === typeof a) goog.useSafari10Workaround() && (a = goog.workaroundSafari10EvalBug(a)), c = goog.loadModuleFromSource_.call(void 0, a);else throw Error("Invalid module definition");
- var d = goog.moduleLoaderState_.moduleName;
- if ("string" === typeof d && d) goog.moduleLoaderState_.declareLegacyNamespace ? goog.constructNamespace_(d, c) : goog.SEAL_MODULE_EXPORTS && Object.seal && "object" == _typeof(c) && null != c && Object.seal(c), goog.loadedModules_[d] = {
- exports: c,
- type: goog.ModuleType.GOOG,
- moduleId: goog.moduleLoaderState_.moduleName
- };else throw Error('Invalid module name "' + d + '"');
- } finally {
- goog.moduleLoaderState_ = b;
- }
- };
- goog.loadModuleFromSource_ = function (a) {
- eval(a);
- return {};
- };
- goog.normalizePath_ = function (a) {
- a = a.split("/");
- for (var b = 0; b < a.length;) {
- "." == a[b] ? a.splice(b, 1) : b && ".." == a[b] && a[b - 1] && ".." != a[b - 1] ? a.splice(--b, 2) : b++;
- }
- return a.join("/");
- };
- goog.loadFileSync_ = function (a) {
- if (goog.global.CLOSURE_LOAD_FILE_SYNC) return goog.global.CLOSURE_LOAD_FILE_SYNC(a);
- try {
- var b = new goog.global.XMLHttpRequest();
- b.open("get", a, !1);
- b.send();
- return 0 == b.status || 200 == b.status ? b.responseText : null;
- } catch (c) {
- return null;
- }
- };
- goog.transpile_ = function (a, b, c) {
- var d = goog.global.$jscomp;
- d || (goog.global.$jscomp = d = {});
- var e = d.transpile;
- if (!e) {
- var f = goog.basePath + goog.TRANSPILER,
- g = goog.loadFileSync_(f);
- if (g) {
- (function () {
- (0, eval)(g + "\n//# sourceURL=" + f);
- }).call(goog.global);
- if (goog.global.$gwtExport && goog.global.$gwtExport.$jscomp && !goog.global.$gwtExport.$jscomp.transpile) throw Error('The transpiler did not properly export the "transpile" method. $gwtExport: ' + JSON.stringify(goog.global.$gwtExport));
- goog.global.$jscomp.transpile = goog.global.$gwtExport.$jscomp.transpile;
- d = goog.global.$jscomp;
- e = d.transpile;
- }
- }
- e || (e = d.transpile = function (a, b) {
- goog.logToConsole_(b + " requires transpilation but no transpiler was found.");
- return a;
- });
- return e(a, b, c);
- };
- goog.typeOf = function (a) {
- var b = _typeof(a);
- if ("object" == b) {
- if (a) {
- if (a instanceof Array) return "array";
- if (a instanceof Object) return b;
- var c = Object.prototype.toString.call(a);
- if ("[object Window]" == c) return "object";
- if ("[object Array]" == c || "number" == typeof a.length && "undefined" != typeof a.splice && "undefined" != typeof a.propertyIsEnumerable && !a.propertyIsEnumerable("splice")) return "array";
- if ("[object Function]" == c || "undefined" != typeof a.call && "undefined" != typeof a.propertyIsEnumerable && !a.propertyIsEnumerable("call")) return "function";
- } else return "null";
- } else if ("function" == b && "undefined" == typeof a.call) return "object";
- return b;
- };
- goog.isArray = function (a) {
- return "array" == goog.typeOf(a);
- };
- goog.isArrayLike = function (a) {
- var b = goog.typeOf(a);
- return "array" == b || "object" == b && "number" == typeof a.length;
- };
- goog.isDateLike = function (a) {
- return goog.isObject(a) && "function" == typeof a.getFullYear;
- };
- goog.isFunction = function (a) {
- return "function" == goog.typeOf(a);
- };
- goog.isObject = function (a) {
- var b = _typeof(a);
- return "object" == b && null != a || "function" == b;
- };
- goog.getUid = function (a) {
- return Object.prototype.hasOwnProperty.call(a, goog.UID_PROPERTY_) && a[goog.UID_PROPERTY_] || (a[goog.UID_PROPERTY_] = ++goog.uidCounter_);
- };
- goog.hasUid = function (a) {
- return !!a[goog.UID_PROPERTY_];
- };
- goog.removeUid = function (a) {
- null !== a && "removeAttribute" in a && a.removeAttribute(goog.UID_PROPERTY_);
- try {
- delete a[goog.UID_PROPERTY_];
- } catch (b) {}
- };
- goog.UID_PROPERTY_ = "closure_uid_" + (1E9 * Math.random() >>> 0);
- goog.uidCounter_ = 0;
- goog.getHashCode = goog.getUid;
- goog.removeHashCode = goog.removeUid;
- goog.cloneObject = function (a) {
- var b = goog.typeOf(a);
- if ("object" == b || "array" == b) {
- if ("function" === typeof a.clone) return a.clone();
- b = "array" == b ? [] : {};
- for (var c in a) {
- b[c] = goog.cloneObject(a[c]);
- }
- return b;
- }
- return a;
- };
- goog.bindNative_ = function (a, b, c) {
- return a.call.apply(a.bind, arguments);
- };
- goog.bindJs_ = function (a, b, c) {
- if (!a) throw Error();
- if (2 < arguments.length) {
- var d = Array.prototype.slice.call(arguments, 2);
- return function () {
- var c = Array.prototype.slice.call(arguments);
- Array.prototype.unshift.apply(c, d);
- return a.apply(b, c);
- };
- }
- return function () {
- return a.apply(b, arguments);
- };
- };
- goog.bind = function (a, b, c) {
- Function.prototype.bind && -1 != Function.prototype.bind.toString().indexOf("native code") ? goog.bind = goog.bindNative_ : goog.bind = goog.bindJs_;
- return goog.bind.apply(null, arguments);
- };
- goog.partial = function (a, b) {
- var c = Array.prototype.slice.call(arguments, 1);
- return function () {
- var b = c.slice();
- b.push.apply(b, arguments);
- return a.apply(this, b);
- };
- };
- goog.mixin = function (a, b) {
- for (var c in b) {
- a[c] = b[c];
- }
- };
- goog.now = goog.TRUSTED_SITE && Date.now || function () {
- return +new Date();
- };
- goog.globalEval = function (a) {
- if (goog.global.execScript) goog.global.execScript(a, "JavaScript");else if (goog.global.eval) {
- if (null == goog.evalWorksForGlobals_) {
- try {
- goog.global.eval("var _evalTest_ = 1;");
- } catch (d) {}
- if ("undefined" != typeof goog.global._evalTest_) {
- try {
- delete goog.global._evalTest_;
- } catch (d) {}
- goog.evalWorksForGlobals_ = !0;
- } else goog.evalWorksForGlobals_ = !1;
- }
- if (goog.evalWorksForGlobals_) goog.global.eval(a);else {
- var b = goog.global.document,
- c = b.createElement("script");
- c.type = "text/javascript";
- c.defer = !1;
- c.appendChild(b.createTextNode(a));
- b.head.appendChild(c);
- b.head.removeChild(c);
- }
- } else throw Error("goog.globalEval not available");
- };
- goog.evalWorksForGlobals_ = null;
- goog.getCssName = function (a, b) {
- if ("." == String(a).charAt(0)) throw Error('className passed in goog.getCssName must not start with ".". You passed: ' + a);
- var c = function c(a) {
- return goog.cssNameMapping_[a] || a;
- },
- d = function d(a) {
- a = a.split("-");
- for (var b = [], d = 0; d < a.length; d++) {
- b.push(c(a[d]));
- }
- return b.join("-");
- };
- d = goog.cssNameMapping_ ? "BY_WHOLE" == goog.cssNameMappingStyle_ ? c : d : function (a) {
- return a;
- };
- a = b ? a + "-" + d(b) : d(a);
- return goog.global.CLOSURE_CSS_NAME_MAP_FN ? goog.global.CLOSURE_CSS_NAME_MAP_FN(a) : a;
- };
- goog.setCssNameMapping = function (a, b) {
- goog.cssNameMapping_ = a;
- goog.cssNameMappingStyle_ = b;
- };
- !COMPILED && goog.global.CLOSURE_CSS_NAME_MAPPING && (goog.cssNameMapping_ = goog.global.CLOSURE_CSS_NAME_MAPPING);
- goog.getMsg = function (a, b, c) {
- c && c.html && (a = a.replace(/</g, "<"));
- b && (a = a.replace(/\{\$([^}]+)}/g, function (a, c) {
- return null != b && c in b ? b[c] : a;
- }));
- return a;
- };
- goog.getMsgWithFallback = function (a, b) {
- return a;
- };
- goog.exportSymbol = function (a, b, c) {
- goog.exportPath_(a, b, c);
- };
- goog.exportProperty = function (a, b, c) {
- a[b] = c;
- };
- goog.inherits = function (a, b) {
- function c() {}
- c.prototype = b.prototype;
- a.superClass_ = b.prototype;
- a.prototype = new c();
- a.prototype.constructor = a;
- a.base = function (a, c, f) {
- for (var d = Array(arguments.length - 2), e = 2; e < arguments.length; e++) {
- d[e - 2] = arguments[e];
- }
- return b.prototype[c].apply(a, d);
- };
- };
- goog.scope = function (a) {
- if (goog.isInModuleLoader_()) throw Error("goog.scope is not supported within a module.");
- a.call(goog.global);
- };
- COMPILED || (goog.global.COMPILED = COMPILED);
- goog.defineClass = function (a, b) {
- var c = b.constructor,
- d = b.statics;
- c && c != Object.prototype.constructor || (c = function c() {
- throw Error("cannot instantiate an interface (no constructor defined).");
- });
- c = goog.defineClass.createSealingConstructor_(c, a);
- a && goog.inherits(c, a);
- delete b.constructor;
- delete b.statics;
- goog.defineClass.applyProperties_(c.prototype, b);
- null != d && (d instanceof Function ? d(c) : goog.defineClass.applyProperties_(c, d));
- return c;
- };
- goog.defineClass.SEAL_CLASS_INSTANCES = goog.DEBUG;
- goog.defineClass.createSealingConstructor_ = function (a, b) {
- if (!goog.defineClass.SEAL_CLASS_INSTANCES) return a;
- var c = !goog.defineClass.isUnsealable_(b),
- d = function d() {
- var b = a.apply(this, arguments) || this;
- b[goog.UID_PROPERTY_] = b[goog.UID_PROPERTY_];
- this.constructor === d && c && Object.seal instanceof Function && Object.seal(b);
- return b;
- };
- return d;
- };
- goog.defineClass.isUnsealable_ = function (a) {
- return a && a.prototype && a.prototype[goog.UNSEALABLE_CONSTRUCTOR_PROPERTY_];
- };
- goog.defineClass.OBJECT_PROTOTYPE_FIELDS_ = "constructor hasOwnProperty isPrototypeOf propertyIsEnumerable toLocaleString toString valueOf".split(" ");
- goog.defineClass.applyProperties_ = function (a, b) {
- for (var c in b) {
- Object.prototype.hasOwnProperty.call(b, c) && (a[c] = b[c]);
- }
- for (var d = 0; d < goog.defineClass.OBJECT_PROTOTYPE_FIELDS_.length; d++) {
- c = goog.defineClass.OBJECT_PROTOTYPE_FIELDS_[d], Object.prototype.hasOwnProperty.call(b, c) && (a[c] = b[c]);
- }
- };
- goog.tagUnsealableClass = function (a) {
- !COMPILED && goog.defineClass.SEAL_CLASS_INSTANCES && (a.prototype[goog.UNSEALABLE_CONSTRUCTOR_PROPERTY_] = !0);
- };
- goog.UNSEALABLE_CONSTRUCTOR_PROPERTY_ = "goog_defineClass_legacy_unsealable";
- !COMPILED && goog.DEPENDENCIES_ENABLED && (goog.inHtmlDocument_ = function () {
- var a = goog.global.document;
- return null != a && "write" in a;
- }, goog.isDocumentLoading_ = function () {
- var a = goog.global.document;
- return a.attachEvent ? "complete" != a.readyState : "loading" == a.readyState;
- }, goog.findBasePath_ = function () {
- if (void 0 != goog.global.CLOSURE_BASE_PATH && "string" === typeof goog.global.CLOSURE_BASE_PATH) goog.basePath = goog.global.CLOSURE_BASE_PATH;else if (goog.inHtmlDocument_()) {
- var a = goog.global.document,
- b = a.currentScript;
- a = b ? [b] : a.getElementsByTagName("SCRIPT");
- for (b = a.length - 1; 0 <= b; --b) {
- var c = a[b].src,
- d = c.lastIndexOf("?");
- d = -1 == d ? c.length : d;
- if ("base.js" == c.substr(d - 7, 7)) {
- goog.basePath = c.substr(0, d - 7);
- break;
- }
- }
- }
- }, goog.findBasePath_(), goog.Transpiler = function () {
- this.requiresTranspilation_ = null;
- this.transpilationTarget_ = goog.TRANSPILE_TO_LANGUAGE;
- }, goog.Transpiler.prototype.createRequiresTranspilation_ = function () {
- function a(a, b) {
- e ? d[a] = !0 : b() ? (c = a, d[a] = !1) : e = d[a] = !0;
- }
- function b(a) {
- try {
- return !!eval(a);
- } catch (h) {
- return !1;
- }
- }
- var c = "es3",
- d = {
- es3: !1
- },
- e = !1,
- f = goog.global.navigator && goog.global.navigator.userAgent ? goog.global.navigator.userAgent : "";
- a("es5", function () {
- return b("[1,].length==1");
- });
- a("es6", function () {
- return f.match(/Edge\/(\d+)(\.\d)*/i) ? !1 : b('(()=>{"use strict";class X{constructor(){if(new.target!=String)throw 1;this.x=42}}let q=Reflect.construct(X,[],String);if(q.x!=42||!(q instanceof String))throw 1;for(const a of[2,3]){if(a==2)continue;function f(z={a}){let a=0;return z.a}{function f(){return 0;}}return f()==3}})()');
- });
- a("es7", function () {
- return b("2 ** 2 == 4");
- });
- a("es8", function () {
- return b("async () => 1, true");
- });
- a("es9", function () {
- return b("({...rest} = {}), true");
- });
- a("es_next", function () {
- return !1;
- });
- return {
- target: c,
- map: d
- };
- }, goog.Transpiler.prototype.needsTranspile = function (a, b) {
- if ("always" == goog.TRANSPILE) return !0;
- if ("never" == goog.TRANSPILE) return !1;
- if (!this.requiresTranspilation_) {
- var c = this.createRequiresTranspilation_();
- this.requiresTranspilation_ = c.map;
- this.transpilationTarget_ = this.transpilationTarget_ || c.target;
- }
- if (a in this.requiresTranspilation_) return this.requiresTranspilation_[a] ? !0 : !goog.inHtmlDocument_() || "es6" != b || "noModule" in goog.global.document.createElement("script") ? !1 : !0;
- throw Error("Unknown language mode: " + a);
- }, goog.Transpiler.prototype.transpile = function (a, b) {
- return goog.transpile_(a, b, this.transpilationTarget_);
- }, goog.transpiler_ = new goog.Transpiler(), goog.protectScriptTag_ = function (a) {
- return a.replace(/<\/(SCRIPT)/ig, "\\x3c/$1");
- }, goog.DebugLoader_ = function () {
- this.dependencies_ = {};
- this.idToPath_ = {};
- this.written_ = {};
- this.loadingDeps_ = [];
- this.depsToLoad_ = [];
- this.paused_ = !1;
- this.factory_ = new goog.DependencyFactory(goog.transpiler_);
- this.deferredCallbacks_ = {};
- this.deferredQueue_ = [];
- }, goog.DebugLoader_.prototype.bootstrap = function (a, b) {
- function c() {
- d && (goog.global.setTimeout(d, 0), d = null);
- }
- var d = b;
- if (a.length) {
- b = [];
- for (var e = 0; e < a.length; e++) {
- var f = this.getPathFromDeps_(a[e]);
- if (!f) throw Error("Unregonized namespace: " + a[e]);
- b.push(this.dependencies_[f]);
- }
- f = goog.require;
- var g = 0;
- for (e = 0; e < a.length; e++) {
- f(a[e]), b[e].onLoad(function () {
- ++g == a.length && c();
- });
- }
- } else c();
- }, goog.DebugLoader_.prototype.loadClosureDeps = function () {
- this.depsToLoad_.push(this.factory_.createDependency(goog.normalizePath_(goog.basePath + "deps.js"), "deps.js", [], [], {}, !1));
- this.loadDeps_();
- }, goog.DebugLoader_.prototype.requested = function (a, b) {
- (a = this.getPathFromDeps_(a)) && (b || this.areDepsLoaded_(this.dependencies_[a].requires)) && (b = this.deferredCallbacks_[a]) && (delete this.deferredCallbacks_[a], b());
- }, goog.DebugLoader_.prototype.setDependencyFactory = function (a) {
- this.factory_ = a;
- }, goog.DebugLoader_.prototype.load_ = function (a) {
- if (this.getPathFromDeps_(a)) {
- var b = this,
- c = [],
- d = function d(a) {
- var e = b.getPathFromDeps_(a);
- if (!e) throw Error("Bad dependency path or symbol: " + a);
- if (!b.written_[e]) {
- b.written_[e] = !0;
- a = b.dependencies_[e];
- for (e = 0; e < a.requires.length; e++) {
- goog.isProvided_(a.requires[e]) || d(a.requires[e]);
- }
- c.push(a);
- }
- };
- d(a);
- a = !!this.depsToLoad_.length;
- this.depsToLoad_ = this.depsToLoad_.concat(c);
- this.paused_ || a || this.loadDeps_();
- } else throw a = "goog.require could not find: " + a, goog.logToConsole_(a), Error(a);
- }, goog.DebugLoader_.prototype.loadDeps_ = function () {
- for (var a = this, b = this.paused_; this.depsToLoad_.length && !b;) {
- (function () {
- var c = !1,
- d = a.depsToLoad_.shift(),
- e = !1;
- a.loading_(d);
- var f = {
- pause: function pause() {
- if (c) throw Error("Cannot call pause after the call to load.");
- b = !0;
- },
- resume: function resume() {
- c ? a.resume_() : b = !1;
- },
- loaded: function loaded() {
- if (e) throw Error("Double call to loaded.");
- e = !0;
- a.loaded_(d);
- },
- pending: function pending() {
- for (var b = [], c = 0; c < a.loadingDeps_.length; c++) {
- b.push(a.loadingDeps_[c]);
- }
- return b;
- },
- setModuleState: function setModuleState(a) {
- goog.moduleLoaderState_ = {
- type: a,
- moduleName: "",
- declareLegacyNamespace: !1
- };
- },
- registerEs6ModuleExports: function registerEs6ModuleExports(a, b, c) {
- c && (goog.loadedModules_[c] = {
- exports: b,
- type: goog.ModuleType.ES6,
- moduleId: c || ""
- });
- },
- registerGoogModuleExports: function registerGoogModuleExports(a, b) {
- goog.loadedModules_[a] = {
- exports: b,
- type: goog.ModuleType.GOOG,
- moduleId: a
- };
- },
- clearModuleState: function clearModuleState() {
- goog.moduleLoaderState_ = null;
- },
- defer: function defer(b) {
- if (c) throw Error("Cannot register with defer after the call to load.");
- a.defer_(d, b);
- },
- areDepsLoaded: function areDepsLoaded() {
- return a.areDepsLoaded_(d.requires);
- }
- };
- try {
- d.load(f);
- } finally {
- c = !0;
- }
- })();
- }
- b && this.pause_();
- }, goog.DebugLoader_.prototype.pause_ = function () {
- this.paused_ = !0;
- }, goog.DebugLoader_.prototype.resume_ = function () {
- this.paused_ && (this.paused_ = !1, this.loadDeps_());
- }, goog.DebugLoader_.prototype.loading_ = function (a) {
- this.loadingDeps_.push(a);
- }, goog.DebugLoader_.prototype.loaded_ = function (a) {
- for (var b = 0; b < this.loadingDeps_.length; b++) {
- if (this.loadingDeps_[b] == a) {
- this.loadingDeps_.splice(b, 1);
- break;
- }
- }
- for (b = 0; b < this.deferredQueue_.length; b++) {
- if (this.deferredQueue_[b] == a.path) {
- this.deferredQueue_.splice(b, 1);
- break;
- }
- }
- if (this.loadingDeps_.length == this.deferredQueue_.length && !this.depsToLoad_.length) for (; this.deferredQueue_.length;) {
- this.requested(this.deferredQueue_.shift(), !0);
- }
- a.loaded();
- }, goog.DebugLoader_.prototype.areDepsLoaded_ = function (a) {
- for (var b = 0; b < a.length; b++) {
- var c = this.getPathFromDeps_(a[b]);
- if (!c || !(c in this.deferredCallbacks_ || goog.isProvided_(a[b]))) return !1;
- }
- return !0;
- }, goog.DebugLoader_.prototype.getPathFromDeps_ = function (a) {
- return a in this.idToPath_ ? this.idToPath_[a] : a in this.dependencies_ ? a : null;
- }, goog.DebugLoader_.prototype.defer_ = function (a, b) {
- this.deferredCallbacks_[a.path] = b;
- this.deferredQueue_.push(a.path);
- }, goog.LoadController = function () {}, goog.LoadController.prototype.pause = function () {}, goog.LoadController.prototype.resume = function () {}, goog.LoadController.prototype.loaded = function () {}, goog.LoadController.prototype.pending = function () {}, goog.LoadController.prototype.registerEs6ModuleExports = function (a, b, c) {}, goog.LoadController.prototype.setModuleState = function (a) {}, goog.LoadController.prototype.clearModuleState = function () {}, goog.LoadController.prototype.defer = function (a) {}, goog.LoadController.prototype.areDepsLoaded = function () {}, goog.Dependency = function (a, b, c, d, e) {
- this.path = a;
- this.relativePath = b;
- this.provides = c;
- this.requires = d;
- this.loadFlags = e;
- this.loaded_ = !1;
- this.loadCallbacks_ = [];
- }, goog.Dependency.prototype.getPathName = function () {
- var a = this.path,
- b = a.indexOf("://");
- 0 <= b && (a = a.substring(b + 3), b = a.indexOf("/"), 0 <= b && (a = a.substring(b + 1)));
- return a;
- }, goog.Dependency.prototype.onLoad = function (a) {
- this.loaded_ ? a() : this.loadCallbacks_.push(a);
- }, goog.Dependency.prototype.loaded = function () {
- this.loaded_ = !0;
- var a = this.loadCallbacks_;
- this.loadCallbacks_ = [];
- for (var b = 0; b < a.length; b++) {
- a[b]();
- }
- }, goog.Dependency.defer_ = !1, goog.Dependency.callbackMap_ = {}, goog.Dependency.registerCallback_ = function (a) {
- var b = Math.random().toString(32);
- goog.Dependency.callbackMap_[b] = a;
- return b;
- }, goog.Dependency.unregisterCallback_ = function (a) {
- delete goog.Dependency.callbackMap_[a];
- }, goog.Dependency.callback_ = function (a, b) {
- if (a in goog.Dependency.callbackMap_) {
- for (var c = goog.Dependency.callbackMap_[a], d = [], e = 1; e < arguments.length; e++) {
- d.push(arguments[e]);
- }
- c.apply(void 0, d);
- } else throw Error("Callback key " + a + " does not exist (was base.js loaded more than once?).");
- }, goog.Dependency.prototype.load = function (a) {
- if (goog.global.CLOSURE_IMPORT_SCRIPT) goog.global.CLOSURE_IMPORT_SCRIPT(this.path) ? a.loaded() : a.pause();else if (goog.inHtmlDocument_()) {
- var b = goog.global.document;
- if ("complete" == b.readyState && !goog.ENABLE_CHROME_APP_SAFE_SCRIPT_LOADING) {
- if (/\bdeps.js$/.test(this.path)) {
- a.loaded();
- return;
- }
- throw Error('Cannot write "' + this.path + '" after document load');
- }
- if (!goog.ENABLE_CHROME_APP_SAFE_SCRIPT_LOADING && goog.isDocumentLoading_()) {
- var c = goog.Dependency.registerCallback_(function (b) {
- goog.DebugLoader_.IS_OLD_IE_ && "complete" != b.readyState || (goog.Dependency.unregisterCallback_(c), a.loaded());
- }),
- d = !goog.DebugLoader_.IS_OLD_IE_ && goog.getScriptNonce() ? ' nonce="' + goog.getScriptNonce() + '"' : "";
- d = '<script src="' + this.path + '" ' + (goog.DebugLoader_.IS_OLD_IE_ ? "onreadystatechange" : "onload") + "=\"goog.Dependency.callback_('" + c + '\', this)" type="text/javascript" ' + (goog.Dependency.defer_ ? "defer" : "") + d + ">\x3c/script>";
- b.write(goog.TRUSTED_TYPES_POLICY_ ? goog.TRUSTED_TYPES_POLICY_.createHTML(d) : d);
- } else {
- var e = b.createElement("script");
- e.defer = goog.Dependency.defer_;
- e.async = !1;
- e.type = "text/javascript";
- (d = goog.getScriptNonce()) && e.setAttribute("nonce", d);
- goog.DebugLoader_.IS_OLD_IE_ ? (a.pause(), e.onreadystatechange = function () {
- if ("loaded" == e.readyState || "complete" == e.readyState) a.loaded(), a.resume();
- }) : e.onload = function () {
- e.onload = null;
- a.loaded();
- };
- e.src = goog.TRUSTED_TYPES_POLICY_ ? goog.TRUSTED_TYPES_POLICY_.createScriptURL(this.path) : this.path;
- b.head.appendChild(e);
- }
- } else goog.logToConsole_("Cannot use default debug loader outside of HTML documents."), "deps.js" == this.relativePath ? (goog.logToConsole_("Consider setting CLOSURE_IMPORT_SCRIPT before loading base.js, or setting CLOSURE_NO_DEPS to true."), a.loaded()) : a.pause();
- }, goog.Es6ModuleDependency = function (a, b, c, d, e) {
- goog.Dependency.call(this, a, b, c, d, e);
- }, goog.inherits(goog.Es6ModuleDependency, goog.Dependency), goog.Es6ModuleDependency.prototype.load = function (a) {
- function b(a, b) {
- a = b ? '<script type="module" crossorigin>' + b + "\x3c/script>" : '<script type="module" crossorigin src="' + a + '">\x3c/script>';
- d.write(goog.TRUSTED_TYPES_POLICY_ ? goog.TRUSTED_TYPES_POLICY_.createHTML(a) : a);
- }
- function c(a, b) {
- var c = d.createElement("script");
- c.defer = !0;
- c.async = !1;
- c.type = "module";
- c.setAttribute("crossorigin", !0);
- var e = goog.getScriptNonce();
- e && c.setAttribute("nonce", e);
- b ? c.textContent = goog.TRUSTED_TYPES_POLICY_ ? goog.TRUSTED_TYPES_POLICY_.createScript(b) : b : c.src = goog.TRUSTED_TYPES_POLICY_ ? goog.TRUSTED_TYPES_POLICY_.createScriptURL(a) : a;
- d.head.appendChild(c);
- }
- if (goog.global.CLOSURE_IMPORT_SCRIPT) goog.global.CLOSURE_IMPORT_SCRIPT(this.path) ? a.loaded() : a.pause();else if (goog.inHtmlDocument_()) {
- var d = goog.global.document,
- e = this;
- if (goog.isDocumentLoading_()) {
- var f = b;
- goog.Dependency.defer_ = !0;
- } else f = c;
- var g = goog.Dependency.registerCallback_(function () {
- goog.Dependency.unregisterCallback_(g);
- a.setModuleState(goog.ModuleType.ES6);
- });
- f(void 0, 'goog.Dependency.callback_("' + g + '")');
- f(this.path, void 0);
- var h = goog.Dependency.registerCallback_(function (b) {
- goog.Dependency.unregisterCallback_(h);
- a.registerEs6ModuleExports(e.path, b, goog.moduleLoaderState_.moduleName);
- });
- f(void 0, 'import * as m from "' + this.path + '"; goog.Dependency.callback_("' + h + '", m)');
- var k = goog.Dependency.registerCallback_(function () {
- goog.Dependency.unregisterCallback_(k);
- a.clearModuleState();
- a.loaded();
- });
- f(void 0, 'goog.Dependency.callback_("' + k + '")');
- } else goog.logToConsole_("Cannot use default debug loader outside of HTML documents."), a.pause();
- }, goog.TransformedDependency = function (a, b, c, d, e) {
- goog.Dependency.call(this, a, b, c, d, e);
- this.contents_ = null;
- this.lazyFetch_ = !goog.inHtmlDocument_() || !("noModule" in goog.global.document.createElement("script"));
- }, goog.inherits(goog.TransformedDependency, goog.Dependency), goog.TransformedDependency.prototype.load = function (a) {
- function b() {
- e.contents_ = goog.loadFileSync_(e.path);
- e.contents_ && (e.contents_ = e.transform(e.contents_), e.contents_ && (e.contents_ += "\n//# sourceURL=" + e.path));
- }
- function c() {
- e.lazyFetch_ && b();
- if (e.contents_) {
- f && a.setModuleState(goog.ModuleType.ES6);
- try {
- var c = e.contents_;
- e.contents_ = null;
- goog.globalEval(c);
- if (f) var d = goog.moduleLoaderState_.moduleName;
- } finally {
- f && a.clearModuleState();
- }
- f && goog.global.$jscomp.require.ensure([e.getPathName()], function () {
- a.registerEs6ModuleExports(e.path, goog.global.$jscomp.require(e.getPathName()), d);
- });
- a.loaded();
- }
- }
- function d() {
- var a = goog.global.document,
- b = goog.Dependency.registerCallback_(function () {
- goog.Dependency.unregisterCallback_(b);
- c();
- }),
- d = '<script type="text/javascript">' + goog.protectScriptTag_('goog.Dependency.callback_("' + b + '");') + "\x3c/script>";
- a.write(goog.TRUSTED_TYPES_POLICY_ ? goog.TRUSTED_TYPES_POLICY_.createHTML(d) : d);
- }
- var e = this;
- if (goog.global.CLOSURE_IMPORT_SCRIPT) b(), this.contents_ && goog.global.CLOSURE_IMPORT_SCRIPT("", this.contents_) ? (this.contents_ = null, a.loaded()) : a.pause();else {
- var f = this.loadFlags.module == goog.ModuleType.ES6;
- this.lazyFetch_ || b();
- var g = 1 < a.pending().length,
- h = g && goog.DebugLoader_.IS_OLD_IE_;
- g = goog.Dependency.defer_ && (g || goog.isDocumentLoading_());
- if (h || g) a.defer(function () {
- c();
- });else {
- var k = goog.global.document;
- h = goog.inHtmlDocument_() && "ActiveXObject" in goog.global;
- if (f && goog.inHtmlDocument_() && goog.isDocumentLoading_() && !h) {
- goog.Dependency.defer_ = !0;
- a.pause();
- var l = k.onreadystatechange;
- k.onreadystatechange = function () {
- "interactive" == k.readyState && (k.onreadystatechange = l, c(), a.resume());
- goog.isFunction(l) && l.apply(void 0, arguments);
- };
- } else !goog.DebugLoader_.IS_OLD_IE_ && goog.inHtmlDocument_() && goog.isDocumentLoading_() ? d() : c();
- }
- }
- }, goog.TransformedDependency.prototype.transform = function (a) {}, goog.TranspiledDependency = function (a, b, c, d, e, f) {
- goog.TransformedDependency.call(this, a, b, c, d, e);
- this.transpiler = f;
- }, goog.inherits(goog.TranspiledDependency, goog.TransformedDependency), goog.TranspiledDependency.prototype.transform = function (a) {
- return this.transpiler.transpile(a, this.getPathName());
- }, goog.PreTranspiledEs6ModuleDependency = function (a, b, c, d, e) {
- goog.TransformedDependency.call(this, a, b, c, d, e);
- }, goog.inherits(goog.PreTranspiledEs6ModuleDependency, goog.TransformedDependency), goog.PreTranspiledEs6ModuleDependency.prototype.transform = function (a) {
- return a;
- }, goog.GoogModuleDependency = function (a, b, c, d, e, f, g) {
- goog.TransformedDependency.call(this, a, b, c, d, e);
- this.needsTranspile_ = f;
- this.transpiler_ = g;
- }, goog.inherits(goog.GoogModuleDependency, goog.TransformedDependency), goog.GoogModuleDependency.prototype.transform = function (a) {
- this.needsTranspile_ && (a = this.transpiler_.transpile(a, this.getPathName()));
- return goog.LOAD_MODULE_USING_EVAL && void 0 !== goog.global.JSON ? "goog.loadModule(" + goog.global.JSON.stringify(a + "\n//# sourceURL=" + this.path + "\n") + ");" : 'goog.loadModule(function(exports) {"use strict";' + a + "\n;return exports});\n//# sourceURL=" + this.path + "\n";
- }, goog.DebugLoader_.IS_OLD_IE_ = !(goog.global.atob || !goog.global.document || !goog.global.document.all), goog.DebugLoader_.prototype.addDependency = function (a, b, c, d) {
- b = b || [];
- a = a.replace(/\\/g, "/");
- var e = goog.normalizePath_(goog.basePath + a);
- d && "boolean" !== typeof d || (d = d ? {
- module: goog.ModuleType.GOOG
- } : {});
- c = this.factory_.createDependency(e, a, b, c, d, goog.transpiler_.needsTranspile(d.lang || "es3", d.module));
- this.dependencies_[e] = c;
- for (c = 0; c < b.length; c++) {
- this.idToPath_[b[c]] = e;
- }
- this.idToPath_[a] = e;
- }, goog.DependencyFactory = function (a) {
- this.transpiler = a;
- }, goog.DependencyFactory.prototype.createDependency = function (a, b, c, d, e, f) {
- return e.module == goog.ModuleType.GOOG ? new goog.GoogModuleDependency(a, b, c, d, e, f, this.transpiler) : f ? new goog.TranspiledDependency(a, b, c, d, e, this.transpiler) : e.module == goog.ModuleType.ES6 ? "never" == goog.TRANSPILE && goog.ASSUME_ES_MODULES_TRANSPILED ? new goog.PreTranspiledEs6ModuleDependency(a, b, c, d, e) : new goog.Es6ModuleDependency(a, b, c, d, e) : new goog.Dependency(a, b, c, d, e);
- }, goog.debugLoader_ = new goog.DebugLoader_(), goog.loadClosureDeps = function () {
- goog.debugLoader_.loadClosureDeps();
- }, goog.setDependencyFactory = function (a) {
- goog.debugLoader_.setDependencyFactory(a);
- }, goog.global.CLOSURE_NO_DEPS || goog.debugLoader_.loadClosureDeps(), goog.bootstrap = function (a, b) {
- goog.debugLoader_.bootstrap(a, b);
- });
- goog.TRUSTED_TYPES_POLICY_NAME = "";
- goog.identity_ = function (a) {
- return a;
- };
- goog.createTrustedTypesPolicy = function (a) {
- var b = null,
- c = goog.global.trustedTypes || goog.global.TrustedTypes;
- if (!c || !c.createPolicy) return b;
- try {
- b = c.createPolicy(a, {
- createHTML: goog.identity_,
- createScript: goog.identity_,
- createScriptURL: goog.identity_,
- createURL: goog.identity_
- });
- } catch (d) {
- goog.logToConsole_(d.message);
- }
- return b;
- };
- goog.TRUSTED_TYPES_POLICY_ = goog.TRUSTED_TYPES_POLICY_NAME ? goog.createTrustedTypesPolicy(goog.TRUSTED_TYPES_POLICY_NAME + "#base") : null;
- goog.object = {};
- goog.object.is = function (a, b) {
- return a === b ? 0 !== a || 1 / a === 1 / b : a !== a && b !== b;
- };
- goog.object.forEach = function (a, b, c) {
- for (var d in a) {
- b.call(c, a[d], d, a);
- }
- };
- goog.object.filter = function (a, b, c) {
- var d = {},
- e;
- for (e in a) {
- b.call(c, a[e], e, a) && (d[e] = a[e]);
- }
- return d;
- };
- goog.object.map = function (a, b, c) {
- var d = {},
- e;
- for (e in a) {
- d[e] = b.call(c, a[e], e, a);
- }
- return d;
- };
- goog.object.some = function (a, b, c) {
- for (var d in a) {
- if (b.call(c, a[d], d, a)) return !0;
- }
- return !1;
- };
- goog.object.every = function (a, b, c) {
- for (var d in a) {
- if (!b.call(c, a[d], d, a)) return !1;
- }
- return !0;
- };
- goog.object.getCount = function (a) {
- var b = 0,
- c;
- for (c in a) {
- b++;
- }
- return b;
- };
- goog.object.getAnyKey = function (a) {
- for (var b in a) {
- return b;
- }
- };
- goog.object.getAnyValue = function (a) {
- for (var b in a) {
- return a[b];
- }
- };
- goog.object.contains = function (a, b) {
- return goog.object.containsValue(a, b);
- };
- goog.object.getValues = function (a) {
- var b = [],
- c = 0,
- d;
- for (d in a) {
- b[c++] = a[d];
- }
- return b;
- };
- goog.object.getKeys = function (a) {
- var b = [],
- c = 0,
- d;
- for (d in a) {
- b[c++] = d;
- }
- return b;
- };
- goog.object.getValueByKeys = function (a, b) {
- var c = goog.isArrayLike(b),
- d = c ? b : arguments;
- for (c = c ? 0 : 1; c < d.length; c++) {
- if (null == a) return;
- a = a[d[c]];
- }
- return a;
- };
- goog.object.containsKey = function (a, b) {
- return null !== a && b in a;
- };
- goog.object.containsValue = function (a, b) {
- for (var c in a) {
- if (a[c] == b) return !0;
- }
- return !1;
- };
- goog.object.findKey = function (a, b, c) {
- for (var d in a) {
- if (b.call(c, a[d], d, a)) return d;
- }
- };
- goog.object.findValue = function (a, b, c) {
- return (b = goog.object.findKey(a, b, c)) && a[b];
- };
- goog.object.isEmpty = function (a) {
- for (var b in a) {
- return !1;
- }
- return !0;
- };
- goog.object.clear = function (a) {
- for (var b in a) {
- delete a[b];
- }
- };
- goog.object.remove = function (a, b) {
- var c;
- (c = b in a) && delete a[b];
- return c;
- };
- goog.object.add = function (a, b, c) {
- if (null !== a && b in a) throw Error('The object already contains the key "' + b + '"');
- goog.object.set(a, b, c);
- };
- goog.object.get = function (a, b, c) {
- return null !== a && b in a ? a[b] : c;
- };
- goog.object.set = function (a, b, c) {
- a[b] = c;
- };
- goog.object.setIfUndefined = function (a, b, c) {
- return b in a ? a[b] : a[b] = c;
- };
- goog.object.setWithReturnValueIfNotSet = function (a, b, c) {
- if (b in a) return a[b];
- c = c();
- return a[b] = c;
- };
- goog.object.equals = function (a, b) {
- for (var c in a) {
- if (!(c in b) || a[c] !== b[c]) return !1;
- }
- for (var d in b) {
- if (!(d in a)) return !1;
- }
- return !0;
- };
- goog.object.clone = function (a) {
- var b = {},
- c;
- for (c in a) {
- b[c] = a[c];
- }
- return b;
- };
- goog.object.unsafeClone = function (a) {
- var b = goog.typeOf(a);
- if ("object" == b || "array" == b) {
- if (goog.isFunction(a.clone)) return a.clone();
- b = "array" == b ? [] : {};
- for (var c in a) {
- b[c] = goog.object.unsafeClone(a[c]);
- }
- return b;
- }
- return a;
- };
- goog.object.transpose = function (a) {
- var b = {},
- c;
- for (c in a) {
- b[a[c]] = c;
- }
- return b;
- };
- goog.object.PROTOTYPE_FIELDS_ = "constructor hasOwnProperty isPrototypeOf propertyIsEnumerable toLocaleString toString valueOf".split(" ");
- goog.object.extend = function (a, b) {
- for (var c, d, e = 1; e < arguments.length; e++) {
- d = arguments[e];
- for (c in d) {
- a[c] = d[c];
- }
- for (var f = 0; f < goog.object.PROTOTYPE_FIELDS_.length; f++) {
- c = goog.object.PROTOTYPE_FIELDS_[f], Object.prototype.hasOwnProperty.call(d, c) && (a[c] = d[c]);
- }
- }
- };
- goog.object.create = function (a) {
- var b = arguments.length;
- if (1 == b && Array.isArray(arguments[0])) return goog.object.create.apply(null, arguments[0]);
- if (b % 2) throw Error("Uneven number of arguments");
- for (var c = {}, d = 0; d < b; d += 2) {
- c[arguments[d]] = arguments[d + 1];
- }
- return c;
- };
- goog.object.createSet = function (a) {
- var b = arguments.length;
- if (1 == b && Array.isArray(arguments[0])) return goog.object.createSet.apply(null, arguments[0]);
- for (var c = {}, d = 0; d < b; d++) {
- c[arguments[d]] = !0;
- }
- return c;
- };
- goog.object.createImmutableView = function (a) {
- var b = a;
- Object.isFrozen && !Object.isFrozen(a) && (b = Object.create(a), Object.freeze(b));
- return b;
- };
- goog.object.isImmutableView = function (a) {
- return !!Object.isFrozen && Object.isFrozen(a);
- };
- goog.object.getAllPropertyNames = function (a, b, c) {
- if (!a) return [];
- if (!Object.getOwnPropertyNames || !Object.getPrototypeOf) return goog.object.getKeys(a);
- for (var d = {}; a && (a !== Object.prototype || b) && (a !== Function.prototype || c);) {
- for (var e = Object.getOwnPropertyNames(a), f = 0; f < e.length; f++) {
- d[e[f]] = !0;
- }
- a = Object.getPrototypeOf(a);
- }
- return goog.object.getKeys(d);
- };
- goog.object.getSuperClass = function (a) {
- return (a = Object.getPrototypeOf(a.prototype)) && a.constructor;
- };
- var jspb = {
- asserts: {}
- };
- jspb.asserts.doAssertFailure = function (a, b, c, d) {
- var e = "Assertion failed";
- if (c) {
- e += ": " + c;
- var f = d;
- } else a && (e += ": " + a, f = b);
- throw Error("" + e, f || []);
- };
- jspb.asserts.assert = function (a, b, c) {
- for (var d = [], e = 2; e < arguments.length; ++e) {
- d[e - 2] = arguments[e];
- }
- a || jspb.asserts.doAssertFailure("", null, b, d);
- return a;
- };
- jspb.asserts.assertString = function (a, b, c) {
- for (var d = [], e = 2; e < arguments.length; ++e) {
- d[e - 2] = arguments[e];
- }
- "string" !== typeof a && jspb.asserts.doAssertFailure("Expected string but got %s: %s.", [goog.typeOf(a), a], b, d);
- return a;
- };
- jspb.asserts.assertArray = function (a, b, c) {
- for (var d = [], e = 2; e < arguments.length; ++e) {
- d[e - 2] = arguments[e];
- }
- Array.isArray(a) || jspb.asserts.doAssertFailure("Expected array but got %s: %s.", [goog.typeOf(a), a], b, d);
- return a;
- };
- jspb.asserts.fail = function (a, b) {
- for (var c = [], d = 1; d < arguments.length; ++d) {
- c[d - 1] = arguments[d];
- }
- throw Error("Failure" + (a ? ": " + a : ""), c);
- };
- jspb.asserts.assertInstanceof = function (a, b, c, d) {
- for (var e = [], f = 3; f < arguments.length; ++f) {
- e[f - 3] = arguments[f];
- }
- a instanceof b || jspb.asserts.doAssertFailure("Expected instanceof %s but got %s.", [jspb.asserts.getType(b), jspb.asserts.getType(a)], c, e);
- return a;
- };
- jspb.asserts.getType = function (a) {
- return a instanceof Function ? a.displayName || a.name || "unknown type name" : a instanceof Object ? a.constructor.displayName || a.constructor.name || Object.prototype.toString.call(a) : null === a ? "null" : _typeof(a);
- };
- jspb.BinaryConstants = {};
- jspb.ConstBinaryMessage = function () {};
- jspb.BinaryMessage = function () {};
- jspb.BinaryConstants.FieldType = {
- INVALID: -1,
- DOUBLE: 1,
- FLOAT: 2,
- INT64: 3,
- UINT64: 4,
- INT32: 5,
- FIXED64: 6,
- FIXED32: 7,
- BOOL: 8,
- STRING: 9,
- GROUP: 10,
- MESSAGE: 11,
- BYTES: 12,
- UINT32: 13,
- ENUM: 14,
- SFIXED32: 15,
- SFIXED64: 16,
- SINT32: 17,
- SINT64: 18,
- FHASH64: 30,
- VHASH64: 31
- };
- jspb.BinaryConstants.WireType = {
- INVALID: -1,
- VARINT: 0,
- FIXED64: 1,
- DELIMITED: 2,
- START_GROUP: 3,
- END_GROUP: 4,
- FIXED32: 5
- };
- jspb.BinaryConstants.FieldTypeToWireType = function (a) {
- var b = jspb.BinaryConstants.FieldType,
- c = jspb.BinaryConstants.WireType;
- switch (a) {
- case b.INT32:
- case b.INT64:
- case b.UINT32:
- case b.UINT64:
- case b.SINT32:
- case b.SINT64:
- case b.BOOL:
- case b.ENUM:
- case b.VHASH64:
- return c.VARINT;
- case b.DOUBLE:
- case b.FIXED64:
- case b.SFIXED64:
- case b.FHASH64:
- return c.FIXED64;
- case b.STRING:
- case b.MESSAGE:
- case b.BYTES:
- return c.DELIMITED;
- case b.FLOAT:
- case b.FIXED32:
- case b.SFIXED32:
- return c.FIXED32;
- default:
- return c.INVALID;
- }
- };
- jspb.BinaryConstants.INVALID_FIELD_NUMBER = -1;
- jspb.BinaryConstants.FLOAT32_EPS = 1.401298464324817E-45;
- jspb.BinaryConstants.FLOAT32_MIN = 1.1754943508222875E-38;
- jspb.BinaryConstants.FLOAT32_MAX = 3.4028234663852886E38;
- jspb.BinaryConstants.FLOAT64_EPS = 4.9E-324;
- jspb.BinaryConstants.FLOAT64_MIN = 2.2250738585072014E-308;
- jspb.BinaryConstants.FLOAT64_MAX = 1.7976931348623157E308;
- jspb.BinaryConstants.TWO_TO_20 = 1048576;
- jspb.BinaryConstants.TWO_TO_23 = 8388608;
- jspb.BinaryConstants.TWO_TO_31 = 2147483648;
- jspb.BinaryConstants.TWO_TO_32 = 4294967296;
- jspb.BinaryConstants.TWO_TO_52 = 4503599627370496;
- jspb.BinaryConstants.TWO_TO_63 = 0x7fffffffffffffff;
- jspb.BinaryConstants.TWO_TO_64 = 1.8446744073709552E19;
- jspb.BinaryConstants.ZERO_HASH = "\x00\x00\x00\x00\x00\x00\x00\x00";
- goog.debug = {};
- goog.debug.Error = function (a) {
- if (Error.captureStackTrace) Error.captureStackTrace(this, goog.debug.Error);else {
- var b = Error().stack;
- b && (this.stack = b);
- }
- a && (this.message = String(a));
- this.reportErrorToServer = !0;
- };
- goog.inherits(goog.debug.Error, Error);
- goog.debug.Error.prototype.name = "CustomError";
- goog.dom = {};
- goog.dom.NodeType = {
- ELEMENT: 1,
- ATTRIBUTE: 2,
- TEXT: 3,
- CDATA_SECTION: 4,
- ENTITY_REFERENCE: 5,
- ENTITY: 6,
- PROCESSING_INSTRUCTION: 7,
- COMMENT: 8,
- DOCUMENT: 9,
- DOCUMENT_TYPE: 10,
- DOCUMENT_FRAGMENT: 11,
- NOTATION: 12
- };
- goog.asserts = {};
- goog.asserts.ENABLE_ASSERTS = goog.DEBUG;
- goog.asserts.AssertionError = function (a, b) {
- goog.debug.Error.call(this, goog.asserts.subs_(a, b));
- this.messagePattern = a;
- };
- goog.inherits(goog.asserts.AssertionError, goog.debug.Error);
- goog.asserts.AssertionError.prototype.name = "AssertionError";
- goog.asserts.DEFAULT_ERROR_HANDLER = function (a) {
- throw a;
- };
- goog.asserts.errorHandler_ = goog.asserts.DEFAULT_ERROR_HANDLER;
- goog.asserts.subs_ = function (a, b) {
- a = a.split("%s");
- for (var c = "", d = a.length - 1, e = 0; e < d; e++) {
- c += a[e] + (e < b.length ? b[e] : "%s");
- }
- return c + a[d];
- };
- goog.asserts.doAssertFailure_ = function (a, b, c, d) {
- var e = "Assertion failed";
- if (c) {
- e += ": " + c;
- var f = d;
- } else a && (e += ": " + a, f = b);
- a = new goog.asserts.AssertionError("" + e, f || []);
- goog.asserts.errorHandler_(a);
- };
- goog.asserts.setErrorHandler = function (a) {
- goog.asserts.ENABLE_ASSERTS && (goog.asserts.errorHandler_ = a);
- };
- goog.asserts.assert = function (a, b, c) {
- goog.asserts.ENABLE_ASSERTS && !a && goog.asserts.doAssertFailure_("", null, b, Array.prototype.slice.call(arguments, 2));
- return a;
- };
- goog.asserts.assertExists = function (a, b, c) {
- goog.asserts.ENABLE_ASSERTS && null == a && goog.asserts.doAssertFailure_("Expected to exist: %s.", [a], b, Array.prototype.slice.call(arguments, 2));
- return a;
- };
- goog.asserts.fail = function (a, b) {
- goog.asserts.ENABLE_ASSERTS && goog.asserts.errorHandler_(new goog.asserts.AssertionError("Failure" + (a ? ": " + a : ""), Array.prototype.slice.call(arguments, 1)));
- };
- goog.asserts.assertNumber = function (a, b, c) {
- goog.asserts.ENABLE_ASSERTS && "number" !== typeof a && goog.asserts.doAssertFailure_("Expected number but got %s: %s.", [goog.typeOf(a), a], b, Array.prototype.slice.call(arguments, 2));
- return a;
- };
- goog.asserts.assertString = function (a, b, c) {
- goog.asserts.ENABLE_ASSERTS && "string" !== typeof a && goog.asserts.doAssertFailure_("Expected string but got %s: %s.", [goog.typeOf(a), a], b, Array.prototype.slice.call(arguments, 2));
- return a;
- };
- goog.asserts.assertFunction = function (a, b, c) {
- goog.asserts.ENABLE_ASSERTS && !goog.isFunction(a) && goog.asserts.doAssertFailure_("Expected function but got %s: %s.", [goog.typeOf(a), a], b, Array.prototype.slice.call(arguments, 2));
- return a;
- };
- goog.asserts.assertObject = function (a, b, c) {
- goog.asserts.ENABLE_ASSERTS && !goog.isObject(a) && goog.asserts.doAssertFailure_("Expected object but got %s: %s.", [goog.typeOf(a), a], b, Array.prototype.slice.call(arguments, 2));
- return a;
- };
- goog.asserts.assertArray = function (a, b, c) {
- goog.asserts.ENABLE_ASSERTS && !Array.isArray(a) && goog.asserts.doAssertFailure_("Expected array but got %s: %s.", [goog.typeOf(a), a], b, Array.prototype.slice.call(arguments, 2));
- return a;
- };
- goog.asserts.assertBoolean = function (a, b, c) {
- goog.asserts.ENABLE_ASSERTS && "boolean" !== typeof a && goog.asserts.doAssertFailure_("Expected boolean but got %s: %s.", [goog.typeOf(a), a], b, Array.prototype.slice.call(arguments, 2));
- return a;
- };
- goog.asserts.assertElement = function (a, b, c) {
- !goog.asserts.ENABLE_ASSERTS || goog.isObject(a) && a.nodeType == goog.dom.NodeType.ELEMENT || goog.asserts.doAssertFailure_("Expected Element but got %s: %s.", [goog.typeOf(a), a], b, Array.prototype.slice.call(arguments, 2));
- return a;
- };
- goog.asserts.assertInstanceof = function (a, b, c, d) {
- !goog.asserts.ENABLE_ASSERTS || a instanceof b || goog.asserts.doAssertFailure_("Expected instanceof %s but got %s.", [goog.asserts.getType_(b), goog.asserts.getType_(a)], c, Array.prototype.slice.call(arguments, 3));
- return a;
- };
- goog.asserts.assertFinite = function (a, b, c) {
- !goog.asserts.ENABLE_ASSERTS || "number" == typeof a && isFinite(a) || goog.asserts.doAssertFailure_("Expected %s to be a finite number but it is not.", [a], b, Array.prototype.slice.call(arguments, 2));
- return a;
- };
- goog.asserts.assertObjectPrototypeIsIntact = function () {
- for (var a in Object.prototype) {
- goog.asserts.fail(a + " should not be enumerable in Object.prototype.");
- }
- };
- goog.asserts.getType_ = function (a) {
- return a instanceof Function ? a.displayName || a.name || "unknown type name" : a instanceof Object ? a.constructor.displayName || a.constructor.name || Object.prototype.toString.call(a) : null === a ? "null" : _typeof(a);
- };
- goog.array = {};
- goog.NATIVE_ARRAY_PROTOTYPES = goog.TRUSTED_SITE;
- goog.array.ASSUME_NATIVE_FUNCTIONS = 2012 < goog.FEATURESET_YEAR;
- goog.array.peek = function (a) {
- return a[a.length - 1];
- };
- goog.array.last = goog.array.peek;
- goog.array.indexOf = goog.NATIVE_ARRAY_PROTOTYPES && (goog.array.ASSUME_NATIVE_FUNCTIONS || Array.prototype.indexOf) ? function (a, b, c) {
- goog.asserts.assert(null != a.length);
- return Array.prototype.indexOf.call(a, b, c);
- } : function (a, b, c) {
- c = null == c ? 0 : 0 > c ? Math.max(0, a.length + c) : c;
- if ("string" === typeof a) return "string" !== typeof b || 1 != b.length ? -1 : a.indexOf(b, c);
- for (; c < a.length; c++) {
- if (c in a && a[c] === b) return c;
- }
- return -1;
- };
- goog.array.lastIndexOf = goog.NATIVE_ARRAY_PROTOTYPES && (goog.array.ASSUME_NATIVE_FUNCTIONS || Array.prototype.lastIndexOf) ? function (a, b, c) {
- goog.asserts.assert(null != a.length);
- return Array.prototype.lastIndexOf.call(a, b, null == c ? a.length - 1 : c);
- } : function (a, b, c) {
- c = null == c ? a.length - 1 : c;
- 0 > c && (c = Math.max(0, a.length + c));
- if ("string" === typeof a) return "string" !== typeof b || 1 != b.length ? -1 : a.lastIndexOf(b, c);
- for (; 0 <= c; c--) {
- if (c in a && a[c] === b) return c;
- }
- return -1;
- };
- goog.array.forEach = goog.NATIVE_ARRAY_PROTOTYPES && (goog.array.ASSUME_NATIVE_FUNCTIONS || Array.prototype.forEach) ? function (a, b, c) {
- goog.asserts.assert(null != a.length);
- Array.prototype.forEach.call(a, b, c);
- } : function (a, b, c) {
- for (var d = a.length, e = "string" === typeof a ? a.split("") : a, f = 0; f < d; f++) {
- f in e && b.call(c, e[f], f, a);
- }
- };
- goog.array.forEachRight = function (a, b, c) {
- var d = a.length,
- e = "string" === typeof a ? a.split("") : a;
- for (--d; 0 <= d; --d) {
- d in e && b.call(c, e[d], d, a);
- }
- };
- goog.array.filter = goog.NATIVE_ARRAY_PROTOTYPES && (goog.array.ASSUME_NATIVE_FUNCTIONS || Array.prototype.filter) ? function (a, b, c) {
- goog.asserts.assert(null != a.length);
- return Array.prototype.filter.call(a, b, c);
- } : function (a, b, c) {
- for (var d = a.length, e = [], f = 0, g = "string" === typeof a ? a.split("") : a, h = 0; h < d; h++) {
- if (h in g) {
- var k = g[h];
- b.call(c, k, h, a) && (e[f++] = k);
- }
- }
- return e;
- };
- goog.array.map = goog.NATIVE_ARRAY_PROTOTYPES && (goog.array.ASSUME_NATIVE_FUNCTIONS || Array.prototype.map) ? function (a, b, c) {
- goog.asserts.assert(null != a.length);
- return Array.prototype.map.call(a, b, c);
- } : function (a, b, c) {
- for (var d = a.length, e = Array(d), f = "string" === typeof a ? a.split("") : a, g = 0; g < d; g++) {
- g in f && (e[g] = b.call(c, f[g], g, a));
- }
- return e;
- };
- goog.array.reduce = goog.NATIVE_ARRAY_PROTOTYPES && (goog.array.ASSUME_NATIVE_FUNCTIONS || Array.prototype.reduce) ? function (a, b, c, d) {
- goog.asserts.assert(null != a.length);
- d && (b = goog.bind(b, d));
- return Array.prototype.reduce.call(a, b, c);
- } : function (a, b, c, d) {
- var e = c;
- goog.array.forEach(a, function (c, g) {
- e = b.call(d, e, c, g, a);
- });
- return e;
- };
- goog.array.reduceRight = goog.NATIVE_ARRAY_PROTOTYPES && (goog.array.ASSUME_NATIVE_FUNCTIONS || Array.prototype.reduceRight) ? function (a, b, c, d) {
- goog.asserts.assert(null != a.length);
- goog.asserts.assert(null != b);
- d && (b = goog.bind(b, d));
- return Array.prototype.reduceRight.call(a, b, c);
- } : function (a, b, c, d) {
- var e = c;
- goog.array.forEachRight(a, function (c, g) {
- e = b.call(d, e, c, g, a);
- });
- return e;
- };
- goog.array.some = goog.NATIVE_ARRAY_PROTOTYPES && (goog.array.ASSUME_NATIVE_FUNCTIONS || Array.prototype.some) ? function (a, b, c) {
- goog.asserts.assert(null != a.length);
- return Array.prototype.some.call(a, b, c);
- } : function (a, b, c) {
- for (var d = a.length, e = "string" === typeof a ? a.split("") : a, f = 0; f < d; f++) {
- if (f in e && b.call(c, e[f], f, a)) return !0;
- }
- return !1;
- };
- goog.array.every = goog.NATIVE_ARRAY_PROTOTYPES && (goog.array.ASSUME_NATIVE_FUNCTIONS || Array.prototype.every) ? function (a, b, c) {
- goog.asserts.assert(null != a.length);
- return Array.prototype.every.call(a, b, c);
- } : function (a, b, c) {
- for (var d = a.length, e = "string" === typeof a ? a.split("") : a, f = 0; f < d; f++) {
- if (f in e && !b.call(c, e[f], f, a)) return !1;
- }
- return !0;
- };
- goog.array.count = function (a, b, c) {
- var d = 0;
- goog.array.forEach(a, function (a, f, g) {
- b.call(c, a, f, g) && ++d;
- }, c);
- return d;
- };
- goog.array.find = function (a, b, c) {
- b = goog.array.findIndex(a, b, c);
- return 0 > b ? null : "string" === typeof a ? a.charAt(b) : a[b];
- };
- goog.array.findIndex = function (a, b, c) {
- for (var d = a.length, e = "string" === typeof a ? a.split("") : a, f = 0; f < d; f++) {
- if (f in e && b.call(c, e[f], f, a)) return f;
- }
- return -1;
- };
- goog.array.findRight = function (a, b, c) {
- b = goog.array.findIndexRight(a, b, c);
- return 0 > b ? null : "string" === typeof a ? a.charAt(b) : a[b];
- };
- goog.array.findIndexRight = function (a, b, c) {
- var d = a.length,
- e = "string" === typeof a ? a.split("") : a;
- for (--d; 0 <= d; d--) {
- if (d in e && b.call(c, e[d], d, a)) return d;
- }
- return -1;
- };
- goog.array.contains = function (a, b) {
- return 0 <= goog.array.indexOf(a, b);
- };
- goog.array.isEmpty = function (a) {
- return 0 == a.length;
- };
- goog.array.clear = function (a) {
- if (!Array.isArray(a)) for (var b = a.length - 1; 0 <= b; b--) {
- delete a[b];
- }
- a.length = 0;
- };
- goog.array.insert = function (a, b) {
- goog.array.contains(a, b) || a.push(b);
- };
- goog.array.insertAt = function (a, b, c) {
- goog.array.splice(a, c, 0, b);
- };
- goog.array.insertArrayAt = function (a, b, c) {
- goog.partial(goog.array.splice, a, c, 0).apply(null, b);
- };
- goog.array.insertBefore = function (a, b, c) {
- var d;
- 2 == arguments.length || 0 > (d = goog.array.indexOf(a, c)) ? a.push(b) : goog.array.insertAt(a, b, d);
- };
- goog.array.remove = function (a, b) {
- b = goog.array.indexOf(a, b);
- var c;
- (c = 0 <= b) && goog.array.removeAt(a, b);
- return c;
- };
- goog.array.removeLast = function (a, b) {
- b = goog.array.lastIndexOf(a, b);
- return 0 <= b ? (goog.array.removeAt(a, b), !0) : !1;
- };
- goog.array.removeAt = function (a, b) {
- goog.asserts.assert(null != a.length);
- return 1 == Array.prototype.splice.call(a, b, 1).length;
- };
- goog.array.removeIf = function (a, b, c) {
- b = goog.array.findIndex(a, b, c);
- return 0 <= b ? (goog.array.removeAt(a, b), !0) : !1;
- };
- goog.array.removeAllIf = function (a, b, c) {
- var d = 0;
- goog.array.forEachRight(a, function (e, f) {
- b.call(c, e, f, a) && goog.array.removeAt(a, f) && d++;
- });
- return d;
- };
- goog.array.concat = function (a) {
- return Array.prototype.concat.apply([], arguments);
- };
- goog.array.join = function (a) {
- return Array.prototype.concat.apply([], arguments);
- };
- goog.array.toArray = function (a) {
- var b = a.length;
- if (0 < b) {
- for (var c = Array(b), d = 0; d < b; d++) {
- c[d] = a[d];
- }
- return c;
- }
- return [];
- };
- goog.array.clone = goog.array.toArray;
- goog.array.extend = function (a, b) {
- for (var c = 1; c < arguments.length; c++) {
- var d = arguments[c];
- if (goog.isArrayLike(d)) {
- var e = a.length || 0,
- f = d.length || 0;
- a.length = e + f;
- for (var g = 0; g < f; g++) {
- a[e + g] = d[g];
- }
- } else a.push(d);
- }
- };
- goog.array.splice = function (a, b, c, d) {
- goog.asserts.assert(null != a.length);
- return Array.prototype.splice.apply(a, goog.array.slice(arguments, 1));
- };
- goog.array.slice = function (a, b, c) {
- goog.asserts.assert(null != a.length);
- return 2 >= arguments.length ? Array.prototype.slice.call(a, b) : Array.prototype.slice.call(a, b, c);
- };
- goog.array.removeDuplicates = function (a, b, c) {
- b = b || a;
- var d = function d(a) {
- return goog.isObject(a) ? "o" + goog.getUid(a) : _typeof(a).charAt(0) + a;
- };
- c = c || d;
- d = {};
- for (var e = 0, f = 0; f < a.length;) {
- var g = a[f++],
- h = c(g);
- Object.prototype.hasOwnProperty.call(d, h) || (d[h] = !0, b[e++] = g);
- }
- b.length = e;
- };
- goog.array.binarySearch = function (a, b, c) {
- return goog.array.binarySearch_(a, c || goog.array.defaultCompare, !1, b);
- };
- goog.array.binarySelect = function (a, b, c) {
- return goog.array.binarySearch_(a, b, !0, void 0, c);
- };
- goog.array.binarySearch_ = function (a, b, c, d, e) {
- for (var f = 0, g = a.length, h; f < g;) {
- var k = f + (g - f >>> 1);
- var l = c ? b.call(e, a[k], k, a) : b(d, a[k]);
- 0 < l ? f = k + 1 : (g = k, h = !l);
- }
- return h ? f : -f - 1;
- };
- goog.array.sort = function (a, b) {
- a.sort(b || goog.array.defaultCompare);
- };
- goog.array.stableSort = function (a, b) {
- for (var c = Array(a.length), d = 0; d < a.length; d++) {
- c[d] = {
- index: d,
- value: a[d]
- };
- }
- var e = b || goog.array.defaultCompare;
- goog.array.sort(c, function (a, b) {
- return e(a.value, b.value) || a.index - b.index;
- });
- for (d = 0; d < a.length; d++) {
- a[d] = c[d].value;
- }
- };
- goog.array.sortByKey = function (a, b, c) {
- var d = c || goog.array.defaultCompare;
- goog.array.sort(a, function (a, c) {
- return d(b(a), b(c));
- });
- };
- goog.array.sortObjectsByKey = function (a, b, c) {
- goog.array.sortByKey(a, function (a) {
- return a[b];
- }, c);
- };
- goog.array.isSorted = function (a, b, c) {
- b = b || goog.array.defaultCompare;
- for (var d = 1; d < a.length; d++) {
- var e = b(a[d - 1], a[d]);
- if (0 < e || 0 == e && c) return !1;
- }
- return !0;
- };
- goog.array.equals = function (a, b, c) {
- if (!goog.isArrayLike(a) || !goog.isArrayLike(b) || a.length != b.length) return !1;
- var d = a.length;
- c = c || goog.array.defaultCompareEquality;
- for (var e = 0; e < d; e++) {
- if (!c(a[e], b[e])) return !1;
- }
- return !0;
- };
- goog.array.compare3 = function (a, b, c) {
- c = c || goog.array.defaultCompare;
- for (var d = Math.min(a.length, b.length), e = 0; e < d; e++) {
- var f = c(a[e], b[e]);
- if (0 != f) return f;
- }
- return goog.array.defaultCompare(a.length, b.length);
- };
- goog.array.defaultCompare = function (a, b) {
- return a > b ? 1 : a < b ? -1 : 0;
- };
- goog.array.inverseDefaultCompare = function (a, b) {
- return -goog.array.defaultCompare(a, b);
- };
- goog.array.defaultCompareEquality = function (a, b) {
- return a === b;
- };
- goog.array.binaryInsert = function (a, b, c) {
- c = goog.array.binarySearch(a, b, c);
- return 0 > c ? (goog.array.insertAt(a, b, -(c + 1)), !0) : !1;
- };
- goog.array.binaryRemove = function (a, b, c) {
- b = goog.array.binarySearch(a, b, c);
- return 0 <= b ? goog.array.removeAt(a, b) : !1;
- };
- goog.array.bucket = function (a, b, c) {
- for (var d = {}, e = 0; e < a.length; e++) {
- var f = a[e],
- g = b.call(c, f, e, a);
- void 0 !== g && (d[g] || (d[g] = [])).push(f);
- }
- return d;
- };
- goog.array.toObject = function (a, b, c) {
- var d = {};
- goog.array.forEach(a, function (e, f) {
- d[b.call(c, e, f, a)] = e;
- });
- return d;
- };
- goog.array.range = function (a, b, c) {
- var d = [],
- e = 0,
- f = a;
- c = c || 1;
- void 0 !== b && (e = a, f = b);
- if (0 > c * (f - e)) return [];
- if (0 < c) for (a = e; a < f; a += c) {
- d.push(a);
- } else for (a = e; a > f; a += c) {
- d.push(a);
- }
- return d;
- };
- goog.array.repeat = function (a, b) {
- for (var c = [], d = 0; d < b; d++) {
- c[d] = a;
- }
- return c;
- };
- goog.array.flatten = function (a) {
- for (var b = [], c = 0; c < arguments.length; c++) {
- var d = arguments[c];
- if (Array.isArray(d)) for (var e = 0; e < d.length; e += 8192) {
- var f = goog.array.slice(d, e, e + 8192);
- f = goog.array.flatten.apply(null, f);
- for (var g = 0; g < f.length; g++) {
- b.push(f[g]);
- }
- } else b.push(d);
- }
- return b;
- };
- goog.array.rotate = function (a, b) {
- goog.asserts.assert(null != a.length);
- a.length && (b %= a.length, 0 < b ? Array.prototype.unshift.apply(a, a.splice(-b, b)) : 0 > b && Array.prototype.push.apply(a, a.splice(0, -b)));
- return a;
- };
- goog.array.moveItem = function (a, b, c) {
- goog.asserts.assert(0 <= b && b < a.length);
- goog.asserts.assert(0 <= c && c < a.length);
- b = Array.prototype.splice.call(a, b, 1);
- Array.prototype.splice.call(a, c, 0, b[0]);
- };
- goog.array.zip = function (a) {
- if (!arguments.length) return [];
- for (var b = [], c = arguments[0].length, d = 1; d < arguments.length; d++) {
- arguments[d].length < c && (c = arguments[d].length);
- }
- for (d = 0; d < c; d++) {
- for (var e = [], f = 0; f < arguments.length; f++) {
- e.push(arguments[f][d]);
- }
- b.push(e);
- }
- return b;
- };
- goog.array.shuffle = function (a, b) {
- b = b || Math.random;
- for (var c = a.length - 1; 0 < c; c--) {
- var d = Math.floor(b() * (c + 1)),
- e = a[c];
- a[c] = a[d];
- a[d] = e;
- }
- };
- goog.array.copyByIndex = function (a, b) {
- var c = [];
- goog.array.forEach(b, function (b) {
- c.push(a[b]);
- });
- return c;
- };
- goog.array.concatMap = function (a, b, c) {
- return goog.array.concat.apply([], goog.array.map(a, b, c));
- };
- goog.crypt = {};
- goog.crypt.stringToByteArray = function (a) {
- for (var b = [], c = 0, d = 0; d < a.length; d++) {
- var e = a.charCodeAt(d);
- 255 < e && (b[c++] = e & 255, e >>= 8);
- b[c++] = e;
- }
- return b;
- };
- goog.crypt.byteArrayToString = function (a) {
- if (8192 >= a.length) return String.fromCharCode.apply(null, a);
- for (var b = "", c = 0; c < a.length; c += 8192) {
- var d = goog.array.slice(a, c, c + 8192);
- b += String.fromCharCode.apply(null, d);
- }
- return b;
- };
- goog.crypt.byteArrayToHex = function (a, b) {
- return goog.array.map(a, function (a) {
- a = a.toString(16);
- return 1 < a.length ? a : "0" + a;
- }).join(b || "");
- };
- goog.crypt.hexToByteArray = function (a) {
- goog.asserts.assert(0 == a.length % 2, "Key string length must be multiple of 2");
- for (var b = [], c = 0; c < a.length; c += 2) {
- b.push(parseInt(a.substring(c, c + 2), 16));
- }
- return b;
- };
- goog.crypt.stringToUtf8ByteArray = function (a) {
- for (var b = [], c = 0, d = 0; d < a.length; d++) {
- var e = a.charCodeAt(d);
- 128 > e ? b[c++] = e : (2048 > e ? b[c++] = e >> 6 | 192 : (55296 == (e & 64512) && d + 1 < a.length && 56320 == (a.charCodeAt(d + 1) & 64512) ? (e = 65536 + ((e & 1023) << 10) + (a.charCodeAt(++d) & 1023), b[c++] = e >> 18 | 240, b[c++] = e >> 12 & 63 | 128) : b[c++] = e >> 12 | 224, b[c++] = e >> 6 & 63 | 128), b[c++] = e & 63 | 128);
- }
- return b;
- };
- goog.crypt.utf8ByteArrayToString = function (a) {
- for (var b = [], c = 0, d = 0; c < a.length;) {
- var e = a[c++];
- if (128 > e) b[d++] = String.fromCharCode(e);else if (191 < e && 224 > e) {
- var f = a[c++];
- b[d++] = String.fromCharCode((e & 31) << 6 | f & 63);
- } else if (239 < e && 365 > e) {
- f = a[c++];
- var g = a[c++],
- h = a[c++];
- e = ((e & 7) << 18 | (f & 63) << 12 | (g & 63) << 6 | h & 63) - 65536;
- b[d++] = String.fromCharCode(55296 + (e >> 10));
- b[d++] = String.fromCharCode(56320 + (e & 1023));
- } else f = a[c++], g = a[c++], b[d++] = String.fromCharCode((e & 15) << 12 | (f & 63) << 6 | g & 63);
- }
- return b.join("");
- };
- goog.crypt.xorByteArray = function (a, b) {
- goog.asserts.assert(a.length == b.length, "XOR array lengths must match");
- for (var c = [], d = 0; d < a.length; d++) {
- c.push(a[d] ^ b[d]);
- }
- return c;
- };
- goog.dom.asserts = {};
- goog.dom.asserts.assertIsLocation = function (a) {
- if (goog.asserts.ENABLE_ASSERTS) {
- var b = goog.dom.asserts.getWindow_(a);
- b && (!a || !(a instanceof b.Location) && a instanceof b.Element) && goog.asserts.fail("Argument is not a Location (or a non-Element mock); got: %s", goog.dom.asserts.debugStringForType_(a));
- }
- return a;
- };
- goog.dom.asserts.assertIsElementType_ = function (a, b) {
- if (goog.asserts.ENABLE_ASSERTS) {
- var c = goog.dom.asserts.getWindow_(a);
- c && "undefined" != typeof c[b] && (a && (a instanceof c[b] || !(a instanceof c.Location || a instanceof c.Element)) || goog.asserts.fail("Argument is not a %s (or a non-Element, non-Location mock); got: %s", b, goog.dom.asserts.debugStringForType_(a)));
- }
- return a;
- };
- goog.dom.asserts.assertIsHTMLAnchorElement = function (a) {
- return goog.dom.asserts.assertIsElementType_(a, "HTMLAnchorElement");
- };
- goog.dom.asserts.assertIsHTMLButtonElement = function (a) {
- return goog.dom.asserts.assertIsElementType_(a, "HTMLButtonElement");
- };
- goog.dom.asserts.assertIsHTMLLinkElement = function (a) {
- return goog.dom.asserts.assertIsElementType_(a, "HTMLLinkElement");
- };
- goog.dom.asserts.assertIsHTMLImageElement = function (a) {
- return goog.dom.asserts.assertIsElementType_(a, "HTMLImageElement");
- };
- goog.dom.asserts.assertIsHTMLAudioElement = function (a) {
- return goog.dom.asserts.assertIsElementType_(a, "HTMLAudioElement");
- };
- goog.dom.asserts.assertIsHTMLVideoElement = function (a) {
- return goog.dom.asserts.assertIsElementType_(a, "HTMLVideoElement");
- };
- goog.dom.asserts.assertIsHTMLInputElement = function (a) {
- return goog.dom.asserts.assertIsElementType_(a, "HTMLInputElement");
- };
- goog.dom.asserts.assertIsHTMLTextAreaElement = function (a) {
- return goog.dom.asserts.assertIsElementType_(a, "HTMLTextAreaElement");
- };
- goog.dom.asserts.assertIsHTMLCanvasElement = function (a) {
- return goog.dom.asserts.assertIsElementType_(a, "HTMLCanvasElement");
- };
- goog.dom.asserts.assertIsHTMLEmbedElement = function (a) {
- return goog.dom.asserts.assertIsElementType_(a, "HTMLEmbedElement");
- };
- goog.dom.asserts.assertIsHTMLFormElement = function (a) {
- return goog.dom.asserts.assertIsElementType_(a, "HTMLFormElement");
- };
- goog.dom.asserts.assertIsHTMLFrameElement = function (a) {
- return goog.dom.asserts.assertIsElementType_(a, "HTMLFrameElement");
- };
- goog.dom.asserts.assertIsHTMLIFrameElement = function (a) {
- return goog.dom.asserts.assertIsElementType_(a, "HTMLIFrameElement");
- };
- goog.dom.asserts.assertIsHTMLObjectElement = function (a) {
- return goog.dom.asserts.assertIsElementType_(a, "HTMLObjectElement");
- };
- goog.dom.asserts.assertIsHTMLScriptElement = function (a) {
- return goog.dom.asserts.assertIsElementType_(a, "HTMLScriptElement");
- };
- goog.dom.asserts.debugStringForType_ = function (a) {
- if (goog.isObject(a)) try {
- return a.constructor.displayName || a.constructor.name || Object.prototype.toString.call(a);
- } catch (b) {
- return "<object could not be stringified>";
- } else return void 0 === a ? "undefined" : null === a ? "null" : _typeof(a);
- };
- goog.dom.asserts.getWindow_ = function (a) {
- try {
- var b = a && a.ownerDocument,
- c = b && (b.defaultView || b.parentWindow);
- c = c || goog.global;
- if (c.Element && c.Location) return c;
- } catch (d) {}
- return null;
- };
- goog.functions = {};
- goog.functions.constant = function (a) {
- return function () {
- return a;
- };
- };
- goog.functions.FALSE = function () {
- return !1;
- };
- goog.functions.TRUE = function () {
- return !0;
- };
- goog.functions.NULL = function () {
- return null;
- };
- goog.functions.identity = function (a, b) {
- return a;
- };
- goog.functions.error = function (a) {
- return function () {
- throw Error(a);
- };
- };
- goog.functions.fail = function (a) {
- return function () {
- throw a;
- };
- };
- goog.functions.lock = function (a, b) {
- b = b || 0;
- return function () {
- return a.apply(this, Array.prototype.slice.call(arguments, 0, b));
- };
- };
- goog.functions.nth = function (a) {
- return function () {
- return arguments[a];
- };
- };
- goog.functions.partialRight = function (a, b) {
- var c = Array.prototype.slice.call(arguments, 1);
- return function () {
- var b = Array.prototype.slice.call(arguments);
- b.push.apply(b, c);
- return a.apply(this, b);
- };
- };
- goog.functions.withReturnValue = function (a, b) {
- return goog.functions.sequence(a, goog.functions.constant(b));
- };
- goog.functions.equalTo = function (a, b) {
- return function (c) {
- return b ? a == c : a === c;
- };
- };
- goog.functions.compose = function (a, b) {
- var c = arguments,
- d = c.length;
- return function () {
- var a;
- d && (a = c[d - 1].apply(this, arguments));
- for (var b = d - 2; 0 <= b; b--) {
- a = c[b].call(this, a);
- }
- return a;
- };
- };
- goog.functions.sequence = function (a) {
- var b = arguments,
- c = b.length;
- return function () {
- for (var a, e = 0; e < c; e++) {
- a = b[e].apply(this, arguments);
- }
- return a;
- };
- };
- goog.functions.and = function (a) {
- var b = arguments,
- c = b.length;
- return function () {
- for (var a = 0; a < c; a++) {
- if (!b[a].apply(this, arguments)) return !1;
- }
- return !0;
- };
- };
- goog.functions.or = function (a) {
- var b = arguments,
- c = b.length;
- return function () {
- for (var a = 0; a < c; a++) {
- if (b[a].apply(this, arguments)) return !0;
- }
- return !1;
- };
- };
- goog.functions.not = function (a) {
- return function () {
- return !a.apply(this, arguments);
- };
- };
- goog.functions.create = function (a, b) {
- var c = function c() {};
- c.prototype = a.prototype;
- c = new c();
- a.apply(c, Array.prototype.slice.call(arguments, 1));
- return c;
- };
- goog.functions.CACHE_RETURN_VALUE = !0;
- goog.functions.cacheReturnValue = function (a) {
- var b = !1,
- c;
- return function () {
- if (!goog.functions.CACHE_RETURN_VALUE) return a();
- b || (c = a(), b = !0);
- return c;
- };
- };
- goog.functions.once = function (a) {
- var b = a;
- return function () {
- if (b) {
- var a = b;
- b = null;
- a();
- }
- };
- };
- goog.functions.debounce = function (a, b, c) {
- var d = 0;
- return function (e) {
- goog.global.clearTimeout(d);
- var f = arguments;
- d = goog.global.setTimeout(function () {
- a.apply(c, f);
- }, b);
- };
- };
- goog.functions.throttle = function (a, b, c) {
- var d = 0,
- e = !1,
- f = [],
- g = function g() {
- d = 0;
- e && (e = !1, h());
- },
- h = function h() {
- d = goog.global.setTimeout(g, b);
- a.apply(c, f);
- };
- return function (a) {
- f = arguments;
- d ? e = !0 : h();
- };
- };
- goog.functions.rateLimit = function (a, b, c) {
- var d = 0,
- e = function e() {
- d = 0;
- };
- return function (f) {
- d || (d = goog.global.setTimeout(e, b), a.apply(c, arguments));
- };
- };
- goog.dom.HtmlElement = function () {};
- goog.dom.TagName = function (a) {
- this.tagName_ = a;
- };
- goog.dom.TagName.prototype.toString = function () {
- return this.tagName_;
- };
- goog.dom.TagName.A = new goog.dom.TagName("A");
- goog.dom.TagName.ABBR = new goog.dom.TagName("ABBR");
- goog.dom.TagName.ACRONYM = new goog.dom.TagName("ACRONYM");
- goog.dom.TagName.ADDRESS = new goog.dom.TagName("ADDRESS");
- goog.dom.TagName.APPLET = new goog.dom.TagName("APPLET");
- goog.dom.TagName.AREA = new goog.dom.TagName("AREA");
- goog.dom.TagName.ARTICLE = new goog.dom.TagName("ARTICLE");
- goog.dom.TagName.ASIDE = new goog.dom.TagName("ASIDE");
- goog.dom.TagName.AUDIO = new goog.dom.TagName("AUDIO");
- goog.dom.TagName.B = new goog.dom.TagName("B");
- goog.dom.TagName.BASE = new goog.dom.TagName("BASE");
- goog.dom.TagName.BASEFONT = new goog.dom.TagName("BASEFONT");
- goog.dom.TagName.BDI = new goog.dom.TagName("BDI");
- goog.dom.TagName.BDO = new goog.dom.TagName("BDO");
- goog.dom.TagName.BIG = new goog.dom.TagName("BIG");
- goog.dom.TagName.BLOCKQUOTE = new goog.dom.TagName("BLOCKQUOTE");
- goog.dom.TagName.BODY = new goog.dom.TagName("BODY");
- goog.dom.TagName.BR = new goog.dom.TagName("BR");
- goog.dom.TagName.BUTTON = new goog.dom.TagName("BUTTON");
- goog.dom.TagName.CANVAS = new goog.dom.TagName("CANVAS");
- goog.dom.TagName.CAPTION = new goog.dom.TagName("CAPTION");
- goog.dom.TagName.CENTER = new goog.dom.TagName("CENTER");
- goog.dom.TagName.CITE = new goog.dom.TagName("CITE");
- goog.dom.TagName.CODE = new goog.dom.TagName("CODE");
- goog.dom.TagName.COL = new goog.dom.TagName("COL");
- goog.dom.TagName.COLGROUP = new goog.dom.TagName("COLGROUP");
- goog.dom.TagName.COMMAND = new goog.dom.TagName("COMMAND");
- goog.dom.TagName.DATA = new goog.dom.TagName("DATA");
- goog.dom.TagName.DATALIST = new goog.dom.TagName("DATALIST");
- goog.dom.TagName.DD = new goog.dom.TagName("DD");
- goog.dom.TagName.DEL = new goog.dom.TagName("DEL");
- goog.dom.TagName.DETAILS = new goog.dom.TagName("DETAILS");
- goog.dom.TagName.DFN = new goog.dom.TagName("DFN");
- goog.dom.TagName.DIALOG = new goog.dom.TagName("DIALOG");
- goog.dom.TagName.DIR = new goog.dom.TagName("DIR");
- goog.dom.TagName.DIV = new goog.dom.TagName("DIV");
- goog.dom.TagName.DL = new goog.dom.TagName("DL");
- goog.dom.TagName.DT = new goog.dom.TagName("DT");
- goog.dom.TagName.EM = new goog.dom.TagName("EM");
- goog.dom.TagName.EMBED = new goog.dom.TagName("EMBED");
- goog.dom.TagName.FIELDSET = new goog.dom.TagName("FIELDSET");
- goog.dom.TagName.FIGCAPTION = new goog.dom.TagName("FIGCAPTION");
- goog.dom.TagName.FIGURE = new goog.dom.TagName("FIGURE");
- goog.dom.TagName.FONT = new goog.dom.TagName("FONT");
- goog.dom.TagName.FOOTER = new goog.dom.TagName("FOOTER");
- goog.dom.TagName.FORM = new goog.dom.TagName("FORM");
- goog.dom.TagName.FRAME = new goog.dom.TagName("FRAME");
- goog.dom.TagName.FRAMESET = new goog.dom.TagName("FRAMESET");
- goog.dom.TagName.H1 = new goog.dom.TagName("H1");
- goog.dom.TagName.H2 = new goog.dom.TagName("H2");
- goog.dom.TagName.H3 = new goog.dom.TagName("H3");
- goog.dom.TagName.H4 = new goog.dom.TagName("H4");
- goog.dom.TagName.H5 = new goog.dom.TagName("H5");
- goog.dom.TagName.H6 = new goog.dom.TagName("H6");
- goog.dom.TagName.HEAD = new goog.dom.TagName("HEAD");
- goog.dom.TagName.HEADER = new goog.dom.TagName("HEADER");
- goog.dom.TagName.HGROUP = new goog.dom.TagName("HGROUP");
- goog.dom.TagName.HR = new goog.dom.TagName("HR");
- goog.dom.TagName.HTML = new goog.dom.TagName("HTML");
- goog.dom.TagName.I = new goog.dom.TagName("I");
- goog.dom.TagName.IFRAME = new goog.dom.TagName("IFRAME");
- goog.dom.TagName.IMG = new goog.dom.TagName("IMG");
- goog.dom.TagName.INPUT = new goog.dom.TagName("INPUT");
- goog.dom.TagName.INS = new goog.dom.TagName("INS");
- goog.dom.TagName.ISINDEX = new goog.dom.TagName("ISINDEX");
- goog.dom.TagName.KBD = new goog.dom.TagName("KBD");
- goog.dom.TagName.KEYGEN = new goog.dom.TagName("KEYGEN");
- goog.dom.TagName.LABEL = new goog.dom.TagName("LABEL");
- goog.dom.TagName.LEGEND = new goog.dom.TagName("LEGEND");
- goog.dom.TagName.LI = new goog.dom.TagName("LI");
- goog.dom.TagName.LINK = new goog.dom.TagName("LINK");
- goog.dom.TagName.MAIN = new goog.dom.TagName("MAIN");
- goog.dom.TagName.MAP = new goog.dom.TagName("MAP");
- goog.dom.TagName.MARK = new goog.dom.TagName("MARK");
- goog.dom.TagName.MATH = new goog.dom.TagName("MATH");
- goog.dom.TagName.MENU = new goog.dom.TagName("MENU");
- goog.dom.TagName.MENUITEM = new goog.dom.TagName("MENUITEM");
- goog.dom.TagName.META = new goog.dom.TagName("META");
- goog.dom.TagName.METER = new goog.dom.TagName("METER");
- goog.dom.TagName.NAV = new goog.dom.TagName("NAV");
- goog.dom.TagName.NOFRAMES = new goog.dom.TagName("NOFRAMES");
- goog.dom.TagName.NOSCRIPT = new goog.dom.TagName("NOSCRIPT");
- goog.dom.TagName.OBJECT = new goog.dom.TagName("OBJECT");
- goog.dom.TagName.OL = new goog.dom.TagName("OL");
- goog.dom.TagName.OPTGROUP = new goog.dom.TagName("OPTGROUP");
- goog.dom.TagName.OPTION = new goog.dom.TagName("OPTION");
- goog.dom.TagName.OUTPUT = new goog.dom.TagName("OUTPUT");
- goog.dom.TagName.P = new goog.dom.TagName("P");
- goog.dom.TagName.PARAM = new goog.dom.TagName("PARAM");
- goog.dom.TagName.PICTURE = new goog.dom.TagName("PICTURE");
- goog.dom.TagName.PRE = new goog.dom.TagName("PRE");
- goog.dom.TagName.PROGRESS = new goog.dom.TagName("PROGRESS");
- goog.dom.TagName.Q = new goog.dom.TagName("Q");
- goog.dom.TagName.RP = new goog.dom.TagName("RP");
- goog.dom.TagName.RT = new goog.dom.TagName("RT");
- goog.dom.TagName.RTC = new goog.dom.TagName("RTC");
- goog.dom.TagName.RUBY = new goog.dom.TagName("RUBY");
- goog.dom.TagName.S = new goog.dom.TagName("S");
- goog.dom.TagName.SAMP = new goog.dom.TagName("SAMP");
- goog.dom.TagName.SCRIPT = new goog.dom.TagName("SCRIPT");
- goog.dom.TagName.SECTION = new goog.dom.TagName("SECTION");
- goog.dom.TagName.SELECT = new goog.dom.TagName("SELECT");
- goog.dom.TagName.SMALL = new goog.dom.TagName("SMALL");
- goog.dom.TagName.SOURCE = new goog.dom.TagName("SOURCE");
- goog.dom.TagName.SPAN = new goog.dom.TagName("SPAN");
- goog.dom.TagName.STRIKE = new goog.dom.TagName("STRIKE");
- goog.dom.TagName.STRONG = new goog.dom.TagName("STRONG");
- goog.dom.TagName.STYLE = new goog.dom.TagName("STYLE");
- goog.dom.TagName.SUB = new goog.dom.TagName("SUB");
- goog.dom.TagName.SUMMARY = new goog.dom.TagName("SUMMARY");
- goog.dom.TagName.SUP = new goog.dom.TagName("SUP");
- goog.dom.TagName.SVG = new goog.dom.TagName("SVG");
- goog.dom.TagName.TABLE = new goog.dom.TagName("TABLE");
- goog.dom.TagName.TBODY = new goog.dom.TagName("TBODY");
- goog.dom.TagName.TD = new goog.dom.TagName("TD");
- goog.dom.TagName.TEMPLATE = new goog.dom.TagName("TEMPLATE");
- goog.dom.TagName.TEXTAREA = new goog.dom.TagName("TEXTAREA");
- goog.dom.TagName.TFOOT = new goog.dom.TagName("TFOOT");
- goog.dom.TagName.TH = new goog.dom.TagName("TH");
- goog.dom.TagName.THEAD = new goog.dom.TagName("THEAD");
- goog.dom.TagName.TIME = new goog.dom.TagName("TIME");
- goog.dom.TagName.TITLE = new goog.dom.TagName("TITLE");
- goog.dom.TagName.TR = new goog.dom.TagName("TR");
- goog.dom.TagName.TRACK = new goog.dom.TagName("TRACK");
- goog.dom.TagName.TT = new goog.dom.TagName("TT");
- goog.dom.TagName.U = new goog.dom.TagName("U");
- goog.dom.TagName.UL = new goog.dom.TagName("UL");
- goog.dom.TagName.VAR = new goog.dom.TagName("VAR");
- goog.dom.TagName.VIDEO = new goog.dom.TagName("VIDEO");
- goog.dom.TagName.WBR = new goog.dom.TagName("WBR");
- goog.dom.tags = {};
- goog.dom.tags.VOID_TAGS_ = {
- area: !0,
- base: !0,
- br: !0,
- col: !0,
- command: !0,
- embed: !0,
- hr: !0,
- img: !0,
- input: !0,
- keygen: !0,
- link: !0,
- meta: !0,
- param: !0,
- source: !0,
- track: !0,
- wbr: !0
- };
- goog.dom.tags.isVoidTag = function (a) {
- return !0 === goog.dom.tags.VOID_TAGS_[a];
- };
- goog.html = {};
- goog.html.trustedtypes = {};
- goog.html.trustedtypes.PRIVATE_DO_NOT_ACCESS_OR_ELSE_POLICY = goog.TRUSTED_TYPES_POLICY_NAME ? goog.createTrustedTypesPolicy(goog.TRUSTED_TYPES_POLICY_NAME + "#html") : null;
- goog.string = {};
- goog.string.TypedString = function () {};
- goog.string.Const = function (a, b) {
- this.stringConstValueWithSecurityContract__googStringSecurityPrivate_ = a === goog.string.Const.GOOG_STRING_CONSTRUCTOR_TOKEN_PRIVATE_ && b || "";
- this.STRING_CONST_TYPE_MARKER__GOOG_STRING_SECURITY_PRIVATE_ = goog.string.Const.TYPE_MARKER_;
- };
- goog.string.Const.prototype.implementsGoogStringTypedString = !0;
- goog.string.Const.prototype.getTypedStringValue = function () {
- return this.stringConstValueWithSecurityContract__googStringSecurityPrivate_;
- };
- goog.DEBUG && (goog.string.Const.prototype.toString = function () {
- return "Const{" + this.stringConstValueWithSecurityContract__googStringSecurityPrivate_ + "}";
- });
- goog.string.Const.unwrap = function (a) {
- if (a instanceof goog.string.Const && a.constructor === goog.string.Const && a.STRING_CONST_TYPE_MARKER__GOOG_STRING_SECURITY_PRIVATE_ === goog.string.Const.TYPE_MARKER_) return a.stringConstValueWithSecurityContract__googStringSecurityPrivate_;
- goog.asserts.fail("expected object of type Const, got '" + a + "'");
- return "type_error:Const";
- };
- goog.string.Const.from = function (a) {
- return new goog.string.Const(goog.string.Const.GOOG_STRING_CONSTRUCTOR_TOKEN_PRIVATE_, a);
- };
- goog.string.Const.TYPE_MARKER_ = {};
- goog.string.Const.GOOG_STRING_CONSTRUCTOR_TOKEN_PRIVATE_ = {};
- goog.string.Const.EMPTY = goog.string.Const.from("");
- goog.html.SafeScript = function () {
- this.privateDoNotAccessOrElseSafeScriptWrappedValue_ = "";
- this.SAFE_SCRIPT_TYPE_MARKER_GOOG_HTML_SECURITY_PRIVATE_ = goog.html.SafeScript.TYPE_MARKER_GOOG_HTML_SECURITY_PRIVATE_;
- };
- goog.html.SafeScript.prototype.implementsGoogStringTypedString = !0;
- goog.html.SafeScript.TYPE_MARKER_GOOG_HTML_SECURITY_PRIVATE_ = {};
- goog.html.SafeScript.fromConstant = function (a) {
- a = goog.string.Const.unwrap(a);
- return 0 === a.length ? goog.html.SafeScript.EMPTY : goog.html.SafeScript.createSafeScriptSecurityPrivateDoNotAccessOrElse(a);
- };
- goog.html.SafeScript.fromConstantAndArgs = function (a, b) {
- for (var c = [], d = 1; d < arguments.length; d++) {
- c.push(goog.html.SafeScript.stringify_(arguments[d]));
- }
- return goog.html.SafeScript.createSafeScriptSecurityPrivateDoNotAccessOrElse("(" + goog.string.Const.unwrap(a) + ")(" + c.join(", ") + ");");
- };
- goog.html.SafeScript.fromJson = function (a) {
- return goog.html.SafeScript.createSafeScriptSecurityPrivateDoNotAccessOrElse(goog.html.SafeScript.stringify_(a));
- };
- goog.html.SafeScript.prototype.getTypedStringValue = function () {
- return this.privateDoNotAccessOrElseSafeScriptWrappedValue_.toString();
- };
- goog.DEBUG && (goog.html.SafeScript.prototype.toString = function () {
- return "SafeScript{" + this.privateDoNotAccessOrElseSafeScriptWrappedValue_ + "}";
- });
- goog.html.SafeScript.unwrap = function (a) {
- return goog.html.SafeScript.unwrapTrustedScript(a).toString();
- };
- goog.html.SafeScript.unwrapTrustedScript = function (a) {
- if (a instanceof goog.html.SafeScript && a.constructor === goog.html.SafeScript && a.SAFE_SCRIPT_TYPE_MARKER_GOOG_HTML_SECURITY_PRIVATE_ === goog.html.SafeScript.TYPE_MARKER_GOOG_HTML_SECURITY_PRIVATE_) return a.privateDoNotAccessOrElseSafeScriptWrappedValue_;
- goog.asserts.fail("expected object of type SafeScript, got '" + a + "' of type " + goog.typeOf(a));
- return "type_error:SafeScript";
- };
- goog.html.SafeScript.stringify_ = function (a) {
- return JSON.stringify(a).replace(/</g, "\\x3c");
- };
- goog.html.SafeScript.createSafeScriptSecurityPrivateDoNotAccessOrElse = function (a) {
- return new goog.html.SafeScript().initSecurityPrivateDoNotAccessOrElse_(a);
- };
- goog.html.SafeScript.prototype.initSecurityPrivateDoNotAccessOrElse_ = function (a) {
- this.privateDoNotAccessOrElseSafeScriptWrappedValue_ = goog.html.trustedtypes.PRIVATE_DO_NOT_ACCESS_OR_ELSE_POLICY ? goog.html.trustedtypes.PRIVATE_DO_NOT_ACCESS_OR_ELSE_POLICY.createScript(a) : a;
- return this;
- };
- goog.html.SafeScript.EMPTY = goog.html.SafeScript.createSafeScriptSecurityPrivateDoNotAccessOrElse("");
- goog.fs = {};
- goog.fs.url = {};
- goog.fs.url.createObjectUrl = function (a) {
- return goog.fs.url.getUrlObject_().createObjectURL(a);
- };
- goog.fs.url.revokeObjectUrl = function (a) {
- goog.fs.url.getUrlObject_().revokeObjectURL(a);
- };
- goog.fs.url.UrlObject_ = function () {};
- goog.fs.url.UrlObject_.prototype.createObjectURL = function (a) {};
- goog.fs.url.UrlObject_.prototype.revokeObjectURL = function (a) {};
- goog.fs.url.getUrlObject_ = function () {
- var a = goog.fs.url.findUrlObject_();
- if (null != a) return a;
- throw Error("This browser doesn't seem to support blob URLs");
- };
- goog.fs.url.findUrlObject_ = function () {
- return void 0 !== goog.global.URL && void 0 !== goog.global.URL.createObjectURL ? goog.global.URL : void 0 !== goog.global.webkitURL && void 0 !== goog.global.webkitURL.createObjectURL ? goog.global.webkitURL : void 0 !== goog.global.createObjectURL ? goog.global : null;
- };
- goog.fs.url.browserSupportsObjectUrls = function () {
- return null != goog.fs.url.findUrlObject_();
- };
- goog.fs.blob = {};
- goog.fs.blob.getBlob = function (a) {
- var b = goog.global.BlobBuilder || goog.global.WebKitBlobBuilder;
- if (void 0 !== b) {
- b = new b();
- for (var c = 0; c < arguments.length; c++) {
- b.append(arguments[c]);
- }
- return b.getBlob();
- }
- return goog.fs.blob.getBlobWithProperties(goog.array.toArray(arguments));
- };
- goog.fs.blob.getBlobWithProperties = function (a, b, c) {
- var d = goog.global.BlobBuilder || goog.global.WebKitBlobBuilder;
- if (void 0 !== d) {
- d = new d();
- for (var e = 0; e < a.length; e++) {
- d.append(a[e], c);
- }
- return d.getBlob(b);
- }
- if (void 0 !== goog.global.Blob) return d = {}, b && (d.type = b), c && (d.endings = c), new Blob(a, d);
- throw Error("This browser doesn't seem to support creating Blobs");
- };
- goog.i18n = {};
- goog.i18n.bidi = {};
- goog.i18n.bidi.FORCE_RTL = !1;
- goog.i18n.bidi.IS_RTL = goog.i18n.bidi.FORCE_RTL || ("ar" == goog.LOCALE.substring(0, 2).toLowerCase() || "fa" == goog.LOCALE.substring(0, 2).toLowerCase() || "he" == goog.LOCALE.substring(0, 2).toLowerCase() || "iw" == goog.LOCALE.substring(0, 2).toLowerCase() || "ps" == goog.LOCALE.substring(0, 2).toLowerCase() || "sd" == goog.LOCALE.substring(0, 2).toLowerCase() || "ug" == goog.LOCALE.substring(0, 2).toLowerCase() || "ur" == goog.LOCALE.substring(0, 2).toLowerCase() || "yi" == goog.LOCALE.substring(0, 2).toLowerCase()) && (2 == goog.LOCALE.length || "-" == goog.LOCALE.substring(2, 3) || "_" == goog.LOCALE.substring(2, 3)) || 3 <= goog.LOCALE.length && "ckb" == goog.LOCALE.substring(0, 3).toLowerCase() && (3 == goog.LOCALE.length || "-" == goog.LOCALE.substring(3, 4) || "_" == goog.LOCALE.substring(3, 4)) || 7 <= goog.LOCALE.length && ("-" == goog.LOCALE.substring(2, 3) || "_" == goog.LOCALE.substring(2, 3)) && ("adlm" == goog.LOCALE.substring(3, 7).toLowerCase() || "arab" == goog.LOCALE.substring(3, 7).toLowerCase() || "hebr" == goog.LOCALE.substring(3, 7).toLowerCase() || "nkoo" == goog.LOCALE.substring(3, 7).toLowerCase() || "rohg" == goog.LOCALE.substring(3, 7).toLowerCase() || "thaa" == goog.LOCALE.substring(3, 7).toLowerCase()) || 8 <= goog.LOCALE.length && ("-" == goog.LOCALE.substring(3, 4) || "_" == goog.LOCALE.substring(3, 4)) && ("adlm" == goog.LOCALE.substring(4, 8).toLowerCase() || "arab" == goog.LOCALE.substring(4, 8).toLowerCase() || "hebr" == goog.LOCALE.substring(4, 8).toLowerCase() || "nkoo" == goog.LOCALE.substring(4, 8).toLowerCase() || "rohg" == goog.LOCALE.substring(4, 8).toLowerCase() || "thaa" == goog.LOCALE.substring(4, 8).toLowerCase());
- goog.i18n.bidi.Format = {
- LRE: "\u202A",
- RLE: "\u202B",
- PDF: "\u202C",
- LRM: "\u200E",
- RLM: "\u200F"
- };
- goog.i18n.bidi.Dir = {
- LTR: 1,
- RTL: -1,
- NEUTRAL: 0
- };
- goog.i18n.bidi.RIGHT = "right";
- goog.i18n.bidi.LEFT = "left";
- goog.i18n.bidi.I18N_RIGHT = goog.i18n.bidi.IS_RTL ? goog.i18n.bidi.LEFT : goog.i18n.bidi.RIGHT;
- goog.i18n.bidi.I18N_LEFT = goog.i18n.bidi.IS_RTL ? goog.i18n.bidi.RIGHT : goog.i18n.bidi.LEFT;
- goog.i18n.bidi.toDir = function (a, b) {
- return "number" == typeof a ? 0 < a ? goog.i18n.bidi.Dir.LTR : 0 > a ? goog.i18n.bidi.Dir.RTL : b ? null : goog.i18n.bidi.Dir.NEUTRAL : null == a ? null : a ? goog.i18n.bidi.Dir.RTL : goog.i18n.bidi.Dir.LTR;
- };
- goog.i18n.bidi.ltrChars_ = "A-Za-z\xC0-\xD6\xD8-\xF6\xF8-\u02B8\u0300-\u0590\u0900-\u1FFF\u200E\u2C00-\uD801\uD804-\uD839\uD83C-\uDBFF\uF900-\uFB1C\uFE00-\uFE6F\uFEFD-\uFFFF";
- goog.i18n.bidi.rtlChars_ = "\u0591-\u06EF\u06FA-\u08FF\u200F\uD802-\uD803\uD83A-\uD83B\uFB1D-\uFDFF\uFE70-\uFEFC";
- goog.i18n.bidi.htmlSkipReg_ = /<[^>]*>|&[^;]+;/g;
- goog.i18n.bidi.stripHtmlIfNeeded_ = function (a, b) {
- return b ? a.replace(goog.i18n.bidi.htmlSkipReg_, "") : a;
- };
- goog.i18n.bidi.rtlCharReg_ = new RegExp("[" + goog.i18n.bidi.rtlChars_ + "]");
- goog.i18n.bidi.ltrCharReg_ = new RegExp("[" + goog.i18n.bidi.ltrChars_ + "]");
- goog.i18n.bidi.hasAnyRtl = function (a, b) {
- return goog.i18n.bidi.rtlCharReg_.test(goog.i18n.bidi.stripHtmlIfNeeded_(a, b));
- };
- goog.i18n.bidi.hasRtlChar = goog.i18n.bidi.hasAnyRtl;
- goog.i18n.bidi.hasAnyLtr = function (a, b) {
- return goog.i18n.bidi.ltrCharReg_.test(goog.i18n.bidi.stripHtmlIfNeeded_(a, b));
- };
- goog.i18n.bidi.ltrRe_ = new RegExp("^[" + goog.i18n.bidi.ltrChars_ + "]");
- goog.i18n.bidi.rtlRe_ = new RegExp("^[" + goog.i18n.bidi.rtlChars_ + "]");
- goog.i18n.bidi.isRtlChar = function (a) {
- return goog.i18n.bidi.rtlRe_.test(a);
- };
- goog.i18n.bidi.isLtrChar = function (a) {
- return goog.i18n.bidi.ltrRe_.test(a);
- };
- goog.i18n.bidi.isNeutralChar = function (a) {
- return !goog.i18n.bidi.isLtrChar(a) && !goog.i18n.bidi.isRtlChar(a);
- };
- goog.i18n.bidi.ltrDirCheckRe_ = new RegExp("^[^" + goog.i18n.bidi.rtlChars_ + "]*[" + goog.i18n.bidi.ltrChars_ + "]");
- goog.i18n.bidi.rtlDirCheckRe_ = new RegExp("^[^" + goog.i18n.bidi.ltrChars_ + "]*[" + goog.i18n.bidi.rtlChars_ + "]");
- goog.i18n.bidi.startsWithRtl = function (a, b) {
- return goog.i18n.bidi.rtlDirCheckRe_.test(goog.i18n.bidi.stripHtmlIfNeeded_(a, b));
- };
- goog.i18n.bidi.isRtlText = goog.i18n.bidi.startsWithRtl;
- goog.i18n.bidi.startsWithLtr = function (a, b) {
- return goog.i18n.bidi.ltrDirCheckRe_.test(goog.i18n.bidi.stripHtmlIfNeeded_(a, b));
- };
- goog.i18n.bidi.isLtrText = goog.i18n.bidi.startsWithLtr;
- goog.i18n.bidi.isRequiredLtrRe_ = /^http:\/\/.*/;
- goog.i18n.bidi.isNeutralText = function (a, b) {
- a = goog.i18n.bidi.stripHtmlIfNeeded_(a, b);
- return goog.i18n.bidi.isRequiredLtrRe_.test(a) || !goog.i18n.bidi.hasAnyLtr(a) && !goog.i18n.bidi.hasAnyRtl(a);
- };
- goog.i18n.bidi.ltrExitDirCheckRe_ = new RegExp("[" + goog.i18n.bidi.ltrChars_ + "][^" + goog.i18n.bidi.rtlChars_ + "]*$");
- goog.i18n.bidi.rtlExitDirCheckRe_ = new RegExp("[" + goog.i18n.bidi.rtlChars_ + "][^" + goog.i18n.bidi.ltrChars_ + "]*$");
- goog.i18n.bidi.endsWithLtr = function (a, b) {
- return goog.i18n.bidi.ltrExitDirCheckRe_.test(goog.i18n.bidi.stripHtmlIfNeeded_(a, b));
- };
- goog.i18n.bidi.isLtrExitText = goog.i18n.bidi.endsWithLtr;
- goog.i18n.bidi.endsWithRtl = function (a, b) {
- return goog.i18n.bidi.rtlExitDirCheckRe_.test(goog.i18n.bidi.stripHtmlIfNeeded_(a, b));
- };
- goog.i18n.bidi.isRtlExitText = goog.i18n.bidi.endsWithRtl;
- goog.i18n.bidi.rtlLocalesRe_ = /^(ar|ckb|dv|he|iw|fa|nqo|ps|sd|ug|ur|yi|.*[-_](Adlm|Arab|Hebr|Nkoo|Rohg|Thaa))(?!.*[-_](Latn|Cyrl)($|-|_))($|-|_)/i;
- goog.i18n.bidi.isRtlLanguage = function (a) {
- return goog.i18n.bidi.rtlLocalesRe_.test(a);
- };
- goog.i18n.bidi.bracketGuardTextRe_ = /(\(.*?\)+)|(\[.*?\]+)|(\{.*?\}+)|(<.*?>+)/g;
- goog.i18n.bidi.guardBracketInText = function (a, b) {
- b = (void 0 === b ? goog.i18n.bidi.hasAnyRtl(a) : b) ? goog.i18n.bidi.Format.RLM : goog.i18n.bidi.Format.LRM;
- return a.replace(goog.i18n.bidi.bracketGuardTextRe_, b + "$&" + b);
- };
- goog.i18n.bidi.enforceRtlInHtml = function (a) {
- return "<" == a.charAt(0) ? a.replace(/<\w+/, "$& dir=rtl") : "\n<span dir=rtl>" + a + "</span>";
- };
- goog.i18n.bidi.enforceRtlInText = function (a) {
- return goog.i18n.bidi.Format.RLE + a + goog.i18n.bidi.Format.PDF;
- };
- goog.i18n.bidi.enforceLtrInHtml = function (a) {
- return "<" == a.charAt(0) ? a.replace(/<\w+/, "$& dir=ltr") : "\n<span dir=ltr>" + a + "</span>";
- };
- goog.i18n.bidi.enforceLtrInText = function (a) {
- return goog.i18n.bidi.Format.LRE + a + goog.i18n.bidi.Format.PDF;
- };
- goog.i18n.bidi.dimensionsRe_ = /:\s*([.\d][.\w]*)\s+([.\d][.\w]*)\s+([.\d][.\w]*)\s+([.\d][.\w]*)/g;
- goog.i18n.bidi.leftRe_ = /left/gi;
- goog.i18n.bidi.rightRe_ = /right/gi;
- goog.i18n.bidi.tempRe_ = /%%%%/g;
- goog.i18n.bidi.mirrorCSS = function (a) {
- return a.replace(goog.i18n.bidi.dimensionsRe_, ":$1 $4 $3 $2").replace(goog.i18n.bidi.leftRe_, "%%%%").replace(goog.i18n.bidi.rightRe_, goog.i18n.bidi.LEFT).replace(goog.i18n.bidi.tempRe_, goog.i18n.bidi.RIGHT);
- };
- goog.i18n.bidi.doubleQuoteSubstituteRe_ = /([\u0591-\u05f2])"/g;
- goog.i18n.bidi.singleQuoteSubstituteRe_ = /([\u0591-\u05f2])'/g;
- goog.i18n.bidi.normalizeHebrewQuote = function (a) {
- return a.replace(goog.i18n.bidi.doubleQuoteSubstituteRe_, "$1\u05F4").replace(goog.i18n.bidi.singleQuoteSubstituteRe_, "$1\u05F3");
- };
- goog.i18n.bidi.wordSeparatorRe_ = /\s+/;
- goog.i18n.bidi.hasNumeralsRe_ = /[\d\u06f0-\u06f9]/;
- goog.i18n.bidi.rtlDetectionThreshold_ = .4;
- goog.i18n.bidi.estimateDirection = function (a, b) {
- var c = 0,
- d = 0,
- e = !1;
- a = goog.i18n.bidi.stripHtmlIfNeeded_(a, b).split(goog.i18n.bidi.wordSeparatorRe_);
- for (b = 0; b < a.length; b++) {
- var f = a[b];
- goog.i18n.bidi.startsWithRtl(f) ? (c++, d++) : goog.i18n.bidi.isRequiredLtrRe_.test(f) ? e = !0 : goog.i18n.bidi.hasAnyLtr(f) ? d++ : goog.i18n.bidi.hasNumeralsRe_.test(f) && (e = !0);
- }
- return 0 == d ? e ? goog.i18n.bidi.Dir.LTR : goog.i18n.bidi.Dir.NEUTRAL : c / d > goog.i18n.bidi.rtlDetectionThreshold_ ? goog.i18n.bidi.Dir.RTL : goog.i18n.bidi.Dir.LTR;
- };
- goog.i18n.bidi.detectRtlDirectionality = function (a, b) {
- return goog.i18n.bidi.estimateDirection(a, b) == goog.i18n.bidi.Dir.RTL;
- };
- goog.i18n.bidi.setElementDirAndAlign = function (a, b) {
- a && (b = goog.i18n.bidi.toDir(b)) && (a.style.textAlign = b == goog.i18n.bidi.Dir.RTL ? goog.i18n.bidi.RIGHT : goog.i18n.bidi.LEFT, a.dir = b == goog.i18n.bidi.Dir.RTL ? "rtl" : "ltr");
- };
- goog.i18n.bidi.setElementDirByTextDirectionality = function (a, b) {
- switch (goog.i18n.bidi.estimateDirection(b)) {
- case goog.i18n.bidi.Dir.LTR:
- a.dir = "ltr";
- break;
- case goog.i18n.bidi.Dir.RTL:
- a.dir = "rtl";
- break;
- default:
- a.removeAttribute("dir");
- }
- };
- goog.i18n.bidi.DirectionalString = function () {};
- goog.html.TrustedResourceUrl = function (a, b) {
- this.privateDoNotAccessOrElseTrustedResourceUrlWrappedValue_ = a === goog.html.TrustedResourceUrl.CONSTRUCTOR_TOKEN_PRIVATE_ && b || "";
- this.TRUSTED_RESOURCE_URL_TYPE_MARKER_GOOG_HTML_SECURITY_PRIVATE_ = goog.html.TrustedResourceUrl.TYPE_MARKER_GOOG_HTML_SECURITY_PRIVATE_;
- };
- goog.html.TrustedResourceUrl.prototype.implementsGoogStringTypedString = !0;
- goog.html.TrustedResourceUrl.prototype.getTypedStringValue = function () {
- return this.privateDoNotAccessOrElseTrustedResourceUrlWrappedValue_.toString();
- };
- goog.html.TrustedResourceUrl.prototype.implementsGoogI18nBidiDirectionalString = !0;
- goog.html.TrustedResourceUrl.prototype.getDirection = function () {
- return goog.i18n.bidi.Dir.LTR;
- };
- goog.html.TrustedResourceUrl.prototype.cloneWithParams = function (a, b) {
- var c = goog.html.TrustedResourceUrl.unwrap(this);
- c = goog.html.TrustedResourceUrl.URL_PARAM_PARSER_.exec(c);
- var d = c[3] || "";
- return goog.html.TrustedResourceUrl.createTrustedResourceUrlSecurityPrivateDoNotAccessOrElse(c[1] + goog.html.TrustedResourceUrl.stringifyParams_("?", c[2] || "", a) + goog.html.TrustedResourceUrl.stringifyParams_("#", d, b));
- };
- goog.DEBUG && (goog.html.TrustedResourceUrl.prototype.toString = function () {
- return "TrustedResourceUrl{" + this.privateDoNotAccessOrElseTrustedResourceUrlWrappedValue_ + "}";
- });
- goog.html.TrustedResourceUrl.unwrap = function (a) {
- return goog.html.TrustedResourceUrl.unwrapTrustedScriptURL(a).toString();
- };
- goog.html.TrustedResourceUrl.unwrapTrustedScriptURL = function (a) {
- if (a instanceof goog.html.TrustedResourceUrl && a.constructor === goog.html.TrustedResourceUrl && a.TRUSTED_RESOURCE_URL_TYPE_MARKER_GOOG_HTML_SECURITY_PRIVATE_ === goog.html.TrustedResourceUrl.TYPE_MARKER_GOOG_HTML_SECURITY_PRIVATE_) return a.privateDoNotAccessOrElseTrustedResourceUrlWrappedValue_;
- goog.asserts.fail("expected object of type TrustedResourceUrl, got '" + a + "' of type " + goog.typeOf(a));
- return "type_error:TrustedResourceUrl";
- };
- goog.html.TrustedResourceUrl.format = function (a, b) {
- var c = goog.string.Const.unwrap(a);
- if (!goog.html.TrustedResourceUrl.BASE_URL_.test(c)) throw Error("Invalid TrustedResourceUrl format: " + c);
- a = c.replace(goog.html.TrustedResourceUrl.FORMAT_MARKER_, function (a, e) {
- if (!Object.prototype.hasOwnProperty.call(b, e)) throw Error('Found marker, "' + e + '", in format string, "' + c + '", but no valid label mapping found in args: ' + JSON.stringify(b));
- a = b[e];
- return a instanceof goog.string.Const ? goog.string.Const.unwrap(a) : encodeURIComponent(String(a));
- });
- return goog.html.TrustedResourceUrl.createTrustedResourceUrlSecurityPrivateDoNotAccessOrElse(a);
- };
- goog.html.TrustedResourceUrl.FORMAT_MARKER_ = /%{(\w+)}/g;
- goog.html.TrustedResourceUrl.BASE_URL_ = /^((https:)?\/\/[0-9a-z.:[\]-]+\/|\/[^/\\]|[^:/\\%]+\/|[^:/\\%]*[?#]|about:blank#)/i;
- goog.html.TrustedResourceUrl.URL_PARAM_PARSER_ = /^([^?#]*)(\?[^#]*)?(#[\s\S]*)?/;
- goog.html.TrustedResourceUrl.formatWithParams = function (a, b, c, d) {
- return goog.html.TrustedResourceUrl.format(a, b).cloneWithParams(c, d);
- };
- goog.html.TrustedResourceUrl.fromConstant = function (a) {
- return goog.html.TrustedResourceUrl.createTrustedResourceUrlSecurityPrivateDoNotAccessOrElse(goog.string.Const.unwrap(a));
- };
- goog.html.TrustedResourceUrl.fromConstants = function (a) {
- for (var b = "", c = 0; c < a.length; c++) {
- b += goog.string.Const.unwrap(a[c]);
- }
- return goog.html.TrustedResourceUrl.createTrustedResourceUrlSecurityPrivateDoNotAccessOrElse(b);
- };
- goog.html.TrustedResourceUrl.fromSafeScript = function (a) {
- a = goog.fs.blob.getBlobWithProperties([goog.html.SafeScript.unwrap(a)], "text/javascript");
- a = goog.fs.url.createObjectUrl(a);
- return goog.html.TrustedResourceUrl.createTrustedResourceUrlSecurityPrivateDoNotAccessOrElse(a);
- };
- goog.html.TrustedResourceUrl.TYPE_MARKER_GOOG_HTML_SECURITY_PRIVATE_ = {};
- goog.html.TrustedResourceUrl.createTrustedResourceUrlSecurityPrivateDoNotAccessOrElse = function (a) {
- a = goog.html.trustedtypes.PRIVATE_DO_NOT_ACCESS_OR_ELSE_POLICY ? goog.html.trustedtypes.PRIVATE_DO_NOT_ACCESS_OR_ELSE_POLICY.createScriptURL(a) : a;
- return new goog.html.TrustedResourceUrl(goog.html.TrustedResourceUrl.CONSTRUCTOR_TOKEN_PRIVATE_, a);
- };
- goog.html.TrustedResourceUrl.stringifyParams_ = function (a, b, c) {
- if (null == c) return b;
- if ("string" === typeof c) return c ? a + encodeURIComponent(c) : "";
- for (var d in c) {
- var e = c[d];
- e = Array.isArray(e) ? e : [e];
- for (var f = 0; f < e.length; f++) {
- var g = e[f];
- null != g && (b || (b = a), b += (b.length > a.length ? "&" : "") + encodeURIComponent(d) + "=" + encodeURIComponent(String(g)));
- }
- }
- return b;
- };
- goog.html.TrustedResourceUrl.CONSTRUCTOR_TOKEN_PRIVATE_ = {};
- goog.string.internal = {};
- goog.string.internal.startsWith = function (a, b) {
- return 0 == a.lastIndexOf(b, 0);
- };
- goog.string.internal.endsWith = function (a, b) {
- var c = a.length - b.length;
- return 0 <= c && a.indexOf(b, c) == c;
- };
- goog.string.internal.caseInsensitiveStartsWith = function (a, b) {
- return 0 == goog.string.internal.caseInsensitiveCompare(b, a.substr(0, b.length));
- };
- goog.string.internal.caseInsensitiveEndsWith = function (a, b) {
- return 0 == goog.string.internal.caseInsensitiveCompare(b, a.substr(a.length - b.length, b.length));
- };
- goog.string.internal.caseInsensitiveEquals = function (a, b) {
- return a.toLowerCase() == b.toLowerCase();
- };
- goog.string.internal.isEmptyOrWhitespace = function (a) {
- return /^[\s\xa0]*$/.test(a);
- };
- goog.string.internal.trim = goog.TRUSTED_SITE && String.prototype.trim ? function (a) {
- return a.trim();
- } : function (a) {
- return /^[\s\xa0]*([\s\S]*?)[\s\xa0]*$/.exec(a)[1];
- };
- goog.string.internal.caseInsensitiveCompare = function (a, b) {
- a = String(a).toLowerCase();
- b = String(b).toLowerCase();
- return a < b ? -1 : a == b ? 0 : 1;
- };
- goog.string.internal.newLineToBr = function (a, b) {
- return a.replace(/(\r\n|\r|\n)/g, b ? "<br />" : "<br>");
- };
- goog.string.internal.htmlEscape = function (a, b) {
- if (b) a = a.replace(goog.string.internal.AMP_RE_, "&").replace(goog.string.internal.LT_RE_, "<").replace(goog.string.internal.GT_RE_, ">").replace(goog.string.internal.QUOT_RE_, """).replace(goog.string.internal.SINGLE_QUOTE_RE_, "'").replace(goog.string.internal.NULL_RE_, "�");else {
- if (!goog.string.internal.ALL_RE_.test(a)) return a;
- -1 != a.indexOf("&") && (a = a.replace(goog.string.internal.AMP_RE_, "&"));
- -1 != a.indexOf("<") && (a = a.replace(goog.string.internal.LT_RE_, "<"));
- -1 != a.indexOf(">") && (a = a.replace(goog.string.internal.GT_RE_, ">"));
- -1 != a.indexOf('"') && (a = a.replace(goog.string.internal.QUOT_RE_, """));
- -1 != a.indexOf("'") && (a = a.replace(goog.string.internal.SINGLE_QUOTE_RE_, "'"));
- -1 != a.indexOf("\x00") && (a = a.replace(goog.string.internal.NULL_RE_, "�"));
- }
- return a;
- };
- goog.string.internal.AMP_RE_ = /&/g;
- goog.string.internal.LT_RE_ = /</g;
- goog.string.internal.GT_RE_ = />/g;
- goog.string.internal.QUOT_RE_ = /"/g;
- goog.string.internal.SINGLE_QUOTE_RE_ = /'/g;
- goog.string.internal.NULL_RE_ = /\x00/g;
- goog.string.internal.ALL_RE_ = /[\x00&<>"']/;
- goog.string.internal.whitespaceEscape = function (a, b) {
- return goog.string.internal.newLineToBr(a.replace(/ /g, "  "), b);
- };
- goog.string.internal.contains = function (a, b) {
- return -1 != a.indexOf(b);
- };
- goog.string.internal.caseInsensitiveContains = function (a, b) {
- return goog.string.internal.contains(a.toLowerCase(), b.toLowerCase());
- };
- goog.string.internal.compareVersions = function (a, b) {
- var c = 0;
- a = goog.string.internal.trim(String(a)).split(".");
- b = goog.string.internal.trim(String(b)).split(".");
- for (var d = Math.max(a.length, b.length), e = 0; 0 == c && e < d; e++) {
- var f = a[e] || "",
- g = b[e] || "";
- do {
- f = /(\d*)(\D*)(.*)/.exec(f) || ["", "", "", ""];
- g = /(\d*)(\D*)(.*)/.exec(g) || ["", "", "", ""];
- if (0 == f[0].length && 0 == g[0].length) break;
- c = 0 == f[1].length ? 0 : parseInt(f[1], 10);
- var h = 0 == g[1].length ? 0 : parseInt(g[1], 10);
- c = goog.string.internal.compareElements_(c, h) || goog.string.internal.compareElements_(0 == f[2].length, 0 == g[2].length) || goog.string.internal.compareElements_(f[2], g[2]);
- f = f[3];
- g = g[3];
- } while (0 == c);
- }
- return c;
- };
- goog.string.internal.compareElements_ = function (a, b) {
- return a < b ? -1 : a > b ? 1 : 0;
- };
- goog.html.SafeUrl = function (a, b) {
- this.privateDoNotAccessOrElseSafeUrlWrappedValue_ = a === goog.html.SafeUrl.CONSTRUCTOR_TOKEN_PRIVATE_ && b || "";
- this.SAFE_URL_TYPE_MARKER_GOOG_HTML_SECURITY_PRIVATE_ = goog.html.SafeUrl.TYPE_MARKER_GOOG_HTML_SECURITY_PRIVATE_;
- };
- goog.html.SafeUrl.INNOCUOUS_STRING = "about:invalid#zClosurez";
- goog.html.SafeUrl.prototype.implementsGoogStringTypedString = !0;
- goog.html.SafeUrl.prototype.getTypedStringValue = function () {
- return this.privateDoNotAccessOrElseSafeUrlWrappedValue_.toString();
- };
- goog.html.SafeUrl.prototype.implementsGoogI18nBidiDirectionalString = !0;
- goog.html.SafeUrl.prototype.getDirection = function () {
- return goog.i18n.bidi.Dir.LTR;
- };
- goog.DEBUG && (goog.html.SafeUrl.prototype.toString = function () {
- return "SafeUrl{" + this.privateDoNotAccessOrElseSafeUrlWrappedValue_ + "}";
- });
- goog.html.SafeUrl.unwrap = function (a) {
- if (a instanceof goog.html.SafeUrl && a.constructor === goog.html.SafeUrl && a.SAFE_URL_TYPE_MARKER_GOOG_HTML_SECURITY_PRIVATE_ === goog.html.SafeUrl.TYPE_MARKER_GOOG_HTML_SECURITY_PRIVATE_) return a.privateDoNotAccessOrElseSafeUrlWrappedValue_;
- goog.asserts.fail("expected object of type SafeUrl, got '" + a + "' of type " + goog.typeOf(a));
- return "type_error:SafeUrl";
- };
- goog.html.SafeUrl.fromConstant = function (a) {
- return goog.html.SafeUrl.createSafeUrlSecurityPrivateDoNotAccessOrElse(goog.string.Const.unwrap(a));
- };
- goog.html.SAFE_MIME_TYPE_PATTERN_ = /^(?:audio\/(?:3gpp2|3gpp|aac|L16|midi|mp3|mp4|mpeg|oga|ogg|opus|x-m4a|x-matroska|x-wav|wav|webm)|image\/(?:bmp|gif|jpeg|jpg|png|tiff|webp|x-icon)|text\/csv|video\/(?:mpeg|mp4|ogg|webm|quicktime|x-matroska))(?:;\w+=(?:\w+|"[\w;,= ]+"))*$/i;
- goog.html.SafeUrl.isSafeMimeType = function (a) {
- return goog.html.SAFE_MIME_TYPE_PATTERN_.test(a);
- };
- goog.html.SafeUrl.fromBlob = function (a) {
- a = goog.html.SafeUrl.isSafeMimeType(a.type) ? goog.fs.url.createObjectUrl(a) : goog.html.SafeUrl.INNOCUOUS_STRING;
- return goog.html.SafeUrl.createSafeUrlSecurityPrivateDoNotAccessOrElse(a);
- };
- goog.html.SafeUrl.fromMediaSource = function (a) {
- goog.asserts.assert("MediaSource" in goog.global, "No support for MediaSource");
- a = a instanceof MediaSource ? goog.fs.url.createObjectUrl(a) : goog.html.SafeUrl.INNOCUOUS_STRING;
- return goog.html.SafeUrl.createSafeUrlSecurityPrivateDoNotAccessOrElse(a);
- };
- goog.html.DATA_URL_PATTERN_ = /^data:(.*);base64,[a-z0-9+\/]+=*$/i;
- goog.html.SafeUrl.fromDataUrl = function (a) {
- a = a.replace(/(%0A|%0D)/g, "");
- var b = a.match(goog.html.DATA_URL_PATTERN_);
- b = b && goog.html.SafeUrl.isSafeMimeType(b[1]);
- return goog.html.SafeUrl.createSafeUrlSecurityPrivateDoNotAccessOrElse(b ? a : goog.html.SafeUrl.INNOCUOUS_STRING);
- };
- goog.html.SafeUrl.fromTelUrl = function (a) {
- goog.string.internal.caseInsensitiveStartsWith(a, "tel:") || (a = goog.html.SafeUrl.INNOCUOUS_STRING);
- return goog.html.SafeUrl.createSafeUrlSecurityPrivateDoNotAccessOrElse(a);
- };
- goog.html.SIP_URL_PATTERN_ = /^sip[s]?:[+a-z0-9_.!$%&'*\/=^`{|}~-]+@([a-z0-9-]+\.)+[a-z0-9]{2,63}$/i;
- goog.html.SafeUrl.fromSipUrl = function (a) {
- goog.html.SIP_URL_PATTERN_.test(decodeURIComponent(a)) || (a = goog.html.SafeUrl.INNOCUOUS_STRING);
- return goog.html.SafeUrl.createSafeUrlSecurityPrivateDoNotAccessOrElse(a);
- };
- goog.html.SafeUrl.fromFacebookMessengerUrl = function (a) {
- goog.string.internal.caseInsensitiveStartsWith(a, "fb-messenger://share") || (a = goog.html.SafeUrl.INNOCUOUS_STRING);
- return goog.html.SafeUrl.createSafeUrlSecurityPrivateDoNotAccessOrElse(a);
- };
- goog.html.SafeUrl.fromWhatsAppUrl = function (a) {
- goog.string.internal.caseInsensitiveStartsWith(a, "whatsapp://send") || (a = goog.html.SafeUrl.INNOCUOUS_STRING);
- return goog.html.SafeUrl.createSafeUrlSecurityPrivateDoNotAccessOrElse(a);
- };
- goog.html.SafeUrl.fromSmsUrl = function (a) {
- goog.string.internal.caseInsensitiveStartsWith(a, "sms:") && goog.html.SafeUrl.isSmsUrlBodyValid_(a) || (a = goog.html.SafeUrl.INNOCUOUS_STRING);
- return goog.html.SafeUrl.createSafeUrlSecurityPrivateDoNotAccessOrElse(a);
- };
- goog.html.SafeUrl.isSmsUrlBodyValid_ = function (a) {
- var b = a.indexOf("#");
- 0 < b && (a = a.substring(0, b));
- b = a.match(/[?&]body=/gi);
- if (!b) return !0;
- if (1 < b.length) return !1;
- a = a.match(/[?&]body=([^&]*)/)[1];
- if (!a) return !0;
- try {
- decodeURIComponent(a);
- } catch (c) {
- return !1;
- }
- return /^(?:[a-z0-9\-_.~]|%[0-9a-f]{2})+$/i.test(a);
- };
- goog.html.SafeUrl.fromSshUrl = function (a) {
- goog.string.internal.caseInsensitiveStartsWith(a, "ssh://") || (a = goog.html.SafeUrl.INNOCUOUS_STRING);
- return goog.html.SafeUrl.createSafeUrlSecurityPrivateDoNotAccessOrElse(a);
- };
- goog.html.SafeUrl.sanitizeChromeExtensionUrl = function (a, b) {
- return goog.html.SafeUrl.sanitizeExtensionUrl_(/^chrome-extension:\/\/([^\/]+)\//, a, b);
- };
- goog.html.SafeUrl.sanitizeFirefoxExtensionUrl = function (a, b) {
- return goog.html.SafeUrl.sanitizeExtensionUrl_(/^moz-extension:\/\/([^\/]+)\//, a, b);
- };
- goog.html.SafeUrl.sanitizeEdgeExtensionUrl = function (a, b) {
- return goog.html.SafeUrl.sanitizeExtensionUrl_(/^ms-browser-extension:\/\/([^\/]+)\//, a, b);
- };
- goog.html.SafeUrl.sanitizeExtensionUrl_ = function (a, b, c) {
- (a = a.exec(b)) ? (a = a[1], -1 == (c instanceof goog.string.Const ? [goog.string.Const.unwrap(c)] : c.map(function (a) {
- return goog.string.Const.unwrap(a);
- })).indexOf(a) && (b = goog.html.SafeUrl.INNOCUOUS_STRING)) : b = goog.html.SafeUrl.INNOCUOUS_STRING;
- return goog.html.SafeUrl.createSafeUrlSecurityPrivateDoNotAccessOrElse(b);
- };
- goog.html.SafeUrl.fromTrustedResourceUrl = function (a) {
- return goog.html.SafeUrl.createSafeUrlSecurityPrivateDoNotAccessOrElse(goog.html.TrustedResourceUrl.unwrap(a));
- };
- goog.html.SAFE_URL_PATTERN_ = /^(?:(?:https?|mailto|ftp):|[^:/?#]*(?:[/?#]|$))/i;
- goog.html.SafeUrl.SAFE_URL_PATTERN = goog.html.SAFE_URL_PATTERN_;
- goog.html.SafeUrl.sanitize = function (a) {
- if (a instanceof goog.html.SafeUrl) return a;
- a = "object" == _typeof(a) && a.implementsGoogStringTypedString ? a.getTypedStringValue() : String(a);
- goog.html.SAFE_URL_PATTERN_.test(a) || (a = goog.html.SafeUrl.INNOCUOUS_STRING);
- return goog.html.SafeUrl.createSafeUrlSecurityPrivateDoNotAccessOrElse(a);
- };
- goog.html.SafeUrl.sanitizeAssertUnchanged = function (a, b) {
- if (a instanceof goog.html.SafeUrl) return a;
- a = "object" == _typeof(a) && a.implementsGoogStringTypedString ? a.getTypedStringValue() : String(a);
- if (b && /^data:/i.test(a) && (b = goog.html.SafeUrl.fromDataUrl(a), b.getTypedStringValue() == a)) return b;
- goog.asserts.assert(goog.html.SAFE_URL_PATTERN_.test(a), "%s does not match the safe URL pattern", a) || (a = goog.html.SafeUrl.INNOCUOUS_STRING);
- return goog.html.SafeUrl.createSafeUrlSecurityPrivateDoNotAccessOrElse(a);
- };
- goog.html.SafeUrl.TYPE_MARKER_GOOG_HTML_SECURITY_PRIVATE_ = {};
- goog.html.SafeUrl.createSafeUrlSecurityPrivateDoNotAccessOrElse = function (a) {
- return new goog.html.SafeUrl(goog.html.SafeUrl.CONSTRUCTOR_TOKEN_PRIVATE_, a);
- };
- goog.html.SafeUrl.ABOUT_BLANK = goog.html.SafeUrl.createSafeUrlSecurityPrivateDoNotAccessOrElse("about:blank");
- goog.html.SafeUrl.CONSTRUCTOR_TOKEN_PRIVATE_ = {};
- goog.html.SafeStyle = function () {
- this.privateDoNotAccessOrElseSafeStyleWrappedValue_ = "";
- this.SAFE_STYLE_TYPE_MARKER_GOOG_HTML_SECURITY_PRIVATE_ = goog.html.SafeStyle.TYPE_MARKER_GOOG_HTML_SECURITY_PRIVATE_;
- };
- goog.html.SafeStyle.prototype.implementsGoogStringTypedString = !0;
- goog.html.SafeStyle.TYPE_MARKER_GOOG_HTML_SECURITY_PRIVATE_ = {};
- goog.html.SafeStyle.fromConstant = function (a) {
- a = goog.string.Const.unwrap(a);
- if (0 === a.length) return goog.html.SafeStyle.EMPTY;
- goog.asserts.assert(goog.string.internal.endsWith(a, ";"), "Last character of style string is not ';': " + a);
- goog.asserts.assert(goog.string.internal.contains(a, ":"), "Style string must contain at least one ':', to specify a \"name: value\" pair: " + a);
- return goog.html.SafeStyle.createSafeStyleSecurityPrivateDoNotAccessOrElse(a);
- };
- goog.html.SafeStyle.prototype.getTypedStringValue = function () {
- return this.privateDoNotAccessOrElseSafeStyleWrappedValue_;
- };
- goog.DEBUG && (goog.html.SafeStyle.prototype.toString = function () {
- return "SafeStyle{" + this.privateDoNotAccessOrElseSafeStyleWrappedValue_ + "}";
- });
- goog.html.SafeStyle.unwrap = function (a) {
- if (a instanceof goog.html.SafeStyle && a.constructor === goog.html.SafeStyle && a.SAFE_STYLE_TYPE_MARKER_GOOG_HTML_SECURITY_PRIVATE_ === goog.html.SafeStyle.TYPE_MARKER_GOOG_HTML_SECURITY_PRIVATE_) return a.privateDoNotAccessOrElseSafeStyleWrappedValue_;
- goog.asserts.fail("expected object of type SafeStyle, got '" + a + "' of type " + goog.typeOf(a));
- return "type_error:SafeStyle";
- };
- goog.html.SafeStyle.createSafeStyleSecurityPrivateDoNotAccessOrElse = function (a) {
- return new goog.html.SafeStyle().initSecurityPrivateDoNotAccessOrElse_(a);
- };
- goog.html.SafeStyle.prototype.initSecurityPrivateDoNotAccessOrElse_ = function (a) {
- this.privateDoNotAccessOrElseSafeStyleWrappedValue_ = a;
- return this;
- };
- goog.html.SafeStyle.EMPTY = goog.html.SafeStyle.createSafeStyleSecurityPrivateDoNotAccessOrElse("");
- goog.html.SafeStyle.INNOCUOUS_STRING = "zClosurez";
- goog.html.SafeStyle.create = function (a) {
- var b = "",
- c;
- for (c in a) {
- if (!/^[-_a-zA-Z0-9]+$/.test(c)) throw Error("Name allows only [-_a-zA-Z0-9], got: " + c);
- var d = a[c];
- null != d && (d = Array.isArray(d) ? goog.array.map(d, goog.html.SafeStyle.sanitizePropertyValue_).join(" ") : goog.html.SafeStyle.sanitizePropertyValue_(d), b += c + ":" + d + ";");
- }
- return b ? goog.html.SafeStyle.createSafeStyleSecurityPrivateDoNotAccessOrElse(b) : goog.html.SafeStyle.EMPTY;
- };
- goog.html.SafeStyle.sanitizePropertyValue_ = function (a) {
- if (a instanceof goog.html.SafeUrl) return 'url("' + goog.html.SafeUrl.unwrap(a).replace(/</g, "%3c").replace(/[\\"]/g, "\\$&") + '")';
- a = a instanceof goog.string.Const ? goog.string.Const.unwrap(a) : goog.html.SafeStyle.sanitizePropertyValueString_(String(a));
- if (/[{;}]/.test(a)) throw new goog.asserts.AssertionError("Value does not allow [{;}], got: %s.", [a]);
- return a;
- };
- goog.html.SafeStyle.sanitizePropertyValueString_ = function (a) {
- var b = a.replace(goog.html.SafeStyle.FUNCTIONS_RE_, "$1").replace(goog.html.SafeStyle.FUNCTIONS_RE_, "$1").replace(goog.html.SafeStyle.URL_RE_, "url");
- if (goog.html.SafeStyle.VALUE_RE_.test(b)) {
- if (goog.html.SafeStyle.COMMENT_RE_.test(a)) return goog.asserts.fail("String value disallows comments, got: " + a), goog.html.SafeStyle.INNOCUOUS_STRING;
- if (!goog.html.SafeStyle.hasBalancedQuotes_(a)) return goog.asserts.fail("String value requires balanced quotes, got: " + a), goog.html.SafeStyle.INNOCUOUS_STRING;
- if (!goog.html.SafeStyle.hasBalancedSquareBrackets_(a)) return goog.asserts.fail("String value requires balanced square brackets and one identifier per pair of brackets, got: " + a), goog.html.SafeStyle.INNOCUOUS_STRING;
- } else return goog.asserts.fail("String value allows only " + goog.html.SafeStyle.VALUE_ALLOWED_CHARS_ + " and simple functions, got: " + a), goog.html.SafeStyle.INNOCUOUS_STRING;
- return goog.html.SafeStyle.sanitizeUrl_(a);
- };
- goog.html.SafeStyle.hasBalancedQuotes_ = function (a) {
- for (var b = !0, c = !0, d = 0; d < a.length; d++) {
- var e = a.charAt(d);
- "'" == e && c ? b = !b : '"' == e && b && (c = !c);
- }
- return b && c;
- };
- goog.html.SafeStyle.hasBalancedSquareBrackets_ = function (a) {
- for (var b = !0, c = /^[-_a-zA-Z0-9]$/, d = 0; d < a.length; d++) {
- var e = a.charAt(d);
- if ("]" == e) {
- if (b) return !1;
- b = !0;
- } else if ("[" == e) {
- if (!b) return !1;
- b = !1;
- } else if (!b && !c.test(e)) return !1;
- }
- return b;
- };
- goog.html.SafeStyle.VALUE_ALLOWED_CHARS_ = "[-,.\"'%_!# a-zA-Z0-9\\[\\]]";
- goog.html.SafeStyle.VALUE_RE_ = new RegExp("^" + goog.html.SafeStyle.VALUE_ALLOWED_CHARS_ + "+$");
- goog.html.SafeStyle.URL_RE_ = /\b(url\([ \t\n]*)('[ -&(-\[\]-~]*'|"[ !#-\[\]-~]*"|[!#-&*-\[\]-~]*)([ \t\n]*\))/g;
- goog.html.SafeStyle.ALLOWED_FUNCTIONS_ = "calc cubic-bezier fit-content hsl hsla linear-gradient matrix minmax repeat rgb rgba (rotate|scale|translate)(X|Y|Z|3d)?".split(" ");
- goog.html.SafeStyle.FUNCTIONS_RE_ = new RegExp("\\b(" + goog.html.SafeStyle.ALLOWED_FUNCTIONS_.join("|") + ")\\([-+*/0-9a-z.%\\[\\], ]+\\)", "g");
- goog.html.SafeStyle.COMMENT_RE_ = /\/\*/;
- goog.html.SafeStyle.sanitizeUrl_ = function (a) {
- return a.replace(goog.html.SafeStyle.URL_RE_, function (a, c, d, e) {
- var b = "";
- d = d.replace(/^(['"])(.*)\1$/, function (a, c, d) {
- b = c;
- return d;
- });
- a = goog.html.SafeUrl.sanitize(d).getTypedStringValue();
- return c + b + a + b + e;
- });
- };
- goog.html.SafeStyle.concat = function (a) {
- var b = "",
- c = function c(a) {
- Array.isArray(a) ? goog.array.forEach(a, c) : b += goog.html.SafeStyle.unwrap(a);
- };
- goog.array.forEach(arguments, c);
- return b ? goog.html.SafeStyle.createSafeStyleSecurityPrivateDoNotAccessOrElse(b) : goog.html.SafeStyle.EMPTY;
- };
- goog.html.SafeStyleSheet = function () {
- this.privateDoNotAccessOrElseSafeStyleSheetWrappedValue_ = "";
- this.SAFE_STYLE_SHEET_TYPE_MARKER_GOOG_HTML_SECURITY_PRIVATE_ = goog.html.SafeStyleSheet.TYPE_MARKER_GOOG_HTML_SECURITY_PRIVATE_;
- };
- goog.html.SafeStyleSheet.prototype.implementsGoogStringTypedString = !0;
- goog.html.SafeStyleSheet.TYPE_MARKER_GOOG_HTML_SECURITY_PRIVATE_ = {};
- goog.html.SafeStyleSheet.createRule = function (a, b) {
- if (goog.string.internal.contains(a, "<")) throw Error("Selector does not allow '<', got: " + a);
- var c = a.replace(/('|")((?!\1)[^\r\n\f\\]|\\[\s\S])*\1/g, "");
- if (!/^[-_a-zA-Z0-9#.:* ,>+~[\]()=^$|]+$/.test(c)) throw Error("Selector allows only [-_a-zA-Z0-9#.:* ,>+~[\\]()=^$|] and strings, got: " + a);
- if (!goog.html.SafeStyleSheet.hasBalancedBrackets_(c)) throw Error("() and [] in selector must be balanced, got: " + a);
- b instanceof goog.html.SafeStyle || (b = goog.html.SafeStyle.create(b));
- a = a + "{" + goog.html.SafeStyle.unwrap(b).replace(/</g, "\\3C ") + "}";
- return goog.html.SafeStyleSheet.createSafeStyleSheetSecurityPrivateDoNotAccessOrElse(a);
- };
- goog.html.SafeStyleSheet.hasBalancedBrackets_ = function (a) {
- for (var b = {
- "(": ")",
- "[": "]"
- }, c = [], d = 0; d < a.length; d++) {
- var e = a[d];
- if (b[e]) c.push(b[e]);else if (goog.object.contains(b, e) && c.pop() != e) return !1;
- }
- return 0 == c.length;
- };
- goog.html.SafeStyleSheet.concat = function (a) {
- var b = "",
- c = function c(a) {
- Array.isArray(a) ? goog.array.forEach(a, c) : b += goog.html.SafeStyleSheet.unwrap(a);
- };
- goog.array.forEach(arguments, c);
- return goog.html.SafeStyleSheet.createSafeStyleSheetSecurityPrivateDoNotAccessOrElse(b);
- };
- goog.html.SafeStyleSheet.fromConstant = function (a) {
- a = goog.string.Const.unwrap(a);
- if (0 === a.length) return goog.html.SafeStyleSheet.EMPTY;
- goog.asserts.assert(!goog.string.internal.contains(a, "<"), "Forbidden '<' character in style sheet string: " + a);
- return goog.html.SafeStyleSheet.createSafeStyleSheetSecurityPrivateDoNotAccessOrElse(a);
- };
- goog.html.SafeStyleSheet.prototype.getTypedStringValue = function () {
- return this.privateDoNotAccessOrElseSafeStyleSheetWrappedValue_;
- };
- goog.DEBUG && (goog.html.SafeStyleSheet.prototype.toString = function () {
- return "SafeStyleSheet{" + this.privateDoNotAccessOrElseSafeStyleSheetWrappedValue_ + "}";
- });
- goog.html.SafeStyleSheet.unwrap = function (a) {
- if (a instanceof goog.html.SafeStyleSheet && a.constructor === goog.html.SafeStyleSheet && a.SAFE_STYLE_SHEET_TYPE_MARKER_GOOG_HTML_SECURITY_PRIVATE_ === goog.html.SafeStyleSheet.TYPE_MARKER_GOOG_HTML_SECURITY_PRIVATE_) return a.privateDoNotAccessOrElseSafeStyleSheetWrappedValue_;
- goog.asserts.fail("expected object of type SafeStyleSheet, got '" + a + "' of type " + goog.typeOf(a));
- return "type_error:SafeStyleSheet";
- };
- goog.html.SafeStyleSheet.createSafeStyleSheetSecurityPrivateDoNotAccessOrElse = function (a) {
- return new goog.html.SafeStyleSheet().initSecurityPrivateDoNotAccessOrElse_(a);
- };
- goog.html.SafeStyleSheet.prototype.initSecurityPrivateDoNotAccessOrElse_ = function (a) {
- this.privateDoNotAccessOrElseSafeStyleSheetWrappedValue_ = a;
- return this;
- };
- goog.html.SafeStyleSheet.EMPTY = goog.html.SafeStyleSheet.createSafeStyleSheetSecurityPrivateDoNotAccessOrElse("");
- goog.labs = {};
- goog.labs.userAgent = {};
- goog.labs.userAgent.util = {};
- goog.labs.userAgent.util.getNativeUserAgentString_ = function () {
- var a = goog.labs.userAgent.util.getNavigator_();
- return a && (a = a.userAgent) ? a : "";
- };
- goog.labs.userAgent.util.getNavigator_ = function () {
- return goog.global.navigator;
- };
- goog.labs.userAgent.util.userAgent_ = goog.labs.userAgent.util.getNativeUserAgentString_();
- goog.labs.userAgent.util.setUserAgent = function (a) {
- goog.labs.userAgent.util.userAgent_ = a || goog.labs.userAgent.util.getNativeUserAgentString_();
- };
- goog.labs.userAgent.util.getUserAgent = function () {
- return goog.labs.userAgent.util.userAgent_;
- };
- goog.labs.userAgent.util.matchUserAgent = function (a) {
- var b = goog.labs.userAgent.util.getUserAgent();
- return goog.string.internal.contains(b, a);
- };
- goog.labs.userAgent.util.matchUserAgentIgnoreCase = function (a) {
- var b = goog.labs.userAgent.util.getUserAgent();
- return goog.string.internal.caseInsensitiveContains(b, a);
- };
- goog.labs.userAgent.util.extractVersionTuples = function (a) {
- for (var b = /(\w[\w ]+)\/([^\s]+)\s*(?:\((.*?)\))?/g, c = [], d; d = b.exec(a);) {
- c.push([d[1], d[2], d[3] || void 0]);
- }
- return c;
- };
- goog.labs.userAgent.browser = {};
- goog.labs.userAgent.browser.matchOpera_ = function () {
- return goog.labs.userAgent.util.matchUserAgent("Opera");
- };
- goog.labs.userAgent.browser.matchIE_ = function () {
- return goog.labs.userAgent.util.matchUserAgent("Trident") || goog.labs.userAgent.util.matchUserAgent("MSIE");
- };
- goog.labs.userAgent.browser.matchEdgeHtml_ = function () {
- return goog.labs.userAgent.util.matchUserAgent("Edge");
- };
- goog.labs.userAgent.browser.matchEdgeChromium_ = function () {
- return goog.labs.userAgent.util.matchUserAgent("Edg/");
- };
- goog.labs.userAgent.browser.matchOperaChromium_ = function () {
- return goog.labs.userAgent.util.matchUserAgent("OPR");
- };
- goog.labs.userAgent.browser.matchFirefox_ = function () {
- return goog.labs.userAgent.util.matchUserAgent("Firefox") || goog.labs.userAgent.util.matchUserAgent("FxiOS");
- };
- goog.labs.userAgent.browser.matchSafari_ = function () {
- return goog.labs.userAgent.util.matchUserAgent("Safari") && !(goog.labs.userAgent.browser.matchChrome_() || goog.labs.userAgent.browser.matchCoast_() || goog.labs.userAgent.browser.matchOpera_() || goog.labs.userAgent.browser.matchEdgeHtml_() || goog.labs.userAgent.browser.matchEdgeChromium_() || goog.labs.userAgent.browser.matchOperaChromium_() || goog.labs.userAgent.browser.matchFirefox_() || goog.labs.userAgent.browser.isSilk() || goog.labs.userAgent.util.matchUserAgent("Android"));
- };
- goog.labs.userAgent.browser.matchCoast_ = function () {
- return goog.labs.userAgent.util.matchUserAgent("Coast");
- };
- goog.labs.userAgent.browser.matchIosWebview_ = function () {
- return (goog.labs.userAgent.util.matchUserAgent("iPad") || goog.labs.userAgent.util.matchUserAgent("iPhone")) && !goog.labs.userAgent.browser.matchSafari_() && !goog.labs.userAgent.browser.matchChrome_() && !goog.labs.userAgent.browser.matchCoast_() && !goog.labs.userAgent.browser.matchFirefox_() && goog.labs.userAgent.util.matchUserAgent("AppleWebKit");
- };
- goog.labs.userAgent.browser.matchChrome_ = function () {
- return (goog.labs.userAgent.util.matchUserAgent("Chrome") || goog.labs.userAgent.util.matchUserAgent("CriOS")) && !goog.labs.userAgent.browser.matchEdgeHtml_();
- };
- goog.labs.userAgent.browser.matchAndroidBrowser_ = function () {
- return goog.labs.userAgent.util.matchUserAgent("Android") && !(goog.labs.userAgent.browser.isChrome() || goog.labs.userAgent.browser.isFirefox() || goog.labs.userAgent.browser.isOpera() || goog.labs.userAgent.browser.isSilk());
- };
- goog.labs.userAgent.browser.isOpera = goog.labs.userAgent.browser.matchOpera_;
- goog.labs.userAgent.browser.isIE = goog.labs.userAgent.browser.matchIE_;
- goog.labs.userAgent.browser.isEdge = goog.labs.userAgent.browser.matchEdgeHtml_;
- goog.labs.userAgent.browser.isEdgeChromium = goog.labs.userAgent.browser.matchEdgeChromium_;
- goog.labs.userAgent.browser.isOperaChromium = goog.labs.userAgent.browser.matchOperaChromium_;
- goog.labs.userAgent.browser.isFirefox = goog.labs.userAgent.browser.matchFirefox_;
- goog.labs.userAgent.browser.isSafari = goog.labs.userAgent.browser.matchSafari_;
- goog.labs.userAgent.browser.isCoast = goog.labs.userAgent.browser.matchCoast_;
- goog.labs.userAgent.browser.isIosWebview = goog.labs.userAgent.browser.matchIosWebview_;
- goog.labs.userAgent.browser.isChrome = goog.labs.userAgent.browser.matchChrome_;
- goog.labs.userAgent.browser.isAndroidBrowser = goog.labs.userAgent.browser.matchAndroidBrowser_;
- goog.labs.userAgent.browser.isSilk = function () {
- return goog.labs.userAgent.util.matchUserAgent("Silk");
- };
- goog.labs.userAgent.browser.getVersion = function () {
- function a(a) {
- a = goog.array.find(a, d);
- return c[a] || "";
- }
- var b = goog.labs.userAgent.util.getUserAgent();
- if (goog.labs.userAgent.browser.isIE()) return goog.labs.userAgent.browser.getIEVersion_(b);
- b = goog.labs.userAgent.util.extractVersionTuples(b);
- var c = {};
- goog.array.forEach(b, function (a) {
- c[a[0]] = a[1];
- });
- var d = goog.partial(goog.object.containsKey, c);
- return goog.labs.userAgent.browser.isOpera() ? a(["Version", "Opera"]) : goog.labs.userAgent.browser.isEdge() ? a(["Edge"]) : goog.labs.userAgent.browser.isEdgeChromium() ? a(["Edg"]) : goog.labs.userAgent.browser.isChrome() ? a(["Chrome", "CriOS", "HeadlessChrome"]) : (b = b[2]) && b[1] || "";
- };
- goog.labs.userAgent.browser.isVersionOrHigher = function (a) {
- return 0 <= goog.string.internal.compareVersions(goog.labs.userAgent.browser.getVersion(), a);
- };
- goog.labs.userAgent.browser.getIEVersion_ = function (a) {
- var b = /rv: *([\d\.]*)/.exec(a);
- if (b && b[1]) return b[1];
- b = "";
- var c = /MSIE +([\d\.]+)/.exec(a);
- if (c && c[1]) if (a = /Trident\/(\d.\d)/.exec(a), "7.0" == c[1]) {
- if (a && a[1]) switch (a[1]) {
- case "4.0":
- b = "8.0";
- break;
- case "5.0":
- b = "9.0";
- break;
- case "6.0":
- b = "10.0";
- break;
- case "7.0":
- b = "11.0";
- } else b = "7.0";
- } else b = c[1];
- return b;
- };
- goog.html.SafeHtml = function () {
- this.privateDoNotAccessOrElseSafeHtmlWrappedValue_ = "";
- this.SAFE_HTML_TYPE_MARKER_GOOG_HTML_SECURITY_PRIVATE_ = goog.html.SafeHtml.TYPE_MARKER_GOOG_HTML_SECURITY_PRIVATE_;
- this.dir_ = null;
- };
- goog.html.SafeHtml.ENABLE_ERROR_MESSAGES = goog.DEBUG;
- goog.html.SafeHtml.SUPPORT_STYLE_ATTRIBUTE = !0;
- goog.html.SafeHtml.prototype.implementsGoogI18nBidiDirectionalString = !0;
- goog.html.SafeHtml.prototype.getDirection = function () {
- return this.dir_;
- };
- goog.html.SafeHtml.prototype.implementsGoogStringTypedString = !0;
- goog.html.SafeHtml.prototype.getTypedStringValue = function () {
- return this.privateDoNotAccessOrElseSafeHtmlWrappedValue_.toString();
- };
- goog.DEBUG && (goog.html.SafeHtml.prototype.toString = function () {
- return "SafeHtml{" + this.privateDoNotAccessOrElseSafeHtmlWrappedValue_ + "}";
- });
- goog.html.SafeHtml.unwrap = function (a) {
- return goog.html.SafeHtml.unwrapTrustedHTML(a).toString();
- };
- goog.html.SafeHtml.unwrapTrustedHTML = function (a) {
- if (a instanceof goog.html.SafeHtml && a.constructor === goog.html.SafeHtml && a.SAFE_HTML_TYPE_MARKER_GOOG_HTML_SECURITY_PRIVATE_ === goog.html.SafeHtml.TYPE_MARKER_GOOG_HTML_SECURITY_PRIVATE_) return a.privateDoNotAccessOrElseSafeHtmlWrappedValue_;
- goog.asserts.fail("expected object of type SafeHtml, got '" + a + "' of type " + goog.typeOf(a));
- return "type_error:SafeHtml";
- };
- goog.html.SafeHtml.htmlEscape = function (a) {
- if (a instanceof goog.html.SafeHtml) return a;
- var b = "object" == _typeof(a),
- c = null;
- b && a.implementsGoogI18nBidiDirectionalString && (c = a.getDirection());
- a = b && a.implementsGoogStringTypedString ? a.getTypedStringValue() : String(a);
- return goog.html.SafeHtml.createSafeHtmlSecurityPrivateDoNotAccessOrElse(goog.string.internal.htmlEscape(a), c);
- };
- goog.html.SafeHtml.htmlEscapePreservingNewlines = function (a) {
- if (a instanceof goog.html.SafeHtml) return a;
- a = goog.html.SafeHtml.htmlEscape(a);
- return goog.html.SafeHtml.createSafeHtmlSecurityPrivateDoNotAccessOrElse(goog.string.internal.newLineToBr(goog.html.SafeHtml.unwrap(a)), a.getDirection());
- };
- goog.html.SafeHtml.htmlEscapePreservingNewlinesAndSpaces = function (a) {
- if (a instanceof goog.html.SafeHtml) return a;
- a = goog.html.SafeHtml.htmlEscape(a);
- return goog.html.SafeHtml.createSafeHtmlSecurityPrivateDoNotAccessOrElse(goog.string.internal.whitespaceEscape(goog.html.SafeHtml.unwrap(a)), a.getDirection());
- };
- goog.html.SafeHtml.from = goog.html.SafeHtml.htmlEscape;
- goog.html.SafeHtml.comment = function (a) {
- return goog.html.SafeHtml.createSafeHtmlSecurityPrivateDoNotAccessOrElse("\x3c!--" + goog.string.internal.htmlEscape(a) + "--\x3e", null);
- };
- goog.html.SafeHtml.VALID_NAMES_IN_TAG_ = /^[a-zA-Z0-9-]+$/;
- goog.html.SafeHtml.URL_ATTRIBUTES_ = {
- action: !0,
- cite: !0,
- data: !0,
- formaction: !0,
- href: !0,
- manifest: !0,
- poster: !0,
- src: !0
- };
- goog.html.SafeHtml.NOT_ALLOWED_TAG_NAMES_ = {
- APPLET: !0,
- BASE: !0,
- EMBED: !0,
- IFRAME: !0,
- LINK: !0,
- MATH: !0,
- META: !0,
- OBJECT: !0,
- SCRIPT: !0,
- STYLE: !0,
- SVG: !0,
- TEMPLATE: !0
- };
- goog.html.SafeHtml.create = function (a, b, c) {
- goog.html.SafeHtml.verifyTagName(String(a));
- return goog.html.SafeHtml.createSafeHtmlTagSecurityPrivateDoNotAccessOrElse(String(a), b, c);
- };
- goog.html.SafeHtml.verifyTagName = function (a) {
- if (!goog.html.SafeHtml.VALID_NAMES_IN_TAG_.test(a)) throw Error(goog.html.SafeHtml.ENABLE_ERROR_MESSAGES ? "Invalid tag name <" + a + ">." : "");
- if (a.toUpperCase() in goog.html.SafeHtml.NOT_ALLOWED_TAG_NAMES_) throw Error(goog.html.SafeHtml.ENABLE_ERROR_MESSAGES ? "Tag name <" + a + "> is not allowed for SafeHtml." : "");
- };
- goog.html.SafeHtml.createIframe = function (a, b, c, d) {
- a && goog.html.TrustedResourceUrl.unwrap(a);
- var e = {};
- e.src = a || null;
- e.srcdoc = b && goog.html.SafeHtml.unwrap(b);
- a = goog.html.SafeHtml.combineAttributes(e, {
- sandbox: ""
- }, c);
- return goog.html.SafeHtml.createSafeHtmlTagSecurityPrivateDoNotAccessOrElse("iframe", a, d);
- };
- goog.html.SafeHtml.createSandboxIframe = function (a, b, c, d) {
- if (!goog.html.SafeHtml.canUseSandboxIframe()) throw Error(goog.html.SafeHtml.ENABLE_ERROR_MESSAGES ? "The browser does not support sandboxed iframes." : "");
- var e = {};
- e.src = a ? goog.html.SafeUrl.unwrap(goog.html.SafeUrl.sanitize(a)) : null;
- e.srcdoc = b || null;
- e.sandbox = "";
- a = goog.html.SafeHtml.combineAttributes(e, {}, c);
- return goog.html.SafeHtml.createSafeHtmlTagSecurityPrivateDoNotAccessOrElse("iframe", a, d);
- };
- goog.html.SafeHtml.canUseSandboxIframe = function () {
- return goog.global.HTMLIFrameElement && "sandbox" in goog.global.HTMLIFrameElement.prototype;
- };
- goog.html.SafeHtml.createScriptSrc = function (a, b) {
- goog.html.TrustedResourceUrl.unwrap(a);
- a = goog.html.SafeHtml.combineAttributes({
- src: a
- }, {}, b);
- return goog.html.SafeHtml.createSafeHtmlTagSecurityPrivateDoNotAccessOrElse("script", a);
- };
- goog.html.SafeHtml.createScript = function (a, b) {
- for (var c in b) {
- var d = c.toLowerCase();
- if ("language" == d || "src" == d || "text" == d || "type" == d) throw Error(goog.html.SafeHtml.ENABLE_ERROR_MESSAGES ? 'Cannot set "' + d + '" attribute' : "");
- }
- c = "";
- a = goog.array.concat(a);
- for (d = 0; d < a.length; d++) {
- c += goog.html.SafeScript.unwrap(a[d]);
- }
- a = goog.html.SafeHtml.createSafeHtmlSecurityPrivateDoNotAccessOrElse(c, goog.i18n.bidi.Dir.NEUTRAL);
- return goog.html.SafeHtml.createSafeHtmlTagSecurityPrivateDoNotAccessOrElse("script", b, a);
- };
- goog.html.SafeHtml.createStyle = function (a, b) {
- b = goog.html.SafeHtml.combineAttributes({
- type: "text/css"
- }, {}, b);
- var c = "";
- a = goog.array.concat(a);
- for (var d = 0; d < a.length; d++) {
- c += goog.html.SafeStyleSheet.unwrap(a[d]);
- }
- a = goog.html.SafeHtml.createSafeHtmlSecurityPrivateDoNotAccessOrElse(c, goog.i18n.bidi.Dir.NEUTRAL);
- return goog.html.SafeHtml.createSafeHtmlTagSecurityPrivateDoNotAccessOrElse("style", b, a);
- };
- goog.html.SafeHtml.createMetaRefresh = function (a, b) {
- a = goog.html.SafeUrl.unwrap(goog.html.SafeUrl.sanitize(a));
- (goog.labs.userAgent.browser.isIE() || goog.labs.userAgent.browser.isEdge()) && goog.string.internal.contains(a, ";") && (a = "'" + a.replace(/'/g, "%27") + "'");
- return goog.html.SafeHtml.createSafeHtmlTagSecurityPrivateDoNotAccessOrElse("meta", {
- "http-equiv": "refresh",
- content: (b || 0) + "; url=" + a
- });
- };
- goog.html.SafeHtml.getAttrNameAndValue_ = function (a, b, c) {
- if (c instanceof goog.string.Const) c = goog.string.Const.unwrap(c);else if ("style" == b.toLowerCase()) {
- if (goog.html.SafeHtml.SUPPORT_STYLE_ATTRIBUTE) c = goog.html.SafeHtml.getStyleValue_(c);else throw Error(goog.html.SafeHtml.ENABLE_ERROR_MESSAGES ? 'Attribute "style" not supported.' : "");
- } else {
- if (/^on/i.test(b)) throw Error(goog.html.SafeHtml.ENABLE_ERROR_MESSAGES ? 'Attribute "' + b + '" requires goog.string.Const value, "' + c + '" given.' : "");
- if (b.toLowerCase() in goog.html.SafeHtml.URL_ATTRIBUTES_) if (c instanceof goog.html.TrustedResourceUrl) c = goog.html.TrustedResourceUrl.unwrap(c);else if (c instanceof goog.html.SafeUrl) c = goog.html.SafeUrl.unwrap(c);else if ("string" === typeof c) c = goog.html.SafeUrl.sanitize(c).getTypedStringValue();else throw Error(goog.html.SafeHtml.ENABLE_ERROR_MESSAGES ? 'Attribute "' + b + '" on tag "' + a + '" requires goog.html.SafeUrl, goog.string.Const, or string, value "' + c + '" given.' : "");
- }
- c.implementsGoogStringTypedString && (c = c.getTypedStringValue());
- goog.asserts.assert("string" === typeof c || "number" === typeof c, "String or number value expected, got " + _typeof(c) + " with value: " + c);
- return b + '="' + goog.string.internal.htmlEscape(String(c)) + '"';
- };
- goog.html.SafeHtml.getStyleValue_ = function (a) {
- if (!goog.isObject(a)) throw Error(goog.html.SafeHtml.ENABLE_ERROR_MESSAGES ? 'The "style" attribute requires goog.html.SafeStyle or map of style properties, ' + _typeof(a) + " given: " + a : "");
- a instanceof goog.html.SafeStyle || (a = goog.html.SafeStyle.create(a));
- return goog.html.SafeStyle.unwrap(a);
- };
- goog.html.SafeHtml.createWithDir = function (a, b, c, d) {
- b = goog.html.SafeHtml.create(b, c, d);
- b.dir_ = a;
- return b;
- };
- goog.html.SafeHtml.join = function (a, b) {
- a = goog.html.SafeHtml.htmlEscape(a);
- var c = a.getDirection(),
- d = [],
- e = function e(a) {
- Array.isArray(a) ? goog.array.forEach(a, e) : (a = goog.html.SafeHtml.htmlEscape(a), d.push(goog.html.SafeHtml.unwrap(a)), a = a.getDirection(), c == goog.i18n.bidi.Dir.NEUTRAL ? c = a : a != goog.i18n.bidi.Dir.NEUTRAL && c != a && (c = null));
- };
- goog.array.forEach(b, e);
- return goog.html.SafeHtml.createSafeHtmlSecurityPrivateDoNotAccessOrElse(d.join(goog.html.SafeHtml.unwrap(a)), c);
- };
- goog.html.SafeHtml.concat = function (a) {
- return goog.html.SafeHtml.join(goog.html.SafeHtml.EMPTY, Array.prototype.slice.call(arguments));
- };
- goog.html.SafeHtml.concatWithDir = function (a, b) {
- var c = goog.html.SafeHtml.concat(goog.array.slice(arguments, 1));
- c.dir_ = a;
- return c;
- };
- goog.html.SafeHtml.TYPE_MARKER_GOOG_HTML_SECURITY_PRIVATE_ = {};
- goog.html.SafeHtml.createSafeHtmlSecurityPrivateDoNotAccessOrElse = function (a, b) {
- return new goog.html.SafeHtml().initSecurityPrivateDoNotAccessOrElse_(a, b);
- };
- goog.html.SafeHtml.prototype.initSecurityPrivateDoNotAccessOrElse_ = function (a, b) {
- this.privateDoNotAccessOrElseSafeHtmlWrappedValue_ = goog.html.trustedtypes.PRIVATE_DO_NOT_ACCESS_OR_ELSE_POLICY ? goog.html.trustedtypes.PRIVATE_DO_NOT_ACCESS_OR_ELSE_POLICY.createHTML(a) : a;
- this.dir_ = b;
- return this;
- };
- goog.html.SafeHtml.createSafeHtmlTagSecurityPrivateDoNotAccessOrElse = function (a, b, c) {
- var d = null;
- var e = "<" + a + goog.html.SafeHtml.stringifyAttributes(a, b);
- null == c ? c = [] : Array.isArray(c) || (c = [c]);
- goog.dom.tags.isVoidTag(a.toLowerCase()) ? (goog.asserts.assert(!c.length, "Void tag <" + a + "> does not allow content."), e += ">") : (d = goog.html.SafeHtml.concat(c), e += ">" + goog.html.SafeHtml.unwrap(d) + "</" + a + ">", d = d.getDirection());
- (a = b && b.dir) && (d = /^(ltr|rtl|auto)$/i.test(a) ? goog.i18n.bidi.Dir.NEUTRAL : null);
- return goog.html.SafeHtml.createSafeHtmlSecurityPrivateDoNotAccessOrElse(e, d);
- };
- goog.html.SafeHtml.stringifyAttributes = function (a, b) {
- var c = "";
- if (b) for (var d in b) {
- if (!goog.html.SafeHtml.VALID_NAMES_IN_TAG_.test(d)) throw Error(goog.html.SafeHtml.ENABLE_ERROR_MESSAGES ? 'Invalid attribute name "' + d + '".' : "");
- var e = b[d];
- null != e && (c += " " + goog.html.SafeHtml.getAttrNameAndValue_(a, d, e));
- }
- return c;
- };
- goog.html.SafeHtml.combineAttributes = function (a, b, c) {
- var d = {},
- e;
- for (e in a) {
- goog.asserts.assert(e.toLowerCase() == e, "Must be lower case"), d[e] = a[e];
- }
- for (e in b) {
- goog.asserts.assert(e.toLowerCase() == e, "Must be lower case"), d[e] = b[e];
- }
- if (c) for (e in c) {
- var f = e.toLowerCase();
- if (f in a) throw Error(goog.html.SafeHtml.ENABLE_ERROR_MESSAGES ? 'Cannot override "' + f + '" attribute, got "' + e + '" with value "' + c[e] + '"' : "");
- f in b && delete d[f];
- d[e] = c[e];
- }
- return d;
- };
- goog.html.SafeHtml.DOCTYPE_HTML = goog.html.SafeHtml.createSafeHtmlSecurityPrivateDoNotAccessOrElse("<!DOCTYPE html>", goog.i18n.bidi.Dir.NEUTRAL);
- goog.html.SafeHtml.EMPTY = goog.html.SafeHtml.createSafeHtmlSecurityPrivateDoNotAccessOrElse("", goog.i18n.bidi.Dir.NEUTRAL);
- goog.html.SafeHtml.BR = goog.html.SafeHtml.createSafeHtmlSecurityPrivateDoNotAccessOrElse("<br>", goog.i18n.bidi.Dir.NEUTRAL);
- goog.html.uncheckedconversions = {};
- goog.html.uncheckedconversions.safeHtmlFromStringKnownToSatisfyTypeContract = function (a, b, c) {
- goog.asserts.assertString(goog.string.Const.unwrap(a), "must provide justification");
- goog.asserts.assert(!goog.string.internal.isEmptyOrWhitespace(goog.string.Const.unwrap(a)), "must provide non-empty justification");
- return goog.html.SafeHtml.createSafeHtmlSecurityPrivateDoNotAccessOrElse(b, c || null);
- };
- goog.html.uncheckedconversions.safeScriptFromStringKnownToSatisfyTypeContract = function (a, b) {
- goog.asserts.assertString(goog.string.Const.unwrap(a), "must provide justification");
- goog.asserts.assert(!goog.string.internal.isEmptyOrWhitespace(goog.string.Const.unwrap(a)), "must provide non-empty justification");
- return goog.html.SafeScript.createSafeScriptSecurityPrivateDoNotAccessOrElse(b);
- };
- goog.html.uncheckedconversions.safeStyleFromStringKnownToSatisfyTypeContract = function (a, b) {
- goog.asserts.assertString(goog.string.Const.unwrap(a), "must provide justification");
- goog.asserts.assert(!goog.string.internal.isEmptyOrWhitespace(goog.string.Const.unwrap(a)), "must provide non-empty justification");
- return goog.html.SafeStyle.createSafeStyleSecurityPrivateDoNotAccessOrElse(b);
- };
- goog.html.uncheckedconversions.safeStyleSheetFromStringKnownToSatisfyTypeContract = function (a, b) {
- goog.asserts.assertString(goog.string.Const.unwrap(a), "must provide justification");
- goog.asserts.assert(!goog.string.internal.isEmptyOrWhitespace(goog.string.Const.unwrap(a)), "must provide non-empty justification");
- return goog.html.SafeStyleSheet.createSafeStyleSheetSecurityPrivateDoNotAccessOrElse(b);
- };
- goog.html.uncheckedconversions.safeUrlFromStringKnownToSatisfyTypeContract = function (a, b) {
- goog.asserts.assertString(goog.string.Const.unwrap(a), "must provide justification");
- goog.asserts.assert(!goog.string.internal.isEmptyOrWhitespace(goog.string.Const.unwrap(a)), "must provide non-empty justification");
- return goog.html.SafeUrl.createSafeUrlSecurityPrivateDoNotAccessOrElse(b);
- };
- goog.html.uncheckedconversions.trustedResourceUrlFromStringKnownToSatisfyTypeContract = function (a, b) {
- goog.asserts.assertString(goog.string.Const.unwrap(a), "must provide justification");
- goog.asserts.assert(!goog.string.internal.isEmptyOrWhitespace(goog.string.Const.unwrap(a)), "must provide non-empty justification");
- return goog.html.TrustedResourceUrl.createTrustedResourceUrlSecurityPrivateDoNotAccessOrElse(b);
- };
- goog.dom.safe = {};
- goog.dom.safe.InsertAdjacentHtmlPosition = {
- AFTERBEGIN: "afterbegin",
- AFTEREND: "afterend",
- BEFOREBEGIN: "beforebegin",
- BEFOREEND: "beforeend"
- };
- goog.dom.safe.insertAdjacentHtml = function (a, b, c) {
- a.insertAdjacentHTML(b, goog.html.SafeHtml.unwrapTrustedHTML(c));
- };
- goog.dom.safe.SET_INNER_HTML_DISALLOWED_TAGS_ = {
- MATH: !0,
- SCRIPT: !0,
- STYLE: !0,
- SVG: !0,
- TEMPLATE: !0
- };
- goog.dom.safe.isInnerHtmlCleanupRecursive_ = goog.functions.cacheReturnValue(function () {
- if (goog.DEBUG && "undefined" === typeof document) return !1;
- var a = document.createElement("div"),
- b = document.createElement("div");
- b.appendChild(document.createElement("div"));
- a.appendChild(b);
- if (goog.DEBUG && !a.firstChild) return !1;
- b = a.firstChild.firstChild;
- a.innerHTML = goog.html.SafeHtml.unwrapTrustedHTML(goog.html.SafeHtml.EMPTY);
- return !b.parentElement;
- });
- goog.dom.safe.unsafeSetInnerHtmlDoNotUseOrElse = function (a, b) {
- if (goog.dom.safe.isInnerHtmlCleanupRecursive_()) for (; a.lastChild;) {
- a.removeChild(a.lastChild);
- }
- a.innerHTML = goog.html.SafeHtml.unwrapTrustedHTML(b);
- };
- goog.dom.safe.setInnerHtml = function (a, b) {
- if (goog.asserts.ENABLE_ASSERTS) {
- var c = a.tagName.toUpperCase();
- if (goog.dom.safe.SET_INNER_HTML_DISALLOWED_TAGS_[c]) throw Error("goog.dom.safe.setInnerHtml cannot be used to set content of " + a.tagName + ".");
- }
- goog.dom.safe.unsafeSetInnerHtmlDoNotUseOrElse(a, b);
- };
- goog.dom.safe.setOuterHtml = function (a, b) {
- a.outerHTML = goog.html.SafeHtml.unwrapTrustedHTML(b);
- };
- goog.dom.safe.setFormElementAction = function (a, b) {
- b = b instanceof goog.html.SafeUrl ? b : goog.html.SafeUrl.sanitizeAssertUnchanged(b);
- goog.dom.asserts.assertIsHTMLFormElement(a).action = goog.html.SafeUrl.unwrap(b);
- };
- goog.dom.safe.setButtonFormAction = function (a, b) {
- b = b instanceof goog.html.SafeUrl ? b : goog.html.SafeUrl.sanitizeAssertUnchanged(b);
- goog.dom.asserts.assertIsHTMLButtonElement(a).formAction = goog.html.SafeUrl.unwrap(b);
- };
- goog.dom.safe.setInputFormAction = function (a, b) {
- b = b instanceof goog.html.SafeUrl ? b : goog.html.SafeUrl.sanitizeAssertUnchanged(b);
- goog.dom.asserts.assertIsHTMLInputElement(a).formAction = goog.html.SafeUrl.unwrap(b);
- };
- goog.dom.safe.setStyle = function (a, b) {
- a.style.cssText = goog.html.SafeStyle.unwrap(b);
- };
- goog.dom.safe.documentWrite = function (a, b) {
- a.write(goog.html.SafeHtml.unwrapTrustedHTML(b));
- };
- goog.dom.safe.setAnchorHref = function (a, b) {
- goog.dom.asserts.assertIsHTMLAnchorElement(a);
- b = b instanceof goog.html.SafeUrl ? b : goog.html.SafeUrl.sanitizeAssertUnchanged(b);
- a.href = goog.html.SafeUrl.unwrap(b);
- };
- goog.dom.safe.setImageSrc = function (a, b) {
- goog.dom.asserts.assertIsHTMLImageElement(a);
- if (!(b instanceof goog.html.SafeUrl)) {
- var c = /^data:image\//i.test(b);
- b = goog.html.SafeUrl.sanitizeAssertUnchanged(b, c);
- }
- a.src = goog.html.SafeUrl.unwrap(b);
- };
- goog.dom.safe.setAudioSrc = function (a, b) {
- goog.dom.asserts.assertIsHTMLAudioElement(a);
- if (!(b instanceof goog.html.SafeUrl)) {
- var c = /^data:audio\//i.test(b);
- b = goog.html.SafeUrl.sanitizeAssertUnchanged(b, c);
- }
- a.src = goog.html.SafeUrl.unwrap(b);
- };
- goog.dom.safe.setVideoSrc = function (a, b) {
- goog.dom.asserts.assertIsHTMLVideoElement(a);
- if (!(b instanceof goog.html.SafeUrl)) {
- var c = /^data:video\//i.test(b);
- b = goog.html.SafeUrl.sanitizeAssertUnchanged(b, c);
- }
- a.src = goog.html.SafeUrl.unwrap(b);
- };
- goog.dom.safe.setEmbedSrc = function (a, b) {
- goog.dom.asserts.assertIsHTMLEmbedElement(a);
- a.src = goog.html.TrustedResourceUrl.unwrapTrustedScriptURL(b);
- };
- goog.dom.safe.setFrameSrc = function (a, b) {
- goog.dom.asserts.assertIsHTMLFrameElement(a);
- a.src = goog.html.TrustedResourceUrl.unwrap(b);
- };
- goog.dom.safe.setIframeSrc = function (a, b) {
- goog.dom.asserts.assertIsHTMLIFrameElement(a);
- a.src = goog.html.TrustedResourceUrl.unwrap(b);
- };
- goog.dom.safe.setIframeSrcdoc = function (a, b) {
- goog.dom.asserts.assertIsHTMLIFrameElement(a);
- a.srcdoc = goog.html.SafeHtml.unwrapTrustedHTML(b);
- };
- goog.dom.safe.setLinkHrefAndRel = function (a, b, c) {
- goog.dom.asserts.assertIsHTMLLinkElement(a);
- a.rel = c;
- goog.string.internal.caseInsensitiveContains(c, "stylesheet") ? (goog.asserts.assert(b instanceof goog.html.TrustedResourceUrl, 'URL must be TrustedResourceUrl because "rel" contains "stylesheet"'), a.href = goog.html.TrustedResourceUrl.unwrap(b)) : a.href = b instanceof goog.html.TrustedResourceUrl ? goog.html.TrustedResourceUrl.unwrap(b) : b instanceof goog.html.SafeUrl ? goog.html.SafeUrl.unwrap(b) : goog.html.SafeUrl.unwrap(goog.html.SafeUrl.sanitizeAssertUnchanged(b));
- };
- goog.dom.safe.setObjectData = function (a, b) {
- goog.dom.asserts.assertIsHTMLObjectElement(a);
- a.data = goog.html.TrustedResourceUrl.unwrapTrustedScriptURL(b);
- };
- goog.dom.safe.setScriptSrc = function (a, b) {
- goog.dom.asserts.assertIsHTMLScriptElement(a);
- a.src = goog.html.TrustedResourceUrl.unwrapTrustedScriptURL(b);
- (b = goog.getScriptNonce()) && a.setAttribute("nonce", b);
- };
- goog.dom.safe.setScriptContent = function (a, b) {
- goog.dom.asserts.assertIsHTMLScriptElement(a);
- a.text = goog.html.SafeScript.unwrapTrustedScript(b);
- (b = goog.getScriptNonce()) && a.setAttribute("nonce", b);
- };
- goog.dom.safe.setLocationHref = function (a, b) {
- goog.dom.asserts.assertIsLocation(a);
- b = b instanceof goog.html.SafeUrl ? b : goog.html.SafeUrl.sanitizeAssertUnchanged(b);
- a.href = goog.html.SafeUrl.unwrap(b);
- };
- goog.dom.safe.assignLocation = function (a, b) {
- goog.dom.asserts.assertIsLocation(a);
- b = b instanceof goog.html.SafeUrl ? b : goog.html.SafeUrl.sanitizeAssertUnchanged(b);
- a.assign(goog.html.SafeUrl.unwrap(b));
- };
- goog.dom.safe.replaceLocation = function (a, b) {
- b = b instanceof goog.html.SafeUrl ? b : goog.html.SafeUrl.sanitizeAssertUnchanged(b);
- a.replace(goog.html.SafeUrl.unwrap(b));
- };
- goog.dom.safe.openInWindow = function (a, b, c, d, e) {
- a = a instanceof goog.html.SafeUrl ? a : goog.html.SafeUrl.sanitizeAssertUnchanged(a);
- b = b || goog.global;
- c = c instanceof goog.string.Const ? goog.string.Const.unwrap(c) : c || "";
- return b.open(goog.html.SafeUrl.unwrap(a), c, d, e);
- };
- goog.dom.safe.parseFromStringHtml = function (a, b) {
- return goog.dom.safe.parseFromString(a, b, "text/html");
- };
- goog.dom.safe.parseFromString = function (a, b, c) {
- return a.parseFromString(goog.html.SafeHtml.unwrapTrustedHTML(b), c);
- };
- goog.dom.safe.createImageFromBlob = function (a) {
- if (!/^image\/.*/g.test(a.type)) throw Error("goog.dom.safe.createImageFromBlob only accepts MIME type image/.*.");
- var b = goog.global.URL.createObjectURL(a);
- a = new goog.global.Image();
- a.onload = function () {
- goog.global.URL.revokeObjectURL(b);
- };
- goog.dom.safe.setImageSrc(a, goog.html.uncheckedconversions.safeUrlFromStringKnownToSatisfyTypeContract(goog.string.Const.from("Image blob URL."), b));
- return a;
- };
- goog.string.DETECT_DOUBLE_ESCAPING = !1;
- goog.string.FORCE_NON_DOM_HTML_UNESCAPING = !1;
- goog.string.Unicode = {
- NBSP: "\xA0"
- };
- goog.string.startsWith = goog.string.internal.startsWith;
- goog.string.endsWith = goog.string.internal.endsWith;
- goog.string.caseInsensitiveStartsWith = goog.string.internal.caseInsensitiveStartsWith;
- goog.string.caseInsensitiveEndsWith = goog.string.internal.caseInsensitiveEndsWith;
- goog.string.caseInsensitiveEquals = goog.string.internal.caseInsensitiveEquals;
- goog.string.subs = function (a, b) {
- for (var c = a.split("%s"), d = "", e = Array.prototype.slice.call(arguments, 1); e.length && 1 < c.length;) {
- d += c.shift() + e.shift();
- }
- return d + c.join("%s");
- };
- goog.string.collapseWhitespace = function (a) {
- return a.replace(/[\s\xa0]+/g, " ").replace(/^\s+|\s+$/g, "");
- };
- goog.string.isEmptyOrWhitespace = goog.string.internal.isEmptyOrWhitespace;
- goog.string.isEmptyString = function (a) {
- return 0 == a.length;
- };
- goog.string.isEmpty = goog.string.isEmptyOrWhitespace;
- goog.string.isEmptyOrWhitespaceSafe = function (a) {
- return goog.string.isEmptyOrWhitespace(goog.string.makeSafe(a));
- };
- goog.string.isEmptySafe = goog.string.isEmptyOrWhitespaceSafe;
- goog.string.isBreakingWhitespace = function (a) {
- return !/[^\t\n\r ]/.test(a);
- };
- goog.string.isAlpha = function (a) {
- return !/[^a-zA-Z]/.test(a);
- };
- goog.string.isNumeric = function (a) {
- return !/[^0-9]/.test(a);
- };
- goog.string.isAlphaNumeric = function (a) {
- return !/[^a-zA-Z0-9]/.test(a);
- };
- goog.string.isSpace = function (a) {
- return " " == a;
- };
- goog.string.isUnicodeChar = function (a) {
- return 1 == a.length && " " <= a && "~" >= a || "\x80" <= a && "\uFFFD" >= a;
- };
- goog.string.stripNewlines = function (a) {
- return a.replace(/(\r\n|\r|\n)+/g, " ");
- };
- goog.string.canonicalizeNewlines = function (a) {
- return a.replace(/(\r\n|\r|\n)/g, "\n");
- };
- goog.string.normalizeWhitespace = function (a) {
- return a.replace(/\xa0|\s/g, " ");
- };
- goog.string.normalizeSpaces = function (a) {
- return a.replace(/\xa0|[ \t]+/g, " ");
- };
- goog.string.collapseBreakingSpaces = function (a) {
- return a.replace(/[\t\r\n ]+/g, " ").replace(/^[\t\r\n ]+|[\t\r\n ]+$/g, "");
- };
- goog.string.trim = goog.string.internal.trim;
- goog.string.trimLeft = function (a) {
- return a.replace(/^[\s\xa0]+/, "");
- };
- goog.string.trimRight = function (a) {
- return a.replace(/[\s\xa0]+$/, "");
- };
- goog.string.caseInsensitiveCompare = goog.string.internal.caseInsensitiveCompare;
- goog.string.numberAwareCompare_ = function (a, b, c) {
- if (a == b) return 0;
- if (!a) return -1;
- if (!b) return 1;
- for (var d = a.toLowerCase().match(c), e = b.toLowerCase().match(c), f = Math.min(d.length, e.length), g = 0; g < f; g++) {
- c = d[g];
- var h = e[g];
- if (c != h) return a = parseInt(c, 10), !isNaN(a) && (b = parseInt(h, 10), !isNaN(b) && a - b) ? a - b : c < h ? -1 : 1;
- }
- return d.length != e.length ? d.length - e.length : a < b ? -1 : 1;
- };
- goog.string.intAwareCompare = function (a, b) {
- return goog.string.numberAwareCompare_(a, b, /\d+|\D+/g);
- };
- goog.string.floatAwareCompare = function (a, b) {
- return goog.string.numberAwareCompare_(a, b, /\d+|\.\d+|\D+/g);
- };
- goog.string.numerateCompare = goog.string.floatAwareCompare;
- goog.string.urlEncode = function (a) {
- return encodeURIComponent(String(a));
- };
- goog.string.urlDecode = function (a) {
- return decodeURIComponent(a.replace(/\+/g, " "));
- };
- goog.string.newLineToBr = goog.string.internal.newLineToBr;
- goog.string.htmlEscape = function (a, b) {
- a = goog.string.internal.htmlEscape(a, b);
- goog.string.DETECT_DOUBLE_ESCAPING && (a = a.replace(goog.string.E_RE_, "e"));
- return a;
- };
- goog.string.E_RE_ = /e/g;
- goog.string.unescapeEntities = function (a) {
- return goog.string.contains(a, "&") ? !goog.string.FORCE_NON_DOM_HTML_UNESCAPING && "document" in goog.global ? goog.string.unescapeEntitiesUsingDom_(a) : goog.string.unescapePureXmlEntities_(a) : a;
- };
- goog.string.unescapeEntitiesWithDocument = function (a, b) {
- return goog.string.contains(a, "&") ? goog.string.unescapeEntitiesUsingDom_(a, b) : a;
- };
- goog.string.unescapeEntitiesUsingDom_ = function (a, b) {
- var c = {
- "&": "&",
- "<": "<",
- ">": ">",
- """: '"'
- };
- var d = b ? b.createElement("div") : goog.global.document.createElement("div");
- return a.replace(goog.string.HTML_ENTITY_PATTERN_, function (a, b) {
- var e = c[a];
- if (e) return e;
- "#" == b.charAt(0) && (b = Number("0" + b.substr(1)), isNaN(b) || (e = String.fromCharCode(b)));
- e || (goog.dom.safe.setInnerHtml(d, goog.html.uncheckedconversions.safeHtmlFromStringKnownToSatisfyTypeContract(goog.string.Const.from("Single HTML entity."), a + " ")), e = d.firstChild.nodeValue.slice(0, -1));
- return c[a] = e;
- });
- };
- goog.string.unescapePureXmlEntities_ = function (a) {
- return a.replace(/&([^;]+);/g, function (a, c) {
- switch (c) {
- case "amp":
- return "&";
- case "lt":
- return "<";
- case "gt":
- return ">";
- case "quot":
- return '"';
- default:
- return "#" != c.charAt(0) || (c = Number("0" + c.substr(1)), isNaN(c)) ? a : String.fromCharCode(c);
- }
- });
- };
- goog.string.HTML_ENTITY_PATTERN_ = /&([^;\s<&]+);?/g;
- goog.string.whitespaceEscape = function (a, b) {
- return goog.string.newLineToBr(a.replace(/ /g, "  "), b);
- };
- goog.string.preserveSpaces = function (a) {
- return a.replace(/(^|[\n ]) /g, "$1" + goog.string.Unicode.NBSP);
- };
- goog.string.stripQuotes = function (a, b) {
- for (var c = b.length, d = 0; d < c; d++) {
- var e = 1 == c ? b : b.charAt(d);
- if (a.charAt(0) == e && a.charAt(a.length - 1) == e) return a.substring(1, a.length - 1);
- }
- return a;
- };
- goog.string.truncate = function (a, b, c) {
- c && (a = goog.string.unescapeEntities(a));
- a.length > b && (a = a.substring(0, b - 3) + "...");
- c && (a = goog.string.htmlEscape(a));
- return a;
- };
- goog.string.truncateMiddle = function (a, b, c, d) {
- c && (a = goog.string.unescapeEntities(a));
- if (d && a.length > b) {
- d > b && (d = b);
- var e = a.length - d;
- a = a.substring(0, b - d) + "..." + a.substring(e);
- } else a.length > b && (d = Math.floor(b / 2), e = a.length - d, a = a.substring(0, d + b % 2) + "..." + a.substring(e));
- c && (a = goog.string.htmlEscape(a));
- return a;
- };
- goog.string.specialEscapeChars_ = {
- "\x00": "\\0",
- "\b": "\\b",
- "\f": "\\f",
- "\n": "\\n",
- "\r": "\\r",
- "\t": "\\t",
- "\x0B": "\\x0B",
- '"': '\\"',
- "\\": "\\\\",
- "<": "\\u003C"
- };
- goog.string.jsEscapeCache_ = {
- "'": "\\'"
- };
- goog.string.quote = function (a) {
- a = String(a);
- for (var b = ['"'], c = 0; c < a.length; c++) {
- var d = a.charAt(c),
- e = d.charCodeAt(0);
- b[c + 1] = goog.string.specialEscapeChars_[d] || (31 < e && 127 > e ? d : goog.string.escapeChar(d));
- }
- b.push('"');
- return b.join("");
- };
- goog.string.escapeString = function (a) {
- for (var b = [], c = 0; c < a.length; c++) {
- b[c] = goog.string.escapeChar(a.charAt(c));
- }
- return b.join("");
- };
- goog.string.escapeChar = function (a) {
- if (a in goog.string.jsEscapeCache_) return goog.string.jsEscapeCache_[a];
- if (a in goog.string.specialEscapeChars_) return goog.string.jsEscapeCache_[a] = goog.string.specialEscapeChars_[a];
- var b = a.charCodeAt(0);
- if (31 < b && 127 > b) var c = a;else {
- if (256 > b) {
- if (c = "\\x", 16 > b || 256 < b) c += "0";
- } else c = "\\u", 4096 > b && (c += "0");
- c += b.toString(16).toUpperCase();
- }
- return goog.string.jsEscapeCache_[a] = c;
- };
- goog.string.contains = goog.string.internal.contains;
- goog.string.caseInsensitiveContains = goog.string.internal.caseInsensitiveContains;
- goog.string.countOf = function (a, b) {
- return a && b ? a.split(b).length - 1 : 0;
- };
- goog.string.removeAt = function (a, b, c) {
- var d = a;
- 0 <= b && b < a.length && 0 < c && (d = a.substr(0, b) + a.substr(b + c, a.length - b - c));
- return d;
- };
- goog.string.remove = function (a, b) {
- return a.replace(b, "");
- };
- goog.string.removeAll = function (a, b) {
- b = new RegExp(goog.string.regExpEscape(b), "g");
- return a.replace(b, "");
- };
- goog.string.replaceAll = function (a, b, c) {
- b = new RegExp(goog.string.regExpEscape(b), "g");
- return a.replace(b, c.replace(/\$/g, "$$$$"));
- };
- goog.string.regExpEscape = function (a) {
- return String(a).replace(/([-()\[\]{}+?*.$\^|,:#<!\\])/g, "\\$1").replace(/\x08/g, "\\x08");
- };
- goog.string.repeat = String.prototype.repeat ? function (a, b) {
- return a.repeat(b);
- } : function (a, b) {
- return Array(b + 1).join(a);
- };
- goog.string.padNumber = function (a, b, c) {
- a = void 0 !== c ? a.toFixed(c) : String(a);
- c = a.indexOf(".");
- -1 == c && (c = a.length);
- return goog.string.repeat("0", Math.max(0, b - c)) + a;
- };
- goog.string.makeSafe = function (a) {
- return null == a ? "" : String(a);
- };
- goog.string.buildString = function (a) {
- return Array.prototype.join.call(arguments, "");
- };
- goog.string.getRandomString = function () {
- return Math.floor(2147483648 * Math.random()).toString(36) + Math.abs(Math.floor(2147483648 * Math.random()) ^ goog.now()).toString(36);
- };
- goog.string.compareVersions = goog.string.internal.compareVersions;
- goog.string.hashCode = function (a) {
- for (var b = 0, c = 0; c < a.length; ++c) {
- b = 31 * b + a.charCodeAt(c) >>> 0;
- }
- return b;
- };
- goog.string.uniqueStringCounter_ = 2147483648 * Math.random() | 0;
- goog.string.createUniqueString = function () {
- return "goog_" + goog.string.uniqueStringCounter_++;
- };
- goog.string.toNumber = function (a) {
- var b = Number(a);
- return 0 == b && goog.string.isEmptyOrWhitespace(a) ? NaN : b;
- };
- goog.string.isLowerCamelCase = function (a) {
- return /^[a-z]+([A-Z][a-z]*)*$/.test(a);
- };
- goog.string.isUpperCamelCase = function (a) {
- return /^([A-Z][a-z]*)+$/.test(a);
- };
- goog.string.toCamelCase = function (a) {
- return String(a).replace(/\-([a-z])/g, function (a, c) {
- return c.toUpperCase();
- });
- };
- goog.string.toSelectorCase = function (a) {
- return String(a).replace(/([A-Z])/g, "-$1").toLowerCase();
- };
- goog.string.toTitleCase = function (a, b) {
- b = "string" === typeof b ? goog.string.regExpEscape(b) : "\\s";
- return a.replace(new RegExp("(^" + (b ? "|[" + b + "]+" : "") + ")([a-z])", "g"), function (a, b, e) {
- return b + e.toUpperCase();
- });
- };
- goog.string.capitalize = function (a) {
- return String(a.charAt(0)).toUpperCase() + String(a.substr(1)).toLowerCase();
- };
- goog.string.parseInt = function (a) {
- isFinite(a) && (a = String(a));
- return "string" === typeof a ? /^\s*-?0x/i.test(a) ? parseInt(a, 16) : parseInt(a, 10) : NaN;
- };
- goog.string.splitLimit = function (a, b, c) {
- a = a.split(b);
- for (var d = []; 0 < c && a.length;) {
- d.push(a.shift()), c--;
- }
- a.length && d.push(a.join(b));
- return d;
- };
- goog.string.lastComponent = function (a, b) {
- if (b) "string" == typeof b && (b = [b]);else return a;
- for (var c = -1, d = 0; d < b.length; d++) {
- if ("" != b[d]) {
- var e = a.lastIndexOf(b[d]);
- e > c && (c = e);
- }
- }
- return -1 == c ? a : a.slice(c + 1);
- };
- goog.string.editDistance = function (a, b) {
- var c = [],
- d = [];
- if (a == b) return 0;
- if (!a.length || !b.length) return Math.max(a.length, b.length);
- for (var e = 0; e < b.length + 1; e++) {
- c[e] = e;
- }
- for (e = 0; e < a.length; e++) {
- d[0] = e + 1;
- for (var f = 0; f < b.length; f++) {
- d[f + 1] = Math.min(d[f] + 1, c[f + 1] + 1, c[f] + Number(a[e] != b[f]));
- }
- for (f = 0; f < c.length; f++) {
- c[f] = d[f];
- }
- }
- return d[b.length];
- };
- goog.labs.userAgent.engine = {};
- goog.labs.userAgent.engine.isPresto = function () {
- return goog.labs.userAgent.util.matchUserAgent("Presto");
- };
- goog.labs.userAgent.engine.isTrident = function () {
- return goog.labs.userAgent.util.matchUserAgent("Trident") || goog.labs.userAgent.util.matchUserAgent("MSIE");
- };
- goog.labs.userAgent.engine.isEdge = function () {
- return goog.labs.userAgent.util.matchUserAgent("Edge");
- };
- goog.labs.userAgent.engine.isWebKit = function () {
- return goog.labs.userAgent.util.matchUserAgentIgnoreCase("WebKit") && !goog.labs.userAgent.engine.isEdge();
- };
- goog.labs.userAgent.engine.isGecko = function () {
- return goog.labs.userAgent.util.matchUserAgent("Gecko") && !goog.labs.userAgent.engine.isWebKit() && !goog.labs.userAgent.engine.isTrident() && !goog.labs.userAgent.engine.isEdge();
- };
- goog.labs.userAgent.engine.getVersion = function () {
- var a = goog.labs.userAgent.util.getUserAgent();
- if (a) {
- a = goog.labs.userAgent.util.extractVersionTuples(a);
- var b = goog.labs.userAgent.engine.getEngineTuple_(a);
- if (b) return "Gecko" == b[0] ? goog.labs.userAgent.engine.getVersionForKey_(a, "Firefox") : b[1];
- a = a[0];
- var c;
- if (a && (c = a[2]) && (c = /Trident\/([^\s;]+)/.exec(c))) return c[1];
- }
- return "";
- };
- goog.labs.userAgent.engine.getEngineTuple_ = function (a) {
- if (!goog.labs.userAgent.engine.isEdge()) return a[1];
- for (var b = 0; b < a.length; b++) {
- var c = a[b];
- if ("Edge" == c[0]) return c;
- }
- };
- goog.labs.userAgent.engine.isVersionOrHigher = function (a) {
- return 0 <= goog.string.compareVersions(goog.labs.userAgent.engine.getVersion(), a);
- };
- goog.labs.userAgent.engine.getVersionForKey_ = function (a, b) {
- return (a = goog.array.find(a, function (a) {
- return b == a[0];
- })) && a[1] || "";
- };
- goog.labs.userAgent.platform = {};
- goog.labs.userAgent.platform.isAndroid = function () {
- return goog.labs.userAgent.util.matchUserAgent("Android");
- };
- goog.labs.userAgent.platform.isIpod = function () {
- return goog.labs.userAgent.util.matchUserAgent("iPod");
- };
- goog.labs.userAgent.platform.isIphone = function () {
- return goog.labs.userAgent.util.matchUserAgent("iPhone") && !goog.labs.userAgent.util.matchUserAgent("iPod") && !goog.labs.userAgent.util.matchUserAgent("iPad");
- };
- goog.labs.userAgent.platform.isIpad = function () {
- return goog.labs.userAgent.util.matchUserAgent("iPad");
- };
- goog.labs.userAgent.platform.isIos = function () {
- return goog.labs.userAgent.platform.isIphone() || goog.labs.userAgent.platform.isIpad() || goog.labs.userAgent.platform.isIpod();
- };
- goog.labs.userAgent.platform.isMacintosh = function () {
- return goog.labs.userAgent.util.matchUserAgent("Macintosh");
- };
- goog.labs.userAgent.platform.isLinux = function () {
- return goog.labs.userAgent.util.matchUserAgent("Linux");
- };
- goog.labs.userAgent.platform.isWindows = function () {
- return goog.labs.userAgent.util.matchUserAgent("Windows");
- };
- goog.labs.userAgent.platform.isChromeOS = function () {
- return goog.labs.userAgent.util.matchUserAgent("CrOS");
- };
- goog.labs.userAgent.platform.isChromecast = function () {
- return goog.labs.userAgent.util.matchUserAgent("CrKey");
- };
- goog.labs.userAgent.platform.isKaiOS = function () {
- return goog.labs.userAgent.util.matchUserAgentIgnoreCase("KaiOS");
- };
- goog.labs.userAgent.platform.getVersion = function () {
- var a = goog.labs.userAgent.util.getUserAgent(),
- b = "";
- goog.labs.userAgent.platform.isWindows() ? (b = /Windows (?:NT|Phone) ([0-9.]+)/, b = (a = b.exec(a)) ? a[1] : "0.0") : goog.labs.userAgent.platform.isIos() ? (b = /(?:iPhone|iPod|iPad|CPU)\s+OS\s+(\S+)/, b = (a = b.exec(a)) && a[1].replace(/_/g, ".")) : goog.labs.userAgent.platform.isMacintosh() ? (b = /Mac OS X ([0-9_.]+)/, b = (a = b.exec(a)) ? a[1].replace(/_/g, ".") : "10") : goog.labs.userAgent.platform.isKaiOS() ? (b = /(?:KaiOS)\/(\S+)/i, b = (a = b.exec(a)) && a[1]) : goog.labs.userAgent.platform.isAndroid() ? (b = /Android\s+([^\);]+)(\)|;)/, b = (a = b.exec(a)) && a[1]) : goog.labs.userAgent.platform.isChromeOS() && (b = /(?:CrOS\s+(?:i686|x86_64)\s+([0-9.]+))/, b = (a = b.exec(a)) && a[1]);
- return b || "";
- };
- goog.labs.userAgent.platform.isVersionOrHigher = function (a) {
- return 0 <= goog.string.compareVersions(goog.labs.userAgent.platform.getVersion(), a);
- };
- goog.reflect = {};
- goog.reflect.object = function (a, b) {
- return b;
- };
- goog.reflect.objectProperty = function (a, b) {
- return a;
- };
- goog.reflect.sinkValue = function (a) {
- goog.reflect.sinkValue[" "](a);
- return a;
- };
- goog.reflect.sinkValue[" "] = goog.nullFunction;
- goog.reflect.canAccessProperty = function (a, b) {
- try {
- return goog.reflect.sinkValue(a[b]), !0;
- } catch (c) {}
- return !1;
- };
- goog.reflect.cache = function (a, b, c, d) {
- d = d ? d(b) : b;
- return Object.prototype.hasOwnProperty.call(a, d) ? a[d] : a[d] = c(b);
- };
- goog.userAgent = {};
- goog.userAgent.ASSUME_IE = !1;
- goog.userAgent.ASSUME_EDGE = !1;
- goog.userAgent.ASSUME_GECKO = !1;
- goog.userAgent.ASSUME_WEBKIT = !1;
- goog.userAgent.ASSUME_MOBILE_WEBKIT = !1;
- goog.userAgent.ASSUME_OPERA = !1;
- goog.userAgent.ASSUME_ANY_VERSION = !1;
- goog.userAgent.BROWSER_KNOWN_ = goog.userAgent.ASSUME_IE || goog.userAgent.ASSUME_EDGE || goog.userAgent.ASSUME_GECKO || goog.userAgent.ASSUME_MOBILE_WEBKIT || goog.userAgent.ASSUME_WEBKIT || goog.userAgent.ASSUME_OPERA;
- goog.userAgent.getUserAgentString = function () {
- return goog.labs.userAgent.util.getUserAgent();
- };
- goog.userAgent.getNavigatorTyped = function () {
- return goog.global.navigator || null;
- };
- goog.userAgent.getNavigator = function () {
- return goog.userAgent.getNavigatorTyped();
- };
- goog.userAgent.OPERA = goog.userAgent.BROWSER_KNOWN_ ? goog.userAgent.ASSUME_OPERA : goog.labs.userAgent.browser.isOpera();
- goog.userAgent.IE = goog.userAgent.BROWSER_KNOWN_ ? goog.userAgent.ASSUME_IE : goog.labs.userAgent.browser.isIE();
- goog.userAgent.EDGE = goog.userAgent.BROWSER_KNOWN_ ? goog.userAgent.ASSUME_EDGE : goog.labs.userAgent.engine.isEdge();
- goog.userAgent.EDGE_OR_IE = goog.userAgent.EDGE || goog.userAgent.IE;
- goog.userAgent.GECKO = goog.userAgent.BROWSER_KNOWN_ ? goog.userAgent.ASSUME_GECKO : goog.labs.userAgent.engine.isGecko();
- goog.userAgent.WEBKIT = goog.userAgent.BROWSER_KNOWN_ ? goog.userAgent.ASSUME_WEBKIT || goog.userAgent.ASSUME_MOBILE_WEBKIT : goog.labs.userAgent.engine.isWebKit();
- goog.userAgent.isMobile_ = function () {
- return goog.userAgent.WEBKIT && goog.labs.userAgent.util.matchUserAgent("Mobile");
- };
- goog.userAgent.MOBILE = goog.userAgent.ASSUME_MOBILE_WEBKIT || goog.userAgent.isMobile_();
- goog.userAgent.SAFARI = goog.userAgent.WEBKIT;
- goog.userAgent.determinePlatform_ = function () {
- var a = goog.userAgent.getNavigatorTyped();
- return a && a.platform || "";
- };
- goog.userAgent.PLATFORM = goog.userAgent.determinePlatform_();
- goog.userAgent.ASSUME_MAC = !1;
- goog.userAgent.ASSUME_WINDOWS = !1;
- goog.userAgent.ASSUME_LINUX = !1;
- goog.userAgent.ASSUME_X11 = !1;
- goog.userAgent.ASSUME_ANDROID = !1;
- goog.userAgent.ASSUME_IPHONE = !1;
- goog.userAgent.ASSUME_IPAD = !1;
- goog.userAgent.ASSUME_IPOD = !1;
- goog.userAgent.ASSUME_KAIOS = !1;
- goog.userAgent.PLATFORM_KNOWN_ = goog.userAgent.ASSUME_MAC || goog.userAgent.ASSUME_WINDOWS || goog.userAgent.ASSUME_LINUX || goog.userAgent.ASSUME_X11 || goog.userAgent.ASSUME_ANDROID || goog.userAgent.ASSUME_IPHONE || goog.userAgent.ASSUME_IPAD || goog.userAgent.ASSUME_IPOD;
- goog.userAgent.MAC = goog.userAgent.PLATFORM_KNOWN_ ? goog.userAgent.ASSUME_MAC : goog.labs.userAgent.platform.isMacintosh();
- goog.userAgent.WINDOWS = goog.userAgent.PLATFORM_KNOWN_ ? goog.userAgent.ASSUME_WINDOWS : goog.labs.userAgent.platform.isWindows();
- goog.userAgent.isLegacyLinux_ = function () {
- return goog.labs.userAgent.platform.isLinux() || goog.labs.userAgent.platform.isChromeOS();
- };
- goog.userAgent.LINUX = goog.userAgent.PLATFORM_KNOWN_ ? goog.userAgent.ASSUME_LINUX : goog.userAgent.isLegacyLinux_();
- goog.userAgent.isX11_ = function () {
- var a = goog.userAgent.getNavigatorTyped();
- return !!a && goog.string.contains(a.appVersion || "", "X11");
- };
- goog.userAgent.X11 = goog.userAgent.PLATFORM_KNOWN_ ? goog.userAgent.ASSUME_X11 : goog.userAgent.isX11_();
- goog.userAgent.ANDROID = goog.userAgent.PLATFORM_KNOWN_ ? goog.userAgent.ASSUME_ANDROID : goog.labs.userAgent.platform.isAndroid();
- goog.userAgent.IPHONE = goog.userAgent.PLATFORM_KNOWN_ ? goog.userAgent.ASSUME_IPHONE : goog.labs.userAgent.platform.isIphone();
- goog.userAgent.IPAD = goog.userAgent.PLATFORM_KNOWN_ ? goog.userAgent.ASSUME_IPAD : goog.labs.userAgent.platform.isIpad();
- goog.userAgent.IPOD = goog.userAgent.PLATFORM_KNOWN_ ? goog.userAgent.ASSUME_IPOD : goog.labs.userAgent.platform.isIpod();
- goog.userAgent.IOS = goog.userAgent.PLATFORM_KNOWN_ ? goog.userAgent.ASSUME_IPHONE || goog.userAgent.ASSUME_IPAD || goog.userAgent.ASSUME_IPOD : goog.labs.userAgent.platform.isIos();
- goog.userAgent.KAIOS = goog.userAgent.PLATFORM_KNOWN_ ? goog.userAgent.ASSUME_KAIOS : goog.labs.userAgent.platform.isKaiOS();
- goog.userAgent.determineVersion_ = function () {
- var a = "",
- b = goog.userAgent.getVersionRegexResult_();
- b && (a = b ? b[1] : "");
- return goog.userAgent.IE && (b = goog.userAgent.getDocumentMode_(), null != b && b > parseFloat(a)) ? String(b) : a;
- };
- goog.userAgent.getVersionRegexResult_ = function () {
- var a = goog.userAgent.getUserAgentString();
- if (goog.userAgent.GECKO) return /rv:([^\);]+)(\)|;)/.exec(a);
- if (goog.userAgent.EDGE) return /Edge\/([\d\.]+)/.exec(a);
- if (goog.userAgent.IE) return /\b(?:MSIE|rv)[: ]([^\);]+)(\)|;)/.exec(a);
- if (goog.userAgent.WEBKIT) return /WebKit\/(\S+)/.exec(a);
- if (goog.userAgent.OPERA) return /(?:Version)[ \/]?(\S+)/.exec(a);
- };
- goog.userAgent.getDocumentMode_ = function () {
- var a = goog.global.document;
- return a ? a.documentMode : void 0;
- };
- goog.userAgent.VERSION = goog.userAgent.determineVersion_();
- goog.userAgent.compare = function (a, b) {
- return goog.string.compareVersions(a, b);
- };
- goog.userAgent.isVersionOrHigherCache_ = {};
- goog.userAgent.isVersionOrHigher = function (a) {
- return goog.userAgent.ASSUME_ANY_VERSION || goog.reflect.cache(goog.userAgent.isVersionOrHigherCache_, a, function () {
- return 0 <= goog.string.compareVersions(goog.userAgent.VERSION, a);
- });
- };
- goog.userAgent.isVersion = goog.userAgent.isVersionOrHigher;
- goog.userAgent.isDocumentModeOrHigher = function (a) {
- return Number(goog.userAgent.DOCUMENT_MODE) >= a;
- };
- goog.userAgent.isDocumentMode = goog.userAgent.isDocumentModeOrHigher;
- goog.userAgent.DOCUMENT_MODE = function () {
- if (goog.global.document && goog.userAgent.IE) {
- var a = goog.userAgent.getDocumentMode_();
- return a ? a : parseInt(goog.userAgent.VERSION, 10) || void 0;
- }
- }();
- goog.userAgent.product = {};
- goog.userAgent.product.ASSUME_FIREFOX = !1;
- goog.userAgent.product.ASSUME_IPHONE = !1;
- goog.userAgent.product.ASSUME_IPAD = !1;
- goog.userAgent.product.ASSUME_ANDROID = !1;
- goog.userAgent.product.ASSUME_CHROME = !1;
- goog.userAgent.product.ASSUME_SAFARI = !1;
- goog.userAgent.product.PRODUCT_KNOWN_ = goog.userAgent.ASSUME_IE || goog.userAgent.ASSUME_EDGE || goog.userAgent.ASSUME_OPERA || goog.userAgent.product.ASSUME_FIREFOX || goog.userAgent.product.ASSUME_IPHONE || goog.userAgent.product.ASSUME_IPAD || goog.userAgent.product.ASSUME_ANDROID || goog.userAgent.product.ASSUME_CHROME || goog.userAgent.product.ASSUME_SAFARI;
- goog.userAgent.product.OPERA = goog.userAgent.OPERA;
- goog.userAgent.product.IE = goog.userAgent.IE;
- goog.userAgent.product.EDGE = goog.userAgent.EDGE;
- goog.userAgent.product.FIREFOX = goog.userAgent.product.PRODUCT_KNOWN_ ? goog.userAgent.product.ASSUME_FIREFOX : goog.labs.userAgent.browser.isFirefox();
- goog.userAgent.product.isIphoneOrIpod_ = function () {
- return goog.labs.userAgent.platform.isIphone() || goog.labs.userAgent.platform.isIpod();
- };
- goog.userAgent.product.IPHONE = goog.userAgent.product.PRODUCT_KNOWN_ ? goog.userAgent.product.ASSUME_IPHONE : goog.userAgent.product.isIphoneOrIpod_();
- goog.userAgent.product.IPAD = goog.userAgent.product.PRODUCT_KNOWN_ ? goog.userAgent.product.ASSUME_IPAD : goog.labs.userAgent.platform.isIpad();
- goog.userAgent.product.ANDROID = goog.userAgent.product.PRODUCT_KNOWN_ ? goog.userAgent.product.ASSUME_ANDROID : goog.labs.userAgent.browser.isAndroidBrowser();
- goog.userAgent.product.CHROME = goog.userAgent.product.PRODUCT_KNOWN_ ? goog.userAgent.product.ASSUME_CHROME : goog.labs.userAgent.browser.isChrome();
- goog.userAgent.product.isSafariDesktop_ = function () {
- return goog.labs.userAgent.browser.isSafari() && !goog.labs.userAgent.platform.isIos();
- };
- goog.userAgent.product.SAFARI = goog.userAgent.product.PRODUCT_KNOWN_ ? goog.userAgent.product.ASSUME_SAFARI : goog.userAgent.product.isSafariDesktop_();
- goog.crypt.base64 = {};
- goog.crypt.base64.DEFAULT_ALPHABET_COMMON_ = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";
- goog.crypt.base64.ENCODED_VALS = goog.crypt.base64.DEFAULT_ALPHABET_COMMON_ + "+/=";
- goog.crypt.base64.ENCODED_VALS_WEBSAFE = goog.crypt.base64.DEFAULT_ALPHABET_COMMON_ + "-_.";
- goog.crypt.base64.Alphabet = {
- DEFAULT: 0,
- NO_PADDING: 1,
- WEBSAFE: 2,
- WEBSAFE_DOT_PADDING: 3,
- WEBSAFE_NO_PADDING: 4
- };
- goog.crypt.base64.paddingChars_ = "=.";
- goog.crypt.base64.isPadding_ = function (a) {
- return goog.string.contains(goog.crypt.base64.paddingChars_, a);
- };
- goog.crypt.base64.byteToCharMaps_ = {};
- goog.crypt.base64.charToByteMap_ = null;
- goog.crypt.base64.ASSUME_NATIVE_SUPPORT_ = goog.userAgent.GECKO || goog.userAgent.WEBKIT && !goog.userAgent.product.SAFARI || goog.userAgent.OPERA;
- goog.crypt.base64.HAS_NATIVE_ENCODE_ = goog.crypt.base64.ASSUME_NATIVE_SUPPORT_ || "function" == typeof goog.global.btoa;
- goog.crypt.base64.HAS_NATIVE_DECODE_ = goog.crypt.base64.ASSUME_NATIVE_SUPPORT_ || !goog.userAgent.product.SAFARI && !goog.userAgent.IE && "function" == typeof goog.global.atob;
- goog.crypt.base64.encodeByteArray = function (a, b) {
- goog.asserts.assert(goog.isArrayLike(a), "encodeByteArray takes an array as a parameter");
- void 0 === b && (b = goog.crypt.base64.Alphabet.DEFAULT);
- goog.crypt.base64.init_();
- b = goog.crypt.base64.byteToCharMaps_[b];
- for (var c = [], d = 0; d < a.length; d += 3) {
- var e = a[d],
- f = d + 1 < a.length,
- g = f ? a[d + 1] : 0,
- h = d + 2 < a.length,
- k = h ? a[d + 2] : 0,
- l = e >> 2;
- e = (e & 3) << 4 | g >> 4;
- g = (g & 15) << 2 | k >> 6;
- k &= 63;
- h || (k = 64, f || (g = 64));
- c.push(b[l], b[e], b[g] || "", b[k] || "");
- }
- return c.join("");
- };
- goog.crypt.base64.encodeString = function (a, b) {
- return goog.crypt.base64.HAS_NATIVE_ENCODE_ && !b ? goog.global.btoa(a) : goog.crypt.base64.encodeByteArray(goog.crypt.stringToByteArray(a), b);
- };
- goog.crypt.base64.decodeString = function (a, b) {
- if (goog.crypt.base64.HAS_NATIVE_DECODE_ && !b) return goog.global.atob(a);
- var c = "";
- goog.crypt.base64.decodeStringInternal_(a, function (a) {
- c += String.fromCharCode(a);
- });
- return c;
- };
- goog.crypt.base64.decodeStringToByteArray = function (a, b) {
- var c = [];
- goog.crypt.base64.decodeStringInternal_(a, function (a) {
- c.push(a);
- });
- return c;
- };
- goog.crypt.base64.decodeStringToUint8Array = function (a) {
- goog.asserts.assert(!goog.userAgent.IE || goog.userAgent.isVersionOrHigher("10"), "Browser does not support typed arrays");
- var b = a.length,
- c = 3 * b / 4;
- c % 3 ? c = Math.floor(c) : goog.crypt.base64.isPadding_(a[b - 1]) && (c = goog.crypt.base64.isPadding_(a[b - 2]) ? c - 2 : c - 1);
- var d = new Uint8Array(c),
- e = 0;
- goog.crypt.base64.decodeStringInternal_(a, function (a) {
- d[e++] = a;
- });
- return d.subarray(0, e);
- };
- goog.crypt.base64.decodeStringInternal_ = function (a, b) {
- function c(b) {
- for (; d < a.length;) {
- var c = a.charAt(d++),
- e = goog.crypt.base64.charToByteMap_[c];
- if (null != e) return e;
- if (!goog.string.isEmptyOrWhitespace(c)) throw Error("Unknown base64 encoding at char: " + c);
- }
- return b;
- }
- goog.crypt.base64.init_();
- for (var d = 0;;) {
- var e = c(-1),
- f = c(0),
- g = c(64),
- h = c(64);
- if (64 === h && -1 === e) break;
- b(e << 2 | f >> 4);
- 64 != g && (b(f << 4 & 240 | g >> 2), 64 != h && b(g << 6 & 192 | h));
- }
- };
- goog.crypt.base64.init_ = function () {
- if (!goog.crypt.base64.charToByteMap_) {
- goog.crypt.base64.charToByteMap_ = {};
- for (var a = goog.crypt.base64.DEFAULT_ALPHABET_COMMON_.split(""), b = ["+/=", "+/", "-_=", "-_.", "-_"], c = 0; 5 > c; c++) {
- var d = a.concat(b[c].split(""));
- goog.crypt.base64.byteToCharMaps_[c] = d;
- for (var e = 0; e < d.length; e++) {
- var f = d[e],
- g = goog.crypt.base64.charToByteMap_[f];
- void 0 === g ? goog.crypt.base64.charToByteMap_[f] = e : goog.asserts.assert(g === e);
- }
- }
- }
- };
- jspb.utils = {};
- jspb.utils.split64Low = 0;
- jspb.utils.split64High = 0;
- jspb.utils.splitUint64 = function (a) {
- var b = a >>> 0;
- a = Math.floor((a - b) / jspb.BinaryConstants.TWO_TO_32) >>> 0;
- jspb.utils.split64Low = b;
- jspb.utils.split64High = a;
- };
- jspb.utils.splitInt64 = function (a) {
- var b = 0 > a;
- a = Math.abs(a);
- var c = a >>> 0;
- a = Math.floor((a - c) / jspb.BinaryConstants.TWO_TO_32);
- a >>>= 0;
- b && (a = ~a >>> 0, c = (~c >>> 0) + 1, 4294967295 < c && (c = 0, a++, 4294967295 < a && (a = 0)));
- jspb.utils.split64Low = c;
- jspb.utils.split64High = a;
- };
- jspb.utils.splitZigzag64 = function (a) {
- var b = 0 > a;
- a = 2 * Math.abs(a);
- jspb.utils.splitUint64(a);
- a = jspb.utils.split64Low;
- var c = jspb.utils.split64High;
- b && (0 == a ? 0 == c ? c = a = 4294967295 : (c--, a = 4294967295) : a--);
- jspb.utils.split64Low = a;
- jspb.utils.split64High = c;
- };
- jspb.utils.splitFloat32 = function (a) {
- var b = 0 > a ? 1 : 0;
- a = b ? -a : a;
- if (0 === a) 0 < 1 / a ? (jspb.utils.split64High = 0, jspb.utils.split64Low = 0) : (jspb.utils.split64High = 0, jspb.utils.split64Low = 2147483648);else if (isNaN(a)) jspb.utils.split64High = 0, jspb.utils.split64Low = 2147483647;else if (a > jspb.BinaryConstants.FLOAT32_MAX) jspb.utils.split64High = 0, jspb.utils.split64Low = (b << 31 | 2139095040) >>> 0;else if (a < jspb.BinaryConstants.FLOAT32_MIN) a = Math.round(a / Math.pow(2, -149)), jspb.utils.split64High = 0, jspb.utils.split64Low = (b << 31 | a) >>> 0;else {
- var c = Math.floor(Math.log(a) / Math.LN2);
- a *= Math.pow(2, -c);
- a = Math.round(a * jspb.BinaryConstants.TWO_TO_23);
- 16777216 <= a && ++c;
- jspb.utils.split64High = 0;
- jspb.utils.split64Low = (b << 31 | c + 127 << 23 | a & 8388607) >>> 0;
- }
- };
- jspb.utils.splitFloat64 = function (a) {
- var b = 0 > a ? 1 : 0;
- a = b ? -a : a;
- if (0 === a) jspb.utils.split64High = 0 < 1 / a ? 0 : 2147483648, jspb.utils.split64Low = 0;else if (isNaN(a)) jspb.utils.split64High = 2147483647, jspb.utils.split64Low = 4294967295;else if (a > jspb.BinaryConstants.FLOAT64_MAX) jspb.utils.split64High = (b << 31 | 2146435072) >>> 0, jspb.utils.split64Low = 0;else if (a < jspb.BinaryConstants.FLOAT64_MIN) {
- var c = a / Math.pow(2, -1074);
- a = c / jspb.BinaryConstants.TWO_TO_32;
- jspb.utils.split64High = (b << 31 | a) >>> 0;
- jspb.utils.split64Low = c >>> 0;
- } else {
- c = a;
- var d = 0;
- if (2 <= c) for (; 2 <= c && 1023 > d;) {
- d++, c /= 2;
- } else for (; 1 > c && -1022 < d;) {
- c *= 2, d--;
- }
- c = a * Math.pow(2, -d);
- a = c * jspb.BinaryConstants.TWO_TO_20 & 1048575;
- c = c * jspb.BinaryConstants.TWO_TO_52 >>> 0;
- jspb.utils.split64High = (b << 31 | d + 1023 << 20 | a) >>> 0;
- jspb.utils.split64Low = c;
- }
- };
- jspb.utils.splitHash64 = function (a) {
- var b = a.charCodeAt(0),
- c = a.charCodeAt(1),
- d = a.charCodeAt(2),
- e = a.charCodeAt(3),
- f = a.charCodeAt(4),
- g = a.charCodeAt(5),
- h = a.charCodeAt(6);
- a = a.charCodeAt(7);
- jspb.utils.split64Low = b + (c << 8) + (d << 16) + (e << 24) >>> 0;
- jspb.utils.split64High = f + (g << 8) + (h << 16) + (a << 24) >>> 0;
- };
- jspb.utils.joinUint64 = function (a, b) {
- return b * jspb.BinaryConstants.TWO_TO_32 + (a >>> 0);
- };
- jspb.utils.joinInt64 = function (a, b) {
- var c = b & 2147483648;
- c && (a = ~a + 1 >>> 0, b = ~b >>> 0, 0 == a && (b = b + 1 >>> 0));
- a = jspb.utils.joinUint64(a, b);
- return c ? -a : a;
- };
- jspb.utils.toZigzag64 = function (a, b, c) {
- var d = b >> 31;
- return c(a << 1 ^ d, (b << 1 | a >>> 31) ^ d);
- };
- jspb.utils.joinZigzag64 = function (a, b) {
- return jspb.utils.fromZigzag64(a, b, jspb.utils.joinInt64);
- };
- jspb.utils.fromZigzag64 = function (a, b, c) {
- var d = -(a & 1);
- return c((a >>> 1 | b << 31) ^ d, b >>> 1 ^ d);
- };
- jspb.utils.joinFloat32 = function (a, b) {
- b = 2 * (a >> 31) + 1;
- var c = a >>> 23 & 255;
- a &= 8388607;
- return 255 == c ? a ? NaN : Infinity * b : 0 == c ? b * Math.pow(2, -149) * a : b * Math.pow(2, c - 150) * (a + Math.pow(2, 23));
- };
- jspb.utils.joinFloat64 = function (a, b) {
- var c = 2 * (b >> 31) + 1,
- d = b >>> 20 & 2047;
- a = jspb.BinaryConstants.TWO_TO_32 * (b & 1048575) + a;
- return 2047 == d ? a ? NaN : Infinity * c : 0 == d ? c * Math.pow(2, -1074) * a : c * Math.pow(2, d - 1075) * (a + jspb.BinaryConstants.TWO_TO_52);
- };
- jspb.utils.joinHash64 = function (a, b) {
- return String.fromCharCode(a >>> 0 & 255, a >>> 8 & 255, a >>> 16 & 255, a >>> 24 & 255, b >>> 0 & 255, b >>> 8 & 255, b >>> 16 & 255, b >>> 24 & 255);
- };
- jspb.utils.DIGITS = "0123456789abcdef".split("");
- jspb.utils.ZERO_CHAR_CODE_ = 48;
- jspb.utils.A_CHAR_CODE_ = 97;
- jspb.utils.joinUnsignedDecimalString = function (a, b) {
- function c(a, b) {
- a = a ? String(a) : "";
- return b ? "0000000".slice(a.length) + a : a;
- }
- if (2097151 >= b) return "" + jspb.utils.joinUint64(a, b);
- var d = (a >>> 24 | b << 8) >>> 0 & 16777215;
- b = b >> 16 & 65535;
- a = (a & 16777215) + 6777216 * d + 6710656 * b;
- d += 8147497 * b;
- b *= 2;
- 1E7 <= a && (d += Math.floor(a / 1E7), a %= 1E7);
- 1E7 <= d && (b += Math.floor(d / 1E7), d %= 1E7);
- return c(b, 0) + c(d, b) + c(a, 1);
- };
- jspb.utils.joinSignedDecimalString = function (a, b) {
- var c = b & 2147483648;
- c && (a = ~a + 1 >>> 0, b = ~b + (0 == a ? 1 : 0) >>> 0);
- a = jspb.utils.joinUnsignedDecimalString(a, b);
- return c ? "-" + a : a;
- };
- jspb.utils.hash64ToDecimalString = function (a, b) {
- jspb.utils.splitHash64(a);
- a = jspb.utils.split64Low;
- var c = jspb.utils.split64High;
- return b ? jspb.utils.joinSignedDecimalString(a, c) : jspb.utils.joinUnsignedDecimalString(a, c);
- };
- jspb.utils.hash64ArrayToDecimalStrings = function (a, b) {
- for (var c = Array(a.length), d = 0; d < a.length; d++) {
- c[d] = jspb.utils.hash64ToDecimalString(a[d], b);
- }
- return c;
- };
- jspb.utils.decimalStringToHash64 = function (a) {
- function b(a, b) {
- for (var c = 0; 8 > c && (1 !== a || 0 < b); c++) {
- b = a * e[c] + b, e[c] = b & 255, b >>>= 8;
- }
- }
- function c() {
- for (var a = 0; 8 > a; a++) {
- e[a] = ~e[a] & 255;
- }
- }
- jspb.asserts.assert(0 < a.length);
- var d = !1;
- "-" === a[0] && (d = !0, a = a.slice(1));
- for (var e = [0, 0, 0, 0, 0, 0, 0, 0], f = 0; f < a.length; f++) {
- b(10, a.charCodeAt(f) - jspb.utils.ZERO_CHAR_CODE_);
- }
- d && (c(), b(1, 1));
- return goog.crypt.byteArrayToString(e);
- };
- jspb.utils.splitDecimalString = function (a) {
- jspb.utils.splitHash64(jspb.utils.decimalStringToHash64(a));
- };
- jspb.utils.toHexDigit_ = function (a) {
- return String.fromCharCode(10 > a ? jspb.utils.ZERO_CHAR_CODE_ + a : jspb.utils.A_CHAR_CODE_ - 10 + a);
- };
- jspb.utils.fromHexCharCode_ = function (a) {
- return a >= jspb.utils.A_CHAR_CODE_ ? a - jspb.utils.A_CHAR_CODE_ + 10 : a - jspb.utils.ZERO_CHAR_CODE_;
- };
- jspb.utils.hash64ToHexString = function (a) {
- var b = Array(18);
- b[0] = "0";
- b[1] = "x";
- for (var c = 0; 8 > c; c++) {
- var d = a.charCodeAt(7 - c);
- b[2 * c + 2] = jspb.utils.toHexDigit_(d >> 4);
- b[2 * c + 3] = jspb.utils.toHexDigit_(d & 15);
- }
- return b.join("");
- };
- jspb.utils.hexStringToHash64 = function (a) {
- a = a.toLowerCase();
- jspb.asserts.assert(18 == a.length);
- jspb.asserts.assert("0" == a[0]);
- jspb.asserts.assert("x" == a[1]);
- for (var b = "", c = 0; 8 > c; c++) {
- var d = jspb.utils.fromHexCharCode_(a.charCodeAt(2 * c + 2)),
- e = jspb.utils.fromHexCharCode_(a.charCodeAt(2 * c + 3));
- b = String.fromCharCode(16 * d + e) + b;
- }
- return b;
- };
- jspb.utils.hash64ToNumber = function (a, b) {
- jspb.utils.splitHash64(a);
- a = jspb.utils.split64Low;
- var c = jspb.utils.split64High;
- return b ? jspb.utils.joinInt64(a, c) : jspb.utils.joinUint64(a, c);
- };
- jspb.utils.numberToHash64 = function (a) {
- jspb.utils.splitInt64(a);
- return jspb.utils.joinHash64(jspb.utils.split64Low, jspb.utils.split64High);
- };
- jspb.utils.countVarints = function (a, b, c) {
- for (var d = 0, e = b; e < c; e++) {
- d += a[e] >> 7;
- }
- return c - b - d;
- };
- jspb.utils.countVarintFields = function (a, b, c, d) {
- var e = 0;
- d = 8 * d + jspb.BinaryConstants.WireType.VARINT;
- if (128 > d) for (; b < c && a[b++] == d;) {
- for (e++;;) {
- var f = a[b++];
- if (0 == (f & 128)) break;
- }
- } else for (; b < c;) {
- for (f = d; 128 < f;) {
- if (a[b] != (f & 127 | 128)) return e;
- b++;
- f >>= 7;
- }
- if (a[b++] != f) break;
- for (e++; f = a[b++], 0 != (f & 128);) {
- ;
- }
- }
- return e;
- };
- jspb.utils.countFixedFields_ = function (a, b, c, d, e) {
- var f = 0;
- if (128 > d) for (; b < c && a[b++] == d;) {
- f++, b += e;
- } else for (; b < c;) {
- for (var g = d; 128 < g;) {
- if (a[b++] != (g & 127 | 128)) return f;
- g >>= 7;
- }
- if (a[b++] != g) break;
- f++;
- b += e;
- }
- return f;
- };
- jspb.utils.countFixed32Fields = function (a, b, c, d) {
- return jspb.utils.countFixedFields_(a, b, c, 8 * d + jspb.BinaryConstants.WireType.FIXED32, 4);
- };
- jspb.utils.countFixed64Fields = function (a, b, c, d) {
- return jspb.utils.countFixedFields_(a, b, c, 8 * d + jspb.BinaryConstants.WireType.FIXED64, 8);
- };
- jspb.utils.countDelimitedFields = function (a, b, c, d) {
- var e = 0;
- for (d = 8 * d + jspb.BinaryConstants.WireType.DELIMITED; b < c;) {
- for (var f = d; 128 < f;) {
- if (a[b++] != (f & 127 | 128)) return e;
- f >>= 7;
- }
- if (a[b++] != f) break;
- e++;
- for (var g = 0, h = 1; f = a[b++], g += (f & 127) * h, h *= 128, 0 != (f & 128);) {
- ;
- }
- b += g;
- }
- return e;
- };
- jspb.utils.debugBytesToTextFormat = function (a) {
- var b = '"';
- if (a) {
- a = jspb.utils.byteSourceToUint8Array(a);
- for (var c = 0; c < a.length; c++) {
- b += "\\x", 16 > a[c] && (b += "0"), b += a[c].toString(16);
- }
- }
- return b + '"';
- };
- jspb.utils.debugScalarToTextFormat = function (a) {
- return "string" === typeof a ? goog.string.quote(a) : a.toString();
- };
- jspb.utils.stringToByteArray = function (a) {
- for (var b = new Uint8Array(a.length), c = 0; c < a.length; c++) {
- var d = a.charCodeAt(c);
- if (255 < d) throw Error("Conversion error: string contains codepoint outside of byte range");
- b[c] = d;
- }
- return b;
- };
- jspb.utils.byteSourceToUint8Array = function (a) {
- if (a.constructor === Uint8Array) return a;
- if (a.constructor === ArrayBuffer || a.constructor === Array) return new Uint8Array(a);
- if (a.constructor === String) return goog.crypt.base64.decodeStringToUint8Array(a);
- if (a instanceof Uint8Array) return new Uint8Array(a.buffer, a.byteOffset, a.byteLength);
- jspb.asserts.fail("Type not convertible to Uint8Array.");
- return new Uint8Array(0);
- };
- jspb.BinaryDecoder = function (a, b, c) {
- this.bytes_ = null;
- this.cursor_ = this.end_ = this.start_ = 0;
- this.error_ = !1;
- a && this.setBlock(a, b, c);
- };
- jspb.BinaryDecoder.instanceCache_ = [];
- jspb.BinaryDecoder.alloc = function (a, b, c) {
- if (jspb.BinaryDecoder.instanceCache_.length) {
- var d = jspb.BinaryDecoder.instanceCache_.pop();
- a && d.setBlock(a, b, c);
- return d;
- }
- return new jspb.BinaryDecoder(a, b, c);
- };
- jspb.BinaryDecoder.prototype.free = function () {
- this.clear();
- 100 > jspb.BinaryDecoder.instanceCache_.length && jspb.BinaryDecoder.instanceCache_.push(this);
- };
- jspb.BinaryDecoder.prototype.clone = function () {
- return jspb.BinaryDecoder.alloc(this.bytes_, this.start_, this.end_ - this.start_);
- };
- jspb.BinaryDecoder.prototype.clear = function () {
- this.bytes_ = null;
- this.cursor_ = this.end_ = this.start_ = 0;
- this.error_ = !1;
- };
- jspb.BinaryDecoder.prototype.getBuffer = function () {
- return this.bytes_;
- };
- jspb.BinaryDecoder.prototype.setBlock = function (a, b, c) {
- this.bytes_ = jspb.utils.byteSourceToUint8Array(a);
- this.start_ = void 0 !== b ? b : 0;
- this.end_ = void 0 !== c ? this.start_ + c : this.bytes_.length;
- this.cursor_ = this.start_;
- };
- jspb.BinaryDecoder.prototype.getEnd = function () {
- return this.end_;
- };
- jspb.BinaryDecoder.prototype.setEnd = function (a) {
- this.end_ = a;
- };
- jspb.BinaryDecoder.prototype.reset = function () {
- this.cursor_ = this.start_;
- };
- jspb.BinaryDecoder.prototype.getCursor = function () {
- return this.cursor_;
- };
- jspb.BinaryDecoder.prototype.setCursor = function (a) {
- this.cursor_ = a;
- };
- jspb.BinaryDecoder.prototype.advance = function (a) {
- this.cursor_ += a;
- jspb.asserts.assert(this.cursor_ <= this.end_);
- };
- jspb.BinaryDecoder.prototype.atEnd = function () {
- return this.cursor_ == this.end_;
- };
- jspb.BinaryDecoder.prototype.pastEnd = function () {
- return this.cursor_ > this.end_;
- };
- jspb.BinaryDecoder.prototype.getError = function () {
- return this.error_ || 0 > this.cursor_ || this.cursor_ > this.end_;
- };
- jspb.BinaryDecoder.prototype.readSplitVarint64 = function (a) {
- for (var b = 128, c = 0, d = 0, e = 0; 4 > e && 128 <= b; e++) {
- b = this.bytes_[this.cursor_++], c |= (b & 127) << 7 * e;
- }
- 128 <= b && (b = this.bytes_[this.cursor_++], c |= (b & 127) << 28, d |= (b & 127) >> 4);
- if (128 <= b) for (e = 0; 5 > e && 128 <= b; e++) {
- b = this.bytes_[this.cursor_++], d |= (b & 127) << 7 * e + 3;
- }
- if (128 > b) return a(c >>> 0, d >>> 0);
- jspb.asserts.fail("Failed to read varint, encoding is invalid.");
- this.error_ = !0;
- };
- jspb.BinaryDecoder.prototype.readSplitZigzagVarint64 = function (a) {
- return this.readSplitVarint64(function (b, c) {
- return jspb.utils.fromZigzag64(b, c, a);
- });
- };
- jspb.BinaryDecoder.prototype.readSplitFixed64 = function (a) {
- var b = this.bytes_,
- c = this.cursor_;
- this.cursor_ += 8;
- for (var d = 0, e = 0, f = c + 7; f >= c; f--) {
- d = d << 8 | b[f], e = e << 8 | b[f + 4];
- }
- return a(d, e);
- };
- jspb.BinaryDecoder.prototype.skipVarint = function () {
- for (; this.bytes_[this.cursor_] & 128;) {
- this.cursor_++;
- }
- this.cursor_++;
- };
- jspb.BinaryDecoder.prototype.unskipVarint = function (a) {
- for (; 128 < a;) {
- this.cursor_--, a >>>= 7;
- }
- this.cursor_--;
- };
- jspb.BinaryDecoder.prototype.readUnsignedVarint32 = function () {
- var a = this.bytes_;
- var b = a[this.cursor_ + 0];
- var c = b & 127;
- if (128 > b) return this.cursor_ += 1, jspb.asserts.assert(this.cursor_ <= this.end_), c;
- b = a[this.cursor_ + 1];
- c |= (b & 127) << 7;
- if (128 > b) return this.cursor_ += 2, jspb.asserts.assert(this.cursor_ <= this.end_), c;
- b = a[this.cursor_ + 2];
- c |= (b & 127) << 14;
- if (128 > b) return this.cursor_ += 3, jspb.asserts.assert(this.cursor_ <= this.end_), c;
- b = a[this.cursor_ + 3];
- c |= (b & 127) << 21;
- if (128 > b) return this.cursor_ += 4, jspb.asserts.assert(this.cursor_ <= this.end_), c;
- b = a[this.cursor_ + 4];
- c |= (b & 15) << 28;
- if (128 > b) return this.cursor_ += 5, jspb.asserts.assert(this.cursor_ <= this.end_), c >>> 0;
- this.cursor_ += 5;
- 128 <= a[this.cursor_++] && 128 <= a[this.cursor_++] && 128 <= a[this.cursor_++] && 128 <= a[this.cursor_++] && 128 <= a[this.cursor_++] && jspb.asserts.assert(!1);
- jspb.asserts.assert(this.cursor_ <= this.end_);
- return c;
- };
- jspb.BinaryDecoder.prototype.readSignedVarint32 = function () {
- return ~~this.readUnsignedVarint32();
- };
- jspb.BinaryDecoder.prototype.readUnsignedVarint32String = function () {
- return this.readUnsignedVarint32().toString();
- };
- jspb.BinaryDecoder.prototype.readSignedVarint32String = function () {
- return this.readSignedVarint32().toString();
- };
- jspb.BinaryDecoder.prototype.readZigzagVarint32 = function () {
- var a = this.readUnsignedVarint32();
- return a >>> 1 ^ -(a & 1);
- };
- jspb.BinaryDecoder.prototype.readUnsignedVarint64 = function () {
- return this.readSplitVarint64(jspb.utils.joinUint64);
- };
- jspb.BinaryDecoder.prototype.readUnsignedVarint64String = function () {
- return this.readSplitVarint64(jspb.utils.joinUnsignedDecimalString);
- };
- jspb.BinaryDecoder.prototype.readSignedVarint64 = function () {
- return this.readSplitVarint64(jspb.utils.joinInt64);
- };
- jspb.BinaryDecoder.prototype.readSignedVarint64String = function () {
- return this.readSplitVarint64(jspb.utils.joinSignedDecimalString);
- };
- jspb.BinaryDecoder.prototype.readZigzagVarint64 = function () {
- return this.readSplitVarint64(jspb.utils.joinZigzag64);
- };
- jspb.BinaryDecoder.prototype.readZigzagVarintHash64 = function () {
- return this.readSplitZigzagVarint64(jspb.utils.joinHash64);
- };
- jspb.BinaryDecoder.prototype.readZigzagVarint64String = function () {
- return this.readSplitZigzagVarint64(jspb.utils.joinSignedDecimalString);
- };
- jspb.BinaryDecoder.prototype.readUint8 = function () {
- var a = this.bytes_[this.cursor_ + 0];
- this.cursor_ += 1;
- jspb.asserts.assert(this.cursor_ <= this.end_);
- return a;
- };
- jspb.BinaryDecoder.prototype.readUint16 = function () {
- var a = this.bytes_[this.cursor_ + 0],
- b = this.bytes_[this.cursor_ + 1];
- this.cursor_ += 2;
- jspb.asserts.assert(this.cursor_ <= this.end_);
- return a << 0 | b << 8;
- };
- jspb.BinaryDecoder.prototype.readUint32 = function () {
- var a = this.bytes_[this.cursor_ + 0],
- b = this.bytes_[this.cursor_ + 1],
- c = this.bytes_[this.cursor_ + 2],
- d = this.bytes_[this.cursor_ + 3];
- this.cursor_ += 4;
- jspb.asserts.assert(this.cursor_ <= this.end_);
- return (a << 0 | b << 8 | c << 16 | d << 24) >>> 0;
- };
- jspb.BinaryDecoder.prototype.readUint64 = function () {
- var a = this.readUint32(),
- b = this.readUint32();
- return jspb.utils.joinUint64(a, b);
- };
- jspb.BinaryDecoder.prototype.readUint64String = function () {
- var a = this.readUint32(),
- b = this.readUint32();
- return jspb.utils.joinUnsignedDecimalString(a, b);
- };
- jspb.BinaryDecoder.prototype.readInt8 = function () {
- var a = this.bytes_[this.cursor_ + 0];
- this.cursor_ += 1;
- jspb.asserts.assert(this.cursor_ <= this.end_);
- return a << 24 >> 24;
- };
- jspb.BinaryDecoder.prototype.readInt16 = function () {
- var a = this.bytes_[this.cursor_ + 0],
- b = this.bytes_[this.cursor_ + 1];
- this.cursor_ += 2;
- jspb.asserts.assert(this.cursor_ <= this.end_);
- return (a << 0 | b << 8) << 16 >> 16;
- };
- jspb.BinaryDecoder.prototype.readInt32 = function () {
- var a = this.bytes_[this.cursor_ + 0],
- b = this.bytes_[this.cursor_ + 1],
- c = this.bytes_[this.cursor_ + 2],
- d = this.bytes_[this.cursor_ + 3];
- this.cursor_ += 4;
- jspb.asserts.assert(this.cursor_ <= this.end_);
- return a << 0 | b << 8 | c << 16 | d << 24;
- };
- jspb.BinaryDecoder.prototype.readInt64 = function () {
- var a = this.readUint32(),
- b = this.readUint32();
- return jspb.utils.joinInt64(a, b);
- };
- jspb.BinaryDecoder.prototype.readInt64String = function () {
- var a = this.readUint32(),
- b = this.readUint32();
- return jspb.utils.joinSignedDecimalString(a, b);
- };
- jspb.BinaryDecoder.prototype.readFloat = function () {
- var a = this.readUint32();
- return jspb.utils.joinFloat32(a, 0);
- };
- jspb.BinaryDecoder.prototype.readDouble = function () {
- var a = this.readUint32(),
- b = this.readUint32();
- return jspb.utils.joinFloat64(a, b);
- };
- jspb.BinaryDecoder.prototype.readBool = function () {
- return !!this.bytes_[this.cursor_++];
- };
- jspb.BinaryDecoder.prototype.readEnum = function () {
- return this.readSignedVarint32();
- };
- jspb.BinaryDecoder.prototype.readString = function (a) {
- var b = this.bytes_,
- c = this.cursor_;
- a = c + a;
- for (var d = [], e = ""; c < a;) {
- var f = b[c++];
- if (128 > f) d.push(f);else if (192 > f) continue;else if (224 > f) {
- var g = b[c++];
- d.push((f & 31) << 6 | g & 63);
- } else if (240 > f) {
- g = b[c++];
- var h = b[c++];
- d.push((f & 15) << 12 | (g & 63) << 6 | h & 63);
- } else if (248 > f) {
- g = b[c++];
- h = b[c++];
- var k = b[c++];
- f = (f & 7) << 18 | (g & 63) << 12 | (h & 63) << 6 | k & 63;
- f -= 65536;
- d.push((f >> 10 & 1023) + 55296, (f & 1023) + 56320);
- }
- 8192 <= d.length && (e += String.fromCharCode.apply(null, d), d.length = 0);
- }
- e += goog.crypt.byteArrayToString(d);
- this.cursor_ = c;
- return e;
- };
- jspb.BinaryDecoder.prototype.readStringWithLength = function () {
- var a = this.readUnsignedVarint32();
- return this.readString(a);
- };
- jspb.BinaryDecoder.prototype.readBytes = function (a) {
- if (0 > a || this.cursor_ + a > this.bytes_.length) return this.error_ = !0, jspb.asserts.fail("Invalid byte length!"), new Uint8Array(0);
- var b = this.bytes_.subarray(this.cursor_, this.cursor_ + a);
- this.cursor_ += a;
- jspb.asserts.assert(this.cursor_ <= this.end_);
- return b;
- };
- jspb.BinaryDecoder.prototype.readVarintHash64 = function () {
- return this.readSplitVarint64(jspb.utils.joinHash64);
- };
- jspb.BinaryDecoder.prototype.readFixedHash64 = function () {
- var a = this.bytes_,
- b = this.cursor_,
- c = a[b + 0],
- d = a[b + 1],
- e = a[b + 2],
- f = a[b + 3],
- g = a[b + 4],
- h = a[b + 5],
- k = a[b + 6];
- a = a[b + 7];
- this.cursor_ += 8;
- return String.fromCharCode(c, d, e, f, g, h, k, a);
- };
- jspb.BinaryReader = function (a, b, c) {
- this.decoder_ = jspb.BinaryDecoder.alloc(a, b, c);
- this.fieldCursor_ = this.decoder_.getCursor();
- this.nextField_ = jspb.BinaryConstants.INVALID_FIELD_NUMBER;
- this.nextWireType_ = jspb.BinaryConstants.WireType.INVALID;
- this.error_ = !1;
- this.readCallbacks_ = null;
- };
- jspb.BinaryReader.instanceCache_ = [];
- jspb.BinaryReader.alloc = function (a, b, c) {
- if (jspb.BinaryReader.instanceCache_.length) {
- var d = jspb.BinaryReader.instanceCache_.pop();
- a && d.decoder_.setBlock(a, b, c);
- return d;
- }
- return new jspb.BinaryReader(a, b, c);
- };
- jspb.BinaryReader.prototype.alloc = jspb.BinaryReader.alloc;
- jspb.BinaryReader.prototype.free = function () {
- this.decoder_.clear();
- this.nextField_ = jspb.BinaryConstants.INVALID_FIELD_NUMBER;
- this.nextWireType_ = jspb.BinaryConstants.WireType.INVALID;
- this.error_ = !1;
- this.readCallbacks_ = null;
- 100 > jspb.BinaryReader.instanceCache_.length && jspb.BinaryReader.instanceCache_.push(this);
- };
- jspb.BinaryReader.prototype.getFieldCursor = function () {
- return this.fieldCursor_;
- };
- jspb.BinaryReader.prototype.getCursor = function () {
- return this.decoder_.getCursor();
- };
- jspb.BinaryReader.prototype.getBuffer = function () {
- return this.decoder_.getBuffer();
- };
- jspb.BinaryReader.prototype.getFieldNumber = function () {
- return this.nextField_;
- };
- goog.exportProperty(jspb.BinaryReader.prototype, "getFieldNumber", jspb.BinaryReader.prototype.getFieldNumber);
- jspb.BinaryReader.prototype.getWireType = function () {
- return this.nextWireType_;
- };
- jspb.BinaryReader.prototype.isDelimited = function () {
- return this.nextWireType_ == jspb.BinaryConstants.WireType.DELIMITED;
- };
- goog.exportProperty(jspb.BinaryReader.prototype, "isDelimited", jspb.BinaryReader.prototype.isDelimited);
- jspb.BinaryReader.prototype.isEndGroup = function () {
- return this.nextWireType_ == jspb.BinaryConstants.WireType.END_GROUP;
- };
- goog.exportProperty(jspb.BinaryReader.prototype, "isEndGroup", jspb.BinaryReader.prototype.isEndGroup);
- jspb.BinaryReader.prototype.getError = function () {
- return this.error_ || this.decoder_.getError();
- };
- jspb.BinaryReader.prototype.setBlock = function (a, b, c) {
- this.decoder_.setBlock(a, b, c);
- this.nextField_ = jspb.BinaryConstants.INVALID_FIELD_NUMBER;
- this.nextWireType_ = jspb.BinaryConstants.WireType.INVALID;
- };
- jspb.BinaryReader.prototype.reset = function () {
- this.decoder_.reset();
- this.nextField_ = jspb.BinaryConstants.INVALID_FIELD_NUMBER;
- this.nextWireType_ = jspb.BinaryConstants.WireType.INVALID;
- };
- jspb.BinaryReader.prototype.advance = function (a) {
- this.decoder_.advance(a);
- };
- jspb.BinaryReader.prototype.nextField = function () {
- if (this.decoder_.atEnd()) return !1;
- if (this.getError()) return jspb.asserts.fail("Decoder hit an error"), !1;
- this.fieldCursor_ = this.decoder_.getCursor();
- var a = this.decoder_.readUnsignedVarint32(),
- b = a >>> 3;
- a &= 7;
- if (a != jspb.BinaryConstants.WireType.VARINT && a != jspb.BinaryConstants.WireType.FIXED32 && a != jspb.BinaryConstants.WireType.FIXED64 && a != jspb.BinaryConstants.WireType.DELIMITED && a != jspb.BinaryConstants.WireType.START_GROUP && a != jspb.BinaryConstants.WireType.END_GROUP) return jspb.asserts.fail("Invalid wire type: %s (at position %s)", a, this.fieldCursor_), this.error_ = !0, !1;
- this.nextField_ = b;
- this.nextWireType_ = a;
- return !0;
- };
- goog.exportProperty(jspb.BinaryReader.prototype, "nextField", jspb.BinaryReader.prototype.nextField);
- jspb.BinaryReader.prototype.unskipHeader = function () {
- this.decoder_.unskipVarint(this.nextField_ << 3 | this.nextWireType_);
- };
- jspb.BinaryReader.prototype.skipMatchingFields = function () {
- var a = this.nextField_;
- for (this.unskipHeader(); this.nextField() && this.getFieldNumber() == a;) {
- this.skipField();
- }
- this.decoder_.atEnd() || this.unskipHeader();
- };
- jspb.BinaryReader.prototype.skipVarintField = function () {
- this.nextWireType_ != jspb.BinaryConstants.WireType.VARINT ? (jspb.asserts.fail("Invalid wire type for skipVarintField"), this.skipField()) : this.decoder_.skipVarint();
- };
- jspb.BinaryReader.prototype.skipDelimitedField = function () {
- if (this.nextWireType_ != jspb.BinaryConstants.WireType.DELIMITED) jspb.asserts.fail("Invalid wire type for skipDelimitedField"), this.skipField();else {
- var a = this.decoder_.readUnsignedVarint32();
- this.decoder_.advance(a);
- }
- };
- jspb.BinaryReader.prototype.skipFixed32Field = function () {
- this.nextWireType_ != jspb.BinaryConstants.WireType.FIXED32 ? (jspb.asserts.fail("Invalid wire type for skipFixed32Field"), this.skipField()) : this.decoder_.advance(4);
- };
- jspb.BinaryReader.prototype.skipFixed64Field = function () {
- this.nextWireType_ != jspb.BinaryConstants.WireType.FIXED64 ? (jspb.asserts.fail("Invalid wire type for skipFixed64Field"), this.skipField()) : this.decoder_.advance(8);
- };
- jspb.BinaryReader.prototype.skipGroup = function () {
- var a = this.nextField_;
- do {
- if (!this.nextField()) {
- jspb.asserts.fail("Unmatched start-group tag: stream EOF");
- this.error_ = !0;
- break;
- }
- if (this.nextWireType_ == jspb.BinaryConstants.WireType.END_GROUP) {
- this.nextField_ != a && (jspb.asserts.fail("Unmatched end-group tag"), this.error_ = !0);
- break;
- }
- this.skipField();
- } while (1);
- };
- jspb.BinaryReader.prototype.skipField = function () {
- switch (this.nextWireType_) {
- case jspb.BinaryConstants.WireType.VARINT:
- this.skipVarintField();
- break;
- case jspb.BinaryConstants.WireType.FIXED64:
- this.skipFixed64Field();
- break;
- case jspb.BinaryConstants.WireType.DELIMITED:
- this.skipDelimitedField();
- break;
- case jspb.BinaryConstants.WireType.FIXED32:
- this.skipFixed32Field();
- break;
- case jspb.BinaryConstants.WireType.START_GROUP:
- this.skipGroup();
- break;
- default:
- jspb.asserts.fail("Invalid wire encoding for field.");
- }
- };
- jspb.BinaryReader.prototype.registerReadCallback = function (a, b) {
- null === this.readCallbacks_ && (this.readCallbacks_ = {});
- jspb.asserts.assert(!this.readCallbacks_[a]);
- this.readCallbacks_[a] = b;
- };
- jspb.BinaryReader.prototype.runReadCallback = function (a) {
- jspb.asserts.assert(null !== this.readCallbacks_);
- a = this.readCallbacks_[a];
- jspb.asserts.assert(a);
- return a(this);
- };
- jspb.BinaryReader.prototype.readAny = function (a) {
- this.nextWireType_ = jspb.BinaryConstants.FieldTypeToWireType(a);
- var b = jspb.BinaryConstants.FieldType;
- switch (a) {
- case b.DOUBLE:
- return this.readDouble();
- case b.FLOAT:
- return this.readFloat();
- case b.INT64:
- return this.readInt64();
- case b.UINT64:
- return this.readUint64();
- case b.INT32:
- return this.readInt32();
- case b.FIXED64:
- return this.readFixed64();
- case b.FIXED32:
- return this.readFixed32();
- case b.BOOL:
- return this.readBool();
- case b.STRING:
- return this.readString();
- case b.GROUP:
- jspb.asserts.fail("Group field type not supported in readAny()");
- case b.MESSAGE:
- jspb.asserts.fail("Message field type not supported in readAny()");
- case b.BYTES:
- return this.readBytes();
- case b.UINT32:
- return this.readUint32();
- case b.ENUM:
- return this.readEnum();
- case b.SFIXED32:
- return this.readSfixed32();
- case b.SFIXED64:
- return this.readSfixed64();
- case b.SINT32:
- return this.readSint32();
- case b.SINT64:
- return this.readSint64();
- case b.FHASH64:
- return this.readFixedHash64();
- case b.VHASH64:
- return this.readVarintHash64();
- default:
- jspb.asserts.fail("Invalid field type in readAny()");
- }
- return 0;
- };
- jspb.BinaryReader.prototype.readMessage = function (a, b) {
- jspb.asserts.assert(this.nextWireType_ == jspb.BinaryConstants.WireType.DELIMITED);
- var c = this.decoder_.getEnd(),
- d = this.decoder_.readUnsignedVarint32();
- d = this.decoder_.getCursor() + d;
- this.decoder_.setEnd(d);
- b(a, this);
- this.decoder_.setCursor(d);
- this.decoder_.setEnd(c);
- };
- goog.exportProperty(jspb.BinaryReader.prototype, "readMessage", jspb.BinaryReader.prototype.readMessage);
- jspb.BinaryReader.prototype.readGroup = function (a, b, c) {
- jspb.asserts.assert(this.nextWireType_ == jspb.BinaryConstants.WireType.START_GROUP);
- jspb.asserts.assert(this.nextField_ == a);
- c(b, this);
- this.error_ || this.nextWireType_ == jspb.BinaryConstants.WireType.END_GROUP || (jspb.asserts.fail("Group submessage did not end with an END_GROUP tag"), this.error_ = !0);
- };
- goog.exportProperty(jspb.BinaryReader.prototype, "readGroup", jspb.BinaryReader.prototype.readGroup);
- jspb.BinaryReader.prototype.getFieldDecoder = function () {
- jspb.asserts.assert(this.nextWireType_ == jspb.BinaryConstants.WireType.DELIMITED);
- var a = this.decoder_.readUnsignedVarint32(),
- b = this.decoder_.getCursor(),
- c = b + a;
- a = jspb.BinaryDecoder.alloc(this.decoder_.getBuffer(), b, a);
- this.decoder_.setCursor(c);
- return a;
- };
- jspb.BinaryReader.prototype.readInt32 = function () {
- jspb.asserts.assert(this.nextWireType_ == jspb.BinaryConstants.WireType.VARINT);
- return this.decoder_.readSignedVarint32();
- };
- goog.exportProperty(jspb.BinaryReader.prototype, "readInt32", jspb.BinaryReader.prototype.readInt32);
- jspb.BinaryReader.prototype.readInt32String = function () {
- jspb.asserts.assert(this.nextWireType_ == jspb.BinaryConstants.WireType.VARINT);
- return this.decoder_.readSignedVarint32String();
- };
- jspb.BinaryReader.prototype.readInt64 = function () {
- jspb.asserts.assert(this.nextWireType_ == jspb.BinaryConstants.WireType.VARINT);
- return this.decoder_.readSignedVarint64();
- };
- goog.exportProperty(jspb.BinaryReader.prototype, "readInt64", jspb.BinaryReader.prototype.readInt64);
- jspb.BinaryReader.prototype.readInt64String = function () {
- jspb.asserts.assert(this.nextWireType_ == jspb.BinaryConstants.WireType.VARINT);
- return this.decoder_.readSignedVarint64String();
- };
- jspb.BinaryReader.prototype.readUint32 = function () {
- jspb.asserts.assert(this.nextWireType_ == jspb.BinaryConstants.WireType.VARINT);
- return this.decoder_.readUnsignedVarint32();
- };
- goog.exportProperty(jspb.BinaryReader.prototype, "readUint32", jspb.BinaryReader.prototype.readUint32);
- jspb.BinaryReader.prototype.readUint32String = function () {
- jspb.asserts.assert(this.nextWireType_ == jspb.BinaryConstants.WireType.VARINT);
- return this.decoder_.readUnsignedVarint32String();
- };
- jspb.BinaryReader.prototype.readUint64 = function () {
- jspb.asserts.assert(this.nextWireType_ == jspb.BinaryConstants.WireType.VARINT);
- return this.decoder_.readUnsignedVarint64();
- };
- goog.exportProperty(jspb.BinaryReader.prototype, "readUint64", jspb.BinaryReader.prototype.readUint64);
- jspb.BinaryReader.prototype.readUint64String = function () {
- jspb.asserts.assert(this.nextWireType_ == jspb.BinaryConstants.WireType.VARINT);
- return this.decoder_.readUnsignedVarint64String();
- };
- jspb.BinaryReader.prototype.readSint32 = function () {
- jspb.asserts.assert(this.nextWireType_ == jspb.BinaryConstants.WireType.VARINT);
- return this.decoder_.readZigzagVarint32();
- };
- goog.exportProperty(jspb.BinaryReader.prototype, "readSint32", jspb.BinaryReader.prototype.readSint32);
- jspb.BinaryReader.prototype.readSint64 = function () {
- jspb.asserts.assert(this.nextWireType_ == jspb.BinaryConstants.WireType.VARINT);
- return this.decoder_.readZigzagVarint64();
- };
- goog.exportProperty(jspb.BinaryReader.prototype, "readSint64", jspb.BinaryReader.prototype.readSint64);
- jspb.BinaryReader.prototype.readSint64String = function () {
- jspb.asserts.assert(this.nextWireType_ == jspb.BinaryConstants.WireType.VARINT);
- return this.decoder_.readZigzagVarint64String();
- };
- jspb.BinaryReader.prototype.readFixed32 = function () {
- jspb.asserts.assert(this.nextWireType_ == jspb.BinaryConstants.WireType.FIXED32);
- return this.decoder_.readUint32();
- };
- goog.exportProperty(jspb.BinaryReader.prototype, "readFixed32", jspb.BinaryReader.prototype.readFixed32);
- jspb.BinaryReader.prototype.readFixed64 = function () {
- jspb.asserts.assert(this.nextWireType_ == jspb.BinaryConstants.WireType.FIXED64);
- return this.decoder_.readUint64();
- };
- goog.exportProperty(jspb.BinaryReader.prototype, "readFixed64", jspb.BinaryReader.prototype.readFixed64);
- jspb.BinaryReader.prototype.readFixed64String = function () {
- jspb.asserts.assert(this.nextWireType_ == jspb.BinaryConstants.WireType.FIXED64);
- return this.decoder_.readUint64String();
- };
- jspb.BinaryReader.prototype.readSfixed32 = function () {
- jspb.asserts.assert(this.nextWireType_ == jspb.BinaryConstants.WireType.FIXED32);
- return this.decoder_.readInt32();
- };
- goog.exportProperty(jspb.BinaryReader.prototype, "readSfixed32", jspb.BinaryReader.prototype.readSfixed32);
- jspb.BinaryReader.prototype.readSfixed32String = function () {
- jspb.asserts.assert(this.nextWireType_ == jspb.BinaryConstants.WireType.FIXED32);
- return this.decoder_.readInt32().toString();
- };
- jspb.BinaryReader.prototype.readSfixed64 = function () {
- jspb.asserts.assert(this.nextWireType_ == jspb.BinaryConstants.WireType.FIXED64);
- return this.decoder_.readInt64();
- };
- goog.exportProperty(jspb.BinaryReader.prototype, "readSfixed64", jspb.BinaryReader.prototype.readSfixed64);
- jspb.BinaryReader.prototype.readSfixed64String = function () {
- jspb.asserts.assert(this.nextWireType_ == jspb.BinaryConstants.WireType.FIXED64);
- return this.decoder_.readInt64String();
- };
- jspb.BinaryReader.prototype.readFloat = function () {
- jspb.asserts.assert(this.nextWireType_ == jspb.BinaryConstants.WireType.FIXED32);
- return this.decoder_.readFloat();
- };
- goog.exportProperty(jspb.BinaryReader.prototype, "readFloat", jspb.BinaryReader.prototype.readFloat);
- jspb.BinaryReader.prototype.readDouble = function () {
- jspb.asserts.assert(this.nextWireType_ == jspb.BinaryConstants.WireType.FIXED64);
- return this.decoder_.readDouble();
- };
- goog.exportProperty(jspb.BinaryReader.prototype, "readDouble", jspb.BinaryReader.prototype.readDouble);
- jspb.BinaryReader.prototype.readBool = function () {
- jspb.asserts.assert(this.nextWireType_ == jspb.BinaryConstants.WireType.VARINT);
- return !!this.decoder_.readUnsignedVarint32();
- };
- goog.exportProperty(jspb.BinaryReader.prototype, "readBool", jspb.BinaryReader.prototype.readBool);
- jspb.BinaryReader.prototype.readEnum = function () {
- jspb.asserts.assert(this.nextWireType_ == jspb.BinaryConstants.WireType.VARINT);
- return this.decoder_.readSignedVarint64();
- };
- goog.exportProperty(jspb.BinaryReader.prototype, "readEnum", jspb.BinaryReader.prototype.readEnum);
- jspb.BinaryReader.prototype.readString = function () {
- jspb.asserts.assert(this.nextWireType_ == jspb.BinaryConstants.WireType.DELIMITED);
- var a = this.decoder_.readUnsignedVarint32();
- return this.decoder_.readString(a);
- };
- goog.exportProperty(jspb.BinaryReader.prototype, "readString", jspb.BinaryReader.prototype.readString);
- jspb.BinaryReader.prototype.readBytes = function () {
- jspb.asserts.assert(this.nextWireType_ == jspb.BinaryConstants.WireType.DELIMITED);
- var a = this.decoder_.readUnsignedVarint32();
- return this.decoder_.readBytes(a);
- };
- goog.exportProperty(jspb.BinaryReader.prototype, "readBytes", jspb.BinaryReader.prototype.readBytes);
- jspb.BinaryReader.prototype.readVarintHash64 = function () {
- jspb.asserts.assert(this.nextWireType_ == jspb.BinaryConstants.WireType.VARINT);
- return this.decoder_.readVarintHash64();
- };
- jspb.BinaryReader.prototype.readSintHash64 = function () {
- jspb.asserts.assert(this.nextWireType_ == jspb.BinaryConstants.WireType.VARINT);
- return this.decoder_.readZigzagVarintHash64();
- };
- jspb.BinaryReader.prototype.readSplitVarint64 = function (a) {
- jspb.asserts.assert(this.nextWireType_ == jspb.BinaryConstants.WireType.VARINT);
- return this.decoder_.readSplitVarint64(a);
- };
- jspb.BinaryReader.prototype.readSplitZigzagVarint64 = function (a) {
- jspb.asserts.assert(this.nextWireType_ == jspb.BinaryConstants.WireType.VARINT);
- return this.decoder_.readSplitVarint64(function (b, c) {
- return jspb.utils.fromZigzag64(b, c, a);
- });
- };
- jspb.BinaryReader.prototype.readFixedHash64 = function () {
- jspb.asserts.assert(this.nextWireType_ == jspb.BinaryConstants.WireType.FIXED64);
- return this.decoder_.readFixedHash64();
- };
- jspb.BinaryReader.prototype.readSplitFixed64 = function (a) {
- jspb.asserts.assert(this.nextWireType_ == jspb.BinaryConstants.WireType.FIXED64);
- return this.decoder_.readSplitFixed64(a);
- };
- jspb.BinaryReader.prototype.readPackedField_ = function (a) {
- jspb.asserts.assert(this.nextWireType_ == jspb.BinaryConstants.WireType.DELIMITED);
- var b = this.decoder_.readUnsignedVarint32();
- b = this.decoder_.getCursor() + b;
- for (var c = []; this.decoder_.getCursor() < b;) {
- c.push(a.call(this.decoder_));
- }
- return c;
- };
- jspb.BinaryReader.prototype.readPackedInt32 = function () {
- return this.readPackedField_(this.decoder_.readSignedVarint32);
- };
- goog.exportProperty(jspb.BinaryReader.prototype, "readPackedInt32", jspb.BinaryReader.prototype.readPackedInt32);
- jspb.BinaryReader.prototype.readPackedInt32String = function () {
- return this.readPackedField_(this.decoder_.readSignedVarint32String);
- };
- jspb.BinaryReader.prototype.readPackedInt64 = function () {
- return this.readPackedField_(this.decoder_.readSignedVarint64);
- };
- goog.exportProperty(jspb.BinaryReader.prototype, "readPackedInt64", jspb.BinaryReader.prototype.readPackedInt64);
- jspb.BinaryReader.prototype.readPackedInt64String = function () {
- return this.readPackedField_(this.decoder_.readSignedVarint64String);
- };
- jspb.BinaryReader.prototype.readPackedUint32 = function () {
- return this.readPackedField_(this.decoder_.readUnsignedVarint32);
- };
- goog.exportProperty(jspb.BinaryReader.prototype, "readPackedUint32", jspb.BinaryReader.prototype.readPackedUint32);
- jspb.BinaryReader.prototype.readPackedUint32String = function () {
- return this.readPackedField_(this.decoder_.readUnsignedVarint32String);
- };
- jspb.BinaryReader.prototype.readPackedUint64 = function () {
- return this.readPackedField_(this.decoder_.readUnsignedVarint64);
- };
- goog.exportProperty(jspb.BinaryReader.prototype, "readPackedUint64", jspb.BinaryReader.prototype.readPackedUint64);
- jspb.BinaryReader.prototype.readPackedUint64String = function () {
- return this.readPackedField_(this.decoder_.readUnsignedVarint64String);
- };
- jspb.BinaryReader.prototype.readPackedSint32 = function () {
- return this.readPackedField_(this.decoder_.readZigzagVarint32);
- };
- goog.exportProperty(jspb.BinaryReader.prototype, "readPackedSint32", jspb.BinaryReader.prototype.readPackedSint32);
- jspb.BinaryReader.prototype.readPackedSint64 = function () {
- return this.readPackedField_(this.decoder_.readZigzagVarint64);
- };
- goog.exportProperty(jspb.BinaryReader.prototype, "readPackedSint64", jspb.BinaryReader.prototype.readPackedSint64);
- jspb.BinaryReader.prototype.readPackedSint64String = function () {
- return this.readPackedField_(this.decoder_.readZigzagVarint64String);
- };
- jspb.BinaryReader.prototype.readPackedFixed32 = function () {
- return this.readPackedField_(this.decoder_.readUint32);
- };
- goog.exportProperty(jspb.BinaryReader.prototype, "readPackedFixed32", jspb.BinaryReader.prototype.readPackedFixed32);
- jspb.BinaryReader.prototype.readPackedFixed64 = function () {
- return this.readPackedField_(this.decoder_.readUint64);
- };
- goog.exportProperty(jspb.BinaryReader.prototype, "readPackedFixed64", jspb.BinaryReader.prototype.readPackedFixed64);
- jspb.BinaryReader.prototype.readPackedFixed64String = function () {
- return this.readPackedField_(this.decoder_.readUint64String);
- };
- jspb.BinaryReader.prototype.readPackedSfixed32 = function () {
- return this.readPackedField_(this.decoder_.readInt32);
- };
- goog.exportProperty(jspb.BinaryReader.prototype, "readPackedSfixed32", jspb.BinaryReader.prototype.readPackedSfixed32);
- jspb.BinaryReader.prototype.readPackedSfixed64 = function () {
- return this.readPackedField_(this.decoder_.readInt64);
- };
- goog.exportProperty(jspb.BinaryReader.prototype, "readPackedSfixed64", jspb.BinaryReader.prototype.readPackedSfixed64);
- jspb.BinaryReader.prototype.readPackedSfixed64String = function () {
- return this.readPackedField_(this.decoder_.readInt64String);
- };
- jspb.BinaryReader.prototype.readPackedFloat = function () {
- return this.readPackedField_(this.decoder_.readFloat);
- };
- goog.exportProperty(jspb.BinaryReader.prototype, "readPackedFloat", jspb.BinaryReader.prototype.readPackedFloat);
- jspb.BinaryReader.prototype.readPackedDouble = function () {
- return this.readPackedField_(this.decoder_.readDouble);
- };
- goog.exportProperty(jspb.BinaryReader.prototype, "readPackedDouble", jspb.BinaryReader.prototype.readPackedDouble);
- jspb.BinaryReader.prototype.readPackedBool = function () {
- return this.readPackedField_(this.decoder_.readBool);
- };
- goog.exportProperty(jspb.BinaryReader.prototype, "readPackedBool", jspb.BinaryReader.prototype.readPackedBool);
- jspb.BinaryReader.prototype.readPackedEnum = function () {
- return this.readPackedField_(this.decoder_.readEnum);
- };
- goog.exportProperty(jspb.BinaryReader.prototype, "readPackedEnum", jspb.BinaryReader.prototype.readPackedEnum);
- jspb.BinaryReader.prototype.readPackedVarintHash64 = function () {
- return this.readPackedField_(this.decoder_.readVarintHash64);
- };
- jspb.BinaryReader.prototype.readPackedFixedHash64 = function () {
- return this.readPackedField_(this.decoder_.readFixedHash64);
- };
- jspb.BinaryEncoder = function () {
- this.buffer_ = [];
- };
- jspb.BinaryEncoder.prototype.length = function () {
- return this.buffer_.length;
- };
- jspb.BinaryEncoder.prototype.end = function () {
- var a = this.buffer_;
- this.buffer_ = [];
- return a;
- };
- jspb.BinaryEncoder.prototype.writeSplitVarint64 = function (a, b) {
- jspb.asserts.assert(a == Math.floor(a));
- jspb.asserts.assert(b == Math.floor(b));
- jspb.asserts.assert(0 <= a && a < jspb.BinaryConstants.TWO_TO_32);
- for (jspb.asserts.assert(0 <= b && b < jspb.BinaryConstants.TWO_TO_32); 0 < b || 127 < a;) {
- this.buffer_.push(a & 127 | 128), a = (a >>> 7 | b << 25) >>> 0, b >>>= 7;
- }
- this.buffer_.push(a);
- };
- jspb.BinaryEncoder.prototype.writeSplitFixed64 = function (a, b) {
- jspb.asserts.assert(a == Math.floor(a));
- jspb.asserts.assert(b == Math.floor(b));
- jspb.asserts.assert(0 <= a && a < jspb.BinaryConstants.TWO_TO_32);
- jspb.asserts.assert(0 <= b && b < jspb.BinaryConstants.TWO_TO_32);
- this.writeUint32(a);
- this.writeUint32(b);
- };
- jspb.BinaryEncoder.prototype.writeUnsignedVarint32 = function (a) {
- jspb.asserts.assert(a == Math.floor(a));
- for (jspb.asserts.assert(0 <= a && a < jspb.BinaryConstants.TWO_TO_32); 127 < a;) {
- this.buffer_.push(a & 127 | 128), a >>>= 7;
- }
- this.buffer_.push(a);
- };
- jspb.BinaryEncoder.prototype.writeSignedVarint32 = function (a) {
- jspb.asserts.assert(a == Math.floor(a));
- jspb.asserts.assert(a >= -jspb.BinaryConstants.TWO_TO_31 && a < jspb.BinaryConstants.TWO_TO_31);
- if (0 <= a) this.writeUnsignedVarint32(a);else {
- for (var b = 0; 9 > b; b++) {
- this.buffer_.push(a & 127 | 128), a >>= 7;
- }
- this.buffer_.push(1);
- }
- };
- jspb.BinaryEncoder.prototype.writeUnsignedVarint64 = function (a) {
- jspb.asserts.assert(a == Math.floor(a));
- jspb.asserts.assert(0 <= a && a < jspb.BinaryConstants.TWO_TO_64);
- jspb.utils.splitInt64(a);
- this.writeSplitVarint64(jspb.utils.split64Low, jspb.utils.split64High);
- };
- jspb.BinaryEncoder.prototype.writeSignedVarint64 = function (a) {
- jspb.asserts.assert(a == Math.floor(a));
- jspb.asserts.assert(a >= -jspb.BinaryConstants.TWO_TO_63 && a < jspb.BinaryConstants.TWO_TO_63);
- jspb.utils.splitInt64(a);
- this.writeSplitVarint64(jspb.utils.split64Low, jspb.utils.split64High);
- };
- jspb.BinaryEncoder.prototype.writeZigzagVarint32 = function (a) {
- jspb.asserts.assert(a == Math.floor(a));
- jspb.asserts.assert(a >= -jspb.BinaryConstants.TWO_TO_31 && a < jspb.BinaryConstants.TWO_TO_31);
- this.writeUnsignedVarint32((a << 1 ^ a >> 31) >>> 0);
- };
- jspb.BinaryEncoder.prototype.writeZigzagVarint64 = function (a) {
- jspb.asserts.assert(a == Math.floor(a));
- jspb.asserts.assert(a >= -jspb.BinaryConstants.TWO_TO_63 && a < jspb.BinaryConstants.TWO_TO_63);
- jspb.utils.splitZigzag64(a);
- this.writeSplitVarint64(jspb.utils.split64Low, jspb.utils.split64High);
- };
- jspb.BinaryEncoder.prototype.writeZigzagVarint64String = function (a) {
- this.writeZigzagVarintHash64(jspb.utils.decimalStringToHash64(a));
- };
- jspb.BinaryEncoder.prototype.writeZigzagVarintHash64 = function (a) {
- var b = this;
- jspb.utils.splitHash64(a);
- jspb.utils.toZigzag64(jspb.utils.split64Low, jspb.utils.split64High, function (a, d) {
- b.writeSplitVarint64(a >>> 0, d >>> 0);
- });
- };
- jspb.BinaryEncoder.prototype.writeUint8 = function (a) {
- jspb.asserts.assert(a == Math.floor(a));
- jspb.asserts.assert(0 <= a && 256 > a);
- this.buffer_.push(a >>> 0 & 255);
- };
- jspb.BinaryEncoder.prototype.writeUint16 = function (a) {
- jspb.asserts.assert(a == Math.floor(a));
- jspb.asserts.assert(0 <= a && 65536 > a);
- this.buffer_.push(a >>> 0 & 255);
- this.buffer_.push(a >>> 8 & 255);
- };
- jspb.BinaryEncoder.prototype.writeUint32 = function (a) {
- jspb.asserts.assert(a == Math.floor(a));
- jspb.asserts.assert(0 <= a && a < jspb.BinaryConstants.TWO_TO_32);
- this.buffer_.push(a >>> 0 & 255);
- this.buffer_.push(a >>> 8 & 255);
- this.buffer_.push(a >>> 16 & 255);
- this.buffer_.push(a >>> 24 & 255);
- };
- jspb.BinaryEncoder.prototype.writeUint64 = function (a) {
- jspb.asserts.assert(a == Math.floor(a));
- jspb.asserts.assert(0 <= a && a < jspb.BinaryConstants.TWO_TO_64);
- jspb.utils.splitUint64(a);
- this.writeUint32(jspb.utils.split64Low);
- this.writeUint32(jspb.utils.split64High);
- };
- jspb.BinaryEncoder.prototype.writeInt8 = function (a) {
- jspb.asserts.assert(a == Math.floor(a));
- jspb.asserts.assert(-128 <= a && 128 > a);
- this.buffer_.push(a >>> 0 & 255);
- };
- jspb.BinaryEncoder.prototype.writeInt16 = function (a) {
- jspb.asserts.assert(a == Math.floor(a));
- jspb.asserts.assert(-32768 <= a && 32768 > a);
- this.buffer_.push(a >>> 0 & 255);
- this.buffer_.push(a >>> 8 & 255);
- };
- jspb.BinaryEncoder.prototype.writeInt32 = function (a) {
- jspb.asserts.assert(a == Math.floor(a));
- jspb.asserts.assert(a >= -jspb.BinaryConstants.TWO_TO_31 && a < jspb.BinaryConstants.TWO_TO_31);
- this.buffer_.push(a >>> 0 & 255);
- this.buffer_.push(a >>> 8 & 255);
- this.buffer_.push(a >>> 16 & 255);
- this.buffer_.push(a >>> 24 & 255);
- };
- jspb.BinaryEncoder.prototype.writeInt64 = function (a) {
- jspb.asserts.assert(a == Math.floor(a));
- jspb.asserts.assert(a >= -jspb.BinaryConstants.TWO_TO_63 && a < jspb.BinaryConstants.TWO_TO_63);
- jspb.utils.splitInt64(a);
- this.writeSplitFixed64(jspb.utils.split64Low, jspb.utils.split64High);
- };
- jspb.BinaryEncoder.prototype.writeInt64String = function (a) {
- jspb.asserts.assert(a == Math.floor(a));
- jspb.asserts.assert(+a >= -jspb.BinaryConstants.TWO_TO_63 && +a < jspb.BinaryConstants.TWO_TO_63);
- jspb.utils.splitHash64(jspb.utils.decimalStringToHash64(a));
- this.writeSplitFixed64(jspb.utils.split64Low, jspb.utils.split64High);
- };
- jspb.BinaryEncoder.prototype.writeFloat = function (a) {
- jspb.asserts.assert(Infinity === a || -Infinity === a || isNaN(a) || a >= -jspb.BinaryConstants.FLOAT32_MAX && a <= jspb.BinaryConstants.FLOAT32_MAX);
- jspb.utils.splitFloat32(a);
- this.writeUint32(jspb.utils.split64Low);
- };
- jspb.BinaryEncoder.prototype.writeDouble = function (a) {
- jspb.asserts.assert(Infinity === a || -Infinity === a || isNaN(a) || a >= -jspb.BinaryConstants.FLOAT64_MAX && a <= jspb.BinaryConstants.FLOAT64_MAX);
- jspb.utils.splitFloat64(a);
- this.writeUint32(jspb.utils.split64Low);
- this.writeUint32(jspb.utils.split64High);
- };
- jspb.BinaryEncoder.prototype.writeBool = function (a) {
- jspb.asserts.assert("boolean" === typeof a || "number" === typeof a);
- this.buffer_.push(a ? 1 : 0);
- };
- jspb.BinaryEncoder.prototype.writeEnum = function (a) {
- jspb.asserts.assert(a == Math.floor(a));
- jspb.asserts.assert(a >= -jspb.BinaryConstants.TWO_TO_31 && a < jspb.BinaryConstants.TWO_TO_31);
- this.writeSignedVarint32(a);
- };
- jspb.BinaryEncoder.prototype.writeBytes = function (a) {
- this.buffer_.push.apply(this.buffer_, a);
- };
- jspb.BinaryEncoder.prototype.writeVarintHash64 = function (a) {
- jspb.utils.splitHash64(a);
- this.writeSplitVarint64(jspb.utils.split64Low, jspb.utils.split64High);
- };
- jspb.BinaryEncoder.prototype.writeFixedHash64 = function (a) {
- jspb.utils.splitHash64(a);
- this.writeUint32(jspb.utils.split64Low);
- this.writeUint32(jspb.utils.split64High);
- };
- jspb.BinaryEncoder.prototype.writeString = function (a) {
- var b = this.buffer_.length;
- jspb.asserts.assertString(a);
- for (var c = 0; c < a.length; c++) {
- var d = a.charCodeAt(c);
- if (128 > d) this.buffer_.push(d);else if (2048 > d) this.buffer_.push(d >> 6 | 192), this.buffer_.push(d & 63 | 128);else if (65536 > d) if (55296 <= d && 56319 >= d && c + 1 < a.length) {
- var e = a.charCodeAt(c + 1);
- 56320 <= e && 57343 >= e && (d = 1024 * (d - 55296) + e - 56320 + 65536, this.buffer_.push(d >> 18 | 240), this.buffer_.push(d >> 12 & 63 | 128), this.buffer_.push(d >> 6 & 63 | 128), this.buffer_.push(d & 63 | 128), c++);
- } else this.buffer_.push(d >> 12 | 224), this.buffer_.push(d >> 6 & 63 | 128), this.buffer_.push(d & 63 | 128);
- }
- return this.buffer_.length - b;
- };
- jspb.arith = {};
- jspb.arith.UInt64 = function (a, b) {
- this.lo = a;
- this.hi = b;
- };
- jspb.arith.UInt64.prototype.cmp = function (a) {
- return this.hi < a.hi || this.hi == a.hi && this.lo < a.lo ? -1 : this.hi == a.hi && this.lo == a.lo ? 0 : 1;
- };
- jspb.arith.UInt64.prototype.rightShift = function () {
- return new jspb.arith.UInt64((this.lo >>> 1 | (this.hi & 1) << 31) >>> 0, this.hi >>> 1 >>> 0);
- };
- jspb.arith.UInt64.prototype.leftShift = function () {
- return new jspb.arith.UInt64(this.lo << 1 >>> 0, (this.hi << 1 | this.lo >>> 31) >>> 0);
- };
- jspb.arith.UInt64.prototype.msb = function () {
- return !!(this.hi & 2147483648);
- };
- jspb.arith.UInt64.prototype.lsb = function () {
- return !!(this.lo & 1);
- };
- jspb.arith.UInt64.prototype.zero = function () {
- return 0 == this.lo && 0 == this.hi;
- };
- jspb.arith.UInt64.prototype.add = function (a) {
- return new jspb.arith.UInt64((this.lo + a.lo & 4294967295) >>> 0 >>> 0, ((this.hi + a.hi & 4294967295) >>> 0) + (4294967296 <= this.lo + a.lo ? 1 : 0) >>> 0);
- };
- jspb.arith.UInt64.prototype.sub = function (a) {
- return new jspb.arith.UInt64((this.lo - a.lo & 4294967295) >>> 0 >>> 0, ((this.hi - a.hi & 4294967295) >>> 0) - (0 > this.lo - a.lo ? 1 : 0) >>> 0);
- };
- jspb.arith.UInt64.mul32x32 = function (a, b) {
- var c = a & 65535;
- a >>>= 16;
- var d = b & 65535,
- e = b >>> 16;
- b = c * d + 65536 * (c * e & 65535) + 65536 * (a * d & 65535);
- for (c = a * e + (c * e >>> 16) + (a * d >>> 16); 4294967296 <= b;) {
- b -= 4294967296, c += 1;
- }
- return new jspb.arith.UInt64(b >>> 0, c >>> 0);
- };
- jspb.arith.UInt64.prototype.mul = function (a) {
- var b = jspb.arith.UInt64.mul32x32(this.lo, a);
- a = jspb.arith.UInt64.mul32x32(this.hi, a);
- a.hi = a.lo;
- a.lo = 0;
- return b.add(a);
- };
- jspb.arith.UInt64.prototype.div = function (a) {
- if (0 == a) return [];
- var b = new jspb.arith.UInt64(0, 0),
- c = new jspb.arith.UInt64(this.lo, this.hi);
- a = new jspb.arith.UInt64(a, 0);
- for (var d = new jspb.arith.UInt64(1, 0); !a.msb();) {
- a = a.leftShift(), d = d.leftShift();
- }
- for (; !d.zero();) {
- 0 >= a.cmp(c) && (b = b.add(d), c = c.sub(a)), a = a.rightShift(), d = d.rightShift();
- }
- return [b, c];
- };
- jspb.arith.UInt64.prototype.toString = function () {
- for (var a = "", b = this; !b.zero();) {
- b = b.div(10);
- var c = b[0];
- a = b[1].lo + a;
- b = c;
- }
- "" == a && (a = "0");
- return a;
- };
- jspb.arith.UInt64.fromString = function (a) {
- for (var b = new jspb.arith.UInt64(0, 0), c = new jspb.arith.UInt64(0, 0), d = 0; d < a.length; d++) {
- if ("0" > a[d] || "9" < a[d]) return null;
- var e = parseInt(a[d], 10);
- c.lo = e;
- b = b.mul(10).add(c);
- }
- return b;
- };
- jspb.arith.UInt64.prototype.clone = function () {
- return new jspb.arith.UInt64(this.lo, this.hi);
- };
- jspb.arith.Int64 = function (a, b) {
- this.lo = a;
- this.hi = b;
- };
- jspb.arith.Int64.prototype.add = function (a) {
- return new jspb.arith.Int64((this.lo + a.lo & 4294967295) >>> 0 >>> 0, ((this.hi + a.hi & 4294967295) >>> 0) + (4294967296 <= this.lo + a.lo ? 1 : 0) >>> 0);
- };
- jspb.arith.Int64.prototype.sub = function (a) {
- return new jspb.arith.Int64((this.lo - a.lo & 4294967295) >>> 0 >>> 0, ((this.hi - a.hi & 4294967295) >>> 0) - (0 > this.lo - a.lo ? 1 : 0) >>> 0);
- };
- jspb.arith.Int64.prototype.clone = function () {
- return new jspb.arith.Int64(this.lo, this.hi);
- };
- jspb.arith.Int64.prototype.toString = function () {
- var a = 0 != (this.hi & 2147483648),
- b = new jspb.arith.UInt64(this.lo, this.hi);
- a && (b = new jspb.arith.UInt64(0, 0).sub(b));
- return (a ? "-" : "") + b.toString();
- };
- jspb.arith.Int64.fromString = function (a) {
- var b = 0 < a.length && "-" == a[0];
- b && (a = a.substring(1));
- a = jspb.arith.UInt64.fromString(a);
- if (null === a) return null;
- b && (a = new jspb.arith.UInt64(0, 0).sub(a));
- return new jspb.arith.Int64(a.lo, a.hi);
- };
- jspb.BinaryWriter = function () {
- this.blocks_ = [];
- this.totalLength_ = 0;
- this.encoder_ = new jspb.BinaryEncoder();
- this.bookmarks_ = [];
- };
- jspb.BinaryWriter.prototype.appendUint8Array_ = function (a) {
- var b = this.encoder_.end();
- this.blocks_.push(b);
- this.blocks_.push(a);
- this.totalLength_ += b.length + a.length;
- };
- jspb.BinaryWriter.prototype.beginDelimited_ = function (a) {
- this.writeFieldHeader_(a, jspb.BinaryConstants.WireType.DELIMITED);
- a = this.encoder_.end();
- this.blocks_.push(a);
- this.totalLength_ += a.length;
- a.push(this.totalLength_);
- return a;
- };
- jspb.BinaryWriter.prototype.endDelimited_ = function (a) {
- var b = a.pop();
- b = this.totalLength_ + this.encoder_.length() - b;
- for (jspb.asserts.assert(0 <= b); 127 < b;) {
- a.push(b & 127 | 128), b >>>= 7, this.totalLength_++;
- }
- a.push(b);
- this.totalLength_++;
- };
- jspb.BinaryWriter.prototype.writeSerializedMessage = function (a, b, c) {
- this.appendUint8Array_(a.subarray(b, c));
- };
- jspb.BinaryWriter.prototype.maybeWriteSerializedMessage = function (a, b, c) {
- null != a && null != b && null != c && this.writeSerializedMessage(a, b, c);
- };
- jspb.BinaryWriter.prototype.reset = function () {
- this.blocks_ = [];
- this.encoder_.end();
- this.totalLength_ = 0;
- this.bookmarks_ = [];
- };
- jspb.BinaryWriter.prototype.getResultBuffer = function () {
- jspb.asserts.assert(0 == this.bookmarks_.length);
- for (var a = new Uint8Array(this.totalLength_ + this.encoder_.length()), b = this.blocks_, c = b.length, d = 0, e = 0; e < c; e++) {
- var f = b[e];
- a.set(f, d);
- d += f.length;
- }
- b = this.encoder_.end();
- a.set(b, d);
- d += b.length;
- jspb.asserts.assert(d == a.length);
- this.blocks_ = [a];
- return a;
- };
- goog.exportProperty(jspb.BinaryWriter.prototype, "getResultBuffer", jspb.BinaryWriter.prototype.getResultBuffer);
- jspb.BinaryWriter.prototype.getResultBase64String = function (a) {
- return goog.crypt.base64.encodeByteArray(this.getResultBuffer(), a);
- };
- jspb.BinaryWriter.prototype.beginSubMessage = function (a) {
- this.bookmarks_.push(this.beginDelimited_(a));
- };
- jspb.BinaryWriter.prototype.endSubMessage = function () {
- jspb.asserts.assert(0 <= this.bookmarks_.length);
- this.endDelimited_(this.bookmarks_.pop());
- };
- jspb.BinaryWriter.prototype.writeFieldHeader_ = function (a, b) {
- jspb.asserts.assert(1 <= a && a == Math.floor(a));
- this.encoder_.writeUnsignedVarint32(8 * a + b);
- };
- jspb.BinaryWriter.prototype.writeAny = function (a, b, c) {
- var d = jspb.BinaryConstants.FieldType;
- switch (a) {
- case d.DOUBLE:
- this.writeDouble(b, c);
- break;
- case d.FLOAT:
- this.writeFloat(b, c);
- break;
- case d.INT64:
- this.writeInt64(b, c);
- break;
- case d.UINT64:
- this.writeUint64(b, c);
- break;
- case d.INT32:
- this.writeInt32(b, c);
- break;
- case d.FIXED64:
- this.writeFixed64(b, c);
- break;
- case d.FIXED32:
- this.writeFixed32(b, c);
- break;
- case d.BOOL:
- this.writeBool(b, c);
- break;
- case d.STRING:
- this.writeString(b, c);
- break;
- case d.GROUP:
- jspb.asserts.fail("Group field type not supported in writeAny()");
- break;
- case d.MESSAGE:
- jspb.asserts.fail("Message field type not supported in writeAny()");
- break;
- case d.BYTES:
- this.writeBytes(b, c);
- break;
- case d.UINT32:
- this.writeUint32(b, c);
- break;
- case d.ENUM:
- this.writeEnum(b, c);
- break;
- case d.SFIXED32:
- this.writeSfixed32(b, c);
- break;
- case d.SFIXED64:
- this.writeSfixed64(b, c);
- break;
- case d.SINT32:
- this.writeSint32(b, c);
- break;
- case d.SINT64:
- this.writeSint64(b, c);
- break;
- case d.FHASH64:
- this.writeFixedHash64(b, c);
- break;
- case d.VHASH64:
- this.writeVarintHash64(b, c);
- break;
- default:
- jspb.asserts.fail("Invalid field type in writeAny()");
- }
- };
- jspb.BinaryWriter.prototype.writeUnsignedVarint32_ = function (a, b) {
- null != b && (this.writeFieldHeader_(a, jspb.BinaryConstants.WireType.VARINT), this.encoder_.writeUnsignedVarint32(b));
- };
- jspb.BinaryWriter.prototype.writeSignedVarint32_ = function (a, b) {
- null != b && (this.writeFieldHeader_(a, jspb.BinaryConstants.WireType.VARINT), this.encoder_.writeSignedVarint32(b));
- };
- jspb.BinaryWriter.prototype.writeUnsignedVarint64_ = function (a, b) {
- null != b && (this.writeFieldHeader_(a, jspb.BinaryConstants.WireType.VARINT), this.encoder_.writeUnsignedVarint64(b));
- };
- jspb.BinaryWriter.prototype.writeSignedVarint64_ = function (a, b) {
- null != b && (this.writeFieldHeader_(a, jspb.BinaryConstants.WireType.VARINT), this.encoder_.writeSignedVarint64(b));
- };
- jspb.BinaryWriter.prototype.writeZigzagVarint32_ = function (a, b) {
- null != b && (this.writeFieldHeader_(a, jspb.BinaryConstants.WireType.VARINT), this.encoder_.writeZigzagVarint32(b));
- };
- jspb.BinaryWriter.prototype.writeZigzagVarint64_ = function (a, b) {
- null != b && (this.writeFieldHeader_(a, jspb.BinaryConstants.WireType.VARINT), this.encoder_.writeZigzagVarint64(b));
- };
- jspb.BinaryWriter.prototype.writeZigzagVarint64String_ = function (a, b) {
- null != b && (this.writeFieldHeader_(a, jspb.BinaryConstants.WireType.VARINT), this.encoder_.writeZigzagVarint64String(b));
- };
- jspb.BinaryWriter.prototype.writeZigzagVarintHash64_ = function (a, b) {
- null != b && (this.writeFieldHeader_(a, jspb.BinaryConstants.WireType.VARINT), this.encoder_.writeZigzagVarintHash64(b));
- };
- jspb.BinaryWriter.prototype.writeInt32 = function (a, b) {
- null != b && (jspb.asserts.assert(b >= -jspb.BinaryConstants.TWO_TO_31 && b < jspb.BinaryConstants.TWO_TO_31), this.writeSignedVarint32_(a, b));
- };
- goog.exportProperty(jspb.BinaryWriter.prototype, "writeInt32", jspb.BinaryWriter.prototype.writeInt32);
- jspb.BinaryWriter.prototype.writeInt32String = function (a, b) {
- null != b && (b = parseInt(b, 10), jspb.asserts.assert(b >= -jspb.BinaryConstants.TWO_TO_31 && b < jspb.BinaryConstants.TWO_TO_31), this.writeSignedVarint32_(a, b));
- };
- jspb.BinaryWriter.prototype.writeInt64 = function (a, b) {
- null != b && (jspb.asserts.assert(b >= -jspb.BinaryConstants.TWO_TO_63 && b < jspb.BinaryConstants.TWO_TO_63), this.writeSignedVarint64_(a, b));
- };
- goog.exportProperty(jspb.BinaryWriter.prototype, "writeInt64", jspb.BinaryWriter.prototype.writeInt64);
- jspb.BinaryWriter.prototype.writeInt64String = function (a, b) {
- null != b && (b = jspb.arith.Int64.fromString(b), this.writeFieldHeader_(a, jspb.BinaryConstants.WireType.VARINT), this.encoder_.writeSplitVarint64(b.lo, b.hi));
- };
- jspb.BinaryWriter.prototype.writeUint32 = function (a, b) {
- null != b && (jspb.asserts.assert(0 <= b && b < jspb.BinaryConstants.TWO_TO_32), this.writeUnsignedVarint32_(a, b));
- };
- goog.exportProperty(jspb.BinaryWriter.prototype, "writeUint32", jspb.BinaryWriter.prototype.writeUint32);
- jspb.BinaryWriter.prototype.writeUint32String = function (a, b) {
- null != b && (b = parseInt(b, 10), jspb.asserts.assert(0 <= b && b < jspb.BinaryConstants.TWO_TO_32), this.writeUnsignedVarint32_(a, b));
- };
- jspb.BinaryWriter.prototype.writeUint64 = function (a, b) {
- null != b && (jspb.asserts.assert(0 <= b && b < jspb.BinaryConstants.TWO_TO_64), this.writeUnsignedVarint64_(a, b));
- };
- goog.exportProperty(jspb.BinaryWriter.prototype, "writeUint64", jspb.BinaryWriter.prototype.writeUint64);
- jspb.BinaryWriter.prototype.writeUint64String = function (a, b) {
- null != b && (b = jspb.arith.UInt64.fromString(b), this.writeFieldHeader_(a, jspb.BinaryConstants.WireType.VARINT), this.encoder_.writeSplitVarint64(b.lo, b.hi));
- };
- jspb.BinaryWriter.prototype.writeSint32 = function (a, b) {
- null != b && (jspb.asserts.assert(b >= -jspb.BinaryConstants.TWO_TO_31 && b < jspb.BinaryConstants.TWO_TO_31), this.writeZigzagVarint32_(a, b));
- };
- goog.exportProperty(jspb.BinaryWriter.prototype, "writeSint32", jspb.BinaryWriter.prototype.writeSint32);
- jspb.BinaryWriter.prototype.writeSint64 = function (a, b) {
- null != b && (jspb.asserts.assert(b >= -jspb.BinaryConstants.TWO_TO_63 && b < jspb.BinaryConstants.TWO_TO_63), this.writeZigzagVarint64_(a, b));
- };
- goog.exportProperty(jspb.BinaryWriter.prototype, "writeSint64", jspb.BinaryWriter.prototype.writeSint64);
- jspb.BinaryWriter.prototype.writeSintHash64 = function (a, b) {
- null != b && this.writeZigzagVarintHash64_(a, b);
- };
- jspb.BinaryWriter.prototype.writeSint64String = function (a, b) {
- null != b && this.writeZigzagVarint64String_(a, b);
- };
- jspb.BinaryWriter.prototype.writeFixed32 = function (a, b) {
- null != b && (jspb.asserts.assert(0 <= b && b < jspb.BinaryConstants.TWO_TO_32), this.writeFieldHeader_(a, jspb.BinaryConstants.WireType.FIXED32), this.encoder_.writeUint32(b));
- };
- goog.exportProperty(jspb.BinaryWriter.prototype, "writeFixed32", jspb.BinaryWriter.prototype.writeFixed32);
- jspb.BinaryWriter.prototype.writeFixed64 = function (a, b) {
- null != b && (jspb.asserts.assert(0 <= b && b < jspb.BinaryConstants.TWO_TO_64), this.writeFieldHeader_(a, jspb.BinaryConstants.WireType.FIXED64), this.encoder_.writeUint64(b));
- };
- goog.exportProperty(jspb.BinaryWriter.prototype, "writeFixed64", jspb.BinaryWriter.prototype.writeFixed64);
- jspb.BinaryWriter.prototype.writeFixed64String = function (a, b) {
- null != b && (b = jspb.arith.UInt64.fromString(b), this.writeFieldHeader_(a, jspb.BinaryConstants.WireType.FIXED64), this.encoder_.writeSplitFixed64(b.lo, b.hi));
- };
- jspb.BinaryWriter.prototype.writeSfixed32 = function (a, b) {
- null != b && (jspb.asserts.assert(b >= -jspb.BinaryConstants.TWO_TO_31 && b < jspb.BinaryConstants.TWO_TO_31), this.writeFieldHeader_(a, jspb.BinaryConstants.WireType.FIXED32), this.encoder_.writeInt32(b));
- };
- goog.exportProperty(jspb.BinaryWriter.prototype, "writeSfixed32", jspb.BinaryWriter.prototype.writeSfixed32);
- jspb.BinaryWriter.prototype.writeSfixed64 = function (a, b) {
- null != b && (jspb.asserts.assert(b >= -jspb.BinaryConstants.TWO_TO_63 && b < jspb.BinaryConstants.TWO_TO_63), this.writeFieldHeader_(a, jspb.BinaryConstants.WireType.FIXED64), this.encoder_.writeInt64(b));
- };
- goog.exportProperty(jspb.BinaryWriter.prototype, "writeSfixed64", jspb.BinaryWriter.prototype.writeSfixed64);
- jspb.BinaryWriter.prototype.writeSfixed64String = function (a, b) {
- null != b && (b = jspb.arith.Int64.fromString(b), this.writeFieldHeader_(a, jspb.BinaryConstants.WireType.FIXED64), this.encoder_.writeSplitFixed64(b.lo, b.hi));
- };
- jspb.BinaryWriter.prototype.writeFloat = function (a, b) {
- null != b && (this.writeFieldHeader_(a, jspb.BinaryConstants.WireType.FIXED32), this.encoder_.writeFloat(b));
- };
- goog.exportProperty(jspb.BinaryWriter.prototype, "writeFloat", jspb.BinaryWriter.prototype.writeFloat);
- jspb.BinaryWriter.prototype.writeDouble = function (a, b) {
- null != b && (this.writeFieldHeader_(a, jspb.BinaryConstants.WireType.FIXED64), this.encoder_.writeDouble(b));
- };
- goog.exportProperty(jspb.BinaryWriter.prototype, "writeDouble", jspb.BinaryWriter.prototype.writeDouble);
- jspb.BinaryWriter.prototype.writeBool = function (a, b) {
- null != b && (jspb.asserts.assert("boolean" === typeof b || "number" === typeof b), this.writeFieldHeader_(a, jspb.BinaryConstants.WireType.VARINT), this.encoder_.writeBool(b));
- };
- goog.exportProperty(jspb.BinaryWriter.prototype, "writeBool", jspb.BinaryWriter.prototype.writeBool);
- jspb.BinaryWriter.prototype.writeEnum = function (a, b) {
- null != b && (jspb.asserts.assert(b >= -jspb.BinaryConstants.TWO_TO_31 && b < jspb.BinaryConstants.TWO_TO_31), this.writeFieldHeader_(a, jspb.BinaryConstants.WireType.VARINT), this.encoder_.writeSignedVarint32(b));
- };
- goog.exportProperty(jspb.BinaryWriter.prototype, "writeEnum", jspb.BinaryWriter.prototype.writeEnum);
- jspb.BinaryWriter.prototype.writeString = function (a, b) {
- null != b && (a = this.beginDelimited_(a), this.encoder_.writeString(b), this.endDelimited_(a));
- };
- goog.exportProperty(jspb.BinaryWriter.prototype, "writeString", jspb.BinaryWriter.prototype.writeString);
- jspb.BinaryWriter.prototype.writeBytes = function (a, b) {
- null != b && (b = jspb.utils.byteSourceToUint8Array(b), this.writeFieldHeader_(a, jspb.BinaryConstants.WireType.DELIMITED), this.encoder_.writeUnsignedVarint32(b.length), this.appendUint8Array_(b));
- };
- goog.exportProperty(jspb.BinaryWriter.prototype, "writeBytes", jspb.BinaryWriter.prototype.writeBytes);
- jspb.BinaryWriter.prototype.writeMessage = function (a, b, c) {
- null != b && (a = this.beginDelimited_(a), c(b, this), this.endDelimited_(a));
- };
- goog.exportProperty(jspb.BinaryWriter.prototype, "writeMessage", jspb.BinaryWriter.prototype.writeMessage);
- jspb.BinaryWriter.prototype.writeMessageSet = function (a, b, c) {
- null != b && (this.writeFieldHeader_(1, jspb.BinaryConstants.WireType.START_GROUP), this.writeFieldHeader_(2, jspb.BinaryConstants.WireType.VARINT), this.encoder_.writeSignedVarint32(a), a = this.beginDelimited_(3), c(b, this), this.endDelimited_(a), this.writeFieldHeader_(1, jspb.BinaryConstants.WireType.END_GROUP));
- };
- jspb.BinaryWriter.prototype.writeGroup = function (a, b, c) {
- null != b && (this.writeFieldHeader_(a, jspb.BinaryConstants.WireType.START_GROUP), c(b, this), this.writeFieldHeader_(a, jspb.BinaryConstants.WireType.END_GROUP));
- };
- goog.exportProperty(jspb.BinaryWriter.prototype, "writeGroup", jspb.BinaryWriter.prototype.writeGroup);
- jspb.BinaryWriter.prototype.writeFixedHash64 = function (a, b) {
- null != b && (jspb.asserts.assert(8 == b.length), this.writeFieldHeader_(a, jspb.BinaryConstants.WireType.FIXED64), this.encoder_.writeFixedHash64(b));
- };
- jspb.BinaryWriter.prototype.writeVarintHash64 = function (a, b) {
- null != b && (jspb.asserts.assert(8 == b.length), this.writeFieldHeader_(a, jspb.BinaryConstants.WireType.VARINT), this.encoder_.writeVarintHash64(b));
- };
- jspb.BinaryWriter.prototype.writeSplitFixed64 = function (a, b, c) {
- this.writeFieldHeader_(a, jspb.BinaryConstants.WireType.FIXED64);
- this.encoder_.writeSplitFixed64(b, c);
- };
- jspb.BinaryWriter.prototype.writeSplitVarint64 = function (a, b, c) {
- this.writeFieldHeader_(a, jspb.BinaryConstants.WireType.VARINT);
- this.encoder_.writeSplitVarint64(b, c);
- };
- jspb.BinaryWriter.prototype.writeSplitZigzagVarint64 = function (a, b, c) {
- this.writeFieldHeader_(a, jspb.BinaryConstants.WireType.VARINT);
- var d = this.encoder_;
- jspb.utils.toZigzag64(b, c, function (a, b) {
- d.writeSplitVarint64(a >>> 0, b >>> 0);
- });
- };
- jspb.BinaryWriter.prototype.writeRepeatedInt32 = function (a, b) {
- if (null != b) for (var c = 0; c < b.length; c++) {
- this.writeSignedVarint32_(a, b[c]);
- }
- };
- goog.exportProperty(jspb.BinaryWriter.prototype, "writeRepeatedInt32", jspb.BinaryWriter.prototype.writeRepeatedInt32);
- jspb.BinaryWriter.prototype.writeRepeatedInt32String = function (a, b) {
- if (null != b) for (var c = 0; c < b.length; c++) {
- this.writeInt32String(a, b[c]);
- }
- };
- jspb.BinaryWriter.prototype.writeRepeatedInt64 = function (a, b) {
- if (null != b) for (var c = 0; c < b.length; c++) {
- this.writeSignedVarint64_(a, b[c]);
- }
- };
- goog.exportProperty(jspb.BinaryWriter.prototype, "writeRepeatedInt64", jspb.BinaryWriter.prototype.writeRepeatedInt64);
- jspb.BinaryWriter.prototype.writeRepeatedSplitFixed64 = function (a, b, c, d) {
- if (null != b) for (var e = 0; e < b.length; e++) {
- this.writeSplitFixed64(a, c(b[e]), d(b[e]));
- }
- };
- jspb.BinaryWriter.prototype.writeRepeatedSplitVarint64 = function (a, b, c, d) {
- if (null != b) for (var e = 0; e < b.length; e++) {
- this.writeSplitVarint64(a, c(b[e]), d(b[e]));
- }
- };
- jspb.BinaryWriter.prototype.writeRepeatedSplitZigzagVarint64 = function (a, b, c, d) {
- if (null != b) for (var e = 0; e < b.length; e++) {
- this.writeSplitZigzagVarint64(a, c(b[e]), d(b[e]));
- }
- };
- jspb.BinaryWriter.prototype.writeRepeatedInt64String = function (a, b) {
- if (null != b) for (var c = 0; c < b.length; c++) {
- this.writeInt64String(a, b[c]);
- }
- };
- jspb.BinaryWriter.prototype.writeRepeatedUint32 = function (a, b) {
- if (null != b) for (var c = 0; c < b.length; c++) {
- this.writeUnsignedVarint32_(a, b[c]);
- }
- };
- goog.exportProperty(jspb.BinaryWriter.prototype, "writeRepeatedUint32", jspb.BinaryWriter.prototype.writeRepeatedUint32);
- jspb.BinaryWriter.prototype.writeRepeatedUint32String = function (a, b) {
- if (null != b) for (var c = 0; c < b.length; c++) {
- this.writeUint32String(a, b[c]);
- }
- };
- jspb.BinaryWriter.prototype.writeRepeatedUint64 = function (a, b) {
- if (null != b) for (var c = 0; c < b.length; c++) {
- this.writeUnsignedVarint64_(a, b[c]);
- }
- };
- goog.exportProperty(jspb.BinaryWriter.prototype, "writeRepeatedUint64", jspb.BinaryWriter.prototype.writeRepeatedUint64);
- jspb.BinaryWriter.prototype.writeRepeatedUint64String = function (a, b) {
- if (null != b) for (var c = 0; c < b.length; c++) {
- this.writeUint64String(a, b[c]);
- }
- };
- jspb.BinaryWriter.prototype.writeRepeatedSint32 = function (a, b) {
- if (null != b) for (var c = 0; c < b.length; c++) {
- this.writeZigzagVarint32_(a, b[c]);
- }
- };
- goog.exportProperty(jspb.BinaryWriter.prototype, "writeRepeatedSint32", jspb.BinaryWriter.prototype.writeRepeatedSint32);
- jspb.BinaryWriter.prototype.writeRepeatedSint64 = function (a, b) {
- if (null != b) for (var c = 0; c < b.length; c++) {
- this.writeZigzagVarint64_(a, b[c]);
- }
- };
- goog.exportProperty(jspb.BinaryWriter.prototype, "writeRepeatedSint64", jspb.BinaryWriter.prototype.writeRepeatedSint64);
- jspb.BinaryWriter.prototype.writeRepeatedSint64String = function (a, b) {
- if (null != b) for (var c = 0; c < b.length; c++) {
- this.writeZigzagVarint64String_(a, b[c]);
- }
- };
- jspb.BinaryWriter.prototype.writeRepeatedSintHash64 = function (a, b) {
- if (null != b) for (var c = 0; c < b.length; c++) {
- this.writeZigzagVarintHash64_(a, b[c]);
- }
- };
- jspb.BinaryWriter.prototype.writeRepeatedFixed32 = function (a, b) {
- if (null != b) for (var c = 0; c < b.length; c++) {
- this.writeFixed32(a, b[c]);
- }
- };
- goog.exportProperty(jspb.BinaryWriter.prototype, "writeRepeatedFixed32", jspb.BinaryWriter.prototype.writeRepeatedFixed32);
- jspb.BinaryWriter.prototype.writeRepeatedFixed64 = function (a, b) {
- if (null != b) for (var c = 0; c < b.length; c++) {
- this.writeFixed64(a, b[c]);
- }
- };
- goog.exportProperty(jspb.BinaryWriter.prototype, "writeRepeatedFixed64", jspb.BinaryWriter.prototype.writeRepeatedFixed64);
- jspb.BinaryWriter.prototype.writeRepeatedFixed64String = function (a, b) {
- if (null != b) for (var c = 0; c < b.length; c++) {
- this.writeFixed64String(a, b[c]);
- }
- };
- goog.exportProperty(jspb.BinaryWriter.prototype, "writeRepeatedFixed64String", jspb.BinaryWriter.prototype.writeRepeatedFixed64String);
- jspb.BinaryWriter.prototype.writeRepeatedSfixed32 = function (a, b) {
- if (null != b) for (var c = 0; c < b.length; c++) {
- this.writeSfixed32(a, b[c]);
- }
- };
- goog.exportProperty(jspb.BinaryWriter.prototype, "writeRepeatedSfixed32", jspb.BinaryWriter.prototype.writeRepeatedSfixed32);
- jspb.BinaryWriter.prototype.writeRepeatedSfixed64 = function (a, b) {
- if (null != b) for (var c = 0; c < b.length; c++) {
- this.writeSfixed64(a, b[c]);
- }
- };
- goog.exportProperty(jspb.BinaryWriter.prototype, "writeRepeatedSfixed64", jspb.BinaryWriter.prototype.writeRepeatedSfixed64);
- jspb.BinaryWriter.prototype.writeRepeatedSfixed64String = function (a, b) {
- if (null != b) for (var c = 0; c < b.length; c++) {
- this.writeSfixed64String(a, b[c]);
- }
- };
- jspb.BinaryWriter.prototype.writeRepeatedFloat = function (a, b) {
- if (null != b) for (var c = 0; c < b.length; c++) {
- this.writeFloat(a, b[c]);
- }
- };
- goog.exportProperty(jspb.BinaryWriter.prototype, "writeRepeatedFloat", jspb.BinaryWriter.prototype.writeRepeatedFloat);
- jspb.BinaryWriter.prototype.writeRepeatedDouble = function (a, b) {
- if (null != b) for (var c = 0; c < b.length; c++) {
- this.writeDouble(a, b[c]);
- }
- };
- goog.exportProperty(jspb.BinaryWriter.prototype, "writeRepeatedDouble", jspb.BinaryWriter.prototype.writeRepeatedDouble);
- jspb.BinaryWriter.prototype.writeRepeatedBool = function (a, b) {
- if (null != b) for (var c = 0; c < b.length; c++) {
- this.writeBool(a, b[c]);
- }
- };
- goog.exportProperty(jspb.BinaryWriter.prototype, "writeRepeatedBool", jspb.BinaryWriter.prototype.writeRepeatedBool);
- jspb.BinaryWriter.prototype.writeRepeatedEnum = function (a, b) {
- if (null != b) for (var c = 0; c < b.length; c++) {
- this.writeEnum(a, b[c]);
- }
- };
- goog.exportProperty(jspb.BinaryWriter.prototype, "writeRepeatedEnum", jspb.BinaryWriter.prototype.writeRepeatedEnum);
- jspb.BinaryWriter.prototype.writeRepeatedString = function (a, b) {
- if (null != b) for (var c = 0; c < b.length; c++) {
- this.writeString(a, b[c]);
- }
- };
- goog.exportProperty(jspb.BinaryWriter.prototype, "writeRepeatedString", jspb.BinaryWriter.prototype.writeRepeatedString);
- jspb.BinaryWriter.prototype.writeRepeatedBytes = function (a, b) {
- if (null != b) for (var c = 0; c < b.length; c++) {
- this.writeBytes(a, b[c]);
- }
- };
- goog.exportProperty(jspb.BinaryWriter.prototype, "writeRepeatedBytes", jspb.BinaryWriter.prototype.writeRepeatedBytes);
- jspb.BinaryWriter.prototype.writeRepeatedMessage = function (a, b, c) {
- if (null != b) for (var d = 0; d < b.length; d++) {
- var e = this.beginDelimited_(a);
- c(b[d], this);
- this.endDelimited_(e);
- }
- };
- goog.exportProperty(jspb.BinaryWriter.prototype, "writeRepeatedMessage", jspb.BinaryWriter.prototype.writeRepeatedMessage);
- jspb.BinaryWriter.prototype.writeRepeatedGroup = function (a, b, c) {
- if (null != b) for (var d = 0; d < b.length; d++) {
- this.writeFieldHeader_(a, jspb.BinaryConstants.WireType.START_GROUP), c(b[d], this), this.writeFieldHeader_(a, jspb.BinaryConstants.WireType.END_GROUP);
- }
- };
- goog.exportProperty(jspb.BinaryWriter.prototype, "writeRepeatedGroup", jspb.BinaryWriter.prototype.writeRepeatedGroup);
- jspb.BinaryWriter.prototype.writeRepeatedFixedHash64 = function (a, b) {
- if (null != b) for (var c = 0; c < b.length; c++) {
- this.writeFixedHash64(a, b[c]);
- }
- };
- jspb.BinaryWriter.prototype.writeRepeatedVarintHash64 = function (a, b) {
- if (null != b) for (var c = 0; c < b.length; c++) {
- this.writeVarintHash64(a, b[c]);
- }
- };
- jspb.BinaryWriter.prototype.writePackedInt32 = function (a, b) {
- if (null != b && b.length) {
- a = this.beginDelimited_(a);
- for (var c = 0; c < b.length; c++) {
- this.encoder_.writeSignedVarint32(b[c]);
- }
- this.endDelimited_(a);
- }
- };
- goog.exportProperty(jspb.BinaryWriter.prototype, "writePackedInt32", jspb.BinaryWriter.prototype.writePackedInt32);
- jspb.BinaryWriter.prototype.writePackedInt32String = function (a, b) {
- if (null != b && b.length) {
- a = this.beginDelimited_(a);
- for (var c = 0; c < b.length; c++) {
- this.encoder_.writeSignedVarint32(parseInt(b[c], 10));
- }
- this.endDelimited_(a);
- }
- };
- jspb.BinaryWriter.prototype.writePackedInt64 = function (a, b) {
- if (null != b && b.length) {
- a = this.beginDelimited_(a);
- for (var c = 0; c < b.length; c++) {
- this.encoder_.writeSignedVarint64(b[c]);
- }
- this.endDelimited_(a);
- }
- };
- goog.exportProperty(jspb.BinaryWriter.prototype, "writePackedInt64", jspb.BinaryWriter.prototype.writePackedInt64);
- jspb.BinaryWriter.prototype.writePackedSplitFixed64 = function (a, b, c, d) {
- if (null != b) {
- a = this.beginDelimited_(a);
- for (var e = 0; e < b.length; e++) {
- this.encoder_.writeSplitFixed64(c(b[e]), d(b[e]));
- }
- this.endDelimited_(a);
- }
- };
- jspb.BinaryWriter.prototype.writePackedSplitVarint64 = function (a, b, c, d) {
- if (null != b) {
- a = this.beginDelimited_(a);
- for (var e = 0; e < b.length; e++) {
- this.encoder_.writeSplitVarint64(c(b[e]), d(b[e]));
- }
- this.endDelimited_(a);
- }
- };
- jspb.BinaryWriter.prototype.writePackedSplitZigzagVarint64 = function (a, b, c, d) {
- if (null != b) {
- a = this.beginDelimited_(a);
- for (var e = this.encoder_, f = 0; f < b.length; f++) {
- jspb.utils.toZigzag64(c(b[f]), d(b[f]), function (a, b) {
- e.writeSplitVarint64(a >>> 0, b >>> 0);
- });
- }
- this.endDelimited_(a);
- }
- };
- jspb.BinaryWriter.prototype.writePackedInt64String = function (a, b) {
- if (null != b && b.length) {
- a = this.beginDelimited_(a);
- for (var c = 0; c < b.length; c++) {
- var d = jspb.arith.Int64.fromString(b[c]);
- this.encoder_.writeSplitVarint64(d.lo, d.hi);
- }
- this.endDelimited_(a);
- }
- };
- jspb.BinaryWriter.prototype.writePackedUint32 = function (a, b) {
- if (null != b && b.length) {
- a = this.beginDelimited_(a);
- for (var c = 0; c < b.length; c++) {
- this.encoder_.writeUnsignedVarint32(b[c]);
- }
- this.endDelimited_(a);
- }
- };
- goog.exportProperty(jspb.BinaryWriter.prototype, "writePackedUint32", jspb.BinaryWriter.prototype.writePackedUint32);
- jspb.BinaryWriter.prototype.writePackedUint32String = function (a, b) {
- if (null != b && b.length) {
- a = this.beginDelimited_(a);
- for (var c = 0; c < b.length; c++) {
- this.encoder_.writeUnsignedVarint32(parseInt(b[c], 10));
- }
- this.endDelimited_(a);
- }
- };
- jspb.BinaryWriter.prototype.writePackedUint64 = function (a, b) {
- if (null != b && b.length) {
- a = this.beginDelimited_(a);
- for (var c = 0; c < b.length; c++) {
- this.encoder_.writeUnsignedVarint64(b[c]);
- }
- this.endDelimited_(a);
- }
- };
- goog.exportProperty(jspb.BinaryWriter.prototype, "writePackedUint64", jspb.BinaryWriter.prototype.writePackedUint64);
- jspb.BinaryWriter.prototype.writePackedUint64String = function (a, b) {
- if (null != b && b.length) {
- a = this.beginDelimited_(a);
- for (var c = 0; c < b.length; c++) {
- var d = jspb.arith.UInt64.fromString(b[c]);
- this.encoder_.writeSplitVarint64(d.lo, d.hi);
- }
- this.endDelimited_(a);
- }
- };
- jspb.BinaryWriter.prototype.writePackedSint32 = function (a, b) {
- if (null != b && b.length) {
- a = this.beginDelimited_(a);
- for (var c = 0; c < b.length; c++) {
- this.encoder_.writeZigzagVarint32(b[c]);
- }
- this.endDelimited_(a);
- }
- };
- goog.exportProperty(jspb.BinaryWriter.prototype, "writePackedSint32", jspb.BinaryWriter.prototype.writePackedSint32);
- jspb.BinaryWriter.prototype.writePackedSint64 = function (a, b) {
- if (null != b && b.length) {
- a = this.beginDelimited_(a);
- for (var c = 0; c < b.length; c++) {
- this.encoder_.writeZigzagVarint64(b[c]);
- }
- this.endDelimited_(a);
- }
- };
- goog.exportProperty(jspb.BinaryWriter.prototype, "writePackedSint64", jspb.BinaryWriter.prototype.writePackedSint64);
- jspb.BinaryWriter.prototype.writePackedSint64String = function (a, b) {
- if (null != b && b.length) {
- a = this.beginDelimited_(a);
- for (var c = 0; c < b.length; c++) {
- this.encoder_.writeZigzagVarintHash64(jspb.utils.decimalStringToHash64(b[c]));
- }
- this.endDelimited_(a);
- }
- };
- jspb.BinaryWriter.prototype.writePackedSintHash64 = function (a, b) {
- if (null != b && b.length) {
- a = this.beginDelimited_(a);
- for (var c = 0; c < b.length; c++) {
- this.encoder_.writeZigzagVarintHash64(b[c]);
- }
- this.endDelimited_(a);
- }
- };
- jspb.BinaryWriter.prototype.writePackedFixed32 = function (a, b) {
- if (null != b && b.length) for (this.writeFieldHeader_(a, jspb.BinaryConstants.WireType.DELIMITED), this.encoder_.writeUnsignedVarint32(4 * b.length), a = 0; a < b.length; a++) {
- this.encoder_.writeUint32(b[a]);
- }
- };
- goog.exportProperty(jspb.BinaryWriter.prototype, "writePackedFixed32", jspb.BinaryWriter.prototype.writePackedFixed32);
- jspb.BinaryWriter.prototype.writePackedFixed64 = function (a, b) {
- if (null != b && b.length) for (this.writeFieldHeader_(a, jspb.BinaryConstants.WireType.DELIMITED), this.encoder_.writeUnsignedVarint32(8 * b.length), a = 0; a < b.length; a++) {
- this.encoder_.writeUint64(b[a]);
- }
- };
- goog.exportProperty(jspb.BinaryWriter.prototype, "writePackedFixed64", jspb.BinaryWriter.prototype.writePackedFixed64);
- jspb.BinaryWriter.prototype.writePackedFixed64String = function (a, b) {
- if (null != b && b.length) for (this.writeFieldHeader_(a, jspb.BinaryConstants.WireType.DELIMITED), this.encoder_.writeUnsignedVarint32(8 * b.length), a = 0; a < b.length; a++) {
- var c = jspb.arith.UInt64.fromString(b[a]);
- this.encoder_.writeSplitFixed64(c.lo, c.hi);
- }
- };
- jspb.BinaryWriter.prototype.writePackedSfixed32 = function (a, b) {
- if (null != b && b.length) for (this.writeFieldHeader_(a, jspb.BinaryConstants.WireType.DELIMITED), this.encoder_.writeUnsignedVarint32(4 * b.length), a = 0; a < b.length; a++) {
- this.encoder_.writeInt32(b[a]);
- }
- };
- goog.exportProperty(jspb.BinaryWriter.prototype, "writePackedSfixed32", jspb.BinaryWriter.prototype.writePackedSfixed32);
- jspb.BinaryWriter.prototype.writePackedSfixed64 = function (a, b) {
- if (null != b && b.length) for (this.writeFieldHeader_(a, jspb.BinaryConstants.WireType.DELIMITED), this.encoder_.writeUnsignedVarint32(8 * b.length), a = 0; a < b.length; a++) {
- this.encoder_.writeInt64(b[a]);
- }
- };
- goog.exportProperty(jspb.BinaryWriter.prototype, "writePackedSfixed64", jspb.BinaryWriter.prototype.writePackedSfixed64);
- jspb.BinaryWriter.prototype.writePackedSfixed64String = function (a, b) {
- if (null != b && b.length) for (this.writeFieldHeader_(a, jspb.BinaryConstants.WireType.DELIMITED), this.encoder_.writeUnsignedVarint32(8 * b.length), a = 0; a < b.length; a++) {
- this.encoder_.writeInt64String(b[a]);
- }
- };
- jspb.BinaryWriter.prototype.writePackedFloat = function (a, b) {
- if (null != b && b.length) for (this.writeFieldHeader_(a, jspb.BinaryConstants.WireType.DELIMITED), this.encoder_.writeUnsignedVarint32(4 * b.length), a = 0; a < b.length; a++) {
- this.encoder_.writeFloat(b[a]);
- }
- };
- goog.exportProperty(jspb.BinaryWriter.prototype, "writePackedFloat", jspb.BinaryWriter.prototype.writePackedFloat);
- jspb.BinaryWriter.prototype.writePackedDouble = function (a, b) {
- if (null != b && b.length) for (this.writeFieldHeader_(a, jspb.BinaryConstants.WireType.DELIMITED), this.encoder_.writeUnsignedVarint32(8 * b.length), a = 0; a < b.length; a++) {
- this.encoder_.writeDouble(b[a]);
- }
- };
- goog.exportProperty(jspb.BinaryWriter.prototype, "writePackedDouble", jspb.BinaryWriter.prototype.writePackedDouble);
- jspb.BinaryWriter.prototype.writePackedBool = function (a, b) {
- if (null != b && b.length) for (this.writeFieldHeader_(a, jspb.BinaryConstants.WireType.DELIMITED), this.encoder_.writeUnsignedVarint32(b.length), a = 0; a < b.length; a++) {
- this.encoder_.writeBool(b[a]);
- }
- };
- goog.exportProperty(jspb.BinaryWriter.prototype, "writePackedBool", jspb.BinaryWriter.prototype.writePackedBool);
- jspb.BinaryWriter.prototype.writePackedEnum = function (a, b) {
- if (null != b && b.length) {
- a = this.beginDelimited_(a);
- for (var c = 0; c < b.length; c++) {
- this.encoder_.writeEnum(b[c]);
- }
- this.endDelimited_(a);
- }
- };
- goog.exportProperty(jspb.BinaryWriter.prototype, "writePackedEnum", jspb.BinaryWriter.prototype.writePackedEnum);
- jspb.BinaryWriter.prototype.writePackedFixedHash64 = function (a, b) {
- if (null != b && b.length) for (this.writeFieldHeader_(a, jspb.BinaryConstants.WireType.DELIMITED), this.encoder_.writeUnsignedVarint32(8 * b.length), a = 0; a < b.length; a++) {
- this.encoder_.writeFixedHash64(b[a]);
- }
- };
- jspb.BinaryWriter.prototype.writePackedVarintHash64 = function (a, b) {
- if (null != b && b.length) {
- a = this.beginDelimited_(a);
- for (var c = 0; c < b.length; c++) {
- this.encoder_.writeVarintHash64(b[c]);
- }
- this.endDelimited_(a);
- }
- };
- jspb.Map = function (a, b) {
- this.arr_ = a;
- this.valueCtor_ = b;
- this.map_ = {};
- this.arrClean = !0;
- 0 < this.arr_.length && this.loadFromArray_();
- };
- goog.exportSymbol("jspb.Map", jspb.Map);
- jspb.Map.prototype.loadFromArray_ = function () {
- for (var a = 0; a < this.arr_.length; a++) {
- var b = this.arr_[a],
- c = b[0];
- this.map_[c.toString()] = new jspb.Map.Entry_(c, b[1]);
- }
- this.arrClean = !0;
- };
- jspb.Map.prototype.toArray = function () {
- if (this.arrClean) {
- if (this.valueCtor_) {
- var a = this.map_,
- b;
- for (b in a) {
- if (Object.prototype.hasOwnProperty.call(a, b)) {
- var c = a[b].valueWrapper;
- c && c.toArray();
- }
- }
- }
- } else {
- this.arr_.length = 0;
- a = this.stringKeys_();
- a.sort();
- for (b = 0; b < a.length; b++) {
- var d = this.map_[a[b]];
- (c = d.valueWrapper) && c.toArray();
- this.arr_.push([d.key, d.value]);
- }
- this.arrClean = !0;
- }
- return this.arr_;
- };
- goog.exportProperty(jspb.Map.prototype, "toArray", jspb.Map.prototype.toArray);
- jspb.Map.prototype.toObject = function (a, b) {
- for (var c = this.toArray(), d = [], e = 0; e < c.length; e++) {
- var f = this.map_[c[e][0].toString()];
- this.wrapEntry_(f);
- var g = f.valueWrapper;
- g ? (jspb.asserts.assert(b), d.push([f.key, b(a, g)])) : d.push([f.key, f.value]);
- }
- return d;
- };
- goog.exportProperty(jspb.Map.prototype, "toObject", jspb.Map.prototype.toObject);
- jspb.Map.fromObject = function (a, b, c) {
- b = new jspb.Map([], b);
- for (var d = 0; d < a.length; d++) {
- var e = a[d][0],
- f = c(a[d][1]);
- b.set(e, f);
- }
- return b;
- };
- goog.exportProperty(jspb.Map, "fromObject", jspb.Map.fromObject);
- jspb.Map.ArrayIteratorIterable_ = function (a) {
- this.idx_ = 0;
- this.arr_ = a;
- };
- jspb.Map.ArrayIteratorIterable_.prototype.next = function () {
- return this.idx_ < this.arr_.length ? {
- done: !1,
- value: this.arr_[this.idx_++]
- } : {
- done: !0,
- value: void 0
- };
- };
- "undefined" != typeof Symbol && (jspb.Map.ArrayIteratorIterable_.prototype[Symbol.iterator] = function () {
- return this;
- });
- jspb.Map.prototype.getLength = function () {
- return this.stringKeys_().length;
- };
- goog.exportProperty(jspb.Map.prototype, "getLength", jspb.Map.prototype.getLength);
- jspb.Map.prototype.clear = function () {
- this.map_ = {};
- this.arrClean = !1;
- };
- goog.exportProperty(jspb.Map.prototype, "clear", jspb.Map.prototype.clear);
- jspb.Map.prototype.del = function (a) {
- a = a.toString();
- var b = this.map_.hasOwnProperty(a);
- delete this.map_[a];
- this.arrClean = !1;
- return b;
- };
- goog.exportProperty(jspb.Map.prototype, "del", jspb.Map.prototype.del);
- jspb.Map.prototype.getEntryList = function () {
- var a = [],
- b = this.stringKeys_();
- b.sort();
- for (var c = 0; c < b.length; c++) {
- var d = this.map_[b[c]];
- a.push([d.key, d.value]);
- }
- return a;
- };
- goog.exportProperty(jspb.Map.prototype, "getEntryList", jspb.Map.prototype.getEntryList);
- jspb.Map.prototype.entries = function () {
- var a = [],
- b = this.stringKeys_();
- b.sort();
- for (var c = 0; c < b.length; c++) {
- var d = this.map_[b[c]];
- a.push([d.key, this.wrapEntry_(d)]);
- }
- return new jspb.Map.ArrayIteratorIterable_(a);
- };
- goog.exportProperty(jspb.Map.prototype, "entries", jspb.Map.prototype.entries);
- jspb.Map.prototype.keys = function () {
- var a = [],
- b = this.stringKeys_();
- b.sort();
- for (var c = 0; c < b.length; c++) {
- a.push(this.map_[b[c]].key);
- }
- return new jspb.Map.ArrayIteratorIterable_(a);
- };
- goog.exportProperty(jspb.Map.prototype, "keys", jspb.Map.prototype.keys);
- jspb.Map.prototype.values = function () {
- var a = [],
- b = this.stringKeys_();
- b.sort();
- for (var c = 0; c < b.length; c++) {
- a.push(this.wrapEntry_(this.map_[b[c]]));
- }
- return new jspb.Map.ArrayIteratorIterable_(a);
- };
- goog.exportProperty(jspb.Map.prototype, "values", jspb.Map.prototype.values);
- jspb.Map.prototype.forEach = function (a, b) {
- var c = this.stringKeys_();
- c.sort();
- for (var d = 0; d < c.length; d++) {
- var e = this.map_[c[d]];
- a.call(b, this.wrapEntry_(e), e.key, this);
- }
- };
- goog.exportProperty(jspb.Map.prototype, "forEach", jspb.Map.prototype.forEach);
- jspb.Map.prototype.set = function (a, b) {
- var c = new jspb.Map.Entry_(a);
- this.valueCtor_ ? (c.valueWrapper = b, c.value = b.toArray()) : c.value = b;
- this.map_[a.toString()] = c;
- this.arrClean = !1;
- return this;
- };
- goog.exportProperty(jspb.Map.prototype, "set", jspb.Map.prototype.set);
- jspb.Map.prototype.wrapEntry_ = function (a) {
- return this.valueCtor_ ? (a.valueWrapper || (a.valueWrapper = new this.valueCtor_(a.value)), a.valueWrapper) : a.value;
- };
- jspb.Map.prototype.get = function (a) {
- if (a = this.map_[a.toString()]) return this.wrapEntry_(a);
- };
- goog.exportProperty(jspb.Map.prototype, "get", jspb.Map.prototype.get);
- jspb.Map.prototype.has = function (a) {
- return a.toString() in this.map_;
- };
- goog.exportProperty(jspb.Map.prototype, "has", jspb.Map.prototype.has);
- jspb.Map.prototype.serializeBinary = function (a, b, c, d, e) {
- var f = this.stringKeys_();
- f.sort();
- for (var g = 0; g < f.length; g++) {
- var h = this.map_[f[g]];
- b.beginSubMessage(a);
- c.call(b, 1, h.key);
- this.valueCtor_ ? d.call(b, 2, this.wrapEntry_(h), e) : d.call(b, 2, h.value);
- b.endSubMessage();
- }
- };
- goog.exportProperty(jspb.Map.prototype, "serializeBinary", jspb.Map.prototype.serializeBinary);
- jspb.Map.deserializeBinary = function (a, b, c, d, e, f, g) {
- for (; b.nextField() && !b.isEndGroup();) {
- var h = b.getFieldNumber();
- 1 == h ? f = c.call(b) : 2 == h && (a.valueCtor_ ? (jspb.asserts.assert(e), g || (g = new a.valueCtor_()), d.call(b, g, e)) : g = d.call(b));
- }
- jspb.asserts.assert(void 0 != f);
- jspb.asserts.assert(void 0 != g);
- a.set(f, g);
- };
- goog.exportProperty(jspb.Map, "deserializeBinary", jspb.Map.deserializeBinary);
- jspb.Map.prototype.stringKeys_ = function () {
- var a = this.map_,
- b = [],
- c;
- for (c in a) {
- Object.prototype.hasOwnProperty.call(a, c) && b.push(c);
- }
- return b;
- };
- jspb.Map.Entry_ = function (a, b) {
- this.key = a;
- this.value = b;
- this.valueWrapper = void 0;
- };
- jspb.ExtensionFieldInfo = function (a, b, c, d, e) {
- this.fieldIndex = a;
- this.fieldName = b;
- this.ctor = c;
- this.toObjectFn = d;
- this.isRepeated = e;
- };
- goog.exportSymbol("jspb.ExtensionFieldInfo", jspb.ExtensionFieldInfo);
- jspb.ExtensionFieldBinaryInfo = function (a, b, c, d, e, f) {
- this.fieldInfo = a;
- this.binaryReaderFn = b;
- this.binaryWriterFn = c;
- this.binaryMessageSerializeFn = d;
- this.binaryMessageDeserializeFn = e;
- this.isPacked = f;
- };
- goog.exportSymbol("jspb.ExtensionFieldBinaryInfo", jspb.ExtensionFieldBinaryInfo);
- jspb.ExtensionFieldInfo.prototype.isMessageType = function () {
- return !!this.ctor;
- };
- goog.exportProperty(jspb.ExtensionFieldInfo.prototype, "isMessageType", jspb.ExtensionFieldInfo.prototype.isMessageType);
- jspb.Message = function () {};
- goog.exportSymbol("jspb.Message", jspb.Message);
- jspb.Message.GENERATE_TO_OBJECT = !0;
- goog.exportProperty(jspb.Message, "GENERATE_TO_OBJECT", jspb.Message.GENERATE_TO_OBJECT);
- jspb.Message.GENERATE_FROM_OBJECT = !goog.DISALLOW_TEST_ONLY_CODE;
- goog.exportProperty(jspb.Message, "GENERATE_FROM_OBJECT", jspb.Message.GENERATE_FROM_OBJECT);
- jspb.Message.GENERATE_TO_STRING = !0;
- jspb.Message.ASSUME_LOCAL_ARRAYS = !1;
- jspb.Message.SERIALIZE_EMPTY_TRAILING_FIELDS = !0;
- jspb.Message.SUPPORTS_UINT8ARRAY_ = "function" == typeof Uint8Array;
- jspb.Message.prototype.getJsPbMessageId = function () {
- return this.messageId_;
- };
- goog.exportProperty(jspb.Message.prototype, "getJsPbMessageId", jspb.Message.prototype.getJsPbMessageId);
- jspb.Message.getIndex_ = function (a, b) {
- return b + a.arrayIndexOffset_;
- };
- jspb.Message.hiddenES6Property_ = function () {};
- jspb.Message.getFieldNumber_ = function (a, b) {
- return b - a.arrayIndexOffset_;
- };
- jspb.Message.initialize = function (a, b, c, d, e, f) {
- a.wrappers_ = null;
- b || (b = c ? [c] : []);
- a.messageId_ = c ? String(c) : void 0;
- a.arrayIndexOffset_ = 0 === c ? -1 : 0;
- a.array = b;
- jspb.Message.initPivotAndExtensionObject_(a, d);
- a.convertedPrimitiveFields_ = {};
- jspb.Message.SERIALIZE_EMPTY_TRAILING_FIELDS || (a.repeatedFields = e);
- if (e) for (b = 0; b < e.length; b++) {
- c = e[b], c < a.pivot_ ? (c = jspb.Message.getIndex_(a, c), a.array[c] = a.array[c] || jspb.Message.EMPTY_LIST_SENTINEL_) : (jspb.Message.maybeInitEmptyExtensionObject_(a), a.extensionObject_[c] = a.extensionObject_[c] || jspb.Message.EMPTY_LIST_SENTINEL_);
- }
- if (f && f.length) for (b = 0; b < f.length; b++) {
- jspb.Message.computeOneofCase(a, f[b]);
- }
- };
- goog.exportProperty(jspb.Message, "initialize", jspb.Message.initialize);
- jspb.Message.EMPTY_LIST_SENTINEL_ = goog.DEBUG && Object.freeze ? Object.freeze([]) : [];
- jspb.Message.isArray_ = function (a) {
- return jspb.Message.ASSUME_LOCAL_ARRAYS ? a instanceof Array : Array.isArray(a);
- };
- jspb.Message.isExtensionObject_ = function (a) {
- return null !== a && "object" == _typeof(a) && !jspb.Message.isArray_(a) && !(jspb.Message.SUPPORTS_UINT8ARRAY_ && a instanceof Uint8Array);
- };
- jspb.Message.initPivotAndExtensionObject_ = function (a, b) {
- var c = a.array.length,
- d = -1;
- if (c && (d = c - 1, c = a.array[d], jspb.Message.isExtensionObject_(c))) {
- a.pivot_ = jspb.Message.getFieldNumber_(a, d);
- a.extensionObject_ = c;
- return;
- }
- -1 < b ? (a.pivot_ = Math.max(b, jspb.Message.getFieldNumber_(a, d + 1)), a.extensionObject_ = null) : a.pivot_ = Number.MAX_VALUE;
- };
- jspb.Message.maybeInitEmptyExtensionObject_ = function (a) {
- var b = jspb.Message.getIndex_(a, a.pivot_);
- a.array[b] || (a.extensionObject_ = a.array[b] = {});
- };
- jspb.Message.toObjectList = function (a, b, c) {
- for (var d = [], e = 0; e < a.length; e++) {
- d[e] = b.call(a[e], c, a[e]);
- }
- return d;
- };
- goog.exportProperty(jspb.Message, "toObjectList", jspb.Message.toObjectList);
- jspb.Message.toObjectExtension = function (a, b, c, d, e) {
- for (var f in c) {
- var g = c[f],
- h = d.call(a, g);
- if (null != h) {
- for (var k in g.fieldName) {
- if (g.fieldName.hasOwnProperty(k)) break;
- }
- b[k] = g.toObjectFn ? g.isRepeated ? jspb.Message.toObjectList(h, g.toObjectFn, e) : g.toObjectFn(e, h) : h;
- }
- }
- };
- goog.exportProperty(jspb.Message, "toObjectExtension", jspb.Message.toObjectExtension);
- jspb.Message.serializeBinaryExtensions = function (a, b, c, d) {
- for (var e in c) {
- var f = c[e],
- g = f.fieldInfo;
- if (!f.binaryWriterFn) throw Error("Message extension present that was generated without binary serialization support");
- var h = d.call(a, g);
- if (null != h) if (g.isMessageType()) {
- if (f.binaryMessageSerializeFn) f.binaryWriterFn.call(b, g.fieldIndex, h, f.binaryMessageSerializeFn);else throw Error("Message extension present holding submessage without binary support enabled, and message is being serialized to binary format");
- } else f.binaryWriterFn.call(b, g.fieldIndex, h);
- }
- };
- goog.exportProperty(jspb.Message, "serializeBinaryExtensions", jspb.Message.serializeBinaryExtensions);
- jspb.Message.readBinaryExtension = function (a, b, c, d, e) {
- var f = c[b.getFieldNumber()];
- if (f) {
- c = f.fieldInfo;
- if (!f.binaryReaderFn) throw Error("Deserializing extension whose generated code does not support binary format");
- if (c.isMessageType()) {
- var g = new c.ctor();
- f.binaryReaderFn.call(b, g, f.binaryMessageDeserializeFn);
- } else g = f.binaryReaderFn.call(b);
- c.isRepeated && !f.isPacked ? (b = d.call(a, c)) ? b.push(g) : e.call(a, c, [g]) : e.call(a, c, g);
- } else b.skipField();
- };
- goog.exportProperty(jspb.Message, "readBinaryExtension", jspb.Message.readBinaryExtension);
- jspb.Message.getField = function (a, b) {
- if (b < a.pivot_) {
- b = jspb.Message.getIndex_(a, b);
- var c = a.array[b];
- return c === jspb.Message.EMPTY_LIST_SENTINEL_ ? a.array[b] = [] : c;
- }
- if (a.extensionObject_) return c = a.extensionObject_[b], c === jspb.Message.EMPTY_LIST_SENTINEL_ ? a.extensionObject_[b] = [] : c;
- };
- goog.exportProperty(jspb.Message, "getField", jspb.Message.getField);
- jspb.Message.getRepeatedField = function (a, b) {
- return jspb.Message.getField(a, b);
- };
- goog.exportProperty(jspb.Message, "getRepeatedField", jspb.Message.getRepeatedField);
- jspb.Message.getOptionalFloatingPointField = function (a, b) {
- a = jspb.Message.getField(a, b);
- return null == a ? a : +a;
- };
- goog.exportProperty(jspb.Message, "getOptionalFloatingPointField", jspb.Message.getOptionalFloatingPointField);
- jspb.Message.getBooleanField = function (a, b) {
- a = jspb.Message.getField(a, b);
- return null == a ? a : !!a;
- };
- goog.exportProperty(jspb.Message, "getBooleanField", jspb.Message.getBooleanField);
- jspb.Message.getRepeatedFloatingPointField = function (a, b) {
- var c = jspb.Message.getRepeatedField(a, b);
- a.convertedPrimitiveFields_ || (a.convertedPrimitiveFields_ = {});
- if (!a.convertedPrimitiveFields_[b]) {
- for (var d = 0; d < c.length; d++) {
- c[d] = +c[d];
- }
- a.convertedPrimitiveFields_[b] = !0;
- }
- return c;
- };
- goog.exportProperty(jspb.Message, "getRepeatedFloatingPointField", jspb.Message.getRepeatedFloatingPointField);
- jspb.Message.getRepeatedBooleanField = function (a, b) {
- var c = jspb.Message.getRepeatedField(a, b);
- a.convertedPrimitiveFields_ || (a.convertedPrimitiveFields_ = {});
- if (!a.convertedPrimitiveFields_[b]) {
- for (var d = 0; d < c.length; d++) {
- c[d] = !!c[d];
- }
- a.convertedPrimitiveFields_[b] = !0;
- }
- return c;
- };
- goog.exportProperty(jspb.Message, "getRepeatedBooleanField", jspb.Message.getRepeatedBooleanField);
- jspb.Message.bytesAsB64 = function (a) {
- if (null == a || "string" === typeof a) return a;
- if (jspb.Message.SUPPORTS_UINT8ARRAY_ && a instanceof Uint8Array) return goog.crypt.base64.encodeByteArray(a);
- jspb.asserts.fail("Cannot coerce to b64 string: " + goog.typeOf(a));
- return null;
- };
- goog.exportProperty(jspb.Message, "bytesAsB64", jspb.Message.bytesAsB64);
- jspb.Message.bytesAsU8 = function (a) {
- if (null == a || a instanceof Uint8Array) return a;
- if ("string" === typeof a) return goog.crypt.base64.decodeStringToUint8Array(a);
- jspb.asserts.fail("Cannot coerce to Uint8Array: " + goog.typeOf(a));
- return null;
- };
- goog.exportProperty(jspb.Message, "bytesAsU8", jspb.Message.bytesAsU8);
- jspb.Message.bytesListAsB64 = function (a) {
- jspb.Message.assertConsistentTypes_(a);
- return a.length && "string" !== typeof a[0] ? goog.array.map(a, jspb.Message.bytesAsB64) : a;
- };
- goog.exportProperty(jspb.Message, "bytesListAsB64", jspb.Message.bytesListAsB64);
- jspb.Message.bytesListAsU8 = function (a) {
- jspb.Message.assertConsistentTypes_(a);
- return !a.length || a[0] instanceof Uint8Array ? a : goog.array.map(a, jspb.Message.bytesAsU8);
- };
- goog.exportProperty(jspb.Message, "bytesListAsU8", jspb.Message.bytesListAsU8);
- jspb.Message.assertConsistentTypes_ = function (a) {
- if (goog.DEBUG && a && 1 < a.length) {
- var b = goog.typeOf(a[0]);
- goog.array.forEach(a, function (a) {
- goog.typeOf(a) != b && jspb.asserts.fail("Inconsistent type in JSPB repeated field array. Got " + goog.typeOf(a) + " expected " + b);
- });
- }
- };
- jspb.Message.getFieldWithDefault = function (a, b, c) {
- a = jspb.Message.getField(a, b);
- return null == a ? c : a;
- };
- goog.exportProperty(jspb.Message, "getFieldWithDefault", jspb.Message.getFieldWithDefault);
- jspb.Message.getBooleanFieldWithDefault = function (a, b, c) {
- a = jspb.Message.getBooleanField(a, b);
- return null == a ? c : a;
- };
- goog.exportProperty(jspb.Message, "getBooleanFieldWithDefault", jspb.Message.getBooleanFieldWithDefault);
- jspb.Message.getFloatingPointFieldWithDefault = function (a, b, c) {
- a = jspb.Message.getOptionalFloatingPointField(a, b);
- return null == a ? c : a;
- };
- goog.exportProperty(jspb.Message, "getFloatingPointFieldWithDefault", jspb.Message.getFloatingPointFieldWithDefault);
- jspb.Message.getFieldProto3 = jspb.Message.getFieldWithDefault;
- goog.exportProperty(jspb.Message, "getFieldProto3", jspb.Message.getFieldProto3);
- jspb.Message.getMapField = function (a, b, c, d) {
- a.wrappers_ || (a.wrappers_ = {});
- if (b in a.wrappers_) return a.wrappers_[b];
- var e = jspb.Message.getField(a, b);
- if (!e) {
- if (c) return;
- e = [];
- jspb.Message.setField(a, b, e);
- }
- return a.wrappers_[b] = new jspb.Map(e, d);
- };
- goog.exportProperty(jspb.Message, "getMapField", jspb.Message.getMapField);
- jspb.Message.setField = function (a, b, c) {
- jspb.asserts.assertInstanceof(a, jspb.Message);
- b < a.pivot_ ? a.array[jspb.Message.getIndex_(a, b)] = c : (jspb.Message.maybeInitEmptyExtensionObject_(a), a.extensionObject_[b] = c);
- return a;
- };
- goog.exportProperty(jspb.Message, "setField", jspb.Message.setField);
- jspb.Message.setProto3IntField = function (a, b, c) {
- return jspb.Message.setFieldIgnoringDefault_(a, b, c, 0);
- };
- goog.exportProperty(jspb.Message, "setProto3IntField", jspb.Message.setProto3IntField);
- jspb.Message.setProto3FloatField = function (a, b, c) {
- return jspb.Message.setFieldIgnoringDefault_(a, b, c, 0);
- };
- goog.exportProperty(jspb.Message, "setProto3FloatField", jspb.Message.setProto3FloatField);
- jspb.Message.setProto3BooleanField = function (a, b, c) {
- return jspb.Message.setFieldIgnoringDefault_(a, b, c, !1);
- };
- goog.exportProperty(jspb.Message, "setProto3BooleanField", jspb.Message.setProto3BooleanField);
- jspb.Message.setProto3StringField = function (a, b, c) {
- return jspb.Message.setFieldIgnoringDefault_(a, b, c, "");
- };
- goog.exportProperty(jspb.Message, "setProto3StringField", jspb.Message.setProto3StringField);
- jspb.Message.setProto3BytesField = function (a, b, c) {
- return jspb.Message.setFieldIgnoringDefault_(a, b, c, "");
- };
- goog.exportProperty(jspb.Message, "setProto3BytesField", jspb.Message.setProto3BytesField);
- jspb.Message.setProto3EnumField = function (a, b, c) {
- return jspb.Message.setFieldIgnoringDefault_(a, b, c, 0);
- };
- goog.exportProperty(jspb.Message, "setProto3EnumField", jspb.Message.setProto3EnumField);
- jspb.Message.setProto3StringIntField = function (a, b, c) {
- return jspb.Message.setFieldIgnoringDefault_(a, b, c, "0");
- };
- goog.exportProperty(jspb.Message, "setProto3StringIntField", jspb.Message.setProto3StringIntField);
- jspb.Message.setFieldIgnoringDefault_ = function (a, b, c, d) {
- jspb.asserts.assertInstanceof(a, jspb.Message);
- c !== d ? jspb.Message.setField(a, b, c) : b < a.pivot_ ? a.array[jspb.Message.getIndex_(a, b)] = null : (jspb.Message.maybeInitEmptyExtensionObject_(a), delete a.extensionObject_[b]);
- return a;
- };
- jspb.Message.addToRepeatedField = function (a, b, c, d) {
- jspb.asserts.assertInstanceof(a, jspb.Message);
- b = jspb.Message.getRepeatedField(a, b);
- void 0 != d ? b.splice(d, 0, c) : b.push(c);
- return a;
- };
- goog.exportProperty(jspb.Message, "addToRepeatedField", jspb.Message.addToRepeatedField);
- jspb.Message.setOneofField = function (a, b, c, d) {
- jspb.asserts.assertInstanceof(a, jspb.Message);
- (c = jspb.Message.computeOneofCase(a, c)) && c !== b && void 0 !== d && (a.wrappers_ && c in a.wrappers_ && (a.wrappers_[c] = void 0), jspb.Message.setField(a, c, void 0));
- return jspb.Message.setField(a, b, d);
- };
- goog.exportProperty(jspb.Message, "setOneofField", jspb.Message.setOneofField);
- jspb.Message.computeOneofCase = function (a, b) {
- for (var c, d, e = 0; e < b.length; e++) {
- var f = b[e],
- g = jspb.Message.getField(a, f);
- null != g && (c = f, d = g, jspb.Message.setField(a, f, void 0));
- }
- return c ? (jspb.Message.setField(a, c, d), c) : 0;
- };
- goog.exportProperty(jspb.Message, "computeOneofCase", jspb.Message.computeOneofCase);
- jspb.Message.getWrapperField = function (a, b, c, d) {
- a.wrappers_ || (a.wrappers_ = {});
- if (!a.wrappers_[c]) {
- var e = jspb.Message.getField(a, c);
- if (d || e) a.wrappers_[c] = new b(e);
- }
- return a.wrappers_[c];
- };
- goog.exportProperty(jspb.Message, "getWrapperField", jspb.Message.getWrapperField);
- jspb.Message.getRepeatedWrapperField = function (a, b, c) {
- jspb.Message.wrapRepeatedField_(a, b, c);
- b = a.wrappers_[c];
- b == jspb.Message.EMPTY_LIST_SENTINEL_ && (b = a.wrappers_[c] = []);
- return b;
- };
- goog.exportProperty(jspb.Message, "getRepeatedWrapperField", jspb.Message.getRepeatedWrapperField);
- jspb.Message.wrapRepeatedField_ = function (a, b, c) {
- a.wrappers_ || (a.wrappers_ = {});
- if (!a.wrappers_[c]) {
- for (var d = jspb.Message.getRepeatedField(a, c), e = [], f = 0; f < d.length; f++) {
- e[f] = new b(d[f]);
- }
- a.wrappers_[c] = e;
- }
- };
- jspb.Message.setWrapperField = function (a, b, c) {
- jspb.asserts.assertInstanceof(a, jspb.Message);
- a.wrappers_ || (a.wrappers_ = {});
- var d = c ? c.toArray() : c;
- a.wrappers_[b] = c;
- return jspb.Message.setField(a, b, d);
- };
- goog.exportProperty(jspb.Message, "setWrapperField", jspb.Message.setWrapperField);
- jspb.Message.setOneofWrapperField = function (a, b, c, d) {
- jspb.asserts.assertInstanceof(a, jspb.Message);
- a.wrappers_ || (a.wrappers_ = {});
- var e = d ? d.toArray() : d;
- a.wrappers_[b] = d;
- return jspb.Message.setOneofField(a, b, c, e);
- };
- goog.exportProperty(jspb.Message, "setOneofWrapperField", jspb.Message.setOneofWrapperField);
- jspb.Message.setRepeatedWrapperField = function (a, b, c) {
- jspb.asserts.assertInstanceof(a, jspb.Message);
- a.wrappers_ || (a.wrappers_ = {});
- c = c || [];
- for (var d = [], e = 0; e < c.length; e++) {
- d[e] = c[e].toArray();
- }
- a.wrappers_[b] = c;
- return jspb.Message.setField(a, b, d);
- };
- goog.exportProperty(jspb.Message, "setRepeatedWrapperField", jspb.Message.setRepeatedWrapperField);
- jspb.Message.addToRepeatedWrapperField = function (a, b, c, d, e) {
- jspb.Message.wrapRepeatedField_(a, d, b);
- var f = a.wrappers_[b];
- f || (f = a.wrappers_[b] = []);
- c = c ? c : new d();
- a = jspb.Message.getRepeatedField(a, b);
- void 0 != e ? (f.splice(e, 0, c), a.splice(e, 0, c.toArray())) : (f.push(c), a.push(c.toArray()));
- return c;
- };
- goog.exportProperty(jspb.Message, "addToRepeatedWrapperField", jspb.Message.addToRepeatedWrapperField);
- jspb.Message.toMap = function (a, b, c, d) {
- for (var e = {}, f = 0; f < a.length; f++) {
- e[b.call(a[f])] = c ? c.call(a[f], d, a[f]) : a[f];
- }
- return e;
- };
- goog.exportProperty(jspb.Message, "toMap", jspb.Message.toMap);
- jspb.Message.prototype.syncMapFields_ = function () {
- if (this.wrappers_) for (var a in this.wrappers_) {
- var b = this.wrappers_[a];
- if (Array.isArray(b)) for (var c = 0; c < b.length; c++) {
- b[c] && b[c].toArray();
- } else b && b.toArray();
- }
- };
- jspb.Message.prototype.toArray = function () {
- this.syncMapFields_();
- return this.array;
- };
- goog.exportProperty(jspb.Message.prototype, "toArray", jspb.Message.prototype.toArray);
- jspb.Message.GENERATE_TO_STRING && (jspb.Message.prototype.toString = function () {
- this.syncMapFields_();
- return this.array.toString();
- });
- jspb.Message.prototype.getExtension = function (a) {
- if (this.extensionObject_) {
- this.wrappers_ || (this.wrappers_ = {});
- var b = a.fieldIndex;
- if (a.isRepeated) {
- if (a.isMessageType()) return this.wrappers_[b] || (this.wrappers_[b] = goog.array.map(this.extensionObject_[b] || [], function (b) {
- return new a.ctor(b);
- })), this.wrappers_[b];
- } else if (a.isMessageType()) return !this.wrappers_[b] && this.extensionObject_[b] && (this.wrappers_[b] = new a.ctor(this.extensionObject_[b])), this.wrappers_[b];
- return this.extensionObject_[b];
- }
- };
- goog.exportProperty(jspb.Message.prototype, "getExtension", jspb.Message.prototype.getExtension);
- jspb.Message.prototype.setExtension = function (a, b) {
- this.wrappers_ || (this.wrappers_ = {});
- jspb.Message.maybeInitEmptyExtensionObject_(this);
- var c = a.fieldIndex;
- a.isRepeated ? (b = b || [], a.isMessageType() ? (this.wrappers_[c] = b, this.extensionObject_[c] = goog.array.map(b, function (a) {
- return a.toArray();
- })) : this.extensionObject_[c] = b) : a.isMessageType() ? (this.wrappers_[c] = b, this.extensionObject_[c] = b ? b.toArray() : b) : this.extensionObject_[c] = b;
- return this;
- };
- goog.exportProperty(jspb.Message.prototype, "setExtension", jspb.Message.prototype.setExtension);
- jspb.Message.difference = function (a, b) {
- if (!(a instanceof b.constructor)) throw Error("Messages have different types.");
- var c = a.toArray();
- b = b.toArray();
- var d = [],
- e = 0,
- f = c.length > b.length ? c.length : b.length;
- a.getJsPbMessageId() && (d[0] = a.getJsPbMessageId(), e = 1);
- for (; e < f; e++) {
- jspb.Message.compareFields(c[e], b[e]) || (d[e] = b[e]);
- }
- return new a.constructor(d);
- };
- goog.exportProperty(jspb.Message, "difference", jspb.Message.difference);
- jspb.Message.equals = function (a, b) {
- return a == b || !(!a || !b) && a instanceof b.constructor && jspb.Message.compareFields(a.toArray(), b.toArray());
- };
- goog.exportProperty(jspb.Message, "equals", jspb.Message.equals);
- jspb.Message.compareExtensions = function (a, b) {
- a = a || {};
- b = b || {};
- var c = {},
- d;
- for (d in a) {
- c[d] = 0;
- }
- for (d in b) {
- c[d] = 0;
- }
- for (d in c) {
- if (!jspb.Message.compareFields(a[d], b[d])) return !1;
- }
- return !0;
- };
- goog.exportProperty(jspb.Message, "compareExtensions", jspb.Message.compareExtensions);
- jspb.Message.compareFields = function (a, b) {
- if (a == b) return !0;
- if (!goog.isObject(a) || !goog.isObject(b)) return "number" === typeof a && isNaN(a) || "number" === typeof b && isNaN(b) ? String(a) == String(b) : !1;
- if (a.constructor != b.constructor) return !1;
- if (jspb.Message.SUPPORTS_UINT8ARRAY_ && a.constructor === Uint8Array) {
- if (a.length != b.length) return !1;
- for (var c = 0; c < a.length; c++) {
- if (a[c] != b[c]) return !1;
- }
- return !0;
- }
- if (a.constructor === Array) {
- var d = void 0,
- e = void 0,
- f = Math.max(a.length, b.length);
- for (c = 0; c < f; c++) {
- var g = a[c],
- h = b[c];
- g && g.constructor == Object && (jspb.asserts.assert(void 0 === d), jspb.asserts.assert(c === a.length - 1), d = g, g = void 0);
- h && h.constructor == Object && (jspb.asserts.assert(void 0 === e), jspb.asserts.assert(c === b.length - 1), e = h, h = void 0);
- if (!jspb.Message.compareFields(g, h)) return !1;
- }
- return d || e ? (d = d || {}, e = e || {}, jspb.Message.compareExtensions(d, e)) : !0;
- }
- if (a.constructor === Object) return jspb.Message.compareExtensions(a, b);
- throw Error("Invalid type in JSPB array");
- };
- goog.exportProperty(jspb.Message, "compareFields", jspb.Message.compareFields);
- jspb.Message.prototype.cloneMessage = function () {
- return jspb.Message.cloneMessage(this);
- };
- goog.exportProperty(jspb.Message.prototype, "cloneMessage", jspb.Message.prototype.cloneMessage);
- jspb.Message.prototype.clone = function () {
- return jspb.Message.cloneMessage(this);
- };
- goog.exportProperty(jspb.Message.prototype, "clone", jspb.Message.prototype.clone);
- jspb.Message.clone = function (a) {
- return jspb.Message.cloneMessage(a);
- };
- goog.exportProperty(jspb.Message, "clone", jspb.Message.clone);
- jspb.Message.cloneMessage = function (a) {
- return new a.constructor(jspb.Message.clone_(a.toArray()));
- };
- jspb.Message.copyInto = function (a, b) {
- jspb.asserts.assertInstanceof(a, jspb.Message);
- jspb.asserts.assertInstanceof(b, jspb.Message);
- jspb.asserts.assert(a.constructor == b.constructor, "Copy source and target message should have the same type.");
- a = jspb.Message.clone(a);
- for (var c = b.toArray(), d = a.toArray(), e = c.length = 0; e < d.length; e++) {
- c[e] = d[e];
- }
- b.wrappers_ = a.wrappers_;
- b.extensionObject_ = a.extensionObject_;
- };
- goog.exportProperty(jspb.Message, "copyInto", jspb.Message.copyInto);
- jspb.Message.clone_ = function (a) {
- if (Array.isArray(a)) {
- for (var b = Array(a.length), c = 0; c < a.length; c++) {
- var d = a[c];
- null != d && (b[c] = "object" == _typeof(d) ? jspb.Message.clone_(jspb.asserts.assert(d)) : d);
- }
- return b;
- }
- if (jspb.Message.SUPPORTS_UINT8ARRAY_ && a instanceof Uint8Array) return new Uint8Array(a);
- b = {};
- for (c in a) {
- d = a[c], null != d && (b[c] = "object" == _typeof(d) ? jspb.Message.clone_(jspb.asserts.assert(d)) : d);
- }
- return b;
- };
- jspb.Message.registerMessageType = function (a, b) {
- b.messageId = a;
- };
- goog.exportProperty(jspb.Message, "registerMessageType", jspb.Message.registerMessageType);
- jspb.Message.messageSetExtensions = {};
- jspb.Message.messageSetExtensionsBinary = {};
- jspb.Export = {};
- "object" === ( false ? undefined : _typeof(exports)) && (exports.Map = jspb.Map, exports.Message = jspb.Message, exports.BinaryReader = jspb.BinaryReader, exports.BinaryWriter = jspb.BinaryWriter, exports.ExtensionFieldInfo = jspb.ExtensionFieldInfo, exports.ExtensionFieldBinaryInfo = jspb.ExtensionFieldBinaryInfo, exports.exportSymbol = goog.exportSymbol, exports.inherits = goog.inherits, exports.object = {
- extend: goog.object.extend
- }, exports.typeOf = goog.typeOf);
- /* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../../../../Program Files/HBuilderX/plugins/uniapp-cli/node_modules/webpack/buildin/global.js */ 40)))
- /***/ }),
- /* 40 */
- /*!***********************************!*\
- !*** (webpack)/buildin/global.js ***!
- \***********************************/
- /*! no static exports found */
- /***/ (function(module, exports) {
- var g;
- // This works in non-strict mode
- g = (function() {
- return this;
- })();
- try {
- // This works if eval is allowed (see CSP)
- g = g || new Function("return this")();
- } catch (e) {
- // This works if the window reference is available
- if (typeof window === "object") g = window;
- }
- // g can still be undefined, but nothing to do about it...
- // We return undefined, instead of nothing here, so it's
- // easier to handle this case. if(!global) { ...}
- module.exports = g;
- /***/ }),
- /* 41 */
- /*!*******************************************************************************************************!*\
- !*** D:/Work2/Orienteering/TrackOffical/node_modules/google-protobuf/google/protobuf/timestamp_pb.js ***!
- \*******************************************************************************************************/
- /*! no static exports found */
- /***/ (function(module, exports, __webpack_require__) {
- // source: google/protobuf/timestamp.proto
- /**
- * @fileoverview
- * @enhanceable
- * @suppress {missingRequire} reports error on implicit type usages.
- * @suppress {messageConventions} JS Compiler reports an error if a variable or
- * field starts with 'MSG_' and isn't a translatable message.
- * @public
- */
- // GENERATED CODE -- DO NOT EDIT!
- /* eslint-disable */
- // @ts-nocheck
- var jspb = __webpack_require__(/*! google-protobuf */ 39);
- var goog = jspb;
- var global = typeof globalThis !== 'undefined' && globalThis || typeof window !== 'undefined' && window || typeof global !== 'undefined' && global || typeof self !== 'undefined' && self || function () {
- return this;
- }.call(null) || Function('return this')();
- goog.exportSymbol('proto.google.protobuf.Timestamp', null, global);
- /**
- * Generated by JsPbCodeGenerator.
- * @param {Array=} opt_data Optional initial data array, typically from a
- * server response, or constructed directly in Javascript. The array is used
- * in place and becomes part of the constructed object. It is not cloned.
- * If no data is provided, the constructed object will be empty, but still
- * valid.
- * @extends {jspb.Message}
- * @constructor
- */
- proto.google.protobuf.Timestamp = function (opt_data) {
- jspb.Message.initialize(this, opt_data, 0, -1, null, null);
- };
- goog.inherits(proto.google.protobuf.Timestamp, jspb.Message);
- if (goog.DEBUG && !COMPILED) {
- /**
- * @public
- * @override
- */
- proto.google.protobuf.Timestamp.displayName = 'proto.google.protobuf.Timestamp';
- }
- if (jspb.Message.GENERATE_TO_OBJECT) {
- /**
- * Creates an object representation of this proto.
- * Field names that are reserved in JavaScript and will be renamed to pb_name.
- * Optional fields that are not set will be set to undefined.
- * To access a reserved field use, foo.pb_<name>, eg, foo.pb_default.
- * For the list of reserved names please see:
- * net/proto2/compiler/js/internal/generator.cc#kKeyword.
- * @param {boolean=} opt_includeInstance Deprecated. whether to include the
- * JSPB instance for transitional soy proto support:
- * http://goto/soy-param-migration
- * @return {!Object}
- */
- proto.google.protobuf.Timestamp.prototype.toObject = function (opt_includeInstance) {
- return proto.google.protobuf.Timestamp.toObject(opt_includeInstance, this);
- };
- /**
- * Static version of the {@see toObject} method.
- * @param {boolean|undefined} includeInstance Deprecated. Whether to include
- * the JSPB instance for transitional soy proto support:
- * http://goto/soy-param-migration
- * @param {!proto.google.protobuf.Timestamp} msg The msg instance to transform.
- * @return {!Object}
- * @suppress {unusedLocalVariables} f is only used for nested messages
- */
- proto.google.protobuf.Timestamp.toObject = function (includeInstance, msg) {
- var f,
- obj = {
- seconds: jspb.Message.getFieldWithDefault(msg, 1, 0),
- nanos: jspb.Message.getFieldWithDefault(msg, 2, 0)
- };
- if (includeInstance) {
- obj.$jspbMessageInstance = msg;
- }
- return obj;
- };
- }
- /**
- * Deserializes binary data (in protobuf wire format).
- * @param {jspb.ByteSource} bytes The bytes to deserialize.
- * @return {!proto.google.protobuf.Timestamp}
- */
- proto.google.protobuf.Timestamp.deserializeBinary = function (bytes) {
- var reader = new jspb.BinaryReader(bytes);
- var msg = new proto.google.protobuf.Timestamp();
- return proto.google.protobuf.Timestamp.deserializeBinaryFromReader(msg, reader);
- };
- /**
- * Deserializes binary data (in protobuf wire format) from the
- * given reader into the given message object.
- * @param {!proto.google.protobuf.Timestamp} msg The message object to deserialize into.
- * @param {!jspb.BinaryReader} reader The BinaryReader to use.
- * @return {!proto.google.protobuf.Timestamp}
- */
- proto.google.protobuf.Timestamp.deserializeBinaryFromReader = function (msg, reader) {
- while (reader.nextField()) {
- if (reader.isEndGroup()) {
- break;
- }
- var field = reader.getFieldNumber();
- switch (field) {
- case 1:
- var value = /** @type {number} */reader.readInt64();
- msg.setSeconds(value);
- break;
- case 2:
- var value = /** @type {number} */reader.readInt32();
- msg.setNanos(value);
- break;
- default:
- reader.skipField();
- break;
- }
- }
- return msg;
- };
- /**
- * Serializes the message to binary data (in protobuf wire format).
- * @return {!Uint8Array}
- */
- proto.google.protobuf.Timestamp.prototype.serializeBinary = function () {
- var writer = new jspb.BinaryWriter();
- proto.google.protobuf.Timestamp.serializeBinaryToWriter(this, writer);
- return writer.getResultBuffer();
- };
- /**
- * Serializes the given message to binary data (in protobuf wire
- * format), writing to the given BinaryWriter.
- * @param {!proto.google.protobuf.Timestamp} message
- * @param {!jspb.BinaryWriter} writer
- * @suppress {unusedLocalVariables} f is only used for nested messages
- */
- proto.google.protobuf.Timestamp.serializeBinaryToWriter = function (message, writer) {
- var f = undefined;
- f = message.getSeconds();
- if (f !== 0) {
- writer.writeInt64(1, f);
- }
- f = message.getNanos();
- if (f !== 0) {
- writer.writeInt32(2, f);
- }
- };
- /**
- * optional int64 seconds = 1;
- * @return {number}
- */
- proto.google.protobuf.Timestamp.prototype.getSeconds = function () {
- return (/** @type {number} */jspb.Message.getFieldWithDefault(this, 1, 0)
- );
- };
- /**
- * @param {number} value
- * @return {!proto.google.protobuf.Timestamp} returns this
- */
- proto.google.protobuf.Timestamp.prototype.setSeconds = function (value) {
- return jspb.Message.setProto3IntField(this, 1, value);
- };
- /**
- * optional int32 nanos = 2;
- * @return {number}
- */
- proto.google.protobuf.Timestamp.prototype.getNanos = function () {
- return (/** @type {number} */jspb.Message.getFieldWithDefault(this, 2, 0)
- );
- };
- /**
- * @param {number} value
- * @return {!proto.google.protobuf.Timestamp} returns this
- */
- proto.google.protobuf.Timestamp.prototype.setNanos = function (value) {
- return jspb.Message.setProto3IntField(this, 2, value);
- };
- goog.object.extend(exports, proto.google.protobuf);
- /* This code will be inserted into generated code for
- * google/protobuf/timestamp.proto. */
- /**
- * Returns a JavaScript 'Date' object corresponding to this Timestamp.
- * @return {!Date}
- */
- proto.google.protobuf.Timestamp.prototype.toDate = function () {
- var seconds = this.getSeconds();
- var nanos = this.getNanos();
- return new Date(seconds * 1000 + nanos / 1000000);
- };
- /**
- * Sets the value of this Timestamp object to be the given Date.
- * @param {!Date} value The value to set.
- */
- proto.google.protobuf.Timestamp.prototype.fromDate = function (value) {
- this.setSeconds(Math.floor(value.getTime() / 1000));
- this.setNanos(value.getMilliseconds() * 1000000);
- };
- /**
- * Factory method that returns a Timestamp object with value equal to
- * the given Date.
- * @param {!Date} value The value to set.
- * @return {!proto.google.protobuf.Timestamp}
- */
- proto.google.protobuf.Timestamp.fromDate = function (value) {
- var timestamp = new proto.google.protobuf.Timestamp();
- timestamp.fromDate(value);
- return timestamp;
- };
- /***/ }),
- /* 42 */
- /*!************************************************************************!*\
- !*** D:/Work2/Orienteering/TrackOffical/pages/nfc/nfc.vue?mpType=page ***!
- \************************************************************************/
- /*! no static exports found */
- /***/ (function(module, __webpack_exports__, __webpack_require__) {
- "use strict";
- eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _nfc_vue_vue_type_template_id_6158afae_scoped_true_mpType_page__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./nfc.vue?vue&type=template&id=6158afae&scoped=true&mpType=page */ 43);\n/* harmony import */ var _nfc_vue_vue_type_script_lang_js_mpType_page__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./nfc.vue?vue&type=script&lang=js&mpType=page */ 50);\n/* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _nfc_vue_vue_type_script_lang_js_mpType_page__WEBPACK_IMPORTED_MODULE_1__) if([\"default\"].indexOf(__WEBPACK_IMPORT_KEY__) < 0) (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _nfc_vue_vue_type_script_lang_js_mpType_page__WEBPACK_IMPORTED_MODULE_1__[key]; }) }(__WEBPACK_IMPORT_KEY__));\n/* harmony import */ var _Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../../../../Program Files/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/runtime/componentNormalizer.js */ 15);\n\nvar renderjs\n\n\n\n\n/* normalize component */\n\nvar component = Object(_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(\n _nfc_vue_vue_type_script_lang_js_mpType_page__WEBPACK_IMPORTED_MODULE_1__[\"default\"],\n _nfc_vue_vue_type_template_id_6158afae_scoped_true_mpType_page__WEBPACK_IMPORTED_MODULE_0__[\"render\"],\n _nfc_vue_vue_type_template_id_6158afae_scoped_true_mpType_page__WEBPACK_IMPORTED_MODULE_0__[\"staticRenderFns\"],\n false,\n null,\n \"6158afae\",\n null,\n false,\n _nfc_vue_vue_type_template_id_6158afae_scoped_true_mpType_page__WEBPACK_IMPORTED_MODULE_0__[\"components\"],\n renderjs\n)\n\ncomponent.options.__file = \"pages/nfc/nfc.vue\"\n/* harmony default export */ __webpack_exports__[\"default\"] = (component.exports);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbbnVsbF0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBdUk7QUFDdkk7QUFDa0U7QUFDTDs7O0FBRzdEO0FBQ29MO0FBQ3BMLGdCQUFnQiwyTEFBVTtBQUMxQixFQUFFLG9GQUFNO0FBQ1IsRUFBRSxxR0FBTTtBQUNSLEVBQUUsOEdBQWU7QUFDakI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEVBQUUseUdBQVU7QUFDWjtBQUNBOztBQUVBO0FBQ2UsZ0YiLCJmaWxlIjoiNDIuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyByZW5kZXIsIHN0YXRpY1JlbmRlckZucywgcmVjeWNsYWJsZVJlbmRlciwgY29tcG9uZW50cyB9IGZyb20gXCIuL25mYy52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9NjE1OGFmYWUmc2NvcGVkPXRydWUmbXBUeXBlPXBhZ2VcIlxudmFyIHJlbmRlcmpzXG5pbXBvcnQgc2NyaXB0IGZyb20gXCIuL25mYy52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9anMmbXBUeXBlPXBhZ2VcIlxuZXhwb3J0ICogZnJvbSBcIi4vbmZjLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz1qcyZtcFR5cGU9cGFnZVwiXG5cblxuLyogbm9ybWFsaXplIGNvbXBvbmVudCAqL1xuaW1wb3J0IG5vcm1hbGl6ZXIgZnJvbSBcIiEuLi8uLi8uLi8uLi8uLi9Qcm9ncmFtIEZpbGVzL0hCdWlsZGVyWC9wbHVnaW5zL3VuaWFwcC1jbGkvbm9kZV9tb2R1bGVzL0BkY2xvdWRpby92dWUtY2xpLXBsdWdpbi11bmkvcGFja2FnZXMvdnVlLWxvYWRlci9saWIvcnVudGltZS9jb21wb25lbnROb3JtYWxpemVyLmpzXCJcbnZhciBjb21wb25lbnQgPSBub3JtYWxpemVyKFxuICBzY3JpcHQsXG4gIHJlbmRlcixcbiAgc3RhdGljUmVuZGVyRm5zLFxuICBmYWxzZSxcbiAgbnVsbCxcbiAgXCI2MTU4YWZhZVwiLFxuICBudWxsLFxuICBmYWxzZSxcbiAgY29tcG9uZW50cyxcbiAgcmVuZGVyanNcbilcblxuY29tcG9uZW50Lm9wdGlvbnMuX19maWxlID0gXCJwYWdlcy9uZmMvbmZjLnZ1ZVwiXG5leHBvcnQgZGVmYXVsdCBjb21wb25lbnQuZXhwb3J0cyJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///42\n");
- /***/ }),
- /* 43 */
- /*!******************************************************************************************************************!*\
- !*** D:/Work2/Orienteering/TrackOffical/pages/nfc/nfc.vue?vue&type=template&id=6158afae&scoped=true&mpType=page ***!
- \******************************************************************************************************************/
- /*! exports provided: render, staticRenderFns, recyclableRender, components */
- /***/ (function(module, __webpack_exports__, __webpack_require__) {
- "use strict";
- __webpack_require__.r(__webpack_exports__);
- /* harmony import */ var _Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_11_0_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_filter_modules_template_js_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_page_meta_js_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_nfc_vue_vue_type_template_id_6158afae_scoped_true_mpType_page__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../../../Program Files/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../../../../Program Files/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--11-0!../../../../../Program Files/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/filter-modules-template.js!../../../../../Program Files/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/page-meta.js!../../../../../Program Files/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib??vue-loader-options!./nfc.vue?vue&type=template&id=6158afae&scoped=true&mpType=page */ 44);
- /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "render", function() { return _Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_11_0_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_filter_modules_template_js_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_page_meta_js_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_nfc_vue_vue_type_template_id_6158afae_scoped_true_mpType_page__WEBPACK_IMPORTED_MODULE_0__["render"]; });
- /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "staticRenderFns", function() { return _Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_11_0_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_filter_modules_template_js_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_page_meta_js_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_nfc_vue_vue_type_template_id_6158afae_scoped_true_mpType_page__WEBPACK_IMPORTED_MODULE_0__["staticRenderFns"]; });
- /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "recyclableRender", function() { return _Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_11_0_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_filter_modules_template_js_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_page_meta_js_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_nfc_vue_vue_type_template_id_6158afae_scoped_true_mpType_page__WEBPACK_IMPORTED_MODULE_0__["recyclableRender"]; });
- /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "components", function() { return _Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_11_0_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_filter_modules_template_js_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_page_meta_js_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_nfc_vue_vue_type_template_id_6158afae_scoped_true_mpType_page__WEBPACK_IMPORTED_MODULE_0__["components"]; });
- /***/ }),
- /* 44 */
- /*!**********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
- !*** ./node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--11-0!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/filter-modules-template.js!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/page-meta.js!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib??vue-loader-options!D:/Work2/Orienteering/TrackOffical/pages/nfc/nfc.vue?vue&type=template&id=6158afae&scoped=true&mpType=page ***!
- \**********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/
- /*! exports provided: render, staticRenderFns, recyclableRender, components */
- /***/ (function(module, __webpack_exports__, __webpack_require__) {
- "use strict";
- __webpack_require__.r(__webpack_exports__);
- /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "render", function() { return render; });
- /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "staticRenderFns", function() { return staticRenderFns; });
- /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "recyclableRender", function() { return recyclableRender; });
- /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "components", function() { return components; });
- var components
- try {
- components = {
- uniEasyinput:
- __webpack_require__(/*! @/uni_modules/uni-easyinput/components/uni-easyinput/uni-easyinput.vue */ 45)
- .default,
- }
- } catch (e) {
- if (
- e.message.indexOf("Cannot find module") !== -1 &&
- e.message.indexOf(".vue") !== -1
- ) {
- console.error(e.message)
- console.error("1. 排查组件名称拼写是否正确")
- console.error(
- "2. 排查组件是否符合 easycom 规范,文档:https://uniapp.dcloud.net.cn/collocation/pages?id=easycom"
- )
- console.error(
- "3. 若组件不符合 easycom 规范,需手动引入,并在 components 中注册该组件"
- )
- } else {
- throw e
- }
- }
- var render = function () {
- var _vm = this
- var _h = _vm.$createElement
- var _c = _vm._self._c || _h
- return _c(
- "view",
- { staticClass: _vm._$s(0, "sc", "container"), attrs: { _i: 0 } },
- [
- _c("uni-easyinput", {
- attrs: { placeholder: "请输入要写入NFC的数据", _i: 1 },
- on: { input: _vm.input },
- model: {
- value: _vm._$s(1, "v-model", _vm.nfcWriteData),
- callback: function ($$v) {
- _vm.nfcWriteData = $$v
- },
- expression: "nfcWriteData",
- },
- }),
- _c(
- "view",
- { staticClass: _vm._$s(2, "sc", "btn-box"), attrs: { _i: 2 } },
- [
- _c("button", {
- staticClass: _vm._$s(3, "sc", "btn"),
- attrs: { _i: 3 },
- on: {
- click: function ($event) {
- return _vm.readData()
- },
- },
- }),
- _c("button", {
- staticClass: _vm._$s(4, "sc", "btn"),
- attrs: { _i: 4 },
- on: {
- click: function ($event) {
- return _vm.writeData()
- },
- },
- }),
- ]
- ),
- _c(
- "view",
- { staticClass: _vm._$s(5, "sc", "btn-box"), attrs: { _i: 5 } },
- [
- _c("button", {
- staticClass: _vm._$s(6, "sc", "btn"),
- attrs: { _i: 6 },
- on: {
- click: function ($event) {
- return _vm.getNfcState()
- },
- },
- }),
- _c("button", {
- staticClass: _vm._$s(7, "sc", "btn"),
- attrs: { _i: 7 },
- on: {
- click: function ($event) {
- return _vm.writeAndLock()
- },
- },
- }),
- ]
- ),
- _c(
- "view",
- { staticClass: _vm._$s(8, "sc", "btn-box"), attrs: { _i: 8 } },
- [
- _c("button", {
- staticClass: _vm._$s(9, "sc", "btn"),
- attrs: { _i: 9 },
- on: {
- click: function ($event) {
- return _vm.setPassword()
- },
- },
- }),
- _c("button", {
- staticClass: _vm._$s(10, "sc", "btn"),
- attrs: { _i: 10 },
- on: {
- click: function ($event) {
- return _vm.delPassword()
- },
- },
- }),
- ]
- ),
- ],
- 1
- )
- }
- var recyclableRender = false
- var staticRenderFns = []
- render._withStripped = true
- /***/ }),
- /* 45 */
- /*!***************************************************************************************************************!*\
- !*** D:/Work2/Orienteering/TrackOffical/uni_modules/uni-easyinput/components/uni-easyinput/uni-easyinput.vue ***!
- \***************************************************************************************************************/
- /*! no static exports found */
- /***/ (function(module, __webpack_exports__, __webpack_require__) {
- "use strict";
- eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _uni_easyinput_vue_vue_type_template_id_abe12412___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./uni-easyinput.vue?vue&type=template&id=abe12412& */ 46);\n/* harmony import */ var _uni_easyinput_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./uni-easyinput.vue?vue&type=script&lang=js& */ 48);\n/* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _uni_easyinput_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__) if([\"default\"].indexOf(__WEBPACK_IMPORT_KEY__) < 0) (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _uni_easyinput_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__[key]; }) }(__WEBPACK_IMPORT_KEY__));\n/* harmony import */ var _Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../../../../../../Program Files/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/runtime/componentNormalizer.js */ 15);\n\nvar renderjs\n\n\n\n\n/* normalize component */\n\nvar component = Object(_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(\n _uni_easyinput_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__[\"default\"],\n _uni_easyinput_vue_vue_type_template_id_abe12412___WEBPACK_IMPORTED_MODULE_0__[\"render\"],\n _uni_easyinput_vue_vue_type_template_id_abe12412___WEBPACK_IMPORTED_MODULE_0__[\"staticRenderFns\"],\n false,\n null,\n null,\n null,\n false,\n _uni_easyinput_vue_vue_type_template_id_abe12412___WEBPACK_IMPORTED_MODULE_0__[\"components\"],\n renderjs\n)\n\ncomponent.options.__file = \"uni_modules/uni-easyinput/components/uni-easyinput/uni-easyinput.vue\"\n/* harmony default export */ __webpack_exports__[\"default\"] = (component.exports);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbbnVsbF0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBMEg7QUFDMUg7QUFDaUU7QUFDTDs7O0FBRzVEO0FBQzBMO0FBQzFMLGdCQUFnQiwyTEFBVTtBQUMxQixFQUFFLG1GQUFNO0FBQ1IsRUFBRSx3RkFBTTtBQUNSLEVBQUUsaUdBQWU7QUFDakI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEVBQUUsNEZBQVU7QUFDWjtBQUNBOztBQUVBO0FBQ2UsZ0YiLCJmaWxlIjoiNDUuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyByZW5kZXIsIHN0YXRpY1JlbmRlckZucywgcmVjeWNsYWJsZVJlbmRlciwgY29tcG9uZW50cyB9IGZyb20gXCIuL3VuaS1lYXN5aW5wdXQudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPWFiZTEyNDEyJlwiXG52YXIgcmVuZGVyanNcbmltcG9ydCBzY3JpcHQgZnJvbSBcIi4vdW5pLWVhc3lpbnB1dC52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9anMmXCJcbmV4cG9ydCAqIGZyb20gXCIuL3VuaS1lYXN5aW5wdXQudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPWpzJlwiXG5cblxuLyogbm9ybWFsaXplIGNvbXBvbmVudCAqL1xuaW1wb3J0IG5vcm1hbGl6ZXIgZnJvbSBcIiEuLi8uLi8uLi8uLi8uLi8uLi8uLi9Qcm9ncmFtIEZpbGVzL0hCdWlsZGVyWC9wbHVnaW5zL3VuaWFwcC1jbGkvbm9kZV9tb2R1bGVzL0BkY2xvdWRpby92dWUtY2xpLXBsdWdpbi11bmkvcGFja2FnZXMvdnVlLWxvYWRlci9saWIvcnVudGltZS9jb21wb25lbnROb3JtYWxpemVyLmpzXCJcbnZhciBjb21wb25lbnQgPSBub3JtYWxpemVyKFxuICBzY3JpcHQsXG4gIHJlbmRlcixcbiAgc3RhdGljUmVuZGVyRm5zLFxuICBmYWxzZSxcbiAgbnVsbCxcbiAgbnVsbCxcbiAgbnVsbCxcbiAgZmFsc2UsXG4gIGNvbXBvbmVudHMsXG4gIHJlbmRlcmpzXG4pXG5cbmNvbXBvbmVudC5vcHRpb25zLl9fZmlsZSA9IFwidW5pX21vZHVsZXMvdW5pLWVhc3lpbnB1dC9jb21wb25lbnRzL3VuaS1lYXN5aW5wdXQvdW5pLWVhc3lpbnB1dC52dWVcIlxuZXhwb3J0IGRlZmF1bHQgY29tcG9uZW50LmV4cG9ydHMiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///45\n");
- /***/ }),
- /* 46 */
- /*!**********************************************************************************************************************************************!*\
- !*** D:/Work2/Orienteering/TrackOffical/uni_modules/uni-easyinput/components/uni-easyinput/uni-easyinput.vue?vue&type=template&id=abe12412& ***!
- \**********************************************************************************************************************************************/
- /*! exports provided: render, staticRenderFns, recyclableRender, components */
- /***/ (function(module, __webpack_exports__, __webpack_require__) {
- "use strict";
- __webpack_require__.r(__webpack_exports__);
- /* harmony import */ var _Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_11_0_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_filter_modules_template_js_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_page_meta_js_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_uni_easyinput_vue_vue_type_template_id_abe12412___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../../../../../Program Files/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../../../../../../Program Files/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--11-0!../../../../../../../Program Files/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/filter-modules-template.js!../../../../../../../Program Files/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/page-meta.js!../../../../../../../Program Files/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib??vue-loader-options!./uni-easyinput.vue?vue&type=template&id=abe12412& */ 47);
- /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "render", function() { return _Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_11_0_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_filter_modules_template_js_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_page_meta_js_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_uni_easyinput_vue_vue_type_template_id_abe12412___WEBPACK_IMPORTED_MODULE_0__["render"]; });
- /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "staticRenderFns", function() { return _Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_11_0_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_filter_modules_template_js_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_page_meta_js_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_uni_easyinput_vue_vue_type_template_id_abe12412___WEBPACK_IMPORTED_MODULE_0__["staticRenderFns"]; });
- /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "recyclableRender", function() { return _Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_11_0_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_filter_modules_template_js_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_page_meta_js_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_uni_easyinput_vue_vue_type_template_id_abe12412___WEBPACK_IMPORTED_MODULE_0__["recyclableRender"]; });
- /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "components", function() { return _Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_11_0_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_filter_modules_template_js_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_page_meta_js_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_uni_easyinput_vue_vue_type_template_id_abe12412___WEBPACK_IMPORTED_MODULE_0__["components"]; });
- /***/ }),
- /* 47 */
- /*!**************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
- !*** ./node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--11-0!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/filter-modules-template.js!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/page-meta.js!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib??vue-loader-options!D:/Work2/Orienteering/TrackOffical/uni_modules/uni-easyinput/components/uni-easyinput/uni-easyinput.vue?vue&type=template&id=abe12412& ***!
- \**************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/
- /*! exports provided: render, staticRenderFns, recyclableRender, components */
- /***/ (function(module, __webpack_exports__, __webpack_require__) {
- "use strict";
- __webpack_require__.r(__webpack_exports__);
- /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "render", function() { return render; });
- /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "staticRenderFns", function() { return staticRenderFns; });
- /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "recyclableRender", function() { return recyclableRender; });
- /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "components", function() { return components; });
- var components
- try {
- components = {
- uniIcons:
- __webpack_require__(/*! @/uni_modules/uni-icons/components/uni-icons/uni-icons.vue */ 19)
- .default,
- }
- } catch (e) {
- if (
- e.message.indexOf("Cannot find module") !== -1 &&
- e.message.indexOf(".vue") !== -1
- ) {
- console.error(e.message)
- console.error("1. 排查组件名称拼写是否正确")
- console.error(
- "2. 排查组件是否符合 easycom 规范,文档:https://uniapp.dcloud.net.cn/collocation/pages?id=easycom"
- )
- console.error(
- "3. 若组件不符合 easycom 规范,需手动引入,并在 components 中注册该组件"
- )
- } else {
- throw e
- }
- }
- var render = function () {
- var _vm = this
- var _h = _vm.$createElement
- var _c = _vm._self._c || _h
- return _c(
- "view",
- {
- staticClass: _vm._$s(0, "sc", "uni-easyinput"),
- class: _vm._$s(0, "c", { "uni-easyinput-error": _vm.msg }),
- style: _vm._$s(0, "s", _vm.boxStyle),
- attrs: { _i: 0 },
- },
- [
- _c(
- "view",
- {
- staticClass: _vm._$s(1, "sc", "uni-easyinput__content"),
- class: _vm._$s(1, "c", _vm.inputContentClass),
- style: _vm._$s(1, "s", _vm.inputContentStyle),
- attrs: { _i: 1 },
- },
- [
- _vm._t(
- "prefixIcon",
- [
- _vm._$s(3, "i", _vm.prefixIcon)
- ? _c("uni-icons", {
- staticClass: _vm._$s(3, "sc", "content-clear-icon"),
- attrs: {
- type: _vm.prefixIcon,
- color: "#c0c4cc",
- size: "22",
- _i: 3,
- },
- on: {
- click: function ($event) {
- return _vm.onClickIcon("prefix")
- },
- },
- })
- : _vm._e(),
- ],
- { _i: 2 }
- ),
- _vm._$s(4, "i", _vm.type === "textarea")
- ? _c("textarea", {
- staticClass: _vm._$s(
- 4,
- "sc",
- "uni-easyinput__content-textarea"
- ),
- class: _vm._$s(4, "c", { "input-padding": _vm.inputBorder }),
- attrs: {
- name: _vm._$s(4, "a-name", _vm.name),
- value: _vm._$s(4, "a-value", _vm.val),
- placeholder: _vm._$s(4, "a-placeholder", _vm.placeholder),
- placeholderStyle: _vm._$s(
- 4,
- "a-placeholderStyle",
- _vm.placeholderStyle
- ),
- disabled: _vm._$s(4, "a-disabled", _vm.disabled),
- maxlength: _vm._$s(4, "a-maxlength", _vm.inputMaxlength),
- focus: _vm._$s(4, "a-focus", _vm.focused),
- autoHeight: _vm._$s(4, "a-autoHeight", _vm.autoHeight),
- _i: 4,
- },
- on: {
- input: _vm.onInput,
- blur: _vm._Blur,
- focus: _vm._Focus,
- confirm: _vm.onConfirm,
- },
- })
- : _c("input", {
- staticClass: _vm._$s(5, "sc", "uni-easyinput__content-input"),
- style: _vm._$s(5, "s", _vm.inputStyle),
- attrs: {
- type: _vm._$s(
- 5,
- "a-type",
- _vm.type === "password" ? "text" : _vm.type
- ),
- name: _vm._$s(5, "a-name", _vm.name),
- value: _vm._$s(5, "a-value", _vm.val),
- password: _vm._$s(
- 5,
- "a-password",
- !_vm.showPassword && _vm.type === "password"
- ),
- placeholder: _vm._$s(5, "a-placeholder", _vm.placeholder),
- placeholderStyle: _vm._$s(
- 5,
- "a-placeholderStyle",
- _vm.placeholderStyle
- ),
- disabled: _vm._$s(5, "a-disabled", _vm.disabled),
- maxlength: _vm._$s(5, "a-maxlength", _vm.inputMaxlength),
- focus: _vm._$s(5, "a-focus", _vm.focused),
- confirmType: _vm._$s(5, "a-confirmType", _vm.confirmType),
- _i: 5,
- },
- on: {
- focus: _vm._Focus,
- blur: _vm._Blur,
- input: _vm.onInput,
- confirm: _vm.onConfirm,
- },
- }),
- _vm._$s(6, "i", _vm.type === "password" && _vm.passwordIcon)
- ? [
- _vm._$s(7, "i", _vm.isVal)
- ? _c("uni-icons", {
- staticClass: _vm._$s(7, "sc", "content-clear-icon"),
- class: _vm._$s(7, "c", {
- "is-textarea-icon": _vm.type === "textarea",
- }),
- attrs: {
- type: _vm.showPassword
- ? "eye-slash-filled"
- : "eye-filled",
- size: 22,
- color: _vm.focusShow ? _vm.primaryColor : "#c0c4cc",
- _i: 7,
- },
- on: { click: _vm.onEyes },
- })
- : _vm._e(),
- ]
- : _vm._$s(8, "e", _vm.suffixIcon || _vm.$slots.suffixIcon)
- ? [
- _vm._t(
- "suffixIcon",
- [
- _vm._$s(10, "i", _vm.suffixIcon)
- ? _c("uni-icons", {
- staticClass: _vm._$s(10, "sc", "content-clear-icon"),
- attrs: {
- type: _vm.suffixIcon,
- color: "#c0c4cc",
- size: "22",
- _i: 10,
- },
- on: {
- click: function ($event) {
- return _vm.onClickIcon("suffix")
- },
- },
- })
- : _vm._e(),
- ],
- { _i: 9 }
- ),
- ]
- : [
- _vm._$s(
- 12,
- "i",
- _vm.clearable &&
- _vm.isVal &&
- !_vm.disabled &&
- _vm.type !== "textarea"
- )
- ? _c("uni-icons", {
- staticClass: _vm._$s(12, "sc", "content-clear-icon"),
- class: _vm._$s(12, "c", {
- "is-textarea-icon": _vm.type === "textarea",
- }),
- attrs: {
- type: "clear",
- size: _vm.clearSize,
- color: _vm.msg
- ? "#dd524d"
- : _vm.focusShow
- ? _vm.primaryColor
- : "#c0c4cc",
- _i: 12,
- },
- on: { click: _vm.onClear },
- })
- : _vm._e(),
- ],
- _vm._t("right", null, { _i: 13 }),
- ],
- 2
- ),
- ]
- )
- }
- var recyclableRender = false
- var staticRenderFns = []
- render._withStripped = true
- /***/ }),
- /* 48 */
- /*!****************************************************************************************************************************************!*\
- !*** D:/Work2/Orienteering/TrackOffical/uni_modules/uni-easyinput/components/uni-easyinput/uni-easyinput.vue?vue&type=script&lang=js& ***!
- \****************************************************************************************************************************************/
- /*! no static exports found */
- /***/ (function(module, __webpack_exports__, __webpack_require__) {
- "use strict";
- eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_7_1_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_using_components_js_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_uni_easyinput_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../../../../../Program Files/HBuilderX/plugins/uniapp-cli/node_modules/babel-loader/lib!../../../../../../../Program Files/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--7-1!../../../../../../../Program Files/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/using-components.js!../../../../../../../Program Files/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib??vue-loader-options!./uni-easyinput.vue?vue&type=script&lang=js& */ 49);\n/* harmony import */ var _Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_7_1_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_using_components_js_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_uni_easyinput_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_7_1_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_using_components_js_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_uni_easyinput_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__);\n/* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_7_1_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_using_components_js_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_uni_easyinput_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__) if([\"default\"].indexOf(__WEBPACK_IMPORT_KEY__) < 0) (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_7_1_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_using_components_js_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_uni_easyinput_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__[key]; }) }(__WEBPACK_IMPORT_KEY__));\n /* harmony default export */ __webpack_exports__[\"default\"] = (_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_7_1_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_using_components_js_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_uni_easyinput_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0___default.a); //# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbbnVsbF0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQXFvQixDQUFnQiwybkJBQUcsRUFBQyIsImZpbGUiOiI0OC5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBtb2QgZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vLi4vLi4vUHJvZ3JhbSBGaWxlcy9IQnVpbGRlclgvcGx1Z2lucy91bmlhcHAtY2xpL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzIS4uLy4uLy4uLy4uLy4uLy4uLy4uL1Byb2dyYW0gRmlsZXMvSEJ1aWxkZXJYL3BsdWdpbnMvdW5pYXBwLWNsaS9ub2RlX21vZHVsZXMvQGRjbG91ZGlvL3Z1ZS1jbGktcGx1Z2luLXVuaS9wYWNrYWdlcy93ZWJwYWNrLXByZXByb2Nlc3MtbG9hZGVyL2luZGV4LmpzPz9yZWYtLTctMSEuLi8uLi8uLi8uLi8uLi8uLi8uLi9Qcm9ncmFtIEZpbGVzL0hCdWlsZGVyWC9wbHVnaW5zL3VuaWFwcC1jbGkvbm9kZV9tb2R1bGVzL0BkY2xvdWRpby92dWUtY2xpLXBsdWdpbi11bmkvcGFja2FnZXMvd2VicGFjay11bmktYXBwLWxvYWRlci91c2luZy1jb21wb25lbnRzLmpzIS4uLy4uLy4uLy4uLy4uLy4uLy4uL1Byb2dyYW0gRmlsZXMvSEJ1aWxkZXJYL3BsdWdpbnMvdW5pYXBwLWNsaS9ub2RlX21vZHVsZXMvQGRjbG91ZGlvL3Z1ZS1jbGktcGx1Z2luLXVuaS9wYWNrYWdlcy92dWUtbG9hZGVyL2xpYi9pbmRleC5qcz8/dnVlLWxvYWRlci1vcHRpb25zIS4vdW5pLWVhc3lpbnB1dC52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9anMmXCI7IGV4cG9ydCBkZWZhdWx0IG1vZDsgZXhwb3J0ICogZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vLi4vLi4vUHJvZ3JhbSBGaWxlcy9IQnVpbGRlclgvcGx1Z2lucy91bmlhcHAtY2xpL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzIS4uLy4uLy4uLy4uLy4uLy4uLy4uL1Byb2dyYW0gRmlsZXMvSEJ1aWxkZXJYL3BsdWdpbnMvdW5pYXBwLWNsaS9ub2RlX21vZHVsZXMvQGRjbG91ZGlvL3Z1ZS1jbGktcGx1Z2luLXVuaS9wYWNrYWdlcy93ZWJwYWNrLXByZXByb2Nlc3MtbG9hZGVyL2luZGV4LmpzPz9yZWYtLTctMSEuLi8uLi8uLi8uLi8uLi8uLi8uLi9Qcm9ncmFtIEZpbGVzL0hCdWlsZGVyWC9wbHVnaW5zL3VuaWFwcC1jbGkvbm9kZV9tb2R1bGVzL0BkY2xvdWRpby92dWUtY2xpLXBsdWdpbi11bmkvcGFja2FnZXMvd2VicGFjay11bmktYXBwLWxvYWRlci91c2luZy1jb21wb25lbnRzLmpzIS4uLy4uLy4uLy4uLy4uLy4uLy4uL1Byb2dyYW0gRmlsZXMvSEJ1aWxkZXJYL3BsdWdpbnMvdW5pYXBwLWNsaS9ub2RlX21vZHVsZXMvQGRjbG91ZGlvL3Z1ZS1jbGktcGx1Z2luLXVuaS9wYWNrYWdlcy92dWUtbG9hZGVyL2xpYi9pbmRleC5qcz8/dnVlLWxvYWRlci1vcHRpb25zIS4vdW5pLWVhc3lpbnB1dC52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9anMmXCIiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///48\n");
- /***/ }),
- /* 49 */
- /*!*********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
- !*** ./node_modules/babel-loader/lib!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--7-1!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/using-components.js!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib??vue-loader-options!D:/Work2/Orienteering/TrackOffical/uni_modules/uni-easyinput/components/uni-easyinput/uni-easyinput.vue?vue&type=script&lang=js& ***!
- \*********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/
- /*! no static exports found */
- /***/ (function(module, exports, __webpack_require__) {
- "use strict";
- eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n\n/**\r\n * Easyinput 输入框\r\n * @description 此组件可以实现表单的输入与校验,包括 \"text\" 和 \"textarea\" 类型。\r\n * @tutorial https://ext.dcloud.net.cn/plugin?id=3455\r\n * @property {String}\tvalue\t输入内容\r\n * @property {String }\ttype\t输入框的类型(默认text) password/text/textarea/..\r\n * \t@value text\t\t\t文本输入键盘\r\n * \t@value textarea\t多行文本输入键盘\r\n * \t@value password\t密码输入键盘\r\n * \t@value number\t\t数字输入键盘,注意iOS上app-vue弹出的数字键盘并非9宫格方式\r\n * \t@value idcard\t\t身份证输入键盘,信、支付宝、百度、QQ小程序\r\n * \t@value digit\t\t带小数点的数字键盘\t,App的nvue页面、微信、支付宝、百度、头条、QQ小程序支持\r\n * @property {Boolean}\tclearable\t是否显示右侧清空内容的图标控件,点击可清空输入框内容(默认true)\r\n * @property {Boolean}\tautoHeight\t是否自动增高输入区域,type为textarea时有效(默认true)\r\n * @property {String }\tplaceholder\t输入框的提示文字\r\n * @property {String }\tplaceholderStyle\tplaceholder的样式(内联样式,字符串),如\"color: #ddd\"\r\n * @property {Boolean}\tfocus\t是否自动获得焦点(默认false)\r\n * @property {Boolean}\tdisabled\t是否禁用(默认false)\r\n * @property {Number }\tmaxlength\t最大输入长度,设置为 -1 的时候不限制最大长度(默认140)\r\n * @property {String }\tconfirmType\t设置键盘右下角按钮的文字,仅在type=\"text\"时生效(默认done)\r\n * @property {Number }\tclearSize\t清除图标的大小,单位px(默认15)\r\n * @property {String}\tprefixIcon\t输入框头部图标\r\n * @property {String}\tsuffixIcon\t输入框尾部图标\r\n * @property {String}\tprimaryColor\t设置主题色(默认#2979ff)\r\n * @property {Boolean}\ttrim\t是否自动去除两端的空格\r\n * @value both\t去除两端空格\r\n * @value left\t去除左侧空格\r\n * @value right\t去除右侧空格\r\n * @value start\t去除左侧空格\r\n * @value end\t\t去除右侧空格\r\n * @value all\t\t去除全部空格\r\n * @value none\t不去除空格\r\n * @property {Boolean}\tinputBorder\t是否显示input输入框的边框(默认true)\r\n * @property {Boolean}\tpasswordIcon\ttype=password时是否显示小眼睛图标\r\n * @property {Object}\tstyles\t自定义颜色\r\n * @event {Function}\tinput\t输入框内容发生变化时触发\r\n * @event {Function}\tfocus\t输入框获得焦点时触发\r\n * @event {Function}\tblur\t输入框失去焦点时触发\r\n * @event {Function}\tconfirm\t点击完成按钮时触发\r\n * @event {Function}\ticonClick\t点击图标时触发\r\n * @slot prefixIcon 输入框头部插槽\r\n * @slot suffixIcon 输入框尾部插槽\r\n * @example <uni-easyinput v-model=\"mobile\"></uni-easyinput>\r\n */\nfunction obj2strClass(obj) {\n var classess = \"\";\n for (var key in obj) {\n var val = obj[key];\n if (val) {\n classess += \"\".concat(key, \" \");\n }\n }\n return classess;\n}\nfunction obj2strStyle(obj) {\n var style = \"\";\n for (var key in obj) {\n var val = obj[key];\n style += \"\".concat(key, \":\").concat(val, \";\");\n }\n return style;\n}\nvar _default2 = {\n name: \"uni-easyinput\",\n emits: [\"click\", \"iconClick\", \"update:modelValue\", \"input\", \"focus\", \"blur\", \"confirm\", \"clear\", \"eyes\", \"change\"],\n model: {\n prop: \"modelValue\",\n event: \"update:modelValue\"\n },\n options: {\n virtualHost: true\n },\n inject: {\n form: {\n from: \"uniForm\",\n default: null\n },\n formItem: {\n from: \"uniFormItem\",\n default: null\n }\n },\n props: {\n name: String,\n value: [Number, String],\n modelValue: [Number, String],\n type: {\n type: String,\n default: \"text\"\n },\n clearable: {\n type: Boolean,\n default: true\n },\n autoHeight: {\n type: Boolean,\n default: false\n },\n placeholder: {\n type: String,\n default: \" \"\n },\n placeholderStyle: String,\n focus: {\n type: Boolean,\n default: false\n },\n disabled: {\n type: Boolean,\n default: false\n },\n maxlength: {\n type: [Number, String],\n default: 140\n },\n confirmType: {\n type: String,\n default: \"done\"\n },\n clearSize: {\n type: [Number, String],\n default: 24\n },\n inputBorder: {\n type: Boolean,\n default: true\n },\n prefixIcon: {\n type: String,\n default: \"\"\n },\n suffixIcon: {\n type: String,\n default: \"\"\n },\n trim: {\n type: [Boolean, String],\n default: true\n },\n passwordIcon: {\n type: Boolean,\n default: true\n },\n primaryColor: {\n type: String,\n default: \"#2979ff\"\n },\n styles: {\n type: Object,\n default: function _default() {\n return {\n color: \"#333\",\n disableColor: \"#F7F6F6\",\n borderColor: \"#e5e5e5\"\n };\n }\n },\n errorMessage: {\n type: [String, Boolean],\n default: \"\"\n }\n },\n data: function data() {\n return {\n focused: false,\n val: \"\",\n showMsg: \"\",\n border: false,\n isFirstBorder: false,\n showClearIcon: false,\n showPassword: false,\n focusShow: false,\n localMsg: \"\"\n };\n },\n computed: {\n // 输入框内是否有值\n isVal: function isVal() {\n var val = this.val;\n // fixed by mehaotian 处理值为0的情况,字符串0不在处理范围\n if (val || val === 0) {\n return true;\n }\n return false;\n },\n msg: function msg() {\n // console.log('computed', this.form, this.formItem);\n // if (this.form) {\n // \treturn this.errorMessage || this.formItem.errMsg;\n // }\n // TODO 处理头条 formItem 中 errMsg 不更新的问题\n return this.localMsg || this.errorMessage;\n },\n // 因为uniapp的input组件的maxlength组件必须要数值,这里转为数值,用户可以传入字符串数值\n inputMaxlength: function inputMaxlength() {\n return Number(this.maxlength);\n },\n // 处理外层样式的style\n boxStyle: function boxStyle() {\n return \"color:\".concat(this.inputBorder && this.msg ? \"#e43d33\" : this.styles.color, \";\");\n },\n // input 内容的类和样式处理\n inputContentClass: function inputContentClass() {\n return obj2strClass({\n \"is-input-border\": this.inputBorder,\n \"is-input-error-border\": this.inputBorder && this.msg,\n \"is-textarea\": this.type === \"textarea\",\n \"is-disabled\": this.disabled\n });\n },\n inputContentStyle: function inputContentStyle() {\n var focusColor = this.focusShow ? this.primaryColor : this.styles.borderColor;\n var borderColor = this.inputBorder && this.msg ? \"#dd524d\" : focusColor;\n return obj2strStyle({\n \"border-color\": borderColor || \"#e5e5e5\",\n \"background-color\": this.disabled ? this.styles.disableColor : this.styles.backgroundColor\n });\n },\n // input右侧样式\n inputStyle: function inputStyle() {\n var paddingRight = this.type === \"password\" || this.clearable || this.prefixIcon ? \"\" : \"10px\";\n return obj2strStyle({\n \"padding-right\": paddingRight,\n \"padding-left\": this.prefixIcon ? \"\" : \"10px\"\n });\n }\n },\n watch: {\n value: function value(newVal) {\n this.val = newVal;\n },\n modelValue: function modelValue(newVal) {\n this.val = newVal;\n },\n focus: function focus(newVal) {\n var _this = this;\n this.$nextTick(function () {\n _this.focused = _this.focus;\n _this.focusShow = _this.focus;\n });\n }\n },\n created: function created() {\n var _this2 = this;\n this.init();\n // TODO 处理头条vue3 computed 不监听 inject 更改的问题(formItem.errMsg)\n if (this.form && this.formItem) {\n this.$watch(\"formItem.errMsg\", function (newVal) {\n _this2.localMsg = newVal;\n });\n }\n },\n mounted: function mounted() {\n var _this3 = this;\n this.$nextTick(function () {\n _this3.focused = _this3.focus;\n _this3.focusShow = _this3.focus;\n });\n },\n methods: {\n /**\r\n * 初始化变量值\r\n */\n init: function init() {\n if (this.value || this.value === 0) {\n this.val = this.value;\n } else if (this.modelValue || this.modelValue === 0) {\n this.val = this.modelValue;\n } else {\n this.val = null;\n }\n },\n /**\r\n * 点击图标时触发\r\n * @param {Object} type\r\n */\n onClickIcon: function onClickIcon(type) {\n this.$emit(\"iconClick\", type);\n },\n /**\r\n * 显示隐藏内容,密码框时生效\r\n */\n onEyes: function onEyes() {\n this.showPassword = !this.showPassword;\n this.$emit(\"eyes\", this.showPassword);\n },\n /**\r\n * 输入时触发\r\n * @param {Object} event\r\n */\n onInput: function onInput(event) {\n var value = event.detail.value;\n // 判断是否去除空格\n if (this.trim) {\n if (typeof this.trim === \"boolean\" && this.trim) {\n value = this.trimStr(value);\n }\n if (typeof this.trim === \"string\") {\n value = this.trimStr(value, this.trim);\n }\n }\n if (this.errMsg) this.errMsg = \"\";\n this.val = value;\n // TODO 兼容 vue2\n this.$emit(\"input\", value);\n // TODO 兼容 vue3\n this.$emit(\"update:modelValue\", value);\n },\n /**\r\n * 外部调用方法\r\n * 获取焦点时触发\r\n * @param {Object} event\r\n */\n onFocus: function onFocus() {\n var _this4 = this;\n this.$nextTick(function () {\n _this4.focused = true;\n });\n this.$emit(\"focus\", null);\n },\n _Focus: function _Focus(event) {\n this.focusShow = true;\n this.$emit(\"focus\", event);\n },\n /**\r\n * 外部调用方法\r\n * 失去焦点时触发\r\n * @param {Object} event\r\n */\n onBlur: function onBlur() {\n this.focused = false;\n this.$emit(\"focus\", null);\n },\n _Blur: function _Blur(event) {\n var value = event.detail.value;\n this.focusShow = false;\n this.$emit(\"blur\", event);\n // 根据类型返回值,在event中获取的值理论上讲都是string\n this.$emit(\"change\", this.val);\n // 失去焦点时参与表单校验\n if (this.form && this.formItem) {\n var validateTrigger = this.form.validateTrigger;\n if (validateTrigger === \"blur\") {\n this.formItem.onFieldChange();\n }\n }\n },\n /**\r\n * 按下键盘的发送键\r\n * @param {Object} e\r\n */\n onConfirm: function onConfirm(e) {\n this.$emit(\"confirm\", this.val);\n this.$emit(\"change\", this.val);\n },\n /**\r\n * 清理内容\r\n * @param {Object} event\r\n */\n onClear: function onClear(event) {\n this.val = \"\";\n // TODO 兼容 vue2\n this.$emit(\"input\", \"\");\n // TODO 兼容 vue2\n // TODO 兼容 vue3\n this.$emit(\"update:modelValue\", \"\");\n // 点击叉号触发\n this.$emit(\"clear\");\n },\n /**\r\n * 去除空格\r\n */\n trimStr: function trimStr(str) {\n var pos = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : \"both\";\n if (pos === \"both\") {\n return str.trim();\n } else if (pos === \"left\") {\n return str.trimLeft();\n } else if (pos === \"right\") {\n return str.trimRight();\n } else if (pos === \"start\") {\n return str.trimStart();\n } else if (pos === \"end\") {\n return str.trimEnd();\n } else if (pos === \"all\") {\n return str.replace(/\\s+/g, \"\");\n } else if (pos === \"none\") {\n return str;\n }\n return str;\n }\n }\n};\nexports.default = _default2;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInVuaS1hcHA6Ly8vdW5pX21vZHVsZXMvdW5pLWVhc3lpbnB1dC9jb21wb25lbnRzL3VuaS1lYXN5aW5wdXQvdW5pLWVhc3lpbnB1dC52dWUiXSwibmFtZXMiOlsiY2xhc3Nlc3MiLCJzdHlsZSIsIm5hbWUiLCJlbWl0cyIsIm1vZGVsIiwicHJvcCIsImV2ZW50Iiwib3B0aW9ucyIsInZpcnR1YWxIb3N0IiwiaW5qZWN0IiwiZm9ybSIsImZyb20iLCJkZWZhdWx0IiwiZm9ybUl0ZW0iLCJwcm9wcyIsInZhbHVlIiwibW9kZWxWYWx1ZSIsInR5cGUiLCJjbGVhcmFibGUiLCJhdXRvSGVpZ2h0IiwicGxhY2Vob2xkZXIiLCJwbGFjZWhvbGRlclN0eWxlIiwiZm9jdXMiLCJkaXNhYmxlZCIsIm1heGxlbmd0aCIsImNvbmZpcm1UeXBlIiwiY2xlYXJTaXplIiwiaW5wdXRCb3JkZXIiLCJwcmVmaXhJY29uIiwic3VmZml4SWNvbiIsInRyaW0iLCJwYXNzd29yZEljb24iLCJwcmltYXJ5Q29sb3IiLCJzdHlsZXMiLCJjb2xvciIsImRpc2FibGVDb2xvciIsImJvcmRlckNvbG9yIiwiZXJyb3JNZXNzYWdlIiwiZGF0YSIsImZvY3VzZWQiLCJ2YWwiLCJzaG93TXNnIiwiYm9yZGVyIiwiaXNGaXJzdEJvcmRlciIsInNob3dDbGVhckljb24iLCJzaG93UGFzc3dvcmQiLCJmb2N1c1Nob3ciLCJsb2NhbE1zZyIsImNvbXB1dGVkIiwiaXNWYWwiLCJtc2ciLCJpbnB1dE1heGxlbmd0aCIsImJveFN0eWxlIiwiaW5wdXRDb250ZW50Q2xhc3MiLCJpbnB1dENvbnRlbnRTdHlsZSIsImlucHV0U3R5bGUiLCJ3YXRjaCIsImNyZWF0ZWQiLCJtb3VudGVkIiwibWV0aG9kcyIsImluaXQiLCJvbkNsaWNrSWNvbiIsIm9uRXllcyIsIm9uSW5wdXQiLCJvbkZvY3VzIiwiX0ZvY3VzIiwib25CbHVyIiwiX0JsdXIiLCJvbkNvbmZpcm0iLCJvbkNsZWFyIiwidHJpbVN0ciJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFxR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0VBQ0E7RUFDQTtJQUNBO0lBQ0E7TUFDQUE7SUFDQTtFQUNBO0VBQ0E7QUFDQTtBQUVBO0VBQ0E7RUFDQTtJQUNBO0lBQ0FDO0VBQ0E7RUFDQTtBQUNBO0FBQUEsZ0JBQ0E7RUFDQUM7RUFDQUMsUUFDQSxTQUNBLGFBQ0EscUJBQ0EsU0FDQSxTQUNBLFFBQ0EsV0FDQSxTQUNBLFFBQ0EsU0FDQTtFQUNBQztJQUNBQztJQUNBQztFQUNBO0VBQ0FDO0lBQ0FDO0VBQ0E7RUFDQUM7SUFDQUM7TUFDQUM7TUFDQUM7SUFDQTtJQUNBQztNQUNBRjtNQUNBQztJQUNBO0VBQ0E7RUFDQUU7SUFDQVo7SUFDQWE7SUFDQUM7SUFDQUM7TUFDQUE7TUFDQUw7SUFDQTtJQUNBTTtNQUNBRDtNQUNBTDtJQUNBO0lBQ0FPO01BQ0FGO01BQ0FMO0lBQ0E7SUFDQVE7TUFDQUg7TUFDQUw7SUFDQTtJQUNBUztJQUNBQztNQUNBTDtNQUNBTDtJQUNBO0lBQ0FXO01BQ0FOO01BQ0FMO0lBQ0E7SUFDQVk7TUFDQVA7TUFDQUw7SUFDQTtJQUNBYTtNQUNBUjtNQUNBTDtJQUNBO0lBQ0FjO01BQ0FUO01BQ0FMO0lBQ0E7SUFDQWU7TUFDQVY7TUFDQUw7SUFDQTtJQUNBZ0I7TUFDQVg7TUFDQUw7SUFDQTtJQUNBaUI7TUFDQVo7TUFDQUw7SUFDQTtJQUNBa0I7TUFDQWI7TUFDQUw7SUFDQTtJQUNBbUI7TUFDQWQ7TUFDQUw7SUFDQTtJQUNBb0I7TUFDQWY7TUFDQUw7SUFDQTtJQUNBcUI7TUFDQWhCO01BQ0FMO1FBQ0E7VUFDQXNCO1VBQ0FDO1VBQ0FDO1FBQ0E7TUFDQTtJQUNBO0lBQ0FDO01BQ0FwQjtNQUNBTDtJQUNBO0VBQ0E7RUFDQTBCO0lBQ0E7TUFDQUM7TUFDQUM7TUFDQUM7TUFDQUM7TUFDQUM7TUFDQUM7TUFDQUM7TUFDQUM7TUFDQUM7SUFDQTtFQUNBO0VBQ0FDO0lBQ0E7SUFDQUM7TUFDQTtNQUNBO01BQ0E7UUFDQTtNQUNBO01BQ0E7SUFDQTtJQUVBQztNQUNBO01BQ0E7TUFDQTtNQUNBO01BQ0E7TUFDQTtJQUNBO0lBQ0E7SUFDQUM7TUFDQTtJQUNBO0lBRUE7SUFDQUM7TUFDQSx1QkFDQTtJQUVBO0lBQ0E7SUFDQUM7TUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO01BQ0E7SUFDQTtJQUNBQztNQUNBLGtDQUNBLG9CQUNBO01BQ0E7TUFDQTtRQUNBO1FBQ0Esb0NBQ0EsMkJBQ0E7TUFDQTtJQUNBO0lBQ0E7SUFDQUM7TUFDQSxtQkFDQSxnRUFDQSxLQUNBO01BQ0E7UUFDQTtRQUNBO01BQ0E7SUFDQTtFQUNBO0VBQ0FDO0lBQ0F6QztNQUNBO0lBQ0E7SUFDQUM7TUFDQTtJQUNBO0lBQ0FNO01BQUE7TUFDQTtRQUNBO1FBQ0E7TUFDQTtJQUNBO0VBQ0E7RUFDQW1DO0lBQUE7SUFDQTtJQUNBO0lBQ0E7TUFDQTtRQUNBO01BQ0E7SUFDQTtFQUNBO0VBQ0FDO0lBQUE7SUFDQTtNQUNBO01BQ0E7SUFDQTtFQUNBO0VBQ0FDO0lBQ0E7QUFDQTtBQUNBO0lBQ0FDO01BQ0E7UUFDQTtNQUNBO1FBQ0E7TUFDQTtRQUNBO01BQ0E7SUFDQTtJQUVBO0FBQ0E7QUFDQTtBQUNBO0lBQ0FDO01BQ0E7SUFDQTtJQUVBO0FBQ0E7QUFDQTtJQUNBQztNQUNBO01BQ0E7SUFDQTtJQUVBO0FBQ0E7QUFDQTtBQUNBO0lBQ0FDO01BQ0E7TUFDQTtNQUNBO1FBQ0E7VUFDQWhEO1FBQ0E7UUFDQTtVQUNBQTtRQUNBO01BQ0E7TUFDQTtNQUNBO01BQ0E7TUFDQTtNQUNBO01BQ0E7SUFDQTtJQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7SUFDQWlEO01BQUE7TUFDQTtRQUNBO01BQ0E7TUFDQTtJQUNBO0lBRUFDO01BQ0E7TUFDQTtJQUNBO0lBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtJQUNBQztNQUNBO01BQ0E7SUFDQTtJQUNBQztNQUNBO01BQ0E7TUFDQTtNQUNBO01BQ0E7TUFDQTtNQUNBO1FBQ0E7UUFDQTtVQUNBO1FBQ0E7TUFDQTtJQUNBO0lBRUE7QUFDQTtBQUNBO0FBQ0E7SUFDQUM7TUFDQTtNQUNBO0lBQ0E7SUFFQTtBQUNBO0FBQ0E7QUFDQTtJQUNBQztNQUNBO01BQ0E7TUFDQTtNQUNBO01BQ0E7TUFDQTtNQUNBO01BQ0E7SUFDQTtJQUVBO0FBQ0E7QUFDQTtJQUNBQztNQUFBO01BQ0E7UUFDQTtNQUNBO1FBQ0E7TUFDQTtRQUNBO01BQ0E7UUFDQTtNQUNBO1FBQ0E7TUFDQTtRQUNBO01BQ0E7UUFDQTtNQUNBO01BQ0E7SUFDQTtFQUNBO0FBQ0E7QUFBQSIsImZpbGUiOiI0OS5qcyIsInNvdXJjZXNDb250ZW50IjpbIjx0ZW1wbGF0ZT5cclxuXHQ8dmlld1xyXG5cdFx0Y2xhc3M9XCJ1bmktZWFzeWlucHV0XCJcclxuXHRcdDpjbGFzcz1cInsgJ3VuaS1lYXN5aW5wdXQtZXJyb3InOiBtc2cgfVwiXHJcblx0XHQ6c3R5bGU9XCJib3hTdHlsZVwiXHJcblx0PlxyXG5cdFx0PHZpZXdcclxuXHRcdFx0Y2xhc3M9XCJ1bmktZWFzeWlucHV0X19jb250ZW50XCJcclxuXHRcdFx0OmNsYXNzPVwiaW5wdXRDb250ZW50Q2xhc3NcIlxyXG5cdFx0XHQ6c3R5bGU9XCJpbnB1dENvbnRlbnRTdHlsZVwiXHJcblx0XHQ+XHJcblx0XHRcdDxzbG90IG5hbWU9XCJwcmVmaXhJY29uXCI+XHJcblx0XHRcdFx0PHVuaS1pY29uc1xyXG5cdFx0XHRcdFx0di1pZj1cInByZWZpeEljb25cIlxyXG5cdFx0XHRcdFx0Y2xhc3M9XCJjb250ZW50LWNsZWFyLWljb25cIlxyXG5cdFx0XHRcdFx0OnR5cGU9XCJwcmVmaXhJY29uXCJcclxuXHRcdFx0XHRcdGNvbG9yPVwiI2MwYzRjY1wiXHJcblx0XHRcdFx0XHRAY2xpY2s9XCJvbkNsaWNrSWNvbigncHJlZml4JylcIlxyXG5cdFx0XHRcdFx0c2l6ZT1cIjIyXCJcclxuXHRcdFx0XHQ+PC91bmktaWNvbnM+XHJcblx0XHRcdDwvc2xvdD5cclxuXHRcdFx0PHRleHRhcmVhXHJcblx0XHRcdFx0di1pZj1cInR5cGUgPT09ICd0ZXh0YXJlYSdcIlxyXG5cdFx0XHRcdGNsYXNzPVwidW5pLWVhc3lpbnB1dF9fY29udGVudC10ZXh0YXJlYVwiXHJcblx0XHRcdFx0OmNsYXNzPVwieyAnaW5wdXQtcGFkZGluZyc6IGlucHV0Qm9yZGVyIH1cIlxyXG5cdFx0XHRcdDpuYW1lPVwibmFtZVwiXHJcblx0XHRcdFx0OnZhbHVlPVwidmFsXCJcclxuXHRcdFx0XHQ6cGxhY2Vob2xkZXI9XCJwbGFjZWhvbGRlclwiXHJcblx0XHRcdFx0OnBsYWNlaG9sZGVyU3R5bGU9XCJwbGFjZWhvbGRlclN0eWxlXCJcclxuXHRcdFx0XHQ6ZGlzYWJsZWQ9XCJkaXNhYmxlZFwiXHJcblx0XHRcdFx0cGxhY2Vob2xkZXItY2xhc3M9XCJ1bmktZWFzeWlucHV0X19wbGFjZWhvbGRlci1jbGFzc1wiXHJcblx0XHRcdFx0Om1heGxlbmd0aD1cImlucHV0TWF4bGVuZ3RoXCJcclxuXHRcdFx0XHQ6Zm9jdXM9XCJmb2N1c2VkXCJcclxuXHRcdFx0XHQ6YXV0b0hlaWdodD1cImF1dG9IZWlnaHRcIlxyXG5cdFx0XHRcdEBpbnB1dD1cIm9uSW5wdXRcIlxyXG5cdFx0XHRcdEBibHVyPVwiX0JsdXJcIlxyXG5cdFx0XHRcdEBmb2N1cz1cIl9Gb2N1c1wiXHJcblx0XHRcdFx0QGNvbmZpcm09XCJvbkNvbmZpcm1cIlxyXG5cdFx0XHQ+PC90ZXh0YXJlYT5cclxuXHRcdFx0PGlucHV0XHJcblx0XHRcdFx0di1lbHNlXHJcblx0XHRcdFx0OnR5cGU9XCJ0eXBlID09PSAncGFzc3dvcmQnID8gJ3RleHQnIDogdHlwZVwiXHJcblx0XHRcdFx0Y2xhc3M9XCJ1bmktZWFzeWlucHV0X19jb250ZW50LWlucHV0XCJcclxuXHRcdFx0XHQ6c3R5bGU9XCJpbnB1dFN0eWxlXCJcclxuXHRcdFx0XHQ6bmFtZT1cIm5hbWVcIlxyXG5cdFx0XHRcdDp2YWx1ZT1cInZhbFwiXHJcblx0XHRcdFx0OnBhc3N3b3JkPVwiIXNob3dQYXNzd29yZCAmJiB0eXBlID09PSAncGFzc3dvcmQnXCJcclxuXHRcdFx0XHQ6cGxhY2Vob2xkZXI9XCJwbGFjZWhvbGRlclwiXHJcblx0XHRcdFx0OnBsYWNlaG9sZGVyU3R5bGU9XCJwbGFjZWhvbGRlclN0eWxlXCJcclxuXHRcdFx0XHRwbGFjZWhvbGRlci1jbGFzcz1cInVuaS1lYXN5aW5wdXRfX3BsYWNlaG9sZGVyLWNsYXNzXCJcclxuXHRcdFx0XHQ6ZGlzYWJsZWQ9XCJkaXNhYmxlZFwiXHJcblx0XHRcdFx0Om1heGxlbmd0aD1cImlucHV0TWF4bGVuZ3RoXCJcclxuXHRcdFx0XHQ6Zm9jdXM9XCJmb2N1c2VkXCJcclxuXHRcdFx0XHQ6Y29uZmlybVR5cGU9XCJjb25maXJtVHlwZVwiXHJcblx0XHRcdFx0QGZvY3VzPVwiX0ZvY3VzXCJcclxuXHRcdFx0XHRAYmx1cj1cIl9CbHVyXCJcclxuXHRcdFx0XHRAaW5wdXQ9XCJvbklucHV0XCJcclxuXHRcdFx0XHRAY29uZmlybT1cIm9uQ29uZmlybVwiXHJcblx0XHRcdC8+XHJcblx0XHRcdDx0ZW1wbGF0ZSB2LWlmPVwidHlwZSA9PT0gJ3Bhc3N3b3JkJyAmJiBwYXNzd29yZEljb25cIj5cclxuXHRcdFx0XHQ8IS0tIOW8gOWQr+WvhueggeaXtuaYvuekuuWwj+ecvOedmyAtLT5cclxuXHRcdFx0XHQ8dW5pLWljb25zXHJcblx0XHRcdFx0XHR2LWlmPVwiaXNWYWxcIlxyXG5cdFx0XHRcdFx0Y2xhc3M9XCJjb250ZW50LWNsZWFyLWljb25cIlxyXG5cdFx0XHRcdFx0OmNsYXNzPVwieyAnaXMtdGV4dGFyZWEtaWNvbic6IHR5cGUgPT09ICd0ZXh0YXJlYScgfVwiXHJcblx0XHRcdFx0XHQ6dHlwZT1cInNob3dQYXNzd29yZCA/ICdleWUtc2xhc2gtZmlsbGVkJyA6ICdleWUtZmlsbGVkJ1wiXHJcblx0XHRcdFx0XHQ6c2l6ZT1cIjIyXCJcclxuXHRcdFx0XHRcdDpjb2xvcj1cImZvY3VzU2hvdyA/IHByaW1hcnlDb2xvciA6ICcjYzBjNGNjJ1wiXHJcblx0XHRcdFx0XHRAY2xpY2s9XCJvbkV5ZXNcIlxyXG5cdFx0XHRcdD5cclxuXHRcdFx0XHQ8L3VuaS1pY29ucz5cclxuXHRcdFx0PC90ZW1wbGF0ZT5cclxuXHRcdFx0PHRlbXBsYXRlIHYtZWxzZS1pZj1cInN1ZmZpeEljb24gfHwgJHNsb3RzLnN1ZmZpeEljb25cIj5cclxuXHRcdFx0XHQ8c2xvdCBuYW1lPVwic3VmZml4SWNvblwiPlxyXG5cdFx0XHRcdFx0PHVuaS1pY29uc1xyXG5cdFx0XHRcdFx0XHR2LWlmPVwic3VmZml4SWNvblwiXHJcblx0XHRcdFx0XHRcdGNsYXNzPVwiY29udGVudC1jbGVhci1pY29uXCJcclxuXHRcdFx0XHRcdFx0OnR5cGU9XCJzdWZmaXhJY29uXCJcclxuXHRcdFx0XHRcdFx0Y29sb3I9XCIjYzBjNGNjXCJcclxuXHRcdFx0XHRcdFx0QGNsaWNrPVwib25DbGlja0ljb24oJ3N1ZmZpeCcpXCJcclxuXHRcdFx0XHRcdFx0c2l6ZT1cIjIyXCJcclxuXHRcdFx0XHRcdD48L3VuaS1pY29ucz5cclxuXHRcdFx0XHQ8L3Nsb3Q+XHJcblx0XHRcdDwvdGVtcGxhdGU+XHJcblx0XHRcdDx0ZW1wbGF0ZSB2LWVsc2U+XHJcblx0XHRcdFx0PHVuaS1pY29uc1xyXG5cdFx0XHRcdFx0di1pZj1cImNsZWFyYWJsZSAmJiBpc1ZhbCAmJiAhZGlzYWJsZWQgJiYgdHlwZSAhPT0gJ3RleHRhcmVhJ1wiXHJcblx0XHRcdFx0XHRjbGFzcz1cImNvbnRlbnQtY2xlYXItaWNvblwiXHJcblx0XHRcdFx0XHQ6Y2xhc3M9XCJ7ICdpcy10ZXh0YXJlYS1pY29uJzogdHlwZSA9PT0gJ3RleHRhcmVhJyB9XCJcclxuXHRcdFx0XHRcdHR5cGU9XCJjbGVhclwiXHJcblx0XHRcdFx0XHQ6c2l6ZT1cImNsZWFyU2l6ZVwiXHJcblx0XHRcdFx0XHQ6Y29sb3I9XCJtc2cgPyAnI2RkNTI0ZCcgOiBmb2N1c1Nob3cgPyBwcmltYXJ5Q29sb3IgOiAnI2MwYzRjYydcIlxyXG5cdFx0XHRcdFx0QGNsaWNrPVwib25DbGVhclwiXHJcblx0XHRcdFx0PjwvdW5pLWljb25zPlxyXG5cdFx0XHQ8L3RlbXBsYXRlPlxyXG5cdFx0XHQ8c2xvdCBuYW1lPVwicmlnaHRcIj48L3Nsb3Q+XHJcblx0XHQ8L3ZpZXc+XHJcblx0PC92aWV3PlxyXG48L3RlbXBsYXRlPlxyXG5cclxuPHNjcmlwdD5cclxuLyoqXHJcbiAqIEVhc3lpbnB1dCDovpPlhaXmoYZcclxuICogQGRlc2NyaXB0aW9uIOatpOe7hOS7tuWPr+S7peWunueOsOihqOWNleeahOi+k+WFpeS4juagoemqjO+8jOWMheaLrCBcInRleHRcIiDlkowgXCJ0ZXh0YXJlYVwiIOexu+Wei+OAglxyXG4gKiBAdHV0b3JpYWwgaHR0cHM6Ly9leHQuZGNsb3VkLm5ldC5jbi9wbHVnaW4/aWQ9MzQ1NVxyXG4gKiBAcHJvcGVydHkge1N0cmluZ31cdHZhbHVlXHTovpPlhaXlhoXlrrlcclxuICogQHByb3BlcnR5IHtTdHJpbmcgfVx0dHlwZVx06L6T5YWl5qGG55qE57G75Z6L77yI6buY6K6kdGV4dO+8iSBwYXNzd29yZC90ZXh0L3RleHRhcmVhLy4uXHJcbiAqIFx0QHZhbHVlIHRleHRcdFx0XHTmlofmnKzovpPlhaXplK7nm5hcclxuICogXHRAdmFsdWUgdGV4dGFyZWFcdOWkmuihjOaWh+acrOi+k+WFpemUruebmFxyXG4gKiBcdEB2YWx1ZSBwYXNzd29yZFx05a+G56CB6L6T5YWl6ZSu55uYXHJcbiAqIFx0QHZhbHVlIG51bWJlclx0XHTmlbDlrZfovpPlhaXplK7nm5jvvIzms6jmhI9pT1PkuIphcHAtdnVl5by55Ye655qE5pWw5a2X6ZSu55uY5bm26Z2eOeWuq+agvOaWueW8j1xyXG4gKiBcdEB2YWx1ZSBpZGNhcmRcdFx06Lqr5Lu96K+B6L6T5YWl6ZSu55uY77yM5L+h44CB5pSv5LuY5a6d44CB55m+5bqm44CBUVHlsI/nqIvluo9cclxuICogXHRAdmFsdWUgZGlnaXRcdFx05bim5bCP5pWw54K555qE5pWw5a2X6ZSu55uYXHTvvIxBcHDnmoRudnVl6aG16Z2i44CB5b6u5L+h44CB5pSv5LuY5a6d44CB55m+5bqm44CB5aS05p2h44CBUVHlsI/nqIvluo/mlK/mjIFcclxuICogQHByb3BlcnR5IHtCb29sZWFufVx0Y2xlYXJhYmxlXHTmmK/lkKbmmL7npLrlj7PkvqfmuIXnqbrlhoXlrrnnmoTlm77moIfmjqfku7bvvIzngrnlh7vlj6/muIXnqbrovpPlhaXmoYblhoXlrrnvvIjpu5jorqR0cnVl77yJXHJcbiAqIEBwcm9wZXJ0eSB7Qm9vbGVhbn1cdGF1dG9IZWlnaHRcdOaYr+WQpuiHquWKqOWinumrmOi+k+WFpeWMuuWfn++8jHR5cGXkuLp0ZXh0YXJlYeaXtuacieaViO+8iOm7mOiupHRydWXvvIlcclxuICogQHByb3BlcnR5IHtTdHJpbmcgfVx0cGxhY2Vob2xkZXJcdOi+k+WFpeahhueahOaPkOekuuaWh+Wtl1xyXG4gKiBAcHJvcGVydHkge1N0cmluZyB9XHRwbGFjZWhvbGRlclN0eWxlXHRwbGFjZWhvbGRlcueahOagt+W8jyjlhoXogZTmoLflvI/vvIzlrZfnrKbkuLIp77yM5aaCXCJjb2xvcjogI2RkZFwiXHJcbiAqIEBwcm9wZXJ0eSB7Qm9vbGVhbn1cdGZvY3VzXHTmmK/lkKboh6rliqjojrflvpfnhKbngrnvvIjpu5jorqRmYWxzZe+8iVxyXG4gKiBAcHJvcGVydHkge0Jvb2xlYW59XHRkaXNhYmxlZFx05piv5ZCm56aB55So77yI6buY6K6kZmFsc2XvvIlcclxuICogQHByb3BlcnR5IHtOdW1iZXIgfVx0bWF4bGVuZ3RoXHTmnIDlpKfovpPlhaXplb/luqbvvIzorr7nva7kuLogLTEg55qE5pe25YCZ5LiN6ZmQ5Yi25pyA5aSn6ZW/5bqm77yI6buY6K6kMTQw77yJXHJcbiAqIEBwcm9wZXJ0eSB7U3RyaW5nIH1cdGNvbmZpcm1UeXBlXHTorr7nva7plK7nm5jlj7PkuIvop5LmjInpkq7nmoTmloflrZfvvIzku4XlnKh0eXBlPVwidGV4dFwi5pe255Sf5pWI77yI6buY6K6kZG9uZe+8iVxyXG4gKiBAcHJvcGVydHkge051bWJlciB9XHRjbGVhclNpemVcdOa4hemZpOWbvuagh+eahOWkp+Wwj++8jOWNleS9jXB477yI6buY6K6kMTXvvIlcclxuICogQHByb3BlcnR5IHtTdHJpbmd9XHRwcmVmaXhJY29uXHTovpPlhaXmoYblpLTpg6jlm77moIdcclxuICogQHByb3BlcnR5IHtTdHJpbmd9XHRzdWZmaXhJY29uXHTovpPlhaXmoYblsL7pg6jlm77moIdcclxuICogQHByb3BlcnR5IHtTdHJpbmd9XHRwcmltYXJ5Q29sb3JcdOiuvue9ruS4u+mimOiJsu+8iOm7mOiupCMyOTc5ZmbvvIlcclxuICogQHByb3BlcnR5IHtCb29sZWFufVx0dHJpbVx05piv5ZCm6Ieq5Yqo5Y676Zmk5Lik56uv55qE56m65qC8XHJcbiAqIEB2YWx1ZSBib3RoXHTljrvpmaTkuKTnq6/nqbrmoLxcclxuICogQHZhbHVlIGxlZnRcdOWOu+mZpOW3puS+p+epuuagvFxyXG4gKiBAdmFsdWUgcmlnaHRcdOWOu+mZpOWPs+S+p+epuuagvFxyXG4gKiBAdmFsdWUgc3RhcnRcdOWOu+mZpOW3puS+p+epuuagvFxyXG4gKiBAdmFsdWUgZW5kXHRcdOWOu+mZpOWPs+S+p+epuuagvFxyXG4gKiBAdmFsdWUgYWxsXHRcdOWOu+mZpOWFqOmDqOepuuagvFxyXG4gKiBAdmFsdWUgbm9uZVx05LiN5Y676Zmk56m65qC8XHJcbiAqIEBwcm9wZXJ0eSB7Qm9vbGVhbn1cdGlucHV0Qm9yZGVyXHTmmK/lkKbmmL7npLppbnB1dOi+k+WFpeahhueahOi+ueahhu+8iOm7mOiupHRydWXvvIlcclxuICogQHByb3BlcnR5IHtCb29sZWFufVx0cGFzc3dvcmRJY29uXHR0eXBlPXBhc3N3b3Jk5pe25piv5ZCm5pi+56S65bCP55y8552b5Zu+5qCHXHJcbiAqIEBwcm9wZXJ0eSB7T2JqZWN0fVx0c3R5bGVzXHToh6rlrprkuYnpopzoibJcclxuICogQGV2ZW50IHtGdW5jdGlvbn1cdGlucHV0XHTovpPlhaXmoYblhoXlrrnlj5HnlJ/lj5jljJbml7bop6blj5FcclxuICogQGV2ZW50IHtGdW5jdGlvbn1cdGZvY3VzXHTovpPlhaXmoYbojrflvpfnhKbngrnml7bop6blj5FcclxuICogQGV2ZW50IHtGdW5jdGlvbn1cdGJsdXJcdOi+k+WFpeahhuWkseWOu+eEpueCueaXtuinpuWPkVxyXG4gKiBAZXZlbnQge0Z1bmN0aW9ufVx0Y29uZmlybVx054K55Ye75a6M5oiQ5oyJ6ZKu5pe26Kem5Y+RXHJcbiAqIEBldmVudCB7RnVuY3Rpb259XHRpY29uQ2xpY2tcdOeCueWHu+Wbvuagh+aXtuinpuWPkVxyXG4gKiBAc2xvdCBwcmVmaXhJY29uIOi+k+WFpeahhuWktOmDqOaPkuanvVxyXG4gKiBAc2xvdCBzdWZmaXhJY29uIOi+k+WFpeahhuWwvumDqOaPkuanvVxyXG4gKiBAZXhhbXBsZSA8dW5pLWVhc3lpbnB1dCB2LW1vZGVsPVwibW9iaWxlXCI+PC91bmktZWFzeWlucHV0PlxyXG4gKi9cclxuZnVuY3Rpb24gb2JqMnN0ckNsYXNzKG9iaikge1xyXG5cdGxldCBjbGFzc2VzcyA9IFwiXCI7XHJcblx0Zm9yIChsZXQga2V5IGluIG9iaikge1xyXG5cdFx0Y29uc3QgdmFsID0gb2JqW2tleV07XHJcblx0XHRpZiAodmFsKSB7XHJcblx0XHRcdGNsYXNzZXNzICs9IGAke2tleX0gYDtcclxuXHRcdH1cclxuXHR9XHJcblx0cmV0dXJuIGNsYXNzZXNzO1xyXG59XHJcblxyXG5mdW5jdGlvbiBvYmoyc3RyU3R5bGUob2JqKSB7XHJcblx0bGV0IHN0eWxlID0gXCJcIjtcclxuXHRmb3IgKGxldCBrZXkgaW4gb2JqKSB7XHJcblx0XHRjb25zdCB2YWwgPSBvYmpba2V5XTtcclxuXHRcdHN0eWxlICs9IGAke2tleX06JHt2YWx9O2A7XHJcblx0fVxyXG5cdHJldHVybiBzdHlsZTtcclxufVxyXG5leHBvcnQgZGVmYXVsdCB7XHJcblx0bmFtZTogXCJ1bmktZWFzeWlucHV0XCIsXHJcblx0ZW1pdHM6IFtcclxuXHRcdFwiY2xpY2tcIixcclxuXHRcdFwiaWNvbkNsaWNrXCIsXHJcblx0XHRcInVwZGF0ZTptb2RlbFZhbHVlXCIsXHJcblx0XHRcImlucHV0XCIsXHJcblx0XHRcImZvY3VzXCIsXHJcblx0XHRcImJsdXJcIixcclxuXHRcdFwiY29uZmlybVwiLFxyXG5cdFx0XCJjbGVhclwiLFxyXG5cdFx0XCJleWVzXCIsXHJcblx0XHRcImNoYW5nZVwiLFxyXG5cdF0sXHJcblx0bW9kZWw6IHtcclxuXHRcdHByb3A6IFwibW9kZWxWYWx1ZVwiLFxyXG5cdFx0ZXZlbnQ6IFwidXBkYXRlOm1vZGVsVmFsdWVcIixcclxuXHR9LFxyXG5cdG9wdGlvbnM6IHtcclxuXHRcdHZpcnR1YWxIb3N0OiB0cnVlLFxyXG5cdH0sXHJcblx0aW5qZWN0OiB7XHJcblx0XHRmb3JtOiB7XHJcblx0XHRcdGZyb206IFwidW5pRm9ybVwiLFxyXG5cdFx0XHRkZWZhdWx0OiBudWxsLFxyXG5cdFx0fSxcclxuXHRcdGZvcm1JdGVtOiB7XHJcblx0XHRcdGZyb206IFwidW5pRm9ybUl0ZW1cIixcclxuXHRcdFx0ZGVmYXVsdDogbnVsbCxcclxuXHRcdH0sXHJcblx0fSxcclxuXHRwcm9wczoge1xyXG5cdFx0bmFtZTogU3RyaW5nLFxyXG5cdFx0dmFsdWU6IFtOdW1iZXIsIFN0cmluZ10sXHJcblx0XHRtb2RlbFZhbHVlOiBbTnVtYmVyLCBTdHJpbmddLFxyXG5cdFx0dHlwZToge1xyXG5cdFx0XHR0eXBlOiBTdHJpbmcsXHJcblx0XHRcdGRlZmF1bHQ6IFwidGV4dFwiLFxyXG5cdFx0fSxcclxuXHRcdGNsZWFyYWJsZToge1xyXG5cdFx0XHR0eXBlOiBCb29sZWFuLFxyXG5cdFx0XHRkZWZhdWx0OiB0cnVlLFxyXG5cdFx0fSxcclxuXHRcdGF1dG9IZWlnaHQ6IHtcclxuXHRcdFx0dHlwZTogQm9vbGVhbixcclxuXHRcdFx0ZGVmYXVsdDogZmFsc2UsXHJcblx0XHR9LFxyXG5cdFx0cGxhY2Vob2xkZXI6IHtcclxuXHRcdFx0dHlwZTogU3RyaW5nLFxyXG5cdFx0XHRkZWZhdWx0OiBcIiBcIixcclxuXHRcdH0sXHJcblx0XHRwbGFjZWhvbGRlclN0eWxlOiBTdHJpbmcsXHJcblx0XHRmb2N1czoge1xyXG5cdFx0XHR0eXBlOiBCb29sZWFuLFxyXG5cdFx0XHRkZWZhdWx0OiBmYWxzZSxcclxuXHRcdH0sXHJcblx0XHRkaXNhYmxlZDoge1xyXG5cdFx0XHR0eXBlOiBCb29sZWFuLFxyXG5cdFx0XHRkZWZhdWx0OiBmYWxzZSxcclxuXHRcdH0sXHJcblx0XHRtYXhsZW5ndGg6IHtcclxuXHRcdFx0dHlwZTogW051bWJlciwgU3RyaW5nXSxcclxuXHRcdFx0ZGVmYXVsdDogMTQwLFxyXG5cdFx0fSxcclxuXHRcdGNvbmZpcm1UeXBlOiB7XHJcblx0XHRcdHR5cGU6IFN0cmluZyxcclxuXHRcdFx0ZGVmYXVsdDogXCJkb25lXCIsXHJcblx0XHR9LFxyXG5cdFx0Y2xlYXJTaXplOiB7XHJcblx0XHRcdHR5cGU6IFtOdW1iZXIsIFN0cmluZ10sXHJcblx0XHRcdGRlZmF1bHQ6IDI0LFxyXG5cdFx0fSxcclxuXHRcdGlucHV0Qm9yZGVyOiB7XHJcblx0XHRcdHR5cGU6IEJvb2xlYW4sXHJcblx0XHRcdGRlZmF1bHQ6IHRydWUsXHJcblx0XHR9LFxyXG5cdFx0cHJlZml4SWNvbjoge1xyXG5cdFx0XHR0eXBlOiBTdHJpbmcsXHJcblx0XHRcdGRlZmF1bHQ6IFwiXCIsXHJcblx0XHR9LFxyXG5cdFx0c3VmZml4SWNvbjoge1xyXG5cdFx0XHR0eXBlOiBTdHJpbmcsXHJcblx0XHRcdGRlZmF1bHQ6IFwiXCIsXHJcblx0XHR9LFxyXG5cdFx0dHJpbToge1xyXG5cdFx0XHR0eXBlOiBbQm9vbGVhbiwgU3RyaW5nXSxcclxuXHRcdFx0ZGVmYXVsdDogdHJ1ZSxcclxuXHRcdH0sXHJcblx0XHRwYXNzd29yZEljb246IHtcclxuXHRcdFx0dHlwZTogQm9vbGVhbixcclxuXHRcdFx0ZGVmYXVsdDogdHJ1ZSxcclxuXHRcdH0sXHJcblx0XHRwcmltYXJ5Q29sb3I6IHtcclxuXHRcdFx0dHlwZTogU3RyaW5nLFxyXG5cdFx0XHRkZWZhdWx0OiBcIiMyOTc5ZmZcIixcclxuXHRcdH0sXHJcblx0XHRzdHlsZXM6IHtcclxuXHRcdFx0dHlwZTogT2JqZWN0LFxyXG5cdFx0XHRkZWZhdWx0KCkge1xyXG5cdFx0XHRcdHJldHVybiB7XHJcblx0XHRcdFx0XHRjb2xvcjogXCIjMzMzXCIsXHJcblx0XHRcdFx0XHRkaXNhYmxlQ29sb3I6IFwiI0Y3RjZGNlwiLFxyXG5cdFx0XHRcdFx0Ym9yZGVyQ29sb3I6IFwiI2U1ZTVlNVwiLFxyXG5cdFx0XHRcdH07XHJcblx0XHRcdH0sXHJcblx0XHR9LFxyXG5cdFx0ZXJyb3JNZXNzYWdlOiB7XHJcblx0XHRcdHR5cGU6IFtTdHJpbmcsIEJvb2xlYW5dLFxyXG5cdFx0XHRkZWZhdWx0OiBcIlwiLFxyXG5cdFx0fSxcclxuXHR9LFxyXG5cdGRhdGEoKSB7XHJcblx0XHRyZXR1cm4ge1xyXG5cdFx0XHRmb2N1c2VkOiBmYWxzZSxcclxuXHRcdFx0dmFsOiBcIlwiLFxyXG5cdFx0XHRzaG93TXNnOiBcIlwiLFxyXG5cdFx0XHRib3JkZXI6IGZhbHNlLFxyXG5cdFx0XHRpc0ZpcnN0Qm9yZGVyOiBmYWxzZSxcclxuXHRcdFx0c2hvd0NsZWFySWNvbjogZmFsc2UsXHJcblx0XHRcdHNob3dQYXNzd29yZDogZmFsc2UsXHJcblx0XHRcdGZvY3VzU2hvdzogZmFsc2UsXHJcblx0XHRcdGxvY2FsTXNnOiBcIlwiLFxyXG5cdFx0fTtcclxuXHR9LFxyXG5cdGNvbXB1dGVkOiB7XHJcblx0XHQvLyDovpPlhaXmoYblhoXmmK/lkKbmnInlgLxcclxuXHRcdGlzVmFsKCkge1xyXG5cdFx0XHRjb25zdCB2YWwgPSB0aGlzLnZhbDtcclxuXHRcdFx0Ly8gZml4ZWQgYnkgbWVoYW90aWFuIOWkhOeQhuWAvOS4ujDnmoTmg4XlhrXvvIzlrZfnrKbkuLIw5LiN5Zyo5aSE55CG6IyD5Zu0XHJcblx0XHRcdGlmICh2YWwgfHwgdmFsID09PSAwKSB7XHJcblx0XHRcdFx0cmV0dXJuIHRydWU7XHJcblx0XHRcdH1cclxuXHRcdFx0cmV0dXJuIGZhbHNlO1xyXG5cdFx0fSxcclxuXHJcblx0XHRtc2coKSB7XHJcblx0XHRcdC8vIGNvbnNvbGUubG9nKCdjb21wdXRlZCcsIHRoaXMuZm9ybSwgdGhpcy5mb3JtSXRlbSk7XHJcblx0XHRcdC8vIGlmICh0aGlzLmZvcm0pIHtcclxuXHRcdFx0Ly8gXHRyZXR1cm4gdGhpcy5lcnJvck1lc3NhZ2UgfHwgdGhpcy5mb3JtSXRlbS5lcnJNc2c7XHJcblx0XHRcdC8vIH1cclxuXHRcdFx0Ly8gVE9ETyDlpITnkIblpLTmnaEgZm9ybUl0ZW0g5LitIGVyck1zZyDkuI3mm7TmlrDnmoTpl67pophcclxuXHRcdFx0cmV0dXJuIHRoaXMubG9jYWxNc2cgfHwgdGhpcy5lcnJvck1lc3NhZ2U7XHJcblx0XHR9LFxyXG5cdFx0Ly8g5Zug5Li6dW5pYXBw55qEaW5wdXTnu4Tku7bnmoRtYXhsZW5ndGjnu4Tku7blv4XpobvopoHmlbDlgLzvvIzov5nph4zovazkuLrmlbDlgLzvvIznlKjmiLflj6/ku6XkvKDlhaXlrZfnrKbkuLLmlbDlgLxcclxuXHRcdGlucHV0TWF4bGVuZ3RoKCkge1xyXG5cdFx0XHRyZXR1cm4gTnVtYmVyKHRoaXMubWF4bGVuZ3RoKTtcclxuXHRcdH0sXHJcblxyXG5cdFx0Ly8g5aSE55CG5aSW5bGC5qC35byP55qEc3R5bGVcclxuXHRcdGJveFN0eWxlKCkge1xyXG5cdFx0XHRyZXR1cm4gYGNvbG9yOiR7XHJcblx0XHRcdFx0dGhpcy5pbnB1dEJvcmRlciAmJiB0aGlzLm1zZyA/IFwiI2U0M2QzM1wiIDogdGhpcy5zdHlsZXMuY29sb3JcclxuXHRcdFx0fTtgO1xyXG5cdFx0fSxcclxuXHRcdC8vIGlucHV0IOWGheWuueeahOexu+WSjOagt+W8j+WkhOeQhlxyXG5cdFx0aW5wdXRDb250ZW50Q2xhc3MoKSB7XHJcblx0XHRcdHJldHVybiBvYmoyc3RyQ2xhc3Moe1xyXG5cdFx0XHRcdFwiaXMtaW5wdXQtYm9yZGVyXCI6IHRoaXMuaW5wdXRCb3JkZXIsXHJcblx0XHRcdFx0XCJpcy1pbnB1dC1lcnJvci1ib3JkZXJcIjogdGhpcy5pbnB1dEJvcmRlciAmJiB0aGlzLm1zZyxcclxuXHRcdFx0XHRcImlzLXRleHRhcmVhXCI6IHRoaXMudHlwZSA9PT0gXCJ0ZXh0YXJlYVwiLFxyXG5cdFx0XHRcdFwiaXMtZGlzYWJsZWRcIjogdGhpcy5kaXNhYmxlZCxcclxuXHRcdFx0fSk7XHJcblx0XHR9LFxyXG5cdFx0aW5wdXRDb250ZW50U3R5bGUoKSB7XHJcblx0XHRcdGNvbnN0IGZvY3VzQ29sb3IgPSB0aGlzLmZvY3VzU2hvd1xyXG5cdFx0XHRcdD8gdGhpcy5wcmltYXJ5Q29sb3JcclxuXHRcdFx0XHQ6IHRoaXMuc3R5bGVzLmJvcmRlckNvbG9yO1xyXG5cdFx0XHRjb25zdCBib3JkZXJDb2xvciA9IHRoaXMuaW5wdXRCb3JkZXIgJiYgdGhpcy5tc2cgPyBcIiNkZDUyNGRcIiA6IGZvY3VzQ29sb3I7XHJcblx0XHRcdHJldHVybiBvYmoyc3RyU3R5bGUoe1xyXG5cdFx0XHRcdFwiYm9yZGVyLWNvbG9yXCI6IGJvcmRlckNvbG9yIHx8IFwiI2U1ZTVlNVwiLFxyXG5cdFx0XHRcdFwiYmFja2dyb3VuZC1jb2xvclwiOiB0aGlzLmRpc2FibGVkXHJcblx0XHRcdFx0XHQ/IHRoaXMuc3R5bGVzLmRpc2FibGVDb2xvclxyXG5cdFx0XHRcdFx0OiB0aGlzLnN0eWxlcy5iYWNrZ3JvdW5kQ29sb3IsXHJcblx0XHRcdH0pO1xyXG5cdFx0fSxcclxuXHRcdC8vIGlucHV05Y+z5L6n5qC35byPXHJcblx0XHRpbnB1dFN0eWxlKCkge1xyXG5cdFx0XHRjb25zdCBwYWRkaW5nUmlnaHQgPVxyXG5cdFx0XHRcdHRoaXMudHlwZSA9PT0gXCJwYXNzd29yZFwiIHx8IHRoaXMuY2xlYXJhYmxlIHx8IHRoaXMucHJlZml4SWNvblxyXG5cdFx0XHRcdFx0PyBcIlwiXHJcblx0XHRcdFx0XHQ6IFwiMTBweFwiO1xyXG5cdFx0XHRyZXR1cm4gb2JqMnN0clN0eWxlKHtcclxuXHRcdFx0XHRcInBhZGRpbmctcmlnaHRcIjogcGFkZGluZ1JpZ2h0LFxyXG5cdFx0XHRcdFwicGFkZGluZy1sZWZ0XCI6IHRoaXMucHJlZml4SWNvbiA/IFwiXCIgOiBcIjEwcHhcIixcclxuXHRcdFx0fSk7XHJcblx0XHR9LFxyXG5cdH0sXHJcblx0d2F0Y2g6IHtcclxuXHRcdHZhbHVlKG5ld1ZhbCkge1xyXG5cdFx0XHR0aGlzLnZhbCA9IG5ld1ZhbDtcclxuXHRcdH0sXHJcblx0XHRtb2RlbFZhbHVlKG5ld1ZhbCkge1xyXG5cdFx0XHR0aGlzLnZhbCA9IG5ld1ZhbDtcclxuXHRcdH0sXHJcblx0XHRmb2N1cyhuZXdWYWwpIHtcclxuXHRcdFx0dGhpcy4kbmV4dFRpY2soKCkgPT4ge1xyXG5cdFx0XHRcdHRoaXMuZm9jdXNlZCA9IHRoaXMuZm9jdXM7XHJcblx0XHRcdFx0dGhpcy5mb2N1c1Nob3cgPSB0aGlzLmZvY3VzO1xyXG5cdFx0XHR9KTtcclxuXHRcdH0sXHJcblx0fSxcclxuXHRjcmVhdGVkKCkge1xyXG5cdFx0dGhpcy5pbml0KCk7XHJcblx0XHQvLyBUT0RPIOWkhOeQhuWktOadoXZ1ZTMgY29tcHV0ZWQg5LiN55uR5ZCsIGluamVjdCDmm7TmlLnnmoTpl67popjvvIhmb3JtSXRlbS5lcnJNc2fvvIlcclxuXHRcdGlmICh0aGlzLmZvcm0gJiYgdGhpcy5mb3JtSXRlbSkge1xyXG5cdFx0XHR0aGlzLiR3YXRjaChcImZvcm1JdGVtLmVyck1zZ1wiLCAobmV3VmFsKSA9PiB7XHJcblx0XHRcdFx0dGhpcy5sb2NhbE1zZyA9IG5ld1ZhbDtcclxuXHRcdFx0fSk7XHJcblx0XHR9XHJcblx0fSxcclxuXHRtb3VudGVkKCkge1xyXG5cdFx0dGhpcy4kbmV4dFRpY2soKCkgPT4ge1xyXG5cdFx0XHR0aGlzLmZvY3VzZWQgPSB0aGlzLmZvY3VzO1xyXG5cdFx0XHR0aGlzLmZvY3VzU2hvdyA9IHRoaXMuZm9jdXM7XHJcblx0XHR9KTtcclxuXHR9LFxyXG5cdG1ldGhvZHM6IHtcclxuXHRcdC8qKlxyXG5cdFx0ICog5Yid5aeL5YyW5Y+Y6YeP5YC8XHJcblx0XHQgKi9cclxuXHRcdGluaXQoKSB7XHJcblx0XHRcdGlmICh0aGlzLnZhbHVlIHx8IHRoaXMudmFsdWUgPT09IDApIHtcclxuXHRcdFx0XHR0aGlzLnZhbCA9IHRoaXMudmFsdWU7XHJcblx0XHRcdH0gZWxzZSBpZiAodGhpcy5tb2RlbFZhbHVlIHx8IHRoaXMubW9kZWxWYWx1ZSA9PT0gMCkge1xyXG5cdFx0XHRcdHRoaXMudmFsID0gdGhpcy5tb2RlbFZhbHVlO1xyXG5cdFx0XHR9IGVsc2Uge1xyXG5cdFx0XHRcdHRoaXMudmFsID0gbnVsbDtcclxuXHRcdFx0fVxyXG5cdFx0fSxcclxuXHJcblx0XHQvKipcclxuXHRcdCAqIOeCueWHu+Wbvuagh+aXtuinpuWPkVxyXG5cdFx0ICogQHBhcmFtIHtPYmplY3R9IHR5cGVcclxuXHRcdCAqL1xyXG5cdFx0b25DbGlja0ljb24odHlwZSkge1xyXG5cdFx0XHR0aGlzLiRlbWl0KFwiaWNvbkNsaWNrXCIsIHR5cGUpO1xyXG5cdFx0fSxcclxuXHJcblx0XHQvKipcclxuXHRcdCAqIOaYvuekuumakOiXj+WGheWuue+8jOWvhueggeahhuaXtueUn+aViFxyXG5cdFx0ICovXHJcblx0XHRvbkV5ZXMoKSB7XHJcblx0XHRcdHRoaXMuc2hvd1Bhc3N3b3JkID0gIXRoaXMuc2hvd1Bhc3N3b3JkO1xyXG5cdFx0XHR0aGlzLiRlbWl0KFwiZXllc1wiLCB0aGlzLnNob3dQYXNzd29yZCk7XHJcblx0XHR9LFxyXG5cclxuXHRcdC8qKlxyXG5cdFx0ICog6L6T5YWl5pe26Kem5Y+RXHJcblx0XHQgKiBAcGFyYW0ge09iamVjdH0gZXZlbnRcclxuXHRcdCAqL1xyXG5cdFx0b25JbnB1dChldmVudCkge1xyXG5cdFx0XHRsZXQgdmFsdWUgPSBldmVudC5kZXRhaWwudmFsdWU7XHJcblx0XHRcdC8vIOWIpOaWreaYr+WQpuWOu+mZpOepuuagvFxyXG5cdFx0XHRpZiAodGhpcy50cmltKSB7XHJcblx0XHRcdFx0aWYgKHR5cGVvZiB0aGlzLnRyaW0gPT09IFwiYm9vbGVhblwiICYmIHRoaXMudHJpbSkge1xyXG5cdFx0XHRcdFx0dmFsdWUgPSB0aGlzLnRyaW1TdHIodmFsdWUpO1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0XHRpZiAodHlwZW9mIHRoaXMudHJpbSA9PT0gXCJzdHJpbmdcIikge1xyXG5cdFx0XHRcdFx0dmFsdWUgPSB0aGlzLnRyaW1TdHIodmFsdWUsIHRoaXMudHJpbSk7XHJcblx0XHRcdFx0fVxyXG5cdFx0XHR9XHJcblx0XHRcdGlmICh0aGlzLmVyck1zZykgdGhpcy5lcnJNc2cgPSBcIlwiO1xyXG5cdFx0XHR0aGlzLnZhbCA9IHZhbHVlO1xyXG5cdFx0XHQvLyBUT0RPIOWFvOWuuSB2dWUyXHJcblx0XHRcdHRoaXMuJGVtaXQoXCJpbnB1dFwiLCB2YWx1ZSk7XHJcblx0XHRcdC8vIFRPRE/jgIDlhbzlrrnjgIB2dWUzXHJcblx0XHRcdHRoaXMuJGVtaXQoXCJ1cGRhdGU6bW9kZWxWYWx1ZVwiLCB2YWx1ZSk7XHJcblx0XHR9LFxyXG5cclxuXHRcdC8qKlxyXG5cdFx0ICog5aSW6YOo6LCD55So5pa55rOVXHJcblx0XHQgKiDojrflj5bnhKbngrnml7bop6blj5FcclxuXHRcdCAqIEBwYXJhbSB7T2JqZWN0fSBldmVudFxyXG5cdFx0ICovXHJcblx0XHRvbkZvY3VzKCkge1xyXG5cdFx0XHR0aGlzLiRuZXh0VGljaygoKSA9PiB7XHJcblx0XHRcdFx0dGhpcy5mb2N1c2VkID0gdHJ1ZTtcclxuXHRcdFx0fSk7XHJcblx0XHRcdHRoaXMuJGVtaXQoXCJmb2N1c1wiLCBudWxsKTtcclxuXHRcdH0sXHJcblxyXG5cdFx0X0ZvY3VzKGV2ZW50KSB7XHJcblx0XHRcdHRoaXMuZm9jdXNTaG93ID0gdHJ1ZTtcclxuXHRcdFx0dGhpcy4kZW1pdChcImZvY3VzXCIsIGV2ZW50KTtcclxuXHRcdH0sXHJcblxyXG5cdFx0LyoqXHJcblx0XHQgKiDlpJbpg6josIPnlKjmlrnms5VcclxuXHRcdCAqIOWkseWOu+eEpueCueaXtuinpuWPkVxyXG5cdFx0ICogQHBhcmFtIHtPYmplY3R9IGV2ZW50XHJcblx0XHQgKi9cclxuXHRcdG9uQmx1cigpIHtcclxuXHRcdFx0dGhpcy5mb2N1c2VkID0gZmFsc2U7XHJcblx0XHRcdHRoaXMuJGVtaXQoXCJmb2N1c1wiLCBudWxsKTtcclxuXHRcdH0sXHJcblx0XHRfQmx1cihldmVudCkge1xyXG5cdFx0XHRsZXQgdmFsdWUgPSBldmVudC5kZXRhaWwudmFsdWU7XHJcblx0XHRcdHRoaXMuZm9jdXNTaG93ID0gZmFsc2U7XHJcblx0XHRcdHRoaXMuJGVtaXQoXCJibHVyXCIsIGV2ZW50KTtcclxuXHRcdFx0Ly8g5qC55o2u57G75Z6L6L+U5Zue5YC877yM5ZyoZXZlbnTkuK3ojrflj5bnmoTlgLznkIborrrkuIrorrLpg73mmK9zdHJpbmdcclxuXHRcdFx0dGhpcy4kZW1pdChcImNoYW5nZVwiLCB0aGlzLnZhbCk7XHJcblx0XHRcdC8vIOWkseWOu+eEpueCueaXtuWPguS4juihqOWNleagoemqjFxyXG5cdFx0XHRpZiAodGhpcy5mb3JtICYmIHRoaXMuZm9ybUl0ZW0pIHtcclxuXHRcdFx0XHRjb25zdCB7IHZhbGlkYXRlVHJpZ2dlciB9ID0gdGhpcy5mb3JtO1xyXG5cdFx0XHRcdGlmICh2YWxpZGF0ZVRyaWdnZXIgPT09IFwiYmx1clwiKSB7XHJcblx0XHRcdFx0XHR0aGlzLmZvcm1JdGVtLm9uRmllbGRDaGFuZ2UoKTtcclxuXHRcdFx0XHR9XHJcblx0XHRcdH1cclxuXHRcdH0sXHJcblxyXG5cdFx0LyoqXHJcblx0XHQgKiDmjInkuIvplK7nm5jnmoTlj5HpgIHplK5cclxuXHRcdCAqIEBwYXJhbSB7T2JqZWN0fSBlXHJcblx0XHQgKi9cclxuXHRcdG9uQ29uZmlybShlKSB7XHJcblx0XHRcdHRoaXMuJGVtaXQoXCJjb25maXJtXCIsIHRoaXMudmFsKTtcclxuXHRcdFx0dGhpcy4kZW1pdChcImNoYW5nZVwiLCB0aGlzLnZhbCk7XHJcblx0XHR9LFxyXG5cclxuXHRcdC8qKlxyXG5cdFx0ICog5riF55CG5YaF5a65XHJcblx0XHQgKiBAcGFyYW0ge09iamVjdH0gZXZlbnRcclxuXHRcdCAqL1xyXG5cdFx0b25DbGVhcihldmVudCkge1xyXG5cdFx0XHR0aGlzLnZhbCA9IFwiXCI7XHJcblx0XHRcdC8vIFRPRE8g5YW85a65IHZ1ZTJcclxuXHRcdFx0dGhpcy4kZW1pdChcImlucHV0XCIsIFwiXCIpO1xyXG5cdFx0XHQvLyBUT0RPIOWFvOWuuSB2dWUyXHJcblx0XHRcdC8vIFRPRE/jgIDlhbzlrrnjgIB2dWUzXHJcblx0XHRcdHRoaXMuJGVtaXQoXCJ1cGRhdGU6bW9kZWxWYWx1ZVwiLCBcIlwiKTtcclxuXHRcdFx0Ly8g54K55Ye75Y+J5Y+36Kem5Y+RXHJcblx0XHRcdHRoaXMuJGVtaXQoXCJjbGVhclwiKTtcclxuXHRcdH0sXHJcblxyXG5cdFx0LyoqXHJcblx0XHQgKiDljrvpmaTnqbrmoLxcclxuXHRcdCAqL1xyXG5cdFx0dHJpbVN0cihzdHIsIHBvcyA9IFwiYm90aFwiKSB7XHJcblx0XHRcdGlmIChwb3MgPT09IFwiYm90aFwiKSB7XHJcblx0XHRcdFx0cmV0dXJuIHN0ci50cmltKCk7XHJcblx0XHRcdH0gZWxzZSBpZiAocG9zID09PSBcImxlZnRcIikge1xyXG5cdFx0XHRcdHJldHVybiBzdHIudHJpbUxlZnQoKTtcclxuXHRcdFx0fSBlbHNlIGlmIChwb3MgPT09IFwicmlnaHRcIikge1xyXG5cdFx0XHRcdHJldHVybiBzdHIudHJpbVJpZ2h0KCk7XHJcblx0XHRcdH0gZWxzZSBpZiAocG9zID09PSBcInN0YXJ0XCIpIHtcclxuXHRcdFx0XHRyZXR1cm4gc3RyLnRyaW1TdGFydCgpO1xyXG5cdFx0XHR9IGVsc2UgaWYgKHBvcyA9PT0gXCJlbmRcIikge1xyXG5cdFx0XHRcdHJldHVybiBzdHIudHJpbUVuZCgpO1xyXG5cdFx0XHR9IGVsc2UgaWYgKHBvcyA9PT0gXCJhbGxcIikge1xyXG5cdFx0XHRcdHJldHVybiBzdHIucmVwbGFjZSgvXFxzKy9nLCBcIlwiKTtcclxuXHRcdFx0fSBlbHNlIGlmIChwb3MgPT09IFwibm9uZVwiKSB7XHJcblx0XHRcdFx0cmV0dXJuIHN0cjtcclxuXHRcdFx0fVxyXG5cdFx0XHRyZXR1cm4gc3RyO1xyXG5cdFx0fSxcclxuXHR9LFxyXG59O1xyXG48L3NjcmlwdD5cclxuXHJcbjxzdHlsZSBsYW5nPVwic2Nzc1wiPlxyXG4kdW5pLWVycm9yOiAjZTQzZDMzO1xyXG4kdW5pLWJvcmRlci0xOiAjZGNkZmU2ICFkZWZhdWx0O1xyXG5cclxuLnVuaS1lYXN5aW5wdXQge1xyXG5cdC8qICNpZm5kZWYgQVBQLU5WVUUgKi9cclxuXHR3aWR0aDogMTAwJTtcclxuXHQvKiAjZW5kaWYgKi9cclxuXHRmbGV4OiAxO1xyXG5cdHBvc2l0aW9uOiByZWxhdGl2ZTtcclxuXHR0ZXh0LWFsaWduOiBsZWZ0O1xyXG5cdGNvbG9yOiAjMzMzO1xyXG5cdGZvbnQtc2l6ZTogMTRweDtcclxufVxyXG5cclxuLnVuaS1lYXN5aW5wdXRfX2NvbnRlbnQge1xyXG5cdGZsZXg6IDE7XHJcblx0LyogI2lmbmRlZiBBUFAtTlZVRSAqL1xyXG5cdHdpZHRoOiAxMDAlO1xyXG5cdGRpc3BsYXk6IGZsZXg7XHJcblx0Ym94LXNpemluZzogYm9yZGVyLWJveDtcclxuXHQvLyBtaW4taGVpZ2h0OiAzNnB4O1xyXG5cdC8qICNlbmRpZiAqL1xyXG5cdGZsZXgtZGlyZWN0aW9uOiByb3c7XHJcblx0YWxpZ24taXRlbXM6IGNlbnRlcjtcclxuXHQvLyDlpITnkIZib3JkZXLliqjnlLvliJrlvIDlp4vmmL7npLrpu5HoibLnmoTpl67pophcclxuXHRib3JkZXItY29sb3I6ICNmZmY7XHJcblx0dHJhbnNpdGlvbi1wcm9wZXJ0eTogYm9yZGVyLWNvbG9yO1xyXG5cdHRyYW5zaXRpb24tZHVyYXRpb246IDAuM3M7XHJcbn1cclxuXHJcbi51bmktZWFzeWlucHV0X19jb250ZW50LWlucHV0IHtcclxuXHQvKiAjaWZuZGVmIEFQUC1OVlVFICovXHJcblx0d2lkdGg6IGF1dG87XHJcblx0LyogI2VuZGlmICovXHJcblx0cG9zaXRpb246IHJlbGF0aXZlO1xyXG5cdG92ZXJmbG93OiBoaWRkZW47XHJcblx0ZmxleDogMTtcclxuXHRsaW5lLWhlaWdodDogMTtcclxuXHRmb250LXNpemU6IDE0cHg7XHJcblx0aGVpZ2h0OiAzNXB4O1xyXG5cdC8vIG1pbi1oZWlnaHQ6IDM2cHg7XHJcbn1cclxuXHJcbi51bmktZWFzeWlucHV0X19wbGFjZWhvbGRlci1jbGFzcyB7XHJcblx0Y29sb3I6ICM5OTk7XHJcblx0Zm9udC1zaXplOiAxMnB4O1xyXG5cdC8vIGZvbnQtd2VpZ2h0OiAyMDA7XHJcbn1cclxuXHJcbi5pcy10ZXh0YXJlYSB7XHJcblx0YWxpZ24taXRlbXM6IGZsZXgtc3RhcnQ7XHJcbn1cclxuXHJcbi5pcy10ZXh0YXJlYS1pY29uIHtcclxuXHRtYXJnaW4tdG9wOiA1cHg7XHJcbn1cclxuXHJcbi51bmktZWFzeWlucHV0X19jb250ZW50LXRleHRhcmVhIHtcclxuXHRwb3NpdGlvbjogcmVsYXRpdmU7XHJcblx0b3ZlcmZsb3c6IGhpZGRlbjtcclxuXHRmbGV4OiAxO1xyXG5cdGxpbmUtaGVpZ2h0OiAxLjU7XHJcblx0Zm9udC1zaXplOiAxNHB4O1xyXG5cdG1hcmdpbjogNnB4O1xyXG5cdG1hcmdpbi1sZWZ0OiAwO1xyXG5cdGhlaWdodDogODBweDtcclxuXHRtaW4taGVpZ2h0OiA4MHB4O1xyXG5cdC8qICNpZm5kZWYgQVBQLU5WVUUgKi9cclxuXHRtaW4taGVpZ2h0OiA4MHB4O1xyXG5cdHdpZHRoOiBhdXRvO1xyXG5cdC8qICNlbmRpZiAqL1xyXG59XHJcblxyXG4uaW5wdXQtcGFkZGluZyB7XHJcblx0cGFkZGluZy1sZWZ0OiAxMHB4O1xyXG59XHJcblxyXG4uY29udGVudC1jbGVhci1pY29uIHtcclxuXHRwYWRkaW5nOiAwIDVweDtcclxufVxyXG5cclxuLmxhYmVsLWljb24ge1xyXG5cdG1hcmdpbi1yaWdodDogNXB4O1xyXG5cdG1hcmdpbi10b3A6IC0xcHg7XHJcbn1cclxuXHJcbi8vIOaYvuekuui+ueahhlxyXG4uaXMtaW5wdXQtYm9yZGVyIHtcclxuXHQvKiAjaWZuZGVmIEFQUC1OVlVFICovXHJcblx0ZGlzcGxheTogZmxleDtcclxuXHRib3gtc2l6aW5nOiBib3JkZXItYm94O1xyXG5cdC8qICNlbmRpZiAqL1xyXG5cdGZsZXgtZGlyZWN0aW9uOiByb3c7XHJcblx0YWxpZ24taXRlbXM6IGNlbnRlcjtcclxuXHRib3JkZXI6IDFweCBzb2xpZCAkdW5pLWJvcmRlci0xO1xyXG5cdGJvcmRlci1yYWRpdXM6IDRweDtcclxuXHQvKiAjaWZkZWYgTVAtQUxJUEFZICovXHJcblx0b3ZlcmZsb3c6IGhpZGRlbjtcclxuXHQvKiAjZW5kaWYgKi9cclxufVxyXG5cclxuLnVuaS1lcnJvci1tZXNzYWdlIHtcclxuXHRwb3NpdGlvbjogYWJzb2x1dGU7XHJcblx0Ym90dG9tOiAtMTdweDtcclxuXHRsZWZ0OiAwO1xyXG5cdGxpbmUtaGVpZ2h0OiAxMnB4O1xyXG5cdGNvbG9yOiAkdW5pLWVycm9yO1xyXG5cdGZvbnQtc2l6ZTogMTJweDtcclxuXHR0ZXh0LWFsaWduOiBsZWZ0O1xyXG59XHJcblxyXG4udW5pLWVycm9yLW1zZy0tYm9lZGVyIHtcclxuXHRwb3NpdGlvbjogcmVsYXRpdmU7XHJcblx0Ym90dG9tOiAwO1xyXG5cdGxpbmUtaGVpZ2h0OiAyMnB4O1xyXG59XHJcblxyXG4uaXMtaW5wdXQtZXJyb3ItYm9yZGVyIHtcclxuXHRib3JkZXItY29sb3I6ICR1bmktZXJyb3I7XHJcblxyXG5cdC51bmktZWFzeWlucHV0X19wbGFjZWhvbGRlci1jbGFzcyB7XHJcblx0XHRjb2xvcjogbWl4KCNmZmYsICR1bmktZXJyb3IsIDUwJSk7XHJcblx0fVxyXG59XHJcblxyXG4udW5pLWVhc3lpbnB1dC0tYm9yZGVyIHtcclxuXHRtYXJnaW4tYm90dG9tOiAwO1xyXG5cdHBhZGRpbmc6IDEwcHggMTVweDtcclxuXHQvLyBwYWRkaW5nLWJvdHRvbTogMDtcclxuXHRib3JkZXItdG9wOiAxcHggI2VlZSBzb2xpZDtcclxufVxyXG5cclxuLnVuaS1lYXN5aW5wdXQtZXJyb3Ige1xyXG5cdHBhZGRpbmctYm90dG9tOiAwO1xyXG59XHJcblxyXG4uaXMtZmlyc3QtYm9yZGVyIHtcclxuXHQvKiAjaWZuZGVmIEFQUC1OVlVFICovXHJcblx0Ym9yZGVyOiBub25lO1xyXG5cdC8qICNlbmRpZiAqL1xyXG5cdC8qICNpZmRlZiBBUFAtTlZVRSAqL1xyXG5cdGJvcmRlci13aWR0aDogMDtcclxuXHQvKiAjZW5kaWYgKi9cclxufVxyXG5cclxuLmlzLWRpc2FibGVkIHtcclxuXHRiYWNrZ3JvdW5kLWNvbG9yOiAjZjdmNmY2O1xyXG5cdGNvbG9yOiAjZDVkNWQ1O1xyXG5cclxuXHQudW5pLWVhc3lpbnB1dF9fcGxhY2Vob2xkZXItY2xhc3Mge1xyXG5cdFx0Y29sb3I6ICNkNWQ1ZDU7XHJcblx0XHRmb250LXNpemU6IDEycHg7XHJcblx0fVxyXG59XHJcbjwvc3R5bGU+XHJcbiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///49\n");
- /***/ }),
- /* 50 */
- /*!************************************************************************************************!*\
- !*** D:/Work2/Orienteering/TrackOffical/pages/nfc/nfc.vue?vue&type=script&lang=js&mpType=page ***!
- \************************************************************************************************/
- /*! no static exports found */
- /***/ (function(module, __webpack_exports__, __webpack_require__) {
- "use strict";
- eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_7_1_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_using_components_js_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_nfc_vue_vue_type_script_lang_js_mpType_page__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../../../Program Files/HBuilderX/plugins/uniapp-cli/node_modules/babel-loader/lib!../../../../../Program Files/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--7-1!../../../../../Program Files/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/using-components.js!../../../../../Program Files/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib??vue-loader-options!./nfc.vue?vue&type=script&lang=js&mpType=page */ 51);\n/* harmony import */ var _Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_7_1_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_using_components_js_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_nfc_vue_vue_type_script_lang_js_mpType_page__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_7_1_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_using_components_js_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_nfc_vue_vue_type_script_lang_js_mpType_page__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_7_1_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_using_components_js_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_nfc_vue_vue_type_script_lang_js_mpType_page__WEBPACK_IMPORTED_MODULE_0__) if([\"default\"].indexOf(__WEBPACK_IMPORT_KEY__) < 0) (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_7_1_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_using_components_js_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_nfc_vue_vue_type_script_lang_js_mpType_page__WEBPACK_IMPORTED_MODULE_0__[key]; }) }(__WEBPACK_IMPORT_KEY__));\n /* harmony default export */ __webpack_exports__[\"default\"] = (_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_7_1_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_using_components_js_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_nfc_vue_vue_type_script_lang_js_mpType_page__WEBPACK_IMPORTED_MODULE_0___default.a); //# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbbnVsbF0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQThtQixDQUFnQiw0bkJBQUcsRUFBQyIsImZpbGUiOiI1MC5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBtb2QgZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vUHJvZ3JhbSBGaWxlcy9IQnVpbGRlclgvcGx1Z2lucy91bmlhcHAtY2xpL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzIS4uLy4uLy4uLy4uLy4uL1Byb2dyYW0gRmlsZXMvSEJ1aWxkZXJYL3BsdWdpbnMvdW5pYXBwLWNsaS9ub2RlX21vZHVsZXMvQGRjbG91ZGlvL3Z1ZS1jbGktcGx1Z2luLXVuaS9wYWNrYWdlcy93ZWJwYWNrLXByZXByb2Nlc3MtbG9hZGVyL2luZGV4LmpzPz9yZWYtLTctMSEuLi8uLi8uLi8uLi8uLi9Qcm9ncmFtIEZpbGVzL0hCdWlsZGVyWC9wbHVnaW5zL3VuaWFwcC1jbGkvbm9kZV9tb2R1bGVzL0BkY2xvdWRpby92dWUtY2xpLXBsdWdpbi11bmkvcGFja2FnZXMvd2VicGFjay11bmktYXBwLWxvYWRlci91c2luZy1jb21wb25lbnRzLmpzIS4uLy4uLy4uLy4uLy4uL1Byb2dyYW0gRmlsZXMvSEJ1aWxkZXJYL3BsdWdpbnMvdW5pYXBwLWNsaS9ub2RlX21vZHVsZXMvQGRjbG91ZGlvL3Z1ZS1jbGktcGx1Z2luLXVuaS9wYWNrYWdlcy92dWUtbG9hZGVyL2xpYi9pbmRleC5qcz8/dnVlLWxvYWRlci1vcHRpb25zIS4vbmZjLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz1qcyZtcFR5cGU9cGFnZVwiOyBleHBvcnQgZGVmYXVsdCBtb2Q7IGV4cG9ydCAqIGZyb20gXCItIS4uLy4uLy4uLy4uLy4uL1Byb2dyYW0gRmlsZXMvSEJ1aWxkZXJYL3BsdWdpbnMvdW5pYXBwLWNsaS9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcyEuLi8uLi8uLi8uLi8uLi9Qcm9ncmFtIEZpbGVzL0hCdWlsZGVyWC9wbHVnaW5zL3VuaWFwcC1jbGkvbm9kZV9tb2R1bGVzL0BkY2xvdWRpby92dWUtY2xpLXBsdWdpbi11bmkvcGFja2FnZXMvd2VicGFjay1wcmVwcm9jZXNzLWxvYWRlci9pbmRleC5qcz8/cmVmLS03LTEhLi4vLi4vLi4vLi4vLi4vUHJvZ3JhbSBGaWxlcy9IQnVpbGRlclgvcGx1Z2lucy91bmlhcHAtY2xpL25vZGVfbW9kdWxlcy9AZGNsb3VkaW8vdnVlLWNsaS1wbHVnaW4tdW5pL3BhY2thZ2VzL3dlYnBhY2stdW5pLWFwcC1sb2FkZXIvdXNpbmctY29tcG9uZW50cy5qcyEuLi8uLi8uLi8uLi8uLi9Qcm9ncmFtIEZpbGVzL0hCdWlsZGVyWC9wbHVnaW5zL3VuaWFwcC1jbGkvbm9kZV9tb2R1bGVzL0BkY2xvdWRpby92dWUtY2xpLXBsdWdpbi11bmkvcGFja2FnZXMvdnVlLWxvYWRlci9saWIvaW5kZXguanM/P3Z1ZS1sb2FkZXItb3B0aW9ucyEuL25mYy52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9anMmbXBUeXBlPXBhZ2VcIiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///50\n");
- /***/ }),
- /* 51 */
- /*!*****************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
- !*** ./node_modules/babel-loader/lib!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--7-1!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/using-components.js!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib??vue-loader-options!D:/Work2/Orienteering/TrackOffical/pages/nfc/nfc.vue?vue&type=script&lang=js&mpType=page ***!
- \*****************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/
- /*! no static exports found */
- /***/ (function(module, exports, __webpack_require__) {
- "use strict";
- eval("/* WEBPACK VAR INJECTION */(function(__f__) {\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n// import nfc from '../../utils/ouu-nfc.js'\nvar _default = {\n data: function data() {\n return {\n nfcWriteData: 'http://www.beswell.com'\n };\n },\n mounted: function mounted() {\n __f__(\"log\", '[nfc] mounted', \" at pages/nfc/nfc.vue:28\");\n // nfc.listenNFCStatus();\n },\n onLoad: function onLoad() {\n __f__(\"log\", '[nfc] onLoad', \" at pages/nfc/nfc.vue:32\");\n this.$nfc.inputChanage(this.nfcWriteData);\n },\n onShow: function onShow() {\n __f__(\"log\", '[nfc] onShow', \" at pages/nfc/nfc.vue:36\");\n uni.$off('NfcRead');\n uni.$on('NfcRead', this.onNfcRead);\n },\n onHide: function onHide() {\n __f__(\"log\", '[nfc] onHide', \" at pages/nfc/nfc.vue:41\");\n },\n beforeDestroy: function beforeDestroy() {\n __f__(\"log\", '[nfc] beforeDestroy', \" at pages/nfc/nfc.vue:44\");\n uni.$off('NfcRead');\n },\n methods: {\n input: function input(data) {\n // console.log('input, data: ' + JSON.stringify(data))\n this.$nfc.inputChanage(data);\n },\n onNfcRead: function onNfcRead(data) {\n __f__(\"log\", '监听到事件来自 nfcRead, data: ' + JSON.stringify(data), \" at pages/nfc/nfc.vue:53\");\n // console.log(data)\n uni.showToast({\n title: \"[\".concat(data.id, \"] '\").concat(data.data, \"'\"),\n icon: 'none',\n duration: 2000\n });\n },\n writeData: function writeData() {\n this.$nfc.writeData();\n },\n readData: function readData() {\n this.$nfc.readData();\n },\n setPassword: function setPassword() {\n this.$nfc.setPwdData();\n },\n delPassword: function delPassword() {\n this.$nfc.delPwdData();\n },\n getNfcState: function getNfcState() {\n this.$nfc.getNfcState();\n },\n writeAndLock: function writeAndLock() {\n this.$nfc.writeAndLock();\n }\n }\n};\nexports.default = _default;\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./node_modules/@dcloudio/vue-cli-plugin-uni/lib/format-log.js */ 34)[\"default\"]))//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInVuaS1hcHA6Ly8vcGFnZXMvbmZjL25mYy52dWUiXSwibmFtZXMiOlsiZGF0YSIsIm5mY1dyaXRlRGF0YSIsIm1vdW50ZWQiLCJvbkxvYWQiLCJvblNob3ciLCJ1bmkiLCJvbkhpZGUiLCJiZWZvcmVEZXN0cm95IiwibWV0aG9kcyIsImlucHV0Iiwib25OZmNSZWFkIiwidGl0bGUiLCJpY29uIiwiZHVyYXRpb24iLCJ3cml0ZURhdGEiLCJyZWFkRGF0YSIsInNldFBhc3N3b3JkIiwiZGVsUGFzc3dvcmQiLCJnZXROZmNTdGF0ZSIsIndyaXRlQW5kTG9jayJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBbUJBO0FBQUEsZUFDQTtFQUNBQTtJQUNBO01BQ0FDO0lBQ0E7RUFDQTtFQUNBQztJQUNBO0lBQ0E7RUFDQTtFQUNBQztJQUNBO0lBQ0E7RUFDQTtFQUNBQztJQUNBO0lBQ0FDO0lBQ0FBO0VBQ0E7RUFDQUM7SUFDQTtFQUNBO0VBQ0FDO0lBQ0E7SUFDQUY7RUFDQTtFQUNBRztJQUNBQztNQUNBO01BQ0E7SUFDQTtJQUNBQztNQUNBO01BQ0E7TUFDQUw7UUFDQU07UUFDQUM7UUFDQUM7TUFDQTtJQUNBO0lBQ0FDO01BQ0E7SUFDQTtJQUNBQztNQUNBO0lBQ0E7SUFDQUM7TUFDQTtJQUNBO0lBQ0FDO01BQ0E7SUFDQTtJQUNBQztNQUNBO0lBQ0E7SUFDQUM7TUFDQTtJQUNBO0VBQ0E7QUFDQTtBQUFBLDJCIiwiZmlsZSI6IjUxLmpzIiwic291cmNlc0NvbnRlbnQiOlsiPHRlbXBsYXRlPlxyXG5cdDx2aWV3IGNsYXNzPVwiY29udGFpbmVyXCI+XHJcblx0XHQ8dW5pLWVhc3lpbnB1dCB2LW1vZGVsPVwibmZjV3JpdGVEYXRhXCIgcGxhY2Vob2xkZXI9XCLor7fovpPlhaXopoHlhpnlhaVORkPnmoTmlbDmja5cIiBAaW5wdXQ9XCJpbnB1dFwiIC8+XHJcblx0XHQ8dmlldyBjbGFzcz1cImJ0bi1ib3hcIj5cclxuXHRcdFx0PGJ1dHRvbiBjbGFzcz1cImJ0blwiIHR5cGU9XCJwcmltYXJ5XCIgQGNsaWNrPVwicmVhZERhdGEoKVwiPuivu+WPlk5GQzwvYnV0dG9uPlxyXG5cdFx0XHQ8YnV0dG9uIGNsYXNzPVwiYnRuXCIgdHlwZT1cInByaW1hcnlcIiBAY2xpY2s9XCJ3cml0ZURhdGEoKVwiPuWGmeWFpU5GQzwvYnV0dG9uPlxyXG5cdFx0PC92aWV3PlxyXG5cdFx0PHZpZXcgY2xhc3M9XCJidG4tYm94XCI+XHJcblx0XHRcdDxidXR0b24gY2xhc3M9XCJidG5cIiB0eXBlPVwicHJpbWFyeVwiIEBjbGljaz1cImdldE5mY1N0YXRlKClcIj5ORkPnirbmgIE8L2J1dHRvbj5cclxuXHRcdFx0PGJ1dHRvbiBjbGFzcz1cImJ0blwiIHR5cGU9XCJ3YXJuXCIgQGNsaWNrPVwid3JpdGVBbmRMb2NrKClcIj7lhpnlhaXlubbplIHlrpo8L2J1dHRvbj5cclxuXHRcdDwvdmlldz5cclxuXHRcdDx2aWV3IGNsYXNzPVwiYnRuLWJveFwiPlxyXG5cdFx0XHQ8YnV0dG9uIGNsYXNzPVwiYnRuXCIgdHlwZT1cIndhcm5cIiBAY2xpY2s9XCJzZXRQYXNzd29yZCgpXCI+6K6+572u5a+G56CBPC9idXR0b24+XHJcblx0XHRcdDxidXR0b24gY2xhc3M9XCJidG5cIiB0eXBlPVwid2FyblwiIEBjbGljaz1cImRlbFBhc3N3b3JkKClcIj7muIXpmaTlr4bnoIE8L2J1dHRvbj5cclxuXHRcdDwvdmlldz5cclxuXHQ8L3ZpZXc+XHJcbjwvdGVtcGxhdGU+XHJcblxyXG48c2NyaXB0PlxyXG5cdC8vIGltcG9ydCBuZmMgZnJvbSAnLi4vLi4vdXRpbHMvb3V1LW5mYy5qcydcclxuXHRleHBvcnQgZGVmYXVsdCB7XHJcblx0XHRkYXRhKCkge1xyXG5cdFx0XHRyZXR1cm4ge1xyXG5cdFx0XHRcdG5mY1dyaXRlRGF0YTogJ2h0dHA6Ly93d3cuYmVzd2VsbC5jb20nXHJcblx0XHRcdH1cclxuXHRcdH0sXHJcblx0XHRtb3VudGVkKCkge1xyXG5cdFx0XHRjb25zb2xlLmxvZygnW25mY10gbW91bnRlZCcpXHJcblx0XHRcdC8vIG5mYy5saXN0ZW5ORkNTdGF0dXMoKTtcclxuXHRcdH0sXHJcblx0XHRvbkxvYWQoKSB7XHJcblx0XHRcdGNvbnNvbGUubG9nKCdbbmZjXSBvbkxvYWQnKVxyXG5cdFx0XHR0aGlzLiRuZmMuaW5wdXRDaGFuYWdlKHRoaXMubmZjV3JpdGVEYXRhKVxyXG5cdFx0fSxcclxuXHRcdG9uU2hvdygpIHtcclxuXHRcdFx0Y29uc29sZS5sb2coJ1tuZmNdIG9uU2hvdycpXHJcblx0XHRcdHVuaS4kb2ZmKCdOZmNSZWFkJylcclxuXHRcdFx0dW5pLiRvbignTmZjUmVhZCcsIHRoaXMub25OZmNSZWFkKVxyXG5cdFx0fSxcclxuXHRcdG9uSGlkZSgpIHtcclxuXHRcdFx0Y29uc29sZS5sb2coJ1tuZmNdIG9uSGlkZScpXHJcblx0XHR9LFxyXG5cdFx0YmVmb3JlRGVzdHJveSgpIHtcclxuXHRcdFx0Y29uc29sZS5sb2coJ1tuZmNdIGJlZm9yZURlc3Ryb3knKVxyXG5cdFx0XHR1bmkuJG9mZignTmZjUmVhZCcpXHJcblx0XHR9LFxyXG5cdFx0bWV0aG9kczoge1xyXG5cdFx0XHRpbnB1dChkYXRhKSB7XHJcblx0XHRcdFx0Ly8gY29uc29sZS5sb2coJ2lucHV0LCBkYXRhOiAnICsgSlNPTi5zdHJpbmdpZnkoZGF0YSkpXHJcblx0XHRcdFx0dGhpcy4kbmZjLmlucHV0Q2hhbmFnZShkYXRhKVxyXG5cdFx0XHR9LFxyXG5cdFx0XHRvbk5mY1JlYWQoZGF0YSkge1xyXG5cdFx0XHRcdGNvbnNvbGUubG9nKCfnm5HlkKzliLDkuovku7bmnaXoh6ogbmZjUmVhZCwgZGF0YTogJyArIEpTT04uc3RyaW5naWZ5KGRhdGEpKVxyXG5cdFx0XHRcdC8vIGNvbnNvbGUubG9nKGRhdGEpXHJcblx0XHRcdFx0dW5pLnNob3dUb2FzdCh7XHJcblx0XHRcdFx0XHR0aXRsZTogYFske2RhdGEuaWR9XSAnJHtkYXRhLmRhdGF9J2AsXHJcblx0XHRcdFx0XHRpY29uOiAnbm9uZScsXHJcblx0XHRcdFx0XHRkdXJhdGlvbjogMjAwMFxyXG5cdFx0XHRcdH0pXHJcblx0XHRcdH0sXHJcblx0XHRcdHdyaXRlRGF0YSgpIHtcclxuXHRcdFx0XHR0aGlzLiRuZmMud3JpdGVEYXRhKClcclxuXHRcdFx0fSxcclxuXHRcdFx0cmVhZERhdGEoKSB7XHJcblx0XHRcdFx0dGhpcy4kbmZjLnJlYWREYXRhKClcclxuXHRcdFx0fSxcclxuXHRcdFx0c2V0UGFzc3dvcmQoKSB7XHJcblx0XHRcdFx0dGhpcy4kbmZjLnNldFB3ZERhdGEoKVxyXG5cdFx0XHR9LFxyXG5cdFx0XHRkZWxQYXNzd29yZCgpIHtcclxuXHRcdFx0XHR0aGlzLiRuZmMuZGVsUHdkRGF0YSgpXHJcblx0XHRcdH0sXHJcblx0XHRcdGdldE5mY1N0YXRlKCkge1xyXG5cdFx0XHRcdHRoaXMuJG5mYy5nZXROZmNTdGF0ZSgpXHJcblx0XHRcdH0sXHJcblx0XHRcdHdyaXRlQW5kTG9jaygpIHtcclxuXHRcdFx0XHR0aGlzLiRuZmMud3JpdGVBbmRMb2NrKClcclxuXHRcdFx0fVxyXG5cdFx0fVxyXG5cdH1cclxuPC9zY3JpcHQ+XHJcblxyXG48c3R5bGUgc2NvcGVkIGxhbmc9XCJzY3NzXCI+XHJcblx0LmNvbnRhaW5lciB7XHJcblx0XHRwYWRkaW5nOiAxNXB4O1xyXG5cdFx0Ym94LXNpemluZzogYm9yZGVyLWJveDtcclxuXHJcblx0XHQuYnRuLWJveCB7XHJcblx0XHRcdGRpc3BsYXk6IGZsZXg7XHJcblx0XHRcdGp1c3RpZnktY29udGVudDogY2VudGVyO1xyXG5cdFx0XHRhbGlnbi1pdGVtczogY2VudGVyO1xyXG5cdFx0XHRtYXJnaW4tdG9wOiAyMHB4O1xyXG5cclxuXHRcdFx0LmJ0biB7XHJcblx0XHRcdFx0d2lkdGg6IDM1JTtcclxuXHRcdFx0fVxyXG5cdFx0fVxyXG5cdH1cclxuPC9zdHlsZT5cbiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///51\n");
- /***/ }),
- /* 52 */
- /*!******************************************************************************!*\
- !*** D:/Work2/Orienteering/TrackOffical/pages/verify/verify.vue?mpType=page ***!
- \******************************************************************************/
- /*! no static exports found */
- /***/ (function(module, __webpack_exports__, __webpack_require__) {
- "use strict";
- eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _verify_vue_vue_type_template_id_97e49014_scoped_true_mpType_page__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./verify.vue?vue&type=template&id=97e49014&scoped=true&mpType=page */ 53);\n/* harmony import */ var _verify_vue_vue_type_script_lang_js_mpType_page__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./verify.vue?vue&type=script&lang=js&mpType=page */ 55);\n/* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _verify_vue_vue_type_script_lang_js_mpType_page__WEBPACK_IMPORTED_MODULE_1__) if([\"default\"].indexOf(__WEBPACK_IMPORT_KEY__) < 0) (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _verify_vue_vue_type_script_lang_js_mpType_page__WEBPACK_IMPORTED_MODULE_1__[key]; }) }(__WEBPACK_IMPORT_KEY__));\n/* harmony import */ var _Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../../../../Program Files/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/runtime/componentNormalizer.js */ 15);\n\nvar renderjs\n\n\n\n\n/* normalize component */\n\nvar component = Object(_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(\n _verify_vue_vue_type_script_lang_js_mpType_page__WEBPACK_IMPORTED_MODULE_1__[\"default\"],\n _verify_vue_vue_type_template_id_97e49014_scoped_true_mpType_page__WEBPACK_IMPORTED_MODULE_0__[\"render\"],\n _verify_vue_vue_type_template_id_97e49014_scoped_true_mpType_page__WEBPACK_IMPORTED_MODULE_0__[\"staticRenderFns\"],\n false,\n null,\n \"97e49014\",\n null,\n false,\n _verify_vue_vue_type_template_id_97e49014_scoped_true_mpType_page__WEBPACK_IMPORTED_MODULE_0__[\"components\"],\n renderjs\n)\n\ncomponent.options.__file = \"pages/verify/verify.vue\"\n/* harmony default export */ __webpack_exports__[\"default\"] = (component.exports);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbbnVsbF0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBMEk7QUFDMUk7QUFDcUU7QUFDTDs7O0FBR2hFO0FBQ29MO0FBQ3BMLGdCQUFnQiwyTEFBVTtBQUMxQixFQUFFLHVGQUFNO0FBQ1IsRUFBRSx3R0FBTTtBQUNSLEVBQUUsaUhBQWU7QUFDakI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEVBQUUsNEdBQVU7QUFDWjtBQUNBOztBQUVBO0FBQ2UsZ0YiLCJmaWxlIjoiNTIuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyByZW5kZXIsIHN0YXRpY1JlbmRlckZucywgcmVjeWNsYWJsZVJlbmRlciwgY29tcG9uZW50cyB9IGZyb20gXCIuL3ZlcmlmeS52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9OTdlNDkwMTQmc2NvcGVkPXRydWUmbXBUeXBlPXBhZ2VcIlxudmFyIHJlbmRlcmpzXG5pbXBvcnQgc2NyaXB0IGZyb20gXCIuL3ZlcmlmeS52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9anMmbXBUeXBlPXBhZ2VcIlxuZXhwb3J0ICogZnJvbSBcIi4vdmVyaWZ5LnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz1qcyZtcFR5cGU9cGFnZVwiXG5cblxuLyogbm9ybWFsaXplIGNvbXBvbmVudCAqL1xuaW1wb3J0IG5vcm1hbGl6ZXIgZnJvbSBcIiEuLi8uLi8uLi8uLi8uLi9Qcm9ncmFtIEZpbGVzL0hCdWlsZGVyWC9wbHVnaW5zL3VuaWFwcC1jbGkvbm9kZV9tb2R1bGVzL0BkY2xvdWRpby92dWUtY2xpLXBsdWdpbi11bmkvcGFja2FnZXMvdnVlLWxvYWRlci9saWIvcnVudGltZS9jb21wb25lbnROb3JtYWxpemVyLmpzXCJcbnZhciBjb21wb25lbnQgPSBub3JtYWxpemVyKFxuICBzY3JpcHQsXG4gIHJlbmRlcixcbiAgc3RhdGljUmVuZGVyRm5zLFxuICBmYWxzZSxcbiAgbnVsbCxcbiAgXCI5N2U0OTAxNFwiLFxuICBudWxsLFxuICBmYWxzZSxcbiAgY29tcG9uZW50cyxcbiAgcmVuZGVyanNcbilcblxuY29tcG9uZW50Lm9wdGlvbnMuX19maWxlID0gXCJwYWdlcy92ZXJpZnkvdmVyaWZ5LnZ1ZVwiXG5leHBvcnQgZGVmYXVsdCBjb21wb25lbnQuZXhwb3J0cyJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///52\n");
- /***/ }),
- /* 53 */
- /*!************************************************************************************************************************!*\
- !*** D:/Work2/Orienteering/TrackOffical/pages/verify/verify.vue?vue&type=template&id=97e49014&scoped=true&mpType=page ***!
- \************************************************************************************************************************/
- /*! exports provided: render, staticRenderFns, recyclableRender, components */
- /***/ (function(module, __webpack_exports__, __webpack_require__) {
- "use strict";
- __webpack_require__.r(__webpack_exports__);
- /* harmony import */ var _Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_11_0_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_filter_modules_template_js_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_page_meta_js_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_verify_vue_vue_type_template_id_97e49014_scoped_true_mpType_page__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../../../Program Files/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../../../../Program Files/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--11-0!../../../../../Program Files/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/filter-modules-template.js!../../../../../Program Files/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/page-meta.js!../../../../../Program Files/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib??vue-loader-options!./verify.vue?vue&type=template&id=97e49014&scoped=true&mpType=page */ 54);
- /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "render", function() { return _Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_11_0_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_filter_modules_template_js_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_page_meta_js_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_verify_vue_vue_type_template_id_97e49014_scoped_true_mpType_page__WEBPACK_IMPORTED_MODULE_0__["render"]; });
- /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "staticRenderFns", function() { return _Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_11_0_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_filter_modules_template_js_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_page_meta_js_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_verify_vue_vue_type_template_id_97e49014_scoped_true_mpType_page__WEBPACK_IMPORTED_MODULE_0__["staticRenderFns"]; });
- /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "recyclableRender", function() { return _Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_11_0_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_filter_modules_template_js_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_page_meta_js_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_verify_vue_vue_type_template_id_97e49014_scoped_true_mpType_page__WEBPACK_IMPORTED_MODULE_0__["recyclableRender"]; });
- /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "components", function() { return _Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_11_0_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_filter_modules_template_js_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_page_meta_js_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_verify_vue_vue_type_template_id_97e49014_scoped_true_mpType_page__WEBPACK_IMPORTED_MODULE_0__["components"]; });
- /***/ }),
- /* 54 */
- /*!****************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
- !*** ./node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--11-0!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/filter-modules-template.js!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/page-meta.js!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib??vue-loader-options!D:/Work2/Orienteering/TrackOffical/pages/verify/verify.vue?vue&type=template&id=97e49014&scoped=true&mpType=page ***!
- \****************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/
- /*! exports provided: render, staticRenderFns, recyclableRender, components */
- /***/ (function(module, __webpack_exports__, __webpack_require__) {
- "use strict";
- __webpack_require__.r(__webpack_exports__);
- /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "render", function() { return render; });
- /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "staticRenderFns", function() { return staticRenderFns; });
- /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "recyclableRender", function() { return recyclableRender; });
- /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "components", function() { return components; });
- var components
- var render = function () {
- var _vm = this
- var _h = _vm.$createElement
- var _c = _vm._self._c || _h
- return _c(
- "view",
- { staticClass: _vm._$s(0, "sc", "container"), attrs: { _i: 0 } },
- [
- _c(
- "view",
- { staticClass: _vm._$s(1, "sc", "text-box"), attrs: { _i: 1 } },
- [
- _vm._$s(2, "i", _vm.scanResult == "")
- ? _c("text", {
- staticClass: _vm._$s(2, "sc", "scanResult"),
- attrs: { _i: 2 },
- })
- : _c(
- "text",
- {
- staticClass: _vm._$s(3, "sc", "scanResult"),
- attrs: { _i: 3 },
- },
- [_vm._v(_vm._$s(3, "t0-0", _vm._s(_vm.scanResult)))]
- ),
- ]
- ),
- _c(
- "view",
- { staticClass: _vm._$s(4, "sc", "btn-box"), attrs: { _i: 4 } },
- [
- _c("button", {
- staticClass: _vm._$s(5, "sc", "btn-scan"),
- attrs: { _i: 5 },
- on: {
- click: function ($event) {
- return _vm.handleScan()
- },
- },
- }),
- ]
- ),
- ]
- )
- }
- var recyclableRender = false
- var staticRenderFns = []
- render._withStripped = true
- /***/ }),
- /* 55 */
- /*!******************************************************************************************************!*\
- !*** D:/Work2/Orienteering/TrackOffical/pages/verify/verify.vue?vue&type=script&lang=js&mpType=page ***!
- \******************************************************************************************************/
- /*! no static exports found */
- /***/ (function(module, __webpack_exports__, __webpack_require__) {
- "use strict";
- eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_7_1_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_using_components_js_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_verify_vue_vue_type_script_lang_js_mpType_page__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../../../Program Files/HBuilderX/plugins/uniapp-cli/node_modules/babel-loader/lib!../../../../../Program Files/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--7-1!../../../../../Program Files/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/using-components.js!../../../../../Program Files/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib??vue-loader-options!./verify.vue?vue&type=script&lang=js&mpType=page */ 56);\n/* harmony import */ var _Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_7_1_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_using_components_js_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_verify_vue_vue_type_script_lang_js_mpType_page__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_7_1_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_using_components_js_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_verify_vue_vue_type_script_lang_js_mpType_page__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_7_1_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_using_components_js_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_verify_vue_vue_type_script_lang_js_mpType_page__WEBPACK_IMPORTED_MODULE_0__) if([\"default\"].indexOf(__WEBPACK_IMPORT_KEY__) < 0) (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_7_1_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_using_components_js_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_verify_vue_vue_type_script_lang_js_mpType_page__WEBPACK_IMPORTED_MODULE_0__[key]; }) }(__WEBPACK_IMPORT_KEY__));\n /* harmony default export */ __webpack_exports__[\"default\"] = (_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_7_1_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_using_components_js_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_verify_vue_vue_type_script_lang_js_mpType_page__WEBPACK_IMPORTED_MODULE_0___default.a); //# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbbnVsbF0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQWluQixDQUFnQiwrbkJBQUcsRUFBQyIsImZpbGUiOiI1NS5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBtb2QgZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vUHJvZ3JhbSBGaWxlcy9IQnVpbGRlclgvcGx1Z2lucy91bmlhcHAtY2xpL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzIS4uLy4uLy4uLy4uLy4uL1Byb2dyYW0gRmlsZXMvSEJ1aWxkZXJYL3BsdWdpbnMvdW5pYXBwLWNsaS9ub2RlX21vZHVsZXMvQGRjbG91ZGlvL3Z1ZS1jbGktcGx1Z2luLXVuaS9wYWNrYWdlcy93ZWJwYWNrLXByZXByb2Nlc3MtbG9hZGVyL2luZGV4LmpzPz9yZWYtLTctMSEuLi8uLi8uLi8uLi8uLi9Qcm9ncmFtIEZpbGVzL0hCdWlsZGVyWC9wbHVnaW5zL3VuaWFwcC1jbGkvbm9kZV9tb2R1bGVzL0BkY2xvdWRpby92dWUtY2xpLXBsdWdpbi11bmkvcGFja2FnZXMvd2VicGFjay11bmktYXBwLWxvYWRlci91c2luZy1jb21wb25lbnRzLmpzIS4uLy4uLy4uLy4uLy4uL1Byb2dyYW0gRmlsZXMvSEJ1aWxkZXJYL3BsdWdpbnMvdW5pYXBwLWNsaS9ub2RlX21vZHVsZXMvQGRjbG91ZGlvL3Z1ZS1jbGktcGx1Z2luLXVuaS9wYWNrYWdlcy92dWUtbG9hZGVyL2xpYi9pbmRleC5qcz8/dnVlLWxvYWRlci1vcHRpb25zIS4vdmVyaWZ5LnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz1qcyZtcFR5cGU9cGFnZVwiOyBleHBvcnQgZGVmYXVsdCBtb2Q7IGV4cG9ydCAqIGZyb20gXCItIS4uLy4uLy4uLy4uLy4uL1Byb2dyYW0gRmlsZXMvSEJ1aWxkZXJYL3BsdWdpbnMvdW5pYXBwLWNsaS9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcyEuLi8uLi8uLi8uLi8uLi9Qcm9ncmFtIEZpbGVzL0hCdWlsZGVyWC9wbHVnaW5zL3VuaWFwcC1jbGkvbm9kZV9tb2R1bGVzL0BkY2xvdWRpby92dWUtY2xpLXBsdWdpbi11bmkvcGFja2FnZXMvd2VicGFjay1wcmVwcm9jZXNzLWxvYWRlci9pbmRleC5qcz8/cmVmLS03LTEhLi4vLi4vLi4vLi4vLi4vUHJvZ3JhbSBGaWxlcy9IQnVpbGRlclgvcGx1Z2lucy91bmlhcHAtY2xpL25vZGVfbW9kdWxlcy9AZGNsb3VkaW8vdnVlLWNsaS1wbHVnaW4tdW5pL3BhY2thZ2VzL3dlYnBhY2stdW5pLWFwcC1sb2FkZXIvdXNpbmctY29tcG9uZW50cy5qcyEuLi8uLi8uLi8uLi8uLi9Qcm9ncmFtIEZpbGVzL0hCdWlsZGVyWC9wbHVnaW5zL3VuaWFwcC1jbGkvbm9kZV9tb2R1bGVzL0BkY2xvdWRpby92dWUtY2xpLXBsdWdpbi11bmkvcGFja2FnZXMvdnVlLWxvYWRlci9saWIvaW5kZXguanM/P3Z1ZS1sb2FkZXItb3B0aW9ucyEuL3ZlcmlmeS52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9anMmbXBUeXBlPXBhZ2VcIiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///55\n");
- /***/ }),
- /* 56 */
- /*!***********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
- !*** ./node_modules/babel-loader/lib!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--7-1!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/using-components.js!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib??vue-loader-options!D:/Work2/Orienteering/TrackOffical/pages/verify/verify.vue?vue&type=script&lang=js&mpType=page ***!
- \***********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/
- /*! no static exports found */
- /***/ (function(module, exports, __webpack_require__) {
- "use strict";
- eval("/* WEBPACK VAR INJECTION */(function(__f__) {\n\nvar _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ 1);\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar _base = _interopRequireDefault(__webpack_require__(/*! base-64 */ 57));\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n// import {\n// \tAssVerificationRequest\n// } from \"@/grpc/ass_api_pb.js\"\nvar _default = {\n data: function data() {\n return {\n userId: 0,\n uoId: 0,\n scanResult: ''\n };\n },\n onLoad: function onLoad() {},\n methods: {\n handleScan: function handleScan() {\n var that = this;\n this.scanResult = '';\n\n // 允许从相机和相册扫码\n uni.scanCode({\n success: function success(res) {\n __f__(\"log\", '条码类型:' + res.scanType, \" at pages/verify/verify.vue:36\");\n __f__(\"log\", '条码内容:' + res.result, \" at pages/verify/verify.vue:37\");\n try {\n var result = _base.default.decode(res.result);\n // console.log(result)\n result = JSON.parse(result);\n __f__(\"log\", '条码内容 Base64.decode:' + JSON.stringify(result), \" at pages/verify/verify.vue:42\");\n that.userId = result.userId;\n that.uoId = result.uoId;\n // console.log('userId:' + that.userId)\n // console.log('uoId:' + that.uoId)\n that.verification();\n } catch (e) {\n __f__(\"log\", '扫码出现异常:' + e.message, \" at pages/verify/verify.vue:49\");\n that.scanResult = '扫码错误,请扫描正确的二维码';\n }\n }\n });\n },\n // 核销\n verification: function verification() {\n var _this = this;\n // 创建请求参数并赋值\n var request = new AssVerificationRequest();\n request.setUserid(this.userId);\n request.setUoid(this.uoId);\n // 调用客户端相应的grpc方法,发送grpc请求,并接受后台发送回来的返回值\n this.$client.assVerification(request, {}, function (err, response) {\n if (err) {\n __f__(\"log\", \"[assVerification] err: code = \".concat(err.code) + \", message = \\\"\".concat(err.message, \"\\\"\"), \" at pages/verify/verify.vue:64\");\n uni.showToast({\n title: \"\".concat(err.message, \" (err:\").concat(err.code, \")\"),\n icon: 'none',\n duration: 2000\n });\n _this.scanResult = \"\".concat(err.message, \" (err:\").concat(err.code, \")\");\n } else {\n // console.log(response)\n uni.showToast({\n title: \"\\u6838\\u9500\\u6210\\u529F\",\n icon: 'success',\n duration: 2000\n });\n _this.scanResult = '核销成功';\n }\n });\n }\n }\n};\nexports.default = _default;\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./node_modules/@dcloudio/vue-cli-plugin-uni/lib/format-log.js */ 34)[\"default\"]))//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInVuaS1hcHA6Ly8vcGFnZXMvdmVyaWZ5L3ZlcmlmeS52dWUiXSwibmFtZXMiOlsiZGF0YSIsInVzZXJJZCIsInVvSWQiLCJzY2FuUmVzdWx0Iiwib25Mb2FkIiwibWV0aG9kcyIsImhhbmRsZVNjYW4iLCJ1bmkiLCJzdWNjZXNzIiwicmVzdWx0IiwidGhhdCIsInZlcmlmaWNhdGlvbiIsInJlcXVlc3QiLCJlcnIiLCJ0aXRsZSIsImljb24iLCJkdXJhdGlvbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQWdCQTs7Ozs7Ozs7Ozs7OztBQUhBO0FBQ0E7QUFDQTtBQUFBLGVBR0E7RUFDQUE7SUFDQTtNQUNBQztNQUNBQztNQUNBQztJQUNBO0VBQ0E7RUFDQUM7RUFDQUM7SUFDQUM7TUFDQTtNQUNBOztNQUVBO01BQ0FDO1FBQ0FDO1VBQ0E7VUFDQTtVQUNBO1lBQ0E7WUFDQTtZQUNBQztZQUNBO1lBQ0FDO1lBQ0FBO1lBQ0E7WUFDQTtZQUNBQTtVQUNBO1lBQ0E7WUFDQUE7VUFDQTtRQUNBO01BQ0E7SUFDQTtJQUNBO0lBQ0FDO01BQUE7TUFDQTtNQUNBO01BQ0FDO01BQ0FBO01BQ0E7TUFDQTtRQUNBO1VBQ0EseUZBQ0FDO1VBQ0FOO1lBQ0FPO1lBQ0FDO1lBQ0FDO1VBQ0E7VUFDQTtRQUNBO1VBQ0E7VUFDQVQ7WUFDQU87WUFDQUM7WUFDQUM7VUFDQTtVQUNBO1FBQ0E7TUFDQTtJQUNBO0VBQ0E7QUFDQTtBQUFBLDJCIiwiZmlsZSI6IjU2LmpzIiwic291cmNlc0NvbnRlbnQiOlsiPHRlbXBsYXRlPlxyXG5cdDx2aWV3IGNsYXNzPVwiY29udGFpbmVyXCI+XHJcblx0XHQ8dmlldyBjbGFzcz1cInRleHQtYm94XCI+XHJcblx0XHRcdDx0ZXh0IHYtaWY9XCJzY2FuUmVzdWx0ID09ICcnXCIgY2xhc3M9XCJzY2FuUmVzdWx0XCI+5b6F5omr56CBPC90ZXh0PlxyXG5cdFx0XHQ8dGV4dCB2LWVsc2UgY2xhc3M9XCJzY2FuUmVzdWx0XCI+5omr56CB57uT5p6c77yae3sgc2NhblJlc3VsdCB9fTwvdGV4dD5cclxuXHRcdDwvdmlldz5cclxuXHRcdDx2aWV3IGNsYXNzPVwiYnRuLWJveFwiPlxyXG5cdFx0XHQ8YnV0dG9uIGNsYXNzPVwiYnRuLXNjYW5cIiB0eXBlPVwicHJpbWFyeVwiIEBjbGljaz1cImhhbmRsZVNjYW4oKVwiPuaJq+S4gOaJqzwvYnV0dG9uPlxyXG5cdFx0PC92aWV3PlxyXG5cdDwvdmlldz5cclxuPC90ZW1wbGF0ZT5cclxuXHJcbjxzY3JpcHQ+XHJcblx0Ly8gaW1wb3J0IHtcclxuXHQvLyBcdEFzc1ZlcmlmaWNhdGlvblJlcXVlc3RcclxuXHQvLyB9IGZyb20gXCJAL2dycGMvYXNzX2FwaV9wYi5qc1wiXHJcblx0aW1wb3J0IEJhc2U2NCBmcm9tICdiYXNlLTY0J1xyXG5cclxuXHRleHBvcnQgZGVmYXVsdCB7XHJcblx0XHRkYXRhKCkge1xyXG5cdFx0XHRyZXR1cm4ge1xyXG5cdFx0XHRcdHVzZXJJZDogMCxcclxuXHRcdFx0XHR1b0lkOiAwLFxyXG5cdFx0XHRcdHNjYW5SZXN1bHQ6ICcnXHJcblx0XHRcdH1cclxuXHRcdH0sXHJcblx0XHRvbkxvYWQoKSB7fSxcclxuXHRcdG1ldGhvZHM6IHtcclxuXHRcdFx0aGFuZGxlU2NhbigpIHtcclxuXHRcdFx0XHRsZXQgdGhhdCA9IHRoaXNcclxuXHRcdFx0XHR0aGlzLnNjYW5SZXN1bHQgPSAnJ1xyXG5cclxuXHRcdFx0XHQvLyDlhYHorrjku47nm7jmnLrlkoznm7jlhozmiavnoIFcclxuXHRcdFx0XHR1bmkuc2NhbkNvZGUoe1xyXG5cdFx0XHRcdFx0c3VjY2VzczogZnVuY3Rpb24ocmVzKSB7XHJcblx0XHRcdFx0XHRcdGNvbnNvbGUubG9nKCfmnaHnoIHnsbvlnovvvJonICsgcmVzLnNjYW5UeXBlKVxyXG5cdFx0XHRcdFx0XHRjb25zb2xlLmxvZygn5p2h56CB5YaF5a6577yaJyArIHJlcy5yZXN1bHQpXHJcblx0XHRcdFx0XHRcdHRyeSB7XHJcblx0XHRcdFx0XHRcdFx0bGV0IHJlc3VsdCA9IEJhc2U2NC5kZWNvZGUocmVzLnJlc3VsdClcclxuXHRcdFx0XHRcdFx0XHQvLyBjb25zb2xlLmxvZyhyZXN1bHQpXHJcblx0XHRcdFx0XHRcdFx0cmVzdWx0ID0gSlNPTi5wYXJzZShyZXN1bHQpXHJcblx0XHRcdFx0XHRcdFx0Y29uc29sZS5sb2coJ+adoeeggeWGheWuuSBCYXNlNjQuZGVjb2Rl77yaJyArIEpTT04uc3RyaW5naWZ5KHJlc3VsdCkpXHJcblx0XHRcdFx0XHRcdFx0dGhhdC51c2VySWQgPSByZXN1bHQudXNlcklkXHJcblx0XHRcdFx0XHRcdFx0dGhhdC51b0lkID0gcmVzdWx0LnVvSWRcclxuXHRcdFx0XHRcdFx0XHQvLyBjb25zb2xlLmxvZygndXNlcklk77yaJyArIHRoYXQudXNlcklkKVxyXG5cdFx0XHRcdFx0XHRcdC8vIGNvbnNvbGUubG9nKCd1b0lk77yaJyArIHRoYXQudW9JZClcclxuXHRcdFx0XHRcdFx0XHR0aGF0LnZlcmlmaWNhdGlvbigpXHJcblx0XHRcdFx0XHRcdH0gY2F0Y2goZSkge1xyXG5cdFx0XHRcdFx0XHRcdGNvbnNvbGUubG9nKCfmiavnoIHlh7rnjrDlvILluLjvvJonICsgZS5tZXNzYWdlKVxyXG5cdFx0XHRcdFx0XHRcdHRoYXQuc2NhblJlc3VsdCA9ICfmiavnoIHplJnor6/vvIzor7fmiavmj4/mraPnoa7nmoTkuoznu7TnoIEnXHJcblx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdH1cclxuXHRcdFx0XHR9KVxyXG5cdFx0XHR9LFxyXG5cdFx0XHQvLyDmoLjplIBcclxuXHRcdFx0dmVyaWZpY2F0aW9uKCkge1xyXG5cdFx0XHRcdC8vIOWIm+W7uuivt+axguWPguaVsOW5tui1i+WAvFxyXG5cdFx0XHRcdHZhciByZXF1ZXN0ID0gbmV3IEFzc1ZlcmlmaWNhdGlvblJlcXVlc3QoKVxyXG5cdFx0XHRcdHJlcXVlc3Quc2V0VXNlcmlkKHRoaXMudXNlcklkKVxyXG5cdFx0XHRcdHJlcXVlc3Quc2V0VW9pZCh0aGlzLnVvSWQpXHJcblx0XHRcdFx0Ly8g6LCD55So5a6i5oi356uv55u45bqU55qEZ3JwY+aWueazle+8jOWPkemAgWdycGPor7fmsYLvvIzlubbmjqXlj5flkI7lj7Dlj5HpgIHlm57mnaXnmoTov5Tlm57lgLxcclxuXHRcdFx0XHR0aGlzLiRjbGllbnQuYXNzVmVyaWZpY2F0aW9uKHJlcXVlc3QsIHt9LCAoZXJyLCByZXNwb25zZSkgPT4ge1xyXG5cdFx0XHRcdFx0aWYgKGVycikge1xyXG5cdFx0XHRcdFx0XHRjb25zb2xlLmxvZyhgW2Fzc1ZlcmlmaWNhdGlvbl0gZXJyOiBjb2RlID0gJHtlcnIuY29kZX1gICtcclxuXHRcdFx0XHRcdFx0XHRgLCBtZXNzYWdlID0gXCIke2Vyci5tZXNzYWdlfVwiYClcclxuXHRcdFx0XHRcdFx0dW5pLnNob3dUb2FzdCh7XHJcblx0XHRcdFx0XHRcdFx0dGl0bGU6IGAke2Vyci5tZXNzYWdlfSAoZXJyOiR7ZXJyLmNvZGV9KWAsXHJcblx0XHRcdFx0XHRcdFx0aWNvbjogJ25vbmUnLFxyXG5cdFx0XHRcdFx0XHRcdGR1cmF0aW9uOiAyMDAwXHJcblx0XHRcdFx0XHRcdH0pXHJcblx0XHRcdFx0XHRcdHRoaXMuc2NhblJlc3VsdCA9IGAke2Vyci5tZXNzYWdlfSAoZXJyOiR7ZXJyLmNvZGV9KWBcclxuXHRcdFx0XHRcdH0gZWxzZSB7XHJcblx0XHRcdFx0XHRcdC8vIGNvbnNvbGUubG9nKHJlc3BvbnNlKVxyXG5cdFx0XHRcdFx0XHR1bmkuc2hvd1RvYXN0KHtcclxuXHRcdFx0XHRcdFx0XHR0aXRsZTogYOaguOmUgOaIkOWKn2AsXHJcblx0XHRcdFx0XHRcdFx0aWNvbjogJ3N1Y2Nlc3MnLFxyXG5cdFx0XHRcdFx0XHRcdGR1cmF0aW9uOiAyMDAwXHJcblx0XHRcdFx0XHRcdH0pXHJcblx0XHRcdFx0XHRcdHRoaXMuc2NhblJlc3VsdCA9ICfmoLjplIDmiJDlip8nXHJcblx0XHRcdFx0XHR9XHJcblx0XHRcdFx0fSk7XHJcblx0XHRcdH1cclxuXHRcdH1cclxuXHR9XHJcbjwvc2NyaXB0PlxyXG5cclxuPHN0eWxlIHNjb3BlZCBsYW5nPVwic2Nzc1wiPlxyXG5cdC5jb250YWluZXIge1xyXG5cdFx0cGFkZGluZzogMTVweDtcclxuXHRcdGJveC1zaXppbmc6IGJvcmRlci1ib3g7XHJcblxyXG5cdFx0LnRleHQtYm94IHtcclxuXHRcdFx0ZGlzcGxheTogZmxleDtcclxuXHRcdFx0anVzdGlmeS1jb250ZW50OiBjZW50ZXI7XHJcblx0XHRcdGFsaWduLWl0ZW1zOiBjZW50ZXI7XHJcblx0XHRcdGhlaWdodDogMjAwcnB4O1xyXG5cclxuXHRcdFx0LnNjYW5SZXN1bHQge31cclxuXHRcdH1cclxuXHJcblx0XHQuYnRuLWJveCB7XHJcblx0XHRcdGRpc3BsYXk6IGZsZXg7XHJcblx0XHRcdGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcclxuXHRcdFx0YWxpZ24taXRlbXM6IGNlbnRlcjtcclxuXHRcdFx0bWFyZ2luLXRvcDogMjBweDtcclxuXHJcblx0XHRcdC5idG4tc2NhbiB7XHJcblx0XHRcdFx0d2lkdGg6IDkwJTtcclxuXHRcdFx0fVxyXG5cdFx0fVxyXG5cdH1cclxuPC9zdHlsZT5cclxuIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///56\n");
- /***/ }),
- /* 57 */
- /*!*************************************************************************!*\
- !*** D:/Work2/Orienteering/TrackOffical/node_modules/base-64/base64.js ***!
- \*************************************************************************/
- /*! no static exports found */
- /***/ (function(module, exports, __webpack_require__) {
- /* WEBPACK VAR INJECTION */(function(module, global) {var __WEBPACK_AMD_DEFINE_RESULT__;var _typeof = __webpack_require__(/*! @babel/runtime/helpers/typeof */ 4);
- /*! https://mths.be/base64 v1.0.0 by @mathias | MIT license */
- ;
- (function (root) {
- // Detect free variables `exports`.
- var freeExports = ( false ? undefined : _typeof(exports)) == 'object' && exports;
- // Detect free variable `module`.
- var freeModule = ( false ? undefined : _typeof(module)) == 'object' && module && module.exports == freeExports && module;
- // Detect free variable `global`, from Node.js or Browserified code, and use
- // it as `root`.
- var freeGlobal = (typeof global === "undefined" ? "undefined" : _typeof(global)) == 'object' && global;
- if (freeGlobal.global === freeGlobal || freeGlobal.window === freeGlobal) {
- root = freeGlobal;
- }
- /*--------------------------------------------------------------------------*/
- var InvalidCharacterError = function InvalidCharacterError(message) {
- this.message = message;
- };
- InvalidCharacterError.prototype = new Error();
- InvalidCharacterError.prototype.name = 'InvalidCharacterError';
- var error = function error(message) {
- // Note: the error messages used throughout this file match those used by
- // the native `atob`/`btoa` implementation in Chromium.
- throw new InvalidCharacterError(message);
- };
- var TABLE = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';
- // http://whatwg.org/html/common-microsyntaxes.html#space-character
- var REGEX_SPACE_CHARACTERS = /[\t\n\f\r ]/g;
- // `decode` is designed to be fully compatible with `atob` as described in the
- // HTML Standard. http://whatwg.org/html/webappapis.html#dom-windowbase64-atob
- // The optimized base64-decoding algorithm used is based on @atk’s excellent
- // implementation. https://gist.github.com/atk/1020396
- var decode = function decode(input) {
- input = String(input).replace(REGEX_SPACE_CHARACTERS, '');
- var length = input.length;
- if (length % 4 == 0) {
- input = input.replace(/==?$/, '');
- length = input.length;
- }
- if (length % 4 == 1 ||
- // http://whatwg.org/C#alphanumeric-ascii-characters
- /[^+a-zA-Z0-9/]/.test(input)) {
- error('Invalid character: the string to be decoded is not correctly encoded.');
- }
- var bitCounter = 0;
- var bitStorage;
- var buffer;
- var output = '';
- var position = -1;
- while (++position < length) {
- buffer = TABLE.indexOf(input.charAt(position));
- bitStorage = bitCounter % 4 ? bitStorage * 64 + buffer : buffer;
- // Unless this is the first of a group of 4 characters…
- if (bitCounter++ % 4) {
- // …convert the first 8 bits to a single ASCII character.
- output += String.fromCharCode(0xFF & bitStorage >> (-2 * bitCounter & 6));
- }
- }
- return output;
- };
- // `encode` is designed to be fully compatible with `btoa` as described in the
- // HTML Standard: http://whatwg.org/html/webappapis.html#dom-windowbase64-btoa
- var encode = function encode(input) {
- input = String(input);
- if (/[^\0-\xFF]/.test(input)) {
- // Note: no need to special-case astral symbols here, as surrogates are
- // matched, and the input is supposed to only contain ASCII anyway.
- error('The string to be encoded contains characters outside of the ' + 'Latin1 range.');
- }
- var padding = input.length % 3;
- var output = '';
- var position = -1;
- var a;
- var b;
- var c;
- var buffer;
- // Make sure any padding is handled outside of the loop.
- var length = input.length - padding;
- while (++position < length) {
- // Read three bytes, i.e. 24 bits.
- a = input.charCodeAt(position) << 16;
- b = input.charCodeAt(++position) << 8;
- c = input.charCodeAt(++position);
- buffer = a + b + c;
- // Turn the 24 bits into four chunks of 6 bits each, and append the
- // matching character for each of them to the output.
- output += TABLE.charAt(buffer >> 18 & 0x3F) + TABLE.charAt(buffer >> 12 & 0x3F) + TABLE.charAt(buffer >> 6 & 0x3F) + TABLE.charAt(buffer & 0x3F);
- }
- if (padding == 2) {
- a = input.charCodeAt(position) << 8;
- b = input.charCodeAt(++position);
- buffer = a + b;
- output += TABLE.charAt(buffer >> 10) + TABLE.charAt(buffer >> 4 & 0x3F) + TABLE.charAt(buffer << 2 & 0x3F) + '=';
- } else if (padding == 1) {
- buffer = input.charCodeAt(position);
- output += TABLE.charAt(buffer >> 2) + TABLE.charAt(buffer << 4 & 0x3F) + '==';
- }
- return output;
- };
- var base64 = {
- 'encode': encode,
- 'decode': decode,
- 'version': '1.0.0'
- };
- // Some AMD build optimizers, like r.js, check for specific condition patterns
- // like the following:
- if ( true && _typeof(__webpack_require__(/*! !webpack amd options */ 59)) == 'object' && __webpack_require__(/*! !webpack amd options */ 59)) {
- !(__WEBPACK_AMD_DEFINE_RESULT__ = (function () {
- return base64;
- }).call(exports, __webpack_require__, exports, module),
- __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));
- } else if (freeExports && !freeExports.nodeType) {
- if (freeModule) {
- // in Node.js or RingoJS v0.8.0+
- freeModule.exports = base64;
- } else {
- // in Narwhal or RingoJS v0.7.0-
- for (var key in base64) {
- base64.hasOwnProperty(key) && (freeExports[key] = base64[key]);
- }
- }
- } else {
- // in Rhino or a web browser
- root.base64 = base64;
- }
- })(this);
- /* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../../../../Program Files/HBuilderX/plugins/uniapp-cli/node_modules/webpack/buildin/module.js */ 58)(module), __webpack_require__(/*! ./../../../../../Program Files/HBuilderX/plugins/uniapp-cli/node_modules/webpack/buildin/global.js */ 40)))
- /***/ }),
- /* 58 */
- /*!***********************************!*\
- !*** (webpack)/buildin/module.js ***!
- \***********************************/
- /*! no static exports found */
- /***/ (function(module, exports) {
- module.exports = function(module) {
- if (!module.webpackPolyfill) {
- module.deprecate = function() {};
- module.paths = [];
- // module.parent = undefined by default
- if (!module.children) module.children = [];
- Object.defineProperty(module, "loaded", {
- enumerable: true,
- get: function() {
- return module.l;
- }
- });
- Object.defineProperty(module, "id", {
- enumerable: true,
- get: function() {
- return module.i;
- }
- });
- module.webpackPolyfill = 1;
- }
- return module;
- };
- /***/ }),
- /* 59 */
- /*!****************************************!*\
- !*** (webpack)/buildin/amd-options.js ***!
- \****************************************/
- /*! no static exports found */
- /***/ (function(module, exports) {
- /* WEBPACK VAR INJECTION */(function(__webpack_amd_options__) {/* globals __webpack_amd_options__ */
- module.exports = __webpack_amd_options__;
- /* WEBPACK VAR INJECTION */}.call(this, {}))
- /***/ }),
- /* 60 */
- /*!**********************!*\
- !*** external "Vue" ***!
- \**********************/
- /*! no static exports found */
- /***/ (function(module, exports) {
- module.exports = Vue;
- /***/ }),
- /* 61 */
- /*!**************************************************!*\
- !*** D:/Work2/Orienteering/TrackOffical/App.vue ***!
- \**************************************************/
- /*! no static exports found */
- /***/ (function(module, __webpack_exports__, __webpack_require__) {
- "use strict";
- eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _App_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./App.vue?vue&type=script&lang=js& */ 62);\n/* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _App_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__) if([\"default\"].indexOf(__WEBPACK_IMPORT_KEY__) < 0) (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _App_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__[key]; }) }(__WEBPACK_IMPORT_KEY__));\n/* harmony import */ var _Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../Program Files/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/runtime/componentNormalizer.js */ 15);\nvar render, staticRenderFns, recyclableRender, components\nvar renderjs\n\n\n\n\n/* normalize component */\n\nvar component = Object(_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(\n _App_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__[\"default\"],\n render,\n staticRenderFns,\n false,\n null,\n null,\n null,\n false,\n components,\n renderjs\n)\n\ncomponent.options.__file = \"App.vue\"\n/* harmony default export */ __webpack_exports__[\"default\"] = (component.exports);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbbnVsbF0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUN1RDtBQUNMOzs7QUFHbEQ7QUFDOEs7QUFDOUssZ0JBQWdCLDJMQUFVO0FBQzFCLEVBQUUseUVBQU07QUFDUjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNlLGdGIiwiZmlsZSI6IjYxLmpzIiwic291cmNlc0NvbnRlbnQiOlsidmFyIHJlbmRlciwgc3RhdGljUmVuZGVyRm5zLCByZWN5Y2xhYmxlUmVuZGVyLCBjb21wb25lbnRzXG52YXIgcmVuZGVyanNcbmltcG9ydCBzY3JpcHQgZnJvbSBcIi4vQXBwLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz1qcyZcIlxuZXhwb3J0ICogZnJvbSBcIi4vQXBwLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz1qcyZcIlxuXG5cbi8qIG5vcm1hbGl6ZSBjb21wb25lbnQgKi9cbmltcG9ydCBub3JtYWxpemVyIGZyb20gXCIhLi4vLi4vLi4vUHJvZ3JhbSBGaWxlcy9IQnVpbGRlclgvcGx1Z2lucy91bmlhcHAtY2xpL25vZGVfbW9kdWxlcy9AZGNsb3VkaW8vdnVlLWNsaS1wbHVnaW4tdW5pL3BhY2thZ2VzL3Z1ZS1sb2FkZXIvbGliL3J1bnRpbWUvY29tcG9uZW50Tm9ybWFsaXplci5qc1wiXG52YXIgY29tcG9uZW50ID0gbm9ybWFsaXplcihcbiAgc2NyaXB0LFxuICByZW5kZXIsXG4gIHN0YXRpY1JlbmRlckZucyxcbiAgZmFsc2UsXG4gIG51bGwsXG4gIG51bGwsXG4gIG51bGwsXG4gIGZhbHNlLFxuICBjb21wb25lbnRzLFxuICByZW5kZXJqc1xuKVxuXG5jb21wb25lbnQub3B0aW9ucy5fX2ZpbGUgPSBcIkFwcC52dWVcIlxuZXhwb3J0IGRlZmF1bHQgY29tcG9uZW50LmV4cG9ydHMiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///61\n");
- /***/ }),
- /* 62 */
- /*!***************************************************************************!*\
- !*** D:/Work2/Orienteering/TrackOffical/App.vue?vue&type=script&lang=js& ***!
- \***************************************************************************/
- /*! no static exports found */
- /***/ (function(module, __webpack_exports__, __webpack_require__) {
- "use strict";
- eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_7_1_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_using_components_js_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_App_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../Program Files/HBuilderX/plugins/uniapp-cli/node_modules/babel-loader/lib!../../../Program Files/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--7-1!../../../Program Files/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/using-components.js!../../../Program Files/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib??vue-loader-options!./App.vue?vue&type=script&lang=js& */ 63);\n/* harmony import */ var _Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_7_1_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_using_components_js_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_App_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_7_1_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_using_components_js_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_App_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__);\n/* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_7_1_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_using_components_js_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_App_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__) if([\"default\"].indexOf(__WEBPACK_IMPORT_KEY__) < 0) (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_7_1_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_using_components_js_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_App_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__[key]; }) }(__WEBPACK_IMPORT_KEY__));\n /* harmony default export */ __webpack_exports__[\"default\"] = (_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_7_1_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_using_components_js_Program_Files_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_App_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0___default.a); //# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbbnVsbF0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQTJrQixDQUFnQixpbkJBQUcsRUFBQyIsImZpbGUiOiI2Mi5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBtb2QgZnJvbSBcIi0hLi4vLi4vLi4vUHJvZ3JhbSBGaWxlcy9IQnVpbGRlclgvcGx1Z2lucy91bmlhcHAtY2xpL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzIS4uLy4uLy4uL1Byb2dyYW0gRmlsZXMvSEJ1aWxkZXJYL3BsdWdpbnMvdW5pYXBwLWNsaS9ub2RlX21vZHVsZXMvQGRjbG91ZGlvL3Z1ZS1jbGktcGx1Z2luLXVuaS9wYWNrYWdlcy93ZWJwYWNrLXByZXByb2Nlc3MtbG9hZGVyL2luZGV4LmpzPz9yZWYtLTctMSEuLi8uLi8uLi9Qcm9ncmFtIEZpbGVzL0hCdWlsZGVyWC9wbHVnaW5zL3VuaWFwcC1jbGkvbm9kZV9tb2R1bGVzL0BkY2xvdWRpby92dWUtY2xpLXBsdWdpbi11bmkvcGFja2FnZXMvd2VicGFjay11bmktYXBwLWxvYWRlci91c2luZy1jb21wb25lbnRzLmpzIS4uLy4uLy4uL1Byb2dyYW0gRmlsZXMvSEJ1aWxkZXJYL3BsdWdpbnMvdW5pYXBwLWNsaS9ub2RlX21vZHVsZXMvQGRjbG91ZGlvL3Z1ZS1jbGktcGx1Z2luLXVuaS9wYWNrYWdlcy92dWUtbG9hZGVyL2xpYi9pbmRleC5qcz8/dnVlLWxvYWRlci1vcHRpb25zIS4vQXBwLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz1qcyZcIjsgZXhwb3J0IGRlZmF1bHQgbW9kOyBleHBvcnQgKiBmcm9tIFwiLSEuLi8uLi8uLi9Qcm9ncmFtIEZpbGVzL0hCdWlsZGVyWC9wbHVnaW5zL3VuaWFwcC1jbGkvbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanMhLi4vLi4vLi4vUHJvZ3JhbSBGaWxlcy9IQnVpbGRlclgvcGx1Z2lucy91bmlhcHAtY2xpL25vZGVfbW9kdWxlcy9AZGNsb3VkaW8vdnVlLWNsaS1wbHVnaW4tdW5pL3BhY2thZ2VzL3dlYnBhY2stcHJlcHJvY2Vzcy1sb2FkZXIvaW5kZXguanM/P3JlZi0tNy0xIS4uLy4uLy4uL1Byb2dyYW0gRmlsZXMvSEJ1aWxkZXJYL3BsdWdpbnMvdW5pYXBwLWNsaS9ub2RlX21vZHVsZXMvQGRjbG91ZGlvL3Z1ZS1jbGktcGx1Z2luLXVuaS9wYWNrYWdlcy93ZWJwYWNrLXVuaS1hcHAtbG9hZGVyL3VzaW5nLWNvbXBvbmVudHMuanMhLi4vLi4vLi4vUHJvZ3JhbSBGaWxlcy9IQnVpbGRlclgvcGx1Z2lucy91bmlhcHAtY2xpL25vZGVfbW9kdWxlcy9AZGNsb3VkaW8vdnVlLWNsaS1wbHVnaW4tdW5pL3BhY2thZ2VzL3Z1ZS1sb2FkZXIvbGliL2luZGV4LmpzPz92dWUtbG9hZGVyLW9wdGlvbnMhLi9BcHAudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPWpzJlwiIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///62\n");
- /***/ }),
- /* 63 */
- /*!********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
- !*** ./node_modules/babel-loader/lib!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--7-1!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/using-components.js!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib??vue-loader-options!D:/Work2/Orienteering/TrackOffical/App.vue?vue&type=script&lang=js& ***!
- \********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/
- /*! no static exports found */
- /***/ (function(module, exports, __webpack_require__) {
- "use strict";
- eval("/* WEBPACK VAR INJECTION */(function(__f__) {\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar _default = {\n onLaunch: function onLaunch() {\n __f__(\"log\", 'App Launch', \" at App.vue:4\");\n },\n onShow: function onShow() {\n __f__(\"log\", 'App Show', \" at App.vue:7\");\n },\n onHide: function onHide() {\n __f__(\"log\", 'App Hide', \" at App.vue:10\");\n }\n};\nexports.default = _default;\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./node_modules/@dcloudio/vue-cli-plugin-uni/lib/format-log.js */ 34)[\"default\"]))//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInVuaS1hcHA6Ly8vQXBwLnZ1ZSJdLCJuYW1lcyI6WyJvbkxhdW5jaCIsIm9uU2hvdyIsIm9uSGlkZSJdLCJtYXBwaW5ncyI6Ijs7Ozs7O2VBQ2U7RUFDZEEsUUFBUSxFQUFFLG9CQUFXO0lBQ3BCLGFBQVksWUFBWTtFQUN6QixDQUFDO0VBQ0RDLE1BQU0sRUFBRSxrQkFBVztJQUNsQixhQUFZLFVBQVU7RUFDdkIsQ0FBQztFQUNEQyxNQUFNLEVBQUUsa0JBQVc7SUFDbEIsYUFBWSxVQUFVO0VBQ3ZCO0FBQ0QsQ0FBQztBQUFBLDJCIiwiZmlsZSI6IjYzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiXG5leHBvcnQgZGVmYXVsdCB7XG5cdG9uTGF1bmNoOiBmdW5jdGlvbigpIHtcblx0XHRjb25zb2xlLmxvZygnQXBwIExhdW5jaCcpXG5cdH0sXG5cdG9uU2hvdzogZnVuY3Rpb24oKSB7XG5cdFx0Y29uc29sZS5sb2coJ0FwcCBTaG93Jylcblx0fSxcblx0b25IaWRlOiBmdW5jdGlvbigpIHtcblx0XHRjb25zb2xlLmxvZygnQXBwIEhpZGUnKVxuXHR9XG59XG4iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///63\n");
- /***/ }),
- /* 64 */
- /*!****************************************************************************!*\
- !*** D:/Work2/Orienteering/TrackOffical/grpc/track_offical_grpc_web_pb.js ***!
- \****************************************************************************/
- /*! no static exports found */
- /***/ (function(module, exports, __webpack_require__) {
- eval("/**\n * @fileoverview gRPC-Web generated client stub for to.v1\n * @enhanceable\n * @public\n */\n\n// Code generated by protoc-gen-grpc-web. DO NOT EDIT.\n// versions:\n// \tprotoc-gen-grpc-web v1.4.2\n// \tprotoc v3.20.3\n// source: track_offical.proto\n\n/* eslint-disable */\n// @ts-nocheck\n\nvar grpc = {};\ngrpc.web = __webpack_require__(/*! grpc-web */ 65);\nvar base_pb = __webpack_require__(/*! ./base_pb.js */ 38);\nvar proto = {};\nproto.to = {};\nproto.to.v1 = __webpack_require__(/*! ./track_offical_pb.js */ 66);\n\n/**\n * @param {string} hostname\n * @param {?Object} credentials\n * @param {?grpc.web.ClientOptions} options\n * @constructor\n * @struct\n * @final\n */\nproto.to.v1.ApiToClient = function (hostname, credentials, options) {\n if (!options) options = {};\n options.format = 'text';\n\n /**\n * @private @const {!grpc.web.GrpcWebClientBase} The client\n */\n this.client_ = new grpc.web.GrpcWebClientBase(options);\n\n /**\n * @private @const {string} The hostname\n */\n this.hostname_ = hostname.replace(/\\/+$/, '');\n};\n\n/**\n * @param {string} hostname\n * @param {?Object} credentials\n * @param {?grpc.web.ClientOptions} options\n * @constructor\n * @struct\n * @final\n */\nproto.to.v1.ApiToPromiseClient = function (hostname, credentials, options) {\n if (!options) options = {};\n options.format = 'text';\n\n /**\n * @private @const {!grpc.web.GrpcWebClientBase} The client\n */\n this.client_ = new grpc.web.GrpcWebClientBase(options);\n\n /**\n * @private @const {string} The hostname\n */\n this.hostname_ = hostname.replace(/\\/+$/, '');\n};\n\n/**\n * @const\n * @type {!grpc.web.MethodDescriptor<\n * !proto.base.v1.DefaultRequest,\n * !proto.to.v1.ToActionListReply>}\n */\nvar methodDescriptor_ApiTo_ToActionList = new grpc.web.MethodDescriptor('/to.v1.ApiTo/ToActionList', grpc.web.MethodType.UNARY, base_pb.DefaultRequest, proto.to.v1.ToActionListReply,\n/**\n * @param {!proto.base.v1.DefaultRequest} request\n * @return {!Uint8Array}\n */\nfunction (request) {\n return request.serializeBinary();\n}, proto.to.v1.ToActionListReply.deserializeBinary);\n\n/**\n * @param {!proto.base.v1.DefaultRequest} request The\n * request proto\n * @param {?Object<string, string>} metadata User defined\n * call metadata\n * @param {function(?grpc.web.RpcError, ?proto.to.v1.ToActionListReply)}\n * callback The callback function(error, response)\n * @return {!grpc.web.ClientReadableStream<!proto.to.v1.ToActionListReply>|undefined}\n * The XHR Node Readable Stream\n */\nproto.to.v1.ApiToClient.prototype.toActionList = function (request, metadata, callback) {\n return this.client_.rpcCall(this.hostname_ + '/to.v1.ApiTo/ToActionList', request, metadata || {}, methodDescriptor_ApiTo_ToActionList, callback);\n};\n\n/**\n * @param {!proto.base.v1.DefaultRequest} request The\n * request proto\n * @param {?Object<string, string>=} metadata User defined\n * call metadata\n * @return {!Promise<!proto.to.v1.ToActionListReply>}\n * Promise that resolves to the response\n */\nproto.to.v1.ApiToPromiseClient.prototype.toActionList = function (request, metadata) {\n return this.client_.unaryCall(this.hostname_ + '/to.v1.ApiTo/ToActionList', request, metadata || {}, methodDescriptor_ApiTo_ToActionList);\n};\n\n/**\n * @const\n * @type {!grpc.web.MethodDescriptor<\n * !proto.base.v1.IdRequest,\n * !proto.to.v1.ToActionDetailReply>}\n */\nvar methodDescriptor_ApiTo_ToActionDetail = new grpc.web.MethodDescriptor('/to.v1.ApiTo/ToActionDetail', grpc.web.MethodType.UNARY, base_pb.IdRequest, proto.to.v1.ToActionDetailReply,\n/**\n * @param {!proto.base.v1.IdRequest} request\n * @return {!Uint8Array}\n */\nfunction (request) {\n return request.serializeBinary();\n}, proto.to.v1.ToActionDetailReply.deserializeBinary);\n\n/**\n * @param {!proto.base.v1.IdRequest} request The\n * request proto\n * @param {?Object<string, string>} metadata User defined\n * call metadata\n * @param {function(?grpc.web.RpcError, ?proto.to.v1.ToActionDetailReply)}\n * callback The callback function(error, response)\n * @return {!grpc.web.ClientReadableStream<!proto.to.v1.ToActionDetailReply>|undefined}\n * The XHR Node Readable Stream\n */\nproto.to.v1.ApiToClient.prototype.toActionDetail = function (request, metadata, callback) {\n return this.client_.rpcCall(this.hostname_ + '/to.v1.ApiTo/ToActionDetail', request, metadata || {}, methodDescriptor_ApiTo_ToActionDetail, callback);\n};\n\n/**\n * @param {!proto.base.v1.IdRequest} request The\n * request proto\n * @param {?Object<string, string>=} metadata User defined\n * call metadata\n * @return {!Promise<!proto.to.v1.ToActionDetailReply>}\n * Promise that resolves to the response\n */\nproto.to.v1.ApiToPromiseClient.prototype.toActionDetail = function (request, metadata) {\n return this.client_.unaryCall(this.hostname_ + '/to.v1.ApiTo/ToActionDetail', request, metadata || {}, methodDescriptor_ApiTo_ToActionDetail);\n};\n\n/**\n * @const\n * @type {!grpc.web.MethodDescriptor<\n * !proto.base.v1.IdRequest,\n * !proto.to.v1.ToActionUsersDetailReply>}\n */\nvar methodDescriptor_ApiTo_ToUsersInGameDetail = new grpc.web.MethodDescriptor('/to.v1.ApiTo/ToUsersInGameDetail', grpc.web.MethodType.UNARY, base_pb.IdRequest, proto.to.v1.ToActionUsersDetailReply,\n/**\n * @param {!proto.base.v1.IdRequest} request\n * @return {!Uint8Array}\n */\nfunction (request) {\n return request.serializeBinary();\n}, proto.to.v1.ToActionUsersDetailReply.deserializeBinary);\n\n/**\n * @param {!proto.base.v1.IdRequest} request The\n * request proto\n * @param {?Object<string, string>} metadata User defined\n * call metadata\n * @param {function(?grpc.web.RpcError, ?proto.to.v1.ToActionUsersDetailReply)}\n * callback The callback function(error, response)\n * @return {!grpc.web.ClientReadableStream<!proto.to.v1.ToActionUsersDetailReply>|undefined}\n * The XHR Node Readable Stream\n */\nproto.to.v1.ApiToClient.prototype.toUsersInGameDetail = function (request, metadata, callback) {\n return this.client_.rpcCall(this.hostname_ + '/to.v1.ApiTo/ToUsersInGameDetail', request, metadata || {}, methodDescriptor_ApiTo_ToUsersInGameDetail, callback);\n};\n\n/**\n * @param {!proto.base.v1.IdRequest} request The\n * request proto\n * @param {?Object<string, string>=} metadata User defined\n * call metadata\n * @return {!Promise<!proto.to.v1.ToActionUsersDetailReply>}\n * Promise that resolves to the response\n */\nproto.to.v1.ApiToPromiseClient.prototype.toUsersInGameDetail = function (request, metadata) {\n return this.client_.unaryCall(this.hostname_ + '/to.v1.ApiTo/ToUsersInGameDetail', request, metadata || {}, methodDescriptor_ApiTo_ToUsersInGameDetail);\n};\n\n/**\n * @const\n * @type {!grpc.web.MethodDescriptor<\n * !proto.base.v1.IdRequest,\n * !proto.to.v1.ToUserGpsQueryReply>}\n */\nvar methodDescriptor_ApiTo_ToUsersInGameGpsQuery = new grpc.web.MethodDescriptor('/to.v1.ApiTo/ToUsersInGameGpsQuery', grpc.web.MethodType.UNARY, base_pb.IdRequest, proto.to.v1.ToUserGpsQueryReply,\n/**\n * @param {!proto.base.v1.IdRequest} request\n * @return {!Uint8Array}\n */\nfunction (request) {\n return request.serializeBinary();\n}, proto.to.v1.ToUserGpsQueryReply.deserializeBinary);\n\n/**\n * @param {!proto.base.v1.IdRequest} request The\n * request proto\n * @param {?Object<string, string>} metadata User defined\n * call metadata\n * @param {function(?grpc.web.RpcError, ?proto.to.v1.ToUserGpsQueryReply)}\n * callback The callback function(error, response)\n * @return {!grpc.web.ClientReadableStream<!proto.to.v1.ToUserGpsQueryReply>|undefined}\n * The XHR Node Readable Stream\n */\nproto.to.v1.ApiToClient.prototype.toUsersInGameGpsQuery = function (request, metadata, callback) {\n return this.client_.rpcCall(this.hostname_ + '/to.v1.ApiTo/ToUsersInGameGpsQuery', request, metadata || {}, methodDescriptor_ApiTo_ToUsersInGameGpsQuery, callback);\n};\n\n/**\n * @param {!proto.base.v1.IdRequest} request The\n * request proto\n * @param {?Object<string, string>=} metadata User defined\n * call metadata\n * @return {!Promise<!proto.to.v1.ToUserGpsQueryReply>}\n * Promise that resolves to the response\n */\nproto.to.v1.ApiToPromiseClient.prototype.toUsersInGameGpsQuery = function (request, metadata) {\n return this.client_.unaryCall(this.hostname_ + '/to.v1.ApiTo/ToUsersInGameGpsQuery', request, metadata || {}, methodDescriptor_ApiTo_ToUsersInGameGpsQuery);\n};\n\n/**\n * @const\n * @type {!grpc.web.MethodDescriptor<\n * !proto.to.v1.ToUsersInGameHistoryGpsQueryRequest,\n * !proto.to.v1.ToUserGpsQueryReply>}\n */\nvar methodDescriptor_ApiTo_ToUsersInGameHistoryGpsQuery = new grpc.web.MethodDescriptor('/to.v1.ApiTo/ToUsersInGameHistoryGpsQuery', grpc.web.MethodType.UNARY, proto.to.v1.ToUsersInGameHistoryGpsQueryRequest, proto.to.v1.ToUserGpsQueryReply,\n/**\n * @param {!proto.to.v1.ToUsersInGameHistoryGpsQueryRequest} request\n * @return {!Uint8Array}\n */\nfunction (request) {\n return request.serializeBinary();\n}, proto.to.v1.ToUserGpsQueryReply.deserializeBinary);\n\n/**\n * @param {!proto.to.v1.ToUsersInGameHistoryGpsQueryRequest} request The\n * request proto\n * @param {?Object<string, string>} metadata User defined\n * call metadata\n * @param {function(?grpc.web.RpcError, ?proto.to.v1.ToUserGpsQueryReply)}\n * callback The callback function(error, response)\n * @return {!grpc.web.ClientReadableStream<!proto.to.v1.ToUserGpsQueryReply>|undefined}\n * The XHR Node Readable Stream\n */\nproto.to.v1.ApiToClient.prototype.toUsersInGameHistoryGpsQuery = function (request, metadata, callback) {\n return this.client_.rpcCall(this.hostname_ + '/to.v1.ApiTo/ToUsersInGameHistoryGpsQuery', request, metadata || {}, methodDescriptor_ApiTo_ToUsersInGameHistoryGpsQuery, callback);\n};\n\n/**\n * @param {!proto.to.v1.ToUsersInGameHistoryGpsQueryRequest} request The\n * request proto\n * @param {?Object<string, string>=} metadata User defined\n * call metadata\n * @return {!Promise<!proto.to.v1.ToUserGpsQueryReply>}\n * Promise that resolves to the response\n */\nproto.to.v1.ApiToPromiseClient.prototype.toUsersInGameHistoryGpsQuery = function (request, metadata) {\n return this.client_.unaryCall(this.hostname_ + '/to.v1.ApiTo/ToUsersInGameHistoryGpsQuery', request, metadata || {}, methodDescriptor_ApiTo_ToUsersInGameHistoryGpsQuery);\n};\n\n/**\n * @const\n * @type {!grpc.web.MethodDescriptor<\n * !proto.to.v1.ToAnyUserHistoryGpsQueryRequest,\n * !proto.to.v1.ToUserGpsQueryReply>}\n */\nvar methodDescriptor_ApiTo_ToAnyUserHistoryGpsQuery = new grpc.web.MethodDescriptor('/to.v1.ApiTo/ToAnyUserHistoryGpsQuery', grpc.web.MethodType.UNARY, proto.to.v1.ToAnyUserHistoryGpsQueryRequest, proto.to.v1.ToUserGpsQueryReply,\n/**\n * @param {!proto.to.v1.ToAnyUserHistoryGpsQueryRequest} request\n * @return {!Uint8Array}\n */\nfunction (request) {\n return request.serializeBinary();\n}, proto.to.v1.ToUserGpsQueryReply.deserializeBinary);\n\n/**\n * @param {!proto.to.v1.ToAnyUserHistoryGpsQueryRequest} request The\n * request proto\n * @param {?Object<string, string>} metadata User defined\n * call metadata\n * @param {function(?grpc.web.RpcError, ?proto.to.v1.ToUserGpsQueryReply)}\n * callback The callback function(error, response)\n * @return {!grpc.web.ClientReadableStream<!proto.to.v1.ToUserGpsQueryReply>|undefined}\n * The XHR Node Readable Stream\n */\nproto.to.v1.ApiToClient.prototype.toAnyUserHistoryGpsQuery = function (request, metadata, callback) {\n return this.client_.rpcCall(this.hostname_ + '/to.v1.ApiTo/ToAnyUserHistoryGpsQuery', request, metadata || {}, methodDescriptor_ApiTo_ToAnyUserHistoryGpsQuery, callback);\n};\n\n/**\n * @param {!proto.to.v1.ToAnyUserHistoryGpsQueryRequest} request The\n * request proto\n * @param {?Object<string, string>=} metadata User defined\n * call metadata\n * @return {!Promise<!proto.to.v1.ToUserGpsQueryReply>}\n * Promise that resolves to the response\n */\nproto.to.v1.ApiToPromiseClient.prototype.toAnyUserHistoryGpsQuery = function (request, metadata) {\n return this.client_.unaryCall(this.hostname_ + '/to.v1.ApiTo/ToAnyUserHistoryGpsQuery', request, metadata || {}, methodDescriptor_ApiTo_ToAnyUserHistoryGpsQuery);\n};\nmodule.exports = proto.to.v1;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInVuaS1hcHA6Ly8vZ3JwYy90cmFja19vZmZpY2FsX2dycGNfd2ViX3BiLmpzIl0sIm5hbWVzIjpbImdycGMiLCJ3ZWIiLCJyZXF1aXJlIiwiYmFzZV9wYiIsInByb3RvIiwidG8iLCJ2MSIsIkFwaVRvQ2xpZW50IiwiaG9zdG5hbWUiLCJjcmVkZW50aWFscyIsIm9wdGlvbnMiLCJmb3JtYXQiLCJjbGllbnRfIiwiR3JwY1dlYkNsaWVudEJhc2UiLCJob3N0bmFtZV8iLCJyZXBsYWNlIiwiQXBpVG9Qcm9taXNlQ2xpZW50IiwibWV0aG9kRGVzY3JpcHRvcl9BcGlUb19Ub0FjdGlvbkxpc3QiLCJNZXRob2REZXNjcmlwdG9yIiwiTWV0aG9kVHlwZSIsIlVOQVJZIiwiRGVmYXVsdFJlcXVlc3QiLCJUb0FjdGlvbkxpc3RSZXBseSIsInJlcXVlc3QiLCJzZXJpYWxpemVCaW5hcnkiLCJkZXNlcmlhbGl6ZUJpbmFyeSIsInByb3RvdHlwZSIsInRvQWN0aW9uTGlzdCIsIm1ldGFkYXRhIiwiY2FsbGJhY2siLCJycGNDYWxsIiwidW5hcnlDYWxsIiwibWV0aG9kRGVzY3JpcHRvcl9BcGlUb19Ub0FjdGlvbkRldGFpbCIsIklkUmVxdWVzdCIsIlRvQWN0aW9uRGV0YWlsUmVwbHkiLCJ0b0FjdGlvbkRldGFpbCIsIm1ldGhvZERlc2NyaXB0b3JfQXBpVG9fVG9Vc2Vyc0luR2FtZURldGFpbCIsIlRvQWN0aW9uVXNlcnNEZXRhaWxSZXBseSIsInRvVXNlcnNJbkdhbWVEZXRhaWwiLCJtZXRob2REZXNjcmlwdG9yX0FwaVRvX1RvVXNlcnNJbkdhbWVHcHNRdWVyeSIsIlRvVXNlckdwc1F1ZXJ5UmVwbHkiLCJ0b1VzZXJzSW5HYW1lR3BzUXVlcnkiLCJtZXRob2REZXNjcmlwdG9yX0FwaVRvX1RvVXNlcnNJbkdhbWVIaXN0b3J5R3BzUXVlcnkiLCJUb1VzZXJzSW5HYW1lSGlzdG9yeUdwc1F1ZXJ5UmVxdWVzdCIsInRvVXNlcnNJbkdhbWVIaXN0b3J5R3BzUXVlcnkiLCJtZXRob2REZXNjcmlwdG9yX0FwaVRvX1RvQW55VXNlckhpc3RvcnlHcHNRdWVyeSIsIlRvQW55VXNlckhpc3RvcnlHcHNRdWVyeVJlcXVlc3QiLCJ0b0FueVVzZXJIaXN0b3J5R3BzUXVlcnkiLCJtb2R1bGUiLCJleHBvcnRzIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBR0E7QUFDQTs7QUFJQSxJQUFNQSxJQUFJLEdBQUcsQ0FBQyxDQUFDO0FBQ2ZBLElBQUksQ0FBQ0MsR0FBRyxHQUFHQyxtQkFBTyxDQUFDLGtCQUFVLENBQUM7QUFHOUIsSUFBSUMsT0FBTyxHQUFHRCxtQkFBTyxDQUFDLHNCQUFjLENBQUM7QUFDckMsSUFBTUUsS0FBSyxHQUFHLENBQUMsQ0FBQztBQUNoQkEsS0FBSyxDQUFDQyxFQUFFLEdBQUcsQ0FBQyxDQUFDO0FBQ2JELEtBQUssQ0FBQ0MsRUFBRSxDQUFDQyxFQUFFLEdBQUdKLG1CQUFPLENBQUMsK0JBQXVCLENBQUM7O0FBRTlDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQUUsS0FBSyxDQUFDQyxFQUFFLENBQUNDLEVBQUUsQ0FBQ0MsV0FBVyxHQUNuQixVQUFTQyxRQUFRLEVBQUVDLFdBQVcsRUFBRUMsT0FBTyxFQUFFO0VBQzNDLElBQUksQ0FBQ0EsT0FBTyxFQUFFQSxPQUFPLEdBQUcsQ0FBQyxDQUFDO0VBQzFCQSxPQUFPLENBQUNDLE1BQU0sR0FBRyxNQUFNOztFQUV2QjtBQUNGO0FBQ0E7RUFDRSxJQUFJLENBQUNDLE9BQU8sR0FBRyxJQUFJWixJQUFJLENBQUNDLEdBQUcsQ0FBQ1ksaUJBQWlCLENBQUNILE9BQU8sQ0FBQzs7RUFFdEQ7QUFDRjtBQUNBO0VBQ0UsSUFBSSxDQUFDSSxTQUFTLEdBQUdOLFFBQVEsQ0FBQ08sT0FBTyxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUM7QUFFL0MsQ0FBQzs7QUFHRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtB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K0MsQ0FBQztBQUN0RCxDQUFDO0FBR0RHLE1BQU0sQ0FBQ0MsT0FBTyxHQUFHN0MsS0FBSyxDQUFDQyxFQUFFLENBQUNDLEVBQUUiLCJmaWxlIjoiNjQuanMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBmaWxlb3ZlcnZpZXcgZ1JQQy1XZWIgZ2VuZXJhdGVkIGNsaWVudCBzdHViIGZvciB0by52MVxuICogQGVuaGFuY2VhYmxlXG4gKiBAcHVibGljXG4gKi9cblxuLy8gQ29kZSBnZW5lcmF0ZWQgYnkgcHJvdG9jLWdlbi1ncnBjLXdlYi4gRE8gTk9UIEVESVQuXG4vLyB2ZXJzaW9uczpcbi8vIFx0cHJvdG9jLWdlbi1ncnBjLXdlYiB2MS40LjJcbi8vIFx0cHJvdG9jICAgICAgICAgICAgICB2My4yMC4zXG4vLyBzb3VyY2U6IHRyYWNrX29mZmljYWwucHJvdG9cblxuXG4vKiBlc2xpbnQtZGlzYWJsZSAqL1xuLy8gQHRzLW5vY2hlY2tcblxuXG5cbmNvbnN0IGdycGMgPSB7fTtcbmdycGMud2ViID0gcmVxdWlyZSgnZ3JwYy13ZWInKTtcblxuXG52YXIgYmFzZV9wYiA9IHJlcXVpcmUoJy4vYmFzZV9wYi5qcycpXG5jb25zdCBwcm90byA9IHt9O1xucHJvdG8udG8gPSB7fTtcbnByb3RvLnRvLnYxID0gcmVxdWlyZSgnLi90cmFja19vZmZpY2FsX3BiLmpzJyk7XG5cbi8qKlxuICogQHBhcmFtIHtzdHJpbmd9IGhvc3RuYW1lXG4gKiBAcGFyYW0gez9PYmplY3R9IGNyZWRlbnRpYWxzXG4gKiBAcGFyYW0gez9ncnBjLndlYi5DbGllbnRPcHRpb25zfSBvcHRpb25zXG4gKiBAY29uc3RydWN0b3JcbiAqIEBzdHJ1Y3RcbiAqIEBmaW5hbFxuICovXG5wcm90by50by52MS5BcGlUb0NsaWVudCA9XG4gICAgZnVuY3Rpb24oaG9zdG5hbWUsIGNyZWRlbnRpYWxzLCBvcHRpb25zKSB7XG4gIGlmICghb3B0aW9ucykgb3B0aW9ucyA9IHt9O1xuICBvcHRpb25zLmZvcm1hdCA9ICd0ZXh0JztcblxuICAvKipcbiAgICogQHByaXZhdGUgQGNvbnN0IHshZ3JwYy53ZWIuR3JwY1dlYkNsaWVudEJhc2V9IFRoZSBjbGllbnRcbiAgICovXG4gIHRoaXMuY2xpZW50XyA9IG5ldyBncnBjLndlYi5HcnBjV2ViQ2xpZW50QmFzZShvcHRpb25zKTtcblxuICAvKipcbiAgICogQHByaXZhdGUgQGNvbnN0IHtzdHJpbmd9IFRoZSBob3N0bmFtZVxuICAgKi9cbiAgdGhpcy5ob3N0bmFtZV8gPSBob3N0bmFtZS5yZXBsYWNlKC9cXC8rJC8sICcnKTtcblxufTtcblxuXG4vKipcbiAqIEBwYXJhbSB7c3RyaW5nfSBob3N0bmFtZVxuICogQHBhcmFtIHs/T2JqZWN0fSBjcmVkZW50aWFsc1xuICogQHBhcmFtIHs/Z3JwYy53ZWIuQ2xpZW50T3B0aW9uc30gb3B0aW9uc1xuICogQGNvbnN0cnVjdG9yXG4gKiBAc3RydWN0XG4gKiBAZmluYWxcbiAqL1xucHJvdG8udG8udjEuQXBpVG9Qcm9taXNlQ2xpZW50ID1cbiAgICBmdW5jdGlvbihob3N0bmFtZSwgY3JlZGVudGlhbHMsIG9wdGlvbnMpIHtcbiAgaWYgKCFvcHRpb25zKSBvcHRpb25zID0ge307XG4gIG9wdGlvbnMuZm9ybWF0ID0gJ3RleHQnO1xuXG4gIC8qKlxuICAgKiBAcHJpdmF0ZSBAY29uc3QgeyFncnBjLndlYi5HcnBjV2ViQ2xpZW50QmFzZX0gVGhlIGNsaWVudFxuICAgKi9cbiAgdGhpcy5jbGllbnRfID0gbmV3IGdycGMud2ViLkdycGNXZWJDbGllbnRCYXNlKG9wdGlvbnMpO1xuXG4gIC8qKlxuICAgKiBAcHJpdmF0ZSBAY29uc3Qge3N0cmluZ30gVGhlIGhvc3RuYW1lXG4gICAqL1xuICB0aGlzLmhvc3RuYW1lXyA9IGhvc3RuYW1lLnJlcGxhY2UoL1xcLyskLywgJycpO1xuXG59O1xuXG5cbi8qKlxuICogQGNvbnN0XG4gKiBAdHlwZSB7IWdycGMud2ViLk1ldGhvZERlc2NyaXB0b3I8XG4gKiAgICFwcm90by5iYXNlLnYxLkRlZmF1bHRSZXF1ZXN0LFxuICogICAhcHJvdG8udG8udjEuVG9BY3Rpb25MaXN0UmVwbHk+fVxuICovXG5jb25zdCBtZXRob2REZXNjcmlwdG9yX0FwaVRvX1RvQWN0aW9uTGlzdCA9IG5ldyBncnBjLndlYi5NZXRob2REZXNjcmlwdG9yKFxuICAnL3RvLnYxLkFwaVRvL1RvQWN0aW9uTGlzdCcsXG4gIGdycGMud2ViLk1ldGhvZFR5cGUuVU5BUlksXG4gIGJhc2VfcGIuRGVmYXVsdFJlcXVlc3QsXG4gIHByb3RvLnRvLnYxLlRvQWN0aW9uTGlzdFJlcGx5LFxuICAvKipcbiAgICogQHBhcmFtIHshcHJvdG8uYmFzZS52MS5EZWZhdWx0UmVxdWVzdH0gcmVxdWVzdFxuICAgKiBAcmV0dXJuIHshVWludDhBcnJheX1cbiAgICovXG4gIGZ1bmN0aW9uKHJlcXVlc3QpIHtcbiAgICByZXR1cm4gcmVxdWVzdC5zZXJpYWxpemVCaW5hcnkoKTtcbiAgfSxcbiAgcHJvdG8udG8udjEuVG9BY3Rpb25MaXN0UmVwbHkuZGVzZXJpYWxpemVCaW5hcnlcbik7XG5cblxuLyoqXG4gKiBAcGFyYW0geyFwcm90by5iYXNlLnYxLkRlZmF1bHRSZXF1ZXN0fSByZXF1ZXN0IFRoZVxuICogICAgIHJlcXVlc3QgcHJvdG9cbiAqIEBwYXJhbSB7P09iamVjdDxzdHJpbmcsIHN0cmluZz59IG1ldGFkYXRhIFVzZXIgZGVmaW5lZFxuICogICAgIGNhbGwgbWV0YWRhdGFcbiAqIEBwYXJhbSB7ZnVuY3Rpb24oP2dycGMud2ViLlJwY0Vycm9yLCA/cHJvdG8udG8udjEuVG9BY3Rpb25MaXN0UmVwbHkpfVxuICogICAgIGNhbGxiYWNrIFRoZSBjYWxsYmFjayBmdW5jdGlvbihlcnJvciwgcmVzcG9uc2UpXG4gKiBAcmV0dXJuIHshZ3JwYy53ZWIuQ2xpZW50UmVhZGFibGVTdHJlYW08IXByb3RvLnRvLnYxLlRvQWN0aW9uTGlzdFJlcGx5Pnx1bmRlZmluZWR9XG4gKiAgICAgVGhlIFhIUiBOb2RlIFJlYWRhYmxlIFN0cmVhbVxuICovXG5wcm90by50by52MS5BcGlUb0NsaWVudC5wcm90b3R5cGUudG9BY3Rpb25MaXN0ID1cbiAgICBmdW5jdGlvbihyZXF1ZXN0LCBtZXRhZGF0YSwgY2FsbGJhY2spIHtcbiAgcmV0dXJuIHRoaXMuY2xpZW50Xy5ycGNDYWxsKHRoaXMuaG9zdG5hbWVfICtcbiAgICAgICcvdG8udjEuQXBpVG8vVG9BY3Rpb25MaXN0JyxcbiAgICAgIHJlcXVlc3QsXG4gICAgICBtZXRhZGF0YSB8fCB7fSxcbiAgICAgIG1ldGhvZERlc2NyaXB0b3JfQXBpVG9fVG9BY3Rpb25MaXN0LFxuICAgICAgY2FsbGJhY2spO1xufTtcblxuXG4vKipcbiAqIEBwYXJhbSB7IXByb3RvLmJhc2UudjEuRGVmYXVsdFJlcXVlc3R9IHJlcXVlc3QgVGhlXG4gKiAgICAgcmVxdWVzdCBwcm90b1xuICogQHBhcmFtIHs/T2JqZWN0PHN0cmluZywgc3RyaW5nPj19IG1ldGFkYXRhIFVzZXIgZGVmaW5lZFxuICogICAgIGNhbGwgbWV0YWRhdGFcbiAqIEByZXR1cm4geyFQcm9taXNlPCFwcm90by50by52MS5Ub0FjdGlvbkxpc3RSZXBseT59XG4gKiAgICAgUHJvbWlzZSB0aGF0IHJlc29sdmVzIHRvIHRoZSByZXNwb25zZVxuICovXG5wcm90by50by52MS5BcGlUb1Byb21pc2VDbGllbnQucHJvdG90eXBlLnRvQWN0aW9uTGlzdCA9XG4gICAgZnVuY3Rpb24ocmVxdWVzdCwgbWV0YWRhdGEpIHtcbiAgcmV0dXJuIHRoaXMuY2xpZW50Xy51bmFyeUNhbGwodGhpcy5ob3N0bmFtZV8gK1xuICAgICAgJy90by52MS5BcGlUby9Ub0FjdGlvbkxpc3QnLFxuICAgICAgcmVxdWVzdCxcbiAgICAgIG1ldGFkYXRhIHx8IHt9LFxuICAgICAgbWV0aG9kRGVzY3JpcHRvcl9BcGlUb19Ub0FjdGlvbkxpc3QpO1xufTtcblxuXG4vKipcbiAqIEBjb25zdFxuICogQHR5cGUgeyFncnBjLndlYi5NZXRob2REZXNjcmlwdG9yPFxuICogICAhcHJvdG8uYmFzZS52MS5JZFJlcXVlc3QsXG4gKiAgICFwcm90by50by52MS5Ub0FjdGlvbkRldGFpbFJlcGx5Pn1cbiAqL1xuY29uc3QgbWV0aG9kRGVzY3JpcHRvcl9BcGlUb19Ub0FjdGlvbkRldGFpbCA9IG5ldyBncnBjLndlYi5NZXRob2REZXNjcmlwdG9yKFxuICAnL3RvLnYxLkFwaVRvL1RvQWN0aW9uRGV0YWlsJyxcbiAgZ3JwYy53ZWIuTWV0aG9kVHlwZS5VTkFSWSxcbiAgYmFzZV9wYi5JZFJlcXVlc3QsXG4gIHByb3RvLnRvLnYxLlRvQWN0aW9uRGV0YWlsUmVwbHksXG4gIC8qKlxuICAgKiBAcGFyYW0geyFwcm90by5iYXNlLnYxLklkUmVxdWVzdH0gcmVxdWVzdFxuICAgKiBAcmV0dXJuIHshVWludDhBcnJheX1cbiAgICovXG4gIGZ1bmN0aW9uKHJlcXVlc3QpIHtcbiAgICByZXR1cm4gcmVxdWVzdC5zZXJpYWxpemVCaW5hcnkoKTtcbiAgfSxcbiAgcHJvdG8udG8udjEuVG9BY3Rpb25EZXRhaWxSZXBseS5kZXNlcmlhbGl6ZUJpbmFyeVxuKTtcblxuXG4vKipcbiAqIEBwYXJhbSB7IXByb3RvLmJhc2UudjEuSWRSZXF1ZXN0fSByZXF1ZXN0IFRoZVxuICogICAgIHJlcXVlc3QgcHJvdG9cbiAqIEBwYXJhbSB7P09iamVjdDxzdHJpbmcsIHN0cmluZz59IG1ldGFkYXRhIFVzZXIgZGVmaW5lZFxuICogICAgIGNhbGwgbWV0YWRhdGFcbiAqIEBwYXJhbSB7ZnVuY3Rpb24oP2dycGMud2ViLlJwY0Vycm9yLCA/cHJvdG8udG8udjEuVG9BY3Rpb25EZXRhaWxSZXBseSl9XG4gKiAgICAgY2FsbGJhY2sgVGhlIGNhbGxiYWNrIGZ1bmN0aW9uKGVycm9yLCByZXNwb25zZSlcbiAqIEByZXR1cm4geyFncnBjLndlYi5DbGllbnRSZWFkYWJsZVN0cmVhbTwhcHJvdG8udG8udjEuVG9BY3Rpb25EZXRhaWxSZXBseT58dW5kZWZpbmVkfVxuICogICAgIFRoZSBYSFIgTm9kZSBSZWFkYWJsZSBTdHJlYW1cbiAqL1xucHJvdG8udG8udjEuQXBpVG9DbGllbnQucHJvdG90eXBlLnRvQWN0aW9uRGV0YWlsID1cbiAgICBmdW5jdGlvbihyZXF1ZXN0LCBtZXRhZGF0YSwgY2FsbGJhY2spIHtcbiAgcmV0dXJuIHRoaXMuY2xpZW50Xy5ycGNDYWxsKHRoaXMuaG9zdG5hbWVfICtcbiAgICAgICcvdG8udjEuQXBpVG8vVG9BY3Rpb25EZXRhaWwnLFxuICAgICAgcmVxdWVzdCxcbiAgICAgIG1ldGFkYXRhIHx8IHt9LFxuICAgICAgbWV0aG9kRGVzY3JpcHRvcl9BcGlUb19Ub0FjdGlvbkRldGFpbCxcbiAgICAgIGNhbGxiYWNrKTtcbn07XG5cblxuLyoqXG4gKiBAcGFyYW0geyFwcm90by5iYXNlLnYxLklkUmVxdWVzdH0gcmVxdWVzdCBUaGVcbiAqICAgICByZXF1ZXN0IHByb3RvXG4gKiBAcGFyYW0gez9PYmplY3Q8c3RyaW5nLCBzdHJpbmc+PX0gbWV0YWRhdGEgVXNlciBkZWZpbmVkXG4gKiAgICAgY2FsbCBtZXRhZGF0YVxuICogQHJldHVybiB7IVByb21pc2U8IXByb3RvLnRvLnYxLlRvQWN0aW9uRGV0YWlsUmVwbHk+fVxuICogICAgIFByb21pc2UgdGhhdCByZXNvbHZlcyB0byB0aGUgcmVzcG9uc2VcbiAqL1xucHJvdG8udG8udjEuQXBpVG9Qcm9taXNlQ2xpZW50LnByb3RvdHlwZS50b0FjdGlvbkRldGFpbCA9XG4gICAgZnVuY3Rpb24ocmVxdWVzdCwgbWV0YWRhdGEpIHtcbiAgcmV0dXJuIHRoaXMuY2xpZW50Xy51bmFyeUNhbGwodGhpcy5ob3N0bmFtZV8gK1xuICAgICAgJy90by52MS5BcGlUby9Ub0FjdGlvbkRldGFpbCcsXG4gICAgICByZXF1ZXN0LFxuICAgICAgbWV0YWRhdGEgfHwge30sXG4gICAgICBtZXRob2REZXNjcmlwdG9yX0FwaVRvX1RvQWN0aW9uRGV0YWlsKTtcbn07XG5cblxuLyoqXG4gKiBAY29uc3RcbiAqIEB0eXBlIHshZ3JwYy53ZWIuTWV0aG9kRGVzY3JpcHRvcjxcbiAqICAgIXByb3RvLmJhc2UudjEuSWRSZXF1ZXN0LFxuICogICAhcHJvdG8udG8udjEuVG9BY3Rpb25Vc2Vyc0RldGFpbFJlcGx5Pn1cbiAqL1xuY29uc3QgbWV0aG9kRGVzY3JpcHRvcl9BcGlUb19Ub1VzZXJzSW5HYW1lRGV0YWlsID0gbmV3IGdycGMud2ViLk1ldGhvZERlc2NyaXB0b3IoXG4gICcvdG8udjEuQXBpVG8vVG9Vc2Vyc0luR2FtZURldGFpbCcsXG4gIGdycGMud2ViLk1ldGhvZFR5cGUuVU5BUlksXG4gIGJhc2VfcGIuSWRSZXF1ZXN0LFxuICBwcm90by50by52MS5Ub0FjdGlvblVzZXJzRGV0YWlsUmVwbHksXG4gIC8qKlxuICAgKiBAcGFyYW0geyFwcm90by5iYXNlLnYxLklkUmVxdWVzdH0gcmVxdWVzdFxuICAgKiBAcmV0dXJuIHshVWludDhBcnJheX1cbiAgICovXG4gIGZ1bmN0aW9uKHJlcXVlc3QpIHtcbiAgICByZXR1cm4gcmVxdWVzdC5zZXJpYWxpemVCaW5hcnkoKTtcbiAgfSxcbiAgcHJvdG8udG8udjEuVG9BY3Rpb25Vc2Vyc0RldGFpbFJlcGx5LmRlc2VyaWFsaXplQmluYXJ5XG4pO1xuXG5cbi8qKlxuICogQHBhcmFtIHshcHJvdG8uYmFzZS52MS5JZFJlcXVlc3R9IHJlcXVlc3QgVGhlXG4gKiAgICAgcmVxdWVzdCBwcm90b1xuICogQHBhcmFtIHs/T2JqZWN0PHN0cmluZywgc3RyaW5nPn0gbWV0YWRhdGEgVXNlciBkZWZpbmVkXG4gKiAgICAgY2FsbCBtZXRhZGF0YVxuICogQHBhcmFtIHtmdW5jdGlvbig/Z3JwYy53ZWIuUnBjRXJyb3IsID9wcm90by50by52MS5Ub0FjdGlvblVzZXJzRGV0YWlsUmVwbHkpfVxuICogICAgIGNhbGxiYWNrIFRoZSBjYWxsYmFjayBmdW5jdGlvbihlcnJvciwgcmVzcG9uc2UpXG4gKiBAcmV0dXJuIHshZ3JwYy53ZWIuQ2xpZW50UmVhZGFibGVTdHJlYW08IXByb3RvLnRvLnYxLlRvQWN0aW9uVXNlcnNEZXRhaWxSZXBseT58dW5kZWZpbmVkfVxuICogICAgIFRoZSBYSFIgTm9kZSBSZWFkYWJsZSBTdHJlYW1cbiAqL1xucHJvdG8udG8udjEuQXBpVG9DbGllbnQucHJvdG90eXBlLnRvVXNlcnNJbkdhbWVEZXRhaWwgPVxuICAgIGZ1bmN0aW9uKHJlcXVlc3QsIG1ldGFkYXRhLCBjYWxsYmFjaykge1xuICByZXR1cm4gdGhpcy5jbGllbnRfLnJwY0NhbGwodGhpcy5ob3N0bmFtZV8gK1xuICAgICAgJy90by52MS5BcGlUby9Ub1VzZXJzSW5HYW1lRGV0YWlsJyxcbiAgICAgIHJlcXVlc3QsXG4gICAgICBtZXRhZGF0YSB8fCB7fSxcbiAgICAgIG1ldGhvZERlc2NyaXB0b3JfQXBpVG9fVG9Vc2Vyc0luR2FtZURldGFpbCxcbiAgICAgIGNhbGxiYWNrKTtcbn07XG5cblxuLyoqXG4gKiBAcGFyYW0geyFwcm90by5iYXNlLnYxLklkUmVxdWVzdH0gcmVxdWVzdCBUaGVcbiAqICAgICByZXF1ZXN0IHByb3RvXG4gKiBAcGFyYW0gez9PYmplY3Q8c3RyaW5nLCBzdHJpbmc+PX0gbWV0YWRhdGEgVXNlciBkZWZpbmVkXG4gKiAgICAgY2FsbCBtZXRhZGF0YVxuICogQHJldHVybiB7IVByb21pc2U8IXByb3RvLnRvLnYxLlRvQWN0aW9uVXNlcnNEZXRhaWxSZXBseT59XG4gKiAgICAgUHJvbWlzZSB0aGF0IHJlc29sdmVzIHRvIHRoZSByZXNwb25zZVxuICovXG5wcm90by50by52MS5BcGlUb1Byb21pc2VDbGllbnQucHJvdG90eXBlLnRvVXNlcnNJbkdhbWVEZXRhaWwgPVxuICAgIGZ1bmN0aW9uKHJlcXVlc3QsIG1ldGFkYXRhKSB7XG4gIHJldHVybiB0aGlzLmNsaWVudF8udW5hcnlDYWxsKHRoaXMuaG9zdG5hbWVfICtcbiAgICAgICcvdG8udjEuQXBpVG8vVG9Vc2Vyc0luR2FtZURldGFpbCcsXG4gICAgICByZXF1ZXN0LFxuICAgICAgbWV0YWRhdGEgfHwge30sXG4gICAgICBtZXRob2REZXNjcmlwdG9yX0FwaVRvX1RvVXNlcnNJbkdhbWVEZXRhaWwpO1xufTtcblxuXG4vKipcbiAqIEBjb25zdFxuICogQHR5cGUgeyFncnBjLndlYi5NZXRob2REZXNjcmlwdG9yPFxuICogICAhcHJvdG8uYmFzZS52MS5JZFJlcXVlc3QsXG4gKiAgICFwcm90by50by52MS5Ub1VzZXJHcHNRdWVyeVJlcGx5Pn1cbiAqL1xuY29uc3QgbWV0aG9kRGVzY3JpcHRvcl9BcGlUb19Ub1VzZXJzSW5HYW1lR3BzUXVlcnkgPSBuZXcgZ3JwYy53ZWIuTWV0aG9kRGVzY3JpcHRvcihcbiAgJy90by52MS5BcGlUby9Ub1VzZXJzSW5HYW1lR3BzUXVlcnknLFxuICBncnBjLndlYi5NZXRob2RUeXBlLlVOQVJZLFxuICBiYXNlX3BiLklkUmVxdWVzdCxcbiAgcHJvdG8udG8udjEuVG9Vc2VyR3BzUXVlcnlSZXBseSxcbiAgLyoqXG4gICAqIEBwYXJhbSB7IXByb3RvLmJhc2UudjEuSWRSZXF1ZXN0fSByZXF1ZXN0XG4gICAqIEByZXR1cm4geyFVaW50OEFycmF5fVxuICAgKi9cbiAgZnVuY3Rpb24ocmVxdWVzdCkge1xuICAgIHJldHVybiByZXF1ZXN0LnNlcmlhbGl6ZUJpbmFyeSgpO1xuICB9LFxuICBwcm90by50by52MS5Ub1VzZXJHcHNRdWVyeVJlcGx5LmRlc2VyaWFsaXplQmluYXJ5XG4pO1xuXG5cbi8qKlxuICogQHBhcmFtIHshcHJvdG8uYmFzZS52MS5JZFJlcXVlc3R9IHJlcXVlc3QgVGhlXG4gKiAgICAgcmVxdWVzdCBwcm90b1xuICogQHBhcmFtIHs/T2JqZWN0PHN0cmluZywgc3RyaW5nPn0gbWV0YWRhdGEgVXNlciBkZWZpbmVkXG4gKiAgICAgY2FsbCBtZXRhZGF0YVxuICogQHBhcmFtIHtmdW5jdGlvbig/Z3JwYy53ZWIuUnBjRXJyb3IsID9wcm90by50by52MS5Ub1VzZXJHcHNRdWVyeVJlcGx5KX1cbiAqICAgICBjYWxsYmFjayBUaGUgY2FsbGJhY2sgZnVuY3Rpb24oZXJyb3IsIHJlc3BvbnNlKVxuICogQHJldHVybiB7IWdycGMud2ViLkNsaWVudFJlYWRhYmxlU3RyZWFtPCFwcm90by50by52MS5Ub1VzZXJHcHNRdWVyeVJlcGx5Pnx1bmRlZmluZWR9XG4gKiAgICAgVGhlIFhIUiBOb2RlIFJlYWRhYmxlIFN0cmVhbVxuICovXG5wcm90by50by52MS5BcGlUb0NsaWVudC5wcm90b3R5cGUudG9Vc2Vyc0luR2FtZUdwc1F1ZXJ5ID1cbiAgICBmdW5jdGlvbihyZXF1ZXN0LCBtZXRhZGF0YSwgY2FsbGJhY2spIHtcbiAgcmV0dXJuIHRoaXMuY2xpZW50Xy5ycGNDYWxsKHRoaXMuaG9zdG5hbWVfICtcbiAgICAgICcvdG8udjEuQXBpVG8vVG9Vc2Vyc0luR2FtZUdwc1F1ZXJ5JyxcbiAgICAgIHJlcXVlc3QsXG4gICAgICBtZXRhZGF0YSB8fCB7fSxcbiAgICAgIG1ldGhvZERlc2NyaXB0b3JfQXBpVG9fVG9Vc2Vyc0luR2FtZUdwc1F1ZXJ5LFxuICAgICAgY2FsbGJhY2spO1xufTtcblxuXG4vKipcbiAqIEBwYXJhbSB7IXByb3RvLmJhc2UudjEuSWRSZXF1ZXN0fSByZXF1ZXN0IFRoZVxuICogICAgIHJlcXVlc3QgcHJvdG9cbiAqIEBwYXJhbSB7P09iamVjdDxzdHJpbmcsIHN0cmluZz49fSBtZXRhZGF0YSBVc2VyIGRlZmluZWRcbiAqICAgICBjYWxsIG1ldGFkYXRhXG4gKiBAcmV0dXJuIHshUHJvbWlzZTwhcHJvdG8udG8udjEuVG9Vc2VyR3BzUXVlcnlSZXBseT59XG4gKiAgICAgUHJvbWlzZSB0aGF0IHJlc29sdmVzIHRvIHRoZSByZXNwb25zZVxuICovXG5wcm90by50by52MS5BcGlUb1Byb21pc2VDbGllbnQucHJvdG90eXBlLnRvVXNlcnNJbkdhbWVHcHNRdWVyeSA9XG4gICAgZnVuY3Rpb24ocmVxdWVzdCwgbWV0YWRhdGEpIHtcbiAgcmV0dXJuIHRoaXMuY2xpZW50Xy51bmFyeUNhbGwodGhpcy5ob3N0bmFtZV8gK1xuICAgICAgJy90by52MS5BcGlUby9Ub1VzZXJzSW5HYW1lR3BzUXVlcnknLFxuICAgICAgcmVxdWVzdCxcbiAgICAgIG1ldGFkYXRhIHx8IHt9LFxuICAgICAgbWV0aG9kRGVzY3JpcHRvcl9BcGlUb19Ub1VzZXJzSW5HYW1lR3BzUXVlcnkpO1xufTtcblxuXG4vKipcbiAqIEBjb25zdFxuICogQHR5cGUgeyFncnBjLndlYi5NZXRob2REZXNjcmlwdG9yPFxuICogICAhcHJvdG8udG8udjEuVG9Vc2Vyc0luR2FtZUhpc3RvcnlHcHNRdWVyeVJlcXVlc3QsXG4gKiAgICFwcm90by50by52MS5Ub1VzZXJHcHNRdWVyeVJlcGx5Pn1cbiAqL1xuY29uc3QgbWV0aG9kRGVzY3JpcHRvcl9BcGlUb19Ub1VzZXJzSW5HYW1lSGlzdG9yeUdwc1F1ZXJ5ID0gbmV3IGdycGMud2ViLk1ldGhvZERlc2NyaXB0b3IoXG4gICcvdG8udjEuQXBpVG8vVG9Vc2Vyc0luR2FtZUhpc3RvcnlHcHNRdWVyeScsXG4gIGdycGMud2ViLk1ldGhvZFR5cGUuVU5BUlksXG4gIHByb3RvLnRvLnYxLlRvVXNlcnNJbkdhbWVIaXN0b3J5R3BzUXVlcnlSZXF1ZXN0LFxuICBwcm90by50by52MS5Ub1VzZXJHcHNRdWVyeVJlcGx5LFxuICAvKipcbiAgICogQHBhcmFtIHshcHJvdG8udG8udjEuVG9Vc2Vyc0luR2FtZUhpc3RvcnlHcHNRdWVyeVJlcXVlc3R9IHJlcXVlc3RcbiAgICogQHJldHVybiB7IVVpbnQ4QXJyYXl9XG4gICAqL1xuICBmdW5jdGlvbihyZXF1ZXN0KSB7XG4gICAgcmV0dXJuIHJlcXVlc3Quc2VyaWFsaXplQmluYXJ5KCk7XG4gIH0sXG4gIHByb3RvLnRvLnYxLlRvVXNlckdwc1F1ZXJ5UmVwbHkuZGVzZXJpYWxpemVCaW5hcnlcbik7XG5cblxuLyoqXG4gKiBAcGFyYW0geyFwcm90by50by52MS5Ub1VzZXJzSW5HYW1lSGlzdG9yeUdwc1F1ZXJ5UmVxdWVzdH0gcmVxdWVzdCBUaGVcbiAqICAgICByZXF1ZXN0IHByb3RvXG4gKiBAcGFyYW0gez9PYmplY3Q8c3RyaW5nLCBzdHJpbmc+fSBtZXRhZGF0YSBVc2VyIGRlZmluZWRcbiAqICAgICBjYWxsIG1ldGFkYXRhXG4gKiBAcGFyYW0ge2Z1bmN0aW9uKD9ncnBjLndlYi5ScGNFcnJvciwgP3Byb3RvLnRvLnYxLlRvVXNlckdwc1F1ZXJ5UmVwbHkpfVxuICogICAgIGNhbGxiYWNrIFRoZSBjYWxsYmFjayBmdW5jdGlvbihlcnJvciwgcmVzcG9uc2UpXG4gKiBAcmV0dXJuIHshZ3JwYy53ZWIuQ2xpZW50UmVhZGFibGVTdHJlYW08IXByb3RvLnRvLnYxLlRvVXNlckdwc1F1ZXJ5UmVwbHk+fHVuZGVmaW5lZH1cbiAqICAgICBUaGUgWEhSIE5vZGUgUmVhZGFibGUgU3RyZWFtXG4gKi9cbnByb3RvLnRvLnYxLkFwaVRvQ2xpZW50LnByb3RvdHlwZS50b1VzZXJzSW5HYW1lSGlzdG9yeUdwc1F1ZXJ5ID1cbiAgICBmdW5jdGlvbihyZXF1ZXN0LCBtZXRhZGF0YSwgY2FsbGJhY2spIHtcbiAgcmV0dXJuIHRoaXMuY2xpZW50Xy5ycGNDYWxsKHRoaXMuaG9zdG5hbWVfICtcbiAgICAgICcvdG8udjEuQXBpVG8vVG9Vc2Vyc0luR2FtZUhpc3RvcnlHcHNRdWVyeScsXG4gICAgICByZXF1ZXN0LFxuICAgICAgbWV0YWRhdGEgfHwge30sXG4gICAgICBtZXRob2REZXNjcmlwdG9yX0FwaVRvX1RvVXNlcnNJbkdhbWVIaXN0b3J5R3BzUXVlcnksXG4gICAgICBjYWxsYmFjayk7XG59O1xuXG5cbi8qKlxuICogQHBhcmFtIHshcHJvdG8udG8udjEuVG9Vc2Vyc0luR2FtZUhpc3RvcnlHcHNRdWVyeVJlcXVlc3R9IHJlcXVlc3QgVGhlXG4gKiAgICAgcmVxdWVzdCBwcm90b1xuICogQHBhcmFtIHs/T2JqZWN0PHN0cmluZywgc3RyaW5nPj19IG1ldGFkYXRhIFVzZXIgZGVmaW5lZFxuICogICAgIGNhbGwgbWV0YWRhdGFcbiAqIEByZXR1cm4geyFQcm9taXNlPCFwcm90by50by52MS5Ub1VzZXJHcHNRdWVyeVJlcGx5Pn1cbiAqICAgICBQcm9taXNlIHRoYXQgcmVzb2x2ZXMgdG8gdGhlIHJlc3BvbnNlXG4gKi9cbnByb3RvLnRvLnYxLkFwaVRvUHJvbWlzZUNsaWVudC5wcm90b3R5cGUudG9Vc2Vyc0luR2FtZUhpc3RvcnlHcHNRdWVyeSA9XG4gICAgZnVuY3Rpb24ocmVxdWVzdCwgbWV0YWRhdGEpIHtcbiAgcmV0dXJuIHRoaXMuY2xpZW50Xy51bmFyeUNhbGwodGhpcy5ob3N0bmFtZV8gK1xuICAgICAgJy90by52MS5BcGlUby9Ub1VzZXJzSW5HYW1lSGlzdG9yeUdwc1F1ZXJ5JyxcbiAgICAgIHJlcXVlc3QsXG4gICAgICBtZXRhZGF0YSB8fCB7fSxcbiAgICAgIG1ldGhvZERlc2NyaXB0b3JfQXBpVG9fVG9Vc2Vyc0luR2FtZUhpc3RvcnlHcHNRdWVyeSk7XG59O1xuXG5cbi8qKlxuICogQGNvbnN0XG4gKiBAdHlwZSB7IWdycGMud2ViLk1ldGhvZERlc2NyaXB0b3I8XG4gKiAgICFwcm90by50by52MS5Ub0FueVVzZXJIaXN0b3J5R3BzUXVlcnlSZXF1ZXN0LFxuICogICAhcHJvdG8udG8udjEuVG9Vc2VyR3BzUXVlcnlSZXBseT59XG4gKi9cbmNvbnN0IG1ldGhvZERlc2NyaXB0b3JfQXBpVG9fVG9BbnlVc2VySGlzdG9yeUdwc1F1ZXJ5ID0gbmV3IGdycGMud2ViLk1ldGhvZERlc2NyaXB0b3IoXG4gICcvdG8udjEuQXBpVG8vVG9BbnlVc2VySGlzdG9yeUdwc1F1ZXJ5JyxcbiAgZ3JwYy53ZWIuTWV0aG9kVHlwZS5VTkFSWSxcbiAgcHJvdG8udG8udjEuVG9BbnlVc2VySGlzdG9yeUdwc1F1ZXJ5UmVxdWVzdCxcbiAgcHJvdG8udG8udjEuVG9Vc2VyR3BzUXVlcnlSZXBseSxcbiAgLyoqXG4gICAqIEBwYXJhbSB7IXByb3RvLnRvLnYxLlRvQW55VXNlckhpc3RvcnlHcHNRdWVyeVJlcXVlc3R9IHJlcXVlc3RcbiAgICogQHJldHVybiB7IVVpbnQ4QXJyYXl9XG4gICAqL1xuICBmdW5jdGlvbihyZXF1ZXN0KSB7XG4gICAgcmV0dXJuIHJlcXVlc3Quc2VyaWFsaXplQmluYXJ5KCk7XG4gIH0sXG4gIHByb3RvLnRvLnYxLlRvVXNlckdwc1F1ZXJ5UmVwbHkuZGVzZXJpYWxpemVCaW5hcnlcbik7XG5cblxuLyoqXG4gKiBAcGFyYW0geyFwcm90by50by52MS5Ub0FueVVzZXJIaXN0b3J5R3BzUXVlcnlSZXF1ZXN0fSByZXF1ZXN0IFRoZVxuICogICAgIHJlcXVlc3QgcHJvdG9cbiAqIEBwYXJhbSB7P09iamVjdDxzdHJpbmcsIHN0cmluZz59IG1ldGFkYXRhIFVzZXIgZGVmaW5lZFxuICogICAgIGNhbGwgbWV0YWRhdGFcbiAqIEBwYXJhbSB7ZnVuY3Rpb24oP2dycGMud2ViLlJwY0Vycm9yLCA/cHJvdG8udG8udjEuVG9Vc2VyR3BzUXVlcnlSZXBseSl9XG4gKiAgICAgY2FsbGJhY2sgVGhlIGNhbGxiYWNrIGZ1bmN0aW9uKGVycm9yLCByZXNwb25zZSlcbiAqIEByZXR1cm4geyFncnBjLndlYi5DbGllbnRSZWFkYWJsZVN0cmVhbTwhcHJvdG8udG8udjEuVG9Vc2VyR3BzUXVlcnlSZXBseT58dW5kZWZpbmVkfVxuICogICAgIFRoZSBYSFIgTm9kZSBSZWFkYWJsZSBTdHJlYW1cbiAqL1xucHJvdG8udG8udjEuQXBpVG9DbGllbnQucHJvdG90eXBlLnRvQW55VXNlckhpc3RvcnlHcHNRdWVyeSA9XG4gICAgZnVuY3Rpb24ocmVxdWVzdCwgbWV0YWRhdGEsIGNhbGxiYWNrKSB7XG4gIHJldHVybiB0aGlzLmNsaWVudF8ucnBjQ2FsbCh0aGlzLmhvc3RuYW1lXyArXG4gICAgICAnL3RvLnYxLkFwaVRvL1RvQW55VXNlckhpc3RvcnlHcHNRdWVyeScsXG4gICAgICByZXF1ZXN0LFxuICAgICAgbWV0YWRhdGEgfHwge30sXG4gICAgICBtZXRob2REZXNjcmlwdG9yX0FwaVRvX1RvQW55VXNlckhpc3RvcnlHcHNRdWVyeSxcbiAgICAgIGNhbGxiYWNrKTtcbn07XG5cblxuLyoqXG4gKiBAcGFyYW0geyFwcm90by50by52MS5Ub0FueVVzZXJIaXN0b3J5R3BzUXVlcnlSZXF1ZXN0fSByZXF1ZXN0IFRoZVxuICogICAgIHJlcXVlc3QgcHJvdG9cbiAqIEBwYXJhbSB7P09iamVjdDxzdHJpbmcsIHN0cmluZz49fSBtZXRhZGF0YSBVc2VyIGRlZmluZWRcbiAqICAgICBjYWxsIG1ldGFkYXRhXG4gKiBAcmV0dXJuIHshUHJvbWlzZTwhcHJvdG8udG8udjEuVG9Vc2VyR3BzUXVlcnlSZXBseT59XG4gKiAgICAgUHJvbWlzZSB0aGF0IHJlc29sdmVzIHRvIHRoZSByZXNwb25zZVxuICovXG5wcm90by50by52MS5BcGlUb1Byb21pc2VDbGllbnQucHJvdG90eXBlLnRvQW55VXNlckhpc3RvcnlHcHNRdWVyeSA9XG4gICAgZnVuY3Rpb24ocmVxdWVzdCwgbWV0YWRhdGEpIHtcbiAgcmV0dXJuIHRoaXMuY2xpZW50Xy51bmFyeUNhbGwodGhpcy5ob3N0bmFtZV8gK1xuICAgICAgJy90by52MS5BcGlUby9Ub0FueVVzZXJIaXN0b3J5R3BzUXVlcnknLFxuICAgICAgcmVxdWVzdCxcbiAgICAgIG1ldGFkYXRhIHx8IHt9LFxuICAgICAgbWV0aG9kRGVzY3JpcHRvcl9BcGlUb19Ub0FueVVzZXJIaXN0b3J5R3BzUXVlcnkpO1xufTtcblxuXG5tb2R1bGUuZXhwb3J0cyA9IHByb3RvLnRvLnYxO1xuXG4iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///64\n");
- /***/ }),
- /* 65 */
- /*!*************************************************************************!*\
- !*** D:/Work2/Orienteering/TrackOffical/node_modules/grpc-web/index.js ***!
- \*************************************************************************/
- /*! no static exports found */
- /***/ (function(module, exports, __webpack_require__) {
- /* WEBPACK VAR INJECTION */(function(global, __f__) {var _typeof = __webpack_require__(/*! @babel/runtime/helpers/typeof */ 4);
- /*
- Copyright The Closure Library Authors.
- SPDX-License-Identifier: Apache-2.0
- */
- var n;
- function aa(a) {
- var b = 0;
- return function () {
- return b < a.length ? {
- done: !1,
- value: a[b++]
- } : {
- done: !0
- };
- };
- }
- var ba = "function" == typeof Object.defineProperties ? Object.defineProperty : function (a, b, c) {
- a != Array.prototype && a != Object.prototype && (a[b] = c.value);
- };
- function ca(a) {
- a = ["object" == (typeof window === "undefined" ? "undefined" : _typeof(window)) && window, "object" == (typeof self === "undefined" ? "undefined" : _typeof(self)) && self, "object" == (typeof global === "undefined" ? "undefined" : _typeof(global)) && global, a];
- for (var b = 0; b < a.length; ++b) {
- var c = a[b];
- if (c && c.Math == Math) return c;
- }
- throw Error("Cannot find global object");
- }
- var r = ca(this);
- function t() {
- t = function t() {};
- r.Symbol || (r.Symbol = da);
- }
- function ea(a, b) {
- this.a = a;
- ba(this, "description", {
- configurable: !0,
- writable: !0,
- value: b
- });
- }
- ea.prototype.toString = function () {
- return this.a;
- };
- var da = function () {
- function a(c) {
- if (this instanceof a) throw new TypeError("Symbol is not a constructor");
- return new ea("jscomp_symbol_" + (c || "") + "_" + b++, c);
- }
- var b = 0;
- return a;
- }();
- function u() {
- t();
- var a = r.Symbol.iterator;
- a || (a = r.Symbol.iterator = r.Symbol("Symbol.iterator"));
- "function" != typeof Array.prototype[a] && ba(Array.prototype, a, {
- configurable: !0,
- writable: !0,
- value: function value() {
- return fa(aa(this));
- }
- });
- u = function u() {};
- }
- function fa(a) {
- u();
- a = {
- next: a
- };
- a[r.Symbol.iterator] = function () {
- return this;
- };
- return a;
- }
- function ha(a) {
- var b = "undefined" != typeof Symbol && Symbol.iterator && a[Symbol.iterator];
- return b ? b.call(a) : {
- next: aa(a)
- };
- }
- var ia = "function" == typeof Object.create ? Object.create : function (a) {
- function b() {}
- b.prototype = a;
- return new b();
- },
- ja;
- if ("function" == typeof Object.setPrototypeOf) ja = Object.setPrototypeOf;else {
- var ka;
- a: {
- var la = {
- V: !0
- },
- ma = {};
- try {
- ma.__proto__ = la;
- ka = ma.V;
- break a;
- } catch (a) {}
- ka = !1;
- }
- ja = ka ? function (a, b) {
- a.__proto__ = b;
- if (a.__proto__ !== b) throw new TypeError(a + " is not extensible");
- return a;
- } : null;
- }
- var na = ja;
- function oa(a, b) {
- a.prototype = ia(b.prototype);
- a.prototype.constructor = a;
- if (na) na(a, b);else for (var c in b) {
- if ("prototype" != c) if (Object.defineProperties) {
- var d = Object.getOwnPropertyDescriptor(b, c);
- d && Object.defineProperty(a, c, d);
- } else a[c] = b[c];
- }
- a.O = b.prototype;
- }
- function pa(a, b) {
- u();
- a instanceof String && (a += "");
- var c = 0,
- d = {
- next: function next() {
- if (c < a.length) {
- var f = c++;
- return {
- value: b(f, a[f]),
- done: !1
- };
- }
- d.next = function () {
- return {
- done: !0,
- value: void 0
- };
- };
- return d.next();
- }
- };
- d[Symbol.iterator] = function () {
- return d;
- };
- return d;
- }
- function v(a, b) {
- if (b) {
- var c = r;
- a = a.split(".");
- for (var d = 0; d < a.length - 1; d++) {
- var f = a[d];
- f in c || (c[f] = {});
- c = c[f];
- }
- a = a[a.length - 1];
- d = c[a];
- b = b(d);
- b != d && null != b && ba(c, a, {
- configurable: !0,
- writable: !0,
- value: b
- });
- }
- }
- v("Array.prototype.keys", function (a) {
- return a ? a : function () {
- return pa(this, function (b) {
- return b;
- });
- };
- });
- v("Array.prototype.find", function (a) {
- return a ? a : function (b, c) {
- a: {
- var d = this;
- d instanceof String && (d = String(d));
- for (var f = d.length, g = 0; g < f; g++) {
- var e = d[g];
- if (b.call(c, e, g, d)) {
- b = e;
- break a;
- }
- }
- b = void 0;
- }
- return b;
- };
- });
- v("Object.is", function (a) {
- return a ? a : function (b, c) {
- return b === c ? 0 !== b || 1 / b === 1 / c : b !== b && c !== c;
- };
- });
- v("Array.prototype.includes", function (a) {
- return a ? a : function (b, c) {
- var d = this;
- d instanceof String && (d = String(d));
- var f = d.length;
- c = c || 0;
- for (0 > c && (c = Math.max(c + f, 0)); c < f; c++) {
- var g = d[c];
- if (g === b || Object.is(g, b)) return !0;
- }
- return !1;
- };
- });
- v("Promise", function (a) {
- function b(e) {
- this.b = 0;
- this.c = void 0;
- this.a = [];
- var h = this.f();
- try {
- e(h.resolve, h.reject);
- } catch (k) {
- h.reject(k);
- }
- }
- function c() {
- this.a = null;
- }
- function d(e) {
- return e instanceof b ? e : new b(function (h) {
- h(e);
- });
- }
- if (a) return a;
- c.prototype.b = function (e) {
- if (null == this.a) {
- this.a = [];
- var h = this;
- this.c(function () {
- h.g();
- });
- }
- this.a.push(e);
- };
- var f = r.setTimeout;
- c.prototype.c = function (e) {
- f(e, 0);
- };
- c.prototype.g = function () {
- for (; this.a && this.a.length;) {
- var e = this.a;
- this.a = [];
- for (var h = 0; h < e.length; ++h) {
- var k = e[h];
- e[h] = null;
- try {
- k();
- } catch (l) {
- this.f(l);
- }
- }
- }
- this.a = null;
- };
- c.prototype.f = function (e) {
- this.c(function () {
- throw e;
- });
- };
- b.prototype.f = function () {
- function e(l) {
- return function (m) {
- k || (k = !0, l.call(h, m));
- };
- }
- var h = this,
- k = !1;
- return {
- resolve: e(this.s),
- reject: e(this.g)
- };
- };
- b.prototype.s = function (e) {
- if (e === this) this.g(new TypeError("A Promise cannot resolve to itself"));else if (e instanceof b) this.v(e);else {
- a: switch (_typeof(e)) {
- case "object":
- var h = null != e;
- break a;
- case "function":
- h = !0;
- break a;
- default:
- h = !1;
- }
- h ? this.m(e) : this.h(e);
- }
- };
- b.prototype.m = function (e) {
- var h = void 0;
- try {
- h = e.then;
- } catch (k) {
- this.g(k);
- return;
- }
- "function" == typeof h ? this.w(h, e) : this.h(e);
- };
- b.prototype.g = function (e) {
- this.i(2, e);
- };
- b.prototype.h = function (e) {
- this.i(1, e);
- };
- b.prototype.i = function (e, h) {
- if (0 != this.b) throw Error("Cannot settle(" + e + ", " + h + "): Promise already settled in state" + this.b);
- this.b = e;
- this.c = h;
- this.l();
- };
- b.prototype.l = function () {
- if (null != this.a) {
- for (var e = 0; e < this.a.length; ++e) {
- g.b(this.a[e]);
- }
- this.a = null;
- }
- };
- var g = new c();
- b.prototype.v = function (e) {
- var h = this.f();
- e.F(h.resolve, h.reject);
- };
- b.prototype.w = function (e, h) {
- var k = this.f();
- try {
- e.call(h, k.resolve, k.reject);
- } catch (l) {
- k.reject(l);
- }
- };
- b.prototype.then = function (e, h) {
- function k(q, w) {
- return "function" == typeof q ? function (z) {
- try {
- l(q(z));
- } catch (M) {
- m(M);
- }
- } : w;
- }
- var l,
- m,
- p = new b(function (q, w) {
- l = q;
- m = w;
- });
- this.F(k(e, l), k(h, m));
- return p;
- };
- b.prototype.catch = function (e) {
- return this.then(void 0, e);
- };
- b.prototype.F = function (e, h) {
- function k() {
- switch (l.b) {
- case 1:
- e(l.c);
- break;
- case 2:
- h(l.c);
- break;
- default:
- throw Error("Unexpected state: " + l.b);
- }
- }
- var l = this;
- null == this.a ? g.b(k) : this.a.push(k);
- };
- b.resolve = d;
- b.reject = function (e) {
- return new b(function (h, k) {
- k(e);
- });
- };
- b.race = function (e) {
- return new b(function (h, k) {
- for (var l = ha(e), m = l.next(); !m.done; m = l.next()) {
- d(m.value).F(h, k);
- }
- });
- };
- b.all = function (e) {
- var h = ha(e),
- k = h.next();
- return k.done ? d([]) : new b(function (l, m) {
- function p(z) {
- return function (M) {
- q[z] = M;
- w--;
- 0 == w && l(q);
- };
- }
- var q = [],
- w = 0;
- do {
- q.push(void 0), w++, d(k.value).F(p(q.length - 1), m), k = h.next();
- } while (!k.done);
- });
- };
- return b;
- });
- var qa = qa || {},
- x = this || self;
- function y(a, b) {
- a = a.split(".");
- b = b || x;
- for (var c = 0; c < a.length; c++) {
- if (b = b[a[c]], null == b) return null;
- }
- return b;
- }
- function ra() {}
- function sa(a) {
- var b = _typeof(a);
- return "object" == b && null != a || "function" == b;
- }
- var ta = "closure_uid_" + (1E9 * Math.random() >>> 0),
- ua = 0;
- function va(a, b, c) {
- return a.call.apply(a.bind, arguments);
- }
- function wa(a, b, c) {
- if (!a) throw Error();
- if (2 < arguments.length) {
- var d = Array.prototype.slice.call(arguments, 2);
- return function () {
- var f = Array.prototype.slice.call(arguments);
- Array.prototype.unshift.apply(f, d);
- return a.apply(b, f);
- };
- }
- return function () {
- return a.apply(b, arguments);
- };
- }
- function A(a, b, c) {
- Function.prototype.bind && -1 != Function.prototype.bind.toString().indexOf("native code") ? A = va : A = wa;
- return A.apply(null, arguments);
- }
- function B(a, b) {
- function c() {}
- c.prototype = b.prototype;
- a.O = b.prototype;
- a.prototype = new c();
- a.prototype.constructor = a;
- }
- ;
- function xa(a) {
- this.a = a || {};
- }
- xa.prototype.get = function (a) {
- return this.a[a];
- };
- xa.prototype.G = function () {
- return Object.keys(this.a);
- };
- function C(a, b, c, d) {
- this.f = a;
- this.c = b;
- this.b = c;
- this.a = d;
- }
- C.prototype.getRequestMessage = function () {
- return this.f;
- };
- C.prototype.getMethodDescriptor = function () {
- return this.c;
- };
- C.prototype.getMetadata = function () {
- return this.b;
- };
- C.prototype.getCallOptions = function () {
- return this.a;
- };
- function D(a, b, c, d) {
- c = void 0 === c ? {} : c;
- this.c = a;
- this.a = c;
- this.b = b;
- this.f = void 0 === d ? null : d;
- }
- D.prototype.getResponseMessage = function () {
- return this.c;
- };
- D.prototype.getMetadata = function () {
- return this.a;
- };
- D.prototype.getMethodDescriptor = function () {
- return this.b;
- };
- D.prototype.getStatus = function () {
- return this.f;
- };
- function ya(a, b, c, d, f, g) {
- this.name = a;
- this.a = f;
- this.b = g;
- }
- function za(a, b, c) {
- c = void 0 === c ? {} : c;
- var d = void 0 === d ? new xa() : d;
- return new C(b, a, c, d);
- }
- ya.prototype.getName = function () {
- return this.name;
- };
- ya.prototype.getName = ya.prototype.getName;
- function Aa(a) {
- switch (a) {
- case 200:
- return 0;
- case 400:
- return 3;
- case 401:
- return 16;
- case 403:
- return 7;
- case 404:
- return 5;
- case 409:
- return 10;
- case 412:
- return 9;
- case 429:
- return 8;
- case 499:
- return 1;
- case 500:
- return 2;
- case 501:
- return 12;
- case 503:
- return 14;
- case 504:
- return 4;
- default:
- return 2;
- }
- }
- ;
- function E(a, b, c) {
- c = void 0 === c ? {} : c;
- b = Error.call(this, b);
- this.message = b.message;
- "stack" in b && (this.stack = b.stack);
- this.code = a;
- this.metadata = c;
- }
- oa(E, Error);
- E.prototype.name = "RpcError";
- function Ba(a) {
- this.a = a;
- }
- Ba.prototype.on = function (a, b) {
- return "data" == a || "error" == a ? this : this.a.on(a, b);
- };
- Ba.prototype.removeListener = function (a, b) {
- return this.a.removeListener(a, b);
- };
- Ba.prototype.cancel = function () {
- this.a.cancel();
- };
- function Ca(a) {
- switch (a) {
- case 0:
- return "No Error";
- case 1:
- return "Access denied to content document";
- case 2:
- return "File not found";
- case 3:
- return "Firefox silently errored";
- case 4:
- return "Application custom error";
- case 5:
- return "An exception occurred";
- case 6:
- return "Http response at 400 or 500 level";
- case 7:
- return "Request was aborted";
- case 8:
- return "Request timed out";
- case 9:
- return "The resource is not available offline";
- default:
- return "Unrecognized error code";
- }
- }
- ;
- function F(a) {
- if (Error.captureStackTrace) Error.captureStackTrace(this, F);else {
- var b = Error().stack;
- b && (this.stack = b);
- }
- a && (this.message = String(a));
- }
- B(F, Error);
- F.prototype.name = "CustomError";
- function Da(a, b) {
- a = a.split("%s");
- for (var c = "", d = a.length - 1, f = 0; f < d; f++) {
- c += a[f] + (f < b.length ? b[f] : "%s");
- }
- F.call(this, c + a[d]);
- }
- B(Da, F);
- Da.prototype.name = "AssertionError";
- function Ea(a, b) {
- throw new Da("Failure" + (a ? ": " + a : ""), Array.prototype.slice.call(arguments, 1));
- }
- ;
- function Fa() {
- this.l = null;
- this.i = [];
- this.m = 0;
- this.b = Ga;
- this.f = this.a = this.h = 0;
- this.c = null;
- this.g = 0;
- }
- function Ha(a, b) {
- function c(l) {
- l == Ia ? e.h = l : l == G ? e.h = l : Ja(e, h, k, "invalid frame byte");
- e.b = Ka;
- e.a = 0;
- e.f = 0;
- }
- function d(l) {
- e.f++;
- e.a = (e.a << 8) + l;
- 4 == e.f && (e.b = La, e.g = 0, "undefined" !== typeof Uint8Array ? e.c = new Uint8Array(e.a) : e.c = Array(e.a), 0 == e.a && g());
- }
- function f(l) {
- e.c[e.g++] = l;
- e.g == e.a && g();
- }
- function g() {
- var l = {};
- l[e.h] = e.c;
- e.i.push(l);
- e.b = Ga;
- }
- var e = a,
- h,
- k = 0;
- for (b instanceof Uint8Array || b instanceof Array ? h = b : h = new Uint8Array(b); k < h.length;) {
- switch (e.b) {
- case Ma:
- Ja(e, h, k, "stream already broken");
- break;
- case Ga:
- c(h[k]);
- break;
- case Ka:
- d(h[k]);
- break;
- case La:
- f(h[k]);
- break;
- default:
- throw Error("unexpected parser state: " + e.b);
- }
- e.m++;
- k++;
- }
- a = e.i;
- e.i = [];
- return 0 < a.length ? a : null;
- }
- var Ga = 0,
- Ka = 1,
- La = 2,
- Ma = 3,
- Ia = 0,
- G = 128;
- function Ja(a, b, c, d) {
- a.b = Ma;
- a.l = "The stream is broken @" + a.m + "/" + c + ". Error: " + d + ". With input:\n" + b;
- throw Error(a.l);
- }
- ;
- var Na = Array.prototype.indexOf ? function (a, b) {
- return Array.prototype.indexOf.call(a, b, void 0);
- } : function (a, b) {
- if ("string" === typeof a) return "string" !== typeof b || 1 != b.length ? -1 : a.indexOf(b, 0);
- for (var c = 0; c < a.length; c++) {
- if (c in a && a[c] === b) return c;
- }
- return -1;
- };
- var Oa = String.prototype.trim ? function (a) {
- return a.trim();
- } : function (a) {
- return /^[\s\xa0]*([\s\S]*?)[\s\xa0]*$/.exec(a)[1];
- };
- function H(a, b) {
- return -1 != a.indexOf(b);
- }
- function Pa(a, b) {
- return a < b ? -1 : a > b ? 1 : 0;
- }
- ;
- var I;
- a: {
- var Qa = x.navigator;
- if (Qa) {
- var Ra = Qa.userAgent;
- if (Ra) {
- I = Ra;
- break a;
- }
- }
- I = "";
- }
- ;
- function Sa(a, b) {
- for (var c in a) {
- b.call(void 0, a[c], c, a);
- }
- }
- function Ta(a, b) {
- var c = {},
- d;
- for (d in a) {
- c[d] = b.call(void 0, a[d], d, a);
- }
- return c;
- }
- var Ua = "constructor hasOwnProperty isPrototypeOf propertyIsEnumerable toLocaleString toString valueOf".split(" ");
- function Va(a, b) {
- for (var c, d, f = 1; f < arguments.length; f++) {
- d = arguments[f];
- for (c in d) {
- a[c] = d[c];
- }
- for (var g = 0; g < Ua.length; g++) {
- c = Ua[g], Object.prototype.hasOwnProperty.call(d, c) && (a[c] = d[c]);
- }
- }
- }
- ;
- function Wa(a) {
- var b = 1;
- a = a.split(":");
- for (var c = []; 0 < b && a.length;) {
- c.push(a.shift()), b--;
- }
- a.length && c.push(a.join(":"));
- return c;
- }
- ;
- function Xa(a) {
- Xa[" "](a);
- return a;
- }
- Xa[" "] = ra;
- function Ya(a) {
- var b = Za;
- return Object.prototype.hasOwnProperty.call(b, 9) ? b[9] : b[9] = a(9);
- }
- ;
- var $a = H(I, "Opera"),
- ab = H(I, "Trident") || H(I, "MSIE"),
- bb = H(I, "Edge"),
- cb = H(I, "Gecko") && !(H(I.toLowerCase(), "webkit") && !H(I, "Edge")) && !(H(I, "Trident") || H(I, "MSIE")) && !H(I, "Edge"),
- db = H(I.toLowerCase(), "webkit") && !H(I, "Edge"),
- eb;
- a: {
- var fb = "",
- gb = function () {
- var a = I;
- if (cb) return /rv:([^\);]+)(\)|;)/.exec(a);
- if (bb) return /Edge\/([\d\.]+)/.exec(a);
- if (ab) return /\b(?:MSIE|rv)[: ]([^\);]+)(\)|;)/.exec(a);
- if (db) return /WebKit\/(\S+)/.exec(a);
- if ($a) return /(?:Version)[ \/]?(\S+)/.exec(a);
- }();
- gb && (fb = gb ? gb[1] : "");
- if (ab) {
- var hb,
- ib = x.document;
- hb = ib ? ib.documentMode : void 0;
- if (null != hb && hb > parseFloat(fb)) {
- eb = String(hb);
- break a;
- }
- }
- eb = fb;
- }
- var Za = {};
- function jb() {
- return Ya(function () {
- for (var a = 0, b = Oa(String(eb)).split("."), c = Oa("9").split("."), d = Math.max(b.length, c.length), f = 0; 0 == a && f < d; f++) {
- var g = b[f] || "",
- e = c[f] || "";
- do {
- g = /(\d*)(\D*)(.*)/.exec(g) || ["", "", "", ""];
- e = /(\d*)(\D*)(.*)/.exec(e) || ["", "", "", ""];
- if (0 == g[0].length && 0 == e[0].length) break;
- a = Pa(0 == g[1].length ? 0 : parseInt(g[1], 10), 0 == e[1].length ? 0 : parseInt(e[1], 10)) || Pa(0 == g[2].length, 0 == e[2].length) || Pa(g[2], e[2]);
- g = g[3];
- e = e[3];
- } while (0 == a);
- }
- return 0 <= a;
- });
- }
- ;
- function kb() {
- 0 != lb && (Object.prototype.hasOwnProperty.call(this, ta) && this[ta] || (this[ta] = ++ua));
- this.K = this.K;
- }
- var lb = 0;
- kb.prototype.K = !1;
- var mb = Object.freeze || function (a) {
- return a;
- };
- function J(a, b) {
- this.type = a;
- this.a = this.target = b;
- this.defaultPrevented = !1;
- }
- J.prototype.b = function () {
- this.defaultPrevented = !0;
- };
- var nb = function () {
- if (!x.addEventListener || !Object.defineProperty) return !1;
- var a = !1,
- b = Object.defineProperty({}, "passive", {
- get: function get() {
- a = !0;
- }
- });
- try {
- x.addEventListener("test", ra, b), x.removeEventListener("test", ra, b);
- } catch (c) {}
- return a;
- }();
- function K(a, b) {
- J.call(this, a ? a.type : "");
- this.relatedTarget = this.a = this.target = null;
- this.button = this.screenY = this.screenX = this.clientY = this.clientX = 0;
- this.key = "";
- this.metaKey = this.shiftKey = this.altKey = this.ctrlKey = !1;
- this.pointerId = 0;
- this.pointerType = "";
- this.c = null;
- if (a) {
- var c = this.type = a.type,
- d = a.changedTouches && a.changedTouches.length ? a.changedTouches[0] : null;
- this.target = a.target || a.srcElement;
- this.a = b;
- if (b = a.relatedTarget) {
- if (cb) {
- a: {
- try {
- Xa(b.nodeName);
- var f = !0;
- break a;
- } catch (g) {}
- f = !1;
- }
- f || (b = null);
- }
- } else "mouseover" == c ? b = a.fromElement : "mouseout" == c && (b = a.toElement);
- this.relatedTarget = b;
- d ? (this.clientX = void 0 !== d.clientX ? d.clientX : d.pageX, this.clientY = void 0 !== d.clientY ? d.clientY : d.pageY, this.screenX = d.screenX || 0, this.screenY = d.screenY || 0) : (this.clientX = void 0 !== a.clientX ? a.clientX : a.pageX, this.clientY = void 0 !== a.clientY ? a.clientY : a.pageY, this.screenX = a.screenX || 0, this.screenY = a.screenY || 0);
- this.button = a.button;
- this.key = a.key || "";
- this.ctrlKey = a.ctrlKey;
- this.altKey = a.altKey;
- this.shiftKey = a.shiftKey;
- this.metaKey = a.metaKey;
- this.pointerId = a.pointerId || 0;
- this.pointerType = "string" === typeof a.pointerType ? a.pointerType : ob[a.pointerType] || "";
- this.c = a;
- a.defaultPrevented && K.O.b.call(this);
- }
- }
- B(K, J);
- var ob = mb({
- 2: "touch",
- 3: "pen",
- 4: "mouse"
- });
- K.prototype.b = function () {
- K.O.b.call(this);
- var a = this.c;
- a.preventDefault ? a.preventDefault() : a.returnValue = !1;
- };
- var L = "closure_listenable_" + (1E6 * Math.random() | 0);
- var pb = 0;
- function qb(a, b, c, d, f) {
- this.listener = a;
- this.proxy = null;
- this.src = b;
- this.type = c;
- this.capture = !!d;
- this.H = f;
- this.key = ++pb;
- this.A = this.D = !1;
- }
- function rb(a) {
- a.A = !0;
- a.listener = null;
- a.proxy = null;
- a.src = null;
- a.H = null;
- }
- ;
- function sb(a) {
- this.src = a;
- this.a = {};
- this.b = 0;
- }
- sb.prototype.add = function (a, b, c, d, f) {
- var g = a.toString();
- a = this.a[g];
- a || (a = this.a[g] = [], this.b++);
- var e = tb(a, b, d, f);
- -1 < e ? (b = a[e], c || (b.D = !1)) : (b = new qb(b, this.src, g, !!d, f), b.D = c, a.push(b));
- return b;
- };
- sb.prototype.remove = function (a, b, c, d) {
- a = a.toString();
- if (!(a in this.a)) return !1;
- var f = this.a[a];
- b = tb(f, b, c, d);
- return -1 < b ? (rb(f[b]), Array.prototype.splice.call(f, b, 1), 0 == f.length && (delete this.a[a], this.b--), !0) : !1;
- };
- function ub(a, b) {
- var c = b.type;
- if (c in a.a) {
- var d = a.a[c],
- f = Na(d, b),
- g;
- (g = 0 <= f) && Array.prototype.splice.call(d, f, 1);
- g && (rb(b), 0 == a.a[c].length && (delete a.a[c], a.b--));
- }
- }
- function tb(a, b, c, d) {
- for (var f = 0; f < a.length; ++f) {
- var g = a[f];
- if (!g.A && g.listener == b && g.capture == !!c && g.H == d) return f;
- }
- return -1;
- }
- ;
- var vb = "closure_lm_" + (1E6 * Math.random() | 0),
- wb = {},
- xb = 0;
- function yb(a, b, c, d, f) {
- if (d && d.once) zb(a, b, c, d, f);else if (Array.isArray(b)) for (var g = 0; g < b.length; g++) {
- yb(a, b[g], c, d, f);
- } else c = Ab(c), a && a[L] ? a.f.add(String(b), c, !1, sa(d) ? !!d.capture : !!d, f) : Bb(a, b, c, !1, d, f);
- }
- function Bb(a, b, c, d, f, g) {
- if (!b) throw Error("Invalid event type");
- var e = sa(f) ? !!f.capture : !!f,
- h = Cb(a);
- h || (a[vb] = h = new sb(a));
- c = h.add(b, c, d, e, g);
- if (!c.proxy) {
- d = Db();
- c.proxy = d;
- d.src = a;
- d.listener = c;
- if (a.addEventListener) nb || (f = e), void 0 === f && (f = !1), a.addEventListener(b.toString(), d, f);else if (a.attachEvent) a.attachEvent(Eb(b.toString()), d);else if (a.addListener && a.removeListener) a.addListener(d);else throw Error("addEventListener and attachEvent are unavailable.");
- xb++;
- }
- }
- function Db() {
- function a(c) {
- return b.call(a.src, a.listener, c);
- }
- var b = Fb;
- return a;
- }
- function zb(a, b, c, d, f) {
- if (Array.isArray(b)) for (var g = 0; g < b.length; g++) {
- zb(a, b[g], c, d, f);
- } else c = Ab(c), a && a[L] ? a.f.add(String(b), c, !0, sa(d) ? !!d.capture : !!d, f) : Bb(a, b, c, !0, d, f);
- }
- function Gb(a, b, c, d, f) {
- if (Array.isArray(b)) for (var g = 0; g < b.length; g++) {
- Gb(a, b[g], c, d, f);
- } else (d = sa(d) ? !!d.capture : !!d, c = Ab(c), a && a[L]) ? a.f.remove(String(b), c, d, f) : a && (a = Cb(a)) && (b = a.a[b.toString()], a = -1, b && (a = tb(b, c, d, f)), (c = -1 < a ? b[a] : null) && Hb(c));
- }
- function Hb(a) {
- if ("number" !== typeof a && a && !a.A) {
- var b = a.src;
- if (b && b[L]) ub(b.f, a);else {
- var c = a.type,
- d = a.proxy;
- b.removeEventListener ? b.removeEventListener(c, d, a.capture) : b.detachEvent ? b.detachEvent(Eb(c), d) : b.addListener && b.removeListener && b.removeListener(d);
- xb--;
- (c = Cb(b)) ? (ub(c, a), 0 == c.b && (c.src = null, b[vb] = null)) : rb(a);
- }
- }
- }
- function Eb(a) {
- return a in wb ? wb[a] : wb[a] = "on" + a;
- }
- function Fb(a, b) {
- if (a.A) a = !0;else {
- b = new K(b, this);
- var c = a.listener,
- d = a.H || a.src;
- a.D && Hb(a);
- a = c.call(d, b);
- }
- return a;
- }
- function Cb(a) {
- a = a[vb];
- return a instanceof sb ? a : null;
- }
- var Ib = "__closure_events_fn_" + (1E9 * Math.random() >>> 0);
- function Ab(a) {
- if ("function" === typeof a) return a;
- a[Ib] || (a[Ib] = function (b) {
- return a.handleEvent(b);
- });
- return a[Ib];
- }
- ;
- function N() {
- kb.call(this);
- this.f = new sb(this);
- this.U = this;
- }
- B(N, kb);
- N.prototype[L] = !0;
- N.prototype.addEventListener = function (a, b, c, d) {
- yb(this, a, b, c, d);
- };
- N.prototype.removeEventListener = function (a, b, c, d) {
- Gb(this, a, b, c, d);
- };
- function O(a, b) {
- a = a.U;
- var c = b.type || b;
- if ("string" === typeof b) b = new J(b, a);else if (b instanceof J) b.target = b.target || a;else {
- var d = b;
- b = new J(c, a);
- Va(b, d);
- }
- a = b.a = a;
- Jb(a, c, !0, b);
- Jb(a, c, !1, b);
- }
- function Jb(a, b, c, d) {
- if (b = a.f.a[String(b)]) {
- b = b.concat();
- for (var f = !0, g = 0; g < b.length; ++g) {
- var e = b[g];
- if (e && !e.A && e.capture == c) {
- var h = e.listener,
- k = e.H || e.src;
- e.D && ub(a.f, e);
- f = !1 !== h.call(k, d) && f;
- }
- }
- }
- }
- ;
- var Kb = x;
- function Lb(a, b, c) {
- if ("function" === typeof a) c && (a = A(a, c));else if (a && "function" == typeof a.handleEvent) a = A(a.handleEvent, a);else throw Error("Invalid listener argument");
- return 2147483647 < Number(b) ? -1 : Kb.setTimeout(a, b || 0);
- }
- ;
- function Mb(a, b) {
- this.name = a;
- this.value = b;
- }
- Mb.prototype.toString = function () {
- return this.name;
- };
- var Nb = new Mb("OFF", Infinity),
- Ob = new Mb("SEVERE", 1E3),
- Pb = new Mb("CONFIG", 700),
- Qb = new Mb("FINE", 500);
- function Rb() {
- this.clear();
- }
- var Sb;
- Rb.prototype.clear = function () {};
- function Ub(a, b, c) {
- this.reset(a || Nb, b, c, void 0, void 0);
- }
- Ub.prototype.reset = function () {};
- function Vb(a, b) {
- this.a = null;
- this.f = [];
- this.b = (void 0 === b ? null : b) || null;
- this.c = [];
- this.g = {
- getName: function getName() {
- return a;
- }
- };
- }
- function Wb(a) {
- if (a.a) return a.a;
- if (a.b) return Wb(a.b);
- Ea("Root logger has no level set.");
- return Nb;
- }
- function Xb(a, b) {
- for (; a;) {
- a.f.forEach(function (c) {
- c(b);
- }), a = a.b;
- }
- }
- function Yb() {
- this.entries = {};
- var a = new Vb("");
- a.a = Pb;
- this.entries[""] = a;
- }
- var Zb;
- function $b(a, b, c) {
- var d = a.entries[b];
- if (d) return void 0 !== c && (d.a = c), d;
- d = $b(a, b.substr(0, b.lastIndexOf(".")));
- var f = new Vb(b, d);
- a.entries[b] = f;
- d.c.push(f);
- void 0 !== c && (f.a = c);
- return f;
- }
- function ac() {
- Zb || (Zb = new Yb());
- return Zb;
- }
- function bc(a, b, c) {
- var d;
- if (d = a) if (d = a && b) {
- d = b.value;
- var f = a ? Wb($b(ac(), a.getName())) : Nb;
- d = d >= f.value;
- }
- d && (b = b || Nb, d = $b(ac(), a.getName()), "function" === typeof c && (c = c()), Sb || (Sb = new Rb()), a = a.getName(), a = new Ub(b, c, a), Xb(d, a));
- }
- function P(a, b) {
- a && bc(a, Qb, b);
- }
- ;
- function cc() {}
- cc.prototype.a = null;
- function dc(a) {
- var b;
- (b = a.a) || (b = {}, ec(a) && (b[0] = !0, b[1] = !0), b = a.a = b);
- return b;
- }
- ;
- var fc;
- function gc() {}
- B(gc, cc);
- function hc(a) {
- // 解决兼容APP端跨域的问题,app端必须使用H5+中的plus.net.XMLHttpRequest【APP端不兼容标准HTML中的XMLHttpRequest】
- return (a = ec(a)) ? new ActiveXObject(a) : new plus.net.XMLHttpRequest();
- // return (a = ec(a)) ? new ActiveXObject(a) : new XMLHttpRequest
- }
- function ec(a) {
- if (!a.b && "undefined" == typeof XMLHttpRequest && "undefined" != typeof ActiveXObject) {
- for (var b = ["MSXML2.XMLHTTP.6.0", "MSXML2.XMLHTTP.3.0", "MSXML2.XMLHTTP", "Microsoft.XMLHTTP"], c = 0; c < b.length; c++) {
- var d = b[c];
- try {
- return new ActiveXObject(d), a.b = d;
- } catch (f) {}
- }
- throw Error("Could not create ActiveXObject. ActiveX might be disabled, or MSXML might not be installed");
- }
- return a.b;
- }
- fc = new gc();
- t();
- u();
- function ic(a, b) {
- this.b = a[x.Symbol.iterator]();
- this.c = b;
- this.f = 0;
- }
- ic.prototype[Symbol.iterator] = function () {
- return this;
- };
- ic.prototype.next = function () {
- var a = this.b.next();
- return {
- value: a.done ? void 0 : this.c.call(void 0, a.value, this.f++),
- done: a.done
- };
- };
- function jc(a, b) {
- return new ic(a, b);
- }
- t();
- u();
- t();
- u();
- var kc = "StopIteration" in x ? x.StopIteration : {
- message: "StopIteration",
- stack: ""
- };
- function Q() {}
- Q.prototype.next = function () {
- return Q.prototype.a.call(this);
- };
- Q.prototype.a = function () {
- throw kc;
- };
- Q.prototype.u = function () {
- return this;
- };
- function lc(a) {
- if (a instanceof R || a instanceof S || a instanceof T) return a;
- if ("function" == typeof a.next) return new R(function () {
- return mc(a);
- });
- t();
- u();
- if ("function" == typeof a[Symbol.iterator]) return t(), u(), new R(function () {
- return a[Symbol.iterator]();
- });
- if ("function" == typeof a.u) return new R(function () {
- return mc(a.u());
- });
- throw Error("Not an iterator or iterable.");
- }
- function mc(a) {
- if (!(a instanceof Q)) return a;
- var b = !1;
- return {
- next: function next() {
- for (var c; !b;) {
- try {
- c = a.a();
- break;
- } catch (d) {
- if (d !== kc) throw d;
- b = !0;
- }
- }
- return {
- value: c,
- done: b
- };
- }
- };
- }
- t();
- u();
- function R(a) {
- this.b = a;
- }
- R.prototype.u = function () {
- return new S(this.b());
- };
- R.prototype[Symbol.iterator] = function () {
- return new T(this.b());
- };
- R.prototype.c = function () {
- return new T(this.b());
- };
- t();
- u();
- function S(a) {
- this.b = a;
- }
- oa(S, Q);
- S.prototype.a = function () {
- var a = this.b.next();
- if (a.done) throw kc;
- return a.value;
- };
- S.prototype.next = function () {
- return S.prototype.a.call(this);
- };
- S.prototype[Symbol.iterator] = function () {
- return new T(this.b);
- };
- S.prototype.c = function () {
- return new T(this.b);
- };
- function T(a) {
- R.call(this, function () {
- return a;
- });
- this.f = a;
- }
- oa(T, R);
- T.prototype.next = function () {
- return this.f.next();
- };
- function nc(a, b) {
- this.o = {};
- this.j = [];
- this.B = this.size = 0;
- var c = arguments.length;
- if (1 < c) {
- if (c % 2) throw Error("Uneven number of arguments");
- for (var d = 0; d < c; d += 2) {
- this.set(arguments[d], arguments[d + 1]);
- }
- } else a && this.addAll(a);
- }
- n = nc.prototype;
- n.G = function () {
- oc(this);
- return this.j.concat();
- };
- n.has = function (a) {
- return U(this.o, a);
- };
- n.clear = function () {
- this.o = {};
- this.B = this.size = this.j.length = 0;
- };
- n.remove = function (a) {
- return this.delete(a);
- };
- n.delete = function (a) {
- return U(this.o, a) ? (delete this.o[a], --this.size, this.B++, this.j.length > 2 * this.size && oc(this), !0) : !1;
- };
- function oc(a) {
- if (a.size != a.j.length) {
- for (var b = 0, c = 0; b < a.j.length;) {
- var d = a.j[b];
- U(a.o, d) && (a.j[c++] = d);
- b++;
- }
- a.j.length = c;
- }
- if (a.size != a.j.length) {
- var f = {};
- for (c = b = 0; b < a.j.length;) {
- d = a.j[b], U(f, d) || (a.j[c++] = d, f[d] = 1), b++;
- }
- a.j.length = c;
- }
- }
- n.get = function (a, b) {
- return U(this.o, a) ? this.o[a] : b;
- };
- n.set = function (a, b) {
- U(this.o, a) || (this.size += 1, this.j.push(a), this.B++);
- this.o[a] = b;
- };
- n.addAll = function (a) {
- if (a instanceof nc) for (var b = a.G(), c = 0; c < b.length; c++) {
- this.set(b[c], a.get(b[c]));
- } else for (b in a) {
- this.set(b, a[b]);
- }
- };
- n.forEach = function (a, b) {
- for (var c = this.G(), d = 0; d < c.length; d++) {
- var f = c[d],
- g = this.get(f);
- a.call(b, g, f, this);
- }
- };
- n.clone = function () {
- return new nc(this);
- };
- n.keys = function () {
- return lc(this.u(!0)).c();
- };
- n.values = function () {
- return lc(this.u(!1)).c();
- };
- n.entries = function () {
- var a = this;
- return jc(this.keys(), function (b) {
- return [b, a.get(b)];
- });
- };
- n.u = function (a) {
- oc(this);
- var b = 0,
- c = this.B,
- d = this,
- f = new Q();
- f.a = function () {
- if (c != d.B) throw Error("The map has changed since the iterator was created");
- if (b >= d.j.length) throw kc;
- var g = d.j[b++];
- return a ? g : d.o[g];
- };
- f.next = f.a.bind(f);
- return f;
- };
- function U(a, b) {
- return Object.prototype.hasOwnProperty.call(a, b);
- }
- ;
- var pc = /^(?:([^:/?#.]+):)?(?:\/\/(?:([^\\/?#]*)@)?([^\\/?#]*?)(?::([0-9]+))?(?=[\\/?#]|$))?([^?#]+)?(?:\?([^#]*))?(?:#([\s\S]*))?$/;
- function qc(a) {
- N.call(this);
- this.headers = new nc();
- this.C = a || null;
- this.c = !1;
- this.J = this.a = null;
- this.P = this.v = "";
- this.g = 0;
- this.l = "";
- this.i = this.N = this.s = this.L = !1;
- this.h = 0;
- this.w = null;
- this.m = rc;
- this.I = this.M = !1;
- }
- B(qc, N);
- var rc = "";
- qc.prototype.b = $b(ac(), "goog.net.XhrIo", void 0).g;
- var sc = /^https?$/i,
- tc = ["POST", "PUT"];
- function uc(a, b, c) {
- if (a.a) throw Error("[goog.net.XhrIo] Object is active with another request=" + a.v + "; newUri=" + b);
- a.v = b;
- a.l = "";
- a.g = 0;
- a.P = "POST";
- a.L = !1;
- a.c = !0;
- a.a = a.C ? hc(a.C) : hc(fc);
- a.J = a.C ? dc(a.C) : dc(fc);
- a.a.onreadystatechange = A(a.R, a);
- try {
- P(a.b, V(a, "Opening Xhr")), a.N = !0, a.a.open("POST", String(b), !0), a.N = !1;
- } catch (g) {
- P(a.b, V(a, "Error opening Xhr: " + g.message));
- vc(a, g);
- return;
- }
- b = c || "";
- c = a.headers.clone();
- var d = c.G().find(function (g) {
- return "content-type" == g.toLowerCase();
- }),
- f = x.FormData && b instanceof x.FormData;
- !(0 <= Na(tc, "POST")) || d || f || c.set("Content-Type", "application/x-www-form-urlencoded;charset=utf-8");
- c.forEach(function (g, e) {
- this.a.setRequestHeader(e, g);
- }, a);
- a.m && (a.a.responseType = a.m);
- "withCredentials" in a.a && a.a.withCredentials !== a.M && (a.a.withCredentials = a.M);
- try {
- wc(a), 0 < a.h && (a.I = xc(a.a), P(a.b, V(a, "Will abort after " + a.h + "ms if incomplete, xhr2 " + a.I)), a.I ? (a.a.timeout = a.h, a.a.ontimeout = A(a.T, a)) : a.w = Lb(a.T, a.h, a)), P(a.b, V(a, "Sending request")), a.s = !0, a.a.send(b), a.s = !1;
- } catch (g) {
- P(a.b, V(a, "Send error: " + g.message)), vc(a, g);
- }
- }
- function xc(a) {
- return ab && jb() && "number" === typeof a.timeout && void 0 !== a.ontimeout;
- }
- n = qc.prototype;
- n.T = function () {
- "undefined" != typeof qa && this.a && (this.l = "Timed out after " + this.h + "ms, aborting", this.g = 8, P(this.b, V(this, this.l)), O(this, "timeout"), this.abort(8));
- };
- function vc(a, b) {
- a.c = !1;
- a.a && (a.i = !0, a.a.abort(), a.i = !1);
- a.l = b;
- a.g = 5;
- yc(a);
- zc(a);
- }
- function yc(a) {
- a.L || (a.L = !0, O(a, "complete"), O(a, "error"));
- }
- n.abort = function (a) {
- this.a && this.c && (P(this.b, V(this, "Aborting")), this.c = !1, this.i = !0, this.a.abort(), this.i = !1, this.g = a || 7, O(this, "complete"), O(this, "abort"), zc(this));
- };
- n.R = function () {
- this.K || (this.N || this.s || this.i ? Ac(this) : this.W());
- };
- n.W = function () {
- Ac(this);
- };
- function Ac(a) {
- if (a.c && "undefined" != typeof qa) if (a.J[1] && 4 == W(a) && 2 == a.getStatus()) P(a.b, V(a, "Local request error detected and ignored"));else if (a.s && 4 == W(a)) Lb(a.R, 0, a);else if (O(a, "readystatechange"), 4 == W(a)) {
- P(a.b, V(a, "Request complete"));
- a.c = !1;
- try {
- var b = a.getStatus();
- a: switch (b) {
- case 200:
- case 201:
- case 202:
- case 204:
- case 206:
- case 304:
- case 1223:
- var c = !0;
- break a;
- default:
- c = !1;
- }
- var d;
- if (!(d = c)) {
- var f;
- if (f = 0 === b) {
- var g = String(a.v).match(pc)[1] || null;
- if (!g && x.self && x.self.location) {
- var e = x.self.location.protocol;
- g = e.substr(0, e.length - 1);
- }
- f = !sc.test(g ? g.toLowerCase() : "");
- }
- d = f;
- }
- if (d) O(a, "complete"), O(a, "success");else {
- a.g = 6;
- try {
- var h = 2 < W(a) ? a.a.statusText : "";
- } catch (k) {
- P(a.b, "Can not get status: " + k.message), h = "";
- }
- a.l = h + " [" + a.getStatus() + "]";
- yc(a);
- }
- } finally {
- zc(a);
- }
- }
- }
- function zc(a) {
- if (a.a) {
- wc(a);
- var b = a.a,
- c = a.J[0] ? ra : null;
- a.a = null;
- a.J = null;
- O(a, "ready");
- try {
- b.onreadystatechange = c;
- } catch (d) {
- (a = a.b) && bc(a, Ob, "Problem encountered resetting onreadystatechange: " + d.message);
- }
- }
- }
- function wc(a) {
- a.a && a.I && (a.a.ontimeout = null);
- a.w && (Kb.clearTimeout(a.w), a.w = null);
- }
- function W(a) {
- return a.a ? a.a.readyState : 0;
- }
- n.getStatus = function () {
- try {
- return 2 < W(this) ? this.a.status : -1;
- } catch (a) {
- return -1;
- }
- };
- function Bc(a) {
- try {
- if (!a.a) return null;
- if ("response" in a.a) return a.a.response;
- switch (a.m) {
- case rc:
- case "text":
- return a.a.responseText;
- case "arraybuffer":
- if ("mozResponseArrayBuffer" in a.a) return a.a.mozResponseArrayBuffer;
- }
- var b = a.b;
- b && bc(b, Ob, "Response type " + a.m + " is not supported on this browser");
- return null;
- } catch (c) {
- return P(a.b, "Can not get response: " + c.message), null;
- }
- }
- function Cc(a, b) {
- if (a.a && 4 == W(a)) return a = a.a.getResponseHeader(b), null === a ? void 0 : a;
- }
- function Dc(a) {
- var b = {};
- a = (a.a && 4 == W(a) ? a.a.getAllResponseHeaders() || "" : "").split("\r\n");
- for (var c = 0; c < a.length; c++) {
- if (!/^[\s\xa0]*$/.test(a[c])) {
- var d = Wa(a[c]),
- f = d[0];
- d = d[1];
- if ("string" === typeof d) {
- d = d.trim();
- var g = b[f] || [];
- b[f] = g;
- g.push(d);
- }
- }
- }
- return Ta(b, function (e) {
- return e.join(", ");
- });
- }
- function V(a, b) {
- return b + " [" + a.P + " " + a.v + " " + a.getStatus() + "]";
- }
- ;
- var Ec = {},
- Fc = null;
- function Gc(a) {
- var b = a.length,
- c = 3 * b / 4;
- c % 3 ? c = Math.floor(c) : H("=.", a[b - 1]) && (c = H("=.", a[b - 2]) ? c - 2 : c - 1);
- var d = new Uint8Array(c),
- f = 0;
- Hc(a, function (g) {
- d[f++] = g;
- });
- return d.subarray(0, f);
- }
- function Hc(a, b) {
- function c(k) {
- for (; d < a.length;) {
- var l = a.charAt(d++),
- m = Fc[l];
- if (null != m) return m;
- if (!/^[\s\xa0]*$/.test(l)) throw Error("Unknown base64 encoding at char: " + l);
- }
- return k;
- }
- Ic();
- for (var d = 0;;) {
- var f = c(-1),
- g = c(0),
- e = c(64),
- h = c(64);
- if (64 === h && -1 === f) break;
- b(f << 2 | g >> 4);
- 64 != e && (b(g << 4 & 240 | e >> 2), 64 != h && b(e << 6 & 192 | h));
- }
- }
- function Ic() {
- if (!Fc) {
- Fc = {};
- for (var a = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789".split(""), b = ["+/=", "+/", "-_=", "-_.", "-_"], c = 0; 5 > c; c++) {
- var d = a.concat(b[c].split(""));
- Ec[c] = d;
- for (var f = 0; f < d.length; f++) {
- var g = d[f];
- void 0 === Fc[g] && (Fc[g] = f);
- }
- }
- }
- }
- ;
- var Jc = ["content-type", "grpc-status", "grpc-message"];
- function X(a) {
- // console.log('X run')
- this.a = a.Z;
- this.m = null;
- this.b = [];
- this.h = [];
- this.g = [];
- this.f = [];
- this.c = [];
- this.l = !1;
- this.i = 0;
- this.s = new Fa();
- var b = this;
- yb(this.a, "readystatechange", function () {
- // console.log('readystatechange')
- // console.log(a)
- var c = b.a;
- // console.log(c)
- if (c = c.a ? c.a.getResponseHeader("Content-Type") : null) {
- // console.log('X ok 1')
- // console.log('c: ' + c)
- c = c.toLowerCase();
- if (0 == c.lastIndexOf("application/grpc-web-text", 0)) {
- c = b.a;
- // console.log('(c = b.a) c: ' + JSON.stringify(c.a))
- try {
- var d = c.a ? c.a.responseText : "";
- } catch (k) {
- // console.log("Can not get responseText: " + k.message)
- P(c.b, "Can not get responseText: " + k.message), d = "";
- }
- c = d || "";
- // console.log('(c = d || "") c: ' + c)
- // add by wzx
- if (c == '200 OK') c = "";
- d = c.length - c.length % 4;
- c = c.substr(b.i, d - b.i);
- if (0 == c.length) return;
- // console.log('X ok 3')
- b.i = d;
- c = Gc(c);
- } else if (0 == c.lastIndexOf("application/grpc", 0)) c = new Uint8Array(Bc(b.a));else {
- // console.log('Unknown Content-type received.')
- Y(b, new E(2, "Unknown Content-type received."));
- return;
- }
- d = null;
- try {
- // console.log(b.s)
- // console.log(c)
- d = Ha(b.s, c);
- } catch (k) {
- __f__("log", k, " at node_modules/grpc-web/index.js:1825");
- Y(b, new E(2, "Error in parsing response body"));
- }
- if (d) for (c = 0; c < d.length; c++) {
- if (Ia in d[c]) {
- var f = d[c][Ia];
- if (f) {
- var g = !1,
- e = void 0;
- try {
- e = b.m(f), g = !0;
- } catch (k) {
- Y(b, new E(13, "Error when deserializing response data; error: " + k + (", response: " + e)));
- }
- if (g) for (f = e, g = 0; g < b.b.length; g++) {
- b.b[g](f);
- }
- }
- }
- if (G in d[c] && 0 < d[c][G].length) {
- f = "";
- for (g = 0; g < d[c][G].length; g++) {
- f += String.fromCharCode(d[c][G][g]);
- }
- f = f.trim().split("\r\n");
- g = {};
- for (e = 0; e < f.length; e++) {
- var h = f[e].indexOf(":");
- g[f[e].substring(0, h).trim()] = f[e].substring(h + 1).trim();
- }
- f = g;
- g = 0;
- e = "";
- "grpc-status" in f && (g = Number(f["grpc-status"]), delete f["grpc-status"]);
- "grpc-message" in f && (e = f["grpc-message"], delete f["grpc-message"]);
- Y(b, new E(g, e, f));
- }
- }
- }
- });
- yb(this.a, "complete", function () {
- var c = b.a.g,
- d = 2,
- f = "",
- g = {},
- e = Dc(b.a);
- Object.keys(e).forEach(function (k) {
- Jc.includes(k) || (g[k] = e[k]);
- });
- Kc(b, g);
- var h = -1;
- if (0 != c) {
- switch (c) {
- case 7:
- d = 10;
- break;
- case 8:
- d = 4;
- break;
- case 6:
- h = b.a.getStatus();
- d = Aa(h);
- break;
- default:
- d = 14;
- }
- 10 == d && b.l || (f = Ca(c), -1 != h && (f += ", http status code: " + h), Y(b, new E(d, f)));
- } else h = !1, "grpc-status" in e && (d = Number(Cc(b.a, "grpc-status")), "grpc-message" in e && (f = Cc(b.a, "grpc-message")), 0 != d && (Y(b, new E(d, f || "", e)), h = !0)), h || Lc(b);
- });
- }
- X.prototype.on = function (a, b) {
- "data" == a ? this.b.push(b) : "status" == a ? this.h.push(b) : "metadata" == a ? this.g.push(b) : "end" == a ? this.c.push(b) : "error" == a && this.f.push(b);
- return this;
- };
- function Mc(a, b) {
- b = a.indexOf(b);
- -1 < b && a.splice(b, 1);
- }
- X.prototype.removeListener = function (a, b) {
- "data" == a ? Mc(this.b, b) : "status" == a ? Mc(this.h, b) : "metadata" == a ? Mc(this.g, b) : "end" == a ? Mc(this.c, b) : "error" == a && Mc(this.f, b);
- return this;
- };
- X.prototype.cancel = function () {
- this.l = !0;
- this.a.abort();
- };
- function Y(a, b) {
- if (0 != b.code) for (var c = new E(b.code, decodeURIComponent(b.message || ""), b.metadata), d = 0; d < a.f.length; d++) {
- a.f[d](c);
- }
- b = {
- code: b.code,
- details: decodeURIComponent(b.message || ""),
- metadata: b.metadata
- };
- for (c = 0; c < a.h.length; c++) {
- a.h[c](b);
- }
- }
- function Kc(a, b) {
- for (var c = 0; c < a.g.length; c++) {
- a.g[c](b);
- }
- }
- function Lc(a) {
- for (var b = 0; b < a.c.length; b++) {
- a.c[b]();
- }
- }
- X.prototype.cancel = X.prototype.cancel;
- X.prototype.removeListener = X.prototype.removeListener;
- X.prototype.on = X.prototype.on;
- function Nc(a) {
- var b = "";
- Sa(a, function (c, d) {
- b += d;
- b += ":";
- b += c;
- b += "\r\n";
- });
- return b;
- }
- ;
- function Z(a, b) {
- a = void 0 === a ? {} : a;
- this.a = a.format || y("format", a) || "text";
- this.g = a.aa || y("suppressCorsPreflight", a) || !1;
- this.f = a.withCredentials || y("withCredentials", a) || !1;
- this.b = a.$ || y("streamInterceptors", a) || [];
- this.h = a.ba || y("unaryInterceptors", a) || [];
- this.c = b || null;
- }
- Z.prototype.X = function (a, b, c, d, f) {
- var g = this,
- e = a.substr(0, a.length - d.name.length);
- a = Oc(function (h) {
- return Pc(g, h, e);
- }, this.b).call(this, za(d, b, c));
- Qc(a, f, !1);
- return new Ba(a);
- };
- Z.prototype.S = function (a, b, c, d) {
- var f = this,
- g = a.substr(0, a.length - d.name.length);
- return Oc(function (e) {
- return new Promise(function (h, k) {
- var l = Pc(f, e, g),
- m,
- p,
- q;
- Qc(l, function (w, z, M, Tb, Rc) {
- w ? k(w) : Rc ? q = z : M ? p = M : Tb ? m = Tb : (w = e.getMethodDescriptor(), z = m, z = void 0 === z ? {} : z, h(new D(q, w, z, void 0 === p ? null : p)));
- }, !0);
- });
- }, this.h).call(this, za(d, b, c)).then(function (e) {
- return e.getResponseMessage();
- });
- };
- Z.prototype.unaryCall = function (a, b, c, d) {
- return this.S(a, b, c, d);
- };
- Z.prototype.Y = function (a, b, c, d) {
- var f = this,
- g = a.substr(0, a.length - d.name.length);
- return Oc(function (e) {
- return Pc(f, e, g);
- }, this.b).call(this, za(d, b, c));
- };
- function Pc(a, b, c) {
- var d = b.getMethodDescriptor(),
- f = c + d.getName();
- c = a.c ? a.c : new qc();
- c.M = a.f;
- var g = new X({
- Z: c
- });
- g.m = d.b;
- var e = b.getMetadata();
- for (h in e) {
- c.headers.set(h, e[h]);
- }
- "text" == a.a ? (c.headers.set("Content-Type", "application/grpc-web-text"), c.headers.set("Accept", "application/grpc-web-text")) : c.headers.set("Content-Type", "application/grpc-web+proto");
- c.headers.set("X-User-Agent", "grpc-web-javascript/0.1");
- c.headers.set("X-Grpc-Web", "1");
- if (c.headers.has("deadline")) {
- var h = Number(c.headers.get("deadline"));
- h = Math.ceil(h - new Date().getTime());
- c.headers.delete("deadline");
- Infinity === h && (h = 0);
- 0 < h && (c.headers.set("grpc-timeout", h + "m"), c.h = Math.max(0, Math.max(1E3, Math.ceil(1.1 * h))));
- }
- if (a.g) {
- e = c.headers;
- h = {};
- for (var k = ha(e.keys()), l = k.next(); !l.done; l = k.next()) {
- l = l.value, h[l] = e.get(l);
- }
- c.headers.clear();
- b: {
- for (m in h) {
- var m = !1;
- break b;
- }
- m = !0;
- }
- if (!m) if (h = Nc(h), "string" === typeof f) {
- if (m = encodeURIComponent("$httpHeaders"), h = null != h ? "=" + encodeURIComponent(String(h)) : "", m += h) h = f.indexOf("#"), 0 > h && (h = f.length), e = f.indexOf("?"), 0 > e || e > h ? (e = h, k = "") : k = f.substring(e + 1, h), f = [f.substr(0, e), k, f.substr(h)], h = f[1], f[1] = m ? h ? h + "&" + m : m : h, f = f[0] + (f[1] ? "?" + f[1] : "") + f[2];
- } else f.a("$httpHeaders", h);
- }
- b = (0, d.a)(b.getRequestMessage());
- d = b.length;
- m = [0, 0, 0, 0];
- h = new Uint8Array(5 + d);
- for (e = 3; 0 <= e; e--) {
- m[e] = d % 256, d >>>= 8;
- }
- h.set(new Uint8Array(m), 1);
- h.set(b, 5);
- b = h;
- if ("text" == a.a) {
- a = b;
- var p;
- void 0 === p && (p = 0);
- Ic();
- p = Ec[p];
- b = Array(Math.floor(a.length / 3));
- d = p[64] || "";
- for (m = h = 0; h < a.length - 2; h += 3) {
- l = a[h];
- var q = a[h + 1];
- k = a[h + 2];
- e = p[l >> 2];
- l = p[(l & 3) << 4 | q >> 4];
- q = p[(q & 15) << 2 | k >> 6];
- k = p[k & 63];
- b[m++] = e + l + q + k;
- }
- e = 0;
- k = d;
- switch (a.length - h) {
- case 2:
- e = a[h + 1], k = p[(e & 15) << 2] || d;
- case 1:
- a = a[h], b[m] = p[a >> 2] + p[(a & 3) << 4 | e >> 4] + k + d;
- }
- b = b.join("");
- } else "binary" == a.a && (c.m = "arraybuffer");
- uc(c, f, b);
- return g;
- }
- function Qc(a, b, c) {
- var d = !1,
- f = null,
- g = !1;
- a.on("data", function (e) {
- d = !0;
- f = e;
- });
- a.on("error", function (e) {
- 0 == e.code || g || (g = !0, b(e, null));
- });
- a.on("status", function (e) {
- 0 == e.code || g ? c && b(null, null, e) : (g = !0, b({
- code: e.code,
- message: e.details,
- metadata: e.metadata
- }, null));
- });
- if (c) a.on("metadata", function (e) {
- b(null, null, null, e);
- });
- a.on("end", function () {
- g || (d ? c ? b(null, f, null, null, !0) : b(null, f) : b({
- code: 2,
- message: "Incomplete response"
- }));
- c && b(null, null);
- });
- }
- function Oc(a, b) {
- var c = a;
- b.forEach(function (d) {
- var f = c;
- c = function c(g) {
- return d.intercept(g, f);
- };
- });
- return c;
- }
- Z.prototype.serverStreaming = Z.prototype.Y;
- Z.prototype.unaryCall = Z.prototype.unaryCall;
- Z.prototype.thenableCall = Z.prototype.S;
- Z.prototype.rpcCall = Z.prototype.X;
- module.exports.CallOptions = xa;
- module.exports.MethodDescriptor = ya;
- module.exports.GrpcWebClientBase = Z;
- module.exports.RpcError = E;
- module.exports.StatusCode = {
- OK: 0,
- CANCELLED: 1,
- UNKNOWN: 2,
- INVALID_ARGUMENT: 3,
- DEADLINE_EXCEEDED: 4,
- NOT_FOUND: 5,
- ALREADY_EXISTS: 6,
- PERMISSION_DENIED: 7,
- UNAUTHENTICATED: 16,
- RESOURCE_EXHAUSTED: 8,
- FAILED_PRECONDITION: 9,
- ABORTED: 10,
- OUT_OF_RANGE: 11,
- UNIMPLEMENTED: 12,
- INTERNAL: 13,
- UNAVAILABLE: 14,
- DATA_LOSS: 15
- };
- module.exports.MethodType = {
- UNARY: "unary",
- SERVER_STREAMING: "server_streaming",
- BIDI_STREAMING: "bidi_streaming"
- };
- Kb = "undefined" !== typeof globalThis && globalThis || self;
- /* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../../../../Program Files/HBuilderX/plugins/uniapp-cli/node_modules/webpack/buildin/global.js */ 40), __webpack_require__(/*! ./node_modules/@dcloudio/vue-cli-plugin-uni/lib/format-log.js */ 34)["default"]))
- /***/ }),
- /* 66 */
- /*!*******************************************************************!*\
- !*** D:/Work2/Orienteering/TrackOffical/grpc/track_offical_pb.js ***!
- \*******************************************************************/
- /*! no static exports found */
- /***/ (function(module, exports, __webpack_require__) {
- eval("// source: track_offical.proto\n/**\n * @fileoverview\n * @enhanceable\n * @suppress {missingRequire} reports error on implicit type usages.\n * @suppress {messageConventions} JS Compiler reports an error if a variable or\n * field starts with 'MSG_' and isn't a translatable message.\n * @public\n */\n// GENERATED CODE -- DO NOT EDIT!\n/* eslint-disable */\n// @ts-nocheck\n\nvar jspb = __webpack_require__(/*! google-protobuf */ 39);\nvar goog = jspb;\nvar global = function () {\n return this || window || global || self || Function('return this')();\n}.call(null);\nvar base_pb = __webpack_require__(/*! ./base_pb.js */ 38);\ngoog.object.extend(proto, base_pb);\ngoog.exportSymbol('proto.to.v1.ToActionDetailReply', null, global);\ngoog.exportSymbol('proto.to.v1.ToActionListReply', null, global);\ngoog.exportSymbol('proto.to.v1.ToActionSimple', null, global);\ngoog.exportSymbol('proto.to.v1.ToActionUsersDetailReply', null, global);\ngoog.exportSymbol('proto.to.v1.ToAnyUserHistoryGpsQueryRequest', null, global);\ngoog.exportSymbol('proto.to.v1.ToMapInfo', null, global);\ngoog.exportSymbol('proto.to.v1.ToUserGpsQueryReply', null, global);\ngoog.exportSymbol('proto.to.v1.ToUsersInGameHistoryGpsQueryRequest', null, global);\ngoog.exportSymbol('proto.to.v1.UserArriveControlPoint', null, global);\ngoog.exportSymbol('proto.to.v1.UserGpsInfo', null, global);\ngoog.exportSymbol('proto.to.v1.UserInGameInfo', null, global);\n/**\n * Generated by JsPbCodeGenerator.\n * @param {Array=} opt_data Optional initial data array, typically from a\n * server response, or constructed directly in Javascript. The array is used\n * in place and becomes part of the constructed object. It is not cloned.\n * If no data is provided, the constructed object will be empty, but still\n * valid.\n * @extends {jspb.Message}\n * @constructor\n */\nproto.to.v1.ToActionListReply = function (opt_data) {\n jspb.Message.initialize(this, opt_data, 0, -1, proto.to.v1.ToActionListReply.repeatedFields_, null);\n};\ngoog.inherits(proto.to.v1.ToActionListReply, jspb.Message);\nif (goog.DEBUG && !COMPILED) {\n /**\n * @public\n * @override\n */\n proto.to.v1.ToActionListReply.displayName = 'proto.to.v1.ToActionListReply';\n}\n/**\n * Generated by JsPbCodeGenerator.\n * @param {Array=} opt_data Optional initial data array, typically from a\n * server response, or constructed directly in Javascript. The array is used\n * in place and becomes part of the constructed object. It is not cloned.\n * If no data is provided, the constructed object will be empty, but still\n * valid.\n * @extends {jspb.Message}\n * @constructor\n */\nproto.to.v1.ToActionSimple = function (opt_data) {\n jspb.Message.initialize(this, opt_data, 0, -1, null, null);\n};\ngoog.inherits(proto.to.v1.ToActionSimple, jspb.Message);\nif (goog.DEBUG && !COMPILED) {\n /**\n * @public\n * @override\n */\n proto.to.v1.ToActionSimple.displayName = 'proto.to.v1.ToActionSimple';\n}\n/**\n * Generated by JsPbCodeGenerator.\n * @param {Array=} opt_data Optional initial data array, typically from a\n * server response, or constructed directly in Javascript. The array is used\n * in place and becomes part of the constructed object. It is not cloned.\n * If no data is provided, the constructed object will be empty, but still\n * valid.\n * @extends {jspb.Message}\n * @constructor\n */\nproto.to.v1.ToActionDetailReply = function (opt_data) {\n jspb.Message.initialize(this, opt_data, 0, -1, proto.to.v1.ToActionDetailReply.repeatedFields_, null);\n};\ngoog.inherits(proto.to.v1.ToActionDetailReply, jspb.Message);\nif (goog.DEBUG && !COMPILED) {\n /**\n * @public\n * @override\n */\n proto.to.v1.ToActionDetailReply.displayName = 'proto.to.v1.ToActionDetailReply';\n}\n/**\n * Generated by JsPbCodeGenerator.\n * @param {Array=} opt_data Optional initial data array, typically from a\n * server response, or constructed directly in Javascript. The array is used\n * in place and becomes part of the constructed object. It is not cloned.\n * If no data is provided, the constructed object will be empty, but still\n * valid.\n * @extends {jspb.Message}\n * @constructor\n */\nproto.to.v1.ToMapInfo = function (opt_data) {\n jspb.Message.initialize(this, opt_data, 0, -1, null, null);\n};\ngoog.inherits(proto.to.v1.ToMapInfo, jspb.Message);\nif (goog.DEBUG && !COMPILED) {\n /**\n * @public\n * @override\n */\n proto.to.v1.ToMapInfo.displayName = 'proto.to.v1.ToMapInfo';\n}\n/**\n * Generated by JsPbCodeGenerator.\n * @param {Array=} opt_data Optional initial data array, typically from a\n * server response, or constructed directly in Javascript. The array is used\n * in place and becomes part of the constructed object. It is not cloned.\n * If no data is provided, the constructed object will be empty, but still\n * valid.\n * @extends {jspb.Message}\n * @constructor\n */\nproto.to.v1.ToActionUsersDetailReply = function (opt_data) {\n jspb.Message.initialize(this, opt_data, 0, -1, proto.to.v1.ToActionUsersDetailReply.repeatedFields_, null);\n};\ngoog.inherits(proto.to.v1.ToActionUsersDetailReply, jspb.Message);\nif (goog.DEBUG && !COMPILED) {\n /**\n * @public\n * @override\n */\n proto.to.v1.ToActionUsersDetailReply.displayName = 'proto.to.v1.ToActionUsersDetailReply';\n}\n/**\n * Generated by JsPbCodeGenerator.\n * @param {Array=} opt_data Optional initial data array, typically from a\n * server response, or constructed directly in Javascript. The array is used\n * in place and becomes part of the constructed object. It is not cloned.\n * If no data is provided, the constructed object will be empty, but still\n * valid.\n * @extends {jspb.Message}\n * @constructor\n */\nproto.to.v1.UserInGameInfo = function (opt_data) {\n jspb.Message.initialize(this, opt_data, 0, -1, null, null);\n};\ngoog.inherits(proto.to.v1.UserInGameInfo, jspb.Message);\nif (goog.DEBUG && !COMPILED) {\n /**\n * @public\n * @override\n */\n proto.to.v1.UserInGameInfo.displayName = 'proto.to.v1.UserInGameInfo';\n}\n/**\n * Generated by JsPbCodeGenerator.\n * @param {Array=} opt_data Optional initial data array, typically from a\n * server response, or constructed directly in Javascript. The array is used\n * in place and becomes part of the constructed object. It is not cloned.\n * If no data is provided, the constructed object will be empty, but still\n * valid.\n * @extends {jspb.Message}\n * @constructor\n */\nproto.to.v1.ToAnyUserHistoryGpsQueryRequest = function (opt_data) {\n jspb.Message.initialize(this, opt_data, 0, -1, proto.to.v1.ToAnyUserHistoryGpsQueryRequest.repeatedFields_, null);\n};\ngoog.inherits(proto.to.v1.ToAnyUserHistoryGpsQueryRequest, jspb.Message);\nif (goog.DEBUG && !COMPILED) {\n /**\n * @public\n * @override\n */\n proto.to.v1.ToAnyUserHistoryGpsQueryRequest.displayName = 'proto.to.v1.ToAnyUserHistoryGpsQueryRequest';\n}\n/**\n * Generated by JsPbCodeGenerator.\n * @param {Array=} opt_data Optional initial data array, typically from a\n * server response, or constructed directly in Javascript. The array is used\n * in place and becomes part of the constructed object. It is not cloned.\n * If no data is provided, the constructed object will be empty, but still\n * valid.\n * @extends {jspb.Message}\n * @constructor\n */\nproto.to.v1.ToUsersInGameHistoryGpsQueryRequest = function (opt_data) {\n jspb.Message.initialize(this, opt_data, 0, -1, null, null);\n};\ngoog.inherits(proto.to.v1.ToUsersInGameHistoryGpsQueryRequest, jspb.Message);\nif (goog.DEBUG && !COMPILED) {\n /**\n * @public\n * @override\n */\n proto.to.v1.ToUsersInGameHistoryGpsQueryRequest.displayName = 'proto.to.v1.ToUsersInGameHistoryGpsQueryRequest';\n}\n/**\n * Generated by JsPbCodeGenerator.\n * @param {Array=} opt_data Optional initial data array, typically from a\n * server response, or constructed directly in Javascript. The array is used\n * in place and becomes part of the constructed object. It is not cloned.\n * If no data is provided, the constructed object will be empty, but still\n * valid.\n * @extends {jspb.Message}\n * @constructor\n */\nproto.to.v1.ToUserGpsQueryReply = function (opt_data) {\n jspb.Message.initialize(this, opt_data, 0, -1, proto.to.v1.ToUserGpsQueryReply.repeatedFields_, null);\n};\ngoog.inherits(proto.to.v1.ToUserGpsQueryReply, jspb.Message);\nif (goog.DEBUG && !COMPILED) {\n /**\n * @public\n * @override\n */\n proto.to.v1.ToUserGpsQueryReply.displayName = 'proto.to.v1.ToUserGpsQueryReply';\n}\n/**\n * Generated by JsPbCodeGenerator.\n * @param {Array=} opt_data Optional initial data array, typically from a\n * server response, or constructed directly in Javascript. The array is used\n * in place and becomes part of the constructed object. It is not cloned.\n * If no data is provided, the constructed object will be empty, but still\n * valid.\n * @extends {jspb.Message}\n * @constructor\n */\nproto.to.v1.UserGpsInfo = function (opt_data) {\n jspb.Message.initialize(this, opt_data, 0, -1, null, null);\n};\ngoog.inherits(proto.to.v1.UserGpsInfo, jspb.Message);\nif (goog.DEBUG && !COMPILED) {\n /**\n * @public\n * @override\n */\n proto.to.v1.UserGpsInfo.displayName = 'proto.to.v1.UserGpsInfo';\n}\n/**\n * Generated by JsPbCodeGenerator.\n * @param {Array=} opt_data Optional initial data array, typically from a\n * server response, or constructed directly in Javascript. The array is used\n * in place and becomes part of the constructed object. It is not cloned.\n * If no data is provided, the constructed object will be empty, but still\n * valid.\n * @extends {jspb.Message}\n * @constructor\n */\nproto.to.v1.UserArriveControlPoint = function (opt_data) {\n jspb.Message.initialize(this, opt_data, 0, -1, null, null);\n};\ngoog.inherits(proto.to.v1.UserArriveControlPoint, jspb.Message);\nif (goog.DEBUG && !COMPILED) {\n /**\n * @public\n * @override\n */\n proto.to.v1.UserArriveControlPoint.displayName = 'proto.to.v1.UserArriveControlPoint';\n}\n\n/**\n * List of repeated fields within this message type.\n * @private {!Array<number>}\n * @const\n */\nproto.to.v1.ToActionListReply.repeatedFields_ = [1];\nif (jspb.Message.GENERATE_TO_OBJECT) {\n /**\n * Creates an object representation of this proto.\n * Field names that are reserved in JavaScript and will be renamed to pb_name.\n * Optional fields that are not set will be set to undefined.\n * To access a reserved field use, foo.pb_<name>, eg, foo.pb_default.\n * For the list of reserved names please see:\n * net/proto2/compiler/js/internal/generator.cc#kKeyword.\n * @param {boolean=} opt_includeInstance Deprecated. whether to include the\n * JSPB instance for transitional soy proto support:\n * http://goto/soy-param-migration\n * @return {!Object}\n */\n proto.to.v1.ToActionListReply.prototype.toObject = function (opt_includeInstance) {\n return proto.to.v1.ToActionListReply.toObject(opt_includeInstance, this);\n };\n\n /**\n * Static version of the {@see toObject} method.\n * @param {boolean|undefined} includeInstance Deprecated. Whether to include\n * the JSPB instance for transitional soy proto support:\n * http://goto/soy-param-migration\n * @param {!proto.to.v1.ToActionListReply} msg The msg instance to transform.\n * @return {!Object}\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\n proto.to.v1.ToActionListReply.toObject = function (includeInstance, msg) {\n var f,\n obj = {\n listList: jspb.Message.toObjectList(msg.getListList(), proto.to.v1.ToActionSimple.toObject, includeInstance)\n };\n if (includeInstance) {\n obj.$jspbMessageInstance = msg;\n }\n return obj;\n };\n}\n\n/**\n * Deserializes binary data (in protobuf wire format).\n * @param {jspb.ByteSource} bytes The bytes to deserialize.\n * @return {!proto.to.v1.ToActionListReply}\n */\nproto.to.v1.ToActionListReply.deserializeBinary = function (bytes) {\n var reader = new jspb.BinaryReader(bytes);\n var msg = new proto.to.v1.ToActionListReply();\n return proto.to.v1.ToActionListReply.deserializeBinaryFromReader(msg, reader);\n};\n\n/**\n * Deserializes binary data (in protobuf wire format) from the\n * given reader into the given message object.\n * @param {!proto.to.v1.ToActionListReply} msg The message object to deserialize into.\n * @param {!jspb.BinaryReader} reader The BinaryReader to use.\n * @return {!proto.to.v1.ToActionListReply}\n */\nproto.to.v1.ToActionListReply.deserializeBinaryFromReader = function (msg, reader) {\n while (reader.nextField()) {\n if (reader.isEndGroup()) {\n break;\n }\n var field = reader.getFieldNumber();\n switch (field) {\n case 1:\n var value = new proto.to.v1.ToActionSimple();\n reader.readMessage(value, proto.to.v1.ToActionSimple.deserializeBinaryFromReader);\n msg.addList(value);\n break;\n default:\n reader.skipField();\n break;\n }\n }\n return msg;\n};\n\n/**\n * Serializes the message to binary data (in protobuf wire format).\n * @return {!Uint8Array}\n */\nproto.to.v1.ToActionListReply.prototype.serializeBinary = function () {\n var writer = new jspb.BinaryWriter();\n proto.to.v1.ToActionListReply.serializeBinaryToWriter(this, writer);\n return writer.getResultBuffer();\n};\n\n/**\n * Serializes the given message to binary data (in protobuf wire\n * format), writing to the given BinaryWriter.\n * @param {!proto.to.v1.ToActionListReply} message\n * @param {!jspb.BinaryWriter} writer\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\nproto.to.v1.ToActionListReply.serializeBinaryToWriter = function (message, writer) {\n var f = undefined;\n f = message.getListList();\n if (f.length > 0) {\n writer.writeRepeatedMessage(1, f, proto.to.v1.ToActionSimple.serializeBinaryToWriter);\n }\n};\n\n/**\n * repeated ToActionSimple list = 1;\n * @return {!Array<!proto.to.v1.ToActionSimple>}\n */\nproto.to.v1.ToActionListReply.prototype.getListList = function () {\n return (/** @type{!Array<!proto.to.v1.ToActionSimple>} */\n jspb.Message.getRepeatedWrapperField(this, proto.to.v1.ToActionSimple, 1)\n );\n};\n\n/**\n * @param {!Array<!proto.to.v1.ToActionSimple>} value\n * @return {!proto.to.v1.ToActionListReply} returns this\n*/\nproto.to.v1.ToActionListReply.prototype.setListList = function (value) {\n return jspb.Message.setRepeatedWrapperField(this, 1, value);\n};\n\n/**\n * @param {!proto.to.v1.ToActionSimple=} opt_value\n * @param {number=} opt_index\n * @return {!proto.to.v1.ToActionSimple}\n */\nproto.to.v1.ToActionListReply.prototype.addList = function (opt_value, opt_index) {\n return jspb.Message.addToRepeatedWrapperField(this, 1, opt_value, proto.to.v1.ToActionSimple, opt_index);\n};\n\n/**\n * Clears the list making it empty but non-null.\n * @return {!proto.to.v1.ToActionListReply} returns this\n */\nproto.to.v1.ToActionListReply.prototype.clearListList = function () {\n return this.setListList([]);\n};\nif (jspb.Message.GENERATE_TO_OBJECT) {\n /**\n * Creates an object representation of this proto.\n * Field names that are reserved in JavaScript and will be renamed to pb_name.\n * Optional fields that are not set will be set to undefined.\n * To access a reserved field use, foo.pb_<name>, eg, foo.pb_default.\n * For the list of reserved names please see:\n * net/proto2/compiler/js/internal/generator.cc#kKeyword.\n * @param {boolean=} opt_includeInstance Deprecated. whether to include the\n * JSPB instance for transitional soy proto support:\n * http://goto/soy-param-migration\n * @return {!Object}\n */\n proto.to.v1.ToActionSimple.prototype.toObject = function (opt_includeInstance) {\n return proto.to.v1.ToActionSimple.toObject(opt_includeInstance, this);\n };\n\n /**\n * Static version of the {@see toObject} method.\n * @param {boolean|undefined} includeInstance Deprecated. Whether to include\n * the JSPB instance for transitional soy proto support:\n * http://goto/soy-param-migration\n * @param {!proto.to.v1.ToActionSimple} msg The msg instance to transform.\n * @return {!Object}\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\n proto.to.v1.ToActionSimple.toObject = function (includeInstance, msg) {\n var f,\n obj = {\n id: jspb.Message.getFieldWithDefault(msg, 1, 0),\n name: jspb.Message.getFieldWithDefault(msg, 2, \"\")\n };\n if (includeInstance) {\n obj.$jspbMessageInstance = msg;\n }\n return obj;\n };\n}\n\n/**\n * Deserializes binary data (in protobuf wire format).\n * @param {jspb.ByteSource} bytes The bytes to deserialize.\n * @return {!proto.to.v1.ToActionSimple}\n */\nproto.to.v1.ToActionSimple.deserializeBinary = function (bytes) {\n var reader = new jspb.BinaryReader(bytes);\n var msg = new proto.to.v1.ToActionSimple();\n return proto.to.v1.ToActionSimple.deserializeBinaryFromReader(msg, reader);\n};\n\n/**\n * Deserializes binary data (in protobuf wire format) from the\n * given reader into the given message object.\n * @param {!proto.to.v1.ToActionSimple} msg The message object to deserialize into.\n * @param {!jspb.BinaryReader} reader The BinaryReader to use.\n * @return {!proto.to.v1.ToActionSimple}\n */\nproto.to.v1.ToActionSimple.deserializeBinaryFromReader = function (msg, reader) {\n while (reader.nextField()) {\n if (reader.isEndGroup()) {\n break;\n }\n var field = reader.getFieldNumber();\n switch (field) {\n case 1:\n var value = /** @type {number} */reader.readInt32();\n msg.setId(value);\n break;\n case 2:\n var value = /** @type {string} */reader.readString();\n msg.setName(value);\n break;\n default:\n reader.skipField();\n break;\n }\n }\n return msg;\n};\n\n/**\n * Serializes the message to binary data (in protobuf wire format).\n * @return {!Uint8Array}\n */\nproto.to.v1.ToActionSimple.prototype.serializeBinary = function () {\n var writer = new jspb.BinaryWriter();\n proto.to.v1.ToActionSimple.serializeBinaryToWriter(this, writer);\n return writer.getResultBuffer();\n};\n\n/**\n * Serializes the given message to binary data (in protobuf wire\n * format), writing to the given BinaryWriter.\n * @param {!proto.to.v1.ToActionSimple} message\n * @param {!jspb.BinaryWriter} writer\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\nproto.to.v1.ToActionSimple.serializeBinaryToWriter = function (message, writer) {\n var f = undefined;\n f = message.getId();\n if (f !== 0) {\n writer.writeInt32(1, f);\n }\n f = message.getName();\n if (f.length > 0) {\n writer.writeString(2, f);\n }\n};\n\n/**\n * optional int32 id = 1;\n * @return {number}\n */\nproto.to.v1.ToActionSimple.prototype.getId = function () {\n return (/** @type {number} */jspb.Message.getFieldWithDefault(this, 1, 0)\n );\n};\n\n/**\n * @param {number} value\n * @return {!proto.to.v1.ToActionSimple} returns this\n */\nproto.to.v1.ToActionSimple.prototype.setId = function (value) {\n return jspb.Message.setProto3IntField(this, 1, value);\n};\n\n/**\n * optional string name = 2;\n * @return {string}\n */\nproto.to.v1.ToActionSimple.prototype.getName = function () {\n return (/** @type {string} */jspb.Message.getFieldWithDefault(this, 2, \"\")\n );\n};\n\n/**\n * @param {string} value\n * @return {!proto.to.v1.ToActionSimple} returns this\n */\nproto.to.v1.ToActionSimple.prototype.setName = function (value) {\n return jspb.Message.setProto3StringField(this, 2, value);\n};\n\n/**\n * List of repeated fields within this message type.\n * @private {!Array<number>}\n * @const\n */\nproto.to.v1.ToActionDetailReply.repeatedFields_ = [9];\nif (jspb.Message.GENERATE_TO_OBJECT) {\n /**\n * Creates an object representation of this proto.\n * Field names that are reserved in JavaScript and will be renamed to pb_name.\n * Optional fields that are not set will be set to undefined.\n * To access a reserved field use, foo.pb_<name>, eg, foo.pb_default.\n * For the list of reserved names please see:\n * net/proto2/compiler/js/internal/generator.cc#kKeyword.\n * @param {boolean=} opt_includeInstance Deprecated. whether to include the\n * JSPB instance for transitional soy proto support:\n * http://goto/soy-param-migration\n * @return {!Object}\n */\n proto.to.v1.ToActionDetailReply.prototype.toObject = function (opt_includeInstance) {\n return proto.to.v1.ToActionDetailReply.toObject(opt_includeInstance, this);\n };\n\n /**\n * Static version of the {@see toObject} method.\n * @param {boolean|undefined} includeInstance Deprecated. Whether to include\n * the JSPB instance for transitional soy proto support:\n * http://goto/soy-param-migration\n * @param {!proto.to.v1.ToActionDetailReply} msg The msg instance to transform.\n * @return {!Object}\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\n proto.to.v1.ToActionDetailReply.toObject = function (includeInstance, msg) {\n var f,\n obj = {\n id: jspb.Message.getFieldWithDefault(msg, 1, 0),\n name: jspb.Message.getFieldWithDefault(msg, 2, \"\"),\n content: jspb.Message.getFieldWithDefault(msg, 3, \"\"),\n lockup: jspb.Message.getFieldWithDefault(msg, 4, 0),\n forcedendtime: jspb.Message.getFieldWithDefault(msg, 5, 0),\n totalcontrolnum: jspb.Message.getFieldWithDefault(msg, 6, 0),\n maxrange: jspb.Message.getFieldWithDefault(msg, 7, 0),\n mapinfo: (f = msg.getMapinfo()) && proto.to.v1.ToMapInfo.toObject(includeInstance, f),\n routesList: jspb.Message.toObjectList(msg.getRoutesList(), base_pb.CourseInfo.toObject, includeInstance)\n };\n if (includeInstance) {\n obj.$jspbMessageInstance = msg;\n }\n return obj;\n };\n}\n\n/**\n * Deserializes binary data (in protobuf wire format).\n * @param {jspb.ByteSource} bytes The bytes to deserialize.\n * @return {!proto.to.v1.ToActionDetailReply}\n */\nproto.to.v1.ToActionDetailReply.deserializeBinary = function (bytes) {\n var reader = new jspb.BinaryReader(bytes);\n var msg = new proto.to.v1.ToActionDetailReply();\n return proto.to.v1.ToActionDetailReply.deserializeBinaryFromReader(msg, reader);\n};\n\n/**\n * Deserializes binary data (in protobuf wire format) from the\n * given reader into the given message object.\n * @param {!proto.to.v1.ToActionDetailReply} msg The message object to deserialize into.\n * @param {!jspb.BinaryReader} reader The BinaryReader to use.\n * @return {!proto.to.v1.ToActionDetailReply}\n */\nproto.to.v1.ToActionDetailReply.deserializeBinaryFromReader = function (msg, reader) {\n while (reader.nextField()) {\n if (reader.isEndGroup()) {\n break;\n }\n var field = reader.getFieldNumber();\n switch (field) {\n case 1:\n var value = /** @type {number} */reader.readInt32();\n msg.setId(value);\n break;\n case 2:\n var value = /** @type {string} */reader.readString();\n msg.setName(value);\n break;\n case 3:\n var value = /** @type {string} */reader.readString();\n msg.setContent(value);\n break;\n case 4:\n var value = /** @type {number} */reader.readInt32();\n msg.setLockup(value);\n break;\n case 5:\n var value = /** @type {number} */reader.readInt32();\n msg.setForcedendtime(value);\n break;\n case 6:\n var value = /** @type {number} */reader.readInt32();\n msg.setTotalcontrolnum(value);\n break;\n case 7:\n var value = /** @type {number} */reader.readInt32();\n msg.setMaxrange(value);\n break;\n case 8:\n var value = new proto.to.v1.ToMapInfo();\n reader.readMessage(value, proto.to.v1.ToMapInfo.deserializeBinaryFromReader);\n msg.setMapinfo(value);\n break;\n case 9:\n var value = new base_pb.CourseInfo();\n reader.readMessage(value, base_pb.CourseInfo.deserializeBinaryFromReader);\n msg.addRoutes(value);\n break;\n default:\n reader.skipField();\n break;\n }\n }\n return msg;\n};\n\n/**\n * Serializes the message to binary data (in protobuf wire format).\n * @return {!Uint8Array}\n */\nproto.to.v1.ToActionDetailReply.prototype.serializeBinary = function () {\n var writer = new jspb.BinaryWriter();\n proto.to.v1.ToActionDetailReply.serializeBinaryToWriter(this, writer);\n return writer.getResultBuffer();\n};\n\n/**\n * Serializes the given message to binary data (in protobuf wire\n * format), writing to the given BinaryWriter.\n * @param {!proto.to.v1.ToActionDetailReply} message\n * @param {!jspb.BinaryWriter} writer\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\nproto.to.v1.ToActionDetailReply.serializeBinaryToWriter = function (message, writer) {\n var f = undefined;\n f = message.getId();\n if (f !== 0) {\n writer.writeInt32(1, f);\n }\n f = message.getName();\n if (f.length > 0) {\n writer.writeString(2, f);\n }\n f = message.getContent();\n if (f.length > 0) {\n writer.writeString(3, f);\n }\n f = message.getLockup();\n if (f !== 0) {\n writer.writeInt32(4, f);\n }\n f = message.getForcedendtime();\n if (f !== 0) {\n writer.writeInt32(5, f);\n }\n f = message.getTotalcontrolnum();\n if (f !== 0) {\n writer.writeInt32(6, f);\n }\n f = message.getMaxrange();\n if (f !== 0) {\n writer.writeInt32(7, f);\n }\n f = message.getMapinfo();\n if (f != null) {\n writer.writeMessage(8, f, proto.to.v1.ToMapInfo.serializeBinaryToWriter);\n }\n f = message.getRoutesList();\n if (f.length > 0) {\n writer.writeRepeatedMessage(9, f, base_pb.CourseInfo.serializeBinaryToWriter);\n }\n};\n\n/**\n * optional int32 id = 1;\n * @return {number}\n */\nproto.to.v1.ToActionDetailReply.prototype.getId = function () {\n return (/** @type {number} */jspb.Message.getFieldWithDefault(this, 1, 0)\n );\n};\n\n/**\n * @param {number} value\n * @return {!proto.to.v1.ToActionDetailReply} returns this\n */\nproto.to.v1.ToActionDetailReply.prototype.setId = function (value) {\n return jspb.Message.setProto3IntField(this, 1, value);\n};\n\n/**\n * optional string name = 2;\n * @return {string}\n */\nproto.to.v1.ToActionDetailReply.prototype.getName = function () {\n return (/** @type {string} */jspb.Message.getFieldWithDefault(this, 2, \"\")\n );\n};\n\n/**\n * @param {string} value\n * @return {!proto.to.v1.ToActionDetailReply} returns this\n */\nproto.to.v1.ToActionDetailReply.prototype.setName = function (value) {\n return jspb.Message.setProto3StringField(this, 2, value);\n};\n\n/**\n * optional string content = 3;\n * @return {string}\n */\nproto.to.v1.ToActionDetailReply.prototype.getContent = function () {\n return (/** @type {string} */jspb.Message.getFieldWithDefault(this, 3, \"\")\n );\n};\n\n/**\n * @param {string} value\n * @return {!proto.to.v1.ToActionDetailReply} returns this\n */\nproto.to.v1.ToActionDetailReply.prototype.setContent = function (value) {\n return jspb.Message.setProto3StringField(this, 3, value);\n};\n\n/**\n * optional int32 lockup = 4;\n * @return {number}\n */\nproto.to.v1.ToActionDetailReply.prototype.getLockup = function () {\n return (/** @type {number} */jspb.Message.getFieldWithDefault(this, 4, 0)\n );\n};\n\n/**\n * @param {number} value\n * @return {!proto.to.v1.ToActionDetailReply} returns this\n */\nproto.to.v1.ToActionDetailReply.prototype.setLockup = function (value) {\n return jspb.Message.setProto3IntField(this, 4, value);\n};\n\n/**\n * optional int32 forcedEndTime = 5;\n * @return {number}\n */\nproto.to.v1.ToActionDetailReply.prototype.getForcedendtime = function () {\n return (/** @type {number} */jspb.Message.getFieldWithDefault(this, 5, 0)\n );\n};\n\n/**\n * @param {number} value\n * @return {!proto.to.v1.ToActionDetailReply} returns this\n */\nproto.to.v1.ToActionDetailReply.prototype.setForcedendtime = function (value) {\n return jspb.Message.setProto3IntField(this, 5, value);\n};\n\n/**\n * optional int32 totalControlNum = 6;\n * @return {number}\n */\nproto.to.v1.ToActionDetailReply.prototype.getTotalcontrolnum = function () {\n return (/** @type {number} */jspb.Message.getFieldWithDefault(this, 6, 0)\n );\n};\n\n/**\n * @param {number} value\n * @return {!proto.to.v1.ToActionDetailReply} returns this\n */\nproto.to.v1.ToActionDetailReply.prototype.setTotalcontrolnum = function (value) {\n return jspb.Message.setProto3IntField(this, 6, value);\n};\n\n/**\n * optional int32 maxRange = 7;\n * @return {number}\n */\nproto.to.v1.ToActionDetailReply.prototype.getMaxrange = function () {\n return (/** @type {number} */jspb.Message.getFieldWithDefault(this, 7, 0)\n );\n};\n\n/**\n * @param {number} value\n * @return {!proto.to.v1.ToActionDetailReply} returns this\n */\nproto.to.v1.ToActionDetailReply.prototype.setMaxrange = function (value) {\n return jspb.Message.setProto3IntField(this, 7, value);\n};\n\n/**\n * optional ToMapInfo mapInfo = 8;\n * @return {?proto.to.v1.ToMapInfo}\n */\nproto.to.v1.ToActionDetailReply.prototype.getMapinfo = function () {\n return (/** @type{?proto.to.v1.ToMapInfo} */\n jspb.Message.getWrapperField(this, proto.to.v1.ToMapInfo, 8)\n );\n};\n\n/**\n * @param {?proto.to.v1.ToMapInfo|undefined} value\n * @return {!proto.to.v1.ToActionDetailReply} returns this\n*/\nproto.to.v1.ToActionDetailReply.prototype.setMapinfo = function (value) {\n return jspb.Message.setWrapperField(this, 8, value);\n};\n\n/**\n * Clears the message field making it undefined.\n * @return {!proto.to.v1.ToActionDetailReply} returns this\n */\nproto.to.v1.ToActionDetailReply.prototype.clearMapinfo = function () {\n return this.setMapinfo(undefined);\n};\n\n/**\n * Returns whether this field is set.\n * @return {boolean}\n */\nproto.to.v1.ToActionDetailReply.prototype.hasMapinfo = function () {\n return jspb.Message.getField(this, 8) != null;\n};\n\n/**\n * repeated base.v1.CourseInfo routes = 9;\n * @return {!Array<!proto.base.v1.CourseInfo>}\n */\nproto.to.v1.ToActionDetailReply.prototype.getRoutesList = function () {\n return (/** @type{!Array<!proto.base.v1.CourseInfo>} */\n jspb.Message.getRepeatedWrapperField(this, base_pb.CourseInfo, 9)\n );\n};\n\n/**\n * @param {!Array<!proto.base.v1.CourseInfo>} value\n * @return {!proto.to.v1.ToActionDetailReply} returns this\n*/\nproto.to.v1.ToActionDetailReply.prototype.setRoutesList = function (value) {\n return jspb.Message.setRepeatedWrapperField(this, 9, value);\n};\n\n/**\n * @param {!proto.base.v1.CourseInfo=} opt_value\n * @param {number=} opt_index\n * @return {!proto.base.v1.CourseInfo}\n */\nproto.to.v1.ToActionDetailReply.prototype.addRoutes = function (opt_value, opt_index) {\n return jspb.Message.addToRepeatedWrapperField(this, 9, opt_value, proto.base.v1.CourseInfo, opt_index);\n};\n\n/**\n * Clears the list making it empty but non-null.\n * @return {!proto.to.v1.ToActionDetailReply} returns this\n */\nproto.to.v1.ToActionDetailReply.prototype.clearRoutesList = function () {\n return this.setRoutesList([]);\n};\nif (jspb.Message.GENERATE_TO_OBJECT) {\n /**\n * Creates an object representation of this proto.\n * Field names that are reserved in JavaScript and will be renamed to pb_name.\n * Optional fields that are not set will be set to undefined.\n * To access a reserved field use, foo.pb_<name>, eg, foo.pb_default.\n * For the list of reserved names please see:\n * net/proto2/compiler/js/internal/generator.cc#kKeyword.\n * @param {boolean=} opt_includeInstance Deprecated. whether to include the\n * JSPB instance for transitional soy proto support:\n * http://goto/soy-param-migration\n * @return {!Object}\n */\n proto.to.v1.ToMapInfo.prototype.toObject = function (opt_includeInstance) {\n return proto.to.v1.ToMapInfo.toObject(opt_includeInstance, this);\n };\n\n /**\n * Static version of the {@see toObject} method.\n * @param {boolean|undefined} includeInstance Deprecated. Whether to include\n * the JSPB instance for transitional soy proto support:\n * http://goto/soy-param-migration\n * @param {!proto.to.v1.ToMapInfo} msg The msg instance to transform.\n * @return {!Object}\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\n proto.to.v1.ToMapInfo.toObject = function (includeInstance, msg) {\n var f,\n obj = {\n lid: jspb.Message.getFieldWithDefault(msg, 1, 0),\n mapname: jspb.Message.getFieldWithDefault(msg, 2, \"\"),\n zipimage: (f = msg.getZipimage()) && base_pb.NetImage.toObject(includeInstance, f),\n centerlongitude: jspb.Message.getFloatingPointFieldWithDefault(msg, 4, 0.0),\n centerlatitude: jspb.Message.getFloatingPointFieldWithDefault(msg, 5, 0.0),\n defscale: jspb.Message.getFieldWithDefault(msg, 6, 0),\n mapurl: jspb.Message.getFieldWithDefault(msg, 7, \"\"),\n mapmd5: jspb.Message.getFieldWithDefault(msg, 8, \"\")\n };\n if (includeInstance) {\n obj.$jspbMessageInstance = msg;\n }\n return obj;\n };\n}\n\n/**\n * Deserializes binary data (in protobuf wire format).\n * @param {jspb.ByteSource} bytes The bytes to deserialize.\n * @return {!proto.to.v1.ToMapInfo}\n */\nproto.to.v1.ToMapInfo.deserializeBinary = function (bytes) {\n var reader = new jspb.BinaryReader(bytes);\n var msg = new proto.to.v1.ToMapInfo();\n return proto.to.v1.ToMapInfo.deserializeBinaryFromReader(msg, reader);\n};\n\n/**\n * Deserializes binary data (in protobuf wire format) from the\n * given reader into the given message object.\n * @param {!proto.to.v1.ToMapInfo} msg The message object to deserialize into.\n * @param {!jspb.BinaryReader} reader The BinaryReader to use.\n * @return {!proto.to.v1.ToMapInfo}\n */\nproto.to.v1.ToMapInfo.deserializeBinaryFromReader = function (msg, reader) {\n while (reader.nextField()) {\n if (reader.isEndGroup()) {\n break;\n }\n var field = reader.getFieldNumber();\n switch (field) {\n case 1:\n var value = /** @type {number} */reader.readInt32();\n msg.setLid(value);\n break;\n case 2:\n var value = /** @type {string} */reader.readString();\n msg.setMapname(value);\n break;\n case 3:\n var value = new base_pb.NetImage();\n reader.readMessage(value, base_pb.NetImage.deserializeBinaryFromReader);\n msg.setZipimage(value);\n break;\n case 4:\n var value = /** @type {number} */reader.readDouble();\n msg.setCenterlongitude(value);\n break;\n case 5:\n var value = /** @type {number} */reader.readDouble();\n msg.setCenterlatitude(value);\n break;\n case 6:\n var value = /** @type {number} */reader.readInt32();\n msg.setDefscale(value);\n break;\n case 7:\n var value = /** @type {string} */reader.readString();\n msg.setMapurl(value);\n break;\n case 8:\n var value = /** @type {string} */reader.readString();\n msg.setMapmd5(value);\n break;\n default:\n reader.skipField();\n break;\n }\n }\n return msg;\n};\n\n/**\n * Serializes the message to binary data (in protobuf wire format).\n * @return {!Uint8Array}\n */\nproto.to.v1.ToMapInfo.prototype.serializeBinary = function () {\n var writer = new jspb.BinaryWriter();\n proto.to.v1.ToMapInfo.serializeBinaryToWriter(this, writer);\n return writer.getResultBuffer();\n};\n\n/**\n * Serializes the given message to binary data (in protobuf wire\n * format), writing to the given BinaryWriter.\n * @param {!proto.to.v1.ToMapInfo} message\n * @param {!jspb.BinaryWriter} writer\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\nproto.to.v1.ToMapInfo.serializeBinaryToWriter = function (message, writer) {\n var f = undefined;\n f = message.getLid();\n if (f !== 0) {\n writer.writeInt32(1, f);\n }\n f = message.getMapname();\n if (f.length > 0) {\n writer.writeString(2, f);\n }\n f = message.getZipimage();\n if (f != null) {\n writer.writeMessage(3, f, base_pb.NetImage.serializeBinaryToWriter);\n }\n f = message.getCenterlongitude();\n if (f !== 0.0) {\n writer.writeDouble(4, f);\n }\n f = message.getCenterlatitude();\n if (f !== 0.0) {\n writer.writeDouble(5, f);\n }\n f = message.getDefscale();\n if (f !== 0) {\n writer.writeInt32(6, f);\n }\n f = message.getMapurl();\n if (f.length > 0) {\n writer.writeString(7, f);\n }\n f = message.getMapmd5();\n if (f.length > 0) {\n writer.writeString(8, f);\n }\n};\n\n/**\n * optional int32 LId = 1;\n * @return {number}\n */\nproto.to.v1.ToMapInfo.prototype.getLid = function () {\n return (/** @type {number} */jspb.Message.getFieldWithDefault(this, 1, 0)\n );\n};\n\n/**\n * @param {number} value\n * @return {!proto.to.v1.ToMapInfo} returns this\n */\nproto.to.v1.ToMapInfo.prototype.setLid = function (value) {\n return jspb.Message.setProto3IntField(this, 1, value);\n};\n\n/**\n * optional string mapName = 2;\n * @return {string}\n */\nproto.to.v1.ToMapInfo.prototype.getMapname = function () {\n return (/** @type {string} */jspb.Message.getFieldWithDefault(this, 2, \"\")\n );\n};\n\n/**\n * @param {string} value\n * @return {!proto.to.v1.ToMapInfo} returns this\n */\nproto.to.v1.ToMapInfo.prototype.setMapname = function (value) {\n return jspb.Message.setProto3StringField(this, 2, value);\n};\n\n/**\n * optional base.v1.NetImage zipImage = 3;\n * @return {?proto.base.v1.NetImage}\n */\nproto.to.v1.ToMapInfo.prototype.getZipimage = function () {\n return (/** @type{?proto.base.v1.NetImage} */\n jspb.Message.getWrapperField(this, base_pb.NetImage, 3)\n );\n};\n\n/**\n * @param {?proto.base.v1.NetImage|undefined} value\n * @return {!proto.to.v1.ToMapInfo} returns this\n*/\nproto.to.v1.ToMapInfo.prototype.setZipimage = function (value) {\n return jspb.Message.setWrapperField(this, 3, value);\n};\n\n/**\n * Clears the message field making it undefined.\n * @return {!proto.to.v1.ToMapInfo} returns this\n */\nproto.to.v1.ToMapInfo.prototype.clearZipimage = function () {\n return this.setZipimage(undefined);\n};\n\n/**\n * Returns whether this field is set.\n * @return {boolean}\n */\nproto.to.v1.ToMapInfo.prototype.hasZipimage = function () {\n return jspb.Message.getField(this, 3) != null;\n};\n\n/**\n * optional double CenterLongitude = 4;\n * @return {number}\n */\nproto.to.v1.ToMapInfo.prototype.getCenterlongitude = function () {\n return (/** @type {number} */jspb.Message.getFloatingPointFieldWithDefault(this, 4, 0.0)\n );\n};\n\n/**\n * @param {number} value\n * @return {!proto.to.v1.ToMapInfo} returns this\n */\nproto.to.v1.ToMapInfo.prototype.setCenterlongitude = function (value) {\n return jspb.Message.setProto3FloatField(this, 4, value);\n};\n\n/**\n * optional double CenterLatitude = 5;\n * @return {number}\n */\nproto.to.v1.ToMapInfo.prototype.getCenterlatitude = function () {\n return (/** @type {number} */jspb.Message.getFloatingPointFieldWithDefault(this, 5, 0.0)\n );\n};\n\n/**\n * @param {number} value\n * @return {!proto.to.v1.ToMapInfo} returns this\n */\nproto.to.v1.ToMapInfo.prototype.setCenterlatitude = function (value) {\n return jspb.Message.setProto3FloatField(this, 5, value);\n};\n\n/**\n * optional int32 DefScale = 6;\n * @return {number}\n */\nproto.to.v1.ToMapInfo.prototype.getDefscale = function () {\n return (/** @type {number} */jspb.Message.getFieldWithDefault(this, 6, 0)\n );\n};\n\n/**\n * @param {number} value\n * @return {!proto.to.v1.ToMapInfo} returns this\n */\nproto.to.v1.ToMapInfo.prototype.setDefscale = function (value) {\n return jspb.Message.setProto3IntField(this, 6, value);\n};\n\n/**\n * optional string mapUrl = 7;\n * @return {string}\n */\nproto.to.v1.ToMapInfo.prototype.getMapurl = function () {\n return (/** @type {string} */jspb.Message.getFieldWithDefault(this, 7, \"\")\n );\n};\n\n/**\n * @param {string} value\n * @return {!proto.to.v1.ToMapInfo} returns this\n */\nproto.to.v1.ToMapInfo.prototype.setMapurl = function (value) {\n return jspb.Message.setProto3StringField(this, 7, value);\n};\n\n/**\n * optional string mapMd5 = 8;\n * @return {string}\n */\nproto.to.v1.ToMapInfo.prototype.getMapmd5 = function () {\n return (/** @type {string} */jspb.Message.getFieldWithDefault(this, 8, \"\")\n );\n};\n\n/**\n * @param {string} value\n * @return {!proto.to.v1.ToMapInfo} returns this\n */\nproto.to.v1.ToMapInfo.prototype.setMapmd5 = function (value) {\n return jspb.Message.setProto3StringField(this, 8, value);\n};\n\n/**\n * List of repeated fields within this message type.\n * @private {!Array<number>}\n * @const\n */\nproto.to.v1.ToActionUsersDetailReply.repeatedFields_ = [1];\nif (jspb.Message.GENERATE_TO_OBJECT) {\n /**\n * Creates an object representation of this proto.\n * Field names that are reserved in JavaScript and will be renamed to pb_name.\n * Optional fields that are not set will be set to undefined.\n * To access a reserved field use, foo.pb_<name>, eg, foo.pb_default.\n * For the list of reserved names please see:\n * net/proto2/compiler/js/internal/generator.cc#kKeyword.\n * @param {boolean=} opt_includeInstance Deprecated. whether to include the\n * JSPB instance for transitional soy proto support:\n * http://goto/soy-param-migration\n * @return {!Object}\n */\n proto.to.v1.ToActionUsersDetailReply.prototype.toObject = function (opt_includeInstance) {\n return proto.to.v1.ToActionUsersDetailReply.toObject(opt_includeInstance, this);\n };\n\n /**\n * Static version of the {@see toObject} method.\n * @param {boolean|undefined} includeInstance Deprecated. Whether to include\n * the JSPB instance for transitional soy proto support:\n * http://goto/soy-param-migration\n * @param {!proto.to.v1.ToActionUsersDetailReply} msg The msg instance to transform.\n * @return {!Object}\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\n proto.to.v1.ToActionUsersDetailReply.toObject = function (includeInstance, msg) {\n var f,\n obj = {\n usersList: jspb.Message.toObjectList(msg.getUsersList(), proto.to.v1.UserInGameInfo.toObject, includeInstance)\n };\n if (includeInstance) {\n obj.$jspbMessageInstance = msg;\n }\n return obj;\n };\n}\n\n/**\n * Deserializes binary data (in protobuf wire format).\n * @param {jspb.ByteSource} bytes The bytes to deserialize.\n * @return {!proto.to.v1.ToActionUsersDetailReply}\n */\nproto.to.v1.ToActionUsersDetailReply.deserializeBinary = function (bytes) {\n var reader = new jspb.BinaryReader(bytes);\n var msg = new proto.to.v1.ToActionUsersDetailReply();\n return proto.to.v1.ToActionUsersDetailReply.deserializeBinaryFromReader(msg, reader);\n};\n\n/**\n * Deserializes binary data (in protobuf wire format) from the\n * given reader into the given message object.\n * @param {!proto.to.v1.ToActionUsersDetailReply} msg The message object to deserialize into.\n * @param {!jspb.BinaryReader} reader The BinaryReader to use.\n * @return {!proto.to.v1.ToActionUsersDetailReply}\n */\nproto.to.v1.ToActionUsersDetailReply.deserializeBinaryFromReader = function (msg, reader) {\n while (reader.nextField()) {\n if (reader.isEndGroup()) {\n break;\n }\n var field = reader.getFieldNumber();\n switch (field) {\n case 1:\n var value = new proto.to.v1.UserInGameInfo();\n reader.readMessage(value, proto.to.v1.UserInGameInfo.deserializeBinaryFromReader);\n msg.addUsers(value);\n break;\n default:\n reader.skipField();\n break;\n }\n }\n return msg;\n};\n\n/**\n * Serializes the message to binary data (in protobuf wire format).\n * @return {!Uint8Array}\n */\nproto.to.v1.ToActionUsersDetailReply.prototype.serializeBinary = function () {\n var writer = new jspb.BinaryWriter();\n proto.to.v1.ToActionUsersDetailReply.serializeBinaryToWriter(this, writer);\n return writer.getResultBuffer();\n};\n\n/**\n * Serializes the given message to binary data (in protobuf wire\n * format), writing to the given BinaryWriter.\n * @param {!proto.to.v1.ToActionUsersDetailReply} message\n * @param {!jspb.BinaryWriter} writer\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\nproto.to.v1.ToActionUsersDetailReply.serializeBinaryToWriter = function (message, writer) {\n var f = undefined;\n f = message.getUsersList();\n if (f.length > 0) {\n writer.writeRepeatedMessage(1, f, proto.to.v1.UserInGameInfo.serializeBinaryToWriter);\n }\n};\n\n/**\n * repeated UserInGameInfo users = 1;\n * @return {!Array<!proto.to.v1.UserInGameInfo>}\n */\nproto.to.v1.ToActionUsersDetailReply.prototype.getUsersList = function () {\n return (/** @type{!Array<!proto.to.v1.UserInGameInfo>} */\n jspb.Message.getRepeatedWrapperField(this, proto.to.v1.UserInGameInfo, 1)\n );\n};\n\n/**\n * @param {!Array<!proto.to.v1.UserInGameInfo>} value\n * @return {!proto.to.v1.ToActionUsersDetailReply} returns this\n*/\nproto.to.v1.ToActionUsersDetailReply.prototype.setUsersList = function (value) {\n return jspb.Message.setRepeatedWrapperField(this, 1, value);\n};\n\n/**\n * @param {!proto.to.v1.UserInGameInfo=} opt_value\n * @param {number=} opt_index\n * @return {!proto.to.v1.UserInGameInfo}\n */\nproto.to.v1.ToActionUsersDetailReply.prototype.addUsers = function (opt_value, opt_index) {\n return jspb.Message.addToRepeatedWrapperField(this, 1, opt_value, proto.to.v1.UserInGameInfo, opt_index);\n};\n\n/**\n * Clears the list making it empty but non-null.\n * @return {!proto.to.v1.ToActionUsersDetailReply} returns this\n */\nproto.to.v1.ToActionUsersDetailReply.prototype.clearUsersList = function () {\n return this.setUsersList([]);\n};\nif (jspb.Message.GENERATE_TO_OBJECT) {\n /**\n * Creates an object representation of this proto.\n * Field names that are reserved in JavaScript and will be renamed to pb_name.\n * Optional fields that are not set will be set to undefined.\n * To access a reserved field use, foo.pb_<name>, eg, foo.pb_default.\n * For the list of reserved names please see:\n * net/proto2/compiler/js/internal/generator.cc#kKeyword.\n * @param {boolean=} opt_includeInstance Deprecated. whether to include the\n * JSPB instance for transitional soy proto support:\n * http://goto/soy-param-migration\n * @return {!Object}\n */\n proto.to.v1.UserInGameInfo.prototype.toObject = function (opt_includeInstance) {\n return proto.to.v1.UserInGameInfo.toObject(opt_includeInstance, this);\n };\n\n /**\n * Static version of the {@see toObject} method.\n * @param {boolean|undefined} includeInstance Deprecated. Whether to include\n * the JSPB instance for transitional soy proto support:\n * http://goto/soy-param-migration\n * @param {!proto.to.v1.UserInGameInfo} msg The msg instance to transform.\n * @return {!Object}\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\n proto.to.v1.UserInGameInfo.toObject = function (includeInstance, msg) {\n var f,\n obj = {\n id: jspb.Message.getFieldWithDefault(msg, 1, 0),\n name: jspb.Message.getFieldWithDefault(msg, 2, \"\"),\n distance: jspb.Message.getFieldWithDefault(msg, 3, 0),\n pace: jspb.Message.getFieldWithDefault(msg, 4, 0),\n avghr: jspb.Message.getFieldWithDefault(msg, 5, 0),\n maxhr: jspb.Message.getFieldWithDefault(msg, 6, 0),\n calorie: jspb.Message.getFieldWithDefault(msg, 7, 0),\n ck: jspb.Message.getFieldWithDefault(msg, 8, 0),\n ei: jspb.Message.getFloatingPointFieldWithDefault(msg, 9, 0.0),\n effectivenum: jspb.Message.getFieldWithDefault(msg, 10, 0),\n totalcontrolnum: jspb.Message.getFieldWithDefault(msg, 11, 0),\n startsecondstamp: jspb.Message.getFieldWithDefault(msg, 12, 0),\n endsecondstamp: jspb.Message.getFieldWithDefault(msg, 13, 0),\n mstate: jspb.Message.getFieldWithDefault(msg, 14, 0)\n };\n if (includeInstance) {\n obj.$jspbMessageInstance = msg;\n }\n return obj;\n };\n}\n\n/**\n * Deserializes binary data (in protobuf wire format).\n * @param {jspb.ByteSource} bytes The bytes to deserialize.\n * @return {!proto.to.v1.UserInGameInfo}\n */\nproto.to.v1.UserInGameInfo.deserializeBinary = function (bytes) {\n var reader = new jspb.BinaryReader(bytes);\n var msg = new proto.to.v1.UserInGameInfo();\n return proto.to.v1.UserInGameInfo.deserializeBinaryFromReader(msg, reader);\n};\n\n/**\n * Deserializes binary data (in protobuf wire format) from the\n * given reader into the given message object.\n * @param {!proto.to.v1.UserInGameInfo} msg The message object to deserialize into.\n * @param {!jspb.BinaryReader} reader The BinaryReader to use.\n * @return {!proto.to.v1.UserInGameInfo}\n */\nproto.to.v1.UserInGameInfo.deserializeBinaryFromReader = function (msg, reader) {\n while (reader.nextField()) {\n if (reader.isEndGroup()) {\n break;\n }\n var field = reader.getFieldNumber();\n switch (field) {\n case 1:\n var value = /** @type {number} */reader.readInt32();\n msg.setId(value);\n break;\n case 2:\n var value = /** @type {string} */reader.readString();\n msg.setName(value);\n break;\n case 3:\n var value = /** @type {number} */reader.readInt32();\n msg.setDistance(value);\n break;\n case 4:\n var value = /** @type {number} */reader.readInt32();\n msg.setPace(value);\n break;\n case 5:\n var value = /** @type {number} */reader.readInt32();\n msg.setAvghr(value);\n break;\n case 6:\n var value = /** @type {number} */reader.readInt32();\n msg.setMaxhr(value);\n break;\n case 7:\n var value = /** @type {number} */reader.readInt32();\n msg.setCalorie(value);\n break;\n case 8:\n var value = /** @type {number} */reader.readInt32();\n msg.setCk(value);\n break;\n case 9:\n var value = /** @type {number} */reader.readFloat();\n msg.setEi(value);\n break;\n case 10:\n var value = /** @type {number} */reader.readInt32();\n msg.setEffectivenum(value);\n break;\n case 11:\n var value = /** @type {number} */reader.readInt32();\n msg.setTotalcontrolnum(value);\n break;\n case 12:\n var value = /** @type {number} */reader.readInt64();\n msg.setStartsecondstamp(value);\n break;\n case 13:\n var value = /** @type {number} */reader.readInt64();\n msg.setEndsecondstamp(value);\n break;\n case 14:\n var value = /** @type {number} */reader.readInt32();\n msg.setMstate(value);\n break;\n default:\n reader.skipField();\n break;\n }\n }\n return msg;\n};\n\n/**\n * Serializes the message to binary data (in protobuf wire format).\n * @return {!Uint8Array}\n */\nproto.to.v1.UserInGameInfo.prototype.serializeBinary = function () {\n var writer = new jspb.BinaryWriter();\n proto.to.v1.UserInGameInfo.serializeBinaryToWriter(this, writer);\n return writer.getResultBuffer();\n};\n\n/**\n * Serializes the given message to binary data (in protobuf wire\n * format), writing to the given BinaryWriter.\n * @param {!proto.to.v1.UserInGameInfo} message\n * @param {!jspb.BinaryWriter} writer\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\nproto.to.v1.UserInGameInfo.serializeBinaryToWriter = function (message, writer) {\n var f = undefined;\n f = message.getId();\n if (f !== 0) {\n writer.writeInt32(1, f);\n }\n f = message.getName();\n if (f.length > 0) {\n writer.writeString(2, f);\n }\n f = message.getDistance();\n if (f !== 0) {\n writer.writeInt32(3, f);\n }\n f = message.getPace();\n if (f !== 0) {\n writer.writeInt32(4, f);\n }\n f = message.getAvghr();\n if (f !== 0) {\n writer.writeInt32(5, f);\n }\n f = message.getMaxhr();\n if (f !== 0) {\n writer.writeInt32(6, f);\n }\n f = message.getCalorie();\n if (f !== 0) {\n writer.writeInt32(7, f);\n }\n f = message.getCk();\n if (f !== 0) {\n writer.writeInt32(8, f);\n }\n f = message.getEi();\n if (f !== 0.0) {\n writer.writeFloat(9, f);\n }\n f = message.getEffectivenum();\n if (f !== 0) {\n writer.writeInt32(10, f);\n }\n f = message.getTotalcontrolnum();\n if (f !== 0) {\n writer.writeInt32(11, f);\n }\n f = message.getStartsecondstamp();\n if (f !== 0) {\n writer.writeInt64(12, f);\n }\n f = message.getEndsecondstamp();\n if (f !== 0) {\n writer.writeInt64(13, f);\n }\n f = message.getMstate();\n if (f !== 0) {\n writer.writeInt32(14, f);\n }\n};\n\n/**\n * optional int32 id = 1;\n * @return {number}\n */\nproto.to.v1.UserInGameInfo.prototype.getId = function () {\n return (/** @type {number} */jspb.Message.getFieldWithDefault(this, 1, 0)\n );\n};\n\n/**\n * @param {number} value\n * @return {!proto.to.v1.UserInGameInfo} returns this\n */\nproto.to.v1.UserInGameInfo.prototype.setId = function (value) {\n return jspb.Message.setProto3IntField(this, 1, value);\n};\n\n/**\n * optional string name = 2;\n * @return {string}\n */\nproto.to.v1.UserInGameInfo.prototype.getName = function () {\n return (/** @type {string} */jspb.Message.getFieldWithDefault(this, 2, \"\")\n );\n};\n\n/**\n * @param {string} value\n * @return {!proto.to.v1.UserInGameInfo} returns this\n */\nproto.to.v1.UserInGameInfo.prototype.setName = function (value) {\n return jspb.Message.setProto3StringField(this, 2, value);\n};\n\n/**\n * optional int32 distance = 3;\n * @return {number}\n */\nproto.to.v1.UserInGameInfo.prototype.getDistance = function () {\n return (/** @type {number} */jspb.Message.getFieldWithDefault(this, 3, 0)\n );\n};\n\n/**\n * @param {number} value\n * @return {!proto.to.v1.UserInGameInfo} returns this\n */\nproto.to.v1.UserInGameInfo.prototype.setDistance = function (value) {\n return jspb.Message.setProto3IntField(this, 3, value);\n};\n\n/**\n * optional int32 pace = 4;\n * @return {number}\n */\nproto.to.v1.UserInGameInfo.prototype.getPace = function () {\n return (/** @type {number} */jspb.Message.getFieldWithDefault(this, 4, 0)\n );\n};\n\n/**\n * @param {number} value\n * @return {!proto.to.v1.UserInGameInfo} returns this\n */\nproto.to.v1.UserInGameInfo.prototype.setPace = function (value) {\n return jspb.Message.setProto3IntField(this, 4, value);\n};\n\n/**\n * optional int32 avgHr = 5;\n * @return {number}\n */\nproto.to.v1.UserInGameInfo.prototype.getAvghr = function () {\n return (/** @type {number} */jspb.Message.getFieldWithDefault(this, 5, 0)\n );\n};\n\n/**\n * @param {number} value\n * @return {!proto.to.v1.UserInGameInfo} returns this\n */\nproto.to.v1.UserInGameInfo.prototype.setAvghr = function (value) {\n return jspb.Message.setProto3IntField(this, 5, value);\n};\n\n/**\n * optional int32 maxHr = 6;\n * @return {number}\n */\nproto.to.v1.UserInGameInfo.prototype.getMaxhr = function () {\n return (/** @type {number} */jspb.Message.getFieldWithDefault(this, 6, 0)\n );\n};\n\n/**\n * @param {number} value\n * @return {!proto.to.v1.UserInGameInfo} returns this\n */\nproto.to.v1.UserInGameInfo.prototype.setMaxhr = function (value) {\n return jspb.Message.setProto3IntField(this, 6, value);\n};\n\n/**\n * optional int32 Calorie = 7;\n * @return {number}\n */\nproto.to.v1.UserInGameInfo.prototype.getCalorie = function () {\n return (/** @type {number} */jspb.Message.getFieldWithDefault(this, 7, 0)\n );\n};\n\n/**\n * @param {number} value\n * @return {!proto.to.v1.UserInGameInfo} returns this\n */\nproto.to.v1.UserInGameInfo.prototype.setCalorie = function (value) {\n return jspb.Message.setProto3IntField(this, 7, value);\n};\n\n/**\n * optional int32 Ck = 8;\n * @return {number}\n */\nproto.to.v1.UserInGameInfo.prototype.getCk = function () {\n return (/** @type {number} */jspb.Message.getFieldWithDefault(this, 8, 0)\n );\n};\n\n/**\n * @param {number} value\n * @return {!proto.to.v1.UserInGameInfo} returns this\n */\nproto.to.v1.UserInGameInfo.prototype.setCk = function (value) {\n return jspb.Message.setProto3IntField(this, 8, value);\n};\n\n/**\n * optional float Ei = 9;\n * @return {number}\n */\nproto.to.v1.UserInGameInfo.prototype.getEi = function () {\n return (/** @type {number} */jspb.Message.getFloatingPointFieldWithDefault(this, 9, 0.0)\n );\n};\n\n/**\n * @param {number} value\n * @return {!proto.to.v1.UserInGameInfo} returns this\n */\nproto.to.v1.UserInGameInfo.prototype.setEi = function (value) {\n return jspb.Message.setProto3FloatField(this, 9, value);\n};\n\n/**\n * optional int32 EffectiveNum = 10;\n * @return {number}\n */\nproto.to.v1.UserInGameInfo.prototype.getEffectivenum = function () {\n return (/** @type {number} */jspb.Message.getFieldWithDefault(this, 10, 0)\n );\n};\n\n/**\n * @param {number} value\n * @return {!proto.to.v1.UserInGameInfo} returns this\n */\nproto.to.v1.UserInGameInfo.prototype.setEffectivenum = function (value) {\n return jspb.Message.setProto3IntField(this, 10, value);\n};\n\n/**\n * optional int32 TotalControlNum = 11;\n * @return {number}\n */\nproto.to.v1.UserInGameInfo.prototype.getTotalcontrolnum = function () {\n return (/** @type {number} */jspb.Message.getFieldWithDefault(this, 11, 0)\n );\n};\n\n/**\n * @param {number} value\n * @return {!proto.to.v1.UserInGameInfo} returns this\n */\nproto.to.v1.UserInGameInfo.prototype.setTotalcontrolnum = function (value) {\n return jspb.Message.setProto3IntField(this, 11, value);\n};\n\n/**\n * optional int64 startSecondStamp = 12;\n * @return {number}\n */\nproto.to.v1.UserInGameInfo.prototype.getStartsecondstamp = function () {\n return (/** @type {number} */jspb.Message.getFieldWithDefault(this, 12, 0)\n );\n};\n\n/**\n * @param {number} value\n * @return {!proto.to.v1.UserInGameInfo} returns this\n */\nproto.to.v1.UserInGameInfo.prototype.setStartsecondstamp = function (value) {\n return jspb.Message.setProto3IntField(this, 12, value);\n};\n\n/**\n * optional int64 endSecondStamp = 13;\n * @return {number}\n */\nproto.to.v1.UserInGameInfo.prototype.getEndsecondstamp = function () {\n return (/** @type {number} */jspb.Message.getFieldWithDefault(this, 13, 0)\n );\n};\n\n/**\n * @param {number} value\n * @return {!proto.to.v1.UserInGameInfo} returns this\n */\nproto.to.v1.UserInGameInfo.prototype.setEndsecondstamp = function (value) {\n return jspb.Message.setProto3IntField(this, 13, value);\n};\n\n/**\n * optional int32 mState = 14;\n * @return {number}\n */\nproto.to.v1.UserInGameInfo.prototype.getMstate = function () {\n return (/** @type {number} */jspb.Message.getFieldWithDefault(this, 14, 0)\n );\n};\n\n/**\n * @param {number} value\n * @return {!proto.to.v1.UserInGameInfo} returns this\n */\nproto.to.v1.UserInGameInfo.prototype.setMstate = function (value) {\n return jspb.Message.setProto3IntField(this, 14, value);\n};\n\n/**\n * List of repeated fields within this message type.\n * @private {!Array<number>}\n * @const\n */\nproto.to.v1.ToAnyUserHistoryGpsQueryRequest.repeatedFields_ = [2];\nif (jspb.Message.GENERATE_TO_OBJECT) {\n /**\n * Creates an object representation of this proto.\n * Field names that are reserved in JavaScript and will be renamed to pb_name.\n * Optional fields that are not set will be set to undefined.\n * To access a reserved field use, foo.pb_<name>, eg, foo.pb_default.\n * For the list of reserved names please see:\n * net/proto2/compiler/js/internal/generator.cc#kKeyword.\n * @param {boolean=} opt_includeInstance Deprecated. whether to include the\n * JSPB instance for transitional soy proto support:\n * http://goto/soy-param-migration\n * @return {!Object}\n */\n proto.to.v1.ToAnyUserHistoryGpsQueryRequest.prototype.toObject = function (opt_includeInstance) {\n return proto.to.v1.ToAnyUserHistoryGpsQueryRequest.toObject(opt_includeInstance, this);\n };\n\n /**\n * Static version of the {@see toObject} method.\n * @param {boolean|undefined} includeInstance Deprecated. Whether to include\n * the JSPB instance for transitional soy proto support:\n * http://goto/soy-param-migration\n * @param {!proto.to.v1.ToAnyUserHistoryGpsQueryRequest} msg The msg instance to transform.\n * @return {!Object}\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\n proto.to.v1.ToAnyUserHistoryGpsQueryRequest.toObject = function (includeInstance, msg) {\n var f,\n obj = {\n id: jspb.Message.getFieldWithDefault(msg, 1, 0),\n useridarrList: (f = jspb.Message.getRepeatedField(msg, 2)) == null ? undefined : f,\n startsecondstamp: jspb.Message.getFieldWithDefault(msg, 3, 0),\n endsecondstamp: jspb.Message.getFieldWithDefault(msg, 4, 0)\n };\n if (includeInstance) {\n obj.$jspbMessageInstance = msg;\n }\n return obj;\n };\n}\n\n/**\n * Deserializes binary data (in protobuf wire format).\n * @param {jspb.ByteSource} bytes The bytes to deserialize.\n * @return {!proto.to.v1.ToAnyUserHistoryGpsQueryRequest}\n */\nproto.to.v1.ToAnyUserHistoryGpsQueryRequest.deserializeBinary = function (bytes) {\n var reader = new jspb.BinaryReader(bytes);\n var msg = new proto.to.v1.ToAnyUserHistoryGpsQueryRequest();\n return proto.to.v1.ToAnyUserHistoryGpsQueryRequest.deserializeBinaryFromReader(msg, reader);\n};\n\n/**\n * Deserializes binary data (in protobuf wire format) from the\n * given reader into the given message object.\n * @param {!proto.to.v1.ToAnyUserHistoryGpsQueryRequest} msg The message object to deserialize into.\n * @param {!jspb.BinaryReader} reader The BinaryReader to use.\n * @return {!proto.to.v1.ToAnyUserHistoryGpsQueryRequest}\n */\nproto.to.v1.ToAnyUserHistoryGpsQueryRequest.deserializeBinaryFromReader = function (msg, reader) {\n while (reader.nextField()) {\n if (reader.isEndGroup()) {\n break;\n }\n var field = reader.getFieldNumber();\n switch (field) {\n case 1:\n var value = /** @type {number} */reader.readInt32();\n msg.setId(value);\n break;\n case 2:\n var values = /** @type {!Array<number>} */reader.isDelimited() ? reader.readPackedInt32() : [reader.readInt32()];\n for (var i = 0; i < values.length; i++) {\n msg.addUseridarr(values[i]);\n }\n break;\n case 3:\n var value = /** @type {number} */reader.readInt64();\n msg.setStartsecondstamp(value);\n break;\n case 4:\n var value = /** @type {number} */reader.readInt64();\n msg.setEndsecondstamp(value);\n break;\n default:\n reader.skipField();\n break;\n }\n }\n return msg;\n};\n\n/**\n * Serializes the message to binary data (in protobuf wire format).\n * @return {!Uint8Array}\n */\nproto.to.v1.ToAnyUserHistoryGpsQueryRequest.prototype.serializeBinary = function () {\n var writer = new jspb.BinaryWriter();\n proto.to.v1.ToAnyUserHistoryGpsQueryRequest.serializeBinaryToWriter(this, writer);\n return writer.getResultBuffer();\n};\n\n/**\n * Serializes the given message to binary data (in protobuf wire\n * format), writing to the given BinaryWriter.\n * @param {!proto.to.v1.ToAnyUserHistoryGpsQueryRequest} message\n * @param {!jspb.BinaryWriter} writer\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\nproto.to.v1.ToAnyUserHistoryGpsQueryRequest.serializeBinaryToWriter = function (message, writer) {\n var f = undefined;\n f = message.getId();\n if (f !== 0) {\n writer.writeInt32(1, f);\n }\n f = message.getUseridarrList();\n if (f.length > 0) {\n writer.writePackedInt32(2, f);\n }\n f = message.getStartsecondstamp();\n if (f !== 0) {\n writer.writeInt64(3, f);\n }\n f = message.getEndsecondstamp();\n if (f !== 0) {\n writer.writeInt64(4, f);\n }\n};\n\n/**\n * optional int32 id = 1;\n * @return {number}\n */\nproto.to.v1.ToAnyUserHistoryGpsQueryRequest.prototype.getId = function () {\n return (/** @type {number} */jspb.Message.getFieldWithDefault(this, 1, 0)\n );\n};\n\n/**\n * @param {number} value\n * @return {!proto.to.v1.ToAnyUserHistoryGpsQueryRequest} returns this\n */\nproto.to.v1.ToAnyUserHistoryGpsQueryRequest.prototype.setId = function (value) {\n return jspb.Message.setProto3IntField(this, 1, value);\n};\n\n/**\n * repeated int32 userIdArr = 2;\n * @return {!Array<number>}\n */\nproto.to.v1.ToAnyUserHistoryGpsQueryRequest.prototype.getUseridarrList = function () {\n return (/** @type {!Array<number>} */jspb.Message.getRepeatedField(this, 2)\n );\n};\n\n/**\n * @param {!Array<number>} value\n * @return {!proto.to.v1.ToAnyUserHistoryGpsQueryRequest} returns this\n */\nproto.to.v1.ToAnyUserHistoryGpsQueryRequest.prototype.setUseridarrList = function (value) {\n return jspb.Message.setField(this, 2, value || []);\n};\n\n/**\n * @param {number} value\n * @param {number=} opt_index\n * @return {!proto.to.v1.ToAnyUserHistoryGpsQueryRequest} returns this\n */\nproto.to.v1.ToAnyUserHistoryGpsQueryRequest.prototype.addUseridarr = function (value, opt_index) {\n return jspb.Message.addToRepeatedField(this, 2, value, opt_index);\n};\n\n/**\n * Clears the list making it empty but non-null.\n * @return {!proto.to.v1.ToAnyUserHistoryGpsQueryRequest} returns this\n */\nproto.to.v1.ToAnyUserHistoryGpsQueryRequest.prototype.clearUseridarrList = function () {\n return this.setUseridarrList([]);\n};\n\n/**\n * optional int64 startSecondStamp = 3;\n * @return {number}\n */\nproto.to.v1.ToAnyUserHistoryGpsQueryRequest.prototype.getStartsecondstamp = function () {\n return (/** @type {number} */jspb.Message.getFieldWithDefault(this, 3, 0)\n );\n};\n\n/**\n * @param {number} value\n * @return {!proto.to.v1.ToAnyUserHistoryGpsQueryRequest} returns this\n */\nproto.to.v1.ToAnyUserHistoryGpsQueryRequest.prototype.setStartsecondstamp = function (value) {\n return jspb.Message.setProto3IntField(this, 3, value);\n};\n\n/**\n * optional int64 endSecondStamp = 4;\n * @return {number}\n */\nproto.to.v1.ToAnyUserHistoryGpsQueryRequest.prototype.getEndsecondstamp = function () {\n return (/** @type {number} */jspb.Message.getFieldWithDefault(this, 4, 0)\n );\n};\n\n/**\n * @param {number} value\n * @return {!proto.to.v1.ToAnyUserHistoryGpsQueryRequest} returns this\n */\nproto.to.v1.ToAnyUserHistoryGpsQueryRequest.prototype.setEndsecondstamp = function (value) {\n return jspb.Message.setProto3IntField(this, 4, value);\n};\nif (jspb.Message.GENERATE_TO_OBJECT) {\n /**\n * Creates an object representation of this proto.\n * Field names that are reserved in JavaScript and will be renamed to pb_name.\n * Optional fields that are not set will be set to undefined.\n * To access a reserved field use, foo.pb_<name>, eg, foo.pb_default.\n * For the list of reserved names please see:\n * net/proto2/compiler/js/internal/generator.cc#kKeyword.\n * @param {boolean=} opt_includeInstance Deprecated. whether to include the\n * JSPB instance for transitional soy proto support:\n * http://goto/soy-param-migration\n * @return {!Object}\n */\n proto.to.v1.ToUsersInGameHistoryGpsQueryRequest.prototype.toObject = function (opt_includeInstance) {\n return proto.to.v1.ToUsersInGameHistoryGpsQueryRequest.toObject(opt_includeInstance, this);\n };\n\n /**\n * Static version of the {@see toObject} method.\n * @param {boolean|undefined} includeInstance Deprecated. Whether to include\n * the JSPB instance for transitional soy proto support:\n * http://goto/soy-param-migration\n * @param {!proto.to.v1.ToUsersInGameHistoryGpsQueryRequest} msg The msg instance to transform.\n * @return {!Object}\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\n proto.to.v1.ToUsersInGameHistoryGpsQueryRequest.toObject = function (includeInstance, msg) {\n var f,\n obj = {\n id: jspb.Message.getFieldWithDefault(msg, 1, 0),\n startsecondstamp: jspb.Message.getFieldWithDefault(msg, 2, 0),\n endsecondstamp: jspb.Message.getFieldWithDefault(msg, 3, 0)\n };\n if (includeInstance) {\n obj.$jspbMessageInstance = msg;\n }\n return obj;\n };\n}\n\n/**\n * Deserializes binary data (in protobuf wire format).\n * @param {jspb.ByteSource} bytes The bytes to deserialize.\n * @return {!proto.to.v1.ToUsersInGameHistoryGpsQueryRequest}\n */\nproto.to.v1.ToUsersInGameHistoryGpsQueryRequest.deserializeBinary = function (bytes) {\n var reader = new jspb.BinaryReader(bytes);\n var msg = new proto.to.v1.ToUsersInGameHistoryGpsQueryRequest();\n return proto.to.v1.ToUsersInGameHistoryGpsQueryRequest.deserializeBinaryFromReader(msg, reader);\n};\n\n/**\n * Deserializes binary data (in protobuf wire format) from the\n * given reader into the given message object.\n * @param {!proto.to.v1.ToUsersInGameHistoryGpsQueryRequest} msg The message object to deserialize into.\n * @param {!jspb.BinaryReader} reader The BinaryReader to use.\n * @return {!proto.to.v1.ToUsersInGameHistoryGpsQueryRequest}\n */\nproto.to.v1.ToUsersInGameHistoryGpsQueryRequest.deserializeBinaryFromReader = function (msg, reader) {\n while (reader.nextField()) {\n if (reader.isEndGroup()) {\n break;\n }\n var field = reader.getFieldNumber();\n switch (field) {\n case 1:\n var value = /** @type {number} */reader.readInt32();\n msg.setId(value);\n break;\n case 2:\n var value = /** @type {number} */reader.readInt64();\n msg.setStartsecondstamp(value);\n break;\n case 3:\n var value = /** @type {number} */reader.readInt64();\n msg.setEndsecondstamp(value);\n break;\n default:\n reader.skipField();\n break;\n }\n }\n return msg;\n};\n\n/**\n * Serializes the message to binary data (in protobuf wire format).\n * @return {!Uint8Array}\n */\nproto.to.v1.ToUsersInGameHistoryGpsQueryRequest.prototype.serializeBinary = function () {\n var writer = new jspb.BinaryWriter();\n proto.to.v1.ToUsersInGameHistoryGpsQueryRequest.serializeBinaryToWriter(this, writer);\n return writer.getResultBuffer();\n};\n\n/**\n * Serializes the given message to binary data (in protobuf wire\n * format), writing to the given BinaryWriter.\n * @param {!proto.to.v1.ToUsersInGameHistoryGpsQueryRequest} message\n * @param {!jspb.BinaryWriter} writer\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\nproto.to.v1.ToUsersInGameHistoryGpsQueryRequest.serializeBinaryToWriter = function (message, writer) {\n var f = undefined;\n f = message.getId();\n if (f !== 0) {\n writer.writeInt32(1, f);\n }\n f = message.getStartsecondstamp();\n if (f !== 0) {\n writer.writeInt64(2, f);\n }\n f = message.getEndsecondstamp();\n if (f !== 0) {\n writer.writeInt64(3, f);\n }\n};\n\n/**\n * optional int32 id = 1;\n * @return {number}\n */\nproto.to.v1.ToUsersInGameHistoryGpsQueryRequest.prototype.getId = function () {\n return (/** @type {number} */jspb.Message.getFieldWithDefault(this, 1, 0)\n );\n};\n\n/**\n * @param {number} value\n * @return {!proto.to.v1.ToUsersInGameHistoryGpsQueryRequest} returns this\n */\nproto.to.v1.ToUsersInGameHistoryGpsQueryRequest.prototype.setId = function (value) {\n return jspb.Message.setProto3IntField(this, 1, value);\n};\n\n/**\n * optional int64 startSecondStamp = 2;\n * @return {number}\n */\nproto.to.v1.ToUsersInGameHistoryGpsQueryRequest.prototype.getStartsecondstamp = function () {\n return (/** @type {number} */jspb.Message.getFieldWithDefault(this, 2, 0)\n );\n};\n\n/**\n * @param {number} value\n * @return {!proto.to.v1.ToUsersInGameHistoryGpsQueryRequest} returns this\n */\nproto.to.v1.ToUsersInGameHistoryGpsQueryRequest.prototype.setStartsecondstamp = function (value) {\n return jspb.Message.setProto3IntField(this, 2, value);\n};\n\n/**\n * optional int64 endSecondStamp = 3;\n * @return {number}\n */\nproto.to.v1.ToUsersInGameHistoryGpsQueryRequest.prototype.getEndsecondstamp = function () {\n return (/** @type {number} */jspb.Message.getFieldWithDefault(this, 3, 0)\n );\n};\n\n/**\n * @param {number} value\n * @return {!proto.to.v1.ToUsersInGameHistoryGpsQueryRequest} returns this\n */\nproto.to.v1.ToUsersInGameHistoryGpsQueryRequest.prototype.setEndsecondstamp = function (value) {\n return jspb.Message.setProto3IntField(this, 3, value);\n};\n\n/**\n * List of repeated fields within this message type.\n * @private {!Array<number>}\n * @const\n */\nproto.to.v1.ToUserGpsQueryReply.repeatedFields_ = [1];\nif (jspb.Message.GENERATE_TO_OBJECT) {\n /**\n * Creates an object representation of this proto.\n * Field names that are reserved in JavaScript and will be renamed to pb_name.\n * Optional fields that are not set will be set to undefined.\n * To access a reserved field use, foo.pb_<name>, eg, foo.pb_default.\n * For the list of reserved names please see:\n * net/proto2/compiler/js/internal/generator.cc#kKeyword.\n * @param {boolean=} opt_includeInstance Deprecated. whether to include the\n * JSPB instance for transitional soy proto support:\n * http://goto/soy-param-migration\n * @return {!Object}\n */\n proto.to.v1.ToUserGpsQueryReply.prototype.toObject = function (opt_includeInstance) {\n return proto.to.v1.ToUserGpsQueryReply.toObject(opt_includeInstance, this);\n };\n\n /**\n * Static version of the {@see toObject} method.\n * @param {boolean|undefined} includeInstance Deprecated. Whether to include\n * the JSPB instance for transitional soy proto support:\n * http://goto/soy-param-migration\n * @param {!proto.to.v1.ToUserGpsQueryReply} msg The msg instance to transform.\n * @return {!Object}\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\n proto.to.v1.ToUserGpsQueryReply.toObject = function (includeInstance, msg) {\n var f,\n obj = {\n gpsinfoList: jspb.Message.toObjectList(msg.getGpsinfoList(), proto.to.v1.UserGpsInfo.toObject, includeInstance)\n };\n if (includeInstance) {\n obj.$jspbMessageInstance = msg;\n }\n return obj;\n };\n}\n\n/**\n * Deserializes binary data (in protobuf wire format).\n * @param {jspb.ByteSource} bytes The bytes to deserialize.\n * @return {!proto.to.v1.ToUserGpsQueryReply}\n */\nproto.to.v1.ToUserGpsQueryReply.deserializeBinary = function (bytes) {\n var reader = new jspb.BinaryReader(bytes);\n var msg = new proto.to.v1.ToUserGpsQueryReply();\n return proto.to.v1.ToUserGpsQueryReply.deserializeBinaryFromReader(msg, reader);\n};\n\n/**\n * Deserializes binary data (in protobuf wire format) from the\n * given reader into the given message object.\n * @param {!proto.to.v1.ToUserGpsQueryReply} msg The message object to deserialize into.\n * @param {!jspb.BinaryReader} reader The BinaryReader to use.\n * @return {!proto.to.v1.ToUserGpsQueryReply}\n */\nproto.to.v1.ToUserGpsQueryReply.deserializeBinaryFromReader = function (msg, reader) {\n while (reader.nextField()) {\n if (reader.isEndGroup()) {\n break;\n }\n var field = reader.getFieldNumber();\n switch (field) {\n case 1:\n var value = new proto.to.v1.UserGpsInfo();\n reader.readMessage(value, proto.to.v1.UserGpsInfo.deserializeBinaryFromReader);\n msg.addGpsinfo(value);\n break;\n default:\n reader.skipField();\n break;\n }\n }\n return msg;\n};\n\n/**\n * Serializes the message to binary data (in protobuf wire format).\n * @return {!Uint8Array}\n */\nproto.to.v1.ToUserGpsQueryReply.prototype.serializeBinary = function () {\n var writer = new jspb.BinaryWriter();\n proto.to.v1.ToUserGpsQueryReply.serializeBinaryToWriter(this, writer);\n return writer.getResultBuffer();\n};\n\n/**\n * Serializes the given message to binary data (in protobuf wire\n * format), writing to the given BinaryWriter.\n * @param {!proto.to.v1.ToUserGpsQueryReply} message\n * @param {!jspb.BinaryWriter} writer\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\nproto.to.v1.ToUserGpsQueryReply.serializeBinaryToWriter = function (message, writer) {\n var f = undefined;\n f = message.getGpsinfoList();\n if (f.length > 0) {\n writer.writeRepeatedMessage(1, f, proto.to.v1.UserGpsInfo.serializeBinaryToWriter);\n }\n};\n\n/**\n * repeated UserGpsInfo gpsInfo = 1;\n * @return {!Array<!proto.to.v1.UserGpsInfo>}\n */\nproto.to.v1.ToUserGpsQueryReply.prototype.getGpsinfoList = function () {\n return (/** @type{!Array<!proto.to.v1.UserGpsInfo>} */\n jspb.Message.getRepeatedWrapperField(this, proto.to.v1.UserGpsInfo, 1)\n );\n};\n\n/**\n * @param {!Array<!proto.to.v1.UserGpsInfo>} value\n * @return {!proto.to.v1.ToUserGpsQueryReply} returns this\n*/\nproto.to.v1.ToUserGpsQueryReply.prototype.setGpsinfoList = function (value) {\n return jspb.Message.setRepeatedWrapperField(this, 1, value);\n};\n\n/**\n * @param {!proto.to.v1.UserGpsInfo=} opt_value\n * @param {number=} opt_index\n * @return {!proto.to.v1.UserGpsInfo}\n */\nproto.to.v1.ToUserGpsQueryReply.prototype.addGpsinfo = function (opt_value, opt_index) {\n return jspb.Message.addToRepeatedWrapperField(this, 1, opt_value, proto.to.v1.UserGpsInfo, opt_index);\n};\n\n/**\n * Clears the list making it empty but non-null.\n * @return {!proto.to.v1.ToUserGpsQueryReply} returns this\n */\nproto.to.v1.ToUserGpsQueryReply.prototype.clearGpsinfoList = function () {\n return this.setGpsinfoList([]);\n};\nif (jspb.Message.GENERATE_TO_OBJECT) {\n /**\n * Creates an object representation of this proto.\n * Field names that are reserved in JavaScript and will be renamed to pb_name.\n * Optional fields that are not set will be set to undefined.\n * To access a reserved field use, foo.pb_<name>, eg, foo.pb_default.\n * For the list of reserved names please see:\n * net/proto2/compiler/js/internal/generator.cc#kKeyword.\n * @param {boolean=} opt_includeInstance Deprecated. whether to include the\n * JSPB instance for transitional soy proto support:\n * http://goto/soy-param-migration\n * @return {!Object}\n */\n proto.to.v1.UserGpsInfo.prototype.toObject = function (opt_includeInstance) {\n return proto.to.v1.UserGpsInfo.toObject(opt_includeInstance, this);\n };\n\n /**\n * Static version of the {@see toObject} method.\n * @param {boolean|undefined} includeInstance Deprecated. Whether to include\n * the JSPB instance for transitional soy proto support:\n * http://goto/soy-param-migration\n * @param {!proto.to.v1.UserGpsInfo} msg The msg instance to transform.\n * @return {!Object}\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\n proto.to.v1.UserGpsInfo.toObject = function (includeInstance, msg) {\n var f,\n obj = {\n id: jspb.Message.getFieldWithDefault(msg, 1, 0),\n longitude: jspb.Message.getFloatingPointFieldWithDefault(msg, 2, 0.0),\n latitude: jspb.Message.getFloatingPointFieldWithDefault(msg, 3, 0.0),\n directionradian: jspb.Message.getFloatingPointFieldWithDefault(msg, 4, 0.0),\n gpstimemillisecondstamp: jspb.Message.getFieldWithDefault(msg, 5, 0)\n };\n if (includeInstance) {\n obj.$jspbMessageInstance = msg;\n }\n return obj;\n };\n}\n\n/**\n * Deserializes binary data (in protobuf wire format).\n * @param {jspb.ByteSource} bytes The bytes to deserialize.\n * @return {!proto.to.v1.UserGpsInfo}\n */\nproto.to.v1.UserGpsInfo.deserializeBinary = function (bytes) {\n var reader = new jspb.BinaryReader(bytes);\n var msg = new proto.to.v1.UserGpsInfo();\n return proto.to.v1.UserGpsInfo.deserializeBinaryFromReader(msg, reader);\n};\n\n/**\n * Deserializes binary data (in protobuf wire format) from the\n * given reader into the given message object.\n * @param {!proto.to.v1.UserGpsInfo} msg The message object to deserialize into.\n * @param {!jspb.BinaryReader} reader The BinaryReader to use.\n * @return {!proto.to.v1.UserGpsInfo}\n */\nproto.to.v1.UserGpsInfo.deserializeBinaryFromReader = function (msg, reader) {\n while (reader.nextField()) {\n if (reader.isEndGroup()) {\n break;\n }\n var field = reader.getFieldNumber();\n switch (field) {\n case 1:\n var value = /** @type {number} */reader.readInt32();\n msg.setId(value);\n break;\n case 2:\n var value = /** @type {number} */reader.readDouble();\n msg.setLongitude(value);\n break;\n case 3:\n var value = /** @type {number} */reader.readDouble();\n msg.setLatitude(value);\n break;\n case 4:\n var value = /** @type {number} */reader.readDouble();\n msg.setDirectionradian(value);\n break;\n case 5:\n var value = /** @type {number} */reader.readInt64();\n msg.setGpstimemillisecondstamp(value);\n break;\n default:\n reader.skipField();\n break;\n }\n }\n return msg;\n};\n\n/**\n * Serializes the message to binary data (in protobuf wire format).\n * @return {!Uint8Array}\n */\nproto.to.v1.UserGpsInfo.prototype.serializeBinary = function () {\n var writer = new jspb.BinaryWriter();\n proto.to.v1.UserGpsInfo.serializeBinaryToWriter(this, writer);\n return writer.getResultBuffer();\n};\n\n/**\n * Serializes the given message to binary data (in protobuf wire\n * format), writing to the given BinaryWriter.\n * @param {!proto.to.v1.UserGpsInfo} message\n * @param {!jspb.BinaryWriter} writer\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\nproto.to.v1.UserGpsInfo.serializeBinaryToWriter = function (message, writer) {\n var f = undefined;\n f = message.getId();\n if (f !== 0) {\n writer.writeInt32(1, f);\n }\n f = message.getLongitude();\n if (f !== 0.0) {\n writer.writeDouble(2, f);\n }\n f = message.getLatitude();\n if (f !== 0.0) {\n writer.writeDouble(3, f);\n }\n f = message.getDirectionradian();\n if (f !== 0.0) {\n writer.writeDouble(4, f);\n }\n f = message.getGpstimemillisecondstamp();\n if (f !== 0) {\n writer.writeInt64(5, f);\n }\n};\n\n/**\n * optional int32 Id = 1;\n * @return {number}\n */\nproto.to.v1.UserGpsInfo.prototype.getId = function () {\n return (/** @type {number} */jspb.Message.getFieldWithDefault(this, 1, 0)\n );\n};\n\n/**\n * @param {number} value\n * @return {!proto.to.v1.UserGpsInfo} returns this\n */\nproto.to.v1.UserGpsInfo.prototype.setId = function (value) {\n return jspb.Message.setProto3IntField(this, 1, value);\n};\n\n/**\n * optional double longitude = 2;\n * @return {number}\n */\nproto.to.v1.UserGpsInfo.prototype.getLongitude = function () {\n return (/** @type {number} */jspb.Message.getFloatingPointFieldWithDefault(this, 2, 0.0)\n );\n};\n\n/**\n * @param {number} value\n * @return {!proto.to.v1.UserGpsInfo} returns this\n */\nproto.to.v1.UserGpsInfo.prototype.setLongitude = function (value) {\n return jspb.Message.setProto3FloatField(this, 2, value);\n};\n\n/**\n * optional double latitude = 3;\n * @return {number}\n */\nproto.to.v1.UserGpsInfo.prototype.getLatitude = function () {\n return (/** @type {number} */jspb.Message.getFloatingPointFieldWithDefault(this, 3, 0.0)\n );\n};\n\n/**\n * @param {number} value\n * @return {!proto.to.v1.UserGpsInfo} returns this\n */\nproto.to.v1.UserGpsInfo.prototype.setLatitude = function (value) {\n return jspb.Message.setProto3FloatField(this, 3, value);\n};\n\n/**\n * optional double directionRadian = 4;\n * @return {number}\n */\nproto.to.v1.UserGpsInfo.prototype.getDirectionradian = function () {\n return (/** @type {number} */jspb.Message.getFloatingPointFieldWithDefault(this, 4, 0.0)\n );\n};\n\n/**\n * @param {number} value\n * @return {!proto.to.v1.UserGpsInfo} returns this\n */\nproto.to.v1.UserGpsInfo.prototype.setDirectionradian = function (value) {\n return jspb.Message.setProto3FloatField(this, 4, value);\n};\n\n/**\n * optional int64 gpsTimeMillisecondStamp = 5;\n * @return {number}\n */\nproto.to.v1.UserGpsInfo.prototype.getGpstimemillisecondstamp = function () {\n return (/** @type {number} */jspb.Message.getFieldWithDefault(this, 5, 0)\n );\n};\n\n/**\n * @param {number} value\n * @return {!proto.to.v1.UserGpsInfo} returns this\n */\nproto.to.v1.UserGpsInfo.prototype.setGpstimemillisecondstamp = function (value) {\n return jspb.Message.setProto3IntField(this, 5, value);\n};\nif (jspb.Message.GENERATE_TO_OBJECT) {\n /**\n * Creates an object representation of this proto.\n * Field names that are reserved in JavaScript and will be renamed to pb_name.\n * Optional fields that are not set will be set to undefined.\n * To access a reserved field use, foo.pb_<name>, eg, foo.pb_default.\n * For the list of reserved names please see:\n * net/proto2/compiler/js/internal/generator.cc#kKeyword.\n * @param {boolean=} opt_includeInstance Deprecated. whether to include the\n * JSPB instance for transitional soy proto support:\n * http://goto/soy-param-migration\n * @return {!Object}\n */\n proto.to.v1.UserArriveControlPoint.prototype.toObject = function (opt_includeInstance) {\n return proto.to.v1.UserArriveControlPoint.toObject(opt_includeInstance, this);\n };\n\n /**\n * Static version of the {@see toObject} method.\n * @param {boolean|undefined} includeInstance Deprecated. Whether to include\n * the JSPB instance for transitional soy proto support:\n * http://goto/soy-param-migration\n * @param {!proto.to.v1.UserArriveControlPoint} msg The msg instance to transform.\n * @return {!Object}\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\n proto.to.v1.UserArriveControlPoint.toObject = function (includeInstance, msg) {\n var f,\n obj = {\n id: jspb.Message.getFieldWithDefault(msg, 1, 0),\n sn: jspb.Message.getFieldWithDefault(msg, 2, \"\"),\n millisecondstamp: jspb.Message.getFieldWithDefault(msg, 3, 0),\n category: jspb.Message.getFieldWithDefault(msg, 4, 0),\n ciposition: (f = msg.getCiposition()) && base_pb.Position.toObject(includeInstance, f)\n };\n if (includeInstance) {\n obj.$jspbMessageInstance = msg;\n }\n return obj;\n };\n}\n\n/**\n * Deserializes binary data (in protobuf wire format).\n * @param {jspb.ByteSource} bytes The bytes to deserialize.\n * @return {!proto.to.v1.UserArriveControlPoint}\n */\nproto.to.v1.UserArriveControlPoint.deserializeBinary = function (bytes) {\n var reader = new jspb.BinaryReader(bytes);\n var msg = new proto.to.v1.UserArriveControlPoint();\n return proto.to.v1.UserArriveControlPoint.deserializeBinaryFromReader(msg, reader);\n};\n\n/**\n * Deserializes binary data (in protobuf wire format) from the\n * given reader into the given message object.\n * @param {!proto.to.v1.UserArriveControlPoint} msg The message object to deserialize into.\n * @param {!jspb.BinaryReader} reader The BinaryReader to use.\n * @return {!proto.to.v1.UserArriveControlPoint}\n */\nproto.to.v1.UserArriveControlPoint.deserializeBinaryFromReader = function (msg, reader) {\n while (reader.nextField()) {\n if (reader.isEndGroup()) {\n break;\n }\n var field = reader.getFieldNumber();\n switch (field) {\n case 1:\n var value = /** @type {number} */reader.readInt64();\n msg.setId(value);\n break;\n case 2:\n var value = /** @type {string} */reader.readString();\n msg.setSn(value);\n break;\n case 3:\n var value = /** @type {number} */reader.readInt64();\n msg.setMillisecondstamp(value);\n break;\n case 4:\n var value = /** @type {number} */reader.readInt32();\n msg.setCategory(value);\n break;\n case 5:\n var value = new base_pb.Position();\n reader.readMessage(value, base_pb.Position.deserializeBinaryFromReader);\n msg.setCiposition(value);\n break;\n default:\n reader.skipField();\n break;\n }\n }\n return msg;\n};\n\n/**\n * Serializes the message to binary data (in protobuf wire format).\n * @return {!Uint8Array}\n */\nproto.to.v1.UserArriveControlPoint.prototype.serializeBinary = function () {\n var writer = new jspb.BinaryWriter();\n proto.to.v1.UserArriveControlPoint.serializeBinaryToWriter(this, writer);\n return writer.getResultBuffer();\n};\n\n/**\n * Serializes the given message to binary data (in protobuf wire\n * format), writing to the given BinaryWriter.\n * @param {!proto.to.v1.UserArriveControlPoint} message\n * @param {!jspb.BinaryWriter} writer\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\nproto.to.v1.UserArriveControlPoint.serializeBinaryToWriter = function (message, writer) {\n var f = undefined;\n f = message.getId();\n if (f !== 0) {\n writer.writeInt64(1, f);\n }\n f = message.getSn();\n if (f.length > 0) {\n writer.writeString(2, f);\n }\n f = message.getMillisecondstamp();\n if (f !== 0) {\n writer.writeInt64(3, f);\n }\n f = message.getCategory();\n if (f !== 0) {\n writer.writeInt32(4, f);\n }\n f = message.getCiposition();\n if (f != null) {\n writer.writeMessage(5, f, base_pb.Position.serializeBinaryToWriter);\n }\n};\n\n/**\n * optional int64 id = 1;\n * @return {number}\n */\nproto.to.v1.UserArriveControlPoint.prototype.getId = function () {\n return (/** @type {number} */jspb.Message.getFieldWithDefault(this, 1, 0)\n );\n};\n\n/**\n * @param {number} value\n * @return {!proto.to.v1.UserArriveControlPoint} returns this\n */\nproto.to.v1.UserArriveControlPoint.prototype.setId = function (value) {\n return jspb.Message.setProto3IntField(this, 1, value);\n};\n\n/**\n * optional string sn = 2;\n * @return {string}\n */\nproto.to.v1.UserArriveControlPoint.prototype.getSn = function () {\n return (/** @type {string} */jspb.Message.getFieldWithDefault(this, 2, \"\")\n );\n};\n\n/**\n * @param {string} value\n * @return {!proto.to.v1.UserArriveControlPoint} returns this\n */\nproto.to.v1.UserArriveControlPoint.prototype.setSn = function (value) {\n return jspb.Message.setProto3StringField(this, 2, value);\n};\n\n/**\n * optional int64 millisecondStamp = 3;\n * @return {number}\n */\nproto.to.v1.UserArriveControlPoint.prototype.getMillisecondstamp = function () {\n return (/** @type {number} */jspb.Message.getFieldWithDefault(this, 3, 0)\n );\n};\n\n/**\n * @param {number} value\n * @return {!proto.to.v1.UserArriveControlPoint} returns this\n */\nproto.to.v1.UserArriveControlPoint.prototype.setMillisecondstamp = function (value) {\n return jspb.Message.setProto3IntField(this, 3, value);\n};\n\n/**\n * optional int32 category = 4;\n * @return {number}\n */\nproto.to.v1.UserArriveControlPoint.prototype.getCategory = function () {\n return (/** @type {number} */jspb.Message.getFieldWithDefault(this, 4, 0)\n );\n};\n\n/**\n * @param {number} value\n * @return {!proto.to.v1.UserArriveControlPoint} returns this\n */\nproto.to.v1.UserArriveControlPoint.prototype.setCategory = function (value) {\n return jspb.Message.setProto3IntField(this, 4, value);\n};\n\n/**\n * optional base.v1.Position ciPosition = 5;\n * @return {?proto.base.v1.Position}\n */\nproto.to.v1.UserArriveControlPoint.prototype.getCiposition = function () {\n return (/** @type{?proto.base.v1.Position} */\n jspb.Message.getWrapperField(this, base_pb.Position, 5)\n );\n};\n\n/**\n * @param {?proto.base.v1.Position|undefined} value\n * @return {!proto.to.v1.UserArriveControlPoint} returns this\n*/\nproto.to.v1.UserArriveControlPoint.prototype.setCiposition = function (value) {\n return jspb.Message.setWrapperField(this, 5, value);\n};\n\n/**\n * Clears the message field making it undefined.\n * @return {!proto.to.v1.UserArriveControlPoint} returns this\n */\nproto.to.v1.UserArriveControlPoint.prototype.clearCiposition = function () {\n return this.setCiposition(undefined);\n};\n\n/**\n * Returns whether this field is set.\n * @return {boolean}\n */\nproto.to.v1.UserArriveControlPoint.prototype.hasCiposition = function () {\n return jspb.Message.getField(this, 5) != null;\n};\ngoog.object.extend(exports, proto.to.v1);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInVuaS1hcHA6Ly8vZ3JwYy90cmFja19vZmZpY2FsX3BiLmpzIl0sIm5hbWVzIjpbImpzcGIiLCJyZXF1aXJlIiwiZ29vZyIsImdsb2JhbCIsIndpbmRvdyIsInNlbGYiLCJGdW5jdGlvbiIsImNhbGwiLCJiYXNlX3BiIiwib2JqZWN0IiwiZXh0ZW5kIiwicHJvdG8iLCJleHBvcnRTeW1ib2wiLCJ0byIsInYxIiwiVG9BY3Rpb25MaXN0UmVwbHkiLCJvcHRfZGF0YSIsIk1lc3NhZ2UiLCJpbml0aWFsaXplIiwicmVwZWF0ZWRGaWVsZHNfIiwiaW5oZXJpdHMiLCJERUJVRyIsIkNPTVBJTEVEIiwiZGlzcGxheU5hbWUiLCJUb0FjdGlvblNpbXBsZSIsIlRvQWN0aW9uRGV0YWlsUmVwbHkiLCJUb01hcEluZm8iLCJUb0FjdGlvblVzZXJzRGV0YWlsUmVwbHkiLCJVc2VySW5HYW1lSW5mbyIsIlRvQW55VXNlckhpc3RvcnlHcHNRdWVyeVJlcXVlc3QiLCJUb1VzZXJzSW5HYW1lSGlzdG9yeUdwc1F1ZXJ5UmVxdWVzdCIsIlRvVXNlckdwc1F1ZXJ5UmVwbHkiLCJVc2VyR3BzSW5mbyIsIlVzZXJBcnJpdmVDb250cm9sUG9pbnQiLCJHRU5FUkFURV9UT19PQkpFQ1QiLCJwcm90b3R5cGUiLCJ0b09iamVjdCIsIm9wdF9pbmNsdWRlSW5zdGFuY2UiLCJpbmNsdWRlSW5zdGFuY2UiLCJtc2ciLCJmIiwib2JqIiwibGlzdExpc3QiLCJ0b09iamVjdExpc3QiLCJnZXRMaXN0TGlzdCIsIiRqc3BiTWVzc2FnZUluc3RhbmNlIiwiZGVzZXJpYWxpemVCaW5hcnkiLCJieXRlcyIsInJlYWRlciIsIkJpbmFyeVJlYWRlciIsImRlc2VyaWFsaXplQmluYXJ5RnJvbVJlYWRlciIsIm5leHRGaWVsZCIsImlzRW5kR3JvdXAiLCJmaWVsZCIsImdldEZpZWxkTnVtYmVyIiwidmFsdWUiLCJyZWFkTWVzc2FnZSIsImFkZExpc3QiLCJza2lwRmllbGQiLCJzZXJpYWxpemVCaW5hcnkiLCJ3cml0ZXIiLCJCaW5hcnlXcml0ZXIiLCJzZXJpYWxpemVCaW5hcnlUb1dyaXRlciIsImdldFJlc3VsdEJ1ZmZlciIsIm1lc3NhZ2UiLCJ1bmRlZmluZWQiLCJsZW5ndGgiLCJ3cml0ZVJlcGVhdGVkTWVzc2FnZSIsImdldFJlcGVhdGVkV3JhcHBlckZpZWxkIiwic2V0TGlzdExpc3QiLCJzZXRSZXBlYXRlZFdyYXBwZXJGaWVsZCIsIm9wdF92YWx1ZSIsIm9wdF9pbmRleCIsImFkZFRvUmVwZWF0ZWRXcmFwcGVyRmllbGQiLCJjbGVhckxpc3RMaXN0IiwiaWQiLCJnZXRGaWVsZFdpdGhEZWZhdWx0IiwibmFtZSIsInJlYWRJbnQzMiIsInNldElkIiwicmVhZFN0cmluZyIsInNldE5hbWUiLCJnZXRJZCIsIndyaXRlSW50MzIiLCJnZXROYW1lIiwid3JpdGVTdHJpbmciLCJzZXRQcm90bzNJbnRGaWVsZCIsInNldFByb3RvM1N0cmluZ0ZpZWxkIiwiY29udGVudCIsImxvY2t1cCIsImZvcmNlZGVuZHRpbWUiLCJ0b3RhbGNvbnRyb2xudW0iLCJtYXhyYW5nZSIsIm1hcGluZm8iLCJnZXRNYXBpbmZvIiwicm91dGVzTGlzdCIsImdldFJvdXRlc0xpc3QiLCJDb3Vyc2VJbmZvIiwic2V0Q29udGVudCIsInNldExvY2t1cCIsInNldEZvcmNlZGVuZHRpbWUiLCJzZXRUb3RhbGNvbnRyb2xudW0iLCJzZXRNYXhyYW5nZSIsInNldE1hcGluZm8iLCJhZGRSb3V0ZXMiLCJnZXRDb250ZW50IiwiZ2V0TG9ja3VwIiwiZ2V0Rm9yY2VkZW5kdGltZSIsImdldFRvdGFsY29udHJvbG51bSIsImdldE1heHJhbmdlIiwid3JpdGVNZXNzYWdlIiwiZ2V0V3JhcHBlckZpZWxkIiwic2V0V3JhcHBlckZpZWxkIiwiY2xlYXJNYXBpbmZvIiwiaGFzTWFwaW5mbyIsImdldEZpZWxkIiwic2V0Um91dGVzTGlzdCIsImJhc2UiLCJjbGVhclJvdXRlc0xpc3QiLCJsaWQiLCJtYXBuYW1lIiwiemlwaW1hZ2UiLCJnZXRaaXBpbWFnZSIsIk5ldEltYWdlIiwiY2VudGVybG9uZ2l0dWRlIiwiZ2V0RmxvYXRpbmdQb2ludEZpZWxkV2l0aERlZmF1bHQiLCJjZW50ZXJsYXRpdHVkZSIsImRlZnNjYWxlIiwibWFwdXJsIiwibWFwbWQ1Iiwic2V0TGlkIiwic2V0TWFwbmFtZSIsInNldFppcGltYWdlIiwicmVhZERvdWJsZSIsInNldENlbnRlcmxvbmdpdHVkZSIsInNldENlbnRlcmxhdGl0dWRlIiwic2V0RGVmc2NhbGUiLCJzZXRNYXB1cmwiLCJzZXRNYXBtZDUiLCJnZXRMaWQiLCJnZXRNYXBuYW1lIiwiZ2V0Q2VudGVybG9uZ2l0dWRlIiwid3JpdGVEb3VibGUiLCJnZXRDZW50ZXJsYXRpdHVkZSIsImdldERlZnNjYWxlIiwiZ2V0TWFwdXJsIiwiZ2V0TWFwbWQ1IiwiY2xlYXJaaXBpbWFnZSIsImhhc1ppcGltYWdlIiwic2V0UHJvdG8zRmxvYXRGaWVsZCIsInVzZXJzTGlzdCIsImdldFVzZXJzTGlzdCIsImFkZFVzZXJzIiwic2V0VXNlcnNMaXN0IiwiY2xlYXJVc2Vyc0xpc3QiLCJkaXN0YW5jZSIsInBhY2UiLCJhdmdociIsIm1heGhyIiwiY2Fsb3JpZSIsImNrIiwiZWkiLCJlZmZlY3RpdmVudW0iLCJzdGFydHNlY29uZHN0YW1wIiwiZW5kc2Vjb25kc3RhbXAiLCJtc3RhdGUiLCJzZXREaXN0YW5jZSIsInNldFBhY2UiLCJzZXRBdmdociIsInNldE1heGhyIiwic2V0Q2Fsb3JpZSIsInNldENrIiwicmVhZEZsb2F0Iiwic2V0RWkiLCJzZXRFZmZlY3RpdmVudW0iLCJyZWFkSW50NjQiLCJzZXRTdGFydHNlY29uZHN0YW1wIiwic2V0RW5kc2Vjb25kc3RhbXAiLCJzZXRNc3RhdGUiLCJnZXREaXN0YW5jZSIsImdldFBhY2UiLCJnZXRBdmdociIsImdldE1heGhyIiwiZ2V0Q2Fsb3JpZSIsImdldENrIiwiZ2V0RWkiLCJ3cml0ZUZsb2F0IiwiZ2V0RWZmZWN0aXZlbnVtIiwiZ2V0U3RhcnRzZWNvbmRzdGFtcCIsIndyaXRlSW50NjQiLCJnZXRFbmRzZWNvbmRzdGFtcCIsImdldE1zdGF0ZSIsInVzZXJpZGFyckxpc3QiLCJnZXRSZXBlYXRlZEZpZWxkIiwidmFsdWVzIiwiaXNEZWxpbWl0ZWQiLCJyZWFkUGFja2VkSW50MzIiLCJpIiwiYWRkVXNlcmlkYXJyIiwiZ2V0VXNlcmlkYXJyTGlzdCIsIndyaXRlUGFja2VkSW50MzIiLCJzZXRVc2VyaWRhcnJMaXN0Iiwic2V0RmllbGQiLCJhZGRUb1JlcGVhdGVkRmllbGQiLCJjbGVhclVzZXJpZGFyckxpc3QiLCJncHNpbmZvTGlzdCIsImdldEdwc2luZm9MaXN0IiwiYWRkR3BzaW5mbyIsInNldEdwc2luZm9MaXN0IiwiY2xlYXJHcHNpbmZvTGlzdCIsImxvbmdpdHVkZSIsImxhdGl0dWRlIiwiZGlyZWN0aW9ucmFkaWFuIiwiZ3BzdGltZW1pbGxpc2Vjb25kc3RhbXAiLCJzZXRMb25naXR1ZGUiLCJzZXRMYXRpdHVkZSIsInNldERpcmVjdGlvbnJhZGlhbiIsInNldEdwc3RpbWVtaWxsaXNlY29uZHN0YW1wIiwiZ2V0TG9uZ2l0dWRlIiwiZ2V0TGF0aXR1ZGUiLCJnZXREaXJlY3Rpb25yYWRpYW4iLCJnZXRHcHN0aW1lbWlsbGlzZWNvbmRzdGFtcCIsInNuIiwibWlsbGlzZWNvbmRzdGFtcCIsImNhdGVnb3J5IiwiY2lwb3NpdGlvbiIsImdldENpcG9zaXRpb24iLCJQb3NpdGlvbiIsInNldFNuIiwic2V0TWlsbGlzZWNvbmRzdGFtcCIsInNldENhdGVnb3J5Iiwic2V0Q2lwb3NpdGlvbiIsImdldFNuIiwiZ2V0TWlsbGlzZWNvbmRzdGFtcCIsImdldENhdGVnb3J5IiwiY2xlYXJDaXBvc2l0aW9uIiwiaGFzQ2lwb3NpdGlvbiIsImV4cG9ydHMiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxJQUFJQSxJQUFJLEdBQUdDLG1CQUFPLENBQUMseUJBQWlCLENBQUM7QUFDckMsSUFB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Mk4sUUFBUSxFQUFFLENBQUM7RUFBQztBQUMzRCxDQUFDOztBQUdEO0FBQ0E7QUFDQTtBQUNBO0FBQ0F4TixLQUFLLENBQUNFLEVBQUUsQ0FBQ0MsRUFBRSxDQUFDbUIsc0JBQXNCLENBQUNFLFNBQVMsQ0FBQ29NLGFBQWEsR0FBRyxVQUFTaEwsS0FBSyxFQUFFO0VBQzNFLE9BQU92RCxJQUFJLENBQUNpQixPQUFPLENBQUMrRixlQUFlLENBQUMsSUFBSSxFQUFFLENBQUMsRUFBRXpELEtBQUssQ0FBQztBQUNyRCxDQUFDOztBQUdEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E1QyxLQUFLLENBQUNFLEVBQUUsQ0FBQ0MsRUFBRSxDQUFDbUIsc0JBQXNCLENBQUNFLFNBQVMsQ0FBQ3dNLGVBQWUsR0FBRyxZQUFXO0VBQ3hFLE9BQU8sSUFBSSxDQUFDSixhQUFhLENBQUN0SyxTQUFTLENBQUM7QUFDdEMsQ0FBQzs7QUFHRDtBQUNBO0FBQ0E7QUFDQTtBQUNBdEQsS0FBSyxDQUFDRSxFQUFFLENBQUNDLEVBQUUsQ0FBQ21CLHNCQUFzQixDQUFDRSxTQUFTLENBQUN5TSxhQUFhLEdBQUcsWUFBVztFQUN0RSxPQUFPNU8sSUFBSSxDQUFDaUIsT0FBTyxDQUFDa0csUUFBUSxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsSUFBSSxJQUFJO0FBQy9DLENBQUM7QUFHRGpILElBQUksQ0FBQ08sTUFBTSxDQUFDQyxNQUFNLENBQUNtTyxPQUFPLEVBQUVsTyxLQUFLLENBQUNFLEVBQUUsQ0FBQ0MsRUFBRSxDQUFDIiwiZmlsZSI6IjY2LmpzIiwic291cmNlc0NvbnRlbnQiOlsiLy8gc291cmNlOiB0cmFja19vZmZpY2FsLnByb3RvXG4vKipcbiAqIEBmaWxlb3ZlcnZpZXdcbiAqIEBlbmhhbmNlYWJsZVxuICogQHN1cHByZXNzIHttaXNzaW5nUmVxdWlyZX0gcmVwb3J0cyBlcnJvciBvbiBpbXBsaWNpdCB0eXBlIHVzYWdlcy5cbiAqIEBzdXBwcmVzcyB7bWVzc2FnZUNvbnZlbnRpb25zfSBKUyBDb21waWxlciByZXBvcnRzIGFuIGVycm9yIGlmIGEgdmFyaWFibGUgb3JcbiAqICAgICBmaWVsZCBzdGFydHMgd2l0aCAnTVNHXycgYW5kIGlzbid0IGEgdHJhbnNsYXRhYmxlIG1lc3NhZ2UuXG4gKiBAcHVibGljXG4gKi9cbi8vIEdFTkVSQVRFRCBDT0RFIC0tIERPIE5PVCBFRElUIVxuLyogZXNsaW50LWRpc2FibGUgKi9cbi8vIEB0cy1ub2NoZWNrXG5cbnZhciBqc3BiID0gcmVxdWlyZSgnZ29vZ2xlLXByb3RvYnVmJyk7XG52YXIgZ29vZyA9IGpzcGI7XG52YXIgZ2xvYmFsID0gKGZ1bmN0aW9uKCkgeyByZXR1cm4gdGhpcyB8fCB3aW5kb3cgfHwgZ2xvYmFsIHx8IHNlbGYgfHwgRnVuY3Rpb24oJ3JldHVybiB0aGlzJykoKTsgfSkuY2FsbChudWxsKTtcblxudmFyIGJhc2VfcGIgPSByZXF1aXJlKCcuL2Jhc2VfcGIuanMnKTtcbmdvb2cub2JqZWN0LmV4dGVuZChwcm90bywgYmFzZV9wYik7XG5nb29nLmV4cG9ydFN5bWJvbCgncHJvdG8udG8udjEuVG9BY3Rpb25EZXRhaWxSZXBseScsIG51bGwsIGdsb2JhbCk7XG5nb29nLmV4cG9ydFN5bWJvbCgncHJvdG8udG8udjEuVG9BY3Rpb25MaXN0UmVwbHknLCBudWxsLCBnbG9iYWwpO1xuZ29vZy5leHBvcnRTeW1ib2woJ3Byb3RvLnRvLnYxLlRvQWN0aW9uU2ltcGxlJywgbnVsbCwgZ2xvYmFsKTtcbmdvb2cuZXhwb3J0U3ltYm9sKCdwcm90by50by52MS5Ub0FjdGlvblVzZXJzRGV0YWlsUmVwbHknLCBudWxsLCBnbG9iYWwpO1xuZ29vZy5leHBvcnRTeW1ib2woJ3Byb3RvLnRvLnYxLlRvQW55VXNlckhpc3RvcnlHcHNRdWVyeVJlcXVlc3QnLCBudWxsLCBnbG9iYWwpO1xuZ29vZy5leHBvcnRTeW1ib2woJ3Byb3RvLnRvLnYxLlRvTWFwSW5mbycsIG51bGwsIGdsb2JhbCk7XG5nb29nLmV4cG9ydFN5bWJvbCgncHJvdG8udG8udjEuVG9Vc2VyR3BzUXVlcnlSZXBseScsIG51bGwsIGdsb2JhbCk7XG5nb29nLmV4cG9ydFN5bWJvbCgncHJvdG8udG8udjEuVG9Vc2Vyc0luR2FtZUhpc3RvcnlHcHNRdWVyeVJlcXVlc3QnLCBudWxsLCBnbG9iYWwpO1xuZ29vZy5leHBvcnRTeW1ib2woJ3Byb3RvLnRvLnYxLlVzZXJBcnJpdmVDb250cm9sUG9pbnQnLCBudWxsLCBnbG9iYWwpO1xuZ29vZy5leHBvcnRTeW1ib2woJ3Byb3RvLnRvLnYxLlVzZXJHcHNJbmZvJywgbnVsbCwgZ2xvYmFsKTtcbmdvb2cuZXhwb3J0U3ltYm9sKCdwcm90by50by52MS5Vc2VySW5HYW1lSW5mbycsIG51bGwsIGdsb2JhbCk7XG4vKipcbiAqIEdlbmVyYXRlZCBieSBKc1BiQ29kZUdlbmVyYXRvci5cbiAqIEBwYXJhbSB7QXJyYXk9fSBvcHRfZGF0YSBPcHRpb25hbCBpbml0aWFsIGRhdGEgYXJyYXksIHR5cGljYWxseSBmcm9tIGFcbiAqIHNlcnZlciByZXNwb25zZSwgb3IgY29uc3RydWN0ZWQgZGlyZWN0bHkgaW4gSmF2YXNjcmlwdC4gVGhlIGFycmF5IGlzIHVzZWRcbiAqIGluIHBsYWNlIGFuZCBiZWNvbWVzIHBhcnQgb2YgdGhlIGNvbnN0cnVjdGVkIG9iamVjdC4gSXQgaXMgbm90IGNsb25lZC5cbiAqIElmIG5vIGRhdGEgaXMgcHJvdmlkZWQsIHRoZSBjb25zdHJ1Y3RlZCBvYmplY3Qgd2lsbCBiZSBlbXB0eSwgYnV0IHN0aWxsXG4gKiB2YWxpZC5cbiAqIEBleHRlbmRzIHtqc3BiLk1lc3NhZ2V9XG4gKiBAY29uc3RydWN0b3JcbiAqL1xucHJvdG8udG8udjEuVG9BY3Rpb25MaXN0UmVwbHkgPSBmdW5jdGlvbihvcHRfZGF0YSkge1xuICBqc3BiLk1lc3NhZ2UuaW5pdGlhbGl6ZSh0aGlzLCBvcHRfZGF0YSwgMCwgLTEsIHByb3RvLnRvLnYxLlRvQWN0aW9uTGlzdFJlcGx5LnJlcGVhdGVkRmllbGRzXywgbnVsbCk7XG59O1xuZ29vZy5pbmhlcml0cyhwcm90by50by52MS5Ub0FjdGlvbkxpc3RSZXBseSwganNwYi5NZXNzYWdlKTtcbmlmIChnb29nLkRFQlVHICYmICFDT01QSUxFRCkge1xuICAvKipcbiAgICogQHB1YmxpY1xuICAgKiBAb3ZlcnJpZGVcbiAgICovXG4gIHByb3RvLnRvLnYxLlRvQWN0aW9uTGlzdFJlcGx5LmRpc3BsYXlOYW1lID0gJ3Byb3RvLnRvLnYxLlRvQWN0aW9uTGlzdFJlcGx5Jztcbn1cbi8qKlxuICogR2VuZXJhdGVkIGJ5IEpzUGJDb2RlR2VuZXJhdG9yLlxuICogQHBhcmFtIHtBcnJheT19IG9wdF9kYXRhIE9wdGlvbmFsIGluaXRpYWwgZGF0YSBhcnJheSwgdHlwaWNhbGx5IGZyb20gYVxuICogc2VydmVyIHJlc3BvbnNlLCBvciBjb25zdHJ1Y3RlZCBkaXJlY3RseSBpbiBKYXZhc2NyaXB0LiBUaGUgYXJyYXkgaXMgdXNlZFxuICogaW4gcGxhY2UgYW5kIGJlY29tZXMgcGFydCBvZiB0aGUgY29uc3RydWN0ZWQgb2JqZWN0LiBJdCBpcyBub3QgY2xvbmVkLlxuICogSWYgbm8gZGF0YSBpcyBwcm92aWRlZCwgdGhlIGNvbnN0cnVjdGVkIG9iamVjdCB3aWxsIGJlIGVtcHR5LCBidXQgc3RpbGxcbiAqIHZhbGlkLlxuICogQGV4dGVuZHMge2pzcGIuTWVzc2FnZX1cbiAqIEBjb25zdHJ1Y3RvclxuICovXG5wcm90by50by52MS5Ub0FjdGlvblNpbXBsZSA9IGZ1bmN0aW9uKG9wdF9kYXRhKSB7XG4gIGpzcGIuTWVzc2FnZS5pbml0aWFsaXplKHRoaXMsIG9wdF9kYXRhLCAwLCAtMSwgbnVsbCwgbnVsbCk7XG59O1xuZ29vZy5pbmhlcml0cyhwcm90by50by52MS5Ub0FjdGlvblNpbXBsZSwganNwYi5NZXNzYWdlKTtcbmlmIChnb29nLkRFQlVHICYmICFDT01QSUxFRCkge1xuICAvKipcbiAgICogQHB1YmxpY1xuICAgKiBAb3ZlcnJpZGVcbiAgICovXG4gIHByb3RvLnRvLnYxLlRvQWN0aW9uU2ltcGxlLmRpc3BsYXlOYW1lID0gJ3Byb3RvLnRvLnYxLlRvQWN0aW9uU2ltcGxlJztcbn1cbi8qKlxuICogR2VuZXJhdGVkIGJ5IEpzUGJDb2RlR2VuZXJhdG9yLlxuICogQHBhcmFtIHtBcnJheT19IG9wdF9kYXRhIE9wdGlvbmFsIGluaXRpYWwgZGF0YSBhcnJheSwgdHlwaWNhbGx5IGZyb20gYVxuICogc2VydmVyIHJlc3BvbnNlLCBvciBjb25zdHJ1Y3RlZCBkaXJlY3RseSBpbiBKYXZhc2NyaXB0LiBUaGUgYXJyYXkgaXMgdXNlZFxuICogaW4gcGxhY2UgYW5kIGJlY29tZXMgcGFydCBvZiB0aGUgY29uc3RydWN0ZWQgb2JqZWN0LiBJdCBpcyBub3QgY2xvbmVkLlxuICogSWYgbm8gZGF0YSBpcyBwcm92aWRlZCwgdGhlIGNvbnN0cnVjdGVkIG9iamVjdCB3aWxsIGJlIGVtcHR5LCBidXQgc3RpbGxcbiAqIHZhbGlkLlxuICogQGV4dGVuZHMge2pzcGIuTWVzc2FnZX1cbiAqIEBjb25zdHJ1Y3RvclxuICovXG5wcm90by50by52MS5Ub0FjdGlvbkRldGFpbFJlcGx5ID0gZnVuY3Rpb24ob3B0X2RhdGEpIHtcbiAganNwYi5NZXNzYWdlLmluaXRpYWxpemUodGhpcywgb3B0X2RhdGEsIDAsIC0xLCBwcm90by50by52MS5Ub0FjdGlvbkRldGFpbFJlcGx5LnJlcGVhdGVkRmllbGRzXywgbnVsbCk7XG59O1xuZ29vZy5pbmhlcml0cyhwcm90by50by52MS5Ub0FjdGlvbkRldGFpbFJlcGx5LCBqc3BiLk1lc3NhZ2UpO1xuaWYgKGdvb2cuREVCVUcgJiYgIUNPTVBJTEVEKSB7XG4gIC8qKlxuICAgKiBAcHVibGljXG4gICAqIEBvdmVycmlkZVxuICAgKi9cbiAgcHJvdG8udG8udjEuVG9BY3Rpb25EZXRhaWxSZXBseS5kaXNwbGF5TmFtZSA9ICdwcm90by50by52MS5Ub0FjdGlvbkRldGFpbFJlcGx5Jztcbn1cbi8qKlxuICogR2VuZXJhdGVkIGJ5IEpzUGJDb2RlR2VuZXJhdG9yLlxuICogQHBhcmFtIHtBcnJheT19IG9wdF9kYXRhIE9wdGlvbmFsIGluaXRpYWwgZGF0YSBhcnJheSwgdHlwaWNhbGx5IGZyb20gYVxuICogc2VydmVyIHJlc3BvbnNlLCBvciBjb25zdHJ1Y3RlZCBkaXJlY3RseSBpbiBKYXZhc2NyaXB0LiBUaGUgYXJyYXkgaXMgdXNlZFxuICogaW4gcGxhY2UgYW5kIGJlY29tZXMgcGFydCBvZiB0aGUgY29uc3RydWN0ZWQgb2JqZWN0LiBJdCBpcyBub3QgY2xvbmVkLlxuICogSWYgbm8gZGF0YSBpcyBwcm92aWRlZCwgdGhlIGNvbnN0cnVjdGVkIG9iamVjdCB3aWxsIGJlIGVtcHR5LCBidXQgc3RpbGxcbiAqIHZhbGlkLlxuICogQGV4dGVuZHMge2pzcGIuTWVzc2FnZX1cbiAqIEBjb25zdHJ1Y3RvclxuICovXG5wcm90by50by52MS5Ub01hcEluZm8gPSBmdW5jdGlvbihvcHRfZGF0YSkge1xuICBqc3BiLk1lc3NhZ2UuaW5pdGlhbGl6ZSh0aGlzLCBvcHRfZGF0YSwgMCwgLTEsIG51bGwsIG51bGwpO1xufTtcbmdvb2cuaW5oZXJpdHMocHJvdG8udG8udjEuVG9NYXBJbmZvLCBqc3BiLk1lc3NhZ2UpO1xuaWYgKGdvb2cuREVCVUcgJiYgIUNPTVBJTEVEKSB7XG4gIC8qKlxuICAgKiBAcHVibGljXG4gICAqIEBvdmVycmlkZVxuICAgKi9cbiAgcHJvdG8udG8udjEuVG9NYXBJbmZvLmRpc3BsYXlOYW1lID0gJ3Byb3RvLnRvLnYxLlRvTWFwSW5mbyc7XG59XG4vKipcbiAqIEdlbmVyYXRlZCBieSBKc1BiQ29kZUdlbmVyYXRvci5cbiAqIEBwYXJhbSB7QXJyYXk9fSBvcHRfZGF0YSBPcHRpb25hbCBpbml0aWFsIGRhdGEgYXJyYXksIHR5cGljYWxseSBmcm9tIGFcbiAqIHNlcnZlciByZXNwb25zZSwgb3IgY29uc3RydWN0ZWQgZGlyZWN0bHkgaW4gSmF2YXNjcmlwdC4gVGhlIGFycmF5IGlzIHVzZWRcbiAqIGluIHBsYWNlIGFuZCBiZWNvbWVzIHBhcnQgb2YgdGhlIGNvbnN0cnVjdGVkIG9iamVjdC4gSXQgaXMgbm90IGNsb25lZC5cbiAqIElmIG5vIGRhdGEgaXMgcHJvdmlkZWQsIHRoZSBjb25zdHJ1Y3RlZCBvYmplY3Qgd2lsbCBiZSBlbXB0eSwgYnV0IHN0aWxsXG4gKiB2YWxpZC5cbiAqIEBleHRlbmRzIHtqc3BiLk1lc3NhZ2V9XG4gKiBAY29uc3RydWN0b3JcbiAqL1xucHJvdG8udG8udjEuVG9BY3Rpb25Vc2Vyc0RldGFpbFJlcGx5ID0gZnVuY3Rpb24ob3B0X2RhdGEpIHtcbiAganNwYi5NZXNzYWdlLmluaXRpYWxpemUodGhpcywgb3B0X2RhdGEsIDAsIC0xLCBwcm90by50by52MS5Ub0FjdGlvblVzZXJzRGV0YWlsUmVwbHkucmVwZWF0ZWRGaWVsZHNfLCBudWxsKTtcbn07XG5nb29nLmluaGVyaXRzKHByb3RvLnRvLnYxLlRvQWN0aW9uVXNlcnNEZXRhaWxSZXBseSwganNwYi5NZXNzYWdlKTtcbmlmIChnb29nLkRFQlVHICYmICFDT01QSUxFRCkge1xuICAvKipcbiAgICogQHB1YmxpY1xuICAgKiBAb3ZlcnJpZGVcbiAgICovXG4gIHByb3RvLnRvLnYxLlRvQWN0aW9uVXNlcnNEZXRhaWxSZXBseS5kaXNwbGF5TmFtZSA9ICdwcm90by50by52MS5Ub0FjdGlvblVzZXJzRGV0YWlsUmVwbHknO1xufVxuLyoqXG4gKiBHZW5lcmF0ZWQgYnkgSnNQYkNvZGVHZW5lcmF0b3IuXG4gKiBAcGFyYW0ge0FycmF5PX0gb3B0X2RhdGEgT3B0aW9uYWwgaW5pdGlhbCBkYXRhIGFycmF5LCB0eXBpY2FsbHkgZnJvbSBhXG4gKiBzZXJ2ZXIgcmVzcG9uc2UsIG9yIGNvbnN0cnVjdGVkIGRpcmVjdGx5IGluIEphdmFzY3JpcHQuIFRoZSBhcnJheSBpcyB1c2VkXG4gKiBpbiBwbGFjZSBhbmQgYmVjb21lcyBwYXJ0IG9mIHRoZSBjb25zdHJ1Y3RlZCBvYmplY3QuIEl0IGlzIG5vdCBjbG9uZWQuXG4gKiBJZiBubyBkYXRhIGlzIHByb3ZpZGVkLCB0aGUgY29uc3RydWN0ZWQgb2JqZWN0IHdpbGwgYmUgZW1wdHksIGJ1dCBzdGlsbFxuICogdmFsaWQuXG4gKiBAZXh0ZW5kcyB7anNwYi5NZXNzYWdlfVxuICogQGNvbnN0cnVjdG9yXG4gKi9cbnByb3RvLnRvLnYxLlVzZXJJbkdhbWVJbmZvID0gZnVuY3Rpb24ob3B0X2RhdGEpIHtcbiAganNwYi5NZXNzYWdlLmluaXRpYWxpemUodGhpcywgb3B0X2RhdGEsIDAsIC0xLCBudWxsLCBudWxsKTtcbn07XG5nb29nLmluaGVyaXRzKHByb3RvLnRvLnYxLlVzZXJJbkdhbWVJbmZvLCBqc3BiLk1lc3NhZ2UpO1xuaWYgKGdvb2cuREVCVUcgJiYgIUNPTVBJTEVEKSB7XG4gIC8qKlxuICAgKiBAcHVibGljXG4gICAqIEBvdmVycmlkZVxuICAgKi9cbiAgcHJvdG8udG8udjEuVXNlckluR2FtZUluZm8uZGlzcGxheU5hbWUgPSAncHJvdG8udG8udjEuVXNlckluR2FtZUluZm8nO1xufVxuLyoqXG4gKiBHZW5lcmF0ZWQgYnkgSnNQYkNvZGVHZW5lcmF0b3IuXG4gKiBAcGFyYW0ge0FycmF5PX0gb3B0X2RhdGEgT3B0aW9uYWwgaW5pdGlhbCBkYXRhIGFycmF5LCB0eXBpY2FsbHkgZnJvbSBhXG4gKiBzZXJ2ZXIgcmVzcG9uc2UsIG9yIGNvbnN0cnVjdGVkIGRpcmVjdGx5IGluIEphdmFzY3JpcHQuIFRoZSBhcnJheSBpcyB1c2VkXG4gKiBpbiBwbGFjZSBhbmQgYmVjb21lcyBwYXJ0IG9mIHRoZSBjb25zdHJ1Y3RlZCBvYmplY3QuIEl0IGlzIG5vdCBjbG9uZWQuXG4gKiBJZiBubyBkYXRhIGlzIHByb3ZpZGVkLCB0aGUgY29uc3RydWN0ZWQgb2JqZWN0IHdpbGwgYmUgZW1wdHksIGJ1dCBzdGlsbFxuICogdmFsaWQuXG4gKiBAZXh0ZW5kcyB7anNwYi5NZXNzYWdlfVxuICogQGNvbnN0cnVjdG9yXG4gKi9cbnByb3RvLnRvLnYxLlRvQW55VXNlckhpc3RvcnlHcHNRdWVyeVJlcXVlc3QgPSBmdW5jdGlvbihvcHRfZGF0YSkge1xuICBqc3BiLk1lc3NhZ2UuaW5pdGlhbGl6ZSh0aGlzLCBvcHRfZGF0YSwgMCwgLTEsIHByb3RvLnRvLnYxLlRvQW55VXNlckhpc3RvcnlHcHNRdWVyeVJlcXVlc3QucmVwZWF0ZWRGaWVsZHNfLCBudWxsKTtcbn07XG5nb29nLmluaGVyaXRzKHByb3RvLnRvLnYxLlRvQW55VXNlckhpc3RvcnlHcHNRdWVyeVJlcXVlc3QsIGpzcGIuTWVzc2FnZSk7XG5pZiAoZ29vZy5ERUJVRyAmJiAhQ09NUElMRUQpIHtcbiAgLyoqXG4gICAqIEBwdWJsaWNcbiAgICogQG92ZXJyaWRlXG4gICAqL1xuICBwcm90by50by52MS5Ub0FueVVzZXJIaXN0b3J5R3BzUXVlcnlSZXF1ZXN0LmRpc3BsYXlOYW1lID0gJ3Byb3RvLnRvLnYxLlRvQW55VXNlckhpc3RvcnlHcHNRdWVyeVJlcXVlc3QnO1xufVxuLyoqXG4gKiBHZW5lcmF0ZWQgYnkgSnNQYkNvZGVHZW5lcmF0b3IuXG4gKiBAcGFyYW0ge0FycmF5PX0gb3B0X2RhdGEgT3B0aW9uYWwgaW5pdGlhbCBkYXRhIGFycmF5LCB0eXBpY2FsbHkgZnJvbSBhXG4gKiBzZXJ2ZXIgcmVzcG9uc2UsIG9yIGNvbnN0cnVjdGVkIGRpcmVjdGx5IGluIEphdmFzY3JpcHQuIFRoZSBhcnJheSBpcyB1c2VkXG4gKiBpbiBwbGFjZSBhbmQgYmVjb21lcyBwYXJ0IG9mIHRoZSBjb25zdHJ1Y3RlZCBvYmplY3QuIEl0IGlzIG5vdCBjbG9uZWQuXG4gKiBJZiBubyBkYXRhIGlzIHByb3ZpZGVkLCB0aGUgY29uc3RydWN0ZWQgb2JqZWN0IHdpbGwgYmUgZW1wdHksIGJ1dCBzdGlsbFxuICogdmFsaWQuXG4gKiBAZXh0ZW5kcyB7anNwYi5NZXNzYWdlfVxuICogQGNvbnN0cnVjdG9yXG4gKi9cbnByb3RvLnRvLnYxLlRvVXNlcnNJbkdhbWVIaXN0b3J5R3BzUXVlcnlSZXF1ZXN0ID0gZnVuY3Rpb24ob3B0X2RhdGEpIHtcbiAganNwYi5NZXNzYWdlLmluaXRpYWxpemUodGhpcywgb3B0X2RhdGEsIDAsIC0xLCBudWxsLCBudWxsKTtcbn07XG5nb29nLmluaGVyaXRzKHByb3RvLnRvLnYxLlRvVXNlcnNJbkdhbWVIaXN0b3J5R3BzUXVlcnlSZXF1ZXN0LCBqc3BiLk1lc3NhZ2UpO1xuaWYgKGdvb2cuREVCVUcgJiYgIUNPTVBJTEVEKSB7XG4gIC8qKlxuICAgKiBAcHVibGljXG4gICAqIEBvdmVycmlkZVxuICAgKi9cbiAgcHJvdG8udG8udjEuVG9Vc2Vyc0luR2FtZUhpc3RvcnlHcHNRdWVyeVJlcXVlc3QuZGlzcGxheU5hbWUgPSAncHJvdG8udG8udjEuVG9Vc2Vyc0luR2FtZUhpc3RvcnlHcHNRdWVyeVJlcXVlc3QnO1xufVxuLyoqXG4gKiBHZW5lcmF0ZWQgYnkgSnNQYkNvZGVHZW5lcmF0b3IuXG4gKiBAcGFyYW0ge0FycmF5PX0gb3B0X2RhdGEgT3B0aW9uYWwgaW5pdGlhbCBkYXRhIGFycmF5LCB0eXBpY2FsbHkgZnJvbSBhXG4gKiBzZXJ2ZXIgcmVzcG9uc2UsIG9yIGNvbnN0cnVjdGVkIGRpcmVjdGx5IGluIEphdmFzY3JpcHQuIFRoZSBhcnJheSBpcyB1c2VkXG4gKiBpbiBwbGFjZSBhbmQgYmVjb21lcyBwYXJ0IG9mIHRoZSBjb25zdHJ1Y3RlZCBvYmplY3QuIEl0IGlzIG5vdCBjbG9uZWQuXG4gKiBJZiBubyBkYXRhIGlzIHByb3ZpZGVkLCB0aGUgY29uc3RydWN0ZWQgb2JqZWN0IHdpbGwgYmUgZW1wdHksIGJ1dCBzdGlsbFxuICogdmFsaWQuXG4gKiBAZXh0ZW5kcyB7anNwYi5NZXNzYWdlfVxuICogQGNvbnN0cnVjdG9yXG4gKi9cbnByb3RvLnRvLnYxLlRvVXNlckdwc1F1ZXJ5UmVwbHkgPSBmdW5jdGlvbihvcHRfZGF0YSkge1xuICBqc3BiLk1lc3NhZ2UuaW5pdGlhbGl6ZSh0aGlzLCBvcHRfZGF0YSwgMCwgLTEsIHByb3RvLnRvLnYxLlRvVXNlckdwc1F1ZXJ5UmVwbHkucmVwZWF0ZWRGaWVsZHNfLCBudWxsKTtcbn07XG5nb29nLmluaGVyaXRzKHByb3RvLnRvLnYxLlRvVXNlckdwc1F1ZXJ5UmVwbHksIGpzcGIuTWVzc2FnZSk7XG5pZiAoZ29vZy5ERUJVRyAmJiAhQ09NUElMRUQpIHtcbiAgLyoqXG4gICAqIEBwdWJsaWNcbiAgICogQG92ZXJyaWRlXG4gICAqL1xuICBwcm90by50by52MS5Ub1VzZXJHcHNRdWVyeVJlcGx5LmRpc3BsYXlOYW1lID0gJ3Byb3RvLnRvLnYxLlRvVXNlckdwc1F1ZXJ5UmVwbHknO1xufVxuLyoqXG4gKiBHZW5lcmF0ZWQgYnkgSnNQYkNvZGVHZW5lcmF0b3IuXG4gKiBAcGFyYW0ge0FycmF5PX0gb3B0X2RhdGEgT3B0aW9uYWwgaW5pdGlhbCBkYXRhIGFycmF5LCB0eXBpY2FsbHkgZnJvbSBhXG4gKiBzZXJ2ZXIgcmVzcG9uc2UsIG9yIGNvbnN0cnVjdGVkIGRpcmVjdGx5IGluIEphdmFzY3JpcHQuIFRoZSBhcnJheSBpcyB1c2VkXG4gKiBpbiBwbGFjZSBhbmQgYmVjb21lcyBwYXJ0IG9mIHRoZSBjb25zdHJ1Y3RlZCBvYmplY3QuIEl0IGlzIG5vdCBjbG9uZWQuXG4gKiBJZiBubyBkYXRhIGlzIHByb3ZpZGVkLCB0aGUgY29uc3RydWN0ZWQgb2JqZWN0IHdpbGwgYmUgZW1wdHksIGJ1dCBzdGlsbFxuICogdmFsaWQuXG4gKiBAZXh0ZW5kcyB7anNwYi5NZXNzYWdlfVxuICogQGNvbnN0cnVjdG9yXG4gKi9cbnByb3RvLnRvLnYxLlVzZXJHcHNJbmZvID0gZnVuY3Rpb24ob3B0X2RhdGEpIHtcbiAganNwYi5NZXNzYWdlLmluaXRpYWxpemUodGhpcywgb3B0X2RhdGEsIDAsIC0xLCBudWxsLCBudWxsKTtcbn07XG5nb29nLmluaGVyaXRzKHByb3RvLnRvLnYxLlVzZXJHcHNJbmZvLCBqc3BiLk1lc3NhZ2UpO1xuaWYgKGdvb2cuREVCVUcgJiYgIUNPTVBJTEVEKSB7XG4gIC8qKlxuICAgKiBAcHVibGljXG4gICAqIEBvdmVycmlkZVxuICAgKi9cbiAgcHJvdG8udG8udjEuVXNlckdwc0luZm8uZGlzcGxheU5hbWUgPSAncHJvdG8udG8udjEuVXNlckdwc0luZm8nO1xufVxuLyoqXG4gKiBHZW5lcmF0ZWQgYnkgSnNQYkNvZGVHZW5lcmF0b3IuXG4gKiBAcGFyYW0ge0FycmF5PX0gb3B0X2RhdGEgT3B0aW9uYWwgaW5pdGlhbCBkYXRhIGFycmF5LCB0eXBpY2FsbHkgZnJvbSBhXG4gKiBzZXJ2ZXIgcmVzcG9uc2UsIG9yIGNvbnN0cnVjdGVkIGRpcmVjdGx5IGluIEphdmFzY3JpcHQuIFRoZSBhcnJheSBpcyB1c2VkXG4gKiBpbiBwbGFjZSBhbmQgYmVjb21lcyBwYXJ0IG9mIHRoZSBjb25zdHJ1Y3RlZCBvYmplY3QuIEl0IGlzIG5vdCBjbG9uZWQuXG4gKiBJZiBubyBkYXRhIGlzIHByb3ZpZGVkLCB0aGUgY29uc3RydWN0ZWQgb2JqZWN0IHdpbGwgYmUgZW1wdHksIGJ1dCBzdGlsbFxuICogdmFsaWQuXG4gKiBAZXh0ZW5kcyB7anNwYi5NZXNzYWdlfVxuICogQGNvbnN0cnVjdG9yXG4gKi9cbnByb3RvLnRvLnYxLlVzZXJBcnJpdmVDb250cm9sUG9pbnQgPSBmdW5jdGlvbihvcHRfZGF0YSkge1xuICBqc3BiLk1lc3NhZ2UuaW5pdGlhbGl6ZSh0aGlzLCBvcHRfZGF0YSwgMCwgLTEsIG51bGwsIG51bGwpO1xufTtcbmdvb2cuaW5oZXJpdHMocHJvdG8udG8udjEuVXNlckFycml2ZUNvbnRyb2xQb2ludCwganNwYi5NZXNzYWdlKTtcbmlmIChnb29nLkRFQlVHICYmICFDT01QSUxFRCkge1xuICAvKipcbiAgICogQHB1YmxpY1xuICAgKiBAb3ZlcnJpZGVcbiAgICovXG4gIHByb3RvLnRvLnYxLlVzZXJBcnJpdmVDb250cm9sUG9pbnQuZGlzcGxheU5hbWUgPSAncHJvdG8udG8udjEuVXNlckFycml2ZUNvbnRyb2xQb2ludCc7XG59XG5cbi8qKlxuICogTGlzdCBvZiByZXBlYXRlZCBmaWVsZHMgd2l0aGluIHRoaXMgbWVzc2FnZSB0eXBlLlxuICogQHByaXZhdGUgeyFBcnJheTxudW1iZXI+fVxuICogQGNvbnN0XG4gKi9cbnByb3RvLnRvLnYxLlRvQWN0aW9uTGlzdFJlcGx5LnJlcGVhdGVkRmllbGRzXyA9IFsxXTtcblxuXG5cbmlmIChqc3BiLk1lc3NhZ2UuR0VORVJBVEVfVE9fT0JKRUNUKSB7XG4vKipcbiAqIENyZWF0ZXMgYW4gb2JqZWN0IHJlcHJlc2VudGF0aW9uIG9mIHRoaXMgcHJvdG8uXG4gKiBGaWVsZCBuYW1lcyB0aGF0IGFyZSByZXNlcnZlZCBpbiBKYXZhU2NyaXB0IGFuZCB3aWxsIGJlIHJlbmFtZWQgdG8gcGJfbmFtZS5cbiAqIE9wdGlvbmFsIGZpZWxkcyB0aGF0IGFyZSBub3Qgc2V0IHdpbGwgYmUgc2V0IHRvIHVuZGVmaW5lZC5cbiAqIFRvIGFjY2VzcyBhIHJlc2VydmVkIGZpZWxkIHVzZSwgZm9vLnBiXzxuYW1lPiwgZWcsIGZvby5wYl9kZWZhdWx0LlxuICogRm9yIHRoZSBsaXN0IG9mIHJlc2VydmVkIG5hbWVzIHBsZWFzZSBzZWU6XG4gKiAgICAgbmV0L3Byb3RvMi9jb21waWxlci9qcy9pbnRlcm5hbC9nZW5lcmF0b3IuY2Mja0tleXdvcmQuXG4gKiBAcGFyYW0ge2Jvb2xlYW49fSBvcHRfaW5jbHVkZUluc3RhbmNlIERlcHJlY2F0ZWQuIHdoZXRoZXIgdG8gaW5jbHVkZSB0aGVcbiAqICAgICBKU1BCIGluc3RhbmNlIGZvciB0cmFuc2l0aW9uYWwgc295IHByb3RvIHN1cHBvcnQ6XG4gKiAgICAgaHR0cDovL2dvdG8vc295LXBhcmFtLW1pZ3JhdGlvblxuICogQHJldHVybiB7IU9iamVjdH1cbiAqL1xucHJvdG8udG8udjEuVG9BY3Rpb25MaXN0UmVwbHkucHJvdG90eXBlLnRvT2JqZWN0ID0gZnVuY3Rpb24ob3B0X2luY2x1ZGVJbnN0YW5jZSkge1xuICByZXR1cm4gcHJvdG8udG8udjEuVG9BY3Rpb25MaXN0UmVwbHkudG9PYmplY3Qob3B0X2luY2x1ZGVJbnN0YW5jZSwgdGhpcyk7XG59O1xuXG5cbi8qKlxuICogU3RhdGljIHZlcnNpb24gb2YgdGhlIHtAc2VlIHRvT2JqZWN0fSBtZXRob2QuXG4gKiBAcGFyYW0ge2Jvb2xlYW58dW5kZWZpbmVkfSBpbmNsdWRlSW5zdGFuY2UgRGVwcmVjYXRlZC4gV2hldGhlciB0byBpbmNsdWRlXG4gKiAgICAgdGhlIEpTUEIgaW5zdGFuY2UgZm9yIHRyYW5zaXRpb25hbCBzb3kgcHJvdG8gc3VwcG9ydDpcbiAqICAgICBodHRwOi8vZ290by9zb3ktcGFyYW0tbWlncmF0aW9uXG4gKiBAcGFyYW0geyFwcm90by50by52MS5Ub0FjdGlvbkxpc3RSZXBseX0gbXNnIFRoZSBtc2cgaW5zdGFuY2UgdG8gdHJhbnNmb3JtLlxuICogQHJldHVybiB7IU9iamVjdH1cbiAqIEBzdXBwcmVzcyB7dW51c2VkTG9jYWxWYXJpYWJsZXN9IGYgaXMgb25seSB1c2VkIGZvciBuZXN0ZWQgbWVzc2FnZXNcbiAqL1xucHJvdG8udG8udjEuVG9BY3Rpb25MaXN0UmVwbHkudG9PYmplY3QgPSBmdW5jdGlvbihpbmNsdWRlSW5zdGFuY2UsIG1zZykge1xuICB2YXIgZiwgb2JqID0ge1xuICAgIGxpc3RMaXN0OiBqc3BiLk1lc3NhZ2UudG9PYmplY3RMaXN0KG1zZy5nZXRMaXN0TGlzdCgpLFxuICAgIHByb3RvLnRvLnYxLlRvQWN0aW9uU2ltcGxlLnRvT2JqZWN0LCBpbmNsdWRlSW5zdGFuY2UpXG4gIH07XG5cbiAgaWYgKGluY2x1ZGVJbnN0YW5jZSkge1xuICAgIG9iai4kanNwYk1lc3NhZ2VJbnN0YW5jZSA9IG1zZztcbiAgfVxuICByZXR1cm4gb2JqO1xufTtcbn1cblxuXG4vKipcbiAqIERlc2VyaWFsaXplcyBiaW5hcnkgZGF0YSAoaW4gcHJvdG9idWYgd2lyZSBmb3JtYXQpLlxuICogQHBhcmFtIHtqc3BiLkJ5dGVTb3VyY2V9IGJ5dGVzIFRoZSBieXRlcyB0byBkZXNlcmlhbGl6ZS5cbiAqIEByZXR1cm4geyFwcm90by50by52MS5Ub0FjdGlvbkxpc3RSZXBseX1cbiAqL1xucHJvdG8udG8udjEuVG9BY3Rpb25MaXN0UmVwbHkuZGVzZXJpYWxpemVCaW5hcnkgPSBmdW5jdGlvbihieXRlcykge1xuICB2YXIgcmVhZGVyID0gbmV3IGpzcGIuQmluYXJ5UmVhZGVyKGJ5dGVzKTtcbiAgdmFyIG1zZyA9IG5ldyBwcm90by50by52MS5Ub0FjdGlvbkxpc3RSZXBseTtcbiAgcmV0dXJuIHByb3RvLnRvLnYxLlRvQWN0aW9uTGlzdFJlcGx5LmRlc2VyaWFsaXplQmluYXJ5RnJvbVJlYWRlcihtc2csIHJlYWRlcik7XG59O1xuXG5cbi8qKlxuICogRGVzZXJpYWxpemVzIGJpbmFyeSBkYXRhIChpbiBwcm90b2J1ZiB3aXJlIGZvcm1hdCkgZnJvbSB0aGVcbiAqIGdpdmVuIHJlYWRlciBpbnRvIHRoZSBnaXZlbiBtZXNzYWdlIG9iamVjdC5cbiAqIEBwYXJhbSB7IXByb3RvLnRvLnYxLlRvQWN0aW9uTGlzdFJlcGx5fSBtc2cgVGhlIG1lc3NhZ2Ugb2JqZWN0IHRvIGRlc2VyaWFsaXplIGludG8uXG4gKiBAcGFyYW0geyFqc3BiLkJpbmFyeVJlYWRlcn0gcmVhZGVyIFRoZSBCaW5hcnlSZWFkZXIgdG8gdXNlLlxuICogQHJldHVybiB7IXByb3RvLnRvLnYxLlRvQWN0aW9uTGlzdFJlcGx5fVxuICovXG5wcm90by50by52MS5Ub0FjdGlvbkxpc3RSZXBseS5kZXNlcmlhbGl6ZUJpbmFyeUZyb21SZWFkZXIgPSBmdW5jdGlvbihtc2csIHJlYWRlcikge1xuICB3aGlsZSAocmVhZGVyLm5leHRGaWVsZCgpKSB7XG4gICAgaWYgKHJlYWRlci5pc0VuZEdyb3VwKCkpIHtcbiAgICAgIGJyZWFrO1xuICAgIH1cbiAgICB2YXIgZmllbGQgPSByZWFkZXIuZ2V0RmllbGROdW1iZXIoKTtcbiAgICBzd2l0Y2ggKGZpZWxkKSB7XG4gICAgY2FzZSAxOlxuICAgICAgdmFyIHZhbHVlID0gbmV3IHByb3RvLnRvLnYxLlRvQWN0aW9uU2ltcGxlO1xuICAgICAgcmVhZGVyLnJlYWRNZXNzYWdlKHZhbHVlLHByb3RvLnRvLnYxLlRvQWN0aW9uU2ltcGxlLmRlc2VyaWFsaXplQmluYXJ5RnJvbVJlYWRlcik7XG4gICAgICBtc2cuYWRkTGlzdCh2YWx1ZSk7XG4gICAgICBicmVhaztcbiAgICBkZWZhdWx0OlxuICAgICAgcmVhZGVyLnNraXBGaWVsZCgpO1xuICAgICAgYnJlYWs7XG4gICAgfVxuICB9XG4gIHJldHVybiBtc2c7XG59O1xuXG5cbi8qKlxuICogU2VyaWFsaXplcyB0aGUgbWVzc2FnZSB0byBiaW5hcnkgZGF0YSAoaW4gcHJvdG9idWYgd2lyZSBmb3JtYXQpLlxuICogQHJldHVybiB7IVVpbnQ4QXJyYXl9XG4gKi9cbnByb3RvLnRvLnYxLlRvQWN0aW9uTGlzdFJlcGx5LnByb3RvdHlwZS5zZXJpYWxpemVCaW5hcnkgPSBmdW5jdGlvbigpIHtcbiAgdmFyIHdyaXRlciA9IG5ldyBqc3BiLkJpbmFyeVdyaXRlcigpO1xuICBwcm90by50by52MS5Ub0FjdGlvbkxpc3RSZXBseS5zZXJpYWxpemVCaW5hcnlUb1dyaXRlcih0aGlzLCB3cml0ZXIpO1xuICByZXR1cm4gd3JpdGVyLmdldFJlc3VsdEJ1ZmZlcigpO1xufTtcblxuXG4vKipcbiAqIFNlcmlhbGl6ZXMgdGhlIGdpdmVuIG1lc3NhZ2UgdG8gYmluYXJ5IGRhdGEgKGluIHByb3RvYnVmIHdpcmVcbiAqIGZvcm1hdCksIHdyaXRpbmcgdG8gdGhlIGdpdmVuIEJpbmFyeVdyaXRlci5cbiAqIEBwYXJhbSB7IXByb3RvLnRvLnYxLlRvQWN0aW9uTGlzdFJlcGx5fSBtZXNzYWdlXG4gKiBAcGFyYW0geyFqc3BiLkJpbmFyeVdyaXRlcn0gd3JpdGVyXG4gKiBAc3VwcHJlc3Mge3VudXNlZExvY2FsVmFyaWFibGVzfSBmIGlzIG9ubHkgdXNlZCBmb3IgbmVzdGVkIG1lc3NhZ2VzXG4gKi9cbnByb3RvLnRvLnYxLlRvQWN0aW9uTGlzdFJlcGx5LnNlcmlhbGl6ZUJpbmFyeVRvV3JpdGVyID0gZnVuY3Rpb24obWVzc2FnZSwgd3JpdGVyKSB7XG4gIHZhciBmID0gdW5kZWZpbmVkO1xuICBmID0gbWVzc2FnZS5nZXRMaXN0TGlzdCgpO1xuICBpZiAoZi5sZW5ndGggPiAwKSB7XG4gICAgd3JpdGVyLndyaXRlUmVwZWF0ZWRNZXNzYWdlKFxuICAgICAgMSxcbiAgICAgIGYsXG4gICAgICBwcm90by50by52MS5Ub0FjdGlvblNpbXBsZS5zZXJpYWxpemVCaW5hcnlUb1dyaXRlclxuICAgICk7XG4gIH1cbn07XG5cblxuLyoqXG4gKiByZXBlYXRlZCBUb0FjdGlvblNpbXBsZSBsaXN0ID0gMTtcbiAqIEByZXR1cm4geyFBcnJheTwhcHJvdG8udG8udjEuVG9BY3Rpb25TaW1wbGU+fVxuICovXG5wcm90by50by52MS5Ub0FjdGlvbkxpc3RSZXBseS5wcm90b3R5cGUuZ2V0TGlzdExpc3QgPSBmdW5jdGlvbigpIHtcbiAgcmV0dXJuIC8qKiBAdHlwZXshQXJyYXk8IXByb3RvLnRvLnYxLlRvQWN0aW9uU2ltcGxlPn0gKi8gKFxuICAgIGpzcGIuTWVzc2FnZS5nZXRSZXBlYXRlZFdyYXBwZXJGaWVsZCh0aGlzLCBwcm90by50by52MS5Ub0FjdGlvblNpbXBsZSwgMSkpO1xufTtcblxuXG4vKipcbiAqIEBwYXJhbSB7IUFycmF5PCFwcm90by50by52MS5Ub0FjdGlvblNpbXBsZT59IHZhbHVlXG4gKiBAcmV0dXJuIHshcHJvdG8udG8udjEuVG9BY3Rpb25MaXN0UmVwbHl9IHJldHVybnMgdGhpc1xuKi9cbnByb3RvLnRvLnYxLlRvQWN0aW9uTGlzdFJlcGx5LnByb3RvdHlwZS5zZXRMaXN0TGlzdCA9IGZ1bmN0aW9uKHZhbHVlKSB7XG4gIHJldHVybiBqc3BiLk1lc3NhZ2Uuc2V0UmVwZWF0ZWRXcmFwcGVyRmllbGQodGhpcywgMSwgdmFsdWUpO1xufTtcblxuXG4vKipcbiAqIEBwYXJhbSB7IXByb3RvLnRvLnYxLlRvQWN0aW9uU2ltcGxlPX0gb3B0X3ZhbHVlXG4gKiBAcGFyYW0ge251bWJlcj19IG9wdF9pbmRleFxuICogQHJldHVybiB7IXByb3RvLnRvLnYxLlRvQWN0aW9uU2ltcGxlfVxuICovXG5wcm90by50by52MS5Ub0FjdGlvbkxpc3RSZXBseS5wcm90b3R5cGUuYWRkTGlzdCA9IGZ1bmN0aW9uKG9wdF92YWx1ZSwgb3B0X2luZGV4KSB7XG4gIHJldHVybiBqc3BiLk1lc3NhZ2UuYWRkVG9SZXBlYXRlZFdyYXBwZXJGaWVsZCh0aGlzLCAxLCBvcHRfdmFsdWUsIHByb3RvLnRvLnYxLlRvQWN0aW9uU2ltcGxlLCBvcHRfaW5kZXgpO1xufTtcblxuXG4vKipcbiAqIENsZWFycyB0aGUgbGlzdCBtYWtpbmcgaXQgZW1wdHkgYnV0IG5vbi1udWxsLlxuICogQHJldHVybiB7IXByb3RvLnRvLnYxLlRvQWN0aW9uTGlzdFJlcGx5fSByZXR1cm5zIHRoaXNcbiAqL1xucHJvdG8udG8udjEuVG9BY3Rpb25MaXN0UmVwbHkucHJvdG90eXBlLmNsZWFyTGlzdExpc3QgPSBmdW5jdGlvbigpIHtcbiAgcmV0dXJuIHRoaXMuc2V0TGlzdExpc3QoW10pO1xufTtcblxuXG5cblxuXG5pZiAoanNwYi5NZXNzYWdlLkdFTkVSQVRFX1RPX09CSkVDVCkge1xuLyoqXG4gKiBDcmVhdGVzIGFuIG9iamVjdCByZXByZXNlbnRhdGlvbiBvZiB0aGlzIHByb3RvLlxuICogRmllbGQgbmFtZXMgdGhhdCBhcmUgcmVzZXJ2ZWQgaW4gSmF2YVNjcmlwdCBhbmQgd2lsbCBiZSByZW5hbWVkIHRvIHBiX25hbWUuXG4gKiBPcHRpb25hbCBmaWVsZHMgdGhhdCBhcmUgbm90IHNldCB3aWxsIGJlIHNldCB0byB1bmRlZmluZWQuXG4gKiBUbyBhY2Nlc3MgYSByZXNlcnZlZCBmaWVsZCB1c2UsIGZvby5wYl88bmFtZT4sIGVnLCBmb28ucGJfZGVmYXVsdC5cbiAqIEZvciB0aGUgbGlzdCBvZiByZXNlcnZlZCBuYW1lcyBwbGVhc2Ugc2VlOlxuICogICAgIG5ldC9wcm90bzIvY29tcGlsZXIvanMvaW50ZXJuYWwvZ2VuZXJhdG9yLmNjI2tLZXl3b3JkLlxuICogQHBhcmFtIHtib29sZWFuPX0gb3B0X2luY2x1ZGVJbnN0YW5jZSBEZXByZWNhdGVkLiB3aGV0aGVyIHRvIGluY2x1ZGUgdGhlXG4gKiAgICAgSlNQQiBpbnN0YW5jZSBmb3IgdHJhbnNpdGlvbmFsIHNveSBwcm90byBzdXBwb3J0OlxuICogICAgIGh0dHA6Ly9nb3RvL3NveS1wYXJhbS1taWdyYXRpb25cbiAqIEByZXR1cm4geyFPYmplY3R9XG4gKi9cbnByb3RvLnRvLnYxLlRvQWN0aW9uU2ltcGxlLnByb3RvdHlwZS50b09iamVjdCA9IGZ1bmN0aW9uKG9wdF9pbmNsdWRlSW5zdGFuY2UpIHtcbiAgcmV0dXJuIHByb3RvLnRvLnYxLlRvQWN0aW9uU2ltcGxlLnRvT2JqZWN0KG9wdF9pbmNsdWRlSW5zdGFuY2UsIHRoaXMpO1xufTtcblxuXG4vKipcbiAqIFN0YXRpYyB2ZXJzaW9uIG9mIHRoZSB7QHNlZSB0b09iamVjdH0gbWV0aG9kLlxuICogQHBhcmFtIHtib29sZWFufHVuZGVmaW5lZH0gaW5jbHVkZUluc3RhbmNlIERlcHJlY2F0ZWQuIFdoZXRoZXIgdG8gaW5jbHVkZVxuICogICAgIHRoZSBKU1BCIGluc3RhbmNlIGZvciB0cmFuc2l0aW9uYWwgc295IHByb3RvIHN1cHBvcnQ6XG4gKiAgICAgaHR0cDovL2dvdG8vc295LXBhcmFtLW1pZ3JhdGlvblxuICogQHBhcmFtIHshcHJvdG8udG8udjEuVG9BY3Rpb25TaW1wbGV9IG1zZyBUaGUgbXNnIGluc3RhbmNlIHRvIHRyYW5zZm9ybS5cbiAqIEByZXR1cm4geyFPYmplY3R9XG4gKiBAc3VwcHJlc3Mge3VudXNlZExvY2FsVmFyaWFibGVzfSBmIGlzIG9ubHkgdXNlZCBmb3IgbmVzdGVkIG1lc3NhZ2VzXG4gKi9cbnByb3RvLnRvLnYxLlRvQWN0aW9uU2ltcGxlLnRvT2JqZWN0ID0gZnVuY3Rpb24oaW5jbHVkZUluc3RhbmNlLCBtc2cpIHtcbiAgdmFyIGYsIG9iaiA9IHtcbiAgICBpZDoganNwYi5NZXNzYWdlLmdldEZpZWxkV2l0aERlZmF1bHQobXNnLCAxLCAwKSxcbiAgICBuYW1lOiBqc3BiLk1lc3NhZ2UuZ2V0RmllbGRXaXRoRGVmYXVsdChtc2csIDIsIFwiXCIpXG4gIH07XG5cbiAgaWYgKGluY2x1ZGVJbnN0YW5jZSkge1xuICAgIG9iai4kanNwYk1lc3NhZ2VJbnN0YW5jZSA9IG1zZztcbiAgfVxuICByZXR1cm4gb2JqO1xufTtcbn1cblxuXG4vKipcbiAqIERlc2VyaWFsaXplcyBiaW5hcnkgZGF0YSAoaW4gcHJvdG9idWYgd2lyZSBmb3JtYXQpLlxuICogQHBhcmFtIHtqc3BiLkJ5dGVTb3VyY2V9IGJ5dGVzIFRoZSBieXRlcyB0byBkZXNlcmlhbGl6ZS5cbiAqIEByZXR1cm4geyFwcm90by50by52MS5Ub0FjdGlvblNpbXBsZX1cbiAqL1xucHJvdG8udG8udjEuVG9BY3Rpb25TaW1wbGUuZGVzZXJpYWxpemVCaW5hcnkgPSBmdW5jdGlvbihieXRlcykge1xuICB2YXIgcmVhZGVyID0gbmV3IGpzcGIuQmluYXJ5UmVhZGVyKGJ5dGVzKTtcbiAgdmFyIG1zZyA9IG5ldyBwcm90by50by52MS5Ub0FjdGlvblNpbXBsZTtcbiAgcmV0dXJuIHByb3RvLnRvLnYxLlRvQWN0aW9uU2ltcGxlLmRlc2VyaWFsaXplQmluYXJ5RnJvbVJlYWRlcihtc2csIHJlYWRlcik7XG59O1xuXG5cbi8qKlxuICogRGVzZXJpYWxpemVzIGJpbmFyeSBkYXRhIChpbiBwcm90b2J1ZiB3aXJlIGZvcm1hdCkgZnJvbSB0aGVcbiAqIGdpdmVuIHJlYWRlciBpbnRvIHRoZSBnaXZlbiBtZXNzYWdlIG9iamVjdC5cbiAqIEBwYXJhbSB7IXByb3RvLnRvLnYxLlRvQWN0aW9uU2ltcGxlfSBtc2cgVGhlIG1lc3NhZ2Ugb2JqZWN0IHRvIGRlc2VyaWFsaXplIGludG8uXG4gKiBAcGFyYW0geyFqc3BiLkJpbmFyeVJlYWRlcn0gcmVhZGVyIFRoZSBCaW5hcnlSZWFkZXIgdG8gdXNlLlxuICogQHJldHVybiB7IXByb3RvLnRvLnYxLlRvQWN0aW9uU2ltcGxlfVxuICovXG5wcm90by50by52MS5Ub0FjdGlvblNpbXBsZS5kZXNlcmlhbGl6ZUJpbmFyeUZyb21SZWFkZXIgPSBmdW5jdGlvbihtc2csIHJlYWRlcikge1xuICB3aGlsZSAocmVhZGVyLm5leHRGaWVsZCgpKSB7XG4gICAgaWYgKHJlYWRlci5pc0VuZEdyb3VwKCkpIHtcbiAgICAgIGJyZWFrO1xuICAgIH1cbiAgICB2YXIgZmllbGQgPSByZWFkZXIuZ2V0RmllbGROdW1iZXIoKTtcbiAgICBzd2l0Y2ggKGZpZWxkKSB7XG4gICAgY2FzZSAxOlxuICAgICAgdmFyIHZhbHVlID0gLyoqIEB0eXBlIHtudW1iZXJ9ICovIChyZWFkZXIucmVhZEludDMyKCkpO1xuICAgICAgbXNnLnNldElkKHZhbHVlKTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgMjpcbiAgICAgIHZhciB2YWx1ZSA9IC8qKiBAdHlwZSB7c3RyaW5nfSAqLyAocmVhZGVyLnJlYWRTdHJpbmcoKSk7XG4gICAgICBtc2cuc2V0TmFtZSh2YWx1ZSk7XG4gICAgICBicmVhaztcbiAgICBkZWZhdWx0OlxuICAgICAgcmVhZGVyLnNraXBGaWVsZCgpO1xuICAgICAgYnJlYWs7XG4gICAgfVxuICB9XG4gIHJldHVybiBtc2c7XG59O1xuXG5cbi8qKlxuICogU2VyaWFsaXplcyB0aGUgbWVzc2FnZSB0byBiaW5hcnkgZGF0YSAoaW4gcHJvdG9idWYgd2lyZSBmb3JtYXQpLlxuICogQHJldHVybiB7IVVpbnQ4QXJyYXl9XG4gKi9cbnByb3RvLnRvLnYxLlRvQWN0aW9uU2ltcGxlLnByb3RvdHlwZS5zZXJpYWxpemVCaW5hcnkgPSBmdW5jdGlvbigpIHtcbiAgdmFyIHdyaXRlciA9IG5ldyBqc3BiLkJpbmFyeVdyaXRlcigpO1xuICBwcm90by50by52MS5Ub0FjdGlvblNpbXBsZS5zZXJpYWxpemVCaW5hcnlUb1dyaXRlcih0aGlzLCB3cml0ZXIpO1xuICByZXR1cm4gd3JpdGVyLmdldFJlc3VsdEJ1ZmZlcigpO1xufTtcblxuXG4vKipcbiAqIFNlcmlhbGl6ZXMgdGhlIGdpdmVuIG1lc3NhZ2UgdG8gYmluYXJ5IGRhdGEgKGluIHByb3RvYnVmIHdpcmVcbiAqIGZvcm1hdCksIHdyaXRpbmcgdG8gdGhlIGdpdmVuIEJpbmFyeVdyaXRlci5cbiAqIEBwYXJhbSB7IXByb3RvLnRvLnYxLlRvQWN0aW9uU2ltcGxlfSBtZXNzYWdlXG4gKiBAcGFyYW0geyFqc3BiLkJpbmFyeVdyaXRlcn0gd3JpdGVyXG4gKiBAc3VwcHJlc3Mge3VudXNlZExvY2FsVmFyaWFibGVzfSBmIGlzIG9ubHkgdXNlZCBmb3IgbmVzdGVkIG1lc3NhZ2VzXG4gKi9cbnByb3RvLnRvLnYxLlRvQWN0aW9uU2ltcGxlLnNlcmlhbGl6ZUJpbmFyeVRvV3JpdGVyID0gZnVuY3Rpb24obWVzc2FnZSwgd3JpdGVyKSB7XG4gIHZhciBmID0gdW5kZWZpbmVkO1xuICBmID0gbWVzc2FnZS5nZXRJZCgpO1xuICBpZiAoZiAhPT0gMCkge1xuICAgIHdyaXRlci53cml0ZUludDMyKFxuICAgICAgMSxcbiAgICAgIGZcbiAgICApO1xuICB9XG4gIGYgPSBtZXNzYWdlLmdldE5hbWUoKTtcbiAgaWYgKGYubGVuZ3RoID4gMCkge1xuICAgIHdyaXRlci53cml0ZVN0cmluZyhcbiAgICAgIDIsXG4gICAgICBmXG4gICAgKTtcbiAgfVxufTtcblxuXG4vKipcbiAqIG9wdGlvbmFsIGludDMyIGlkID0gMTtcbiAqIEByZXR1cm4ge251bWJlcn1cbiAqL1xucHJvdG8udG8udjEuVG9BY3Rpb25TaW1wbGUucHJvdG90eXBlLmdldElkID0gZnVuY3Rpb24oKSB7XG4gIHJldHVybiAvKiogQHR5cGUge251bWJlcn0gKi8gKGpzcGIuTWVzc2FnZS5nZXRGaWVsZFdpdGhEZWZhdWx0KHRoaXMsIDEsIDApKTtcbn07XG5cblxuLyoqXG4gKiBAcGFyYW0ge251bWJlcn0gdmFsdWVcbiAqIEByZXR1cm4geyFwcm90by50by52MS5Ub0FjdGlvblNpbXBsZX0gcmV0dXJucyB0aGlzXG4gKi9cbnByb3RvLnRvLnYxLlRvQWN0aW9uU2ltcGxlLnByb3RvdHlwZS5zZXRJZCA9IGZ1bmN0aW9uKHZhbHVlKSB7XG4gIHJldHVybiBqc3BiLk1lc3NhZ2Uuc2V0UHJvdG8zSW50RmllbGQodGhpcywgMSwgdmFsdWUpO1xufTtcblxuXG4vKipcbiAqIG9wdGlvbmFsIHN0cmluZyBuYW1lID0gMjtcbiAqIEByZXR1cm4ge3N0cmluZ31cbiAqL1xucHJvdG8udG8udjEuVG9BY3Rpb25TaW1wbGUucHJvdG90eXBlLmdldE5hbWUgPSBmdW5jdGlvbigpIHtcbiAgcmV0dXJuIC8qKiBAdHlwZSB7c3RyaW5nfSAqLyAoanNwYi5NZXNzYWdlLmdldEZpZWxkV2l0aERlZmF1bHQodGhpcywgMiwgXCJcIikpO1xufTtcblxuXG4vKipcbiAqIEBwYXJhbSB7c3RyaW5nfSB2YWx1ZVxuICogQHJldHVybiB7IXByb3RvLnRvLnYxLlRvQWN0aW9uU2ltcGxlfSByZXR1cm5zIHRoaXNcbiAqL1xucHJvdG8udG8udjEuVG9BY3Rpb25TaW1wbGUucHJvdG90eXBlLnNldE5hbWUgPSBmdW5jdGlvbih2YWx1ZSkge1xuICByZXR1cm4ganNwYi5NZXNzYWdlLnNldFByb3RvM1N0cmluZ0ZpZWxkKHRoaXMsIDIsIHZhbHVlKTtcbn07XG5cblxuXG4vKipcbiAqIExpc3Qgb2YgcmVwZWF0ZWQgZmllbGRzIHdpdGhpbiB0aGlzIG1lc3NhZ2UgdHlwZS5cbiAqIEBwcml2YXRlIHshQXJyYXk8bnVtYmVyPn1cbiAqIEBjb25zdFxuICovXG5wcm90by50by52MS5Ub0FjdGlvbkRldGFpbFJlcGx5LnJlcGVhdGVkRmllbGRzXyA9IFs5XTtcblxuXG5cbmlmIChqc3BiLk1lc3NhZ2UuR0VORVJBVEVfVE9fT0JKRUNUKSB7XG4vKipcbiAqIENyZWF0ZXMgYW4gb2JqZWN0IHJlcHJlc2VudGF0aW9uIG9mIHRoaXMgcHJvdG8uXG4gKiBGaWVsZCBuYW1lcyB0aGF0IGFyZSByZXNlcnZlZCBpbiBKYXZhU2NyaXB0IGFuZCB3aWxsIGJlIHJlbmFtZWQgdG8gcGJfbmFtZS5cbiAqIE9wdGlvbmFsIGZpZWxkcyB0aGF0IGFyZSBub3Qgc2V0IHdpbGwgYmUgc2V0IHRvIHVuZGVmaW5lZC5cbiAqIFRvIGFjY2VzcyBhIHJlc2VydmVkIGZpZWxkIHVzZSwgZm9vLnBiXzxuYW1lPiwgZWcsIGZvby5wYl9kZWZhdWx0LlxuICogRm9yIHRoZSBsaXN0IG9mIHJlc2VydmVkIG5hbWVzIHBsZWFzZSBzZWU6XG4gKiAgICAgbmV0L3Byb3RvMi9jb21waWxlci9qcy9pbnRlcm5hbC9nZW5lcmF0b3IuY2Mja0tleXdvcmQuXG4gKiBAcGFyYW0ge2Jvb2xlYW49fSBvcHRfaW5jbHVkZUluc3RhbmNlIERlcHJlY2F0ZWQuIHdoZXRoZXIgdG8gaW5jbHVkZSB0aGVcbiAqICAgICBKU1BCIGluc3RhbmNlIGZvciB0cmFuc2l0aW9uYWwgc295IHByb3RvIHN1cHBvcnQ6XG4gKiAgICAgaHR0cDovL2dvdG8vc295LXBhcmFtLW1pZ3JhdGlvblxuICogQHJldHVybiB7IU9iamVjdH1cbiAqL1xucHJvdG8udG8udjEuVG9BY3Rpb25EZXRhaWxSZXBseS5wcm90b3R5cGUudG9PYmplY3QgPSBmdW5jdGlvbihvcHRfaW5jbHVkZUluc3RhbmNlKSB7XG4gIHJldHVybiBwcm90by50by52MS5Ub0FjdGlvbkRldGFpbFJlcGx5LnRvT2JqZWN0KG9wdF9pbmNsdWRlSW5zdGFuY2UsIHRoaXMpO1xufTtcblxuXG4vKipcbiAqIFN0YXRpYyB2ZXJzaW9uIG9mIHRoZSB7QHNlZSB0b09iamVjdH0gbWV0aG9kLlxuICogQHBhcmFtIHtib29sZWFufHVuZGVmaW5lZH0gaW5jbHVkZUluc3RhbmNlIERlcHJlY2F0ZWQuIFdoZXRoZXIgdG8gaW5jbHVkZVxuICogICAgIHRoZSBKU1BCIGluc3RhbmNlIGZvciB0cmFuc2l0aW9uYWwgc295IHByb3RvIHN1cHBvcnQ6XG4gKiAgICAgaHR0cDovL2dvdG8vc295LXBhcmFtLW1pZ3JhdGlvblxuICogQHBhcmFtIHshcHJvdG8udG8udjEuVG9BY3Rpb25EZXRhaWxSZXBseX0gbXNnIFRoZSBtc2cgaW5zdGFuY2UgdG8gdHJhbnNmb3JtLlxuICogQHJldHVybiB7IU9iamVjdH1cbiAqIEBzdXBwcmVzcyB7dW51c2VkTG9jYWxWYXJpYWJsZXN9IGYgaXMgb25seSB1c2VkIGZvciBuZXN0ZWQgbWVzc2FnZXNcbiAqL1xucHJvdG8udG8udjEuVG9BY3Rpb25EZXRhaWxSZXBseS50b09iamVjdCA9IGZ1bmN0aW9uKGluY2x1ZGVJbnN0YW5jZSwgbXNnKSB7XG4gIHZhciBmLCBvYmogPSB7XG4gICAgaWQ6IGpzcGIuTWVzc2FnZS5nZXRGaWVsZFdpdGhEZWZhdWx0KG1zZywgMSwgMCksXG4gICAgbmFtZToganNwYi5NZXNzYWdlLmdldEZpZWxkV2l0aERlZmF1bHQobXNnLCAyLCBcIlwiKSxcbiAgICBjb250ZW50OiBqc3BiLk1lc3NhZ2UuZ2V0RmllbGRXaXRoRGVmYXVsdChtc2csIDMsIFwiXCIpLFxuICAgIGxvY2t1cDoganNwYi5NZXNzYWdlLmdldEZpZWxkV2l0aERlZmF1bHQobXNnLCA0LCAwKSxcbiAgICBmb3JjZWRlbmR0aW1lOiBqc3BiLk1lc3NhZ2UuZ2V0RmllbGRXaXRoRGVmYXVsdChtc2csIDUsIDApLFxuICAgIHRvdGFsY29udHJvbG51bToganNwYi5NZXNzYWdlLmdldEZpZWxkV2l0aERlZmF1bHQobXNnLCA2LCAwKSxcbiAgICBtYXhyYW5nZToganNwYi5NZXNzYWdlLmdldEZpZWxkV2l0aERlZmF1bHQobXNnLCA3LCAwKSxcbiAgICBtYXBpbmZvOiAoZiA9IG1zZy5nZXRNYXBpbmZvKCkpICYmIHByb3RvLnRvLnYxLlRvTWFwSW5mby50b09iamVjdChpbmNsdWRlSW5zdGFuY2UsIGYpLFxuICAgIHJvdXRlc0xpc3Q6IGpzcGIuTWVzc2FnZS50b09iamVjdExpc3QobXNnLmdldFJvdXRlc0xpc3QoKSxcbiAgICBiYXNlX3BiLkNvdXJzZUluZm8udG9PYmplY3QsIGluY2x1ZGVJbnN0YW5jZSlcbiAgfTtcblxuICBpZiAoaW5jbHVkZUluc3RhbmNlKSB7XG4gICAgb2JqLiRqc3BiTWVzc2FnZUluc3RhbmNlID0gbXNnO1xuICB9XG4gIHJldHVybiBvYmo7XG59O1xufVxuXG5cbi8qKlxuICogRGVzZXJpYWxpemVzIGJpbmFyeSBkYXRhIChpbiBwcm90b2J1ZiB3aXJlIGZvcm1hdCkuXG4gKiBAcGFyYW0ge2pzcGIuQnl0ZVNvdXJjZX0gYnl0ZXMgVGhlIGJ5dGVzIHRvIGRlc2VyaWFsaXplLlxuICogQHJldHVybiB7IXByb3RvLnRvLnYxLlRvQWN0aW9uRGV0YWlsUmVwbHl9XG4gKi9cbnByb3RvLnRvLnYxLlRvQWN0aW9uRGV0YWlsUmVwbHkuZGVzZXJpYWxpemVCaW5hcnkgPSBmdW5jdGlvbihieXRlcykge1xuICB2YXIgcmVhZGVyID0gbmV3IGpzcGIuQmluYXJ5UmVhZGVyKGJ5dGVzKTtcbiAgdmFyIG1zZyA9IG5ldyBwcm90by50by52MS5Ub0FjdGlvbkRldGFpbFJlcGx5O1xuICByZXR1cm4gcHJvdG8udG8udjEuVG9BY3Rpb25EZXRhaWxSZXBseS5kZXNlcmlhbGl6ZUJpbmFyeUZyb21SZWFkZXIobXNnLCByZWFkZXIpO1xufTtcblxuXG4vKipcbiAqIERlc2VyaWFsaXplcyBiaW5hcnkgZGF0YSAoaW4gcHJvdG9idWYgd2lyZSBmb3JtYXQpIGZyb20gdGhlXG4gKiBnaXZlbiByZWFkZXIgaW50byB0aGUgZ2l2ZW4gbWVzc2FnZSBvYmplY3QuXG4gKiBAcGFyYW0geyFwcm90by50by52MS5Ub0FjdGlvbkRldGFpbFJlcGx5fSBtc2cgVGhlIG1lc3NhZ2Ugb2JqZWN0IHRvIGRlc2VyaWFsaXplIGludG8uXG4gKiBAcGFyYW0geyFqc3BiLkJpbmFyeVJlYWRlcn0gcmVhZGVyIFRoZSBCaW5hcnlSZWFkZXIgdG8gdXNlLlxuICogQHJldHVybiB7IXByb3RvLnRvLnYxLlRvQWN0aW9uRGV0YWlsUmVwbHl9XG4gKi9cbnByb3RvLnRvLnYxLlRvQWN0aW9uRGV0YWlsUmVwbHkuZGVzZXJpYWxpemVCaW5hcnlGcm9tUmVhZGVyID0gZnVuY3Rpb24obXNnLCByZWFkZXIpIHtcbiAgd2hpbGUgKHJlYWRlci5uZXh0RmllbGQoKSkge1xuICAgIGlmIChyZWFkZXIuaXNFbmRHcm91cCgpKSB7XG4gICAgICBicmVhaztcbiAgICB9XG4gICAgdmFyIGZpZWxkID0gcmVhZGVyLmdldEZpZWxkTnVtYmVyKCk7XG4gICAgc3dpdGNoIChmaWVsZCkge1xuICAgIGNhc2UgMTpcbiAgICAgIHZhciB2YWx1ZSA9IC8qKiBAdHlwZSB7bnVtYmVyfSAqLyAocmVhZGVyLnJlYWRJbnQzMigpKTtcbiAgICAgIG1zZy5zZXRJZCh2YWx1ZSk7XG4gICAgICBicmVhaztcbiAgICBjYXNlIDI6XG4gICAgICB2YXIgdmFsdWUgPSAvKiogQHR5cGUge3N0cmluZ30gKi8gKHJlYWRlci5yZWFkU3RyaW5nKCkpO1xuICAgICAgbXNnLnNldE5hbWUodmFsdWUpO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSAzOlxuICAgICAgdmFyIHZhbHVlID0gLyoqIEB0eXBlIHtzdHJpbmd9ICovIChyZWFkZXIucmVhZFN0cmluZygpKTtcbiAgICAgIG1zZy5zZXRDb250ZW50KHZhbHVlKTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgNDpcbiAgICAgIHZhciB2YWx1ZSA9IC8qKiBAdHlwZSB7bnVtYmVyfSAqLyAocmVhZGVyLnJlYWRJbnQzMigpKTtcbiAgICAgIG1zZy5zZXRMb2NrdXAodmFsdWUpO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSA1OlxuICAgICAgdmFyIHZhbHVlID0gLyoqIEB0eXBlIHtudW1iZXJ9ICovIChyZWFkZXIucmVhZEludDMyKCkpO1xuICAgICAgbXNnLnNldEZvcmNlZGVuZHRpbWUodmFsdWUpO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSA2OlxuICAgICAgdmFyIHZhbHVlID0gLyoqIEB0eXBlIHtudW1iZXJ9ICovIChyZWFkZXIucmVhZEludDMyKCkpO1xuICAgICAgbXNnLnNldFRvdGFsY29udHJvbG51bSh2YWx1ZSk7XG4gICAgICBicmVhaztcbiAgICBjYXNlIDc6XG4gICAgICB2YXIgdmFsdWUgPSAvKiogQHR5cGUge251bWJlcn0gKi8gKHJlYWRlci5yZWFkSW50MzIoKSk7XG4gICAgICBtc2cuc2V0TWF4cmFuZ2UodmFsdWUpO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSA4OlxuICAgICAgdmFyIHZhbHVlID0gbmV3IHByb3RvLnRvLnYxLlRvTWFwSW5mbztcbiAgICAgIHJlYWRlci5yZWFkTWVzc2FnZSh2YWx1ZSxwcm90by50by52MS5Ub01hcEluZm8uZGVzZXJpYWxpemVCaW5hcnlGcm9tUmVhZGVyKTtcbiAgICAgIG1zZy5zZXRNYXBpbmZvKHZhbHVlKTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgOTpcbiAgICAgIHZhciB2YWx1ZSA9IG5ldyBiYXNlX3BiLkNvdXJzZUluZm87XG4gICAgICByZWFkZXIucmVhZE1lc3NhZ2UodmFsdWUsYmFzZV9wYi5Db3Vyc2VJbmZvLmRlc2VyaWFsaXplQmluYXJ5RnJvbVJlYWRlcik7XG4gICAgICBtc2cuYWRkUm91dGVzKHZhbHVlKTtcbiAgICAgIGJyZWFrO1xuICAgIGRlZmF1bHQ6XG4gICAgICByZWFkZXIuc2tpcEZpZWxkKCk7XG4gICAgICBicmVhaztcbiAgICB9XG4gIH1cbiAgcmV0dXJuIG1zZztcbn07XG5cblxuLyoqXG4gKiBTZXJpYWxpemVzIHRoZSBtZXNzYWdlIHRvIGJpbmFyeSBkYXRhIChpbiBwcm90b2J1ZiB3aXJlIGZvcm1hdCkuXG4gKiBAcmV0dXJuIHshVWludDhBcnJheX1cbiAqL1xucHJvdG8udG8udjEuVG9BY3Rpb25EZXRhaWxSZXBseS5wcm90b3R5cGUuc2VyaWFsaXplQmluYXJ5ID0gZnVuY3Rpb24oKSB7XG4gIHZhciB3cml0ZXIgPSBuZXcganNwYi5CaW5hcnlXcml0ZXIoKTtcbiAgcHJvdG8udG8udjEuVG9BY3Rpb25EZXRhaWxSZXBseS5zZXJpYWxpemVCaW5hcnlUb1dyaXRlcih0aGlzLCB3cml0ZXIpO1xuICByZXR1cm4gd3JpdGVyLmdldFJlc3VsdEJ1ZmZlcigpO1xufTtcblxuXG4vKipcbiAqIFNlcmlhbGl6ZXMgdGhlIGdpdmVuIG1lc3NhZ2UgdG8gYmluYXJ5IGRhdGEgKGluIHByb3RvYnVmIHdpcmVcbiAqIGZvcm1hdCksIHdyaXRpbmcgdG8gdGhlIGdpdmVuIEJpbmFyeVdyaXRlci5cbiAqIEBwYXJhbSB7IXByb3RvLnRvLnYxLlRvQWN0aW9uRGV0YWlsUmVwbHl9IG1lc3NhZ2VcbiAqIEBwYXJhbSB7IWpzcGIuQmluYXJ5V3JpdGVyfSB3cml0ZXJcbiAqIEBzdXBwcmVzcyB7dW51c2VkTG9jYWxWYXJpYWJsZXN9IGYgaXMgb25seSB1c2VkIGZvciBuZXN0ZWQgbWVzc2FnZXNcbiAqL1xucHJvdG8udG8udjEuVG9BY3Rpb25EZXRhaWxSZXBseS5zZXJpYWxpemVCaW5hcnlUb1dyaXRlciA9IGZ1bmN0aW9uKG1lc3NhZ2UsIHdyaXRlcikge1xuICB2YXIgZiA9IHVuZGVmaW5lZDtcbiAgZiA9IG1lc3NhZ2UuZ2V0SWQoKTtcbiAgaWYgKGYgIT09IDApIHtcbiAgICB3cml0ZXIud3JpdGVJbnQzMihcbiAgICAgIDEsXG4gICAgICBmXG4gICAgKTtcbiAgfVxuICBmID0gbWVzc2FnZS5nZXROYW1lKCk7XG4gIGlmIChmLmxlbmd0aCA+IDApIHtcbiAgICB3cml0ZXIud3JpdGVTdHJpbmcoXG4gICAgICAyLFxuICAgICAgZlxuICAgICk7XG4gIH1cbiAgZiA9IG1lc3NhZ2UuZ2V0Q29udGVudCgpO1xuICBpZiAoZi5sZW5ndGggPiAwKSB7XG4gICAgd3JpdGVyLndyaXRlU3RyaW5nKFxuICAgICAgMyxcbiAgICAgIGZcbiAgICApO1xuICB9XG4gIGYgPSBtZXNzYWdlLmdldExvY2t1cCgpO1xuICBpZiAoZiAhPT0gMCkge1xuICAgIHdyaXRlci53cml0ZUludDMyKFxuICAgICAgNCxcbiAgICAgIGZcbiAgICApO1xuICB9XG4gIGYgPSBtZXNzYWdlLmdldEZvcmNlZGVuZHRpbWUoKTtcbiAgaWYgKGYgIT09IDApIHtcbiAgICB3cml0ZXIud3JpdGVJbnQzMihcbiAgICAgIDUsXG4gICAgICBmXG4gICAgKTtcbiAgfVxuICBmID0gbWVzc2FnZS5nZXRUb3RhbGNvbnRyb2xudW0oKTtcbiAgaWYgKGYgIT09IDApIHtcbiAgICB3cml0ZXIud3JpdGVJbnQzMihcbiAgICAgIDYsXG4gICAgICBmXG4gICAgKTtcbiAgfVxuICBmID0gbWVzc2FnZS5nZXRNYXhyYW5nZSgpO1xuICBpZiAoZiAhPT0gMCkge1xuICAgIHdyaXRlci53cml0ZUludDMyKFxuICAgICAgNyxcbiAgICAgIGZcbiAgICApO1xuICB9XG4gIGYgPSBtZXNzYWdlLmdldE1hcGluZm8oKTtcbiAgaWYgKGYgIT0gbnVsbCkge1xuICAgIHdyaXRlci53cml0ZU1lc3NhZ2UoXG4gICAgICA4LFxuICAgICAgZixcbiAgICAgIHByb3RvLnRvLnYxLlRvTWFwSW5mby5zZXJpYWxpemVCaW5hcnlUb1dyaXRlclxuICAgICk7XG4gIH1cbiAgZiA9IG1lc3NhZ2UuZ2V0Um91dGVzTGlzdCgpO1xuICBpZiAoZi5sZW5ndGggPiAwKSB7XG4gICAgd3JpdGVyLndyaXRlUmVwZWF0ZWRNZXNzYWdlKFxuICAgICAgOSxcbiAgICAgIGYsXG4gICAgICBiYXNlX3BiLkNvdXJzZUluZm8uc2VyaWFsaXplQmluYXJ5VG9Xcml0ZXJcbiAgICApO1xuICB9XG59O1xuXG5cbi8qKlxuICogb3B0aW9uYWwgaW50MzIgaWQgPSAxO1xuICogQHJldHVybiB7bnVtYmVyfVxuICovXG5wcm90by50by52MS5Ub0FjdGlvbkRldGFpbFJlcGx5LnByb3RvdHlwZS5nZXRJZCA9IGZ1bmN0aW9uKCkge1xuICByZXR1cm4gLyoqIEB0eXBlIHtudW1iZXJ9ICovIChqc3BiLk1lc3NhZ2UuZ2V0RmllbGRXaXRoRGVmYXVsdCh0aGlzLCAxLCAwKSk7XG59O1xuXG5cbi8qKlxuICogQHBhcmFtIHtudW1iZXJ9IHZhbHVlXG4gKiBAcmV0dXJuIHshcHJvdG8udG8udjEuVG9BY3Rpb25EZXRhaWxSZXBseX0gcmV0dXJucyB0aGlzXG4gKi9cbnByb3RvLnRvLnYxLlRvQWN0aW9uRGV0YWlsUmVwbHkucHJvdG90eXBlLnNldElkID0gZnVuY3Rpb24odmFsdWUpIHtcbiAgcmV0dXJuIGpzcGIuTWVzc2FnZS5zZXRQcm90bzNJbnRGaWVsZCh0aGlzLCAxLCB2YWx1ZSk7XG59O1xuXG5cbi8qKlxuICogb3B0aW9uYWwgc3RyaW5nIG5hbWUgPSAyO1xuICogQHJldHVybiB7c3RyaW5nfVxuICovXG5wcm90by50by52MS5Ub0FjdGlvbkRldGFpbFJlcGx5LnByb3RvdHlwZS5nZXROYW1lID0gZnVuY3Rpb24oKSB7XG4gIHJldHVybiAvKiogQHR5cGUge3N0cmluZ30gKi8gKGpzcGIuTWVzc2FnZS5nZXRGaWVsZFdpdGhEZWZhdWx0KHRoaXMsIDIsIFwiXCIpKTtcbn07XG5cblxuLyoqXG4gKiBAcGFyYW0ge3N0cmluZ30gdmFsdWVcbiAqIEByZXR1cm4geyFwcm90by50by52MS5Ub0FjdGlvbkRldGFpbFJlcGx5fSByZXR1cm5zIHRoaXNcbiAqL1xucHJvdG8udG8udjEuVG9BY3Rpb25EZXRhaWxSZXBseS5wcm90b3R5cGUuc2V0TmFtZSA9IGZ1bmN0aW9uKHZhbHVlKSB7XG4gIHJldHVybiBqc3BiLk1lc3NhZ2Uuc2V0UHJvdG8zU3RyaW5nRmllbGQodGhpcywgMiwgdmFsdWUpO1xufTtcblxuXG4vKipcbiAqIG9wdGlvbmFsIHN0cmluZyBjb250ZW50ID0gMztcbiAqIEByZXR1cm4ge3N0cmluZ31cbiAqL1xucHJvdG8udG8udjEuVG9BY3Rpb25EZXRhaWxSZXBseS5wcm90b3R5cGUuZ2V0Q29udGVudCA9IGZ1bmN0aW9uKCkge1xuICByZXR1cm4gLyoqIEB0eXBlIHtzdHJpbmd9ICovIChqc3BiLk1lc3NhZ2UuZ2V0RmllbGRXaXRoRGVmYXVsdCh0aGlzLCAzLCBcIlwiKSk7XG59O1xuXG5cbi8qKlxuICogQHBhcmFtIHtzdHJpbmd9IHZhbHVlXG4gKiBAcmV0dXJuIHshcHJvdG8udG8udjEuVG9BY3Rpb25EZXRhaWxSZXBseX0gcmV0dXJucyB0aGlzXG4gKi9cbnByb3RvLnRvLnYxLlRvQWN0aW9uRGV0YWlsUmVwbHkucHJvdG90eXBlLnNldENvbnRlbnQgPSBmdW5jdGlvbih2YWx1ZSkge1xuICByZXR1cm4ganNwYi5NZXNzYWdlLnNldFByb3RvM1N0cmluZ0ZpZWxkKHRoaXMsIDMsIHZhbHVlKTtcbn07XG5cblxuLyoqXG4gKiBvcHRpb25hbCBpbnQzMiBsb2NrdXAgPSA0O1xuICogQHJldHVybiB7bnVtYmVyfVxuICovXG5wcm90by50by52MS5Ub0FjdGlvbkRldGFpbFJlcGx5LnByb3RvdHlwZS5nZXRMb2NrdXAgPSBmdW5jdGlvbigpIHtcbiAgcmV0dXJuIC8qKiBAdHlwZSB7bnVtYmVyfSAqLyAoanNwYi5NZXNzYWdlLmdldEZpZWxkV2l0aERlZmF1bHQodGhpcywgNCwgMCkpO1xufTtcblxuXG4vKipcbiAqIEBwYXJhbSB7bnVtYmVyfSB2YWx1ZVxuICogQHJldHVybiB7IXByb3RvLnRvLnYxLlRvQWN0aW9uRGV0YWlsUmVwbHl9IHJldHVybnMgdGhpc1xuICovXG5wcm90by50by52MS5Ub0FjdGlvbkRldGFpbFJlcGx5LnByb3RvdHlwZS5zZXRMb2NrdXAgPSBmdW5jdGlvbih2YWx1ZSkge1xuICByZXR1cm4ganNwYi5NZXNzYWdlLnNldFByb3RvM0ludEZpZWxkKHRoaXMsIDQsIHZhbHVlKTtcbn07XG5cblxuLyoqXG4gKiBvcHRpb25hbCBpbnQzMiBmb3JjZWRFbmRUaW1lID0gNTtcbiAqIEByZXR1cm4ge251bWJlcn1cbiAqL1xucHJvdG8udG8udjEuVG9BY3Rpb25EZXRhaWxSZXBseS5wcm90b3R5cGUuZ2V0Rm9yY2VkZW5kdGltZSA9IGZ1bmN0aW9uKCkge1xuICByZXR1cm4gLyoqIEB0eXBlIHtudW1iZXJ9ICovIChqc3BiLk1lc3NhZ2UuZ2V0RmllbGRXaXRoRGVmYXVsdCh0aGlzLCA1LCAwKSk7XG59O1xuXG5cbi8qKlxuICogQHBhcmFtIHtudW1iZXJ9IHZhbHVlXG4gKiBAcmV0dXJuIHshcHJvdG8udG8udjEuVG9BY3Rpb25EZXRhaWxSZXBseX0gcmV0dXJucyB0aGlzXG4gKi9cbnByb3RvLnRvLnYxLlRvQWN0aW9uRGV0YWlsUmVwbHkucHJvdG90eXBlLnNldEZvcmNlZGVuZHRpbWUgPSBmdW5jdGlvbih2YWx1ZSkge1xuICByZXR1cm4ganNwYi5NZXNzYWdlLnNldFByb3RvM0ludEZpZWxkKHRoaXMsIDUsIHZhbHVlKTtcbn07XG5cblxuLyoqXG4gKiBvcHRpb25hbCBpbnQzMiB0b3RhbENvbnRyb2xOdW0gPSA2O1xuICogQHJldHVybiB7bnVtYmVyfVxuICovXG5wcm90by50by52MS5Ub0FjdGlvbkRldGFpbFJlcGx5LnByb3RvdHlwZS5nZXRUb3RhbGNvbnRyb2xudW0gPSBmdW5jdGlvbigpIHtcbiAgcmV0dXJuIC8qKiBAdHlwZSB7bnVtYmVyfSAqLyAoanNwYi5NZXNzYWdlLmdldEZpZWxkV2l0aERlZmF1bHQodGhpcywgNiwgMCkpO1xufTtcblxuXG4vKipcbiAqIEBwYXJhbSB7bnVtYmVyfSB2YWx1ZVxuICogQHJldHVybiB7IXByb3RvLnRvLnYxLlRvQWN0aW9uRGV0YWlsUmVwbHl9IHJldHVybnMgdGhpc1xuICovXG5wcm90by50by52MS5Ub0FjdGlvbkRldGFpbFJlcGx5LnByb3RvdHlwZS5zZXRUb3RhbGNvbnRyb2xudW0gPSBmdW5jdGlvbih2YWx1ZSkge1xuICByZXR1cm4ganNwYi5NZXNzYWdlLnNldFByb3RvM0ludEZpZWxkKHRoaXMsIDYsIHZhbHVlKTtcbn07XG5cblxuLyoqXG4gKiBvcHRpb25hbCBpbnQzMiBtYXhSYW5nZSA9IDc7XG4gKiBAcmV0dXJuIHtudW1iZXJ9XG4gKi9cbnByb3RvLnRvLnYxLlRvQWN0aW9uRGV0YWlsUmVwbHkucHJvdG90eXBlLmdldE1heHJhbmdlID0gZnVuY3Rpb24oKSB7XG4gIHJldHVybiAvKiogQHR5cGUge251bWJlcn0gKi8gKGpzcGIuTWVzc2FnZS5nZXRGaWVsZFdpdGhEZWZhdWx0KHRoaXMsIDcsIDApKTtcbn07XG5cblxuLyoqXG4gKiBAcGFyYW0ge251bWJlcn0gdmFsdWVcbiAqIEByZXR1cm4geyFwcm90by50by52MS5Ub0FjdGlvbkRldGFpbFJlcGx5fSByZXR1cm5zIHRoaXNcbiAqL1xucHJvdG8udG8udjEuVG9BY3Rpb25EZXRhaWxSZXBseS5wcm90b3R5cGUuc2V0TWF4cmFuZ2UgPSBmdW5jdGlvbih2YWx1ZSkge1xuICByZXR1cm4ganNwYi5NZXNzYWdlLnNldFByb3RvM0ludEZpZWxkKHRoaXMsIDcsIHZhbHVlKTtcbn07XG5cblxuLyoqXG4gKiBvcHRpb25hbCBUb01hcEluZm8gbWFwSW5mbyA9IDg7XG4gKiBAcmV0dXJuIHs/cHJvdG8udG8udjEuVG9NYXBJbmZvfVxuICovXG5wcm90by50by52MS5Ub0FjdGlvbkRldGFpbFJlcGx5LnByb3RvdHlwZS5nZXRNYXBpbmZvID0gZnVuY3Rpb24oKSB7XG4gIHJldHVybiAvKiogQHR5cGV7P3Byb3RvLnRvLnYxLlRvTWFwSW5mb30gKi8gKFxuICAgIGpzcGIuTWVzc2FnZS5nZXRXcmFwcGVyRmllbGQodGhpcywgcHJvdG8udG8udjEuVG9NYXBJbmZvLCA4KSk7XG59O1xuXG5cbi8qKlxuICogQHBhcmFtIHs/cHJvdG8udG8udjEuVG9NYXBJbmZvfHVuZGVmaW5lZH0gdmFsdWVcbiAqIEByZXR1cm4geyFwcm90by50by52MS5Ub0FjdGlvbkRldGFpbFJlcGx5fSByZXR1cm5zIHRoaXNcbiovXG5wcm90by50by52MS5Ub0FjdGlvbkRldGFpbFJlcGx5LnByb3RvdHlwZS5zZXRNYXBpbmZvID0gZnVuY3Rpb24odmFsdWUpIHtcbiAgcmV0dXJuIGpzcGIuTWVzc2FnZS5zZXRXcmFwcGVyRmllbGQodGhpcywgOCwgdmFsdWUpO1xufTtcblxuXG4vKipcbiAqIENsZWFycyB0aGUgbWVzc2FnZSBmaWVsZCBtYWtpbmcgaXQgdW5kZWZpbmVkLlxuICogQHJldHVybiB7IXByb3RvLnRvLnYxLlRvQWN0aW9uRGV0YWlsUmVwbHl9IHJldHVybnMgdGhpc1xuICovXG5wcm90by50by52MS5Ub0FjdGlvbkRldGFpbFJlcGx5LnByb3RvdHlwZS5jbGVhck1hcGluZm8gPSBmdW5jdGlvbigpIHtcbiAgcmV0dXJuIHRoaXMuc2V0TWFwaW5mbyh1bmRlZmluZWQpO1xufTtcblxuXG4vKipcbiAqIFJldHVybnMgd2hldGhlciB0aGlzIGZpZWxkIGlzIHNldC5cbiAqIEByZXR1cm4ge2Jvb2xlYW59XG4gKi9cbnByb3RvLnRvLnYxLlRvQWN0aW9uRGV0YWlsUmVwbHkucHJvdG90eXBlLmhhc01hcGluZm8gPSBmdW5jdGlvbigpIHtcbiAgcmV0dXJuIGpzcGIuTWVzc2FnZS5nZXRGaWVsZCh0aGlzLCA4KSAhPSBudWxsO1xufTtcblxuXG4vKipcbiAqIHJlcGVhdGVkIGJhc2UudjEuQ291cnNlSW5mbyByb3V0ZXMgPSA5O1xuICogQHJldHVybiB7IUFycmF5PCFwcm90by5iYXNlLnYxLkNvdXJzZUluZm8+fVxuICovXG5wcm90by50by52MS5Ub0FjdGlvbkRldGFpbFJlcGx5LnByb3RvdHlwZS5nZXRSb3V0ZXNMaXN0ID0gZnVuY3Rpb24oKSB7XG4gIHJldHVybiAvKiogQHR5cGV7IUFycmF5PCFwcm90by5iYXNlLnYxLkNvdXJzZUluZm8+fSAqLyAoXG4gICAganNwYi5NZXNzYWdlLmdldFJlcGVhdGVkV3JhcHBlckZpZWxkKHRoaXMsIGJhc2VfcGIuQ291cnNlSW5mbywgOSkpO1xufTtcblxuXG4vKipcbiAqIEBwYXJhbSB7IUFycmF5PCFwcm90by5iYXNlLnYxLkNvdXJzZUluZm8+fSB2YWx1ZVxuICogQHJldHVybiB7IXByb3RvLnRvLnYxLlRvQWN0aW9uRGV0YWlsUmVwbHl9IHJldHVybnMgdGhpc1xuKi9cbnByb3RvLnRvLnYxLlRvQWN0aW9uRGV0YWlsUmVwbHkucHJvdG90eXBlLnNldFJvdXRlc0xpc3QgPSBmdW5jdGlvbih2YWx1ZSkge1xuICByZXR1cm4ganNwYi5NZXNzYWdlLnNldFJlcGVhdGVkV3JhcHBlckZpZWxkKHRoaXMsIDksIHZhbHVlKTtcbn07XG5cblxuLyoqXG4gKiBAcGFyYW0geyFwcm90by5iYXNlLnYxLkNvdXJzZUluZm89fSBvcHRfdmFsdWVcbiAqIEBwYXJhbSB7bnVtYmVyPX0gb3B0X2luZGV4XG4gKiBAcmV0dXJuIHshcHJvdG8uYmFzZS52MS5Db3Vyc2VJbmZvfVxuICovXG5wcm90by50by52MS5Ub0FjdGlvbkRldGFpbFJlcGx5LnByb3RvdHlwZS5hZGRSb3V0ZXMgPSBmdW5jdGlvbihvcHRfdmFsdWUsIG9wdF9pbmRleCkge1xuICByZXR1cm4ganNwYi5NZXNzYWdlLmFkZFRvUmVwZWF0ZWRXcmFwcGVyRmllbGQodGhpcywgOSwgb3B0X3ZhbHVlLCBwcm90by5iYXNlLnYxLkNvdXJzZUluZm8sIG9wdF9pbmRleCk7XG59O1xuXG5cbi8qKlxuICogQ2xlYXJzIHRoZSBsaXN0IG1ha2luZyBpdCBlbXB0eSBidXQgbm9uLW51bGwuXG4gKiBAcmV0dXJuIHshcHJvdG8udG8udjEuVG9BY3Rpb25EZXRhaWxSZXBseX0gcmV0dXJucyB0aGlzXG4gKi9cbnByb3RvLnRvLnYxLlRvQWN0aW9uRGV0YWlsUmVwbHkucHJvdG90eXBlLmNsZWFyUm91dGVzTGlzdCA9IGZ1bmN0aW9uKCkge1xuICByZXR1cm4gdGhpcy5zZXRSb3V0ZXNMaXN0KFtdKTtcbn07XG5cblxuXG5cblxuaWYgKGpzcGIuTWVzc2FnZS5HRU5FUkFURV9UT19PQkpFQ1QpIHtcbi8qKlxuICogQ3JlYXRlcyBhbiBvYmplY3QgcmVwcmVzZW50YXRpb24gb2YgdGhpcyBwcm90by5cbiAqIEZpZWxkIG5hbWVzIHRoYXQgYXJlIHJlc2VydmVkIGluIEphdmFTY3JpcHQgYW5kIHdpbGwgYmUgcmVuYW1lZCB0byBwYl9uYW1lLlxuICogT3B0aW9uYWwgZmllbGRzIHRoYXQgYXJlIG5vdCBzZXQgd2lsbCBiZSBzZXQgdG8gdW5kZWZpbmVkLlxuICogVG8gYWNjZXNzIGEgcmVzZXJ2ZWQgZmllbGQgdXNlLCBmb28ucGJfPG5hbWU+LCBlZywgZm9vLnBiX2RlZmF1bHQuXG4gKiBGb3IgdGhlIGxpc3Qgb2YgcmVzZXJ2ZWQgbmFtZXMgcGxlYXNlIHNlZTpcbiAqICAgICBuZXQvcHJvdG8yL2NvbXBpbGVyL2pzL2ludGVybmFsL2dlbmVyYXRvci5jYyNrS2V5d29yZC5cbiAqIEBwYXJhbSB7Ym9vbGVhbj19IG9wdF9pbmNsdWRlSW5zdGFuY2UgRGVwcmVjYXRlZC4gd2hldGhlciB0byBpbmNsdWRlIHRoZVxuICogICAgIEpTUEIgaW5zdGFuY2UgZm9yIHRyYW5zaXRpb25hbCBzb3kgcHJvdG8gc3VwcG9ydDpcbiAqICAgICBodHRwOi8vZ290by9zb3ktcGFyYW0tbWlncmF0aW9uXG4gKiBAcmV0dXJuIHshT2JqZWN0fVxuICovXG5wcm90by50by52MS5Ub01hcEluZm8ucHJvdG90eXBlLnRvT2JqZWN0ID0gZnVuY3Rpb24ob3B0X2luY2x1ZGVJbnN0YW5jZSkge1xuICByZXR1cm4gcHJvdG8udG8udjEuVG9NYXBJbmZvLnRvT2JqZWN0KG9wdF9pbmNsdWRlSW5zdGFuY2UsIHRoaXMpO1xufTtcblxuXG4vKipcbiAqIFN0YXRpYyB2ZXJzaW9uIG9mIHRoZSB7QHNlZSB0b09iamVjdH0gbWV0aG9kLlxuICogQHBhcmFtIHtib29sZWFufHVuZGVmaW5lZH0gaW5jbHVkZUluc3RhbmNlIERlcHJlY2F0ZWQuIFdoZXRoZXIgdG8gaW5jbHVkZVxuICogICAgIHRoZSBKU1BCIGluc3RhbmNlIGZvciB0cmFuc2l0aW9uYWwgc295IHByb3RvIHN1cHBvcnQ6XG4gKiAgICAgaHR0cDovL2dvdG8vc295LXBhcmFtLW1pZ3JhdGlvblxuICogQHBhcmFtIHshcHJvdG8udG8udjEuVG9NYXBJbmZvfSBtc2cgVGhlIG1zZyBpbnN0YW5jZSB0byB0cmFuc2Zvcm0uXG4gKiBAcmV0dXJuIHshT2JqZWN0fVxuICogQHN1cHByZXNzIHt1bnVzZWRMb2NhbFZhcmlhYmxlc30gZiBpcyBvbmx5IHVzZWQgZm9yIG5lc3RlZCBtZXNzYWdlc1xuICovXG5wcm90by50by52MS5Ub01hcEluZm8udG9PYmplY3QgPSBmdW5jdGlvbihpbmNsdWRlSW5zdGFuY2UsIG1zZykge1xuICB2YXIgZiwgb2JqID0ge1xuICAgIGxpZDoganNwYi5NZXNzYWdlLmdldEZpZWxkV2l0aERlZmF1bHQobXNnLCAxLCAwKSxcbiAgICBtYXBuYW1lOiBqc3BiLk1lc3NhZ2UuZ2V0RmllbGRXaXRoRGVmYXVsdChtc2csIDIsIFwiXCIpLFxuICAgIHppcGltYWdlOiAoZiA9IG1zZy5nZXRaaXBpbWFnZSgpKSAmJiBiYXNlX3BiLk5ldEltYWdlLnRvT2JqZWN0KGluY2x1ZGVJbnN0YW5jZSwgZiksXG4gICAgY2VudGVybG9uZ2l0dWRlOiBqc3BiLk1lc3NhZ2UuZ2V0RmxvYXRpbmdQb2ludEZpZWxkV2l0aERlZmF1bHQobXNnLCA0LCAwLjApLFxuICAgIGNlbnRlcmxhdGl0dWRlOiBqc3BiLk1lc3NhZ2UuZ2V0RmxvYXRpbmdQb2ludEZpZWxkV2l0aERlZmF1bHQobXNnLCA1LCAwLjApLFxuICAgIGRlZnNjYWxlOiBqc3BiLk1lc3NhZ2UuZ2V0RmllbGRXaXRoRGVmYXVsdChtc2csIDYsIDApLFxuICAgIG1hcHVybDoganNwYi5NZXNzYWdlLmdldEZpZWxkV2l0aERlZmF1bHQobXNnLCA3LCBcIlwiKSxcbiAgICBtYXBtZDU6IGpzcGIuTWVzc2FnZS5nZXRGaWVsZFdpdGhEZWZhdWx0KG1zZywgOCwgXCJcIilcbiAgfTtcblxuICBpZiAoaW5jbHVkZUluc3RhbmNlKSB7XG4gICAgb2JqLiRqc3BiTWVzc2FnZUluc3RhbmNlID0gbXNnO1xuICB9XG4gIHJldHVybiBvYmo7XG59O1xufVxuXG5cbi8qKlxuICogRGVzZXJpYWxpemVzIGJpbmFyeSBkYXRhIChpbiBwcm90b2J1ZiB3aXJlIGZvcm1hdCkuXG4gKiBAcGFyYW0ge2pzcGIuQnl0ZVNvdXJjZX0gYnl0ZXMgVGhlIGJ5dGVzIHRvIGRlc2VyaWFsaXplLlxuICogQHJldHVybiB7IXByb3RvLnRvLnYxLlRvTWFwSW5mb31cbiAqL1xucHJvdG8udG8udjEuVG9NYXBJbmZvLmRlc2VyaWFsaXplQmluYXJ5ID0gZnVuY3Rpb24oYnl0ZXMpIHtcbiAgdmFyIHJlYWRlciA9IG5ldyBqc3BiLkJpbmFyeVJlYWRlcihieXRlcyk7XG4gIHZhciBtc2cgPSBuZXcgcHJvdG8udG8udjEuVG9NYXBJbmZvO1xuICByZXR1cm4gcHJvdG8udG8udjEuVG9NYXBJbmZvLmRlc2VyaWFsaXplQmluYXJ5RnJvbVJlYWRlcihtc2csIHJlYWRlcik7XG59O1xuXG5cbi8qKlxuICogRGVzZXJpYWxpemVzIGJpbmFyeSBkYXRhIChpbiBwcm90b2J1ZiB3aXJlIGZvcm1hdCkgZnJvbSB0aGVcbiAqIGdpdmVuIHJlYWRlciBpbnRvIHRoZSBnaXZlbiBtZXNzYWdlIG9iamVjdC5cbiAqIEBwYXJhbSB7IXByb3RvLnRvLnYxLlRvTWFwSW5mb30gbXNnIFRoZSBtZXNzYWdlIG9iamVjdCB0byBkZXNlcmlhbGl6ZSBpbnRvLlxuICogQHBhcmFtIHshanNwYi5CaW5hcnlSZWFkZXJ9IHJlYWRlciBUaGUgQmluYXJ5UmVhZGVyIHRvIHVzZS5cbiAqIEByZXR1cm4geyFwcm90by50by52MS5Ub01hcEluZm99XG4gKi9cbnByb3RvLnRvLnYxLlRvTWFwSW5mby5kZXNlcmlhbGl6ZUJpbmFyeUZyb21SZWFkZXIgPSBmdW5jdGlvbihtc2csIHJlYWRlcikge1xuICB3aGlsZSAocmVhZGVyLm5leHRGaWVsZCgpKSB7XG4gICAgaWYgKHJlYWRlci5pc0VuZEdyb3VwKCkpIHtcbiAgICAgIGJyZWFrO1xuICAgIH1cbiAgICB2YXIgZmllbGQgPSByZWFkZXIuZ2V0RmllbGROdW1iZXIoKTtcbiAgICBzd2l0Y2ggKGZpZWxkKSB7XG4gICAgY2FzZSAxOlxuICAgICAgdmFyIHZhbHVlID0gLyoqIEB0eXBlIHtudW1iZXJ9ICovIChyZWFkZXIucmVhZEludDMyKCkpO1xuICAgICAgbXNnLnNldExpZCh2YWx1ZSk7XG4gICAgICBicmVhaztcbiAgICBjYXNlIDI6XG4gICAgICB2YXIgdmFsdWUgPSAvKiogQHR5cGUge3N0cmluZ30gKi8gKHJlYWRlci5yZWFkU3RyaW5nKCkpO1xuICAgICAgbXNnLnNldE1hcG5hbWUodmFsdWUpO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSAzOlxuICAgICAgdmFyIHZhbHVlID0gbmV3IGJhc2VfcGIuTmV0SW1hZ2U7XG4gICAgICByZWFkZXIucmVhZE1lc3NhZ2UodmFsdWUsYmFzZV9wYi5OZXRJbWFnZS5kZXNlcmlhbGl6ZUJpbmFyeUZyb21SZWFkZXIpO1xuICAgICAgbXNnLnNldFppcGltYWdlKHZhbHVlKTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgNDpcbiAgICAgIHZhciB2YWx1ZSA9IC8qKiBAdHlwZSB7bnVtYmVyfSAqLyAocmVhZGVyLnJlYWREb3VibGUoKSk7XG4gICAgICBtc2cuc2V0Q2VudGVybG9uZ2l0dWRlKHZhbHVlKTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgNTpcbiAgICAgIHZhciB2YWx1ZSA9IC8qKiBAdHlwZSB7bnVtYmVyfSAqLyAocmVhZGVyLnJlYWREb3VibGUoKSk7XG4gICAgICBtc2cuc2V0Q2VudGVybGF0aXR1ZGUodmFsdWUpO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSA2OlxuICAgICAgdmFyIHZhbHVlID0gLyoqIEB0eXBlIHtudW1iZXJ9ICovIChyZWFkZXIucmVhZEludDMyKCkpO1xuICAgICAgbXNnLnNldERlZnNjYWxlKHZhbHVlKTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgNzpcbiAgICAgIHZhciB2YWx1ZSA9IC8qKiBAdHlwZSB7c3RyaW5nfSAqLyAocmVhZGVyLnJlYWRTdHJpbmcoKSk7XG4gICAgICBtc2cuc2V0TWFwdXJsKHZhbHVlKTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgODpcbiAgICAgIHZhciB2YWx1ZSA9IC8qKiBAdHlwZSB7c3RyaW5nfSAqLyAocmVhZGVyLnJlYWRTdHJpbmcoKSk7XG4gICAgICBtc2cuc2V0TWFwbWQ1KHZhbHVlKTtcbiAgICAgIGJyZWFrO1xuICAgIGRlZmF1bHQ6XG4gICAgICByZWFkZXIuc2tpcEZpZWxkKCk7XG4gICAgICBicmVhaztcbiAgICB9XG4gIH1cbiAgcmV0dXJuIG1zZztcbn07XG5cblxuLyoqXG4gKiBTZXJpYWxpemVzIHRoZSBtZXNzYWdlIHRvIGJpbmFyeSBkYXRhIChpbiBwcm90b2J1ZiB3aXJlIGZvcm1hdCkuXG4gKiBAcmV0dXJuIHshVWludDhBcnJheX1cbiAqL1xucHJvdG8udG8udjEuVG9NYXBJbmZvLnByb3RvdHlwZS5zZXJpYWxpemVCaW5hcnkgPSBmdW5jdGlvbigpIHtcbiAgdmFyIHdyaXRlciA9IG5ldyBqc3BiLkJpbmFyeVdyaXRlcigpO1xuICBwcm90by50by52MS5Ub01hcEluZm8uc2VyaWFsaXplQmluYXJ5VG9Xcml0ZXIodGhpcywgd3JpdGVyKTtcbiAgcmV0dXJuIHdyaXRlci5nZXRSZXN1bHRCdWZmZXIoKTtcbn07XG5cblxuLyoqXG4gKiBTZXJpYWxpemVzIHRoZSBnaXZlbiBtZXNzYWdlIHRvIGJpbmFyeSBkYXRhIChpbiBwcm90b2J1ZiB3aXJlXG4gKiBmb3JtYXQpLCB3cml0aW5nIHRvIHRoZSBnaXZlbiBCaW5hcnlXcml0ZXIuXG4gKiBAcGFyYW0geyFwcm90by50by52MS5Ub01hcEluZm99IG1lc3NhZ2VcbiAqIEBwYXJhbSB7IWpzcGIuQmluYXJ5V3JpdGVyfSB3cml0ZXJcbiAqIEBzdXBwcmVzcyB7dW51c2VkTG9jYWxWYXJpYWJsZXN9IGYgaXMgb25seSB1c2VkIGZvciBuZXN0ZWQgbWVzc2FnZXNcbiAqL1xucHJvdG8udG8udjEuVG9NYXBJbmZvLnNlcmlhbGl6ZUJpbmFyeVRvV3JpdGVyID0gZnVuY3Rpb24obWVzc2FnZSwgd3JpdGVyKSB7XG4gIHZhciBmID0gdW5kZWZpbmVkO1xuICBmID0gbWVzc2FnZS5nZXRMaWQoKTtcbiAgaWYgKGYgIT09IDApIHtcbiAgICB3cml0ZXIud3JpdGVJbnQzMihcbiAgICAgIDEsXG4gICAgICBmXG4gICAgKTtcbiAgfVxuICBmID0gbWVzc2FnZS5nZXRNYXBuYW1lKCk7XG4gIGlmIChmLmxlbmd0aCA+IDApIHtcbiAgICB3cml0ZXIud3JpdGVTdHJpbmcoXG4gICAgICAyLFxuICAgICAgZlxuICAgICk7XG4gIH1cbiAgZiA9IG1lc3NhZ2UuZ2V0WmlwaW1hZ2UoKTtcbiAgaWYgKGYgIT0gbnVsbCkge1xuICAgIHdyaXRlci53cml0ZU1lc3NhZ2UoXG4gICAgICAzLFxuICAgICAgZixcbiAgICAgIGJhc2VfcGIuTmV0SW1hZ2Uuc2VyaWFsaXplQmluYXJ5VG9Xcml0ZXJcbiAgICApO1xuICB9XG4gIGYgPSBtZXNzYWdlLmdldENlbnRlcmxvbmdpdHVkZSgpO1xuICBpZiAoZiAhPT0gMC4wKSB7XG4gICAgd3JpdGVyLndyaXRlRG91YmxlKFxuICAgICAgNCxcbiAgICAgIGZcbiAgICApO1xuICB9XG4gIGYgPSBtZXNzYWdlLmdldENlbnRlcmxhdGl0dWRlKCk7XG4gIGlmIChmICE9PSAwLjApIHtcbiAgICB3cml0ZXIud3JpdGVEb3VibGUoXG4gICAgICA1LFxuICAgICAgZlxuICAgICk7XG4gIH1cbiAgZiA9IG1lc3NhZ2UuZ2V0RGVmc2NhbGUoKTtcbiAgaWYgKGYgIT09IDApIHtcbiAgICB3cml0ZXIud3JpdGVJbnQzMihcbiAgICAgIDYsXG4gICAgICBmXG4gICAgKTtcbiAgfVxuICBmID0gbWVzc2FnZS5nZXRNYXB1cmwoKTtcbiAgaWYgKGYubGVuZ3RoID4gMCkge1xuICAgIHdyaXRlci53cml0ZVN0cmluZyhcbiAgICAgIDcsXG4gICAgICBmXG4gICAgKTtcbiAgfVxuICBmID0gbWVzc2FnZS5nZXRNYXBtZDUoKTtcbiAgaWYgKGYubGVuZ3RoID4gMCkge1xuICAgIHdyaXRlci53cml0ZVN0cmluZyhcbiAgICAgIDgsXG4gICAgICBmXG4gICAgKTtcbiAgfVxufTtcblxuXG4vKipcbiAqIG9wdGlvbmFsIGludDMyIExJZCA9IDE7XG4gKiBAcmV0dXJuIHtudW1iZXJ9XG4gKi9cbnByb3RvLnRvLnYxLlRvTWFwSW5mby5wcm90b3R5cGUuZ2V0TGlkID0gZnVuY3Rpb24oKSB7XG4gIHJldHVybiAvKiogQHR5cGUge251bWJlcn0gKi8gKGpzcGIuTWVzc2FnZS5nZXRGaWVsZFdpdGhEZWZhdWx0KHRoaXMsIDEsIDApKTtcbn07XG5cblxuLyoqXG4gKiBAcGFyYW0ge251bWJlcn0gdmFsdWVcbiAqIEByZXR1cm4geyFwcm90by50by52MS5Ub01hcEluZm99IHJldHVybnMgdGhpc1xuICovXG5wcm90by50by52MS5Ub01hcEluZm8ucHJvdG90eXBlLnNldExpZCA9IGZ1bmN0aW9uKHZhbHVlKSB7XG4gIHJldHVybiBqc3BiLk1lc3NhZ2Uuc2V0UHJvdG8zSW50RmllbGQodGhpcywgMSwgdmFsdWUpO1xufTtcblxuXG4vKipcbiAqIG9wdGlvbmFsIHN0cmluZyBtYXBOYW1lID0gMjtcbiAqIEByZXR1cm4ge3N0cmluZ31cbiAqL1xucHJvdG8udG8udjEuVG9NYXBJbmZvLnByb3RvdHlwZS5nZXRNYXBuYW1lID0gZnVuY3Rpb24oKSB7XG4gIHJldHVybiAvKiogQHR5cGUge3N0cmluZ30gKi8gKGpzcGIuTWVzc2FnZS5nZXRGaWVsZFdpdGhEZWZhdWx0KHRoaXMsIDIsIFwiXCIpKTtcbn07XG5cblxuLyoqXG4gKiBAcGFyYW0ge3N0cmluZ30gdmFsdWVcbiAqIEByZXR1cm4geyFwcm90by50by52MS5Ub01hcEluZm99IHJldHVybnMgdGhpc1xuICovXG5wcm90by50by52MS5Ub01hcEluZm8ucHJvdG90eXBlLnNldE1hcG5hbWUgPSBmdW5jdGlvbih2YWx1ZSkge1xuICByZXR1cm4ganNwYi5NZXNzYWdlLnNldFByb3RvM1N0cmluZ0ZpZWxkKHRoaXMsIDIsIHZhbHVlKTtcbn07XG5cblxuLyoqXG4gKiBvcHRpb25hbCBiYXNlLnYxLk5ldEltYWdlIHppcEltYWdlID0gMztcbiAqIEByZXR1cm4gez9wcm90by5iYXNlLnYxLk5ldEltYWdlfVxuICovXG5wcm90by50by52MS5Ub01hcEluZm8ucHJvdG90eXBlLmdldFppcGltYWdlID0gZnVuY3Rpb24oKSB7XG4gIHJldHVybiAvKiogQHR5cGV7P3Byb3RvLmJhc2UudjEuTmV0SW1hZ2V9ICovIChcbiAgICBqc3BiLk1lc3NhZ2UuZ2V0V3JhcHBlckZpZWxkKHRoaXMsIGJhc2VfcGIuTmV0SW1hZ2UsIDMpKTtcbn07XG5cblxuLyoqXG4gKiBAcGFyYW0gez9wcm90by5iYXNlLnYxLk5ldEltYWdlfHVuZGVmaW5lZH0gdmFsdWVcbiAqIEByZXR1cm4geyFwcm90by50by52MS5Ub01hcEluZm99IHJldHVybnMgdGhpc1xuKi9cbnByb3RvLnRvLnYxLlRvTWFwSW5mby5wcm90b3R5cGUuc2V0WmlwaW1hZ2UgPSBmdW5jdGlvbih2YWx1ZSkge1xuICByZXR1cm4ganNwYi5NZXNzYWdlLnNldFdyYXBwZXJGaWVsZCh0aGlzLCAzLCB2YWx1ZSk7XG59O1xuXG5cbi8qKlxuICogQ2xlYXJzIHRoZSBtZXNzYWdlIGZpZWxkIG1ha2luZyBpdCB1bmRlZmluZWQuXG4gKiBAcmV0dXJuIHshcHJvdG8udG8udjEuVG9NYXBJbmZvfSByZXR1cm5zIHRoaXNcbiAqL1xucHJvdG8udG8udjEuVG9NYXBJbmZvLnByb3RvdHlwZS5jbGVhclppcGltYWdlID0gZnVuY3Rpb24oKSB7XG4gIHJldHVybiB0aGlzLnNldFppcGltYWdlKHVuZGVmaW5lZCk7XG59O1xuXG5cbi8qKlxuICogUmV0dXJucyB3aGV0aGVyIHRoaXMgZmllbGQgaXMgc2V0LlxuICogQHJldHVybiB7Ym9vbGVhbn1cbiAqL1xucHJvdG8udG8udjEuVG9NYXBJbmZvLnByb3RvdHlwZS5oYXNaaXBpbWFnZSA9IGZ1bmN0aW9uKCkge1xuICByZXR1cm4ganNwYi5NZXNzYWdlLmdldEZpZWxkKHRoaXMsIDMpICE9IG51bGw7XG59O1xuXG5cbi8qKlxuICogb3B0aW9uYWwgZG91YmxlIENlbnRlckxvbmdpdHVkZSA9IDQ7XG4gKiBAcmV0dXJuIHtudW1iZXJ9XG4gKi9cbnByb3RvLnRvLnYxLlRvTWFwSW5mby5wcm90b3R5cGUuZ2V0Q2VudGVybG9uZ2l0dWRlID0gZnVuY3Rpb24oKSB7XG4gIHJldHVybiAvKiogQHR5cGUge251bWJlcn0gKi8gKGpzcGIuTWVzc2FnZS5nZXRGbG9hdGluZ1BvaW50RmllbGRXaXRoRGVmYXVsdCh0aGlzLCA0LCAwLjApKTtcbn07XG5cblxuLyoqXG4gKiBAcGFyYW0ge251bWJlcn0gdmFsdWVcbiAqIEByZXR1cm4geyFwcm90by50by52MS5Ub01hcEluZm99IHJldHVybnMgdGhpc1xuICovXG5wcm90by50by52MS5Ub01hcEluZm8ucHJvdG90eXBlLnNldENlbnRlcmxvbmdpdHVkZSA9IGZ1bmN0aW9uKHZhbHVlKSB7XG4gIHJldHVybiBqc3BiLk1lc3NhZ2Uuc2V0UHJvdG8zRmxvYXRGaWVsZCh0aGlzLCA0LCB2YWx1ZSk7XG59O1xuXG5cbi8qKlxuICogb3B0aW9uYWwgZG91YmxlIENlbnRlckxhdGl0dWRlID0gNTtcbiAqIEByZXR1cm4ge251bWJlcn1cbiAqL1xucHJvdG8udG8udjEuVG9NYXBJbmZvLnByb3RvdHlwZS5nZXRDZW50ZXJsYXRpdHVkZSA9IGZ1bmN0aW9uKCkge1xuICByZXR1cm4gLyoqIEB0eXBlIHtudW1iZXJ9ICovIChqc3BiLk1lc3NhZ2UuZ2V0RmxvYXRpbmdQb2ludEZpZWxkV2l0aERlZmF1bHQodGhpcywgNSwgMC4wKSk7XG59O1xuXG5cbi8qKlxuICogQHBhcmFtIHtudW1iZXJ9IHZhbHVlXG4gKiBAcmV0dXJuIHshcHJvdG8udG8udjEuVG9NYXBJbmZvfSByZXR1cm5zIHRoaXNcbiAqL1xucHJvdG8udG8udjEuVG9NYXBJbmZvLnByb3RvdHlwZS5zZXRDZW50ZXJsYXRpdHVkZSA9IGZ1bmN0aW9uKHZhbHVlKSB7XG4gIHJldHVybiBqc3BiLk1lc3NhZ2Uuc2V0UHJvdG8zRmxvYXRGaWVsZCh0aGlzLCA1LCB2YWx1ZSk7XG59O1xuXG5cbi8qKlxuICogb3B0aW9uYWwgaW50MzIgRGVmU2NhbGUgPSA2O1xuICogQHJldHVybiB7bnVtYmVyfVxuICovXG5wcm90by50by52MS5Ub01hcEluZm8ucHJvdG90eXBlLmdldERlZnNjYWxlID0gZnVuY3Rpb24oKSB7XG4gIHJldHVybiAvKiogQHR5cGUge251bWJlcn0gKi8gKGpzcGIuTWVzc2FnZS5nZXRGaWVsZFdpdGhEZWZhdWx0KHRoaXMsIDYsIDApKTtcbn07XG5cblxuLyoqXG4gKiBAcGFyYW0ge251bWJlcn0gdmFsdWVcbiAqIEByZXR1cm4geyFwcm90by50by52MS5Ub01hcEluZm99IHJldHVybnMgdGhpc1xuICovXG5wcm90by50by52MS5Ub01hcEluZm8ucHJvdG90eXBlLnNldERlZnNjYWxlID0gZnVuY3Rpb24odmFsdWUpIHtcbiAgcmV0dXJuIGpzcGIuTWVzc2FnZS5zZXRQcm90bzNJbnRGaWVsZCh0aGlzLCA2LCB2YWx1ZSk7XG59O1xuXG5cbi8qKlxuICogb3B0aW9uYWwgc3RyaW5nIG1hcFVybCA9IDc7XG4gKiBAcmV0dXJuIHtzdHJpbmd9XG4gKi9cbnByb3RvLnRvLnYxLlRvTWFwSW5mby5wcm90b3R5cGUuZ2V0TWFwdXJsID0gZnVuY3Rpb24oKSB7XG4gIHJldHVybiAvKiogQHR5cGUge3N0cmluZ30gKi8gKGpzcGIuTWVzc2FnZS5nZXRGaWVsZFdpdGhEZWZhdWx0KHRoaXMsIDcsIFwiXCIpKTtcbn07XG5cblxuLyoqXG4gKiBAcGFyYW0ge3N0cmluZ30gdmFsdWVcbiAqIEByZXR1cm4geyFwcm90by50by52MS5Ub01hcEluZm99IHJldHVybnMgdGhpc1xuICovXG5wcm90by50by52MS5Ub01hcEluZm8ucHJvdG90eXBlLnNldE1hcHVybCA9IGZ1bmN0aW9uKHZhbHVlKSB7XG4gIHJldHVybiBqc3BiLk1lc3NhZ2Uuc2V0UHJvdG8zU3RyaW5nRmllbGQodGhpcywgNywgdmFsdWUpO1xufTtcblxuXG4vKipcbiAqIG9wdGlvbmFsIHN0cmluZyBtYXBNZDUgPSA4O1xuICogQHJldHVybiB7c3RyaW5nfVxuICovXG5wcm90by50by52MS5Ub01hcEluZm8ucHJvdG90eXBlLmdldE1hcG1kNSA9IGZ1bmN0aW9uKCkge1xuICByZXR1cm4gLyoqIEB0eXBlIHtzdHJpbmd9ICovIChqc3BiLk1lc3NhZ2UuZ2V0RmllbGRXaXRoRGVmYXVsdCh0aGlzLCA4LCBcIlwiKSk7XG59O1xuXG5cbi8qKlxuICogQHBhcmFtIHtzdHJpbmd9IHZhbHVlXG4gKiBAcmV0dXJuIHshcHJvdG8udG8udjEuVG9NYXBJbmZvfSByZXR1cm5zIHRoaXNcbiAqL1xucHJvdG8udG8udjEuVG9NYXBJbmZvLnByb3RvdHlwZS5zZXRNYXBtZDUgPSBmdW5jdGlvbih2YWx1ZSkge1xuICByZXR1cm4ganNwYi5NZXNzYWdlLnNldFByb3RvM1N0cmluZ0ZpZWxkKHRoaXMsIDgsIHZhbHVlKTtcbn07XG5cblxuXG4vKipcbiAqIExpc3Qgb2YgcmVwZWF0ZWQgZmllbGRzIHdpdGhpbiB0aGlzIG1lc3NhZ2UgdHlwZS5cbiAqIEBwcml2YXRlIHshQXJyYXk8bnVtYmVyPn1cbiAqIEBjb25zdFxuICovXG5wcm90by50by52MS5Ub0FjdGlvblVzZXJzRGV0YWlsUmVwbHkucmVwZWF0ZWRGaWVsZHNfID0gWzFdO1xuXG5cblxuaWYgKGpzcGIuTWVzc2FnZS5HRU5FUkFURV9UT19PQkpFQ1QpIHtcbi8qKlxuICogQ3JlYXRlcyBhbiBvYmplY3QgcmVwcmVzZW50YXRpb24gb2YgdGhpcyBwcm90by5cbiAqIEZpZWxkIG5hbWVzIHRoYXQgYXJlIHJlc2VydmVkIGluIEphdmFTY3JpcHQgYW5kIHdpbGwgYmUgcmVuYW1lZCB0byBwYl9uYW1lLlxuICogT3B0aW9uYWwgZmllbGRzIHRoYXQgYXJlIG5vdCBzZXQgd2lsbCBiZSBzZXQgdG8gdW5kZWZpbmVkLlxuICogVG8gYWNjZXNzIGEgcmVzZXJ2ZWQgZmllbGQgdXNlLCBmb28ucGJfPG5hbWU+LCBlZywgZm9vLnBiX2RlZmF1bHQuXG4gKiBGb3IgdGhlIGxpc3Qgb2YgcmVzZXJ2ZWQgbmFtZXMgcGxlYXNlIHNlZTpcbiAqICAgICBuZXQvcHJvdG8yL2NvbXBpbGVyL2pzL2ludGVybmFsL2dlbmVyYXRvci5jYyNrS2V5d29yZC5cbiAqIEBwYXJhbSB7Ym9vbGVhbj19IG9wdF9pbmNsdWRlSW5zdGFuY2UgRGVwcmVjYXRlZC4gd2hldGhlciB0byBpbmNsdWRlIHRoZVxuICogICAgIEpTUEIgaW5zdGFuY2UgZm9yIHRyYW5zaXRpb25hbCBzb3kgcHJvdG8gc3VwcG9ydDpcbiAqICAgICBodHRwOi8vZ290by9zb3ktcGFyYW0tbWlncmF0aW9uXG4gKiBAcmV0dXJuIHshT2JqZWN0fVxuICovXG5wcm90by50by52MS5Ub0FjdGlvblVzZXJzRGV0YWlsUmVwbHkucHJvdG90eXBlLnRvT2JqZWN0ID0gZnVuY3Rpb24ob3B0X2luY2x1ZGVJbnN0YW5jZSkge1xuICByZXR1cm4gcHJvdG8udG8udjEuVG9BY3Rpb25Vc2Vyc0RldGFpbFJlcGx5LnRvT2JqZWN0KG9wdF9pbmNsdWRlSW5zdGFuY2UsIHRoaXMpO1xufTtcblxuXG4vKipcbiAqIFN0YXRpYyB2ZXJzaW9uIG9mIHRoZSB7QHNlZSB0b09iamVjdH0gbWV0aG9kLlxuICogQHBhcmFtIHtib29sZWFufHVuZGVmaW5lZH0gaW5jbHVkZUluc3RhbmNlIERlcHJlY2F0ZWQuIFdoZXRoZXIgdG8gaW5jbHVkZVxuICogICAgIHRoZSBKU1BCIGluc3RhbmNlIGZvciB0cmFuc2l0aW9uYWwgc295IHByb3RvIHN1cHBvcnQ6XG4gKiAgICAgaHR0cDovL2dvdG8vc295LXBhcmFtLW1pZ3JhdGlvblxuICogQHBhcmFtIHshcHJvdG8udG8udjEuVG9BY3Rpb25Vc2Vyc0RldGFpbFJlcGx5fSBtc2cgVGhlIG1zZyBpbnN0YW5jZSB0byB0cmFuc2Zvcm0uXG4gKiBAcmV0dXJuIHshT2JqZWN0fVxuICogQHN1cHByZXNzIHt1bnVzZWRMb2NhbFZhcmlhYmxlc30gZiBpcyBvbmx5IHVzZWQgZm9yIG5lc3RlZCBtZXNzYWdlc1xuICovXG5wcm90by50by52MS5Ub0FjdGlvblVzZXJzRGV0YWlsUmVwbHkudG9PYmplY3QgPSBmdW5jdGlvbihpbmNsdWRlSW5zdGFuY2UsIG1zZykge1xuICB2YXIgZiwgb2JqID0ge1xuICAgIHVzZXJzTGlzdDoganNwYi5NZXNzYWdlLnRvT2JqZWN0TGlzdChtc2cuZ2V0VXNlcnNMaXN0KCksXG4gICAgcHJvdG8udG8udjEuVXNlckluR2FtZUluZm8udG9PYmplY3QsIGluY2x1ZGVJbnN0YW5jZSlcbiAgfTtcblxuICBpZiAoaW5jbHVkZUluc3RhbmNlKSB7XG4gICAgb2JqLiRqc3BiTWVzc2FnZUluc3RhbmNlID0gbXNnO1xuICB9XG4gIHJldHVybiBvYmo7XG59O1xufVxuXG5cbi8qKlxuICogRGVzZXJpYWxpemVzIGJpbmFyeSBkYXRhIChpbiBwcm90b2J1ZiB3aXJlIGZvcm1hdCkuXG4gKiBAcGFyYW0ge2pzcGIuQnl0ZVNvdXJjZX0gYnl0ZXMgVGhlIGJ5dGVzIHRvIGRlc2VyaWFsaXplLlxuICogQHJldHVybiB7IXByb3RvLnRvLnYxLlRvQWN0aW9uVXNlcnNEZXRhaWxSZXBseX1cbiAqL1xucHJvdG8udG8udjEuVG9BY3Rpb25Vc2Vyc0RldGFpbFJlcGx5LmRlc2VyaWFsaXplQmluYXJ5ID0gZnVuY3Rpb24oYnl0ZXMpIHtcbiAgdmFyIHJlYWRlciA9IG5ldyBqc3BiLkJpbmFyeVJlYWRlcihieXRlcyk7XG4gIHZhciBtc2cgPSBuZXcgcHJvdG8udG8udjEuVG9BY3Rpb25Vc2Vyc0RldGFpbFJlcGx5O1xuICByZXR1cm4gcHJvdG8udG8udjEuVG9BY3Rpb25Vc2Vyc0RldGFpbFJlcGx5LmRlc2VyaWFsaXplQmluYXJ5RnJvbVJlYWRlcihtc2csIHJlYWRlcik7XG59O1xuXG5cbi8qKlxuICogRGVzZXJpYWxpemVzIGJpbmFyeSBkYXRhIChpbiBwcm90b2J1ZiB3aXJlIGZvcm1hdCkgZnJvbSB0aGVcbiAqIGdpdmVuIHJlYWRlciBpbnRvIHRoZSBnaXZlbiBtZXNzYWdlIG9iamVjdC5cbiAqIEBwYXJhbSB7IXByb3RvLnRvLnYxLlRvQWN0aW9uVXNlcnNEZXRhaWxSZXBseX0gbXNnIFRoZSBtZXNzYWdlIG9iamVjdCB0byBkZXNlcmlhbGl6ZSBpbnRvLlxuICogQHBhcmFtIHshanNwYi5CaW5hcnlSZWFkZXJ9IHJlYWRlciBUaGUgQmluYXJ5UmVhZGVyIHRvIHVzZS5cbiAqIEByZXR1cm4geyFwcm90by50by52MS5Ub0FjdGlvblVzZXJzRGV0YWlsUmVwbHl9XG4gKi9cbnByb3RvLnRvLnYxLlRvQWN0aW9uVXNlcnNEZXRhaWxSZXBseS5kZXNlcmlhbGl6ZUJpbmFyeUZyb21SZWFkZXIgPSBmdW5jdGlvbihtc2csIHJlYWRlcikge1xuICB3aGlsZSAocmVhZGVyLm5leHRGaWVsZCgpKSB7XG4gICAgaWYgKHJlYWRlci5pc0VuZEdyb3VwKCkpIHtcbiAgICAgIGJyZWFrO1xuICAgIH1cbiAgICB2YXIgZmllbGQgPSByZWFkZXIuZ2V0RmllbGROdW1iZXIoKTtcbiAgICBzd2l0Y2ggKGZpZWxkKSB7XG4gICAgY2FzZSAxOlxuICAgICAgdmFyIHZhbHVlID0gbmV3IHByb3RvLnRvLnYxLlVzZXJJbkdhbWVJbmZvO1xuICAgICAgcmVhZGVyLnJlYWRNZXNzYWdlKHZhbHVlLHByb3RvLnRvLnYxLlVzZXJJbkdhbWVJbmZvLmRlc2VyaWFsaXplQmluYXJ5RnJvbVJlYWRlcik7XG4gICAgICBtc2cuYWRkVXNlcnModmFsdWUpO1xuICAgICAgYnJlYWs7XG4gICAgZGVmYXVsdDpcbiAgICAgIHJlYWRlci5za2lwRmllbGQoKTtcbiAgICAgIGJyZWFrO1xuICAgIH1cbiAgfVxuICByZXR1cm4gbXNnO1xufTtcblxuXG4vKipcbiAqIFNlcmlhbGl6ZXMgdGhlIG1lc3NhZ2UgdG8gYmluYXJ5IGRhdGEgKGluIHByb3RvYnVmIHdpcmUgZm9ybWF0KS5cbiAqIEByZXR1cm4geyFVaW50OEFycmF5fVxuICovXG5wcm90by50by52MS5Ub0FjdGlvblVzZXJzRGV0YWlsUmVwbHkucHJvdG90eXBlLnNlcmlhbGl6ZUJpbmFyeSA9IGZ1bmN0aW9uKCkge1xuICB2YXIgd3JpdGVyID0gbmV3IGpzcGIuQmluYXJ5V3JpdGVyKCk7XG4gIHByb3RvLnRvLnYxLlRvQWN0aW9uVXNlcnNEZXRhaWxSZXBseS5zZXJpYWxpemVCaW5hcnlUb1dyaXRlcih0aGlzLCB3cml0ZXIpO1xuICByZXR1cm4gd3JpdGVyLmdldFJlc3VsdEJ1ZmZlcigpO1xufTtcblxuXG4vKipcbiAqIFNlcmlhbGl6ZXMgdGhlIGdpdmVuIG1lc3NhZ2UgdG8gYmluYXJ5IGRhdGEgKGluIHByb3RvYnVmIHdpcmVcbiAqIGZvcm1hdCksIHdyaXRpbmcgdG8gdGhlIGdpdmVuIEJpbmFyeVdyaXRlci5cbiAqIEBwYXJhbSB7IXByb3RvLnRvLnYxLlRvQWN0aW9uVXNlcnNEZXRhaWxSZXBseX0gbWVzc2FnZVxuICogQHBhcmFtIHshanNwYi5CaW5hcnlXcml0ZXJ9IHdyaXRlclxuICogQHN1cHByZXNzIHt1bnVzZWRMb2NhbFZhcmlhYmxlc30gZiBpcyBvbmx5IHVzZWQgZm9yIG5lc3RlZCBtZXNzYWdlc1xuICovXG5wcm90by50by52MS5Ub0FjdGlvblVzZXJzRGV0YWlsUmVwbHkuc2VyaWFsaXplQmluYXJ5VG9Xcml0ZXIgPSBmdW5jdGlvbihtZXNzYWdlLCB3cml0ZXIpIHtcbiAgdmFyIGYgPSB1bmRlZmluZWQ7XG4gIGYgPSBtZXNzYWdlLmdldFVzZXJzTGlzdCgpO1xuICBpZiAoZi5sZW5ndGggPiAwKSB7XG4gICAgd3JpdGVyLndyaXRlUmVwZWF0ZWRNZXNzYWdlKFxuICAgICAgMSxcbiAgICAgIGYsXG4gICAgICBwcm90by50by52MS5Vc2VySW5HYW1lSW5mby5zZXJpYWxpemVCaW5hcnlUb1dyaXRlclxuICAgICk7XG4gIH1cbn07XG5cblxuLyoqXG4gKiByZXBlYXRlZCBVc2VySW5HYW1lSW5mbyB1c2VycyA9IDE7XG4gKiBAcmV0dXJuIHshQXJyYXk8IXByb3RvLnRvLnYxLlVzZXJJbkdhbWVJbmZvPn1cbiAqL1xucHJvdG8udG8udjEuVG9BY3Rpb25Vc2Vyc0RldGFpbFJlcGx5LnByb3RvdHlwZS5nZXRVc2Vyc0xpc3QgPSBmdW5jdGlvbigpIHtcbiAgcmV0dXJuIC8qKiBAdHlwZXshQXJyYXk8IXByb3RvLnRvLnYxLlVzZXJJbkdhbWVJbmZvPn0gKi8gKFxuICAgIGpzcGIuTWVzc2FnZS5nZXRSZXBlYXRlZFdyYXBwZXJGaWVsZCh0aGlzLCBwcm90by50by52MS5Vc2VySW5HYW1lSW5mbywgMSkpO1xufTtcblxuXG4vKipcbiAqIEBwYXJhbSB7IUFycmF5PCFwcm90by50by52MS5Vc2VySW5HYW1lSW5mbz59IHZhbHVlXG4gKiBAcmV0dXJuIHshcHJvdG8udG8udjEuVG9BY3Rpb25Vc2Vyc0RldGFpbFJlcGx5fSByZXR1cm5zIHRoaXNcbiovXG5wcm90by50by52MS5Ub0FjdGlvblVzZXJzRGV0YWlsUmVwbHkucHJvdG90eXBlLnNldFVzZXJzTGlzdCA9IGZ1bmN0aW9uKHZhbHVlKSB7XG4gIHJldHVybiBqc3BiLk1lc3NhZ2Uuc2V0UmVwZWF0ZWRXcmFwcGVyRmllbGQodGhpcywgMSwgdmFsdWUpO1xufTtcblxuXG4vKipcbiAqIEBwYXJhbSB7IXByb3RvLnRvLnYxLlVzZXJJbkdhbWVJbmZvPX0gb3B0X3ZhbHVlXG4gKiBAcGFyYW0ge251bWJlcj19IG9wdF9pbmRleFxuICogQHJldHVybiB7IXByb3RvLnRvLnYxLlVzZXJJbkdhbWVJbmZvfVxuICovXG5wcm90by50by52MS5Ub0FjdGlvblVzZXJzRGV0YWlsUmVwbHkucHJvdG90eXBlLmFkZFVzZXJzID0gZnVuY3Rpb24ob3B0X3ZhbHVlLCBvcHRfaW5kZXgpIHtcbiAgcmV0dXJuIGpzcGIuTWVzc2FnZS5hZGRUb1JlcGVhdGVkV3JhcHBlckZpZWxkKHRoaXMsIDEsIG9wdF92YWx1ZSwgcHJvdG8udG8udjEuVXNlckluR2FtZUluZm8sIG9wdF9pbmRleCk7XG59O1xuXG5cbi8qKlxuICogQ2xlYXJzIHRoZSBsaXN0IG1ha2luZyBpdCBlbXB0eSBidXQgbm9uLW51bGwuXG4gKiBAcmV0dXJuIHshcHJvdG8udG8udjEuVG9BY3Rpb25Vc2Vyc0RldGFpbFJlcGx5fSByZXR1cm5zIHRoaXNcbiAqL1xucHJvdG8udG8udjEuVG9BY3Rpb25Vc2Vyc0RldGFpbFJlcGx5LnByb3RvdHlwZS5jbGVhclVzZXJzTGlzdCA9IGZ1bmN0aW9uKCkge1xuICByZXR1cm4gdGhpcy5zZXRVc2Vyc0xpc3QoW10pO1xufTtcblxuXG5cblxuXG5pZiAoanNwYi5NZXNzYWdlLkdFTkVSQVRFX1RPX09CSkVDVCkge1xuLyoqXG4gKiBDcmVhdGVzIGFuIG9iamVjdCByZXByZXNlbnRhdGlvbiBvZiB0aGlzIHByb3RvLlxuICogRmllbGQgbmFtZXMgdGhhdCBhcmUgcmVzZXJ2ZWQgaW4gSmF2YVNjcmlwdCBhbmQgd2lsbCBiZSByZW5hbWVkIHRvIHBiX25hbWUuXG4gKiBPcHRpb25hbCBmaWVsZHMgdGhhdCBhcmUgbm90IHNldCB3aWxsIGJlIHNldCB0byB1bmRlZmluZWQuXG4gKiBUbyBhY2Nlc3MgYSByZXNlcnZlZCBmaWVsZCB1c2UsIGZvby5wYl88bmFtZT4sIGVnLCBmb28ucGJfZGVmYXVsdC5cbiAqIEZvciB0aGUgbGlzdCBvZiByZXNlcnZlZCBuYW1lcyBwbGVhc2Ugc2VlOlxuICogICAgIG5ldC9wcm90bzIvY29tcGlsZXIvanMvaW50ZXJuYWwvZ2VuZXJhdG9yLmNjI2tLZXl3b3JkLlxuICogQHBhcmFtIHtib29sZWFuPX0gb3B0X2luY2x1ZGVJbnN0YW5jZSBEZXByZWNhdGVkLiB3aGV0aGVyIHRvIGluY2x1ZGUgdGhlXG4gKiAgICAgSlNQQiBpbnN0YW5jZSBmb3IgdHJhbnNpdGlvbmFsIHNveSBwcm90byBzdXBwb3J0OlxuICogICAgIGh0dHA6Ly9nb3RvL3NveS1wYXJhbS1taWdyYXRpb25cbiAqIEByZXR1cm4geyFPYmplY3R9XG4gKi9cbnByb3RvLnRvLnYxLlVzZXJJbkdhbWVJbmZvLnByb3RvdHlwZS50b09iamVjdCA9IGZ1bmN0aW9uKG9wdF9pbmNsdWRlSW5zdGFuY2UpIHtcbiAgcmV0dXJuIHByb3RvLnRvLnYxLlVzZXJJbkdhbWVJbmZvLnRvT2JqZWN0KG9wdF9pbmNsdWRlSW5zdGFuY2UsIHRoaXMpO1xufTtcblxuXG4vKipcbiAqIFN0YXRpYyB2ZXJzaW9uIG9mIHRoZSB7QHNlZSB0b09iamVjdH0gbWV0aG9kLlxuICogQHBhcmFtIHtib29sZWFufHVuZGVmaW5lZH0gaW5jbHVkZUluc3RhbmNlIERlcHJlY2F0ZWQuIFdoZXRoZXIgdG8gaW5jbHVkZVxuICogICAgIHRoZSBKU1BCIGluc3RhbmNlIGZvciB0cmFuc2l0aW9uYWwgc295IHByb3RvIHN1cHBvcnQ6XG4gKiAgICAgaHR0cDovL2dvdG8vc295LXBhcmFtLW1pZ3JhdGlvblxuICogQHBhcmFtIHshcHJvdG8udG8udjEuVXNlckluR2FtZUluZm99IG1zZyBUaGUgbXNnIGluc3RhbmNlIHRvIHRyYW5zZm9ybS5cbiAqIEByZXR1cm4geyFPYmplY3R9XG4gKiBAc3VwcHJlc3Mge3VudXNlZExvY2FsVmFyaWFibGVzfSBmIGlzIG9ubHkgdXNlZCBmb3IgbmVzdGVkIG1lc3NhZ2VzXG4gKi9cbnByb3RvLnRvLnYxLlVzZXJJbkdhbWVJbmZvLnRvT2JqZWN0ID0gZnVuY3Rpb24oaW5jbHVkZUluc3RhbmNlLCBtc2cpIHtcbiAgdmFyIGYsIG9iaiA9IHtcbiAgICBpZDoganNwYi5NZXNzYWdlLmdldEZpZWxkV2l0aERlZmF1bHQobXNnLCAxLCAwKSxcbiAgICBuYW1lOiBqc3BiLk1lc3NhZ2UuZ2V0RmllbGRXaXRoRGVmYXVsdChtc2csIDIsIFwiXCIpLFxuICAgIGRpc3RhbmNlOiBqc3BiLk1lc3NhZ2UuZ2V0RmllbGRXaXRoRGVmYXVsdChtc2csIDMsIDApLFxuICAgIHBhY2U6IGpzcGIuTWVzc2FnZS5nZXRGaWVsZFdpdGhEZWZhdWx0KG1zZywgNCwgMCksXG4gICAgYXZnaHI6IGpzcGIuTWVzc2FnZS5nZXRGaWVsZFdpdGhEZWZhdWx0KG1zZywgNSwgMCksXG4gICAgbWF4aHI6IGpzcGIuTWVzc2FnZS5nZXRGaWVsZFdpdGhEZWZhdWx0KG1zZywgNiwgMCksXG4gICAgY2Fsb3JpZToganNwYi5NZXNzYWdlLmdldEZpZWxkV2l0aERlZmF1bHQobXNnLCA3LCAwKSxcbiAgICBjazoganNwYi5NZXNzYWdlLmdldEZpZWxkV2l0aERlZmF1bHQobXNnLCA4LCAwKSxcbiAgICBlaToganNwYi5NZXNzYWdlLmdldEZsb2F0aW5nUG9pbnRGaWVsZFdpdGhEZWZhdWx0KG1zZywgOSwgMC4wKSxcbiAgICBlZmZlY3RpdmVudW06IGpzcGIuTWVzc2FnZS5nZXRGaWVsZFdpdGhEZWZhdWx0KG1zZywgMTAsIDApLFxuICAgIHRvdGFsY29udHJvbG51bToganNwYi5NZXNzYWdlLmdldEZpZWxkV2l0aERlZmF1bHQobXNnLCAxMSwgMCksXG4gICAgc3RhcnRzZWNvbmRzdGFtcDoganNwYi5NZXNzYWdlLmdldEZpZWxkV2l0aERlZmF1bHQobXNnLCAxMiwgMCksXG4gICAgZW5kc2Vjb25kc3RhbXA6IGpzcGIuTWVzc2FnZS5nZXRGaWVsZFdpdGhEZWZhdWx0KG1zZywgMTMsIDApLFxuICAgIG1zdGF0ZToganNwYi5NZXNzYWdlLmdldEZpZWxkV2l0aERlZmF1bHQobXNnLCAxNCwgMClcbiAgfTtcblxuICBpZiAoaW5jbHVkZUluc3RhbmNlKSB7XG4gICAgb2JqLiRqc3BiTWVzc2FnZUluc3RhbmNlID0gbXNnO1xuICB9XG4gIHJldHVybiBvYmo7XG59O1xufVxuXG5cbi8qKlxuICogRGVzZXJpYWxpemVzIGJpbmFyeSBkYXRhIChpbiBwcm90b2J1ZiB3aXJlIGZvcm1hdCkuXG4gKiBAcGFyYW0ge2pzcGIuQnl0ZVNvdXJjZX0gYnl0ZXMgVGhlIGJ5dGVzIHRvIGRlc2VyaWFsaXplLlxuICogQHJldHVybiB7IXByb3RvLnRvLnYxLlVzZXJJbkdhbWVJbmZvfVxuICovXG5wcm90by50by52MS5Vc2VySW5HYW1lSW5mby5kZXNlcmlhbGl6ZUJpbmFyeSA9IGZ1bmN0aW9uKGJ5dGVzKSB7XG4gIHZhciByZWFkZXIgPSBuZXcganNwYi5CaW5hcnlSZWFkZXIoYnl0ZXMpO1xuICB2YXIgbXNnID0gbmV3IHByb3RvLnRvLnYxLlVzZXJJbkdhbWVJbmZvO1xuICByZXR1cm4gcHJvdG8udG8udjEuVXNlckluR2FtZUluZm8uZGVzZXJpYWxpemVCaW5hcnlGcm9tUmVhZGVyKG1zZywgcmVhZGVyKTtcbn07XG5cblxuLyoqXG4gKiBEZXNlcmlhbGl6ZXMgYmluYXJ5IGRhdGEgKGluIHByb3RvYnVmIHdpcmUgZm9ybWF0KSBmcm9tIHRoZVxuICogZ2l2ZW4gcmVhZGVyIGludG8gdGhlIGdpdmVuIG1lc3NhZ2Ugb2JqZWN0LlxuICogQHBhcmFtIHshcHJvdG8udG8udjEuVXNlckluR2FtZUluZm99IG1zZyBUaGUgbWVzc2FnZSBvYmplY3QgdG8gZGVzZXJpYWxpemUgaW50by5cbiAqIEBwYXJhbSB7IWpzcGIuQmluYXJ5UmVhZGVyfSByZWFkZXIgVGhlIEJpbmFyeVJlYWRlciB0byB1c2UuXG4gKiBAcmV0dXJuIHshcHJvdG8udG8udjEuVXNlckluR2FtZUluZm99XG4gKi9cbnByb3RvLnRvLnYxLlVzZXJJbkdhbWVJbmZvLmRlc2VyaWFsaXplQmluYXJ5RnJvbVJlYWRlciA9IGZ1bmN0aW9uKG1zZywgcmVhZGVyKSB7XG4gIHdoaWxlIChyZWFkZXIubmV4dEZpZWxkKCkpIHtcbiAgICBpZiAocmVhZGVyLmlzRW5kR3JvdXAoKSkge1xuICAgICAgYnJlYWs7XG4gICAgfVxuICAgIHZhciBmaWVsZCA9IHJlYWRlci5nZXRGaWVsZE51bWJlcigpO1xuICAgIHN3aXRjaCAoZmllbGQpIHtcbiAgICBjYXNlIDE6XG4gICAgICB2YXIgdmFsdWUgPSAvKiogQHR5cGUge251bWJlcn0gKi8gKHJlYWRlci5yZWFkSW50MzIoKSk7XG4gICAgICBtc2cuc2V0SWQodmFsdWUpO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSAyOlxuICAgICAgdmFyIHZhbHVlID0gLyoqIEB0eXBlIHtzdHJpbmd9ICovIChyZWFkZXIucmVhZFN0cmluZygpKTtcbiAgICAgIG1zZy5zZXROYW1lKHZhbHVlKTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgMzpcbiAgICAgIHZhciB2YWx1ZSA9IC8qKiBAdHlwZSB7bnVtYmVyfSAqLyAocmVhZGVyLnJlYWRJbnQzMigpKTtcbiAgICAgIG1zZy5zZXREaXN0YW5jZSh2YWx1ZSk7XG4gICAgICBicmVhaztcbiAgICBjYXNlIDQ6XG4gICAgICB2YXIgdmFsdWUgPSAvKiogQHR5cGUge251bWJlcn0gKi8gKHJlYWRlci5yZWFkSW50MzIoKSk7XG4gICAgICBtc2cuc2V0UGFjZSh2YWx1ZSk7XG4gICAgICBicmVhaztcbiAgICBjYXNlIDU6XG4gICAgICB2YXIgdmFsdWUgPSAvKiogQHR5cGUge251bWJlcn0gKi8gKHJlYWRlci5yZWFkSW50MzIoKSk7XG4gICAgICBtc2cuc2V0QXZnaHIodmFsdWUpO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSA2OlxuICAgICAgdmFyIHZhbHVlID0gLyoqIEB0eXBlIHtudW1iZXJ9ICovIChyZWFkZXIucmVhZEludDMyKCkpO1xuICAgICAgbXNnLnNldE1heGhyKHZhbHVlKTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgNzpcbiAgICAgIHZhciB2YWx1ZSA9IC8qKiBAdHlwZSB7bnVtYmVyfSAqLyAocmVhZGVyLnJlYWRJbnQzMigpKTtcbiAgICAgIG1zZy5zZXRDYWxvcmllKHZhbHVlKTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgODpcbiAgICAgIHZhciB2YWx1ZSA9IC8qKiBAdHlwZSB7bnVtYmVyfSAqLyAocmVhZGVyLnJlYWRJbnQzMigpKTtcbiAgICAgIG1zZy5zZXRDayh2YWx1ZSk7XG4gICAgICBicmVhaztcbiAgICBjYXNlIDk6XG4gICAgICB2YXIgdmFsdWUgPSAvKiogQHR5cGUge251bWJlcn0gKi8gKHJlYWRlci5yZWFkRmxvYXQoKSk7XG4gICAgICBtc2cuc2V0RWkodmFsdWUpO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSAxMDpcbiAgICAgIHZhciB2YWx1ZSA9IC8qKiBAdHlwZSB7bnVtYmVyfSAqLyAocmVhZGVyLnJlYWRJbnQzMigpKTtcbiAgICAgIG1zZy5zZXRFZmZlY3RpdmVudW0odmFsdWUpO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSAxMTpcbiAgICAgIHZhciB2YWx1ZSA9IC8qKiBAdHlwZSB7bnVtYmVyfSAqLyAocmVhZGVyLnJlYWRJbnQzMigpKTtcbiAgICAgIG1zZy5zZXRUb3RhbGNvbnRyb2xudW0odmFsdWUpO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSAxMjpcbiAgICAgIHZhciB2YWx1ZSA9IC8qKiBAdHlwZSB7bnVtYmVyfSAqLyAocmVhZGVyLnJlYWRJbnQ2NCgpKTtcbiAgICAgIG1zZy5zZXRTdGFydHNlY29uZHN0YW1wKHZhbHVlKTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgMTM6XG4gICAgICB2YXIgdmFsdWUgPSAvKiogQHR5cGUge251bWJlcn0gKi8gKHJlYWRlci5yZWFkSW50NjQoKSk7XG4gICAgICBtc2cuc2V0RW5kc2Vjb25kc3RhbXAodmFsdWUpO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSAxNDpcbiAgICAgIHZhciB2YWx1ZSA9IC8qKiBAdHlwZSB7bnVtYmVyfSAqLyAocmVhZGVyLnJlYWRJbnQzMigpKTtcbiAgICAgIG1zZy5zZXRNc3RhdGUodmFsdWUpO1xuICAgICAgYnJlYWs7XG4gICAgZGVmYXVsdDpcbiAgICAgIHJlYWRlci5za2lwRmllbGQoKTtcbiAgICAgIGJyZWFrO1xuICAgIH1cbiAgfVxuICByZXR1cm4gbXNnO1xufTtcblxuXG4vKipcbiAqIFNlcmlhbGl6ZXMgdGhlIG1lc3NhZ2UgdG8gYmluYXJ5IGRhdGEgKGluIHByb3RvYnVmIHdpcmUgZm9ybWF0KS5cbiAqIEByZXR1cm4geyFVaW50OEFycmF5fVxuICovXG5wcm90by50by52MS5Vc2VySW5HYW1lSW5mby5wcm90b3R5cGUuc2VyaWFsaXplQmluYXJ5ID0gZnVuY3Rpb24oKSB7XG4gIHZhciB3cml0ZXIgPSBuZXcganNwYi5CaW5hcnlXcml0ZXIoKTtcbiAgcHJvdG8udG8udjEuVXNlckluR2FtZUluZm8uc2VyaWFsaXplQmluYXJ5VG9Xcml0ZXIodGhpcywgd3JpdGVyKTtcbiAgcmV0dXJuIHdyaXRlci5nZXRSZXN1bHRCdWZmZXIoKTtcbn07XG5cblxuLyoqXG4gKiBTZXJpYWxpemVzIHRoZSBnaXZlbiBtZXNzYWdlIHRvIGJpbmFyeSBkYXRhIChpbiBwcm90b2J1ZiB3aXJlXG4gKiBmb3JtYXQpLCB3cml0aW5nIHRvIHRoZSBnaXZlbiBCaW5hcnlXcml0ZXIuXG4gKiBAcGFyYW0geyFwcm90by50by52MS5Vc2VySW5HYW1lSW5mb30gbWVzc2FnZVxuICogQHBhcmFtIHshanNwYi5CaW5hcnlXcml0ZXJ9IHdyaXRlclxuICogQHN1cHByZXNzIHt1bnVzZWRMb2NhbFZhcmlhYmxlc30gZiBpcyBvbmx5IHVzZWQgZm9yIG5lc3RlZCBtZXNzYWdlc1xuICovXG5wcm90by50by52MS5Vc2VySW5HYW1lSW5mby5zZXJpYWxpemVCaW5hcnlUb1dyaXRlciA9IGZ1bmN0aW9uKG1lc3NhZ2UsIHdyaXRlcikge1xuICB2YXIgZiA9IHVuZGVmaW5lZDtcbiAgZiA9IG1lc3NhZ2UuZ2V0SWQoKTtcbiAgaWYgKGYgIT09IDApIHtcbiAgICB3cml0ZXIud3JpdGVJbnQzMihcbiAgICAgIDEsXG4gICAgICBmXG4gICAgKTtcbiAgfVxuICBmID0gbWVzc2FnZS5nZXROYW1lKCk7XG4gIGlmIChmLmxlbmd0aCA+IDApIHtcbiAgICB3cml0ZXIud3JpdGVTdHJpbmcoXG4gICAgICAyLFxuICAgICAgZlxuICAgICk7XG4gIH1cbiAgZiA9IG1lc3NhZ2UuZ2V0RGlzdGFuY2UoKTtcbiAgaWYgKGYgIT09IDApIHtcbiAgICB3cml0ZXIud3JpdGVJbnQzMihcbiAgICAgIDMsXG4gICAgICBmXG4gICAgKTtcbiAgfVxuICBmID0gbWVzc2FnZS5nZXRQYWNlKCk7XG4gIGlmIChmICE9PSAwKSB7XG4gICAgd3JpdGVyLndyaXRlSW50MzIoXG4gICAgICA0LFxuICAgICAgZlxuICAgICk7XG4gIH1cbiAgZiA9IG1lc3NhZ2UuZ2V0QXZnaHIoKTtcbiAgaWYgKGYgIT09IDApIHtcbiAgICB3cml0ZXIud3JpdGVJbnQzMihcbiAgICAgIDUsXG4gICAgICBmXG4gICAgKTtcbiAgfVxuICBmID0gbWVzc2FnZS5nZXRNYXhocigpO1xuICBpZiAoZiAhPT0gMCkge1xuICAgIHdyaXRlci53cml0ZUludDMyKFxuICAgICAgNixcbiAgICAgIGZcbiAgICApO1xuICB9XG4gIGYgPSBtZXNzYWdlLmdldENhbG9yaWUoKTtcbiAgaWYgKGYgIT09IDApIHtcbiAgICB3cml0ZXIud3JpdGVJbnQzMihcbiAgICAgIDcsXG4gICAgICBmXG4gICAgKTtcbiAgfVxuICBmID0gbWVzc2FnZS5nZXRDaygpO1xuICBpZiAoZiAhPT0gMCkge1xuICAgIHdyaXRlci53cml0ZUludDMyKFxuICAgICAgOCxcbiAgICAgIGZcbiAgICApO1xuICB9XG4gIGYgPSBtZXNzYWdlLmdldEVpKCk7XG4gIGlmIChmICE9PSAwLjApIHtcbiAgICB3cml0ZXIud3JpdGVGbG9hdChcbiAgICAgIDksXG4gICAgICBmXG4gICAgKTtcbiAgfVxuICBmID0gbWVzc2FnZS5nZXRFZmZlY3RpdmVudW0oKTtcbiAgaWYgKGYgIT09IDApIHtcbiAgICB3cml0ZXIud3JpdGVJbnQzMihcbiAgICAgIDEwLFxuICAgICAgZlxuICAgICk7XG4gIH1cbiAgZiA9IG1lc3NhZ2UuZ2V0VG90YWxjb250cm9sbnVtKCk7XG4gIGlmIChmICE9PSAwKSB7XG4gICAgd3JpdGVyLndyaXRlSW50MzIoXG4gICAgICAxMSxcbiAgICAgIGZcbiAgICApO1xuICB9XG4gIGYgPSBtZXNzYWdlLmdldFN0YXJ0c2Vjb25kc3RhbXAoKTtcbiAgaWYgKGYgIT09IDApIHtcbiAgICB3cml0ZXIud3JpdGVJbnQ2NChcbiAgICAgIDEyLFxuICAgICAgZlxuICAgICk7XG4gIH1cbiAgZiA9IG1lc3NhZ2UuZ2V0RW5kc2Vjb25kc3RhbXAoKTtcbiAgaWYgKGYgIT09IDApIHtcbiAgICB3cml0ZXIud3JpdGVJbnQ2NChcbiAgICAgIDEzLFxuICAgICAgZlxuICAgICk7XG4gIH1cbiAgZiA9IG1lc3NhZ2UuZ2V0TXN0YXRlKCk7XG4gIGlmIChmICE9PSAwKSB7XG4gICAgd3JpdGVyLndyaXRlSW50MzIoXG4gICAgICAxNCxcbiAgICAgIGZcbiAgICApO1xuICB9XG59O1xuXG5cbi8qKlxuICogb3B0aW9uYWwgaW50MzIgaWQgPSAxO1xuICogQHJldHVybiB7bnVtYmVyfVxuICovXG5wcm90by50by52MS5Vc2VySW5HYW1lSW5mby5wcm90b3R5cGUuZ2V0SWQgPSBmdW5jdGlvbigpIHtcbiAgcmV0dXJuIC8qKiBAdHlwZSB7bnVtYmVyfSAqLyAoanNwYi5NZXNzYWdlLmdldEZpZWxkV2l0aERlZmF1bHQodGhpcywgMSwgMCkpO1xufTtcblxuXG4vKipcbiAqIEBwYXJhbSB7bnVtYmVyfSB2YWx1ZVxuICogQHJldHVybiB7IXByb3RvLnRvLnYxLlVzZXJJbkdhbWVJbmZvfSByZXR1cm5zIHRoaXNcbiAqL1xucHJvdG8udG8udjEuVXNlckluR2FtZUluZm8ucHJvdG90eXBlLnNldElkID0gZnVuY3Rpb24odmFsdWUpIHtcbiAgcmV0dXJuIGpzcGIuTWVzc2FnZS5zZXRQcm90bzNJbnRGaWVsZCh0aGlzLCAxLCB2YWx1ZSk7XG59O1xuXG5cbi8qKlxuICogb3B0aW9uYWwgc3RyaW5nIG5hbWUgPSAyO1xuICogQHJldHVybiB7c3RyaW5nfVxuICovXG5wcm90by50by52MS5Vc2VySW5HYW1lSW5mby5wcm90b3R5cGUuZ2V0TmFtZSA9IGZ1bmN0aW9uKCkge1xuICByZXR1cm4gLyoqIEB0eXBlIHtzdHJpbmd9ICovIChqc3BiLk1lc3NhZ2UuZ2V0RmllbGRXaXRoRGVmYXVsdCh0aGlzLCAyLCBcIlwiKSk7XG59O1xuXG5cbi8qKlxuICogQHBhcmFtIHtzdHJpbmd9IHZhbHVlXG4gKiBAcmV0dXJuIHshcHJvdG8udG8udjEuVXNlckluR2FtZUluZm99IHJldHVybnMgdGhpc1xuICovXG5wcm90by50by52MS5Vc2VySW5HYW1lSW5mby5wcm90b3R5cGUuc2V0TmFtZSA9IGZ1bmN0aW9uKHZhbHVlKSB7XG4gIHJldHVybiBqc3BiLk1lc3NhZ2Uuc2V0UHJvdG8zU3RyaW5nRmllbGQodGhpcywgMiwgdmFsdWUpO1xufTtcblxuXG4vKipcbiAqIG9wdGlvbmFsIGludDMyIGRpc3RhbmNlID0gMztcbiAqIEByZXR1cm4ge251bWJlcn1cbiAqL1xucHJvdG8udG8udjEuVXNlckluR2FtZUluZm8ucHJvdG90eXBlLmdldERpc3RhbmNlID0gZnVuY3Rpb24oKSB7XG4gIHJldHVybiAvKiogQHR5cGUge251bWJlcn0gKi8gKGpzcGIuTWVzc2FnZS5nZXRGaWVsZFdpdGhEZWZhdWx0KHRoaXMsIDMsIDApKTtcbn07XG5cblxuLyoqXG4gKiBAcGFyYW0ge251bWJlcn0gdmFsdWVcbiAqIEByZXR1cm4geyFwcm90by50by52MS5Vc2VySW5HYW1lSW5mb30gcmV0dXJucyB0aGlzXG4gKi9cbnByb3RvLnRvLnYxLlVzZXJJbkdhbWVJbmZvLnByb3RvdHlwZS5zZXREaXN0YW5jZSA9IGZ1bmN0aW9uKHZhbHVlKSB7XG4gIHJldHVybiBqc3BiLk1lc3NhZ2Uuc2V0UHJvdG8zSW50RmllbGQodGhpcywgMywgdmFsdWUpO1xufTtcblxuXG4vKipcbiAqIG9wdGlvbmFsIGludDMyIHBhY2UgPSA0O1xuICogQHJldHVybiB7bnVtYmVyfVxuICovXG5wcm90by50by52MS5Vc2VySW5HYW1lSW5mby5wcm90b3R5cGUuZ2V0UGFjZSA9IGZ1bmN0aW9uKCkge1xuICByZXR1cm4gLyoqIEB0eXBlIHtudW1iZXJ9ICovIChqc3BiLk1lc3NhZ2UuZ2V0RmllbGRXaXRoRGVmYXVsdCh0aGlzLCA0LCAwKSk7XG59O1xuXG5cbi8qKlxuICogQHBhcmFtIHtudW1iZXJ9IHZhbHVlXG4gKiBAcmV0dXJuIHshcHJvdG8udG8udjEuVXNlckluR2FtZUluZm99IHJldHVybnMgdGhpc1xuICovXG5wcm90by50by52MS5Vc2VySW5HYW1lSW5mby5wcm90b3R5cGUuc2V0UGFjZSA9IGZ1bmN0aW9uKHZhbHVlKSB7XG4gIHJldHVybiBqc3BiLk1lc3NhZ2Uuc2V0UHJvdG8zSW50RmllbGQodGhpcywgNCwgdmFsdWUpO1xufTtcblxuXG4vKipcbiAqIG9wdGlvbmFsIGludDMyIGF2Z0hyID0gNTtcbiAqIEByZXR1cm4ge251bWJlcn1cbiAqL1xucHJvdG8udG8udjEuVXNlckluR2FtZUluZm8ucHJvdG90eXBlLmdldEF2Z2hyID0gZnVuY3Rpb24oKSB7XG4gIHJldHVybiAvKiogQHR5cGUge251bWJlcn0gKi8gKGpzcGIuTWVzc2FnZS5nZXRGaWVsZFdpdGhEZWZhdWx0KHRoaXMsIDUsIDApKTtcbn07XG5cblxuLyoqXG4gKiBAcGFyYW0ge251bWJlcn0gdmFsdWVcbiAqIEByZXR1cm4geyFwcm90by50by52MS5Vc2VySW5HYW1lSW5mb30gcmV0dXJucyB0aGlzXG4gKi9cbnByb3RvLnRvLnYxLlVzZXJJbkdhbWVJbmZvLnByb3RvdHlwZS5zZXRBdmdociA9IGZ1bmN0aW9uKHZhbHVlKSB7XG4gIHJldHVybiBqc3BiLk1lc3NhZ2Uuc2V0UHJvdG8zSW50RmllbGQodGhpcywgNSwgdmFsdWUpO1xufTtcblxuXG4vKipcbiAqIG9wdGlvbmFsIGludDMyIG1heEhyID0gNjtcbiAqIEByZXR1cm4ge251bWJlcn1cbiAqL1xucHJvdG8udG8udjEuVXNlckluR2FtZUluZm8ucHJvdG90eXBlLmdldE1heGhyID0gZnVuY3Rpb24oKSB7XG4gIHJldHVybiAvKiogQHR5cGUge251bWJlcn0gKi8gKGpzcGIuTWVzc2FnZS5nZXRGaWVsZFdpdGhEZWZhdWx0KHRoaXMsIDYsIDApKTtcbn07XG5cblxuLyoqXG4gKiBAcGFyYW0ge251bWJlcn0gdmFsdWVcbiAqIEByZXR1cm4geyFwcm90by50by52MS5Vc2VySW5HYW1lSW5mb30gcmV0dXJucyB0aGlzXG4gKi9cbnByb3RvLnRvLnYxLlVzZXJJbkdhbWVJbmZvLnByb3RvdHlwZS5zZXRNYXhociA9IGZ1bmN0aW9uKHZhbHVlKSB7XG4gIHJldHVybiBqc3BiLk1lc3NhZ2Uuc2V0UHJvdG8zSW50RmllbGQodGhpcywgNiwgdmFsdWUpO1xufTtcblxuXG4vKipcbiAqIG9wdGlvbmFsIGludDMyIENhbG9yaWUgPSA3O1xuICogQHJldHVybiB7bnVtYmVyfVxuICovXG5wcm90by50by52MS5Vc2VySW5HYW1lSW5mby5wcm90b3R5cGUuZ2V0Q2Fsb3JpZSA9IGZ1bmN0aW9uKCkge1xuICByZXR1cm4gLyoqIEB0eXBlIHtudW1iZXJ9ICovIChqc3BiLk1lc3NhZ2UuZ2V0RmllbGRXaXRoRGVmYXVsdCh0aGlzLCA3LCAwKSk7XG59O1xuXG5cbi8qKlxuICogQHBhcmFtIHtudW1iZXJ9IHZhbHVlXG4gKiBAcmV0dXJuIHshcHJvdG8udG8udjEuVXNlckluR2FtZUluZm99IHJldHVybnMgdGhpc1xuICovXG5wcm90by50by52MS5Vc2VySW5HYW1lSW5mby5wcm90b3R5cGUuc2V0Q2Fsb3JpZSA9IGZ1bmN0aW9uKHZhbHVlKSB7XG4gIHJldHVybiBqc3BiLk1lc3NhZ2Uuc2V0UHJvdG8zSW50RmllbGQodGhpcywgNywgdmFsdWUpO1xufTtcblxuXG4vKipcbiAqIG9wdGlvbmFsIGludDMyIENrID0gODtcbiAqIEByZXR1cm4ge251bWJlcn1cbiAqL1xucHJvdG8udG8udjEuVXNlckluR2FtZUluZm8ucHJvdG90eXBlLmdldENrID0gZnVuY3Rpb24oKSB7XG4gIHJldHVybiAvKiogQHR5cGUge251bWJlcn0gKi8gKGpzcGIuTWVzc2FnZS5nZXRGaWVsZFdpdGhEZWZhdWx0KHRoaXMsIDgsIDApKTtcbn07XG5cblxuLyoqXG4gKiBAcGFyYW0ge251bWJlcn0gdmFsdWVcbiAqIEByZXR1cm4geyFwcm90by50by52MS5Vc2VySW5HYW1lSW5mb30gcmV0dXJucyB0aGlzXG4gKi9cbnByb3RvLnRvLnYxLlVzZXJJbkdhbWVJbmZvLnByb3RvdHlwZS5zZXRDayA9IGZ1bmN0aW9uKHZhbHVlKSB7XG4gIHJldHVybiBqc3BiLk1lc3NhZ2Uuc2V0UHJvdG8zSW50RmllbGQodGhpcywgOCwgdmFsdWUpO1xufTtcblxuXG4vKipcbiAqIG9wdGlvbmFsIGZsb2F0IEVpID0gOTtcbiAqIEByZXR1cm4ge251bWJlcn1cbiAqL1xucHJvdG8udG8udjEuVXNlckluR2FtZUluZm8ucHJvdG90eXBlLmdldEVpID0gZnVuY3Rpb24oKSB7XG4gIHJldHVybiAvKiogQHR5cGUge251bWJlcn0gKi8gKGpzcGIuTWVzc2FnZS5nZXRGbG9hdGluZ1BvaW50RmllbGRXaXRoRGVmYXVsdCh0aGlzLCA5LCAwLjApKTtcbn07XG5cblxuLyoqXG4gKiBAcGFyYW0ge251bWJlcn0gdmFsdWVcbiAqIEByZXR1cm4geyFwcm90by50by52MS5Vc2VySW5HYW1lSW5mb30gcmV0dXJucyB0aGlzXG4gKi9cbnByb3RvLnRvLnYxLlVzZXJJbkdhbWVJbmZvLnByb3RvdHlwZS5zZXRFaSA9IGZ1bmN0aW9uKHZhbHVlKSB7XG4gIHJldHVybiBqc3BiLk1lc3NhZ2Uuc2V0UHJvdG8zRmxvYXRGaWVsZCh0aGlzLCA5LCB2YWx1ZSk7XG59O1xuXG5cbi8qKlxuICogb3B0aW9uYWwgaW50MzIgRWZmZWN0aXZlTnVtID0gMTA7XG4gKiBAcmV0dXJuIHtudW1iZXJ9XG4gKi9cbnByb3RvLnRvLnYxLlVzZXJJbkdhbWVJbmZvLnByb3RvdHlwZS5nZXRFZmZlY3RpdmVudW0gPSBmdW5jdGlvbigpIHtcbiAgcmV0dXJuIC8qKiBAdHlwZSB7bnVtYmVyfSAqLyAoanNwYi5NZXNzYWdlLmdldEZpZWxkV2l0aERlZmF1bHQodGhpcywgMTAsIDApKTtcbn07XG5cblxuLyoqXG4gKiBAcGFyYW0ge251bWJlcn0gdmFsdWVcbiAqIEByZXR1cm4geyFwcm90by50by52MS5Vc2VySW5HYW1lSW5mb30gcmV0dXJucyB0aGlzXG4gKi9cbnByb3RvLnRvLnYxLlVzZXJJbkdhbWVJbmZvLnByb3RvdHlwZS5zZXRFZmZlY3RpdmVudW0gPSBmdW5jdGlvbih2YWx1ZSkge1xuICByZXR1cm4ganNwYi5NZXNzYWdlLnNldFByb3RvM0ludEZpZWxkKHRoaXMsIDEwLCB2YWx1ZSk7XG59O1xuXG5cbi8qKlxuICogb3B0aW9uYWwgaW50MzIgVG90YWxDb250cm9sTnVtID0gMTE7XG4gKiBAcmV0dXJuIHtudW1iZXJ9XG4gKi9cbnByb3RvLnRvLnYxLlVzZXJJbkdhbWVJbmZvLnByb3RvdHlwZS5nZXRUb3RhbGNvbnRyb2xudW0gPSBmdW5jdGlvbigpIHtcbiAgcmV0dXJuIC8qKiBAdHlwZSB7bnVtYmVyfSAqLyAoanNwYi5NZXNzYWdlLmdldEZpZWxkV2l0aERlZmF1bHQodGhpcywgMTEsIDApKTtcbn07XG5cblxuLyoqXG4gKiBAcGFyYW0ge251bWJlcn0gdmFsdWVcbiAqIEByZXR1cm4geyFwcm90by50by52MS5Vc2VySW5HYW1lSW5mb30gcmV0dXJucyB0aGlzXG4gKi9cbnByb3RvLnRvLnYxLlVzZXJJbkdhbWVJbmZvLnByb3RvdHlwZS5zZXRUb3RhbGNvbnRyb2xudW0gPSBmdW5jdGlvbih2YWx1ZSkge1xuICByZXR1cm4ganNwYi5NZXNzYWdlLnNldFByb3RvM0ludEZpZWxkKHRoaXMsIDExLCB2YWx1ZSk7XG59O1xuXG5cbi8qKlxuICogb3B0aW9uYWwgaW50NjQgc3RhcnRTZWNvbmRTdGFtcCA9IDEyO1xuICogQHJldHVybiB7bnVtYmVyfVxuICovXG5wcm90by50by52MS5Vc2VySW5HYW1lSW5mby5wcm90b3R5cGUuZ2V0U3RhcnRzZWNvbmRzdGFtcCA9IGZ1bmN0aW9uKCkge1xuICByZXR1cm4gLyoqIEB0eXBlIHtudW1iZXJ9ICovIChqc3BiLk1lc3NhZ2UuZ2V0RmllbGRXaXRoRGVmYXVsdCh0aGlzLCAxMiwgMCkpO1xufTtcblxuXG4vKipcbiAqIEBwYXJhbSB7bnVtYmVyfSB2YWx1ZVxuICogQHJldHVybiB7IXByb3RvLnRvLnYxLlVzZXJJbkdhbWVJbmZvfSByZXR1cm5zIHRoaXNcbiAqL1xucHJvdG8udG8udjEuVXNlckluR2FtZUluZm8ucHJvdG90eXBlLnNldFN0YXJ0c2Vjb25kc3RhbXAgPSBmdW5jdGlvbih2YWx1ZSkge1xuICByZXR1cm4ganNwYi5NZXNzYWdlLnNldFByb3RvM0ludEZpZWxkKHRoaXMsIDEyLCB2YWx1ZSk7XG59O1xuXG5cbi8qKlxuICogb3B0aW9uYWwgaW50NjQgZW5kU2Vjb25kU3RhbXAgPSAxMztcbiAqIEByZXR1cm4ge251bWJlcn1cbiAqL1xucHJvdG8udG8udjEuVXNlckluR2FtZUluZm8ucHJvdG90eXBlLmdldEVuZHNlY29uZHN0YW1wID0gZnVuY3Rpb24oKSB7XG4gIHJldHVybiAvKiogQHR5cGUge251bWJlcn0gKi8gKGpzcGIuTWVzc2FnZS5nZXRGaWVsZFdpdGhEZWZhdWx0KHRoaXMsIDEzLCAwKSk7XG59O1xuXG5cbi8qKlxuICogQHBhcmFtIHtudW1iZXJ9IHZhbHVlXG4gKiBAcmV0dXJuIHshcHJvdG8udG8udjEuVXNlckluR2FtZUluZm99IHJldHVybnMgdGhpc1xuICovXG5wcm90by50by52MS5Vc2VySW5HYW1lSW5mby5wcm90b3R5cGUuc2V0RW5kc2Vjb25kc3RhbXAgPSBmdW5jdGlvbih2YWx1ZSkge1xuICByZXR1cm4ganNwYi5NZXNzYWdlLnNldFByb3RvM0ludEZpZWxkKHRoaXMsIDEzLCB2YWx1ZSk7XG59O1xuXG5cbi8qKlxuICogb3B0aW9uYWwgaW50MzIgbVN0YXRlID0gMTQ7XG4gKiBAcmV0dXJuIHtudW1iZXJ9XG4gKi9cbnByb3RvLnRvLnYxLlVzZXJJbkdhbWVJbmZvLnByb3RvdHlwZS5nZXRNc3RhdGUgPSBmdW5jdGlvbigpIHtcbiAgcmV0dXJuIC8qKiBAdHlwZSB7bnVtYmVyfSAqLyAoanNwYi5NZXNzYWdlLmdldEZpZWxkV2l0aERlZmF1bHQodGhpcywgMTQsIDApKTtcbn07XG5cblxuLyoqXG4gKiBAcGFyYW0ge251bWJlcn0gdmFsdWVcbiAqIEByZXR1cm4geyFwcm90by50by52MS5Vc2VySW5HYW1lSW5mb30gcmV0dXJucyB0aGlzXG4gKi9cbnByb3RvLnRvLnYxLlVzZXJJbkdhbWVJbmZvLnByb3RvdHlwZS5zZXRNc3RhdGUgPSBmdW5jdGlvbih2YWx1ZSkge1xuICByZXR1cm4ganNwYi5NZXNzYWdlLnNldFByb3RvM0ludEZpZWxkKHRoaXMsIDE0LCB2YWx1ZSk7XG59O1xuXG5cblxuLyoqXG4gKiBMaXN0IG9mIHJlcGVhdGVkIGZpZWxkcyB3aXRoaW4gdGhpcyBtZXNzYWdlIHR5cGUuXG4gKiBAcHJpdmF0ZSB7IUFycmF5PG51bWJlcj59XG4gKiBAY29uc3RcbiAqL1xucHJvdG8udG8udjEuVG9BbnlVc2VySGlzdG9yeUdwc1F1ZXJ5UmVxdWVzdC5yZXBlYXRlZEZpZWxkc18gPSBbMl07XG5cblxuXG5pZiAoanNwYi5NZXNzYWdlLkdFTkVSQVRFX1RPX09CSkVDVCkge1xuLyoqXG4gKiBDcmVhdGVzIGFuIG9iamVjdCByZXByZXNlbnRhdGlvbiBvZiB0aGlzIHByb3RvLlxuICogRmllbGQgbmFtZXMgdGhhdCBhcmUgcmVzZXJ2ZWQgaW4gSmF2YVNjcmlwdCBhbmQgd2lsbCBiZSByZW5hbWVkIHRvIHBiX25hbWUuXG4gKiBPcHRpb25hbCBmaWVsZHMgdGhhdCBhcmUgbm90IHNldCB3aWxsIGJlIHNldCB0byB1bmRlZmluZWQuXG4gKiBUbyBhY2Nlc3MgYSByZXNlcnZlZCBmaWVsZCB1c2UsIGZvby5wYl88bmFtZT4sIGVnLCBmb28ucGJfZGVmYXVsdC5cbiAqIEZvciB0aGUgbGlzdCBvZiByZXNlcnZlZCBuYW1lcyBwbGVhc2Ugc2VlOlxuICogICAgIG5ldC9wcm90bzIvY29tcGlsZXIvanMvaW50ZXJuYWwvZ2VuZXJhdG9yLmNjI2tLZXl3b3JkLlxuICogQHBhcmFtIHtib29sZWFuPX0gb3B0X2luY2x1ZGVJbnN0YW5jZSBEZXByZWNhdGVkLiB3aGV0aGVyIHRvIGluY2x1ZGUgdGhlXG4gKiAgICAgSlNQQiBpbnN0YW5jZSBmb3IgdHJhbnNpdGlvbmFsIHNveSBwcm90byBzdXBwb3J0OlxuICogICAgIGh0dHA6Ly9nb3RvL3NveS1wYXJhbS1taWdyYXRpb25cbiAqIEByZXR1cm4geyFPYmplY3R9XG4gKi9cbnByb3RvLnRvLnYxLlRvQW55VXNlckhpc3RvcnlHcHNRdWVyeVJlcXVlc3QucHJvdG90eXBlLnRvT2JqZWN0ID0gZnVuY3Rpb24ob3B0X2luY2x1ZGVJbnN0YW5jZSkge1xuICByZXR1cm4gcHJvdG8udG8udjEuVG9BbnlVc2VySGlzdG9yeUdwc1F1ZXJ5UmVxdWVzdC50b09iamVjdChvcHRfaW5jbHVkZUluc3RhbmNlLCB0aGlzKTtcbn07XG5cblxuLyoqXG4gKiBTdGF0aWMgdmVyc2lvbiBvZiB0aGUge0BzZWUgdG9PYmplY3R9IG1ldGhvZC5cbiAqIEBwYXJhbSB7Ym9vbGVhbnx1bmRlZmluZWR9IGluY2x1ZGVJbnN0YW5jZSBEZXByZWNhdGVkLiBXaGV0aGVyIHRvIGluY2x1ZGVcbiAqICAgICB0aGUgSlNQQiBpbnN0YW5jZSBmb3IgdHJhbnNpdGlvbmFsIHNveSBwcm90byBzdXBwb3J0OlxuICogICAgIGh0dHA6Ly9nb3RvL3NveS1wYXJhbS1taWdyYXRpb25cbiAqIEBwYXJhbSB7IXByb3RvLnRvLnYxLlRvQW55VXNlckhpc3RvcnlHcHNRdWVyeVJlcXVlc3R9IG1zZyBUaGUgbXNnIGluc3RhbmNlIHRvIHRyYW5zZm9ybS5cbiAqIEByZXR1cm4geyFPYmplY3R9XG4gKiBAc3VwcHJlc3Mge3VudXNlZExvY2FsVmFyaWFibGVzfSBmIGlzIG9ubHkgdXNlZCBmb3IgbmVzdGVkIG1lc3NhZ2VzXG4gKi9cbnByb3RvLnRvLnYxLlRvQW55VXNlckhpc3RvcnlHcHNRdWVyeVJlcXVlc3QudG9PYmplY3QgPSBmdW5jdGlvbihpbmNsdWRlSW5zdGFuY2UsIG1zZykge1xuICB2YXIgZiwgb2JqID0ge1xuICAgIGlkOiBqc3BiLk1lc3NhZ2UuZ2V0RmllbGRXaXRoRGVmYXVsdChtc2csIDEsIDApLFxuICAgIHVzZXJpZGFyckxpc3Q6IChmID0ganNwYi5NZXNzYWdlLmdldFJlcGVhdGVkRmllbGQobXNnLCAyKSkgPT0gbnVsbCA/IHVuZGVmaW5lZCA6IGYsXG4gICAgc3RhcnRzZWNvbmRzdGFtcDoganNwYi5NZXNzYWdlLmdldEZpZWxkV2l0aERlZmF1bHQobXNnLCAzLCAwKSxcbiAgICBlbmRzZWNvbmRzdGFtcDoganNwYi5NZXNzYWdlLmdldEZpZWxkV2l0aERlZmF1bHQobXNnLCA0LCAwKVxuICB9O1xuXG4gIGlmIChpbmNsdWRlSW5zdGFuY2UpIHtcbiAgICBvYmouJGpzcGJNZXNzYWdlSW5zdGFuY2UgPSBtc2c7XG4gIH1cbiAgcmV0dXJuIG9iajtcbn07XG59XG5cblxuLyoqXG4gKiBEZXNlcmlhbGl6ZXMgYmluYXJ5IGRhdGEgKGluIHByb3RvYnVmIHdpcmUgZm9ybWF0KS5cbiAqIEBwYXJhbSB7anNwYi5CeXRlU291cmNlfSBieXRlcyBUaGUgYnl0ZXMgdG8gZGVzZXJpYWxpemUuXG4gKiBAcmV0dXJuIHshcHJvdG8udG8udjEuVG9BbnlVc2VySGlzdG9yeUdwc1F1ZXJ5UmVxdWVzdH1cbiAqL1xucHJvdG8udG8udjEuVG9BbnlVc2VySGlzdG9yeUdwc1F1ZXJ5UmVxdWVzdC5kZXNlcmlhbGl6ZUJpbmFyeSA9IGZ1bmN0aW9uKGJ5dGVzKSB7XG4gIHZhciByZWFkZXIgPSBuZXcganNwYi5CaW5hcnlSZWFkZXIoYnl0ZXMpO1xuICB2YXIgbXNnID0gbmV3IHByb3RvLnRvLnYxLlRvQW55VXNlckhpc3RvcnlHcHNRdWVyeVJlcXVlc3Q7XG4gIHJldHVybiBwcm90by50by52MS5Ub0FueVVzZXJIaXN0b3J5R3BzUXVlcnlSZXF1ZXN0LmRlc2VyaWFsaXplQmluYXJ5RnJvbVJlYWRlcihtc2csIHJlYWRlcik7XG59O1xuXG5cbi8qKlxuICogRGVzZXJpYWxpemVzIGJpbmFyeSBkYXRhIChpbiBwcm90b2J1ZiB3aXJlIGZvcm1hdCkgZnJvbSB0aGVcbiAqIGdpdmVuIHJlYWRlciBpbnRvIHRoZSBnaXZlbiBtZXNzYWdlIG9iamVjdC5cbiAqIEBwYXJhbSB7IXByb3RvLnRvLnYxLlRvQW55VXNlckhpc3RvcnlHcHNRdWVyeVJlcXVlc3R9IG1zZyBUaGUgbWVzc2FnZSBvYmplY3QgdG8gZGVzZXJpYWxpemUgaW50by5cbiAqIEBwYXJhbSB7IWpzcGIuQmluYXJ5UmVhZGVyfSByZWFkZXIgVGhlIEJpbmFyeVJlYWRlciB0byB1c2UuXG4gKiBAcmV0dXJuIHshcHJvdG8udG8udjEuVG9BbnlVc2VySGlzdG9yeUdwc1F1ZXJ5UmVxdWVzdH1cbiAqL1xucHJvdG8udG8udjEuVG9BbnlVc2VySGlzdG9yeUdwc1F1ZXJ5UmVxdWVzdC5kZXNlcmlhbGl6ZUJpbmFyeUZyb21SZWFkZXIgPSBmdW5jdGlvbihtc2csIHJlYWRlcikge1xuICB3aGlsZSAocmVhZGVyLm5leHRGaWVsZCgpKSB7XG4gICAgaWYgKHJlYWRlci5pc0VuZEdyb3VwKCkpIHtcbiAgICAgIGJyZWFrO1xuICAgIH1cbiAgICB2YXIgZmllbGQgPSByZWFkZXIuZ2V0RmllbGROdW1iZXIoKTtcbiAgICBzd2l0Y2ggKGZpZWxkKSB7XG4gICAgY2FzZSAxOlxuICAgICAgdmFyIHZhbHVlID0gLyoqIEB0eXBlIHtudW1iZXJ9ICovIChyZWFkZXIucmVhZEludDMyKCkpO1xuICAgICAgbXNnLnNldElkKHZhbHVlKTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgMjpcbiAgICAgIHZhciB2YWx1ZXMgPSAvKiogQHR5cGUgeyFBcnJheTxudW1iZXI+fSAqLyAocmVhZGVyLmlzRGVsaW1pdGVkKCkgPyByZWFkZXIucmVhZFBhY2tlZEludDMyKCkgOiBbcmVhZGVyLnJlYWRJbnQzMigpXSk7XG4gICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHZhbHVlcy5sZW5ndGg7IGkrKykge1xuICAgICAgICBtc2cuYWRkVXNlcmlkYXJyKHZhbHVlc1tpXSk7XG4gICAgICB9XG4gICAgICBicmVhaztcbiAgICBjYXNlIDM6XG4gICAgICB2YXIgdmFsdWUgPSAvKiogQHR5cGUge251bWJlcn0gKi8gKHJlYWRlci5yZWFkSW50NjQoKSk7XG4gICAgICBtc2cuc2V0U3RhcnRzZWNvbmRzdGFtcCh2YWx1ZSk7XG4gICAgICBicmVhaztcbiAgICBjYXNlIDQ6XG4gICAgICB2YXIgdmFsdWUgPSAvKiogQHR5cGUge251bWJlcn0gKi8gKHJlYWRlci5yZWFkSW50NjQoKSk7XG4gICAgICBtc2cuc2V0RW5kc2Vjb25kc3RhbXAodmFsdWUpO1xuICAgICAgYnJlYWs7XG4gICAgZGVmYXVsdDpcbiAgICAgIHJlYWRlci5za2lwRmllbGQoKTtcbiAgICAgIGJyZWFrO1xuICAgIH1cbiAgfVxuICByZXR1cm4gbXNnO1xufTtcblxuXG4vKipcbiAqIFNlcmlhbGl6ZXMgdGhlIG1lc3NhZ2UgdG8gYmluYXJ5IGRhdGEgKGluIHByb3RvYnVmIHdpcmUgZm9ybWF0KS5cbiAqIEByZXR1cm4geyFVaW50OEFycmF5fVxuICovXG5wcm90by50by52MS5Ub0FueVVzZXJIaXN0b3J5R3BzUXVlcnlSZXF1ZXN0LnByb3RvdHlwZS5zZXJpYWxpemVCaW5hcnkgPSBmdW5jdGlvbigpIHtcbiAgdmFyIHdyaXRlciA9IG5ldyBqc3BiLkJpbmFyeVdyaXRlcigpO1xuICBwcm90by50by52MS5Ub0FueVVzZXJIaXN0b3J5R3BzUXVlcnlSZXF1ZXN0LnNlcmlhbGl6ZUJpbmFyeVRvV3JpdGVyKHRoaXMsIHdyaXRlcik7XG4gIHJldHVybiB3cml0ZXIuZ2V0UmVzdWx0QnVmZmVyKCk7XG59O1xuXG5cbi8qKlxuICogU2VyaWFsaXplcyB0aGUgZ2l2ZW4gbWVzc2FnZSB0byBiaW5hcnkgZGF0YSAoaW4gcHJvdG9idWYgd2lyZVxuICogZm9ybWF0KSwgd3JpdGluZyB0byB0aGUgZ2l2ZW4gQmluYXJ5V3JpdGVyLlxuICogQHBhcmFtIHshcHJvdG8udG8udjEuVG9BbnlVc2VySGlzdG9yeUdwc1F1ZXJ5UmVxdWVzdH0gbWVzc2FnZVxuICogQHBhcmFtIHshanNwYi5CaW5hcnlXcml0ZXJ9IHdyaXRlclxuICogQHN1cHByZXNzIHt1bnVzZWRMb2NhbFZhcmlhYmxlc30gZiBpcyBvbmx5IHVzZWQgZm9yIG5lc3RlZCBtZXNzYWdlc1xuICovXG5wcm90by50by52MS5Ub0FueVVzZXJIaXN0b3J5R3BzUXVlcnlSZXF1ZXN0LnNlcmlhbGl6ZUJpbmFyeVRvV3JpdGVyID0gZnVuY3Rpb24obWVzc2FnZSwgd3JpdGVyKSB7XG4gIHZhciBmID0gdW5kZWZpbmVkO1xuICBmID0gbWVzc2FnZS5nZXRJZCgpO1xuICBpZiAoZiAhPT0gMCkge1xuICAgIHdyaXRlci53cml0ZUludDMyKFxuICAgICAgMSxcbiAgICAgIGZcbiAgICApO1xuICB9XG4gIGYgPSBtZXNzYWdlLmdldFVzZXJpZGFyckxpc3QoKTtcbiAgaWYgKGYubGVuZ3RoID4gMCkge1xuICAgIHdyaXRlci53cml0ZVBhY2tlZEludDMyKFxuICAgICAgMixcbiAgICAgIGZcbiAgICApO1xuICB9XG4gIGYgPSBtZXNzYWdlLmdldFN0YXJ0c2Vjb25kc3RhbXAoKTtcbiAgaWYgKGYgIT09IDApIHtcbiAgICB3cml0ZXIud3JpdGVJbnQ2NChcbiAgICAgIDMsXG4gICAgICBmXG4gICAgKTtcbiAgfVxuICBmID0gbWVzc2FnZS5nZXRFbmRzZWNvbmRzdGFtcCgpO1xuICBpZiAoZiAhPT0gMCkge1xuICAgIHdyaXRlci53cml0ZUludDY0KFxuICAgICAgNCxcbiAgICAgIGZcbiAgICApO1xuICB9XG59O1xuXG5cbi8qKlxuICogb3B0aW9uYWwgaW50MzIgaWQgPSAxO1xuICogQHJldHVybiB7bnVtYmVyfVxuICovXG5wcm90by50by52MS5Ub0FueVVzZXJIaXN0b3J5R3BzUXVlcnlSZXF1ZXN0LnByb3RvdHlwZS5nZXRJZCA9IGZ1bmN0aW9uKCkge1xuICByZXR1cm4gLyoqIEB0eXBlIHtudW1iZXJ9ICovIChqc3BiLk1lc3NhZ2UuZ2V0RmllbGRXaXRoRGVmYXVsdCh0aGlzLCAxLCAwKSk7XG59O1xuXG5cbi8qKlxuICogQHBhcmFtIHtudW1iZXJ9IHZhbHVlXG4gKiBAcmV0dXJuIHshcHJvdG8udG8udjEuVG9BbnlVc2VySGlzdG9yeUdwc1F1ZXJ5UmVxdWVzdH0gcmV0dXJucyB0aGlzXG4gKi9cbnByb3RvLnRvLnYxLlRvQW55VXNlckhpc3RvcnlHcHNRdWVyeVJlcXVlc3QucHJvdG90eXBlLnNldElkID0gZnVuY3Rpb24odmFsdWUpIHtcbiAgcmV0dXJuIGpzcGIuTWVzc2FnZS5zZXRQcm90bzNJbnRGaWVsZCh0aGlzLCAxLCB2YWx1ZSk7XG59O1xuXG5cbi8qKlxuICogcmVwZWF0ZWQgaW50MzIgdXNlcklkQXJyID0gMjtcbiAqIEByZXR1cm4geyFBcnJheTxudW1iZXI+fVxuICovXG5wcm90by50by52MS5Ub0FueVVzZXJIaXN0b3J5R3BzUXVlcnlSZXF1ZXN0LnByb3RvdHlwZS5nZXRVc2VyaWRhcnJMaXN0ID0gZnVuY3Rpb24oKSB7XG4gIHJldHVybiAvKiogQHR5cGUgeyFBcnJheTxudW1iZXI+fSAqLyAoanNwYi5NZXNzYWdlLmdldFJlcGVhdGVkRmllbGQodGhpcywgMikpO1xufTtcblxuXG4vKipcbiAqIEBwYXJhbSB7IUFycmF5PG51bWJlcj59IHZhbHVlXG4gKiBAcmV0dXJuIHshcHJvdG8udG8udjEuVG9BbnlVc2VySGlzdG9yeUdwc1F1ZXJ5UmVxdWVzdH0gcmV0dXJucyB0aGlzXG4gKi9cbnByb3RvLnRvLnYxLlRvQW55VXNlckhpc3RvcnlHcHNRdWVyeVJlcXVlc3QucHJvdG90eXBlLnNldFVzZXJpZGFyckxpc3QgPSBmdW5jdGlvbih2YWx1ZSkge1xuICByZXR1cm4ganNwYi5NZXNzYWdlLnNldEZpZWxkKHRoaXMsIDIsIHZhbHVlIHx8IFtdKTtcbn07XG5cblxuLyoqXG4gKiBAcGFyYW0ge251bWJlcn0gdmFsdWVcbiAqIEBwYXJhbSB7bnVtYmVyPX0gb3B0X2luZGV4XG4gKiBAcmV0dXJuIHshcHJvdG8udG8udjEuVG9BbnlVc2VySGlzdG9yeUdwc1F1ZXJ5UmVxdWVzdH0gcmV0dXJucyB0aGlzXG4gKi9cbnByb3RvLnRvLnYxLlRvQW55VXNlckhpc3RvcnlHcHNRdWVyeVJlcXVlc3QucHJvdG90eXBlLmFkZFVzZXJpZGFyciA9IGZ1bmN0aW9uKHZhbHVlLCBvcHRfaW5kZXgpIHtcbiAgcmV0dXJuIGpzcGIuTWVzc2FnZS5hZGRUb1JlcGVhdGVkRmllbGQodGhpcywgMiwgdmFsdWUsIG9wdF9pbmRleCk7XG59O1xuXG5cbi8qKlxuICogQ2xlYXJzIHRoZSBsaXN0IG1ha2luZyBpdCBlbXB0eSBidXQgbm9uLW51bGwuXG4gKiBAcmV0dXJuIHshcHJvdG8udG8udjEuVG9BbnlVc2VySGlzdG9yeUdwc1F1ZXJ5UmVxdWVzdH0gcmV0dXJucyB0aGlzXG4gKi9cbnByb3RvLnRvLnYxLlRvQW55VXNlckhpc3RvcnlHcHNRdWVyeVJlcXVlc3QucHJvdG90eXBlLmNsZWFyVXNlcmlkYXJyTGlzdCA9IGZ1bmN0aW9uKCkge1xuICByZXR1cm4gdGhpcy5zZXRVc2VyaWRhcnJMaXN0KFtdKTtcbn07XG5cblxuLyoqXG4gKiBvcHRpb25hbCBpbnQ2NCBzdGFydFNlY29uZFN0YW1wID0gMztcbiAqIEByZXR1cm4ge251bWJlcn1cbiAqL1xucHJvdG8udG8udjEuVG9BbnlVc2VySGlzdG9yeUdwc1F1ZXJ5UmVxdWVzdC5wcm90b3R5cGUuZ2V0U3RhcnRzZWNvbmRzdGFtcCA9IGZ1bmN0aW9uKCkge1xuICByZXR1cm4gLyoqIEB0eXBlIHtudW1iZXJ9ICovIChqc3BiLk1lc3NhZ2UuZ2V0RmllbGRXaXRoRGVmYXVsdCh0aGlzLCAzLCAwKSk7XG59O1xuXG5cbi8qKlxuICogQHBhcmFtIHtudW1iZXJ9IHZhbHVlXG4gKiBAcmV0dXJuIHshcHJvdG8udG8udjEuVG9BbnlVc2VySGlzdG9yeUdwc1F1ZXJ5UmVxdWVzdH0gcmV0dXJucyB0aGlzXG4gKi9cbnByb3RvLnRvLnYxLlRvQW55VXNlckhpc3RvcnlHcHNRdWVyeVJlcXVlc3QucHJvdG90eXBlLnNldFN0YXJ0c2Vjb25kc3RhbXAgPSBmdW5jdGlvbih2YWx1ZSkge1xuICByZXR1cm4ganNwYi5NZXNzYWdlLnNldFByb3RvM0ludEZpZWxkKHRoaXMsIDMsIHZhbHVlKTtcbn07XG5cblxuLyoqXG4gKiBvcHRpb25hbCBpbnQ2NCBlbmRTZWNvbmRTdGFtcCA9IDQ7XG4gKiBAcmV0dXJuIHtudW1iZXJ9XG4gKi9cbnByb3RvLnRvLnYxLlRvQW55VXNlckhpc3RvcnlHcHNRdWVyeVJlcXVlc3QucHJvdG90eXBlLmdldEVuZHNlY29uZHN0YW1wID0gZnVuY3Rpb24oKSB7XG4gIHJldHVybiAvKiogQHR5cGUge251bWJlcn0gKi8gKGpzcGIuTWVzc2FnZS5nZXRGaWVsZFdpdGhEZWZhdWx0KHRoaXMsIDQsIDApKTtcbn07XG5cblxuLyoqXG4gKiBAcGFyYW0ge251bWJlcn0gdmFsdWVcbiAqIEByZXR1cm4geyFwcm90by50by52MS5Ub0FueVVzZXJIaXN0b3J5R3BzUXVlcnlSZXF1ZXN0fSByZXR1cm5zIHRoaXNcbiAqL1xucHJvdG8udG8udjEuVG9BbnlVc2VySGlzdG9yeUdwc1F1ZXJ5UmVxdWVzdC5wcm90b3R5cGUuc2V0RW5kc2Vjb25kc3RhbXAgPSBmdW5jdGlvbih2YWx1ZSkge1xuICByZXR1cm4ganNwYi5NZXNzYWdlLnNldFByb3RvM0ludEZpZWxkKHRoaXMsIDQsIHZhbHVlKTtcbn07XG5cblxuXG5cblxuaWYgKGpzcGIuTWVzc2FnZS5HRU5FUkFURV9UT19PQkpFQ1QpIHtcbi8qKlxuICogQ3JlYXRlcyBhbiBvYmplY3QgcmVwcmVzZW50YXRpb24gb2YgdGhpcyBwcm90by5cbiAqIEZpZWxkIG5hbWVzIHRoYXQgYXJlIHJlc2VydmVkIGluIEphdmFTY3JpcHQgYW5kIHdpbGwgYmUgcmVuYW1lZCB0byBwYl9uYW1lLlxuICogT3B0aW9uYWwgZmllbGRzIHRoYXQgYXJlIG5vdCBzZXQgd2lsbCBiZSBzZXQgdG8gdW5kZWZpbmVkLlxuICogVG8gYWNjZXNzIGEgcmVzZXJ2ZWQgZmllbGQgdXNlLCBmb28ucGJfPG5hbWU+LCBlZywgZm9vLnBiX2RlZmF1bHQuXG4gKiBGb3IgdGhlIGxpc3Qgb2YgcmVzZXJ2ZWQgbmFtZXMgcGxlYXNlIHNlZTpcbiAqICAgICBuZXQvcHJvdG8yL2NvbXBpbGVyL2pzL2ludGVybmFsL2dlbmVyYXRvci5jYyNrS2V5d29yZC5cbiAqIEBwYXJhbSB7Ym9vbGVhbj19IG9wdF9pbmNsdWRlSW5zdGFuY2UgRGVwcmVjYXRlZC4gd2hldGhlciB0byBpbmNsdWRlIHRoZVxuICogICAgIEpTUEIgaW5zdGFuY2UgZm9yIHRyYW5zaXRpb25hbCBzb3kgcHJvdG8gc3VwcG9ydDpcbiAqICAgICBodHRwOi8vZ290by9zb3ktcGFyYW0tbWlncmF0aW9uXG4gKiBAcmV0dXJuIHshT2JqZWN0fVxuICovXG5wcm90by50by52MS5Ub1VzZXJzSW5HYW1lSGlzdG9yeUdwc1F1ZXJ5UmVxdWVzdC5wcm90b3R5cGUudG9PYmplY3QgPSBmdW5jdGlvbihvcHRfaW5jbHVkZUluc3RhbmNlKSB7XG4gIHJldHVybiBwcm90by50by52MS5Ub1VzZXJzSW5HYW1lSGlzdG9yeUdwc1F1ZXJ5UmVxdWVzdC50b09iamVjdChvcHRfaW5jbHVkZUluc3RhbmNlLCB0aGlzKTtcbn07XG5cblxuLyoqXG4gKiBTdGF0aWMgdmVyc2lvbiBvZiB0aGUge0BzZWUgdG9PYmplY3R9IG1ldGhvZC5cbiAqIEBwYXJhbSB7Ym9vbGVhbnx1bmRlZmluZWR9IGluY2x1ZGVJbnN0YW5jZSBEZXByZWNhdGVkLiBXaGV0aGVyIHRvIGluY2x1ZGVcbiAqICAgICB0aGUgSlNQQiBpbnN0YW5jZSBmb3IgdHJhbnNpdGlvbmFsIHNveSBwcm90byBzdXBwb3J0OlxuICogICAgIGh0dHA6Ly9nb3RvL3NveS1wYXJhbS1taWdyYXRpb25cbiAqIEBwYXJhbSB7IXByb3RvLnRvLnYxLlRvVXNlcnNJbkdhbWVIaXN0b3J5R3BzUXVlcnlSZXF1ZXN0fSBtc2cgVGhlIG1zZyBpbnN0YW5jZSB0byB0cmFuc2Zvcm0uXG4gKiBAcmV0dXJuIHshT2JqZWN0fVxuICogQHN1cHByZXNzIHt1bnVzZWRMb2NhbFZhcmlhYmxlc30gZiBpcyBvbmx5IHVzZWQgZm9yIG5lc3RlZCBtZXNzYWdlc1xuICovXG5wcm90by50by52MS5Ub1VzZXJzSW5HYW1lSGlzdG9yeUdwc1F1ZXJ5UmVxdWVzdC50b09iamVjdCA9IGZ1bmN0aW9uKGluY2x1ZGVJbnN0YW5jZSwgbXNnKSB7XG4gIHZhciBmLCBvYmogPSB7XG4gICAgaWQ6IGpzcGIuTWVzc2FnZS5nZXRGaWVsZFdpdGhEZWZhdWx0KG1zZywgMSwgMCksXG4gICAgc3RhcnRzZWNvbmRzdGFtcDoganNwYi5NZXNzYWdlLmdldEZpZWxkV2l0aERlZmF1bHQobXNnLCAyLCAwKSxcbiAgICBlbmRzZWNvbmRzdGFtcDoganNwYi5NZXNzYWdlLmdldEZpZWxkV2l0aERlZmF1bHQobXNnLCAzLCAwKVxuICB9O1xuXG4gIGlmIChpbmNsdWRlSW5zdGFuY2UpIHtcbiAgICBvYmouJGpzcGJNZXNzYWdlSW5zdGFuY2UgPSBtc2c7XG4gIH1cbiAgcmV0dXJuIG9iajtcbn07XG59XG5cblxuLyoqXG4gKiBEZXNlcmlhbGl6ZXMgYmluYXJ5IGRhdGEgKGluIHByb3RvYnVmIHdpcmUgZm9ybWF0KS5cbiAqIEBwYXJhbSB7anNwYi5CeXRlU291cmNlfSBieXRlcyBUaGUgYnl0ZXMgdG8gZGVzZXJpYWxpemUuXG4gKiBAcmV0dXJuIHshcHJvdG8udG8udjEuVG9Vc2Vyc0luR2FtZUhpc3RvcnlHcHNRdWVyeVJlcXVlc3R9XG4gKi9cbnByb3RvLnRvLnYxLlRvVXNlcnNJbkdhbWVIaXN0b3J5R3BzUXVlcnlSZXF1ZXN0LmRlc2VyaWFsaXplQmluYXJ5ID0gZnVuY3Rpb24oYnl0ZXMpIHtcbiAgdmFyIHJlYWRlciA9IG5ldyBqc3BiLkJpbmFyeVJlYWRlcihieXRlcyk7XG4gIHZhciBtc2cgPSBuZXcgcHJvdG8udG8udjEuVG9Vc2Vyc0luR2FtZUhpc3RvcnlHcHNRdWVyeVJlcXVlc3Q7XG4gIHJldHVybiBwcm90by50by52MS5Ub1VzZXJzSW5HYW1lSGlzdG9yeUdwc1F1ZXJ5UmVxdWVzdC5kZXNlcmlhbGl6ZUJpbmFyeUZyb21SZWFkZXIobXNnLCByZWFkZXIpO1xufTtcblxuXG4vKipcbiAqIERlc2VyaWFsaXplcyBiaW5hcnkgZGF0YSAoaW4gcHJvdG9idWYgd2lyZSBmb3JtYXQpIGZyb20gdGhlXG4gKiBnaXZlbiByZWFkZXIgaW50byB0aGUgZ2l2ZW4gbWVzc2FnZSBvYmplY3QuXG4gKiBAcGFyYW0geyFwcm90by50by52MS5Ub1VzZXJzSW5HYW1lSGlzdG9yeUdwc1F1ZXJ5UmVxdWVzdH0gbXNnIFRoZSBtZXNzYWdlIG9iamVjdCB0byBkZXNlcmlhbGl6ZSBpbnRvLlxuICogQHBhcmFtIHshanNwYi5CaW5hcnlSZWFkZXJ9IHJlYWRlciBUaGUgQmluYXJ5UmVhZGVyIHRvIHVzZS5cbiAqIEByZXR1cm4geyFwcm90by50by52MS5Ub1VzZXJzSW5HYW1lSGlzdG9yeUdwc1F1ZXJ5UmVxdWVzdH1cbiAqL1xucHJvdG8udG8udjEuVG9Vc2Vyc0luR2FtZUhpc3RvcnlHcHNRdWVyeVJlcXVlc3QuZGVzZXJpYWxpemVCaW5hcnlGcm9tUmVhZGVyID0gZnVuY3Rpb24obXNnLCByZWFkZXIpIHtcbiAgd2hpbGUgKHJlYWRlci5uZXh0RmllbGQoKSkge1xuICAgIGlmIChyZWFkZXIuaXNFbmRHcm91cCgpKSB7XG4gICAgICBicmVhaztcbiAgICB9XG4gICAgdmFyIGZpZWxkID0gcmVhZGVyLmdldEZpZWxkTnVtYmVyKCk7XG4gICAgc3dpdGNoIChmaWVsZCkge1xuICAgIGNhc2UgMTpcbiAgICAgIHZhciB2YWx1ZSA9IC8qKiBAdHlwZSB7bnVtYmVyfSAqLyAocmVhZGVyLnJlYWRJbnQzMigpKTtcbiAgICAgIG1zZy5zZXRJZCh2YWx1ZSk7XG4gICAgICBicmVhaztcbiAgICBjYXNlIDI6XG4gICAgICB2YXIgdmFsdWUgPSAvKiogQHR5cGUge251bWJlcn0gKi8gKHJlYWRlci5yZWFkSW50NjQoKSk7XG4gICAgICBtc2cuc2V0U3RhcnRzZWNvbmRzdGFtcCh2YWx1ZSk7XG4gICAgICBicmVhaztcbiAgICBjYXNlIDM6XG4gICAgICB2YXIgdmFsdWUgPSAvKiogQHR5cGUge251bWJlcn0gKi8gKHJlYWRlci5yZWFkSW50NjQoKSk7XG4gICAgICBtc2cuc2V0RW5kc2Vjb25kc3RhbXAodmFsdWUpO1xuICAgICAgYnJlYWs7XG4gICAgZGVmYXVsdDpcbiAgICAgIHJlYWRlci5za2lwRmllbGQoKTtcbiAgICAgIGJyZWFrO1xuICAgIH1cbiAgfVxuICByZXR1cm4gbXNnO1xufTtcblxuXG4vKipcbiAqIFNlcmlhbGl6ZXMgdGhlIG1lc3NhZ2UgdG8gYmluYXJ5IGRhdGEgKGluIHByb3RvYnVmIHdpcmUgZm9ybWF0KS5cbiAqIEByZXR1cm4geyFVaW50OEFycmF5fVxuICovXG5wcm90by50by52MS5Ub1VzZXJzSW5HYW1lSGlzdG9yeUdwc1F1ZXJ5UmVxdWVzdC5wcm90b3R5cGUuc2VyaWFsaXplQmluYXJ5ID0gZnVuY3Rpb24oKSB7XG4gIHZhciB3cml0ZXIgPSBuZXcganNwYi5CaW5hcnlXcml0ZXIoKTtcbiAgcHJvdG8udG8udjEuVG9Vc2Vyc0luR2FtZUhpc3RvcnlHcHNRdWVyeVJlcXVlc3Quc2VyaWFsaXplQmluYXJ5VG9Xcml0ZXIodGhpcywgd3JpdGVyKTtcbiAgcmV0dXJuIHdyaXRlci5nZXRSZXN1bHRCdWZmZXIoKTtcbn07XG5cblxuLyoqXG4gKiBTZXJpYWxpemVzIHRoZSBnaXZlbiBtZXNzYWdlIHRvIGJpbmFyeSBkYXRhIChpbiBwcm90b2J1ZiB3aXJlXG4gKiBmb3JtYXQpLCB3cml0aW5nIHRvIHRoZSBnaXZlbiBCaW5hcnlXcml0ZXIuXG4gKiBAcGFyYW0geyFwcm90by50by52MS5Ub1VzZXJzSW5HYW1lSGlzdG9yeUdwc1F1ZXJ5UmVxdWVzdH0gbWVzc2FnZVxuICogQHBhcmFtIHshanNwYi5CaW5hcnlXcml0ZXJ9IHdyaXRlclxuICogQHN1cHByZXNzIHt1bnVzZWRMb2NhbFZhcmlhYmxlc30gZiBpcyBvbmx5IHVzZWQgZm9yIG5lc3RlZCBtZXNzYWdlc1xuICovXG5wcm90by50by52MS5Ub1VzZXJzSW5HYW1lSGlzdG9yeUdwc1F1ZXJ5UmVxdWVzdC5zZXJpYWxpemVCaW5hcnlUb1dyaXRlciA9IGZ1bmN0aW9uKG1lc3NhZ2UsIHdyaXRlcikge1xuICB2YXIgZiA9IHVuZGVmaW5lZDtcbiAgZiA9IG1lc3NhZ2UuZ2V0SWQoKTtcbiAgaWYgKGYgIT09IDApIHtcbiAgICB3cml0ZXIud3JpdGVJbnQzMihcbiAgICAgIDEsXG4gICAgICBmXG4gICAgKTtcbiAgfVxuICBmID0gbWVzc2FnZS5nZXRTdGFydHNlY29uZHN0YW1wKCk7XG4gIGlmIChmICE9PSAwKSB7XG4gICAgd3JpdGVyLndyaXRlSW50NjQoXG4gICAgICAyLFxuICAgICAgZlxuICAgICk7XG4gIH1cbiAgZiA9IG1lc3NhZ2UuZ2V0RW5kc2Vjb25kc3RhbXAoKTtcbiAgaWYgKGYgIT09IDApIHtcbiAgICB3cml0ZXIud3JpdGVJbnQ2NChcbiAgICAgIDMsXG4gICAgICBmXG4gICAgKTtcbiAgfVxufTtcblxuXG4vKipcbiAqIG9wdGlvbmFsIGludDMyIGlkID0gMTtcbiAqIEByZXR1cm4ge251bWJlcn1cbiAqL1xucHJvdG8udG8udjEuVG9Vc2Vyc0luR2FtZUhpc3RvcnlHcHNRdWVyeVJlcXVlc3QucHJvdG90eXBlLmdldElkID0gZnVuY3Rpb24oKSB7XG4gIHJldHVybiAvKiogQHR5cGUge251bWJlcn0gKi8gKGpzcGIuTWVzc2FnZS5nZXRGaWVsZFdpdGhEZWZhdWx0KHRoaXMsIDEsIDApKTtcbn07XG5cblxuLyoqXG4gKiBAcGFyYW0ge251bWJlcn0gdmFsdWVcbiAqIEByZXR1cm4geyFwcm90by50by52MS5Ub1VzZXJzSW5HYW1lSGlzdG9yeUdwc1F1ZXJ5UmVxdWVzdH0gcmV0dXJucyB0aGlzXG4gKi9cbnByb3RvLnRvLnYxLlRvVXNlcnNJbkdhbWVIaXN0b3J5R3BzUXVlcnlSZXF1ZXN0LnByb3RvdHlwZS5zZXRJZCA9IGZ1bmN0aW9uKHZhbHVlKSB7XG4gIHJldHVybiBqc3BiLk1lc3NhZ2Uuc2V0UHJvdG8zSW50RmllbGQodGhpcywgMSwgdmFsdWUpO1xufTtcblxuXG4vKipcbiAqIG9wdGlvbmFsIGludDY0IHN0YXJ0U2Vjb25kU3RhbXAgPSAyO1xuICogQHJldHVybiB7bnVtYmVyfVxuICovXG5wcm90by50by52MS5Ub1VzZXJzSW5HYW1lSGlzdG9yeUdwc1F1ZXJ5UmVxdWVzdC5wcm90b3R5cGUuZ2V0U3RhcnRzZWNvbmRzdGFtcCA9IGZ1bmN0aW9uKCkge1xuICByZXR1cm4gLyoqIEB0eXBlIHtudW1iZXJ9ICovIChqc3BiLk1lc3NhZ2UuZ2V0RmllbGRXaXRoRGVmYXVsdCh0aGlzLCAyLCAwKSk7XG59O1xuXG5cbi8qKlxuICogQHBhcmFtIHtudW1iZXJ9IHZhbHVlXG4gKiBAcmV0dXJuIHshcHJvdG8udG8udjEuVG9Vc2Vyc0luR2FtZUhpc3RvcnlHcHNRdWVyeVJlcXVlc3R9IHJldHVybnMgdGhpc1xuICovXG5wcm90by50by52MS5Ub1VzZXJzSW5HYW1lSGlzdG9yeUdwc1F1ZXJ5UmVxdWVzdC5wcm90b3R5cGUuc2V0U3RhcnRzZWNvbmRzdGFtcCA9IGZ1bmN0aW9uKHZhbHVlKSB7XG4gIHJldHVybiBqc3BiLk1lc3NhZ2Uuc2V0UHJvdG8zSW50RmllbGQodGhpcywgMiwgdmFsdWUpO1xufTtcblxuXG4vKipcbiAqIG9wdGlvbmFsIGludDY0IGVuZFNlY29uZFN0YW1wID0gMztcbiAqIEByZXR1cm4ge251bWJlcn1cbiAqL1xucHJvdG8udG8udjEuVG9Vc2Vyc0luR2FtZUhpc3RvcnlHcHNRdWVyeVJlcXVlc3QucHJvdG90eXBlLmdldEVuZHNlY29uZHN0YW1wID0gZnVuY3Rpb24oKSB7XG4gIHJldHVybiAvKiogQHR5cGUge251bWJlcn0gKi8gKGpzcGIuTWVzc2FnZS5nZXRGaWVsZFdpdGhEZWZhdWx0KHRoaXMsIDMsIDApKTtcbn07XG5cblxuLyoqXG4gKiBAcGFyYW0ge251bWJlcn0gdmFsdWVcbiAqIEByZXR1cm4geyFwcm90by50by52MS5Ub1VzZXJzSW5HYW1lSGlzdG9yeUdwc1F1ZXJ5UmVxdWVzdH0gcmV0dXJucyB0aGlzXG4gKi9cbnByb3RvLnRvLnYxLlRvVXNlcnNJbkdhbWVIaXN0b3J5R3BzUXVlcnlSZXF1ZXN0LnByb3RvdHlwZS5zZXRFbmRzZWNvbmRzdGFtcCA9IGZ1bmN0aW9uKHZhbHVlKSB7XG4gIHJldHVybiBqc3BiLk1lc3NhZ2Uuc2V0UHJvdG8zSW50RmllbGQodGhpcywgMywgdmFsdWUpO1xufTtcblxuXG5cbi8qKlxuICogTGlzdCBvZiByZXBlYXRlZCBmaWVsZHMgd2l0aGluIHRoaXMgbWVzc2FnZSB0eXBlLlxuICogQHByaXZhdGUgeyFBcnJheTxudW1iZXI+fVxuICogQGNvbnN0XG4gKi9cbnByb3RvLnRvLnYxLlRvVXNlckdwc1F1ZXJ5UmVwbHkucmVwZWF0ZWRGaWVsZHNfID0gWzFdO1xuXG5cblxuaWYgKGpzcGIuTWVzc2FnZS5HRU5FUkFURV9UT19PQkpFQ1QpIHtcbi8qKlxuICogQ3JlYXRlcyBhbiBvYmplY3QgcmVwcmVzZW50YXRpb24gb2YgdGhpcyBwcm90by5cbiAqIEZpZWxkIG5hbWVzIHRoYXQgYXJlIHJlc2VydmVkIGluIEphdmFTY3JpcHQgYW5kIHdpbGwgYmUgcmVuYW1lZCB0byBwYl9uYW1lLlxuICogT3B0aW9uYWwgZmllbGRzIHRoYXQgYXJlIG5vdCBzZXQgd2lsbCBiZSBzZXQgdG8gdW5kZWZpbmVkLlxuICogVG8gYWNjZXNzIGEgcmVzZXJ2ZWQgZmllbGQgdXNlLCBmb28ucGJfPG5hbWU+LCBlZywgZm9vLnBiX2RlZmF1bHQuXG4gKiBGb3IgdGhlIGxpc3Qgb2YgcmVzZXJ2ZWQgbmFtZXMgcGxlYXNlIHNlZTpcbiAqICAgICBuZXQvcHJvdG8yL2NvbXBpbGVyL2pzL2ludGVybmFsL2dlbmVyYXRvci5jYyNrS2V5d29yZC5cbiAqIEBwYXJhbSB7Ym9vbGVhbj19IG9wdF9pbmNsdWRlSW5zdGFuY2UgRGVwcmVjYXRlZC4gd2hldGhlciB0byBpbmNsdWRlIHRoZVxuICogICAgIEpTUEIgaW5zdGFuY2UgZm9yIHRyYW5zaXRpb25hbCBzb3kgcHJvdG8gc3VwcG9ydDpcbiAqICAgICBodHRwOi8vZ290by9zb3ktcGFyYW0tbWlncmF0aW9uXG4gKiBAcmV0dXJuIHshT2JqZWN0fVxuICovXG5wcm90by50by52MS5Ub1VzZXJHcHNRdWVyeVJlcGx5LnByb3RvdHlwZS50b09iamVjdCA9IGZ1bmN0aW9uKG9wdF9pbmNsdWRlSW5zdGFuY2UpIHtcbiAgcmV0dXJuIHByb3RvLnRvLnYxLlRvVXNlckdwc1F1ZXJ5UmVwbHkudG9PYmplY3Qob3B0X2luY2x1ZGVJbnN0YW5jZSwgdGhpcyk7XG59O1xuXG5cbi8qKlxuICogU3RhdGljIHZlcnNpb24gb2YgdGhlIHtAc2VlIHRvT2JqZWN0fSBtZXRob2QuXG4gKiBAcGFyYW0ge2Jvb2xlYW58dW5kZWZpbmVkfSBpbmNsdWRlSW5zdGFuY2UgRGVwcmVjYXRlZC4gV2hldGhlciB0byBpbmNsdWRlXG4gKiAgICAgdGhlIEpTUEIgaW5zdGFuY2UgZm9yIHRyYW5zaXRpb25hbCBzb3kgcHJvdG8gc3VwcG9ydDpcbiAqICAgICBodHRwOi8vZ290by9zb3ktcGFyYW0tbWlncmF0aW9uXG4gKiBAcGFyYW0geyFwcm90by50by52MS5Ub1VzZXJHcHNRdWVyeVJlcGx5fSBtc2cgVGhlIG1zZyBpbnN0YW5jZSB0byB0cmFuc2Zvcm0uXG4gKiBAcmV0dXJuIHshT2JqZWN0fVxuICogQHN1cHByZXNzIHt1bnVzZWRMb2NhbFZhcmlhYmxlc30gZiBpcyBvbmx5IHVzZWQgZm9yIG5lc3RlZCBtZXNzYWdlc1xuICovXG5wcm90by50by52MS5Ub1VzZXJHcHNRdWVyeVJlcGx5LnRvT2JqZWN0ID0gZnVuY3Rpb24oaW5jbHVkZUluc3RhbmNlLCBtc2cpIHtcbiAgdmFyIGYsIG9iaiA9IHtcbiAgICBncHNpbmZvTGlzdDoganNwYi5NZXNzYWdlLnRvT2JqZWN0TGlzdChtc2cuZ2V0R3BzaW5mb0xpc3QoKSxcbiAgICBwcm90by50by52MS5Vc2VyR3BzSW5mby50b09iamVjdCwgaW5jbHVkZUluc3RhbmNlKVxuICB9O1xuXG4gIGlmIChpbmNsdWRlSW5zdGFuY2UpIHtcbiAgICBvYmouJGpzcGJNZXNzYWdlSW5zdGFuY2UgPSBtc2c7XG4gIH1cbiAgcmV0dXJuIG9iajtcbn07XG59XG5cblxuLyoqXG4gKiBEZXNlcmlhbGl6ZXMgYmluYXJ5IGRhdGEgKGluIHByb3RvYnVmIHdpcmUgZm9ybWF0KS5cbiAqIEBwYXJhbSB7anNwYi5CeXRlU291cmNlfSBieXRlcyBUaGUgYnl0ZXMgdG8gZGVzZXJpYWxpemUuXG4gKiBAcmV0dXJuIHshcHJvdG8udG8udjEuVG9Vc2VyR3BzUXVlcnlSZXBseX1cbiAqL1xucHJvdG8udG8udjEuVG9Vc2VyR3BzUXVlcnlSZXBseS5kZXNlcmlhbGl6ZUJpbmFyeSA9IGZ1bmN0aW9uKGJ5dGVzKSB7XG4gIHZhciByZWFkZXIgPSBuZXcganNwYi5CaW5hcnlSZWFkZXIoYnl0ZXMpO1xuICB2YXIgbXNnID0gbmV3IHByb3RvLnRvLnYxLlRvVXNlckdwc1F1ZXJ5UmVwbHk7XG4gIHJldHVybiBwcm90by50by52MS5Ub1VzZXJHcHNRdWVyeVJlcGx5LmRlc2VyaWFsaXplQmluYXJ5RnJvbVJlYWRlcihtc2csIHJlYWRlcik7XG59O1xuXG5cbi8qKlxuICogRGVzZXJpYWxpemVzIGJpbmFyeSBkYXRhIChpbiBwcm90b2J1ZiB3aXJlIGZvcm1hdCkgZnJvbSB0aGVcbiAqIGdpdmVuIHJlYWRlciBpbnRvIHRoZSBnaXZlbiBtZXNzYWdlIG9iamVjdC5cbiAqIEBwYXJhbSB7IXByb3RvLnRvLnYxLlRvVXNlckdwc1F1ZXJ5UmVwbHl9IG1zZyBUaGUgbWVzc2FnZSBvYmplY3QgdG8gZGVzZXJpYWxpemUgaW50by5cbiAqIEBwYXJhbSB7IWpzcGIuQmluYXJ5UmVhZGVyfSByZWFkZXIgVGhlIEJpbmFyeVJlYWRlciB0byB1c2UuXG4gKiBAcmV0dXJuIHshcHJvdG8udG8udjEuVG9Vc2VyR3BzUXVlcnlSZXBseX1cbiAqL1xucHJvdG8udG8udjEuVG9Vc2VyR3BzUXVlcnlSZXBseS5kZXNlcmlhbGl6ZUJpbmFyeUZyb21SZWFkZXIgPSBmdW5jdGlvbihtc2csIHJlYWRlcikge1xuICB3aGlsZSAocmVhZGVyLm5leHRGaWVsZCgpKSB7XG4gICAgaWYgKHJlYWRlci5pc0VuZEdyb3VwKCkpIHtcbiAgICAgIGJyZWFrO1xuICAgIH1cbiAgICB2YXIgZmllbGQgPSByZWFkZXIuZ2V0RmllbGROdW1iZXIoKTtcbiAgICBzd2l0Y2ggKGZpZWxkKSB7XG4gICAgY2FzZSAxOlxuICAgICAgdmFyIHZhbHVlID0gbmV3IHByb3RvLnRvLnYxLlVzZXJHcHNJbmZvO1xuICAgICAgcmVhZGVyLnJlYWRNZXNzYWdlKHZhbHVlLHByb3RvLnRvLnYxLlVzZXJHcHNJbmZvLmRlc2VyaWFsaXplQmluYXJ5RnJvbVJlYWRlcik7XG4gICAgICBtc2cuYWRkR3BzaW5mbyh2YWx1ZSk7XG4gICAgICBicmVhaztcbiAgICBkZWZhdWx0OlxuICAgICAgcmVhZGVyLnNraXBGaWVsZCgpO1xuICAgICAgYnJlYWs7XG4gICAgfVxuICB9XG4gIHJldHVybiBtc2c7XG59O1xuXG5cbi8qKlxuICogU2VyaWFsaXplcyB0aGUgbWVzc2FnZSB0byBiaW5hcnkgZGF0YSAoaW4gcHJvdG9idWYgd2lyZSBmb3JtYXQpLlxuICogQHJldHVybiB7IVVpbnQ4QXJyYXl9XG4gKi9cbnByb3RvLnRvLnYxLlRvVXNlckdwc1F1ZXJ5UmVwbHkucHJvdG90eXBlLnNlcmlhbGl6ZUJpbmFyeSA9IGZ1bmN0aW9uKCkge1xuICB2YXIgd3JpdGVyID0gbmV3IGpzcGIuQmluYXJ5V3JpdGVyKCk7XG4gIHByb3RvLnRvLnYxLlRvVXNlckdwc1F1ZXJ5UmVwbHkuc2VyaWFsaXplQmluYXJ5VG9Xcml0ZXIodGhpcywgd3JpdGVyKTtcbiAgcmV0dXJuIHdyaXRlci5nZXRSZXN1bHRCdWZmZXIoKTtcbn07XG5cblxuLyoqXG4gKiBTZXJpYWxpemVzIHRoZSBnaXZlbiBtZXNzYWdlIHRvIGJpbmFyeSBkYXRhIChpbiBwcm90b2J1ZiB3aXJlXG4gKiBmb3JtYXQpLCB3cml0aW5nIHRvIHRoZSBnaXZlbiBCaW5hcnlXcml0ZXIuXG4gKiBAcGFyYW0geyFwcm90by50by52MS5Ub1VzZXJHcHNRdWVyeVJlcGx5fSBtZXNzYWdlXG4gKiBAcGFyYW0geyFqc3BiLkJpbmFyeVdyaXRlcn0gd3JpdGVyXG4gKiBAc3VwcHJlc3Mge3VudXNlZExvY2FsVmFyaWFibGVzfSBmIGlzIG9ubHkgdXNlZCBmb3IgbmVzdGVkIG1lc3NhZ2VzXG4gKi9cbnByb3RvLnRvLnYxLlRvVXNlckdwc1F1ZXJ5UmVwbHkuc2VyaWFsaXplQmluYXJ5VG9Xcml0ZXIgPSBmdW5jdGlvbihtZXNzYWdlLCB3cml0ZXIpIHtcbiAgdmFyIGYgPSB1bmRlZmluZWQ7XG4gIGYgPSBtZXNzYWdlLmdldEdwc2luZm9MaXN0KCk7XG4gIGlmIChmLmxlbmd0aCA+IDApIHtcbiAgICB3cml0ZXIud3JpdGVSZXBlYXRlZE1lc3NhZ2UoXG4gICAgICAxLFxuICAgICAgZixcbiAgICAgIHByb3RvLnRvLnYxLlVzZXJHcHNJbmZvLnNlcmlhbGl6ZUJpbmFyeVRvV3JpdGVyXG4gICAgKTtcbiAgfVxufTtcblxuXG4vKipcbiAqIHJlcGVhdGVkIFVzZXJHcHNJbmZvIGdwc0luZm8gPSAxO1xuICogQHJldHVybiB7IUFycmF5PCFwcm90by50by52MS5Vc2VyR3BzSW5mbz59XG4gKi9cbnByb3RvLnRvLnYxLlRvVXNlckdwc1F1ZXJ5UmVwbHkucHJvdG90eXBlLmdldEdwc2luZm9MaXN0ID0gZnVuY3Rpb24oKSB7XG4gIHJldHVybiAvKiogQHR5cGV7IUFycmF5PCFwcm90by50by52MS5Vc2VyR3BzSW5mbz59ICovIChcbiAgICBqc3BiLk1lc3NhZ2UuZ2V0UmVwZWF0ZWRXcmFwcGVyRmllbGQodGhpcywgcHJvdG8udG8udjEuVXNlckdwc0luZm8sIDEpKTtcbn07XG5cblxuLyoqXG4gKiBAcGFyYW0geyFBcnJheTwhcHJvdG8udG8udjEuVXNlckdwc0luZm8+fSB2YWx1ZVxuICogQHJldHVybiB7IXByb3RvLnRvLnYxLlRvVXNlckdwc1F1ZXJ5UmVwbHl9IHJldHVybnMgdGhpc1xuKi9cbnByb3RvLnRvLnYxLlRvVXNlckdwc1F1ZXJ5UmVwbHkucHJvdG90eXBlLnNldEdwc2luZm9MaXN0ID0gZnVuY3Rpb24odmFsdWUpIHtcbiAgcmV0dXJuIGpzcGIuTWVzc2FnZS5zZXRSZXBlYXRlZFdyYXBwZXJGaWVsZCh0aGlzLCAxLCB2YWx1ZSk7XG59O1xuXG5cbi8qKlxuICogQHBhcmFtIHshcHJvdG8udG8udjEuVXNlckdwc0luZm89fSBvcHRfdmFsdWVcbiAqIEBwYXJhbSB7bnVtYmVyPX0gb3B0X2luZGV4XG4gKiBAcmV0dXJuIHshcHJvdG8udG8udjEuVXNlckdwc0luZm99XG4gKi9cbnByb3RvLnRvLnYxLlRvVXNlckdwc1F1ZXJ5UmVwbHkucHJvdG90eXBlLmFkZEdwc2luZm8gPSBmdW5jdGlvbihvcHRfdmFsdWUsIG9wdF9pbmRleCkge1xuICByZXR1cm4ganNwYi5NZXNzYWdlLmFkZFRvUmVwZWF0ZWRXcmFwcGVyRmllbGQodGhpcywgMSwgb3B0X3ZhbHVlLCBwcm90by50by52MS5Vc2VyR3BzSW5mbywgb3B0X2luZGV4KTtcbn07XG5cblxuLyoqXG4gKiBDbGVhcnMgdGhlIGxpc3QgbWFraW5nIGl0IGVtcHR5IGJ1dCBub24tbnVsbC5cbiAqIEByZXR1cm4geyFwcm90by50by52MS5Ub1VzZXJHcHNRdWVyeVJlcGx5fSByZXR1cm5zIHRoaXNcbiAqL1xucHJvdG8udG8udjEuVG9Vc2VyR3BzUXVlcnlSZXBseS5wcm90b3R5cGUuY2xlYXJHcHNpbmZvTGlzdCA9IGZ1bmN0aW9uKCkge1xuICByZXR1cm4gdGhpcy5zZXRHcHNpbmZvTGlzdChbXSk7XG59O1xuXG5cblxuXG5cbmlmIChqc3BiLk1lc3NhZ2UuR0VORVJBVEVfVE9fT0JKRUNUKSB7XG4vKipcbiAqIENyZWF0ZXMgYW4gb2JqZWN0IHJlcHJlc2VudGF0aW9uIG9mIHRoaXMgcHJvdG8uXG4gKiBGaWVsZCBuYW1lcyB0aGF0IGFyZSByZXNlcnZlZCBpbiBKYXZhU2NyaXB0IGFuZCB3aWxsIGJlIHJlbmFtZWQgdG8gcGJfbmFtZS5cbiAqIE9wdGlvbmFsIGZpZWxkcyB0aGF0IGFyZSBub3Qgc2V0IHdpbGwgYmUgc2V0IHRvIHVuZGVmaW5lZC5cbiAqIFRvIGFjY2VzcyBhIHJlc2VydmVkIGZpZWxkIHVzZSwgZm9vLnBiXzxuYW1lPiwgZWcsIGZvby5wYl9kZWZhdWx0LlxuICogRm9yIHRoZSBsaXN0IG9mIHJlc2VydmVkIG5hbWVzIHBsZWFzZSBzZWU6XG4gKiAgICAgbmV0L3Byb3RvMi9jb21waWxlci9qcy9pbnRlcm5hbC9nZW5lcmF0b3IuY2Mja0tleXdvcmQuXG4gKiBAcGFyYW0ge2Jvb2xlYW49fSBvcHRfaW5jbHVkZUluc3RhbmNlIERlcHJlY2F0ZWQuIHdoZXRoZXIgdG8gaW5jbHVkZSB0aGVcbiAqICAgICBKU1BCIGluc3RhbmNlIGZvciB0cmFuc2l0aW9uYWwgc295IHByb3RvIHN1cHBvcnQ6XG4gKiAgICAgaHR0cDovL2dvdG8vc295LXBhcmFtLW1pZ3JhdGlvblxuICogQHJldHVybiB7IU9iamVjdH1cbiAqL1xucHJvdG8udG8udjEuVXNlckdwc0luZm8ucHJvdG90eXBlLnRvT2JqZWN0ID0gZnVuY3Rpb24ob3B0X2luY2x1ZGVJbnN0YW5jZSkge1xuICByZXR1cm4gcHJvdG8udG8udjEuVXNlckdwc0luZm8udG9PYmplY3Qob3B0X2luY2x1ZGVJbnN0YW5jZSwgdGhpcyk7XG59O1xuXG5cbi8qKlxuICogU3RhdGljIHZlcnNpb24gb2YgdGhlIHtAc2VlIHRvT2JqZWN0fSBtZXRob2QuXG4gKiBAcGFyYW0ge2Jvb2xlYW58dW5kZWZpbmVkfSBpbmNsdWRlSW5zdGFuY2UgRGVwcmVjYXRlZC4gV2hldGhlciB0byBpbmNsdWRlXG4gKiAgICAgdGhlIEpTUEIgaW5zdGFuY2UgZm9yIHRyYW5zaXRpb25hbCBzb3kgcHJvdG8gc3VwcG9ydDpcbiAqICAgICBodHRwOi8vZ290by9zb3ktcGFyYW0tbWlncmF0aW9uXG4gKiBAcGFyYW0geyFwcm90by50by52MS5Vc2VyR3BzSW5mb30gbXNnIFRoZSBtc2cgaW5zdGFuY2UgdG8gdHJhbnNmb3JtLlxuICogQHJldHVybiB7IU9iamVjdH1cbiAqIEBzdXBwcmVzcyB7dW51c2VkTG9jYWxWYXJpYWJsZXN9IGYgaXMgb25seSB1c2VkIGZvciBuZXN0ZWQgbWVzc2FnZXNcbiAqL1xucHJvdG8udG8udjEuVXNlckdwc0luZm8udG9PYmplY3QgPSBmdW5jdGlvbihpbmNsdWRlSW5zdGFuY2UsIG1zZykge1xuICB2YXIgZiwgb2JqID0ge1xuICAgIGlkOiBqc3BiLk1lc3NhZ2UuZ2V0RmllbGRXaXRoRGVmYXVsdChtc2csIDEsIDApLFxuICAgIGxvbmdpdHVkZToganNwYi5NZXNzYWdlLmdldEZsb2F0aW5nUG9pbnRGaWVsZFdpdGhEZWZhdWx0KG1zZywgMiwgMC4wKSxcbiAgICBsYXRpdHVkZToganNwYi5NZXNzYWdlLmdldEZsb2F0aW5nUG9pbnRGaWVsZFdpdGhEZWZhdWx0KG1zZywgMywgMC4wKSxcbiAgICBkaXJlY3Rpb25yYWRpYW46IGpzcGIuTWVzc2FnZS5nZXRGbG9hdGluZ1BvaW50RmllbGRXaXRoRGVmYXVsdChtc2csIDQsIDAuMCksXG4gICAgZ3BzdGltZW1pbGxpc2Vjb25kc3RhbXA6IGpzcGIuTWVzc2FnZS5nZXRGaWVsZFdpdGhEZWZhdWx0KG1zZywgNSwgMClcbiAgfTtcblxuICBpZiAoaW5jbHVkZUluc3RhbmNlKSB7XG4gICAgb2JqLiRqc3BiTWVzc2FnZUluc3RhbmNlID0gbXNnO1xuICB9XG4gIHJldHVybiBvYmo7XG59O1xufVxuXG5cbi8qKlxuICogRGVzZXJpYWxpemVzIGJpbmFyeSBkYXRhIChpbiBwcm90b2J1ZiB3aXJlIGZvcm1hdCkuXG4gKiBAcGFyYW0ge2pzcGIuQnl0ZVNvdXJjZX0gYnl0ZXMgVGhlIGJ5dGVzIHRvIGRlc2VyaWFsaXplLlxuICogQHJldHVybiB7IXByb3RvLnRvLnYxLlVzZXJHcHNJbmZvfVxuICovXG5wcm90by50by52MS5Vc2VyR3BzSW5mby5kZXNlcmlhbGl6ZUJpbmFyeSA9IGZ1bmN0aW9uKGJ5dGVzKSB7XG4gIHZhciByZWFkZXIgPSBuZXcganNwYi5CaW5hcnlSZWFkZXIoYnl0ZXMpO1xuICB2YXIgbXNnID0gbmV3IHByb3RvLnRvLnYxLlVzZXJHcHNJbmZvO1xuICByZXR1cm4gcHJvdG8udG8udjEuVXNlckdwc0luZm8uZGVzZXJpYWxpemVCaW5hcnlGcm9tUmVhZGVyKG1zZywgcmVhZGVyKTtcbn07XG5cblxuLyoqXG4gKiBEZXNlcmlhbGl6ZXMgYmluYXJ5IGRhdGEgKGluIHByb3RvYnVmIHdpcmUgZm9ybWF0KSBmcm9tIHRoZVxuICogZ2l2ZW4gcmVhZGVyIGludG8gdGhlIGdpdmVuIG1lc3NhZ2Ugb2JqZWN0LlxuICogQHBhcmFtIHshcHJvdG8udG8udjEuVXNlckdwc0luZm99IG1zZyBUaGUgbWVzc2FnZSBvYmplY3QgdG8gZGVzZXJpYWxpemUgaW50by5cbiAqIEBwYXJhbSB7IWpzcGIuQmluYXJ5UmVhZGVyfSByZWFkZXIgVGhlIEJpbmFyeVJlYWRlciB0byB1c2UuXG4gKiBAcmV0dXJuIHshcHJvdG8udG8udjEuVXNlckdwc0luZm99XG4gKi9cbnByb3RvLnRvLnYxLlVzZXJHcHNJbmZvLmRlc2VyaWFsaXplQmluYXJ5RnJvbVJlYWRlciA9IGZ1bmN0aW9uKG1zZywgcmVhZGVyKSB7XG4gIHdoaWxlIChyZWFkZXIubmV4dEZpZWxkKCkpIHtcbiAgICBpZiAocmVhZGVyLmlzRW5kR3JvdXAoKSkge1xuICAgICAgYnJlYWs7XG4gICAgfVxuICAgIHZhciBmaWVsZCA9IHJlYWRlci5nZXRGaWVsZE51bWJlcigpO1xuICAgIHN3aXRjaCAoZmllbGQpIHtcbiAgICBjYXNlIDE6XG4gICAgICB2YXIgdmFsdWUgPSAvKiogQHR5cGUge251bWJlcn0gKi8gKHJlYWRlci5yZWFkSW50MzIoKSk7XG4gICAgICBtc2cuc2V0SWQodmFsdWUpO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSAyOlxuICAgICAgdmFyIHZhbHVlID0gLyoqIEB0eXBlIHtudW1iZXJ9ICovIChyZWFkZXIucmVhZERvdWJsZSgpKTtcbiAgICAgIG1zZy5zZXRMb25naXR1ZGUodmFsdWUpO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSAzOlxuICAgICAgdmFyIHZhbHVlID0gLyoqIEB0eXBlIHtudW1iZXJ9ICovIChyZWFkZXIucmVhZERvdWJsZSgpKTtcbiAgICAgIG1zZy5zZXRMYXRpdHVkZSh2YWx1ZSk7XG4gICAgICBicmVhaztcbiAgICBjYXNlIDQ6XG4gICAgICB2YXIgdmFsdWUgPSAvKiogQHR5cGUge251bWJlcn0gKi8gKHJlYWRlci5yZWFkRG91YmxlKCkpO1xuICAgICAgbXNnLnNldERpcmVjdGlvbnJhZGlhbih2YWx1ZSk7XG4gICAgICBicmVhaztcbiAgICBjYXNlIDU6XG4gICAgICB2YXIgdmFsdWUgPSAvKiogQHR5cGUge251bWJlcn0gKi8gKHJlYWRlci5yZWFkSW50NjQoKSk7XG4gICAgICBtc2cuc2V0R3BzdGltZW1pbGxpc2Vjb25kc3RhbXAodmFsdWUpO1xuICAgICAgYnJlYWs7XG4gICAgZGVmYXVsdDpcbiAgICAgIHJlYWRlci5za2lwRmllbGQoKTtcbiAgICAgIGJyZWFrO1xuICAgIH1cbiAgfVxuICByZXR1cm4gbXNnO1xufTtcblxuXG4vKipcbiAqIFNlcmlhbGl6ZXMgdGhlIG1lc3NhZ2UgdG8gYmluYXJ5IGRhdGEgKGluIHByb3RvYnVmIHdpcmUgZm9ybWF0KS5cbiAqIEByZXR1cm4geyFVaW50OEFycmF5fVxuICovXG5wcm90by50by52MS5Vc2VyR3BzSW5mby5wcm90b3R5cGUuc2VyaWFsaXplQmluYXJ5ID0gZnVuY3Rpb24oKSB7XG4gIHZhciB3cml0ZXIgPSBuZXcganNwYi5CaW5hcnlXcml0ZXIoKTtcbiAgcHJvdG8udG8udjEuVXNlckdwc0luZm8uc2VyaWFsaXplQmluYXJ5VG9Xcml0ZXIodGhpcywgd3JpdGVyKTtcbiAgcmV0dXJuIHdyaXRlci5nZXRSZXN1bHRCdWZmZXIoKTtcbn07XG5cblxuLyoqXG4gKiBTZXJpYWxpemVzIHRoZSBnaXZlbiBtZXNzYWdlIHRvIGJpbmFyeSBkYXRhIChpbiBwcm90b2J1ZiB3aXJlXG4gKiBmb3JtYXQpLCB3cml0aW5nIHRvIHRoZSBnaXZlbiBCaW5hcnlXcml0ZXIuXG4gKiBAcGFyYW0geyFwcm90by50by52MS5Vc2VyR3BzSW5mb30gbWVzc2FnZVxuICogQHBhcmFtIHshanNwYi5CaW5hcnlXcml0ZXJ9IHdyaXRlclxuICogQHN1cHByZXNzIHt1bnVzZWRMb2NhbFZhcmlhYmxlc30gZiBpcyBvbmx5IHVzZWQgZm9yIG5lc3RlZCBtZXNzYWdlc1xuICovXG5wcm90by50by52MS5Vc2VyR3BzSW5mby5zZXJpYWxpemVCaW5hcnlUb1dyaXRlciA9IGZ1bmN0aW9uKG1lc3NhZ2UsIHdyaXRlcikge1xuICB2YXIgZiA9IHVuZGVmaW5lZDtcbiAgZiA9IG1lc3NhZ2UuZ2V0SWQoKTtcbiAgaWYgKGYgIT09IDApIHtcbiAgICB3cml0ZXIud3JpdGVJbnQzMihcbiAgICAgIDEsXG4gICAgICBmXG4gICAgKTtcbiAgfVxuICBmID0gbWVzc2FnZS5nZXRMb25naXR1ZGUoKTtcbiAgaWYgKGYgIT09IDAuMCkge1xuICAgIHdyaXRlci53cml0ZURvdWJsZShcbiAgICAgIDIsXG4gICAgICBmXG4gICAgKTtcbiAgfVxuICBmID0gbWVzc2FnZS5nZXRMYXRpdHVkZSgpO1xuICBpZiAoZiAhPT0gMC4wKSB7XG4gICAgd3JpdGVyLndyaXRlRG91YmxlKFxuICAgICAgMyxcbiAgICAgIGZcbiAgICApO1xuICB9XG4gIGYgPSBtZXNzYWdlLmdldERpcmVjdGlvbnJhZGlhbigpO1xuICBpZiAoZiAhPT0gMC4wKSB7XG4gICAgd3JpdGVyLndyaXRlRG91YmxlKFxuICAgICAgNCxcbiAgICAgIGZcbiAgICApO1xuICB9XG4gIGYgPSBtZXNzYWdlLmdldEdwc3RpbWVtaWxsaXNlY29uZHN0YW1wKCk7XG4gIGlmIChmICE9PSAwKSB7XG4gICAgd3JpdGVyLndyaXRlSW50NjQoXG4gICAgICA1LFxuICAgICAgZlxuICAgICk7XG4gIH1cbn07XG5cblxuLyoqXG4gKiBvcHRpb25hbCBpbnQzMiBJZCA9IDE7XG4gKiBAcmV0dXJuIHtudW1iZXJ9XG4gKi9cbnByb3RvLnRvLnYxLlVzZXJHcHNJbmZvLnByb3RvdHlwZS5nZXRJZCA9IGZ1bmN0aW9uKCkge1xuICByZXR1cm4gLyoqIEB0eXBlIHtudW1iZXJ9ICovIChqc3BiLk1lc3NhZ2UuZ2V0RmllbGRXaXRoRGVmYXVsdCh0aGlzLCAxLCAwKSk7XG59O1xuXG5cbi8qKlxuICogQHBhcmFtIHtudW1iZXJ9IHZhbHVlXG4gKiBAcmV0dXJuIHshcHJvdG8udG8udjEuVXNlckdwc0luZm99IHJldHVybnMgdGhpc1xuICovXG5wcm90by50by52MS5Vc2VyR3BzSW5mby5wcm90b3R5cGUuc2V0SWQgPSBmdW5jdGlvbih2YWx1ZSkge1xuICByZXR1cm4ganNwYi5NZXNzYWdlLnNldFByb3RvM0ludEZpZWxkKHRoaXMsIDEsIHZhbHVlKTtcbn07XG5cblxuLyoqXG4gKiBvcHRpb25hbCBkb3VibGUgbG9uZ2l0dWRlID0gMjtcbiAqIEByZXR1cm4ge251bWJlcn1cbiAqL1xucHJvdG8udG8udjEuVXNlckdwc0luZm8ucHJvdG90eXBlLmdldExvbmdpdHVkZSA9IGZ1bmN0aW9uKCkge1xuICByZXR1cm4gLyoqIEB0eXBlIHtudW1iZXJ9ICovIChqc3BiLk1lc3NhZ2UuZ2V0RmxvYXRpbmdQb2ludEZpZWxkV2l0aERlZmF1bHQodGhpcywgMiwgMC4wKSk7XG59O1xuXG5cbi8qKlxuICogQHBhcmFtIHtudW1iZXJ9IHZhbHVlXG4gKiBAcmV0dXJuIHshcHJvdG8udG8udjEuVXNlckdwc0luZm99IHJldHVybnMgdGhpc1xuICovXG5wcm90by50by52MS5Vc2VyR3BzSW5mby5wcm90b3R5cGUuc2V0TG9uZ2l0dWRlID0gZnVuY3Rpb24odmFsdWUpIHtcbiAgcmV0dXJuIGpzcGIuTWVzc2FnZS5zZXRQcm90bzNGbG9hdEZpZWxkKHRoaXMsIDIsIHZhbHVlKTtcbn07XG5cblxuLyoqXG4gKiBvcHRpb25hbCBkb3VibGUgbGF0aXR1ZGUgPSAzO1xuICogQHJldHVybiB7bnVtYmVyfVxuICovXG5wcm90by50by52MS5Vc2VyR3BzSW5mby5wcm90b3R5cGUuZ2V0TGF0aXR1ZGUgPSBmdW5jdGlvbigpIHtcbiAgcmV0dXJuIC8qKiBAdHlwZSB7bnVtYmVyfSAqLyAoanNwYi5NZXNzYWdlLmdldEZsb2F0aW5nUG9pbnRGaWVsZFdpdGhEZWZhdWx0KHRoaXMsIDMsIDAuMCkpO1xufTtcblxuXG4vKipcbiAqIEBwYXJhbSB7bnVtYmVyfSB2YWx1ZVxuICogQHJldHVybiB7IXByb3RvLnRvLnYxLlVzZXJHcHNJbmZvfSByZXR1cm5zIHRoaXNcbiAqL1xucHJvdG8udG8udjEuVXNlckdwc0luZm8ucHJvdG90eXBlLnNldExhdGl0dWRlID0gZnVuY3Rpb24odmFsdWUpIHtcbiAgcmV0dXJuIGpzcGIuTWVzc2FnZS5zZXRQcm90bzNGbG9hdEZpZWxkKHRoaXMsIDMsIHZhbHVlKTtcbn07XG5cblxuLyoqXG4gKiBvcHRpb25hbCBkb3VibGUgZGlyZWN0aW9uUmFkaWFuID0gNDtcbiAqIEByZXR1cm4ge251bWJlcn1cbiAqL1xucHJvdG8udG8udjEuVXNlckdwc0luZm8ucHJvdG90eXBlLmdldERpcmVjdGlvbnJhZGlhbiA9IGZ1bmN0aW9uKCkge1xuICByZXR1cm4gLyoqIEB0eXBlIHtudW1iZXJ9ICovIChqc3BiLk1lc3NhZ2UuZ2V0RmxvYXRpbmdQb2ludEZpZWxkV2l0aERlZmF1bHQodGhpcywgNCwgMC4wKSk7XG59O1xuXG5cbi8qKlxuICogQHBhcmFtIHtudW1iZXJ9IHZhbHVlXG4gKiBAcmV0dXJuIHshcHJvdG8udG8udjEuVXNlckdwc0luZm99IHJldHVybnMgdGhpc1xuICovXG5wcm90by50by52MS5Vc2VyR3BzSW5mby5wcm90b3R5cGUuc2V0RGlyZWN0aW9ucmFkaWFuID0gZnVuY3Rpb24odmFsdWUpIHtcbiAgcmV0dXJuIGpzcGIuTWVzc2FnZS5zZXRQcm90bzNGbG9hdEZpZWxkKHRoaXMsIDQsIHZhbHVlKTtcbn07XG5cblxuLyoqXG4gKiBvcHRpb25hbCBpbnQ2NCBncHNUaW1lTWlsbGlzZWNvbmRTdGFtcCA9IDU7XG4gKiBAcmV0dXJuIHtudW1iZXJ9XG4gKi9cbnByb3RvLnRvLnYxLlVzZXJHcHNJbmZvLnByb3RvdHlwZS5nZXRHcHN0aW1lbWlsbGlzZWNvbmRzdGFtcCA9IGZ1bmN0aW9uKCkge1xuICByZXR1cm4gLyoqIEB0eXBlIHtudW1iZXJ9ICovIChqc3BiLk1lc3NhZ2UuZ2V0RmllbGRXaXRoRGVmYXVsdCh0aGlzLCA1LCAwKSk7XG59O1xuXG5cbi8qKlxuICogQHBhcmFtIHtudW1iZXJ9IHZhbHVlXG4gKiBAcmV0dXJuIHshcHJvdG8udG8udjEuVXNlckdwc0luZm99IHJldHVybnMgdGhpc1xuICovXG5wcm90by50by52MS5Vc2VyR3BzSW5mby5wcm90b3R5cGUuc2V0R3BzdGltZW1pbGxpc2Vjb25kc3RhbXAgPSBmdW5jdGlvbih2YWx1ZSkge1xuICByZXR1cm4ganNwYi5NZXNzYWdlLnNldFByb3RvM0ludEZpZWxkKHRoaXMsIDUsIHZhbHVlKTtcbn07XG5cblxuXG5cblxuaWYgKGpzcGIuTWVzc2FnZS5HRU5FUkFURV9UT19PQkpFQ1QpIHtcbi8qKlxuICogQ3JlYXRlcyBhbiBvYmplY3QgcmVwcmVzZW50YXRpb24gb2YgdGhpcyBwcm90by5cbiAqIEZpZWxkIG5hbWVzIHRoYXQgYXJlIHJlc2VydmVkIGluIEphdmFTY3JpcHQgYW5kIHdpbGwgYmUgcmVuYW1lZCB0byBwYl9uYW1lLlxuICogT3B0aW9uYWwgZmllbGRzIHRoYXQgYXJlIG5vdCBzZXQgd2lsbCBiZSBzZXQgdG8gdW5kZWZpbmVkLlxuICogVG8gYWNjZXNzIGEgcmVzZXJ2ZWQgZmllbGQgdXNlLCBmb28ucGJfPG5hbWU+LCBlZywgZm9vLnBiX2RlZmF1bHQuXG4gKiBGb3IgdGhlIGxpc3Qgb2YgcmVzZXJ2ZWQgbmFtZXMgcGxlYXNlIHNlZTpcbiAqICAgICBuZXQvcHJvdG8yL2NvbXBpbGVyL2pzL2ludGVybmFsL2dlbmVyYXRvci5jYyNrS2V5d29yZC5cbiAqIEBwYXJhbSB7Ym9vbGVhbj19IG9wdF9pbmNsdWRlSW5zdGFuY2UgRGVwcmVjYXRlZC4gd2hldGhlciB0byBpbmNsdWRlIHRoZVxuICogICAgIEpTUEIgaW5zdGFuY2UgZm9yIHRyYW5zaXRpb25hbCBzb3kgcHJvdG8gc3VwcG9ydDpcbiAqICAgICBodHRwOi8vZ290by9zb3ktcGFyYW0tbWlncmF0aW9uXG4gKiBAcmV0dXJuIHshT2JqZWN0fVxuICovXG5wcm90by50by52MS5Vc2VyQXJyaXZlQ29udHJvbFBvaW50LnByb3RvdHlwZS50b09iamVjdCA9IGZ1bmN0aW9uKG9wdF9pbmNsdWRlSW5zdGFuY2UpIHtcbiAgcmV0dXJuIHByb3RvLnRvLnYxLlVzZXJBcnJpdmVDb250cm9sUG9pbnQudG9PYmplY3Qob3B0X2luY2x1ZGVJbnN0YW5jZSwgdGhpcyk7XG59O1xuXG5cbi8qKlxuICogU3RhdGljIHZlcnNpb24gb2YgdGhlIHtAc2VlIHRvT2JqZWN0fSBtZXRob2QuXG4gKiBAcGFyYW0ge2Jvb2xlYW58dW5kZWZpbmVkfSBpbmNsdWRlSW5zdGFuY2UgRGVwcmVjYXRlZC4gV2hldGhlciB0byBpbmNsdWRlXG4gKiAgICAgdGhlIEpTUEIgaW5zdGFuY2UgZm9yIHRyYW5zaXRpb25hbCBzb3kgcHJvdG8gc3VwcG9ydDpcbiAqICAgICBodHRwOi8vZ290by9zb3ktcGFyYW0tbWlncmF0aW9uXG4gKiBAcGFyYW0geyFwcm90by50by52MS5Vc2VyQXJyaXZlQ29udHJvbFBvaW50fSBtc2cgVGhlIG1zZyBpbnN0YW5jZSB0byB0cmFuc2Zvcm0uXG4gKiBAcmV0dXJuIHshT2JqZWN0fVxuICogQHN1cHByZXNzIHt1bnVzZWRMb2NhbFZhcmlhYmxlc30gZiBpcyBvbmx5IHVzZWQgZm9yIG5lc3RlZCBtZXNzYWdlc1xuICovXG5wcm90by50by52MS5Vc2VyQXJyaXZlQ29udHJvbFBvaW50LnRvT2JqZWN0ID0gZnVuY3Rpb24oaW5jbHVkZUluc3RhbmNlLCBtc2cpIHtcbiAgdmFyIGYsIG9iaiA9IHtcbiAgICBpZDoganNwYi5NZXNzYWdlLmdldEZpZWxkV2l0aERlZmF1bHQobXNnLCAxLCAwKSxcbiAgICBzbjoganNwYi5NZXNzYWdlLmdldEZpZWxkV2l0aERlZmF1bHQobXNnLCAyLCBcIlwiKSxcbiAgICBtaWxsaXNlY29uZHN0YW1wOiBqc3BiLk1lc3NhZ2UuZ2V0RmllbGRXaXRoRGVmYXVsdChtc2csIDMsIDApLFxuICAgIGNhdGVnb3J5OiBqc3BiLk1lc3NhZ2UuZ2V0RmllbGRXaXRoRGVmYXVsdChtc2csIDQsIDApLFxuICAgIGNpcG9zaXRpb246IChmID0gbXNnLmdldENpcG9zaXRpb24oKSkgJiYgYmFzZV9wYi5Qb3NpdGlvbi50b09iamVjdChpbmNsdWRlSW5zdGFuY2UsIGYpXG4gIH07XG5cbiAgaWYgKGluY2x1ZGVJbnN0YW5jZSkge1xuICAgIG9iai4kanNwYk1lc3NhZ2VJbnN0YW5jZSA9IG1zZztcbiAgfVxuICByZXR1cm4gb2JqO1xufTtcbn1cblxuXG4vKipcbiAqIERlc2VyaWFsaXplcyBiaW5hcnkgZGF0YSAoaW4gcHJvdG9idWYgd2lyZSBmb3JtYXQpLlxuICogQHBhcmFtIHtqc3BiLkJ5dGVTb3VyY2V9IGJ5dGVzIFRoZSBieXRlcyB0byBkZXNlcmlhbGl6ZS5cbiAqIEByZXR1cm4geyFwcm90by50by52MS5Vc2VyQXJyaXZlQ29udHJvbFBvaW50fVxuICovXG5wcm90by50by52MS5Vc2VyQXJyaXZlQ29udHJvbFBvaW50LmRlc2VyaWFsaXplQmluYXJ5ID0gZnVuY3Rpb24oYnl0ZXMpIHtcbiAgdmFyIHJlYWRlciA9IG5ldyBqc3BiLkJpbmFyeVJlYWRlcihieXRlcyk7XG4gIHZhciBtc2cgPSBuZXcgcHJvdG8udG8udjEuVXNlckFycml2ZUNvbnRyb2xQb2ludDtcbiAgcmV0dXJuIHByb3RvLnRvLnYxLlVzZXJBcnJpdmVDb250cm9sUG9pbnQuZGVzZXJpYWxpemVCaW5hcnlGcm9tUmVhZGVyKG1zZywgcmVhZGVyKTtcbn07XG5cblxuLyoqXG4gKiBEZXNlcmlhbGl6ZXMgYmluYXJ5IGRhdGEgKGluIHByb3RvYnVmIHdpcmUgZm9ybWF0KSBmcm9tIHRoZVxuICogZ2l2ZW4gcmVhZGVyIGludG8gdGhlIGdpdmVuIG1lc3NhZ2Ugb2JqZWN0LlxuICogQHBhcmFtIHshcHJvdG8udG8udjEuVXNlckFycml2ZUNvbnRyb2xQb2ludH0gbXNnIFRoZSBtZXNzYWdlIG9iamVjdCB0byBkZXNlcmlhbGl6ZSBpbnRvLlxuICogQHBhcmFtIHshanNwYi5CaW5hcnlSZWFkZXJ9IHJlYWRlciBUaGUgQmluYXJ5UmVhZGVyIHRvIHVzZS5cbiAqIEByZXR1cm4geyFwcm90by50by52MS5Vc2VyQXJyaXZlQ29udHJvbFBvaW50fVxuICovXG5wcm90by50by52MS5Vc2VyQXJyaXZlQ29udHJvbFBvaW50LmRlc2VyaWFsaXplQmluYXJ5RnJvbVJlYWRlciA9IGZ1bmN0aW9uKG1zZywgcmVhZGVyKSB7XG4gIHdoaWxlIChyZWFkZXIubmV4dEZpZWxkKCkpIHtcbiAgICBpZiAocmVhZGVyLmlzRW5kR3JvdXAoKSkge1xuICAgICAgYnJlYWs7XG4gICAgfVxuICAgIHZhciBmaWVsZCA9IHJlYWRlci5nZXRGaWVsZE51bWJlcigpO1xuICAgIHN3aXRjaCAoZmllbGQpIHtcbiAgICBjYXNlIDE6XG4gICAgICB2YXIgdmFsdWUgPSAvKiogQHR5cGUge251bWJlcn0gKi8gKHJlYWRlci5yZWFkSW50NjQoKSk7XG4gICAgICBtc2cuc2V0SWQodmFsdWUpO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSAyOlxuICAgICAgdmFyIHZhbHVlID0gLyoqIEB0eXBlIHtzdHJpbmd9ICovIChyZWFkZXIucmVhZFN0cmluZygpKTtcbiAgICAgIG1zZy5zZXRTbih2YWx1ZSk7XG4gICAgICBicmVhaztcbiAgICBjYXNlIDM6XG4gICAgICB2YXIgdmFsdWUgPSAvKiogQHR5cGUge251bWJlcn0gKi8gKHJlYWRlci5yZWFkSW50NjQoKSk7XG4gICAgICBtc2cuc2V0TWlsbGlzZWNvbmRzdGFtcCh2YWx1ZSk7XG4gICAgICBicmVhaztcbiAgICBjYXNlIDQ6XG4gICAgICB2YXIgdmFsdWUgPSAvKiogQHR5cGUge251bWJlcn0gKi8gKHJlYWRlci5yZWFkSW50MzIoKSk7XG4gICAgICBtc2cuc2V0Q2F0ZWdvcnkodmFsdWUpO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSA1OlxuICAgICAgdmFyIHZhbHVlID0gbmV3IGJhc2VfcGIuUG9zaXRpb247XG4gICAgICByZWFkZXIucmVhZE1lc3NhZ2UodmFsdWUsYmFzZV9wYi5Qb3NpdGlvbi5kZXNlcmlhbGl6ZUJpbmFyeUZyb21SZWFkZXIpO1xuICAgICAgbXNnLnNldENpcG9zaXRpb24odmFsdWUpO1xuICAgICAgYnJlYWs7XG4gICAgZGVmYXVsdDpcbiAgICAgIHJlYWRlci5za2lwRmllbGQoKTtcbiAgICAgIGJyZWFrO1xuICAgIH1cbiAgfVxuICByZXR1cm4gbXNnO1xufTtcblxuXG4vKipcbiAqIFNlcmlhbGl6ZXMgdGhlIG1lc3NhZ2UgdG8gYmluYXJ5IGRhdGEgKGluIHByb3RvYnVmIHdpcmUgZm9ybWF0KS5cbiAqIEByZXR1cm4geyFVaW50OEFycmF5fVxuICovXG5wcm90by50by52MS5Vc2VyQXJyaXZlQ29udHJvbFBvaW50LnByb3RvdHlwZS5zZXJpYWxpemVCaW5hcnkgPSBmdW5jdGlvbigpIHtcbiAgdmFyIHdyaXRlciA9IG5ldyBqc3BiLkJpbmFyeVdyaXRlcigpO1xuICBwcm90by50by52MS5Vc2VyQXJyaXZlQ29udHJvbFBvaW50LnNlcmlhbGl6ZUJpbmFyeVRvV3JpdGVyKHRoaXMsIHdyaXRlcik7XG4gIHJldHVybiB3cml0ZXIuZ2V0UmVzdWx0QnVmZmVyKCk7XG59O1xuXG5cbi8qKlxuICogU2VyaWFsaXplcyB0aGUgZ2l2ZW4gbWVzc2FnZSB0byBiaW5hcnkgZGF0YSAoaW4gcHJvdG9idWYgd2lyZVxuICogZm9ybWF0KSwgd3JpdGluZyB0byB0aGUgZ2l2ZW4gQmluYXJ5V3JpdGVyLlxuICogQHBhcmFtIHshcHJvdG8udG8udjEuVXNlckFycml2ZUNvbnRyb2xQb2ludH0gbWVzc2FnZVxuICogQHBhcmFtIHshanNwYi5CaW5hcnlXcml0ZXJ9IHdyaXRlclxuICogQHN1cHByZXNzIHt1bnVzZWRMb2NhbFZhcmlhYmxlc30gZiBpcyBvbmx5IHVzZWQgZm9yIG5lc3RlZCBtZXNzYWdlc1xuICovXG5wcm90by50by52MS5Vc2VyQXJyaXZlQ29udHJvbFBvaW50LnNlcmlhbGl6ZUJpbmFyeVRvV3JpdGVyID0gZnVuY3Rpb24obWVzc2FnZSwgd3JpdGVyKSB7XG4gIHZhciBmID0gdW5kZWZpbmVkO1xuICBmID0gbWVzc2FnZS5nZXRJZCgpO1xuICBpZiAoZiAhPT0gMCkge1xuICAgIHdyaXRlci53cml0ZUludDY0KFxuICAgICAgMSxcbiAgICAgIGZcbiAgICApO1xuICB9XG4gIGYgPSBtZXNzYWdlLmdldFNuKCk7XG4gIGlmIChmLmxlbmd0aCA+IDApIHtcbiAgICB3cml0ZXIud3JpdGVTdHJpbmcoXG4gICAgICAyLFxuICAgICAgZlxuICAgICk7XG4gIH1cbiAgZiA9IG1lc3NhZ2UuZ2V0TWlsbGlzZWNvbmRzdGFtcCgpO1xuICBpZiAoZiAhPT0gMCkge1xuICAgIHdyaXRlci53cml0ZUludDY0KFxuICAgICAgMyxcbiAgICAgIGZcbiAgICApO1xuICB9XG4gIGYgPSBtZXNzYWdlLmdldENhdGVnb3J5KCk7XG4gIGlmIChmICE9PSAwKSB7XG4gICAgd3JpdGVyLndyaXRlSW50MzIoXG4gICAgICA0LFxuICAgICAgZlxuICAgICk7XG4gIH1cbiAgZiA9IG1lc3NhZ2UuZ2V0Q2lwb3NpdGlvbigpO1xuICBpZiAoZiAhPSBudWxsKSB7XG4gICAgd3JpdGVyLndyaXRlTWVzc2FnZShcbiAgICAgIDUsXG4gICAgICBmLFxuICAgICAgYmFzZV9wYi5Qb3NpdGlvbi5zZXJpYWxpemVCaW5hcnlUb1dyaXRlclxuICAgICk7XG4gIH1cbn07XG5cblxuLyoqXG4gKiBvcHRpb25hbCBpbnQ2NCBpZCA9IDE7XG4gKiBAcmV0dXJuIHtudW1iZXJ9XG4gKi9cbnByb3RvLnRvLnYxLlVzZXJBcnJpdmVDb250cm9sUG9pbnQucHJvdG90eXBlLmdldElkID0gZnVuY3Rpb24oKSB7XG4gIHJldHVybiAvKiogQHR5cGUge251bWJlcn0gKi8gKGpzcGIuTWVzc2FnZS5nZXRGaWVsZFdpdGhEZWZhdWx0KHRoaXMsIDEsIDApKTtcbn07XG5cblxuLyoqXG4gKiBAcGFyYW0ge251bWJlcn0gdmFsdWVcbiAqIEByZXR1cm4geyFwcm90by50by52MS5Vc2VyQXJyaXZlQ29udHJvbFBvaW50fSByZXR1cm5zIHRoaXNcbiAqL1xucHJvdG8udG8udjEuVXNlckFycml2ZUNvbnRyb2xQb2ludC5wcm90b3R5cGUuc2V0SWQgPSBmdW5jdGlvbih2YWx1ZSkge1xuICByZXR1cm4ganNwYi5NZXNzYWdlLnNldFByb3RvM0ludEZpZWxkKHRoaXMsIDEsIHZhbHVlKTtcbn07XG5cblxuLyoqXG4gKiBvcHRpb25hbCBzdHJpbmcgc24gPSAyO1xuICogQHJldHVybiB7c3RyaW5nfVxuICovXG5wcm90by50by52MS5Vc2VyQXJyaXZlQ29udHJvbFBvaW50LnByb3RvdHlwZS5nZXRTbiA9IGZ1bmN0aW9uKCkge1xuICByZXR1cm4gLyoqIEB0eXBlIHtzdHJpbmd9ICovIChqc3BiLk1lc3NhZ2UuZ2V0RmllbGRXaXRoRGVmYXVsdCh0aGlzLCAyLCBcIlwiKSk7XG59O1xuXG5cbi8qKlxuICogQHBhcmFtIHtzdHJpbmd9IHZhbHVlXG4gKiBAcmV0dXJuIHshcHJvdG8udG8udjEuVXNlckFycml2ZUNvbnRyb2xQb2ludH0gcmV0dXJucyB0aGlzXG4gKi9cbnByb3RvLnRvLnYxLlVzZXJBcnJpdmVDb250cm9sUG9pbnQucHJvdG90eXBlLnNldFNuID0gZnVuY3Rpb24odmFsdWUpIHtcbiAgcmV0dXJuIGpzcGIuTWVzc2FnZS5zZXRQcm90bzNTdHJpbmdGaWVsZCh0aGlzLCAyLCB2YWx1ZSk7XG59O1xuXG5cbi8qKlxuICogb3B0aW9uYWwgaW50NjQgbWlsbGlzZWNvbmRTdGFtcCA9IDM7XG4gKiBAcmV0dXJuIHtudW1iZXJ9XG4gKi9cbnByb3RvLnRvLnYxLlVzZXJBcnJpdmVDb250cm9sUG9pbnQucHJvdG90eXBlLmdldE1pbGxpc2Vjb25kc3RhbXAgPSBmdW5jdGlvbigpIHtcbiAgcmV0dXJuIC8qKiBAdHlwZSB7bnVtYmVyfSAqLyAoanNwYi5NZXNzYWdlLmdldEZpZWxkV2l0aERlZmF1bHQodGhpcywgMywgMCkpO1xufTtcblxuXG4vKipcbiAqIEBwYXJhbSB7bnVtYmVyfSB2YWx1ZVxuICogQHJldHVybiB7IXByb3RvLnRvLnYxLlVzZXJBcnJpdmVDb250cm9sUG9pbnR9IHJldHVybnMgdGhpc1xuICovXG5wcm90by50by52MS5Vc2VyQXJyaXZlQ29udHJvbFBvaW50LnByb3RvdHlwZS5zZXRNaWxsaXNlY29uZHN0YW1wID0gZnVuY3Rpb24odmFsdWUpIHtcbiAgcmV0dXJuIGpzcGIuTWVzc2FnZS5zZXRQcm90bzNJbnRGaWVsZCh0aGlzLCAzLCB2YWx1ZSk7XG59O1xuXG5cbi8qKlxuICogb3B0aW9uYWwgaW50MzIgY2F0ZWdvcnkgPSA0O1xuICogQHJldHVybiB7bnVtYmVyfVxuICovXG5wcm90by50by52MS5Vc2VyQXJyaXZlQ29udHJvbFBvaW50LnByb3RvdHlwZS5nZXRDYXRlZ29yeSA9IGZ1bmN0aW9uKCkge1xuICByZXR1cm4gLyoqIEB0eXBlIHtudW1iZXJ9ICovIChqc3BiLk1lc3NhZ2UuZ2V0RmllbGRXaXRoRGVmYXVsdCh0aGlzLCA0LCAwKSk7XG59O1xuXG5cbi8qKlxuICogQHBhcmFtIHtudW1iZXJ9IHZhbHVlXG4gKiBAcmV0dXJuIHshcHJvdG8udG8udjEuVXNlckFycml2ZUNvbnRyb2xQb2ludH0gcmV0dXJucyB0aGlzXG4gKi9cbnByb3RvLnRvLnYxLlVzZXJBcnJpdmVDb250cm9sUG9pbnQucHJvdG90eXBlLnNldENhdGVnb3J5ID0gZnVuY3Rpb24odmFsdWUpIHtcbiAgcmV0dXJuIGpzcGIuTWVzc2FnZS5zZXRQcm90bzNJbnRGaWVsZCh0aGlzLCA0LCB2YWx1ZSk7XG59O1xuXG5cbi8qKlxuICogb3B0aW9uYWwgYmFzZS52MS5Qb3NpdGlvbiBjaVBvc2l0aW9uID0gNTtcbiAqIEByZXR1cm4gez9wcm90by5iYXNlLnYxLlBvc2l0aW9ufVxuICovXG5wcm90by50by52MS5Vc2VyQXJyaXZlQ29udHJvbFBvaW50LnByb3RvdHlwZS5nZXRDaXBvc2l0aW9uID0gZnVuY3Rpb24oKSB7XG4gIHJldHVybiAvKiogQHR5cGV7P3Byb3RvLmJhc2UudjEuUG9zaXRpb259ICovIChcbiAgICBqc3BiLk1lc3NhZ2UuZ2V0V3JhcHBlckZpZWxkKHRoaXMsIGJhc2VfcGIuUG9zaXRpb24sIDUpKTtcbn07XG5cblxuLyoqXG4gKiBAcGFyYW0gez9wcm90by5iYXNlLnYxLlBvc2l0aW9ufHVuZGVmaW5lZH0gdmFsdWVcbiAqIEByZXR1cm4geyFwcm90by50by52MS5Vc2VyQXJyaXZlQ29udHJvbFBvaW50fSByZXR1cm5zIHRoaXNcbiovXG5wcm90by50by52MS5Vc2VyQXJyaXZlQ29udHJvbFBvaW50LnByb3RvdHlwZS5zZXRDaXBvc2l0aW9uID0gZnVuY3Rpb24odmFsdWUpIHtcbiAgcmV0dXJuIGpzcGIuTWVzc2FnZS5zZXRXcmFwcGVyRmllbGQodGhpcywgNSwgdmFsdWUpO1xufTtcblxuXG4vKipcbiAqIENsZWFycyB0aGUgbWVzc2FnZSBmaWVsZCBtYWtpbmcgaXQgdW5kZWZpbmVkLlxuICogQHJldHVybiB7IXByb3RvLnRvLnYxLlVzZXJBcnJpdmVDb250cm9sUG9pbnR9IHJldHVybnMgdGhpc1xuICovXG5wcm90by50by52MS5Vc2VyQXJyaXZlQ29udHJvbFBvaW50LnByb3RvdHlwZS5jbGVhckNpcG9zaXRpb24gPSBmdW5jdGlvbigpIHtcbiAgcmV0dXJuIHRoaXMuc2V0Q2lwb3NpdGlvbih1bmRlZmluZWQpO1xufTtcblxuXG4vKipcbiAqIFJldHVybnMgd2hldGhlciB0aGlzIGZpZWxkIGlzIHNldC5cbiAqIEByZXR1cm4ge2Jvb2xlYW59XG4gKi9cbnByb3RvLnRvLnYxLlVzZXJBcnJpdmVDb250cm9sUG9pbnQucHJvdG90eXBlLmhhc0NpcG9zaXRpb24gPSBmdW5jdGlvbigpIHtcbiAgcmV0dXJuIGpzcGIuTWVzc2FnZS5nZXRGaWVsZCh0aGlzLCA1KSAhPSBudWxsO1xufTtcblxuXG5nb29nLm9iamVjdC5leHRlbmQoZXhwb3J0cywgcHJvdG8udG8udjEpO1xuIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///66\n");
- /***/ }),
- /* 67 */
- /*!****************************************************************!*\
- !*** D:/Work2/Orienteering/TrackOffical/utils/SqliteHelper.js ***!
- \****************************************************************/
- /*! no static exports found */
- /***/ (function(module, exports, __webpack_require__) {
- "use strict";
- eval("/* WEBPACK VAR INJECTION */(function(__f__) {\n\nvar _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ 1);\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar _regenerator = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/regenerator */ 35));\nvar _asyncToGenerator2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/asyncToGenerator */ 37));\nvar _usqlite = __webpack_require__(/*! @/utils/usqlite.js */ 68);\nvar dbVersionModel, mapInfoModel;\nvar _default = {\n /**\r\n * 打开数据库\r\n * @param {string} dbName 数据库的名字\r\n * @param {int} version 数据库的版本\r\n * @return {object} 该函数会返回一个数据库实例\r\n */\n openDB: function openDB() {\n var _arguments = arguments;\n return (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee() {\n var dbName, version, resDbVersion, localVersion;\n return _regenerator.default.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n dbName = _arguments.length > 0 && _arguments[0] !== undefined ? _arguments[0] : 'Asistent';\n version = _arguments.length > 1 && _arguments[1] !== undefined ? _arguments[1] : 1.00;\n _context.prev = 2;\n __f__(\"log\", \"[openDB] name: \".concat(dbName, \" version: \").concat(version), \" at utils/SqliteHelper.js:13\");\n _context.next = 6;\n return _usqlite.usqlite.connect({\n name: dbName,\n // 数据库名称\n path: \"_doc/\".concat(dbName, \"_record.db\") // 路径\n });\n case 6:\n __f__(\"log\", \"\\u6570\\u636E\\u5E93\\u6253\\u5F00\\u6210\\u529F name: \".concat(dbName, \" version: \").concat(version), \" at utils/SqliteHelper.js:18\");\n if (!(dbName == 'Asistent')) {\n _context.next = 31;\n break;\n }\n _context.next = 10;\n return _usqlite.usqlite.model('dbVersion', {\n version: {\n type: Number,\n default: 0\n }\n });\n case 10:\n dbVersionModel = _context.sent;\n _context.next = 13;\n return _usqlite.usqlite.model('mapInfo', {\n shopId: {\n type: Number,\n primaryKey: true\n },\n mapName: {\n type: String\n },\n zipImageMd5: {\n type: String\n },\n zipImageUrl: {\n type: String\n },\n zipFileName: {\n type: String\n },\n zipFileKey: {\n type: String\n }\n // zipFilePath:{\n // \ttype: String,\n // },\n // zipFileData:{\n // \ttype: 'BLOB',\n // }\n });\n case 13:\n mapInfoModel = _context.sent;\n _context.next = 16;\n return dbVersionModel.find();\n case 16:\n resDbVersion = _context.sent;\n // console.log(\"dbVersion:\", resDbVersion);\n localVersion = resDbVersion.length > 0 ? resDbVersion[0].version : '';\n __f__(\"log\", \"localVersion:\", localVersion, \" at utils/SqliteHelper.js:60\");\n if (!(localVersion == '')) {\n _context.next = 24;\n break;\n }\n _context.next = 22;\n return dbVersionModel.insert({\n version: version\n });\n case 22:\n _context.next = 31;\n break;\n case 24:\n if (!(localVersion < version)) {\n _context.next = 31;\n break;\n }\n __f__(\"warn\", \"\\u672C\\u5730\\u6570\\u636E\\u5E93\\u7248\\u672C\\u4F4E\\uFF0C\\u9700\\u8981\\u5347\\u7EA7\\uFF01 current:\".concat(localVersion, \" New:\").concat(version), \" at utils/SqliteHelper.js:65\");\n if (!(localVersion == 1)) {\n _context.next = 29;\n break;\n }\n _context.next = 29;\n return mapInfoModel.alter([{\n name: 'zipFileName',\n option: String\n }, {\n name: 'zipFileKey',\n option: String\n }\n // { name: 'zipFilePath', option: String }\n // { name: 'zipFileData', option: 'BLOB' }\n ]);\n case 29:\n _context.next = 31;\n return dbVersionModel.update({\n version: version\n });\n case 31:\n return _context.abrupt(\"return\", _usqlite.usqlite);\n case 34:\n _context.prev = 34;\n _context.t0 = _context[\"catch\"](2);\n __f__(\"log\", '[openDB] err', _context.t0, \" at utils/SqliteHelper.js:79\");\n throw _context.t0;\n case 38:\n case \"end\":\n return _context.stop();\n }\n }\n }, _callee, null, [[2, 34]]);\n }))();\n },\n insertMapData: function insertMapData(tableName, arrayBuffer) {\n return (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee2() {\n var res;\n return _regenerator.default.wrap(function _callee2$(_context2) {\n while (1) {\n switch (_context2.prev = _context2.next) {\n case 0:\n _context2.prev = 0;\n if (!(tableName == 'mapInfo')) {\n _context2.next = 7;\n break;\n }\n _context2.next = 4;\n return mapInfoModel.insertMapData(arrayBuffer);\n case 4:\n res = _context2.sent;\n __f__(\"log\", '[insertMapData] 成功', \" at utils/SqliteHelper.js:88\");\n return _context2.abrupt(\"return\", res);\n case 7:\n _context2.next = 13;\n break;\n case 9:\n _context2.prev = 9;\n _context2.t0 = _context2[\"catch\"](0);\n __f__(\"error\", \"[insertMapData] 失败\", _context2.t0, \" at utils/SqliteHelper.js:92\");\n throw _context2.t0;\n case 13:\n case \"end\":\n return _context2.stop();\n }\n }\n }, _callee2, null, [[0, 9]]);\n }))();\n },\n /**\r\n * 新增数据\r\n * @param {string} tableName 表名\r\n * @param {string} data 数据\r\n */\n insertData: function insertData(tableName, data) {\n return (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee3() {\n var res;\n return _regenerator.default.wrap(function _callee3$(_context3) {\n while (1) {\n switch (_context3.prev = _context3.next) {\n case 0:\n _context3.prev = 0;\n if (!(tableName == 'mapInfo')) {\n _context3.next = 7;\n break;\n }\n _context3.next = 4;\n return mapInfoModel.insert(data);\n case 4:\n res = _context3.sent;\n __f__(\"log\", '[insertData] 数据写入成功', \" at utils/SqliteHelper.js:106\");\n return _context3.abrupt(\"return\", res);\n case 7:\n _context3.next = 13;\n break;\n case 9:\n _context3.prev = 9;\n _context3.t0 = _context3[\"catch\"](0);\n __f__(\"error\", \"[insertData] 数据写入失败\", _context3.t0, \" at utils/SqliteHelper.js:110\");\n throw _context3.t0;\n case 13:\n case \"end\":\n return _context3.stop();\n }\n }\n }, _callee3, null, [[0, 9]]);\n }))();\n },\n /**\r\n * 更新数据\r\n * @param {object} db 数据库实例\r\n * @param {string} tableName 表名\r\n * @param {object} data 数据\r\n */\n updateData: function updateData(tableName, data) {\n var _arguments2 = arguments;\n return (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee4() {\n var options, res;\n return _regenerator.default.wrap(function _callee4$(_context4) {\n while (1) {\n switch (_context4.prev = _context4.next) {\n case 0:\n options = _arguments2.length > 2 && _arguments2[2] !== undefined ? _arguments2[2] : '';\n _context4.prev = 1;\n if (!(tableName == 'mapInfo')) {\n _context4.next = 8;\n break;\n }\n _context4.next = 5;\n return mapInfoModel.update(data, options);\n case 5:\n res = _context4.sent;\n __f__(\"log\", '[updateData] 数据更新成功', \" at utils/SqliteHelper.js:125\");\n return _context4.abrupt(\"return\", res);\n case 8:\n _context4.next = 14;\n break;\n case 10:\n _context4.prev = 10;\n _context4.t0 = _context4[\"catch\"](1);\n __f__(\"error\", \"[updateData] 数据更新失败\", _context4.t0, \" at utils/SqliteHelper.js:129\");\n throw _context4.t0;\n case 14:\n case \"end\":\n return _context4.stop();\n }\n }\n }, _callee4, null, [[1, 10]]);\n }))();\n },\n /**\r\n * 通过主键删除数据\r\n * @param {object} db 数据库实例\r\n * @param {string} tableName 表名\r\n * @param {object} key 主键值\r\n */\n deleteDataByKey: function deleteDataByKey(tableName, key) {\n return (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee5() {\n var options, res;\n return _regenerator.default.wrap(function _callee5$(_context5) {\n while (1) {\n switch (_context5.prev = _context5.next) {\n case 0:\n _context5.prev = 0;\n if (!(tableName == 'mapInfo')) {\n _context5.next = 8;\n break;\n }\n options = 'shopId = ' + key;\n _context5.next = 5;\n return mapInfoModel.delete(options);\n case 5:\n res = _context5.sent;\n __f__(\"log\", '[deleteDataByKey] 数据删除成功', \" at utils/SqliteHelper.js:145\");\n return _context5.abrupt(\"return\", res);\n case 8:\n _context5.next = 14;\n break;\n case 10:\n _context5.prev = 10;\n _context5.t0 = _context5[\"catch\"](0);\n __f__(\"error\", \"[deleteDataByKey] 数据删除失败\", _context5.t0, \" at utils/SqliteHelper.js:149\");\n throw _context5.t0;\n case 14:\n case \"end\":\n return _context5.stop();\n }\n }\n }, _callee5, null, [[0, 10]]);\n }))();\n },\n /**\r\n * 通过主键读取数据\r\n * @param {object} db 数据库实例\r\n * @param {string} tableName 表名\r\n * @param {string} key 主键值\r\n */\n getDataByKey: function getDataByKey(tableName, key) {\n return (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee6() {\n var options, res;\n return _regenerator.default.wrap(function _callee6$(_context6) {\n while (1) {\n switch (_context6.prev = _context6.next) {\n case 0:\n _context6.prev = 0;\n if (!(tableName == 'mapInfo')) {\n _context6.next = 8;\n break;\n }\n options = 'shopId = ' + key;\n _context6.next = 5;\n return mapInfoModel.find(options);\n case 5:\n res = _context6.sent;\n __f__(\"log\", '[getDataByKey] 数据读取成功', res, \" at utils/SqliteHelper.js:165\");\n return _context6.abrupt(\"return\", res[0]);\n case 8:\n _context6.next = 14;\n break;\n case 10:\n _context6.prev = 10;\n _context6.t0 = _context6[\"catch\"](0);\n __f__(\"error\", \"[getDataByKey] 数据读取失败\", _context6.t0, \" at utils/SqliteHelper.js:169\");\n throw _context6.t0;\n case 14:\n case \"end\":\n return _context6.stop();\n }\n }\n }, _callee6, null, [[0, 10]]);\n }))();\n },\n /**\r\n * 关闭数据库\r\n * @param {object} db 数据库实例\r\n */\n closeDB: function closeDB() {\n return (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee7() {\n return _regenerator.default.wrap(function _callee7$(_context7) {\n while (1) {\n switch (_context7.prev = _context7.next) {\n case 0:\n _context7.prev = 0;\n _context7.next = 3;\n return _usqlite.usqlite.close();\n case 3:\n __f__(\"log\", \"关闭数据库成功\", \" at utils/SqliteHelper.js:181\");\n _context7.next = 10;\n break;\n case 6:\n _context7.prev = 6;\n _context7.t0 = _context7[\"catch\"](0);\n __f__(\"error\", \"[closeDB] 关闭数据库失败\", _context7.t0, \" at utils/SqliteHelper.js:183\");\n throw _context7.t0;\n case 10:\n case \"end\":\n return _context7.stop();\n }\n }\n }, _callee7, null, [[0, 6]]);\n }))();\n }\n};\nexports.default = _default;\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./node_modules/@dcloudio/vue-cli-plugin-uni/lib/format-log.js */ 34)[\"default\"]))//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInVuaS1hcHA6Ly8vdXRpbHMvU3FsaXRlSGVscGVyLmpzIl0sIm5hbWVzIjpbImRiVmVyc2lvbk1vZGVsIiwibWFwSW5mb01vZGVsIiwib3BlbkRCIiwiZGJOYW1lIiwidmVyc2lvbiIsInVzcWxpdGUiLCJjb25uZWN0IiwibmFtZSIsInBhdGgiLCJtb2RlbCIsInR5cGUiLCJOdW1iZXIiLCJkZWZhdWx0Iiwic2hvcElkIiwicHJpbWFyeUtleSIsIm1hcE5hbWUiLCJTdHJpbmciLCJ6aXBJbWFnZU1kNSIsInppcEltYWdlVXJsIiwiemlwRmlsZU5hbWUiLCJ6aXBGaWxlS2V5IiwiZmluZCIsInJlc0RiVmVyc2lvbiIsImxvY2FsVmVyc2lvbiIsImxlbmd0aCIsImluc2VydCIsImFsdGVyIiwib3B0aW9uIiwidXBkYXRlIiwiaW5zZXJ0TWFwRGF0YSIsInRhYmxlTmFtZSIsImFycmF5QnVmZmVyIiwicmVzIiwiaW5zZXJ0RGF0YSIsImRhdGEiLCJ1cGRhdGVEYXRhIiwib3B0aW9ucyIsImRlbGV0ZURhdGFCeUtleSIsImtleSIsImRlbGV0ZSIsImdldERhdGFCeUtleSIsImNsb3NlREIiLCJjbG9zZSJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0FBQUE7QUFFQSxJQUFJQSxjQUFjLEVBQUVDLFlBQVk7QUFBQSxlQUNqQjtFQUNkO0FBQ0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtFQUNPQyxNQUFNLG9CQUFzQztJQUFBO0lBQUE7TUFBQTtNQUFBO1FBQUE7VUFBQTtZQUFBO2NBQXJDQyxNQUFNLDBFQUFHLFVBQVU7Y0FBRUMsT0FBTywwRUFBRyxJQUFJO2NBQUE7Y0FFOUMsc0NBQThCRCxNQUFNLHVCQUFhQyxPQUFPO2NBQUk7Y0FBQSxPQUN0REMsZ0JBQU8sQ0FBQ0MsT0FBTyxDQUFDO2dCQUNyQkMsSUFBSSxFQUFFSixNQUFNO2dCQUFFO2dCQUNkSyxJQUFJLGlCQUFTTCxNQUFNLGVBQVksQ0FBRTtjQUNsQyxDQUFDLENBQUM7WUFBQTtjQUNGLHdFQUE2QkEsTUFB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Q0osR0FBRztjQUNQLGFBQVksMEJBQTBCO2NBQUUsa0NBQ2pDQSxHQUFHO1lBQUE7Y0FBQTtjQUFBO1lBQUE7Y0FBQTtjQUFBO2NBR1gsZUFBYywwQkFBMEI7Y0FBSztZQUFBO1lBQUE7Y0FBQTtVQUFBO1FBQUE7TUFBQTtJQUFBO0VBRy9DLENBQUM7RUFFRDtBQUNEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7RUFDT1EsWUFBWSx3QkFBQ1YsU0FBUyxFQUFFUSxHQUFHLEVBQUU7SUFBQTtNQUFBO01BQUE7UUFBQTtVQUFBO1lBQUE7Y0FBQTtjQUFBLE1BRTdCUixTQUFTLElBQUksU0FBUztnQkFBQTtnQkFBQTtjQUFBO2NBQ3JCTSxPQUFPLEdBQUcsV0FBVyxHQUFHRSxHQUFHO2NBQUE7Y0FBQSxPQUNmckMsWUFBWSxDQUFDb0IsSUFBSSxDQUFDZSxPQUFPLENBQUM7WUFBQTtjQUF0Q0osR0FBRztjQUNQLGFBQVksdUJBQXVCLEVBQUVBLEdBQUc7Y0FBRSxrQ0FDbkNBLEdBQUcsQ0FBQyxDQUFDLENBQUM7WUFBQTtjQUFBO2NBQUE7WUFBQTtjQUFBO2NBQUE7Y0FHZCxlQUFjLHVCQUF1QjtjQUFLO1lBQUE7WUFBQTtjQUFBO1VBQUE7UUFBQTtNQUFBO0lBQUE7RUFHNUMsQ0FBQztFQUVEO0FBQ0Q7QUFDQTtBQUNBO0VBQ09TLE9BQU8scUJBQUc7SUFBQTtNQUFBO1FBQUE7VUFBQTtZQUFBO2NBQUE7Y0FBQTtjQUFBLE9BRVJwQyxnQkFBTyxDQUFDcUMsS0FBSyxFQUFFO1lBQUE7Y0FDckIsYUFBWSxTQUFTO2NBQUU7Y0FBQTtZQUFBO2NBQUE7Y0FBQTtjQUV2QixlQUFjLG1CQUFtQjtjQUFLO1lBQUE7WUFBQTtjQUFBO1VBQUE7UUFBQTtNQUFBO0lBQUE7RUFHeEM7QUFDRCxDQUFDO0FBQUEsMkIiLCJmaWxlIjoiNjcuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyB1c3FsaXRlIH0gZnJvbSAnQC91dGlscy91c3FsaXRlLmpzJ1xyXG5cclxudmFyIGRiVmVyc2lvbk1vZGVsLCBtYXBJbmZvTW9kZWxcclxuZXhwb3J0IGRlZmF1bHQge1xyXG5cdC8qKlxyXG5cdCAqIOaJk+W8gOaVsOaNruW6k1xyXG5cdCAqIEBwYXJhbSB7c3RyaW5nfSBkYk5hbWUg5pWw5o2u5bqT55qE5ZCN5a2XXHJcblx0ICogQHBhcmFtIHtpbnR9IHZlcnNpb24g5pWw5o2u5bqT55qE54mI5pysXHJcblx0ICogQHJldHVybiB7b2JqZWN0fSDor6Xlh73mlbDkvJrov5Tlm57kuIDkuKrmlbDmja7lupPlrp7kvotcclxuXHQgKi9cclxuXHRhc3luYyBvcGVuREIoZGJOYW1lID0gJ0FzaXN0ZW50JywgdmVyc2lvbiA9IDEuMDApIHtcclxuXHRcdHRyeSB7XHJcblx0XHRcdGNvbnNvbGUubG9nKGBbb3BlbkRCXSBuYW1lOiAke2RiTmFtZX0gdmVyc2lvbjogJHt2ZXJzaW9ufWApO1xyXG5cdFx0XHRhd2FpdCB1c3FsaXRlLmNvbm5lY3Qoe1xyXG5cdFx0XHRcdG5hbWU6IGRiTmFtZSwgLy8g5pWw5o2u5bqT5ZCN56ewXHJcblx0XHRcdFx0cGF0aDpgX2RvYy8ke2RiTmFtZX1fcmVjb3JkLmRiYCwgLy8g6Lev5b6EXHJcblx0XHRcdH0pO1xyXG5cdFx0XHRjb25zb2xlLmxvZyhg5pWw5o2u5bqT5omT5byA5oiQ5YqfIG5hbWU6ICR7ZGJOYW1lfSB2ZXJzaW9uOiAke3ZlcnNpb259YCk7XHJcblx0XHRcdFxyXG5cdFx0XHRpZiAoZGJOYW1lID09ICdBc2lzdGVudCcpIHtcclxuXHRcdFx0XHRkYlZlcnNpb25Nb2RlbCA9IGF3YWl0IHVzcWxpdGUubW9kZWwoJ2RiVmVyc2lvbicse1xyXG5cdFx0XHRcdFx0dmVyc2lvbjp7XHJcblx0XHRcdFx0XHRcdHR5cGU6IE51bWJlcixcclxuXHRcdFx0XHRcdFx0ZGVmYXVsdDogMFxyXG5cdFx0XHRcdFx0fVxyXG5cdFx0XHRcdH0pO1xyXG5cdFx0XHRcdFxyXG5cdFx0XHRcdG1hcEluZm9Nb2RlbCA9IGF3YWl0IHVzcWxpdGUubW9kZWwoJ21hcEluZm8nLHtcclxuXHRcdFx0XHRcdHNob3BJZDp7XHJcblx0XHRcdFx0XHRcdHR5cGU6IE51bWJlcixcclxuXHRcdFx0XHRcdFx0cHJpbWFyeUtleTogdHJ1ZVxyXG5cdFx0XHRcdFx0fSxcclxuXHRcdFx0XHRcdG1hcE5hbWU6e1xyXG5cdFx0XHRcdFx0XHR0eXBlOiBTdHJpbmcsXHJcblx0XHRcdFx0XHR9LFxyXG5cdFx0XHRcdFx0emlwSW1hZ2VNZDU6e1xyXG5cdFx0XHRcdFx0XHR0eXBlOiBTdHJpbmcsXHJcblx0XHRcdFx0XHR9LFxyXG5cdFx0XHRcdFx0emlwSW1hZ2VVcmw6e1xyXG5cdFx0XHRcdFx0XHR0eXBlOiBTdHJpbmcsXHJcblx0XHRcdFx0XHR9LFxyXG5cdFx0XHRcdFx0emlwRmlsZU5hbWU6e1xyXG5cdFx0XHRcdFx0XHR0eXBlOiBTdHJpbmcsXHJcblx0XHRcdFx0XHR9LFxyXG5cdFx0XHRcdFx0emlwRmlsZUtleTp7XHJcblx0XHRcdFx0XHRcdHR5cGU6IFN0cmluZyxcclxuXHRcdFx0XHRcdH0sXHJcblx0XHRcdFx0XHQvLyB6aXBGaWxlUGF0aDp7XHJcblx0XHRcdFx0XHQvLyBcdHR5cGU6IFN0cmluZyxcclxuXHRcdFx0XHRcdC8vIH0sXHJcblx0XHRcdFx0XHQvLyB6aXBGaWxlRGF0YTp7XHJcblx0XHRcdFx0XHQvLyBcdHR5cGU6ICdCTE9CJyxcclxuXHRcdFx0XHRcdC8vIH1cclxuXHRcdFx0XHR9KTtcclxuXHRcdFx0XHJcblx0XHRcdFx0bGV0IHJlc0RiVmVyc2lvbiA9IGF3YWl0IGRiVmVyc2lvbk1vZGVsLmZpbmQoKVxyXG5cdFx0XHRcdC8vIGNvbnNvbGUubG9nKFwiZGJWZXJzaW9uOlwiLCByZXNEYlZlcnNpb24pO1xyXG5cdFx0XHRcdFxyXG5cdFx0XHRcdGxldCBsb2NhbFZlcnNpb24gPSAocmVzRGJWZXJzaW9uLmxlbmd0aCA+IDApID8gcmVzRGJWZXJzaW9uWzBdLnZlcnNpb24gOiAnJ1xyXG5cdFx0XHRcdGNvbnNvbGUubG9nKFwibG9jYWxWZXJzaW9uOlwiLCBsb2NhbFZlcnNpb24pO1xyXG5cdFx0XHRcdGlmIChsb2NhbFZlcnNpb24gPT0gJycpIHtcclxuXHRcdFx0XHRcdGF3YWl0IGRiVmVyc2lvbk1vZGVsLmluc2VydCh7IHZlcnNpb246IHZlcnNpb24gfSlcclxuXHRcdFx0XHR9XHJcblx0XHRcdFx0ZWxzZSBpZiAobG9jYWxWZXJzaW9uIDwgdmVyc2lvbikge1xyXG5cdFx0XHRcdFx0Y29uc29sZS53YXJuKGDmnKzlnLDmlbDmja7lupPniYjmnKzkvY7vvIzpnIDopoHljYfnuqfvvIEgY3VycmVudDoke2xvY2FsVmVyc2lvbn0gTmV3OiR7dmVyc2lvbn1gKTtcclxuXHRcdFx0XHRcdGlmIChsb2NhbFZlcnNpb24gPT0gMSkge1xyXG5cdFx0XHRcdFx0XHRhd2FpdCBtYXBJbmZvTW9kZWwuYWx0ZXIoW1xyXG5cdFx0XHRcdFx0XHRcdHsgbmFtZTogJ3ppcEZpbGVOYW1lJywgb3B0aW9uOiBTdHJpbmcgfSxcclxuXHRcdFx0XHRcdFx0XHR7IG5hbWU6ICd6aXBGaWxlS2V5Jywgb3B0aW9uOiBTdHJpbmcgfVxyXG5cdFx0XHRcdFx0XHRcdC8vIHsgbmFtZTogJ3ppcEZpbGVQYXRoJywgb3B0aW9uOiBTdHJpbmcgfVxyXG5cdFx0XHRcdFx0XHRcdC8vIHsgbmFtZTogJ3ppcEZpbGVEYXRhJywgb3B0aW9uOiAnQkxPQicgfVxyXG5cdFx0XHRcdFx0XHRdKVxyXG5cdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0YXdhaXQgZGJWZXJzaW9uTW9kZWwudXBkYXRlKHsgdmVyc2lvbjogdmVyc2lvbiB9KVxyXG5cdFx0XHRcdH1cclxuXHRcdFx0fVxyXG5cdFx0XHRyZXR1cm4gdXNxbGl0ZTtcclxuXHRcdH0gY2F0Y2ggKGUpIHtcclxuXHRcdFx0Y29uc29sZS5sb2coJ1tvcGVuREJdIGVycicsIGUpXHJcblx0XHRcdHRocm93IGVcclxuXHRcdH1cclxuXHR9LFxyXG5cdFxyXG5cdGFzeW5jIGluc2VydE1hcERhdGEodGFibGVOYW1lLCBhcnJheUJ1ZmZlcikge1xyXG5cdFx0dHJ5IHtcclxuXHRcdFx0aWYgKHRhYmxlTmFtZSA9PSAnbWFwSW5mbycpIHtcclxuXHRcdFx0XHRsZXQgcmVzID0gYXdhaXQgbWFwSW5mb01vZGVsLmluc2VydE1hcERhdGEoYXJyYXlCdWZmZXIpIFxyXG5cdFx0XHRcdGNvbnNvbGUubG9nKCdbaW5zZXJ0TWFwRGF0YV0g5oiQ5YqfJyk7XHJcblx0XHRcdFx0cmV0dXJuIHJlc1xyXG5cdFx0XHR9XHJcblx0XHR9IGNhdGNoIChlKSB7XHJcblx0XHRcdGNvbnNvbGUuZXJyb3IoXCJbaW5zZXJ0TWFwRGF0YV0g5aSx6LSlXCIsIGUpO1xyXG5cdFx0XHR0aHJvdyBlXHJcblx0XHR9XHJcblx0fSxcclxuXHRcclxuXHQvKipcclxuXHQgKiDmlrDlop7mlbDmja5cclxuXHQgKiBAcGFyYW0ge3N0cmluZ30gdGFibGVOYW1lIOihqOWQjVxyXG5cdCAqIEBwYXJhbSB7c3RyaW5nfSBkYXRhIOaVsOaNrlxyXG5cdCAqL1xyXG5cdGFzeW5jIGluc2VydERhdGEodGFibGVOYW1lLCBkYXRhKSB7XHJcblx0XHR0cnkge1xyXG5cdFx0XHRpZiAodGFibGVOYW1lID09ICdtYXBJbmZvJykge1xyXG5cdFx0XHRcdGxldCByZXMgPSBhd2FpdCBtYXBJbmZvTW9kZWwuaW5zZXJ0KGRhdGEpXHJcblx0XHRcdFx0Y29uc29sZS5sb2coJ1tpbnNlcnREYXRhXSDmlbDmja7lhpnlhaXmiJDlip8nKTtcclxuXHRcdFx0XHRyZXR1cm4gcmVzXHJcblx0XHRcdH1cclxuXHRcdH0gY2F0Y2ggKGUpIHtcclxuXHRcdFx0Y29uc29sZS5lcnJvcihcIltpbnNlcnREYXRhXSDmlbDmja7lhpnlhaXlpLHotKVcIiwgZSk7XHJcblx0XHRcdHRocm93IGVcclxuXHRcdH1cclxuXHR9LFxyXG5cdFxyXG5cdC8qKlxyXG5cdCAqIOabtOaWsOaVsOaNrlxyXG5cdCAqIEBwYXJhbSB7b2JqZWN0fSBkYiDmlbDmja7lupPlrp7kvotcclxuXHQgKiBAcGFyYW0ge3N0cmluZ30gdGFibGVOYW1lIOihqOWQjVxyXG5cdCAqIEBwYXJhbSB7b2JqZWN0fSBkYXRhIOaVsOaNrlxyXG5cdCAqL1xyXG5cdGFzeW5jIHVwZGF0ZURhdGEodGFibGVOYW1lLCBkYXRhLCBvcHRpb25zPScnKSB7XHJcblx0XHR0cnkge1xyXG5cdFx0XHRpZiAodGFibGVOYW1lID09ICdtYXBJbmZvJykge1xyXG5cdFx0XHRcdGxldCByZXMgPSBhd2FpdCBtYXBJbmZvTW9kZWwudXBkYXRlKGRhdGEsIG9wdGlvbnMpXHJcblx0XHRcdFx0Y29uc29sZS5sb2coJ1t1cGRhdGVEYXRhXSDmlbDmja7mm7TmlrDmiJDlip8nKTtcclxuXHRcdFx0XHRyZXR1cm4gcmVzXHJcblx0XHRcdH1cclxuXHRcdH0gY2F0Y2ggKGUpIHtcclxuXHRcdFx0Y29uc29sZS5lcnJvcihcIlt1cGRhdGVEYXRhXSDmlbDmja7mm7TmlrDlpLHotKVcIiwgZSk7XHJcblx0XHRcdHRocm93IGVcclxuXHRcdH1cclxuXHR9LFxyXG5cdFxyXG5cdC8qKlxyXG5cdCAqIOmAmui/h+S4u+mUruWIoOmZpOaVsOaNrlxyXG5cdCAqIEBwYXJhbSB7b2JqZWN0fSBkYiDmlbDmja7lupPlrp7kvotcclxuXHQgKiBAcGFyYW0ge3N0cmluZ30gdGFibGVOYW1lIOihqOWQjVxyXG5cdCAqIEBwYXJhbSB7b2JqZWN0fSBrZXkg5Li76ZSu5YC8XHJcblx0ICovXHJcblx0YXN5bmMgZGVsZXRlRGF0YUJ5S2V5KHRhYmxlTmFtZSwga2V5KSB7XHJcblx0XHR0cnkge1xyXG5cdFx0XHRpZiAodGFibGVOYW1lID09ICdtYXBJbmZvJykge1xyXG5cdFx0XHRcdGxldCBvcHRpb25zID0gJ3Nob3BJZCA9ICcgKyBrZXlcclxuXHRcdFx0XHRsZXQgcmVzID0gYXdhaXQgbWFwSW5mb01vZGVsLmRlbGV0ZShvcHRpb25zKVxyXG5cdFx0XHRcdGNvbnNvbGUubG9nKCdbZGVsZXRlRGF0YUJ5S2V5XSDmlbDmja7liKDpmaTmiJDlip8nKTtcclxuXHRcdFx0XHRyZXR1cm4gcmVzXHJcblx0XHRcdH1cclxuXHRcdH0gY2F0Y2ggKGUpIHtcclxuXHRcdFx0Y29uc29sZS5lcnJvcihcIltkZWxldGVEYXRhQnlLZXldIOaVsOaNruWIoOmZpOWksei0pVwiLCBlKTtcclxuXHRcdFx0dGhyb3cgZVxyXG5cdFx0fVx0XHRcdFxyXG5cdH0sXHJcblx0XHJcblx0LyoqXHJcblx0ICog6YCa6L+H5Li76ZSu6K+75Y+W5pWw5o2uXHJcblx0ICogQHBhcmFtIHtvYmplY3R9IGRiIOaVsOaNruW6k+WunuS+i1xyXG5cdCAqIEBwYXJhbSB7c3RyaW5nfSB0YWJsZU5hbWUg6KGo5ZCNXHJcblx0ICogQHBhcmFtIHtzdHJpbmd9IGtleSDkuLvplK7lgLxcclxuXHQgKi9cclxuXHRhc3luYyBnZXREYXRhQnlLZXkodGFibGVOYW1lLCBrZXkpIHtcclxuXHRcdHRyeSB7XHJcblx0XHRcdGlmICh0YWJsZU5hbWUgPT0gJ21hcEluZm8nKSB7XHJcblx0XHRcdFx0bGV0IG9wdGlvbnMgPSAnc2hvcElkID0gJyArIGtleVxyXG5cdFx0XHRcdGxldCByZXMgPSBhd2FpdCBtYXBJbmZvTW9kZWwuZmluZChvcHRpb25zKVxyXG5cdFx0XHRcdGNvbnNvbGUubG9nKCdbZ2V0RGF0YUJ5S2V5XSDmlbDmja7or7vlj5bmiJDlip8nLCByZXMpO1xyXG5cdFx0XHRcdHJldHVybiByZXNbMF1cclxuXHRcdFx0fVxyXG5cdFx0fSBjYXRjaCAoZSkge1xyXG5cdFx0XHRjb25zb2xlLmVycm9yKFwiW2dldERhdGFCeUtleV0g5pWw5o2u6K+75Y+W5aSx6LSlXCIsIGUpO1xyXG5cdFx0XHR0aHJvdyBlXHJcblx0XHR9XHJcblx0fSxcclxuXHRcclxuXHQvKipcclxuXHQgKiDlhbPpl63mlbDmja7lupNcclxuXHQgKiBAcGFyYW0ge29iamVjdH0gZGIg5pWw5o2u5bqT5a6e5L6LXHJcblx0ICovXHJcblx0YXN5bmMgY2xvc2VEQigpIHtcclxuXHRcdHRyeSB7XHJcblx0XHRcdGF3YWl0IHVzcWxpdGUuY2xvc2UoKTtcclxuXHRcdFx0Y29uc29sZS5sb2coXCLlhbPpl63mlbDmja7lupPmiJDlip9cIik7XHJcblx0XHR9IGNhdGNoIChlKSB7XHJcblx0XHRcdGNvbnNvbGUuZXJyb3IoXCJbY2xvc2VEQl0g5YWz6Zet5pWw5o2u5bqT5aSx6LSlXCIsIGUpO1xyXG5cdFx0XHR0aHJvdyBlXHJcblx0XHR9XHRcdFx0XHJcblx0fVxyXG59Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///67\n");
- /***/ }),
- /* 68 */
- /*!***********************************************************!*\
- !*** D:/Work2/Orienteering/TrackOffical/utils/usqlite.js ***!
- \***********************************************************/
- /*! no static exports found */
- /***/ (function(module, exports, __webpack_require__) {
- "use strict";
- eval("/* WEBPACK VAR INJECTION */(function(__f__) {\n\nvar _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ 1);\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.usqlite = void 0;\nvar _regenerator = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/regenerator */ 35));\nvar _asyncToGenerator2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/asyncToGenerator */ 37));\nvar _classCallCheck2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ 69));\nvar _createClass2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/createClass */ 70));\n/**\r\n * 对 SQLite 的 ORM 的封装处理\r\n * @time 2023-04-06\r\n * @version 2.0.0\r\n * @by wzx\r\n */\n\nvar config = {\n deBug: true,\n isConnect: false\n};\n// class Response {\n// \tconstructor(code, msg, data) {\n// \t\tthis.code = code;\n// \t\tthis.msg = msg;\n// \t\tthis.data = data;\n// \t}\n// \ttoString() {\n// \t\treturn JSON.stringify(this);\n// \t}\n// }\nvar Utils = /*#__PURE__*/function () {\n function Utils() {\n (0, _classCallCheck2.default)(this, Utils);\n }\n (0, _createClass2.default)(Utils, null, [{\n key: \"modelSql\",\n value: function modelSql(name, options) {\n var sql;\n var sqlArr = [];\n var primaryKeyArr = [];\n Utils.log('[modelSql] options:', options);\n for (var key in options) {\n if (Object.hasOwnProperty.call(options, key)) {\n var option = options[key];\n sqlArr.push(Utils.restrain(key, option));\n if (option.primaryKey == true) {\n primaryKeyArr.push(key.toString());\n Utils.log(\"[modelSql] \".concat(key, \" is primary key\").concat(primaryKeyArr.length));\n }\n }\n }\n Utils.log(primaryKeyArr.length);\n if (primaryKeyArr.length > 1) {\n sql = \"CREATE TABLE '\".concat(name, \"' (\").concat(sqlArr.join(', ').replaceAll(' PRIMARY KEY', ''), \", PRIMARY KEY (\").concat(primaryKeyArr.join(), \"))\");\n } else {\n sql = \"CREATE TABLE '\".concat(name, \"' (\").concat(sqlArr.join(', '), \")\");\n }\n Utils.log(\"[modelSql] \".concat(sql));\n return sql;\n }\n }, {\n key: \"restrain\",\n value: function restrain(key, options) {\n var restrainArray = [];\n restrainArray.push(\"'\".concat(key, \"'\"));\n\n // 如果是 String 拦截处理\n if (options.constructor != Object) {\n restrainArray.push(Utils.toType(options));\n return restrainArray.join(' ');\n }\n restrainArray.push(Utils.toType(options.type));\n\n // 主键\n if (options.primaryKey == true) {\n if (options.autoIncrement != true) {\n restrainArray.push('PRIMARY KEY');\n }\n }\n\n // 自增\n if (Utils.isNumber(options.type) && options.autoIncrement == true) {\n restrainArray.pop();\n restrainArray.push('INTEGER');\n restrainArray.push('PRIMARY KEY');\n restrainArray.push('AUTOINCREMENT');\n }\n\n // 非空\n if (options.notNull == true) {\n restrainArray.push('NOT NULL');\n }\n\n // 默认值\n if (options.default) {\n restrainArray.push(\"DEFAULT \".concat(options.default));\n }\n\n // 是否是不同的值\n if (options.unique == true) {\n restrainArray.push('UNIQUE');\n }\n\n // 检查\n if (options.check) {\n restrainArray.push(\"CHECK(\".concat(THIS_VALUE.check, \")\"));\n }\n return restrainArray.join(' ');\n }\n }, {\n key: \"toType\",\n value: function toType(jsType) {\n var sqliteType = '';\n if (Utils.isNumber(jsType)) {\n sqliteType = 'numeric';\n } else if (Utils.isDate(jsType)) {\n sqliteType = 'timestamp';\n } else if (Utils.isBlob(jsType)) {\n sqliteType = 'BLOB';\n } else {\n sqliteType = 'varchar';\n }\n return sqliteType;\n }\n }, {\n key: \"log\",\n value: function log() {\n if (config.deBug) {\n console.log.apply(null, arguments);\n }\n }\n }, {\n key: \"warn\",\n value: function warn() {\n if (config.deBug) {\n console.warn.apply(null, arguments);\n }\n }\n }, {\n key: \"error\",\n value: function error() {\n console.error.apply(null, arguments);\n }\n }, {\n key: \"isBlob\",\n value: function isBlob(value) {\n return value === 'BLOB';\n }\n }, {\n key: \"isArray\",\n value: function isArray(value) {\n return Object.prototype.toString.call(value) === '[object Array]';\n }\n }, {\n key: \"isObject\",\n value: function isObject(value) {\n return Object.prototype.toString.call(value) === '[object Object]';\n }\n }, {\n key: \"isString\",\n value: function isString(value) {\n return Object.prototype.toString.call(value) === '[object String]';\n }\n }, {\n key: \"isFunction\",\n value: function isFunction(value) {\n return value === Function || Object.prototype.toString.call(value) === '[object Function]';\n }\n }, {\n key: \"isNumber\",\n value: function isNumber(value) {\n return value === Number || Object.prototype.toString.call(value) === '[object Number]';\n }\n }, {\n key: \"isNaN\",\n value: function (_isNaN) {\n function isNaN(_x) {\n return _isNaN.apply(this, arguments);\n }\n isNaN.toString = function () {\n return _isNaN.toString();\n };\n return isNaN;\n }(function (value) {\n return Object.prototype.toString.call(value) === '[object Number]' && isNaN(value);\n })\n }, {\n key: \"isBoolean\",\n value: function isBoolean(value) {\n return Object.prototype.toString.call(value) === '[object Boolean]';\n }\n }, {\n key: \"isUndefined\",\n value: function isUndefined(value) {\n return Object.prototype.toString.call(value) === '[object Undefined]';\n }\n }, {\n key: \"isModel\",\n value: function isModel(value) {\n return Object.prototype.toString.call(value) === '[object Model]';\n }\n }, {\n key: \"isDate\",\n value: function isDate(value) {\n return value === Date || Object.prototype.toString.call(value) === '[object Date]';\n }\n }]);\n return Utils;\n}();\n/**\r\n * Model 对象内部public方法全部 return this;\r\n */\nvar Model = /*#__PURE__*/function () {\n /**\r\n * @constructor\r\n * @param {String} name 数据库表名\r\n * @param {} options 数据表列对象\r\n * @returns \r\n */\n function Model() {\n (0, _classCallCheck2.default)(this, Model);\n } // constructor(name, options) {\n // this.init(name, options)\n\n // let self = this;\n // self.name = name;\n // self.options = options;\n\n // if (config.isConnect) {\n // \tself.repair();\n // } else {\n // \tif(!config.name||!config.path){\n // \t\tconsole.error('\"config.name\" or \"config.path\" is empty');\n // \t}\n // \tusqlite.connect(config);\n // }\n\n /**\r\n * @param {String} name 数据库表名\r\n * @param {} options 数据表列对象\r\n * @returns \r\n */\n (0, _createClass2.default)(Model, [{\n key: \"init\",\n value: function () {\n var _init = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee(name, options) {\n var self;\n return _regenerator.default.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n self = this;\n self.name = name;\n self.options = options;\n if (!config.isConnect) {\n _context.next = 8;\n break;\n }\n _context.next = 6;\n return self.repair();\n case 6:\n _context.next = 11;\n break;\n case 8:\n if (!config.name || !config.path) {\n __f__(\"error\", '\"config.name\" or \"config.path\" is empty', \" at utils/usqlite.js:189\");\n }\n _context.next = 11;\n return usqlite.connect(config);\n case 11:\n case \"end\":\n return _context.stop();\n }\n }\n }, _callee, this);\n }));\n function init(_x2, _x3) {\n return _init.apply(this, arguments);\n }\n return init;\n }()\n /**\r\n * @description 查询表数据\r\n * @param {String|Array} options \r\n * - String WHERE 内容\r\n * - Array 需要查询的列\r\n * @returns \r\n */\n }, {\n key: \"find\",\n value: function find() {\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';\n var sql = '';\n // let self = this;\n // self.repair();\n\n if (!(Utils.isString(options) || Utils.isArray(options) || Utils.isFunction(options))) {\n Utils.error('The first parameter of Model.find should be \"Array\", \"String\" or \"Function\" (when there is only one parameter).');\n }\n if (options == '') {\n sql = \"SELECT * FROM '\".concat(this.name, \"'\"); // 查找全部\n } else if (Utils.isArray(options)) {\n sql = \"SELECT \".concat(options.join(), \" FROM '\").concat(this.name, \"'\"); // 查找制定列\n } else if (Utils.isString(options)) {\n sql = \"SELECT * FROM '\".concat(this.name, \"' WHERE \").concat(options); // 制定条件查询\n }\n\n Utils.log(\"[find]: \".concat(sql));\n return new Promise(function (resolve, reject) {\n plus.sqlite.selectSql({\n name: config.name,\n sql: sql,\n success: function success(res) {\n __f__(\"log\", '[find] res:', res, \" at utils/usqlite.js:225\");\n resolve(res);\n },\n fail: function fail(err) {\n __f__(\"error\", '[find] err:', err, \" at utils/usqlite.js:229\");\n reject(err);\n }\n });\n });\n }\n\n /**\r\n * @description 分页查询\r\n * @param {Object} options : { where:查询条件, number: 当前页数 , count : 每页数量 }\r\n * @return\r\n */\n }, {\n key: \"limit\",\n value: function limit(options) {\n var sql = '';\n // let self = this;\n // self.repair();\n if (!Utils.isObject(options)) {\n Utils.error('The first parameter of Model.limit should be \"Object\".');\n }\n if (!options.where) {\n // 不存在 where\n sql = \"SELECT * FROM '\".concat(this.name, \"' LIMIT \").concat(options.count, \" OFFSET \").concat((options.number - 1) * options.count);\n } else {\n // 存在 where\n sql = \"SELECT * FROM '\".concat(this.name, \"' WHERE \").concat(options.where, \" LIMIT \").concat(options.count, \" OFFSET \").concat((options.number - 1) * options.count);\n }\n ;\n Utils.log(\"[limit]: \".concat(sql));\n return new Promise(function (resolve, reject) {\n plus.sqlite.selectSql({\n name: config.name,\n sql: sql,\n success: function success(res) {\n __f__(\"log\", '[limit] res:', res, \" at utils/usqlite.js:266\");\n resolve(res);\n },\n fail: function fail(err) {\n __f__(\"error\", '[limit] err:', err, \" at utils/usqlite.js:270\");\n reject(err);\n }\n });\n });\n }\n\n /**\r\n * @description 插入数据\r\n * @param {Object|Array} data: 需要插入的单个或者多个数据\r\n */\n }, {\n key: \"insert\",\n value: function () {\n var _insert = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee2(data) {\n var i, keys, values, key, sql;\n return _regenerator.default.wrap(function _callee2$(_context2) {\n while (1) {\n switch (_context2.prev = _context2.next) {\n case 0:\n // let self = this;\n // self.repair();\n\n if (!(Utils.isObject(data) || Util.isArray(data))) {\n Utils.error('The first parameter of Model.insert should be \"Object\" or \"Array\".');\n }\n if (!config.isConnect) {\n _context2.next = 20;\n break;\n }\n if (!Utils.isArray(data)) {\n _context2.next = 13;\n break;\n }\n i = 0;\n case 4:\n if (!(i < data.length)) {\n _context2.next = 10;\n break;\n }\n _context2.next = 7;\n return this.insert(data[i]);\n case 7:\n i++;\n _context2.next = 4;\n break;\n case 10:\n return _context2.abrupt(\"return\");\n case 13:\n if (!Utils.isObject(data)) {\n _context2.next = 20;\n break;\n }\n keys = [];\n values = []; // let index = arguments[3]??null;\n for (key in data) {\n keys.push(key);\n values.push(\"'\".concat(data[key], \"'\"));\n }\n sql = \"INSERT INTO '\".concat(this.name, \"' (\").concat(keys.join(), \") VALUES (\").concat(values.join(), \")\");\n Utils.log(\"[insert]: \".concat(sql));\n return _context2.abrupt(\"return\", new Promise(function (resolve, reject) {\n plus.sqlite.executeSql({\n name: config.name,\n sql: sql,\n success: function success(res) {\n // console.log('[insert] res:', res)\n resolve(res);\n },\n fail: function fail(err) {\n __f__(\"error\", '[insert] err:', err, \" at utils/usqlite.js:317\");\n reject(err);\n }\n });\n }));\n case 20:\n case \"end\":\n return _context2.stop();\n }\n }\n }, _callee2, this);\n }));\n function insert(_x4) {\n return _insert.apply(this, arguments);\n }\n return insert;\n }()\n /**\r\n * @description 更新数据\r\n * @param {Object} data: 修改后的数据 \r\n * @param {String} options:可选参数 更新条件\r\n */\n }, {\n key: \"update\",\n value: function update(data) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '';\n // let self = this;\n // self.repair();\n var sql = '';\n var items = [];\n if (!Utils.isObject(data)) {\n Utils.error('The first parameter of Model.update should be \"Objrct\".');\n }\n if (!(Utils.isObject(options) || Utils.isString(options))) {\n Utils.error('The second parameter of Model.update should be \"Object\" or \"String\".');\n }\n for (var key in data) {\n items.push(\"\".concat(key, \"='\").concat(data[key], \"'\"));\n }\n ;\n if (options == '') {\n sql = \"UPDATE '\".concat(this.name, \"' SET \").concat(items.join());\n } else {\n sql = \"UPDATE \".concat(this.name, \" SET \").concat(items.join(), \" WHERE \").concat(options);\n }\n ;\n Utils.log(\"[update]: \".concat(sql));\n return new Promise(function (resolve, reject) {\n plus.sqlite.executeSql({\n name: config.name,\n sql: sql,\n success: function success(res) {\n // console.log('[update] res:', res)\n resolve(res);\n },\n fail: function fail(err) {\n __f__(\"error\", '[update] err:', err, \" at utils/usqlite.js:364\");\n reject(err);\n }\n });\n });\n }\n\n /**\r\n * @description 删除数据\r\n * @param {String} options :可选参数 删除条件\r\n */\n }, {\n key: \"delete\",\n value: function _delete() {\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';\n // let self = this;\n // self.repair();\n var sql = '';\n if (!(Utils.isString(options) || Utils.isFunction(options))) {\n Utils.error('The first parameter of Model.delete should be \"Object\" or \"Function\".');\n }\n if (options == '') {\n sql = \"DELETE FROM '\".concat(this.name, \"'\");\n } else {\n sql = \"DELETE FROM '\".concat(this.name, \"' WHERE \").concat(options);\n }\n ;\n Utils.log(\"[delete]: \".concat(sql));\n return new Promise(function (resolve, reject) {\n plus.sqlite.executeSql({\n name: config.name,\n sql: sql,\n success: function success(res) {\n __f__(\"log\", '[delete] res:', res, \" at utils/usqlite.js:396\");\n resolve(res);\n },\n fail: function fail(err) {\n __f__(\"error\", '[delete] err:', err, \" at utils/usqlite.js:400\");\n reject(err);\n }\n });\n });\n }\n\n /**\r\n * @description 重命名或者新增列\r\n * @param {Object|Array|String} options 参数 数组为新增多列 对象为新增单列{aa} 字符串重命名\r\n * @return: \r\n */\n }, {\n key: \"alter\",\n value: function () {\n var _alter = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee3(options) {\n var self, sql, i, column;\n return _regenerator.default.wrap(function _callee3$(_context3) {\n while (1) {\n switch (_context3.prev = _context3.next) {\n case 0:\n self = this; // self.repair();\n sql = '';\n if (!(Utils.isObject(options) || Utils.isArray(options) || Utils.isString(options))) {\n Utils.error('The first parameter of Model.alter should be \"Object\", \"Array\" or \"String\".');\n }\n if (!Utils.isArray(options)) {\n _context3.next = 14;\n break;\n }\n i = 0;\n case 5:\n if (!(i < options.length)) {\n _context3.next = 11;\n break;\n }\n _context3.next = 8;\n return this.alter(options[i]);\n case 8:\n i++;\n _context3.next = 5;\n break;\n case 11:\n return _context3.abrupt(\"return\");\n case 14:\n if (Utils.isObject(options)) {\n // 新增单列\n column = Utils.restrain(options.name, options.option);\n sql = \"ALTER TABLE '\".concat(this.name, \"' ADD COLUMN \").concat(column);\n } else if (options.constructor == String) {\n // 重命名\n sql = \"ALTER TABLE '\".concat(this.name, \"' RENAME TO '\").concat(options, \"'\");\n }\n case 15:\n Utils.log(\"[alter]: \".concat(sql));\n return _context3.abrupt(\"return\", new Promise(function (resolve, reject) {\n plus.sqlite.selectSql({\n name: config.name,\n sql: sql,\n success: function success(res) {\n if (options.constructor == String) {\n // 重命名\n self.name = options;\n }\n // console.log('[alter] res:', res)\n resolve(res);\n },\n fail: function fail(err) {\n __f__(\"error\", '[alter] err:', err, \" at utils/usqlite.js:446\");\n reject(err);\n }\n });\n }));\n case 17:\n case \"end\":\n return _context3.stop();\n }\n }\n }, _callee3, this);\n }));\n function alter(_x5) {\n return _alter.apply(this, arguments);\n }\n return alter;\n }()\n /**\r\n * @description \r\n * @param {Model} model 右 Model\r\n * @param {Object} options \r\n * @returns \r\n */\n }, {\n key: \"join\",\n value: function join(model, options) {\n // let self = this;\n // self.repair();\n if (!model) {\n Utils.error('\"model\" cannot be empty.');\n }\n if (!Utils.isObject(options)) {\n Utils.error('The type of \"options\" is wrong, it should be \"Object\".');\n }\n if (!options.type || !options.predicate) {\n Utils.error('Missing required parameters');\n }\n var leftName = this.name;\n var rightName = model.name;\n var leftValue = options.predicate.left;\n var rightValue = options.predicate.right;\n var cols = ['*'];\n var SQL_MAP = {\n cross: \"SELECT \".concat(cols.join(), \" FROM \").concat(leftName, \" CROSS JOIN \").concat(rightName, \";\"),\n inner: [\"SELECT \".concat(cols.join(), \" FROM \").concat(leftName, \" NATURAL JOIN \").concat(rightName), \"SELECT \".concat(cols.join(), \" FROM \").concat(leftName, \" INNER JOIN \").concat(rightName, \" ON \").concat(leftName, \".\").concat(leftValue, \" = \").concat(rightName, \".\").concat(rightValue)],\n outer: \"SELECT \".concat(cols.join(), \" FROM \").concat(leftName, \" OUTER JOIN \").concat(rightName, \" ON \").concat(leftName, \".\").concat(leftValue, \" = \").concat(rightName, \".\").concat(rightValue)\n };\n var sql = '';\n if (options.type == inner && !options.predicate) {\n sql = SQL_MAP[options.type][0];\n } else if (options.type == inner && !options.predicate) {\n sql = SQL_MAP[options.type][1];\n } else {\n sql = SQL_MAP[options.type];\n }\n Utils.log(\"[join]: \".concat(sql));\n return new Promise(function (resolve, reject) {\n plus.sqlite.selectSql({\n name: config.name,\n sql: sql,\n success: function success(res) {\n __f__(\"log\", '[join] res:', res, \" at utils/usqlite.js:502\");\n resolve(res);\n },\n fail: function fail(err) {\n __f__(\"error\", '[join] err:', err, \" at utils/usqlite.js:506\");\n reject(err);\n }\n });\n });\n }\n\n /**\r\n * @description 执行sql语句\r\n * @param {String} sql : sql语句\r\n */\n }, {\n key: \"sql\",\n value: function sql(_sql) {\n if (!Utils.isString(_sql)) {\n Utils.error('\"The type of \"sql\" is wrong, it should be \"String\".');\n }\n\n // let self = this;\n // self.repair();\n\n Utils.log(\"[sql]: \".concat(_sql));\n return new Promise(function (resolve, reject) {\n plus.sqlite.selectSql({\n name: config.name,\n sql: _sql,\n success: function success(res) {\n __f__(\"log\", '[sql] res:', res, \" at utils/usqlite.js:532\");\n resolve(res);\n },\n fail: function fail(err) {\n __f__(\"error\", '[sql] err:', err, \" at utils/usqlite.js:536\");\n reject(err);\n }\n });\n });\n }\n\n /**\r\n * @description 判断表是否存在 \r\n */\n }, {\n key: \"insertMapData\",\n value: function insertMapData(arrayBuffer) {\n __f__(\"log\", 'arrayBuffer', arrayBuffer, \" at utils/usqlite.js:547\");\n var zipFileData = this.byteArrayToHexString(arrayBuffer);\n __f__(\"log\", 'zipFileData', zipFileData, \" at utils/usqlite.js:549\");\n var sql = \"INSERT INTO 'mapInfo' (shopId,mapName,zipImageUrl,zipImageMd5,zipFileName,zipFileData) \\n\\t\\tVALUES ('1','\\u8DEF\\u7EBF\\u56FE','http://www.beswell.com/download/\\u9F50\\u6E90\\u5927\\u53A6_\\u5DF2\\u4FEE\\u6539.zip','MTExMQ==','\\u9F50\\u6E90\\u5927\\u53A6_\\u5DF2\\u4FEE\\u6539.tif', x'\".concat(zipFileData, \"')\");\n return new Promise(function (resolve, reject) {\n plus.sqlite.executeSql({\n name: config.name,\n sql: sql,\n success: function success(res) {\n // console.log('[insertMapData] res:', res)\n resolve(res);\n },\n fail: function fail(err) {\n __f__(\"error\", '[insertMapData] err:', err, \" at utils/usqlite.js:563\");\n reject(err);\n }\n });\n });\n }\n }, {\n key: \"byteArrayToHexString\",\n value: function byteArrayToHexString(arrayBuffer) {\n // converts byte arrays to string\n var i, j, inn;\n var hex = [\"0\", \"1\", \"2\", \"3\", \"4\", \"5\", \"6\", \"7\", \"8\", \"9\", \"A\", \"B\", \"C\", \"D\", \"E\", \"F\"];\n var out = \"\";\n for (j = 0; j < arrayBuffer.length; ++j) {\n inn = arrayBuffer[j] & 0xff;\n i = inn >>> 4 & 0x0f;\n out += hex[i];\n i = inn & 0x0f;\n out += hex[i];\n }\n return out;\n }\n\n /**\r\n * @description 判断表是否存在 \r\n */\n }, {\n key: \"isExist\",\n value: function isExist() {\n var sql = \"SELECT count(*) AS isExist FROM sqlite_master WHERE type='table' AND name='\".concat(this.name, \"'\");\n // Utils.log(`[isExist] ${config.name}`);\n // Utils.log(`[isExist] ${sql}`);\n\n return new Promise(function (resolve, reject) {\n plus.sqlite.selectSql({\n name: config.name,\n sql: sql,\n success: function success(res) {\n // console.log('[isExist] res:', res)\n if (res[0].isExist == 1) __f__(\"log\", \"[isExist] \".concat(config.name, \" \\u5DF2\\u5B58\\u5728\"), \" at utils/usqlite.js:600\");else __f__(\"log\", \"[isExist] \".concat(config.name, \" \\u4E0D\\u5B58\\u5728\"), \" at utils/usqlite.js:602\");\n resolve(res);\n },\n fail: function fail(err) {\n __f__(\"error\", '[isExist] err:', err, \" at utils/usqlite.js:606\");\n reject(err);\n }\n });\n });\n }\n\n /**\r\n * @description 删除数据表 **不推荐**\r\n */\n }, {\n key: \"drop\",\n value: function drop() {\n var sql = \"DROP TABLE '\".concat(this.name, \"'\");\n // let self = this;\n // self.repair();\n\n Utils.log(\"[drop]: \".concat(sql));\n return new Promise(function (resolve, reject) {\n plus.sqlite.selectSql({\n name: config.name,\n sql: sql,\n success: function success(res) {\n __f__(\"log\", '[drop] res:', res, \" at utils/usqlite.js:628\");\n resolve(res);\n },\n fail: function fail(err) {\n __f__(\"error\", '[drop] err:', err, \" at utils/usqlite.js:632\");\n reject(err);\n }\n });\n });\n }\n\n /**\r\n * @description 创建数据表 **不推荐**\r\n */\n }, {\n key: \"create\",\n value: function create() {\n // let self = this;\n var sql = Utils.modelSql(this.name, this.options);\n Utils.log(\"[create]: \".concat(sql));\n return new Promise(function (resolve, reject) {\n plus.sqlite.selectSql({\n name: config.name,\n sql: sql,\n success: function success(res) {\n // console.log('[create] res:', res)\n resolve(res);\n },\n fail: function fail(err) {\n __f__(\"error\", '[create] err:', err, \" at utils/usqlite.js:656\");\n reject(err);\n }\n });\n });\n }\n }, {\n key: \"toString\",\n value: function toString() {\n return \"[\".concat(this.name, \" Model]\");\n }\n }, {\n key: \"repair\",\n value: function () {\n var _repair = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee4() {\n var self, res;\n return _regenerator.default.wrap(function _callee4$(_context4) {\n while (1) {\n switch (_context4.prev = _context4.next) {\n case 0:\n self = this;\n _context4.prev = 1;\n _context4.next = 4;\n return self.isExist();\n case 4:\n res = _context4.sent;\n if (res[0].isExist) {\n _context4.next = 8;\n break;\n }\n _context4.next = 8;\n return self.create();\n case 8:\n _context4.next = 13;\n break;\n case 10:\n _context4.prev = 10;\n _context4.t0 = _context4[\"catch\"](1);\n __f__(\"error\", _context4.t0, \" at utils/usqlite.js:676\");\n case 13:\n case \"end\":\n return _context4.stop();\n }\n }\n }, _callee4, this, [[1, 10]]);\n }));\n function repair() {\n return _repair.apply(this, arguments);\n }\n return repair;\n }()\n }]);\n return Model;\n}(); // 单例模式\nvar usqlite = /*#__PURE__*/function () {\n /**\r\n * 构造函数\r\n * @param {Object} options 数据库配置信息 *\r\n * {name: 'demo', path: '_doc/demo.db'}\r\n * - name 数据库名称*\r\n * - path 数据库路径\r\n */\n function usqlite(options) {\n (0, _classCallCheck2.default)(this, usqlite);\n __f__(\"warn\", 'No instantiation', \" at utils/usqlite.js:694\");\n }\n\n /**\r\n * @description 链接数据库\r\n * @param {Object} options 数据库配置信息 *\r\n * {name: 'demo', path: '_doc/demo.db'}\r\n * - name 数据库名称*\r\n * - path 数据库路径\r\n */\n (0, _createClass2.default)(usqlite, null, [{\n key: \"connect\",\n value: function connect(options) {\n config.name = options.name; // 数据库名称*\n config.path = options.path; // 数据库名称*\n\n if (config.isConnect) {\n __f__(\"warn\", '[connect] 数据库已连接,无需重连', \" at utils/usqlite.js:709\");\n return;\n }\n return new Promise(function (resolve, reject) {\n plus.sqlite.openDatabase({\n name: config.name,\n //数据库名称\n path: config.path,\n //数据库地址\n success: function success(res) {\n config.isConnect = true;\n // console.log('[connect] res:', res)\n resolve(res);\n },\n fail: function fail(err) {\n if (e.code == -1402) {\n config.isConnect = true;\n __f__(\"warn\", '[connect] warn:', err, \" at utils/usqlite.js:725\");\n } else {\n config.isConnect = false;\n __f__(\"error\", '[connect] err:', err, \" at utils/usqlite.js:728\");\n }\n reject(err);\n }\n });\n });\n }\n\n /**\r\n * @description 断开数据库\r\n * @param {*} callback \r\n */\n }, {\n key: \"close\",\n value: function close() {\n return new Promise(function (resolve, reject) {\n plus.sqlite.closeDatabase({\n name: config.name,\n //数据库名称\n path: config.path,\n //数据库地址\n success: function success(res) {\n config.isConnect = false;\n // console.log('[close] res:', res)\n resolve(res);\n },\n fail: function fail(err) {\n __f__(\"error\", '[close] err:', err, \" at utils/usqlite.js:751\");\n reject(err);\n }\n });\n });\n }\n\n /**\r\n * @description 创建 Model 对象\r\n * @example\r\n * usqlite.model('demo',\r\n * {\r\n * \t\tid: {\r\n * \t\t\ttype: Number\r\n * \t\t},\r\n * \t\tcontent: String\r\n * })\r\n * @param {String} name 数据表名称 *\r\n * @param {String} options 参数配置 *\r\n * @returns 返回 Model 对象\r\n */\n }, {\n key: \"model\",\n value: function () {\n var _model = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee5(name, options) {\n var model;\n return _regenerator.default.wrap(function _callee5$(_context5) {\n while (1) {\n switch (_context5.prev = _context5.next) {\n case 0:\n Utils.log(config);\n // return new Model(name, options);\n model = new Model();\n _context5.next = 4;\n return model.init(name, options);\n case 4:\n return _context5.abrupt(\"return\", model);\n case 5:\n case \"end\":\n return _context5.stop();\n }\n }\n }, _callee5);\n }));\n function model(_x6, _x7) {\n return _model.apply(this, arguments);\n }\n return model;\n }()\n }]);\n return usqlite;\n}();\nexports.usqlite = usqlite;\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./node_modules/@dcloudio/vue-cli-plugin-uni/lib/format-log.js */ 34)[\"default\"]))//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInVuaS1hcHA6Ly8vdXRpbHMvdXNxbGl0ZS5qcyJdLCJuYW1lcyI6WyJjb25maWciLCJkZUJ1ZyIsImlzQ29ubmVjdCIsIlV0aWxzIiwibmFtZSIsIm9wdGlvbnMiLCJzcWwiLCJzcWxBcnIiLCJwcmltYXJ5S2V5QXJyIiwibG9nIiwia2V5IiwiT2JqZWN0IiwiaGFzT3duUHJvcGVydHkiLCJjYWxsIiwib3B0aW9uIiwicHVzaCIsInJlc3RyYWluIiwicHJpbWFyeUtleSIsInRvU3RyaW5nIiwibGVuZ3RoIiwiam9pbiIsInJlcGxhY2VBbGwiLCJyZXN0cmFpbkFycmF5IiwiY29uc3RydWN0b3IiLCJ0b1R5cGUiLCJ0eXBlIiwiYXV0b0luY3JlbWVudCIsImlzTnVtYmVyIiwicG9wIiwibm90TnVsbCIsImRlZmF1bHQiLCJ1bmlxdWUiLCJjaGVjayIsIlRISVNfVkFMVUUiLCJqc1R5cGUiLCJzcWxpdGVUeXBlIiwiaXNEYXRlIiwiaXNCbG9iIiwiY29uc29sZSIsImFwcGx5IiwiYXJndW1lbnRzIiwid2FybiIsImVycm9yIiwidmFsdWUiLCJwcm90b3R5cGUiLCJGdW5jdGlvbiIsIk51bWJlciIsImlzTmFOIiwiRGF0ZSIsIk1vZGVsIiwic2VsZiIsInJlcGFpciIsInBhdGgiLCJ1c3FsaXRlIiwiY29ubmVjdCIsImlzU3RyaW5nIiwiaXNBcnJheSIsImlzRnVuY3Rpb24iLCJQcm9taXNlIiwicmVzb2x2ZSIsInJlamVjdCIsInBsdXMiLCJzcWxpdGUiLCJzZWxlY3RTcWwiLCJzdWNjZXNzIiwicmVzIiwiZmFpbCIsImVyciIsImlzT2JqZWN0Iiwid2hlcmUiLCJjb3VudCIsIm51bWJlciIsImRhdGEiLCJVdGlsIiwiaSIsImluc2VydCIsImtleXMiLCJ2YWx1ZXMiLCJleGVjdXRlU3FsIiwiaXRlbXMiLCJhbHRlciIsImNvbHVtbiIsIlN0cmluZyIsIm1vZGVsIiwicHJlZGljYXRlIiwibGVmdE5hbWUiLCJyaWdodE5hbWUiLCJsZWZ0VmFsdWUiLCJsZWZ0IiwicmlnaHRWYWx1ZSIsInJpZ2h0IiwiY29scyIsIlNRTF9NQVAiLCJjcm9zcyIsImlubmVyIiwib3V0ZXIiLCJhcnJheUJ1ZmZlciIsInppcEZpbGVEYXRhIiwiYnl0ZUFycmF5VG9IZXhTdHJpbmciLCJqIiwiaW5uIiwiaGV4Iiwib3V0IiwiaXNFeGlzdCIsIm1vZGVsU3FsIiwiY3JlYXRlIiwib3BlbkRhdGFiYXNlIiwiZSIsImNvZGUiLCJjbG9zZURhdGFiYXNlIiwiaW5pdCJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsSUFBSUEsTUFBTSxHQUFHO0VBQ1pDLEtBQUssRUFBRSxJQUFJO0VBQ1hDLFNBQVMsRUFBRTtBQUNaLENBQUM7QUFDRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBLElBRU1DLEtBQUs7RUFBQTtJQUFBO0VBQUE7RUFBQTtJQUFBO0lBQUEsT0FDVixrQkFBZ0JDLElBQUksRUFBRUMsT0FBTyxFQUFFO01BQzlCLElBQUlDLEdBQUc7TUFDUCxJQUFJQyxNQUFNLEdBQUcsRUFBRTtNQUNmLElBQUlDLGFBQWEsR0FBRyxFQUFFO01BQ3RCTCxLQUFLLENBQUNNLEdBQUcsQ0FBQyxxQkFBcUIsRUFBRUosT0FBTyxDQUFDO01BRXpDLEtBQUssSUFBTUssR0FBRyxJQUFJTCxPQUFPLEVBQUU7UUFDMUIsSUFBSU0sTUFBTSxDQUFDQyxjQUFjLENBQUNDLElBQUksQ0FBQ1IsT0FBTyxFQUFFSyxHQUFHLENBQUMsRUFBRTtVQUM3QyxJQUFNSSxNQUFNLEdBQUdULE9BQU8sQ0FBQ0ssR0FBRyxDQUFDO1VBQzNCSCxNQUFNLENBQUNRLElBQUksQ0FBQ1osS0FBSyxDQUFDYSxRQUFRLENBQUNOLEdBQUcsRUFBRUksTUFBTSxDQUFDLENBQUM7VUFDeEMsSUFBSUEsTUFBTSxDQUFDRyxVQUFVLElBQUksSUFBSSxFQUFFO1lBQzlCVCxhQUFhLENBQUNPLElBQUksQ0FBQ0wsR0FBRyxDQUFD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QUN6QnpHLElBQUksRUFBRUosTUFBTSxDQUFDSSxJQUFJO1VBQUU7VUFDbkJnRCxJQUFJLEVBQUVwRCxNQUFNLENBQUNvRCxJQUFJO1VBQUU7VUFDbkJZLE9BQU8sbUJBQUNDLEdBQUcsRUFBRTtZQUNaakUsTUFBTSxDQUFDRSxTQUFTLEdBQUcsS0FBSztZQUN4QjtZQUNBeUQsT0FBTyxDQUFDTSxHQUFHLENBQUM7VUFDYixDQUFDO1VBQ0RDLElBQUksZ0JBQUNDLEdBQUcsRUFBRTtZQUNULGVBQWMsY0FBYyxFQUFFQSxHQUFHO1lBQ2pDUCxNQUFNLENBQUNPLEdBQUcsQ0FBQztVQUNaO1FBQ0QsQ0FBQyxDQUFDO01BQ0gsQ0FBQyxDQUFDO0lBQ0g7O0lBRUE7QUFDRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtFQWJDO0lBQUE7SUFBQTtNQUFBLHFGQWNBLGtCQUFtQi9ELElBQUksRUFBRUMsT0FBTztRQUFBO1FBQUE7VUFBQTtZQUFBO2NBQUE7Z0JBQy9CRixLQUFLLENBQUNNLEdBQUcsQ0FBQ1QsTUFBTSxDQUFDO2dCQUNqQjtnQkFDSW1GLEtBQUssR0FBRyxJQUFJbEMsS0FBSyxFQUFFO2dCQUFBO2dCQUFBLE9BQ2pCa0MsS0FBSyxDQUFDMkIsSUFBSSxDQUFDMUcsSUFBSSxFQUFFQyxPQUFPLENBQUM7Y0FBQTtnQkFBQSxrQ0FDeEI4RSxLQUFLO2NBQUE7Y0FBQTtnQkFBQTtZQUFBO1VBQUE7UUFBQTtNQUFBLENBQ1o7TUFBQTtRQUFBO01BQUE7TUFBQTtJQUFBO0VBQUE7RUFBQTtBQUFBO0FBQUEsMEIiLCJmaWxlIjoiNjguanMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcclxuICog5a+5IFNRTGl0ZSDnmoQgT1JNIOeahOWwgeijheWkhOeQhlxyXG4gKiBAdGltZSAyMDIzLTA0LTA2XHJcbiAqIEB2ZXJzaW9uIDIuMC4wXHJcbiAqIEBieSB3enhcclxuICovXHJcblxyXG5sZXQgY29uZmlnID0ge1xyXG5cdGRlQnVnOiB0cnVlLFxyXG5cdGlzQ29ubmVjdDogZmFsc2VcclxufVxyXG4vLyBjbGFzcyBSZXNwb25zZSB7XHJcbi8vIFx0Y29uc3RydWN0b3IoY29kZSwgbXNnLCBkYXRhKSB7XHJcbi8vIFx0XHR0aGlzLmNvZGUgPSBjb2RlO1xyXG4vLyBcdFx0dGhpcy5tc2cgPSBtc2c7XHJcbi8vIFx0XHR0aGlzLmRhdGEgPSBkYXRhO1xyXG4vLyBcdH1cclxuLy8gXHR0b1N0cmluZygpIHtcclxuLy8gXHRcdHJldHVybiBKU09OLnN0cmluZ2lmeSh0aGlzKTtcclxuLy8gXHR9XHJcbi8vIH1cclxuXHJcbmNsYXNzIFV0aWxzIHtcclxuXHRzdGF0aWMgbW9kZWxTcWwobmFtZSwgb3B0aW9ucykge1xyXG5cdFx0bGV0IHNxbDtcclxuXHRcdGxldCBzcWxBcnIgPSBbXTtcclxuXHRcdGxldCBwcmltYXJ5S2V5QXJyID0gW107XHJcblx0XHRVdGlscy5sb2coJ1ttb2RlbFNxbF0gb3B0aW9uczonLCBvcHRpb25zKTtcclxuXHRcdFxyXG5cdFx0Zm9yIChjb25zdCBrZXkgaW4gb3B0aW9ucykge1xyXG5cdFx0XHRpZiAoT2JqZWN0Lmhhc093blByb3BlcnR5LmNhbGwob3B0aW9ucywga2V5KSkge1xyXG5cdFx0XHRcdGNvbnN0IG9wdGlvbiA9IG9wdGlvbnNba2V5XTtcclxuXHRcdFx0XHRzcWxBcnIucHVzaChVdGlscy5yZXN0cmFpbihrZXksIG9wdGlvbikpO1xyXG5cdFx0XHRcdGlmIChvcHRpb24ucHJpbWFyeUtleSA9PSB0cnVlKSB7XHJcblx0XHRcdFx0XHRwcmltYXJ5S2V5QXJyLnB1c2goa2V5LnRvU3RyaW5nKCkpO1xyXG5cdFx0XHRcdFx0VXRpbHMubG9nKGBbbW9kZWxTcWxdICR7a2V5fSBpcyBwcmltYXJ5IGtleSR7cHJpbWFyeUtleUFyci5sZW5ndGh9YCk7XHJcblx0XHRcdFx0fVxyXG5cdFx0XHR9XHJcblx0XHR9XHJcblx0XHRcclxuXHRcdFV0aWxzLmxvZyhwcmltYXJ5S2V5QXJyLmxlbmd0aCk7XHJcblx0XHRpZiAocHJpbWFyeUtleUFyci5sZW5ndGg+MSkge1xyXG5cdFx0XHRcclxuXHRcdFx0c3FsID0gYENSRUFURSBUQUJMRSAnJHtuYW1lfScgKCR7c3FsQXJyLmpvaW4oJywgJykucmVwbGFjZUFsbCgnIFBSSU1BUlkgS0VZJywnJyl9LCBQUklNQVJZIEtFWSAoJHtwcmltYXJ5S2V5QXJyLmpvaW4oKX0pKWA7XHJcblx0XHR9XHJcblx0XHRlbHNle1xyXG5cdFx0XHRzcWwgPSBgQ1JFQVRFIFRBQkxFICcke25hbWV9JyAoJHtzcWxBcnIuam9pbignLCAnKX0pYDtcclxuXHRcdH1cclxuXHRcdFV0aWxzLmxvZyhgW21vZGVsU3FsXSAke3NxbH1gKTtcclxuXHRcdHJldHVybiBzcWw7XHJcblx0fVxyXG5cclxuXHRzdGF0aWMgcmVzdHJhaW4oa2V5LCBvcHRpb25zKSB7XHJcblx0XHRsZXQgcmVzdHJhaW5BcnJheSA9IFtdO1xyXG5cdFx0cmVzdHJhaW5BcnJheS5wdXNoKGAnJHtrZXl9J2ApO1xyXG5cclxuXHRcdC8vIOWmguaenOaYryBTdHJpbmcg5oum5oiq5aSE55CGXHJcblx0XHRpZiAob3B0aW9ucy5jb25zdHJ1Y3RvciAhPSBPYmplY3QpIHtcclxuXHRcdFx0cmVzdHJhaW5BcnJheS5wdXNoKFV0aWxzLnRvVHlwZShvcHRpb25zKSk7XHJcblx0XHRcdHJldHVybiByZXN0cmFpbkFycmF5LmpvaW4oJyAnKTtcclxuXHRcdH1cclxuXHJcblx0XHRyZXN0cmFpbkFycmF5LnB1c2goVXRpbHMudG9UeXBlKG9wdGlvbnMudHlwZSkpO1xyXG5cdFx0XHJcblx0XHQvLyDkuLvplK5cclxuXHRcdGlmIChvcHRpb25zLnByaW1hcnlLZXkgPT0gdHJ1ZSkge1xyXG5cdFx0XHRpZihvcHRpb25zLmF1dG9JbmNyZW1lbnQgIT0gdHJ1ZSl7XHJcblx0XHRcdFx0cmVzdHJhaW5BcnJheS5wdXNoKCdQUklNQVJZIEtFWScpO1xyXG5cdFx0XHR9XHJcblx0XHR9XHJcblx0XHRcclxuXHRcdC8vIOiHquWinlxyXG5cdFx0aWYgKFV0aWxzLmlzTnVtYmVyKG9wdGlvbnMudHlwZSkmJm9wdGlvbnMuYXV0b0luY3JlbWVudCA9PSB0cnVlKSB7XHJcblx0XHRcdHJlc3RyYWluQXJyYXkucG9wKCk7XHJcblx0XHRcdHJlc3RyYWluQXJyYXkucHVzaCgnSU5URUdFUicpO1xyXG5cdFx0XHRyZXN0cmFpbkFycmF5LnB1c2goJ1BSSU1BUlkgS0VZJyk7XHJcblx0XHRcdHJlc3RyYWluQXJyYXkucHVzaCgnQVVUT0lOQ1JFTUVOVCcpO1xyXG5cdFx0fVxyXG5cdFx0XHJcblx0XHQvLyDpnZ7nqbpcclxuXHRcdGlmIChvcHRpb25zLm5vdE51bGwgPT0gdHJ1ZSkge1xyXG5cdFx0XHRyZXN0cmFpbkFycmF5LnB1c2goJ05PVCBOVUxMJyk7XHJcblx0XHR9XHJcblxyXG5cdFx0Ly8g6buY6K6k5YC8XHJcblx0XHRpZiAob3B0aW9ucy5kZWZhdWx0KSB7XHJcblx0XHRcdHJlc3RyYWluQXJyYXkucHVzaChgREVGQVVMVCAke29wdGlvbnMuZGVmYXVsdH1gKTtcclxuXHRcdH1cclxuXHJcblx0XHQvLyDmmK/lkKbmmK/kuI3lkIznmoTlgLxcclxuXHRcdGlmIChvcHRpb25zLnVuaXF1ZSA9PSB0cnVlKSB7XHJcblx0XHRcdHJlc3RyYWluQXJyYXkucHVzaCgnVU5JUVVFJyk7XHJcblx0XHR9XHJcblxyXG5cdFx0Ly8g5qOA5p+lXHJcblx0XHRpZiAob3B0aW9ucy5jaGVjaykge1xyXG5cdFx0XHRyZXN0cmFpbkFycmF5LnB1c2goYENIRUNLKCR7VEhJU19WQUxVRS5jaGVja30pYCk7XHJcblx0XHR9XHJcblxyXG5cdFx0cmV0dXJuIHJlc3RyYWluQXJyYXkuam9pbignICcpO1xyXG5cdH1cclxuXHJcblx0c3RhdGljIHRvVHlwZShqc1R5cGUpIHtcclxuXHRcdGxldCBzcWxpdGVUeXBlID0gJyc7XHJcblx0XHRpZiAoVXRpbHMuaXNOdW1iZXIoanNUeXBlKSkge1xyXG5cdFx0XHRzcWxpdGVUeXBlID0gJ251bWVyaWMnO1xyXG5cdFx0fSBlbHNlIGlmIChVdGlscy5pc0RhdGUoanNUeXBlKSkge1xyXG5cdFx0XHRzcWxpdGVUeXBlID0gJ3RpbWVzdGFtcCc7XHJcblx0XHR9IGVsc2UgaWYgKFV0aWxzLmlzQmxvYihqc1R5cGUpKSB7XHJcblx0XHRcdHNxbGl0ZVR5cGUgPSAnQkxPQic7XHJcblx0XHR9IGVsc2Uge1xyXG5cdFx0XHRzcWxpdGVUeXBlID0gJ3ZhcmNoYXInO1xyXG5cdFx0fVxyXG5cdFx0cmV0dXJuIHNxbGl0ZVR5cGU7XHJcblx0fVxyXG5cdFxyXG5cdHN0YXRpYyBsb2coKSB7XHJcblx0XHRpZiAoY29uZmlnLmRlQnVnKSB7XHJcblx0XHRcdGNvbnNvbGUubG9nLmFwcGx5KG51bGwsIGFyZ3VtZW50cyk7XHJcblx0XHR9XHJcblx0fVxyXG5cdFxyXG5cdHN0YXRpYyB3YXJuKCkge1xyXG5cdFx0aWYgKGNvbmZpZy5kZUJ1Zykge1xyXG5cdFx0XHRjb25zb2xlLndhcm4uYXBwbHkobnVsbCwgYXJndW1lbnRzKTtcclxuXHRcdH1cclxuXHR9XHJcblx0XHJcblx0c3RhdGljIGVycm9yKCkge1xyXG5cdFx0Y29uc29sZS5lcnJvci5hcHBseShudWxsLCBhcmd1bWVudHMpO1xyXG5cdH1cclxuXHRcclxuXHRzdGF0aWMgaXNCbG9iKHZhbHVlKXsgcmV0dXJuIHZhbHVlID09PSAnQkxPQicgfVxyXG5cdHN0YXRpYyBpc0FycmF5KHZhbHVlKXsgcmV0dXJuIE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbCh2YWx1ZSkgPT09ICdbb2JqZWN0IEFycmF5XSd9XHJcblx0c3RhdGljIGlzT2JqZWN0KHZhbHVlKXsgcmV0dXJuIE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbCh2YWx1ZSkgPT09ICdbb2JqZWN0IE9iamVjdF0nfVxyXG5cdHN0YXRpYyBpc1N0cmluZyh2YWx1ZSl7IHJldHVybiBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwodmFsdWUpID09PSAnW29iamVjdCBTdHJpbmddJ31cclxuXHRzdGF0aWMgaXNGdW5jdGlvbih2YWx1ZSl7IHJldHVybiAodmFsdWUgPT09IEZ1bmN0aW9uIHx8IE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbCh2YWx1ZSkgPT09ICdbb2JqZWN0IEZ1bmN0aW9uXScpfVxyXG5cdHN0YXRpYyBpc051bWJlcih2YWx1ZSl7IHJldHVybiAodmFsdWUgPT09IE51bWJlciB8fCBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwodmFsdWUpID09PSAnW29iamVjdCBOdW1iZXJdJyl9XHJcblx0c3RhdGljIGlzTmFOKHZhbHVlKXsgcmV0dXJuIChPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwodmFsdWUpID09PSAnW29iamVjdCBOdW1iZXJdJyAmJiBpc05hTih2YWx1ZSkpfVxyXG5cdHN0YXRpYyBpc0Jvb2xlYW4odmFsdWUpeyByZXR1cm4gT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKHZhbHVlKSA9PT0gJ1tvYmplY3QgQm9vbGVhbl0nfVxyXG5cdHN0YXRpYyBpc1VuZGVmaW5lZCh2YWx1ZSl7IHJldHVybiBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwodmFsdWUpID09PSAnW29iamVjdCBVbmRlZmluZWRdJ31cclxuXHRzdGF0aWMgaXNNb2RlbCh2YWx1ZSl7IHJldHVybiBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwodmFsdWUpID09PSAnW29iamVjdCBNb2RlbF0nfVxyXG5cdHN0YXRpYyBpc0RhdGUodmFsdWUpeyByZXR1cm4gKHZhbHVlID09PSBEYXRlfHxPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwodmFsdWUpID09PSAnW29iamVjdCBEYXRlXScpfVxyXG59XHJcblxyXG5cclxuLyoqXHJcbiAqIE1vZGVsIOWvueixoeWGhemDqHB1YmxpY+aWueazleWFqOmDqCByZXR1cm4gdGhpcztcclxuICovXHJcbmNsYXNzIE1vZGVsIHtcclxuXHQvKipcclxuXHQgKiBAY29uc3RydWN0b3JcclxuXHQgKiBAcGFyYW0ge1N0cmluZ30gbmFtZSDmlbDmja7lupPooajlkI1cclxuXHQgKiBAcGFyYW0ge30gb3B0aW9ucyDmlbDmja7ooajliJflr7nosaFcclxuXHQgKiBAcmV0dXJucyBcclxuXHQgKi9cclxuXHRjb25zdHJ1Y3RvcigpIHtcclxuXHQvLyBjb25zdHJ1Y3RvcihuYW1lLCBvcHRpb25zKSB7XHJcblx0XHQvLyB0aGlzLmluaXQobmFtZSwgb3B0aW9ucylcclxuXHRcdFxyXG5cdFx0Ly8gbGV0IHNlbGYgPSB0aGlzO1xyXG5cdFx0Ly8gc2VsZi5uYW1lID0gbmFtZTtcclxuXHRcdC8vIHNlbGYub3B0aW9ucyA9IG9wdGlvbnM7XHJcblxyXG5cdFx0Ly8gaWYgKGNvbmZpZy5pc0Nvbm5lY3QpIHtcclxuXHRcdC8vIFx0c2VsZi5yZXBhaXIoKTtcclxuXHRcdC8vIH0gZWxzZSB7XHJcblx0XHQvLyBcdGlmKCFjb25maWcubmFtZXx8IWNvbmZpZy5wYXRoKXtcclxuXHRcdC8vIFx0XHRjb25zb2xlLmVycm9yKCdcImNvbmZpZy5uYW1lXCIgb3IgXCJjb25maWcucGF0aFwiIGlzIGVtcHR5Jyk7XHJcblx0XHQvLyBcdH1cclxuXHRcdC8vIFx0dXNxbGl0ZS5jb25uZWN0KGNvbmZpZyk7XHJcblx0XHQvLyB9XHJcblx0fVxyXG5cdFxyXG5cdC8qKlxyXG5cdCAqIEBwYXJhbSB7U3RyaW5nfSBuYW1lIOaVsOaNruW6k+ihqOWQjVxyXG5cdCAqIEBwYXJhbSB7fSBvcHRpb25zIOaVsOaNruihqOWIl+WvueixoVxyXG5cdCAqIEByZXR1cm5zIFxyXG5cdCAqL1xyXG5cdGFzeW5jIGluaXQobmFtZSwgb3B0aW9ucykge1xyXG5cdFx0bGV0IHNlbGYgPSB0aGlzO1xyXG5cdFx0c2VsZi5uYW1lID0gbmFtZTtcclxuXHRcdHNlbGYub3B0aW9ucyA9IG9wdGlvbnM7XHJcblx0XHJcblx0XHRpZiAoY29uZmlnLmlzQ29ubmVjdCkge1xyXG5cdFx0XHRhd2FpdCBzZWxmLnJlcGFpcigpO1xyXG5cdFx0fSBlbHNlIHtcclxuXHRcdFx0aWYoIWNvbmZpZy5uYW1lfHwhY29uZmlnLnBhdGgpe1xyXG5cdFx0XHRcdGNvbnNvbGUuZXJyb3IoJ1wiY29uZmlnLm5hbWVcIiBvciBcImNvbmZpZy5wYXRoXCIgaXMgZW1wdHknKTtcclxuXHRcdFx0fVxyXG5cdFx0XHRhd2FpdCB1c3FsaXRlLmNvbm5lY3QoY29uZmlnKTtcclxuXHRcdH1cclxuXHR9XHJcblxyXG5cdC8qKlxyXG5cdCAqIEBkZXNjcmlwdGlvbiDmn6Xor6LooajmlbDmja5cclxuXHQgKiBAcGFyYW0ge1N0cmluZ3xBcnJheX0gb3B0aW9ucyBcclxuXHQgKiAtIFN0cmluZyAgV0hFUkUg5YaF5a65XHJcblx0ICogLSBBcnJheSDpnIDopoHmn6Xor6LnmoTliJdcclxuXHQgKiBAcmV0dXJucyBcclxuXHQgKi9cclxuXHRmaW5kKG9wdGlvbnM9JycpIHtcclxuXHRcdGxldCBzcWwgPSAnJztcclxuXHRcdC8vIGxldCBzZWxmID0gdGhpcztcclxuXHRcdC8vIHNlbGYucmVwYWlyKCk7XHJcblx0XHRcclxuXHRcdGlmKCEoVXRpbHMuaXNTdHJpbmcob3B0aW9ucyl8fFV0aWxzLmlzQXJyYXkob3B0aW9ucyl8fFV0aWxzLmlzRnVuY3Rpb24ob3B0aW9ucykpKSB7XHJcblx0XHRcdFV0aWxzLmVycm9yKCdUaGUgZmlyc3QgcGFyYW1ldGVyIG9mIE1vZGVsLmZpbmQgc2hvdWxkIGJlIFwiQXJyYXlcIiwgXCJTdHJpbmdcIiBvciBcIkZ1bmN0aW9uXCIgKHdoZW4gdGhlcmUgaXMgb25seSBvbmUgcGFyYW1ldGVyKS4nKVxyXG5cdFx0fVxyXG5cdFx0aWYgKG9wdGlvbnMgPT0gJycpIHtcclxuXHRcdFx0c3FsID0gYFNFTEVDVCAqIEZST00gJyR7dGhpcy5uYW1lfSdgOyAvLyDmn6Xmib7lhajpg6hcclxuXHRcdH0gZWxzZSBpZiAoVXRpbHMuaXNBcnJheShvcHRpb25zKSkge1xyXG5cdFx0XHRzcWwgPSBgU0VMRUNUICR7b3B0aW9ucy5qb2luKCl9IEZST00gJyR7dGhpcy5uYW1lfSdgOyAvLyDmn6Xmib7liLblrprliJdcclxuXHRcdH0gZWxzZSBpZiAoVXRpbHMuaXNTdHJpbmcob3B0aW9ucykpIHtcclxuXHRcdFx0c3FsID0gYFNFTEVDVCAqIEZST00gJyR7dGhpcy5uYW1lfScgV0hFUkUgJHtvcHRpb25zfWA7IC8vIOWItuWumuadoeS7tuafpeivolxyXG5cdFx0fVxyXG5cclxuXHRcdFV0aWxzLmxvZyhgW2ZpbmRdOiAke3NxbH1gKTtcclxuXHJcblx0XHRyZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xyXG5cdFx0XHRwbHVzLnNxbGl0ZS5zZWxlY3RTcWwoe1xyXG5cdFx0XHRcdG5hbWU6IGNvbmZpZy5uYW1lLFxyXG5cdFx0XHRcdHNxbDogc3FsLFxyXG5cdFx0XHRcdHN1Y2Nlc3MocmVzKSB7XHJcblx0XHRcdFx0XHRjb25zb2xlLmxvZygnW2ZpbmRdIHJlczonLCByZXMpXHJcblx0XHRcdFx0XHRyZXNvbHZlKHJlcylcclxuXHRcdFx0XHR9LFxyXG5cdFx0XHRcdGZhaWwoZXJyKSB7XHJcblx0XHRcdFx0XHRjb25zb2xlLmVycm9yKCdbZmluZF0gZXJyOicsIGVycilcclxuXHRcdFx0XHRcdHJlamVjdChlcnIpXHJcblx0XHRcdFx0fVxyXG5cdFx0XHR9KTtcclxuXHRcdH0pO1xyXG5cdH1cclxuXHJcblx0LyoqXHJcblx0ICogQGRlc2NyaXB0aW9uIOWIhumhteafpeivolxyXG5cdCAqIEBwYXJhbSB7T2JqZWN0fSBvcHRpb25zIDogICB7IHdoZXJlOuafpeivouadoeS7tiwgbnVtYmVyOiDlvZPliY3pobXmlbAgLCBjb3VudCA6IOavj+mhteaVsOmHjyB9XHJcblx0ICogQHJldHVyblxyXG5cdCAqL1xyXG5cdGxpbWl0KG9wdGlvbnMpIHtcclxuXHRcdGxldCBzcWwgPSAnJztcclxuXHRcdC8vIGxldCBzZWxmID0gdGhpcztcclxuXHRcdC8vIHNlbGYucmVwYWlyKCk7XHJcblx0XHRpZighVXRpbHMuaXNPYmplY3Qob3B0aW9ucykpe1xyXG5cdFx0XHRVdGlscy5lcnJvcignVGhlIGZpcnN0IHBhcmFtZXRlciBvZiBNb2RlbC5saW1pdCBzaG91bGQgYmUgXCJPYmplY3RcIi4nKVxyXG5cdFx0fVxyXG5cdFx0XHJcblx0XHRpZiAoIW9wdGlvbnMud2hlcmUpIHtcclxuXHRcdFx0Ly8g5LiN5a2Y5ZyoIHdoZXJlXHJcblx0XHRcdHNxbCA9XHJcblx0XHRcdFx0YFNFTEVDVCAqIEZST00gJyR7dGhpcy5uYW1lfScgTElNSVQgJHtvcHRpb25zLmNvdW50fSBPRkZTRVQgJHsob3B0aW9ucy5udW1iZXIgLSAxKSAqIG9wdGlvbnMuY291bnR9YFxyXG5cdFx0fSBlbHNlIHtcclxuXHRcdFx0Ly8g5a2Y5ZyoIHdoZXJlXHJcblx0XHRcdHNxbCA9XHJcblx0XHRcdFx0YFNFTEVDVCAqIEZST00gJyR7dGhpcy5uYW1lfScgV0hFUkUgJHtvcHRpb25zLndoZXJlfSBMSU1JVCAke29wdGlvbnMuY291bnR9IE9GRlNFVCAkeyhvcHRpb25zLm51bWJlciAtIDEpICogb3B0aW9ucy5jb3VudH1gO1xyXG5cdFx0fTtcclxuXHJcblx0XHRVdGlscy5sb2coYFtsaW1pdF06ICR7c3FsfWApO1xyXG5cclxuXHRcdHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XHJcblx0XHRcdHBsdXMuc3FsaXRlLnNlbGVjdFNxbCh7XHJcblx0XHRcdFx0bmFtZTogY29uZmlnLm5hbWUsXHJcblx0XHRcdFx0c3FsOiBzcWwsXHJcblx0XHRcdFx0c3VjY2VzcyhyZXMpIHtcclxuXHRcdFx0XHRcdGNvbnNvbGUubG9nKCdbbGltaXRdIHJlczonLCByZXMpXHJcblx0XHRcdFx0XHRyZXNvbHZlKHJlcylcclxuXHRcdFx0XHR9LFxyXG5cdFx0XHRcdGZhaWwoZXJyKSB7XHJcblx0XHRcdFx0XHRjb25zb2xlLmVycm9yKCdbbGltaXRdIGVycjonLCBlcnIpXHJcblx0XHRcdFx0XHRyZWplY3QoZXJyKVxyXG5cdFx0XHRcdH1cclxuXHRcdFx0fSk7XHJcblx0XHR9KTtcclxuXHR9XHJcblxyXG5cdC8qKlxyXG5cdCAqIEBkZXNjcmlwdGlvbiDmj5LlhaXmlbDmja5cclxuXHQgKiBAcGFyYW0ge09iamVjdHxBcnJheX0gZGF0YTog6ZyA6KaB5o+S5YWl55qE5Y2V5Liq5oiW6ICF5aSa5Liq5pWw5o2uXHJcblx0ICovXHJcblx0YXN5bmMgaW5zZXJ0KGRhdGEpIHtcclxuXHRcdC8vIGxldCBzZWxmID0gdGhpcztcclxuXHRcdC8vIHNlbGYucmVwYWlyKCk7XHJcblxyXG5cdFx0aWYoIShVdGlscy5pc09iamVjdChkYXRhKXx8VXRpbC5pc0FycmF5KGRhdGEpKSl7XHJcblx0XHRcdFV0aWxzLmVycm9yKCdUaGUgZmlyc3QgcGFyYW1ldGVyIG9mIE1vZGVsLmluc2VydCBzaG91bGQgYmUgXCJPYmplY3RcIiBvciBcIkFycmF5XCIuJylcclxuXHRcdH1cclxuXHRcdFxyXG5cdFx0aWYgKGNvbmZpZy5pc0Nvbm5lY3QpIHtcclxuXHRcdFx0aWYgKFV0aWxzLmlzQXJyYXkoZGF0YSkpIHtcclxuXHRcdFx0XHRmb3IgKHZhciBpID0gMDsgaSA8IGRhdGEubGVuZ3RoOyBpKyspIHtcclxuXHRcdFx0XHRcdGF3YWl0IHRoaXMuaW5zZXJ0KGRhdGFbaV0pO1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0XHRyZXR1cm5cclxuXHRcdFx0fSBlbHNlIGlmIChVdGlscy5pc09iamVjdChkYXRhKSkge1xyXG5cdFx0XHRcdGxldCBrZXlzID0gW107XHJcblx0XHRcdFx0bGV0IHZhbHVlcyA9IFtdO1xyXG5cdFx0XHRcdC8vIGxldCBpbmRleCA9IGFyZ3VtZW50c1szXT8/bnVsbDtcclxuXHRcdFx0XHRmb3IgKHZhciBrZXkgaW4gZGF0YSkge1xyXG5cdFx0XHRcdFx0a2V5cy5wdXNoKGtleSk7XHJcblx0XHRcdFx0XHR2YWx1ZXMucHVzaChgJyR7ZGF0YVtrZXldfSdgKTtcclxuXHRcdFx0XHR9XHJcblxyXG5cdFx0XHRcdGxldCBzcWwgPSBgSU5TRVJUIElOVE8gJyR7dGhpcy5uYW1lfScgKCR7a2V5cy5qb2luKCl9KSBWQUxVRVMgKCR7dmFsdWVzLmpvaW4oKX0pYDtcclxuXHJcblx0XHRcdFx0VXRpbHMubG9nKGBbaW5zZXJ0XTogJHtzcWx9YCk7XHJcblx0XHRcdFx0XHJcblx0XHRcdFx0cmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcclxuXHRcdFx0XHRcdHBsdXMuc3FsaXRlLmV4ZWN1dGVTcWwoe1xyXG5cdFx0XHRcdFx0XHRuYW1lOiBjb25maWcubmFtZSxcclxuXHRcdFx0XHRcdFx0c3FsOiBzcWwsXHJcblx0XHRcdFx0XHRcdHN1Y2Nlc3MocmVzKSB7XHJcblx0XHRcdFx0XHRcdFx0Ly8gY29uc29sZS5sb2coJ1tpbnNlcnRdIHJlczonLCByZXMpXHJcblx0XHRcdFx0XHRcdFx0cmVzb2x2ZShyZXMpXHJcblx0XHRcdFx0XHRcdH0sXHJcblx0XHRcdFx0XHRcdGZhaWwoZXJyKSB7XHJcblx0XHRcdFx0XHRcdFx0Y29uc29sZS5lcnJvcignW2luc2VydF0gZXJyOicsIGVycilcclxuXHRcdFx0XHRcdFx0XHRyZWplY3QoZXJyKVxyXG5cdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHR9KVxyXG5cdFx0XHRcdH0pO1x0XHRcdFx0XHRcclxuXHRcdFx0fVxyXG5cdFx0fVxyXG5cdH1cclxuXHJcblx0LyoqXHJcblx0ICogQGRlc2NyaXB0aW9uIOabtOaWsOaVsOaNrlxyXG5cdCAqIEBwYXJhbSB7T2JqZWN0fSBkYXRh77yaIOS/ruaUueWQjueahOaVsOaNriBcclxuXHQgKiBAcGFyYW0ge1N0cmluZ30gb3B0aW9uc++8muWPr+mAieWPguaVsCDmm7TmlrDmnaHku7ZcclxuXHQgKi9cclxuXHR1cGRhdGUoZGF0YSwgb3B0aW9ucz0nJykge1xyXG5cdFx0Ly8gbGV0IHNlbGYgPSB0aGlzO1xyXG5cdFx0Ly8gc2VsZi5yZXBhaXIoKTtcclxuXHRcdGxldCBzcWwgPSAnJztcclxuXHRcdGxldCBpdGVtcyA9IFtdO1xyXG5cdFx0XHJcblx0XHRpZighKFV0aWxzLmlzT2JqZWN0KGRhdGEpKSl7XHJcblx0XHRcdFV0aWxzLmVycm9yKCdUaGUgZmlyc3QgcGFyYW1ldGVyIG9mIE1vZGVsLnVwZGF0ZSBzaG91bGQgYmUgXCJPYmpyY3RcIi4nKVxyXG5cdFx0fVxyXG5cdFx0aWYoIShVdGlscy5pc09iamVjdChvcHRpb25zKXx8VXRpbHMuaXNTdHJpbmcob3B0aW9ucykpKXtcclxuXHRcdFx0VXRpbHMuZXJyb3IoJ1RoZSBzZWNvbmQgcGFyYW1ldGVyIG9mIE1vZGVsLnVwZGF0ZSBzaG91bGQgYmUgXCJPYmplY3RcIiBvciBcIlN0cmluZ1wiLicpXHJcblx0XHR9XHJcblx0XHRcclxuXHRcdGZvciAodmFyIGtleSBpbiBkYXRhKSB7XHJcblx0XHRcdGl0ZW1zLnB1c2goYCR7a2V5fT0nJHtkYXRhW2tleV19J2ApO1xyXG5cdFx0fTtcclxuXHRcdFxyXG5cdFx0aWYgKG9wdGlvbnMgPT0gJycpIHtcclxuXHRcdFx0c3FsID0gYFVQREFURSAnJHt0aGlzLm5hbWV9JyBTRVQgJHtpdGVtcy5qb2luKCl9YDtcclxuXHRcdH0gZWxzZSB7XHJcblx0XHRcdHNxbCA9IGBVUERBVEUgJHt0aGlzLm5hbWV9IFNFVCAke2l0ZW1zLmpvaW4oKX0gV0hFUkUgJHtvcHRpb25zfWA7XHJcblx0XHR9O1xyXG5cdFx0VXRpbHMubG9nKGBbdXBkYXRlXTogJHtzcWx9YCk7XHJcblx0XHRcclxuXHRcdHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XHJcblx0XHRcdHBsdXMuc3FsaXRlLmV4ZWN1dGVTcWwoe1xyXG5cdFx0XHRcdG5hbWU6IGNvbmZpZy5uYW1lLFxyXG5cdFx0XHRcdHNxbDogc3FsLFxyXG5cdFx0XHRcdHN1Y2Nlc3MocmVzKSB7XHJcblx0XHRcdFx0XHQvLyBjb25zb2xlLmxvZygnW3VwZGF0ZV0gcmVzOicsIHJlcylcclxuXHRcdFx0XHRcdHJlc29sdmUocmVzKVxyXG5cdFx0XHRcdH0sXHJcblx0XHRcdFx0ZmFpbChlcnIpIHtcclxuXHRcdFx0XHRcdGNvbnNvbGUuZXJyb3IoJ1t1cGRhdGVdIGVycjonLCBlcnIpXHJcblx0XHRcdFx0XHRyZWplY3QoZXJyKVxyXG5cdFx0XHRcdH1cclxuXHRcdFx0fSk7XHJcblx0XHR9KTtcclxuXHR9XHJcblxyXG5cdC8qKlxyXG5cdCAqIEBkZXNjcmlwdGlvbiDliKDpmaTmlbDmja5cclxuXHQgKiBAcGFyYW0ge1N0cmluZ30gb3B0aW9ucyDvvJrlj6/pgInlj4LmlbAg5Yig6Zmk5p2h5Lu2XHJcblx0ICovXHJcblx0ZGVsZXRlKG9wdGlvbnM9JycpIHtcclxuXHRcdC8vIGxldCBzZWxmID0gdGhpcztcclxuXHRcdC8vIHNlbGYucmVwYWlyKCk7XHJcblx0XHR2YXIgc3FsID0gJyc7XHRcdFxyXG5cdFx0XHJcblx0XHRpZighKFV0aWxzLmlzU3RyaW5nKG9wdGlvbnMpfHxVdGlscy5pc0Z1bmN0aW9uKG9wdGlvbnMpKSl7XHJcblx0XHRcdFV0aWxzLmVycm9yKCdUaGUgZmlyc3QgcGFyYW1ldGVyIG9mIE1vZGVsLmRlbGV0ZSBzaG91bGQgYmUgXCJPYmplY3RcIiBvciBcIkZ1bmN0aW9uXCIuJylcclxuXHRcdH1cclxuXHJcblx0XHRpZiAob3B0aW9ucyA9PSAnJykge1xyXG5cdFx0XHRzcWwgPSBgREVMRVRFIEZST00gJyR7dGhpcy5uYW1lfSdgO1xyXG5cdFx0fSBlbHNlIHtcclxuXHRcdFx0c3FsID0gYERFTEVURSBGUk9NICcke3RoaXMubmFtZX0nIFdIRVJFICR7b3B0aW9uc31gO1xyXG5cdFx0fTtcclxuXHRcdFV0aWxzLmxvZyhgW2RlbGV0ZV06ICR7c3FsfWApO1xyXG5cdFx0XHJcblx0XHRyZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xyXG5cdFx0XHRwbHVzLnNxbGl0ZS5leGVjdXRlU3FsKHtcclxuXHRcdFx0XHRuYW1lOiBjb25maWcubmFtZSxcclxuXHRcdFx0XHRzcWw6IHNxbCxcclxuXHRcdFx0XHRzdWNjZXNzKHJlcykge1xyXG5cdFx0XHRcdFx0Y29uc29sZS5sb2coJ1tkZWxldGVdIHJlczonLCByZXMpXHJcblx0XHRcdFx0XHRyZXNvbHZlKHJlcylcclxuXHRcdFx0XHR9LFxyXG5cdFx0XHRcdGZhaWwoZXJyKSB7XHJcblx0XHRcdFx0XHRjb25zb2xlLmVycm9yKCdbZGVsZXRlXSBlcnI6JywgZXJyKVxyXG5cdFx0XHRcdFx0cmVqZWN0KGVycilcclxuXHRcdFx0XHR9XHJcblx0XHRcdH0pO1xyXG5cdFx0fSk7XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiBAZGVzY3JpcHRpb24gIOmHjeWRveWQjeaIluiAheaWsOWinuWIl1xyXG5cdCAqIEBwYXJhbSB7T2JqZWN0fEFycmF5fFN0cmluZ30gb3B0aW9ucyDlj4LmlbAg5pWw57uE5Li65paw5aKe5aSa5YiXIOWvueixoeS4uuaWsOWinuWNleWIl3thYX0g5a2X56ym5Liy6YeN5ZG95ZCNXHJcblx0ICogQHJldHVybjogXHJcblx0ICovXHJcblx0YXN5bmMgYWx0ZXIob3B0aW9ucykge1xyXG5cdFx0bGV0IHNlbGYgPSB0aGlzO1xyXG5cdFx0Ly8gc2VsZi5yZXBhaXIoKTtcclxuXHRcdGxldCBzcWwgPSAnJztcclxuXHRcdFxyXG5cdFx0aWYoIShVdGlscy5pc09iamVjdChvcHRpb25zKXx8VXRpbHMuaXNBcnJheShvcHRpb25zKXx8VXRpbHMuaXNTdHJpbmcob3B0aW9ucykpKXtcclxuXHRcdFx0VXRpbHMuZXJyb3IoJ1RoZSBmaXJzdCBwYXJhbWV0ZXIgb2YgTW9kZWwuYWx0ZXIgc2hvdWxkIGJlIFwiT2JqZWN0XCIsIFwiQXJyYXlcIiBvciBcIlN0cmluZ1wiLicpXHJcblx0XHR9XHJcblx0XHRcclxuXHRcdGlmIChVdGlscy5pc0FycmF5KG9wdGlvbnMpKSB7IC8vIOaWsOWinuWkmuWIl1xyXG5cdFx0XHRmb3IgKGxldCBpID0gMDsgaSA8IG9wdGlvbnMubGVuZ3RoOyBpKyspIHtcclxuXHRcdFx0XHRhd2FpdCB0aGlzLmFsdGVyKG9wdGlvbnNbaV0pO1xyXG5cdFx0XHR9XHJcblx0XHRcdHJldHVyblxyXG5cdFx0fSBlbHNlIGlmIChVdGlscy5pc09iamVjdChvcHRpb25zKSkgeyAvLyDmlrDlop7ljZXliJdcclxuXHRcdFx0bGV0IGNvbHVtbiA9IFV0aWxzLnJlc3RyYWluKG9wdGlvbnMubmFtZSwgb3B0aW9ucy5vcHRpb24pO1xyXG5cdFx0XHRzcWwgPSBgQUxURVIgVEFCTEUgJyR7dGhpcy5uYW1lfScgQUREIENPTFVNTiAke2NvbHVtbn1gXHJcblx0XHR9IGVsc2UgaWYgKG9wdGlvbnMuY29uc3RydWN0b3IgPT0gU3RyaW5nKSB7IC8vIOmHjeWRveWQjVxyXG5cdFx0XHRzcWwgPSBgQUxURVIgVEFCTEUgJyR7dGhpcy5uYW1lfScgUkVOQU1FIFRPICcke29wdGlvbnN9J2BcclxuXHRcdH1cclxuXHRcdFV0aWxzLmxvZyhgW2FsdGVyXTogJHtzcWx9YCk7XHJcblx0XHRcclxuXHRcdHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XHJcblx0XHRcdHBsdXMuc3FsaXRlLnNlbGVjdFNxbCh7XHJcblx0XHRcdFx0bmFtZTogY29uZmlnLm5hbWUsXHJcblx0XHRcdFx0c3FsOiBzcWwsXHJcblx0XHRcdFx0c3VjY2VzcyhyZXMpIHtcclxuXHRcdFx0XHRcdGlmIChvcHRpb25zLmNvbnN0cnVjdG9yID09IFN0cmluZykgeyAvLyDph43lkb3lkI1cclxuXHRcdFx0XHRcdFx0c2VsZi5uYW1lID0gb3B0aW9ucztcclxuXHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdC8vIGNvbnNvbGUubG9nKCdbYWx0ZXJdIHJlczonLCByZXMpXHJcblx0XHRcdFx0XHRyZXNvbHZlKHJlcylcclxuXHRcdFx0XHR9LFxyXG5cdFx0XHRcdGZhaWwoZXJyKSB7XHJcblx0XHRcdFx0XHRjb25zb2xlLmVycm9yKCdbYWx0ZXJdIGVycjonLCBlcnIpXHJcblx0XHRcdFx0XHRyZWplY3QoZXJyKVxyXG5cdFx0XHRcdH1cclxuXHRcdFx0fSk7XHJcblx0XHR9KTtcclxuXHR9XHJcblx0XHJcblx0LyoqXHJcblx0ICogQGRlc2NyaXB0aW9uIFxyXG5cdCAqIEBwYXJhbSB7TW9kZWx9IG1vZGVsIOWPsyBNb2RlbFxyXG5cdCAqIEBwYXJhbSB7T2JqZWN0fSBvcHRpb25zIFxyXG5cdCAqIEByZXR1cm5zIFxyXG5cdCAqL1xyXG5cdGpvaW4obW9kZWwsIG9wdGlvbnMpIHtcclxuXHRcdC8vIGxldCBzZWxmID0gdGhpcztcclxuXHRcdC8vIHNlbGYucmVwYWlyKCk7XHJcblx0XHRpZiAoIW1vZGVsKSB7XHJcblx0XHRcdFV0aWxzLmVycm9yKCdcIm1vZGVsXCIgY2Fubm90IGJlIGVtcHR5LicpO1xyXG5cdFx0fVxyXG5cdFx0aWYgKCFVdGlscy5pc09iamVjdChvcHRpb25zKSkge1xyXG5cdFx0XHRVdGlscy5lcnJvcignVGhlIHR5cGUgb2YgXCJvcHRpb25zXCIgaXMgd3JvbmcsIGl0IHNob3VsZCBiZSBcIk9iamVjdFwiLicpO1xyXG5cdFx0fVxyXG5cdFx0aWYgKCFvcHRpb25zLnR5cGUgfHwgIW9wdGlvbnMucHJlZGljYXRlKSB7XHJcblx0XHRcdFV0aWxzLmVycm9yKCdNaXNzaW5nIHJlcXVpcmVkIHBhcmFtZXRlcnMnKTtcclxuXHRcdH1cclxuXHJcblx0XHRsZXQgbGVmdE5hbWUgPSB0aGlzLm5hbWU7XHJcblx0XHRsZXQgcmlnaHROYW1lID0gbW9kZWwubmFtZTtcclxuXHRcdGxldCBsZWZ0VmFsdWUgPSBvcHRpb25zLnByZWRpY2F0ZS5sZWZ0O1xyXG5cdFx0bGV0IHJpZ2h0VmFsdWUgPSBvcHRpb25zLnByZWRpY2F0ZS5yaWdodDtcclxuXHRcdGxldCBjb2xzID0gWycqJ107XHJcblxyXG5cdFx0Y29uc3QgU1FMX01BUCA9IHtcclxuXHRcdFx0Y3Jvc3M6IGBTRUxFQ1QgJHtjb2xzLmpvaW4oKX0gRlJPTSAke2xlZnROYW1lfSBDUk9TUyBKT0lOICR7cmlnaHROYW1lfTtgLFxyXG5cdFx0XHRpbm5lcjogW2BTRUxFQ1QgJHtjb2xzLmpvaW4oKX0gRlJPTSAke2xlZnROYW1lfSBOQVRVUkFMIEpPSU4gJHtyaWdodE5hbWV9YCxcclxuXHRcdFx0YFNFTEVDVCAke2NvbHMuam9pbigpfSBGUk9NICR7bGVmdE5hbWV9ICBJTk5FUiBKT0lOICR7cmlnaHROYW1lfSBPTiAke2xlZnROYW1lfS4ke2xlZnRWYWx1ZX0gPSAke3JpZ2h0TmFtZX0uJHtyaWdodFZhbHVlfWBcclxuXHRcdFx0XSxcclxuXHRcdFx0b3V0ZXI6IGBTRUxFQ1QgJHtjb2xzLmpvaW4oKX0gRlJPTSAke2xlZnROYW1lfSAgT1VURVIgSk9JTiAke3JpZ2h0TmFtZX0gT04gJHtsZWZ0TmFtZX0uJHtsZWZ0VmFsdWV9ID0gJHtyaWdodE5hbWV9LiR7cmlnaHRWYWx1ZX1gXHJcblx0XHR9XHJcblxyXG5cdFx0bGV0IHNxbCA9ICcnO1xyXG5cdFx0aWYgKG9wdGlvbnMudHlwZSA9PSBpbm5lciAmJiAhb3B0aW9ucy5wcmVkaWNhdGUpIHtcclxuXHRcdFx0c3FsID0gU1FMX01BUFtvcHRpb25zLnR5cGVdWzBdO1xyXG5cdFx0fSBlbHNlIGlmIChvcHRpb25zLnR5cGUgPT0gaW5uZXIgJiYgIW9wdGlvbnMucHJlZGljYXRlKSB7XHJcblx0XHRcdHNxbCA9IFNRTF9NQVBbb3B0aW9ucy50eXBlXVsxXTtcclxuXHRcdH0gZWxzZSB7XHJcblx0XHRcdHNxbCA9IFNRTF9NQVBbb3B0aW9ucy50eXBlXTtcclxuXHRcdH1cclxuXHJcblx0XHRVdGlscy5sb2coYFtqb2luXTogJHtzcWx9YCk7XHJcblx0XHRcclxuXHRcdHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XHJcblx0XHRcdHBsdXMuc3FsaXRlLnNlbGVjdFNxbCh7XHJcblx0XHRcdFx0bmFtZTogY29uZmlnLm5hbWUsXHJcblx0XHRcdFx0c3FsOiBzcWwsXHJcblx0XHRcdFx0c3VjY2VzcyhyZXMpIHtcclxuXHRcdFx0XHRcdGNvbnNvbGUubG9nKCdbam9pbl0gcmVzOicsIHJlcylcclxuXHRcdFx0XHRcdHJlc29sdmUocmVzKVxyXG5cdFx0XHRcdH0sXHJcblx0XHRcdFx0ZmFpbChlcnIpIHtcclxuXHRcdFx0XHRcdGNvbnNvbGUuZXJyb3IoJ1tqb2luXSBlcnI6JywgZXJyKVxyXG5cdFx0XHRcdFx0cmVqZWN0KGVycilcclxuXHRcdFx0XHR9XHJcblx0XHRcdH0pO1xyXG5cdFx0fSk7XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiBAZGVzY3JpcHRpb24g5omn6KGMc3Fs6K+t5Y+lXHJcblx0ICogQHBhcmFtIHtTdHJpbmd9IHNxbCA6IHNxbOivreWPpVxyXG5cdCAqL1xyXG5cdHNxbChzcWwpIHtcclxuXHRcdGlmICghVXRpbHMuaXNTdHJpbmcoc3FsKSkge1xyXG5cdFx0XHRVdGlscy5lcnJvcignXCJUaGUgdHlwZSBvZiBcInNxbFwiIGlzIHdyb25nLCBpdCBzaG91bGQgYmUgXCJTdHJpbmdcIi4nKTtcclxuXHRcdH1cclxuXHRcdFxyXG5cdFx0Ly8gbGV0IHNlbGYgPSB0aGlzO1xyXG5cdFx0Ly8gc2VsZi5yZXBhaXIoKTtcclxuXHJcblx0XHRVdGlscy5sb2coYFtzcWxdOiAke3NxbH1gKTtcclxuXHRcdFxyXG5cdFx0cmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcclxuXHRcdFx0cGx1cy5zcWxpdGUuc2VsZWN0U3FsKHtcclxuXHRcdFx0XHRuYW1lOiBjb25maWcubmFtZSxcclxuXHRcdFx0XHRzcWw6IHNxbCxcclxuXHRcdFx0XHRzdWNjZXNzKHJlcykge1xyXG5cdFx0XHRcdFx0Y29uc29sZS5sb2coJ1tzcWxdIHJlczonLCByZXMpXHJcblx0XHRcdFx0XHRyZXNvbHZlKHJlcylcclxuXHRcdFx0XHR9LFxyXG5cdFx0XHRcdGZhaWwoZXJyKSB7XHJcblx0XHRcdFx0XHRjb25zb2xlLmVycm9yKCdbc3FsXSBlcnI6JywgZXJyKVxyXG5cdFx0XHRcdFx0cmVqZWN0KGVycilcclxuXHRcdFx0XHR9XHJcblx0XHRcdH0pO1xyXG5cdFx0fSk7XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiBAZGVzY3JpcHRpb24g5Yik5pat6KGo5piv5ZCm5a2Y5ZyoIFxyXG5cdCAqL1xyXG5cdGluc2VydE1hcERhdGEoYXJyYXlCdWZmZXIpIHtcclxuXHRcdGNvbnNvbGUubG9nKCdhcnJheUJ1ZmZlcicsIGFycmF5QnVmZmVyKVxyXG5cdFx0bGV0IHppcEZpbGVEYXRhID0gdGhpcy5ieXRlQXJyYXlUb0hleFN0cmluZyhhcnJheUJ1ZmZlcilcclxuXHRcdGNvbnNvbGUubG9nKCd6aXBGaWxlRGF0YScsIHppcEZpbGVEYXRhKVxyXG5cdFx0XHJcblx0XHRsZXQgc3FsID0gYElOU0VSVCBJTlRPICdtYXBJbmZvJyAoc2hvcElkLG1hcE5hbWUsemlwSW1hZ2VVcmwsemlwSW1hZ2VNZDUsemlwRmlsZU5hbWUsemlwRmlsZURhdGEpIFxyXG5cdFx0VkFMVUVTICgnMScsJ+i3r+e6v+WbvicsJ2h0dHA6Ly93d3cuYmVzd2VsbC5jb20vZG93bmxvYWQv6b2Q5rqQ5aSn5Y6mX+W3suS/ruaUuS56aXAnLCdNVEV4TVE9PScsJ+m9kOa6kOWkp+WOpl/lt7Lkv67mlLkudGlmJywgeCcke3ppcEZpbGVEYXRhfScpYDtcclxuXHRcdFxyXG5cdFx0cmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcclxuXHRcdFx0cGx1cy5zcWxpdGUuZXhlY3V0ZVNxbCh7XHJcblx0XHRcdFx0bmFtZTogY29uZmlnLm5hbWUsXHJcblx0XHRcdFx0c3FsOiBzcWwsXHJcblx0XHRcdFx0c3VjY2VzcyhyZXMpIHtcclxuXHRcdFx0XHRcdC8vIGNvbnNvbGUubG9nKCdbaW5zZXJ0TWFwRGF0YV0gcmVzOicsIHJlcylcclxuXHRcdFx0XHRcdHJlc29sdmUocmVzKVxyXG5cdFx0XHRcdH0sXHJcblx0XHRcdFx0ZmFpbChlcnIpIHtcclxuXHRcdFx0XHRcdGNvbnNvbGUuZXJyb3IoJ1tpbnNlcnRNYXBEYXRhXSBlcnI6JywgZXJyKVxyXG5cdFx0XHRcdFx0cmVqZWN0KGVycilcclxuXHRcdFx0XHR9XHJcblx0XHRcdH0pO1xyXG5cdFx0fSk7XHJcblx0fVxyXG5cdFxyXG5cdGJ5dGVBcnJheVRvSGV4U3RyaW5nKGFycmF5QnVmZmVyKSB7IC8vIGNvbnZlcnRzIGJ5dGUgYXJyYXlzIHRvIHN0cmluZ1xyXG5cdFx0bGV0IGksIGosIGlubjtcclxuXHRcdGxldCBoZXggPSBbXCIwXCIsIFwiMVwiLCBcIjJcIiwgXCIzXCIsIFwiNFwiLCBcIjVcIiwgXCI2XCIsIFwiN1wiLCBcIjhcIiwgXCI5XCIsIFwiQVwiLCBcIkJcIiwgXCJDXCIsIFwiRFwiLCBcIkVcIiwgXCJGXCJdO1xyXG5cdFx0bGV0IG91dCA9IFwiXCI7XHJcblx0XHJcblx0XHRmb3IgKGogPSAwOyBqIDwgYXJyYXlCdWZmZXIubGVuZ3RoOyArK2opIHtcclxuXHRcdFx0aW5uID0gYXJyYXlCdWZmZXJbal0gJiAweGZmO1xyXG5cdFx0XHRpID0gKGlubiA+Pj4gNCkgJiAweDBmO1xyXG5cdFx0XHRvdXQgKz0gaGV4W2ldO1xyXG5cdFx0XHRpID0gaW5uICYgMHgwZjtcclxuXHRcdFx0b3V0ICs9IGhleFtpXTtcclxuXHRcdH1cclxuXHRcdHJldHVybiBvdXQ7XHJcblx0fVxyXG5cdFxyXG5cdC8qKlxyXG5cdCAqIEBkZXNjcmlwdGlvbiDliKTmlq3ooajmmK/lkKblrZjlnKggXHJcblx0ICovXHJcblx0aXNFeGlzdCgpIHtcclxuXHRcdGxldCBzcWwgPSBgU0VMRUNUIGNvdW50KCopIEFTIGlzRXhpc3QgRlJPTSBzcWxpdGVfbWFzdGVyIFdIRVJFIHR5cGU9J3RhYmxlJyBBTkQgbmFtZT0nJHt0aGlzLm5hbWV9J2A7XHJcblx0XHQvLyBVdGlscy5sb2coYFtpc0V4aXN0XSAke2NvbmZpZy5uYW1lfWApO1xyXG5cdFx0Ly8gVXRpbHMubG9nKGBbaXNFeGlzdF0gJHtzcWx9YCk7XHJcblx0XHRcclxuXHRcdHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XHJcblx0XHRcdHBsdXMuc3FsaXRlLnNlbGVjdFNxbCh7XHJcblx0XHRcdFx0bmFtZTogY29uZmlnLm5hbWUsXHJcblx0XHRcdFx0c3FsOiBzcWwsXHJcblx0XHRcdFx0c3VjY2VzcyhyZXMpIHtcclxuXHRcdFx0XHRcdC8vIGNvbnNvbGUubG9nKCdbaXNFeGlzdF0gcmVzOicsIHJlcylcclxuXHRcdFx0XHRcdGlmIChyZXNbMF0uaXNFeGlzdCA9PSAxKVxyXG5cdFx0XHRcdFx0XHRjb25zb2xlLmxvZyhgW2lzRXhpc3RdICR7Y29uZmlnLm5hbWV9IOW3suWtmOWcqGApO1xyXG5cdFx0XHRcdFx0ZWxzZVxyXG5cdFx0XHRcdFx0XHRjb25zb2xlLmxvZyhgW2lzRXhpc3RdICR7Y29uZmlnLm5hbWV9IOS4jeWtmOWcqGApO1xyXG5cdFx0XHRcdFx0cmVzb2x2ZShyZXMpXHJcblx0XHRcdFx0fSxcclxuXHRcdFx0XHRmYWlsKGVycikge1xyXG5cdFx0XHRcdFx0Y29uc29sZS5lcnJvcignW2lzRXhpc3RdIGVycjonLCBlcnIpXHJcblx0XHRcdFx0XHRyZWplY3QoZXJyKVxyXG5cdFx0XHRcdH1cclxuXHRcdFx0fSk7XHJcblx0XHR9KTtcclxuXHR9XHJcblx0XHJcblx0LyoqXHJcblx0ICogQGRlc2NyaXB0aW9uIOWIoOmZpOaVsOaNruihqCAqKuS4jeaOqOiNkCoqXHJcblx0ICovXHJcblx0ZHJvcCgpIHtcclxuXHRcdHZhciBzcWwgPSBgRFJPUCBUQUJMRSAnJHt0aGlzLm5hbWV9J2A7XHJcblx0XHQvLyBsZXQgc2VsZiA9IHRoaXM7XHJcblx0XHQvLyBzZWxmLnJlcGFpcigpO1xyXG5cclxuXHRcdFV0aWxzLmxvZyhgW2Ryb3BdOiAke3NxbH1gKTtcclxuXHRcdFxyXG5cdFx0cmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcclxuXHRcdFx0cGx1cy5zcWxpdGUuc2VsZWN0U3FsKHtcclxuXHRcdFx0XHRuYW1lOiBjb25maWcubmFtZSxcclxuXHRcdFx0XHRzcWw6IHNxbCxcclxuXHRcdFx0XHRzdWNjZXNzKHJlcykge1xyXG5cdFx0XHRcdFx0Y29uc29sZS5sb2coJ1tkcm9wXSByZXM6JywgcmVzKVxyXG5cdFx0XHRcdFx0cmVzb2x2ZShyZXMpXHJcblx0XHRcdFx0fSxcclxuXHRcdFx0XHRmYWlsKGVycikge1xyXG5cdFx0XHRcdFx0Y29uc29sZS5lcnJvcignW2Ryb3BdIGVycjonLCBlcnIpXHJcblx0XHRcdFx0XHRyZWplY3QoZXJyKVxyXG5cdFx0XHRcdH1cclxuXHRcdFx0fSk7XHJcblx0XHR9KTtcclxuXHR9XHJcblxyXG5cdC8qKlxyXG5cdCAqIEBkZXNjcmlwdGlvbiDliJvlu7rmlbDmja7ooaggKirkuI3mjqjojZAqKlxyXG5cdCAqL1xyXG5cdGNyZWF0ZSgpIHtcclxuXHRcdC8vIGxldCBzZWxmID0gdGhpcztcclxuXHRcdGxldCBzcWwgPSBVdGlscy5tb2RlbFNxbCh0aGlzLm5hbWUsIHRoaXMub3B0aW9ucyk7XHJcblx0XHRVdGlscy5sb2coYFtjcmVhdGVdOiAke3NxbH1gKTtcclxuXHRcdFxyXG5cdFx0cmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcclxuXHRcdFx0cGx1cy5zcWxpdGUuc2VsZWN0U3FsKHtcclxuXHRcdFx0XHRuYW1lOiBjb25maWcubmFtZSxcclxuXHRcdFx0XHRzcWw6IHNxbCxcclxuXHRcdFx0XHRzdWNjZXNzKHJlcykge1xyXG5cdFx0XHRcdFx0Ly8gY29uc29sZS5sb2coJ1tjcmVhdGVdIHJlczonLCByZXMpXHJcblx0XHRcdFx0XHRyZXNvbHZlKHJlcylcclxuXHRcdFx0XHR9LFxyXG5cdFx0XHRcdGZhaWwoZXJyKSB7XHJcblx0XHRcdFx0XHRjb25zb2xlLmVycm9yKCdbY3JlYXRlXSBlcnI6JywgZXJyKVxyXG5cdFx0XHRcdFx0cmVqZWN0KGVycilcclxuXHRcdFx0XHR9XHJcblx0XHRcdH0pO1xyXG5cdFx0fSk7XHJcblx0fVxyXG5cclxuXHR0b1N0cmluZygpIHtcclxuXHRcdHJldHVybiBgWyR7dGhpcy5uYW1lfSBNb2RlbF1gO1xyXG5cdH1cclxuXHJcblx0YXN5bmMgcmVwYWlyKCkge1xyXG5cdFx0bGV0IHNlbGYgPSB0aGlzO1xyXG5cdFx0XHJcblx0XHR0cnkge1xyXG5cdFx0XHRsZXQgcmVzID0gYXdhaXQgc2VsZi5pc0V4aXN0KClcclxuXHRcdFx0aWYgKCFyZXNbMF0uaXNFeGlzdCkge1xyXG5cdFx0XHRcdGF3YWl0IHNlbGYuY3JlYXRlKCk7XHJcblx0XHRcdH1cclxuXHRcdH0gY2F0Y2goZSkge1xyXG5cdFx0XHRjb25zb2xlLmVycm9yKGUpO1xyXG5cdFx0fVxyXG5cdFx0XHJcblx0fVxyXG5cclxufVxyXG5cclxuXHJcbi8vIOWNleS+i+aooeW8j1xyXG5leHBvcnQgY2xhc3MgdXNxbGl0ZSB7XHJcblx0LyoqXHJcblx0ICog5p6E6YCg5Ye95pWwXHJcblx0ICogQHBhcmFtIHtPYmplY3R9IG9wdGlvbnMg5pWw5o2u5bqT6YWN572u5L+h5oGvICpcclxuXHQgKiB7bmFtZTogJ2RlbW8nLCBwYXRoOiAnX2RvYy9kZW1vLmRiJ31cclxuXHQgKiAtIG5hbWUg5pWw5o2u5bqT5ZCN56ewKlxyXG5cdCAqIC0gcGF0aCDmlbDmja7lupPot6/lvoRcclxuXHQgKi9cclxuXHRjb25zdHJ1Y3RvcihvcHRpb25zKSB7XHJcblx0XHRjb25zb2xlLndhcm4oJ05vIGluc3RhbnRpYXRpb24nKTtcclxuXHR9XHJcblx0XHJcblx0LyoqXHJcblx0ICogQGRlc2NyaXB0aW9uIOmTvuaOpeaVsOaNruW6k1xyXG5cdCAqIEBwYXJhbSB7T2JqZWN0fSBvcHRpb25zIOaVsOaNruW6k+mFjee9ruS/oeaBryAqXHJcblx0ICoge25hbWU6ICdkZW1vJywgcGF0aDogJ19kb2MvZGVtby5kYid9XHJcblx0ICogLSBuYW1lIOaVsOaNruW6k+WQjeensCpcclxuXHQgKiAtIHBhdGgg5pWw5o2u5bqT6Lev5b6EXHJcblx0ICovXHJcblx0c3RhdGljIGNvbm5lY3Qob3B0aW9ucykge1xyXG5cdFx0Y29uZmlnLm5hbWUgPSBvcHRpb25zLm5hbWU7IC8vIOaVsOaNruW6k+WQjeensCpcclxuXHRcdGNvbmZpZy5wYXRoID0gb3B0aW9ucy5wYXRoOyAvLyDmlbDmja7lupPlkI3np7AqXHJcblxyXG5cdFx0aWYgKGNvbmZpZy5pc0Nvbm5lY3QpIHtcclxuXHRcdFx0Y29uc29sZS53YXJuKCdbY29ubmVjdF0g5pWw5o2u5bqT5bey6L+e5o6l77yM5peg6ZyA6YeN6L+eJylcclxuXHRcdFx0cmV0dXJuXHJcblx0XHR9XHJcblx0XHRcclxuXHRcdHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XHJcblx0XHRcdHBsdXMuc3FsaXRlLm9wZW5EYXRhYmFzZSh7XHJcblx0XHRcdFx0bmFtZTogY29uZmlnLm5hbWUsIC8v5pWw5o2u5bqT5ZCN56ewXHJcblx0XHRcdFx0cGF0aDogY29uZmlnLnBhdGgsIC8v5pWw5o2u5bqT5Zyw5Z2AXHJcblx0XHRcdFx0c3VjY2VzcyhyZXMpIHtcclxuXHRcdFx0XHRcdGNvbmZpZy5pc0Nvbm5lY3QgPSB0cnVlO1xyXG5cdFx0XHRcdFx0Ly8gY29uc29sZS5sb2coJ1tjb25uZWN0XSByZXM6JywgcmVzKVxyXG5cdFx0XHRcdFx0cmVzb2x2ZShyZXMpXHJcblx0XHRcdFx0fSxcclxuXHRcdFx0XHRmYWlsKGVycikge1xyXG5cdFx0XHRcdFx0aWYgKGUuY29kZSA9PSAtMTQwMikge1xyXG5cdFx0XHRcdFx0XHRjb25maWcuaXNDb25uZWN0ID0gdHJ1ZTtcclxuXHRcdFx0XHRcdFx0Y29uc29sZS53YXJuKCdbY29ubmVjdF0gd2FybjonLCBlcnIpXHJcblx0XHRcdFx0XHR9IGVsc2Uge1xyXG5cdFx0XHRcdFx0XHRjb25maWcuaXNDb25uZWN0ID0gZmFsc2U7XHJcblx0XHRcdFx0XHRcdGNvbnNvbGUuZXJyb3IoJ1tjb25uZWN0XSBlcnI6JywgZXJyKVxyXG5cdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0cmVqZWN0KGVycilcclxuXHRcdFx0XHR9XHJcblx0XHRcdH0pO1xyXG5cdFx0fSk7XHJcblx0fVxyXG5cdFxyXG5cdC8qKlxyXG5cdCAqIEBkZXNjcmlwdGlvbiDmlq3lvIDmlbDmja7lupNcclxuXHQgKiBAcGFyYW0geyp9IGNhbGxiYWNrIFxyXG5cdCAqL1xyXG5cdHN0YXRpYyBjbG9zZSgpIHtcclxuXHRcdHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XHJcblx0XHRcdHBsdXMuc3FsaXRlLmNsb3NlRGF0YWJhc2Uoe1xyXG5cdFx0XHRcdG5hbWU6IGNvbmZpZy5uYW1lLCAvL+aVsOaNruW6k+WQjeensFxyXG5cdFx0XHRcdHBhdGg6IGNvbmZpZy5wYXRoLCAvL+aVsOaNruW6k+WcsOWdgFxyXG5cdFx0XHRcdHN1Y2Nlc3MocmVzKSB7XHJcblx0XHRcdFx0XHRjb25maWcuaXNDb25uZWN0ID0gZmFsc2U7XHJcblx0XHRcdFx0XHQvLyBjb25zb2xlLmxvZygnW2Nsb3NlXSByZXM6JywgcmVzKVxyXG5cdFx0XHRcdFx0cmVzb2x2ZShyZXMpXHJcblx0XHRcdFx0fSxcclxuXHRcdFx0XHRmYWlsKGVycikge1x0XHRcdFx0XHRcclxuXHRcdFx0XHRcdGNvbnNvbGUuZXJyb3IoJ1tjbG9zZV0gZXJyOicsIGVycilcclxuXHRcdFx0XHRcdHJlamVjdChlcnIpXHJcblx0XHRcdFx0fVxyXG5cdFx0XHR9KTtcclxuXHRcdH0pO1xyXG5cdH1cclxuXHRcclxuXHQvKipcclxuXHQgKiBAZGVzY3JpcHRpb24g5Yib5bu6IE1vZGVsIOWvueixoVxyXG5cdCAqIEBleGFtcGxlXHJcblx0ICogdXNxbGl0ZS5tb2RlbCgnZGVtbycsXHJcblx0ICoge1xyXG5cdCAqIFx0XHRpZDoge1xyXG5cdCAqIFx0XHRcdHR5cGU6IE51bWJlclxyXG5cdCAqIFx0XHR9LFxyXG5cdCAqIFx0XHRjb250ZW50OiBTdHJpbmdcclxuXHQgKiB9KVxyXG5cdCAqIEBwYXJhbSB7U3RyaW5nfSBuYW1lIOaVsOaNruihqOWQjeensCAqXHJcblx0ICogQHBhcmFtIHtTdHJpbmd9IG9wdGlvbnMg5Y+C5pWw6YWN572uICpcclxuXHQgKiBAcmV0dXJucyDov5Tlm54gTW9kZWwg5a+56LGhXHJcblx0ICovXHJcblx0c3RhdGljIGFzeW5jIG1vZGVsKG5hbWUsIG9wdGlvbnMpIHtcclxuXHRcdFV0aWxzLmxvZyhjb25maWcpO1xyXG5cdFx0Ly8gcmV0dXJuIG5ldyBNb2RlbChuYW1lLCBvcHRpb25zKTtcclxuXHRcdGxldCBtb2RlbCA9IG5ldyBNb2RlbCgpO1xyXG5cdFx0YXdhaXQgbW9kZWwuaW5pdChuYW1lLCBvcHRpb25zKVxyXG5cdFx0cmV0dXJuIG1vZGVsXHJcblx0fVxyXG59XHJcbiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///68\n");
- /***/ }),
- /* 69 */
- /*!***************************************************************!*\
- !*** ./node_modules/@babel/runtime/helpers/classCallCheck.js ***!
- \***************************************************************/
- /*! no static exports found */
- /***/ (function(module, exports) {
- function _classCallCheck(instance, Constructor) {
- if (!(instance instanceof Constructor)) {
- throw new TypeError("Cannot call a class as a function");
- }
- }
- module.exports = _classCallCheck, module.exports.__esModule = true, module.exports["default"] = module.exports;
- /***/ }),
- /* 70 */
- /*!************************************************************!*\
- !*** ./node_modules/@babel/runtime/helpers/createClass.js ***!
- \************************************************************/
- /*! no static exports found */
- /***/ (function(module, exports, __webpack_require__) {
- var toPropertyKey = __webpack_require__(/*! ./toPropertyKey.js */ 3);
- function _defineProperties(target, props) {
- for (var i = 0; i < props.length; i++) {
- var descriptor = props[i];
- descriptor.enumerable = descriptor.enumerable || false;
- descriptor.configurable = true;
- if ("value" in descriptor) descriptor.writable = true;
- Object.defineProperty(target, toPropertyKey(descriptor.key), descriptor);
- }
- }
- function _createClass(Constructor, protoProps, staticProps) {
- if (protoProps) _defineProperties(Constructor.prototype, protoProps);
- if (staticProps) _defineProperties(Constructor, staticProps);
- Object.defineProperty(Constructor, "prototype", {
- writable: false
- });
- return Constructor;
- }
- module.exports = _createClass, module.exports.__esModule = true, module.exports["default"] = module.exports;
- /***/ }),
- /* 71 */
- /*!***********************************************************!*\
- !*** D:/Work2/Orienteering/TrackOffical/utils/ouu-nfc.js ***!
- \***********************************************************/
- /*! no static exports found */
- /***/ (function(module, exports, __webpack_require__) {
- "use strict";
- eval("/* WEBPACK VAR INJECTION */(function(__f__) {\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n// 包路径\nvar package_NdefRecord = 'android.nfc.NdefRecord';\nvar package_NdefMessage = 'android.nfc.NdefMessage';\nvar package_TECH_DISCOVERED = 'android.nfc.action.TECH_DISCOVERED';\nvar package_Intent = 'android.content.Intent';\nvar package_Activity = 'android.app.Activity';\nvar package_PendingIntent = 'android.app.PendingIntent';\nvar package_IntentFilter = 'android.content.IntentFilter';\nvar package_NfcAdapter = 'android.nfc.NfcAdapter';\nvar package_Ndef = 'android.nfc.tech.Ndef';\nvar package_NdefFormatable = 'android.nfc.tech.NdefFormatable';\nvar package_Parcelable = 'android.os.Parcelable';\nvar package_String = 'java.lang.String';\nvar NfcAdapter;\nvar NdefRecord;\nvar NdefMessage;\nvar Uri;\nvar readyWriteData = false;\nvar readyRead = false;\nvar readySetPwd = false;\nvar readyDelPwd = false;\nvar readyGetNfcState = false;\nvar readyWriteAndLock = false;\nvar noNFC = false;\nvar techListsArray = [['android.nfc.tech.IsoDep'], ['android.nfc.tech.NfcA'], ['android.nfc.tech.NfcB'], ['android.nfc.tech.NfcF'], ['android.nfc.tech.Nfcf'], ['android.nfc.tech.NfcV'], ['android.net.Uri'], ['android.nfc.tech.NdefFormatable'], ['android.nfc.tech.MifareClassi'], ['android.nfc.tech.MifareUltralight']];\nvar UriPrefixMap = [];\nUriPrefixMap[0x00] = '';\nUriPrefixMap[0x01] = 'http://www.';\nUriPrefixMap[0x02] = 'https://www.';\nUriPrefixMap[0x03] = 'http://';\nUriPrefixMap[0x04] = 'https://';\nUriPrefixMap[0x05] = 'tel:';\nUriPrefixMap[0x06] = 'mailto:';\nUriPrefixMap[0x07] = 'ftp://anonymous:anonymous@';\nUriPrefixMap[0x08] = 'ftp://ftp.';\nUriPrefixMap[0x09] = 'ftps://';\nvar writeUri = 'http://www.beswell.com'; // 要写入的数据\nvar readResult = ''; // NFC读取到的数据\nvar pwdBytes = [1, 2, 3, 4]; // 待写入的密码\nvar pwdDefault = [0xFF, 0xFF, 0xFF, 0xFF]; // 清除密码后设置的默认值\nvar _default = {\n listenNFCStatus: function listenNFCStatus() {\n var that = this;\n try {\n var main = plus.android.runtimeMainActivity();\n var Intent = plus.android.importClass('android.content.Intent');\n var Activity = plus.android.importClass('android.app.Activity');\n var PendingIntent = plus.android.importClass('android.app.PendingIntent');\n var IntentFilter = plus.android.importClass('android.content.IntentFilter');\n Uri = plus.android.importClass('android.net.Uri');\n NfcAdapter = plus.android.importClass('android.nfc.NfcAdapter');\n var nfcAdapter = NfcAdapter.getDefaultAdapter(main);\n if (nfcAdapter == null) {\n uni.showToast({\n title: '设备不支持NFC!',\n icon: 'none'\n });\n noNFC = true;\n return;\n }\n if (!nfcAdapter.isEnabled()) {\n uni.showToast({\n title: '请在系统设置中先启用NFC功能!',\n icon: 'none'\n });\n noNFC = true;\n return;\n } else {\n noNFC = false;\n }\n var intent = new Intent(main, main.getClass());\n intent.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP);\n var pendingIntent = PendingIntent.getActivity(main, 0, intent, 0);\n var ndef = new IntentFilter(\"android.nfc.action.TECH_DISCOVERED\");\n ndef.addDataType(\"*/*\");\n var intentFiltersArray = [ndef];\n plus.globalEvent.addEventListener('newintent', function () {\n __f__(\"log\", 'newintent running', \" at utils/ouu-nfc.js:97\");\n // 监听 NFC\n setTimeout(function () {\n that.nfcRuning();\n }, 100);\n });\n plus.globalEvent.addEventListener('pause', function (e) {\n __f__(\"log\", 'pause running', \" at utils/ouu-nfc.js:104\");\n if (nfcAdapter) {\n //关闭前台调度系统\n //恢复默认状态\n nfcAdapter.disableForegroundDispatch(main);\n }\n });\n plus.globalEvent.addEventListener('resume', function (e) {\n __f__(\"log\", 'resume running', \" at utils/ouu-nfc.js:112\");\n if (nfcAdapter) {\n //开启前台调度系统\n nfcAdapter.enableForegroundDispatch(main, pendingIntent, intentFiltersArray, techListsArray);\n }\n });\n nfcAdapter.enableForegroundDispatch(main, pendingIntent, intentFiltersArray, techListsArray);\n } catch (e) {\n __f__(\"error\", e, \" at utils/ouu-nfc.js:121\");\n }\n },\n nfcRuning: function nfcRuning() {\n NdefRecord = plus.android.importClass(\"android.nfc.NdefRecord\");\n NdefMessage = plus.android.importClass(\"android.nfc.NdefMessage\");\n var main = plus.android.runtimeMainActivity();\n var intent = main.getIntent();\n // let intent = plus.android.invoke(main, 'getIntent');\n var that = this;\n __f__(\"log\", \"action type:\" + intent.getAction(), \" at utils/ouu-nfc.js:132\");\n if (package_TECH_DISCOVERED == intent.getAction()) {\n if (readyWriteData) {\n that.write(intent);\n readyWriteData = false;\n } else if (readyRead) {\n that.read(intent);\n readyRead = false;\n } else if (readySetPwd) {\n that.setPassword(intent);\n readySetPwd = false;\n } else if (readyDelPwd) {\n that.delPassword(intent);\n readyDelPwd = false;\n } else if (readyGetNfcState) {\n that.getState(intent);\n readyGetNfcState = false;\n } else if (readyWriteAndLock) {\n var result = that.write(intent);\n if (result == 999) {\n // 已设置密码保护\n readyWriteAndLock = false;\n return;\n }\n setTimeout(function () {\n that.setPassword(intent);\n }, 100);\n readyWriteAndLock = false;\n } else {\n that.read(intent);\n readyRead = false;\n }\n }\n },\n write: function write(intent) {\n try {\n toast('请勿移开标签 正在写入...');\n __f__(\"log\", \"NFC写入内容 writeUri = \" + writeUri, \" at utils/ouu-nfc.js:170\");\n // let textBytes = plus.android.invoke(writeUri, \"getBytes\");\n var uri = Uri.parse(writeUri);\n var message = new NdefMessage([new NdefRecord.createUri(uri)]);\n __f__(\"log\", \"==== message ===>\", message, \" at utils/ouu-nfc.js:174\");\n var Ndef = plus.android.importClass('android.nfc.tech.Ndef');\n var NdefFormatable = plus.android.importClass('android.nfc.tech.NdefFormatable');\n var tag = intent.getParcelableExtra(NfcAdapter.EXTRA_TAG);\n var MifareUltralight = plus.android.importClass('android.nfc.tech.MifareUltralight');\n var mfc = MifareUltralight.get(tag);\n if (mfc != null) {\n mfc.connect();\n var responseAuth0 = mfc.readPages(0x29);\n __f__(\"log\", \"responseAuth0=\" + JSON.stringify(responseAuth0), \" at utils/ouu-nfc.js:186\");\n if (responseAuth0[3] == 0x00) {\n toast('已设置密码保护,无法写入数据');\n return 999;\n }\n mfc.close();\n }\n var ndef = Ndef.get(tag);\n if (ndef != null) {\n // 待写入的数据长度\n var size = message.toByteArray().length;\n ndef.connect();\n if (!ndef.isWritable()) {\n ndef.close();\n toast('tag不允许写入!');\n return;\n }\n if (ndef.getMaxSize() < size) {\n ndef.close();\n toast('文件大小超出容量!');\n return;\n }\n ndef.writeNdefMessage(message);\n ndef.close();\n toast('写入数据成功!');\n return;\n } else {\n var format = NdefFormatable.get(tag);\n if (format != null) {\n try {\n format.connect();\n format.format(message);\n format.close();\n toast('格式化tag并且写入message');\n return;\n } catch (e) {\n toast('格式化tag失败.');\n return;\n }\n } else {\n toast('Tag不支持NDEF');\n return;\n }\n }\n } catch (e) {\n toast('写入失败');\n __f__(\"log\", \"error=\" + e, \" at utils/ouu-nfc.js:236\");\n }\n },\n read: function read(intent) {\n toast('请勿移开标签正在读取数据');\n var that = this;\n // NFC id\n var bytesId = intent.getByteArrayExtra(NfcAdapter.EXTRA_ID);\n var nfc_id = that.byteArrayToHexString(bytesId);\n // console.log('nfc_id: ' + nfc_id);\n // let Parcelable = plus.android.importClass(\"android.os.Parcelable\");\n\n // tmp add\n // let Tag = plus.android.importClass('android.nfc.Tag');\n // let Ndef = plus.android.importClass('android.nfc.tech.Ndef');\n // let tag = intent.getParcelableExtra(NfcAdapter.EXTRA_TAG);\n // let ndef = Ndef.get(tag);\n // let nfc_type = that.byteArrayToHexString(ndef.getType());\n // console.log('nfc_type:\"' + nfc_type + '\"')\n\n var rawmsgs = intent.getParcelableArrayExtra(\"android.nfc.extra.NDEF_MESSAGES\");\n // let rawmsgs = plus.android.invoke(intent, 'getParcelableArrayExtra', 'android.nfc.extra.NDEF_MESSAGES');\n // let rawmsgs = intent.getParcelableArrayExtra();\n\n if (rawmsgs != null && rawmsgs.length > 0) {\n // console.log('rawmsgs:\"' + JSON.stringify(rawmsgs) + '\"')\n var records = rawmsgs[0].getRecords();\n // let records = plus.android.invoke(rawmsgs[0], 'getRecords');\n var tnf = records[0].getTnf();\n // let tnf = plus.android.invoke(records[0], 'getTnf');\n // console.log('tnf = ' + JSON.stringify(tnf))\n // console.log('TNF_WELL_KNOWN = ' + JSON.stringify(NdefRecord.TNF_WELL_KNOWN))\n // console.log('TNF_ABSOLUTE_URI = ' + JSON.stringify(NdefRecord.TNF_ABSOLUTE_URI))\n\n var recordType = records[0].getType();\n // console.log('recordType = ' + JSON.stringify(recordType))\n // console.log('RTD_URI = ' + JSON.stringify(NdefRecord.RTD_URI))\n\n var result = records[0].getPayload();\n var data = '';\n if (tnf.__UUID__ == NdefRecord.TNF_WELL_KNOWN.value) {\n __f__(\"log\", 'tnf == TNF_WELL_KNOWN', \" at utils/ouu-nfc.js:279\");\n if (recordType == NdefRecord.RTD_URI) {\n // URI based on payload\n // 在URI Record Payload中,第一个字节指明URI的ID码,对应 UriPrefixMap\n __f__(\"log\", 'recordType == NdefRecord.RTD_URI', \" at utils/ouu-nfc.js:282\");\n // console.log('result[0]:\"' + result[0] + '\"')\n\n var uriPrefix = UriPrefixMap[result[0]];\n __f__(\"log\", 'uriPrefix:\"' + uriPrefix + '\"', \" at utils/ouu-nfc.js:286\");\n result.shift(); // 去除URI的ID码\n\n data = plus.android.newObject(\"java.lang.String\", result);\n data = uriPrefix + data;\n }\n // } else if (tnf.__UUID__ == NdefRecord.TNF_ABSOLUTE_URI.value) {\n // \tconsole.log('tnf == TNF_ABSOLUTE_URI')\n } else {\n __f__(\"log\", 'tnf:\"' + tnf + '\"', \" at utils/ouu-nfc.js:295\");\n data = plus.android.newObject(\"java.lang.String\", result);\n }\n\n // console.log('result:\"' + result + '\"')\n // console.log('NFC 数据:\"' + data + '\"')\n // toast('NFC 数据:' + data);\n // plus.runtime.openURL(data, function(res) { \n // \tconsole.log(\"打开浏览器路径失败!----\", res); \n // }); \n // return data;\n readResult = {\n id: nfc_id,\n data: data\n };\n } else {\n // toast('没有读取到数据');\n readResult = {\n id: nfc_id,\n data: ''\n };\n }\n __f__(\"log\", 'NFC 数据:' + JSON.stringify(readResult), \" at utils/ouu-nfc.js:317\");\n uni.$emit('NfcRead', readResult);\n },\n setPassword: function setPassword(intent) {\n try {\n toast('请勿移开标签 正在设置密码...');\n var MifareUltralight = plus.android.importClass('android.nfc.tech.MifareUltralight');\n var tag = intent.getParcelableExtra(NfcAdapter.EXTRA_TAG);\n var mfc = MifareUltralight.get(tag);\n if (mfc != null) {\n mfc.connect();\n\n // let response = plus.android.invoke(mfc, 'transceive', [0x1B, pwdDefault[0], pwdDefault[1], pwdDefault[2], pwdDefault[3]])\n // // let response = mfc.transceive([0x1B, pwdDefault[0], pwdDefault[1], pwdDefault[2], pwdDefault[3]])\n // console.log(\"询问登录 response=\" + JSON.stringify(response));\n\n //pack置为默认\n mfc.writePage(0x2C, [0x00, 0x00, 0x00, 0x00]);\n\n // set PWD: 设置密码为用户设置的密码\n mfc.writePage(0x2B, pwdBytes);\n\n // 设置Auth0 auth0实际控制是否启用密码保护 设置为00表示从第0页开始提供保护\n // let responseAuth0 = mfc.readPages(0x29)\n // console.log(\"responseAuth0=\" + JSON.stringify(responseAuth0));\n mfc.writePage(0x29, [0x04, 0x00, 0x00, 0x00]);\n mfc.close();\n toast('设置密码成功!');\n return;\n } else {\n toast('Tag不支持MifareUltralight');\n return;\n }\n } catch (e) {\n toast('设置密码失败');\n __f__(\"log\", \"设置密码失败 error=\" + e, \" at utils/ouu-nfc.js:355\");\n }\n },\n delPassword: function delPassword(intent) {\n try {\n toast('请勿移开标签 正在清除密码...');\n var MifareUltralight = plus.android.importClass('android.nfc.tech.MifareUltralight');\n var tag = intent.getParcelableExtra(NfcAdapter.EXTRA_TAG);\n var mfc = MifareUltralight.get(tag);\n // let mfc2 = plus.android.invoke(MifareUltralight, 'get', tag) // to do \n\n if (mfc != null) {\n mfc.connect();\n\n //js不支持无符号整数,无法传输大于0X7F的值\n // mfc.writePage(0x08, [0x01, 0x02, 0x03, 0x04])\n // mfc.writePage(0x09, [0x7D, 0x7E, 0x7F, (0x80>>>0)])\n // mfc.writePage(0x0A, [0x80>>>0, 0x81>>>0, 0xFE>>>0, 0xFF>>>0])\n // return\n\n //用用户设置的密码询问登录\n // let response = plus.android.invoke(mfc, 'transceive', [0x1B, pwdBytes[0], pwdBytes[1], pwdBytes[2], pwdBytes[3]])\n var response = mfc.transceive([0x1B, pwdBytes[0], pwdBytes[1], pwdBytes[2], pwdBytes[3]]);\n __f__(\"log\", \"询问登录 response=\" + JSON.stringify(response), \" at utils/ouu-nfc.js:379\");\n if (response != null) {\n // if (response[0] == 0x00 && response[1] == 0x00) {\n if (response == '0,0') {\n __f__(\"log\", \"密码校验正确\", \" at utils/ouu-nfc.js:384\");\n } else {\n mfc.close();\n __f__(\"log\", \"密码校验失败\", \" at utils/ouu-nfc.js:387\");\n toast('密码校验失败');\n return;\n }\n } else {\n mfc.close();\n __f__(\"log\", \"询问登录 response 无效\", \" at utils/ouu-nfc.js:393\");\n toast('密码验证失败 或 未设置密码');\n return;\n }\n\n //pack置为默认\n mfc.writePage(0x2C, [0x00, 0x00, 0x00, 0x00]);\n\n // set PWD: 设置密码为默认密码\n mfc.writePage(0x2B, pwdDefault);\n\n // set AUTHLIM:\n //将AUTHLIM(第42页,字节0,位2-0)设置为失败的最大密码验证尝试次数\n mfc.writePage(0x2A, [0x00, 0x05, 0x00, 0x00]);\n\n // 设置Auth0 auth0实际控制是否启用密码保护 设置为FF表示禁用密码保护\n // let responseAuth0 = mfc.readPages(0x29)\n // console.log(\"responseAuth0=\" + JSON.stringify(responseAuth0));\n // mfc.writePage(0x29, [0x04, 0x00, 0x00, 0xFF])\n //js不支持无符号整数,无法传输大于0X7F的值\n mfc.writePage(0x29, [0x04, 0x00, 0x00, 0x7F]);\n mfc.close();\n toast('清除密码成功!');\n return;\n } else {\n toast('Tag不支持MifareUltralight');\n return;\n }\n } catch (e) {\n toast('清除密码失败');\n __f__(\"log\", \"清除密码失败 error=\" + e, \" at utils/ouu-nfc.js:424\");\n }\n },\n getState: function getState(intent) {\n try {\n toast('请勿移开标签 正在获取NFC状态...');\n var MifareUltralight = plus.android.importClass('android.nfc.tech.MifareUltralight');\n var tag = intent.getParcelableExtra(NfcAdapter.EXTRA_TAG);\n var mfc = MifareUltralight.get(tag);\n if (mfc != null) {\n mfc.connect();\n var responseAuth0 = mfc.readPages(0x29);\n __f__(\"log\", \"responseAuth0=\" + JSON.stringify(responseAuth0), \" at utils/ouu-nfc.js:439\");\n if (responseAuth0[3] == 0x00) {\n toast('已设置密码保护');\n } else if (responseAuth0[3] == 0x7F || responseAuth0[3] == 0xFF || responseAuth0[3] == -1) {\n toast('尚未设置密码保护');\n } else {\n toast('NFC状态未知:' + JSON.stringify(responseAuth0));\n }\n mfc.close();\n return;\n } else {\n toast('Tag不支持MifareUltralight');\n return;\n }\n } catch (e) {\n toast('获取NFC状态失败');\n __f__(\"log\", \"获取NFC状态失败 error=\" + e, \" at utils/ouu-nfc.js:457\");\n }\n },\n byteArrayToHexString: function byteArrayToHexString(inarray) {\n // converts byte arrays to string \n var i, j, inn;\n var hex = [\"0\", \"1\", \"2\", \"3\", \"4\", \"5\", \"6\", \"7\", \"8\", \"9\", \"A\", \"B\", \"C\", \"D\", \"E\", \"F\"];\n var out = \"\";\n for (j = 0; j < inarray.length; ++j) {\n inn = inarray[j] & 0xff;\n i = inn >>> 4 & 0x0f;\n out += hex[i];\n i = inn & 0x0f;\n out += hex[i];\n }\n return out;\n },\n writeData: function writeData() {\n if (noNFC) {\n toast('请检查设备是否支持并开启 NFC 功能!');\n return;\n }\n // 监听事件,触发条件\n readyWriteData = true;\n toast('请将NFC标签靠近!');\n },\n readData: function readData() {\n if (noNFC) {\n toast('请检查设备是否支持并开启 NFC 功能!');\n return;\n }\n // 监听事件,触发条件\n readyRead = true;\n toast('请将NFC标签靠近!');\n },\n setPwdData: function setPwdData() {\n if (noNFC) {\n toast('请检查设备是否支持并开启 NFC 功能!');\n S;\n return;\n }\n // 监听事件,触发条件\n readySetPwd = true;\n toast('请将NFC标签靠近!');\n },\n delPwdData: function delPwdData() {\n if (noNFC) {\n toast('请检查设备是否支持并开启 NFC 功能!');\n return;\n }\n // 监听事件,触发条件\n readyDelPwd = true;\n toast('请将NFC标签靠近!');\n },\n getNfcState: function getNfcState() {\n if (noNFC) {\n toast('请检查设备是否支持并开启 NFC 功能!');\n return;\n }\n // 监听事件,触发条件\n readyGetNfcState = true;\n toast('请将NFC标签靠近!');\n },\n writeAndLock: function writeAndLock() {\n if (noNFC) {\n toast('请检查设备是否支持并开启 NFC 功能!');\n return;\n }\n // 监听事件,触发条件\n readyWriteAndLock = true;\n toast('请将NFC标签靠近!');\n },\n // 输入文本改变\n inputChanage: function inputChanage(res) {\n __f__(\"log\", \"正在编辑写入数据...\", res, \" at utils/ouu-nfc.js:530\");\n writeUri = res;\n }\n};\nexports.default = _default;\nfunction toast(content) {\n uni.showToast({\n title: content,\n icon: 'none'\n });\n}\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./node_modules/@dcloudio/vue-cli-plugin-uni/lib/format-log.js */ 34)[\"default\"]))//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInVuaS1hcHA6Ly8vdXRpbHMvb3V1LW5mYy5qcyJdLCJuYW1lcyI6WyJwYWNrYWdlX05kZWZSZWNvcmQiLCJwYWNrYWdlX05kZWZNZXNzYWdlIiwicGFja2FnZV9URUNIX0RJU0NPVkVSRUQiLCJwYWNrYWdlX0ludGVudCIsInBhY2thZ2VfQWN0aXZpdHkiLCJwYWNrYWdlX1BlbmRpbmdJbnRlbnQiLCJwYWNrYWdlX0ludGVudEZpbHRlciIsInBhY2thZ2VfTmZjQWRhcHRlciIsInBhY2thZ2VfTmRlZiIsInBhY2thZ2VfTmRlZkZvcm1hdGFibGUiLCJwYWNrYWdlX1BhcmNlbGFibGUiLCJwYWNrYWdlX1N0cmluZyIsIk5mY0FkYXB0ZXIiLCJOZGVmUmVjb3JkIiwiTmRlZk1lc3NhZ2UiLCJVcmkiLCJyZWFkeVdyaXRlRGF0YSIsInJlYWR5UmVhZCIsInJlYWR5U2V0UHdkIiwicmVhZHlEZWxQd2QiLCJyZWFkeUdldE5mY1N0YXRlIiwicmVhZHlXcml0ZUFuZExvY2siLCJub05GQyIsInRlY2hMaXN0c0FycmF5IiwiVXJpUHJlZml4TWFwIiwid3JpdGVVcmkiLCJyZWFkUmVzdWx0IiwicHdkQnl0ZXMiLCJwd2REZWZhdWx0IiwibGlzdGVuTkZDU3RhdHVzIiwidGhhdCIsIm1haW4iLCJwbHVzIiwiYW5kcm9pZCIsInJ1bnRpbWVNYWluQWN0aXZpdHkiLCJJbnRlbnQiLCJpbXBvcnRDbGFzcyIsIkFjdGl2aXR5IiwiUGVuZGluZ0ludGVudCIsIkludGVudEZpbHRlciIsIm5mY0FkYXB0ZXIiLCJnZXREZWZhdWx0QWRhcHRlciIsInVuaSIsInNob3dUb2FzdCIsInRpdGxlIiwiaWNvbiIsImlzRW5hYmxlZCIsImludGVudCIsImdldENsYXNzIiwiYWRkRmxhZ3MiLCJGTEFHX0FDVElWSVRZX1NJTkdMRV9UT1AiLCJwZW5kaW5nSW50ZW50IiwiZ2V0QWN0aXZpdHkiLCJuZGVmIiwiYWRkRGF0YVR5cGUiLCJpbnRlbnRGaWx0ZXJzQXJyYXkiLCJnbG9iYWxFdmVudCIsImFkZEV2ZW50TGlzdGVuZXIiLCJzZXRUaW1lb3V0IiwibmZjUnVuaW5nIiwiZSIsImRpc2FibGVGb3JlZ3JvdW5kRGlzcGF0Y2giLCJlbmFibGVGb3JlZ3JvdW5kRGlzcGF0Y2giLCJnZXRJbnRlbnQiLCJnZXRBY3Rpb24iLCJ3cml0ZSIsInJlYWQiLCJzZXRQYXNzd29yZCIsImRlbFBhc3N3b3JkIiwiZ2V0U3RhdGUiLCJyZXN1bHQiLCJ0b2FzdCIsInVyaSIsInBhcnNlIiwibWVzc2FnZSIsImNyZWF0ZVVyaSIsIk5kZWYiLCJOZGVmRm9ybWF0YWJsZSIsInRhZyIsImdldFBhcmNlbGFibGVFeHRyYSIsIkVYVFJBX1RBRyIsIk1pZmFyZVVsdHJhbGlnaHQiLCJtZmMiLCJnZXQiLCJjb25uZWN0IiwicmVzcG9uc2VBdXRoMCIsInJlYWRQYWdlcyIsIkpTT04iLCJzdHJpbmdpZnkiLCJjbG9zZSIsInNpemUiLCJ0b0J5dGVBcnJheSIsImxlbmd0aCIsImlzV3JpdGFibGUiLCJnZXRNYXhTaXplIiwid3JpdGVOZGVmTWVzc2FnZSIsImZvcm1hdCIsImJ5dGVzSWQiLCJnZXRCeXRlQXJyYXlFeHRyYSIsIkVYVFJBX0lEIiwibmZjX2lkIiwiYnl0ZUFycmF5VG9IZXhTdHJpbmciLCJyYXdtc2dzIiwiZ2V0UGFyY2VsYWJsZUFycmF5RXh0cmEiLCJyZWNvcmRzIiwiZ2V0UmVjb3JkcyIsInRuZiIsImdldFRuZiIsInJlY29yZFR5cGUiLCJnZXRUeXBlIiwiZ2V0UGF5bG9hZCIsImRhdGEiLCJfX1VVSURfXyIsIlRORl9XRUxMX0tOT1dOIiwidmFsdWUiLCJSVERfVVJJIiwidXJpUHJlZml4Iiwic2hpZnQiLCJuZXdPYmplY3QiLCJpZCIsIiRlbWl0Iiwid3JpdGVQYWdlIiwicmVzcG9uc2UiLCJ0cmFuc2NlaXZlIiwiaW5hcnJheSIsImkiLCJqIiwiaW5uIiwiaGV4Iiwib3V0Iiwid3JpdGVEYXRhIiwicmVhZERhdGEiLCJzZXRQd2REYXRhIiwiUyIsImRlbFB3ZERhdGEiLCJnZXROZmNTdGF0ZSIs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QVUsRUFBRSxzQkFBVztJQUN0QixJQUFJaEgsS0FBSyxFQUFFO01BQ1ZpRCxLQUFLLENBQUMsc0JBQXNCLENBQUM7TUFDN0I7SUFDRDtJQUNBO0lBQ0FwRCxXQUFXLEdBQUcsSUFBSTtJQUNsQm9ELEtBQUssQ0FBQyxZQUFZLENBQUM7RUFDcEIsQ0FBQztFQUNEZ0UsV0FBVyxFQUFFLHVCQUFXO0lBQ3ZCLElBQUlqSCxLQUFLLEVBQUU7TUFDVmlELEtBQUssQ0FBQyxzQkFBc0IsQ0FBQztNQUM3QjtJQUNEO0lBQ0E7SUFDQW5ELGdCQUFnQixHQUFHLElBQUk7SUFDdkJtRCxLQUFLLENBQUMsWUFBWSxDQUFDO0VBQ3BCLENBQUM7RUFDRGlFLFlBQVksRUFBRSx3QkFBVztJQUN4QixJQUFJbEgsS0FBSyxFQUFFO01BQ1ZpRCxLQUFLLENBQUMsc0JBQXNCLENBQUM7TUFDN0I7SUFDRDtJQUNBO0lBQ0FsRCxpQkFBaUIsR0FBRyxJQUFJO0lBQ3hCa0QsS0FBSyxDQUFDLFlBQVksQ0FBQztFQUNwQixDQUFDO0VBQ0Q7RUFDQWtFLFlBQVksRUFBRSxzQkFBU0MsR0FBRyxFQUFFO0lBQzNCLGFBQVksYUFBYSxFQUFFQSxHQUFHO0lBQzlCakgsUUFBUSxHQUFHaUgsR0FBRztFQUNmO0FBQ0QsQ0FBQztBQUFBO0FBRUQsU0FBU25FLEtBQUssQ0FBQ29FLE9BQU8sRUFBRTtFQUN2QmpHLEdBQUcsQ0FBQ0MsU0FBUyxDQUFDO0lBQ2JDLEtBQUssRUFBRStGLE9BQU87SUFDZDlGLElBQUksRUFBRTtFQUNQLENBQUMsQ0FBQztBQUNILEMiLCJmaWxlIjoiNzEuanMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyDljIXot6/lvoRcclxuY29uc3QgcGFja2FnZV9OZGVmUmVjb3JkID0gJ2FuZHJvaWQubmZjLk5kZWZSZWNvcmQnO1xyXG5jb25zdCBwYWNrYWdlX05kZWZNZXNzYWdlID0gJ2FuZHJvaWQubmZjLk5kZWZNZXNzYWdlJztcclxuY29uc3QgcGFja2FnZV9URUNIX0RJU0NPVkVSRUQgPSAnYW5kcm9pZC5uZmMuYWN0aW9uLlRFQ0hfRElTQ09WRVJFRCc7XHJcbmNvbnN0IHBhY2thZ2VfSW50ZW50ID0gJ2FuZHJvaWQuY29udGVudC5JbnRlbnQnO1xyXG5jb25zdCBwYWNrYWdlX0FjdGl2aXR5ID0gJ2FuZHJvaWQuYXBwLkFjdGl2aXR5JztcclxuY29uc3QgcGFja2FnZV9QZW5kaW5nSW50ZW50ID0gJ2FuZHJvaWQuYXBwLlBlbmRpbmdJbnRlbnQnO1xyXG5jb25zdCBwYWNrYWdlX0ludGVudEZpbHRlciA9ICdhbmRyb2lkLmNvbnRlbnQuSW50ZW50RmlsdGVyJztcclxuY29uc3QgcGFja2FnZV9OZmNBZGFwdGVyID0gJ2FuZHJvaWQubmZjLk5mY0FkYXB0ZXInO1xyXG5jb25zdCBwYWNrYWdlX05kZWYgPSAnYW5kcm9pZC5uZmMudGVjaC5OZGVmJztcclxuY29uc3QgcGFja2FnZV9OZGVmRm9ybWF0YWJsZSA9ICdhbmRyb2lkLm5mYy50ZWNoLk5kZWZGb3JtYXRhYmxlJztcclxuY29uc3QgcGFja2FnZV9QYXJjZWxhYmxlID0gJ2FuZHJvaWQub3MuUGFyY2VsYWJsZSc7XHJcbmNvbnN0IHBhY2thZ2VfU3RyaW5nID0gJ2phdmEubGFuZy5TdHJpbmcnO1xyXG5cclxubGV0IE5mY0FkYXB0ZXI7XHJcbmxldCBOZGVmUmVjb3JkO1xyXG5sZXQgTmRlZk1lc3NhZ2U7XHJcbmxldCBVcmk7XHJcbmxldCByZWFkeVdyaXRlRGF0YSA9IGZhbHNlO1xyXG5sZXQgcmVhZHlSZWFkID0gZmFsc2U7XHJcbmxldCByZWFkeVNldFB3ZCA9IGZhbHNlO1xyXG5sZXQgcmVhZHlEZWxQd2QgPSBmYWxzZTtcclxubGV0IHJlYWR5R2V0TmZjU3RhdGUgPSBmYWxzZTtcclxubGV0IHJlYWR5V3JpdGVBbmRMb2NrID0gZmFsc2U7XHJcbmxldCBub05GQyA9IGZhbHNlO1xyXG5sZXQgdGVjaExpc3RzQXJyYXkgPSBbXHJcblx0WydhbmRyb2lkLm5mYy50ZWNoLklzb0RlcCddLFxyXG5cdFsnYW5kcm9pZC5uZmMudGVjaC5OZmNBJ10sXHJcblx0WydhbmRyb2lkLm5mYy50ZWNoLk5mY0InXSxcclxuXHRbJ2FuZHJvaWQubmZjLnRlY2guTmZjRiddLFxyXG5cdFsnYW5kcm9pZC5uZmMudGVjaC5OZmNmJ10sXHJcblx0WydhbmRyb2lkLm5mYy50ZWNoLk5mY1YnXSxcclxuXHRbJ2FuZHJvaWQubmV0LlVyaSddLFxyXG5cdFsnYW5kcm9pZC5uZmMudGVjaC5OZGVmRm9ybWF0YWJsZSddLFxyXG5cdFsnYW5kcm9pZC5uZmMudGVjaC5NaWZhcmVDbGFzc2knXSxcclxuXHRbJ2FuZHJvaWQubmZjLnRlY2guTWlmYXJlVWx0cmFsaWdodCddXHJcbl07XHJcblxyXG5sZXQgVXJpUHJlZml4TWFwID0gW107XHJcblVyaVByZWZpeE1hcFsweDAwXSA9ICcnO1xyXG5VcmlQcmVmaXhNYXBbMHgwMV0gPSAnaHR0cDovL3d3dy4nO1xyXG5VcmlQcmVmaXhNYXBbMHgwMl0gPSAnaHR0cHM6Ly93d3cuJztcclxuVXJpUHJlZml4TWFwWzB4MDNdID0gJ2h0dHA6Ly8nO1xyXG5VcmlQcmVmaXhNYXBbMHgwNF0gPSAnaHR0cHM6Ly8nO1xyXG5VcmlQcmVmaXhNYXBbMHgwNV0gPSAndGVsOic7XHJcblVyaVByZWZpeE1hcFsweDA2XSA9ICdtYWlsdG86JztcclxuVXJpUHJlZml4TWFwWzB4MDddID0gJ2Z0cDovL2Fub255bW91czphbm9ueW1vdXNAJztcclxuVXJpUHJlZml4TWFwWzB4MDhdID0gJ2Z0cDovL2Z0cC4nO1xyXG5VcmlQcmVmaXhNYXBbMHgwOV0gPSAnZnRwczovLyc7XHJcblxyXG5sZXQgd3JpdGVVcmkgPSAnaHR0cDovL3d3dy5iZXN3ZWxsLmNvbSc7IC8vIOimgeWGmeWFpeeahOaVsOaNrlxyXG5sZXQgcmVhZFJlc3VsdCA9ICcnOyAvLyBORkPor7vlj5bliLDnmoTmlbDmja5cclxubGV0IHB3ZEJ5dGVzID0gWzEsIDIsIDMsIDRdOyAvLyDlvoXlhpnlhaXnmoTlr4bnoIFcclxubGV0IHB3ZERlZmF1bHQgPSBbMHhGRiwgMHhGRiwgMHhGRiwgMHhGRl0gLy8g5riF6Zmk5a+G56CB5ZCO6K6+572u55qE6buY6K6k5YC8XHJcblxyXG5leHBvcnQgZGVmYXVsdCB7XHJcblx0bGlzdGVuTkZDU3RhdHVzOiBmdW5jdGlvbigpIHtcclxuXHRcdGxldCB0aGF0ID0gdGhpcztcclxuXHRcdHRyeSB7XHJcblx0XHRcdGxldCBtYWluID0gcGx1cy5hbmRyb2lkLnJ1bnRpbWVNYWluQWN0aXZpdHkoKTtcclxuXHRcdFx0bGV0IEludGVudCA9IHBsdXMuYW5kcm9pZC5pbXBvcnRDbGFzcygnYW5kcm9pZC5jb250ZW50LkludGVudCcpO1xyXG5cdFx0XHRsZXQgQWN0aXZpdHkgPSBwbHVzLmFuZHJvaWQuaW1wb3J0Q2xhc3MoJ2FuZHJvaWQuYXBwLkFjdGl2aXR5Jyk7XHJcblx0XHRcdGxldCBQZW5kaW5nSW50ZW50ID0gcGx1cy5hbmRyb2lkLmltcG9ydENsYXNzKCdhbmRyb2lkLmFwcC5QZW5kaW5nSW50ZW50Jyk7XHJcblx0XHRcdGxldCBJbnRlbnRGaWx0ZXIgPSBwbHVzLmFuZHJvaWQuaW1wb3J0Q2xhc3MoJ2FuZHJvaWQuY29udGVudC5JbnRlbnRGaWx0ZXInKTtcclxuXHRcdFx0VXJpID0gcGx1cy5hbmRyb2lkLmltcG9ydENsYXNzKCdhbmRyb2lkLm5ldC5VcmknKTtcclxuXHRcdFx0TmZjQWRhcHRlciA9IHBsdXMuYW5kcm9pZC5pbXBvcnRDbGFzcygnYW5kcm9pZC5uZmMuTmZjQWRhcHRlcicpO1xyXG5cdFx0XHRsZXQgbmZjQWRhcHRlciA9IE5mY0FkYXB0ZXIuZ2V0RGVmYXVsdEFkYXB0ZXIobWFpbik7XHJcblxyXG5cdFx0XHRpZiAobmZjQWRhcHRlciA9PSBudWxsKSB7XHJcblx0XHRcdFx0dW5pLnNob3dUb2FzdCh7XHJcblx0XHRcdFx0XHR0aXRsZTogJ+iuvuWkh+S4jeaUr+aMgU5GQ++8gScsXHJcblx0XHRcdFx0XHRpY29uOiAnbm9uZSdcclxuXHRcdFx0XHR9KVxyXG5cdFx0XHRcdG5vTkZDID0gdHJ1ZTtcclxuXHRcdFx0XHRyZXR1cm47XHJcblx0XHRcdH1cclxuXHJcblx0XHRcdGlmICghbmZjQWRhcHRlci5pc0VuYWJsZWQoKSkge1xyXG5cdFx0XHRcdHVuaS5zaG93VG9hc3Qoe1xyXG5cdFx0XHRcdFx0dGl0bGU6ICfor7flnKjns7vnu5/orr7nva7kuK3lhYjlkK/nlKhORkPlip/og73vvIEnLFxyXG5cdFx0XHRcdFx0aWNvbjogJ25vbmUnXHJcblx0XHRcdFx0fSk7XHJcblx0XHRcdFx0bm9ORkMgPSB0cnVlO1xyXG5cdFx0XHRcdHJldHVybjtcclxuXHRcdFx0fSBlbHNlIHtcclxuXHRcdFx0XHRub05GQyA9IGZhbHNlO1xyXG5cdFx0XHR9XHJcblxyXG5cdFx0XHRsZXQgaW50ZW50ID0gbmV3IEludGVudChtYWluLCBtYWluLmdldENsYXNzKCkpO1xyXG5cdFx0XHRpbnRlbnQuYWRkRmxhZ3MoSW50ZW50LkZMQUdfQUNUSVZJVFlfU0lOR0xFX1RPUCk7XHJcblx0XHRcdGxldCBwZW5kaW5nSW50ZW50ID0gUGVuZGluZ0ludGVudC5nZXRBY3Rpdml0eShtYWluLCAwLCBpbnRlbnQsIDApO1xyXG5cdFx0XHRsZXQgbmRlZiA9IG5ldyBJbnRlbnRGaWx0ZXIoXCJhbmRyb2lkLm5mYy5hY3Rpb24uVEVDSF9ESVNDT1ZFUkVEXCIpO1xyXG5cdFx0XHRuZGVmLmFkZERhdGFUeXBlKFwiKi8qXCIpO1xyXG5cdFx0XHRsZXQgaW50ZW50RmlsdGVyc0FycmF5ID0gW25kZWZdO1xyXG5cclxuXHRcdFx0cGx1cy5nbG9iYWxFdmVudC5hZGRFdmVudExpc3RlbmVyKCduZXdpbnRlbnQnLCBmdW5jdGlvbigpIHtcclxuXHRcdFx0XHRjb25zb2xlLmxvZygnbmV3aW50ZW50IHJ1bm5pbmcnKTtcclxuXHRcdFx0XHQvLyDnm5HlkKwgTkZDXHJcblx0XHRcdFx0c2V0VGltZW91dCgoKT0+e1xyXG5cdFx0XHRcdFx0dGhhdC5uZmNSdW5pbmcoKVxyXG5cdFx0XHRcdH0sIDEwMCk7XHJcblx0XHRcdH0pO1xyXG5cdFx0XHRwbHVzLmdsb2JhbEV2ZW50LmFkZEV2ZW50TGlzdGVuZXIoJ3BhdXNlJywgZnVuY3Rpb24oZSkge1xyXG5cdFx0XHRcdGNvbnNvbGUubG9nKCdwYXVzZSBydW5uaW5nJyk7XHJcblx0XHRcdFx0aWYgKG5mY0FkYXB0ZXIpIHtcclxuXHRcdFx0XHRcdC8v5YWz6Zet5YmN5Y+w6LCD5bqm57O757ufXHJcblx0XHRcdFx0XHQvL+aBouWkjem7mOiupOeKtuaAgVxyXG5cdFx0XHRcdFx0bmZjQWRhcHRlci5kaXNhYmxlRm9yZWdyb3VuZERpc3BhdGNoKG1haW4pO1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0fSk7XHJcblx0XHRcdHBsdXMuZ2xvYmFsRXZlbnQuYWRkRXZlbnRMaXN0ZW5lcigncmVzdW1lJywgZnVuY3Rpb24oZSkge1xyXG5cdFx0XHRcdGNvbnNvbGUubG9nKCdyZXN1bWUgcnVubmluZycpO1xyXG5cdFx0XHRcdGlmIChuZmNBZGFwdGVyKSB7XHJcblx0XHRcdFx0XHQvL+W8gOWQr+WJjeWPsOiwg+W6puezu+e7n1xyXG5cdFx0XHRcdFx0bmZjQWRhcHRlci5lbmFibGVGb3JlZ3JvdW5kRGlzcGF0Y2gobWFpbiwgcGVuZGluZ0ludGVudCwgaW50ZW50RmlsdGVyc0FycmF5LFxyXG5cdFx0XHRcdFx0XHR0ZWNoTGlzdHNBcnJheSk7XHJcblx0XHRcdFx0fVxyXG5cdFx0XHR9KTtcclxuXHRcdFx0bmZjQWRhcHRlci5lbmFibGVGb3JlZ3JvdW5kRGlzcGF0Y2gobWFpbiwgcGVuZGluZ0ludGVudCwgaW50ZW50RmlsdGVyc0FycmF5LCB0ZWNoTGlzdHNBcnJheSk7XHJcblx0XHR9IGNhdGNoIChlKSB7XHJcblx0XHRcdGNvbnNvbGUuZXJyb3IoZSk7XHJcblx0XHR9XHJcblx0fSxcclxuXHRuZmNSdW5pbmc6IGZ1bmN0aW9uKCkge1xyXG5cdFx0TmRlZlJlY29yZCA9IHBsdXMuYW5kcm9pZC5pbXBvcnRDbGFzcyhcImFuZHJvaWQubmZjLk5kZWZSZWNvcmRcIik7XHJcblx0XHROZGVmTWVzc2FnZSA9IHBsdXMuYW5kcm9pZC5pbXBvcnRDbGFzcyhcImFuZHJvaWQubmZjLk5kZWZNZXNzYWdlXCIpO1xyXG5cdFx0bGV0IG1haW4gPSBwbHVzLmFuZHJvaWQucnVudGltZU1haW5BY3Rpdml0eSgpO1xyXG5cdFx0bGV0IGludGVudCA9IG1haW4uZ2V0SW50ZW50KCk7XHJcblx0XHQvLyBsZXQgaW50ZW50ID0gcGx1cy5hbmRyb2lkLmludm9rZShtYWluLCAnZ2V0SW50ZW50Jyk7XHJcblx0XHRsZXQgdGhhdCA9IHRoaXM7XHJcblxyXG5cdFx0Y29uc29sZS5sb2coXCJhY3Rpb24gdHlwZTpcIiArIGludGVudC5nZXRBY3Rpb24oKSk7XHJcblxyXG5cdFx0aWYgKHBhY2thZ2VfVEVDSF9ESVNDT1ZFUkVEID09IGludGVudC5nZXRBY3Rpb24oKSkge1xyXG5cdFx0XHRpZiAocmVhZHlXcml0ZURhdGEpIHtcclxuXHRcdFx0XHR0aGF0LndyaXRlKGludGVudCk7XHJcblx0XHRcdFx0cmVhZHlXcml0ZURhdGEgPSBmYWxzZTtcclxuXHRcdFx0fSBlbHNlIGlmIChyZWFkeVJlYWQpIHtcclxuXHRcdFx0XHR0aGF0LnJlYWQoaW50ZW50KTtcclxuXHRcdFx0XHRyZWFkeVJlYWQgPSBmYWxzZTtcclxuXHRcdFx0fSBlbHNlIGlmIChyZWFkeVNldFB3ZCkge1xyXG5cdFx0XHRcdHRoYXQuc2V0UGFzc3dvcmQoaW50ZW50KTtcclxuXHRcdFx0XHRyZWFkeVNldFB3ZCA9IGZhbHNlO1xyXG5cdFx0XHR9IGVsc2UgaWYgKHJlYWR5RGVsUHdkKSB7XHJcblx0XHRcdFx0dGhhdC5kZWxQYXNzd29yZChpbnRlbnQpO1xyXG5cdFx0XHRcdHJlYWR5RGVsUHdkID0gZmFsc2U7XHJcblx0XHRcdH0gZWxzZSBpZiAocmVhZHlHZXROZmNTdGF0ZSkge1xyXG5cdFx0XHRcdHRoYXQuZ2V0U3RhdGUoaW50ZW50KTtcclxuXHRcdFx0XHRyZWFkeUdldE5mY1N0YXRlID0gZmFsc2U7XHJcblx0XHRcdH0gZWxzZSBpZiAocmVhZHlXcml0ZUFuZExvY2spIHtcclxuXHRcdFx0XHRsZXQgcmVzdWx0ID0gdGhhdC53cml0ZShpbnRlbnQpO1xyXG5cdFx0XHRcdGlmIChyZXN1bHQgPT0gOTk5KSB7IC8vIOW3suiuvue9ruWvhueggeS/neaKpFxyXG5cdFx0XHRcdFx0cmVhZHlXcml0ZUFuZExvY2sgPSBmYWxzZTtcclxuXHRcdFx0XHRcdHJldHVyblxyXG5cdFx0XHRcdH1cclxuXHRcdFx0XHRcclxuXHRcdFx0XHRzZXRUaW1lb3V0KCgpPT57XHJcblx0XHRcdFx0XHR0aGF0LnNldFBhc3N3b3JkKGludGVudClcclxuXHRcdFx0XHR9LCAxMDApO1xyXG5cdFx0XHRcdHJlYWR5V3JpdGVBbmRMb2NrID0gZmFsc2U7XHJcblx0XHRcdH0gZWxzZSB7XHJcblx0XHRcdFx0dGhhdC5yZWFkKGludGVudCk7XHJcblx0XHRcdFx0cmVhZHlSZWFkID0gZmFsc2U7XHJcblx0XHRcdH1cclxuXHRcdH1cclxuXHR9LFxyXG5cdHdyaXRlKGludGVudCkge1xyXG5cdFx0dHJ5IHtcclxuXHRcdFx0dG9hc3QoJ+ivt+WLv+enu+W8gOagh+etviDmraPlnKjlhpnlhaUuLi4nKTtcclxuXHRcdFx0Y29uc29sZS5sb2coXCJORkPlhpnlhaXlhoXlrrkgd3JpdGVVcmkgPSBcIiArIHdyaXRlVXJpKTtcclxuXHRcdFx0Ly8gbGV0IHRleHRCeXRlcyA9IHBsdXMuYW5kcm9pZC5pbnZva2Uod3JpdGVVcmksIFwiZ2V0Qnl0ZXNcIik7XHJcblx0XHRcdGxldCB1cmkgPSBVcmkucGFyc2Uod3JpdGVVcmkpXHJcblx0XHRcdGxldCBtZXNzYWdlID0gbmV3IE5kZWZNZXNzYWdlKFtuZXcgTmRlZlJlY29yZC5jcmVhdGVVcmkodXJpKV0pO1xyXG5cdFx0XHRjb25zb2xlLmxvZyhcIj09PT0gbWVzc2FnZSA9PT0+XCIsIG1lc3NhZ2UpXHJcblx0XHRcdGxldCBOZGVmID0gcGx1cy5hbmRyb2lkLmltcG9ydENsYXNzKCdhbmRyb2lkLm5mYy50ZWNoLk5kZWYnKTtcclxuXHRcdFx0bGV0IE5kZWZGb3JtYXRhYmxlID0gcGx1cy5hbmRyb2lkLmltcG9ydENsYXNzKCdhbmRyb2lkLm5mYy50ZWNoLk5kZWZGb3JtYXRhYmxlJyk7XHJcblx0XHRcdGxldCB0YWcgPSBpbnRlbnQuZ2V0UGFyY2VsYWJsZUV4dHJhKE5mY0FkYXB0ZXIuRVhUUkFfVEFHKTtcclxuXHRcdFx0XHJcblx0XHRcdGxldCBNaWZhcmVVbHRyYWxpZ2h0ID0gcGx1cy5hbmRyb2lkLmltcG9ydENsYXNzKCdhbmRyb2lkLm5mYy50ZWNoLk1pZmFyZVVsdHJhbGlnaHQnKTtcclxuXHRcdFx0bGV0IG1mYyA9IE1pZmFyZVVsdHJhbGlnaHQuZ2V0KHRhZyk7XHJcblx0XHRcdFxyXG5cdFx0XHRpZiAobWZjICE9IG51bGwpIHtcclxuXHRcdFx0XHRtZmMuY29ubmVjdCgpO1xyXG5cdFx0XHRcclxuXHRcdFx0XHRsZXQgcmVzcG9uc2VBdXRoMCA9IG1mYy5yZWFkUGFnZXMoMHgyOSlcclxuXHRcdFx0XHRjb25zb2xlLmxvZyhcInJlc3BvbnNlQXV0aDA9XCIgKyBKU09OLnN0cmluZ2lmeShyZXNwb25zZUF1dGgwKSk7XHJcblx0XHRcdFx0XHJcblx0XHRcdFx0aWYgKHJlc3BvbnNlQXV0aDBbM10gPT0gMHgwMCkge1xyXG5cdFx0XHRcdFx0dG9hc3QoJ+W3suiuvue9ruWvhueggeS/neaKpO+8jOaXoOazleWGmeWFpeaVsOaNricpO1xyXG5cdFx0XHRcdFx0cmV0dXJuIDk5OTtcclxuXHRcdFx0XHR9XHJcblx0XHRcdFx0XHJcblx0XHRcdFx0bWZjLmNsb3NlKCk7XHJcblx0XHRcdH1cclxuXHRcdFx0XHJcblx0XHRcdGxldCBuZGVmID0gTmRlZi5nZXQodGFnKTtcclxuXHRcdFx0aWYgKG5kZWYgIT0gbnVsbCkge1xyXG5cdFx0XHRcdC8vIOW+heWGmeWFpeeahOaVsOaNrumVv+W6plxyXG5cdFx0XHRcdGxldCBzaXplID0gbWVzc2FnZS50b0J5dGVBcnJheSgpLmxlbmd0aDtcclxuXHRcdFx0XHRuZGVmLmNvbm5lY3QoKTtcclxuXHRcdFx0XHRcclxuXHRcdFx0XHRpZiAoIW5kZWYuaXNXcml0YWJsZSgpKSB7XHJcblx0XHRcdFx0XHRuZGVmLmNsb3NlKCk7XHJcblx0XHRcdFx0XHR0b2FzdCgndGFn5LiN5YWB6K645YaZ5YWl77yBJyk7XHJcblx0XHRcdFx0XHRyZXR1cm47XHJcblx0XHRcdFx0fVxyXG5cdFx0XHRcdGlmIChuZGVmLmdldE1heFNpemUoKSA8IHNpemUpIHtcclxuXHRcdFx0XHRcdG5kZWYuY2xvc2UoKTtcclxuXHRcdFx0XHRcdHRvYXN0KCfmlofku7blpKflsI/otoXlh7rlrrnph4/vvIEnKTtcclxuXHRcdFx0XHRcdHJldHVybjtcclxuXHRcdFx0XHR9XHJcblx0XHRcdFx0bmRlZi53cml0ZU5kZWZNZXNzYWdlKG1lc3NhZ2UpO1xyXG5cdFx0XHRcdG5kZWYuY2xvc2UoKTtcclxuXHRcdFx0XHR0b2FzdCgn5YaZ5YWl5pWw5o2u5oiQ5Yqf77yBJyk7XHJcblx0XHRcdFx0cmV0dXJuO1xyXG5cdFx0XHR9IGVsc2Uge1xyXG5cdFx0XHRcdGxldCBmb3JtYXQgPSBOZGVmRm9ybWF0YWJsZS5nZXQodGFnKTtcclxuXHRcdFx0XHRpZiAoZm9ybWF0ICE9IG51bGwpIHtcclxuXHRcdFx0XHRcdHRyeSB7XHJcblx0XHRcdFx0XHRcdGZvcm1hdC5jb25uZWN0KCk7XHJcblx0XHRcdFx0XHRcdGZvcm1hdC5mb3JtYXQobWVzc2FnZSk7XHJcblx0XHRcdFx0XHRcdGZvcm1hdC5jbG9zZSgpO1xyXG5cdFx0XHRcdFx0XHR0b2FzdCgn5qC85byP5YyWdGFn5bm25LiU5YaZ5YWlbWVzc2FnZScpO1xyXG5cdFx0XHRcdFx0XHRyZXR1cm47XHJcblx0XHRcdFx0XHR9IGNhdGNoIChlKSB7XHJcblx0XHRcdFx0XHRcdHRvYXN0KCfmoLzlvI/ljJZ0YWflpLHotKUuJyk7XHJcblx0XHRcdFx0XHRcdHJldHVybjtcclxuXHRcdFx0XHRcdH1cclxuXHRcdFx0XHR9IGVsc2Uge1xyXG5cdFx0XHRcdFx0dG9hc3QoJ1RhZ+S4jeaUr+aMgU5ERUYnKTtcclxuXHRcdFx0XHRcdHJldHVybjtcclxuXHRcdFx0XHR9XHJcblx0XHRcdH1cclxuXHRcdH0gY2F0Y2ggKGUpIHtcclxuXHRcdFx0dG9hc3QoJ+WGmeWFpeWksei0pScpO1xyXG5cdFx0XHRjb25zb2xlLmxvZyhcImVycm9yPVwiICsgZSk7XHJcblx0XHR9XHJcblxyXG5cdH0sXHJcblx0cmVhZChpbnRlbnQpIHtcclxuXHRcdHRvYXN0KCfor7fli7/np7vlvIDmoIfnrb7mraPlnKjor7vlj5bmlbDmja4nKTtcclxuXHRcdGxldCB0aGF0ID0gdGhpcztcclxuXHRcdC8vIE5GQyBpZFxyXG5cdFx0bGV0IGJ5dGVzSWQgPSBpbnRlbnQuZ2V0Qnl0ZUFycmF5RXh0cmEoTmZjQWRhcHRlci5FWFRSQV9JRCk7XHJcblx0XHRsZXQgbmZjX2lkID0gdGhhdC5ieXRlQXJyYXlUb0hleFN0cmluZyhieXRlc0lkKTtcclxuXHRcdC8vIGNvbnNvbGUubG9nKCduZmNfaWQ6ICcgKyBuZmNfaWQpO1xyXG5cdFx0Ly8gbGV0IFBhcmNlbGFibGUgPSBwbHVzLmFuZHJvaWQuaW1wb3J0Q2xhc3MoXCJhbmRyb2lkLm9zLlBhcmNlbGFibGVcIik7XHJcblxyXG5cdFx0Ly8gdG1wIGFkZFxyXG5cdFx0Ly8gbGV0IFRhZyA9IHBsdXMuYW5kcm9pZC5pbXBvcnRDbGFzcygnYW5kcm9pZC5uZmMuVGFnJyk7XHJcblx0XHQvLyBsZXQgTmRlZiA9IHBsdXMuYW5kcm9pZC5pbXBvcnRDbGFzcygnYW5kcm9pZC5uZmMudGVjaC5OZGVmJyk7XHJcblx0XHQvLyBsZXQgdGFnID0gaW50ZW50LmdldFBhcmNlbGFibGVFeHRyYShOZmNBZGFwdGVyLkVYVFJBX1RBRyk7XHJcblx0XHQvLyBsZXQgbmRlZiA9IE5kZWYuZ2V0KHRhZyk7XHJcblx0XHQvLyBsZXQgbmZjX3R5cGUgPSB0aGF0LmJ5dGVBcnJheVRvSGV4U3RyaW5nKG5kZWYuZ2V0VHlwZSgpKTtcclxuXHRcdC8vIGNvbnNvbGUubG9nKCduZmNfdHlwZe+8mlwiJyArIG5mY190eXBlICsgJ1wiJylcclxuXHJcblx0XHRsZXQgcmF3bXNncyA9IGludGVudC5nZXRQYXJjZWxhYmxlQXJyYXlFeHRyYShcImFuZHJvaWQubmZjLmV4dHJhLk5ERUZfTUVTU0FHRVNcIik7XHJcblx0XHQvLyBsZXQgcmF3bXNncyA9IHBsdXMuYW5kcm9pZC5pbnZva2UoaW50ZW50LCAnZ2V0UGFyY2VsYWJsZUFycmF5RXh0cmEnLCAnYW5kcm9pZC5uZmMuZXh0cmEuTkRFRl9NRVNTQUdFUycpO1xyXG5cdFx0Ly8gbGV0IHJhd21zZ3MgPSBpbnRlbnQuZ2V0UGFyY2VsYWJsZUFycmF5RXh0cmEoKTtcclxuXHJcblx0XHRpZiAocmF3bXNncyAhPSBudWxsICYmIHJhd21zZ3MubGVuZ3RoID4gMCkge1xyXG5cdFx0XHQvLyBjb25zb2xlLmxvZygncmF3bXNnc++8mlwiJyArIEpTT04uc3RyaW5naWZ5KHJhd21zZ3MpICsgJ1wiJylcclxuXHRcdFx0bGV0IHJlY29yZHMgPSByYXdtc2dzWzBdLmdldFJlY29yZHMoKTtcclxuXHRcdFx0Ly8gbGV0IHJlY29yZHMgPSBwbHVzLmFuZHJvaWQuaW52b2tlKHJhd21zZ3NbMF0sICdnZXRSZWNvcmRzJyk7XHJcblx0XHRcdGxldCB0bmYgPSByZWNvcmRzWzBdLmdldFRuZigpO1xyXG5cdFx0XHQvLyBsZXQgdG5mID0gcGx1cy5hbmRyb2lkLmludm9rZShyZWNvcmRzWzBdLCAnZ2V0VG5mJyk7XHJcblx0XHRcdC8vIGNvbnNvbGUubG9nKCd0bmYgPSAnICsgSlNPTi5zdHJpbmdpZnkodG5mKSlcclxuXHRcdFx0Ly8gY29uc29sZS5sb2coJ1RORl9XRUxMX0tOT1dOID0gJyArIEpTT04uc3RyaW5naWZ5KE5kZWZSZWNvcmQuVE5GX1dFTExfS05PV04pKVxyXG5cdFx0XHQvLyBjb25zb2xlLmxvZygnVE5GX0FCU09MVVRFX1VSSSA9ICcgKyBKU09OLnN0cmluZ2lmeShOZGVmUmVjb3JkLlRORl9BQlNPTFVURV9VUkkpKVxyXG5cclxuXHRcdFx0bGV0IHJlY29yZFR5cGUgPSByZWNvcmRzWzBdLmdldFR5cGUoKTtcclxuXHRcdFx0Ly8gY29uc29sZS5sb2coJ3JlY29yZFR5cGUgPSAnICsgSlNPTi5zdHJpbmdpZnkocmVjb3JkVHlwZSkpXHJcblx0XHRcdC8vIGNvbnNvbGUubG9nKCdSVERfVVJJID0gJyArIEpTT04uc3RyaW5naWZ5KE5kZWZSZWNvcmQuUlREX1VSSSkpXHJcblxyXG5cdFx0XHRsZXQgcmVzdWx0ID0gcmVjb3Jkc1swXS5nZXRQYXlsb2FkKCk7XHJcblx0XHRcdGxldCBkYXRhID0gJydcclxuXHJcblx0XHRcdGlmICh0bmYuX19VVUlEX18gPT0gTmRlZlJlY29yZC5UTkZfV0VMTF9LTk9XTi52YWx1ZSkge1xyXG5cdFx0XHRcdGNvbnNvbGUubG9nKCd0bmYgPT0gVE5GX1dFTExfS05PV04nKVxyXG5cdFx0XHRcdGlmIChyZWNvcmRUeXBlID09IE5kZWZSZWNvcmQuUlREX1VSSSkgeyAvLyBVUkkgYmFzZWQgb24gcGF5bG9hZFxyXG5cdFx0XHRcdFx0Ly8g5ZyoVVJJIFJlY29yZCBQYXlsb2Fk5Lit77yM56ys5LiA5Liq5a2X6IqC5oyH5piOVVJJ55qESUTnoIHvvIzlr7nlupQgVXJpUHJlZml4TWFwXHJcblx0XHRcdFx0XHRjb25zb2xlLmxvZygncmVjb3JkVHlwZSA9PSBOZGVmUmVjb3JkLlJURF9VUkknKVxyXG5cdFx0XHRcdFx0Ly8gY29uc29sZS5sb2coJ3Jlc3VsdFswXe+8mlwiJyArIHJlc3VsdFswXSArICdcIicpXHJcblxyXG5cdFx0XHRcdFx0bGV0IHVyaVByZWZpeCA9IFVyaVByZWZpeE1hcFtyZXN1bHRbMF1dXHJcblx0XHRcdFx0XHRjb25zb2xlLmxvZygndXJpUHJlZml477yaXCInICsgdXJpUHJlZml4ICsgJ1wiJylcclxuXHRcdFx0XHRcdHJlc3VsdC5zaGlmdCgpIC8vIOWOu+mZpFVSSeeahElE56CBXHJcblxyXG5cdFx0XHRcdFx0ZGF0YSA9IHBsdXMuYW5kcm9pZC5uZXdPYmplY3QoXCJqYXZhLmxhbmcuU3RyaW5nXCIsIHJlc3VsdCk7XHJcblx0XHRcdFx0XHRkYXRhID0gdXJpUHJlZml4ICsgZGF0YVxyXG5cdFx0XHRcdH1cclxuXHRcdFx0XHQvLyB9IGVsc2UgaWYgKHRuZi5fX1VVSURfXyA9PSBOZGVmUmVjb3JkLlRORl9BQlNPTFVURV9VUkkudmFsdWUpIHtcclxuXHRcdFx0XHQvLyBcdGNvbnNvbGUubG9nKCd0bmYgPT0gVE5GX0FCU09MVVRFX1VSSScpXHJcblx0XHRcdH0gZWxzZSB7XHJcblx0XHRcdFx0Y29uc29sZS5sb2coJ3RuZu+8mlwiJyArIHRuZiArICdcIicpXHJcblx0XHRcdFx0ZGF0YSA9IHBsdXMuYW5kcm9pZC5uZXdPYmplY3QoXCJqYXZhLmxhbmcuU3RyaW5nXCIsIHJlc3VsdCk7XHJcblx0XHRcdH1cclxuXHJcblx0XHRcdC8vIGNvbnNvbGUubG9nKCdyZXN1bHTvvJpcIicgKyByZXN1bHQgKyAnXCInKVxyXG5cdFx0XHQvLyBjb25zb2xlLmxvZygnTkZDIOaVsOaNru+8mlwiJyArIGRhdGEgKyAnXCInKVxyXG5cdFx0XHQvLyB0b2FzdCgnTkZDIOaVsOaNru+8micgKyBkYXRhKTtcclxuXHRcdFx0Ly8gcGx1cy5ydW50aW1lLm9wZW5VUkwoZGF0YSwgZnVuY3Rpb24ocmVzKSB7ICBcclxuXHRcdFx0Ly8gXHRjb25zb2xlLmxvZyhcIuaJk+W8gOa1j+iniOWZqOi3r+W+hOWksei0pe+8gS0tLS1cIiwgcmVzKTsgIFxyXG5cdFx0XHQvLyB9KTsgIFxyXG5cdFx0XHQvLyByZXR1cm4gZGF0YTtcclxuXHRcdFx0cmVhZFJlc3VsdCA9IHtcclxuXHRcdFx0XHRpZDogbmZjX2lkLFxyXG5cdFx0XHRcdGRhdGE6IGRhdGFcclxuXHRcdFx0fTtcclxuXHRcdH0gZWxzZSB7XHJcblx0XHRcdC8vIHRvYXN0KCfmsqHmnInor7vlj5bliLDmlbDmja4nKTtcclxuXHRcdFx0cmVhZFJlc3VsdCA9IHtcclxuXHRcdFx0XHRpZDogbmZjX2lkLFxyXG5cdFx0XHRcdGRhdGE6ICcnXHJcblx0XHRcdH07XHJcblx0XHR9XHJcblx0XHRjb25zb2xlLmxvZygnTkZDIOaVsOaNru+8micgKyBKU09OLnN0cmluZ2lmeShyZWFkUmVzdWx0KSk7XHJcblx0XHR1bmkuJGVtaXQoJ05mY1JlYWQnLCByZWFkUmVzdWx0KVxyXG5cdH0sXHJcblx0c2V0UGFzc3dvcmQoaW50ZW50KSB7XHJcblx0XHR0cnkge1xyXG5cdFx0XHR0b2FzdCgn6K+35Yu/56e75byA5qCH562+IOato+WcqOiuvue9ruWvhueggS4uLicpO1xyXG5cclxuXHRcdFx0bGV0IE1pZmFyZVVsdHJhbGlnaHQgPSBwbHVzLmFuZHJvaWQuaW1wb3J0Q2xhc3MoJ2FuZHJvaWQubmZjLnRlY2guTWlmYXJlVWx0cmFsaWdodCcpO1xyXG5cdFx0XHRsZXQgdGFnID0gaW50ZW50LmdldFBhcmNlbGFibGVFeHRyYShOZmNBZGFwdGVyLkVYVFJBX1RBRyk7XHJcblx0XHRcdGxldCBtZmMgPSBNaWZhcmVVbHRyYWxpZ2h0LmdldCh0YWcpO1xyXG5cclxuXHRcdFx0aWYgKG1mYyAhPSBudWxsKSB7XHJcblx0XHRcdFx0bWZjLmNvbm5lY3QoKTtcclxuXHJcblx0XHRcdFx0Ly8gbGV0IHJlc3BvbnNlID0gcGx1cy5hbmRyb2lkLmludm9rZShtZmMsICd0cmFuc2NlaXZlJywgWzB4MUIsIHB3ZERlZmF1bHRbMF0sIHB3ZERlZmF1bHRbMV0sIHB3ZERlZmF1bHRbMl0sIHB3ZERlZmF1bHRbM11dKVxyXG5cdFx0XHRcdC8vIC8vIGxldCByZXNwb25zZSA9IG1mYy50cmFuc2NlaXZlKFsweDFCLCBwd2REZWZhdWx0WzBdLCBwd2REZWZhdWx0WzFdLCBwd2REZWZhdWx0WzJdLCBwd2REZWZhdWx0WzNdXSlcclxuXHRcdFx0XHQvLyBjb25zb2xlLmxvZyhcIuivoumXrueZu+W9lSByZXNwb25zZT1cIiArIEpTT04uc3RyaW5naWZ5KHJlc3BvbnNlKSk7XHJcblxyXG5cdFx0XHRcdC8vcGFja+e9ruS4uum7mOiupFxyXG5cdFx0XHRcdG1mYy53cml0ZVBhZ2UoMHgyQywgWzB4MDAsIDB4MDAsIDB4MDAsIDB4MDBdKVxyXG5cclxuXHRcdFx0XHQvLyBzZXQgUFdEOiAg6K6+572u5a+G56CB5Li655So5oi36K6+572u55qE5a+G56CBXHJcblx0XHRcdFx0bWZjLndyaXRlUGFnZSgweDJCLCBwd2RCeXRlcylcclxuXHJcblx0XHRcdFx0Ly8g6K6+572uQXV0aDAgIGF1dGgw5a6e6ZmF5o6n5Yi25piv5ZCm5ZCv55So5a+G56CB5L+d5oqkIOiuvue9ruS4ujAw6KGo56S65LuO56ysMOmhteW8gOWni+aPkOS+m+S/neaKpFxyXG5cdFx0XHRcdC8vIGxldCByZXNwb25zZUF1dGgwID0gbWZjLnJlYWRQYWdlcygweDI5KVxyXG5cdFx0XHRcdC8vIGNvbnNvbGUubG9nKFwicmVzcG9uc2VBdXRoMD1cIiArIEpTT04uc3RyaW5naWZ5KHJlc3BvbnNlQXV0aDApKTtcclxuXHRcdFx0XHRtZmMud3JpdGVQYWdlKDB4MjksIFsweDA0LCAweDAwLCAweDAwLCAweDAwXSlcclxuXHJcblx0XHRcdFx0bWZjLmNsb3NlKCk7XHJcblx0XHRcdFx0dG9hc3QoJ+iuvue9ruWvhueggeaIkOWKn++8gScpO1xyXG5cdFx0XHRcdHJldHVybjtcclxuXHRcdFx0fSBlbHNlIHtcclxuXHRcdFx0XHR0b2FzdCgnVGFn5LiN5pSv5oyBTWlmYXJlVWx0cmFsaWdodCcpO1xyXG5cdFx0XHRcdHJldHVybjtcclxuXHRcdFx0fVxyXG5cdFx0fSBjYXRjaCAoZSkge1xyXG5cdFx0XHR0b2FzdCgn6K6+572u5a+G56CB5aSx6LSlJyk7XHJcblx0XHRcdGNvbnNvbGUubG9nKFwi6K6+572u5a+G56CB5aSx6LSlIGVycm9yPVwiICsgZSk7XHJcblx0XHR9XHJcblx0fSxcclxuXHRkZWxQYXNzd29yZChpbnRlbnQpIHtcclxuXHRcdHRyeSB7XHJcblx0XHRcdHRvYXN0KCfor7fli7/np7vlvIDmoIfnrb4g5q2j5Zyo5riF6Zmk5a+G56CBLi4uJyk7XHJcblxyXG5cdFx0XHRsZXQgTWlmYXJlVWx0cmFsaWdodCA9IHBsdXMuYW5kcm9pZC5pbXBvcnRDbGFzcygnYW5kcm9pZC5uZmMudGVjaC5NaWZhcmVVbHRyYWxpZ2h0Jyk7XHJcblx0XHRcdGxldCB0YWcgPSBpbnRlbnQuZ2V0UGFyY2VsYWJsZUV4dHJhKE5mY0FkYXB0ZXIuRVhUUkFfVEFHKTtcclxuXHRcdFx0bGV0IG1mYyA9IE1pZmFyZVVsdHJhbGlnaHQuZ2V0KHRhZyk7XHJcblx0XHRcdC8vIGxldCBtZmMyID0gcGx1cy5hbmRyb2lkLmludm9rZShNaWZhcmVVbHRyYWxpZ2h0LCAnZ2V0JywgdGFnKSAvLyB0byBkbyBcclxuXHJcblx0XHRcdGlmIChtZmMgIT0gbnVsbCkge1xyXG5cdFx0XHRcdG1mYy5jb25uZWN0KCk7XHJcblx0XHRcdFx0XHJcblx0XHRcdFx0Ly9qc+S4jeaUr+aMgeaXoOespuWPt+aVtOaVsO+8jOaXoOazleS8oOi+k+Wkp+S6jjBYN0bnmoTlgLxcclxuXHRcdFx0XHQvLyBtZmMud3JpdGVQYWdlKDB4MDgsIFsweDAxLCAweDAyLCAweDAzLCAweDA0XSlcclxuXHRcdFx0XHQvLyBtZmMud3JpdGVQYWdlKDB4MDksIFsweDdELCAweDdFLCAweDdGLCAoMHg4MD4+PjApXSlcclxuXHRcdFx0XHQvLyBtZmMud3JpdGVQYWdlKDB4MEEsIFsweDgwPj4+MCwgMHg4MT4+PjAsIDB4RkU+Pj4wLCAweEZGPj4+MF0pXHJcblx0XHRcdFx0Ly8gcmV0dXJuXHJcblxyXG5cdFx0XHRcdC8v55So55So5oi36K6+572u55qE5a+G56CB6K+i6Zeu55m75b2VXHJcblx0XHRcdFx0Ly8gbGV0IHJlc3BvbnNlID0gcGx1cy5hbmRyb2lkLmludm9rZShtZmMsICd0cmFuc2NlaXZlJywgWzB4MUIsIHB3ZEJ5dGVzWzBdLCBwd2RCeXRlc1sxXSwgcHdkQnl0ZXNbMl0sIHB3ZEJ5dGVzWzNdXSlcclxuXHRcdFx0XHRsZXQgcmVzcG9uc2UgPSBtZmMudHJhbnNjZWl2ZShbMHgxQiwgcHdkQnl0ZXNbMF0sIHB3ZEJ5dGVzWzFdLCBwd2RCeXRlc1syXSwgcHdkQnl0ZXNbM11dKVxyXG5cdFx0XHRcdGNvbnNvbGUubG9nKFwi6K+i6Zeu55m75b2VIHJlc3BvbnNlPVwiICsgSlNPTi5zdHJpbmdpZnkocmVzcG9uc2UpKTtcclxuXHJcblx0XHRcdFx0aWYgKHJlc3BvbnNlICE9IG51bGwpIHtcclxuXHRcdFx0XHRcdC8vIGlmIChyZXNwb25zZVswXSA9PSAweDAwICYmIHJlc3BvbnNlWzFdID09IDB4MDApIHtcclxuXHRcdFx0XHRcdGlmIChyZXNwb25zZSA9PSAnMCwwJykge1xyXG5cdFx0XHRcdFx0XHRjb25zb2xlLmxvZyhcIuWvhueggeagoemqjOato+ehrlwiKTtcclxuXHRcdFx0XHRcdH0gZWxzZSB7XHJcblx0XHRcdFx0XHRcdG1mYy5jbG9zZSgpO1xyXG5cdFx0XHRcdFx0XHRjb25zb2xlLmxvZyhcIuWvhueggeagoemqjOWksei0pVwiKTtcclxuXHRcdFx0XHRcdFx0dG9hc3QoJ+WvhueggeagoemqjOWksei0pScpO1xyXG5cdFx0XHRcdFx0XHRyZXR1cm5cclxuXHRcdFx0XHRcdH1cclxuXHRcdFx0XHR9IGVsc2Uge1xyXG5cdFx0XHRcdFx0bWZjLmNsb3NlKCk7XHJcblx0XHRcdFx0XHRjb25zb2xlLmxvZyhcIuivoumXrueZu+W9lSByZXNwb25zZSDml6DmlYhcIik7XHJcblx0XHRcdFx0XHR0b2FzdCgn5a+G56CB6aqM6K+B5aSx6LSlIOaIliDmnKrorr7nva7lr4bnoIEnKTtcclxuXHRcdFx0XHRcdHJldHVyblxyXG5cdFx0XHRcdH1cclxuXHJcblx0XHRcdFx0Ly9wYWNr572u5Li66buY6K6kXHJcblx0XHRcdFx0bWZjLndyaXRlUGFnZSgweDJDLCBbMHgwMCwgMHgwMCwgMHgwMCwgMHgwMF0pXHJcblxyXG5cdFx0XHRcdC8vIHNldCBQV0Q6ICDorr7nva7lr4bnoIHkuLrpu5jorqTlr4bnoIFcclxuXHRcdFx0XHRtZmMud3JpdGVQYWdlKDB4MkIsIHB3ZERlZmF1bHQpXHJcblx0XHRcdFx0XHJcblx0XHRcdFx0Ly8gc2V0IEFVVEhMSU06XHJcblx0XHRcdFx0Ly/lsIZBVVRITElN77yI56ysNDLpobXvvIzlrZfoioIw77yM5L2NMi0w77yJ6K6+572u5Li65aSx6LSl55qE5pyA5aSn5a+G56CB6aqM6K+B5bCd6K+V5qyh5pWwXHJcblx0XHRcdFx0bWZjLndyaXRlUGFnZSgweDJBLCBbMHgwMCwgMHgwNSwgMHgwMCwgMHgwMF0pXHJcblxyXG5cdFx0XHRcdC8vIOiuvue9rkF1dGgwICBhdXRoMOWunumZheaOp+WItuaYr+WQpuWQr+eUqOWvhueggeS/neaKpCDorr7nva7kuLpGRuihqOekuuemgeeUqOWvhueggeS/neaKpFxyXG5cdFx0XHRcdC8vIGxldCByZXNwb25zZUF1dGgwID0gbWZjLnJlYWRQYWdlcygweDI5KVxyXG5cdFx0XHRcdC8vIGNvbnNvbGUubG9nKFwicmVzcG9uc2VBdXRoMD1cIiArIEpTT04uc3RyaW5naWZ5KHJlc3BvbnNlQXV0aDApKTtcclxuXHRcdFx0XHQvLyBtZmMud3JpdGVQYWdlKDB4MjksIFsweDA0LCAweDAwLCAweDAwLCAweEZGXSlcclxuXHRcdFx0XHQvL2pz5LiN5pSv5oyB5peg56ym5Y+35pW05pWw77yM5peg5rOV5Lyg6L6T5aSn5LqOMFg3RueahOWAvFxyXG5cdFx0XHRcdG1mYy53cml0ZVBhZ2UoMHgyOSwgWzB4MDQsIDB4MDAsIDB4MDAsIDB4N0ZdKVxyXG5cclxuXHRcdFx0XHRtZmMuY2xvc2UoKTtcclxuXHRcdFx0XHR0b2FzdCgn5riF6Zmk5a+G56CB5oiQ5Yqf77yBJyk7XHJcblx0XHRcdFx0cmV0dXJuO1xyXG5cdFx0XHR9IGVsc2Uge1xyXG5cdFx0XHRcdHRvYXN0KCdUYWfkuI3mlK/mjIFNaWZhcmVVbHRyYWxpZ2h0Jyk7XHJcblx0XHRcdFx0cmV0dXJuO1xyXG5cdFx0XHR9XHJcblx0XHR9IGNhdGNoIChlKSB7XHJcblx0XHRcdHRvYXN0KCfmuIXpmaTlr4bnoIHlpLHotKUnKTtcclxuXHRcdFx0Y29uc29sZS5sb2coXCLmuIXpmaTlr4bnoIHlpLHotKUgZXJyb3I9XCIgKyBlKTtcclxuXHRcdH1cclxuXHR9LFxyXG5cdGdldFN0YXRlKGludGVudCkge1xyXG5cdFx0dHJ5IHtcclxuXHRcdFx0dG9hc3QoJ+ivt+WLv+enu+W8gOagh+etviDmraPlnKjojrflj5ZORkPnirbmgIEuLi4nKTtcclxuXHJcblx0XHRcdGxldCBNaWZhcmVVbHRyYWxpZ2h0ID0gcGx1cy5hbmRyb2lkLmltcG9ydENsYXNzKCdhbmRyb2lkLm5mYy50ZWNoLk1pZmFyZVVsdHJhbGlnaHQnKTtcclxuXHRcdFx0bGV0IHRhZyA9IGludGVudC5nZXRQYXJjZWxhYmxlRXh0cmEoTmZjQWRhcHRlci5FWFRSQV9UQUcpO1xyXG5cdFx0XHRsZXQgbWZjID0gTWlmYXJlVWx0cmFsaWdodC5nZXQodGFnKTtcclxuXHJcblx0XHRcdGlmIChtZmMgIT0gbnVsbCkge1xyXG5cdFx0XHRcdG1mYy5jb25uZWN0KCk7XHJcblxyXG5cdFx0XHRcdGxldCByZXNwb25zZUF1dGgwID0gbWZjLnJlYWRQYWdlcygweDI5KVxyXG5cdFx0XHRcdGNvbnNvbGUubG9nKFwicmVzcG9uc2VBdXRoMD1cIiArIEpTT04uc3RyaW5naWZ5KHJlc3BvbnNlQXV0aDApKTtcclxuXHRcdFx0XHRcclxuXHRcdFx0XHRpZiAocmVzcG9uc2VBdXRoMFszXSA9PSAweDAwKSB7XHJcblx0XHRcdFx0XHR0b2FzdCgn5bey6K6+572u5a+G56CB5L+d5oqkJyk7XHJcblx0XHRcdFx0fSBlbHNlIGlmIChyZXNwb25zZUF1dGgwWzNdID09IDB4N0YgfHwgcmVzcG9uc2VBdXRoMFszXSA9PSAweEZGIHx8IHJlc3BvbnNlQXV0aDBbM10gPT0gLTEpIHtcclxuXHRcdFx0XHRcdHRvYXN0KCflsJrmnKrorr7nva7lr4bnoIHkv53miqQnKTtcclxuXHRcdFx0XHR9IGVsc2Uge1xyXG5cdFx0XHRcdFx0dG9hc3QoJ05GQ+eKtuaAgeacquefpe+8micgKyBKU09OLnN0cmluZ2lmeShyZXNwb25zZUF1dGgwKSk7XHJcblx0XHRcdFx0fVxyXG5cdFx0XHRcdFxyXG5cdFx0XHRcdG1mYy5jbG9zZSgpO1xyXG5cdFx0XHRcdHJldHVybjtcclxuXHRcdFx0fSBlbHNlIHtcclxuXHRcdFx0XHR0b2FzdCgnVGFn5LiN5pSv5oyBTWlmYXJlVWx0cmFsaWdodCcpO1xyXG5cdFx0XHRcdHJldHVybjtcclxuXHRcdFx0fVxyXG5cdFx0fSBjYXRjaCAoZSkge1xyXG5cdFx0XHR0b2FzdCgn6I635Y+WTkZD54q25oCB5aSx6LSlJyk7XHJcblx0XHRcdGNvbnNvbGUubG9nKFwi6I635Y+WTkZD54q25oCB5aSx6LSlIGVycm9yPVwiICsgZSk7XHJcblx0XHR9XHJcblx0fSxcclxuXHRieXRlQXJyYXlUb0hleFN0cmluZzogZnVuY3Rpb24oaW5hcnJheSkgeyAvLyBjb252ZXJ0cyBieXRlIGFycmF5cyB0byBzdHJpbmcgIFxyXG5cdFx0bGV0IGksIGosIGlubjtcclxuXHRcdGxldCBoZXggPSBbXCIwXCIsIFwiMVwiLCBcIjJcIiwgXCIzXCIsIFwiNFwiLCBcIjVcIiwgXCI2XCIsIFwiN1wiLCBcIjhcIiwgXCI5XCIsIFwiQVwiLCBcIkJcIiwgXCJDXCIsIFwiRFwiLCBcIkVcIiwgXCJGXCJdO1xyXG5cdFx0bGV0IG91dCA9IFwiXCI7XHJcblxyXG5cdFx0Zm9yIChqID0gMDsgaiA8IGluYXJyYXkubGVuZ3RoOyArK2opIHtcclxuXHRcdFx0aW5uID0gaW5hcnJheVtqXSAmIDB4ZmY7XHJcblx0XHRcdGkgPSAoaW5uID4+PiA0KSAmIDB4MGY7XHJcblx0XHRcdG91dCArPSBoZXhbaV07XHJcblx0XHRcdGkgPSBpbm4gJiAweDBmO1xyXG5cdFx0XHRvdXQgKz0gaGV4W2ldO1xyXG5cdFx0fVxyXG5cdFx0cmV0dXJuIG91dDtcclxuXHR9LFxyXG5cdHdyaXRlRGF0YTogZnVuY3Rpb24oKSB7XHJcblx0XHRpZiAobm9ORkMpIHtcclxuXHRcdFx0dG9hc3QoJ+ivt+ajgOafpeiuvuWkh+aYr+WQpuaUr+aMgeW5tuW8gOWQryBORkMg5Yqf6IO977yBJyk7XHJcblx0XHRcdHJldHVybjtcclxuXHRcdH1cclxuXHRcdC8vIOebkeWQrOS6i+S7tu+8jOinpuWPkeadoeS7tlxyXG5cdFx0cmVhZHlXcml0ZURhdGEgPSB0cnVlO1xyXG5cdFx0dG9hc3QoJ+ivt+Wwhk5GQ+agh+etvumdoOi/ke+8gScpO1xyXG5cdH0sXHJcblx0cmVhZERhdGE6IGZ1bmN0aW9uKCkge1xyXG5cdFx0aWYgKG5vTkZDKSB7XHJcblx0XHRcdHRvYXN0KCfor7fmo4Dmn6Xorr7lpIfmmK/lkKbmlK/mjIHlubblvIDlkK8gTkZDIOWKn+iDve+8gScpO1xyXG5cdFx0XHRyZXR1cm47XHJcblx0XHR9XHJcblx0XHQvLyDnm5HlkKzkuovku7bvvIzop6blj5HmnaHku7ZcclxuXHRcdHJlYWR5UmVhZCA9IHRydWU7XHJcblx0XHR0b2FzdCgn6K+35bCGTkZD5qCH562+6Z2g6L+R77yBJyk7XHJcblx0fSxcclxuXHRzZXRQd2REYXRhOiBmdW5jdGlvbigpIHtcclxuXHRcdGlmIChub05GQykge1xyXG5cdFx0XHR0b2FzdCgn6K+35qOA5p+l6K6+5aSH5piv5ZCm5pSv5oyB5bm25byA5ZCvIE5GQyDlip/og73vvIEnKTtTXHJcblx0XHRcdHJldHVybjtcclxuXHRcdH1cclxuXHRcdC8vIOebkeWQrOS6i+S7tu+8jOinpuWPkeadoeS7tlxyXG5cdFx0cmVhZHlTZXRQd2QgPSB0cnVlO1xyXG5cdFx0dG9hc3QoJ+ivt+Wwhk5GQ+agh+etvumdoOi/ke+8gScpO1xyXG5cdH0sXHJcblx0ZGVsUHdkRGF0YTogZnVuY3Rpb24oKSB7XHJcblx0XHRpZiAobm9ORkMpIHtcclxuXHRcdFx0dG9hc3QoJ+ivt+ajgOafpeiuvuWkh+aYr+WQpuaUr+aMgeW5tuW8gOWQryBORkMg5Yqf6IO977yBJyk7XHJcblx0XHRcdHJldHVybjtcclxuXHRcdH1cclxuXHRcdC8vIOebkeWQrOS6i+S7tu+8jOinpuWPkeadoeS7tlxyXG5cdFx0cmVhZHlEZWxQd2QgPSB0cnVlO1xyXG5cdFx0dG9hc3QoJ+ivt+Wwhk5GQ+agh+etvumdoOi/ke+8gScpO1xyXG5cdH0sXHJcblx0Z2V0TmZjU3RhdGU6IGZ1bmN0aW9uKCkge1xyXG5cdFx0aWYgKG5vTkZDKSB7XHJcblx0XHRcdHRvYXN0KCfor7fmo4Dmn6Xorr7lpIfmmK/lkKbmlK/mjIHlubblvIDlkK8gTkZDIOWKn+iDve+8gScpO1xyXG5cdFx0XHRyZXR1cm47XHJcblx0XHR9XHJcblx0XHQvLyDnm5HlkKzkuovku7bvvIzop6blj5HmnaHku7ZcclxuXHRcdHJlYWR5R2V0TmZjU3RhdGUgPSB0cnVlO1xyXG5cdFx0dG9hc3QoJ+ivt+Wwhk5GQ+agh+etvumdoOi/ke+8gScpO1xyXG5cdH0sXHJcblx0d3JpdGVBbmRMb2NrOiBmdW5jdGlvbigpIHtcclxuXHRcdGlmIChub05GQykge1xyXG5cdFx0XHR0b2FzdCgn6K+35qOA5p+l6K6+5aSH5piv5ZCm5pSv5oyB5bm25byA5ZCvIE5GQyDlip/og73vvIEnKTtcclxuXHRcdFx0cmV0dXJuO1xyXG5cdFx0fVxyXG5cdFx0Ly8g55uR5ZCs5LqL5Lu277yM6Kem5Y+R5p2h5Lu2XHJcblx0XHRyZWFkeVdyaXRlQW5kTG9jayA9IHRydWU7XHJcblx0XHR0b2FzdCgn6K+35bCGTkZD5qCH562+6Z2g6L+R77yBJyk7XHJcblx0fSxcclxuXHQvLyDovpPlhaXmlofmnKzmlLnlj5hcclxuXHRpbnB1dENoYW5hZ2U6IGZ1bmN0aW9uKHJlcykge1xyXG5cdFx0Y29uc29sZS5sb2coXCLmraPlnKjnvJbovpHlhpnlhaXmlbDmja4uLi5cIiwgcmVzKVxyXG5cdFx0d3JpdGVVcmkgPSByZXNcclxuXHR9XHJcbn1cclxuXHJcbmZ1bmN0aW9uIHRvYXN0KGNvbnRlbnQpIHtcclxuXHR1bmkuc2hvd1RvYXN0KHtcclxuXHRcdHRpdGxlOiBjb250ZW50LFxyXG5cdFx0aWNvbjogJ25vbmUnXHJcblx0fSlcclxufVxyXG4iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///71\n");
- /***/ })
- ],[[0,"app-config"]]]);
|