{"report_id":"1b7dfb0f-715a-4da3-bf89-ece64c58ab4b","version":0,"status":"done","tags":[],"date":"2026-07-27T15:34:24Z","url":{"schema":"https","addr":"dao-fwa.fun/rewards/","fqdn":"dao-fwa.fun","domain":"dao-fwa.fun","tld":"fun"},"ip":{"addr":"172.67.147.132","port":0,"asn":13335,"as":"CLOUDFLARENET","country":"","country_code":"zz"},"final":{"url":{"schema":"https","addr":"www.google.com/","fqdn":"www.google.com","domain":"google.com","tld":"com"},"title":"Google","dom":{"size":306718,"mime_type":"text/html; charset=utf-8","magic":"JavaScript source, ASCII text, with very long lines (28754)","md5":"eea93972a56a1222454c59ff9fb3ebe8","sha1":"c155a8fd3bae47a32eb6702d6b54364db59db789","sha256":"5a2f4403bdea3e509ad62fcdec1d04f69ad9c78e11c54c8c9a03488362af386b","sha512":"fec50a4b64b15af4466e3b9713f3b8a2d8b7d8fa6fe3a88179df197939c30ee31d6100bc5a5bd693dd230696b52d63f792c1dc2c63bfc71f753f9b2d5b9fc918","ssdeep":"3072:/iNusLEzHxCLGA6/j60sJwH5YjXV3IKWXYhKNdxHL:/iNusLEzHxCKA6/jIJwH5i3IAGZ","tlshash":"07646d717300bc3ba813d9a0e1bf7f4e3c35e11bdd0a4ab8a555da309ee2db1152666c","dom_hash":"domhash82aab1f313f7c8871eb8f6a91790ba14","first_seen":"2026-07-27T15:34:29.313186Z","last_seen":"2026-07-27T15:34:29.313186Z","times_seen":1,"resource_available":false,"data":null}},"submit":{"url":{"schema":"https","addr":"dao-fwa.fun/rewards/","fqdn":"dao-fwa.fun","domain":"dao-fwa.fun","tld":"fun"},"ip":{"addr":"172.67.147.132","port":0,"asn":13335,"as":"CLOUDFLARENET","country":"","country_code":"zz"},"tags":null,"meta":null},"settings":{"access":"public","device_type":"desktop","expires_at":"2027-08-31T15:34:24Z","useragent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:134.0) Gecko/20100101 Firefox/134.0","referer":"","cookies":null,"exit_node":"qguvgzjxzsgb3vs"},"stats":{"alert_count":{"ids":0,"urlquery":0,"analyzer":0}},"detection":{"ids":null,"analyzer":null,"urlquery":null},"summary":[{"fqdn":"www.google.com","ip":{"addr":"142.251.157.119","port":443,"asn":15169,"as":"GOOGLE","country":"United States","country_code":"US"},"domain_registered":"1997-09-15","domain_rank":22,"first_seen":"2015-05-10T13:11:19Z","last_seen":"2026-07-26T22:51:17.688286Z","alert_count":0,"request_count":28,"received_data":2236196,"sent_data":40576,"comment":"","tags":null,"fingerprints":[{"name":"Google Web Server","description":"","website":"https://en.wikipedia.org/wiki/Google_Web_Server","common_platform_enumeration":"cpe:2.3:a:google:web_server:*:*:*:*:*:*:*:*","icon":"Google.svg","categories":["Web servers"]},{"name":"HSTS","description":"HTTP Strict Transport Security (HSTS) informs browsers that the site should only be accessed using HTTPS.","website":"https://www.rfc-editor.org/rfc/rfc6797#section-6.1","common_platform_enumeration":"","icon":"","categories":["Security"]}]},{"fqdn":"www.gstatic.com","ip":{"addr":"142.250.178.67","port":443,"asn":15169,"as":"GOOGLE","country":"United States","country_code":"US"},"domain_registered":"2008-02-11","domain_rank":146047,"first_seen":"2012-05-29T15:36:17Z","last_seen":"2026-07-26T23:06:30.068608Z","alert_count":0,"request_count":3,"received_data":242869,"sent_data":1737,"comment":"","tags":null,"fingerprints":null},{"fqdn":"play.google.com","ip":{"addr":"142.250.178.78","port":443,"asn":15169,"as":"GOOGLE","country":"United States","country_code":"US"},"domain_registered":"1997-09-15","domain_rank":48,"first_seen":"2013-05-30T23:24:35Z","last_seen":"2026-07-27T08:25:44.048798Z","alert_count":0,"request_count":2,"received_data":1101,"sent_data":1491,"comment":"","tags":null,"fingerprints":null},{"fqdn":"ogads-pa.clients6.google.com","ip":{"addr":"142.250.178.74","port":443,"asn":15169,"as":"GOOGLE","country":"United States","country_code":"US"},"domain_registered":"1997-09-15","domain_rank":508,"first_seen":"2025-03-25T10:27:20.769449Z","last_seen":"2026-07-27T09:56:59.084541Z","alert_count":0,"request_count":2,"received_data":1300,"sent_data":1687,"comment":"","tags":null,"fingerprints":[{"name":"HSTS","description":"HTTP Strict Transport Security (HSTS) informs browsers that the site should only be accessed using HTTPS.","website":"https://www.rfc-editor.org/rfc/rfc6797#section-6.1","common_platform_enumeration":"","icon":"","categories":["Security"]}]},{"fqdn":"google.com","ip":{"addr":"142.250.178.110","port":443,"asn":15169,"as":"GOOGLE","country":"United States","country_code":"US"},"domain_registered":"1997-09-15","domain_rank":1,"first_seen":"2013-10-02T17:25:49Z","last_seen":"2026-07-20T21:11:01.310676Z","alert_count":0,"request_count":1,"received_data":785,"sent_data":479,"comment":"","tags":null,"fingerprints":[{"name":"Google Web Server","description":"","website":"https://en.wikipedia.org/wiki/Google_Web_Server","common_platform_enumeration":"cpe:2.3:a:google:web_server:*:*:*:*:*:*:*:*","icon":"Google.svg","categories":["Web servers"]}]},{"fqdn":"fonts.gstatic.com","ip":{"addr":"142.250.178.67","port":443,"asn":15169,"as":"GOOGLE","country":"United States","country_code":"US"},"domain_registered":"2008-02-11","domain_rank":0,"first_seen":"2014-04-02T10:51:04Z","last_seen":"2026-07-26T22:19:52.505461Z","alert_count":0,"request_count":2,"received_data":41908,"sent_data":1106,"comment":"","tags":null,"fingerprints":null},{"fqdn":"csp.withgoogle.com","ip":{"addr":"142.250.178.81","port":443,"asn":15169,"as":"GOOGLE","country":"United States","country_code":"US"},"domain_registered":"2008-11-17","domain_rank":4614,"first_seen":"2015-10-29T09:31:36Z","last_seen":"2026-07-27T08:19:27.559262Z","alert_count":0,"request_count":1,"received_data":1669,"sent_data":537,"comment":"","tags":null,"fingerprints":null},{"fqdn":"dao-fwa.fun","ip":{"addr":"172.67.147.132","port":443,"asn":13335,"as":"CLOUDFLARENET","country":"","country_code":"zz"},"domain_registered":"2026-07-27","domain_rank":0,"first_seen":"2026-07-27T09:45:06.444771Z","last_seen":"2026-07-27T09:45:06.444771Z","alert_count":0,"request_count":1,"received_data":599,"sent_data":488,"comment":"","tags":null,"fingerprints":[{"name":"Cloudflare","description":"Cloudflare is a web-infrastructure and website-security company, providing content-delivery-network services, DDoS mitigation, Internet security, and distributed domain-name-server services.","website":"https://www.cloudflare.com","common_platform_enumeration":"","icon":"CloudFlare.svg","categories":["CDN"]}]}],"files":null,"artifacts":{"windows_shortcuts":null,"files":null,"telegram":null,"pdfs":null,"clipboard":null},"sensors":{"ids":null,"analyzer":null,"urlquery":null},"javascript":{"script":[{"url":{"schema":"https","addr":"www.google.com/xjs/_/js/k=xjs.hd.no.ZJX-0yQnO-M.2019.O/am=AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgQAAAAABBAAAAAAAAAAAAAAAYAAgAAAAAAAAAAAAAAAAAAIAAAQAAIAAAAAAAAAAAEAAAAAAABAAACAAAYAAAAQABBAAAAAMAAAAAAAAAAAAAAAAAAAAAgBAAAABCAADwBwZYAQAAAAAAAAASADAAAAAAAAAAFgAAIAEAAAAEQAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAABgAAAAAAKAAAAABAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAgAAACgAACAAAAgAAAAAAAAAAAAAAAACgAwAAAAAAAAAAAAAAAAAAAAAAAAAACAAAQIAAAAAAAAAAAAQACAAAAEAHQOABhhQUAAAAAAAAAAAAAAAAAAAAAAAAAAACLIBdSAEBEAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAyAkAAAAAAICF/d=0/dg=0/br=1/rs=ACT90oG_sTN876pKLsn8EAIC7HPAt8yW8Q/m=lOO0Vd,sy9w,P6sQOc?cb=121509378\u0026xjs=s4","fqdn":"www.google.com","domain":"google.com","tld":"com"},"ip":{"addr":"142.251.157.119","port":443,"asn":15169,"as":"GOOGLE","country":"United States","country_code":"US"},"introduction_type":"scriptElement","is_inline":false,"md5":"015eb4537f66039b0b9c6be3bbc28fbe","sha1":"d2de1113ffadfaade42ef3f5a9d20ac38d4fa70b","sha256":"9ff5feea74cf5cb2651a8e6ba6cec067fee3d82dc7703b50b3f7b225c3002bd1","sha512":"f418ff18e7c840e16a5c63b71272b8a4e5f4f81370a9cc91167c922462240fb0459a2aeef0f3a70037622c85f35c3fcd2b2619d027de53c166d454e29f42c42a","ssdeep":"","tlshash":"9641952d61e7b0532251f0d0046a1043e1afa867e0d85c7e7ef4bec6abd108956e23fc","size":2113,"data":"","first_seen":"2026-07-25T01:07:04.031041Z","last_seen":"2026-07-27T21:44:04.588475Z","times_seen":209,"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"www.google.com/xjs/_/js/k=xjs.hd.no.ZJX-0yQnO-M.2019.O/ck=xjs.hd.h9GHjaAphl0.L.F4.O/am=AAAEQAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAABAAAAIECAAAZAAAgQAAgAADBAAAAAAIAAAAAABAeAAgAMAAAAAAAAAAAAAAAAIAAQQAAIAAAAAAAAAAAEAAAAAAABAIAiAAAYAAAAQABFAAAQAMAAAAAAAAACAAAAAAAAAAAiBAAAABCAADwBwZYAwAAAAAAAAASYTAQAAAAABAGFgAAIAEAAAAEQAAAAAAAAABAJEACACAAABAAAAgAAAAAAAQBhBAEAAEKIAAAABAAAAKABQAAAACgAxAEAQAAAABAAAAACAAEgRBAAAAAgAAAChAACAAIAgAAAGAEBQBAogYCAECgAwAAACADAAAAAAQAAAAAAAAAAAAAiAAAQIAAAACQAAADBAQACAAAAEAHQOABhhQUAAAAAAAAAAAAAAAAAAAAAAAAAAACLIBdSAEBEAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAyAkAAAAAAICF/d=0/dg=0/br=1/ujg=1/rs=ACT90oHlSnCzx5mAdYXy8e1Zh-GxJ0al8Q/m=syxy,HGv0mf,UEShwc,sy22h,sy16r,YHnUBc,sy2dp,VtMfj,syq3,sy2an,sy2am,n8YO7e,sy2ap,sy1uw,sy1ux,sy1cb,sy1gr,sy1j2,sy1j3,sy1h7,sy1eg,sy1ce,sy1cd,sy99,sy1cc,sy1c9,sy1bj,sycd,sygw,sy1h6,sy1j5,sy1hm,sy1hn,sy1hr,sy1hb,sy1h4,sy1h5,sy1gq,sy1h3,sy1gy,sy1ea,sy1gx,sy1gs,sy1h8,sy1gp,sy1h2,sy1gm,sy1gz,sy1gl,sy1gw,sy1gu,sy1gt,sy1go,sy1ex,syz1,sy1h1,sylg,syik,syin,syil,jywEkf,ZgGg9b,dIoSBb,sy30q,sy30y,sy10o,sy34o,sy34n,b6knsb,sy34k,sy34j,syyk,sy2fg,syrq,syqd,syo5,sy16p,sy30x,sy2cx,sy16n,syg7,syeg,syee,syax,syei,JKoKVe,pXdRYb,sy3go,syay,syav,sy9k,O1Gjze,TtcOte,wR5FRb,syg5,syg2,syfy,syfx,syck,syd9,syc7,syfw,sye9,syfv,syfu,syft,syfs,syfr,syfq,syfo,syfn,syfm,syce,sycf,syfk,sybv,sybx,sybt,sybs,sybq,sybu,sybf,sybi,sybg,sybr,sybo,sybc,syb5,syb3,syfl,syfj,syfh,sye4,sye0,syc4,syc3,syc0,syc2,syc9,syd1,sydn,syc6,sycq,sycp,syci,syco,sycn,sycb,sycl,sycm,sydk,syfg,syff,syf4,syfd,syeu,sye7,sydo,sydp,sydj,sydh,sydc,syd6,sycu,sycv,syd5,syd2,syda,syct,syd7,sycg,sycc,sycw,sych,syds,syc1,syca,syel,syem,syfc,sye2,sydx,sydw,syde,sydd,sydz,sydu,sydv,sye3,syd0,syf2,syfb,syep,syd8,syeq,syf9,syeo,syf8,sye5,sye6?cb=121509378\u0026xjs=s3","fqdn":"www.google.com","domain":"google.com","tld":"com"},"ip":{"addr":"142.251.157.119","port":443,"asn":15169,"as":"GOOGLE","country":"United States","country_code":"US"},"introduction_type":"scriptElement","is_inline":false,"md5":"57a932c66ffc9f681477aa564f69403a","sha1":"108ce36974233da7a3b5b48cbe7e73798e6b7e27","sha256":"8c13c7cdd6ff54e43260c8cb75b0f401be098302ca833d0e5036e34faca68e8a","sha512":"fb1e0d8dd610310c7e7a9600507e5238b3094925a2410f72aba7f33a6a3f635ab0d40deaf3fd42bb4c8a58d9fe13ea72590641442cb2e78d74fc251e4d29a374","ssdeep":"1536:ZTUnZQFbgrA6zN0XUSl5f8pADKQ9Rkx5ZOB+UBFZHff0a0GCGpHn/IMD0K1PtcNu:YQFyz2Ea50CDLRgz+pHQMDu59N6","tlshash":"e6f386e87263e2933352ba9050a70147f3ba75e5f588846ca9f8c5f1fef045502f276a","size":159268,"data":"","first_seen":"2026-07-25T01:07:04.022007Z","last_seen":"2026-07-27T20:08:12.376498Z","times_seen":175,"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"www.google.com/xjs/_/js/k=xjs.hd.no.ZJX-0yQnO-M.2019.O/am=AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgQAAAAABBAAAAAAAAAAAAAAAYAAgAAAAAAAAAAAAAAAAAAIAAQQAAIAAAAAAAAAAAEAAAAAAABAAACAAAYAAAAQABFAAAAAMAAAAAAAAAAAAAAAAAAAAAgBAAAABCAADwBwZYAQAAAAAAAAASADAAAAAAAAAAFgAAIAEAAAAEQAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAABgAAAAAAKAAAAABAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAgAAACgAACAAAAgAAAAAAAAAAAAAAAACgAwAAAAADAAAAAAAAAAAAAAAAAAAACAAAQIAAAAAAAAAAAAQACAAAAEAHQOABhhQUAAAAAAAAAAAAAAAAAAAAAAAAAAACLIBdSAEBEAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAyAkAAAAAAICF/d=1/ed=1/dg=4/br=1/rs=ACT90oEp9PejxfBZZRK7SiiesZRt_H0TFw/ee=ALeJib:B8gLwd;AfeaP:TkrAjf;BMxAGc:E5bFse;BgS6mb:fidj5d;BjwMce:cXX2Wb;CIZTGb:Kqhykb;CxXAWb:YyRLvc;DQEued:Fevhcf;DULqB:RKfG5c;Dkk6ge:JZmW9e;DpcR3d:zL72xf;EABSZ:MXZt9d;ESrPQc:mNTJvc;EVNhjf:pw70Gc;EjXHpb:pSHqh;EmZ2Bf:zr1jrb;EnlcNd:WeHg4;F54IAe:ZgsFh;F9mqte:UoRcbe;FSxmUe:fiZR8b;Fkukfc:i8H2c;Fmv9Nc:O1Tzwc;G0KhTb:LIaoZ;GleZL:J1A7Od;HMDDWe:G8QUdb;HtPxrd:Gx8jAb;IBADCc:RYquRb;IoGlCf:b5lhvb;IsdWVc:qzxzOb;JXJSm:ii1RGf;JXS8fb:Qj0suc;JqSq7d:y9ePhe;JsbNhc:Xd8iUd;K08hxe:zmbGlf;K5nYTd:ZDZcre;KA3P2:C3JnCe;KDb6nb:fE9n2;KOxcK:OZqGte;KQzWid:ZMKkN;KdIHef:BWtNj;KpRAue:Tia57b;LBgRLc:SdcwHb,XVMNvd;LBn8Cf:bJ9L0c;LEikZe:byfTOb,lsjVmc;LXA8b:q7OdKd;LsNahb:ucGLNb;MNkAde:KMCd1d;NJ1rfe:qTnoBf;NPKaK:SdcwHb;NSEoX:lazG7b;NjIwef:YVgi7d;Np8Qkd:Dpx6qc;Nyt6ic:jn2sGd;OIfWUb:qfOYcd;OgagBe:cNTe0;OiqE2c:TFpEK;OoK5v:Sp69O;OohIYe:mpEAQb;Pjplud:PoEs9b;PpTLXd:pJYjx;Q1Ow7b:x5CSu;Q7iJ9c:bVLZ3d;QE20Be:gIltO;QFOGlf:PQ2Aoe;QGR0gd:Mlhmy;QYLF2b:pAQYUd;Qw8Feb:jpavUe;R4IIIb:QWfeKf;R9Ulx:CR7Ufe;RCF5Sd:X1kBmd;Raf5me:mgvFMc;SLtqO:Kh1xYe;SMDL4c:fTfGO;SNUn3:ZwDk9d,xD8Kp;SNk4Je:wWMhg;ScI3Yc:e7Hzgb,e7Hzgb;ShpF6e:N0pvGc;Snahre:mGCtob;SwCqAd:fXbCZc;SzQQ3e:dNhofb;TIUVQd:lWTJwd;TroZ1d:vVVzjb;U96pRd:FsR04;UBKJZ:LGDJGb;UDrY1c:N0F29d,W50NVd,eps46d,wciyUe;UVmjEd:EesRsb;UVzb9c:IvPZ6d;UYRIEb:HzTAQc;UyG7Kb:wQd0G;V2HTTe:RolTY;VGRfx:VFqbr;VMuEm:pL7sBc;VN6jIc:ddQyuf;VOcgDe:YquhTb;VhA7bd:vAmQFf;VsAqSb:PGf2Re;W9QSQe:ynCWwc;WDGyFe:jcVOxd;WXtNeb:QU9BMd;Wfmdue:g3MJlb;Wl55ib:vgbiKb;Y3c5sd:FGbfLe;YIZmRd:A1yn5d;YV5bee:IvPZ6d;YnHUBf:sNsSob;ZSH6tc:QAvyLe;ZWEUA:afR4Cf;ZlOOMb:P0I0Ec;a56pNe:JEfCwb;aAJE9c:WHW6Ef;aCJ9tf:qKftvc;aVZq3e:EMeVIb;aZ61od:arTwJ;aci7y:Z5Tr6c;bUIkwb:WMwEHe;bcPXSc:gSZLJb;cEt90b:ws9Tlc;cFTWae:gT8qnd;dIoSBb:ZgGg9b;dLlj2:Qqt3Gf;dXdZV:a7QTqd;dowIGb:ebZ3mb,ebZ3mb;dtl0hd:lLQWFe;eBAeSb:Ck63tb;eBZ5Nd:audvde;eHDfl:ofjVkb;eJKchc:ATg1be;eO3lse:UefOmb;euOXY:OZjbQ;g8nkx:U4MzKc;gaub4:TN6bMe;gbfHR:qZtzib;gtVSi:ekUOYd;h3MYod:ws9Tlc;hK67qb:QWEO5b;hVic1b:Kqhykb;heHB1:sFczq;hjRo6e:F62sG;hlqGX:FWz1ic;hsLsYc:Vl118;hwoVHd:zw4U8c;iFQyKf:QIhFr;jJj2G:kF2o2b;k1O0rf:pnOULd;k2Qxcb:XY51pe;kbAm9d:MkHyGd;lOO0Vd:OTA3Ae;lbfkyf:MqGdUd;liAz7d:kF2o2b;mMVOGb:qDM7K;mWzs9c:fz5ukf;nBZnZe:CvErjb;nE6OJf:Fi4rsc;nEBWNb:MxKX9d;nJw4Gd:dPFZH;nrDcw:SuEoDe;oGtAuc:sOXFj;oSUNyd:fTfGO,fTfGO;oUlnpc:RagDlc;oiBhre:OuMkRd;okUaUd:wItadb;pKJiXd:VCenhc;pNsl2d:j9Yuyc;pXdRYb:JKoKVe;pj82le:ww04Df;qGV2uc:HHi04c;qQEoOc:KUM7Z,d7YSfd;qZx2Fc:j0xrE;qaS3gd:yiLg6e;qafBPd:sgY6Zb;qavrXe:I0C9u;qddgKe:d7YSfd,x4FYXe;rdexKf:FEkKD;rmWaj:PMS6Sd;ropkZ:UT1DG;sTsDMc:kHVSUb;sZmdvc:rdGEfc;tH4IIe:Ymry6;teSRSb:BMLai;tosKvd:ZCqP3;trZL0b:qY8PFe;uuQkY:u2V3ud;vEYCNb:FaqsVd;vRlMvf:Iw9Xo;vfVwPd:lcrkwe;w3bZCb:ZPGaIb;w9w86d:XwhUEb,dt4g2b,gKD90c,lWVZVe;wQlYve:aLUfP;wR5FRb:O1Gjze,TtcOte;wV5Pjc:L8KGxe;x9N9ie:KH4Qof;xBbsrc:NEW1Qc;xpaRob:AVqZ9b;yiL5Ab:MT0ZBd;ysNiMc:CpIBjd;yxTchf:KUM7Z;z97YGf:oug9te;zaIgPb:Sl0pxd/m=cdos,hsm,jsa,mb4ZUb,cEt90b,SNUn3,qddgKe,sTsDMc,dtl0hd,eHDfl,YV5bee,d,csi?cb=121509378","fqdn":"www.google.com","domain":"google.com","tld":"com"},"ip":{"addr":"142.251.157.119","port":443,"asn":15169,"as":"GOOGLE","country":"United States","country_code":"US"},"introduction_type":"scriptElement","is_inline":false,"md5":"1cd718c9c19a141199bfad5d84868b48","sha1":"dd3eef6d887ab33ae4408cfdad8185e4c6a70ee7","sha256":"968142ad5b3201cf90e4df6cf6486ec81e33afb58a60db19747a7f07d4cdb139","sha512":"b617eb825a6852f8d2c081f8be4ba0387e4d80eacdd46fc67c9ad98475420f09b60be1d028aefbc909bb245e41d3c245ea78fb43a046e4fd130fc13ac39d15bc","ssdeep":"24576:F0BMYWnZd/mmqt7sielEb6VrTpypeJ+ot:F0BMYWnUt7sielEb6VrTpypeJ+ot","tlshash":"5e35099873a3b453a276f595416f0287b3beb892f44c886cb5a8d8d17eb084541f7f38","size":1099161,"data":"","first_seen":"2026-07-25T02:50:28.833693Z","last_seen":"2026-07-27T20:08:12.382077Z","times_seen":200,"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"www.google.com/xjs/_/js/k=xjs.hd.no.ZJX-0yQnO-M.2019.O/ck=xjs.hd.h9GHjaAphl0.L.F4.O/am=AAAEQAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAABAAAAIECAAAZAAAgQAAgAADBAAAAAAIAAAAAABAeAAgAMAAAAAAAAAAAAAAAAIAAQQAAIAAAAAAAAAAAEAAAAAAABAIAiAAAYAAAAQABFAAAQAMAAAAAAAAACAAAAAAAAAAAiBAAAABCAADwBwZYAwAAAAAAAAASYTAQAAAAABAGFgAAIAEAAAAEQAAAAAAAAABAJEACACAAABAAAAgAAAAAAAQBhBAEAAEKIAAAABAAAAKABQAAAACgAxAEAQAAAABAAAAACAAEgRBAAAAAgAAAChAACAAIAgAAAGAEBQBAogYCAECgAwAAACADAAAAAAQAAAAAAAAAAAAAiAAAQIAAAACQAAADBAQACAAAAEAHQOABhhQUAAAAAAAAAAAAAAAAAAAAAAAAAAACLIBdSAEBEAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAyAkAAAAAAICF/d=0/dg=0/br=1/ujg=1/rs=ACT90oHlSnCzx5mAdYXy8e1Zh-GxJ0al8Q/m=sy2ds,bwixAb,aG3wVc,syh6,aLUfP,wQlYve,sy2e5,sy2e9,sy2ea,sy2e4,sy2eb,sy2e0,sy2dz,sy29q,sy2e1,sy2dx,sy2dw,sy2du,sygn,s0j7C,sy184,sy187,sy185,sy181,sy183,sy17y,sy17x,sy17c,sy178,sy17z,sy176,sy177,SMquOb,sy8z,sy8y,syhu,syht,syhq,syhr,syhp,syi6,syi2,syi1,syi0,syhx,syho,syhg,syhn,syhl,syhk,syhj,sy9e,sy9h,syhi,syhm,syhh,syhf,syhc,syha,sy9m,uxMpU,syh1,sya5,sya2,sya1,sya0,sy9z,sy9y,Mlhmy,QGR0gd,PoEs9b,Pjplud,OTA3Ae,sy9v,sy9q,A1yn5d,YIZmRd,sy98,sy96,sy95,sy93,sy92,byfTOb,lsjVmc,LEikZe,sy90,kWgXee,ovKuLd,sgY6Zb,qafBPd,ebZ3mb,dowIGb,sy2bb,sy18e,d5EhJe,sy2c6,fCxEDd,sy1ug,sy1uh,sy2c1,sy2bw,sy2bo,sy2bq,sy2c5,sy2bx,sy2c3,sy2bt,sy2bs,sy2bm,sy2bk,sy1cg,sy1rt,sy18h,sy18c,sy18i,sy17l,sy17k,sy18j,T1HOxc,LFk59d,sy2bh,sy2bg,sy2be,sy2bf,sy2bd,syps,zx30Y,sy2c8,sy2c7,sy17a,syyq,Wo3n8,sy18q,sy18o,zGLm3b,sy4d8,sy4d7,sy4d6,sy3x0,sy1rx,sy1ry,DhPYme,sy4dh,sy3wj,sy3wh,syi8,sy3wo,sy3wi,sy3wq,sy3we,sy4dg,KHourd,sy4eq,sy161,syz9,oQfbDd?cb=121509378\u0026xjs=s3","fqdn":"www.google.com","domain":"google.com","tld":"com"},"ip":{"addr":"142.251.157.119","port":443,"asn":15169,"as":"GOOGLE","country":"United States","country_code":"US"},"introduction_type":"scriptElement","is_inline":false,"md5":"7ba0c0b3f2d04bb2d84879bc694cd7a2","sha1":"f020b6b182a6fdbaabe8e014f5575c1789bb45b6","sha256":"36bf689c350e8be8f8cb322e9b3d0896c6c817211001306c557ed87c67023374","sha512":"66c615aad7e27b244a5d970d9ab8e435fe9c99881cfad3ced8a4c6f6ac7ad932c571095e8a07c25549c96973c9f7208845dcc232afed8369a58bc95fda441ffb","ssdeep":"3072:o8ybZRdfZjdy/60VMtbd0MYH070+PIvqcSKzHFQa:8bZRxZU/etp0MYHm0/v9bhQa","tlshash":"0644f9987363b0936362f1d5806f02cbb36a7891f849896cb9bcd9e17df088141f5b79","size":272300,"data":"","first_seen":"2026-07-25T05:13:35.317421Z","last_seen":"2026-07-27T17:46:41.29604Z","times_seen":24,"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"www.gstatic.com/og/_/js/k=og.asy.en_US.M_7ghikQAkA.2019.O/rt=j/m=_ac,_awd,ada,lldp,qads,abld/exm=/d=1/ed=1/rs=AA2YrTtJT2GPlx0nJ84RzsS-D9uX1TzAyQ","fqdn":"www.gstatic.com","domain":"gstatic.com","tld":"com"},"ip":{"addr":"142.250.178.67","port":443,"asn":15169,"as":"GOOGLE","country":"United States","country_code":"US"},"introduction_type":"scriptElement","is_inline":false,"md5":"aabc07d128eca7e97add035e0b1502f7","sha1":"b55680acd801602ad5cb18921cf498d9336eb56c","sha256":"4d509a235e8bf85b228b162b6c2098b8bc85d3b4f77976fb54e3a92cf3213505","sha512":"88faafb2f7bf5c01d6eb3007998813956b709244cd386e7f0526b6e531f1c165f15bb682b082b2c3549d580e89632b032d73a75d76e5c57b7cf66821bc12db42","ssdeep":"3072:kq2bOhO5+s7mThkZDfn748OnlsfMFGjPRSngRSxONBRBiE654uT:fRs7mThkFxOnlsfMqpupxYeT","tlshash":"d834199873a2706392a6f4d6402f0047b26ab466f44c4c6cb68cdde2aef4d4551fbf78","size":232976,"data":"","first_seen":"2026-07-21T12:28:20.15301Z","last_seen":"2026-07-28T08:20:26.548597Z","times_seen":500,"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"www.google.com/xjs/_/js/k=xjs.hd.no.ZJX-0yQnO-M.2019.O/ck=xjs.hd.h9GHjaAphl0.L.F4.O/am=AAAEQAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAABAAAAIECAAAZAAAgQAAgAADBAAAAAAIAAAAAABAeAAgAMAAAAAAAAAAAAAAAAIAAQQAAIAAAAAAAAAAAEAAAAAAABAIAiAAAYAAAAQABFAAAQAMAAAAAAAAACAAAAAAAAAAAiBAAAABCAADwBwZYAwAAAAAAAAASYTAQAAAAABAGFgAAIAEAAAAEQAAAAAAAAABAJEACACAAABAAAAgAAAAAAAQBhBAEAAEKIAAAABAAAAKABQAAAACgAxAEAQAAAABAAAAACAAEgRBAAAAAgAAAChAACAAIAgAAAGAEBQBAogYCAECgAwAAACADAAAAAAQAAAAAAAAAAAAAiAAAQIAAAACQAAADBAQACAAAAEAHQOABhhQUAAAAAAAAAAAAAAAAAAAAAAAAAAACLIBdSAEBEAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAyAkAAAAAAICF/d=0/dg=0/br=1/ujg=1/rs=ACT90oHlSnCzx5mAdYXy8e1Zh-GxJ0al8Q/m=syer,syej,syf1,syf6,syf0,syf5,syez,syey,syen,syew,syev,syet,syes,syf3,syek,syed,sye8,syb2,sy8u,zbML3c,gskBEc,sy2ah,s980lf,U9EYge,sy128,loL8vb,sy12b,sy12a,sy119,sy117,sy11a,sy10n,sy10f,sy10i,sy11c,sy11f,syh9,syh8,syh7,sy11b,sy11e,sy11g,sy11h,sy11d,sy10m,sy10v,sy10r,sy10q,sy10p,sy10c,sy116,sy10x,sy112,sy10y,sy10u,sy10t,sy10s,sy10e,sy109,syz3,syz2,sy10g,ms4mZb,syxp,B2qlPe,sy16j,NzU6V,sy171,sy9i,WlNQGd,sy108,sy106,sy105,DPreE,sy173,sy172,nabPbb,abd,sy4eh,TDFkye?cb=121509378\u0026xjs=s3","fqdn":"www.google.com","domain":"google.com","tld":"com"},"ip":{"addr":"142.251.157.119","port":443,"asn":15169,"as":"GOOGLE","country":"United States","country_code":"US"},"introduction_type":"scriptElement","is_inline":false,"md5":"bd684f14fe0175bcff5029ebfd27b141","sha1":"7d87871086ed47b7d4cf4f6d9642d58db6c1722a","sha256":"0af38f7453786e36ff60d815577d08d9b8d2d9400161d04f48a56ac3e2574d94","sha512":"778318864aae1a5e632066f01d5b54ecf62a24016f70157e5a0aea429cfab784e7511074a480eb26ace07721a5ce02850dc7525c22988e75c85b7a98a58066d4","ssdeep":"3072:l0EFHWoi7xtW0RKyNvEyXM0fFJON+QuTrPbWgix+i:SE5W1xsutN5fFJcGT/Wgix+i","tlshash":"90f30978739576735e61b4949b6b824a72ede84370c8c85cf7a4d8d22dec84341f2f2a","size":164124,"data":"","first_seen":"2026-07-25T01:07:04.024482Z","last_seen":"2026-07-27T20:08:12.372165Z","times_seen":175,"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"www.google.com/xjs/_/js/k=xjs.hd.no.ZJX-0yQnO-M.2019.O/am=AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgQAAAAABBAAAAAAAAAAAAAAAYAAgAAAAAAAAAAAAAAAAAAIAAAQAAIAAAAAAAAAAAEAAAAAAABAAACAAAYAAAAQABBAAAAAMAAAAAAAAAAAAAAAAAAAAAgBAAAABCAADwBwZYAQAAAAAAAAASADAAAAAAAAAAFgAAIAEAAAAEQAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAABgAAAAAAKAAAAABAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAgAAACgAACAAAAgAAAAAAAAAAAAAAAACgAwAAAAAAAAAAAAAAAAAAAAAAAAAACAAAQIAAAAAAAAAAAAQACAAAAEAHQOABhhQUAAAAAAAAAAAAAAAAAAAAAAAAAAACLIBdSAEBEAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAyAkAAAAAAICF/d=0/dg=0/br=1/rs=ACT90oG_sTN876pKLsn8EAIC7HPAt8yW8Q/m=qTnoBf,syaf,sOXFj,oGtAuc,NJ1rfe,syao,q0xTif,y05UD,PPhKqf,vECdaf,sy1hp,syoh,syqg,sy2aw,sy1z4,sy2ax,sy28y,sy28z,sy1c7,sy1g1,sy1g3,sy1g5,sy1g6,epYOx?cb=121509378\u0026xjs=s4","fqdn":"www.google.com","domain":"google.com","tld":"com"},"ip":{"addr":"142.251.157.119","port":443,"asn":15169,"as":"GOOGLE","country":"United States","country_code":"US"},"introduction_type":"scriptElement","is_inline":false,"md5":"52fe343e6394dcccf876ff966d184c6c","sha1":"2eb1f1b75f752988c6e7bf32f98ec7a29c705d05","sha256":"bda85954852fb4d75e232268491cdbfab2cd5c910a745ae73285a088236dff0b","sha512":"66f7dbc80aae080c9900dc9a79d0d4b9e19ce978a1d1c6e716b3c38bd7e588f6325740ec860bed62825910eb5f6c41b7c61790b87752af6e5d7b3d53cb872c25","ssdeep":"192:XeTilT4uboa0DqYVhMOZaATOdVUHu0Xkv1KsYtcQ1466seUH41CKPDm334EIvxfo:LNXYSqHuacQ1l3WDI3yxtLh0BZB","tlshash":"2582d93051a22563521b54e8a73b53e9e19e325e6f1b40e86d68bfc037f8e8049f7b74","size":18426,"data":"","first_seen":"2026-07-25T02:50:28.831616Z","last_seen":"2026-07-27T20:08:12.378089Z","times_seen":22,"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"www.google.com/xjs/_/js/k=xjs.hd.no.ZJX-0yQnO-M.2019.O/am=AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgQAAAAABBAAAAAAAAAAAAAAAYAAgAAAAAAAAAAAAAAAAAAIAAAQAAIAAAAAAAAAAAEAAAAAAABAAACAAAYAAAAQABBAAAAAMAAAAAAAAAAAAAAAAAAAAAgBAAAABCAADwBwZYAQAAAAAAAAASADAAAAAAAAAAFgAAIAEAAAAEQAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAABgAAAAAAKAAAAABAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAgAAACgAACAAAAgAAAAAAAAAAAAAAAACgAwAAAAAAAAAAAAAAAAAAAAAAAAAACAAAQIAAAAAAAAAAAAQACAAAAEAHQOABhhQUAAAAAAAAAAAAAAAAAAAAAAAAAAACLIBdSAEBEAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAyAkAAAAAAICF/d=0/dg=0/br=1/rs=ACT90oG_sTN876pKLsn8EAIC7HPAt8yW8Q/m=sy2f3,sy2f2,sy2f1,sy2f0,sy2ez,sy23b,sy23c,sy2ey,sy14w,sy2ex,sy1sn,sy2ew,sy1tk,sy1t1,sy2eu,syxo,r8E4Ze,sy2dr,sy2dq,nNxkYd,syyz,syz0,syyy,sy2ei,sy2eh,sy2eg,sy2ed,sy1y8,sy1x4,sy1x5,sy1up,sy1uj,sy1uf,sy2ef,sy2ee,sy1yy,sy1ub,sy1vc,sy1ue,sy1tz,sy1tw,sy1ty,sy1ua,syzg,syz8,nTNfhe,sy2dm,P10Owf,sy18a,gSZvdb,sy16z,sy16x,symk,sypn,CnSW2d,sy16t,sy16q,sy16l,sy16s,nRwWne,sy16w,fXO0xe?cb=121509378\u0026xjs=s4","fqdn":"www.google.com","domain":"google.com","tld":"com"},"ip":{"addr":"142.251.157.119","port":443,"asn":15169,"as":"GOOGLE","country":"United States","country_code":"US"},"introduction_type":"scriptElement","is_inline":false,"md5":"1c5d6b947bd4133ed3ed2e11910422ef","sha1":"ed9c103e12225bdcd6345b216e0c73854883ecf4","sha256":"0db255b243179e89fa538395e203c9ccaf27db32cfb8ae8eda58b61f7bd3442c","sha512":"89f4713a107f302d331fee3dc06c6822d73e2cdb267815a3350a04db18b6456e5377c0b372567e6468ec4a43b507de035d0cc26a490a0e21dbf8ef7308f6db5e","ssdeep":"6144:F/6MI/kk1JyqtKrlC7LmQhIJFMS/4y/PIwnpjSsMUP/j:cGQhsh/4y/gsdjM+/j","tlshash":"e3146bdd75a371226503f5a4847f024ab069e7a4f04a402cfed8daf5e8b598805f3f7a","size":197149,"data":"","first_seen":"2026-07-25T06:38:25.962406Z","last_seen":"2026-07-27T15:34:29.325888Z","times_seen":6,"alerts":{"ids":null,"analyzer":null,"urlquery":null}}],"eval":null,"write":null,"console":null},"http":[{"url":{"schema":"https","addr":"www.google.com/gen_204?ei=Y3pnarTELeimwPAPo6StkA4\u0026vet=10ahUKEwj0gZKal_OVAxVoExAIHSNSC-IQhJAHCDs..s\u0026bl=_SWN\u0026s=webhp\u0026gl=no\u0026pc=SEARCH_HOMEPAGE\u0026isMobile=false","fqdn":"www.google.com","domain":"google.com","tld":"com"},"ip":{"addr":"142.251.157.119","port":443,"asn":15169,"as":"GOOGLE","country":"United States","country_code":"US"},"is_navigation_request":false,"resource_type":"beacon","requested_by":"https://www.google.com/","date":"2026-07-27T15:33:56.425Z","timestamp":1785166436425,"http_version":"HTTP/3","security_state":"secure","security_info":{"cipher_suite":"TLS_AES_128_GCM_SHA256","key_group_name":"mlkem768x25519","signature_name":"ECDSA-P256-SHA256","protocol":"TLSv1.3","cert":{"subject":{"commonName":"*.google.com","organization":""},"issuer":{"commonName":"WR2","organization":"Google Trust Services"},"validity":{"start":"Mon, 29 Jun 2026 08:37:25 GMT","end":"Mon, 21 Sep 2026 08:37:24 GMT"},"fingerprint":{"sha1":"D9:DA:81:30:78:3E:9C:6B:5F:9D:18:52:0E:BE:6D:52:2F:FB:33:E0","sha256":"EA:E2:2D:87:EC:9C:D6:51:9D:59:E4:13:35:3B:97:14:E3:DA:58:2D:1C:69:19:41:54:94:25:C3:94:17:F3:0C"}}},"request":{"raw":"POST /gen_204?ei=Y3pnarTELeimwPAPo6StkA4\u0026vet=10ahUKEwj0gZKal_OVAxVoExAIHSNSC-IQhJAHCDs..s\u0026bl=_SWN\u0026s=webhp\u0026gl=no\u0026pc=SEARCH_HOMEPAGE\u0026isMobile=false HTTP/1.1\r\nHost: www.google.com\r\nUser-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:134.0) Gecko/20100101 Firefox/134.0\r\nAccept: */*\r\nAccept-Language: en-US,en;q=0.9\r\nAccept-Encoding: gzip, deflate, br, zstd\r\nReferer: https://www.google.com/\r\nContent-Type: text/plain;charset=UTF-8\r\nContent-Length: 0\r\nOrigin: https://www.google.com\r\nSec-GPC: 1\r\nConnection: keep-alive\r\nCookie: AEC=AdJVEauUsWHpfGAsUyeilL8EI9I2Tr9FfEzOqXuEJToXYpKe1KUK4km-Sg; __Secure-ENID=35.SE=AbigeV3aJ0m6xMobN92AbNZpW8pBnglGTPw_dz_A9WWyoDaiBBZPKRYUFk43qYtDkrYoTgVKiKtyKOguRjujzVzhuA6WYYbk-i87vjK7wNHmdliDMhNspbLvs4LU7H3yif4utRnzW3A5pWS7luM5rorSqU-pj8vCqCmdLtP-tPTBFRmS_IwoinM092pFPLFq5WUhH_JzQWk4Nj64_cv8DwX9Gzz3yPDcXsoOsZMMsbp3c373u3CG8Y4REmw\r\nSec-Fetch-Dest: empty\r\nSec-Fetch-Mode: no-cors\r\nSec-Fetch-Site: same-origin\r\nPriority: u=6\r\n\r\n","headers":null,"cookies":null,"method":"POST"},"response":{"raw":"HTTP/3 204 \r\ncontent-type: text/html; charset=UTF-8\r\ncontent-security-policy: object-src 'none';base-uri 'self';script-src 'nonce-F9DHjghX0C2z4aY6bRCrQQ' 'strict-dynamic' 'report-sample' 'unsafe-eval' 'unsafe-inline' https: http:;report-uri https://csp.withgoogle.com/csp/gws/other\r\ncross-origin-opener-policy: same-origin-allow-popups; report-to=\"gws\"\r\nreport-to: {\"group\":\"gws\",\"max_age\":2592000,\"endpoints\":[{\"url\":\"https://csp.withgoogle.com/csp/report-to/gws/other\"}]}\r\ndate: Mon, 27 Jul 2026 15:33:56 GMT\r\nserver: gws\r\ncontent-length: 0\r\nx-xss-protection: 0\r\nx-frame-options: SAMEORIGIN\r\nalt-svc: h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000\r\n\r\n","headers":null,"cookies":null,"status_code":"204","status_text":"","fingerprints":[{"name":"Google Web Server","description":"","website":"https://en.wikipedia.org/wiki/Google_Web_Server","common_platform_enumeration":"cpe:2.3:a:google:web_server:*:*:*:*:*:*:*:*","icon":"Google.svg","categories":["Web servers"]}],"data":{"size":0,"size_decoded":653,"mime_type":"text/html; charset=UTF-8","magic":"","md5":"d41d8cd98f00b204e9800998ecf8427e","sha1":"da39a3ee5e6b4b0d3255bfef95601890afd80709","sha256":"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855","sha512":"cf83e1357eefb8bdf1542850d66d8007d620e4050b5715dc83f4a921d36ce9ce47d0d13c5d85f2b0ff8318d2877eec2f63b931bd47417a81a538327af927da3e","ssdeep":"","tlshash":"","first_seen":"0001-01-01T00:00:00Z","last_seen":"2026-08-16T23:46:43.370624Z","times_seen":17926730,"resource_available":true,"data":""}},"time_used":20,"timings":{"blocked":-1,"dns":0,"connect":0,"send":0,"wait":20,"receive":0,"ssl":0},"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"www.gstatic.com/og/_/ss/k=og.asy.caGu9x0s5DM.L.F4.O/m=ll_tdm,adcgm3,ll_fw,abld/excm=/d=1/ed=1/ct=zgms/rs=AA2YrTuiAJZGkw6Fa1qtr-IChECzzIa78w","fqdn":"www.gstatic.com","domain":"gstatic.com","tld":"com"},"ip":{"addr":"142.250.178.67","port":443,"asn":15169,"as":"GOOGLE","country":"United States","country_code":"US"},"is_navigation_request":false,"resource_type":"stylesheet","requested_by":"https://www.google.com/","date":"2026-07-27T15:33:56.427Z","timestamp":1785166436427,"http_version":"HTTP/3","security_state":"secure","security_info":{"cipher_suite":"TLS_AES_128_GCM_SHA256","key_group_name":"mlkem768x25519","signature_name":"ECDSA-P256-SHA256","protocol":"TLSv1.3","cert":{"subject":{"commonName":"*.gstatic.com","organization":""},"issuer":{"commonName":"WE2","organization":"Google Trust Services"},"validity":{"start":"Mon, 29 Jun 2026 08:39:25 GMT","end":"Mon, 21 Sep 2026 08:39:24 GMT"},"fingerprint":{"sha1":"4E:F2:73:C6:27:16:58:35:FE:55:D5:30:6B:E8:6D:2B:DA:B0:E8:7B","sha256":"82:EF:6A:61:96:A5:23:D6:2C:2C:9D:77:67:04:D8:7B:3B:6A:50:DA:3C:6C:6A:5F:4E:2D:55:F3:FC:DA:0B:EE"}}},"request":{"raw":"GET /og/_/ss/k=og.asy.caGu9x0s5DM.L.F4.O/m=ll_tdm,adcgm3,ll_fw,abld/excm=/d=1/ed=1/ct=zgms/rs=AA2YrTuiAJZGkw6Fa1qtr-IChECzzIa78w HTTP/1.1\r\nHost: www.gstatic.com\r\nUser-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:134.0) Gecko/20100101 Firefox/134.0\r\nAccept: text/css,*/*;q=0.1\r\nAccept-Language: en-US,en;q=0.9\r\nAccept-Encoding: gzip, deflate, br, zstd\r\nReferer: https://www.google.com/\r\nSec-Fetch-Storage-Access: none\r\nSec-GPC: 1\r\nConnection: keep-alive\r\nSec-Fetch-Dest: style\r\nSec-Fetch-Mode: no-cors\r\nSec-Fetch-Site: cross-site\r\nPriority: u=4\r\nPragma: no-cache\r\nCache-Control: no-cache\r\n\r\n","headers":null,"cookies":null,"method":"GET"},"response":{"raw":"HTTP/3 200 \r\naccept-ranges: bytes\r\ncontent-encoding: gzip\r\ncontent-security-policy-report-only: require-trusted-types-for 'script'; report-uri https://csp.withgoogle.com/csp/one-google-eng\r\ncross-origin-resource-policy: cross-origin\r\ncross-origin-opener-policy: same-origin; report-to=\"one-google-eng\"\r\nreport-to: {\"group\":\"one-google-eng\",\"max_age\":2592000,\"endpoints\":[{\"url\":\"https://csp.withgoogle.com/csp/report-to/one-google-eng\"}]}\r\ncontent-length: 1798\r\nx-content-type-options: nosniff\r\nserver: sffe\r\nx-xss-protection: 0\r\ndate: Wed, 22 Jul 2026 13:10:19 GMT\r\nexpires: Thu, 22 Jul 2027 13:10:19 GMT\r\ncache-control: public, max-age=31536000\r\nlast-modified: Mon, 20 Jul 2026 09:34:29 GMT\r\ncontent-type: text/css; charset=UTF-8\r\nvary: Accept-Encoding, Origin\r\nage: 440617\r\nalt-svc: h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000\r\n\r\n","headers":null,"cookies":null,"status_code":"200","status_text":"","fingerprints":null,"data":{"size":6181,"size_decoded":2634,"mime_type":"text/css; charset=UTF-8","magic":"ASCII text, with very long lines (6181), with no line terminators","md5":"0a4629c70e7bd6c767d66615a67049ea","sha1":"6b475a7c9df2c918b091db5f0b3ead4e77a9ece5","sha256":"f2818b2eebc581ebdf2879882a56d5d9b2544ecc868720074a1a321a25d3a334","sha512":"3a33f94fcea088661ff6eefea399bb89afb7db0e9ca0398542c6f3b533872054722eb5489c0344e4bc5a4c8361d153e168a8d84cd39642d2b712ea41dfc595d1","ssdeep":"96:P5km/dBbymLdgB0K7kPVI7Fpu9akpcoBGDxOfVAqCoC2:Bf/dBbrE0KkPV4p3kwDxMmtX2","tlshash":"21d133a1d244317ffc27d47d7784f5c9a262229adcae0f78fc3812314acd2b62a21316","first_seen":"2026-07-21T12:28:20.143256Z","last_seen":"2026-07-28T08:20:26.541536Z","times_seen":497,"resource_available":false,"data":"LmdiX1hje2JhY2tncm91bmQ6cmdiYSg2MCw2NCw2NywuOSk7Ym9yZGVyLXJhZGl1czo0cHg7Y29sb3I6I2ZmZjtmb250OjUwMCAxMnB4IFJvYm90byxhcmlhbCxzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOi44cHg7bGluZS1oZWlnaHQ6MTZweDttYXJnaW4tdG9wOjRweDttaW4taGVpZ2h0OjE0cHg7cGFkZGluZzo0cHggOHB4O3Bvc2l0aW9uOmFic29sdXRlO291dGxpbmU6MXB4IHNvbGlkIHRyYW5zcGFyZW50Oy1tb3otdXNlci1zZWxlY3Q6dGV4dDt1c2VyLXNlbGVjdDp0ZXh0O3otaW5kZXg6MTAwMDstbW96LW9zeC1mb250LXNtb290aGluZzpncmF5c2NhbGU7LXdlYmtpdC1mb250LXNtb290aGluZzphbnRpYWxpYXNlZH0uZ2JfMGMsLmdiX1pje3RleHQtYWxpZ246bGVmdH0uZ2JfMGM+Kntjb2xvcjojYzRjN2M1O2xpbmUtaGVpZ2h0OjE2cHh9LmdiXzBjIGRpdjpmaXJzdC1jaGlsZHtjb2xvcjp3aGl0ZX0uZ2JfQ3tib3JkZXItcmFkaXVzOjUwJX0uZ2JfQzpiZWZvcmV7YmFja2dyb3VuZDojNDQ0NzQ2O2JhY2tncm91bmQ6dmFyKC0tZ20zLXN5cy1jb2xvci1vbi1zdXJmYWNlLXZhcmlhbnQsIzQ0NDc0Nik7Ym9yZGVyLXJhZGl1czoxMDBweDtjb250ZW50OiIiO2hlaWdodDoxMDAlO2xlZnQ6MDtvcGFjaXR5OjA7cG9zaXRpb246YWJzb2x1dGU7dG9wOjA7dHJhbnNpdGlvbjpvcGFjaXR5IC4zcyBlYXNlLW91dDt3aWR0aDoxMDAlfS5nYl9LIC5nYl9DOmJlZm9yZXtiYWNrZ3JvdW5kOiNjNGM3YzU7YmFja2dyb3VuZDp2YXIoLS1nbTMtc3lzLWNvbG9yLW9uLXN1cmZhY2UtdmFyaWFudCwjYzRjN2M1KX0uZ2JfQzpob3ZlcntiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoNjAsNjQsNjcsLjA4KX0uZ2JfQzpmb2N1czpiZWZvcmUsLmdiX0M6Zm9jdXM6aG92ZXI6YmVmb3Jle29wYWNpdHk6LjEyfS5nYl9DOmFjdGl2ZTpiZWZvcmV7b3BhY2l0eTouMTZ9LmdiX0M6aG92ZXI6YmVmb3Jle29wYWNpdHk6LjA4fS5nYl9DOmhvdmVyW2FyaWEtZXhwYW5kZWQ9dHJ1ZV06YmVmb3JlLC5nYl9DW2FyaWEtZXhwYW5kZWQ9dHJ1ZV06YmVmb3Jle29wYWNpdHk6LjE2fS5nYl9DOmZvY3VzLXZpc2libGV7b3V0bGluZToxcHggc29saWQ7b3V0bGluZS1vZmZzZXQ6MDtvdXRsaW5lLWNvbG9yOiMwYjU3ZDA7b3V0bGluZS1jb2xvcjp2YXIoLS1nbTMtc3lzLWNvbG9yLXByaW1hcnksIzBiNTdkMCl9LmdiX0MuZ2JfVTpmb2N1cy12aXNpYmxle291dGxpbmUtb2Zmc2V0OjNweH0uZ2JfQy5nYl9VOmJlZm9yZXtib3JkZXItcmFkaXVzOjUwJTtoZWlnaHQ6YXV0bztpbnNldDotNHB4O3dpZHRoOmF1dG99LmdiX0MuZ2JfVTpob3ZlcjpiZWZvcmV7b3BhY2l0eTouMX0uZ2JfSyAuZ2JfQzpmb2N1cy12aXNpYmxle291dGxpbmUtY29sb3I6I2E4YzdmYTtvdXRsaW5lLWNvbG9yOnZhcigtLWdtMy1zeXMtY29sb3ItcHJpbWFyeSwjYThjN2ZhKX0uZ2JfRXtwb3NpdGlvbjphYnNvbHV0ZTtwb2ludGVyLWV2ZW50czpub25lO3RvcDoxNnB4O3JpZ2h0OjE0cHg7ZGlzcGxheTotbW96LWJveDtkaXNwbGF5OmZsZXg7LW1vei1ib3gtcGFjazpjZW50ZXI7anVzdGlmeS1jb250ZW50OmNlbnRlcjstbW96LWJveC1hbGlnbjpjZW50ZXI7YWxpZ24taXRlbXM6Y2VudGVyO2JhY2tncm91bmQtY29sb3I6I2IzMjYxZTtjb2xvcjojZmZmO2JvcmRlci1yYWRpdXM6MTAwcHg7aGVpZ2h0OjE0cHg7Zm9udC1mYW1pbHk6R29vZ2xlIFNhbnM7Zm9udC1zaXplOjExcHg7Zm9udC13ZWlnaHQ6NTAwO2xpbmUtaGVpZ2h0OjE2cHg7cGFkZGluZzoycHg7dHJhbnNmb3JtOnRyYW5zbGF0ZSg1MCUsLTUwJSk7ei1pbmRleDoxfS5nYl9Ge21hcmdpbjo0cHh9LmdiX0sgLmdiX0V7YmFja2dyb3VuZC1jb2xvcjojZjJiOGI1O2NvbG9yOiM0MjA0MDB9LmdiX1NbYXJpYS1leHBhbmRlZD10cnVlXXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoNjAsNjQsNjcsLjEpfS5nYl9TOmZvY3VzLXZpc2libGV7b3V0bGluZToxcHggc29saWQgcmdiKDY1LDEwNiwyMDcpO291dGxpbmUtb2Zmc2V0OjB9LmdiX0sgLmdiX1NbYXJpYS1leHBhbmRlZD10cnVlXXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjMyLDIzNCwyMzcsLjEpfS5nYl9LIC5nYl9TOmZvY3VzLXZpc2libGV7b3V0bGluZS1jb2xvcjpyZ2IoMTg0LDIwNSwyNDcpfUBrZXlmcmFtZXMgZm9jdXMtYW5pbWF0aW9uLTJweHswJXtvdXRsaW5lLWNvbG9yOnRyYW5zcGFyZW50O291dGxpbmUtb2Zmc2V0OjA7b3V0bGluZS13aWR0aDowfXRve291dGxpbmUtb2Zmc2V0OjJweDtvdXRsaW5lLXdpZHRoOjFweH19LmdiX3kgLmdiX0E6YmVmb3Jle2NvbnRlbnQ6IiAiO3Bvc2l0aW9uOmFic29sdXRlO3RvcDowO2xlZnQ6MDt3aWR0aDoxMDAlO2hlaWdodDoxMDAlO29wYWNpdHk6MDtib3JkZXItcmFkaXVzOjEwMHB4O2JhY2tncm91bmQ6I2ZmZjtiYWNrZ3JvdW5kOnZhcigtLWdtMy1zeXMtY29sb3Itb24tcHJpbWFyeSwjZmZmKTt0cmFuc2l0aW9uOm9wYWNpdHkgLjVzIGVhc2Utb3V0fS5nYl95IC5nYl9BOmhvdmVye2N1cnNvcjpwb2ludGVyO2JveC1zaGFkb3c6MCAxcHggMnB4IDAgcmdiYSgwLDAsMCwuMyksMCAxcHggM3B4IDFweCByZ2JhKDAsMCwwLC4xNSl9LmdiX3kgLmdiX0E6aG92ZXI6YmVmb3Jle29wYWNpdHk6LjA4fS5nYl95IC5nYl9BOmFjdGl2ZTpiZWZvcmUsLmdiX3kgLmdiX0E6YWN0aXZlOmZvY3VzOmJlZm9yZXtvcGFjaXR5Oi4xMn0uZ2JfeSAuZ2JfQTphY3RpdmUsLmdiX3kgLmdiX0E6YWN0aXZlOmZvY3Vze2JveC1zaGFkb3c6bm9uZX0uZ2JfeSAuZ2JfQTpmb2N1cy12aXNpYmxlOmJlZm9yZXtvcGFjaXR5Oi4xMn0uZ2JfeSAuZ2JfQTpmb2N1cy12aXNpYmxle2JveC1zaGFkb3c6bm9uZX0uZ2JfeSAuZ2JfQTpmb2N1cy12aXNpYmxle291dGxpbmUtc3R5bGU6c29saWQ7b3V0bGluZS1jb2xvcjojMGI1N2QwO291dGxpbmUtY29sb3I6dmFyKC0tZ20zLXN5cy1jb2xvci1wcmltYXJ5LCMwYjU3ZDApO2FuaW1hdGlvbjpmb2N1cy1hbmltYXRpb24tMnB4IC4zcyBlYXNlLWluLW91dCBmb3J3YXJkc31AbWVkaWEgKGZvcmNlZC1jb2xvcnM6YWN0aXZlKXsuZ2JfeSAuZ2JfQXtib3JkZXI6MXB4IHNvbGlkO2JvcmRlci1jb2xvcjojNzQ3Nzc1O2JvcmRlci1jb2xvcjp2YXIoLS1nbTMtc3lzLWNvbG9yLW91dGxpbmUsIzc0Nzc3NSl9LmdiX3kgLmdiX0E6Zm9jdXMtdmlzaWJsZXtvdXRsaW5lOjJweCBzb2xpZCB0cmFuc3BhcmVudH19LmdiX3kuZ2JfSyAuZ2JfQTpiZWZvcmV7YmFja2dyb3VuZDojMDAxZDM1O2JhY2tncm91bmQ6dmFyKC0tZ20zLXN5cy1jb2xvci1vbi1zZWNvbmRhcnktZml4ZWQsIzAwMWQzNSl9LmdiX3kuZ2JfSyAuZ2JfQTpmb2N1cy12aXNpYmxle291dGxpbmUtY29sb3I6I2MyZTdmZjtvdXRsaW5lLWNvbG9yOnZhcigtLWdtMy1zeXMtY29sb3Itc2Vjb25kYXJ5LWZpeGVkLCNjMmU3ZmYpfUBtZWRpYSAoZm9yY2VkLWNvbG9yczphY3RpdmUpey5nYl95LmdiX0sgLmdiX0F7Ym9yZGVyLWNvbG9yOiM4ZTkxOGY7Ym9yZGVyLWNvbG9yOnZhcigtLWdtMy1zeXMtY29sb3Itb3V0bGluZSwjOGU5MThmKX19LmdiX0J7Ym9yZGVyLXJhZGl1czo1MCV9LmdiX0I6aG92ZXJ7YmFja2dyb3VuZDpyZ2JhKDY4LDcxLDcwLC4wOCl9LmdiX0I6YWN0aXZlLC5nYl9COmZvY3Vze2JhY2tncm91bmQ6cmdiYSg2OCw3MSw3MCwuMTIpfS5nYl9COmZvY3VzLXZpc2libGV7b3V0bGluZTojMGI1N2QwO291dGxpbmU6dmFyKC0tZ20zLXN5cy1jb2xvci1wcmltYXJ5LCMwYjU3ZDApO291dGxpbmUtd2lkdGg6MXB4O291dGxpbmUtc3R5bGU6c29saWQ7b3V0bGluZS1vZmZzZXQ6LTFweH0uZ2JfSyAuZ2JfQjpob3ZlcntiYWNrZ3JvdW5kOnJnYmEoMTk2LDE5OSwxOTcsLjA4KX0uZ2JfSyAuZ2JfQjphY3RpdmUsLmdiX0sgLmdiX0I6Zm9jdXN7YmFja2dyb3VuZDpyZ2JhKDE5NiwxOTksMTk3LC4xMil9LmdiX0sgLmdiX0I6Zm9jdXMtdmlzaWJsZXtvdXRsaW5lOiNhOGM3ZmE7b3V0bGluZTp2YXIoLS1nbTMtc3lzLWNvbG9yLXByaW1hcnksI2E4YzdmYSk7b3V0bGluZS13aWR0aDoxcHg7b3V0bGluZS1zdHlsZTpzb2xpZDtvdXRsaW5lLW9mZnNldDotMXB4fS5nYl9CIC5nYl9Ue2Rpc3BsYXk6YmxvY2t9LmdiX0M6YWZ0ZXJ7Y29udGVudDoiIjtwb3NpdGlvbjphYnNvbHV0ZTtpbnNldDotNHB4fUBrZXlmcmFtZXMgYXBkLXJpbmctZmFkZS1pbnswJXtvcGFjaXR5OjB9dG97b3BhY2l0eToxfX0uZ2JfVnthbmltYXRpb246YXBkLXJpbmctZmFkZS1pbiAuMjVzIGVhc2UtaW59LmdiX05he2JhY2tncm91bmQ6bm9uZTtib3JkZXI6MXB4IHNvbGlkIHRyYW5zcGFyZW50O2JvcmRlci1yYWRpdXM6NTAlOy1tb3otYm94LXNpemluZzpib3JkZXItYm94O2JveC1zaXppbmc6Ym9yZGVyLWJveDtjdXJzb3I6cG9pbnRlcjtoZWlnaHQ6NDBweDttYXJnaW46OHB4O291dGxpbmU6bm9uZTtwYWRkaW5nOjFweDtwb3NpdGlvbjphYnNvbHV0ZTtyaWdodDowO3RvcDowO3dpZHRoOjQwcHh9LmdiX05hOmhvdmVye2JhY2tncm91bmQtY29sb3I6cmdiYSg2OCw3MSw3MCwuMDgpfS5nYl9OYTphY3RpdmUsLmdiX05hOmZvY3Vze2JhY2tncm91bmQtY29sb3I6cmdiYSg2OCw3MSw3MCwuMTIpfS5nYl9OYTpmb2N1cy12aXNpYmxle2JvcmRlci1jb2xvcjojMGI1N2QwO291dGxpbmU6MXB4IHNvbGlkIHRyYW5zcGFyZW50O291dGxpbmUtb2Zmc2V0Oi0xcHh9LmdiX0sgLmdiX05hOmhvdmVye2JhY2tncm91bmQtY29sb3I6cmdiYSgyMjcsMjI3LDIyNywuMDgpfS5nYl9LIC5nYl9OYTphY3RpdmUsLmdiX0sgLmdiX05hOmZvY3Vze2JhY2tncm91bmQtY29sb3I6cmdiYSgyMjcsMjI3LDIyNywuMDgpfS5nYl9LIC5nYl9OYTpmb2N1cy12aXNpYmxle2JvcmRlci1jb2xvcjojYThjN2ZhfS5nYl9PYSAuZ2JfUGF7Ym9yZGVyOjFweCBzb2xpZCB0cmFuc3BhcmVudDtib3JkZXItcmFkaXVzOjRweDtjb2xvcjpyZ2IoMTEsODcsMjA4KX0uZ2JfUGE6aG92ZXJ7Y29sb3I6cmdiKDgsNjYsMTYwKX0uZ2JfUGE6YWN0aXZlLC5nYl9QYTpmb2N1c3tjb2xvcjpyZ2IoNiw0NiwxMTEpfS5nYl9QYTpmb2N1cy12aXNpYmxle2JvcmRlci1jb2xvcjpyZ2IoMTEsODcsMjA4KTt0ZXh0LWRlY29yYXRpb246bm9uZX0uZ2JfSyAuZ2JfUGF7Y29sb3I6cmdiKDE2OCwxOTksMjUwKX0uZ2JfSyAuZ2JfUGE6aG92ZXJ7Y29sb3I6cmdiKDIxMSwyMjcsMjUzKX0uZ2JfSyAuZ2JfUGE6YWN0aXZlLC5nYl9LIC5nYl9QYTpmb2N1c3tjb2xvcjpyZ2IoMjM2LDI0MywyNTQpfS5nYl9LIC5nYl9QYTpmb2N1cy12aXNpYmxle2JvcmRlci1jb2xvcjpyZ2IoMTY4LDE5OSwyNTApO2NvbG9yOnJnYigxNjgsMTk5LDI1MCk7b3V0bGluZTpub25lfS5nYl9RYXtib3gtc2hhZG93OjAgLTFweCAycHggMCByZ2JhKDYwLDY0LDY3LC4zKSwwIC0ycHggNnB4IDJweCByZ2JhKDYwLDY0LDY3LC4xNSk7aGVpZ2h0OmNhbGMoMTAwJSAtIDE2cHgpO2xlZnQ6MDttYXJnaW46OHB4O3Bvc2l0aW9uOmFic29sdXRlO3RvcDowO3dpZHRoOmNhbGMoMTAwJSAtIDE2cHgpfS5nYl9SYS5nYl9RYXtib3JkZXItcmFkaXVzOjI4cHg7Ym94LXNoYWRvdzowIDJweCA2cHggMnB4IHJnYmEoMCwwLDAsLjE1KSwwIDFweCAycHggMCByZ2JhKDAsMCwwLC4zKTtoZWlnaHQ6MjkwcHh9QG1lZGlhIG9ubHkgc2NyZWVuIGFuZCAobWF4LXdpZHRoOjQ1MnB4KXsuZ2JfUmEuZ2JfUWF7Ym9yZGVyLXJhZGl1czowO2hlaWdodDoxMDAlO21hcmdpbjowO21heC13aWR0aDp1bnNldDtwYWRkaW5nOjA7d2lkdGg6MTAwJX19LmdiX1J7ZGlzcGxheTpibG9jaztwYWRkaW5nLXJpZ2h0OjExcHg7cGFkZGluZy10b3A6MTJweH0uZ2JfN3tkaXNwbGF5OmlubGluZS1ibG9jaztwYWRkaW5nLWxlZnQ6MTVweH0uZ2JfNntjb2xvcjojMWYxZjFmO2NvbG9yOnZhcigtLW9nLWxpbmstY29sb3IsdmFyKC0tZ20zLXN5cy1jb2xvci1vbi1zdXJmYWNlLCMxZjFmMWYpKTtkaXNwbGF5OmlubGluZS1ibG9jaztmb250LWZhbWlseTphcmlhbCxzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxM3B4O2xpbmUtaGVpZ2h0OjI0cHg7dGV4dC1kZWNvcmF0aW9uOm5vbmV9LmdiXzY6Zm9jdXN7b3V0bGluZS1vZmZzZXQ6MnB4fS5nYl82OmhvdmVye3RleHQtZGVjb3JhdGlvbjp1bmRlcmxpbmV9LmdiX0sgLmdiXzZ7Y29sb3I6I2UzZTNlMztjb2xvcjp2YXIoLS1vZy1saW5rLWNvbG9yLHZhcigtLWdtMy1zeXMtY29sb3Itb24tc3VyZmFjZSwjZTNlM2UzKSl9c2VudGluZWx7fQ=="}},"time_used":18,"timings":{"blocked":0,"dns":0,"connect":0,"send":0,"wait":18,"receive":0,"ssl":0},"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"www.google.com/gen_204?atyp=csi\u0026ei=Y3pnarTELeimwPAPo6StkA4\u0026s=webhp\u0026t=all\u0026folr=_Y3pnarTELeimwPAPo6StkA4_10\u0026imn=9\u0026dtc=202\u0026stc=46\u0026ima=1\u0026imad=0\u0026imac=1\u0026wh=1024\u0026nt=navigate\u0026ts=82377\u0026nhp=h3\u0026ant=push\u0026thdba=0\u0026thdaa=0\u0026ime=1\u0026imeh=1\u0026imeha=0\u0026imehb=0\u0026imea=0\u0026imeb=0\u0026imel=0\u0026imed=0\u0026imeeb=0\u0026imexb=0\u0026scp=0\u0026cb=82077\u0026ucb=269439\u0026lts=82377\u0026adh=\u0026nv=ne.1,feid.58d2e692-968e-4f75-aa4d-fd5dc79e61f8\u0026hp=\u0026p=bs.true\u0026rt=hst.228,prt.579,afti.610,aft.610,xjses.790,xjsee.913,xjs.913,fcp.602,lcp.602,wsrt.750,cst.25,dnst.5,rqst.111,rspt.23,sslt.25,rqstt.662,unt.629,cstt.636,dit.1335\u0026zx=1785166436746\u0026opi=89978449","fqdn":"www.google.com","domain":"google.com","tld":"com"},"ip":{"addr":"142.251.157.119","port":443,"asn":15169,"as":"GOOGLE","country":"United States","country_code":"US"},"is_navigation_request":false,"resource_type":"beacon","requested_by":"https://www.google.com/","date":"2026-07-27T15:33:56.749Z","timestamp":1785166436749,"http_version":"HTTP/3","security_state":"secure","security_info":{"cipher_suite":"TLS_AES_128_GCM_SHA256","key_group_name":"mlkem768x25519","signature_name":"ECDSA-P256-SHA256","protocol":"TLSv1.3","cert":{"subject":{"commonName":"*.google.com","organization":""},"issuer":{"commonName":"WR2","organization":"Google Trust Services"},"validity":{"start":"Mon, 29 Jun 2026 08:37:25 GMT","end":"Mon, 21 Sep 2026 08:37:24 GMT"},"fingerprint":{"sha1":"D9:DA:81:30:78:3E:9C:6B:5F:9D:18:52:0E:BE:6D:52:2F:FB:33:E0","sha256":"EA:E2:2D:87:EC:9C:D6:51:9D:59:E4:13:35:3B:97:14:E3:DA:58:2D:1C:69:19:41:54:94:25:C3:94:17:F3:0C"}}},"request":{"raw":"POST /gen_204?atyp=csi\u0026ei=Y3pnarTELeimwPAPo6StkA4\u0026s=webhp\u0026t=all\u0026folr=_Y3pnarTELeimwPAPo6StkA4_10\u0026imn=9\u0026dtc=202\u0026stc=46\u0026ima=1\u0026imad=0\u0026imac=1\u0026wh=1024\u0026nt=navigate\u0026ts=82377\u0026nhp=h3\u0026ant=push\u0026thdba=0\u0026thdaa=0\u0026ime=1\u0026imeh=1\u0026imeha=0\u0026imehb=0\u0026imea=0\u0026imeb=0\u0026imel=0\u0026imed=0\u0026imeeb=0\u0026imexb=0\u0026scp=0\u0026cb=82077\u0026ucb=269439\u0026lts=82377\u0026adh=\u0026nv=ne.1,feid.58d2e692-968e-4f75-aa4d-fd5dc79e61f8\u0026hp=\u0026p=bs.true\u0026rt=hst.228,prt.579,afti.610,aft.610,xjses.790,xjsee.913,xjs.913,fcp.602,lcp.602,wsrt.750,cst.25,dnst.5,rqst.111,rspt.23,sslt.25,rqstt.662,unt.629,cstt.636,dit.1335\u0026zx=1785166436746\u0026opi=89978449 HTTP/1.1\r\nHost: www.google.com\r\nUser-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:134.0) Gecko/20100101 Firefox/134.0\r\nAccept: */*\r\nAccept-Language: en-US,en;q=0.9\r\nAccept-Encoding: gzip, deflate, br, zstd\r\nReferer: https://www.google.com/\r\nOrigin: https://www.google.com\r\nSec-GPC: 1\r\nConnection: keep-alive\r\nCookie: AEC=AdJVEauUsWHpfGAsUyeilL8EI9I2Tr9FfEzOqXuEJToXYpKe1KUK4km-Sg; __Secure-ENID=35.SE=Uz4O9fexpqtcg27rsCzqB3loBSC8a70Mqp_d18c3cjeU9uMWe4FHcPW1svFlK9taJqOPsqN9ZTMvrbcif3fGSVkGFj_PZtB1iqcUHQQ3k4McoRQh3TFmXwFvuBZDiuJbZsEWkIiLh9oQZqCS02Kcsd8T8KoXlZsObsNcGy15dXCeCexC1uy7XgZprqFrMQQA8uTOFbrZoEzmrPkKmCFOh5B5Jnu68ljyS8KtzuKzT_-dPSCoq1OOlqfaBgM\r\nSec-Fetch-Dest: empty\r\nSec-Fetch-Mode: no-cors\r\nSec-Fetch-Site: same-origin\r\nPriority: u=6\r\nContent-Length: 0\r\n\r\n","headers":null,"cookies":null,"method":"POST"},"response":{"raw":"HTTP/3 204 \r\ncontent-type: text/html; charset=UTF-8\r\ncontent-security-policy: object-src 'none';base-uri 'self';script-src 'nonce-hhonrEoXTRUSKPknHteW5g' 'strict-dynamic' 'report-sample' 'unsafe-eval' 'unsafe-inline' https: http:;report-uri https://csp.withgoogle.com/csp/gws/other\r\ncross-origin-opener-policy: same-origin-allow-popups; report-to=\"gws\"\r\nreport-to: {\"group\":\"gws\",\"max_age\":2592000,\"endpoints\":[{\"url\":\"https://csp.withgoogle.com/csp/report-to/gws/other\"}]}\r\ndate: Mon, 27 Jul 2026 15:33:56 GMT\r\nserver: gws\r\ncontent-length: 0\r\nx-xss-protection: 0\r\nx-frame-options: SAMEORIGIN\r\nalt-svc: h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000\r\n\r\n","headers":null,"cookies":null,"status_code":"204","status_text":"","fingerprints":[{"name":"Google Web Server","description":"","website":"https://en.wikipedia.org/wiki/Google_Web_Server","common_platform_enumeration":"cpe:2.3:a:google:web_server:*:*:*:*:*:*:*:*","icon":"Google.svg","categories":["Web servers"]}],"data":{"size":0,"size_decoded":653,"mime_type":"text/html; charset=UTF-8","magic":"","md5":"d41d8cd98f00b204e9800998ecf8427e","sha1":"da39a3ee5e6b4b0d3255bfef95601890afd80709","sha256":"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855","sha512":"cf83e1357eefb8bdf1542850d66d8007d620e4050b5715dc83f4a921d36ce9ce47d0d13c5d85f2b0ff8318d2877eec2f63b931bd47417a81a538327af927da3e","ssdeep":"","tlshash":"","first_seen":"0001-01-01T00:00:00Z","last_seen":"2026-08-16T23:46:43.370624Z","times_seen":17926730,"resource_available":true,"data":""}},"time_used":20,"timings":{"blocked":0,"dns":0,"connect":0,"send":0,"wait":20,"receive":0,"ssl":0},"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"www.google.com/client_204?atyp=i\u0026biw=1280\u0026bih=1024\u0026dpr=1\u0026ei=Y3pnarTELeimwPAPo6StkA4\u0026opi=89978449","fqdn":"www.google.com","domain":"google.com","tld":"com"},"ip":{"addr":"142.251.157.119","port":443,"asn":15169,"as":"GOOGLE","country":"United States","country_code":"US"},"is_navigation_request":false,"resource_type":"beacon","requested_by":"https://www.google.com/","date":"2026-07-27T15:33:56.774Z","timestamp":1785166436774,"http_version":"HTTP/3","security_state":"secure","security_info":{"cipher_suite":"TLS_AES_128_GCM_SHA256","key_group_name":"mlkem768x25519","signature_name":"ECDSA-P256-SHA256","protocol":"TLSv1.3","cert":{"subject":{"commonName":"*.google.com","organization":""},"issuer":{"commonName":"WR2","organization":"Google Trust Services"},"validity":{"start":"Mon, 29 Jun 2026 08:37:25 GMT","end":"Mon, 21 Sep 2026 08:37:24 GMT"},"fingerprint":{"sha1":"D9:DA:81:30:78:3E:9C:6B:5F:9D:18:52:0E:BE:6D:52:2F:FB:33:E0","sha256":"EA:E2:2D:87:EC:9C:D6:51:9D:59:E4:13:35:3B:97:14:E3:DA:58:2D:1C:69:19:41:54:94:25:C3:94:17:F3:0C"}}},"request":{"raw":"POST /client_204?atyp=i\u0026biw=1280\u0026bih=1024\u0026dpr=1\u0026ei=Y3pnarTELeimwPAPo6StkA4\u0026opi=89978449 HTTP/1.1\r\nHost: www.google.com\r\nUser-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:134.0) Gecko/20100101 Firefox/134.0\r\nAccept: */*\r\nAccept-Language: en-US,en;q=0.9\r\nAccept-Encoding: gzip, deflate, br, zstd\r\nReferer: https://www.google.com/\r\nContent-Type: text/plain;charset=UTF-8\r\nContent-Length: 0\r\nOrigin: https://www.google.com\r\nSec-GPC: 1\r\nConnection: keep-alive\r\nCookie: AEC=AdJVEauUsWHpfGAsUyeilL8EI9I2Tr9FfEzOqXuEJToXYpKe1KUK4km-Sg; __Secure-ENID=35.SE=Uz4O9fexpqtcg27rsCzqB3loBSC8a70Mqp_d18c3cjeU9uMWe4FHcPW1svFlK9taJqOPsqN9ZTMvrbcif3fGSVkGFj_PZtB1iqcUHQQ3k4McoRQh3TFmXwFvuBZDiuJbZsEWkIiLh9oQZqCS02Kcsd8T8KoXlZsObsNcGy15dXCeCexC1uy7XgZprqFrMQQA8uTOFbrZoEzmrPkKmCFOh5B5Jnu68ljyS8KtzuKzT_-dPSCoq1OOlqfaBgM\r\nSec-Fetch-Dest: empty\r\nSec-Fetch-Mode: no-cors\r\nSec-Fetch-Site: same-origin\r\nPriority: u=6\r\n\r\n","headers":null,"cookies":null,"method":"POST"},"response":{"raw":"HTTP/3 204 \r\ncontent-type: text/html; charset=UTF-8\r\nstrict-transport-security: max-age=31536000\r\ncontent-security-policy: object-src 'none';base-uri 'self';script-src 'nonce-2N_f_GJB_ih1wRVzH6mtKQ' 'strict-dynamic' 'report-sample' 'unsafe-eval' 'unsafe-inline' https: http:;report-uri https://csp.withgoogle.com/csp/gws/fff\r\ncross-origin-opener-policy: same-origin-allow-popups; report-to=\"gws\"\r\nreport-to: {\"group\":\"gws\",\"max_age\":2592000,\"endpoints\":[{\"url\":\"https://csp.withgoogle.com/csp/report-to/gws/fff\"}]}\r\ndate: Mon, 27 Jul 2026 15:33:56 GMT\r\nserver: gws\r\ncontent-length: 0\r\nx-xss-protection: 0\r\nx-frame-options: SAMEORIGIN\r\nalt-svc: h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000\r\n\r\n","headers":null,"cookies":null,"status_code":"204","status_text":"","fingerprints":[{"name":"Google Web Server","description":"","website":"https://en.wikipedia.org/wiki/Google_Web_Server","common_platform_enumeration":"cpe:2.3:a:google:web_server:*:*:*:*:*:*:*:*","icon":"Google.svg","categories":["Web servers"]},{"name":"HSTS","description":"HTTP Strict Transport Security (HSTS) informs browsers that the site should only be accessed using HTTPS.","website":"https://www.rfc-editor.org/rfc/rfc6797#section-6.1","common_platform_enumeration":"","icon":"","categories":["Security"]}],"data":{"size":0,"size_decoded":694,"mime_type":"text/html; charset=UTF-8","magic":"","md5":"d41d8cd98f00b204e9800998ecf8427e","sha1":"da39a3ee5e6b4b0d3255bfef95601890afd80709","sha256":"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855","sha512":"cf83e1357eefb8bdf1542850d66d8007d620e4050b5715dc83f4a921d36ce9ce47d0d13c5d85f2b0ff8318d2877eec2f63b931bd47417a81a538327af927da3e","ssdeep":"","tlshash":"","first_seen":"0001-01-01T00:00:00Z","last_seen":"2026-08-16T23:46:43.370624Z","times_seen":17926730,"resource_available":true,"data":""}},"time_used":39,"timings":{"blocked":0,"dns":0,"connect":0,"send":0,"wait":39,"receive":0,"ssl":0},"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"www.google.com/gen_204?atyp=i\u0026ei=Y3pnarTELeimwPAPo6StkA4\u0026dt19=2\u0026prm23=0\u0026zx=1785166437121\u0026opi=89978449","fqdn":"www.google.com","domain":"google.com","tld":"com"},"ip":{"addr":"142.251.157.119","port":443,"asn":15169,"as":"GOOGLE","country":"United States","country_code":"US"},"is_navigation_request":false,"resource_type":"beacon","requested_by":"https://www.google.com/","date":"2026-07-27T15:33:57.124Z","timestamp":1785166437124,"http_version":"HTTP/3","security_state":"secure","security_info":{"cipher_suite":"TLS_AES_128_GCM_SHA256","key_group_name":"mlkem768x25519","signature_name":"ECDSA-P256-SHA256","protocol":"TLSv1.3","cert":{"subject":{"commonName":"*.google.com","organization":""},"issuer":{"commonName":"WR2","organization":"Google Trust Services"},"validity":{"start":"Mon, 29 Jun 2026 08:37:25 GMT","end":"Mon, 21 Sep 2026 08:37:24 GMT"},"fingerprint":{"sha1":"D9:DA:81:30:78:3E:9C:6B:5F:9D:18:52:0E:BE:6D:52:2F:FB:33:E0","sha256":"EA:E2:2D:87:EC:9C:D6:51:9D:59:E4:13:35:3B:97:14:E3:DA:58:2D:1C:69:19:41:54:94:25:C3:94:17:F3:0C"}}},"request":{"raw":"POST /gen_204?atyp=i\u0026ei=Y3pnarTELeimwPAPo6StkA4\u0026dt19=2\u0026prm23=0\u0026zx=1785166437121\u0026opi=89978449 HTTP/1.1\r\nHost: www.google.com\r\nUser-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:134.0) Gecko/20100101 Firefox/134.0\r\nAccept: */*\r\nAccept-Language: en-US,en;q=0.9\r\nAccept-Encoding: gzip, deflate, br, zstd\r\nReferer: https://www.google.com/\r\nOrigin: https://www.google.com\r\nSec-GPC: 1\r\nConnection: keep-alive\r\nCookie: AEC=AdJVEauUsWHpfGAsUyeilL8EI9I2Tr9FfEzOqXuEJToXYpKe1KUK4km-Sg; __Secure-ENID=35.SE=Uz4O9fexpqtcg27rsCzqB3loBSC8a70Mqp_d18c3cjeU9uMWe4FHcPW1svFlK9taJqOPsqN9ZTMvrbcif3fGSVkGFj_PZtB1iqcUHQQ3k4McoRQh3TFmXwFvuBZDiuJbZsEWkIiLh9oQZqCS02Kcsd8T8KoXlZsObsNcGy15dXCeCexC1uy7XgZprqFrMQQA8uTOFbrZoEzmrPkKmCFOh5B5Jnu68ljyS8KtzuKzT_-dPSCoq1OOlqfaBgM\r\nSec-Fetch-Dest: empty\r\nSec-Fetch-Mode: no-cors\r\nSec-Fetch-Site: same-origin\r\nPriority: u=6\r\nContent-Length: 0\r\n\r\n","headers":null,"cookies":null,"method":"POST"},"response":{"raw":"HTTP/3 204 \r\ncontent-type: text/html; charset=UTF-8\r\ncontent-security-policy: object-src 'none';base-uri 'self';script-src 'nonce-9R-zstoJqlZAeNRLir9UoA' 'strict-dynamic' 'report-sample' 'unsafe-eval' 'unsafe-inline' https: http:;report-uri https://csp.withgoogle.com/csp/gws/other\r\ncross-origin-opener-policy: same-origin-allow-popups; report-to=\"gws\"\r\nreport-to: {\"group\":\"gws\",\"max_age\":2592000,\"endpoints\":[{\"url\":\"https://csp.withgoogle.com/csp/report-to/gws/other\"}]}\r\ndate: Mon, 27 Jul 2026 15:33:57 GMT\r\nserver: gws\r\ncontent-length: 0\r\nx-xss-protection: 0\r\nx-frame-options: SAMEORIGIN\r\nalt-svc: h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000\r\n\r\n","headers":null,"cookies":null,"status_code":"204","status_text":"","fingerprints":[{"name":"Google Web Server","description":"","website":"https://en.wikipedia.org/wiki/Google_Web_Server","common_platform_enumeration":"cpe:2.3:a:google:web_server:*:*:*:*:*:*:*:*","icon":"Google.svg","categories":["Web servers"]}],"data":{"size":0,"size_decoded":653,"mime_type":"text/html; charset=UTF-8","magic":"","md5":"d41d8cd98f00b204e9800998ecf8427e","sha1":"da39a3ee5e6b4b0d3255bfef95601890afd80709","sha256":"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855","sha512":"cf83e1357eefb8bdf1542850d66d8007d620e4050b5715dc83f4a921d36ce9ce47d0d13c5d85f2b0ff8318d2877eec2f63b931bd47417a81a538327af927da3e","ssdeep":"","tlshash":"","first_seen":"0001-01-01T00:00:00Z","last_seen":"2026-08-16T23:46:43.370624Z","times_seen":17926730,"resource_available":true,"data":""}},"time_used":19,"timings":{"blocked":-1,"dns":0,"connect":0,"send":0,"wait":19,"receive":0,"ssl":0},"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"www.google.com/client_204?cs=1\u0026opi=89978449","fqdn":"www.google.com","domain":"google.com","tld":"com"},"ip":{"addr":"142.251.157.119","port":443,"asn":15169,"as":"GOOGLE","country":"United States","country_code":"US"},"is_navigation_request":false,"resource_type":"xhr","requested_by":"https://www.google.com/","date":"2026-07-27T15:33:57.125Z","timestamp":1785166437125,"http_version":"HTTP/3","security_state":"secure","security_info":{"cipher_suite":"TLS_AES_128_GCM_SHA256","key_group_name":"mlkem768x25519","signature_name":"ECDSA-P256-SHA256","protocol":"TLSv1.3","cert":{"subject":{"commonName":"*.google.com","organization":""},"issuer":{"commonName":"WR2","organization":"Google Trust Services"},"validity":{"start":"Mon, 29 Jun 2026 08:37:25 GMT","end":"Mon, 21 Sep 2026 08:37:24 GMT"},"fingerprint":{"sha1":"D9:DA:81:30:78:3E:9C:6B:5F:9D:18:52:0E:BE:6D:52:2F:FB:33:E0","sha256":"EA:E2:2D:87:EC:9C:D6:51:9D:59:E4:13:35:3B:97:14:E3:DA:58:2D:1C:69:19:41:54:94:25:C3:94:17:F3:0C"}}},"request":{"raw":"GET /client_204?cs=1\u0026opi=89978449 HTTP/1.1\r\nHost: www.google.com\r\nUser-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:134.0) Gecko/20100101 Firefox/134.0\r\nAccept: */*\r\nAccept-Language: en-US,en;q=0.9\r\nAccept-Encoding: gzip, deflate, br, zstd\r\nReferer: https://www.google.com/\r\nSec-GPC: 1\r\nConnection: keep-alive\r\nCookie: AEC=AdJVEauUsWHpfGAsUyeilL8EI9I2Tr9FfEzOqXuEJToXYpKe1KUK4km-Sg; __Secure-ENID=35.SE=Uz4O9fexpqtcg27rsCzqB3loBSC8a70Mqp_d18c3cjeU9uMWe4FHcPW1svFlK9taJqOPsqN9ZTMvrbcif3fGSVkGFj_PZtB1iqcUHQQ3k4McoRQh3TFmXwFvuBZDiuJbZsEWkIiLh9oQZqCS02Kcsd8T8KoXlZsObsNcGy15dXCeCexC1uy7XgZprqFrMQQA8uTOFbrZoEzmrPkKmCFOh5B5Jnu68ljyS8KtzuKzT_-dPSCoq1OOlqfaBgM\r\nSec-Fetch-Dest: empty\r\nSec-Fetch-Mode: cors\r\nSec-Fetch-Site: same-origin\r\nPragma: no-cache\r\nCache-Control: no-cache\r\n\r\n","headers":null,"cookies":null,"method":"GET"},"response":{"raw":"HTTP/3 204 \r\ncontent-type: text/html; charset=UTF-8\r\nstrict-transport-security: max-age=31536000\r\ncontent-security-policy: object-src 'none';base-uri 'self';script-src 'nonce-mo1NM_RVcrG2-Hx7Cl3H5A' 'strict-dynamic' 'report-sample' 'unsafe-eval' 'unsafe-inline' https: http:;report-uri https://csp.withgoogle.com/csp/gws/fff\r\ncross-origin-opener-policy: same-origin-allow-popups; report-to=\"gws\"\r\nreport-to: {\"group\":\"gws\",\"max_age\":2592000,\"endpoints\":[{\"url\":\"https://csp.withgoogle.com/csp/report-to/gws/fff\"}]}\r\np3p: CP=\"This is not a P3P policy! See g.co/p3phelp for more info.\"\r\ndate: Mon, 27 Jul 2026 15:33:57 GMT\r\nserver: gws\r\ncontent-length: 0\r\nx-xss-protection: 0\r\nx-frame-options: SAMEORIGIN\r\nset-cookie: __Secure-ENID=35.SE=Y_fs7GGaQFs5VFS1Srk0O5HomBGnVvSvp_o-rK3Am89F7jST0q2gQCa-M2gCxRk_RBjJksMh8YwWZDFw6RfcbCeBYtqlTvos6MvDyL0vbheeaZHlJlF3BR2G5kruhoHre_VO9emvjcRgOiD0eMH_wgHEfSKU-zQvglvx9fcoejE2yypfhg2tPUPVvlmUpN-CV5a7002cW6ZslC01vtYrwve2XCNHFFzwCEs876fojdvGEQOKEx9xE4f1ASBTSBOWDkt2Ow; expires=Fri, 27-Aug-2027 07:52:13 GMT; path=/; domain=.google.com; Secure; HttpOnly; SameSite=lax\r\nalt-svc: h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000\r\n\r\n","headers":null,"cookies":null,"status_code":"204","status_text":"","fingerprints":[{"name":"HSTS","description":"HTTP Strict Transport Security (HSTS) informs browsers that the site should only be accessed using HTTPS.","website":"https://www.rfc-editor.org/rfc/rfc6797#section-6.1","common_platform_enumeration":"","icon":"","categories":["Security"]},{"name":"Google Web Server","description":"","website":"https://en.wikipedia.org/wiki/Google_Web_Server","common_platform_enumeration":"cpe:2.3:a:google:web_server:*:*:*:*:*:*:*:*","icon":"Google.svg","categories":["Web servers"]}],"data":{"size":0,"size_decoded":1158,"mime_type":"text/html; charset=UTF-8","magic":"","md5":"d41d8cd98f00b204e9800998ecf8427e","sha1":"da39a3ee5e6b4b0d3255bfef95601890afd80709","sha256":"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855","sha512":"cf83e1357eefb8bdf1542850d66d8007d620e4050b5715dc83f4a921d36ce9ce47d0d13c5d85f2b0ff8318d2877eec2f63b931bd47417a81a538327af927da3e","ssdeep":"","tlshash":"","first_seen":"0001-01-01T00:00:00Z","last_seen":"2026-08-16T23:46:43.370624Z","times_seen":17926730,"resource_available":true,"data":""}},"time_used":41,"timings":{"blocked":-1,"dns":0,"connect":0,"send":0,"wait":41,"receive":0,"ssl":0},"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"www.google.com/","fqdn":"www.google.com","domain":"google.com","tld":"com"},"ip":{"addr":"142.251.157.119","port":443,"asn":15169,"as":"GOOGLE","country":"United States","country_code":"US"},"is_navigation_request":true,"resource_type":"document","requested_by":"","date":"2026-07-27T15:33:55.705Z","timestamp":1785166435705,"http_version":"HTTP/3","security_state":"secure","security_info":{"cipher_suite":"TLS_AES_128_GCM_SHA256","key_group_name":"mlkem768x25519","signature_name":"ECDSA-P256-SHA256","protocol":"TLSv1.3","cert":{"subject":{"commonName":"*.google.com","organization":""},"issuer":{"commonName":"WR2","organization":"Google Trust Services"},"validity":{"start":"Mon, 29 Jun 2026 08:37:25 GMT","end":"Mon, 21 Sep 2026 08:37:24 GMT"},"fingerprint":{"sha1":"D9:DA:81:30:78:3E:9C:6B:5F:9D:18:52:0E:BE:6D:52:2F:FB:33:E0","sha256":"EA:E2:2D:87:EC:9C:D6:51:9D:59:E4:13:35:3B:97:14:E3:DA:58:2D:1C:69:19:41:54:94:25:C3:94:17:F3:0C"}}},"request":{"raw":"GET / HTTP/1.1\r\nHost: www.google.com\r\nUser-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:134.0) Gecko/20100101 Firefox/134.0\r\nAccept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8\r\nAccept-Language: en-US,en;q=0.9\r\nAccept-Encoding: gzip, deflate, br, zstd\r\nSec-GPC: 1\r\nConnection: keep-alive\r\nUpgrade-Insecure-Requests: 1\r\nSec-Fetch-Dest: document\r\nSec-Fetch-Mode: navigate\r\nSec-Fetch-Site: none\r\nPriority: u=0, i\r\nPragma: no-cache\r\nCache-Control: no-cache\r\n\r\n","headers":null,"cookies":null,"method":"GET"},"response":{"raw":"HTTP/3 200 \r\ncontent-type: text/html; charset=UTF-8\r\ndate: Mon, 27 Jul 2026 15:33:55 GMT\r\nexpires: -1\r\ncache-control: private, max-age=0\r\nstrict-transport-security: max-age=31536000\r\ncontent-security-policy-report-only: object-src 'none';base-uri 'self';script-src 'nonce-YOyHH3ltOmD9Boy_ZByAlQ' 'strict-dynamic' 'report-sample' 'unsafe-eval' 'unsafe-inline' https: http:;report-uri https://csp.withgoogle.com/csp/gws/other-hp\r\ncross-origin-opener-policy: same-origin-allow-popups; report-to=\"gws\"\r\nreport-to: {\"group\":\"gws\",\"max_age\":2592000,\"endpoints\":[{\"url\":\"https://csp.withgoogle.com/csp/report-to/gws/other\"}]}\r\naccept-ch: Sec-CH-Prefers-Color-Scheme\r\np3p: CP=\"This is not a P3P policy! See g.co/p3phelp for more info.\"\r\ncontent-encoding: br\r\nserver: gws\r\ncontent-length: 82077\r\nx-xss-protection: 0\r\nx-frame-options: SAMEORIGIN\r\nset-cookie: AEC=AdJVEauUsWHpfGAsUyeilL8EI9I2Tr9FfEzOqXuEJToXYpKe1KUK4km-Sg; expires=Sat, 23-Jan-2027 15:33:55 GMT; path=/; domain=.google.com; Secure; HttpOnly; SameSite=lax\n__Secure-ENID=35.SE=AbigeV3aJ0m6xMobN92AbNZpW8pBnglGTPw_dz_A9WWyoDaiBBZPKRYUFk43qYtDkrYoTgVKiKtyKOguRjujzVzhuA6WYYbk-i87vjK7wNHmdliDMhNspbLvs4LU7H3yif4utRnzW3A5pWS7luM5rorSqU-pj8vCqCmdLtP-tPTBFRmS_IwoinM092pFPLFq5WUhH_JzQWk4Nj64_cv8DwX9Gzz3yPDcXsoOsZMMsbp3c373u3CG8Y4REmw; expires=Fri, 27-Aug-2027 07:52:13 GMT; path=/; domain=.google.com; Secure; HttpOnly; SameSite=lax\r\nalt-svc: h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000\r\n\r\n","headers":null,"cookies":null,"status_code":"200","status_text":"","fingerprints":[{"name":"Google Web Server","description":"","website":"https://en.wikipedia.org/wiki/Google_Web_Server","common_platform_enumeration":"cpe:2.3:a:google:web_server:*:*:*:*:*:*:*:*","icon":"Google.svg","categories":["Web servers"]},{"name":"HSTS","description":"HTTP Strict Transport Security (HSTS) informs browsers that the site should only be accessed using HTTPS.","website":"https://www.rfc-editor.org/rfc/rfc6797#section-6.1","common_platform_enumeration":"","icon":"","categories":["Security"]}],"data":{"size":269439,"size_decoded":83519,"mime_type":"text/html; charset=UTF-8","magic":"HTML document, ASCII text, with very long lines (28739)","md5":"e7cb1bc84ffb5d721b628db96b0a6881","sha1":"c4a6ddfcab2fb7656cac4a107527d52b96a8e582","sha256":"fd4d45543bd6b70afd3093f709331dcdecea20c6c1fc5615c817e280c86bd2bc","sha512":"79ae1e8de76c1bf7729b475016b74c9ded3ba091ddc1fbb57123cfe91ba66d70560aa6aafb3672006651b41b54a6c7a93c087cbdb4994d618de6b6d4cb6a4f9f","ssdeep":"3072:LiNusLEzHBAbI07YKeJwH5YjERyIKWXYhKNdV:LiNusLEzHBAI07MJwH5hyIAGV","tlshash":"2c447d327300b83bb813d9a0a17f7f4e3c35f12bdd0a4ab8a595d9709ee2db2151665c","first_seen":"2026-07-27T15:34:29.316215Z","last_seen":"2026-07-27T15:34:29.316215Z","times_seen":1,"resource_available":false,"data":"PCFkb2N0eXBlIGh0bWw+PGh0bWwgaXRlbXNjb3BlPSIiIGl0ZW10eXBlPSJodHRwOi8vc2NoZW1hLm9yZy9XZWJQYWdlIiBsYW5nPSJubyI+PGhlYWQ+PG1ldGEgY2hhcnNldD0iVVRGLTgiPjxtZXRhIGNvbnRlbnQ9Im9yaWdpbiIgbmFtZT0icmVmZXJyZXIiPjxsaW5rIGhyZWY9Ii8vd3d3LmdzdGF0aWMuY29tL2ltYWdlcy9icmFuZGluZy9zZWFyY2hsb2dvL2ljby9mYXZpY29uLmljbyIgcmVsPSJpY29uIj48bWV0YSBjb250ZW50PSIvaW1hZ2VzL2JyYW5kaW5nL2dvb2dsZWcvMXgvZ29vZ2xlZ19zdGFuZGFyZF9jb2xvcl8xMjhkcC5wbmciIGl0ZW1wcm9wPSJpbWFnZSI+PHN0eWxlPkBmb250LWZhY2V7Zm9udC1mYW1pbHk6J0dvb2dsZSBTYW5zJztmb250LXN0eWxlOm5vcm1hbDtmb250LXdlaWdodDo0MDAgNzAwO2ZvbnQtZmVhdHVyZS1zZXR0aW5nczoiY2FsdCIgMCwibGlnYSIgMDtmb250LWRpc3BsYXk6b3B0aW9uYWw7c3JjOnVybCgvL2ZvbnRzLmdzdGF0aWMuY29tL3MvZ29vZ2xlc2Fucy92MjkvNFVhR3JFTkhzeEpsR0R1R28xT0lsTDNPd3A0LndvZmYyKWZvcm1hdCgnd29mZjInKTt1bmljb2RlLXJhbmdlOlUrMDAwMC0wMEZGLFUrMDEzMSxVKzAxNTItMDE1MyxVKzAyQkItMDJCQyxVKzAyQzYsVSswMkRBLFUrMDJEQyxVKzAzMDQsVSswMzA4LFUrMDMyOSxVKzIwMDAtMjA2RixVKzIwQUMsVSsyMTIyLFUrMjE5MSxVKzIxOTMsVSsyMjEyLFUrMjIxNSxVK0ZFRkYsVStGRkZEO308L3N0eWxlPjxzY3JpcHQgbm9uY2U9IllPeUhIM2x0T21EOUJveV9aQnlBbFEiPihmdW5jdGlvbigpe3ZhciB3PVsiR29vZ2xlIFNhbnMiLFs0MDAsNTAwLDcwMF1dOyhmdW5jdGlvbigpe2Zvcih2YXIgYT0wO2E8dy5sZW5ndGg7YSs9Milmb3IodmFyIGI9d1thXSxlPXdbYSsxXSxkPTAsYz12b2lkIDA7Yz1lW2RdOysrZCliPT09Ik5vdG8gQ29sb3IgRW1vamkiP2RvY3VtZW50LmZvbnRzLmxvYWQoYysiIDEwcHQgIitiLCJcdWQ4M2NcdWRkZmFcdWQ4M2NcdWRkZjgiKS5jYXRjaChmdW5jdGlvbigpe30pOmRvY3VtZW50LmZvbnRzLmxvYWQoYysiIDEwcHQgIitiKS5jYXRjaChmdW5jdGlvbigpe30pfSkoKTt9KSgpOzwvc2NyaXB0Pjx0aXRsZT5Hb29nbGU8L3RpdGxlPjxzY3JpcHQgbm9uY2U9IllPeUhIM2x0T21EOUJveV9aQnlBbFEiPndpbmRvdy5faHN0PURhdGUubm93KCk7PC9zY3JpcHQ+PHNjcmlwdCBub25jZT0iWU95SEgzbHRPbUQ5Qm95X1pCeUFsUSI+KGZ1bmN0aW9uKCl7dmFyIF9nPXtrRUk6J1kzcG5hclRFTGVpbXdQQVBvNlN0a0E0JyxrRVhQSTonMzEnLGtCTDonX1NXTicsa09QSTo4OTk3ODQ0OX07KGZ1bmN0aW9uKCl7dmFyIGE7KChhPXdpbmRvdy5nb29nbGUpPT1udWxsPzA6YS5zdHZzYyk/Z29vZ2xlLmtFST1fZy5rRUk6d2luZG93Lmdvb2dsZT1fZzt9KS5jYWxsKHRoaXMpO30pKCk7KGZ1bmN0aW9uKCl7Z29vZ2xlLnNuPSd3ZWJocCc7Z29vZ2xlLmtITD0nbm8nO2dvb2dsZS51c2I9dHJ1ZTt9KSgpOyhmdW5jdGlvbigpewp2YXIgaD10aGlzfHxzZWxmO3ZhciBrPS8jfCQvO2Z1bmN0aW9uIGwoYSxjKXt2YXIgZT1hLnNlYXJjaChrKTthOnt2YXIgYj0wO2Zvcih2YXIgZj1jLmxlbmd0aDsoYj1hLmluZGV4T2YoYyxiKSk+PTAmJmI8ZTspe3ZhciBkPWEuY2hhckNvZGVBdChiLTEpO2lmKGQ9PTM4fHxkPT02MylpZihkPWEuY2hhckNvZGVBdChiK2YpLCFkfHxkPT02MXx8ZD09Mzh8fGQ9PTM1KWJyZWFrIGE7Yis9ZisxfWI9LTF9aWYoYjwwKXJldHVybiBudWxsO2Y9YS5pbmRleE9mKCImIixiKTtpZihmPDB8fGY+ZSlmPWU7Yis9Yy5sZW5ndGgrMTtyZXR1cm4gZGVjb2RlVVJJQ29tcG9uZW50KGEuc2xpY2UoYixmIT09LTE/ZjowKS5yZXBsYWNlKC9cKy9nLCIgIikpfTtmdW5jdGlvbiBtKCl7cmV0dXJuIHdpbmRvdy5nb29nbGUmJndpbmRvdy5nb29nbGUua09QSXx8bnVsbH07dmFyIG47ZnVuY3Rpb24gcChhKXtmb3IodmFyIGM7YSYmKCFhLmdldEF0dHJpYnV0ZXx8IShjPWEuZ2V0QXR0cmlidXRlKCJlaWQiKSkpOylhPWEucGFyZW50Tm9kZTtyZXR1cm4gY3x8bn1mdW5jdGlvbiBxKGEpe2Zvcih2YXIgYz1udWxsO2EmJighYS5nZXRBdHRyaWJ1dGV8fCEoYz1hLmdldEF0dHJpYnV0ZSgibGVpZCIpKSk7KWE9YS5wYXJlbnROb2RlO3JldHVybiBjfQpmdW5jdGlvbiB0KGEsYyxlLGIsZil7dmFyIGQ9IiI7Yy5zZWFyY2goIiZlaT0iKT09PS0xJiYoZD0iJmVpPSIrcChiKSxjLnNlYXJjaCgiJmxlaT0iKT09PS0xJiYoYj1xKGIpKSYmKGQrPSImbGVpPSIrYikpO3ZhciByPWMuc2VhcmNoKCImY3NoaWQ9Iik9PT0tMSYmYSE9PSJzbGgiO3ZhciBnPWc9PT12b2lkIDA/d2luZG93LmxvY2F0aW9uOmc7Yj0iJnp4PSIrRGF0ZS5ub3coKS50b1N0cmluZygpO2guX2NzaGlkJiZyJiYoYis9IiZjc2hpZD0iK2guX2NzaGlkKTsoZT1lKCkpJiYoYis9IiZvcGk9IitlKTsoZT1sKGcuc2VhcmNoLCJnZW1jaWQiKSkmJihiKz0iJmdlbWNpZD0iK2UpOyhnPWwoZy5zZWFyY2gsImdlbXJpZCIpKSYmKGIrPSImZ2VtcmlkPSIrZyk7cmV0dXJuIi8iKyhmfHwiZ2VuXzIwNCIpKyI/YXR5cD1pJmN0PSIrU3RyaW5nKGEpKyImY2FkPSIrKGMrZCtiKX07bj1nb29nbGUua0VJO2dvb2dsZS5nZXRFST1wO2dvb2dsZS5nZXRMRUk9cTtnb29nbGUubWw9ZnVuY3Rpb24oKXtyZXR1cm4gbnVsbH07Z29vZ2xlLmxvZz1mdW5jdGlvbihhLGMsZSxiLGYsZCl7ZD1kPT09dm9pZCAwP206ZDtlfHwoZT10KGEsYyxkLGIsZikpO2E9ZTsvXmh0dHA6L2kudGVzdChhKSYmd2luZG93LmxvY2F0aW9uLnByb3RvY29sPT09Imh0dHBzOiImJihnb29nbGUubWwmJmdvb2dsZS5tbChFcnJvcigiYSIpLCExLHtzcmM6YSxnbG1tOjF9KSxhPSIiKTtpZihlPWEpdHJ5e3dpbmRvdy5uYXZpZ2F0b3Iuc2VuZEJlYWNvbihlLCIiKX1jYXRjaChyKXt9fTtnb29nbGUubG9nVXJsPWZ1bmN0aW9uKGEsYyl7Yz1jPT09dm9pZCAwP206YztyZXR1cm4gdCgiIixhLGMpfTt9KS5jYWxsKHRoaXMpOyhmdW5jdGlvbigpe2dvb2dsZS55PXt9O2dvb2dsZS5zeT17fTtmdW5jdGlvbiBlKGEsYixkKXtpZihhKXZhciBjPWEuaWQ7ZWxzZXtkbyBjPU1hdGgucmFuZG9tKCk7d2hpbGUoZFtjXSl9ZFtjXT1bYSxiXX12YXIgZjsoZj1nb29nbGUpLnh8fChmLng9ZnVuY3Rpb24oYSxiKXtlKGEsYixnb29nbGUueSl9KTt2YXIgZzsoZz1nb29nbGUpLnN4fHwoZy5zeD1mdW5jdGlvbihhLGIpe2UoYSxiLGdvb2dsZS5zeSl9KTtnb29nbGUuYng9ITE7dmFyIGg7KGg9Z29vZ2xlKS5seHx8KGgubHg9ZnVuY3Rpb24oKXt9KTt2YXIgaz1bXSxsOyhsPWdvb2dsZSkuZmNlfHwobC5mY2U9ZnVuY3Rpb24oYSxiLGQsYyl7ay5wdXNoKFthLGIsZCxjXSl9KTtnb29nbGUucWNlPWs7Z29vZ2xlLmFkbD1bXTt9KS5jYWxsKHRoaXMpO2dvb2dsZS5mPXt9OyhmdW5jdGlvbigpewpkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigic3VibWl0IixmdW5jdGlvbihiKXt2YXIgYTtpZihhPWIudGFyZ2V0KXt2YXIgYz1hLmdldEF0dHJpYnV0ZSgiZGF0YS1zdWJtaXRmYWxzZSIpO2E9Yz09PSIxInx8Yz09PSJxIiYmIWEuZWxlbWVudHMucS52YWx1ZT8hMDohMX1lbHNlIGE9ITE7YSYmKGIucHJldmVudERlZmF1bHQoKSxiLnN0b3BQcm9wYWdhdGlvbigpKX0sITApO2RvY3VtZW50LmRvY3VtZW50RWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCJjbGljayIsZnVuY3Rpb24oYil7dmFyIGE7YTp7Zm9yKGE9Yi50YXJnZXQ7YSYmYSE9PWRvY3VtZW50LmRvY3VtZW50RWxlbWVudDthPWEucGFyZW50RWxlbWVudClpZihhLnRhZ05hbWU9PT0iQSIpe2E9YS5nZXRBdHRyaWJ1dGUoImRhdGEtbm9ocmVmIik9PT0iMSI7YnJlYWsgYX1hPSExfWEmJmIucHJldmVudERlZmF1bHQoKX0sITApO30pLmNhbGwodGhpcyk7KGZ1bmN0aW9uKCl7Z29vZ2xlLmhzPXtoOnRydWUsbmhzOmZhbHNlLHNpZTpmYWxzZX07fSkoKTsoZnVuY3Rpb24oKXtnb29nbGUuYz17Y2FwOjIwMDAsdGltbDpmYWxzZSx2aXM6dHJ1ZX07fSkoKTsoZnVuY3Rpb24oKXsKdmFyIGw9dGhpc3x8c2VsZjt3aW5kb3cuZ29vZ2xlPXdpbmRvdy5nb29nbGV8fHt9O3ZhciBtPXdpbmRvdy5wZXJmb3JtYW5jZSYmd2luZG93LnBlcmZvcm1hbmNlLnRpbWluZyYmIm5hdmlnYXRpb25TdGFydCJpbiB3aW5kb3cucGVyZm9ybWFuY2UudGltaW5nLGFhPWdvb2dsZS5zdHZzYyYmZ29vZ2xlLnN0dnNjLm5zLHI9bT9hYXx8d2luZG93LnBlcmZvcm1hbmNlLnRpbWluZy5uYXZpZ2F0aW9uU3RhcnQ6dm9pZCAwO2Z1bmN0aW9uIHQoKXtyZXR1cm4gd2luZG93LnBlcmZvcm1hbmNlLm5vdygpLShnb29nbGUuc3R2c2MmJmdvb2dsZS5zdHZzYy5wbm98fDApfXZhciBiYT1nb29nbGUuc3R2c2MmJmdvb2dsZS5zdHZzYy5ycyx1PW0/YmF8fHdpbmRvdy5wZXJmb3JtYW5jZS50aW1pbmcucmVzcG9uc2VTdGFydDp2b2lkIDA7ZnVuY3Rpb24gdigpe3ZhciBhLGI7cmV0dXJuKGE9d2luZG93LnBlcmZvcm1hbmNlKT09bnVsbD92b2lkIDA6KGI9YS5nZXRFbnRyaWVzQnlUeXBlKT09bnVsbD92b2lkIDA6Yi5jYWxsKGEsIm5hdmlnYXRpb24iKVswXX07dmFyIGNhPWdvb2dsZS5jLmNhcCxkYT1nb29nbGUuYy5laGNsLHc9Z29vZ2xlLmMuZWhjbGEsZWE9Z29vZ2xlLmMuc3NkaSx4PWdvb2dsZS5jLnRpbWw7ZnVuY3Rpb24geShhLGIsZCl7Z29vZ2xlLnRpY2soImxvYWQiLGEsYixkKX1mdW5jdGlvbiBBKGEsYil7Z29vZ2xlLmMuZSgibG9hZCIsYSxTdHJpbmcoYikpfTt2YXIgQj17fTtmdW5jdGlvbiBDKGEsYil7Z29vZ2xlLnRpbWVycy5sb2FkLm1bYV09PT0hMT9iKCk6KEJbYV18fChCW2FdPVtdKSxCW2FdLnB1c2goYikpfWdvb2dsZS5jLnE9Qztnb29nbGUuY2FmdD1mdW5jdGlvbihhKXtDKCJhZnQiLGEpfTtmdW5jdGlvbiBEKGEsYixkKXthOnt2YXIgYz1hLnBhcmVudEVsZW1lbnQ7aWYoYyYmKGMuY2xhc3NMaXN0LmNvbnRhaW5zKCJxMU1HNGUiKXx8Yy5jbGFzc0xpc3QuY29udGFpbnMoInVoSE93ZiIpKSYmKGMuc3R5bGUuaGVpZ2h0fHxjLnN0eWxlLndpZHRoKSl7dmFyIGc9Yy5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSxlPWEuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7aWYoZy5oZWlnaHQ8ZS5oZWlnaHR8fGcud2lkdGg8ZS53aWR0aCl7YT1jO2JyZWFrIGF9fX1mb3IoYz1hO2MmJmMhPT1iJiZjLnRhZ05hbWUhPT0iRy1TQ1JPTExJTkctQ0FST1VTRUwiJiYhYy5oYXNBdHRyaWJ1dGUoImRhdGEtc24tY29udGFpbmVyIik7KWM9Yy5wYXJlbnRFbGVtZW50O2I9YztnPWdvb2dsZS52eDtjPWdvb2dsZS52eTshKGU9IWEpJiYoZT0hZCkmJihhLnN0eWxlLmRpc3BsYXk9PT0ibm9uZSI/ZT0hMDpkb2N1bWVudC5kZWZhdWx0VmlldyYmZG9jdW1lbnQuZGVmYXVsdFZpZXcuZ2V0Q29tcHV0ZWRTdHlsZT8oZT1kb2N1bWVudC5kZWZhdWx0Vmlldy5nZXRDb21wdXRlZFN0eWxlKGEpLGU9ISFlJiYoZS52aXNpYmlsaXR5PT09ImhpZGRlbiJ8fGUuaGVpZ2h0PT09IjBweCImJmUud2lkdGg9PT0iMHB4IikpOmU9ITEpO2lmKGUpZD0wO2Vsc2UgaWYoYS5nZXRCb3VuZGluZ0NsaWVudFJlY3Qpe2lmKGU9IWQpe2I6e2ZvcihlPWE7ZSYmZSE9PWI7ZT1lLnBhcmVudEVsZW1lbnQpaWYoZS5zdHlsZS5vdmVyZmxvdz09PSJoaWRkZW4iKWJyZWFrIGI7ZT1udWxsfXZhciBoPWU7aD8oZT1hLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLGg9aC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSxlPWUuYm90dG9tPGgudG9wfHxlLnRvcD49aC5ib3R0b218fGUucmlnaHQ8aC5sZWZ0fHxlLmxlZnQ+PWgucmlnaHQpOmU9ITF9aWYoZSlkPTA7ZWxzZXtlPWEuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7dmFyIGs9ZS5sZWZ0Kyh3aW5kb3cucGFnZVhPZmZzZXQtKGd8fDApKTtjPWUudG9wKyh3aW5kb3cucGFnZVlPZmZzZXQtCihjfHwwKSk7Zz1lLndpZHRoO2g9ZS5oZWlnaHQ7dmFyIGY9MDtpZighKCFkJiZoPD0wJiZnPD0wKSl7ZD1kb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuY2xpZW50SGVpZ2h0O2MraDwwP2Y9MjpjPj1kJiYoZj00KTtpZihrK2c8MHx8az49KHdpbmRvdy5pbm5lcldpZHRofHxkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuY2xpZW50V2lkdGgpKWZ8PTg7ZWxzZSBpZihiKXtmb3Ioaz1lLmxlZnQ7YSYmYSE9PWI7YT1hLnBhcmVudEVsZW1lbnQpays9YS5zY3JvbGxMZWZ0O2E9Yi5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtpZihrK2c8YS5sZWZ0fHxrPj1hLnJpZ2h0KWZ8PTg7ZS50b3A+PWEuYm90dG9tJiYoZnw9NCl9Znx8KGY9MSxjK2g+ZCYmKGZ8PTQpKX1kPWZ9fWVsc2UgZD0xO3JldHVybiBkfTtnb29nbGUudGltZXJzPXt9O2dvb2dsZS5zdGFydFRpY2s9ZnVuY3Rpb24oYSxiKXtnb29nbGUudGltZXJzW2FdPXt0OntzdGFydDpifHxEYXRlLm5vdygpfSxlOnt9LG06e319fTtnb29nbGUudGljaz1mdW5jdGlvbihhLGIsZCxjKXtkPWQhPT12b2lkIDA/ZDpEYXRlLm5vdygpO2dvb2dsZS50aW1lcnNbYV0udFtiXT1kO2MmJnImJnBlcmZvcm1hbmNlLm1hcmsmJihhPWQtcixhPjAmJnBlcmZvcm1hbmNlLm1hcmsoYyx7c3RhcnRUaW1lOmF9KSl9O2dvb2dsZS5jLmU9ZnVuY3Rpb24oYSxiLGQpe2dvb2dsZS50aW1lcnNbYV0uZVtiXT1kfTtnb29nbGUuYy5iPWZ1bmN0aW9uKGEpe3ZhciBiPWdvb2dsZS50aW1lcnMubG9hZC5tO2JbYV0mJmdvb2dsZS5tbChFcnJvcigiYiIpLCExLHttOmF9KTtiW2FdPSEwfTtnb29nbGUuYy51PWZ1bmN0aW9uKGEpe3ZhciBiPWdvb2dsZS50aW1lcnMubG9hZC5tLGQ9ITA7aWYoYlthXSl7Zm9yKHZhciBjPUJbYV18fFtdLGc9MDtnPGMubGVuZ3RoOysrZyl0cnl7Y1tnXSgpfWNhdGNoKGgpe2dvb2dsZS5tbChoLCExKX1jLmxlbmd0aD0wO2JbYV09ITE7Zm9yKHZhciBlIGluIGIpYltlXSYmKGQ9ITEpfWVsc2V7ZD0iIjtmb3IoYyBpbiBiKWQrPWMrIjoiK2JbY10rIjsiO2dvb2dsZS5tbChFcnJvcigiYSIpLCExLHttOmEsczpkfSk7ZD0hMX0oYT1kKSYmZ29vZ2xlLmNzaVJlcG9ydChnb29nbGUudGltZXJzLmxvYWQsImFsbCIpO3JldHVybiBhfTtnb29nbGUucmxsPWZ1bmN0aW9uKGEsYixkKXtmdW5jdGlvbiBjKGcpe2QoZyk7YS5yZW1vdmVFdmVudExpc3RlbmVyKCJsb2FkIixjLCExKTthLnJlbW92ZUV2ZW50TGlzdGVuZXIoImVycm9yIixjLCExKX1hLmFkZEV2ZW50TGlzdGVuZXIoImxvYWQiLGMsITEpO2ImJmEuYWRkRXZlbnRMaXN0ZW5lcigiZXJyb3IiLGMsITEpfTt2YXIgRSxGPURhdGUubm93KCksRz13aW5kb3cucGVyZm9ybWFuY2U7RyYmKEcubm93JiYoRT1NYXRoLmZsb29yKHQoKSkpLHImJnUmJnU+ciYmdTw9RiYmKEY9dSxFPXUtcikpO2dvb2dsZS5zdGFydFRpY2soImxvYWQiLEYpO3ZhciBIPUU7Z29vZ2xlLnRpbWVycy5sb2FkLndzcnQ9SDtwZXJmb3JtYW5jZS5tYXJrJiZwZXJmb3JtYW5jZS5tYXJrKCJTZWFyY2hBRlRTdGFydCIse3N0YXJ0VGltZTpIfSk7eSgiaHN0Iix3aW5kb3cuX2hzdCwiU2VhcmNoSGVhZFN0YXJ0Iik7Z29vZ2xlLmMuYigieGUiKTtmdW5jdGlvbiBJKGEpe3JldHVybiBkb2N1bWVudC52aXNpYmlsaXR5U3RhdGU9PT0iaGlkZGVuIj8oeSgiZmh0IixhKSwhMCk6ITF9ZnVuY3Rpb24gSigpe0koKSYmSygpfWZ1bmN0aW9uIEsoKXtkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCJ2aXNpYmlsaXR5Y2hhbmdlIixKLCEwKX1JKDApfHxkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCJ2aXNpYmlsaXR5Y2hhbmdlIixKLCEwKTtnb29nbGUuYy5ycT1bS107Z29vZ2xlLmN2PUQ7aWYoZGF8fHcpe3ZhciBMPXYoKTtMJiZMLmRlbGl2ZXJ5VHlwZT09PSJjYWNoZSImJihMLnR5cGU9PT0ibmF2aWdhdGUifHx3JiYoTC50eXBlPT09InJlbG9hZCJ8fEwudHlwZT09PSJiYWNrX2ZvcndhcmQiKSkmJih3aW5kb3cuX2NzYz0iaHR0cCIsd2luZG93Ll9jc2hpZD1TdHJpbmcoRGF0ZS5ub3coKSkpfTtmdW5jdGlvbiBmYSgpe2Z1bmN0aW9uIGEoZSxoKXtlPWUucXVlcnlTZWxlY3RvckFsbCgiaW1nIik7Zm9yKHZhciBrPTA7azxlLmxlbmd0aDtrKyspaC5wdXNoKGVba10pfXZhciBiPWRvY3VtZW50LGQ9W107YShiLGQpO2I9Yi5xdWVyeVNlbGVjdG9yQWxsKCJbZGF0YS1zaGFkb3ctcm9vdF0iKTtmb3IodmFyIGM9MDtjPGIubGVuZ3RoO2MrKyl7dmFyIGc9YltjXTtnLnNoYWRvd1Jvb3QmJmEoZy5zaGFkb3dSb290LGQpfXJldHVybiBkfTt2YXIgaGE9LyN8JC87ZnVuY3Rpb24gTShhLGIpe3ZhciBkPWEuc2VhcmNoKGhhKTthOnt2YXIgYz0wO2Zvcih2YXIgZz1iLmxlbmd0aDsoYz1hLmluZGV4T2YoYixjKSk+PTAmJmM8ZDspe3ZhciBlPWEuY2hhckNvZGVBdChjLTEpO2lmKGU9PTM4fHxlPT02MylpZihlPWEuY2hhckNvZGVBdChjK2cpLCFlfHxlPT02MXx8ZT09Mzh8fGU9PTM1KWJyZWFrIGE7Yys9ZysxfWM9LTF9aWYoYzwwKXJldHVybiBudWxsO2c9YS5pbmRleE9mKCImIixjKTtpZihnPDB8fGc+ZClnPWQ7Yys9Yi5sZW5ndGgrMTtyZXR1cm4gZGVjb2RlVVJJQ29tcG9uZW50KGEuc2xpY2UoYyxnIT09LTE/ZzowKS5yZXBsYWNlKC9cKy9nLCIgIikpfTtmdW5jdGlvbiBOKCl7dmFyIGEsYjtyZXR1cm4oYT13aW5kb3cucGVyZm9ybWFuY2UpPT1udWxsP3ZvaWQgMDooYj1hLm5hdmlnYXRpb24pPT1udWxsP3ZvaWQgMDpiLnR5cGV9O3ZhciBpYT13aW5kb3cubG9jYXRpb247ZnVuY3Rpb24gTyhhKXtyZXR1cm4oYT1pYS5zZWFyY2gubWF0Y2gobmV3IFJlZ0V4cCgiWz8mXSIrYSsiPShcXGQrKVxcYiIpKSk/TnVtYmVyKGFbMV0pOi0xfQpmdW5jdGlvbiBQKGEpe3ZhciBiPWdvb2dsZS50aW1lcnMubG9hZCxkPWIuZSxjPWdvb2dsZS5zdHZzYztjJiYoZC5zc3I9MSk7Yz9jPWMuaXNCRjpjPShjPXYoKSk/Yy50eXBlPT09ImJhY2tfZm9yd2FyZCI/Yy5ub3RSZXN0b3JlZFJlYXNvbnM9PT12b2lkIDA/ITA6ISFjLm5vdFJlc3RvcmVkUmVhc29uczohMTpOKCk9PT0yO2MmJihkLmJiPTEpOygoYz12KCkpP2MudHlwZT09PSJyZWxvYWQiOk4oKT09PTEpJiYoZC5yPTEpO2lmKGM9digpKXt2YXIgZz1jLnR5cGU7ZyYmKGQubnQ9Zyk7Zz1jLmRlbGl2ZXJ5VHlwZTtnIT1udWxsJiYoZC5kdD1nKTtnPWMudHJhbnNmZXJTaXplO2chPW51bGwmJihkLnRzPWcpO2M9Yy5uZXh0SG9wUHJvdG9jb2w7YyE9bnVsbCYmKGQubmhwPWMpfShjPXdpbmRvdy5uYXZpZ2F0aW9uKSYmKGM9Yy5hY3RpdmF0aW9uKSYmKGM9Yy5uYXZpZ2F0aW9uVHlwZSkmJihkLmFudD1jKTtkPWIubTtpZighZHx8IWQucHJzKXtjPXdpbmRvdy5fY3NjPT09ImFnc2EiJiYKd2luZG93Ll9jc2hpZDtnPSEhZ29vZ2xlLnN0dnNjO3ZhciBlPWIucXR0PT09MjtkPU8oInFzdWJ0cyIpO3ZhciBoOyhoPXYoKSk/KGg9aC50eXBlLGg9IWh8fGg9PT0ibmF2aWdhdGUiKTpoPSFOKCk7Zz0haHx8ZXx8Z3x8Yz8wOmIucXN1YnRzfHxkO2U9InIiO2c+MCYmKGM9Yi5mYnRzfHxPKCJmYnRzIiksYz4wJiYoYi50LnN0YXJ0PU1hdGgubWF4KGcsYyksZT1iLmZidHM9PT1jPyJpIjoidSIpKTtoPWIudDt2YXIgaz1oLnN0YXJ0O2M9e307Yi53c3J0IT09dm9pZCAwJiYoYy53c3J0PWIud3NydCk7aWYoaylmb3IodmFyIGYgaW4gaClpZihmIT09InN0YXJ0IiYmZiE9PSJzZ2xzIil7dmFyIHE9aFtmXTtjW2ZdPWY9PT0ic2dsInx8Zj09PSJzZ3NydCI/cTpmPT09InBycyI/ay1xOk1hdGgubWF4KHEtaywwKX1nPjAmJihjLmdzYXNydD1iLnQuc3RhcnQtZyxmPU8oInFzZCIpLGY+MCYmQSgicXNkIixmKSxBKCJlc3RzIiwoYi5xc3VidHM9PT1nPyJpIjoidSIpK2UpLGIucXN1YnRzJiYKZD4wJiZiLnFzdWJ0cyE9PWQmJkEoInFkIixiLnFzdWJ0cy1kKSk7Zj1iLnQuc2dscztmPj0wJiYoZT1kPWMuc2dsLGY9PT0wP2U9MDpnPmYmJihlPWctZiksZCE9PXZvaWQgMCYmKGMuc2dsbz1kKSxlIT09dm9pZCAwJiYoYy5zZ2w9ZSkpO2I9Yi5lO2E9Ii9nZW5fMjA0P3M9Iitnb29nbGUuc24rIiZ0PSIrYSsiJmF0eXA9Y3NpJmVpPSIrZ29vZ2xlLmtFSSsiJnJ0PSI7Zj0iIjtmb3IodmFyIHogaW4gYylhKz0iIitmK3orIi4iK2Nbel0sZj0iLCI7Zm9yKHZhciBwIGluIGIpYSs9IiYiK3ArIj0iK2JbcF07ej1hO3ZhciBuPW49PT12b2lkIDA/d2luZG93LmxvY2F0aW9uOm47cD0iIjtsLl9jc2hpZCYmKHArPSImY3NoaWQ9IitsLl9jc2hpZCk7KGE9d2luZG93Lmdvb2dsZSYmd2luZG93Lmdvb2dsZS5rT1BJfHxudWxsKSYmKHArPSImb3BpPSIrYSk7KGE9TShuLnNlYXJjaCwiZ2VtY2lkIikpJiYocCs9IiZnZW1jaWQ9IithKTsobj1NKG4uc2VhcmNoLCJnZW1yaWQiKSkmJihwKz0iJmdlbXJpZD0iKwpuKTtuPXorcDthOnt0cnl7dmFyIFY9d2luZG93Lm5hdmlnYXRvci5zZW5kQmVhY29uKG4sIiIpO3ZhciBXPVY9PT12b2lkIDA/ITA6VjticmVhayBhfWNhdGNoKHZhKXt9Vz0hMX1XfHxnb29nbGUubG9nKCIiLCIiLG4pfX07ZnVuY3Rpb24gUSgpe3koImNidCIpO1AoImNhcCIpfTt2YXIgamE9ZnVuY3Rpb24oYSl7dGhpcy5nPWE7dGhpcy5sPVtdO3ZhciBiPXRoaXMuZy5nZXRBdHRyaWJ1dGUoImRhdGEtZGVmZXJyZWQiKTt0aGlzLkI9YS5oYXNBdHRyaWJ1dGUoImRhdGEtbm9hZnQiKTt0aGlzLmk9ISFiO2lmKGI9IXRoaXMuaSlhOntmb3IoYj0wO2I8Ui5sZW5ndGg7KytiKWlmKGEuZ2V0QXR0cmlidXRlKCJkYXRhLSIrUltiXSkpe2I9ITA7YnJlYWsgYX1iPSExfXRoaXMuaj1iOyhiPWEuc3JjKSYmdGhpcy5qJiYodGhpcy5EPWIpOyF0aGlzLmomJmJ8fGEuc2V0QXR0cmlidXRlKCJkYXRhLWx6eV8iLCIxIik7KHRoaXMuQT10aGlzLkI/ITA6dGhpcy5pfHx0aGlzLmo/ITE6IXRoaXMuZy5zcmN8fHRoaXMuZy5jb21wbGV0ZSl8fFModGhpcyk7IWdvb2dsZS5jLndwciYmZ29vZ2xlLmMud2g+MTAmJlQodGhpcyl9LFM9ZnVuY3Rpb24oYSl7Z29vZ2xlLnJsbChhLmcsITAsZnVuY3Rpb24oKXt2YXIgYj1EYXRlLm5vdygpO2lmKGEuRCYmYS5nLnNyYz09PWEuRHx8YS5nLmdldEF0dHJpYnV0ZSgiZGF0YS1kZWZlcnJlZCIpPT09CiIxIilTKGEpO2Vsc2UgaWYoIWEuQyl7YS5pJiZhLmcuc2V0QXR0cmlidXRlKCJkYXRhLWRlZmVycmVkIiwiMyIpO2EuQz1iO2EuZy5zZXRBdHRyaWJ1dGUoImRhdGEtaW1sIixTdHJpbmcoYikpO2Zvcih2YXIgZD0wO2Q8YS5sLmxlbmd0aDsrK2QpYS5sW2RdKGIpO2EubC5sZW5ndGg9MH19KX0sVD1mdW5jdGlvbihhKXthLnY9PT12b2lkIDAmJihhLnY9Z29vZ2xlLmN2KGEuZyksYS5nLnNldEF0dHJpYnV0ZSgiZGF0YS1hdGYiLFN0cmluZyhhLnYpKSk7cmV0dXJuIGEudn0sUj0ic3JjIGJzcmMgdXJsIGxsIGltYWdlIGltZy11cmwgbGlvaSIuc3BsaXQoIiAiKTtnb29nbGUuYy5paW09Z29vZ2xlLmMuaWltfHx7fTt2YXIgVT1nb29nbGUuYy5paW0sa2E9MDtmdW5jdGlvbiBsYShhKXt2YXIgYj1hLmdldEF0dHJpYnV0ZSgiZGF0YS1jc2lpZCIpfHxnb29nbGUua0VJKyJfIitTdHJpbmcoKytrYSk7VVtiXXx8KGEuc2V0QXR0cmlidXRlKCJkYXRhLWNzaWlkIixiKSxVW2JdPW5ldyBqYShhKSk7cmV0dXJuIFVbYl19ZnVuY3Rpb24gbWEoYSl7Zm9yKHZhciBiPWVhP2ZhKCk6ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImltZyIpLGQ9MCxjPWIubGVuZ3RoO2Q8YzsrK2QpYShsYShiW2RdKSl9O2Z1bmN0aW9uIFgoYSxiLGQpe2Z1bmN0aW9uIGMoZil7az1NYXRoLm1heChrLGYpOysraDtnfHxlIT09aHx8ZChrKX12YXIgZz0hMCxlPTAsaD0wLGs9MDttYShmdW5jdGlvbihmKXthKGYpJiYoKytlLGYuQ3x8Zi5BP2MoZi5DfHwwKTpmLmwucHVzaChjKSl9KTtiKCk7KGc9ITEsZSE9PWgpfHxkKGspfTt2YXIgbmE9ITEsb2E9MCxZPTAsWjtmdW5jdGlvbiBwYSgpe1omJmNsZWFyVGltZW91dChaKX0KZnVuY3Rpb24gcWEoYSxiKXtnb29nbGUuYy53aD4xMHx8KGdvb2dsZS5jLndoPU1hdGguZmxvb3IoZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmNsaWVudEhlaWdodCkpO3ZhciBkPWdvb2dsZS5jLndoO3ZhciBjPSFiO2I9Yj9NYXRoLmZsb29yKGIuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkudG9wK3dpbmRvdy5wYWdlWU9mZnNldCk6LTE7Yz1jfHxnb29nbGUuYy53aD4xMCYmYj49ZDshWSYmYyYmKFk9YSxvYT1iKTtpZihZKXt2YXIgZz0wLGU9MCxoPTAsaz0hMTtYKGZ1bmN0aW9uKGYpe2lmKCEoVChmKSYxKSlyZXR1cm4hMTtpZihmLkEpcmV0dXJuKytoLCFmLkI7VChmKSY0JiYoaz0hMCk7Zi5pJiYrK2U7KytnO3JldHVybiEwfSxmdW5jdGlvbigpe0EoImltYSIsZyk7QSgiaW1hZCIsZSk7QSgiaW1hYyIsaCk7ZG9jdW1lbnQucXVlcnlTZWxlY3RvcigiW2RhdGEtZG9vZGxlXSIpJiZBKCJkZGwiLDEpO3ZhciBmPWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJlS0l6SmMiKTtmJiYoZj0KRChmKSxBKCJhaW8iLGYpKTtBKCJ3aCIsZCl9LGZ1bmN0aW9uKGYpe2YmJnkoImFmdGkiLGYpO29hPjAmJnkoImFmdHMiLFkpO3ZhciBxPVk7ZiYmKGY+cXx8aykmJihxPWYpO3koImFmdCIscSwidHJpZ2dlcjpTZWFyY2hBRlRFbmQiKTtnb29nbGUuYy5xKCJmcnQiLGZ1bmN0aW9uKCl7cGEoKTtQKCJhZnQiKX0pO2dvb2dsZS5jLnUoImFmdCIpfSl9fTtmdW5jdGlvbiByYShhKXtYKGZ1bmN0aW9uKGIpe3JldHVybiEhKFQoYikmMSl9LGZ1bmN0aW9uKCl7eSgiZnJ0cyIsYSl9LGZ1bmN0aW9uKGIpe3koImZydnQiLE1hdGgubWF4KGIsYSkpO2dvb2dsZS5jLnUoImZydCIpfSl9O3ZhciBzYT0hMTtnb29nbGUuYy53aD1NYXRoLmZsb29yKGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5jbGllbnRIZWlnaHQpO2dvb2dsZS5jLmIoInBydCIpO3ZhciB0YT1jYXx8MDtpZih0YT4wKXthOntpZihyIT09dm9pZCAwKXt2YXIgdWE9dGEtdCgpO2lmKHVhPjApe1o9c2V0VGltZW91dChRLHVhKTticmVhayBhfVEoKX1aPXZvaWQgMH1nb29nbGUuYy5ycS5wdXNoKHBhKX1nb29nbGUuYy5tYWZ0PWZ1bmN0aW9uKGEsYil7bWEoZnVuY3Rpb24oKXt9KTtuYXx8KGdvb2dsZS5jLmIoImFmdCIpLG5hPSEwKTtZfHxxYShhLGIpfTtnb29nbGUuYy5tZnJ2dD1mdW5jdGlvbihhKXtyYShhKX07Z29vZ2xlLmMubWltbD1mdW5jdGlvbihhKXtmdW5jdGlvbiBiKGMpe1QoYyk7cmV0dXJuIHgmJiFjLkImJighYy5qfHwhIShUKGMpJjEpKX1mdW5jdGlvbiBkKGMpe3gmJnkoImltbCIsY3x8YSk7Z29vZ2xlLmMudSgiaW1sIil9c2F8fChnb29nbGUuYy5iKCJpbWwiKSxmdW5jdGlvbigpe1goYixmdW5jdGlvbigpe30sZCl9KDApLHNhPSEwKX07Z29vZ2xlLmMuYigiZnJ0Iik7Z29vZ2xlLmMudWJmPSEwO2dvb2dsZS5jLnNldHVwPWZ1bmN0aW9uKGEpe2E9bGEoYSk7cmV0dXJuIWdvb2dsZS5jLndwciYmZ29vZ2xlLmMud2g+MTA/VChhKTpudWxsfTt9KS5jYWxsKHRoaXMpOyhmdW5jdGlvbigpe2Z1bmN0aW9uIGIoKXtmb3IodmFyIGE9Z29vZ2xlLmRyYy5zaGlmdCgpO2E7KWEoKSxhPWdvb2dsZS5kcmMuc2hpZnQoKX07Z29vZ2xlLmRyYz1bZnVuY3Rpb24oKXtnb29nbGUudGljayYmZ29vZ2xlLnRpY2soImxvYWQiLCJkY2wiKX1dO2dvb2dsZS5kY2xjPWZ1bmN0aW9uKGEpe2dvb2dsZS5kcmMubGVuZ3RoP2dvb2dsZS5kcmMucHVzaChhKTphKCl9O3dpbmRvdy5hZGRFdmVudExpc3RlbmVyPyhkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCJET01Db250ZW50TG9hZGVkIixiLCExKSx3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigibG9hZCIsYiwhMSkpOndpbmRvdy5hdHRhY2hFdmVudCYmd2luZG93LmF0dGFjaEV2ZW50KCJvbmxvYWQiLGIpO30pLmNhbGwodGhpcyk7KGZ1bmN0aW9uKCl7dmFyIG49ZnVuY3Rpb24oYSl7dmFyIGM9MDtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gYzxhLmxlbmd0aD97ZG9uZTohMSx2YWx1ZTphW2MrK119Ontkb25lOiEwfX19LHI9ZnVuY3Rpb24oYSl7dmFyIGM9dHlwZW9mIFN5bWJvbCE9InVuZGVmaW5lZCImJlN5bWJvbC5pdGVyYXRvciYmYVtTeW1ib2wuaXRlcmF0b3JdO2lmKGMpcmV0dXJuIGMuY2FsbChhKTtpZih0eXBlb2YgYS5sZW5ndGg9PSJudW1iZXIiKXJldHVybntuZXh0Om4oYSl9O3Rocm93IEVycm9yKCJhYCIrU3RyaW5nKGEpKTt9LHc9dHlwZW9mIE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzPT0iZnVuY3Rpb24iP09iamVjdC5kZWZpbmVQcm9wZXJ0eTpmdW5jdGlvbihhLGMsZCl7aWYoYT09QXJyYXkucHJvdG90eXBlfHxhPT1PYmplY3QucHJvdG90eXBlKXJldHVybiBhO2FbY109ZC52YWx1ZTtyZXR1cm4gYX0seD1mdW5jdGlvbihhKXthPVsib2JqZWN0Ij09dHlwZW9mIGdsb2JhbFRoaXMmJmdsb2JhbFRoaXMsYSwib2JqZWN0Ij09CnR5cGVvZiB3aW5kb3cmJndpbmRvdywib2JqZWN0Ij09dHlwZW9mIHNlbGYmJnNlbGYsIm9iamVjdCI9PXR5cGVvZiBnbG9iYWwmJmdsb2JhbF07Zm9yKHZhciBjPTA7YzxhLmxlbmd0aDsrK2Mpe3ZhciBkPWFbY107aWYoZCYmZC5NYXRoPT1NYXRoKXJldHVybiBkfXRocm93IEVycm9yKCJiIik7fSx5PXgodGhpcyksej1mdW5jdGlvbihhLGMpe2lmKGMpYTp7dmFyIGQ9eTthPWEuc3BsaXQoIi4iKTtmb3IodmFyIGc9MDtnPGEubGVuZ3RoLTE7ZysrKXt2YXIgZj1hW2ddO2lmKCEoZiBpbiBkKSlicmVhayBhO2Q9ZFtmXX1hPWFbYS5sZW5ndGgtMV07Zz1kW2FdO2M9YyhnKTtjIT1nJiZjIT1udWxsJiZ3KGQsYSx7Y29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwLHZhbHVlOmN9KX19LEE9dHlwZW9mIE9iamVjdC5hc3NpZ249PSJmdW5jdGlvbiI/T2JqZWN0LmFzc2lnbjpmdW5jdGlvbihhLGMpe2lmKGE9PW51bGwpdGhyb3cgbmV3IFR5cGVFcnJvcigiTm8gbnVsbGlzaCBhcmciKTthPQpPYmplY3QoYSk7Zm9yKHZhciBkPTE7ZDxhcmd1bWVudHMubGVuZ3RoO2QrKyl7dmFyIGc9YXJndW1lbnRzW2RdO2lmKGcpZm9yKHZhciBmIGluIGcpT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGcsZikmJihhW2ZdPWdbZl0pfXJldHVybiBhfTt6KCJPYmplY3QuYXNzaWduIixmdW5jdGlvbihhKXtyZXR1cm4gYXx8QX0pO3ooIlByb21pc2UiLGZ1bmN0aW9uKGEpe2Z1bmN0aW9uIGMoKXt0aGlzLmc9bnVsbH1mdW5jdGlvbiBkKGIpe3JldHVybiBiIGluc3RhbmNlb2YgZj9iOm5ldyBmKGZ1bmN0aW9uKGUpe2UoYil9KX1pZihhKXJldHVybiBhO2MucHJvdG90eXBlLmk9ZnVuY3Rpb24oYil7aWYodGhpcy5nPT1udWxsKXt0aGlzLmc9W107dmFyIGU9dGhpczt0aGlzLmooZnVuY3Rpb24oKXtlLnYoKX0pfXRoaXMuZy5wdXNoKGIpfTt2YXIgZz15LnNldFRpbWVvdXQ7Yy5wcm90b3R5cGUuaj1mdW5jdGlvbihiKXtnKGIsMCl9O2MucHJvdG90eXBlLnY9ZnVuY3Rpb24oKXtmb3IoO3RoaXMuZyYmdGhpcy5nLmxlbmd0aDspe3ZhciBiPXRoaXMuZzt0aGlzLmc9W107Zm9yKHZhciBlPTA7ZTxiLmxlbmd0aDsrK2Upe3ZhciBoPWJbZV07YltlXT1udWxsO3RyeXtoKCl9Y2F0Y2goayl7dGhpcy5sKGspfX19dGhpcy5nPW51bGx9O2MucHJvdG90eXBlLmw9ZnVuY3Rpb24oYil7dGhpcy5qKGZ1bmN0aW9uKCl7dGhyb3cgYjt9KX07dmFyIGY9ZnVuY3Rpb24oYil7dGhpcy5pPTA7dGhpcy5qPXZvaWQgMDt0aGlzLmc9W107dGhpcy5EPSExO3ZhciBlPXRoaXMubCgpO3RyeXtiKGUucmVzb2x2ZSxlLnJlamVjdCl9Y2F0Y2goaCl7ZS5yZWplY3QoaCl9fTtmLnByb3RvdHlwZS5sPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gYihrKXtyZXR1cm4gZnVuY3Rpb24obCl7aHx8KGg9ITAsay5jYWxsKGUsbCkpfX12YXIgZT10aGlzLGg9ITE7cmV0dXJue3Jlc29sdmU6Yih0aGlzLkopLHJlamVjdDpiKHRoaXMudil9fTtmLnByb3RvdHlwZS5KPWZ1bmN0aW9uKGIpe2lmKGI9PT10aGlzKXRoaXMudihuZXcgVHlwZUVycm9yKCJBIFByb21pc2UgY2Fubm90IHJlc29sdmUgdG8gaXRzZWxmIikpO2Vsc2UgaWYoYiBpbnN0YW5jZW9mIGYpdGhpcy5MKGIpO2Vsc2V7YTpzd2l0Y2godHlwZW9mIGIpe2Nhc2UgIm9iamVjdCI6dmFyIGU9YiE9bnVsbDticmVhayBhO2Nhc2UgImZ1bmN0aW9uIjplPSEwO2JyZWFrIGE7ZGVmYXVsdDplPSExfWU/dGhpcy5JKGIpOnRoaXMuQyhiKX19O2YucHJvdG90eXBlLkk9ZnVuY3Rpb24oYil7dmFyIGU9dm9pZCAwO3RyeXtlPWIudGhlbn1jYXRjaChoKXt0aGlzLnYoaCk7cmV0dXJufXR5cGVvZiBlPT0iZnVuY3Rpb24iP3RoaXMuTShlLGIpOnRoaXMuQyhiKX07Zi5wcm90b3R5cGUudj1mdW5jdGlvbihiKXt0aGlzLkYoMixiKX07Zi5wcm90b3R5cGUuQz1mdW5jdGlvbihiKXt0aGlzLkYoMSxiKX07Zi5wcm90b3R5cGUuRj1mdW5jdGlvbihiLGUpe2lmKHRoaXMuaSE9MCl0aHJvdyBFcnJvcigiY2AiK2IrImAiK2UrImAiK3RoaXMuaSk7dGhpcy5pPWI7dGhpcy5qPWU7dGhpcy5pPT09MiYmdGhpcy5LKCk7dGhpcy5HKCl9O2YucHJvdG90eXBlLks9ZnVuY3Rpb24oKXt2YXIgYj10aGlzO2coZnVuY3Rpb24oKXtpZihiLkgoKSl7dmFyIGU9eS5jb25zb2xlO3R5cGVvZiBlIT09InVuZGVmaW5lZCImJmUuZXJyb3IoYi5qKX19LDEpfTtmLnByb3RvdHlwZS5IPWZ1bmN0aW9uKCl7aWYodGhpcy5EKXJldHVybiExO3ZhciBiPXkuQ3VzdG9tRXZlbnQsZT15LkV2ZW50LGg9eS5kaXNwYXRjaEV2ZW50O2lmKHR5cGVvZiBoPT09InVuZGVmaW5lZCIpcmV0dXJuITA7dHlwZW9mIGI9PT0iZnVuY3Rpb24iP2I9bmV3IGIoInVuaGFuZGxlZHJlamVjdGlvbiIse2NhbmNlbGFibGU6ITB9KTp0eXBlb2YgZT09PSJmdW5jdGlvbiI/Yj1uZXcgZSgidW5oYW5kbGVkcmVqZWN0aW9uIix7Y2FuY2VsYWJsZTohMH0pOihiPXkuZG9jdW1lbnQuY3JlYXRlRXZlbnQoIkN1c3RvbUV2ZW50IiksYi5pbml0Q3VzdG9tRXZlbnQoInVuaGFuZGxlZHJlamVjdGlvbiIsITEsITAsYikpO2IucHJvbWlzZT10aGlzO2IucmVhc29uPXRoaXMuajtyZXR1cm4gaChiKX07Zi5wcm90b3R5cGUuRz1mdW5jdGlvbigpe2lmKHRoaXMuZyE9bnVsbCl7Zm9yKHZhciBiPTA7Yjx0aGlzLmcubGVuZ3RoOysrYilwLmkodGhpcy5nW2JdKTt0aGlzLmc9bnVsbH19O3ZhciBwPW5ldyBjO2YucHJvdG90eXBlLkw9ZnVuY3Rpb24oYil7dmFyIGU9dGhpcy5sKCk7Yi5BKGUucmVzb2x2ZSxlLnJlamVjdCl9O2YucHJvdG90eXBlLk09ZnVuY3Rpb24oYixlKXt2YXIgaD10aGlzLmwoKTt0cnl7Yi5jYWxsKGUsaC5yZXNvbHZlLGgucmVqZWN0KX1jYXRjaChrKXtoLnJlamVjdChrKX19O2YucHJvdG90eXBlLnRoZW49ZnVuY3Rpb24oYixlKXtmdW5jdGlvbiBoKG0scSl7cmV0dXJuIHR5cGVvZiBtPT0iZnVuY3Rpb24iP2Z1bmN0aW9uKHQpe3RyeXtrKG0odCkpfWNhdGNoKHUpe2wodSl9fTpxfXZhciBrLGwsdj1uZXcgZihmdW5jdGlvbihtLHEpe2s9bTtsPXF9KTt0aGlzLkEoaChiLGspLGgoZSxsKSk7cmV0dXJuIHZ9O2YucHJvdG90eXBlLmNhdGNoPWZ1bmN0aW9uKGIpe3JldHVybiB0aGlzLnRoZW4odm9pZCAwLGIpfTtmLnByb3RvdHlwZS5BPWZ1bmN0aW9uKGIsZSl7ZnVuY3Rpb24gaCgpe3N3aXRjaChrLmkpe2Nhc2UgMTpiKGsuaik7YnJlYWs7Y2FzZSAyOmUoay5qKTticmVhaztkZWZhdWx0OnRocm93IEVycm9yKCJkYCIray5pKTt9fXZhciBrPQp0aGlzO3RoaXMuZz09bnVsbD9wLmkoaCk6dGhpcy5nLnB1c2goaCk7dGhpcy5EPSEwfTtmLnJlc29sdmU9ZDtmLnJlamVjdD1mdW5jdGlvbihiKXtyZXR1cm4gbmV3IGYoZnVuY3Rpb24oZSxoKXtoKGIpfSl9O2YucmFjZT1mdW5jdGlvbihiKXtyZXR1cm4gbmV3IGYoZnVuY3Rpb24oZSxoKXtmb3IodmFyIGs9cihiKSxsPWsubmV4dCgpOyFsLmRvbmU7bD1rLm5leHQoKSlkKGwudmFsdWUpLkEoZSxoKX0pfTtmLmFsbD1mdW5jdGlvbihiKXt2YXIgZT1yKGIpLGg9ZS5uZXh0KCk7cmV0dXJuIGguZG9uZT9kKFtdKTpuZXcgZihmdW5jdGlvbihrLGwpe2Z1bmN0aW9uIHYodCl7cmV0dXJuIGZ1bmN0aW9uKHUpe21bdF09dTtxLS07cT09MCYmayhtKX19dmFyIG09W10scT0wO2RvIG0ucHVzaCh2b2lkIDApLHErKyxkKGgudmFsdWUpLkEodihtLmxlbmd0aC0xKSxsKSxoPWUubmV4dCgpO3doaWxlKCFoLmRvbmUpfSl9O3JldHVybiBmfSk7CnZhciBCPXRoaXN8fHNlbGY7CnZhciBDPVsiZm9jdXMiLCJibHVyIiwiZXJyb3IiLCJsb2FkIiwidG9nZ2xlIl07ZnVuY3Rpb24gRChhKXtyZXR1cm4gYT09PSJtb3VzZWVudGVyIj8ibW91c2VvdmVyIjphPT09Im1vdXNlbGVhdmUiPyJtb3VzZW91dCI6YT09PSJwb2ludGVyZW50ZXIiPyJwb2ludGVyb3ZlciI6YT09PSJwb2ludGVybGVhdmUiPyJwb2ludGVyb3V0IjphfTt2YXIgRT1mdW5jdGlvbihhKXt0aGlzLmo9e307dGhpcy5sPXt9O3RoaXMuaT1udWxsO3RoaXMuZz1bXTt0aGlzLnY9YX07RS5wcm90b3R5cGUuaGFuZGxlRXZlbnQ9ZnVuY3Rpb24oYSxjLGQpe0YodGhpcyx7ZXZlbnRUeXBlOmEsZXZlbnQ6Yyx0YXJnZXRFbGVtZW50OmMudGFyZ2V0LGVpYzpkLHRpbWVTdGFtcDpEYXRlLm5vdygpLGVpYTp2b2lkIDAsZWlycDp2b2lkIDAsZWlhY2s6dm9pZCAwfSl9O3ZhciBGPWZ1bmN0aW9uKGEsYyl7aWYoYS5pKWEuaShjKTtlbHNle2MuZWlycD0hMDt2YXIgZDsoZD1hLmcpPT1udWxsfHxkLnB1c2goYyl9fTtFLnByb3RvdHlwZS5hZGRFdmVudD1mdW5jdGlvbihhLGMsZCl7dmFyIGc9dGhpcztpZighKGEgaW4gdGhpcy5qKSYmdGhpcy52KXt2YXIgZj1mdW5jdGlvbihiLGUsaCl7Zy5oYW5kbGVFdmVudChiLGUsaCl9O3RoaXMualthXT1mO2M9RChjfHxhKTtpZihjIT09YSl7dmFyIHA9dGhpcy5sW2NdfHxbXTtwLnB1c2goYSk7dGhpcy5sW2NdPXB9dGhpcy52LmFkZEV2ZW50TGlzdGVuZXIoYyxmdW5jdGlvbihiKXtyZXR1cm4gZnVuY3Rpb24oZSl7ZihhLGUsYil9fSxkKX19O0UucHJvdG90eXBlLkI9ZnVuY3Rpb24oYSl7cmV0dXJuIHRoaXMualthXX07RS5wcm90b3R5cGUuZWNyZD1mdW5jdGlvbihhKXt0aGlzLmk9YTt2YXIgYztpZigoYz10aGlzLmcpPT1udWxsPzA6Yy5sZW5ndGgpe2ZvcihhPTA7YTx0aGlzLmcubGVuZ3RoO2ErKylGKHRoaXMsdGhpcy5nW2FdKTt0aGlzLmc9bnVsbH19O2Z1bmN0aW9uIEcoYSxjKXtyZXR1cm57dHJpZ2dlcjpmdW5jdGlvbihkKXt2YXIgZz1hLkIoZC50eXBlKTtnfHwoYS5hZGRFdmVudChkLnR5cGUpLGc9YS5CKGQudHlwZSkpO3ZhciBmPWQudGFyZ2V0fHxkLnNyY0VsZW1lbnQ7ZyYmZyhkLnR5cGUsZCxjfHxmLm93bmVyRG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50KX0sY29uZmlndXJlOmZ1bmN0aW9uKGQpe2QoYSl9fX07ZnVuY3Rpb24gSChhLGMpe2EuYWRkRXZlbnRMaXN0ZW5lcigiX2N1c3RvbSIsZnVuY3Rpb24oZCl7dmFyIGc9ZC5kZXRhaWw7ZyYmZy5fdHlwZSYmYyh7dHlwZTpnLl90eXBlLHRhcmdldDpkLnRhcmdldCxidWJibGVzOiEwLGRldGFpbDpnfSl9KX07dmFyIEk9ZnVuY3Rpb24oYSl7dGhpcy5nPWE7dGhpcy5pPVtdfTtJLnByb3RvdHlwZS5hZGRFdmVudExpc3RlbmVyPWZ1bmN0aW9uKGEsYyxkKXt2YXIgZz10aGlzLmksZj1nLnB1c2gscD10aGlzLmc7Yz1jKHRoaXMuZyk7dmFyIGI9ITE7Qy5pbmRleE9mKGEpPj0wJiYoYj0hMCk7cC5hZGRFdmVudExpc3RlbmVyKGEsYyx0eXBlb2YgZD09PSJib29sZWFuIj97Y2FwdHVyZTpiLHBhc3NpdmU6ZH06Yik7Zi5jYWxsKGcse2V2ZW50VHlwZTphLEI6YyxjYXB0dXJlOmIscGFzc2l2ZTpkfSl9O3ZhciBKPSJjbGljayBmb2N1c2luIGZvY3Vzb3V0IGF1eGNsaWNrIGNoYW5nZSBjb3B5IGRibGNsaWNrIGJlZm9yZWlucHV0IGlucHV0IGtleXVwIGtleWRvd24ga2V5cHJlc3MgbW91c2Vkb3duIG1vdXNlZW50ZXIgbW91c2VsZWF2ZSBtb3VzZW1vdmUgbW91c2VvdXQgbW91c2VvdmVyIG1vdXNldXAgcGFzdGUgcG9pbnRlcmRvd24gcG9pbnRlcmVudGVyIHBvaW50ZXJsZWF2ZSBwb2ludGVydXAgdG91Y2hzdGFydCB0b3VjaG1vdmUgdG91Y2hlbmQgdG91Y2hjYW5jZWwgdHJhbnNpdGlvbmNhbmNlbCB0cmFuc2l0aW9uZW5kIHRyYW5zaXRpb25ydW4gdHJhbnNpdGlvbnN0YXJ0IGFuaW1hdGlvbmNhbmNlbCBhbmltYXRpb25lbmQgZHJhZ292ZXIgZHJhZ2VudGVyIGRyYWdsZWF2ZSBkcm9wIGRyYWdzdGFydCBkcmFnZW5kIHNjcm9sbCBzcGVlY2giLnNwbGl0KCIgIiksSz1bImZvY3VzIiwiYmx1ciIsImVycm9yIiwibG9hZCJdO2Z1bmN0aW9uIEwoYSl7Zm9yKHZhciBjPUouY29uY2F0KEspLGQ9MDtkPGMubGVuZ3RoO2QrKylhLmFkZEV2ZW50KGNbZF0pfTtmdW5jdGlvbiBNKGEpe3ZhciBjPSEhYTthPWM/ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoYSk6d2luZG93LmRvY3VtZW50LmRvY3VtZW50RWxlbWVudDt2YXIgZD1uZXcgRShuZXcgSShhKSk7TChkKTt2YXIgZz1PYmplY3QuYXNzaWduKHt9LEcoZCxhKSx7YWRkRXZlbnQ6ZnVuY3Rpb24oZil7ZC5hZGRFdmVudChmKX19KTtjJiYoYS5fX2pzYWM9Zyk7SChhLGcudHJpZ2dlcik7cmV0dXJuIGd9d2luZG93LmpzYWNfaW5pdD1NO3ZhciBOPU0oIiIpO0IuZ3dzX3dpemJpbmQ9TjsoZnVuY3Rpb24oYSl7aWYoYS5fX2d3YnA9PT12b2lkIDApe3ZhciBjLGQ9bmV3IFByb21pc2UoZnVuY3Rpb24oZyl7Yz1nfSk7ZC5fX3I9YzthLl9fZ3dicD1kfX0pKGRvY3VtZW50KTt2YXIgTz1kb2N1bWVudC5fX2d3YnAsUD1PLl9fcjtQJiYoUChOKSxkZWxldGUgTy5fX3IpO30pLmNhbGwodGhpcyk7KGZ1bmN0aW9uKCl7CnZhciBjPS9eXHMqKD8hamF2YXNjcmlwdDopKD86W1x3Ky4tXSs6fFteOi8/I10qKD86Wy8/I118JCkpL2k7d2luZG93LmRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCJtb3VzZWRvd24iLGZ1bmN0aW9uKGIpe3ZhciBhPWIudGFyZ2V0O2lmKCFhKXJldHVybiEwO2E9YS5jbG9zZXN0KCJhW2RhdGEtc2JdIik7aWYoIWEpcmV0dXJuITA7Yi5idXR0b24hPT0wPyhiPWEuZ2V0QXR0cmlidXRlKCJkYXRhLXNiIiksYy50ZXN0KGIpJiYoYS5ocmVmPWIpLGEucmVtb3ZlQXR0cmlidXRlKCJkYXRhLXNiIikpOnR5cGVvZiBuYXZpZ2F0b3Iuc2VuZEJlYWNvbj09PSJmdW5jdGlvbiI/bmF2aWdhdG9yLnNlbmRCZWFjb24oYS5nZXRBdHRyaWJ1dGUoImRhdGEtc2IiKSwiIik6Z29vZ2xlLmxvZygiIiwiIixhLmdldEF0dHJpYnV0ZSgiZGF0YS1zYiIpKTtyZXR1cm4hMH0sITApO30pLmNhbGwodGhpcyk7KGZ1bmN0aW9uKCl7Z29vZ2xlLnhqcz17YmFzZWNvbWI6Jy94anMvXy9qcy9rXHgzZHhqcy5oZC5uby5aSlgtMHlRbk8tTS4yMDE5Lk8vY2tceDNkeGpzLmhkLmg5R0hqYUFwaGwwLkwuRjQuTy9hbVx4M2RBQUFFUUFBQUFBQUFBQUFBQUFRQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUJBQUFBSUVDQUFBWkFBQWdRQUFnQUFEQkFBQUFBQUlBQUFBQUFCQWVBQWdBTUFBQUFBQUFBQUFBQUFBQUFJQUFRUUFBSUFBQUFBQUFBQUFBRUFBQUFBQUFCQUlBaUFBQVlBQUFBUUFCRkFBQVFBTUFBQUFBQUFBQUNBQUFBQUFBQUFBQWlCQUFBQUJDQUFEd0J3WllBd0FBQUFBQUFBQVNZVEFRQUFBQUFCQUdGZ0FBSUFFQUFBQUVRQUFBQUFBQUFBQkFKRUFDQUNBQUFCQUFBQWdBQUFBQUFBUUJoQkFFQUFFS0lBQUFBQkFBQUFLQUJRQUFBQUNnQXhBRUFRQUFBQUJBQUFBQUNBQUVnUkJBQUFBQWdBQUFDaEFBQ0FBSUFnQUFBR0FFQlFCQW9nWUNBRUNnQXdBQUFDQURBQUFBQUFRQUFBQUFBQUFBQUFBQWlBQUFRSUFBQUFDUUFBQURCQVFBQ0FBQUFFQUhRT0FCaGhRVUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUNMSUJkU0FFQkVBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUJBeUFrQUFBQUFBSUNGL2RceDNkMS9lZFx4M2QxL2RnXHgzZDAvYnJceDNkMS91amdceDNkMS9yc1x4M2RBQ1Q5MG9IbFNuQ3p4NW1BZFlYeThlMVpoLUd4SjBhbDhRP2NiXHgzZDEyMTUwOTM3OCcsYmFzZWNzczonL3hqcy9fL3NzL2tceDNkeGpzLmhkLmg5R0hqYUFwaGwwLkwuRjQuTy9hbVx4M2RBQUFFUUFBQUFBQUFBQUFBQUFRQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUJBQUFBSUVDQUFBWkFBQUFBQUFnQUFDQUFBQUFBQUlBQUFBQUFCQWVBQUFBTUFBQUFBQUFBQUFBQUFBQUFBQUFRQUFBSUFBQUFBQUFBQUFBRUFBQUFBQUFBQUlBaUFBQUFBQUFBUUFCRkFBQVFBQUFBQUFBQUFBQUNBQUFBQUFBQUFBQUNCQUFBQUFBQUFBQUFBQkFBZ0FBQUFBQUFBQUFZVEFRQUFBQUFCQUdBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQkFKRUFDQUNBQUFBQUFBQWdBQUFBQUFBUUJoQkFFQUFFS0lBQUFBQUFBQUFLQUJRQUFBQUNnQXhBRUFRQUFBQUFBQUFBQUNBQUVnUkJBQUFBQWdBQUFBQkFBQ0FBSUFBQUFBR0FFQlFCQW9nWUNBRUNnQXdBQUFDQURBQUFBQUFRQUFBQUFBQUFBQUFBQWlBQUFBQUFBQUFDUUFBQURCQVFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFCQUFBQUFFL2JyXHgzZDEvcnNceDNkQUNUOTBvR2JBVjNoZ1dJcXo4SS1wcGRiWXlfeEc1OEk3Zz9jYlx4M2QxMjE1MDkzNzgnLGJhc2VqczonL3hqcy9fL2pzL2tceDNkeGpzLmhkLm5vLlpKWC0weVFuTy1NLjIwMTkuTy9hbVx4M2RBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQWdRQUFBQUFCQkFBQUFBQUFBQUFBQUFBQVlBQWdBQUFBQUFBQUFBQUFBQUFBQUFJQUFBUUFBSUFBQUFBQUFBQUFBRUFBQUFBQUFCQUFBQ0FBQVlBQUFBUUFCQkFBQUFBTUFBQUFBQUFBQUFBQUFBQUFBQUFBQWdCQUFBQUJDQUFEd0J3WllBUUFBQUFBQUFBQVNBREFBQUFBQUFBQUFGZ0FBSUFFQUFBQUVRQUFBQUFBQUFBQUFBQUFBQUFBQUFCQUFBQUFBQUFBQUFBQUJnQUFBQUFBS0FBQUFBQkFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUJBQUFBQUFBQUFBQUFBQUFBQWdBQUFDZ0FBQ0FBQUFnQUFBQUFBQUFBQUFBQUFBQUNnQXdBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUNBQUFRSUFBQUFBQUFBQUFBQVFBQ0FBQUFFQUhRT0FCaGhRVUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUNMSUJkU0FFQkVBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUJBeUFrQUFBQUFBSUNGL2RnXHgzZDAvYnJceDNkMS9yc1x4M2RBQ1Q5MG9HX3NUTjg3NnBLTHNuOEVBSUM3SFBBdDh5VzhRP2NiXHgzZDEyMTUwOTM3OCcsZXhjbTpbXX07fSkoKTsoZnVuY3Rpb24oKXt2YXIgZj0ic3JjIGhyZWYgYXN5bmMgbm9uY2UgdHlwZSBjaGFyc2V0IGNyb3Nzb3JpZ2luIG9ubG9hZCByZWwiLnNwbGl0KCIgIik7d2luZG93Ll9ydGY9ZnVuY3Rpb24oYixjKXt2YXIgYT1kb2N1bWVudC5jcmVhdGVFbGVtZW50KGIudGFnTmFtZSk7Zi5mb3JFYWNoKGZ1bmN0aW9uKGUpe2FbZV09YltlXX0pO2Eub25lcnJvcj1mdW5jdGlvbigpe3dpbmRvdy5fcnRmKGEsYyl9O3ZhciBkPWIuZGF0YXNldC5ydGM9PT12b2lkIDA/MDpOdW1iZXIoYi5kYXRhc2V0LnJ0Yyk7ZD49ND9jJiZjKCk6KGEuZGF0YXNldC5ydGM9U3RyaW5nKGQrMSksc2V0VGltZW91dChmdW5jdGlvbigpe2RvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoYSl9LDUwKk1hdGgucG93KDIsZCkrTWF0aC5yYW5kb20oKSo1MCkpfTt9KS5jYWxsKHRoaXMpOzwvc2NyaXB0PjxsaW5rIGhyZWY9Ii94anMvXy9zcy9rPXhqcy5oZC5oOUdIamFBcGhsMC5MLkY0Lk8vYW09QUFBRVFBQUFBQUFBQUFBQUFBUUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFCQUFBQUlFQ0FBQVpBQUFBQUFBZ0FBQ0FBQUFBQUFJQUFBQUFBQkFlQUFBQU1BQUFBQUFBQUFBQUFBQUFBQUFBUUFBQUlBQUFBQUFBQUFBQUVBQUFBQUFBQUFJQWlBQUFBQUFBQVFBQkZBQUFRQUFBQUFBQUFBQUFDQUFBQUFBQUFBQUFDQkFBQUFBQUFBQUFBQUJBQWdBQUFBQUFBQUFBWVRBUUFBQUFBQkFHQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUJBSkVBQ0FDQUFBQUFBQUFnQUFBQUFBQVFCaEJBRUFBRUtJQUFBQUFBQUFBS0FCUUFBQUFDZ0F4QUVBUUFBQUFBQUFBQUFDQUFFZ1JCQUFBQUFnQUFBQUJBQUNBQUlBQUFBQUdBRUJRQkFvZ1lDQUVDZ0F3QUFBQ0FEQUFBQUFBUUFBQUFBQUFBQUFBQUFpQUFBQUFBQUFBQ1FBQUFEQkFRQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQkFBQUFBRS9kPTEvZWQ9MS9icj0xL3JzPUFDVDkwb0diQVYzaGdXSXF6OEktcHBkYll5X3hHNThJN2cvbT1jZG9zLGhzbSxqc2EsbWI0WlViLGNFdDkwYixTTlVuMyxxZGRnS2Usc1RzRE1jLGR0bDBoZCxlSERmbCxZVjViZWUsZCxjc2k/Y2I9MTIxNTA5Mzc4IiBvbmVycm9yPSJfcnRmKHRoaXMpIiByZWw9InN0eWxlc2hlZXQiIG5vbmNlPSJZT3lISDNsdE9tRDlCb3lfWkJ5QWxRIj48c2NyaXB0IG5vbmNlPSJZT3lISDNsdE9tRDlCb3lfWkJ5QWxRIj4oZnVuY3Rpb24oKXtnb29nbGUua0VYUEk9JzAsMTgxNjgsNDMwMDY5MCw1ODk0MDM1LDUxMiw2MjI1Njk1MSw0NDM3MzUsMzUyMzAsMTM0NjgsMjQyMzksNDAzMzAsMTU0MTEsMjEyNTY0NDgsNjUyMzE4MCwxMDQ3LDE1OCwyMDk0LDE5NDg3OTAsNTczOTAwLDMwMzg2ODAsMTUxMTEzNjUsODU4Myw3NDMwLDk0NywxMjg4LDc3OCwxODE3NCwzOTMzOCwzNzc0LDE3OTc0LDg0MTMsNzYwMyw2NDQ4LDcwOTksMjE0LDEwNDA3LDcwMywxNDIzMyw3NzEsMzUzMSwyNTU1MCw2MDc1LDU4OTQsMTAxNDksNjkyMiw3NjMwLDEzNDEsNTQzLDEzODcsMjIzLDIwMDAsNjY5NSw1OTYyLDI2NzMsMTM5LDYzMzQsNTE1LDE3MDIsMzU5NywyNTY3LDYwMDUsNzIwNywxMzUzNSwyMjksMTk2OCwzODYxLDEyOTQsMTMwLDYyNiwzNTgyLDIxNSw0NiwxMTk1LDQxNTAsMzg0LDU3OTMsMjEyNCwyNDExLDM3NzEsNDM0LDEyNjUsMTQ4NiwyMTIxLDMxNzEsOTA4LDI2NywxNDg4LDEyMyw1NjUsMTI0OSwxNDM5LDEyMTQsMTM2NCwxNjU4LDE2LDQ2OCwxNzYsMTExMCwzMzksMzY4NCw4OTAsMTMzLDEyMzIsNjU5LDUzLDQ1LDYyOSwyOTAyLDcwNywxMzYyLDE3MzEsMTQ5Nyw5MDA4LDEwNjYsMTI0NCwxMTYwLDMyNDgsMTAwLDIwMjgsMTgwMiw0OTU4LDY1LDI2LDg0MiwzMzEsOTU0LDEyMDUsNDQ0LDg3LDM1NSw0NzcsOTAzLDE1NzcsMTU2MCw0NzU4LDEyMjUsOTk0LDI5MjknO30pKCk7d2luZG93Ll8gPSB3aW5kb3cuXyB8fCB7fTt3aW5kb3cuX0R1bXBFeGNlcHRpb24gPSBfLl9EdW1wRXhjZXB0aW9uID0gZnVuY3Rpb24oZSl7dGhyb3cgZTt9O3dpbmRvdy5fcyA9IHdpbmRvdy5fcyB8fCB7fTtfcy5fRHVtcEV4Y2VwdGlvbiA9IF8uX0R1bXBFeGNlcHRpb247d2luZG93Ll9xcyA9IHdpbmRvdy5fcXMgfHwge307X3FzLl9EdW1wRXhjZXB0aW9uID0gXy5fRHVtcEV4Y2VwdGlvbjt3aW5kb3cubG9hZGVkX2hfMCA9IGZ1bmN0aW9uKGNiKXtjYi5jYWxsKHdpbmRvdyx3aW5kb3cuXyk7fTsoZnVuY3Rpb24oKXt2YXIgdD1bMjcwMzM2LDEsMCw2NTUzNiwwLDAsMCwwLDY3MTA4ODY0LDY3MTA4ODgxLDMyNTA3OTIyNCw0MDI2NTMxOTAsNjI5MTUzNywxNjk4MzA3MiwyMDk3MTUyLDAsMTk3MDE3NiwxMjk3NjY3MiwxNjg1MTQ4MCwxMzQzNTE3MDgsMTY3ODM3ODI0LDE3NzAzNDQwLDEzMTA3MiwyMTM4MTEyLDI2ODQzNTQ1NiwxNjc4MzcxMywyMzc4MjQ0LDgwNzQ0NTAwMCwyMTgzMTAwOCwxMzYzMjkwNCwxMDQwNzE2OTAsMCwxMzQyMTc3NjAsNTk5NDU2NDY4LDE3OTQwOSwzMTkyMzc2NTIsMjczOTA3ODQyLDQwODk0MTA5NiwxMzUyODAwMDAsMTQ3MTI4MzMsNTU0ODI3Nzc2LDE4MzczLDU4NzIxOTQ1NiwyOTIyMjksMzE1OTMyNTAsMzUzMjk0NDY1LDQ2OTc2NDE3OCwzNTY5MTE2MDQsMTIwNDM5MCw0NzIzMiwyNTQ5MzUwNSwyMjEwMDMyLDYwNDA0NjMzNiw2NzEyOTU1NCwxMzEyMzIsMjQyMDYwOCw0OTczMTg0MDAsNDE5NjU5OSw0Mjk5MzIyOTAsNzU0OTgzMDExLDY1MDExNzYzMiwyMzU5MzYxLDU1NDE3NjU3NiwxMDczMTc0LDE3NjE2MTQwOCw5OTIwMjA1NDQsMTAwNjcyNjQxLDE4MzUwMDgwLDU3NDYxOTY3NywyMDc0LDI3NjgzODkyNCwxMzExMTQyNyw1MzQ3NzM3NiwyMCw4MjI0LDE5Mjk2Mzg0LDM0NDIxNiwxNjkwOTAxMyw4MDUzMDg2NzIsNjU3OTMsNzIsMTY3ODQ2NDAsNTU4MzkxMzI2LDUsMCwwLDAsMCw3MzgzMjg1NzYsODYwNzg5NzYsNjU1NTIsMCwwLDAsMCwwLDEzODQxMjAzMiw1NTEsNDAyNjUzMTg0LDM3XTt3aW5kb3cuX0ZfdG9nZ2xlcyA9IHdpbmRvdy5feGpzX3RvZ2dsZXMgPSB0O30pKCk7d2luZG93Ll9GX2luc3RhbGxDc3MgPSB3aW5kb3cuX0ZfaW5zdGFsbENzcyB8fCBmdW5jdGlvbihjc3Mpe307KGZ1bmN0aW9uKCl7d2luZG93Lmdvb2dsZS54anN1PScveGpzL18vanMva1x4M2R4anMuaGQubm8uWkpYLTB5UW5PLU0uMjAxOS5PL2FtXHgzZEFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBZ1FBQUFBQUJCQUFBQUFBQUFBQUFBQUFBWUFBZ0FBQUFBQUFBQUFBQUFBQUFBQUlBQVFRQUFJQUFBQUFBQUFBQUFFQUFBQUFBQUJBQUFDQUFBWUFBQUFRQUJGQUFBQUFNQUFBQUFBQUFBQUFBQUFBQUFBQUFBZ0JBQUFBQkNBQUR3QndaWUFRQUFBQUFBQUFBU0FEQUFBQUFBQUFBQUZnQUFJQUVBQUFBRVFBQUFBQUFBQUFBQUFBQUFBQUFBQUJBQUFBQUFBQUFBQUFBQmdBQUFBQUFLQUFBQUFCQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQkFBQUFBQUFBQUFBQUFBQUFBZ0FBQUNnQUFDQUFBQWdBQUFBQUFBQUFBQUFBQUFBQ2dBd0FBQUFBREFBQUFBQUFBQUFBQUFBQUFBQUFBQ0FBQVFJQUFBQUFBQUFBQUFBUUFDQUFBQUVBSFFPQUJoaFFVQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQ0xJQmRTQUVCRUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQkF5QWtBQUFBQUFJQ0YvZFx4M2QxL2VkXHgzZDEvZGdceDNkNC9iclx4M2QxL3JzXHgzZEFDVDkwb0VwOVBlanhmQlpaUks3U2lpZXNaUnRfSDBURncvZWVceDNkQUxlSmliOkI4Z0x3ZDtBZmVhUDpUa3JBamY7Qk14QUdjOkU1YkZzZTtCZ1M2bWI6ZmlkajVkO0Jqd01jZTpjWFgyV2I7Q0laVEdiOktxaHlrYjtDeFhBV2I6WXlSTHZjO0RRRXVlZDpGZXZoY2Y7RFVMcUI6UktmRzVjO0RrazZnZTpKWm1XOWU7RHBjUjNkOnpMNzJ4ZjtFQUJTWjpNWFp0OWQ7RVNyUFFjOm1OVEp2YztFVk5oamY6cHc3MEdjO0VqWEhwYjpwU0hxaDtFbVoyQmY6enIxanJiO0VubGNOZDpXZUhnNDtGNTRJQWU6WmdzRmg7RjltcXRlOlVvUmNiZTtGU3htVWU6ZmlaUjhiO0ZrdWtmYzppOEgyYztGbXY5TmM6TzFUendjO0cwS2hUYjpMSWFvWjtHbGVaTDpKMUE3T2Q7SE1ERFdlOkc4UVVkYjtIdFB4cmQ6R3g4akFiO0lCQURDYzpSWXF1UmI7SW9HbENmOmI1bGh2YjtJc2RXVmM6cXp4ek9iO0pYSlNtOmlpMVJHZjtKWFM4ZmI6UWowc3VjO0pxU3E3ZDp5OWVQaGU7SnNiTmhjOlhkOGlVZDtLMDhoeGU6em1iR2xmO0s1bllUZDpaRFpjcmU7S0EzUDI6QzNKbkNlO0tEYjZuYjpmRTluMjtLT3hjSzpPWnFHdGU7S1F6V2lkOlpNS2tOO0tkSUhlZjpCV3ROajtLcFJBdWU6VGlhNTdiO0xCZ1JMYzpTZGN3SGIsWFZNTnZkO0xCbjhDZjpiSjlMMGM7TEVpa1plOmJ5ZlRPYixsc2pWbWM7TFhBOGI6cTdPZEtkO0xzTmFoYjp1Y0dMTmI7TU5rQWRlOktNQ2QxZDtOSjFyZmU6cVRub0JmO05QS2FLOlNkY3dIYjtOU0VvWDpsYXpHN2I7TmpJd2VmOllWZ2k3ZDtOcDhRa2Q6RHB4NnFjO055dDZpYzpqbjJzR2Q7T0lmV1ViOnFmT1ljZDtPZ2FnQmU6Y05UZTA7T2lxRTJjOlRGcEVLO09vSzV2OlNwNjlPO09vaElZZTptcEVBUWI7UGpwbHVkOlBvRXM5YjtQcFRMWGQ6cEpZang7UTFPdzdiOng1Q1N1O1E3aUo5YzpiVkxaM2Q7UUUyMEJlOmdJbHRPO1FGT0dsZjpQUTJBb2U7UUdSMGdkOk1saG15O1FZTEYyYjpwQVFZVWQ7UXc4RmViOmpwYXZVZTtSNElJSWI6UVdmZUtmO1I5VWx4OkNSN1VmZTtSQ0Y1U2Q6WDFrQm1kO1JhZjVtZTptZ3ZGTWM7U0x0cU86S2gxeFllO1NNREw0YzpmVGZHTztTTlVuMzpad0RrOWQseEQ4S3A7U05rNEplOndXTWhnO1NjSTNZYzplN0h6Z2IsZTdIemdiO1NocEY2ZTpOMHB2R2M7U25haHJlOm1HQ3RvYjtTd0NxQWQ6ZlhiQ1pjO1N6UVEzZTpkTmhvZmI7VElVVlFkOmxXVEp3ZDtUcm9aMWQ6dlZWempiO1U5NnBSZDpGc1IwNDtVQktKWjpMR0RKR2I7VURyWTFjOk4wRjI5ZCxXNTBOVmQsZXBzNDZkLHdjaXlVZTtVVm1qRWQ6RWVzUnNiO1VWemI5YzpJdlBaNmQ7VVlSSUViOkh6VEFRYztVeUc3S2I6d1FkMEc7VjJIVFRlOlJvbFRZO1ZHUmZ4OlZGcWJyO1ZNdUVtOnBMN3NCYztWTjZqSWM6ZGRReXVmO1ZPY2dEZTpZcXVoVGI7VmhBN2JkOnZBbVFGZjtWc0FxU2I6UEdmMlJlO1c5UVNRZTp5bkNXd2M7V0RHeUZlOmpjVk94ZDtXWHROZWI6UVU5Qk1kO1dmbWR1ZTpnM01KbGI7V2w1NWliOnZnYmlLYjtZM2M1c2Q6RkdiZkxlO1lJWm1SZDpBMXluNWQ7WVY1YmVlOkl2UFo2ZDtZbkhVQmY6c05zU29iO1pTSDZ0YzpRQXZ5TGU7WldFVUE6YWZSNENmO1psT09NYjpQMEkwRWM7YTU2cE5lOkpFZkN3YjthQUpFOWM6V0hXNkVmO2FDSjl0ZjpxS2Z0dmM7YVZacTNlOkVNZVZJYjthWjYxb2Q6YXJUd0o7YWNpN3k6WjVUcjZjO2JVSWt3YjpXTXdFSGU7YmNQWFNjOmdTWkxKYjtjRXQ5MGI6d3M5VGxjO2NGVFdhZTpnVDhxbmQ7ZElvU0JiOlpnR2c5YjtkTGxqMjpRcXQzR2Y7ZFhkWlY6YTdRVHFkO2Rvd0lHYjplYlozbWIsZWJaM21iO2R0bDBoZDpsTFFXRmU7ZUJBZVNiOkNrNjN0YjtlQlo1TmQ6YXVkdmRlO2VIRGZsOm9malZrYjtlSktjaGM6QVRnMWJlO2VPM2xzZTpVZWZPbWI7ZXVPWFk6T1pqYlE7Zzhua3g6VTRNektjO2dhdWI0OlRONmJNZTtnYmZIUjpxWnR6aWI7Z3RWU2k6ZWtVT1lkO2gzTVlvZDp3czlUbGM7aEs2N3FiOlFXRU81YjtoVmljMWI6S3FoeWtiO2hlSEIxOnNGY3pxO2hqUm82ZTpGNjJzRztobHFHWDpGV3oxaWM7aHNMc1ljOlZsMTE4O2h3b1ZIZDp6dzRVOGM7aUZReUtmOlFJaEZyO2pKajJHOmtGMm8yYjtrMU8wcmY6cG5PVUxkO2syUXhjYjpYWTUxcGU7a2JBbTlkOk1rSHlHZDtsT08wVmQ6T1RBM0FlO2xiZmt5ZjpNcUdkVWQ7bGlBejdkOmtGMm8yYjttTVZPR2I6cURNN0s7bVd6czljOmZ6NXVrZjtuQlpuWmU6Q3ZFcmpiO25FNk9KZjpGaTRyc2M7bkVCV05iOk14S1g5ZDtuSnc0R2Q6ZFBGWkg7bnJEY3c6U3VFb0RlO29HdEF1YzpzT1hGajtvU1VOeWQ6ZlRmR08sZlRmR087b1VsbnBjOlJhZ0RsYztvaUJocmU6T3VNa1JkO29rVWFVZDp3SXRhZGI7cEtKaVhkOlZDZW5oYztwTnNsMmQ6ajlZdXljO3BYZFJZYjpKS29LVmU7cGo4MmxlOnd3MDREZjtxR1YydWM6SEhpMDRjO3FRRW9PYzpLVU03WixkN1lTZmQ7cVp4MkZjOmoweHJFO3FhUzNnZDp5aUxnNmU7cWFmQlBkOnNnWTZaYjtxYXZyWGU6STBDOXU7cWRkZ0tlOmQ3WVNmZCx4NEZZWGU7cmRleEtmOkZFa0tEO3JtV2FqOlBNUzZTZDtyb3BrWjpVVDFERztzVHNETWM6a0hWU1ViO3NabWR2YzpyZEdFZmM7dEg0SUllOlltcnk2O3RlU1JTYjpCTUxhaTt0b3NLdmQ6WkNxUDM7dHJaTDBiOnFZOFBGZTt1dVFrWTp1MlYzdWQ7dkVZQ05iOkZhcXNWZDt2UmxNdmY6SXc5WG87dmZWd1BkOmxjcmt3ZTt3M2JaQ2I6WlBHYUliO3c5dzg2ZDpYd2hVRWIsZHQ0ZzJiLGdLRDkwYyxsV1ZaVmU7d1FsWXZlOmFMVWZQO3dSNUZSYjpPMUdqemUsVHRjT3RlO3dWNVBqYzpMOEtHeGU7eDlOOWllOktINFFvZjt4QmJzcmM6TkVXMVFjO3hwYVJvYjpBVnFaOWI7eWlMNUFiOk1UMFpCZDt5c05pTWM6Q3BJQmpkO3l4VGNoZjpLVU03Wjt6OTdZR2Y6b3VnOXRlO3phSWdQYjpTbDBweGQvbVx4M2RjZG9zLGhzbSxqc2EsbWI0WlViLGNFdDkwYixTTlVuMyxxZGRnS2Usc1RzRE1jLGR0bDBoZCxlSERmbCxZVjViZWUsZCxjc2k/Y2JceDNkMTIxNTA5Mzc4Jzt3aW5kb3cuX0ZfanNVcmw9Jy94anMvXy9qcy9rXHgzZHhqcy5oZC5uby5aSlgtMHlRbk8tTS4yMDE5Lk8vYW1ceDNkQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFnUUFBQUFBQkJBQUFBQUFBQUFBQUFBQUFZQUFnQUFBQUFBQUFBQUFBQUFBQUFBSUFBUVFBQUlBQUFBQUFBQUFBQUVBQUFBQUFBQkFBQUNBQUFZQUFBQVFBQkZBQUFBQU1BQUFBQUFBQUFBQUFBQUFBQUFBQUFnQkFBQUFCQ0FBRHdCd1pZQVFBQUFBQUFBQUFTQURBQUFBQUFBQUFBRmdBQUlBRUFBQUFFUUFBQUFBQUFBQUFBQUFBQUFBQUFBQkFBQUFBQUFBQUFBQUFCZ0FBQUFBQUtBQUFBQUJBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFCQUFBQUFBQUFBQUFBQUFBQUFnQUFBQ2dBQUNBQUFBZ0FBQUFBQUFBQUFBQUFBQUFDZ0F3QUFBQUFEQUFBQUFBQUFBQUFBQUFBQUFBQUFDQUFBUUlBQUFBQUFBQUFBQUFRQUNBQUFBRUFIUU9BQmhoUVVBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFDTElCZFNBRUJFQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFCQXlBa0FBQUFBQUlDRi9kXHgzZDEvZWRceDNkMS9kZ1x4M2Q0L2JyXHgzZDEvcnNceDNkQUNUOTBvRXA5UGVqeGZCWlpSSzdTaWllc1pSdF9IMFRGdy9lZVx4M2RBTGVKaWI6QjhnTHdkO0FmZWFQOlRrckFqZjtCTXhBR2M6RTViRnNlO0JnUzZtYjpmaWRqNWQ7Qmp3TWNlOmNYWDJXYjtDSVpUR2I6S3FoeWtiO0N4WEFXYjpZeVJMdmM7RFFFdWVkOkZldmhjZjtEVUxxQjpSS2ZHNWM7RGtrNmdlOkpabVc5ZTtEcGNSM2Q6ekw3MnhmO0VBQlNaOk1YWnQ5ZDtFU3JQUWM6bU5USnZjO0VWTmhqZjpwdzcwR2M7RWpYSHBiOnBTSHFoO0VtWjJCZjp6cjFqcmI7RW5sY05kOldlSGc0O0Y1NElBZTpaZ3NGaDtGOW1xdGU6VW9SY2JlO0ZTeG1VZTpmaVpSOGI7Rmt1a2ZjOmk4SDJjO0ZtdjlOYzpPMVR6d2M7RzBLaFRiOkxJYW9aO0dsZVpMOkoxQTdPZDtITUREV2U6RzhRVWRiO0h0UHhyZDpHeDhqQWI7SUJBRENjOlJZcXVSYjtJb0dsQ2Y6YjVsaHZiO0lzZFdWYzpxenh6T2I7SlhKU206aWkxUkdmO0pYUzhmYjpRajBzdWM7SnFTcTdkOnk5ZVBoZTtKc2JOaGM6WGQ4aVVkO0swOGh4ZTp6bWJHbGY7SzVuWVRkOlpEWmNyZTtLQTNQMjpDM0puQ2U7S0RiNm5iOmZFOW4yO0tPeGNLOk9acUd0ZTtLUXpXaWQ6Wk1La047S2RJSGVmOkJXdE5qO0twUkF1ZTpUaWE1N2I7TEJnUkxjOlNkY3dIYixYVk1OdmQ7TEJuOENmOmJKOUwwYztMRWlrWmU6YnlmVE9iLGxzalZtYztMWEE4YjpxN09kS2Q7THNOYWhiOnVjR0xOYjtNTmtBZGU6S01DZDFkO05KMXJmZTpxVG5vQmY7TlBLYUs6U2Rjd0hiO05TRW9YOmxhekc3YjtOakl3ZWY6WVZnaTdkO05wOFFrZDpEcHg2cWM7Tnl0NmljOmpuMnNHZDtPSWZXVWI6cWZPWWNkO09nYWdCZTpjTlRlMDtPaXFFMmM6VEZwRUs7T29LNXY6U3A2OU87T29oSVllOm1wRUFRYjtQanBsdWQ6UG9FczliO1BwVExYZDpwSllqeDtRMU93N2I6eDVDU3U7UTdpSjljOmJWTFozZDtRRTIwQmU6Z0lsdE87UUZPR2xmOlBRMkFvZTtRR1IwZ2Q6TWxobXk7UVlMRjJiOnBBUVlVZDtRdzhGZWI6anBhdlVlO1I0SUlJYjpRV2ZlS2Y7UjlVbHg6Q1I3VWZlO1JDRjVTZDpYMWtCbWQ7UmFmNW1lOm1ndkZNYztTTHRxTzpLaDF4WWU7U01ETDRjOmZUZkdPO1NOVW4zOlp3RGs5ZCx4RDhLcDtTTms0SmU6d1dNaGc7U2NJM1ljOmU3SHpnYixlN0h6Z2I7U2hwRjZlOk4wcHZHYztTbmFocmU6bUdDdG9iO1N3Q3FBZDpmWGJDWmM7U3pRUTNlOmROaG9mYjtUSVVWUWQ6bFdUSndkO1Ryb1oxZDp2VlZ6amI7VTk2cFJkOkZzUjA0O1VCS0paOkxHREpHYjtVRHJZMWM6TjBGMjlkLFc1ME5WZCxlcHM0NmQsd2NpeVVlO1VWbWpFZDpFZXNSc2I7VVZ6YjljOkl2UFo2ZDtVWVJJRWI6SHpUQVFjO1V5RzdLYjp3UWQwRztWMkhUVGU6Um9sVFk7VkdSZng6VkZxYnI7Vk11RW06cEw3c0JjO1ZONmpJYzpkZFF5dWY7Vk9jZ0RlOllxdWhUYjtWaEE3YmQ6dkFtUUZmO1ZzQXFTYjpQR2YyUmU7VzlRU1FlOnluQ1d3YztXREd5RmU6amNWT3hkO1dYdE5lYjpRVTlCTWQ7V2ZtZHVlOmczTUpsYjtXbDU1aWI6dmdiaUtiO1kzYzVzZDpGR2JmTGU7WUlabVJkOkExeW41ZDtZVjViZWU6SXZQWjZkO1luSFVCZjpzTnNTb2I7WlNINnRjOlFBdnlMZTtaV0VVQTphZlI0Q2Y7WmxPT01iOlAwSTBFYzthNTZwTmU6SkVmQ3diO2FBSkU5YzpXSFc2RWY7YUNKOXRmOnFLZnR2YzthVlpxM2U6RU1lVkliO2FaNjFvZDphclR3SjthY2k3eTpaNVRyNmM7YlVJa3diOldNd0VIZTtiY1BYU2M6Z1NaTEpiO2NFdDkwYjp3czlUbGM7Y0ZUV2FlOmdUOHFuZDtkSW9TQmI6WmdHZzliO2RMbGoyOlFxdDNHZjtkWGRaVjphN1FUcWQ7ZG93SUdiOmViWjNtYixlYlozbWI7ZHRsMGhkOmxMUVdGZTtlQkFlU2I6Q2s2M3RiO2VCWjVOZDphdWR2ZGU7ZUhEZmw6b2ZqVmtiO2VKS2NoYzpBVGcxYmU7ZU8zbHNlOlVlZk9tYjtldU9YWTpPWmpiUTtnOG5reDpVNE16S2M7Z2F1YjQ6VE42Yk1lO2diZkhSOnFadHppYjtndFZTaTpla1VPWWQ7aDNNWW9kOndzOVRsYztoSzY3cWI6UVdFTzViO2hWaWMxYjpLcWh5a2I7aGVIQjE6c0ZjenE7aGpSbzZlOkY2MnNHO2hscUdYOkZXejFpYztoc0xzWWM6VmwxMTg7aHdvVkhkOnp3NFU4YztpRlF5S2Y6UUloRnI7akpqMkc6a0YybzJiO2sxTzByZjpwbk9VTGQ7azJReGNiOlhZNTFwZTtrYkFtOWQ6TWtIeUdkO2xPTzBWZDpPVEEzQWU7bGJma3lmOk1xR2RVZDtsaUF6N2Q6a0YybzJiO21NVk9HYjpxRE03SzttV3pzOWM6Zno1dWtmO25CWm5aZTpDdkVyamI7bkU2T0pmOkZpNHJzYztuRUJXTmI6TXhLWDlkO25KdzRHZDpkUEZaSDtuckRjdzpTdUVvRGU7b0d0QXVjOnNPWEZqO29TVU55ZDpmVGZHTyxmVGZHTztvVWxucGM6UmFnRGxjO29pQmhyZTpPdU1rUmQ7b2tVYVVkOndJdGFkYjtwS0ppWGQ6VkNlbmhjO3BOc2wyZDpqOVl1eWM7cFhkUlliOkpLb0tWZTtwajgybGU6d3cwNERmO3FHVjJ1YzpISGkwNGM7cVFFb09jOktVTTdaLGQ3WVNmZDtxWngyRmM6ajB4ckU7cWFTM2dkOnlpTGc2ZTtxYWZCUGQ6c2dZNlpiO3FhdnJYZTpJMEM5dTtxZGRnS2U6ZDdZU2ZkLHg0RllYZTtyZGV4S2Y6RkVrS0Q7cm1XYWo6UE1TNlNkO3JvcGtaOlVUMURHO3NUc0RNYzprSFZTVWI7c1ptZHZjOnJkR0VmYzt0SDRJSWU6WW1yeTY7dGVTUlNiOkJNTGFpO3Rvc0t2ZDpaQ3FQMzt0clpMMGI6cVk4UEZlO3V1UWtZOnUyVjN1ZDt2RVlDTmI6RmFxc1ZkO3ZSbE12ZjpJdzlYbzt2ZlZ3UGQ6bGNya3dlO3czYlpDYjpaUEdhSWI7dzl3ODZkOlh3aFVFYixkdDRnMmIsZ0tEOTBjLGxXVlpWZTt3UWxZdmU6YUxVZlA7d1I1RlJiOk8xR2p6ZSxUdGNPdGU7d1Y1UGpjOkw4S0d4ZTt4OU45aWU6S0g0UW9mO3hCYnNyYzpORVcxUWM7eHBhUm9iOkFWcVo5Yjt5aUw1QWI6TVQwWkJkO3lzTmlNYzpDcElCamQ7eXhUY2hmOktVTTdaO3o5N1lHZjpvdWc5dGU7emFJZ1BiOlNsMHB4ZC9tXHgzZGNkb3MsaHNtLGpzYSxtYjRaVWIsY0V0OTBiLFNOVW4zLHFkZGdLZSxzVHNETWMsZHRsMGhkLGVIRGZsLFlWNWJlZSxkLGNzaT9jYlx4M2QxMjE1MDkzNzgnO30pKCk7PC9zY3JpcHQ+PHNjcmlwdCBkZWZlcj0iIiBzcmM9Ii94anMvXy9qcy9rPXhqcy5oZC5uby5aSlgtMHlRbk8tTS4yMDE5Lk8vYW09QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFnUUFBQUFBQkJBQUFBQUFBQUFBQUFBQUFZQUFnQUFBQUFBQUFBQUFBQUFBQUFBSUFBUVFBQUlBQUFBQUFBQUFBQUVBQUFBQUFBQkFBQUNBQUFZQUFBQVFBQkZBQUFBQU1BQUFBQUFBQUFBQUFBQUFBQUFBQUFnQkFBQUFCQ0FBRHdCd1pZQVFBQUFBQUFBQUFTQURBQUFBQUFBQUFBRmdBQUlBRUFBQUFFUUFBQUFBQUFBQUFBQUFBQUFBQUFBQkFBQUFBQUFBQUFBQUFCZ0FBQUFBQUtBQUFBQUJBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFCQUFBQUFBQUFBQUFBQUFBQUFnQUFBQ2dBQUNBQUFBZ0FBQUFBQUFBQUFBQUFBQUFDZ0F3QUFBQUFEQUFBQUFBQUFBQUFBQUFBQUFBQUFDQUFBUUlBQUFBQUFBQUFBQUFRQUNBQUFBRUFIUU9BQmhoUVVBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFDTElCZFNBRUJFQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFCQXlBa0FBQUFBQUlDRi9kPTEvZWQ9MS9kZz00L2JyPTEvcnM9QUNUOTBvRXA5UGVqeGZCWlpSSzdTaWllc1pSdF9IMFRGdy9lZT1BTGVKaWI6QjhnTHdkO0FmZWFQOlRrckFqZjtCTXhBR2M6RTViRnNlO0JnUzZtYjpmaWRqNWQ7Qmp3TWNlOmNYWDJXYjtDSVpUR2I6S3FoeWtiO0N4WEFXYjpZeVJMdmM7RFFFdWVkOkZldmhjZjtEVUxxQjpSS2ZHNWM7RGtrNmdlOkpabVc5ZTtEcGNSM2Q6ekw3MnhmO0VBQlNaOk1YWnQ5ZDtFU3JQUWM6bU5USnZjO0VWTmhqZjpwdzcwR2M7RWpYSHBiOnBTSHFoO0VtWjJCZjp6cjFqcmI7RW5sY05kOldlSGc0O0Y1NElBZTpaZ3NGaDtGOW1xdGU6VW9SY2JlO0ZTeG1VZTpmaVpSOGI7Rmt1a2ZjOmk4SDJjO0ZtdjlOYzpPMVR6d2M7RzBLaFRiOkxJYW9aO0dsZVpMOkoxQTdPZDtITUREV2U6RzhRVWRiO0h0UHhyZDpHeDhqQWI7SUJBRENjOlJZcXVSYjtJb0dsQ2Y6YjVsaHZiO0lzZFdWYzpxenh6T2I7SlhKU206aWkxUkdmO0pYUzhmYjpRajBzdWM7SnFTcTdkOnk5ZVBoZTtKc2JOaGM6WGQ4aVVkO0swOGh4ZTp6bWJHbGY7SzVuWVRkOlpEWmNyZTtLQTNQMjpDM0puQ2U7S0RiNm5iOmZFOW4yO0tPeGNLOk9acUd0ZTtLUXpXaWQ6Wk1La047S2RJSGVmOkJXdE5qO0twUkF1ZTpUaWE1N2I7TEJnUkxjOlNkY3dIYixYVk1OdmQ7TEJuOENmOmJKOUwwYztMRWlrWmU6YnlmVE9iLGxzalZtYztMWEE4YjpxN09kS2Q7THNOYWhiOnVjR0xOYjtNTmtBZGU6S01DZDFkO05KMXJmZTpxVG5vQmY7TlBLYUs6U2Rjd0hiO05TRW9YOmxhekc3YjtOakl3ZWY6WVZnaTdkO05wOFFrZDpEcHg2cWM7Tnl0NmljOmpuMnNHZDtPSWZXVWI6cWZPWWNkO09nYWdCZTpjTlRlMDtPaXFFMmM6VEZwRUs7T29LNXY6U3A2OU87T29oSVllOm1wRUFRYjtQanBsdWQ6UG9FczliO1BwVExYZDpwSllqeDtRMU93N2I6eDVDU3U7UTdpSjljOmJWTFozZDtRRTIwQmU6Z0lsdE87UUZPR2xmOlBRMkFvZTtRR1IwZ2Q6TWxobXk7UVlMRjJiOnBBUVlVZDtRdzhGZWI6anBhdlVlO1I0SUlJYjpRV2ZlS2Y7UjlVbHg6Q1I3VWZlO1JDRjVTZDpYMWtCbWQ7UmFmNW1lOm1ndkZNYztTTHRxTzpLaDF4WWU7U01ETDRjOmZUZkdPO1NOVW4zOlp3RGs5ZCx4RDhLcDtTTms0SmU6d1dNaGc7U2NJM1ljOmU3SHpnYixlN0h6Z2I7U2hwRjZlOk4wcHZHYztTbmFocmU6bUdDdG9iO1N3Q3FBZDpmWGJDWmM7U3pRUTNlOmROaG9mYjtUSVVWUWQ6bFdUSndkO1Ryb1oxZDp2VlZ6amI7VTk2cFJkOkZzUjA0O1VCS0paOkxHREpHYjtVRHJZMWM6TjBGMjlkLFc1ME5WZCxlcHM0NmQsd2NpeVVlO1VWbWpFZDpFZXNSc2I7VVZ6YjljOkl2UFo2ZDtVWVJJRWI6SHpUQVFjO1V5RzdLYjp3UWQwRztWMkhUVGU6Um9sVFk7VkdSZng6VkZxYnI7Vk11RW06cEw3c0JjO1ZONmpJYzpkZFF5dWY7Vk9jZ0RlOllxdWhUYjtWaEE3YmQ6dkFtUUZmO1ZzQXFTYjpQR2YyUmU7VzlRU1FlOnluQ1d3YztXREd5RmU6amNWT3hkO1dYdE5lYjpRVTlCTWQ7V2ZtZHVlOmczTUpsYjtXbDU1aWI6dmdiaUtiO1kzYzVzZDpGR2JmTGU7WUlabVJkOkExeW41ZDtZVjViZWU6SXZQWjZkO1luSFVCZjpzTnNTb2I7WlNINnRjOlFBdnlMZTtaV0VVQTphZlI0Q2Y7WmxPT01iOlAwSTBFYzthNTZwTmU6SkVmQ3diO2FBSkU5YzpXSFc2RWY7YUNKOXRmOnFLZnR2YzthVlpxM2U6RU1lVkliO2FaNjFvZDphclR3SjthY2k3eTpaNVRyNmM7YlVJa3diOldNd0VIZTtiY1BYU2M6Z1NaTEpiO2NFdDkwYjp3czlUbGM7Y0ZUV2FlOmdUOHFuZDtkSW9TQmI6WmdHZzliO2RMbGoyOlFxdDNHZjtkWGRaVjphN1FUcWQ7ZG93SUdiOmViWjNtYixlYlozbWI7ZHRsMGhkOmxMUVdGZTtlQkFlU2I6Q2s2M3RiO2VCWjVOZDphdWR2ZGU7ZUhEZmw6b2ZqVmtiO2VKS2NoYzpBVGcxYmU7ZU8zbHNlOlVlZk9tYjtldU9YWTpPWmpiUTtnOG5reDpVNE16S2M7Z2F1YjQ6VE42Yk1lO2diZkhSOnFadHppYjtndFZTaTpla1VPWWQ7aDNNWW9kOndzOVRsYztoSzY3cWI6UVdFTzViO2hWaWMxYjpLcWh5a2I7aGVIQjE6c0ZjenE7aGpSbzZlOkY2MnNHO2hscUdYOkZXejFpYztoc0xzWWM6VmwxMTg7aHdvVkhkOnp3NFU4YztpRlF5S2Y6UUloRnI7akpqMkc6a0YybzJiO2sxTzByZjpwbk9VTGQ7azJReGNiOlhZNTFwZTtrYkFtOWQ6TWtIeUdkO2xPTzBWZDpPVEEzQWU7bGJma3lmOk1xR2RVZDtsaUF6N2Q6a0YybzJiO21NVk9HYjpxRE03SzttV3pzOWM6Zno1dWtmO25CWm5aZTpDdkVyamI7bkU2T0pmOkZpNHJzYztuRUJXTmI6TXhLWDlkO25KdzRHZDpkUEZaSDtuckRjdzpTdUVvRGU7b0d0QXVjOnNPWEZqO29TVU55ZDpmVGZHTyxmVGZHTztvVWxucGM6UmFnRGxjO29pQmhyZTpPdU1rUmQ7b2tVYVVkOndJdGFkYjtwS0ppWGQ6VkNlbmhjO3BOc2wyZDpqOVl1eWM7cFhkUlliOkpLb0tWZTtwajgybGU6d3cwNERmO3FHVjJ1YzpISGkwNGM7cVFFb09jOktVTTdaLGQ3WVNmZDtxWngyRmM6ajB4ckU7cWFTM2dkOnlpTGc2ZTtxYWZCUGQ6c2dZNlpiO3FhdnJYZTpJMEM5dTtxZGRnS2U6ZDdZU2ZkLHg0RllYZTtyZGV4S2Y6RkVrS0Q7cm1XYWo6UE1TNlNkO3JvcGtaOlVUMURHO3NUc0RNYzprSFZTVWI7c1ptZHZjOnJkR0VmYzt0SDRJSWU6WW1yeTY7dGVTUlNiOkJNTGFpO3Rvc0t2ZDpaQ3FQMzt0clpMMGI6cVk4UEZlO3V1UWtZOnUyVjN1ZDt2RVlDTmI6RmFxc1ZkO3ZSbE12ZjpJdzlYbzt2ZlZ3UGQ6bGNya3dlO3czYlpDYjpaUEdhSWI7dzl3ODZkOlh3aFVFYixkdDRnMmIsZ0tEOTBjLGxXVlpWZTt3UWxZdmU6YUxVZlA7d1I1RlJiOk8xR2p6ZSxUdGNPdGU7d1Y1UGpjOkw4S0d4ZTt4OU45aWU6S0g0UW9mO3hCYnNyYzpORVcxUWM7eHBhUm9iOkFWcVo5Yjt5aUw1QWI6TVQwWkJkO3lzTmlNYzpDcElCamQ7eXhUY2hmOktVTTdaO3o5N1lHZjpvdWc5dGU7emFJZ1BiOlNsMHB4ZC9tPWNkb3MsaHNtLGpzYSxtYjRaVWIsY0V0OTBiLFNOVW4zLHFkZGdLZSxzVHNETWMsZHRsMGhkLGVIRGZsLFlWNWJlZSxkLGNzaT9jYj0xMjE1MDkzNzgiIG5vbmNlPSJZT3lISDNsdE9tRDlCb3lfWkJ5QWxRIj48L3NjcmlwdD4gICA8c2NyaXB0IG5vbmNlPSJZT3lISDNsdE9tRDlCb3lfWkJ5QWxRIj4oZnVuY3Rpb24oKXt3aW5kb3cuZ29vZ2xlLmVyZD17anNyOjEsYnY6MjQ5NixzZDp0cnVlLGRlOnRydWUsZHBmOid0allicDB6Q3FhVHR0ZHBGLVdidndqLXc3YmY5VFBmb0VyaWZCd0EydVU0JyxjOiczNjJmJ307fSkoKTsoZnVuY3Rpb24oKXt2YXIgc2RvPWZhbHNlO3ZhciBtZWk9MTA7dmFyIGpzdGw9MDt2YXIgZGllbD0wOwp2YXIgZj10aGlzfHxzZWxmO3ZhciBrLGw9KGs9Zi5tZWkpIT1udWxsP2s6MSxtLHA9KG09Zi5kaWVsKSE9bnVsbD9tOjAscSxyPShxPWYuc2RvKSE9bnVsbD9xOiEwO3R5cGVvZiBqc3RsPT09Im51bWJlciImJmpzdGw+MCYmKEVycm9yLnN0YWNrVHJhY2VMaW1pdD1qc3RsKTt2YXIgdD0wLHUsdj1nb29nbGUuZXJkLHc9di5qc3I7Z29vZ2xlLm1sPWZ1bmN0aW9uKGEsYixjLG4sZSl7ZT1lPT09dm9pZCAwPzI6ZTtiJiYodT1hJiZhLm1lc3NhZ2UpO2M9PT12b2lkIDAmJihjPXt9KTtjLmNhZD0icGxlXyIrZ29vZ2xlLnBsZSsiLmFwbGVfIitnb29nbGUuYXBsZTtpZihnb29nbGUuZGwpcmV0dXJuIGdvb2dsZS5kbChhLGUsYywhMCksbnVsbDtiPWM7aWYodzwwKXt3aW5kb3cuY29uc29sZSYmY29uc29sZS5lcnJvcihhLGIpO2lmKHc9PT0tMil0aHJvdyBhO2I9ITF9ZWxzZSBiPSFhfHwhYS5tZXNzYWdlfHxhLm1lc3NhZ2U9PT0iRXJyb3IgbG9hZGluZyBzY3JpcHQifHx0Pj1sJiYhbj8hMTohMDtpZighYilyZXR1cm4gbnVsbDt0Kys7Yz1jfHx7fTtiPWVuY29kZVVSSUNvbXBvbmVudDt2YXIgZD0iJmVpPSIrYihnb29nbGUua0VJKTtnb29nbGUua0VYUEkmJihkKz0iJmpleHBpZD0iK2IoZ29vZ2xlLmtFWFBJKSk7ZCs9IiZzcmNwZz0iK2IoZ29vZ2xlLnNuKSsiJmpzcj0iK2Iodi5qc3IpKyImYnZlcj0iK2Iodi5idik7di5kcGYmJihkKz0iJmRwZj0iK2Iodi5kcGYpKTt2YXIgZz1hLmxpbmVOdW1iZXI7ZyE9PXZvaWQgMCYmKGQrPSImbGluZT0iK2cpO3ZhciBoPWEuZmlsZU5hbWU7aCYmKGguaW5kZXhPZigiLWV4dGVuc2lvbjovIik+MCYmKGU9MyksZCs9IiZzY3JpcHQ9IitiKGgpLGcmJmg9PT13aW5kb3cubG9jYXRpb24uaHJlZiYmKGc9ZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50Lm91dGVySFRNTC5zcGxpdCgiXG4iKVtnXSxkKz0iJmNhZD0iK2IoZz9nLnN1YnN0cmluZygwLDMwMCk6Ik5vIHNjcmlwdCBmb3VuZC4iKSkpO2dvb2dsZS5wbGUmJmdvb2dsZS5wbGU9PT0xJiYoZT0yKTtjJiZ2LmMmJihjLm9mYz1TdHJpbmcodi5jKSk7ZD1kKygiJmpzZWw9IitlKSsiJmVjdHg9IitiKEpTT04uc3RyaW5naWZ5KGMpKTtkKz0iJmVtc2c9IjtkKz1iKGEubmFtZSsiOiAiK2EubWVzc2FnZSk7ZCs9IiZqc3N0PSI7ZCs9YihhLnN0YWNrfHwiTi9BIik7ZC5sZW5ndGg+PTEyMjg4JiYoZD1kLnN1YnN0cmluZygwLDEyMjg4KSk7YT1kO2M9KCIvZ2VuXzIwND9hdHlwPWkiK2EpLnN1YnN0cmluZygwLDEyMjg4KTtufHwoZ29vZ2xlLmxvZygwLCIiLGMpLGdvb2dsZS5sb2coMCwiIiwoIi9odHRwc2VydmljZS9yZXRyeS9qc2Vycm9yP2F0eXA9aSIrYSkuc3Vic3RyaW5nKDAsMTIyODgpKSk7cmV0dXJuIGN9O3dpbmRvdy5vbmVycm9yPWZ1bmN0aW9uKGEsYixjLG4sZSl7dSE9PWEmJihhPWUgaW5zdGFuY2VvZiBFcnJvcj9lOkVycm9yKGEpLGM9PT12b2lkIDB8fCJsaW5lTnVtYmVyImluIGF8fChhLmxpbmVOdW1iZXI9YyksYj09PXZvaWQgMHx8ImZpbGVOYW1lImluIGF8fChhLmZpbGVOYW1lPWIpLGdvb2dsZS5tbChhLCExLHZvaWQgMCwhMSxhLm5hbWU9PT0iU3ludGF4RXJyb3IifHxhLm1lc3NhZ2Uuc3Vic3RyaW5nKDAsMTEpPT09IlN5bnRheEVycm9yInx8YS5tZXNzYWdlLmluZGV4T2YoIlNjcmlwdCBlcnJvciIpIT09LTE/MzpwKSk7dT1udWxsO3ImJnQ+PWwmJih3aW5kb3cub25lcnJvcj1udWxsKX07fSkoKTs8L3NjcmlwdD4gICAgIDxzdHlsZT5oMSxvbCx1bCxsaSxidXR0b257bWFyZ2luOjA7cGFkZGluZzowfWJ1dHRvbntib3JkZXI6bm9uZTtiYWNrZ3JvdW5kOm5vbmV9Ym9keXtiYWNrZ3JvdW5kOnZhcigtLXhoVUd3Yyl9Ym9keSxpbnB1dCxidXR0b257Zm9udC1zaXplOnZhcigtLU1oczdkZSk7Zm9udC1mYW1pbHk6QXJpYWwsc2Fucy1zZXJpZjtjb2xvcjp2YXIoLS1ZTE5OSGMpfWF7Y29sb3I6dmFyKC0tSktxeDIpO3RleHQtZGVjb3JhdGlvbjpub25lfWE6aG92ZXIsYTphY3RpdmV7dGV4dC1kZWNvcmF0aW9uOnVuZGVybGluZX1hOnZpc2l0ZWR7Y29sb3I6IzY4MWRhOH1odG1sLGJvZHl7bWluLXdpZHRoOjQwMHB4fWJvZHksaHRtbHtoZWlnaHQ6MTAwJTttYXJnaW46MDtwYWRkaW5nOjB9LmdiX3l7ZGlzcGxheTotbW96LWJveDtkaXNwbGF5OmZsZXg7LW1vei1ib3gtcGFjazplbmQ7anVzdGlmeS1jb250ZW50OmZsZXgtZW5kO3dpZHRoOjEwMCV9LmdiX3p7LW1vei1ib3gtc2l6aW5nOmJvcmRlci1ib3g7Ym94LXNpemluZzpib3JkZXItYm94O2hlaWdodDo0OHB4O3BhZGRpbmc6NHB4fS5nYl9BLC5nYl9CLC5nYl9Dey13ZWJraXQtdGFwLWhpZ2hsaWdodC1jb2xvcjpyZ2JhKDAsMCwwLDApOy13ZWJraXQtdGFwLWhpZ2hsaWdodC1jb2xvcjp0cmFuc3BhcmVudDstbW96LWJveC1zaXppbmc6Ym9yZGVyLWJveDtib3gtc2l6aW5nOmJvcmRlci1ib3g7ZmxvYXQ6cmlnaHQ7b3V0bGluZTpub25lfS5nYl9Eey1tb3otYm94LXNpemluZzpib3JkZXItYm94O2JveC1zaXppbmc6Ym9yZGVyLWJveDtkaXNwbGF5OmlubGluZS1ibG9jaztoZWlnaHQ6NDhweDtvdXRsaW5lOm5vbmU7cGFkZGluZzo0cHg7cG9zaXRpb246cmVsYXRpdmV9LmdiX0V7ZGlzcGxheTpub25lfS5nYl9Ge2Rpc3BsYXk6YmxvY2t9LmdiX0gsLmdiX0ksLmdiX0p7ZmlsbDpjdXJyZW50Q29sb3I7Y29sb3I6IzQ0NDc0Njtjb2xvcjp2YXIoLS1vZy1zdmctY29sb3IsdmFyKC0tZ20zLXN5cy1jb2xvci1vbi1zdXJmYWNlLXZhcmlhbnQsIzQ0NDc0NikpfS5nYl9LIC5nYl9ILC5nYl9LIC5nYl9JLC5nYl9LIC5nYl9Ke2NvbG9yOiNjNGM3YzU7Y29sb3I6dmFyKC0tb2ctc3ZnLWNvbG9yLHZhcigtLWdtMy1zeXMtY29sb3Itb24tc3VyZmFjZS12YXJpYW50LCNjNGM3YzUpKX0uZ2JfTCAuZ2JfQywuZ2JfTSAuZ2JfQywuZ2JfTiAuZ2JfQ3tjdXJzb3I6cG9pbnRlcjtwYWRkaW5nOjhweH0uZ2JfTywuZ2JfUHtkaXNwbGF5Om5vbmV9LmdiX3kgYS5nYl9Be2JvcmRlci1yYWRpdXM6MTAwcHg7YmFja2dyb3VuZDojMGI1N2QwO2JhY2tncm91bmQ6dmFyKC0tZ20zLXN5cy1jb2xvci1wcmltYXJ5LCMwYjU3ZDApOy1tb3otYm94LXNpemluZzpib3JkZXItYm94O2JveC1zaXppbmc6Ym9yZGVyLWJveDtjb2xvcjojZmZmO2NvbG9yOnZhcigtLWdtMy1zeXMtY29sb3Itb24tcHJpbWFyeSwjZmZmKTtkaXNwbGF5OmlubGluZS1ibG9jaztmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDA7bWluLWhlaWdodDo0MHB4O291dGxpbmU6bm9uZTtwYWRkaW5nOjEwcHggMjRweDt0ZXh0LWFsaWduOmNlbnRlcjt0ZXh0LWRlY29yYXRpb246bm9uZTt3aGl0ZS1zcGFjZTpub3JtYWw7bGluZS1oZWlnaHQ6MThweDtwb3NpdGlvbjpyZWxhdGl2ZTtmb250LWZhbWlseTpHb29nbGUgU2FucyBUZXh0LFJvYm90byxIZWx2ZXRpY2EsQXJpYWwsc2Fucy1zZXJpZjttaW4td2lkdGg6ODVweDtwYWRkaW5nOjEwcHggMTJweH0uZ2JfeS5nYl9LIGEuZ2JfQXtiYWNrZ3JvdW5kOiNjMmU3ZmY7YmFja2dyb3VuZDp2YXIoLS1nbTMtc3lzLWNvbG9yLXNlY29uZGFyeS1maXhlZCwjYzJlN2ZmKTtjb2xvcjojMDAxZDM1O2NvbG9yOnZhcigtLWdtMy1zeXMtY29sb3Itb24tc2Vjb25kYXJ5LWZpeGVkLCMwMDFkMzUpfS5nYl8yey13ZWJraXQtYm94LW9yaWVudDp2ZXJ0aWNhbDstd2Via2l0LWxpbmUtY2xhbXA6MjttYXgtaGVpZ2h0OjQwcHg7bWF4LXdpZHRoOjEwMCU7b3ZlcmZsb3c6aGlkZGVuO292ZXJmbG93LXdyYXA6YnJlYWstd29yZDt3b3JkLWJyZWFrOmJyZWFrLXdvcmR9LmdiX1R7ZmlsbDojMWE3M2U4O21hcmdpbjo0cHh9LmdiX0sgLmdiX1R7ZmlsbDojOGFiNGY4fUBtZWRpYSAobWF4LXdpZHRoOjY0MHB4KXsuZ2JfeSBhLmdiX0F7bWluLXdpZHRoOjc1cHh9fS5nYl9WLC5nYl9Xe3Bvc2l0aW9uOmFic29sdXRlfS5nYl9Xe3JpZ2h0OjA7dG9wOjB9LmdiX1Z7cmlnaHQ6LTFweDt0b3A6LTFweDt3aWR0aDo0MnB4fS5nYl9De2JhY2tncm91bmQtY29sb3I6dHJhbnNwYXJlbnQ7YmFja2dyb3VuZC1wb3NpdGlvbjo1MCU7YmFja2dyb3VuZC1yZXBlYXQ6bm8tcmVwZWF0O2JvcmRlcjowO2Rpc3BsYXk6aW5saW5lLWJsb2NrO2hlaWdodDo0MHB4O3BhZGRpbmc6NHB4O3Bvc2l0aW9uOnJlbGF0aXZlO3dpZHRoOjQwcHh9LmdiX1h7Ym9yZGVyLXJhZGl1czo1MCV9LmdiX0MgLmdiXzAuZ2JfMSwuZ2JfWntkaXNwbGF5Om5vbmV9LmdiXzB7ZGlzcGxheTpub25lfS5nYl9RLC5nYl9Se2Rpc3BsYXk6bm9uZX1zZW50aW5lbHt9OnJvb3R7LS1DT0VtWTojMWYxZjFmOy0teGhVR3djOiNmZmZ9OnJvb3R7LS12WmUwamI6I2EzYzlmZjstLW53WG9iYjp2YXIoLS12WmUwamIpOy0tVnVaWEJkOiMwMDFkMzU7LS11THozN2M6IzU0NWQ3ZTstLWpJTnU2YzojMDAxZDM1Oy0tVHlWWWxkOiMwYjU3ZDA7LS1aRXBQbWQ6I2EzYzlmZjstLVFXYWFhZjp2YXIoLS1aRXBQbWQpOy0tREVlU3RmOiNmNWY4ZmY7LS1UU1daSWI6I2U1ZWRmZjstLUJSTHdFOiNkM2UzZmQ7LS1nUzVqWGI6I2QyZDJkMjstLUFxbjd4ZDp2YXIoLS1nUzVqWGIpOy0tRXBGTlc6I2ZmZjstLVhxYm9jZTojMWYxZjFmOy0tSVhveFVlOiM2MzYzNjM7LS1iYlF4QWI6IzQ3NDc0NzstLVlMTk5IYzojMWYxZjFmOy0tVE1ZUzk6IzBiNTdkMDstLUpLcXgyOiMxYTBkYWI7LS1yckpKVWM6IzBiNTdkMDstLW1YWmtxYzojZDJkMmQyOy0tSmNsRmo6I2QyZDJkMjstLU5zbTBjZTojMGI1N2QwOy0tdmR3eHBlOiNhOGM3ZmE7LS15d3owMWM6I2ZiYmMwNDstLVhLTUR4YzojZjNmNWY2Oy0tYVluMlM6I2YzZjVmNjstLUxtNTcwYjojZGVlMWUzfTpyb290ey0tYW1uUHdlOnZhcigtLUlYb3hVZSk7LS1aWGlhR2Y6I2ZmZjstLUVvS09iZTojZmZmOy0tY0llaGxkOiNmZmY7LS1PTmhyR2Q6I2QyZDJkMjstLWdWVUtjZDpyZ2JhKDAsMCwwLDAuNik7LS1qd0ZDMmU6dmFyKC0tQlJMd0UpOy0teVR0c0VmOiMwNzI3MTF9Lld3NEZGYiAubW5yLWM6bm90KDplbXB0eSksLm1uci1jOm5vdCg6ZW1wdHkpIC5XdzRGRmJ7Ym94LXNoYWRvdzpub25lO21hcmdpbi1ib3R0b206MHB4fS52dDZhemR7bWFyZ2luOjBweCAwcHggMzBweH0uWHg3TWlme2NvbnRhaW46c3R5bGU7cG9zaXRpb246cmVsYXRpdmV9LkU1ZUZie3dpZHRoOjEwMCU7Y29udGFpbjpzaXplIHN0eWxlfS5Mb3lnR2Z7d2lkdGg6MTAwJTtkaXNwbGF5OmJsb2NrfS5DVE9heGJ7cG9zaXRpb246Zml4ZWQ7dG9wOjA7bGVmdDowO2NvbnRhaW46c2l6ZSBsYXlvdXQgc3R5bGV9Lk9NcW1mZHtwb3NpdGlvbjpzdGlja3k7dG9wOjB9LnpMU1JnZXtib3JkZXItYm90dG9tOjFweCBzb2xpZCB2YXIoLS1nUzVqWGIpfS5BWDFRZntwb3NpdGlvbjphYnNvbHV0ZTtsZWZ0OjUwdnc7d2lkdGg6MXB4O2hlaWdodDoycHg7dmlzaWJpbGl0eTpoaWRkZW47cG9pbnRlci1ldmVudHM6bm9uZX0ub0R6YWtje2Rpc3BsYXk6aW5saW5lLWJsb2NrO2Zsb2F0OmxlZnR9LndYcGZWYntwb3NpdGlvbjpyZWxhdGl2ZTt0b3A6LTFweDt3aWR0aDoxMDAlO2hlaWdodDowfS5UQkM5dWJ7bWFyZ2luLWxlZnQ6MHB4O21hcmdpbi1yaWdodDowcHh9Lk9aNWJSZHttYXJnaW4tYm90dG9tOmF1dG87bWFyZ2luLXRvcDphdXRvfS53Z2JSTmJ7Y3Vyc29yOnBvaW50ZXI7aGVpZ2h0OjcycHg7cG9zaXRpb246YWJzb2x1dGU7ZGlzcGxheTpibG9jazt2aXNpYmlsaXR5OmluaGVyaXQ7d2lkdGg6MzZweDtib3R0b206MDtvcGFjaXR5Oi44O3RvcDowO3otaW5kZXg6MTAxfS53Z2JSTmIudEhUMGx7dHJhbnNpdGlvbjpvcGFjaXR5IC41cyx2aXNpYmlsaXR5IC41c30ud2diUk5iOmhvdmVye29wYWNpdHk6Ljl9LndnYlJOYi5wUVhjSGMsLndnYlJOYi5wUVhjSGM6aG92ZXJ7Y3Vyc29yOmRlZmF1bHQ7b3BhY2l0eTowO3Zpc2liaWxpdHk6aGlkZGVufS5iNUs5emR7Ym90dG9tOjA7ZGlzcGxheTpibG9jaztwb3NpdGlvbjphYnNvbHV0ZSFpbXBvcnRhbnQ7dG9wOjB9LndnYlJOYi5FTkpIUGQ6aG92ZXIgZy1mYWJ7Y29sb3I6IzIwMjEyNCFpbXBvcnRhbnR9LlZkZWhCZi5FTkpIUGQgZy1mYWIsLmJDd2xJLkVOSkhQZCBnLWZhYntib3gtc2hhZG93OjAgN3B4IDE1cHggcmdiYSgwLDAsMCwwLjIpfS53Z2JSTmIuRU5KSFBke2hlaWdodDo1MHB4O3dpZHRoOjUwcHg7b3BhY2l0eToxfS53Z2JSTmIuRU5KSFBkLnBRWGNIYywud2diUk5iLkVOSkhQZC5wUVhjSGM6aG92ZXJ7b3BhY2l0eTowfS5WZGVoQmYuRU5KSFBkIGctZmFiLC5iQ3dsSS5FTkpIUGQgZy1mYWJ7Y3Vyc29yOnBvaW50ZXI7aGVpZ2h0OjUwcHg7d2lkdGg6NTBweH0uYkN3bEkuRU5KSFBke2xlZnQ6LTI1cHh9LlZkZWhCZi5FTkpIUGR7cmlnaHQ6LTI1cHh9LndnYlJOYi5IRWVBcWU6aG92ZXIgZy1mYWJ7Y29sb3I6IzcwNzU3YSFpbXBvcnRhbnR9LndnYlJOYi5IRWVBcWV7aGVpZ2h0OjQ4cHg7d2lkdGg6NDhweDtvcGFjaXR5Oi45fS53Z2JSTmIuSEVlQXFlOmhvdmVye29wYWNpdHk6MX0ud2diUk5iLkhFZUFxZS5wUVhjSGMsLndnYlJOYi5IRWVBcWUucFFYY0hjOmhvdmVye29wYWNpdHk6MH0uVmRlaEJmLkhFZUFxZSBnLWZhYiwuYkN3bEkuSEVlQXFlIGctZmFie2JveC1zaGFkb3c6MCA3cHggMTVweCByZ2JhKDAsMCwwLC4yKTtjdXJzb3I6cG9pbnRlcjtoZWlnaHQ6NDhweDt3aWR0aDo0OHB4fS5iQ3dsSS5IRWVBcWV7bGVmdDoyMHB4fS5WZGVoQmYuSEVlQXFle3JpZ2h0OjIwcHh9LndnYlJOYi5UVmdGVmI6aG92ZXIgZy1mYWJ7Y29sb3I6IzcwNzU3YSFpbXBvcnRhbnR9LndnYlJOYi5UVmdGVmJ7aGVpZ2h0OjQwcHg7d2lkdGg6NDBweH0uVmRlaEJmLlRWZ0ZWYiBnLWZhYiwuYkN3bEkuVFZnRlZiIGctZmFie2JveC1zaGFkb3c6MCA0cHggNHB4IHJnYmEoMCwwLDAsLjMpLDAgMCA0cHggcmdiYSgwLDAsMCwuMik7Y3Vyc29yOnBvaW50ZXJ9LmJDd2xJLlRWZ0ZWYntsZWZ0Oi01OHB4fS5WZGVoQmYuVFZnRlZie3JpZ2h0Oi01OHB4fS5WZGVoQmYuWXplMjZkIC5QRlk0bywuYkN3bEkuWXplMjZkIC52V3RtS2Z7YmFja2dyb3VuZC1pbWFnZTp1cmwoZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFBd0FBQUF1Q0FZQUFBQWNFZmphQUFBQlYwbEVRVlJJeCsyVnNXN0NRQkJFRHdUcElrWElDTXV5SmR0ZlFzR1hRVVZGbFNwVm1qVEVTT240QkFvWExpZ3N1ZUF2YU0yTUJBaHQ3ZzZ2MDZaWXdOSzg4OTNlekdMYXRqVjVuaTlRTzJQTUM1OTlaZEkwbldkWmRnYlE0dnNIME5nTFFMU24rRlo0L2dZMGNnSkJFTHhDZEhpRVVGK0FobGFBSDlqV0cwU2xlTk9uRGJyL2lPTjRBbEVsb0E5QUF5dkFpcUlvZ1BBb29IY253SUpnaHFyRm1UWk9nSlVrU1FSUkk2QzFFN2h1TDhHYlRtSjdLeTJ3L1B1V1ZJY093M0RhdWEycWkxTlpRMjAraTcyM1hudXJBL1FRMGFKVFJKOEovb0V1QUZ2TnFjaldQd1Y0aWJ6TTY2V2VlY2srOFloVFVOaG03eElQYVVBaFB0Q29Wakd0TGR4Yk1nSy96c0N3TURSaTVZcmhzbmFKY1JRckh6a05yVzFsME1YS05RZUN5OTVyc1hMRFVlTkszRXFzZk9JUTgvMERMVldBZWt1OUR1MXJLNmVoRTFCZm5Ob2F2Y3duN0wzdFpPOWVBUklSTFc0UnZRQTArNkROd1RIVzZRQUFBQUJKUlU1RXJrSmdnZz09KX0uVmRlaEJmLll6ZTI2ZCAuUEZZNG8sLmJDd2xJLll6ZTI2ZCAudld0bUtme2JhY2tncm91bmQtcmVwZWF0Om5vLXJlcGVhdDtoZWlnaHQ6MjBweDtvcGFjaXR5Oi41Njt3aWR0aDoxMnB4fS5WZGVoQmYuWXplMjZkLC5iQ3dsSS5ZemUyNmR7b3BhY2l0eTouOTt3aWR0aDo4MHB4fS5WZGVoQmYuWXplMjZkOmFmdGVyLC5iQ3dsSS5ZemUyNmQ6YWZ0ZXJ7Y29udGVudDoiIjttaW4taGVpZ2h0OjQ4cHg7aGVpZ2h0OjEwMCU7bGVmdDo1MCU7dHJhbnNmb3JtOnRyYW5zbGF0ZSgtNTAlLC01MCUpO3Bvc2l0aW9uOmFic29sdXRlO3RvcDo1MCU7bWluLXdpZHRoOjQ4cHg7d2lkdGg6MTAwJX0uYkN3bEkuWXplMjZkIC52V3RtS2Z7YmFja2dyb3VuZC1wb3NpdGlvbjowIC0yNnB4O2xlZnQ6MnB4fS5WZGVoQmYuWXplMjZkIC5QRlk0b3tiYWNrZ3JvdW5kLXBvc2l0aW9uOjAgMDtyaWdodDoycHh9LmJDd2xJLll6ZTI2ZHtiYWNrZ3JvdW5kOmxpbmVhci1ncmFkaWVudCg5MGRlZyx2YXIoLS1jSWVobGQpIDUwJSx0cmFuc3BhcmVudCAxMDAlKTtsZWZ0OjB9LlZkZWhCZi5ZemUyNmR7YmFja2dyb3VuZDpsaW5lYXItZ3JhZGllbnQoMjcwZGVnLHZhcigtLWNJZWhsZCkgNTAlLHRyYW5zcGFyZW50IDEwMCUpO3JpZ2h0OjB9QG1lZGlhIChmb3JjZWQtY29sb3JzOmFjdGl2ZSl7LlZkZWhCZi5ZemUyNmQsLmJDd2xJLll6ZTI2ZHtiYWNrZ3JvdW5kOiNmZmY7b3BhY2l0eToxO3dpZHRoOjQ4cHh9LlZkZWhCZi5ZemUyNmQgLlBGWTRvLC5iQ3dsSS5ZemUyNmQgLnZXdG1LZntvcGFjaXR5OjF9fUBtZWRpYSAoZm9yY2VkLWNvbG9yczphY3RpdmUpIGFuZCAocHJlZmVycy1jb2xvci1zY2hlbWU6ZGFyayl7LlZkZWhCZi5ZemUyNmQgLlBGWTRvLC5iQ3dsSS5ZemUyNmQgLnZXdG1LZntmaWx0ZXI6aW52ZXJ0KDEpIGNvbnRyYXN0KDIwMCUpfX1AbWVkaWEgKGZvcmNlZC1jb2xvcnM6YWN0aXZlKSBhbmQgKHByZWZlcnMtY29sb3Itc2NoZW1lOmxpZ2h0KXsuVmRlaEJmLll6ZTI2ZCAuUEZZNG8sLmJDd2xJLll6ZTI2ZCAudld0bUtme2ZpbHRlcjpjb250cmFzdCgyMDAlKX19LndnYlJOYi5UOVdoNTpob3ZlciBnLWZhYntjb2xvcjojNzA3NTdhIWltcG9ydGFudDtib3gtc2hhZG93OjAgMCAwIDFweCByZ2JhKDAsMCwwLC4wNCksMCA0cHggOHB4IDAgcmdiYSgwLDAsMCwuMil9LndnYlJOYi5UOVdoNXtoZWlnaHQ6MzZweDt3aWR0aDozNnB4O29wYWNpdHk6MX0ud2diUk5iLlQ5V2g1LnBRWGNIYywud2diUk5iLlQ5V2g1LnBRWGNIYzpob3ZlcntvcGFjaXR5OjB9LlZkZWhCZi5UOVdoNSBnLWZhYiwuYkN3bEkuVDlXaDUgZy1mYWJ7Y3Vyc29yOnBvaW50ZXI7aGVpZ2h0OjM2cHg7d2lkdGg6MzZweH0uYkN3bEkuVDlXaDV7bGVmdDotMThweH0uVmRlaEJmLlQ5V2g1e3JpZ2h0Oi0xOHB4fS5WZGVoQmYuU0wwR3AgLlBGWTRvLC5iQ3dsSS5TTDBHcCAudld0bUtme2JhY2tncm91bmQtcmVwZWF0Om5vLXJlcGVhdDtvcGFjaXR5Oi41NDt3aWR0aDoyNHB4fS5iQ3dsSS5TTDBHcCAudld0bUtme2JhY2tncm91bmQtaW1hZ2U6dXJsKGRhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBQmdBQUFBWUNBUUFBQUJLZnZWekFBQUFRMGxFUVZSNEFXTkFCYU5BQVFoSlV2NEFDR1ZKVWY2ZjRUQUREdzJWSHlGTitWRUdYbUpkZndDby9BZUROSWhKcVEyRS9VQkxMWWlBcFZGTUk5SVNXV0FVQUFBeTF4M0czajF3eFFBQUFBQkpSVTVFcmtKZ2dnPT0pfS5WZGVoQmYuU0wwR3AgLlBGWTRve2JhY2tncm91bmQtaW1hZ2U6dXJsKGRhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBQmdBQUFBWUNBUUFBQUJLZnZWekFBQUFVRWxFUVZSNEFXT0FnRkhBQVlRa0tkOEJoQ1JvVVdaNHdmQ2ZOQzFhREMvcG9FV2I0UldwV25RWWZnSzFiQ0JXT1NQREZLRHlId3dleENxZlRGUGxreURLaVEvU0gyRGxKQUFQSUtRSWpBSUFEQU1kNWNlMWowSUFBQUFBU1VWT1JLNUNZSUk9KX0uVmRlaEJmLlNMMEdwLC5iQ3dsSS5TTDBHcHt3aWR0aDoyNHB4fS53Z2JSTmIuU0wwR3AucFFYY0hjLC53Z2JSTmIuU0wwR3AucFFYY0hjOmhvdmVye2N1cnNvcjpkZWZhdWx0O29wYWNpdHk6MTt2aXNpYmlsaXR5OmluaGVyaXR9LndnYlJOYi5TTDBHcC5wUVhjSGMgLlBGWTRvLC53Z2JSTmIuU0wwR3AucFFYY0hjIC52V3RtS2Z7b3BhY2l0eTouMn0ud2diUk5iLlNMMEdwe2hlaWdodDoyNHB4O21hcmdpbjowfS53Z2JSTmIuU0wwR3A6aG92ZXJ7b3BhY2l0eToxfS53Z2JSTmIuemZwVWtlOmhvdmVyIGctZmFie2NvbG9yOiM3MDc1N2EhaW1wb3J0YW50fS53Z2JSTmIuemZwVWtle2hlaWdodDozNnB4O3dpZHRoOjM2cHg7b3BhY2l0eTowfS56MU1tMGU6aG92ZXIgLndnYlJOYi56ZnBVa2V7b3BhY2l0eTouOX0uejFNbTBlIC53Z2JSTmIuemZwVWtlOmZvY3VzLXZpc2libGUsLnoxTW0wZSAud2diUk5iLnpmcFVrZTpob3ZlcntvcGFjaXR5OjF9LndnYlJOYi56ZnBVa2UucFFYY0hjLC53Z2JSTmIuemZwVWtlLnBRWGNIYzpob3ZlcntvcGFjaXR5OjB9LlZkZWhCZi56ZnBVa2UgZy1mYWIsLmJDd2xJLnpmcFVrZSBnLWZhYntib3gtc2hhZG93OjAgMCAwIDFweCByZ2JhKDAsMCwwLC4wNCksMCA0cHggOHB4IDAgcmdiYSgwLDAsMCwuMik7Y3Vyc29yOnBvaW50ZXI7aGVpZ2h0OjM2cHg7d2lkdGg6MzZweH0uYkN3bEkuemZwVWtle2xlZnQ6MTZweH0uVmRlaEJmLnpmcFVrZXtyaWdodDoxNnB4fS5WZGVoQmYuRU5wWHliIC5QRlk0bywuYkN3bEkuRU5wWHliIC52V3RtS2Z7YmFja2dyb3VuZC1pbWFnZTp1cmwoZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFBd0FBQUF1Q0FZQUFBQWNFZmphQUFBQlYwbEVRVlJJeCsyVnNXN0NRQkJFRHdUcElrWElDTXV5SmR0ZlFzR1hRVVZGbFNwVm1qVEVTT240QkFvWExpZ3N1ZUF2YU0yTUJBaHQ3ZzZ2MDZaWXdOSzg4OTNlekdMYXRqVjVuaTlRTzJQTUM1OTlaZEkwbldkWmRnYlE0dnNIME5nTFFMU24rRlo0L2dZMGNnSkJFTHhDZEhpRVVGK0FobGFBSDlqV0cwU2xlTk9uRGJyL2lPTjRBbEVsb0E5QUF5dkFpcUlvZ1BBb29IY253SUpnaHFyRm1UWk9nSlVrU1FSUkk2QzFFN2h1TDhHYlRtSjdLeTJ3L1B1V1ZJY093M0RhdWEycWkxTlpRMjAraTcyM1hudXJBL1FRMGFKVFJKOEovb0V1QUZ2TnFjaldQd1Y0aWJ6TTY2V2VlY2srOFloVFVOaG03eElQYVVBaFB0Q29Wakd0TGR4Yk1nSy96c0N3TURSaTVZcmhzbmFKY1JRckh6a05yVzFsME1YS05RZUN5OTVyc1hMRFVlTkszRXFzZk9JUTgvMERMVldBZWt1OUR1MXJLNmVoRTFCZm5Ob2F2Y3duN0wzdFpPOWVBUklSTFc0UnZRQTArNkROd1RIVzZRQUFBQUJKUlU1RXJrSmdnZz09KX0uVmRlaEJmLkVOcFh5YiAuUEZZNG8sLmJDd2xJLkVOcFh5YiAudld0bUtme2JhY2tncm91bmQtcmVwZWF0Om5vLXJlcGVhdDtoZWlnaHQ6MjBweDt3aWR0aDoxMnB4fS5iQ3dsSS5FTnBYeWIgLnZXdG1LZntiYWNrZ3JvdW5kLXBvc2l0aW9uOjAgLTI2cHg7bGVmdDo4cHh9LlZkZWhCZi5FTnBYeWIgLlBGWTRve2JhY2tncm91bmQtcG9zaXRpb246MCAwO3JpZ2h0OjhweH0uYkN3bEkuRU5wWHlie2xlZnQ6MH0uVmRlaEJmLkVOcFh5YntyaWdodDowfS5iQ3dsSS5FTnBYeWJ7Ym9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6MzZweDtib3JkZXItdG9wLXJpZ2h0LXJhZGl1czozNnB4O2JveC1zaGFkb3c6MXB4IDAgMnB4IHJnYmEoMCwwLDAsLjUpfS5WZGVoQmYuRU5wWHlie2JvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6MzZweDtib3JkZXItdG9wLWxlZnQtcmFkaXVzOjM2cHg7Ym94LXNoYWRvdzotMXB4IDAgMnB4IHJnYmEoMCwwLDAsLjUpfS5iQ3dsSS5Bb1Q2c2MgLnZXdG1LZntsZWZ0OjJweH0uVmRlaEJmLkFvVDZzYyAuUEZZNG97cmlnaHQ6MnB4fS5iQ3dsSS5Bb1Q2c2N7bGVmdDotMzJweDtib3JkZXI6MXB4IHNvbGlkICNmOGY5ZmE7Ym9yZGVyLXJhZGl1czoycHggMCAwIDJweH0uVmRlaEJmLkFvVDZzY3tyaWdodDotMzJweDtib3JkZXI6MXB4IHNvbGlkICNmOGY5ZmE7Ym9yZGVyLXJhZGl1czowIDJweCAycHggMH0ud2diUk5iLkFvVDZzY3tiYWNrZ3JvdW5kLWltYWdlOmxpbmVhci1ncmFkaWVudCh0b3AsI2Y4ZjlmYSwjZjhmOWZhKTtoZWlnaHQ6NTBweDt3aWR0aDozMHB4fS53Z2JSTmIuQW9UNnNjOmhvdmVye2JhY2tncm91bmQtaW1hZ2U6bGluZWFyLWdyYWRpZW50KHRvcCwjZjhmOWZhLCNmOGY5ZmEpfS53Z2JSTmIuYnRwTkZlOmhvdmVyIGctZmFie2NvbG9yOiM3MDc1N2EhaW1wb3J0YW50fS53Z2JSTmIuYnRwTkZle2hlaWdodDozNnB4O3dpZHRoOjM2cHg7b3BhY2l0eTouOX0ud2diUk5iLmJ0cE5GZTpob3ZlcntvcGFjaXR5OjF9LndnYlJOYi5idHBORmUucFFYY0hjLC53Z2JSTmIuYnRwTkZlLnBRWGNIYzpob3ZlcntvcGFjaXR5OjB9LlZkZWhCZi5idHBORmUgZy1mYWIsLmJDd2xJLmJ0cE5GZSBnLWZhYntib3gtc2hhZG93OjAgMCAwIDFweCByZ2JhKDAsMCwwLC4wNCksMCA0cHggOHB4IDAgcmdiYSgwLDAsMCwuMik7Y3Vyc29yOnBvaW50ZXI7aGVpZ2h0OjM2cHg7d2lkdGg6MzZweH0uYkN3bEkuYnRwTkZle2xlZnQ6LTE4cHh9LlZkZWhCZi5idHBORmV7cmlnaHQ6LTE4cHh9LndnYlJOYi5qU1pNcmU6aG92ZXIgZy1mYWJ7Y29sb3I6IzcwNzU3YSFpbXBvcnRhbnR9LndnYlJOYi5qU1pNcmV7aGVpZ2h0OjMycHg7d2lkdGg6MzJweDtvcGFjaXR5Oi45O3BhZGRpbmc6OHB4fS53Z2JSTmIualNaTXJlOmhvdmVye29wYWNpdHk6MX0ud2diUk5iLmpTWk1yZS5wUVhjSGMsLndnYlJOYi5qU1pNcmUucFFYY0hjOmhvdmVye29wYWNpdHk6MH0uVmRlaEJmLmpTWk1yZSBnLWZhYiwuYkN3bEkualNaTXJlIGctZmFie2JveC1zaGFkb3c6MCA3cHggMTVweCByZ2JhKDAsMCwwLC4yKTtjdXJzb3I6cG9pbnRlcjtoZWlnaHQ6MzJweDt3aWR0aDozMnB4fS5iQ3dsSS5qU1pNcmV7bGVmdDoyMHB4fS5WZGVoQmYualNaTXJle3JpZ2h0OjIwcHh9LndnYlJOYi5TREhtS2I6aG92ZXIgZy1mYWJ7Y29sb3I6IzcwNzU3YSFpbXBvcnRhbnR9LndnYlJOYi5TREhtS2J7aGVpZ2h0OjM2cHg7d2lkdGg6MzZweDtvcGFjaXR5Oi45fS53Z2JSTmIuU0RIbUtiOmhvdmVye29wYWNpdHk6MX0ud2diUk5iLlNESG1LYi5wUVhjSGMsLndnYlJOYi5TREhtS2IucFFYY0hjOmhvdmVye29wYWNpdHk6MH0uVmRlaEJmLlNESG1LYiBnLWZhYiwuYkN3bEkuU0RIbUtiIGctZmFie2JveC1zaGFkb3c6MCA3cHggMTVweCByZ2JhKDAsMCwwLC4yKTtjdXJzb3I6cG9pbnRlcjtoZWlnaHQ6MzZweDt3aWR0aDozNnB4fS5iQ3dsSS5TREhtS2J7bGVmdDowfS5WZGVoQmYuU0RIbUtie3JpZ2h0OjB9LndnYlJOYi52a2NMaWJ7aGVpZ2h0OjQwcHg7d2lkdGg6NDBweDtvcGFjaXR5OjB9LnoxTW0wZSAud2diUk5iLnZrY0xpYjpmb2N1cy12aXNpYmxlLC56MU1tMGUgLndnYlJOYi52a2NMaWI6aG92ZXIsLnoxTW0wZTpob3ZlciAud2diUk5iLnZrY0xpYntvcGFjaXR5OjF9LndnYlJOYi52a2NMaWIucFFYY0hjLC53Z2JSTmIudmtjTGliLnBRWGNIYzpob3ZlcntvcGFjaXR5OjB9LlZkZWhCZi52a2NMaWIgZy1mYWIsLmJDd2xJLnZrY0xpYiBnLWZhYntib3gtc2hhZG93OjAgMCAwIDFweCByZ2JhKDAsMCwwLC4wNCksMCA0cHggOHB4IDAgcmdiYSgwLDAsMCwuMik7Y3Vyc29yOnBvaW50ZXI7aGVpZ2h0OjI0cHg7d2lkdGg6MjRweDtwb3NpdGlvbjpyZWxhdGl2ZTt0b3A6OHB4O2xlZnQ6OHB4fS5iQ3dsSS52a2NMaWJ7bGVmdDo0cHh9LlZkZWhCZi52a2NMaWJ7cmlnaHQ6NHB4fS5PdlFrU2J7Ym9yZGVyLXJhZGl1czo5OTk5cHh9LlMzUEIyZHttYXJnaW46YXV0b30uc3I5aGVje2N1cnNvcjpwb2ludGVyfS5zcjloZWN7ZGlzcGxheTpibG9jaztwb3NpdGlvbjpyZWxhdGl2ZX0uc3I5aGVje2JvcmRlcjoxcHggc29saWQgI2RhZGNlMH0uc3I5aGVje3otaW5kZXg6MH0uc3I5aGVjOmZvY3Vze291dGxpbmU6bm9uZX0uc3I5aGVjIC5VOHY1MWV7cG9zaXRpb246YWJzb2x1dGU7bGVmdDowO3JpZ2h0OjA7dG9wOjA7Ym90dG9tOjA7d2lkdGg6MjRweDtoZWlnaHQ6MjRweH0uYTExUHJ7d2lkdGg6NTZweDtoZWlnaHQ6NTZweH0uczNJQjN7d2lkdGg6NDBweDtoZWlnaHQ6NDBweH0uTUtDVjFie3dpZHRoOjI4cHg7aGVpZ2h0OjI4cHh9LnNyOWhlYy5NS0NWMWIgLlU4djUxZXt3aWR0aDoyMnB4O2hlaWdodDoyMnB4fS5PWlFEV2R7d2lkdGg6MThweDtoZWlnaHQ6MThweH0uc3I5aGVjLk9aUURXZCAuVTh2NTFle3dpZHRoOjEycHg7aGVpZ2h0OjEycHh9LmU1S1pKZntkaXNwbGF5Om5vbmU7cG9zaXRpb246YWJzb2x1dGU7d2lkdGg6MTAwJTtoZWlnaHQ6MTAwJTtvcGFjaXR5Oi4xO2xlZnQ6MDt0b3A6MH0uRjRIbnVle2JvcmRlci1yYWRpdXM6MzBweH0uZTVLWkpmOmFjdGl2ZXthbmltYXRpb24tZHVyYXRpb246LjRzO2FuaW1hdGlvbi1uYW1lOnNoaWZ0fUBrZXlmcmFtZXMgc2hpZnR7MjUle2JhY2tncm91bmQ6IzFmMWYxZn19LktMRW1TZHtib3JkZXItYm90dG9tOjFweCBzb2xpZCB2YXIoLS1PTmhyR2QpfS5EcGdtSywuRW5iOXBlLC5GQW9FbGUsLkx3RFVkYywuTVRJYUtiLC5SbFRDUGQsLlJvT1ZtZiwuVjNFem4sLlZub2I0YiwuWUtVaGZiLC5hVnNacGYsLmJieFRCYiwuY2FOdmZkLC5kSWZ2UWQsLmlRTXRxZSwua0pTQjgsLm1ZdW9hZiwudFVyNEtjLC51Tm52Yiwud1BOZmpiey0tWWk0TmI6dmFyKC0tbVhaa3FjKTstLXBFYTBCYzp2YXIoLS1iYlF4QWIpOy0ta2xvRzM6dmFyKC0tbVhaa3FjKTstLVlhSWVNYjp2YXIoLS1YS01EeGMpOy0tUGE4V2xiOnZhcigtLU5zbTBjZSk7LS1pekdzcWI6dmFyKC0tTnNtMGNlKTstLXRvZE1OY2w6dmFyKC0tRXBGTlcpOy0tcDlKOWM6dmFyKC0tTnNtMGNlKX06cm9vdHstLUtJWlBuZTojYTNjOWZmOy0teFBwaU06IzAwMWQzNTstLUVoaDRtZjp2YXIoLS1Oc20wY2UpfTpyb290ey0tcEVhMEJjOiM0NzQ3NDc7LS1QYThXbGI6IzMzNmVmMzstLVlhSWVNYjojZjdmOGY5Oy0tWWk0TmI6I2QyZDJkMjstLW5nUFhUYjp2YXIoLS1yckpKVWMpOy0taHdFcW9kOnZhcigtLWpJTnU2Yyk7LS1rbG9HMzojZDJkMmQyOy0tbHY2eVU6IzBiNTdkMDstLVdtd2FkOiMwYjU3ZDA7LS12V3ExaWY6dmFyKC0taklOdTZjKTstLUlqYzJ0ZjojZWJmMWZmOy0tVmVMeUxjOiMwMDFkMzU7LS1mdXZrc2M6IzBiNTdkMDstLWdKakprOiMwYjU3ZDA7LS1MTUZIVWQ6dmFyKC0taklOdTZjKTstLVppYTZuZjp2YXIoLS1CUkx3RSk7LS15MDFvdTojMDAxZDM1Oy0tcDlKOWM6IzBiNTdkMDstLU1vYUhzZTojMGI1N2QwOy0tQ1JNTlpkOnZhcigtLWpJTnU2Yyk7LS1pekdzcWI6IzMzNmVmMzstLXRvZE1OYzojZmZmZmZmOy0tTm9hUVc6IzA5MGYyODstLXFkSFpGOnJnYmEoMCwwLDAsLjYpOy0tVjl5c3FmOnZhcigtLUVvS09iZSk7LS1QQnhPS2U6IzFmMWYxZjstLU1WMnNHOiNmMWYzZjQ7LS1iY3hkM2I6dmFyKC0tWUxOTkhjKTstLUQ5YU5pOnJnYmEoMzEsMzEsMzEsMC4wOCl9LkdLUzdzOmhvdmVyLC5QczZqQWU6aG92ZXIgLkdLUzdzLC5QczZqQWU6aG92ZXIgLlhBSHdiZXtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWFZbjJTKX0uVWpCR0x7ZGlzcGxheTpibG9jaztjb2xvcjojMWYxZjFmfS5DY05lNmV7Y3Vyc29yOnBvaW50ZXI7ZGlzcGxheTppbmxpbmUtYmxvY2t9LnNobk1vYy5DY05lNmV7ZGlzcGxheTpibG9ja30udjRacGJlLkNjTmU2ZXtkaXNwbGF5Oi1tb3otYm94O2Rpc3BsYXk6ZmxleDtoZWlnaHQ6MTAwJTt3aWR0aDoxMDAlfS5wa1dCc2V7Ym9yZGVyLXJhZGl1czo4cHg7Ym94LXNoYWRvdzowIDJweCAxMHB4IDAgcmdiYSgwLDAsMCwwLjIpfS5pUlFIWmV7cG9zaXRpb246YWJzb2x1dGV9LlFhcXU1e3Bvc2l0aW9uOnJlbGF0aXZlfS5QQm40NGV7Ym9yZGVyLXJhZGl1czo4cHh9LnlLVXlqIC5FcFBZTGQ6Zmlyc3Qtb2YtdHlwZXtib3JkZXItdG9wLWxlZnQtcmFkaXVzOjhweDtib3JkZXItdG9wLXJpZ2h0LXJhZGl1czo4cHh9LnlLVXlqIC5FcFBZTGQ6bGFzdC1vZi10eXBle2JvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6OHB4O2JvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOjhweH0ueVRpazB7Ym9yZGVyOm5vbmU7ZGlzcGxheTpibG9jaztvdXRsaW5lOm5vbmV9LndwbEpCZHt3aGl0ZS1zcGFjZTpub3dyYXB9LmlRWFRKZXtwYWRkaW5nOjVweCAwfS5adDBhNWUuTEdpbHVje2JvcmRlci10b3AtY29sb3I6dmFyKC0tZ1M1alhiKX0uWnQwYTVlLkVwUFlMZFtkaXNhYmxlZF0sLlp0MGE1ZS5MR2lsdWN7Y29sb3I6cmdiYSgwLDAsMCwuMjYpIWltcG9ydGFudH0uQ2ppWnZiLC5HWm5RcWUuRXBQWUxkOmFjdGl2ZXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMCwwLDAsLjEpfS5FcFBZTGR7ZGlzcGxheTpibG9jaztwb3NpdGlvbjpyZWxhdGl2ZX0uWXBjRG5me3BhZGRpbmc6MCAxNnB4O3ZlcnRpY2FsLWFsaWduOm1pZGRsZX0uV3RWNW5kIC5ZcGNEbmZ7cGFkZGluZy1sZWZ0OjI4cHh9LkVwUFlMZDpob3ZlcntjdXJzb3I6cG9pbnRlcn0uQ0I4bkRlOmhvdmVyLC5FcFBZTGR7Y3Vyc29yOmRlZmF1bHR9LkVwUFlMZFtkaXNhYmxlZF0sLkxHaWx1Y3twb2ludGVyLWV2ZW50czpub25lO2N1cnNvcjpkZWZhdWx0fUBtZWRpYSAoZm9yY2VkLWNvbG9yczphY3RpdmUpey5FcFBZTGRbZGlzYWJsZWRde2NvbG9yOkdyYXlUZXh0fX0uTEdpbHVje2JvcmRlci10b3A6MXB4IHNvbGlkO2hlaWdodDowO21hcmdpbjo1cHggMH0uWnQwYTVlIC5ZcGNEbmZ7bGluZS1oZWlnaHQ6NDhweH0uWnQwYTVlLkNCOG5EZXtiYWNrZ3JvdW5kOm5vLXJlcGVhdCBsZWZ0IDhweCBjZW50ZXJ9Llp0MGE1ZS5DQjhuRGV7YmFja2dyb3VuZC1pbWFnZTp1cmwoaHR0cHM6Ly9zc2wuZ3N0YXRpYy5jb20vaW1hZ2VzL2ljb25zL21hdGVyaWFsL3N5c3RlbS8xeC9kb25lX2JsYWNrXzE2ZHAucG5nKX1AbWVkaWEgKGZvcmNlZC1jb2xvcnM6YWN0aXZlKXsuWnQwYTVlLkNCOG5EZXtiYWNrZ3JvdW5kLWltYWdlOnVybChodHRwczovL3NzbC5nc3RhdGljLmNvbS9pbWFnZXMvaWNvbnMvbWF0ZXJpYWwvc3lzdGVtLzF4L2RvbmVfd2hpdGVfMTZkcC5wbmcpfX0uR1puUXFlIC5ZcGNEbmZ7bGluZS1oZWlnaHQ6MjNweH0uR1puUXFlLkNCOG5EZXtiYWNrZ3JvdW5kOm5vLXJlcGVhdCAwfS5HWm5RcWUuQ0I4bkRle2JhY2tncm91bmQtaW1hZ2U6dXJsKGh0dHBzOi8vc3NsLmdzdGF0aWMuY29tL3VpL3YxL21lbnUvY2hlY2ttYXJrMi5wbmcpfUBtZWRpYSAoZm9yY2VkLWNvbG9yczphY3RpdmUpey5HWm5RcWUuQ0I4bkRle2JhY2tncm91bmQtaW1hZ2U6dXJsKGh0dHBzOi8vc3NsLmdzdGF0aWMuY29tL3VpL3YxL21lbnUvY2hlY2ttYXJrMi1saWdodC5wbmcpfX0uR1puUXFlLkVwUFlMZFtkaXNhYmxlZF0sLkdablFxZS5MR2lsdWN7b3BhY2l0eTowLjM4fS5HWm5RcWUuTEdpbHVje2JvcmRlci10b3AtY29sb3I6dmFyKC0tZ1M1alhiKX0uWXBjRG5mLkhHMWR2ZHtwYWRkaW5nOjB9LkhHMWR2ZD4qe3BhZGRpbmc6MCAxNnB4fS5jRG54TywuZUNjVUF7cG9pbnRlci1ldmVudHM6bm9uZTtwb3NpdGlvbjphYnNvbHV0ZTt0b3A6MDtsZWZ0OjA7d2lkdGg6MTAwJTtoZWlnaHQ6MTAwJTtib3JkZXItcmFkaXVzOjUwJX0uckxkV2Zle3Bvc2l0aW9uOmFic29sdXRlO2JvcmRlci1yYWRpdXM6aW5oZXJpdDt0b3A6MDtsZWZ0OjA7d2lkdGg6MTAwJTtoZWlnaHQ6MTAwJX0uTURmb1RkLC5oZHFJRmV7cG9pbnRlci1ldmVudHM6bm9uZTtwb3NpdGlvbjphYnNvbHV0ZTt0b3A6MDtsZWZ0OjA7d2lkdGg6MTAwJTtoZWlnaHQ6MTAwJX0uTURmb1RkLC5jRG54T3tvcGFjaXR5OjB9LmNEbnhPLC5oZHFJRmV7b3ZlcmZsb3c6aGlkZGVufS5iS3ZvZ2IgLk1EZm9UZCwuYkt2b2diIC5oZHFJRmV7Ym9yZGVyLXJhZGl1czo1MCV9LmJLdm9nYiAuZUNjVUF7b3ZlcmZsb3c6aGlkZGVufS5SaUpxYmJ7Zm9udC1mYW1pbHk6R29vZ2xlIFNhbnMsQXJpYWwsc2Fucy1zZXJpZjtmb250LXdlaWdodDo1MDB9LmI3R2pYZXstbW96LWJveC1mbGV4OjA7ZmxleDowIGF1dG87ZGlzcGxheTotbW96LWJveDtkaXNwbGF5OmZsZXg7LW1vei1ib3gtYWxpZ246Y2VudGVyO2FsaWduLWl0ZW1zOmNlbnRlcjt3aWR0aDotbW96LWZpdC1jb250ZW50O3dpZHRoOmZpdC1jb250ZW50O3BhZGRpbmc6MnB4IDhweDtvdmVyZmxvdzpoaWRkZW47Zm9udC1zaXplOjEycHg7bGluZS1oZWlnaHQ6MTZweDtib3JkZXItcmFkaXVzOjk5OTlweDtiYWNrZ3JvdW5kOnZhcigtLWdWVUtjZCk7Y29sb3I6dmFyKC0tRW9LT2JlKTtsZXR0ZXItc3BhY2luZzowLjFweDtwb2ludGVyLWV2ZW50czpub25lfUBtZWRpYSAoZm9yY2VkLWNvbG9yczphY3RpdmUpey5iN0dqWGV7YmFja2dyb3VuZDpDYW52YXM7b3V0bGluZToxcHggc29saWQ7b3V0bGluZS1vZmZzZXQ6LTFweH19LmI3R2pYZSBzcGFue292ZXJmbG93OmhpZGRlbjt3aGl0ZS1zcGFjZTpub3dyYXA7dGV4dC1vdmVyZmxvdzplbGxpcHNpc30uYjdHalhlLnZ0eGdOY3twYWRkaW5nOjRweDtmbGV4LXNocmluazowfS5iN0dqWGUgZGl2ey1tb3otYm94LWZsZXg6MDtmbGV4OjAgMCBhdXRvO2Rpc3BsYXk6LW1vei1ib3g7ZGlzcGxheTpmbGV4Oy1tb3otYm94LXBhY2s6Y2VudGVyO2p1c3RpZnktY29udGVudDpjZW50ZXI7LW1vei1ib3gtYWxpZ246Y2VudGVyO2FsaWduLWl0ZW1zOmNlbnRlcjt3aWR0aDoxMnB4O2hlaWdodDoxMnB4fS5iN0dqWGU6bm90KC52dHhnTmMpIGRpdnstbW96LW1hcmdpbi1lbmQ6NHB4O21hcmdpbi1pbmxpbmUtZW5kOjRweH0uYjdHalhlLkN1RUthZntiYWNrZ3JvdW5kOiNkOTMwMjU7Y29sb3I6I2ZmZn0uVFVPc1Vle3RleHQtYWxpZ246bGVmdH0uS1VmMTguaXZrZGJme2JhY2tncm91bmQtY29sb3I6dmFyKC0tZ1ZVS2NkKTtvcGFjaXR5OjE7dmlzaWJpbGl0eTppbmhlcml0fS5WZnNMcGYuaXZrZGJme2JhY2tncm91bmQtY29sb3I6IzAwMDtvcGFjaXR5Oi40O3Zpc2liaWxpdHk6aW5oZXJpdH0uSjNIbmxmLml2a2RiZntiYWNrZ3JvdW5kLWNvbG9yOiMxZjFmMWY7b3BhY2l0eTouNzt2aXNpYmlsaXR5OmluaGVyaXR9Llg0Nm04Lml2a2RiZntiYWNrZ3JvdW5kLWNvbG9yOiMwMDA7b3BhY2l0eTouODt2aXNpYmlsaXR5OmluaGVyaXR9LmNCb0RlZC5pdmtkYmZ7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1hWW4yUyk7b3BhY2l0eTouODU7dmlzaWJpbGl0eTppbmhlcml0fS5reWs3cWIuaXZrZGJme2JhY2tncm91bmQtY29sb3I6IzFmMWYxZjtvcGFjaXR5Oi42O3Zpc2liaWxpdHk6aW5oZXJpdH0ucWs3TFhjLml2a2RiZntvcGFjaXR5OjF9Lm1jUFBaLml2a2RiZntvcGFjaXR5OjE7dmlzaWJpbGl0eTppbmhlcml0fS5tY1BQWi5uUDBURGV7Y3Vyc29yOnBvaW50ZXJ9Lm1jUFBaLm5QMFREZSAucWs3TFhje2N1cnNvcjpkZWZhdWx0fS5rSkZmMGN7cG9zaXRpb246Zml4ZWQ7ei1pbmRleDo5OTk3O3JpZ2h0OjA7Ym90dG9tOi0yMDBweDt0b3A6MDtsZWZ0OjA7dHJhbnNpdGlvbjpvcGFjaXR5IC4yNXM7b3BhY2l0eTowO3Zpc2liaWxpdHk6aGlkZGVufS5xazdMWGN7Ym9yZGVyLXJhZGl1czo4cHg7ZGlzcGxheTppbmxpbmUtYmxvY2s7ei1pbmRleDo5OTk3O2JhY2tncm91bmQtY29sb3I6dmFyKC0teGhVR3djKTtvcGFjaXR5OjA7d2hpdGUtc3BhY2U6bm9ybWFsO292ZXJmbG93OmhpZGRlbn0ucWs3TFhje2JveC1zaGFkb3c6MHB4IDVweCAyNnB4IDBweCByZ2JhKDAsMCwwLDAuMjIpLDBweCAyMHB4IDI4cHggMHB4IHJnYmEoMCwwLDAsMC4zKX0ucWs3TFhjLlRTVVJHe2JvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6MDtib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czowfS5xazdMWGMuREpFT2Zje2JhY2tncm91bmQtY29sb3I6dHJhbnNwYXJlbnR9LnFrN0xYYy5ESkVPZmN7Ym94LXNoYWRvdzpub25lfS5xazdMWGMuT0lRVXNme2JhY2tncm91bmQ6dmFyKC0tWEtNRHhjKX0ucWs3TFhjLkZiMUFLY3twb3NpdGlvbjpyZWxhdGl2ZTt2ZXJ0aWNhbC1hbGlnbjptaWRkbGV9LnFrN0xYYy5CeTltTWN7cG9zaXRpb246Zml4ZWR9LnFrN0xYYy5XNlo1b2Z7dG9wOjUwJTtsZWZ0OjUwJTt0cmFuc2Zvcm06dHJhbnNsYXRlKC01MCUsLTUwJSl9LnFrN0xYYy51bFd6YmR7cG9zaXRpb246YWJzb2x1dGV9LnFrN0xYYy5QMVdZTGJ7Ym9yZGVyOjFweCBzb2xpZCB2YXIoLS1tWFprcWMpO2JveC1zaGFkb3c6I2RhZGNlMH0ubWNQUFp7cG9zaXRpb246Zml4ZWQ7cmlnaHQ6MDtib3R0b206MDt0b3A6MDtsZWZ0OjA7ei1pbmRleDo5OTk3O3ZlcnRpY2FsLWFsaWduOm1pZGRsZTt2aXNpYmlsaXR5OmhpZGRlbjt3aGl0ZS1zcGFjZTpub3dyYXA7bWF4LWhlaWdodDoxMDAlO21heC13aWR0aDoxMDAlO292ZXJmbG93LXg6aGlkZGVuO292ZXJmbG93LXk6YXV0b30ubWNQUFoueGc3ckFle3RleHQtYWxpZ246Y2VudGVyfS5tY1BQWjphZnRlcntjb250ZW50OiIiO2Rpc3BsYXk6aW5saW5lLWJsb2NrO2hlaWdodDoxMDAlO3ZlcnRpY2FsLWFsaWduOm1pZGRsZX0uTGpmUnNme2hlaWdodDowO29wYWNpdHk6MDtwb3NpdGlvbjphYnNvbHV0ZTt3aWR0aDowfS5WSDQ3ZWR7dmlzaWJpbGl0eTpoaWRkZW59LlRhb3lZY3tvdmVyZmxvdzpoaWRkZW59LlRhb3lZY3twb3NpdGlvbjpmaXhlZDt3aWR0aDoxMDAlfS5TcTNacCAubWNQUFp7cG9pbnRlci1ldmVudHM6bm9uZX0uU3EzWnAgLnFrN0xYY3twb2ludGVyLWV2ZW50czphdXRvfS5TcTNacCAua0pGZjBje2Rpc3BsYXk6bm9uZX0ucWs3TFhjLnlNTkpSLC55TU5KUiAucWs3TFhje21heC13aWR0aDoxMDAlfS5jSkZxc2QgLnFrN0xYYywucWs3TFhjLmNKRnFzZHtoZWlnaHQ6MTAwJX0ucWs3TFhjLnJmeDJZLC5yZngyWSAucWs3TFhje3dpZHRoOjEwMCV9QG1lZGlhIChtaW4taGVpZ2h0OjU3NnB4KXsudVNvbG0gLnFrN0xYY3toZWlnaHQ6MTAwJX0ubWNQUFoudVNvbG17cGFkZGluZzo2NHB4IDBweH0ucWs3TFhjLnVTb2xte2hlaWdodDpjYWxjKDEwMCUgLSAxMjhweCl9fUBtZWRpYSAobWF4LWhlaWdodDo1NzVweCl7LnFrN0xYYy51U29sbSwudVNvbG0gLnFrN0xYY3toZWlnaHQ6MTAwJTttYXgtaGVpZ2h0OjQ0OHB4fX0uQmhVSHplIC5xazdMWGMsLnFrN0xYYy5CaFVIemV7d2lkdGg6NzUlfUBtZWRpYSAobWluLWhlaWdodDo0OTZweCl7LkdlT3puYyAucWs3TFhje2hlaWdodDoxMDAlfS5tY1BQWi5HZU96bmN7cGFkZGluZzoyNHB4IDBweH0ucWs3TFhjLkdlT3puY3toZWlnaHQ6Y2FsYygxMDAlIC0gNDhweCl9fUBtZWRpYSAobWF4LWhlaWdodDo0OTVweCl7LkdlT3puYyAucWs3TFhjLC5xazdMWGMuR2VPem5je2hlaWdodDoxMDAlO21heC1oZWlnaHQ6NDQ4cHh9fS5kZ1ZHbmMgLnFrN0xYYywucWs3TFhjLmRnVkduY3t3aWR0aDo5MCV9LnZBSkp6ZHtwb3NpdGlvbjphYnNvbHV0ZTt6LWluZGV4Ojk5OTc7b3BhY2l0eTouOTk5fS5xazdMWGMuYUpQeDZle292ZXJmbG93OnZpc2libGV9LmJ0a3U1YntkaXNwbGF5OmlubGluZS1ibG9jazt2ZXJ0aWNhbC1hbGlnbjptaWRkbGU7Y3Vyc29yOnBvaW50ZXJ9LmJyS214Yjpmb2N1cy12aXNpYmxlLC5idGt1NWJ7b3V0bGluZTowOy13ZWJraXQtdGFwLWhpZ2hsaWdodC1jb2xvcjp0cmFuc3BhcmVudH0ubmlPNHU6YWZ0ZXIsLm5pTzR1OmJlZm9yZXtwb3NpdGlvbjphYnNvbHV0ZTt0b3A6MDtsZWZ0OjA7d2lkdGg6MTAwJTtoZWlnaHQ6MTAwJTtib3JkZXItcmFkaXVzOmluaGVyaXR9LmJ0a3U1Yjpub3QoW2Rpc2FibGVkXSk6YWN0aXZlIC5uaU80dTphZnRlciwuYnRrdTViOm5vdChbZGlzYWJsZWRdKTpob3ZlciAubmlPNHU6YWZ0ZXJ7Y29udGVudDoiIjt6LWluZGV4Oi0xfS5icktteGI6Zm9jdXMtdmlzaWJsZSAubmlPNHU6YWZ0ZXIsLmJ0a3U1Yjpmb2N1cy12aXNpYmxlIC5uaU80dTphZnRlcntjb250ZW50OiIiO291dGxpbmU6MnB4IHNvbGlkIHZhcigtLVBhOFdsYik7b3V0bGluZS1vZmZzZXQ6M3B4fS5uaU80dXtkaXNwbGF5Oi1tb3otYm94O2Rpc3BsYXk6ZmxleDstbW96LWJveC1wYWNrOmNlbnRlcjtqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyO3Bvc2l0aW9uOnJlbGF0aXZlOy1tb3otYm94LWFsaWduOmNlbnRlcjthbGlnbi1pdGVtczpjZW50ZXI7d2lkdGg6MTAwJTt6LWluZGV4OjA7LW1vei1ib3gtc2l6aW5nOmJvcmRlci1ib3g7Ym94LXNpemluZzpib3JkZXItYm94O3BhZGRpbmc6N3B4IDE1cHg7Ym9yZGVyOjFweCBzb2xpZCB0cmFuc3BhcmVudDtib3JkZXItcmFkaXVzOjk5OTlweH0ubmlPNHU6YmVmb3Jle2NvbnRlbnQ6IiI7aGVpZ2h0OjQ4cHg7bWFyZ2luLXRvcDotMjRweDt0b3A6NTAlfUBtZWRpYSAoZm9yY2VkLWNvbG9yczphY3RpdmUpey5uaU80dXtib3JkZXItY29sb3I6QnV0dG9uQm9yZGVyfX0uYnRrdTViW2Rpc2FibGVkXXtjdXJzb3I6YXV0b30uYnRrdTViW2Rpc2FibGVkXSAubmlPNHV7Y29sb3I6cmdiKGZyb20gdmFyKC0tcEVhMEJjKSByIGcgYiAvIDAuMzgpfS5GUjdaU2NbZGlzYWJsZWRdOm5vdCguZG1LSWplKTpub3QoW3NlbGVjdGVkXSkgLm5pTzR1LC5HUTBiZGVbZGlzYWJsZWRdOm5vdCguZG1LSWplKTpub3QoW3NlbGVjdGVkXSkgLm5pTzR1LC5mcWlJTGIuZnFpSUxiW3NlbGVjdGVkXVtkaXNhYmxlZF0gLm5pTzR1LC56cXJPMFtkaXNhYmxlZF06bm90KC5kbUtJamUpOm5vdChbc2VsZWN0ZWRdKSAubmlPNHV7Ym9yZGVyLWNvbG9yOnZhcigtLWtsb0czKX0uQm1lZ29mW2Rpc2FibGVkXSAubmlPNHUsLmV4cFVQZFtkaXNhYmxlZF0gLm5pTzR1LC5xVmh2YWMucVZodmFjW3NlbGVjdGVkXVtkaXNhYmxlZF0gLm5pTzR1LC5yNjlGWltkaXNhYmxlZF0gLm5pTzR1e2JhY2tncm91bmQ6dmFyKC0tWWFJZU1iKX1AbWVkaWEgKGZvcmNlZC1jb2xvcnM6YWN0aXZlKXsuYnRrdTViLmJ0a3U1YltkaXNhYmxlZF17b3BhY2l0eToxO2NvbG9yOkdyYXlUZXh0fS5idGt1NWIuYnRrdTViLmJ0a3U1Yi5idGt1NWIuYnRrdTViLmJ0a3U1YltkaXNhYmxlZF0gLm5pTzR1e291dGxpbmU6MXB4IHNvbGlkIEdyYXlUZXh0fX0ucVZodmFjW3NlbGVjdGVkXXtjb2xvcjp2YXIoLS14UHBpTSl9LnFWaHZhY1tzZWxlY3RlZF06aG92ZXIgLm5pTzR1OmFmdGVye2JhY2tncm91bmQ6cmdiKGZyb20gdmFyKC0tTnNtMGNlKSByIGcgYiAvIDAuMDgpfS5xVmh2YWNbc2VsZWN0ZWRdIC5uaU80dXtiYWNrZ3JvdW5kOnZhcigtLUtJWlBuZSk7Ym9yZGVyLWNvbG9yOnRyYW5zcGFyZW50fS5xVmh2YWNbc2VsZWN0ZWRdOmFjdGl2ZSAubmlPNHU6YWZ0ZXJ7YmFja2dyb3VuZDpyZ2IoZnJvbSB2YXIoLS1Oc20wY2UpIHIgZyBiIC8gMC4yNCl9Lk5RWUp2YyAubmlPNHV7cGFkZGluZzoxMXB4IDE1cHh9Lk5RWUp2YyAuZDNvM0Fke2xlZnQ6LTZweH0uTlFZSnZjIC5UMnhZOWIuVDJ4WTlie2xlZnQ6NnB4fS5UMnhZOWIsLmQzbzNBZHtmbGV4LXNocmluazowO3Bvc2l0aW9uOnJlbGF0aXZlO2xlZnQ6LTRweH0uVDJ4WTliLlQyeFk5YntsZWZ0OjRweDtoZWlnaHQ6MThweH0uVHdNZ05iLlR3TWdOYntkaXNwbGF5Oi1tb3otYm94O2Rpc3BsYXk6ZmxleDstbW96LWJveC1hbGlnbjpjZW50ZXI7YWxpZ24taXRlbXM6Y2VudGVyfS5WRGdWaWV7dGV4dC1hbGlnbjpjZW50ZXJ9LlNsUDh4Y3t0ZXh0LXRyYW5zZm9ybTpub25lfTpyb290ey0tbmttUU9lOkFyaWFsLHNhbnMtc2VyaWY7LS1hOVgwSmM6MjRweDstLXozQkZJZToxNnB4Oy0tWFdsaXdjOjQwMDstLUxJNEJvOkFyaWFsLHNhbnMtc2VyaWY7LS1YV3YxaWY6MjJweDstLU1oczdkZToxNHB4Oy0tb2Z3VUJjOjQwMDstLVlmaUtmOkFyaWFsLHNhbnMtc2VyaWY7LS1wdW5abGM6MTZweDstLWdPczZCZjoxMnB4Oy0tTXpLQnBkOjQwMDstLUlUN3kzYzpHb29nbGUgU2FucyxBcmlhbCxzYW5zLXNlcmlmOy0taFBETUZmOjM2cHg7LS1JYTcwWGQ6MjhweDstLVZ5aTh5Yzo0MDA7LS1Bb2g5WGU6R29vZ2xlIFNhbnMsQXJpYWwsc2Fucy1zZXJpZjstLXFZR1h3OjI4cHg7LS1xcGRGcDoyMnB4Oy0tSlQ0SVBjOjQwMDstLXJUazBFOkdvb2dsZSBTYW5zLEFyaWFsLHNhbnMtc2VyaWY7LS1PazNpcmY6MjRweDstLXVCZGdUZToxOHB4Oy0tWmY5WG5kOjQwMDstLXFSOFgwOkdvb2dsZSBTYW5zLEFyaWFsLHNhbnMtc2VyaWY7LS1DYmRtRToyMHB4Oy0taGJtbmplOjE0cHg7LS1PeWNqdDo1MDA7LS1xQnd5cWI6QXJpYWwsc2Fucy1zZXJpZjstLW5VT3FFYzoxNnB4Oy0tY01UdmpmOjEycHg7LS1DVVMxNWU6NTAwOy0tRW91OFljOkdvb2dsZSBTYW5zLEFyaWFsLHNhbnMtc2VyaWY7LS1xV1pZRWM6MjZweDstLUdpVG9KZjoyMHB4Oy0tcDJMcXhlOjQwMDstLXp0VHFQZTpHb29nbGUgU2FucyxBcmlhbCxzYW5zLXNlcmlmOy0tQzc0eDJlOjI0cHg7LS1neXU1TDoxNnB4Oy0tWW9hNnFkOjQwMDstLWxJMVRyYzpBcmlhbCxzYW5zLXNlcmlmOy0tSEl5RUtjOjE4cHg7LS1aTmc4ODoxNHB4Oy0tcWpWVTNkOjQwMH0uazFVMzZie2ZvbnQtc2l6ZTp2YXIoLS1jTVR2amYpO2ZvbnQtZmFtaWx5OnZhcigtLXFCd3lxYik7Zm9udC13ZWlnaHQ6dmFyKC0tQ1VTMTVlKTtsaW5lLWhlaWdodDp2YXIoLS1uVU9xRWMpfS5zalZKUWR7Zm9udC1mYW1pbHk6dmFyKC0tcVI4WDApO2ZvbnQtc2l6ZTp2YXIoLS1oYm1uamUpO2ZvbnQtd2VpZ2h0OnZhcigtLU95Y2p0KTtsaW5lLWhlaWdodDp2YXIoLS1DYmRtRSl9LlF1VTNXYnttYXJnaW4tdG9wOjZweH0uQjZPTWVlLkI2T01lZXt3aWR0aDpjYWxjKDE2cHggKyB2YXIoLS1DYmRtRSkpO2hlaWdodDpjYWxjKDE2cHggKyB2YXIoLS1DYmRtRSkpfS5UY0JtbS5UY0JtbXt3aWR0aDpjYWxjKDE2cHggKyB2YXIoLS1uVU9xRWMpKTtoZWlnaHQ6Y2FsYygxNnB4ICsgdmFyKC0tblVPcUVjKSl9LktuQjVyYi5LbkI1cmJ7d2lkdGg6Y2FsYygyNHB4ICsgdmFyKC0tQ2JkbUUpKTtoZWlnaHQ6Y2FsYygyNHB4ICsgdmFyKC0tQ2JkbUUpKX0uT0pldXhmLk9KZXV4ZiAubmlPNHV7bWFyZ2luOjAgYXV0bztwYWRkaW5nOjB9Lk9KZXV4ZiAubmlPNHU6YmVmb3Jle3dpZHRoOjQ4cHg7bWFyZ2luLWxlZnQ6LTI0cHg7bGVmdDo1MCV9QG1lZGlhIChmb3JjZWQtY29sb3JzOmFjdGl2ZSl7LmJ0a3U1Yi5idGt1NWIuYnRrdTViW3NlbGVjdGVkXXtjb2xvcjpTZWxlY3RlZEl0ZW1UZXh0fS5idGt1NWIuYnRrdTViW3NlbGVjdGVkXSAubmlPNHV7YmFja2dyb3VuZDpTZWxlY3RlZEl0ZW07Zm9yY2VkLWNvbG9yLWFkanVzdDpwcmVzZXJ2ZS1wYXJlbnQtY29sb3J9fS5idGt1NWI6bm90KFtzZWxlY3RlZF0pIC5SMDRUT2QsLmJ0a3U1YltzZWxlY3RlZF0gLkJHVmpwZntkaXNwbGF5Om5vbmV9LmJ0a3U1Yjpub3QoW2FyaWEtZXhwYW5kZWQ9dHJ1ZV0pIC5Sd1BTYWIsLmJ0a3U1YlthcmlhLWhhc3BvcHVwPXRydWVdW2FyaWEtZXhwYW5kZWQ9dHJ1ZV0gLnJESTk4YntkaXNwbGF5Om5vbmV9LmJyS214Yjpub3QoOmZvY3VzLXZpc2libGUpIC5mcWlJTGJbc2VsZWN0ZWRdIC5uaU80dSwuZnFpSUxiW3NlbGVjdGVkXTpub3QoOmZvY3VzLXZpc2libGUpIC5uaU80dXtib3JkZXItY29sb3I6dmFyKC0tcnJKSlVjKX0ub2dCeEZ7Y29sb3I6dmFyKC0tSktxeDIpfS5vZ0J4RiAubmlPNHV7YmFja2dyb3VuZDp0cmFuc3BhcmVudDtib3JkZXItY29sb3I6dmFyKC0tbVhaa3FjKX0ub2dCeEY6aG92ZXIgLm5pTzR1OmFmdGVye2JhY2tncm91bmQ6cmdiKGZyb20gdmFyKC0tbHY2eVUpIHIgZyBiIC8gMC4wODI0KX0ub2dCeEY6YWN0aXZlIC5uaU80dTphZnRlcntiYWNrZ3JvdW5kOnJnYihmcm9tIHZhcigtLWx2NnlVKSByIGcgYiAvIDAuMjI0KX0uYnJLbXhiOnZpc2l0ZWQgLm9nQnhGe2NvbG9yOiM2ODFkYTh9Lk9TclhYYntvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpc30uY0hhcWJ7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7d2hpdGUtc3BhY2U6bm93cmFwfS5GUjdaU2N7Y29sb3I6dmFyKC0tbmdQWFRiKX0uRlI3WlNjIC5uaU80dXtiYWNrZ3JvdW5kOnRyYW5zcGFyZW50O2JvcmRlci1jb2xvcjp2YXIoLS1ZaTROYil9LkZSN1pTYzpob3ZlciAubmlPNHU6YWZ0ZXJ7YmFja2dyb3VuZDpyZ2IoZnJvbSB2YXIoLS1sdjZ5VSkgciBnIGIgLyAwLjA4MjQpfS5GUjdaU2M6YWN0aXZlIC5uaU80dTphZnRlcntiYWNrZ3JvdW5kOnJnYihmcm9tIHZhcigtLWx2NnlVKSByIGcgYiAvIDAuMjI0KX0uZXhwVVBke2NvbG9yOnZhcigtLXRvZE1OYyl9LmV4cFVQZCAubmlPNHV7YmFja2dyb3VuZDp2YXIoLS1pekdzcWIpfS5leHBVUGQ6aG92ZXIgLm5pTzR1OmFmdGVye2JhY2tncm91bmQ6cmdiKGZyb20gdmFyKC0tTm9hUVcpIHIgZyBiIC8gMC4yMjQpfS5leHBVUGQ6YWN0aXZlIC5uaU80dTphZnRlcntiYWNrZ3JvdW5kOnJnYihmcm9tIHZhcigtLU5vYVFXKSByIGcgYiAvIDAuNCl9Lnpxck8we2NvbG9yOnZhcigtLXVMejM3Yyl9Lnpxck8wIC5uaU80dXtiYWNrZ3JvdW5kOnZhcigtLXhoVUd3Yyk7Ym9yZGVyLWNvbG9yOnZhcigtLVlpNE5iKX0uenFyTzA6aG92ZXIgLm5pTzR1OmFmdGVye2JhY2tncm91bmQ6cmdiKGZyb20gdmFyKC0tdUx6MzdjKSByIGcgYiAvIDAuMDgpfS56cXJPMDphY3RpdmUgLm5pTzR1OmFmdGVye2JhY2tncm91bmQ6cmdiKGZyb20gdmFyKC0tdUx6MzdjKSByIGcgYiAvIDAuMjQpfS5HUTBiZGV7Y29sb3I6dmFyKC0tWUxOTkhjKX0uR1EwYmRlIC5uaU80dXtiYWNrZ3JvdW5kOnZhcigtLXhoVUd3Yyk7Ym9yZGVyLWNvbG9yOnZhcigtLVlpNE5iKX0uR1EwYmRlOmhvdmVyIC5uaU80dTphZnRlcntiYWNrZ3JvdW5kOnJnYihmcm9tIHZhcigtLVlMTk5IYykgciBnIGIgLyAwLjA4KX0uR1EwYmRlOmFjdGl2ZSAubmlPNHU6YWZ0ZXJ7YmFja2dyb3VuZDpyZ2IoZnJvbSB2YXIoLS1ZTE5OSGMpIHIgZyBiIC8gMC4yNCl9LmRtS0lqZS5kbUtJamUgLm5pTzR1e2JvcmRlci1jb2xvcjp0cmFuc3BhcmVudH0uZG1LSWplW3NlbGVjdGVkXXtjb2xvcjp2YXIoLS14UHBpTSl9LkJtZWdvZntjb2xvcjp2YXIoLS15MDFvdSl9LkJtZWdvZiAubmlPNHV7YmFja2dyb3VuZDp2YXIoLS1aaWE2bmYpfS5CbWVnb2Y6aG92ZXIgLm5pTzR1OmFmdGVye2JhY2tncm91bmQ6cmdiKGZyb20gdmFyKC0tcDlKOWMpIHIgZyBiIC8gMC4wODI0KX0uQm1lZ29mOmFjdGl2ZSAubmlPNHU6YWZ0ZXJ7YmFja2dyb3VuZDpyZ2IoZnJvbSB2YXIoLS1wOUo5YykgciBnIGIgLyAwLjIyNCl9LnI2OUZae2NvbG9yOnZhcigtLVZlTHlMYyl9LnI2OUZaIC5uaU80dXtiYWNrZ3JvdW5kOnZhcigtLUlqYzJ0Zil9LnI2OUZaOmhvdmVyIC5uaU80dTphZnRlcntiYWNrZ3JvdW5kOnJnYihmcm9tIHZhcigtLWZ1dmtzYykgciBnIGIgLyAwLjA4MjQpfS5yNjlGWjphY3RpdmUgLm5pTzR1OmFmdGVye2JhY2tncm91bmQ6cmdiKGZyb20gdmFyKC0tZnV2a3NjKSByIGcgYiAvIDAuMjI0KX0uclhvTTJje2NvbG9yOnZhcigtLWJjeGQzYil9LnJYb00yYyAubmlPNHV7YmFja2dyb3VuZDp2YXIoLS1NVjJzRyl9LnJYb00yYzpob3Zlcntjb2xvcjp2YXIoLS1ZTE5OSGMpfS5yWG9NMmM6aG92ZXIgLm5pTzR1OmFmdGVye2JhY2tncm91bmQ6cmdiKGZyb20gdmFyKC0tWUxOTkhjKSByIGcgYiAvIDAuMDgyNCl9LnJYb00yYzphY3RpdmV7Y29sb3I6dmFyKC0tWUxOTkhjKX0uclhvTTJjOmFjdGl2ZSAubmlPNHU6YWZ0ZXJ7YmFja2dyb3VuZDpyZ2IoZnJvbSB2YXIoLS1ZTE5OSGMpIHIgZyBiIC8gMC4yMjQpfS5mWFZhcmZ7Y29sb3I6dmFyKC0tVjl5c3FmKX0uZlhWYXJmW3NlbGVjdGVkXXtjb2xvcjojMWYxZjFmfS5mWFZhcmYgLm5pTzR1e2JhY2tncm91bmQ6dmFyKC0tcWRIWkYpO2JhY2tkcm9wLWZpbHRlcjpibHVyKDhweCl9LmZYVmFyZltzZWxlY3RlZF0gLm5pTzR1e2JhY2tncm91bmQ6I2ZmZn0uZlhWYXJmOmhvdmVyIC5uaU80dTphZnRlcntiYWNrZ3JvdW5kOnJnYihmcm9tIHZhcigtLVBCeE9LZSkgciBnIGIgLyAwLjIpfS5mWFZhcmZbc2VsZWN0ZWRdOmhvdmVyIC5uaU80dTphZnRlcntiYWNrZ3JvdW5kOnJnYihmcm9tIHZhcigtLVBCeE9LZSkgciBnIGIgLyAwLjA4KX0uZlhWYXJmOmFjdGl2ZSAubmlPNHU6YWZ0ZXJ7YmFja2dyb3VuZDpyZ2IoZnJvbSB2YXIoLS1QQnhPS2UpIHIgZyBiIC8gMC40KX0uZlhWYXJmW3NlbGVjdGVkXTphY3RpdmUgLm5pTzR1OmFmdGVye2JhY2tncm91bmQ6cmdiKGZyb20gdmFyKC0tUEJ4T0tlKSByIGcgYiAvIDAuMjQpfS5UYmllanttYXJnaW4tYm90dG9tOjBweH0udTYwandle21hcmdpbi1yaWdodDowcHh9LmVZNG14e3BhZGRpbmctbGVmdDoxMnB4fS55VWdRdGV7cGFkZGluZy1sZWZ0OjI0cHh9Lk5Ma1kye3BhZGRpbmc6MTJweH0uSTdZMkh7cGFkZGluZy1yaWdodDowcHh9Lmd4TWRWZHtwYWRkaW5nLXJpZ2h0OjhweH0uS1luMU9le2Rpc3BsYXk6YmxvY2t9LlNrQ1N7ZGlzcGxheTpub25lfS53NGhLU2V7cGFkZGluZzoyNHB4IDhweCAyMHB4IDI0cHh9Lnc0aEtTZTphZnRlcntjb250ZW50OiIiO2Rpc3BsYXk6YmxvY2s7Y2xlYXI6Ym90aH0ubDNnTDBlIC53NGhLU2V7ZGlzcGxheTpub25lfS5wcnl0U2R7d2lkdGg6MjRweDtoZWlnaHQ6MjRweDtkaXNwbGF5Om5vbmU7cGFkZGluZy10b3A6NnB4O3BhZGRpbmctYm90dG9tOjZweDttYXJnaW4tdG9wOi03cHg7bWFyZ2luLWxlZnQ6LTIwcHg7ZmxvYXQ6bGVmdH0uWk9lSFJke2ZvbnQtc2l6ZTp2YXIoLS1HaVRvSmYpO2ZvbnQtd2VpZ2h0OnZhcigtLUpUNElQYyk7Y29sb3I6dmFyKC0tWUxOTkhjKTtmbG9hdDpsZWZ0fS5rMlhHQ2R7Zm9udC1zaXplOnZhcigtLU1oczdkZSk7Zm9udC13ZWlnaHQ6dmFyKC0tb2Z3VUJjKTtjb2xvcjp2YXIoLS1JWG94VWUpfS5DczJoNmUgLmJ3WE4wYnt3aWR0aDoyODBweH0uQ3MyaDZlIC53NGhLU2V7d2lkdGg6MjQ4cHh9LkNzMmg2ZSAuazJYR0Nke3dpZHRoOjI4MHB4fS5jWU9OQmN7Y3Vyc29yOnBvaW50ZXI7ZmxvYXQ6cmlnaHQ7aGVpZ2h0OjI0cHg7bWFyZ2luOi0xMnB4IDRweCAtMTJweCAtMTJweDt3aWR0aDoyNHB4fS5pUlB6Y2J7Ym9yZGVyLWJvdHRvbToxcHggc29saWQgdmFyKC0tZ1M1alhiKX0udjBycnZke3BhZGRpbmctYm90dG9tOjE2cHh9LkdVSGF6ZHtwYWRkaW5nLWJvdHRvbToxMnB4fS5idlNUS2N7cGFkZGluZzo4cHh9LmNCNE5GY3twYWRkaW5nLXRvcDoxNnB4fS5PZEJoTXtwYWRkaW5nLXRvcDo4cHh9LndvazV2ZntwYWRkaW5nOjI0cHh9LmlNbGFwe2Rpc3BsYXk6LW1vei1ib3g7ZGlzcGxheTpmbGV4O2ZvbnQtZmFtaWx5Okdvb2dsZSBTYW5zLEFyaWFsLHNhbnMtc2VyaWY7cG9zaXRpb246Zml4ZWQ7YmFja2dyb3VuZDp2YXIoLS1YS01EeGMpfUBtZWRpYSAoZm9yY2VkLWNvbG9yczphY3RpdmUpey5pTWxhcHtib3JkZXI6MnB4IHNvbGlkIHRyYW5zcGFyZW50Oy1tb3otYm94LXNpemluZzpib3JkZXItYm94O2JveC1zaXppbmc6Ym9yZGVyLWJveH19LmlNbGFwe2JvcmRlci1yYWRpdXM6MjRweDstbW96LWJveC1vcmllbnQ6dmVydGljYWw7LW1vei1ib3gtZGlyZWN0aW9uOm5vcm1hbDtmbGV4LWRpcmVjdGlvbjpjb2x1bW47cGFkZGluZzoyNHB4O2dhcDoyNHB4O3dpZHRoOm1pbig2OHZ3LDQ1MHB4KTtvdmVyZmxvdzphdXRvO2luc2V0OnVuc2V0O2JvcmRlcjpub25lO2JveC1zaGFkb3c6MHB4IDRweCAxMnB4IHJnYmEoNjAsNjQsNjcsMC4yNCl9LlJtMkF2YntkaXNwbGF5Oi1tb3otYm94O2Rpc3BsYXk6ZmxleDstbW96LWJveC1wYWNrOmp1c3RpZnk7anVzdGlmeS1jb250ZW50OnNwYWNlLWJldHdlZW47LW1vei1ib3gtYWxpZ246Y2VudGVyO2FsaWduLWl0ZW1zOmNlbnRlcn0uTEJncTZ7Zm9udC1mYW1pbHk6R29vZ2xlIFNhbnMsQXJpYWwsc2Fucy1zZXJpZjtjb2xvcjp2YXIoLS1iYlF4QWIpO2ZvbnQtc2l6ZToyMnB4O2ZvbnQtd2VpZ2h0OjQwMH0ueGpSOGRke2JhY2tncm91bmQ6bm9uZTtib3JkZXI6bm9uZTtjdXJzb3I6cG9pbnRlcjtib3JkZXItcmFkaXVzOjUwJTtkaXNwbGF5Oi1tb3otYm94O2Rpc3BsYXk6ZmxleDstbW96LWJveC1hbGlnbjpjZW50ZXI7YWxpZ24taXRlbXM6Y2VudGVyOy1tb3otYm94LXBhY2s6Y2VudGVyO2p1c3RpZnktY29udGVudDpjZW50ZXJ9LlhlOUdRY3tjb2xvcjp2YXIoLS1iYlF4QWIpfS5sT1o3bXtmb250LWZhbWlseTpHb29nbGUgU2FucyxBcmlhbCxzYW5zLXNlcmlmO2NvbG9yOnZhcigtLWJiUXhBYik7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NDAwO2xpbmUtaGVpZ2h0OjIwcHg7cGFkZGluZzowO2JvcmRlci1yYWRpdXM6MTJweH0udlpkTnJje2Rpc3BsYXk6LW1vei1ib3g7ZGlzcGxheTpmbGV4Oy1tb3otYm94LXBhY2s6Y2VudGVyO2p1c3RpZnktY29udGVudDpjZW50ZXI7Z2FwOjI0cHg7LW1vei1ib3gtb3JpZW50OnZlcnRpY2FsOy1tb3otYm94LWRpcmVjdGlvbjpub3JtYWw7ZmxleC1kaXJlY3Rpb246Y29sdW1ufS5adEFYOGJ7ZGlzcGxheTotbW96LWJveDtkaXNwbGF5OmZsZXh9LmVVODd3ZntkaXNwbGF5Oi1tb3otYm94O2Rpc3BsYXk6ZmxleDstbW96LWJveC1vcmllbnQ6dmVydGljYWw7LW1vei1ib3gtZGlyZWN0aW9uOm5vcm1hbDtmbGV4LWRpcmVjdGlvbjpjb2x1bW47Z2FwOjE2cHh9LmttMGd5Y3tkaXNwbGF5Oi1tb3otYm94O2Rpc3BsYXk6ZmxleDstbW96LWJveC1wYWNrOmNlbnRlcjtqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyO2dhcDoyNHB4O2ZvbnQtc2l6ZToxMnB4fS5FZlNYcXtkaXNwbGF5Oi1tb3otYm94O2Rpc3BsYXk6ZmxleDstbW96LWJveC1vcmllbnQ6dmVydGljYWw7LW1vei1ib3gtZGlyZWN0aW9uOm5vcm1hbDtmbGV4LWRpcmVjdGlvbjpjb2x1bW47LW1vei1ib3gtYWxpZ246Y2VudGVyO2FsaWduLWl0ZW1zOmNlbnRlcjt3aWR0aDo3MHB4O2hlaWdodDotbW96LWZpdC1jb250ZW50O2hlaWdodDpmaXQtY29udGVudDtnYXA6OHB4fS5vSWRxOGJ7cG9zaXRpb246cmVsYXRpdmU7ZGlzcGxheTotbW96LWJveDtkaXNwbGF5OmZsZXg7LW1vei1ib3gtYWxpZ246Y2VudGVyO2FsaWduLWl0ZW1zOmNlbnRlcjstbW96LWJveC1wYWNrOmNlbnRlcjtqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyO3dpZHRoOjQ2cHg7aGVpZ2h0OjQ2cHg7Ym9yZGVyLXJhZGl1czo1MHB4O2JhY2tncm91bmQtY29sb3I6dmFyKC0tTG01NzBiKTtjb2xvcjp2YXIoLS1iYlF4QWIpO2JvcmRlcjowO2N1cnNvcjpwb2ludGVyfS5vSWRxOGI6YWZ0ZXJ7Y29udGVudDoiIjtwb3NpdGlvbjphYnNvbHV0ZTtpbnNldDowO2JhY2tncm91bmQ6IzAwMTY0Zjtib3JkZXItcmFkaXVzOmluaGVyaXQ7b3BhY2l0eTowO3RyYW5zaXRpb246b3BhY2l0eSAuMnM7cG9pbnRlci1ldmVudHM6bm9uZX0ub0lkcThiOmhvdmVyOmFmdGVye29wYWNpdHk6LjF9LmFlbFhIYntjb2xvcjp2YXIoLS1iYlF4QWIpO2ZvbnQtc2l6ZToxMnB4O2ZvbnQtd2VpZ2h0OjUwMH0uT2hTY2lje21hcmdpbjowcHh9LnpVZHBwY3twYWRkaW5nLWJvdHRvbTo0cHh9Lm1YWkpyYntkaXNwbGF5Oi1tb3otYm94O2Rpc3BsYXk6ZmxleDstbW96LWJveC1wYWNrOmp1c3RpZnk7anVzdGlmeS1jb250ZW50OnNwYWNlLWJldHdlZW47LW1vei1ib3gtYWxpZ246Y2VudGVyO2FsaWduLWl0ZW1zOmNlbnRlcjtnYXA6MjRweDtwYWRkaW5nOjhweDtib3JkZXItcmFkaXVzOjUwcHg7Ym9yZGVyOjFweCBzb2xpZCB2YXIoLS1nUzVqWGIpO2hlaWdodDo0MHB4O21pbi13aWR0aDozNjJweH0uRjZRNGV7ZGlzcGxheTotbW96LWJveDtkaXNwbGF5OmZsZXg7LW1vei1ib3gtYWxpZ246Y2VudGVyO2FsaWduLWl0ZW1zOmNlbnRlcjt3aWR0aDoyOTBweDtoZWlnaHQ6NDBweDtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo0MDA7d2hpdGUtc3BhY2U6bm93cmFwOy1tb3otbWFyZ2luLXN0YXJ0OjhweDttYXJnaW4taW5saW5lLXN0YXJ0OjhweDtjb2xvcjp2YXIoLS1iYlF4QWIpO2N1cnNvcjphdXRvO292ZXJmbG93LXg6YXV0bzttYXNrLWltYWdlOmxpbmVhci1ncmFkaWVudCh0byByaWdodCwjMDAwIDkwJSx0cmFuc3BhcmVudCAxMDAlKTtzY3JvbGxiYXItd2lkdGg6bm9uZTstbXMtb3ZlcmZsb3ctc3R5bGU6bm9uZX0uRjZRNGU6Oi13ZWJraXQtc2Nyb2xsYmFye2Rpc3BsYXk6bm9uZX0ucDdlaXFme3Bvc2l0aW9uOnJlbGF0aXZlO2Rpc3BsYXk6LW1vei1ib3g7ZGlzcGxheTpmbGV4Oy1tb3otYm94LWFsaWduOmNlbnRlcjthbGlnbi1pdGVtczpjZW50ZXI7LW1vei1ib3gtcGFjazpjZW50ZXI7anVzdGlmeS1jb250ZW50OmNlbnRlcjtoZWlnaHQ6NDBweDt3aWR0aDotbW96LWZpdC1jb250ZW50O3dpZHRoOmZpdC1jb250ZW50O2JvcmRlci1yYWRpdXM6MjBweDtwYWRkaW5nOjRweCAxMnB4O2NvbG9yOnZhcigtLWJiUXhBYik7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1MbTU3MGIpO2JvcmRlcjowO3doaXRlLXNwYWNlOm5vd3JhcDtjdXJzb3I6cG9pbnRlcn0ucDdlaXFmOmFmdGVye2NvbnRlbnQ6IiI7cG9zaXRpb246YWJzb2x1dGU7aW5zZXQ6MDtiYWNrZ3JvdW5kOiMwMDE2NGY7Ym9yZGVyLXJhZGl1czppbmhlcml0O29wYWNpdHk6MDt0cmFuc2l0aW9uOm9wYWNpdHkgLjJzO3BvaW50ZXItZXZlbnRzOm5vbmV9LnA3ZWlxZjpob3ZlcjphZnRlcntvcGFjaXR5Oi4xfS5zV3gyemJ7ZGlzcGxheTotbW96LWJveDtkaXNwbGF5OmZsZXg7LW1vei1ib3gtYWxpZ246Y2VudGVyO2FsaWduLWl0ZW1zOmNlbnRlcjstbW96LWJveC1wYWNrOmNlbnRlcjtqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyO3dpZHRoOi1tb3otZml0LWNvbnRlbnQ7d2lkdGg6Zml0LWNvbnRlbnQ7aGVpZ2h0OjI0cHg7Z2FwOjRweDtmb250LWZhbWlseTpHb29nbGUgU2Fucztjb2xvcjp2YXIoLS1iYlF4QWIpO2ZpbGw6Y3VycmVudENvbG9yO2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjQwMDstbW96LXVzZXItc2VsZWN0Om5vbmU7dXNlci1zZWxlY3Q6bm9uZX0uS1pNcWl7b3BhY2l0eTowO3Bvc2l0aW9uOmFic29sdXRlO2xlZnQ6LTk5OTlweH0uR21vTDBje21hcmdpbi1yaWdodDoxMnB4fS54VFdsdGZ7bWFyZ2luLXJpZ2h0OjI0cHh9Lld0NVRmZXtwYWRkaW5nLWxlZnQ6MHB4O3BhZGRpbmctcmlnaHQ6MHB4fS5lSnRyTWN7cGFkZGluZy1ib3R0b206OHB4O3BhZGRpbmctdG9wOjhweH0uZnVkVlpie2Rpc3BsYXk6aW5saW5lLWJsb2NrO3ZlcnRpY2FsLWFsaWduOmJvdHRvbX0uQUxNWHZme2Rpc3BsYXk6LW1vei1ib3g7ZGlzcGxheTpmbGV4fS5BTE1YdmYueWphUENjey1tb3otYm94LW9yaWVudDp2ZXJ0aWNhbDstbW96LWJveC1kaXJlY3Rpb246bm9ybWFsO2ZsZXgtZGlyZWN0aW9uOmNvbHVtbn0uSDNaa0hmLkgzWmtIZntsaW5lLWhlaWdodDoyNHB4fS5IM1prSGZ7Y29sb3I6dmFyKC0tWUxOTkhjKTtjdXJzb3I6cG9pbnRlcjtmb250LXdlaWdodDo0MDB9LkxsWGVKe3ZlcnRpY2FsLWFsaWduOm1pZGRsZX0ubE9aN217cGFkZGluZzo4cHggMDtmb250LXNpemU6Ljc1cmVtO2xpbmUtaGVpZ2h0OjFyZW19LnVoSE93Zntwb3NpdGlvbjpyZWxhdGl2ZX0udWhIT3dmOmFmdGVye2JhY2tncm91bmQtY29sb3I6cmdiYSgwLDAsMCwwLjAzKTtib3R0b206MDtjb250ZW50OiIiO2Rpc3BsYXk6YmxvY2s7bGVmdDowO3BvaW50ZXItZXZlbnRzOm5vbmU7cG9zaXRpb246YWJzb2x1dGU7cmlnaHQ6MDt0b3A6MH0udWhIT3dmIGltZ3tkaXNwbGF5OmJsb2NrfS5McWtLdGZ7LW1vei1ib3gtYWxpZ246Y2VudGVyO2FsaWduLWl0ZW1zOmNlbnRlcjtkaXNwbGF5Om5vbmU7aGVpZ2h0OjEwMCU7LW1vei1ib3gtcGFjazpjZW50ZXI7anVzdGlmeS1jb250ZW50OmNlbnRlcjtsZWZ0OjA7b3BhY2l0eTouOTk5O292ZXJmbG93OmhpZGRlbjtwb3NpdGlvbjphYnNvbHV0ZTt0b3A6MDt3aWR0aDoxMDAlfS5Jejc0MGQuTHFrS3Rme2JvcmRlci1yYWRpdXM6NTAlfS5McWtLdGYuRG5nclBje2xlZnQ6NTAlO21hcmdpbi1sZWZ0Oi01MHZ3O21hcmdpbi1yaWdodDotNTB2dztyaWdodDo1MCU7d2lkdGg6MTAwdnd9LmN2bXJ5Yntwb3NpdGlvbjpyZWxhdGl2ZX0uQlliVWNke292ZXJmbG93OmhpZGRlbjt9LkJZYlVjZCBpbWd7aGVpZ2h0OjEwMCU7d2lkdGg6MTAwJX0uS1ZDdmJiIC5ENWtSZGR7dG9wOjRweH0ubU1CNHdkIC5ENWtSZGR7dG9wOjB9Lnp1NG5aYy5LVkN2YmIgLkQ1a1JkZHt0b3A6MTBweH0udEhhWVNjIC5ENWtSZGR7dG9wOjhweH0uenU0blpjLnRIYVlTYyAuRDVrUmRke3RvcDoxNHB4fS5Ua1pac2Z7cGFkZGluZy1ib3R0b206NHB4O3BhZGRpbmctdG9wOjRweH0uQ2RLdjl7ZGlzcGxheTpibG9jaztwb3NpdGlvbjpyZWxhdGl2ZTttYXJnaW46MCAzcHg7dmVydGljYWwtYWxpZ246bWlkZGxlfS5iYWVJeGZ7Ym9yZGVyOm5vbmU7Ym94LXNoYWRvdzpub25lO2NvbG9yOnZhcigtLVlMTk5IYyk7Zm9udC1zaXplOnZhcigtLWd5dTVMKTt3aWR0aDoxMDAlfS5vV2YzZGMgLkQ1a1JkZCwub1dmM2RjIC5iYWVJeGZ7Zm9udC1zaXplOjE0cHh9LmJhZUl4Zjpmb2N1c3tvdXRsaW5lOm5vbmV9LkNhTUVBYzpub3QoLktJQ2h5ZikgLldPMWxPZCwub1BITDQ6bm90KC5LSUNoeWYpIC5XTzFsT2R7Ym9yZGVyLWNvbG9yOiNkOTMwMjV9LmpGS0dHZi5LSUNoeWYgLldPMWxPZHtib3JkZXItYm90dG9tLXN0eWxlOmRhc2hlZH0uV08xbE9ke2Rpc3BsYXk6dGFibGU7d2lkdGg6MTAwJX0uaWNFS3kgLld0NVRmZXtwYWRkaW5nLWxlZnQ6MHB4O3BhZGRpbmctcmlnaHQ6MHB4fS5pY0VLeSAuVGtaWnNme3BhZGRpbmctYm90dG9tOjRweDtwYWRkaW5nLXRvcDo0cHh9LmljRUt5IC5lSnRyTWN7cGFkZGluZy1ib3R0b206OHB4O3BhZGRpbmctdG9wOjhweH0uaWNFS3kgLk9oU2NpY3ttYXJnaW46MHB4fS5zOWNqeGN7Y29sb3I6I2IzMjYxZTtkaXNwbGF5Om5vbmU7bWFyZ2luLXRvcDo0cHh9LkNhTUVBYzpub3QoLktJQ2h5ZikgLnM5Y2p4Yywub1BITDQ6bm90KC5LSUNoeWYpIC5zOWNqeGN7ZGlzcGxheTpibG9ja30uTWRGRGdiLkhVUU5JZXtjb2xvcjpyZ2JhKDAsMCwwLC4yNil9LkNkS3Y5Lm9KYU91ZnttYXJnaW4tdG9wOjE0cHh9LkNkS3Y5LmI3ZnV6ZHttYXJnaW4tdG9wOjB9LkQ1a1JkZHtsZWZ0OjA7cmlnaHQ6MDtmb250LXNpemU6dmFyKC0tZ3l1NUwpO3BvaW50ZXItZXZlbnRzOm5vbmU7cG9zaXRpb246YWJzb2x1dGU7b3ZlcmZsb3c6aGlkZGVuO3doaXRlLXNwYWNlOm5vd3JhcDt0cmFuc2l0aW9uLWR1cmF0aW9uOi4yczt0cmFuc2l0aW9uLXRpbWluZy1mdW5jdGlvbjpjdWJpYy1iZXppZXIoLjQsMCwuMiwxKX0uTWRGRGdiLmQ1M1FOZHtjb2xvcjp2YXIoLS1JWG94VWUpfS5aQ0dyNWMgLk1kRkRnYiwuWkNHcjVjIC5NZEZEZ2IuSFVRTkllLC5aQ0dyNWMgLk1kRkRnYi5kNTNRTmR7Y29sb3I6dmFyKC0tUGE4V2xiKX0uQ2RLdjkuVEpnZkogLkQ1a1JkZCwuQ2RLdjkuWkNHcjVjIC5ENWtSZGR7ZGlzcGxheTpub25lfS5DZEt2OS5USmdmSiAuRDVrUmRkLnpMRVBnYiwuQ2RLdjkuWkNHcjVjIC5ENWtSZGQuekxFUGdie2ZvbnQtc2l6ZToxMnB4O3RvcDotMTZweDtkaXNwbGF5Oi1tb3otYm94O2Rpc3BsYXk6ZmxleH0uY3pVWTJle2JhY2tncm91bmQtY29sb3I6dmFyKC0tUGE4V2xiKX0uY3pVWTJle2JvdHRvbTowO2hlaWdodDoycHg7bGVmdDo0NSU7bWFyZ2luLXRvcDotMnB4O3BvaW50ZXItZXZlbnRzOm5vbmU7cG9zaXRpb246cmVsYXRpdmU7dHJhbnNpdGlvbi1kdXJhdGlvbjouMnM7dHJhbnNpdGlvbi10aW1pbmctZnVuY3Rpb246Y3ViaWMtYmV6aWVyKC40LDAsLjIsMSk7dmlzaWJpbGl0eTpoaWRkZW47d2lkdGg6MTBweH0uWkNHcjVjIC5jelVZMmV7bGVmdDowO3Zpc2liaWxpdHk6aW5oZXJpdDt3aWR0aDoxMDAlfS5DYU1FQWMgLmN6VVkyZSwub1BITDQgLmN6VVkyZXtiYWNrZ3JvdW5kLWNvbG9yOiNkOTMwMjV9LmpGS0dHZiAuV08xbE9ke2JvcmRlci1ib3R0b206MXB4IHNvbGlkIHZhcigtLW1YWmtxYyk7Ym9yZGVyLXJhZGl1czowfS56dTRuWmMgLkQ1a1JkZHtsZWZ0OjhweDtyaWdodDo4cHh9LkNkS3Y5Lnp1NG5aYy5USmdmSiAuekxFUGdiLC5DZEt2OS56dTRuWmMuWkNHcjVjIC56TEVQZ2J7dG9wOi04cHh9Lnp1NG5aYy5DYU1FQWM6bm90KC5aQ0dyNWMpIC5NZEZEZ2IsLnp1NG5aYy5vUEhMNDpub3QoLlpDR3I1YykgLk1kRkRnYntjb2xvcjojYjMyNjFlfS56dTRuWmMgLldPMWxPZHtib3JkZXItcmFkaXVzOjZweDtib3JkZXI6MXB4IHNvbGlkIHZhcigtLW1YWmtxYyk7cGFkZGluZzo1cHggOHB4Oy1tb3otYm94LXNpemluZzpib3JkZXItYm94O2JveC1zaXppbmc6Ym9yZGVyLWJveH0uenU0blpjLlpDR3I1YyAuV08xbE9ke3BhZGRpbmc6NHB4IDdweDtib3JkZXItd2lkdGg6MnB4fS56dTRuWmMuWkNHcjVjOm5vdCgua1hLTmFjKSAuV08xbE9ke2JvcmRlci1jb2xvcjp2YXIoLS1QYThXbGIpfS5VZ1FSMGMsLmhVaGtMZXtjb2xvcjp2YXIoLS1JWG94VWUpO2ZvbnQtc2l6ZTp2YXIoLS1neXU1TCk7d2hpdGUtc3BhY2U6bm93cmFwO2Rpc3BsYXk6dGFibGUtY2VsbH0uaFVoa0xle3BhZGRpbmctcmlnaHQ6NXB4fS5VZ1FSMGN7cGFkZGluZy1sZWZ0OjVweH0uZWs4U1hke3ZlcnRpY2FsLWFsaWduOm1pZGRsZX0uV08xbE9kIC5GRlRpYmV7ZGlzcGxheTp0YWJsZS1jZWxsO3dpZHRoOjEwMCV9Lm9XZjNkYyAuVWdRUjBjLC5vV2YzZGMgLmhVaGtMZXtmb250LXNpemU6MTRweH0uVWdRUjBjLkFUMktBYiwuaFVoa0xlLkFUMktBYnt0cmFuc2l0aW9uLWR1cmF0aW9uOi4yczt0cmFuc2l0aW9uLXRpbWluZy1mdW5jdGlvbjpjdWJpYy1iZXppZXIoLjQsMCwuMiwxKTtkaXNwbGF5OmlubGluZS1ibG9jazttYXgtd2lkdGg6MTAwJTt2aXNpYmlsaXR5OmhpZGRlbn0udHYzVkFle2Rpc3BsYXk6LW1vei1ib3g7ZGlzcGxheTpmbGV4fS5NZEZEZ2J7d2lkdGg6MTAwJTt3aGl0ZS1zcGFjZTpub3dyYXB9LkNkS3Y5LlRKZ2ZKIC5BVDJLQWIsLkNkS3Y5LlpDR3I1YyAuQVQyS0Fie21heC13aWR0aDowO3BhZGRpbmc6MH0ua1hLTmFjIC5XTzFsT2R7Ym9yZGVyLWNvbG9yOnJnYmEoMjU1LDI1NSwyNTUsLjU0KX0ua1hLTmFjLkNhTUVBYzpub3QoLktJQ2h5ZikgLldPMWxPZCwua1hLTmFjLm9QSEw0IC5XTzFsT2Q6bm90KC5LSUNoeWYpe2JvcmRlci1jb2xvcjojZmRkNjYzfS5rWEtOYWMuWkNHcjVjIC5NZEZEZ2IsLmtYS05hYy5aQ0dyNWMgLk1kRkRnYi5IVVFOSWUsLmtYS05hYy5aQ0dyNWMgLk1kRkRnYi5kNTNRTmR7Y29sb3I6dmFyKC0teGhVR3djKX0ua1hLTmFjIC5NZEZEZ2IuSFVRTkllLC5rWEtOYWMgLk1kRkRnYi5kNTNRTmR7Y29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuNTQpfS5rWEtOYWMuenU0blpjLkNhTUVBYzpub3QoLlpDR3I1YykgLnpMRVBnYiwua1hLTmFjLnp1NG5aYy5vUEhMNDpub3QoLlpDR3I1YykgLnpMRVBnYntjb2xvcjojZmRkNjYzfS5rWEtOYWMgLmN6VVkyZXtiYWNrZ3JvdW5kOnZhcigtLXhoVUd3Yyl9LmtYS05hYy5DYU1FQWMgLmN6VVkyZSwua1hLTmFjLm9QSEw0IC5jelVZMmV7YmFja2dyb3VuZC1jb2xvcjojZmZkZjkyfS5rWEtOYWMgLnM5Y2p4Y3tjb2xvcjojZmRkNjYzfS5rWEtOYWMgLlVnUVIwYywua1hLTmFjIC5oVWhrTGV7Y29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuNTQpfS56c1lNTWV7cGFkZGluZzowcHh9LnpKVXVxZnttYXJnaW4tYm90dG9tOjRweH0uQUI0V2Zme21hcmdpbi1sZWZ0OjE2cHh9LndIWWxUZHtmb250LWZhbWlseTp2YXIoLS1MSTRCbyk7Zm9udC1zaXplOnZhcigtLU1oczdkZSk7bGluZS1oZWlnaHQ6dmFyKC0tWFd2MWlmKX0ueVVUTWp7Zm9udC1mYW1pbHk6QXJpYWwsc2Fucy1zZXJpZjtmb250LXdlaWdodDo0MDB9QGtleWZyYW1lcyBnLXNuYWNrYmFyLXNob3d7MCV7cG9pbnRlci1ldmVudHM6bm9uZTt0cmFuc2Zvcm06dHJhbnNsYXRlWSgwKX10b3t0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMTAwJSl9fUBrZXlmcmFtZXMgZy1zbmFja2Jhci1oaWRlezAle3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xMDAlKX10b3t0cmFuc2Zvcm06dHJhbnNsYXRlWSgwKX19QGtleWZyYW1lcyBnLXNuYWNrYmFyLXNob3ctY29udGVudHswJXtvcGFjaXR5OjB9fUBrZXlmcmFtZXMgZy1zbmFja2Jhci1oaWRlLWNvbnRlbnR7dG97b3BhY2l0eTowfX0uTEgzd0d7Ym90dG9tOjA7aGVpZ2h0OjA7cG9zaXRpb246Zml4ZWQ7ei1pbmRleDo5OTl9LnlLNmpxZXstbW96LWJveC1zaXppbmc6Ym9yZGVyLWJveDtib3gtc2l6aW5nOmJvcmRlci1ib3g7dmlzaWJpbGl0eTpoaWRkZW59LnJUWVROYnthbmltYXRpb246Zy1zbmFja2Jhci1oaWRlIC40cyBjdWJpYy1iZXppZXIoMC40LDAsMC4yLDEpIGJvdGg7dmlzaWJpbGl0eTppbmhlcml0fS5VZXdQTWQuVWV3UE1ke2FuaW1hdGlvbjpnLXNuYWNrYmFyLXNob3cgLjVzIGN1YmljLWJlemllcigwLjQsMCwwLjIsMSkgYm90aDt2aXNpYmlsaXR5OmluaGVyaXR9LmI3N0hLZntiYWNrZ3JvdW5kLWNvbG9yOiMzMjMyMzI7cGFkZGluZzowIDI0cHh9QG1lZGlhIChmb3JjZWQtY29sb3JzOmFjdGl2ZSl7LmI3N0hLZntib3JkZXI6MXB4IHNvbGlkIENhbnZhc1RleHR9fS5ySXhzdmV7LW1vei1ib3gtYWxpZ246Y2VudGVyO2FsaWduLWl0ZW1zOmNlbnRlcjtkaXNwbGF5Oi1tb3otYm94O2Rpc3BsYXk6ZmxleH0uclRZVE5iIC5ySXhzdmV7YW5pbWF0aW9uOmctc25hY2tiYXItaGlkZS1jb250ZW50IC4zNXMgY3ViaWMtYmV6aWVyKDAuNCwwLDAuMiwxKSBib3RofS5VZXdQTWQgLnJJeHN2ZXthbmltYXRpb246Zy1zbmFja2Jhci1zaG93LWNvbnRlbnQgLjM1cyBjdWJpYy1iZXppZXIoMC40LDAsMC4yLDEpIC4xNXMgYm90aH0uVHhuZ25iLlR4bmduYntsaW5lLWhlaWdodDoyMHB4fS5UeG5nbmJ7Y29sb3I6I2ZmZjstbW96LWJveC1mbGV4OjE7ZmxleDoxIDEgYXV0bzttYXJnaW46MTRweCAwO3dvcmQtYnJlYWs6YnJlYWstd29yZH1AbWVkaWEgKG1pbi13aWR0aDo1NjlweCkgYW5kIChtaW4taGVpZ2h0OjU2OXB4KXsuTEgzd0d7dGV4dC1hbGlnbjpjZW50ZXJ9LnlLNmpxZXtkaXNwbGF5OmlubGluZS1ibG9jazttYXgtd2lkdGg6NTY4cHg7bWluLXdpZHRoOjI4OHB4O3RleHQtYWxpZ246bGVmdH0uYjc3SEtme2JvcmRlci1yYWRpdXM6OHB4fX0uTEgzd0d7bGVmdDowO3JpZ2h0OjB9LnlLNmpxZXtwb3NpdGlvbjpyZWxhdGl2ZX0ubXFzQW5le21hcmdpbi1ib3R0b206ZW52KHNhZmUtYXJlYS1pbnNldC1ib3R0b20pfS5PeDhDeWR7aGVpZ2h0OjA7cG9zaXRpb246Zml4ZWQ7ei1pbmRleDo5OTk7bGVmdDowO3JpZ2h0OjB9LkU3SGRnYnstbW96LWJveC1zaXppbmc6Ym9yZGVyLWJveDtib3gtc2l6aW5nOmJvcmRlci1ib3g7dmlzaWJpbGl0eTpoaWRkZW47ZGlzcGxheTppbmxpbmUtYmxvY2s7cG9zaXRpb246cmVsYXRpdmV9LmpoWnZvZHtib3R0b206MDtoZWlnaHQ6MDtwb3NpdGlvbjpmaXhlZDt6LWluZGV4Ojk5OTtsZWZ0OjE2cHg7cmlnaHQ6YXV0b30uV3Uwdjliey1tb3otYm94LXNpemluZzpib3JkZXItYm94O2JveC1zaXppbmc6Ym9yZGVyLWJveDt2aXNpYmlsaXR5OmhpZGRlbjtwb3NpdGlvbjpyZWxhdGl2ZX1AbWVkaWEgKG1pbi13aWR0aDo1NjlweCkgYW5kIChtaW4taGVpZ2h0OjU2OXB4KXsuamhadm9ke3RleHQtYWxpZ246Y2VudGVyfS5XdTB2OWJ7ZGlzcGxheTppbmxpbmUtYmxvY2s7bWF4LXdpZHRoOjU2OHB4O21pbi13aWR0aDoyODhweDt0ZXh0LWFsaWduOmxlZnR9fS5zSEZOWWR7bWFyZ2luLXJpZ2h0Oi04cHh9QG1lZGlhIChtaW4td2lkdGg6NTY5cHgpIGFuZCAobWluLWhlaWdodDo1NjlweCl7LnNIRk5ZZHttYXJnaW4tbGVmdDo0MHB4fX0uRzlqb3Jle3Bvc2l0aW9uOmFic29sdXRlO3RvcDotMjRweDtib3R0b206LTI0cHg7bGVmdDotMjRweDtyaWdodDotMjRweH0uVjlPMVlkIC5ySXhzdmV7ZGlzcGxheTpibG9jaztwYWRkaW5nOjhweCAwfS5WOU8xWWQgLnNIRk5ZZHttYXJnaW4tbGVmdDowfS5WOU8xWWQgLnNIRk5ZZCBnLWZsYXQtYnV0dG9ue3BhZGRpbmctbGVmdDowfS5YMXBMQ3stLURFZVN0ZjojZjBmMmY1Oy0tVFNXWkliOiNlOWViZjA7LS1CUkx3RTojZTFlM2U4Oy0teGhVR3djOiNmZmZmZmY7LS1YS01EeGM6I2YwZjJmNTstLWFZbjJTOiNlOWViZjA7LS1MbTU3MGI6I2UxZTNlODstLUN3UTdKOiNmZmY7LS1qSU51NmM6IzBhMGEwYTstLXVMejM3YzojNTY1OTVlOy0tWUxOTkhjOiMwYTBhMGE7LS1JWG94VWU6IzU2NTk1ZTstLWJiUXhBYjojMGEwYTBhOy0tVE1ZUzk6IzBhMGEwYTstLW1YWmtxYzojZGNkZmU1Oy0tZ1M1alhiOiNkY2RmZTU7LS1hbW5Qd2U6IzU2NTk1ZTstLU5zbTBjZTojMGI1MGQwOy0tRXBGTlc6I2ZmZjstLWp3RkMyZTojZDNlM2ZkOy0tWFBDa2hiOiMwNDZlMDA7LS1iYUprUWM6I2MwMTUxZH0uWDFwTEN7LS1Oc20wY2U6IzMzNmVmM30uWDFwTEN7LS1ZaTROYjojZDJkMmQyOy0tUGE4V2xiOnZhcigtLU5zbTBjZSk7LS1uZ1BYVGI6IzBiNTdkMDstLUlqYzJ0ZjojZTVlZGZmOy0tVmVMeUxjOiMwMDFkMzU7LS1iY3hkM2I6IzFmMWYxZn0uWDFwTEN7LS1ua21RT2U6R29vZ2xlIFNhbnMsQXJpYWwsc2Fucy1zZXJpZjstLWE5WDBKYzoyNHB4Oy0tejNCRkllOjE2cHg7LS1YV2xpd2M6NDAwOy0tTEk0Qm86R29vZ2xlIFNhbnMsQXJpYWwsc2Fucy1zZXJpZjstLVhXdjFpZjoyMnB4Oy0tTWhzN2RlOjE0cHg7LS1vZndVQmM6NDAwOy0tWWZpS2Y6R29vZ2xlIFNhbnMsQXJpYWwsc2Fucy1zZXJpZjstLXB1blpsYzoxNnB4Oy0tZ09zNkJmOjEycHg7LS1NektCcGQ6NDAwOy0tSVQ3eTNjOkdvb2dsZSBTYW5zLEFyaWFsLHNhbnMtc2VyaWY7LS1oUERNRmY6MzJweDstLUlhNzBYZDoyNHB4Oy0tVnlpOHljOjUwMDstLUFvaDlYZTpHb29nbGUgU2FucyxBcmlhbCxzYW5zLXNlcmlmOy0tcVlHWHc6MjhweDstLXFwZEZwOjIwcHg7LS1KVDRJUGM6NjAwOy0tclRrMEU6R29vZ2xlIFNhbnMsQXJpYWwsc2Fucy1zZXJpZjstLU9rM2lyZjoyNHB4Oy0tdUJkZ1RlOjE2cHg7LS1aZjlYbmQ6NzAwOy0tcVI4WDA6R29vZ2xlIFNhbnMsQXJpYWwsc2Fucy1zZXJpZjstLUNiZG1FOjIwcHg7LS1oYm1uamU6MTRweDstLU95Y2p0OjUwMDstLXFCd3lxYjpHb29nbGUgU2FucyxBcmlhbCxzYW5zLXNlcmlmOy0tblVPcUVjOjE2cHg7LS1jTVR2amY6MTJweDstLUNVUzE1ZTo1MDA7LS1Fb3U4WWM6R29vZ2xlIFNhbnMsQXJpYWwsc2Fucy1zZXJpZjstLXFXWllFYzoyNnB4Oy0tR2lUb0pmOjIwcHg7LS1wMkxxeGU6NDAwOy0tenRUcVBlOkdvb2dsZSBTYW5zLEFyaWFsLHNhbnMtc2VyaWY7LS1Zb2E2cWQ6NTAwOy0tbEkxVHJjOkdvb2dsZSBTYW5zLEFyaWFsLHNhbnMtc2VyaWY7LS1ISXlFS2M6MTZweDstLVpOZzg4OjEycHg7LS1xalZVM2Q6NTAwfS5YMXBMQ3stLU95Y2p0OjQwMH0uWDFwTEN7LS1DNzR4MmU6MThweDstLWd5dTVMOjE0cHh9LlgxcExDey0tQzc0eDJlOjE4cHh9LlgxcExDe2xlZnQ6MDt0b3A6MDt3aWR0aDo3MnB4O2hlaWdodDoxMDB2aDtwb3NpdGlvbjpmaXhlZDt0cmFuc2Zvcm06dHJhbnNsYXRlWCgtMjYwcHgpO3Zpc2liaWxpdHk6aGlkZGVuO3RyYW5zaXRpb246dHJhbnNmb3JtIC4zcyBlYXNlLWluLW91dCx2aXNpYmlsaXR5IDBzIC4zczt6LWluZGV4OjEwMDB9Lk8xd1RtZnt0cmFuc2Zvcm06dHJhbnNsYXRlWCgwKTt2aXNpYmlsaXR5OnZpc2libGU7dHJhbnNpdGlvbjp0cmFuc2Zvcm0gLjNzIGVhc2UtaW4tb3V0LHZpc2liaWxpdHkgMHMgMHN9Lkh4WENYY3t0cmFuc2l0aW9uOm1hcmdpbiAuNDVzIGN1YmljLWJlemllciguMiwwLDAsMSl9LmlaS2JQZXstLURFZVN0ZjojZjBmMmY1Oy0tVFNXWkliOiNlOWViZjA7LS1CUkx3RTojZTFlM2U4Oy0teGhVR3djOiNmZmZmZmY7LS1YS01EeGM6I2YwZjJmNTstLWFZbjJTOiNlOWViZjA7LS1MbTU3MGI6I2UxZTNlODstLUN3UTdKOiNmZmY7LS1qSU51NmM6IzBhMGEwYTstLXVMejM3YzojNTY1OTVlOy0tWUxOTkhjOiMwYTBhMGE7LS1JWG94VWU6IzU2NTk1ZTstLWJiUXhBYjojMGEwYTBhOy0tVE1ZUzk6IzBhMGEwYTstLW1YWmtxYzojZGNkZmU1Oy0tZ1M1alhiOiNkY2RmZTU7LS1hbW5Qd2U6IzU2NTk1ZTstLU5zbTBjZTojMGI1MGQwOy0tRXBGTlc6I2ZmZjstLWp3RkMyZTojZDNlM2ZkOy0tWFBDa2hiOiMwNDZlMDA7LS1iYUprUWM6I2MwMTUxZH0uaVpLYlBley0tTnNtMGNlOiMzMzZlZjN9LmlaS2JQZXstLVlpNE5iOiNkMmQyZDI7LS1QYThXbGI6dmFyKC0tTnNtMGNlKTstLW5nUFhUYjojMGI1N2QwOy0tSWpjMnRmOiNlNWVkZmY7LS1WZUx5TGM6IzAwMWQzNTstLWJjeGQzYjojMWYxZjFmfS5pWktiUGV7LS1ua21RT2U6R29vZ2xlIFNhbnMsQXJpYWwsc2Fucy1zZXJpZjstLWE5WDBKYzoyNHB4Oy0tejNCRkllOjE2cHg7LS1YV2xpd2M6NDAwOy0tTEk0Qm86R29vZ2xlIFNhbnMsQXJpYWwsc2Fucy1zZXJpZjstLVhXdjFpZjoyMnB4Oy0tTWhzN2RlOjE0cHg7LS1vZndVQmM6NDAwOy0tWWZpS2Y6R29vZ2xlIFNhbnMsQXJpYWwsc2Fucy1zZXJpZjstLXB1blpsYzoxNnB4Oy0tZ09zNkJmOjEycHg7LS1NektCcGQ6NDAwOy0tSVQ3eTNjOkdvb2dsZSBTYW5zLEFyaWFsLHNhbnMtc2VyaWY7LS1oUERNRmY6MzJweDstLUlhNzBYZDoyNHB4Oy0tVnlpOHljOjUwMDstLUFvaDlYZTpHb29nbGUgU2FucyxBcmlhbCxzYW5zLXNlcmlmOy0tcVlHWHc6MjhweDstLXFwZEZwOjIwcHg7LS1KVDRJUGM6NjAwOy0tclRrMEU6R29vZ2xlIFNhbnMsQXJpYWwsc2Fucy1zZXJpZjstLU9rM2lyZjoyNHB4Oy0tdUJkZ1RlOjE2cHg7LS1aZjlYbmQ6NzAwOy0tcVI4WDA6R29vZ2xlIFNhbnMsQXJpYWwsc2Fucy1zZXJpZjstLUNiZG1FOjIwcHg7LS1oYm1uamU6MTRweDstLU95Y2p0OjUwMDstLXFCd3lxYjpHb29nbGUgU2FucyxBcmlhbCxzYW5zLXNlcmlmOy0tblVPcUVjOjE2cHg7LS1jTVR2amY6MTJweDstLUNVUzE1ZTo1MDA7LS1Fb3U4WWM6R29vZ2xlIFNhbnMsQXJpYWwsc2Fucy1zZXJpZjstLXFXWllFYzoyNnB4Oy0tR2lUb0pmOjIwcHg7LS1wMkxxeGU6NDAwOy0tenRUcVBlOkdvb2dsZSBTYW5zLEFyaWFsLHNhbnMtc2VyaWY7LS1DNzR4MmU6MThweDstLWd5dTVMOjE0cHg7LS1Zb2E2cWQ6NTAwOy0tbEkxVHJjOkdvb2dsZSBTYW5zLEFyaWFsLHNhbnMtc2VyaWY7LS1ISXlFS2M6MTZweDstLVpOZzg4OjEycHg7LS1xalZVM2Q6NTAwfS5pWktiUGV7LS1PeWNqdDo0MDB9LlBuTmJje2JhY2tncm91bmQ6I2Y3ZjhmYTtibG9jay1zaXplOjEwMCU7aW5saW5lLXNpemU6NzJweDtpbnNldC1ibG9jay1zdGFydDowO2luc2V0LWlubGluZS1zdGFydDowO3Bvc2l0aW9uOmZpeGVkfS5HV2lzd2R7ZGlzcGxheTotbW96LWJveDtkaXNwbGF5OmZsZXg7LW1vei1ib3gtcGFjazplbmQ7anVzdGlmeS1jb250ZW50OmZsZXgtZW5kfS5jdG5vS2N7ZGlzcGxheTotbW96LWJveDtkaXNwbGF5OmZsZXg7LW1vei1ib3gtb3JpZW50OnZlcnRpY2FsOy1tb3otYm94LWRpcmVjdGlvbjpub3JtYWw7ZmxleC1kaXJlY3Rpb246Y29sdW1uO2dhcDoxNnB4O21hcmdpbi1ibG9jay1zdGFydDoxMThweDstbW96LW1hcmdpbi1lbmQ6MThweDttYXJnaW4taW5saW5lLWVuZDoxOHB4fS5pM0I0R2N7ZGlzcGxheTpub25lO21hcmdpbi1ibG9jay1zdGFydDoxMThweDstbW96LW1hcmdpbi1zdGFydDoxOHB4O21hcmdpbi1pbmxpbmUtc3RhcnQ6MThweH0uZ3pybkp7Ym9yZGVyLXJhZGl1czo0cHg7YmxvY2stc2l6ZToyNHB4O2lubGluZS1zaXplOjI0cHg7bWFyZ2luOjEwcHh9LkxhWEpDZnstLWxvYWRpbmctYmFyLWRlbGF5OjIwMDBtcztwb3NpdGlvbjpyZWxhdGl2ZTtvdmVyZmxvdzpoaWRkZW59LkxhWEpDZntiYWNrZ3JvdW5kOnJnYmEoMjI4LDIzMSwyMzgsLjUpfS5oYjhrMnthbmltYXRpb246NC41cyBjdWJpYy1iZXppZXIoLjQsMCwuMiwxKSB2YXIoLS1sb2FkaW5nLWJhci1kZWxheSkgaW5maW5pdGUgbm9ybWFsIGJvdGggcnVubmluZyBnaG9zdC1sb2FkaW5nLXNsaWRlO3Bvc2l0aW9uOmFic29sdXRlO3RvcDowO2xlZnQ6MDtibG9jay1zaXplOjEwMCU7aW5saW5lLXNpemU6MzAwJX0uaGI4azJ7YmFja2dyb3VuZDpsaW5lYXItZ3JhZGllbnQoMTEwZGVnLHRyYW5zcGFyZW50LCNlNGU3ZWUgMjAlLCNmMmYzZjUgNTAlLCNlNGU3ZWUgODAlLHRyYW5zcGFyZW50KX1Aa2V5ZnJhbWVzIGdob3N0LWxvYWRpbmctc2xpZGV7MCV7dHJhbnNmb3JtOnRyYW5zbGF0ZVgoLTEwMCUpfXRve3RyYW5zZm9ybTp0cmFuc2xhdGVYKDUwJSl9fS53YjVaWmN7ZGlzcGxheTpub25lfS55NnVuc2Z7YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDYwLDY0LDY3LC4xKX1nLXJhaXNlZC1idXR0b24gLkZFSUhSZXtwYWRkaW5nOjB9LnBhOHlMe2N1cnNvcjpwb2ludGVyO3ZlcnRpY2FsLWFsaWduOm1pZGRsZX0uWmpjWFRle2NvbG9yOnJnYmEoMCwwLDAsLjU0KX0uT2hreE1ie2NvbG9yOnZhcigtLVRNWVM5KX0uc0xwdEFme3RyYW5zaXRpb246LjNzfS5zTHB0QWZ7Y29sb3I6I2ZmZn0uc0xwdEFmOmhvdmVye3RyYW5zaXRpb246LjNzfS5zTHB0QWY6aG92ZXJ7Y29sb3I6dmFyKC0tZ1ZVS2NkKX0uU0RrRVB7LW1vei1ib3gtZmxleDoxO2ZsZXg6MTtkaXNwbGF5Oi1tb3otYm94O2Rpc3BsYXk6ZmxleH0uU0RrRVB7YmFja2dyb3VuZDppbmhlcml0O2JvcmRlci1yYWRpdXM6aW5oZXJpdH0uU0RrRVB7cGFkZGluZzowIDhweCAwIDB9LkZQZG9MY3twYWRkaW5nLXRvcDoxOHB4fS5mSDJ0ViAuRlBkb0xje3Zpc2liaWxpdHk6aGlkZGVufS5NOEg4cGJ7cG9zaXRpb246YWJzb2x1dGU7dG9wOjA7bGVmdDowO3JpZ2h0OjA7cGFkZGluZzppbmhlcml0fS5NOEg4cGJ7d2lkdGg6aW5oZXJpdH0uQThTQndmLkJnUFByYyAuWFdyWUx7ZGlzcGxheTpibG9jazttYXJnaW4tcmlnaHQ6OHB4fS5BOFNCd2Z7bWFyZ2luOjAgYXV0b30uQThTQndme21heC13aWR0aDo2ODhweDttaW4td2lkdGg6Mjk1cHh9LkE4U0J3ZnttYXJnaW4tdG9wOjZweH0uQThTQndme3Bvc2l0aW9uOnJlbGF0aXZlfS5pYmxwY3tkaXNwbGF5Om5vbmV9LmlibHBjey1tb3otYm94LWFsaWduOmNlbnRlcjthbGlnbi1pdGVtczpjZW50ZXJ9LmlibHBje3BhZGRpbmctcmlnaHQ6MTNweH0uaWJscGN7cGFkZGluZy1sZWZ0OjE0cHh9LmlibHBje21hcmdpbi10b3A6MDtoZWlnaHQ6NTBweH0uc2pCaTljLnNqQmk5YzphZnRlcntjb250ZW50Om5vbmV9LmpyUVpJYi5qclFaSWIgaW1ne3dpZHRoOnVuc2V0O2hlaWdodDp1bnNldH0uSVJianNjIGltZ3twb3NpdGlvbjpyZWxhdGl2ZX0uTm5ucU1kIGltZ3tvYmplY3QtZml0OmNvdmVyfS5WZUJybmUgaW1ne29iamVjdC1maXQ6Y29udGFpbn0uWUlRQnAgaW1ne29iamVjdC1maXQ6ZmlsbH0ucTFNRzRle2hlaWdodDoxMDAlfS5ZUTRnYWZ7ZGlzcGxheTpibG9jaztib3JkZXI6MH0udTl3SDdkIC5ZUTRnYWZ7b2JqZWN0LWZpdDpmaWxsfS5tTnNJaGIgLllRNGdhZntvYmplY3QtZml0OmNvdmVyfS50YjA4UGQgLllRNGdhZntvYmplY3QtZml0OmNvbnRhaW59LndBMUJnZXtwb3NpdGlvbjpyZWxhdGl2ZX0uWkdvbUtme292ZXJmbG93OmhpZGRlbn0uTExPOHlke2JhY2tncm91bmQtY29sb3I6cmdiYSgwLDAsMCwwLjAzKTtwb3NpdGlvbjphYnNvbHV0ZTt0b3A6MDtib3R0b206MDtwb2ludGVyLWV2ZW50czpub25lO2xlZnQ6MDtyaWdodDowfS5kb2xqbXtkaXNwbGF5Om5vbmU7b3ZlcmZsb3c6aGlkZGVuO2JvcmRlci10b3AtcmlnaHQtcmFkaXVzOmluaGVyaXQ7Ym9yZGVyLXRvcC1sZWZ0LXJhZGl1czppbmhlcml0fS5kb2xqbTpoYXMoLkVnbXdhYiA6Zmlyc3QtY2hpbGQpe2Rpc3BsYXk6YmxvY2t9LkVnbXdhYntkaXNwbGF5Oi1tb3otYm94O2Rpc3BsYXk6ZmxleH0uRnFmdDR7bWFyZ2luLXRvcDoxOHB4O21hcmdpbi1ib3R0b206OHB4fS51MTZTcyAua0w2UWdke3RleHQtYWxpZ246c3RhcnQ7bWF4LXdpZHRoOi1tb3otbWF4LWNvbnRlbnQ7bWF4LXdpZHRoOm1heC1jb250ZW50fS50WDYxVWJ7ZGlzcGxheTotbW96LWJveDtkaXNwbGF5OmZsZXg7LW1vei1ib3gtYWxpZ246Y2VudGVyO2FsaWduLWl0ZW1zOmNlbnRlcjstbW96LWJveC1wYWNrOmNlbnRlcjtqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyO3Bvc2l0aW9uOnJlbGF0aXZlO3dpZHRoOjQ4cHg7aGVpZ2h0OjQ4cHg7bWFyZ2luLWxlZnQ6LTFweH0uS1dVWUFlIC5VYmJBV2UsLlViYkFXZTpob3ZlcntiYWNrZ3JvdW5kOiNGM0Y1RjZ9LlViYkFXZXstbW96LWJveC1hbGlnbjpjZW50ZXI7YWxpZ24taXRlbXM6Y2VudGVyO2JvcmRlci1yYWRpdXM6OTk5OXB4O2N1cnNvcjpwb2ludGVyO2Rpc3BsYXk6LW1vei1ib3g7ZGlzcGxheTpmbGV4O2NvbG9yOnZhcigtLVlMTk5IYyk7aGVpZ2h0OjM2cHg7LW1vei1ib3gtcGFjazpjZW50ZXI7anVzdGlmeS1jb250ZW50OmNlbnRlcjt3aWR0aDozNnB4fS5VYmJBV2V7cG9zaXRpb246cmVsYXRpdmU7ei1pbmRleDoyfS5vTUJ5eWZ7YmFja2dyb3VuZDojRkZGRkZGfS5vTUJ5eWZ7Ym94LXNoYWRvdzowcHggNHB4IDEycHggcmdiYSg2MCw2NCw2NywwLjI0KTtib3JkZXItcmFkaXVzOjE2cHg7ZGlzcGxheTpub25lO2xlZnQ6MDttaW4td2lkdGg6MjAwcHg7b3ZlcmZsb3c6aGlkZGVuO3BhZGRpbmc6OHB4IDA7cG9zaXRpb246YWJzb2x1dGU7dG9wOmNhbGMoMTAwJSAtIDJweCk7ei1pbmRleDoxfUBtZWRpYSAoZm9yY2VkLWNvbG9yczphY3RpdmUpey5vTUJ5eWZ7Ym9yZGVyOjFweCBzb2xpZCBCdXR0b25UZXh0fX0uS1dVWUFlIC5vTUJ5eWZ7ZGlzcGxheTpibG9ja30uRkhSdzlke2Rpc3BsYXk6LW1vei1ib3g7ZGlzcGxheTpmbGV4Oy1tb3otYm94LW9yaWVudDp2ZXJ0aWNhbDstbW96LWJveC1kaXJlY3Rpb246bm9ybWFsO2ZsZXgtZGlyZWN0aW9uOmNvbHVtbjtsaXN0LXN0eWxlLXR5cGU6bm9uZX0uZ1E2RENle2Rpc3BsYXk6Y29udGVudHM7bGlzdC1zdHlsZS10eXBlOm5vbmV9Lml6TjdJZnstbW96LWJveC1hbGlnbjpjZW50ZXI7YWxpZ24taXRlbXM6Y2VudGVyO2NvbG9yOnZhcigtLVlMTk5IYyk7Y3Vyc29yOnBvaW50ZXI7ZGlzcGxheTotbW96LWJveDtkaXNwbGF5OmZsZXg7Zm9udC1mYW1pbHk6dmFyKC0tcVI4WDApO2ZvbnQtb3B0aWNhbC1zaXppbmc6bm9uZTtmb250LXNpemU6dmFyKC0tTWhzN2RlKTtmb250LXdlaWdodDp2YXIoLS1vZndVQmMpO2dhcDo4cHg7bGluZS1oZWlnaHQ6dmFyKC0tWFd2MWlmKTtwYWRkaW5nOjZweCAxNnB4O3dpZHRoOjEwMCU7dGV4dC1hbGlnbjpzdGFydDttYXJnaW46MnB4IDB9Lml6TjdJZjpmb2N1czpub3QoOmRpc2FibGVkKSwuaXpON0lmOmhvdmVyOm5vdCg6ZGlzYWJsZWQpe2JhY2tncm91bmQ6I0YzRjVGNn0uaXpON0lmOmRpc2FibGVke2N1cnNvcjpkZWZhdWx0O29wYWNpdHk6LjQ7cG9pbnRlci1ldmVudHM6bm9uZTtiYWNrZ3JvdW5kLWNvbG9yOnRyYW5zcGFyZW50O2ZpbHRlcjpncmF5c2NhbGUoMTAwJSl9LndQU1pCZXtoZWlnaHQ6MjRweDt3aWR0aDoyNHB4fS53UFNaQmV7Y29sb3I6dmFyKC0tWUxOTkhjKX0uakpCUUZ7ZGlzcGxheTpibG9jaztib3JkZXItdG9wOjFweCBzb2xpZCB2YXIoLS1tWFprcWMpO21hcmdpbjo0cHggMH0uaDhiQld7Y29sb3I6dmFyKC0tWUxOTkhjKTtmb250LWZhbWlseTp2YXIoLS1xUjhYMCk7Zm9udC1zaXplOnZhcigtLWdPczZCZik7Zm9udC13ZWlnaHQ6dmFyKC0tTXpLQnBkKTtsaW5lLWhlaWdodDp2YXIoLS1wdW5abGMpO3BhZGRpbmc6NnB4IDE2cHggMnB4fS5pek43SWYgLmJnTTVFZXtwb3NpdGlvbjphYnNvbHV0ZTtyaWdodDoxNHB4O2Rpc3BsYXk6bm9uZX0uRkpjY0dke2ZvbnQtd2VpZ2h0OjUwMH0uaXpON0lmLkZKY2NHZCAuYmdNNUVle2Rpc3BsYXk6YmxvY2t9LkZKQ0pmZHtib3JkZXI6bm9uZTtib3gtc2hhZG93OjBweCAxcHggM3B4IHJnYmEoNjAsNjQsNjcsMC4yNCl9LkFwSHlUYntmb250LWZhbWlseTp2YXIoLS1ZZmlLZik7Zm9udC1zaXplOnZhcigtLWdPczZCZik7bGluZS1oZWlnaHQ6dmFyKC0tcHVuWmxjKTtsZXR0ZXItc3BhY2luZzowfS5PTk5ZZWV7Ym9yZGVyOjA7Ym94LXNoYWRvdzowcHggNHB4IDEycHggcmdiYSg2MCw2NCw2NywwLjI0KX1AcHJvcGVydHkgLS1haW0tYnV0dG9uLWdyYWRpZW50LXN0YXJ0e3N5bnRheDoiPGNvbG9yPiI7aW5pdGlhbC12YWx1ZTp0cmFuc3BhcmVudDtpbmhlcml0czpmYWxzZX1AcHJvcGVydHkgLS1haW0tYnV0dG9uLWdyYWRpZW50LWVuZHtzeW50YXg6Ijxjb2xvcj4iO2luaXRpYWwtdmFsdWU6dHJhbnNwYXJlbnQ7aW5oZXJpdHM6ZmFsc2V9QG1lZGlhIChmb3JjZWQtY29sb3JzOmFjdGl2ZSl7LnBsUjVxYntib3JkZXI6MXB4IHNvbGlkIENhbnZhc1RleHR9fS5Cem5URmV7LS1CZ0hEamI6MjRweDstLWJGbHJPYjo1cHg7LS1zamRBY2U6NzstLW1XdXM0YjoxLjU7LS1ITTYzVGM6MDtwb3NpdGlvbjphYnNvbHV0ZTtpbnNldDowO2JvcmRlci1yYWRpdXM6dmFyKC0tQmdIRGpiKTtwb2ludGVyLWV2ZW50czpub25lO3otaW5kZXg6MDtvdmVyZmxvdzp2aXNpYmxlO3dpbGwtY2hhbmdlOmhlaWdodDt0cmFuc2l0aW9uOmhlaWdodCAuMTVzfS5mWmhOTWV7LS1jcWNqejowZGVnOy0tcTluaUdlOjBkZWc7cG9zaXRpb246YWJzb2x1dGU7aW5zZXQ6MDtib3JkZXItcmFkaXVzOmluaGVyaXQ7b3BhY2l0eTowO3dpbGwtY2hhbmdlOi0tcTluaUdlLC0tY3Fjanosb3BhY2l0eX0uV2tNWUlie3Bvc2l0aW9uOmFic29sdXRlO2luc2V0OjA7Ym9yZGVyLXJhZGl1czppbmhlcml0fS5lcnVNY2N7aW5zZXQ6dmFyKC0tSE02M1RjLDApO3Bvc2l0aW9uOmFic29sdXRlO2JvcmRlci1yYWRpdXM6aW5oZXJpdDtvdmVyZmxvdzpoaWRkZW47YmFja2ZhY2UtdmlzaWJpbGl0eTpoaWRkZW47dHJhbnNmb3JtOnRyYW5zbGF0ZVooMCk7ZmlsdGVyOmJsdXIodmFyKC0tYkZsck9iLDVweCkpfS5lT3VId2UuZXJ1TWNje2ZpbHRlcjpibHVyKDFweCl9LlRkYWh1ZHtpbnNldDowO3Bvc2l0aW9uOmFic29sdXRlO2JvcmRlci1yYWRpdXM6aW5oZXJpdDttYXNrLWltYWdlOmNvbmljLWdyYWRpZW50KGZyb20gdmFyKC0tcTluaUdlKSx0cmFuc3BhcmVudCAwLHRyYW5zcGFyZW50IDUwJSxibGFjayA2OCUsYmxhY2sgNzUlLHRyYW5zcGFyZW50IDg5JSksY29uaWMtZ3JhZGllbnQoZnJvbSB2YXIoLS1xOW5pR2UpLGJsYWNrIDMwJSx0cmFuc3BhcmVudCA1MCUsYmxhY2sgNzAlKTtzY2FsZTp2YXIoLS1zamRBY2UsNykgdmFyKC0tbVd1czRiLDEuNSk7bWFzay1jb21wb3NpdGU6aW50ZXJzZWN0fS5lT3VId2UgLlRkYWh1ZHttYXNrLWltYWdlOmNvbmljLWdyYWRpZW50KGZyb20gdmFyKC0tcTluaUdlKSx0cmFuc3BhcmVudCAwLHRyYW5zcGFyZW50IDYyJSxibGFjayA4MiUsdHJhbnNwYXJlbnQgODklKSxjb25pYy1ncmFkaWVudChmcm9tIHZhcigtLXE5bmlHZSksYmxhY2sgMzAlLHRyYW5zcGFyZW50IDUwJSxibGFjayA3MCUpfS50Z1Bqc2V7aW5zZXQ6MDtwb3NpdGlvbjphYnNvbHV0ZTtib3JkZXItcmFkaXVzOjUwJTtiYWNrZ3JvdW5kOmNvbmljLWdyYWRpZW50KCMzMTg2ZmYgMzQlLCM5Mzc4ZmYgMzclLCNmOTZiZDYgMzklLCNmYzQxM2QgNDElLCNmYzQxM2QgNDglLCNmZjZiMmIgNTAlLCNmZWM3MDAgNTIlLCNmZmRiMGYgNTYlLCM4OGRlNDIgNTglLCMwZWJjNWYgNjElLCMwZWJjNWYgNjUlLCMyZWFhYjIgNzAlLCMwMGE5YmIgNzIlLCMzMTg2ZmYgNzMlLCMzMTg2ZmYgODMlLCMzMTg2ZmYgMTAwJSk7YXNwZWN0LXJhdGlvOjEvMTt0cmFuc2xhdGU6MCAtNTAlO2luc2V0LWJsb2NrLXN0YXJ0OjUwJTtyb3RhdGU6dmFyKC0tY3FjanopO2JhY2tmYWNlLXZpc2liaWxpdHk6aGlkZGVuO3RyYW5zZm9ybTp0cmFuc2xhdGVaKDApfS5pUHRxRGZ7ZGlzcGxheTppbmxpbmUtYmxvY2shaW1wb3J0YW50fS5ieWI0TWR7ZGlzcGxheTotbW96LWlubGluZS1ib3g7ZGlzcGxheTppbmxpbmUtZmxleDstbW96LWJveC1wYWNrOmNlbnRlcjtqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyOy1tb3otYm94LWFsaWduOmNlbnRlcjthbGlnbi1pdGVtczpjZW50ZXI7YWxpZ24tc2VsZjpjZW50ZXI7cG9zaXRpb246cmVsYXRpdmU7Y3Vyc29yOnBvaW50ZXI7d2lkdGg6NDBweDtoZWlnaHQ6NDBweDtib3JkZXI6MnB4IHNvbGlkIHRyYW5zcGFyZW50O2JvcmRlci1yYWRpdXM6OTk5OXB4Oy1tb3otYm94LXNpemluZzpib3JkZXItYm94O2JveC1zaXppbmc6Ym9yZGVyLWJveDtvdXRsaW5lLW9mZnNldDoycHg7YmFja2dyb3VuZC1jbGlwOnBhZGRpbmctYm94fS5ieWI0TWR7YmFja2dyb3VuZC1jb2xvcjojMEI1MEQwfS5ieWI0TWQ6YmVmb3Jle2NvbnRlbnQ6IiI7cG9zaXRpb246YWJzb2x1dGU7d2lkdGg6MTAwJTtoZWlnaHQ6MTAwJTtwb2ludGVyLWV2ZW50czpub25lO2JvcmRlci1yYWRpdXM6OTk5OXB4fS5ieWI0TWQ6YmVmb3Jle29wYWNpdHk6MDtiYWNrZ3JvdW5kLWNvbG9yOiNFOUVCRjB9LmJ5YjRNZDpob3ZlcjpiZWZvcmV7b3BhY2l0eTowLjA4MjR9LmJ5YjRNZFtkaXNhYmxlZF17b3BhY2l0eTouNDtwb2ludGVyLWV2ZW50czpub25lfS5MQUpDT2N7Y29sb3I6I2ZmZn0uSmd6cVlke2ZvbnQtZmFtaWx5Okdvb2dsZSBTYW5zLEFyaWFsLHNhbnMtc2VyaWY7Zm9udC1zaXplOjI4cHg7bGluZS1oZWlnaHQ6MzZweH0uUHFrbjJle2ZvbnQtZmFtaWx5OnZhcigtLW5rbVFPZSk7Zm9udC1zaXplOnZhcigtLXozQkZJZSk7bGluZS1oZWlnaHQ6dmFyKC0tYTlYMEpjKX0uWndSaEpke2ZvbnQtZmFtaWx5OnZhcigtLWxJMVRyYyk7Zm9udC1zaXplOnZhcigtLVpOZzg4KTtsaW5lLWhlaWdodDp2YXIoLS1ISXlFS2MpfS5NQmV1T3tmb250LXNpemU6dmFyKC0tR2lUb0pmKX0uTUJldU97Zm9udC13ZWlnaHQ6dmFyKC0tcDJMcXhlKX0uTUJldU97Zm9udC1mYW1pbHk6dmFyKC0tRW91OFljKX0uTUJldU97bGluZS1oZWlnaHQ6dmFyKC0tcVdaWUVjKX0uUkVTOWpme2NvbG9yOnZhcigtLVlMTk5IYyl9LlpZSFE3ZXtjb2xvcjp2YXIoLS1JWG94VWUpfS5HUzVyUmR7Y29sb3I6dmFyKC0tSktxeDIpfS5HUzVyUmQ6dmlzaXRlZHtjb2xvcjojNjgxZGE4fS5pd1kxTWJ7aGVpZ2h0OjA7d2lkdGg6MDtvcGFjaXR5OjA7ZGlzcGxheTpibG9ja30uVjhmV0h7Ym9yZGVyOjA7Y2xpcDpyZWN0KDAgMCAwIDApO2NsaXAtcGF0aDpwb2x5Z29uKDAgMCwwIDAsMCAwKTtoZWlnaHQ6MXB4O21hcmdpbjotMXB4O292ZXJmbG93OmhpZGRlbjtwYWRkaW5nOjA7cG9zaXRpb246YWJzb2x1dGU7d2lkdGg6MXB4O3doaXRlLXNwYWNlOm5vd3JhcDstbW96LWFwcGVhcmFuY2U6bm9uZTthcHBlYXJhbmNlOm5vbmU7ei1pbmRleDotMTAwMDstbW96LXVzZXItc2VsZWN0Om5vbmU7dXNlci1zZWxlY3Q6bm9uZX0uZ1c3elNje2Rpc3BsYXk6YmxvY2t9LnI4cVdHe2Rpc3BsYXk6LXdlYmtpdC1ib3g7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7d2hpdGUtc3BhY2U6bm9ybWFsIWltcG9ydGFudDstd2Via2l0LWJveC1vcmllbnQ6dmVydGljYWx9LmFBSmJDZXtkaXNwbGF5Oi13ZWJraXQtYm94O292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO3doaXRlLXNwYWNlOm5vcm1hbCFpbXBvcnRhbnQ7LXdlYmtpdC1ib3gtb3JpZW50OnZlcnRpY2FsfUBtZWRpYSAobWF4LXdpZHRoOjM2MHB4KXsuYUFKYkNle3dvcmQtYnJlYWs6YnJlYWstd29yZCFpbXBvcnRhbnQ7LXdlYmtpdC1saW5lLWNsYW1wOjUhaW1wb3J0YW50fX0uYUFKYkNlLk5jY1NIY3t3b3JkLWJyZWFrOmJyZWFrLXdvcmQhaW1wb3J0YW50Oy13ZWJraXQtbGluZS1jbGFtcDo1IWltcG9ydGFudH0uSkdEMnJke2Rpc3BsYXk6LXdlYmtpdC1ib3g7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7d2hpdGUtc3BhY2U6bm9ybWFsIWltcG9ydGFudDstd2Via2l0LWJveC1vcmllbnQ6dmVydGljYWx9QG1lZGlhIChtYXgtd2lkdGg6MzYwcHgpey5KR0QycmR7d29yZC1icmVhazpicmVhay13b3JkIWltcG9ydGFudDstd2Via2l0LWxpbmUtY2xhbXA6MyFpbXBvcnRhbnR9fS5KR0QycmQuTmNjU0hje3dvcmQtYnJlYWs6YnJlYWstd29yZCFpbXBvcnRhbnQ7LXdlYmtpdC1saW5lLWNsYW1wOjMhaW1wb3J0YW50fUBrZXlmcmFtZXMgc2hhcGUtdHdlZW4tZG93bns1MCV7dHJhbnNmb3JtOnNjYWxlWCguOSkgdHJhbnNsYXRlWSg4JSl9dG97dHJhbnNmb3JtOm5vbmV9fS5DcW1QUmU6YWN0aXZlIC5URDVGUWUgc3BhbnthbmltYXRpb24tbmFtZTpzaGFwZS10d2Vlbi1kb3dufUBrZXlmcmFtZXMgc2hhcGUtdHdlZW4tbGVmdHs1MCV7dHJhbnNmb3JtOnNjYWxlWSguOSkgdHJhbnNsYXRlWCgtOCUpfXRve3RyYW5zZm9ybTpub25lfX0uQ3FtUFJlOmFjdGl2ZSAuWWJDcnpkIHNwYW57YW5pbWF0aW9uLW5hbWU6c2hhcGUtdHdlZW4tbGVmdH1Aa2V5ZnJhbWVzIHNoYXBlLXR3ZWVuLXJpZ2h0ezUwJXt0cmFuc2Zvcm06c2NhbGVZKC45KSB0cmFuc2xhdGVYKDglKX10b3t0cmFuc2Zvcm06bm9uZX19LkNxbVBSZTphY3RpdmUgLktBckp1YyBzcGFue2FuaW1hdGlvbi1uYW1lOnNoYXBlLXR3ZWVuLXJpZ2h0fUBrZXlmcmFtZXMgc2hhcGUtdHdlZW4tdXB7NTAle3RyYW5zZm9ybTpzY2FsZVgoLjkpIHRyYW5zbGF0ZVkoLTglKX10b3t0cmFuc2Zvcm06bm9uZX19LkNxbVBSZTphY3RpdmUgLm9YcVp4YyBzcGFue2FuaW1hdGlvbi1uYW1lOnNoYXBlLXR3ZWVuLXVwfS5DcW1QUmU6YWN0aXZlIC5hVmxUcGMgc3BhbnthbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOmN1YmljLWJlemllciguMiwuMiwwLDEpO2FuaW1hdGlvbi1kdXJhdGlvbjouNXN9LkFhamQze3BhZGRpbmctbGVmdDoxNnB4fS5VMDlKeGR7cGFkZGluZy1yaWdodDo0cHh9LlF5SkkzZHtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLXhoVUd3Yyk7Y29sb3I6IzY2Njtib3gtc2hhZG93OjAgNHB4IDE2cHggcmdiYSgwLDAsMCwwLjIpfS5vUWNQdHtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLXhoVUd3Yyl9LlF5SkkzZHtib3JkZXI6MXB4IHNvbGlkIHJnYmEoMCwwLDAsLjIpO3Bvc2l0aW9uOmFic29sdXRlO3otaW5kZXg6OTEyMH0ubkZkRkhme2FuaW1hdGlvbjpnLWJ1YmJsZS1zaG93IC4ycyBmb3J3YXJkc30uYkUzS2lme2FuaW1hdGlvbjpnLWJ1YmJsZS1oaWRlIC4ycyBmb3J3YXJkc31Aa2V5ZnJhbWVzIGctYnViYmxlLXNob3d7MCV7b3BhY2l0eTowfXRve29wYWNpdHk6MX19QGtleWZyYW1lcyBnLWJ1YmJsZS1oaWRlezAle29wYWNpdHk6MX10b3tvcGFjaXR5OjB9fS5ReUpJM2QuUUpub3ple2JvcmRlci1yYWRpdXM6MTJweH0uUXlKSTNkLlNpT2pKYntib3JkZXItbGVmdC13aWR0aDowO2JvcmRlci1yaWdodC13aWR0aDowO3dpZHRoOjEwMCV9LlF5SkkzZC5QblFNaWV7YmFja2dyb3VuZC1jb2xvcjojMWYxZjFmO2JvcmRlcjoxcHggc29saWQgcmdiYSgwLDAsMCwuNSk7Y29sb3I6I2RhZGNlMH0uUXlKSTNkLkxXZW41Y3tiYWNrZ3JvdW5kLWNvbG9yOiMxYTczZTg7Ym9yZGVyOm5vbmU7Y29sb3I6I2ZmZjt6LWluZGV4OjkxMDB9LnRZbWZ4ZXt0cmFuc2Zvcm06dHJhbnNsYXRlKDIuNXB4LDEuOHB4KSByb3RhdGUoNDVkZWcpO3Bvc2l0aW9uOmFic29sdXRlO3otaW5kZXg6OTEyMX1bZGlyPXJ0bF0gLnRZbWZ4ZXt0cmFuc2Zvcm06dHJhbnNsYXRlKC0yLjVweCwxLjhweCkgcm90YXRlKDQ1ZGVnKX0uSUJQWnUudFltZnhle3RyYW5zZm9ybTp0cmFuc2xhdGUoMi41cHgsLTUuN3B4KSByb3RhdGUoNDVkZWcpfVtkaXI9cnRsXSAuSUJQWnUudFltZnhle3RyYW5zZm9ybTp0cmFuc2xhdGUoLTIuNXB4LC01LjdweCkgcm90YXRlKDQ1ZGVnKX0ub1FjUHR7Ym9yZGVyLWJvdHRvbTpub25lO2JvcmRlci1sZWZ0OjFweCBzb2xpZCByZ2JhKDAsMCwwLC4yKTtib3JkZXItcmlnaHQ6bm9uZTtib3JkZXItdG9wOjFweCBzb2xpZCByZ2JhKDAsMCwwLC4yKTstbW96LWJveC1zaXppbmc6Ym9yZGVyLWJveDtib3gtc2l6aW5nOmJvcmRlci1ib3g7aGVpZ2h0OjEzLjQzNXB4O3dpZHRoOjEzLjQzNXB4fS5JQlBadSAub1FjUHR7Ym9yZGVyLWJvdHRvbToxcHggc29saWQgcmdiYSgwLDAsMCwuMik7Ym9yZGVyLWxlZnQ6bm9uZTtib3JkZXItcmlnaHQ6MXB4IHNvbGlkIHJnYmEoMCwwLDAsLjIpO2JvcmRlci10b3A6bm9uZX0uUG5RTWllIC5vUWNQdHtiYWNrZ3JvdW5kLWNvbG9yOiMxZjFmMWY7Ym9yZGVyLWNvbG9yOnJnYmEoMCwwLDAsLjUpfS5MV2VuNWMgLm9RY1B0e2JhY2tncm91bmQtY29sb3I6IzFhNzNlODtib3JkZXI6bm9uZX0ubm5GR3Vme2Rpc3BsYXk6bm9uZX0uYzVhWlBie2N1cnNvcjpwb2ludGVyfS5EY2x0cmV7cG9pbnRlci1ldmVudHM6bm9uZX0uVFlROEFme2NsaXA6cmVjdCgxcHgsMXB4LDFweCwxcHgpO2hlaWdodDoxcHg7b3ZlcmZsb3c6aGlkZGVuO3Bvc2l0aW9uOmFic29sdXRlO3doaXRlLXNwYWNlOm5vd3JhcDt3aWR0aDoxcHg7ei1pbmRleDotMTAwMDt0b3A6M3B4O3JpZ2h0OjNweH0ubVdjZjBle2N1cnNvcjpwb2ludGVyfUBtZWRpYSAoZm9yY2VkLWNvbG9yczphY3RpdmUpey5DTmJQbmN7YmFja2dyb3VuZC1jb2xvcjpCdXR0b25GYWNlO2JvcmRlcjoxcHggc29saWQgdHJhbnNwYXJlbnQ7Ym9yZGVyLWNvbG9yOkJ1dHRvbkJvcmRlcjtjb2xvcjpCdXR0b25UZXh0fX0uVmZMMll7cG9zaXRpb246cmVsYXRpdmU7fS5ZUXBYOWR7Y3Vyc29yOnBvaW50ZXI7cG9zaXRpb246cmVsYXRpdmU7fS5MUlp3dWN7ZGlzcGxheTppbmxpbmUtYmxvY2t9LkJKMUlyZCAuTFJad3Vje2Rpc3BsYXk6YmxvY2t9Lm5LSHlUY3tjb2xvcjp2YXIoLS1JWG94VWUpO2Zsb2F0OnJpZ2h0O2ZvbnQtc2l6ZTp2YXIoLS1nT3M2QmYpO2xpbmUtaGVpZ2h0OnZhcigtLXB1blpsYyk7cGFkZGluZy1ib3R0b206NHB4fS5lREdxTmR7Y29sb3I6dmFyKC0tSVhveFVlKTtmbG9hdDpyaWdodDtmb250LXNpemU6dmFyKC0tZ09zNkJmKTtsaW5lLWhlaWdodDp2YXIoLS1wdW5abGMpfS5CSjFJcmQsLms2MmdqYiAuVzdHQ29jOmhvdmVyLC5rNjJnamI6aG92ZXJ7dGV4dC1kZWNvcmF0aW9uOnVuZGVybGluZX1nLWRyb3Bkb3duLW1lbnV7ZGlzcGxheTppbmxpbmUtYmxvY2s7cG9zaXRpb246cmVsYXRpdmV9LkpiMFppZiBnLWRyb3Bkb3duLW1lbnV7dmVydGljYWwtYWxpZ246bWlkZGxlfS5XTk4xYntiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLXhoVUd3Yyl9LmFkR042W2Rpc2FibGVkXXtwb2ludGVyLWV2ZW50czpub25lO2N1cnNvcjpkZWZhdWx0O2JhY2tncm91bmQtY29sb3I6dmFyKC0tWWFJZU1iKX0ucjJmam1ke21hcmdpbi1ib3R0b206MHB4O21hcmdpbi10b3A6MHB4fS5XNFhxTntjdXJzb3I6cG9pbnRlcjtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLXhoVUd3Yyl9LkdLWFdWe2JvcmRlci10b3A6dmFyKC0tbVhaa3FjKTtoZWlnaHQ6MDttYXJnaW4tbGVmdDo1cHg7bWFyZ2luLXJpZ2h0OjVweH0uZU5Sd3lme2hlaWdodDoxMDAlO3dpZHRoOjEwMCV9LmpiQkl0ZntkaXNwbGF5OmJsb2NrO3Bvc2l0aW9uOnJlbGF0aXZlfS5EVTBOSntib3R0b206MDtsZWZ0OjA7cG9zaXRpb246YWJzb2x1dGU7cmlnaHQ6MDt0b3A6MH0ubFAzSm9me2Rpc3BsYXk6aW5saW5lLWJsb2NrO3Bvc2l0aW9uOnJlbGF0aXZlfS5uTk11T2R7YW5pbWF0aW9uOnFsaS1jb250YWluZXItcm90YXRlIDE1NjguMjM1Mjk0MTE3Nm1zIGxpbmVhciBpbmZpbml0ZX1Aa2V5ZnJhbWVzIHFsaS1jb250YWluZXItcm90YXRlezAle3RyYW5zZm9ybTpyb3RhdGUoMCl9dG97dHJhbnNmb3JtOnJvdGF0ZSgxdHVybil9fS5Sb0ttaGJ7aGVpZ2h0OjEwMCU7b3BhY2l0eTowO3Bvc2l0aW9uOmFic29sdXRlO3dpZHRoOjEwMCV9Lm5OTXVPZCAuVlFkZWFie2FuaW1hdGlvbjpxbGktZmlsbC11bmZpbGwtcm90YXRlIDUzMzJtcyBjdWJpYy1iZXppZXIoMC40LDAsMC4yLDEpIGluZmluaXRlIGJvdGgscWxpLWJsdWUtZmFkZS1pbi1vdXQgNTMzMm1zIGN1YmljLWJlemllcigwLjQsMCwwLjIsMSkgaW5maW5pdGUgYm90aH0ubk5NdU9kIC5JRXFpQWZ7YW5pbWF0aW9uOnFsaS1maWxsLXVuZmlsbC1yb3RhdGUgNTMzMm1zIGN1YmljLWJlemllcigwLjQsMCwwLjIsMSkgaW5maW5pdGUgYm90aCxxbGktcmVkLWZhZGUtaW4tb3V0IDUzMzJtcyBjdWJpYy1iZXppZXIoMC40LDAsMC4yLDEpIGluZmluaXRlIGJvdGh9Lm5OTXVPZCAuc21vY3Nle2FuaW1hdGlvbjpxbGktZmlsbC11bmZpbGwtcm90YXRlIDUzMzJtcyBjdWJpYy1iZXppZXIoMC40LDAsMC4yLDEpIGluZmluaXRlIGJvdGgscWxpLXllbGxvdy1mYWRlLWluLW91dCA1MzMybXMgY3ViaWMtYmV6aWVyKDAuNCwwLDAuMiwxKSBpbmZpbml0ZSBib3RofS5uTk11T2QgLkZsS2JDZXthbmltYXRpb246cWxpLWZpbGwtdW5maWxsLXJvdGF0ZSA1MzMybXMgY3ViaWMtYmV6aWVyKDAuNCwwLDAuMiwxKSBpbmZpbml0ZSBib3RoLHFsaS1ncmVlbi1mYWRlLWluLW91dCA1MzMybXMgY3ViaWMtYmV6aWVyKDAuNCwwLDAuMiwxKSBpbmZpbml0ZSBib3RofS5CU25MYiAubk5NdU9kIC5Sb0ttaGJ7YW5pbWF0aW9uOnFsaS1maWxsLXVuZmlsbC1yb3RhdGUgNTMzMm1zIGN1YmljLWJlemllcigwLjQsMCwwLjIsMSkgaW5maW5pdGUgYm90aDtvcGFjaXR5OjAuOTl9QGtleWZyYW1lcyBxbGktZmlsbC11bmZpbGwtcm90YXRlezAle3RyYW5zZm9ybTpyb3RhdGUoMCl9MTIuNSV7dHJhbnNmb3JtOnJvdGF0ZSgxMzVkZWcpfTI1JXt0cmFuc2Zvcm06cm90YXRlKDI3MGRlZyl9MzcuNSV7dHJhbnNmb3JtOnJvdGF0ZSg0MDVkZWcpfTUwJXt0cmFuc2Zvcm06cm90YXRlKDU0MGRlZyl9NjIuNSV7dHJhbnNmb3JtOnJvdGF0ZSg2NzVkZWcpfTc1JXt0cmFuc2Zvcm06cm90YXRlKDgxMGRlZyl9ODcuNSV7dHJhbnNmb3JtOnJvdGF0ZSg5NDVkZWcpfXRve3RyYW5zZm9ybTpyb3RhdGUoM3R1cm4pfX1Aa2V5ZnJhbWVzIHFsaS1ibHVlLWZhZGUtaW4tb3V0ezAle29wYWNpdHk6MC45OX0yNSV7b3BhY2l0eTowLjk5fTI2JXtvcGFjaXR5OjB9ODkle29wYWNpdHk6MH05MCV7b3BhY2l0eTowLjk5fXRve29wYWNpdHk6MC45OX19QGtleWZyYW1lcyBxbGktcmVkLWZhZGUtaW4tb3V0ezAle29wYWNpdHk6MH0xNSV7b3BhY2l0eTowfTI1JXtvcGFjaXR5OjAuOTl9NTAle29wYWNpdHk6MC45OX01MSV7b3BhY2l0eTowfX1Aa2V5ZnJhbWVzIHFsaS15ZWxsb3ctZmFkZS1pbi1vdXR7MCV7b3BhY2l0eTowfTQwJXtvcGFjaXR5OjB9NTAle29wYWNpdHk6MC45OX03NSV7b3BhY2l0eTowLjk5fTc2JXtvcGFjaXR5OjB9fUBrZXlmcmFtZXMgcWxpLWdyZWVuLWZhZGUtaW4tb3V0ezAle29wYWNpdHk6MH02NSV7b3BhY2l0eTowfTc1JXtvcGFjaXR5OjAuOTl9OTAle29wYWNpdHk6MC45OX10b3tvcGFjaXR5OjB9fS5iZURRUHtkaXNwbGF5OmlubGluZS1ibG9jaztoZWlnaHQ6MTAwJTtvdmVyZmxvdzpoaWRkZW47cG9zaXRpb246cmVsYXRpdmU7d2lkdGg6NTAlfS5GY1hmaXstbW96LWJveC1zaXppbmc6Ym9yZGVyLWJveDtib3gtc2l6aW5nOmJvcmRlci1ib3g7aGVpZ2h0OjEwMCU7bGVmdDo0NSU7b3ZlcmZsb3c6aGlkZGVuO3Bvc2l0aW9uOmFic29sdXRlO3RvcDowO3dpZHRoOjEwJX0uU1BLRm1je2JvcmRlci1yYWRpdXM6NTAlO2JvcmRlcjozcHggc29saWQgdHJhbnNwYXJlbnQ7LW1vei1ib3gtc2l6aW5nOmJvcmRlci1ib3g7Ym94LXNpemluZzpib3JkZXItYm94fUBtZWRpYSAoZm9yY2VkLWNvbG9yczphY3RpdmUpLChwcmVmZXJzLWNvbnRyYXN0Om1vcmUpey5iZURRUDpsYXN0LWNoaWxkIC5TUEtGbWN7Ym9yZGVyOm5vbmV9fS54M1NkWGR7d2lkdGg6MjAwJX0uSjd1dVVle3RyYW5zZm9ybTpyb3RhdGUoMTI5ZGVnKX0uc0RQSUN7bGVmdDotMTAwJTt0cmFuc2Zvcm06cm90YXRlKC0xMjlkZWcpfS50UzNQNXtsZWZ0Oi00NTAlO3dpZHRoOjEwMDAlfS5WUWRlYWIgLlNQS0ZtY3tib3JkZXItY29sb3I6IzQyODVmNH0uSUVxaUFmIC5TUEtGbWN7Ym9yZGVyLWNvbG9yOiNlYTQzMzV9LnNtb2NzZSAuU1BLRm1je2JvcmRlci1jb2xvcjojZmJiYzA0fS5GbEtiQ2UgLlNQS0ZtY3tib3JkZXItY29sb3I6IzM0YTg1M30uUm9LbWhiIC5KN3V1VWV7Ym9yZGVyLWJvdHRvbS1jb2xvcjp0cmFuc3BhcmVudDtib3JkZXItcmlnaHQtY29sb3I6dHJhbnNwYXJlbnR9LlJvS21oYiAuc0RQSUN7Ym9yZGVyLWJvdHRvbS1jb2xvcjp0cmFuc3BhcmVudDtib3JkZXItbGVmdC1jb2xvcjp0cmFuc3BhcmVudH0uUm9LbWhiIC50UzNQNXtib3JkZXItYm90dG9tLWNvbG9yOnRyYW5zcGFyZW50fS5HZ1RKV2UgLm5OTXVPZCAuSjd1dVVle2FuaW1hdGlvbjpxbGktbGVmdC1zcGluIDEzMzNtcyBjdWJpYy1iZXppZXIoMC40LDAsMC4yLDEpIGluZmluaXRlIGJvdGh9LkdnVEpXZSAubk5NdU9kIC5zRFBJQ3thbmltYXRpb246cWxpLXJpZ2h0LXNwaW4gMTMzM21zIGN1YmljLWJlemllcigwLjQsMCwwLjIsMSkgaW5maW5pdGUgYm90aH0uQlNuTGIgLm5OTXVPZCAuSjd1dVVle2FuaW1hdGlvbjpxbGktbGVmdC1zcGluIDEzMzNtcyBjdWJpYy1iZXppZXIoMC40LDAsMC4yLDEpIGluZmluaXRlIGJvdGg7Ym9yZGVyLWxlZnQtY29sb3I6dmFyKC0tRXBGTlcpO2JvcmRlci10b3AtY29sb3I6dmFyKC0tRXBGTlcpfS5CU25MYiAubk5NdU9kIC5zRFBJQ3thbmltYXRpb246cWxpLXJpZ2h0LXNwaW4gMTMzM21zIGN1YmljLWJlemllcigwLjQsMCwwLjIsMSkgaW5maW5pdGUgYm90aDtib3JkZXItcmlnaHQtY29sb3I6dmFyKC0tRXBGTlcpO2JvcmRlci10b3AtY29sb3I6dmFyKC0tRXBGTlcpfS5CU25MYiAubk5NdU9kIC50UzNQNXtib3JkZXItY29sb3I6dmFyKC0tRXBGTlcpO2JvcmRlci1ib3R0b20tY29sb3I6dHJhbnNwYXJlbnR9QGtleWZyYW1lcyBxbGktbGVmdC1zcGluezAle3RyYW5zZm9ybTpyb3RhdGUoMTMwZGVnKX01MCV7dHJhbnNmb3JtOnJvdGF0ZSgtNWRlZyl9dG97dHJhbnNmb3JtOnJvdGF0ZSgxMzBkZWcpfX1Aa2V5ZnJhbWVzIHFsaS1yaWdodC1zcGluezAle3RyYW5zZm9ybTpyb3RhdGUoLTEzMGRlZyl9NTAle3RyYW5zZm9ybTpyb3RhdGUoNWRlZyl9dG97dHJhbnNmb3JtOnJvdGF0ZSgtMTMwZGVnKX19LkFUMjliYiAuYnRrdTViLmJ0a3U1Yi5idGt1NWIuYnRrdTViOm5vdChbc2VsZWN0ZWRdKSAubmlPNHV7Y29sb3I6I2E4YzdmYX0uaE9iQWNje21hcmdpbi1sZWZ0OjRweDttYXJnaW4tcmlnaHQ6NHB4fS5nVGV3YntwYWRkaW5nLWxlZnQ6OHB4O3BhZGRpbmctcmlnaHQ6OHB4fS5IZzNOTy5mMkhLR2M6aG92ZXIsLkhnM05PLmhpUVJRYzpob3ZlcntiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjYsMTE1LDIzMiwwLjA4KX0udGhzWlhje2JhY2tncm91bmQ6IzFhNzNlOH0uaGlRUlFje2JhY2tncm91bmQ6I2U4ZWFlZH0uQmIxSktle3BhZGRpbmctYm90dG9tOjhweH0ub3V5N01je3BhZGRpbmctbGVmdDoxNnB4O3BhZGRpbmctcmlnaHQ6MTZweH0uTThDRWVke3BhZGRpbmctdG9wOjEycHh9LnoxYXNDZXtkaXNwbGF5OmlubGluZS1ibG9jaztmaWxsOmN1cnJlbnRDb2xvcjtoZWlnaHQ6MjRweDtsaW5lLWhlaWdodDoyNHB4O3Bvc2l0aW9uOnJlbGF0aXZlO3dpZHRoOjI0cHh9LnoxYXNDZSBzdmd7ZGlzcGxheTpibG9jaztoZWlnaHQ6MTAwJTt3aWR0aDoxMDAlfTwvc3R5bGU+IDwvaGVhZD48Ym9keSBqc21vZGVsPSJoc3BERGYgIj48c2NyaXB0IG5vbmNlPSJZT3lISDNsdE9tRDlCb3lfWkJ5QWxRIj4oZnVuY3Rpb24oKXsvKgoKIENvcHlyaWdodCBUaGUgQ2xvc3VyZSBMaWJyYXJ5IEF1dGhvcnMuCiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMAoqLwp2YXIgYj10aGlzfHxzZWxmO25hdmlnYXRvcnx8KGIubmF2aWdhdG9yPXt9KTt0eXBlb2YgbmF2aWdhdG9yLnNlbmRCZWFjb24hPT0iZnVuY3Rpb24iJiYobmF2aWdhdG9yLnNlbmRCZWFjb249ZnVuY3Rpb24oYyxkKXt2YXIgYT1uZXcgWE1MSHR0cFJlcXVlc3Q7YS5vcGVuKCJQT1NUIixjLCEwKTthLnNlbmQoZCk7cmV0dXJuITB9KTt9KS5jYWxsKHRoaXMpOzwvc2NyaXB0Pjxub3NjcmlwdD48bWV0YSBjb250ZW50PSIwO3VybD0vP3NjYV9lc3Y9ODNiOTBmMjRhOWExNTYyOSZhbXA7b3V0cHV0PXNlYXJjaCZhbXA7Z2J2PTEmYW1wO3NlaT1ZM3BuYXJURUxlaW13UEFQbzZTdGtBNCIgaHR0cC1lcXVpdj0icmVmcmVzaCI+PHN0eWxlPnRhYmxlLGRpdixzcGFuLHB7ZGlzcGxheTpub25lfTwvc3R5bGU+PGRpdiBzdHlsZT0iZGlzcGxheTpibG9jayI+S2xpa2sgPGEgaHJlZj0iLz9zY2FfZXN2PTgzYjkwZjI0YTlhMTU2MjkmYW1wO291dHB1dD1zZWFyY2gmYW1wO2didj0xJmFtcDtzZWk9WTNwbmFyVEVMZWltd1BBUG82U3RrQTQiPmhlcjwvYT4gaHZpcyBkdSBpa2tlIHZpZGVyZWtvYmxlcyBpbm5lbiBub2VuIGbDpSBzZWt1bmRlci48L2Rpdj48L25vc2NyaXB0PjxkaXYganNuYW1lPSJkdGxHU2IiIGpzbW9kZWw9IiIgY2xhc3M9IkwzZVVnYiIganNjb250cm9sbGVyPSJIR3YwbWYiIGpzYWN0aW9uPSJyY3VRNmI6bnBUMm1kO0lRT2F2ZDpEZkxZQ2M7Q1JXMXdlOnk0UGhjO3ZteFViOmdZSzRkZDt6YnBHUGQ6emRuYXZkO3lHYUJiOnVnWllRZDtyQlEyMjpjTFpoTmU7a3JzN1NjOnllb2lWYztxQmk4d2M6S2xvemlmOyIgZGF0YS1oYWxlPSIwIiBkYXRhLWh2ZWlkPSIxIj48c3R5bGU+LkwzZVVnYntkaXNwbGF5OmZsZXg7ZmxleC1kaXJlY3Rpb246Y29sdW1uO2hlaWdodDoxMDAlfS5vM2o5OXtmbGV4LXNocmluazowO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubjF4SmNme2hlaWdodDo2MHB4fS5MTEQ0bWV7bWluLWhlaWdodDoxNTBweDtoZWlnaHQ6Y2FsYygxMDAlIC0gNTYwcHgpO21heC1oZWlnaHQ6MjkwcHh9LnlyMTlaYnttaW4taGVpZ2h0OjkycHh9Lm13aHQ5ZHtkaXNwbGF5Om5vbmV9LkFESGo0ZXtwYWRkaW5nLXRvcDowcHg7cGFkZGluZy1ib3R0b206ODVweH0ub1d5WnJle3dpZHRoOjEwMCU7aGVpZ2h0OjUwMHB4O2JvcmRlci13aWR0aDowfS5xYXJzdGJ7ZmxleC1ncm93OjF9PC9zdHlsZT48c3R5bGU+LmJOZzhSYntjbGlwOnJlY3QoMXB4LDFweCwxcHgsMXB4KTtoZWlnaHQ6MXB4O292ZXJmbG93OmhpZGRlbjtwb3NpdGlvbjphYnNvbHV0ZTt3aGl0ZS1zcGFjZTpub3dyYXA7d2lkdGg6MXB4O3VzZXItc2VsZWN0Om5vbmU7LXdlYmtpdC11c2VyLXNlbGVjdDpub25lOy1tb3otdXNlci1zZWxlY3Q6bm9uZTstbXMtdXNlci1zZWxlY3Q6bm9uZX08L3N0eWxlPjxkaXYgY2xhc3M9Im8zajk5IG4xeEpjZiBDb00zRGYiIHJvbGU9Im5hdmlnYXRpb24iPjxzdHlsZT4uQ29NM0Rme2Rpc3BsYXk6ZmxleDthbGlnbi1pdGVtczpjZW50ZXI7cGFkZGluZzo2cHh9YS53NWhSc3tkaXNwbGF5OmlubGluZS1ibG9jaztwYWRkaW5nOjVweDttYXJnaW46MCA1cHg7Y29sb3I6dmFyKC0tWUxOTkhjKTt0cmFuc2l0aW9uOm9wYWNpdHkgMC4zcyBlYXNlLWluLW91dH0uZkxDM3VmIC53NWhSc3tvcGFjaXR5OjA7cG9pbnRlci1ldmVudHM6bm9uZTt0cmFuc2l0aW9uOm9wYWNpdHkgMC4zcyBlYXNlLWluLW91dH1hLnc1aFJzOmZpcnN0LW9mLXR5cGV7bWFyZ2luLWxlZnQ6MTVweH0uQW9yVGFje2Rpc3BsYXk6aW5saW5lLWJsb2NrO2ZsZXgtZ3JvdzoxfTwvc3R5bGU+PGEgY2xhc3M9Inc1aFJzIiBocmVmPSJodHRwczovL2Fib3V0Lmdvb2dsZS8/Zmc9MSZhbXA7dXRtX3NvdXJjZT1nb29nbGUtTk8mYW1wO3V0bV9tZWRpdW09cmVmZXJyYWwmYW1wO3V0bV9jYW1wYWlnbj1ocC1oZWFkZXIiIGRhdGEtc2I9Ii91cmw/c2E9dCZhbXA7cmN0PWomYW1wO3NvdXJjZT13ZWJocCZhbXA7dXJsPWh0dHBzOi8vYWJvdXQuZ29vZ2xlLyUzRmZnJTNEMSUyNnV0bV9zb3VyY2UlM0Rnb29nbGUtTk8lMjZ1dG1fbWVkaXVtJTNEcmVmZXJyYWwlMjZ1dG1fY2FtcGFpZ24lM0RocC1oZWFkZXImYW1wO3ZlZD0wYWhVS0V3ajBnWkthbF9PVkF4Vm9FeEFJSFNOU0MtSVFrTlFDQ0FJJmFtcDtvcGk9ODk5Nzg0NDkmYW1wO3VzZz1BT3ZWYXcyajdqZVNmREpIcFM4R3YxNzBtUlBTIj5JbmZvPC9hPjxhIGNsYXNzPSJ3NWhScyIgaHJlZj0iaHR0cHM6Ly9zdG9yZS5nb29nbGUuY29tL05PP3V0bV9zb3VyY2U9aHBfaGVhZGVyJmFtcDt1dG1fbWVkaXVtPWdvb2dsZV9vb28mYW1wO3V0bV9jYW1wYWlnbj1HUzEwMDA0MiZhbXA7aGw9bm8tTk8iIGRhdGEtc2I9Ii91cmw/c2E9dCZhbXA7cmN0PWomYW1wO3NvdXJjZT13ZWJocCZhbXA7dXJsPWh0dHBzOi8vc3RvcmUuZ29vZ2xlLmNvbS9OTyUzRnV0bV9zb3VyY2UlM0RocF9oZWFkZXIlMjZ1dG1fbWVkaXVtJTNEZ29vZ2xlX29vbyUyNnV0bV9jYW1wYWlnbiUzREdTMTAwMDQyJTI2aGwlM0Ruby1OTyZhbXA7dmVkPTBhaFVLRXdqMGdaS2FsX09WQXhWb0V4QUlIU05TQy1JUXBNd0NDQU0mYW1wO29waT04OTk3ODQ0OSZhbXA7dXNnPUFPdlZhdzIzUU1neFVwaHd3aGtkbFZyZy1WZGIiPlN0b3JlPC9hPjxkaXYgY2xhc3M9IkFvclRhYyI+PGRpdj48aGVhZGVyIGNsYXNzPSJnYl95IGdiX0xkIiBpZD0iZ2IiIHJvbGU9Im5vbmUiPjxkaXYgY2xhc3M9ImdiX1IgZ2JfOCBnYl9YZiBnYl81ZiIgZGF0YS1vZ2JsPSIiPjxkaXYgY2xhc3M9ImdiXzcgZ2JfOCI+PGEgY2xhc3M9ImdiXzYiIGFyaWEtbGFiZWw9IkdtYWlsICIgZGF0YS1waWQ9IjIzIiBocmVmPSJodHRwczovL21haWwuZ29vZ2xlLmNvbS9tYWlsLyZhbXA7b2dibCIgdGFyZ2V0PSJfdG9wIj5HbWFpbDwvYT48L2Rpdj48ZGl2IGNsYXNzPSJnYl83IGdiXzgiPjxhIGNsYXNzPSJnYl82IiBhcmlhLWxhYmVsPSJTw7hrIGV0dGVyIGJpbGRlciAiIGRhdGEtcGlkPSIyIiBocmVmPSJodHRwczovL3d3dy5nb29nbGUuY29tL2ltZ2hwP2hsPW5vJmFtcDtvZ2JsIiB0YXJnZXQ9Il90b3AiPkJpbGRlcjwvYT48L2Rpdj48L2Rpdj48ZGl2IGNsYXNzPSJnYl9MIGdiX0NkIGdiXzgiIGRhdGEtb2dzci1mYj0idHJ1ZSIgZGF0YS1vZ3NyLWFsdD0iIiBpZD0iZ2J3YSI+PGRpdiBjbGFzcz0iZ2JfRCI+PGEgY2xhc3M9ImdiX0MiIGFyaWEtbGFiZWw9Ikdvb2dsZS1hcHBlciIgaHJlZj0iaHR0cHM6Ly93d3cuZ29vZ2xlLm5vL2ludGwvbm8vYWJvdXQvcHJvZHVjdHMiIGFyaWEtZXhwYW5kZWQ9ImZhbHNlIiByb2xlPSJidXR0b24iIHRhYmluZGV4PSIwIj48c3ZnIGNsYXNzPSJnYl9IIiBhcmlhLWhpZGRlbj0idHJ1ZSIgZm9jdXNhYmxlPSJmYWxzZSIgdmlld2JveD0iMCAwIDI0IDI0Ij48cGF0aCBkPSJNNiw4YzEuMSwwIDIsLTAuOSAyLC0ycy0wLjksLTIgLTIsLTIgLTIsMC45IC0yLDIgMC45LDIgMiwyek0xMiwyMGMxLjEsMCAyLC0wLjkgMiwtMnMtMC45LC0yIC0yLC0yIC0yLDAuOSAtMiwyIDAuOSwyIDIsMnpNNiwyMGMxLjEsMCAyLC0wLjkgMiwtMnMtMC45LC0yIC0yLC0yIC0yLDAuOSAtMiwyIDAuOSwyIDIsMnpNNiwxNGMxLjEsMCAyLC0wLjkgMiwtMnMtMC45LC0yIC0yLC0yIC0yLDAuOSAtMiwyIDAuOSwyIDIsMnpNMTIsMTRjMS4xLDAgMiwtMC45IDIsLTJzLTAuOSwtMiAtMiwtMiAtMiwwLjkgLTIsMiAwLjksMiAyLDJ6TTE2LDZjMCwxLjEgMC45LDIgMiwyczIsLTAuOSAyLC0yIC0wLjksLTIgLTIsLTIgLTIsMC45IC0yLDJ6TTEyLDhjMS4xLDAgMiwtMC45IDIsLTJzLTAuOSwtMiAtMiwtMiAtMiwwLjkgLTIsMiAwLjksMiAyLDJ6TTE4LDE0YzEuMSwwIDIsLTAuOSAyLC0ycy0wLjksLTIgLTIsLTIgLTIsMC45IC0yLDIgMC45LDIgMiwyek0xOCwyMGMxLjEsMCAyLC0wLjkgMiwtMnMtMC45LC0yIC0yLC0yIC0yLDAuOSAtMiwyIDAuOSwyIDIsMnoiPjwvcGF0aD48aW1hZ2Ugc3JjPSJodHRwczovL3NzbC5nc3RhdGljLmNvbS9nYi9pbWFnZXMvYmFyL2FsLWljb24ucG5nIiBhbHQ9IiIgaGVpZ2h0PSIyNCIgd2lkdGg9IjI0IiBzdHlsZT0iYm9yZGVyOm5vbmU7ZGlzcGxheTpub25lIFw5Ij48L2ltYWdlPjwvc3ZnPjwvYT48L2Rpdj48L2Rpdj48ZGl2IGNsYXNzPSJnYl96IiBkYXRhLW9nc3ItdXA9IiI+PGEgY2xhc3M9ImdiX0EiIGFyaWEtbGFiZWw9IkxvZ2cgcMOlIiBocmVmPSJodHRwczovL2FjY291bnRzLmdvb2dsZS5jb20vU2VydmljZUxvZ2luP2hsPW5vJmFtcDtwYXNzaXZlPXRydWUmYW1wO2NvbnRpbnVlPWh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vJmFtcDtlYz1mdXR1cmFfZXhwX29nX3NvXzcyNzc2NzYyX2UiIHRhcmdldD0iX3RvcCI+PHNwYW4gY2xhc3M9ImdiXzIiPkxvZ2cgcMOlPC9zcGFuPjwvYT48L2Rpdj48L2hlYWRlcj48L2Rpdj48L2Rpdj48L2Rpdj48ZGl2IGNsYXNzPSJ4Y1ljNGIiPjwvZGl2PjxkaXY+PGRpdiBqc2NvbnRyb2xsZXI9InI4RTRaZSIganNuYW1lPSJMTkl0VmIiIGNsYXNzPSJYMXBMQyIganNhY3Rpb249InFCaTh3YzpPenIwSGIiPiAgICAgICAgICAgICAgPGhlYWRlcj48aGVhZGVyIGpzbmFtZT0ia05YbUhjIiBjbGFzcz0iUkhMOFZiIj48c3R5bGU+LlJITDhWYntoZWlnaHQ6ODhweH0uUkhMOFZiW2RhdGEtZWx2dF17fS5SSEw4VmJbZGF0YS1jb2JzcF17ZGlzcGxheTpub25lfUBtZWRpYSAobWF4LXdpZHRoOjQ3OS45OHB4KXsuUkhMOFZie2hlaWdodDoxMTZweH19PC9zdHlsZT48c3R5bGU+LlZIWWM4Yntwb3NpdGlvbjpmaXhlZDt6LWluZGV4OjkyODtwb2ludGVyLWV2ZW50czphdXRvO3RyYW5zaXRpb246dHJhbnNmb3JtIDI1MG1zIGN1YmljLWJlemllcigwLjM4LC43MiwwLDEpfS5SSEw4VmJbZGF0YS1lbHZ0XSAuVkhZYzhie3otaW5kZXg6MTIwMDJ9LlJITDhWYltkYXRhLXNjb290cl0gLlZIWWM4Ynt0cmFuc2Zvcm06dHJhbnNsYXRlWCgxOTBweCk7dHJhbnNpdGlvbjp0cmFuc2Zvcm0gNTAwbXMgY3ViaWMtYmV6aWVyKDAuMzgsLjcyLDAsMSk7fS5SSEw4VmJbZGF0YS1oaWRlLWxvZ29dIC5WSFljOGJ7b3BhY2l0eTowO3BvaW50ZXItZXZlbnRzOm5vbmV9LlJITDhWYltkYXRhLXN0YXJ0cl0gLlZIWWM4Ynt9QG1lZGlhIChtYXgtd2lkdGg6MTQyMHB4KXsuUkhMOFZiW2RhdGEtc3RhcnRyXSAuVkhZYzhie319PC9zdHlsZT48ZGl2IGNsYXNzPSJWSFljOGIgaVpVS0VlIiBqc25hbWU9IkRQZ1BqZiI+PHN0eWxlPi5pWlVLRWUgc3ZnLC5pWlVLRWUgZGl2e2ZvcmNlZC1jb2xvci1hZGp1c3Q6bm9uZTstd2Via2l0LWZvcmNlZC1jb2xvci1hZGp1c3Q6bm9uZX08L3N0eWxlPjxzdHlsZT4uaVpVS0Vle3RvcDozM3B4O2xlZnQ6MTlweDt9QG1lZGlhIChtYXgtd2lkdGg6NDc5Ljk4cHgpey5pWlVLRWV7dG9wOjIycHh9fTwvc3R5bGU+PGEgaHJlZj0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS93ZWJocD9obD1ubyZhbXA7aWN0eD0wJmFtcDtzYT1YJmFtcDt2ZWQ9MGFoVUtFd2owZ1pLYWxfT1ZBeFZvRXhBSUhTTlNDLUlRUEFnRSIgYXJpYS1sYWJlbD0iR8OlIHRpbCBHb29nbGVzIHN0YXJ0c2lkZSIgZGF0YS1odmVpZD0iNCI+PHN2ZyBhcmlhLWhpZGRlbj0idHJ1ZSIgaGVpZ2h0PSIzNCIgd2lkdGg9IjM0IiBmb2N1c2FibGU9ImZhbHNlIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNCAyNCI+PGNsaXBQYXRoIGlkPSJfWTNwbmFyVEVMZWltd1BBUG82U3RrQTRfMSI+PHBhdGggZD0iTTEyIDEwdjQuNWg2LjQ3Yy0uNSAyLjctMyA0Ljc0LTYuNDcgNC43NC0zLjkgMC03LjEtMy4zLTcuMS03LjI1UzguMSA0Ljc1IDEyIDQuNzVjMS44IDAgMy4zNS42IDQuNiAxLjhsMy40LTMuNEMxOCAxLjIgMTUuMjQgMCAxMiAwIDUuNCAwIDAgNS40IDAgMTJzNS40IDEyIDEyIDEyYzcgMCAxMS41LTQuOSAxMS41LTExLjcgMC0uOC0uMS0xLjU0LS4yLTIuM0gxMnoiPjwvcGF0aD48L2NsaXBQYXRoPjxmaWx0ZXIgaWQ9Il9ZM3BuYXJURUxlaW13UEFQbzZTdGtBNF8yIj48ZmVHYXVzc2lhbkJsdXIgc3RkZGV2aWF0aW9uPSIxIj48L2ZlR2F1c3NpYW5CbHVyPjwvZmlsdGVyPjxnIHN0eWxlPSJjbGlwLXBhdGg6dXJsKCNfWTNwbmFyVEVMZWltd1BBUG82U3RrQTRfMSkiPjxmb3JlaWduT2JqZWN0IHN0eWxlPSJmaWx0ZXI6dXJsKCNfWTNwbmFyVEVMZWltd1BBUG82U3RrQTRfMikiIGhlaWdodD0iMjgiIHRyYW5zZm9ybT0idHJhbnNsYXRlKC0yLC0yKSIgd2lkdGg9IjI4Ij48ZGl2IHN0eWxlPSJ3aWR0aDoxMDAlO2hlaWdodDoxMDAlO2JhY2tncm91bmQ6Y29uaWMtZ3JhZGllbnQoI0ZGNDY0MSwjRkQ1MDYxIDQwZGVnLCNGRDUwNjEgNjBkZWcsIzMxODZGRiA4NWRlZywjMzE4NkZGIDExN2RlZywjMDBBNUI3IDE0MmRlZywjMEVCQzVGIDE2N2RlZywjMEVCQzVGIDIwMGRlZywjNkNDNTAwIDIyNmRlZywjRkZDQzAwIDI1M2RlZywjRkZEMzE0IDI2OGRlZywjRkZDQzAwIDI5MmRlZywjRkY0NjQxIDMyN2RlZykiPjwvZGl2PjwvZm9yZWlnbk9iamVjdD48cmVjdCBmaWxsPSIjMzE4NkZGIiBoZWlnaHQ9IjgiIHdpZHRoPSIxNiIgeD0iMTEiIHk9IjgiPjwvcmVjdD48L2c+PC9zdmc+PC9hPjwvZGl2PjwvaGVhZGVyPjwvaGVhZGVyPjxkaXYganNuYW1lPSJXVjYzVGUiIGRhdGEtamlpcz0idXAiIGRhdGEtYXN5bmMtdHlwZT0iZm9saWYiIGlkPSJqNnNKMmMiIGNsYXNzPSJ5cCIgZGF0YS12ZWQ9IjBhaFVLRXdqMGdaS2FsX09WQXhWb0V4QUlIU05TQy1JUWc1Z1VDQVUiPjwvZGl2PjwvZGl2PjwvZGl2PjxkaXYgY2xhc3M9Im8zajk5IExMRDRtZSB5cjE5WmIgTFM4T0oiIGlkPSJMUzhPSiI+PHN0eWxlPi5MUzhPSntkaXNwbGF5OmZsZXg7ZmxleC1kaXJlY3Rpb246Y29sdW1uO2FsaWduLWl0ZW1zOmNlbnRlcn0uazF6SUF7aGVpZ2h0OjEwMCU7bWFyZ2luLXRvcDphdXRvfS5MUzhPSntkaXNwbGF5OmdyaWQ7anVzdGlmeS1pdGVtczpjZW50ZXI7YWxpZ24taXRlbXM6Y2VudGVyO3Bvc2l0aW9uOnJlbGF0aXZlO2dyaWQtdGVtcGxhdGUtcm93czptaW5tYXgoMCwxZnIpO3BhZGRpbmc6MCA5NnB4fS5yU2s0c2UsLmtLdnNiLC5WbnR1UGJ7Z3JpZC1hcmVhOjEvMTt3aWxsLWNoYW5nZTp0cmFuc2Zvcm0sb3BhY2l0eX0uclNrNHNlLC5rS3ZzYiwud2YwSG1iIC5WbnR1UGJ7cG9pbnRlci1ldmVudHM6YXV0bzt0cmFuc2Zvcm06dHJhbnNsYXRlWSgwKTtvcGFjaXR5OjE7dmlzaWJpbGl0eTppbmhlcml0O3RyYW5zaXRpb246dHJhbnNmb3JtIDUwMG1zIHZhcigtLWVtcGhhc2l6ZWQtY3VydmUsY3ViaWMtYmV6aWVyKDAuMiwwLDAsMSkpLG9wYWNpdHkgMTdtcyBsaW5lYXIgODNtcyx2aXNpYmlsaXR5IDBzIGxpbmVhciAwc30uVm50dVBiLC53ZjBIbWIgLnJTazRzZSwud2YwSG1iIC5rS3ZzYntwb2ludGVyLWV2ZW50czpub25lO29wYWNpdHk6MDt2aXNpYmlsaXR5OmhpZGRlbjt0cmFuc2l0aW9uOnRyYW5zZm9ybSA1MDBtcyB2YXIoLS1lbXBoYXNpemVkLWN1cnZlLGN1YmljLWJlemllcigwLjIsMCwwLDEpKSxvcGFjaXR5IDE3bXMgbGluZWFyIDY3bXMsdmlzaWJpbGl0eSAwcyBsaW5lYXIgNTE3bXN9LlZudHVQYnt0cmFuc2Zvcm06dHJhbnNsYXRlWSg2NnB4KX0ud2YwSG1iIC5yU2s0c2UsLndmMEhtYiAua0t2c2J7dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTY0cHgpfTwvc3R5bGU+PGRpdiBjbGFzcz0iazF6SUEgclNrNHNlIj48c3R5bGU+LnJTazRzZXttYXgtaGVpZ2h0OjkycHg7cG9zaXRpb246cmVsYXRpdmV9LmxuWGRwZHttYXgtaGVpZ2h0OjEwMCU7bWF4LXdpZHRoOjEwMCU7b2JqZWN0LWZpdDpjb250YWluO29iamVjdC1wb3NpdGlvbjpjZW50ZXIgYm90dG9tO3dpZHRoOmF1dG99PC9zdHlsZT48c3ZnIGNsYXNzPSJsblhkcGQiIGFyaWEtbGFiZWw9Ikdvb2dsZSIgaGVpZ2h0PSI5MiIgcm9sZT0iaW1nIiB2aWV3Qm94PSIwIDAgMjcyIDkyIiB3aWR0aD0iMjcyIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjxwYXRoIGQ9Ik0zMS4zMiA3MC4zM2MxNy42NS4xNyAyOS42Ny0xMS42OCAyOS42Ny0yOS45MnEuMDEtMi4yOS0uNDMtNS4wOEgzMS4ydjguNzZoMjAuNmMtMS4xIDExLjQ3LTkuMTggMTcuNDQtMjAuMjcgMTcuNDQtMTIuNDQgMC0yMS45Ni05LjM1LTIxLjk2LTIyLjk0IDAtMTMuNDEgOS4xLTIyLjc3IDIxLjk2LTIyLjc3IDYuNDggMCAxMS4yNiAyIDE2LjA0IDYuOWw2LjE0LTYuNDNjLTUuMzgtNi4zLTEzLjE2LTkuMzEtMjIuMy05LjMxQzEzLjcgNi45OCAwIDIwLjI3IDAgMzguNDZjMCAxNy40IDEzLjI1IDMxLjcgMzEuMzIgMzEuODciIGZpbGw9IiMzMTg2RkYiPjwvcGF0aD48cGF0aCBkPSJNODguMiA3MC4zM2MxMy4yIDAgMjIuNzctOS42OSAyMi43Ny0yMy4xNSAwLTEzLjItOS4zNS0yMi45OC0yMi43Ny0yMi45OC0xMi43IDAtMjIuNjggOS4wMi0yMi42OCAyMi45OCAwIDEzLjMzIDkuNDMgMjMuMTUgMjIuNjggMjMuMTVtMC04LjA0Yy04LjA0IDAtMTMuNjctNi42LTEzLjY3LTE1LjFzNS45My0xNC45NSAxMy42Ny0xNC45NWM4LjE3IDAgMTMuNjcgNi42IDEzLjY3IDE0Ljk0IDAgOC42NC01LjYzIDE1LjExLTEzLjY3IDE1LjExIiBmaWxsPSIjRkM0MTNEIj48L3BhdGg+PHBhdGggZD0iTTEzNy40MiA3MC4zM2MxMy4yOSAwIDIyLjc3LTkuNzMgMjIuNzctMjMuMTUgMC0xMy4yLTkuMzUtMjIuOTgtMjIuNzctMjIuOTgtMTIuNyAwLTIyLjY4IDkuMDItMjIuNjggMjIuOTggMCAxMy4zMyA5LjQzIDIzLjE1IDIyLjY4IDIzLjE1bTAtOC4wNGMtOC4wNCAwLTEzLjY3LTYuNi0xMy42Ny0xNS4xczUuOTMtMTQuOTUgMTMuNjctMTQuOTVjOC4xNyAwIDEzLjY3IDYuNiAxMy42NyAxNC45NCAwIDguNjQtNS42MyAxNS4xMS0xMy42NyAxNS4xMSIgZmlsbD0iI0ZGQkUwMCI+PC9wYXRoPjxwYXRoIGQ9Ik0xODUuMzcgODguNTdxMjEuNTEgMCAyMS41LTI0LjYzVjI1Ljc3aC04Ljh2NS4zN2gtLjE3Yy0yLjc1LTQuMjctNy45Ni02LjY4LTEzLjg0LTYuNjgtMTIuNyAwLTIwLjQ0IDkuNjktMjAuNDQgMjIuNiAwIDEyLjg2IDcuNTMgMjIuMzQgMjAuNzggMjIuMzQgNi41MiAwIDExLjM0LTMuNzIgMTMuMzctNi43N2guM3YzLjk0YzAgOC42Ny00LjQ5IDEzLjgtMTIuODIgMTMuOC01LjQ2IDAtOS4xLTMuMDEtMTEuNzctOC4wNWwtNy45NiAzLjUyYzQuMiA4Ljg0IDEwLjE2IDEyLjczIDE5Ljg1IDEyLjczbTAtMjcuNTVjLTcuNzQgMC0xMi43LTUuNzEtMTIuNy0xNC4yMiAwLTguMiA0LjkyLTE0LjEzIDEyLjc1LTE0LjEzczEyLjY1IDUuNSAxMi42NSAxNC4wOWMwIDguNjgtNS4wOCAxNC4yNi0xMi43IDE0LjI2IiBmaWxsPSIjMzE4NkZGIj48L3BhdGg+PHBhdGggZD0iTTIyMi45MSA4LjMzaC05LjIydjYwLjZoOS4yMnoiIGZpbGw9IiMwMEFGNTciPjwvcGF0aD48cGF0aCBkPSJNMjUwLjE3IDcwLjI1YTIyLjEgMjIuMSAwIDAgMCAxOS0xMC41NGwtNi44Ni00LjQ5Yy0zIDQuMi03LjEgNi42LTExLjcyIDYuNmExMy42IDEzLjYgMCAwIDEtMTEuOTMtNy4yM2wzMC45My0xMy4xMmEyMCAyMCAwIDAgMC0uODQtMy4yMmMtMy42OS05LjQ4LTEwLjEyLTEzLjgtMTguOC0xMy44LTEzLjI0IDAtMjIuMjUgOS42Ni0yMi4yNSAyMy4wMyAwIDEzLjY3IDkuNDcgMjIuNzcgMjIuNDcgMjIuNzdtLTEzLjUtMjIuODF2LS41MWMwLTguNzYgNS4wMy0xNC42NCAxMi45NS0xNC42NCAzLjc2IDAgNy4xNSAxLjY5IDkuNDQgNS42N3oiIGZpbGw9IiNGQzQxM0QiPjwvcGF0aD48L3N2Zz48L2Rpdj48ZGl2IGNsYXNzPSJrMXpJQSBWbnR1UGIgRFl6MkEiIGFyaWEtbGV2ZWw9IjEiIHJvbGU9ImhlYWRpbmciPjxzdHlsZT4uRFl6MkF7ZGlzcGxheTpmbGV4O2ZsZXgtZGlyZWN0aW9uOmNvbHVtbjtqdXN0aWZ5LWNvbnRlbnQ6ZmxleC1lbmQ7YWxpZ24taXRlbXM6Y2VudGVyfS5IZUpmeXtmb250LWZhbWlseTpHb29nbGUgU2FucyxBcmlhbCxzYW5zLXNlcmlmO2ZvbnQtc2l6ZTozMnB4O2xpbmUtaGVpZ2h0OjQwcHg7Zm9udC13ZWlnaHQ6NTAwO21hcmdpbi1ib3R0b206MjRweDtjb2xvcjp2YXIoLS1ZTE5OSGMpO3RleHQtYWxpZ246Y2VudGVyfS5kUGcwWmV7Y29sb3I6dHJhbnNwYXJlbnQ7YmFja2dyb3VuZC1pbWFnZTpsaW5lYXItZ3JhZGllbnQodG8gYm90dG9tLHZhcigtLVlMTk5IYykgMCUsdmFyKC0tWUxOTkhjKSAyMCUsIzQwOGJmMiAzMCUsI2E5YThmZiA1MCUsI2E5YThmZiA2MCUsdmFyKC0tWUxOTkhjKSA4MCUsdmFyKC0tWUxOTkhjKSAxMDAlKTstd2Via2l0LWJhY2tncm91bmQtY2xpcDp0ZXh0O2JhY2tncm91bmQtY2xpcDp0ZXh0O2JhY2tncm91bmQtc2l6ZTphdXRvIDcwMCU7d2lsbC1jaGFuZ2U6YmFja2dyb3VuZC1wb3NpdGlvbn0ud2YwSG1iIC5kUGcwWmV7YW5pbWF0aW9uOnVzZXJuYW1lU2hpbW1lciA5NjdtcyBjdWJpYy1iZXppZXIoMC4yLDAsMC42LDEpIGJvdGg7YW5pbWF0aW9uLWRlbGF5OjMzM21zfUBrZXlmcmFtZXMgdXNlcm5hbWVTaGltbWVyIHswJXtiYWNrZ3JvdW5kLXBvc2l0aW9uOjUwJSAwJX0xMDAle2JhY2tncm91bmQtcG9zaXRpb246NTAlIDEwMCV9fS5XNGtqQntkaXNwbGF5Om5vbmV9PC9zdHlsZT48c3BhbiBjbGFzcz0iSGVKZnkiPkh2YSB0ZW5rZXIgZHUgcMOlPzwvc3Bhbj48L2Rpdj48L2Rpdj48ZGl2IGNsYXNzPSJvM2o5OSBpa3JUNGUgS0VZNmliIj48c3R5bGU+LktFWTZpYntwYWRkaW5nOjIwcHh9LktFWTZpYntwYWRkaW5nOjIwcHggOTZweH08L3N0eWxlPjxmb3JtIGFjdGlvbj0iL3NlYXJjaCIgYXV0b2NvbXBsZXRlPSJvZmYiIG1ldGhvZD0iR0VUIiByb2xlPSJzZWFyY2giPiA8ZGl2IGpzbW9kZWw9ImI1Vzg1IHZOektIZCIganNkYXRhPSJNdUlFdmQ7XztZM3BuYXJURUxlaW13UEFQbzZTdGtBNDEiPiA8ZGl2IGpzY29udHJvbGxlcj0iY25qRUNmIiBqc21vZGVsPSJramt5a2QgRVBSdDlkIExNN3d4IFFseXJ5YiBFdEN4OGIgSXAzRXJjIEw5N211ZCAgQ295dUZiICBXbmVDa2Ugd1dNaGcgICAgICAgIFlIblVCYyIgY2xhc3M9IkE4U0J3ZiIgZGF0YS1hbHQ9ImZhbHNlIiBkYXRhLWJpYm9lPSJmYWxzZSIgZGF0YS1ibHU9Imh0dHBzOi8vbGVucy5nb29nbGUuY29tIiBkYXRhLWV4cGlkcz0iIiBkYXRhLWhwPSJ0cnVlIiBqc2RhdGE9IkxWcGxjYjtfOyIganNhY3Rpb249ImxYNlJXZDp3M1dzbWM7YWFGWFNkOmswd3RUZDtvY0RTdmQ6ZHV3Zkc7WG1HUnhiOm1WdzZuYjtSNlNseWM6RjNnb3VlO0ZVOGRwZDpWSDNYQmI7RGtwTTBiOmQzc1FMZDtJUU9hdmQ6ZEZ5UUVmO1h6WlpQZTpqSTN3emY7QWdoc2Y6QVZzbmxiO2lIZDlVOlE3Q25yYztmNWhFSGU6RzBqZ1lkO3ZteFViOmozYkpuYjtYQnFXNzppaFlhV2M7VWtRazZjOlZTYjREZTtuVHpmcGY6WVBSYXdiO0N1ZFhQZDppdTl5cmM7UjJjNU86THVSdWdmO3FpQ2tKZDpBTmRpZGM7UTN2V1BkOkZ0V3hxYjtOT2c5TDpITGdoMzt6TGRMdzplYUdCUztIOW11VmQ6SjRlNmxiO1M4cHhLZTp1M3JjWGQ7aEJFSVZiOm5VWjlsZTthY2I3cWI6SDhzVHo7Ynk5alc6TEdteWI7cmN1UTZiOm5wVDJtZCI+PHN0eWxlPi5BOFNCd2Z7LS1jbGllbnQtYWRhcHRlci1tYXJnaW4tYmFzZToxNTBweH0uUk5OWGdie2Rpc3BsYXk6ZmxleDt6LWluZGV4OjM7cG9zaXRpb246cmVsYXRpdmU7Ym94LXNpemluZzpib3JkZXItYm94O21pbi1oZWlnaHQ6NTBweDtiYWNrZ3JvdW5kOiNmZmY7Ym9yZGVyOjFweCBzb2xpZCAjZGFkY2UwO2JveC1zaGFkb3c6MHB4IDNweCAxMHB4IDBweCByZ2JhKDMxLCAzMSwgMzEsIDAuMDgpO2JvcmRlci1yYWRpdXM6MjZweDttYXJnaW46MCBhdXRvO30uZW1jYXYgLlJOTlhnYiwuQmdQUHJjIC5STk5YZ2J7Ym9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czowO2JvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOjA7Ym94LXNoYWRvdzowIDJweCA4cHggMXB4IHJnYmEoNjQsNjAsNjcsLjI0KTtib3JkZXItY29sb3I6dHJhbnNwYXJlbnQ7Ym94LXNoYWRvdzowIDJweCA4cHggMXB4IHJnYmEoNjQsNjAsNjcsLjI0KTtiYWNrZ3JvdW5kOiNmZmY7fS5lbWNhdi5lbWNhdCAuUk5OWGdie2JvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6MjZweDtib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czoyNnB4O30uc2JmYyAuUk5OWGdie2JhY2tncm91bmQ6I2ZmZjtib3gtc2hhZG93OjAgMnB4IDhweCAxcHggcmdiYSg2NCw2MCw2NywuMjQpO30uc2JmYy5lbWNhdiAuUk5OWGdie2JhY2tncm91bmQ6I2ZmZjtib3gtc2hhZG93OjAgMnB4IDhweCAxcHggcmdiYSg2NCw2MCw2NywuMjQpO2JvcmRlci1jb2xvcjp0cmFuc3BhcmVudH0uZW1jYXY6bm90KC5lbWNhdCkgLlJOTlhnYiwuZW1jYXY6bm90KC5lbWNhdCkgLlJOTlhnYjpob3Zlciwuc2JmYy5lbWNhdjpub3QoLmVtY2F0KSAuUk5OWGdiLC5CZ1BQcmMgLlJOTlhnYiwuQmdQUHJjIC5STk5YZ2I6aG92ZXJ7fS5lbWNhdi5BOFNCd2YucEQ0cVRke3otaW5kZXg6OTg5O30uUE02WDRkIC5TRGtFUHtwYWRkaW5nOjAgOHB4IDAgMjBweH0uSXp6ZmliIC5STk5YZ2IsLlBNNlg0ZCAuUk5OWGdie2ZsZXgtZGlyZWN0aW9uOmNvbHVtbn0uQThTQndmOm5vdCguUE02WDRkKSAuV3dKSFZje2Rpc3BsYXk6bm9uZX0uSWdncGggLmlUaHdsZHtkaXNwbGF5Om5vbmV9LlVNT1loZHtkaXNwbGF5OmZsZXg7YWxpZ24tc2VsZjpjZW50ZXJ9Lm1pbmlkaXYgLkE4U0J3Zjpub3QoLlBNNlg0ZCkgLlNEa0VQIC5BN3NQVnt3aWR0aDozMnB4O2hlaWdodDozMnB4O30ubWluaWRpdiAuaWJscGN7ZGlzcGxheTpub25lO308L3N0eWxlPjxkaXYganNuYW1lPSJSTk5YZ2IiIGNsYXNzPSJSTk5YZ2IiIGpzYWN0aW9uPSJjbGljazpDNmFWaGQiIGRhdGEtdmVkPSIwYWhVS0V3ajBnWkthbF9PVkF4Vm9FeEFJSFNOU0MtSVEzdFVEQ0FZIj48ZGl2IGNsYXNzPSJkb2xqbSI+PGRpdiBqc2NvbnRyb2xsZXI9Im5UTmZoZSIganNuYW1lPSJkamVONmUiIGNsYXNzPSJGcWZ0NCIganNhY3Rpb249Ik1HejRiZTpmY0ZxQ2M7ak5oem5mOk5nb25RYztVMWM4bGM6Rlk3QWhjO1RzSUZwYzphR0FEN2UiPjxkaXYganNuYW1lPSJLOWE0UmUiIGpzY29udHJvbGxlcj0iczBqN0MiIGNsYXNzPSJYTmZBVWIiIGlkPSJfWTNwbmFyVEVMZWltd1BBUG82U3RrQTRfMyIganNhY3Rpb249IndiZmVEZDpFREtZamI7YzJRN0hlOmFKOHU3O0Y5ZWt4YjpubnNyQ2Y7V0d3dnpjOlhqN2h2YjtzT3ZTSmQ6T1IxQlViO2E3SmxEZTpIRll2S2M7cmN1UTZiOm5wVDJtZDtsbmtGemI6akNPVlNlIiBqc2RhdGE9Ik0ydjlJZjtfO1kzcG5hclRFTGVpbXdQQVBvNlN0a0E0MiIganNzaGFkb3c9IiI+PHN0eWxlPi5YTmZBVWJ7ZGlzcGxheTpibG9jaztwb3NpdGlvbjpyZWxhdGl2ZX0uUnlJRmdme2Rpc3BsYXk6YmxvY2s7b3ZlcmZsb3cteDphdXRvO292ZXJmbG93LXk6Y2xpcDtwb3NpdGlvbjpyZWxhdGl2ZTt0cmFuc2Zvcm06dHJhbnNsYXRlM2QoMCwwLDApO3RyYW5zZm9ybTp0cmFuc2xhdGUzZCgwLDAsMCl9LlJ5SUZnZi5DV3h1V2V7b3ZlcnNjcm9sbC1iZWhhdmlvci14OmNvbnRhaW59LlJ5SUZnZi5yU1JVdntzY3JvbGwtc25hcC10eXBlOnggbWFuZGF0b3J5fS5SeUlGZ2YuajBjSnF7c2Nyb2xsLXNuYXAtdHlwZTp4IHByb3hpbWl0eTtzY3JvbGwtcGFkZGluZzoxMDBweH0uUnlJRmdmOjotd2Via2l0LXNjcm9sbGJhcntkaXNwbGF5Om5vbmV9LndqdWhLZntvdmVyZmxvdy14OmhpZGRlbn0uRnNwTFBje3doaXRlLXNwYWNlOm5vd3JhcDtkaXNwbGF5OmlubGluZS1ibG9ja30uSEc1WlFie2Rpc3BsYXk6ZmxleH0uZHNLd3Vie2Rpc3BsYXk6aW5saW5lLWZsZXh9LlhOZkFVYi52Ykt1N2V7b3ZlcmZsb3cteTp2aXNpYmxlfS5YTmZBVWIudmJLdTdlIC5SeUlGZ2Z7cG9zaXRpb246c3RhdGljfS55ZWwyaWUueWVsMmlle3BhZGRpbmctYm90dG9tOjEwcHg7bWFyZ2luOmF1dG87bWFyZ2luLXRvcDotMTBweH0ucGJQUWNjLnBiUFFjY3twYWRkaW5nLXRvcDoxMHB4O21hcmdpbjphdXRvO21hcmdpbi1ib3R0b206LTEwcHh9PC9zdHlsZT48ZGl2IGpzbmFtZT0iaGFBY2xmIiBjbGFzcz0iUnlJRmdmIHJBZFBTZSIgZGF0YS1odmVpZD0iNyIgZGF0YS12ZWQ9IjBhaFVLRXdqMGdaS2FsX09WQXhWb0V4QUlIU05TQy1JUXVja0pDQWMiPjxkaXYganNuYW1lPSJzMmdRdmQiIGNsYXNzPSJFRGJsWCBIRzVaUWIiIHJvbGU9Imxpc3QiIGpzc2xvdD0iIj48ZGl2IGpzbmFtZT0iWVpDSmlmIiBjbGFzcz0iRWdtd2FiIj48L2Rpdj48L2Rpdj48L2Rpdj48c3R5bGU+LnBRWGNIY3tjdXJzb3I6ZGVmYXVsdDtvcGFjaXR5OjA7dmlzaWJpbGl0eTpoaWRkZW59LkVRT0doZXt1c2VyLXNlbGVjdDpub25lfTwvc3R5bGU+PGRpdiBqc25hbWU9Ilk1QU5IZSIgY2xhc3M9IkVRT0doZSIgZGF0YS12ZWQ9IjBhaFVLRXdqMGdaS2FsX09WQXhWb0V4QUlIU05TQy1JUXlab1JDQWciPjxnLWxlZnQtYnV0dG9uIGpzbmFtZT0ic0lKbURmIiBjbGFzcz0icFFYY0hjIHdnYlJOYiBiQ3dsSSB0SFQwbCBPWjViUmQgVDlXaDUiIHN0eWxlPSJ0b3A6MHB4O2xlZnQ6MTJweCIgYXJpYS1oaWRkZW49InRydWUiIGpzYWN0aW9uPSJQZmpDTWIiIHRhYmluZGV4PSItMSIgYXJpYS1sYWJlbD0iRm9ycmlnZSIgcm9sZT0iYnV0dG9uIj48Zy1mYWIgY2xhc3M9InNyOWhlYyBPdlFrU2IgczNJQjMiIHN0eWxlPSJiYWNrZ3JvdW5kLWNvbG9yOiNmZmY7Y29sb3I6IzcwNzU3YSI+PHNwYW4gY2xhc3M9IlU4djUxZSBTM1BCMmQgejFhc0NlIj48c3ZnIGZvY3VzYWJsZT0iZmFsc2UiIGFyaWEtaGlkZGVuPSJ0cnVlIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNCAyNCI+PHBhdGggZD0iTTE1LjQxIDcuNDFMMTQgNmwtNiA2IDYgNiAxLjQxLTEuNDFMMTAuODMgMTJ6Ij48L3BhdGg+PC9zdmc+PC9zcGFuPjwvZy1mYWI+PC9nLWxlZnQtYnV0dG9uPjwvZGl2PjxkaXYganNuYW1lPSJBSzZ5bmUiIGNsYXNzPSJFUU9HaGUiIGRhdGEtdmVkPSIwYWhVS0V3ajBnWkthbF9PVkF4Vm9FeEFJSFNOU0MtSVF5Sm9SQ0FvIj48Zy1yaWdodC1idXR0b24ganNuYW1lPSJJSEZNNCIgc3R5bGU9InRvcDowcHg7cmlnaHQ6MTJweCIgYXJpYS1oaWRkZW49InRydWUiIGpzYWN0aW9uPSJzWVBHZGIiIGNsYXNzPSJ3Z2JSTmIgVmRlaEJmIHRIVDBsIE9aNWJSZCBUOVdoNSIgdGFiaW5kZXg9Ii0xIiBhcmlhLWxhYmVsPSJOZXN0ZSIgcm9sZT0iYnV0dG9uIj48Zy1mYWIgY2xhc3M9InNyOWhlYyBPdlFrU2IgczNJQjMiIHN0eWxlPSJiYWNrZ3JvdW5kLWNvbG9yOiNmZmY7Y29sb3I6IzcwNzU3YSI+PHNwYW4gY2xhc3M9IlU4djUxZSBTM1BCMmQgejFhc0NlIj48c3ZnIGZvY3VzYWJsZT0iZmFsc2UiIGFyaWEtaGlkZGVuPSJ0cnVlIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNCAyNCI+PHBhdGggZD0iTTEwIDZMOC41OSA3LjQxIDEzLjE3IDEybC00LjU4IDQuNTlMMTAgMThsNi02eiI+PC9wYXRoPjwvc3ZnPjwvc3Bhbj48L2ctZmFiPjwvZy1yaWdodC1idXR0b24+PC9kaXY+PHNjcmlwdCBub25jZT0iWU95SEgzbHRPbUQ5Qm95X1pCeUFsUSI+KGZ1bmN0aW9uKCl7Cih0aGlzfHxzZWxmKS5CcXBrOWU9ZnVuY3Rpb24oZixkLG4sZSxrLHApe3ZhciBnPWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGYpO2lmKGcmJihnLm9mZnNldFdpZHRoIT09MHx8Zy5vZmZzZXRIZWlnaHQhPT0wKSl7dmFyIGw9Zy5xdWVyeVNlbGVjdG9yKCJkaXYiKSxoPWwucXVlcnlTZWxlY3RvcigiZGl2IiksYT0wO2Y9TWF0aC5tYXgobC5zY3JvbGxXaWR0aC1sLm9mZnNldFdpZHRoLDApO2lmKGQ+MCYmKGg9aC5jaGlsZHJlbixhPWhbZF0ub2Zmc2V0TGVmdC1oWzBdLm9mZnNldExlZnQsZSkpe2Zvcih2YXIgbT1hPTA7bTxkOysrbSlhKz1oW21dLm9mZnNldFdpZHRoO2E9TWF0aC5taW4oZixhKX1hKz1uO2Q9TWF0aC5taW4oZT9mLWE6YSxmKTtsLnNjcm9sbExlZnQ9ZSYmcD9hOmUmJms/LWE6ZDt2YXIgYj1nLnF1ZXJ5U2VsZWN0b3IoIltqc25hbWU9c0lKbURmXSIpLGM9Zy5xdWVyeVNlbGVjdG9yKCJbanNuYW1lPUlIRk00XSIpO2ImJmMmJihlPVJlZ0V4cCgiXFxidEhUMGxcXGIiKSxrPVJlZ0V4cCgiXFxicFFYY0hjXFxiIiksYi5jbGFzc05hbWU9Yi5jbGFzc05hbWUucmVwbGFjZShlLCIiKSxjLmNsYXNzTmFtZT1jLmNsYXNzTmFtZS5yZXBsYWNlKGUsIiIpLGQ9PT0wP2IuY2xhc3NOYW1lPSJwUVhjSGMgIitiLmNsYXNzTmFtZTpiLmNsYXNzTmFtZT1iLmNsYXNzTmFtZS5yZXBsYWNlKGssIiIpLGQ9PT1mP2MuY2xhc3NOYW1lPSJwUVhjSGMgIitjLmNsYXNzTmFtZTpjLmNsYXNzTmFtZT1jLmNsYXNzTmFtZS5yZXBsYWNlKGssIiIpLHNldFRpbWVvdXQoZnVuY3Rpb24oKXtiLmNsYXNzTmFtZSs9IiB0SFQwbCI7Yy5jbGFzc05hbWUrPSIgdEhUMGwifSw1MCkpfX07fSkuY2FsbCh0aGlzKTsoZnVuY3Rpb24oKXt2YXIgaWQ9J19ZM3BuYXJURUxlaW13UEFQbzZTdGtBNF8zJzt2YXIgaW5kZXg9MDt2YXIgb2Zmc2V0PTA7dmFyIGlzX3J0bD1mYWxzZTt2YXIgaXNfZ2Vja289dHJ1ZTt2YXIgaXNfZWRnZT1mYWxzZTt2YXIgaW5pdD0nQnFwazllJzt3aW5kb3dbaW5pdF0oaWQsaW5kZXgsb2Zmc2V0LGlzX3J0bCxpc19nZWNrbyxpc19lZGdlKTt9KSgpOzwvc2NyaXB0PjwvZGl2PjwvZGl2PjwvZGl2PjxkaXYgY2xhc3M9IlNEa0VQIj48ZGl2IGpzbmFtZT0ia2V4M0YiIGNsYXNzPSJVTU9ZaGQiPjxkaXYgY2xhc3M9IkE3c1BWIHRYNjFVYiIganNjb250cm9sbGVyPSJWdE1maiIganNuYW1lPSJhQUpnWiIganNkYXRhPSJJOHdzb2I7XztZM3BuYXJURUxlaW13UEFQbzZTdGtBNDMiIGpzYWN0aW9uPSJqTmh6bmY6TmdvblFjO1RzSUZwYzphR0FEN2U7RlU4ZHBkOlZIM1hCYjtieTlqVzpiZnZrcGQ7cFdWS3hiOnlNTHZVZDtibHVyOmRPT0xuZTtrZXlkb3duOm5CNGVCYiI+PGRpdiBqc2NvbnRyb2xsZXI9Imp5d0VrZiIgZGF0YS1oPSIxIiBkYXRhLXBvcz0iNSIganNhY3Rpb249ImZvY3VzaW46RzVXQlljO2ZvY3Vzb3V0OnJuYURPZDttb3VzZWVudGVyOnRpNmhHYzttb3VzZWxlYXZlOmlBSldIOyIgY2xhc3M9InkxeWFkZiIganNzaGFkb3c9IiI+PHN0eWxlPi55MXlhZGZ7cG9zaXRpb246cmVsYXRpdmU7ZGlzcGxheTppbmxpbmUtYmxvY2t9PC9zdHlsZT48c3BhbiBqc25hbWU9ImJOOTdQYyIganNzbG90PSIiIGRhdGEtaHZlaWQ9IjEyIiBkYXRhLXZlZD0iMGFoVUtFd2owZ1pLYWxfT1ZBeFZvRXhBSUhTTlNDLUlRbDhJVENBdyI+PGJ1dHRvbiBqc25hbWU9ImtvMFp5ZSIgY2xhc3M9IlViYkFXZSIgYXJpYS1sYWJlbD0iTGFzdCBvcHAgZmlsZXIgZWxsZXIgYmlsZGVyIiBhcmlhLWhhc3BvcHVwPSJtZW51IiB0YWJpbmRleD0iMCIgdHlwZT0iYnV0dG9uIiBqc2FjdGlvbj0iQU80bUo7Ymx1cjpkT09MbmU7a2V5ZG93bjpZUjhzSWQiIGRhdGEtdmVkPSIwYWhVS0V3ajBnWkthbF9PVkF4Vm9FeEFJSFNOU0MtSVEwSjBSQ0EwIj48c3BhbiBjbGFzcz0id1BTWkJlIj48c3ZnIGFyaWEtaGlkZGVuPSJ0cnVlIiBmb2N1c2FibGU9ImZhbHNlIiB2aWV3Qm94PSIwIC05NjAgOTYwIDk2MCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48cGF0aCBkPSJNNDM0LjUtNDM0LjVIMTkxLjg3di05MUg0MzQuNXYtMjQyLjYzaDkxdjI0Mi42M2gyNDIuNjN2OTFINTI1LjV2MjQyLjYzaC05MVYtNDM0LjVaIiBmaWxsPSJjdXJyZW50Q29sb3IiPjwvcGF0aD48L3N2Zz48L3NwYW4+PC9idXR0b24+PC9zcGFuPjwvZGl2PjxkaXYgY2xhc3M9Im9NQnl5ZiIgZGF0YS1odmVpZD0iMTQiIGRhdGEtdmVkPSIwYWhVS0V3ajBnWkthbF9PVkF4Vm9FeEFJSFNOU0MtSVF1cFlTQ0E0Ij48dWwgY2xhc3M9IkZIUnc5ZCIgcm9sZT0ibWVudSI+PGxpIHJvbGU9InByZXNlbnRhdGlvbiI+PGJ1dHRvbiBjbGFzcz0iaXpON0lmIiByb2xlPSJtZW51aXRlbSIganNuYW1lPSJFQlhGb2IiIGpzYWN0aW9uPSJxMTNUR2YiIHRhYmluZGV4PSIwIiB0eXBlPSJidXR0b24iIGRhdGEtdmVkPSIwYWhVS0V3ajBnWkthbF9PVkF4Vm9FeEFJSFNOU0MtSVExcDBSQ0E4Ij48c3BhbiBhcmlhLWhpZGRlbj0idHJ1ZSIgc3R5bGU9ImhlaWdodDoyMHB4O2xpbmUtaGVpZ2h0OjIwcHg7d2lkdGg6MjBweCIgY2xhc3M9InoxYXNDZSI+PHN2ZyBmb2N1c2FibGU9ImZhbHNlIiBhcmlhLWhpZGRlbj0idHJ1ZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB2aWV3Qm94PSIwIC05NjAgOTYwIDk2MCIgaGVpZ2h0PSIyNCIgd2lkdGg9IjI0Ij48cGF0aCBkPSJNNDgwLTQ4MFpNMjAwLTEyMHEtMzMsMC01Ni41LTIzLjVUMTIwLTIwMFYtNzYwcTAtMzMgMjMuNS01Ni41VDIwMC04NDBINTIwcTAsMTcgMCwzN3QwLDQzSDIwMHY1NjBINzYwVi01MjBxMjMsMCA0MywwdDM3LDB2MzIwcTAsMzMtMjMuNSw1Ni41VDc2MC0xMjBIMjAwWm00MC0xNjBINzIwTDU3MC00ODBMNDUwLTMyMEwzNjAtNDQwTDI0MC0yODBaTTY4MC02MDB2LTgwSDYwMHYtODBoODB2LTgwaDgwdjgwaDgwdjgwSDc2MHY4MEg2ODBaIj48L3BhdGg+PC9zdmc+PC9zcGFuPjxzcGFuPkxlZ2cgdGlsIGJpbGRlcjwvc3Bhbj48c3BhbiBjbGFzcz0iYmdNNUVlIHoxYXNDZSBySDZsNiIgc3R5bGU9ImhlaWdodDoyMHB4O2xpbmUtaGVpZ2h0OjIwcHg7d2lkdGg6MjBweCI+PHN2ZyBmb2N1c2FibGU9ImZhbHNlIiBhcmlhLWhpZGRlbj0idHJ1ZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB2aWV3Qm94PSIwIDAgMjQgMjQiPjxwYXRoIGQ9Ik05IDE2LjE3TDQuODMgMTJsLTEuNDIgMS40MUw5IDE5IDIxIDdsLTEuNDEtMS40MXoiPjwvcGF0aD48L3N2Zz48L3NwYW4+PC9idXR0b24+PC9saT48bGkgcm9sZT0icHJlc2VudGF0aW9uIj48YnV0dG9uIGNsYXNzPSJpek43SWYiIHJvbGU9Im1lbnVpdGVtIiBqc25hbWU9ImgwVEQzIiBqc2FjdGlvbj0icTEzVEdmIiB0YWJpbmRleD0iMCIgdHlwZT0iYnV0dG9uIiBkYXRhLXZlZD0iMGFoVUtFd2owZ1pLYWxfT1ZBeFZvRXhBSUhTTlNDLUlRMUowUkNCQSI+PHNwYW4gYXJpYS1oaWRkZW49InRydWUiIHN0eWxlPSJoZWlnaHQ6MjBweDtsaW5lLWhlaWdodDoyMHB4O3dpZHRoOjIwcHgiIGNsYXNzPSJ6MWFzQ2UiPjxzdmcgZm9jdXNhYmxlPSJmYWxzZSIgYXJpYS1oaWRkZW49InRydWUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgdmlld0JveD0iMCAtOTYwIDk2MCA5NjAiIGhlaWdodD0iMjQiIHdpZHRoPSIyNCI+PHBhdGggZD0iTTcyMC0zMzBxMCwxMDQtNzMsMTc3VDQ3MC04MFQyOTMtMTUzVDIyMC0zMzBWLTcwMHEwLTc1IDUyLjUtMTI3LjVUNDAwLTg4MHQxMjcuNSw1Mi41VDU4MC03MDB2MzUwcTAsNDYtMzIsNzh0LTc4LDMydC03OC0zMnQtMzItNzhWLTcyMGg4MHYzNzBxMCwxMyA4LjUsMjEuNVQ0NzAtMzIwdDIxLjUtOC41VDUwMC0zNTBWLTcwMHEtMS00Mi0yOS41LTcxVDQwMC04MDB0LTcxLDI5dC0yOSw3MXYzNzBxLTEsNzEgNDksMTIwLjVUNDcwLTE2MHE3MCwwIDExOS00OS41VDY0MC0zMzBWLTcyMGg4MHYzOTBaIj48L3BhdGg+PC9zdmc+PC9zcGFuPjxzcGFuPkxlZ2cgdGlsIGZpbGVyPC9zcGFuPjxzcGFuIGNsYXNzPSJiZ001RWUgejFhc0NlIHJINmw2IiBzdHlsZT0iaGVpZ2h0OjIwcHg7bGluZS1oZWlnaHQ6MjBweDt3aWR0aDoyMHB4Ij48c3ZnIGZvY3VzYWJsZT0iZmFsc2UiIGFyaWEtaGlkZGVuPSJ0cnVlIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNCAyNCI+PHBhdGggZD0iTTkgMTYuMTdMNC44MyAxMmwtMS40MiAxLjQxTDkgMTkgMjEgN2wtMS40MS0xLjQxeiI+PC9wYXRoPjwvc3ZnPjwvc3Bhbj48L2J1dHRvbj48L2xpPjwvdWw+PGlucHV0IGpzbmFtZT0id2NhV2RjIiBhY2NlcHQ9ImltYWdlL2F2aWYsaW1hZ2UvYm1wLGltYWdlL2pwZWcsaW1hZ2UvcG5nLGltYWdlL3dlYnAsaW1hZ2UvaGVpZixpbWFnZS9oZWljIiBoaWRkZW49IiIgdHlwZT0iZmlsZSIganNhY3Rpb249ImNoYW5nZTpmajB2MGI7ckhqUHBjIj48aW5wdXQganNuYW1lPSJ2aGZIeGQiIGFjY2VwdD0iKi8qIiBoaWRkZW49IiIgdHlwZT0iZmlsZSIganNhY3Rpb249ImNoYW5nZTpmajB2MGI7ckhqUHBjIj48L2Rpdj48L2Rpdj48L2Rpdj48ZGl2IGpzY29udHJvbGxlcj0idlpyMnJiIiBqc25hbWU9ImdMRnlmIiBjbGFzcz0iYTRiSWMiIGRhdGEtbW5yPSI4IiBqc2FjdGlvbj0iS2pzcVBkO2lucHV0OkxnNVNWO2JsdXI6ZnBmVEVlO3Bhc3RlOlY2NGlTYzttb3VzZWRvd246TGh2VTJlIj48c3R5bGU+LmdMRnlmLC5ZYWNRdiwuak9BdGl7Zm9udDoxNnB4IEdvb2dsZSBTYW5zLEFyaWFsLHNhbnMtc2VyaWY7bGluZS1oZWlnaHQ6NDBweDtmb250LXNpemU6MTZweDtmbGV4OjEwMCU7fXRleHRhcmVhLmdMRnlmLC5ZYWNRdiwuak9BdGl7bGluZS1oZWlnaHQ6MjJweDtib3JkZXItYm90dG9tOjhweCBzb2xpZCB0cmFuc3BhcmVudDtwYWRkaW5nLXRvcDoxNHB4O292ZXJmbG93LXg6aGlkZGVufS5zYmZjIHRleHRhcmVhLmdMRnlme3doaXRlLXNwYWNlOnByZS1saW5lO292ZXJmbG93LXk6YXV0b30uZ0xGeWZ7d2lkdGg6MTAwJTtyZXNpemU6bm9uZTtiYWNrZ3JvdW5kLWNvbG9yOnRyYW5zcGFyZW50O2JvcmRlcjpub25lO21hcmdpbjowO3BhZGRpbmc6MDtjb2xvcjpyZ2JhKDAsMCwwLC44Nyk7d29yZC13cmFwOmJyZWFrLXdvcmQ7b3V0bGluZTpub25lO2Rpc3BsYXk6ZmxleDt0YXAtaGlnaGxpZ2h0LWNvbG9yOnRyYW5zcGFyZW50fS5hNGJJY3tkaXNwbGF5OmZsZXg7ZmxleC13cmFwOndyYXA7ZmxleDoxO3Bvc2l0aW9uOnJlbGF0aXZlfS5ZYWNRdiwuak9BdGl7Y29sb3I6dHJhbnNwYXJlbnQ7d2hpdGUtc3BhY2U6cHJlO3Bvc2l0aW9uOmFic29sdXRlO3BvaW50ZXItZXZlbnRzOm5vbmU7c2Nyb2xsYmFyLXdpZHRoOm5vbmV9LllhY1F2IHNwYW57dGV4dC1kZWNvcmF0aW9uOiNiMzI2MWUgZG90dGVkIHVuZGVybGluZX0uZ0xGeWY6OnBsYWNlaG9sZGVye2NvbG9yOnZhcigtLUlYb3hVZSl9Lkcxc1k0ZCB0ZXh0YXJlYS5nTEZ5ZiwuRzFzWTRkIC5ZYWNRdiwuRzFzWTRkIC5qT0F0aXtib3JkZXItYm90dG9tOjB9Lkcxc1k0ZC5kaVRWWmIgdGV4dGFyZWEuZ0xGeWZ7LXdlYmtpdC1tYXNrLWltYWdlOmxpbmVhci1ncmFkaWVudChyZ2JhKDAsMCwwLDApIDdweCxyZ2IoMCwwLDApIGNhbGMoMTRweCArIDdweCkpO21hc2staW1hZ2U6bGluZWFyLWdyYWRpZW50KHJnYmEoMCwwLDAsMCkgN3B4LHJnYigwLDAsMCkgY2FsYygxNHB4ICsgN3B4KSl9Lkcxc1k0ZC5JQXdmZmYgdGV4dGFyZWEuZ0xGeWZ7LXdlYmtpdC1tYXNrLWltYWdlOmxpbmVhci1ncmFkaWVudChyZ2JhKDAsMCwwLDApIDdweCxyZ2IoMCwwLDApIGNhbGMoMTRweCArIDdweCkscmdiKDAsMCwwKSBjYWxjKDEwMCUgLSA4cHgpLHJnYmEoMCwwLDAsMCkgMTAwJSk7bWFzay1pbWFnZTpsaW5lYXItZ3JhZGllbnQocmdiYSgwLDAsMCwwKSA3cHgscmdiKDAsMCwwKSBjYWxjKDE0cHggKyA3cHgpLHJnYigwLDAsMCkgY2FsYygxMDAlIC0gOHB4KSxyZ2JhKDAsMCwwLDApIDEwMCUpfTwvc3R5bGU+PGRpdiBqc25hbWU9InZkTHN3IiBjbGFzcz0iWWFjUXYiPjwvZGl2Pjx0ZXh0YXJlYSBqc25hbWU9InlaaUpiZSIgY2xhc3M9ImdMRnlmIiBhcmlhLWNvbnRyb2xzPSJBbGg2aWQiIGFyaWEtb3ducz0iQWxoNmlkIiBhdXRvZm9jdXM9IiIgdGl0bGU9IlPDuGsiIGFyaWEtbGFiZWw9IlPDuGsiIHBsYWNlaG9sZGVyPSIiIGFyaWEtYXV0b2NvbXBsZXRlPSJib3RoIiBhcmlhLWV4cGFuZGVkPSJmYWxzZSIgYXJpYS1oYXNwb3B1cD0iZmFsc2UiIGF1dG9jYXBpdGFsaXplPSJvZmYiIGF1dG9jb21wbGV0ZT0ib2ZmIiBhdXRvY29ycmVjdD0ib2ZmIiBpZD0iQVBqRnFiIiBtYXhsZW5ndGg9IjIwNDgiIG5hbWU9InEiIHJvbGU9ImNvbWJvYm94IiByb3dzPSIxIiBzcGVsbGNoZWNrPSJmYWxzZSIgZGF0YS12ZWQ9IjBhaFVLRXdqMGdaS2FsX09WQXhWb0V4QUlIU05TQy1JUTM5VURDQkUiPjwvdGV4dGFyZWE+PC9kaXY+PGRpdiBjbGFzcz0iZk0zM2NlIGRSWVl4ZCI+PHN0eWxlPi5kUllZeGR7ZGlzcGxheTpmbGV4O2ZsZXg6MCAwIGF1dG87YWxpZ24taXRlbXM6c3RyZXRjaDtmbGV4LWRpcmVjdGlvbjpyb3c7aGVpZ2h0OjUwcHg7YmFja2dyb3VuZDppbmhlcml0O2JvcmRlci1yYWRpdXM6aW5oZXJpdH0ueXdLNlJke2JhY2tncm91bmQtY29sb3I6aW5oZXJpdDtkaXNwbGF5OmZsZXg7YWxpZ24tc2VsZjpjZW50ZXJ9PC9zdHlsZT48ZGl2IGpzbmFtZT0iVWRmVlhjIiBjbGFzcz0ieXdLNlJkIj48ZGl2IGpzY29udHJvbGxlcj0ianl3RWtmIiBkYXRhLWg9IjEiIGRhdGEtcG9zPSI1IiBqc2FjdGlvbj0iZm9jdXNpbjpHNVdCWWM7Zm9jdXNvdXQ6cm5hRE9kO21vdXNlZW50ZXI6dGk2aEdjO21vdXNlbGVhdmU6aUFKV0g7IiBjbGFzcz0ieTF5YWRmIiBqc3NoYWRvdz0iIj48c3BhbiBqc25hbWU9ImJOOTdQYyIganNzbG90PSIiIGRhdGEtaHZlaWQ9IjE4IiBkYXRhLXZlZD0iMGFoVUtFd2owZ1pLYWxfT1ZBeFZvRXhBSUhTTlNDLUlRbDhJVENCSSI+PHN0eWxlPi5EZEJINXtmbGV4OjEgMCBhdXRvO2Rpc3BsYXk6ZmxleDtjdXJzb3I6cG9pbnRlcjthbGlnbi1pdGVtczpjZW50ZXI7Ym9yZGVyOjA7YmFja2dyb3VuZDp0cmFuc3BhcmVudDtvdXRsaW5lOm5vbmU7cGFkZGluZzowIDhweDt3aWR0aDoyNHB4O2xpbmUtaGVpZ2h0OjQ0cHg7cG9zaXRpb246cmVsYXRpdmU7ei1pbmRleDoyfS5WbFhSa2Z7aGVpZ2h0OjI0cHg7d2lkdGg6MjRweDtkaXNwbGF5OmZsZXh9LlVLVTRDZnt2aXNpYmlsaXR5OmhpZGRlbjtoZWlnaHQ6MDt3aWR0aDowfTwvc3R5bGU+PGRpdiBqc2NvbnRyb2xsZXI9Ilk5dDlTYyIgY2xhc3M9IkRkQkg1IiBhcmlhLWxhYmVsPSJJbm5kYXRhdmVya3TDuHkiIHJvbGU9ImJ1dHRvbiIgdGFiaW5kZXg9IjAiIGpzYWN0aW9uPSJoNU0xMmU7cmN1UTZiOm5wVDJtZCI+PHNwYW4gY2xhc3M9IlZsWFJrZiI+PGltZyBjbGFzcz0iVUtVNENmIiBzcmM9Ii90aWEvdGlhLnBuZyIgdGlhX2Rpc2FibGVfc3dhcD0idHJ1ZSIgdGlhX2ZpZWxkX25hbWU9InEiIGpzbmFtZT0iSnlJcGRmIiBhbHQ9IiI+PHN2ZyBhcmlhLWhpZGRlbj0idHJ1ZSIgaGVpZ2h0PSIyNHB4IiB2aWV3Qm94PSIwIC05NjAgOTYwIDk2MCIgd2lkdGg9IjI0cHgiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZmlsbD0idmFyKC0tWUxOTkhjKSIgZD0iTTE2MC0yMDBxLTMzIDAtNTYuNS0yMy41VDgwLTI4MHYtNDAwcTAtMzMgMjMuNS01Ni41VDE2MC03NjBoNjQwcTMzIDAgNTYuNSAyMy41VDg4MC02ODB2NDAwcTAgMzMtMjMuNSA1Ni41VDgwMC0yMDBIMTYwWm0xNjAtMTIwaDMyMHYtODBIMzIwdjgwWk0yMDAtNDQwaDgwdi04MGgtODB2ODBabTEyMCAwaDgwdi04MGgtODB2ODBabTEyMCAwaDgwdi04MGgtODB2ODBabTEyMCAwaDgwdi04MGgtODB2ODBabTEyMCAwaDgwdi04MGgtODB2ODBaTTIwMC01NjBoODB2LTgwaC04MHY4MFptMTIwIDBoODB2LTgwaC04MHY4MFptMTIwIDBoODB2LTgwaC04MHY4MFptMTIwIDBoODB2LTgwaC04MHY4MFptMTIwIDBoODB2LTgwaC04MHY4MFoiPjwvcGF0aD48L3N2Zz48L3NwYW4+PC9kaXY+PC9zcGFuPjwvZGl2PjxkaXYganNjb250cm9sbGVyPSJqeXdFa2YiIGRhdGEtaD0iMSIgZGF0YS1wb3M9IjUiIGpzYWN0aW9uPSJmb2N1c2luOkc1V0JZYztmb2N1c291dDpybmFET2Q7bW91c2VlbnRlcjp0aTZoR2M7bW91c2VsZWF2ZTppQUpXSDsiIGNsYXNzPSJ5MXlhZGYiIGpzc2hhZG93PSIiPjxzcGFuIGpzbmFtZT0iYk45N1BjIiBqc3Nsb3Q9IiIgZGF0YS1odmVpZD0iMTkiIGRhdGEtdmVkPSIwYWhVS0V3ajBnWkthbF9PVkF4Vm9FeEFJSFNOU0MtSVFsOElUQ0JNIj48c3R5bGU+LmV0eHRqY3tmbGV4OjEgMCBhdXRvO2Rpc3BsYXk6ZmxleDtjdXJzb3I6cG9pbnRlcjthbGlnbi1pdGVtczpjZW50ZXI7Ym9yZGVyOjA7YmFja2dyb3VuZDp0cmFuc3BhcmVudDtwYWRkaW5nOjAgOHB4O3dpZHRoOjI0cHg7bGluZS1oZWlnaHQ6NDRweDtwb3NpdGlvbjpyZWxhdGl2ZTt6LWluZGV4OjJ9LmhXZFJHYntoZWlnaHQ6MjRweDt3aWR0aDoyNHB4O3ZlcnRpY2FsLWFsaWduOm1pZGRsZX08L3N0eWxlPjxkaXYganNjb250cm9sbGVyPSJscHNVQWYiIGpzbmFtZT0iUjVtZ3kiIGNsYXNzPSJldHh0amMiIGRhdGEtaXMtaW1hZ2VzLW1vZGU9ImZhbHNlIiBhcmlhLWxhYmVsPSJTw7hrIG1lZCBiaWxkZSIgcm9sZT0iYnV0dG9uIiB0YWJpbmRleD0iMCIganNhY3Rpb249InJjdVE2YjpucFQybWQ7aDVNMTJlO0FNcnVDZTpacHVnN2MiIGRhdGEtdmVkPSIwYWhVS0V3ajBnWkthbF9PVkF4Vm9FeEFJSFNOU0MtSVFocUVJQ0JRIj48c3ZnIGNsYXNzPSJoV2RSR2IiIGFyaWEtaGlkZGVuPSJ0cnVlIiBmb2N1c2FibGU9ImZhbHNlIiB2aWV3Ym94PSIwIC05NjAgOTYwIDk2MCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48cGF0aCBmaWxsPSJ2YXIoLS1ZTE5OSGMpIiBkPSJNNDgwLTMyMHEtNTAgMC04NS0zNXQtMzUtODVxMC01MCAzNS04NXQ4NS0zNXE1MCAwIDg1IDM1dDM1IDg1cTAgNTAtMzUgODV0LTg1IDM1Wm0yNDAgMTYwcS0zMyAwLTU2LjUtMjMuNVQ2NDAtMjQwcTAtMzMgMjMuNS01Ni41VDcyMC0zMjBxMzMgMCA1Ni41IDIzLjVUODAwLTI0MHEwIDMzLTIzLjUgNTYuNVQ3MjAtMTYwWm0tNDQwIDQwcS02NiAwLTExMy00N3QtNDctMTEzdi04MGg4MHY4MHEwIDMzIDIzLjUgNTYuNVQyODAtMjAwaDIwMHY4MEgyODBabTQ4MC0zMjB2LTE2MHEwLTMzLTIzLjUtNTYuNVQ2ODAtNjgwSDI4MHEtMzMgMC01Ni41IDIzLjVUMjAwLTYwMHYxMjBoLTgwdi0xMjBxMC02NiA0Ny0xMTN0MTEzLTQ3aDgwbDQwLTgwaDE2MGw0MCA4MGg4MHE2NiAwIDExMyA0N3Q0NyAxMTN2MTYwaC04MFoiPjwvcGF0aD48L3N2Zz48L2Rpdj48L3NwYW4+PC9kaXY+PC9kaXY+PGJ1dHRvbiBqc25hbWU9IkI2cmdhZCIgdGFiaW5kZXg9IjAiIGpzY29udHJvbGxlcj0iak5aREwiIGNsYXNzPSJwbFI1cWIiIHJvbGU9ImxpbmsiIGpzYWN0aW9uPSJjbGljazpidWpLSWY7bW91c2VlbnRlcjp2RzYwdWY7bW91c2VsZWF2ZTpOUzVYbDtDN1lDS2Q6d2V6ZkRkO3JjdVE2YjpucFQybWQ7ak5oem5mOkpzY3hzYztUc0lGcGM6Zkl0aTFiO2J5OWpXOmJmdmtwZDtGVThkcGQ6VkgzWEJiOyIgdHlwZT0iYnV0dG9uIiBkYXRhLXZlZD0iMGFoVUtFd2owZ1pLYWxfT1ZBeFZvRXhBSUhTTlNDLUlRdGVZUENCVSI+PHN0eWxlPi5wbFI1cWIuUEhqRnllIC5idlVrent0cmFuc2l0aW9uOm5vbmU7ZmlsdGVyOm5vbmV9LnBsUjVxYjpmb2N1cy12aXNpYmxlIC5idlVrentvdXRsaW5lOjJweCBzb2xpZCB2YXIoLS1Oc20wY2UpO291dGxpbmUtb2Zmc2V0OjJweH0ucGxSNXFiLlZ6VVBGZSAuUEQzemRje2NvbG9yOnZhcigtLVRNWVM5KX0ucGxSNXFiLlZ6VVBGZSAubFR4V0xle2NvbG9yOnZhcigtLXJySkpVYyl9LnBsUjVxYi5WelVQRmUgLmJ2VWt6e2JhY2tncm91bmQ6dmFyKC0tREVlU3RmKX0ucGxSNXFiOm5vdCguU3c0Q1NjKSAuTDBua1Vke2luc2V0LWlubGluZS1zdGFydDowO29wYWNpdHk6MTt0cmFuc2l0aW9uOm9wYWNpdHkgMzgzbXMgY3ViaWMtYmV6aWVyKDAuMzgsIDAuNzIsIDAuMDAsIDEuMDApfS5wbFI1cWIuU3c0Q1NjIC5MMG5rVWR7b3BhY2l0eTowO3Zpc2liaWxpdHk6aGlkZGVuO3RyYW5zaXRpb246b3BhY2l0eSAwcyx2aXNpYmlsaXR5IDBzfS5oTW8wVGJ7aW5zZXQtaW5saW5lLWVuZDowO29wYWNpdHk6MDt2aXNpYmlsaXR5OmhpZGRlbjt0cmFuc2l0aW9uOm9wYWNpdHkgMzgzbXMgY3ViaWMtYmV6aWVyKDAuMzgsIDAuNzIsIDAuMDAsIDEuMDApLHZpc2liaWxpdHkgMHMgbGluZWFyIDM4M21zfS5wbFI1cWIuU3c0Q1NjIC5oTW8wVGJ7b3BhY2l0eToxO3Zpc2liaWxpdHk6aW5oZXJpdDt0cmFuc2l0aW9uOm9wYWNpdHkgMzMzbXMgY3ViaWMtYmV6aWVyKDAuMzgsIDAuNzIsIDAuMDAsIDEuMDApLHZpc2liaWxpdHkgMHMgbGluZWFyIDBzfS5sVHhXTGV7dHJhbnNpdGlvbjp0cmFuc2Zvcm0gMzgzbXMgY3ViaWMtYmV6aWVyKDAuMzgsIDAuNzIsIDAuMDAsIDEuMDApfS5wbFI1cWIuU3c0Q1NjIC5sVHhXTGV7dHJhbnNpdGlvbjp0cmFuc2Zvcm0gMzMzbXMgY3ViaWMtYmV6aWVyKDAuMzgsIDAuNzIsIDAuMDAsIDEuMDApO3RyYW5zZm9ybTp0cmFuc2xhdGVYKGNhbGMoLTEqMjAqMXB4KSl9aHRtbFtkaXI9J3J0bCddIC5wbFI1cWIuU3c0Q1NjIC5sVHhXTGV7dHJhbnNmb3JtOnRyYW5zbGF0ZVgoY2FsYygyMCoxcHgpKX0ucGxSNXFiIC5QRDN6ZGN7cG9zaXRpb246YWJzb2x1dGU7Y29sb3I6dmFyKC0tWUxOTkhjKX0ubFR4V0xle2Rpc3BsYXk6aW5saW5lLWJsb2NrO21hcmdpbi1pbmxpbmUtc3RhcnQ6MjBweDt0cmFuc2Zvcm06dHJhbnNsYXRlWCgwKX0udTRVazNje2FsaWduLWl0ZW1zOmNlbnRlcjtkaXNwbGF5OmZsZXg7anVzdGlmeS1jb250ZW50OmNlbnRlcjtwb3NpdGlvbjpyZWxhdGl2ZTt6LWluZGV4OjF9LlBEM3pkY3tkaXNwbGF5OmlubGluZS1mbGV4O2FsaWduLWl0ZW1zOmNlbnRlcn0ubFR4V0xle3BhZGRpbmc6MCA0cHh9LnBsUjVxYnthbGlnbi1zZWxmOmNlbnRlcjtiYWNrZ3JvdW5kOmluaGVyaXQ7Ym9yZGVyLXJhZGl1czoxMDBweDtjdXJzb3I6cG9pbnRlcjtmbGV4LXNocmluazowO2ZvbnQtZmFtaWx5OnZhcigtLXFSOFgwKTtmb250LW9wdGljYWwtc2l6aW5nOm5vbmU7Zm9udC1zaXplOnZhcigtLWhibW5qZSk7Zm9udC13ZWlnaHQ6dmFyKC0tcDJMcXhlKTtsaW5lLWhlaWdodDp2YXIoLS1DYmRtRSk7bWFyZ2luLWlubGluZS1zdGFydDo4cHg7cGFkZGluZzowIDhweDtwb3NpdGlvbjpyZWxhdGl2ZTtoZWlnaHQ6MzZweDt9Lm1pbmlkaXYgLnBsUjVxYntoZWlnaHQ6MjRweH0ucGxSNXFiOmhvdmVyOjpiZWZvcmV7YmFja2dyb3VuZDp2YXIoLS1MbTU3MGIpfS5DY3hXN2J7cG9zaXRpb246YWJzb2x1dGU7aW5zZXQ6MDtwb2ludGVyLWV2ZW50czpub25lO29wYWNpdHk6MC42fS5idlVrentwb3NpdGlvbjphYnNvbHV0ZTt0b3A6MXB4O3JpZ2h0OjFweDtib3R0b206MXB4O2xlZnQ6MXB4O2JvcmRlci1yYWRpdXM6MTAwcHg7Y2xpcC1wYXRoOmluc2V0KDAgMCAwIDAgcm91bmQgMTAwcHgpO2JhY2tncm91bmQ6dmFyKC0tWEtNRHhjKX0ucGxSNXFiOm5vdCguUEhqRnllKTpob3ZlciAuYnZVa3p7ZmlsdGVyOmJsdXIoMnB4KX0ucGxSNXFiIC5idlVrejo6YWZ0ZXJ7Y29udGVudDonJzt0b3A6LTEwcHg7cmlnaHQ6LTEwcHg7Ym90dG9tOi0xMHB4O2xlZnQ6LTEwcHg7Ym9yZGVyLXJhZGl1czoxMDBweDtwb3NpdGlvbjphYnNvbHV0ZTtiYWNrZ3JvdW5kOmluaGVyaXQ7b3BhY2l0eTouNX0uTVRhNDdie2Rpc3BsYXk6YmxvY2s7cG9zaXRpb246YWJzb2x1dGU7dG9wOjQycHg7bGVmdDotMTkwcHg7b3ZlcmZsb3c6dmlzaWJsZX1AbWVkaWEgKGZvcmNlZC1jb2xvcnM6YWN0aXZlKXsucGxSNXFiIC5QRDN6ZGMsLnBsUjVxYiAubFR4V0xle2NvbG9yOkxpbmtUZXh0fX08L3N0eWxlPjxkaXYganNuYW1lPSJJVm1GMWUiIGNsYXNzPSJDY3hXN2IgQnpuVEZlIj48ZGl2IGpzbmFtZT0iSFFqMEEiIGNsYXNzPSJmWmhOTWUiPjxkaXYgY2xhc3M9IldrTVlJYiI+PGRpdiBqc25hbWU9IkpvRWZ6YyIgY2xhc3M9ImVydU1jYyI+PGRpdiBjbGFzcz0iVGRhaHVkIj48ZGl2IGNsYXNzPSJ0Z1Bqc2UiPjwvZGl2PjwvZGl2PjwvZGl2PjxkaXYgY2xhc3M9ImVydU1jYyBlT3VId2UiPjxkaXYgY2xhc3M9IlRkYWh1ZCI+PGRpdiBjbGFzcz0idGdQanNlIj48L2Rpdj48L2Rpdj48L2Rpdj48L2Rpdj48L2Rpdj48L2Rpdj48ZGl2IGNsYXNzPSJidlVreiI+PC9kaXY+PGRpdiBjbGFzcz0idTRVazNjIj48c3BhbiBjbGFzcz0iUEQzemRjIEwwbmtVZCB6MWFzQ2UiIHN0eWxlPSJoZWlnaHQ6MjBweDtsaW5lLWhlaWdodDoyMHB4O3dpZHRoOjIwcHgiPjxzdmcgZm9jdXNhYmxlPSJmYWxzZSIgYXJpYS1oaWRkZW49InRydWUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgZW5hYmxlLWJhY2tncm91bmQ9Im5ldyAwIDAgMjQgMjQiIGhlaWdodD0iMjQiIHZpZXdCb3g9IjAgMCAyNCAyNCIgd2lkdGg9IjI0Ij48Zz48cmVjdCBmaWxsPSJub25lIiBoZWlnaHQ9IjI0IiB3aWR0aD0iMjQiPjwvcmVjdD48L2c+PGc+PGc+PHBhdGggZD0iTTE3LjUgMTJjMC0zLjA0IDIuNDYtNS41IDUuNS01LjUtMy4wNCAwLTUuNS0yLjQ2LTUuNS01LjUgMCAzLjA0LTIuNDYgNS41LTUuNSA1LjUgMy4wNCAwIDUuNSAyLjQ2IDUuNSA1LjV6Ij48L3BhdGg+PHBhdGggZD0iTTE1LjY1IDExLjU4Yy4xOC0uNS4yNy0xLjAzLjMxLTEuNThoLTJjLS4xIDEuMDMtLjUxIDEuOTMtMS4yNyAyLjY5LS44OC44Ny0xLjk0IDEuMzEtMy4xOSAxLjMxQzcuMDMgMTQgNSAxMi4wNyA1IDkuNSA1IDcuMDMgNi45MyA1IDkuNSA1Yy40NiAwIC44OS4wOCAxLjMuMmwxLjU2LTEuNTZDMTEuNSAzLjIyIDEwLjU1IDMgOS41IDMgNS44NSAzIDMgNS44NSAzIDkuNVM1Ljg1IDE2IDkuNSAxNmMuNTYgMCAyLjI2LS4wNiAzLjgtMS4zbDYuMyA2LjMgMS40LTEuNC02LjMtNi4zYy40LS41LjcyLTEuMDguOTUtMS43MnoiPjwvcGF0aD48L2c+PC9nPjwvc3ZnPjwvc3Bhbj48c3BhbiBjbGFzcz0ibFR4V0xlIj5BSS1tb2R1czwvc3Bhbj48c3BhbiBjbGFzcz0iUEQzemRjIGhNbzBUYiB6MWFzQ2UiIHN0eWxlPSJoZWlnaHQ6MjBweDtsaW5lLWhlaWdodDoyMHB4O3dpZHRoOjIwcHgiPjxzdmcgZm9jdXNhYmxlPSJmYWxzZSIgYXJpYS1oaWRkZW49InRydWUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgdmlld0JveD0iMCAwIDI0IDI0Ij48cGF0aCBkPSJNMTIgNGwtMS40MSAxLjQxTDE2LjE3IDExSDR2MmgxMi4xN2wtNS41OCA1LjU5TDEyIDIwbDgtOHoiPjwvcGF0aD48L3N2Zz48L3NwYW4+PC9kaXY+PC9idXR0b24+PGJ1dHRvbiBqc25hbWU9InEwMFdDYyIgY2xhc3M9ImJ5YjRNZCIgc3R5bGU9ImRpc3BsYXk6bm9uZSIgYXJpYS1sYWJlbD0iU2VuZCIgdGFiaW5kZXg9IjAiIHR5cGU9InN1Ym1pdCIgZGF0YS12ZWQ9IjBhaFVLRXdqMGdaS2FsX09WQXhWb0V4QUlIU05TQy1JUTRkVURDQlkiPjxzcGFuIGNsYXNzPSJMQUpDT2MgejFhc0NlIiBhcmlhLWhpZGRlbj0idHJ1ZSI+PHN2ZyBmb2N1c2FibGU9ImZhbHNlIiBhcmlhLWhpZGRlbj0idHJ1ZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB2aWV3Qm94PSIwIDAgMjQgMjQiPjxwYXRoIGQ9Ik0xMiA0bC0xLjQxIDEuNDFMMTYuMTcgMTFINHYyaDEyLjE3bC01LjU4IDUuNTlMMTIgMjBsOC04eiI+PC9wYXRoPjwvc3ZnPjwvc3Bhbj48L2J1dHRvbj48L2Rpdj48L2Rpdj48ZGl2IGpzbmFtZT0ieWRqckVmIiBjbGFzcz0iV3dKSFZjIE1HZTFBYyIganNjb250cm9sbGVyPSJSVHZESSIganNkYXRhPSJJOHdzb2I7XztZM3BuYXJURUxlaW13UEFQbzZTdGtBNDMiIGpzYWN0aW9uPSJGVThkcGQ6VkgzWEJiO2pOaHpuZjpKc2N4c2M7VHNJRnBjOmZJdGkxYjtyY3VRNmI6bnBUMm1kIiBkYXRhLWh2ZWlkPSIyMyIgZGF0YS12ZWQ9IjBhaFVLRXdqMGdaS2FsX09WQXhWb0V4QUlIU05TQy1JUXVaWVNDQmMiPjxzdHlsZT4uTUdlMUFje2Rpc3BsYXk6ZmxleDtqdXN0aWZ5LWNvbnRlbnQ6c3BhY2UtYmV0d2Vlbjtwb3NpdGlvbjpyZWxhdGl2ZTtoZWlnaHQ6NDhweDttYXJnaW46MCA4cHggNHB4IDJweDtiYWNrZ3JvdW5kOmluaGVyaXQ7Ym9yZGVyLXJhZGl1czppbmhlcml0fS5ndGg1ZmR7ZGlzcGxheTpmbGV4O2hlaWdodDoxMDAlfS5NR2UxQWMgLkRCcVJre2Rpc3BsYXk6bm9uZX0uTUdlMUFjIC5SSzNIUGMuREJxUmt7ZGlzcGxheTpmbGV4fUBtZWRpYSAoZm9yY2VkLWNvbG9yczphY3RpdmUpey5NR2UxQWMgLlJLM0hQYy5EQnFSa3tib3JkZXI6MXB4IHNvbGlkIEJ1dHRvbkJvcmRlcn19LmdzaE5ie2Rpc3BsYXk6ZmxleH08L3N0eWxlPjxkaXYgY2xhc3M9ImdzaE5iIj48ZGl2IGpzbmFtZT0iRlB5Y1BjIiBjbGFzcz0iZ3RoNWZkIj48L2Rpdj48L2Rpdj48ZGl2IGpzbmFtZT0iQjc2M1RjIiBjbGFzcz0iZk0zM2NlIGRSWVl4ZCI+PC9kaXY+PC9kaXY+PGRpdiBqc25hbWU9Im12YUs3ZCIgY2xhc3M9Ik04SDhwYiIgZGF0YS12ZWQ9IjBhaFVLRXdqMGdaS2FsX09WQXhWb0V4QUlIU05TQy1JUTRkOElDQmciPjwvZGl2PjwvZGl2PjxkaXYganNuYW1lPSJJVm1GMWUiIGNsYXNzPSJCem5URmUiPjxkaXYganNuYW1lPSJIUWowQSIgY2xhc3M9ImZaaE5NZSI+PGRpdiBjbGFzcz0iV2tNWUliIj48ZGl2IGpzbmFtZT0iSm9FZnpjIiBjbGFzcz0iZXJ1TWNjIj48ZGl2IGNsYXNzPSJUZGFodWQiPjxkaXYgY2xhc3M9InRnUGpzZSI+PC9kaXY+PC9kaXY+PC9kaXY+PGRpdiBjbGFzcz0iZXJ1TWNjIGVPdUh3ZSI+PGRpdiBjbGFzcz0iVGRhaHVkIj48ZGl2IGNsYXNzPSJ0Z1Bqc2UiPjwvZGl2PjwvZGl2PjwvZGl2PjwvZGl2PjwvZGl2PjwvZGl2PjxkaXYganNjb250cm9sbGVyPSJEdm43ZmUiIGpzbmFtZT0iVVViVDkiIGNsYXNzPSJVVWJUOSBFeUJSdWIiIHN0eWxlPSJkaXNwbGF5Om5vbmUiIGpzYWN0aW9uPSJtb3VzZW91dDpJdHpEQ2Q7bW91c2VsZWF2ZTpNV2Zpa2I7aEJFSVZiOm5VWjlsZTtsZHlJeWU6Q21WT2djIiBkYXRhLXZlZD0iMGFoVUtFd2owZ1pLYWxfT1ZBeFZvRXhBSUhTTlNDLUlRNHRVRENCayI+PHN0eWxlPi5VVWJUOXtwb3NpdGlvbjphYnNvbHV0ZTt0ZXh0LWFsaWduOmxlZnQ7ei1pbmRleDozO2N1cnNvcjpkZWZhdWx0O3VzZXItc2VsZWN0Om5vbmU7d2lkdGg6MTAwJTttYXJnaW4tdG9wOi0xcHg7Zm9udC1mYW1pbHk6R29vZ2xlIFNhbnMsQXJpYWwsc2Fucy1zZXJpZjt9LlVVYlQ5IGJ7Zm9udC1mYW1pbHk6R29vZ2xlIFNhbnMsQXJpYWwsc2Fucy1zZXJpZjtmb250LXdlaWdodDo3MDB9LmFhalpDYntkaXNwbGF5OmZsZXg7ZmxleC1kaXJlY3Rpb246Y29sdW1uO21hcmdpbjowO3BhZGRpbmc6MDtvdmVyZmxvdzpoaWRkZW47YmFja2dyb3VuZDojZmZmO2JvcmRlci1yYWRpdXM6MCAwIDI0cHggMjRweDtib3gtc2hhZG93OjAgNHB4IDZweCByZ2JhKDMyLDMzLDM2LC4yOCk7Ym9yZGVyOjA7cGFkZGluZy1ib3R0b206NHB4fS5nRHRSbmJ7ZGlzcGxheTpmbGV4fS5wRDRxVGQgLmUxUjlVZHtwYWRkaW5nLWJvdHRvbToxNnB4fS5wRDRxVGQgLmUxUjlVZHttaW4td2lkdGg6NDclO3dpZHRoOjQ3JTttYXJnaW46OHB4IDE2cHggMH0ucEQ0cVRkIC5lMVI5VWQ6ZW1wdHl7ZGlzcGxheTpub25lfS5lcmt2UWV7cGFkZGluZy1ib3R0b206OHB4O2ZsZXg6YXV0bztvdmVyZmxvdy14OmhpZGRlbn0uUmpQdVZie2hlaWdodDoxcHg7bWFyZ2luOjAgMjZweCAwIDB9LlMzbkZuZHtkaXNwbGF5OmZsZXh9LlMzbkZuZCAuUmpQdVZiLC5TM25GbmQgLmFhalpDYntmbGV4OjAgMCBhdXRvfS5saDg3a2U6bGluaywubGg4N2tlOnZpc2l0ZWR7Y29sb3I6dmFyKC0tSktxeDIpO2N1cnNvcjpwb2ludGVyO2ZvbnQ6MTFweCBBcmlhbCxzYW5zLXNlcmlmO3BhZGRpbmc6MCA1cHg7dGV4dC1kZWNvcmF0aW9uOm5vbmU7ZmxleDphdXRvO2FsaWduLXNlbGY6ZmxleC1lbmQ7bWFyZ2luOjAgMTZweCA1cHggMH0ubGg4N2tlOmhvdmVye3RleHQtZGVjb3JhdGlvbjp1bmRlcmxpbmV9Lnh0U0NMe2JvcmRlci10b3A6MXB4IHNvbGlkICNlOGVhZWQ7cGFkZGluZy1ib3R0b206NHB4fS5zYjI3e3RyYW5zZm9ybTpzY2FsZSgwLjg1KX08L3N0eWxlPjxkaXYganNjb250cm9sbGVyPSJXbzNuOCIganNuYW1lPSJhYWR2aGUiIGpzbW9kZWw9IiBkNUVoSmUiIGRhdGEtYmt0PSJzZWFyY2hib3giIGRhdGEtZmhzPSIiIGRhdGEtbWFpbmRhdGE9J1tudWxsLG51bGwsbnVsbCwiYXV0b2NvbXBsZXRlX3VzZXJfZmVlZGJhY2tfa3BfaWQiLG51bGwsMTEsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDUwMTA3MTUsInNlYXJjaGJveCIsbnVsbCwiQXV0b2NvbXBsZXRlUHJlZGljdGlvbiIsbnVsbCxudWxsLG51bGwsbnVsbCwxMV0nIGRhdGEtb2ZibD0iMTE0LDEyMCwxMzQiIGRhdGEtcGlkPSI1MDEwNzE1IiBqc2FjdGlvbj0ia1B6RU86IE1sUDJqZTtxakx4UmM6IEZiaFJHO3c4ZjFmYzogaFJ3U2diO2txMnd4ZjogczVDVWlmO2FJSkFkZjogVWhEVW5kO3J3dUczYjogS0dRSEpkO0JxYlRiZTogbmFhNXZlO2tZQUtyZjogQ3FVR3JmO2h3aFJSZTogS3l4akNkO3JjdVE2YjogbnBUMm1kIiBqc2RhdGE9InZTVDdyYjtfO1kzcG5hclRFTGVpbXdQQVBvNlN0a0E0NCB6RUl5R2Q7XzsiPjxkaXYgaWQ9Il9ZM3BuYXJURUxlaW13UEFQbzZTdGtBNF80Ij48c3R5bGU+Lno4Z3I5ZXtjb2xvcjp2YXIoLS1iYlF4QWIpfTwvc3R5bGU+PHN0eWxlPi5pMWVXcGIgLkdURVJ6ZXtkaXNwbGF5Om5vbmV9Lmt5NGhmZHtkaXNwbGF5Om5vbmV9LmkxZVdwYiAua3k0aGZke2Rpc3BsYXk6YmxvY2t9PC9zdHlsZT48ZGl2IGpzbmFtZT0iR2tqZUlmIiBpZD0iX1kzcG5hclRFTGVpbXdQQVBvNlN0a0E0XzYiIGRhdGEtamlpcz0idXAiIGRhdGEtYXN5bmMtdHlwZT0ia3BfZmVlZGJhY2siIGNsYXNzPSJ5cCIgZGF0YS12ZWQ9IjBhaFVLRXdqMGdaS2FsX09WQXhWb0V4QUlIU05TQy1JUTY4Y0VDQm8iPjwvZGl2PjwvZGl2PjwvZGl2PjxkaXYganNjb250cm9sbGVyPSJQMTBPd2YiIGNsYXNzPSJZQjRoOSBreTRoZmQiIGFyaWEtbGFiZWw9IlZlbGcgaHZhIGR1IGdpciB0aWxiYWtlbWVsZGluZyBww6UiIGpzZGF0YT0idlNUN3JiO187WTNwbmFyVEVMZWltd1BBUG82U3RrQTQ0IiByb2xlPSJkaWFsb2ciIHRhYmluZGV4PSItMSIganNhY3Rpb249ImtQekVPOk1sUDJqZTtxakx4UmM6TWxQMmplO3c4ZjFmYzpoUndTZ2I7a3Eyd3hmOnM1Q1VpZiIgZGF0YS12ZWQ9IjBhaFVLRXdqMGdaS2FsX09WQXhWb0V4QUlIU05TQy1JUWxva0dDQnMiPjxkaXYgY2xhc3M9ImN0aVlLZCIgaWQ9Il9ZM3BuYXJURUxlaW13UEFQbzZTdGtBNF84Ij48L2Rpdj48L2Rpdj48ZGl2IGpzbmFtZT0iUmpQdVZiIiBjbGFzcz0iUmpQdVZiIj48L2Rpdj48ZGl2IGpzbmFtZT0iYWFqWkNiIiBjbGFzcz0iYWFqWkNiIj48ZGl2IGNsYXNzPSJ4dFNDTCI+PC9kaXY+PGRpdiBjbGFzcz0iZ0R0Um5iIiBpZD0iQWxoNmlkIiByb2xlPSJwcmVzZW50YXRpb24iPjxkaXYganNuYW1lPSJlcmt2UWUiIGNsYXNzPSJlcmt2UWUiPjwvZGl2PjxkaXYganNuYW1lPSJ0b3ZFaWIiIGNsYXNzPSJlMVI5VWQiIHJvbGU9InByZXNlbnRhdGlvbiI+PC9kaXY+PC9kaXY+PHN0eWxlPiNzaEoyVmJ7ZGlzcGxheTpub25lfS5PQk1FbmJ7cGFkZGluZzowO21hcmdpbjowfS5HNDNmN2V7ZGlzcGxheTpmbGV4O2ZsZXgtZGlyZWN0aW9uOmNvbHVtbjttaW4td2lkdGg6MDtwYWRkaW5nOjA7bWFyZ2luOjA7bGlzdC1zdHlsZTpub25lfS5ZZTRqZmN7ZmxleC1kaXJlY3Rpb246cm93O2ZsZXgtd3JhcDp3cmFwfTwvc3R5bGU+PGRpdiBqc25hbWU9IkU4MGU5ZSIgY2xhc3M9Ik9CTUVuYiIgaWQ9InNoSjJWYiIgcm9sZT0icHJlc2VudGF0aW9uIj48dWwganNuYW1lPSJidzRlOWIiIGNsYXNzPSJHNDNmN2UiIHJvbGU9Imxpc3Rib3giPjwvdWw+PC9kaXY+PHN0eWxlPiN5blJyaWN7ZGlzcGxheTpub25lfS55blJyaWN7bGlzdC1zdHlsZS10eXBlOm5vbmU7ZmxleC1kaXJlY3Rpb246Y29sdW1uO2NvbG9yOnZhcigtLUlYb3hVZSk7Zm9udC1mYW1pbHk6R29vZ2xlIFNhbnMsQXJpYWwsc2Fucy1zZXJpZjtmb250LXNpemU6dmFyKC0tWk5nODgpO21hcmdpbjowIDIwcHggMCAxNnB4O3BhZGRpbmc6OHB4IDAgOHB4IDA7bGluZS1oZWlnaHQ6MTZweDt3aWR0aDoxMDAlfTwvc3R5bGU+PGRpdiBjbGFzcz0ieW5ScmljIiBpZD0ieW5ScmljIiByb2xlPSJwcmVzZW50YXRpb24iPjwvZGl2PjxzdHlsZT4uc2JjdHtkaXNwbGF5OmZsZXg7ZmxleC1kaXJlY3Rpb246Y29sdW1uO21pbi13aWR0aDowO292ZXJmbG93OmhpZGRlbjtwYWRkaW5nOjB9LmVJUEdSZHtmbGV4OmF1dG87ZGlzcGxheTpmbGV4O2FsaWduLWl0ZW1zOmNlbnRlcjttYXJnaW46MCAyMHB4IDAgMTRweH0ucGNUa1Nje2Rpc3BsYXk6ZmxleDtmbGV4OmF1dG87ZmxleC1kaXJlY3Rpb246Y29sdW1uO21pbi13aWR0aDowO3BhZGRpbmc6NnB4IDB9LnNiaWN7ZGlzcGxheTpmbGV4O2FsaWduLWl0ZW1zOmNlbnRlcjttYXJnaW46MCAxM3B4IDAgMXB4O30uc2JpYy52WU9rYmV7YmFja2dyb3VuZDpjZW50ZXIvY29udGFpbiBuby1yZXBlYXQ7Ym9yZGVyLXJhZGl1czo0cHg7bWluLWhlaWdodDozMnB4O21pbi13aWR0aDozMnB4O21hcmdpbjo0cHggN3B4IDRweCAtNXB4fS5zYnJlIC53TTZXN2R7bGluZS1oZWlnaHQ6MThweH0uQ2xKOVlie2Rpc3BsYXk6ZmxleDthbGlnbi1pdGVtczpjZW50ZXI7bGluZS1oZWlnaHQ6MTJweDtmb250LXNpemU6MTNweDtjb2xvcjojNzA3NTdhO21hcmdpbi10b3A6MnB4O3BhZGRpbmctcmlnaHQ6OHB4O21pbi13aWR0aDowfS5DbEo5WWIgLmRLVTdzY3tmbGV4OmF1dG87bWluLXdpZHRoOjA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXN9LnBxTnR3Znt3aGl0ZS1zcGFjZTpub3dyYXB9LmJ3cXlLZXtkaXNwbGF5Oi13ZWJraXQtYm94Oy13ZWJraXQtYm94LW9yaWVudDp2ZXJ0aWNhbDstd2Via2l0LWxpbmUtY2xhbXA6Mn0ud002Vzdke2Rpc3BsYXk6ZmxleDtmb250LXNpemU6MTZweDtjb2xvcjojMjEyMTIxO2ZsZXg6YXV0bzthbGlnbi1pdGVtczpjZW50ZXI7d29yZC1icmVhazpicmVhay1hbGw7cGFkZGluZy1yaWdodDo4cHh9LldnZ1FHZHtjb2xvcjojMjEyMTIxfS53TTZXN2Qgc3BhbntmbGV4OmF1dG99LkFRWjlWZHtkaXNwbGF5OmZsZXg7YWxpZ24tc2VsZjpzdHJldGNofS5zYmhse2JvcmRlci1yYWRpdXM6NHB4O2JhY2tncm91bmQ6I2YzZjVmNn0uVVViVDkuaTFlV3BiIC5QWlBabGYuc2JobHtiYWNrZ3JvdW5kOm5vbmV9LlVVYlQ5LmkxZVdwYiAuUFpQWmxmLnNiaGwgLmdtbFNWYntiYWNrZ3JvdW5kOnJnYmEoMjM0LDY3LDUzLC4xMil9QG1lZGlhIChmb3JjZWQtY29sb3JzOmFjdGl2ZSl7LnNiaGx7YmFja2dyb3VuZC1jb2xvcjpoaWdobGlnaHR9fS5UZmVXZmJ7ZGlzcGxheTpub25lfS54QW1yeWZ7ZGlzcGxheTpub25lfS5ESmJWRmIgLlRmZVdmYntkaXNwbGF5OmZsZXg7ZmxleC13cmFwOndyYXA7b3ZlcmZsb3cteDpoaWRkZW47d2lkdGg6MTAwJTtoZWlnaHQ6NTJweH0uREpiVkZiIC5BUVo5VmR7ZGlzcGxheTpub25lfS5ESmJWRmIgLnhBbXJ5Zntib3JkZXItcmFkaXVzOjEwMHB4O2JhY2tncm91bmQtY29sb3I6dmFyKC0teGhVR3djKX0uREpiVkZiIC5UZmVXZmJ7ZGlzcGxheTppbmhlcml0fS5ESmJWRmJ7YmFja2dyb3VuZDojZjhmOWZhO2JvcmRlci1yYWRpdXM6MjBweH0uREpiVkZiOmhvdmVye2JhY2tncm91bmQ6I2U4ZWFlZH0uREpiVkZiIC52WU9rYmV7aGVpZ2h0Oi0xcHg7d2lkdGg6LTFweDtmbGV4LXNocmluazowO21hcmdpbjoyMHB4IDAgMjBweCA4cHg7ZmxvYXQ6cmlnaHQ7Ym9yZGVyLXJhZGl1czoxNnB4O2JhY2tncm91bmQtY29sb3I6I2ZmZn0uREpiVkZiLnNiaGx7YmFja2dyb3VuZDojZThlYWVkfS5ESmJWRmIgLkNsSjlZYntkaXNwbGF5Om5vbmV9LkRKYlZGYiAud002Vzdke2ZsZXg6aW5pdGlhbH0uREpiVkZiIC53TTZXN2Qgc3Bhbnt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzOy13ZWJraXQtYm94LW9yaWVudDp2ZXJ0aWNhbDtkaXNwbGF5Oi13ZWJraXQtYm94Oy13ZWJraXQtbGluZS1jbGFtcDoyO292ZXJmbG93OmhpZGRlbn0uREpiVkZiIC5lSVBHUmR7ZGlzcGxheTpmbGV4O2ZsZXgtZGlyZWN0aW9uOnJvdy1yZXZlcnNlO2FsaWduLWl0ZW1zOnN0cmV0Y2g7bWFyZ2luOjAgMjBweCAwIDE0cHh9LkRKYlZGYiAuYTVSTGFje2xpbmUtaGVpZ2h0OnZhcigtLXFXWllFYyk7Zm9udC1zaXplOnZhcigtLUdpVG9KZik7Zm9udC1mYW1pbHk6dmFyKC0tRW91OFljKTtwYWRkaW5nLXRvcDoxNnB4O2NvbG9yOnZhcigtLWJiUXhBYik7bWFyZ2luLWJvdHRvbTphdXRvfS5ESmJWRmIgLmt6Q0Uye2ZvbnQtc2l6ZTp2YXIoLS1neXU1TCl9LkRKYlZGYiAud002VzdkIHNwYW57Y29sb3I6dmFyKC0tWUxOTkhjKTtsaW5lLWhlaWdodDozNnB4O2ZvbnQtd2VpZ2h0OjQwMDtmb250LXNpemU6MjhweDtmb250LWZhbWlseTpHb29nbGUgU2FucyxBcmlhbCxzYW5zLXNlcmlmfS5ESmJWRmIgLnBjVGtTY3ttYXJnaW46MjBweCA2cHg7cGFkZGluZzowfS5ESmJWRmIgLnZZT2tiZXttYXJnaW46MjBweCAwIDIwcHggMThweDtiYWNrZ3JvdW5kLWNvbG9yOiNmZmY7Ym9yZGVyLXJhZGl1czoyMHB4fS5ESmJWRmIgLkVPTEtPY3t3aWR0aDpjYWxjKDUwJSAtIDFweCl9LmlReFBSYntkaXNwbGF5OmZsZXg7Z2FwOjJweH0uREpiVkZiIC5FT0xLT2M6Zmlyc3QtY2hpbGR7Ym9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czoyMHB4fS5ESmJWRmIgLkVPTEtPYzpsYXN0LWNoaWxke2JvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOjIwcHh9LkRKYlZGYiAuQVpORG17Ym9yZGVyLXRvcC1yaWdodC1yYWRpdXM6MjBweDtib3JkZXItdG9wLWxlZnQtcmFkaXVzOjIwcHh9LkRKYlZGYiAuYTVSTGFjLmt6Q0UyIHNwYW57LXdlYmtpdC1saW5lLWNsYW1wOjN9LkRKYlZGYiAubG5uVlNle21hcmdpbi1ib3R0b206YXV0b30uREpiVkZiIC5hNVJMYWMgc3Bhbnt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzOy13ZWJraXQtYm94LW9yaWVudDp2ZXJ0aWNhbDtkaXNwbGF5Oi13ZWJraXQtYm94Oy13ZWJraXQtbGluZS1jbGFtcDoyO292ZXJmbG93OmhpZGRlbjttYXJnaW4tcmlnaHQ6MTBweH0jYmdlTFpke2Rpc3BsYXk6bm9uZX0ueEFtcnlme2JveC1zaXppbmc6Ym9yZGVyLWJveDthbGlnbi1pdGVtczpjZW50ZXI7aGVpZ2h0OjQwcHg7Ym9yZGVyLXJhZGl1czo4cHg7ZGlzcGxheTpmbGV4O2NvbG9yOnZhcigtLWJiUXhBYik7Ym9yZGVyOjFweCBzb2xpZCB2YXIoLS1tWFprcWMpO2JhY2tncm91bmQtY29sb3I6dmFyKC0teGhVR3djKTtsaW5lLWhlaWdodDp2YXIoLS1YV3YxaWYpfS54QW1yeWYuTHZxelJ7YmFja2dyb3VuZC1jb2xvcjojZThmMGZlO2N1cnNvcjpwb2ludGVyO2NvbG9yOnZhcigtLVRNWVM5KX0uanRBT2dke3doaXRlLXNwYWNlOm5vd3JhcDtmb250LWZhbWlseTpHb29nbGUgU2FucyxBcmlhbCxzYW5zLXNlcmlmO2ZvbnQtc2l6ZTp2YXIoLS1NaHM3ZGUpO21hcmdpbjowIDE0cHh9LlRmZVdmYntnYXA6MTJweCA2cHg7b3ZlcmZsb3cteDphdXRvOy1tcy1vdmVyZmxvdy1zdHlsZTpub25lO3Njcm9sbGJhci13aWR0aDpub25lfS5UZmVXZmI6Oi13ZWJraXQtc2Nyb2xsYmFye2Rpc3BsYXk6bm9uZX0udWhlYkdie2ZvbnQtc3R5bGU6aXRhbGljfS56aktTc2J7YmFja2dyb3VuZDp2YXIoLS1UTVlTOSk7Ym9yZGVyLXJhZGl1czo1MCU7bWFyZ2luLXJpZ2h0OjZweDt3aWR0aDo2cHg7aGVpZ2h0OjZweH1AbWVkaWEgKGZvcmNlZC1jb2xvcnM6YWN0aXZlKXsuQ2xKOVliIC56aktTc2J7YmFja2dyb3VuZC1jb2xvcjpDYW52YXNUZXh0fX0jWU1YZXtkaXNwbGF5Om5vbmV9PC9zdHlsZT48c3R5bGU+Lng2dnZOZHt3aWR0aDoyMHB4O2hlaWdodDoyMHB4O2ZpbGw6IzlhYTBhNn08L3N0eWxlPjxsaSBkYXRhLXZpZXctdHlwZT0iMSIgY2xhc3M9InNiY3QgUFpQWmxmIiBpZD0iWU1YZSIgcm9sZT0icHJlc2VudGF0aW9uIiBkYXRhLWF0dHJpZD0iQXV0b2NvbXBsZXRlUHJlZGljdGlvbiIgZGF0YS1lbnRpdHlpZD0iYXV0b2NvbXBsZXRlX3VzZXJfZmVlZGJhY2tfa3BfaWQiPjxkaXYgY2xhc3M9ImVJUEdSZCI+PGRpdiBjbGFzcz0ic2JpYyI+PGRpdiBjbGFzcz0iajBHSldkIiBzdHlsZT0iZGlzcGxheTpub25lIj48ZGl2PjxpbWcgY2xhc3M9InVIR0ZWZCBBWk5EbSIgYWx0PSIiIHN0eWxlPSJkaXNwbGF5Om5vbmUiPjwvZGl2PjxkaXYgY2xhc3M9ImlReFBSYiI+PGltZyBjbGFzcz0idUhHRlZkIEVPTEtPYyIgYWx0PSIiIHN0eWxlPSJkaXNwbGF5Om5vbmUiPjxpbWcgY2xhc3M9InVIR0ZWZCBFT0xLT2MiIGFsdD0iIiBzdHlsZT0iZGlzcGxheTpub25lIj48L2Rpdj48L2Rpdj48c3ZnIGNsYXNzPSJ4NnZ2TmQiIGFyaWEtaGlkZGVuPSJ0cnVlIiB2aWV3Qm94PSIwIC05NjAgOTYwIDk2MCI+PC9zdmc+PC9kaXY+PGRpdiBjbGFzcz0icGNUa1NjIj48ZGl2IGNsYXNzPSJsbm5WU2UiIGFyaWEtYXRvbWljPSJ0cnVlIiByb2xlPSJvcHRpb24iPjxkaXYgY2xhc3M9IndNNlc3ZCI+PHNwYW4+PC9zcGFuPjwvZGl2PjxkaXYgY2xhc3M9IkNsSjlZYiI+PGRpdiBjbGFzcz0iempLU3NiIj48L2Rpdj48c3BhbiBjbGFzcz0iZEtVN3NjIj48L3NwYW4+PC9kaXY+PGRpdiBjbGFzcz0iYTVSTGFjIj48c3Bhbj48L3NwYW4+PC9kaXY+PC9kaXY+PHN0eWxlPi5NYWdxTWMgLlpGaXdDZntiYWNrZ3JvdW5kLWNvbG9yOiNmZmY7Ym9yZGVyOjFweCBzb2xpZCB2YXIoLS1nUzVqWGIpO3dpZHRoOjEwMCV9Lk1hZ3FNYy5VNDhmRHtwYWRkaW5nOjA7bWFyZ2luLXRvcDoxNnB4fS5NYWdxTWMgLkJpOW9RZHtkaXNwbGF5Om5vbmV9Lk1hZ3FNY3twYWRkaW5nOjB9Lk1hZ3FNYzpob3ZlciAuTEd3bnhie2NvbG9yOnZhcigtLVlMTk5IYyl9LnNPbVBjZiAuWkZpd0Nme2JhY2tncm91bmQtY29sb3I6I2UwZTJlM308L3N0eWxlPjxkaXYgY2xhc3M9IlN6N0xlZSBNYWdxTWMgVTQ4ZkQiIHN0eWxlPSJkaXNwbGF5Om5vbmUiIGFyaWEtbGFiZWw9IlNlIG1lciIgcm9sZT0iYnV0dG9uIiB0YWJpbmRleD0iMCI+PHN0eWxlPi5VNDhmRHstd2Via2l0LXRhcC1oaWdobGlnaHQtY29sb3I6dHJhbnNwYXJlbnQ7Y3Vyc29yOnBvaW50ZXI7ZGlzcGxheTpibG9jaztsaW5lLWhlaWdodDoxOHB4O3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7d2hpdGUtc3BhY2U6bm93cmFwO3BhZGRpbmc6MTZweDtwYWRkaW5nLXRvcDowO21hcmdpbi10b3A6MTZweDtwb3NpdGlvbjpyZWxhdGl2ZX0uVFFjMWlkIC5VNDhmRHttYXJnaW4tdG9wOjE2cHh9LlU0OGZELmRmMTN1ZHttYXJnaW4tdG9wOjE2cHh9LlU0OGZELlRPUXlGY3ttYXJnaW4tdG9wOjB9LlU0OGZELnA4RkVJZntwYWRkaW5nLWJvdHRvbTowfS5qUktDVWQucDhGRUlmOjpiZWZvcmV7Ym90dG9tOi00cHh9LlU0OGZELmtlN000e3BhZGRpbmctbGVmdDowO3BhZGRpbmctcmlnaHQ6MH0ualJLQ1VkOjpiZWZvcmV7Ym90dG9tOjEycHg7Y29udGVudDonJztsZWZ0OjE2cHg7cG9zaXRpb246YWJzb2x1dGU7cmlnaHQ6MTZweDt0b3A6LTRweH1hLmpSS0NVZDpob3Zlcnt0ZXh0LWRlY29yYXRpb246bm9uZX08L3N0eWxlPjxzdHlsZT4uWkZpd0Nme2Rpc3BsYXk6ZmxleDthbGlnbi1pdGVtczpjZW50ZXI7anVzdGlmeS1jb250ZW50OmNlbnRlcjtwb3NpdGlvbjpyZWxhdGl2ZTt6LWluZGV4OjA7bWFyZ2luOjAgYXV0bzt3aWR0aDoxMDAlO2JvcmRlci1yYWRpdXM6MThweDtvdXRsaW5lOjFweCBzb2xpZCB0cmFuc3BhcmVudDtjb2xvcjp2YXIoLS1iY3hkM2IpO2JhY2tncm91bmQtY29sb3I6dmFyKC0tTVYyc0cpO2ZvbnQtc2l6ZTp2YXIoLS1oYm1uamUpO2ZvbnQtZmFtaWx5OnZhcigtLXFSOFgwKTtsaW5lLWhlaWdodDp2YXIoLS1DYmRtRSk7Zm9udC13ZWlnaHQ6dmFyKC0tT3ljanQpO21heC13aWR0aDozNzJweDttaW4taGVpZ2h0OjQwcHg7Ym9yZGVyLXJhZGl1czoyMHB4fUBtZWRpYSAoZm9yY2VkLWNvbG9yczphY3RpdmUpey5aRml3Q2Z7Ym9yZGVyOjFweCBzb2xpZCB0cmFuc3BhcmVudH19LlRRYzFpZCAuWkZpd0Nme21heC13aWR0aDp1bnNldH0uWmp0Z2diIC5aRml3Q2Z7bWF4LXdpZHRoOnVuc2V0fS5aRml3Q2Y6OmFmdGVye3Bvc2l0aW9uOmFic29sdXRlO3RvcDowO2xlZnQ6MDt3aWR0aDoxMDAlO2hlaWdodDoxMDAlO2JvcmRlci1yYWRpdXM6aW5oZXJpdDt6LWluZGV4Oi0xfS5aRml3Q2Y6aG92ZXI6OmFmdGVye2NvbnRlbnQ6Jyc7YmFja2dyb3VuZC1jb2xvcjpyZ2IoZnJvbSB2YXIoLS1ZTE5OSGMpIHIgZyBiLzAuMDgyNCl9LlpGaXdDZjphY3RpdmU6OmFmdGVye2NvbnRlbnQ6Jyc7YmFja2dyb3VuZC1jb2xvcjpyZ2IoZnJvbSB2YXIoLS1ZTE5OSGMpIHIgZyBiLzAuMjI0KX0ubkNGVXBjIC5aRml3Q2Z7d2lkdGg6MTAwJX0uQmk5b1Fke2JhY2tncm91bmQtY29sb3I6dmFyKC0tZ1M1alhiKTttYXJnaW4tdG9wOjE4cHg7cG9zaXRpb246YWJzb2x1dGU7Ym9yZGVyOjA7aGVpZ2h0OjFweDtsZWZ0OjA7d2lkdGg6MTAwJTttYXJnaW4tdG9wOjIwcHh9LlRRYzFpZCAuQmk5b1Fke2Rpc3BsYXk6bm9uZX0ua0M4QjRlIC5CaTlvUWR7ZGlzcGxheTpub25lfS53MmZLZGQgc3Zne3dpZHRoOmF1dG99LncyZktkZHtjb2xvcjp2YXIoLS1hbW5Qd2UpfS5MR3dueGJ7LXdlYmtpdC1saW5lLWNsYW1wOjE7d29yZC1icmVhazpicmVhay1hbGw7d2lkdGg6YXV0bztwYWRkaW5nLWxlZnQ6MDtwYWRkaW5nLXJpZ2h0OjhweDttYXgtd2lkdGg6Y2FsYygxMDAlIC0gNjRweCl9LkxHd254YjplbXB0eXtwYWRkaW5nLXJpZ2h0OjB9LkxHd254YiBzcGFuLC5MR3dueGIgZGl2e292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO3doaXRlLXNwYWNlOm5vd3JhcDt3aWR0aDphdXRvfTwvc3R5bGU+PGhyIGNsYXNzPSJCaTlvUWQiIGFyaWEtaGlkZGVuPSJ0cnVlIj48ZGl2IGNsYXNzPSJaRml3Q2YiPjxzcGFuIGNsYXNzPSJMR3dueGIgSkdEMnJkIj5TZSBtZXI8L3NwYW4+PHNwYW4gY2xhc3M9IncyZktkZCB6MWFzQ2UiIHN0eWxlPSJoZWlnaHQ6MjBweDtsaW5lLWhlaWdodDoyMHB4O3dpZHRoOjIwcHgiPjxzdmcgZm9jdXNhYmxlPSJmYWxzZSIgYXJpYS1oaWRkZW49InRydWUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgdmlld0JveD0iMCAwIDI0IDI0Ij48cGF0aCBkPSJNOC41OSAxNi41OUwxMy4xNyAxMiA4LjU5IDcuNDEgMTAgNmw2IDYtNiA2LTEuNDEtMS40MXoiPjwvcGF0aD48L3N2Zz48L3NwYW4+PC9kaXY+PC9kaXY+PC9kaXY+PGRpdiBjbGFzcz0iQVFaOVZkIiBhcmlhLWF0b21pYz0idHJ1ZSIgcm9sZT0iYnV0dG9uIj48c3R5bGU+LkpDSHBjYjpob3ZlciwuTHZxelIgLkpDSHBjYntjb2xvcjojMTU1OGQ2O3RleHQtZGVjb3JhdGlvbjp1bmRlcmxpbmV9LkpDSHBjYntjb2xvcjojNzA3NTdhO2ZvbnQ6MTNweCBBcmlhbCxzYW5zLXNlcmlmO2N1cnNvcjpwb2ludGVyO2FsaWduLXNlbGY6Y2VudGVyfUBtZWRpYSAoaG92ZXI6aG92ZXIpey5zYmFpe3Zpc2liaWxpdHk6aGlkZGVufS5zYmhsIC5zYmFpe3Zpc2liaWxpdHk6aW5oZXJpdH19PC9zdHlsZT48ZGl2IGNsYXNzPSJzYmFpIiByb2xlPSJwcmVzZW50YXRpb24iPlNsZXR0PC9kaXY+PC9kaXY+PC9kaXY+PC9saT48c3R5bGU+I2Q2SXRLYntkaXNwbGF5Om5vbmV9LkFCMkZkZHtkaXNwbGF5OmZsZXh9PC9zdHlsZT48bGkgY2xhc3M9IkFCMkZkZCIgZGF0YS12aWV3LXR5cGU9IjkiIGlkPSJkNkl0S2IiIHJvbGU9InByZXNlbnRhdGlvbiI+PGRpdiBjbGFzcz0iZUlQR1JkIj48ZGl2IGNsYXNzPSJaREhwIiBzdHlsZT0iZGlzcGxheTpub25lIiBpZD0iZlUweEFiIiByb2xlPSJwcmVzZW50YXRpb24iPjxkaXYgY2xhc3M9ImtadHIxYiI+PHN0eWxlPi5aREhwe3Bvc2l0aW9uOnJlbGF0aXZlO21hcmdpbjoyMHB4O2Rpc3BsYXk6ZmxleH0uREpiVkZiLC5vNk9GMHtiYWNrZ3JvdW5kOiNmOGY5ZmE7Ym9yZGVyLXJhZGl1czoyMHB4fS5vNk9GMDpob3ZlciwubzZPRjAuTHZxelJ7YmFja2dyb3VuZDojZTdlOGU5fS5vNk9GMCAuZUlQR1Jke2Rpc3BsYXk6YmxvY2t9QG1lZGlhIChmb3JjZWQtY29sb3JzOm5vbmUpey5vNk9GMC5zYmhse2JhY2tncm91bmQ6I2U3ZThlOX19QG1lZGlhIChmb3JjZWQtY29sb3JzOmFjdGl2ZSl7Lm82T0YwLnNiaGx7YmFja2dyb3VuZC1jb2xvcjpoaWdobGlnaHR9fS5vNk9GMCAuQVFaOVZke2Rpc3BsYXk6bm9uZX0ubzZPRjAgLnNiaWN7ZGlzcGxheTpub25lfS5vNk9GMCAucGNUa1Nje2Rpc3BsYXk6bm9uZX0ubzZPRjAgLndNNlc3ZHtkaXNwbGF5Om5vbmV9Lm82T0YwIC5lSVBHUmR7bWF4LXdpZHRoOjEwMCU7bWFyZ2luOjB9LlpESHAgLlNIRlBrYnttYXJnaW4tYm90dG9tOjEycHh9Lm82T0YwIC5TSEZQa2J7bGluZS1oZWlnaHQ6NDhweDtmb250LWZhbWlseTpHb29nbGUgU2FucyxBcmlhbCxzYW5zLXNlcmlmO2ZvbnQtc2l6ZTozNnB4O2ZvbnQtd2VpZ2h0OjQwMDtjb2xvcjp2YXIoLS1ZTE5OSGMpO2Rpc3BsYXk6LXdlYmtpdC1ib3g7b3ZlcmZsb3c6aGlkZGVuOy13ZWJraXQtbGluZS1jbGFtcDoyOy13ZWJraXQtYm94LW9yaWVudDp2ZXJ0aWNhbH0ubFFvb3pme2ZvbnQtc2l6ZToyOHB4fS5vNk9GMCAuSHJVbFVjLC5vNk9GMCAuUG5mcUxje2ZvbnQtZmFtaWx5OkFyaWFsLHNhbnMtc2VyaWY7Zm9udC13ZWlnaHQ6NDAwO21heC1oZWlnaHQ6NzJweDtjb2xvcjp2YXIoLS1iYlF4QWIpfS5aREhwIC5IclVsVWMsLlpESHAgLlBuZnFMY3tmb250LXNpemU6MThweDtsaW5lLWhlaWdodDoyNHB4fS5vNk9GMCAuYlRTZjVje2ZvbnQtZmFtaWx5Okdvb2dsZSBTYW5zLEFyaWFsLHNhbnMtc2VyaWY7Zm9udC13ZWlnaHQ6dmFyKC0tb2Z3VUJjKTtjb2xvcjp2YXIoLS1iYlF4QWIpfS5aREhwIC5iVFNmNWN7bGluZS1oZWlnaHQ6dmFyKC0tWFd2MWlmKTtmb250LXNpemU6dmFyKC0tTWhzN2RlKTttYXJnaW4tYm90dG9tOjZweH0uWkRIcCAuSHJVbFVjLC5aREhwIC5QbmZxTGN7b3ZlcmZsb3c6aGlkZGVuO2Rpc3BsYXk6LXdlYmtpdC1ib3g7LXdlYmtpdC1saW5lLWNsYW1wOjM7LXdlYmtpdC1ib3gtb3JpZW50OnZlcnRpY2FsfS5WbHQzd2J7Zm9udC1zdHlsZTpub3JtYWw7Zm9udC1mYW1pbHk6dmFyKC0tTEk0Qm8pO2ZvbnQtd2VpZ2h0OnZhcigtLW9md1VCYyk7Zm9udC1zaXplOnZhcigtLU1oczdkZSk7bGluZS1oZWlnaHQ6dmFyKC0tWFd2MWlmKTtwYWRkaW5nLXRvcDo4cHg7bWFyZ2luLXRvcDoxMnB4O2NvbG9yOnZhcigtLWJiUXhBYik7Ym9yZGVyLXRvcDoxcHggc29saWQgI2RhZGNlMDtkaXNwbGF5OmZsZXg7d2lkdGg6MTAwJX0uVG52MnRke3Bvc2l0aW9uOmFic29sdXRlO3RvcDowO3JpZ2h0OjB9Lno3NlJuYntwYWRkaW5nOjZweDt3aWR0aDoyNHB4O2hlaWdodDoyNHB4O2JhY2tncm91bmQtY29sb3I6dmFyKC0teGhVR3djKTtjb2xvcjp2YXIoLS1hbW5Qd2UpO2JvcmRlci1yYWRpdXM6OTk5OXB4O2JvcmRlcjoxcHggc29saWQgdmFyKC0tbVhaa3FjKTtjdXJzb3I6cG9pbnRlcn0uejc2Um5iLkx2cXpSe2NvbG9yOnZhcigtLVlMTk5IYyk7YmFja2dyb3VuZC1jb2xvcjojZTBlMmUzfS5rWnRyMWJ7ZGlzcGxheTpmbGV4O2ZsZXgtZGlyZWN0aW9uOmNvbHVtbjtmbGV4LWdyb3c6MTttaW4td2lkdGg6MH0uWEFGRDVje3dpZHRoOjIwMHB4O2hlaWdodDoyMDBweDtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLXhoVUd3Yyk7Ym9yZGVyLXJhZGl1czoyMHB4O21hcmdpbi1sZWZ0OjIwcHg7ZmxleC1zaHJpbms6MDtiYWNrZ3JvdW5kLXBvc2l0aW9uOmNlbnRlcjtiYWNrZ3JvdW5kLXJlcGVhdDpuby1yZXBlYXQ7YmFja2dyb3VuZC1zaXplOmNvbnRhaW59LlhBRkQ1Yy5pTkYwVmR7YmFja2dyb3VuZC1zaXplOjEzNnB4fS5aREhwIC5sbm5WU2V7Zm9udC1zaXplOjE4cHg7ZmxleC1ncm93OjF9LlpESHAgLkhyVWxVYywuWkRIcCAuUG5mcUxje2Rpc3BsYXk6ZmxleDtmbGV4LWRpcmVjdGlvbjpjb2x1bW59PC9zdHlsZT48ZGl2IGNsYXNzPSJsbm5WU2UiIGFyaWEtYXRvbWljPSJ0cnVlIiByb2xlPSJvcHRpb24iPjxkaXYgY2xhc3M9IlNIRlBrYiI+PC9kaXY+PGRpdiBjbGFzcz0iYlRTZjVjIj48L2Rpdj48ZGl2IGNsYXNzPSJQbmZxTGMiPjwvZGl2PjxkaXYgY2xhc3M9IkhyVWxVYyI+PC9kaXY+PC9kaXY+PGRpdiBjbGFzcz0iVG52MnRkIiBzdHlsZT0iZGlzcGxheTpub25lIiBhcmlhLWxhYmVsPSJVdHRhbGUgYXYgb3JkIiBhcmlhLWF0b21pYz0idHJ1ZSIgcm9sZT0iYnV0dG9uIj48c3BhbiBjbGFzcz0iejc2Um5iIHoxYXNDZSBKS3UxamUiPjxzdmcgZm9jdXNhYmxlPSJmYWxzZSIgYXJpYS1oaWRkZW49InRydWUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgdmlld0JveD0iMCAwIDI0IDI0Ij48cGF0aCBkPSJNMyA5djZoNGw1IDVWNEw3IDlIM3ptMTMuNSAzYzAtMS43Ny0xLjAyLTMuMjktMi41LTQuMDN2OC4wNWMxLjQ4LS43MyAyLjUtMi4yNSAyLjUtNC4wMnpNMTQgMy4yM3YyLjA2YzIuODkuODYgNSAzLjU0IDUgNi43MXMtMi4xMSA1Ljg1LTUgNi43MXYyLjA2YzQuMDEtLjkxIDctNC40OSA3LTguNzdzLTIuOTktNy44Ni03LTguNzd6Ij48L3BhdGg+PC9zdmc+PC9zcGFuPjwvZGl2PjxkaXYgY2xhc3M9IlZsdDN3YiIgc3R5bGU9ImRpc3BsYXk6bm9uZSI+PC9kaXY+PC9kaXY+PHNwYW4gY2xhc3M9IlhBRkQ1YyIgc3R5bGU9ImRpc3BsYXk6bm9uZSI+PC9zcGFuPjxkaXYgY2xhc3M9ImowR0pXZCIgc3R5bGU9ImRpc3BsYXk6bm9uZSI+PGRpdj48aW1nIGNsYXNzPSJ1SEdGVmQgQVpORG0iIGFsdD0iIiBzdHlsZT0iZGlzcGxheTpub25lIj48L2Rpdj48ZGl2IGNsYXNzPSJpUXhQUmIiPjxpbWcgY2xhc3M9InVIR0ZWZCBFT0xLT2MiIGFsdD0iIiBzdHlsZT0iZGlzcGxheTpub25lIj48aW1nIGNsYXNzPSJ1SEdGVmQgRU9MS09jIiBhbHQ9IiIgc3R5bGU9ImRpc3BsYXk6bm9uZSI+PC9kaXY+PC9kaXY+PC9kaXY+PC9kaXY+PC9saT48c3R5bGU+I1RONHJGZntkaXNwbGF5Om5vbmV9LklEVm52Y3tkaXNwbGF5OmlubGluZS1ibG9jaztvdmVyZmxvdzpoaWRkZW47bWF4LXdpZHRoOjIyM3B4O2JvcmRlci1yYWRpdXM6MTZweDtoZWlnaHQ6MTc4cHg7bWFyZ2luOi0ycHggLTEwcHggMnB4IDEwcHh9LklEVm52Yy5zYmhse2JvcmRlci1yYWRpdXM6MTZweH0uT0JNRW5iOm9ubHktY2hpbGQgLklEVm52Y3ttYXJnaW4tcmlnaHQ6Y2FsYygyNSUgLSAxMTNweCl9LmNSVjloYnt3aWR0aDo5MHB4O3BhZGRpbmc6NnB4fS5jUlY5aGIgLnBjVGtTY3tmb250LWZhbWlseTpBcmlhbCxzYW5zLXNlcmlmO292ZXJmbG93OmhpZGRlbjttYXJnaW4tdG9wOjRweDtwYWRkaW5nOjB9LmNSVjloYiAucGNUa1NjIC53TTZXN2R7Zm9udC1mYW1pbHk6R29vZ2xlIFNhbnMsQXJpYWwsc2Fucy1zZXJpZjtmb250LXNpemU6dmFyKC0tTWhzN2RlKTtsaW5lLWhlaWdodDoxOHB4O3BhZGRpbmc6MDtjb2xvcjp2YXIoLS1ZTE5OSGMpfS5jUlY5aGIgLnBjVGtTYyAuQ2xKOVlie2xpbmUtaGVpZ2h0OjE2cHg7Zm9udC1zaXplOjEycHg7Zm9udC1mYW1pbHk6dmFyKC0tWWZpS2YpO2Rpc3BsYXk6bm9uZTtkaXNwbGF5OmZsZXh9LmNSVjloYiAucGNUa1NjIC53TTZXN2Qgc3BhbiwuY1JWOWhiIC5wY1RrU2MgLkNsSjlZYiBzcGFue292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzOy13ZWJraXQtYm94LW9yaWVudDp2ZXJ0aWNhbDtkaXNwbGF5Oi13ZWJraXQtYm94O3doaXRlLXNwYWNlOm5vcm1hbH0uY1JWOWhiIC5wY1RrU2MgLndNNlc3ZCBzcGFuey13ZWJraXQtbGluZS1jbGFtcDoyfS5jUlY5aGIgLnBjVGtTYyAuQ2xKOVliIHNwYW57LXdlYmtpdC1saW5lLWNsYW1wOjJ9LmFWYldhY3tiYWNrZ3JvdW5kOiNmZmY7Ym9yZGVyLXJhZGl1czoxMnB4O2hlaWdodDo5MHB4fS5hVmJXYWMgLnNiaWMudllPa2Jle2hlaWdodDo5MHB4O3dpZHRoOjkwcHg7Ym9yZGVyLXJhZGl1czoxMnB4O21hcmdpbjowfTwvc3R5bGU+PGxpIGNsYXNzPSJJRFZudmMgUFpQWmxmIiBkYXRhLXZpZXctdHlwZT0iNiIgaWQ9IlRONHJGZiIgcm9sZT0icHJlc2VudGF0aW9uIiBkYXRhLWF0dHJpZD0iQXV0b2NvbXBsZXRlUHJlZGljdGlvbiIgZGF0YS1lbnRpdHlpZD0iYXV0b2NvbXBsZXRlX3VzZXJfZmVlZGJhY2tfa3BfaWQiPjxkaXYgY2xhc3M9ImNSVjloYiI+PGRpdiBjbGFzcz0iYVZiV2FjIj48ZGl2IGNsYXNzPSJzYmljIj48L2Rpdj48L2Rpdj48ZGl2IGNsYXNzPSJwY1RrU2MiIHJvbGU9InByZXNlbnRhdGlvbiI+PGRpdiBjbGFzcz0ibG5uVlNlIiBhcmlhLWF0b21pYz0idHJ1ZSIgcm9sZT0ib3B0aW9uIj48ZGl2IGNsYXNzPSJ3TTZXN2QiPjxzcGFuPjwvc3Bhbj48L2Rpdj48ZGl2IGNsYXNzPSJDbEo5WWIiPjxzcGFuIGNsYXNzPSJkS1U3c2MiPjwvc3Bhbj48L2Rpdj48L2Rpdj48L2Rpdj48L2Rpdj48L2xpPjxkaXYganNuYW1lPSJWbGNMQWUiIGNsYXNzPSJUMTRCNWUgaVRod2xkIj4gPHN0eWxlPi5UMTRCNWV7aGVpZ2h0OjcwcHh9LlQxNEI1ZSBpbnB1dFt0eXBlPSJzdWJtaXQiXSwuZ2JxZmJhe2JhY2tncm91bmQtY29sb3I6I2Y4ZjlmYTtib3JkZXI6MXB4IHNvbGlkICNmOGY5ZmE7Ym9yZGVyLXJhZGl1czo4cHg7Y29sb3I6IzNjNDA0Mztmb250LWZhbWlseTp2YXIoLS1xUjhYMCk7Zm9udC1vcHRpY2FsLXNpemluZzpub25lO2ZvbnQtc2l6ZTp2YXIoLS1oYm1uamUpO2ZvbnQtd2VpZ2h0OnZhcigtLU95Y2p0KTttYXJnaW46MTFweCA0cHg7cGFkZGluZzowIDE2cHg7aGVpZ2h0OjM2cHg7bWluLXdpZHRoOjU0cHg7dGV4dC1hbGlnbjpjZW50ZXI7Y3Vyc29yOnBvaW50ZXI7dXNlci1zZWxlY3Q6bm9uZX0uVDE0QjVlIGlucHV0W3R5cGU9InN1Ym1pdCJdOmhvdmVye2JveC1zaGFkb3c6MCAxcHggMXB4IHJnYmEoMCwwLDAsLjEpO2JhY2tncm91bmQtY29sb3I6I2Y4ZjlmYTtib3JkZXI6MXB4IHNvbGlkICNkYWRjZTA7Y29sb3I6IzIwMjEyNH0uVDE0QjVlIGlucHV0W3R5cGU9InN1Ym1pdCJdOmZvY3Vze2JvcmRlcjoxcHggc29saWQgIzQyODVmNDtvdXRsaW5lOm5vbmV9aW5wdXQ6Zm9jdXN7b3V0bGluZTpub25lfWlucHV0OjotbW96LWZvY3VzLWlubmVye2JvcmRlcjowfTwvc3R5bGU+ICA8Y2VudGVyPiA8aW5wdXQgY2xhc3M9ImdOTzg5YiIgdmFsdWU9Ikdvb2dsZS1zw7hrIiBhcmlhLWxhYmVsPSJHb29nbGUtc8O4ayIgbmFtZT0iYnRuSyIgcm9sZT0iYnV0dG9uIiB0YWJpbmRleD0iMCIgdHlwZT0ic3VibWl0IiBkYXRhLXZlZD0iMGFoVUtFd2owZ1pLYWxfT1ZBeFZvRXhBSUhTTlNDLUlRNGRVRENCNCI+ICAgPGlucHV0IGpzY29udHJvbGxlcj0iczk4MGxmIiBjbGFzcz0iUk5tcFhjIiB2YWx1ZT0iSmVnIHByw7h2ZXIgbHlra2VuIiBhcmlhLWxhYmVsPSJKZWcgcHLDuHZlciBseWtrZW4iIG5hbWU9ImJ0bkkiIHR5cGU9InN1Ym1pdCIganNhY3Rpb249InJjdVE2YjpucFQybWQ7UUlXbGgiIGRhdGEtdmVkPSIwYWhVS0V3ajBnWkthbF9PVkF4Vm9FeEFJSFNOU0MtSVExOVFFQ0I4Ij4gICA8L2NlbnRlcj4gPC9kaXY+PC9kaXY+PGRpdiBqc25hbWU9IkpVeXBWIj48c3R5bGU+Lld6Tkhte2ZvbnQtc2l6ZToxMXB4O21hcmdpbi10b3A6LTE2cHg7cG9zaXRpb246YWJzb2x1dGU7cmlnaHQ6MjBweDtjb2xvcjp2YXIoLS1JWG94VWUpfTwvc3R5bGU+PGRpdiBjbGFzcz0iV3pOSG0gbVdjZjBlIiBqc2NvbnRyb2xsZXI9ImdTWnZkYiIgZGF0YS1kY2NsPSJmYWxzZSIgcm9sZT0iYnV0dG9uIiB0YWJpbmRleD0iMCIganNkYXRhPSJ2U1Q3cmI7XztZM3BuYXJURUxlaW13UEFQbzZTdGtBNDQiIGpzYWN0aW9uPSJpNUtDVTtrVkJDVmQ6eU0xWUplIiBkYXRhLXZlZD0iMGFoVUtFd2owZ1pLYWxfT1ZBeFZvRXhBSUhTTlNDLUlRNnNjRUNDQSI+PGRpdiBjbGFzcz0iVmZMMlkgTFJad3VjIj5SYXBwb3J0w6lyIHVwYXNzZW5kZSBmb3JzbGFnPC9kaXY+PC9kaXY+PC9kaXY+PC9kaXY+PGRpdiBjbGFzcz0iRlBkb0xjIFQxNEI1ZSBpVGh3bGQiPiAgIDxjZW50ZXI+IDxpbnB1dCBjbGFzcz0iZ05PODliIiB2YWx1ZT0iR29vZ2xlLXPDuGsiIGFyaWEtbGFiZWw9Ikdvb2dsZS1zw7hrIiBuYW1lPSJidG5LIiByb2xlPSJidXR0b24iIHRhYmluZGV4PSIwIiB0eXBlPSJzdWJtaXQiIGRhdGEtdmVkPSIwYWhVS0V3ajBnWkthbF9PVkF4Vm9FeEFJSFNOU0MtSVE0ZFVEQ0NFIj4gICA8aW5wdXQganNjb250cm9sbGVyPSJzOTgwbGYiIGNsYXNzPSJSTm1wWGMiIHZhbHVlPSJKZWcgcHLDuHZlciBseWtrZW4iIGFyaWEtbGFiZWw9IkplZyBwcsO4dmVyIGx5a2tlbiIgbmFtZT0iYnRuSSIgdHlwZT0ic3VibWl0IiBqc2FjdGlvbj0icmN1UTZiOm5wVDJtZDtRSVdsaCIgZGF0YS12ZWQ9IjBhaFVLRXdqMGdaS2FsX09WQXhWb0V4QUlIU05TQy1JUTE5UUVDQ0kiPiAgIDwvY2VudGVyPiA8L2Rpdj48ZGl2IGpzbmFtZT0iSVZoZ1JlIiBqc2FjdGlvbj0iQ3VkWFBkOml1OXlyYztUc0lGcGM6YUdBRDdlIj48L2Rpdj48Zy1zbmFja2JhciBqc25hbWU9IlFXR3ZOYiIganNjb250cm9sbGVyPSJPWkxndWMiIHN0eWxlPSJkaXNwbGF5Om5vbmUiIGRhdGEtb3M9IjEiIGpzc2hhZG93PSIiPjxkaXYganNuYW1lPSJzTTVNTmIiIGFyaWEtbGl2ZT0icG9saXRlIiBjbGFzcz0iamhadm9kIj48ZGl2IGpzbmFtZT0iTmc1N25jIiBjbGFzcz0iV3UwdjliIHYwcnJ2ZCIgc3R5bGU9Im1hcmdpbjowIDIwcHg7Ym90dG9tOjgwcHgiIGRhdGEtdmVkPSIwYWhVS0V3ajBnWkthbF9PVkF4Vm9FeEFJSFNOU0MtSVE0RzhJSXciPjxkaXYgY2xhc3M9ImI3N0hLZiI+PGRpdiBqc25hbWU9ImJOOTdQYyIgY2xhc3M9InJJeHN2ZSIganNzbG90PSIiIHN0eWxlPSJkaXNwbGF5Om5vbmUiPjxzcGFuIGNsYXNzPSJUeG5nbmIgd0hZbFRkIHlVVE1qIj48c3R5bGU+LnR6VEhFYntkaXNwbGF5OmZsZXg7ZmxleC1kaXJlY3Rpb246cm93O2dhcDoxNnB4fS5NRWpiN3tmbGV4OjF9Lk5uZnBGZXtiYWNrZ3JvdW5kOnRyYW5zcGFyZW50O3dpZHRoOjM4cHg7aGVpZ2h0OjM0cHg7Y29sb3I6I2ZmZn08L3N0eWxlPjxzcGFuIGNsYXNzPSJ0elRIRWIiPjxzcGFuIGpzbmFtZT0iTGU0cTliIiBjbGFzcz0iTUVqYjciIGRhdGEtdmVkPSIwYWhVS0V3ajBnWkthbF9PVkF4Vm9FeEFJSFNOU0MtSVF0OEVPQ0NRIj48L3NwYW4+PGRpdiBjbGFzcz0iTm5mcEZlIGJ0a3U1YiBGUjdaU2MgZG1LSWplIE9KZXV4ZiIgYXJpYS1sYWJlbD0iTHVrayIgcm9sZT0iYnV0dG9uIiB0YWJpbmRleD0iMCI+PGRpdiBjbGFzcz0ibmlPNHUgQjZPTWVlIj48c3BhbiBzdHlsZT0iaGVpZ2h0OjE4cHg7bGluZS1oZWlnaHQ6MThweDt3aWR0aDoxOHB4IiBjbGFzcz0iejFhc0NlIHd1WG1xYyI+PHN2ZyBmb2N1c2FibGU9ImZhbHNlIiBhcmlhLWhpZGRlbj0idHJ1ZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB2aWV3Qm94PSIwIDAgMjQgMjQiPjxwYXRoIGQ9Ik0xOSA2LjQxTDE3LjU5IDUgMTIgMTAuNTkgNi40MSA1IDUgNi40MSAxMC41OSAxMiA1IDE3LjU5IDYuNDEgMTkgMTIgMTMuNDEgMTcuNTkgMTkgMTkgMTcuNTkgMTMuNDEgMTJ6Ij48L3BhdGg+PC9zdmc+PC9zcGFuPjwvZGl2PjwvZGl2Pjwvc3Bhbj48L3NwYW4+PC9kaXY+PC9kaXY+PC9kaXY+PC9kaXY+PC9nLXNuYWNrYmFyPjwvZGl2PiAgPHNjcmlwdCBub25jZT0iWU95SEgzbHRPbUQ5Qm95X1pCeUFsUSI+KGZ1bmN0aW9uKCl7CnZhciBhPXRoaXN8fHNlbGY7dmFyIGM9ZG9jdW1lbnQucXVlcnlTZWxlY3RvcigiZm9ybSIpO2lmKGMpe3ZhciBkPWZ1bmN0aW9uKGIpe2Iua2V5IT09IkVudGVyInx8Yi5zaGlmdEtleXx8KGIucHJldmVudERlZmF1bHQoKSxjLnN1Ym1pdCYmYy5zdWJtaXQoKSl9O2MuYWRkRXZlbnRMaXN0ZW5lcigia2V5ZG93biIsZCk7YS5zYm1saGY9ZH07fSkuY2FsbCh0aGlzKTs8L3NjcmlwdD4gICA8L2Rpdj4gPGRpdiBpZD0idG9waGYiPjxpbnB1dCBuYW1lPSJzY2FfZXN2IiB2YWx1ZT0iODNiOTBmMjRhOWExNTYyOSIgdHlwZT0iaGlkZGVuIj48aW5wdXQgbmFtZT0ic291cmNlIiB0eXBlPSJoaWRkZW4iIHZhbHVlPSJocCI+PGlucHV0IHZhbHVlPSJZM3BuYXJURUxlaW13UEFQbzZTdGtBNCIgbmFtZT0iZWkiIHR5cGU9ImhpZGRlbiI+PGlucHV0IHZhbHVlPSJBQklMeGU4QUFBQUFhbWVJYzAwZXE4MURZUWNwMnZ2ZTV4bC1GdkZpRmNFMCIgbmFtZT0iaWZsc2lnIiB0eXBlPSJoaWRkZW4iPjwvZGl2PjwvZm9ybT48L2Rpdj48ZGl2IGNsYXNzPSJvM2o5OSBxYXJzdGIiPjxzdHlsZT4uSTV2Vjl7dGV4dC1hbGlnbjpjZW50ZXJ9PC9zdHlsZT48ZGl2PjxkaXYganNjb250cm9sbGVyPSJtczRtWmIiIGpzbmFtZT0iRkFlTkNiIiBkYXRhLWFpcG09IjEiIGRhdGEtZWFpcD0idHJ1ZSIgZGF0YS1lY29tPSJ0cnVlIiBkYXRhLWVuZHBvaW50PSIyIiBpZD0iX1kzcG5hclRFTGVpbXdQQVBvNlN0a0E0XzEwIiBkYXRhLWppaXM9InVwIiBkYXRhLWFzeW5jLXR5cGU9ImhwYmEiIGNsYXNzPSJ5cCIganNhY3Rpb249InJjdVE2YjpucFQybWQiIGRhdGEtdmVkPSIwYWhVS0V3ajBnWkthbF9PVkF4Vm9FeEFJSFNOU0MtSVFqLTBLQ0NZIj48L2Rpdj4gICA8c2NyaXB0IG5vbmNlPSJZT3lISDNsdE9tRDlCb3lfWkJ5QWxRIj4oZnVuY3Rpb24oKXtmdW5jdGlvbiBkKGEsYil7aWYoYS53ZnBlJiZkb2N1bWVudC5wcmVyZW5kZXJpbmcpZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigicHJlcmVuZGVyaW5nY2hhbmdlIiwoKT0+e2IoYSl9LHtvbmNlOiEwLHBhc3NpdmU6ITB9KTtlbHNlIGlmKGEud2Z2ZSYmZG9jdW1lbnQuaGlkZGVuKXtmdW5jdGlvbiBjKCl7ZG9jdW1lbnQuaGlkZGVufHwoYihhKSxkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCJ2aXNpYmlsaXR5Y2hhbmdlIixjKSl9ZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigidmlzaWJpbGl0eWNoYW5nZSIsYyx7cGFzc2l2ZTohMH0pfWVsc2UgYihhKX0KZnVuY3Rpb24gZShhKXthLmV0cz17fTt2YXIgYj1kb2N1bWVudC5nZXRFbGVtZW50QnlJZChhLmlkKTtpZihiPShhLnQ9YikmJmIuZGF0YXNldC52ZWQpYS51cmwrPWAmdmV0PSR7YDEke2J9Li5pYH1gO2lmKGI9KGI9ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoYS50cmlkKSkmJmIuZGF0YXNldC52ZWQpYS51cmwrPWAmdmVkPSR7Yn1gO2ZvcihsZXQgYyBvZiBnb29nbGUuaWEucmYpYyYmYyhhKTtnb29nbGUuaWEuclthLmlkXT1hO2dvb2dsZS5pYS5taVthLm1dKGEpfWdvb2dsZS5pYXx8KGdvb2dsZS5pYT17cTplLHI6e30sbWk6W10scmY6W10sd2FzOmQsZHE6W10scGY6W10scmlkczpuZXcgU2V0fSxnb29nbGUuaWF4JiZnb29nbGUuaWF4KCkpO2dvb2dsZS5kcD0hMDt9KS5jYWxsKHRoaXMpOyhmdW5jdGlvbigpe2dvb2dsZS5jcj1nb29nbGUuY3J8fG5ldyBTZXQ7fSkuY2FsbCh0aGlzKTsoZnVuY3Rpb24oKXt2YXIgcmlkcz1mYWxzZTt2YXIgY3NpX29fZHBvPWZhbHNlO3ZhciBjc2lfb19xdWxsPXRydWU7dmFyIGNzaV9vX2RsZT1mYWxzZTt2YXIgY3NpX3VzcT10cnVlOyhmdW5jdGlvbigpe3ZhciBhYT1PYmplY3QuZGVmaW5lUHJvcGVydHksYmE9ZnVuY3Rpb24oYSl7YT1bIm9iamVjdCI9PXR5cGVvZiBnbG9iYWxUaGlzJiZnbG9iYWxUaGlzLGEsIm9iamVjdCI9PXR5cGVvZiB3aW5kb3cmJndpbmRvdywib2JqZWN0Ij09dHlwZW9mIHNlbGYmJnNlbGYsIm9iamVjdCI9PXR5cGVvZiBnbG9iYWwmJmdsb2JhbF07Zm9yKHZhciBiPTA7YjxhLmxlbmd0aDsrK2Ipe3ZhciBjPWFbYl07aWYoYyYmYy5NYXRoPT1NYXRoKXJldHVybiBjfXRocm93IEVycm9yKCJhIik7fSxjYT1iYSh0aGlzKSxoPWZ1bmN0aW9uKGEsYil7aWYoYilhOnt2YXIgYz1jYTthPWEuc3BsaXQoIi4iKTtmb3IodmFyIGQ9MDtkPGEubGVuZ3RoLTE7ZCsrKXt2YXIgZj1hW2RdO2lmKCEoZiBpbiBjKSlicmVhayBhO2M9Y1tmXX1hPWFbYS5sZW5ndGgtMV07ZD1jW2FdO2I9YihkKTtiIT1kJiZiIT1udWxsJiZhYShjLGEse2NvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMCx2YWx1ZTpifSl9fTtoKCJPYmplY3QuZW50cmllcyIsZnVuY3Rpb24oYSl7cmV0dXJuIGE/YTpmdW5jdGlvbihiKXt2YXIgYz1bXSxkO2ZvcihkIGluIGIpT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGIsZCkmJmMucHVzaChbZCxiW2RdXSk7cmV0dXJuIGN9fSk7aCgiT2JqZWN0LnZhbHVlcyIsZnVuY3Rpb24oYSl7cmV0dXJuIGE/YTpmdW5jdGlvbihiKXt2YXIgYz1bXSxkO2ZvcihkIGluIGIpT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGIsZCkmJmMucHVzaChiW2RdKTtyZXR1cm4gY319KTtoKCJBcnJheS5wcm90b3R5cGUudmFsdWVzIixmdW5jdGlvbihhKXtyZXR1cm4gYT9hOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXNbU3ltYm9sLml0ZXJhdG9yXSgpfX0pOwp2YXIgbD10aGlzfHxzZWxmO3ZhciBwPXtwdXNoOmE9PnZvaWQgYSgpfTtmdW5jdGlvbiB0KGEsYil7aWYocmlkcyl7YiYmYS5pZCYmZ29vZ2xlLmlhLnJpZHMuYWRkKGEuaWQpO2ZvcihsZXQgYyBvZiBhLmNoaWxkcmVuKXQoYywhMCl9fTtmdW5jdGlvbiBkYShhKXt2YXIgYixjLGQ9KGI9d2luZG93Lmdvb2dsZSk9PW51bGw/dm9pZCAwOihjPWIudGltZXJzKT09bnVsbD92b2lkIDA6Yy5sb2FkO2QmJihiPWQuZS5mb2xyLGdvb2dsZS5jLmUoImxvYWQiLCJmb2xyIixiP2Ake2J9LCR7YX1gOmEpKX07ZnVuY3Rpb24gdShhLGIpe3ZhciBjO2lmKGM9d2luZG93Ll9jc2MhPT0iYWdzYSJ8fCF3aW5kb3cuX2NzaGlkKXt7dmFyIGQ7bGV0IGY7aWYoYz0oZD13aW5kb3cucGVyZm9ybWFuY2UpPT1udWxsP3ZvaWQgMDooZj1kLmdldEVudHJpZXNCeVR5cGUpPT1udWxsP3ZvaWQgMDpmLmNhbGwoZCwibmF2aWdhdGlvbiIpWzBdKWQ9Yy50eXBlLGM9IWR8fGQ9PT0ibmF2aWdhdGUiO2Vsc2V7bGV0IGUsZztjPSEoKGU9d2luZG93LnBlcmZvcm1hbmNlKT09bnVsbD8wOihnPWUubmF2aWdhdGlvbik9PW51bGw/MDpnLnR5cGUpfX19aWYoYyl7bGV0IGYsZTtkPShmPXdpbmRvdy5nb29nbGUpPT1udWxsP3ZvaWQgMDooZT1mLnRpbWVycyk9PW51bGw/dm9pZCAwOmUubG9hZDtpZigoZD09bnVsbD92b2lkIDA6ZC5xdHQpIT09MiYmKChiPWImJihkPT1udWxsP3ZvaWQgMDpkLnFzdWJ0cykpfHwoYj0oYT1hLm1hdGNoKFJlZ0V4cCgiWz8mXXFzdWJ0cz0oXFxkKykiKSkpJiZOdW1iZXIoYVsxXSkpLGE9CmIsYT4wKSlyZXR1cm4gYX19O3ZhciBlYT1uZXcgU2V0KCJhYWZ0IGFhZml0IGFhZmN0IGlybGkgc2FydCBzY3J0IHNhZnQgc2NhdCIuc3BsaXQoIiAiKSksdj1mdW5jdGlvbihhLGI9ITEpe3ZhciBjPWEuQzthLnY9ITA7YS5CLmZvckVhY2goZD0+e2QoKX0pO2EuQj1bXTtiJiYoYS5SPSEwLGEubCYmKGEuQz1jKSl9LHo9ZnVuY3Rpb24oYSxiLGMpe3ZhciBkPUFycmF5LmZyb20oYi5xdWVyeVNlbGVjdG9yQWxsKCJbZGF0YS1zdWJ0cmVlXSIpKTtiLmhhc0F0dHJpYnV0ZSgiZGF0YS1zdWJ0cmVlIikmJmQucHVzaChiKTtmb3IobGV0IGYgb2YgZCl7Yj0oYj1mLmRhdGFzZXQuc3VidHJlZSk/Yi5zcGxpdCgiLCIpOltdO2ZvcihsZXQgZSBvZiBiKWEuRFtlXXx8KGI9YSxkPWBzaXJ0LSR7ZX1gLHcoYixkLGMpLChlPT09Im1mbCJ8fGU9PT0iYWltZmwiJiZiLmkuYXN0eXAuaW5jbHVkZXMoImFpbSIpKSYmeShiLGQpLGEuRFtlXT17bm9kZTpmLFc6Y30pfX0sQT1mdW5jdGlvbihhLGIsYyxkPSExLGY9ITEpe2lmKGEuRyYmCiFhLnYpe2EuQi5wdXNoKCgpPT57QShhLGIsYyxkLGYpfSk7aWYoIWEubClyZXR1cm47YS5BPSEwfWZvcihsZXQgW2csa11vZiBPYmplY3QuZW50cmllcyhhLkQpKXtsZXQgcj1nO3ZhciBlPWs7bGV0IG49ZS5ub2RlLHE9YHNjcnQtJHtyfWAsbT1gc2FmdC0ke3J9YCx4PW4uY29udGFpbnMoYik7ZT1jPT09ZS5XJiZiLmNvbnRhaW5zKG4pO2lmKHh8fGUpdyhhLGBzYXJ0LSR7cn1gLGMpLGR8fHcoYSxxLGMpLGYmJih4fHxnb29nbGUuY3YobixhLmkudCkmMSkmJncoYSxtLGMpfWEuQT0hMX0sQj1mdW5jdGlvbihhKXt2YXIgYj1hLmkuY2J2aTtpZihBcnJheS5pc0FycmF5KGIpKWZvcihsZXQgYyBvZiBiKWMoKTthLmkuY2J2aT1wfSx3PWZ1bmN0aW9uKGEsYixjKXtpZihhLmwpe2lmKCFhLnZ8fGEuUilpZihhLmpbYl09TWF0aC5tYXgoYS5qW2JdfHwwLGMpLGEuQSlyZXR1cm47YS5IW2JdPU1hdGgubWF4KGEuSFtiXXx8MCxjKX1lbHNlIGEualtiXT1NYXRoLm1heChhLmpbYl18fDAsYyl9LHk9ZnVuY3Rpb24oYSxiPSJhbGwiLGM9YS5qLGQ9ITEpe3ZhciBmPWI9PT0iYWxsIixlPXt9O2lmKGYpQihhKSxmYShhKSxlPWM7ZWxzZSBmb3IobGV0IG0gb2YgT2JqZWN0LmtleXMoYykpZWEuaGFzKG0uc3BsaXQoIi0iKVswXSl8fChlW21dPWNbbV0pO3ZhciBnLGsscjsoYz0oKGc9Z29vZ2xlLnN0dnNjKT09bnVsbD92b2lkIDA6Zy5ucyl8fCgoaz13aW5kb3cucGVyZm9ybWFuY2UpPT1udWxsP3ZvaWQgMDoocj1rLnRpbWluZyk9PW51bGw/dm9pZCAwOnIubmF2aWdhdGlvblN0YXJ0KSkmJihlLm5zPWMpOyhnPXUoYS51cmwsYS5WKSkmJihlLmdzYW5zPWcpO3ZhciBuOyhnPShuPWdvb2dsZS50aW1lcnMubG9hZCk9PW51bGw/dm9pZCAwOm4udC5wcnMpJiYoZS5wcnM9Zyk7bj1hLmkudC5nZXRBdHRyaWJ1dGUoImVpZCIpO2c9W107Zm9yKHZhciBxIG9mIE9iamVjdC5rZXlzKGUpKWcucHVzaChgJHtxfS4ke2VbcV0tYS5NfWApO2U9dShhLnVybCwhMCk7cT11KGEudXJsKTtlIT1udWxsJiYKcSE9bnVsbCYmZy5wdXNoKGBxZC4ke2UtcX1gKTtiPWAvZ2VuXzIwND9zPWFzeW5jJmFzdHlwPSR7YS5pLmFzdHlwfSZ0PSR7ZD9gJHtifTJgOmJ9JmF0eXA9Y3NpJmVpPSR7bn0mcnQ9JHtnLmpvaW4oIiwiKX1gO2lmKGYpe2EuRiYmKGIrPWAmdHd0PSR7TWF0aC5yb3VuZChhLkYpfSZtd3Q9JHtNYXRoLnJvdW5kKGEuSyl9YCk7YS5KJiYoYis9YCZsdmhyPSR7YS5KfWApO2IrPWAmaW1uPSR7YS5OfWA7Yis9YCZpbWE9JHthLkl9YDtkPVtdO2ZvcihsZXQgW20seF1vZiBPYmplY3QuZW50cmllcyhhLkQpKWQucHVzaChgJHttfS4ke3gudmlzaWJpbGl0eX1gKTtiKz1gJnN2PSR7ZC5qb2luKCIsIil9YDthLmkudXJsJiYoZD1wZXJmb3JtYW5jZS5nZXRFbnRyaWVzQnlUeXBlKCJyZXNvdXJjZSIpLmZpbHRlcihtPT5tLm5hbWUuaW5jbHVkZXMoYS5pLnVybCkpLnBvcCgpKSYmKHR5cGVvZiBkLmVuY29kZWRCb2R5U2l6ZT09PSJudW1iZXIiJiYoYis9YCZjYj0ke2QuZW5jb2RlZEJvZHlTaXplfWApLHR5cGVvZiBkLmRlY29kZWRCb2R5U2l6ZT09PSJudW1iZXIiJiYoYis9YCZ1Y2I9JHtkLmRlY29kZWRCb2R5U2l6ZX1gKSl9Yis9YCZmb2xpZD0ke2EuaS5pZH1gO3RyeXt3aW5kb3cubmF2aWdhdG9yLnNlbmRCZWFjb24oYiwiIil9Y2F0Y2gobSl7fWMmJmEuUyYmaGEoYSxjLGYpfSxDPWZ1bmN0aW9uKGEpe2EuTiE9PWEuQ3x8YS5QfHwodyhhLCJhcnQiLERhdGUubm93KCkpLHkoYSksYS5sJiYodihhKSx5KGEsImFsbCIsYS5ILCEwKSkpfSxEPWZ1bmN0aW9uKGEpe2EuST09PWEuTyYmQihhKX0sZmE9ZnVuY3Rpb24oYSl7Zm9yKGxldCBiIG9mIE9iamVjdC5rZXlzKGEuRCkpe2xldCBjPWEuRFtiXTtjLnZpc2liaWxpdHk9Z29vZ2xlLmN2KGMubm9kZSxhLmkudCwhMCl9fSxoYT1mdW5jdGlvbihhLGIsYyl7dmFyIGQ9KGYsZSk9PntpZihlPWEualtlXSllLT1iLGU+PTAmJnBlcmZvcm1hbmNlLm1hcmsoZix7c3RhcnRUaW1lOmV9KX07Yz9kKCJTZWFyY2hBSU9WaWV3cG9ydEVuZFRpbWUiLCJhYWZ0Iik6KGQoIlNlYXJjaEFJT0FzeW5jU3RhcnQiLCJpcGYiKSxkKCJTZWFyY2hBSU9Jbml0aWFsQ29udGVudFRpbWUiLCJzaXJ0LW1mbCIpKX0sRT1mdW5jdGlvbihhLGIsYz1EYXRlLm5vdygpLGQpe2lmKGEuRyYmIWEudil7YS5CLnB1c2goKCk9PntFKGEsYixjLGQpfSk7aWYoIWEubClyZXR1cm47YS5BPSEwfXZhciBmPWdvb2dsZS5jdihiLGEuaS50KSxlPSEhKGYmMSk7ZSYmKGQmJihhLko9ZCksdyhhLCJhYWZ0IixjKSx3KGEsImFhZmN0IixjKSxBKGEsYixjLCExLGUpKTtmJjQmJihhLlU9ITAsRChhKSk7YS5BPSExfSxGPWZ1bmN0aW9uKGEsYixjLGQ9ITEpe2IuZ2V0QXR0cmlidXRlKCJkYXRhLWRlZmVycmVkIik9PT0iMSI/Z29vZ2xlLnJsbChiLCEwLCgpPT57RihhLGIsYyxkKX0pOmR8fChiLmdldEF0dHJpYnV0ZSgiZGF0YS1kZWZlcnJlZCIpPT09IjIiJiZiLnNldEF0dHJpYnV0ZSgiZGF0YS1kZWZlcnJlZCIsIjMiKSxkPSEwLEcoYSxiLGMpKX0sSD1mdW5jdGlvbihhLGIsYz1EYXRlLm5vdygpKXtiPWIuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImltZyIpO2ZvcihsZXQgZj0wO2Y8Yi5sZW5ndGg7ZisrKXtsZXQgZT1iW2ZdOysrYS5OO3ZhciBkPWUuY29tcGxldGUmJiFlLmdldEF0dHJpYnV0ZSgiZGF0YS1kZWZlcnJlZCIpO2xldCBnPWUuaGFzQXR0cmlidXRlKCJkYXRhLW5vYWZ0Iik7aWYoZHx8Zyl7KythLkM7Y29udGludWV9ZD1nb29nbGUuY3YoZSxhLmkudCk7ZS5zZXRBdHRyaWJ1dGUoImRhdGEtYWF0ZiIsU3RyaW5nKGQpKTtsZXQgaz0hIShkJjEpO2lmKGspKythLkksQXJyYXkuaXNBcnJheShhLmkuY2J2aSl8fChhLmkuY2J2aT1bXSk7ZWxzZSBpZihlLmxvYWRpbmc9PT0ibGF6eSIpeysrYS5DO2NvbnRpbnVlfWUuZ2V0QXR0cmlidXRlKCJkYXRhLWltZ3Byb2Nlc3NlZCIpPysrYS5DOihnb29nbGUucmxsKGUsITAsKCk9PntGKGEsZSxrKX0pLGEuai5pcmZpfHx3KGEsImlyZmkiLGMpLHcoYSwiaXJsaSIsYykpfX0sRz1mdW5jdGlvbihhLGIsYyxkPURhdGUubm93KCkpe2Euai5pcmZpZXx8dyhhLCJpcmZpZSIsZCk7aWYoYS5HJiYhYyYmIWEudil7YS5CLnB1c2goKCk9PntHKGEsYixjLGQpfSk7aWYoIWEubClyZXR1cm47YS5BPSEwfSsrYS5DO2MmJigrK2EuTyx3KGEsImFhZnQiLGQpLHcoYSwiYWFmaXQiLGQpKTtBKGEsYixkLCEwLGMpO2EuVSYmRChhKTshYS5UfHxhLnYmJmEuQi5sZW5ndGghPT0wfHwoSShhKSxDKGEpKTthLkE9ITF9LEk9ZnVuY3Rpb24oYSl7YS5sfHxhLlQmJmEuTz09PWEuSSYmdihhKX0saWE9ZnVuY3Rpb24oYSxiPURhdGUubm93KCkpe3coYSwic3QiLGIpfSxKPWZ1bmN0aW9uKGEsYil7aWYoYS5HJiYhYS52KXthLkIucHVzaCgoKT0+e0ooYSxiKX0pO2lmKCFhLmwpcmV0dXJuO2EuQT0hMH13KGEsImlwZnJsIixiKTt3KGEsImFjcnQiLGIpOyhhLmwmJmEudj9hLkguYWFmdDphLmouYWFmdCl8fHcoYSwiYWFmdCIsYik7YS5BPSExfSxqYT1jbGFzc3tjb25zdHJ1Y3RvcihhKXt2YXIgYj1EYXRlLm5vdygpLGM9dHlwZW9mIGNzaV9vX3F1bGwhPT0idW5kZWZpbmVkIiYmY3NpX29fcXVsbCxkPXR5cGVvZiBjc2lfb19kbGUhPT0idW5kZWZpbmVkIiYmY3NpX29fZGxlJiZ0eXBlb2YgY3NpX29fcXVsbCE9PSJ1bmRlZmluZWQiJiZjc2lfb19xdWxsLGY9dHlwZW9mIGNzaV91c3EhPT0idW5kZWZpbmVkIiYmY3NpX3VzcTt0aGlzLmk9YTt0aGlzLk09Yjt0aGlzLmo9e307dGhpcy5IPXt9O3RoaXMuQT0hMTt0aGlzLkQ9e307dGhpcy5CPVtdO3RoaXMuTz10aGlzLkk9dGhpcy5GPXRoaXMuQz10aGlzLk49dGhpcy5MPXRoaXMuSz10aGlzLko9MDt0aGlzLlM9ITE7dGhpcy52PSEwO3RoaXMuUj0hMTt0aGlzLnVybD13aW5kb3cubG9jYXRpb24uc2VhcmNoO3RoaXMuRz1jO3RoaXMubD1kO3RoaXMuVj1mO3RoaXMuaS50JiZ0aGlzLmkuaWQmJmdvb2dsZS5jdih0aGlzLmkudCkmMSYmKGRhKHRoaXMuaS5pZCksdGhpcy5TPSEwKTt0aGlzLmkudWxsY2I9KCk9Pnt2KHRoaXMsITApfTt0aGlzLmkudCYmKHoodGhpcyx0aGlzLmkudCx0aGlzLk0pLEEodGhpcyx0aGlzLmkudCx0aGlzLk0pKTt0aGlzLnY9ITF9fTsKdmFyIEs9Y2xhc3N7Y29uc3RydWN0b3IoYSl7dGhpcy5pPWF9dG9TdHJpbmcoKXtyZXR1cm4gdGhpcy5pfX07ZnVuY3Rpb24gTChhKXtpZihhIGluc3RhbmNlb2YgSylyZXR1cm4gYS5pO3Rocm93IEVycm9yKCJiIik7fTtmdW5jdGlvbiBrYShhKXt2YXIgYj1nb29nbGUuY3IsYz1bXSxkPVtdO2Zvcih2YXIgZj0wO2Y8YS5sZW5ndGg7ZisrKWIuaGFzKGFbZl0ubW9kdWxlX2lkKXx8KGMucHVzaChhW2ZdKSxkLnB1c2goYVtmXS5tb2R1bGVfaWQpKTtpZihkLmxlbmd0aCE9PTApe2E9W107Zm9yKGY9MDtmPGMubGVuZ3RoO2YrKyl7dmFyIGU9Y1tmXS5zdHlsZV9zaGVldC5wcml2YXRlX2RvX25vdF9hY2Nlc3Nfb3JfZWxzZV9zYWZlX3N0eWxlX3NoZWV0X3dyYXBwZWRfdmFsdWU7aWYoZT09PXZvaWQgMHx8ZT09PW51bGwpdGhyb3cgRXJyb3IoImMiKTtlPW5ldyBLKGUpO2UhPT1udWxsJiZhLnB1c2goZSl9YT1hLm1hcChMKS5qb2luKCIiKTtjPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInN0eWxlIik7Yy50ZXh0Q29udGVudD1MKG5ldyBLKGEpKTtjLnNldEF0dHJpYnV0ZSgiZGF0YS1tc3Mtc3R5bGVzIixkLmpvaW4oIiwiKSk7YT1kb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgiaGVhZCIpWzBdO2lmKCFhKXRocm93IEVycm9yKCJkIik7YS5hcHBlbmRDaGlsZChjKTtmb3IoYz0wO2M8ZC5sZW5ndGg7YysrKWIuYWRkKGRbY10pfX07dHJ5e2xldCBhLGIsYz0oYj0oYT13aW5kb3cpPT1udWxsP3ZvaWQgMDphLnRvcCkhPW51bGw/YjpsO2MuVTNiSEhmIT1udWxsfHwoYy5VM2JISGY9MCk7Yy5VM2JISGYrK31jYXRjaChhKXtsLlUzYkhIZiE9bnVsbHx8KGwuVTNiSEhmPTApLGwuVTNiSEhmKyt9O3ZhciBNPSExLE47aWYobD09bnVsbD8wOihOPWwuU3ltYm9sKT09bnVsbD8wOk4uZm9yKXt2YXIgTz1TeW1ib2wuZm9yKCJnb29nbGUuZ29lbSIpO2xbT118fChsW09dPW5ldyBXZWFrTWFwKX1mdW5jdGlvbiBsYShhLGIpe2Zvcig7YSYmYSE9PXZvaWQgMDspe2lmKGIoYSkpcmV0dXJuIGE7YTp7bGV0IGM9MDtmb3IoO2E9YT9hLl9fb3duZXI/YS5fX293bmVyOmEucGFyZW50Tm9kZSYmYS5wYXJlbnROb2RlLm5vZGVUeXBlPT09MTE/YS5wYXJlbnROb2RlLmhvc3Q6YS5wYXJlbnRFbGVtZW50fHxudWxsOm51bGw7KXtpZihhJiZhPT09dm9pZCAwJiZjPjApe018fChNPSEwKTticmVha31pZihhLmhhc0F0dHJpYnV0ZSgianNzbG90IikpYys9MTtlbHNlIGlmKGEuaGFzQXR0cmlidXRlKCJqc3NoYWRvdyIpJiZjPjApey0tYztjb250aW51ZX1pZihjPD0wKWJyZWFrIGF9YT1udWxsfX1yZXR1cm4gbnVsbH07dmFyIFA9bC5wYXJlbnRXaW5kb3c/bC5wYXJlbnRXaW5kb3c6bCxRO1AuX19ncj9RPVAuX19ncjooUT17ZzpuZXcgTWFwLGg6e319LFAuX19ncj1RKTt2YXIge2c6UixoOlN9PVE7ZnVuY3Rpb24gVCgpe3ZhciBhPWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ1tqc25hbWU9Imd1ZXN0X2NvbnRhaW5lcl8iXTpub3QoW2RhdGEtb2pzYWNdKSwgW2pzbmFtZT0iY29GU3hlIl06bm90KFtkYXRhLW9qc2FjXSknKTtmb3IobGV0IGIgb2YgYSlSLmhhcyhiKXx8Ui5zZXQoYix7cjpiLGVxOltdfSl9ZnVuY3Rpb24gbWEoYSl7cmV0dXJuKGE9bGEoYSxiPT5SLmhhcyhiKSkpP1IuZ2V0KGEpOm51bGx9CmZ1bmN0aW9uIG5hKGEsYil7VCgpO3ZhciBjPW1hKGEpO2lmKGMpe2xldCBmOyhmPWMubSk9PW51bGx8fGYuZGlydHlTdWJ0cmVlKGEsYil9ZWxzZXt2YXIgZDsoZD1TLmRzKT09bnVsbHx8ZC5jYWxsKFMsYSxiKTtmb3IobGV0IGYgb2YgUi52YWx1ZXMoKSlpZihhLmNvbnRhaW5zKGYucikpe2xldCBlLGc7KGU9Zi5tKT09bnVsbHx8KGc9ZS5kaXJ0eVN1YnRyZWUpPT1udWxsfHxnLmNhbGwoZSxhLGIpfX19O2Z1bmN0aW9uIG9hKGEpe2EucmVxPW5ldyBYTUxIdHRwUmVxdWVzdDthLmNiZmQ9W107YS5jYnZpPVtdO2EuY2JybnM9cH1mdW5jdGlvbiBwYShhKXtvYShhKTt2YXIgYj1uZXcgcWEoYSk7Z29vZ2xlLmlhLndhcyhhLCgpPT57Yi5pLnJlcS5hZGRFdmVudExpc3RlbmVyKCJyZWFkeXN0YXRlY2hhbmdlIixiLkIpO2IuaS5yZXEub3BlbigiR0VUIixiLmkudXJsKTtmb3IobGV0IGMgb2YgT2JqZWN0LmtleXMoYi5pLmgpKWIuaS5yZXEuc2V0UmVxdWVzdEhlYWRlcihjLGIuaS5oW2NdKTt3KGIuaiwiaXBmIixEYXRlLm5vdygpKTtiLmkucmVxLnNlbmQoKX0pfQp2YXIgVT1mdW5jdGlvbihhKXtpZihhLnY9PT0wJiZhLkcpe1QoKTtTLmQmJlMuZCgpO2ZvcihsZXQgYiBvZiBSLnZhbHVlcygpKXtsZXQgYyxkOyhjPWIubSk9PW51bGx8fChkPWMuZGlydHkpPT1udWxsfHxkLmNhbGwoYyl9fX0sVj1mdW5jdGlvbihhKXtpZighYS5EKXthLkQ9ITA7aWYoQXJyYXkuaXNBcnJheShhLmkuY2JmZCkpZm9yKGxldCBiIG9mIGEuaS5jYmZkKWIoKTthLmkuY2JmZD1wfX0sVz1mdW5jdGlvbihhLGIpe2Euai5QPSEwO3ZhciBjPWEuajt3KGMsImZ0IixEYXRlLm5vdygpKTtjLkY9MDthLmkucmVxLnJlbW92ZUV2ZW50TGlzdGVuZXIoInJlYWR5c3RhdGVjaGFuZ2UiLGEuQik7YS5pLnJlcS5hYm9ydCgpO3koYS5qKTtnb29nbGUuZmNlKGEuaS50LGEuaS5jZWUsYik7VihhKX0sc2E9ZnVuY3Rpb24oYSxiKXtpZihhLkMpaWYoYS5BKXtsZXQgYz1hLkE7YS5BPXZvaWQgMDsoYT1yYShhLGMsYikpJiZuYShhLCgpPT4hMCl9ZWxzZSBhLkE9SlNPTi5wYXJzZShiKTtlbHNlIGEuQz1KU09OLnBhcnNlKGIpfSxyYT1mdW5jdGlvbihhLGIsYyl7dmFyIGQ9YlswXTtiPWJbMV07aWYoIWEuSCYmZD09PTImJmI9PW51bGwpcmV0dXJuIHRhKGEsYyksYS5IPSEwLGEuaS50O3N3aXRjaChkKXtjYXNlIDE6VyhhLEVycm9yKGMpKTticmVhaztjYXNlIDI6cmV0dXJuIHVhKGEsYixjKTtjYXNlIDY6cmV0dXJuIHZhKGEsYixjKTtjYXNlIDM6WChhLGIsYywhMCk7YnJlYWs7Y2FzZSA0OmEudisrO2dvb2dsZS5pYS5kcS5wdXNoKHthc3R5cDphLmkuYXN0eXAsY2I6KCk9PntZKGMpO2Eudi0tO1UoYSl9fSk7YnJlYWs7Y2FzZSA3OndhKGEsYyk7YnJlYWs7Y2FzZSA1Omdvb2dsZS5pYS5kcS5wdXNoKHthc3R5cDphLmkuYXN0eXAsbWQ6Y30pO2JyZWFrO2Nhc2UgODpkPUpTT04ucGFyc2UoYyk7Z29vZ2xlLnhzcmY9T2JqZWN0LmFzc2lnbihnb29nbGUueHNyZnx8e30sZCk7YnJlYWs7Y2FzZSAxMjpkPUpTT04ucGFyc2UoYyksa2EoZC5jc3NfbW9kdWxlcyl9fSx0YT0KZnVuY3Rpb24oYSxiKXt2YXIgYz1EYXRlLm5vdygpO2lhKGEuaixjKTt0KGEuaS50KTthLmkudC5pbm5lckhUTUw9Yjt6KGEuaixhLmkudCxjKTtBKGEuaixhLmkudCxjKTtaKGEuaS50KTthLmkudC5zZXRBdHRyaWJ1dGUoImVpZCIsYS5DWzBdKTtIKGEuaixhLmkudCxjKTtFKGEuaixhLmkudCxjLGEubCl9LHVhPWZ1bmN0aW9uKGEsYixjKXtiPWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGIpO3QoYik7Yi5pbm5lckhUTUw9YzthLmwrKztjPURhdGUubm93KCk7eihhLmosYixjKTtmb3IobGV0IGQgb2YgYi5jaGlsZHJlbilFKGEuaixkLGMsYS5sKTtBKGEuaixiLGMpO1ooYik7cmV0dXJuIGJ9LHZhPWZ1bmN0aW9uKGEsYixjKXt2YXIgZD1hLmkudC5xdWVyeVNlbGVjdG9yKGBbZGF0YS1hc3luYy1waD0iJHtifSJdYCk7aWYoZClyZXR1cm4geGEoYSxkLGMpO2EudisrO2dvb2dsZS5pYS5kcS5wdXNoKHthc3R5cDphLmkuYXN0eXAsY2I6KCk9Pnt2YXIgZj1hLmkudC5xdWVyeVNlbGVjdG9yKGBbZGF0YS1hc3luYy1waD0iJHtifSJdYCk7Zj8oeGEoYSxmLGMpLGEudi0tLFUoYSkpOihmPUVycm9yKCksZi5tZXNzYWdlPSJpYV9ub19waCIsZ29vZ2xlLm1sKGYsITEse3Q6Yn0pKX19KX0sWD1mdW5jdGlvbihhLGIsYyxkKXt2YXIgZixlPShmPWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGIpKSE9bnVsbD9mOmEuaS50LnF1ZXJ5U2VsZWN0b3IoYGltZ1tkYXRhLWlpZD0iJHtifSJdYCk7ZT8oZS5zZXRBdHRyaWJ1dGUoImRhdGEtZGVmZXJyZWQiLCIyIiksZS5zcmM9Yyk6ZD9hLmkuY2JmZC5wdXNoKCgpPT57Z29vZ2xlLmlhLmRxLnB1c2goe2FzdHlwOmEuaS5hc3R5cCxjYjooKT0+e1goYSxiLGMsITEpfX0pfSk6KGQ9RXJyb3IoKSxkLm1lc3NhZ2U9ImlhX25vX2ltZyIsZ29vZ2xlLm1sKGQsITEse3Q6Yix1OmN9KSl9LFk9ZnVuY3Rpb24oYSl7dmFyIGI9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic2NyaXB0Iik7Yi50ZXh0Q29udGVudD1hO3RyeXtkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGIpfWNhdGNoKGMpe2dvb2dsZS5tbChjLCExLHtzY3JpcHQ6YS5zdWJzdHJpbmcoMCw1MDApfSl9fSx3YT1mdW5jdGlvbihhLGIpe3ZhciBjPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInN0eWxlIik7dHJ5e2MuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoYikpLGEuaS50LmFwcGVuZENoaWxkKGMpfWNhdGNoKGQpe2dvb2dsZS5tbChkLCExLHtjc3M6Yi5zdWJzdHJpbmcoMCw1MDApfSl9fSxaPWZ1bmN0aW9uKGEpe2E9YS5xdWVyeVNlbGVjdG9yQWxsKCdzY3JpcHQ6bm90KFt0eXBlXSksc2NyaXB0W3R5cGU9InRleHQvamF2YXNjcmlwdCJdJyk7Zm9yKGxldCBiIG9mIGEpWShiLnRleHQpfSx4YT1mdW5jdGlvbihhLGIsYyl7dmFyIGQ9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7ZC5pbm5lckhUTUw9Yztmb3IodmFyIGY9QXJyYXkuZnJvbShkLmdldEVsZW1lbnRzQnlUYWdOYW1lKCJzY3JpcHQiKSxnPT5nLnRleHQpLGU9ZG9jdW1lbnQuY3JlYXRlRG9jdW1lbnRGcmFnbWVudCgpO2QuZmlyc3RDaGlsZDspdHJ5e2UuYXBwZW5kQ2hpbGQoZC5maXJzdENoaWxkKX1jYXRjaChnKXtnb29nbGUubWwoZywhMSx7c2NyaXB0OmMuc3Vic3RyaW5nKDAsNTAwKX0pO3JldHVybn1jPUFycmF5LmZyb20oZS5jaGlsZHJlbik7ZD1iLnBhcmVudEVsZW1lbnQ7dChiLCEwKTtkLnJlcGxhY2VDaGlsZChlLGIpO2I9RGF0ZS5ub3coKTthLmwrKztmb3IobGV0IGcgb2YgZilZKGcpO2ZvcihsZXQgZyBvZiBjKXooYS5qLGcsYiksQShhLmosZyxiKSxIKGEuaixnLGIpLEUoYS5qLGcsYixhLmwpO3JldHVybiBlfSxxYT1jbGFzc3tjb25zdHJ1Y3RvcihhKXt0aGlzLmk9YTt0aGlzLkI9dGhpcy5GLmJpbmQodGhpcyk7dGhpcy52PXRoaXMubD10aGlzLmN1cnNvcj0wO3RoaXMuaj1uZXcgamEoYSk7YS5jYnZpLnB1c2goKCk9Pnt0aGlzLkc9ITA7VSh0aGlzKX0pfUYoKXt2YXIgYT10aGlzLmkucmVxLnJlYWR5U3RhdGU7dHJ5e2lmKGE+PTIpe3ZhciBiPXRoaXMuajtiLmouaXBmcnx8KHcoYiwiaXBmciIsRGF0ZS5ub3coKSksdyhiLCJ0dGZiIixEYXRlLm5vdygpKSk7aWYodGhpcy5pLnJlcS5zdGF0dXMhPT0KMjAwKXtXKHRoaXMsRXJyb3IoYCR7dGhpcy5pLnJlcS5zdGF0dXN9YCkpO3JldHVybn19aWYoYTwzKXJldHVybjt0aGlzLmouTD1wZXJmb3JtYW5jZS5ub3coKTtsZXQgZD10aGlzLmkucmVxLnJlc3BvbnNlVGV4dCxmPWQubGVuZ3RoO2lmKGY+PTUpe2lmKHRoaXMuY3Vyc29yPT09MCl7aWYoZC5zdWJzdHJpbmcoMCw1KSE9PSIpXX0nXG4iKXtXKHRoaXMsRXJyb3IoImUiKSk7cmV0dXJufXRoaXMuY3Vyc29yPTV9bGV0IGU7Zm9yKDshdGhpcy5qLlA7KXtlPWQuaW5kZXhPZigiOyIsdGhpcy5jdXJzb3IpO2lmKGU9PT0tMSlicmVhaztsZXQgaz1wYXJzZUludChkLnN1YnN0cmluZyh0aGlzLmN1cnNvcixlKSwxNik7aWYoaXNOYU4oaykpYnJlYWs7aWYoZjxlK2srMSlicmVhaztzYSh0aGlzLGQuc3Vic3RyaW5nKGUrMSxlK2srMSkpO3RoaXMuY3Vyc29yPWUraysxfXZhciBjPXRoaXMuajtsZXQgZz1wZXJmb3JtYW5jZS5ub3coKS1jLkw7Zz5jLksmJihjLks9Zyk7Yy5GKz1nO2MuTD0wfX1jYXRjaChkKXtXKHRoaXMsZCk7cmV0dXJufWE9PT00JiYoSih0aGlzLmosRGF0ZS5ub3coKSksYT10aGlzLmosYS5UPSEwLEkoYSksQyh0aGlzLmopLFYodGhpcyksRCh0aGlzLmopLHRoaXMuaS50JiZ0aGlzLmkuY2NlJiZnb29nbGUuZmNlKHRoaXMuaS50LHRoaXMuaS5jY2UpKX19O2dvb2dsZS5pYS5taVsxXT09bnVsbCYmKGdvb2dsZS5pYS5taVsxXT1wYSk7fSkuY2FsbCh0aGlzKTt9KSgpOyhmdW5jdGlvbigpe3ZhciBwPXthc3R5cDonaHBiYScsY2NlOicnLGNlZTona3ZaR0tlJyxjazonX1kzcG5hclRFTGVpbXdQQVBvNlN0a0E0XzEwWTNwbmFyVEVMZWltd1BBUG82U3RrQTQnLGNwOid4JyxpZDonX1kzcG5hclRFTGVpbXdQQVBvNlN0a0E0XzEwJyxtOjEsdHJpZDonJyx1cmw6Jy9hc3luYy9ocGJhP3l2XHgzZDNceDI2Y3NceDNkMFx4MjZlaVx4M2RZM3BuYXJURUxlaW13UEFQbzZTdGtBNFx4MjZhc3luY1x4M2RfYmFzZWpzOi94anMvXy9qcy9rJTNEeGpzLmhkLm5vLlpKWC0weVFuTy1NLjIwMTkuTy9hbSUzREFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBZ1FBQUFBQUJCQUFBQUFBQUFBQUFBQUFBWUFBZ0FBQUFBQUFBQUFBQUFBQUFBQUlBQUFRQUFJQUFBQUFBQUFBQUFFQUFBQUFBQUJBQUFDQUFBWUFBQUFRQUJCQUFBQUFNQUFBQUFBQUFBQUFBQUFBQUFBQUFBZ0JBQUFBQkNBQUR3QndaWUFRQUFBQUFBQUFBU0FEQUFBQUFBQUFBQUZnQUFJQUVBQUFBRVFBQUFBQUFBQUFBQUFBQUFBQUFBQUJBQUFBQUFBQUFBQUFBQmdBQUFBQUFLQUFBQUFCQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQkFBQUFBQUFBQUFBQUFBQUFBZ0FBQUNnQUFDQUFBQWdBQUFBQUFBQUFBQUFBQUFBQ2dBd0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQ0FBQVFJQUFBQUFBQUFBQUFBUUFDQUFBQUVBSFFPQUJoaFFVQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQ0xJQmRTQUVCRUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQkF5QWtBQUFBQUFJQ0YvZGclM0QwL2JyJTNEMS9ycyUzREFDVDkwb0dfc1ROODc2cEtMc244RUFJQzdIUEF0OHlXOFE/Y2IlM0QxMjE1MDkzNzgsX2Jhc2Vjc3M6L3hqcy9fL3NzL2slM0R4anMuaGQuaDlHSGphQXBobDAuTC5GNC5PL2FtJTNEQUFBRVFBQUFBQUFBQUFBQUFBUUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFCQUFBQUlFQ0FBQVpBQUFBQUFBZ0FBQ0FBQUFBQUFJQUFBQUFBQkFlQUFBQU1BQUFBQUFBQUFBQUFBQUFBQUFBUUFBQUlBQUFBQUFBQUFBQUVBQUFBQUFBQUFJQWlBQUFBQUFBQVFBQkZBQUFRQUFBQUFBQUFBQUFDQUFBQUFBQUFBQUFDQkFBQUFBQUFBQUFBQUJBQWdBQUFBQUFBQUFBWVRBUUFBQUFBQkFHQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUJBSkVBQ0FDQUFBQUFBQUFnQUFBQUFBQVFCaEJBRUFBRUtJQUFBQUFBQUFBS0FCUUFBQUFDZ0F4QUVBUUFBQUFBQUFBQUFDQUFFZ1JCQUFBQUFnQUFBQUJBQUNBQUlBQUFBQUdBRUJRQkFvZ1lDQUVDZ0F3QUFBQ0FEQUFBQUFBUUFBQUFBQUFBQUFBQUFpQUFBQUFBQUFBQ1FBQUFEQkFRQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQkFBQUFBRS9iciUzRDEvcnMlM0RBQ1Q5MG9HYkFWM2hnV0lxejhJLXBwZGJZeV94RzU4STdnP2NiJTNEMTIxNTA5Mzc4LF9iYXNlY29tYjoveGpzL18vanMvayUzRHhqcy5oZC5uby5aSlgtMHlRbk8tTS4yMDE5Lk8vY2slM0R4anMuaGQuaDlHSGphQXBobDAuTC5GNC5PL2FtJTNEQUFBRVFBQUFBQUFBQUFBQUFBUUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFCQUFBQUlFQ0FBQVpBQUFnUUFBZ0FBREJBQUFBQUFJQUFBQUFBQkFlQUFnQU1BQUFBQUFBQUFBQUFBQUFBSUFBUVFBQUlBQUFBQUFBQUFBQUVBQUFBQUFBQkFJQWlBQUFZQUFBQVFBQkZBQUFRQU1BQUFBQUFBQUFDQUFBQUFBQUFBQUFpQkFBQUFCQ0FBRHdCd1pZQXdBQUFBQUFBQUFTWVRBUUFBQUFBQkFHRmdBQUlBRUFBQUFFUUFBQUFBQUFBQUJBSkVBQ0FDQUFBQkFBQUFnQUFBQUFBQVFCaEJBRUFBRUtJQUFBQUJBQUFBS0FCUUFBQUFDZ0F4QUVBUUFBQUFCQUFBQUFDQUFFZ1JCQUFBQUFnQUFBQ2hBQUNBQUlBZ0FBQUdBRUJRQkFvZ1lDQUVDZ0F3QUFBQ0FEQUFBQUFBUUFBQUFBQUFBQUFBQUFpQUFBUUlBQUFBQ1FBQUFEQkFRQUNBQUFBRUFIUU9BQmhoUVVBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFDTElCZFNBRUJFQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFCQXlBa0FBQUFBQUlDRi9kJTNEMS9lZCUzRDEvZGclM0QwL2JyJTNEMS91amclM0QxL3JzJTNEQUNUOTBvSGxTbkN6eDVtQWRZWHk4ZTFaaC1HeEowYWw4UT9jYiUzRDEyMTUwOTM3OCxfZm10OnByb2csX2lkOl9ZM3BuYXJURUxlaW13UEFQbzZTdGtBNF8xMFx4MjZzcF9pbWdocFx4M2RmYWxzZVx4MjZzcF9ocGVwXHgzZDJceDI2c3BfaHB0ZVx4M2QwJyx3ZnBlOmZhbHNlLHdmdmU6ZmFsc2V9O3ZhciBoPXt9O3AuaD1oO2dvb2dsZS5pYS5xKHApO30pKCk7PC9zY3JpcHQ+ICAgIDwvZGl2PjxkaXY+PGRpdiBqc2NvbnRyb2xsZXI9Im1zNG1aYiIganNuYW1lPSJGQWVOQ2IiIGRhdGEtYWlwbT0iMSIgZGF0YS1lYWlwPSJ0cnVlIiBkYXRhLWVjb209InRydWUiIGRhdGEtZW5kcG9pbnQ9IjEiIGRhdGEtaXN0d2VlZD0idHJ1ZSIgaWQ9Il9ZM3BuYXJURUxlaW13UEFQbzZTdGtBNF8xMSIgZGF0YS1qaWlzPSJ1cCIgZGF0YS1hc3luYy10eXBlPSJocGJhIiBjbGFzcz0ieXAiIGpzYWN0aW9uPSJyY3VRNmI6bnBUMm1kIiBkYXRhLXZlZD0iMGFoVUtFd2owZ1pLYWxfT1ZBeFZvRXhBSUhTTlNDLUlRai0wS0NDYyI+PC9kaXY+PC9kaXY+PGRpdiBjbGFzcz0iSTV2VjkiIGlkPSJnd3Mtb3V0cHV0LXBhZ2VzLWVsZW1lbnRzLWhvbWVwYWdlX2FkZGl0aW9uYWxfbGFuZ3VhZ2VzX19hbHMiPjxzdHlsZT4jZ3dzLW91dHB1dC1wYWdlcy1lbGVtZW50cy1ob21lcGFnZV9hZGRpdGlvbmFsX2xhbmd1YWdlc19fYWxze2ZvbnQtc2l6ZTpzbWFsbDttYXJnaW4tYm90dG9tOjI0cHh9I1NJdkNvYntjb2xvcjp2YXIoLS1iYlF4QWIpO2Rpc3BsYXk6aW5saW5lLWJsb2NrO2xpbmUtaGVpZ2h0OjI4cHg7fSNTSXZDb2IgYXt9Lkg2c1c1e2Rpc3BsYXk6aW5saW5lLWJsb2NrO21hcmdpbjowIDJweDt3aGl0ZS1zcGFjZTpub3dyYXB9Lno0aGdXZXtkaXNwbGF5OmlubGluZS1ibG9jazttYXJnaW46MCAycHh9PC9zdHlsZT48ZGl2IGlkPSJTSXZDb2IiPkdvb2dsZSBww6U6ICA8YSBocmVmPSJodHRwczovL3d3dy5nb29nbGUuY29tL3NldHByZWZzP3NpZz0wXzVnUDJPZG4xU2JhN0R1ZGFVbEFRc0lLVFk3USUzRCZhbXA7aGw9ZW4mYW1wO3NvdXJjZT1ob21lcGFnZSZhbXA7c2E9WCZhbXA7dmVkPTBhaFVLRXdqMGdaS2FsX09WQXhWb0V4QUlIU05TQy1JUTJaZ0JDQ2siPkVuZ2xpc2g8L2E+ICA8L2Rpdj48L2Rpdj48L2Rpdj48ZGl2IGpzY29udHJvbGxlcj0iQjJxbFBlIiBqc25hbWU9ImNnc0tsYiIganNhY3Rpb249InJjdVE2YjpucFQybWQiPjxzdHlsZT4uY2VFM1J7b3BhY2l0eTowLjA2O3BvaW50ZXItZXZlbnRzOm5vbmV9PC9zdHlsZT48L2Rpdj48ZGl2IGNsYXNzPSJvM2o5OSI+PGRpdiBjbGFzcz0iYzkzR2JlIiByb2xlPSJjb250ZW50aW5mbyI+PHN0eWxlPi5jOTNHYmV7YmFja2dyb3VuZDojZjNmNWY2O29wYWNpdHk6MTt0cmFuc2l0aW9uOm9wYWNpdHkgNTBtcyBsaW5lYXIsdmlzaWJpbGl0eSA1MG1zIGxpbmVhcn0uZkxDM3VmIC5jOTNHYmV7b3BhY2l0eTowO3Zpc2liaWxpdHk6aGlkZGVuO292ZXJmbG93OmhpZGRlbn0udVU3ZEpie3BhZGRpbmc6MTVweCAzMHB4O2JvcmRlci1ib3R0b206MXB4IHNvbGlkIHZhcigtLWdTNWpYYik7Zm9udC1zaXplOjE1cHg7Y29sb3I6dmFyKC0tWUxOTkhjKTtkaXNwbGF5OmZsZXg7ZmxleC13cmFwOndyYXA7anVzdGlmeS1jb250ZW50OnNwYWNlLWJldHdlZW59Lld5bWVjZXtqdXN0aWZ5LWNvbnRlbnQ6ZmxleC1lbmR9LlNTd2pJZXtwYWRkaW5nOjAgMjBweH0uS3h3UEdje2Rpc3BsYXk6ZmxleDtmbGV4LXdyYXA6d3JhcDtqdXN0aWZ5LWNvbnRlbnQ6c3BhY2UtYmV0d2Vlbn1AbWVkaWEgb25seSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6MTIwMHB4KXsuS3h3UEdje2p1c3RpZnktY29udGVudDpzcGFjZS1ldmVubHl9fS5wSGlPaHtkaXNwbGF5OmJsb2NrO3BhZGRpbmc6MTVweDt3aGl0ZS1zcGFjZTpub3dyYXB9LnBIaU9oLGEucEhpT2h7Y29sb3I6dmFyKC0tWUxOTkhjKX0ua3RMS2l7d2hpdGUtc3BhY2U6bm93cmFwO3ZlcnRpY2FsLWFsaWduOnRvcH0uUGI5aENie2hlaWdodDoxNHB4O21hcmdpbi1yaWdodDo2cHh9LnNzT1V5YntvcmRlcjoyfUBtZWRpYSBvbmx5IHNjcmVlbiBhbmQgKG1heC13aWR0aDoxMjAwcHgpey5zc09VeWJ7b3JkZXI6MDt3aWR0aDoxMDAlO2p1c3RpZnktY29udGVudDpjZW50ZXJ9fS53YUxlR2QgLnNzT1V5YntvcmRlcjowO3dpZHRoOjEwMCU7anVzdGlmeS1jb250ZW50OmNlbnRlcn0uQWdoR3Rke2p1c3RpZnktY29udGVudDpmbGV4LXN0YXJ0O21pbi13aWR0aDozMCU7b3JkZXI6MX0uaVRqeGtme2p1c3RpZnktY29udGVudDpmbGV4LWVuZDttaW4td2lkdGg6MzAlO29yZGVyOjN9PC9zdHlsZT48ZGl2IGNsYXNzPSJ1VTdkSmIiPk5vcmdlPGRpdiBjbGFzcz0iV3ltZWNlIj48ZGl2PsOFcGVuaGV0c2xvdmVuIG9nIEdvb2dsZSBOb3J3YXkgQVM6IExlcyByZWRlZ2rDuHJlbHNlIGZvciBha3Rzb21oZXRzdnVyZGVyaW5nZXIgPHNwYW4+PGEgaHJlZj0iaHR0cHM6Ly9zdXN0YWluYWJpbGl0eS5nb29nbGUvZmlsZXMvMjAyNS1ub3J3ZWdpYW4tdHJhbnNwYXJlbmN5LWFjdC1zdGF0ZW1lbnQucGRmIj5oZXI8L2E+PC9zcGFuPi48L2Rpdj48L2Rpdj48L2Rpdj48ZGl2IGpzY29udHJvbGxlcj0iTnpVNlYiIGNsYXNzPSJLeHdQR2MgU1N3akllIiBkYXRhLXNmZT0idHJ1ZSIgZGF0YS1zZnN3PSIxMjAwIiBqc2FjdGlvbj0icmN1UTZiOm5wVDJtZCI+PGRpdiBjbGFzcz0iS3h3UEdjIEFnaEd0ZCI+PGEgY2xhc3M9InBIaU9oIiBocmVmPSJodHRwczovL3d3dy5nb29nbGUuY29tL2ludGwvbm9fbm8vYWRzLz9zdWJpZD13dy13dy1ldC1nLWF3YS1hLWdfaHBhZm9vdDFfMSFvMiZhbXA7dXRtX3NvdXJjZT1nb29nbGUuY29tJmFtcDt1dG1fbWVkaXVtPXJlZmVycmFsJmFtcDt1dG1fY2FtcGFpZ249Z29vZ2xlX2hwYWZvb3RlciZhbXA7Zmc9MSIgZGF0YS1zYj0iL3VybD9zYT10JmFtcDtyY3Q9aiZhbXA7c291cmNlPXdlYmhwJmFtcDt1cmw9aHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9pbnRsL25vX25vL2Fkcy8lM0ZzdWJpZCUzRHd3LXd3LWV0LWctYXdhLWEtZ19ocGFmb290MV8xIW8yJTI2dXRtX3NvdXJjZSUzRGdvb2dsZS5jb20lMjZ1dG1fbWVkaXVtJTNEcmVmZXJyYWwlMjZ1dG1fY2FtcGFpZ24lM0Rnb29nbGVfaHBhZm9vdGVyJTI2ZmclM0QxJmFtcDt2ZWQ9MGFoVUtFd2owZ1pLYWxfT1ZBeFZvRXhBSUhTTlNDLUlRa2RRQ0NDdyZhbXA7b3BpPTg5OTc4NDQ5JmFtcDt1c2c9QU92VmF3MTRLY19TeWl0TE83SXVObXQ1UXlIUSI+QW5ub25zZXJpbmc8L2E+PGEgY2xhc3M9InBIaU9oIiBocmVmPSJodHRwczovL3d3dy5nb29nbGUuY29tL3NlcnZpY2VzLz9zdWJpZD13dy13dy1ldC1nLWF3YS1hLWdfaHBiZm9vdDFfMSFvMiZhbXA7dXRtX3NvdXJjZT1nb29nbGUuY29tJmFtcDt1dG1fbWVkaXVtPXJlZmVycmFsJmFtcDt1dG1fY2FtcGFpZ249Z29vZ2xlX2hwYmZvb3RlciZhbXA7Zmc9MSIgZGF0YS1zYj0iL3VybD9zYT10JmFtcDtyY3Q9aiZhbXA7c291cmNlPXdlYmhwJmFtcDt1cmw9aHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9zZXJ2aWNlcy8lM0ZzdWJpZCUzRHd3LXd3LWV0LWctYXdhLWEtZ19ocGJmb290MV8xIW8yJTI2dXRtX3NvdXJjZSUzRGdvb2dsZS5jb20lMjZ1dG1fbWVkaXVtJTNEcmVmZXJyYWwlMjZ1dG1fY2FtcGFpZ24lM0Rnb29nbGVfaHBiZm9vdGVyJTI2ZmclM0QxJmFtcDt2ZWQ9MGFoVUtFd2owZ1pLYWxfT1ZBeFZvRXhBSUhTTlNDLUlRa3RRQ0NDMCZhbXA7b3BpPTg5OTc4NDQ5JmFtcDt1c2c9QU92VmF3MlNKNHp3UlZYS3lacjUzcUc5ZG00SyI+QmVkcmlmdGVyPC9hPjxhIGNsYXNzPSJwSGlPaCIgaHJlZj0iaHR0cHM6Ly9nb29nbGUuY29tL3NlYXJjaC9ob3dzZWFyY2h3b3Jrcy8/Zmc9MSI+IFNsaWsgZnVuZ2VyZXIgU8O4ayA8L2E+PC9kaXY+PGRpdiBjbGFzcz0iS3h3UEdjIHNzT1V5YiI+PGEgY2xhc3M9InBIaU9oIiBocmVmPSJodHRwczovL3N1c3RhaW5hYmlsaXR5Lmdvb2dsZS9pbnRsL25vL2NhcmJvbi1mcmVlLz91dG1fc291cmNlPWdvb2dsZWhwZm9vdGVyJmFtcDt1dG1fbWVkaXVtPWhvdXNlcHJvbW9zJmFtcDt1dG1fY2FtcGFpZ249Ym90dG9tLWZvb3RlciZhbXA7dXRtX2NvbnRlbnQ9IiBkYXRhLXNiPSIvdXJsP3NhPXQmYW1wO3JjdD1qJmFtcDtzb3VyY2U9d2ViaHAmYW1wO3VybD1odHRwczovL3N1c3RhaW5hYmlsaXR5Lmdvb2dsZS9pbnRsL25vL2NhcmJvbi1mcmVlLyUzRnV0bV9zb3VyY2UlM0Rnb29nbGVocGZvb3RlciUyNnV0bV9tZWRpdW0lM0Rob3VzZXByb21vcyUyNnV0bV9jYW1wYWlnbiUzRGJvdHRvbS1mb290ZXIlMjZ1dG1fY29udGVudCUzRCZhbXA7dmVkPTBhaFVLRXdqMGdaS2FsX09WQXhWb0V4QUlIU05TQy1JUWlNOEhDQzQmYW1wO29waT04OTk3ODQ0OSZhbXA7dXNnPUFPdlZhdzJLZmM0cU9JNHgtRFp5ODA3X1BjT0giPjxpbWcgc3JjPSJkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUJVQUFBQVlDQU1BQUFBaVYwWjZBQUFBUEZCTVZFVkxvRU4wd1U2Q3pGS0N6RktDekZLQ3pGS0N6RkpTbzBNU2N6TkRta0NDekZKUG9VTVRjek5kcjBnbWd6aUN6RklUY3pNVGN6TVRjek1UY3pQaDAwak9BQUFBRkhSU1RsUEYvK2JJc21zOEFkLy8vaFgrLy81L3RYdzdhTUVBeDEwQUFBQ2FTVVJCVkhnQmJjNEhEb1JRQ0FUUTMzdGJ2ZjlkRjlReGFDVDlVUWFsdExIT2gvZ29sWEtoTXM1WHFhMHhVMWx5b2EyZlhGeVFPc0RHMzhxc0x5NFRhVitzRmlzbG92eWhQekxKSnJCdTZlUU90cFcwTGpiSmt6VHVURExSVk5LYTN1eEpJK1ZkaVJxWFNldTZHVytReGkyOWVMSWk4SDdFc1lyVDQyQkQrbVF0Tk81Sk1qUnVDNGxTWThWNGhzTFgwZWdHaWp2VVNFUDlBYnlsRXNPa2VDZ1dBQUFBQUVsRlRrU3VRbUNDIiBjbGFzcz0iUGI5aENiIiBhbHQ9IiI+PHNwYW4gY2xhc3M9Imt0TEtpIj5Ww6VydCB0cmVkamUgdGnDpXIgbWVkIGtsaW1hdGlsdGFrOiBTZSBmcmVtZ2FuZ2VuIHbDpXI8L3NwYW4+PC9hPjwvZGl2PjxkaXYgY2xhc3M9Ikt4d1BHYyBpVGp4a2YiPjxhIGNsYXNzPSJwSGlPaCIgaHJlZj0iaHR0cHM6Ly9wb2xpY2llcy5nb29nbGUuY29tL3ByaXZhY3k/aGw9bm8mYW1wO2ZnPTEiIGRhdGEtc2I9Ii91cmw/c2E9dCZhbXA7cmN0PWomYW1wO3NvdXJjZT13ZWJocCZhbXA7dXJsPWh0dHBzOi8vcG9saWNpZXMuZ29vZ2xlLmNvbS9wcml2YWN5JTNGaGwlM0RubyUyNmZnJTNEMSZhbXA7dmVkPTBhaFVLRXdqMGdaS2FsX09WQXhWb0V4QUlIU05TQy1JUThhd0NDQzgmYW1wO29waT04OTk3ODQ0OSZhbXA7dXNnPUFPdlZhdzAwd0Y0LWwwMFpZVUxvaV9FaEptVjIiPlBlcnNvbnZlcm48L2E+PGEgY2xhc3M9InBIaU9oIiBocmVmPSJodHRwczovL3BvbGljaWVzLmdvb2dsZS5jb20vdGVybXM/aGw9bm8mYW1wO2ZnPTEiIGRhdGEtc2I9Ii91cmw/c2E9dCZhbXA7cmN0PWomYW1wO3NvdXJjZT13ZWJocCZhbXA7dXJsPWh0dHBzOi8vcG9saWNpZXMuZ29vZ2xlLmNvbS90ZXJtcyUzRmhsJTNEbm8lMjZmZyUzRDEmYW1wO3ZlZD0wYWhVS0V3ajBnWkthbF9PVkF4Vm9FeEFJSFNOU0MtSVE4cXdDQ0RBJmFtcDtvcGk9ODk5Nzg0NDkmYW1wO3VzZz1BT3ZWYXcweWxLbl90OGUwYldHRTJVbjNTNEE2Ij5WaWxrw6VyPC9hPjxzcGFuPjxzdHlsZT4uYXl6cU9jOmhvdmVye3RleHQtZGVjb3JhdGlvbjp1bmRlcmxpbmV9PC9zdHlsZT48c3BhbiBqc2NvbnRyb2xsZXI9Im5hYlBiYiIgZGF0YS1mZnA9ImZhbHNlIiBqc2FjdGlvbj0iS3lQYTBlOlkweTRjO3dqT0c3ZTpnRGtmNGM7Ij48c3R5bGU+LkVmRkt3Y3tiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLXhoVUd3Yyl9LkVmRkt3YyBnLW1lbnUtaXRlbXtkaXNwbGF5OmJsb2NrO2ZvbnQtc2l6ZTp2YXIoLS1oYm1uamUpO2xpbmUtaGVpZ2h0OjIzcHg7d2hpdGUtc3BhY2U6bm93cmFwfS5FZkZLd2MgZy1tZW51LWl0ZW0gYSwuRWZGS3djIC55MGZROWN7ZGlzcGxheTpibG9jaztwYWRkaW5nLXRvcDo0cHg7cGFkZGluZy1ib3R0b206NHB4O2N1cnNvcjpwb2ludGVyfS5FZkZLd2MgZy1tZW51LWl0ZW0gYSwuRWZGS3djIGctbWVudS1pdGVtIGE6dmlzaXRlZCwuRWZGS3djIGctbWVudS1pdGVtIGE6aG92ZXJ7dGV4dC1kZWNvcmF0aW9uOmluaGVyaXQ7Y29sb3I6aW5oZXJpdH08L3N0eWxlPjxnLXBvcHVwIGpzbmFtZT0iVjY4YmRlIiBqc2NvbnRyb2xsZXI9IkRQcmVFIiBqc2FjdGlvbj0iQTA1eEJkOklZdEJ5YjtFT1o1N2U6V0ZyUkZiOyIganNkYXRhPSJtVmpBamY7XztZM3BuYXJURUxlaW13UEFQbzZTdGtBNDUiPjxkaXYganNuYW1lPSJvWXh0UWQiIGNsYXNzPSJDY05lNmUiIGFyaWEtZXhwYW5kZWQ9ImZhbHNlIiBhcmlhLWhhc3BvcHVwPSJ0cnVlIiByb2xlPSJidXR0b24iIHRhYmluZGV4PSIwIiBqc2FjdGlvbj0iV0ZyUkZiO2tleWRvd246dVlUMlZiIj48ZGl2IGpzbmFtZT0iTGdic1NlIiBjbGFzcz0iYXl6cU9jIHBIaU9oIiBhcmlhLWNvbnRyb2xzPSJfWTNwbmFyVEVMZWltd1BBUG82U3RrQTRfMTIiIGFyaWEtaGFzcG9wdXA9InRydWUiPklubnN0aWxsaW5nZXI8L2Rpdj48L2Rpdj48ZGl2IGpzbmFtZT0iVjY4YmRlIiBjbGFzcz0iVWpCR0wgcGtXQnNlIGlSUUhaZSIgc3R5bGU9ImRpc3BsYXk6bm9uZTt6LWluZGV4OjIwMCI+PGctbWVudSBqc25hbWU9InhsMDdPYiIgY2xhc3M9IkVmRkt3YyB5VGlrMCBQQm40NGUgaVFYVEplIHdwbEpCZCIganNjb250cm9sbGVyPSJXbE5RR2QiIHJvbGU9Im1lbnUiIHRhYmluZGV4PSItMSIganNhY3Rpb249IlBTbDI4Yztmb2N1czpoMDZSODtrZXlkb3duOnVZVDJWYjttb3VzZWVudGVyOldPUXFZYjttb3VzZWxlYXZlOlR4NVJiO21vdXNlb3ZlcjpJZ0psOWMiPjxnLW1lbnUtaXRlbSBqc25hbWU9Ik5OSkx1ZCIganNjb250cm9sbGVyPSJDblNXMmQiIGNsYXNzPSJFcFBZTGQgR1puUXFlIiByb2xlPSJub25lIiBkYXRhLXNob3J0LWxhYmVsPSIiIGpzZGF0YT0ielBYemllO187WTNwbmFyVEVMZWltd1BBUG82U3RrQTQ2Ij48ZGl2IGpzbmFtZT0iaWJuQzZiIiBjbGFzcz0iWXBjRG5mIE9TclhYYiBIRzFkdmQiIHJvbGU9Im5vbmUiPjxhIGhyZWY9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vcHJlZmVyZW5jZXM/aGw9bm8mYW1wO2ZnPTEiIHJvbGU9Im1lbnVpdGVtIiB0YWJpbmRleD0iLTEiIGRhdGEtc2I9Ii91cmw/c2E9dCZhbXA7cmN0PWomYW1wO3NvdXJjZT13ZWJocCZhbXA7dXJsPWh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vcHJlZmVyZW5jZXMlM0ZobCUzRG5vJTI2ZmclM0QxJmFtcDt2ZWQ9MGFoVUtFd2owZ1pLYWxfT1ZBeFZvRXhBSUhTTlNDLUlRczRnT0NETSZhbXA7b3BpPTg5OTc4NDQ5JmFtcDt1c2c9QU92VmF3MUo4M1dzeWhZeEttMkMxekhZbG5jNiI+SW5uc3RpbGxpbmdlciBmb3Igc8O4azwvYT48L2Rpdj48L2ctbWVudS1pdGVtPjxnLW1lbnUtaXRlbSBqc25hbWU9Ik5OSkx1ZCIganNjb250cm9sbGVyPSJDblNXMmQiIGNsYXNzPSJFcFBZTGQgR1puUXFlIiByb2xlPSJub25lIiBkYXRhLXNob3J0LWxhYmVsPSIiIGpzZGF0YT0ielBYemllO187WTNwbmFyVEVMZWltd1BBUG82U3RrQTQ2Ij48ZGl2IGpzbmFtZT0iaWJuQzZiIiBjbGFzcz0iWXBjRG5mIE9TclhYYiBIRzFkdmQiIHJvbGU9Im5vbmUiPjxhIGhyZWY9Ii9hZHZhbmNlZF9zZWFyY2g/aGw9bm8mYW1wO2ZnPTEiIHJvbGU9Im1lbnVpdGVtIiB0YWJpbmRleD0iLTEiIGRhdGEtc2I9Ii91cmw/c2E9dCZhbXA7cmN0PWomYW1wO3NvdXJjZT13ZWJocCZhbXA7dXJsPS9hZHZhbmNlZF9zZWFyY2glM0ZobCUzRG5vJTI2ZmclM0QxJmFtcDt2ZWQ9MGFoVUtFd2owZ1pLYWxfT1ZBeFZvRXhBSUhTTlNDLUlRM29nT0NEUSZhbXA7b3BpPTg5OTc4NDQ5JmFtcDt1c2c9QU92VmF3Mjk3NWVOTnJCSVBoOWZjazZEbV9qNCI+QXZhbnNlcnQgc8O4azwvYT48L2Rpdj48L2ctbWVudS1pdGVtPjxnLW1lbnUtaXRlbSBqc25hbWU9Ik5OSkx1ZCIganNjb250cm9sbGVyPSJDblNXMmQiIGNsYXNzPSJFcFBZTGQgR1puUXFlIiByb2xlPSJub25lIiBkYXRhLXNob3J0LWxhYmVsPSIiIGpzZGF0YT0ielBYemllO187WTNwbmFyVEVMZWltd1BBUG82U3RrQTQ2Ij48ZGl2IGpzbmFtZT0iaWJuQzZiIiBjbGFzcz0iWXBjRG5mIE9TclhYYiBIRzFkdmQiIHJvbGU9Im5vbmUiPjxhIGhyZWY9Ii9oaXN0b3J5L3ByaXZhY3lhZHZpc29yL3NlYXJjaC91bmF1dGg/dXRtX3NvdXJjZT1nb29nbGVtZW51JmFtcDtmZz0xJmFtcDtjY3RsZD1jb20iIHJvbGU9Im1lbnVpdGVtIiB0YWJpbmRleD0iLTEiIGRhdGEtc2I9Ii91cmw/c2E9dCZhbXA7cmN0PWomYW1wO3NvdXJjZT13ZWJocCZhbXA7dXJsPS9oaXN0b3J5L3ByaXZhY3lhZHZpc29yL3NlYXJjaC91bmF1dGglM0Z1dG1fc291cmNlJTNEZ29vZ2xlbWVudSUyNmZnJTNEMSUyNmNjdGxkJTNEY29tJmFtcDt2ZWQ9MGFoVUtFd2owZ1pLYWxfT1ZBeFZvRXhBSUhTTlNDLUlRZ29ZT0NEVSZhbXA7b3BpPTg5OTc4NDQ5JmFtcDt1c2c9QU92VmF3MnIwWmkyeTkwU0ZzTXJ3ZEI4ZlVjeiI+RGF0YWVuZSBkaW5lIGkgU8O4azwvYT48L2Rpdj48L2ctbWVudS1pdGVtPjxnLW1lbnUtaXRlbSBqc25hbWU9Ik5OSkx1ZCIganNjb250cm9sbGVyPSJDblNXMmQiIGNsYXNzPSJFcFBZTGQgR1puUXFlIiByb2xlPSJub25lIiBkYXRhLXNob3J0LWxhYmVsPSIiIGpzZGF0YT0ielBYemllO187WTNwbmFyVEVMZWltd1BBUG82U3RrQTQ2Ij48ZGl2IGpzbmFtZT0iaWJuQzZiIiBjbGFzcz0iWXBjRG5mIE9TclhYYiBIRzFkdmQiIHJvbGU9Im5vbmUiPjxhIGhyZWY9Imh0dHBzOi8vY29uc2VudC5nb29nbGUuY29tL2Q/Y29udGludWU9aHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS8mYW1wO2dsPU5PJmFtcDttPTAmYW1wO3BjPXNocCZhbXA7Y209NSZhbXA7aGw9bm8mYW1wO3NyYz00IiByb2xlPSJtZW51aXRlbSIgdGFiaW5kZXg9Ii0xIiBkYXRhLXNiPSIvdXJsP3NhPXQmYW1wO3JjdD1qJmFtcDtzb3VyY2U9d2ViaHAmYW1wO3VybD1odHRwczovL2NvbnNlbnQuZ29vZ2xlLmNvbS9kJTNGY29udGludWUlM0RodHRwczovL3d3dy5nb29nbGUuY29tLyUyNmdsJTNETk8lMjZtJTNEMCUyNnBjJTNEc2hwJTI2Y20lM0Q1JTI2aGwlM0RubyUyNnNyYyUzRDQmYW1wO3ZlZD0wYWhVS0V3ajBnWkthbF9PVkF4Vm9FeEFJSFNOU0MtSVEwb29PQ0RZJmFtcDtvcGk9ODk5Nzg0NDkmYW1wO3VzZz1BT3ZWYXczaGFfd1EtRW10MVg3V2xsUUNYTld5Ij5QZXJzb25saWcgdGlscGFzbmluZyBvZyBpbmZvcm1hc2pvbnNrYXBzbGVyPC9hPjwvZGl2PjwvZy1tZW51LWl0ZW0+PGctbWVudS1pdGVtIGpzbmFtZT0iTk5KTHVkIiBqc2NvbnRyb2xsZXI9IkNuU1cyZCIgY2xhc3M9IkVwUFlMZCBHWm5RcWUiIHJvbGU9Im5vbmUiIGRhdGEtc2hvcnQtbGFiZWw9IiIganNkYXRhPSJ6UFh6aWU7XztZM3BuYXJURUxlaW13UEFQbzZTdGtBNDYiPjxkaXYganNuYW1lPSJpYm5DNmIiIGNsYXNzPSJZcGNEbmYgT1NyWFhiIEhHMWR2ZCIgcm9sZT0ibm9uZSI+PGEgaHJlZj0iL2hpc3Rvcnkvb3B0b3V0P2hsPW5vJmFtcDtmZz0xIiByb2xlPSJtZW51aXRlbSIgdGFiaW5kZXg9Ii0xIiBkYXRhLXNiPSIvdXJsP3NhPXQmYW1wO3JjdD1qJmFtcDtzb3VyY2U9d2ViaHAmYW1wO3VybD0vaGlzdG9yeS9vcHRvdXQlM0ZobCUzRG5vJTI2ZmclM0QxJmFtcDt2ZWQ9MGFoVUtFd2owZ1pLYWxfT1ZBeFZvRXhBSUhTTlNDLUlRNFlnT0NEYyZhbXA7b3BpPTg5OTc4NDQ5JmFtcDt1c2c9QU92VmF3MDBRVGJiWkdzOTZidm44aGRtVnVDQSI+U8O4a2Vsb2dnPC9hPjwvZGl2PjwvZy1tZW51LWl0ZW0+PGctbWVudS1pdGVtIGpzbmFtZT0iTk5KTHVkIiBqc2NvbnRyb2xsZXI9IkNuU1cyZCIgY2xhc3M9IkVwUFlMZCBHWm5RcWUiIHJvbGU9Im5vbmUiIGRhdGEtc2hvcnQtbGFiZWw9IiIganNkYXRhPSJ6UFh6aWU7XztZM3BuYXJURUxlaW13UEFQbzZTdGtBNDYiPjxkaXYganNuYW1lPSJpYm5DNmIiIGNsYXNzPSJZcGNEbmYgT1NyWFhiIEhHMWR2ZCIgcm9sZT0ibm9uZSI+PGEgaHJlZj0iaHR0cHM6Ly9zdXBwb3J0Lmdvb2dsZS5jb20vd2Vic2VhcmNoLz9wPXdzX3Jlc3VsdHNfaGVscCZhbXA7aGw9bm8mYW1wO2ZnPTEiIHJvbGU9Im1lbnVpdGVtIiB0YWJpbmRleD0iLTEiIGRhdGEtc2I9Ii91cmw/c2E9dCZhbXA7cmN0PWomYW1wO3NvdXJjZT13ZWJocCZhbXA7dXJsPWh0dHBzOi8vc3VwcG9ydC5nb29nbGUuY29tL3dlYnNlYXJjaC8lM0ZwJTNEd3NfcmVzdWx0c19oZWxwJTI2aGwlM0RubyUyNmZnJTNEMSZhbXA7dmVkPTBhaFVLRXdqMGdaS2FsX09WQXhWb0V4QUlIU05TQy1JUTRJZ09DRGcmYW1wO29waT04OTk3ODQ0OSZhbXA7dXNnPUFPdlZhdzBUcmxKYmdvR0xSbW5UeUo5Yi1FNmIiPkhqZWxwIGZvciBzw7hrPC9hPjwvZGl2PjwvZy1tZW51LWl0ZW0+PGctbWVudS1pdGVtIGpzbmFtZT0iTk5KTHVkIiBqc2NvbnRyb2xsZXI9IkNuU1cyZCIgY2xhc3M9IkVwUFlMZCBHWm5RcWUiIHJvbGU9Im5vbmUiIGRhdGEtc2hvcnQtbGFiZWw9IiIganNkYXRhPSJ6UFh6aWU7XztZM3BuYXJURUxlaW13UEFQbzZTdGtBNDYiPjxkaXYganNuYW1lPSJpYm5DNmIiIGNsYXNzPSJZcGNEbmYgT1NyWFhiIEhHMWR2ZCIgcm9sZT0ibm9uZSI+PHNwYW4ganNjb250cm9sbGVyPSJuUndXbmUiIGRhdGEtYnVja2V0PSJ3ZWJzZWFyY2giIHJvbGU9Im1lbnVpdGVtIiB0YWJpbmRleD0iLTEiIGpzYWN0aW9uPSJJZXZZQWQiIGRhdGEtdmVkPSIwYWhVS0V3ajBnWkthbF9PVkF4Vm9FeEFJSFNOU0MtSVE0b2dPQ0RrIj5TZW5kIHRpbGJha2VtZWxkaW5nPC9zcGFuPjwvZGl2PjwvZy1tZW51LWl0ZW0+PGctbWVudS1pdGVtIGpzbmFtZT0iTk5KTHVkIiBqc2NvbnRyb2xsZXI9IkNuU1cyZCIgY2xhc3M9IkVwUFlMZCBHWm5RcWUgTEdpbHVjIiBhcmlhLWhpZGRlbj0idHJ1ZSIgcm9sZT0ic2VwYXJhdG9yIiBkYXRhLXNob3J0LWxhYmVsPSIiIGpzZGF0YT0ielBYemllO187WTNwbmFyVEVMZWltd1BBUG82U3RrQTQ3Ij48L2ctbWVudS1pdGVtPjxnLW1lbnUtaXRlbSBqc25hbWU9Ik5OSkx1ZCIganNjb250cm9sbGVyPSJDblNXMmQiIGNsYXNzPSJFcFBZTGQgR1puUXFlIiByb2xlPSJub25lIiBkYXRhLXNob3J0LWxhYmVsPSIiIGpzZGF0YT0ielBYemllO187WTNwbmFyVEVMZWltd1BBUG82U3RrQTQ2Ij48ZGl2IGpzbmFtZT0iaWJuQzZiIiBjbGFzcz0iWXBjRG5mIE9TclhYYiBIRzFkdmQiIHJvbGU9Im5vbmUiPjxkaXYgY2xhc3M9InkwZlE5YyIgZGF0YS1zcGw9Ii9zZXRwcmVmcz9obD1ubyZhbXA7cHJldj1odHRwczovL3d3dy5nb29nbGUuY29tLz9zY2FfZXN2JTNEODNiOTBmMjRhOWExNTYyOSUyNm91dHB1dCUzRHNlYXJjaCUyNnBjY2MlM0QxJmFtcDtzaWc9MF81Z1AyT2RuMVNiYTdEdWRhVWxBUXNJS1RZN1ElM0QmYW1wO2NzPTIiIGlkPSJZVUlERGIiIHJvbGU9Im1lbnVpdGVtIiB0YWJpbmRleD0iLTEiPjxzdHlsZT4udEZZalple2FsaWduLWl0ZW1zOmNlbnRlcjtkaXNwbGF5OmZsZXg7anVzdGlmeS1jb250ZW50OnNwYWNlLWJldHdlZW47cGFkZGluZy1ib3R0b206NHB4O3BhZGRpbmctdG9wOjRweH0udEZZalplOmhvdmVyIC5pT0hOTGIsLnRGWWpaZTpmb2N1cyAuaU9ITkxie29wYWNpdHk6MX0uaU9ITkxie2NvbG9yOnZhcigtLWFtblB3ZSk7aGVpZ2h0OjIwcHg7bWFyZ2luLXRvcDotMnB4O29wYWNpdHk6MDt3aWR0aDoyMHB4fTwvc3R5bGU+PGRpdiBqc2NvbnRyb2xsZXI9ImZYTzB4ZSIgY2xhc3M9InRGWWpaZSIgZGF0YS1zcHQ9IjEiIHJvbGU9ImxpbmsiIHRhYmluZGV4PSIwIiBqc2FjdGlvbj0ib2s1Z0ZjIiBkYXRhLXZlZD0iMGFoVUtFd2owZ1pLYWxfT1ZBeFZvRXhBSUhTTlNDLUlRcXNFSENEbyI+TcO4cmt0IHRlbWE6IGF2PGRpdiBjbGFzcz0iaU9ITkxiIj48c3BhbiBzdHlsZT0iaGVpZ2h0OjIwcHg7bGluZS1oZWlnaHQ6MjBweDt3aWR0aDoyMHB4IiBjbGFzcz0iejFhc0NlIGFxdnhjZCI+PHN2ZyBmb2N1c2FibGU9ImZhbHNlIiBhcmlhLWhpZGRlbj0idHJ1ZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiBlbmFibGUtYmFja2dyb3VuZD0ibmV3IDAgMCAyNCAyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0IiB3aWR0aD0iMjQiPjxyZWN0IGZpbGw9Im5vbmUiIGhlaWdodD0iMjQiIHdpZHRoPSIyNCI+PC9yZWN0PjxwYXRoIGQ9Ik0xMiw3Yy0yLjc2LDAtNSwyLjI0LTUsNXMyLjI0LDUsNSw1czUtMi4yNCw1LTVTMTQuNzYsNywxMiw3TDEyLDd6IE0yLDEzbDIsMGMwLjU1LDAsMS0wLjQ1LDEtMXMtMC40NS0xLTEtMWwtMiwwIGMtMC41NSwwLTEsMC40NS0xLDFTMS40NSwxMywyLDEzeiBNMjAsMTNsMiwwYzAuNTUsMCwxLTAuNDUsMS0xcy0wLjQ1LTEtMS0xbC0yLDBjLTAuNTUsMC0xLDAuNDUtMSwxUzE5LjQ1LDEzLDIwLDEzeiBNMTEsMnYyIGMwLDAuNTUsMC40NSwxLDEsMXMxLTAuNDUsMS0xVjJjMC0wLjU1LTAuNDUtMS0xLTFTMTEsMS40NSwxMSwyeiBNMTEsMjB2MmMwLDAuNTUsMC40NSwxLDEsMXMxLTAuNDUsMS0xdi0yYzAtMC41NS0wLjQ1LTEtMS0xIEMxMS40NSwxOSwxMSwxOS40NSwxMSwyMHogTTUuOTksNC41OGMtMC4zOS0wLjM5LTEuMDMtMC4zOS0xLjQxLDBjLTAuMzksMC4zOS0wLjM5LDEuMDMsMCwxLjQxbDEuMDYsMS4wNiBjMC4zOSwwLjM5LDEuMDMsMC4zOSwxLjQxLDBzMC4zOS0xLjAzLDAtMS40MUw1Ljk5LDQuNTh6IE0xOC4zNiwxNi45NWMtMC4zOS0wLjM5LTEuMDMtMC4zOS0xLjQxLDBjLTAuMzksMC4zOS0wLjM5LDEuMDMsMCwxLjQxIGwxLjA2LDEuMDZjMC4zOSwwLjM5LDEuMDMsMC4zOSwxLjQxLDBjMC4zOS0wLjM5LDAuMzktMS4wMywwLTEuNDFMMTguMzYsMTYuOTV6IE0xOS40Miw1Ljk5YzAuMzktMC4zOSwwLjM5LTEuMDMsMC0xLjQxIGMtMC4zOS0wLjM5LTEuMDMtMC4zOS0xLjQxLDBsLTEuMDYsMS4wNmMtMC4zOSwwLjM5LTAuMzksMS4wMywwLDEuNDFzMS4wMywwLjM5LDEuNDEsMEwxOS40Miw1Ljk5eiBNNy4wNSwxOC4zNiBjMC4zOS0wLjM5LDAuMzktMS4wMywwLTEuNDFjLTAuMzktMC4zOS0xLjAzLTAuMzktMS40MSwwbC0xLjA2LDEuMDZjLTAuMzksMC4zOS0wLjM5LDEuMDMsMCwxLjQxczEuMDMsMC4zOSwxLjQxLDBMNy4wNSwxOC4zNnoiPjwvcGF0aD48L3N2Zz48L3NwYW4+PC9kaXY+PC9kaXY+PC9kaXY+PC9kaXY+PC9nLW1lbnUtaXRlbT48L2ctbWVudT48L2Rpdj48L2ctcG9wdXA+PC9zcGFuPjwvc3Bhbj48L2Rpdj48L2Rpdj48ZGl2IGpzY29udHJvbGxlcj0iekdMbTNiIiBzdHlsZT0iZGlzcGxheTpub25lIiBkYXRhLWZjPSItMSIgZGF0YS1wY29uPSItMSIgZGF0YS1wY3M9IjAiIGpzYWN0aW9uPSJyY3VRNmI6bnBUMm1kIj48L2Rpdj48L2Rpdj48L2Rpdj48L2Rpdj48ZGl2IGNsYXNzPSJMU0NPQWYiPjxzdHlsZT4uTFNDT0Fme2hlaWdodDowO292ZXJmbG93OmhpZGRlbn08L3N0eWxlPjxkaXYgY2xhc3M9IlFlMFRIZSBPTEtUOGQiIGlkPSJsYiI+PHN0eWxlPi5RZTBUSGV7ei1pbmRleDoxMTAxO3Bvc2l0aW9uOmFic29sdXRlO3RvcDotMTAwMHB4fTwvc3R5bGU+PC9kaXY+PHN0eWxlPi5FTTFNcmJ7b3ZlcmZsb3c6aGlkZGVufS5IVGp0SGV7ZGlzcGxheTpub25lfS52VWQ0amJ7cG9zaXRpb246Zml4ZWQ7ei1pbmRleDo5OTk3O3JpZ2h0OjA7Ym90dG9tOi0yMDBweDt0b3A6MDtsZWZ0OjA7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1nVlVLY2QpfS5IYnU0eXtoZWlnaHQ6MXB4O2xlZnQ6LTEwMDBweDttYXJnaW46LTFweDtvdmVyZmxvdzpoaWRkZW47cG9zaXRpb246YWJzb2x1dGU7d2lkdGg6MXB4fS5qdzhtSXtwb3NpdGlvbjpmaXhlZDtyaWdodDowO2JvdHRvbTowO3RvcDowO2xlZnQ6MDt6LWluZGV4Ojk5OTg7dmVydGljYWwtYWxpZ246bWlkZGxlO3doaXRlLXNwYWNlOm5vd3JhcDttYXgtaGVpZ2h0OjEwMCU7bWF4LXdpZHRoOjEwMCU7b3ZlcmZsb3cteDphdXRvO292ZXJmbG93LXk6YXV0bzt0ZXh0LWFsaWduOmNlbnRlcjt0YXAtaGlnaGxpZ2h0LWNvbG9yOnRyYW5zcGFyZW50fS5qdzhtSTo6YWZ0ZXJ7Y29udGVudDonJztkaXNwbGF5OmlubGluZS1ibG9jaztoZWlnaHQ6MTAwJTt2ZXJ0aWNhbC1hbGlnbjptaWRkbGV9Lkt4dmxXY3tib3JkZXItcmFkaXVzOjE2cHg7Ym9yZGVyLXJhZGl1czoxNnB4O2Rpc3BsYXk6aW5saW5lLWJsb2NrO3otaW5kZXg6OTk5OTtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLXhoVUd3Yyk7dGV4dC1hbGlnbjpsZWZ0O3doaXRlLXNwYWNlOm5vcm1hbDtvdmVyZmxvdy15OmhpZGRlbjtib3gtc2hhZG93OjAgMnB4IDEwcHggMCByZ2JhKDAsMCwwLC4yKTtwb3NpdGlvbjpyZWxhdGl2ZTt2ZXJ0aWNhbC1hbGlnbjptaWRkbGU7aGVpZ2h0OjUyMHB4O3dpZHRoOjMxMXB4O21heC13aWR0aDo2ODBweDtwYWRkaW5nLWJvdHRvbToxMHB4fS5IT3E0SGV7ZGlzcGxheTpmbGV4O2ZsZXgtZGlyZWN0aW9uOmNvbHVtbjtqdXN0aWZ5LWNvbnRlbnQ6c3BhY2UtYmV0d2Vlbjtwb3NpdGlvbjpyZWxhdGl2ZTtoZWlnaHQ6MTAwJX0uSFRqdEhlLmZlRlpkYiAuZGJzRnJke3Zpc2liaWxpdHk6aGlkZGVufS5IVGp0SGUuZmVGWmRie2Rpc3BsYXk6ZmxleDtwb3NpdGlvbjphYnNvbHV0ZTtoZWlnaHQ6MTAwJTt3aWR0aDoxMDAlfS5kYnNGcmR7ZGlzcGxheTpmbGV4O2ZsZXgtZGlyZWN0aW9uOmNvbHVtbjtwb3NpdGlvbjpyZWxhdGl2ZTtoZWlnaHQ6MTAwJX0ud1gyWUhjIC5kYnNGcmR7cGFkZGluZy1ib3R0b206MnB4fS50SGxwOGR7aGVpZ2h0OjQ4cHg7ZGlzcGxheTppbmxpbmUtYmxvY2s7Y3Vyc29yOnBvaW50ZXI7Ym9yZGVyOjA7YmFja2dyb3VuZDp0cmFuc3BhcmVudDtwYWRkaW5nOjB9LnRIbHA4ZDpmb2N1c3tib3JkZXI6MDtvdXRsaW5lOjB9LlFTNWd1e2Rpc3BsYXk6aW5saW5lLWZsZXg7YWxpZ24taXRlbXM6Y2VudGVyO2p1c3RpZnktY29udGVudDpjZW50ZXI7Ym9yZGVyLXJhZGl1czo5OTlyZW07aGVpZ2h0OjMycHg7cGFkZGluZzowIDE2cHg7Zm9udC1zaXplOnZhcigtLWhibW5qZSk7Zm9udC13ZWlnaHQ6NTAwO2ZvbnQtZmFtaWx5Okdvb2dsZSBTYW5zLEFyaWFsLHNhbnMtc2VyaWY7bWFyZ2luLWxlZnQ6OHB4O3RleHQtYWxpZ246Y2VudGVyO2JveC1zaXppbmc6Ym9yZGVyLWJveDt3aGl0ZS1zcGFjZTpub3dyYXA7aGVpZ2h0OjQwcHg7cGFkZGluZzowIDIwcHg7bWFyZ2luLWxlZnQ6MTBweDtsaW5lLWhlaWdodDoyMHB4fS5lT2pQSWV7YWxpZ24taXRlbXM6Y2VudGVyO2NvbG9yOnZhcigtLXJySkpVYyk7YmFja2dyb3VuZDp2YXIoLS14aFVHd2MpO2Rpc3BsYXk6ZmxleDtmb250LXNpemU6dmFyKC0taGJtbmplKTtmb250LXdlaWdodDo1MDA7Zm9udC1mYW1pbHk6R29vZ2xlIFNhbnMsQXJpYWwsc2Fucy1zZXJpZjtoZWlnaHQ6MTAwJTtwYWRkaW5nOjAgOHB4fS51ZDFqbWZ7Ym9yZGVyOjFweCBzb2xpZCB2YXIoLS1tWFprcWMpO2NvbG9yOnZhcigtLXJySkpVYyk7YmFja2dyb3VuZDp2YXIoLS14aFVHd2MpfS50SGxwOGQ6Zm9jdXMgLnVkMWptZiwudEhscDhkOmFjdGl2ZSAudWQxam1me2JvcmRlcjoxcHggc29saWQgI2U4ZjBmZTtiYWNrZ3JvdW5kLWNvbG9yOiNlOGYwZmU7Ym94LXNoYWRvdzowIDJweCAxMHB4IDAgcmdiYSgwLDAsMCwuMil9LnVkMWptZjpob3ZlcntiYWNrZ3JvdW5kLWNvbG9yOiNlOGYwZmV9LnN5NHZNe2JhY2tncm91bmQtY29sb3I6dmFyKC0tTnNtMGNlKTtjb2xvcjp2YXIoLS1FcEZOVyk7cG9zaXRpb246cmVsYXRpdmU7Ym94LXNpemluZzpib3JkZXItYm94O3RyYW5zaXRpb246Ym94LXNoYWRvdyAyMDBtcyBjdWJpYy1iZXppZXIoMC40LDAsMC4yLDEpO3VzZXItc2VsZWN0Om5vbmU7Ym9yZGVyOjJweCBzb2xpZCB2YXIoLS14aFVHd2MpO3RleHQtZGVjb3JhdGlvbjpub25lO2p1c3RpZnktY29udGVudDpjZW50ZXI7aGVpZ2h0OjQ0cHh9LnFpaURqYiAuc3k0dk0uUVM1Z3V7aGVpZ2h0OjM2cHh9LnRIbHA4ZDpmb2N1cyAuc3k0dk0sLnRIbHA4ZDphY3RpdmUgLnN5NHZNe2JvcmRlcjoycHggc29saWQgdmFyKC0teGhVR3djKTtvdXRsaW5lOjJweCBzb2xpZCB2YXIoLS1Oc20wY2UpO2JveC1zaGFkb3c6MCAycHggMTBweCAwIHJnYmEoMCwwLDAsLjIpO2JhY2tncm91bmQtY29sb3I6IzAwMWQzNX0ubVpLMjR7cG9pbnRlci1ldmVudHM6bm9uZX0ubVpLMjQgLnN5NHZNLC5tWksyNDpmb2N1cyAuc3k0dk0sLm1aSzI0OmFjdGl2ZSAuc3k0dk17Ym9yZGVyOjJweCBzb2xpZCAjZjFmM2Y0O2JhY2tncm91bmQtY29sb3I6I2YxZjNmNDtjb2xvcjp2YXIoLS1JWG94VWUpO2JveC1zaGFkb3c6bm9uZX0uc3k0dk06aG92ZXJ7YmFja2dyb3VuZC1jb2xvcjojMDAxZDM1O2JvcmRlcjoycHggc29saWQgIzAwMWQzNTt0ZXh0LWRlY29yYXRpb246bm9uZX0uU1NTZTVle2JhY2tncm91bmQ6I2YxZjNmNDtoZWlnaHQ6NDBweDt3aWR0aDo5MCU7bWFyZ2luLWxlZnQ6MH0uSWN6WjRie3dpZHRoOmF1dG87ZGlzcGxheTpmbGV4O2ZsZXgtZGlyZWN0aW9uOnJvdztqdXN0aWZ5LWNvbnRlbnQ6c3BhY2UtYmV0d2VlbjtwYWRkaW5nOjEycHggMjBweDtib3gtc2l6aW5nOmJvcmRlci1ib3h9LmRBNnM5YyAuSWN6WjRie3BhZGRpbmc6MTJweCAxNnB4fS5xSUJuVWN7aGVpZ2h0OjMycHg7bWFyZ2luLXRvcDo4cHh9LmRBNnM5YyAucUlCblVje2hlaWdodDoyNHB4O21hcmdpbi10b3A6MTJweH0uSVhNSVZie2Rpc3BsYXk6ZmxleDtmbGV4LWRpcmVjdGlvbjpyb3c7ZmxleC13cmFwOndyYXB9Lm5lRFl3e3Bvc2l0aW9uOnJlbGF0aXZlO2N1cnNvcjpwb2ludGVyfS5WNU9DdGR7ZGlzcGxheTpmbGV4O2ZsZXgtZGlyZWN0aW9uOnJvd30uRllYU2Fke21hcmdpbi1sZWZ0OjlweDt0ZXh0LXRyYW5zZm9ybTp1cHBlcmNhc2U7bGluZS1oZWlnaHQ6MjBweH0udG4zTW1ke2Rpc3BsYXk6YmxvY2s7cG9zaXRpb246cmVsYXRpdmV9LmNHWThpZntkaXNwbGF5OmJsb2NrO2Rpc3BsYXk6bm9uZTtvdmVyZmxvdy15OnNjcm9sbDtoZWlnaHQ6MzUwcHg7d2lkdGg6MTkycHg7cG9zaXRpb246YWJzb2x1dGU7dG9wOjA7bGVmdDowO3otaW5kZXg6MTAwMDtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLXhoVUd3Yyk7Ym94LXNoYWRvdzowIDJweCAxMHB4IDAgcmdiYSgwLDAsMCwuMik7Ym94LXNpemluZzpib3JkZXItYm94fS55SzU2YntsaXN0LXN0eWxlOm5vbmU7cGFkZGluZzowO21hcmdpbjowO2Rpc3BsYXk6ZmxleDtmbGV4LWRpcmVjdGlvbjpjb2x1bW59Lkh2NVVFYntjb2xvcjp2YXIoLS1yckpKVWMpO3dpZHRoOjIwcHg7aGVpZ2h0OjIwcHg7cG9pbnRlci1ldmVudHM6bm9uZX0uYjBwcnh7bWFyZ2luLXJpZ2h0OjIwcHg7d2lkdGg6MjRweDtoZWlnaHQ6MjRweDtkaXNwbGF5OmlubGluZS1ibG9ja31wYXRoLnlSUklIZntmaWxsOnZhcigtLWJiUXhBYil9LkFJNndBY3tib3JkZXItYm90dG9tOjFweCBzb2xpZCB2YXIoLS1nUzVqWGIpO3BhZGRpbmc6MTVweCAxMHB4O2JveC1zaXppbmc6Ym9yZGVyLWJveDtkaXNwbGF5OmZsZXg7ZmxleC1kaXJlY3Rpb246cm93fS5lWmI1NHtmb250LWZhbWlseTpBcmlhbCxzYW5zLXNlcmlmO2NvbG9yOnZhcigtLVlMTk5IYyk7Zm9udC1zaXplOnZhcigtLU1oczdkZSk7Zm9udC13ZWlnaHQ6Ym9sZDtsaW5lLWhlaWdodDoyNHB4fS5HZTBBdWJ7Y29sb3I6dmFyKC0tWUxOTkhjKTtmb250LXNpemU6dmFyKC0tTWhzN2RlKTtjdXJzb3I6cG9pbnRlcjt0ZXh0LWRlY29yYXRpb246bm9uZTtsaXN0LXN0eWxlOm5vbmU7ZGlzcGxheTpmbGV4O3BhZGRpbmc6MTVweCA0MHB4IDE1cHggNTVweDtvdmVyZmxvdy14OmhpZGRlbn0uTHhoQURke2NvbG9yOnZhcigtLVlMTk5IYyk7Zm9udC1zaXplOnZhcigtLXozQkZJZSk7dGV4dC1kZWNvcmF0aW9uOm5vbmU7bGlzdC1zdHlsZTpub25lO2Rpc3BsYXk6ZmxleDtwYWRkaW5nOjE1cHggMzBweCAxNXB4IDMwcHg7b3ZlcmZsb3cteDpoaWRkZW47Zm9udC13ZWlnaHQ6NzAwfS5HZTBBdWI6aG92ZXJ7YmFja2dyb3VuZC1jb2xvcjojZjFmM2Y0fS5HZTBBdWI6Zm9jdXMsLkFJNndBYzpmb2N1c3tib3JkZXI6MnB4IHNvbGlkIHZhcigtLU5zbTBjZSl9LldyTk91Y3tib3JkZXI6MDtkaXNwbGF5Om5vbmU7ZmxleC1kaXJlY3Rpb246cm93O2p1c3RpZnktY29udGVudDpjZW50ZXI7cG9zaXRpb246YWJzb2x1dGU7dHJhbnNpdGlvbjpoZWlnaHQgMG1zIDE1MG1zLG9wYWNpdHkgMTUwbXMgbGluZWFyO2JvdHRvbTowO3dpZHRoOjEwMCU7aGVpZ2h0OjEwMHB4O2JhY2tncm91bmQ6LW1vei1saW5lYXItZ3JhZGllbnQodG9wLHRyYW5zcGFyZW50IDAlLHZhcigtLXhoVUd3YykgMzMlKTtiYWNrZ3JvdW5kOi13ZWJraXQtbGluZWFyLWdyYWRpZW50KHRvcCx0cmFuc3BhcmVudCAwJSx2YXIoLS14aFVHd2MpIDMzJSk7YmFja2dyb3VuZDpsaW5lYXItZ3JhZGllbnQodG8gYm90dG9tLHRyYW5zcGFyZW50IDAlLHZhcigtLXhoVUd3YykgMzMlKX0uV3JOT3VjOmFjdGl2ZSwuV3JOT3VjOmZvY3Vze291dGxpbmU6MH0uU1NTZTVle2Rpc3BsYXk6ZmxleDtqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyO3Bvc2l0aW9uOmFic29sdXRlO2JvdHRvbToyMHB4O2NvbG9yOnZhcigtLVlMTk5IYyl9LlZvdm1JZHtoZWlnaHQ6MTZweDt3aWR0aDoxNnB4O21hcmdpbi1sZWZ0OjEwcHh9Lkk5MFRWYntmb250LXdlaWdodDo1MDA7Zm9udC1zaXplOnZhcigtLUdpVG9KZik7bGluZS1oZWlnaHQ6MjRweDttYXJnaW46MDtjb2xvcjp2YXIoLS1ZTE5OSGMpO2ZvbnQtZmFtaWx5Okdvb2dsZSBTYW5zLEFyaWFsLHNhbnMtc2VyaWZ9LkFHOTZsYntmb250LXN0eWxlOm5vcm1hbDtmb250LXdlaWdodDpub3JtYWw7Zm9udC1zaXplOnZhcigtLU1oczdkZSk7bGluZS1oZWlnaHQ6MjBweDtsZXR0ZXItc3BhY2luZzowLjJweDt3aGl0ZS1zcGFjZTpub3JtYWw7dGV4dC1hbGlnbjpsZWZ0fS53WDJZSGMgLkFHOTZsYnttYXJnaW4tYm90dG9tOjIwcHh9LlZEaXR5e2Rpc3BsYXk6ZmxleDtmbGV4LWRpcmVjdGlvbjpyb3c7anVzdGlmeS1jb250ZW50OmZsZXgtZW5kO3Bvc2l0aW9uOnJlbGF0aXZlO21pbi1oZWlnaHQ6NDhweDtoZWlnaHQ6YXV0bztmbGV4LXdyYXA6d3JhcDttYXJnaW4tYm90dG9tOjRweH0uc3BvS1Zke2Rpc3BsYXk6ZmxleDtmbGV4LWRpcmVjdGlvbjpjb2x1bW59LnNwb0tWZCAuUVM1Z3V7bWFyZ2luOjAgNnB4O3BhZGRpbmc6MCA2NXB4O2hlaWdodDo0MHB4fS5HekxqTWR7ZGlzcGxheTpmbGV4O2p1c3RpZnktY29udGVudDpjZW50ZXJ9LnFpaURqYntmbGV4LWRpcmVjdGlvbjpjb2x1bW59LnFpaURqYiBidXR0b257cGFkZGluZzo2cHggMDtoZWlnaHQ6YXV0bzttaW4taGVpZ2h0OjQ4cHg7d2lkdGg6MTAwJX0ucWlpRGpiIC5RUzVndXtoZWlnaHQ6YXV0bzttYXJnaW4tbGVmdDowO21pbi1oZWlnaHQ6MzJweDtwYWRkaW5nOjNweCA1cHg7d2lkdGg6MTAwJTt3aGl0ZS1zcGFjZTpub3JtYWx9LkY0YTFse2NvbG9yOnZhcigtLUpLcXgyKTt0ZXh0LWRlY29yYXRpb246bm9uZX0uZUxaWXlme2NvbG9yOnZhcigtLVlMTk5IYyk7Zm9udC1mYW1pbHk6R29vZ2xlIFNhbnMsQXJpYWwsc2Fucy1zZXJpZjttYXJnaW4tYm90dG9tOjE2cHg7bWFyZ2luLXRvcDoyMHB4Oy13ZWJraXQtdGV4dC1zaXplLWFkanVzdDoxMDAlfS5qTGh3ZGN7Y29sb3I6dmFyKC0tWUxOTkhjKTtmb250LWZhbWlseTpBcmlhbCxzYW5zLXNlcmlmfS55UzFubGR7Y29sb3I6dmFyKC0tSVhveFVlKTtmb250LWZhbWlseTpBcmlhbCxzYW5zLXNlcmlmO21hcmdpbi10b3A6MWVtO21hcmdpbi1ib3R0b206MH0ud1gyWUhjIC5lTFpZeWZ7bWFyZ2luLWJvdHRvbToyNHB4fS53WDJZSGMgLnlTMW5sZHtjb2xvcjp2YXIoLS1iYlF4QWIpfS5JS2w3UXtvdmVyZmxvdy15OmF1dG87aGVpZ2h0OmF1dG87c2Nyb2xsLWJlaGF2aW9yOnNtb290aDtwb3NpdGlvbjpyZWxhdGl2ZX0uU2hjRzF7ZGlzcGxheTpmbGV4O2ZsZXgtZGlyZWN0aW9uOmNvbHVtbjtqdXN0aWZ5LWNvbnRlbnQ6c3BhY2UtYmV0d2VlbjtwYWRkaW5nOjAgMjBweDtoZWlnaHQ6YXV0b30ud1gyWUhjIC5TaGNHMXtwYWRkaW5nOjAgMTZweH0uZGJYTzl7bWFyZ2luOjA7cGFkZGluZzowO2NvbG9yOnZhcigtLUlYb3hVZSk7Zm9udC1mYW1pbHk6QXJpYWwsc2Fucy1zZXJpZn0ud1gyWUhjIC5kYlhPOXtjb2xvcjp2YXIoLS1iYlF4QWIpfS5nb3dzWWR7YmFja2dyb3VuZC1yZXBlYXQ6bm8tcmVwZWF0O2JhY2tncm91bmQtcG9zaXRpb24teDpsZWZ0O2JhY2tncm91bmQtcG9zaXRpb24teTpjZW50ZXI7YmFja2dyb3VuZC1zaXplOjE2cHg7bGlzdC1zdHlsZTpub25lO3BhZGRpbmctbGVmdDozNHB4O21hcmdpbjoxMnB4IDA7Zm9udC1zaXplOnZhcigtLWhibW5qZSk7LXdlYmtpdC10ZXh0LXNpemUtYWRqdXN0OjEwMCV9aHRtbFtkaXI9J3J0bCddPi5nb3dzWWR7YmFja2dyb3VuZC1wb3NpdGlvbi14OnJpZ2h0fS5nb3dzWWQuaWJDRjBje2JhY2tncm91bmQtaW1hZ2U6dXJsKCJkYXRhOmltYWdlL3N2Zyt4bWwsXDAwMDAzY3N2ZyB3aWR0aD0nMTYnIGhlaWdodD0nMTYnIHhtbG5zPSdodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Zyc+XDAwMDAzY3BhdGggIGZpbGw9JyUyMzNjNDA0MycgZD0nTTEzLjk4IDQuODQ2NjhjLjI2LS4yNi4yNi0uNjggMC0uOTRsLTEuODg2Ny0xLjg4NjY3Yy0uMjYtLjI2LS42OC0uMjYtLjk0IDBMOC4xNiA1LjAxMzM1IDUuNTY2NjcgMi40MjAwMWMtLjUyLS41Mi0xLjM2NjY3LS41Mi0xLjg4NjY3IDBMMi40MTMzMyAzLjY4NjY4Yy0uNTIuNTItLjUyIDEuMzY2NjcgMCAxLjg4NjY3bDIuNTkzMzQgMi41OTMzM0wyIDExLjE3MzNWMTRoMi44MjY2N0w3Ljg0IDEwLjk4NjdsMi41OTMzIDIuNTkzM2MuNjMzNC42MzMzIDEuNDg2Ny40IDEuODg2NyAwbDEuMjY2Ny0xLjI2NjdjLjUyLS41Mi41Mi0xLjM2NjYgMC0xLjg4NjZsLTIuNTkzNC0yLjU5MzM1TDEzLjk4IDQuODQ2Njh6bS0xMC42Mi0uMjJsMS4yNi0xLjI2NjY3Ljg0NjY3Ljg0NjY3LS43ODY2Ny43OTMzMy45NC45NC43OTMzMy0uNzkzMzMuOC44LTEuMjY2NjYgMS4yNjY2N0wzLjM2IDQuNjI2Njh6bTcuNDg2NyA0Ljk2bC0uNzkzNC43OTMzMi45NC45NC43OTM0LS43OTMzLjg0NjYuODQ2Ni0xLjI2NjYgMS4yNjY3LTIuNTkzMzctMi41OTMzTDEwLjA0IDguNzgwMDFsLjgwNjcuODA2Njd6TTQuMjczMzMgMTIuNjY2N2gtLjk0di0uOTRMOS43NCA1LjMyMDAxbC44NjY3Ljg2NjY3LjA3MzMuMDczMzMtNi40MDY2NyA2LjQwNjY5ek0xMC42OCA0LjM3MzM1bC45NC0uOTQuOTQuOTQtLjk0Ljk0LS45NC0uOTR6Jy8+XDAwMDAzYy9zdmc+Iil9Lmdvd3NZZC5Hd3doR2Z7YmFja2dyb3VuZC1pbWFnZTp1cmwoImRhdGE6aW1hZ2Uvc3ZnK3htbCxcMDAwMDNjc3ZnIHdpZHRoPScxNicgaGVpZ2h0PScxNicgdmlld0JveD0nMCAwIDI0IDI0JyB4bWxucz0naHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnICBmaWxsPSclMjMzYzQwNDMnPlwwMDAwM2NwYXRoIGQ9J00wIDBoMjR2MjRIMFYweicgZmlsbD0nbm9uZScvPlwwMDAwM2NwYXRoIGQ9J00xMiA1Ljk5TDE5LjUzIDE5SDQuNDdMMTIgNS45OU0xMiAyTDEgMjFoMjJMMTIgMnptMSAxNGgtMnYyaDJ2LTJ6bTAtNmgtMnY0aDJ2LTR6Jy8+XDAwMDAzYy9zdmc+Iil9Lmdvd3NZZC5NNmo5cWZ7YmFja2dyb3VuZC1pbWFnZTp1cmwoImRhdGE6aW1hZ2Uvc3ZnK3htbCxcMDAwMDNjc3ZnIHdpZHRoPScxNicgaGVpZ2h0PScxNicgdmlld0JveD0nMCAwIDI0IDI0JyB4bWxucz0naHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnPlwwMDAwM2NnIGZpbGw9JyUyMzNjNDA0MycgZmlsbC1ydWxlPSdldmVub2RkJyBjbGlwLXJ1bGU9J2V2ZW5vZGQnPlwwMDAwM2NnPlwwMDAwM2NwYXRoIGQ9J00yMSw4Yy0xLjQ1LDAtMi4yNiwxLjQ0LTEuOTMsMi41MWwtMy41NSwzLjU2Yy0wLjMtMC4wOS0wLjc0LTAuMDktMS4wNCwwbC0yLjU1LTIuNTVDMTIuMjcsMTAuNDUsMTEuNDYsOSwxMCw5IGMtMS40NSwwLTIuMjcsMS40NC0xLjkzLDIuNTJsLTQuNTYsNC41NUMyLjQ0LDE1Ljc0LDEsMTYuNTUsMSwxOGMwLDEuMSwwLjksMiwyLDJjMS40NSwwLDIuMjYtMS40NCwxLjkzLTIuNTFsNC41NS00LjU2IGMwLjMsMC4wOSwwLjc0LDAuMDksMS4wNCwwbDIuNTUsMi41NUMxMi43MywxNi41NSwxMy41NCwxOCwxNSwxOGMxLjQ1LDAsMi4yNy0xLjQ0LDEuOTMtMi41MmwzLjU2LTMuNTUgQzIxLjU2LDEyLjI2LDIzLDExLjQ1LDIzLDEwQzIzLDguOSwyMi4xLDgsMjEsOHonLz5cMDAwMDNjcG9seWdvbiBwb2ludHM9JzE1LDkgMTUuOTQsNi45MyAxOCw2IDE1Ljk0LDUuMDcgMTUsMyAxNC4wOCw1LjA3IDEyLDYgMTQuMDgsNi45MycvPlwwMDAwM2Nwb2x5Z29uIHBvaW50cz0nMy41LDExIDQsOSA2LDguNSA0LDggMy41LDYgMyw4IDEsOC41IDMsOScvPlwwMDAwM2MvZz5cMDAwMDNjL2c+XDAwMDAzYy9zdmc+Iil9Lmdvd3NZZC52OEJwZmJ7YmFja2dyb3VuZC1pbWFnZTp1cmwoImRhdGE6aW1hZ2Uvc3ZnK3htbCxcMDAwMDNjc3ZnIHdpZHRoPScxNicgaGVpZ2h0PScxNicgdmlld0JveD0nMCAwIDI0IDI0JyB4bWxucz0naHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnPlwwMDAwM2NwYXRoIGZpbGw9JyUyMzNjNDA0MycgZmlsbC1ydWxlPSdldmVub2RkJyBjbGlwLXJ1bGU9J2V2ZW5vZGQnIGQ9J001IDloM3YxMEg1em01LjUtNGgzdjE0aC0zem01LjUgOGgzdjZoLTN6Jy8+XDAwMDAzYy9zdmc+Iil9Lmdvd3NZZC5lMjFNYWN7YmFja2dyb3VuZC1pbWFnZTp1cmwoImRhdGE6aW1hZ2Uvc3ZnK3htbCxcMDAwMDNjc3ZnIHdpZHRoPScxNicgaGVpZ2h0PScxNicgeG1sbnM9J2h0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnJz5cMDAwMDNjcGF0aCAgZmlsbD0nJTIzM2M0MDQzJyBkPSdNOC4zMzM5OCA1LjY2NjY3TDYuNjY3MzIgMiA1LjAwMDY1IDUuNjY2NjcgMS4zMzM5OCA3LjMzMzMzIDUuMDAwNjUgOWwxLjY2NjY3IDMuNjY2N0w4LjMzMzk4IDlsMy42NjY3Mi0xLjY2NjY3LTMuNjY2NzItMS42NjY2NnptMy42NjY3MiAzTDExLjE2NzMgMTAuNWwtMS44MzMzMi44MzMzIDEuODMzMzIuODMzNEwxMi4wMDA3IDE0bC44MzMzLTEuODMzMyAxLjgzMzMtLjgzMzRMMTIuODM0IDEwLjVsLS44MzMzLTEuODMzMzN6Jy8+XDAwMDAzYy9zdmc+Iil9Lmdvd3NZZC5vaEVXUGN7YmFja2dyb3VuZC1pbWFnZTp1cmwoImRhdGE6aW1hZ2Uvc3ZnK3htbCxcMDAwMDNjc3ZnIHdpZHRoPScxNicgaGVpZ2h0PScxNicgdmlld0JveD0nMCAwIDE2IDE2JyBmaWxsPSclMjMzYzQwNDMnIHhtbG5zPSdodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Zyc+XDAwMDAzY3BhdGggZmlsbC1ydWxlPSdldmVub2RkJyBjbGlwLXJ1bGU9J2V2ZW5vZGQnIGQ9J00xMC4xNDgxIDcuNDA3NDNINi41OTI1NVY4LjU5MjYxSDEwLjE0ODFWNy40MDc0M1pNOS44MDkxNCAxMC45NjNIMy4wMzdWOS43Nzc4SDkuNDU3ODNDOS41NjczNCAxMC4xNjEgOS42ODU4NCAxMC41NTgzIDkuODA5MTQgMTAuOTYzWk0xMC4xNzUyIDEyLjE0ODJIMi40NDQ0QzIuMTI0NCAxMi4xNDgyIDEuODUxODEgMTEuOTM0OCAxLjg1MTgxIDExLjY4NTlWNC4zMTQwOUMxLjg1MTgxIDQuMDY1MjEgMi4xMjQ0IDMuODUxODcgMi40NDQ0IDMuODUxODdIMTAuNzM0OEMxMS4wNTQ4IDMuODUxODcgMTEuMzI3NCA0LjA2NTIxIDExLjMyNzQgNC4zMTQwOVY4LjAwMDAySDExLjMzMzNWOS45MzYxM0MxMS41MTE2IDkuOTkxMDQgMTEuNjkxIDEwLjA0NjQgMTEuODcwOSAxMC4xMDE5QzEyLjA4NjQgMTAuMTY4NCAxMi4zMDI1IDEwLjIzNTEgMTIuNTE4NSAxMC4zMDE1VjQuMzE0MDlDMTIuNTE4NSAzLjQwNzQzIDExLjcxMjYgMi42NjY2OSAxMC43NDA3IDIuNjY2NjlIMi40NDQ0QzEuNDcyNTUgMi42NjY2OSAwLjY2NjYyNiAzLjQxMzM1IDAuNjY2NjI2IDQuMzE0MDlWMTEuNjg1OUMwLjY2NjYyNiAxMi41OTI2IDEuNDcyNTUgMTMuMzMzNCAyLjQ0NDQgMTMuMzMzNEgxMC41NDM1QzEwLjQ0NDUgMTMuMDEyMiAxMC4zNDM0IDEyLjY4OCAxMC4yNDI0IDEyLjM2MzdDMTAuMjIgMTIuMjkxOCAxMC4xOTc2IDEyLjIyIDEwLjE3NTIgMTIuMTQ4MlpNNS40MDczNyA4LjU5MjYxSDMuMDM3VjUuMDM3MDZINS40MDczN1Y4LjU5MjYxWk0xMC4xNDgxIDYuMjIyMjRINi41OTI1NVY1LjAzNzA2SDEwLjE0ODFWNi4yMjIyNFonLz5cMDAwMDNjcGF0aCBkPSdNMTAgMTBDMTAuMzYwNiAxMS4zMTUyIDEwLjkxMjEgMTIuOTI3MyAxMS4yNzI3IDE0LjI0MjRMMTEuNzk4OCAxMi42NTE1TDEzLjgxODIgMTQuNjY2N0wxNC42NjY3IDEzLjgxODJMMTIuNjcyNyAxMS44MjQyTDE0LjI0MjQgMTEuMjcyN0MxMi45MjczIDEwLjkxMjEgMTEuMzE1MiAxMC4zODE4IDEwIDEwWicvPlwwMDAwM2Mvc3ZnPiIpfS5YV2xyZmZ7ZGlzcGxheTpmbGV4O2ZsZXgtZGlyZWN0aW9uOnJvdztqdXN0aWZ5LWNvbnRlbnQ6ZmxleC1zdGFydDtwYWRkaW5nLXJpZ2h0OjEwcHg7bWFyZ2luOjA7cG9zaXRpb246cmVsYXRpdmU7aGVpZ2h0OjQ4cHh9LmNHMERtZntqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyO3BhZGRpbmctcmlnaHQ6MH0ucGVSTDJlLC5vOUQ1WmJ7Zm9udC1mYW1pbHk6QXJpYWwsc2Fucy1zZXJpZjtjb2xvcjp2YXIoLS1JWG94VWUpO3RleHQtZGVjb3JhdGlvbjpub25lO2ZvbnQtc2l6ZToxMnB4O2hlaWdodDo0OHB4O2Rpc3BsYXk6ZmxleDtmbGV4LWRpcmVjdGlvbjpjb2x1bW47anVzdGlmeS1jb250ZW50OmNlbnRlcn0ucGVSTDJle3BhZGRpbmctbGVmdDo4cHg7bWFyZ2luLWxlZnQ6LThweDtwYWRkaW5nLXJpZ2h0OjhweDttYXJnaW4tcmlnaHQ6LThweH0ubzlENVpie21hcmdpbjowIDEwcHh9Lkt4dmxXY3t3aWR0aDo4MDBweDtoZWlnaHQ6YXV0bzttYXgtd2lkdGg6bm9uZX0uR1o3eE5le3BhZGRpbmc6MCAzMnB4fS5JS2w3UXt3aWR0aDphdXRvO2hlaWdodDphdXRvO3BhZGRpbmc6MCA0MHB4O3Bvc2l0aW9uOnJlbGF0aXZlfS5JOTBUVmJ7dGV4dC1hbGlnbjpjZW50ZXI7dGV4dC10cmFuc2Zvcm06bm9uZTtjb2xvcjp2YXIoLS1ZTE5OSGMpO2ZvbnQtZmFtaWx5Okdvb2dsZSBTYW5zLEFyaWFsLHNhbnMtc2VyaWY7Zm9udC1zaXplOnZhcigtLUlhNzBYZCk7bGluZS1oZWlnaHQ6dmFyKC0taFBETUZmKTtmb250LXdlaWdodDo0MDA7bGV0dGVyLXNwYWNpbmc6MDttYXJnaW46MCBhdXRvO3BhZGRpbmc6MCAzMnB4fS5nb3dzWWR7bWFyZ2luOjEycHggMDtwYWRkaW5nLWxlZnQ6MzRweH0uVkRpdHl7bWFyZ2luLWJvdHRvbToyNHB4O3BhZGRpbmc6NXB4IDMycHggMH0uSWN6WjRie3BhZGRpbmc6MjRweCAzMnB4IDE4cHh9LnFJQm5VY3toZWlnaHQ6NDBweDt3aWR0aDo0MHB4O21hcmdpbi10b3A6NHB4fS5jR1k4aWZ7aGVpZ2h0OjQ1MHB4fS5JWE1JVmJ7cmlnaHQ6MzJweH0uWFdscmZme3Bvc2l0aW9uOnJlbGF0aXZlfS5wZVJMMmU6Zm9jdXMsLkY0YTFsOmZvY3VzLC5lT2pQSWU6Zm9jdXN7Ym9yZGVyOjFweCBzb2xpZCAjMDAxZDM1fUBtZWRpYSAobWF4LXdpZHRoOjg5MHB4KXsuS3h2bFdje3dpZHRoOjkwJX19QG1lZGlhIChtYXgtd2lkdGg6MzIwcHgpey5LeHZsV2N7d2lkdGg6MjYwcHg7aGVpZ2h0OjQ3MXB4fS5uZURZdyAuUVM1Z3V7cGFkZGluZzowIDVweH0uRllYU2Fke2Rpc3BsYXk6bm9uZX0udG4zTW1ke3Bvc2l0aW9uOnN0YXRpY30uY0dZOGlme3RvcDoxMnB4O3JpZ2h0OjFweDtsZWZ0OnVuc2V0fX1AbWVkaWEgKG1heC13aWR0aDoyODBweCl7LlFTNWd1e3BhZGRpbmc6MCA1cHh9fS55eUowOGMgLkt4dmxXY3toZWlnaHQ6Y2FsYygxMDAlIC0gNjRweCk7d2lkdGg6Y2FsYygxMDB2dyAtIDQ4cHgpfS55eUowOGMgLlZEaXR5e21hcmdpbi1ib3R0b206MH08L3N0eWxlPjxkaXYgY2xhc3M9IkhUanRIZSIgaWQ9InhlN0NPZSIgYXJpYS1sYWJlbD0iTGVzIGRldHRlIGbDuHIgZHUgZ8OlciB2aWRlcmUgdGlsIEdvb2dsZSBTw7hrIiBhcmlhLW1vZGFsPSJ0cnVlIiByb2xlPSJkaWFsb2ciIHRhYmluZGV4PSIwIiBkYXRhLXZlZD0iMGFoVUtFd2owZ1pLYWxfT1ZBeFZvRXhBSUhTTlNDLUlRaEpBSENEcyI+PGRpdiBjbGFzcz0idlVkNGpiIiBpZD0iS2pjSFBjIiBkYXRhLXZlZD0iMGFoVUtFd2owZ1pLYWxfT1ZBeFZvRXhBSUhTTlNDLUlRaFpBSENEdyI+PC9kaXY+PGRpdiBpZD0ickdEU25iIiBkYXRhLXZlZD0iMGFoVUtFd2owZ1pLYWxfT1ZBeFZvRXhBSUhTTlNDLUlRa1pBSENEMCI+PC9kaXY+PGRpdiBjbGFzcz0ianc4bUkiPjxkaXYgY2xhc3M9IkhidTR5IiBpZD0ic05DUWIiIGFyaWEtbGl2ZT0icG9saXRlIj48L2Rpdj48c3Bhbj48ZGl2IGNsYXNzPSJLeHZsV2MiIGlkPSJDWFFubWIiPjxkaXYgY2xhc3M9IkhPcTRIZSB3WDJZSGMiPjxkaXYgY2xhc3M9ImRic0ZyZCI+PGRpdj48ZGl2IGNsYXNzPSJJY3paNGIiIGlkPSJ1TW91c2MiPjxpbWcgY2xhc3M9InFJQm5VYyIgc3JjPSJodHRwczovL2ZvbnRzLmdzdGF0aWMuY29tL3MvaS9wcm9kdWN0bG9nb3MvZ29vZ2xlZy92Ni8yNHB4LnN2ZyIgYWx0PSJHb29nbGUiPjxkaXYgY2xhc3M9IklYTUlWYiI+PGRpdiBjbGFzcz0idG4zTW1kIj48YnV0dG9uIGNsYXNzPSJuZURZdyB0SGxwOGQiIGlkPSJ2YzNqb2YiIGFyaWEtbGFiZWw9IlNwcsOlazog4oCqbm9yc2vigKwiIGFyaWEtZGlzYWJsZWQ9ImZhbHNlIiBhcmlhLWV4cGFuZGVkPSJmYWxzZSIgYXJpYS1oYXNwb3B1cD0idHJ1ZSIgZGF0YS12ZWQ9IjBhaFVLRXdqMGdaS2FsX09WQXhWb0V4QUlIU05TQy1JUWk1QUhDRDQiPjxkaXYgY2xhc3M9IlFTNWd1IHVkMWptZiIgcm9sZT0ibm9uZSI+PGRpdiBjbGFzcz0iVjVPQ3RkIj48c3ZnIGNsYXNzPSJIdjVVRWIiIGFyaWEtaGlkZGVuPSJ0cnVlIiBoZWlnaHQ9IjMwIiB2aWV3Qm94PSIwIDAgMzAgMzAiIHdpZHRoPSIzMCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48cGF0aCBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0yLjUgMTVDMi41IDguMSA4LjA4NzUgMi41IDE0Ljk4NzUgMi41QzIxLjkgMi41IDI3LjUgOC4xIDI3LjUgMTVDMjcuNSAyMS45IDIxLjkgMjcuNSAxNC45ODc1IDI3LjVDOC4wODc1IDI3LjUgMi41IDIxLjkgMi41IDE1Wk0xOS45NjI1IDEwSDIzLjY1QzIyLjQ1IDcuOTM3NSAyMC41Mzc1IDYuMzM3NSAxOC4yMzc1IDUuNTVDMTguOTg3NSA2LjkzNzUgMTkuNTYyNSA4LjQzNzUgMTkuOTYyNSAxMFpNMTUgNS4wNUMxNi4wMzc1IDYuNTUgMTYuODUgOC4yMTI1IDE3LjM4NzUgMTBIMTIuNjEyNUMxMy4xNSA4LjIxMjUgMTMuOTYyNSA2LjU1IDE1IDUuMDVaTTUgMTVDNSAxNS44NjI1IDUuMTI1IDE2LjcgNS4zMjUgMTcuNUg5LjU1QzkuNDUgMTYuNjc1IDkuMzc1IDE1Ljg1IDkuMzc1IDE1QzkuMzc1IDE0LjE1IDkuNDUgMTMuMzI1IDkuNTUgMTIuNUg1LjMyNUM1LjEyNSAxMy4zIDUgMTQuMTM3NSA1IDE1Wk02LjM1IDIwSDEwLjAzNzVDMTAuNDM3NSAyMS41NjI1IDExLjAxMjUgMjMuMDYyNSAxMS43NjI1IDI0LjQ1QzkuNDYyNSAyMy42NjI1IDcuNTUgMjIuMDc1IDYuMzUgMjBaTTYuMzUgMTBIMTAuMDM3NUMxMC40Mzc1IDguNDM3NSAxMS4wMTI1IDYuOTM3NSAxMS43NjI1IDUuNTVDOS40NjI1IDYuMzM3NSA3LjU1IDcuOTI1IDYuMzUgMTBaTTE1IDI0Ljk1QzEzLjk2MjUgMjMuNDUgMTMuMTUgMjEuNzg3NSAxMi42MTI1IDIwSDE3LjM4NzVDMTYuODUgMjEuNzg3NSAxNi4wMzc1IDIzLjQ1IDE1IDI0Ljk1Wk0xMS44NzUgMTVDMTEuODc1IDE1Ljg1IDExLjk2MjUgMTYuNjc1IDEyLjA3NSAxNy41SDE3LjkyNUMxOC4wMzc1IDE2LjY3NSAxOC4xMjUgMTUuODUgMTguMTI1IDE1QzE4LjEyNSAxNC4xNSAxOC4wMzc1IDEzLjMxMjUgMTcuOTI1IDEyLjVIMTIuMDc1QzExLjk2MjUgMTMuMzEyNSAxMS44NzUgMTQuMTUgMTEuODc1IDE1Wk0xOC4yMzc1IDI0LjQ1QzE4Ljk4NzUgMjMuMDYyNSAxOS41NjI1IDIxLjU2MjUgMTkuOTYyNSAyMEgyMy42NUMyMi40NSAyMi4wNjI1IDIwLjUzNzUgMjMuNjYyNSAxOC4yMzc1IDI0LjQ1Wk0yMC42MjUgMTVDMjAuNjI1IDE1Ljg1IDIwLjU1IDE2LjY3NSAyMC40NSAxNy41SDI0LjY3NUMyNC44NzUgMTYuNyAyNSAxNS44NjI1IDI1IDE1QzI1IDE0LjEzNzUgMjQuODc1IDEzLjMgMjQuNjc1IDEyLjVIMjAuNDVDMjAuNTUgMTMuMzI1IDIwLjYyNSAxNC4xNSAyMC42MjUgMTVaIiBmaWxsPSJjdXJyZW50Q29sb3IiIGZpbGwtcnVsZT0iZXZlbm9kZCI+PC9wYXRoPjwvc3ZnPjxkaXYgY2xhc3M9IkZZWFNhZCI+bm88L2Rpdj48L2Rpdj48L2Rpdj48L2J1dHRvbj48ZGl2IGNsYXNzPSJjR1k4aWYiIGlkPSJ0YlR1YmQiIHJvbGU9Im1lbnUiIGRhdGEtdmVkPSIwYWhVS0V3ajBnWkthbF9PVkF4Vm9FeEFJSFNOU0MtSVFqSkFIQ0Q4Ij48ZGl2IGNsYXNzPSJ5SzU2YiIgcm9sZT0ibm9uZSI+PGxpIGNsYXNzPSJBSTZ3QWMgZVpiNTQiIGFyaWEtbGFiZWw9IuKAqm5vcnNr4oCsIiBhcmlhLWRpc2FibGVkPSJ0cnVlIiByb2xlPSJtZW51aXRlbSIgdGFiaW5kZXg9IjAiPjxkaXYgY2xhc3M9ImIwcHJ4IiBhcmlhLWhpZGRlbj0idHJ1ZSI+PHN2ZyBhcmlhLWhpZGRlbj0idHJ1ZSIgaGVpZ2h0PSIyNCIgdmlld2JveD0iMCAwIDI0IDI0IiB3aWR0aD0iMjQiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggY2xhc3M9InlSUklIZiIgZD0iTTkgMTYuMTcwMUw0LjgzIDEyLjAwMDFMMy40MSAxMy40MTAxTDkgMTkuMDAwMUwyMSA3LjAwMDA5TDE5LjU5IDUuNTkwMDlMOSAxNi4xNzAxWiI+PC9wYXRoPjwvc3ZnPjwvZGl2PuKAqm5vcnNr4oCsPC9saT48ZGl2PjxsaSBjbGFzcz0iR2UwQXViIiBhcmlhLWxhYmVsPSLigKpEZXV0c2No4oCsIiBkYXRhLWhsPSJkZSIgcm9sZT0ibWVudWl0ZW0iIHRhYmluZGV4PSIwIiBkYXRhLXZlZD0iMGFoVUtFd2owZ1pLYWxfT1ZBeFZvRXhBSUhTTlNDLUlRanNvS0NFQSI+4oCqRGV1dHNjaOKArDwvbGk+PGxpIGNsYXNzPSJHZTBBdWIiIGFyaWEtbGFiZWw9IuKAqkVuZ2xpc2ggKFVuaXRlZCBLaW5nZG9tKeKArCIgZGF0YS1obD0iZW4tR0IiIHJvbGU9Im1lbnVpdGVtIiB0YWJpbmRleD0iMCIgZGF0YS12ZWQ9IjBhaFVLRXdqMGdaS2FsX09WQXhWb0V4QUlIU05TQy1JUWpzb0tDRUUiPuKAqkVuZ2xpc2ggKFVuaXRlZCBLaW5nZG9tKeKArDwvbGk+PGxpIGNsYXNzPSJHZTBBdWIiIGFyaWEtbGFiZWw9IuKAqkVzcGHDsW9sIChFc3Bhw7FhKeKArCIgZGF0YS1obD0iZXMiIHJvbGU9Im1lbnVpdGVtIiB0YWJpbmRleD0iMCIgZGF0YS12ZWQ9IjBhaFVLRXdqMGdaS2FsX09WQXhWb0V4QUlIU05TQy1JUWpzb0tDRUkiPuKAqkVzcGHDsW9sIChFc3Bhw7FhKeKArDwvbGk+PGxpIGNsYXNzPSJHZTBBdWIiIGFyaWEtbGFiZWw9IuKAqkZyYW7Dp2FpcyAoRnJhbmNlKeKArCIgZGF0YS1obD0iZnIiIHJvbGU9Im1lbnVpdGVtIiB0YWJpbmRleD0iMCIgZGF0YS12ZWQ9IjBhaFVLRXdqMGdaS2FsX09WQXhWb0V4QUlIU05TQy1JUWpzb0tDRU0iPuKAqkZyYW7Dp2FpcyAoRnJhbmNlKeKArDwvbGk+PGxpIGNsYXNzPSJHZTBBdWIiIGFyaWEtbGFiZWw9IuKAqkl0YWxpYW5v4oCsIiBkYXRhLWhsPSJpdCIgcm9sZT0ibWVudWl0ZW0iIHRhYmluZGV4PSIwIiBkYXRhLXZlZD0iMGFoVUtFd2owZ1pLYWxfT1ZBeFZvRXhBSUhTTlNDLUlRanNvS0NFUSI+4oCqSXRhbGlhbm/igKw8L2xpPjxsaSBjbGFzcz0iTHhoQURkIiByb2xlPSJtZW51aXRlbSIgdGFiaW5kZXg9IjAiPkFsbGUgc3Byw6VrPC9saT48L2Rpdj48bGkgY2xhc3M9IkdlMEF1YiIgYXJpYS1sYWJlbD0i4oCqQWZyaWthYW5z4oCsIiBkYXRhLWhsPSJhZiIgcm9sZT0ibWVudWl0ZW0iIHRhYmluZGV4PSIwIiBkYXRhLXZlZD0iMGFoVUtFd2owZ1pLYWxfT1ZBeFZvRXhBSUhTTlNDLUlRajhvS0NFVSI+4oCqQWZyaWthYW5z4oCsPC9saT48bGkgY2xhc3M9IkdlMEF1YiIgYXJpYS1sYWJlbD0i4oCqYXrJmXJiYXljYW7igKwiIGRhdGEtaGw9ImF6IiByb2xlPSJtZW51aXRlbSIgdGFiaW5kZXg9IjAiIGRhdGEtdmVkPSIwYWhVS0V3ajBnWkthbF9PVkF4Vm9FeEFJSFNOU0MtSVFqOG9LQ0VZIj7igKphesmZcmJheWNhbuKArDwvbGk+PGxpIGNsYXNzPSJHZTBBdWIiIGFyaWEtbGFiZWw9IuKAqmJvc2Fuc2tp4oCsIiBkYXRhLWhsPSJicyIgcm9sZT0ibWVudWl0ZW0iIHRhYmluZGV4PSIwIiBkYXRhLXZlZD0iMGFoVUtFd2owZ1pLYWxfT1ZBeFZvRXhBSUhTTlNDLUlRajhvS0NFYyI+4oCqYm9zYW5za2nigKw8L2xpPjxsaSBjbGFzcz0iR2UwQXViIiBhcmlhLWxhYmVsPSLigKpjYXRhbMOg4oCsIiBkYXRhLWhsPSJjYSIgcm9sZT0ibWVudWl0ZW0iIHRhYmluZGV4PSIwIiBkYXRhLXZlZD0iMGFoVUtFd2owZ1pLYWxfT1ZBeFZvRXhBSUhTTlNDLUlRajhvS0NFZyI+4oCqY2F0YWzDoOKArDwvbGk+PGxpIGNsYXNzPSJHZTBBdWIiIGFyaWEtbGFiZWw9IuKAqsSMZcWhdGluYeKArCIgZGF0YS1obD0iY3MiIHJvbGU9Im1lbnVpdGVtIiB0YWJpbmRleD0iMCIgZGF0YS12ZWQ9IjBhaFVLRXdqMGdaS2FsX09WQXhWb0V4QUlIU05TQy1JUWo4b0tDRWsiPuKAqsSMZcWhdGluYeKArDwvbGk+PGxpIGNsYXNzPSJHZTBBdWIiIGFyaWEtbGFiZWw9IuKAqkN5bXJhZWfigKwiIGRhdGEtaGw9ImN5IiByb2xlPSJtZW51aXRlbSIgdGFiaW5kZXg9IjAiIGRhdGEtdmVkPSIwYWhVS0V3ajBnWkthbF9PVkF4Vm9FeEFJSFNOU0MtSVFqOG9LQ0VvIj7igKpDeW1yYWVn4oCsPC9saT48bGkgY2xhc3M9IkdlMEF1YiIgYXJpYS1sYWJlbD0i4oCqRGFuc2vigKwiIGRhdGEtaGw9ImRhIiByb2xlPSJtZW51aXRlbSIgdGFiaW5kZXg9IjAiIGRhdGEtdmVkPSIwYWhVS0V3ajBnWkthbF9PVkF4Vm9FeEFJSFNOU0MtSVFqOG9LQ0VzIj7igKpEYW5za+KArDwvbGk+PGxpIGNsYXNzPSJHZTBBdWIiIGFyaWEtbGFiZWw9IuKAqkRldXRzY2jigKwiIGRhdGEtaGw9ImRlIiByb2xlPSJtZW51aXRlbSIgdGFiaW5kZXg9IjAiIGRhdGEtdmVkPSIwYWhVS0V3ajBnWkthbF9PVkF4Vm9FeEFJSFNOU0MtSVFqOG9LQ0V3Ij7igKpEZXV0c2No4oCsPC9saT48bGkgY2xhc3M9IkdlMEF1YiIgYXJpYS1sYWJlbD0i4oCqZWVzdGnigKwiIGRhdGEtaGw9ImV0IiByb2xlPSJtZW51aXRlbSIgdGFiaW5kZXg9IjAiIGRhdGEtdmVkPSIwYWhVS0V3ajBnWkthbF9PVkF4Vm9FeEFJSFNOU0MtSVFqOG9LQ0UwIj7igKplZXN0aeKArDwvbGk+PGxpIGNsYXNzPSJHZTBBdWIiIGFyaWEtbGFiZWw9IuKAqkVuZ2xpc2ggKFVuaXRlZCBLaW5nZG9tKeKArCIgZGF0YS1obD0iZW4tR0IiIHJvbGU9Im1lbnVpdGVtIiB0YWJpbmRleD0iMCIgZGF0YS12ZWQ9IjBhaFVLRXdqMGdaS2FsX09WQXhWb0V4QUlIU05TQy1JUWo4b0tDRTQiPuKAqkVuZ2xpc2ggKFVuaXRlZCBLaW5nZG9tKeKArDwvbGk+PGxpIGNsYXNzPSJHZTBBdWIiIGFyaWEtbGFiZWw9IuKAqkVuZ2xpc2ggKFVuaXRlZCBTdGF0ZXMp4oCsIiBkYXRhLWhsPSJlbi1VUyIgcm9sZT0ibWVudWl0ZW0iIHRhYmluZGV4PSIwIiBkYXRhLXZlZD0iMGFoVUtFd2owZ1pLYWxfT1ZBeFZvRXhBSUhTTlNDLUlRajhvS0NFOCI+4oCqRW5nbGlzaCAoVW5pdGVkIFN0YXRlcynigKw8L2xpPjxsaSBjbGFzcz0iR2UwQXViIiBhcmlhLWxhYmVsPSLigKpFbmdsaXNo4oCsIiBkYXRhLWhsPSJlbiIgcm9sZT0ibWVudWl0ZW0iIHRhYmluZGV4PSIwIiBkYXRhLXZlZD0iMGFoVUtFd2owZ1pLYWxfT1ZBeFZvRXhBSUhTTlNDLUlRajhvS0NGQSI+4oCqRW5nbGlzaOKArDwvbGk+PGxpIGNsYXNzPSJHZTBBdWIiIGFyaWEtbGFiZWw9IuKAqkVzcGHDsW9sIChFc3Bhw7FhKeKArCIgZGF0YS1obD0iZXMiIHJvbGU9Im1lbnVpdGVtIiB0YWJpbmRleD0iMCIgZGF0YS12ZWQ9IjBhaFVLRXdqMGdaS2FsX09WQXhWb0V4QUlIU05TQy1JUWo4b0tDRkUiPuKAqkVzcGHDsW9sIChFc3Bhw7FhKeKArDwvbGk+PGxpIGNsYXNzPSJHZTBBdWIiIGFyaWEtbGFiZWw9IuKAqkVzcGHDsW9sIChMYXRpbm9hbcOpcmljYSnigKwiIGRhdGEtaGw9ImVzLTQxOSIgcm9sZT0ibWVudWl0ZW0iIHRhYmluZGV4PSIwIiBkYXRhLXZlZD0iMGFoVUtFd2owZ1pLYWxfT1ZBeFZvRXhBSUhTTlNDLUlRajhvS0NGSSI+4oCqRXNwYcOxb2wgKExhdGlub2Ftw6lyaWNhKeKArDwvbGk+PGxpIGNsYXNzPSJHZTBBdWIiIGFyaWEtbGFiZWw9IuKAqmV1c2thcmHigKwiIGRhdGEtaGw9ImV1IiByb2xlPSJtZW51aXRlbSIgdGFiaW5kZXg9IjAiIGRhdGEtdmVkPSIwYWhVS0V3ajBnWkthbF9PVkF4Vm9FeEFJSFNOU0MtSVFqOG9LQ0ZNIj7igKpldXNrYXJh4oCsPC9saT48bGkgY2xhc3M9IkdlMEF1YiIgYXJpYS1sYWJlbD0i4oCqRmlsaXBpbm/igKwiIGRhdGEtaGw9ImZpbCIgcm9sZT0ibWVudWl0ZW0iIHRhYmluZGV4PSIwIiBkYXRhLXZlZD0iMGFoVUtFd2owZ1pLYWxfT1ZBeFZvRXhBSUhTTlNDLUlRajhvS0NGUSI+4oCqRmlsaXBpbm/igKw8L2xpPjxsaSBjbGFzcz0iR2UwQXViIiBhcmlhLWxhYmVsPSLigKpGcmFuw6dhaXMgKENhbmFkYSnigKwiIGRhdGEtaGw9ImZyLUNBIiByb2xlPSJtZW51aXRlbSIgdGFiaW5kZXg9IjAiIGRhdGEtdmVkPSIwYWhVS0V3ajBnWkthbF9PVkF4Vm9FeEFJSFNOU0MtSVFqOG9LQ0ZVIj7igKpGcmFuw6dhaXMgKENhbmFkYSnigKw8L2xpPjxsaSBjbGFzcz0iR2UwQXViIiBhcmlhLWxhYmVsPSLigKpGcmFuw6dhaXMgKEZyYW5jZSnigKwiIGRhdGEtaGw9ImZyIiByb2xlPSJtZW51aXRlbSIgdGFiaW5kZXg9IjAiIGRhdGEtdmVkPSIwYWhVS0V3ajBnWkthbF9PVkF4Vm9FeEFJSFNOU0MtSVFqOG9LQ0ZZIj7igKpGcmFuw6dhaXMgKEZyYW5jZSnigKw8L2xpPjxsaSBjbGFzcz0iR2UwQXViIiBhcmlhLWxhYmVsPSLigKpHYWVpbGdl4oCsIiBkYXRhLWhsPSJnYSIgcm9sZT0ibWVudWl0ZW0iIHRhYmluZGV4PSIwIiBkYXRhLXZlZD0iMGFoVUtFd2owZ1pLYWxfT1ZBeFZvRXhBSUhTTlNDLUlRajhvS0NGYyI+4oCqR2FlaWxnZeKArDwvbGk+PGxpIGNsYXNzPSJHZTBBdWIiIGFyaWEtbGFiZWw9IuKAqmdhbGVnb+KArCIgZGF0YS1obD0iZ2wiIHJvbGU9Im1lbnVpdGVtIiB0YWJpbmRleD0iMCIgZGF0YS12ZWQ9IjBhaFVLRXdqMGdaS2FsX09WQXhWb0V4QUlIU05TQy1JUWo4b0tDRmciPuKAqmdhbGVnb+KArDwvbGk+PGxpIGNsYXNzPSJHZTBBdWIiIGFyaWEtbGFiZWw9IuKAqkhydmF0c2tp4oCsIiBkYXRhLWhsPSJociIgcm9sZT0ibWVudWl0ZW0iIHRhYmluZGV4PSIwIiBkYXRhLXZlZD0iMGFoVUtFd2owZ1pLYWxfT1ZBeFZvRXhBSUhTTlNDLUlRajhvS0NGayI+4oCqSHJ2YXRza2nigKw8L2xpPjxsaSBjbGFzcz0iR2UwQXViIiBhcmlhLWxhYmVsPSLigKpJbmRvbmVzaWHigKwiIGRhdGEtaGw9ImlkIiByb2xlPSJtZW51aXRlbSIgdGFiaW5kZXg9IjAiIGRhdGEtdmVkPSIwYWhVS0V3ajBnWkthbF9PVkF4Vm9FeEFJSFNOU0MtSVFqOG9LQ0ZvIj7igKpJbmRvbmVzaWHigKw8L2xpPjxsaSBjbGFzcz0iR2UwQXViIiBhcmlhLWxhYmVsPSLigKppc2ladWx14oCsIiBkYXRhLWhsPSJ6dSIgcm9sZT0ibWVudWl0ZW0iIHRhYmluZGV4PSIwIiBkYXRhLXZlZD0iMGFoVUtFd2owZ1pLYWxfT1ZBeFZvRXhBSUhTTlNDLUlRajhvS0NGcyI+4oCqaXNpWnVsdeKArDwvbGk+PGxpIGNsYXNzPSJHZTBBdWIiIGFyaWEtbGFiZWw9IuKAqsOtc2xlbnNrYeKArCIgZGF0YS1obD0iaXMiIHJvbGU9Im1lbnVpdGVtIiB0YWJpbmRleD0iMCIgZGF0YS12ZWQ9IjBhaFVLRXdqMGdaS2FsX09WQXhWb0V4QUlIU05TQy1JUWo4b0tDRnciPuKAqsOtc2xlbnNrYeKArDwvbGk+PGxpIGNsYXNzPSJHZTBBdWIiIGFyaWEtbGFiZWw9IuKAqkl0YWxpYW5v4oCsIiBkYXRhLWhsPSJpdCIgcm9sZT0ibWVudWl0ZW0iIHRhYmluZGV4PSIwIiBkYXRhLXZlZD0iMGFoVUtFd2owZ1pLYWxfT1ZBeFZvRXhBSUhTTlNDLUlRajhvS0NGMCI+4oCqSXRhbGlhbm/igKw8L2xpPjxsaSBjbGFzcz0iR2UwQXViIiBhcmlhLWxhYmVsPSLigKpLaXN3YWhpbGnigKwiIGRhdGEtaGw9InN3IiByb2xlPSJtZW51aXRlbSIgdGFiaW5kZXg9IjAiIGRhdGEtdmVkPSIwYWhVS0V3ajBnWkthbF9PVkF4Vm9FeEFJSFNOU0MtSVFqOG9LQ0Y0Ij7igKpLaXN3YWhpbGnigKw8L2xpPjxsaSBjbGFzcz0iR2UwQXViIiBhcmlhLWxhYmVsPSLigKpsYXR2aWXFoXXigKwiIGRhdGEtaGw9Imx2IiByb2xlPSJtZW51aXRlbSIgdGFiaW5kZXg9IjAiIGRhdGEtdmVkPSIwYWhVS0V3ajBnWkthbF9PVkF4Vm9FeEFJSFNOU0MtSVFqOG9LQ0Y4Ij7igKpsYXR2aWXFoXXigKw8L2xpPjxsaSBjbGFzcz0iR2UwQXViIiBhcmlhLWxhYmVsPSLigKpsaWV0dXZpxbPigKwiIGRhdGEtaGw9Imx0IiByb2xlPSJtZW51aXRlbSIgdGFiaW5kZXg9IjAiIGRhdGEtdmVkPSIwYWhVS0V3ajBnWkthbF9PVkF4Vm9FeEFJSFNOU0MtSVFqOG9LQ0dBIj7igKpsaWV0dXZpxbPigKw8L2xpPjxsaSBjbGFzcz0iR2UwQXViIiBhcmlhLWxhYmVsPSLigKptYWd5YXLigKwiIGRhdGEtaGw9Imh1IiByb2xlPSJtZW51aXRlbSIgdGFiaW5kZXg9IjAiIGRhdGEtdmVkPSIwYWhVS0V3ajBnWkthbF9PVkF4Vm9FeEFJSFNOU0MtSVFqOG9LQ0dFIj7igKptYWd5YXLigKw8L2xpPjxsaSBjbGFzcz0iR2UwQXViIiBhcmlhLWxhYmVsPSLigKpNZWxheXXigKwiIGRhdGEtaGw9Im1zIiByb2xlPSJtZW51aXRlbSIgdGFiaW5kZXg9IjAiIGRhdGEtdmVkPSIwYWhVS0V3ajBnWkthbF9PVkF4Vm9FeEFJSFNOU0MtSVFqOG9LQ0dJIj7igKpNZWxheXXigKw8L2xpPjxsaSBjbGFzcz0iR2UwQXViIiBhcmlhLWxhYmVsPSLigKpOZWRlcmxhbmRz4oCsIiBkYXRhLWhsPSJubCIgcm9sZT0ibWVudWl0ZW0iIHRhYmluZGV4PSIwIiBkYXRhLXZlZD0iMGFoVUtFd2owZ1pLYWxfT1ZBeFZvRXhBSUhTTlNDLUlRajhvS0NHTSI+4oCqTmVkZXJsYW5kc+KArDwvbGk+PGxpIGNsYXNzPSJHZTBBdWIiIGFyaWEtbGFiZWw9IuKAqm/igJh6YmVr4oCsIiBkYXRhLWhsPSJ1eiIgcm9sZT0ibWVudWl0ZW0iIHRhYmluZGV4PSIwIiBkYXRhLXZlZD0iMGFoVUtFd2owZ1pLYWxfT1ZBeFZvRXhBSUhTTlNDLUlRajhvS0NHUSI+4oCqb+KAmHpiZWvigKw8L2xpPjxsaSBjbGFzcz0iR2UwQXViIiBhcmlhLWxhYmVsPSLigKpwb2xza2nigKwiIGRhdGEtaGw9InBsIiByb2xlPSJtZW51aXRlbSIgdGFiaW5kZXg9IjAiIGRhdGEtdmVkPSIwYWhVS0V3ajBnWkthbF9PVkF4Vm9FeEFJSFNOU0MtSVFqOG9LQ0dVIj7igKpwb2xza2nigKw8L2xpPjxsaSBjbGFzcz0iR2UwQXViIiBhcmlhLWxhYmVsPSLigKpQb3J0dWd1w6pzIChCcmFzaWwp4oCsIiBkYXRhLWhsPSJwdC1CUiIgcm9sZT0ibWVudWl0ZW0iIHRhYmluZGV4PSIwIiBkYXRhLXZlZD0iMGFoVUtFd2owZ1pLYWxfT1ZBeFZvRXhBSUhTTlNDLUlRajhvS0NHWSI+4oCqUG9ydHVndcOqcyAoQnJhc2lsKeKArDwvbGk+PGxpIGNsYXNzPSJHZTBBdWIiIGFyaWEtbGFiZWw9IuKAqlBvcnR1Z3XDqnMgKFBvcnR1Z2FsKeKArCIgZGF0YS1obD0icHQtUFQiIHJvbGU9Im1lbnVpdGVtIiB0YWJpbmRleD0iMCIgZGF0YS12ZWQ9IjBhaFVLRXdqMGdaS2FsX09WQXhWb0V4QUlIU05TQy1JUWo4b0tDR2MiPuKAqlBvcnR1Z3XDqnMgKFBvcnR1Z2FsKeKArDwvbGk+PGxpIGNsYXNzPSJHZTBBdWIiIGFyaWEtbGFiZWw9IuKAqnJvbcOibsSD4oCsIiBkYXRhLWhsPSJybyIgcm9sZT0ibWVudWl0ZW0iIHRhYmluZGV4PSIwIiBkYXRhLXZlZD0iMGFoVUtFd2owZ1pLYWxfT1ZBeFZvRXhBSUhTTlNDLUlRajhvS0NHZyI+4oCqcm9tw6JuxIPigKw8L2xpPjxsaSBjbGFzcz0iR2UwQXViIiBhcmlhLWxhYmVsPSLigKpzaHFpcOKArCIgZGF0YS1obD0ic3EiIHJvbGU9Im1lbnVpdGVtIiB0YWJpbmRleD0iMCIgZGF0YS12ZWQ9IjBhaFVLRXdqMGdaS2FsX09WQXhWb0V4QUlIU05TQy1JUWo4b0tDR2siPuKAqnNocWlw4oCsPC9saT48bGkgY2xhc3M9IkdlMEF1YiIgYXJpYS1sYWJlbD0i4oCqU2xvdmVuxI1pbmHigKwiIGRhdGEtaGw9InNrIiByb2xlPSJtZW51aXRlbSIgdGFiaW5kZXg9IjAiIGRhdGEtdmVkPSIwYWhVS0V3ajBnWkthbF9PVkF4Vm9FeEFJSFNOU0MtSVFqOG9LQ0dvIj7igKpTbG92ZW7EjWluYeKArDwvbGk+PGxpIGNsYXNzPSJHZTBBdWIiIGFyaWEtbGFiZWw9IuKAqnNsb3ZlbsWhxI1pbmHigKwiIGRhdGEtaGw9InNsIiByb2xlPSJtZW51aXRlbSIgdGFiaW5kZXg9IjAiIGRhdGEtdmVkPSIwYWhVS0V3ajBnWkthbF9PVkF4Vm9FeEFJSFNOU0MtSVFqOG9LQ0dzIj7igKpzbG92ZW7FocSNaW5h4oCsPC9saT48bGkgY2xhc3M9IkdlMEF1YiIgYXJpYS1sYWJlbD0i4oCqc3Jwc2tpIChsYXRpbmljYSnigKwiIGRhdGEtaGw9InNyLUxhdG4iIHJvbGU9Im1lbnVpdGVtIiB0YWJpbmRleD0iMCIgZGF0YS12ZWQ9IjBhaFVLRXdqMGdaS2FsX09WQXhWb0V4QUlIU05TQy1JUWo4b0tDR3ciPuKAqnNycHNraSAobGF0aW5pY2Ep4oCsPC9saT48bGkgY2xhc3M9IkdlMEF1YiIgYXJpYS1sYWJlbD0i4oCqU3VvbWnigKwiIGRhdGEtaGw9ImZpIiByb2xlPSJtZW51aXRlbSIgdGFiaW5kZXg9IjAiIGRhdGEtdmVkPSIwYWhVS0V3ajBnWkthbF9PVkF4Vm9FeEFJSFNOU0MtSVFqOG9LQ0cwIj7igKpTdW9taeKArDwvbGk+PGxpIGNsYXNzPSJHZTBBdWIiIGFyaWEtbGFiZWw9IuKAqlN2ZW5za2HigKwiIGRhdGEtaGw9InN2IiByb2xlPSJtZW51aXRlbSIgdGFiaW5kZXg9IjAiIGRhdGEtdmVkPSIwYWhVS0V3ajBnWkthbF9PVkF4Vm9FeEFJSFNOU0MtSVFqOG9LQ0c0Ij7igKpTdmVuc2th4oCsPC9saT48bGkgY2xhc3M9IkdlMEF1YiIgYXJpYS1sYWJlbD0i4oCqVGnhur9uZyBWaeG7h3TigKwiIGRhdGEtaGw9InZpIiByb2xlPSJtZW51aXRlbSIgdGFiaW5kZXg9IjAiIGRhdGEtdmVkPSIwYWhVS0V3ajBnWkthbF9PVkF4Vm9FeEFJSFNOU0MtSVFqOG9LQ0c4Ij7igKpUaeG6v25nIFZp4buHdOKArDwvbGk+PGxpIGNsYXNzPSJHZTBBdWIiIGFyaWEtbGFiZWw9IuKAqlTDvHJrw6dl4oCsIiBkYXRhLWhsPSJ0ciIgcm9sZT0ibWVudWl0ZW0iIHRhYmluZGV4PSIwIiBkYXRhLXZlZD0iMGFoVUtFd2owZ1pLYWxfT1ZBeFZvRXhBSUhTTlNDLUlRajhvS0NIQSI+4oCqVMO8cmvDp2XigKw8L2xpPjxsaSBjbGFzcz0iR2UwQXViIiBhcmlhLWxhYmVsPSLigKrOlc67zrvOt869zrnOus6s4oCsIiBkYXRhLWhsPSJlbCIgcm9sZT0ibWVudWl0ZW0iIHRhYmluZGV4PSIwIiBkYXRhLXZlZD0iMGFoVUtFd2owZ1pLYWxfT1ZBeFZvRXhBSUhTTlNDLUlRajhvS0NIRSI+4oCqzpXOu867zrfOvc65zrrOrOKArDwvbGk+PGxpIGNsYXNzPSJHZTBBdWIiIGFyaWEtbGFiZWw9IuKAqtCx0LXQu9Cw0YDRg9GB0LrQsNGP4oCsIiBkYXRhLWhsPSJiZSIgcm9sZT0ibWVudWl0ZW0iIHRhYmluZGV4PSIwIiBkYXRhLXZlZD0iMGFoVUtFd2owZ1pLYWxfT1ZBeFZvRXhBSUhTTlNDLUlRajhvS0NISSI+4oCq0LHQtdC70LDRgNGD0YHQutCw0Y/igKw8L2xpPjxsaSBjbGFzcz0iR2UwQXViIiBhcmlhLWxhYmVsPSLigKrQsdGK0LvQs9Cw0YDRgdC60LjigKwiIGRhdGEtaGw9ImJnIiByb2xlPSJtZW51aXRlbSIgdGFiaW5kZXg9IjAiIGRhdGEtdmVkPSIwYWhVS0V3ajBnWkthbF9PVkF4Vm9FeEFJSFNOU0MtSVFqOG9LQ0hNIj7igKrQsdGK0LvQs9Cw0YDRgdC60LjigKw8L2xpPjxsaSBjbGFzcz0iR2UwQXViIiBhcmlhLWxhYmVsPSLigKrQutGL0YDQs9GL0LfRh9Cw4oCsIiBkYXRhLWhsPSJreSIgcm9sZT0ibWVudWl0ZW0iIHRhYmluZGV4PSIwIiBkYXRhLXZlZD0iMGFoVUtFd2owZ1pLYWxfT1ZBeFZvRXhBSUhTTlNDLUlRajhvS0NIUSI+4oCq0LrRi9GA0LPRi9C30YfQsOKArDwvbGk+PGxpIGNsYXNzPSJHZTBBdWIiIGFyaWEtbGFiZWw9IuKAqtC80LDQutC10LTQvtC90YHQutC44oCsIiBkYXRhLWhsPSJtayIgcm9sZT0ibWVudWl0ZW0iIHRhYmluZGV4PSIwIiBkYXRhLXZlZD0iMGFoVUtFd2owZ1pLYWxfT1ZBeFZvRXhBSUhTTlNDLUlRajhvS0NIVSI+4oCq0LzQsNC60LXQtNC+0L3RgdC60LjigKw8L2xpPjxsaSBjbGFzcz0iR2UwQXViIiBhcmlhLWxhYmVsPSLigKrQvNC+0L3Qs9C+0LvigKwiIGRhdGEtaGw9Im1uIiByb2xlPSJtZW51aXRlbSIgdGFiaW5kZXg9IjAiIGRhdGEtdmVkPSIwYWhVS0V3ajBnWkthbF9PVkF4Vm9FeEFJSFNOU0MtSVFqOG9LQ0hZIj7igKrQvNC+0L3Qs9C+0LvigKw8L2xpPjxsaSBjbGFzcz0iR2UwQXViIiBhcmlhLWxhYmVsPSLigKrQoNGD0YHRgdC60LjQueKArCIgZGF0YS1obD0icnUiIHJvbGU9Im1lbnVpdGVtIiB0YWJpbmRleD0iMCIgZGF0YS12ZWQ9IjBhaFVLRXdqMGdaS2FsX09WQXhWb0V4QUlIU05TQy1JUWo4b0tDSGMiPuKAqtCg0YPRgdGB0LrQuNC54oCsPC9saT48bGkgY2xhc3M9IkdlMEF1YiIgYXJpYS1sYWJlbD0i4oCq0YHRgNC/0YHQutC4ICjRm9C40YDQuNC70LjRhtCwKeKArCIgZGF0YS1obD0ic3IiIHJvbGU9Im1lbnVpdGVtIiB0YWJpbmRleD0iMCIgZGF0YS12ZWQ9IjBhaFVLRXdqMGdaS2FsX09WQXhWb0V4QUlIU05TQy1JUWo4b0tDSGciPuKAqtGB0YDQv9GB0LrQuCAo0ZvQuNGA0LjQu9C40YbQsCnigKw8L2xpPjxsaSBjbGFzcz0iR2UwQXViIiBhcmlhLWxhYmVsPSLigKrQo9C60YDQsNGX0L3RgdGM0LrQsOKArCIgZGF0YS1obD0idWsiIHJvbGU9Im1lbnVpdGVtIiB0YWJpbmRleD0iMCIgZGF0YS12ZWQ9IjBhaFVLRXdqMGdaS2FsX09WQXhWb0V4QUlIU05TQy1JUWo4b0tDSGsiPuKAqtCj0LrRgNCw0ZfQvdGB0YzQutCw4oCsPC9saT48bGkgY2xhc3M9IkdlMEF1YiIgYXJpYS1sYWJlbD0i4oCq4YOl4YOQ4YOg4YOX4YOj4YOa4YOY4oCsIiBkYXRhLWhsPSJrYSIgcm9sZT0ibWVudWl0ZW0iIHRhYmluZGV4PSIwIiBkYXRhLXZlZD0iMGFoVUtFd2owZ1pLYWxfT1ZBeFZvRXhBSUhTTlNDLUlRajhvS0NIbyI+4oCq4YOl4YOQ4YOg4YOX4YOj4YOa4YOY4oCsPC9saT48bGkgY2xhc3M9IkdlMEF1YiIgYXJpYS1sYWJlbD0i4oCq0pvQsNC30LDSmyDRgtGW0LvRluKArCIgZGF0YS1obD0ia2siIHJvbGU9Im1lbnVpdGVtIiB0YWJpbmRleD0iMCIgZGF0YS12ZWQ9IjBhaFVLRXdqMGdaS2FsX09WQXhWb0V4QUlIU05TQy1JUWo4b0tDSHMiPuKAqtKb0LDQt9Cw0psg0YLRltC70ZbigKw8L2xpPjxsaSBjbGFzcz0iR2UwQXViIiBhcmlhLWxhYmVsPSLigKrVsNWh1bXVpdaA1aXVtuKArCIgZGF0YS1obD0iaHkiIHJvbGU9Im1lbnVpdGVtIiB0YWJpbmRleD0iMCIgZGF0YS12ZWQ9IjBhaFVLRXdqMGdaS2FsX09WQXhWb0V4QUlIU05TQy1JUWo4b0tDSHciPuKAqtWw1aHVtdWl1oDVpdW24oCsPC9saT48bGkgY2xhc3M9IkdlMEF1YiIgYXJpYS1sYWJlbD0i4oCr16LXkdeo15nXquKArCIgZGF0YS1obD0iaXciIHJvbGU9Im1lbnVpdGVtIiB0YWJpbmRleD0iMCIgZGF0YS12ZWQ9IjBhaFVLRXdqMGdaS2FsX09WQXhWb0V4QUlIU05TQy1JUWo4b0tDSDAiPjxzcGFuIGRpcj0ibHRyIj7igKvXoteR16jXmdeq4oCsPC9zcGFuPjwvbGk+PGxpIGNsYXNzPSJHZTBBdWIiIGFyaWEtbGFiZWw9IuKAq9in2LHYr9mI4oCsIiBkYXRhLWhsPSJ1ciIgcm9sZT0ibWVudWl0ZW0iIHRhYmluZGV4PSIwIiBkYXRhLXZlZD0iMGFoVUtFd2owZ1pLYWxfT1ZBeFZvRXhBSUhTTlNDLUlRajhvS0NINCI+PHNwYW4gZGlyPSJsdHIiPuKAq9in2LHYr9mI4oCsPC9zcGFuPjwvbGk+PGxpIGNsYXNzPSJHZTBBdWIiIGFyaWEtbGFiZWw9IuKAq9in2YTYudix2KjZitip4oCsIiBkYXRhLWhsPSJhciIgcm9sZT0ibWVudWl0ZW0iIHRhYmluZGV4PSIwIiBkYXRhLXZlZD0iMGFoVUtFd2owZ1pLYWxfT1ZBeFZvRXhBSUhTTlNDLUlRajhvS0NIOCI+PHNwYW4gZGlyPSJsdHIiPuKAq9in2YTYudix2KjZitip4oCsPC9zcGFuPjwvbGk+PGxpIGNsYXNzPSJHZTBBdWIiIGFyaWEtbGFiZWw9IuKAq9mB2KfYsdiz24zigKwiIGRhdGEtaGw9ImZhIiByb2xlPSJtZW51aXRlbSIgdGFiaW5kZXg9IjAiIGRhdGEtdmVkPSIwYWhVS0V3ajBnWkthbF9PVkF4Vm9FeEFJSFNOU0MtSVFqOG9LQ0lBQiI+PHNwYW4gZGlyPSJsdHIiPuKAq9mB2KfYsdiz24zigKw8L3NwYW4+PC9saT48bGkgY2xhc3M9IkdlMEF1YiIgYXJpYS1sYWJlbD0i4oCq4Yqg4Yib4Yit4Yqb4oCsIiBkYXRhLWhsPSJhbSIgcm9sZT0ibWVudWl0ZW0iIHRhYmluZGV4PSIwIiBkYXRhLXZlZD0iMGFoVUtFd2owZ1pLYWxfT1ZBeFZvRXhBSUhTTlNDLUlRajhvS0NJRUIiPuKAquGKoOGIm+GIreGKm+KArDwvbGk+PGxpIGNsYXNzPSJHZTBBdWIiIGFyaWEtbGFiZWw9IuKAquCkqOClh+CkquCkvuCksuClgOKArCIgZGF0YS1obD0ibmUiIHJvbGU9Im1lbnVpdGVtIiB0YWJpbmRleD0iMCIgZGF0YS12ZWQ9IjBhaFVLRXdqMGdaS2FsX09WQXhWb0V4QUlIU05TQy1JUWo4b0tDSUlCIj7igKrgpKjgpYfgpKrgpL7gpLLgpYDigKw8L2xpPjxsaSBjbGFzcz0iR2UwQXViIiBhcmlhLWxhYmVsPSLigKrgpK7gpLDgpL7gpKDgpYDigKwiIGRhdGEtaGw9Im1yIiByb2xlPSJtZW51aXRlbSIgdGFiaW5kZXg9IjAiIGRhdGEtdmVkPSIwYWhVS0V3ajBnWkthbF9PVkF4Vm9FeEFJSFNOU0MtSVFqOG9LQ0lNQiI+4oCq4KSu4KSw4KS+4KSg4KWA4oCsPC9saT48bGkgY2xhc3M9IkdlMEF1YiIgYXJpYS1sYWJlbD0i4oCq4KS54KS/4KSo4KWN4KSm4KWA4oCsIiBkYXRhLWhsPSJoaSIgcm9sZT0ibWVudWl0ZW0iIHRhYmluZGV4PSIwIiBkYXRhLXZlZD0iMGFoVUtFd2owZ1pLYWxfT1ZBeFZvRXhBSUhTTlNDLUlRajhvS0NJUUIiPuKAquCkueCkv+CkqOCljeCkpuClgOKArDwvbGk+PGxpIGNsYXNzPSJHZTBBdWIiIGFyaWEtbGFiZWw9IuKAquCmrOCmvuCmguCmsuCmvuKArCIgZGF0YS1obD0iYm4iIHJvbGU9Im1lbnVpdGVtIiB0YWJpbmRleD0iMCIgZGF0YS12ZWQ9IjBhaFVLRXdqMGdaS2FsX09WQXhWb0V4QUlIU05TQy1JUWo4b0tDSVVCIj7igKrgpqzgpr7gpoLgprLgpr7igKw8L2xpPjxsaSBjbGFzcz0iR2UwQXViIiBhcmlhLWxhYmVsPSLigKrgqKrgqbDgqJzgqL7gqKzgqYDigKwiIGRhdGEtaGw9InBhIiByb2xlPSJtZW51aXRlbSIgdGFiaW5kZXg9IjAiIGRhdGEtdmVkPSIwYWhVS0V3ajBnWkthbF9PVkF4Vm9FeEFJSFNOU0MtSVFqOG9LQ0lZQiI+4oCq4Kiq4Kmw4Kic4Ki+4Kis4KmA4oCsPC9saT48bGkgY2xhc3M9IkdlMEF1YiIgYXJpYS1sYWJlbD0i4oCq4KqX4KuB4Kqc4Kqw4Kq+4Kqk4KuA4oCsIiBkYXRhLWhsPSJndSIgcm9sZT0ibWVudWl0ZW0iIHRhYmluZGV4PSIwIiBkYXRhLXZlZD0iMGFoVUtFd2owZ1pLYWxfT1ZBeFZvRXhBSUhTTlNDLUlRajhvS0NJY0IiPuKAquCql+CrgeCqnOCqsOCqvuCqpOCrgOKArDwvbGk+PGxpIGNsYXNzPSJHZTBBdWIiIGFyaWEtbGFiZWw9IuKAquCupOCuruCuv+CutOCvjeKArCIgZGF0YS1obD0idGEiIHJvbGU9Im1lbnVpdGVtIiB0YWJpbmRleD0iMCIgZGF0YS12ZWQ9IjBhaFVLRXdqMGdaS2FsX09WQXhWb0V4QUlIU05TQy1JUWo4b0tDSWdCIj7igKrgrqTgrq7grr/grrTgr43igKw8L2xpPjxsaSBjbGFzcz0iR2UwQXViIiBhcmlhLWxhYmVsPSLigKrgsKTgsYbgsLLgsYHgsJfgsYHigKwiIGRhdGEtaGw9InRlIiByb2xlPSJtZW51aXRlbSIgdGFiaW5kZXg9IjAiIGRhdGEtdmVkPSIwYWhVS0V3ajBnWkthbF9PVkF4Vm9FeEFJSFNOU0MtSVFqOG9LQ0lrQiI+4oCq4LCk4LGG4LCy4LGB4LCX4LGB4oCsPC9saT48bGkgY2xhc3M9IkdlMEF1YiIgYXJpYS1sYWJlbD0i4oCq4LKV4LKo4LON4LKo4LKh4oCsIiBkYXRhLWhsPSJrbiIgcm9sZT0ibWVudWl0ZW0iIHRhYmluZGV4PSIwIiBkYXRhLXZlZD0iMGFoVUtFd2owZ1pLYWxfT1ZBeFZvRXhBSUhTTlNDLUlRajhvS0NJb0IiPuKAquCyleCyqOCzjeCyqOCyoeKArDwvbGk+PGxpIGNsYXNzPSJHZTBBdWIiIGFyaWEtbGFiZWw9IuKAquC0ruC0suC0r+C0vuC0s+C0guKArCIgZGF0YS1obD0ibWwiIHJvbGU9Im1lbnVpdGVtIiB0YWJpbmRleD0iMCIgZGF0YS12ZWQ9IjBhaFVLRXdqMGdaS2FsX09WQXhWb0V4QUlIU05TQy1JUWo4b0tDSXNCIj7igKrgtK7gtLLgtK/gtL7gtLPgtILigKw8L2xpPjxsaSBjbGFzcz0iR2UwQXViIiBhcmlhLWxhYmVsPSLigKrgt4Pgt5LgtoLgt4Tgtr3igKwiIGRhdGEtaGw9InNpIiByb2xlPSJtZW51aXRlbSIgdGFiaW5kZXg9IjAiIGRhdGEtdmVkPSIwYWhVS0V3ajBnWkthbF9PVkF4Vm9FeEFJSFNOU0MtSVFqOG9LQ0l3QiI+4oCq4LeD4LeS4LaC4LeE4La94oCsPC9saT48bGkgY2xhc3M9IkdlMEF1YiIgYXJpYS1sYWJlbD0i4oCq4LmE4LiX4Lii4oCsIiBkYXRhLWhsPSJ0aCIgcm9sZT0ibWVudWl0ZW0iIHRhYmluZGV4PSIwIiBkYXRhLXZlZD0iMGFoVUtFd2owZ1pLYWxfT1ZBeFZvRXhBSUhTTlNDLUlRajhvS0NJMEIiPuKAquC5hOC4l+C4ouKArDwvbGk+PGxpIGNsYXNzPSJHZTBBdWIiIGFyaWEtbGFiZWw9IuKAquC6peC6suC6p+KArCIgZGF0YS1obD0ibG8iIHJvbGU9Im1lbnVpdGVtIiB0YWJpbmRleD0iMCIgZGF0YS12ZWQ9IjBhaFVLRXdqMGdaS2FsX09WQXhWb0V4QUlIU05TQy1JUWo4b0tDSTRCIj7igKrguqXgurLguqfigKw8L2xpPjxsaSBjbGFzcz0iR2UwQXViIiBhcmlhLWxhYmVsPSLigKrhgJnhgLzhgJThgLrhgJnhgKzigKwiIGRhdGEtaGw9Im15IiByb2xlPSJtZW51aXRlbSIgdGFiaW5kZXg9IjAiIGRhdGEtdmVkPSIwYWhVS0V3ajBnWkthbF9PVkF4Vm9FeEFJSFNOU0MtSVFqOG9LQ0k4QiI+4oCq4YCZ4YC84YCU4YC64YCZ4YCs4oCsPC9saT48bGkgY2xhc3M9IkdlMEF1YiIgYXJpYS1sYWJlbD0i4oCq4Z6B4Z+S4Z6Y4Z+C4Z6a4oCsIiBkYXRhLWhsPSJrbSIgcm9sZT0ibWVudWl0ZW0iIHRhYmluZGV4PSIwIiBkYXRhLXZlZD0iMGFoVUtFd2owZ1pLYWxfT1ZBeFZvRXhBSUhTTlNDLUlRajhvS0NKQUIiPuKAquGegeGfkuGemOGfguGemuKArDwvbGk+PGxpIGNsYXNzPSJHZTBBdWIiIGFyaWEtbGFiZWw9IuKAqu2VnOq1reyWtOKArCIgZGF0YS1obD0ia28iIHJvbGU9Im1lbnVpdGVtIiB0YWJpbmRleD0iMCIgZGF0YS12ZWQ9IjBhaFVLRXdqMGdaS2FsX09WQXhWb0V4QUlIU05TQy1JUWo4b0tDSkVCIj7igKrtlZzqta3slrTigKw8L2xpPjxsaSBjbGFzcz0iR2UwQXViIiBhcmlhLWxhYmVsPSLigKrkuK3mlofvvIjpppnmuK/vvInigKwiIGRhdGEtaGw9InpoLUhLIiByb2xlPSJtZW51aXRlbSIgdGFiaW5kZXg9IjAiIGRhdGEtdmVkPSIwYWhVS0V3ajBnWkthbF9PVkF4Vm9FeEFJSFNOU0MtSVFqOG9LQ0pJQiI+4oCq5Lit5paH77yI6aaZ5riv77yJ4oCsPC9saT48bGkgY2xhc3M9IkdlMEF1YiIgYXJpYS1sYWJlbD0i4oCq5pel5pys6Kqe4oCsIiBkYXRhLWhsPSJqYSIgcm9sZT0ibWVudWl0ZW0iIHRhYmluZGV4PSIwIiBkYXRhLXZlZD0iMGFoVUtFd2owZ1pLYWxfT1ZBeFZvRXhBSUhTTlNDLUlRajhvS0NKTUIiPuKAquaXpeacrOiqnuKArDwvbGk+PGxpIGNsYXNzPSJHZTBBdWIiIGFyaWEtbGFiZWw9IuKAqueugOS9k+S4reaWh+KArCIgZGF0YS1obD0iemgtQ04iIHJvbGU9Im1lbnVpdGVtIiB0YWJpbmRleD0iMCIgZGF0YS12ZWQ9IjBhaFVLRXdqMGdaS2FsX09WQXhWb0V4QUlIU05TQy1JUWo4b0tDSlFCIj7igKrnroDkvZPkuK3mlofigKw8L2xpPjxsaSBjbGFzcz0iR2UwQXViIiBhcmlhLWxhYmVsPSLigKrnuYHpq5TkuK3mlofigKwiIGRhdGEtaGw9InpoLVRXIiByb2xlPSJtZW51aXRlbSIgdGFiaW5kZXg9IjAiIGRhdGEtdmVkPSIwYWhVS0V3ajBnWkthbF9PVkF4Vm9FeEFJSFNOU0MtSVFqOG9LQ0pVQiI+4oCq57mB6auU5Lit5paH4oCsPC9saT48L2Rpdj48L2Rpdj48L2Rpdj48YnV0dG9uIGNsYXNzPSJuZURZdyB0SGxwOGQiIGlkPSJna3NTMWQiIHJvbGU9ImxpbmsiIGRhdGEtdmVkPSIwYWhVS0V3ajBnWkthbF9PVkF4Vm9FeEFJSFNOU0MtSVFpcEFIQ0pZQiI+PGRpdiBjbGFzcz0iUVM1Z3UgdWQxam1mIiByb2xlPSJub25lIj5Mb2dnIHDDpTwvZGl2PjwvYnV0dG9uPjwvZGl2PjwvZGl2PjwvZGl2PjxkaXYgY2xhc3M9IkdaN3hOZSI+PGgxIGNsYXNzPSJJOTBUVmIiPkxlcyBkZXR0ZSBmw7hyIGR1IGfDpXIgdmlkZXJlIHRpbCBHb29nbGU8L2gxPjxkaXYgY2xhc3M9IkFHOTZsYiI+PGRpdiBjbGFzcz0iZUxaWXlmIj5WaSBicnVrZXIgPGEgY2xhc3M9IkY0YTFsIiBocmVmPSJodHRwczovL3BvbGljaWVzLmdvb2dsZS5jb20vdGVjaG5vbG9naWVzL2Nvb2tpZXM/dXRtX3NvdXJjZT11Y2JzJmFtcDtobD1ubyIgdGFyZ2V0PSJfYmxhbmsiPmluZm9ybWFzam9uc2thcHNsZXI8L2E+IG9nIGRhdGEgdGlsIMOlPHVsIGNsYXNzPSJkYlhPOSI+PGxpIGNsYXNzPSJnb3dzWWQgaWJDRjBjIj5sZXZlcmUgb2cgb3BwcmV0dGhvbGRlIEdvb2dsZS10amVuZXN0ZXI8L2xpPjxsaSBjbGFzcz0iZ293c1lkIEd3d2hHZiI+c3BvcmUgdGplbmVzdGVhdmJydWRkIG9nIGJlc2t5dHRlIG1vdCBuZXR0c8O4cHBlbCwgc3ZpbmRlbCBvZyB1cmlrdGlnIGJydWs8L2xpPjxsaSBjbGFzcz0iZ293c1lkIHY4QnBmYiI+bcOlbGUgYnJ1a2VyZW5nYXNqZW1lbnQgb2cgbmV0dHN0ZWRzc3RhdGlzdGlrayBmb3Igw6UgZm9yc3TDpSBodm9yZGFuIHRqZW5lc3RlbmUgdsOlcmUgYnJ1a2VzLCBvZyBnasO4cmUgZGVtIGJlZHJlPC9saT48L3VsPjwvZGl2PjxkaXYgY2xhc3M9ImVMWll5ZiI+SHZpcyBkdSB2ZWxnZXIgwqtHb2R0YSBhbGxlwrssIGJydWtlciB2aSBvZ3PDpSBpbmZvcm1hc2pvbnNrYXBzbGVyIG9nIGRhdGEgdGlsIMOlPHVsIGNsYXNzPSJkYlhPOSI+PGxpIGNsYXNzPSJnb3dzWWQgTTZqOXFmIj51dHZpa2xlIG9nIGZvcmJlZHJlIG55ZSB0amVuZXN0ZXI8L2xpPjxsaSBjbGFzcz0iZ293c1lkIHY4QnBmYiI+bGV2ZXJlIG9nIG3DpWxlIGVmZmVrdGl2aXRldGVuIGF2IGFubm9uc2VyPC9saT48bGkgY2xhc3M9Imdvd3NZZCBlMjFNYWMiPnZpc2UgcGVyc29ubGlnIHRpbHBhc3NldCBpbm5ob2xkLCBhdmhlbmdpZyBhdiBpbm5zdGlsbGluZ2VuZSBkaW5lPC9saT48bGkgY2xhc3M9Imdvd3NZZCBvaEVXUGMiPnZpc2UgcGVyc29ubGlnIHRpbHBhc3NlZGUgYW5ub25zZXIsIGF2aGVuZ2lnIGF2IGlubnN0aWxsaW5nZW5lIGRpbmU8L2xpPjwvdWw+PGRpdiBjbGFzcz0iakxod2RjIj5IdmlzIGR1IHZlbGdlciDCq0F2dmlzIGFsbGXCuywgYnJ1a2VyIHZpIGlra2UgaW5mb3JtYXNqb25za2Fwc2xlciBmb3IgZGlzc2UgdGlsbGVnZ3Nmb3Jtw6VsZW5lLjwvZGl2PjwvZGl2PjxkaXYgY2xhc3M9InlTMW5sZCI+SW5uaG9sZCBzb20gaWtrZSBlciBwZXJzb25saWcgdGlscGFzc2V0LCBlciBww6V2aXJrZXQgYXYgdGluZyBzb20gaW5uaG9sZGV0IGR1IHNlciBww6UsIGFrdGl2aXRldCBpIGRlbiBha3RpdmUgU8O4ay3DuGt0ZW4gb2cgcG9zaXNqb25lbiBkaW4uIEFubm9uc2VyIHNvbSBpa2tlIGVyIHBlcnNvbmxpZyB0aWxwYXNzZXQsIGVyIHDDpXZpcmtldCBhdiBpbm5ob2xkZXQgZHUgc2VyIHDDpSwgb2cgZGVuIGdlbmVyZWxsZSBwb3Npc2pvbmVuIGRpbi4gSW5uaG9sZCBvZyBhbm5vbnNlciBzb20gZXIgcGVyc29ubGlnIHRpbHBhc3NldCwga2FuIG9nc8OlIGlua2x1ZGVyZSBtZXIgcmVsZXZhbnRlIHJlc3VsdGF0ZXIsIGFuYmVmYWxpbmdlciBvZyB0aWxwYXNzZWRlIGFubm9uc2VyIGJhc2VydCBww6UgdGlkbGlnZXJlIGFrdGl2aXRldCBmcmEgZGVubmUgbmV0dGxlc2VyZW4sIGZvciBla3NlbXBlbCB0aWRsaWdlcmUgR29vZ2xlLXPDuGsuIFZpIGJydWtlciBvZ3PDpSBpbmZvcm1hc2pvbnNrYXBzbGVyIG9nIGRhdGEgZm9yIMOlIGdqw7hyZSBvcHBsZXZlbHNlbiBlZ25ldCBmb3IgYWxkZXJzZ3J1cHBlbiwgaHZpcyBkZXQgZXIgcmVsZXZhbnQuPC9kaXY+PGRpdiBjbGFzcz0ieVMxbmxkIj5WZWxnIMKrRmxlcmUgYWx0ZXJuYXRpdmVywrsgZm9yIMOlIHNlIG1lciBpbmZvcm1hc2pvbiwgaW5rbHVkZXJ0IGRldGFsamVyIG9tIGFkbWluaXN0cmVyaW5nIGF2IHBlcnNvbnZlcm5pbm5zdGlsbGluZ2VuZS4gRHUga2FuIG9nc8OlIGfDpSB0aWwgPHNwYW4+Zy5jby9wcml2YWN5dG9vbHM8L3NwYW4+IG7DpXIgc29tIGhlbHN0LjwvZGl2PjwvZGl2PjwvZGl2PjxkaXYgY2xhc3M9InNwb0tWZCI+PGRpdiBjbGFzcz0iR3pMak1kIj48YnV0dG9uIGlkPSJXMHdsdGMiIGNsYXNzPSJ0SGxwOGQiIGRhdGEtdmVkPSIwYWhVS0V3ajBnWkthbF9PVkF4Vm9FeEFJSFNOU0MtSVE0Y0lJQ0pjQiI+PGRpdiBjbGFzcz0iUVM1Z3Ugc3k0dk0iIHJvbGU9Im5vbmUiPkF2dmlzIGFsbGU8L2Rpdj48L2J1dHRvbj48YnV0dG9uIGlkPSJMMkFHTGIiIGNsYXNzPSJ0SGxwOGQiIGRhdGEtdmVkPSIwYWhVS0V3ajBnWkthbF9PVkF4Vm9FeEFJSFNOU0MtSVFpWkFIQ0pnQiI+PGRpdiBjbGFzcz0iUVM1Z3Ugc3k0dk0iIHJvbGU9Im5vbmUiPkdvZHRhIGFsbGU8L2Rpdj48L2J1dHRvbj48L2Rpdj48ZGl2IGNsYXNzPSJHekxqTWQiPjxidXR0b24gY2xhc3M9InRIbHA4ZCIgaWQ9IlZuakNjYiIgcm9sZT0ibGluayIgdGFiaW5kZXg9Ii0xIiBkYXRhLXZlZD0iMGFoVUtFd2owZ1pLYWxfT1ZBeFZvRXhBSUhTTlNDLUlRaUpBSENKa0IiPjxhIGNsYXNzPSJlT2pQSWUiIGFyaWEtbGFiZWw9IkZsZXJlIGFsdGVybmF0aXZlciBmb3IgaW5uc3RpbGxpbmdlciBmb3IgcGVyc29ubGlnIHRpbHBhc25pbmcgb2cgaW5mb3JtYXNqb25za2Fwc2xlciIgdGFiaW5kZXg9IjAiPkZsZXJlIGFsdGVybmF0aXZlcjwvYT48L2J1dHRvbj48L2Rpdj48L2Rpdj48ZGl2IGNsYXNzPSJYV2xyZmYgY0cwRG1mIj48YSBjbGFzcz0icGVSTDJlIiBocmVmPSJodHRwczovL3BvbGljaWVzLmdvb2dsZS5jb20vcHJpdmFjeT9obD1ubyZhbXA7Zmc9MSZhbXA7dXRtX3NvdXJjZT11Y2JzIiBpZD0iUlAzVjVjIiBkYXRhLXZlZD0iMGFoVUtFd2owZ1pLYWxfT1ZBeFZvRXhBSUhTTlNDLUlRajVBSENKb0IiPlBlcnNvbnZlcm48L2E+PGRpdiBjbGFzcz0ibzlENVpiIiBhcmlhLWhpZGRlbj0idHJ1ZSI+Jm1pZGRvdDs8L2Rpdj48YSBjbGFzcz0icGVSTDJlIiBocmVmPSJodHRwczovL3BvbGljaWVzLmdvb2dsZS5jb20vdGVybXM/aGw9bm8mYW1wO2ZnPTEmYW1wO3V0bV9zb3VyY2U9dWNicyIgaWQ9IkhRMWxiIiBkYXRhLXZlZD0iMGFoVUtFd2owZ1pLYWxfT1ZBeFZvRXhBSUhTTlNDLUlRa0pBSENKc0IiPlZpbGvDpXI8L2E+PC9kaXY+PC9kaXY+PC9kaXY+PC9kaXY+PC9zcGFuPjwvZGl2PjwvZGl2PjxzY3JpcHQgbm9uY2U9IllPeUhIM2x0T21EOUJveV9aQnlBbFEiPihmdW5jdGlvbigpe3ZhciBjb29raWVEb21haW49Jy5nb29nbGUuY29tJzt2YXIgY29va2llVXBkYXRlQ29uc2VudFVybD0nJzt2YXIgc0NBUz0nQ0FJU0hBZ0JFaEpuZDNOZk1qQXlOakEzTWpNdE1GOVNRekVhQW01dklBRWFCZ2lBdjVyVEJnJzt2YXIgc0NSUz0nQ0FFU0hBZ0JFaEpuZDNOZk1qQXlOakEzTWpNdE1GOVNRekVhQW01dklBRWFCZ2lBdjVyVEJnJzt2YXIgc0w9MzQxMjgwMDA7dmFyIHNFRT1mYWxzZTt2YXIgc0lVPSdodHRwczovL2FjY291bnRzLmdvb2dsZS5jb20vU2VydmljZUxvZ2luP2hsXHgzZG5vXHgyNmNvbnRpbnVlXHgzZGh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vXHgyNmdhZVx4M2RjYi1ub25lJzt2YXIgY1U9J2h0dHBzOi8vY29uc2VudC5nb29nbGUuY29tL2Q/Y29udGludWVceDNkaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9ceDI2Z2xceDNkTk9ceDI2bVx4M2QwXHgyNnBjXHgzZHNocFx4MjZ1eGVceDNkbm9uZVx4MjZjbVx4M2QyXHgyNmhsXHgzZG5vXHgyNnNyY1x4M2QyXHgyNmVzY3NceDNkQVotcjZaNld2R0dzRUJjanFldWpKN1hyVzlqQl9PNFFjbkh1ZFBBbzVEUUQ4OFR4RXE1ZlRRUWV2MmpPVXJIaUhsZU9VcnRjVERXV3dEcHlDX3lERE04eDJLdlMtZDJFMDBBSCc7dmFyIHJQVT0nJzt2YXIgclBPVT1bXTt2YXIgYUFVPSdodHRwczovL2NvbnNlbnQuZ29vZ2xlLmNvbS9zYXZlP2NvbnRpbnVlXHgzZGh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vXHgyNmdsXHgzZE5PXHgyNm1ceDNkMFx4MjZwY1x4M2RzaHBceDI2eFx4M2Q1XHgyNnNyY1x4M2QyXHgyNmhsXHgzZG5vXHgyNmJsXHgzZGd3c18yMDI2MDcyMy0wX1JDMVx4MjZ1eGVceDNkbm9uZVx4MjZjbVx4M2QyXHgyNnNldF9lb21ceDNkZmFsc2VceDI2c2V0X2Fwc1x4M2R0cnVlXHgyNnNldF9zY1x4M2R0cnVlXHgyNmVzY3NceDNkQVotcjZaNG5ndEhZZVJ1NDZyZE1sQmh4cTNoOFNPNG9TUUcxVExWdWVTbDJqQmpOa3EzNUViMkhGZ3JCeERkRXg2YjBMNjBUTi05ekstTlZYMEM0elh5U2o0LWFFWTlRZm41bCc7dmFyIHJBVT0naHR0cHM6Ly9jb25zZW50Lmdvb2dsZS5jb20vc2F2ZT9jb250aW51ZVx4M2RodHRwczovL3d3dy5nb29nbGUuY29tL1x4MjZnbFx4M2ROT1x4MjZtXHgzZDBceDI2cGNceDNkc2hwXHgyNnhceDNkNVx4MjZzcmNceDNkMlx4MjZobFx4M2Rub1x4MjZibFx4M2Rnd3NfMjAyNjA3MjMtMF9SQzFceDI2dXhlXHgzZG5vbmVceDI2Y21ceDNkMlx4MjZzZXRfZW9tXHgzZHRydWVceDI2ZXNjc1x4M2RBWi1yNlo0d29hamUxYmlpcldUcUtWaWFsY21QcUYxYUZ0MUQ0OENNaTlzTXhneVRnYkpYRmRWMC04cVZCcVFvRHVFMS1VRnAwMy1QTTRjeEhsQ1pzdXlnbmlTWDhOMmFWYnlnJzt2YXIgcEM9J1NFQVJDSF9IT01FUEFHRSc7dmFyIGdMPSdubyc7dmFyIGlzTW9iaWxlPWZhbHNlO3ZhciBzcnA9ZmFsc2U7dmFyIHVYSlM9ZmFsc2U7dmFyIGlFTz10cnVlO3ZhciBpU1I9ZmFsc2U7dmFyIGFhPXR5cGVvZiBPYmplY3QuY3JlYXRlPT0iZnVuY3Rpb24iP09iamVjdC5jcmVhdGU6ZnVuY3Rpb24oYSl7dmFyIGI9ZnVuY3Rpb24oKXt9O2IucHJvdG90eXBlPWE7cmV0dXJuIG5ldyBifSxiYT10eXBlb2YgT2JqZWN0LmRlZmluZVByb3BlcnRpZXM9PSJmdW5jdGlvbiI/T2JqZWN0LmRlZmluZVByb3BlcnR5OmZ1bmN0aW9uKGEsYixjKXtpZihhPT1BcnJheS5wcm90b3R5cGV8fGE9PU9iamVjdC5wcm90b3R5cGUpcmV0dXJuIGE7YVtiXT1jLnZhbHVlO3JldHVybiBhfSxjYT1mdW5jdGlvbihhKXthPVsib2JqZWN0Ij09dHlwZW9mIGdsb2JhbFRoaXMmJmdsb2JhbFRoaXMsYSwib2JqZWN0Ij09dHlwZW9mIHdpbmRvdyYmd2luZG93LCJvYmplY3QiPT10eXBlb2Ygc2VsZiYmc2VsZiwib2JqZWN0Ij09dHlwZW9mIGdsb2JhbCYmZ2xvYmFsXTtmb3IodmFyIGI9MDtiPGEubGVuZ3RoOysrYil7dmFyIGM9YVtiXTtpZihjJiZjLk1hdGg9PU1hdGgpcmV0dXJuIGN9dGhyb3cgRXJyb3IoImEiKTt9LGRhPWNhKHRoaXMpLHQ9ZnVuY3Rpb24oYSxiKXtpZihiKWE6e3ZhciBjPWRhO2E9YS5zcGxpdCgiLiIpO2Zvcih2YXIgZT0wO2U8YS5sZW5ndGgtMTtlKyspe3ZhciBkPWFbZV07aWYoIShkIGluIGMpKWJyZWFrIGE7Yz1jW2RdfWE9YVthLmxlbmd0aC0xXTtlPWNbYV07Yj1iKGUpO2IhPWUmJmIhPW51bGwmJmJhKGMsYSx7Y29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwLHZhbHVlOmJ9KX19LGVhO2lmKHR5cGVvZiBPYmplY3Quc2V0UHJvdG90eXBlT2Y9PSJmdW5jdGlvbiIpZWE9T2JqZWN0LnNldFByb3RvdHlwZU9mO2Vsc2V7dmFyIGZhO2E6e3ZhciBoYT17YTohMH0saWE9e307dHJ5e2lhLl9fcHJvdG9fXz1oYTtmYT1pYS5hO2JyZWFrIGF9Y2F0Y2goYSl7fWZhPSExfWVhPWZhP2Z1bmN0aW9uKGEsYil7YS5fX3Byb3RvX189YjtpZihhLl9fcHJvdG9fXyE9PWIpdGhyb3cgbmV3IFR5cGVFcnJvcihhKyIgaXMgbm90IGV4dGVuc2libGUiKTtyZXR1cm4gYX06bnVsbH0KdmFyIHc9ZWEsamE9ZnVuY3Rpb24oYSl7dmFyIGI9MDtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gYjxhLmxlbmd0aD97ZG9uZTohMSx2YWx1ZTphW2IrK119Ontkb25lOiEwfX19LGthPWZ1bmN0aW9uKGEpe3ZhciBiPXR5cGVvZiBTeW1ib2whPSJ1bmRlZmluZWQiJiZTeW1ib2wuaXRlcmF0b3ImJmFbU3ltYm9sLml0ZXJhdG9yXTtpZihiKXJldHVybiBiLmNhbGwoYSk7aWYodHlwZW9mIGEubGVuZ3RoPT0ibnVtYmVyIilyZXR1cm57bmV4dDpqYShhKX07dGhyb3cgRXJyb3IoImJgIitTdHJpbmcoYSkpO307dCgiUmVmbGVjdC5zZXRQcm90b3R5cGVPZiIsZnVuY3Rpb24oYSl7cmV0dXJuIGE/YTp3P2Z1bmN0aW9uKGIsYyl7dHJ5e3JldHVybiB3KGIsYyksITB9Y2F0Y2goZSl7cmV0dXJuITF9fTpudWxsfSk7dCgiU3ltYm9sIixmdW5jdGlvbihhKXtpZihhKXJldHVybiBhO3ZhciBiPWZ1bmN0aW9uKGYsZyl7dGhpcy5nPWY7YmEodGhpcywiZGVzY3JpcHRpb24iLHtjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITAsdmFsdWU6Z30pfTtiLnByb3RvdHlwZS50b1N0cmluZz1mdW5jdGlvbigpe3JldHVybiB0aGlzLmd9O3ZhciBjPSJqc2NvbXBfc3ltYm9sXyIrKE1hdGgucmFuZG9tKCkqMUU5Pj4+MCkrIl8iLGU9MCxkPWZ1bmN0aW9uKGYpe2lmKHRoaXMgaW5zdGFuY2VvZiBkKXRocm93IG5ldyBUeXBlRXJyb3IoIlN5bWJvbCBpcyBub3QgYSBjb25zdHJ1Y3RvciIpO3JldHVybiBuZXcgYihjKyhmfHwiIikrIl8iK2UrKyxmKX07cmV0dXJuIGR9KTt0KCJPYmplY3Quc2V0UHJvdG90eXBlT2YiLGZ1bmN0aW9uKGEpe3JldHVybiBhfHx3fSk7dmFyIGxhPXR5cGVvZiBPYmplY3QuYXNzaWduPT0iZnVuY3Rpb24iP09iamVjdC5hc3NpZ246ZnVuY3Rpb24oYSxiKXtpZihhPT1udWxsKXRocm93IG5ldyBUeXBlRXJyb3IoIk5vIG51bGxpc2ggYXJnIik7YT1PYmplY3QoYSk7Zm9yKHZhciBjPTE7Yzxhcmd1bWVudHMubGVuZ3RoO2MrKyl7dmFyIGU9YXJndW1lbnRzW2NdO2lmKGUpZm9yKHZhciBkIGluIGUpT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGUsZCkmJihhW2RdPWVbZF0pfXJldHVybiBhfTt0KCJPYmplY3QuYXNzaWduIixmdW5jdGlvbihhKXtyZXR1cm4gYXx8bGF9KTt0KCJOdW1iZXIuaXNGaW5pdGUiLGZ1bmN0aW9uKGEpe3JldHVybiBhP2E6ZnVuY3Rpb24oYil7cmV0dXJuIHR5cGVvZiBiIT09Im51bWJlciI/ITE6IWlzTmFOKGIpJiZiIT09SW5maW5pdHkmJmIhPT0tSW5maW5pdHl9fSk7dCgiTnVtYmVyLk1BWF9TQUZFX0lOVEVHRVIiLGZ1bmN0aW9uKCl7cmV0dXJuIDkwMDcxOTkyNTQ3NDA5OTF9KTt0KCJOdW1iZXIuTUlOX1NBRkVfSU5URUdFUiIsZnVuY3Rpb24oKXtyZXR1cm4tOTAwNzE5OTI1NDc0MDk5MX0pO3QoIk51bWJlci5pc0ludGVnZXIiLGZ1bmN0aW9uKGEpe3JldHVybiBhP2E6ZnVuY3Rpb24oYil7cmV0dXJuIE51bWJlci5pc0Zpbml0ZShiKT9iPT09TWF0aC5mbG9vcihiKTohMX19KTt0KCJOdW1iZXIuaXNTYWZlSW50ZWdlciIsZnVuY3Rpb24oYSl7cmV0dXJuIGE/YTpmdW5jdGlvbihiKXtyZXR1cm4gTnVtYmVyLmlzSW50ZWdlcihiKSYmTWF0aC5hYnMoYik8PU51bWJlci5NQVhfU0FGRV9JTlRFR0VSfX0pO3QoIk51bWJlci5pc05hTiIsZnVuY3Rpb24oYSl7cmV0dXJuIGE/YTpmdW5jdGlvbihiKXtyZXR1cm4gdHlwZW9mIGI9PT0ibnVtYmVyIiYmaXNOYU4oYil9fSk7CnZhciB4PXRoaXN8fHNlbGYsbWE9ZnVuY3Rpb24oYSxiKXthOnt2YXIgYz1bIkNMT1NVUkVfRkxBR1MiXTtmb3IodmFyIGU9eCxkPTA7ZDxjLmxlbmd0aDtkKyspaWYoZT1lW2NbZF1dLGU9PW51bGwpe2M9bnVsbDticmVhayBhfWM9ZX1hPWMmJmNbYV07cmV0dXJuIGEhPW51bGw/YTpifSxuYT1mdW5jdGlvbihhKXtyZXR1cm4gYX07ZnVuY3Rpb24geSgpe3Rocm93IEVycm9yKCJjIik7fWZ1bmN0aW9uIG9hKGEsYil7Yj1TdHJpbmcuZnJvbUNoYXJDb2RlLmFwcGx5KG51bGwsYik7cmV0dXJuIGE9PW51bGw/YjphK2J9dmFyIHBhPXZvaWQgMCxxYSxyYT10eXBlb2YgVGV4dERlY29kZXIhPT0idW5kZWZpbmVkIjtmdW5jdGlvbiBzYShhKXt4LnNldFRpbWVvdXQoZnVuY3Rpb24oKXt0aHJvdyBhO30sMCl9O3ZhciB0YT1TdHJpbmcucHJvdG90eXBlLnRyaW0/ZnVuY3Rpb24oYSl7cmV0dXJuIGEudHJpbSgpfTpmdW5jdGlvbihhKXtyZXR1cm4vXltcc1x4YTBdKihbXHNcU10qPylbXHNceGEwXSokLy5leGVjKGEpWzFdfTt2YXIgdWE9bWEoNjEwNDAxMzAxLCExKSx2YT1tYSg3NDg0MDIxNDcsITApO2Z1bmN0aW9uIHdhKCl7dmFyIGE9eC5uYXZpZ2F0b3I7cmV0dXJuIGEmJihhPWEudXNlckFnZW50KT9hOiIifXZhciB4YSx5YT14Lm5hdmlnYXRvcjt4YT15YT95YS51c2VyQWdlbnREYXRhfHxudWxsOm51bGw7dmFyIHphPUFycmF5LnByb3RvdHlwZS5pbmRleE9mP2Z1bmN0aW9uKGEsYil7cmV0dXJuIEFycmF5LnByb3RvdHlwZS5pbmRleE9mLmNhbGwoYSxiLHZvaWQgMCl9OmZ1bmN0aW9uKGEsYil7aWYodHlwZW9mIGE9PT0ic3RyaW5nIilyZXR1cm4gdHlwZW9mIGIhPT0ic3RyaW5nInx8Yi5sZW5ndGghPTE/LTE6YS5pbmRleE9mKGIsMCk7Zm9yKHZhciBjPTA7YzxhLmxlbmd0aDtjKyspaWYoYyBpbiBhJiZhW2NdPT09YilyZXR1cm4gYztyZXR1cm4tMX0sQWE9QXJyYXkucHJvdG90eXBlLmZvckVhY2g/ZnVuY3Rpb24oYSxiLGMpe0FycmF5LnByb3RvdHlwZS5mb3JFYWNoLmNhbGwoYSxiLGMpfTpmdW5jdGlvbihhLGIsYyl7Zm9yKHZhciBlPWEubGVuZ3RoLGQ9dHlwZW9mIGE9PT0ic3RyaW5nIj9hLnNwbGl0KCIiKTphLGY9MDtmPGU7ZisrKWYgaW4gZCYmYi5jYWxsKGMsZFtmXSxmLGEpfTt2YXIgQmE9e30sej1udWxsO2Z1bmN0aW9uIENhKGEpe3ZhciBiPVtdO0RhKGEsZnVuY3Rpb24oYyl7Yi5wdXNoKGMpfSk7cmV0dXJuIGJ9ZnVuY3Rpb24gRWEoYSl7dmFyIGI9YS5sZW5ndGgsYz1iKjMvNDtjJTM/Yz1NYXRoLmZsb29yKGMpOiI9LiIuaW5kZXhPZihhW2ItMV0pIT0tMSYmKGM9Ij0uIi5pbmRleE9mKGFbYi0yXSkhPS0xP2MtMjpjLTEpO3ZhciBlPW5ldyBVaW50OEFycmF5KGMpLGQ9MDtEYShhLGZ1bmN0aW9uKGYpe2VbZCsrXT1mfSk7cmV0dXJuIGQhPT1jP2Uuc3ViYXJyYXkoMCxkKTplfQpmdW5jdGlvbiBEYShhLGIpe2Z1bmN0aW9uIGMobSl7Zm9yKDtlPGEubGVuZ3RoOyl7dmFyIGs9YS5jaGFyQXQoZSsrKSxsPXpba107aWYobCE9bnVsbClyZXR1cm4gbDtpZighL15bXHNceGEwXSokLy50ZXN0KGspKXRocm93IEVycm9yKCJkYCIrayk7fXJldHVybiBtfUZhKCk7Zm9yKHZhciBlPTA7Oyl7dmFyIGQ9YygtMSksZj1jKDApLGc9Yyg2NCksaD1jKDY0KTtpZihoPT09NjQmJmQ9PT0tMSlicmVhaztiKGQ8PDJ8Zj4+NCk7ZyE9NjQmJihiKGY8PDQmMjQwfGc+PjIpLGghPTY0JiZiKGc8PDYmMTkyfGgpKX19CmZ1bmN0aW9uIEZhKCl7aWYoIXope3o9e307Zm9yKHZhciBhPSJBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWmFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6MDEyMzQ1Njc4OSIuc3BsaXQoIiIpLGI9WyIrLz0iLCIrLyIsIi1fPSIsIi1fLiIsIi1fIl0sYz0wO2M8NTtjKyspe3ZhciBlPWEuY29uY2F0KGJbY10uc3BsaXQoIiIpKTtCYVtjXT1lO2Zvcih2YXIgZD0wO2Q8ZS5sZW5ndGg7ZCsrKXt2YXIgZj1lW2RdO3pbZl09PT12b2lkIDAmJih6W2ZdPWQpfX19fTt2YXIgR2E9dHlwZW9mIFVpbnQ4QXJyYXkhPT0idW5kZWZpbmVkIixIYT0hKHVhJiZ4YSYmeGEuYnJhbmRzLmxlbmd0aD4wPzA6d2EoKS5pbmRleE9mKCJUcmlkZW50IikhPS0xfHx3YSgpLmluZGV4T2YoIk1TSUUiKSE9LTEpJiZ0eXBlb2YgYnRvYT09PSJmdW5jdGlvbiIsSWE9L1stXy5dL2csSmE9eyItIjoiKyIsXzoiLyIsIi4iOiI9In07ZnVuY3Rpb24gS2EoYSl7cmV0dXJuIEphW2FdfHwiIn1mdW5jdGlvbiBMYShhKXtpZighSGEpcmV0dXJuIEVhKGEpO2E9SWEudGVzdChhKT9hLnJlcGxhY2UoSWEsS2EpOmE7YT1hdG9iKGEpO2Zvcih2YXIgYj1uZXcgVWludDhBcnJheShhLmxlbmd0aCksYz0wO2M8YS5sZW5ndGg7YysrKWJbY109YS5jaGFyQ29kZUF0KGMpO3JldHVybiBifXZhciBBPXt9O3ZhciBCPWZ1bmN0aW9uKGEsYil7aWYoYiE9PUEpdGhyb3cgRXJyb3IoImYiKTt0aGlzLmc9YTtpZihhIT1udWxsJiZhLmxlbmd0aD09PTApdGhyb3cgRXJyb3IoImUiKTt9LE1hO3ZhciBOYT12b2lkIDA7ZnVuY3Rpb24gT2EoYSxiKXtpZihhIT1udWxsKXt2YXIgYzt2YXIgZT0oYz1OYSkhPW51bGw/YzpOYT17fTtjPWVbYV18fDA7Yz49Ynx8KGVbYV09YysxLGE9RXJyb3IoKSxhLl9fY2xvc3VyZV9fZXJyb3JfX2NvbnRleHRfXzk4NDM4Mnx8KGEuX19jbG9zdXJlX19lcnJvcl9fY29udGV4dF9fOTg0MzgyPXt9KSxhLl9fY2xvc3VyZV9fZXJyb3JfX2NvbnRleHRfXzk4NDM4Mi5zZXZlcml0eT0iaW5jaWRlbnQiLHNhKGEpKX19O2Z1bmN0aW9uIFBhKCl7cmV0dXJuIHR5cGVvZiBCaWdJbnQ9PT0iZnVuY3Rpb24ifTt2YXIgUWE9dHlwZW9mIFN5bWJvbD09PSJmdW5jdGlvbiImJnR5cGVvZiBTeW1ib2woKT09PSJzeW1ib2wiO2Z1bmN0aW9uIEMoYSxiLGMpe3JldHVybiB0eXBlb2YgU3ltYm9sPT09ImZ1bmN0aW9uIiYmdHlwZW9mIFN5bWJvbCgpPT09InN5bWJvbCI/KGM9PT12b2lkIDA/MDpjKSYmU3ltYm9sLmZvciYmYT9TeW1ib2wuZm9yKGEpOmEhPW51bGw/U3ltYm9sKGEpOlN5bWJvbCgpOmJ9dmFyIFJhPUMoImphcyIsdm9pZCAwLCEwKSxEPUModm9pZCAwLFN5bWJvbCgpKSxTYT1DKHZvaWQgMCwiMHVicyIpLFRhPUModm9pZCAwLCIwYWN0ayIpLFVhPUMoIm1fbSIsInZhIiwhMCk7dmFyIFZhPXtuYTp7dmFsdWU6MCxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITAsZW51bWVyYWJsZTohMX19LFdhPU9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzLEU9UWE/UmE6Im5hIjtmdW5jdGlvbiBYYShhLGIpe1FhfHxFIGluIGF8fFdhKGEsVmEpO2FbRV18PWJ9ZnVuY3Rpb24gWWEoYSxiKXtRYXx8RSBpbiBhfHxXYShhLFZhKTthW0VdPWJ9O3ZhciBaYT17fTtmdW5jdGlvbiAkYShhLGIpe3JldHVybiBiPT09dm9pZCAwP2EuTCE9PUYmJiEhKDImKGEuQVtFXXwwKSk6ISEoMiZiKSYmYS5MIT09Rn12YXIgRj17fTtmdW5jdGlvbiBhYihhLGIsYyl7dmFyIGU9YiYxMjg/MDotMSxkPWEubGVuZ3RoLGY7aWYoZj0hIWQpZj1hW2QtMV0sZj1mIT1udWxsJiZ0eXBlb2YgZj09PSJvYmplY3QiJiZmLmNvbnN0cnVjdG9yPT09T2JqZWN0O3ZhciBnPWQrKGY/LTE6MCk7Zm9yKGI9YiYxMjg/MTowO2I8ZztiKyspYyhiLWUsYVtiXSk7aWYoZil7YT1hW2QtMV07Zm9yKHZhciBoIGluIGEpIWlzTmFOKGgpJiZjKCtoLGFbaF0pfX12YXIgYmI9e307ZnVuY3Rpb24gY2IoYSl7YS51YT0hMDtyZXR1cm4gYX07dmFyIGRiPWNiKGZ1bmN0aW9uKGEpe3JldHVybiB0eXBlb2YgYT09PSJudW1iZXIifSksZWI9Y2IoZnVuY3Rpb24oYSl7cmV0dXJuIHR5cGVvZiBhPT09InN0cmluZyJ9KSxmYj1jYihmdW5jdGlvbihhKXtyZXR1cm4gdHlwZW9mIGE9PT0iYm9vbGVhbiJ9KTt2YXIgZ2I9dHlwZW9mIHguQmlnSW50PT09ImZ1bmN0aW9uIiYmdHlwZW9mIHguQmlnSW50KDApPT09ImJpZ2ludCI7ZnVuY3Rpb24gaGIoYSl7dmFyIGI9YTtpZihlYihiKSl7aWYoIS9eXHMqKD86LT9bMS05XVxkKnwwKT9ccyokLy50ZXN0KGIpKXRocm93IEVycm9yKFN0cmluZyhiKSk7fWVsc2UgaWYoZGIoYikmJiFOdW1iZXIuaXNTYWZlSW50ZWdlcihiKSl0aHJvdyBFcnJvcihTdHJpbmcoYikpO3JldHVybiBnYj9CaWdJbnQoYSk6YT1mYihhKT9hPyIxIjoiMCI6ZWIoYSk/YS50cmltKCl8fCIwIjpTdHJpbmcoYSl9dmFyIG5iPWNiKGZ1bmN0aW9uKGEpe3JldHVybiBnYj9hPj1pYiYmYTw9amI6YVswXT09PSItIj9rYihhLGxiKTprYihhLG1iKX0pLGxiPU51bWJlci5NSU5fU0FGRV9JTlRFR0VSLnRvU3RyaW5nKCksaWI9Z2I/QmlnSW50KE51bWJlci5NSU5fU0FGRV9JTlRFR0VSKTp2b2lkIDAsbWI9TnVtYmVyLk1BWF9TQUZFX0lOVEVHRVIudG9TdHJpbmcoKSxqYj1nYj9CaWdJbnQoTnVtYmVyLk1BWF9TQUZFX0lOVEVHRVIpOnZvaWQgMDtmdW5jdGlvbiBrYihhLGIpe2lmKGEubGVuZ3RoPmIubGVuZ3RoKXJldHVybiExO2lmKGEubGVuZ3RoPGIubGVuZ3RofHxhPT09YilyZXR1cm4hMDtmb3IodmFyIGM9MDtjPGEubGVuZ3RoO2MrKyl7dmFyIGU9YVtjXSxkPWJbY107aWYoZT5kKXJldHVybiExO2lmKGU8ZClyZXR1cm4hMH19O3ZhciBvYj10eXBlb2YgVWludDhBcnJheS5wcm90b3R5cGUuc2xpY2U9PT0iZnVuY3Rpb24iO2Z1bmN0aW9uIHBiKGEsYil7Yj4+Pj0wO2E+Pj49MDtpZihiPD0yMDk3MTUxKXZhciBjPSIiKyg0Mjk0OTY3Mjk2KmIrYSk7ZWxzZSBQYSgpP2M9IiIrKEJpZ0ludChiKTw8QmlnSW50KDMyKXxCaWdJbnQoYSkpOihjPShhPj4+MjR8Yjw8OCkmMTY3NzcyMTUsYj1iPj4xNiY2NTUzNSxhPShhJjE2Nzc3MjE1KStjKjY3NzcyMTYrYio2NzEwNjU2LGMrPWIqODE0NzQ5NyxiKj0yLGE+PTFFNyYmKGMrPWEvMUU3Pj4+MCxhJT0xRTcpLGM+PTFFNyYmKGIrPWMvMUU3Pj4+MCxjJT0xRTcpLGM9YitxYihjKStxYihhKSk7cmV0dXJuIGN9ZnVuY3Rpb24gcWIoYSl7YT1TdHJpbmcoYSk7cmV0dXJuIjAwMDAwMDAiLnNsaWNlKGEubGVuZ3RoKSthfTt2YXIgcmI9TnVtYmVyLmlzRmluaXRlO2Z1bmN0aW9uIHNiKGEpe3JldHVybiBhfTtmdW5jdGlvbiB0YihhKXt2YXIgYj1uYShEKTtyZXR1cm4gYj9hW2JdOnZvaWQgMH12YXIgdWI9ZnVuY3Rpb24oKXt9LHZiPWZ1bmN0aW9uKGEsYil7Zm9yKHZhciBjIGluIGEpIWlzTmFOKGMpJiZiKGEsK2MsYVtjXSl9LHdiPWZ1bmN0aW9uKGEpe3ZhciBiPW5ldyB1Yjt2YihhLGZ1bmN0aW9uKGMsZSxkKXtiW2VdPUFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGQpfSk7Yi5nPWEuZztyZXR1cm4gYn07ZnVuY3Rpb24geGIoYSxiKXtiPDEwMHx8T2EoU2EsMSl9O2Z1bmN0aW9uIHliKGEsYixjLGUpe3ZhciBkPWUhPT12b2lkIDA7ZT0hIWU7dmFyIGY9bmEoRCksZzshZCYmUWEmJmYmJihnPWFbZl0pJiZ2YihnLHhiKTtmPVtdO3ZhciBoPWEubGVuZ3RoO2c9NDI5NDk2NzI5NTt2YXIgbT0hMSxrPSEhKGImNjQpLGw9az9iJjEyOD8wOi0xOnZvaWQgMDtpZighKGImMSkpe3ZhciBwPWgmJmFbaC0xXTtwIT1udWxsJiZ0eXBlb2YgcD09PSJvYmplY3QiJiZwLmNvbnN0cnVjdG9yPT09T2JqZWN0PyhoLS0sZz1oKTpwPXZvaWQgMDtpZihrJiYhKGImMTI4KSYmIWQpe209ITA7dmFyIG47Zz0oKG49emIpIT1udWxsP246c2IpKGctbCxsLGEscCx2b2lkIDApK2x9fWI9dm9pZCAwO2ZvcihuPTA7bjxoO24rKyl7dmFyIHE9YVtuXTtpZihxIT1udWxsJiYocT1jKHEsZSkpIT1udWxsKWlmKGsmJm4+PWcpe3ZhciB1PW4tbCxyPXZvaWQgMDsoKHI9YikhPW51bGw/cjpiPXt9KVt1XT1xfWVsc2UgZltuXT1xfWlmKHApZm9yKHZhciB2IGluIHApaD1wW3ZdLGghPQpudWxsJiYoaD1jKGgsZSkpIT1udWxsJiYobj0rdixxPXZvaWQgMCxrJiYhTnVtYmVyLmlzTmFOKG4pJiYocT1uK2wpPGc/ZltxXT1oOihuPXZvaWQgMCwoKG49YikhPW51bGw/bjpiPXt9KVt2XT1oKSk7YiYmKG0/Zi5wdXNoKGIpOmZbZ109Yik7ZCYmbmEoRCkmJihhPXRiKGEpKSYmYSBpbnN0YW5jZW9mIHViJiYoZltEXT13YihhKSk7cmV0dXJuIGZ9CmZ1bmN0aW9uIEFiKGEpe3N3aXRjaCh0eXBlb2YgYSl7Y2FzZSAibnVtYmVyIjpyZXR1cm4gTnVtYmVyLmlzRmluaXRlKGEpP2E6IiIrYTtjYXNlICJiaWdpbnQiOnJldHVybiBuYihhKT9OdW1iZXIoYSk6IiIrYTtjYXNlICJib29sZWFuIjpyZXR1cm4gYT8xOjA7Y2FzZSAib2JqZWN0IjppZihBcnJheS5pc0FycmF5KGEpKXt2YXIgYj1hW0VdfDA7cmV0dXJuIGEubGVuZ3RoPT09MCYmYiYxP3ZvaWQgMDp5YihhLGIsQWIpfWlmKGEhPW51bGwmJmFbVWFdPT09WmEpcmV0dXJuIEJiKGEpO2lmKGEgaW5zdGFuY2VvZiBCKXtiPWEuZztpZihiPT1udWxsKWE9IiI7ZWxzZSBpZih0eXBlb2YgYj09PSJzdHJpbmciKWE9YjtlbHNle2lmKEhhKXtmb3IodmFyIGM9IiIsZT0wLGQ9Yi5sZW5ndGgtMTAyNDA7ZTxkOyljKz1TdHJpbmcuZnJvbUNoYXJDb2RlLmFwcGx5KG51bGwsYi5zdWJhcnJheShlLGUrPTEwMjQwKSk7Yys9U3RyaW5nLmZyb21DaGFyQ29kZS5hcHBseShudWxsLGU/Yi5zdWJhcnJheShlKTpiKTtiPWJ0b2EoYyl9ZWxzZXtjPT09dm9pZCAwJiYoYz0wKTtGYSgpO2M9QmFbY107ZT1BcnJheShNYXRoLmZsb29yKGIubGVuZ3RoLzMpKTtkPWNbNjRdfHwiIjtmb3IodmFyIGY9MCxnPTA7ZjxiLmxlbmd0aC0yO2YrPTMpe3ZhciBoPWJbZl0sbT1iW2YrMV0saz1iW2YrMl0sbD1jW2g+PjJdO2g9Y1soaCYzKTw8NHxtPj40XTttPWNbKG0mMTUpPDwyfGs+PjZdO2s9Y1trJjYzXTtlW2crK109IiIrbCtoK20ra31sPTA7az1kO3N3aXRjaChiLmxlbmd0aC1mKXtjYXNlIDI6bD1iW2YrMV0saz1jWyhsJjE1KTw8Ml18fGQ7Y2FzZSAxOmI9YltmXSxlW2ddPSIiK2NbYj4+Ml0rY1soYiYzKTw8NHxsPj40XStrK2R9Yj1lLmpvaW4oIiIpfWE9YS5nPWJ9cmV0dXJuIGF9cmV0dXJufXJldHVybiBhfXZhciB6YjtmdW5jdGlvbiBCYihhKXthPWEuQTtyZXR1cm4geWIoYSxhW0VdfDAsQWIpfTt2YXIgQ2IsRGI7ZnVuY3Rpb24gRWIoYSl7c3dpdGNoKHR5cGVvZiBhKXtjYXNlICJib29sZWFuIjpyZXR1cm4gQ2J8fChDYj1bMCx2b2lkIDAsITBdKTtjYXNlICJudW1iZXIiOnJldHVybiBhPjA/dm9pZCAwOmE9PT0wP0RifHwoRGI9WzAsdm9pZCAwXSk6Wy1hLHZvaWQgMF07Y2FzZSAic3RyaW5nIjpyZXR1cm5bMCxhXTtjYXNlICJvYmplY3QiOnJldHVybiBhfX1mdW5jdGlvbiBGYihhLGIpe3JldHVybiBHYihhLGJbMF0sYlsxXSl9CmZ1bmN0aW9uIEdiKGEsYixjLGUpe2U9ZT09PXZvaWQgMD8wOmU7aWYoYT09bnVsbCl7dmFyIGQ9MzI7Yz8oYT1bY10sZHw9MTI4KTphPVtdO2ImJihkPWQmLTE2NzYwODMzfChiJjEwMjMpPDwxNCl9ZWxzZXtpZighQXJyYXkuaXNBcnJheShhKSl0aHJvdyBFcnJvcigiZyIpO2Q9YVtFXXwwO2lmKHZhJiYxJmQpdGhyb3cgRXJyb3IoImgiKTsyMDQ4JmQmJiEoMiZkKSYmSGIoKTtpZihkJjI1Nil0aHJvdyBFcnJvcigiaSIpO2lmKGQmNjQpcmV0dXJuKGR8ZSkhPT1kJiZZYShhLGR8ZSksYTtpZihjJiYoZHw9MTI4LGMhPT1hWzBdKSl0aHJvdyBFcnJvcigiaiIpO2E6e2M9YTtkfD02NDt2YXIgZj1jLmxlbmd0aDtpZihmKXt2YXIgZz1mLTEsaD1jW2ddO2lmKGghPW51bGwmJnR5cGVvZiBoPT09Im9iamVjdCImJmguY29uc3RydWN0b3I9PT1PYmplY3Qpe2I9ZCYxMjg/MDotMTtnLT1iO2lmKGc+PTEwMjQpdGhyb3cgRXJyb3IoImwiKTtmb3IodmFyIG0gaW4gaClmPSttLGY8ZyYmKGNbZisKYl09aFttXSxkZWxldGUgaFttXSk7ZD1kJi0xNjc2MDgzM3woZyYxMDIzKTw8MTQ7YnJlYWsgYX19aWYoYil7bT1NYXRoLm1heChiLGYtKGQmMTI4PzA6LTEpKTtpZihtPjEwMjQpdGhyb3cgRXJyb3IoIm0iKTtkPWQmLTE2NzYwODMzfChtJjEwMjMpPDwxNH19fVlhKGEsZHw2NHxlKTtyZXR1cm4gYX1mdW5jdGlvbiBIYigpe2lmKHZhKXRocm93IEVycm9yKCJrIik7T2EoVGEsNSl9O2Z1bmN0aW9uIEliKGEsYil7aWYodHlwZW9mIGEhPT0ib2JqZWN0IilyZXR1cm4gYTtpZihBcnJheS5pc0FycmF5KGEpKXt2YXIgYz1hW0VdfDA7YS5sZW5ndGg9PT0wJiZjJjE/YT12b2lkIDA6YyYyfHwoIWJ8fDQwOTYmY3x8MTYmYz9hPUpiKGEsYywhMSxiJiYhKGMmMTYpKTooWGEoYSwzNCksYyY0JiZPYmplY3QuZnJlZXplKGEpKSk7cmV0dXJuIGF9aWYoYSE9bnVsbCYmYVtVYV09PT1aYSl7Yj1hLkE7Yz1iW0VdfDA7aWYoISRhKGEsYykpe2lmKGMmMil2YXIgZT0hMDtlbHNlIGMmMzImJiEoYyY0MDk2KT8oWWEoYixjfDIpLGEuTD1GLGU9ITApOmU9ITE7ZT8oYT1uZXcgYS5jb25zdHJ1Y3RvcihiKSxhLmphPUYpOmE9SmIoYixjKX1yZXR1cm4gYX1pZihhIGluc3RhbmNlb2YgQilyZXR1cm4gYX0KZnVuY3Rpb24gSmIoYSxiLGMsZSl7ZSE9bnVsbHx8KGU9ISEoMzQmYikpO2E9eWIoYSxiLEliLGUpO2U9MzI7YyYmKGV8PTIpO2I9YiYxNjc2OTIxN3xlO1lhKGEsYik7cmV0dXJuIGF9O3ZhciBLYj17fSxMYj1mdW5jdGlvbihhLGIsYyl7aWYoYj09PS0xKXJldHVybiBudWxsO3ZhciBlPWIrKGM/MDotMSksZD1hLmxlbmd0aC0xO2lmKCEoZDwxKyhjPzA6LTEpKSl7aWYoZT49ZClpZihhPWFbZF0sYSE9bnVsbCYmdHlwZW9mIGE9PT0ib2JqZWN0IiYmYS5jb25zdHJ1Y3Rvcj09PU9iamVjdCliPWFbYl07ZWxzZSBpZihlPT09ZCliPWE7ZWxzZSByZXR1cm47ZWxzZSBiPWFbZV07cmV0dXJuIGJ9fTtmdW5jdGlvbiBNYihhLGIsYyxlLGQpe3ZhciBmPWMrKGQ/MDotMSksZz1hLmxlbmd0aC0xO2lmKGc+PTErKGQ/MDotMSkmJmY+PWcpe3ZhciBoPWFbZ107aWYoaCE9bnVsbCYmdHlwZW9mIGg9PT0ib2JqZWN0IiYmaC5jb25zdHJ1Y3Rvcj09PU9iamVjdClyZXR1cm4gaFtjXT1lLGJ9aWYoZjw9ZylyZXR1cm4gYVtmXT1lLGI7aWYoZSE9PXZvaWQgMCl7dmFyIG07Zz0oKG09YikhPW51bGw/bTpiPWFbRV18MCk+PjE0JjEwMjN8fDUzNjg3MDkxMjtjPj1nP2UhPW51bGwmJihmPXt9LGFbZysoZD8wOi0xKV09KGZbY109ZSxmKSk6YVtmXT1lfXJldHVybiBifQp2YXIgVWI9ZnVuY3Rpb24oYSxiLGMpe3ZhciBlPWFbRV18MCxkPWUmMTI4P2JiOnZvaWQgMCxmPUxiKGEsYyxkKTtpZihmIT1udWxsJiZmW1VhXT09PVphKXtpZighJGEoZikpcmV0dXJuIGYuTD09PUYmJihhPWYuQSxhPUpiKGEsYVtFXXwwKSxYYShhLDIwNDgpLGYuQT1hLGYuTD12b2lkIDAsZi5qYT12b2lkIDApLGYuQTt2YXIgZz1mLkF9ZWxzZSBBcnJheS5pc0FycmF5KGYpJiYoZz1mKTtpZihnKXt2YXIgaD1nW0VdfDA7aCYyJiYoZz1KYihnLGgpKX1nPUZiKGcsYik7ZyE9PWYmJk1iKGEsZSxjLGcsZCk7cmV0dXJuIGd9O3ZhciBHPWZ1bmN0aW9uKGEsYixjKXt0aGlzLmJ1ZmZlcj1hO2lmKGMmJiFiKXRocm93IEVycm9yKCk7dGhpcy5nPWJ9O2Z1bmN0aW9uIFZiKGEsYil7aWYodHlwZW9mIGE9PT0ic3RyaW5nIilyZXR1cm4gbmV3IEcoTGEoYSksYik7aWYoQXJyYXkuaXNBcnJheShhKSlyZXR1cm4gbmV3IEcobmV3IFVpbnQ4QXJyYXkoYSksYik7aWYoYS5jb25zdHJ1Y3Rvcj09PVVpbnQ4QXJyYXkpcmV0dXJuIG5ldyBHKGEsITEpO2lmKGEuY29uc3RydWN0b3I9PT1BcnJheUJ1ZmZlcilyZXR1cm4gYT1uZXcgVWludDhBcnJheShhKSxuZXcgRyhhLCExKTtpZihhLmNvbnN0cnVjdG9yPT09Qil7aWYoQSE9PUEpdGhyb3cgRXJyb3IoImYiKTtiPWEuZztiPWI9PW51bGx8fEdhJiZiIT1udWxsJiZiIGluc3RhbmNlb2YgVWludDhBcnJheT9iOnR5cGVvZiBiPT09InN0cmluZyI/TGEoYik6bnVsbDtiPShiPT1udWxsP2I6YS5nPWIpfHxuZXcgVWludDhBcnJheSgwKTtyZXR1cm4gbmV3IEcoYiwhMCxhKX1pZihhIGluc3RhbmNlb2YgVWludDhBcnJheSlyZXR1cm4gYT1hLmNvbnN0cnVjdG9yPT09VWludDhBcnJheT9hOm5ldyBVaW50OEFycmF5KGEuYnVmZmVyLGEuYnl0ZU9mZnNldCxhLmJ5dGVMZW5ndGgpLG5ldyBHKGEsITEpO3Rocm93IEVycm9yKCk7fTt2YXIgV2I9ZnVuY3Rpb24oYSxiLGMsZSl7dGhpcy5pPW51bGw7dGhpcy52PSExO3RoaXMuZz10aGlzLmo9dGhpcy5sPTA7dGhpcy5pbml0KGEsYixjLGUpfTtXYi5wcm90b3R5cGUuaW5pdD1mdW5jdGlvbihhLGIsYyxlKXt2YXIgZD1lPT09dm9pZCAwP3t9OmU7ZT1kLks9PT12b2lkIDA/ITE6ZC5LO2Q9ZC5OPT09dm9pZCAwPyExOmQuTjt0aGlzLks9ZTt0aGlzLk49ZDthJiYoYT1WYihhLHRoaXMuTiksdGhpcy5pPWEuYnVmZmVyLHRoaXMudj1hLmcsdGhpcy5sPWJ8fDAsdGhpcy5qPWMhPT12b2lkIDA/dGhpcy5sK2M6dGhpcy5pLmxlbmd0aCx0aGlzLmc9dGhpcy5sKX07V2IucHJvdG90eXBlLmNsZWFyPWZ1bmN0aW9uKCl7dGhpcy5pPW51bGw7dGhpcy52PSExO3RoaXMuZz10aGlzLmo9dGhpcy5sPTA7dGhpcy5LPSExfTt2YXIgSD1mdW5jdGlvbihhLGIpe2EuZz1iO2lmKGI+YS5qKXRocm93IEVycm9yKCk7fSxJPWZ1bmN0aW9uKGEpe3ZhciBiPWEuaSxjPWEuZyxlPWJbYysrXSxkPWUmMTI3O2lmKGUmMTI4JiYoZT1iW2MrK10sZHw9KGUmMTI3KTw8NyxlJjEyOCYmKGU9YltjKytdLGR8PShlJjEyNyk8PDE0LGUmMTI4JiYoZT1iW2MrK10sZHw9KGUmMTI3KTw8MjEsZSYxMjgmJihlPWJbYysrXSxkfD1lPDwyOCxlJjEyOCYmYltjKytdJjEyOCYmYltjKytdJjEyOCYmYltjKytdJjEyOCYmYltjKytdJjEyOCYmYltjKytdJjEyOCkpKSkpdGhyb3cgRXJyb3IoKTtIKGEsYyk7cmV0dXJuIGR9LFhiPWZ1bmN0aW9uKGEsYil7aWYoYjwwKXRocm93IEVycm9yKCk7dmFyIGM9YS5nO2I9YytiO2lmKGI+YS5qKXRocm93IEVycm9yKCk7YS5nPWI7cmV0dXJuIGN9LFliPVtdO3ZhciBKPTAsJGI9ZnVuY3Rpb24oYSxiLGMsZSl7aWYoWWIubGVuZ3RoKXt2YXIgZD1ZYi5wb3AoKTtkLmluaXQoYSxiLGMsZSk7YT1kfWVsc2UgYT1uZXcgV2IoYSxiLGMsZSk7dGhpcy5nPWE7dGhpcy5sPXRoaXMuZy5nO3RoaXMuaT10aGlzLmo9LTE7WmIodGhpcyxlKX0sWmI9ZnVuY3Rpb24oYSxiKXtiPWI9PT12b2lkIDA/e306YjthLlY9Yi5WPT09dm9pZCAwPyExOmIuVn0sYmM9ZnVuY3Rpb24oYSxiLGMsZSl7aWYoYWMubGVuZ3RoKXt2YXIgZD1hYy5wb3AoKTtaYihkLGUpO2QuZy5pbml0KGEsYixjLGUpO3JldHVybiBkfXJldHVybiBuZXcgJGIoYSxiLGMsZSl9LGNjPWZ1bmN0aW9uKGEpe2EuZy5jbGVhcigpO2Euaj0tMTthLmk9LTE7YWMubGVuZ3RoPDEwMCYmYWMucHVzaChhKX0sZGM9ZnVuY3Rpb24oYSl7dmFyIGI9YS5nO2lmKGIuZz09Yi5qKXJldHVybiExO2EubD1hLmcuZzt2YXIgYz1JKGEuZyk+Pj4wO2I9Yz4+PjM7YyY9NztpZighKGM+PTAmJmM8PTUpKXRocm93IEVycm9yKCk7aWYoYjwxKXRocm93IEVycm9yKCk7YS5qPWI7YS5pPWM7cmV0dXJuITB9LGVjPWZ1bmN0aW9uKCl7aWYoSj49MTAwKXRocm93IG5ldyBTeW50YXhFcnJvcjtKKyt9LGZjPWZ1bmN0aW9uKGEpe3RyeXtzd2l0Y2goYS5pKXtjYXNlIDA6aWYoYS5pIT0wKWZjKGEpO2Vsc2UgYTp7dmFyIGI9YS5nLGM9Yi5nO2E9YysxMDtmb3IodmFyIGU9Yi5pO2M8YTspaWYoKGVbYysrXSYxMjgpPT09MCl7SChiLGMpO2JyZWFrIGF9dGhyb3cgRXJyb3IoKTt9YnJlYWs7Y2FzZSAxOnZhciBkPWEuZztIKGQsZC5nKzgpO2JyZWFrO2Nhc2UgMjppZihhLmkhPTIpZmMoYSk7ZWxzZXt2YXIgZj1JKGEuZyk+Pj4wLGc9YS5nO0goZyxnLmcrZil9YnJlYWs7Y2FzZSA1OnZhciBoPWEuZztIKGgsaC5nKzQpO2JyZWFrO2Nhc2UgMzplYygpO3ZhciBtPWEuajt0cnl7ZG97aWYoIWRjKGEpKXRocm93IEVycm9yKCk7aWYoYS5pPT00KXtpZihhLmohPW0pdGhyb3cgRXJyb3IoKTticmVha31mYyhhKX13aGlsZSgxKX1jYXRjaChrKXtpZihrIGluc3RhbmNlb2YKUmFuZ2VFcnJvcil0aHJvdyBuZXcgU3ludGF4RXJyb3I7dGhyb3cgazt9ZmluYWxseXtKPjAmJkotLX1icmVhaztkZWZhdWx0OnRocm93IEVycm9yKCk7fX1jYXRjaChrKXtpZihrIGluc3RhbmNlb2YgUmFuZ2VFcnJvcil0aHJvdyBuZXcgU3ludGF4RXJyb3I7dGhyb3cgazt9fSxoYz1mdW5jdGlvbihhLGIsYyl7dmFyIGU9YS5nLmosZD1JKGEuZyk+Pj4wO2Q9YS5nLmcrZDt2YXIgZj1kLWU7Zjw9MCYmKGEuZy5qPWQsYyhiLGEsdm9pZCAwLHZvaWQgMCx2b2lkIDApLGY9ZC1hLmcuZyk7aWYoZil0aHJvdyBFcnJvcigpO2EuZy5nPWQ7YS5nLmo9ZX0sYWM9W107ZnVuY3Rpb24gSygpe3ZhciBhPWZ1bmN0aW9uKCl7dGhyb3cgRXJyb3IoKTt9O09iamVjdC5zZXRQcm90b3R5cGVPZihhLGEucHJvdG90eXBlKTtyZXR1cm4gYX12YXIgaWM9SygpLGpjPUsoKSxrYz1LKCksbGM9SygpLG1jPUsoKTt2YXIgTD1mdW5jdGlvbihhLGIsYyl7dGhpcy5BPUdiKGEsYixjLDIwNDgpfTtMLnByb3RvdHlwZS50b0pTT049ZnVuY3Rpb24oKXt2YXIgYT1CYih0aGlzKTtyZXR1cm4gYX07TC5wcm90b3R5cGVbVWFdPVphO0wucHJvdG90eXBlLnRvU3RyaW5nPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuQS50b1N0cmluZygpfTt2YXIgbmM9ZnVuY3Rpb24oYSxiKXt0aGlzLmc9YTthPW5hKGljKTt0aGlzLmk9ISFhJiZiPT09YXx8ITF9O2Z1bmN0aW9uIG9jKGEpe3ZhciBiPWI9PT12b2lkIDA/aWM6YjtyZXR1cm4gbmV3IG5jKGEsYil9dmFyIHBjPW9jKGZ1bmN0aW9uKGEsYixjLGUsZCl7aWYoYS5pIT09MilyZXR1cm4hMTtoYyhhLFViKGIsZSxjKSxkKTtyZXR1cm4hMH0pLHFjPW9jKGZ1bmN0aW9uKGEsYixjLGUsZCl7aWYoYS5pIT09MilyZXR1cm4hMTtoYyhhLFViKGIsZSxjKSxkKTtyZXR1cm4hMH0pLHJjPVN5bWJvbCgpLHNjPVN5bWJvbCgpLHRjPVN5bWJvbCgpLHVjLHZjO2Z1bmN0aW9uIHdjKGEpe3ZhciBiPXhjLGM9eWMsZT1hW3JjXTtpZihlKXJldHVybiBlO2U9e307ZS5rYT1hO2UuVz1FYihhWzBdKTt2YXIgZD1hWzFdLGY9MTtkJiZkLmNvbnN0cnVjdG9yPT09T2JqZWN0JiYoZS5oYT1kLGQ9YVsrK2ZdLHR5cGVvZiBkPT09ImZ1bmN0aW9uIiYmKGUub2E9ITAsdWMhPW51bGx8fCh1Yz1kKSx2YyE9bnVsbHx8KHZjPWFbZisxXSksZD1hW2YrPTJdKSk7Zm9yKHZhciBnPXt9O2QmJkFycmF5LmlzQXJyYXkoZCkmJmQubGVuZ3RoJiZ0eXBlb2YgZFswXT09PSJudW1iZXIiJiZkWzBdPjA7KXtmb3IodmFyIGg9MDtoPGQubGVuZ3RoO2grKylnW2RbaF1dPWQ7ZD1hWysrZl19Zm9yKGg9MTtkIT09dm9pZCAwOyl7dHlwZW9mIGQ9PT0ibnVtYmVyIiYmKGgrPWQsZD1hWysrZl0pO3ZhciBtPXZvaWQgMDtpZihkIGluc3RhbmNlb2YgbmMpdmFyIGs9ZDtlbHNlIGs9cGMsZi0tO2Q9dm9pZCAwO2lmKChkPWspPT1udWxsPzA6ZC5pKXtkPWFbKytmXTttPWE7dmFyIGw9CmY7dHlwZW9mIGQ9PT0iZnVuY3Rpb24iJiYoZD1kKCksbVtsXT1kKTttPWR9ZD1hWysrZl07bD1oKzE7dHlwZW9mIGQ9PT0ibnVtYmVyIiYmZDwwJiYobC09ZCxkPWFbKytmXSk7Zm9yKDtoPGw7aCsrKXt2YXIgcD1nW2hdO20/YyhlLGgsayxtLHApOmIoZSxoLGsscCl9fXJldHVybiBhW3JjXT1lfTtmdW5jdGlvbiB4YyhhLGIsYyxlKXt2YXIgZD1jLmc7YVtiXT1lP2Z1bmN0aW9uKGYsZyxoKXtyZXR1cm4gZChmLGcsaCxlKX06ZH1mdW5jdGlvbiB5YyhhLGIsYyxlLGQpe3ZhciBmPWMuZyxnLGg7YVtiXT1mdW5jdGlvbihtLGssbCl7cmV0dXJuIGYobSxrLGwsaHx8KGg9d2MoZSkuVyksZ3x8KGc9emMoZSkpLGQpfX0KZnVuY3Rpb24gemMoYSl7dmFyIGI9YVtzY107aWYoYiE9bnVsbClyZXR1cm4gYjt2YXIgYz13YyhhKTtiPWMub2E/ZnVuY3Rpb24oZSxkKXtyZXR1cm4gdWMoZSxkLGMpfTpmdW5jdGlvbihlLGQpe2E6e2VjKCk7dHJ5e2Zvcig7ZGMoZCkmJmQuaSE9NDspe3ZhciBmPWQuaixnPWNbZl07aWYoZz09bnVsbCl7dmFyIGg9Yy5oYTtpZihoKXt2YXIgbT1oW2ZdO2lmKG0pe3ZhciBrPUFjKG0pO2shPW51bGwmJihnPWNbZl09ayl9fX1pZihnPT1udWxsfHwhZyhkLGUsZikpe3ZhciBsPWQscD1sLmw7ZmMobCk7dmFyIG49dm9pZCAwLHE9dm9pZCAwO2lmKGwuVil2YXIgdT12b2lkIDA7ZWxzZXt2YXIgcj1sLmcuZy1wO2wuZy5nPXA7dmFyIHY9bC5nO2lmKHI9PTApcT1NYXx8KE1hPW5ldyBCKG51bGwsQSkpO2Vsc2V7dmFyIFA9WGIodixyKTtpZih2LksmJnYudiluPXYuaS5zdWJhcnJheShQLFArcik7ZWxzZXt2YXIgTmI9di5pO2w9UCtyO249UD09PWw/bmV3IFVpbnQ4QXJyYXkoMCk6b2I/TmIuc2xpY2UoUCxsKTpuZXcgVWludDhBcnJheShOYi5zdWJhcnJheShQLGwpKX1xPW4ubGVuZ3RoPT0wP01hfHwoTWE9bmV3IEIobnVsbCxBKSk6bmV3IEIobixBKX11PXF9bD1uPXE9dm9pZCAwO3ZhciBPYj1lLFBiPWYsUWI9dTtRYiYmKChxPShuPShsPU9iW0RdKSE9bnVsbD9sOk9iW0RdPW5ldyB1YilbUGJdKSE9bnVsbD9xOm5bUGJdPVtdKS5wdXNoKFFiKX19dmFyIFJiPXRiKGUpO1JiJiYoUmIuZz1jLmthW3RjXSk7dmFyIFNiPSEwO2JyZWFrIGF9Y2F0Y2goVGIpe2lmKFRiIGluc3RhbmNlb2YgUmFuZ2VFcnJvcil0aHJvdyBuZXcgU3ludGF4RXJyb3I7dGhyb3cgVGI7fWZpbmFsbHl7Sj4wJiZKLS19U2I9dm9pZCAwfXJldHVybiBTYn07YVtzY109YjthW3RjXT1CYy5iaW5kKGEpO3JldHVybiBifQpmdW5jdGlvbiBCYyhhLGIsYyxlKXt2YXIgZD10aGlzW3JjXSxmPXRoaXNbc2NdLGc9RmIodm9pZCAwLGQuVyksaD10YihhKTtpZihoKXt2YXIgbT0hMSxrPWQuaGE7aWYoayl7ZD1mdW5jdGlvbih1LHIsdil7aWYodi5sZW5ndGghPT0wKWlmKGtbcl0pZm9yKHU9a2Eodikscj11Lm5leHQoKTshci5kb25lO3I9dS5uZXh0KCkpe3I9YmMoci52YWx1ZSk7dHJ5e209ITAsZihnLHIpfWZpbmFsbHl7Y2Mocil9fWVsc2UgZT09bnVsbHx8ZShhLHIsdil9O2lmKGI9PW51bGwpdmIoaCxkKTtlbHNlIGlmKGghPW51bGwpe3ZhciBsPWhbYl07bCYmZChoLGIsbCl9aWYobSl7dmFyIHA9YVtFXXwwO2lmKHAmMiYmcCYyMDQ4JiYoYz09bnVsbHx8IWMueGEpKXRocm93IEVycm9yKCk7dmFyIG49cCYxMjg/YmI6dm9pZCAwLHE9ZnVuY3Rpb24odSxyKXtpZihMYihhLHUsbikhPW51bGwpc3dpdGNoKGM9PW51bGw/dm9pZCAwOmMud2Epe2Nhc2UgMTpyZXR1cm47ZGVmYXVsdDp0aHJvdyBFcnJvcigpO31yIT0KbnVsbCYmKHA9TWIoYSxwLHUscixuKSk7ZGVsZXRlIGhbdV19O2I9PW51bGw/YWIoZyxnW0VdfDAsZnVuY3Rpb24odSxyKXtxKHUscil9KTpxKGIsTGIoZyxiLG4pKX19fX1mdW5jdGlvbiBBYyhhKXthPUFycmF5LmlzQXJyYXkoYSk/YVswXWluc3RhbmNlb2YgbmM/YTpbcWMsYV06W2Esdm9pZCAwXTt2YXIgYj1hWzBdLmc7aWYoYT1hWzFdKXt2YXIgYz16YyhhKSxlPXdjKGEpLlc7cmV0dXJuIGZ1bmN0aW9uKGQsZixnKXtyZXR1cm4gYihkLGYsZyxlLGMpfX1yZXR1cm4gYn07dmFyIENjPWhiKDApO2Z1bmN0aW9uIERjKGEsYil7cmV0dXJuIG5ldyBuYyhhLGIpfWZ1bmN0aW9uIEVjKGEsYixjKXtNYihhLGFbRV18MCxiLGMsKGFbRV18MCkmMTI4P2JiOnZvaWQgMCl9CnZhciBGYz1EYyhmdW5jdGlvbihhLGIsYyl7aWYoYS5pIT09MilyZXR1cm4hMTt2YXIgZT1JKGEuZyk+Pj4wO2E9YS5nO3ZhciBkPVhiKGEsZSk7YT1hLmk7aWYocmEpe3ZhciBmPWEsZzsoZz1xYSl8fChnPXFhPW5ldyBUZXh0RGVjb2RlcigidXRmLTgiLHtmYXRhbDohMH0pKTtlPWQrZTtmPWQ9PT0wJiZlPT09Zi5sZW5ndGg/ZjpmLnN1YmFycmF5KGQsZSk7dHJ5e3ZhciBoPWcuZGVjb2RlKGYpfWNhdGNoKHApe2lmKHBhPT09dm9pZCAwKXt0cnl7Zy5kZWNvZGUobmV3IFVpbnQ4QXJyYXkoWzEyOF0pKX1jYXRjaChuKXt9dHJ5e2cuZGVjb2RlKG5ldyBVaW50OEFycmF5KFs5N10pKSxwYT0hMH1jYXRjaChuKXtwYT0hMX19IXBhJiYocWE9dm9pZCAwKTt0aHJvdyBwO319ZWxzZXtoPWQ7ZT1oK2U7ZD1bXTtmb3IodmFyIG09bnVsbCxrLGw7aDxlOylrPWFbaCsrXSxrPDEyOD9kLnB1c2goayk6azwyMjQ/aD49ZT95KCk6KGw9YVtoKytdLGs8MTk0fHwobCYxOTIpIT09MTI4PyhoLS0seSgpKTpkLnB1c2goKGsmMzEpPDw2fGwmNjMpKTprPDI0MD9oPj1lLTE/eSgpOihsPWFbaCsrXSwobCYxOTIpIT09MTI4fHxrPT09MjI0JiZsPDE2MHx8az09PTIzNyYmbD49MTYwfHwoKGc9YVtoKytdKSYxOTIpIT09MTI4PyhoLS0seSgpKTpkLnB1c2goKGsmMTUpPDwxMnwobCY2Myk8PDZ8ZyY2MykpOms8PTI0ND9oPj1lLTI/eSgpOihsPWFbaCsrXSwobCYxOTIpIT09MTI4fHwoazw8MjgpKyhsLTE0NCk+PjMwIT09MHx8KChnPWFbaCsrXSkmMTkyKSE9PTEyOHx8KChmPWFbaCsrXSkmMTkyKSE9PTEyOD8oaC0tLHkoKSk6KGs9KGsmNyk8PDE4fChsJjYzKTw8MTJ8KGcmNjMpPDw2fGYmNjMsay09NjU1MzYsZC5wdXNoKChrPj4xMCYxMDIzKSs1NTI5NiwoayYxMDIzKSs1NjMyMCkpKTp5KCksZC5sZW5ndGg+PTgxOTImJihtPW9hKG0sZCksZC5sZW5ndGg9MCk7aD1vYShtLGQpfUVjKGIsYyxoKTtyZXR1cm4hMH0samMpLE09RGMoZnVuY3Rpb24oYSxiLGMpe2lmKGEuaSE9PTApcmV0dXJuITE7RWMoYixjLEkoYS5nKSk7cmV0dXJuITB9LG1jKTt2YXIgR2M9WzAsRGMoZnVuY3Rpb24oYSxiLGMpe2lmKGEuaSE9PTApYj0hMTtlbHNle3ZhciBlPWEuZyxkPTAsZj1hPTAsZz1lLmksaD1lLmc7ZG97dmFyIG09Z1toKytdO2R8PShtJjEyNyk8PGY7Zis9N313aGlsZShmPDMyJiZtJjEyOCk7aWYoZj4zMilmb3IoYXw9KG0mMTI3KT4+NCxmPTM7ZjwzMiYmbSYxMjg7Zis9NyltPWdbaCsrXSxhfD0obSYxMjcpPDxmO0goZSxoKTtpZihtJjEyOCl0aHJvdyBFcnJvcigpO2U9ZD4+PjA7YT4+Pj0wO1BhKCk/YT1oYihCaWdJbnQuYXNJbnROKDY0LChCaWdJbnQuYXNVaW50TigzMixCaWdJbnQoYSkpPDxCaWdJbnQoMzIpKStCaWdJbnQuYXNVaW50TigzMixCaWdJbnQoZSkpKSk6KGEmMjE0NzQ4MzY0OD9QYSgpP2E9IiIrKEJpZ0ludChhfDApPDxCaWdJbnQoMzIpfEJpZ0ludChlPj4+MCkpOihhPX5hLGU/ZT1+ZSsxOmErPTEsZT1rYShbZSxhXSksYT1lLm5leHQoKS52YWx1ZSxlPWUubmV4dCgpLnZhbHVlLGE9Ii0iK3BiKGEsZSkpOmE9cGIoZSxhKSxhPWhiKGEpKTtFYyhiLGMsYT09PUNjP3ZvaWQgMDphKTtiPSEwfXJldHVybiBifSxsYyksRGMoZnVuY3Rpb24oYSxiLGMpe2lmKGEuaSE9PTApcmV0dXJuITE7YT1JKGEuZyk7RWMoYixjLGE9PT0wP3ZvaWQgMDphKTtyZXR1cm4hMH0sa2MpXTt2YXIgTj1mdW5jdGlvbihhLGIpe3RoaXMuZz1hO3RoaXMudHlwZT1ifTt2YXIgSGM9ZnVuY3Rpb24oKXt0aGlzLmc9W107dGhpcy5pPSIifSxJYz1mdW5jdGlvbihhLGIpe3ZhciBjPSIiO2ImJihjPXR5cGVvZiBiPT09InN0cmluZyI/Yjpnb29nbGUuZ2V0RUkoYikpO3JldHVybiBjJiZjIT09YS5pP2M6IiJ9O3ZhciBKYz1mdW5jdGlvbihhLGIpe3RoaXMuZz1hO3RoaXMuaT1ifSxLYz1uZXcgSmMoZW5jb2RlVVJJQ29tcG9uZW50LGZ1bmN0aW9uKGEpe3JldHVybiBkZWNvZGVVUklDb21wb25lbnQoYS5yZXBsYWNlKC9cKy9nLCIlMjAiKSl9KTtmdW5jdGlvbiBMYyhhKXtyZXR1cm4gbmV3IFJlZ0V4cCgiJSg/OiIrZW5jb2RlVVJJQ29tcG9uZW50KGEpLnN1YnN0cigxKS5yZXBsYWNlKC8lL2csInwiKSsiKSIsImciKX12YXIgTWM9TGMoIiQsLzo7P0BbXV5ge3x9Iik7TGMoIj0mJCwvOjtAW11eYHt8fSIpO3ZhciBOYz1uZXcgSmMoZnVuY3Rpb24oYSl7cmV0dXJuIEtjLmcoYSkucmVwbGFjZShNYyxkZWNvZGVVUklDb21wb25lbnQpfSxLYy5pKTtmdW5jdGlvbiBPYyhhKXtyZXR1cm4gYT9hLmdldEF0dHJpYnV0ZSgiZGF0YS12ZWQiKXx8IiI6IiJ9O2Z1bmN0aW9uIE8oYSxiKXt2YXIgYz1iPT09dm9pZCAwP3t9OmI7Yj1jLm1hO3ZhciBlPWMuQixkPWMuZGF0YSxmPWMucGF0aCxnPShjPWMucmEpP2dvb2dsZS5nZXRFSShjKTpnb29nbGUua0VJLGg7aWYoaD1hKXtoPW5ldyBIYztmb3IodmFyIG09MCxrO2s9YVttKytdOyl7dmFyIGw9T2Moay5nKSxwPWsuZztoLmcucHVzaCh7cWE6bCx0YXJnZXRFbGVtZW50OnA9PT12b2lkIDA/IiI6cCxsYTprLnR5cGV9KX1oLmk9ZzthPVtdO2ZvcihtPTA7az1oLmdbbSsrXTspe3ZhciBuPWs7az1uLnFhO2w9bi5sYTtwPW4udGE7dmFyIHE9bi5zYSx1PW4ueWE7bj1JYyhoLG4udGFyZ2V0RWxlbWVudCk7cT1JYyhoLHEpO3N3aXRjaChsKXtjYXNlICJzaG93IjphLnB1c2goaysiLiIrbisiLnMiKTticmVhaztjYXNlICJpbnNlcnQiOmEucHVzaChrKyIuIituKyIuaSIrKHE/Ii4wLiIrcCsiLiIrcToiIikpO2JyZWFrO2Nhc2UgImRlZHVwZS1pbnNlcnQiOmEucHVzaChrKyIuIituKyIuaSIrKHE/Ii4xLiIrCnArIi4iK3E6Ii4xIikpO2JyZWFrO2Nhc2UgImhpZGUiOmEucHVzaChrKyIuIituKyIuaCIpO2JyZWFrO2Nhc2UgImNvcHkiOmEucHVzaCgiLiIrdSsiLmMiKX19aD1hLmxlbmd0aD8iMSIrYS5qb2luKCI7Iik6IiJ9UGMoZyxjLGIsZSxkLGgsZil9ZnVuY3Rpb24gUShhLGIpe3ZhciBjPWI9PT12b2lkIDA/e306YjtiPWMubWE7dmFyIGU9Yy5CO3ZhciBkPWMuZGF0YTtjPWMucGF0aDt2YXIgZj1hP2dvb2dsZS5nZXRFSShhKTpnb29nbGUua0VJO1BjKGYsYSxiLGUsZCx2b2lkIDAsYyl9CmZ1bmN0aW9uIFBjKGEsYixjLGUsZCxmLGcpe2E9bmV3IFFjKGEsZyk7YiYmKGI9T2MoYiksUihhLCJ2ZWQiLGIpKTtjIT09dm9pZCAwJiZSKGEsImljdHgiLFN0cmluZyhjKSk7ZSYmUihhLCJ1YWN0IixTdHJpbmcoZSkpO2YhPW51bGwmJlIoYSwidmV0IixmKTtnb29nbGUua0JMJiZSKGEsImJsIixnb29nbGUua0JMKTtnb29nbGUuc24mJlIoYSwicyIsZ29vZ2xlLnNuKTtpZihkKWZvcih2YXIgaCBpbiBkKVIoYSxoLGRbaF0pO2EubG9nKCl9dmFyIFFjPWZ1bmN0aW9uKGEsYil7dGhpcy5wYXRoPWI9PT12b2lkIDA/Ii9nZW5fMjA0IjpiO3RoaXMudXJpPXRoaXMucGF0aCsiP2VpPSIrTmMuZyhhKX0sUj1mdW5jdGlvbihhLGIsYyl7YS51cmkrPSImIitiKyI9IitOYy5nKGMpfTtRYy5wcm90b3R5cGUubG9nPWZ1bmN0aW9uKCl7aWYodHlwZW9mIHdpbmRvdy5uYXZpZ2F0b3Iuc2VuZEJlYWNvbj09PSJmdW5jdGlvbiIpdHJ5e3dpbmRvdy5uYXZpZ2F0b3Iuc2VuZEJlYWNvbih0aGlzLnVyaSwiIil9Y2F0Y2goYSl7fWVsc2UgZ29vZ2xlLmxvZygiIiwiIix0aGlzLnVyaSl9O3ZhciBSYz1bMCxNLEZjLC0xLE1dO3ZhciBTYz1bMCxNLC0xXTt2YXIgUz1mdW5jdGlvbihhKXt0aGlzLkE9R2IoYSx2b2lkIDAsdm9pZCAwLDIwNDgpfTtTLnByb3RvdHlwZT1hYShMLnByb3RvdHlwZSk7Uy5wcm90b3R5cGUuY29uc3RydWN0b3I9UztpZih3KXcoUyxMKTtlbHNlIGZvcih2YXIgVCBpbiBMKWlmKFQhPSJwcm90b3R5cGUiKWlmKE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKXt2YXIgVGM9T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihMLFQpO1RjJiZPYmplY3QuZGVmaW5lUHJvcGVydHkoUyxULFRjKX1lbHNlIFNbVF09TFtUXTt2YXIgVWM9ZnVuY3Rpb24oYSxiKXtyZXR1cm4gZnVuY3Rpb24oYyxlKXthOnt2YXIgZD17TjohMH07ZSYmT2JqZWN0LmFzc2lnbihkLGUpO2M9YmMoYyx2b2lkIDAsdm9pZCAwLGQpO3RyeXt2YXIgZj1uZXcgYSxnPWYuQTt6YyhiKShnLGMpO3ZhciBoPWY7YnJlYWsgYX1jYXRjaChtKXtpZihtIGluc3RhbmNlb2YgUmFuZ2VFcnJvcil0aHJvdyBuZXcgU3ludGF4RXJyb3I7dGhyb3cgbTt9ZmluYWxseXtjYyhjKX1oPXZvaWQgMH1yZXR1cm4gaH19KFMsWzAsTSxSYyxHYyxTYyxNLDEsTV0pOwp2YXIgVT1mdW5jdGlvbihhKXt0aGlzLmc9YX07VS5wcm90b3R5cGUudG9TdHJpbmc9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5nfTt2YXIgVmM9bmV3IFUoImFib3V0OmludmFsaWQjekNsb3N1cmV6Iik7dmFyIFdjPWZ1bmN0aW9uKGEpe3RoaXMucGE9YX07ZnVuY3Rpb24gVihhKXtyZXR1cm4gbmV3IFdjKGZ1bmN0aW9uKGIpe3JldHVybiBiLnN1YnN0cigwLGEubGVuZ3RoKzEpLnRvTG93ZXJDYXNlKCk9PT1hKyI6In0pfXZhciBYYz1bVigiZGF0YSIpLFYoImh0dHAiKSxWKCJodHRwcyIpLFYoIm1haWx0byIpLFYoImZ0cCIpLG5ldyBXYyhmdW5jdGlvbihhKXtyZXR1cm4vXlteOl0qKFsvPyNdfCQpLy50ZXN0KGEpfSldLFljPS9eXHMqKD8hamF2YXNjcmlwdDopKD86W1x3Ky4tXSs6fFteOi8/I10qKD86Wy8/I118JCkpL2k7ZnVuY3Rpb24gWmMoYSl7aWYoYSBpbnN0YW5jZW9mIFUpaWYoYSBpbnN0YW5jZW9mIFUpYT1hLmc7ZWxzZSB0aHJvdyBFcnJvcigibiIpO2Vsc2UgYT1ZYy50ZXN0KGEpP2E6dm9pZCAwO3JldHVybiBhfTtmdW5jdGlvbiAkYygpe3RoaXMuZz0odHlwZW9mIGRvY3VtZW50PT0idW5kZWZpbmVkIj9udWxsOmRvY3VtZW50KXx8e2Nvb2tpZToiIn19dmFyIGJkPWZ1bmN0aW9uKCl7dmFyIGE9VztpZigheC5uYXZpZ2F0b3IuY29va2llRW5hYmxlZClyZXR1cm4hMTtpZihhLmcuY29va2llKXJldHVybiEwO2Euc2V0KCJURVNUQ09PS0lFU0VOQUJMRUQiLCIxIix7TTo2MH0pO2lmKGEuZ2V0KCJURVNUQ09PS0lFU0VOQUJMRUQiKSE9PSIxIilyZXR1cm4hMTthZChhLCJURVNUQ09PS0lFU0VOQUJMRUQiKTtyZXR1cm4hMH07JGMucHJvdG90eXBlLnNldD1mdW5jdGlvbihhLGIsYyl7dmFyIGU9ITE7aWYodHlwZW9mIGM9PT0ib2JqZWN0Iil7dmFyIGQ9Yy5zYW1lU2l0ZTtlPWMuc2VjdXJlfHwhMTt2YXIgZj1jLmRvbWFpbnx8dm9pZCAwO3ZhciBnPWMucGF0aHx8dm9pZCAwO3ZhciBoPWMuTX1pZigvWzs9XHNdLy50ZXN0KGEpKXRocm93IEVycm9yKCJvYCIrYSk7aWYoL1s7XHJcbl0vLnRlc3QoYikpdGhyb3cgRXJyb3IoInBgIitiKTtoPT09dm9pZCAwJiYoaD0tMSk7dGhpcy5nLmNvb2tpZT1hKyI9IitiKyhmPyI7ZG9tYWluPSIrZjoiIikrKGc/IjtwYXRoPSIrZzoiIikrKGg8MD8iIjpoPT0wPyI7ZXhwaXJlcz0iKyhuZXcgRGF0ZSgxOTcwLDEsMSkpLnRvVVRDU3RyaW5nKCk6IjtleHBpcmVzPSIrKG5ldyBEYXRlKERhdGUubm93KCkraCoxRTMpKS50b1VUQ1N0cmluZygpKSsoZT8iO3NlY3VyZSI6IiIpKyhkIT1udWxsPyI7c2FtZXNpdGU9IitkOiIiKX07JGMucHJvdG90eXBlLmdldD1mdW5jdGlvbihhLGIpe2Zvcih2YXIgYz1hKyI9IixlPSh0aGlzLmcuY29va2llfHwiIikuc3BsaXQoIjsiKSxkPTAsZjtkPGUubGVuZ3RoO2QrKyl7Zj10YShlW2RdKTtpZihmLmxhc3RJbmRleE9mKGMsMCk9PTApcmV0dXJuIGYuc2xpY2UoYy5sZW5ndGgpO2lmKGY9PWEpcmV0dXJuIiJ9cmV0dXJuIGJ9O3ZhciBhZD1mdW5jdGlvbihhLGIpe2EuZ2V0KGIpO2Euc2V0KGIsIiIse006MCxwYXRoOnZvaWQgMCxkb21haW46dm9pZCAwfSl9OyRjLnByb3RvdHlwZS5jbGVhcj1mdW5jdGlvbigpe2Zvcih2YXIgYT0odGhpcy5nLmNvb2tpZXx8IiIpLnNwbGl0KCI7IiksYj1bXSxjPVtdLGUsZCxmPTA7ZjxhLmxlbmd0aDtmKyspZD10YShhW2ZdKSxlPWQuaW5kZXhPZigiPSIpLGU9PS0xPyhiLnB1c2goIiIpLGMucHVzaChkKSk6KGIucHVzaChkLnN1YnN0cmluZygwLGUpKSxjLnB1c2goZC5zdWJzdHJpbmcoZSsxKSkpO2ZvcihhPWIubGVuZ3RoLTE7YT49MDthLS0pYWQodGhpcyxiW2FdKX07dmFyIFc9bmV3ICRjO2Z1bmN0aW9uIGNkKCl7dHJ5e2lmKCFiZCgpKXJldHVybiExO2lmKFcuZy5jb29raWUpcmV0dXJuITA7Vy5zZXQoIlRFU1RDT09LSUVTRU5BQkxFRCIsIjEiLHtNOjYwfSk7aWYoVy5nZXQoIlRFU1RDT09LSUVTRU5BQkxFRCIpIT0iMSIpcmV0dXJuITE7YWQoVywiVEVTVENPT0tJRVNFTkFCTEVEIik7cmV0dXJuITB9Y2F0Y2goYSl7cmV0dXJuITF9fTt2YXIgZGQ7dmFyIFg9ZnVuY3Rpb24oYSl7dmFyIGI9ZG9jdW1lbnQ7cmV0dXJuIHR5cGVvZiBhPT09InN0cmluZyI/Yi5nZXRFbGVtZW50QnlJZChhKTphfSxlZD1mdW5jdGlvbihhKXtyZXR1cm4gYS5jaGlsZHJlbiE9dm9pZCAwP2EuY2hpbGRyZW46QXJyYXkucHJvdG90eXBlLmZpbHRlci5jYWxsKGEuY2hpbGROb2RlcyxmdW5jdGlvbihiKXtyZXR1cm4gYi5ub2RlVHlwZT09MX0pfTt2YXIgZmQ9ZnVuY3Rpb24oYSl7cmV0dXJuIHR5cGVvZiBhLmNsYXNzTmFtZT09InN0cmluZyI/YS5jbGFzc05hbWU6YS5nZXRBdHRyaWJ1dGUmJmEuZ2V0QXR0cmlidXRlKCJjbGFzcyIpfHwiIn0sZ2Q9ZnVuY3Rpb24oYSxiKXt0eXBlb2YgYS5jbGFzc05hbWU9PSJzdHJpbmciP2EuY2xhc3NOYW1lPWI6YS5zZXRBdHRyaWJ1dGUmJmEuc2V0QXR0cmlidXRlKCJjbGFzcyIsYil9LGhkPWZ1bmN0aW9uKGEpe2EuY2xhc3NMaXN0P2E9YS5jbGFzc0xpc3QuY29udGFpbnMoIkVNMU1yYiIpOihhPWEuY2xhc3NMaXN0P2EuY2xhc3NMaXN0OmZkKGEpLm1hdGNoKC9cUysvZyl8fFtdLGE9emEoYSwiRU0xTXJiIik+PTApO3JldHVybiBhfSxpZD1mdW5jdGlvbihhKXthLmNsYXNzTGlzdD9hLmNsYXNzTGlzdC5yZW1vdmUoIkVNMU1yYiIpOmhkKGEpJiZnZChhLEFycmF5LnByb3RvdHlwZS5maWx0ZXIuY2FsbChhLmNsYXNzTGlzdD9hLmNsYXNzTGlzdDpmZChhKS5tYXRjaCgvXFMrL2cpfHxbXSxmdW5jdGlvbihiKXtyZXR1cm4gYiE9IkVNMU1yYiJ9KS5qb2luKCIgIikpfTtmdW5jdGlvbiBqZChhKXthJiZzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7YS5mb2N1cygpfSw1MDApfWZ1bmN0aW9uIGtkKGEpe3VYSlN8fCgoZ29vZ2xlLmJ4PWEpfHxnb29nbGUubHgoKSxnb29nbGUubG9nKCJieGpzIiwiJmI9IisoYT8wOjEpKSl9CnZhciBsZD1mdW5jdGlvbigpe3RoaXMuRj0hMTt0aGlzLk89dGhpcy52PTA7dGhpcy5hYT10aGlzLko9ITE7dGhpcy5kYT0hMDt0aGlzLkc9dGhpcy5lYT0hMTt0aGlzLlA9W107dGhpcy5JPW51bGw7dGhpcy5nPVgoInhlN0NPZSIpO3RoaXMuUz1YKCJLamNIUGMiKTt0aGlzLlI9WCgiTDJBR0xiIik7dGhpcy5VPVgoIlcwd2x0YyIpO3RoaXMuWD1YKCJWbmpDY2IiKTt0aGlzLkM9WCgidmMzam9mIik7dGhpcy5qPVgoInRiVHViZCIpO3RoaXMuZmE9WCgiZ2tzUzFkIik7dGhpcy5jYT1YKCJSUDNWNWMiKTt0aGlzLmdhPVgoIkhRMWxiIik7dGhpcy5aPVgoInJHRFNuYiIpO3RoaXMubD1kb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiS0J5UXgiKTt0aGlzLmk9ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImpZZlhNYiIpO2RvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ1TW91c2MiKTt0aGlzLlk9WCgiQ1hRbm1iIik7ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoIkhJaFB4ZiIpO2RvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJzTkNRYiIpO3RoaXMuSD10aGlzLmoucXVlcnlTZWxlY3RvckFsbCgibGkiKTt0aGlzLmJhPXRoaXMuSC5sZW5ndGgtMTt0aGlzLkQ9dGhpcy5nLnF1ZXJ5U2VsZWN0b3JBbGwoImEsIGJ1dHRvbiIpO3RoaXMuVD10aGlzLkQubGVuZ3RoLTF9LG1kPWZ1bmN0aW9uKGEsYil7Yi5zdG9wUHJvcGFnYXRpb24oKTtiLnByZXZlbnREZWZhdWx0KCk7UShhLmose0I6M30pO2lmKGIudGFyZ2V0IGluc3RhbmNlb2YgRWxlbWVudCYmKFEoYi50YXJnZXQse0I6M30pLGE9Yi50YXJnZXQuZ2V0QXR0cmlidXRlKCJkYXRhLWhsIikpKXtiPWVuY29kZVVSSUNvbXBvbmVudCgiaGwiKTthPWVuY29kZVVSSUNvbXBvbmVudChhKTtmb3IodmFyIGM9ZG9jdW1lbnQubG9jYXRpb24uc2VhcmNoPT09IiI/W106ZG9jdW1lbnQubG9jYXRpb24uc2VhcmNoLnN1YnN0cmluZygxKS5zcGxpdCgiJiIpLGU9MDtlPGMubGVuZ3RoO2UrKylpZihjW2VdLmluZGV4T2YoYisiPSIpIT09LTEpe3ZhciBkPWNbZV0uc3BsaXQoIj0iKTtkWzFdPQphO2NbZV09ZC5qb2luKCI9Iik7YnJlYWt9ZT49Yy5sZW5ndGgmJihjW2MubGVuZ3RoXT1bYixhXS5qb2luKCI9IikpO3ZhciBmPWY9PT12b2lkIDA/WGM6ZjthOmlmKGE9bG9jYXRpb24ucHJvdG9jb2wrIi8vIitsb2NhdGlvbi5ob3N0K2xvY2F0aW9uLnBhdGhuYW1lKyI/IitjLmpvaW4oIiYiKStsb2NhdGlvbi5oYXNoLGY9Zj09PXZvaWQgMD9YYzpmLCEoYSBpbnN0YW5jZW9mIFUpKXtmb3IoYj0wO2I8Zi5sZW5ndGg7KytiKWlmKGM9ZltiXSxjIGluc3RhbmNlb2YgV2MmJmMucGEoYSkpe2E9bmV3IFUoYSk7YnJlYWsgYX1hPXZvaWQgMH1mPWxvY2F0aW9uO2E9WmMoYXx8VmMpO2EhPT12b2lkIDAmJmYucmVwbGFjZShhKX19LFk9ZnVuY3Rpb24oYSxiLGMpe2EuSj0hMDtiLmNvZGU9PT0iRW50ZXIiJiZjKCl9LG9kPWZ1bmN0aW9uKGEpe2EubCYmYS5kYSYmYS5pJiYoYS5pLnNjcm9sbEhlaWdodC0oYS5pLnNjcm9sbFRvcCthLmkuY2xpZW50SGVpZ2h0KzkwKTwxJiZuZChhKSxhLmFhfHwKKFEoYS5pLHtCOjIwfSksbmQoYSkpKX0sbmQ9ZnVuY3Rpb24oYSl7YS5sLnN0eWxlLmhlaWdodD0iMCI7YS5sLnN0eWxlLm9wYWNpdHk9IjAiO2EubC5zdHlsZS5vdmVyZmxvdz0iaGlkZGVuIjthLmRhPSExfSxwZD1mdW5jdGlvbihhLGIpe2lmKCFpU1Ipe3ZhciBjO3ZhciBlPShjPXNMKSE9bnVsbD9jOjM0MTI4RTM7Vy5zZXQoIlNPQ1MiLGI/c0NBUzpzQ1JTLHtkb21haW46Y29va2llRG9tYWluLHBhdGg6Ii8iLE06ZX0pfWU9bmV3IFhNTEh0dHBSZXF1ZXN0O2Uub3BlbigiUE9TVCIsYj9hQVU6ckFVKTtlLndpdGhDcmVkZW50aWFscz0hMDtlLnNlbmQoKTthLmNsb3NlKCl9LHFkPWZ1bmN0aW9uKGEpe1EoYS5VLHtCOjN9KTtwZChhLCExKX0scmQ9ZnVuY3Rpb24oYSl7UShhLlIse0I6M30pO3NFRT9wZChhLCExKTpwZChhLCEwKX07bGQucHJvdG90eXBlLmNsb3NlPWZ1bmN0aW9uKCl7c2QodGhpcyk7a2QoITEpfTt2YXIgWj1mdW5jdGlvbihhLGIsYyl7Yz1jPT09dm9pZCAwP251bGw6YztiJiZiIT09dm9pZCAwJiYoYS5wcmV2ZW50RGVmYXVsdCgpLFEoYix7QjozfSksYj1jfHxiLmdldEF0dHJpYnV0ZSgiaHJlZiIpLGE9d2luZG93LmxvY2F0aW9uLGI9WmMoYiksYiE9PXZvaWQgMCYmKGEuaHJlZj1iKSl9LHRkPWZ1bmN0aW9uKGEsYil7Yj09bnVsbHx8Yi5zdG9wUHJvcGFnYXRpb24oKTthLmomJmEuQyYmIWEuRiYmKGEuai5zdHlsZS5kaXNwbGF5PSJibG9jayIsYS5GPSEwLGEuSiYmamQoYS5qLnF1ZXJ5U2VsZWN0b3IoImxpIikpLGEuQy5zZXRBdHRyaWJ1dGUoImFyaWEtZXhwYW5kZWQiLCJ0cnVlIiksTyhbbmV3IE4oYS5qLCJzaG93IildLHtyYTphLkN9KSl9LHVkPWZ1bmN0aW9uKGEpe2EuaiYmYS5DJiYoYS5qLnN0eWxlLmRpc3BsYXk9Im5vbmUiLGEuRj0hMSxhLkomJmEuQy5mb2N1cygpLE8oW25ldyBOKGEuaiwiaGlkZSIpXSksYS5DLnNldEF0dHJpYnV0ZSgiYXJpYS1leHBhbmRlZCIsImZhbHNlIikpfSxzZD1mdW5jdGlvbihhKXthLmcmJihhLmcuc3R5bGUuZGlzcGxheSE9PSJub25lIiYmKGEuZy5zdHlsZS5kaXNwbGF5PSJub25lIiksYS5JJiZhLkk+MCYmTyhbbmV3IE4oYS5nLCJoaWRlIildLHtkYXRhOntjZG90OlN0cmluZyhEYXRlLm5vdygpLWEuSSl9fSksYS5HPSExLHZkKGEpLGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoImZvY3VzaW4iLGZ1bmN0aW9uKCl7d2QoYSl9KSxkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCJET01Db250ZW50TG9hZGVkIixmdW5jdGlvbigpe3hkKGEpfSkpfSx6ZD1mdW5jdGlvbihhKXshYS5nfHxzcnAmJiFhLmVhfHwoYS5nLnN0eWxlLmRpc3BsYXk9ImJsb2NrIixhLkk9RGF0ZS5ub3coKSxPKFtuZXcgTihhLmcsInNob3ciKV0se2RhdGE6e2dsOmdMLHBjOnBDLGlzTW9iaWxlOlN0cmluZyhpc01vYmlsZSl9fSksYS5nLmZvY3VzKCkseWQoYSksYS5sJiZhLmkmJihhLk89YS5pLmNsaWVudEhlaWdodC05MCxhLmkuc2Nyb2xsSGVpZ2h0PgphLk8mJihhLmwuc3R5bGUuZGlzcGxheT0iZmxleCIsTyhbbmV3IE4oYS5sLCJzaG93IildKSkpLGEuRz0hMCx2ZChhKSl9LHZkPWZ1bmN0aW9uKGEpe3ZhciBiPWRvY3VtZW50LmJvZHk7aWYoYS5HKXtpZihiLmNsYXNzTGlzdCliLmNsYXNzTGlzdC5hZGQoIkVNMU1yYiIpO2Vsc2UgaWYoIWhkKGIpKXt2YXIgYz1mZChiKTtnZChiLGMrKGMubGVuZ3RoPjA/IiBFTTFNcmIiOiJFTTFNcmIiKSl9QWQoYSl9ZWxzZSBpZChiKSxCZChhKX0sQmQ9ZnVuY3Rpb24oYSl7QWEoYS5QLGZ1bmN0aW9uKGIpe2IucmVtb3ZlQXR0cmlidXRlKCJhcmlhLWhpZGRlbiIpfSk7YS5QPVtdfSxBZD1mdW5jdGlvbihhKXtmb3IodmFyIGI9YS5nO2ImJmIhPT1kb2N1bWVudC5ib2R5Oyl7dmFyIGM9Yi5wYXJlbnRFbGVtZW50fHxudWxsO2lmKGMpe3ZhciBlPWVkKGMpO0FhKGUsZnVuY3Rpb24oZCl7dmFyIGY7aWYoZj1kJiZkIT09YilmPWQuZ2V0QXR0cmlidXRlKCJhcmlhLWhpZGRlbiIpLGY9IShmPT1udWxsfHwKZj09dm9pZCAwPzA6U3RyaW5nKGYpKTtmJiYoZj0hMCxBcnJheS5pc0FycmF5KGYpJiYoZj1mLmpvaW4oIiAiKSksZj09PSIifHxmPT12b2lkIDA/KGRkfHwoZj17fSxkZD0oZi5hdG9taWM9ITEsZi5hdXRvY29tcGxldGU9Im5vbmUiLGYuZHJvcGVmZmVjdD0ibm9uZSIsZi5oYXNwb3B1cD0hMSxmLmxpdmU9Im9mZiIsZi5tdWx0aWxpbmU9ITEsZi5tdWx0aXNlbGVjdGFibGU9ITEsZi5vcmllbnRhdGlvbj0idmVydGljYWwiLGYucmVhZG9ubHk9ITEsZi5yZWxldmFudD0iYWRkaXRpb25zIHRleHQiLGYucmVxdWlyZWQ9ITEsZi5zb3J0PSJub25lIixmLmJ1c3k9ITEsZi5kaXNhYmxlZD0hMSxmLmhpZGRlbj0hMSxmLmludmFsaWQ9ImZhbHNlIixmKSksZj1kZCwiaGlkZGVuImluIGY/ZC5zZXRBdHRyaWJ1dGUoImFyaWEtaGlkZGVuIixmLmhpZGRlbik6ZC5yZW1vdmVBdHRyaWJ1dGUoImFyaWEtaGlkZGVuIikpOmQuc2V0QXR0cmlidXRlKCJhcmlhLWhpZGRlbiIsZiksYS5QLnB1c2goZCkpfSxhKX1iPWN9fSx3ZD1mdW5jdGlvbihhKXthLkcmJnphKGEuRCxkb2N1bWVudC5hY3RpdmVFbGVtZW50KTwwJiZ6YShhLkgsZG9jdW1lbnQuYWN0aXZlRWxlbWVudCk8MCYmZG9jdW1lbnQuYWN0aXZlRWxlbWVudCE9PWEuZyYmYS5EWzBdLmZvY3VzKCl9LHhkPWZ1bmN0aW9uKGEpe2EuRyYmQWQoYSk7YS5ZJiZhLlkuc2Nyb2xsSW50b1ZpZXcoKX0seWQ9ZnVuY3Rpb24oYSl7aWYoYS5nKXt2YXIgYj1hLmc7Yi5vbmNsaWNrPWZ1bmN0aW9uKCl7YS5GJiZ1ZChhKX07Yi5vbmtleWRvd249ZnVuY3Rpb24oZyl7IWEuR3x8YS5UPDB8fChnLmNvZGU9PT0iRXNjYXBlIiYmIWEuRiYmYS5aJiZRKGEuWix7QjozMn0pLGcuc2hpZnRLZXl8fGcuY29kZSE9PSJUYWIifHxkb2N1bWVudC5hY3RpdmVFbGVtZW50IT09YS5EW2EuVF18fChnLnByZXZlbnREZWZhdWx0KCksYS5EWzBdLmZvY3VzKCkpLCFnLnNoaWZ0S2V5fHxnLmNvZGUhPT0iVGFiInx8ZG9jdW1lbnQuYWN0aXZlRWxlbWVudCE9PWEuRFswXSYmCmRvY3VtZW50LmFjdGl2ZUVsZW1lbnQhPT1hLmd8fChnLnByZXZlbnREZWZhdWx0KCksYS5EW2EuVF0uZm9jdXMoKSkpfX1kb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCJmb2N1c2luIixmdW5jdGlvbigpe3dkKGEpfSk7ZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigiRE9NQ29udGVudExvYWRlZCIsZnVuY3Rpb24oKXt4ZChhKX0pO2EuUyYmKGEuUy5vbmNsaWNrPWZ1bmN0aW9uKCl7UShhLlMse0I6M30pO2EuRiYmdWQoYSl9KTthLlImJihiPWEuUixiLm9uY2xpY2s9ZnVuY3Rpb24oKXtyZChhKX0sYi5vbmtleWRvd249ZnVuY3Rpb24oZyl7WShhLGcsZnVuY3Rpb24oKXtyZChhKX0pfSk7YS5VJiYoYj1hLlUsYi5vbmNsaWNrPWZ1bmN0aW9uKCl7cWQoYSl9LGIub25rZXlkb3duPWZ1bmN0aW9uKGcpe1koYSxnLGZ1bmN0aW9uKCl7cWQoYSl9KX0pO2lmKGEuWCl7dmFyIGM9YS5YO2Mub25jbGljaz1mdW5jdGlvbihnKXtaKGcsYyxjVSl9O2Mub25rZXlkb3duPWZ1bmN0aW9uKGcpe1koYSxnLGZ1bmN0aW9uKCl7WihnLGMsY1UpfSl9fWEuQyYmKGI9YS5DLGIub25jbGljaz1mdW5jdGlvbihnKXt0ZChhLGcpfSxiLm9ua2V5ZG93bj1mdW5jdGlvbihnKXtZKGEsZyxmdW5jdGlvbigpe3RkKGEsZyl9KX0pO2EuaiYmKGI9YS5qLGIub25jbGljaz1mdW5jdGlvbihnKXttZChhLGcpfSxiLm9ua2V5ZG93bj1mdW5jdGlvbihnKXthLko9ITA7aWYoYS5GJiZnKXN3aXRjaChnLmNvZGUpe2Nhc2UgIkFycm93RG93biI6YS52PT09YS5iYT9hLnY9MDphLnYrKzthLkhbYS52XSYmYS5IW2Eudl0uZm9jdXMoKTticmVhaztjYXNlICJBcnJvd1VwIjphLnY9PT0wP2Eudj1hLmJhOmEudi0tO2EuSFthLnZdJiZhLkhbYS52XS5mb2N1cygpO2JyZWFrO2Nhc2UgIkVzY2FwZSI6Y2FzZSAiVGFiIjp1ZChhKTticmVhaztjYXNlICJFbnRlciI6bWQoYSxnKX19KTtpZihhLmZhKXt2YXIgZT1hLmZhO2Uub25jbGljaz1mdW5jdGlvbihnKXtaKGcsZSxzSVUpfTtlLm9ua2V5ZG93bj1mdW5jdGlvbihnKXtZKGEsZyxmdW5jdGlvbigpe1ooZyxlLHNJVSl9KX19aWYoYS5jYSl7dmFyIGQ9YS5jYTtkLm9uY2xpY2s9ZnVuY3Rpb24oZyl7WihnLGQpfTtkLm9ua2V5ZG93bj1mdW5jdGlvbihnKXtZKGEsZyxmdW5jdGlvbigpe1ooZyxkKX0pfX1pZihhLmdhKXt2YXIgZj1hLmdhO2Yub25jbGljaz1mdW5jdGlvbihnKXtaKGcsZil9O2Yub25rZXlkb3duPWZ1bmN0aW9uKGcpe1koYSxnLGZ1bmN0aW9uKCl7WihnLGYpfSl9fWEubCYmYS5pJiYoYS5sLm9uY2xpY2s9ZnVuY3Rpb24oKXthLmwmJmEuaSYmKFEoYS5sLHtCOjN9KSxhLmkuc2Nyb2xsVG9wKz1hLk8sYS5hYT0hMCl9LGI9YS5pLGIub25zY3JvbGw9ZnVuY3Rpb24oKXtvZChhKX0sYi5vbndoZWVsPWZ1bmN0aW9uKCl7b2QoYSl9KX07bGQucHJvdG90eXBlLmluaXQ9ZnVuY3Rpb24oKXt2YXIgYTtpZighKGE9IWNkKCkpJiYoYT0haVNSKSlhOnt2YXIgYj1XLmdldCgiU09DUyIpO2lmKGIpdHJ5e3ZhciBjPVVjKENhKGIpKSxlPUxiKGMuQSwxKTt2YXIgZD1lIT09bnVsbHx8S2ImJmMuamEhPT1GP2U6dm9pZCAwO3ZhciBmPWQ9PW51bGw/ZDpyYihkKT9kfDA6dm9pZCAwO2E9Zj09PTF8fGY9PT0yO2JyZWFrIGF9Y2F0Y2goZyl7fWE9ITF9YT9zZCh0aGlzKTooa2QoITApLHNycD90aGlzLmVhPSEwOnpkKHRoaXMpKX07dmFyIENkPW5ldyBsZDtDZC5pbml0KCk7Z29vZ2xlLmNpcz1nb29nbGUuY2lzfHx7fTtnb29nbGUuY2lzLnNkPWZ1bmN0aW9uKCl7emQoQ2QpfTtnb29nbGUuY2lzLmhkPWZ1bmN0aW9uKCl7c2QoQ2QpO2tkKCExKX07fSkoKTs8L3NjcmlwdD48c3BhbiBzdHlsZT0iZGlzcGxheTpub25lIj48c3BhbiBqc2NvbnRyb2xsZXI9IkRoUFltZSIgc3R5bGU9ImRpc3BsYXk6bm9uZSIgZGF0YS1hdHNkPSIxMCIgZGF0YS1kYj0iMSIgZGF0YS1kdT0iMSIgZGF0YS1tbWNudD0iMTAwIiBqc2FjdGlvbj0icmN1UTZiOm5wVDJtZCI+PC9zcGFuPjwvc3Bhbj48c2NyaXB0IG5vbmNlPSJZT3lISDNsdE9tRDlCb3lfWkJ5QWxRIj47dGhpcy5nYmFyXz17Q09ORklHOltbWzAsInd3dy5nc3RhdGljLmNvbSIsIm9nLmFzeS5lbl9VUy5NXzdnaGlrUUFrQS4yMDE5Lk8iLCJubyIsIm5vIiwiNTM4IixudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCwib2cuYXN5LmNhR3U5eDBzNURNLkwuRjQuTyIsIkFBMllyVHRKVDJHUGx4MG5KODRSenNTLUQ5dVgxVHpBeVEiLCJBQTJZclR1aUFKWkdrdzZGYTFxdHItSUNoRUN6eklhNzh3IiwiIixudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCwiMSIsIjUzOCIsbnVsbCxudWxsLG51bGwsODk5Nzg0NDksbnVsbCwwLG51bGwsMCwwXSxbW251bGwsbnVsbCxudWxsLCJodHRwczovL3d3dy5nc3RhdGljLmNvbS9vZy9fL2pzL2s9b2cuYXN5LmVuX1VTLk1fN2doaWtRQWtBLjIwMTkuTy9ydD1qL209X2FjLF9hd2QsYWRhLGxsZHAscWFkcyxhYmxkL2V4bT0vZD0xL2VkPTEvcnM9QUEyWXJUdEpUMkdQbHgwbko4NFJ6c1MtRDl1WDFUekF5USJdLFtudWxsLG51bGwsbnVsbCwiaHR0cHM6Ly93d3cuZ3N0YXRpYy5jb20vb2cvXy9zcy9rPW9nLmFzeS5jYUd1OXgwczVETS5MLkY0Lk8vbT1sbF90ZG0sYWRjZ20zLGxsX2Z3LGFibGQvZXhjbT0vZD0xL2VkPTEvY3Q9emdtcy9ycz1BQTJZclR1aUFKWkdrdzZGYTFxdHItSUNoRUN6eklhNzh3Il1dLFsxLG51bGwsbnVsbCw0MDQwMCw1MzgsIk5PUiIsIm5vIiwiOTUxMzUwNDE3LjAiLDE5LG51bGwsMCwwLG51bGwsbnVsbCxudWxsLG51bGwsIjM3MDA5NDksMTE2MjQ5MDQwLDExNjI0OTA0MyIsbnVsbCxudWxsLG51bGwsIlkzcG5hcUQ1THMtYndQQVB1T3YzY0EiLDAsMCwwLG51bGwsMiw1LCJsdSIsNTMsMCwwLG51bGwsbnVsbCwxLDg5OTc4NDQ5LDAsMF0sWzAsMCwwLG51bGwsIiIsIiIsIiIsIiIsMCwwLG51bGwsIiIsMV0sW1tbbnVsbCxudWxsLFtudWxsLG51bGwsbnVsbCwiaHR0cHM6Ly9vZ3MuZ29vZ2xlLmNvbS93aWRnZXQvYXBwL3NvP2VvbT0xXHUwMDI2YXd3ZD0xXHUwMDI2ZW09Mlx1MDAyNmRwaT04OTk3ODQ0OSJdLDAsNTcwLDM3MCw1NCwyNywxLDAsMCw2Myw2NCw4MDAwLCJodHRwczovL3d3dy5nb29nbGUubm8vaW50bC9uby9hYm91dC9wcm9kdWN0cyIsNjcsMSw2OSxudWxsLDEsNzAsIkRldCBvcHBzdG8gZXQgcHJvYmxlbSB1bmRlciBpbm5sYXN0aW5nZW4gYXYgYXBwb3ZlcnNpa3Rlbi4gUHLDuHYgcMOlIG55dHQgb20gbm9lbiBtaW51dHRlciwgZWxsZXIgZ8OlIHRpbCBzaWRlbiBmb3IgJTEkc0dvb2dsZS1wcm9kdWt0ZXIlMiRzLiIsMywwLDAsNzQsMCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLCIvd2lkZ2V0L2FwcC9zbyIsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCwwLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsMSxudWxsLDE0NCxudWxsLG51bGwsMywwLDAsMSwyLCIow6VwbmVzIGkgZW4gbnkgZmFuZSkiLG51bGwsMF0sW251bGwsbnVsbCxbbnVsbCxudWxsLG51bGwsImh0dHBzOi8vb2dzLmdvb2dsZS5jb20vd2lkZ2V0L2NhbGxvdXQ/ZW9tPTFcdTAwMjZkYz0xIl0sbnVsbCwyODAsNDIwLDcwLDI1LDAsbnVsbCwwLG51bGwsbnVsbCw4MDAwLG51bGwsNzEsNCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNzYsbnVsbCxudWxsLG51bGwsMTA3LDEwOCwxMDksIiIsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDEsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCwwXV0sbnVsbCxudWxsLCIxIiwiNTM4IiwwLDAsbnVsbCwibm8iLDAsbnVsbCxudWxsLDAsMCxbbnVsbCwiaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS8iLG51bGwsbnVsbCxudWxsLDAsbnVsbCwwLDAsIiIsIiIsIiIsImh0dHBzOi8vb2dhZHMtcGEuY2xpZW50czYuZ29vZ2xlLmNvbSIsbnVsbCwwLDAsIiIsIiIsbnVsbCwwLG51bGwsODY0MDAsbnVsbCxudWxsLG51bGwsbnVsbCwwLG51bGwsMCwwLCIxMTg0NzIwMTMxIiwzLDAsMSwwLDBdLDEsbnVsbCxudWxsLG51bGwsbnVsbCwwLCIiLDAsMCwwLDAsIkdvb2dsZS1hYm9ubmVtZW50IiwwLCJDQU1Ta1EwVmlRcXF0UXY0aGxpcjBhOE9xS3U3QmR5c1NkMlNCYWRZdlZVeWxoTzVFZW9lcEJMVkJ2b0NuQUdoRlBZQzBnQUJuZ1hDQmFZRHRBWk40Wk9DQXZnWGpnRUNxUWo0NTVRR3NnVEVCTXdGay1vRm1ZZ01kSWNHdFFZaDNJd0V0d09GX255ay15Q1NEZmNEdGU5YnRZaWxCcTN4UGR2XzlBM1JzdzdkbEE2Z1R1d3c1Rm5rTnZZZUx1RS1wQjc3T3ZRSV82WXowcDRBdGVnRzktUGJEcXdScXZ3TjJ3eTI4eHFSTHV4Y2lHdU9Sb0h6QmZyd3h3YjQwQ3lraEFXRGdRU0s2QzJHMGdMZUtwa1hqN1FHeHhQV042eEd0RDJ5QlFELUdzVWZsRS11R1pBT2xSM1FCdlFfb3dQSUZzSVg4d0xKQWZvWDh4LVpBNDhWMWdDOUJwY0VkSWtGbWdXU0NITGZEOGttMlFXb0Fkd0kwUmVsQm9FUHpoSGFCYmtEX2lYampEcVBCbWtDandTU0FJa0ZfUVdTQlY2QkJUWDNBd1FyVGh6eWl3YklCVUNWRDZVQWdRWU05d0xoQWZzRzVneF96Z1BoQllnR3FBSm5EcDZJQWJnRjd3VWFpQVlBQVNHaUJoNkVnd1d2QzZnQ2dRVE41UkYtUU1JTVozR1VPSU1Hc2dZem5BWWhwQVY2RWh1UkJ2d0NqUVk2bGdVNE16VkRXanVzQlFrRjZnUVRHSE5HQWJVQy1nYklCcU1DeHM4R1JJazJtQnZNQUpFUHB3WUZvQmZ0c3kybjZRVFhVN1NpRGV3eHFiODJyczhGck1rQjg5SUZCNFF3NXdUaXp5VUgwcW81a0FHU0Jjd0Zud2F3QXZjRG53VVZyd0hnRE9nQm9BdndEM1FBdlFhc0F1d1R4UkVVQ19rRFo5QUFLWk1HdEEyZ0RvWUdPNDRKbVE2VkJxa0NxQURfQktVTFFfZ0Mtd2pTRXU0QzF3a0ZELWdQMVFtUkFaWUcxQTJ2QTljT3lRYUNBLVVDckFhVUJ0SUEyQWJpRnAwR0lZMFBTT01JcEFQQkQ1c0R6d1NLQmtXWUJNQVk1d0RBRDhjUENaVUY5d3k1QkpBRzBBRnhvd1BWRDUwRGdnUE1CT0VDZ1FRRmxBYmtCcHNGcWdPWkRVdU5CcEFGaUFQTkJqaXNCUnlYQlBvT2p3VDNCc0FDd1EtTkJjNEZaYlVBekFhN0JMRU4yQWFnQTNaN0Jmb1BuQUhBQXNzRzNRTGhBd1hfQmxpYkZka1BrZzY2QU1VTHlBYXdBLWdHMVF5V0E0a0dEdHdGUm5LUkE2Y0JCZTBGaGFZRzY0a0YyN01TLU84Rmc1OEY4NUlEa20yV2hnYWdicF9JRGJUZEJkaVVCWWlkQWJHUkN1S3RBdC1wQVo4dEJLMmtCTmdGczV3RjhBQ2hzd08wdFFiQzdBV0o1UVMxTmZXVUJ1MWR2TWdGdTRvQ3Uzellkckd1QVB6WUJlX2xyUU5QUnFzWXZld0NxNElHQmFUOEJmcVVCb2JoREFLWmdnWFNvQUxvZ0FYY1hjZHdfWVVFM3ppYUJMa09CZmN5Z1ZYeTdnWHg4QVdtbUFUUEw5ZjBCcnI5QnBxZkJkWE9CUVQ1YnQ1ZmdTNmF0QUx3N1FiQUhLWE5CcG5HQmdTUEJlcTFCclBKQmJab0JQUkc1T1VHMGtHRjNnR29DYVBHQmNfSEF1RnhpcEFGNzY4RXlSRHhtd1h2c0FTbUNPOTcxMXkzbEFhY213VUxyaDNJWDRDckFlemlCcnk0QnZTQUFyMmZCcWNFaXFvRzJKNERuWTBHcWtMaERMa3J2LUlHQlpQX0J1R0RCWXViQlllR0JybUZCcEdMQmFxRUJvTmNtNWNCOEJIc3B3U2dOY0ExMnFvRTU2a0c3UmpFSlBUcUJvTENCZklUMkFxanRRYS1SYVVCMTRvRzFremxzZ1Bra0FiTkUtcEhBNlNtQnRFcmpUZTQ0d2JVVjZnRm9PZ0YxazZYREtGdDkxeVVCdnQ2MXBNRy1ReVNONHl0QkpfWEJhZzg4bDZNSWN4QXV1a0RqQm5OOUFha0k2My1CY3diQkp4UnV2RUdqbENOZl9yb0JQYU5CZjBxd19BR2t3MzVVZG0zQnF3Wm9hNEdQTVlVdGFFRXZnNk1lcTRWNzZvR2hPOEYxZ1A4VzdZS3FoYjlCYlRkQmRsODlScXRLXzhQdHJJR3ltRE5HTWRXMURXekU1RWZnWXNHelJ5RFJwYzk3UzZ6amdYU2Zfa0YtNU1HZ1JXNlRBUFVrZ2FEZnU2VEJ2QmY5MER4VE53RjdoQ1hKZjlEcUFiQ0FKbWlCdTZxQnNNekJaSVk2VmZWaHdhZEl2d0d1YWtHN3pHaFo2LUlCSVlGQV9XT0JMN0tCYnk1Qlo1M25EejlxQVhLX2xhRHFnYVdGOVl4Z2dqeXZBV0ZUSllodjNfZkNnUDFHb3dSeXlTU1RmMFY5M1hUTTg1UmdfY0cwUkdDS2N3bzN4aXNZc0FLcHc2T0NOa0N5QXV4UnVjVzN3bjhFb0l0a2tIT0JQSmxzRl9CRWFnSXpRcmRIZllDcmhlakJLb1B5UVl5NXk3NEJZMUR2aXIzRHBVQ3ZRR3dOOFFGQ1BRTmtnYUpDWm9NbUNIZEYtRUQtd3pMQ1ljdWlRV19ETmdOa1FUSkQ1c0lvU3JzRkw0SThDUzFReHE0R3I0RTlRVnVxQlNRQzlrcDFSbTh1Q1BHQWZBQWxnSHJCcmtBVmxUX0Jka0VvQVBQQnFvR2VjZ0VIM0IwQlZQQ0F0VUVCV3AwdXdiU0J2Y0JVb3dHdmdDakFzNENoZ0F1OUFHX0JlTUJyUUNpQ3RRQXBBYXFBX3NBdmgyWkEtNEVqUWE1RXRVRnV3S1NBRHIyQkpBR3JBT2pCZjBHaEFLQkJ1NEV6Z1VFaFFUd0E2MEdyQTNjQnBVRnlBaTJEb2tQIiwiIl0sbnVsbCxudWxsLFswLjAwOTk5OTk5OTc3NjQ4MjU4Miwibm8iLCI1MzgiLFtudWxsLCIiLCIwIixudWxsLDEsNTE4NDAwMCxudWxsLG51bGwsIiIsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDAsbnVsbCwwLG51bGwsMSwwLDAsMCxudWxsLG51bGwsMCwwLG51bGwsMCwwLDAsMCwwXSxudWxsLG51bGwsbnVsbCwwXV1dfTs8L3NjcmlwdD48ZGl2PjxkaXYgY2xhc3M9ImdiX1EiPkdvb2dsZS1hcHBlcjwvZGl2PjxzY3JpcHQgYXN5bmM9IiIgbm9uY2U9IllPeUhIM2x0T21EOUJveV9aQnlBbFEiIHNyYz0iaHR0cHM6Ly93d3cuZ3N0YXRpYy5jb20vb2cvXy9qcy9rPW9nLmFzeS5lbl9VUy5NXzdnaGlrUUFrQS4yMDE5Lk8vcnQ9ai9tPV9hYyxfYXdkLGFkYSxsbGRwLHFhZHMsYWJsZC9leG09L2Q9MS9lZD0xL3JzPUFBMllyVHRKVDJHUGx4MG5KODRSenNTLUQ5dVgxVHpBeVEiPjwvc2NyaXB0PjxsaW5rIGhyZWY9Imh0dHBzOi8vd3d3LmdzdGF0aWMuY29tL29nL18vc3Mvaz1vZy5hc3kuY2FHdTl4MHM1RE0uTC5GNC5PL209bGxfdGRtLGFkY2dtMyxsbF9mdyxhYmxkL2V4Y209L2Q9MS9lZD0xL2N0PXpnbXMvcnM9QUEyWXJUdWlBSlpHa3c2RmExcXRyLUlDaEVDenpJYTc4dyIgbm9uY2U9IllPeUhIM2x0T21EOUJveV9aQnlBbFEiIGlkPSJvZ2Jfc3MiIG1lZGlhPSJwcmludCIgcmVsPSJzdHlsZXNoZWV0Ij48c2NyaXB0IG5vbmNlPSJZT3lISDNsdE9tRDlCb3lfWkJ5QWxRIj5jb25zdCBsaW5rRWwgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnb2diX3NzJyk7bGlua0VsLm9ubG9hZCA9ICgpPT4ge2xpbmtFbC5tZWRpYSA9ICdhbGwnfTtsaW5rRWwucmVtb3ZlQXR0cmlidXRlKCdpZCcpOzwvc2NyaXB0PjwvZGl2PjxkaXYgc3R5bGU9ImRpc3BsYXk6J25vbmUnIiBqc2NvbnRyb2xsZXI9IktIb3VyZCIganNkYXRhPSJDNG1rdWY7XztZM3BuYXJURUxlaW13UEFQbzZTdGtBNDgiIGpzYWN0aW9uPSJyY3VRNmI6bnBUMm1kIiBkYXRhLXZlZD0iMGFoVUtFd2owZ1pLYWxfT1ZBeFZvRXhBSUhTTlNDLUlRdXFNSkNKd0IiPjwvZGl2PjwvZGl2Pjx0ZXh0YXJlYSBjbGFzcz0iY3NpIiBuYW1lPSJjc2kiIHN0eWxlPSJkaXNwbGF5Om5vbmUiPjwvdGV4dGFyZWE+PHNjcmlwdCBub25jZT0iWU95SEgzbHRPbUQ5Qm95X1pCeUFsUSI+KGZ1bmN0aW9uKCl7dmFyIHBkPS0xO3ZhciBwaT0wOyhmdW5jdGlvbigpe2Z1bmN0aW9uIGgoKXtmdW5jdGlvbiBiKGUsbCl7ZT1lLnF1ZXJ5U2VsZWN0b3JBbGwoImltZyIpO2Zvcih2YXIgZz0wO2c8ZS5sZW5ndGg7ZysrKWwucHVzaChlW2ddKX12YXIgYT1kb2N1bWVudCxjPVtdO2IoYSxjKTthPWEucXVlcnlTZWxlY3RvckFsbCgiW2RhdGEtc2hhZG93LXJvb3RdIik7Zm9yKHZhciBkPTA7ZDxhLmxlbmd0aDtkKyspe3ZhciBmPWFbZF07Zi5zaGFkb3dSb290JiZiKGYuc2hhZG93Um9vdCxjKX1yZXR1cm4gY307dmFyIGs9Z29vZ2xlLmMuc3NkaTtmdW5jdGlvbiBtKGIsYSl7Z29vZ2xlLmMuZSgibG9hZCIsYixTdHJpbmcoYSkpfTt3aW5kb3cuZ29vZ2xlPXdpbmRvdy5nb29nbGV8fHt9O2dvb2dsZS5jLmlpbT1nb29nbGUuYy5paW18fHt9OyhmdW5jdGlvbigpe2Z1bmN0aW9uIGIoKXtnb29nbGUuYy51YmYmJmdvb2dsZS5jLnUoImZydCIpO2dvb2dsZS5jLmNhZXx8Z29vZ2xlLmMubWFmdChhLG51bGwpO2dvb2dsZS5jLm1pbWwoYSk7Z29vZ2xlLmMudSgicHJ0Iil9dmFyIGE9RGF0ZS5ub3coKTtnb29nbGUudGljaygibG9hZCIsInBydCIsYSwiU2VhcmNoQm9keUVuZCIpO3ZhciBjPWs/aCgpOmRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJpbWciKTttKCJpbW4iLGMubGVuZ3RoKTttKCJkdGMiLGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJkaXYiKS5sZW5ndGgpO20oInN0YyIsZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInNwYW4iKS5sZW5ndGgpO2dvb2dsZS5jLndwcj9nb29nbGUuYy5xKCJwcnMiLGZ1bmN0aW9uKCl7aWYocGQ+PTApaWYocGk+MCl2YXIgZD1EYXRlLm5vdygpLGY9c2V0SW50ZXJ2YWwoZnVuY3Rpb24oKXtpZihnb29nbGUuYy53aD4xMHx8RGF0ZS5ub3coKS1kPj1wZCljbGVhckludGVydmFsKGYpLGIoKX0scGkpO2Vsc2Ugc2V0VGltZW91dChiLHBkKTtlbHNlIGIoKX0pOmIoKX0pKCk7fSkuY2FsbCh0aGlzKTt9KSgpOyhmdW5jdGlvbigpe3dpbmRvdy5nb29nbGU9d2luZG93Lmdvb2dsZXx8e307d2luZG93Lmdvb2dsZS5pc2hrPVtdO2Z1bmN0aW9uIGEoKXtyZXR1cm4gd2luZG93LnNjcm9sbFkrd2luZG93LmRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5jbGllbnRIZWlnaHQ+PU1hdGgubWF4KGRvY3VtZW50LmJvZHkuc2Nyb2xsSGVpZ2h0LGRvY3VtZW50LmJvZHkub2Zmc2V0SGVpZ2h0KX1mdW5jdGlvbiBiKCl7YSgpJiZ3aW5kb3cuZ29vZ2xlLmlzaGsubGVuZ3RoPT09MCYmKHdpbmRvdy5nb29nbGUuYnM9ITAsd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoInNjcm9sbCIsYikpfWEoKT93aW5kb3cuZ29vZ2xlLmJzPSEwOih3aW5kb3cuZ29vZ2xlLmJzPSExLHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCJzY3JvbGwiLGIpKTt9KS5jYWxsKHRoaXMpOzwvc2NyaXB0PjxkaXYganNjb250cm9sbGVyPSJvUWZiRGQiIGpzYWN0aW9uPSJyY3VRNmI6bnBUMm1kIj48L2Rpdj48ZGl2IGpzY29udHJvbGxlcj0iVERGa3llIiBkYXRhLXZwbG9hZD0iIiBqc2FjdGlvbj0icmN1UTZiOm5wVDJtZCI+PC9kaXY+PHNjcmlwdCBub25jZT0iWU95SEgzbHRPbUQ5Qm95X1pCeUFsUSI+KGZ1bmN0aW9uKCl7dmFyIHBtYz0ne1x4MjJhYmRceDIyOntceDIyYWJkXHgyMjpmYWxzZSxceDIyZGViXHgyMjpmYWxzZSxceDIyZGV0XHgyMjpmYWxzZX0sXHgyMmNkb3NceDIyOnt9LFx4MjJjc2lceDIyOnt9LFx4MjJkXHgyMjp7fSxceDIyaHNtXHgyMjp7fSxceDIyanNhXHgyMjp7XHgyMmNzaVx4MjI6dHJ1ZSxceDIyY3Npclx4MjI6MTAwfSxceDIybWI0WlViXHgyMjp7fSxceDIyc2Jfd2l6XHgyMjp7XHgyMnJmc1x4MjI6W10sXHgyMnNjcVx4MjI6XHgyMlx4MjIsXHgyMnN0b2tceDIyOlx4MjJFQ3pEUjdLUzEySlluM2hIWmZNUTNPSjRUWTBceDIyfX0nO2dvb2dsZS5wbWM9SlNPTi5wYXJzZShwbWMpO30pKCk7KGZ1bmN0aW9uKCl7dmFyIG09eyJZM3BuYXJURUxlaW13UEFQbzZTdGtBNDEiOlsiZ3dzLXdpeiIsIiIsIiIsIiIsMSwwLDAsMTMsIm5vIiwiIiwiWTNwbmFyVEVMZWltd1BBUG82U3RrQTQiLDAsIm5vIiwiIixudWxsLG51bGwsMywxNSwtMSxudWxsLCI4OTk3ODQ0OSIsMSwwLDE4MDAwMDAsMSw2LDAsMSwwLDEsMSxudWxsLG51bGwsMSwxLG51bGwsbnVsbCxudWxsLDAsbnVsbCwwLG51bGwsMSxudWxsLDEsMCwxLG51bGwsWyJnd3Mtd2l6LW1vZGVsZXNzLWxvY2FsIiwiIiwiIl0sbnVsbCxbImd3cy13aXotbW9kZWxlc3MtcHJvZHVjdHMiLCIiLCJzaCJdLFsiZ3dzLXdpei1tb2RlbGVzcy1sb2RnaW5nIiwiIiwiIl0sWyJnd3Mtd2l6LW1vZGVsZXNzLWZsaWdodHMiLCIiLCIiXSwxLG51bGwsbnVsbCxbImd3cy13aXotbW9kZWxlc3MtdnNzLXByb2R1Y3RzIiwiIiwiIl0sWyJnd3Mtd2l6LW1vZGVsZXNzLXZzcy1qb2JzIiwiIiwiIl0sWyJnd3Mtd2l6LW1vZGVsZXNzLXZzcy1sb2NhbC10cmF2ZWwiLCIiLCIiXSxbImd3cy13aXotbW9kZWxlc3MtdmlkZW8iLCIiLCJ2Il0sWyJnd3Mtd2l6LW1vZGVsZXNzLWpvYnMiLCIiLCIiXSxbImd3cy13aXotbW9kZWxlc3MtdnNzLWZsaWdodHMiLCIiLCIiXSxbImd3cy13aXotbW9kZWxlc3MiLCIiLCIiXSxbImd3cy13aXotbW9kZWxlc3Mtc2hvcHBpbmciLCIiLCJzaCJdLG51bGwsbnVsbCxudWxsLFsibXVsdGltb2RhbC1sZW5zLXdlYiIsIiIsIiJdLG51bGwsMSwwLFsiZ3dzLXdpei1tb2RlbGVzcy1mb3J1bXMiLCIiLCIiXSxbImd3cy13aXotbW9kZWxlc3Mtc2hvcnQtdmlkZW9zIiwiIiwiIl0sbnVsbCxbImd3cy13aXotbW9kZWxlc3Mtd2ViLW9ubHkiLCIiLCIiXSwwLCIiXSwiWTNwbmFyVEVMZWltd1BBUG82U3RrQTQyIjpbMSwwLDAsMCwwLDAsMCwwLDAsMCwwLDBdLCJZM3BuYXJURUxlaW13UEFQbzZTdGtBNDMiOltbbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsMTBdLG51bGwsbnVsbCxbWzEsIkxlZ2cgdGlsIGJpbGRlciIsWzEsMTAsbnVsbCxudWxsLFs5LDQsMl0sbnVsbCxudWxsLDFdLFs5M10sMV0sWzIsIkxlZ2cgdGlsIGZpbGVyIixbMiwxMCxudWxsLG51bGwsWzksMl0sbnVsbCxbMSwzXV0sWzkyXSwzXV0sW1s5LG51bGwsIkFJLW1vZHVzIiwiQUktbW9kdXMiLCJTcMO4ciBHb29nbGUiLFs5LG51bGwsMSxudWxsLDFdLG51bGwsbnVsbCxbODZdXV0sbnVsbCxbIlZlcmt0w7h5Il0sbnVsbCwiU3DDuHIgb20gaHZhIHNvbSBoZWxzdCJdLCJZM3BuYXJURUxlaW13UEFQbzZTdGtBNDQiOltudWxsLG51bGwsbnVsbCwiYXV0b2NvbXBsZXRlX3VzZXJfZmVlZGJhY2tfa3BfaWQiLG51bGwsMTEsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDUwMTA3MTUsInNlYXJjaGJveCIsbnVsbCwiQXV0b2NvbXBsZXRlUHJlZGljdGlvbiIsbnVsbCxudWxsLG51bGwsbnVsbCwxMV0sIlkzcG5hclRFTGVpbXdQQVBvNlN0a0E0NSI6WzMsNixudWxsLG51bGwsMSwxLDAsMCwwLDAsMCwwLDAsMCwwLDBdLCJZM3BuYXJURUxlaW13UEFQbzZTdGtBNDYiOlsiIiw2LDBdLCJZM3BuYXJURUxlaW13UEFQbzZTdGtBNDciOlsiIiw0LDBdLCJZM3BuYXJURUxlaW13UEFQbzZTdGtBNDgiOltudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDMseyIyMSI6MCwiNDQiOjEsIjYxIjoxLCI2MiI6MiwiNzIiOiJVTktOT1dOX0JST1dTRVIifV19O3ZhciBhPW07aWYod2luZG93LldfamQpZm9yKHZhciBiIGluIGEpd2luZG93LldfamRbYl09YVtiXTtlbHNlIHdpbmRvdy5XX2pkPWE7fSkoKTsoZnVuY3Rpb24oKXt3aW5kb3cuV0laX2dsb2JhbF9kYXRhPXsiSW02Y21mIjoiL3dpenJwY3VpL18vV2l6UnBjVWkiLCJZbGxoM2UiOiIlLkAuMTc4NTE2NjQzNTc0NjAzNiwxMzUyNzEyNzIsMzc5MjM5MjczOV0iLCJNVUU2TmUiOiJzZWFyY2hfd2ViIiwidzJidEFlIjoiJS5ALm51bGwsbnVsbCxcIjBcIixudWxsLG51bGwsbnVsbCwxXSIsIlRvZUlNYiI6ImZhbHNlIiwieG5JOVAiOiJmYWxzZSIsInU0ZzdyIjoiJS5ALm51bGwsMSwzXSIsIlNObE0wZSI6IiIsIkdXc2RLZSI6Im5vLU5PIiwiZDJ6ckRmIjoiJS5ALntcIjEzMVwiOjEsXCIxMzZcIjpbW1wiYXNkcGVcIixbMTA4XV0sW1wiYWdwbFwiLFsxMDhdXSxbXCJkbHZzMVwiLFs4MywxNV1dLFtcInB2Zmx0XCIsWzYwLDg0LDg1XV0sW1wiY3NpZVwiLFs0MF1dLFtcImNzaWVcIixbMTA3XV0sW1wiZXBzZDFcIixbNjJdXSxbXCJyaW1zcHdvdW9lXCIsWzYyXV0sW1wibmlzYnRzYWNcIixbNDMsMTA1XV0sW1wiaXZzcGxlXCIsWzkzXV0sW1wiaWF0cnNwZVwiLFs4NiwzMCwzNiwzNywyNiwzNSwzOF1dLFtcImx0YWVcIixbNDUsNzAsNDYsNDcsODNdXSxbXCJhaW9sc2JlXCIsWzEwOF1dXX1dIiwib2N4Rm5iIjoiJS5ALl0iLCJ6Q2hKb2QiOiIlLkAuXSIsIlNUZmFSZCI6Int9IiwieUZueHJmIjoiMjg0OCIsIkxWSVhYYiI6IjEiLCJTMDZHcmIiOiIiLCJRcnR4SyI6IjAiLCJTNmxabCI6Ijg5OTc4NDQ5Iiwib3hOM25iIjp7IjEiOmZhbHNlfSwiZXB0WmUiOiIvd2l6cnBjdWkvXy9XaXpScGNVaS8iLCJZbHZwcWIiOiIlLkAuXCJtdWx0aW1vZGFsLWltYWdlLXZpZXdlclwiLG51bGwsbnVsbCxudWxsLDEsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxcIm5vLU5PXCIsXCJodHRwczovL3d3dy5nb29nbGUuY29tXCIsbnVsbCwxLHtcIjIyXCI6MSxcIjQ0XCI6MSxcIjU1XCI6MH1dIn07d2luZG93LklKX3ZhbHVlcz17IkE1dEYzYiI6ZmFsc2UsInpoa1JPIjoiJS5ALm51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCwwLDEsMCxcIi9zZXRwcmVmcz9zaWdcXHUwMDNkMF81Z1AyT2RuMVNiYTdEdWRhVWxBUXNJS1RZN1ElM0RcXHUwMDI2c3psXFx1MDAzZDBcIiwwLDEsMF0iLCJ3MmJ0QWUiOiIlLkAubnVsbCxudWxsLFwiMFwiLG51bGwsbnVsbCxudWxsLDFdIiwiZWEyVksiOiIlLkAuMSwxXSIsInB4TzRaZCI6IjAiLCJtWE9ZNWQiOiIlLkAubnVsbCwxLDEsbnVsbCxbbnVsbCw3NTcsMTQ0MF1dIiwiU3NRNHgiOiJZT3lISDNsdE9tRDlCb3lfWkJ5QWxRIiwiTXVKV2pkIjp0cnVlLCJHV3NkS2UiOiJuby1OTyIsIk4xeWNhYiI6Im5vX05PIiwiTWdVY0RiIjoiTk8iLCJTSXNyVGQiOmZhbHNlLCJmeUxwRGMiOiIiLCJKUG5UcCI6IiUuQC5cIiNmMWYzZjRcIixcIjM2cHhcIl0iLCJaeHRQQ2QiOiIlLkAue1wiMTAwXCI6XCIxMnB4XCIsXCIxMDFcIjpcIjhweFwiLFwiMTAyXCI6XCI4cHhcIixcIjEwM1wiOlwiMTBweFwiLFwiMTA0XCI6XCI5cHhcIn1dIiwiTnl6Q3dlIjoiJS5ALm51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxcIjE4cHhcIixcIjIwcHhcIixcIjE4cHhcIixcIiMyMDIxMjRcIixcIjE2cHhcIixcInZhcigtLUlYb3hVZSlcIixcInZhcigtLVlMTk5IYylcIixcInZhcigtLVlMTk5IYylcIixcInZhcigtLUlYb3hVZSlcIl0iLCJzcHoycSI6IiUuQC5cInZhcigtLXhoVUd3YylcIixudWxsLG51bGwsbnVsbCxudWxsLFwiMHB4XCJdIiwiZ2VpUXhjIjoiJS5ALlwiMjM0cHhcIixcIjE3NnB4XCIsXCIyMDRweFwiLFwiMTcycHhcIixcIjEyOHB4XCIsXCIxNDhweFwiLFwiMTExcHhcIixcIjgzcHhcIixcIjkycHhcIl0iLCJ4Rm1jb2YiOiIlLkAubnVsbCxudWxsLG51bGwsXCIyMHB4XCIsbnVsbCxcIjEycHhcIl0iLCJsRHFpb2YiOiIlLkAuXCJ2YXIoLS1ZTE5OSGMpXCIsXCJ2YXIoLS1iYlF4QWIpXCIsXCJ2YXIoLS1yckpKVWMpXCIsbnVsbCxcInZhcigtLUlYb3hVZSlcIixcInZhcigtLUpLcXgyKVwiLFwiIzY4MWRhOFwiLG51bGwsbnVsbCxcInZhcigtLXhoVUd3YylcIixcInZhcigtLU5zbTBjZSlcIixcInZhcigtLUVwRk5XKVwiLFwiI2U4ZjBmZVwiLFwiIzAwMWQzNVwiLFwiI2YxZjNmNFwiLFwiIzFmMWYxZlwiLFwiI2ZmZlwiLFwiIzFmMWYxZlwiLFwiIzFmMWYxZlwiLFwiI2ZmZlwiLFwidmFyKC0tWlhpYUdmKVwiLFwidmFyKC0tRW9LT2JlKVwiLFwiIzE0NmMyZVwiLFwiI2IzMjYxZVwiLFwiI2IwNjAwMFwiLFwidmFyKC0tbVhaa3FjKVwiLFwidmFyKC0tY0llaGxkKVwiLFwidmFyKC0tZ1ZVS2NkKVwiLG51bGwsXCJ2YXIoLS1nUzVqWGIpXCIsXCIjZDJlM2ZjXCIsbnVsbCxcInZhcigtLVRNWVM5KVwiLFwidmFyKC0tYW1uUHdlKVwiLG51bGwsXCJ0cmFuc3BhcmVudFwiLFwidmFyKC0tT05ockdkKVwiLFwicmdiYSgwLDAsMCwwLjAzKVwiLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLFwiI2VhNDMzNVwiLFwiIzM0YTg1M1wiLFwiIzQyODVmNFwiLFwiI2ZiYmMwNFwiLFwidmFyKC0teXd6MDFjKVwiLFwiI2RhZGNlMFwiLFwiI2YzZjVmNlwiLG51bGwsbnVsbCxudWxsLG51bGwsXCIjZThmMGZlXCIsXCJ2YXIoLS1YS01EeGMpXCIsXCJ2YXIoLS1hWW4yUylcIixudWxsLFwidmFyKC0tQXFuN3hkKVwiLG51bGwsXCIjYjMyNjFlXCIsXCIjZjlkZWRjXCIsXCIjZmZkZjkyXCIsXCIjZjRiZjAwXCIsXCIjZmZmXCIsXCIjNDEwZTBiXCIsXCIjMjQxYTAwXCIsXCIjMjQxYTAwXCIsXCIjZmZmXCIsXCJ2YXIoLS15VHRzRWYpXCIsXCIjYjMyNjFlXCIsXCIjMTQ2YzJlXCIsXCIjMTQ2YzJlXCIsXCIjYzRlZWQwXCIsXCJ2YXIoLS1ud1hvYmIpXCIsXCJ2YXIoLS12WmUwamIpXCIsXCJ2YXIoLS1RV2FhYWYpXCIsXCJ2YXIoLS1aRXBQbWQpXCIsXCJ2YXIoLS1KY2xGailcIixcInZhcigtLUxtNTcwYilcIixcIiNmZmZcIixcInZhcigtLWpJTnU2YylcIixcInZhcigtLUJSTHdFKVwiLFwidmFyKC0tREVlU3RmKVwiLFwidmFyKC0tVFNXWkliKVwiLFwidmFyKC0tdUx6MzdjKVwiLG51bGwsXCIjNTQ1ZDdlXCIsXCJ2YXIoLS1UeVZZbGQpXCIsbnVsbCxudWxsLG51bGwsbnVsbCxcInZhcigtLVZ1WlhCZClcIixcInJnYmEoMjMsMjMsMjMsMC43NSlcIix7XCIxMDBcIjpcInJnYmEoMjQ4LDI0OSwyNTAsMC45NilcIixcIjEwMVwiOlwicmdiYSgyNTUsMjU1LDI1NSwwLjgpXCIsXCIxMDJcIjpcInJnYmEoNjAsNjQsNjcsMC4xNilcIixcIjEwM1wiOlwiIzE5NjdkMlwiLFwiMTA0XCI6XCIjMjAyMTI0XCIsXCIxMDVcIjpcIiNmMWYzZjRcIixcIjEwNlwiOlwiI2YxZjNmNFwiLFwiMTA3XCI6XCJ2YXIoLS1qd0ZDMmUpXCIsXCIxMDhcIjpcInZhcigtLWpJTnU2YylcIixcIjEwOVwiOlwidmFyKC0tWHFib2NlKVwiLFwiMTEwXCI6XCJ2YXIoLS12ZHd4cGUpXCIsXCIxMTFcIjpcIiMxZjFmMWZcIixcIjExMlwiOlwiIzAwMFwiLFwiMTEzXCI6XCIjZmZmXCIsXCIxMTRcIjpcInZhcigtLUNPRW1ZKVwiLFwiMTE1XCI6XCIjYWJhYmFiXCIsXCIxMTZcIjpcIiNmN2Y4ZmFcIn1dIiwia1hWVXpkIjoiJS5ALlwiNDBweFwiLFwiNDhweFwiXSIsInNDVTUwZCI6IiUuQC5udWxsLFwibm9uZVwiLG51bGwsXCIwcHggMXB4IDNweCByZ2JhKDYwLDY0LDY3LDAuMDgpXCIsbnVsbCxcIjBweCAycHggNnB4IHJnYmEoNjAsNjQsNjcsMC4xNilcIixudWxsLFwiMHB4IDRweCAxMnB4IHJnYmEoNjAsNjQsNjcsMC4yNClcIixudWxsLG51bGwsXCIxcHggc29saWQgdmFyKC0tbVhaa3FjKVwiLFwiMFwiLFwiMFwiLFwiMFwiLG51bGwsXCIwcHggMXB4IDNweCByZ2JhKDYwLDY0LDY3LDAuMjQpXCIsXCIwXCIsXCIwcHhcIixcIjFweFwiLFwiMnB4XCIsXCIzcHhcIl0iLCJ3OVppY2MiOiIlLkAuXCIjZjFmM2Y0XCIsXCIyNnB4XCIsXCIjZTJlZWZmXCIsXCIjMDA2MGYwXCIsXCIjZTJlZWZmXCIsXCIxcHhcIixcIiNkYWRjZTBcIixcIjFweFwiLFwiI2ZmZlwiLFwiI2RhZGNlMFwiLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLFwiMjhweFwiLFwiMTBweFwiLFwiOHB4XCIsXCIyMHB4XCIsXCIxMHB4XCIsXCJ2YXIoLS1YS01EeGMpXCIsXCJ2YXIoLS1tWFprcWMpXCIsXCIjZmZmXCIsXCJ2YXIoLS1UU1daSWIpXCIsXCJ2YXIoLS1UTVlTOSlcIixcInZhcigtLVRTV1pJYilcIixcInZhcigtLVRNWVM5KVwiXSIsIklrU3NyZiI6IiUuQC5cIkdvb2dsZSBTYW5zLEFyaWFsLHNhbnMtc2VyaWZcIixcIkdvb2dsZSBTYW5zLEFyaWFsLHNhbnMtc2VyaWZcIixcIkFyaWFsLHNhbnMtc2VyaWZcIixcIkFyaWFsLHNhbnMtc2VyaWZcIixcIkFyaWFsLHNhbnMtc2VyaWZcIixcIkFyaWFsLHNhbnMtc2VyaWZcIixcIkFyaWFsLHNhbnMtc2VyaWZcIixcIkdvb2dsZSBTYW5zLEFyaWFsLHNhbnMtc2VyaWZcIixcIkFyaWFsLHNhbnMtc2VyaWZcIixcIkFyaWFsLHNhbnMtc2VyaWZcIl0iLCJNUjB3NCI6IiUuQC5cInZhcigtLWdvb2dsZS1mcywxKVwiLFwidmFyKC0tZ29vZ2xlLXNjcmVlbi1zY2FsZS1yYXRpbywxKVwiXSIsIk9JdE5xZiI6IiUuQC5udWxsLFwiMjRweFwiXSIsImoyRm9TIjoiJS5ALm51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxcIjIwcHhcIl0iLCJlMnpvVyI6IiUuQC5cIjE2cHhcIixcIjEycHhcIixcIjBweFwiLFwiOHB4XCIsXCI0cHhcIixcIjJweFwiLFwiMjBweFwiLFwiMjRweFwiLFwiNDhweFwiLFwiMjBweFwiLG51bGwsbnVsbCxcIjBweFwiLFwiMjBweFwiLFwiMzZweFwiLFwiMjBweFwiLG51bGwsXCI4M3B4XCIsXCI1MnB4XCIsXCI2cHhcIixcIjIwcHhcIixcIjE4cHhcIixcIjE2cHhcIixcIjI0cHhcIixcIjEycHhcIixcIjZweFwiLFwiNzVweFwiLFwiNTJweFwiLFwiNzk5Ljk4cHhcIixcIjY4NHB4XCIsXCI2ODMuOThweFwiLFwiMTE2My45OHB4XCIsXCI5NDBweFwiLFwiMTU2MHB4XCIsXCIxMTY0cHhcIixcIjkzOS45OHB4XCIsXCI4MDBweFwiLFwiODJweFwiLFwiNzVweFwiLFwiNTJweFwiLFwiODNweFwiLFwiNDhweFwiXSIsIlcxQnRlIjoiJS5ALlwiY3ViaWMtYmV6aWVyKDAuMSwxLDAuMiwxKVwiLFwiY3ViaWMtYmV6aWVyKDAuOCwwLDEsMC44KVwiLFwiY3ViaWMtYmV6aWVyKDAuMiwwLjYsMC4yLDEpXCIsXCJjdWJpYy1iZXppZXIoMC40LDAsMSwwLjgpXCIsXCIzMDBtc1wiLFwiMTAwbXNcIixcIjIwMG1zXCIsXCIyNTBtc1wiLFwiY3ViaWMtYmV6aWVyKDAuNCwwLDAuMiwxKVwiLFwiY3ViaWMtYmV6aWVyKDAuNCwwLDAuNiwxKVwiLFwiY3ViaWMtYmV6aWVyKDAuNiwwLDAsMSlcIixcImN1YmljLWJlemllcigwLDAsMSwxKVwiLFwiY3ViaWMtYmV6aWVyKDAuMiwwLDAsMSlcIixcIjgwMG1zXCIsXCIxMDAwbXNcIixcIjQwMG1zXCIsXCI1MDBtc1wiLFwiNjAwbXNcIixcIjUwbXNcIixcIjQwMG1zXCIsXCIzMDBtc1wiLFwiMjUwbXNcIixcIjE1MG1zXCIsXCIyNTBtc1wiLFwiMjAwbXNcIixcIjE1MG1zXCIsXCIxNTBtc1wiLFwiMzAwbXNcIixcIjI1MG1zXCIsXCIyMDBtc1wiLFwiMTUwbXNcIixcIjQ1MG1zXCIsXCI0NTBtc1wiLFwiMzAwbXNcIixcIjE1MG1zXCIsXCIzMDBtc1wiLFwiMjUwbXNcIixcIjIwMG1zXCIsXCIxMDBtc1wiLFwiMjUwbXNcIixcIjIwMG1zXCIsXCIxNTBtc1wiLFwiMTAwbXNcIixcIjI1MG1zXCIsXCIyMDBtc1wiLFwiMTUwbXNcIixcIjEwMG1zXCIsXCIzMDBtc1wiLFwiMjUwbXNcIixcIjIwMG1zXCIsXCIxMDBtc1wiLFwibnVsbFwiLFwiY3ViaWMtYmV6aWVyKDAuMywwLDAuOCwwLjE1KVwiLFwiY3ViaWMtYmV6aWVyKDAuMDUsMC43LDAuMSwxKVwiLFwiY3ViaWMtYmV6aWVyKDAsMCwxLDEpXCIsXCJjdWJpYy1iZXppZXIoMC4yLDAsMCwxKVwiLFwiY3ViaWMtYmV6aWVyKDAuMywwLDEsMSlcIixcImN1YmljLWJlemllcigwLDAsMCwxKVwiLFwiMjUwbXNcIixcIjIwMG1zXCIsXCIxNTBtc1wiLFwiNTBtc1wiLG51bGwsXCI1MG1zXCIsXCI0MDBtc1wiLFwiMzUwbXNcIixcIjI1MG1zXCIsXCI1MG1zXCIsXCI1MG1zXCIsXCI1MG1zXCIsXCIyMDBtc1wiLFwiMTUwbXNcIixcIjEwMG1zXCIsXCI1MG1zXCIsXCIyMDBtc1wiLFwiMTUwbXNcIixcIjEwMG1zXCIsXCI1MG1zXCIsXCI1MG1zXCIsXCI1MG1zXCIsXCIyNTBtc1wiLFwiMjAwbXNcIixcIjE1MG1zXCIsXCI1MG1zXCIsXCI1MG1zXCIsXCI1MG1zXCIsXCJjdWJpYy1iZXppZXIoMC4wNSwwLjcsMC4xLDEpXCIsXCJjdWJpYy1iZXppZXIoMC4zLDAsMC44LDAuMTUpXCIsXCI4NTBtc1wiLFwiOTAwbXNcIixcIjk1MG1zXCIsXCIxMDAwbXNcIixcIjY1MG1zXCIsXCI3MDBtc1wiLFwiNzUwbXNcIixcIjgwMG1zXCIsXCIwbXNcIixcIjQ1MG1zXCIsXCI1MDBtc1wiLHtcIjEwMFwiOlwiNTUwbXNcIixcIjEwMVwiOlwiNjAwbXNcIixcIjEwMlwiOlwiMjUwbXNcIixcIjEwM1wiOlwiMzAwbXNcIixcIjEwNFwiOlwiMzUwbXNcIixcIjEwNVwiOlwiNDAwbXNcIixcIjEwNlwiOlwiNTBtc1wiLFwiMTA3XCI6XCIxMDBtc1wiLFwiMTA4XCI6XCIxNTBtc1wiLFwiMTA5XCI6XCIyMDBtc1wiLFwiMTEwXCI6XCJjdWJpYy1iZXppZXIoMC42MywtMC45NSwwLDEpXCIsXCIxMTFcIjpcImN1YmljLWJlemllcigwLjYzLC0wLjUsMCwxKVwiLFwiMTEyXCI6XCJudWxsXCIsXCIxMTNcIjpcImN1YmljLWJlemllcigwLjMsMCwwLjgsMC4xNSlcIixcIjExNFwiOlwiY3ViaWMtYmV6aWVyKDAuMDUsMC43LDAuMSwxKVwiLFwiMTE1XCI6XCJjdWJpYy1iZXppZXIoMC40LDAsMC4yLDEpXCIsXCIxMTZcIjpcImN1YmljLWJlemllcigwLjQsMCwxLDEpXCIsXCIxMTdcIjpcImN1YmljLWJlemllcigwLDAsMC4yLDEpXCIsXCIxMThcIjpcImN1YmljLWJlemllcigwLDAsMSwxKVwiLFwiMTE5XCI6XCJjdWJpYy1iZXppZXIoMC4yLDAsMCwxKVwiLFwiMTIwXCI6XCJjdWJpYy1iZXppZXIoMC4zLDAsMSwxKVwiLFwiMTIxXCI6XCJjdWJpYy1iZXppZXIoMCwwLDAsMSlcIixcIjEyMlwiOlwibnVsbFwiLFwiMTIzXCI6XCIwbXNcIixcIjEyNFwiOlwiMTAwbXNcIixcIjEyNVwiOlwiMTAwMG1zXCIsXCIxMjZcIjpcIjE1MG1zXCIsXCIxMjdcIjpcIjE1MDBtc1wiLFwiMTI4XCI6XCIyMDBtc1wiLFwiMTI5XCI6XCIyMDAwbXNcIixcIjEzMFwiOlwiMjUwbXNcIixcIjEzMVwiOlwiMzAwbXNcIixcIjEzMlwiOlwiMzAwMG1zXCIsXCIxMzNcIjpcIjM1MG1zXCIsXCIxMzRcIjpcIjQwMG1zXCIsXCIxMzVcIjpcIjQ1MG1zXCIsXCIxMzZcIjpcIjUwbXNcIixcIjEzN1wiOlwiNTAwbXNcIixcIjEzOFwiOlwiNjAwbXNcIixcIjEzOVwiOlwiODAwbXNcIixcIjE0MFwiOlwiNTBtc1wiLFwiMTQxXCI6XCJudWxsXCIsXCIxNDJcIjpcIjFcIixcIjE0M1wiOlwiMTYwMFwiLFwiMTQ0XCI6XCJudWxsXCIsXCIxNDVcIjpcIjAuOFwiLFwiMTQ2XCI6XCIzODBcIixcIjE0N1wiOlwibnVsbFwiLFwiMTQ4XCI6XCIxXCIsXCIxNDlcIjpcIjM4MDBcIixcIjE1MFwiOlwibnVsbFwiLFwiMTUxXCI6XCIwLjZcIixcIjE1MlwiOlwiODAwXCIsXCIxNTNcIjpcIm51bGxcIixcIjE1NFwiOlwiMVwiLFwiMTU1XCI6XCI4MDBcIixcIjE1NlwiOlwibnVsbFwiLFwiMTU3XCI6XCIwLjhcIixcIjE1OFwiOlwiMjAwXCIsXCIxNTlcIjpcImN1YmljLWJlemllcigwLjM0LDAuOCwwLjM0LDEpXCIsXCIxNjBcIjpcImN1YmljLWJlemllcigwLjM4LDEuMjEsMC4yMiwxKVwiLFwiMTYxXCI6XCJjdWJpYy1iZXppZXIoMC4zMSwwLjk0LDAuMzQsMSlcIixcIjE2MlwiOlwiY3ViaWMtYmV6aWVyKDAuNDIsMS42NywwLjIxLDAuOSlcIixcIjE2M1wiOlwiY3ViaWMtYmV6aWVyKDAuMzQsMC44OCwwLjM0LDEpXCIsXCIxNjRcIjpcImN1YmljLWJlemllcigwLjM5LDEuMjksMC4zNSwwLjk4KVwiLFwiMTY2XCI6XCJjdWJpYy1iZXppZXIoMC4zNCwwLjgsMC4zNCwxKVwiLFwiMTY3XCI6XCJjdWJpYy1iZXppZXIoMC4yNywxLjA2LDAuMTgsMSlcIixcIjE2OFwiOlwiY3ViaWMtYmV6aWVyKDAuMzEsMC45NCwwLjM0LDEpXCIsXCIxNjlcIjpcImN1YmljLWJlemllcigwLjI3LDEuMDYsMC4xOCwxKVwiLFwiMTcwXCI6XCJjdWJpYy1iZXppZXIoMC4zNCwwLjg4LDAuMzQsMSlcIixcIjE3MVwiOlwiY3ViaWMtYmV6aWVyKDAuMjcsMS4wNiwwLjE4LDEpXCIsXCIxNzJcIjpcIm51bGxcIixcIjE3M1wiOlwibnVsbFwiLFwiMTc0XCI6XCJudWxsXCIsXCIxNzVcIjpcIm51bGxcIixcIjE3NlwiOlwibnVsbFwiLFwiMTc3XCI6XCJudWxsXCIsXCIxNzlcIjpcIm51bGxcIixcIjE4MFwiOlwibnVsbFwiLFwiMTgxXCI6XCJudWxsXCIsXCIxODJcIjpcIm51bGxcIixcIjE4M1wiOlwibnVsbFwiLFwiMTg0XCI6XCJudWxsXCIsXCIxODZcIjpcIjMyMFwiLFwiMTg3XCI6XCJudWxsXCIsXCIxODhcIjpcIjFcIixcIjE4OVwiOlwiMTYwMFwiLFwiMTkwXCI6XCJudWxsXCIsXCIxOTFcIjpcIjAuOVwiLFwiMTkyXCI6XCI3MDBcIixcIjE5M1wiOlwibnVsbFwiLFwiMTk0XCI6XCIxXCIsXCIxOTVcIjpcIjM4MDBcIixcIjE5NlwiOlwibnVsbFwiLFwiMTk3XCI6XCIwLjlcIixcIjE5OFwiOlwiMTQwMFwiLFwiMTk5XCI6XCJudWxsXCIsXCIyMDBcIjpcIjFcIixcIjIwMVwiOlwiODAwXCIsXCIyMDJcIjpcIm51bGxcIixcIjIwM1wiOlwiMC45XCIsXCIyMDRcIjpcIjMwMFwiLFwiMjA1XCI6XCJudWxsXCIsXCIyMDZcIjpcIm51bGxcIixcIjIwN1wiOlwibnVsbFwiLFwiMjA4XCI6XCJudWxsXCIsXCIyMDlcIjpcIm51bGxcIixcIjIxMFwiOlwibnVsbFwiLFwiMjExXCI6XCJudWxsXCIsXCIyMTJcIjpcIm51bGxcIixcIjIxM1wiOlwibnVsbFwiLFwiMjE0XCI6XCJudWxsXCIsXCIyMTVcIjpcIm51bGxcIixcIjIxNlwiOlwibnVsbFwiLFwiMjE3XCI6XCJudWxsXCIsXCIyMThcIjpcImN1YmljLWJlemllcigwLjQsMS4zOCwwLjIyLDAuOTYpXCIsXCIyMTlcIjpcIm51bGxcIixcIjIyMFwiOlwibnVsbFwifV0iLCJwYnZzaGYiOiIlLkAuXCI0OHB4XCJdIiwidTltZXAiOiIlLkAuXCIjMWEwZGFiXCIsbnVsbCxcIiMxZjFmMWZcIixcInZhcigtLUpLcXgyKVwiXSIsIm1ycWFRYiI6IiUuQC5udWxsLG51bGwsbnVsbCxudWxsLFwiMnB4XCIsXCIxMnB4XCJdIiwiVW1xMTBlIjoiJS5ALlwiI2ZmZlwiXSIsIms3VHF5ZSI6IiUuQC5udWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLFwiMTZweFwiLFwiMTJweFwiLFwiOHB4XCIsXCIyMHB4XCIsXCI0cHhcIixcIjk5OTlweFwiLFwiMHB4XCIsXCIycHhcIixcIjI0cHhcIl0iLCJ5NTBMQyI6IiUuQC5udWxsLG51bGwsXCIjNGQ1MTU2XCIsbnVsbCxcIiM1ZjYzNjhcIl0iLCJqZlNFa2QiOiIlLkAuXCJ2YXIoLS1QYThXbGIpXCIsXCJ2YXIoLS1LSVpQbmUpXCIsXCJ2YXIoLS14UHBpTSlcIixudWxsLFwiI2QyZTNmY1wiLFwiI2QyZTNmY1wiLFwicmdiYSgyNiwxMTUsMjMyLDAuMjQpXCIsXCJ2YXIoLS1wRWEwQmMpXCIsXCJ2YXIoLS1ZaTROYilcIixcInZhcigtLWtsb0czKVwiLFwidmFyKC0tWWFJZU1iKVwiLFwidmFyKC0taXpHc3FiKVwiLFwidmFyKC0tdG9kTU5jKVwiLFwicmdiYSgzMiwzMywzNiwwLjE2KVwiLG51bGwsXCJyZ2JhKDMyLDMzLDM2LDAuMzIpXCIsXCJ2YXIoLS1JamMydGYpXCIsXCJ2YXIoLS1WZUx5TGMpXCIsXCJyZ2JhKDMyLDMzLDM2LDAuMDgpXCIsXCJyZ2JhKDMyLDMzLDM2LDAuMDgpXCIsXCJyZ2JhKDMyLDMzLDM2LDAuMjQpXCIsXCJ0cmFuc3BhcmVudFwiLFwidmFyKC0tbmdQWFRiKVwiLG51bGwsXCJyZ2JhKDI2LDExNSwyMzIsMC4wOClcIixcInJnYmEoMjYsMTE1LDIzMiwwLjA4KVwiLFwicmdiYSgyNiwxMTUsMjMyLDAuMjQpXCIsbnVsbCxudWxsLG51bGwsXCJyZ2JhKDYwLDY0LDY3LDAuMDgpXCIsXCJyZ2JhKDYwLDY0LDY3LDAuMDgpXCIsXCJyZ2JhKDYwLDY0LDY3LDAuMjQpXCIsXCIycHhcIixcIjJweFwiLFwiMC4zOFwiLFwidmFyKC0tYmJReEFiKVwiLFwidmFyKC0tWmlhNm5mKVwiLG51bGwsXCJ2YXIoLS1nSmpKaylcIixcInZhcigtLU1WMnNHKVwiLFwidmFyKC0tYmN4ZDNiKVwiLFwidmFyKC0tYW1uUHdlKVwiLFwidmFyKC0tWUxOTkhjKVwiLFwidmFyKC0tWUxOTkhjKVwiLFwiMC4wODI0XCIsXCIwXCIsXCIwLjIyNFwiLFwidmFyKC0tQ1JNTlpkKVwiLFwicmdiYSgzMiwzMywzNiwwLjE2KVwiLFwiMC4yXCIsXCIwLjIyNFwiLFwiI2ZmZmZmZlwiLFwiMC40XCIsXCJ2YXIoLS1Ob2FRVylcIixcInZhcigtLWFtblB3ZSlcIixcIjAuMDhcIixcInZhcigtLWJiUXhBYilcIixcIjAuMDhcIixcInZhcigtLWFtblB3ZSlcIixcInZhcigtLWJiUXhBYilcIixcIjAuMjRcIixcInZhcigtLUlYb3hVZSlcIixcInRyYW5zcGFyZW50XCIsXCIwLjA4XCIsXCIwLjA4XCIsXCIjNGQ1MTU2XCIsXCIwLjI0XCIsXCJ2YXIoLS1JWG94VWUpXCIsXCJ0cmFuc3BhcmVudFwiLFwiMC4wOFwiLFwiMC4wOFwiLFwidmFyKC0tdUx6MzdjKVwiLFwiMC4yNFwiLFwidmFyKC0tdUx6MzdjKVwiLFwidmFyKC0tdldxMWlmKVwiLFwidmFyKC0taHdFcW9kKVwiLFwiMC4wODI0XCIsXCIjMTk2N2QyXCIsXCIwLjA4MjRcIixcInZhcigtLVdtd2FkKVwiLFwiMC4yMjRcIixcInZhcigtLWx2NnlVKVwiLFwiMC4wODI0XCIsXCIwLjA4MjRcIixcInZhcigtLU1vYUhzZSlcIixcInZhcigtLXkwMW91KVwiLFwiMC4yMjRcIixcInZhcigtLXA5SjljKVwiLFwidmFyKC0tTE1GSFVkKVwiLFwiMC4wODI0XCIsXCIwLjA4MjRcIixcIjAuMjI0XCIsXCJ2YXIoLS1mdXZrc2MpXCIsXCJ2YXIoLS1xZEhaRilcIixcIjAuMlwiLFwiMC4yXCIsXCJ2YXIoLS1WOXlzcWYpXCIsXCIwLjRcIix7XCIxMDBcIjpcIiNmZmZcIixcIjEwMVwiOlwiMC4wOFwiLFwiMTAyXCI6XCIwLjA4XCIsXCIxMDNcIjpcIiMxZjFmMWZcIixcIjEwNFwiOlwiMC4yNFwiLFwiMTA1XCI6XCJ2YXIoLS1QQnhPS2UpXCIsXCIxMDZcIjpcInJnYmEoMCwwLDAsMC4xKVwiLFwiMTA3XCI6XCIwLjA4XCIsXCIxMDhcIjpcIiMxODVhYmNcIixcIjEwOVwiOlwiMC4wOFwiLFwiMTEwXCI6XCIwLjI0XCIsXCIxMTFcIjpcInZhcigtLU5zbTBjZSlcIixcIjExMlwiOlwiMFwiLFwiMTEzXCI6XCJ0cmFuc3BhcmVudFwiLFwiMTE0XCI6XCIwLjA4XCIsXCIxMTVcIjpcIjAuMDhcIixcIjExNlwiOlwidmFyKC0tWUxOTkhjKVwiLFwiMTE3XCI6XCIwLjI0XCIsXCIxMThcIjpcInZhcigtLVlMTk5IYylcIixcIjExOVwiOlwiMC43NVwiLFwiMTIwXCI6XCIwLjZcIixcIjEyMVwiOlwicmdiYSgzMSwzMSwzMSwwLjA3ODQzMTM3NSlcIixcIjEyMlwiOlwidmFyKC0tRDlhTmkpXCIsXCIxMjNcIjpcInJnYmEoMzEsMzEsMzEsMC4yMzkyMTU2OSlcIixcIjEyNFwiOlwicmdiYSgxMSw4NywyMDgsMC4wNzg0MzEzNzUpXCIsXCIxMjVcIjpcInJnYmEoMTEsODcsMjA4LDAuMDc4NDMxMzc1KVwiLFwiMTI2XCI6XCJyZ2JhKDExLDg3LDIwOCwwLjIzOTIxNTY5KVwiLFwiMTI3XCI6XCJyZ2JhKDMyLDMzLDM2LDAuMilcIixcIjEyOFwiOlwicmdiYSgzMiwzMywzNiwwLjIpXCIsXCIxMjlcIjpcInJnYmEoMzIsMzMsMzYsMC40KVwiLFwiMTMwXCI6XCJyZ2JhKDMyLDMzLDM2LDAuMDc4NDMxMzc1KVwiLFwiMTMxXCI6XCJyZ2JhKDMyLDMzLDM2LDAuMDc4NDMxMzc1KVwiLFwiMTMyXCI6XCJyZ2JhKDMyLDMzLDM2LDAuMjM5MjE1NjkpXCIsXCIxMzNcIjpcInZhcigtLUVoaDRtZilcIixcIjEzNFwiOlwidmFyKC0tTnNtMGNlKVwiLFwiMTM1XCI6XCIjYjMyNjFlXCIsXCIxMzZcIjpcInJnYmEoMTY3LDM3LDMwLDAuMzgwMzkyKVwiLFwiMTM3XCI6XCIwLjJcIixcIjEzOFwiOlwiI2E3MjUxZVwiLFwiMTM5XCI6XCIwLjJcIixcIjE0MFwiOlwiI2ZmZlwiLFwiMTQxXCI6XCIjZmZmXCIsXCIxNDJcIjpcIjAuNFwiLFwiMTQzXCI6XCIjNDEwZTBiXCIsXCIxNDRcIjpcIiMwODRiYjFcIixcIjE0NVwiOlwiI2ViZjJmYlwiLFwiMTQ2XCI6XCIjYzNkOGY5XCIsXCIxNDdcIjpcIiNkNGUxZmNcIixcIjE0OFwiOlwiIzk3YzBmYlwifV0iLCJHVnRQbSI6IiUuQC5udWxsLG51bGwsbnVsbCxudWxsLG51bGwsXCIwIDAgMCAxcHggdmFyKC0tbVhaa3FjKVwiLFwiMXB4IHNvbGlkIHZhcigtLW1YWmtxYylcIixudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsXCJ0cmFuc3BhcmVudFwiLFwicmdiYSgyMywyMywyMywwLjMpXCIsbnVsbCxudWxsLFwiMTZweFwiXSIsIk1leE50ZSI6IiUuQC5cIjcwMFwiLFwiNDAwXCIsXCJ1bmRlcmxpbmVcIixcIm5vbmVcIixcImNhcGl0YWxpemVcIixcIm5vbmVcIixcInVwcGVyY2FzZVwiLFwibm9uZVwiLFwiNTAwXCIsXCJsb3dlcmNhc2VcIixcIml0YWxpY1wiLG51bGwsbnVsbCxcIi0xcHhcIixcIjAuM3B4XCIsXCIyMHB4XCIsXCIxMnB4XCIsbnVsbCxcIjEycHhcIixcIjE0cHhcIixcIjE2cHhcIixcIjE4cHhcIixcIjIycHhcIixcIjI0cHhcIixcIjI2cHhcIixcIjI4cHhcIixcIjMycHhcIixcIjM2cHhcIixcIjQwcHhcIixcIjQ4cHhcIixcIjUycHhcIixcIjU2cHhcIixcIjYwcHhcIixcIjE0cHhcIixcIjE2cHhcIixcIjE4cHhcIixcIjIwcHhcIixcIjIycHhcIixcIjI0cHhcIixcIjI4cHhcIixcIjM2cHhcIixcIjQwcHhcIixcIjQ1cHhcIixcIjQ4cHhcIixcIjU2cHhcIixcIjBcIixcIjAuMXB4XCJdIiwiQWFoY25mIjoiJS5ALlwidmFyKC0tSWE3MFhkKVwiLFwidmFyKC0taFBETUZmKVwiLFwidmFyKC0tVnlpOHljKVwiLFwidmFyKC0tSVQ3eTNjKVwiLG51bGwsXCJ2YXIoLS1MSTRCbylcIixcInZhcigtLU1oczdkZSlcIixcInZhcigtLW9md1VCYylcIixcInZhcigtLVhXdjFpZilcIixudWxsLFwidmFyKC0tdUJkZ1RlKVwiLFwidmFyKC0tT2szaXJmKVwiLFwidmFyKC0tWmY5WG5kKVwiLFwidmFyKC0tclRrMEUpXCIsbnVsbCxcIkdvb2dsZSBTYW5zLEFyaWFsLHNhbnMtc2VyaWZcIixcIjU2cHhcIixcIjQ4cHhcIixcIjBcIixudWxsLFwiNDAwXCIsXCJHb29nbGUgU2FucyxBcmlhbCxzYW5zLXNlcmlmXCIsXCIzNnB4XCIsXCI0MDBcIixcIjQ4cHhcIixudWxsLFwiR29vZ2xlIFNhbnMsQXJpYWwsc2Fucy1zZXJpZlwiLFwiMzZweFwiLFwiMjhweFwiLG51bGwsXCI0MDBcIixudWxsLFwiQXJpYWwsc2Fucy1zZXJpZlwiLFwiMjRweFwiLFwiMThweFwiLG51bGwsXCI0MDBcIixcInZhcigtLVlmaUtmKVwiLFwidmFyKC0tcHVuWmxjKVwiLFwidmFyKC0tZ09zNkJmKVwiLG51bGwsXCJ2YXIoLS1NektCcGQpXCIsXCJ2YXIoLS1ua21RT2UpXCIsXCJ2YXIoLS1hOVgwSmMpXCIsXCJ2YXIoLS16M0JGSWUpXCIsbnVsbCxcInZhcigtLVhXbGl3YylcIixcInZhcigtLUVvdThZYylcIixcInZhcigtLXFXWllFYylcIixcInZhcigtLUdpVG9KZilcIixudWxsLFwidmFyKC0tcDJMcXhlKVwiLFwidmFyKC0tenRUcVBlKVwiLFwidmFyKC0tQzc0eDJlKVwiLFwidmFyKC0tZ3l1NUwpXCIsbnVsbCxcInZhcigtLVlvYTZxZClcIixcInZhcigtLWxJMVRyYylcIixcInZhcigtLUhJeUVLYylcIixcInZhcigtLVpOZzg4KVwiLG51bGwsXCJ2YXIoLS1xalZVM2QpXCIsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLFwidmFyKC0taGJtbmplKVwiLFwidmFyKC0tcVI4WDApXCIsXCJ2YXIoLS1DYmRtRSlcIixcInZhcigtLU95Y2p0KVwiLFwidmFyKC0tQW9oOVhlKVwiLFwidmFyKC0tcVlHWHcpXCIsXCJ2YXIoLS1xcGRGcClcIixcInZhcigtLUpUNElQYylcIixcIkdvb2dsZSBTYW5zLEFyaWFsLHNhbnMtc2VyaWZcIixcIjI0cHhcIixcIjE2cHhcIixcIjQwMFwiLFwidmFyKC0tcUJ3eXFiKVwiLFwidmFyKC0tblVPcUVjKVwiLFwidmFyKC0tY01UdmpmKVwiLFwidmFyKC0tQW9oOVhlKVwiLFwidmFyKC0tcVlHWHcpXCIsXCJ2YXIoLS1xcGRGcClcIixcInZhcigtLUpUNElQYylcIixudWxsLG51bGwsbnVsbCxudWxsLFwidmFyKC0tQ1VTMTVlKVwiLFwiMHB4XCIsXCIwcHhcIixcIjBcIl0iLCJQRmhtZWQiOiIlLkAubnVsbCxudWxsLG51bGwsbnVsbCxcIiNmMWYzZjRcIl0iLCJCNHBaYmQiOiJOTyIsInJrRDI1IjoiJS5ALltbXCJobFwiLFwibm8tTk9cIl1dXSIsInJOeXVKYyI6IiIsIkxVNWZHYiI6ZmFsc2UsImdYa0hvZSI6IjEwNTI1MDUwNjA5Nzk3OTc1Mzk2OCJ9O30pKCk7KGZ1bmN0aW9uKCl7Z29vZ2xlLmxkaT17fTtnb29nbGUucGltPXt9O2dvb2dsZS5zaWI9ZmFsc2U7Z29vZ2xlLmxpYmE9ZmFsc2U7KGZ1bmN0aW9uKCl7dmFyIGE9Z29vZ2xlLmxkaXx8e30sYjtmb3IoYiBpbiBhKWlmKGEuaGFzT3duUHJvcGVydHkoYikpe3ZhciBjPWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGIpfHxkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQucXVlcnlTZWxlY3RvcignaW1nW2RhdGEtaWlkPSInK2IrJyJdJyk7YyYmTnVtYmVyKGMuZ2V0QXR0cmlidXRlKCJkYXRhLWF0ZiIpKSYxJiYoYy5zZXRBdHRyaWJ1dGUoImRhdGEtZGVmZXJyZWQiLCIyIiksYy5zcmM9YVtiXSl9O30pLmNhbGwodGhpcyk7fSkoKTsoZnVuY3Rpb24oKXtmb3IodmFyIGE9ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImltZyIpLGI9MCxjPWEubGVuZ3RoO2I8YzsrK2Ipe3ZhciBkPWFbYl0sZTtpZihlPU51bWJlcihkLmdldEF0dHJpYnV0ZSgiZGF0YS1hdGYiKSkmMSl7dmFyIGY9ZCxnPWYuZ2V0QXR0cmlidXRlKCJqc2NvbnRyb2xsZXIiKTtlPShnPT09IlVCWEhJInx8Zz09PSJSM2Zoa2IifHxnPT09IlRTWkVxZCIpJiZmLmhhc0F0dHJpYnV0ZSgiZGF0YS1zcmMiKX1lJiYoZC5zcmM9ZC5nZXRBdHRyaWJ1dGUoImRhdGEtc3JjIikpfTt9KS5jYWxsKHRoaXMpOyhmdW5jdGlvbigpe2Zvcih2YXIgYT1kb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgiaW1nIiksYj0wLGM9YS5sZW5ndGg7YjxjOysrYil7dmFyIGQ9YVtiXTtkLnNyYy5zdWJzdHJpbmcoMCw1KSE9PSJkYXRhOiImJmQuc2V0QXR0cmlidXRlKCJkYXRhLWRlZmUiLCIxIil9O30pLmNhbGwodGhpcyk7KGZ1bmN0aW9uKCl7dmFyIGRlaWE9dHJ1ZTt2YXIgZXM9dHJ1ZTt3aW5kb3cuanNsPXdpbmRvdy5qc2x8fHt9O3dpbmRvdy5qc2wuZGg9ZnVuY3Rpb24oZCxuLGUpe3RyeXt2YXIgYj1kb2N1bWVudC5nZXRFbGVtZW50QnlJZChkKSxmOyFiJiYoKGY9Z29vZ2xlLnN0dnNjKT09bnVsbD8wOmYuZGRzKSYmZ29vZ2xlLnN0dnNjLmRkcy5mb3JFYWNoKGZ1bmN0aW9uKGwpe2J8fChiPWwuZ2V0RWxlbWVudEJ5SWQoZCkpfSk7aWYoIWIpe3ZhciBwPWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoInRlbXBsYXRlIik7Zm9yKGY9MDtmPHAubGVuZ3RoJiYhKGI9cFtmXS5jb250ZW50LmdldEVsZW1lbnRCeUlkKGQpKTtmKyspO31pZihiKXtiLmlubmVySFRNTD1uO2lmKHR5cGVvZiBlcyE9PSJ1bmRlZmluZWQiJiZlcyl7dmFyIHE9Yi5nZXRFbGVtZW50c0J5VGFnTmFtZSgic2NyaXB0Iik7aWYocS5sZW5ndGg+MClmb3IodmFyIGc9QXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwocSksYT0wO2E8Zy5sZW5ndGg7YSsrKXtmb3IodmFyIGg9Z1thXSxtPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInNjcmlwdCIpLHI9CmguYXR0cmlidXRlcyxjPTA7YzxyLmxlbmd0aDtjKyspe3ZhciB0PXJbY107bS5zZXRBdHRyaWJ1dGUodC5uYW1lLHQudmFsdWUpfWgudGV4dENvbnRlbnQmJihtLnRleHRDb250ZW50PWgudGV4dENvbnRlbnQpO2gucmVwbGFjZVdpdGgobSl9fWUmJmUoKTt0eXBlb2YgZGVpYSE9PSJ1bmRlZmluZWQiJiZkZWlhJiYoZ29vZ2xlLmRlbHQ9Z29vZ2xlLmRlbHR8fHt9LGdvb2dsZS5kZWx0W2IuaWRdPURhdGUubm93KCkpfWVsc2UgaWYoIShnb29nbGUuaWEmJmdvb2dsZS5pYS5yaWRzJiZnb29nbGUuaWEucmlkcy5oYXMoZCkpKXthPXtpZDpkLHNjcmlwdDpTdHJpbmcoISFlKSxtaWxlc3RvbmU6U3RyaW5nKGdvb2dsZS5qc2xtfHwwKX07Z29vZ2xlLmpzbGEmJihhLmFzeW5jPWdvb2dsZS5qc2xhKTt2YXIgdT1kLmluZGV4T2YoIl8iKTtjPXU+MD9kLnN1YnN0cmluZygwLHUpOiIiO3ZhciB2PWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpO3YuaW5uZXJIVE1MPW47dmFyIGs9di5jaGlsZHJlblswXTtpZihrJiYoYS50YWc9ay50YWdOYW1lLGFbImNsYXNzIl09U3RyaW5nKGsuY2xhc3NOYW1lfHxudWxsKSxhLm5hbWU9U3RyaW5nKGsuZ2V0QXR0cmlidXRlKCJqc25hbWUiKSksYykpe2U9W107dmFyIHc9ZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnW2lkXj0iJytjKydfIl0nKTtmb3IoZz0wO2c8dy5sZW5ndGg7KytnKWUucHVzaCh3W2ddLmlkKTthLmlkcz1lLmpvaW4oIiwiKX1nb29nbGUubWwoRXJyb3IoYz8iTWlzc2luZyBJRCB3aXRoIHByZWZpeCAiK2M6Ik1pc3NpbmcgSUQiKSwhMSxhKX19Y2F0Y2gobCl7Z29vZ2xlLm1sKGwsITAseyJqc2wuZGgiOiEwfSl9fTt9KSgpOyhmdW5jdGlvbigpe3ZhciB4PXRydWU7Z29vZ2xlLmpzbG09eD8yOjE7fSkoKTtbW251bGwsZnVuY3Rpb24oKXsoZnVuY3Rpb24oKXtnb29nbGUuY3NjdD17fTtnb29nbGUuY3NjdC5wcz0nQU92VmF3MVB0MEhLdVRLMW5zSjNTWHZxaEk0VFx4MjZ1c3RceDNkMTc4NTI1MjgzNTc5NTA4OSc7fSkoKTt9XSxbbnVsbCxmdW5jdGlvbigpeyhmdW5jdGlvbigpe2dvb2dsZS5jc2N0LnNiPXRydWU7fSkoKTt9XSxbbnVsbCxmdW5jdGlvbigpe3dpbmRvdy5qc2w9d2luZG93LmpzbHx8e307d2luZG93LmpzbC5kaD13aW5kb3cuanNsLmRofHxmdW5jdGlvbihpLGMsZCl7dHJ5e3ZhciBlPWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGkpO2lmKGUpe2UuaW5uZXJIVE1MPWM7aWYoZCl7ZCgpO319ZWxzZXtpZih3aW5kb3cuanNsLmVsKXt3aW5kb3cuanNsLmVsKG5ldyBFcnJvcignTWlzc2luZyBJRC4nKSx7J2lkJzppfSk7fX19Y2F0Y2goZSl7aWYod2luZG93LmpzbC5lbCl7d2luZG93LmpzbC5lbChuZXcgRXJyb3IoJ2pzbC5kaCcpKTt9fX07fV0sW3tpZDonX1kzcG5hclRFTGVpbXdQQVBvNlN0a0E0XzgnfSxmdW5jdGlvbigpe2pzbC5kaCh0aGlzLmlkLCJceDNjc3R5bGU+LllCNGg5e2JhY2tncm91bmQtY29sb3I6dmFyKC0tVE1ZUzkpO2NvbG9yOnZhcigtLUVwRk5XKTtmb250LWZhbWlseTpHb29nbGUgU2FucyxSb2JvdG8sQXJpYWwsc2Fucy1zZXJpZjtwYWRkaW5nOjE4cHggNjBweCAxOHB4IDEycHg7cG9zaXRpb246cmVsYXRpdmV9LllCNGg5LmROUzQ1YntiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLXhoVUd3Yyk7Y29sb3I6dmFyKC0tYmJReEFiKTtwYWRkaW5nOjA7fS5ZQjRoOS5kTlM0NWJ7bWFyZ2luLWJvdHRvbTowfS5ZQjRoOS5kTlM0NWI6bm90KC5DN0N5bil7cGFkZGluZy10b3A6MTZweDtwYWRkaW5nLXRvcDowO21hcmdpbi10b3A6MH0uY3RpWUtke2JhY2tncm91bmQtY29sb3I6dmFyKC0tREVlU3RmKTtib3JkZXItcmFkaXVzOjE2cHg7cGFkZGluZzoxNnB4O3Bvc2l0aW9uOnJlbGF0aXZlO3RleHQtYWxpZ246bGVmdDt9LllCNGg5LnE3WE5iYi5DN0N5biAuY3RpWUtke2JvcmRlci1yYWRpdXM6MCAwIDE2cHggMTZweH0uY3RpWUtkIC5Gc0FkUmR7ZGlzcGxheTpub25lfS5ZQjRoOS5xN1hOYmIuQzdDeW4gLmN0aVlLZCAuRnNBZFJke2Rpc3BsYXk6YmxvY2s7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1aRXBQbWQpO2hlaWdodDoxcHg7bWFyZ2luOjAgLTE2cHggMTZweCAtMTZweH0uQzg1ck97Zm9udC1zaXplOjIwcHh9LllCNGg5LmROUzQ1YiAuQzg1ck97Zm9udC1zaXplOnZhcigtLXVCZGdUZSk7Zm9udC13ZWlnaHQ6NTAwO3BhZGRpbmctcmlnaHQ6NTZweH0uR3RyMG5le21hcmdpbi10b3A6NHB4fS50d1RUOWN7fS5ZQjRoOSAuR3RyMG5lIC50d1RUOWN7Y29sb3I6dmFyKC0tRXBGTlcpO3BhZGRpbmc6MTBweCAwIDA7dGV4dC1kZWNvcmF0aW9uOnVuZGVybGluZTtiYWNrZ3JvdW5kOm5vbmU7Ym9yZGVyOm5vbmU7Zm9udDppbmhlcml0fS5ZQjRoOS5kTlM0NWIgLkd0cjBuZSAudHdUVDlje2NvbG9yOmluaGVyaXQ7cGFkZGluZzoxNnB4IDA7bWFyZ2luLXRvcDpjYWxjKC0xKjE2cHgpO21hcmdpbi1ib3R0b206Y2FsYygtMSoxNnB4KX0uWUI0aDkgLkpvYjh2Ynt0b3A6MDtwYWRkaW5nOjIwcHg7cG9zaXRpb246YWJzb2x1dGU7cmlnaHQ6MH0uWUI0aDkuZE5TNDViIC5Kb2I4dmJ7dG9wOjUwJTt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtNTAlKX0uWUI0aDkucTdYTmJie21hcmdpbi1ib3R0b206NDRweH0uWUI0aDkucTdYTmJiLmROUzQ1YnttYXJnaW4tdG9wOjA7bWFyZ2luLWJvdHRvbToxNnB4fS5ZQjRoOS5xN1hOYmIuZE5TNDViLkM3Q3lue21hcmdpbi10b3A6LTE2cHh9I3JocyAuWUI0aDkucTdYTmJiLmROUzQ1Yi5DN0N5bnttYXJnaW4tdG9wOi0zMnB4fVx4M2Mvc3R5bGU+XHgzY2RpdiBjbGFzcz1cIkZzQWRSZFwiPlx4M2MvZGl2Plx4M2NzcGFuIGpzbmFtZT1cInRxcDd1ZFwiIGNsYXNzPVwiSm9iOHZiIHoxYXNDZSB3dVhtcWNcIiBhcmlhLWxhYmVsPVwiTHVrayBWZWxnIGh2YSBkdSBnaXIgdGlsYmFrZW1lbGRpbmcgcMOlXCIgcm9sZT1cImJ1dHRvblwiIHRhYmluZGV4PVwiMFwiIGpzYWN0aW9uPVwia0VPazRkXCIgc3R5bGU9XCJoZWlnaHQ6MjBweDtsaW5lLWhlaWdodDoyMHB4O3dpZHRoOjIwcHhcIiBkYXRhLXZlZD1cIjBhaFVLRXdqMGdaS2FsX09WQXhWb0V4QUlIU05TQy1JUW1Ja0dDQndcIj5ceDNjc3ZnIGZvY3VzYWJsZT1cImZhbHNlXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHZpZXdCb3g9XCIwIDAgMjQgMjRcIj5ceDNjcGF0aCBkPVwiTTE5IDYuNDFMMTcuNTkgNSAxMiAxMC41OSA2LjQxIDUgNSA2LjQxIDEwLjU5IDEyIDUgMTcuNTkgNi40MSAxOSAxMiAxMy40MSAxNy41OSAxOSAxOSAxNy41OSAxMy40MSAxMnpcIj5ceDNjL3BhdGg+XHgzYy9zdmc+XHgzYy9zcGFuPlx4M2NkaXYgY2xhc3M9XCJDODVyT1wiIGFyaWEtbGV2ZWw9XCIxXCIgcm9sZT1cImhlYWRpbmdcIj5WZWxnIGh2YSBkdSBnaXIgdGlsYmFrZW1lbGRpbmcgcMOlXHgzYy9kaXY+Iik7fV0sW251bGwsZnVuY3Rpb24oKXtnb29nbGUuZHJ0eSYmZ29vZ2xlLmRydHkodm9pZCAwLCEwKTt9XV0uZm9yRWFjaChmdW5jdGlvbihhKXtnb29nbGUueChhWzBdLGFbMV0pO30pOyhmdW5jdGlvbigpe3ZhciB4c3JmVG9rZW5zPSd7XHgyMlF1a1EzYlx4MjI6XHgyMkFGNXRTTzZXcW9GZWg0RXlHVjBYd2kzX1ZyTXg4VlZrbkE6MTc4NTE2NjQzNTgwNlx4MjIsXHgyMkxtTndvZlx4MjI6XHgyMkFGNXRTTzVaSWFpT0FOLTkyTENKS3pndlVac1gzS3lSZGc6MTc4NTE2NjQzNTgwNlx4MjIsXHgyMnlrdjBOYlx4MjI6XHgyMkFGNXRTTzVoWmdFclJyVXo5TnhfN3UyWkdBVkt3alBwdWc6MTc4NTE2NjQzNTgwNlx4MjIsXHgyMm5IdGxQYlx4MjI6XHgyMkFGNXRTTzQ0XzRWRVUzSXpMRGlDMW9XMVB4SHNpX3RZMkE6MTc4NTE2NjQzNTgwNlx4MjIsXHgyMlNtZWI0ZFx4MjI6XHgyMkFGNXRTTzVmdW13azduYVozUzdKRTBsNDlFS1h2LU1wcGc6MTc4NTE2NjQzNTgwNlx4MjIsXHgyMmgyQlM3ZVx4MjI6XHgyMkFGNXRTTzRPZHZacW1vLVFLbVJvdW9ZbC1kM3hpWDZkTkE6MTc4NTE2NjQzNTgwNlx4MjJ9JzsoZnVuY3Rpb24oKXtnb29nbGUueHNyZj1nb29nbGUueHNyZnx8e307dmFyIGE9SlNPTi5wYXJzZSh4c3JmVG9rZW5zKSxiO2ZvcihiIGluIGEpYS5oYXNPd25Qcm9wZXJ0eShiKSYmKGdvb2dsZS54c3JmW2JdPWFbYl0pO30pLmNhbGwodGhpcyk7fSkoKTtnb29nbGUuc3R2c2N8fGdvb2dsZS5kcnR5JiZnb29nbGUuZHJ0eSh2b2lkIDAsITApOzwvc2NyaXB0PjwvYm9keT48L2h0bWw+"}},"time_used":141,"timings":{"blocked":0,"dns":5,"connect":25,"send":0,"wait":89,"receive":22,"ssl":0},"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"www.google.com/xjs/_/ss/k=xjs.hd.h9GHjaAphl0.L.F4.O/am=AAAEQAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAABAAAAIECAAAZAAAAAAAgAACAAAAAAAIAAAAAABAeAAAAMAAAAAAAAAAAAAAAAAAAQAAAIAAAAAAAAAAAEAAAAAAAAAIAiAAAAAAAAQABFAAAQAAAAAAAAAAACAAAAAAAAAAACBAAAAAAAAAAAABAAgAAAAAAAAAAYTAQAAAAABAGAAAAAAAAAAAAAAAAAAAAAABAJEACACAAAAAAAAgAAAAAAAQBhBAEAAEKIAAAAAAAAAKABQAAAACgAxAEAQAAAAAAAAAACAAEgRBAAAAAgAAAABAACAAIAAAAAGAEBQBAogYCAECgAwAAACADAAAAAAQAAAAAAAAAAAAAiAAAAAAAAACQAAADBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAE/d=1/ed=1/br=1/rs=ACT90oGbAV3hgWIqz8I-ppdbYy_xG58I7g/m=cdos,hsm,jsa,mb4ZUb,cEt90b,SNUn3,qddgKe,sTsDMc,dtl0hd,eHDfl,YV5bee,d,csi?cb=121509378","fqdn":"www.google.com","domain":"google.com","tld":"com"},"ip":{"addr":"142.251.157.119","port":443,"asn":15169,"as":"GOOGLE","country":"United States","country_code":"US"},"is_navigation_request":false,"resource_type":"stylesheet","requested_by":"https://www.google.com/","date":"2026-07-27T15:33:56.066Z","timestamp":1785166436066,"http_version":"HTTP/3","security_state":"secure","security_info":{"cipher_suite":"TLS_AES_128_GCM_SHA256","key_group_name":"mlkem768x25519","signature_name":"ECDSA-P256-SHA256","protocol":"TLSv1.3","cert":{"subject":{"commonName":"*.google.com","organization":""},"issuer":{"commonName":"WR2","organization":"Google Trust Services"},"validity":{"start":"Mon, 29 Jun 2026 08:37:25 GMT","end":"Mon, 21 Sep 2026 08:37:24 GMT"},"fingerprint":{"sha1":"D9:DA:81:30:78:3E:9C:6B:5F:9D:18:52:0E:BE:6D:52:2F:FB:33:E0","sha256":"EA:E2:2D:87:EC:9C:D6:51:9D:59:E4:13:35:3B:97:14:E3:DA:58:2D:1C:69:19:41:54:94:25:C3:94:17:F3:0C"}}},"request":{"raw":"GET /xjs/_/ss/k=xjs.hd.h9GHjaAphl0.L.F4.O/am=AAAEQAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAABAAAAIECAAAZAAAAAAAgAACAAAAAAAIAAAAAABAeAAAAMAAAAAAAAAAAAAAAAAAAQAAAIAAAAAAAAAAAEAAAAAAAAAIAiAAAAAAAAQABFAAAQAAAAAAAAAAACAAAAAAAAAAACBAAAAAAAAAAAABAAgAAAAAAAAAAYTAQAAAAABAGAAAAAAAAAAAAAAAAAAAAAABAJEACACAAAAAAAAgAAAAAAAQBhBAEAAEKIAAAAAAAAAKABQAAAACgAxAEAQAAAAAAAAAACAAEgRBAAAAAgAAAABAACAAIAAAAAGAEBQBAogYCAECgAwAAACADAAAAAAQAAAAAAAAAAAAAiAAAAAAAAACQAAADBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAE/d=1/ed=1/br=1/rs=ACT90oGbAV3hgWIqz8I-ppdbYy_xG58I7g/m=cdos,hsm,jsa,mb4ZUb,cEt90b,SNUn3,qddgKe,sTsDMc,dtl0hd,eHDfl,YV5bee,d,csi?cb=121509378 HTTP/1.1\r\nHost: www.google.com\r\nUser-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:134.0) Gecko/20100101 Firefox/134.0\r\nAccept: text/css,*/*;q=0.1\r\nAccept-Language: en-US,en;q=0.9\r\nAccept-Encoding: gzip, deflate, br, zstd\r\nReferer: https://www.google.com/\r\nSec-GPC: 1\r\nConnection: keep-alive\r\nCookie: AEC=AdJVEauUsWHpfGAsUyeilL8EI9I2Tr9FfEzOqXuEJToXYpKe1KUK4km-Sg; __Secure-ENID=35.SE=AbigeV3aJ0m6xMobN92AbNZpW8pBnglGTPw_dz_A9WWyoDaiBBZPKRYUFk43qYtDkrYoTgVKiKtyKOguRjujzVzhuA6WYYbk-i87vjK7wNHmdliDMhNspbLvs4LU7H3yif4utRnzW3A5pWS7luM5rorSqU-pj8vCqCmdLtP-tPTBFRmS_IwoinM092pFPLFq5WUhH_JzQWk4Nj64_cv8DwX9Gzz3yPDcXsoOsZMMsbp3c373u3CG8Y4REmw\r\nSec-Fetch-Dest: style\r\nSec-Fetch-Mode: no-cors\r\nSec-Fetch-Site: same-origin\r\nPriority: u=2\r\nPragma: no-cache\r\nCache-Control: no-cache\r\n\r\n","headers":null,"cookies":null,"method":"GET"},"response":{"raw":"HTTP/3 200 \r\naccept-ranges: bytes\r\ncontent-encoding: br\r\ncontent-security-policy-report-only: require-trusted-types-for 'script'; report-uri https://csp.withgoogle.com/csp/gws-team\r\ncross-origin-resource-policy: cross-origin\r\ncross-origin-opener-policy: same-origin; report-to=\"gws-team\"\r\nreport-to: {\"group\":\"gws-team\",\"max_age\":2592000,\"endpoints\":[{\"url\":\"https://csp.withgoogle.com/csp/report-to/gws-team\"}]}\r\ncontent-length: 1415\r\nx-content-type-options: nosniff\r\nserver: sffe\r\nx-xss-protection: 0\r\ndate: Fri, 24 Jul 2026 23:48:37 GMT\r\nexpires: Sat, 24 Jul 2027 23:48:37 GMT\r\ncache-control: public, immutable, max-age=31536000\r\nlast-modified: Fri, 24 Jul 2026 22:53:47 GMT\r\ncontent-type: text/css; charset=UTF-8\r\nvary: Accept-Encoding, Origin\r\nage: 229519\r\nalt-svc: h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000\r\n\r\n","headers":null,"cookies":null,"status_code":"200","status_text":"","fingerprints":null,"data":{"size":3060,"size_decoded":2236,"mime_type":"text/css; charset=UTF-8","magic":"ASCII text, with very long lines (3060), with no line terminators","md5":"e9b16132283ea9f248c774c6e0611c47","sha1":"862b649c827c593622035d8591e6ffde9698b7b9","sha256":"f22ed714506d98899a6fc5a827d0e8c43b9816939ef8b86398cf4bbf39de6935","sha512":"5df721c3a0440cc736d06d5430fc621063713dccf736b43543f51ba5d9d3c249c9526e0aee166c561603828ecd89a883177ef2614020571c63b50bb506bb03ca","ssdeep":"","tlshash":"c7515514cab5c1966b4a4272d6f67d086085cd17d5bb62ec391200ecf6c73db13c936e","first_seen":"2026-06-05T05:33:15.977444Z","last_seen":"2026-08-05T11:30:42.362583Z","times_seen":5251,"resource_available":false,"data":"OnJvb3R7LS1DT0VtWTojMWYxZjFmOy0teGhVR3djOiNmZmZ9OnJvb3R7LS12WmUwamI6I2EzYzlmZjstLW53WG9iYjp2YXIoLS12WmUwamIpOy0tVnVaWEJkOiMwMDFkMzU7LS11THozN2M6IzU0NWQ3ZTstLWpJTnU2YzojMDAxZDM1Oy0tVHlWWWxkOiMwYjU3ZDA7LS1aRXBQbWQ6I2EzYzlmZjstLVFXYWFhZjp2YXIoLS1aRXBQbWQpOy0tREVlU3RmOiNmNWY4ZmY7LS1UU1daSWI6I2U1ZWRmZjstLUJSTHdFOiNkM2UzZmQ7LS1nUzVqWGI6I2QyZDJkMjstLUFxbjd4ZDp2YXIoLS1nUzVqWGIpOy0tRXBGTlc6I2ZmZjstLVhxYm9jZTojMWYxZjFmOy0tSVhveFVlOiM2MzYzNjM7LS1iYlF4QWI6IzQ3NDc0NzstLVlMTk5IYzojMWYxZjFmOy0tVE1ZUzk6IzBiNTdkMDstLUpLcXgyOiMxYTBkYWI7LS1yckpKVWM6IzBiNTdkMDstLW1YWmtxYzojZDJkMmQyOy0tSmNsRmo6I2QyZDJkMjstLU5zbTBjZTojMGI1N2QwOy0tdmR3eHBlOiNhOGM3ZmE7LS15d3owMWM6I2ZiYmMwNDstLVhLTUR4YzojZjNmNWY2Oy0tYVluMlM6I2YzZjVmNjstLUxtNTcwYjojZGVlMWUzfTpyb290ey0tYW1uUHdlOnZhcigtLUlYb3hVZSk7LS1aWGlhR2Y6I2ZmZjstLUVvS09iZTojZmZmOy0tY0llaGxkOiNmZmY7LS1PTmhyR2Q6I2QyZDJkMjstLWdWVUtjZDpyZ2JhKDAsMCwwLDAuNik7LS1qd0ZDMmU6dmFyKC0tQlJMd0UpOy0teVR0c0VmOiMwNzI3MTF9LnpKVXVxZnttYXJnaW4tYm90dG9tOjRweH0uQUI0V2Zme21hcmdpbi1sZWZ0OjE2cHh9OnJvb3R7LS1ua21RT2U6QXJpYWwsc2Fucy1zZXJpZjstLWE5WDBKYzoyNHB4Oy0tejNCRkllOjE2cHg7LS1YV2xpd2M6NDAwOy0tTEk0Qm86QXJpYWwsc2Fucy1zZXJpZjstLVhXdjFpZjoyMnB4Oy0tTWhzN2RlOjE0cHg7LS1vZndVQmM6NDAwOy0tWWZpS2Y6QXJpYWwsc2Fucy1zZXJpZjstLXB1blpsYzoxNnB4Oy0tZ09zNkJmOjEycHg7LS1NektCcGQ6NDAwOy0tSVQ3eTNjOkdvb2dsZSBTYW5zLEFyaWFsLHNhbnMtc2VyaWY7LS1oUERNRmY6MzZweDstLUlhNzBYZDoyOHB4Oy0tVnlpOHljOjQwMDstLUFvaDlYZTpHb29nbGUgU2FucyxBcmlhbCxzYW5zLXNlcmlmOy0tcVlHWHc6MjhweDstLXFwZEZwOjIycHg7LS1KVDRJUGM6NDAwOy0tclRrMEU6R29vZ2xlIFNhbnMsQXJpYWwsc2Fucy1zZXJpZjstLU9rM2lyZjoyNHB4Oy0tdUJkZ1RlOjE4cHg7LS1aZjlYbmQ6NDAwOy0tcVI4WDA6R29vZ2xlIFNhbnMsQXJpYWwsc2Fucy1zZXJpZjstLUNiZG1FOjIwcHg7LS1oYm1uamU6MTRweDstLU95Y2p0OjUwMDstLXFCd3lxYjpBcmlhbCxzYW5zLXNlcmlmOy0tblVPcUVjOjE2cHg7LS1jTVR2amY6MTJweDstLUNVUzE1ZTo1MDA7LS1Fb3U4WWM6R29vZ2xlIFNhbnMsQXJpYWwsc2Fucy1zZXJpZjstLXFXWllFYzoyNnB4Oy0tR2lUb0pmOjIwcHg7LS1wMkxxeGU6NDAwOy0tenRUcVBlOkdvb2dsZSBTYW5zLEFyaWFsLHNhbnMtc2VyaWY7LS1DNzR4MmU6MjRweDstLWd5dTVMOjE2cHg7LS1Zb2E2cWQ6NDAwOy0tbEkxVHJjOkFyaWFsLHNhbnMtc2VyaWY7LS1ISXlFS2M6MThweDstLVpOZzg4OjE0cHg7LS1xalZVM2Q6NDAwfS53SFlsVGR7Zm9udC1mYW1pbHk6dmFyKC0tTEk0Qm8pO2ZvbnQtc2l6ZTp2YXIoLS1NaHM3ZGUpO2xpbmUtaGVpZ2h0OnZhcigtLVhXdjFpZil9LnlVVE1qe2ZvbnQtZmFtaWx5OkFyaWFsLHNhbnMtc2VyaWY7Zm9udC13ZWlnaHQ6NDAwfUBrZXlmcmFtZXMgZy1zbmFja2Jhci1zaG93ezAle3BvaW50ZXItZXZlbnRzOm5vbmU7dHJhbnNmb3JtOnRyYW5zbGF0ZVkoMCl9dG97dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEwMCUpfX1Aa2V5ZnJhbWVzIGctc25hY2tiYXItaGlkZXswJXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMTAwJSl9dG97dHJhbnNmb3JtOnRyYW5zbGF0ZVkoMCl9fUBrZXlmcmFtZXMgZy1zbmFja2Jhci1zaG93LWNvbnRlbnR7MCV7b3BhY2l0eTowfX1Aa2V5ZnJhbWVzIGctc25hY2tiYXItaGlkZS1jb250ZW50e3Rve29wYWNpdHk6MH19LkxIM3dHe2JvdHRvbTowO2hlaWdodDowO3Bvc2l0aW9uOmZpeGVkO3otaW5kZXg6OTk5fS55SzZqcWV7LW1vei1ib3gtc2l6aW5nOmJvcmRlci1ib3g7Ym94LXNpemluZzpib3JkZXItYm94O3Zpc2liaWxpdHk6aGlkZGVufS5yVFlUTmJ7YW5pbWF0aW9uOmctc25hY2tiYXItaGlkZSAuNHMgY3ViaWMtYmV6aWVyKDAuNCwwLDAuMiwxKSBib3RoO3Zpc2liaWxpdHk6aW5oZXJpdH0uVWV3UE1kLlVld1BNZHthbmltYXRpb246Zy1zbmFja2Jhci1zaG93IC41cyBjdWJpYy1iZXppZXIoMC40LDAsMC4yLDEpIGJvdGg7dmlzaWJpbGl0eTppbmhlcml0fS5iNzdIS2Z7YmFja2dyb3VuZC1jb2xvcjojMzIzMjMyO3BhZGRpbmc6MCAyNHB4fUBtZWRpYSAoZm9yY2VkLWNvbG9yczphY3RpdmUpey5iNzdIS2Z7Ym9yZGVyOjFweCBzb2xpZCBDYW52YXNUZXh0fX0uckl4c3Zley1tb3otYm94LWFsaWduOmNlbnRlcjthbGlnbi1pdGVtczpjZW50ZXI7ZGlzcGxheTotbW96LWJveDtkaXNwbGF5OmZsZXh9LnJUWVROYiAuckl4c3Zle2FuaW1hdGlvbjpnLXNuYWNrYmFyLWhpZGUtY29udGVudCAuMzVzIGN1YmljLWJlemllcigwLjQsMCwwLjIsMSkgYm90aH0uVWV3UE1kIC5ySXhzdmV7YW5pbWF0aW9uOmctc25hY2tiYXItc2hvdy1jb250ZW50IC4zNXMgY3ViaWMtYmV6aWVyKDAuNCwwLDAuMiwxKSAuMTVzIGJvdGh9LlR4bmduYi5UeG5nbmJ7bGluZS1oZWlnaHQ6MjBweH0uVHhuZ25ie2NvbG9yOiNmZmY7LW1vei1ib3gtZmxleDoxO2ZsZXg6MSAxIGF1dG87bWFyZ2luOjE0cHggMDt3b3JkLWJyZWFrOmJyZWFrLXdvcmR9QG1lZGlhIChtaW4td2lkdGg6NTY5cHgpIGFuZCAobWluLWhlaWdodDo1NjlweCl7LkxIM3dHe3RleHQtYWxpZ246Y2VudGVyfS55SzZqcWV7ZGlzcGxheTppbmxpbmUtYmxvY2s7bWF4LXdpZHRoOjU2OHB4O21pbi13aWR0aDoyODhweDt0ZXh0LWFsaWduOmxlZnR9LmI3N0hLZntib3JkZXItcmFkaXVzOjhweH19LkxIM3dHe2xlZnQ6MDtyaWdodDowfS55SzZqcWV7cG9zaXRpb246cmVsYXRpdmV9Lm1xc0FuZXttYXJnaW4tYm90dG9tOmVudihzYWZlLWFyZWEtaW5zZXQtYm90dG9tKX1zZW50aW5lbHt9"}},"time_used":10,"timings":{"blocked":-1,"dns":0,"connect":0,"send":0,"wait":10,"receive":0,"ssl":0},"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"www.google.com/tia/tia.png","fqdn":"www.google.com","domain":"google.com","tld":"com"},"ip":{"addr":"142.251.157.119","port":443,"asn":15169,"as":"GOOGLE","country":"United States","country_code":"US"},"is_navigation_request":false,"resource_type":"img","requested_by":"https://www.google.com/","date":"2026-07-27T15:33:56.313Z","timestamp":1785166436313,"http_version":"HTTP/3","security_state":"secure","security_info":{"cipher_suite":"TLS_AES_128_GCM_SHA256","key_group_name":"mlkem768x25519","signature_name":"ECDSA-P256-SHA256","protocol":"TLSv1.3","cert":{"subject":{"commonName":"*.google.com","organization":""},"issuer":{"commonName":"WR2","organization":"Google Trust Services"},"validity":{"start":"Mon, 29 Jun 2026 08:37:25 GMT","end":"Mon, 21 Sep 2026 08:37:24 GMT"},"fingerprint":{"sha1":"D9:DA:81:30:78:3E:9C:6B:5F:9D:18:52:0E:BE:6D:52:2F:FB:33:E0","sha256":"EA:E2:2D:87:EC:9C:D6:51:9D:59:E4:13:35:3B:97:14:E3:DA:58:2D:1C:69:19:41:54:94:25:C3:94:17:F3:0C"}}},"request":{"raw":"GET /tia/tia.png HTTP/1.1\r\nHost: www.google.com\r\nUser-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:134.0) Gecko/20100101 Firefox/134.0\r\nAccept: image/avif,image/webp,image/png,image/svg+xml,image/*;q=0.8,*/*;q=0.5\r\nAccept-Language: en-US,en;q=0.9\r\nAccept-Encoding: gzip, deflate, br, zstd\r\nReferer: https://www.google.com/\r\nSec-GPC: 1\r\nConnection: keep-alive\r\nCookie: AEC=AdJVEauUsWHpfGAsUyeilL8EI9I2Tr9FfEzOqXuEJToXYpKe1KUK4km-Sg; __Secure-ENID=35.SE=AbigeV3aJ0m6xMobN92AbNZpW8pBnglGTPw_dz_A9WWyoDaiBBZPKRYUFk43qYtDkrYoTgVKiKtyKOguRjujzVzhuA6WYYbk-i87vjK7wNHmdliDMhNspbLvs4LU7H3yif4utRnzW3A5pWS7luM5rorSqU-pj8vCqCmdLtP-tPTBFRmS_IwoinM092pFPLFq5WUhH_JzQWk4Nj64_cv8DwX9Gzz3yPDcXsoOsZMMsbp3c373u3CG8Y4REmw\r\nSec-Fetch-Dest: image\r\nSec-Fetch-Mode: no-cors\r\nSec-Fetch-Site: same-origin\r\nPriority: u=5, i\r\nPragma: no-cache\r\nCache-Control: no-cache\r\n\r\n","headers":null,"cookies":null,"method":"GET"},"response":{"raw":"HTTP/3 200 \r\naccept-ranges: bytes\r\ncross-origin-resource-policy: cross-origin\r\ncross-origin-opener-policy-report-only: same-origin; report-to=\"static-on-bigtable\"\r\nreport-to: {\"group\":\"static-on-bigtable\",\"max_age\":2592000,\"endpoints\":[{\"url\":\"https://csp.withgoogle.com/csp/report-to/static-on-bigtable\"}]}\r\ncontent-length: 258\r\nx-content-type-options: nosniff\r\nserver: sffe\r\nx-xss-protection: 0\r\ndate: Wed, 22 Jul 2026 21:44:20 GMT\r\nexpires: Thu, 22 Jul 2027 21:44:20 GMT\r\ncache-control: public, max-age=31536000\r\nlast-modified: Fri, 27 Sep 2019 01:00:00 GMT\r\ncontent-type: image/png\r\nage: 409776\r\nalt-svc: h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000\r\n\r\n","headers":null,"cookies":null,"status_code":"200","status_text":"","fingerprints":null,"data":{"size":258,"size_decoded":917,"mime_type":"image/png","magic":"PNG image data, 27 x 23, 8-bit/color RGB, non-interlaced","md5":"201e50d8dd7a30c0a918213686ca43b7","sha1":"6678592120e899f0d2245c8afeaf9d4a3043c41b","sha256":"c532312eea8020a0370685b222a02b11becd58cd394b509029dff5956127dd81","sha512":"50cc19dd554d51fe79eef2c8cd45941504ea2edddaf06d425ba3a1e41dc974d866b8dad9d91609efa39afb1f083f2f611d324e57f54ce84a984f6b5bdde0f383","ssdeep":"","tlshash":"09d095dd7dfd9c94fe6143d7c0435d94ad79547d1c7a5643417cc99d2c26807800314b","first_seen":"2023-04-07T11:58:26Z","last_seen":"2026-08-16T23:21:35.719135Z","times_seen":130463,"resource_available":false,"data":"iVBORw0KGgoAAAANSUhEUgAAABsAAAAXCAIAAAB1dKN5AAAAyUlEQVR4AWP4////buoBoGkMQOon9QDQNNqYOGrixdvPSiZtjG1aA0fxLevwI3wmrj94pXDilsKJmzC15fZtQeZGNayGIyAXp4lLdp4vm7r9Pxg0zduLjwEDQBOTWlajm/gOBsgz0ad4PtwELCYmt60DaiAeEWUi2G7CzsTnxscwQLaJcBPQTSTD1wRMbJ61BWgiwhUYAFOKgIkXr9/rW3GUmiY+fvoC6MbK6TuB6khAjWuwmogwdOfhc0BzSTIOw0SKwaiJ1K8LAfTB91A7nXAtAAAAAElFTkSuQmCC"}},"time_used":10,"timings":{"blocked":-1,"dns":0,"connect":0,"send":0,"wait":10,"receive":0,"ssl":0},"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"www.google.com/xjs/_/js/k=xjs.hd.no.ZJX-0yQnO-M.2019.O/am=AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgQAAAAABBAAAAAAAAAAAAAAAYAAgAAAAAAAAAAAAAAAAAAIAAAQAAIAAAAAAAAAAAEAAAAAAABAAACAAAYAAAAQABBAAAAAMAAAAAAAAAAAAAAAAAAAAAgBAAAABCAADwBwZYAQAAAAAAAAASADAAAAAAAAAAFgAAIAEAAAAEQAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAABgAAAAAAKAAAAABAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAgAAACgAACAAAAgAAAAAAAAAAAAAAAACgAwAAAAAAAAAAAAAAAAAAAAAAAAAACAAAQIAAAAAAAAAAAAQACAAAAEAHQOABhhQUAAAAAAAAAAAAAAAAAAAAAAAAAAACLIBdSAEBEAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAyAkAAAAAAICF/d=0/dg=0/br=1/rs=ACT90oG_sTN876pKLsn8EAIC7HPAt8yW8Q/m=qTnoBf,syaf,sOXFj,oGtAuc,NJ1rfe,syao,q0xTif,y05UD,PPhKqf,vECdaf,sy1hp,syoh,syqg,sy2aw,sy1z4,sy2ax,sy28y,sy28z,sy1c7,sy1g1,sy1g3,sy1g5,sy1g6,epYOx?cb=121509378\u0026xjs=s4","fqdn":"www.google.com","domain":"google.com","tld":"com"},"ip":{"addr":"142.251.157.119","port":443,"asn":15169,"as":"GOOGLE","country":"United States","country_code":"US"},"is_navigation_request":false,"resource_type":"script","requested_by":"https://www.google.com/","date":"2026-07-27T15:33:57.112Z","timestamp":1785166437112,"http_version":"HTTP/3","security_state":"secure","security_info":{"cipher_suite":"TLS_AES_128_GCM_SHA256","key_group_name":"mlkem768x25519","signature_name":"ECDSA-P256-SHA256","protocol":"TLSv1.3","cert":{"subject":{"commonName":"*.google.com","organization":""},"issuer":{"commonName":"WR2","organization":"Google Trust Services"},"validity":{"start":"Mon, 29 Jun 2026 08:37:25 GMT","end":"Mon, 21 Sep 2026 08:37:24 GMT"},"fingerprint":{"sha1":"D9:DA:81:30:78:3E:9C:6B:5F:9D:18:52:0E:BE:6D:52:2F:FB:33:E0","sha256":"EA:E2:2D:87:EC:9C:D6:51:9D:59:E4:13:35:3B:97:14:E3:DA:58:2D:1C:69:19:41:54:94:25:C3:94:17:F3:0C"}}},"request":{"raw":"GET /xjs/_/js/k=xjs.hd.no.ZJX-0yQnO-M.2019.O/am=AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgQAAAAABBAAAAAAAAAAAAAAAYAAgAAAAAAAAAAAAAAAAAAIAAAQAAIAAAAAAAAAAAEAAAAAAABAAACAAAYAAAAQABBAAAAAMAAAAAAAAAAAAAAAAAAAAAgBAAAABCAADwBwZYAQAAAAAAAAASADAAAAAAAAAAFgAAIAEAAAAEQAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAABgAAAAAAKAAAAABAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAgAAACgAACAAAAgAAAAAAAAAAAAAAAACgAwAAAAAAAAAAAAAAAAAAAAAAAAAACAAAQIAAAAAAAAAAAAQACAAAAEAHQOABhhQUAAAAAAAAAAAAAAAAAAAAAAAAAAACLIBdSAEBEAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAyAkAAAAAAICF/d=0/dg=0/br=1/rs=ACT90oG_sTN876pKLsn8EAIC7HPAt8yW8Q/m=qTnoBf,syaf,sOXFj,oGtAuc,NJ1rfe,syao,q0xTif,y05UD,PPhKqf,vECdaf,sy1hp,syoh,syqg,sy2aw,sy1z4,sy2ax,sy28y,sy28z,sy1c7,sy1g1,sy1g3,sy1g5,sy1g6,epYOx?cb=121509378\u0026xjs=s4 HTTP/1.1\r\nHost: www.google.com\r\nUser-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:134.0) Gecko/20100101 Firefox/134.0\r\nAccept: */*\r\nAccept-Language: en-US,en;q=0.9\r\nAccept-Encoding: gzip, deflate, br, zstd\r\nReferer: https://www.google.com/\r\nSec-GPC: 1\r\nConnection: keep-alive\r\nCookie: AEC=AdJVEauUsWHpfGAsUyeilL8EI9I2Tr9FfEzOqXuEJToXYpKe1KUK4km-Sg; __Secure-ENID=35.SE=Uz4O9fexpqtcg27rsCzqB3loBSC8a70Mqp_d18c3cjeU9uMWe4FHcPW1svFlK9taJqOPsqN9ZTMvrbcif3fGSVkGFj_PZtB1iqcUHQQ3k4McoRQh3TFmXwFvuBZDiuJbZsEWkIiLh9oQZqCS02Kcsd8T8KoXlZsObsNcGy15dXCeCexC1uy7XgZprqFrMQQA8uTOFbrZoEzmrPkKmCFOh5B5Jnu68ljyS8KtzuKzT_-dPSCoq1OOlqfaBgM\r\nSec-Fetch-Dest: script\r\nSec-Fetch-Mode: no-cors\r\nSec-Fetch-Site: same-origin\r\nPriority: u=1\r\nPragma: no-cache\r\nCache-Control: no-cache\r\n\r\n","headers":null,"cookies":null,"method":"GET"},"response":{"raw":"HTTP/3 200 \r\naccept-ranges: bytes\r\ncontent-encoding: br\r\ncontent-security-policy-report-only: require-trusted-types-for 'script'; report-uri https://csp.withgoogle.com/csp/gws-team\r\ncross-origin-resource-policy: cross-origin\r\ncross-origin-opener-policy: same-origin; report-to=\"gws-team\"\r\nreport-to: {\"group\":\"gws-team\",\"max_age\":2592000,\"endpoints\":[{\"url\":\"https://csp.withgoogle.com/csp/report-to/gws-team\"}]}\r\ncontent-length: 6062\r\nx-content-type-options: nosniff\r\nserver: sffe\r\nx-xss-protection: 0\r\ndate: Sat, 25 Jul 2026 02:19:00 GMT\r\nexpires: Sun, 25 Jul 2027 02:19:00 GMT\r\ncache-control: public, immutable, max-age=31536000\r\nlast-modified: Sat, 25 Jul 2026 01:57:35 GMT\r\ncontent-type: text/javascript; charset=UTF-8\r\nvary: Accept-Encoding, Origin\r\nage: 220497\r\nalt-svc: h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000\r\n\r\n","headers":null,"cookies":null,"status_code":"200","status_text":"","fingerprints":null,"data":{"size":18426,"size_decoded":6890,"mime_type":"text/javascript; charset=UTF-8","magic":"JavaScript source, ASCII text, with very long lines (1587)","md5":"52fe343e6394dcccf876ff966d184c6c","sha1":"2eb1f1b75f752988c6e7bf32f98ec7a29c705d05","sha256":"bda85954852fb4d75e232268491cdbfab2cd5c910a745ae73285a088236dff0b","sha512":"66f7dbc80aae080c9900dc9a79d0d4b9e19ce978a1d1c6e716b3c38bd7e588f6325740ec860bed62825910eb5f6c41b7c61790b87752af6e5d7b3d53cb872c25","ssdeep":"192:XeTilT4uboa0DqYVhMOZaATOdVUHu0Xkv1KsYtcQ1466seUH41CKPDm334EIvxfo:LNXYSqHuacQ1l3WDI3yxtLh0BZB","tlshash":"2582d93051a22563521b54e8a73b53e9e19e325e6f1b40e86d68bfc037f8e8049f7b74","first_seen":"2026-07-25T02:50:28.831616Z","last_seen":"2026-07-27T20:08:12.378089Z","times_seen":22,"resource_available":true,"data":"dGhpcy5faGQ9dGhpcy5faGR8fHt9OyhmdW5jdGlvbihfKXt2YXIgd2luZG93PXRoaXM7CnRyeXsKXy51KCJxVG5vQmYiKTsKdmFyIHBtYj1mdW5jdGlvbihhLGIsYyl7dmFyIGQ9YS5nZXRBdHRyaWJ1dGUoYil8fCIiO2M9U3RyaW5nKGN8fCIiKTtjPWMuc3BsaXQoIjsiKS5maWx0ZXIoZT0+ZSk7ZD1kLnNwbGl0KCI7IikuZmlsdGVyKGU9Pl8uamFhKGUsIjouQ0xJRU5UIikpO18uSWEoYyxkKTsoYz1jLmpvaW4oIjsiKSk/YS5zZXRBdHRyaWJ1dGUoYixjKTphLnJlbW92ZUF0dHJpYnV0ZShiKTtfLkNyYShhKX0scW1iPWZ1bmN0aW9uKGEsYixjKXtjP2Euc2V0QXR0cmlidXRlKGIsYyk6YS5yZW1vdmVBdHRyaWJ1dGUoYik7YS5oYXNBdHRyaWJ1dGUoImMtd2l6Iil8fChiPWEsYS50YWdOYW1lPT09IkMtREFUQSImJihiPWEucGFyZW50RWxlbWVudCksXy52U2EoYiwhMSkpfSx1bWI9ZnVuY3Rpb24oKXtybWJ8fChybWI9ITAsc21iPV8uQXZhLF8uQXZhPWE9PntzbWImJnNtYihhKTtmb3IobGV0IGQ9MDtkPGEubGVuZ3RoO2QrKyl7bGV0IGU9YVtkXTtpZihfLlJnKGUpKXt2YXIgYj1fLnloKGUpLGM9Yi5rYTtjLmthfHwKYy53YS5wdXNoKGUpO18uVVFhKGIua2EpfX19LHRtYj1fLkJ2YSxfLkJ2YT1hPT57dG1iJiZ0bWIoYSk7Zm9yKGxldCBkPTA7ZDxhLmxlbmd0aDtkKyspe2xldCBlPWFbZF07aWYoXy5SZyhlKSl7dmFyIGI9Xy55aChlKSxjPWIua2E7Yy5rYXx8Yy5BYS5wdXNoKGUpO18uVVFhKGIua2EpfX19KX0scm1iPSExLHNtYix0bWIsdm1iPWZ1bmN0aW9uKGEpe2lmKGE9YXx8ZG9jdW1lbnQuYm9keSl7dmFyIGI9ZG9jdW1lbnQuaGVhZC5xdWVyeVNlbGVjdG9yKCJzdHlsZVtkYXRhLWxhdGUtY3NzXSIpO2ZvcihsZXQgYyBvZiBBcnJheS5mcm9tKGEucXVlcnlTZWxlY3RvckFsbCgic3R5bGVbZGF0YS1zZXJ2ZXItY3NzLWNvbGxlY3Rpb25dLCBsaW5rW2RhdGEtc2VydmVyLWNzcy1jb2xsZWN0aW9uXSIpKSljLnRhZ05hbWU9PT0iU1RZTEUiP2I/ZG9jdW1lbnQuaGVhZC5pbnNlcnRCZWZvcmUoYyxiKTpkb2N1bWVudC5oZWFkLmFwcGVuZENoaWxkKGMpOmMuaGFzQXR0cmlidXRlKCJsYXRlLWNzcy1tb3ZlZCIpfHwKKGE9Yy5jbG9uZU5vZGUoITApLGEub25sb2FkPSgpPT5fLlltKGMpLGMuc2V0QXR0cmlidXRlKCJsYXRlLWNzcy1tb3ZlZCIsInRydWUiKSxiP2RvY3VtZW50LmhlYWQuaW5zZXJ0QmVmb3JlKGEsYik6ZG9jdW1lbnQuaGVhZC5hcHBlbmRDaGlsZChhKSl9fTt2YXIgeW1iLHhtYix6bWI7Xy53bWI9Xy56V2E7eW1iPWZ1bmN0aW9uKGEsYixjLGQsZSxmLGcsaCl7dmFyIGs9bmV3IF8ud21iO2suUl8oYS54Yyk7dmFyIG09Xy5XZChkKS5kb2N1bWVudEVsZW1lbnQuY29udGFpbnMoZCk7dm1iKGRvY3VtZW50LmJvZHkpOygwLF8ud1dhKShkLCgpPT57YS54YyYmZj9hLnhjLm9hKGQsKCk9PntlKGssZyxoKX0pOmUoayxnLGgpfSxnKTtjP3htYihiLGQsbSk6YS54YyYmYS54Yy53YSgpfTt4bWI9ZnVuY3Rpb24oYSxiLGMpe2EuZGlzcGF0Y2hFdmVudChuZXcgXy5sU2EoYz9fLmtTYTpfLlB4YSxiLF8uVHApKTthLmRpc3BhdGNoRXZlbnQobmV3IF8uWmQoXy5qU2EsYikpfTsKem1iPWNsYXNze2NvbnN0cnVjdG9yKCl7Xy5yaS5qc2FjdGlvbj1wbWI7Xy5yaS5qc2RhdGE9cW1iO3VtYigpfVJfKGEpe3RoaXMueGM9YX1HeSgpe3JldHVybiB0aGlzLnhjfWthKGEsYixjKXtyZXR1cm4gYShiLGMpfXhGKGEsYixjLGQsZSl7eW1iKHRoaXMsYSwhMCxiLGMsITAsZCxlKX11SGEoYSxiLGMsZCxlKXt5bWIodGhpcyxhLCExLGIsYywhMSxkLGUpO2EuZGlzcGF0Y2hFdmVudChuZXcgXy5sU2EoXy5rU2EsYixfLlRwKSl9VTIoYSxiLGMsZCxlKXt2YXIgZj1uZXcgXy53bWI7Zi5SXyh0aGlzLnhjKTt2YXIgZz1fLldkKGIpLmRvY3VtZW50RWxlbWVudC5jb250YWlucyhiKTtnJiZiIGluc3RhbmNlb2YgRWxlbWVudCYmdm1iKGIpOygwLF8udldhKShiLCgpPT52b2lkIGMoZixkLGUpLGQpO3htYihhLGIsZyl9SWQoYSxiLGMsZCl7dmFyIGU9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7dGhpcy5VMihhLGUsYixjLGQpO2I9ZS5maXJzdEVsZW1lbnRDaGlsZDt4bWIoYSwKYiwhMSk7cmV0dXJuIGJ9fTtfLmJnKHptYik7Xy5BbWI9Y2xhc3N7Y29uc3RydWN0b3IoKXt0aGlzLnNveT1fLkhmKF8uTXIoXy5ZcCkpO3RoaXMuY29uZmlnPV8uSGYoXy5NcihfLnZpKSk7dGhpcy5vYT1fLkhmKHptYil9Ul8oYSl7dGhpcy5vYS5SXyhhKX1HeSgpe3JldHVybiB0aGlzLm9hLkd5KCl9a2EoYSxiKXt2YXIgYz1fLlhwKHRoaXMuY29uZmlnKTtyZXR1cm4gdGhpcy5vYS5rYShhLGIsYyl9eEYoYSxiLGMpe3RoaXMub2EueEYodGhpcy5zb3kuZ2V0RXZlbnRUYXJnZXQoKSxhLGIsYyxfLlhwKHRoaXMuY29uZmlnKSl9dUhhKGEsYixjKXt0aGlzLm9hLnVIYSh0aGlzLnNveS5nZXRFdmVudFRhcmdldCgpLGEsYixjLF8uWHAodGhpcy5jb25maWcpKX1VMihhLGIsYyl7dGhpcy5vYS5VMih0aGlzLnNveS5nZXRFdmVudFRhcmdldCgpLGEsYixjLF8uWHAodGhpcy5jb25maWcpKX1JZChhLGIpe3JldHVybiB0aGlzLm9hLklkKHRoaXMuc295LmdldEV2ZW50VGFyZ2V0KCksYSxiLF8uWHAodGhpcy5jb25maWcpKX19OwpfLmJnKF8uQW1iLF8uZHdhKTsKXy52KCk7Cn1jYXRjaChlKXtfLl9EdW1wRXhjZXB0aW9uKGUpfQp0cnl7Cl8ubmYoXy55MWEpOwp9Y2F0Y2goZSl7Xy5fRHVtcEV4Y2VwdGlvbihlKX0KdHJ5ewpfLnUoInNPWEZqIik7CnZhciBLbWI9Y2xhc3MgZXh0ZW5kcyBfLnNve2thKGEpe3JldHVybiBhKCl9fTtfLmFnKF8ueDFhLEttYik7Cl8udigpOwp9Y2F0Y2goZSl7Xy5fRHVtcEV4Y2VwdGlvbihlKX0KdHJ5ewpfLnUoIm9HdEF1YyIpOwpfLkxtYj1uZXcgXy5UZihfLnkxYSk7Cl8udigpOwp9Y2F0Y2goZSl7Xy5fRHVtcEV4Y2VwdGlvbihlKX0KdHJ5ewpfLnUoIk5KMXJmZSIpOwpfLk5yPW5ldyBfLm9vKF8uZFdhKTsKXy52KCk7Cn1jYXRjaChlKXtfLl9EdW1wRXhjZXB0aW9uKGUpfQp0cnl7CnZhciBHbmI7R25iPWZ1bmN0aW9uKCl7dmFyIGE9Xy5DZigxKTthPV8uQWYoYSxfLkpvYSk7aWYoIV8udmYoYSkpcmV0dXJuIGF9O18uWXI9ZnVuY3Rpb24oYSxiKXthJiZfLk9mLmdldEluc3RhbmNlKCkucmVnaXN0ZXIoYSxiKX07Xy5IbmI9Y2xhc3MgZXh0ZW5kcyBfLllOYXtjb25zdHJ1Y3Rvcigpe3N1cGVyKCk7dGhpcy5zb3k9dGhpcy5kb209bnVsbDtpZih0aGlzLmxXKCkpe3ZhciBhPV8uUE5hKHRoaXMuU2woKSxbXy54aSxfLldwXSk7YT1fLkloKFthW18ueGldLGFbXy5XcF1dKS50aGVuKGZ1bmN0aW9uKGIpe3RoaXMuc295PWJbMF07dGhpcy5kb209YlsxXX0sbnVsbCx0aGlzKTt0aGlzLm90KGEsXy5ybyl9dGhpcy51T2I9R25iKCl9am5hKGEpe18uV05hKHRoaXMsYSl9b3QoYSl7Xy5YTmEodGhpcyxhKX1jNShhKXtyZXR1cm4gdGhpcy51T2IuYzUoYSl9Z2V0RGF0YShhKXtyZXR1cm4gdGhpcy51T2IuZ2V0RGF0YShhKX1kaXJ0eSgpe18uTW8odGhpcy5kb20uQWkoKSl9emJiKCl7fX07Cn1jYXRjaChlKXtfLl9EdW1wRXhjZXB0aW9uKGUpfQp0cnl7Cl8udSgicTB4VGlmIik7CnZhciBJbmI9ZnVuY3Rpb24oYSl7dmFyIGI9Yz0+e18uZk9hKGMpJiYoXy5mT2EoYykuUWM9bnVsbCxfLlNtYihjLG51bGwpKTtjLlh5SGk5JiYoYy5YeUhpOT1udWxsKX07YihhKTthPWEucXVlcnlTZWxlY3RvckFsbCgiW2Mtd2l6XSIpO2ZvcihsZXQgYz0wO2M8YS5sZW5ndGg7YysrKWIoYVtjXSl9O18uZ29hKF8uZFdhLF8uY1dhKTt2YXIgSm5iLEtuYjtKbmI9ZnVuY3Rpb24oYSl7dmFyIGI9YS5YaigpO3JldHVybiguLi5jKT0+YS5OYS5rYSgoKT0+YiguLi5jKSl9O0tuYj1mdW5jdGlvbihhLGIsYyl7dmFyIGQ9YS5kb20ub2goKS5nZXREb2N1bWVudCgpLmNyZWF0ZUVsZW1lbnQoImRpdiIpO2EuSWEuVTIoZCxiLGMpO3JldHVybiBkLmNoaWxkTm9kZXMubGVuZ3RoPT0xP2QuZmlyc3RDaGlsZDpkfTsKXy5acj1jbGFzcyBleHRlbmRzIF8uSG5ie3N0YXRpYyBRYSgpe3JldHVybntjb250ZXh0OntUb2M6IkZWeExrZiJ9LHNlcnZpY2U6e2ppOl8uTnIsY29tcG9uZW50Ol8uVXIsdlJjOl8uTG1ifX19Y29uc3RydWN0b3IoYSl7c3VwZXIoKTt2YXIgYj1hLmNvbnRleHQuVG9jO3RoaXMud2E9Yi5qODt0aGlzLldpPXRoaXMuR2E9dGhpcy5LYT10aGlzLkJhPW51bGw7dGhpcy5JYT1hLnNlcnZpY2Uuamk7dGhpcy5OYT1hLnNlcnZpY2UudlJjO2E9dGhpcy53YS53YS50aGVuKGM9Pnt0aGlzLkJhPWM7dGhpcy5LYT10aGlzLndhLmlkLkVhKGMsdGhpcy53YS5nZXRQYXJhbXMoKSkudmFyaWFudH0pO2I9Yi5ITmIudGhlbihjPT57dGhpcy5HYT1jfSk7dGhpcy5FYT10aGlzLkVhLmJpbmQodGhpcyk7dGhpcy5vdChfLkloKFthLGJdKSxfLnJvKX1rYSgpe3JldHVybiIifW9hKCl7cmV0dXJuITF9RzEoKXtyZXR1cm4gdGhpcy53YX10d2EoKXt2YXIgYT1fLlFjKHRoaXMuR2EsdGhpcy5FYSk7YT17S2U6dGhpcy53YS5nZXRQYXJhbXMoKSwKSTA6dGhpcy53YS5HYSxGZTp7UDhiOiExLEtlOnRoaXMud2EuZ2V0UGFyYW1zKCksVWs6dGhpcy53YS5pZC5OYSxIYWI6dGhpcy53YS5mWGEsSWs6dGhpcy5rYSgpLGpzZGF0YTpfLlNjKHRoaXMuQmEpfSxHQzphLFNrYzp0aGlzLkthfTtPYmplY3QuYXNzaWduKGEsdGhpcy5CYXx8e30pO09iamVjdC5hc3NpZ24oYSx0aGlzLndhLmthKTtPYmplY3QuYXNzaWduKGEuRmUsdGhpcy53YS5rYSk7cmV0dXJuIGF9RWEoYSxiKXtyZXR1cm4gQXJyYXkuaXNBcnJheShhKT9hLmxlbmd0aCE9MXx8KGI9dGhpcy53YS5pZC5nZXRDaGlsZHJlbigpW2JdLGImJmIuUDYpP18uWGkoYSxjPT5jLnR3YSgpKTphWzBdLnR3YSgpOmEudHdhKCl9cmVuZGVyKCl7dmFyIGE9dGhpcy50d2EoKSxiPUpuYih0aGlzKTthPXRoaXMub2EoKT9LbmIodGhpcyxiLGEpOnRoaXMuc295LklkKGIsYSk7KGI9dGhpcy53YS5pZC5vYSgpKSYmYi5sZW5ndGg+MCYmYi5mb3JFYWNoKCgpPT57fSk7dGhpcy53YS50eShhKTtyZXR1cm4gYX1BYSgpe3JldHVybiB0aGlzLnNveS5BYShKbmIodGhpcyksCnRoaXMudHdhKCkpfXpiYihhKXt2YXIgYj10aGlzLnR3YSgpLGM9Sm5iKHRoaXMpO0luYihhKTt0aGlzLklhLnhGKGEsYyxiKTt0aGlzLkcxKCkudHkoYSl9fTtfLllyKF8uWHIsXy5acik7Cl8udigpOwp9Y2F0Y2goZSl7Xy5fRHVtcEV4Y2VwdGlvbihlKX0KdHJ5ewpfLnUoInkwNVVEIik7CgpfLnYoKTsKfWNhdGNoKGUpe18uX0R1bXBFeGNlcHRpb24oZSl9CnRyeXsKXy51KCJQUGhLcWYiKTsKCl8udigpOwp9Y2F0Y2goZSl7Xy5fRHVtcEV4Y2VwdGlvbihlKX0KdHJ5ewpfLnUoInZFQ2RhZiIpOwoKXy52KCk7Cn1jYXRjaChlKXtfLl9EdW1wRXhjZXB0aW9uKGUpfQp0cnl7Cl8uU05kPSEhKF8uT2lbNTJdPj4yOCYxKTsKfWNhdGNoKGUpe18uX0R1bXBFeGNlcHRpb24oZSl9CnRyeXsKdmFyIHlWZSxBVmUselZlO3lWZT1uZXcgXy5lcCgxMDM4OTYpOwpfLkJWZT1mdW5jdGlvbihhLGIsYyxkLGUsZixnLGgsayxtLG4scCxyKXtiPWI9PT12b2lkIDA/ITE6YjtjPWM9PT12b2lkIDA/MzpjO3ZhciB4PWQ9PT12b2lkIDA/MDpkO2Q9Xy5QKCk7Yj1fLlFDfHxiO3ZhciB6PShiPyJqYkJJdGYgIjoiIikrKGI/IkdnVEpXZSAiOiIiKSsoYj8iVkRnVmllIjoiIik7Yz1jPT0zPzI0OmM9PTI/MTk6MTY7eD14PT0zPzM2Ong9PTI/MjQ6eD09MT8yMDp4PT00PzE2OjMwO3ZhciBCPSJoZWlnaHQ6IisoYj9fLkwoeCkrInB4IjpfLkwoYykrInB4IikrIjsiKyhiPyIiOiJ3aWR0aDoiKyhfLkwoYykrInB4OyIpKSsoYj8ibWluLXdpZHRoOiIrKF8uTCh4KSsicHgiKToiIiksSD0oMCxfLmVxKShCKTtfLk0oZCwiPGctbG9hZGluZy1pY29uIitfLnVxKF8udHEoXy5BcSgiY2xhc3MiLGgseikpKStfLnVxKF8udHEoXy5BcSgic3R5bGUiLHAsSCkpKSsoZSE9bnVsbD8nIGFyaWEtaGlkZGVuPSInK18uSyhlKSsnIic6IiIpKyhmIT1udWxsPycgYXJpYS1sYWJlbD0iJysKXy5LKGYpKyciJzoiIikrKGchPW51bGw/JyBhcmlhLWxpdmU9IicrXy5LKGcpKyciJzoiIikrKGshPW51bGw/JyBpZD0iJytfLksoaykrJyInOiIiKSsobSE9bnVsbD8nIGpzbmFtZT0iJytfLksobSkrJyInOiIiKSsobiE9bnVsbD8nIHJvbGU9IicrXy5LKG4pKyciJzoiIikrKHIhPW51bGw/IiBzc2s9JyIrXy5LKF8uZnEoIlc0WlF6YyIpK3IpKyInIjoiIikrIj4iKTtfLk0oZCwiPHZlbG9nIitfLktoKG5ldyBfLkkoeVZlKSwhMSkrIj4iKTtfLk0oZCwiPC92ZWxvZz4iKTtpZihiKXt2YXIgSj1KPT09dm9pZCAwPyJqc2wiOko7cj1fLlAoKTtfLk0ociwiPHZlbG9nIitfLktoKG5ldyBfLkkoXy5wQyksITEpKyI+Iik7Xy5NKHIsKEohPSJqc2wiPyI8IitfLkVxKEopK18udXEoXy5KQyhhLHZvaWQgMCx2b2lkIDAsdm9pZCAwLHZvaWQgMCx2b2lkIDAsbmV3IF8uSShfLnBDKSkpKyI+IjoiIikrJzxkaXYgY2xhc3M9IicrXy5LKCJsUDNKb2YiKSsiICIrXy5LKCJuTk11T2QiKSsnIiBzdHlsZT0iaGVpZ2h0OicrCihfLksoXy5MKHgpKSsicHg7d2lkdGg6IikrKF8uSyhfLkwoeCkpKydweCIgYXJpYS1sYWJlbD0iJykpO2E9Xy5PKF8uUCgpLHpWZShhKSk7Xy5NKF8uTyhfLk8oXy5PKF8uTyhfLk0ocixfLksoXy5wcShhKSkrJyIgcm9sZT0icHJvZ3Jlc3NiYXIiPicpLEFWZShfLksoIlZRZGVhYiIpKSksQVZlKF8uSygiSUVxaUFmIikpKSxBVmUoXy5LKCJzbW9jc2UiKSkpLEFWZShfLksoIkZsS2JDZSIpKSksIjwvZGl2PiIrKEohPSJqc2wiPyI8LyIrXy5FcShKKSsiPiI6IiIpKTtfLk0ociwiPC92ZWxvZz4iKTthPXJ9ZWxzZSBKPV8uTShfLlAoKSwnPGltZyBoZWlnaHQ9IicrXy5LKGMpKyciIHNyYz0iJytfLksoXy55cSgiLy93d3cuZ3N0YXRpYy5jb20vdWkvdjEvYWN0aXZpdHlpbmRpY2F0b3IvbG9hZGluZyIrKF8uU05kPyIuc3ZnIjoiXyIrYysiLmdpZiIpKSkrJyIgd2lkdGg9IicrXy5LKGMpKyciIGFyaWEtbGFiZWw9IicpLGE9Xy5PKF8uUCgpLHpWZShhKSksXy5NKEosXy5LKF8ucHEoYSkpKwonIiByb2xlPSJwcm9ncmVzc2JhciInKyhyIT1udWxsPyIgc3NrPSciK18uSyhfLmZxKCJHa1gzaWIiKStyKSsiJyI6IiIpKyI+IiksYT1KO18uTShfLk8oZCxhKSwiPC9nLWxvYWRpbmctaWNvbj4iKTtyZXR1cm4gZH07Cl8uQ1ZlPWZ1bmN0aW9uKGEsYixjKXt2YXIgZD1fLlAoKSxlPTMwLGY9ImhlaWdodDoiKyhfLkwoZSkrInB4O21pbi13aWR0aDoiKSsoXy5MKGUpKyJweCIpLGc9KDAsXy5lcSkoZik7Xy5NKGQsIjxnLXdoaXRlLWxvYWRpbmctaWNvbiIrXy51cShfLnRxKF8uQXEoImNsYXNzIixjLCJqYkJJdGYgQlNuTGIgVkRnVmllIikpKStfLnVxKF8udHEoXy5BcSgic3R5bGUiLHZvaWQgMCxnKSkpKyhiIT1udWxsPycgYXJpYS1oaWRkZW49IicrXy5LKGIpKyciJzoiIikrIj4iKTtfLk0oZCwnPGRpdiBjbGFzcz0iJytfLksoImxQM0pvZiIpKyIgIitfLksoIm5OTXVPZCIpKyciIHN0eWxlPSJoZWlnaHQ6JysoXy5LKF8uTChlKSkrInB4O3dpZHRoOiIpKyhfLksoXy5MKGUpKSsncHgiIGFyaWEtbGFiZWw9IicpKTthPV8uTyhfLlAoKSx6VmUoYSkpO18uTShfLk8oXy5NKGQsXy5LKF8ucHEoYSkpKyciIHJvbGU9InByb2dyZXNzYmFyIj4nKSxBVmUoKSksIjwvZGl2PiIpO18uTShkLCI8L2ctd2hpdGUtbG9hZGluZy1pY29uPiIpOwpyZXR1cm4gZH07QVZlPWZ1bmN0aW9uKGEpe3JldHVybigwLF8uJHApKCI8ZGl2IitfLnVxKF8udHEoXy5BcSgiY2xhc3MiLGEsIlJvS21oYiIpKSkrJz48ZGl2IGNsYXNzPSInK18uSygiYmVEUVAiKSsnIj48ZGl2IGNsYXNzPSInK18uSygiRFUwTkoiKSsiICIrXy5LKCJTUEtGbWMiKSsiICIrXy5LKCJ4M1NkWGQiKSsiICIrXy5LKCJKN3V1VWUiKSsnIj48L2Rpdj48L2Rpdj48ZGl2IGNsYXNzPSInK18uSygiRmNYZmkiKSsnIj48ZGl2IGNsYXNzPSInK18uSygiRFUwTkoiKSsiICIrXy5LKCJTUEtGbWMiKSsiICIrXy5LKCJ0UzNQNSIpKyciPjwvZGl2PjwvZGl2PjxkaXYgY2xhc3M9IicrXy5LKCJiZURRUCIpKyciPjxkaXYgY2xhc3M9IicrXy5LKCJEVTBOSiIpKyIgIitfLksoIlNQS0ZtYyIpKyIgIitfLksoIngzU2RYZCIpKyIgIitfLksoInNEUElDIikrJyI+PC9kaXY+PC9kaXY+PC9kaXY+Jyl9Owp6VmU9ZnVuY3Rpb24oYSl7dmFyIGI9Yj09PXZvaWQgMD8ianNsIjpiO3ZhciBjPSI8dmVsb2ciK18uS2gobmV3IF8uSShfLnBDKSwhMSkrIj4iO2MrPWIhPSJqc2wiPyI8IitfLkVxKGIpK18udXEoXy5KQyhhLHZvaWQgMCx2b2lkIDAsdm9pZCAwLHZvaWQgMCx2b2lkIDAsbmV3IF8uSShfLnBDKSkpKyI+IjoiIjtjPWMrIkxhc3RlciBpbm4gXHUyMDI2IisoYiE9ImpzbCI/IjwvIitfLkVxKGIpKyI+IjoiIik7cmV0dXJuKDAsXy4kcCkoYysiPC92ZWxvZz4iKX07Cn1jYXRjaChlKXtfLl9EdW1wRXhjZXB0aW9uKGUpfQp0cnl7Cl8uSkw9ZnVuY3Rpb24oYSl7dmFyIGI9bmV3IF8uSUw7cmV0dXJuIF8udGgoYiwxLGEpfTtfLklMPWNsYXNzIGV4dGVuZHMgXy5se2NvbnN0cnVjdG9yKGEpe3N1cGVyKGEpfX07Xy5vS2U9WzAsXy5pbF07Xy5rcFs1ODldPV8ub0tlOwp9Y2F0Y2goZSl7Xy5fRHVtcEV4Y2VwdGlvbihlKX0KdHJ5ewpfLktMPV8uVWIoNTg5LF8ubXAsXy5JTCk7Xy5ucFs1ODldPV8ub0tlOwp9Y2F0Y2goZSl7Xy5fRHVtcEV4Y2VwdGlvbihlKX0KdHJ5ewpfLnFCPWZ1bmN0aW9uKGEpe3JldHVybiIlLkAuIithLkZjKCkuc3Vic3RyaW5nKDEpfTtfLmtCYz1mdW5jdGlvbihhKXtyZXR1cm4gXy5YaShhLF8uRFZhKS5qb2luKCIiKX07Cn1jYXRjaChlKXtfLl9EdW1wRXhjZXB0aW9uKGUpfQp0cnl7Cl8uR0I9ZnVuY3Rpb24oYSl7dmFyIGI9YS5ib2R5LGM9YS5jbGFzcyxkPWEuWWEsZT1hLmpzbG9nLGY9YS5hdHRyaWJ1dGVzLGc9YS5qc2NvbnRyb2xsZXIsaD1hLmpzbW9kZWwsaz1hLmpzYWN0aW9uLG09YS5qc25hbWUsbj1hLnJELHA9YS5pR2Mscj1hLmhwYyx4PWEuRmUsej1hLktlLEI9YS5odmMsSD1hLmhkLEo9YS5aZixOPV8uUCgpLFE9IiIrKGQhPW51bGw/ZDoiIikrKHI/IiBVYmk4WiI6IiIpKyhwPyIgckVUU0QiOiIiKTtkPV8uakEoKTt2YXIgWjtfLk8oXy5NKE4sIjxjLXdpeiIrKF8uaXEoeD09bnVsbD92b2lkIDA6eC5Jayk/JyBqc3JlbmRlcmVyPSInK18uSyh4LklrKSsnIic6IiIpK18udXEoXy50cShfLkFxKCJjbGFzcyIsYyxRKSkpKyhlIT1udWxsPycganNsb2c9IicrXy5LKGUpKyciJzoiIikrKF8uaXEoZik/Xy51cShfLnRxKGYpKToiIikrKG4/IiI6IiBqc3NoYWRvdyIpKycganNkYXRhPSJkZWZlcnJlZC0nK18uSyhkKSsnIicrKCFCJiZfLmlxKHg9PW51bGw/dm9pZCAwOgp4LlA4Yil8fCFfLmlxKHg9PW51bGw/dm9pZCAwOnguS2UpJiYhXy5pcSh6KT8iIjonIGRhdGEtcD0iJytfLksoXy5xQigoWj14PT1udWxsP3ZvaWQgMDp4LktlKSE9bnVsbD9aOnohPW51bGw/ejpudWxsKSkrJyInKSsoZyE9bnVsbD8nIGpzY29udHJvbGxlcj0iJytfLksoZykrJyInOiIiKSsoaz8nIGpzYWN0aW9uPSInK18uSyhrKSsnIic6IiIpKyhtIT1udWxsPycganNuYW1lPSInK18uSyhtKSsnIic6IiIpKyhfLmlxKHg9PW51bGw/dm9pZCAwOnguSGFiKT8nIGRhdGEtbm9kZS1pbmRleD0iJytfLksoeC5IYWIpKyciJzoiIikrKF8uaXEoeD09bnVsbD92b2lkIDA6eC5Vayk/IiBhdXRvdXBkYXRlIjoiIikrJyBqc21vZGVsPSInK18uSygiaGM2VWJkIikrKGg/IiAiK18uSyhoKToiIikrJyInKyhfLmlxKHg9PW51bGw/dm9pZCAwOnguWUJjKT8iIHZpZXciOiIiKSsiIGMtd2l6IisoSCE9bnVsbD8iIHNzaz0nIitfLksoXy5mcSgicGRMaXBmIikrSCkrIiciOiIiKSsoSiE9bnVsbD8KXy51cShfLnRxKEopKToiIikrIj4iKSxfLmFxKGIpKTthPV8uZ3Eoe0ZlOnh9LGEpO2M9YS5GZTthPWEuanNkYXRhO2I9IiI7aWYoXy5pcShjPT1udWxsP3ZvaWQgMDpjLmpzZGF0YSkpZm9yKGM9Yy5qc2RhdGEsZT1jLmxlbmd0aCxmPTA7ZjxlO2YrKylnPWNbZl0sYis9Xy5pcShnKT8iICIrXy5BQShnKToiIjthPWIrKGE/IiAiK2E6IiIpO18uTShOLCc8Yy1kYXRhIGlkPSInK18uSyhkKSsnIicrKGE/JyBqc2RhdGE9IicrXy5LKGEpKyciJzoiIikrIj48L2MtZGF0YT48L2Mtd2l6PiIpO3JldHVybiBOfTsKfWNhdGNoKGUpe18uX0R1bXBFeGNlcHRpb24oZSl9CnRyeXsKXy52QT1mdW5jdGlvbihhKXtyZXR1cm4gXy5pcShhKX07Xy53QT1mdW5jdGlvbigpe3JldHVybigwLF8uZHEpKCdkYXRhLXZlZD0iIicrXy5MaCgiRG56MWpiIixbXSwiZGF0YS12ZWQiKSl9Owp9Y2F0Y2goZSl7Xy5fRHVtcEV4Y2VwdGlvbihlKX0KdHJ5ewpfLnUoImVwWU94Iik7CnZhciBGVmU9bmV3IF8uZXAoMTQzMTIzKSxHVmU9bmV3IF8uZXAoMTQzMTMwKSxIVmU9bmV3IF8uZXAoMTQzMTI5KSxJVmU9bmV3IF8uZXAoMTQzMTI1KSxKVmU9bmV3IF8uZXAoMTQzMTI3KSxLVmU9bmV3IF8uZXAoMTQ3NTE4KSxMVmU9bmV3IF8uZXAoMTQ3NTE0KSxNVmU9bmV3IF8uZXAoMTQ3NTEzKSxOVmU9bmV3IF8uZXAoMTcwMDA2KSxPVmU9bmV3IF8uZXAoMTQ3NTE2KSxQVmU9bmV3IF8uZXAoMTQ3NTE1KSxRVmU9bmV3IF8uZXAoMTQ3NTI0KSxSVmU9bmV3IF8uZXAoMTQ3NTE3KSxTVmU9bmV3IF8uZXAoMTQzMTI2KSxUVmU9bmV3IF8uZXAoMTQzMTI0KSxVVmU9bmV3IF8uZXAoMTQzMTI4KSxWVmU9bmV3IF8uZXAoMTQ1NzU4KSxXVmU9bmV3IF8uZXAoMTQ1NzU3KTt2YXIgWFZlPWZ1bmN0aW9uKGEsYil7dmFyIGM9YS5GZTthPWEuS2U7dmFyIGQ9Xy5QKCk7Xy5NKGQsIjx2ZWxvZyIrXy5LaChuZXcgXy5JKEZWZSxfLnhwKF8udXAobmV3IF8uenAsMSksKG5ldyBfLm1wKS5rYShfLktMLF8uSkwoLTE0MzEyMykpKSksITEpKyI+Iik7dmFyIGU9Xy5QKCk7Xy5NKGUsIjxkaXYiK18udXEoXy53QSgpKSsnIGNsYXNzPSInK18uSygiTnpTZmlmIikrJyIganNuYW1lPSInK18uSygielI0YndiIikrJyInK18uS2gobmV3IF8uSShIVmUsXy54cChuZXcgXy56cCwobmV3IF8ubXApLmthKF8uS0wsXy5KTCgtMTQzMTI5KSkpKSwhMSkrJz48ZGl2IGNsYXNzPSInK18uSygiS29XSHBkIikrJyI+Jyk7Xy5NKGUsIjxkaXYiK18udXEoXy53QSgpKSsnIGFyaWEtbGFiZWw9IicpO18uTyhlLF8ucXEoIkx1a2siKSk7Xy5NKF8uTyhfLk0oZSwnIiBjbGFzcz0iJytfLksoIkJpS05mIikrJyIganNuYW1lPSInK18uSygidHFwN3VkIikrJyIgdGFiaW5kZXg9IjAiIHJvbGU9ImJ1dHRvbiIganNhY3Rpb249IicrCl8uSygieVpHS3ZmIikrJyInK18uS2gobmV3IF8uSShHVmUsXy54cChuZXcgXy56cCwobmV3IF8ubXApLmthKF8uS0wsXy5KTCgtMTQzMTMwKSkpKSwhMSkrIj4iKSxfLkJGYyhiLDIwKSksIjwvZGl2PiIpO18uTShlLCc8aDEgY2xhc3M9IicrXy5LKCJwNHB2VGQiKSsnIj4nKTtfLk8oZSwiU1x1MDBmOGsgZXR0ZXIgZXQgYmlsZGUgbWVkIEdvb2dsZSBMZW5zIik7dmFyIGY9Xy5NKGUsJzwvaDE+PGRpdiBjbGFzcz0iJytfLksoIk5yZFFWZSIpKyciIGpzbmFtZT0iJytfLksoIldLZTNzZSIpKyciPjxpbWcgc3JjPSJodHRwczovL2xlbnMuZ29vZ2xlLmNvbS9nZW4yMDQiIHN0eWxlPSJkaXNwbGF5Om5vbmU7IiBhbHQ9IiIvPicpLGc9Xy5QKCksaD1fLk0oZywiPGRpdiIrXy51cShfLndBKCkpKycgY2xhc3M9IicrXy5LKCJhbFRCUWUiKSsnIiBqc25hbWU9IicrXy5LKCJNMFd4bGUiKSsnIiBzdHlsZT0iZGlzcGxheTpub25lOyInK18uS2gobmV3IF8uSShKVmUsXy54cChfLnVwKG5ldyBfLnpwLAoxKSwobmV3IF8ubXApLmthKF8uS0wsXy5KTCgtMTQzMTI3KSkpKSwhMSkrJz48ZGl2IGNsYXNzPSInK18uSygiT0h6V2piIikrJyI+Jyk7dmFyIGs9IjxzcGFuIitfLnVxKF8ud0EoKSkrJyBqc25hbWU9IicrXy5LKCJrZ1FsUSIpKyciIHN0eWxlPSJkaXNwbGF5Om5vbmU7IicrXy5LaChuZXcgXy5JKE1WZSxfLnhwKF8udXAobmV3IF8uenAsMSksKG5ldyBfLm1wKS5rYShfLktMLF8uSkwoLTE0NzUxMykpKSksITEpKyI+IjtrPSgwLF8uJHApKGsrIkthbiBpa2tlIGxhc3RlIG9wcC4gQnJ1ayBldCBiaWxkZSBpIGV0IGF2IGZcdTAwZjhsZ2VuZGUgZm9ybWF0ZXI6IC5qcGcsIC5wbmcsIC5ibXAsIC50aWYgZWxsZXIgLndlYnA8L3NwYW4+Iik7aD1fLk8oaCxrKTtrPSI8c3BhbiIrXy51cShfLndBKCkpKycganNuYW1lPSInK18uSygidVFENDhlIikrJyIgc3R5bGU9ImRpc3BsYXk6bm9uZTsiJytfLktoKG5ldyBfLkkoTlZlLF8ueHAoXy51cChuZXcgXy56cCwxKSwobmV3IF8ubXApLmthKF8uS0wsCl8uSkwoLTE3MDAwNikpKSksITEpKyI+IjtrPSgwLF8uJHApKGsrIkthbiBpa2tlIGxhc3RlIG9wcC4gQnJ1ayBldCBiaWxkZSBpIGV0IGF2IGZcdTAwZjhsZ2VuZGUgZm9ybWF0ZXI6IC5qcGcsIC5wbmcsIC5ibXAgZWxsZXIgLndlYnA8L3NwYW4+Iik7aD1fLk8oaCxrKTtrPSI8c3BhbiIrXy51cShfLndBKCkpKycganNuYW1lPSInK18uSygiYnk0MnYiKSsnIiBzdHlsZT0iZGlzcGxheTpub25lOyInK18uS2gobmV3IF8uSShMVmUsXy54cChfLnVwKG5ldyBfLnpwLDEpLChuZXcgXy5tcCkua2EoXy5LTCxfLkpMKC0xNDc1MTQpKSkpLCExKSsiPiI7az0oMCxfLiRwKShrKyJLYW4gaWtrZSBsYXN0ZSBvcHAuIEJydWsgZXQgYmlsZGUgc29tIGVyIG1pbmRyZSBlbm4gMjBcdTAwYTBNQi48L3NwYW4+Iik7aD1fLk8oaCxrKTtrPSI8c3BhbiIrXy51cShfLndBKCkpKycganNuYW1lPSInK18uSygib0d1UFRkIikrJyIgc3R5bGU9ImRpc3BsYXk6bm9uZTsiJytfLktoKG5ldyBfLkkoUFZlLApfLnhwKF8udXAobmV3IF8uenAsMSksKG5ldyBfLm1wKS5rYShfLktMLF8uSkwoLTE0NzUxNSkpKSksITEpKyI+IjtrPSgwLF8uJHApKGsrIkthbiBpa2tlIHNcdTAwZjhrZSBldHRlciBmbGVyZSBiaWxkZXIuIExlZ2cgdGlsIGV0dCBiaWxkZSBvbSBnYW5nZW4uPC9zcGFuPiIpO2g9Xy5PKGgsayk7az0iPHNwYW4iK18udXEoXy53QSgpKSsnIGpzbmFtZT0iJytfLksoIng5Z3ROIikrJyIgc3R5bGU9ImRpc3BsYXk6bm9uZTsiJytfLktoKG5ldyBfLkkoT1ZlLF8ueHAoXy51cChuZXcgXy56cCwxKSwobmV3IF8ubXApLmthKF8uS0wsXy5KTCgtMTQ3NTE2KSkpKSwhMSkrIj4iO2s9KDAsXy4kcCkoaysiS2FuIGlra2UgYnJ1a2UgZGVubmUgbGlua2VuLiBTamVrayBhdCBkZW4gZXIgc2tyZXZldCByaWt0aWcsIGVsbGVyIGJydWsgZW4gYW5uZW4gbGluayBmb3IgXHUwMGU1IHByXHUwMGY4dmUgaWdqZW4uPC9zcGFuPiIpO2g9Xy5PKGgsayk7az0iPHNwYW4iK18udXEoXy53QSgpKSsnIGpzbmFtZT0iJysKXy5LKCJsYWdUdmUiKSsnIiBzdHlsZT0iZGlzcGxheTpub25lOyInK18uS2gobmV3IF8uSShSVmUsXy54cChfLnVwKG5ldyBfLnpwLDEpLChuZXcgXy5tcCkua2EoXy5LTCxfLkpMKC0xNDc1MTcpKSkpLCExKSsiPiI7az0oMCxfLiRwKShrKyJLYW4gaWtrZSBicnVrZSBkZW5uZSBsaW5rZW4uIFNqZWtrIGF0IGxpbmtlbiBzdGFydGVyIHBcdTAwZTUgXHUwMGFiaHR0cDovL1x1MDBiYiBlbGxlciBcdTAwYWJodHRwczovL1x1MDBiYiBmb3IgXHUwMGU1IHByXHUwMGY4dmUgaWdqZW4uPC9zcGFuPiIpO2g9Xy5PKGgsayk7az0iPHNwYW4iK18udXEoXy53QSgpKSsnIGpzbmFtZT0iJytfLksoIno2aGpoZiIpKyciIHN0eWxlPSJkaXNwbGF5Om5vbmU7IicrXy5LaChuZXcgXy5JKEtWZSxfLnhwKF8udXAobmV3IF8uenAsMSksKG5ldyBfLm1wKS5rYShfLktMLF8uSkwoLTE0NzUxOCkpKSksITEpKyI+IjtrPSgwLF8uJHApKGsrIkthbiBpa2tlIGJydWtlIGRlbm5lIGxpbmtlbi4gU2pla2sgYXQgZGVuIGVyIHNrcmV2ZXQgcmlrdGlnLCBlbGxlciBicnVrIGVuIGFubmVuIGxpbmsgZm9yIFx1MDBlNSBwclx1MDBmOHZlIGlnamVuLjwvc3Bhbj4iKTsKaD1fLk8oaCxrKTtrPSI8c3BhbiIrXy51cShfLndBKCkpKycganNuYW1lPSInK18uSygiSVBERGFlIikrJyIgc3R5bGU9ImRpc3BsYXk6bm9uZTsiJytfLktoKG5ldyBfLkkoUVZlLF8ueHAoXy51cChuZXcgXy56cCwxKSwobmV3IF8ubXApLmthKF8uS0wsXy5KTCgtMTQ3NTI0KSkpKSwhMSkrIj4iO2s9KDAsXy4kcCkoaysiS2FuIGlra2Ugc1x1MDBmOGtlIGV0dGVyIGZsZXJlIGJpbGRlci4gTGVnZyB0aWwgZXR0IGJpbGRlIG9tIGdhbmdlbi48L3NwYW4+Iik7Xy5NKF8uTyhoLGspLCI8L2Rpdj48L2Rpdj4iKTtmPV8uTyhmLGcpO2c9Xy5QKCk7aD1fLk0oZywiPGRpdiIrXy51cShfLndBKCkpKycgY2xhc3M9IicrXy5LKCJmNkdBMCIpKyciIGpzbmFtZT0iJytfLksoIlFkRVFJYyIpKyciJytfLktoKG5ldyBfLkkoVFZlLF8ueHAobmV3IF8uenAsKG5ldyBfLm1wKS5rYShfLktMLF8uSkwoLTE0MzEyNCkpKSksITEpKyc+PGRpdiBjbGFzcz0iJytfLksoIkJIOXJuIikrJyI+PGRpdiBjbGFzcz0iJysKXy5LKCJSYW9VVWUiKSsnIj4nKTtrPSgwLF8uJHApKCc8c3ZnIHdpZHRoPSI1OSIgaGVpZ2h0PSI0NSIgdmlld0JveD0iMCAwIDU5IDQ1IiBmaWxsPSJub25lIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjxwYXRoIGQ9Ik00MC4zMzMyIDEzLjc0N0wxLjU4MzIzIDEzLjc0N0wxLjU4MzIzIDQzLjQ1NTNMNDAuMzMzMiA0My40NTUzTDQwLjMzMzIgMTMuNzQ3WiIgY2xhc3M9IicrXy5LKCJBcklBWGIiKSsnIi8+PHBhdGggZD0iTTQwLjMzMzIgMTMuNzQ3TDE3LjA4MzIgMTMuNzQ3TDE3LjA4MzIgMzMuMTIyTDQwLjMzMzIgMzMuMTIyTDQwLjMzMzIgMTMuNzQ3WiIgY2xhc3M9IicrXy5LKCJxT0ZMc2IiKSsnIi8+PHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0wLjYxNDQ3OSAxMi43NzgzTDYuNzQ5ODggMTIuNzc4M0w2Ljc0OTg4IDE0LjcxNThMMi41NTE5OCAxNC43MTU4TDIuNTUxOTggMTguOTEzN0wwLjYxNDQ3OSAxOC45MTM3TDAuNjE0NDc5IDEyLjc3ODNaIiBmaWxsPSIjQkRDMUM2Ii8+PHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0zOS4zNjQ0IDQyLjQ4NjZMMzkuMzY0NCAzOC4yODg3TDQxLjMwMTkgMzguMjg4N0w0MS4zMDE5IDQ0LjQyNDFMMzUuMTY2NSA0NC40MjQxTDM1LjE2NjUgNDIuNDg2NkwzOS4zNjQ0IDQyLjQ4NjZaIiBmaWxsPSIjQkRDMUM2Ii8+PHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0wLjYxNDQ3OSAzOC4yODg3TDIuNTUxOTggMzguMjg4N0wyLjU1MTk4IDQyLjQ4NjZMNi43NDk4NyA0Mi40ODY2TDYuNzQ5ODcgNDQuNDI0MUwwLjYxNDQ3OSA0NC40MjQxTDAuNjE0NDc5IDM4LjI4ODdaIiBmaWxsPSIjQkRDMUM2Ii8+PHBhdGggZD0iTTE5LjY2NjUgMzAuMjUzMUg1OC40MTY1TDU4LjQxNjUgMC41NDQ3MjJIMTkuNjY2NUwxOS42NjY1IDMwLjI1MzFaIiBmaWxsPSIjQUVDQkZBIi8+PHBhdGggZD0iTTE5LjY2NjUgMjEuODQyOUwxOS42NjY1IDMwLjI1MjVMNTguNDE2OCAzMC4yNTI1TDU4LjQxNjggMTkuNzQwNkw0OS42NjY3IDEyLjQwNjlDNDguNjIzNCAxMS41MzQyIDQ3LjI5MzEgMTEuMDY5OSA0NS45MjcyIDExLjEwMThDNDQuNTYxNCAxMS4xMzM3IDQzLjI1NDcgMTEuNjU5NiA0Mi4yNTQyIDEyLjU4MDFMMzMuNDE2NiAyMC43OTE4TDI4LjQxNjYgMTcuMjU0OEMyNy43MzMyIDE2Ljc3ODEgMjYuOTAxMyAxNi41NTYzIDI2LjA2ODQgMTYuNjI4OEMyNS4yMzU0IDE2LjcwMTIgMjQuNDU1NCAxNy4wNjMyIDIzLjg2NjYgMTcuNjUwNUwxOS42NjY1IDIxLjg0MjlaIiBmaWxsPSIjNjY5REY2Ii8+PHBhdGggZD0iTTMwLjAwNTYgMTIuOTM4NkMzMS43MzE1IDEyLjkzODYgMzMuMTMwNiAxMS41Mzk1IDMzLjEzMDYgOS44MTM2QzMzLjEzMDYgOC4wODc3MyAzMS43MzE1IDYuNjg4NjMgMzAuMDA1NiA2LjY4ODYzQzI4LjI3OTggNi42ODg2MyAyNi44ODA3IDguMDg3NzMgMjYuODgwNyA5LjgxMzZDMjYuODgwNyAxMS41Mzk1IDI4LjI3OTggMTIuOTM4NiAzMC4wMDU2IDEyLjkzODZaIiBmaWxsPSIjRThGMEZFIi8+PC9zdmc+Jyk7Cl8uTShfLk8oaCxrKSwnPC9kaXY+PGRpdiBjbGFzcz0iJytfLksoIlplVkJ0YyIpKyciPicpO2g9IkRyYSBldCBiaWxkZSBoaXQsIGVsbGVyIDxzcGFuIisoXy51cShfLndBKCkpKycgdGFiaW5kZXg9IjAiIHJvbGU9ImJ1dHRvbiIganNuYW1lPSInK18uSygidEFQR2MiKSsnIiBjbGFzcz0iJytfLksoIkRWN3RoZSIpKyciIGpzYWN0aW9uPSInK18uSygiRDBIRTciKSsnIicrXy5LaChuZXcgXy5JKFVWZSxfLnhwKG5ldyBfLnpwLChuZXcgXy5tcCkua2EoXy5LTCxfLkpMKC0xNDMxMjgpKSkpLCExKSsiPmxhc3Qgb3BwIGVuIGZpbDwvc3Bhbj4iKTtfLk8oZyxoKTtoPV8uTShnLCI8L2Rpdj48L2Rpdj4iKTtrPSc8ZGl2IGNsYXNzPSInK18uSygiZThFdWxlIikrJyIganNuYW1lPSInK18uSygiQXd1Y2RiIikrJyIganNhY3Rpb249IicrXy5LKCJyY3VRNmIiKSsiOiIrXy5LKCJucFQybWQiKSsiOyIrXy5LKCJBTXJ1Q2UiKSsiOiIrXy5LKCJacHVnN2MiKSsnOyIganNjb250cm9sbGVyPSInKwpfLksoIlFycHNNYyIpKyciPjxkaXYgY2xhc3M9IicrXy5LKCJZSngyNSIpKyciPjxkaXYgY2xhc3M9IicrXy5LKCJkaU9sSWUiKSsnIj48L2Rpdj48ZGl2IGNsYXNzPSInK18uSygiYUhLMWJkIikrJyI+JytfLmFxKCJFTExFUiIpKyc8L2Rpdj48ZGl2IGNsYXNzPSInK18uSygiZGlPbEllIikrJyI+PC9kaXY+PC9kaXY+PGRpdiBjbGFzcz0iJytfLksoIlBYVDZjZCIpKyciPic7ays9IjxpbnB1dCIrXy51cShfLndBKCkpKycgY2xhc3M9IicrXy5LKCJjQjlNNyIpKyciIGpzbmFtZT0iJytfLksoIlc3aEFHZSIpKyciIGpzYWN0aW9uPSJjaGFuZ2U6JytfLksoIlZUd01JIikrIjsgY2xpY2s6IitfLksoImg1TTEyZSIpKyI7IGJlZm9yZWlucHV0OiIrXy5LKCJuaEczMGMiKSsiOyBpbnB1dDoiK18uSygiZTRKd1NlIikrJzsiIHBsYWNlaG9sZGVyPSInK18uSygiTGltIGlubiBiaWxkZWxpbmsiKSsnIiBhcmlhLWxhYmVsPSInK18uSygiTGltIGlubiBiaWxkZWxpbmsiKSsnIiBhdXRvY29tcGxldGU9ImZhbHNlIiBhdXRvY29ycmVjdD0iZmFsc2UiIHRleHQ9InRleHQiJysKXy5LaChuZXcgXy5JKFZWZSxfLnhwKG5ldyBfLnpwLChuZXcgXy5tcCkua2EoXy5LTCxfLkpMKC0xNDU3NTgpKSkpLCExKSsiLz4iO2srPSI8ZGl2IitfLnVxKF8ud0EoKSkrJyBjbGFzcz0iJytfLksoIlF3YmQzIikrJyIganNuYW1lPSInK18uSygiWnRPeENiIikrJyIganNhY3Rpb249ImNsaWNrOicrXy5LKCJIaVViamUiKSsnIiBkaXNhYmxlZD0idHJ1ZSIgYXJpYS1kaXNhYmxlZD0idHJ1ZSIgdGFiSW5kZXg9Ii0xIiByb2xlPSJidXR0b24iJytfLktoKG5ldyBfLkkoV1ZlLF8ueHAobmV3IF8uenAsKG5ldyBfLm1wKS5rYShfLktMLF8uSkwoLTE0NTc1NykpKSksITEpKyI+IitfLmFxKCJTXHUwMGY4ayIpKyI8L2Rpdj4iO2s9KDAsXy4kcCkoaysiPC9kaXY+PC9kaXY+Iik7Xy5NKF8uTyhoLGspLCI8L2Rpdj4iKTtmPV8uTyhmLGcpO2c9IjxkaXYiK18udXEoXy53QSgpKSsnIGNsYXNzPSInK18uSygiQ2FjZkIiKSsnIiBqc25hbWU9IicrXy5LKCJaaVVSaWMiKSsnIiBzdHlsZT0iZGlzcGxheTpub25lOyInKwpfLktoKG5ldyBfLkkoSVZlLF8ueHAoXy51cChuZXcgXy56cCwxKSwobmV3IF8ubXApLmthKF8uS0wsXy5KTCgtMTQzMTI1KSkpKSwhMSkrJz48ZGl2IGNsYXNzPSInK18uSygiWmVWQnRjIikrJyI+JztnPV8ueG1lP2crIlNsaXBwIGV0IGJpbGRlIGh2b3Igc29tIGhlbHN0IjpnKyJTbGlwcCBldCBiaWxkZSBoZXIiO2c9KDAsXy4kcCkoZysiPC9kaXY+PC9kaXY+Iik7Zj1fLk8oZixnKTtnPV8uUCgpO18uTShfLk8oXy5NKGcsIjxkaXYiK18udXEoXy53QSgpKSsnIGNsYXNzPSInK18uSygiVWE3WXVmIikrJyIganNuYW1lPSInK18uSygiSHViQWhiIikrJyIgc3R5bGU9ImRpc3BsYXk6bm9uZTsiJytfLktoKG5ldyBfLkkoU1ZlLF8ueHAoXy51cChuZXcgXy56cCwxKSwobmV3IF8ubXApLmthKF8uS0wsXy5KTCgtMTQzMTI2KSkpKSwhMSkrIj4iKSxfLkJWZShiLCEwKSksJzxkaXYgY2xhc3M9IicrXy5LKCJ3SEg4YWYiKSsnIj4nKTtfLk8oZywiTGFzdGVyIG9wcCBcdTIwMjYiKTtfLk0oZywKIjwvZGl2PjwvZGl2PiIpO18uTShfLk8oZixnKSwiPC9kaXY+PC9kaXY+PC9kaXY+Iik7Xy5PKGQsXy5HQih7S2U6YSxGZTpjLGpzbmFtZToiTmN0ZFhjIixqc2FjdGlvbjoicmN1UTZiOm5wVDJtZDtSRVk5TDpHVVh6TmQ7bnBrWERlOk52OTQ1ZTsiLGpzY29udHJvbGxlcjoiWmFLRW9kIixyRDohMCxib2R5OmUsY2xhc3M6Xy5LKCJBeWUxayIpLFpmOigwLF8uZHEpKF8ud0EoKSsnIHN0eWxlPSJkaXNwbGF5Om5vbmU7IicpfSkpO18uTShkLCI8L3ZlbG9nPiIpO3JldHVybiBkfTtfLllyKF8uRFZlLGNsYXNzIGV4dGVuZHMgXy5acntjb25zdHJ1Y3RvcihhKXtzdXBlcihhLkdiKX1rYSgpe3JldHVybiJlcFlPeCJ9WGooKXtyZXR1cm4gWFZlfX0pO18uVHIuZXBZT3g9Xy5FVmU7CgpfLnYoKTsKfWNhdGNoKGUpe18uX0R1bXBFeGNlcHRpb24oZSl9Cn0pKHRoaXMuX2hkKTsKLy8gR29vZ2xlIEluYy4K"}},"time_used":10,"timings":{"blocked":0,"dns":0,"connect":0,"send":0,"wait":10,"receive":0,"ssl":0},"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"www.google.com/gen_204?atyp=i\u0026ct=psnt\u0026cad=\u0026nt=navigate\u0026ei=Y3pnarTELeimwPAPo6StkA4\u0026zx=1785166437149\u0026opi=89978449","fqdn":"www.google.com","domain":"google.com","tld":"com"},"ip":{"addr":"142.251.157.119","port":443,"asn":15169,"as":"GOOGLE","country":"United States","country_code":"US"},"is_navigation_request":false,"resource_type":"beacon","requested_by":"https://www.google.com/","date":"2026-07-27T15:33:57.156Z","timestamp":1785166437156,"http_version":"HTTP/3","security_state":"secure","security_info":{"cipher_suite":"TLS_AES_128_GCM_SHA256","key_group_name":"mlkem768x25519","signature_name":"ECDSA-P256-SHA256","protocol":"TLSv1.3","cert":{"subject":{"commonName":"*.google.com","organization":""},"issuer":{"commonName":"WR2","organization":"Google Trust Services"},"validity":{"start":"Mon, 29 Jun 2026 08:37:25 GMT","end":"Mon, 21 Sep 2026 08:37:24 GMT"},"fingerprint":{"sha1":"D9:DA:81:30:78:3E:9C:6B:5F:9D:18:52:0E:BE:6D:52:2F:FB:33:E0","sha256":"EA:E2:2D:87:EC:9C:D6:51:9D:59:E4:13:35:3B:97:14:E3:DA:58:2D:1C:69:19:41:54:94:25:C3:94:17:F3:0C"}}},"request":{"raw":"POST /gen_204?atyp=i\u0026ct=psnt\u0026cad=\u0026nt=navigate\u0026ei=Y3pnarTELeimwPAPo6StkA4\u0026zx=1785166437149\u0026opi=89978449 HTTP/1.1\r\nHost: www.google.com\r\nUser-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:134.0) Gecko/20100101 Firefox/134.0\r\nAccept: */*\r\nAccept-Language: en-US,en;q=0.9\r\nAccept-Encoding: gzip, deflate, br, zstd\r\nReferer: https://www.google.com/\r\nContent-Type: text/plain;charset=UTF-8\r\nContent-Length: 0\r\nOrigin: https://www.google.com\r\nSec-GPC: 1\r\nConnection: keep-alive\r\nCookie: AEC=AdJVEauUsWHpfGAsUyeilL8EI9I2Tr9FfEzOqXuEJToXYpKe1KUK4km-Sg; __Secure-ENID=35.SE=Uz4O9fexpqtcg27rsCzqB3loBSC8a70Mqp_d18c3cjeU9uMWe4FHcPW1svFlK9taJqOPsqN9ZTMvrbcif3fGSVkGFj_PZtB1iqcUHQQ3k4McoRQh3TFmXwFvuBZDiuJbZsEWkIiLh9oQZqCS02Kcsd8T8KoXlZsObsNcGy15dXCeCexC1uy7XgZprqFrMQQA8uTOFbrZoEzmrPkKmCFOh5B5Jnu68ljyS8KtzuKzT_-dPSCoq1OOlqfaBgM\r\nSec-Fetch-Dest: empty\r\nSec-Fetch-Mode: no-cors\r\nSec-Fetch-Site: same-origin\r\nPriority: u=6\r\n\r\n","headers":null,"cookies":null,"method":"POST"},"response":{"raw":"HTTP/3 204 \r\ncontent-type: text/html; charset=UTF-8\r\ncontent-security-policy: object-src 'none';base-uri 'self';script-src 'nonce-uhyqAinlJ54wUO641szAPQ' 'strict-dynamic' 'report-sample' 'unsafe-eval' 'unsafe-inline' https: http:;report-uri https://csp.withgoogle.com/csp/gws/other\r\ncross-origin-opener-policy: same-origin-allow-popups; report-to=\"gws\"\r\nreport-to: {\"group\":\"gws\",\"max_age\":2592000,\"endpoints\":[{\"url\":\"https://csp.withgoogle.com/csp/report-to/gws/other\"}]}\r\ndate: Mon, 27 Jul 2026 15:33:57 GMT\r\nserver: gws\r\ncontent-length: 0\r\nx-xss-protection: 0\r\nx-frame-options: SAMEORIGIN\r\nalt-svc: h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000\r\n\r\n","headers":null,"cookies":null,"status_code":"204","status_text":"","fingerprints":[{"name":"Google Web Server","description":"","website":"https://en.wikipedia.org/wiki/Google_Web_Server","common_platform_enumeration":"cpe:2.3:a:google:web_server:*:*:*:*:*:*:*:*","icon":"Google.svg","categories":["Web servers"]}],"data":{"size":0,"size_decoded":653,"mime_type":"text/html; charset=UTF-8","magic":"","md5":"d41d8cd98f00b204e9800998ecf8427e","sha1":"da39a3ee5e6b4b0d3255bfef95601890afd80709","sha256":"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855","sha512":"cf83e1357eefb8bdf1542850d66d8007d620e4050b5715dc83f4a921d36ce9ce47d0d13c5d85f2b0ff8318d2877eec2f63b931bd47417a81a538327af927da3e","ssdeep":"","tlshash":"","first_seen":"0001-01-01T00:00:00Z","last_seen":"2026-08-16T23:46:43.370624Z","times_seen":17926730,"resource_available":true,"data":""}},"time_used":21,"timings":{"blocked":0,"dns":0,"connect":0,"send":0,"wait":21,"receive":0,"ssl":0},"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"play.google.com/log?format=json\u0026hasfast=true","fqdn":"play.google.com","domain":"google.com","tld":"com"},"ip":{"addr":"142.250.178.78","port":443,"asn":15169,"as":"GOOGLE","country":"United States","country_code":"US"},"is_navigation_request":false,"resource_type":"xhr","requested_by":"https://www.google.com/","date":"2026-07-27T15:33:57.505Z","timestamp":1785166437505,"http_version":"HTTP/2","security_state":"secure","security_info":{"cipher_suite":"TLS_AES_128_GCM_SHA256","key_group_name":"mlkem768x25519","signature_name":"ECDSA-P256-SHA256","protocol":"TLSv1.3","cert":{"subject":{"commonName":"*.google.com","organization":""},"issuer":{"commonName":"WE2","organization":"Google Trust Services"},"validity":{"start":"Mon, 29 Jun 2026 08:37:35 GMT","end":"Mon, 21 Sep 2026 08:37:34 GMT"},"fingerprint":{"sha1":"2F:20:3B:91:88:65:20:CD:06:9D:0C:58:4D:17:6F:FC:9D:EC:41:83","sha256":"0C:7B:D3:23:E9:5B:D6:6B:F2:5C:71:91:4D:41:CE:E6:D7:1F:A2:F2:63:BA:25:70:1D:00:F3:C0:72:21:51:6D"}}},"request":{"raw":"OPTIONS /log?format=json\u0026hasfast=true HTTP/1.1\r\nHost: play.google.com\r\nUser-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:134.0) Gecko/20100101 Firefox/134.0\r\nAccept: */*\r\nAccept-Language: en-US,en;q=0.9\r\nAccept-Encoding: gzip, deflate, br, zstd\r\nAccess-Control-Request-Method: POST\r\nAccess-Control-Request-Headers: content-encoding,content-type\r\nReferer: https://www.google.com/\r\nOrigin: https://www.google.com\r\nSec-GPC: 1\r\nConnection: keep-alive\r\nSec-Fetch-Dest: empty\r\nSec-Fetch-Mode: cors\r\nSec-Fetch-Site: same-site\r\nPriority: u=4\r\nPragma: no-cache\r\nCache-Control: no-cache\r\n\r\n","headers":null,"cookies":null,"method":"OPTIONS"},"response":{"raw":"HTTP/2 200 \r\naccess-control-allow-origin: https://www.google.com\r\naccess-control-allow-methods: GET, POST, OPTIONS\r\naccess-control-max-age: 86400\r\naccess-control-allow-credentials: true\r\naccess-control-allow-headers: X-Playlog-Web,authorization,content-encoding,content-type,origin\r\ncontent-type: text/plain; charset=UTF-8\r\ndate: Mon, 27 Jul 2026 15:33:57 GMT\r\nserver: Playlog\r\ncontent-length: 0\r\nx-xss-protection: 0\r\nx-frame-options: SAMEORIGIN\r\nalt-svc: h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000\r\nX-Firefox-Spdy: h2\r\n\r\n","headers":null,"cookies":null,"status_code":"200","status_text":"","fingerprints":null,"data":{"size":0,"size_decoded":526,"mime_type":"text/plain; charset=UTF-8","magic":"","md5":"d41d8cd98f00b204e9800998ecf8427e","sha1":"da39a3ee5e6b4b0d3255bfef95601890afd80709","sha256":"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855","sha512":"cf83e1357eefb8bdf1542850d66d8007d620e4050b5715dc83f4a921d36ce9ce47d0d13c5d85f2b0ff8318d2877eec2f63b931bd47417a81a538327af927da3e","ssdeep":"","tlshash":"","first_seen":"0001-01-01T00:00:00Z","last_seen":"2026-08-16T23:46:43.370624Z","times_seen":17926730,"resource_available":true,"data":""}},"time_used":74,"timings":{"blocked":0,"dns":1,"connect":15,"send":0,"wait":30,"receive":0,"ssl":28},"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"www.google.com/async/hpba?yv=3\u0026cs=0\u0026ei=Y3pnarTELeimwPAPo6StkA4\u0026async=_basejs:/xjs/_/js/k%3Dxjs.hd.no.ZJX-0yQnO-M.2019.O/am%3DAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgQAAAAABBAAAAAAAAAAAAAAAYAAgAAAAAAAAAAAAAAAAAAIAAAQAAIAAAAAAAAAAAEAAAAAAABAAACAAAYAAAAQABBAAAAAMAAAAAAAAAAAAAAAAAAAAAgBAAAABCAADwBwZYAQAAAAAAAAASADAAAAAAAAAAFgAAIAEAAAAEQAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAABgAAAAAAKAAAAABAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAgAAACgAACAAAAgAAAAAAAAAAAAAAAACgAwAAAAAAAAAAAAAAAAAAAAAAAAAACAAAQIAAAAAAAAAAAAQACAAAAEAHQOABhhQUAAAAAAAAAAAAAAAAAAAAAAAAAAACLIBdSAEBEAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAyAkAAAAAAICF/dg%3D0/br%3D1/rs%3DACT90oG_sTN876pKLsn8EAIC7HPAt8yW8Q?cb%3D121509378,_basecss:/xjs/_/ss/k%3Dxjs.hd.h9GHjaAphl0.L.F4.O/am%3DAAAEQAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAABAAAAIECAAAZAAAAAAAgAACAAAAAAAIAAAAAABAeAAAAMAAAAAAAAAAAAAAAAAAAQAAAIAAAAAAAAAAAEAAAAAAAAAIAiAAAAAAAAQABFAAAQAAAAAAAAAAACAAAAAAAAAAACBAAAAAAAAAAAABAAgAAAAAAAAAAYTAQAAAAABAGAAAAAAAAAAAAAAAAAAAAAABAJEACACAAAAAAAAgAAAAAAAQBhBAEAAEKIAAAAAAAAAKABQAAAACgAxAEAQAAAAAAAAAACAAEgRBAAAAAgAAAABAACAAIAAAAAGAEBQBAogYCAECgAwAAACADAAAAAAQAAAAAAAAAAAAAiAAAAAAAAACQAAADBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAE/br%3D1/rs%3DACT90oGbAV3hgWIqz8I-ppdbYy_xG58I7g?cb%3D121509378,_basecomb:/xjs/_/js/k%3Dxjs.hd.no.ZJX-0yQnO-M.2019.O/ck%3Dxjs.hd.h9GHjaAphl0.L.F4.O/am%3DAAAEQAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAABAAAAIECAAAZAAAgQAAgAADBAAAAAAIAAAAAABAeAAgAMAAAAAAAAAAAAAAAAIAAQQAAIAAAAAAAAAAAEAAAAAAABAIAiAAAYAAAAQABFAAAQAMAAAAAAAAACAAAAAAAAAAAiBAAAABCAADwBwZYAwAAAAAAAAASYTAQAAAAABAGFgAAIAEAAAAEQAAAAAAAAABAJEACACAAABAAAAgAAAAAAAQBhBAEAAEKIAAAABAAAAKABQAAAACgAxAEAQAAAABAAAAACAAEgRBAAAAAgAAAChAACAAIAgAAAGAEBQBAogYCAECgAwAAACADAAAAAAQAAAAAAAAAAAAAiAAAQIAAAACQAAADBAQACAAAAEAHQOABhhQUAAAAAAAAAAAAAAAAAAAAAAAAAAACLIBdSAEBEAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAyAkAAAAAAICF/d%3D1/ed%3D1/dg%3D0/br%3D1/ujg%3D1/rs%3DACT90oHlSnCzx5mAdYXy8e1Zh-GxJ0al8Q?cb%3D121509378,_fmt:prog,_id:_Y3pnarTELeimwPAPo6StkA4_10\u0026sp_imghp=false\u0026sp_hpep=2\u0026sp_hpte=0\u0026vet=10ahUKEwj0gZKal_OVAxVoExAIHSNSC-IQj-0KCCY..i","fqdn":"www.google.com","domain":"google.com","tld":"com"},"ip":{"addr":"142.251.157.119","port":443,"asn":15169,"as":"GOOGLE","country":"United States","country_code":"US"},"is_navigation_request":false,"resource_type":"xhr","requested_by":"https://www.google.com/","date":"2026-07-27T15:33:56.365Z","timestamp":1785166436365,"http_version":"HTTP/3","security_state":"secure","security_info":{"cipher_suite":"TLS_AES_128_GCM_SHA256","key_group_name":"mlkem768x25519","signature_name":"ECDSA-P256-SHA256","protocol":"TLSv1.3","cert":{"subject":{"commonName":"*.google.com","organization":""},"issuer":{"commonName":"WR2","organization":"Google Trust Services"},"validity":{"start":"Mon, 29 Jun 2026 08:37:25 GMT","end":"Mon, 21 Sep 2026 08:37:24 GMT"},"fingerprint":{"sha1":"D9:DA:81:30:78:3E:9C:6B:5F:9D:18:52:0E:BE:6D:52:2F:FB:33:E0","sha256":"EA:E2:2D:87:EC:9C:D6:51:9D:59:E4:13:35:3B:97:14:E3:DA:58:2D:1C:69:19:41:54:94:25:C3:94:17:F3:0C"}}},"request":{"raw":"GET /async/hpba?yv=3\u0026cs=0\u0026ei=Y3pnarTELeimwPAPo6StkA4\u0026async=_basejs:/xjs/_/js/k%3Dxjs.hd.no.ZJX-0yQnO-M.2019.O/am%3DAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgQAAAAABBAAAAAAAAAAAAAAAYAAgAAAAAAAAAAAAAAAAAAIAAAQAAIAAAAAAAAAAAEAAAAAAABAAACAAAYAAAAQABBAAAAAMAAAAAAAAAAAAAAAAAAAAAgBAAAABCAADwBwZYAQAAAAAAAAASADAAAAAAAAAAFgAAIAEAAAAEQAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAABgAAAAAAKAAAAABAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAgAAACgAACAAAAgAAAAAAAAAAAAAAAACgAwAAAAAAAAAAAAAAAAAAAAAAAAAACAAAQIAAAAAAAAAAAAQACAAAAEAHQOABhhQUAAAAAAAAAAAAAAAAAAAAAAAAAAACLIBdSAEBEAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAyAkAAAAAAICF/dg%3D0/br%3D1/rs%3DACT90oG_sTN876pKLsn8EAIC7HPAt8yW8Q?cb%3D121509378,_basecss:/xjs/_/ss/k%3Dxjs.hd.h9GHjaAphl0.L.F4.O/am%3DAAAEQAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAABAAAAIECAAAZAAAAAAAgAACAAAAAAAIAAAAAABAeAAAAMAAAAAAAAAAAAAAAAAAAQAAAIAAAAAAAAAAAEAAAAAAAAAIAiAAAAAAAAQABFAAAQAAAAAAAAAAACAAAAAAAAAAACBAAAAAAAAAAAABAAgAAAAAAAAAAYTAQAAAAABAGAAAAAAAAAAAAAAAAAAAAAABAJEACACAAAAAAAAgAAAAAAAQBhBAEAAEKIAAAAAAAAAKABQAAAACgAxAEAQAAAAAAAAAACAAEgRBAAAAAgAAAABAACAAIAAAAAGAEBQBAogYCAECgAwAAACADAAAAAAQAAAAAAAAAAAAAiAAAAAAAAACQAAADBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAE/br%3D1/rs%3DACT90oGbAV3hgWIqz8I-ppdbYy_xG58I7g?cb%3D121509378,_basecomb:/xjs/_/js/k%3Dxjs.hd.no.ZJX-0yQnO-M.2019.O/ck%3Dxjs.hd.h9GHjaAphl0.L.F4.O/am%3DAAAEQAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAABAAAAIECAAAZAAAgQAAgAADBAAAAAAIAAAAAABAeAAgAMAAAAAAAAAAAAAAAAIAAQQAAIAAAAAAAAAAAEAAAAAAABAIAiAAAYAAAAQABFAAAQAMAAAAAAAAACAAAAAAAAAAAiBAAAABCAADwBwZYAwAAAAAAAAASYTAQAAAAABAGFgAAIAEAAAAEQAAAAAAAAABAJEACACAAABAAAAgAAAAAAAQBhBAEAAEKIAAAABAAAAKABQAAAACgAxAEAQAAAABAAAAACAAEgRBAAAAAgAAAChAACAAIAgAAAGAEBQBAogYCAECgAwAAACADAAAAAAQAAAAAAAAAAAAAiAAAQIAAAACQAAADBAQACAAAAEAHQOABhhQUAAAAAAAAAAAAAAAAAAAAAAAAAAACLIBdSAEBEAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAyAkAAAAAAICF/d%3D1/ed%3D1/dg%3D0/br%3D1/ujg%3D1/rs%3DACT90oHlSnCzx5mAdYXy8e1Zh-GxJ0al8Q?cb%3D121509378,_fmt:prog,_id:_Y3pnarTELeimwPAPo6StkA4_10\u0026sp_imghp=false\u0026sp_hpep=2\u0026sp_hpte=0\u0026vet=10ahUKEwj0gZKal_OVAxVoExAIHSNSC-IQj-0KCCY..i HTTP/1.1\r\nHost: www.google.com\r\nUser-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:134.0) Gecko/20100101 Firefox/134.0\r\nAccept: */*\r\nAccept-Language: en-US,en;q=0.9\r\nAccept-Encoding: gzip, deflate, br, zstd\r\nReferer: https://www.google.com/\r\nSec-GPC: 1\r\nConnection: keep-alive\r\nCookie: AEC=AdJVEauUsWHpfGAsUyeilL8EI9I2Tr9FfEzOqXuEJToXYpKe1KUK4km-Sg; __Secure-ENID=35.SE=AbigeV3aJ0m6xMobN92AbNZpW8pBnglGTPw_dz_A9WWyoDaiBBZPKRYUFk43qYtDkrYoTgVKiKtyKOguRjujzVzhuA6WYYbk-i87vjK7wNHmdliDMhNspbLvs4LU7H3yif4utRnzW3A5pWS7luM5rorSqU-pj8vCqCmdLtP-tPTBFRmS_IwoinM092pFPLFq5WUhH_JzQWk4Nj64_cv8DwX9Gzz3yPDcXsoOsZMMsbp3c373u3CG8Y4REmw\r\nSec-Fetch-Dest: empty\r\nSec-Fetch-Mode: cors\r\nSec-Fetch-Site: same-origin\r\nPragma: no-cache\r\nCache-Control: no-cache\r\n\r\n","headers":null,"cookies":null,"method":"GET"},"response":{"raw":"HTTP/3 200 \r\nversion: 952570408\r\nx-content-type-options: nosniff\r\ncontent-type: text/plain; charset=UTF-8\r\ncontent-disposition: attachment; filename=\"f.txt\"\r\nstrict-transport-security: max-age=31536000\r\ncross-origin-opener-policy: same-origin-allow-popups; report-to=\"gws\"\r\nreport-to: {\"group\":\"gws\",\"max_age\":2592000,\"endpoints\":[{\"url\":\"https://csp.withgoogle.com/csp/report-to/gws/none\"}]}\r\naccept-ch: Sec-CH-Prefers-Color-Scheme\r\np3p: CP=\"This is not a P3P policy! See g.co/p3phelp for more info.\"\r\ncontent-encoding: br\r\ndate: Mon, 27 Jul 2026 15:33:56 GMT\r\nserver: gws\r\nx-xss-protection: 0\r\nx-frame-options: SAMEORIGIN\r\nexpires: Mon, 27 Jul 2026 15:33:56 GMT\r\ncache-control: private\r\nset-cookie: __Secure-ENID=35.SE=Uz4O9fexpqtcg27rsCzqB3loBSC8a70Mqp_d18c3cjeU9uMWe4FHcPW1svFlK9taJqOPsqN9ZTMvrbcif3fGSVkGFj_PZtB1iqcUHQQ3k4McoRQh3TFmXwFvuBZDiuJbZsEWkIiLh9oQZqCS02Kcsd8T8KoXlZsObsNcGy15dXCeCexC1uy7XgZprqFrMQQA8uTOFbrZoEzmrPkKmCFOh5B5Jnu68ljyS8KtzuKzT_-dPSCoq1OOlqfaBgM; expires=Fri, 27-Aug-2027 07:52:13 GMT; path=/; domain=.google.com; Secure; HttpOnly; SameSite=lax\r\nalt-svc: h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000\r\n\r\n","headers":null,"cookies":null,"status_code":"200","status_text":"","fingerprints":[{"name":"HSTS","description":"HTTP Strict Transport Security (HSTS) informs browsers that the site should only be accessed using HTTPS.","website":"https://www.rfc-editor.org/rfc/rfc6797#section-6.1","common_platform_enumeration":"","icon":"","categories":["Security"]},{"name":"Google Web Server","description":"","website":"https://en.wikipedia.org/wiki/Google_Web_Server","common_platform_enumeration":"cpe:2.3:a:google:web_server:*:*:*:*:*:*:*:*","icon":"Google.svg","categories":["Web servers"]}],"data":{"size":102,"size_decoded":1244,"mime_type":"text/plain; charset=UTF-8","magic":"ASCII text","md5":"1fa7b18bc1f3ab4a4762842898bfb415","sha1":"587f14f851b216856b5d26ecdf76d80a07d6be45","sha256":"2464c9ad96d34ec8fbbd5e58fd24271071e51721ab9e46e6840f9c5f0b7a7bd2","sha512":"ba502c204283af40133e89c253ad73127322fec6af01e7fef05ab1accb710bd4fc46479715ac49b9f4f80a78109eb633b20f7fccb11c09d9a01f98078d405e87","ssdeep":"","tlshash":"4ab0120245f80c48581a101067d8ff7db16e912b4069d6ba1ff0170751e88416db1064","first_seen":"2026-07-27T15:34:29.319329Z","last_seen":"2026-07-27T15:34:29.319329Z","times_seen":1,"resource_available":false,"data":"KV19JwoyMjtbIlpIcG5hbzIzRjVXNjl1OFBvTXpiNFFzIiwiMjQ5NiJdYztbMixudWxsLCIwIl0xYjs8ZGl2IGpzbmFtZT0iTmxsMG5lIj48L2Rpdj5jO1s5LG51bGwsIjAiXTA7"}},"time_used":72,"timings":{"blocked":0,"dns":0,"connect":0,"send":0,"wait":68,"receive":4,"ssl":0},"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"www.google.com/gen_204?s=async\u0026astyp=hpba\u0026t=all\u0026atyp=csi\u0026ei=ZHpnao23F5W69u8PoMzb4Qs\u0026rt=ipf.7,ipfr.97,ttfb.97,st.98,ipfrl.99,acrt.99,aaft.99,art.99,ns.-1280\u0026twt=1\u0026mwt=1\u0026imn=0\u0026ima=0\u0026sv=\u0026cb=112\u0026ucb=102\u0026folid=_Y3pnarTELeimwPAPo6StkA4_10","fqdn":"www.google.com","domain":"google.com","tld":"com"},"ip":{"addr":"142.251.157.119","port":443,"asn":15169,"as":"GOOGLE","country":"United States","country_code":"US"},"is_navigation_request":false,"resource_type":"beacon","requested_by":"https://www.google.com/","date":"2026-07-27T15:33:56.465Z","timestamp":1785166436465,"http_version":"HTTP/3","security_state":"secure","security_info":{"cipher_suite":"TLS_AES_128_GCM_SHA256","key_group_name":"mlkem768x25519","signature_name":"ECDSA-P256-SHA256","protocol":"TLSv1.3","cert":{"subject":{"commonName":"*.google.com","organization":""},"issuer":{"commonName":"WR2","organization":"Google Trust Services"},"validity":{"start":"Mon, 29 Jun 2026 08:37:25 GMT","end":"Mon, 21 Sep 2026 08:37:24 GMT"},"fingerprint":{"sha1":"D9:DA:81:30:78:3E:9C:6B:5F:9D:18:52:0E:BE:6D:52:2F:FB:33:E0","sha256":"EA:E2:2D:87:EC:9C:D6:51:9D:59:E4:13:35:3B:97:14:E3:DA:58:2D:1C:69:19:41:54:94:25:C3:94:17:F3:0C"}}},"request":{"raw":"POST /gen_204?s=async\u0026astyp=hpba\u0026t=all\u0026atyp=csi\u0026ei=ZHpnao23F5W69u8PoMzb4Qs\u0026rt=ipf.7,ipfr.97,ttfb.97,st.98,ipfrl.99,acrt.99,aaft.99,art.99,ns.-1280\u0026twt=1\u0026mwt=1\u0026imn=0\u0026ima=0\u0026sv=\u0026cb=112\u0026ucb=102\u0026folid=_Y3pnarTELeimwPAPo6StkA4_10 HTTP/1.1\r\nHost: www.google.com\r\nUser-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:134.0) Gecko/20100101 Firefox/134.0\r\nAccept: */*\r\nAccept-Language: en-US,en;q=0.9\r\nAccept-Encoding: gzip, deflate, br, zstd\r\nReferer: https://www.google.com/\r\nContent-Type: text/plain;charset=UTF-8\r\nContent-Length: 0\r\nOrigin: https://www.google.com\r\nSec-GPC: 1\r\nConnection: keep-alive\r\nCookie: AEC=AdJVEauUsWHpfGAsUyeilL8EI9I2Tr9FfEzOqXuEJToXYpKe1KUK4km-Sg; __Secure-ENID=35.SE=Uz4O9fexpqtcg27rsCzqB3loBSC8a70Mqp_d18c3cjeU9uMWe4FHcPW1svFlK9taJqOPsqN9ZTMvrbcif3fGSVkGFj_PZtB1iqcUHQQ3k4McoRQh3TFmXwFvuBZDiuJbZsEWkIiLh9oQZqCS02Kcsd8T8KoXlZsObsNcGy15dXCeCexC1uy7XgZprqFrMQQA8uTOFbrZoEzmrPkKmCFOh5B5Jnu68ljyS8KtzuKzT_-dPSCoq1OOlqfaBgM\r\nSec-Fetch-Dest: empty\r\nSec-Fetch-Mode: no-cors\r\nSec-Fetch-Site: same-origin\r\nPriority: u=6\r\n\r\n","headers":null,"cookies":null,"method":"POST"},"response":{"raw":"HTTP/3 204 \r\ncontent-type: text/html; charset=UTF-8\r\ncontent-security-policy: object-src 'none';base-uri 'self';script-src 'nonce-PQswjLKkIe89K8Z7Ei6T_A' 'strict-dynamic' 'report-sample' 'unsafe-eval' 'unsafe-inline' https: http:;report-uri https://csp.withgoogle.com/csp/gws/other\r\ncross-origin-opener-policy: same-origin-allow-popups; report-to=\"gws\"\r\nreport-to: {\"group\":\"gws\",\"max_age\":2592000,\"endpoints\":[{\"url\":\"https://csp.withgoogle.com/csp/report-to/gws/other\"}]}\r\ndate: Mon, 27 Jul 2026 15:33:56 GMT\r\nserver: gws\r\ncontent-length: 0\r\nx-xss-protection: 0\r\nx-frame-options: SAMEORIGIN\r\nalt-svc: h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000\r\n\r\n","headers":null,"cookies":null,"status_code":"204","status_text":"","fingerprints":[{"name":"Google Web Server","description":"","website":"https://en.wikipedia.org/wiki/Google_Web_Server","common_platform_enumeration":"cpe:2.3:a:google:web_server:*:*:*:*:*:*:*:*","icon":"Google.svg","categories":["Web servers"]}],"data":{"size":0,"size_decoded":653,"mime_type":"text/html; charset=UTF-8","magic":"","md5":"d41d8cd98f00b204e9800998ecf8427e","sha1":"da39a3ee5e6b4b0d3255bfef95601890afd80709","sha256":"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855","sha512":"cf83e1357eefb8bdf1542850d66d8007d620e4050b5715dc83f4a921d36ce9ce47d0d13c5d85f2b0ff8318d2877eec2f63b931bd47417a81a538327af927da3e","ssdeep":"","tlshash":"","first_seen":"0001-01-01T00:00:00Z","last_seen":"2026-08-16T23:46:43.370624Z","times_seen":17926730,"resource_available":true,"data":""}},"time_used":19,"timings":{"blocked":0,"dns":0,"connect":0,"send":0,"wait":19,"receive":0,"ssl":0},"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"www.google.com/xjs/_/js/md=2/k=xjs.hd.no.ZJX-0yQnO-M.2019.O/am=AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgQAAAAABBAAAAAAAAAAAAAAAYAAgAAAAAAAAAAAAAAAAAAIAAQQAAIAAAAAAAAAAAEAAAAAAABAAACAAAYAAAAQABFAAAAAMAAAAAAAAAAAAAAAAAAAAAgBAAAABCAADwBwZYAQAAAAAAAAASADAAAAAAAAAAFgAAIAEAAAAEQAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAABgAAAAAAKAAAAABAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAgAAACgAACAAAAgAAAAAAAAAAAAAAAACgAwAAAAADAAAAAAAAAAAAAAAAAAAACAAAQIAAAAAAAAAAAAQACAAAAEAHQOABhhQUAAAAAAAAAAAAAAAAAAAAAAAAAAACLIBdSAEBEAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAyAkAAAAAAICF/rs=ACT90oEp9PejxfBZZRK7SiiesZRt_H0TFw?cb=121509378","fqdn":"www.google.com","domain":"google.com","tld":"com"},"ip":{"addr":"142.251.157.119","port":443,"asn":15169,"as":"GOOGLE","country":"United States","country_code":"US"},"is_navigation_request":false,"resource_type":"fetch","requested_by":"https://www.google.com/","date":"2026-07-27T15:33:56.769Z","timestamp":1785166436769,"http_version":"HTTP/3","security_state":"secure","security_info":{"cipher_suite":"TLS_AES_128_GCM_SHA256","key_group_name":"mlkem768x25519","signature_name":"ECDSA-P256-SHA256","protocol":"TLSv1.3","cert":{"subject":{"commonName":"*.google.com","organization":""},"issuer":{"commonName":"WR2","organization":"Google Trust Services"},"validity":{"start":"Mon, 29 Jun 2026 08:37:25 GMT","end":"Mon, 21 Sep 2026 08:37:24 GMT"},"fingerprint":{"sha1":"D9:DA:81:30:78:3E:9C:6B:5F:9D:18:52:0E:BE:6D:52:2F:FB:33:E0","sha256":"EA:E2:2D:87:EC:9C:D6:51:9D:59:E4:13:35:3B:97:14:E3:DA:58:2D:1C:69:19:41:54:94:25:C3:94:17:F3:0C"}}},"request":{"raw":"GET /xjs/_/js/md=2/k=xjs.hd.no.ZJX-0yQnO-M.2019.O/am=AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgQAAAAABBAAAAAAAAAAAAAAAYAAgAAAAAAAAAAAAAAAAAAIAAQQAAIAAAAAAAAAAAEAAAAAAABAAACAAAYAAAAQABFAAAAAMAAAAAAAAAAAAAAAAAAAAAgBAAAABCAADwBwZYAQAAAAAAAAASADAAAAAAAAAAFgAAIAEAAAAEQAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAABgAAAAAAKAAAAABAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAgAAACgAACAAAAgAAAAAAAAAAAAAAAACgAwAAAAADAAAAAAAAAAAAAAAAAAAACAAAQIAAAAAAAAAAAAQACAAAAEAHQOABhhQUAAAAAAAAAAAAAAAAAAAAAAAAAAACLIBdSAEBEAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAyAkAAAAAAICF/rs=ACT90oEp9PejxfBZZRK7SiiesZRt_H0TFw?cb=121509378 HTTP/1.1\r\nHost: www.google.com\r\nUser-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:134.0) Gecko/20100101 Firefox/134.0\r\nAccept: */*\r\nAccept-Language: en-US,en;q=0.9\r\nAccept-Encoding: gzip, deflate, br, zstd\r\nReferer: https://www.google.com/\r\nSec-GPC: 1\r\nConnection: keep-alive\r\nCookie: AEC=AdJVEauUsWHpfGAsUyeilL8EI9I2Tr9FfEzOqXuEJToXYpKe1KUK4km-Sg; __Secure-ENID=35.SE=Uz4O9fexpqtcg27rsCzqB3loBSC8a70Mqp_d18c3cjeU9uMWe4FHcPW1svFlK9taJqOPsqN9ZTMvrbcif3fGSVkGFj_PZtB1iqcUHQQ3k4McoRQh3TFmXwFvuBZDiuJbZsEWkIiLh9oQZqCS02Kcsd8T8KoXlZsObsNcGy15dXCeCexC1uy7XgZprqFrMQQA8uTOFbrZoEzmrPkKmCFOh5B5Jnu68ljyS8KtzuKzT_-dPSCoq1OOlqfaBgM\r\nSec-Fetch-Dest: empty\r\nSec-Fetch-Mode: cors\r\nSec-Fetch-Site: same-origin\r\nPragma: no-cache\r\nCache-Control: no-cache\r\n\r\n","headers":null,"cookies":null,"method":"GET"},"response":{"raw":"HTTP/3 200 \r\naccept-ranges: bytes\r\ncontent-encoding: gzip\r\ncontent-security-policy-report-only: require-trusted-types-for 'script'; report-uri https://csp.withgoogle.com/csp/gws-team\r\ncross-origin-resource-policy: cross-origin\r\ncross-origin-opener-policy: same-origin; report-to=\"gws-team\"\r\nreport-to: {\"group\":\"gws-team\",\"max_age\":2592000,\"endpoints\":[{\"url\":\"https://csp.withgoogle.com/csp/report-to/gws-team\"}]}\r\ncontent-length: 1070\r\nx-content-type-options: nosniff\r\nserver: sffe\r\nx-xss-protection: 0\r\ndate: Sat, 25 Jul 2026 02:19:00 GMT\r\nexpires: Sun, 25 Jul 2027 02:19:00 GMT\r\ncache-control: public, immutable, max-age=31536000\r\nlast-modified: Sat, 25 Jul 2026 01:57:35 GMT\r\ncontent-type: text/javascript; charset=UTF-8\r\nvary: Accept-Encoding, Origin\r\nage: 220496\r\nalt-svc: h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000\r\n\r\n","headers":null,"cookies":null,"status_code":"200","status_text":"","fingerprints":null,"data":{"size":12752,"size_decoded":1900,"mime_type":"text/javascript; charset=UTF-8","magic":"JSON text data","md5":"b4f265bf3889e7ed6e254fa2125bb5f5","sha1":"de5cc461f8083cbbedcba08bb90d2d53a02ae2bd","sha256":"2b1e1c88cdbde486e1b0ab0d1d5c9e72aaef0fb7d6500918e98f4ac3ca5bed25","sha512":"50a4d986d80578390fce63594e567efc3efa964077d739d66bfff56222ed1a3725b395b47c37da77bd9e9bb7b1dbcf5ac98e70aa8c20897ebe82ac40dcde797a","ssdeep":"3:YGNRxkMUPThWaiWYUfU/UhWaaaaaaaaaaaaaaaayWaaaaaaaayaCaayiKUTTk1iH:YGzxkh","tlshash":"46420020ebc0202003c038b2803a2c0eb3e0088030a0cccb2c0800038ee30888382b0f","first_seen":"2026-07-25T01:07:04.025671Z","last_seen":"2026-07-27T21:44:04.59221Z","times_seen":209,"resource_available":false,"data":"eyJjaHVua1R5cGVzIjoiMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTMxMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMzMzMzEzMzMxMzMxMzEzMTMxMzEzMTMxMzEzMTMxMzEzMTMxMzEzMTMxMzEzMTMxMzEzMTMxMzEzMTMxMzEzMTMxMzEzMTMxMzEzMTMxMzEzMTMxMzEzMTMxMzEzMTMxMzEzMTMxMzEzMTMxMzEzMTMxMzEzMTMxMzEzMTMxMzEzMTMxMzEzMTMxMzEzMTMxMzEzMTMxMzEzMTMxMzEzMTMxMzEzMTMxMzEzMTMxMzEzMTMxMzEzMTMzMzEzMTMxMzEzMTMxMzEzMTMzMzMxMzEzMTMxMzEzMTMxMzEzMTMxMzEzMTMxMzEzMzMzMTMxMzEzMTMxMzEzMTMxMzEzMTMxMzEzMTMxMzEzMTMxMzEzMTMxMzEzMTMzMzMxMzMzMTMzMTMzMTMzMTMzMTMzMTMzMTMzMTMzMTMzMTMzMTMzMTMzMTMzMTMzMTMzMTMzMTMzMzEzMzEzMzEzMzEzMzEzMzEzMzEzMzEzMzEzMTMzMTMzMTMxMzEzMTMzMTMzMTMzMTMxMzMxMzEzMTMxMzEzMTMxMzEzMzEzMTMxMzEzMTMxMzMzMTEzMTMxMTMxMzEzMTMxMzEzMTMzMTMxMzEzMTMxMzEzMTMzMzEzMTMxMzEzMTMzMTMxMzEzMTMxMzEzMTMxMzEzMTMxMzMxMzEzMTMzMzMzMzMxMzEzMTMxMzEzMTMzMzMxMTMzMTMxMTMxMTMxMzEzMTMxMzMzMTMxMzExMzEzMTMxMzMxMzExMzEzMzEzMTMxMzEzMTMxMzEzMTMxMzMxMzEzMzMxMTEzMTMxMzMxMzEzMTMxMzEzMTMxMzEzMTMxMzEzMTMxMzMxMzEzMTMxMzMxMzEzMzMzMzMzMTMxMzEzMTMxMzEzMzMxMzEzMTMxMzMxMzEzMTMxMzEzMTMxMzEzMTMxMzEzMTMxMzExMzEzMTMxMzEzMTMxMzEzMTMxMzEzMTMxMzEzMTMxMzEzMTMxMzEzMTMxMzEzMTMxMTExMTExMzMxMzEzMTMxMzEzMTMxMzEzMTMxMzEzMzEzMTMxMTMxMzExMzEzMTMxMzEzMTMxMzEzMTMxMzEzMTMzMTMxMzEzMTMxMzEzMTMxMzEzMzMzMzMzMzMzMzMzMzMxMzEzMzMzMTMxMzEzMTMzMTExMzEzMTEzMTEzMTMxMzEzMTMzMTMxMTExMTMxMzMzMTMxMzEzMTMxMTMxMzEzMTMxMzEzMTMxMzEzMTMxMzEzMTMxMzEzMTMxMzEzMTMxMzExMzMzMzMzMzMzMzMzMzEzMTMxMzEzMTMxMzEzMTMxMzEzMTExMTExMTExMTExMTEzMTExMTExMTExMTExMTExMTEzMzExMTExMzEzMTMxMTEzMTMxMTEzMTExMTExMTExMTExMTExMTExMzMxMzMzMTMxMzMzMzEzMTMxMzEzMTExMTMxMzEzMzEzMzEzMzEzMTMxMzEzMTMxMzMzMzMzMzMxMzMzMzEzMzMzMTMxMzEzMTMxMzEzMTMzMzMzMzMzMzMzMzMzMzMxMTMxMzMzMTEzMzMzMzExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTMxMTExMTExMTExMTExMTExMTExMzExMzMxMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTEzMzExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMzMxMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMzMzMTExMTMxMTEzMzExMTMxMTExMzExMTEzMTExMzMxMTExMTMzMTExMTExMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzExMTMxMzExMTExMzMzMzExMzMzMzMzMzMzMzMzMzMzMzMxMTExMTExMTExMTExMTExMTEzMTMzMzMxMzExMTExMzMxMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzExMTMzMTMxMTEzMzMzMzMzMzMxMTEzMzMzMzMxMzMxMTExMTExMTExMTExMTMzMTMxMTMzMzMzMzExMTExMTEzMzMzMTExMzMzMzMzMzMzMzMzMzMzMzMzMTExMTExMzMzMzExMzEzMzExMTExMTEzMTExMTExMTExMTEzMTMxMTExMzMxMTExMTExMTExMTExMTEzMTExMTExMTExMzExMTMxMTMzMzEzMTExMTExMTExMTExMTExMTExMTExMTExMTExMzEzMzMzMzExMTEzMzMzMTMxMzEzMzMzMTExMTExMTExMTEzMzMxMTExMzMxMTMxMTExMTExMTMxMTMzMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTMxMTExMTExMTExMTExMTExMTExMTExMTExMTEzMTMxMzExMTExMTMxMTExMTExMTExMTExMTExMTMxMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTMxMTExMTEzMzExMTExMTExMTExMTExMTExMTExMTExMzMxMTMzMzMzMTExMTEzMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMzMxMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTMxMTExMTExMTExMzExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTMxMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMzMzMzExMzMxMTMxMzExMTEzMTExMTExMTExMzExMTMzMzExMzExMTExMzExMzMxMzExMzMzMzMzMzMxMTExMTMzMTMxMTExMTEzMTExMTExMTExMTExMTExMTEzMTExMTEzMzMzMzExMTMxMTExMTMxMTMzMzMxMzExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTEzMzEzMTExMzExMTMxMTEzMzExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMzExMTEzMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMzExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTMzMzMzMzMzMzMzMTMxMzExMTMxMzMxMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTMzMzMxMzMzMzMxMTExMzMxMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTEzMzMzMzMzMzMzMzMzMzMzMzMxMzMzMzMzMzMxMTExMTExMTExMTExMTEzMzMzMzMxMzMzMzMzMzMzMzMzMzMzMzMxMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzEzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMxMTExMTExMzMzMzMzMzMzMTMxMTMxMzMzMzMzMzMzMzMzMzExMTExMTExMTExMTExMTExMTExMTExMTEzMTMzMTExMTExMTExMTExMzExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTEzMTMxMTExMzMzMzMzMzMzMzMzMzExMzEzMzMzMzMzMzMzMzMzMzMxMTExMTEzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzExMzExMzMxMTExMTExMTExMTExMTExMTMxMTExMTEzMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMzExMTExMTExMTExMTExMTExMTExMTMxMTEzMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMzExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTMxMTEzMTExMTExMTExMTExMTExMTExMTExMTExMTEzMTExMTExMzMzMzMzMzMzMzMzMzMzMzMzMzMxMzMzMzMzMzMzMzMzMTEzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMxMTExMTExMzExMTExMTExMTExMTExMTEzMzMzMzMzMTMzMzMzMzMzMzMzMTMxMTExMzMzMzMzMzMxMzMzMzMzMTMzMzEzMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTMzMTExMTEzMTExMTMzMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMzMxMzMzMzExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTMzMzMzMTMxMzEzMTEzMzExMTExMTExMTEzMTExMTExMTMxMTExMzExMTEzMTEzMTEzMTExMTExMTMxMTExMTMxMTExMTExMTExMTExMTEzMTMxMzMzMzMzMTMxMzExMTExMTExMTExMTExMzExMTEzMTExMTMxMTExMTExMTEzMTExMTExMTExMTExMTMxMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMzMxMTExMTEzMTMzMTMxMzExMTExMzExMTEzMTExMTExMTMzMzEzMTMxMzMxMTMxMTMzMzMxMTExMTExMzExMTExMzMxMzExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMzMxMTExMTExMzMzMzExMTMzMzMxMzExMTEzMzMzMzExMTEzMzMzMTMzMzMzMzMzMzMzMzMzMzMzMzMzMzMxMTMzMzMzMzMzMzMzMTMzMTExMTExMTExMTExMTExMTExMTExMTMzMzMzMzMzMzMzMzMzMzMxMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMTExMTExMzMxMzMxMzMzMzMxMzMxMzMzMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTMxMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTEzMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTEzMzMzMzMxMTExMTMzMzEzMzMxMzMzMzMxMzMzMzMzMzMxMzMzMzMzMzMxMzMzMTMzMTEzMzMzMzMxMzMxMzMxMzMzMzExMzMxMzMzMzMzMzMzMTMzMzEzMzMzMTMzMTMzMTExMzMzMzMzMzMzMzMzMzMzMzMzMTExMTMxMTExMTEzMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMzMzMzMzMzMzMzMzMzMzMzMxMTMxMTEzMzMzMzMzMzMzMzMzMzMxMTMzMzMzMzMzMzEzMTMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzEzMzMzMTMxMzExMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMxMTEzMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMzExMTExMTExMTExMTExMTExMTExMTEzMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTEzMTExMTExMTExMTExMTMxMTExMTExMTExMTExMTMxMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMzMxMzExMzExMTExMTExMTExMTExMTExMzMxMTExMTExMzMxMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMzEzMTEzMTExMzMxMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMzMxMTExMTExMzExMTExMTExMTExMTExMTExMTEzMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMzExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMzExMTMzMTExMTExMTExMTExMTExMTMxMzMxMTMzMTEzMzExMTExMTExMTMxMTEzMTMxMTExMTExMTEzMzMzMzEzMTExMzExMTExMTMzMzMxMTExMTExMTExMTExMTExMTExMTExMTExMTEzMTExMzExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTMxMTExMTExMTExMTExMzEzMTExMTExMTExMTExMTEzMTMxMzMxMTExMTExMTExMTExMTExMTMzMzExMTExMTExMTExMTEzMzMxMTExMTExMTExMTExMzExMTExMTExMTExMTMzMzExMTMxMTEzMzMxMTEzMzMxMzMzMzExMTMzMTMzMTEzMzMzMzMxMTMzMzMzMzExMTExMzExMTExMTExMTExMTEzMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTMxMTExMTMxMTExMTExMTExMTExMTMxMzExMzEzMTExMTExMTExMTExMTExMTExMTExMTExMTMxMzMzMzEzMzEzMTMzMTExMTEzMTExMTMxMzMzMzMzMTEzMTMxMzExMzMzMzEzMTMxMTExMTMxMzEzMzMzMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTMxMzExMTMxMzExMzMzMTMzMzMzMzMzMzMxMzMzMTMxMTExMzExMTExMTExMTExMTExMTExMTExMTExMTExMzExMTExMTExMzMxMTExMTExMTExMTExMTExMzMxMTEzMTExMTExMTEzMTExMzExMTExMTExMTMzMzExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMzExMzExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTMxMTExMTExMTEzMTEzMTExMTEzMzExMTExMTExMTExMTExMzExMTEzMTExMTEzMTMxMTEzMzMzMTMzMzMxMTExMTEzMzMxMTExMTMzMzExMTEzMTMzMTExMTExMTExMTExMTExMTExMTMxMTExMTExMTExMTExMTExMTExMTExMTEzMTExMTExMTExMTExMTExMTExMTExMzExMzMxMTExMTEzMTEzMzMzMzMzMzMzMzMxMTExMTMxMzExMTMzMzExMTEzMTExMTExMTExMTExMTExMTExMzEzMTExMzExMTExMTExMTExMTMxMzExMTExMTEzMTExMTExMTExMTExMTExMzExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTMxMTExMTExMzMzMTExMTExMTExMTExMTEzMTExMTEzMzEzMTExMTExMTExMTExMTMxMTMxMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTEzMzMxMTMxMzMxMTExMTMzMzMxMTMzMzEzMzMxMzMzMTMzMzExMzMzMzExMzMzMzExMTExMTExMTExMTExMTExMTExMzEzMTMzMzMzMTMxMzMxMTMzMzEzMzMxMzExMTExMTExMTExMTExMTMxMzEzMTMxMzEzMTEzMTEzMTExMTExMTExMTEzMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTEzMzExMTExMTMxMTExMTExMTExMTExMTExMTExMTExMTExMTMxMzMxMTExMTExMTExMTEzMTExMTExMzExMTExMTExMTExMzMzMzMxMzMzMzMzMTMxMzMzMzMzMzExMzMzMTMxMTMzMzEzMzMzMzMzMzMzMzEzMzEzMzMzMTExMTExMTMzMTExMTExMTMxMzExMTEzMzExMTExMTMxMTExMTEzMzMzMTExMTMzMzMxMTMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzExMzMzMzMzMzMxMTExMTExMTMzMTMxMTExMzExMzEzMTMzMTMxMzEzMTMxMzEzMTMxMzEzMTMxMzMxMzEzMTMxMzEzMTMxMzEzMTMxMzEzMTMxMzEzMTMxMzEzMTMxMzEzMTMxMzEzMTMxMzEzMTMxMzEzMTMzMTMxMzExMTMxMzEzMTMxMzEzMTMxMzExMzEzMTMxMzExMzExMTExMTExMzEzMTMxMzEzMTMxMzMxMzExMzMxMzExMzEzMTMxMzEzMTExMTEzMTExMzEzMTMzMTMxMTMxMzEzMTExMTMxMzEzMTExMzExMTMzMTMzMTEzMTMzMTMxMzEzMTMxMzExMTExMTMxMTMxMzEzMTEzMTExMTMxMTMxMzEzMTMxMTMxMzExMzEzMTMxMzEzMTMxMzEzMTMxMzEzMTMxMzEzMTMxMzExMzExMzEzMTMxMzEzMTExMTMxMzEzMTEzMTMxMzExMzEzMTMxMzEzMTMxMTMxMTMzMTExMzExMTEzMTMxMTEzMTExMzExMzExMTEzMTMxMzEzMTMxMzEzMTMxMzEzMTEzMTMxMTMxMzEzMzEzMTExMTMxMzMzMTMxMzExMTExMTExMTEzMTMxMzExMzEzMTExMTExMzExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTEzMTExMTMxMTExMTExMTExMTExMTEzMzMxMzExMzExMTExMTExMTExMTExMTExMTExMTExMTExMTEzMTExMTExMTExMTEzMzMzMTExMzEzMzExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTEzMTEzMzMzMzExMTExMzMxMTMxMTExMTExMTExMTMzMzMxMzMzMzMzMzMxMzMzMzMzMzMzMzMzMzMzMzMzMzEzMzMxMzExMTEzMzMzMTMxMTExMTExMTEzMzMzMzMzMzMxMzMxMTExMTExMTMxMzExMTExMTEzMTExMTEzMzExMzMzMTExMTMzMTMxMTExMzMzMzMzMTMzMzEzMzMzMzEzMzMzMzMzMzMzMzMzMzMzMzMzMzExMTExMTExMTExMTExMTExMTExMTExMTMxMTEzMTExMzEzMTExMTExMTEzMTEzMTExMTExMTExMTExMTExMTExMzExMTExMTExMTExMTExMTExMTExMTExMTExMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMTExMTEzMzMzMTEzMzExMTMxMzMzMzExMTExMTExMTEzMTExMTExMTExMTExMTExMTMxMzExMTExMTExMTExMTExMTExMTExMTExMTMxMTExMTExMTExMTExMTExMTEzMTEzMTExMTExMTExMTExMTExMTExMTMzMTEzMTExMzExMTExMTExMzExMTEzMzMxMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTMzMTExMTExMTExMTExMTExMzExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTEzMTExMTExMTExMTExMTExMTExMTExMTMxMTExMTEzMzExMTExMTMzMzMzMzMxMTExMzExMTExMTMxMTExMzExMTExMTExMTExMTExMTExMzExMzExMzEzMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTMzMzEzMTMxMzExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTEzMzExMTExMzMxMTExMTExMTMzMTExMTEzMzExMzMxMTExMTExMTExMTMxMTExMTExMTExMzMzMzMzMTMxMTExMTExMTExMTMzMzMxMzExMTMxMTExMTExMTExMTExMTEzMzMxMTExMTExMTExMzEzMTMzMTExMTExMTExMTExMTExMTExMTExMTExMTMzMzEzMzExMzExMzExMTMxMzExMTEzMzMxMzMzMTMxMzMxMTEzMTMzMTExMzExMTMxMTExMTMxMzMxMTMxMTEzMTEzMTEzMzEzMTMxMTExMTExMTExMTExMTExMzMxMTEzMTExMzMzMzExMTMzMTEzMzMxMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMzMxMTExMTEzMTExMTExMTExMTExMzMzMzExMTExMTMzMzMzMzMzMzMzMzMzMzMzMTMxMTExMTEzMTExMTExMTExMTExMTEzMTMxMTExMTExMTExMTExMTExMTExMTExMTMzMzMzMzMzMzMxMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMxMzMzMzMzMzMzMTExMTExMTMxMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMzMzMzMzMzMzMzMxMTMxMTExMTExMTExMTExMTExMTExMTExMTExMTMzMzMzMTExMTExMTExMTExMTExMTExMzEzMTExMTExMTExMTExMTExMTExMTMzMzEzMzMzMzMzMzMzMzMzMzMxMTExMTExMzEzMTMxMzExMTMxMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTMzMzMzMTExMTExMTExMTExMTExMTExMTExMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMxMTExMTExMzExMTExMTExMTExMTExMzExMTExMTExMTExMTExMTEzMTExMTExMzExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMzMxMTMzMTMzMTMzIn0="}},"time_used":10,"timings":{"blocked":-1,"dns":0,"connect":0,"send":0,"wait":10,"receive":0,"ssl":0},"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"www.google.com/xjs/_/js/k=xjs.hd.no.ZJX-0yQnO-M.2019.O/ck=xjs.hd.h9GHjaAphl0.L.F4.O/am=AAAEQAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAABAAAAIECAAAZAAAgQAAgAADBAAAAAAIAAAAAABAeAAgAMAAAAAAAAAAAAAAAAIAAQQAAIAAAAAAAAAAAEAAAAAAABAIAiAAAYAAAAQABFAAAQAMAAAAAAAAACAAAAAAAAAAAiBAAAABCAADwBwZYAwAAAAAAAAASYTAQAAAAABAGFgAAIAEAAAAEQAAAAAAAAABAJEACACAAABAAAAgAAAAAAAQBhBAEAAEKIAAAABAAAAKABQAAAACgAxAEAQAAAABAAAAACAAEgRBAAAAAgAAAChAACAAIAgAAAGAEBQBAogYCAECgAwAAACADAAAAAAQAAAAAAAAAAAAAiAAAQIAAAACQAAADBAQACAAAAEAHQOABhhQUAAAAAAAAAAAAAAAAAAAAAAAAAAACLIBdSAEBEAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAyAkAAAAAAICF/d=0/dg=0/br=1/ujg=1/rs=ACT90oHlSnCzx5mAdYXy8e1Zh-GxJ0al8Q/m=sy2ds,bwixAb,aG3wVc,syh6,aLUfP,wQlYve,sy2e5,sy2e9,sy2ea,sy2e4,sy2eb,sy2e0,sy2dz,sy29q,sy2e1,sy2dx,sy2dw,sy2du,sygn,s0j7C,sy184,sy187,sy185,sy181,sy183,sy17y,sy17x,sy17c,sy178,sy17z,sy176,sy177,SMquOb,sy8z,sy8y,syhu,syht,syhq,syhr,syhp,syi6,syi2,syi1,syi0,syhx,syho,syhg,syhn,syhl,syhk,syhj,sy9e,sy9h,syhi,syhm,syhh,syhf,syhc,syha,sy9m,uxMpU,syh1,sya5,sya2,sya1,sya0,sy9z,sy9y,Mlhmy,QGR0gd,PoEs9b,Pjplud,OTA3Ae,sy9v,sy9q,A1yn5d,YIZmRd,sy98,sy96,sy95,sy93,sy92,byfTOb,lsjVmc,LEikZe,sy90,kWgXee,ovKuLd,sgY6Zb,qafBPd,ebZ3mb,dowIGb,sy2bb,sy18e,d5EhJe,sy2c6,fCxEDd,sy1ug,sy1uh,sy2c1,sy2bw,sy2bo,sy2bq,sy2c5,sy2bx,sy2c3,sy2bt,sy2bs,sy2bm,sy2bk,sy1cg,sy1rt,sy18h,sy18c,sy18i,sy17l,sy17k,sy18j,T1HOxc,LFk59d,sy2bh,sy2bg,sy2be,sy2bf,sy2bd,syps,zx30Y,sy2c8,sy2c7,sy17a,syyq,Wo3n8,sy18q,sy18o,zGLm3b,sy4d8,sy4d7,sy4d6,sy3x0,sy1rx,sy1ry,DhPYme,sy4dh,sy3wj,sy3wh,syi8,sy3wo,sy3wi,sy3wq,sy3we,sy4dg,KHourd,sy4eq,sy161,syz9,oQfbDd?cb=121509378\u0026xjs=s3","fqdn":"www.google.com","domain":"google.com","tld":"com"},"ip":{"addr":"142.251.157.119","port":443,"asn":15169,"as":"GOOGLE","country":"United States","country_code":"US"},"is_navigation_request":false,"resource_type":"script","requested_by":"https://www.google.com/","date":"2026-07-27T15:33:56.893Z","timestamp":1785166436893,"http_version":"HTTP/3","security_state":"secure","security_info":{"cipher_suite":"TLS_AES_128_GCM_SHA256","key_group_name":"mlkem768x25519","signature_name":"ECDSA-P256-SHA256","protocol":"TLSv1.3","cert":{"subject":{"commonName":"*.google.com","organization":""},"issuer":{"commonName":"WR2","organization":"Google Trust Services"},"validity":{"start":"Mon, 29 Jun 2026 08:37:25 GMT","end":"Mon, 21 Sep 2026 08:37:24 GMT"},"fingerprint":{"sha1":"D9:DA:81:30:78:3E:9C:6B:5F:9D:18:52:0E:BE:6D:52:2F:FB:33:E0","sha256":"EA:E2:2D:87:EC:9C:D6:51:9D:59:E4:13:35:3B:97:14:E3:DA:58:2D:1C:69:19:41:54:94:25:C3:94:17:F3:0C"}}},"request":{"raw":"GET /xjs/_/js/k=xjs.hd.no.ZJX-0yQnO-M.2019.O/ck=xjs.hd.h9GHjaAphl0.L.F4.O/am=AAAEQAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAABAAAAIECAAAZAAAgQAAgAADBAAAAAAIAAAAAABAeAAgAMAAAAAAAAAAAAAAAAIAAQQAAIAAAAAAAAAAAEAAAAAAABAIAiAAAYAAAAQABFAAAQAMAAAAAAAAACAAAAAAAAAAAiBAAAABCAADwBwZYAwAAAAAAAAASYTAQAAAAABAGFgAAIAEAAAAEQAAAAAAAAABAJEACACAAABAAAAgAAAAAAAQBhBAEAAEKIAAAABAAAAKABQAAAACgAxAEAQAAAABAAAAACAAEgRBAAAAAgAAAChAACAAIAgAAAGAEBQBAogYCAECgAwAAACADAAAAAAQAAAAAAAAAAAAAiAAAQIAAAACQAAADBAQACAAAAEAHQOABhhQUAAAAAAAAAAAAAAAAAAAAAAAAAAACLIBdSAEBEAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAyAkAAAAAAICF/d=0/dg=0/br=1/ujg=1/rs=ACT90oHlSnCzx5mAdYXy8e1Zh-GxJ0al8Q/m=sy2ds,bwixAb,aG3wVc,syh6,aLUfP,wQlYve,sy2e5,sy2e9,sy2ea,sy2e4,sy2eb,sy2e0,sy2dz,sy29q,sy2e1,sy2dx,sy2dw,sy2du,sygn,s0j7C,sy184,sy187,sy185,sy181,sy183,sy17y,sy17x,sy17c,sy178,sy17z,sy176,sy177,SMquOb,sy8z,sy8y,syhu,syht,syhq,syhr,syhp,syi6,syi2,syi1,syi0,syhx,syho,syhg,syhn,syhl,syhk,syhj,sy9e,sy9h,syhi,syhm,syhh,syhf,syhc,syha,sy9m,uxMpU,syh1,sya5,sya2,sya1,sya0,sy9z,sy9y,Mlhmy,QGR0gd,PoEs9b,Pjplud,OTA3Ae,sy9v,sy9q,A1yn5d,YIZmRd,sy98,sy96,sy95,sy93,sy92,byfTOb,lsjVmc,LEikZe,sy90,kWgXee,ovKuLd,sgY6Zb,qafBPd,ebZ3mb,dowIGb,sy2bb,sy18e,d5EhJe,sy2c6,fCxEDd,sy1ug,sy1uh,sy2c1,sy2bw,sy2bo,sy2bq,sy2c5,sy2bx,sy2c3,sy2bt,sy2bs,sy2bm,sy2bk,sy1cg,sy1rt,sy18h,sy18c,sy18i,sy17l,sy17k,sy18j,T1HOxc,LFk59d,sy2bh,sy2bg,sy2be,sy2bf,sy2bd,syps,zx30Y,sy2c8,sy2c7,sy17a,syyq,Wo3n8,sy18q,sy18o,zGLm3b,sy4d8,sy4d7,sy4d6,sy3x0,sy1rx,sy1ry,DhPYme,sy4dh,sy3wj,sy3wh,syi8,sy3wo,sy3wi,sy3wq,sy3we,sy4dg,KHourd,sy4eq,sy161,syz9,oQfbDd?cb=121509378\u0026xjs=s3 HTTP/1.1\r\nHost: www.google.com\r\nUser-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:134.0) Gecko/20100101 Firefox/134.0\r\nAccept: */*\r\nAccept-Language: en-US,en;q=0.9\r\nAccept-Encoding: gzip, deflate, br, zstd\r\nReferer: https://www.google.com/\r\nSec-GPC: 1\r\nConnection: keep-alive\r\nCookie: AEC=AdJVEauUsWHpfGAsUyeilL8EI9I2Tr9FfEzOqXuEJToXYpKe1KUK4km-Sg; __Secure-ENID=35.SE=Uz4O9fexpqtcg27rsCzqB3loBSC8a70Mqp_d18c3cjeU9uMWe4FHcPW1svFlK9taJqOPsqN9ZTMvrbcif3fGSVkGFj_PZtB1iqcUHQQ3k4McoRQh3TFmXwFvuBZDiuJbZsEWkIiLh9oQZqCS02Kcsd8T8KoXlZsObsNcGy15dXCeCexC1uy7XgZprqFrMQQA8uTOFbrZoEzmrPkKmCFOh5B5Jnu68ljyS8KtzuKzT_-dPSCoq1OOlqfaBgM\r\nSec-Fetch-Dest: script\r\nSec-Fetch-Mode: no-cors\r\nSec-Fetch-Site: same-origin\r\nPriority: u=1\r\nPragma: no-cache\r\nCache-Control: no-cache\r\n\r\n","headers":null,"cookies":null,"method":"GET"},"response":{"raw":"HTTP/3 200 \r\naccept-ranges: bytes\r\nvary: Accept-Encoding, Origin\r\ncontent-encoding: br\r\ncontent-type: text/javascript; charset=UTF-8\r\ncontent-security-policy-report-only: require-trusted-types-for 'script'; report-uri https://csp.withgoogle.com/csp/gws-team\r\ncross-origin-resource-policy: cross-origin\r\ncross-origin-opener-policy: same-origin; report-to=\"gws-team\"\r\nreport-to: {\"group\":\"gws-team\",\"max_age\":2592000,\"endpoints\":[{\"url\":\"https://csp.withgoogle.com/csp/report-to/gws-team\"}]}\r\ncontent-length: 87852\r\ndate: Mon, 27 Jul 2026 15:33:57 GMT\r\nexpires: Tue, 27 Jul 2027 15:33:57 GMT\r\ncache-control: public, immutable, max-age=31536000\r\nlast-modified: Fri, 24 Jul 2026 22:53:47 GMT\r\nx-content-type-options: nosniff\r\nserver: sffe\r\nx-xss-protection: 0\r\nalt-svc: h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000\r\n\r\n","headers":null,"cookies":null,"status_code":"200","status_text":"","fingerprints":null,"data":{"size":272300,"size_decoded":88668,"mime_type":"text/javascript; charset=UTF-8","magic":"JavaScript source, ASCII text, with very long lines (2241)","md5":"7ba0c0b3f2d04bb2d84879bc694cd7a2","sha1":"f020b6b182a6fdbaabe8e014f5575c1789bb45b6","sha256":"36bf689c350e8be8f8cb322e9b3d0896c6c817211001306c557ed87c67023374","sha512":"66c615aad7e27b244a5d970d9ab8e435fe9c99881cfad3ced8a4c6f6ac7ad932c571095e8a07c25549c96973c9f7208845dcc232afed8369a58bc95fda441ffb","ssdeep":"3072:o8ybZRdfZjdy/60VMtbd0MYH070+PIvqcSKzHFQa:8bZRxZU/etp0MYHm0/v9bhQa","tlshash":"0644f9987363b0936362f1d5806f02cbb36a7891f849896cb9bcd9e17df088141f5b79","first_seen":"2026-07-25T05:13:35.317421Z","last_seen":"2026-07-27T17:46:41.29604Z","times_seen":24,"resource_available":true,"data":"X0ZfaW5zdGFsbENzcygiLmJlOW1rYntwb3NpdGlvbjphYnNvbHV0ZTtsZWZ0Oi05OTk5cHg7b3BhY2l0eTowO2hlaWdodDphdXRvfS5VdmRyVGMgLmJlOW1rYnt0cmFuc2l0aW9uOmhlaWdodCAuM3MgY3ViaWMtYmV6aWVyKC42LC4yLC4yLC44KX0ubVdjZjBle2N1cnNvcjpwb2ludGVyfUBtZWRpYSAoZm9yY2VkLWNvbG9yczphY3RpdmUpey5DTmJQbmN7YmFja2dyb3VuZC1jb2xvcjpCdXR0b25GYWNlO2JvcmRlcjoxcHggc29saWQgdHJhbnNwYXJlbnQ7Ym9yZGVyLWNvbG9yOkJ1dHRvbkJvcmRlcjtjb2xvcjpCdXR0b25UZXh0fX0uVmZMMll7cG9zaXRpb246cmVsYXRpdmU7fS5ZUXBYOWR7Y3Vyc29yOnBvaW50ZXI7cG9zaXRpb246cmVsYXRpdmU7fS5MUlp3dWN7ZGlzcGxheTppbmxpbmUtYmxvY2t9LkJKMUlyZCAuTFJad3Vje2Rpc3BsYXk6YmxvY2t9Lm5LSHlUY3tjb2xvcjp2YXIoLS1JWG94VWUpO2Zsb2F0OnJpZ2h0O2ZvbnQtc2l6ZTp2YXIoLS1nT3M2QmYpO2xpbmUtaGVpZ2h0OnZhcigtLXB1blpsYyk7cGFkZGluZy1ib3R0b206NHB4fS5lREdxTmR7Y29sb3I6dmFyKC0tSVhveFVlKTtmbG9hdDpyaWdodDtmb250LXNpemU6dmFyKC0tZ09zNkJmKTtsaW5lLWhlaWdodDp2YXIoLS1wdW5abGMpfS5CSjFJcmQsLms2MmdqYiAuVzdHQ29jOmhvdmVyLC5rNjJnamI6aG92ZXJ7dGV4dC1kZWNvcmF0aW9uOnVuZGVybGluZX1zZW50aW5lbHt9Iik7CnRoaXMuX2hkPXRoaXMuX2hkfHx7fTsoZnVuY3Rpb24oXyl7dmFyIHdpbmRvdz10aGlzOwp0cnl7Cl8ucTRlPV8ua2MoImJ3aXhBYiIsW10pOwp9Y2F0Y2goZSl7Xy5fRHVtcEV4Y2VwdGlvbihlKX0KdHJ5ewpfLnUoImJ3aXhBYiIpOwp2YXIgcjRlPWZ1bmN0aW9uKGEsYixjKXthKj0yO2lmKGE8MSlyZXR1cm4gYy8yKmEqYStiO2EtLTtyZXR1cm4tYy8yKihhKihhLTIpLTEpK2J9LHM0ZT1mdW5jdGlvbihhLGIsYyxkKXtfLmhuKGEsInRyYW5zZm9ybSIsYHRyYW5zbGF0ZVgoJHtyNGUoZCxiLGMtYil9cHgpYCl9O3ZhciB3NGUsdTRlLHQ0ZSx2NGU7Cnc0ZT1mdW5jdGlvbihhLGIpe3ZhciBjPXQ0ZShhKSxkPShhLmlzUnRsPzE6LTEpKnU0ZShhLGIpKmEuQmEsZT1hLmthKCkubWFwKChoLGspPT57dmFyIG09TnVtYmVyKF8ua24oaCwid2lkdGgiKS5yZXBsYWNlKC9bXlxkLi1dL2csIiIpKSxuPU51bWJlcihfLmtuKGgsIm9wYWNpdHkiKS5yZXBsYWNlKC9bXlxkLi1dL2csIiIpKSxwPU51bWJlcihfLmtuKGgsImhlaWdodCIpLnJlcGxhY2UoL1teXGQuLV0vZywiIikpLHI9Xy5abmIoaCk7cmV0dXJue2luZGljYXRvcjpoLEROOntmbGV4Om0sb3BhY2l0eTpuLHNjYWxlOk51bWJlcigoKHI/ci5oZWlnaHQ6NikvcCkudG9GaXhlZCgyKSl9LFd6OnY0ZShhLGssYil9fSkuZmlsdGVyKGg9Pnt2YXIgaz1oLkROO2g9aC5XejtyZXR1cm4hKGsub3BhY2l0eT09PWgub3BhY2l0eSYmay5zY2FsZT09PWguc2NhbGUmJmsuZmxleD09PWguZmxleCl9KSxmPXBlcmZvcm1hbmNlLm5vdygpLGc9aD0+e3ZhciBrPU1hdGgubWluKChoLWYpLzUwMCwxKTsKZS5mb3JFYWNoKG09Pnt2YXIgbj1tLmluZGljYXRvcixwPW0uRE47bT1tLld6O3ZhciByPXAub3BhY2l0eTtfLmhuKG4sIm9wYWNpdHkiLHI0ZShrLHIsbS5vcGFjaXR5LXIpKTtyPXAuc2NhbGU7Xy5obihuLCJ0cmFuc2Zvcm0iLGBzY2FsZSgke3I0ZShrLHIsbS5zY2FsZS1yKX0pYCk7cD1wLmZsZXg7Xy5obihuLCJmbGV4IixgMCAwICR7cjRlKGsscCxtLmZsZXgtcCl9cHhgKX0pO3M0ZShhLndhKCkuZWwoKSxjLGQsayk7azwxJiZyZXF1ZXN0QW5pbWF0aW9uRnJhbWUoZyl9O3JlcXVlc3RBbmltYXRpb25GcmFtZShnKX07Cl8ueTRlPWZ1bmN0aW9uKGEsYixjKXtpZigoYj09PTAmJmM9PT1hLnNpemUtMXx8Yj09PWEuc2l6ZS0xJiZjPT09MCkmJiEoYS5zaXplPD00KSl7dmFyIGQ9dTRlKGEsYyk7Zm9yKGxldCBlPWQ7ZTw9ZCszO2UrKylfLnltKGEua2EoKVtlXSwiV2dobU9kIil9Yj49YS5zaXplfHxjPj1hLnNpemV8fChhLkVhPyh3NGUoYSxiKSxfLkFtKGEua2EoKVtjXSwidjVHUEkiKSxfLnltKGEua2EoKVtiXSwidjVHUEkiKSk6KF8uQW0oYS5rYSgpW2NdLCJ2NUdQSSIpLF8ueW0oYS5rYSgpW2JdLCJ2NUdQSSIpLGEuc2l6ZTw9NHx8KF8ueDRlKGEsYiksYz11NGUoYSxiKSxiPjE/Xy55bShhLmthKClbY10sIldnaG1PZCIpOl8uQW0oYS5rYSgpW2NdLCJXZ2htT2QiKSxfLkFtKGEua2EoKVtjKzFdLCJXZ2htT2QiKSxfLkFtKGEua2EoKVtjKzJdLCJXZ2htT2QiKSxjKzM8YS5rYSgpLmxlbmd0aC0xP18ueW0oYS5rYSgpW2MrM10sIldnaG1PZCIpOl8uQW0oYS5rYSgpW2MrM10sIldnaG1PZCIpKSkpfTsKXy54NGU9ZnVuY3Rpb24oYSxiKXtiPShhLmlzUnRsPzE6LTEpKnU0ZShhLGIpKmEuQmE7YS53YSgpJiZhLndhKCkuc2V0U3R5bGUoInRyYW5zZm9ybSIsYHRyYW5zbGF0ZVgoJHtifXB4KWApfTt1NGU9ZnVuY3Rpb24oYSxiKXtyZXR1cm4gYS5zaXplPDQ/MDpfLkZkKGItMiwwLGEuc2l6ZS00KX07dDRlPWZ1bmN0aW9uKGEpe2E9Xy5qbihhLndhKCkuZWwoKSwidHJhbnNmb3JtIik7cmV0dXJuIE51bWJlcigoYT9hOiIiKS5yZXBsYWNlKC9bXlxkLi1dL2csIiIpKX07CnY0ZT1mdW5jdGlvbihhLGIsYyl7dmFyIGQ9e2ZsZXg6YS5BYT80OjYsb3BhY2l0eTooKCk9Pntzd2l0Y2goYS5vYSl7Y2FzZSAwOnJldHVybi40O2Nhc2UgMTpyZXR1cm4uNjtjYXNlIDI6cmV0dXJuIDE7ZGVmYXVsdDpyZXR1cm4gMX19KSgpLHNjYWxlOi42Nn07Yj09PWMmJihkLmZsZXg9YS5BYT8xMjoyMCxkLm9wYWNpdHk9MSk7aWYoYS5zaXplPjQpe2xldCBlPXU0ZShhLGMpO2I9PT1lJiZjPDI/ZC5zY2FsZT0xOmI9PT1lKzE/ZC5zY2FsZT0xOmI9PT1lKzI/ZC5zY2FsZT0xOmI9PT1lKzMmJmM9PT1hLnNpemUtMSYmKGQuc2NhbGU9MSl9ZWxzZSBkLnNjYWxlPTE7cmV0dXJuIGR9OwpfLno0ZT1jbGFzcyBleHRlbmRzIF8uaHN7Y29uc3RydWN0b3IoKXtzdXBlcigpO3RoaXMub2E9bnVsbDt0aGlzLndhPV8uRm4oKCk9PnRoaXMuSmEoImJWcXJpZiIpKTt0aGlzLmthPV8uRm4oKCk9PnRoaXMuSGIoInVERUZnZSIpLnRvQXJyYXkoKSk7dGhpcy5zaXplPXRoaXMua2EoKS5sZW5ndGg7dGhpcy5pc1J0bD1fLmNlKHRoaXMuZ2V0Um9vdCgpLmhiKCkpO3RoaXMuRWE9dGhpcy5nZXREYXRhKCJjIikuTGIoKTtfLkNkKHRoaXMuZ2V0RGF0YSgiYyIpLDEpPT09MT90aGlzLm9hPTE6Xy5DZCh0aGlzLmdldERhdGEoImMiKSwxKT09PTI/dGhpcy5vYT0yOl8uQ2QodGhpcy5nZXREYXRhKCJjIiksMSk9PT0zJiYodGhpcy5vYT0wKTt0aGlzLkJhPSh0aGlzLkFhPV8uQ2QodGhpcy5nZXREYXRhKCJoIiksMCk9PT0xKT82OjExfWdldFNpemUoKXtyZXR1cm4gdGhpcy5zaXplfX07Xy56NGUucHJvdG90eXBlLiR3YSRNYTJ0UWU9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5nZXRTaXplfTsKXy5qcyhfLnE0ZSxfLno0ZSk7Cl8udigpOwp9Y2F0Y2goZSl7Xy5fRHVtcEV4Y2VwdGlvbihlKX0KdHJ5ewpfLnUoImFHM3dWYyIpOwoKXy52KCk7Cn1jYXRjaChlKXtfLl9EdW1wRXhjZXB0aW9uKGUpfQp0cnl7Cl8uSEdiPWNsYXNze2NvbnN0cnVjdG9yKGEpe3RoaXMubnk9YX19Owp9Y2F0Y2goZSl7Xy5fRHVtcEV4Y2VwdGlvbihlKX0KdHJ5ewpfLnUoImFMVWZQIik7CnZhciBKR2I7Xy5JR2I9ITE7SkdiPWZ1bmN0aW9uKCl7cmV0dXJuIF8uc2EoKSYmXy5OYS5NeSgpJiYhbmF2aWdhdG9yLnVzZXJBZ2VudC5pbmNsdWRlcygiR1NBIil9OwpfLmFnKF8uellhLGNsYXNzIGV4dGVuZHMgXy5zb3tzdGF0aWMgUWEoKXtyZXR1cm57c2VydmljZTp7d2luZG93Ol8ucW99fX1jb25zdHJ1Y3RvcihhKXtzdXBlcigpO3RoaXMud2luZG93PWEuc2VydmljZS53aW5kb3cuZ2V0KCk7dGhpcy53YT10aGlzLm55KCk7dGhpcy5vYT13aW5kb3cub3JpZW50YXRpb247dGhpcy5rYT0oKT0+e3ZhciBiPXRoaXMubnkoKSxjPSJvcmllbnRhdGlvbiJpbiB3aW5kb3cmJk1hdGguYWJzKHdpbmRvdy5vcmllbnRhdGlvbik9PT05MCYmdGhpcy5vYT09PS0xKndpbmRvdy5vcmllbnRhdGlvbjt0aGlzLm9hPXdpbmRvdy5vcmllbnRhdGlvbjtpZihiIT09dGhpcy53YXx8Yyl7dGhpcy53YT1iO2ZvcihsZXQgZCBvZiB0aGlzLlRkKXtjPW5ldyBfLkhHYihiKTt0cnl7ZChjKX1jYXRjaChlKXtfLmZhKGUpfX19fTt0aGlzLlRkPW5ldyBTZXQ7dGhpcy53aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigicmVzaXplIix0aGlzLmthKTsib3JpZW50YXRpb24iaW4gd2luZG93JiYKdGhpcy53aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigib3JpZW50YXRpb25jaGFuZ2UiLHRoaXMua2EpfWFkZExpc3RlbmVyKGEpe3RoaXMuVGQuYWRkKGEpfXJlbW92ZUxpc3RlbmVyKGEpe3RoaXMuVGQuZGVsZXRlKGEpfW55KCl7aWYoSkdiKCkpe3ZhciBhPV8uZ2kodGhpcy53aW5kb3cpO2E9bmV3IF8uTGQoYS53aWR0aCxNYXRoLnJvdW5kKGEud2lkdGgqdGhpcy53aW5kb3cuaW5uZXJIZWlnaHQvdGhpcy53aW5kb3cuaW5uZXJXaWR0aCkpfWVsc2UgYT10aGlzLktjKCl8fChfLnNhKCk/SkdiKCk6dGhpcy53aW5kb3cudmlzdWFsVmlld3BvcnQpP18uZ2kodGhpcy53aW5kb3cpOm5ldyBfLkxkKHRoaXMud2luZG93LmlubmVyV2lkdGgsdGhpcy53aW5kb3cuaW5uZXJIZWlnaHQpO3JldHVybiBhLmhlaWdodDxhLndpZHRofWRlc3Ryb3koKXt0aGlzLndpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCJyZXNpemUiLHRoaXMua2EpO3RoaXMud2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoIm9yaWVudGF0aW9uY2hhbmdlIiwKdGhpcy5rYSl9S2MoKXtyZXR1cm4gXy5JR2J9fSk7Cl8uSUdiPSEwOwpfLnYoKTsKfWNhdGNoKGUpe18uX0R1bXBFeGNlcHRpb24oZSl9CnRyeXsKXy51KCJ3UWxZdmUiKTsKXy5TdT1uZXcgXy5UZihfLlFxKTsKXy52KCk7Cn1jYXRjaChlKXtfLl9EdW1wRXhjZXB0aW9uKGUpfQp0cnl7CnZhciBXNWUsWDVlLFo1ZSxiNmUsZDZlLGU2ZSxmNmU7VzVlPWZ1bmN0aW9uKGEsYixjKXtWNWUuY2FsbCh0aGlzLGIsYywxKTt0aGlzLlJhPWE7dGhpcy5aYT1uZXcgXy5PNWV9O1g1ZT1mdW5jdGlvbihhLGIsYyl7VjVlLmNhbGwodGhpcyxiLGMsMik7dGhpcy5SYT1hfTtfLlk1ZT1mdW5jdGlvbihhKXt0aGlzLkFhPWE7dGhpcy5RYz10aGlzLkFhLkphKCk7dGhpcy5vYT17fTt0aGlzLndhPXt9O3RoaXMua2E9W119O1o1ZT0wO18uR009ZnVuY3Rpb24oYSl7cmV0dXJuIGErIl8iK1o1ZSsrfTtfLiQ1ZT1mdW5jdGlvbihhLGIsYyxkKXt2YXIgZT1kb2N1bWVudC5jcmVhdGVFdmVudCgiSFRNTEV2ZW50cyIpO2UuaW5pdEV2ZW50KGIsITAsITApO2Uuc2VuZGVyPWM7ZS5leHRyYUFyZz1kO2EuZGlzcGF0Y2hFdmVudChlKX07Xy5hNmU9ZnVuY3Rpb24oYSxiLGMsZCl7cmV0dXJuIGE8PDIxfGI8PDE0fGM8PDd8ZH07YjZlPS9PUyAoXGQrKV8oXGQrKSg/Ol8oXGQrKSk/LzsKXy5jNmU9ZnVuY3Rpb24oKXt2YXIgYT1iNmUuZXhlYyhuYXZpZ2F0b3IudXNlckFnZW50KXx8W107YS5zaGlmdCgpO3JldHVybiBfLmE2ZS5hcHBseShudWxsLGEpfTtkNmU9ZnVuY3Rpb24oYSl7cmV0dXJuKF8udjVlP1thXTphLmNoYW5nZWRUb3VjaGVzKXx8W119O2U2ZT1mdW5jdGlvbihhKXtyZXR1cm4gXy52NWU/YS5wb2ludGVySWQ6YS5pZGVudGlmaWVyfTt2YXIgVjVlPWZ1bmN0aW9uKGEsYixjKXt0aGlzLk9hPWE7dGhpcy5QYT1iO3RoaXMud2E9Yzt0aGlzLm9hPVtdO3RoaXMuQmE9W107dGhpcy5LYT1bXTt0aGlzLk5hPVtdO3RoaXMuRWE9W107dGhpcy5HYT1bXX0saDZlO1Y1ZS5wcm90b3R5cGUua2E9MDt2YXIgZzZlPWZ1bmN0aW9uKGEsYil7Yj1kNmUoYik7dmFyIGM9Yi5sZW5ndGg7Zm9yKGxldCBlPTA7ZTxhLmthO2UrKyl7YS5CYVtlXT12b2lkIDA7Zm9yKGxldCBmPTA7ZjxjO2YrKylpZihhLm9hW2VdPT1lNmUoYltmXSkpe2EuQmFbZV09YltmXTt2YXIgZD0hMDticmVha319cmV0dXJuIGR9OwpWNWUucHJvdG90eXBlLm9uVG91Y2hTdGFydD1mdW5jdGlvbihhKXtpZighdGhpcy5JYSYmdGhpcy5rYSE9dGhpcy53YSl7dmFyIGI9ZDZlKGEpLGM9TWF0aC5taW4oYi5sZW5ndGgsdGhpcy53YS10aGlzLmthKTtmb3IobGV0IGQ9MDtkPGM7ZCsrKXtsZXQgZT1iW2RdO3RoaXMub2FbdGhpcy5rYV09ZTZlKGUpO3RoaXMuRWFbdGhpcy5rYV09ZS5jbGllbnRYO3RoaXMuR2FbdGhpcy5rYV09ZS5jbGllbnRZO3RoaXMua2ErK31nNmUodGhpcyxhKTtpZih0aGlzLmthPT10aGlzLndhKWZvcihiPTA7Yjx0aGlzLndhO2IrKyl0aGlzLkthW2JdPXRoaXMuTmFbYl09MDt0aGlzLkliKGEpfX07ClY1ZS5wcm90b3R5cGUub25Ub3VjaE1vdmU9ZnVuY3Rpb24oYSl7aWYoIXRoaXMuSWEmJnRoaXMua2E9PXRoaXMud2EmJmc2ZSh0aGlzLGEpKWlmKHRoaXMuQWEpdGhpcy5uYihhKTtlbHNle2ZvcihsZXQgYz0wO2M8dGhpcy53YTtjKyspe2xldCBkPXRoaXMuQmFbY107aWYoIWQpY29udGludWU7bGV0IGU9dGhpcy5vYVtjXSxmPXRoaXMuUGFbZV0tZC5jbGllbnRZO3RoaXMuS2FbY10rPU1hdGguYWJzKHRoaXMuT2FbZV0tZC5jbGllbnRYKTt0aGlzLk5hW2NdKz1NYXRoLmFicyhmKTt2YXIgYj1ifHx0aGlzLkthW2NdPjJ8fHRoaXMuTmFbY10+Mn1pZihiKXtmb3IoYj0wO2I8dGhpcy53YTtiKyspdGhpcy5FYVtiXT1oNmUodGhpcyxiKSx0aGlzLkdhW2JdPV8uaTZlKHRoaXMsYik7KHRoaXMuQWE9dGhpcy5GYihhKSk/dGhpcy5uYihhKTp0aGlzLnJlc2V0KCl9fX07ClY1ZS5wcm90b3R5cGUub25Ub3VjaEVuZD1mdW5jdGlvbihhKXtpZighdGhpcy5JYSYmdGhpcy5rYT4wJiZnNmUodGhpcyxhKSl7dGhpcy5BYSYmdGhpcy5xNihhKTthPXRoaXMua2E7dmFyIGI9MDtmb3IobGV0IGM9MDtjPGE7YysrKXRoaXMuQmFbY10mJih0aGlzLm9hLnNwbGljZShjLWIsMSksdGhpcy5rYS0tLHRoaXMuQWE9ITEsYisrKX19O1Y1ZS5wcm90b3R5cGUucmVzZXQ9ZnVuY3Rpb24oKXt0aGlzLmthPTA7dGhpcy5JYT10aGlzLkFhPSExfTtoNmU9ZnVuY3Rpb24oYSxiKXtiPWJ8fDA7dmFyIGM9YS5CYVtiXTtyZXR1cm4gYz9jLmNsaWVudFg6YS5PYVthLm9hW2J8fDBdXX07Xy5pNmU9ZnVuY3Rpb24oYSxiKXtiPWJ8fDA7dmFyIGM9YS5CYVtiXTtyZXR1cm4gYz9jLmNsaWVudFk6YS5QYVthLm9hW2J8fDBdXX07Xy5VaShXNWUsVjVlKTtXNWUucHJvdG90eXBlLkliPWZ1bmN0aW9uKGEpe18uUDVlKHRoaXMuWmEsdGhpcy5FYVswXSx0aGlzLkdhWzBdLGEudGltZVN0YW1wKTt0aGlzLnJiPXRoaXMuRWFbMF07dGhpcy5TYT10aGlzLkdhWzBdfTtXNWUucHJvdG90eXBlLkZiPWZ1bmN0aW9uKGEpe3JldHVybiB0aGlzLlJhLm9uRHJhZ1N0YXJ0KGEpfTtXNWUucHJvdG90eXBlLm5iPWZ1bmN0aW9uKGEpe3RoaXMucmI9dGhpcy5FYVswXTt0aGlzLlNhPXRoaXMuR2FbMF07Xy5TNWUodGhpcy5aYSxoNmUodGhpcyksXy5pNmUodGhpcyksYS50aW1lU3RhbXApO3RoaXMuUmEuSmIoKTthLnByZXZlbnREZWZhdWx0KCl9OwpXNWUucHJvdG90eXBlLnE2PWZ1bmN0aW9uKGEpe2EmJih0aGlzLkFiPV8uVDVlKHRoaXMuWmEsdGhpcy5PYVt0aGlzLm9hWzBdXSx0aGlzLlBhW3RoaXMub2FbMF1dLGEudGltZVN0YW1wKXx8dm9pZCAwLGEucHJldmVudERlZmF1bHQoKSk7dGhpcy5SYS5vbkRyYWdFbmQoYSk7dmFyIGI9dGhpcy5FYVswXSxjPXRoaXMuR2FbMF0sZDtpZihkPWEpZjZlPT09dm9pZCAwJiYoZjZlPV8uYzZlKCk+PV8uYTZlKDYpfHwhMCksZD1mNmU7ZD9hLnByZXZlbnREZWZhdWx0KCk6Xy5ONWUoYixjKX07Xy5qNmU9ZnVuY3Rpb24oYSl7cmV0dXJuIGg2ZShhKS1hLnJifTtfLms2ZT1mdW5jdGlvbihhKXtyZXR1cm4gTWF0aC5hYnMoXy5pNmUoYSktYS5TYSk+TWF0aC5hYnMoXy5qNmUoYSkpfTtfLlVpKFg1ZSxWNWUpO1g1ZS5wcm90b3R5cGUuSWI9KCk9Pnt9O1g1ZS5wcm90b3R5cGUuRmI9ZnVuY3Rpb24oYSl7cmV0dXJuIHRoaXMuUmEud2EoYSl9O1g1ZS5wcm90b3R5cGUubmI9ZnVuY3Rpb24oYSl7dGhpcy5SYS5vYShhKTthLnByZXZlbnREZWZhdWx0KCl9O1g1ZS5wcm90b3R5cGUucTY9ZnVuY3Rpb24oYSl7dGhpcy5SYS5rYShhKTthJiZhLnByZXZlbnREZWZhdWx0KCl9O3ZhciBsNmU7bDZlPVtXNWUsWDVlXTtfLm02ZT1mdW5jdGlvbihhLGIpe3ZhciBjPWEua2FbMF07aWYoYylyZXR1cm4gYztjPW5ldyBsNmVbMF0oYixhLm9hLGEud2EpO3JldHVybiBhLmthWzBdPWN9OwpfLlk1ZS5wcm90b3R5cGUuR2E9ZnVuY3Rpb24oYSl7dmFyIGI9YS50b3VjaGVzfHxbYV0sYz1iLmxlbmd0aDtmb3IodmFyIGQgaW4gdGhpcy5vYSl7dmFyIGU9dm9pZCAwO2Zvcih2YXIgZj0wO2Y8YztmKyspaWYoZD09ZTZlKGJbZl0pKXtlPSEwO2JyZWFrfWV8fG42ZSh0aGlzLCtkKX1iPWQ2ZShhKTtjPWIubGVuZ3RoO2ZvcihkPTA7ZDxjO2QrKyllPWU2ZShiW2RdKSx0aGlzLm9hW2VdIT09dm9pZCAwJiZuNmUodGhpcywrZSk7Yz0hMDtiPXRoaXMua2EubGVuZ3RoO2ZvcihkPTA7ZDxiO2QrKylpZigoZT10aGlzLmthW2RdKSYmZS5rYSE9ZS53YSl7Yz0hMTticmVha31pZighYyYmdGhpcy5BYS5vblRvdWNoU3RhcnQoYSkpe2M9ZDZlKGEpO2Q9Yy5sZW5ndGg7Zm9yKGU9MDtlPGQ7ZSsrKXtmPWNbZV07bGV0IGc9ZTZlKGYpO3RoaXMub2FbZ109Zi5jbGllbnRYO3RoaXMud2FbZ109Zi5jbGllbnRZfWZvcihjPTA7YzxiO2MrKylpZihkPXRoaXMua2FbY10pZC5vblRvdWNoU3RhcnQoYSl9fTsKXy5ZNWUucHJvdG90eXBlLkVhPWZ1bmN0aW9uKGEpe3ZhciBiPSEwLGM9dGhpcy5rYS5sZW5ndGg7Zm9yKHZhciBkPTA7ZDxjO2QrKyl7dmFyIGU9dGhpcy5rYVtkXTtpZihlJiZlLmthPjApe2I9ITE7YnJlYWt9fWlmKCFiKXtmb3IoYj0wO2I8YztiKyspaWYoZD10aGlzLmthW2JdKWQub25Ub3VjaE1vdmUoYSk7YT1kNmUoYSk7Yz1hLmxlbmd0aDtmb3IoYj0wO2I8YztiKyspZD1hW2JdLGU9ZTZlKGQpLHRoaXMub2FbZV0hPT12b2lkIDAmJih0aGlzLm9hW2VdPWQuY2xpZW50WCx0aGlzLndhW2VdPWQuY2xpZW50WSl9fTsKXy5ZNWUucHJvdG90eXBlLkJhPWZ1bmN0aW9uKGEpe3ZhciBiPWQ2ZShhKSxjPWIubGVuZ3RoO2Zvcih2YXIgZD0wO2Q8YztkKyspaWYodGhpcy5vYVtlNmUoYltkXSldIT09dm9pZCAwKXt0aGlzLkFhLm9uVG91Y2hFbmQoYSk7dmFyIGU9ITB9aWYoZSl7ZT10aGlzLmthLmxlbmd0aDtmb3IoZD0wO2Q8ZTtkKyspe2xldCBmPXRoaXMua2FbZF07aWYoZilmLm9uVG91Y2hFbmQoYSl9Zm9yKGE9MDthPGM7YSsrKWU9ZTZlKGJbYV0pLHRoaXMub2FbZV0hPT12b2lkIDAmJihkZWxldGUgdGhpcy5vYVtlXSxkZWxldGUgdGhpcy53YVtlXSl9fTsKdmFyIG42ZT1mdW5jdGlvbihhLGIpe2EuQWEub25Ub3VjaEVuZChudWxsKTt2YXIgYz1hLmthLmxlbmd0aDtmb3IobGV0IGU9MDtlPGM7ZSsrKXtsZXQgZj1hLmthW2VdO2lmKGYpe3ZhciBkPXZvaWQgMDtpZighZi5JYSYmZi5rYT4wKXtmb3IobGV0IGc9MDtnPGYua2E7ZysrKWlmKGYub2FbZ109PWIpe2Q9ZzticmVha31kIT09dm9pZCAwJiYoZi5BYSYmZi5xNihudWxsKSxmLm9hLnNwbGljZShkLDEpLGYua2EtLSxmLkFhPSExKX19fWRlbGV0ZSBhLm9hW2JdO2RlbGV0ZSBhLndhW2JdfTsKXy5ZNWUucHJvdG90eXBlLmVuYWJsZT1mdW5jdGlvbihhLGIpe3ZhciBjPSgwLF8uaWUpKHRoaXMuQmEsdGhpcyksZD10aGlzLlFjLGU9KDAsXy5pZSkodGhpcy5HYSx0aGlzKSxmPSgwLF8uaWUpKHRoaXMuRWEsdGhpcyksZz1jO18udTVlfHxfLnY1ZXx8KGU9Xy5INWUoZSksZj1fLkg1ZShmKSxnPV8uSDVlKGcpKTthPSEhYTtfLkVNKGQsXy53NWUsZSxhLGIpO18uRU0oZCxfLng1ZSxmLGEsYik7Xy5FTShkLF8ueTVlLGcsYSxiKTtfLkVNKGQsXy56NWUsYyxhLGIpfTtfLlk1ZS5wcm90b3R5cGUucmVzZXQ9ZnVuY3Rpb24oKXtmb3IodmFyIGEgaW4gdGhpcy5vYSlkZWxldGUgdGhpcy5vYVtOdW1iZXIoYSldLGRlbGV0ZSB0aGlzLndhW051bWJlcihhKV07Zm9yKGE9MDthPHRoaXMua2EubGVuZ3RoO2ErKyl7bGV0IGI9dGhpcy5rYVthXTtiJiZiLnJlc2V0KCl9fTsKfWNhdGNoKGUpe18uX0R1bXBFeGNlcHRpb24oZSl9CnRyeXsKdmFyIGo1ZSxrNWU7Xy5pNWU9ZnVuY3Rpb24oYSl7YT1kb2N1bWVudC5kZWZhdWx0Vmlldy5nZXRDb21wdXRlZFN0eWxlKGEsbnVsbClbXy5oNWVdO3JldHVybiB0eXBlb2YgV2ViS2l0Q1NTTWF0cml4IT0idW5kZWZpbmVkIj9uZXcgV2ViS2l0Q1NTTWF0cml4KGEpOnR5cGVvZiBNU0NTU01hdHJpeCE9InVuZGVmaW5lZCI/bmV3IE1TQ1NTTWF0cml4KGEpOnR5cGVvZiBDU1NNYXRyaXghPSJ1bmRlZmluZWQiP25ldyBDU1NNYXRyaXgoYSk6e319O2o1ZT1fLiRpPyItbXMtIjpfLk9kPyItbW96LSI6Xy5WQmE/Xy5uYShfLmlDYSwiMTUuMCIpPDA/Ii1vLSI6Ii13ZWJraXQtIjoiLXdlYmtpdC0iO2s1ZT1fLiRpPyJtcyI6Xy5PZD8iTW96IjpfLlZCYT9fLm5hKF8uaUNhLCIxNS4wIik8MD8iTyI6IndlYmtpdCI6IndlYmtpdCI7Xy5sNWU9ajVlKyJ0cmFuc2Zvcm0iO18uaDVlPWs1ZSsiVHJhbnNmb3JtIjtfLm01ZT1rNWUrIlRyYW5zaXRpb24iO3ZhciBuNWU7bjVlPSJXZWJLaXRDU1NNYXRyaXgiaW4gd2luZG93JiYibTExImluIG5ldyBXZWJLaXRDU1NNYXRyaXgoIiIpO18ubzVlPV8uTmQ/IndlYmtpdFRyYW5zaXRpb25FbmQiOiJ0cmFuc2l0aW9uZW5kIjtfLnA1ZT1mdW5jdGlvbihhLGIsYyxkKXthLnN0eWxlW18ubTVlXT0oY3x8Xy5sNWUpKyIgIitiKyJtcyAiKyhkfHwiZWFzZS1pbi1vdXQiKX07Xy5xNWU9ZnVuY3Rpb24oYSxiLGMpe2I9dHlwZW9mIGI9PT0ibnVtYmVyIj9iKyJweCI6Ynx8IjAiO2M9dHlwZW9mIGM9PT0ibnVtYmVyIj9jKyJweCI6Y3x8IjAiO2Euc3R5bGVbXy5oNWVdPW41ZT8idHJhbnNsYXRlM2QoIitiKyIsIitjKyIsMCkiOiJ0cmFuc2xhdGUoIitiKyIsIitjKyIpIn07Cn1jYXRjaChlKXtfLl9EdW1wRXhjZXB0aW9uKGUpfQp0cnl7CnZhciByNmU9ZnVuY3Rpb24oYSxiLGMsZCl7aWYoXy5JZChiLDApKXJldHVybiBvNmU7Xy5JZChhLGIpP2E9WzAsMF06KGI9KGQtYypiKS8oYS1iKSxhPVtiLGIqYV0pO2E9W2FbMF0vYyxhWzFdL2RdO2M9YVswXSpwNmU7ZD1hWzFdKnA2ZTtyZXR1cm5bYyxkLGMrcTZlLGQrcTZlXX0sczZlPWZ1bmN0aW9uKCl7fSx0NmU9ZnVuY3Rpb24oYSxiLGMsZCxlLGYsZyxoKXtiPSJ0cmFuc2xhdGUzZCgiK2IrInB4LCIrYysicHgsIisoZHx8MCkrInB4KSI7ZSYmKGIrPSIgcm90YXRlKCIrZSsiZGVnKSIpO2YhPT12b2lkIDAmJihiKz0iIHNjYWxlM2QoIitmKyIsIitmKyIsMSkiKTthLnN0eWxlW18uaDVlXT1iO2cmJihhLnN0eWxlW18uaDVlKyJPcmlnaW5YIl09ZysicHgiKTtoJiYoYS5zdHlsZVtfLmg1ZSsiT3JpZ2luWSJdPWgrInB4Iil9LHU2ZT1mdW5jdGlvbihhLGIsYyl7YS5zdHlsZS5sZWZ0PWIrInB4IjthLnN0eWxlLnRvcD1jKyJweCJ9O3ZhciB2NmU9ZnVuY3Rpb24oKXt0aGlzLlJhPSgwLF8uaWUpKHRoaXMuWmEsdGhpcyk7dGhpcy5CYT10aGlzLkVhPTB9LHc2ZT03LzYwLHg2ZT03LzYwLHk2ZT0xRTMvNjAsejZlPS4yNSp5NmUsQTZlPS4wMSp5NmU7Xy5hYT12NmUucHJvdG90eXBlOwpfLmFhLnN0YXJ0PWZ1bmN0aW9uKGEsYixjLGQpe3RoaXMuSWE9Yjt0aGlzLkdhPWM7dGhpcy5rYT1kLmNsb25lKCk7dGhpcy5BYT1kLmNsb25lKCk7Yj1CNmUoYS54LHRoaXMua2EueCx0aGlzLklhLngsdGhpcy5HYS54KTtpZihiKmEueDwwfHwhYS54JiZiKXRoaXMuQmE9MjtjPUI2ZShhLnksdGhpcy5rYS55LHRoaXMuSWEueSx0aGlzLkdhLnkpO2lmKGMqYS55PDB8fCFhLnkmJmMpdGhpcy5FYT0yO3RoaXMub2E9bmV3IF8uS2QoYixjKTtpZihNYXRoLmFicyh0aGlzLm9hLnkpPj16NmV8fE1hdGguYWJzKHRoaXMub2EueCk+PXo2ZXx8dGhpcy5CYXx8dGhpcy5FYSl7YT1bXTtmb3IoYj1EYXRlLm5vdygpOzspe2RvIHRoaXMua2EueSs9dGhpcy5vYS55LHRoaXMua2EueCs9dGhpcy5vYS54LHRoaXMuTmE9TWF0aC5yb3VuZCh0aGlzLmthLnkpLHRoaXMuS2E9TWF0aC5yb3VuZCh0aGlzLmthLngpLEM2ZSh0aGlzLHRoaXMua2EueCx0aGlzLklhLngsdGhpcy5HYS54LHRoaXMub2EueCwKdGhpcy5CYSwhMSksQzZlKHRoaXMsdGhpcy5rYS55LHRoaXMuSWEueSx0aGlzLkdhLnksdGhpcy5vYS55LHRoaXMuRWEsITApLGIrPXk2ZTt3aGlsZSh0aGlzLk5hPT10aGlzLkFhLnkmJnRoaXMuS2E9PXRoaXMuQWEueCYmKE1hdGguYWJzKHRoaXMub2EueSk+PUE2ZXx8TWF0aC5hYnModGhpcy5vYS54KT49QTZlKSk7aWYodGhpcy5CYT09MCYmdGhpcy5FYT09MCYmdGhpcy5OYT09dGhpcy5BYS55JiZ0aGlzLkthPT10aGlzLkFhLngpYnJlYWs7YS5wdXNoKGIsdGhpcy5LYSx0aGlzLk5hKTt0aGlzLkFhLnk9dGhpcy5OYTt0aGlzLkFhLng9dGhpcy5LYX10aGlzLndhPWE7aWYodGhpcy53YS5sZW5ndGgpcmV0dXJuIHRoaXMuU2E9d2luZG93LnNldFRpbWVvdXQodGhpcy5SYSx0aGlzLndhWzBdLURhdGUubm93KCkpLHRoaXMuT2E9ITB9fTtfLmFhLm9uVHJhbnNpdGlvbkVuZD0oKT0+e307Cl8uYWEuc3RvcD1mdW5jdGlvbigpe3RoaXMuT2E9ITE7dGhpcy53YT1bXTt3aW5kb3cuY2xlYXJUaW1lb3V0KHRoaXMuU2EpO0Q2ZSh0aGlzLlBhKX07Xy5hYS55aGI9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5PYX07Xy5hYS5pN2I9ZnVuY3Rpb24oYSl7dGhpcy5QYT1hfTt2YXIgQjZlPWZ1bmN0aW9uKGEsYixjLGQpe2E9YSp5NmUqMS4yNTtNYXRoLmFicyhhKTx6NmUmJihiPGM/KGE9KGMtYikqeDZlLGE9TWF0aC5tYXgoYSxBNmUpKTpiPmQmJihhPShiLWQpKng2ZSxhPS1NYXRoLm1heChhLEE2ZSkpKTtyZXR1cm4gYX0sQzZlPWZ1bmN0aW9uKGEsYixjLGQsZSxmLGcpe2lmKGUpe2UqPS45Nzt2YXIgaDtiPGM/aD1jLWI6Yj5kJiYoaD1kLWIpO2g/aCplPDA/KGY9Zj09Mj8wOjEsZSs9aCp3NmUpOihmPTIsZT1oPjA/TWF0aC5tYXgoaCp4NmUsQTZlKTpNYXRoLm1pbihoKng2ZSwtQTZlKSk6Zj0wO2c/KGEub2EueT1lLGEuRWE9Zik6KGEub2EueD1lLGEuQmE9Zil9fTsKdjZlLnByb3RvdHlwZS5aYT1mdW5jdGlvbigpe2lmKHRoaXMud2EubGVuZ3RoKXt2YXIgYT10aGlzLndhLnNwbGljZSgwLDMpO3RoaXMuUGEuSWIoYVsxXSxhWzJdKTt0aGlzLndhLmxlbmd0aD8oYT10aGlzLndhWzBdLURhdGUubm93KCksdGhpcy5TYT13aW5kb3cuc2V0VGltZW91dCh0aGlzLlJhLGEpKTp0aGlzLnN0b3AoKX19O3ZhciBxNmU9MS8zLHA2ZT0yLzMsbzZlPVtxNmUscDZlLHA2ZSwxXTt2YXIgRTZlPWZ1bmN0aW9uKCl7dGhpcy5rYT1bXX07RTZlLnByb3RvdHlwZS5CYT0tNUUtNDsKRTZlLnByb3RvdHlwZS5zdGFydD1mdW5jdGlvbihhLGIsYyxkKXt2YXIgZT1NYXRoLmFicyhhLnkpPj1NYXRoLmFicyhhLngpLGY9ZT9hLnk6YS54O2E9ZT9iLnk6Yi54O3ZhciBnPWU/Yy55OmMueCxoPWU/ZC55OmQueDtiPV8uRmQoZT9kLng6ZC55LGU/Yi54OmIueSxlP2MueDpjLnkpO2lmKGg8YXx8aD5nKWE9aDxhP2E6Zyx0aGlzLmthLnB1c2goZT9iOmEsZT9hOmIsNTAwLCJlYXNlLW91dCIpO2Vsc2UgaWYoTWF0aC5hYnMoZik+PS4yNSl7ZD0oYz1mPDApPy10aGlzLkJhOnRoaXMuQmE7dmFyIGs9Yz9hLWg6Zy1oLG09ZjtpZihrKXttPWYqZjtsZXQgbj0yKmQscD0tbS9uO01hdGguYWJzKHApPE1hdGguYWJzKGspPyhrPXAsbT0wKToobT1NYXRoLnNxcnQobStuKmspLG0qPWY8MD8tMToxKTt0aGlzLkdhPW07dGhpcy5vYT0obS1mKS9kO3RoaXMuRWE9aztmPSJjdWJpYy1iZXppZXIoIityNmUoZix0aGlzLkdhLHRoaXMub2EsdGhpcy5FYSkuam9pbigiLCIpKyIpIjtoKz10aGlzLkVhOwp0aGlzLmthLnB1c2goZT9iOmgsZT9oOmIsdGhpcy5vYSxmKTttPXRoaXMuR2F9bSE9MCYmKGE9Yz9hOmcsaD1tKjUwLGc9YStoLHRoaXMub2E9aCoyL20sZj0iY3ViaWMtYmV6aWVyKCIrcjZlKG0sMCx0aGlzLm9hLGgpLmpvaW4oIiwiKSsiKSIsdGhpcy5rYS5wdXNoKGU/YjpnLGU/ZzpiLHRoaXMub2EsZiksdGhpcy5rYS5wdXNoKGU/YjphLGU/YTpiLDUwMCwiZWFzZS1vdXQiKSl9aWYodGhpcy5rYS5sZW5ndGgpcmV0dXJuIHRoaXMud2E9ITAsRjZlKHRoaXMpLCEwfTt2YXIgRjZlPWZ1bmN0aW9uKGEpe3ZhciBiPWEua2EsYz1iLnNoaWZ0KCksZD1iLnNoaWZ0KCksZT1iLnNoaWZ0KCk7Yj1iLnNoaWZ0KCk7YS5BYS5JYihjLGQsZSxiKX07RTZlLnByb3RvdHlwZS5vblRyYW5zaXRpb25FbmQ9ZnVuY3Rpb24oKXt0aGlzLndhJiYodGhpcy5rYS5sZW5ndGg/RjZlKHRoaXMpOih0aGlzLndhPSExLEQ2ZSh0aGlzLkFhKSkpfTsKRTZlLnByb3RvdHlwZS5zdG9wPWZ1bmN0aW9uKCl7dGhpcy53YT0hMTt0aGlzLmthPVtdO0Q2ZSh0aGlzLkFhKX07RTZlLnByb3RvdHlwZS55aGI9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy53YX07RTZlLnByb3RvdHlwZS5pN2I9ZnVuY3Rpb24oYSl7dGhpcy5BYT1hfTtfLkc2ZT1uZXcgczZlO3M2ZS5wcm90b3R5cGUua2E9MTt2YXIgTTZlLEg2ZSxRNmU7Cl8uSE09ZnVuY3Rpb24oYSxiLGMsZCxlLGYpe3RoaXMuUWM9YTt0aGlzLlJhPWEucGFyZW50Tm9kZTt0aGlzLlFjLmFkZEV2ZW50TGlzdGVuZXIoXy5vNWUsKDAsXy5pZSkodGhpcy5vblRyYW5zaXRpb25FbmQsdGhpcyksITEpO3RoaXMuQWI9bmV3IF8uWTVlKHRoaXMpO3RoaXMuQWIuZW5hYmxlKCExKTt0aGlzLkJhPV8ubTZlKHRoaXMuQWIsdGhpcyk7c3dpdGNoKF8uRzZlLmthKXtjYXNlIDA6dmFyIGc9bmV3IHY2ZTticmVhaztjYXNlIDE6Zz1uZXcgRTZlfWcuaTdiKHRoaXMpO3RoaXMuQWE9Zzt0aGlzLnJiPSEhYjt0aGlzLlFiPSEhYzt0aGlzLkdhPWR8fDE7dGhpcy5vYT1INmUuY2xvbmUoKTt0aGlzLklhPUg2ZS5jbG9uZSgpO3RoaXMuWmE9SDZlLmNsb25lKCk7dGhpcy5rYT1INmUuY2xvbmUoKTt0aGlzLm5iPXRoaXMuR2E9PTE/dDZlOnU2ZTthPWYhPT12b2lkIDA/Zjp0aGlzLm9hLnk7dGhpcy5rYS54PWUhPT12b2lkIDA/ZTp0aGlzLm9hLng7dGhpcy5rYS55PWE7dGhpcy5HYT0KZT10aGlzLkdhO3RoaXMubmI9ZT09MT90NmU6dTZlO2UhPTEmJih0aGlzLlFjLnN0eWxlW18ubTVlXT0iIix0aGlzLlFjLnN0eWxlW18uaDVlXT0iIik7ZSE9MiYmdTZlKHRoaXMuUWMsMCwwKTt0aGlzLm5iKHRoaXMuUWMsdGhpcy5rYS54LHRoaXMua2EueSk7dGhpcy5GYj1bXX07Xy5JNmU9Xy5HTSgic2Nyb2xsZXI6c2Nyb2xsX3N0YXJ0Iik7Xy5KNmU9Xy5HTSgic2Nyb2xsZXI6c2Nyb2xsX2VuZCIpO18uSzZlPV8uR00oInNjcm9sbGVyOmRyYWdfZW5kIik7Xy5MNmU9Xy5HTSgic2Nyb2xsZXI6Y29udGVudF9tb3ZlZCIpO002ZT1fLkdNKCJzY3JvbGxlcjpkZWNlbF9zdGFydCIpO0g2ZT1uZXcgXy5LZCgwLDApO18uSE0ucHJvdG90eXBlLldpPW51bGw7Cl8uSE0ucHJvdG90eXBlLnJlc2V0PWZ1bmN0aW9uKCl7dGhpcy5zdG9wKCk7dGhpcy5CYS5yZXNldCgpO042ZSh0aGlzLHRoaXMuUWMsMCk7Xy5PNmUodGhpcyk7Xy5QNmUodGhpcyxfLmNlKGRvY3VtZW50LmJvZHkpP3RoaXMud2EueDp0aGlzLm9hLngsdGhpcy5vYS55KX07Cl8uTzZlPWZ1bmN0aW9uKGEpe2EuRWE9bmV3IF8uTGQoYS5SYS5vZmZzZXRXaWR0aCxhLlJhLm9mZnNldEhlaWdodCk7YS5QYT1uZXcgXy5MZChhLmhjfHxhLlFjLnNjcm9sbFdpZHRoLGEuWGJ8fGEuUWMuc2Nyb2xsSGVpZ2h0KTt2YXIgYj1uZXcgXy5MZChNYXRoLm1heChhLkVhLndpZHRoLGEuUGEud2lkdGgpLE1hdGgubWF4KGEuRWEuaGVpZ2h0LGEuUGEuaGVpZ2h0KSksYz1fLmNlKGRvY3VtZW50LmJvZHkpO2lmKGMpe3ZhciBkPWIud2lkdGgtYS5FYS53aWR0aDtkPWEuSWEueD9NYXRoLm1pbihkLGEuSWEueCk6ZH1lbHNlIGQ9SDZlLngtYS5JYS54O2Eub2E9bmV3IF8uS2QoZCxINmUueS1hLklhLnkpO2Eud2E9bmV3IF8uS2QoYz9hLlphLng6TWF0aC5taW4oYS5FYS53aWR0aC1iLndpZHRoK2EuWmEueCxhLm9hLngpLE1hdGgubWluKGEuRWEuaGVpZ2h0LWIuaGVpZ2h0K2EuWmEueSxhLm9hLnkpKTtRNmUoYSl9OwpRNmU9ZnVuY3Rpb24oYSl7dmFyIGI9Xy5GZChhLmthLngsYS53YS54LGEub2EueCksYz1fLkZkKGEua2EueSxhLndhLnksYS5vYS55KTthLmthLng9PWImJmEua2EueT09Y3x8Xy5QNmUoYSxiLGMpfTtfLkhNLnByb3RvdHlwZS5Ocj1mdW5jdGlvbigpe3JldHVybiB0aGlzLmthLnl9O18uSE0ucHJvdG90eXBlLkNwPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMua2EueH07Xy5QNmU9ZnVuY3Rpb24oYSxiLGMpe2Eua2EueD1iO2Eua2EueT1jO2EubmIoYS5RYyxiLGMpO18uJDVlKGEuUWMsXy5MNmUsYSl9O18uSE0ucHJvdG90eXBlLkthPWZ1bmN0aW9uKGEsYixjLGQpe2MhPT12b2lkIDAmJnRoaXMuR2E9PTEmJk42ZSh0aGlzLHRoaXMuUWMsYyxfLmw1ZSxkKTtfLlA2ZSh0aGlzLGEsYil9O18uSE0ucHJvdG90eXBlLm9uVHJhbnNpdGlvbkVuZD1mdW5jdGlvbihhKXthLnRhcmdldD09dGhpcy5RYyYmKHRoaXMuT2E9ITEsdGhpcy5BYS5vblRyYW5zaXRpb25FbmQoKSl9OwpfLkhNLnByb3RvdHlwZS5zdG9wPWZ1bmN0aW9uKCl7aWYodGhpcy5BYS55aGIoKSlpZih0aGlzLkdhPT0yKXRoaXMuQWEuc3RvcCgpO2Vsc2V7dmFyIGE9Xy5pNWUodGhpcy5RYyk7aWYodGhpcy5PYSl7dGhpcy5rYS54PWEubTQxO3RoaXMua2EueT1hLm00Mjt0aGlzLlNhPSEwO3ZhciBiPXRoaXM7d2luZG93LnNldFRpbWVvdXQoZnVuY3Rpb24oKXt2YXIgYz1fLmk1ZShiLlFjKTtONmUoYixiLlFjLDApO3dpbmRvdy5zZXRUaW1lb3V0KGZ1bmN0aW9uKCl7Yi5TYT0hMX0sMCk7dmFyIGQ9Yy5tNDErMiooYy5tNDEtYS5tNDEpO2M9Yy5tNDIrMiooYy5tNDItYS5tNDIpO2Q9Xy5GZChkLGIud2EueCxiLm9hLngpO2M9Xy5GZChjLGIud2EueSxiLm9hLnkpO1I2ZShiLGQsYyl9LDApfWVsc2UgUjZlKHRoaXMsYS5tNDEsYS5tNDIpfX07dmFyIFI2ZT1mdW5jdGlvbihhLGIsYyl7YS5BYS5zdG9wKCk7Xy5QNmUoYSxiLGMpfTsKXy5ITS5wcm90b3R5cGUub25Ub3VjaFN0YXJ0PWZ1bmN0aW9uKGEpe2lmKHRoaXMuQmEuQWEpcmV0dXJuITA7Xy5PNmUodGhpcyk7dGhpcy5BYS55aGIoKT8oYS5wcmV2ZW50RGVmYXVsdCgpLHRoaXMuUGJ8fGEuc3RvcFByb3BhZ2F0aW9uKCksdGhpcy5zdG9wKCkpOk42ZSh0aGlzLHRoaXMuUWMsMCk7dGhpcy5PYj10aGlzLmthLmNsb25lKCk7UTZlKHRoaXMpO3JldHVybiEwfTtfLkhNLnByb3RvdHlwZS5vblRvdWNoRW5kPWZ1bmN0aW9uKCl7fTtfLkhNLnByb3RvdHlwZS5vbkRyYWdTdGFydD1mdW5jdGlvbihhKXt2YXIgYj1fLms2ZSh0aGlzLkJhKTtpZih0aGlzLkNjJiYhYnx8IXRoaXMucmImJighUzZlKHRoaXMpfHxiKSlyZXR1cm4hMTtmb3IodmFyIGM9MDtiPXRoaXMuRmJbY107KytjKWlmKCFiLm9hKHRoaXMsYSkpcmV0dXJuITE7Zm9yKGM9MDtiPXRoaXMuRmJbY107KytjKWIua2EodGhpcyxhKTtyZXR1cm4hMH07Cl8uSE0ucHJvdG90eXBlLkpiPWZ1bmN0aW9uKCl7dmFyIGE9dGhpcy5CYTt2YXIgYj1fLmk2ZShhKS1hLlNhO2lmKCF0aGlzLlNhKXt2YXIgYz10aGlzLk9iO2E9Yy54K18uajZlKHRoaXMuQmEpO2E9UzZlKHRoaXMpP1Q2ZShhLHRoaXMud2EueCx0aGlzLm9hLngpOjA7Yj1jLnkrYjtiPXRoaXMucmI/VDZlKGIsdGhpcy53YS55LHRoaXMub2EueSk6MDt0aGlzLk5hfHwodGhpcy5OYT0hMCxfLiQ1ZSh0aGlzLlFjLF8uSTZlLHRoaXMpKTtfLlA2ZSh0aGlzLGEsYil9fTt2YXIgUzZlPWZ1bmN0aW9uKGEpe3JldHVybiBhLlFiJiZhLkVhLndpZHRoPGEuUGEud2lkdGh9LFQ2ZT1mdW5jdGlvbihhLGIsYyl7YTxiP2EtPShhLWIpLzI6YT5jJiYoYS09KGEtYykvMik7cmV0dXJuIGF9OwpfLkhNLnByb3RvdHlwZS5vbkRyYWdFbmQ9ZnVuY3Rpb24oKXt2YXIgYT10aGlzLkJhLkFiO18uJDVlKHRoaXMuUWMsXy5LNmUsdGhpcyk7aWYoYSYmIXRoaXMuT2Epe1M2ZSh0aGlzKXx8KGEueD0wKTt0aGlzLnJifHwoYS55PTApO3ZhciBiPXRoaXMuQWEuc3RhcnQoYSx0aGlzLndhLHRoaXMub2EsdGhpcy5rYSl9Yj9fLiQ1ZSh0aGlzLlFjLE02ZSx0aGlzKTooUTZlKHRoaXMpLF8uJDVlKHRoaXMuUWMsXy5KNmUsdGhpcyksdGhpcy5OYT0hMSl9O3ZhciBONmU9ZnVuY3Rpb24oYSxiLGMsZCxlKXthLk9hPWM+MDtfLnA1ZShiLGMsZCxlKX07Xy5ITS5wcm90b3R5cGUuSmE9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5RY307Xy5ITS5wcm90b3R5cGUuZ2V0RnJhbWU9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5SYX07Xy5ITS5wcm90b3R5cGUuSWI9Xy5ITS5wcm90b3R5cGUuS2E7dmFyIEQ2ZT1mdW5jdGlvbihhKXtONmUoYSxhLlFjLDApO18uJDVlKGEuUWMsXy5KNmUsYSk7YS5OYT0hMX07Cn1jYXRjaChlKXtfLl9EdW1wRXhjZXB0aW9uKGUpfQp0cnl7CnZhciBmNWU7ZjVlPWZ1bmN0aW9uKGEpe2Eud2EhPW51bGwmJl8uQW4oYS53YSk7YS53YT1udWxsO2Eua2E9bnVsbDthLkFhPW51bGw7YS5Odz0hMTtmb3IobGV0IGI9MDtiPGEub2EubGVuZ3RoO2IrKylhLm9hW2JdKCl9OwpfLmc1ZT1jbGFzcyBleHRlbmRzIF8uRWR7Y29uc3RydWN0b3IoYSxiKXtzdXBlcigpO3RoaXMuY29udGFpbmVyPWE7dGhpcy5xcD1iO3RoaXMuQWE9dGhpcy5rYT10aGlzLndhPW51bGw7dGhpcy5Odz0hMTt0aGlzLm9hPVtdO3RoaXMubGlzdGVuKHRoaXMucXAsImRyYWdzdGFydCIsYz0+e2MucHJldmVudERlZmF1bHQoKTtyZXR1cm4hMX0pO3RoaXMubGlzdGVuKHRoaXMucXAsIm1vdXNlZG93biIsYz0+e2MuamcuYnV0dG9uIT0wfHx0aGlzLk53fHwodGhpcy5rYT1fLmNlKHRoaXMuY29udGFpbmVyKT8tYy5zY3JlZW5YOmMuc2NyZWVuWCx0aGlzLkFhPWMuc2NyZWVuWSx0aGlzLndhPV8uaGUoZG9jdW1lbnQsIm1vdXNlbW92ZSIsdGhpcy5CYSwhMSx0aGlzKSl9KTt0aGlzLmxpc3Rlbihkb2N1bWVudCwibW91c2V1cCIsKCk9PntpZih0aGlzLk53KXtsZXQgYz1EYXRlLm5vdygpO18ueW4oZG9jdW1lbnQsImNsaWNrIixkPT57RGF0ZS5ub3coKS1jPDEwMCYmKGQucHJldmVudERlZmF1bHQoKSwKZC5zdG9wUHJvcGFnYXRpb24oKSl9LCEwKX1mNWUodGhpcyl9KTt0aGlzLmxpc3Rlbihkb2N1bWVudCwibW91c2VvdXQiLGM9PntjLnJlbGF0ZWRUYXJnZXQmJmMucmVsYXRlZFRhcmdldC5ub2RlTmFtZSE9PSJIVE1MInx8ZjVlKHRoaXMpfSl9QmEoYSl7dmFyIGI9Xy5jZSh0aGlzLmNvbnRhaW5lcik/LWEuc2NyZWVuWDphLnNjcmVlblg7aWYodGhpcy5Odyl7dmFyIGM9Yi0odGhpcy5rYXx8MCk7dGhpcy5rYT1iO18uZmUodGhpcy5jb250YWluZXIsXy5kZSh0aGlzLmNvbnRhaW5lciktYyl9ZWxzZXtsZXQgZD1iLSh0aGlzLmthfHwwKTtjPU1hdGguYWJzKGQpLTQ7Yz4wJiYodGhpcy5Odz0hMCx0aGlzLmthPWIsZDwwJiYoYyo9LTEpLGI9Xy5kZSh0aGlzLmNvbnRhaW5lciksXy5mZSh0aGlzLmNvbnRhaW5lcixiLWMpKX1hLnByZXZlbnREZWZhdWx0KCl9bGlzdGVuKGEsYixjKXtfLmhlKGEsYixjKTt0aGlzLmFkZE9uRGlzcG9zZUNhbGxiYWNrKCgpPT57Xy56bihhLGIsYyl9KX19Owp9Y2F0Y2goZSl7Xy5fRHVtcEV4Y2VwdGlvbihlKX0KdHJ5ewp2YXIgVTZlLFY2ZTtVNmU9ZnVuY3Rpb24oYSl7dmFyIGI9LyhefFxkKShtb2JpbGV8dGFibGV0KShcZHwkKS8sYz13aW5kb3cuZ29vZ2xlJiZ3aW5kb3cuZ29vZ2xlLmtERUI7aWYoYyYmYi50ZXN0KGMpKXJldHVybiExO2lmKF8uZksoKSlyZXR1cm4hMDtpZihfLmNlKGEuY29udGFpbmVyKSlyZXR1cm4hMTthPV8uc2EoKSYmXy51YSgiNSIpO2I9Xy5yYSgpJiZfLk5hLlVIYShfLk5hLnFiYS5yMmEsMjgpO3JldHVybiBhfHxifTtWNmU9ZnVuY3Rpb24oYSxiKXshXy5OYWEoKSYmIV8ucWEoImlQb2QiKXx8Xy51YSgiOCIpfHxhLmxpc3Rlbih3aW5kb3csInNjcm9sbCIsKCk9PntpZihiLnNjcm9sbEhlaWdodCl7dmFyIGM9Xy50bihiKSxkPV8uUG0oKS55O18uaG4oYiwib3ZlcmZsb3ctc2Nyb2xsaW5nIixkPGMudG9wK2MuaGVpZ2h0JiZkPmMudG9wLV8uZ2koKS5oZWlnaHQ/InRvdWNoIjoiYXV0byIpfX0pfTsKXy5XNmU9ZnVuY3Rpb24oYSxiKXthLmthPyhhLmxpc3RlbihhLnFwLF8uSjZlLGIpLGEud2EucHVzaChiKSxhLm9hJiZhLm9hLm9hLnB1c2goYikpOmEubGlzdGVuKGEuY29udGFpbmVyLCJzY3JvbGwiLGIpfTtfLlg2ZT1mdW5jdGlvbihhKXtyZXR1cm4gTWF0aC5tYXgoYS5xcC5zY3JvbGxXaWR0aC1hLmNvbnRhaW5lci5vZmZzZXRXaWR0aCwwKX07Cl8uWTZlPWZ1bmN0aW9uKGEsYixjKXtpZihhLklhKXt2YXIgZD1hLnFwLm9mZnNldFdpZHRoPT09MCYmYS5xcC5vZmZzZXRIZWlnaHQ9PT0wO2EuQWF8fGR8fChkPWI8PTAsYyYmZCYmKF8uaG4oYS5FYSwidHJhbnNpdGlvbiIsIm5vbmUiKSwoMCxfLmpvKSgoKT0+e18uaG4oYS5FYSwidHJhbnNpdGlvbiIsIiIpfSwxKSksXy5DbShhLkVhLGEuSWEsZCksYj1iPj1fLlg2ZShhKS1hLmR2YSxjJiZiJiYoXy5obihhLkJhLCJ0cmFuc2l0aW9uIiwibm9uZSIpLCgwLF8uam8pKCgpPT57Xy5obihhLkJhLCJ0cmFuc2l0aW9uIiwiIil9LDEpKSxfLkNtKGEuQmEsYS5JYSxiKSl9fTtfLlo2ZT1mdW5jdGlvbihhLGIpe2lmKGEua2Epe2I9TWF0aC5tYXgoMCxNYXRoLm1pbihfLlg2ZShhKSxiKSk7dmFyIGM9YS5rYTtfLlA2ZShjLC1iKmEuS2EsYy5rYS55KTtmb3IoYz0wO2M8YS53YS5sZW5ndGg7YysrKWEud2FbY10oKX1lbHNlIF8uZmUoYS5jb250YWluZXIsYik7Xy5ZNmUoYSxiLCExKX07Cl8uJDZlPWZ1bmN0aW9uKGEsYixjLGQpe18uWTZlKGEsYiwhMSk7YS5BYT0hMDtpZihhLmthKXthLmthLkthKC1iKmEuS2EsMCxjKTtsZXQgZT1hLndhO2UubGVuZ3RoPjAmJigwLF8uam8pKCgpPT57Zm9yKGxldCBmPTA7ZjxlLmxlbmd0aDtmKyspZVtmXSgpfSxjKX1lbHNle2xldCBlPWEuY29udGFpbmVyLGY9Xy5kZShlKSxnPURhdGUubm93KCksaD1nK2Msaz1kfHwobj0+LU1hdGguY29zKG4qTWF0aC5QSSkvMisuNSksbT0oMCxfLmxvKSgoKT0+e3ZhciBuPURhdGUubm93KCkscD1rKG4+aD8xOihuLWcpL2MpO18uZmUoZSxmKyhiLWYpKnApO24+aCYmKCgwLF8ubW8pKG0pLGEuQWE9ITEpfSwxNSl9fTsKXy5hN2U9Y2xhc3MgZXh0ZW5kcyBfLkVke2NvbnN0cnVjdG9yKGEsYixjKXtzdXBlcigpO3RoaXMua2E9bnVsbDt0aGlzLkdhPVtdO3RoaXMud2E9W107dGhpcy5JYT10aGlzLkJhPXRoaXMuRWE9bnVsbDt0aGlzLkFhPSExO3RoaXMub2E9bnVsbDt0aGlzLk5hPSExO3RoaXMuY29udGFpbmVyPWE7dGhpcy5xcD1iO3RoaXMuS2E9Xy5jZShhKT8tMToxO3ZhciBkO3RoaXMuZHZhPShkPWM9PW51bGw/dm9pZCAwOmMuZHZhKSE9bnVsbD9kOjA7KChjPT1udWxsP3ZvaWQgMDpjLlVmYikhPT12b2lkIDA/Yy5VZmI6VTZlKHRoaXMpKT8oXy5OYS5DOWEoKXx8Xy5obihhLHsib3ZlcmZsb3cteCI6ImF1dG8iLCJvdmVyZmxvdy1zY3JvbGxpbmciOiJ0b3VjaCJ9KSxWNmUodGhpcyxhKSxfLmZLKCkmJih0aGlzLm9hPW5ldyBfLmc1ZShhLGIpLHRoaXMuR2EucHVzaCgoKT0+e3RoaXMub2EuZGlzcG9zZSgpfSkpKTooYz1fLmRlKGEpLGQ9Xy5rbihhLCJvdmVyZmxvdy14IiksZCE9PSJzY3JvbGwiJiYKZCE9PSJhdXRvInx8Xy5obihhLHsib3ZlcmZsb3cteCI6ImluaGVyaXQifSksdGhpcy5rYT1uZXcgXy5ITShiLCExLCEwLDEsLWMqdGhpcy5LYSksdGhpcy5rYS5BYS5CYT0tLjAwNTUsdGhpcy5saXN0ZW4od2luZG93LCJyZXNpemUiLCgpPT57Xy5PNmUodGhpcy5rYSl9KSl9QmYoKXtyZXR1cm4gdGhpcy5rYT9NYXRoLnJvdW5kKC10aGlzLmthLkNwKCkqdGhpcy5LYSk6TWF0aC5yb3VuZChfLmRlKHRoaXMuY29udGFpbmVyKSl9bGlzdGVuKGEsYixjKXtfLmhlKGEsYixjKTt0aGlzLkdhLnB1c2goKCk9PntfLnpuKGEsYixjKX0pfXFjKCl7Zm9yKGxldCBhPTAsYjtiPXRoaXMuR2FbYSsrXTspYigpO3RoaXMuR2E9W119fTsKfWNhdGNoKGUpe18uX0R1bXBFeGNlcHRpb24oZSl9CnRyeXsKdmFyIGI1ZSxjNWUsZDVlLGU1ZTtfLmE1ZT1mdW5jdGlvbihhKXtyZXR1cm4gYj0+e2I9Xy5YaShfLldpKGIsYz0+Yy5pc0ludGVyc2VjdGluZyksYz0+Yy50YXJnZXQpO2IubGVuZ3RoPjAmJmEoYil9fTsKYjVlPWZ1bmN0aW9uKGEsYil7aWYoYS5vYS5zaXplKXt2YXIgYz0hMTtpZihhLnJvb3QpdmFyIGQ9YS5yb290LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO2Vsc2UgZD1fLmdpKCksZD1uZXcgXy5QZCgwLGQud2lkdGgsZC5oZWlnaHQsMCk7ZD1hLk5hPT09MD9uZXcgXy5QZChkLnRvcC1hLmthLnRvcCxkLnJpZ2h0K2Eua2EucmlnaHQsZC5ib3R0b20rYS5rYS5ib3R0b20sZC5sZWZ0LWEua2EubGVmdCk6bmV3IF8uUGQoZC50b3AtYS5rYS50b3AqZC50b3AvMTAwLGQucmlnaHQrYS5rYS5yaWdodCpkLnJpZ2h0LzEwMCxkLmJvdHRvbSthLmthLmJvdHRvbSpkLmJvdHRvbS8xMDAsZC5sZWZ0LWEua2EubGVmdCpkLmxlZnQvMTAwKTt2YXIgZT1bXTtmb3IobGV0IFtnLGhdb2YgYS5vYSl7bGV0IGs9Zzt2YXIgZjtpZighKGY9YikpYTp7aWYoYS5BYS5NUGE9PTEmJmsub2Zmc2V0SGVpZ2h0PT0wKXtmPSExO2JyZWFrIGF9aWYoYS5BYS5NUGE9PTIpe2Y9ZG9jdW1lbnQ7bGV0IG09aztmb3IoO20mJgptIT1mOyl7aWYoXy5rbihtLCJkaXNwbGF5Iik9PSJub25lIil7Zj0hMTticmVhayBhfW09Xy5MZyhtKX19Zj1rLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO2Y9bmV3IF8uUGQoZi50b3AsZi5yaWdodCxmLmJvdHRvbSxmLmxlZnQpO2Y9Zi5sZWZ0PD1kLnJpZ2h0JiZkLmxlZnQ8PWYucmlnaHQmJmYudG9wPD1kLmJvdHRvbSYmZC50b3A8PWYuYm90dG9tfWYhPWgmJihjPSEwLGEub2Euc2V0KGssZikpO2UucHVzaCh7aXNJbnRlcnNlY3Rpbmc6Zix0YXJnZXQ6a30pfWMmJmEuS2EoZSxhKX19OwpjNWU9ZnVuY3Rpb24oYSl7aWYoIWEuRWEpe3ZhciBiPWEucm9vdHx8Xy5oaSgpO2EuRWE9Xy5oZShiLCJzY3JvbGwiLCgpPT5hLkdhKCkpO2EuQWEuU3RiJiZfLnNhKCkmJihhLklhPV8uaGUoYiwidG91Y2hzdGFydCIsKCk9PmI1ZShhLCEwKSkpfSFhLkJhJiZhLkFhLmdOYSYmKGEuQmE9Xy5oZShfLmhpKCksInJlc2l6ZSIsKCk9PmEuR2EoKSkpOyFhLndhJiZhLkFhLmZOYSYmIk11dGF0aW9uT2JzZXJ2ZXIiaW4gd2luZG93JiYoYj1kb2N1bWVudCxhLndhPW5ldyBNdXRhdGlvbk9ic2VydmVyKCgpPT5hLkdhKCkpLGEud2Eub2JzZXJ2ZShiLHthdHRyaWJ1dGVzOiEwLGNoaWxkTGlzdDohMCxjaGFyYWN0ZXJEYXRhOiEwLHN1YnRyZWU6ITB9KSl9OwpkNWU9ZnVuY3Rpb24oYSl7YS5FYSYmKF8uQW4oYS5FYSksYS5FYT1udWxsKTthLklhJiYoXy5BbihhLklhKSxhLklhPW51bGwpO2EuQmEmJihfLkFuKGEuQmEpLGEuQmE9bnVsbCk7YS53YSYmKGEud2EuZGlzY29ubmVjdCgpLGEud2E9bnVsbCl9OwplNWU9Y2xhc3N7Y29uc3RydWN0b3IoYSxiLGM9e2ZOYTohMCxnTmE6ITAsTVBhOjAsU3RiOiExfSl7dGhpcy5yb290PWImJmIucm9vdD9iLnJvb3Q6bnVsbDt0aGlzLkthPWE7dGhpcy5rYT1iJiZiLnJvb3RNYXJnaW58fG5ldyBfLlBkKDAsMCwwLDApO3RoaXMuTmE9YiYmYi5aY2J8fDA7dGhpcy5vYT1uZXcgTWFwO3RoaXMud2E9dGhpcy5CYT10aGlzLklhPXRoaXMuRWE9bnVsbDt0aGlzLkdhPV8ucHModGhpcykubWVhc3VyZSgoKT0+YjVlKHRoaXMsITEpKS5idWlsZCgpO3RoaXMuQWE9Y31vYnNlcnZlKGEpe3RoaXMub2Euc2V0KGEsITEpO2M1ZSh0aGlzKTt0aGlzLkdhKCl9dW5vYnNlcnZlKGEpe3RoaXMub2EuZGVsZXRlKGEpO3RoaXMub2Euc2l6ZXx8ZDVlKHRoaXMpfWRpc2Nvbm5lY3QoKXtkNWUodGhpcyk7dGhpcy5vYS5jbGVhcigpfX07Xy5DTT1mdW5jdGlvbihhLGIpe2Eua2EudW5vYnNlcnZlKGIpfTtfLkRNPWNsYXNze2NvbnN0cnVjdG9yKGEsYj17fSxjKXt0aGlzLm9hPWE7aWYoIkludGVyc2VjdGlvbk9ic2VydmVyImluIHdpbmRvdyYmIkludGVyc2VjdGlvbk9ic2VydmVyRW50cnkiaW4gd2luZG93JiYiaXNJbnRlcnNlY3RpbmciaW4gd2luZG93LkludGVyc2VjdGlvbk9ic2VydmVyRW50cnkucHJvdG90eXBlKXthPWIucm9vdE1hcmdpbjtsZXQgZDtjPWIuWmNifHwwO2EmJihjPT09MD9kPWAke2EudG9wfXB4ICR7YS5yaWdodH1weCAke2EuYm90dG9tfXB4ICR7YS5sZWZ0fXB4YDpiLlpjYj09PTEmJihkPWAke2EudG9wfSUgJHthLnJpZ2h0fSUgJHthLmJvdHRvbX0lICR7YS5sZWZ0fSVgKSk7Yj1uZXcgSW50ZXJzZWN0aW9uT2JzZXJ2ZXIodGhpcy5vYSx7cm9vdE1hcmdpbjpkLHJvb3Q6Yi5yb290fSl9ZWxzZSBiPW5ldyBlNWUodGhpcy5vYSxiLGMpO3RoaXMua2E9Yn1vYnNlcnZlKGEpe3RoaXMua2Eub2JzZXJ2ZShhKX1kaXNjb25uZWN0KCl7dGhpcy5rYS5kaXNjb25uZWN0KCl9fTsKfWNhdGNoKGUpe18uX0R1bXBFeGNlcHRpb24oZSl9CnRyeXsKXy5aNGU9ISEoXy5PaVsxNl0+PjE4JjEpO18uJDRlPSEhKF8uT2lbMTZdPj4yMyYxKTsKfWNhdGNoKGUpe18uX0R1bXBFeGNlcHRpb24oZSl9CnRyeXsKXy5aTD1mdW5jdGlvbihhLGIpe3RoaXMuc3RhcnQ9YTxiP2E6Yjt0aGlzLmVuZD1hPGI/YjphfTtfLlpMLnByb3RvdHlwZS5jbG9uZT1mdW5jdGlvbigpe3JldHVybiBuZXcgXy5aTCh0aGlzLnN0YXJ0LHRoaXMuZW5kKX07Xy5aTC5wcm90b3R5cGUuZ2V0TGVuZ3RoPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZW5kLXRoaXMuc3RhcnR9O18ua1BlPWZ1bmN0aW9uKGEsYil7YS5zdGFydD1NYXRoLm1pbihhLnN0YXJ0LGIpO2EuZW5kPU1hdGgubWF4KGEuZW5kLGIpfTsKfWNhdGNoKGUpe18uX0R1bXBFeGNlcHRpb24oZSl9CnRyeXsKdmFyIGI3ZTtiN2U9ZnVuY3Rpb24oYSl7dmFyIGI9Xy5vZShhLmNvbnRhaW5lcik7Yj1fLlFtKGIua2EpLnNjcm9sbFRvcDt2YXIgYz1iK18uZ2koKS5oZWlnaHQ7YT1fLnRuKGEuY29udGFpbmVyKTtyZXR1cm4gYS50b3A8YyYmYS50b3ArYS5oZWlnaHQ+YiYmYS5sZWZ0K2Eud2lkdGg+MCYmYS5sZWZ0PF8uZ2koKS53aWR0aH07Xy5jN2U9ZnVuY3Rpb24oYSxiLGM9MCxkPTApe3ZhciBlPWEucmFuZ2UoKTtjPWN8fDA7dmFyIGY9Yi5vZmZzZXRXaWR0aDthPWEuaXNSdGw/Xy5lZShiKTpiLm9mZnNldExlZnQ7aWYoZj09PTApcmV0dXJuIGE8PWUuZW5kJiZhPj1lLnN0YXJ0O2Q9TWF0aC5taW4oZS5lbmQsYStmK2QpLU1hdGgubWF4KGUuc3RhcnQsYStkKTtlPU1hdGgubWF4KDEsYypmKTtjPT09MSYmLS1lO3JldHVybiBkPj1lfTsKXy5kN2U9Y2xhc3MgZXh0ZW5kcyBfLkVke2NvbnN0cnVjdG9yKGEsYil7c3VwZXIoKTt0aGlzLnFwPWI7dGhpcy5LYT0hMTt0aGlzLk9hPTA7dGhpcy5jb250YWluZXI9YTsoXy5PZHx8Xy5YQmEpJiZfLmZLKCk/Xy5aNGU/Xy5obihhLCJzY3JvbGxiYXItd2lkdGgiLCJub25lIik6Xy5obihhLCJvdmVyZmxvdy14IiwiaGlkZGVuIik6Xy5obihhLCJvdmVyZmxvdy14IiwiYXV0byIpO3RoaXMuaXNSdGw9Xy5jZSh0aGlzLmNvbnRhaW5lcik7dGhpcy5SYT1iN2UodGhpcyk7dGhpcy5TYT1uZXcgXy5ETShjPT57dGhpcy5VJChjKX0se30se2ZOYTohMCxnTmE6ITAsTVBhOjEsU3RiOiExfSk7dGhpcy5TYS5vYnNlcnZlKHRoaXMuY29udGFpbmVyKX1CZigpe3JldHVybiBfLmRlKHRoaXMuY29udGFpbmVyKX1JYShhKXt0aGlzLk9hPV8uZGUodGhpcy5jb250YWluZXIpO18uZmUodGhpcy5jb250YWluZXIsYSl9RWEoKXt9TmEoKXt9d2EoKXtyZXR1cm4gdGhpcy5LYX1CYShhLGIsYyl7dGhpcy5LYT0KITA7dmFyIGQ9dGhpcy5CZigpLGU9RGF0ZS5ub3coKSxmPWUrYixnPSgwLF8ubG8pKCgpPT57dmFyIGg9RGF0ZS5ub3coKSxrPWg+Zj8xOihoLWUpL2I7az1jP2Moayk6LU1hdGguY29zKGsqTWF0aC5QSSkvMisuNTt0aGlzLklhKGQrKGEtZCkqayk7aD5mJiYoKDAsXy5tbykoZyksdGhpcy5LYT0hMSl9LDE1KX1rYSgpe3JldHVybiBNYXRoLm1heCh0aGlzLnFwLnNjcm9sbFdpZHRoLXRoaXMuY29udGFpbmVyLm9mZnNldFdpZHRoLDApfUFhKGEpe18uaGUodGhpcy5jb250YWluZXIsInNjcm9sbCIsYSl9R2EoYSl7Xy56bih0aGlzLmNvbnRhaW5lciwic2Nyb2xsIixhKX1yYW5nZSgpe3ZhciBhPXRoaXMuQmYoKTtyZXR1cm4gbmV3IF8uWkwoYSxhK3RoaXMuY29udGFpbmVyLm9mZnNldFdpZHRoKX1pc1Zpc2libGUoKXtyZXR1cm4gdGhpcy5SYX1VJChhKXthLmxlbmd0aCE9PTAmJih0aGlzLlJhPWFbYS5sZW5ndGgtMV0uaXNJbnRlcnNlY3RpbmcpfXFjKCl7dGhpcy5TYS5kaXNjb25uZWN0KCk7CnN1cGVyLnFjKCl9fTtfLmU3ZT1fLmQ3ZTsKdmFyIGY3ZTtmN2U9ZnVuY3Rpb24oYSxiLGMpe2EuRWE9YjthLkJhPWM7YS5JYT0icFFYY0hjIjtiPSgpPT57Xy5ZNmUoYSxhLkJmKCksITEpfTthLmxpc3RlbihhLmNvbnRhaW5lciwic2Nyb2xsIixiKTthLmxpc3Rlbih3aW5kb3csInJlc2l6ZSIsYik7Xy5ZNmUoYSxhLkJmKCksITApfTsKXy5nN2U9Y2xhc3MgZXh0ZW5kcyBfLmQ3ZXtjb25zdHJ1Y3RvcihhLGIsYyl7c3VwZXIoYSxiKTt0aGlzLm9hPXRoaXMuUGEoYSxiLGMpO18uRGkodGhpcyx0aGlzLm9hKX1QYShhLGIsYyl7Yj1uZXcgXy5hN2UoYSxiLHtkdmE6Yz09bnVsbD92b2lkIDA6Yy5kdmEsVWZiOiEwfSk7aWYoXy5PZHx8Xy4kaSlfLlo0ZT9fLmhuKGEsInNjcm9sbGJhci13aWR0aCIsIm5vbmUiKTpfLmhuKGEsIm92ZXJmbG93LXgiLCJoaWRkZW4iKTtyZXR1cm4gYn1CZigpe3JldHVybiB0aGlzLm9hLkJmKCl9SWEoYSl7Xy5aNmUodGhpcy5vYSxhKX1FYShhLGIpe2Y3ZSh0aGlzLm9hLGEsYil9TmEoYSxiKXtfLlk2ZSh0aGlzLm9hLGEsYil9QmEoYSxiLGMpe18uJDZlKHRoaXMub2EsYSxiLGMpfXdhKCl7cmV0dXJuIHRoaXMub2EuQWF9a2EoKXtyZXR1cm4gXy5YNmUodGhpcy5vYSl9QWEoYSl7Xy5XNmUodGhpcy5vYSxhKX1HYShhKXt2YXIgYj10aGlzLm9hO2lmKGIua2Epe18uem4oYi5xcCxfLko2ZSxhKTsKbGV0IGM9Yi53YS5pbmRleE9mKGEpO2M+LTEmJmIud2Euc3BsaWNlKGMsMSk7Yi5vYSYmKGI9Yi5vYSxhPWIub2EuaW5kZXhPZihhKSxhPi0xJiZiLm9hLnNwbGljZShhLDEpKX1lbHNlIF8uem4oYi5jb250YWluZXIsInNjcm9sbCIsYSl9fTsKXy5lN2U9Y2xhc3MgZXh0ZW5kcyBfLmc3ZXt9Owp9Y2F0Y2goZSl7Xy5fRHVtcEV4Y2VwdGlvbihlKX0KdHJ5ewpfLk40ZT1mdW5jdGlvbihhKXt2YXIgYj1uZXcgXy5NNGU7Yj1fLiRoKGIsMSxfLkV5KTtyZXR1cm4gXy4kaChiLDIsYSl9O18uTzRlPWZ1bmN0aW9uKGEsYil7cmV0dXJuIF8uJGgoYSwzLGIpfTtfLlA0ZT1mdW5jdGlvbihhLGIpe3JldHVybiBfLmxrKGEsNCxiKX07Xy5RNGU9ZnVuY3Rpb24oYSxiKXtyZXR1cm4gXy4kaChhLDUsYil9O18uUjRlPWZ1bmN0aW9uKGEsYil7cmV0dXJuIF8uJGgoYSw2LGIpfTtfLlM0ZT1mdW5jdGlvbihhLGIpe3JldHVybiBfLmxrKGEsNyxiKX07Xy5UNGU9ZnVuY3Rpb24oYSxiKXtyZXR1cm4gXy4kaChhLDgsYil9O18uVjRlPWZ1bmN0aW9uKGEpe3JldHVybiBfLiRoKGEsOSxfLlU0ZSl9O18uVzRlPWZ1bmN0aW9uKGEsYil7cmV0dXJuIF8uJGgoYSwxMCxiKX07Xy5YNGU9ZnVuY3Rpb24oYSxiKXtyZXR1cm4gXy5sayhhLDExLGIpfTtfLlk0ZT1mdW5jdGlvbihhLGIpe3JldHVybiBfLiRoKGEsMTIsYil9OwpfLk00ZT1jbGFzcyBleHRlbmRzIF8ubHtjb25zdHJ1Y3RvcihhKXtzdXBlcihhKX1hRCgpe3JldHVybiBfLkEodGhpcywyKX1NMSgpe3JldHVybiBfLkEodGhpcywzKX1kVygpe3JldHVybiBfLnhlKHRoaXMsNCl9dzUoKXtyZXR1cm4gXy53ZSh0aGlzLDQpfWFXKCl7cmV0dXJuIF8uQSh0aGlzLDUpfXFXKCl7cmV0dXJuIF8uQSh0aGlzLDYpfWVXKCl7cmV0dXJuIF8ueGUodGhpcyw3KX14NSgpe3JldHVybiBfLndlKHRoaXMsNyl9ejkoKXtyZXR1cm4gXy5BKHRoaXMsOCl9ajkoKXtyZXR1cm4gXy5BKHRoaXMsMTApfVdTYSgpe3JldHVybiBfLnhlKHRoaXMsMTEpfWY5KCl7cmV0dXJuIF8uQSh0aGlzLDEyKX19O18uTTRlLnByb3RvdHlwZS5YYT0iTTJ2OUlmIjsKfWNhdGNoKGUpe18uX0R1bXBFeGNlcHRpb24oZSl9CnRyeXsKXy5CTT1fLmtjKCJzMGo3QyIsW18ucTRlLF8uWXEsXy5mcixfLlFxXSk7Cn1jYXRjaChlKXtfLl9EdW1wRXhjZXB0aW9uKGUpfQp0cnl7Cl8uTDRlPXtuYW1lOiJzY3NyIn07Cn1jYXRjaChlKXtfLl9EdW1wRXhjZXB0aW9uKGUpfQp0cnl7CnZhciBlRmI7ZUZiPWZ1bmN0aW9uKGEpe2Eub2E9Xy5JbigoKT0+e2Eub2E9bnVsbDthLndhJiYhYS5BYSYmKGEud2E9ITEsZUZiKGEpKX0sYS5FYSk7dmFyIGI9YS5CYTthLkJhPW51bGw7YS5NSi5hcHBseShudWxsLGIpfTtfLmZGYj1jbGFzcyBleHRlbmRzIF8uRWR7Y29uc3RydWN0b3IoYSxiLGMpe3N1cGVyKCk7dGhpcy5NSj1jIT1udWxsP2EuYmluZChjKTphO3RoaXMuRWE9Yjt0aGlzLkJhPW51bGw7dGhpcy53YT0hMTt0aGlzLkFhPTA7dGhpcy5vYT1udWxsfWthKGEpe3RoaXMuQmE9YXJndW1lbnRzO3RoaXMub2F8fHRoaXMuQWE/dGhpcy53YT0hMDplRmIodGhpcyl9c3RvcCgpe3RoaXMub2EmJihfLkpuKHRoaXMub2EpLHRoaXMub2E9bnVsbCx0aGlzLndhPSExLHRoaXMuQmE9bnVsbCl9cGF1c2UoKXt0aGlzLkFhKyt9cmVzdW1lKCl7dGhpcy5BYS0tO3RoaXMuQWF8fCF0aGlzLndhfHx0aGlzLm9hfHwodGhpcy53YT0hMSxlRmIodGhpcykpfXFjKCl7c3VwZXIucWMoKTt0aGlzLnN0b3AoKX19Owp9Y2F0Y2goZSl7Xy5fRHVtcEV4Y2VwdGlvbihlKX0KdHJ5ewpfLnUoInMwajdDIik7CnZhciBoN2U9ZnVuY3Rpb24oYSl7YS5rYSgpLmZvckVhY2goYj0+e18uQW0oYiwiV2dobU9kIil9KX0saTdlPWZ1bmN0aW9uKGEsYil7aWYoIShiPj1hLnNpemUpKXtmb3IobGV0IGM9YjtjPGEuc2l6ZTtjKyspe2xldCBkPWEua2EoKVtjXTtfLktqYShkLF8uJGwpfWEuc2l6ZT1iO2Eua2E9Xy5GbigoKT0+YS5IYigidURFRmdlIikudG9BcnJheSgpKTtiPD00JiYoaDdlKGEpLF8ueDRlKGEsMCkpfX0sajdlPWNsYXNzIGV4dGVuZHMgXy5se2NvbnN0cnVjdG9yKGEpe3N1cGVyKGEpfW9hKCl7cmV0dXJuIF8udCh0aGlzLDEpfXdhKGEpe3JldHVybiBfLmZoKHRoaXMsMSxhKX1BYSgpe3JldHVybiBfLkdlKHRoaXMsMSl9QmEoKXtyZXR1cm4gXy5waCh0aGlzLDEpfX07ajdlLnByb3RvdHlwZS5YYT0ieUpzYmFmIjt2YXIgazdlPXtLeSgpe3JldHVyblsiY3NvIl19LEtrKGEsYil7Xy53dihuZXcgXy5DdihhLmthLGIpLCJjc28iLGIud2EsYi5BYSl9LFFsKGEsYil7Xy56dihuZXcgXy5DdihiLmthLGEpLGEuQmEsYS5vYSwiY3NvIil9fTt2YXIgbDdlPW51bGwsbTdlPWNsYXNzIGV4dGVuZHMgXy5aentjb25zdHJ1Y3RvcihhLGIpe3N1cGVyKGEpO25ldyBfLiR6KHRoaXMpO18uWHooYix0aGlzLG5ldyBfLld6KGs3ZSkpfXN0YXRpYyB5bigpe3JldHVybiBqN2V9c3RhdGljIFZuKGEpe3JldHVybiBsN2U/bDdlOmw3ZT1fLlZ6KCkudGhlbihiPT57Yj1uZXcgbTdlKGo3ZSxiKTtiLmluaXRpYWxpemUoYSk7cmV0dXJuIGJ9KX19O18uWm8ueUpzYmFmPV8uWW87dmFyIG43ZSxvN2UscDdlLHE3ZSxzN2UscjdlLHQ3ZSx1N2UsdjdlLHc3ZSx4N2UseTdlLEE3ZSxDN2UsRDdlLEU3ZSxCN2UsRjdlO243ZT1mdW5jdGlvbihhKXthLkdhJiZhLklhJiYoYS5pc1J0bD9hLmthLkVhKGEuSWEsYS5HYSk6YS5rYS5FYShhLkdhLGEuSWEpKX07bzdlPWZ1bmN0aW9uKGEpe2lmKGEuU2Epe3ZhciBiPWEuZ2V0Um9vdCgpLnljKCJpZCIpO2lmKGImJihhLkFiP2I9YS5aZC5nZXQoYik6KGE9YS5JUGEuZ2V0KCkub2EoKSxiPShiPVJlZ0V4cChiKyI6KFxcZCsoPzpcXC5cXGQrKT8pIikuZXhlYyhhKSk/TnVtYmVyKGJbMV0pOm51bGwpLGIpKXJldHVybiBOdW1iZXIoYil9cmV0dXJuIDB9O3A3ZT1mdW5jdGlvbihhKXthLml0ZW1zLmZvckVhY2goYj0+eyFiLmlzSW5pdGlhbGl6ZWQmJmEub2EoYi5paSkmJihiLmlzSW5pdGlhbGl6ZWQ9ITAsYi5jb250cm9sbGVyLk5oKCkpfSl9OwpxN2U9ZnVuY3Rpb24oYSxiPWEua2EuaXNWaXNpYmxlKCkpe2EuaXRlbXMuZm9yRWFjaChjPT57dmFyIGQ9YiYmYS5vYShjLmlpKTtkJiYhYy5aZT9jLmNvbnRyb2xsZXIuR2coKTohZCYmYy5aZSYmYy5jb250cm9sbGVyLmhpZGRlbigpO2MuWmU9ZDtpZihhLlZnKXt2YXIgZT1kPWMucXViPSExO2lmKGMuWmUmJmEub2EoYy5paSwxKSl7ZT1fLmdpKCk7bGV0IGY9Yy5paS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtjLnF1Yj1mLmxlZnQ+MCYmZS53aWR0aD49TWF0aC5yb3VuZChmLnJpZ2h0KTtkPWYudG9wPjAmJmUuaGVpZ2h0Pj1NYXRoLnJvdW5kKGYuYm90dG9tKTtlPShkPWMucXViJiZkKSYmZi5sZWZ0PD1lLndpZHRoLzImJmYucmlnaHQ+PWUud2lkdGgvMn1kIT09Yy5hcGEmJihjLmFwYT1kLF8uWmcoYy5paSxjLmFwYT8iejQ2RENmIjoiRjBqNnIiLHZvaWQgMCxhKSk7ZSE9PWMueHhhJiYoYy54eGE9ZSxfLlpnKGMuaWksYy54eGE/Ino1QmhqYyI6ImpQNEhEZiIsdm9pZCAwLGEpKX19KX07CnM3ZT1mdW5jdGlvbihhKXtpZihhLkNjKXtyN2UoYSk7Zm9yKGxldCBiIG9mIGEuaXRlbXMpYi5paSYmKGIuaWkudGFiSW5kZXg9LTEpO2EuRWE+PWEuaXRlbXMubGVuZ3RoJiYoYS5FYT1NYXRoLm1heChhLml0ZW1zLmxlbmd0aC0xLDApKTsoYT1hLml0ZW1zW2EuRWFdKSYmYS5paSYmKGEuaWkudGFiSW5kZXg9MCl9fTtyN2U9ZnVuY3Rpb24oYSl7Xy5iYmEoYS5pdGVtcywoYixjKT0+Yi5paS5vZmZzZXRMZWZ0LWMuaWkub2Zmc2V0TGVmdCl9O3Q3ZT1mdW5jdGlvbihhKXthLkljLmZvckVhY2goYj0+e2IuaWkuc3R5bGUucG9zaXRpb249InJlbGF0aXZlIjtiLmlpLnN0eWxlLm9wYWNpdHk9IjEiO2IuaWkuc3R5bGUubGVmdD0iMCI7Yi5paS5zdHlsZS5yaWdodD0iMCI7Yi5paS5zdHlsZS5oZWlnaHQ9IiJ9KTthLmthLk5hKGEuQmYoKSwhMCk7YS5OYT0hMH07CnU3ZT1mdW5jdGlvbihhLGIpe2EuSWMucHVzaChiKTtpZihhLkZiPT09MCl7bGV0IGM7YS5GYj0oKGM9YS5pdGVtcy5maW5kKGQ9PiFkLkE5YSkpPT1udWxsP3ZvaWQgMDpjLmlpLmNsaWVudEhlaWdodCl8fDB9YS5JYj1NYXRoLm1heChhLkliLGIuaWkuY2xpZW50SGVpZ2h0KTtiLmlpLnN0eWxlLnBvc2l0aW9uPSJyZWxhdGl2ZSI7Yi5paS5zdHlsZS5vcGFjaXR5PSIxIjtiLmlpLnN0eWxlLmxlZnQ9IjAiO2IuaWkuc3R5bGUucmlnaHQ9IjAiO2EuTmE/Yi5paS5zdHlsZS5oZWlnaHQ9IiI6YS5GYj4wJiYoYi5paS5zdHlsZS5oZWlnaHQ9YCR7YS5GYn1weGApO2Eua2EuTmEoYS5CZigpLCEwKX07djdlPWZ1bmN0aW9uKGEsYixjKXshXy54bShjLCJwUVhjSGMiKSYmXy55ZShiKSYmXy5OcChhLk5iLmthKCksYikubG9nKCl9O3c3ZT1mdW5jdGlvbihhLGIpe3I3ZShhKTtyZXR1cm4gXy5lZShiKS1fLmVlKGEuaXNSdGw/YS5pdGVtc1thLml0ZW1zLmxlbmd0aC0xXS5paTphLml0ZW1zWzBdLmlpKX07Cng3ZT1mdW5jdGlvbihhKXt2YXIgYj0wLGM9Xy5abShhLnFwKTtjJiYoYj1fLmVlKGMpLV8uZWUoYS5xcCkpO3JldHVybiBifTtfLno3ZT1mdW5jdGlvbihhLGIpe2EuUGE9ITA7eTdlKGEsYik7YS5rYS5CYShfLkZkKGIsMCxhLmthLmthKCkpLDM1MCxudWxsKTsoMCxfLmpvKSgoKT0+e2EudHJpZ2dlcigiWGVoMWtmIil9LDM1MCl9O3k3ZT1mdW5jdGlvbihhLGIpe3ZhciBjPWEuaXNSdGw/LWI6YixkPWMrYS5jb250YWluZXIub2Zmc2V0V2lkdGg7YS5pdGVtcy5mb3JFYWNoKGU9Pnt2YXIgZjtpZihmPSFlLmlzSW5pdGlhbGl6ZWQpZj1lLmlpLGY9Zi5vZmZzZXRMZWZ0PGQmJmYub2Zmc2V0TGVmdCtmLm9mZnNldFdpZHRoPmM7ZiYmKGUuaXNJbml0aWFsaXplZD0hMCxlLmNvbnRyb2xsZXIuTmgoKSl9KX07CkE3ZT1mdW5jdGlvbihhKXthLk5hPSEwO2EuY29udGFpbmVyLmNsYXNzTGlzdC5hZGQoIlV2ZHJUYyIpO2EuSWMuZm9yRWFjaChiPT57Yi5paS5zdHlsZS5oZWlnaHQ9YS5JYj4wP2Ake2EuSWJ9cHhgOiIifSk7cjdlKGEpO3M3ZShhKX07QzdlPWZ1bmN0aW9uKGEpe3I3ZShhKTtmb3IobGV0IGI9MDtiPGEuaXRlbXMubGVuZ3RoOysrYilpZihCN2UoYSxiKSlyZXR1cm4gYj4wJiZhLm9hKGEuaXRlbXNbYl0uaWksMSk/Yi0xOmI7cmV0dXJuLTF9O0Q3ZT1mdW5jdGlvbihhLGIsYyl7dmFyIGQ9YS5jb250YWluZXIub2Zmc2V0V2lkdGgteDdlKGEpO2I9YS5pdGVtc1tiXS5paTt2YXIgZT13N2UoYSxiKTtyZXR1cm4gYS5pc1J0bCYmY3x8IWEuaXNSdGwmJiFjP2UtKGQtYi5vZmZzZXRXaWR0aCk6ZX07CkU3ZT1mdW5jdGlvbihhKXtyN2UoYSk7Zm9yKGxldCBiPWEuaXRlbXMubGVuZ3RoLTE7Yj49MDtiLS0paWYoQjdlKGEsYikpcmV0dXJuIGIrMTxhLml0ZW1zLmxlbmd0aCYmYS5vYShhLml0ZW1zW2JdLmlpLDEpP2IrMTpiO3JldHVybi0xfTtCN2U9ZnVuY3Rpb24oYSxiKXtyZXR1cm4gYj09PTB8fGI9PT1hLml0ZW1zLmxlbmd0aC0xP2Eub2EoYS5pdGVtc1tiXS5paSk6YS5vYShhLml0ZW1zW2JdLmlpKSYmKCFhLm9hKGEuaXRlbXNbYi0xXS5paSl8fCFhLm9hKGEuaXRlbXNbYisxXS5paSkpfTtGN2U9ZnVuY3Rpb24oYSxiLGMpe2lmKGIhPT1jKXthLkVhPWM7Yj1hLml0ZW1zW2JdO2lmKGE9YS5pdGVtc1tjXSlhLmlpLnRhYkluZGV4PTAsYS5paS5mb2N1cygpO2ImJihiLmlpLnRhYkluZGV4PS0xKX19OwpfLklNPWNsYXNzIGV4dGVuZHMgXy5oc3tzdGF0aWMgUWEoKXtyZXR1cm57anNkYXRhOntYNjpfLk00ZX0sT2M6e28yOntqc25hbWU6InBxU3pnZSIsY3RvcjpfLno0ZX19LG9lOntJUGE6bTdlfSxzZXJ2aWNlOntEWTpfLkt4LE5iOl8uTHUsb3JpZW50YXRpb246Xy5TdX19fWNvbnN0cnVjdG9yKGEpe3N1cGVyKCk7dGhpcy5aYT10aGlzLlBhPSExO3RoaXMuaXRlbXM9W107dGhpcy5FYT0wO3RoaXMud1g9bnVsbDt0aGlzLk5hPXRoaXMud2Q9ITE7dGhpcy5GYj10aGlzLkliPTA7dGhpcy5JYz1bXTt0aGlzLmtkPSExO3RoaXMuaGM9MDt0aGlzLkZkPSExO3RoaXMuemc9dGhpcy5VYz0wO3RoaXMuT2E9bnVsbDt0aGlzLmNvbnRhaW5lcj10aGlzLlZhKCJoYUFjbGYiKS5lbCgpO3RoaXMuWmQ9YS5zZXJ2aWNlLkRZLmdldCgicyIsXy5MNGUpO3RoaXMuaXNSdGw9Xy5jZSh0aGlzLmNvbnRhaW5lcik7dGhpcy5JUGE9KHRoaXMuQWI9Xy5BKGEuanNkYXRhLlg2LDkpKT92b2lkIDA6YS5vZS5JUGE7CnRoaXMuQ2M9YS5qc2RhdGEuWDYuejkoKTt0aGlzLkxkPWEuanNkYXRhLlg2Lmo5KCk7dGhpcy5xcD10aGlzLkphKCJzMmdRdmQiKS5lbCgpO3RoaXMua2E9bmV3IF8uZTdlKHRoaXMuY29udGFpbmVyLHRoaXMucXAsdm9pZCAwKTtfLkRpKHRoaXMsdGhpcy5rYSk7dGhpcy5RZD10aGlzLlZhKCJZNUFOSGUiKS5lbCgpO3RoaXMuR2E9dGhpcy5WYSgic0lKbURmIikuaGIoKTt0aGlzLnFlPXRoaXMuVmEoIkFLNnluZSIpLmVsKCk7dGhpcy5JYT10aGlzLlZhKCJJSEZNNCIpLmhiKCk7bjdlKHRoaXMpO3RoaXMuemQ9bmV3IF8uYWUodGhpcyk7dGhpcy5OQj1fLkZuKCgpPT50aGlzLlZhKCJwcVN6Z2UiKS5oYigpKTt0aGlzLlBEPWEuanNkYXRhLlg2LnFXKCk7dGhpcy5IZj1hLmpzZGF0YS5YNi5mOSgpO3RoaXMub3JpZW50YXRpb249YS5zZXJ2aWNlLm9yaWVudGF0aW9uO3RoaXMuU2E9YS5qc2RhdGEuWDYuYUQoKTt0aGlzLk5iPWEuc2VydmljZS5OYjt0aGlzLlJhPWEuanNkYXRhLlg2LmRXKCk7CnRoaXMuSWNhPWEuanNkYXRhLlg2LmVXKCk7dGhpcy5PYj1vN2UodGhpcyk7dGhpcy5LYz1fLkEoYS5qc2RhdGEuWDYsMSk7dGhpcy5TYSYmdGhpcy5PYiE9PTAmJnRoaXMuQmYoKT09PTAmJnRoaXMud2EodGhpcy5PYik7KHRoaXMucmI9dGhpcy5BYj92b2lkIDA6bmV3IF8uZkZiKHRoaXMudUgsMzAwLHRoaXMpKSYmXy5EaSh0aGlzLHRoaXMucmIpO3RoaXMuQ2c9Xy5Hbih0aGlzLkNFLDEwMCx0aGlzKTt0aGlzLlZnPWEuanNkYXRhLlg2Lk0xKCk7dGhpcy5CZT0oKT0+eygwLF8ubWYpKCgpPT57dGhpcy5pc0Rpc3Bvc2VkKCl8fHRoaXMud2soKX0pfTt0aGlzLmthLkFhKHRoaXMuQmUpO3ZhciBiPSExLGM9ZD0+e2QmJl8uRzdlKHRoaXMpO2J8fChiPSEwLCgwLF8ubWYpKCgpPT57Yj0hMTtpZighdGhpcy5pc0Rpc3Bvc2VkKCkpe2xldCBlPXRoaXMua2EuaXNWaXNpYmxlKCk7ZT8ocDdlKHRoaXMpLHE3ZSh0aGlzLGUpLGQmJih0aGlzLm5vdGlmeSgiTHNMR0hmIiksdGhpcy5ub3RpZnkoIkRkUVY2YyIpKSk6CnE3ZSh0aGlzLGUpfX0pKX07dGhpcy5LYT0oKT0+e2MoITApfTt0aGlzLm9yaWVudGF0aW9uLmFkZExpc3RlbmVyKHRoaXMuS2EpO3RoaXMuemQubGlzdGVuKHdpbmRvdywic2Nyb2xsIix0aGlzLkthKTt0aGlzLnpkLmxpc3Rlbih0aGlzLmNvbnRhaW5lciwic2Nyb2xsIiwoKT0+e2MoITEpfSk7aWYoIWEuanNkYXRhLlg2LmFXKCkpe2xldCBkPWU9PntfLmNzKGUpfTt0aGlzLnpkLmxpc3Rlbih0aGlzLmNvbnRhaW5lciwidG91Y2hzdGFydCIsZCk7dGhpcy5LYyYmdGhpcy56ZC5saXN0ZW4odGhpcy5jb250YWluZXIsIm1vdXNlZG93biIsZCl9czdlKHRoaXMpO3RoaXMuQ2MmJih0aGlzLmdldFJvb3QoKS5oYigpLnRhYkluZGV4PS0xLHRoaXMuR2EmJiF0aGlzLkxkJiYodGhpcy5HYS50YWJJbmRleD0tMSksdGhpcy5JYSYmIXRoaXMuTGQmJih0aGlzLklhLnRhYkluZGV4PS0xKSk7dGhpcy5vMj1hLk9jLm8yO3RoaXMuU0Y9TWF0aC5tYXgoYS5qc2RhdGEuWDYuV1NhKCktMiwwKTt0aGlzLmdldFJvb3QoKS5oYigpLnNldEF0dHJpYnV0ZSgiZGF0YS1wY3IiLAoidHJ1ZSIpfUprKCl7cmV0dXJuIHRoaXMuUWR9VWooKXtyZXR1cm4gdGhpcy5HYX15cSgpe3JldHVybiB0aGlzLnFlfXdvKCl7cmV0dXJuIHRoaXMuSWF9ZndhKCl7cmV0dXJuIHRoaXMuaXRlbXN9bG4oKXtyZXR1cm4gdGhpcy5LYX1yaygpe3RoaXMuS2EoKX1Kcygpe3JldHVybiB0aGlzLnFwfWp1KCl7cmV0dXJuIHRoaXMua2F9ZWsoKXtyZXR1cm4gdGhpcy5pc1J0bH1UYigpe3RoaXMub3JpZW50YXRpb24ucmVtb3ZlTGlzdGVuZXIodGhpcy5LYSk7dGhpcy56ZC5yZW1vdmVBbGwoKTt0aGlzLmthLkdhKHRoaXMuQmUpO3N1cGVyLlRiKCl9QmYoKXtyZXR1cm4gdGhpcy5rYS5CZigpfXdhKGEpe3RoaXMua2EuSWEoYSl9Z2V0Q29udGFpbmVyKCl7cmV0dXJuIHRoaXMuY29udGFpbmVyfW9hYSgpe2lmKHRoaXMuU2Epe3ZhciBhPW83ZSh0aGlzKTthJiZ0aGlzLndhKGEpfX1CYShhKXt2YXIgYj1hLmV2ZW50LnRhcmdldDtyZXR1cm4gdGhpcy5CZChiLF8uTG8pLnRoZW4oYz0+e3RoaXMucEUoYywKYil9KX1uYigpe3RoaXMub2FhKCk7bjdlKHRoaXMpO3E3ZSh0aGlzKX1wRShhLGIpe2E9e2NvbnRyb2xsZXI6YSxpaTpiLGlzSW5pdGlhbGl6ZWQ6ITEsWmU6ITEscXViOiExLGFwYTohMSx4eGE6ITEsQTlhOmIuY2xhc3NMaXN0LmNvbnRhaW5zKCJiZTlta2IiKX07dGhpcy5pdGVtcy5wdXNoKGEpOyEodGhpcy5CZigpPjB8fHRoaXMuWGIoKSkmJnRoaXMua2EuaXNWaXNpYmxlKCl8fHRoaXMuTmF8fHQ3ZSh0aGlzKTthLkE5YSYmdTdlKHRoaXMsYSk7KGI9dGhpcy5rYS5pc1Zpc2libGUoKSkmJl8uYzdlKHRoaXMua2EsYS5paSkmJihhLmlzSW5pdGlhbGl6ZWQ9ITAsYS5jb250cm9sbGVyLk5oKCkpO3E3ZSh0aGlzLGIpO3M3ZSh0aGlzKX1QYigpe3JldHVybiB0aGlzLmthLndhKCl9QWEoYSxiLGMpe3ZhciBkPXc3ZSh0aGlzLGEpO2ImJihkLT10aGlzLmNvbnRhaW5lci5vZmZzZXRXaWR0aC8yLXg3ZSh0aGlzKS1hLm9mZnNldFdpZHRoLzIpO2M/KHRoaXMuUGE9ITAsdGhpcy53YShkKSk6Cl8uejdlKHRoaXMsZCl9UWUoKXt0aGlzLk9hPT09bnVsbCYmdGhpcy5QZigpJiYodGhpcy5PYT10aGlzLlBjKCksaTdlKHRoaXMubzIsdGhpcy5pdGVtcy5sZW5ndGgtdGhpcy5PYSkpO3ZhciBhPXRoaXMuUGMoKTthPDB8fChhPU1hdGgubWF4KDAsYS0odGhpcy5PYSE9PW51bGw/dGhpcy5PYTp0aGlzLlNGKSksdGhpcy56Zz10aGlzLlVjLHRoaXMuVWM9YSxfLnk0ZSh0aGlzLm8yLHRoaXMuVWMsdGhpcy56ZykpfVVGKCl7cjdlKHRoaXMpO3RoaXMuaXRlbXNbdGhpcy5pdGVtcy5sZW5ndGgtMV0uYXBhPSEwfWtqKCl7cmV0dXJuIHg3ZSh0aGlzKX13aygpe2lmKCF0aGlzLlBhKXt2YXIgYT1NYXRoLmFicyh0aGlzLmthLkJmKCktdGhpcy5PYik7aWYoIXRoaXMuSGYmJnRoaXMuUEQmJiF0aGlzLmtkKWlmKHRoaXMuaGMtYT49NTApe2lmKHRoaXMua2Q9ITAsdGhpcy50cmlnZ2VyKCJ6Rnl5cWIiKSxfLnllKHRoaXMuY29udGFpbmVyKSl7dmFyIGI9Xy5HcChuZXcgXy5IcCwxKTtfLlJwKF8uTnAodGhpcy5OYi5rYSgpLAp0aGlzLmNvbnRhaW5lciwyMSksYikubG9nKCl9fWVsc2UgdGhpcy5rYS5CZigpPnRoaXMuaGMmJih0aGlzLmhjPXRoaXMua2EuQmYoKSk7IXRoaXMuSGYmJiF0aGlzLndkJiZhPj01MCYmKHRoaXMud2Q9ITAsdGhpcy50cmlnZ2VyKCJ1bDVqQmQiKSxfLnllKHRoaXMuY29udGFpbmVyKSYmXy5OcCh0aGlzLk5iLmthKCksdGhpcy5jb250YWluZXIsMjEpLmxvZygpKX10aGlzLk5hfHxBN2UodGhpcyk7dGhpcy5QYT10aGlzLmthLndhKCk7dGhpcy5GZHx8KHRoaXMuRmQ9ITAsdGhpcy50cmlnZ2VyKCJqRGdWYWYiKSk7cTdlKHRoaXMpO3RoaXMubzImJnRoaXMuUWUoKTthPXRoaXMuQmYoKTtiPXRoaXMuZ2V0Um9vdCgpLmVsKCk7Xy5YZyhiLCJzUWpHSCIse2RBYTphfSk7dGhpcy5ub3RpZnkoInNRakdIIik7dGhpcy53WCYmdGhpcy53WC51c2VySW50ZXJhY3Rpb25QZXJmb3JtZWQodGhpcyk7dGhpcy5TYSYmKHRoaXMuQWI/dGhpcy5DZygpOnRoaXMucmImJnRoaXMucmIua2EoKSl9b2EoYSwKYil7cmV0dXJuIF8uYzdlKHRoaXMua2EsYSxiLDApfXNjcm9sbExlZnQoYT0hMCl7aWYoIXRoaXMuUGIoKSlpZihhJiZ2N2UodGhpcyx0aGlzLlFkLHRoaXMuR2EpLHRoaXMuUmEpYT10aGlzLlJhKih0aGlzLmlzUnRsPy0xOjEpLF8uejdlKHRoaXMsdGhpcy5rYS5CZigpLWEpO2Vsc2UgaWYoYT10aGlzLmNvbnRhaW5lci5vZmZzZXRXaWR0aC14N2UodGhpcyksdGhpcy5pdGVtcy5sZW5ndGg9PT0wKWE9dGhpcy5CZigpKyhhLXRoaXMuSWNhKSoodGhpcy5pc1J0bD8xOi0xKSxfLno3ZSh0aGlzLGEpO2Vsc2V7YT1DN2UodGhpcyk7bGV0IGI9RDdlKHRoaXMsYSwhMSk7aWYodGhpcy5pc1J0bCYmYjw9dGhpcy5rYS5CZigpfHwhdGhpcy5pc1J0bCYmYj49dGhpcy5rYS5CZigpKWE+MD9iPUQ3ZSh0aGlzLC0tYSwhMSk6Yj4wJiYhdGhpcy5pc1J0bD9iPTA6Yjx0aGlzLmthLmthKCkmJnRoaXMuaXNSdGwmJihiPXRoaXMua2Eua2EoKSk7Xy56N2UodGhpcyxiKX19V3EoYT0hMCl7aWYoIXRoaXMuUGIoKSlpZihhJiYKdjdlKHRoaXMsdGhpcy5xZSx0aGlzLklhKSx0aGlzLlJhKWE9dGhpcy5SYSoodGhpcy5pc1J0bD8tMToxKSxfLno3ZSh0aGlzLHRoaXMua2EuQmYoKSthKTtlbHNlIGlmKGE9dGhpcy5jb250YWluZXIub2Zmc2V0V2lkdGgteDdlKHRoaXMpLHRoaXMuaXRlbXMubGVuZ3RoPT09MClhPXRoaXMuQmYoKSsoYS10aGlzLkljYSkqKHRoaXMuaXNSdGw/LTE6MSksXy56N2UodGhpcyxhKTtlbHNle2E9RTdlKHRoaXMpO2xldCBiPUQ3ZSh0aGlzLGEsITApO2lmKHRoaXMuaXNSdGwmJmI+PXRoaXMua2EuQmYoKXx8IXRoaXMuaXNSdGwmJmI8PXRoaXMua2EuQmYoKSlhPHRoaXMuaXRlbXMubGVuZ3RoLTE/Yj1EN2UodGhpcywrK2EsITApOmI+MCYmdGhpcy5pc1J0bD9iPTA6Yjx0aGlzLmthLmthKCkmJiF0aGlzLmlzUnRsJiYoYj10aGlzLmthLmthKCkpO18uejdlKHRoaXMsYil9fVdoKCl7cmV0dXJuIEM3ZSh0aGlzKX1Oeigpe3I3ZSh0aGlzKTtpZih0aGlzLmlzUnRsKXt2YXIgYT10aGlzLml0ZW1zLmxlbmd0aC0KMTtmb3IodmFyIGI9dGhpcy5pdGVtcy5sZW5ndGgtMTtiPj0wO2ItLSl0aGlzLm9hKHRoaXMuaXRlbXNbYl0uaWkpJiZiPGEmJihhPWIpO3JldHVybiB0aGlzLml0ZW1zLmxlbmd0aC1hLTF9YT0wO2ZvcihiPXRoaXMuaXRlbXMubGVuZ3RoLTE7Yj49MDtiLS0pdGhpcy5vYSh0aGlzLml0ZW1zW2JdLmlpKSYmYj5hJiYoYT1iKTtyZXR1cm4gYX1QYygpe3I3ZSh0aGlzKTtpZih0aGlzLmlzUnRsKWZvcih2YXIgYT0wO2E8dGhpcy5pdGVtcy5sZW5ndGg7YSsrKXtpZih0aGlzLm9hKHRoaXMuaXRlbXNbYV0uaWksMSkpcmV0dXJuIGF9ZWxzZSBmb3IoYT10aGlzLml0ZW1zLmxlbmd0aC0xO2E+PTA7YS0tKWlmKHRoaXMub2EodGhpcy5pdGVtc1thXS5paSwxKSlyZXR1cm4gYTtyZXR1cm4tMX1QZigpe3I3ZSh0aGlzKTtyZXR1cm4gdGhpcy5pc1J0bD90aGlzLm9hKHRoaXMuaXRlbXNbdGhpcy5pdGVtcy5sZW5ndGgtMV0uaWksMSk6dGhpcy5vYSh0aGlzLml0ZW1zWzBdLmlpLDEpfU1pKCl7cmV0dXJuIEU3ZSh0aGlzKX1YYigpe3JldHVybiB0aGlzLmthLkJmKCk+PQp0aGlzLmthLmthKCl9dUgoKXt2YXIgYT10aGlzLklQYS5nZXQoKS5vYSgpLGI9dGhpcy5nZXRSb290KCkueWMoImlkIil8fCIiLGM9UmVnRXhwKGIrIjpcXGQrKD86XFwuXFxkKyk/Iik7Yj1gJHtifToke3RoaXMuQmYoKX1gO2E9YS5tYXRjaChjKT9hLnJlcGxhY2UoYyxiKTphP2ErYCwke2J9YDpiO3RoaXMuSVBhLnRyYW5zaXRpb24oZD0+ZC53YShhKSkucnVuKF8uYkEoe3JlcGxhY2U6ITB9KSl9Q0UoKXt2YXIgYT10aGlzLmdldFJvb3QoKS55YygiaWQiKXx8IiI7dGhpcy5aZC5zZXQoYSx0aGlzLkJmKCksIm0iKX1CdCgpe18uQ20odGhpcy5jb250YWluZXIsIlFOOHRNZCIsITApfUNzKCl7Xy5DbSh0aGlzLmNvbnRhaW5lciwiUU44dE1kIiwhMSl9UHcoKXtfLkNtKHRoaXMucXAsIndqdWhLZiIsITApfVJ3KCl7Xy5DbSh0aGlzLnFwLCJ3anVoS2YiLCExKX1RYigpe0Y3ZSh0aGlzLHRoaXMuRWEsTWF0aC5taW4odGhpcy5FYSsxLHRoaXMuaXRlbXMubGVuZ3RoLTEpKX1KYigpe0Y3ZSh0aGlzLAp0aGlzLkVhLE1hdGgubWF4KHRoaXMuRWEtMSwwKSl9eGkoYSl7aWYoIXRoaXMuQ2MpcmV0dXJuITA7YT1hLmV2ZW50O2lmKCFhKXJldHVybiExO3N3aXRjaChhLmtleSl7Y2FzZSAiUmlnaHQiOmNhc2UgIkFycm93UmlnaHQiOnRoaXMuaXNSdGw/dGhpcy5KYigpOnRoaXMuUWIoKTthLnByZXZlbnREZWZhdWx0KCk7YnJlYWs7Y2FzZSAiTGVmdCI6Y2FzZSAiQXJyb3dMZWZ0Ijp0aGlzLmlzUnRsP3RoaXMuUWIoKTp0aGlzLkpiKCksYS5wcmV2ZW50RGVmYXVsdCgpfXJldHVybiExfXhtKCl7cmV0dXJuIHRoaXMuWmF9a3UoKXt0aGlzLktjfHx0aGlzLndYfHxfLkNoKHRoaXMse3NlcnZpY2U6e3dYOl8uel9hfX0pLnRoZW4oYT0+e3RoaXMud1g9YS5zZXJ2aWNlLndYO3RoaXMud1gucmVnaXN0ZXJQcmV2aWV3VW5pdCh0aGlzLHRoaXMuZ2V0Um9vdCgpLmVsKCkpfSl9cHJldmlld1VuaXRCZWNvbWVBY3RpdmUoKXt0aGlzLm5vdGlmeSgicnRjVnJlIil9cHJldmlld1VuaXRCZWNvbWVJbmFjdGl2ZSgpe3RoaXMubm90aWZ5KCJoQWpGcWIiKX19OwpfLklNLnByb3RvdHlwZS4kd2EkamE1OWVjPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucHJldmlld1VuaXRCZWNvbWVJbmFjdGl2ZX07Xy5JTS5wcm90b3R5cGUuJHdhJHU3cUo4ZT1mdW5jdGlvbigpe3JldHVybiB0aGlzLnByZXZpZXdVbml0QmVjb21lQWN0aXZlfTtfLklNLnByb3RvdHlwZS4kd2EkakNPVlNlPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMua3V9O18uSU0ucHJvdG90eXBlLiR3YSRLcG83bz1mdW5jdGlvbigpe3JldHVybiB0aGlzLnhtfTtfLklNLnByb3RvdHlwZS4kd2EkdVlUMlZiPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMueGl9O18uSU0ucHJvdG90eXBlLiR3YSRyZkFoN2I9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5KYn07Xy5JTS5wcm90b3R5cGUuJHdhJHVHWG14ZD1mdW5jdGlvbigpe3JldHVybiB0aGlzLlFifTtfLklNLnByb3RvdHlwZS4kd2EkakRvTGFkPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuUnd9O18uSU0ucHJvdG90eXBlLiR3YSRLS2hESWI9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5Qd307Cl8uSU0ucHJvdG90eXBlLiR3YSRubnNyQ2Y9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5Dc307Xy5JTS5wcm90b3R5cGUuJHdhJEVES1lqYj1mdW5jdGlvbigpe3JldHVybiB0aGlzLkJ0fTtfLklNLnByb3RvdHlwZS4kd2Ekaks3UFM9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5YYn07Xy5JTS5wcm90b3R5cGUuJHdhJFVuck92ZT1mdW5jdGlvbigpe3JldHVybiB0aGlzLk1pfTtfLklNLnByb3RvdHlwZS4kd2EkdlFSZmg9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5QZn07Xy5JTS5wcm90b3R5cGUuJHdhJFZQNXRwPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuUGN9O18uSU0ucHJvdG90eXBlLiR3YSRuTmpUOWU9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5Oen07Xy5JTS5wcm90b3R5cGUuJHdhJGRQNHg3ZT1mdW5jdGlvbigpe3JldHVybiB0aGlzLldofTtfLklNLnByb3RvdHlwZS4kd2Ekc1lQR2RiPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuV3F9O18uSU0ucHJvdG90eXBlLiR3YSRQZmpDTWI9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5zY3JvbGxMZWZ0fTsKXy5JTS5wcm90b3R5cGUuJHdhJFkzVTZXYj1mdW5jdGlvbigpe3JldHVybiB0aGlzLndrfTtfLklNLnByb3RvdHlwZS4kd2EkdXFhUGliPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMua2p9O18uSU0ucHJvdG90eXBlLiR3YSRpTmFkZWM9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5VRn07Xy5JTS5wcm90b3R5cGUuJHdhJEZUSm1TZD1mdW5jdGlvbigpe3JldHVybiB0aGlzLlFlfTtfLklNLnByb3RvdHlwZS4kd2Ekc3hsRU09ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5QYn07Xy5JTS5wcm90b3R5cGUuJHdhJGFKOHU3PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMubmJ9O18uSU0ucHJvdG90eXBlLiR3YSRIRll2S2M9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5CYX07Xy5JTS5wcm90b3R5cGUuJHdhJE9SMUJVYj1mdW5jdGlvbigpe3JldHVybiB0aGlzLm9hYX07Xy5JTS5wcm90b3R5cGUuJHdhJE14WjJTZT1mdW5jdGlvbigpe3JldHVybiB0aGlzLmdldENvbnRhaW5lcn07Cl8uSU0ucHJvdG90eXBlLiR3YSRHbWN4NmU9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5CZn07Xy5JTS5wcm90b3R5cGUuJHdhJGs0SXNlYj1mdW5jdGlvbigpe3JldHVybiB0aGlzLlRifTtfLklNLnByb3RvdHlwZS4kd2EkT0hFNlljPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZWt9O18uSU0ucHJvdG90eXBlLiR3YSRlUWJnamM9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5qdX07Xy5JTS5wcm90b3R5cGUuJHdhJE96SlFzZj1mdW5jdGlvbigpe3JldHVybiB0aGlzLkpzfTtfLklNLnByb3RvdHlwZS4kd2EkWGo3aHZiPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucmt9O18uSU0ucHJvdG90eXBlLiR3YSRobWVBaWY9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5sbn07Xy5JTS5wcm90b3R5cGUuJHdhJE0zVnMxPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZndhfTtfLklNLnByb3RvdHlwZS4kd2Ekakd6bjg9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy53b307Cl8uSU0ucHJvdG90eXBlLiR3YSRRZmt1RWI9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy55cX07Xy5JTS5wcm90b3R5cGUuJHdhJFlFNjVLZT1mdW5jdGlvbigpe3JldHVybiB0aGlzLlVqfTtfLklNLnByb3RvdHlwZS4kd2EkSzRuWWFjPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuSmt9O18uRzdlPWZ1bmN0aW9uKCl7fTtfLmpzKF8uQk0sXy5JTSk7CgpfLnYoKTsKfWNhdGNoKGUpe18uX0R1bXBFeGNlcHRpb24oZSl9CnRyeXsKXy5EbWM9WzAsXy5HLF8uZGwsXy51bCwxLF8uSmxdO3ZhciBFbWM9WzAsNCxfLmFsLF8uQywtM107Xy5GbWM9WzAsXy5GLFswLEVtYyxfLkYsWzAsRW1jLF8uRixbMCxfLkUsRW1jLF8uQ11dXSxfLkMsLTEsWzAsXy5GLFswLF8uRSxfLmFsXV0sMSxfLmFsXTsKfWNhdGNoKGUpe18uX0R1bXBFeGNlcHRpb24oZSl9CnRyeXsKXy5CbWM9WzAsXy5kbCxbMCxfLkYsWzAsXy52bCxfLmVsXV0sXy5KbCxfLmRsLC0xXTsKfWNhdGNoKGUpe18uX0R1bXBFeGNlcHRpb24oZSl9CnRyeXsKXy56bWM9Wy01LHt9LF8uRyxfLllrLF8uRCxfLkddO18uQW1jPVswLF8uRixfLnptYyxbMCxfLkYsWzAsXy5HLF8uYWxdXSxbMCxfLkddLF8uRCxbMCxfLkMsLTIsXy5hbCwxLF8uRSwtMl0sWzAsWzAsXy5hbCxfLlRsLF8uRF1dXTsKfWNhdGNoKGUpe18uX0R1bXBFeGNlcHRpb24oZSl9CnRyeXsKXy54bWM9Y2xhc3MgZXh0ZW5kcyBfLmx7Y29uc3RydWN0b3IoYSl7c3VwZXIoYSl9Z2V0Wm9vbSgpe3JldHVybiBfLk5qKHRoaXMsNCwxKX1zZXRab29tKGEpe3JldHVybiBfLndoKHRoaXMsNCxhKX19O18ueW1jPVswLF8ud21jLF8uQywtMSxfLmFsXTsKfWNhdGNoKGUpe18uX0R1bXBFeGNlcHRpb24oZSl9CnRyeXsKXy5KbWM9WzAsXy5HLF8uRCxfLkVdO18uS21jPVswLF8uRSwtMSxfLkcsXy5FXTtfLkxtYz1bMCxfLkcsXy5EXTtfLk1tYz1bMCxfLkYsWzAsWzAsMSxfLkUsXy5qbSxfLkYsWzAsXy5DLF8uR10sMSxfLkttY10sWzAsXy5FLF8uSmxdLF8uRSxfLkYsXy5KbWMsXy5GLF8uTG1jXV07dmFyIE5tYz1bMCxfLmFsLC0zXTt2YXIgT21jPVswLF8uRF07Xy5QbWM9WzAsXy5GLFswLF8uRywxLF8uR10sXy5GLFswLF8uRywtMV0sXy5HXTt2YXIgUW1jPVswLF8uR107dmFyIFJtYz1bMCxfLmRsXTtfLlNtYz1bMCxfLmlsLF8uSGwsWzAsMixfLkMsXy5GLFswLF8uYWwsLTQsXy5KbCxfLmFsLFJtYyxbMCxfLmFsLC0zXSxfLkpsXSxfLkMsXy5EXSwxMyxfLkUsLTEsXy5DLC0xLF8uRWwsMSxfLkpsLFswLF8uQywtM10sWzAsXy5ZaywtMSwxLF8uWWssLTEsXy5ELF8uWWssXy5FXSxfLkpsLF8uRSwtMSxfLkYsWzAsWzMsNF0sXy5FLC0xLF8uSWwsUm1jLF8uSWwsWzAsXy5hbCxfLkpsXSxfLkpsXV07Xy5UbWM9WzAsXy5CbWMsXy5TbWNdO18uVW1jPVswLFswLF8uRixbMCxfLnpsLF8uYWwsXy5BbCxbMCxfLmVsXV1dLF8udnVdO18uVm1jPVswLF8uRCwtMV07dmFyIFdtYz1bMCxfLnpsLF8uRyxbMCxbMCxfLkUsXy5ELF8uYWwsT21jLF8uQyxfLkVdLF8uRixbMCxfLkUsT21jXSxfLkYsWzAsXy5FLC0xLF8uRyxPbWMsXy5FLC0xLF8uRCxbMCxfLlRsXSxfLmFsLF8uRSwtMixfLkRdLF8uRixbMCxfLkUsMSxfLkcsT21jLF8uWWssXy5ELF8uYWwsXy5EXSxfLkYsWzAsXy56bCxfLkUsLTEsMixPbWMsXy5ELF8uemwsXy5GLF8uem1jLF8uR10sMSxfLlBtYyxfLkQsXy5GLFswLF8uRSxfLmFsXSxfLkQsXy5BbWMsXy5VbWMsNCxfLkQsUW1jLF8uRixbMCxfLkUsXy5HXSxfLkQsXy5UbWMsLTEsXy5ELC0xLFswLDEsXy5HLC0xLF8uRSwtMSxfLkcsLTEsXy5WbWMsXy5wbCxfLkcsXy5ELF8uRWxdLFswLFswLF8uVWwsLTIsWzAsXy5VbCxfLkxyXSxfLkYsWzAsXy5lbCwtMSxfLlVsXSwtMSxbMCxfLmxsXV0sWzAsWzAsMixfLkZsLF8uam0sXy5LbWMsXy5GLF8uSm1jLF8uRixfLkxtY10sXy52dSwxLF8uTW1jXSxbMCxfLkYsWzAsXy5VbCxfLkxyLC0xLApbMCxfLkZsLF8uVWwsLTEsXy5GbF1dXSxbMCxfLkZsLC0yXV0sWzAsXy5EXSxbMCxfLlVsXSxbMCxfLlVsXV0sTm1jLF8ucmwsXy5FLF8uRixfLkRtYyxfLkZtYyxObWMsWzBdLDQsWzAsXy51bCxfLkddLFswLFszLDRdLDIsXy5JbCxbMCxfLkpsLF8uYWxdLF8uSWwsWzAsXy5GLF8uQ21jLF8uYWxdLFswLFsxLDJdLF8uSWwsWzAsXy5hbCwtNCxfLkddLF8uRGxdLC0xLF8uQ21jXV07Xy5YbWM9WzAsMSxfLkQsMSxfLkYsV21jLFdtYywxLF8uRCxfLm96LF8uRyxfLnltYywxLFswLF8uRF0sUW1jLDEsWzAsXy5ELF8uRSxfLkQsXy5DLF8uRSwtMSxfLkQsLTldLFswLF8uRF0sWzAsXy5HXSxbMCxfLkRdLF8uRCwtMiwxLF8uRCxbMCxfLkRdLF8uRCxfLkcsXy5EXTsKfWNhdGNoKGUpe18uX0R1bXBFeGNlcHRpb24oZSl9CnRyeXsKXy52bWM9WzAsXy5DLC0xLF8uRSxfLkQsXy5FLF8uRCxfLkUsXy5EXTsKfWNhdGNoKGUpe18uX0R1bXBFeGNlcHRpb24oZSl9CnRyeXsKXy50bWM9ZnVuY3Rpb24oYSl7cmV0dXJuIF8uT2EoXy5pYWEoYSksNCl9O18udW1jPXt9Owp9Y2F0Y2goZSl7Xy5fRHVtcEV4Y2VwdGlvbihlKX0KdHJ5ewpfLnBtYz1bMCxfLnhsLC0xLF8uRSxfLkQsXy54bCxfLkQsXy5FbCwtMSxfLkUsLTEsXy5nbCxfLkUsLTEsXy5ELF8uRyxfLkYsWy01LHt9LF8uRyxfLllrLF8uRCxfLkddXTt2YXIgcW1jPVswLF8uYWwsLTgsXy5GLFswLF8uRyxfLmFsXSwtMV07Xy5ybWM9Wy0xNCx7fSxfLkUsXy5ELC0yLF8ubmwsLTEsXy5FbCxfLkUsXy5ubCxfLkcsLTEsXy5FLHFtY107Xy5zbWM9WzAsXy5ELFswLF8uRyxfLnhsLC0xLF8uRSxfLkRdLHFtY107Cn1jYXRjaChlKXtfLl9EdW1wRXhjZXB0aW9uKGUpfQp0cnl7Cl8uZm1jPVstMSx7fV07Xy5nbWM9Wy0xLHt9XTtfLmhtYz1bMCxfLkYsWzAsXy5MciwtMSxfLkZsLF8uZWwsXy5GbF1dO18uaW1jPVstMSx7fV07Xy5qbWM9WzAsXy5FLC0xLF8uRCxbMCxfLmltYyxfLmZtYyxfLmdtY10sXy5FXTtfLmttYz1bMCxbMSwyXSxfLldsLF8ud2xdO3ZhciBsbWM9WzAsXy5ELC00LF8uRyxbMCxfLlVsLF8udmxdXTtfLm1tYz1bMCxbMCxbMTcsMjNdLDEsXy5HLDEsXy5FLC0xLDIsXy5FLFswLF8uRCxfLkMsLTQsXy5FXSwxLFswLF8uRSwtMSxfLkddLDMsbG1jLC0xLF8uSWwsbG1jLFswLF8uRSwtMixfLkYsWzAsWzEsMiwzLDQsNSw2LDcsOF0sXy5HbCwtN11dLFswLF8uVWwsWzAsXy5ELC01XSxfLkVsXSxfLkUsWzAsXy5EXSxbMCxfLkQsLTJdLF8uSWwsWzAsbG1jLC0xXSxbMCxfLlVsXV0sWzAsXy5DXSwxLF8uRSxfLmttYywtMSxfLlVsLC0xXTtfLm5tYz1bMCxbMSwyXSxfLk1sLF8uR2wsXy5GbCxfLm1tYyxbMCxbMSwyLDNdLF8uSWwsWzAsXy5McixfLlprLF8uQ2xdLF8uSWwsWzAsXy5Mcl0sXy5JbCxbMCxfLnZsLC0xXV0sWzAsXy5VbCxfLnZsXV07Xy5vbWM9WzAsMSxfLm5tYywxLF8udWwsXy5HLF8uQyxfLkpsXTsKfWNhdGNoKGUpe18uX0R1bXBFeGNlcHRpb24oZSl9CnRyeXsKXy5jbWM9WzAsXy5FLF8uU2wsXy5ELF8uVGwsXy5GLFswLF8uRyxfLkMsLTMsXy5ELF8uQ11dOwp9Y2F0Y2goZSl7Xy5fRHVtcEV4Y2VwdGlvbihlKX0KdHJ5ewpfLmRtYz1bMCxfLkMsXy5HLF8uQyxfLkQsXy5pbCxfLkQsXy5pbCxfLkMsLTQsXy5HLF8uQyxbMCxfLkcsMSxfLkVsLF8uRyxfLkUsWzAsXy5DLF8uRyxfLkMsMSxfLkcsLTFdXSxfLkcsLTNdO18uZW1jPVswLF8uQyxfLkcsXy5DLF8uZG1jLF8uRywtMixfLkQsXy5jbWNdOwp9Y2F0Y2goZSl7Xy5fRHVtcEV4Y2VwdGlvbihlKX0KdHJ5ewp2YXIgWW1jPVswLF8uRV07dmFyIFptYz1bMCxfLkYsWzAsXy51bCxfLmRsLF8uTGwsXy51bF1dO3ZhciAkbWM9WzAsWzAsXy5GLFswLF8uRmwsXy5GLFswLF8uRmwsXy5kbCxbMCxfLmVsLFswLF8uVWwsXy5lbCxfLkNsXV0sXy5GLFswLF8uZWwsLTFdXV1dLFptY107dmFyIGFuYz1bMCxfLnVsLF8uZGxdO3ZhciBibmM9WzAsWzEsM10sXy5HbCwxLF8uTWwsXy5GbF07dmFyIGNuYz1bMCwyLF8uVWwsXy5MbCxfLnVsXTt2YXIgZG5jPVswLFsxXSxfLkRsXTt2YXIgZW5jPVswLGJuYyxhbmMsWm1jLCRtY107dmFyIGZuYz1bMCxbOSwxMywxNCwyMCwyMl0sWzddLGJuYyxfLkxyLC0xLF8uVWwsMSxbMCxfLnZsLF8uTGwsXy52bF0sXy5JbCxbMCxfLkxsLF8udmwsLTFdLGFuYyxfLklsLGVuYyxlbmMsWzAsXy5kbCwtMixhbmNdLGRuYyxfLklsLGVuYywtMSxfLkZsLFswLF8udmwsLTFdLDIsJG1jLF8uSWwsZW5jLGNuYyxfLklsLGVuYyxfLkZsLF8uRixbMCxfLkUsWzAsXy51bCxfLkcsXy5KbF0sLTEsXy5FXSxbMCxfLnVsLF8uZGxdLF8uRixbMCxfLkZsLF8uRixbMCxfLkZsLF8uTHIsLTFdLF8uRmxdLDE1LGNuY107dmFyIGduYz1bMCxfLlVsLF8uTGwsXy51bCxfLkZsLC0xXTt2YXIgaG5jPVswLFsxNiwyMV0sMixfLnZsLC0xLGJuYyxbMCxfLkxsXSxnbmMsYW5jLDcsXy5JbCxbMF0sZG5jLF8udmwsMSxfLkYsZ25jLF8uSWwsWzBdLF8uR107dmFyIGluYz1bMCxfLkYsWzAsXy5GbCxbMCxbMV0sXy5HbF1dXTt2YXIgam5jPVswLFswLFs1LDhdLDMsWzAsMSxfLkxsLC0xLF8ubGwsXy5FbCxbMCxfLkYsWzAsXy51bF1dXSxfLkdsLFswLF8uRyxbMCxfLmlsXSxbMCxfLmlsXSxbMCxfLkVdLFswLF8uRV0sWzAsXy5FLF8uaWxdLFswLF8uRV0sWzAsNyxfLmlsXSxbMCxfLmlsLC0yXSxbMCxbMCxfLkcsXy5pbCxfLkpsLF8uQ11dLFswLF8uQyxfLkpsLC0xXSxbMF0sWzAsXy5FXSxbMCxfLkUsLTFdLFswLF8uRSwtMV0sWzAsXy5FXSxbMCxfLkpsXSxbMCxfLmlsLC0yXSxbMCxfLmlsLF8uQ10sWzAsXy5FLF8uQ10sWzAsXy5FLC0xLF8uQyxfLkVdLFswLF8uRSxfLkNdLFswLF8uaWxdLDEsWzAsMSxfLnpsXSxbMCxfLkUsLTNdLFswLF8uRV0sWzAsXy5FXV0saW5jLF8uRGxdLGluY107dmFyIGxuYz1bMCxfLkYsKCk9PmtuYyxfLkZsXSxtbmM9WzAsXy5GLCgpPT5rbmNdLG5uYz1bMCxfLkZsLCgpPT5tbmMsXy5GbCxibmMsXy5GbCxkbmNdLHBuYz1bMCxfLkYsKCk9Pm9uY10sb25jPVswLFsxLDIsMyw0LDUsNiw3LDgsMTAsMTEsMTIsMTMsMTRdLF8uV2wsXy4kayxfLkdsLF8uRGwsXy5JbCwoKT0+bW5jLF8uSWwsKCk9PnBuYyxfLklsLGhuYyxfLklsLGZuYyxfLkNsLF8uSWwsWzAsWzIsM10sWzAsZm5jLF8uRixbMCxobmMsXy5Mcl1dLF8uSWwsYm5jLF8uSWwsWzAsXy5GbCwtMSxfLmxsLF8uRmxdLDM4LGNuYyw1NyxbMCxbMSwyXSxfLklsLFswLF8uTHIsLTFdLF8uSWwsXy5McixbMCwxLF8uZWwsXy5DLF8uRmwsXy5VbF0sWzAsXy5DLC0xXSxbMF1dLF8uaG1jXSxfLklsLFswLF8uRixbMCxbMSwyLDNdLF8uR2wsXy5JbCxobmMsXy5JbCxmbmMsXy5FbCxbMCxfLlVsLC0xXV0sXy5GbCxqbmNdLF8uSWwsKCk9PmxuYyxfLklsLCgpPT5ubmMsXy5JbCxqbmNdLGtuYz1bMCwKXy5GbCwoKT0+b25jXTt2YXIgcW5jPVswLF8uJHRiXTt2YXIgcm5jPVswLF8uJHRiXTt2YXIgc25jPVswLF8uRixbMCxfLkUsXy5TcyxfLkQsXy5TcywtMV0sXy5GLHJuYyxfLkYsWzAsXy4kdGJdLF8uQywtMSxfLkYsWzAsXy4kdGJdLF8uRixbMCxfLiR0Yl0sXy5GLHFuYyxfLkYscm5jLF8uRixxbmMsLTFdO3ZhciB0bmM9WzAsXy5TcyxfLkYsWzAsXy5DLC0xXSxfLkUsXy5TcyxfLkYsXy5Tc107dmFyIHVuYz1bMCxfLkUsXy5Tc107dmFyIHZuYz1bMCxfLkVzLHRuYywxLHNuYyxfLkYsdW5jLFswLF8uRSxfLlNzLF8uRSxfLmlsLF8uRV0sWzAsXy5FLF8ubW1dLF8uam0sWzAsXy5hbF0sWzAsXy5FXSxfLnBsLF8uRixbMCx0bmMsc25jLF8uRix1bmNdXTtfLnduYz1bMiw0LDZdO18ueG5jPWZ1bmN0aW9uKGEsYil7cmV0dXJuIF8uZmgoYSwyLGIpfTtfLnluYz1jbGFzcyBleHRlbmRzIF8ubHtjb25zdHJ1Y3RvcihhKXtzdXBlcihhKX1nZXRJbWFnZVVybCgpe3JldHVybiBfLnQodGhpcywyKX1vYSgpe3JldHVybiBfLkxqKHRoaXMsMil9fTtfLnB6PWNsYXNzIGV4dGVuZHMgXy5se2NvbnN0cnVjdG9yKGEpe3N1cGVyKGEsNDQpfU5jKCl7cmV0dXJuIF8udCh0aGlzLDIwKX19O3ZhciB6bmM9WzAsXy5DLC0zLF8uRV07dmFyIEFuYz1bMCxfLkpsLDEsem5jXTt2YXIgQm5jPVswLF8uRSx6bmNdO3ZhciBGbmM9WzAsXy5FLHpuYyxCbmMsKCk9PkNuYyxfLkYsKCk9PkRuYyxfLkYsKCk9PkVuYyxfLkQsLTEsXy5FLC0xXSxIbmM9WzAsKCk9PkNuYyxfLkYsKCk9PkduYywoKT0+Q25jLHpuYywoKT0+Q25jLDMsXy5GLCgpPT5FbmNdLEluYz1bMCxfLkUsem5jLDYsXy5GLCgpPT5FbmNdLEtuYz1bMCxfLkUsXy5GLCgpPT5EbmMsKCk9PkpuYyxfLkYsKCk9PkVuYyx6bmMsQm5jLF8uRSxfLm1tLF8uRV0sQ25jPVstMTUse30sWzEsMiwzLDQsNSw2LDcsOSwxMCwxMiwxNF0sXy5JbCwoKT0+Sm5jLF8uSWwsKCk9PktuYyxfLklsLCgpPT5JbmMsXy5JbCwoKT0+TG5jLF8uSWwsKCk9PkhuYyxfLklsLFswLF8uRSx6bmMsXy5HXSxfLklsLCgpPT5GbmMsMSxfLklsLFswLF8uRixBbmMsXy5HXSxfLklsLEFuYyxfLkYsKCk9PkVuYyxfLklsLFswLF8ubW1dLF8uZm1jLF8uSWwsWzAsMSxfLkUsMixfLkYsWzAsXy5FLC0xLF8uRCxbLTIzLHt9LFsxMCwxMSwxMl0sOSxfLklsLFltYyxfLklsLFswLAoxLGxuYyxZbWMsWzAsXy5DLC01XV0sXy5JbCxfLmltYyw3LF8ubW0sXy5mbWMsXy5nbWNdLDIsXy5FXSwyLF8uRixfLmptY11dLEduYz1bMCxbMSwyXSxfLklsLCgpPT5DbmMsXy5JbCxbMCxfLkMsLTEsem5jXSwoKT0+Q25jXSxNbmM9WzAsKCk9PkNuYyxfLkYsKCk9PkduY10sSm5jPVswLF8uRCwtMixfLkYsKCk9PkNuYyx6bmMsQm5jLCgpPT5NbmMsMSxfLkYsKCk9PkVuYyxfLkRdLE5uYz1bMCxfLkYsKCk9PkxuY10sTG5jPVswLFsxLDIsMyw0LDUsNiwxMywxNCwxNSwxNiwxNywxOCwxOSwyMV0sXy5JbCwoKT0+S25jLF8ud2wsXy5mbCxfLiRrLF8uRGwsXy5HbCw2LF8uSWwsKCk9Pk5uYyxfLkRsLF8uSWwsKCk9PkpuYyxfLkRsLF8uR2wsXy5tbCxfLkRsLHpuYyxfLkdsXSxEbmM9WzAsXy5FLCgpPT5MbmNdLEVuYz1bMCxfLkUsXy5GLCgpPT5EbmMsem5jXTt2YXIgT25jPVswLF8uQywtMV07Xy5QbmM9WzAsMSxfLnhsLC0xLF8uRCxfLkMsLTYsXy5ELF8ueGwsLTEsXy5KbCwtMSxfLkUsXy5ELFswLF8uRywtMSxfLkYsT25jLFswLF8uRCwtNV0sT25jXSxfLmlsLF8uR107dmFyIFFuYz1bMCxbMSwyXSxfLkdsLC0xLF8uRSxfLnltY107dmFyIFJuYz1bMCxbMV0sXy5JbCxbMCxfLkUsXy5FbCxfLkUsWzAsXy5FLDEsXy5GLFswLF8uRSxbMCxfLkUsLTMsXy5GLFswLF8ubmxdLF8uRV0sXy5ELF8uQyxfLkRdLF8uRixDbmMsXy5HLC01LF8uRSxfLkVsLF8uV2ssXy5YayhfLkUsWzAsXy5lbWMsWzAsXy5DLF8uRCwtMSxfLmlsLF8uQ10sWzAsXy5DLC0xLF8uaWxdLFswLF8uR10sWzAsXy5FXSxfLlBuYyxbMCxfLkcsXy5UbCwtMV0sWzAsXy5wbWMsXy5ybWMsXy5zbWNdXSksXy5GLFswLF8uRV0sMTMsXy5HXSxfLkVsLFswLFswLF8uRixDbmMsXy5FbCxfLkYsWzAsXy5FLC0xLF8uQyxfLkddLF8uRWwsXy5HLC0xXSxfLkYsWzAsXy5FXV0sXy5ELF8uRixRbmMsXy5GLF8uam1jLF8uRV1dO3ZhciBTbmM9WzAsXy5GLFswLF8uRSxfLkcsWzAsXy5FLF8uRWwsLTFdLF8uRixbMCxfLkUsLTFdLF8uRSxfLkYsUm5jXSxfLkUsWzAsXy5DLF8uRSwtMixfLkVsLF8uRixRbmMsXy5GLFswLFsxXSxfLklsLFswLF8uRSwtM11dXSxfLkYsUm5jXTt2YXIgVG5jPVswLF8uRWwsLTIsXy5GLFswLF8uRSwtMixfLkQsXy5DLF8uRSwtM10sXy5FbCxfLkRdO3ZhciBVbmM9WzAsXy5FLC0xLF8uRWwsXy5FLF8uRixbMCxfLkVdXTt2YXIgVm5jPVswLF8uRyxfLkYsWzAsXy5FLFswLF8uRSwtMyxfLmlsLC0xXSxfLkQsWzAsXy5HLF8uQyxfLkUsLTEsWzAsXy5FLC0yLF8uYWwsXy5FLFswLF8ucGxdLF8uRV1dLFswLF8uRSwtMSxfLnBsLF8uQywtMSxfLkYsWzAsXy5FLC0xLFswLF8uQywtM10sXy5FLC0yXSxfLkUsLTFdLFswLF8uQywtMSxfLkUsLTFdXV07dmFyIFduYz1bMCxfLkUsLTMsXy5HLDEsXy5HLFswLF8uQywtMV0sXy5qbSxfLkUsLTEsWy05LHt9LF8uRSwtMixfLkcsXy5FLF8uRCwtMSxfLkVdLF8uRCxfLkVsLF8uRixWbmMsXy5ELC0xLFswLF8uRSwtMl0sXy5DLF8uRyxfLkQsXy5FLFswLF8uRWwsXy51bCxfLkYsWzAsXy5FLF8udWxdXSxfLkcsXy5ELC0xLFswLF8uR10sXy5DLFswLF8uYWwsLTEsMSxfLkVdLFswLDEsXy5hbCxfLkcsWzAsXy56bCxfLkcsLTEsWzAsXy5HLF8uQ10sXy5hbCxbMCxfLkVdXSxfLnpsXSxbMCxfLlRsLF8uR10sXy5FLC0xLDEsXy5DLFswLFsxLDJdLF8uSWwsWzAsXy5DLC0yXSxfLklsLFswLF8uQ10sXy5ELF8uR10sXy5HLFswLF8uRyxfLkUsLTNdXTt2YXIgWG5jPVswLF8uRSxfLlRsLF8uRSxfLlRsLC0xLF8uRixbMCxfLkUsXy5HXSxfLkMsXy5GLFswLF8uRixTbmNdLF8uRixTbmMsXy5GLFswLF8uRSxfLkddLF8uRSxbMCxfLkYsV25jLDEsXy5GLFswLF8uRyxfLkVdLFstMjMsXy51bWMsXy5FLF8uRCxfLkUsLTMsXy5GLFswLF8uRSxfLkddLDEsXy5ELF8uWG1jLF8uRCxfLkUsLTEsXy5ELFswLF8uRSwtMl0sXy5HLF8uRixbMCxfLkUsLTFdLFswLF8uRSxfLkRdLF8uRSwtMSxfLkcsXy5FXSxfLkYsVm5jLF8uVGwsXy5GLFduYyxbMCxfLkYsWzAsXy5FLF8udWwsXy5FXV0sWzAsXy5GLFswLF8uRSxfLkpsLF8ub21jXV0sXy5GLFduYyxfLkYsWzAsXy5FLF8uYWwsLTEsXy5HLF8uYWxdLF8uRixbMCxfLkUsXy5DXV0sXy5HLF8uRWwsXy5HLFswLF8uRSwtMixfLkMsXy5ELF8uRWxdLF8uRWwsXy5HLF8uRCxfLkVsLC0xLFswLF8uRixVbmMsVW5jLF8uRixbMCxfLkVdLF8uRixbMCxfLkUsXy5GLFVuY10sXy5GLFVuY10sXy5FLF8uRiwKWzAsMSxfLkcsXy5FLC0yLF8uQywtMV0sXy5FbCxfLkcsXy5KbCxfLkMsWzAsXy5FLF8uQywtMV0sXy5ELC0xLF8uQyxfLkUsXy5GLFRuYyxUbmMsWzAsXy5FLC0xXSxfLkUsXy5ELF8uRSxfLkddO18uWW5jPVswLF8uRSwtNCwzMixfLkMsLTEsXy5FXTtfLlpuYz1bLTQ0LHt9LF8uWW5jLFswLFswLFswLF8uRSxfLkQsXy5HLF8uRWwsXy5HLF8uRSxfLkMsXy5hbCwtMyxfLkUsXy5ObCxfLkMsXy5GLFswLF8uRSwtMV0sXy5ELF8uRSxfLkQsXy5HLC0yLF8uTmwsXy5TbCxfLkcsXy5ObCxfLkUsXy5ubCxfLkQsXy52bWMsXy5FLC0yLF8uRyxfLllrLF8ueGwsXy5ELC0xLF8uRSxbMCxfLkYsWzAsXy5FLF8uemxdLF8uRyxfLkNdLF8uRyxfLkQsLTEsXy5DLF8uRSwtMSxfLnBsLC0xLF8uRSwtNCxfLmFsLF8uaWwsXy5hbCxfLkQsLTFdLFswLF8uRywtMV1dLF8uemwsXy5BbF0sWzAsXy5HLC0zLFNuYyxbMCxfLkQsLTFdXSxYbmMsU25jLDIsXy5XayxfLllsLF8uRWwsLTEsWzAsXy5FLC0zLF8uRixbMCxfLkMsXy5FLC0xLF8uRyxfLkYsWzAsXy5FLC0xLF8uRyxfLkRdXSxfLkNdLF8uRixbMCxfLkUsXy5HLF8uRCxfLkUsMSxfLkUsLTEsWzAsXy5hbCwtNSxfLkRdXSxfLkYsWzAsXy5FLC0xLF8uRywtMl0sXy5GLFswLF8ud25jLF8uRSxfLklsLApbMCxfLkMsLTNdLF8uRCxfLklsLFswLF8uR10sXy5FLF8uSWwsWzAsXy5FLC0xXV0sWzAsXy5FLC0xLFswLF8uRSxfLkMsXy5FLF8uRyxbMCxfLkYsWzAsXy5FLF8uQyxfLkVdLF8uRixbMCxfLkUsLTEsXy5DXV1dXSxfLkMsXy5FLF8uVGwsXy5FLC0yLFswLF8uRSwtMSxfLkQsLTFdLFswLFs5XSxfLkUsLTEsWzAsXy5FLF8uRixbMCxfLkcsXy5FLC0yLF8uQyxfLkUsLTFdLF8uRWwsLTFdLDMsXy5HLC0xLF8uSWwsdm5jLF8uRSxfLkcsXy5Fc10sWzAsWzAsXy5HLF8uQyxfLkYsWzAsXy5UbCxfLkUsLTFdLF8uRixbMCxfLlRsLF8uRSwtMV0sXy5FLC0yLF8uQywtMSxfLkcsXy5FLC0zLF8uRCxfLkUsLTEsMSxfLkUsXy5HLF8uRSxfLkcsXy5FLC0xLF8uRyxfLkUsXy5ELF8uRSwtMSxfLkcsXy5FLF8uRyxfLkQsXy5HLF8uRixbMCxfLkUsLTFdXV0sXy5GLFswLF8uRSwtMixbMCxfLkYsWzAsXy5FLC0xXV0sXy50bF0sWzAsXy5GLF8udEJiXSxbMCxfLkUsLTMsXy5ELF8uQyxfLkUsXy5ELApfLkUsLTEsXy5DLC0xLF8uRSwtMSxfLkMsLTEsXy5ELC00LF8uRSwtNF0sWzAsXy5FLC0xLF8uRCxfLkddLFswLFswLF8uRSxfLkcsXy5FXSxfLkcsLTEsXy5FLF8uRixbMCxfLkUsXy5hbF0sXy5Pbl0sXy5FLF8uRCwtMSxbMCxfLkUsXy5HLF8uQywtMV0sWy0yLHt9LF8uRV0sXy5FLFswLFhuYywtMSxfLkQsLTEsXy5FLF8uQywtOSxfLkQsLTEsXy5DLC0yLF8uRSxfLllrLF8uQywtMV0sWzAsXy5FLC0yLF8uRWwsXy5FLC0xLF8uRWwsLTEsMSxfLkUsXy5ELF8uRSxfLkQsXy5FLC0yLF8uRCxfLkUsXy5EXSxbMCxfLkcsXy5FcyxfLkYsWzAsXy5FLC0xXV0sWzAsXy5FLFswLHZuYyxfLkddLF8uR10sWzAsXy5FLC0xXSxbMCxfLkUsXy5DLF8uRV0sWzAsXy5FLF8uRyxfLkUsXy5HLC0xXSxfLlRsXTtfLnB6LnByb3RvdHlwZS5vYT1fLiRiKF8uWm5jKTsKfWNhdGNoKGUpe18uX0R1bXBFeGNlcHRpb24oZSl9CnRyeXsKXy51KCJTTXF1T2IiKTsKCl8udigpOwp9Y2F0Y2goZSl7Xy5fRHVtcEV4Y2VwdGlvbihlKX0KdHJ5ewpfLldmYj1mdW5jdGlvbihhKXt2YXIgYjtyZXR1cm4oYj1hW18uS3FdLkhhYykhPW51bGw/YjphW18uS3FdLnBffTtfLkJyPWNsYXNze2NvbnN0cnVjdG9yKGEsYixjKXt0aGlzLldQPWE7dGhpcy5KSWI9Yjt0aGlzLmFLYT1jfXR5cGUoKXtyZXR1cm4gdGhpcy5hS2F9fTt2YXIgWWZiLFhmYjtfLiRmYj0oYSxiKT0+e2E9bmV3IFhmYihhKTtZZmIuaGFzKGIpO18uWmZiW2JdfHwoXy5aZmJbYl09W10pO18uWmZiW2JdLnB1c2goYSl9O1lmYj1uZXcgU2V0KFsxLDNdKTtfLlpmYj1bXTtYZmI9Y2xhc3N7Y29uc3RydWN0b3IoYSl7dGhpcy5rYT1hfXJ4YShhLGIpe3JldHVybiBfLkRnKHRoaXMua2EucnhhKGEsYikpfX07Cn1jYXRjaChlKXtfLl9EdW1wRXhjZXB0aW9uKGUpfQp0cnl7Cl8uVGZiPWZ1bmN0aW9uKGEsYil7ZGVsZXRlIGEua2FbYl07ZGVsZXRlIGEub2FbYl07ZGVsZXRlIGEud2FbYl19O18uVWZiPWZ1bmN0aW9uKGEsYil7dmFyIGM9Xy5JcShiLF8uaVdhKTtiPV8uSXEoYixfLmpXYSk7YyYmYiYmKF8uRGEoYS5rYVtjXSxiKSxhLm9hW2NdJiZhLm9hW2NdLmxlbmd0aD09PWEua2FbY10ubGVuZ3RoJiYoYS53YVtjXSgpLF8uVGZiKGEsYykpKX07Cl8uVmZiPWNsYXNze2NvbnN0cnVjdG9yKCl7dGhpcy5rYT17fTt0aGlzLm9hPXt9O3RoaXMud2E9e307dGhpcy5BYT0wfWNyZWF0ZShhKXtfLlBjKGEsYz0+e2lmKF8uSXEoYyxfLmlXYSl8fF8uSXEoYyxfLmpXYSkpdGhyb3cgRXJyb3IoInVlIik7fSk7dGhpcy5BYSsrO3ZhciBiPTA7cmV0dXJuIF8uUWMoYSxjPT57dmFyIGQ9YCR7dGhpcy5BYX1gO2IrKzt2YXIgZT1gJHtifWA7dGhpcy5rYVtkXXx8KHRoaXMua2FbZF09W10pO3RoaXMua2FbZF0ucHVzaChlKTtyZXR1cm4gYy5DdyhfLmlXYSxkKS5DdyhfLmpXYSxlKX0sdGhpcyl9dHJhY2soYSxiKXtpZih0aGlzLm9hW2FdKXRocm93IEVycm9yKCJ2ZWAiK2EpO3RoaXMub2FbYV09W107dGhpcy53YVthXT1ifX07Xy5iZyhfLlZmYik7Cn1jYXRjaChlKXtfLl9EdW1wRXhjZXB0aW9uKGUpfQp0cnl7Cl8uVkhiPVswLFsxLDIsMyw0LDVdLF8uR2wsXy5JbCxbMCxfLm5sLC00XSxfLmhsLF8uSWwsWzAsWzEsMl0sXy5HbCxfLklsLFswLF8uRyxfLkVdXSxfLklsLFswLF8uRixbMCxfLnhsLC0xLF8uRV1dXTsKfWNhdGNoKGUpe18uX0R1bXBFeGNlcHRpb24oZSl9CnRyeXsKXy5USGI9ZnVuY3Rpb24oYSxiKXtyZXR1cm4gXy5paihhLGIsdm9pZCAwLHZvaWQgMCxfLmxiKX07Xy5VSGI9WzAsXy5FXTsKfWNhdGNoKGUpe18uX0R1bXBFeGNlcHRpb24oZSl9CnRyeXsKXy5VdT1jbGFzcyBleHRlbmRzIF8ubHtjb25zdHJ1Y3RvcihhKXtzdXBlcihhLDgpfWNsZWFyVmFsdWUoKXtyZXR1cm4gXy53aih0aGlzLF8ubEhiKX1zZXRTY2FsYXIoYSl7cmV0dXJuIF8ud2godGhpcyw0LGEpfX07Xy5tSGI9e307Xy5sSGI9WzEsMiwzLDUsN107Cn1jYXRjaChlKXtfLl9EdW1wRXhjZXB0aW9uKGUpfQp0cnl7Cl8uV0hiPXt9O18uWEhiPVsxXTtfLllIYj1bMSwyLDMsNF07Xy5aSGI9WzFdO18uJEhiPVsxLDIsMyw0XTtfLmFJYj1jbGFzcyBleHRlbmRzIF8ubHtjb25zdHJ1Y3RvcihhKXtzdXBlcihhKX19O18uYkliPVsxLDIsNyw5LDEyLDEzLDE0LDE1LDE2LDE3XTtfLlp1PVsyLDMsNCw1LDZdO18uY0liPVsxLDIsM107Xy5kSWI9WzFdO18uZUliPVsxLDIsMyw0XTtfLmZJYj1bMiwzLDRdO18uJHU9WzEsMiwzLDQsNSw2LDcsOCw5LDEwLDExLDEyLDEzLDE0LDE1XTtfLmdJYj1bMV07Xy5oSWI9WzEsMiwzLDRdO18uYXY9WzEsMiwzLDQsNyw4LDEwLDExLDEyLDEzLDE1LDE2LDE3LDE4LDE5LDIwLDIyLDIzLDI0LDI1LDI2LDI3LDI4LDI5LDMwLDMxLDMyLDMzLDM0LDM1LDM2LDM3LDM4LDM5XTsKfWNhdGNoKGUpe18uX0R1bXBFeGNlcHRpb24oZSl9CnRyeXsKXy5idj1jbGFzcyBleHRlbmRzIF8ubHtjb25zdHJ1Y3RvcihhKXtzdXBlcihhKX1nZXRJZCgpe3JldHVybiBfLmlrKHRoaXMsMSl9TWMoYSl7cmV0dXJuIF8uWmgodGhpcywxLGEpfVlnKCl7cmV0dXJuIF8uUWsodGhpcywxKX19O18uaUliPWNsYXNzIGV4dGVuZHMgXy5se2NvbnN0cnVjdG9yKGEpe3N1cGVyKGEpfW9hKGEpe3JldHVybiBfLlNiKHRoaXMsXy5DZSwzLGEpfX07dmFyIGpJYj1jbGFzcyBleHRlbmRzIF8ubHtjb25zdHJ1Y3RvcihhKXtzdXBlcihhKX19O18ua0liPWZ1bmN0aW9uKGEsYil7cmV0dXJuIF8uU2IoYSxqSWIsMyxiKX07Xy5jdj1jbGFzcyBleHRlbmRzIF8ubHtjb25zdHJ1Y3RvcihhKXtzdXBlcihhLDUwMCl9Z2V0SWQoKXtyZXR1cm4gXy5xKHRoaXMsXy5idiwxKX1NYyhhKXtyZXR1cm4gXy5TYih0aGlzLF8uYnYsMSxhKX1ZZygpe3JldHVybiBfLmtqKHRoaXMsXy5idiwxKX1nZXRWYWx1ZSgpe3JldHVybiBfLnEodGhpcyxfLlV1LDIpfXNldFZhbHVlKGEpe3JldHVybiBfLlNiKHRoaXMsXy5VdSwyLGEpfWNsZWFyVmFsdWUoKXtyZXR1cm4gXy5HZSh0aGlzLDIpfWdldFBhcmFtcygpe3JldHVybiBfLnEodGhpcyxqSWIsMyl9fTtfLmxJYj1mdW5jdGlvbihhLGIpe3JldHVybiBfLnVoKGEsMSxfLmN2LGIpfTtfLmR2PWZ1bmN0aW9uKGEsYil7cmV0dXJuIF8uWmgoYSwzLGIpfTtfLmV2PWNsYXNzIGV4dGVuZHMgXy5se2NvbnN0cnVjdG9yKGEpe3N1cGVyKGEpfXNldFZhbHVlKGEsYil7cmV0dXJuIF8ucmoodGhpcywxLF8uY3YsYSxiKX19Owp9Y2F0Y2goZSl7Xy5fRHVtcEV4Y2VwdGlvbihlKX0KdHJ5ewpfLkVJYj1jbGFzcyBleHRlbmRzIF8ubHtjb25zdHJ1Y3RvcihhKXtzdXBlcihhKX1nZXRWZXJzaW9uSW5mbygpe3JldHVybiBfLmdoKHRoaXMsMSl9fTtfLkZJYj1jbGFzcyBleHRlbmRzIF8ubHtjb25zdHJ1Y3RvcihhKXtzdXBlcihhKX19O18uR0liPW5ldyBfLlZ0KCJ4UlJkQmMiLF8uRkliLF8uZXYsW18ubWksITEsXy5saSwiL1VzZXJTZXR0aW5nc1NlcnZpY2UuV3JpdGVTZXR0aW5ncyJdKTsKfWNhdGNoKGUpe18uX0R1bXBFeGNlcHRpb24oZSl9CnRyeXsKXy5DSWI9ZnVuY3Rpb24oYSxiKXtyZXR1cm4gXy5HaihhLDcsXy5hdixiKX07Xy5ESWI9Y2xhc3MgZXh0ZW5kcyBfLmx7Y29uc3RydWN0b3IoYSl7c3VwZXIoYSl9eGQoKXtyZXR1cm4gXy5Zaih0aGlzLDIsXy5oSWIpfWdldENoYW5uZWxJZCgpe3JldHVybiBfLlNoKHRoaXMsXy5hSWIsNCxfLmhJYil9fTsKfWNhdGNoKGUpe18uX0R1bXBFeGNlcHRpb24oZSl9CnRyeXsKXy5odj1jbGFzcyBleHRlbmRzIF8ubHtjb25zdHJ1Y3RvcihhKXtzdXBlcihhKX1nZXREZXZpY2VJZCgpe3JldHVybiBfLklEYSh0aGlzLDEsXy5hdil9fTtfLml2PWZ1bmN0aW9uKGEsYil7cmV0dXJuIF8uU2IoYSxfLmh2LDIsYil9Owp9Y2F0Y2goZSl7Xy5fRHVtcEV4Y2VwdGlvbihlKX0KdHJ5ewpfLmZ2PWZ1bmN0aW9uKGEsYil7cmV0dXJuIF8ubmsoYSwyLF8ubEhiLGIpfTsKfWNhdGNoKGUpe18uX0R1bXBFeGNlcHRpb24oZSl9CnRyeXsKXy5ySWI9Y2xhc3MgZXh0ZW5kcyBfLmx7Y29uc3RydWN0b3IoYSl7c3VwZXIoYSl9fTtfLnNJYj1jbGFzcyBleHRlbmRzIF8ubHtjb25zdHJ1Y3RvcihhKXtzdXBlcihhKX14ZCgpe3JldHVybiBfLnQodGhpcywxKX1nZXRLZXkoKXtyZXR1cm4gXy50KHRoaXMsMil9RmooYSl7cmV0dXJuIF8uZmgodGhpcywyLGEpfX07Xy50SWI9Y2xhc3MgZXh0ZW5kcyBfLmx7Y29uc3RydWN0b3IoYSl7c3VwZXIoYSl9Z2V0U3RhdGUoKXtyZXR1cm4gXy5Paih0aGlzLDEpfXNldFN0YXRlKGEpe3JldHVybiBfLlpoKHRoaXMsMSxhKX1nZXRUeXBlKCl7cmV0dXJuIF8uT2oodGhpcywyKX1BYyhhKXtyZXR1cm4gXy5aaCh0aGlzLDIsYSl9dGUoKXtyZXR1cm4gXy5laSh0aGlzLDIpfX07Xy51SWI9Y2xhc3MgZXh0ZW5kcyBfLmx7Y29uc3RydWN0b3IoYSl7c3VwZXIoYSl9fTtfLnZJYj1jbGFzcyBleHRlbmRzIF8ubHtjb25zdHJ1Y3RvcihhKXtzdXBlcihhKX19O18ud0liPWNsYXNzIGV4dGVuZHMgXy5se2NvbnN0cnVjdG9yKGEpe3N1cGVyKGEpfX07Xy54SWI9Y2xhc3MgZXh0ZW5kcyBfLmx7Y29uc3RydWN0b3IoYSl7c3VwZXIoYSl9fTtfLnhJYi5wcm90b3R5cGUuWGE9Im5FV3NNIjtuZXcgXy5DaShfLnhJYik7Xy55SWI9Y2xhc3MgZXh0ZW5kcyBfLmx7Y29uc3RydWN0b3IoYSl7c3VwZXIoYSl9fTtfLnlJYi5wcm90b3R5cGUuWGE9IlkybVZSZSI7bmV3IF8uQ2koXy55SWIpO18uekliPW5ldyBfLlZ0KCJDOFYwQ2IiLF8ueUliLF8ueEliLFtfLm1pLCExLF8ubGksIi9NZWRpYVNlcnZpY2UuVXBkYXRlUHJvdmlkZXJBZmZpbml0eSJdKTtfLkFJYj1jbGFzcyBleHRlbmRzIF8ubHtjb25zdHJ1Y3RvcihhKXtzdXBlcihhKX12digpe3JldHVybiBfLk9qKHRoaXMsNCl9fTtfLkFJYi5wcm90b3R5cGUuWGE9Ik54SDdDZSI7bmV3IF8uQ2koXy5BSWIpO18uQkliPWNsYXNzIGV4dGVuZHMgXy5se2NvbnN0cnVjdG9yKGEpe3N1cGVyKGEpfX07Xy5CSWIucHJvdG90eXBlLlhhPSJyUnpITCI7bmV3IF8uQ2koXy5CSWIpOwp9Y2F0Y2goZSl7Xy5fRHVtcEV4Y2VwdGlvbihlKX0KdHJ5ewp2YXIgbUliO18ubkliPWZ1bmN0aW9uKGEsYil7cmV0dXJuIF8uR2ooYSwxLG1JYixiKX07Xy5vSWI9Y2xhc3MgZXh0ZW5kcyBfLmx7Y29uc3RydWN0b3IoYSl7c3VwZXIoYSl9fTttSWI9WzFdO3ZhciBwSWI9Y2xhc3MgZXh0ZW5kcyBfLmx7Y29uc3RydWN0b3IoYSl7c3VwZXIoYSl9b2EoKXtyZXR1cm4gXy5naCh0aGlzLDIpfX07cEliLnByb3RvdHlwZS5YYT0ic3ViQ0QiO25ldyBfLkNpKHBJYik7Xy5xSWI9bmV3IF8uVnQoIlVQZ3dtYyIscEliLF8ub0liLFtfLm1pLCExLF8ubGksIi9SZWNvcmRVc2VyU2V0dGluZ3NTZXJ2aWNlLlJlY29yZFVzZXJTZXR0aW5ncyJdKTsKfWNhdGNoKGUpe18uX0R1bXBFeGNlcHRpb24oZSl9CnRyeXsKbmV3IF8uQ2koXy5idCk7Xy5aby5oWkpjamY9ZnVuY3Rpb24oYSl7cmV0dXJuIF8uJG8oXy5hcChfLlF0KGEpKSl9O18uTnEoXy5idCxfLk50LGZ1bmN0aW9uKGEpe2E9Xy5RdChhKTtyZXR1cm4gYSE9bnVsbD9bYV06W119KTtuZXcgXy5DaShfLnZ0KTtfLlpvLm05bEthZj1fLllvO18uTnEoXy52dCxfLmJ0LGZ1bmN0aW9uKGEpe2E9Xy54dChhKTtyZXR1cm4gYSE9bnVsbD9bYV06W119KTsKfWNhdGNoKGUpe18uX0R1bXBFeGNlcHRpb24oZSl9CnRyeXsKXy5OSGI9ZnVuY3Rpb24oYSxiKXtyZXR1cm4gXy5maChhLDEsYil9O18uT0hiPWZ1bmN0aW9uKGEsYil7cmV0dXJuIF8uZmgoYSw0LGIpfTtfLlBIYj1mdW5jdGlvbihhKXtyZXR1cm4gXy5maChhLDExLCJMVV9QSE9UT19HQUxMRVJZIil9O18uUUhiPWNsYXNzIGV4dGVuZHMgXy5se2NvbnN0cnVjdG9yKGEpe3N1cGVyKGEpfU5jKCl7cmV0dXJuIF8udCh0aGlzLDEpfX07Xy5SSGI9ZnVuY3Rpb24oYSxiKXtfLlNiKGEsXy5ZcywxMyxiKX07bmV3IF8uQ2koXy5Fd2IpO18uWm8ubXhCSVRlPV8uWW87Xy5OcShfLkV3YixfLnZ0LGZ1bmN0aW9uKGEpe3JldHVybiBhLkJvKCl9KTtfLlNIYj1uZXcgXy5WdCgid1RlOFdlIixfLkV3YixfLlFIYixbXy5taSwhMCxfLmxpLCIvTG9jYWxQaG90b3NGdWxmaWxsZXJTZXJ2aWNlLkdldFBob3RvQ29sbGVjdGlvbkNvbnRlbnQiXSk7bmV3IF8uQ2koXy5RSGIpOwp9Y2F0Y2goZSl7Xy5fRHVtcEV4Y2VwdGlvbihlKX0KdHJ5ewp2YXIgeUhiPWNsYXNzIGV4dGVuZHMgXy5se2NvbnN0cnVjdG9yKGEpe3N1cGVyKGEpfWdldFR5cGUoKXtyZXR1cm4gXy5Paih0aGlzLDEpfUFjKGEpe3JldHVybiBfLlpoKHRoaXMsMSxhKX10ZSgpe3JldHVybiBfLmVpKHRoaXMsMSl9Z2V0TmFtZSgpe3JldHVybiBfLnQodGhpcywzKX1FZShhKXtyZXR1cm4gXy5maCh0aGlzLDMsYSl9ZGgoKXtyZXR1cm4gXy5waCh0aGlzLDMpfX07Xy5YdT1mdW5jdGlvbihhKXtyZXR1cm4gXy5xKGEseUhiLDEpfTtfLnpIYj1mdW5jdGlvbihhLGIpe3JldHVybiBfLiRoKGEsMyxiKX07Xy5BSGI9Y2xhc3MgZXh0ZW5kcyBfLmx7Y29uc3RydWN0b3IoYSl7c3VwZXIoYSl9c2V0Q29uZmlnKGEpe3JldHVybiBfLlNiKHRoaXMseUhiLDEsYSl9fTtfLkFIYi5wcm90b3R5cGUuWGE9ImZDME9JIjsKfWNhdGNoKGUpe18uX0R1bXBFeGNlcHRpb24oZSl9CnRyeXsKXy54SGI9Y2xhc3MgZXh0ZW5kcyBfLmx7Y29uc3RydWN0b3IoYSl7c3VwZXIoYSw4KX14ZCgpe3JldHVybiBfLnQodGhpcywxKX1nZXRUaXRsZSgpe3JldHVybiBfLnQodGhpcywyKX1zZXRUaXRsZShhKXtyZXR1cm4gXy5maCh0aGlzLDIsYSl9bGQoKXtyZXR1cm4gXy5waCh0aGlzLDIpfUdtKCl7cmV0dXJuIF8udCh0aGlzLDMpfXloKCl7cmV0dXJuIF8udCh0aGlzLDQpfVByKCl7cmV0dXJuIF8ucGgodGhpcyw0KX1nZXRRdWVyeSgpe3JldHVybiBfLnQodGhpcyw1KX1zZXRRdWVyeShhKXtyZXR1cm4gXy5maCh0aGlzLDUsYSl9Z2V0VHlwZSgpe3JldHVybiBfLk9qKHRoaXMsNyl9QWMoYSl7cmV0dXJuIF8uWmgodGhpcyw3LGEpfXRlKCl7cmV0dXJuIF8uZWkodGhpcyw3KX19O18ueEhiLnByb3RvdHlwZS5YYT0ibEVKSTBjIjsKfWNhdGNoKGUpe18uX0R1bXBFeGNlcHRpb24oZSl9CnRyeXsKXy5CSGI9WzFdOwp9Y2F0Y2goZSl7Xy5fRHVtcEV4Y2VwdGlvbihlKX0KdHJ5ewpfLlNpYj1uZXcgXy5iZTtfLlRpYj0hMTsKfWNhdGNoKGUpe18uX0R1bXBFeGNlcHRpb24oZSl9CnRyeXsKdmFyIFhpYixZaWI7Xy5WaWI9ZnVuY3Rpb24oYSxiLGMpe2E9YS5jbG9uZSgpO2Euc2lkZUNoYW5uZWxbYi5KdF09YztyZXR1cm4gYX07Xy5XaWI9ZnVuY3Rpb24oYSxiKXt2YXIgYz1hLlhhO2lmKGM9PWIpcmV0dXJuW2FdO2M9Xy5XV2EoYyxiKTtyZXR1cm4gYy5sZW5ndGg9PTA/W106Wy4uLl8uWVdhKGEsYyxiKS5zZXRdfTtYaWI9Y2xhc3MgZXh0ZW5kcyBfLlpke2NvbnN0cnVjdG9yKGEsYixjKXtzdXBlcihhLGIpO3RoaXMuZGF0YT1jfX07WWliPWZ1bmN0aW9uKGEpe3ZhciBiPVtdLGM9e307Xy5QYyhhLmthLGZ1bmN0aW9uKGQpe18uTGEoZCxmdW5jdGlvbihlKXt0cnl7dmFyIGY9ZS5ldmVudFR5cGUrIiwiK18uYnAoZS5zSmEpLlU4fWNhdGNoKGcpe18uZmEoZyk7cmV0dXJufWUuTEVhIT0iYWYuZGF0YS5FdmVudFR5cGUuSU5WQUxJREFURUQiJiZlLnJlcXVlc3QmJnRoaXMub2FbZl18fGNbZl18fChjW2ZdPSEwLGIucHVzaChlKSl9LHRoaXMpfSxhKTtyZXR1cm4gYn07Cl8uWmliPWZ1bmN0aW9uKGEpe3ZhciBiPTA7Xy5MYShZaWIoYSksZnVuY3Rpb24oYyl7YisrO18uU2liLmRpc3BhdGNoRXZlbnQobmV3IFhpYihjLkxFYSx0aGlzLHtMRWE6Yy5MRWEsWms6Yy5aayxyZXF1ZXN0OmMucmVxdWVzdCxzSmE6Yy5zSmEsQWZhOmMuQWZhLGV2ZW50VHlwZTpjLmV2ZW50VHlwZSx3RGI6Yy53RGJ9KSl9LGEpO2I+MCYmKGEua2E9e30sYS5vYT17fSl9O18uJGliPWNsYXNze2NvbnN0cnVjdG9yKCl7dGhpcy5rYT17fTt0aGlzLm9hPXt9O3RoaXMuV2k9bnVsbH1hZGRFdmVudChhKXt2YXIgYj1fLndpYihhLlprLGEucmVxdWVzdCksYz10aGlzLmthW2JdO2N8fChjPXRoaXMua2FbYl09W10pO2I9YS5MRWE9PSJhZi5kYXRhLkV2ZW50VHlwZS5JTlZBTElEQVRFRCI7Yy5wdXNoKGEpO2ImJmEucmVxdWVzdCYmKGE9YS5ldmVudFR5cGUrIiwiK18uYnAoYS5zSmEpLlU4LHRoaXMub2FbYV09ITApfWdldEV2ZW50VGFyZ2V0KCl7cmV0dXJuIF8uU2lifXN0YXRpYyBnZXRJbnN0YW5jZSgpe3JldHVybiBfLk5oKF8uJGliKX19O3ZhciBhamI9ZnVuY3Rpb24oYSxiKXthLmNhY2hlLndoZW5SZWFkeShiKX07dmFyIGJqYjtiamI9ZnVuY3Rpb24oYSxiLGMsZCl7dHJ5e2IuVWwoKSxhLmhhbmRsZShiLGMsZCl9Y2F0Y2goZSl7Xy5mYShlKX19O18uY2piPWZ1bmN0aW9uKGEsYixjKXtpZihhLndhLmxlbmd0aCl7dmFyIGQ9YS5rYTtmb3IobGV0IGU9MDtlPGEud2EubGVuZ3RoO2UrKyliamIoYS53YVtlXSxiLGMsZCk7YWpiKGEua2EsKDAsXy5pZSkoZnVuY3Rpb24oKXtfLlppYih0aGlzLkFhKX0sYSkpfX07Xy5kamI9ZnVuY3Rpb24oYSxiLGMpe2lmKCFhLm9hLmxlbmd0aClyZXR1cm4gYzt2YXIgZD1hLmthO2ZvcihsZXQgZT0wO2U8YS5vYS5sZW5ndGg7ZSsrKWJqYihhLm9hW2VdLGIsYyxkKTthamIoYS5rYSwoMCxfLmllKShmdW5jdGlvbigpe18uWmliKHRoaXMuQWEpfSxhKSk7cmV0dXJuIGN9O18uZWpiPWNsYXNze2NvbnN0cnVjdG9yKCl7dGhpcy53YT1bXTt0aGlzLm9hPVtdO3RoaXMuV2k9dGhpcy5rYT1udWxsO3RoaXMuQWE9Xy4kaWIuZ2V0SW5zdGFuY2UoKX19O18uU2koXy5lamIpOwp9Y2F0Y2goZSl7Xy5fRHVtcEV4Y2VwdGlvbihlKX0KdHJ5ewp2YXIgckhiPWZ1bmN0aW9uKGEsYixjLGQ9ITEpe3ZhciBlPShuZXcgYikuWGE7YS5jYWNoZS53aGVuUmVhZHkoZnVuY3Rpb24oZil7dmFyIGc9Zi5uYihiKTtfLkxhKGcsZnVuY3Rpb24oaCl7aWYoYyl7bGV0IGs9Xy5XaWIoaC52YWx1ZSxlKTtpZihfLnhhKGssZnVuY3Rpb24obSl7cmV0dXJuIWMobSl9KSlyZXR1cm59Zi5XaWEoaC5XUCk7YS5QMighMSxoLldQLGgudmFsdWUsdm9pZCAwLHZvaWQgMCxkKX0pfSl9LHNIYj1mdW5jdGlvbihhLGIsYyl7YS5jYWNoZS53aGVuUmVhZHkoZnVuY3Rpb24oZCl7ZD1kLlphKGIsYyk7Xy5MYShkLGZ1bmN0aW9uKGUpe2EuUDIoITAsZS5XUCxlLnJlc3BvbnNlLHZvaWQgMCx2b2lkIDAsITEpO2UucmVzcG9uc2UhPWUuTmZiJiZhLlAyKCEwLGUuV1AsZS5OZmIsdm9pZCAwLHZvaWQgMCwhMSl9KX0pfSx0SGI9Y2xhc3N7Y29uc3RydWN0b3IoYSxiLGMpe3RoaXMucnVsZT1hO3RoaXMud2E9Yjt0aGlzLklyPWM7dGhpcy5ldmVudE1hbmFnZXI9Xy4kaWIuZ2V0SW5zdGFuY2UoKX1tYXRjaGVzKGEpe3JldHVybiBhLlVsKCkuaXJiKCk9PQp0aGlzLnJ1bGUucmVxdWVzdFR5cGUmJmEuVWwoKS5vb2EoKT09dGhpcy5ydWxlLnJlc3BvbnNlVHlwZX1oYW5kbGUoYSxiLGMpe2lmKCF0aGlzLm1hdGNoZXMoYSkpcmV0dXJuITE7dmFyIGQ9YS5lQigpO2Q9dGhpcy53YShkLGIpO0FycmF5LmlzQXJyYXkoZCl8fChkPVtkXSk7ZD1fLldpKGQsZT0+ISFlKTt0aGlzLm9hKGQsYyxhLGIpO3JldHVybiEwfX07dmFyIHVIYj1jbGFzcyBleHRlbmRzIHRIYntjb25zdHJ1Y3RvcihhLGIsYyl7c3VwZXIoYSxiLGMpO3RoaXMua2E9bnVsbH1vYShhLGIsYyxkKXt2YXIgZT10aGlzLmthLGY9dGhpcy5rYT9oPT5lKGMuZUIoKSxkLGgpOnZvaWQgMCxnPV8uSXEoYyxfLmlYYSk9PT0hMDtfLkxhKGEsaD0+e2ggaW5zdGFuY2VvZiBfLmw/Yi5XaWEoaCxmLGcpOnJIYihiLGgsZixnKX0sdGhpcyl9fTt2YXIgdkhiPWZ1bmN0aW9uKGEpe3ZhciBiPW5ldyBXZWFrTWFwO3JldHVybiBjPT57Yi5oYXMoYyl8fGIuc2V0KGMsYShjKSk7cmV0dXJuIGIuZ2V0KGMpfX07dmFyIHdIYj1jbGFzcyBleHRlbmRzIHRIYntjb25zdHJ1Y3RvcihhLGIsYyxkKXtzdXBlcihhLGIsZCk7dGhpcy5rYT1jfW9hKGEsYixjLGQpe3ZhciBlPWMuZUIoKTtfLkxhKGEsZnVuY3Rpb24oZil7dmFyIGc9dkhiKGg9PnRoaXMua2EoZSxkLGgpKTtmIGluc3RhbmNlb2YgXy5sP2IudXBkYXRlKGYsZywhMSk6c0hiKGIsZixnKTt0aGlzLmV2ZW50TWFuYWdlci5hZGRFdmVudCh7Wms6Yy5VbCgpLHJlcXVlc3Q6ZSxzSmE6ZixBZmE6ZyxMRWE6ImFmLmRhdGEuRXZlbnRUeXBlLlVQREFURV9XSVRIIn0pfSx0aGlzKX19O18uVnU9ZnVuY3Rpb24oYSxiLGMsZCl7dmFyIGU9Xy5lamIuZ2V0SW5zdGFuY2UoKTthPW5ldyB3SGIoYSxiLGMsZCk7ZS5vYS5wdXNoKGEpfTtfLld1PWZ1bmN0aW9uKGEsYixjKXthPW5ldyB1SGIoYSxiLGMpO18uZWpiLmdldEluc3RhbmNlKCkub2EucHVzaChhKTtyZXR1cm4gYX07Cn1jYXRjaChlKXtfLl9EdW1wRXhjZXB0aW9uKGUpfQp0cnl7Cl8uQ0hiPWZ1bmN0aW9uKGEpe3JldHVybiBfLklEYShhLDEsXy5CSGIpfTtfLll1PWNsYXNzIGV4dGVuZHMgXy5se2NvbnN0cnVjdG9yKGEpe3N1cGVyKGEpfX07Xy5ZdS5wcm90b3R5cGUuWGE9ImREZnprZCI7Xy5ESGI9Y2xhc3MgZXh0ZW5kcyBfLmx7Y29uc3RydWN0b3IoYSl7c3VwZXIoYSl9TmMoKXtyZXR1cm4gXy5Paih0aGlzLDEpfX07Xy5FSGI9ZnVuY3Rpb24oYSl7cmV0dXJuIF8ucShhLF8uREhiLDEpfTtfLkZIYj1jbGFzcyBleHRlbmRzIF8ubHtjb25zdHJ1Y3RvcihhKXtzdXBlcihhKX19O18uR0hiPWZ1bmN0aW9uKGEpe3JldHVybiBfLnEoYSxfLkZIYiwzKX07Xy5ISGI9Y2xhc3MgZXh0ZW5kcyBfLmx7Y29uc3RydWN0b3IoYSl7c3VwZXIoYSl9Z2V0U3RhdHVzKCl7cmV0dXJuIF8ucSh0aGlzLF8udXUsMSl9SG4oKXtyZXR1cm4gXy5raih0aGlzLF8udXUsMSl9fTtfLkhIYi5wcm90b3R5cGUuWGE9IlgwMEw3IjtfLklIYj1mdW5jdGlvbihhLGIpe3JldHVybiBfLkhqKGEsMixiKX07Xy5KSGI9Y2xhc3MgZXh0ZW5kcyBfLmx7Y29uc3RydWN0b3IoYSl7c3VwZXIoYSl9fTtfLkpIYi5wcm90b3R5cGUuWGE9ImRFMFppZCI7Xy5LSGI9Y2xhc3MgZXh0ZW5kcyBfLmx7Y29uc3RydWN0b3IoYSl7c3VwZXIoYSl9fTt2YXIgTEhiPWNsYXNzIGV4dGVuZHMgXy5se2NvbnN0cnVjdG9yKGEpe3N1cGVyKGEpfVluKCl7cmV0dXJuIF8ueGUodGhpcywxKX1mMigpe3JldHVybiBfLndlKHRoaXMsMSl9fTtMSGIucHJvdG90eXBlLlhhPSJrZ3ZrS2QiO18uTUhiPWNsYXNzIGV4dGVuZHMgXy5se2NvbnN0cnVjdG9yKGEpe3N1cGVyKGEpfWdldFN0YXR1cygpe3JldHVybiBfLnEodGhpcyxMSGIsMSl9SG4oKXtyZXR1cm4gXy5raih0aGlzLExIYiwxKX19O18uTUhiLnByb3RvdHlwZS5YYT0iQVdLMVAiO18uVnUoe3JlcXVlc3RUeXBlOl8uS0hiLHJlc3BvbnNlVHlwZTpfLk1IYn0sKCk9Pl8uSkhiLChhLGIsYyk9Pnt2YXIgZD1fLnEoYSxfLkRIYiwxKTtyZXR1cm4gXy5JSGIoYyxfLm1oKGMsXy5ISGIsMixfLm9oKCkpLmZpbHRlcihlPT57ZT1fLkVIYihfLnEoZSxfLll1LDIpKTtyZXR1cm4hKF8uaWsoZSwxKT09PV8uaWsoZCwxKSYmXy5payhlLDIpPT09Xy5payhkLDIpJiZfLkNIYihfLkdIYihlKSk9PT1fLkNIYihfLkdIYihkKSkpfSkpfSwiUU9uZGhmIik7bmV3IF8uQ2koXy5LSGIpO25ldyBfLkNpKF8uTUhiKTsKfWNhdGNoKGUpe18uX0R1bXBFeGNlcHRpb24oZSl9CnRyeXsKXy5uSGI9e307Xy5vSGI9ZnVuY3Rpb24oYSxiKXtyZXR1cm4gXy5aaChhLDEsYil9O18ucEhiPWNsYXNzIGV4dGVuZHMgXy5se2NvbnN0cnVjdG9yKGEpe3N1cGVyKGEpfUxmKCl7cmV0dXJuIF8uT2oodGhpcywzKX1Vbygpe3JldHVybiBfLmVpKHRoaXMsMyl9fTtfLnFIYj1fLlViKDE3NTY5OTExNixfLlV1LF8ucEhiKTtfLm1IYlsxNzU2OTkxMTZdPVswLF8uRyxbLTEsXy5uSGJdLF8uR107Cn1jYXRjaChlKXtfLl9EdW1wRXhjZXB0aW9uKGUpfQp0cnl7Cl8uZ0hiPWNsYXNzIGV4dGVuZHMgXy5se2NvbnN0cnVjdG9yKGEpe3N1cGVyKGEpfWdldFRpdGxlKCl7cmV0dXJuIF8udCh0aGlzLDMpfXNldFRpdGxlKGEpe3JldHVybiBfLmZoKHRoaXMsMyxhKX1sZCgpe3JldHVybiBfLnBoKHRoaXMsMyl9fTtfLmdIYi5wcm90b3R5cGUuWGE9IkR4eGZUYyI7Xy5oSGI9Y2xhc3MgZXh0ZW5kcyBfLmx7Y29uc3RydWN0b3IoYSl7c3VwZXIoYSl9fTtfLmlIYj1jbGFzcyBleHRlbmRzIF8ubHtjb25zdHJ1Y3RvcihhKXtzdXBlcihhKX19O18uaUhiLnByb3RvdHlwZS5YYT0iaE1DUFhjIjtfLmpIYj1jbGFzcyBleHRlbmRzIF8ubHtjb25zdHJ1Y3RvcihhKXtzdXBlcihhKX19O18uakhiLnByb3RvdHlwZS5YYT0iTFQ0QnlmIjtuZXcgXy5DaShfLmlIYik7bmV3IF8uQ2koXy5qSGIpO18uWm8uTFQ0QnlmPWZ1bmN0aW9uKGEpe3JldHVybiBfLiRvKF8uYXAoXy5xKGEsXy5nSGIsMSkpKX07Xy5OcShfLmpIYixfLmdIYixmdW5jdGlvbihhKXthPV8ucShhLF8uZ0hiLDEpO3JldHVybiBhIT1udWxsP1thXTpbXX0pO18ua0hiPW5ldyBfLlZ0KCJ1Wm9FRyIsXy5qSGIsXy5pSGIsW18ubWksITAsXy5saSwiL01lcmNoYW50UHJvZmlsZVNlcnZpY2UuR2V0QWN0aW9uR3JvdXAiXSk7Cn1jYXRjaChlKXtfLl9EdW1wRXhjZXB0aW9uKGUpfQp0cnl7Cl8uZEhiPWZ1bmN0aW9uKGEsYil7cmV0dXJuIF8uRmsoYSwxLGIpfTtfLmVIYj1mdW5jdGlvbihhLGIpe3JldHVybiBfLiRoKGEsMixiKX07Xy5mSGI9Y2xhc3MgZXh0ZW5kcyBfLmx7Y29uc3RydWN0b3IoYSl7c3VwZXIoYSl9fTtfLmZIYi5wcm90b3R5cGUub2E9Xy4kYihbMCxfLlNsLF8uRF0pOwp9Y2F0Y2goZSl7Xy5fRHVtcEV4Y2VwdGlvbihlKX0KdHJ5ewpfLiRHYj1fLmtjKCJ1eE1wVSIsW10pO18uT2MoXy4kR2IpOwp9Y2F0Y2goZSl7Xy5fRHVtcEV4Y2VwdGlvbihlKX0KdHJ5ewp2YXIgZ2tiO2drYj1mdW5jdGlvbihhLGIpe2lmKGEua2FbYl0mJl8uVVdhKGEua2FbYl0pKXthLm9hW2JdPSEwO2xldCBjPV8uVFdhKGEua2FbYl0pO2Eua2FbYl0uaXNFbXB0eSgpJiZkZWxldGUgYS5rYVtiXTtjLnlIP2drYihhLGIpOmMuRmgucmVzb2x2ZShfLnJnKGMub3BlcmF0aW9uKCksKDAsXy5pZSkoZnVuY3Rpb24oKXtna2IodGhpcyxiKX0sYSkpKX1lbHNlIGRlbGV0ZSBhLm9hW2JdfTsKXy5oa2I9Y2xhc3MgZXh0ZW5kcyBfLkVke2NvbnN0cnVjdG9yKCl7c3VwZXIoKTt0aGlzLmthPXt9O3RoaXMub2E9e319cWMoKXtkZWxldGUgdGhpcy5rYTtkZWxldGUgdGhpcy5vYX1leGVjdXRlKGEsYil7Yj1iP2I6ImRlZmF1bHQiO3RoaXMua2FbYl18fCh0aGlzLmthW2JdPW5ldyBfLmZ5YSk7dmFyIGM9Xy5sZigpLGQ9e0ZoOmMsb3BlcmF0aW9uOmEseUg6ITF9O3RoaXMua2FbYl0uZW5xdWV1ZShkKTt0aGlzLm9hW2JdfHxna2IodGhpcyxiKTtyZXR1cm4gYy5wcm9taXNlLkh4KGZ1bmN0aW9uKGUpe2lmKGUgaW5zdGFuY2VvZiBFcnJvcil0aHJvdyBlIGluc3RhbmNlb2YgXy5XZSYmKGQueUg9ITApLGU7dGhyb3cgRXJyb3IoZSk7fSl9c3RhdGljIGdldEluc3RhbmNlKCl7cmV0dXJuIF8uTmgoXy5oa2IpfX07Cn1jYXRjaChlKXtfLl9EdW1wRXhjZXB0aW9uKGUpfQp0cnl7Cl8udSgidXhNcFUiKTsKXy5jSGI9Y2xhc3N7ZmV0Y2goYSl7cmV0dXJuIF8uWUdiKGEsImd3c3JwYyIpLnRoZW4oYj0+YS5VbCgpLlBzKGIpKX13YyhhKXtyZXR1cm4gXy5oa2IuZ2V0SW5zdGFuY2UoKS5leGVjdXRlKCgpPT5fLllHYihhLCJnd3NycGMiKSkudGhlbihiPT5hLlVsKCkuUHMoYikpfX07Xy5iZyhfLmNIYixfLiRHYik7Cl8udigpOwp9Y2F0Y2goZSl7Xy5fRHVtcEV4Y2VwdGlvbihlKX0KdHJ5ewp2YXIgZ0diO2dHYj1mdW5jdGlvbihhLGIpe2I9bmV3IFNldChfLlhpKGIsZT0+Xy5icChlKS5VOCkpO3ZhciBjPVtdO2Zvcih2YXIgZCBvZiBiKWQuZW5kc1dpdGgoIjsiKXx8KGQrPSI7IiksZD1kLnJlcGxhY2UoLyhbIicgOi5bXF0sPV0pL2csIlxcJDEiKSxjLnB1c2goYFtqc2RhdGEqPScke2R9J11gKTtkPVtdO2I9W107Yz1hLnF1ZXJ5U2VsZWN0b3JBbGwoYy5qb2luKCIsIikpO2ZvcihsZXQgZT0wO2U8Yy5sZW5ndGg7ZSsrKXtsZXQgZj1jW2VdO2QucHVzaChmKTtmLmlkIT0iIiYmZi50YWdOYW1lPT0iQy1EQVRBIiYmYi5wdXNoKGBbanNkYXRhPSdkZWZlcnJlZC0ke2YuaWR9J11gKX1pZihiLmxlbmd0aClmb3IoYT1hLnF1ZXJ5U2VsZWN0b3JBbGwoYi5qb2luKCIsIikpLGI9MDtiPGEubGVuZ3RoO2IrKylkLnB1c2goYVtiXSk7cmV0dXJuIF8uZkdiP2QuZmlsdGVyKGU9Pl8uc3JhKGUsXy52cmEsITAsITApPT09bnVsbCk6ZH07Xy5mR2I9ISEoXy5PaVs0MF0+PjIxJjEpO3ZhciBuR2Isb0diO18uaEdiPSExO18ua0diPWZ1bmN0aW9uKGEsYixjKXtyZXR1cm4gXy5pR2IobmV3IF8uakdiKFtiXSwiVWpRTWFjIiksYSxjKX07Xy5pR2I9ZnVuY3Rpb24oYSxiLGMpe3ZhciBbZF09YS5rYSxlPV8ubEdiKGEpLm1hcChmPT5fLkN4YShmKS50aGVuKGc9PntpZighZy5pc0Rpc3Bvc2VkKCkpcmV0dXJuIF8uQ2goZyx7anNkYXRhOnttZXNzYWdlOntjdG9yOnR5cGVvZiBkPT09ImZ1bmN0aW9uIj9kOmQuY29uc3RydWN0b3IsRXdjOjB9fX0pLnRoZW4oaD0+e2g9aC5qc2RhdGEubWVzc2FnZTtyZXR1cm4gaC5pJCgpPyhoPWguY2xvbmUoKSxoPWIoaCksaCE9bnVsbD9oLlRjKCk6aCk6YihoKX0pLnRoZW4oaD0+e2lmKGgpcmV0dXJuIGYubWFwKGs9PmsudGhlbihtPT57Xy5tR2IoYSxtLFtoXSxjKX0pKX0pfSkpO3JldHVybiBfLkloKGUpfTsKbkdiPWZ1bmN0aW9uKGEsYil7dmFyIGM9bmV3IE1hcDtmb3IobGV0IGYgb2YgYSl7YT1bXTt2YXIgZD1fLm9TYShmKSxlPV8ubVNhKGQpO2Q9ZS5tYXAoZz0+Xy5reWEoZykubWVzc2FnZUtleSsiOyIpO2U9ZS5tYXAoZz0+Xy5reWEoZykuWGErIjsiKTtmb3IobGV0IGcgb2YgYil7bGV0IGg9Xy5icChnKS5VODtoLmVuZHNXaXRoKCI7Iil8fChoKz0iOyIpO2QuaW5jbHVkZXMoaCk/YS5wdXNoKGcpOmUuaW5jbHVkZXMoaCkmJmEucHVzaChnKX1jLnNldChmLGEpfXJldHVybiBjfTtfLmxHYj1mdW5jdGlvbihhKXt2YXIgYj1bXTtmb3IobGV0IGQgb2YgYS53YSl7dmFyIGM9ZC5nZXRBdHRyaWJ1dGUoImpzbW9kZWwiKTtpZighYyljb250aW51ZTtsZXQgZT1bXTtjPV8uT3NhKGMpO2ZvcihsZXQgZiBvZiBjKWM9Xy5yaChmKSxlLnB1c2goXy5WeGEoZCxjLGEuQWEpKTtlLmxlbmd0aD4wJiZiLnB1c2goZSl9cmV0dXJuIGJ9OwpfLm1HYj1mdW5jdGlvbihhLGIsYyxkKXtpZighYi5pc0Rpc3Bvc2VkKCkpe2M9YS5vYSE9PSJValFNYWMiP2EuQmEuZ2V0KGIuQWEoKSk6YztjPV8uaEdiP2MubWFwKGU9PmUuVGMoKSk6Yztmb3IobGV0IGUgb2YgYylvR2IoYixlLGEub2EsZCl9fTtvR2I9ZnVuY3Rpb24oYSxiLGMsZCl7aWYoIWEuaXNEaXNwb3NlZCgpKXt2YXIgZT1hLndkKF8uZHlhKGIpKTtlJiZlLmhhbmRsZXIuY2FsbChhLGUucEJiP2IuVGMoKTpiLmNsb25lKCksYyxkKX19O18uakdiPWNsYXNze2NvbnN0cnVjdG9yKGEsYj0id1pWSGxkIil7dmFyIGM9ZG9jdW1lbnQ7dGhpcy5BYT1fLmRnKF8uV2QoYykpLmxXKCk7dGhpcy5vYT1iO3RoaXMua2E9YTt0aGlzLndhPWdHYihjLHRoaXMua2EpO3RoaXMuQmE9bkdiKHRoaXMud2EsdGhpcy5rYSk7dGhpcy5XaT1udWxsfX07Cn1jYXRjaChlKXtfLl9EdW1wRXhjZXB0aW9uKGUpfQp0cnl7Cl8uU2xiPV8ua2MoIm92S3VMZCIpO18uT2MoXy5TbGIpOwp9Y2F0Y2goZSl7Xy5fRHVtcEV4Y2VwdGlvbihlKX0KdHJ5ewp2YXIgeGxiO3hsYj1mdW5jdGlvbihhKXtfLkZiYShfLmdXYT09PV8uZ1dhKTtyZXR1cm4gT2JqZWN0LmZyb21FbnRyaWVzKE9iamVjdC5lbnRyaWVzKGEuc2lkZUNoYW5uZWwpLmZpbHRlcigoW2JdKT0+IWlzTmFOKGIpKS5tYXAoKFtiLGNdKT0+WyJ4LWdvb2ctZXh0LSIrTnVtYmVyKGIpKyItanNwYiIsXy5tYShjLkZjKCkpXSkpfTtfLnlsYj1mdW5jdGlvbihhKXtyZXR1cm4gYSBpbnN0YW5jZW9mIF8ubFdhP3hsYihhKTp7fX07Cn1jYXRjaChlKXtfLl9EdW1wRXhjZXB0aW9uKGUpfQp0cnl7Cl8ud2xiPV8ua2MoImtXZ1hlZSIpO18uT2MoXy53bGIpOwp9Y2F0Y2goZSl7Xy5fRHVtcEV4Y2VwdGlvbihlKX0KdHJ5ewpfLnZsYj1mdW5jdGlvbihhLGIsYyl7Yy5nZXRUeXBlKGIpfTsKfWNhdGNoKGUpe18uX0R1bXBFeGNlcHRpb24oZSl9CnRyeXsKXy50bGI9ZnVuY3Rpb24oKXt2YXIgYT1fLlZvYSgpO2lmKCFhKXRocm93IEVycm9yKCJlZiIpO3JldHVybiBhfTtfLnVsYj1mdW5jdGlvbihhKXtpZihhIGluc3RhbmNlb2YgXy5pYylyZXR1cm4gYTt2YXIgYj1fLnprYShhKTtpZighYil0aHJvdyBFcnJvcigiZmZgIitfLnFmKGEpKTtyZXR1cm4gYn07Xy5Ncj1mdW5jdGlvbihhKXt2YXIgYj1fLnVsYihhKTtyZXR1cm57SXI6YGFwcENvbnRleHQ6ICR7Xy5xZihhKX1gLGV6Ol8ucG9hKG51bGwsKCk9Pl8udGxiKCkuZ2V0KGIpLGEpfX07Cn1jYXRjaChlKXtfLl9EdW1wRXhjZXB0aW9uKGUpfQp0cnl7Cl8ucWxiPWZ1bmN0aW9uKGEsYil7cmV0dXJuIF8uZmgoYSwyLGIpfTtfLnJsYj1jbGFzcyBleHRlbmRzIF8ubHtjb25zdHJ1Y3RvcihhKXtzdXBlcihhKX1VbCgpe3JldHVybiBfLnQodGhpcywxKX19O18uc2xiPWNsYXNzIGV4dGVuZHMgXy5se2NvbnN0cnVjdG9yKGEpe3N1cGVyKGEsMCxfLnNsYi5tZXNzYWdlSWQpfVVsKCl7cmV0dXJuIF8udCh0aGlzLDEsdm9pZCAwLF8uZGIpfWdldEVycm9yKCl7cmV0dXJuIF8ucSh0aGlzLF8uSnhhLDUsXy5kYil9SXUoYSl7cmV0dXJuIF8uU2IodGhpcyxfLkp4YSw1LGEsXy5kYil9T3IoKXtyZXR1cm4gXy5raih0aGlzLF8uSnhhLDUsXy5kYil9fTtfLnNsYi5wcm90b3R5cGUuWGE9InJUQ1pmZiI7Xy5zbGIubWVzc2FnZUlkPSJ3cmIuZnIiOwp9Y2F0Y2goZSl7Xy5fRHVtcEV4Y2VwdGlvbihlKX0KdHJ5ewpfLnUoIk1saG15Iik7Cl8uYmcoY2xhc3N7Y29uc3RydWN0b3IoKXt0aGlzLm9hPV8uSGYoXy5xbyl9a2EoKXtyZXR1cm4gdGhpcy5vYS5nZXQoKS5sb2NhdGlvbi5wYXRobmFtZX19LF8uSjFhKTsKXy52KCk7Cn1jYXRjaChlKXtfLl9EdW1wRXhjZXB0aW9uKGUpfQp0cnl7Cl8udSgiUUdSMGdkIik7Cl8ucGxiPW5ldyBfLm9vKF8uSzFhKTsKXy52KCk7Cn1jYXRjaChlKXtfLl9EdW1wRXhjZXB0aW9uKGUpfQp0cnl7Cl8udSgiUG9FczliIik7Cl8uYmcoY2xhc3N7SzRiKCl7fX0sXy5BWmEpOwpfLnYoKTsKfWNhdGNoKGUpe18uX0R1bXBFeGNlcHRpb24oZSl9CnRyeXsKXy51KCJQanBsdWQiKTsKXy5vbGI9bmV3IF8ub28oXy5CWmEpOwpfLnYoKTsKfWNhdGNoKGUpe18uX0R1bXBFeGNlcHRpb24oZSl9CnRyeXsKXy51KCJPVEEzQWUiKTsKXy5rbGI9ZnVuY3Rpb24oYSxiKXt2YXIgYz0hMTtfLkxhKGIuZ2V0RGVmYXVsdE9wdGlvbnMoKSxkPT57Xy5taT09PWQua2V5JiYoYz0hMCl9LGEpO3JldHVybiBjfTtfLmxsYj1jbGFzc3tjb25zdHJ1Y3Rvcigpe3RoaXMua2E9Xy5YaShfLmVIYShfLkJkKCJNVDdmOWIiKSksYT0+YS5zdHJpbmcoKSl9Z2V0VHlwZShhKXt2YXIgYj0wO18uTGEoYS5nZXREZWZhdWx0T3B0aW9ucygpLGM9PntfLm1pPT09Yy5rZXkmJihiPWMudmFsdWU/MToyKX0sdGhpcyk7aWYoYiE9MClyZXR1cm4gYjthPXBhcnNlSW50KGEsMTApO2lmKGEhPT12b2lkIDApaWYoXy5vRWFbYV0hPT12b2lkIDB8fF8ucEVhW2FdIT09dm9pZCAwKWI9MTtlbHNlIGlmKF8ucUVhW2FdIT09dm9pZCAwfHxfLnJFYVthXSE9PXZvaWQgMCliPTI7cmV0dXJuIGJ9b2EoYSl7cmV0dXJuIF8uQWEodGhpcy5rYSxhW18uS3FdLnBfKX19O18uYmcoXy5sbGIsXy50UmEpOwpfLnYoKTsKfWNhdGNoKGUpe18uX0R1bXBFeGNlcHRpb24oZSl9CnRyeXsKXy5kbGI9Xy5rYygiUDZzUU9jIixbXSk7Xy5PYyhfLmRsYik7Cn1jYXRjaChlKXtfLl9EdW1wRXhjZXB0aW9uKGUpfQp0cnl7Cl8uJGtiPVswLF8uQ2xdOwp9Y2F0Y2goZSl7Xy5fRHVtcEV4Y2VwdGlvbihlKX0KdHJ5ewpfLnUoIkExeW41ZCIpOwp2YXIgYWxiPWNsYXNzIGV4dGVuZHMgXy5se2NvbnN0cnVjdG9yKGEpe3N1cGVyKGEpfXdhKCl7cmV0dXJuIF8uRWUodGhpcywxKX1CYSgpe3JldHVybiBfLnEodGhpcyxfLktyLDIpfUthKCl7cmV0dXJuIF8uemUodGhpcyxfLktyLDIpfUVhKCl7cmV0dXJuIF8ucSh0aGlzLF8uS3IsMyl9SWEoKXtyZXR1cm4gXy5Daih0aGlzLF8uS3IsMyl9b2EoKXtyZXR1cm4gXy5Oaih0aGlzLDQpfUFhKCl7cmV0dXJuIF8uVGoodGhpcyw1LF8ub2goKSl9fTtfLmJnKGNsYXNze2NvbnN0cnVjdG9yKCl7dmFyIGE9Xy5ubShfLkJkKCJZbHdjWmUiKSk7dGhpcy5wb2xpY3k9YT9fLlNrYShhLGFsYik6bnVsbH19LF8uTDFhKTsKXy52KCk7Cn1jYXRjaChlKXtfLl9EdW1wRXhjZXB0aW9uKGUpfQp0cnl7Cl8udSgiWUlabVJkIik7Cl8uYmxiPW5ldyBfLm9vKF8uTTFhKTsKXy52KCk7Cn1jYXRjaChlKXtfLl9EdW1wRXhjZXB0aW9uKGUpfQp0cnl7Cl8uQWdiPWZ1bmN0aW9uKGEpe3RoaXMud2E9YS5xVWN8fG51bGw7dGhpcy5vYT1hLmxFYnx8ITE7dGhpcy5rYT12b2lkIDB9O18uVWkoXy5BZ2IsXy5CQWEpO18uQWdiLnByb3RvdHlwZS5Wbj1mdW5jdGlvbigpe3ZhciBhPW5ldyBGcih0aGlzLndhLHRoaXMub2EpO3RoaXMua2EmJihhLkFhPXRoaXMua2EpO3JldHVybiBhfTsKdmFyIEZyPWZ1bmN0aW9uKGEsYil7Xy5iZS5jYWxsKHRoaXMpO3RoaXMuUmE9YTt0aGlzLkdhPWI7dGhpcy5BYT12b2lkIDA7dGhpcy5zdGF0dXM9dGhpcy5yZWFkeVN0YXRlPTA7dGhpcy5yZXNwb25zZVVSTD10aGlzLnJlc3BvbnNlVHlwZT10aGlzLnJlc3BvbnNlVGV4dD10aGlzLnJlc3BvbnNlPXRoaXMuc3RhdHVzVGV4dD0iIjt0aGlzLm9ucmVhZHlzdGF0ZWNoYW5nZT1udWxsO3RoaXMuTmE9bmV3IEhlYWRlcnM7dGhpcy5vYT1udWxsO3RoaXMuT2E9IkdFVCI7dGhpcy5QYT0iIjt0aGlzLmthPSExO3RoaXMuSWE9dGhpcy53YT10aGlzLkJhPXRoaXMuV2k9bnVsbDt0aGlzLkthPW5ldyBBYm9ydENvbnRyb2xsZXJ9O18uVWkoRnIsXy5iZSk7RnIucHJvdG90eXBlLm9wZW49ZnVuY3Rpb24oYSxiKXtpZih0aGlzLnJlYWR5U3RhdGUhPTApdGhyb3cgdGhpcy5hYm9ydCgpLEVycm9yKCJOZSIpO3RoaXMuT2E9YTt0aGlzLlBhPWI7dGhpcy5yZWFkeVN0YXRlPTE7QmdiKHRoaXMpfTsKRnIucHJvdG90eXBlLnNlbmQ9ZnVuY3Rpb24oYSl7aWYodGhpcy5yZWFkeVN0YXRlIT0xKXRocm93IHRoaXMuYWJvcnQoKSxFcnJvcigiT2UiKTtpZih0aGlzLkthLnNpZ25hbC5hYm9ydGVkKXRocm93IHRoaXMuYWJvcnQoKSxFcnJvcigiUGUiKTt0aGlzLmthPSEwO3ZhciBiPXtoZWFkZXJzOnRoaXMuTmEsbWV0aG9kOnRoaXMuT2EsY3JlZGVudGlhbHM6dGhpcy5BYSxjYWNoZTp2b2lkIDAsc2lnbmFsOnRoaXMuS2Euc2lnbmFsfTthJiYoYi5ib2R5PWEpOyh0aGlzLlJhfHxfLmVhKS5mZXRjaChuZXcgUmVxdWVzdCh0aGlzLlBhLGIpKS50aGVuKHRoaXMuU2EuYmluZCh0aGlzKSx0aGlzLkVhLmJpbmQodGhpcykpfTsKRnIucHJvdG90eXBlLmFib3J0PWZ1bmN0aW9uKCl7dGhpcy5yZXNwb25zZT10aGlzLnJlc3BvbnNlVGV4dD0iIjt0aGlzLk5hPW5ldyBIZWFkZXJzO3RoaXMuc3RhdHVzPTA7dGhpcy5LYS5hYm9ydCgiUmVxdWVzdCB3YXMgYWJvcnRlZC4iKTt0aGlzLndhJiZ0aGlzLndhLmNhbmNlbCgiUmVxdWVzdCB3YXMgYWJvcnRlZC4iKS5jYXRjaCgoKT0+bnVsbCk7dGhpcy5yZWFkeVN0YXRlPj0xJiZ0aGlzLmthJiZ0aGlzLnJlYWR5U3RhdGUhPTQmJih0aGlzLmthPSExLENnYih0aGlzKSk7dGhpcy5yZWFkeVN0YXRlPTB9OwpGci5wcm90b3R5cGUuU2E9ZnVuY3Rpb24oYSl7aWYodGhpcy5rYSYmKHRoaXMuQmE9YSx0aGlzLm9hfHwodGhpcy5zdGF0dXM9dGhpcy5CYS5zdGF0dXMsdGhpcy5zdGF0dXNUZXh0PXRoaXMuQmEuc3RhdHVzVGV4dCx0aGlzLm9hPWEuaGVhZGVycyx0aGlzLnJlYWR5U3RhdGU9MixCZ2IodGhpcykpLHRoaXMua2EmJih0aGlzLnJlYWR5U3RhdGU9MyxCZ2IodGhpcyksdGhpcy5rYSkpKWlmKHRoaXMucmVzcG9uc2VUeXBlPT09ImFycmF5YnVmZmVyIilhLmFycmF5QnVmZmVyKCkudGhlbih0aGlzLm5iLmJpbmQodGhpcyksdGhpcy5FYS5iaW5kKHRoaXMpKTtlbHNlIGlmKHR5cGVvZiBfLmVhLlJlYWRhYmxlU3RyZWFtIT09InVuZGVmaW5lZCImJiJib2R5ImluIGEpe3RoaXMud2E9YS5ib2R5LmdldFJlYWRlcigpO2lmKHRoaXMuR2Epe2lmKHRoaXMucmVzcG9uc2VUeXBlKXRocm93IEVycm9yKCJRZSIpO3RoaXMucmVzcG9uc2U9W119ZWxzZSB0aGlzLnJlc3BvbnNlPXRoaXMucmVzcG9uc2VUZXh0PQoiIix0aGlzLklhPW5ldyBUZXh0RGVjb2RlcjtEZ2IodGhpcyl9ZWxzZSBhLnRleHQoKS50aGVuKHRoaXMucmIuYmluZCh0aGlzKSx0aGlzLkVhLmJpbmQodGhpcykpfTt2YXIgRGdiPWZ1bmN0aW9uKGEpe2Eud2EucmVhZCgpLnRoZW4oYS5aYS5iaW5kKGEpKS5jYXRjaChhLkVhLmJpbmQoYSkpfTtGci5wcm90b3R5cGUuWmE9ZnVuY3Rpb24oYSl7aWYodGhpcy5rYSl7aWYodGhpcy5HYSYmYS52YWx1ZSl0aGlzLnJlc3BvbnNlLnB1c2goYS52YWx1ZSk7ZWxzZSBpZighdGhpcy5HYSl7dmFyIGI9YS52YWx1ZT9hLnZhbHVlOm5ldyBVaW50OEFycmF5KDApO2lmKGI9dGhpcy5JYS5kZWNvZGUoYix7c3RyZWFtOiFhLmRvbmV9KSl0aGlzLnJlc3BvbnNlPXRoaXMucmVzcG9uc2VUZXh0Kz1ifWEuZG9uZT9DZ2IodGhpcyk6QmdiKHRoaXMpO3RoaXMucmVhZHlTdGF0ZT09MyYmRGdiKHRoaXMpfX07CkZyLnByb3RvdHlwZS5yYj1mdW5jdGlvbihhKXt0aGlzLmthJiYodGhpcy5yZXNwb25zZT10aGlzLnJlc3BvbnNlVGV4dD1hLENnYih0aGlzKSl9O0ZyLnByb3RvdHlwZS5uYj1mdW5jdGlvbihhKXt0aGlzLmthJiYodGhpcy5yZXNwb25zZT1hLENnYih0aGlzKSl9O0ZyLnByb3RvdHlwZS5FYT1mdW5jdGlvbigpe3RoaXMua2EmJkNnYih0aGlzKX07dmFyIENnYj1mdW5jdGlvbihhKXthLnJlYWR5U3RhdGU9NDthLkJhPW51bGw7YS53YT1udWxsO2EuSWE9bnVsbDtCZ2IoYSl9O0ZyLnByb3RvdHlwZS5zZXRSZXF1ZXN0SGVhZGVyPWZ1bmN0aW9uKGEsYil7dGhpcy5OYS5hcHBlbmQoYSxiKX07RnIucHJvdG90eXBlLmdldFJlc3BvbnNlSGVhZGVyPWZ1bmN0aW9uKGEpe3JldHVybiB0aGlzLm9hP3RoaXMub2EuZ2V0KGEudG9Mb3dlckNhc2UoKSl8fCIiOiIifTsKRnIucHJvdG90eXBlLmdldEFsbFJlc3BvbnNlSGVhZGVycz1mdW5jdGlvbigpe2lmKCF0aGlzLm9hKXJldHVybiIiO2Zvcih2YXIgYT1bXSxiPXRoaXMub2EuZW50cmllcygpLGM9Yi5uZXh0KCk7IWMuZG9uZTspYz1jLnZhbHVlLGEucHVzaChjWzBdKyI6ICIrY1sxXSksYz1iLm5leHQoKTtyZXR1cm4gYS5qb2luKCJcclxuIil9O3ZhciBCZ2I9ZnVuY3Rpb24oYSl7YS5vbnJlYWR5c3RhdGVjaGFuZ2UmJmEub25yZWFkeXN0YXRlY2hhbmdlLmNhbGwoYSl9O09iamVjdC5kZWZpbmVQcm9wZXJ0eShGci5wcm90b3R5cGUsIndpdGhDcmVkZW50aWFscyIse2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLkFhPT09ImluY2x1ZGUifSxzZXQ6ZnVuY3Rpb24oYSl7dGhpcy5BYT1hPyJpbmNsdWRlIjoic2FtZS1vcmlnaW4ifX0pOwp9Y2F0Y2goZSl7Xy5fRHVtcEV4Y2VwdGlvbihlKX0KdHJ5ewpfLkVyPWZ1bmN0aW9uKCl7fTtfLlVpKF8uRXIsXy5FZCk7Xy5Fci5wcm90b3R5cGUua2E9ZnVuY3Rpb24oKXt9O18uRXIucHJvdG90eXBlLndhPWZ1bmN0aW9uKCl7fTsKfWNhdGNoKGUpe18uX0R1bXBFeGNlcHRpb24oZSl9CnRyeXsKXy56Z2I9ISEoXy5PaVszMV0+PjE3JjEpOwp9Y2F0Y2goZSl7Xy5fRHVtcEV4Y2VwdGlvbihlKX0KdHJ5ewp2YXIgdWdiPWZ1bmN0aW9uKCl7dGhpcy5rYT0iZl9yZXEiO3RoaXMuY29uc3RydWN0b3IuVktifHwodGhpcy5jb25zdHJ1Y3Rvci5WS2I9e30pO3RoaXMuY29uc3RydWN0b3IuVktiW3RoaXMudG9TdHJpbmcoKV09dGhpc307dWdiLnByb3RvdHlwZS5GYz1mdW5jdGlvbigpe3JldHVybiB0aGlzLnRvU3RyaW5nKCl9O3VnYi5wcm90b3R5cGUudG9TdHJpbmc9ZnVuY3Rpb24oKXt0aGlzLm9hfHwodGhpcy5vYT0ibGliOiIrdGhpcy5rYSk7cmV0dXJuIHRoaXMub2F9O3VnYi5wcm90b3R5cGUuZ2V0VHlwZT1mdW5jdGlvbigpe3JldHVybiB0aGlzLmthfTt2YXIgdmdiPWNsYXNzIGV4dGVuZHMgdWdie307Xy53Z2I9Y2xhc3N7Y29uc3RydWN0b3IoYSl7YT8odGhpcy5rYT1fLnZlKGEuRWEoKSl8fC0xLGEud2EoKSxhLm9hKCksXy52ZShhLkJhKCkpLHRoaXMub2E9YS5BYSgpfHwiIik6KHRoaXMua2E9LTEsdGhpcy5vYT0iIil9fTtfLnhnYj1uZXcgXy53Z2I7Xy55Z2I9bmV3IHZnYjsKfWNhdGNoKGUpe18uX0R1bXBFeGNlcHRpb24oZSl9CnRyeXsKdmFyIGlnYjtpZ2I9ZnVuY3Rpb24oYSxiLGMpe3R5cGVvZiBiPT09ImZ1bmN0aW9uIj9fLmZIYShjKXx8Yi5jYWxsKGMpOmImJnR5cGVvZiBiLmhhbmRsZUV2ZW50PT0iZnVuY3Rpb24iJiYoXy5mSGEoYil8fGIuaGFuZGxlRXZlbnQuY2FsbChiKSl9O18uamdiPWZ1bmN0aW9uKGEsYixjLGQpe3ZhciBlPXR5cGVvZiBiPT09ImZ1bmN0aW9uIjsoZXx8IV8uZkhhKGIpKSYmZSYmXy5mSGEoZCk7aWYoIShlfHxiJiZ0eXBlb2YgYi5oYW5kbGVFdmVudD09ImZ1bmN0aW9uIikpdGhyb3cgRXJyb3IoInBhIik7YT0oMCxfLmllKShpZ2IsbnVsbCxhLGIsZCk7cmV0dXJuIF8uZWEuc2V0VGltZW91dChhLGN8fDApfTsKfWNhdGNoKGUpe18uX0R1bXBFeGNlcHRpb24oZSl9CnRyeXsKXy51KCJieWZUT2IiKTsKdmFyIGtnYj1mdW5jdGlvbihhLGIpe3RoaXMub2E9YTt0aGlzLndhPWI7aWYoIWMpe3ZhciBjPW5ldyBfLkhlKCIvL3d3dy5nb29nbGUuY29tL2ltYWdlcy9jbGVhcmRvdC5naWYiKTtfLnpLYShjKX10aGlzLkFhPWN9O18uYWE9a2diLnByb3RvdHlwZTtfLmFhLldpPW51bGw7Xy5hYS5LSWI9MUU0O18uYWEuV0NhPSExO18uYWEubmhiPTA7Xy5hYS5BMmE9bnVsbDtfLmFhLkt6Yj1udWxsO18uYWEuc2V0VGltZW91dD1mdW5jdGlvbihhKXt0aGlzLktJYj1hfTtfLmFhLnN0YXJ0PWZ1bmN0aW9uKCl7aWYodGhpcy5XQ2EpdGhyb3cgRXJyb3IoIkFlIik7dGhpcy5XQ2E9ITA7dGhpcy5uaGI9MDtsZ2IodGhpcyl9O18uYWEuc3RvcD1mdW5jdGlvbigpe21nYih0aGlzKTt0aGlzLldDYT0hMX07CnZhciBsZ2I9ZnVuY3Rpb24oYSl7YS5uaGIrKztuYXZpZ2F0b3IhPT1udWxsJiYib25MaW5lImluIG5hdmlnYXRvciYmIW5hdmlnYXRvci5vbkxpbmU/Xy5JbigoMCxfLmllKShhLnZfLGEsITEpLDApOihhLmthPW5ldyBJbWFnZSxhLmthLm9ubG9hZD0oMCxfLmllKShhLmpIYyxhKSxhLmthLm9uZXJyb3I9KDAsXy5pZSkoYS5pSGMsYSksYS5rYS5vbmFib3J0PSgwLF8uaWUpKGEuaEhjLGEpLGEuQTJhPV8uSW4oYS5rSGMsYS5LSWIsYSksYS5rYS5zcmM9U3RyaW5nKGEuQWEpKX07Xy5hYT1rZ2IucHJvdG90eXBlO18uYWEuakhjPWZ1bmN0aW9uKCl7dGhpcy52XyghMCl9O18uYWEuaUhjPWZ1bmN0aW9uKCl7dGhpcy52XyghMSl9O18uYWEuaEhjPWZ1bmN0aW9uKCl7dGhpcy52XyghMSl9O18uYWEua0hjPWZ1bmN0aW9uKCl7dGhpcy52XyghMSl9OwpfLmFhLnZfPWZ1bmN0aW9uKGEpe21nYih0aGlzKTthPyh0aGlzLldDYT0hMSx0aGlzLm9hLmNhbGwodGhpcy53YSwhMCkpOnRoaXMubmhiPD0wP2xnYih0aGlzKToodGhpcy5XQ2E9ITEsdGhpcy5vYS5jYWxsKHRoaXMud2EsITEpKX07CnZhciBtZ2I9ZnVuY3Rpb24oYSl7YS5rYSYmKGEua2Eub25sb2FkPW51bGwsYS5rYS5vbmVycm9yPW51bGwsYS5rYS5vbmFib3J0PW51bGwsYS5rYT1udWxsKTthLkEyYSYmKF8uSm4oYS5BMmEpLGEuQTJhPW51bGwpO2EuS3piJiYoXy5KbihhLkt6YiksYS5LemI9bnVsbCl9LG5nYj1jbGFzcyBleHRlbmRzIF8uYmV7Y29uc3RydWN0b3IoKXtzdXBlcigpO3RoaXMua2E9bmV3IGtnYih0aGlzLkVhLHRoaXMpO3RoaXMud2E9NTFFMytNYXRoLnJvdW5kKDE4RTMqTWF0aC5yYW5kb20oKSl9R2EoKXt2YXIgYT1EYXRlLm5vdygpO3JldHVybiBhLXRoaXMub2E+dGhpcy53YT8odGhpcy5rYS5XQ2F8fChuYXZpZ2F0b3IhPT1udWxsJiYib25MaW5lImluIG5hdmlnYXRvciYmIW5hdmlnYXRvci5vbkxpbmU/KHRoaXMub2E9YS10aGlzLndhKzFFMyxfLmpnYigiQmUiLCgwLF8uaWUpKHRoaXMuQmEsdGhpcywhMSksMCkpOihhPW5ldyBfLkhlKCIvL3d3dy5nb29nbGUuY29tL2ltYWdlcy9jbGVhcmRvdC5naWYiKSwKXy56S2EoYSksdGhpcy5rYS5BYT1hLHRoaXMua2Euc3RhcnQoKSkpLCEwKTohMX1FYShhKXt0aGlzLm9hPURhdGUubm93KCk7dGhpcy5CYShhKX1CYShhKXt0aGlzLkFhPWE7dGhpcy5kaXNwYXRjaEV2ZW50KCJnIil9fTtuZ2IucHJvdG90eXBlLldpPW51bGw7bmdiLnByb3RvdHlwZS5vYT0wO25nYi5wcm90b3R5cGUuQWE9ITA7dmFyIG9nYj1jbGFzc3tjb25zdHJ1Y3Rvcigpe3RoaXMua2E9bmV3IG5nYn19O18udmQoXy5wUmEsb2diKTtfLmhjKCkubmthKGE9Pnt2YXIgYj1uZXcgb2diKGEpO2EucmVnaXN0ZXJTZXJ2aWNlKF8ucFJhLGIpfSk7Cl8udigpOwp9Y2F0Y2goZSl7Xy5fRHVtcEV4Y2VwdGlvbihlKX0KdHJ5ewpfLnUoImxzalZtYyIpOwp2YXIgbEpiLG1KYjtsSmI9ZnVuY3Rpb24oYSxiPSEwKXtfLkVkLmNhbGwodGhpcyk7dGhpcy5vYT1hO3RoaXMua2E9bmV3IGtKYih0aGlzKTtiJiZ0aGlzLk40YigpO18uRGkodGhpcyx0aGlzLmthKX07Xy4kaGI9Y2xhc3MgZXh0ZW5kcyBfLmJhe2NvbnN0cnVjdG9yKCl7c3VwZXIoKTt0aGlzLm1lc3NhZ2U9IlhTUkYgdG9rZW4gcmVmcmVzaCJ9fTttSmI9Y2xhc3MgZXh0ZW5kcyBfLmx7Y29uc3RydWN0b3IoYSl7c3VwZXIoYSl9fTt2YXIgbkpiPVswLF8uRV07dmFyIG9KYj1jbGFzcyBleHRlbmRzIF8ubHtjb25zdHJ1Y3RvcihhKXtzdXBlcihhLDAsb0piLm1lc3NhZ2VJZCl9fTtvSmIubWVzc2FnZUlkPSJ4c3JmIjt2YXIgcEpiPV8uVWIoNDg0NDgzNTAsXy5SbixvSmIpO18uU25bNDg0NDgzNTBdPVsieHNyZiIsXy5FLG5KYixfLkVdO18uVWkobEpiLF8uRWQpO18uYWE9bEpiLnByb3RvdHlwZTtfLmFhLmMxYT1udWxsO18uYWEuQ3piPSJhdCI7Xy5hYS5NSWI9bnVsbDtfLmFhLk40Yj1mdW5jdGlvbigpe3ZhciBhPXRoaXMub2EuZ2V0KF8uU28pO2EuQWEuaW5jbHVkZXModGhpcy5rYSk7YS53YSh0aGlzLmthKX07Xy5hYS5jb25maWd1cmU9ZnVuY3Rpb24oYSxiLGMpe3RoaXMuYzFhPWE7dGhpcy5NSWI9YjtjJiYodGhpcy5DemI9Yyl9O3ZhciBrSmI9ZnVuY3Rpb24oYSl7dGhpcy5vYT1hfTtfLlVpKGtKYixfLkVyKTsKa0piLnByb3RvdHlwZS5rYT1mdW5jdGlvbihhKXt2YXIgYj10aGlzLm9hO2lmKGIuQ3piJiZiLmMxYSlpZihhLm9hPT0iREVMRVRFIilhLkZiKGIuYzFhKTtlbHNle3ZhciBjPWIuQ3piO2I9Yi5jMWE7bGV0IGQ9YS5BYTtkPyhhPWQuZWxlbWVudHNbY10sYXx8KGE9ZC5vd25lckRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImlucHV0IiksYS5zZXRBdHRyaWJ1dGUoIm5hbWUiLGMpLGEuc2V0QXR0cmlidXRlKCJoaWRkZW4iLCEwKSxkLmFwcGVuZENoaWxkKGEpKSxhLnZhbHVlPWIpOmEuU2F8fGEuR2EoYyxiKX19OwprSmIucHJvdG90eXBlLndhPWZ1bmN0aW9uKGEpe2ZvcihsZXQgZD0wO2Q8YS5sZW5ndGg7ZCsrKXtsZXQgZSxmPShlPWFbZF0ub2EoKSk9PW51bGw/dm9pZCAwOmUuTGMocEpiKTt2YXIgYjtpZihiPWYpe2I9dGhpcy5vYTtsZXQgZz0hMTt2YXIgYz12b2lkIDA7bGV0IGg9Yi5NSWI7Xy5xKGYsbUpiLDIsXy5kYikmJihjPV8ucShmLG1KYiwyLF8uZGIpLGM9Xy5naChjLDEpKTtoJiZjPT09aCYmKGIuYzFhPV8uZ2goZiwxLF8uZGIpLGc9ITApO2I9Z31pZihiKXRocm93IG5ldyBfLiRoYjt9fTtfLnZkKF8ucVJhLGxKYik7Xy5oYygpLm5rYShhPT57dmFyIGI9bmV3IGxKYihhLCExKTthLnJlZ2lzdGVyU2VydmljZShfLnFSYSxiKTtiLmNvbmZpZ3VyZShfLm5tKF8uQmQoIlNObE0wZSIpKSxfLm5tKF8uQmQoIlMwNkdyYiIpKSl9KTsKXy52KCk7Cn1jYXRjaChlKXtfLl9EdW1wRXhjZXB0aW9uKGUpfQp0cnl7Cl8udSgiTEVpa1plIik7CnZhciBFZ2IsRmdiLEdnYixIZ2IsSWdiLEpnYixLZ2IsT2diLFBnYixRZ2IsU2diLEhyLFhnYixlaGIsZmhiLGhoYixpaGIsamhiLGtoYjtFZ2I9ZnVuY3Rpb24oYSl7dHJ5e3JldHVybiBfLmplYT1fLnlkYSxhKCl9ZmluYWxseXtfLmplYT12b2lkIDB9fTtGZ2I9ZnVuY3Rpb24oYSl7cmV0dXJuIF8ubGVhKGEsMCxiPT5BcnJheS5pc0FycmF5KGIpP0ZnYihiKTpfLm1lYShiKSl9O0dnYj1mdW5jdGlvbihhLGIsYyl7YS5wdXNoKGVuY29kZVVSSUNvbXBvbmVudChiKSsiPSIrZW5jb2RlVVJJQ29tcG9uZW50KGMpKX07SGdiPWZ1bmN0aW9uKGEpe2E9YS5lbGVtZW50czt2YXIgYjtmb3IobGV0IGM9MDtiPWFbY107YysrKWlmKCFiLmRpc2FibGVkJiZiLnR5cGUmJmIudHlwZS50b0xvd2VyQ2FzZSgpPT0iZmlsZSIpcmV0dXJuITA7cmV0dXJuITF9OwpJZ2I9ZnVuY3Rpb24oYSl7dmFyIGI9W10sYz1hLmVsZW1lbnRzLGQ7Zm9yKHZhciBlPTA7ZD1jLml0ZW0oZSk7ZSsrKWlmKGQuZm9ybT09YSYmIWQuZGlzYWJsZWQmJmQudGFnTmFtZSE9IkZJRUxEU0VUIil7dmFyIGY9ZC5uYW1lO3N3aXRjaChkLnR5cGUudG9Mb3dlckNhc2UoKSl7Y2FzZSAiZmlsZSI6Y2FzZSAic3VibWl0IjpjYXNlICJyZXNldCI6Y2FzZSAiYnV0dG9uIjpicmVhaztjYXNlICJzZWxlY3QtbXVsdGlwbGUiOmQ9Xy5McGEoZCk7aWYoZCE9bnVsbCl7bGV0IGc7Zm9yKGxldCBoPTA7Zz1kW2hdO2grKylHZ2IoYixmLGcpfWJyZWFrO2RlZmF1bHQ6ZD1fLkxwYShkKSxkIT1udWxsJiZHZ2IoYixmLGQpfX1jPWEuZ2V0RWxlbWVudHNCeVRhZ05hbWUoIklOUFVUIik7Zm9yKGQ9MDtlPWNbZF07ZCsrKWUuZm9ybT09YSYmZS50eXBlLnRvTG93ZXJDYXNlKCk9PSJpbWFnZSImJihmPWUubmFtZSxHZ2IoYixmLGUudmFsdWUpLEdnYihiLGYrIi54IiwiMCIpLEdnYihiLGYrIi55IiwKIjAiKSk7cmV0dXJuIGIuam9pbigiJiIpfTtKZ2I9ZnVuY3Rpb24oYSl7cmV0dXJuIEVnYigoKT0+RmdiKGEpKX07S2diPWZ1bmN0aW9uKGEsYixjLGQsZSxmKXt0aGlzLm9hPWE7dGhpcy5rYT1iO2lmKGI9PT12b2lkIDB8fGI8PTApYT1FcnJvcigiRWVgIitiKyJgIisoYSYmYS5nZXRQYXRoKCkpKSxfLkRyKG51bGwsYSk7dGhpcy5CYT1jPT0xO3RoaXMuQWE9ZDt0aGlzLndhPWU7dGhpcy5FaT1mO2Y9PW51bGx8fGYuZ2V0TGFzdEVycm9yKCl9O09nYj1mdW5jdGlvbihhKXsodGhpcy5JYT1hKSYmXy5MZ2IodGhpcywiQkVTVF9FRkZPUlQiKTtfLmtlKCk7dGhpcy5rYT1uZXcgXy5IZTt0aGlzLm9hPSJQT1NUIjt0aGlzLlFiPU1nYisrO05nYnx8KGE9bmV3IERhdGUsTmdiPWEuZ2V0SG91cnMoKSozNjAwK2EuZ2V0TWludXRlcygpKjYwK2EuZ2V0U2Vjb25kcygpKTt0aGlzLlJhPTErTmdiK3RoaXMuUWIqMUU1O3RoaXMuQmE9bmV3IF8ubGc7dGhpcy5uYj0tMX07ClBnYj1mdW5jdGlvbihhKXt2YXIgYjtpZihhLmxlbmd0aCE9PTAmJnR5cGVvZihiPWFbMF0pPT09InN0cmluZyImJmIpcmV0dXJuIGJ9O1FnYj1mdW5jdGlvbihhLGIpe3ZhciBjPWIuZ2V0U3RhdHVzKCksZD1iLnpSO2I9Yi5nZXRMYXN0RXJyb3IoKTtjPj0wJiYoYSs9YCAoSFRUUCBTdGF0dXM6ICR7Y30pYCk7ZCYmKGErPWAgKFhIUiBFcnJvciBDb2RlOiAke2R9KWApO2ImJihhKz1gIChYSFIgRXJyb3IgTWVzc2FnZTogJyR7Yn0nKWApO3JldHVybiBhfTtfLlJnYj1mdW5jdGlvbigpe3JldHVybmAke18uQmQoImVwdFplIil9ZGF0YS9iYXRjaGV4ZWN1dGVgfTtTZ2I9ZnVuY3Rpb24oKXtfLmJhLmNhbGwodGhpcyk7dGhpcy5tZXNzYWdlPSJSZXRyeWFibGUgU2VydmVyIEVycm9yIn07CkhyPWZ1bmN0aW9uKCl7Xy5iZS5jYWxsKHRoaXMpO18uYmUuY2FsbCh0aGlzKTt0aGlzLkFhPW5ldyBfLmZ5YTt0aGlzLkdhPW5ldyBfLmxnO3RoaXMua2E9W107dGhpcy53YT1bXTt0aGlzLm9hPVtdO3RoaXMuemQ9bmV3IF8uYWUodGhpcyk7bmV3IF8ubGc7dGhpcy5JYT0hMDt0aGlzLmY0PSExfTtfLlRnYj1jbGFzcyBleHRlbmRzIF8ubHtjb25zdHJ1Y3RvcihhKXtzdXBlcihhLDAsXy5UZ2IubWVzc2FnZUlkKX1nZXREYXRhKCl7cmV0dXJuIF8uZ2godGhpcyw0LF8uZGIpfXNldERhdGEoYSl7cmV0dXJuIF8uZmgodGhpcyw0LGEsXy5kYil9b2EoKXtyZXR1cm4gXy5xKHRoaXMsXy5SbiwxMCxfLmRiKX19O18uVGdiLm1lc3NhZ2VJZD0iZXIiOwp2YXIgVWdiPV8uV2IoXy5UZ2IpLFZnYj1jbGFzcyBleHRlbmRzIF8ubHtjb25zdHJ1Y3RvcihhKXtzdXBlcihhLDAsVmdiLm1lc3NhZ2VJZCl9RWEoKXtyZXR1cm4gXy5Kaih0aGlzLDEsXy5kYil9d2EoKXtfLmdoKHRoaXMsMixfLmRiKX1vYSgpe18uZ2godGhpcywzLF8uZGIpfUJhKCl7cmV0dXJuIF8uSmoodGhpcyw0LF8uZGIpfUFhKCl7cmV0dXJuIF8uZ2godGhpcywxMyxfLmRiKX19O1ZnYi5tZXNzYWdlSWQ9ImRpIjt2YXIgV2diPV8uV2IoVmdiKTsKS2diLnByb3RvdHlwZS5CYWE9ZnVuY3Rpb24oKXtpZih0aGlzLkJhKXZhciBhPSExO2Vsc2UgaWYoYT0hIXRoaXMub2EpYTpzd2l0Y2goYT10aGlzLm9hLGEuTFJhKXtjYXNlICJSRVRSWSI6YT0hMDticmVhayBhO2Nhc2UgIkZBSUwiOmE9ITE7YnJlYWsgYTtjYXNlICJCRVNUX0VGRk9SVCI6YT10aGlzLkFhfHx0aGlzLm9hLlZOYTthPXRoaXMua2E+PTUwMCYmYTwzPyEwOiExO2JyZWFrIGE7ZGVmYXVsdDp0aHJvdyBFcnJvcigiRmVgIithLkxSYSk7fXJldHVybiBhfTtLZ2IucHJvdG90eXBlLnRvU3RyaW5nPWZ1bmN0aW9uKCl7cmV0dXJuIFN0cmluZyh0aGlzLmthKX07S2diLnByb3RvdHlwZS5zWj1mdW5jdGlvbigpe3ZhciBhLGI7cmV0dXJuKGI9dGhpcy5yZXNwb25zZUhlYWRlcnMpIT1udWxsP2I6dGhpcy5yZXNwb25zZUhlYWRlcnM9KGE9dGhpcy5FaSk9PW51bGw/dm9pZCAwOmEuc1ooKX07dmFyIE1nYj0wLE5nYjtfLmFhPU9nYi5wcm90b3R5cGU7Xy5hYS5XaT1udWxsOwpfLmFhLlA3Yj0hMDtfLmFhLng5YT0hMDtfLmFhLm9oYj0tMTtfLmFhLkxJYj0tMTtfLmFhLnhTYj0tMTtfLmFhLlVaYj0tMTtfLmFhLk5jYj1fLnhnYjtfLmFhLmhPYj0tMTtfLmFhLlZOYT0wO18uYWEuTFJhPSJCRVNUX0VGRk9SVCI7WGdiPWZ1bmN0aW9uKGEpe2lmKGEuc3RhcnRlZCl0aHJvdyBFcnJvcigiR2UiKTt9O18uTGdiPWZ1bmN0aW9uKGEsYil7WGdiKGEpO2EuTFJhPWJ9O09nYi5wcm90b3R5cGUuRmI9ZnVuY3Rpb24oYSl7dGhpcy5CYS5zZXQoIlgtRnJhbWV3b3JrLVhzcmYtVG9rZW4iLGEpfTtPZ2IucHJvdG90eXBlLmdldENvbnRleHQ9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5yYn07T2diLnByb3RvdHlwZS5PYj1mdW5jdGlvbigpe3RoaXMuTFJhPSJGQUlMIjt0aGlzLklhLmFib3J0KHRoaXMsMTAxKX07Xy5ZZ2I9ZnVuY3Rpb24oYSxiKXtYZ2IoYSk7YS5QN2I9Yn07Xy5hYT1PZ2IucHJvdG90eXBlO18uYWEuZ2V0TWVzc2FnZT1mdW5jdGlvbigpe3JldHVybiIifTsKXy5hYS5zZW5kPWZ1bmN0aW9uKCl7aWYodGhpcy5zdGFydGVkKXRocm93IEVycm9yKCJKZSIpO3RoaXMuTEliPV8ua2UoKTtpZighdGhpcy5SYSl7dmFyIGE9Ik5vIHJlcXVlc3QgaWQgZm9yIFsiK3RoaXMuZ2V0VXJsKCkrIl0iLGI9RXJyb3IoIkllYCIrdGhpcy5nZXRVcmwoKSk7Xy5EcihhLGIpfV8uVW4odGhpcy5rYSwiX3JlcWlkIix0aGlzLlJhKTt0aGlzLklhLnNlbmQodGhpcyk7dGhpcy5zdGFydGVkPSEwO3RoaXMub2hiPj0wJiYodGhpcy5PYT1fLmpnYigiS2UiLHRoaXMuT2IsdGhpcy5vaGIsdGhpcykpfTtfLmFhLmFib3J0PWZ1bmN0aW9uKCl7aWYoIXRoaXMuc3RhcnRlZCl0aHJvdyBFcnJvcigiTGUiKTt0aGlzLmNvbXBsZXRlfHwodGhpcy5MUmE9IkZBSUwiLHRoaXMuSWEuYWJvcnQodGhpcykpfTtfLmFhLmlzQ29tcGxldGU9ZnVuY3Rpb24oKXtyZXR1cm4hIXRoaXMuY29tcGxldGV9O18uYWEuZ2V0VHlwZT1mdW5jdGlvbigpe3JldHVybiBfLnlnYn07Cl8uYWEuZ2V0RGF0YT1mdW5jdGlvbihhKXtyZXR1cm4gdGhpcy5BYj90aGlzLkFiW2FdOm51bGx9O18uYWEuVlE9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5OY2J9Owp2YXIgWmdiPWZ1bmN0aW9uKGEpe3JldHVybiEhYS53YSYmISh0eXBlb2YgYS53YS5pc0Rpc3Bvc2VkPT0iZnVuY3Rpb24iJiZhLndhLmlzRGlzcG9zZWQoKSl9LCRnYj1mdW5jdGlvbihhLGIsYyxkKXtaZ2IoYSkmJmEud2EuUlViJiZhLndhLlJVYihhLGIsYyxkKX0sYWhiPWZ1bmN0aW9uKGEsYil7WmdiKGEpJiZhLndhLnp4YyYmYS53YS56eGMoYSxiKCkpfSxiaGI9ZnVuY3Rpb24oYSxiKXthLkliPWI7WmdiKGEpJiZhLndhLnI4YSYmYS53YS5yOGEoYSl9LGNoYj1mdW5jdGlvbihhLGIpe2EuY29tcGxldGU9ITA7YS5oT2I9Xy5rZSgpO2EuT2EmJihfLmVhLmNsZWFyVGltZW91dChhLk9hKSxhLk9hPW51bGwpO1pnYihhKSYmKGEuZXJyb3JPY2N1cnJlZCYmYS53YS5yOGEmJmEud2EucjhhKGEpLGEud2EuUVViJiZhLndhLlFVYihhLGIpKX07T2diLnByb3RvdHlwZS5LYT1mdW5jdGlvbigpe3JldHVybiB0aGlzLmthLmNsb25lKCl9O09nYi5wcm90b3R5cGUuZ2V0VXJsPWZ1bmN0aW9uKCl7cmV0dXJuIFN0cmluZyh0aGlzLkthKCkpfTsKT2diLnByb3RvdHlwZS5nZXRQYXRoPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMua2EuZ2V0UGF0aCgpfTtPZ2IucHJvdG90eXBlLkdhPWZ1bmN0aW9uKGEsYil7dGhpcy5FYXx8KHRoaXMuRWE9bmV3IF8uT2UpO0FycmF5LmlzQXJyYXkoYil8fChiPVtTdHJpbmcoYildKTtfLkFhKF8ubWFiLHRoaXMub2EpfHwodGhpcy5vYT0iUE9TVCIpO18ueUthKHRoaXMuRWEsYSxiKX07Xy5kaGI9ZnVuY3Rpb24oYSxiLGMpe2lmKGIgaW5zdGFuY2VvZiBfLk9lKXtsZXQgZD1iLmdldEtleXMoKTtfLlphYShkKTtmb3IobGV0IGU9MDtlPGQubGVuZ3RoO2UrKyl7bGV0IGY9ZFtlXSxnPWIueXooZik7Yz9hLkdhKGYsZyk6Xy5VbihhLmthLGYsZyl9fWVsc2UgXy5xS2EoYixmdW5jdGlvbihkLGUpe2M/dGhpcy5HYShlLGQpOl8uVW4odGhpcy5rYSxlLGQpfSxhKX07CmVoYj1mdW5jdGlvbihhKXtpZihhIGluc3RhbmNlb2YgXy5sKXJldHVybiBhLmNvbnN0cnVjdG9yLm1lc3NhZ2VJZDtpZihBcnJheS5pc0FycmF5KGEpJiZhLmxlbmd0aCl7dmFyIGI9YVswXTtpZih0eXBlb2YgYj09PSJzdHJpbmciKXJldHVybiBQZ2IoYSk7aWYodHlwZW9mIGI9PT0ib2JqZWN0Iil7aWYoYiBpbnN0YW5jZW9mIF8ubClyZXR1cm4gYi5jb25zdHJ1Y3Rvci5tZXNzYWdlSWQ7aWYoQXJyYXkuaXNBcnJheShiKSlyZXR1cm4gUGdiKGIpfX19O2ZoYj1mdW5jdGlvbihhLGIpe3ZhciBjPSJVTktOT1dOIElEUyIsZD0iVU5LTk9XTiBJRFMiO3RyeXtjPWEubWFwKGU9PmUubWVzc2FnZUlkKS5qb2luKCIsICIpLGQ9Yi5tYXAoZT0+ZWhiKGUpKS5qb2luKCIsICIpfWNhdGNoKGUpe31yZXR1cm5gRXhwZWN0ZWQgcHJvdG9zOiBbJHtjfV0uIFJldHVybmVkIHByb3RvczogWyR7ZH1dLmB9OwpfLmdoYj1jbGFzcyBleHRlbmRzIF8uYmF7Y29uc3RydWN0b3IoYSxiLGMsZCxlLGYpe3ZhciBnPWBFcnJvciBjb2RlID0gJHtifWA7YyYmKGcrPWAsIFBhdGggPSAke2N9YCk7ZCYmKGcrPWAsIE1lc3NhZ2UgPSAke2R9YCk7Yz1mPT1udWxsP3ZvaWQgMDpmLk5hO2MhPW51bGwmJihnKz1gLCBIVFRQIHN0YXR1cyA9ICR7Y31gKTtlJiYoZys9YCwgJHtlLndhfWApO3N1cGVyKGcpO3RoaXMubmFtZT1hO3RoaXMua2E9Yjt0aGlzLllwPWV9Z2V0RXJyb3IoKXtyZXR1cm4gdGhpcy5ZcH19O2hoYj1jbGFzcyBleHRlbmRzIF8uZ2hie2NvbnN0cnVjdG9yKGEsYixjLGQpe3N1cGVyKCJUb29NYW55UHJvdG9zRXJyb3IiLDEwOCxjLCJUaGUgUmVxdWVzdFNlcnZpY2UgaW50ZXJmYWNlIG9ubHkgc3VwcG9ydHMgYSBzaW5nbGUgcmVjZWl2ZWQgcHJvdG8gKGJlIGl0IGRhdGEgb3IgZXJyb3IpLiAiKyhhJiZiP2ZoYihhLGIpOiIiKSx2b2lkIDAsZCl9fTsKaWhiPWNsYXNzIGV4dGVuZHMgXy5naGJ7Y29uc3RydWN0b3IoYSxiLGMsZCl7c3VwZXIoIkV4cGVjdGVkUHJvdG9Ob3RGb3VuZCIsMTA5LGMsIlRoZSBleHBlY3RlZCByZXNwb25zZSBwcm90byB3YXMgbm90IHJldHVybmVkIGJ5IHRoZSBzZXJ2ZXIuIitmaGIoYSxiKSx2b2lkIDAsZCl9fTtqaGI9Y2xhc3MgZXh0ZW5kcyBfLmdoYntjb25zdHJ1Y3RvcihhKXtzdXBlcigiUmV0cnkiLDAsdm9pZCAwLCJBbiBpbnRlcmNlcHRvciBoYXMgcmVxdWVzdGVkIHRoYXQgdGhlIHJlcXVlc3QgYmUgcmV0cmllZC4iLHZvaWQgMCxhKX19O2toYj1jbGFzcyBleHRlbmRzIF8ubHtjb25zdHJ1Y3RvcihhKXtzdXBlcihhLDAsa2hiLm1lc3NhZ2VJZCl9fTtraGIubWVzc2FnZUlkPSJlIjt2YXIgbGhiPWNsYXNzIGV4dGVuZHMgXy5se2NvbnN0cnVjdG9yKGEpe3N1cGVyKGEsMCxsaGIubWVzc2FnZUlkKX19O2xoYi5tZXNzYWdlSWQ9ImYucmkiO3ZhciBtaGI9Xy5XYihsaGIpO3ZhciBuaGI9Y2xhc3MgZXh0ZW5kcyBfLkVye2NvbnN0cnVjdG9yKCl7c3VwZXIoKTt2YXIgYSxiO3RoaXMucHJvZHVjdElkPShiPV8uc2QodGhpcy5nZXRVcmwoKSwib3BpIikpIT1udWxsP2I6KGE9Xy5La2EoKSk9PW51bGw/dm9pZCAwOmEudG9TdHJpbmcoKX1nZXRVcmwoKXtyZXR1cm4gd2luZG93LmxvY2F0aW9uLmhyZWZ9a2EoYSl7aWYodGhpcy5wcm9kdWN0SWQpe2xldCBiPU51bWJlcih0aGlzLnByb2R1Y3RJZCk7YiYmYS5CYS5zZXQoIlgtQ2xpZW50LVBjdHgiLF8uT2EoKDAsXy5rTGEpKF8uZ0xhKG5ldyBfLmhMYSxfLmZMYShfLmNMYShuZXcgXy5kTGEsYikpKSksNCkpfX19O3ZhciBvaGI9ZnVuY3Rpb24oYSxiKXtzd2l0Y2goYSl7Y2FzZSAxOmNhc2UgMzpyZXR1cm4gODtjYXNlIDk6cmV0dXJuIDEzO2Nhc2UgNDpyZXR1cm4gTmFOO2Nhc2UgNzpyZXR1cm4gMTAwO2Nhc2UgNjpyZXR1cm4gYnx8NztjYXNlIDg6cmV0dXJuIDEwMTtjYXNlIDU6cmV0dXJuIDk7ZGVmYXVsdDpyZXR1cm4gMTAyfX0scGhiPWNsYXNzIGV4dGVuZHMgXy5FZHtjb25zdHJ1Y3Rvcigpe3N1cGVyKCk7dGhpcy5pblVzZT0hMX1SYSgpe3JldHVybiAwfXRyYW5zZmVyKGEpe3RoaXMua2EuajNhKGEpO3RoaXMub2E9YX1zZXRXaXRoQ3JlZGVudGlhbHMoKXt9fTt2YXIgcWhiLHJoYj1mdW5jdGlvbihhKXt2YXIgYj1hLkVhO2lmKGIpe2xldCBjPW5ldyBfLkdyO2IuZm9yRWFjaCgoZCxlKT0+e2MuYXBwZW5kKF8ucGQoZSksIj0iLF8ucGQoZCksIiYiKX0pO3JldHVybiBjLnRvU3RyaW5nKCl9cmV0dXJuIGEuQWE/SWdiKGEuQWEpOiIifSxzaGI9ZnVuY3Rpb24oYSxiLGMsZCl7dmFyIGU9YS5vYTtlLk5hIT1udWxsfHwoZS5OYT1kPT1udWxsP3ZvaWQgMDpkLmdldFN0YXR1cygpKTtiPW5ldyBLZ2IoZSxiLHZvaWQgMCx2b2lkIDAsYyxkKTthLmthLlR5YihlLGIpfSx3aGI9Y2xhc3MgZXh0ZW5kcyBwaGJ7Y29uc3RydWN0b3IoYSl7c3VwZXIoKTtpZihfLk1CYSl7aWYoIXFoYil7dmFyIGI9bmV3IF8uQWdiKHtsRWI6ITF9KTtiLmthPSJzYW1lLW9yaWdpbiI7cWhiPWJ9Yj1uZXcgXy5wcihxaGIpfWVsc2UgYj1uZXcgXy5wcjt0aGlzLkVpPWI7dGhpcy5ZS2E9YTt0aGlzLklhPW51bGw7dGhpcy5FaS5oZWFkZXJzLnNldCgiWC1TYW1lLURvbWFpbiIsCiIxIik7Xy5oZSh0aGlzLkVpLCJjb21wbGV0ZSIsdGhpcy5uYiwhMSx0aGlzKTtfLmhlKHRoaXMuRWksInJlYWR5Iix0aGlzLnJiLCExLHRoaXMpO3RoaXMueGM9bnVsbH1zZXRXaXRoQ3JlZGVudGlhbHMoYSl7dGhpcy5FaS5zZXRXaXRoQ3JlZGVudGlhbHMoYSl9dndhKCl7cmV0dXJuIHRoaXMuRWkudndhKCl9cWMoKXtfLnpuKHRoaXMuRWksImNvbXBsZXRlIix0aGlzLm5iLCExLHRoaXMpO18uem4odGhpcy5FaSwicmVhZHkiLHRoaXMucmIsITEsdGhpcyk7dGhpcy5FaS5kaXNwb3NlKCk7c3VwZXIucWMoKX10cmFuc2ZlcihhKXt0aGlzLmthLmozYShhKTt0aGlzLm9hPWE7Xy5VbihhLmthLCJydCIsdGhpcy5ZS2EpO3ZhciBiPWEuQmEsYz1hLkVhIT1udWxsfHxhLkFhIT1udWxsO2lmKCFhLlNhfHxjKXtpZih0aGlzLndhJiYoYz10aGlzLk9hLmNhbGwobnVsbCksYyE9PXZvaWQgMCkpe2xldCBkPWEuQWE7aWYoZCl7bGV0IGU9ZC5lbGVtZW50c1t0aGlzLndhXTtlfHwoZT1kLm93bmVyRG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiaW5wdXQiKSwKZS5zZXRBdHRyaWJ1dGUoIm5hbWUiLHRoaXMud2EpLGUuc2V0QXR0cmlidXRlKCJoaWRkZW4iLCEwKSxkLmFwcGVuZENoaWxkKGUpKTtlLnZhbHVlPWN9ZWxzZSBhLkdhKHRoaXMud2EsYyl9dGhpcy5FaS5zZW5kKGEuZ2V0VXJsKCksYS5vYSxyaGIoYSksYil9ZWxzZSB0aGlzLkVpLnNlbmQoYS5nZXRVcmwoKSxhLm9hLG51bGwsYil9YWJvcnQoYSl7dGhpcy5JYT1hO3RoaXMuRWkuYWJvcnQoNyl9bmIoYSl7YT1hLnRhcmdldDt0aGlzLm9hLk5hPWEuZ2V0U3RhdHVzKCk7aWYoXy5zcihhKSl7aWYoYS5LdygpLmxlbmd0aD4wfHxhLmdldFN0YXR1cygpPT0yMDQpe3RoaXMuQWIoYSk7cmV0dXJufXRoaXMuSWE9MTA0fXRoaXMuRWEoYSl9cmIoKXt0aGlzLmthLkVSYyh0aGlzKX1FYShhKXt2YXIgYj10aGlzLklhO3RoaXMuSWE9MDt2YXIgYz1hLmdldFN0YXR1cygpO3ZhciBkPWEuelIsZT1hLkt3KCk7dGhiLmV4ZWMoZSk7aWYoYil2YXIgZj1iO2Vsc2UgZD09NiYmKGI9YS5LdygpLGY9CihlPWIubWF0Y2godWhiKSk/NzAwK3BhcnNlSW50KGVbMV0sMTApOihlPWIubWF0Y2godmhiKSk/TnVtYmVyKCI2IitlWzFdKTpudWxsKTtmfHwoZj1vaGIoZCxjKSk7Yz1mO2EuS3coKTtzaGIodGhpcyxjLHZvaWQgMCxhKX19LHVoYj1SZWdFeHAoInZhciBnbWFpbF9lcnJvclxccyo9XFxzKihcXGQrKSIsIm0iKSx2aGI9UmVnRXhwKCJ2YXIgcmNcXHMqPVxccyooXFxkKykiLCJtIiksdGhiPVJlZ0V4cCgiKD86QWRkaXRpb25hbCBkZXRhaWxzfERldGFpbGVkIFRlY2huaWNhbCBJbmZvKVtcXHNcXFNdKjxwcmVbXj5dKj4oW1xcc1xcU10qKTxcXC9wcmU+IiwiaSIpO3ZhciB5aGIsemhiLEFoYjsKeWhiPWZ1bmN0aW9uKGEsYixjPTcpe2lmKF8uTEJhfHxfLnhoYil7Yz1hLkVpO2xldCBkPWMuZ2V0U3RhdHVzKCksZT1jLnpSO2I9ZT09PTU/e0s4OjksZXJyb3JNZXNzYWdlOlFnYihjLmdldExhc3RFcnJvcigpLGMpfTplPT09MT97Szg6OCxlcnJvck1lc3NhZ2U6UWdiKCJGcmFtZSBjb21tdW5pY2F0aW9uIGRlbmllZCIsYyl9OmU9PT03P3tLODoxMDAsZXJyb3JNZXNzYWdlOlFnYigiQWJvcnRlZCIsYyl9OmU9PT04P3tLODoxMDEsZXJyb3JNZXNzYWdlOlFnYigiVGltZW91dCIsYyl9OmQ9PT0wJiZlPT09Nj97Szg6NyxlcnJvck1lc3NhZ2U6UWdiKCJVbmtub3duIEhUVFAgZXJyb3IiLGMpfTplPT09OT97Szg6MTMsZXJyb3JNZXNzYWdlOlFnYigiT2ZmbGluZSIsYyl9OmQ9PT01MDImJmMuS3coKS5pbmNsdWRlcygiVGhpcyBpcyBsaWtlbHkgYmVjYXVzZSB0aGUgYXBwbGljYXRpb24gaXMgZG93biIpP3tLODoxMDUsZXJyb3JNZXNzYWdlOlFnYigiVGhyb3R0bGVkIixjKX06ZD09PQo1MDMmJmMuS3coKS5pbmNsdWRlcygieW91ciBjb21wdXRlciBvciBuZXR3b3JrIG1heSBiZSBzZW5kaW5nIGF1dG9tYXRlZCBxdWVyaWVzIik/e0s4OjExMCxlcnJvck1lc3NhZ2U6UWdiKCJEb1MiLGMpfTpkJiZkPjIwMCYmZDw2MDA/e0s4OmQsZXJyb3JNZXNzYWdlOlFnYihiLGMpfTplIT09NiYmZSE9PTM/e0s4OjEwMyxlcnJvck1lc3NhZ2U6UWdiKGIsYyl9OntLODo3LGVycm9yTWVzc2FnZTpRZ2IoYixjKX07bGV0IHtLODpmLGVycm9yTWVzc2FnZTpnfT1iO3NoYihhLGYsZyxhLkVpKX1lbHNlIHNoYihhLGMsYixhLkVpKX07CnpoYj1mdW5jdGlvbihhLGIpe3ZhciBjPWEuQWE7aWYoYz09Yi5sZW5ndGgpcmV0dXJuIDM7dmFyIGQ9Yi5pbmRleE9mKCJcbiIsYyk7aWYoZD09LTEpcmV0dXJuIDE7aWYoYz09ZClyZXR1cm4gYS5QYT0wLGEuR2E9bnVsbCwyO3ZhciBlPWIuc3Vic3RyaW5nKGMsZCksZj1OdW1iZXIoZSk7aWYoaXNOYU4oZikpcmV0dXJuIGEuUGE9MSxhLkdhPSJsZW5ndGg6ICIrZS5sZW5ndGgrIiwgIitlLnN1YnN0cmluZygwLDcpKyIsIHNzaToiK2MrIiwgc2VpOiIrZCsiLCBydGw6IitiLmxlbmd0aCsiLCAiK2Iuc3Vic3RyaW5nKDAsTWF0aC5taW4oMTUsYykpLDI7aWYoZCtmPmIubGVuZ3RoKXJldHVybiAxO2M9Yi5zdWJzdHIoZCxmKTt0cnl7dmFyIGc9SlNPTi5wYXJzZShjKX1jYXRjaChoKXtyZXR1cm4gYS5QYT0yLGEuR2E9bnVsbCwyfWEuQWE9ZCtmO2lmKEFycmF5LmlzQXJyYXkoZykpZm9yKGQ9MDtkPGcubGVuZ3RoO2QrKylhLmthLnJ4YyhhLm9hLGdbZF0sYS5FaS5zWigpKTtyZXR1cm4gYS5BYT09CmIubGVuZ3RoPzM6MH07CkFoYj1jbGFzcyBleHRlbmRzIHdoYntjb25zdHJ1Y3Rvcigpe3N1cGVyKCJjIik7dGhpcy5OYT0hMTtfLmhlKHRoaXMuRWksInJlYWR5c3RhdGVjaGFuZ2UiLHRoaXMuWmEsITEsdGhpcyk7dGhpcy5GQj0tMTt0aGlzLkdhPW51bGw7dGhpcy5CYT0hMH1jbG9uZSgpe3ZhciBhPW5ldyBBaGIsYj10aGlzLk9hO2Eud2E9dGhpcy53YTthLk9hPWI7dGhpcy52d2EoKSYmYS5zZXRXaXRoQ3JlZGVudGlhbHMoITApO3RoaXMuTmEmJihhLk5hPSEwKTtyZXR1cm4gYX1xYygpe18uSm4odGhpcy5GQik7Xy56bih0aGlzLkVpLCJyZWFkeXN0YXRlY2hhbmdlIix0aGlzLlphLCExLHRoaXMpO3N1cGVyLnFjKCl9UmEoYSl7aWYoYS5QN2IpcmV0dXJuIDA7dmFyIGI9YS5BYTtyZXR1cm4gYiYmSGdiKGIpfHxfLk5kJiYhXy5rQ2EoIjQyMCsiKXx8Xy5PZCYmIV8ua0NhKCIxLjkiKT8wOmEuWmF8fCFhLng5YT8uOTouNX1aYSgpe18uTmR8fF8uT2R8fF8uJGl8fF8uSm4odGhpcy5GQik7dGhpcy5FaS55VCgpPT0KMyYmdGhpcy5LYSghMSl9QWIoKXtfLkpuKHRoaXMuRkIpO3RoaXMuS2EoITApfUVhKGEpe3ZhciBiPXRoaXMuTmEmJmEuZ2V0U3RhdHVzKCk+PTUwMDt0aGlzLkthKCEwLGIpO3N1cGVyLkVhKGEpfUthKGEsYil7aWYoIXRoaXMuU2F8fGEpe3ZhciBjPXRoaXMuRWkuS3coKTtpZih0aGlzLkFhPT09MClpZihfLktCYSl7dmFyIGQ9Yy5pbmRleE9mKCIpXX0nXG5cbiIpO2lmKGQ+PTApdGhpcy5BYT1kKzY7ZWxzZXthJiYoYnx8KGE9dGhpcy5FaS5nZXRTdGF0dXMoKSxiPXRoaXMuRWkuelIseWhiKHRoaXMsIkluY29tcGxldGUgWFNTIGhlYWRlciBhdCBlbmQgb2YgcmVxdWVzdCIsYT09PTAmJmI9PT02Pzc6MTAzKSksdGhpcy5CYT0hMCk7cmV0dXJufX1lbHNle2Q9Yy5pbmRleE9mKCJcblxuIik7aWYoZD09LTEpe2EmJihifHwoYT10aGlzLkVpLmdldFN0YXR1cygpLGI9dGhpcy5FaS56UixhPT09MCYmYj09PTY/eWhiKHRoaXMsIlVua25vd24gSFRUUCBlcnJvciBpbiB1bmRlcmx5aW5nIFhIUiIsCjcpOnloYih0aGlzLCJJbmNvbXBsZXRlIFhTUyBoZWFkZXIgYXQgZW5kIG9mIHJlcXVlc3QiLDEwMykpLHRoaXMuQmE9ITApO3JldHVybn10aGlzLkFhPWQrMn1kbyBkPXpoYih0aGlzLGMpO3doaWxlKGQ9PTApO2EmJih0aGlzLkJhPSEwKTtzd2l0Y2goZCl7Y2FzZSAyOmE/Ynx8dGhpcy5hYm9ydCgxMCk6dGhpcy5TYT0hMDticmVhaztjYXNlIDM6YSYmKHRoaXMua2EueVhhKHRoaXMub2EsdGhpcy5FaS5zWigpKSx0aGlzLlNhJiZfLkRyKCJDaHVuayBwYXJzZSBlcnJvcjogIit0aGlzLlBhKyh0aGlzLkdhPyIsICIrdGhpcy5HYToiIiksRXJyb3IoKSkpO2JyZWFrO2Nhc2UgMTphJiYoYnx8eWhiKHRoaXMsIkluY29tcGxldGUgY2h1bmsgYXQgZW5kIG9mIHJlcXVlc3QuIiwxMDMpKX1hfHxfLk5kfHxfLk9kfHxfLiRpfHwodGhpcy5GQj1fLkluKHRoaXMuS2EsMTAwLHRoaXMpKX19dHJhbnNmZXIoYSl7dGhpcy5CYXx8Xy5EcigidHJhbnNmZXIoKSBjYWxsZWQgZHVyaW5nIHJlc3BvbnNlIHByb2Nlc3NpbmciLApFcnJvcigpKTt0aGlzLkJhPSExO3RoaXMuQWE9MDt0aGlzLlNhPSExO3N1cGVyLnRyYW5zZmVyKGEpfX07Xy54aGI9ITE7dmFyIEJoYj1jbGFzcyBleHRlbmRzIF8uRXJ7Y29uc3RydWN0b3IoKXt2YXIgYT1fLm5tKF8uQmQoImNmYjJoIikpO3N1cGVyKCk7dGhpcy53bWE9YX1rYShhKXt0aGlzLndtYSYmXy5VbihhLmthLCJibCIsdGhpcy53bWEpfX07dmFyIENoYj1jbGFzcyBleHRlbmRzIF8uRXJ7a2EoYSl7dmFyIGI7KGI9Xy5XbihhLmthLCJqc21vZGUiKSl8fChiPSEoYS5nZXRQYXRoKCkuc3RhcnRzV2l0aChfLlJnYigpKSYmXy5XbihhLmthLCJycGNpZHMiKSkpO2J8fF8uVW4oYS5rYSwianNtb2RlIiwiTyIpfX07dmFyIERoYj1jbGFzcyBleHRlbmRzIF8uRXJ7Y29uc3RydWN0b3IoYSl7c3VwZXIoKTt2YXIgYj17fTtfLkxhKCJlIGhsIGdsIGpzbW9kZSBkZWIgb3B0IHJvdXRlIGhvdHN3YXBzIF9ob3N0VHlwZSBhdXRodXNlciBwYWdlSWQgZHV1bCBudXVsIi5zcGxpdCgiICIpLGZ1bmN0aW9uKGMpe3ZhciBkPV8uc2QoYSxjKTtkJiYoYltjXT1kKX0pO3RoaXMub2E9Yn1rYShhKXtfLlBjKHRoaXMub2EsZnVuY3Rpb24oYixjKXtfLlduKGEua2EsYyl8fF8uVW4oYS5rYSxjLGIpfSl9fTt2YXIgRWhiPWNsYXNzIGV4dGVuZHMgXy5Fcntjb25zdHJ1Y3RvcihhKXtzdXBlcigpO3RoaXMub2E9W10uc2xpY2UuYXBwbHkoYXJndW1lbnRzKX1rYSgpe18uTGEodGhpcy5vYSxmdW5jdGlvbigpe30pfX07dmFyIEZoYj1jbGFzcyBleHRlbmRzIF8uRXJ7Y29uc3RydWN0b3IoKXt2YXIgYT1fLm5tKF8uQmQoIkZkckZKZSIpKTtzdXBlcigpO3RoaXMub2E9YX1rYShhKXt0aGlzLm9hJiZfLlVuKGEua2EsImYuc2lkIix0aGlzLm9hKX19O3ZhciBHaGI9Y2xhc3MgZXh0ZW5kcyBfLlpke2NvbnN0cnVjdG9yKGEsYixjLGQpe3N1cGVyKChkPyJkYXRhX2I6IjoiZGF0YToiKStiKTt0aGlzLmRhdGF0eXBlPWI7dGhpcy5yZXF1ZXN0PWE7dGhpcy5BYT10eXBlb2YgYz09PSJmdW5jdGlvbiI/Yzp2b2lkIDA7dGhpcy5kYXRhPUFycmF5LmlzQXJyYXkoYyk/Yzp2b2lkIDA7dGhpcy53YT12b2lkIDB9Z2V0RGF0YSgpe2lmKHRoaXMuZGF0YSlyZXR1cm4gdGhpcy5kYXRhO2lmKHRoaXMuQWEpcmV0dXJuIHRoaXMuZGF0YT10aGlzLkFhKCksdGhpcy5BYT12b2lkIDAsdGhpcy5kYXRhfX07dmFyIEhoYj1mdW5jdGlvbihhLGIsYyl7Yz9hLkVhYj1iOihiPU1hdGgubWluKDNFNSxNYXRoLm1heChiLDFFMykpLGEuRWFiPU1hdGgucm91bmQoLjg1KmIpK01hdGgucm91bmQoLjMqYipNYXRoLnJhbmRvbSgpKSl9LEloYj1mdW5jdGlvbihhKXt2YXIgYj1uZXcgU2diO2Eua2E9Yn0sSmhiPWNsYXNze2NvbnN0cnVjdG9yKCl7dGhpcy5BYT1bXTt0aGlzLndhPXt9O0hoYih0aGlzLDFFMyl9VlNhKCl7cmV0dXJuIHRoaXMuaVhhfUJqYigpe3JldHVybiB0aGlzLmlYYT09dGhpcy5qWGF9c1ooKXtyZXR1cm4gdGhpcy53YX1nZXRFcnJvcigpe3JldHVybiB0aGlzLllwfUl1KGEpe3RoaXMuWXA9YX1yZXNldCgpe3RoaXMub2E9bnVsbDt0aGlzLkl1KG51bGwpfX07Xy5hYT1KaGIucHJvdG90eXBlO18uYWEudXpiPTA7Xy5hYS5qWGE9LTE7Xy5hYS5pWGE9MDtfLmFhLk5lYT0wO18uYWEuczFiPTA7Xy5hYS5FYWI9MDt2YXIgS2hiPWNsYXNzIGV4dGVuZHMgXy5aZHtjb25zdHJ1Y3RvcihhLGIpe3N1cGVyKGEpO2ImJih0aGlzLndhPWIpfX07Xy5VaShTZ2IsXy5iYSk7Xy5VaShIcixfLmJlKTt2YXIgTGhiPSJfL3JlcG9ydGh0dHA0eHhlcnJvciI7Xy5hYT1Ici5wcm90b3R5cGU7Xy5hYS5KaWE9bnVsbDtfLmFhLnZkPSJSRUFEWSI7Xy5hYS5uSmE9MTtfLmFhLlZBYj0hMTtfLmFhLmRpc3Bvc2U9ZnVuY3Rpb24oKXtmb3IobGV0IGI9MDtiPHRoaXMud2EubGVuZ3RoO2IrKyl7dmFyIGE9dGhpcy53YVtiXS5nZXRDb250ZXh0KCk7YS5OZWEmJihfLmVhLmNsZWFyVGltZW91dChhLk5lYSksYS5OZWE9MCl9dGhpcy5pc0Rpc3Bvc2VkKCl8fChIci5SZC5kaXNwb3NlLmNhbGwodGhpcyksdGhpcy5BYS5jbGVhcigpLHRoaXMuSmlhJiYoXy5lYS5jbGVhclRpbWVvdXQodGhpcy5KaWEpLHRoaXMuSmlhPW51bGwpKTtmb3IoYT0wO2E8dGhpcy5vYS5sZW5ndGg7YSsrKXRoaXMub2FbYV0uZGlzcG9zZSgpO3RoaXMud2EubGVuZ3RoPXRoaXMua2EubGVuZ3RoPTA7dGhpcy56ZC5kaXNwb3NlKCl9Owp2YXIgTWhiPWZ1bmN0aW9uKGEsYil7dmFyIGM9e307Yy5FUmM9KDAsXy5pZSkoYS5GUmMsYSk7Yy5UeWI9KDAsXy5pZSkoYS5UeWIsYSk7Yy55WGE9KDAsXy5pZSkoYS55WGEsYSk7Yy5yeGM9KDAsXy5pZSkoYS5LYSxhKTtjLnA4YT0oMCxfLmllKShhLnJiLGEpO2MuQmpiPSgwLF8uaWUpKGEuT2EsYSk7Yy5mQmQ9KDAsXy5pZSkoYS5aYSxhKTtjLlZTYT0oMCxfLmllKShhLm5iLGEpO2MuY0ZkPSgwLF8uaWUpKGEuRWEsYSk7Yy5qM2E9KDAsXy5pZSkoYS5qM2EsYSk7Yi5rYT1jO2Iuc2V0V2l0aENyZWRlbnRpYWxzKGEuZjQpO2Eub2EucHVzaChiKX07Xy5hYT1Ici5wcm90b3R5cGU7Xy5hYS5zZXRXaXRoQ3JlZGVudGlhbHM9ZnVuY3Rpb24oYSl7dGhpcy5mND1hO2ZvcihsZXQgYj0wO2I8dGhpcy5vYS5sZW5ndGg7YisrKXRoaXMub2FbYl0uc2V0V2l0aENyZWRlbnRpYWxzKGEpfTtfLmFhLnZ3YT1mdW5jdGlvbigpe3JldHVybiEhdGhpcy5mNH07Cl8uYWEuc2VuZD1mdW5jdGlvbihhKXt0aGlzLmlzRGlzcG9zZWQoKT9OaGIodGhpcyxhLDEwNyk6KHRoaXMuZGlzcGF0Y2hFdmVudChuZXcgS2hiKCJpIixhKSksdGhpcy5BYS5lbnF1ZXVlKGEpLE9oYih0aGlzKSl9O18uYWEuZ2V0U3RhdGU9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy52ZH07Xy5hYS5hYm9ydD1mdW5jdGlvbihhLGIpe1BoYih0aGlzLGEsYil9Owp2YXIgUGhiPWZ1bmN0aW9uKGEsYixjKXtjPXR5cGVvZiBjPT09Im51bWJlciI/YzoxMDA7Xy5BYShhLmthLGIpPyhiLmdldENvbnRleHQoKS51emI9YywoYT1iLmdldENvbnRleHQoKSkmJmEub2EmJmEub2EuYWJvcnQoYS51emIpKTphLkFhLnJlbW92ZShiKSYmTmhiKGEsYixjKX0sUmhiPWZ1bmN0aW9uKGEsYil7dmFyIGM9bnVsbCxkPXt9LGU9Xy5XaShhLm9hLGZ1bmN0aW9uKGspe3ZhciBtPV8uJGUoayk7ZFttXT1rLlJhKGIpO3JldHVybiEhZFttXX0pO18uYmJhKGUsKDAsXy5pZSkoYS5QYSxudWxsLGQsYS5vYSkpO3ZhciBmPTAsZz1lLmxlbmd0aDtmb3IobGV0IGs9MDtrPGcmJiFjO2srKyl7dmFyIGg9ZVtrXTtpZighaC5pblVzZSl7Yz1oO2JyZWFrfWg9ZFtfLiRlKGgpXTtpZihrPT1nLTF8fGg+ZFtfLiRlKGVbaysxXSldKWZvcig7IWMmJmY8PWs7KWlmKGM9ZVtmKytdLFFoYihhLGMpPGEubkphKWlmKGM9Yy5jbG9uZSgpKU1oYihhLGMpO2Vsc2V7aWYoaD09MSl0aHJvdyBFcnJvcigiU2UiKTsKfWVsc2UgdGhyb3cgRXJyb3IoIlRlIik7fXJldHVybiBjfTtIci5wcm90b3R5cGUuUGE9ZnVuY3Rpb24oYSxiLGMsZCl7dmFyIGU9Xy4kZShjKSxmPV8uJGUoZCk7cmV0dXJuIGFbZV08YVtmXT8xOmFbZV0+YVtmXT8tMTpjLmluVXNlJiYhZC5pblVzZT8xOiFjLmluVXNlJiZkLmluVXNlPy0xOl8uemEoYixkKS1fLnphKGIsYyl9O3ZhciBRaGI9ZnVuY3Rpb24oYSxiKXt2YXIgYz0wO2I9Yi5jb25zdHJ1Y3RvcjthPWEub2E7dmFyIGQ9YS5sZW5ndGg7Zm9yKGxldCBlPTA7ZTxkO2UrKylhW2VdLmNvbnN0cnVjdG9yPT09YiYmYysrO3JldHVybiBjfTtIci5wcm90b3R5cGUuajNhPWZ1bmN0aW9uKGEpe2lmKHRoaXMuR2Euc2l6ZSE9PTApe2xldCBiPUFycmF5LmZyb20odGhpcy5HYS5rZXlzKCkpO2ZvcihsZXQgYz0wO2M8Yi5sZW5ndGg7YysrKXtsZXQgZD1iW2NdLGU9dGhpcy5HYS5nZXQoZCk7Xy5VbihhLmthLGQsZSk7dGhpcy5HYS5kZWxldGUoZCl9fX07CnZhciBTaGI9ZnVuY3Rpb24oYSxiKXtzd2l0Y2goYil7Y2FzZSAiQUNUSVZFIjpjYXNlICJXQUlUSU5HX0ZPUl9SRVRSWSI6Y2FzZSAiUkVUUllfVElNRVIiOmlmKGEua2EubGVuZ3RoPT0wKXRocm93IEVycm9yKCJWZWAiK2IpO31pZihiIT1hLnZkJiYoYS52ZD1iLGEuZGlzcGF0Y2hFdmVudChuZXcgS2hiKCJoIikpLGEuU2EpKWEuU2Eub25TdGF0ZUNoYW5nZWQoKX0sT2hiPWZ1bmN0aW9uKGEpe2lmKGEuSWEmJihhLnZkPT0iUkVBRFkifHxhLm5KYSE9PTEpKXt2YXIgYj1fLlVXYShhLkFhKTtiJiZhLmthLmxlbmd0aDxhLm5KYSYmKF8uVFdhKGEuQWEpLGIucmI9bmV3IEpoYixhLmthLnB1c2goYiksVGhiKGEsYikpfX0sVGhiPWZ1bmN0aW9uKGEsYil7Yi5nZXRVcmwoKTt2YXIgYz1iLmdldENvbnRleHQoKTtjLmlYYT0wO2MualhhPS0xO2M9Xy5rZSgpO2IueFNiPT0tMSYmKGIueFNiPWMpO2IuVVpiPWM7Yi5WTmErKzt0cnl7U2hiKGEsIkFDVElWRSIpO3RyeXtsZXQgZD1iLmdldENvbnRleHQoKTsKZC51emI9MDtsZXQgZT1kLm9hO2lmKCFlKXtlPVJoYihhLGIpO2lmKCFlKXRocm93IEVycm9yKCJVZWAiK2IpO2UuaW5Vc2U9ITA7ZC5vYT1lfWQua2E9bnVsbDtlLnRyYW5zZmVyKGIpO2EuSmlhfHwoYS5KaWE9Xy5qZ2IoIlhlIixhLnIyYiwzRTQsYSkpfWNhdGNoKGQpe3Rocm93IGQ7fX1jYXRjaChkKXt0aHJvdyBkO319O0hyLnByb3RvdHlwZS5yYj1mdW5jdGlvbihhLGIpe3RoaXMucDhhKGEsYil9O0hyLnByb3RvdHlwZS5wOGE9ZnVuY3Rpb24oYSxiKXt2YXIgYz1hLmdldENvbnRleHQoKTtmb3IobGV0IGY9MDtmPGIubGVuZ3RoO2YrKyl7dmFyIGQ9YltmXTtjLmlYYSsrO3ZhciBlPWRbMF07ZSE9PWxoYi5tZXNzYWdlSWQmJmMuQWEucHVzaChkKTtjLlZTYSgpPT0xJiZVaGIoYSk7ZT09bGhiLm1lc3NhZ2VJZD9WaGIodGhpcyxhLGQpOmU9PVZnYi5tZXNzYWdlSWQ/V2hiKGEsZCk6KGU9PWtoYi5tZXNzYWdlSWQmJihlPWEsWGhiKGUpLFloYihlLG5ldyBraGIoZCkpKSx0aGlzLkVhKGEpKX19OwpIci5wcm90b3R5cGUuS2E9ZnVuY3Rpb24oYSxiLGMpe3ZhciBkPWEuZ2V0Q29udGV4dCgpO2QuaVhhKys7ZC53YT1jO2M9YlswXTtjIT09bGhiLm1lc3NhZ2VJZCYmZC5BYS5wdXNoKGIpO2QuVlNhKCk9PTEmJlVoYihhKTtjPT1saGIubWVzc2FnZUlkP1ZoYih0aGlzLGEsYik6Yz09VmdiLm1lc3NhZ2VJZD9XaGIoYSxiKTooYz09a2hiLm1lc3NhZ2VJZCYmKFhoYihhKSxZaGIoYSxuZXcga2hiKGIpKSksdGhpcy5FYShhKSl9Owp2YXIgVWhiPWZ1bmN0aW9uKGEpe3RyeXtfLmtlKCl9Y2F0Y2goYil7Xy5EcigiRXhjZXB0aW9uIGluIG9uRmlyc3RBcnJheV8iLGIpLGEuZ2V0Q29udGV4dCgpLmthPWJ9fSxWaGI9ZnVuY3Rpb24oYSxiLGMpe2M9Xy5zZmEobWhiKCksYykuY2xvbmUoKTsoYz1fLmdoKGMsMSxfLmRiKSkmJmEuTmEmJmMhPWEuTmEmJihiLmdldENvbnRleHQoKS5rYT1FcnJvcigxMDYpKX0sV2hiPWZ1bmN0aW9uKGEsYil7dHJ5e2xldCBkPV8uc2ZhKFdnYigpLGIpLmNsb25lKCk7dmFyIGM9bmV3IF8ud2diKGQpO2EuTmNiPWN9Y2F0Y2goZCl7Xy5EcigiRXhjZXB0aW9uIGluIGhhbmRsZURlYnVnSW5mb0FycmF5XyIsZCksYS5nZXRDb250ZXh0KCkua2E9ZH19LFloYj1mdW5jdGlvbihhLGIpe3ZhciBjPWEuZ2V0Q29udGV4dCgpLGQ9Xy5kayhiLDEsXy5kYik7Yy5qWGE9ZDt2YXIgZTsoKGU9Xy52ZShfLkpqKGIsNCxfLmRiKSkpIT1udWxsP2U6MCk+MCYmKGI9Xy52ZShfLkpqKGIsNCxfLmRiKSksYS5uYj0KYil9O0hyLnByb3RvdHlwZS5FYT1mdW5jdGlvbihhKXt2YXIgYj1hLmdldENvbnRleHQoKSxjPWIuQWEsZD1iLnNaKCk7Yy5sZW5ndGgmJihiLkFhPVtdLGIud2E9e30sWmhiKHRoaXMsYSxjLGQpKX07CnZhciBaaGI9ZnVuY3Rpb24oYSxiLGMsZCl7dmFyIGU9Yj9iLmdldENvbnRleHQoKTpudWxsO2lmKCFlfHwhZS5rYSl0cnl7Zm9yKHZhciBmPTA7ZjxjLmxlbmd0aDtmKyspe2xldCBnPWNbZl07YS5kaXNwYXRjaEV2ZW50KG5ldyBHaGIoYixnWzBdLCgpPT5KZ2IoZyksITApKX1iPT1udWxsfHxhaGIoYiwoKT0+SmdiKGMpKTthLmRpc3BhdGNoRXZlbnQobmV3IEdoYihiLCJhYSIsKCk9PkpnYihjKSkpO2ZvcihmPTA7ZjxjLmxlbmd0aDtmKyspe2xldCBnPWNbZl0saD1nWzBdO2lmKGIpaWYoaD09Xy5UZ2IubWVzc2FnZUlkKXtsZXQgaz1fLnNmYShVZ2IoKSxnKS5jbG9uZSgpLG09Xy5kayhrLDUsXy5kYik7aWYobT49NTAwJiZtPDcwMCl7bGV0IG49bmV3IEtnYihiLG0sITEsYi5WTmEpO2lmKG4uQmFhKCkpe2UuSXUobik7SWhiKGUpO2JyZWFrfX1iaGIoYixrKX1lbHNlICRnYihiLGgsZyxkKTthLmRpc3BhdGNoRXZlbnQobmV3IEdoYihiLGgsKCk9PkpnYihnKSkpfX1jYXRjaChnKXsiZnVuY3Rpb24iPT0KdHlwZW9mIF8uJGhiJiZnIGluc3RhbmNlb2YgXy4kaGJ8fF8uRHIoIkV4Y2VwdGlvbiBpbiBwcm9jZXNzQXJyYXlzIixnKSxlJiYoZS5rYT1nKX19O0hyLnByb3RvdHlwZS5PYT1mdW5jdGlvbihhKXtyZXR1cm4gYS5nZXRDb250ZXh0KCkuQmpiKCl9O0hyLnByb3RvdHlwZS5uYj1mdW5jdGlvbihhKXtyZXR1cm4gYS5nZXRDb250ZXh0KCkuVlNhKCl9O0hyLnByb3RvdHlwZS5aYT1mdW5jdGlvbihhKXtyZXR1cm4gYS5nZXRDb250ZXh0KCkualhhfTsKdmFyIGFpYj1mdW5jdGlvbihhLGIpe2lmKGEuVkFiJiZiLmdldENvbnRleHQoKS5zMWI8PTApe3ZhciBjO2E9KGM9Yi5OYSkhPW51bGw/YzowO2lmKGE+PTQwMCYmYTw1MDApe2M9Xy5NbSgiYmFzZSIpO3ZhciBkPW51bGw7Yy5sZW5ndGgmJihkPWNbMF0uaHJlZik7Yz1kfHx3aW5kb3cubG9jYXRpb24uaHJlZjtkPWIuS2EoKTtjIGluc3RhbmNlb2YgXy5IZXx8KGM9Xy5PaChjKSk7ZCBpbnN0YW5jZW9mIF8uSGV8fChkPV8uT2goZCkpO2M9Yy5yZXNvbHZlKGQpO2Q9Xy5va2EoTGhiLCJ1cmwiLGMsInN0YXR1cyIsYSk7bGV0IGU7KGI9KGU9Yi5WUSgpKT09bnVsbD92b2lkIDA6ZS5vYSkmJihkPV8ub2thKGQsInRyYWNlaWQiLGIpKTtfLnFyKGQsbnVsbCwiUE9TVCIpO18uRHIobnVsbCxFcnJvcigiV2VgIitjKyJgIithKSl9fX07CkhyLnByb3RvdHlwZS55WGE9ZnVuY3Rpb24oYSxiPXt9KXt2YXIgYz1hLmdldENvbnRleHQoKTtjLndhPWI7dGhpcy5FYShhKTthaWIodGhpcyxhKTt2YXIgZD1jLmthO2lmKGR8fCFjLkJqYigpKXtsZXQgZTtpZihkKXtpZigiZnVuY3Rpb24iPT10eXBlb2YgXy4kaGImJmQgaW5zdGFuY2VvZiBfLiRoYilyZXR1cm4gYS5nZXRVcmwoKSxiPWMuRWFiLF8uQWEodGhpcy5rYSxhKSYmKEhoYihhLmdldENvbnRleHQoKSxiLCEwKSxfLkJhKHRoaXMud2EsYSksYS5nZXRDb250ZXh0KCkuTmVhPS0xLFNoYih0aGlzLCJXQUlUSU5HX0ZPUl9SRVRSWSIpKSwhMDtkIGluc3RhbmNlb2YgU2diP2U9Yy5nZXRFcnJvcigpOmU9bmV3IEtnYihhLGQubWVzc2FnZT09MTA2PzEwNjoxMiwhMCl9ZWxzZSBiPSJNaXNzaW5nIGRhdGEgYXJyYXlzLiBFeHBlY3RlZCAiK2MualhhKyIsIHJlY2VpdmVkICIrYy5WU2EoKSxlPW5ldyBLZ2IoYSwxMDMsITEsYS5WTmEsYiksdGhpcy5SYSYmYmliKGEpO2NpYih0aGlzLAphLGUpO3JldHVybiExfWEuZXJyb3JPY2N1cnJlZD0hMTthLlBhPW51bGw7YS5vaGI9LTE7Y2hiKGEsYik7dGhpcy5kaXNwYXRjaEV2ZW50KG5ldyBLaGIoImoiLGEpKTtfLkRhKHRoaXMud2EsYSk7U2hiKHRoaXMsIldBSVRJTkdfRk9SX1JFQURZIik7cmV0dXJuITB9O0hyLnByb3RvdHlwZS5UeWI9ZnVuY3Rpb24oYSxiKXt0aGlzLlJhJiZiLmthPT0xMDMmJmJpYihhKTt0aGlzLkVhKGEpO2FpYih0aGlzLGEpO2NpYih0aGlzLGEsYil9O3ZhciBjaWI9ZnVuY3Rpb24oYSxiLGMpe2IuZ2V0Q29udGV4dCgpLkl1KGMpO2IuTmNiPV8ueGdiO2MuQmFhKCk/KF8uQmEoYS53YSxiKSxiLmdldENvbnRleHQoKS5OZWE9LTEsYj0iV0FJVElOR19GT1JfUkVUUlkiKTooYy5CYWEoKSxfLkRhKGEud2EsYiksTmhiKGEsYixjKSxiPSJXQUlUSU5HX0ZPUl9SRUFEWSIpO1NoYihhLGIpfTtfLmFhPUhyLnByb3RvdHlwZTsKXy5hYS5GUmM9ZnVuY3Rpb24oYSl7dmFyIGI9Xy54YSh0aGlzLmthLGZ1bmN0aW9uKGMpe3JldHVybiBjLmdldENvbnRleHQoKS5vYT09YX0pO18uQWEodGhpcy53YSxiKXx8KGEuaW5Vc2U9ITEsYi5nZXRDb250ZXh0KCkucmVzZXQoKSxfLkRhKHRoaXMua2EsYikpO3RoaXMuSmlhJiYoXy5lYS5jbGVhclRpbWVvdXQodGhpcy5KaWEpLHRoaXMuSmlhPW51bGwpO18uTGEodGhpcy53YSx0aGlzLklFYyx0aGlzKTt0aGlzLmthLmxlbmd0aDx0aGlzLm5KYSYmKFNoYih0aGlzLCJSRUFEWSIpLE9oYih0aGlzKSl9OwpfLmFhLklFYz1mdW5jdGlvbihhKXt2YXIgYj1hLmdldENvbnRleHQoKTtpZihiLk5lYT09LTEpe3ZhciBjPV8uV24oYS5rYSwiZi5yZXRyaWVzIik7Xy5kaGIoYSx7ImYucmV0cmllcyI6KGM/TnVtYmVyKGMpOjApKzF9LCExKTtjPWIuRWFiO3ZhciBkPV8ua2UoKStjO2IuczFiPWQ7YT1fLmpnYigiWGUiLCgwLF8uaWUpKHRoaXMud0hjLHRoaXMsYSksYyk7Yi5OZWE9YTtIaGIoYiwyKmMpO1NoYih0aGlzLCJSRVRSWV9USU1FUiIpfX07Xy5hYS53SGM9ZnVuY3Rpb24oYSl7dmFyIGI9YS5nZXRDb250ZXh0KCk7Yi5OZWEmJihfLmVhLmNsZWFyVGltZW91dChiLk5lYSksYi5OZWE9MCk7VGhiKHRoaXMsYSl9O18uYWEucjJiPWZ1bmN0aW9uKCl7dGhpcy5KaWE9Xy5qZ2IoIlhlIix0aGlzLnIyYiwzRTQsdGhpcyk7dGhpcy51TmIoKX07Cl8uYWEudU5iPWZ1bmN0aW9uKCl7aWYodGhpcy5rYS5sZW5ndGghPTAmJnRoaXMuQmEpe3ZhciBhPXRoaXMua2EubGVuZ3RoO2ZvcihsZXQgYj0wO2I8YTtiKyspe2xldCBjPXRoaXMua2FbYl0sZD1fLmtlKCksZT1jLlVaYjtpZihlPi0xJiZkLWU+NkU0KWlmKHRoaXMuQmEuR2EoKSlicmVhaztlbHNlIHRoaXMuQmEuQWF8fFBoYih0aGlzLGMsMSl9fX07dmFyIGJpYj1mdW5jdGlvbihhKXtfLlVuKGEua2EsIm5ydCIsYS5WTmEpO3ZhciBiPWEuZ2V0Q29udGV4dCgpLm9hO2IgaW5zdGFuY2VvZiB3aGImJihiPWIuRWkuS3coKSxiIT1udWxsJiZhLkdhKCJyaG1hIixiKSl9O0hyLnByb3RvdHlwZS5kaXNhYmxlPWZ1bmN0aW9uKCl7dGhpcy5JYT0hMX07CnZhciBOaGI9ZnVuY3Rpb24oYSxiLGMpe3R5cGVvZiBjPT09Im51bWJlciImJihjPW5ldyBLZ2IoYixjKSk7YS5kaXNwYXRjaEV2ZW50KG5ldyBLaGIoImsiLGIpKTthPWM7Yi5lcnJvck9jY3VycmVkPSEwO2IuUGE9YTt2YXIgZDtjaGIoYixhPT1udWxsP3ZvaWQgMDooZD1hLnNaKT09bnVsbD92b2lkIDA6ZC5jYWxsKGEpKX0sWGhiPWZ1bmN0aW9uKGEpe3ZhciBiPWEuSmI7aWYoIWJ8fGI8PTApYj1EYXRlLm5vdygpLGEuSmI9Yn07dmFyIGVpYixnaWIsaGliLGZpYixkaWIsamliLGxpYjsKZWliPWZ1bmN0aW9uKGEpe3ZhciBiPXt9LGM9YS5LYTtiLnI4YT1fLnBnYihkPT57aWYoIWMub2Epe3ZhciBlPWQuUGE7aWYoZSljLmthKGUpO2Vsc2V7bGV0IGY7ZGliKGEsZC5JYiwoZj1kLmdldENvbnRleHQoKSk9PW51bGw/dm9pZCAwOmYuc1ooKSl9fX0pO2IuUVViPV8ucGdiKChkLGUpPT57aWYoIWMub2Epe2Q9InVua25vd24iO2lmKGEuR2EubGVuZ3RoPjApe2xldCBnPWEuR2FbMF07ZyBpbnN0YW5jZW9mIF8ubD9kPWcuY29uc3RydWN0b3IubWVzc2FnZUlkOkFycmF5LmlzQXJyYXkoZykmJihkPVBnYihnKSl9dmFyIGY7Xy5NeWEoKDAsXy56eWEpYElFME9pJHthLkdhLmxlbmd0aH1jRVNTbSR7Xy55eWEoKGY9ZCkhPW51bGw/ZjoidW5rbm93biIpfU9XWEVYZWAsKCk9PntjLmNhbGxiYWNrKHtkYXRhOmEuR2EscmVzcG9uc2VIZWFkZXJzOmV9KTtyZXR1cm4gY30pfX0pO2IuUlViPV8ucGdiKChkLGUsZixnKT0+e2RpYihhLGYsZyl9KTtiLmZIZD0hMDthLmthLndhPWJ9OwpnaWI9ZnVuY3Rpb24oYSl7Xy5MYShhLk5hLGZ1bmN0aW9uKGIpe2Iua2EmJl8ubmcodGhpcy53YSxiLmthLGIpfSxhKTtfLm5nKGEud2EsYj0+e2Iuc2VuZCgpO3JldHVybiBfLkFMYShhLkthLmx6KCksYz0+e2MgaW5zdGFuY2VvZiBfLnVMYSYmYS5LYS5jYW5jZWwoKX0pfSk7YS5vYS5QaWE/Xy5uZyhhLndhLCgpPT5udWxsKTooXy5uZyhhLndhLGI9PntmaWIoYSxiLmRhdGEpfSksYS5vYS5QbWM/Xy5uZyhhLndhLGEubmIsYSk6YS5vYS5GNGI/Xy5uZyhhLndhLGEucmIsYSk6Xy5uZyhhLndhLGEuU2EsYSkpO18uQUxhKGEud2EsYS5aYSxhKX07CmhpYj1mdW5jdGlvbihhLGIpe3ZhciBjPXt9O2Zvcih2YXIgZD0wO2Q8Yi5sZW5ndGg7ZCsrKWNbYltkXS5tZXNzYWdlSWRdPWJbZF07Yj1bXTtkPVtdO2ZvcihsZXQgZz0wO2c8YS5sZW5ndGg7ZysrKXt2YXIgZT1hW2ddO2lmKGUgaW5zdGFuY2VvZiBfLmwpe3ZhciBmPWNbZS5jb25zdHJ1Y3Rvci5tZXNzYWdlSWRdO2UgaW5zdGFuY2VvZiBfLlRnYj9kLnB1c2goZSk6ZiYmYi5wdXNoKGUpfWVsc2UgaWYoZj1jW1BnYihlKV0pZT1fLnNmYShfLkRoYShmKSxlKS5jbG9uZSgpLGIucHVzaChlKX1yZXR1cm57elphOmIscEZhOmR9fTtfLmlpYj1mdW5jdGlvbihhLGIpe18uZGhiKGEua2EsYiwhMSl9OwpmaWI9ZnVuY3Rpb24oYSxiKXtfLkxhKGEuTmEsZnVuY3Rpb24oYyl7dmFyIGQ9W107QXJyYXkuaXNBcnJheShkKXx8KGQ9W2RdKTtkPWhpYihiLGQpLnBGYTtpZihkLmxlbmd0aCl0cnl7Yy53YShkKX1jYXRjaChlKXtpZigiZnVuY3Rpb24iPT10eXBlb2YgXy4kaGImJmUgaW5zdGFuY2VvZiBfLiRoYil0aHJvdyB0aGlzLlBhPSEwLG5ldyBqaGIodGhpcy5rYSk7dGhyb3cgZTt9fSxhKX07ZGliPWZ1bmN0aW9uKGEsYixjPXt9KXtpZihhLm9hLlBpYSl7Yj1bYl07ZmliKGEsYik7Yj1oaWIoYixhLkFhKTtsZXQgZDtiLnpaYS5sZW5ndGg+MD9kPWIuelphWzBdOmIucEZhLmxlbmd0aD4wJiYoZD1iLnBGYVswXSk7aWYoZCl7bGV0IGU7Xy5NeWEoKDAsXy56eWEpYEJxZ2tKZSR7Xy55eWEoKGU9ZC5jb25zdHJ1Y3Rvci5tZXNzYWdlSWQpIT1udWxsP2U6InVua25vd24iKX1PV1hFWGVgLCgpPT5hLm9hLlBpYShkLGMpKX19ZWxzZSBhLkdhLnB1c2goYil9OwpqaWI9ZnVuY3Rpb24oYSl7cmV0dXJuIF8uTXlhKCgwLF8uenlhKWB4SzRnUWMke18ueXlhKGEua2Eub2EpfVYxR000YiR7Xy55eWEoYS5rYS5nZXRQYXRoKCkpfU9XWEVYZWAsKCk9PnthLndhLmNhbGxiYWNrKGEua2EpO3JldHVybiBhLndhfSl9OwpsaWI9Y2xhc3N7Y29uc3RydWN0b3IoYSxiLGMsZCxlKXt0aGlzLkdhPVtdO3RoaXMuUGE9dGhpcy5PYT0hMTt0aGlzLkVhPWI7dGhpcy5CYT1jO3RoaXMuQWE9ZDt0aGlzLm9hPWU7dGhpcy5OYT1hLkFhO3RoaXMud2E9bmV3IF8uWWU7dGhpcy5LYT1uZXcgXy5ZZSh0aGlzLlJhLmJpbmQodGhpcykpO3RoaXMuSWE9YTt0aGlzLmthPW5ldyBPZ2IodGhpcy5vYS5pVGM/YS5rYTphLm9hKTtfLkxlKHRoaXMua2Eua2EsdGhpcy5FYSk7dGhpcy5rYS5vYT10aGlzLm9hLm1ldGhvZDt0aGlzLm9hLk01YiYmKHRoaXMua2EuTTViPXRoaXMub2EuTTViKTtpZih0eXBlb2YgdGhpcy5vYS5ob3N0PT09InN0cmluZyIpe3ZhciBmPV8ua2QoMSx0aGlzLm9hLmhvc3QpO3ZhciBnPV8uYmthKHRoaXMub2EuaG9zdCk7dmFyIGg9TnVtYmVyKF8ua2QoNCx0aGlzLm9hLmhvc3QpKXx8bnVsbH1mPWZ8fHRoaXMub2Euc2NoZW1lO3R5cGVvZiBmPT09InN0cmluZyImJl8uSWUodGhpcy5rYS5rYSxmKTtnPWd8fAp0aGlzLm9hLmRvbWFpbjt0eXBlb2YgZz09PSJzdHJpbmciJiZfLkplKHRoaXMua2Eua2EsZyk7dHlwZW9mIGg9PT0ibnVtYmVyIiYmXy5LZSh0aGlzLmthLmthLGgpO2E9dGhpcy5rYTsoYj0hXy5BYShfLm1hYix0aGlzLmthLm9hKSkmJl8uQWEoXy5tYWIsYS5vYSk/YS5vYT0iR0VUIjpifHxfLkFhKF8ubWFiLGEub2EpfHwoYS5vYT0iUE9TVCIpO1hnYihhKTthLlNhPWI7ZWliKHRoaXMpO2lmKHRoaXMuQmEpe2lmKF8uQWEoXy5tYWIsdGhpcy5rYS5vYSkpe2E9dGhpcy5CYTt0cnl7dmFyIGs9YSBpbnN0YW5jZW9mIEhUTUxGb3JtRWxlbWVudH1jYXRjaChtKXtrPXR5cGVvZiBhPT09Im9iamVjdCImJmEubm9kZVR5cGU9PT0xJiZ0eXBlb2YgYS5zdHlsZT09PSJvYmplY3QiJiZ0eXBlb2YgYS5vd25lckRvY3VtZW50PT09Im9iamVjdCImJmEudGFnTmFtZS50b0xvd2VyQ2FzZSgpPT09ImZvcm0ifWlmKGspe2s9dGhpcy5rYTtYZ2Ioayk7ay54OWE9ITE7az10aGlzLmthO2E9dGhpcy5CYTsKWGdiKGspO2lmKGsueDlhKXRocm93IEVycm9yKCJNZSIpO2suQWE9YX1lbHNlIHRoaXMuQmEgaW5zdGFuY2VvZiBfLmw/dGhpcy5rYS5HYSgiZi5yZXEiLHRoaXMuQmEuRmMoKSk6Xy5kaGIodGhpcy5rYSx0aGlzLkJhLCEwKX1lbHNlIF8uZGhiKHRoaXMua2EsdGhpcy5CYSwhMSk7dGhpcy5vYS5QaWEmJihfLllnYih0aGlzLmthLCExKSxrPXRoaXMua2EsWGdiKGspLGsuWmE9ITApfWdpYih0aGlzKTt0aGlzLldpPW51bGx9c2VuZCgpe3JldHVybiB0aGlzLklhLnNlbmRSZXF1ZXN0KHRoaXMpfXJiKGEpe2E9YS5kYXRhO2ZvcihsZXQgYj0wO2I8YS5sZW5ndGg7YisrKXtsZXQgYz1hW2JdO2lmKGMgaW5zdGFuY2VvZiBLZ2IpdGhyb3cgYzt9cmV0dXJuIGF9bmIoYSl7YT1hLmRhdGE7aWYodGhpcy5BYS5sZW5ndGg9PT0wKXJldHVybiBudWxsO3ZhciBiPWhpYihhLHRoaXMuQWEpO2lmKGIuelphLmxlbmd0aD09PTAmJmIucEZhLmxlbmd0aD09PTApdGhyb3cgbmV3IGloYih0aGlzLkFhLAphLHRoaXMuRWEsdGhpcy5rYSk7cmV0dXJuIF8uRmEoYi56WmEsYi5wRmEpfVNhKGEpe2E9YS5kYXRhO2lmKHRoaXMuQWEubGVuZ3RoPT09MClyZXR1cm4gbnVsbDt2YXIgYj1oaWIoYSx0aGlzLkFhKSxjPWIuelphO2I9Yi5wRmE7aWYoYy5sZW5ndGg9PT0wJiZiLmxlbmd0aD09PTApdGhyb3cgbmV3IGloYih0aGlzLkFhLGEsdGhpcy5FYSx0aGlzLmthKTtpZihjLmxlbmd0aD09PTEmJmIubGVuZ3RoPT09MClyZXR1cm4gY1swXTtpZihjLmxlbmd0aD09PTAmJmIubGVuZ3RoPT09MSl0aHJvdyBiWzBdO3Rocm93IG5ldyBoaGIodGhpcy5BYSxhLHRoaXMuRWEsdGhpcy5rYSk7fWdldFVybCgpe3JldHVybiB0aGlzLmthLmdldFVybCgpfWNhbmNlbCgpe3RoaXMud2EuY2FuY2VsKCl9WmEoYSl7aWYoYSBpbnN0YW5jZW9mIGpoYnx8dGhpcy5QYSYmdGhpcy5vYS5QaWEpe2E9Xy5Xbih0aGlzLmthLmthLCJmLnJldHJpZXMiKTthPShhP051bWJlcihhKTowKSsxO2lmKGE+MTAwKXRocm93IG5ldyBfLmdoYigiVG9vTWFueVJldHJpZXMiLAoxMDIsdGhpcy5FYSwiVGhlcmUgd2FzIGFuIGVycm9yIGFmdGVyIHNldmVyYWwgcmV0cmllcy4iLHZvaWQgMCx0aGlzLmthKTt2YXIgYj1fLmtpYih0aGlzLklhLHRoaXMuRWEsdGhpcy5CYSx0aGlzLkFhLHRoaXMub2EpO18uaWliKGIseyJmLnJldHJpZXMiOmF9KTtyZXR1cm4gdGhpcy5JYS5zZW5kUmVxdWVzdChiKX1pZighKGEgaW5zdGFuY2VvZiBfLnVMYSkpe2lmKCF0aGlzLm9hLkY0YiYmYSBpbnN0YW5jZW9mIEtnYil7Yj1hLmthO2lmKGI9PTEwMCYmdGhpcy5PYSlyZXR1cm4gbmV3IF8udUxhKHRoaXMud2EpO2xldCBjO3Rocm93IG5ldyBfLmdoYigiVHJhbnNwb3J0RXJyb3IiLGIsdGhpcy5FYSwiVGhlcmUgd2FzIGFuIGVycm9yIGR1cmluZyB0aGUgdHJhbnNwb3J0IG9yIHByb2Nlc3Npbmcgb2YgdGhpcyByZXF1ZXN0LiIsYSwoYz1hLm9hKSE9bnVsbD9jOnZvaWQgMCk7fXRocm93IGE7fX1SYSgpe3RoaXMua2EmJih0aGlzLk9hPSEwLHRoaXMua2EuYWJvcnQoKSl9dG9TdHJpbmcoKXtyZXR1cm4gdGhpcy5rYS5nZXRVcmwoKX19O3ZhciBtaWI9Y2xhc3MgZXh0ZW5kcyB3aGJ7Y29uc3RydWN0b3IoKXtzdXBlcigiaiIpfVJhKGEpe3ZhciBiPWEuQWE7cmV0dXJuIGImJkhnYihiKT8wOmEueDlhJiYhYS5aYT8uOTouNX1jbG9uZSgpe3ZhciBhPW5ldyBtaWIsYj10aGlzLk9hO2Eud2E9dGhpcy53YTthLk9hPWI7dGhpcy52d2EoKSYmYS5zZXRXaXRoQ3JlZGVudGlhbHMoITApO3JldHVybiBhfUFiKGEpe3ZhciBiPWEuS3coKTtiPWIuc3Vic3RyaW5nKGIuaW5kZXhPZigiXG4iKSk7dmFyIGM9dGhpcy5vYTt0cnl7dmFyIGQ9d2luZG93LkpTT04ucGFyc2UoYil9Y2F0Y2goZSl7c2hiKHRoaXMsMTAsdm9pZCAwLGEpO3JldHVybn1BcnJheS5pc0FycmF5KGQpJiZ0aGlzLmthLnA4YShjLGRbMF0pO3RoaXMua2EueVhhKGMsYS5zWigpKX1FYShhKXt2YXIgYj1hLkt3KCk7Yj1iLnN1YnN0cmluZyhiLmluZGV4T2YoIlxuIikpO3RyeXt2YXIgYz13aW5kb3cuSlNPTi5wYXJzZShiKX1jYXRjaChkKXt9QXJyYXkuaXNBcnJheShjKT8KKGI9dGhpcy5vYSx0aGlzLmthLnA4YShiLGNbMF0pLHRoaXMua2EueVhhKGIsYS5zWigpKSk6c3VwZXIuRWEoYSl9fTt2YXIgbmliLG9pYixwaWI7bmliPXtQbWM6ITEsZG9tYWluOnZvaWQgMCxQaWE6bnVsbCxtZXRob2Q6IlBPU1QiLEY0YjohMSxzY2hlbWU6dm9pZCAwLGhvc3Q6dm9pZCAwLGlUYzohMX07Xy5raWI9ZnVuY3Rpb24oYSxiLGMsZCxlKXt2YXIgZj17fTtpZihiLnN0YXJ0c1dpdGgoImh0dHAiKSl7Yj1fLmpkKGIpO2Y9YlsxXXx8dm9pZCAwO3ZhciBnPWJbM118fHZvaWQgMCxoPWJbNF07Yj1iWzVdfHwiIjtmPXtzY2hlbWU6Zixob3N0Omc/KGY/ZisiOi8vIjoiIikrZysoaD9gOiR7aH1gOiIiKTp2b2lkIDB9fWg9W107Zz17fTtlfHxkJiYodHlwZW9mIGQ9PT0iZnVuY3Rpb24ifHxBcnJheS5pc0FycmF5KGQpKT8oZCYmKGg9QXJyYXkuaXNBcnJheShkKT9kOltkXSksZSYmKGc9ZSkpOmQmJihnPWQpO2Q9aDtPYmplY3QuYXNzaWduKGYsZyk7ZT1mO2Y9YS5nZXREZWZhdWx0T3B0aW9ucygpO18ud2phKGYsZXx8e30pO3JldHVybiBuZXcgbGliKGEsYixjfHxudWxsLGQsZil9OwpvaWI9ZnVuY3Rpb24oYSl7dmFyIGI9Xy5CZCgiSW02Y21mIikuc3RyaW5nKCkrIi9yZXBvcnRodHRwNHh4ZXJyb3IiO2Eua2EmJihhLmthLlZBYj0hMCk7YS5vYSYmKGEub2EuVkFiPSEwKTtiJiYoTGhiPWIpfTtwaWI9ZnVuY3Rpb24oYSl7dmFyIGI9W107YS5rYSYmYi5wdXNoKC4uLmEua2Eub2EuY29uY2F0KCkpO2Eub2EmJmIucHVzaCguLi5hLm9hLm9hLmNvbmNhdCgpKTtmb3IobGV0IGMgb2YgYiljIGluc3RhbmNlb2YgQWhiJiYoYy5OYT0hMCl9OwpfLnFpYj1jbGFzcyBleHRlbmRzIF8uYmV7Y29uc3RydWN0b3IoYSxiLGMsZCl7c3VwZXIoKTt0aGlzLkJhPW51bGw7dGhpcy5BYT1bXTt0aGlzLkVhPW51bGw7dGhpcy5HYT1uaWI7dGhpcy5NRGE9bnVsbDtfLmJlLmNhbGwodGhpcyk7Ynx8KGI9bmV3IEhyLE1oYihiLG5ldyBtaWIpKTt0aGlzLmthPWI7Y3x8KGM9bmV3IEhyLE1oYihjLG5ldyBtaWIpKTt0aGlzLm9hPWM7dGhpcy5rYT1ifHxudWxsO3RoaXMub2E9Y3x8bnVsbDt0aGlzLkJhPWR8fG51bGx9c2V0V2l0aENyZWRlbnRpYWxzKGEpe2ZvcihsZXQgYiBvZlt0aGlzLmthLHRoaXMub2FdKWIuc2V0V2l0aENyZWRlbnRpYWxzKGEpfXZ3YSgpe3JldHVybiB0aGlzLmthLnZ3YSgpfWdldERlZmF1bHRPcHRpb25zKCl7cmV0dXJuIF8uV2ModGhpcy5HYSl9d2EoYSl7Xy5EaSh0aGlzLGEpO3RoaXMuQWEucHVzaChhKX1tYWtlUmVxdWVzdChhLGIsYyxkKXtyZXR1cm4gdGhpcy5zZW5kUmVxdWVzdChfLmtpYih0aGlzLGEsYixjLGQpKX1zZW5kUmVxdWVzdChhKXt0aGlzLkVhfHwKKHRoaXMuRWE9YSk7cmV0dXJuIGppYihhKX1xYygpe18uRGQodGhpcy5rYSk7Xy5EZCh0aGlzLm9hKTtfLkRkKHRoaXMuQmEpO3N1cGVyLnFjKCl9aW5pdGlhbGl6ZShhKXthPWEuZ2V0KF8ucFJhKS5rYTt2YXIgYj10aGlzLmthO2IuQmE9YTtiLkJhJiZiLnpkLmxpc3RlbihiLkJhLCJnIixiLnVOYik7dGhpcy5CYT1udWxsfX07Xy52ZChfLlNvLF8ucWliKTtfLmhjKCkubmthKGE9Pnt2YXIgYj1fLmxmKCksYz1uZXcgXy5xaWIoYSk7Yy5NRGE9KCk9PntjLk1EYT1udWxsO3JldHVybiBiLnByb21pc2V9O2EucmVnaXN0ZXJTZXJ2aWNlKF8uU28sYyk7Yy5pbml0aWFsaXplKGEpO3ZhciBkPW5ldyBBaGIsZTsoZT1jLmthKT09bnVsbHx8TWhiKGUsZCk7dmFyIGY7KGY9Yy5vYSk9PW51bGx8fE1oYihmLGQpO3BpYihjKTsoZD1jLmthKSE9bnVsbCYmKGQubkphPTEwKTsoZD1jLm9hKSE9bnVsbCYmKGQubkphPTEwKTtvaWIoYyk7YS5nZXQoXy5xUmEpLk40YigpO2Mud2EobmV3IEZoYik7Yy53YShuZXcgQmhiKTtjLndhKG5ldyBFaGIoImUiLCJtb2RzIiwianNtb2RlIiwiZGViIiwib3B0Iiwicm91dGUiLCJob3Rzd2FwcyIpKTthPXdpbmRvdy5sb2NhdGlvbi5ocmVmO3RyeXtfLnNkKGEsImhsIil8fChhPV8ub2thKGEsImhsIiwibm8iKSl9Y2F0Y2goZyl7Xy5WZShFcnJvcigiWmVgIithKSl9Yy53YShuZXcgRGhiKGEpKTtjLndhKG5ldyBuaGIpOwpfLnpnYiYmYy53YShuZXcgQ2hiKTtiLnJlc29sdmUoe30pfSk7Cl8udigpOwp9Y2F0Y2goZSl7Xy5fRHVtcEV4Y2VwdGlvbihlKX0KdHJ5ewpfLmZnYj1uZXcgXy5IcSgicmV0dXJuRnJvemVuIik7Cn1jYXRjaChlKXtfLl9EdW1wRXhjZXB0aW9uKGUpfQp0cnl7Cl8udSgia1dnWGVlIik7CnZhciB6bGIsQWxiLENsYjt6bGI9Y2xhc3MgZXh0ZW5kcyBfLmx7Y29uc3RydWN0b3IoYSl7c3VwZXIoYSl9Z0dhKCl7cmV0dXJuIF8ueGUodGhpcywxKX19O0FsYj1mdW5jdGlvbihhKXt2YXIgYj1uZXcgXy5KeGE7cmV0dXJuIF8uVmIoYiwyLGEpfTtfLkJsYj1mdW5jdGlvbihhLGIpe18uUGMoYSxmdW5jdGlvbihjKXtfLmtsYihiLGMuVWwoKSk7Yi5nZXRUeXBlKGMuVWwoKSl9KX07Q2xiPWNsYXNzIGV4dGVuZHMgXy5se2NvbnN0cnVjdG9yKGEpe3N1cGVyKGEpfX07dmFyIERsYj1jbGFzcyBleHRlbmRzIF8ubHtjb25zdHJ1Y3RvcihhKXtzdXBlcihhKX19O0RsYi5wcm90b3R5cGUuWGE9IktwZkRrZiI7dmFyIEVsYj1fLlViKDQ2MzMwMzQ0NCxfLlJuLERsYik7Xy5Tbls0NjMzMDM0NDRdPVswLF8uRixfLm1tXTt2YXIgR2xiLEZsYixIbGIsSWxiOwpHbGI9ZnVuY3Rpb24oYSxiKXt2YXIgYz17fSxkPXt9LGU9bmV3IENsYixmPXt9LGc9e30saD0hMCxrPW51bGwsbT0hMSxuPW5ldyBNYXA7Xy5QYyhiLChKLE4pPT57dmFyIFE9Si5lQigpLkZjKCksWj1KLlVsKClbXy5LcV0ucF8rUTtuLmhhcyhaKT8oSj1uLmdldChaKSxkW05dPWRbSl0sY1tOXT1jW0pdKTooY1tOXT1fLmxmKCksZFtOXT1jW05dLnByb21pc2Usbi5zZXQoWixOKSxaPW5ldyBfLnJsYixOPV8uZmgoWiw0LE4pLFo9Xy5KQmE/Xy5XZmIoSi5VbCgpKTpKLlVsKClbXy5LcV0ucF8sTj1fLmZoKE4sMSxaKSxKLmVCKCkmJl8ucWxiKE4sUSksXy51aChlLDEsXy5ybGIsTiksaD8oZz1fLnlsYihKKSxoPSExLGs9YS5BYS5wb2xpY3ksbT1fLklxKEosXy5taSksZj1fLklxKEosXy5nWGEpKTpGbGIoayxhLkFhLnBvbGljeSkpfSk7dmFyIHA9e1BpYTphLkJhLmJpbmQoYSxiLGMpfSxyPV8ua2liKGEub2EsXy5SZ2IoKSxlLFtfLnNsYl0scCk7cD1PYmplY3QudmFsdWVzKGIpO3ZhciB4PQpwLmZpbHRlcihKPT57dmFyIE47cmV0dXJuKChOPV8uSXEoSixfLmhXYSkpIT1udWxsP046MCk+MH0pLm1hcChKPT5KLlVsKClbXy5LcV0ucF8rIjoiK18uSXEoSixfLmhXYSkpLmpvaW4oIiwiKSx6PXtycGNpZHM6QXJyYXkuZnJvbShuZXcgU2V0KHAubWFwKEo9PkouVWwoKVtfLktxXS5wXykpKS5qb2luKCksInNvdXJjZS1wYXRoIjphLkVhLmthKCl9O3gubGVuZ3RoPjAmJih6WyJmY2QucmV0cmllcyJdPXgpO3AuZm9yRWFjaChKPT57aWYoXy5JcShKLF8uaFhhKSE9PXZvaWQgMClmb3IobGV0IE4gb2YgXy5JcShKLF8uaFhhKS5rZXlzKCkpeltOXT1fLklxKEosXy5oWGEpLmdldChOKX0pO18uaWliKHIseik7cD1yLmthLkJhO18uVWMoZyl8fF8ubm1hKHAsT2JqZWN0LmVudHJpZXMoZykpO2lmKGYhPW51bGwpZm9yKGxldCBKIGluIGYpcC5zZXQoSixmW0pdKTshayYmbXx8Xy5MZ2Ioci5rYSwiRkFJTCIpO2Eud2Eoci5rYSxiKTtfLkFMYShhLm9hLnNlbmRSZXF1ZXN0KHIpLGZ1bmN0aW9uKEope18uTGEoXy5TYyhjKSwKTj0+e04ucmVqZWN0KEopfSl9LGEpO3ZhciBCPSExLEg9Xy5vamEoZCk7Xy5QYyhkLChKLE4pPT57Si5IeChRPT57USBpbnN0YW5jZW9mIF8uV2UmJihCPSEwLF8ucmphKGIsTikpfSk7Xy5yZyhKLCgpPT57SC0tO0ImJkg9PT0wJiZyLmNhbmNlbCgpfSl9KTtyZXR1cm4gZH07RmxiPWZ1bmN0aW9uKGEsYil7aWYoYSE9PWImJihhfHxiKSYmIShhJiYhYnx8IWEmJmJ8fGEud2EoKSE9Yi53YSgpfHxhLm9hKCkhPWIub2EoKSkpe3ZhciBjPW5ldyBTZXQoYS5BYSgpKSxkPW5ldyBTZXQoYi5BYSgpKTtjLnNpemU9PWQuc2l6ZSYmWy4uLmNdLmV2ZXJ5KGU9PmQuaGFzKGUpKSYmSGxiKGEuQmEoKSxiLkJhKCkpJiZIbGIoYS5FYSgpLGIuRWEoKSl9fTtIbGI9ZnVuY3Rpb24oYSxiKXtyZXR1cm4gYT09PWI/ITA6YSYmIWJ8fCFhJiZifHxhLmdldFNlY29uZHMoKSE9Yi5nZXRTZWNvbmRzKCl8fGEub2EoKSE9Yi5vYSgpPyExOiEwfTsKSWxiPWZ1bmN0aW9uKGEpe3ZhciBiPXt9O2EuZm9yRWFjaChmdW5jdGlvbihjKXt2YXIgZD1fLmRrKGMsMSk7Yz1fLmdoKGMsMik7YltkXT1KU09OLnBhcnNlKGMpfSk7cmV0dXJuIG5ldyBfLlJuKFtiXSl9OwpfLktsYj1jbGFzc3tjb25zdHJ1Y3Rvcigpe3RoaXMub2E9Xy5IZihfLk1yKF8ucWliKSk7dGhpcy5rYT1fLkhmKF8ubGxiKTt0aGlzLkFhPV8uSGYoXy5ibGIpO18uSGYoXy5vbGIpLks0YigpO3RoaXMuRWE9Xy5IZihfLnBsYik7dGhpcy5XaT1udWxsO3ZhciBhPV8uRGYoKTtzZXRUaW1lb3V0KGFzeW5jKCk9Pnt2YXIgYj0oMCxfLk1mKSgpLGM9YigpO2I9YigxKTt0cnl7bGV0IGQ9Yihhd2FpdCBjKF8uRmYoYSwoKT0+Xy5LZihfLlFmKF8uZGxiKSkpKSk7Xy4kZmIoZCwzKX1maW5hbGx5e2MoKX19LDApfWV4ZWN1dGUoYSl7aWYoXy5VYyhhKSlyZXR1cm57fTtfLkJsYihhLHRoaXMua2EpO3JldHVybiBHbGIodGhpcyxhKX1CYShhLGIsYyxkKXtpZihjIGluc3RhbmNlb2YgXy5UZ2Ipe3ZhciBlPV8ucGgoYywyLF8uZGIpP2AgWyR7Xy5naChjLDIsXy5kYil9XWA6IiI7ZT1BbGIoYFJQQyBleGVjdXRvciBzZXJ2aWNlIHRocmV3IGFuIGVycm9yJHtlfSFgKTtfLndlKGMsOSxfLmRiKSYmCl8uSXhhKGUsXy5kayhjLDksXy5kYikpOyhjPWMub2EoKSkmJihjPWMuZ2V0RXh0ZW5zaW9uKEVsYikpJiZfLkh4YShlLF8ubWgoYyxfLnBpLDEsXy5vaCgpKSk7bGV0IGY9bmV3IF8ucWkoZSk7Xy5MYShfLlNjKGIpLGc9PntnLnJlamVjdChmKX0pfWVsc2UgaWYoZT1fLmdoKGMsNixfLmRiKSxhLmhhc093blByb3BlcnR5KGUpKXtpZihfLnBoKGMsMixfLmRiKSl7YT1hW2VdO2xldCBmPWEuVWwoKS5vb2EoKSxnPUlsYihfLm1oKGMsemxiLDcsXy5vaCgpLF8uZGIpKTtjPV8udChjLDIsdm9pZCAwLF8uZGIpO2M9Xy5JcShhLF8uZmdiKSYmXy5KbGI/Xy5iYyhmLGMpLlRjKCk6Xy5iYyhmLGMpO2M9YS5VbCgpLlBzKGMsZyxkKTtiW2VdLnJlc29sdmUoYyl9ZWxzZSBjLk9yKCkmJihjPW5ldyBfLnFpKGMuZ2V0RXJyb3IoKSksYltlXS5yZWplY3QoYykpO18ucmphKGIsZSl9fXdhKCl7fX07Xy5KbGI9ITE7Xy5iZyhfLktsYixfLndsYik7Cl8udigpOwp9Y2F0Y2goZSl7Xy5fRHVtcEV4Y2VwdGlvbihlKX0KdHJ5ewpfLnUoIm92S3VMZCIpOwp2YXIgVGxiLFVsYixWbGIsV2xiO1RsYj1mdW5jdGlvbihhKXtyZXR1cm4hIV8uSXEoYSxfLm1pKSYmIV8uSXEoYSxfLmRYYSkmJiFfLklxKGEsXy5pV2EpJiYhXy5JcShhLF8ualdhKSYmIV8uSXEoYSxfLmZYYSl9O1VsYj1mdW5jdGlvbihhKXtyZXR1cm4gSlNPTi5zdHJpbmdpZnkoe05HZDpfLnlsYihhKSxzRjpfLklxKGEsXy5lWGEpLHpGZDpfLklxKGEsXy5oV2EpLEpBZDpfLklxKGEsXy5nWGEpLHVybFBhcmFtczpfLklxKGEsXy5oWGEpLE9uYjpfLklxKGEsXy52eGEpfSl9OwpWbGI9ZnVuY3Rpb24oYSxiKXt2YXIgYz1gJHtfLklxKGIsXy5pV2EpfWAsZD1fLklxKGIsXy5qV2EpO2lmKCFjfHwhZCl0aHJvdyBFcnJvcigid2UiKTtpZighYS5vYVtjXSl0aHJvdyBFcnJvcigieGVgIitkKyJgIitjKTtpZihfLkFhKGEub2FbY10sZCkpdGhyb3cgRXJyb3IoInllYCIrZCsiYCIrYyk7YS5vYVtjXS5wdXNoKGIpO2lmKGEua2FbY10pe2lmKGEua2FbY10ubGVuZ3RoPGEub2FbY10ubGVuZ3RoKXRocm93IGI9RXJyb3IoInplYCIrYysiYCIrYS5rYVtjLmxlbmd0aF0pLF8uVGZiKGEsYyksYjthLm9hW2NdLmxlbmd0aD09PWEua2FbY10ubGVuZ3RoJiYoYS53YVtjXSgpLF8uVGZiKGEsYykpfWVsc2UgYS53YVtjXSgpLF8uVGZiKGEsYyl9O1dsYj1mdW5jdGlvbihhLGIsYyl7YyYmKGRlbGV0ZSBhLmthW2JdW2NdLGRlbGV0ZSBhLndhW2JdW2NdLGRlbGV0ZSBhLm9hW2JdW2NdKTtfLlVjKGEua2FbYl0pJiYoZGVsZXRlIGEud2FbYl0sZGVsZXRlIGEua2FbYl0sZGVsZXRlIGEub2FbYl0pfTsKXy5YbGI9Y2xhc3N7Y29uc3RydWN0b3IoKXt0aGlzLkFhPV8uSGYoXy5LbGIpO3RoaXMuS2E9Xy5IZihfLmxsYik7dGhpcy5PYT1fLmhrYi5nZXRJbnN0YW5jZSgpO3RoaXMuSWE9dGhpcy5QYT0wO3RoaXMuQmE9e307dGhpcy5FYT17fTt0aGlzLkdhPXt9O3RoaXMuTmE9Xy5IZihfLlZmYik7dGhpcy53YT17fTt0aGlzLmthPXt9O3RoaXMub2E9e319ZmV0Y2goYSl7dmFyIGI9YS5VbCgpO18udmxiKGEuZUIoKSxiLHRoaXMuS2EpO3ZhciBjPV8uSXEoYSxfLmlXYSksZD1fLklxKGEsXy5qV2EpO2lmKF8uSUJhJiYhYyYmIWQmJlRsYihhKSl7Yj1VbGIoYSk7bGV0IGUsZjtjPShmPShlPXRoaXMuQmEpW2JdKSE9bnVsbD9mOmVbYl09YGF1dG9iYXRjaF8keysrdGhpcy5QYX1gO2Q9YCR7Kyt0aGlzLklhfWA7bGV0IGcsaCxrOygoaz0oZz10aGlzLkVhKVtoPWNdKSE9bnVsbD9rOmdbaF09e30pW2RdPWE7bGV0IG0sbixwO2E9KChwPShtPXRoaXMuR2EpW249Y10pIT1udWxsP3A6bVtuXT17fSlbZF09Cl8ubGYoKTt0aGlzLklhPD0xJiZQcm9taXNlLnJlc29sdmUoKS50aGVuKCgpPT57Zm9yKGxldCB4IGluIHRoaXMuQmEpe3ZhciByPXRoaXMuQmFbeF07bGV0IHo9dGhpcy5HYVtyXTtyPXRoaXMuQWEuZXhlY3V0ZSh0aGlzLkVhW3JdKTtmb3IobGV0IFtCLEhdb2YgT2JqZWN0LmVudHJpZXMocikpcj16W0JdLEgudGhlbihyLnJlc29sdmUsci5yZWplY3QpfXRoaXMuSWE9MDt0aGlzLkJhPXt9O3RoaXMuRWE9e307dGhpcy5HYT17fX0pO3JldHVybiBhLnByb21pc2V9cmV0dXJuIGMmJmQ/KHRoaXMua2FbY118fCh0aGlzLmthW2NdPXt9LHRoaXMud2FbY109e30sdGhpcy5OYS50cmFjayhjLCgwLF8uaWUpKGZ1bmN0aW9uKCl7dGhpcy5vYVtjXT10aGlzLkFhLmV4ZWN1dGUodGhpcy53YVtjXSk7Zm9yKGxldCBlIGluIHRoaXMub2FbY10pdGhpcy5vYVtjXVtlXS50aGVuKGY9Pnt0aGlzLmthW2NdW2VdLnJlc29sdmUoZik7V2xiKHRoaXMsYyxlKX0sZj0+e3RoaXMua2FbY11bZV0ucmVqZWN0KGYpOwpXbGIodGhpcyxjLGUpfSx0aGlzKX0sdGhpcykpKSx0aGlzLndhW2NdW2RdPWEsdGhpcy5rYVtjXVtkXT1fLmxmKCksVmxiKHRoaXMuTmEsYSksdGhpcy5rYVtjXVtkXS5wcm9taXNlLkh4KGU9PntlIGluc3RhbmNlb2YgXy5XZSYmdGhpcy5vYS5oYXNPd25Qcm9wZXJ0eShjKSYmdGhpcy5vYVtjXS5oYXNPd25Qcm9wZXJ0eShkKSYmdGhpcy5vYVtjXVtkXS5jYW5jZWwoKX0pLHRoaXMua2FbY11bZF0ucHJvbWlzZSk6dGhpcy5BYS5leGVjdXRlKHtnZW5lcmljOmF9KS5nZW5lcmljfXdjKGEpe3ZhciBiPWEuVWwoKTtfLnZsYihhLmVCKCksYix0aGlzLkthKTtiPSgwLF8uaWUpKGZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuQWEuZXhlY3V0ZSh7Z2VuZXJpYzphfSkuZ2VuZXJpY30sdGhpcyk7cmV0dXJuIHRoaXMuT2EuZXhlY3V0ZShiLF8uSXEoYSxfLmZYYSkpfX07Xy5iZyhfLlhsYixfLlNsYik7Cl8udigpOwp9Y2F0Y2goZSl7Xy5fRHVtcEV4Y2VwdGlvbihlKX0KdHJ5ewpfLnUoInNnWTZaYiIpOwp2YXIgSUliLEpJYixPSWIsUEliLFFJYixSSWIsU0liLFRJYixVSWIsVkliLFdJYixYSWIsWUliLE5JYixaSWIsJEliLGFKYjtJSWI9ZnVuY3Rpb24oYSl7dmFyIGI7cmV0dXJuKGI9SEliLmdldChhKSkhPW51bGw/Yjp7fX07SkliPWZ1bmN0aW9uKC4uLmEpe2EuZm9yRWFjaCgoW2IsY10pPT57SEliLnNldChiLGMpfSl9O18uTEliPWZ1bmN0aW9uKC4uLmEpe2EuZm9yRWFjaChiPT57S0liLmhhcyhiKXx8S0liLmFkZChiKX0pfTsKT0liPWZ1bmN0aW9uKGEsYixjKXtyZXR1cm4gYS5saXN0ZW4oYixmdW5jdGlvbihkKXt2YXIgZT1kLmRhdGEsZj17bWVzc2FnZTplLnNKYSxjdXN0b21FdmVudDplLmV2ZW50VHlwZSxBZmE6ZS5BZmEscGF5bG9hZDplfSxnPWYuY3VzdG9tRXZlbnR8fGM7Xy50SmEoXy5YaShNSWIsZnVuY3Rpb24oaCl7cmV0dXJuIGgoZixnKX0pKS50aGVuKGZ1bmN0aW9uKCl7aWYoIWUud0RiKXJldHVybiBlLkFmYSYmZz09IlVqUU1hYyI/Xy5rR2IoZS5BZmEsZi5tZXNzYWdlLGUpOk5JYihmLm1lc3NhZ2UsZyl9KS50aGVuKCgpPT57dmFyIGg7Xy5mR2I/aD1kb2N1bWVudC5ib2R5Omg9ZG9jdW1lbnQuYm9keTtfLlhnKGgsYyxmKX0pfSl9O1BJYj1mdW5jdGlvbihhKXtyZXR1cm4gYX07UUliPWZ1bmN0aW9uKCl7cmV0dXJuITF9O1JJYj1mdW5jdGlvbigpe3JldHVybiEwfTsKU0liPWNsYXNzIGV4dGVuZHMgXy5se2NvbnN0cnVjdG9yKGEpe3N1cGVyKGEpfWdldFZhbHVlKCl7cmV0dXJuIF8udCh0aGlzLDEpfXNldFZhbHVlKGEpe3JldHVybiBfLmZoKHRoaXMsMSxhKX1jbGVhclZhbHVlKCl7cmV0dXJuIF8uR2UodGhpcywxKX19O1RJYj1jbGFzcyBleHRlbmRzIF8ubHtjb25zdHJ1Y3RvcihhKXtzdXBlcihhKX1nZXRWYWx1ZSgpe3JldHVybiBfLnQodGhpcywxKX1zZXRWYWx1ZShhKXtyZXR1cm4gXy5maCh0aGlzLDEsYSl9Y2xlYXJWYWx1ZSgpe3JldHVybiBfLkdlKHRoaXMsMSl9fTtVSWI9Y2xhc3MgZXh0ZW5kcyBfLmx7Y29uc3RydWN0b3IoYSl7c3VwZXIoYSl9Z2V0SWQoKXtyZXR1cm4gXy5xKHRoaXMsXy5zSWIsMSl9TWMoYSl7cmV0dXJuIF8uU2IodGhpcyxfLnNJYiwxLGEpfVlnKCl7cmV0dXJuIF8ua2oodGhpcyxfLnNJYiwxKX19O1ZJYj1mdW5jdGlvbihhKXt2YXIgYj1uZXcgXy5ySWI7cmV0dXJuIF8uZmgoYiwxLGEpfTsKV0liPWNsYXNzIGV4dGVuZHMgXy5se2NvbnN0cnVjdG9yKGEpe3N1cGVyKGEpfWdldFZlcnNpb25JbmZvKCl7cmV0dXJuIF8udCh0aGlzLDEpfX07WEliPWNsYXNzIGV4dGVuZHMgXy5se2NvbnN0cnVjdG9yKGEpe3N1cGVyKGEpfX07WUliPWZ1bmN0aW9uKGEpe3ZhciBiPVtdLGM9Xy5oR2I/YS5rYS5tYXAoZD0+ZC5UYygpKTphLmthO2ZvcihsZXQgZCBvZiBfLmxHYihhKSlmb3IobGV0IGUgb2YgZCliLnB1c2goZS50aGVuKGY9PntfLm1HYihhLGYsYyl9KSk7cmV0dXJuIF8uSWgoYil9OwpOSWI9ZnVuY3Rpb24oYSxiKXt2YXIgYz1uZXcgXy5qR2IoW2FdLGIpO3JldHVybihiPT0ibkRhOGljIiYmdHlwZW9mIGE9PT0iZnVuY3Rpb24iP18uaUdiKGMsZD0+ZCk6WUliKGMpKS50aGVuKCgpPT57dmFyIGQ9e30sW2VdPWMua2E7Zm9yKGxldCBmIG9mIGMud2EpXy5McmEoZixjLm9hKT9fLlhnKGYsYy5vYSxlLCExLGQpOl8uTHJhKGYsIndaVkhsZCIpJiZfLlhnKGYsIndaVkhsZCIsZSwhMSxkKX0pfTtaSWI9bmV3IF8uVnQoIlRUUDRkYyIsXy5NSGIsXy5LSGIsW18ubWksITEsXy5saSwiL0NvbnRyaWJ1dGlvbnNTZXJ2aWNlLldyaXRlUmVhY3Rpb24iXSk7JEliPW5ldyBfLlZ0KCJJSDVXUWUiLF8uQkliLF8uQUliLFtfLm1pLCExLF8ubGksIi9NZWRpYVNlcnZpY2UuVXBkYXRlU2VudGltZW50Il0pO2FKYj1jbGFzcyBleHRlbmRzIF8ubHtjb25zdHJ1Y3RvcihhKXtzdXBlcihhKX19O2FKYi5wcm90b3R5cGUuWGE9InM4dEcyYyI7dmFyIGJKYj1jbGFzcyBleHRlbmRzIF8ubHtjb25zdHJ1Y3RvcihhKXtzdXBlcihhKX19O3ZhciBjSmI9Y2xhc3MgZXh0ZW5kcyBfLmx7Y29uc3RydWN0b3IoYSl7c3VwZXIoYSl9fTtjSmIucHJvdG90eXBlLlhhPSJYWmtBNyI7bmV3IF8uQ2koYUpiKTtuZXcgXy5DaShjSmIpO18uWm8uWFprQTc9ZnVuY3Rpb24oYSl7cmV0dXJuIF8uJG8oXy5hcChfLnEoYSxfLmdIYiwxKSkpfTtfLk5xKGNKYixfLmdIYixmdW5jdGlvbihhKXthPV8ucShhLF8uZ0hiLDEpO3JldHVybiBhIT1udWxsP1thXTpbXX0pO3ZhciBkSmI9bmV3IF8uVnQoInVab0VHIixjSmIsYUpiLFtfLm1pLCEwLF8ubGksIi9NZXJjaGFudFByb2ZpbGVTZXJ2aWNlLkdldEFjdGlvbkdyb3VwIl0pO3ZhciBlSmI9ZnVuY3Rpb24oYSxiKXtyZXR1cm4gYS5rYS5mZXRjaChiKS50aGVuKGM9PmMpfSxmSmI9Y2xhc3N7Y29uc3RydWN0b3IoYSl7dGhpcy5rYT1hO3RoaXMuY2FjaGU9bmV3IE1hcH1mZXRjaChhKXtyZXR1cm4gZUpiKHRoaXMsYSl9fTt2YXIgS0liPW5ldyBTZXQsZ0piPW5ldyBTZXQsSEliPW5ldyBNYXA7dmFyIE1JYj1bXSxoSmI9W107dmFyIGpKYjtfLmlKYj1mdW5jdGlvbigpe3JldHVybiEwfTtqSmI9ZnVuY3Rpb24oYSl7YT1JSWIoYSk7dmFyIGI9YS51c2F8fFFJYjthLnVzYT0oKT0+YigpJiZfLmlKYigpO2Eua3ViIT1udWxsfHwoYS5rdWI9UkliKTthLm8xYSE9bnVsbHx8KGEubzFhPVBJYik7YS5wMWEhPW51bGx8fChhLnAxYT1QSWIpO2EudmxhIT1udWxsfHwoYS52bGE9UEliKTthLndsYSE9bnVsbHx8KGEud2xhPVBJYik7cmV0dXJuIGF9OwpfLmJnKGNsYXNze2NvbnN0cnVjdG9yKCl7dGhpcy5rYT1fLkhmKF8uY0hiKTt0aGlzLm9hPV8uSGYoXy5YbGIpO3RoaXMud2E9bmV3IGZKYih0aGlzLm9hKTtmb3IodmFyIGE9Xy4kaWIuZ2V0SW5zdGFuY2UoKS5nZXRFdmVudFRhcmdldCgpO2hKYi5sZW5ndGg7KWEudm8oaEpiLnBvcCgpKTtoSmIucHVzaChPSWIoYSwiYWYuZGF0YS5FdmVudFR5cGUuSU5WQUxJREFURUQiLCJuRGE4aWMiKSk7aEpiLnB1c2goT0liKGEsImFmLmRhdGEuRXZlbnRUeXBlLlVQREFURUQiLCJvMDdIWmMiKSk7aEpiLnB1c2goT0liKGEsImFmLmRhdGEuRXZlbnRUeXBlLlVQREFURV9XSVRIIiwiVWpRTWFjIikpfWZldGNoKGEpe3ZhciBiPWEuVWwoKS50b1N0cmluZygpLGM9akpiKGIpLGQ9Yy5rdWIoYSk7aWYoS0liLmhhcyhiKSYmZClyZXR1cm4gdGhpcy53YS5mZXRjaChjLm8xYShhKSkudGhlbihjLnAxYSxlPT57Xy5WZShFcnJvcigid2ZgIitlKSx7RGY6e3JwY2lkOmJ9fSk7aWYoYy51c2EoKSlyZXR1cm4gdGhpcy5rYS5mZXRjaChjLnZsYShhKSkudGhlbihjLndsYSwKZj0+e18uVmUoRXJyb3IoInhmYCIrZikse0RmOntycGNpZDpifX0pO3Rocm93IGY7fSk7dGhyb3cgZTt9KTtnSmIuaGFzKGIpJiZkJiZ0aGlzLm9hLmZldGNoKGMubzFhKGEpKS50aGVuKGMucDFhLGU9PntfLlZlKEVycm9yKCJ5ZmAiK2UpLHtEZjp7cnBjaWQ6Yn19KX0pO3JldHVybiB0aGlzLmthLmZldGNoKGMudmxhKGEpKS50aGVuKGMud2xhKX13YyhhKXt2YXIgYj1hLlVsKCkudG9TdHJpbmcoKSxjPWpKYihiKTtyZXR1cm4gS0liLmhhcyhiKSYmYy5rdWIoYSk/dGhpcy5vYS53YyhjLm8xYShhKSkudGhlbihjLnAxYSxkPT57Xy5WZShFcnJvcigiemZgIitkKSx7RGY6e3JwY2lkOmJ9fSk7aWYoYy51c2EoKSlyZXR1cm4gdGhpcy5rYS53YyhjLnZsYShhKSkudGhlbihjLndsYSxlPT57Xy5WZShFcnJvcigiQWZgIitlKSx7RGY6e3JwY2lkOmJ9fSk7dGhyb3cgZTt9KTt0aHJvdyBkO30pOnRoaXMua2Eud2MoYy52bGEoYSkpLnRoZW4oYy53bGEpfX0sXy5vUmEpO18uTEliKCJmWEpwUWUiLCJabGJqTGMiLCJ1Qm0za2QiLCJHZG9vZGMiLCJGbEg5U2UiLCJ2WmlXdCIsIlBWMlduZCIsInRGZmJvIiwiYXhWb3FiIiwieFNiRlliIiwiUHNDMW0iLCJiNm9Yb2IiLCJITnlocmMiLCJjNWR4SWIiLCJrMUJYNmMiLCJrUFFLNiIsImk5VndHZiIsInQ2UUVnYiIsIld1eU5GYiIsIlNXSjdBYyIsInAzM0loZCIsIkFiR09OIiwiUXY3VFNlIiwieGNJQUxkIiwiQWF0eHJkIiwiVW1tU2tmIiwid2ttSkplIiwiTWFFZXViIiwieE4zOG5lIiwicThQQmxkIiwiRTNDMWRkIiwia09sYnRlIiwidjc2RlFjIiwiaGhJNHJmIiwidzl3QW5iIiwiYjc2dnJjIiwiVmExODAiLCJxZUdVcGMiLCJ1Y2RjWSIsImJmMXFQYyIsIllJcUc2IiwicUpWTkZlIiwidG1yN2JlIiwiUlRtbmdiIiwiS1FhUk5kIiwibkI0d0FjIiwicFRQcmNlIiwiRnc5ZHVlIiwiRlVjVTVjIiwiSzZIdU5iIiwiWlZQUUNmIiwiUVVScnYiLCJ6WmRCR2UiLCJvRGFQYmMiLCJQZ1F2Y2QiLCJPUDVOcmMiLAoiZ2NRY3ZlIiwiczlQZXhkIiwiZjMwdkdmIiwidHVHZlJjIiwiQ3ZBdHBjIiwiRTZuRm1jIiwiUk9RWjdiIiwiVzVBeENjIiwiamhLaGxiIiwiVEZOemsiLCJmakliRGUiLCJMeVh6dCIsIkdweGFuYiIsIkxhU1FQYiIsIkJzeGxlYiIsIm9jcDkzZSIsIm5DQnNMYiIsIm5XQzJiZCIsImJPb0kyZSIsIk9USWZSIiwiYWxqTlZlIiwidUtjd3RlIiwibEtOQUJmIiwiUzhFN1EiLCJ3WHo3TCIsIm9uQlZsZiIsIkpwclFoZSIsInJJWG9QIiwiVE5LcDliIiwiVTNFWlBlIiwiQ0N3MjIiLCJWNFJGWWUiLCJRTkhsMWIiLCJkcG9MeGIiLCJuejVQTmUiLCJzN2p2NWUiLCJQa05WamQiLCJyZUhZSSIsIlppNmJUYiIsImVBWGpFYyIsIkFkTDIwYyIsIkRpOVZpZiIsImxNSDlaYyIsImJMV3pvZCIsInNrUU9wYiIsIkdIcDZ1ZiIsIk5uV3NOYiIsIlJPQ01VZSIsInFlUHlUYyIsIkdHVVhhZCIsIlFYblZxZiIsInFKQkN3ZiIsIm9QSjdoZSIsInl4OEp0ZiIsIlZDY3doZCIsInpWRUNMZSIsIktFR1dPZSIsCiJ0elhBamIiLCJ3M1lydGUiLCJ0Z1M3emQiLCJrenZaWGIiLCJlZjRMRGYiLCJQSHpqT2IiLCJRNHo3RiIsIlZiU01sIiwiektBUDJlIiwibExWckZlIiwiSDFLb1JlIiwiZlFKREllIiwieDRVUU1iIiwiTjBlOFZiIiwiQ0V6a0NiIiwiTm51VFEiLCJLQlRIdGUiLCJhbXlVdGUiLCJrY0NIMWMiLCJnOXg1b2IiLCJYRGd3WGUiLCJrSFdXcmQiLCJNaXFkQmYiLCJWV3JYbSIsInNsTWlRYyIsIlY4TEhzIiwiUjE3S2MiLCJrV2NMTmMiLCJYVEdyYmUiLCJ5SDZjZWYiLCJiMjlLbWYiLCJja3Y2MyIsIkhYR0VGZSIsIkZnd0FEZiIsImkwN3YwZCIsImtCWjdIYiIsInpUSHJaIiwidU9NdHBiIiwib3JEZmJkIiwiQml1a2FlIiwicjdzSGVlIiwiUENjazdlIiwic29mWU1lIiwiVmVRZTlkIiwiZ1k5aVMiLCJQNFdkamMiLCJaTURWMWUiLCJrRTJ4OGIiLCJBclRwYmUiLCJxWmg4aWIiLCJPQ1BGIiwiRlBEYmtkIiwidFNDNGUiLCJET3B2bmMiLCJ3d3Y2bWIiLCJjcnJTUGQiLCJvTDUzUSIsInl5RzdjZCIsCiJURDlkTGMiKTsKKGZ1bmN0aW9uKC4uLmEpe2EuZm9yRWFjaCgoW2IsY10pPT57Xy5MSWIoYik7SkliKFtiLGNdKX0pfSkoWyJ3VGU4V2UiLHt1c2E6KCk9PiEwLHZsYTpmdW5jdGlvbihhKXt2YXIgYj1hLmVCKCk7YT1uZXcgXy5UdDt2YXIgYz1hLnNldFF1ZXJ5O3ZhciBkPW5ldyBfLlJ0O2I9Yj9iOm5ldyBfLlFIYjtkPV8uR2ooZCwxLF8uU3QsYik7YT1jLmNhbGwoYSxkKTtyZXR1cm4gXy5JeGIuZ2V0SW5zdGFuY2UoYSl9LHdsYTpmdW5jdGlvbihhKXt2YXIgYixjO2E9KGI9YS51OSgpKT09bnVsbD92b2lkIDA6KGM9Yi5CSygpKT09bnVsbD92b2lkIDA6Xy5TaChjLF8uRXdiLDIsXy5GeGIpO3JldHVybiBfLlNIYi5QcyhhP2E6bmV3IF8uRXdiKX19XSxbInVab0VHIix7dXNhOigpPT4hMCxvMWE6ZnVuY3Rpb24oYSl7dmFyIGI9YS5lQigpO2E9bmV3IGFKYjtpZihfLk1rKGIsMSkpe3ZhciBjPV8uaWooYiwxLHZvaWQgMCx2b2lkIDAsXy5sYik7Xy50ayhhLDEsYyl9Xy5RayhiLDIpJiYoYz1fLmlrKGIsCjIpLF8uWmgoYSwyLGMpKTtfLmtqKGIsXy5oSGIsMykmJihiPV8ucShiLF8uaEhiLDMpLGM9Xy5kSGIobmV3IF8uZkhiLF8uVGooYiwxLF8ub2goKSkpLF8uSGsoYiwyKSYmXy5lSGIoYyxfLmNrKGIsMikpLF8uU2IoYSxfLmZIYiwzLGMpKTtyZXR1cm4gZEpiLmdldEluc3RhbmNlKGEpfSxwMWE6ZnVuY3Rpb24oYSl7dmFyIGI9YS51OSgpO2E9bmV3IF8uakhiO2lmKF8ua2ooYixfLmdIYiwxKSl7dmFyIGM9Xy5xKGIsXy5nSGIsMSk7Xy5TYihhLF8uZ0hiLDEsYyl9aWYoXy5raihiLGJKYiwyKSl7Yz1fLnEoYixiSmIsMik7Yj1uZXcgWEliO2lmKF8ua2ooYyxfLmhoLDEpKXt2YXIgZD1iLGU9Xy5xKGMsXy5oaCwxKTtfLlNiKGQsXy5oaCwxLGUpfV8ucGgoYywyKSYmKGQ9YixlPV8uZ2goYywyKSxfLmZoKGQsMixlKSk7Xy5waChjLDMpJiYoZD1iLGM9Xy5naChjLDMpLF8uZmgoZCwzLGMpKTtfLlNiKGEsWEliLDIsYil9cmV0dXJuIF8ua0hiLlBzKGEpfX1dLFsiQzhWMENiIix7dXNhOigpPT4KITAsdmxhOmZ1bmN0aW9uKGEpe3ZhciBiPWEuZUIoKTthPW5ldyBfLmV2O2lmKGI9PW51bGwpdmFyIGM9dm9pZCAwO2Vsc2V7dmFyIGQ7KGM9Xy5xKGIsXy52SWIsMykpPT1udWxsP2Q9dm9pZCAwOmQ9Xy5taChjLF8udUliLDEsXy5vaCgpKTtjPWR9aWYoIWMpcmV0dXJuIF8ucUliLmdldEluc3RhbmNlKF8ubkliKG5ldyBfLm9JYixhKSk7Zm9yKGxldCBrIG9mIGMpe2xldCBtLG4scD0obT1rKT09bnVsbD92b2lkIDA6KG49Xy5xKG0sXy5zSWIsMSkpPT1udWxsP3ZvaWQgMDpfLkxqKG4sMSkscix4O3ZhciBlOyhyPWspPT1udWxsP2U9dm9pZCAwOmU9KHg9Xy5taChyLF8udEliLDMsXy5vaCgpKVswXSk9PW51bGw/dm9pZCAwOnguZ2V0U3RhdGUoKTtsZXQgej1lPT09MT8xOjI7Yz1fLmR2KGEsMTMpO2Q9bmV3IF8uY3Y7Yj1kLk1jO3ZhciBmPShuZXcgXy5idikuTWMoMjUpLGc9bmV3IF8uaHY7dmFyIGg9bmV3IF8uREliO2g9Xy52ayhoLDIsXy5oSWIscCk7Xy5sSWIoYyxiLmNhbGwoZCwKXy5pdihmLF8uQ0liKGcsaCkpKS5zZXRWYWx1ZShfLmZ2KChuZXcgXy5VdSkua2EoXy5xSGIsXy5vSGIobmV3IF8ucEhiLDIyKSkseikpKX1yZXR1cm4gXy5xSWIuZ2V0SW5zdGFuY2UoXy5uSWIobmV3IF8ub0liLGEpKX0sd2xhOmZ1bmN0aW9uKGEpe3ZhciBiLGM9KGI9YS51OSgpKT09bnVsbD92b2lkIDA6Xy5payhiLDEpLGQ7YT0oZD1hLnU5KCkpPT1udWxsP3ZvaWQgMDpfLkxqKGQsMik7ZD1fLnpJYi5QcztjPT09MT8oYz1uZXcgXy55SWIsYT1WSWIoYSksYz1fLlNiKGMsXy5ySWIsMSxhKSk6Yz1uZXcgXy55SWI7cmV0dXJuIGQuY2FsbChfLnpJYixjKX19XSxbIklINVdRZSIse3VzYTooKT0+ITAsdmxhOmZ1bmN0aW9uKGEpe2E9YS5lQigpO3ZhciBiLGM7dmFyIGQ9bmV3IF8uREhiO2Q9Xy5aaChkLDEsMik7ZD1fLlpoKGQsMiwxKTt2YXIgZT1uZXcgXy5GSGIsZj0oYj1fLnEoYSxVSWIsMikpPT1udWxsP3ZvaWQgMDooYz1iLmdldElkKCkpPT1udWxsP3ZvaWQgMDpfLkxqKGMsCjEpO2I9Xy52ayhlLDEsXy5CSGIsZik7Yj1fLlNiKGQsXy5GSGIsMyxiKTtiPV8uWmgoYiw0LDIpO3ZhciBnLGgsayxtO2M9bmV3IF8uS0hiO2I9Xy5TYihjLF8uREhiLDEsYik7Yz1hPT1udWxsP3ZvaWQgMDooZz1fLnEoYSxfLndJYiwxKSk9PW51bGw/dm9pZCAwOihoPV8ucShnLFNJYiw0KSk9PW51bGw/dm9pZCAwOl8uTGooaCwxKTtnPV8uZmgoYiw0LGMpO2g9YT09bnVsbD92b2lkIDA6KGs9Xy5xKGEsXy53SWIsMSkpPT1udWxsP3ZvaWQgMDoobT1fLnEoayxUSWIsMikpPT1udWxsP3ZvaWQgMDpfLkxqKG0sMSk7az1fLmZoKGcsNSxoKTtrPV8uZmgoaywzLCJXMldfT05CT0FSRElORyIpO3ZhciBuO2lmKCgobj1fLnEoYSxVSWIsMikpPT1udWxsP3ZvaWQgMDpfLk9qKG4sMikpPT09MSlfLnpiKGssMixbMF0sXy5LY2EpO2Vsc2V7bGV0IHA7KChwPV8ucShhLFVJYiwyKSk9PW51bGw/dm9pZCAwOl8uT2oocCwyKSk9PT0yJiZfLnpiKGssMixbMV0sXy5LY2EpfXJldHVybiBaSWIuZ2V0SW5zdGFuY2Uoayl9LAp3bGE6ZnVuY3Rpb24oYSl7dmFyIGIsYyxkPShiPWEudTkoKSk9PW51bGw/dm9pZCAwOihjPWIuZ2V0U3RhdHVzKCkpPT1udWxsP3ZvaWQgMDpfLmRrKGMsMSksZSxmO2E9KGU9YS51OSgpKT09bnVsbD92b2lkIDA6KGY9Xy5xKGUsV0liLDIpKT09bnVsbD92b2lkIDA6Xy5MaihmLDEpO2U9JEliLlBzO2Q9PT0wPyhkPW5ldyBfLkJJYixmPVZJYihhKSxkPV8uU2IoZCxfLnJJYiwyLGYpKTpkPW5ldyBfLkJJYjtyZXR1cm4gZS5jYWxsKCRJYixkKX19XSxbInhSUmRCYyIse3VzYTooKT0+ITAsdmxhOmZ1bmN0aW9uKGEpe2E9YS5lQigpO2E9Xy5uSWIobmV3IF8ub0liLGEpO3JldHVybiBfLnFJYi5nZXRJbnN0YW5jZShhKX0sd2xhOmZ1bmN0aW9uKGEpe3ZhciBiPWEudTkoKTthPW5ldyBfLkZJYjt2YXIgYz1uZXcgXy5FSWI7Yj1fLnQoYiwyKTtjPV8uZmgoYywxLGIpO2E9Xy5TYihhLF8uRUliLDEsYyk7cmV0dXJuIF8uR0liLlBzKGEpfX1dKTtKSWIoKTtKSWIoKTsKXy52KCk7Cn1jYXRjaChlKXtfLl9EdW1wRXhjZXB0aW9uKGUpfQp0cnl7Cl8udSgicWFmQlBkIik7Cl8uU2ZiPW5ldyBfLm9vKF8udlJhKTsKXy52KCk7Cn1jYXRjaChlKXtfLl9EdW1wRXhjZXB0aW9uKGUpfQp0cnl7Cl8udSgiZWJaM21iIik7CnZhciBhZ2IsYmdiLGNnYixkZ2I7YWdiPWZ1bmN0aW9uKCl7Xy5IeWEoKS5zcGFuLm1hcmtlcj0hMH07YmdiPWZ1bmN0aW9uKGEpe3ZhciBiOygoYj1fLkh5YSgpKT09bnVsbD92b2lkIDA6Yi5zcGFuKSE9PXZvaWQgMCYmXy5NeWEoYSxhZ2IpfTtjZ2I9ZnVuY3Rpb24oYSxiLGMsZCxlKXt2YXIgZj1fLmxmKCk7aWYoYj09PWEubGVuZ3RoKXJldHVybiBlLnByb21pc2UudGhlbihkLnJlc29sdmUsZC5yZWplY3QpLGYucmVzb2x2ZShjKSxmLnByb21pc2U7dmFyIGc9YVtiXSxoPV8ubGYoKTtkLnByb21pc2UuSHgoKCk9Pnt9KTtnLnJ4YShjLldQLGgucHJvbWlzZSkudGhlbihrPT57ay5hS2E9PT0xfHxrLmFLYT09PTJ8fGsuYUthPT09Mz9rLkpJYi50aGVuKGQucmVzb2x2ZSxkLnJlamVjdCk6aC5wcm9taXNlLnRoZW4oZC5yZXNvbHZlLGQucmVqZWN0KTtrLmFLYT09PTE/Zi5yZXNvbHZlKGspOmYucmVzb2x2ZShjZ2IoYSwrK2IsayxoLGUpKX0pO3JldHVybiBmLnByb21pc2V9OwpkZ2I9KGEsYik9Pnt2YXIgYz1fLmxmKCk7cmV0dXJuIGNnYihfLmZiYShfLldpKF8uWmZiLGQ9PiEhZCkpLDAsbmV3IF8uQnIoYSxudWxsLDApLGMsYikudGhlbihkPT5uZXcgXy5CcihkLldQLGMucHJvbWlzZSxkLnR5cGUoKSkpfTsKXy5lZ2I9ZnVuY3Rpb24oYSxiLGMpe3ZhciBkPV8ubGYoKSxlPV8ubGYoKSxmLGc9Yi5VbCgpLGg9Zy5nZXROYW1lKCksaz1pc05hTihoKT9fLkpCYT9fLnl5YShfLldmYihnKSk6aDpOdW1iZXIoaCk7cmV0dXJuIF8uTXlhKCgwLF8uenlhKWBmQ1ZTamMke2t9QUxoeE9iYCwoKT0+e2RnYihiLGQpLnRoZW4obT0+e20uYUthPT09MT9fLlVmYihjLGIpOihmPWEobS5XUCksZC5yZXNvbHZlKGYpKTtlLnJlc29sdmUobS5KSWIpfSk7cmV0dXJuIGUucHJvbWlzZS50aGVuKG09PntiZ2IoKDAsXy56eWEpYGZDVlNqYyR7a31rYWl4OWJgKTtyZXR1cm4gbX0sbT0+e2JnYigoMCxfLnp5YSlgZkNWU2pjJHtrfUJJUUJRY2ApO20gaW5zdGFuY2VvZiBfLldlJiZmIT1udWxsJiZmLmNhbmNlbCgpO3Rocm93IG07fSl9KX07Cl8uYmcoY2xhc3N7Y29uc3RydWN0b3IoKXt0aGlzLmthPV8uSGYoXy5WZmIpO3ZhciBhPV8uSGYoXy5TZmIpO3RoaXMub2E9YS5mZXRjaC5iaW5kKGEpO3RoaXMud2E9YS53Yy5iaW5kKGEpfWZldGNoKGEpe3JldHVybiBfLmVnYih0aGlzLm9hLGEsdGhpcy5rYSkudGhlbihiPT5iLnU5KCkpfXdjKGEpe3JldHVybiBfLmVnYih0aGlzLndhLGEsdGhpcy5rYSkudGhlbihiPT5iLnU5KCkpfX0sXy51UmEpOwpfLnYoKTsKfWNhdGNoKGUpe18uX0R1bXBFeGNlcHRpb24oZSl9CnRyeXsKXy51KCJkb3dJR2IiKTsKXy5Dcj1uZXcgXy5vbyhfLlRvKTsKXy52KCk7Cn1jYXRjaChlKXtfLl9EdW1wRXhjZXB0aW9uKGUpfQp0cnl7Cl8uZE09Xy5rYygiZDVFaEplIixbXSk7Cn1jYXRjaChlKXtfLl9EdW1wRXhjZXB0aW9uKGUpfQp0cnl7Cl8ucm9jPWZ1bmN0aW9uKGEpe3JldHVybiBfLkxqKGEsOSl9O18uc29jPWZ1bmN0aW9uKGEsYil7cmV0dXJuIF8uWmgoYSwyMCxiKX07Cl8uQXo9Y2xhc3MgZXh0ZW5kcyBfLmx7Y29uc3RydWN0b3IoYSl7c3VwZXIoYSl9SmIoKXtyZXR1cm4gXy5payh0aGlzLDEpfXVIKCl7cmV0dXJuIF8uR2UodGhpcywxKX10MCgpe3JldHVybiBfLlFrKHRoaXMsMSl9Z2V0QXR0cmlidXRlKCl7cmV0dXJuIF8uZ2godGhpcywyKX1zZXRBdHRyaWJ1dGUoYSl7cmV0dXJuIF8uZmgodGhpcywyLGEpfUprKCl7cmV0dXJuIF8uR2UodGhpcywyKX1oYXNBdHRyaWJ1dGUoKXtyZXR1cm4gXy5waCh0aGlzLDIpfUFiKCl7cmV0dXJuIF8uZ2godGhpcywxNCl9SWEoYSl7cmV0dXJuIF8uZmgodGhpcywxNCxhKX1TRigpe3JldHVybiBfLkdlKHRoaXMsMTQpfXUwKCl7cmV0dXJuIF8ucGgodGhpcywxNCl9RmIoKXtyZXR1cm4gXy5naCh0aGlzLDMpfU9hKGEpe3JldHVybiBfLmZoKHRoaXMsMyxhKX1Oeigpe3JldHVybiBfLkdlKHRoaXMsMyl9QTAoKXtyZXR1cm4gXy5waCh0aGlzLDMpfVhiKCl7cmV0dXJuIF8uZ2godGhpcyw0KX1OYShhKXtyZXR1cm4gXy5maCh0aGlzLAo0LGEpfUNFKCl7cmV0dXJuIF8uR2UodGhpcyw0KX1RTCgpe3JldHVybiBfLnBoKHRoaXMsNCl9UWUoKXtyZXR1cm4gXy5naCh0aGlzLDUpfXdkKGEpe3JldHVybiBfLmZoKHRoaXMsNSxhKX1Sdygpe3JldHVybiBfLkdlKHRoaXMsNSl9VmcoKXtyZXR1cm4gXy5waCh0aGlzLDUpfXJrKCl7cmV0dXJuIF8uZ2godGhpcywxNSl9VWooYSl7cmV0dXJuIF8uZmgodGhpcywxNSxhKX1CMCgpe3JldHVybiBfLkdlKHRoaXMsMTUpfW9WKCl7cmV0dXJuIF8ucGgodGhpcywxNSl9TGQoKXtyZXR1cm4gXy5naCh0aGlzLDYpfVBjKGEpe3JldHVybiBfLmZoKHRoaXMsNixhKX1zYmEoKXtyZXR1cm4gXy5HZSh0aGlzLDYpfUhmKCl7cmV0dXJuIF8ucGgodGhpcyw2KX1xZSgpe3JldHVybiBfLmdoKHRoaXMsNyl9a2QoYSl7cmV0dXJuIF8uZmgodGhpcyw3LGEpfUNzKCl7cmV0dXJuIF8uR2UodGhpcyw3KX16Zygpe3JldHVybiBfLnBoKHRoaXMsNyl9aGMoKXtyZXR1cm4gXy5kayh0aGlzLDEyKX1RYihhKXtyZXR1cm4gXy5sayh0aGlzLAoxMixhKX1OQigpe3JldHVybiBfLkdlKHRoaXMsMTIpfVJMKCl7cmV0dXJuIF8ud2UodGhpcywxMil9WmQoKXtyZXR1cm4gXy5naCh0aGlzLDgpfVN5KGEpe3JldHVybiBfLmZoKHRoaXMsOCxhKX1CdCgpe3JldHVybiBfLkdlKHRoaXMsOCl9Q2coKXtyZXR1cm4gXy5waCh0aGlzLDgpfUNTKCl7cmV0dXJuIF8uZ2godGhpcyw5KX1CYShhKXtyZXR1cm4gXy5maCh0aGlzLDksYSl9V3EoKXtyZXR1cm4gXy5HZSh0aGlzLDkpfUliKCl7cmV0dXJuIF8ucGgodGhpcyw5KX1QYigpe3JldHVybiBfLmdoKHRoaXMsMTApfXdhKGEpe3JldHVybiBfLmZoKHRoaXMsMTAsYSl9bG4oKXtyZXR1cm4gXy5HZSh0aGlzLDEwKX1XTCgpe3JldHVybiBfLnBoKHRoaXMsMTApfW5iKCl7cmV0dXJuIF8uZ2godGhpcywxMSl9QWEoYSl7cmV0dXJuIF8uZmgodGhpcywxMSxhKX13bygpe3JldHVybiBfLkdlKHRoaXMsMTEpfWlRKCl7cmV0dXJuIF8ucGgodGhpcywxMSl9UGEoKXtyZXR1cm4gXy5kayh0aGlzLDEzKX1vYShhKXtyZXR1cm4gXy5sayh0aGlzLAoxMyxhKX1Kcygpe3JldHVybiBfLkdlKHRoaXMsMTMpfUZTKCl7cmV0dXJuIF8ud2UodGhpcywxMyl9UWQoKXtyZXR1cm4gXy5jayh0aGlzLDE2KX1PYihhKXtyZXR1cm4gXy4kaCh0aGlzLDE2LGEpfWt1KCl7cmV0dXJuIF8uR2UodGhpcywxNil9alYoKXtyZXR1cm4gXy5Iayh0aGlzLDE2KX1VRigpe3JldHVybiBfLmNrKHRoaXMsMTcpfVVjKGEpe3JldHVybiBfLiRoKHRoaXMsMTcsYSl9anUoKXtyZXR1cm4gXy5HZSh0aGlzLDE3KX1KUygpe3JldHVybiBfLkhrKHRoaXMsMTcpfUthKCl7cmV0dXJuIF8ucSh0aGlzLF8ucHosMTkpfUVhKGEpe3JldHVybiBfLlNiKHRoaXMsXy5weiwxOSxhKX1rUSgpe3JldHVybiBfLkdlKHRoaXMsMTkpfWtqKCl7cmV0dXJuIF8ua2oodGhpcyxfLnB6LDE5KX1DMCgpe3JldHVybiBfLmdoKHRoaXMsMjEpfVJhKGEpe3JldHVybiBfLmZoKHRoaXMsMjEsYSl9bFYoKXtyZXR1cm4gXy5HZSh0aGlzLDIxKX1laygpe3JldHVybiBfLnBoKHRoaXMsMjEpfXJiKCl7cmV0dXJuIF8uaWsodGhpcywKMjApfXlxKCl7cmV0dXJuIF8uR2UodGhpcywyMCl9UGYoKXtyZXR1cm4gXy5Rayh0aGlzLDIwKX1nZXRWaWV3ZXJUeXBlKCl7cmV0dXJuIF8uaWsodGhpcywyMil9RnMoYSl7cmV0dXJuIF8uWmgodGhpcywyMixhKX1RQ2EoKXtyZXR1cm4gXy5HZSh0aGlzLDIyKX13MCgpe3JldHVybiBfLlFrKHRoaXMsMjIpfUJlKCl7cmV0dXJuIF8uZGsodGhpcywyMyl9WmEoYSl7cmV0dXJuIF8ubGsodGhpcywyMyxhKX1Qdygpe3JldHVybiBfLkdlKHRoaXMsMjMpfWpRKCl7cmV0dXJuIF8ud2UodGhpcywyMyl9RmQoKXtyZXR1cm4gXy5naCh0aGlzLDI0KX1TYShhKXtyZXR1cm4gXy5maCh0aGlzLDI0LGEpfXhtKCl7cmV0dXJuIF8uR2UodGhpcywyNCl9VkwoKXtyZXR1cm4gXy5waCh0aGlzLDI0KX1EUygpe3JldHVybiBfLmdoKHRoaXMsMjUpfW9FKGEpe3JldHVybiBfLmZoKHRoaXMsMjUsYSl9UEQoKXtyZXR1cm4gXy5HZSh0aGlzLDI1KX1XaCgpe3JldHVybiBfLnBoKHRoaXMsMjUpfU1pKCl7cmV0dXJuIF8uY2sodGhpcywKMjYpfUljKGEpe3JldHVybiBfLiRoKHRoaXMsMjYsYSl9bVYoKXtyZXR1cm4gXy5HZSh0aGlzLDI2KX1uVigpe3JldHVybiBfLkhrKHRoaXMsMjYpfX07Xy5Bei5wcm90b3R5cGUuWGE9InpFSXlHZCI7Cn1jYXRjaChlKXtfLl9EdW1wRXhjZXB0aW9uKGUpfQp0cnl7Cl8udSgiZDVFaEplIik7CnZhciBiWGUsY1hlLGVYZTtfLmFYZT1mdW5jdGlvbihhLGIpe3JldHVybiBfLlpoKGEsMSxiKX07YlhlPV8uWGIoXy5weixfLlpuYyk7Y1hlPWZ1bmN0aW9uKGEpe3JldHVybiBfLk9hKGEub2EoKSw0KX07Xy5kWGU9ZnVuY3Rpb24oYSl7dHJ5e2lmKGEpcmV0dXJuIGJYZShfLlFhKGEpKX1jYXRjaChiKXt9cmV0dXJuIG5ldyBfLnB6fTsKZVhlPXtLeSgpe3JldHVybiJrcGZiLXN0YWdlIGtwZmItYXR0ciBrcGZiLXRhdHRyIGtwZmItdmUga3BmYi1ydmFsIGtwZmItcmVudGl0eSBrcGZiLXNlY2lkcyBrcGZiLWRvY2lkIGtwZmItbHBhZ2Uga3BmYi10c291cmNlaWQga3BmYi1seXJpY2lkIGtwZmIta3BpZCBrcGZiLWVudGl0eWlkIGtwZmItZW50aXR5bmFtZSBrcGZiLWZ0eXBlIGtmaWcga2ZoaSBrcGZiLWN0eCBrcGZiLWVjdHgga3BmYi1mdGFnIGtwZmItdnQga3BmYi1waWQga3BmYi1ia3Qga3BmYi1yZWN0eCBrcGZiLWhraSIuc3BsaXQoIiAiKX0sS2soYSxiKXthPW5ldyBfLkN2KGEua2EsYik7Xy54dihhLCJrcGZiLXN0YWdlIixjPT5fLmFYZShiLGMpLGIudUgpO18ud3YoYSwia3BmYi1hdHRyIixiLnNldEF0dHJpYnV0ZSxiLkprKTtfLnd2KGEsImtwZmItdGF0dHIiLGIuSWEsYi5TRik7Xy53dihhLCJrcGZiLXZlIixiLk9hLGIuTnopO18ud3YoYSwia3BmYi1ydmFsIixiLk5hLGIuQ0UpO18ud3YoYSwia3BmYi1yZW50aXR5IiwKYi53ZCxiLlJ3KTtfLnd2KGEsImtwZmItc2VjaWRzIixiLlVqLGIuQjApO18ud3YoYSwia3BmYi1kb2NpZCIsYi5QYyxiLnNiYSk7Xy53dihhLCJrcGZiLWxwYWdlIixiLmtkLGIuQ3MpO18ueHYoYSwia3BmYi10c291cmNlaWQiLGIuUWIsYi5OQik7Xy53dihhLCJrcGZiLWx5cmljaWQiLGIuU3ksYi5CdCk7Xy53dihhLCJrcGZiLWtwaWQiLGIuQmEsYi5XcSk7Xy53dihhLCJrcGZiLWVudGl0eWlkIixiLndhLGIubG4pO18ud3YoYSwia3BmYi1lbnRpdHluYW1lIixiLkFhLGIud28pO18ueHYoYSwia3BmYi1mdHlwZSIsYi5vYSxiLkpzKTtfLnl2KGEsImtmaWciLGIuT2IsYi5rdSk7Xy55dihhLCJrZmhpIixiLlVjLGIuanUpO18udnYoYSwia3BmYi1jdHgiLGIuRWEsXy5kWGUsYi5rUSk7Xy53dihhLCJrcGZiLWVjdHgiLGIuUmEsYi5sVik7Xy54dihhLCJrcGZiLWZ0YWciLGM9Pl8uc29jKGIsYyksYi55cSk7Xy54dihhLCJrcGZiLXZ0IixjPT5iLkZzKGMpLGIuUUNhKTtfLnh2KGEsCiJrcGZiLXBpZCIsYi5aYSxiLlB3KTtfLnd2KGEsImtwZmItYmt0IixiLlNhLGIueG0pO18ud3YoYSwia3BmYi1yZWN0eCIsYi5vRSxiLlBEKTtfLnl2KGEsImtwZmItaGtpIixiLkljLGIubVYpfSxRbChhLGIpe2I9bmV3IF8uQ3YoYi5rYSxhKTtfLkF2KGIsYS50MCxhLkpiLCJrcGZiLXN0YWdlIik7Xy56dihiLGEuaGFzQXR0cmlidXRlLGEuZ2V0QXR0cmlidXRlLCJrcGZiLWF0dHIiKTtfLnp2KGIsYS51MCxhLkFiLCJrcGZiLXRhdHRyIik7Xy56dihiLGEuQTAsYS5GYiwia3BmYi12ZSIpO18uenYoYixhLlFMLGEuWGIsImtwZmItcnZhbCIpO18uenYoYixhLlZnLGEuUWUsImtwZmItcmVudGl0eSIpO18uenYoYixhLm9WLGEucmssImtwZmItc2VjaWRzIik7Xy56dihiLGEuSGYsYS5MZCwia3BmYi1kb2NpZCIpO18uenYoYixhLnpnLGEucWUsImtwZmItbHBhZ2UiKTtfLkF2KGIsYS5STCxhLmhjLCJrcGZiLXRzb3VyY2VpZCIpO18uenYoYixhLkNnLGEuWmQsImtwZmItbHlyaWNpZCIpOwpfLnp2KGIsYS5JYixhLkNTLCJrcGZiLWtwaWQiKTtfLnp2KGIsYS5XTCxhLlBiLCJrcGZiLWVudGl0eWlkIik7Xy56dihiLGEuaVEsYS5uYiwia3BmYi1lbnRpdHluYW1lIik7Xy5BdihiLGEuRlMsYS5QYSwia3BmYi1mdHlwZSIpO18uQnYoYixhLmpWLGEuUWQsImtmaWciKTtfLkJ2KGIsYS5KUyxhLlVGLCJrZmhpIik7Xy5VTmIoYixhLmtqLGEuS2EsY1hlLCJrcGZiLWN0eCIpO18uenYoYixhLmVrLGEuQzAsImtwZmItZWN0eCIpO18uQXYoYixhLlBmLGEucmIsImtwZmItZnRhZyIpO18uQXYoYixhLncwLGEuZ2V0Vmlld2VyVHlwZSwia3BmYi12dCIpO18uQXYoYixhLmpRLGEuQmUsImtwZmItcGlkIik7Xy56dihiLGEuVkwsYS5GZCwia3BmYi1ia3QiKTtfLnp2KGIsYS5XaCxhLkRTLCJrcGZiLXJlY3R4Iik7Xy5CdihiLGEublYsYS5NaSwia3BmYi1oa2kiKX19O3ZhciBmWGU9bnVsbCxnWGU9Y2xhc3MgZXh0ZW5kcyBfLlp6e2NvbnN0cnVjdG9yKGEsYil7c3VwZXIoYSk7bmV3IF8uJHoodGhpcyk7Xy5YeihiLHRoaXMsbmV3IF8uV3ooZVhlKSl9c3RhdGljIHluKCl7cmV0dXJuIF8uQXp9c3RhdGljIFZuKGEpe3JldHVybiBmWGU/ZlhlOmZYZT1fLlZ6KCkudGhlbihiPT57Yj1uZXcgZ1hlKF8uQXosYik7Yi5pbml0aWFsaXplKGEpO3JldHVybiBifSl9fTtfLlpvLnpFSXlHZD1fLllvO3ZhciBoWGU7aFhlPWFzeW5jIGZ1bmN0aW9uKGEsYixjLGQ9ITApe3ZhciBlPSgwLF8uTWYpKCksZj1lKCk7ZT1lKDEpO3RyeXtpZihiKXtsZXQgZz1lKGF3YWl0IGYoYikpO2cuTTlhKDQpJiYoZD9lKGF3YWl0IGYoZy53d2EoKSkpOmUoYXdhaXQgZihnLk1yYigpKSkpfWMmJmEuZ2V0U3RhdGUoKSE9PWMmJmEuTWYoYywhMSwhMCl9ZmluYWxseXtmKCl9fTsKXy5lTT1jbGFzcyBleHRlbmRzIF8uRWl7c3RhdGljIFFhKCl7cmV0dXJue29lOntzdGF0ZTpnWGV9fX1jb25zdHJ1Y3RvcihhKXtzdXBlcigpO3RoaXMua2E9W107dGhpcy5mUT12b2lkIDA7dGhpcy5XZj1hLm9lLnN0YXRlO3RoaXMuV2YubGlzdGVuKChiLGMsZCk9PntpZihjPT09IklhTFRHYiIpaWYoZC5yZWFzb249PT0xKXRoaXMua2EucG9wKCk7ZWxzZXt0aGlzLmthLnB1c2goe30pO3RoaXMuTWYoYiwhMSwhMCk7cmV0dXJufXRoaXMubm90aWZ5KCJpaUFXS2IiLGIpfSk7dGhpcy5JYT10aGlzLldmLnRyYW5zaXRpb24oKGIsYyk9Pnt2YXIgZD1jLm5ld1N0YXRlO2MuSkNjJiZkLkJhKF8ucm9jKGIpKTtyZXR1cm4gZH0pfW9hKCl7dGhpcy5ub3RpZnkoImlpQVdLYiIsdGhpcy5XZi5nZXQoKSl9Z2V0U3RhdGUoKXtyZXR1cm4gdGhpcy5XZi5nZXQoKX1NZihhLGI9ITAsYz0hMSl7YT1fLkd2Yyh7bmV3U3RhdGU6YSxKQ2M6Yn0pO2MmJihhPWEuYW5kKF8uYkEse3JlcGxhY2U6ITB9KSk7CmE9dGhpcy5JYS5ydW4oYSk7Y3x8dGhpcy5rYS5wdXNoKGEpfWdvQmFjayhhKXtoWGUodGhpcyx0aGlzLmthLnBvcCgpLGEpLnRoZW4oKX1FYSgpe3RoaXMua2EubGVuZ3RoPjA/dGhpcy5nb0JhY2soKTp0aGlzLnJlc2V0KCl9QmEoYSl7dGhpcy5mUT1hfXdhKCl7cmV0dXJuIHRoaXMuZlF9cmVzZXQoKXt0aGlzLmthLmxlbmd0aD4wJiZoWGUodGhpcyx0aGlzLmthWzBdLG5ldyBfLkF6LCEwKS50aGVuKCk7dGhpcy5rYT1bXTt0aGlzLk1mKG5ldyBfLkF6LCExLCEwKTt0aGlzLmZRPXZvaWQgMH19O18uVnIoXy5kTSxfLmVNKTsKXy52KCk7Cn1jYXRjaChlKXtfLl9EdW1wRXhjZXB0aW9uKGUpfQp0cnl7Cl8uUlplPV8ua2MoImZDeEVEZCIsW10pOwp9Y2F0Y2goZSl7Xy5fRHVtcEV4Y2VwdGlvbihlKX0KdHJ5ewpfLnUoImZDeEVEZCIpOwpfLlNaZT1jbGFzcyBleHRlbmRzIF8uc297Y29uc3RydWN0b3IoKXtzdXBlcigpO3RoaXMuanlhPW51bGx9fTtfLmFnKF8uUlplLF8uU1plKTsKXy52KCk7Cn1jYXRjaChlKXtfLl9EdW1wRXhjZXB0aW9uKGUpfQp0cnl7Cl8uc0Y9Y2xhc3MgZXh0ZW5kcyBfLmx7Y29uc3RydWN0b3IoYSl7c3VwZXIoYSwxKX19O18udEY9e307Xy5zRi5wcm90b3R5cGUuWGE9InBJVEpoIjsKfWNhdGNoKGUpe18uX0R1bXBFeGNlcHRpb24oZSl9CnRyeXsKdmFyIExkZD1bLTEsXy50Rl07Xy52Rj1jbGFzcyBleHRlbmRzIF8ubHtjb25zdHJ1Y3RvcihhKXtzdXBlcihhKX1jUCgpe3JldHVybiBfLm1oKHRoaXMsXy51RiwxLF8ub2goKSl9fTtfLndGPWZ1bmN0aW9uKGEpe3JldHVybiBfLnEoYSxfLnZGLDIpfTtfLk1kZD1mdW5jdGlvbihhLGIpe3JldHVybiBfLkJqKGEsXy52RiwyLGIpfTtfLnVGPWNsYXNzIGV4dGVuZHMgXy5se2NvbnN0cnVjdG9yKGEpe3N1cGVyKGEsMyl9SmooKXtyZXR1cm4gXy5xKHRoaXMsXy5zRiwxKX14dCgpe3JldHVybiBfLnplKHRoaXMsXy5zRiwxKX1ZdyhhKXtyZXR1cm4gXy5Caih0aGlzLF8uc0YsMSxhKX1BYShhKXtyZXR1cm4gXy5TYih0aGlzLF8udkYsMixhKX19O18udkYucHJvdG90eXBlLlhhPSJISWUyMGIiO18udUYucHJvdG90eXBlLlhhPSJpT05seWYiO3ZhciBPZGQ7T2RkPVswLF8uRiwoKT0+Xy5OZGRdO18uTmRkPVstMyx7fSxMZGQsKCk9Pk9kZF07Cn1jYXRjaChlKXtfLl9EdW1wRXhjZXB0aW9uKGUpfQp0cnl7Cl8ubFllPWZ1bmN0aW9uKGEpe3ZhciBiPW5ldyBfLmtZZTtyZXR1cm4gXy5maChiLDcsYSl9O18ua1llPWNsYXNzIGV4dGVuZHMgXy5se2NvbnN0cnVjdG9yKGEpe3N1cGVyKGEpfXFKKCl7cmV0dXJuIF8udCh0aGlzLDcpfX07Xy5rWWUucHJvdG90eXBlLlhhPSJId01LRWQiO18ubVllPWZ1bmN0aW9uKGEsYil7cmV0dXJuIF8uU2IoYSxfLmtZZSw1LGIpfTtfLmhNPWNsYXNzIGV4dGVuZHMgXy5se2NvbnN0cnVjdG9yKGEpe3N1cGVyKGEpfW9hKCl7cmV0dXJuIF8ucSh0aGlzLF8udUYsMSl9fTtfLmhNLnByb3RvdHlwZS5YYT0iQzM3UFYiOwp9Y2F0Y2goZSl7Xy5fRHVtcEV4Y2VwdGlvbihlKX0KdHJ5ewpfLmpZZT1jbGFzcyBleHRlbmRzIF8ubHtjb25zdHJ1Y3RvcihhKXtzdXBlcihhKX1nZXRVbmlxdWVJZCgpe3JldHVybiBfLmdrKHRoaXMsOCl9fTtfLmpZZS5wcm90b3R5cGUuWGE9InhjRm9iZCI7Cn1jYXRjaChlKXtfLl9EdW1wRXhjZXB0aW9uKGUpfQp0cnl7Cl8uZVllPWZ1bmN0aW9uKGEsYil7cmV0dXJuIF8udWgoYSwxLF8udUYsYil9O18uZlllPWZ1bmN0aW9uKGEsYil7cmV0dXJuIF8uU2IoYSxfLnNGLDEsYil9Owp9Y2F0Y2goZSl7Xy5fRHVtcEV4Y2VwdGlvbihlKX0KdHJ5ewoobmV3IF8uQ2koXy51RikpLk9hPW5ldyBfLkNpKF8uc0YpO25ldyBfLkNpKF8udkYpO18uWm8uaU9ObHlmPV8uWW87Xy5OcShfLnVGLF8uc0YsZnVuY3Rpb24oYSl7YT1hLkpqKCk7cmV0dXJuIGEhPW51bGw/W2FdOltdfSk7Xy5OcShfLnVGLF8udkYsZnVuY3Rpb24oYSl7YT1fLndGKGEpO3JldHVybiBhIT1udWxsP1thXTpbXX0pO18uWm8ucElUSmg9Xy5ZbztfLlpvLkhJZTIwYj1fLllvO18uTnEoXy52RixfLnVGLGZ1bmN0aW9uKGEpe3JldHVybiBhLmNQKCl9KTsKfWNhdGNoKGUpe18uX0R1bXBFeGNlcHRpb24oZSl9CnRyeXsKdmFyIHBZZSxyWWU7cFllPWZ1bmN0aW9uKGEpe3ZhciBiO2E9KGE9PW51bGw/dm9pZCAwOihiPV8ucShhLF8ub1llLDYpKT09bnVsbD92b2lkIDA6Yi5xSigpKXx8IiI7cmV0dXJuIGE9PT0iIj9uZXcgXy5oTTpfLm1ZZShuZXcgXy5oTSxfLmxZZShhKSl9O3JZZT1mdW5jdGlvbihhLGIsYyl7dmFyIGQ9cVllLmdldChhLmdldFZpZXdlclR5cGUoKSk7cmV0dXJuIGQ/ZChhLGIsYyk6Y307Xy5vWWU9Y2xhc3MgZXh0ZW5kcyBfLmx7Y29uc3RydWN0b3IoYSl7c3VwZXIoYSw4KX1xSigpe3JldHVybiBfLnQodGhpcyw3KX1nZXRRdWVyeSgpe3JldHVybiBfLnQodGhpcywyKX1zZXRRdWVyeShhKXtyZXR1cm4gXy5maCh0aGlzLDIsYSl9fTtfLnNZZT1jbGFzcyBleHRlbmRzIF8ubHtjb25zdHJ1Y3RvcihhKXtzdXBlcihhKX1nZXRWaWV3ZXJUeXBlKCl7cmV0dXJuIF8uT2oodGhpcywxKX1GcyhhKXtyZXR1cm4gXy5aaCh0aGlzLDEsYSl9fTtfLnNZZS5wcm90b3R5cGUuWGE9IllYVTdHIjtuZXcgXy5DaShfLnNZZSk7Xy5aby5ZWFU3Rz1fLllvO18uTnEoXy5zWWUsXy5qWWUsZnVuY3Rpb24oYSl7YT1fLnEoYSxfLmpZZSwzKTtyZXR1cm4gYSE9bnVsbD9bYV06W119KTtfLnRZZT1jbGFzcyBleHRlbmRzIF8ubHtjb25zdHJ1Y3RvcihhKXtzdXBlcihhKX19O18udFllLnByb3RvdHlwZS5YYT0iejg5WVJlIjtuZXcgXy5DaShfLnRZZSk7Xy5aby56ODlZUmU9Xy5ZbztfLk5xKF8udFllLF8udUYsZnVuY3Rpb24oYSl7YT1fLnEoYSxfLnVGLDEpO3JldHVybiBhIT1udWxsP1thXTpbXX0pO3ZhciBxWWU9bmV3IE1hcDtfLlZ1KHtyZXF1ZXN0VHlwZTpfLnNZZSxyZXNwb25zZVR5cGU6Xy50WWV9LHBZZSxyWWUsIlM3UUpxYyIpOwp9Y2F0Y2goZSl7Xy5fRHVtcEV4Y2VwdGlvbihlKX0KdHJ5ewpuZXcgXy5DaShfLnh1KTtfLlpvLmUyekVCYz1fLllvO18uTnEoXy54dSxfLmpZZSxmdW5jdGlvbihhKXthPV8ucShhLF8ualllLDIpO3JldHVybiBhIT1udWxsP1thXTpbXX0pO18uTnEoXy54dSxfLmpZZSxmdW5jdGlvbihhKXthPV8ucShhLF8ualllLDMpO3JldHVybiBhIT1udWxsP1thXTpbXX0pOwp9Y2F0Y2goZSl7Xy5fRHVtcEV4Y2VwdGlvbihlKX0KdHJ5ewp2YXIgblllPWNsYXNzIGV4dGVuZHMgXy5se2NvbnN0cnVjdG9yKGEpe3N1cGVyKGEpfXdhKCl7cmV0dXJuIF8ucSh0aGlzLF8ueHUsNSl9elcoKXtyZXR1cm4gXy5raih0aGlzLF8ueHUsNSl9fTtuWWUucHJvdG90eXBlLlhhPSJCZ3NOUWMiO25ldyBfLkNpKG5ZZSk7Xy5aby5CZ3NOUWM9Xy5ZbztfLk5xKG5ZZSxfLnh1LGZ1bmN0aW9uKGEpe2E9YS53YSgpO3JldHVybiBhIT1udWxsP1thXTpbXX0pO25ldyBfLkNpKF8ua1llKTtfLlpvLkh3TUtFZD1mdW5jdGlvbihhKXtyZXR1cm4gXy4kbyhfLmFwKF8uTGooYSw3KSkpfTtuZXcgXy5DaShfLmhNKTtfLlpvLkMzN1BWPWZ1bmN0aW9uKGEpe3JldHVybiBfLiRvKF8uYXAoXy5xKGEsXy5rWWUsNSkpKX07Xy5OcShfLmhNLF8udUYsZnVuY3Rpb24oYSl7YT1hLm9hKCk7cmV0dXJuIGEhPW51bGw/W2FdOltdfSk7Xy5OcShfLmhNLF8ua1llLGZ1bmN0aW9uKGEpe2E9Xy5xKGEsXy5rWWUsNSk7cmV0dXJuIGEhPW51bGw/W2FdOltdfSk7bmV3IF8uVnQoIlJRQk1nYiIsXy5oTSxuWWUsW18ubWksITAsXy5saSwiL1ZpZXdlclNlcnZpY2UuRmV0Y2hDb250ZW50cyJdKTsKfWNhdGNoKGUpe18uX0R1bXBFeGNlcHRpb24oZSl9CnRyeXsKXy5oWWU9Y2xhc3MgZXh0ZW5kcyBfLmx7Y29uc3RydWN0b3IoYSl7c3VwZXIoYSwzKX1nZXRWaWV3ZXJUeXBlKCl7cmV0dXJuIF8uT2oodGhpcywxKX1GcyhhKXtyZXR1cm4gXy5aaCh0aGlzLDEsYSl9fTtfLmlZZT1uZXcgXy5WdCgiY2lub0JkIixjbGFzcyBleHRlbmRzIF8ubHtjb25zdHJ1Y3RvcihhKXtzdXBlcihhKX19LF8uaFllLFtfLm1pLCEwLF8ubGksIi9WaWV3ZXJTZXJ2aWNlLldyaXRlRm9vdHByaW50Il0pOwp9Y2F0Y2goZSl7Xy5fRHVtcEV4Y2VwdGlvbihlKX0KdHJ5ewpfLmdZZT1fLmtjKCJUMUhPeGMiLFtfLlRvXSk7Cn1jYXRjaChlKXtfLl9EdW1wRXhjZXB0aW9uKGUpfQp0cnl7Cl8uZFllPWNsYXNzIGV4dGVuZHMgXy5se2NvbnN0cnVjdG9yKGEpe3N1cGVyKGEsMyl9fTsKfWNhdGNoKGUpe18uX0R1bXBFeGNlcHRpb24oZSl9CnRyeXsKdmFyIFRYZTtfLlNYZT1bNCw1XTtUWGU9WzAsXy5TWGUsMSxfLlpuYyxfLkMsXy5HbCwtMV07Xy5VWGU9ZnVuY3Rpb24oYSl7cmV0dXJuIF8uZmgoYSwxNixnb29nbGUua0VJKX07Xy5WWGU9ZnVuY3Rpb24oYSxiKXtyZXR1cm4gXy5maChhLDEsYil9O18uV1hlPWZ1bmN0aW9uKGEsYil7cmV0dXJuIF8uZmgoYSwyLGIpfTtfLlhYZT1mdW5jdGlvbihhLGIpe3JldHVybiBfLmZoKGEsNCxiKX07Xy5ZWGU9ZnVuY3Rpb24oYSxiKXtyZXR1cm4gXy5maChhLDMsYil9O18uWlhlPWZ1bmN0aW9uKGEsYil7cmV0dXJuIF8ubGsoYSwxMSxiKX07Xy4kWGU9ZnVuY3Rpb24oYSxiKXtfLmZoKGEsMTIsYil9O18uYVllPWZ1bmN0aW9uKGEsYil7cmV0dXJuIF8uZmgoYSw2LGIpfTsKXy5iWWU9Y2xhc3MgZXh0ZW5kcyBfLmx7Y29uc3RydWN0b3IoYSl7c3VwZXIoYSl9V0EoKXtyZXR1cm4gXy50KHRoaXMsNCl9djUoKXtyZXR1cm4gXy54ZSh0aGlzLDExKX1nZXRBdHRyaWJ1dGUoKXtyZXR1cm4gXy50KHRoaXMsNSl9c2V0QXR0cmlidXRlKGEpe3JldHVybiBfLmZoKHRoaXMsNSxhKX1oYXNBdHRyaWJ1dGUoKXtyZXR1cm4gXy5waCh0aGlzLDUpfWdldERlc2NyaXB0aW9uKCl7cmV0dXJuIF8udCh0aGlzLDYpfVBnKCl7cmV0dXJuIF8uTGoodGhpcyw2KX19O18uY1llPVswLF8uRSwtNixfLkQsMixfLkMsXy5FLC01LF8udGwsXy5FbCwxLF8uQywxLF8uRyxfLkUsLTEsXy5FbCwtMSxfLkMsXy5FLC0yLF8uWm5jLF8uRyxbMCxfLkUsLTEsWzAsXy5DLC0yXSxfLkUsLTEsXy5ELFswLF8uRSwtMSxbMCxfLkcsXy5FLC0xOCxfLkhsLFswLDIxLF8uRSwtMV0sMixfLkcsLTNdXSxfLkUsLTEsXy5GLFswLF8uRSwtMV1dLF8uSmwsWzAsXy5DLF8uRSwtMSxfLkQsXy5FXSxfLkpsLF8uRixUWGUsXy5KbCxfLkQsWzAsXy5FLFswLFswLF8uS2wsXy5KbCwtMV0sXy5KbF0sXy5ELC0xXSxfLkQsLTIsXy5HLF8uRSxfLkYsVFhlXTtfLlNuWzE5MTQ1MDEwOV09Xy5jWWU7Cn1jYXRjaChlKXtfLl9EdW1wRXhjZXB0aW9uKGUpfQp0cnl7Cl8ubUJjPWZ1bmN0aW9uKGEpe3JldHVybiBiPT57dmFyIGM9bmV3IF8uZkRhO18uWmZhKGIuUGssYyxfLldmYShhKSk7cmV0dXJuIF8ueGJhKF8uZURhKGMpKX19O18uckI9ZnVuY3Rpb24oYSxiKXtpZighTnVtYmVyLmlzRmluaXRlKGEpKXJldHVybiBTdHJpbmcoYSk7YT1TdHJpbmcoYSk7dmFyIGM9YS5pbmRleE9mKCIuIik7Yz09PS0xJiYoYz1hLmxlbmd0aCk7dmFyIGQ9YVswXT09PSItIj8iLSI6IiI7ZCYmKGE9YS5zdWJzdHJpbmcoMSkpO3JldHVybiBkKyIwIi5yZXBlYXQoTWF0aC5tYXgoMCxiLWMpKSthfTsKXy5uQmM9e1RnYjpbIkJDIiwiQUQiXSxtSWI6WyJCZWZvcmUgQ2hyaXN0IiwiQW5ubyBEb21pbmkiXSx3SmI6IkpGTUFNSkpBU09ORCIuc3BsaXQoIiIpLEtKYjoiSkZNQU1KSkFTT05EIi5zcGxpdCgiIiksaE9hOiJKYW51YXJ5IEZlYnJ1YXJ5IE1hcmNoIEFwcmlsIE1heSBKdW5lIEp1bHkgQXVndXN0IFNlcHRlbWJlciBPY3RvYmVyIE5vdmVtYmVyIERlY2VtYmVyIi5zcGxpdCgiICIpLGt0YToiSmFudWFyeSBGZWJydWFyeSBNYXJjaCBBcHJpbCBNYXkgSnVuZSBKdWx5IEF1Z3VzdCBTZXB0ZW1iZXIgT2N0b2JlciBOb3ZlbWJlciBEZWNlbWJlciIuc3BsaXQoIiAiKSxwT2E6IkphbiBGZWIgTWFyIEFwciBNYXkgSnVuIEp1bCBBdWcgU2VwIE9jdCBOb3YgRGVjIi5zcGxpdCgiICIpLGxpYjoiSmFuIEZlYiBNYXIgQXByIE1heSBKdW4gSnVsIEF1ZyBTZXAgT2N0IE5vdiBEZWMiLnNwbGl0KCIgIiksc09hOiJTdW5kYXkgTW9uZGF5IFR1ZXNkYXkgV2VkbmVzZGF5IFRodXJzZGF5IEZyaWRheSBTYXR1cmRheSIuc3BsaXQoIiAiKSwKbWliOiJTdW5kYXkgTW9uZGF5IFR1ZXNkYXkgV2VkbmVzZGF5IFRodXJzZGF5IEZyaWRheSBTYXR1cmRheSIuc3BsaXQoIiAiKSxxT2E6IlN1biBNb24gVHVlIFdlZCBUaHUgRnJpIFNhdCIuc3BsaXQoIiAiKSxWMmE6IlN1biBNb24gVHVlIFdlZCBUaHUgRnJpIFNhdCIuc3BsaXQoIiAiKSx4SmI6IlNNVFdURlMiLnNwbGl0KCIiKSxyT2E6IlNNVFdURlMiLnNwbGl0KCIiKSxpaWI6WyJRMSIsIlEyIiwiUTMiLCJRNCJdLGRpYjpbIjFzdCBxdWFydGVyIiwiMm5kIHF1YXJ0ZXIiLCIzcmQgcXVhcnRlciIsIjR0aCBxdWFydGVyIl0sbTJhOlsiQU0iLCJQTSJdLFRsYTpbIkVFRUUsIE1NTU0gZCwgeSIsIk1NTU0gZCwgeSIsIk1NTSBkLCB5IiwiTS9kL3l5Il0sakRhOlsiaDptbTpzc1x1MjAyZmEgenp6eiIsImg6bW06c3NcdTIwMmZhIHoiLCJoOm1tOnNzXHUyMDJmYSIsImg6bW1cdTIwMmZhIl0sT2diOlsiezF9ICdhdCcgezB9IiwiezF9ICdhdCcgezB9IiwiezF9LCB7MH0iLCJ7MX0sIHswfSJdLApZc2E6NixDaWI6WzUsNl0sSk5hOjV9O18uc0I9Xy5uQmM7Cl8uc0I9e1RnYjpbImYuS3IuIiwiZS5Lci4iXSxtSWI6WyJmXHUwMGY4ciBLcmlzdHVzIiwiZXR0ZXIgS3Jpc3R1cyJdLHdKYjoiSkZNQU1KSkFTT05EIi5zcGxpdCgiIiksS0piOiJKRk1BTUpKQVNPTkQiLnNwbGl0KCIiKSxoT2E6ImphbnVhciBmZWJydWFyIG1hcnMgYXByaWwgbWFpIGp1bmkganVsaSBhdWd1c3Qgc2VwdGVtYmVyIG9rdG9iZXIgbm92ZW1iZXIgZGVzZW1iZXIiLnNwbGl0KCIgIiksa3RhOiJqYW51YXIgZmVicnVhciBtYXJzIGFwcmlsIG1haSBqdW5pIGp1bGkgYXVndXN0IHNlcHRlbWJlciBva3RvYmVyIG5vdmVtYmVyIGRlc2VtYmVyIi5zcGxpdCgiICIpLHBPYToiamFuLiBmZWIuIG1hcnMgYXByLiBtYWkganVuaSBqdWxpIGF1Zy4gc2VwLiBva3QuIG5vdi4gZGVzLiIuc3BsaXQoIiAiKSxsaWI6ImphbiBmZWIgbWFyIGFwciBtYWkganVuIGp1bCBhdWcgc2VwIG9rdCBub3YgZGVzIi5zcGxpdCgiICIpLHNPYToic1x1MDBmOG5kYWcgbWFuZGFnIHRpcnNkYWcgb25zZGFnIHRvcnNkYWcgZnJlZGFnIGxcdTAwZjhyZGFnIi5zcGxpdCgiICIpLAptaWI6InNcdTAwZjhuZGFnIG1hbmRhZyB0aXJzZGFnIG9uc2RhZyB0b3JzZGFnIGZyZWRhZyBsXHUwMGY4cmRhZyIuc3BsaXQoIiAiKSxxT2E6InNcdTAwZjhuLiBtYW4uIHRpci4gb25zLiB0b3IuIGZyZS4gbFx1MDBmOHIuIi5zcGxpdCgiICIpLFYyYToic1x1MDBmOG4uIG1hbi4gdGlyLiBvbnMuIHRvci4gZnJlLiBsXHUwMGY4ci4iLnNwbGl0KCIgIikseEpiOiJTTVRPVEZMIi5zcGxpdCgiIiksck9hOiJTTVRPVEZMIi5zcGxpdCgiIiksaWliOlsiSzEiLCJLMiIsIkszIiwiSzQiXSxkaWI6WyIxLiBrdmFydGFsIiwiMi4ga3ZhcnRhbCIsIjMuIGt2YXJ0YWwiLCI0LiBrdmFydGFsIl0sbTJhOlsiYS5tLiIsInAubS4iXSxUbGE6WyJFRUVFIGQuIE1NTU0geSIsImQuIE1NTU0geSIsImQuIE1NTSB5IiwiZGQuTU0ueSJdLGpEYTpbIkhIOm1tOnNzIHp6enoiLCJISDptbTpzcyB6IiwiSEg6bW06c3MiLCJISDptbSJdLE9nYjpbInsxfSAna2wnLiB7MH0iLCJ7MX0gJ2tsJy4gezB9IiwKInsxfSwgezB9IiwiezF9LCB7MH0iXSxZc2E6MCxDaWI6WzUsNl0sSk5hOjN9O3ZhciBvQmMscEJjLHFCYyx0QmMsdkJjO29CYz1SZWdFeHAoIl4oKD86Wy0rXVxcZCopP1xcZHs0fSkoPzooPzotPyhcXGR7Mn0pKD86LT8oXFxkezJ9KSk/KXwoPzotPyhcXGR7M30pKXwoPzotP1coXFxkezJ9KSg/Oi0/KFsxLTddKSk/KSk/JCIpO3BCYz0vXihcZHsyfSkoPzo6PyhcZHsyfSkoPzo6PyhcZHsyfSkoXC5cZCspPyk/KT8kLztxQmM9L1p8KD86KFstK10pKFxkezJ9KSg/Ojo/KFxkezJ9KSk/KSQvO18uckJjPWZ1bmN0aW9uKGEsYil7c3dpdGNoKGIpe2Nhc2UgMTpyZXR1cm4gYSU0IT0wfHxhJTEwMD09MCYmYSU0MDAhPTA/Mjg6Mjk7Y2FzZSA1OmNhc2UgODpjYXNlIDEwOmNhc2UgMzpyZXR1cm4gMzB9cmV0dXJuIDMxfTsKXy5zQmM9ZnVuY3Rpb24oYSxiKXtiPWJ8fG5ldyBEYXRlKF8ua2UoKSk7dmFyIGM7aWYoYz1hLmdldERhdGUoKT09Yi5nZXREYXRlKCkpe2M9Ynx8bmV3IERhdGUoXy5rZSgpKTtpZihiPWEuZ2V0TW9udGgoKT09Yy5nZXRNb250aCgpKWI9Y3x8bmV3IERhdGUoXy5rZSgpKSxiPWEuZ2V0RnVsbFllYXIoKT09Yi5nZXRGdWxsWWVhcigpO2M9Yn1yZXR1cm4gY307Cl8udUJjPWZ1bmN0aW9uKGEsYil7Yj1fLm1hKGIpO3ZhciBjPWIuaW5kZXhPZigiVCIpPT0tMT8iICI6IlQiO2I9Yi5zcGxpdChjKTtpZigoYz10QmMoYSxiWzBdKSkmJiEoYz1iLmxlbmd0aDwyKSl7e2M9YlsxXTtiPWMubWF0Y2gocUJjKTtsZXQgZTtiJiYoYz1jLnN1YnN0cmluZygwLGMubGVuZ3RoLWJbMF0ubGVuZ3RoKSxiWzBdPT09IloiP2U9MDooZT1OdW1iZXIoYlsyXSkqNjArTnVtYmVyKGJbM10pLGUqPWJbMV09PSItIj8xOi0xKSk7dmFyIGQ9Yy5tYXRjaChwQmMpO2lmKGQpe2lmKGIpe2I9YS5nZXRZZWFyKCk7Yz1hLmdldE1vbnRoKCk7bGV0IGY9YS5nZXREYXRlKCksZz1OdW1iZXIoZFsxXSksaD1OdW1iZXIoZFsyXSl8fDAsaz1OdW1iZXIoZFszXSl8fDAsbT1kWzRdP051bWJlcihkWzRdKSoxRTM6MDsoZD1iPj0wJiZiPDEwMCkmJihiKz00MDApO2I9RGF0ZS5VVEMoYixjLGYsZyxoLGssbSk7ZCYmKGItPTEyNjIyNzgwOEU1KTthLnNldFRpbWUoYitlKjZFNCl9ZWxzZSBhLnNldEhvdXJzKE51bWJlcihkWzFdKSksCmEuc2V0TWludXRlcyhOdW1iZXIoZFsyXSl8fDApLGEuc2V0U2Vjb25kcyhOdW1iZXIoZFszXSl8fDApLGEuc2V0TWlsbGlzZWNvbmRzKGRbNF0/TnVtYmVyKGRbNF0pKjFFMzowKTtjPSEwfWVsc2UgYz0hMX19cmV0dXJuIGN9Owp0QmM9ZnVuY3Rpb24oYSxiKXt2YXIgYz1iLm1hdGNoKG9CYyk7aWYoIWMpcmV0dXJuITE7dmFyIGQ9TnVtYmVyKGNbMl0pLGU9TnVtYmVyKGNbM10pLGY9TnVtYmVyKGNbNF0pO2I9TnVtYmVyKGNbNV0pO3ZhciBnPU51bWJlcihjWzZdKXx8MTthLnNldEZ1bGxZZWFyKE51bWJlcihjWzFdKSk7Zj8oYS5zZXREYXRlKDEpLGEuc2V0TW9udGgoMCksYS5hZGQobmV3IF8udEIoImQiLGYtMSkpKTpiPyhhLnNldE1vbnRoKDApLGEuc2V0RGF0ZSgxKSxjPWEuZ2V0RGF5KCl8fDcsYS5hZGQobmV3IF8udEIoImQiLChjPD00PzEtYzo4LWMpKyhOdW1iZXIoZykrNyooTnVtYmVyKGIpLTEpKS0xKSkpOihkJiYoYS5zZXREYXRlKDEpLGEuc2V0TW9udGgoZC0xKSksZSYmYS5zZXREYXRlKGUpKTtyZXR1cm4hMH07Cl8udEI9ZnVuY3Rpb24oYSxiLGMsZCxlLGYpe3R5cGVvZiBhPT09InN0cmluZyI/KHRoaXMub2E9YT09InkiP2I6MCx0aGlzLkF4PWE9PSJtIj9iOjAsdGhpcy5xdT1hPT0iZCI/YjowLHRoaXMuaG91cnM9YT09ImgiP2I6MCx0aGlzLm1pbnV0ZXM9YT09Im4iP2I6MCx0aGlzLmthPWE9PSJzIj9iOjApOih0aGlzLm9hPWF8fDAsdGhpcy5BeD1ifHwwLHRoaXMucXU9Y3x8MCx0aGlzLmhvdXJzPWR8fDAsdGhpcy5taW51dGVzPWV8fDAsdGhpcy5rYT1mfHwwKX07Xy5hYT1fLnRCLnByb3RvdHlwZTsKXy5hYS5Haj1mdW5jdGlvbihhKXt2YXIgYj1NYXRoLm1pbih0aGlzLm9hLHRoaXMuQXgsdGhpcy5xdSx0aGlzLmhvdXJzLHRoaXMubWludXRlcyx0aGlzLmthKSxjPU1hdGgubWF4KHRoaXMub2EsdGhpcy5BeCx0aGlzLnF1LHRoaXMuaG91cnMsdGhpcy5taW51dGVzLHRoaXMua2EpO2lmKGI8MCYmYz4wKXJldHVybiBudWxsO2lmKCFhJiZiPT0wJiZjPT0wKXJldHVybiJQVDBTIjtjPVtdO2I8MCYmYy5wdXNoKCItIik7Yy5wdXNoKCJQIik7KHRoaXMub2F8fGEpJiZjLnB1c2goTWF0aC5hYnModGhpcy5vYSkrIlkiKTsodGhpcy5BeHx8YSkmJmMucHVzaChNYXRoLmFicyh0aGlzLkF4KSsiTSIpOyh0aGlzLnF1fHxhKSYmYy5wdXNoKE1hdGguYWJzKHRoaXMucXUpKyJEIik7aWYodGhpcy5ob3Vyc3x8dGhpcy5taW51dGVzfHx0aGlzLmthfHxhKWMucHVzaCgiVCIpLCh0aGlzLmhvdXJzfHxhKSYmYy5wdXNoKE1hdGguYWJzKHRoaXMuaG91cnMpKyJIIiksKHRoaXMubWludXRlc3x8YSkmJgpjLnB1c2goTWF0aC5hYnModGhpcy5taW51dGVzKSsiTSIpLCh0aGlzLmthfHxhKSYmYy5wdXNoKE1hdGguYWJzKHRoaXMua2EpKyJTIik7cmV0dXJuIGMuam9pbigiIil9O18uYWEuZXF1YWxzPWZ1bmN0aW9uKGEpe3JldHVybiBhLm9hPT10aGlzLm9hJiZhLkF4PT10aGlzLkF4JiZhLnF1PT10aGlzLnF1JiZhLmhvdXJzPT10aGlzLmhvdXJzJiZhLm1pbnV0ZXM9PXRoaXMubWludXRlcyYmYS5rYT09dGhpcy5rYX07Xy5hYS5jbG9uZT1mdW5jdGlvbigpe3JldHVybiBuZXcgXy50Qih0aGlzLm9hLHRoaXMuQXgsdGhpcy5xdSx0aGlzLmhvdXJzLHRoaXMubWludXRlcyx0aGlzLmthKX07Xy5hYS5HeGE9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5vYT09MCYmdGhpcy5BeD09MCYmdGhpcy5xdT09MCYmdGhpcy5ob3Vycz09MCYmdGhpcy5taW51dGVzPT0wJiZ0aGlzLmthPT0wfTsKXy5hYS5nZXRJbnZlcnNlPWZ1bmN0aW9uKCl7cmV0dXJuIG5ldyBfLnRCKHRoaXMub2EqLTEsdGhpcy5BeCotMSx0aGlzLnF1Ki0xLHRoaXMuaG91cnMqLTEsdGhpcy5taW51dGVzKi0xLHRoaXMua2EqLTEpfTtfLmFhLmFkZD1mdW5jdGlvbihhKXt0aGlzLm9hKz1hLm9hO3RoaXMuQXgrPWEuQXg7dGhpcy5xdSs9YS5xdTt0aGlzLmhvdXJzKz1hLmhvdXJzO3RoaXMubWludXRlcys9YS5taW51dGVzO3RoaXMua2ErPWEua2F9OwpfLnVCPWZ1bmN0aW9uKGEsYixjKXt0eXBlb2YgYT09PSJudW1iZXIiPyh0aGlzLmRhdGU9dkJjKGEsYnx8MCxjfHwxKSx3QmModGhpcyxjfHwxKSk6Xy5wZyhhKT8odGhpcy5kYXRlPXZCYyhhLmdldEZ1bGxZZWFyKCksYS5nZXRNb250aCgpLGEuZ2V0RGF0ZSgpKSx3QmModGhpcyxhLmdldERhdGUoKSkpOih0aGlzLmRhdGU9bmV3IERhdGUoXy5rZSgpKSxhPXRoaXMuZGF0ZS5nZXREYXRlKCksdGhpcy5kYXRlLnNldEhvdXJzKDApLHRoaXMuZGF0ZS5zZXRNaW51dGVzKDApLHRoaXMuZGF0ZS5zZXRTZWNvbmRzKDApLHRoaXMuZGF0ZS5zZXRNaWxsaXNlY29uZHMoMCksd0JjKHRoaXMsYSkpfTt2QmM9ZnVuY3Rpb24oYSxiLGMpe2I9bmV3IERhdGUoYSxiLGMpO2E+PTAmJmE8MTAwJiZiLnNldEZ1bGxZZWFyKGIuZ2V0RnVsbFllYXIoKS0xOTAwKTtyZXR1cm4gYn07Xy5hYT1fLnVCLnByb3RvdHlwZTtfLmFhLkRjYT1fLnNCLllzYTtfLmFhLkd2YT1fLnNCLkpOYTsKXy5hYS5jbG9uZT1mdW5jdGlvbigpe3ZhciBhPW5ldyBfLnVCKHRoaXMuZGF0ZSk7YS5EY2E9dGhpcy5EY2E7YS5HdmE9dGhpcy5HdmE7cmV0dXJuIGF9O18uYWEuZ2V0RnVsbFllYXI9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5kYXRlLmdldEZ1bGxZZWFyKCl9O18uYWEuZ2V0WWVhcj1mdW5jdGlvbigpe3JldHVybiB0aGlzLmdldEZ1bGxZZWFyKCl9O18uYWEuZ2V0TW9udGg9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5kYXRlLmdldE1vbnRoKCl9O18uYWEuZ2V0RGF0ZT1mdW5jdGlvbigpe3JldHVybiB0aGlzLmRhdGUuZ2V0RGF0ZSgpfTtfLmFhLmdldFRpbWU9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5kYXRlLmdldFRpbWUoKX07Xy5hYS5nZXREYXk9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5kYXRlLmdldERheSgpfTtfLmFhLmdldFVUQ0Z1bGxZZWFyPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZGF0ZS5nZXRVVENGdWxsWWVhcigpfTtfLmFhLmdldFVUQ01vbnRoPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZGF0ZS5nZXRVVENNb250aCgpfTsKXy5hYS5nZXRVVENEYXRlPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZGF0ZS5nZXRVVENEYXRlKCl9O18uYWEuZ2V0VVRDRGF5PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZGF0ZS5nZXREYXkoKX07Xy5hYS5nZXRVVENIb3Vycz1mdW5jdGlvbigpe3JldHVybiB0aGlzLmRhdGUuZ2V0VVRDSG91cnMoKX07Xy5hYS5nZXRVVENNaW51dGVzPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZGF0ZS5nZXRVVENNaW51dGVzKCl9O18uYWEuZ2V0VGltZXpvbmVPZmZzZXQ9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5kYXRlLmdldFRpbWV6b25lT2Zmc2V0KCl9O18uYWEuc2V0PWZ1bmN0aW9uKGEpe3RoaXMuZGF0ZT1uZXcgRGF0ZShhLmdldEZ1bGxZZWFyKCksYS5nZXRNb250aCgpLGEuZ2V0RGF0ZSgpKX07Xy5hYS5zZXRGdWxsWWVhcj1mdW5jdGlvbihhKXt0aGlzLmRhdGUuc2V0RnVsbFllYXIoYSl9O18uYWEuc2V0WWVhcj1mdW5jdGlvbihhKXt0aGlzLnNldEZ1bGxZZWFyKGEpfTsKXy5hYS5zZXRNb250aD1mdW5jdGlvbihhKXt0aGlzLmRhdGUuc2V0TW9udGgoYSl9O18uYWEuc2V0RGF0ZT1mdW5jdGlvbihhKXt0aGlzLmRhdGUuc2V0RGF0ZShhKX07Xy5hYS5zZXRUaW1lPWZ1bmN0aW9uKGEpe3RoaXMuZGF0ZS5zZXRUaW1lKGEpfTtfLmFhLnNldFVUQ0Z1bGxZZWFyPWZ1bmN0aW9uKGEpe3RoaXMuZGF0ZS5zZXRVVENGdWxsWWVhcihhKX07Xy5hYS5zZXRVVENNb250aD1mdW5jdGlvbihhKXt0aGlzLmRhdGUuc2V0VVRDTW9udGgoYSl9O18uYWEuc2V0VVRDRGF0ZT1mdW5jdGlvbihhKXt0aGlzLmRhdGUuc2V0VVRDRGF0ZShhKX07Cl8uYWEuYWRkPWZ1bmN0aW9uKGEpe2lmKGEub2F8fGEuQXgpe3ZhciBiPXRoaXMuZ2V0TW9udGgoKSthLkF4K2Eub2EqMTIsYz10aGlzLmdldFllYXIoKStNYXRoLmZsb29yKGIvMTIpO2IlPTEyO2I8MCYmKGIrPTEyKTtsZXQgZD1NYXRoLm1pbihfLnJCYyhjLGIpLHRoaXMuZ2V0RGF0ZSgpKTt0aGlzLnNldERhdGUoMSk7dGhpcy5zZXRGdWxsWWVhcihjKTt0aGlzLnNldE1vbnRoKGIpO3RoaXMuc2V0RGF0ZShkKX1hLnF1JiYoYz10aGlzLmdldFllYXIoKSxiPWM+PTAmJmM8PTk5Py0xOTAwOjAsYz1uZXcgRGF0ZShjLHRoaXMuZ2V0TW9udGgoKSx0aGlzLmdldERhdGUoKSwxMiksYT1uZXcgRGF0ZShjLmdldFRpbWUoKSthLnF1Kjg2NEU1KSx0aGlzLnNldERhdGUoMSksdGhpcy5zZXRGdWxsWWVhcihhLmdldEZ1bGxZZWFyKCkrYiksdGhpcy5zZXRNb250aChhLmdldE1vbnRoKCkpLHRoaXMuc2V0RGF0ZShhLmdldERhdGUoKSksd0JjKHRoaXMsYS5nZXREYXRlKCkpKX07Cl8uYWEuR2o9ZnVuY3Rpb24oYSl7dmFyIGI9dGhpcy5nZXRGdWxsWWVhcigpLGM9YjwwPyItIjpiPj0xRTQ/IisiOiIiO3JldHVybltjK18uckIoTWF0aC5hYnMoYiksYz82OjQpLF8uckIodGhpcy5nZXRNb250aCgpKzEsMiksXy5yQih0aGlzLmdldERhdGUoKSwyKV0uam9pbihhPyItIjoiIil9O18uYWEuZXF1YWxzPWZ1bmN0aW9uKGEpe3JldHVybiEoIWF8fHRoaXMuZ2V0WWVhcigpIT1hLmdldFllYXIoKXx8dGhpcy5nZXRNb250aCgpIT1hLmdldE1vbnRoKCl8fHRoaXMuZ2V0RGF0ZSgpIT1hLmdldERhdGUoKSl9O18uYWEudG9TdHJpbmc9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5HaigpfTt2YXIgd0JjPWZ1bmN0aW9uKGEsYil7YS5nZXREYXRlKCkhPWImJihiPWEuZ2V0RGF0ZSgpPGI/MTotMSxhLmRhdGUuc2V0VVRDSG91cnMoYS5kYXRlLmdldFVUQ0hvdXJzKCkrYikpfTtfLnVCLnByb3RvdHlwZS52YWx1ZU9mPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZGF0ZS52YWx1ZU9mKCl9OwpfLnZCPWZ1bmN0aW9uKGEsYil7cmV0dXJuIGEuZ2V0VGltZSgpLWIuZ2V0VGltZSgpfTtfLndCPWZ1bmN0aW9uKGEpe3ZhciBiPW5ldyBfLnVCKDJFMyk7cmV0dXJuIHRCYyhiLGEpP2I6bnVsbH07Xy54Qj1mdW5jdGlvbihhLGIsYyxkLGUsZixnKXt0aGlzLmRhdGU9dHlwZW9mIGE9PT0ibnVtYmVyIj9uZXcgRGF0ZShhLGJ8fDAsY3x8MSxkfHwwLGV8fDAsZnx8MCxnfHwwKTpuZXcgRGF0ZShhJiZhLmdldFRpbWU/YS5nZXRUaW1lKCk6Xy5rZSgpKX07Xy5VaShfLnhCLF8udUIpO18uYWE9Xy54Qi5wcm90b3R5cGU7Xy5hYS5nZXRIb3Vycz1mdW5jdGlvbigpe3JldHVybiB0aGlzLmRhdGUuZ2V0SG91cnMoKX07Xy5hYS5nZXRNaW51dGVzPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZGF0ZS5nZXRNaW51dGVzKCl9O18uYWEuZ2V0U2Vjb25kcz1mdW5jdGlvbigpe3JldHVybiB0aGlzLmRhdGUuZ2V0U2Vjb25kcygpfTtfLmFhLmdldE1pbGxpc2Vjb25kcz1mdW5jdGlvbigpe3JldHVybiB0aGlzLmRhdGUuZ2V0TWlsbGlzZWNvbmRzKCl9OwpfLmFhLmdldFVUQ0RheT1mdW5jdGlvbigpe3JldHVybiB0aGlzLmRhdGUuZ2V0VVRDRGF5KCl9O18uYWEuZ2V0VVRDSG91cnM9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5kYXRlLmdldFVUQ0hvdXJzKCl9O18uYWEuZ2V0VVRDTWludXRlcz1mdW5jdGlvbigpe3JldHVybiB0aGlzLmRhdGUuZ2V0VVRDTWludXRlcygpfTtfLmFhLk1mYz1mdW5jdGlvbigpe3JldHVybiB0aGlzLmRhdGUuZ2V0VVRDU2Vjb25kcygpfTtfLmFhLkxmYz1mdW5jdGlvbigpe3JldHVybiB0aGlzLmRhdGUuZ2V0VVRDTWlsbGlzZWNvbmRzKCl9O18uYWEuc2V0SG91cnM9ZnVuY3Rpb24oYSl7dGhpcy5kYXRlLnNldEhvdXJzKGEpfTtfLmFhLnNldE1pbnV0ZXM9ZnVuY3Rpb24oYSl7dGhpcy5kYXRlLnNldE1pbnV0ZXMoYSl9O18uYWEuc2V0U2Vjb25kcz1mdW5jdGlvbihhKXt0aGlzLmRhdGUuc2V0U2Vjb25kcyhhKX07Xy5hYS5zZXRNaWxsaXNlY29uZHM9ZnVuY3Rpb24oYSl7dGhpcy5kYXRlLnNldE1pbGxpc2Vjb25kcyhhKX07Cl8uYWEuTkliPWZ1bmN0aW9uKGEpe3RoaXMuZGF0ZS5zZXRVVENIb3VycyhhKX07Xy5hYS5PSWI9ZnVuY3Rpb24oYSl7dGhpcy5kYXRlLnNldFVUQ01pbnV0ZXMoYSl9O18uYWEuUEliPWZ1bmN0aW9uKGEpe3RoaXMuZGF0ZS5zZXRVVENTZWNvbmRzKGEpfTtfLmFhLk5mYz1mdW5jdGlvbihhKXt0aGlzLmRhdGUuc2V0VVRDTWlsbGlzZWNvbmRzKGEpfTtfLmFhLmFkZD1mdW5jdGlvbihhKXtfLnVCLnByb3RvdHlwZS5hZGQuY2FsbCh0aGlzLGEpO2EuaG91cnMmJnRoaXMuTkliKHRoaXMuZGF0ZS5nZXRVVENIb3VycygpK2EuaG91cnMpO2EubWludXRlcyYmdGhpcy5PSWIodGhpcy5kYXRlLmdldFVUQ01pbnV0ZXMoKSthLm1pbnV0ZXMpO2Eua2EmJnRoaXMuUEliKHRoaXMuZGF0ZS5nZXRVVENTZWNvbmRzKCkrYS5rYSl9OwpfLmFhLkdqPWZ1bmN0aW9uKGEpe3ZhciBiPV8udUIucHJvdG90eXBlLkdqLmNhbGwodGhpcyxhKTtyZXR1cm4gYT9iKyJUIitfLnJCKHRoaXMuZ2V0SG91cnMoKSwyKSsiOiIrXy5yQih0aGlzLmdldE1pbnV0ZXMoKSwyKSsiOiIrXy5yQih0aGlzLmdldFNlY29uZHMoKSwyKTpiKyJUIitfLnJCKHRoaXMuZ2V0SG91cnMoKSwyKStfLnJCKHRoaXMuZ2V0TWludXRlcygpLDIpK18uckIodGhpcy5nZXRTZWNvbmRzKCksMil9O18uYWEuZXF1YWxzPWZ1bmN0aW9uKGEpe3JldHVybiB0aGlzLmdldFRpbWUoKT09YS5nZXRUaW1lKCl9O18uYWEudG9TdHJpbmc9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5HaigpfTtfLmFhLmNsb25lPWZ1bmN0aW9uKCl7dmFyIGE9bmV3IF8ueEIodGhpcy5kYXRlKTthLkRjYT10aGlzLkRjYTthLkd2YT10aGlzLkd2YTtyZXR1cm4gYX07Xy54QmM9ZnVuY3Rpb24oYSl7dmFyIGI9bmV3IF8ueEIoMkUzKTtyZXR1cm4gXy51QmMoYixhKT9iOm51bGx9Owp9Y2F0Y2goZSl7Xy5fRHVtcEV4Y2VwdGlvbihlKX0KdHJ5ewp2YXIgQSRjPWZ1bmN0aW9uKGEpe3ZhciBiPXt9O2E9YS5yZXBsYWNlKC9cci9nLCIiKS5zcGxpdCgiXG4iKTtmb3IobGV0IGM9MDtjPGEubGVuZ3RoO2MrKyl7bGV0IGQ9YVtjXSxlPWQuaW5kZXhPZigiOiIpO2U8MHx8KGJbZC5zdWJzdHJpbmcoMCxlKV09ZC5zdWJzdHJpbmcoZSsyLGQubGVuZ3RoKSl9cmV0dXJuIGJ9LEIkYz1mdW5jdGlvbihhLGIpe2ZvcihsZXQgYyBpbiBhKWlmKGMudG9Mb3dlckNhc2UoKT09PWIudG9Mb3dlckNhc2UoKSlyZXR1cm4gYVtjXX0sQyRjPWZ1bmN0aW9uKGEsYil7Zm9yKGxldCBjIGluIGEpaWYoYy50b0xvd2VyQ2FzZSgpPT09Yi50b0xvd2VyQ2FzZSgpKXtkZWxldGUgYVtjXTticmVha319LEUkYz1mdW5jdGlvbihhKXthPV8uV2MoYSk7Zm9yKGxldCBiPTA7YjxEJGMubGVuZ3RoOysrYil7bGV0IGM9RCRjW2JdLGQ9QiRjKGEsYyk7ZCYmKGFbIlgtR29vZy1VcGxvYWQtSGVhZGVyLSIrY109ZCxDJGMoYSxjKSl9cmV0dXJuIGF9LEYkYz1mdW5jdGlvbihhKXthPQpfLldjKGEpO0MkYyhhLCJYLUdvb2ctVXBsb2FkLVN0YXR1cyIpO3JldHVybiBhfSxHJGM9Y2xhc3N7Y29uc3RydWN0b3IoYSl7dGhpcy5rYT1hfX07dmFyIEgkYz1mdW5jdGlvbigpe18uYmUuY2FsbCh0aGlzKX07Xy5VaShIJGMsXy5iZSk7dmFyIEkkYz1mdW5jdGlvbihhKXtfLlpkLmNhbGwodGhpcyxhKX07Xy5VaShJJGMsXy5aZCk7dmFyIEokYz1mdW5jdGlvbihhKXtfLlpkLmNhbGwodGhpcyxhKX07Xy5VaShKJGMsXy5aZCk7dmFyIEskYz1mdW5jdGlvbihhLGIsYyl7Yz09PXZvaWQgMCYmKGM9YS5zaXplKTtyZXR1cm4gYS5zbGljZT9hLnNsaWNlKGIsYyk6bnVsbH07Xy5hZihmdW5jdGlvbigpe2lmKCFfLmVhLkJsb2IpcmV0dXJuITE7dmFyIGE9bmV3IFVpbnQ4QXJyYXkoMTAwKTt0cnl7dmFyIGI9bmV3IEJsb2IoW2FdKX1jYXRjaChjKXtyZXR1cm4hMX1yZXR1cm4gYi5zaXplIT0xMDA/ITE6ITB9KTt2YXIgTCRjPV8uYWYoZnVuY3Rpb24oKXtpZighXy5lYS5CbG9iKXJldHVybiExO3ZhciBhPW5ldyBVaW50OEFycmF5KDEwMCk7dHJ5e3ZhciBiPW5ldyBCbG9iKFthXSl9Y2F0Y2goYyl7cmV0dXJuITF9cmV0dXJuIEskYyhiLDAsMSk9PT1udWxsPyExOiEwfSk7dmFyIE0kYz1jbGFzcyBleHRlbmRzIF8ucHJ7Y29uc3RydWN0b3IoKXtzdXBlcigpfWRuYSgpe3ZhciBhPV8ucHIucHJvdG90eXBlLmRuYS5jYWxsKHRoaXMpO2EudXBsb2FkJiYoYS51cGxvYWQub25wcm9ncmVzcz0oMCxfLmllKSh0aGlzLmthLHRoaXMpKTtyZXR1cm4gYX1rYShhKXt0aGlzLmRpc3BhdGNoRXZlbnQoYSl9fTt2YXIgTiRjPWZ1bmN0aW9uKGEpe3ZhciBiPTI1MCpNYXRoLnBvdyhhLm9rYixhLmthKTthLndhPj0wJiYoYj1NYXRoLm1pbihiLGEud2EpKTtyZXR1cm4gYn0sTyRjPWZ1bmN0aW9uKGEsYil7dmFyIGM9YS5rYSsxO2lmKGEubUphPjAmJmM+YS5tSmEpcmV0dXJuITE7Yz09MD9iKCk6YS5vYT1fLkluKCgpPT57YS5vYT1udWxsO2IoKX0sTiRjKGEpLGEpO2Eua2E9YztyZXR1cm4hMH0sUCRjPWNsYXNze2NvbnN0cnVjdG9yKCl7dGhpcy5rYT0tMTt0aGlzLm9hPW51bGw7dGhpcy53YT02RTQ7dGhpcy5tSmE9LTE7dGhpcy5va2I9Mn1yZXNldCgpe3RoaXMub2EmJl8uSm4odGhpcy5vYSk7dGhpcy5rYT0tMX19O3ZhciBEJGM9WyJDb250ZW50LUxlbmd0aCIsIkNvbnRlbnQtVHlwZSIsIkNvbnRlbnQtRW5jb2RpbmciLCJUcmFuc2Zlci1FbmNvZGluZyJdO3ZhciBRJGM9ZnVuY3Rpb24oKXtfLmJlLmNhbGwodGhpcyk7dGhpcy5rYT10aGlzLnZkPW51bGw7dGhpcy5mND0hMTt0aGlzLklhPW51bGw7dGhpcy5vYT10aGlzLkFhPTA7dGhpcy5FYT1uZXcgUCRjO3RoaXMuRWEubUphPTY7dGhpcy5FYS53YT02RTQ7dGhpcy5PYT1udWxsO3RoaXMud2E9bmV3IF8uYWUodGhpcyk7Xy5EaSh0aGlzLHRoaXMud2EpO3RoaXMucmI9dGhpcy5CYT1udWxsO3RoaXMuUmE9dm9pZCAwO3RoaXMuQWI9dGhpcy5QYT10aGlzLkdhPW51bGw7dGhpcy5OYT0hMTt0aGlzLlBiPTA7dGhpcy5uYj10aGlzLlphPXRoaXMuU2E9bnVsbDt0aGlzLkthPSExO3RoaXMuRmI9bnVsbH07Xy5VaShRJGMsSCRjKTtfLmFhPVEkYy5wcm90b3R5cGU7Xy5hYS5ydW49ZnVuY3Rpb24oKXtSJGModGhpcyl9O18uYWEuaHFiPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuQWF9O18uYWEuY0RhPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuU2F9O18uYWEuc1o9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5aYX07Cl8uYWEuS3c9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5uYn07Xy5hYS5pSmI9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5PYX07Xy5hYS5jYW5jZWw9ZnVuY3Rpb24oKXtpZih0aGlzLnZkIT0iUmVzcG9uc2UgcmVjZWl2ZWQiJiZ0aGlzLnZkIT0iRXJyb3IiKXt0aGlzLndhLnJlbW92ZUFsbCgpO3RoaXMua2EmJnRoaXMua2EuYWJvcnQoKTt0aGlzLkVhLnJlc2V0KCk7dmFyIGE9dGhpcy52ZD09PSJQYXVzZWQiP3RoaXMuRmI6dGhpcy52ZDtpZihhPT09IlVwbG9hZCJ8fGE9PT0iUXVlcnkiKWE9bmV3IE0kYyxhLnNldFdpdGhDcmVkZW50aWFscyh0aGlzLmY0KSxhLnNlbmQodGhpcy5JYS5rYSwiUE9TVCIsIiIseyJYLUdvb2ctVXBsb2FkLUNvbW1hbmQiOiJjYW5jZWwifSk7dGhpcy52ZD0iQ2FuY2VsIjt0aGlzLkFhPTA7dGhpcy5kaXNwYXRjaEV2ZW50KG5ldyBJJGMoInEiKSl9fTtfLmFhLnBhdXNlPWZ1bmN0aW9uKCl7dGhpcy5LYT0hMH07CnZhciBSJGM9ZnVuY3Rpb24oYSl7dmFyIGI9YS52ZDthLkthPyhhLkthPSExLGEuRmI9YixhLnZkPSJQYXVzZWQiKTpPJGMoYS5FYSwoKT0+e3N3aXRjaChhLnZkKXtjYXNlICJTdGFydCI6YS5rYT1uZXcgTSRjO3ZhciBjPV8uV2MoYS5HYSk7YS5CYS5zaXplIT1udWxsJiYoY1siQ29udGVudC1MZW5ndGgiXT1hLkJhLnNpemUpO2M9RSRjKGMpO2NbIlgtR29vZy1VcGxvYWQtUHJvdG9jb2wiXT0icmVzdW1hYmxlIjtjWyJYLUdvb2ctVXBsb2FkLUNvbW1hbmQiXT0ic3RhcnQiO2Eud2EucmVtb3ZlQWxsKCk7YS53YS5saXN0ZW4oYS5rYSwiY29tcGxldGUiLGEuSmIpO2Eua2Euc2V0V2l0aENyZWRlbnRpYWxzKGEuZjQpO2Eua2Euc2VuZChhLnJiLGEuUmEsYS5QYSxjKTthLmRpc3BhdGNoRXZlbnQobmV3IEokYygicyIpKTticmVhaztjYXNlICJVcGxvYWQiOmM9YS5JYS5rYTt2YXIgZD1hLkJhLnNpemU7aWYoTCRjKCkpe3ZhciBlPWEuQWI7dmFyIGY9YS5vYStlPj1kO2Q9SyRjKGEuQmEsCmEub2EsZj9kOmEub2ErZSl9ZWxzZSBhLm9hPTAsZD1hLkJhLGY9ITA7YS5rYT1uZXcgTSRjO2Eua2Euc2V0V2l0aENyZWRlbnRpYWxzKGEuZjQpO2Eud2EucmVtb3ZlQWxsKCk7YS53YS5saXN0ZW4oYS5rYSwicHJvZ3Jlc3MiLGEuUWIpO2U9KDAsXy5pZSkoYS5PYixhLGEub2ErZC5zaXplLGYpO2Eud2EubGlzdGVuKGEua2EsImNvbXBsZXRlIixlKTthLmRpc3BhdGNoRXZlbnQobmV3IEokYygicyIpKTtmPU9iamVjdC5hc3NpZ24oe30sYS5HYXx8e30seyJYLUdvb2ctVXBsb2FkLUNvbW1hbmQiOiJ1cGxvYWQiKyhmPyIsIGZpbmFsaXplIjoiIiksIlgtR29vZy1VcGxvYWQtT2Zmc2V0IjphLm9hfSk7YS5rYS5zZW5kKGMsIlBPU1QiLGQsZik7YnJlYWs7Y2FzZSAiUXVlcnkiOmEua2E9bmV3IE0kYzthLndhLnJlbW92ZUFsbCgpO2Eud2EubGlzdGVuKGEua2EsImNvbXBsZXRlIixhLkliKTtjPU9iamVjdC5hc3NpZ24oe30sYS5HYXx8e30seyJYLUdvb2ctVXBsb2FkLUNvbW1hbmQiOiJxdWVyeSJ9KTsKYS5rYS5zZW5kKGEuSWEua2EsIlBPU1QiLCIiLGMpO2EuZGlzcGF0Y2hFdmVudChuZXcgSiRjKCJzIikpO2JyZWFrO2RlZmF1bHQ6dGhyb3cgRXJyb3IoImdrIik7fX0pfHxTJGMoYSwiVHJhbnNmZXIgZW5jb3VudGVyZWQgdG9vIG1hbnkgY29uc2VjdXRpdmUgZmFpbHVyZXMuIil9LFMkYz1mdW5jdGlvbihhLGIpe2EudmQ9IkVycm9yIjthLk9hPWI7YS5kaXNwYXRjaEV2ZW50KG5ldyBJJGMoInAiKSl9OwpRJGMucHJvdG90eXBlLkpiPWZ1bmN0aW9uKGEpe3ZhciBiPWEudGFyZ2V0O2IuZ2V0U3RhdHVzKCk7dGhpcy5kaXNwYXRjaEV2ZW50KG5ldyBKJGMoInQiKSk7aWYoVCRjKGIpKVUkYyh0aGlzLGIpO2Vsc2UgaWYoViRjKGIpKXthPUEkYyhhLnRhcmdldC5nZXRBbGxSZXNwb25zZUhlYWRlcnMoKSk7Zm9yKHZhciBjIGluIGEpXy5pYShjLnRvTG93ZXJDYXNlKCksIngtZ29vZy11cGxvYWQtaGVhZGVyLSIpO3RoaXMuZGlzcGF0Y2hFdmVudChuZXcgSSRjKCJvIikpO2M9QiRjKGEsIlgtR29vZy1VcGxvYWQtVVJMIik7YT0oYT1CJGMoYSwiWC1Hb29nLVVwbG9hZC1DaHVuay1HcmFudWxhcml0eSIpKT9wYXJzZUludChhLDEwKToxO2M9PT12b2lkIDB8fGlzTmFOKGEpfHxhPD0wP1MkYyh0aGlzLCJTZXJ2ZXIgcmV0dXJuZWQgaW52YWxpZCBoZWFkZXJzLiIpOih0aGlzLkFiPU1hdGguZmxvb3IoMTA3Mzc0MTgyNC9hKSphLHRoaXMuSWE9bmV3IEckYyhjKSx0aGlzLmRpc3BhdGNoRXZlbnQobmV3IEkkYygiciIpKSwKdGhpcy52ZD0iVXBsb2FkIix0aGlzLkVhLnJlc2V0KCksUiRjKHRoaXMpKX1lbHNlIFIkYyh0aGlzKX07USRjLnByb3RvdHlwZS5RYj1mdW5jdGlvbihhKXt0aGlzLkFhPXRoaXMub2ErYS5sb2FkZWQ7dGhpcy5kaXNwYXRjaEV2ZW50KG5ldyBJJGMoIm0iKSl9OwpRJGMucHJvdG90eXBlLk9iPWFzeW5jIGZ1bmN0aW9uKGEsYixjKXt2YXIgZD0oMCxfLk1mKSgpLGU9ZCgpO2QoMSk7dHJ5e2xldCBmPWMudGFyZ2V0O2YuZ2V0U3RhdHVzKCk7dGhpcy5kaXNwYXRjaEV2ZW50KG5ldyBKJGMoInQiKSk7VyRjKGYpfHxmLmdldFN0YXR1cygpPT00MDQ/KHRoaXMuQWE9YSxVJGModGhpcyxmKSk6ViRjKGYpP2I/UyRjKHRoaXMsIkdvdCBhIG5vbi1maW5hbCBzdWNjZXNzIHJlc3BvbnNlIGFmdGVyIGlzc3VpbmcgYSBmaW5hbGl6ZSBjb21tYW5kLiIpOih0aGlzLm9hPXRoaXMuQWE9YSx0aGlzLkVhLnJlc2V0KCksUiRjKHRoaXMpKToodGhpcy5OYT1mLmdldFN0YXR1cygpPT00MDAsdGhpcy52ZD0iUXVlcnkiLFIkYyh0aGlzKSl9ZmluYWxseXtlKCl9fTsKUSRjLnByb3RvdHlwZS5JYj1mdW5jdGlvbihhKXt2YXIgYj1hLnRhcmdldDtiLmdldFN0YXR1cygpO3RoaXMuZGlzcGF0Y2hFdmVudChuZXcgSiRjKCJ0IikpO1QkYyhiKT8oYi5nZXRTdGF0dXMoKT09PTIwMCYmKHRoaXMuQWE9dGhpcy5CYS5zaXplKSxVJGModGhpcyxiKSk6ViRjKGIpPyhhPUEkYyhhLnRhcmdldC5nZXRBbGxSZXNwb25zZUhlYWRlcnMoKSksYT1wYXJzZUludChCJGMoYSwiWC1Hb29nLVVwbG9hZC1TaXplLVJlY2VpdmVkIiksMTApLGlzTmFOKGEpP1MkYyh0aGlzLCJTZXJ2ZXIgZGlkIG5vdCByZXNwb25kIHdpdGggY3VycmVudCBvZmZzZXQuIik6YTx0aGlzLm9hP1MkYyh0aGlzLCJTZXJ2ZXIgbG9zdCBieXRlcyEgRXhwZWN0ZWQgYW4gb2Zmc2V0IG9mIGF0IGxlYXN0ICIrdGhpcy5vYSsiLCBidXQgZ290IGFuIG9mZnNldCBvZiAiK2ErIi4iKTp0aGlzLk5hJiZ0aGlzLm9hPT09YT9TJGModGhpcywiU2VydmVyIHJldHVybmVkIHRoZSBzYW1lIG9mZnNldCBhcyB0aGUgbGFzdCBmYWlsZWQgdXBsb2FkIGF0dGVtcHQuIik6Cih0aGlzLk5hPSExLHRoaXMub2E8YSYmdGhpcy5FYS5yZXNldCgpLHRoaXMub2E9dGhpcy5BYT1hLHRoaXMudmQ9IlVwbG9hZCIsUiRjKHRoaXMpKSk6UiRjKHRoaXMpfTsKdmFyIFUkYz1mdW5jdGlvbihhLGIpe2EuU2E9Yi5nZXRTdGF0dXMoKTt2YXIgYz1BJGMoYi5nZXRBbGxSZXNwb25zZUhlYWRlcnMoKSk7YS5aYT1GJGMoYyk7YS5uYj1iLkt3KCk7YS52ZD0iUmVzcG9uc2UgcmVjZWl2ZWQiO2EuZGlzcGF0Y2hFdmVudChuZXcgSSRjKCJuIikpfSxWJGM9ZnVuY3Rpb24oYSl7dmFyIGI9YS5nZXRTdGF0dXMoKTthPUEkYyhhLmdldEFsbFJlc3BvbnNlSGVhZGVycygpKTthPUIkYyhhLCJYLUdvb2ctVXBsb2FkLVN0YXR1cyIpO3JldHVybiBiPT09MjAwJiZhPT09ImFjdGl2ZSJ9LFckYz1mdW5jdGlvbihhKXthPUEkYyhhLmdldEFsbFJlc3BvbnNlSGVhZGVycygpKTtyZXR1cm4gQiRjKGEsIlgtR29vZy1VcGxvYWQtU3RhdHVzIik9PT0iZmluYWwifSxUJGM9ZnVuY3Rpb24oYSl7aWYoVyRjKGEpKXJldHVybiEwO2E9YS5nZXRTdGF0dXMoKTtyZXR1cm4gYT49NDAwJiZhPDUwMH07dmFyIFgkYz1jbGFzcyBleHRlbmRzIEgkY3tjb25zdHJ1Y3RvcihhLGIsYyxkKXtzdXBlcigpO3RoaXMuQWE9Yzt0aGlzLlNhPWE7dGhpcy5SYT0iUE9TVCI7dGhpcy5PYT1iO3RoaXMuUGE9ZDt0aGlzLk5hPTA7YT1uZXcgXy51Qjt0aGlzLndhPSJ1cGxvYWRlci0iK18uY0ZhKCkrIi0iK2EuR2ooKTt0aGlzLmthPW51bGw7dGhpcy5CYT0wO3RoaXMuS2E9dGhpcy5JYT10aGlzLkdhPW51bGw7dGhpcy52ZD0iUmVhZHkiO3RoaXMuRWE9bnVsbDt0aGlzLm9hPW5ldyBfLmFlKHRoaXMpO18uRGkodGhpcyx0aGlzLm9hKX1ydW4oKXt2YXIgYT1fLldjKHRoaXMuT2EpO3RoaXMuQWEubGVuZ3RoIT1udWxsJiYoYVsiQ29udGVudC1MZW5ndGgiXT10aGlzLkFhLmxlbmd0aCk7YT1FJGMoYSk7YVsiWC1Hb29nLVVwbG9hZC1Qcm90b2NvbCJdPSJtdWx0aXBhcnQiO2FbIkNvbnRlbnQtVHlwZSJdPSJtdWx0aXBhcnQvcmVsYXRlZDsgYm91bmRhcnk9Iit0aGlzLndhO3RoaXMudmQ9IlRyYW5zZmVycmluZyI7CnRoaXMua2E9bmV3IE0kYzt0aGlzLm9hLnJlbW92ZUFsbCgpO3RoaXMub2EubGlzdGVuKHRoaXMua2EsInByb2dyZXNzIix0aGlzLm5iKTt0aGlzLm9hLmxpc3Rlbih0aGlzLmthLCJjb21wbGV0ZSIsdGhpcy5aYSk7dmFyIGI9dGhpcy5rYSxjPWIuc2VuZCxkPXRoaXMuU2EsZT10aGlzLlJhLGY9Ii0tIit0aGlzLndhKydcclxuQ29udGVudC1EaXNwb3NpdGlvbjogZm9ybS1kYXRhOyBuYW1lPSJtZXRhZGF0YSJcclxuXHJcbicrKHRoaXMuUGErIlxyXG4tLSIpK3RoaXMud2ErJ1xyXG5Db250ZW50LURpc3Bvc2l0aW9uOiBmb3JtLWRhdGE7IG5hbWU9IkZpbGVkYXRhIlxyXG5Db250ZW50LVRyYW5zZmVyLUVuY29kaW5nOiBiaW5hcnlcclxuXHJcbicrdGhpcy5BYSsiXHJcbi0tIit0aGlzLndhKyItLVxyXG4iO3RoaXMuTmE9Zi5sZW5ndGgtdGhpcy5BYS5sZW5ndGg7Yy5jYWxsKGIsZCxlLGYsYSl9aHFiKCl7cmV0dXJuIHRoaXMuQmF9Y0RhKCl7cmV0dXJuIHRoaXMuR2F9c1ooKXtyZXR1cm4gdGhpcy5JYX1Ldygpe3JldHVybiB0aGlzLkthfWlKYigpe3JldHVybiB0aGlzLkVhfWNhbmNlbCgpe3RoaXMudmQhPQoiQ29tcGxldGUiJiZ0aGlzLnZkIT0iRXJyb3IiJiYodGhpcy5vYS5yZW1vdmVBbGwoKSx0aGlzLmthJiZ0aGlzLmthLmFib3J0KCksdGhpcy52ZD0iQ2FuY2VsIix0aGlzLmRpc3BhdGNoRXZlbnQobmV3IEkkYygicSIpKSl9cGF1c2UoKXt9bmIoYSl7dGhpcy5CYT1NYXRoLm1heCgwLGEubG9hZGVkLXRoaXMuTmEpO3RoaXMuZGlzcGF0Y2hFdmVudChuZXcgSSRjKCJtIikpfVphKGEpe3ZhciBiPWEudGFyZ2V0LmdldFN0YXR1cygpO2I9PT12b2lkIDB8fGI9PT0tMT8odGhpcy5FYT0iQ29ubmVjdGlvbiBicm9rZW4gYmVmb3JlIHJlc3BvbnNlIHdhcyByZWNlaXZlZC4iLHRoaXMudmQ9IkVycm9yIix0aGlzLmRpc3BhdGNoRXZlbnQobmV3IEkkYygicCIpKSk6KHRoaXMuR2E9YixhPWEudGFyZ2V0LGI9QSRjKGEuZ2V0QWxsUmVzcG9uc2VIZWFkZXJzKCkpLHRoaXMuSWE9RiRjKGIpLHRoaXMuS2E9YS5LdygpLHRoaXMudmQ9IkNvbXBsZXRlIix0aGlzLmRpc3BhdGNoRXZlbnQobmV3IEkkYygibiIpKSl9fTtfLlkkYz1mdW5jdGlvbihhLGIsYyxkLGU9ITEsZil7aWYodHlwZW9mIGM9PT0ic3RyaW5nInx8YyBpbnN0YW5jZW9mIFN0cmluZylyZXR1cm4gbmV3IFgkYyhhLGIsYyxkKTtmPW5ldyBRJGMoZik7Zi5yYj1hO2YuUmE9IlBPU1QiO2YuR2E9YjtmLkJhPWM7Zi5QYj1jLnNpemU7Zi5QYT1kO2UmJihmLmY0PWUpO2YudmQ9IlN0YXJ0IjtyZXR1cm4gZn07Cn1jYXRjaChlKXtfLl9EdW1wRXhjZXB0aW9uKGUpfQp0cnl7Cl8udW9jPSEhKF8uT2lbMzNdJjIpO18udm9jPSEhKF8uT2lbMzNdJjQpO18ud29jPSEhKF8uT2lbMzNdJjgpO18ueG9jPSEhKF8uT2lbMzNdJjE2KTtfLnlvYz0hIShfLk9pWzMzXSYzMik7Xy56b2M9ISEoXy5PaVszM10mNjQpO18uQW9jPSEhKF8uT2lbMzNdJjEyOCk7Xy5Cb2M9ISEoXy5PaVszM10mMjU2KTtfLkJ6PSEhKF8uT2lbMzNdPj4xNSYxKTtfLkNvYz0hIShfLk9pWzMzXT4+MTYmMSk7Xy5Eb2M9ISEoXy5PaVszM10+PjE3JjEpO18uRW9jPSEhKF8uT2lbMzNdPj4xOCYxKTtfLkZvYz0hIShfLk9pWzMzXT4+MTkmMSk7Xy5Hb2M9ISEoXy5PaVszM10+PjIwJjEpO18uSG9jPSEhKF8uT2lbMzNdPj4yMSYxKTtfLklvYz0hIShfLk9pWzMzXT4+MjImMSk7Xy5Kb2M9ISEoXy5PaVszM10+PjIzJjEpO18uS29jPSEhKF8uT2lbMzNdPj4yNCYxKTtfLkxvYz0hIShfLk9pWzMzXT4+MjUmMSk7Xy5Nb2M9ISEoXy5PaVszM10+PjI2JjEpO18uTm9jPSEhKF8uT2lbMzNdPj4yNyYxKTsKXy5Pb2M9ISEoXy5PaVszM10+PjI4JjEpO18uUG9jPSEhKF8uT2lbMzNdPj4yOSYxKTtfLlFvYz0hIShfLk9pWzM0XSYxKTtfLlJvYz0hIShfLk9pWzM0XSYyKTtfLlNvYz0hIShfLk9pWzM0XSY0KTtfLlRvYz0hIShfLk9pWzM0XSY4KTtfLlVvYz0hIShfLk9pWzM0XSYxNik7Xy5Wb2M9ISEoXy5PaVszNF0mMzIpO18uV29jPSEhKF8uT2lbMzRdJjY0KTtfLlhvYz0hIShfLk9pWzM0XSYxMjgpO18uWW9jPSEhKF8uT2lbMzRdJjI1Nik7Xy5ab2M9ISEoXy5PaVszNF0mNTEyKTtfLiRvYz0hIShfLk9pWzM0XSYxMDI0KTtfLmFwYz0hIShfLk9pWzM0XSYyMDQ4KTtfLmJwYz0hIShfLk9pWzM0XSY4MTkyKTtfLmNwYz0hIShfLk9pWzM0XT4+MTQmMSk7Xy5kcGM9ISEoXy5PaVszNF0+PjE1JjEpO18uZXBjPSEhKF8uT2lbMzRdPj4xNiYxKTtfLmZwYz0hIShfLk9pWzM0XT4+MTcmMSk7Cn1jYXRjaChlKXtfLl9EdW1wRXhjZXB0aW9uKGUpfQp0cnl7Cl8ucW9jPSEhKF8uT2lbNzZdJjY0KTtfLnp6PSEhKF8uT2lbNzZdJjEyOCk7Cn1jYXRjaChlKXtfLl9EdW1wRXhjZXB0aW9uKGUpfQp0cnl7Cl8uZ3BjPV8uT2lbMzRdJjQwOTY/IjExNCwxNDAsMTgxLDIwMSwyNDUiOiIiOwp9Y2F0Y2goZSl7Xy5fRHVtcEV4Y2VwdGlvbihlKX0KdHJ5ewp2YXIgY29jPVswLF8uRSwtMV07Xy5yej1jbGFzcyBleHRlbmRzIF8ubHtjb25zdHJ1Y3RvcihhKXtzdXBlcihhKX1vYSgpe3JldHVybiBfLkxqKHRoaXMsNCl9Z2V0QXR0cmlidXRlKCl7cmV0dXJuIF8uZ2godGhpcywxNSl9c2V0QXR0cmlidXRlKGEpe3JldHVybiBfLmZoKHRoaXMsMTUsYSl9aGFzQXR0cmlidXRlKCl7cmV0dXJuIF8ucGgodGhpcywxNSl9djUoKXtyZXR1cm4gXy5kayh0aGlzLDE4KX1nZXRWaWV3ZXJUeXBlKCl7cmV0dXJuIF8uaWsodGhpcywyMSl9RnMoYSl7cmV0dXJuIF8uWmgodGhpcywyMSxhKX19O18uZG9jPVszMCwzMl07Xy5yei5wcm90b3R5cGUuWGE9InZTVDdyYiI7Xy5lb2M9WzAsXy5kb2MsXy5ELF8uRSwtMixfLkVsLF8uRyxfLkUsXy5DLF8uRSwtMSxfLkcsXy5DLF8uRSxfLlpuYyxfLkUsXy5FbCwxLF8uQyxfLkUsXy5HLC0xLF8uSmwsXy5ELC0xLF8uRSxfLkQsXy5FLF8uRCwtMSxfLkdsLF8uRCxfLklsLGNvY107Cn1jYXRjaChlKXtfLl9EdW1wRXhjZXB0aW9uKGUpfQp0cnl7Cl8uc3o9ZnVuY3Rpb24oYSxiKXtyZXR1cm4gXy5maChhLDMsYil9O18udHo9ZnVuY3Rpb24oYSxiKXtyZXR1cm4gXy5maChhLDQsYil9O18udXo9ZnVuY3Rpb24oYSl7cmV0dXJuIF8uaWsoYSw2KX07Xy52ej1mdW5jdGlvbihhLGIpe3JldHVybiBfLlpoKGEsNixiKX07Xy53ej1mdW5jdGlvbihhKXtyZXR1cm4gXy5laShhLDYpfTtfLmZvYz1mdW5jdGlvbihhLGIpe3JldHVybiBfLmxrKGEsMTIsYil9O18uZ29jPWZ1bmN0aW9uKGEsYil7cmV0dXJuIF8uZmgoYSwxMyxiKX07Xy54ej1mdW5jdGlvbihhLGIpe3JldHVybiBfLlpoKGEsMjAsYil9O18uaG9jPWZ1bmN0aW9uKGEpe3JldHVybiBfLiRoKGEsMjQsITApfTtfLmlvYz1mdW5jdGlvbihhKXtyZXR1cm4gXy4kaChhLDI2LCEwKX07Xy5qb2M9ZnVuY3Rpb24oYSxiKXtyZXR1cm4gXy5HaihhLDMyLF8uZG9jLGIpfTtfLnl6PWZ1bmN0aW9uKGEpe3ZhciBiPW5ldyBfLnJ6O3JldHVybiBfLmZoKGIsMixhKX07Cl8ua29jPWNsYXNzIGV4dGVuZHMgXy5se2NvbnN0cnVjdG9yKGEpe3N1cGVyKGEpfWdldE5hbWUoKXtyZXR1cm4gXy5naCh0aGlzLDEpfUVlKGEpe3JldHVybiBfLmZoKHRoaXMsMSxhKX1kaCgpe3JldHVybiBfLnBoKHRoaXMsMSl9Z2V0VmFsdWUoKXtyZXR1cm4gXy5naCh0aGlzLDIpfWREKCl7cmV0dXJuIF8uZ2godGhpcywyKX1zZXRWYWx1ZShhKXtyZXR1cm4gXy5maCh0aGlzLDIsYSl9Y2xlYXJWYWx1ZSgpe3JldHVybiBfLkdlKHRoaXMsMil9fTtfLmxvYz1mdW5jdGlvbihhLGIpe3JldHVybiBfLlNiKGEsXy5weiwxNCxiKX07Xy5tb2M9ZnVuY3Rpb24oYSl7cmV0dXJuIF8uQmooYSxfLnluYywxKX07Cn1jYXRjaChlKXtfLl9EdW1wRXhjZXB0aW9uKGUpfQp0cnl7CnZhciBrcGMsbHBjO18uaXBjPWZ1bmN0aW9uKGEpe3ZhciBiPWEuY2xvc2VzdChfLnVvKCJqc25hbWUiLCJhYWR2aGUiKSk7aWYoYil7dmFyIGM9Xy5wbShiLmdldERhdGEoInByb3h5IiksIiIpO2E9Xy5wbShiLmdldERhdGEoInJvb3RuYW1lIiksIiIpO2xldCBkPV8ucG0oYi5nZXREYXRhKCJmYnJ0ZGFuIiksIiIpO2I9Xy5wbShiLmdldERhdGEoImZicnRkYXYiKSwiIik7aWYoYyl7Yz1uZXcgXy53byhbXy5KbShjKV0pO2xldCBlPW5ldyBfLndvKFtdKTthJiYoZT1jLmNsb3Nlc3QoXy51bygianNuYW1lIixhKSkpO2QmJmImJihlPWMuY2xvc2VzdChfLmxPYShkLGIpKSk7ZS5maXJzdCgpfHwoZT1fLmhwYyhjKSk7cmV0dXJuIGUuZmlyc3QoKT9lOnZvaWQgMH19fTsKXy5ocGM9ZnVuY3Rpb24oYSl7dmFyIGI9YS5jbG9zZXN0KF8ubE9hKCJrcGZicm9vdCIpKTtiLmZpcnN0KCl8fChiPWEuY2xvc2VzdChfLnRvKCJFeUJSdWIiKSkpOyhhPV8ucG0oYi5nZXREYXRhKCJrcGlkIiksIiIpKSYmKGI9bmV3IF8ud28oQXJyYXkuZnJvbShkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKGBbZGF0YS1rcGlkPSIke2F9Il1gKSkpKTtyZXR1cm4gYn07Xy5Dej1mdW5jdGlvbihhKXt2YXIgYjtyZXR1cm4oYj1fLmlwYyhhKSkhPW51bGw/YjpfLmhwYyhhKX07Cl8uanBjPWZ1bmN0aW9uKGEsYj0hMSl7c3dpdGNoKGEubm9kZVR5cGUpe2Nhc2UgTm9kZS5FTEVNRU5UX05PREU6bGV0IGM9d2luZG93LmdldENvbXB1dGVkU3R5bGUoYSk7aWYoYy5kaXNwbGF5PT09Im5vbmUifHxOdW1iZXIoYy5vcGFjaXR5KTwuMDF8fF8ueG0oYSwiZ21sU1ZiIil8fGImJmEuZ2V0QXR0cmlidXRlKCJhcmlhLWhpZGRlbiIpPT09InRydWUiKXJldHVybiIiO2lmKGEudGFnTmFtZT09PSJCUiIpcmV0dXJuIGI/IiAiOiJcbiI7YT1BcnJheS5mcm9tKGEuY2hpbGROb2RlcykubWFwKGQ9Pl8uanBjKGQsYikpLmpvaW4oYj8iICI6IiIpO2MuZGlzcGxheSE9PSJibG9jayJ8fGJ8fChhPWAKJHthfQpgKTtyZXR1cm4gYj9hLnJlcGxhY2UoL1xzKy9nLCIgIikudHJpbSgpOmE7Y2FzZSBOb2RlLlRFWFRfTk9ERTpyZXR1cm4gYS5ub2RlVmFsdWUucmVwbGFjZSgvXHMrL2csIiAiKS50cmltKCk7ZGVmYXVsdDpyZXR1cm4iIn19O18ubXBjPWZ1bmN0aW9uKGEsYil7cmV0dXJuIGtwYyhhLG5ldyBfLk5DYShscGMoYikpKX07Xy5ucGM9ZnVuY3Rpb24oYSxiKXtyZXR1cm4gXy5maChhLDI3LGIpfTtrcGM9Xy5IaGEoXy5lb2MpO2xwYz1fLlliKF8uZW9jKTsKfWNhdGNoKGUpe18uX0R1bXBFeGNlcHRpb24oZSl9CnRyeXsKXy51KCJUMUhPeGMiKTsKdmFyIHlZZSxDWWUsRFllLEVZZSxHWWUsSFllLElZZSxKWWUsS1llLExZZSxNWWUsTlllLE9ZZSxQWWUsUVllLFJZZSxTWWUsVFllLFVZZSxWWWUsWFllLFlZZSxaWWUsJFllLGFaZSxiWmUsY1plLGRaZSxlWmUsZlplLGdaZSxoWmUsaVplLGpaZSxrWmUsQlllLGxaZSx4WWUsblplLHFaZSxyWmUsc1plLHRaZSx1WmUsdlplLHdZZSx3WmU7Xy51WWU9ZnVuY3Rpb24oYSxiKXt2YXIgYyxkLGU9KGE9PW51bGw/dm9pZCAwOihjPWEubzliKT09bnVsbD92b2lkIDA6KGQ9Yy5lbCgpKT09bnVsbD92b2lkIDA6ZC5vdXRlckhUTUwpfHwiIjtlPWUucmVwbGFjZUFsbChiLCIiKTthLnJlYj1uZXcgQmxvYihbYDwhRE9DVFlQRSBodG1sPlxuJHtlfWBdLHt0eXBlOiJ0ZXh0L2h0bWwifSk7cmV0dXJuIGF9O18udlllPWZ1bmN0aW9uKGEpe3JldHVybiBhPT09dm9pZCAwPyExOl8uZ3BjLnNwbGl0KCIsIikubWFwKGI9Pk51bWJlcihiKSkuaW5jbHVkZXMoYSl9Owp5WWU9ZnVuY3Rpb24oYSxiLGMpe2lmKCFfLm5pKGEuZ2V0RGF0YSgiaXBkIiksITEpfHxiKWlmKChiPV8ucG0oYS5nZXREYXRhKCJmZmQiKSwiIikpJiZjLnB1c2god1llKGIpKSxiPV8ucG0oYS5nZXREYXRhKCJmZmRiIiksIiIpKXthPWMucHVzaDt2YXIgZD1uZXcgeFllO2I9Xy52ayhkLDQsXy5TWGUsYik7YS5jYWxsKGMsYil9fTtfLnpZZT1mdW5jdGlvbihhPSExKXt2YXIgYj1bXTtkb2N1bWVudC5ib2R5LnF1ZXJ5U2VsZWN0b3JBbGwoIltqc25hbWU9S1RQOUdiXSIpLmZvckVhY2goYz0+e2M9bmV3IF8uem8oYyk7eVllKGMsYSxiKX0pO3JldHVybiBifTsKXy5BWWU9ZnVuY3Rpb24oYSxiPSExKXt2YXIgYz1hLmdldERhdGEoInByb3h5IikuTGIoKSYmKGEuZ2V0RGF0YSgicm9vdG5hbWUiKS5MYigpfHxhLmdldERhdGEoImZicnRkYW4iKS5MYigpJiZhLmdldERhdGEoImZicnRkYXYiKS5MYigpKSxkPVtdO2lmKCFfLkRvYylyZXR1cm4gZDt2YXIgZT1fLkN6KGEpO2Uuc2l6ZSgpPjAmJl8ueG8oZSxmPT57Zj09bnVsbHx8Zi5maW5kKCJbanNuYW1lPUtUUDlHYl0iKS5lYWNoKGc9PntnPW5ldyBfLnpvKGcpOyhjfHxfLmhwYyhnKS5lcXVhbHMoZSkpJiZ5WWUoZyxiLGQpfSl9KTtyZXR1cm4gZH07Q1llPWZ1bmN0aW9uKGEsYil7dmFyIGM9W107ZG9jdW1lbnQuYm9keS5xdWVyeVNlbGVjdG9yQWxsKGBbanNuYW1lPSR7YX1dYCkuZm9yRWFjaChkPT57dmFyIGU9Yy5wdXNoO3ZhciBmPW5ldyBCWWU7ZD1kLmdldEF0dHJpYnV0ZSgiaHJlZiIpfHwiIjtmPV8uZmgoZiwxLGQpO2Y9Xy5maChmLDIsYik7ZS5jYWxsKGMsZil9KTtyZXR1cm4gY307CkRZZT1mdW5jdGlvbigpe3JldHVyblsuLi5DWWUoIk9Za3FPYiIsIi9zZWFyY2giKSwuLi5DWWUoIkQydENDIiwiTWFnaUxSTyIpLC4uLkNZZSgicEpqT25kIiwiQXN5bmMiKV19O0VZZT1mdW5jdGlvbihhKXt2YXIgYjthPShhPT1udWxsP3ZvaWQgMDooYj1fLnEoYSxfLm9ZZSw3KSk9PW51bGw/dm9pZCAwOmIucUooKSl8fCIiO3JldHVybiBhPT09IiI/bmV3IF8uaE06Xy5tWWUobmV3IF8uaE0sXy5sWWUoYSkpfTtHWWU9ZnVuY3Rpb24oYSxiLGMpe3ZhciBkPUZZZS5nZXQoYS53YSgpLmdldFZpZXdlclR5cGUoKSk7cmV0dXJuIGQ/ZChhLGIsYyk6Y307SFllPWZ1bmN0aW9uKGEsYil7Xy5maChhLDE3LGIpfTtJWWU9ZnVuY3Rpb24oYSxiKXtfLmZoKGEsMzAsYil9O0pZZT1jbGFzc3t9O0tZZT1mdW5jdGlvbihhLGIpe3JldHVybiBfLmZoKGEsMSxiKX07TFllPWZ1bmN0aW9uKGEpe3JldHVybiBfLiRoKGEsNiwhIWRvY3VtZW50LmJvZHkuZGF0YXNldC5kdCl9OwpNWWU9ZnVuY3Rpb24oYSxiKXtyZXR1cm4gXy5sayhhLDEsYil9O05ZZT1mdW5jdGlvbihhLGIpe3JldHVybiBfLmZoKGEsMixiKX07T1llPWZ1bmN0aW9uKGEsYil7cmV0dXJuIF8uJGgoYSw4LGIpfTtQWWU9ZnVuY3Rpb24oYSxiKXtyZXR1cm4gXy5maChhLDI1LGIpfTtRWWU9ZnVuY3Rpb24oYSxiKXtfLmZoKGEsMTMsYil9O1JZZT1mdW5jdGlvbihhLGIpe18uZmgoYSwxNCxiKX07U1llPWZ1bmN0aW9uKGEsYil7Xy5maChhLDE1LGIpfTtUWWU9ZnVuY3Rpb24oYSxiKXtfLmxrKGEsMjEsYil9O1VZZT1mdW5jdGlvbihhLGIpe18uZmgoYSwxNyxiKX07VlllPWZ1bmN0aW9uKGEsYil7cmV0dXJuIF8uemsoYSwxOCxiKX07Xy5XWWU9ZnVuY3Rpb24oYSxiKXtyZXR1cm4gXy5EayhhLDE5LGIpfTtYWWU9ZnVuY3Rpb24oYSxiKXtfLmZoKGEsMzEsYil9O1lZZT1mdW5jdGlvbihhLGIpe18ud2soYSwzNSxiKX07WlllPWZ1bmN0aW9uKGEsYil7cmV0dXJuIF8uWmgoYSwzMyxiKX07CiRZZT1mdW5jdGlvbihhLGIpe3JldHVybiBfLiRoKGEsNDQsYil9O2FaZT1mdW5jdGlvbihhLGIpe3JldHVybiBfLlpoKGEsNDUsYil9O2JaZT1mdW5jdGlvbihhLGIpe3JldHVybiBfLmZoKGEsNDYsYil9O2NaZT1jbGFzcyBleHRlbmRzIF8ubHtjb25zdHJ1Y3RvcihhKXtzdXBlcihhKX19O2RaZT1mdW5jdGlvbihhLGIpe3JldHVybiBfLlNiKGEsY1plLDM2LGIpfTtlWmU9Y2xhc3MgZXh0ZW5kcyBfLmx7Y29uc3RydWN0b3IoYSl7c3VwZXIoYSl9fTtmWmU9ZnVuY3Rpb24oYSxiKXtfLlNiKGEsZVplLDQxLGIpfTtnWmU9ZnVuY3Rpb24oYSl7dmFyIGI9bmV3IGVaZTtyZXR1cm4gXy5maChiLDEsYSl9O2haZT1jbGFzcyBleHRlbmRzIF8ubHtjb25zdHJ1Y3RvcihhKXtzdXBlcihhKX1OYygpe3JldHVybiBfLnQodGhpcyw4KX19O2laZT1mdW5jdGlvbihhLGIpe3JldHVybiBfLlNiKGEsaFplLDM0LGIpfTtqWmU9Y2xhc3MgZXh0ZW5kcyBfLmx7Y29uc3RydWN0b3IoYSl7c3VwZXIoYSl9fTsKa1plPWZ1bmN0aW9uKGEpe3ZhciBiPW5ldyBqWmU7Yj1fLmZoKGIsMSx3aW5kb3cubmF2aWdhdG9yLnVzZXJBZ2VudCk7Yj1fLmZoKGIsMix3aW5kb3cubmF2aWdhdG9yLnBsYXRmb3JtfHwiIik7cmV0dXJuIF8uU2IoYSxqWmUsNyxiKX07QlllPWNsYXNzIGV4dGVuZHMgXy5se2NvbnN0cnVjdG9yKGEpe3N1cGVyKGEpfX07bFplPWZ1bmN0aW9uKGEpe3ZhciBiPURZZSgpO3JldHVybiBfLklqKGEsMTAsQlllLGIpfTt4WWU9Y2xhc3MgZXh0ZW5kcyBfLmx7Y29uc3RydWN0b3IoYSl7c3VwZXIoYSl9fTt4WWUucHJvdG90eXBlLlhhPSJGVXNHRWMiO18ubVplPWZ1bmN0aW9uKGEsYil7cmV0dXJuIF8uU2IoYSxfLnB6LDMyLGIpfTsKblplPWNsYXNzIGV4dGVuZHMgXy5se2NvbnN0cnVjdG9yKGEpe3N1cGVyKGEpfXVaKCl7cmV0dXJuIF8uT2oodGhpcywyKX1nZXRVcmwoKXtyZXR1cm4gXy50KHRoaXMsMyl9RWMoKXtyZXR1cm4gXy5waCh0aGlzLDMpfWdldFRpdGxlKCl7cmV0dXJuIF8udCh0aGlzLDQpfXNldFRpdGxlKGEpe3JldHVybiBfLmZoKHRoaXMsNCxhKX1sZCgpe3JldHVybiBfLnBoKHRoaXMsNCl9UWcoKXtyZXR1cm4gXy50KHRoaXMsNSl9Z2V0VW5pcXVlSWQoKXtyZXR1cm4gXy54ZSh0aGlzLDcpfX07Xy5vWmU9Y2xhc3MgZXh0ZW5kcyBfLmx7Y29uc3RydWN0b3IoYSl7c3VwZXIoYSl9SzdhKCl7cmV0dXJuIF8udCh0aGlzLDExKX13Vygpe3JldHVybiBfLk9qKHRoaXMsMTgpfWRSKCl7cmV0dXJuIF8ubWgodGhpcyxuWmUsMjQsXy5vaCgpKX1zNSgpe3JldHVybiBfLm9qKHRoaXMsblplLDI0KX19O18ucFplPWZ1bmN0aW9uKGEpe3JldHVybiBfLnEoYSxfLm9aZSw0KX07cVplPWNsYXNzIGV4dGVuZHMgXy5se2NvbnN0cnVjdG9yKGEpe3N1cGVyKGEpfX07CnJaZT1jbGFzcyBleHRlbmRzIF8ubHtjb25zdHJ1Y3RvcihhKXtzdXBlcihhKX19O3NaZT1jbGFzcyBleHRlbmRzIF8ubHtjb25zdHJ1Y3RvcihhKXtzdXBlcihhKX1jb2EoKXtyZXR1cm4gXy5Paih0aGlzLDIpfX07dFplPWNsYXNzIGV4dGVuZHMgXy5se2NvbnN0cnVjdG9yKGEpe3N1cGVyKGEpfX07dVplPWNsYXNzIGV4dGVuZHMgXy5se2NvbnN0cnVjdG9yKGEpe3N1cGVyKGEpfX07dlplPWNsYXNzIGV4dGVuZHMgXy5se2NvbnN0cnVjdG9yKGEpe3N1cGVyKGEpfWdldFN0YXR1cygpe3JldHVybiBfLk9qKHRoaXMsMSl9SG4oKXtyZXR1cm4gXy5Rayh0aGlzLDEpfX07d1llPV8uZGMoeFllKTt3WmU9Xy5ZYihfLmNZZSk7dmFyIHhaZT1jbGFzcyBleHRlbmRzIF8ubHtjb25zdHJ1Y3RvcihhKXtzdXBlcihhKX1HcSgpe3JldHVybiBfLk1qKHRoaXMsMyl9UG8oKXtyZXR1cm4gXy5Paih0aGlzLDQpfWdldEF0dHJpYnV0ZSgpe3JldHVybiBfLnQodGhpcyw3KX1zZXRBdHRyaWJ1dGUoYSl7cmV0dXJuIF8uZmgodGhpcyw3LGEpfWhhc0F0dHJpYnV0ZSgpe3JldHVybiBfLnBoKHRoaXMsNyl9V0EoKXtyZXR1cm4gXy5xKHRoaXMsXy54SGIsMTApfX0seVplPVs4LDldO3haZS5wcm90b3R5cGUuWGE9IkZKN0VBZSI7dmFyIHpaZT1jbGFzcyBleHRlbmRzIF8ubHtjb25zdHJ1Y3RvcihhKXtzdXBlcihhKX19O3paZS5wcm90b3R5cGUuWGE9IkhDcENhYiI7bmV3IF8uQ2koelplKTt2YXIgQVplPWNsYXNzIGV4dGVuZHMgXy5se2NvbnN0cnVjdG9yKGEpe3N1cGVyKGEpfWdldFN0YXR1cygpe3JldHVybiBfLnEodGhpcyxfLnV1LDEpfUhuKCl7cmV0dXJuIF8ua2oodGhpcyxfLnV1LDEpfX07QVplLnByb3RvdHlwZS5YYT0iSWNvelNlIjtuZXcgXy5DaShBWmUpO3ZhciBCWmU9bmV3IF8uVnQoIklIWFlPZCIsQVplLHpaZSxbXy5taSwhMSxfLmxpLCIvVWdrQ29udHJpYnV0aW9uc1NlcnZpY2UuV3JpdGVGYWN0dWFsRmVlZGJhY2siXSk7dmFyIENaZT1jbGFzcyBleHRlbmRzIF8ubHtjb25zdHJ1Y3RvcihhKXtzdXBlcihhKX19O3ZhciBEWmU9Xy5VYigxMDAyLF8uaFllLENaZSk7dmFyIEVaZT1jbGFzcyBleHRlbmRzIF8ubHtjb25zdHJ1Y3RvcihhKXtzdXBlcihhKX13YSgpe3JldHVybiBfLnEodGhpcyxfLnh1LDMpfXpXKCl7cmV0dXJuIF8ua2oodGhpcyxfLnh1LDMpfX07RVplLnByb3RvdHlwZS5YYT0ialVYdDBjIjtuZXcgXy5DaShFWmUpO18uWm8ualVYdDBjPV8uWW87Xy5OcShFWmUsXy54dSxmdW5jdGlvbihhKXthPWEud2EoKTtyZXR1cm4gYSE9bnVsbD9bYV06W119KTt2YXIgRlplPWNsYXNzIGV4dGVuZHMgXy5se2NvbnN0cnVjdG9yKGEpe3N1cGVyKGEpfX07RlplLnByb3RvdHlwZS5YYT0iaERnbXVkIjtuZXcgXy5DaShGWmUpO18uWm8uaERnbXVkPV8uWW87Xy5OcShGWmUsXy51RixmdW5jdGlvbihhKXtyZXR1cm4gXy5taChhLF8udUYsMSxfLm9oKCkpfSk7dmFyIEZZZT1uZXcgTWFwO18uVnUoe3JlcXVlc3RUeXBlOkVaZSxyZXNwb25zZVR5cGU6RlplfSxFWWUsR1llLCJTN1FKcWMiKTtuZXcgXy5WdCgiSE52VVBiIixGWmUsRVplLFtfLm1pLCEwLF8ubGksIi9WaWV3ZXJTZXJ2aWNlLkZldGNoQmF0Y2hVcGRhdGUiXSk7dmFyIEpaZSxHWmUsSVplLE1aZSxIWmUsS1plLExaZSxPWmUsUFplOwpKWmU9ZnVuY3Rpb24oYSxiLGMsZCxlLGYsZz1bXSxoPSExLGs9ITEsbT0hMSxuPSExLHAscil7ayYmKGIuSmIoKXx8Yi5QYigpLGIuUWIoKXx8Yi5YYigpKTt2YXIgeD1HWmUoYixjLGUscCxmLGcsaykseixCO2lmKCFlLldMYyYmKCh6PV8ucSh4LF8ucHosMzIpKT09bnVsbD8wOihCPV8uVWsoeiw4KSk9PW51bGw/MDpCLmhhcygid2hlcmVfdG9fdm90ZV9yZWZlcmVuY2VfYWRkcmVzcyIpKSl7bGV0IEgsSjsoSD1fLnEoeCxfLnB6LDMyKSk9PW51bGx8fChKPV8uVWsoSCw4KSk9PW51bGx8fEouZGVsZXRlKCJ3aGVyZV90b192b3RlX3JlZmVyZW5jZV9hZGRyZXNzIil9ZT1fLmFoKHguRmMoKSk7Zj1hLkFhLmdldChlKXx8MDtpZihoJiZmPjApcmV0dXJuIF8uVmUoRXJyb3IoInVuIikpLFByb21pc2UucmVzb2x2ZSgpO2lmKCFoJiZmPj0xMClyZXR1cm4gXy5WZShFcnJvcigidm4iKSksUHJvbWlzZS5yZXNvbHZlKCk7YS5BYS5zZXQoZSxmKzEpO2lmKChIWmUoImZvcmNlX292ZXJzaXplX2ZiX3VwbG9hZCIpfHwKeC5GYygpLmxlbmd0aD4yMDQ4KSYmbilyZXR1cm4gaD1uZXcgQmxvYihbd1plKHgpXSx7dHlwZToiYXBwbGljYXRpb24veC1wcm90b2J1ZiJ9KSxQcm9taXNlLnJlc29sdmUoe3h6YjpofSkudGhlbihIPT5hLkJsYShILCExKSkudGhlbihIPT57dmFyIEo9bmV3IF8ucHo7aWYoXy5raih4LF8ucHosMzIpKXt2YXIgTj1fLnEoeCxfLnB6LDMyKSxRO2lmKFE9Xy5raihOLF8ub1plLDQpKVE9Xy5wWmUoTiksUT1fLnBoKFEsMSk7USYmKFE9bmV3IF8ub1plLE49Xy5wWmUoXy5xKHgsXy5weiwzMikpLE49Xy50KE4sMSksUT1fLmZoKFEsMSxOKSxfLlNiKEosXy5vWmUsNCxRKSl9UT1uZXcgaFplO18ua2ooeCxoWmUsMzQpJiYoTj1fLnEoeCxoWmUsMzQpLE49Xy50KE4sMSksS1llKFEsTikpO049bmV3IHRaZTtIPV8uZmgoTiwxLEguTWJhKTtOPW5ldyB2WmU7Tj1fLlpoKE4sMSwxKTtIPV8uR2ooSCw0LF8ud25jLE4pO18udWgoSiwxNCx0WmUsSCk7SD1aWWUobmV3IF8uYlllLF8uZWkoeCwzMykpOwpOPV8uZWkoeCwyMyk7SD1fLlpoKEgsMjMsTik7Sj1pWmUoXy5tWmUoSCxKKSxRKTtJWmUoYSxKLGIsYyxkLG0scil9KTtJWmUoYSx4LGIsYyxkLG0scik7cmV0dXJuIFByb21pc2UucmVzb2x2ZSgpfTsKR1plPWZ1bmN0aW9uKGEsYixjLGQsZSxmPVtdLGc9ITEpe3ZhciBoPWFaZSgkWWUoZFplKF8uV1llKFZZZShfLmFZZShfLlhYZShfLllYZShiWmUoXy5XWGUoXy5WWGUoUFllKE9ZZShfLlVYZShuZXcgXy5iWWUpLGEuSWEoKSksYS5GYigpfHwiIiksYS5QYSgpKSxhLkFiKCkpLGEuSWMoKSksKGIubmIoKXx8YS5CYSgpfHwiIikuc3Vic3RyaW5nKDAsMTAwKSksYi5QYigpfHxhLlJhKCkpLnNldEF0dHJpYnV0ZSgoYi5nZXRBdHRyaWJ1dGUoKXx8IiIpLnN1YnN0cmluZygwLDEwMCkpLGMuSWdhKSxhLlNhKCkpLGEuSWIoKSksTlllKE1ZZShuZXcgY1plLGIuQmUoKXx8YS5yYigpfHxLWmUoYS5vYSgpfHwhMSkpLGIuRmQoKXx8YS5PYSgpfHwiS05PV0xFREdFX1BBTkVMIikpLGEuWmEoKSksYS5vYSgpPzI6MSksaz1hLk5hKCksbT0hKGM9PW51bGx8fCFjLmFJYSk7ayYmKGEuSWEoKSYmay5lbmRzV2l0aCgiQGdvb2dsZS5jb20iKXx8bSkmJmZaZShoLGdaZShrKSk7az1fLmdoKGIsMyk7CmlmKGshPT1udWxsKXt0cnl7dmFyIG49Xy5YbGEoKDAsXy5ibWEpKGsuc3Vic3RyaW5nKDEpKSl8fDB9Y2F0Y2goeCl7bj0tMX1uIT09LTE/Xy5aWGUoaCxuKTovXlxkKyQvLnRlc3QoaykmJl8uWlhlKGgsTnVtYmVyKGspKX1uPV8ub3liKF8ubHUoKSk7Zm9yKHZhciBwIG9mIG4pcC5sZW5ndGg9PT0yJiZwWzBdLnN1YnN0cmluZygwLDQpPT09ImtwZmIiJiZuLmRlbGV0ZShwWzBdKTtpWmUoaCxsWmUoTFllKGtaZShLWWUobmV3IGhaZSxuLnRvU3RyaW5nKCkpKSkpKTtjLnlwYSE9bnVsbCYmXy5aaChoLDIzLGMueXBhKTtjLk14YSYmXy5maChoLDI5LGMuTXhhKTtjLll5YSE9PSIiJiZfLmZoKGgsMjQsYy5ZeWEpOyhjPT1udWxsPzA6Yy5hSWEpJiZfLiRoKGgsNDAsITApOyhjPT1udWxsPzA6Yy5KOWEpJiZfLiRoKGgsNDIsITApO2IuVmcoKSYmUVllKGgsYi5RZSgpKTsoYz09bnVsbD8wOmMua0lhKSYmXy4kaChoLDQzLCEwKTtwPShiLnJrKCl8fCIiKS5zcGxpdCgiLCIpLmZpbHRlcih4PT4KeCE9PSIiKTtwLmxlbmd0aD4wJiZfLkRrKGgsMjYscCk7Yi5IZigpJiZSWWUoaCxiLkxkKCkpO2IuemcoKSYmU1llKGgsYi5xZSgpKTtiLlJMKCkmJlRZZShoLGIuaGMoKSk7Yi5DZygpJiZVWWUoaCxiLlpkKCkpO2IuUUwoKSYmXy4kWGUoaCwoXy5MaihiLDQpfHwiIikuc3Vic3RyaW5nKDAsXy5icGM/MUUzOjIwMCkpO1hZZShoLCgoZz9MWmUoKTpfLkdnKCJxIil8fExaZSgpKXx8IiIpLnN1YnN0cmluZygwLDIwMCkpO2c9bmV3IF8ucHo7Yi5raigpJiYoZz1iLkthKCkpO0haZSgiZm9yY2VfYXV0aG9yaXR5X2Zvcl9jYXJkcyIpJiYocD1fLnEoZyxxWmUsMyl8fG5ldyBxWmUsbj1fLnEocCxyWmUsNil8fG5ldyByWmUsXy4kaChuLDIsITApLF8uU2IocCxyWmUsNixuKSxfLlNiKGcscVplLDMscCkpO2EuT2IoKSYmSFllKGcsYS5uYigpKTthPWQuZmlsdGVyKHg9Pih4PT1udWxsP3ZvaWQgMDp4Lml0YikmJih4PT1udWxsP3ZvaWQgMDp4Lk1iYSkpLm1hcCh4PT57dmFyIHo7dmFyIEI9Cm5ldyBzWmU7Qj1fLmZoKEIsMSx4Lk1iYSk7eD0oKHo9eC5pdGIpPT1udWxsP3ZvaWQgMDp6LlVUKXx8MDtyZXR1cm4gXy5aaChCLDIseCl9KTthLmxlbmd0aD4wJiZfLklqKGcsMTIsc1plLGEpO2Q9ZC5maWx0ZXIoeD0+eD09bnVsbD92b2lkIDA6eC5mUSkubWFwKHg9Pnt2YXIgeixCLEgsSjt2YXIgTj1uZXcgdFplO049Xy5maChOLDEseD09bnVsbD92b2lkIDA6eC5NYmEpO049Xy5maChOLDUseD09bnVsbD92b2lkIDA6eC5lcnJvck1lc3NhZ2UpO3ZhciBRPW5ldyB1WmUsWj0oKHo9eC5mUSk9PW51bGw/dm9pZCAwOnouQWNjKXx8MDt6PV8ubGsoUSwxLFopO1E9KChCPXguZlEpPT1udWxsP3ZvaWQgMDpCLnpjYyl8fDA7Qj1fLmxrKHosMixRKTt6PSgoSD14LmZRKT09bnVsbD92b2lkIDA6SC5zY3JvbGxXaWR0aCl8fDA7SD1fLmxrKEIsMyx6KTt4PSgoSj14LmZRKT09bnVsbD92b2lkIDA6Si5zY3JvbGxIZWlnaHQpfHwwO0o9Xy5sayhILDQseCk7cmV0dXJuIF8uR2ooTiwyLF8ud25jLApKKX0pO2QubGVuZ3RoPjAmJl8uSWooZywxNCx0WmUsZCk7Yi5JYigpJiZJWWUoZyxfLnJvYyhiKSk7Xy5tWmUoaCxnKTtpZihiLmVrKCkpe3ZhciByO1lZZShoLF8uZmNhKF8uUWEoKHI9Yj09bnVsbD92b2lkIDA6Xy5MaihiLDIxKSkhPW51bGw/cjoiIikpKX1pZihiLldoKCkpe2xldCB4O1lZZShoLF8uZmNhKF8uUWEoKHg9Yj09bnVsbD92b2lkIDA6Xy5MaihiLDI1KSkhPW51bGw/eDoiIikpKX1yPWMuT1JifHxbXTtyLmxlbmd0aD4wJiZfLkRrKGgsMjcscik7Yz1jLnNNYXx8IiI7YyE9PSIiJiZfLmZoKGgsNyxjKTtiLlBmKCkmJlpZZShoLGIucmIoKSk7ZS5sZW5ndGg+MCYmXy5JaihoLDM4LHhZZSxlKTtmJiZmLmxlbmd0aD4wJiZfLklqKGgsNDcseFllLGYpO3JldHVybiBofTtJWmU9ZnVuY3Rpb24oYSxiLGMsZCxlLGY9ITEsZyl7Zz09PXZvaWQgMD9NWmUoYSxiLGMsZSxmLF8uZWkoZCwyMikpOmcoYil9OwpNWmU9ZnVuY3Rpb24oYSxiLGMsZCxlPSExLGY9MCl7aWYoZSl7ZD0obmV3IF8uaFllKS5GcyhmKTt2YXIgZz1kLmthO2M9bmV3IENaZTtiPV8uU2IoYyxfLmJZZSwxLGIpO2I9Zy5jYWxsKGQsRFplLGIpO2EueWQuZmV0Y2goXy5pWWUuZ2V0SW5zdGFuY2UoYikpfWVsc2UgaWYoYy5oYygpKWQ9bmV3IHhaZSxnPV8uTGooYiw0KSxkPV8uZmgoZCwxLGcpLGQ9Xy5aaChkLDQsMyksZz1fLkxqKGIsMiksZD1fLmZoKGQsNSxnKSxnPV8uTGooYiwxKSxkPV8uZmgoZCw2LGcpLnNldEF0dHJpYnV0ZShfLkxqKGIsNSkpLGI9Xy5HaihkLDkseVplLGIpLGQ9bmV3IHpaZSxiPV8uU2IoZCx4WmUsMSxiKSxhLnlkLndjKEJaZS5nZXRJbnN0YW5jZShiKSk7ZWxzZXtjPV8uY2gobmV3IF8uYm8oe3BhdGg6Ii9mcF8yMDQiLHNlbmREYXRhSW5Vcmw6ITB9KSk7ZT1jLkdjO3RyeXtnPV8udG0oXy5CZCgiUXJ0eEsiKSkudG9TdHJpbmcoKX1jYXRjaChoKXtnPSIwIn1nPWUuY2FsbChjLCJhdXRodXNlciIsCmcpO2QmJmEua2E/Zy5HYygia2VmYiIsYS5rYShiKSkuR2MoImtwZmJmdHlwZSIsIjEiKS5sb2coKTpnLkdjKCJrZWZiIixiLkZjKCkpLmxvZygpfX07SFplPWZ1bmN0aW9uKGEpe3JldHVybiBfLkdnKCJvcHRzIikuc3BsaXQoIiwiKS5pbmNsdWRlcyhhKX07S1plPWZ1bmN0aW9uKGEpe3JldHVybiBhP0haZSgiZm9yY2VfYXV0aG9yaXR5X2Zvcl9jYXJkcyIpPzEzMzA5NzU6NDEwOTUzOjEwMDMzNH07TFplPWZ1bmN0aW9uKCl7dmFyIGE9Xy5sdSgpO3JldHVybiBhLmhhcygicSIpP2EuZ2V0KCJxIik6IiJ9OwpfLk5aZT1hc3luYyBmdW5jdGlvbihhLGIsYyxkLGU9W10sZj0hMSxnLGgsaz0hMSl7dmFyIG09KDAsXy5NZikoKSxuPW0oKTttPW0oMSk7dHJ5e2lmKGEub0goKS5wamMpe2xldCBCPURhdGUubm93KCk7aWYoYS5vYSE9PTAmJkItYS5vYTw9MjAwKXJldHVybiBQcm9taXNlLnJlc29sdmUoKTthLm9hPUJ9bGV0IHI9e0lnYTpiLlBnKCl8fCIiLFl5YTpiLm5iKCl8fCIiLHlwYTpiLkVhKCl8fDAsTXhhOm51bGwsT1JiOm51bGwsc01hOnZvaWQgMCxhSWE6Yi5TYSgpfHwhMSxKOWE6Yi5aYSgpfHwhMSxrSWE6Yi53YSgpfHwhMX0seD1fLnNvYygobmV3IF8uQXopLkFhKGIuUGEoKSkud2EoYi5SYSgpKS5zZXRBdHRyaWJ1dGUoYi5CYSgpKS5PYShiLkZiKCkpLk5hKGIuQWIoKSkuRWEoYi5LYSgpKS5CYShiLkFhKCkpLGIub2EoKSk7Yi5PYSgpJiZ4LlJhKF8uT2EoXy5iaihiLk5hKCkpLDQpKTt2YXIgcD1iLkVhKCk7cD0hKHA9PT00MHx8cD09PTQxfHxwPT09NDIpO2xldCB6PWMuQWEoYi5yYigpfHwKYy5LYSgpKS53YShiLklhKCl8fGMuRWEoKSk7bShhd2FpdCBuKGEuc3VibWl0KHoseCwhMSxyLGQsZSxwLCExLCExLGYsdm9pZCAwLGssZyxoKSkpO3JldHVybiBQcm9taXNlLnJlc29sdmUoKX1maW5hbGx5e24oKX19OwpPWmU9ZnVuY3Rpb24oYSxiPSExLGM9ITEpe3ZhciBkPXt9O2Eub0goKS5yamMmJmI/KE9iamVjdC5hc3NpZ24oZCx7IlB1c2gtSUQiOiJmZWVkcy9sb2EzcnQzZnZ5NXh4NyJ9KSxPYmplY3QuYXNzaWduKGQse0F1dGhvcml6YXRpb246IkJhc2ljIEtISnZTalFwWWtFa01WNHRTbVVoWVRwME1URTFWaTAzY2pNMFdXUkpKV2hhIn0pLEhaZSgiZGV2X3VwbG9hZCIpJiYoT2JqZWN0LmFzc2lnbihkLHsiUHVzaC1JRCI6ImZlZWRzL2JianZ0NTZ6dGxvZ3NuIn0pLE9iamVjdC5hc3NpZ24oZCx7QXV0aG9yaXphdGlvbjoiQmFzaWMgY2xNMU5ESktRMEJOSkNoVFZ5MXdSenBlUWloSE56TTJXVVY1TFNsalZtOGwifSkpKTpjPyhPYmplY3QuYXNzaWduKGQseyJQdXNoLUlEIjoiZmVlZHMvYWRvZWVzNDJ4NjU2YXEifSksT2JqZWN0LmFzc2lnbihkLHtBdXRob3JpemF0aW9uOiJCYXNpYyBLU2g0UTNNa2RqWkFOMDEyUkY1R09EcHpWbUV3TjFKb0lWNUFPVGRDTTJGUiJ9KSxIWmUoImRldl91cGxvYWQiKSYmCihPYmplY3QuYXNzaWduKGQseyJQdXNoLUlEIjoiZmVlZHMvenhrdjZtNXFieGppYmsifSksT2JqZWN0LmFzc2lnbihkLHtBdXRob3JpemF0aW9uOiJCYXNpYyBYa3RXVENwck1pbDRSRFV0TjBoWEpEbzVYalJCTlRnNUtEaDRLamRyTFdZaCJ9KSkpOihPYmplY3QuYXNzaWduKGQseyJQdXNoLUlEIjoiZmVlZHMva3hsd3VycDQ3bmhybzIifSksT2JqZWN0LmFzc2lnbihkLHsiWC1UZW5hbnQtSWQiOiJmZWVkYmFjay1pbWFnZSJ9KSxPYmplY3QuYXNzaWduKGQse0F1dGhvcml6YXRpb246IkJhc2ljIFptVmxaR0poWTJzdGFXMWhaMlU2ZHpKNU9EazNSVlZxUTFGTU1TMUsifSksSFplKCJkZXZfdXBsb2FkIikmJk9iamVjdC5hc3NpZ24oZCx7IlB1c2gtSUQiOiJmZWVkcy9lbXIzZGFtNXN1eHNwayJ9KSk7aWYoYT1fLktrYSgpKWE9Xy5jTGEobmV3IF8uZExhLGEpLGE9Xy5mTGEoYSksYT1fLmdMYShuZXcgXy5oTGEsYSksYT1fLk9hKGEub2EoKSw0KSxPYmplY3QuYXNzaWduKGQseyJYLUNsaWVudC1QY3R4IjphfSk7CnJldHVybiBkfTtQWmU9ZnVuY3Rpb24oKXt2YXIgYT1uZXcgVVJMKCJodHRwczovL2NvbnRlbnQtcHVzaC5nb29nbGVhcGlzLmNvbS91cGxvYWQvIik7SFplKCJkZXZfdXBsb2FkIikmJihhPW5ldyBVUkwoImh0dHBzOi8vY2RhLXB1c2gtZGV2LnNhbmRib3guZ29vZ2xlYXBpcy5jb20vdXBsb2FkLyIpKTtyZXR1cm4gYS50b1N0cmluZygpfTsKXy5RWmU9Y2xhc3MgZXh0ZW5kcyBfLnNve3N0YXRpYyBRYSgpe3JldHVybntzZXJ2aWNlOntDZTpfLkNyfX19b0goKXtyZXR1cm57cGpjOl8uTW9jLHFqYzpfLlFvYyxyamM6Xy5Yb2N9fWNvbnN0cnVjdG9yKGEpe3N1cGVyKCk7dGhpcy53YT10aGlzLmthPXZvaWQgMDt0aGlzLm9hPTA7dGhpcy5BYT1uZXcgTWFwO3RoaXMueWQ9YS5zZXJ2aWNlLkNlfWFzeW5jIHN1Ym1pdChhLGIsYyxkLGUsZj1bXSxnPSExLGg9ITEsaz0hMSxtPSExLG4scD0hMSxyLHgpe249W107ciYmdGhpcy5vSCgpLnFqYyYmbi5wdXNoKFByb21pc2UucmVzb2x2ZSh7ZlE6cn0pKTtyZXR1cm4gUHJvbWlzZS5hbGwobikudGhlbih6PT57dmFyIEI9W107ei5mb3JFYWNoKEg9PntIJiZCLnB1c2godGhpcy5CbGEoSCxwKSl9KTtyZXR1cm4gUHJvbWlzZS5hbGwoQil9KS50aGVuKHo9PkpaZSh0aGlzLGEsYixjLGQsZSxmLGcsaCxrLG0seix4KSl9YXN5bmMgQmxhKGEsYj0hMSl7dmFyIGMsZD1PWmUodGhpcywhIShhPT0KbnVsbD8wOihjPWEuZlEpPT1udWxsPzA6Yy5yZWIpLCEoYT09bnVsbHx8IWEueHpiKSksZTtjPVBaZSghIShhPT1udWxsPzA6KGU9YS5mUSk9PW51bGw/MDplLnJlYikpO3RoaXMud2F8fCh0aGlzLndhPW5ldyBKWWUpO3ZhciBmO2lmKChhPT1udWxsPzA6YS5mUSkmJihhPT1udWxsPzA6KGY9YS5mUSk9PW51bGw/MDpmLnJlYikpZT1hLmZRLnJlYjtlbHNlIGlmKGE9PW51bGw/MDphLml0YillPWEuaXRiLmJsb2I7ZWxzZSBpZihhPT1udWxsPzA6YS54emIpZT1hLnh6YjtlbHNlIHJldHVybiBfLlZlKEVycm9yKCJ3biIpKSxQcm9taXNlLnJlc29sdmUobnVsbCk7dmFyIGc9Xy5ZJGMoYyxkLGUsIiIsYik7Yj1uZXcgUHJvbWlzZShoPT57Zy5saXN0ZW5PbmNlKCJuIiwoKT0+e2cuY0RhKCkhPT0yMDA/KF8uVmUoRXJyb3IoInhuIikpLGcuS3coKSYmKGEuZXJyb3JNZXNzYWdlPWcuS3coKSxoKGEpKSk6Zy5LdygpJiYoYS5NYmE9Zy5LdygpLGgoYSkpfSl9KTtnLnJ1bigpO3JldHVybiBifX07Cl8uYWcoXy5nWWUsXy5RWmUpOwpfLnYoKTsKfWNhdGNoKGUpe18uX0R1bXBFeGNlcHRpb24oZSl9CnRyeXsKXy51KCJMRms1OWQiKTsKCl8udigpOwp9Y2F0Y2goZSl7Xy5fRHVtcEV4Y2VwdGlvbihlKX0KdHJ5ewp2YXIgbVhlLG5YZSxxWGUsclhlLHRYZTtfLm9YZT1mdW5jdGlvbihhKXsoe0JGZDpiPSExfT17fSk7dmFyIGI7YS5oYXNBdHRyaWJ1dGUoImFoYmFrIikmJm1YZShhKTthLnF1ZXJ5U2VsZWN0b3JBbGwoIlthaGJha10iKS5mb3JFYWNoKG1YZSk7blhlKGEsYil9O18ucFhlPWZ1bmN0aW9uKGEpe2EuaGFzQXR0cmlidXRlKCJhcmlhLWhpZGRlbiIpfHwoYS5zZXRBdHRyaWJ1dGUoImFoYmFrIiwidHJ1ZSIpLGEuc2V0QXR0cmlidXRlKCJhcmlhLWhpZGRlbiIsInRydWUiKSl9O21YZT1mdW5jdGlvbihhKXthLnJlbW92ZUF0dHJpYnV0ZSgiYWhiYWsiKTthLnJlbW92ZUF0dHJpYnV0ZSgiYXJpYS1oaWRkZW4iKX07Cl8uc1hlPWZ1bmN0aW9uKGEpe2lmKCFhLmhhc0F0dHJpYnV0ZSgiZGF0YS10aWJhayIpKXthLnRhZ05hbWUhPT0iQSJ8fGEuaGFzQXR0cmlidXRlKCJocmVmIil8fGEuc2V0QXR0cmlidXRlKCJkYXRhLXRpYmFrIiwibm8taHJlZiIpO2lmKGEuaGFzQXR0cmlidXRlKCJ0YWJpbmRleCIpKXt2YXIgYj1hLmdldEF0dHJpYnV0ZSgidGFiaW5kZXgiKTtxWGUoYSxiKX1lbHNlKF8udG1kKGEsMCx7WFFiOiExfSl8fHJYZShhKSkmJnFYZShhKTtmb3IoYj0wO2I8YS5jaGlsZHJlbi5sZW5ndGg7YisrKV8uc1hlKGEuY2hpbGRyZW5bYl0pfX07Cm5YZT1mdW5jdGlvbihhLGIpe3ZhciBjPSExO2lmKGEuaGFzQXR0cmlidXRlKCJ0YWJpbmRleCIpJiZhLmhhc0F0dHJpYnV0ZSgiZGF0YS10aWJhayIpKXtjPSEwO3ZhciBkPWEuZ2V0QXR0cmlidXRlKCJkYXRhLXRpYmFrIik7ZD09PSJub25lIj9hLnJlbW92ZUF0dHJpYnV0ZSgidGFiaW5kZXgiKTphLnNldEF0dHJpYnV0ZSgidGFiaW5kZXgiLGQpO2EucmVtb3ZlQXR0cmlidXRlKCJkYXRhLXRpYmFrIil9ZWxzZSBhLmhhc0F0dHJpYnV0ZSgiZGF0YS10aWJhayIpJiZhLnJlbW92ZUF0dHJpYnV0ZSgiZGF0YS10aWJhayIpO3ZhciBlPXZvaWQgMDtkPSgpPT57aWYoZSE9PXZvaWQgMClyZXR1cm4gZTt2YXIgaD1nZXRDb21wdXRlZFN0eWxlKGEpO3JldHVybiBlPSFhLmluZXJ0JiZoLmRpc3BsYXkhPT0ibm9uZSImJmgudmlzaWJpbGl0eSE9PSJoaWRkZW4iJiZoLnZpc2liaWxpdHkhPT0iY29sbGFwc2UifTt2YXIgZj1udWxsO2ImJihmPWMmJl8udG1kKGEsMCx7WFFiOiExfSkmJmQoKT8KYTpudWxsKTtmb3IoYz0wO2M8YS5jaGlsZHJlbi5sZW5ndGg7YysrKXt2YXIgZz1iJiZmPT09bnVsbCYmZCgpO2c9blhlKGEuY2hpbGRyZW5bY10sZyk7IWYmJmcmJihmPWcpfXJldHVybiBmfTtxWGU9ZnVuY3Rpb24oYSxiPSJub25lIil7YS5zZXRBdHRyaWJ1dGUoInRhYmluZGV4IiwiLTEiKTthLnNldEF0dHJpYnV0ZSgiZGF0YS10aWJhayIsYil9O3JYZT1mdW5jdGlvbihhKXtpZighKGEgaW5zdGFuY2VvZiBIVE1MRWxlbWVudCkpcmV0dXJuITE7aWYoYS5oYXNBdHRyaWJ1dGUoImlzLXNjcm9sbGFibGUtYmFrIikpcmV0dXJuITA7Zm9yKGxldCBiPTA7Yjx0WGUubGVuZ3RoO2IrKyl7bGV0IGM9dFhlW2JdO2lmKGEuc3R5bGUub3ZlcmZsb3dYPT09Y3x8YS5zdHlsZS5vdmVyZmxvd1k9PT1jKXJldHVybiEwfXJldHVybiExfTt0WGU9WyJzY3JvbGwiLCJhdXRvIl07Cn1jYXRjaChlKXtfLl9EdW1wRXhjZXB0aW9uKGUpfQp0cnl7Cl8ubFhlPV8ua2MoInp4MzBZIixbXy5kTSxfLmZyLF8uV3FdKTsKfWNhdGNoKGUpe18uX0R1bXBFeGNlcHRpb24oZSl9CnRyeXsKXy5mTT1jbGFzcyBleHRlbmRzIF8ubHtjb25zdHJ1Y3RvcihhKXtzdXBlcihhKX1vYSgpe3JldHVybiBfLmRpKHRoaXMsMSl9UmEoKXtyZXR1cm4gXy5Maih0aGlzLDIpfUJhKCl7cmV0dXJuIF8uZ2godGhpcywzKX1JYSgpe3JldHVybiBfLmRpKHRoaXMsNCl9UGIoKXt2YXIgYT1fLmp6KCk7Xy5maCh0aGlzLDUsYSl9SmIoKXtyZXR1cm4gXy5waCh0aGlzLDUpfVBhKCl7cmV0dXJuIF8uTGoodGhpcyw1KX1YYigpe3ZhciBhPV8uaXooKTtfLmZoKHRoaXMsNixhKX1RYigpe3JldHVybiBfLnBoKHRoaXMsNil9QWIoKXtyZXR1cm4gXy5Maih0aGlzLDYpfUljKCl7cmV0dXJuIF8uTGoodGhpcywzNil9U2EoKXtyZXR1cm4gXy5Raih0aGlzLDgsXy5vaCgpKX1JYigpe3JldHVybiBfLlJqKHRoaXMsMTAsXy5vaCgpKX1oYygpe3JldHVybiBfLmNrKHRoaXMsMTMpfUZiKCl7cmV0dXJuIF8uZ2godGhpcywxNCl9T2IoKXtyZXR1cm4gXy5waCh0aGlzLDE2KX1uYigpe3JldHVybiBfLkxqKHRoaXMsCjE2KX1yYigpe3JldHVybiBfLmRrKHRoaXMsMjMpfUFhKGEpe3JldHVybiBfLmxrKHRoaXMsMjMsYSl9S2EoKXtyZXR1cm4gXy5jaSh0aGlzLDIzKX1PYSgpe3JldHVybiBfLmdoKHRoaXMsMjQpfXdhKGEpe3JldHVybiBfLmZoKHRoaXMsMjQsYSl9RWEoKXtyZXR1cm4gXy5Maih0aGlzLDI0KX1OYSgpe3JldHVybiBfLkxqKHRoaXMsMzMpfVphKCl7cmV0dXJuIF8uZGkodGhpcywzOSl9fTtfLmZNLnByb3RvdHlwZS5YYT0ib3dzbEtkIjsKfWNhdGNoKGUpe18uX0R1bXBFeGNlcHRpb24oZSl9CnRyeXsKXy5qWGU9ZnVuY3Rpb24oYSxiKXtyZXR1cm4gXy5maChhLDIsYil9O18ua1hlPWZ1bmN0aW9uKGEsYil7cmV0dXJuIF8uZmgoYSwzLGIpfTsKfWNhdGNoKGUpe18uX0R1bXBFeGNlcHRpb24oZSl9CnRyeXsKXy5pWGU9Xy5rYygieFFJd2JjIixbXSk7Cn1jYXRjaChlKXtfLl9EdW1wRXhjZXB0aW9uKGUpfQp0cnl7Cl8udSgiengzMFkiKTsKdmFyIHZYZSxBWGUsQlhlLEZYZSx3WGUseFhlLHlYZTsKXy51WGU9ZnVuY3Rpb24oYSxiLGMpe3ZhciBkPWEuQWIoKXx8IiIsZT1fLmNpKGEsMTMpPT09NXx8Xy5jaShhLDEzKT09PTE3fHxfLmNpKGEsMTMpPT09MTg/Ik1hZ2lHZW5lcmFsRmVlZGJhY2siOiJHZW5lcmFsRmVlZGJhY2siO2M9Xy5zb2MoXy5hWGUobmV3IF8uQXosMikuc2V0QXR0cmlidXRlKGEuZ2V0QXR0cmlidXRlKCl8fGR8fGUpLk9hKGEuRmIoKXx8KGM9PW51bGw/dm9pZCAwOl8ubm0oYykpKS5FYShhLkthKCkpLlJhKF8uTGooYSwyMSkpLm9hKGEuUGEoKXx8MSkuSWEoZCkuT2IoITApLGEucmIoKXx8MCkuRnMoYS5nZXRWaWV3ZXJUeXBlKCl8fDApO2EuSWIoKSYmYy5CYShfLnJvYyhhKSk7Xy5waChiLDIpP2Mud2EoXy5naChiLDIpKTpjLndhKCJ1bmtub3duIik7Xy5waChiLDMpP2MuQWEoYi5CYSgpKTpjLkFhKCJVbmtub3duIEVudGl0eSIpO18ud2UoYiwyMykmJmMuWmEoYi5LYSgpKTtfLnBoKGIsMjQpJiZjLlNhKGIuRWEoKSk7cmV0dXJuIGN9OwpfLmdNPWZ1bmN0aW9uKGEsYil7cmV0dXJuIGEuY2xvc2VzdChfLmxPYShiKSkuZ2V0RGF0YShiKX07dlhlPWZ1bmN0aW9uKGEpe3ZhciBiPW5ldyBNYXA7YS5zcGxpdCgifjsmIikuZm9yRWFjaChjPT57dmFyIFtkLC4uLmVdPWMuc3BsaXQoIn46JiIpO2QhPT0iIj9iLnNldChkLGUuam9pbigifjomIikpOl8uVmUoRXJyb3IoImhpYCIrYykpfSk7cmV0dXJuIGJ9OwpBWGU9ZnVuY3Rpb24oYSxiLGMpe3ZhciBkPV8uc29jKF8uYVhlKG5ldyBfLkF6LDIpLnNldEF0dHJpYnV0ZSgiIikuT2EoXy5wbShfLmdNKGIsInZlZCIpLCIiKSkuTmEoXy5qcGMoXy56aShiKSkucmVwbGFjZSgvXG57Myx9L2csIlxuXG4iKS50cmltKCkpLkVhKGEuS2EoKSkuUmEoXy5MaihhLDIxKSkub2EoYS5QYSgpfHwxKS5JYShhLkFiKCl8fCIiKSxhLnJiKCl8fDApLkZzKGEuZ2V0Vmlld2VyVHlwZSgpfHwwKTthLkliKCkmJmQuQmEoXy5yb2MoYSkpO2E9Xy5nTShiLCJmYm1haW4iKTthLkxiKCkmJihhPXdYZShfLm5iYShfLnBtKGEsIiIpKSksXy5naChhLDIpJiZkLndhKF8uZ2goYSwyKSksXy5naChhLDMpJiZkLkFhKF8uZ2goYSwzKSksXy5naChhLDcpJiZkLklhKF8uZ2goYSw3KSksXy51eihhKSYmZC5vYShfLnV6KGEpKSxfLmRrKGEsMTIpJiZkLlphKF8uZGsoYSwxMikpLF8uZ2goYSwxMykmJmQuU2EoXy5naChhLDEzKSksXy5xKGEsXy5weiwxNCkmJmQuRWEoXy5xKGEsCl8ucHosMTQpKSxhLmdldEF0dHJpYnV0ZSgpJiZkLnNldEF0dHJpYnV0ZShhLmdldEF0dHJpYnV0ZSgpKSxfLmlrKGEsMjApJiZfLnNvYyhkLF8uaWsoYSwyMCkpLGEuZ2V0Vmlld2VyVHlwZSgpJiZkLkZzKGEuZ2V0Vmlld2VyVHlwZSgpKSk7YT1fLmdNKGIsImF0dHJpZCIpO2EuTGIoKSYmZC5zZXRBdHRyaWJ1dGUoXy5ubShhKSk7YT1fLmdNKGIsInJlbnRpdHkiKTthLkxiKCkmJmQud2QoXy5ubShhKSk7YT1fLmdNKGIsInNlY2lkcyIpO2EuTGIoKSYmZC5VaihfLm5tKGEpKTthPV8uZ00oYiwiZG9jaWQiKTthLkxiKCkmJmQuUGMoXy5ubShhKSk7YT1fLmdNKGIsInRzb3VyY2VpZCIpO2EuTGIoKSYmZC5RYihfLnNtKGEpKTthPV8uZ00oYiwibHBhZ2UiKTthLkxiKCkmJmQua2QoXy5ubShhKSk7YT1fLmdNKGIsImx5cmljaWQiKTthLkxiKCkmJmQuU3koXy5ubShhKSk7YT1fLmdNKGIsImVudGl0eWlkIik7YS5MYigpP2Qud2EoXy5ubShhKSk6Xy5waChjLDIpP2Qud2EoXy5naChjLAoyKSk6ZC53YSgidW5rbm93biIpO2E9Xy5nTShiLCJlbnRpdHluYW1lIik7YS5MYigpP2QuQWEoXy5ubShhKSk6Xy5waChjLDMpP2QuQWEoYy5CYSgpKTpkLkFhKCJVbmtub3duIEVudGl0eSIpO18uZ00oYiwiaGltZyIpLkxiKCkmJmQuVWMoITApO2M9Xy5nTShiLCJmdGFnIik7Yy5MYigpJiZfLnNvYyhkLF8uc20oYykpO2M9Xy5nTShiLCJmdHlwZSIpO2MuTGIoKSYmZC5vYShfLnNtKGMpKTtjPV8uZ00oYiwiZnBpZCIpO2MuTGIoKSYmZC5aYShfLnNtKGMpKTtjPV8uZ00oYiwiZmJrdCIpO2MuTGIoKSYmZC5TYShfLm5tKGMpKTtpZihjPV8ucG0oXy5nTShiLCJmYmN0eCIpLCIiKSljPV8uZFhlKGMpLGM9KGE9ZC5LYSgpKT94WGUoYSxuZXcgXy5OQ2EoeVhlKGMpKSk6YyxkLkVhKGMpOyhjPV8ucG0oXy5nTShiLCJlY3R4IiksIiIpKSYmZC5vRShjKTtpZihjPV8ucG0oXy5nTShiLCJzb3JpSWQiKSwiIikpYT1fLm1vYyhfLnpYZShkKSksXy5maChhLDEsYyk7aWYoYz1fLnBtKF8uZ00oYiwKImZidXJsIiksIiIpKWE9Xy56WGUoZCksXy5FayhhLDksYyk7Yz1fLkNkKF8uZ00oYiwib25zIiksMCk7Yz4wJiYoYT1fLnpYZShkKSxfLmxrKGEsMTYsYykpO2lmKGI9Xy5wbShfLmdNKGIsInBzZCIpLCIiKSljPXZYZShiKSxjLnNpemU+MCYmKGI9Xy56WGUoZCksXy5VRGEoYiw4LGMpKTtyZXR1cm4gZH07QlhlPWFzeW5jIGZ1bmN0aW9uKGEpe3JldHVybiBuZXcgUHJvbWlzZSgoYixjKT0+e3ZhciBkPW5ldyBGaWxlUmVhZGVyO2Qub25sb2FkPSgpPT57YihkLnJlc3VsdCl9O2Qub25lcnJvcj0oKT0+e2MoRXJyb3IoImppIikpfTtkLnJlYWRBc0RhdGFVUkwoYSl9KX07Cl8uQ1hlPWFzeW5jIGZ1bmN0aW9uKCl7dmFyIGE9KDAsXy5NZikoKSxiPWEoKTthPWEoMSk7dHJ5e2xldCBjPVJlZ0V4cCgiXig/OmJsb2I6aHR0cHM6Ly98aHR0cHM6Ly9sZW5zXFwudXNlcmNvbnRlbnRcXC5nb29nbGVcXC5jb20vYmFuYW5hKSIpLGQ9Xy5Fbyhkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuY2xvbmVOb2RlKCEwKSk7ZC5maW5kKCJbanNuYW1lPXVaa2poYl0iKS5yZW1vdmUoKTtkLmZpbmQoIltjbGFzcz1nYl9zXSIpLnJlbW92ZSgpO2lmKF8uR29jKXtsZXQgZT1kLmZpbmQoImltZyIpLmZpbHRlcihmPT57Zj1mLmdldEF0dHJpYnV0ZSgic3JjIil8fCIiO3JldHVybiBjLnRlc3QoZil9KS5tYXAoYXN5bmMgZj0+e3ZhciBnPSgwLF8uTWYpKCksaD1nKCk7Zz1nKDEpO3RyeXtsZXQgaz1mLmdldEF0dHJpYnV0ZSgic3JjIil8fCIiLG09Zyhhd2FpdCBoKGZldGNoKGspKSksbj1nKGF3YWl0IGgobS5ibG9iKCkpKSxwPWcoYXdhaXQgaChCWGUobikpKTtmLnNyYz1fLkZjKHApLnRvU3RyaW5nKCl9ZmluYWxseXtoKCl9fSk7CmEoYXdhaXQgYihQcm9taXNlLmFsbChlKSkpO3JldHVybntvOWI6ZCxBY2M6d2luZG93LmlubmVyV2lkdGgsemNjOndpbmRvdy5pbm5lckhlaWdodCxzY3JvbGxXaWR0aDpkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuc2Nyb2xsV2lkdGgsc2Nyb2xsSGVpZ2h0OmRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5zY3JvbGxIZWlnaHR9fXJldHVybiBQcm9taXNlLnJlc29sdmUoe285YjpkLEFjYzp3aW5kb3cuaW5uZXJXaWR0aCx6Y2M6d2luZG93LmlubmVySGVpZ2h0LHNjcm9sbFdpZHRoOmRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5zY3JvbGxXaWR0aCxzY3JvbGxIZWlnaHQ6ZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LnNjcm9sbEhlaWdodH0pfWZpbmFsbHl7YigpfX07Cl8uRFhlPWZ1bmN0aW9uKGEsYj0iIil7aWYoXy5laShhLDEpPT09Mil7dmFyIGM9YS5uYigpfHwiIixkPWEuZ2V0QXR0cmlidXRlKCl8fCIiO2E9YS5GYigpfHwiIjtjIT09IiImJmMhPT0iVW5rbm93biBFbnRpdHkiJiZkIT09IiImJmEhPT0iInx8Xy5WZShFcnJvcigidG5gIitKU09OLnN0cmluZ2lmeSh7ZW50aXR5TmFtZTpjLGF0dHJpYnV0ZTpkLHZpc3VhbEVsZW1lbnQ6YX0pKyJgIitiKSl9fTtfLkVYZT1mdW5jdGlvbihhLGIpe3JldHVybiBfLnpPYihfLkN6KGEpLGM9PmMuZ2V0RGF0YShiKS5MYigpKS5zaXplKCk+MH07RlhlPWZ1bmN0aW9uKGEsYil7dmFyIGM9Yj8iLTEiOiIwIjtiP18uYm4oYSkmJihhLnNldEF0dHJpYnV0ZSgidGFiaW5kZXgiLGMpLGEuc2V0QXR0cmlidXRlKCJrcC1mZWVkYmFjay1lbmFibGVkIiwidHJ1ZSIpKTphLmdldEF0dHJpYnV0ZSgia3AtZmVlZGJhY2stZW5hYmxlZCIpJiYoYS5zZXRBdHRyaWJ1dGUoInRhYmluZGV4IixjKSxhLnJlbW92ZUF0dHJpYnV0ZSgia3AtZmVlZGJhY2stZW5hYmxlZCIpKX07Cl8uR1hlPWZ1bmN0aW9uKGEpe3JldHVybiBfLkVYZShhLCJrZWZiRmhzT3B0aW4iKX07Xy56WGU9ZnVuY3Rpb24oYSl7cmV0dXJuIF8uQmooYSxfLnB6LDE5KX07d1hlPV8uZGMoXy5yeik7eFhlPV8uSGhhKF8uWm5jKTt5WGU9Xy5ZYihfLlpuYyk7dmFyIEhYZT1uZXcgU2V0KFsiVEFCTEUiLCJUSEVBRCIsIlRCT0RZIiwiVEZPT1QiLCJUUiJdKSxJWGU9ZnVuY3Rpb24oYSl7cmV0dXJuKGE9YS5JYi5lbCgpKT9hOm51bGx9LEpYZT1mdW5jdGlvbihhLGIsYyl7Yi5maW5kKCIuZ21sU1ZiIikucmVtb3ZlKCk7dmFyIGQ9Xy5nTShiLCJhdHRyaWQiKS5zdHJpbmcoIiIpPT09ImltYWdlcyB1bml2ZXJzYWwiLGU9Xy5jayhhLmdDLDEpLGY9Yjt2YXIgZz1fLnBtKF8uZ00oZiwiYXR0cmlkIiksIiIpO2Y9Xy5DZChfLmdNKGYsInRzb3VyY2VpZCIpLDApO2c9IWEuRWF8fGchPT0iaW1hZ2UiJiZnIT09IkNvcmVBbnN3ZXJGaXJzdEltYWdlUmVzdWx0IiYmZyE9PSJWaXN1YWxEaWdlc3RGaXJzdEltYWdlUmVzdWx0IiYmZyE9PSJWaXN1YWxEaWdlc3RJbWFnZVJlc3VsdCImJmchPT0iVHJhdmVsSW1hZ2VGZWVkYmFjayI/ITE6YS53YT9mIT09NDA6IShnPT09IkNvcmVBbnN3ZXJGaXJzdEltYWdlUmVzdWx0Inx8Zz09PSJWaXN1YWxEaWdlc3RGaXJzdEltYWdlUmVzdWx0Iik7CmM9KGMmJmQ/YS5uYjpkP2EuQWI6ZT9nP2EuRmI6YS5aYTphLnJiKS5lbCgpLmNsb25lTm9kZSghMCk7Xy5PZyhjLGEuZ2V0Um9vdCgpLmVsKCkpO0hYZS5oYXMoYi5lbCgpLnRhZ05hbWUpJiYoYj1fLkFvKGIsIlRELCBUSCIpLmZpcnN0KCkpO3ZhciBoLGssbSxuO2lmKGQ9Yi55YygiZGF0YS1yZXBvcnQtZmVlZGJhY2stYWJvdXQtY29udGV4dCIpfHwoKGg9Yi5maW5kKCJbZGF0YS1yZXBvcnQtZmVlZGJhY2stYWJvdXQtY29udGV4dF0iKS5maXJzdCgpfHxiLmNsb3Nlc3QoIltkYXRhLXJlcG9ydC1mZWVkYmFjay1hYm91dC1jb250ZXh0XSIpLmZpcnN0KCkpPT1udWxsP3ZvaWQgMDpoLnljKCJkYXRhLXJlcG9ydC1mZWVkYmFjay1hYm91dC1jb250ZXh0IikpfHxiLnljKCJhcmlhLWxhYmVsIil8fCgoaz1iLmZpbmQoIlthcmlhLWxhYmVsXSIpLmZpcnN0KCkpPT1udWxsP3ZvaWQgMDprLnljKCJhcmlhLWxhYmVsIikpfHxfLmpwYyhiLmVsKCksITApfHwoKG09Yi5jbG9zZXN0KCJbYXJpYS1sYWJlbF0iKS5maXJzdCgpKT09Cm51bGw/dm9pZCAwOm0ueWMoImFyaWEtbGFiZWwiKSl8fCgobj1iLmZpbmQoImltZ1thbHRdIikuZmlyc3QoKSk9PW51bGw/dm9pZCAwOm4ueWMoImFsdCIpKSloPWAke2MuZ2V0QXR0cmlidXRlKCJhcmlhLWxhYmVsIil9ICR7ZH1gLGM9PW51bGx8fGMuc2V0QXR0cmlidXRlKCJhcmlhLWxhYmVsIixoKTtiLmVsKCkuYXBwZW5kQ2hpbGQoYyk7YTp7aD1iO2lmKCFfLnBoKGEuZ0MsMikmJiFfLnBoKGEuZ0MsMykmJihrPV8uZ00oaCwiZW50aXR5aWQiKS5zdHJpbmcoIiIpLG09Xy5nTShoLCJlbnRpdHluYW1lIikuc3RyaW5nKCIiKSxrPT09IiImJm09PT0iIikpe2E9ITA7YnJlYWsgYX1oPV8uZ00oaCwiYXR0cmlkIikuc3RyaW5nKCIiKTthPWg9PT0iIj8hMDpfLmNrKGEuZ0MsMSk/aC5lbmRzV2l0aCgic2lkZXdheXMiKXx8aD09PSJkZXNjcmlwdGlvbiJ8fGg9PT0iVmlzdWFsRGlnZXN0V2ViUmVzdWx0Inx8aD09PSJWaXN1YWxEaWdlc3RTb2NpYWxNZWRpYVJlc3VsdCJ8fGg9PT0iVmlzdWFsRGlnZXN0VmlkZW9SZXN1bHQiOgohMX1hJiZiLmZpbmQoIi5nbWxTVmIiKS5oaWRlKCk7Yi5lbCgpLmNsb3Nlc3QoIlthaGJha10iKSYmKF8ucFhlKGMpLF8uc1hlKGMpKX0sS1hlPWZ1bmN0aW9uKGEsYil7RlhlKGEuZWwoKSxiKTt2YXIgYz1hLmVsKCkuY2xvc2VzdCgnW3JvbGU9Imxpc3RpdGVtIl0gW3JvbGU9ImJ1dHRvbiJdLFxuICAgICAgW3JvbGU9Imxpc3RpdGVtIl0gW3JvbGU9ImxpbmsiXScpO2MmJkZYZShjLGIpO18ueG8oYS5jaGlsZHJlbigpLGQ9PntiP2QuZWwoKS5zZXRBdHRyaWJ1dGUoImluZXJ0IiwiIik6ZC5lbCgpLnJlbW92ZUF0dHJpYnV0ZSgiaW5lcnQiKX0pfSxMWGU9ZnVuY3Rpb24oYSxiKXtpZighYS5HYXx8IV8uTGooYS5nQyw5KXx8Xy5yb2MoYS5tb2RlbC5nZXRTdGF0ZSgpKT09PV8uTGooYS5nQyw5KSl7dmFyIGM9Xy5nTShhLmNvbnRhaW5lciwidmVkIik7aWYoIWMuTGIoKSl7dmFyIGQ9YS5nZXRSb290KCkuY2xvc2VzdChfLnRvKCJrcC13aG9sZXBhZ2Utb3NycCIpKS5maXJzdCgpO2QmJgooYz1fLmdNKGQsInZlZCIpKX1kPWEubW9kZWwuZ2V0U3RhdGUoKTtjPV8udVhlKGQsYS5nQyxjKTtfLkRYZShjLGI/IkdlbmVyYWwgZmVlZGJhY2sgaXMgcGFzc2l2ZWx5IHBpY2tlZCBkdWUgdG8gbm8gcmVwb3J0YWJsZSI6IkdlbmVyYWwgZmVlZGJhY2sgaXMgcGlja2VkIGJ5IHRoZSBlbmQgdXNlci4iKTthLm1vZGVsLk1mKGMpfX0sTlhlPWFzeW5jIGZ1bmN0aW9uKGEsYixjKXt2YXIgZD0oMCxfLk1mKSgpLGU9ZCgpO2Q9ZCgxKTt0cnl7bGV0IGY9SVhlKGEpO2YmJmEuRmcmJihmLnN0eWxlLndpZHRoPWAke01hdGgubWF4KGMub2Zmc2V0V2lkdGgtOCwyMTgpfXB4YCxkKGF3YWl0IGUoYS5GZy5vcGVuKGYsXy5zeShhLlNhLCgpPT57YS5vYSYmKCgwLF8ua28pKGEub2EpLGEub2E9bnVsbCk7YS5CYSgpO3JldHVybiEwfSkpKSksZChhd2FpdCBlKF8uRHYoW25ldyBfLmZvKGYsInNob3ciKV0se3pjOmJ9KSkpLE1YZShhLGYsYiksXy5McSgpKX1maW5hbGx5e2UoKX19LE1YZT1mdW5jdGlvbihhLApiLGMpe3JlcXVlc3RBbmltYXRpb25GcmFtZSgoKT0+e3t2YXIgZD1iLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO2Qud2lkdGg+MCYmKGEuS2E9ZC53aWR0aCk7ZC5oZWlnaHQ+MCYmKGEuSWE9ZC5oZWlnaHQpO3ZhciBlPWQud2lkdGh8fGEuS2E7dmFyIGY9ZC5oZWlnaHR8fGEuSWE7dmFyIGc7bGV0IG49KChnPWMuY2hpbGRyZW5bMF0pPT1udWxsP3ZvaWQgMDpnLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpKXx8Yy5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtnPXdpbmRvdy5pbm5lckhlaWdodDtkJiZuPyhkPW4udG9wK3dpbmRvdy5zY3JvbGxZLGU9bi5yaWdodC1lLGU8MCYmKGU9NCksZj17bGVmdDpNYXRoLm1heChlLDApLHRvcDpuLmJvdHRvbStmKzQ8Zz9kK24uaGVpZ2h0KzQ6ZC1mLTR9KTpmPXZvaWQgMH1pZihmJiYoYi5zdHlsZS5sZWZ0PWAke2YubGVmdH1weGAsYi5zdHlsZS50b3A9YCR7Zi50b3B9cHhgLGIpKXthLnR1fHwoYS50dT1uZXcgXy5HbWQoYikpO3ZhciBoLGs7KGg9CmEudHUpPT1udWxsfHwoaz1fLkZtZChoKSk9PW51bGx8fGsuZm9jdXMoKTt2YXIgbTsobT1hLnR1KT09bnVsbHx8Xy5EbWQobSl9fSl9LE9YZT1jbGFzcyBleHRlbmRzIF8uaHN7c3RhdGljIFFhKCl7cmV0dXJue0xsOntjMDpfLmlYZX0sbW9kZWw6e1JQOl8uZU19LGpzZGF0YTp7Z0M6Xy5mTX0sc2VydmljZTp7TmI6Xy5MdSxvdmVybGF5Ol8ub3l9fX1jb25zdHJ1Y3RvcihhKXtzdXBlcigpO3RoaXMua2E9bnVsbDt0aGlzLk9hPXRoaXMuZ2V0RGF0YSgiZmhzIikuTGIoKXx8Xy5HWGUodGhpcy5nZXRSb290KCkpO3RoaXMuR2E9Xy5Ib2M7dGhpcy5FYT1fLnpvYyYmXy5Bb2M7dGhpcy53YT0hMTt0aGlzLk5hPW51bGw7dGhpcy50dT12b2lkIDA7dGhpcy5LYT10aGlzLklhPTA7dGhpcy5YaT1udWxsO3RoaXMubW9kZWw9YS5tb2RlbC5SUDthLkxsLmMwJiYodGhpcy5tb2RlbD1hLkxsLmMwKTt0aGlzLmdDPWEuanNkYXRhLmdDO3RoaXMuTmI9YS5zZXJ2aWNlLk5iO3RoaXMuY29udGFpbmVyPQpfLkN6KHRoaXMuZ2V0Um9vdCgpKTt0aGlzLlphPXRoaXMuSmEoIlk0SEV2YyIpO3RoaXMucmI9dGhpcy5KYSgiVGxIc01kIik7dGhpcy5BYj10aGlzLkphKCJyUDVQaGUiKTt0aGlzLm5iPXRoaXMuSmEoInlXM01hYyIpO3RoaXMuRmI9dGhpcy5KYSgiRnBjTEEiKTt0aGlzLkliPXRoaXMuSmEoIlRUb3V0ZSIpO2lmKHRoaXMuRWEpe3RoaXMuRmc9YS5zZXJ2aWNlLm92ZXJsYXk7dGhpcy5TYT10aGlzLkFhKCk7dGhpcy5vYT1udWxsOyhhPUlYZSh0aGlzKSkmJl8uUG8odGhpcyxhKTthPSExO2xldCBiPXRoaXMuY29udGFpbmVyLmZpbmQoIi5QWlBabGYiKTtmb3IobGV0IGMgb2YgYi50b0FycmF5KCkpaWYoXy5DZChfLmdNKG5ldyBfLnpvKGMpLCJ0c291cmNlaWQiKSwwKT09PTQwKXthPSEwO2JyZWFrfXRoaXMud2E9YX10aGlzLmdldFJvb3QoKS5nZXREYXRhKCJ1YnMiKS5MYigpJiZfLnhvKHRoaXMuY29udGFpbmVyLmZpbmQoIi5QWlBabGYiKSxiPT57Yi5hZGRDbGFzcygiUFpQWmxmIil9KTsKd2luZG93Lk11dGF0aW9uT2JzZXJ2ZXImJih0aGlzLlhpPW5ldyBNdXRhdGlvbk9ic2VydmVyKGI9Pnt2YXIgYz1bXTtmb3IobGV0IGQgb2YgYilmb3IobGV0IGUgb2YgQXJyYXkuZnJvbShkLmFkZGVkTm9kZXMpKWUubm9kZVR5cGU9PT1Ob2RlLkVMRU1FTlRfTk9ERSYmYy5wdXNoKGUpO2MuZm9yRWFjaChkPT57ZD1uZXcgXy56byhkKTtkLmhhc0NsYXNzKCJQWlBabGYiKT9KWGUodGhpcyxkLCExKTpfLnhvKGQuZmluZCgiLlBaUFpsZiIpLGU9PntKWGUodGhpcyxlLCExKX0pfSl9KSl9UmEoYSl7aWYoXy5laShhLmRhdGEsMSk9PT0xKXtpZih0aGlzLkdhJiZfLkxqKHRoaXMuZ0MsOSkmJl8ucm9jKGEuZGF0YSkhPT1fLkxqKHRoaXMuZ0MsOSkpcmV0dXJuO3ZhciBiPXRoaXMuY29udGFpbmVyLmZpbmQoIi5QWlBabGYiKTtiLnRvQXJyYXkoKS5sZW5ndGg9PT0xP18ueG8oYixmPT57S1hlKGYsITApO0pYZSh0aGlzLGYsITApfSk6Xy54byhiLGY9PntLWGUoZiwhMCk7SlhlKHRoaXMsCmYsITEpfSk7dGhpcy5YaSE9bnVsbCYmXy54byh0aGlzLmNvbnRhaW5lcixmPT57Zi5lbCgpJiZ0aGlzLlhpLm9ic2VydmUoZi5lbCgpLHtjaGlsZExpc3Q6ITAsc3VidHJlZTohMH0pfSk7Xy54byh0aGlzLmNvbnRhaW5lcixmPT57Xy5aZyhmLmVsKCksInU2SnFHIix7ZWw6Zi5lbCgpfSl9KTtfLlBwKHRoaXMuTmIua2EoKSx0aGlzLmdldFJvb3QoKS5lbCgpLDEpLmxvZyghMCk7dmFyIGM9dGhpcy5jb250YWluZXIuZmluZCgiLlBaUFpsZiAuZ21sU1ZiIikuZmlsdGVyKF8ud24pO2lmKHRoaXMuTmE9PT0yJiZjLnNpemUoKTw9MSl0aGlzLk9hP3RoaXMubW9kZWwuZ29CYWNrKG5ldyBfLkF6KTp0aGlzLm1vZGVsLk1mKG5ldyBfLkF6LCExLCEwKTtlbHNlIGlmKGMuc2l6ZSgpPT09MClMWGUodGhpcywhMCk7ZWxzZSBpZihjLnNpemUoKT09PTEpYy5jbGljaygpO2Vsc2V7dmFyIGQ7KGM9KGQ9Xy5Deih0aGlzLmdldFJvb3QoKSkpPT1udWxsP3ZvaWQgMDpkLmVsKCkpJiZfLlpnKGMsInpYeGdNYyIpOwp0aGlzLmNvbnRhaW5lci5hZGRDbGFzcygiaTFlV3BiIik7aWYodGhpcy5rYSl7bGV0IGYsZyxoOyhmPXRoaXMua2EpPT1udWxsfHwoZz1mLmZpbmQoIi5nbWxTVmIiKSk9PW51bGx8fChoPWcuZmlyc3QoKSk9PW51bGx8fGguZm9jdXMoKTt0aGlzLmthPW51bGx9ZWxzZXtsZXQgZixnO2I9PW51bGx8fChmPWIuZmluZCgiLmdtbFNWYiIpKT09bnVsbHx8KGc9Zi5maXJzdCgpKT09bnVsbHx8Zy5mb2N1cygpfX19ZWxzZShkPShiPV8uQ3oodGhpcy5nZXRSb290KCkpKT09bnVsbD92b2lkIDA6Yi5lbCgpKSYmXy5aZyhkLCJxMEYzciIpLHRoaXMuY29udGFpbmVyLmhhc0NsYXNzKCJpMWVXcGIiKSYmKHRoaXMuY29udGFpbmVyLnJlbW92ZUNsYXNzKCJpMWVXcGIiKSxfLlBwKHRoaXMuTmIua2EoKSx0aGlzLmdldFJvb3QoKS5lbCgpLDIpLmxvZyghMCksXy54byh0aGlzLmNvbnRhaW5lci5maW5kKCIuUFpQWmxmIiksZj0+e0tYZShmLCExKTtmLmZpbmQoIi5nbWxTVmIiKS5yZW1vdmUoKX0pKSwKdGhpcy5jb250YWluZXIuZmluZCgiLm1XY2YwZSIpLmZvY3VzKCksdGhpcy5YaSYmdGhpcy5YaS5kaXNjb25uZWN0KCk7dmFyIGU7dGhpcy5OYT0oZT1fLmVpKGEuZGF0YSwxKSkhPW51bGw/ZTpudWxsfVRiKCl7dGhpcy5YaSYmdGhpcy5YaS5kaXNjb25uZWN0KCk7c3VwZXIuVGIoKX1KYihhKXthLmV2ZW50LnByZXZlbnREZWZhdWx0KCk7Xy5OcCh0aGlzLk5iLmthKCksdGhpcy5nZXRSb290KCkuZWwoKSkubG9nKCEwKTt0aGlzLmthPWE9YS50YXJnZXRFbGVtZW50LmNsb3Nlc3QoIi5QWlBabGYiKTt0aGlzLmdldFJvb3QoKS5nZXREYXRhKCJlcHUiKS5MYigpJiZhLmVhY2goYz0+eyhjLnRhZ05hbWU9PT0iSU1HInx8KG5ldyBfLndvKFtjXSkpLmZpbmQoImltZyIpLnNpemUoKT4wKSYmYy5zZXRBdHRyaWJ1dGUoImlzcGlja2VkIiwiIil9KTt2YXIgYj10aGlzLm1vZGVsLmdldFN0YXRlKCk7YT1BWGUoYixhLHRoaXMuZ0MpO2EuSWModGhpcy53YSk7Xy5EWGUoYSwiQSByZXBvcnRhYmxlIGlzIHBpY2tlZC4iKTsKdGhpcy5tb2RlbC5NZihhKX1PYigpe0xYZSh0aGlzLCExKX1QYShhKXthLmV2ZW50LnByZXZlbnREZWZhdWx0KCk7YS5ldmVudC5zdG9wUHJvcGFnYXRpb24oKTthPWEub2I7dmFyIGI9Xy5ucyh0aGlzLGEsImNEZE5mZSIpO05YZSh0aGlzLGIuZWwoKSxhLmVsKCkpfUJhKCl7dmFyIGE9SVhlKHRoaXMpO2EmJl8uRHYoW25ldyBfLmZvKGEsImhpZGUiKV0pO3RoaXMudHUmJl8uRW1kKHRoaXMudHUpfUFhKCl7dmFyIGE9bmV3IF8uenk7Xy55eShhLDQpO18udnkoYSwhMCk7Xy5MY2MoYSwxMjcpO3JldHVybiBhfX07T1hlLnByb3RvdHlwZS4kd2EkVXdyRFhiPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuQWF9O09YZS5wcm90b3R5cGUuJHdhJFNlMFlnPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuQmF9O09YZS5wcm90b3R5cGUuJHdhJE5vN0poZj1mdW5jdGlvbigpe3JldHVybiB0aGlzLlBhfTtPWGUucHJvdG90eXBlLiR3YSRBNUlLUWI9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5PYn07Ck9YZS5wcm90b3R5cGUuJHdhJFlmOFdXPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuSmJ9O09YZS5wcm90b3R5cGUuJHdhJGs0SXNlYj1mdW5jdGlvbigpe3JldHVybiB0aGlzLlRifTtPWGUucHJvdG90eXBlLiR3YSRkc29JMGI9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5SYX07Xy5qcyhfLmxYZSxPWGUpOwpfLnYoKTsKfWNhdGNoKGUpe18uX0R1bXBFeGNlcHRpb24oZSl9CnRyeXsKXy5XWmU9Xy5rYygiV28zbjgiLFtfLmRNLF8uZ1llLF8uUlplXSk7Cn1jYXRjaChlKXtfLl9EdW1wRXhjZXB0aW9uKGUpfQp0cnl7Cl8uVFplPWZ1bmN0aW9uKGEsYil7cmV0dXJuIF8uWmgoYSwxLGIpfTtfLlVaZT1mdW5jdGlvbihhLGIpe3JldHVybiBfLmZoKGEsMTYsYil9OwpfLlZaZT1jbGFzcyBleHRlbmRzIF8ubHtjb25zdHJ1Y3RvcihhKXtzdXBlcihhKX1FYSgpe3JldHVybiBfLmVpKHRoaXMsMSl9Z2V0RGVzY3JpcHRpb24oKXtyZXR1cm4gXy5naCh0aGlzLDIpfVBnKCl7cmV0dXJuIF8uTGoodGhpcywyKX1uYigpe3JldHVybiBfLkxqKHRoaXMsMyl9UGEoKXtyZXR1cm4gXy5Maih0aGlzLDQpfVdBKCl7cmV0dXJuIF8uZ2godGhpcyw1KX1SYSgpe3JldHVybiBfLkxqKHRoaXMsNSl9Z2V0QXR0cmlidXRlKCl7cmV0dXJuIF8uZ2godGhpcyw2KX1zZXRBdHRyaWJ1dGUoYSl7cmV0dXJuIF8uZmgodGhpcyw2LGEpfWhhc0F0dHJpYnV0ZSgpe3JldHVybiBfLnBoKHRoaXMsNil9QmEoKXtyZXR1cm4gXy5Maih0aGlzLDYpfUZiKCl7cmV0dXJuIF8uTGoodGhpcyw3KX1BYigpe3JldHVybiBfLkxqKHRoaXMsOCl9S2EoKXtyZXR1cm4gXy5xKHRoaXMsXy5weiwxMSl9TmEoKXtyZXR1cm4gXy51aih0aGlzLDE1LHZvaWQgMCxfLmhqKX1PYSgpe3JldHVybiBfLnVqKHRoaXMsCjE1KX1yYigpe3JldHVybiBfLmRrKHRoaXMsMTIpfUlhKCl7cmV0dXJuIF8uZ2godGhpcywxMyl9QWEoKXtyZXR1cm4gXy5Maih0aGlzLDE2KX1vYSgpe3JldHVybiBfLmVpKHRoaXMsMTcpfVNhKCl7cmV0dXJuIF8uZGkodGhpcywyMil9WmEoKXtyZXR1cm4gXy5kaSh0aGlzLDI0KX13YSgpe3JldHVybiBfLmRpKHRoaXMsMjMpfX07Xy5WWmUucHJvdG90eXBlLlhhPSJMMXVoMSI7Cn1jYXRjaChlKXtfLl9EdW1wRXhjZXB0aW9uKGUpfQp0cnl7Cl8uJG5jPWZ1bmN0aW9uKGEpe18uQm4od2luZG93LCJvRWRlSGYiLHt5Y2E6YX0pfTsKfWNhdGNoKGUpe18uX0R1bXBFeGNlcHRpb24oZSl9CnRyeXsKXy5Rdj10eXBlb2YgVWludDhBcnJheSE9PSJ1bmRlZmluZWQiJiZ0eXBlb2YgVWludDE2QXJyYXkhPT0idW5kZWZpbmVkIiYmdHlwZW9mIFVpbnQzMkFycmF5IT09InVuZGVmaW5lZCI7LyoKCgogSmF2YVNjcmlwdCBabGliIGFuZCBEZWZsYXRlIExpYnJhcnkKCiBUaGUgTUlUIExpY2Vuc2UKCiBDb3B5cmlnaHQgKGMpIDIwMTEgaW1heWEKCiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5CiBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbAogaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cwogdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbAogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCiBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOgoKIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluCiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4KCiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUgogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksCiBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUKIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIKIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sCiBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOCiBUSEUgU09GVFdBUkUuCiovCnZhciB5UmIsd1JiO18ueFJiPWZ1bmN0aW9uKGEsYixjKXt2YXIgZDt0eXBlb2YgYj09PSJudW1iZXIifHwoYj0wKTt2YXIgZT10eXBlb2YgYz09PSJudW1iZXIiP2M6YS5sZW5ndGg7Yz0tMTtmb3IoZD1lJjc7ZC0tOysrYiljPWM+Pj44XndSYlsoY15hW2JdKSYyNTVdO2ZvcihkPWU+PjM7ZC0tO2IrPTgpYz1jPj4+OF53UmJbKGNeYVtiXSkmMjU1XSxjPWM+Pj44XndSYlsoY15hW2IrMV0pJjI1NV0sYz1jPj4+OF53UmJbKGNeYVtiKzJdKSYyNTVdLGM9Yz4+Pjhed1JiWyhjXmFbYiszXSkmMjU1XSxjPWM+Pj44XndSYlsoY15hW2IrNF0pJjI1NV0sYz1jPj4+OF53UmJbKGNeYVtiKzVdKSYyNTVdLGM9Yz4+Pjhed1JiWyhjXmFbYis2XSkmMjU1XSxjPWM+Pj44XndSYlsoY15hW2IrN10pJjI1NV07cmV0dXJuKGNeNDI5NDk2NzI5NSk+Pj4wfTsKeVJiPVswLDE5OTY5NTk4OTQsMzk5MzkxOTc4OCwyNTY3NTI0Nzk0LDEyNDYzNDEzNywxODg2MDU3NjE1LDM5MTU2MjE2ODUsMjY1NzM5MjAzNSwyNDkyNjgyNzQsMjA0NDUwODMyNCwzNzcyMTE1MjMwLDI1NDcxNzc4NjQsMTYyOTQxOTk1LDIxMjU1NjEwMjEsMzg4NzYwNzA0NywyNDI4NDQ0MDQ5LDQ5ODUzNjU0OCwxNzg5OTI3NjY2LDQwODkwMTY2NDgsMjIyNzA2MTIxNCw0NTA1NDg4NjEsMTg0MzI1ODYwMyw0MTA3NTgwNzUzLDIyMTE2Nzc2MzksMzI1ODgzOTkwLDE2ODQ3NzcxNTIsNDI1MTEyMjA0MiwyMzIxOTI2NjM2LDMzNTYzMzQ4NywxNjYxMzY1NDY1LDQxOTUzMDI3NTUsMjM2NjExNTMxNyw5OTcwNzMwOTYsMTI4MTk1Mzg4NiwzNTc5ODU1MzMyLDI3MjQ2ODgyNDIsMTAwNjg4ODE0NSwxMjU4NjA3Njg3LDM1MjQxMDE2MjksMjc2ODk0MjQ0Myw5MDEwOTc3MjIsMTExOTAwMDY4NCwzNjg2NTE3MjA2LDI4OTgwNjU3MjgsODUzMDQ0NDUxLDExNzIyNjYxMDEsMzcwNTAxNTc1OSwKMjg4MjYxNjY2NSw2NTE3Njc5ODAsMTM3MzUwMzU0NiwzMzY5NTU0MzA0LDMyMTgxMDQ1OTgsNTY1NTA3MjUzLDE0NTQ2MjE3MzEsMzQ4NTExMTcwNSwzMDk5NDM2MzAzLDY3MTI2Njk3NCwxNTk0MTk4MDI0LDMzMjI3MzA5MzAsMjk3MDM0NzgxMiw3OTU4MzU1MjcsMTQ4MzIzMDIyNSwzMjQ0MzY3Mjc1LDMwNjAxNDk1NjUsMTk5NDE0NjE5MiwzMTE1ODUzNCwyNTYzOTA3NzcyLDQwMjM3MTc5MzAsMTkwNzQ1OTQ2NSwxMTI2MzcyMTUsMjY4MDE1MzI1MywzOTA0NDI3MDU5LDIwMTM3NzYyOTAsMjUxNzIyMDM2LDI1MTcyMTUzNzQsMzc3NTgzMDA0MCwyMTM3NjU2NzYzLDE0MTM3NjgxMywyNDM5Mjc3NzE5LDM4NjUyNzEyOTcsMTgwMjE5NTQ0NCw0NzY4NjQ4NjYsMjIzODAwMTM2OCw0MDY2NTA4ODc4LDE4MTIzNzA5MjUsNDUzMDkyNzMxLDIxODE2MjUwMjUsNDExMTQ1MTIyMywxNzA2MDg4OTAyLDMxNDA0MjcwNCwyMzQ0NTMyMjAyLDQyNDAwMTc1MzIsMTY1ODY1ODI3MSwzNjY2MTk5NzcsCjIzNjI2NzAzMjMsNDIyNDk5NDQwNSwxMzAzNTM1OTYwLDk4NDk2MTQ4NiwyNzQ3MDA3MDkyLDM1NjkwMzc1MzgsMTI1NjE3MDgxNywxMDM3NjA0MzExLDI3NjUyMTA3MzMsMzU1NDA3OTk5NSwxMTMxMDE0NTA2LDg3OTY3OTk5NiwyOTA5MjQzNDYyLDM2NjM3NzE4NTYsMTE0MTEyNDQ2Nyw4NTU4NDIyNzcsMjg1MjgwMTYzMSwzNzA4NjQ4NjQ5LDEzNDI1MzM5NDgsNjU0NDU5MzA2LDMxODgzOTYwNDgsMzM3MzAxNTE3NCwxNDY2NDc5OTA5LDU0NDE3OTYzNSwzMTEwNTIzOTEzLDM0NjI1MjIwMTUsMTU5MTY3MTA1NCw3MDIxMzg3NzYsMjk2NjQ2MDQ1MCwzMzUyNzk5NDEyLDE1MDQ5MTg4MDcsNzgzNTUxODczLDMwODI2NDA0NDMsMzIzMzQ0Mjk4OSwzOTg4MjkyMzg0LDI1OTYyNTQ2NDYsNjIzMTcwNjgsMTk1NzgxMDg0MiwzOTM5ODQ1OTQ1LDI2NDc4MTYxMTEsODE0NzA5OTcsMTk0MzgwMzUyMywzODE0OTE4OTMwLDI0ODk1OTY4MDQsMjI1Mjc0NDMwLDIwNTM3OTAzNzYsMzgyNjE3NTc1NSwKMjQ2NjkwNjAxMywxNjc4MTY3NDMsMjA5NzY1MTM3Nyw0MDI3NTUyNTgwLDIyNjU0OTAzODYsNTAzNDQ0MDcyLDE3NjIwNTA4MTQsNDE1MDQxNzI0NSwyMTU0MTI5MzU1LDQyNjUyMjIyNSwxODUyNTA3ODc5LDQyNzUzMTM1MjYsMjMxMjMxNzkyMCwyODI3NTM2MjYsMTc0MjU1NTg1Miw0MTg5NzA4MTQzLDIzOTQ4Nzc5NDUsMzk3OTE3NzYzLDE2MjIxODM2MzcsMzYwNDM5MDg4OCwyNzE0ODY2NTU4LDk1MzcyOTczMiwxMzQwMDc2NjI2LDM1MTg3MTk5ODUsMjc5NzM2MDk5OSwxMDY4ODI4MzgxLDEyMTk2Mzg4NTksMzYyNDc0MTg1MCwyOTM2Njc1MTQ4LDkwNjE4NTQ2MiwxMDkwODEyNTEyLDM3NDc2NzIwMDMsMjgyNTM3OTY2OSw4MjkzMjkxMzUsMTE4MTMzNTE2MSwzNDEyMTc3ODA0LDMxNjA4MzQ4NDIsNjI4MDg1NDA4LDEzODI2MDUzNjYsMzQyMzM2OTEwOSwzMTM4MDc4NDY3LDU3MDU2MjIzMywxNDI2NDAwODE1LDMzMTczMTY1NDIsMjk5ODczMzYwOCw3MzMyMzk5NTQsMTU1NTI2MTk1NiwKMzI2ODkzNTU5MSwzMDUwMzYwNjI1LDc1MjQ1OTQwMywxNTQxMzIwMjIxLDI2MDcwNzE5MjAsMzk2NTk3MzAzMCwxOTY5OTIyOTcyLDQwNzM1NDk4LDI2MTc4MzcyMjUsMzk0MzU3NzE1MSwxOTEzMDg3ODc3LDgzOTA4MzcxLDI1MTIzNDE2MzQsMzgwMzc0MDY5MiwyMDc1MjA4NjIyLDIxMzI2MTExMiwyNDYzMjcyNjAzLDM4NTU5OTAyODUsMjA5NDg1NDA3MSwxOTg5NTg4ODEsMjI2MjAyOTAxMiw0MDU3MjYwNjEwLDE3NTkzNTk5OTIsNTM0NDE0MTkwLDIxNzY3MTg1NDEsNDEzOTMyOTExNSwxODczODM2MDAxLDQxNDY2NDU2NywyMjgyMjQ4OTM0LDQyNzkyMDAzNjgsMTcxMTY4NDU1NCwyODUyODExMTYsMjQwNTgwMTcyNyw0MTY3MjE2NzQ1LDE2MzQ0Njc3OTUsMzc2MjI5NzAxLDI2ODUwNjc4OTYsMzYwODAwNzQwNiwxMzA4OTE4NjEyLDk1NjU0MzkzOCwyODA4NTU1MTA1LDM0OTU5NTgyNjMsMTIzMTYzNjMwMSwxMDQ3NDI3MDM1LDI5MzI5NTk4MTgsMzY1NDcwMzgzNiwxMDg4MzU5MjcwLAo5MzY5MThFMywyODQ3NzE0ODk5LDM3MzY4Mzc4MjksMTIwMjkwMDg2Myw4MTcyMzM4OTcsMzE4MzM0MjEwOCwzNDAxMjM3MTMwLDE0MDQyNzc1NTIsNjE1ODE4MTUwLDMxMzQyMDc0OTMsMzQ1MzQyMTIwMywxNDIzODU3NDQ5LDYwMTQ1MDQzMSwzMDA5ODM3NjE0LDMyOTQ3MTA0NTYsMTU2NzEwMzc0Niw3MTE5Mjg3MjQsMzAyMDY2ODQ3MSwzMjcyMzgwMDY1LDE1MTAzMzQyMzUsNzU1MTY3MTE3XTt3UmI9Xy5Rdj9uZXcgVWludDMyQXJyYXkoeVJiKTp5UmI7dmFyIEFSYj1mdW5jdGlvbihhLGIpe3RoaXMuaW5kZXg9dHlwZW9mIGI9PT0ibnVtYmVyIj9iOjA7dGhpcy5vYT0wO3RoaXMuYnVmZmVyPWEgaW5zdGFuY2VvZihfLlF2P1VpbnQ4QXJyYXk6QXJyYXkpP2E6bmV3IChfLlF2P1VpbnQ4QXJyYXk6QXJyYXkpKDMyNzY4KTtpZih0aGlzLmJ1ZmZlci5sZW5ndGgqMjw9dGhpcy5pbmRleCl0aHJvdyBFcnJvcigiUmYiKTt0aGlzLmJ1ZmZlci5sZW5ndGg8PXRoaXMuaW5kZXgmJnpSYih0aGlzKX0selJiPWZ1bmN0aW9uKGEpe3ZhciBiPWEuYnVmZmVyLGMsZD1iLmxlbmd0aCxlPW5ldyAoXy5Rdj9VaW50OEFycmF5OkFycmF5KShkPDwxKTtpZihfLlF2KWUuc2V0KGIpO2Vsc2UgZm9yKGM9MDtjPGQ7KytjKWVbY109YltjXTtyZXR1cm4gYS5idWZmZXI9ZX07CkFSYi5wcm90b3R5cGUua2E9ZnVuY3Rpb24oYSxiLGMpe3ZhciBkPXRoaXMuYnVmZmVyLGU9dGhpcy5pbmRleCxmPXRoaXMub2EsZz1kW2VdO2MmJmI+MSYmKGE9Yj44PyhCUmJbYSYyNTVdPDwyNHxCUmJbYT4+PjgmMjU1XTw8MTZ8QlJiW2E+Pj4xNiYyNTVdPDw4fEJSYlthPj4+MjQmMjU1XSk+PjMyLWI6QlJiW2FdPj44LWIpO2lmKGIrZjw4KWc9Zzw8YnxhLGYrPWI7ZWxzZSBmb3IoYz0wO2M8YjsrK2MpZz1nPDwxfGE+PmItYy0xJjEsKytmPT09OCYmKGY9MCxkW2UrK109QlJiW2ddLGc9MCxlPT09ZC5sZW5ndGgmJihkPXpSYih0aGlzKSkpO2RbZV09Zzt0aGlzLmJ1ZmZlcj1kO3RoaXMub2E9Zjt0aGlzLmluZGV4PWV9O0FSYi5wcm90b3R5cGUuZmluaXNoPWZ1bmN0aW9uKCl7dmFyIGE9dGhpcy5idWZmZXIsYj10aGlzLmluZGV4O3RoaXMub2E+MCYmKGFbYl08PD04LXRoaXMub2EsYVtiXT1CUmJbYVtiXV0sYisrKTtfLlF2P2E9YS5zdWJhcnJheSgwLGIpOmEubGVuZ3RoPWI7cmV0dXJuIGF9Owp2YXIgQ1JiPW5ldyAoXy5Rdj9VaW50OEFycmF5OkFycmF5KSgyNTYpLERSYjtmb3IoRFJiPTA7RFJiPDI1NjsrK0RSYil7dmFyIEVSYj1EUmIsRlJiPUVSYixHUmI9Nztmb3IoRVJiPj4+PTE7RVJiO0VSYj4+Pj0xKUZSYjw8PTEsRlJifD1FUmImMSwtLUdSYjtDUmJbRFJiXT0oRlJiPDxHUmImMjU1KT4+PjB9dmFyIEJSYj1DUmI7LyoKCgogemxpYi5oZWFwLmpzCgogVGhlIE1JVCBMaWNlbnNlCgogQ29weXJpZ2h0IChjKSAyMDExIGltYXlhCgogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weQogb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwKIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMKIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwKIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwogZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoKCiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbgogYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuCgogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1IKIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLAogRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFCiBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSCiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLAogT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTgogVEhFIFNPRlRXQVJFLgoqLwp2YXIgSFJiPWZ1bmN0aW9uKCl7dGhpcy5idWZmZXI9bmV3IChfLlF2P1VpbnQxNkFycmF5OkFycmF5KSgxMTQ0KTt0aGlzLmxlbmd0aD0wfTtIUmIucHJvdG90eXBlLmdldFBhcmVudD1mdW5jdGlvbihhKXtyZXR1cm4oKGEtMikvNHwwKSoyfTtIUmIucHJvdG90eXBlLkhoYT1mdW5jdGlvbihhKXtyZXR1cm4gMiphKzJ9O0hSYi5wcm90b3R5cGUucHVzaD1mdW5jdGlvbihhLGIpe3ZhciBjPXRoaXMuYnVmZmVyO3ZhciBkPXRoaXMubGVuZ3RoO2NbdGhpcy5sZW5ndGgrK109Yjtmb3IoY1t0aGlzLmxlbmd0aCsrXT1hO2Q+MDspaWYoYT10aGlzLmdldFBhcmVudChkKSxjW2RdPmNbYV0pYj1jW2RdLGNbZF09Y1thXSxjW2FdPWIsYj1jW2QrMV0sY1tkKzFdPWNbYSsxXSxjW2ErMV09YixkPWE7ZWxzZSBicmVhaztyZXR1cm4gdGhpcy5sZW5ndGh9OwpIUmIucHJvdG90eXBlLnBvcD1mdW5jdGlvbigpe3ZhciBhPXRoaXMuYnVmZmVyLGI7dmFyIGM9YVswXTt2YXIgZD1hWzFdO3RoaXMubGVuZ3RoLT0yO2FbMF09YVt0aGlzLmxlbmd0aF07YVsxXT1hW3RoaXMubGVuZ3RoKzFdO2ZvcihiPTA7Oyl7dmFyIGU9dGhpcy5IaGEoYik7aWYoZT49dGhpcy5sZW5ndGgpYnJlYWs7ZSsyPHRoaXMubGVuZ3RoJiZhW2UrMl0+YVtlXSYmKGUrPTIpO2lmKGFbZV0+YVtiXSl7dmFyIGY9YVtiXTthW2JdPWFbZV07YVtlXT1mO2Y9YVtiKzFdO2FbYisxXT1hW2UrMV07YVtlKzFdPWZ9ZWxzZSBicmVhaztiPWV9cmV0dXJue2luZGV4OmQsdmFsdWU6YyxsZW5ndGg6dGhpcy5sZW5ndGh9fTt2YXIgSVJiPWZ1bmN0aW9uKGEsYil7dGhpcy5rYT0yO3RoaXMubGF6eT0wO3RoaXMuaW5wdXQ9Xy5RdiYmYSBpbnN0YW5jZW9mIEFycmF5P25ldyBVaW50OEFycmF5KGEpOmE7dGhpcy5vcD0wO2ImJihiLmxhenkmJih0aGlzLmxhenk9Yi5sYXp5KSx0eXBlb2YgYi5jb21wcmVzc2lvblR5cGU9PT0ibnVtYmVyIiYmKHRoaXMua2E9Yi5jb21wcmVzc2lvblR5cGUpLGIub3V0cHV0QnVmZmVyJiYodGhpcy5vdXRwdXQ9Xy5RdiYmYi5vdXRwdXRCdWZmZXIgaW5zdGFuY2VvZiBBcnJheT9uZXcgVWludDhBcnJheShiLm91dHB1dEJ1ZmZlcik6Yi5vdXRwdXRCdWZmZXIpLHR5cGVvZiBiLm91dHB1dEluZGV4PT09Im51bWJlciImJih0aGlzLm9wPWIub3V0cHV0SW5kZXgpKTt0aGlzLm91dHB1dHx8KHRoaXMub3V0cHV0PW5ldyAoXy5Rdj9VaW50OEFycmF5OkFycmF5KSgzMjc2OCkpfSxKUmI9W10sUnY7CmZvcihSdj0wO1J2PDI4ODtSdisrKXN3aXRjaCghMCl7Y2FzZSBSdjw9MTQzOkpSYi5wdXNoKFtSdis0OCw4XSk7YnJlYWs7Y2FzZSBSdjw9MjU1OkpSYi5wdXNoKFtSdi0xNDQrNDAwLDldKTticmVhaztjYXNlIFJ2PD0yNzk6SlJiLnB1c2goW1J2LTI1Niw3XSk7YnJlYWs7Y2FzZSBSdjw9Mjg3OkpSYi5wdXNoKFtSdi0yODArMTkyLDhdKTticmVhaztkZWZhdWx0OnRocm93IEVycm9yKCJTZmAiK1J2KTt9CklSYi5wcm90b3R5cGUuQ3VhPWZ1bmN0aW9uKCl7dmFyIGEsYj10aGlzLmlucHV0O3N3aXRjaCh0aGlzLmthKXtjYXNlIDA6dmFyIGM9MDtmb3IoYT1iLmxlbmd0aDtjPGE7KXt2YXIgZD1fLlF2P2Iuc3ViYXJyYXkoYyxjKzY1NTM1KTpiLnNsaWNlKGMsYys2NTUzNSk7Yys9ZC5sZW5ndGg7dmFyIGU9Yz09PWE7dmFyIGY9dGhpcy5vdXRwdXQsZz10aGlzLm9wO2lmKF8uUXYpe2ZvcihmPW5ldyBVaW50OEFycmF5KHRoaXMub3V0cHV0LmJ1ZmZlcik7Zi5sZW5ndGg8PWcrZC5sZW5ndGgrNTspZj1uZXcgVWludDhBcnJheShmLmxlbmd0aDw8MSk7Zi5zZXQodGhpcy5vdXRwdXQpfWZbZysrXT0oZT8xOjApfDA7dmFyIGg9ZC5sZW5ndGg7ZT1+aCs2NTUzNiY2NTUzNTtmW2crK109aCYyNTU7ZltnKytdPWg+Pj44JjI1NTtmW2crK109ZSYyNTU7ZltnKytdPWU+Pj44JjI1NTtpZihfLlF2KWYuc2V0KGQsZyksZys9ZC5sZW5ndGgsZj1mLnN1YmFycmF5KDAsZyk7ZWxzZXtoPTA7Zm9yKGU9ZC5sZW5ndGg7aDwKZTsrK2gpZltnKytdPWRbaF07Zi5sZW5ndGg9Z310aGlzLm9wPWc7dGhpcy5vdXRwdXQ9Zn1icmVhaztjYXNlIDE6Yz1uZXcgQVJiKF8uUXY/bmV3IFVpbnQ4QXJyYXkodGhpcy5vdXRwdXQuYnVmZmVyKTp0aGlzLm91dHB1dCx0aGlzLm9wKTtjLmthKDEsMSwhMCk7Yy5rYSgxLDIsITApO2I9S1JiKHRoaXMsYik7YT0wO2ZvcihkPWIubGVuZ3RoO2E8ZDthKyspaWYoZj1iW2FdLEFSYi5wcm90b3R5cGUua2EuYXBwbHkoYyxKUmJbZl0pLGY+MjU2KWMua2EoYlsrK2FdLGJbKythXSwhMCksYy5rYShiWysrYV0sNSksYy5rYShiWysrYV0sYlsrK2FdLCEwKTtlbHNlIGlmKGY9PT0yNTYpYnJlYWs7dGhpcy5vdXRwdXQ9Yy5maW5pc2goKTt0aGlzLm9wPXRoaXMub3V0cHV0Lmxlbmd0aDticmVhaztjYXNlIDI6Yz1uZXcgQVJiKF8uUXY/bmV3IFVpbnQ4QXJyYXkodGhpcy5vdXRwdXQuYnVmZmVyKTp0aGlzLm91dHB1dCx0aGlzLm9wKTt2YXIgayxtLG49WzE2LDE3LDE4LDAsOCw3LDksNiwxMCwKNSwxMSw0LDEyLDMsMTMsMiwxNCwxLDE1XTtlPUFycmF5KDE5KTt2YXIgcDtjLmthKDEsMSwhMCk7Yy5rYSgyLDIsITApO2I9S1JiKHRoaXMsYik7Zj1MUmIodGhpcy53YSwxNSk7Zz1NUmIoZik7YT1MUmIodGhpcy5vYSw3KTtkPU1SYihhKTtmb3IoaD0yODY7aD4yNTcmJmZbaC0xXT09PTA7aC0tKTtmb3Ioaz0zMDtrPjEmJmFbay0xXT09PTA7ay0tKTt2YXIgcj1oLHg9azt2YXIgej1uZXcgKF8uUXY/VWludDMyQXJyYXk6QXJyYXkpKHIreCk7dmFyIEI9bmV3IChfLlF2P1VpbnQzMkFycmF5OkFycmF5KSgzMTYpLEg7dmFyIEo9bmV3IChfLlF2P1VpbnQ4QXJyYXk6QXJyYXkpKDE5KTtmb3IocD1tPTA7cDxyO3ArKyl6W20rK109ZltwXTtmb3IocD0wO3A8eDtwKyspelttKytdPWFbcF07aWYoIV8uUXYpZm9yKHA9MCx4PUoubGVuZ3RoO3A8eDsrK3ApSltwXT0wO3A9SD0wO2Zvcih4PXoubGVuZ3RoO3A8eDtwKz1tKXtmb3IobT0xO3ArbTx4JiZ6W3ArbV09PT16W3BdOysrbSk7cj1tOwppZih6W3BdPT09MClpZihyPDMpZm9yKDtyLS0gPjA7KUJbSCsrXT0wLEpbMF0rKztlbHNlIGZvcig7cj4wOyl7dmFyIE49cjwxMzg/cjoxMzg7Tj5yLTMmJk48ciYmKE49ci0zKTtOPD0xMD8oQltIKytdPTE3LEJbSCsrXT1OLTMsSlsxN10rKyk6KEJbSCsrXT0xOCxCW0grK109Ti0xMSxKWzE4XSsrKTtyLT1OfWVsc2UgaWYoQltIKytdPXpbcF0sSlt6W3BdXSsrLHItLSxyPDMpZm9yKDtyLS0gPjA7KUJbSCsrXT16W3BdLEpbeltwXV0rKztlbHNlIGZvcig7cj4wOylOPXI8Nj9yOjYsTj5yLTMmJk48ciYmKE49ci0zKSxCW0grK109MTYsQltIKytdPU4tMyxKWzE2XSsrLHItPU59ej1fLlF2P0Iuc3ViYXJyYXkoMCxIKTpCLnNsaWNlKDAsSCk7Sj1MUmIoSiw3KTtmb3IocD0wO3A8MTk7cCsrKWVbcF09SltuW3BdXTtmb3IobT0xOTttPjQmJmVbbS0xXT09PTA7bS0tKTtuPU1SYihKKTtjLmthKGgtMjU3LDUsITApO2Mua2Eoay0xLDUsITApO2Mua2EobS00LDQsITApO2ZvcihwPTA7cDwKbTtwKyspYy5rYShlW3BdLDMsITApO3A9MDtmb3IoZT16Lmxlbmd0aDtwPGU7cCsrKWlmKGg9eltwXSxjLmthKG5baF0sSltoXSwhMCksaD49MTYpe3ArKztzd2l0Y2goaCl7Y2FzZSAxNjpoPTI7YnJlYWs7Y2FzZSAxNzpoPTM7YnJlYWs7Y2FzZSAxODpoPTc7YnJlYWs7ZGVmYXVsdDp0aHJvdyBFcnJvcigiVWZgIitoKTt9Yy5rYSh6W3BdLGgsITApfWY9W2csZl07Zz1bZCxhXTthPWZbMF07ZD1mWzFdO2Y9Z1swXTtoPWdbMV07Zz0wO2ZvcihlPWIubGVuZ3RoO2c8ZTsrK2cpaWYoaz1iW2ddLGMua2EoYVtrXSxkW2tdLCEwKSxrPjI1NiljLmthKGJbKytnXSxiWysrZ10sITApLGs9YlsrK2ddLGMua2EoZltrXSxoW2tdLCEwKSxjLmthKGJbKytnXSxiWysrZ10sITApO2Vsc2UgaWYoaz09PTI1NilicmVhazt0aGlzLm91dHB1dD1jLmZpbmlzaCgpO3RoaXMub3A9dGhpcy5vdXRwdXQubGVuZ3RoO2JyZWFrO2RlZmF1bHQ6dGhyb3cgRXJyb3IoIlRmIik7fXJldHVybiB0aGlzLm91dHB1dH07CnZhciBOUmI9ZnVuY3Rpb24oYSxiKXt0aGlzLmxlbmd0aD1hO3RoaXMua2E9Yn0sT1JiLFBSYj1mdW5jdGlvbigpe2Z1bmN0aW9uIGEoZSl7c3dpdGNoKCEwKXtjYXNlIGU9PT0zOnJldHVyblsyNTcsZS0zLDBdO2Nhc2UgZT09PTQ6cmV0dXJuWzI1OCxlLTQsMF07Y2FzZSBlPT09NTpyZXR1cm5bMjU5LGUtNSwwXTtjYXNlIGU9PT02OnJldHVyblsyNjAsZS02LDBdO2Nhc2UgZT09PTc6cmV0dXJuWzI2MSxlLTcsMF07Y2FzZSBlPT09ODpyZXR1cm5bMjYyLGUtOCwwXTtjYXNlIGU9PT05OnJldHVyblsyNjMsZS05LDBdO2Nhc2UgZT09PTEwOnJldHVyblsyNjQsZS0xMCwwXTtjYXNlIGU8PTEyOnJldHVyblsyNjUsZS0xMSwxXTtjYXNlIGU8PTE0OnJldHVyblsyNjYsZS0xMywxXTtjYXNlIGU8PTE2OnJldHVyblsyNjcsZS0xNSwxXTtjYXNlIGU8PTE4OnJldHVyblsyNjgsZS0xNywxXTtjYXNlIGU8PTIyOnJldHVyblsyNjksZS0xOSwyXTtjYXNlIGU8PTI2OnJldHVyblsyNzAsZS0yMywKMl07Y2FzZSBlPD0zMDpyZXR1cm5bMjcxLGUtMjcsMl07Y2FzZSBlPD0zNDpyZXR1cm5bMjcyLGUtMzEsMl07Y2FzZSBlPD00MjpyZXR1cm5bMjczLGUtMzUsM107Y2FzZSBlPD01MDpyZXR1cm5bMjc0LGUtNDMsM107Y2FzZSBlPD01ODpyZXR1cm5bMjc1LGUtNTEsM107Y2FzZSBlPD02NjpyZXR1cm5bMjc2LGUtNTksM107Y2FzZSBlPD04MjpyZXR1cm5bMjc3LGUtNjcsNF07Y2FzZSBlPD05ODpyZXR1cm5bMjc4LGUtODMsNF07Y2FzZSBlPD0xMTQ6cmV0dXJuWzI3OSxlLTk5LDRdO2Nhc2UgZTw9MTMwOnJldHVyblsyODAsZS0xMTUsNF07Y2FzZSBlPD0xNjI6cmV0dXJuWzI4MSxlLTEzMSw1XTtjYXNlIGU8PTE5NDpyZXR1cm5bMjgyLGUtMTYzLDVdO2Nhc2UgZTw9MjI2OnJldHVyblsyODMsZS0xOTUsNV07Y2FzZSBlPD0yNTc6cmV0dXJuWzI4NCxlLTIyNyw1XTtjYXNlIGU9PT0yNTg6cmV0dXJuWzI4NSxlLTI1OCwwXTtkZWZhdWx0OnRocm93IEVycm9yKCJWZmAiK2UpO319dmFyIGI9CltdLGM7Zm9yKGM9MztjPD0yNTg7YysrKXt2YXIgZD1hKGMpO2JbY109ZFsyXTw8MjR8ZFsxXTw8MTZ8ZFswXX1yZXR1cm4gYn0oKTtPUmI9Xy5Rdj9uZXcgVWludDMyQXJyYXkoUFJiKTpQUmI7CnZhciBLUmI9ZnVuY3Rpb24oYSxiKXtmdW5jdGlvbiBjKEgsSil7dmFyIE49W10sUT1PUmJbSC5sZW5ndGhdO05bMF09USY2NTUzNTtOWzFdPVE+PjE2JjI1NTtOWzJdPVE+PjI0O1E9SC5rYTtzd2l0Y2goITApe2Nhc2UgUT09PTE6UT1bMCxRLTEsMF07YnJlYWs7Y2FzZSBRPT09MjpRPVsxLFEtMiwwXTticmVhaztjYXNlIFE9PT0zOlE9WzIsUS0zLDBdO2JyZWFrO2Nhc2UgUT09PTQ6UT1bMyxRLTQsMF07YnJlYWs7Y2FzZSBRPD02OlE9WzQsUS01LDFdO2JyZWFrO2Nhc2UgUTw9ODpRPVs1LFEtNywxXTticmVhaztjYXNlIFE8PTEyOlE9WzYsUS05LDJdO2JyZWFrO2Nhc2UgUTw9MTY6UT1bNyxRLTEzLDJdO2JyZWFrO2Nhc2UgUTw9MjQ6UT1bOCxRLTE3LDNdO2JyZWFrO2Nhc2UgUTw9MzI6UT1bOSxRLTI1LDNdO2JyZWFrO2Nhc2UgUTw9NDg6UT1bMTAsUS0zMyw0XTticmVhaztjYXNlIFE8PTY0OlE9WzExLFEtNDksNF07YnJlYWs7Y2FzZSBRPD05NjpRPVsxMixRLTY1LDVdO2JyZWFrOwpjYXNlIFE8PTEyODpRPVsxMyxRLTk3LDVdO2JyZWFrO2Nhc2UgUTw9MTkyOlE9WzE0LFEtMTI5LDZdO2JyZWFrO2Nhc2UgUTw9MjU2OlE9WzE1LFEtMTkzLDZdO2JyZWFrO2Nhc2UgUTw9Mzg0OlE9WzE2LFEtMjU3LDddO2JyZWFrO2Nhc2UgUTw9NTEyOlE9WzE3LFEtMzg1LDddO2JyZWFrO2Nhc2UgUTw9NzY4OlE9WzE4LFEtNTEzLDhdO2JyZWFrO2Nhc2UgUTw9MTAyNDpRPVsxOSxRLTc2OSw4XTticmVhaztjYXNlIFE8PTE1MzY6UT1bMjAsUS0xMDI1LDldO2JyZWFrO2Nhc2UgUTw9MjA0ODpRPVsyMSxRLTE1MzcsOV07YnJlYWs7Y2FzZSBRPD0zMDcyOlE9WzIyLFEtMjA0OSwxMF07YnJlYWs7Y2FzZSBRPD00MDk2OlE9WzIzLFEtMzA3MywxMF07YnJlYWs7Y2FzZSBRPD02MTQ0OlE9WzI0LFEtNDA5NywxMV07YnJlYWs7Y2FzZSBRPD04MTkyOlE9WzI1LFEtNjE0NSwxMV07YnJlYWs7Y2FzZSBRPD0xMjI4ODpRPVsyNixRLTgxOTMsMTJdO2JyZWFrO2Nhc2UgUTw9MTYzODQ6UT1bMjcsClEtMTIyODksMTJdO2JyZWFrO2Nhc2UgUTw9MjQ1NzY6UT1bMjgsUS0xNjM4NSwxM107YnJlYWs7Y2FzZSBRPD0zMjc2ODpRPVsyOSxRLTI0NTc3LDEzXTticmVhaztkZWZhdWx0OnRocm93IEVycm9yKCJXZiIpO31OWzNdPVFbMF07Tls0XT1RWzFdO05bNV09UVsyXTt2YXIgWjtRPTA7Zm9yKFo9Ti5sZW5ndGg7UTxaOysrUSltW24rK109TltRXTtyW05bMF1dKys7eFtOWzNdXSsrO3A9SC5sZW5ndGgrSi0xO2s9bnVsbH12YXIgZCxlLGYsZyxoPXt9LGssbT1fLlF2P25ldyBVaW50MTZBcnJheShiLmxlbmd0aCoyKTpbXSxuPTAscD0wLHI9bmV3IChfLlF2P1VpbnQzMkFycmF5OkFycmF5KSgyODYpLHg9bmV3IChfLlF2P1VpbnQzMkFycmF5OkFycmF5KSgzMCksej1hLmxhenk7aWYoIV8uUXYpe2ZvcihlPTA7ZTw9Mjg1OylyW2UrK109MDtmb3IoZT0wO2U8PTI5Oyl4W2UrK109MH1yWzI1Nl09MTt2YXIgQj0wO2ZvcihkPWIubGVuZ3RoO0I8ZDsrK0Ipe2U9Zz0wO2ZvcihmPTM7ZTxmJiYKQitlIT09ZDsrK2UpZz1nPDw4fGJbQitlXTtoW2ddPT09dm9pZCAwJiYoaFtnXT1bXSk7ZT1oW2ddO2lmKHAtLSA+MCllLnB1c2goQik7ZWxzZXtmb3IoO2UubGVuZ3RoPjAmJkItZVswXT4zMjc2ODspZS5zaGlmdCgpO2lmKEIrMz49ZCl7ayYmYyhrLC0xKTtlPTA7Zm9yKGY9ZC1CO2U8ZjsrK2UpZz1iW0IrZV0sbVtuKytdPWcsKytyW2ddO2JyZWFrfWUubGVuZ3RoPjA/KGY9UVJiKGIsQixlKSxrP2subGVuZ3RoPGYubGVuZ3RoPyhnPWJbQi0xXSxtW24rK109ZywrK3JbZ10sYyhmLDApKTpjKGssLTEpOmYubGVuZ3RoPHo/az1mOmMoZiwwKSk6az9jKGssLTEpOihnPWJbQl0sbVtuKytdPWcsKytyW2ddKTtlLnB1c2goQil9fW1bbisrXT0yNTY7clsyNTZdKys7YS53YT1yO2Eub2E9eDtyZXR1cm4gXy5Rdj9tLnN1YmFycmF5KDAsbik6bX0sUVJiPWZ1bmN0aW9uKGEsYixjKXt2YXIgZD0wLGU9YS5sZW5ndGg7dmFyIGY9MDt2YXIgZz1jLmxlbmd0aDthOmZvcig7ZjxnO2YrKyl7dmFyIGg9CmNbZy1mLTFdO3ZhciBrPTM7aWYoZD4zKXtmb3Ioaz1kO2s+MztrLS0paWYoYVtoK2stMV0hPT1hW2Iray0xXSljb250aW51ZSBhO2s9ZH1mb3IoO2s8MjU4JiZiK2s8ZSYmYVtoK2tdPT09YVtiK2tdOykrK2s7aWYoaz5kKXt2YXIgbT1oO2Q9a31pZihrPT09MjU4KWJyZWFrfXJldHVybiBuZXcgTlJiKGQsYi1tKX0sTFJiPWZ1bmN0aW9uKGEsYil7dmFyIGM9YS5sZW5ndGgsZD1uZXcgSFJiLGU9bmV3IChfLlF2P1VpbnQ4QXJyYXk6QXJyYXkpKGMpLGY7aWYoIV8uUXYpZm9yKGY9MDtmPGM7ZisrKWVbZl09MDtmb3IoZj0wO2Y8YzsrK2YpYVtmXT4wJiZkLnB1c2goZixhW2ZdKTthPUFycmF5KGQubGVuZ3RoLzIpO3ZhciBnPW5ldyAoXy5Rdj9VaW50MzJBcnJheTpBcnJheSkoZC5sZW5ndGgvMik7aWYoYS5sZW5ndGg9PT0xKXJldHVybiBlW2QucG9wKCkuaW5kZXhdPTEsZTtmPTA7Zm9yKGM9ZC5sZW5ndGgvMjtmPGM7KytmKWFbZl09ZC5wb3AoKSxnW2ZdPWFbZl0udmFsdWU7Yj1SUmIoZywKZy5sZW5ndGgsYik7Zj0wO2ZvcihjPWEubGVuZ3RoO2Y8YzsrK2YpZVthW2ZdLmluZGV4XT1iW2ZdO3JldHVybiBlfSxSUmI9ZnVuY3Rpb24oYSxiLGMpe2Z1bmN0aW9uIGQoeil7dmFyIEI9a1t6XVttW3pdXTtCPT09Yj8oZCh6KzEpLGQoeisxKSk6LS1nW0JdOysrbVt6XX12YXIgZT1uZXcgKF8uUXY/VWludDE2QXJyYXk6QXJyYXkpKGMpLGY9bmV3IChfLlF2P1VpbnQ4QXJyYXk6QXJyYXkpKGMpLGc9bmV3IChfLlF2P1VpbnQ4QXJyYXk6QXJyYXkpKGIpLGg9QXJyYXkoYyksaz1BcnJheShjKSxtPUFycmF5KGMpLG49KDE8PGMpLWIscD0xPDxjLTEscjtlW2MtMV09Yjtmb3Iocj0wO3I8YzsrK3IpbjxwP2Zbcl09MDooZltyXT0xLG4tPXApLG48PD0xLGVbYy0yLXJdPShlW2MtMS1yXS8yfDApK2I7ZVswXT1mWzBdO2hbMF09QXJyYXkoZVswXSk7a1swXT1BcnJheShlWzBdKTtmb3Iocj0xO3I8YzsrK3IpZVtyXT4yKmVbci0xXStmW3JdJiYoZVtyXT0yKmVbci0xXStmW3JdKSxoW3JdPQpBcnJheShlW3JdKSxrW3JdPUFycmF5KGVbcl0pO2ZvcihuPTA7bjxiOysrbilnW25dPWM7Zm9yKHA9MDtwPGVbYy0xXTsrK3ApaFtjLTFdW3BdPWFbcF0sa1tjLTFdW3BdPXA7Zm9yKG49MDtuPGM7KytuKW1bbl09MDtmW2MtMV09PT0xJiYoLS1nWzBdLCsrbVtjLTFdKTtmb3Iocj1jLTI7cj49MDstLXIpe2M9bj0wO3ZhciB4PW1bcisxXTtmb3IocD0wO3A8ZVtyXTtwKyspYz1oW3IrMV1beF0raFtyKzFdW3grMV0sYz5hW25dPyhoW3JdW3BdPWMsa1tyXVtwXT1iLHgrPTIpOihoW3JdW3BdPWFbbl0sa1tyXVtwXT1uLCsrbik7bVtyXT0wO2Zbcl09PT0xJiZkKHIpfXJldHVybiBnfSxNUmI9ZnVuY3Rpb24oYSl7dmFyIGI9bmV3IChfLlF2P1VpbnQxNkFycmF5OkFycmF5KShhLmxlbmd0aCksYz1bXSxkPVtdLGU9MCxmLGc7dmFyIGg9MDtmb3IoZj1hLmxlbmd0aDtoPGY7aCsrKWNbYVtoXV09KGNbYVtoXV18MCkrMTtoPTE7Zm9yKGY9MTY7aDw9ZjtoKyspZFtoXT1lLGUrPWNbaF18MCwKZTw8PTE7aD0wO2ZvcihmPWEubGVuZ3RoO2g8ZjtoKyspZm9yKGU9ZFthW2hdXSxkW2FbaF1dKz0xLGM9YltoXT0wLGc9YVtoXTtjPGc7YysrKWJbaF09YltoXTw8MXxlJjEsZT4+Pj0xO3JldHVybiBifTtfLlNSYj1mdW5jdGlvbihhKXt0aGlzLmlucHV0PWE7dGhpcy5vcD10aGlzLmlwPTA7dGhpcy5mbGFncz17fTt0aGlzLmthfHwodGhpcy5rYT17fSl9OwpfLlNSYi5wcm90b3R5cGUuQ3VhPWZ1bmN0aW9uKCl7dmFyIGEsYj1uZXcgKF8uUXY/VWludDhBcnJheTpBcnJheSkoMzI3NjgpO3ZhciBjPTA7dmFyIGQ9dGhpcy5pbnB1dCxlPXRoaXMuaXA7dmFyIGY9dGhpcy5maWxlbmFtZTt2YXIgZz10aGlzLmNvbW1lbnQ7YltjKytdPTMxO2JbYysrXT0xMzk7YltjKytdPTg7dmFyIGg9MDt0aGlzLmZsYWdzLmZuYW1lJiYoaHw9OCk7dGhpcy5mbGFncy5mY29tbWVudCYmKGh8PTE2KTt0aGlzLmZsYWdzLmZoY3JjJiYoaHw9Mik7YltjKytdPWg7aD0oRGF0ZS5ub3c/RGF0ZS5ub3coKTorbmV3IERhdGUpLzFFM3wwO2JbYysrXT1oJjI1NTtiW2MrK109aD4+PjgmMjU1O2JbYysrXT1oPj4+MTYmMjU1O2JbYysrXT1oPj4+MjQmMjU1O2JbYysrXT0wO2JbYysrXT0yNTU7aWYodGhpcy5mbGFncy5mbmFtZSE9PXZvaWQgMCl7dmFyIGs9MDtmb3IoYT1mLmxlbmd0aDtrPGE7KytrKWg9Zi5jaGFyQ29kZUF0KGspLGg+MjU1JiYoYltjKytdPWg+Pj44JjI1NSksCmJbYysrXT1oJjI1NTtiW2MrK109MH1pZih0aGlzLmZsYWdzLmNvbW1lbnQpe2s9MDtmb3IoYT1nLmxlbmd0aDtrPGE7KytrKWg9Zy5jaGFyQ29kZUF0KGspLGg+MjU1JiYoYltjKytdPWg+Pj44JjI1NSksYltjKytdPWgmMjU1O2JbYysrXT0wfXRoaXMuZmxhZ3MuZmhjcmMmJihmPV8ueFJiKGIsMCxjKSY2NTUzNSxiW2MrK109ZiYyNTUsYltjKytdPWY+Pj44JjI1NSk7dGhpcy5rYS5vdXRwdXRCdWZmZXI9Yjt0aGlzLmthLm91dHB1dEluZGV4PWM7Yz1uZXcgSVJiKGQsdGhpcy5rYSk7Yj1jLkN1YSgpO2M9Yy5vcDtfLlF2JiYoYys4PmIuYnVmZmVyLmJ5dGVMZW5ndGg/KHRoaXMub3V0cHV0PW5ldyBVaW50OEFycmF5KGMrOCksdGhpcy5vdXRwdXQuc2V0KG5ldyBVaW50OEFycmF5KGIuYnVmZmVyKSksYj10aGlzLm91dHB1dCk6Yj1uZXcgVWludDhBcnJheShiLmJ1ZmZlcikpO2Y9Xy54UmIoZCk7YltjKytdPWYmMjU1O2JbYysrXT1mPj4+OCYyNTU7YltjKytdPWY+Pj4xNiYyNTU7YltjKytdPQpmPj4+MjQmMjU1O2E9ZC5sZW5ndGg7YltjKytdPWEmMjU1O2JbYysrXT1hPj4+OCYyNTU7YltjKytdPWE+Pj4xNiYyNTU7YltjKytdPWE+Pj4yNCYyNTU7dGhpcy5pcD1lO18uUXYmJmM8Yi5sZW5ndGgmJih0aGlzLm91dHB1dD1iPWIuc3ViYXJyYXkoMCxjKSk7cmV0dXJuIGJ9Owp9Y2F0Y2goZSl7Xy5fRHVtcEV4Y2VwdGlvbihlKX0KdHJ5ewpfLnUoIldvM244Iik7CnZhciBYWmU9ZnVuY3Rpb24oYSxiKXtyZXR1cm4gXy52ayhhLDMwLF8uZG9jLGIpfSxZWmU9ZnVuY3Rpb24oYSxiKXtyZXR1cm4gXy5sayhhLDI4LGIpfSxaWmU9ZnVuY3Rpb24oYSxiKXthLmthPWJ9LCRaZT1bMTksMjBdLGFfZT1mdW5jdGlvbihhLGIpe2Eua2Eua2Euc3RhcnRUaW1lIT1udWxsJiYoXy5RbyhhLmthLGIpLGEua2EubG9nKCkpfSxiX2U9Y2xhc3N7Y29uc3RydWN0b3IoKXt0aGlzLmthPW5ldyBfLlJvfX07dmFyIGNfZT1mdW5jdGlvbihhLGIpe3JldHVybiBfLnVoKGEsMSxfLmJZZSxiKX0sZF9lPWNsYXNzIGV4dGVuZHMgXy5se2NvbnN0cnVjdG9yKGEpe3N1cGVyKGEpfX07dmFyIGdfZT1mdW5jdGlvbihhLGIpe3ZhciBjPV8ud3ooYil8fDEsZD1hLmMyKGIsYyksZT1fLkxqKGIsMjcpLGYsZz1lX2V8fGEuQWEhPT1jfHxlJiZhLm9hIT09ZXx8KChmPV8uZGkoYiwyOSkpIT1udWxsP2Y6ITEpfHxfLmVpKGIsMjApPT09MTE0LGgsaztpZigoKGg9Xy5xKGIsXy5weiwxNCkpPT1udWxsPzA6KGs9Xy5wWmUoaCkpPT1udWxsPzA6Xy50KGssMSkpJiZfLmVpKGIsMjApPT09MTE0KXtsZXQgbSxuO2Quc2V0KCJtc3RrIiwoKG09Xy5xKGIsXy5weiwxNCkpPT1udWxsP3ZvaWQgMDoobj1fLnBaZShtKSk9PW51bGw/dm9pZCAwOl8udChuLDEpKXx8IiIpfWZfZSYmKGI9KG5ldyBfLmt1KF8ubHUoKS50b1N0cmluZygpKSkuc2VhcmNoUGFyYW1zLmdldCgibnNvdXJjZSIpKSYmZC5zZXQoIm5zb3VyY2UiLGIpO2lmKGcpcmV0dXJuIGEuQWE9YyxhLm9hPWUsXy5VeChhLlRpLHt1cmxQYXJhbXM6ZH0pO2EuQWE9YzthLm9hPWU7cmV0dXJuIF8uUTViKGEuVGkse3VybFBhcmFtczpkfSl9LAprX2U9YXN5bmMgZnVuY3Rpb24oYSxiKXt2YXIgYz0oMCxfLk1mKSgpLGQ9YygpO2M9YygxKTt0cnl7aWYoIWIuQWEoKXx8IWEuZGF0YS5vYSgpfHxiLkFhKCk9PT1hLmRhdGEub2EoKSl7aF9lKGEsXy5nb2MoXy5mb2MoXy5qb2MoWFplKF8ubnBjKG5ldyBfLnJ6LF8uTGooYiwxOCkpLF8uYmsoYiwxOSwkWmUpKSxfLlNoKGIsXy5rb2MsMjAsJFplKSksXy5jaShiLDEyKSksXy5MaihiLDEzKSkpO3ZhciBlPV8udlllKGIub2EoKSk/Xy56WWUoYi53YSgpKTpbXSxmPV8uQVllKGEuZ2V0Um9vdCgpLGIud2EoKSksZz0obmV3IF8uZk0pLkFhKF8uY2koYS5kYXRhLDEyKSkud2EoXy5MaihhLmRhdGEsMTMpKSxoPV8ucG0oYS5nZXREYXRhKCJvZmJsIiksIiIpLnNwbGl0KCIsIikuaW5jbHVkZXMoU3RyaW5nKGIub2EoKSkpLGs9dm9pZCAwO2lmKGIuQmEoKT09PSJzdXJ2ZXkgZmVlZGJhY2sifHxiLm9hKCk9PT0xODEmJmlfZSl7bGV0IG09Xy5MaihiLDE4KTttJiZtPT09YS5CYSYmYS53YT8KKGs9Yyhhd2FpdCBkKGEud2EpKSxhLkJhPXZvaWQgMCxhLndhPXZvaWQgMCk6az1jKGF3YWl0IGQoXy5DWGUoKSkpfWsmJihrPV8udVllKGssXy5MaihiLDIxKXx8IiIpKTtyZXR1cm4gXy5OWmUoYS5NMyxiLGcsZixlLGgsayxtPT5qX2UoYSxtKSxhLmdldERhdGEoImVhdSIpLkxiKCkpLnRoZW4oKCk9PntfLlhnKGRvY3VtZW50LmJvZHksImFseTFWIil9LCgpPT57Xy5YZyhkb2N1bWVudC5ib2R5LCJCQm5YSiIpfSl9fWZpbmFsbHl7ZCgpfX0saF9lPWZ1bmN0aW9uKGEsYil7dmFyIGM9Xy5MaihiLDI3KXx8bnVsbDthLmdldFJvb3QoKS5zZXREYXRhKCJwcm94eSIsYyk7aWYoYyl7Yz1fLmNpKGIsMTIpfHwwO2M9Yz4wP2MudG9TdHJpbmcoKTpudWxsO2xldCBkPV8uTGooYiwxMyl8fG51bGw7YS5nZXRSb290KCkuc2V0RGF0YSgicGlkIixjKTthLmdldFJvb3QoKS5zZXREYXRhKCJia3QiLGQpO18uYmsoYiwzMCxfLmRvYykmJmEuZ2V0Um9vdCgpLnNldERhdGEoInJvb3RuYW1lIixfLmJrKGIsCjMwLF8uZG9jKXx8IiIpOyhiPV8uU2goYixfLmtvYywzMixfLmRvYykpJiZfLkxqKGIsMSkmJl8uTGooYiwyKSYmKGEuZ2V0Um9vdCgpLnNldERhdGEoImZicnRkYW4iLF8uTGooYiwxKXx8IiIpLGEuZ2V0Um9vdCgpLnNldERhdGEoImZicnRkYXYiLF8uTGooYiwyKXx8IiIpKX19LGpfZT1mdW5jdGlvbihhLGIpe3ZhciBjPV8ubVplKFlaZShfLlpYZShfLldZZShfLllYZShfLlhYZShuZXcgXy5iWWUsXy5MaihhLmRhdGEsMikpLF8uTGooYS5kYXRhLDMpKS5zZXRBdHRyaWJ1dGUoXy5MaihhLmRhdGEsMTUpKSxfLlJqKGEuZGF0YSw1LF8ub2goKSkpLF8uY2koYS5kYXRhLDE4KSksXy5jaShhLmRhdGEsOCkpLF8ucShhLmRhdGEsXy5weiwxNCkpO2M9Y19lKGNfZShuZXcgZF9lLGMpLGIpO2M9YS5jMihhLmRhdGEsXy53eihhLmRhdGEpKS5zZXQoImtlZmIiLGxfZShjKSk7dmFyIGQ9Xy5sdSgpO2Q9ZC5nZXQoImFpb2giKT09PSIxInx8ZC5nZXQoImFpb2giKT09PSIyIjt2YXIgZT1hLmdldERhdGEoImFpb2giKS5MYigpOwooZHx8ZSkmJmMuc2V0KCJhaW9oIiwiMSIpO3ZhciBmLGc7KGI9KGY9Xy5xKGIsXy5weiwzMikpPT1udWxsP3ZvaWQgMDooZz1fLnBaZShmKSk9PW51bGw/dm9pZCAwOl8uTGooZywxKSkmJmMuc2V0KCJtc3RrIixiKTt2YXIgaDtmPShoPWEuSmIpIT1udWxsP2g6YS5UaTthPSgpPT57fTtfLlV4KGYse3VybFBhcmFtczpjfSkudGhlbihhLGEpO3JldHVybiEwfSxvX2U9ZnVuY3Rpb24oYSxiKXtpZihiLm9hKCkhPT1hLmRhdGEub2EoKSl7aWYoYS5kYXRhLm9hKCkhPT0iZ2xibCJ8fGEub2EhPT1iLm9hKCkpYS5ub3RpZnkoImlpQVdLYiIsbmV3IF8uQXopLF8uYjZiKGEuVGkpLGEua2E9ITF9ZWxzZXt2YXIgYz1fLmVpKGIsMTEpLGQ9bmV3IGJfZTtjPT09Mz9tX2UoYSxiLGQpOm5fZShhLGIsZCl9fSxtX2U9ZnVuY3Rpb24oYSxiLGMpe3ZhciBkPV8ubXBjKGEuZGF0YSxiKSxlPSFhLkdhO2UmJmMua2Euc3RhcnQoKTtnX2UoYSxkKS50aGVuKGY9PntmJiZlJiYoYV9lKGMsImtmdWxsIiksCmEuR2E9ITApO2Eubm90aWZ5KCJod085R2QiLGQpfSwoKT0+e2Eubm90aWZ5KCJod085R2QiLGQpfSl9LG5fZT1hc3luYyBmdW5jdGlvbihhLGIsYyl7dmFyIGQ9KDAsXy5NZikoKSxlPWQoKTtkPWQoMSk7dHJ5e2Eua2E9ITA7cF9lJiZhLm1vZGVsLkJhKGQoYXdhaXQgZShfLkNYZSgpKSkpO1paZShhLk0zLHA9PmxfZShjX2UobmV3IGRfZSxwKSkpO2xldCBmPV8ubXBjKGEuZGF0YS5jbG9uZSgpLGIpO2hfZShhLGYpO2xldCBnPV8ud3ooZil8fDEsaD1fLmVpKGYsMjApfHwwLGs9YS5nZXRSb290KCkuZ2V0RGF0YSgiY2RvYyIpLkxiKCl8fF8uZGkoZiwyNik/IiI6bnVsbDthLmdldFJvb3QoKS5zZXREYXRhKCJjZG9jIixrKTtsZXQgbT0oKT0+e3ZhciBwLHI9Xy5zb2MoXy5hWGUobmV3IF8uQXosMSkuQmEoZi5vYSgpKS5vYShnKS5JYShfLkxqKGYsNyl8fCIiKSxoKS5zZXRBdHRyaWJ1dGUoXy5MaihmLDE1KSkuT2EoKHA9Xy5jaShmLDE4KSk9PW51bGw/dm9pZCAwOnAudG9TdHJpbmcoKSkuRWEoXy5xKGYsCl8ucHosMTQpKTtpZigoXy53eihmKT09PTV8fF8ud3ooZik9PT0xN3x8Xy53eihmKT09PTE4fHxfLnd6KGYpPT09MjN8fF8ud3ooZik9PT0zMCkmJmEubEphLmp5YSl7cD1fLnpYZShyKTtwPV8uQmoocCxfLm9aZSw0KTt2YXIgeD1bLi4uXy5SaihwLDE0LF8ub2goKSldO3g9cV9lKGEseCk7cD1fLkd0YShwLDE0LHgpO18uZmgocCwxLGEubEphLmp5YSl9Xy53ZShmLDgpJiYocD1fLnpYZShyKSx4PV8uY2koZiw4KSxfLmxrKHAsMTYseCkpO18ucGgoZiwyNSkmJihwPV8uelhlKHIpLHg9Xy5MaihmLDI1KSxfLmZoKHAsMTkseCkpO18udWooZiwyMikmJnIuUmEoXy5PYShfLmJqKF8udWooZiwyMikpLDQpKTtpZihhLklifHxfLmRpKGYsMjQpKXA9Xy5DeihhLmdldFJvb3QoKSkuZmlyc3QoKSx4PV8uZ00ocCwidmVkIikscj1fLnVYZShyLF8ualhlKF8ua1hlKG5ldyBfLmZNLF8uTGooZiwzKSksXy5MaihmLDIpKS5BYShfLmNpKGYsMTIpKS53YShfLkxqKGYsMTMpKSx4KS5OYShfLmpwYyhfLnppKHApKS50cmltKCkuc3Vic3RyaW5nKDAsCjFFMykpO3A9YS5JYXx8Xy5kaShmLDMxKXx8ITE7YS5tb2RlbC5NZihyLCExLHApfSxuPSFhLkVhO24mJmMua2Euc3RhcnQoKTtnX2UoYSxmKS50aGVuKHA9PntwJiZuJiYoYV9lKGMsImtma2VsbCIpLGEuRWE9ITApO20oKX0sbSl9ZmluYWxseXtlKCl9fSxxX2U9ZnVuY3Rpb24oYSxiKXthPWEuZ2V0Um9vdCgpLmNsb3Nlc3QoJ1tqc25hbWU9IlpMeHNxZiJdJykuaGIoKTtpZighYSlyZXR1cm5bXTt2YXIgYz1bXTthLnF1ZXJ5U2VsZWN0b3JBbGwoJ1tqc25hbWU9ImZCTXhxZiJdJykuZm9yRWFjaChkPT57KGQ9ZC5nZXRBdHRyaWJ1dGUoImRhdGEtbWZpdWkiKSkmJiFiLmluY2x1ZGVzKGQpJiZjLnB1c2goZCl9KTtyZXR1cm4gY30scl9lPWZ1bmN0aW9uKGEsYil7dmFyIGM7KGI9PW51bGw/MDpiLm9hKCkpJiYoKGM9YS5kYXRhKT09bnVsbD8wOmMub2EoKSkmJihiPT1udWxsP3ZvaWQgMDpiLm9hKCkpIT09YS5kYXRhLm9hKCl8fChhLkthP2EubW9kZWwuZ29CYWNrKG5ldyBfLkF6KToKYS5tb2RlbC5NZihuZXcgXy5BeiwhMSksYS5rYSYmKF8uJG5jKCJmZSIpLGEua2E9ITEpKX0sbF9lPWZ1bmN0aW9uKGEpe2E9YS5GYygpO2E9KG5ldyBUZXh0RW5jb2RlcikuZW5jb2RlKGEpO2E9KG5ldyBfLlNSYihhKSkuQ3VhKCk7cmV0dXJuIF8uT2EoYSw0KX0sc19lPWNsYXNzIGV4dGVuZHMgXy5oc3tzdGF0aWMgUWEoKXtyZXR1cm57bW9kZWw6e1JQOl8uZU19LExsOntjMDpfLmlYZX0sZmY6e3BEOl8ucnp9LHNlcnZpY2U6e00zOl8uUVplLGxKYTpfLlNaZX0saG5hOntUaToiR2tqZUlmIn19fWNvbnN0cnVjdG9yKGEpe3N1cGVyKCk7dGhpcy5KYj10aGlzLlZhKCJXS2lqU2QiKS5lbCgpO3RoaXMuS2E9dGhpcy5nZXREYXRhKCJmaHMiKS5MYigpfHxfLkdYZSh0aGlzLmdldFJvb3QoKSk7dGhpcy5JYj10aGlzLmdldERhdGEoInNwcyIpLkxiKCk7dGhpcy5BYT0wO3RoaXMub2E9dm9pZCAwO3RoaXMuSWE9dGhpcy5nZXREYXRhKCJkc3QiKS5MYigpO3RoaXMuR2E9dGhpcy5FYT10aGlzLmthPQohMTt0aGlzLndhPXRoaXMuQmE9dm9pZCAwO3RoaXMubW9kZWw9YS5tb2RlbC5SUDthLkxsLmMwJiYodGhpcy5tb2RlbD1hLkxsLmMwKTt2YXIgYjt0aGlzLmRhdGE9KChiPWEuZmYpPT1udWxsP3ZvaWQgMDpiLnBEKXx8Xy51bSh0aGlzLmdldERhdGEoIm1haW5kYXRhIiksXy5yeik7dGhpcy5NMz1hLnNlcnZpY2UuTTM7dGhpcy5sSmE9YS5zZXJ2aWNlLmxKYTt0aGlzLlRpPWEuaG5hLlRpO3RoaXMuaW5pdGlhbGl6ZSgpfWluaXRpYWxpemUoKXt2YXIgYT10aGlzLm1vZGVsLmdldFN0YXRlKCk7YS5KYigpJiZfLnJvYyhhKT09PXRoaXMuZGF0YS5vYSgpPyhfLkRYZShhLCJSZXN0b3JlIHN0YXRlIG9uIHBhZ2UgcmVmcmVzaCIpLGE9KCk9Pnt0aGlzLm1vZGVsLm9hKCl9LGdfZSh0aGlzLHRoaXMuZGF0YSkudGhlbihhLGEpKTpfLllrYih0aGlzLmRhdGEsNSkhPT0xfHxfLlNqKHRoaXMuZGF0YSw1LDApIT09IlNIT1BQSU5HInx8Xy5Rayh0aGlzLmRhdGEsNikmJl8udXoodGhpcy5kYXRhKSE9PQoxJiZfLnV6KHRoaXMuZGF0YSkhPT0wfHxfLnZ6KHRoaXMuZGF0YSw0KX1hc3luYyBBYihhKXthPWEuZGF0YT9fLmJjKF8uVlplLGEuZGF0YSk6bmV3IF8uVlplO3JldHVybiBrX2UodGhpcyxhKX1GYihhKXthLmRhdGEmJmEuZGF0YS5pZCYmKHRoaXMuQmE9YS5kYXRhLmlkLHRoaXMud2E9Xy5DWGUoKSl9YXN5bmMgTmEoYSl7cmV0dXJuIGtfZSh0aGlzLGEuZGF0YSl9cmIoYSl7cmV0dXJuIGpfZSh0aGlzLGEuZGF0YSl9U2EoYSl7YT1hLmRhdGE/Xy5iYyhfLnJ6LGEuZGF0YSk6bmV3IF8ucno7b19lKHRoaXMsYSl9UmEoYSl7b19lKHRoaXMsYS5kYXRhKX1QYShhKXthPWEuZGF0YT9fLmJjKF8ucnosYS5kYXRhKTpuZXcgXy5yejtyX2UodGhpcyxhKX1PYShhKXtyX2UodGhpcyxhLmRhdGEpfVphKCl7dGhpcy5nZXRSb290KCkudG9nZ2xlQ2xhc3MoIk92c3lJZCIsITEpO18uJG5jKCJkbyIpfW5iKCl7dGhpcy5nZXRSb290KCkudG9nZ2xlQ2xhc3MoIk92c3lJZCIsITApO18uJG5jKCJkYyIpOwpfLiRuYygiZmUiKTt0aGlzLmthPSExfWMyKGEsYil7dmFyIGM9bmV3IE1hcDtjLnNldCgia3BmYmF1dGgiLF8uZGkoYSwxKT09PSEwPyIxIjoiMCIpO2Muc2V0KCJrcGZidmVydGljYWxpZCIsXy5SaihhLDUsXy5vaCgpKS5qb2luKCIsIikpO18ucGgoYSwyKSYmYy5zZXQoImtwZmJlbnRpdHkiLF8uTGooYSwyKXx8IiIpO18ucGgoYSwzKSYmYy5zZXQoImtwZmJlbnRpdHluYW1lIixfLkxqKGEsMyl8fCIiKTtfLnBoKGEsOSkmJmMuc2V0KCJrcGZib3NycHVpdmVydGljYWwiLF8uTGooYSw5KXx8IiIpO18ucGgoYSwxMCkmJmMuc2V0KCJobCIsXy5MaihhLDEwKXx8Im5vIik7YiYmYy5zZXQoImtwZmJmdHlwZSIsYi50b1N0cmluZygpKTtyZXR1cm4gY319O3NfZS5wcm90b3R5cGUuJHdhJEt5eGpDZD1mdW5jdGlvbigpe3JldHVybiB0aGlzLm5ifTtzX2UucHJvdG90eXBlLiR3YSRDcVVHcmY9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5aYX07c19lLnByb3RvdHlwZS4kd2EkaFJ3U2diPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuT2F9OwpzX2UucHJvdG90eXBlLiR3YSRzNUNVaWY9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5QYX07c19lLnByb3RvdHlwZS4kd2EkTWxQMmplPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuUmF9O3NfZS5wcm90b3R5cGUuJHdhJEZiaFJHPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuU2F9O3NfZS5wcm90b3R5cGUuJHdhJG5hYTV2ZT1mdW5jdGlvbigpe3JldHVybiB0aGlzLnJifTtzX2UucHJvdG90eXBlLiR3YSRVaERVbmQ9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5OYX07c19lLnByb3RvdHlwZS4kd2EkR2RFYnhjPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuRmJ9O3NfZS5wcm90b3R5cGUuJHdhJEtHUUhKZD1mdW5jdGlvbigpe3JldHVybiB0aGlzLkFifTt2YXIgaV9lPV8ueG9jLHBfZT1fLlFvYyxmX2U9Xy5Vb2MsZV9lPV8uV29jO18uanMoXy5XWmUsc19lKTsKCl8udigpOwp9Y2F0Y2goZSl7Xy5fRHVtcEV4Y2VwdGlvbihlKX0KdHJ5ewpfLndwYz1fLmtjKCJ6R0xtM2IiLFtdKTsKfWNhdGNoKGUpe18uX0R1bXBFeGNlcHRpb24oZSl9CnRyeXsKXy5zcGM9ZnVuY3Rpb24oKXtyZXR1cm4gd2luZG93Lm1hdGNoTWVkaWE/d2luZG93Lm1hdGNoTWVkaWEoIihmb3JjZWQtY29sb3JzOiBhY3RpdmUpIikubWF0Y2hlcz8yOndpbmRvdy5tYXRjaE1lZGlhKCIoZm9yY2VkLWNvbG9yczogbm9uZSkiKS5tYXRjaGVzPzE6MDowfTsKfWNhdGNoKGUpe18uX0R1bXBFeGNlcHRpb24oZSl9CnRyeXsKXy51KCJ6R0xtM2IiKTsKdmFyIHhwYz0hIShfLk9pWzBdJjIpO3ZhciB5cGM9ISEoXy5PaVsxN10+PjE4JjEpO3ZhciB6cGM9ISEoXy5PaVs0NV0+PjIzJjEpO3ZhciBBcGM9ISEoXy5PaVsxOF0mNTEyKTt2YXIgQnBjPW5ldyBfLmFvLENwYz1jbGFzcyBleHRlbmRzIF8uaHN7Y29uc3RydWN0b3IoKXtzdXBlcigpO3RoaXMua2E9Xy5ZbihCcGMsYT0+bmV3IGEodGhpcy5nZXRSb290KCkpKTt0aGlzLm9hKCk7dGhpcy53YSgpfW9hKCl7dmFyIGE9Xy5jaCgpO2ZvcihsZXQgYiBvZiB0aGlzLmthKXtsZXQgYz1iLlMkYSgpO2MmJmEuR2MoY1swXSxjWzFdKX1hLmxvZygpfXdhKCl7dmFyIGE9IiI7Zm9yKHZhciBiIG9mIHRoaXMua2Epe2xldCBjPWIuQWJiKCk7YyYmKGEubGVuZ3RoPjAmJihhKz0iJiIpLGErPWMuam9pbigiPSIpKX1hLmxlbmd0aD4wJiYoYT1fLkhtYShgL2NsaWVudF8yMDQ/JHthfWAsbmV3IE1hcCwhMSwhMSksYj1uZXcgXy5wcixiLnNldFdpdGhDcmVkZW50aWFscyghMCksYi5zZW5kKGEpKX19O0NwYy5wcm90b3R5cGUuJHdhJFpoZER2Zj1mdW5jdGlvbigpe3JldHVybiB0aGlzLndhfTtDcGMucHJvdG90eXBlLiR3YSRmZ0NWeWM9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5vYX07Cl8uanMoXy53cGMsQ3BjKTt2YXIgRHBjPWNsYXNze2NvbnN0cnVjdG9yKGEpe3RoaXMub2E9dGhpcy5rYT0wO3RoaXMua2E9Xy5zcGMoKTt0aGlzLm9hPV8uQ2QoYS5nZXREYXRhKCJmYyIpLDApfVMkYSgpe3JldHVyblsiZmMiLFN0cmluZyh0aGlzLmthKV19QWJiKCl7cmV0dXJuIHRoaXMua2EhPT10aGlzLm9hP1siZmMiLFN0cmluZyh0aGlzLmthKV06bnVsbH19O3hwYyYmXy5abihCcGMsRHBjKTt2YXIgRXBjPWNsYXNze2NvbnN0cnVjdG9yKGEpe3RoaXMub2E9dGhpcy5rYT0iMCI7dGhpcy5rYT13aW5kb3cubWF0Y2hNZWRpYT93aW5kb3cubWF0Y2hNZWRpYSgiKHByZWZlcnMtY29udHJhc3Q6IGxlc3MpIikubWF0Y2hlcz8iMSI6d2luZG93Lm1hdGNoTWVkaWEoIihwcmVmZXJzLWNvbnRyYXN0OiBtb3JlKSIpLm1hdGNoZXM/IjIiOndpbmRvdy5tYXRjaE1lZGlhKCIocHJlZmVycy1jb250cmFzdDogY3VzdG9tKSIpLm1hdGNoZXM/IjMiOiIwIjoiMCI7dGhpcy5vYT1fLnBtKGEuZ2V0RGF0YSgicGNvbiIpLCItMSIpfVMkYSgpe3JldHVyblsicGNvbiIsdGhpcy5rYV19QWJiKCl7cmV0dXJuIHRoaXMua2EhPT10aGlzLm9hP1sicGNvbiIsdGhpcy5rYV06bnVsbH19O3pwYyYmXy5abihCcGMsRXBjKTt2YXIgRnBjPWNsYXNze2NvbnN0cnVjdG9yKGEpe3RoaXMub2E9dGhpcy5rYT0iMCI7dGhpcy5rYT13aW5kb3cubWF0Y2hNZWRpYT93aW5kb3cubWF0Y2hNZWRpYSgiKHByZWZlcnMtY29sb3Itc2NoZW1lOiBsaWdodCkiKS5tYXRjaGVzPyIxIjp3aW5kb3cubWF0Y2hNZWRpYSgiKHByZWZlcnMtY29sb3Itc2NoZW1lOiBkYXJrKSIpLm1hdGNoZXM/IjIiOiIwIjoiMCI7dGhpcy5vYT1fLnBtKGEuZ2V0RGF0YSgicGNzIiksIjAiKX1TJGEoKXt2YXIgYT0iNCI7dGhpcy5rYT09PSIxIj9hPSIyIjp0aGlzLmthPT09IjIiJiYoYT0iMyIpO3JldHVyblsiZHQxOSIsYCR7YX1gXX1BYmIoKXtyZXR1cm4gdGhpcy5rYSE9PXRoaXMub2E/WyJjcyIsdGhpcy5rYV06bnVsbH19O0FwYyYmXy5abihCcGMsRnBjKTt2YXIgR3BjPWNsYXNze2NvbnN0cnVjdG9yKGEpe3RoaXMub2E9dGhpcy5rYT0iMCI7dGhpcy5rYT13aW5kb3cubWF0Y2hNZWRpYSYmKHdpbmRvdy5tYXRjaE1lZGlhKCIocHJlZmVycy1yZWR1Y2VkLW1vdGlvbikiKS5tYXRjaGVzfHx3aW5kb3cubWF0Y2hNZWRpYSgiKHByZWZlcnMtcmVkdWNlZC1tb3Rpb246IHJlZHVjZSkiKS5tYXRjaGVzKT8iMSI6IjAiO3RoaXMub2E9YS5nZXREYXRhKCJwcm0iKS5MYigpPyIxIjoiMCJ9UyRhKCl7cmV0dXJuWyJwcm0yMyIsdGhpcy5rYV19QWJiKCl7cmV0dXJuIHRoaXMua2EhPT10aGlzLm9hP1sicHJtIix0aGlzLmthXTpudWxsfX07eXBjJiZfLlpuKEJwYyxHcGMpOwpfLnYoKTsKfWNhdGNoKGUpe18uX0R1bXBFeGNlcHRpb24oZSl9CnRyeXsKCnZhciBGbGssRWxrLEdsaztGbGs9ZnVuY3Rpb24oYSxiKXtpZihiLmthJiZiLndhJiZhLmdldEJvdW5kaW5nQ2xpZW50UmVjdCYmInZpc2libGUiPT09KF8ua24oYSwidmlzaWJpbGl0eSIpfHwidmlzaWJsZSIpKXt2YXIgYyxkPShjPWIua2EpPT1udWxsP3ZvaWQgMDpjLmthO2E9ZC5oZWlnaHQ9PT0wfHxkLndpZHRoPT09MD9udWxsOl8uRGxrKGEsZCl9ZWxzZSBhPW51bGw7aWYoIWF8fGEuaXNFbXB0eSgpKXJldHVybiAwO2I9Yi5rYS5rYTtyZXR1cm4oYS5yaWdodC1hLmxlZnQpL2Iud2lkdGgqKEVsayhhLmJvdHRvbS9iLmhlaWdodCktRWxrKGEudG9wL2IuaGVpZ2h0KSl9OwpfLmJaPWZ1bmN0aW9uKGEsYil7aWYoIShiJiZiLmthJiZiLndhJiZhLmdldEJvdW5kaW5nQ2xpZW50UmVjdCYmInZpc2libGUiPT09KF8ua24oYSwidmlzaWJpbGl0eSIpfHwidmlzaWJsZSIpKSlyZXR1cm4gMDtiPWIua2Eua2E7aWYoYi5oZWlnaHQ9PT0wfHxiLndpZHRoPT09MClyZXR1cm4gMDt2YXIgYz1hLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO2E9TWF0aC5tYXgoTWF0aC5yb3VuZChjLnRvcCksMCk7dmFyIGQ9TWF0aC5taW4oTWF0aC5yb3VuZChjLmJvdHRvbSksYi5oZWlnaHQpLGU9TWF0aC5tYXgoTWF0aC5yb3VuZChjLmxlZnQpLDApO2M9TWF0aC5taW4oTWF0aC5yb3VuZChjLnJpZ2h0KSxiLndpZHRoKTtyZXR1cm4gYT5kfHxlPmM/MDooZC1hKSooYy1lKS8oYi53aWR0aCpiLmhlaWdodCl9OwpfLkRsaz1mdW5jdGlvbihhLGIpe2E9YS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtyZXR1cm4gbmV3IEdsayhNYXRoLm1heChNYXRoLnJvdW5kKGEudG9wKSwwKSxNYXRoLm1pbihNYXRoLnJvdW5kKGEuYm90dG9tKSxiLmhlaWdodCksTWF0aC5tYXgoTWF0aC5yb3VuZChhLmxlZnQpLDApLE1hdGgubWluKE1hdGgucm91bmQoYS5yaWdodCksYi53aWR0aCkpfTtFbGs9ZnVuY3Rpb24oYSl7cmV0dXJuIGE8MD8wOmE+MT8xOmE8LjU/MiphKmE6YT4uNT8xLTIqKDEtYSkqKDEtYSk6LjV9O18uSGxrPWZ1bmN0aW9uKCl7cmV0dXJuIF8uQmQoIkxWSVhYYiIpLlRnKF8uVm8sMSk9PT0xfTtfLktsaz1mdW5jdGlvbihhLGIsYyl7cmV0dXJuIF8uSGxrKCk/bmV3IF8uSWxrKGEsYyxiKTpuZXcgSmxrKGEsYyxiKX07Ckdsaz1jbGFzc3tjb25zdHJ1Y3RvcihhLGIsYyxkKXt0aGlzLnRvcD1hO3RoaXMuYm90dG9tPWI7dGhpcy5sZWZ0PWM7dGhpcy5yaWdodD1kfWlzRW1wdHkoKXtyZXR1cm4gdGhpcy50b3A+dGhpcy5ib3R0b218fHRoaXMubGVmdD50aGlzLnJpZ2h0fX07dmFyIE5sayxKbGs7Xy5MbGs9ZnVuY3Rpb24oYSxiKXt2YXIgYz1fLmJaKGEuUHouZWxlbWVudCxhLmtjKSxkPU1hdGgubWluKGItYS5CYSwzRTQpOyFhLklhJiYhYS5vYSYmYz4wJiYoYS5LYT1hLkJhKTthLm9hKz1kKmEuR2E7YS5HYT1jO2EuUGEoZCk7IWEuQWEmJmEub2EmJmM9PT0wJiYoYS5BYT1iKTthLkJhPWJ9O18uTWxrPWZ1bmN0aW9uKGEsYixjKXtfLkxsayhhLGIpO2I9W2Eub2EsYS5PYShiKV07YyYmYS53YSgpO3JldHVybiBifTtObGs9Y2xhc3N7Y29uc3RydWN0b3IoYSxiLGMpe3RoaXMuUHo9YTt0aGlzLmtjPWM7dGhpcy5CYT1EYXRlLm5vdygpO3RoaXMuS2E9dGhpcy5vYT10aGlzLkdhPTA7dGhpcy5JYT0hMTt0aGlzLkFhPTA7dGhpcy5OYT0hMTt0aGlzLkdhPV8uYloodGhpcy5Qei5lbGVtZW50LHRoaXMua2MpO3RoaXMuQmE9Yn1QYSgpe313YSgpe3RoaXMub2E9MH19OwpKbGs9Y2xhc3MgZXh0ZW5kcyBObGt7Y29uc3RydWN0b3IoYSxiLGMpe3N1cGVyKGEsYixjKTt0aGlzLmthPXRoaXMuRWE9MDt0aGlzLkVhPUZsayh0aGlzLlB6LmVsZW1lbnQsdGhpcy5rYyl9T2EoKXtyZXR1cm4gdGhpcy5rYX1QYShhKXt2YXIgYj1GbGsodGhpcy5Qei5lbGVtZW50LHRoaXMua2MpO3RoaXMua2ErPWEqdGhpcy5FYTt0aGlzLkVhPWJ9d2EoKXtzdXBlci53YSgpO3RoaXMua2E9MH19OwpfLklsaz1jbGFzcyBleHRlbmRzIE5sa3tjb25zdHJ1Y3RvcihhLGIsYyl7c3VwZXIoYSxiLGMpO3RoaXMuRWE9dGhpcy5rYT0wfUtRKGEpe3RoaXMua2EmJihhLT10aGlzLmthLGE+NTAmJih0aGlzLkVhKz1hKSx0aGlzLmthPTApfU9hKGEpe3RoaXMua2EmJih0aGlzLktRKGEpLHRoaXMua2F8fCh0aGlzLmthPWEpKTtyZXR1cm4gdGhpcy5vYT8uNzc1Njc3NTY3MjA5NzQwOSp0aGlzLm9hKy4yMjAyNzk1NjkyMjYxODI0MSp0aGlzLkVhOjB9d2EoKXtzdXBlci53YSgpO3RoaXMuRWE9MH19Owp9Y2F0Y2goZSl7Xy5fRHVtcEV4Y2VwdGlvbihlKX0KdHJ5ewpfLkNsaz1fLmtjKCJEaFBZbWUiLFtdKTsKfWNhdGNoKGUpe18uX0R1bXBFeGNlcHRpb24oZSl9CnRyeXsKXy53bGs9ZnVuY3Rpb24oYSxiKXtiLmZvckVhY2goKGMsZCk9PnthLkdjKGQsYyl9KTtyZXR1cm4gYX07Xy54bGs9ISEoXy5PaVszN10+PjIxJjEpO18ueWxrPSEhKF8uT2lbMzddPj4yMiYxKTtfLnpsaz0hIShfLk9pWzM3XT4+MjUmMSk7Xy5BbGs9ISEoXy5PaVszN10+PjI2JjEpO18uQmxrPV8uT2lbMzhdJjY0PzEwMDo1MDA7Cn1jYXRjaChlKXtfLl9EdW1wRXhjZXB0aW9uKGUpfQp0cnl7Cl8uRE5pPWNsYXNze2NvbnN0cnVjdG9yKGEsYil7dGhpcy5ldmVudFR5cGU9YTt0aGlzLm9BPWJ9fTsKfWNhdGNoKGUpe18uX0R1bXBFeGNlcHRpb24oZSl9CnRyeXsKXy5jYWQ9e3UyYToiaXN0YXRlIixYZ2I6ImZwc3RhdGUiLE1wZDoic2llIixwSWI6ImZsdCIsVmhjOiJwaWUiLHpqYzoidHJleCIsejRjOiJlcGQiLFBnZDoib3N2IixTNmM6Im1wZCJ9O18uUkU9T2JqZWN0LmFzc2lnbih7fSxfLmNhZCx7dEliOiJpbWdyYyIscTljOiJpbWdkaWkiLFVoYjoib3Nob3AifSk7Cn1jYXRjaChlKXtfLl9EdW1wRXhjZXB0aW9uKGUpfQp0cnl7Cl8uZWFkPWZ1bmN0aW9uKCl7cmV0dXJuIF8ubmphKF8uUkUsYT0+Xy5kYWQoYSkpfTtfLmZhZD1mdW5jdGlvbigpe3JldHVybiBfLm5qYShfLmNhZCxhPT5fLmRhZChhKSl9O18uZGFkPWZ1bmN0aW9uKGEpe3ZhciBiPV8uR2coYSk7cmV0dXJuIGI9PT0iIj8hMTphPT09Xy5SRS51MmE/YiE9PSIwIjphPT09Xy5SRS50SWI/YiE9PSJfIjphPT09Xy5SRS5wSWI/Yi5pbmRleE9mKCI7ZToxIikhPT0tMTohIWJ9Owp9Y2F0Y2goZSl7Xy5fRHVtcEV4Y2VwdGlvbihlKX0KdHJ5ewpfLnUoIkRoUFltZSIpOwp2YXIgR21rPWZ1bmN0aW9uKCl7Xy5jWiYmKEVtaygiYXR0bi1pdmlzIiwoKT0+e18uY1omJl8uRm1rKF8uY1osIkgiLCEwKX0pLEVtaygicGFnZWhpZGUiLCgpPT57Xy5jWiYmXy5GbWsoXy5jWiwiSCIsITApfSksRW1rKCJibHVyIiwoKT0+e18uY1omJl8uRm1rKF8uY1osIkIiLCEwKX0pLF8uZFouY29uZmlnLkVhfHxfLmRaLmNvbmZpZy53YXx8RW1rKCJiZWZvcmV1bmxvYWQiLCgpPT57Xy5jWiYmXy5GbWsoXy5jWiwiVSIsITApfSkpfTt2YXIgS21rO18uSW1rPWZ1bmN0aW9uKGEsYixjKXthLmthJiZhLlJhLnB1c2goSG1rKGIsYykpfTtfLmVaPWZ1bmN0aW9uKGEsYixjLGQsZT0hMSl7aWYoYS5BYVtkXSl7aWYoIWUpcmV0dXJuOyhlPWEuQWFbZF0pJiZfLmVhLmNsZWFyVGltZW91dChlKX1hLkFhW2RdPUhtayhiLGMpfTtfLkptaz1mdW5jdGlvbihhLGIpe2lmKGEuQWFbYl0hPW51bGwpe3ZhciBjPWEuQWFbYl07YyYmXy5lYS5jbGVhclRpbWVvdXQoYyk7ZGVsZXRlIGEuQWFbYl19fTtLbWs9ZnVuY3Rpb24oYSxiKXthLmthJiZhLlBhLnB1c2goXy5lYS5zZXRJbnRlcnZhbChiLDUwMCkpfTsKXy5MbWs9Y2xhc3MgZXh0ZW5kcyBfLkVke2NvbnN0cnVjdG9yKGEpe3N1cGVyKCk7dGhpcy5rYT1hO3RoaXMuUGE9W107dGhpcy5LYT17fTt0aGlzLlJhPVtdO3RoaXMuTmE9W107dGhpcy5BYT17fX1hZGRMaXN0ZW5lcihhLGIsYyxkPSExLGUpe2EmJnRoaXMua2EmJnRoaXMuTmEucHVzaCh0aGlzLmthLmxpc3RlbihhLGIsYyxkLGUpKX1xYygpe2Zvcih2YXIgYT0odGhpcy5QYXx8W10pLmxlbmd0aC0xO2E+PTA7YS0tKV8uZWEuY2xlYXJJbnRlcnZhbCh0aGlzLlBhW2FdKTt0aGlzLlBhPVtdO2Zvcih2YXIgYiBpbiB0aGlzLkthfHx7fSlfLmVhLmNsZWFySW50ZXJ2YWwodGhpcy5LYVtiXSk7dGhpcy5LYT17fTtmb3IoYj0odGhpcy5SYXx8W10pLmxlbmd0aC0xO2I+PTA7Yi0tKShhPXRoaXMuUmFbYl0pJiZfLmVhLmNsZWFyVGltZW91dChhKTt0aGlzLlJhPVtdO2Zvcih2YXIgYyBpbiB0aGlzLkFhfHx7fSkoYT10aGlzLkFhW2NdKSYmXy5lYS5jbGVhclRpbWVvdXQoYSk7dGhpcy5BYT0Ke307Zm9yKGM9MDtjPCh0aGlzLk5hfHxbXSkubGVuZ3RoO2MrKyl0aGlzLk5hW2NdJiZ0aGlzLmthLnZvKHRoaXMuTmFbY10pO3RoaXMuTmE9W107c3VwZXIucWMoKX19O3ZhciBNbWssTm1rO01taz1jbGFzc3tjb25zdHJ1Y3Rvcigpe3RoaXMua2E9dGhpcy5FYT0hMTt0aGlzLkdhPTEwMDt0aGlzLkJhPTU7dGhpcy5vYT01MDA7dGhpcy5JYT10aGlzLkFhPXRoaXMud2E9ITF9fTtObWs9Y2xhc3N7Y29uc3RydWN0b3IoKXt0aGlzLmthPXRoaXMuY3NoaWQ9dGhpcy52ZWQ9dGhpcy5laT0iIjt0aGlzLmNvbmZpZz1uZXcgTW1rfXNldENvbmZpZyhhKXt0aGlzLmNvbmZpZz1hfX07Xy5kWj1uZXcgTm1rO3ZhciBIbWssT21rLFBtaztIbWs9ZnVuY3Rpb24oYSxiKXtyZXR1cm4gYj09PTA/KF8uZWEuc2V0VGltZW91dChhLDApLDApOl8uZWEuc2V0VGltZW91dChhLGIpfTtPbWs9ZnVuY3Rpb24oYSxiKXthLlRkJiZhLlRkW2JdJiZhLlRkW2JdLmZvckVhY2goYz0+e3ZhciBkPWMubGlzdGVuZXIsZT1udWxsO2MuaGFuZGxlciYmKGU9Yy5oYW5kbGVyKTtkLmNhbGwoZSxuZXcgXy5aZChiKSl9KX07UG1rPWZ1bmN0aW9uKGEpe3ZhciBiPV8ucG0oXy5CZCgiUzA2R3JiIiksIiIpPyJsIjoicyI7cmV0dXJuIF8udWcoYixhLm9hKX07Cl8uUW1rPWNsYXNzIGV4dGVuZHMgXy5FZHtjb25zdHJ1Y3Rvcigpe3N1cGVyKCk7dGhpcy5vYT1fLnNNYTt0aGlzLmthPXRoaXMuVGQ9bnVsbDt0aGlzLm9wdGlvbnM9e319d2EoKXtzd2l0Y2goXy5iZigpLmdldFZpc2liaWxpdHlTdGF0ZSgpKXtjYXNlICJ1bmxvYWRlZCI6dGhpcy5vcHRpb25zLnVubG9hZCYmT21rKHRoaXMsImF0dG4taXZpcyIpO2JyZWFrO2Nhc2UgImhpZGRlbiI6T21rKHRoaXMsImF0dG4taXZpcyIpO2JyZWFrO2Nhc2UgInZpc2libGUiOk9tayh0aGlzLCJhdHRuLXZpcyIpfX1saXN0ZW4oYSxiLGMsZCxlKXt2YXIgZj1uZXcgXy5rbGEoYyxhLGIsISFkLGUpO3N3aXRjaChiKXtjYXNlICJhdHRuLWl2aXMiOmNhc2UgImF0dG4tdmlzIjphPV8uYmYoKTthLmlzU3VwcG9ydGVkKCkmJih0aGlzLlRkfHwodGhpcy5UZD17fSx0aGlzLmthPV8uaGUoYSwidmlzaWJpbGl0eWNoYW5nZSIsdGhpcy53YSwhMSx0aGlzKSksdGhpcy5UZFtiXT10aGlzLlRkW2JdfHxbXSx0aGlzLlRkW2JdLnB1c2goZikpOwpicmVhaztkZWZhdWx0Ol8uaGUoYSxiLGMsZCxlKX1yZXR1cm4gZn11bmxpc3RlbihhLGIsYyxkLGUpe3N3aXRjaChiKXtjYXNlICJhdHRuLWl2aXMiOmNhc2UgImF0dG4tdmlzIjpsZXQgZj1udWxsO2lmKHRoaXMuVGQmJihmPXRoaXMuVGRbYl0pKWZvcihiPTA7YjxmLmxlbmd0aDtiKyspaWYoZltiXS5zcmM9PT1hJiZmW2JdLmxpc3RlbmVyPT09YyYmZltiXS5jYXB0dXJlPT09ISFkJiZmW2JdLmhhbmRsZXI9PT1lKXtfLkNhKGYsYik7YnJlYWt9YnJlYWs7ZGVmYXVsdDpfLnpuKGEsYixjLGQsZSl9fXZvKGEpe3RoaXMudW5saXN0ZW4oYS5zcmMsYS50eXBlLGEubGlzdGVuZXIsYS5jYXB0dXJlLGEuaGFuZGxlcil9Y2xlYW51cCgpe3RoaXMuVGQmJnRoaXMua2EmJihfLkFuKHRoaXMua2EpLHRoaXMua2E9bnVsbCk7dGhpcy5UZD1udWxsfXFjKCl7dGhpcy5jbGVhbnVwKCl9fTt2YXIgUm1rPWNsYXNzIGV4dGVuZHMgXy5MbWt7b2EoKXt9fTt2YXIgU21rPWNsYXNze2NvbnN0cnVjdG9yKCl7dGhpcy55PXRoaXMueD10aGlzLmthPTB9fTt2YXIgVG1rO1Rtaz1mdW5jdGlvbihhLGIpe3ZhciBjPWEua2EtYi5rYTtiLmthKz1jO3JldHVybmAke2N9LCR7YS5vYSgpLmpvaW4oIiwiKX1gfTtfLmZaPWNsYXNze2NvbnN0cnVjdG9yKCl7dGhpcy5ldmVudFR5cGU9IiI7dGhpcy5rYT0wfUFhKCl7cmV0dXJuIG51bGx9d2EoKXtyZXR1cm4hMX1vYSgpe3JldHVybltdfX07dmFyIFVtaz1jbGFzcyBleHRlbmRzIF8uZlp7Y29uc3RydWN0b3IoKXtzdXBlcigpO3RoaXMua2E9RGF0ZS5ub3coKX1vYSgpe3JldHVyblsieCJdfX07dmFyIFZtaz1jbGFzc3t9O3ZhciBZbWssWG1rLFptaztfLldtaz1mdW5jdGlvbihhLGIpe2EuQWEuaW5kZXhPZihiKTwwJiYoYS5BYSs9Yil9O1ltaz1mdW5jdGlvbihhKXt2YXIgYj1YbWsoYSksYz1uZXcgU21rLGQ9YS5HYSxlPSExLGY9MCxnPWAmbWU9JHthLndhfWAsaD1nLmxlbmd0aCtiLmxlbmd0aDthLm9hLmZvckVhY2goKGssbSk9PntoPmQmJm0+MHx8KGY9bSxrPWA6JHtUbWsoayxjKX1gLGgrPWsubGVuZ3RoLGg+ZCYmbT4wP2U9ITA6Zys9ayl9KTtnPWAke2J9JHtnfWA7Yj1uZXcgVm1rO2IubWVzc2FnZT1nO2Iua2E9ZTtiLm9hPWU/ZjphLm9hLmxlbmd0aDtiLndhPWM7cmV0dXJuIGJ9OwpYbWs9ZnVuY3Rpb24oYSl7dmFyIGI9IiZ2PXQxIjtfLmRaLmVpJiYoYis9YCZlaT0ke18uZFouZWl9YCk7dmFyIGM9T2JqZWN0LmtleXMoYS5FYSkuam9pbigiIik7YyYmKGIrPWAmaW09JHtjfWApO2Eud2E9PTEmJmEuQWEmJihiKz1gJm09JHthLkFhfWApO18uZFouY3NoaWQmJihiKz1gJmNzaGlkPSR7Xy5kWi5jc2hpZH1gKTtfLmRaLmthJiYoYis9YCZhcWlkPSR7Xy5kWi5rYX1gKTtyZXR1cm5gJHtifSZwdj0ke2EuSWF9YH07Clptaz1jbGFzcyBleHRlbmRzIF8uRWR7Y29uc3RydWN0b3IoKXtzdXBlcigpO3RoaXMuR2E9MTkwMDt0aGlzLklhPSIiK01hdGgucmFuZG9tKCk7dGhpcy53YT0xO3RoaXMub2E9W25ldyBVbWtdO3RoaXMuQmE9LXRoaXMub2EubGVuZ3RoO3RoaXMuQWE9IiI7dGhpcy5FYT17fTt0aGlzLmthPW51bGx9aXNFbXB0eSgpe3JldHVybiB0aGlzLm9hLmxlbmd0aCt0aGlzLkJhPT0wfWFkZEV2ZW50KGEpe3ZhciBiPWEud2EodGhpcy5vYSk7aWYoIWIpe2ZvcihiPXRoaXMub2EubGVuZ3RoO2I+MCYmIShhLmthPj10aGlzLm9hW2ItMV0ua2EpO2ItLSl0aGlzLm9hW2JdPXRoaXMub2FbYi0xXTt0aGlzLm9hW2JdPWE7Yj1iPT0wfHxiPHRoaXMub2EubGVuZ3RoLTF9aWYoYnx8IXRoaXMua2F8fCF0aGlzLmthLm1lc3NhZ2UpcmV0dXJuIHRoaXMua2E9WW1rKHRoaXMpLHRoaXMua2Eua2E7aWYoIXRoaXMua2EpcmV0dXJuITE7Yj10aGlzLmthLm1lc3NhZ2U7Yj1gJHtifToke1RtayhhLHRoaXMua2Eud2EpfWA7CnRoaXMuR2EmJmIubGVuZ3RoPnRoaXMuR2EmJih0aGlzLmthLmthPSEwKTt0aGlzLmthLmthJiZ0aGlzLmthLm1lc3NhZ2UubGVuZ3RoIT0wfHwodGhpcy5rYS5tZXNzYWdlPWIsdGhpcy5rYS5vYT10aGlzLm9hLmxlbmd0aCk7cmV0dXJuIHRoaXMua2Eua2F9cmVzZXQoKXt0aGlzLklhPSIiK01hdGgucmFuZG9tKCk7dGhpcy53YT0xO3RoaXMub2E9W25ldyBVbWtdO3RoaXMuQmE9LXRoaXMub2EubGVuZ3RofX07dmFyICRtaz1jbGFzcyBleHRlbmRzIF8uZlp7Y29uc3RydWN0b3IoYSl7c3VwZXIoKTt0aGlzLkJhPWE7dGhpcy5rYT1EYXRlLm5vdygpfW9hKCl7cmV0dXJuWyJlIix0aGlzLkJhXX19O3ZhciBhbms9Y2xhc3N7Y29uc3RydWN0b3IoYSl7dmFyIGI9RGF0ZS5ub3coKTt0aGlzLnBheWxvYWQ9YTt0aGlzLmthPWJ9fSxibms9Y2xhc3MgZXh0ZW5kcyBfLkxta3tjb25zdHJ1Y3RvcihhLGIsYyxkKXtzdXBlcihiKTt0aGlzLkVhPWE7dGhpcy53YT1kfHxuZXcgUm1rKGIpO3RoaXMuQmE9Yzt0aGlzLklhPWBzLSR7Xy5kWi5laT9fLmRaLmVpOmAke0RhdGUubm93KCl9LSR7TWF0aC5yb3VuZChNYXRoLnJhbmRvbSgpKjFFMTApfWB9YDt0aGlzLk9hPV8ucG0oXy5CZCgiUzA2R3JiIiksIiIpfHxudWxsO3RoaXMub2E9UG1rKGIpO3RoaXMuR2E9MDt0aGlzLm9hJiZfLmRaLmNvbmZpZy5BYSYmKF8uSW1rKHRoaXMsKCk9PntpZih0aGlzLm9hKXt2YXIgZT0vdGFicy8sZj0vLio/LWR0LVswLTldKyQvO2ZvcihsZXQge2tleTpnfW9mIHRoaXMub2EpaWYoZS50ZXN0KGcpKXRoaXMub2EmJnRoaXMub2EucmVtb3ZlKGcpO2Vsc2UgaWYodGhpcy5vYSYmdGhpcy53YSYmZi50ZXN0KGcpKXtsZXQgaD0KdGhpcy5vYS5nZXQoZyk7aC5rYSYmaC5rYT5EYXRlLm5vdygpLTg2NEU1JiZ0aGlzLndhLm9hKHRoaXMuRWEsaC5wYXlsb2FkKTt0aGlzLm9hJiZ0aGlzLm9hLnJlbW92ZShnKX19fSw1MDApLEttayh0aGlzLCgpPT57aWYodGhpcy5vYSl7dmFyIGU9RGF0ZS5ub3coKSxmPS8uKj8tZHQtWzAtOV0rJC87Zm9yKGxldCB7a2V5Omd9b2YgdGhpcy5vYSl0aGlzLm9hJiZmLnRlc3QoZykmJnRoaXMub2EuZ2V0KGcpLmthPGUtNTAwJiZ0aGlzLm9hJiZ0aGlzLm9hLnJlbW92ZShnKX19KSl9cWMoKXt0aGlzLm9hJiYodGhpcy5vYT1udWxsKTt0aGlzLndhJiYodGhpcy53YS5kaXNwb3NlKCksdGhpcy53YT1udWxsKTt0aGlzLkJhPW51bGw7c3VwZXIucWMoKX19O3ZhciBFbWssY25rLGRuaztFbWs9ZnVuY3Rpb24oYSxiKXt2YXIgYz1fLmNaLGQ9d2luZG93O2QmJmMuYWRkTGlzdGVuZXIoZCxhLGIsITEsdm9pZCAwKX07Y25rPWZ1bmN0aW9uKGEsYil7dmFyIGM9RGF0ZS5ub3coKTthLkdhPjAmJmMtYS5HYTwzMDB8fChhLkdhPWMsYS5vYS5pc0VtcHR5KCkmJiFhLndhfHxhLmxvZyhuZXcgJG1rKGIpKSxhLkJhKCkpfTtfLkZtaz1mdW5jdGlvbihhLGIsYz0hMSl7Yz9jbmsoYSxiKTpfLkltayhhLCgpPT57Y25rKGEsYil9LDApfTsKZG5rPWNsYXNzIGV4dGVuZHMgXy5MbWt7Y29uc3RydWN0b3IoYSxiLGMpe3N1cGVyKGIpO3RoaXMub2E9bmV3IFptazt0aGlzLndhPW5ldyBibmsoYSxiLHRoaXMub2EsYyk7dGhpcy5FYT0hMDt0aGlzLkdhPTB9QmEoKXtpZih0aGlzLndhKXt2YXIgYT10aGlzLndhO2lmKGEuQmEmJiFhLkJhLmlzRW1wdHkoKSYmYS53YSl7dmFyIGI9YS5CYS5rYTtpZihiJiZiLm1lc3NhZ2Upe2EuR2ErKzt2YXIgYz1hLkJhLGQ9Yi5vYTtjLndhKz1kO2Q+MCYmYy5vYS5zcGxpY2UoMCxkKTtjLkJhPTA7Yy5rYT1udWxsO2Mub2EubGVuZ3RoPjAmJihjLmthPVltayhjKSk7aWYoYS5PYSYmYS5vYSYmXy5kWi5jb25maWcuQWEmJihjPWAke2EuSWF9LWR0LSR7YS5HYX1gLGQ9bmV3IGFuayhiLm1lc3NhZ2UpLGEub2EpKXRyeXthLm9hLnNldChjLGQpfWNhdGNoKGUpe31hLndhLm9hKGEuRWEsYi5tZXNzYWdlKX19fX1sb2coYSl7dGhpcy5FYSYmKGEua2F8fChhLmthPURhdGUubm93KCkpLHRoaXMub2EuYWRkRXZlbnQoYSkmJgp0aGlzLkJhKCkpfXJlc2V0KCl7dGhpcy5FYT0hMDt0aGlzLkdhPTA7dGhpcy5CYSgpO3RoaXMub2EucmVzZXQoKX1kRigpe3JldHVybiB0aGlzLm9hfXFjKCl7c3VwZXIucWMoKTt0aGlzLndhJiYhdGhpcy5vYS5pc0VtcHR5KCkmJnRoaXMuRWEmJmNuayh0aGlzLCJEIik7dGhpcy53YSYmdGhpcy53YS5kaXNwb3NlKCk7dGhpcy5vYS5kaXNwb3NlKCk7dGhpcy5FYT0hMX19O3ZhciBlbms7Xy5mbms9Y2xhc3MgZXh0ZW5kcyBkbmt7Y29uc3RydWN0b3IoYSxiKXtzdXBlcihiLGEsbmV3IGVuayhhKSk7dGhpcy5JYT0wfUJhKCl7dGhpcy5JYT49Xy5kWi5jb25maWcuR2E/Xy5JbWsodGhpcywoKT0+dGhpcy5kaXNwb3NlKCksMCk6KHRoaXMuSWErKyxzdXBlci5CYSgpKX19O2Vuaz1jbGFzcyBleHRlbmRzIFJta3tvYShhLGIpe2lmKGIpe3ZhciBjPW5ldyBNYXA7Yy5zZXQoImN0IixhKTtiLnNwbGl0KCImIikuZm9yRWFjaChkPT57ZD1kLnNwbGl0KCI9Iik7ZC5sZW5ndGg9PT0yJiZjLnNldChkWzBdLGRbMV0pfSk7Xy53bGsoXy5jbyhfLmRaLmVpKSxjKS5sb2coKX19fTtfLmduaz1mdW5jdGlvbihhLGIpe2lmKCFiKXJldHVybiBudWxsO3ZhciBjPWIuZ2V0QXR0cmlidXRlKCJkYXRhLWh2ZWlkIik7aWYoIWN8fCFhLkJhW2NdKXJldHVybiBudWxsO2ZvcihsZXQgZD0wO2Q8YS5CYVtjXS5sZW5ndGg7ZCsrKWlmKGEuQmFbY11bZF0uUWM9PT1iKXJldHVybiBhLkJhW2NdW2RdO3JldHVybiBudWxsfTsKXy5obms9Y2xhc3MgZXh0ZW5kcyBfLmJle2NvbnN0cnVjdG9yKCl7c3VwZXIoKTt0aGlzLndhPSEwO3RoaXMuTmE9ITE7dGhpcy5rYT1udWxsO3RoaXMuRWE9dGhpcy5JYT0hMTt0aGlzLkFhPW51bGw7dGhpcy5QYT0hMTt0aGlzLmNsaWVudEhlaWdodD0wO3RoaXMub2E9W107dGhpcy5PYT17fTt0aGlzLlJhPTA7dGhpcy5CYT17fTt0aGlzLnpvb21MZXZlbD0wO3RoaXMuS2E9ITE7dGhpcy5HYT1udWxsfXFjKCl7dGhpcy5rYT1udWxsO3RoaXMub2E9W107dGhpcy5CYT17fTtzdXBlci5xYygpfXJlc2V0KCl7dGhpcy53YT0hMDt0aGlzLmthPW51bGw7dGhpcy5FYT0hMTt0aGlzLm9hPVtdO3RoaXMuT2E9e307dGhpcy5SYT0wO3RoaXMuQmE9e307dGhpcy5LYT0hMX19O18uZ1o9bnVsbDtfLmluaz1udWxsO18uY1o9bnVsbDt2YXIgam5rPSExLGtuaz1mdW5jdGlvbihhKXtmb3IobGV0IGIgb2YgYS5rYSliLmRpc3Bvc2UoKTtfLmNaJiZfLmNaLmRpc3Bvc2UoKTtfLmdaJiZfLmdaLmNsZWFudXAoKTtfLmluaz1fLmNaPV8uZ1o9bnVsbH0sbG5rPWZ1bmN0aW9uKGEsYixjPSExKXtfLmRaLmVpPWIuZWk7dmFyIGQ9bmV3IE1taztkLkVhPSEhYi5kdTtkLmthPSEhYi5kdjtkLndhPSEhYi5kYjtkLkFhPV8uSWthKCk7ZC5JYT1fLnpsazt2YXIgZT1OdW1iZXIoYi5tbWNudCk7aXNGaW5pdGUoZSkmJihkLkdhPWUpO2I9TnVtYmVyKGIuYXRzZCk7aXNGaW5pdGUoYikmJihkLkJhPWIpO2Qub2E9Xy5CbGs7Xy5kWi5jb25maWc9ZDtfLmluaz1uZXcgXy5obms7Xy5nWj1fLmdaP18uZ1o6bmV3IF8uUW1rO18uY1o9bmV3IF8uZm5rKF8uZ1osInNsaCIpO0dtaygpO2lmKGQ9ZG9jdW1lbnQuYm9keS5xdWVyeVNlbGVjdG9yKCJbZGF0YS1hcWlkXSIpKV8uZFoua2E9ZC5nZXRBdHRyaWJ1dGUoImRhdGEtYXFpZCIpO2M9Yz8Ke2F0dG5fcmVzZXRfdGltZTpEYXRlLm5vdygpfTp2b2lkIDA7Zm9yKGxldCBmIG9mIGEua2EpZi5pbml0KGMpfSxubms9Y2xhc3MgZXh0ZW5kcyBfLmhze2NvbnN0cnVjdG9yKCl7c3VwZXIoKTt0aGlzLmthPV8uWW4oXy5tbmspO18uZGYoKTt2YXIgYT10aGlzLmdldFJvb3QoKS5lbCgpO2E9YSYmXy5qZyhhKXx8e307YS5laT1nb29nbGUuZ2V0RUkoZG9jdW1lbnQuYm9keSk7am5rP2EuZWkhPT1fLmRaLmVpJiYoa25rKHRoaXMpLGxuayh0aGlzLGEpKTood2luZG93Ll9jc2hpZCYmKF8uZFouY3NoaWQ9d2luZG93Ll9jc2hpZCksYSYmKGpuaz0hMCxsbmsodGhpcyxhKSkpO18uaGUod2luZG93LCJhdHRuX3Jlc2V0IixiPT57aWYoKGI9Yi5laSkmJmIhPT1fLmRaLmVpKXtqbmsmJihqbms9ITEsa25rKHRoaXMpKTt2YXIgYz10aGlzLmdldFJvb3QoKS5lbCgpO2M9YyYmXy5qZyhjKXx8e307Yy5laT1iO2xuayh0aGlzLGMsITApO2puaz0hMH19KX1UYigpe2puayYmKGpuaz0hMSxrbmsodGhpcykpfX07Cm5uay5wcm90b3R5cGUuJHdhJGs0SXNlYj1mdW5jdGlvbigpe3JldHVybiB0aGlzLlRifTtfLm1uaz1uZXcgXy5hbztfLm9uaz17fTtfLmpzKF8uQ2xrLG5uayk7Cl8ucG5rPWZ1bmN0aW9uKGEpe3ZhciBiPVsuLi5hLm9hXTtmb3IobGV0IGMgb2YgYS5vYSljLmNoaWxkcmVuLmxlbmd0aCYmKGI9Wy4uLmIsLi4uYy5jaGlsZHJlbl0pO3JldHVybiBifTtfLmhaPWNsYXNzIGV4dGVuZHMgXy5MbWt7Y29uc3RydWN0b3IoYSxiLGMpe3N1cGVyKGEpO3RoaXMueGM9Yjt0aGlzLmtjPWN9fTsKdmFyIHZuayx3bmsscW5rLHpuayxBbmssQ25rLERuayxFbmssRm5rLEduayxIbmssSm5rLEtuayxMbmssTW5rLE9uayxQbmssUW5rLHJuayxSbmssdG5rLFNuayxUbms7dm5rPWZ1bmN0aW9uKGEsYixjKXtpZihfLnhtKGEuUWMsInBsYS11bml0IikmJnFuayhhKSlyZXR1cm4hMTsoYS5jaGlsZHJlbi5sZW5ndGg+MHx8Yy5BYSYmYS5nZXRFSSgpPT09Yy5BYSYmYS5RYy5oYXNBdHRyaWJ1dGUoImRlY29kZS1kYXRhLXZlZCIpKSYmcm5rKGEpO2M9YS5zRD09bnVsbD9hLmthP18uc25rKGEua2EsYi5rYSk6ITE6dG5rKGEsYS5zRCk7aWYoIShjPWMmJmEud2E9PW51bGx8fGMmJmEuQW9hKCl8fCFjJiZhLndhJiZfLnNuayhhLndhLGIua2EpJiZhLnNEPT1udWxsKSl7aWYoYz1hLmthKWM9YS5rYSxjPShiPWIua2EpP2MudG9wK2MuaGVpZ2h0PGIudG9wOiExO2M9YyYmYS53YT09bnVsbCYmKCFhLmthfHwhXy51bmsoYS5rYSkpJiZhLnNEPT1udWxsfXJldHVybiBjPyEwOiExfTsKd25rPWZ1bmN0aW9uKGEsYixjKXtyZXR1cm4hXy5kWi5jb25maWcuSWF8fGEud2EhPW51bGx8fGMuaGFzKGEub2EoKSl8fCFhLmthfHxhLmthJiZfLnVuayhhLmthKT8hMTohYS5rYXx8IV8uc25rKGEua2EsYi5rYSl8fGEuc0QmJiF0bmsoYSxhLnNEKT8hMDohMX07cW5rPWZ1bmN0aW9uKGEpe2E9YS5RYztpZighYSlyZXR1cm4hMTt2YXIgYj1nZXRDb21wdXRlZFN0eWxlKGEpO2lmKGImJmIucG9zaXRpb249PSJmaXhlZCIpcmV0dXJuITE7Yj1hLm9mZnNldFBhcmVudDtpZihiPT1udWxsKXJldHVybiExO2E9YS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtiPWIuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7cmV0dXJuIGEubGVmdD5iLnJpZ2h0fHxhLnJpZ2h0PGIubGVmdHx8YS50b3A+Yi5ib3R0b218fGEuYm90dG9tPGIudG9wfTtfLnhuaz1mdW5jdGlvbihhKXtmb3IobGV0IGMgaW4gYS5BYSl7dmFyIGI9YS5BYVtjXTtiJiZfLmVhLmNsZWFyVGltZW91dChiKTtkZWxldGUgYS5BYVtjXX19OwpfLnluaz1mdW5jdGlvbihhLGIpe2lmKCFiKXJldHVybiBnb29nbGUuZ2V0RUkoYSk7aWYoYT1fLmxtYShhKSlpZihhPV8uYW1hKGEpKXJldHVybiBhO3JldHVybiBnb29nbGUuZ2V0RUkoZG9jdW1lbnQuYm9keSl9O3puaz1mdW5jdGlvbihhLGIpe3JldHVybiEhYiYmTWF0aC5hYnMoYS53aWR0aC1iLndpZHRoKTw9Yi5rYSYmTWF0aC5hYnMoYS5oZWlnaHQtYi5oZWlnaHQpPD1iLm9hfTtBbms9ZnVuY3Rpb24oYSxiKXtyZXR1cm4hIWImJk1hdGguYWJzKGEubGVmdC1iLmxlZnQpPD1iLmthJiZNYXRoLmFicyhhLnRvcC1iLnRvcCk8PWIub2EmJnpuayhhLGIpfTtfLnVuaz1mdW5jdGlvbihhKXtyZXR1cm4gYS53aWR0aD09MCYmYS5oZWlnaHQ9PTB9OwpfLnNuaz1mdW5jdGlvbihhLGIpe2lmKCFiKXJldHVybiExO3ZhciBjPU1hdGgubWF4KGEubGVmdCxiLmxlZnQpLGQ9TWF0aC5taW4oYS5sZWZ0K2Eud2lkdGgsYi5sZWZ0K2Iud2lkdGgpO3JldHVybiBNYXRoLm1heChhLnRvcCxiLnRvcCk8TWF0aC5taW4oYS50b3ArYS5oZWlnaHQsYi50b3ArYi5oZWlnaHQpJiZjPGR9O18uQm5rPWNsYXNze2NvbnN0cnVjdG9yKGEsYixjLGQpe3RoaXMubGVmdD1hO3RoaXMudG9wPWI7dGhpcy53aWR0aD1jO3RoaXMuaGVpZ2h0PWQ7dGhpcy5rYT1NYXRoLnJvdW5kKGMvNTApO3RoaXMub2E9TWF0aC5yb3VuZChkLzUwKX1jbG9uZSgpe3JldHVybiBuZXcgXy5CbmsodGhpcy5sZWZ0LHRoaXMudG9wLHRoaXMud2lkdGgsdGhpcy5oZWlnaHQpfX07CkNuaz1jbGFzcyBleHRlbmRzIF8uZlp7Y29uc3RydWN0b3IoYSxiLGMsZCl7c3VwZXIoKTt0aGlzLkVhPWE7dGhpcy5HYT1iO3RoaXMuSWE9Yzt0aGlzLkJhPWR9b2EoKXtyZXR1cm5bIlYiLHRoaXMuRWEsdGhpcy5HYSx0aGlzLklhLHRoaXMuQmFdfX07CkRuaz1jbGFzc3tjb25zdHJ1Y3RvcihhPSExKXt0aGlzLm9hPURhdGUubm93KCk7dGhpcy5rYT1hP25ldyBfLkJuayhNYXRoLnJvdW5kKHdpbmRvdy5wYWdlWE9mZnNldCksTWF0aC5yb3VuZCh3aW5kb3cucGFnZVlPZmZzZXQpLE1hdGgucm91bmQod2luZG93LmlubmVyV2lkdGh8fDApLE1hdGgucm91bmQod2luZG93LmlubmVySGVpZ2h0fHwwKSk6bmV3IF8uQm5rKDAsMCwwLDApfU4kKCl7dmFyIGE9bmV3IENuayh0aGlzLmthLmxlZnQsdGhpcy5rYS50b3AsdGhpcy5rYS53aWR0aCx0aGlzLmthLmhlaWdodCk7YS5rYT10aGlzLm9hO3JldHVybiBhfXdhKGEpe3JldHVybiB0aGlzLmthLmxlZnQtYS5rYS5sZWZ0fUFhKGEpe3JldHVybiB0aGlzLmthLnRvcC1hLmthLnRvcH19OwpFbms9Y2xhc3MgZXh0ZW5kcyBfLmZae2NvbnN0cnVjdG9yKGEsYixjLGQsZSl7c3VwZXIoKTt0aGlzLmRlbHRhWD1iO3RoaXMuZGVsdGFZPWM7dGhpcy5CYT1kO3RoaXMuRWE9ZTt0aGlzLmthPWF9b2EoKXt2YXIgYT1bIlMiXTt0aGlzLkJhJiZ0aGlzLkVhJiZhLnB1c2godGhpcy5CYSx0aGlzLkVhKTt0aGlzLmRlbHRhWD09MD9hLnB1c2godGhpcy5kZWx0YVkpOmEucHVzaCh0aGlzLmRlbHRhWCx0aGlzLmRlbHRhWSk7cmV0dXJuIGF9fTsKRm5rPWZ1bmN0aW9uKGEsYixjPSExKXtpZihhLmtjLndhfHxhLmtjLklhKXt2YXIgZD1hLmtjLmthLGU7aWYoZT0hYS5rYy5JYSYmZCl7ZT1iLmthO3ZhciBmPWQua2E7aWYoZil7dmFyIGc9em5rKGUsZik7ZyYmKGUud2lkdGg9Zi53aWR0aCxlLmhlaWdodD1mLmhlaWdodCxlLmthPWYua2EsZS5vYT1mLm9hKTtlPWd9ZWxzZSBlPSExfWU/KGU9Yi53YShkKSxkPWIuQWEoZCksZT09MCYmZD09MHx8YS54Yy5sb2cobmV3IEVuayhiLm9hLGUsZCkpKTphLnhjLmxvZyhiLk4kKCkpO2Eua2MuSWE9ITE7YS5rYy5rYT1iO2N8fGEua2MuZGlzcGF0Y2hFdmVudCgiYXR0bi12cy1jaGciKX19O0duaz1mdW5jdGlvbihhLGI9ITEsYz0hMSl7aWYoYnx8IWEua2MuTmEpYS5rYy5OYT0hMSxhLmtjLndhfHwoYS5rYy53YT0hMCxGbmsoYSxuZXcgRG5rKCEwKSwhMCksYS5rYy5kaXNwYXRjaEV2ZW50KCJhdHRuLXZzLWNoZyIpLGMmJmEua2MuZGlzcGF0Y2hFdmVudCgiYXR0bi12aWV3cG9ydC1hY3RpdmUiKSl9OwpIbms9ZnVuY3Rpb24oYSxiPSExKXtiJiYoYS5rYy5OYT0hMCk7YS5rYy53YSYmKEZuayhhLG5ldyBEbmssITApLGEua2Mud2E9ITEsYS5rYy5kaXNwYXRjaEV2ZW50KCJhdHRuLXZzLWNoZyIpKX07Sm5rPXtlZWM6ImQiLEdnYzoibGMiLExPQURJTkc6ImwiLEFqYzoidGMiLENlYzoiZWMiLEJlYzoiZWNzIn07S25rPXtQZWM6ImZzIixNZWM6ImRvIixMZWM6ImRjIixPZWM6ImZlIn07TG5rPXtkaGM6Im10Iix1aWM6InJzIix0aWM6InJyIixQamM6InVzIixPamM6InVkIixzaWM6ImlvIixxaWM6ImljIixwaWM6ImNvIixvaWM6ImNjIn07TW5rPXtRZWM6ImZzIixOZWM6ImZlIixwZWM6ImRvIixvZWM6ImRjIn07Xy5Obms9ZnVuY3Rpb24oYSl7cmV0dXJuIG5ldyBfLkJuayhhLmxlZnQsYS50b3AsYS53aWR0aCxhLmhlaWdodCl9O09uaz1jbGFzcyBleHRlbmRzIF8uZlp7Y29uc3RydWN0b3IoYT0wKXtzdXBlcigpO3RoaXMua2E9YX1vYSgpe3JldHVyblsiVCJdfX07ClBuaz1jbGFzcyBleHRlbmRzIF8uZlp7Y29uc3RydWN0b3IoYSxiLGMsZCxlLGYpe3N1cGVyKCk7dGhpcy5CYT1hO3RoaXMuS2E9Yjt0aGlzLkdhPWM7dGhpcy5JYT1kO3RoaXMuTmE9ZTt0aGlzLkVhPWZ9b2EoKXtyZXR1cm5bIlIiLHRoaXMuQmEsdGhpcy5LYSx0aGlzLkdhLHRoaXMuSWEsdGhpcy5OYSx0aGlzLkVhXX19O1Fuaz1jbGFzcyBleHRlbmRzIF8uZlp7Y29uc3RydWN0b3IoYSxiKXtzdXBlcigpO3RoaXMuQmE9YTt0aGlzLkVhPWJ9b2EoKXtyZXR1cm5bIlIiLHRoaXMuQmEsdGhpcy5FYSwibyJdfX07CnJuaz1mdW5jdGlvbihhKXt2YXIgYjthOnt2YXIgYz1hLlFjLGQ9KGI9YS5zRCk9PW51bGw/dm9pZCAwOmIuUWM7aWYoYy5nZXRCb3VuZGluZ0NsaWVudFJlY3QmJiJ2aXNpYmxlIj09KF8ua24oYywidmlzaWJpbGl0eSIpfHwidmlzaWJsZSIpKXRyeXtsZXQgZj1jLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLGc9Yy5vZmZzZXRXaWR0aHx8Zi53aWR0aCxoPWMub2Zmc2V0SGVpZ2h0fHxmLmhlaWdodDtpZihkKXtsZXQgaz1kLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO3ZhciBlPW5ldyBfLkJuayhNYXRoLnJvdW5kKGYubGVmdC1rLmxlZnQrZC5zY3JvbGxMZWZ0KSxNYXRoLnJvdW5kKGYudG9wLWsudG9wK2Quc2Nyb2xsVG9wKSxNYXRoLnJvdW5kKGcpLE1hdGgucm91bmQoaCkpO2JyZWFrIGF9ZT1uZXcgXy5CbmsoTWF0aC5yb3VuZChmLmxlZnQrd2luZG93LnBhZ2VYT2Zmc2V0KSxNYXRoLnJvdW5kKGYudG9wK3dpbmRvdy5wYWdlWU9mZnNldCksTWF0aC5yb3VuZChnKSxNYXRoLnJvdW5kKGgpKTsKYnJlYWsgYX1jYXRjaChmKXt9ZT1uZXcgXy5CbmsoMCwwLDAsMCl9Yj1lO2lmKGEua2EmJkFuayhiLGEua2EpKXJldHVybiExO2Eua2E9YjtyZXR1cm4hMH07Um5rPWZ1bmN0aW9uKGEpe2Eua2EmJihhLndhPWEua2EuY2xvbmUoKSl9O3Ruaz1mdW5jdGlvbihhLGIpe2lmKCFhLmthfHwhYi5rYSlyZXR1cm4hMTt2YXIgYz1NYXRoLm1heChhLmthLmxlZnQsYi5zY3JvbGxYKSxkPU1hdGgubWluKGEua2EubGVmdCthLmthLndpZHRoLGIuc2Nyb2xsWCtiLmthLndpZHRoKTtyZXR1cm4gTWF0aC5tYXgoYS5rYS50b3AsYi5zY3JvbGxZKTxNYXRoLm1pbihhLmthLnRvcCthLmthLmhlaWdodCxiLnNjcm9sbFkrYi5rYS5oZWlnaHQpJiZjPGR9OwpTbms9Y2xhc3N7Y29uc3RydWN0b3IoYSxiLGMsZCl7dGhpcy5rYT10aGlzLndhPW51bGw7dGhpcy5RYz1hO3RoaXMuQWE9Yjt0aGlzLkVhPWM7dGhpcy5CYT1kO3RoaXMuc2Nyb2xsWT10aGlzLnNjcm9sbFg9MDt0aGlzLnNEPW51bGw7dGhpcy5jaGlsZHJlbj1bXX1Bb2EoKXtyZXR1cm4gdGhpcy53YSYmdGhpcy5rYT8hQW5rKHRoaXMua2EsdGhpcy53YSk6ITF9Z2V0RUkoKXtyZXR1cm4gdGhpcy5FYX1vYSgpe3JldHVybmAke3RoaXMuRWF9OiR7dGhpcy5BYX1gfU4kKGEpe3ZhciBiPW5ldyBQbmsodGhpcy5CYSx0aGlzLkFhLHRoaXMua2E/dGhpcy5rYS5sZWZ0OjAsdGhpcy5rYT90aGlzLmthLnRvcDowLHRoaXMua2E/dGhpcy5rYS53aWR0aDowLHRoaXMua2E/dGhpcy5rYS5oZWlnaHQ6MCk7Yi5rYT1hO3JldHVybiBifX07VG5rPWNsYXNzIGV4dGVuZHMgXy5mWntjb25zdHJ1Y3RvcihhKXtzdXBlcigpO3RoaXMuQmE9YX1vYSgpe3JldHVyblsiQSIsdGhpcy5CYT8xOjBdfX07dmFyIFVuaz1jbGFzcyBleHRlbmRzIF8uZlp7Y29uc3RydWN0b3IoYSxiPTApe3N1cGVyKCk7dGhpcy5CYT1hO3RoaXMua2E9Yn1vYSgpe3JldHVyblsiSSIsdGhpcy5CYT8xOjBdfX07dmFyIFZuaz1jbGFzcyBleHRlbmRzIF8uaFp7Y29uc3RydWN0b3IoYSxiLGMpe3N1cGVyKGEsYixjKTtfLnpnKCJsaC1pbSIsKCk9PnRoaXMuZ1IoKSl9Z1IoKXtpZih0aGlzLmtjKXt2YXIgYT1fLmZhZCgpLGI9Xy5sdSgpLnBhdGhuYW1lKCkuc3RhcnRzV2l0aCgiL2FtcCIpO2lmKGEhPT10aGlzLmtjLkVhfHxiIT09dGhpcy5rYy5QYSlhIT09dGhpcy5rYy5FYSYmKHRoaXMua2MuRWE9YSx0aGlzLnhjLmxvZyhuZXcgVW5rKGEpKSksYiE9PXRoaXMua2MuUGEmJih0aGlzLmtjLlBhPWIsdGhpcy54Yy5sb2cobmV3IFRuayhiKSksdGhpcy5rYy5JYT0hMCksXy5lWih0aGlzLCgpPT57aWYodGhpcy5rYyYmdGhpcy5rYy5rYSl7dmFyIGM9dGhpcy5rYy5rYSxkPURhdGUubm93KCk7Yy5vYT1kO3RoaXMua2MuZGlzcGF0Y2hFdmVudCgiYXR0bi1kb20tY2hnIil9Xy5KbWsodGhpcywiZGNzdCIpfSwxRTMsImRjc3QiLCEwKX19cWMoKXtfLmFzKCJsaC1pbSIpO3N1cGVyLnFjKCl9fTt2YXIgV25rPWNsYXNzIGV4dGVuZHMgXy5mWntjb25zdHJ1Y3RvcihhLGIpe3N1cGVyKCk7dGhpcy5CYT1hO3RoaXMua2E9Yn1vYSgpe3JldHVyblsibSIsdGhpcy5CYV19fTt2YXIgWG5rPWZ1bmN0aW9uKGEsYil7KGI9YS5nZXRNYWdpU3RhdGUoYikpJiZhLmtjLmthJiZhLnhjLmxvZyhuZXcgV25rKGIsYS5rYy5rYS5vYSkpfSxZbms9ZnVuY3Rpb24oYSxiKXtiJiZhLmdldE1hZ2lTdGF0ZShiKT09PSJlYyI/KGI9Yi5jbG9zZXN0KCJbZGF0YS1saGNvbnRhaW5lcl0iKXx8YixiLnF1ZXJ5U2VsZWN0b3IoIltkYXRhLWxmLWlkPUNoeGpNZV0iKT9hLmtjLkdhPWI6YS5rYy5HYT1udWxsKTphLmtjLkdhPW51bGx9LFpuaz1jbGFzcyBleHRlbmRzIF8uaFp7Y29uc3RydWN0b3IoYSxiLGMpe3N1cGVyKGEsYixjKTt0aGlzLmFkZExpc3RlbmVyKHdpbmRvdywiVVBhR3djIix0aGlzLm9hLmJpbmQodGhpcykpO3RoaXMuYWRkTGlzdGVuZXIod2luZG93LCJvRWRlSGYiLHRoaXMud2EuYmluZCh0aGlzKSk7WG5rKHRoaXMsZG9jdW1lbnQuYm9keS5xdWVyeVNlbGVjdG9yKCJbZGF0YS1hdHRubXNdIikpfW9hKGEpe3ZhciBiLGM9YT09bnVsbD92b2lkIDA6KGI9YS5VbmEpPT0KbnVsbD92b2lkIDA6Yi5jYWxsKGEpO2lmKGMgaW5zdGFuY2VvZiBDdXN0b21FdmVudCYmKGE9Yy5kZXRhaWwpKXt2YXIgZD1hLm1yO2lmKGQpe1luayh0aGlzLGQpO18uQm4od2luZG93LCJhdHRuX2RvbV91cGRhdGUiLG51bGwpO1huayh0aGlzLGQpO3ZhciBlPV8uTm5rKGQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkpO18uSW1rKHRoaXMsKCk9Pnt2YXIgZj1fLk5uayhkLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpKTtmJiZlLmxlZnQ9PWYubGVmdCYmZS50b3A9PWYudG9wJiZlLndpZHRoPT1mLndpZHRoJiZlLmhlaWdodD09Zi5oZWlnaHR8fChZbmsodGhpcyxkKSxfLkJuKHdpbmRvdywiYXR0bl9kb21fdXBkYXRlIixudWxsKSl9LDUwMCl9fX13YShhKXtpZigoYT1hLnljYSkmJk9iamVjdC52YWx1ZXMoS25rKS5pbmNsdWRlcyhhKSYmdGhpcy5rYy5rYSl7YT09PSJkbyI/Xy5Cbih3aW5kb3csImF0dG5fcGF1c2UiLG51bGwpOmE9PT0iZGMiP18uQm4od2luZG93LCJhdHRuX3Jlc3VtZSIsCm51bGwpOl8uQm4od2luZG93LCJhdHRuX2RvbV91cGRhdGUiLG51bGwpO3ZhciBiLGM9KGI9dGhpcy5rYy5rYSk9PW51bGw/dm9pZCAwOmIub2E7dGhpcy54Yy5sb2cobmV3IFduayhhLGMpKX19Z2V0TWFnaVN0YXRlKGEpe3JldHVybihhPWE9PW51bGw/dm9pZCAwOmEuZGF0YXNldC5hdHRubXMpJiZPYmplY3QudmFsdWVzKEpuaykuaW5jbHVkZXMoYSk/YTpudWxsfX07dmFyICRuaz1mdW5jdGlvbihhKXthLmtjJiZhLmFkZExpc3RlbmVyKGEua2MsImF0dG4tdmlld3BvcnQtYWN0aXZlIiwoKT0+e18uY28oXy5kWi5laSkuR2MoImN0Iiwic3JwZiIpLmxvZygpfSl9LGFvaz1jbGFzcyBleHRlbmRzIF8uaFp7Y29uc3RydWN0b3IoYSxiLGMpe3N1cGVyKGEsYixjKTtjJiZfLnluKHdpbmRvdywicGFnZXNob3ciLCgpPT57JG5rKHRoaXMpfSl9cWMoKXtzdXBlci5xYygpfX07dmFyIGJvaz1jbGFzcyBleHRlbmRzIF8uZlp7Y29uc3RydWN0b3IoYSxiLGMpe3N1cGVyKCk7dGhpcy5HYT1hO3RoaXMuRWE9Yjt0aGlzLkJhPWN9b2EoKXtyZXR1cm5bImYiLHRoaXMuRWEsdGhpcy5HYSx0aGlzLkJhXX19O3ZhciBjb2s9Y2xhc3MgZXh0ZW5kcyBfLlpke2NvbnN0cnVjdG9yKGEpe3ZhciBiPURhdGUubm93KCk7c3VwZXIoInZlLWNvbnRhaW5lci1ldmVudCIpO3RoaXMuc0Q9YTt0aGlzLnRpbWVzdGFtcD1ifX07dmFyIGRvaz1mdW5jdGlvbihhLGIpe3ZhciBjPWIuZWwsZD1iLmRpc3RhbmNlO2lmKGMmJmQpe3ZhciBlPV8uZ25rKGEua2MsYyk7ZSYmXy5lWihhLCgpPT57ZSYmKGEueGMubG9nKG5ldyBib2soZS5BYSxlLkJhLGQpKSxfLkJuKGEua2MsImF0dG4tY2FyLXNjcmwiLG5ldyBjb2soZSkpKX0sNTAwLGByc3R2XyR7ZS5vYSgpfWAsITApfX0sZW9rPWZ1bmN0aW9uKGEpe2ZvcihsZXQgYiBpbiBhLlRkKWEuVGRbYl0mJmEua2Eudm8oYS5UZFtiXSk7YS5UZD17fX0sZ29rPWZ1bmN0aW9uKGEsYil7dmFyIGM9Zm9rKGEsYik7aWYoYyl7dmFyIGQ9Yy5vYSgpO2Eub2FbZF09MDthLndhW2RdPTA7dmFyIGU9YS5rYS5saXN0ZW4oYiwic2Nyb2xsIiwoKT0+e0duayhhKTthLm9hW2RdPU1hdGgucm91bmQoYi5zY3JvbGxMZWZ0KTtfLmVaKGEsKCk9Pnt2YXIgZj1jLm9hKCksZz1hLm9hW2ZdLWEud2FbZl07YS53YVtmXT1hLm9hW2ZdO2EueGMubG9nKG5ldyBib2soYy5BYSxjLkJhLGcpKTtfLkJuKGEua2MsCiJhdHRuLWNhci1zY3JsIixuZXcgY29rKGMpKTtfLkptayhhLGByc3R2XyR7Zn1gKX0sNTAwLGByc3R2XyR7ZH1gKX0pO2UmJihhLlRkW2RdPWUpfX0sZm9rPWZ1bmN0aW9uKGEsYil7aWYoIWIpcmV0dXJuIG51bGw7Zm9yKDtiIT09bnVsbCYmYiE9PWRvY3VtZW50LmJvZHk7KXtsZXQgYz1fLmduayhhLmtjLGIpO2lmKGMpcmV0dXJuIGM7Yj1iLnBhcmVudEVsZW1lbnR9cmV0dXJuIG51bGx9LGhvaz1jbGFzcyBleHRlbmRzIF8uaFp7Y29uc3RydWN0b3IoYSxiLGMpe3N1cGVyKGEsYixjKTt0aGlzLlRkPXt9O3RoaXMub2E9e307dGhpcy53YT17fTt0aGlzLkJhKCk7dGhpcy5hZGRMaXN0ZW5lcih3aW5kb3csImF0dG4tc3dpcGUiLGQ9PmRvayh0aGlzLGQpKTt0aGlzLmFkZExpc3RlbmVyKGMsImF0dG4tZG9tLWNoZyIsdGhpcy5CYSwhMSx0aGlzKX1CYSgpe2Vvayh0aGlzKTt2YXIgYT1kb2N1bWVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCJyQWRQU2UiKTtmb3IobGV0IGIgb2YgYSlnb2sodGhpcywKYil9cWMoKXtlb2sodGhpcyk7dGhpcy5vYT17fTt0aGlzLndhPXt9O3N1cGVyLnFjKCl9fTt2YXIgaW9rPWNsYXNzIGV4dGVuZHMgXy5mWntjb25zdHJ1Y3RvcihhKXtzdXBlcigpO3RoaXMuQmE9YX1vYSgpe3JldHVyblsiQiIsdGhpcy5CYV19fTt2YXIgam9rPWNsYXNzIGV4dGVuZHMgXy5oWntjb25zdHJ1Y3RvcihhLGIsYyl7c3VwZXIoYSxiLGMpO3RoaXMub2E9Xy5oeWIoKTthPW5ldyBpb2sodGhpcy5vYSk7dGhpcy5rYy5rYSYmKGEua2E9dGhpcy5rYy5rYS5vYSk7dGhpcy54Yy5sb2coYSk7dGhpcy5rYy5jbGllbnRIZWlnaHQ9dGhpcy5vYTt0aGlzLmFkZExpc3RlbmVyKHRoaXMua2MsImF0dG4tZy1jbGsiLHRoaXMuQmEsITEsdGhpcyl9QmEoKXtfLmVaKHRoaXMsKDAsXy5pZSkodGhpcy53YSx0aGlzKSwxRTMsInZjaGMiKX13YSgpe18uSm1rKHRoaXMsInZjaGMiKTtfLkptayh0aGlzLCJ2Y2hyYyIpO2lmKCF0aGlzLmtjLkVhKXt2YXIgYT1fLmh5YigpO2lmKGEhPXRoaXMub2EpdGhpcy5vYT1hLF8uZVoodGhpcywoMCxfLmllKSh0aGlzLndhLHRoaXMpLDEwMCwidmNocmMiKTtlbHNlIGlmKHRoaXMua2MuY2xpZW50SGVpZ2h0IT10aGlzLm9hJiYodGhpcy5rYy5jbGllbnRIZWlnaHQ9dGhpcy5vYSx0aGlzLnhjLmxvZyhuZXcgaW9rKHRoaXMub2EpKSwKRm5rKHRoaXMsbmV3IERuayghMCksITApLHRoaXMua2Mua2EpKXthPXRoaXMua2Mua2E7dmFyIGI9RGF0ZS5ub3coKTthLm9hPWI7dGhpcy5rYy5kaXNwYXRjaEV2ZW50KCJhdHRuLXZzLWNoZyIpfX19fTt2YXIga29rPWZ1bmN0aW9uKGEpe18ueG5rKGEpO2ZvcihsZXQgYiBpbiBhLm9hKWEub2FbYl0mJmEua2Eudm8oYS5vYVtiXSk7YS5vYT17fX0sbm9rPWZ1bmN0aW9uKGEsYixjLGQpe2xvayhkKT9tb2soYSxiLGMsZCk6Xy5lWihhLCgpPT5tb2soYSxiLGMsZCksXy5kWi5jb25maWcub2EsYGN0dl8ke2Mub2EoKX1gKX0sbG9rPWZ1bmN0aW9uKGEpe3ZhciBiLGMsZDtyZXR1cm4hISgoYz1hPT1udWxsP3ZvaWQgMDooYj1hLlVuYSk9PW51bGw/dm9pZCAwOmIuY2FsbChhKSk9PW51bGw/MDooZD1jLmRldGFpbCk9PW51bGw/MDpkLlBCYil9LG1vaz1mdW5jdGlvbihhLGIsYyxkKXt2YXIgZT1EYXRlLm5vdygpO3t2YXIgZj1NYXRoLnJvdW5kKGIuc2Nyb2xsVG9wKS1jLnNjcm9sbFk7bGV0IG49TWF0aC5yb3VuZChiLnNjcm9sbExlZnQpLWMuc2Nyb2xsWDtpZihufHxmKWQ9e2RlbHRhWDpuLGRlbHRhWTpmfTtlbHNle3ZhciBnO2Y9ZD09bnVsbD92b2lkIDA6KGc9ZC5VbmEpPT1udWxsP3ZvaWQgMDoKZy5jYWxsKGQpO2lmKGYgaW5zdGFuY2VvZiBDdXN0b21FdmVudCl7dmFyIGg7ZD17ZGVsdGFYOjAsZGVsdGFZOigoaD1mLmRldGFpbCk9PW51bGw/dm9pZCAwOmguUEJiKXx8MH19ZWxzZSBkPXtkZWx0YVg6MCxkZWx0YVk6MH19fXZhciB7ZGVsdGFYOmssZGVsdGFZOm19PWQ7KGt8fG0pJiZhLnhjLmxvZyhuZXcgRW5rKGUsayxtLGMuQmEsYy5BYSkpO2Muc2Nyb2xsWT1NYXRoLnJvdW5kKGIuc2Nyb2xsVG9wKTtjLnNjcm9sbFg9TWF0aC5yb3VuZChiLnNjcm9sbExlZnQpO18uSm1rKGEsYGN0dl8ke2Mub2EoKX1gKTtGbmsoYSxuZXcgRG5rKCEwKSwhMCk7Xy5CbihhLmtjLCJhdHRuLXZzLWNoZyIsbmV3IGNvayhjKSl9LG9vaz1jbGFzcyBleHRlbmRzIF8uaFp7Y29uc3RydWN0b3IoYSxiLGMpe3N1cGVyKGEsYixjKTt0aGlzLm9hPXt9O3RoaXMud2EoKTt0aGlzLmFkZExpc3RlbmVyKGMsImF0dG4tdmUtY2hnIix0aGlzLndhLCExLHRoaXMpfXdhKCl7a29rKHRoaXMpO2ZvcihsZXQgYSBvZiB0aGlzLmtjLm9hKXtpZihhLmNoaWxkcmVuLmxlbmd0aDw9CjApY29udGludWU7bGV0IGI9YS5RYztpZighYiljb250aW51ZTtsZXQgYz10aGlzLmthLmxpc3RlbihiLCJzY3JvbGwiLGQ9Pm5vayh0aGlzLGIsYSxkKSk7YyYmKHRoaXMub2FbYS5vYSgpXT1jKX19cWMoKXtrb2sodGhpcyk7c3VwZXIucWMoKX19O3ZhciBwb2s9Y2xhc3MgZXh0ZW5kcyBfLmZae2NvbnN0cnVjdG9yKCl7dmFyIGE9RGF0ZS5ub3coKTtzdXBlcigpO3RoaXMua2E9YX1vYSgpe3JldHVyblsiWiJdfX07dmFyIHFvaz1mdW5jdGlvbihhLGIpe3ZhciBjPW5ldyBEbmsoITApO2ImJihjLm9hPWIpO0ZuayhhLGMpO18uSm1rKGEsInJwdHYiKX0scm9rPWNsYXNzIGV4dGVuZHMgXy5oWntjb25zdHJ1Y3RvcihhLGIsYyxkKXtzdXBlcihhLGIsYyk7dGhpcy5hZGRMaXN0ZW5lcih3aW5kb3csInJlc2l6ZSIsdGhpcy5vYSwhMSx0aGlzKTt0aGlzLmFkZExpc3RlbmVyKHdpbmRvdywic2Nyb2xsIix0aGlzLm9hLCExLHRoaXMpO3RoaXMuYWRkTGlzdGVuZXIod2luZG93LCJ0b3VjaGVuZCIsdGhpcy53YSwhMSx0aGlzKTtHbmsodGhpcyk7ZD9xb2sodGhpcyxkKTpxb2sodGhpcyk7d2luZG93LmlubmVyV2lkdGghPTAmJih0aGlzLmtjLnpvb21MZXZlbD1kb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuY2xpZW50V2lkdGgvd2luZG93LmlubmVyV2lkdGgpfW9hKCl7Xy5lWih0aGlzLCgpPT57cW9rKHRoaXMpfSxfLmRaLmNvbmZpZy5vYSwicnB0diIpfXdhKCl7Xy5lWih0aGlzLCgpPT57aWYod2luZG93LmlubmVyV2lkdGghPQowKXt2YXIgYT1kb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuY2xpZW50V2lkdGgvd2luZG93LmlubmVyV2lkdGg7YSE9dGhpcy5rYy56b29tTGV2ZWwmJih0aGlzLnhjLmxvZyhuZXcgcG9rKSx0aGlzLmtjLnpvb21MZXZlbD1hKTtfLkptayh0aGlzLCJycHpsdCIpfX0sXy5kWi5jb25maWcub2EsInJwemx0Iil9fTt2YXIgc29rPWZ1bmN0aW9uKGEpe2lmKGEua2Mua2Epe3ZhciBiPURhdGUubm93KCk7YS5rYy5rYS5vYT1iO2EueGMubG9nKG5ldyBPbmsoYikpO2Eua2MuZGlzcGF0Y2hFdmVudCgiYXR0bi1kb20tY2hnIil9fSx2b2s9ZnVuY3Rpb24oYSxiLGMpe2lmKHRvayhiLGMpKXVvayhhLGMpO2Vsc2V7bGV0IGQ9MCxlPSgpPT57ZCs9NTA7dG9rKGIsYyk/dW9rKGEsYyk6ZDw9NUUzJiZfLkltayhhLGUsNTApfTtfLkltayhhLGUsNTApfX0sdW9rPWZ1bmN0aW9uKGEsYil7Yi5zZXRBdHRyaWJ1dGUoImRlY29kZS1kYXRhLXZlZCIsIjEiKTtzb2soYSl9LHRvaz1mdW5jdGlvbihhLGIpe2lmKGEuY29udGFpbnMpcmV0dXJuIGEuY29udGFpbnMoYik7Zm9yKDtiLnBhcmVudE5vZGU7KWlmKGI9Yi5wYXJlbnROb2RlLGI9PT1hKXJldHVybiEwO3JldHVybiExfSx3b2s9Y2xhc3MgZXh0ZW5kcyBfLmhae2NvbnN0cnVjdG9yKGEsYixjKXtzdXBlcihhLGIsYyk7dGhpcy5vYT1fLmhlKHdpbmRvdywiYXR0bl9kb21fdXBkYXRlIiwKZD0+e2Q9PT1udWxsP3Nvayh0aGlzKTp0aGlzLmtjJiZ0aGlzLmtjLmthJiYoZC5vYnNlcnZlJiZkLlVJYj09PW51bGx8fChkLm9ic2VydmU/dm9rKHRoaXMsZC5jb250YWluZXIsZC5VSWIpOnVvayh0aGlzLGQuY29udGFpbmVyKSkpfSl9cWMoKXt0aGlzLm9hIT09bnVsbCYmXy5Bbih0aGlzLm9hKTtzdXBlci5xYygpfX07dmFyIHhvaz1jbGFzcyBleHRlbmRzIF8uZlp7Y29uc3RydWN0b3IoYSxiKXtzdXBlcigpO3RoaXMuQmE9YTt0aGlzLmthPWJ8fERhdGUubm93KCl9b2EoKXtyZXR1cm5bImEiLHRoaXMuQmFdfX07dmFyIHlvaz1jbGFzcyBleHRlbmRzIF8uZlp7Y29uc3RydWN0b3IoYSxiKXtzdXBlcigpO3RoaXMuQmE9YTt0aGlzLmthPWJ8fERhdGUubm93KCl9b2EoKXtyZXR1cm5bImEiLHRoaXMuQmFdfX07dmFyIHpvaz1jbGFzcyBleHRlbmRzIF8uaFp7Y29uc3RydWN0b3IoYSxiLGMpe3N1cGVyKGEsYixjKTt0aGlzLmFkZExpc3RlbmVyKHdpbmRvdywiT0c3RFMiLGQ9PnsoZD1kLlM4VkJmYykmJk9iamVjdC52YWx1ZXMoTG5rKS5pbmNsdWRlcyhkKSYmKF8uQm4od2luZG93LCJhdHRuX2RvbV91cGRhdGUiLG51bGwpLGQmJnRoaXMua2Mua2EmJnRoaXMueGMubG9nKG5ldyB4b2soZCx0aGlzLmtjLmthLm9hKSkpfSwhMSx0aGlzKTt0aGlzLmFkZExpc3RlbmVyKHdpbmRvdywiVG13WGQiLGQ9PnsoZD1kLkY5d1RWYykmJk9iamVjdC52YWx1ZXMoTW5rKS5pbmNsdWRlcyhkKSYmKF8uQm4od2luZG93LCJhdHRuX2RvbV91cGRhdGUiLG51bGwpLGQmJnRoaXMua2Mua2EmJnRoaXMueGMubG9nKG5ldyB5b2soZCx0aGlzLmtjLmthLm9hKSkpfSwhMSx0aGlzKX19O3ZhciBBb2s9Y2xhc3MgZXh0ZW5kcyBfLmZae2NvbnN0cnVjdG9yKGEsYixjLGQsZSl7c3VwZXIoKTt0aGlzLmthPWE7dGhpcy5CYT1iO3RoaXMuSWE9Yzt0aGlzLkVhPWQ7dGhpcy5HYT1lfW9hKCl7cmV0dXJuWyJDIix0aGlzLkJhLHRoaXMuSWEsdGhpcy5FYSx0aGlzLkdhXX19O3ZhciBCb2s9Y2xhc3MgZXh0ZW5kcyBfLmZae2NvbnN0cnVjdG9yKGEsYixjKXtzdXBlcigpO3RoaXMuZWk9YTt0aGlzLmluZGV4PWJ8fDA7dGhpcy5rYT1jfHxEYXRlLm5vdygpfW9hKCl7cmV0dXJuWyJOIix0aGlzLmluZGV4LC4uLnRoaXMuZWkuc3BsaXQoIjoiKV19fTt2YXIgQ29rPWZ1bmN0aW9uKGEsYil7dmFyIGM9Xy55bmsoYixiLmhhc0F0dHJpYnV0ZSgiZGVjb2RlLWRhdGEtdmVkIikpO2lmKGMpe3ZhciBkPWEua2MsZT1kLk9hW2NdO2V8fChlPWQuT2FbY109KytkLlJhLGEueGMubG9nKG5ldyBCb2soYyxlLGQua2E/ZC5rYS5vYTpEYXRlLm5vdygpKSkpO2Eub2EucHVzaCh7ZWw6YixlaTpjLGluZGV4OmV9KX19LERvaz1mdW5jdGlvbihhLGIpe3ZhciBjPWIuZ2V0QXR0cmlidXRlKCJkYXRhLWh2ZWlkIik7aWYoYylmb3IodmFyIGQ9MDtkPGEub2EubGVuZ3RoO2QrKyl7bGV0IGU9YS5vYVtkXTtpZihfLiRnKGUuZWwsYikpe2Q9bmV3IFNuayhiLGMsZS5laSxlLmluZGV4KTtiPV8uTWcoYixmPT5mJiZfLlJnKGYpP2YuaGFzQXR0cmlidXRlKCJkYXRhLWxoY29udGFpbmVyIik6ITEsITEpO2I9Xy5nbmsoYS5rYyxiKTtiIT1udWxsPyhiLmNoaWxkcmVuLnB1c2goZCksZC5zRD1iKTphLmtjLm9hLnB1c2goZCk7KGI9YS5rYy5CYVtjXSl8fChiPWEua2MuQmFbY109CltdKTtiLnB1c2goZCk7YnJlYWt9fX0sRW9rPWNsYXNzIGV4dGVuZHMgXy5oWntjb25zdHJ1Y3RvcihhLGIsYyl7c3VwZXIoYSxiLGMpO3RoaXMub2E9W119cGFyc2UoKXt2YXIgYT1kb2N1bWVudC5ib2R5O2lmKHRoaXMua2MuRWEpYTp7YT1kb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCIuaW1tZXJzaXZlLWNvbnRhaW5lciIpO2Zvcih2YXIgYj0wO2I8YS5sZW5ndGg7YisrKXt2YXIgYz1hW2JdLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO2lmKCEoYy53aWR0aDw9MHx8Yy5oZWlnaHQ8PTB8fGMudG9wPj13aW5kb3cuaW5uZXJIZWlnaHR8fGMuYm90dG9tPD0wfHxjLmxlZnQ+PXdpbmRvdy5pbm5lcldpZHRofHxjLnJpZ2h0PD0wKSl7YT1hW2JdO2JyZWFrIGF9fWE9ZG9jdW1lbnQuYm9keX1lbHNlIGlmKHRoaXMua2MuQWEpYTp7YT10aGlzLmtjLkFhO2M9ZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgiW2RlY29kZS1kYXRhLXZlZF0iKTtmb3IoYiBvZiBjKXtpZihfLnluayhiLCEwKSE9PQphKWNvbnRpbnVlO2M9Yi5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtpZihjLndpZHRoPj13aW5kb3cuaW5uZXJXaWR0aCYmYy5oZWlnaHQ+PXdpbmRvdy5pbm5lckhlaWdodCl7YT1iO2JyZWFrIGF9fWE9ZG9jdW1lbnQuYm9keX1lbHNle2lmKGI9dGhpcy5rYy5HYSkoYj10aGlzLmtjLkdhKSYmYi5wYXJlbnRFbGVtZW50PyhiPWIuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCksYj1iLndpZHRoPj13aW5kb3cuaW5uZXJXaWR0aCYmYi5oZWlnaHQ+PXdpbmRvdy5pbm5lckhlaWdodCk6Yj0hMTtiJiYoYT10aGlzLmtjLkdhKX1pZihhJiZhLnF1ZXJ5U2VsZWN0b3JBbGwpe3RoaXMub2E9W107dGhpcy5rYy5vYT1bXTt0aGlzLmtjLkJhPXt9O2I9YS5xdWVyeVNlbGVjdG9yQWxsKCJbZGVjb2RlLWRhdGEtdmVkXSIpO2ZvcihjPWIubGVuZ3RoLTE7Yz49MDtjLS0pQ29rKHRoaXMsYltjXSk7Q29rKHRoaXMsYSk7Yj1hLnF1ZXJ5U2VsZWN0b3JBbGwoIltkYXRhLWh2ZWlkXSIpO0Rvayh0aGlzLGEpOwpmb3IoYT0wO2E8Yi5sZW5ndGg7YSsrKURvayh0aGlzLGJbYV0pfX19O3ZhciBIb2s9ZnVuY3Rpb24oYSxiKXt2YXIgYz1iLm9hO2lmKGEua2Mub2EubGVuZ3RoPD0wKXthLkJhLnBhcnNlKCk7Rm9rKGEpO2ZvcihsZXQgZCBvZiBhLmtjLm9hKXtpZihkLmNoaWxkcmVuLmxlbmd0aDw9MCljb250aW51ZTtsZXQgZT1kLlFjO2UmJihkLnNjcm9sbFk9TWF0aC5yb3VuZChlLnNjcm9sbFRvcCksZC5zY3JvbGxYPU1hdGgucm91bmQoZS5zY3JvbGxMZWZ0KSxhLnhjLmxvZyhuZXcgQW9rKGMsZC5CYSxkLkFhLGQuc2Nyb2xsWCxkLnNjcm9sbFkpKSl9YS5rYy5kaXNwYXRjaEV2ZW50KCJhdHRuLXZlLWNoZyIpfWVsc2UgRGF0ZS5ub3coKS1hLkVhPjUwJiZGb2soYSk7R29rKGEsYil9LEZvaz1mdW5jdGlvbihhKXt2YXIgYj1hLmtjLm9hO2ZvcihsZXQgYz0wO2M8Yi5sZW5ndGg7YysrKXtsZXQgZD1iW2NdO3JuayhkKTtmb3IobGV0IGUgb2YgZC5jaGlsZHJlbilybmsoZSl9YS5FYT1EYXRlLm5vdygpfSxHb2s9ZnVuY3Rpb24oYSxiKXt2YXIgYz1bXSxkPVtdLGU9YS5rYy5vYTsKZm9yKHZhciBmPTA7ZjxlLmxlbmd0aDtmKyspe3ZhciBnPWVbZl07dm5rKGcsYixhLmtjKT8oYy5wdXNoKGcpLFJuayhnKSk6d25rKGcsYixhLm9hKSYmKGQucHVzaChnKSxhLm9hLmFkZChnLm9hKCkpKTtmb3IobGV0IGggb2YgZy5jaGlsZHJlbil2bmsoaCxiLGEua2MpPyhjLnB1c2goaCksUm5rKGgpKTp3bmsoaCxiLGEub2EpJiYoZC5wdXNoKGgpLGEub2EuYWRkKGgub2EoKSkpfWZvcihlPTA7ZTxjLmxlbmd0aDtlKyspYS54Yy5sb2coY1tlXS5OJChiLm9hKSk7Zm9yKGY9MDtmPGQubGVuZ3RoO2YrKyljPWEueGMsZT1jLmxvZyxnPWRbZl0sZz1uZXcgUW5rKGcuQmEsZy5BYSksZy5rYT1iLm9hLGUuY2FsbChjLGcpfSxJb2s9Y2xhc3MgZXh0ZW5kcyBfLmhae2NvbnN0cnVjdG9yKGEsYixjKXtzdXBlcihhLGIsYyk7dGhpcy5CYT1uZXcgRW9rKGEsYixjKTt0aGlzLkVhPTA7dGhpcy53YT10aGlzLmtjLmNsaWVudEhlaWdodDt0aGlzLm9hPW5ldyBTZXQ7dGhpcy5hZGRMaXN0ZW5lcihjLAoiYXR0bi12cy1jaGciLHRoaXMuT2EsITEsdGhpcyk7dGhpcy5hZGRMaXN0ZW5lcihjLCJhdHRuLWRvbS1jaGciLHRoaXMuSWEsITEsdGhpcyk7dGhpcy5hZGRMaXN0ZW5lcihjLCJhdHRuLWNhci1zY3JsIix0aGlzLkdhLCExLHRoaXMpO3RoaXMua2Mua2EmJkhvayh0aGlzLHRoaXMua2Mua2EpfUlhKCl7dGhpcy5rYy5rYSYmKHRoaXMua2Mub2E9W10sSG9rKHRoaXMsdGhpcy5rYy5rYSkpfU9hKCl7dmFyIGE9dGhpcy5rYy5rYTthJiYodGhpcy53YT09dGhpcy5rYy5jbGllbnRIZWlnaHQ/R29rKHRoaXMsYSk6SG9rKHRoaXMsYSksdGhpcy53YT10aGlzLmtjLmNsaWVudEhlaWdodCl9R2EoYSl7dmFyIGI9dGhpcy5rYy5rYSxjPWEuc0Q7aWYoYiYmYyl7Yz1jLlFjLnF1ZXJ5U2VsZWN0b3JBbGwoIltkYXRhLWh2ZWlkXSIpO2E9YS50aW1lc3RhbXB8fERhdGUubm93KCk7Zm9yKGxldCBkPTA7ZDxjLmxlbmd0aDtkKyspe2xldCBlPV8uZ25rKHRoaXMua2MsY1tkXSk7ZSYmcm5rKGUpJiYKKChlLmthJiZfLnNuayhlLmthLGIua2EpfHxlLndhJiZfLnNuayhlLndhLGIua2EpKSYmdGhpcy54Yy5sb2coZS5OJChhKSksUm5rKGUpKX19fXFjKCl7dGhpcy5rYy5vYT1bXTt0aGlzLkJhLmRpc3Bvc2UoKTtzdXBlci5xYygpfX07dmFyIEpvaz1jbGFzcyBleHRlbmRzIF8uZlp7Y29uc3RydWN0b3IoYSxiLGMpe3N1cGVyKCk7dGhpcy5CYT1NYXRoLnJvdW5kKGEuY2xpZW50WCk7dGhpcy5FYT1NYXRoLnJvdW5kKGEuY2xpZW50WSk7dGhpcy5rYT1iO3RoaXMuR2E9Y31vYSgpe3JldHVybiB0aGlzLkdhP1siYyIsdGhpcy5CYSx0aGlzLkVhLDFdOlsiYyIsdGhpcy5CYSx0aGlzLkVhXX19O3ZhciBLb2s9Y2xhc3MgZXh0ZW5kcyBfLmZae2NvbnN0cnVjdG9yKGEsYixjLGQ9ITEpe3N1cGVyKCk7dmFyIGU9Yi5jbGllbnRYfHwwO2I9Yi5jbGllbnRZfHwwO3ZhciBmPWEuUWMuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7dGhpcy5JYT1NYXRoLnJvdW5kKGUtZi5sZWZ0KTt0aGlzLkthPU1hdGgucm91bmQoYi1mLnRvcCk7dGhpcy5CYT1kO3RoaXMuR2E9YS5BYTt0aGlzLkVhPWEuQmE7dGhpcy5rYT1jfHxEYXRlLm5vdygpfW9hKCl7dmFyIGE9WyJHIix0aGlzLkVhLHRoaXMuR2EsdGhpcy5JYSx0aGlzLkthXTt0aGlzLkJhJiZhLnB1c2goIjEiKTtyZXR1cm4gYX19O3ZhciBNb2s9ZnVuY3Rpb24oYSxiKXtpZihiJiZiLmpnKXt2YXIgYz1iLmpnO2lmKGMuY2xpZW50WCYmYy5jbGllbnRZKXtpZihjKXt2YXIgZD1jLnRhcmdldHx8Yy5zcmNFbGVtZW50O2lmKGQuaWQ9PSJzZW5kZXItcGluZy1lbCIpZD1udWxsO2Vsc2V7Zm9yKHZhciBlPV8uZFouY29uZmlnLkJhO2UtLSA+MCYmZCYmZC5ub2RlTmFtZSE9IkEiOylkPWQucGFyZW50RWxlbWVudDtkPWU+PTAmJmQ/ZDpudWxsfX1lbHNlIGQ9bnVsbDtpZihkKXtHbmsoYSk7ZD1kLm5vZGVOYW1lPT0iQSImJmQudGFyZ2V0PT0iX2JsYW5rInx8Yy5idXR0b24+MHx8Yy50eXBlPT0iY29udGV4dG1lbnUifHxjLnNoaWZ0S2V5fHxjLmN0cmxLZXl8fGMubWV0YUtleT8hMDohMTtlPUxvayhhLGMpO2ZvcihiPWIudGFyZ2V0O2I7KXtsZXQgZj1fLmduayhhLmtjLGIpO2lmKGYhPW51bGwpe2EueGMubG9nKG5ldyBLb2soZixjLGUsITApKTticmVha31iPWIucGFyZW50RWxlbWVudH1hLnhjLmxvZyhuZXcgSm9rKGMsCmUsZCkpO2Eua2MuZGlzcGF0Y2hFdmVudCgiYXR0bi1hLWNsayIpO18uRm1rKGEueGMsIkMiKX19fX0sTm9rPWZ1bmN0aW9uKGEpe2ZvcihsZXQgYj0wO2I8YS5vYS5sZW5ndGg7YisrKWEub2FbYl0mJmEua2Eudm8oYS5vYVtiXSk7YS5vYT1bXX0sTG9rPWZ1bmN0aW9uKGEsYil7dmFyIGM9RGF0ZS5ub3coKTtpZighYilyZXR1cm4gYztiPWIudGltZVN0YW1wO2IhPWEuQmEmJihhLndhPWMsYS5CYT1iKTtyZXR1cm4gYS53YT9hLndhOmN9LE9vaz1jbGFzcyBleHRlbmRzIF8uaFp7Y29uc3RydWN0b3IoYSxiLGMpe3N1cGVyKGEsYixjKTt0aGlzLm9hPVtdO3RoaXMuRWEoKTt0aGlzLmFkZExpc3RlbmVyKGMsImF0dG4tdmUtY2hnIix0aGlzLkVhLCExLHRoaXMpO3RoaXMuYWRkTGlzdGVuZXIoZG9jdW1lbnQsImNsaWNrIixkPT57TW9rKHRoaXMsZCl9LCEwKTt0aGlzLmFkZExpc3RlbmVyKGRvY3VtZW50LCJjb250ZXh0bWVudSIsZD0+e01vayh0aGlzLGQpfSwhMCk7dGhpcy53YT10aGlzLkJhPQpudWxsfUVhKCl7Tm9rKHRoaXMpO2ZvcihsZXQgYSBvZiBfLnBuayh0aGlzLmtjKSl0aGlzLm9hLnB1c2godGhpcy5rYS5saXN0ZW4oYS5RYywiY2xpY2siLGI9PntpZihhJiZhLlFjJiZiJiYoYj1iLlVuYSYmYi5qZyxiLmNsaWVudFgmJmIuY2xpZW50WSkpe0duayh0aGlzKTt2YXIgYz1Mb2sodGhpcyxiKTtybmsoYSk7YS53YSE9bnVsbCYmIWEuQW9hKCl8fHRoaXMueGMubG9nKGEuTiQoYykpO3RoaXMueGMubG9nKG5ldyBLb2soYSxiLGMpKTt0aGlzLmtjLmRpc3BhdGNoRXZlbnQoImF0dG4tZy1jbGsiKX19KSl9cWMoKXtOb2sodGhpcyk7c3VwZXIucWMoKX19O3ZhciBQb2s9Y2xhc3MgZXh0ZW5kcyBVbmt7Y29uc3RydWN0b3IoYSxiKXtzdXBlcihhLDApO3RoaXMuRWE9Yn1vYSgpe3JldHVyblsuLi5zdXBlci5vYSgpLC4uLnRoaXMuRWEuc3BsaXQoIjoiKV19fTt2YXIgUW9rPWZ1bmN0aW9uKGEpe2lmKGEua2MmJmEua2Mua2Epe3ZhciBiPWEua2Mua2EsYz1EYXRlLm5vdygpO2Iub2E9YzthLmtjLmRpc3BhdGNoRXZlbnQoImF0dG4tZG9tLWNoZyIpfX0sUm9rPWNsYXNzIGV4dGVuZHMgXy5oWntjb25zdHJ1Y3RvcihhLGIsYyl7c3VwZXIoYSxiLGMpO3RoaXMud2E9Xy5oZSh3aW5kb3csImF0dG5fdmlld2VyX29wZW4iLGQ9PntkJiZkIT09dGhpcy5rYy5BYSYmKHRoaXMua2MuQWE9ZCx0aGlzLnhjLmxvZyhuZXcgUG9rKCEwLGQpKSxRb2sodGhpcykpfSk7dGhpcy5vYT1fLmhlKHdpbmRvdywiYXR0bl92aWV3ZXJfY2xvc2UiLCgpPT57dGhpcy5rYy5BYSYmKHRoaXMueGMubG9nKG5ldyBQb2soITEsdGhpcy5rYy5BYSkpLHRoaXMua2MuQWE9bnVsbCxRb2sodGhpcykpfSl9cWMoKXt0aGlzLndhJiZfLkFuKHRoaXMud2EpO3RoaXMub2EmJl8uQW4odGhpcy5vYSk7c3VwZXIucWMoKX19O3ZhciBTb2s9Y2xhc3MgZXh0ZW5kcyBfLmhae2NvbnN0cnVjdG9yKGEsYixjKXtzdXBlcihhLGIsYyk7dGhpcy5vYT0hMTt0aGlzLmFkZExpc3RlbmVyKHdpbmRvdywiYmx1ciIsKCk9PntIbmsodGhpcyl9LCExLHRoaXMpO3RoaXMuYWRkTGlzdGVuZXIod2luZG93LCJhdHRuLWl2aXMiLCgpPT57SG5rKHRoaXMpfSwhMSx0aGlzKTt0aGlzLmFkZExpc3RlbmVyKHdpbmRvdywiZm9jdXMiLCgpPT57R25rKHRoaXMsITEsITApfSwhMSx0aGlzKTt0aGlzLmFkZExpc3RlbmVyKHdpbmRvdywiYXR0bi12aXMiLCgpPT57R25rKHRoaXMsITEsITApfSwhMSx0aGlzKTt0aGlzLmFkZExpc3RlbmVyKHdpbmRvdywiYXR0bl9wYXVzZSIsKCk9Pkhuayh0aGlzLCEwKSwhMSx0aGlzKTt0aGlzLmFkZExpc3RlbmVyKHdpbmRvdywiYXR0bl9yZXN1bWUiLCgpPT5HbmsodGhpcywhMCksITEsdGhpcyk7Xy5kWi5jb25maWcua2F8fCh0aGlzLmFkZExpc3RlbmVyKHdpbmRvdywicGFnZWhpZGUiLHRoaXMud2EsCiExLHRoaXMpLHRoaXMuYWRkTGlzdGVuZXIod2luZG93LCJwYWdlc2hvdyIsdGhpcy5CYSwhMSx0aGlzKSl9d2EoKXt0aGlzLm9hPSEwO0huayh0aGlzKX1CYSgpe3RoaXMua2MmJnRoaXMueGMmJih0aGlzLm9hPyh0aGlzLm9hPSExLHRoaXMua2MucmVzZXQoKSx0aGlzLnhjLnJlc2V0KCksR25rKHRoaXMsITEsITEpLEZuayh0aGlzLG5ldyBEbmsoITApLCEwKSx0aGlzLmtjLmRpc3BhdGNoRXZlbnQoImF0dG4tZG9tLWNoZyIpKTpHbmsodGhpcywhMSwhMSkpfX07dmFyIGlaPWZ1bmN0aW9uKGEsYil7YS5rYS5wdXNoKGIpfSxUb2s9Y2xhc3N7Y29uc3RydWN0b3IoYSl7YXx8bmV3IF8uaG5rO3RoaXMua2E9W119c3RvcCgpe2lmKHRoaXMua2EpZm9yKGxldCBhPTA7YTx0aGlzLmthLmxlbmd0aDthKyspdGhpcy5rYVthXS5kaXNwb3NlKCk7dGhpcy5rYT1bXX19O18uVW9rPWZ1bmN0aW9uKGEpe2lmKChhPT1udWxsPzA6YS5hdHRuX3Jlc2V0X3RpbWUpJiZ0eXBlb2YgYS5hdHRuX3Jlc2V0X3RpbWU9PT0ibnVtYmVyIilyZXR1cm4gYS5hdHRuX3Jlc2V0X3RpbWU7aWYoIWdvb2dsZXx8IWdvb2dsZS50aW1lcnN8fCFnb29nbGUudGltZXJzLmxvYWQpcmV0dXJuIG51bGw7YT1nb29nbGUudGltZXJzLmxvYWQ7dmFyIGI9Xy5aNmMoYSwiYWZ0cyIpO2lmKGIpcmV0dXJuIGI7Yj1fLlo2YyhhLCJwcnQiKTthPV8uWjZjKGEsImFmdCIpO3JldHVybiBiJiZhP01hdGgubWluKGIsYSk6Yn07Cl8uJG4oXy5tbmssbmV3IGNsYXNze2NvbnN0cnVjdG9yKCl7dGhpcy5rYT1udWxsfWluaXQoYSl7dmFyIGI9Xy5nWixjPV8uY1osZD1fLmluaztiJiZjJiZkJiYiZ2V0Qm91bmRpbmdDbGllbnRSZWN0ImluIGRvY3VtZW50LmJvZHkmJiJwYWdlWE9mZnNldCJpbiB3aW5kb3cmJiJpbm5lcldpZHRoImluIHdpbmRvdyYmKGE9Xy5Vb2soYSksXy5XbWsoYy5kRigpLCJWIiksdGhpcy5rYT1uZXcgVG9rKGQpLGlaKHRoaXMua2EsbmV3IHJvayhiLGMsZCxhfHx2b2lkIDApKSxpWih0aGlzLmthLG5ldyBTb2soYixjLGQpKSxpWih0aGlzLmthLG5ldyBWbmsoYixjLGQpKSxpWih0aGlzLmthLG5ldyBSb2soYixjLGQpKSxpWih0aGlzLmthLG5ldyBqb2soYixjLGQpKSxpWih0aGlzLmthLG5ldyB3b2soYixjLGQpKSxpWih0aGlzLmthLG5ldyBJb2soYixjLGQpKSxpWih0aGlzLmthLG5ldyBvb2soYixjLGQpKSxpWih0aGlzLmthLG5ldyBPb2soYixjLGQpKSxfLkFsayYmaVoodGhpcy5rYSxuZXcgYW9rKGIsCmMsZCkpLGlaKHRoaXMua2EsbmV3IGhvayhiLGMsZCkpLF8ub25rLm1hZ2lfbG9nZ2luZ19lbmFibGVkJiZpWih0aGlzLmthLG5ldyBabmsoYixjLGQpKSxfLnlsayYmaVoodGhpcy5rYSxuZXcgem9rKGIsYyxkKSkpfWRpc3Bvc2UoKXt0aGlzLmthJiYodGhpcy5rYS5zdG9wKCksdGhpcy5rYT1udWxsKX19KTsKdmFyIFZvaz1mdW5jdGlvbihhKXtpZighYS5vZmZzZXRQYXJlbnQpcmV0dXJuITE7dmFyIGI9YS5vZmZzZXRQYXJlbnQ7aWYoXy5rbihiLCJvdmVyZmxvdyIpPT09InZpc2libGUiKXJldHVybiExO3ZhciBjPV8ua24oYSwicG9zaXRpb24iKTtpZihjIT09InN0YXRpYyImJmMhPT0icmVsYXRpdmUiKXJldHVybiExO2I9Xy5ObmsoYi5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSk7cmV0dXJuIF8uc25rKF8uTm5rKGEuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkpLGIpPyExOiEwfSxXb2s9ZnVuY3Rpb24oKXt2YXIgYT0oMCxfLnZtLml4KSgpO3JldHVybiBhPyhhPV8ua21hKGEpLE51bWJlcihfLkRlKGEsMSkpJTEwMD09PTApOiExfSxYb2s9Xy5IbGsoKT8xRTM6MTUwMCxhcGs9ZnVuY3Rpb24oYSl7YS5hZGRMaXN0ZW5lcihhLmtjLCJhdHRuLWRvbS1jaGciLCgpPT57WW9rKGEpO1pvayhhKX0pO1lvayhhKTthLmFkZExpc3RlbmVyKHdpbmRvdywic2Nyb2xsIiwoKT0+eyRvayhhKX0sITApOwphLmFkZExpc3RlbmVyKHdpbmRvdywicmVzaXplIiwoKT0+eyRvayhhKX0pO2EuYWRkTGlzdGVuZXIod2luZG93LCJjbGljayIsKCk9Pntab2soYSl9KTthLmFkZExpc3RlbmVyKGEua2MsImF0dG4tYS1jbGsiLCgpPT57YS54Yy5mbHVzaCgpfSk7YS5hZGRMaXN0ZW5lcihhLmtjLCJhdHRuLWhvdmVyLWNoZyIsYj0+e3ZhciBjPWI9PW51bGw/dm9pZCAwOmIud2E7aWYoYyYmKGM9Yy5nZXRBdHRyaWJ1dGUoImRhdGEtYWF2cyIpKSYmKGM9YS53YS5nZXQoYyksYj1iLkFhLGMmJmImJmMgaW5zdGFuY2VvZiBfLklsaykpe3ZhciBkPURhdGUubm93KCk7Yj09PSJtb3VzZW92ZXIiP2Mua2F8fChjLmthPWQpOmI9PT0ibW91c2VvdXQiJiZjLktRKGQpfX0pO2EuYWRkTGlzdGVuZXIod2luZG93LCJwYWdlaGlkZSIsKCk9Pntab2soYSwhMCl9KTthLmFkZExpc3RlbmVyKHdpbmRvdywiYmx1ciIsKCk9Pntab2soYSwhMCl9KTthLmFkZExpc3RlbmVyKHdpbmRvdywidmlzaWJpbGl0eWNoYW5nZSIsCigpPT57Wm9rKGEsITApfSl9LFpvaz1mdW5jdGlvbihhLGI9ITEpe3ZhciBjPSgpPT57YS5vYT1udWxsO3ZhciBkPURhdGUubm93KCk7Zm9yKGxldCBnIG9mIGEud2EudmFsdWVzKCkpe3ZhciBlPWcuUHouZWxlbWVudCxmO2lmKCEoZj0hZXx8Xy5EbGsoZSxuZXcgXy5CbmsoMCwwLHdpbmRvdy5pbm5lcldpZHRoLHdpbmRvdy5pbm5lckhlaWdodCkpLmlzRW1wdHkoKXx8Vm9rKGUpfHxfLmtuKGUsImRpc3BsYXkiKT09PSJub25lInx8KF8ua24oZSwidmlzaWJpbGl0eSIpfHwidmlzaWJsZSIpIT09InZpc2libGUiKSlhOntpZighYnBrfHwhY3BrKXtmPSExO2JyZWFrIGF9Zj1lLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO2U9Y3BrLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO2Y9Zi5ib3R0b208ZS5ib3R0b219IWYmJmRwayhhLGcpO1ssZl09Xy5NbGsoZyxkLCExKTtnIGluc3RhbmNlb2YgXy5JbGsmJihmKz0zMzEpO2Y+PVhvayYmKGY9YSxkcGsoZixnKSwoZT1nLlB6LlpmYSkmJiFmLkVhLmhhcyhlKSYmCihmLkVhLmFkZChlKSxmLndhLmRlbGV0ZShnLlB6LlpmYSksZj1mLnhjLGYub2ErZS5sZW5ndGg+MTgwMCYmZi5mbHVzaCgpLGYuQmEuYWRkKGUpLGYub2ErPWUubGVuZ3RoKSl9Yj9hLnhjLmZsdXNoKCk6KGQ9YS54YywoZC53YS5zaXplfHxkLkJhLnNpemUpJiZfLmVaKGQsZC5mbHVzaC5iaW5kKGQpLDUwMCwiYWF2bF9mbHVzaCIsITApKX07Yj8oYS5vYSE9PW51bGwmJmNhbmNlbEFuaW1hdGlvbkZyYW1lKGEub2EpLGMoKSk6YS5vYT09PW51bGwmJihhLm9hPXJlcXVlc3RBbmltYXRpb25GcmFtZShjKSl9LFlvaz1mdW5jdGlvbihhKXt2YXIgYj1hLndhO2Eud2E9QXJyYXkuZnJvbShkb2N1bWVudC5ib2R5LnF1ZXJ5U2VsZWN0b3JBbGwoIltkYXRhLWFhdnNdIikpLmZpbHRlcihhLlNhLmJpbmQoYSkpLm1hcChjPT57dmFyIGQ9Yy5nZXRBdHRyaWJ1dGUoImRhdGEtYWF2cyIpO3JldHVybiBiLmhhcyhkKT9iLmdldChkKTpfLktsayh7WmZhOmMuZ2V0QXR0cmlidXRlKCJkYXRhLWFhdnMiKSwKZWxlbWVudDpjfSxhLmtjLGEuT2EpfSkucmVkdWNlKChjLGQpPT57Yy5zZXQoZC5Qei5aZmEsZCk7cmV0dXJuIGN9LG5ldyBNYXApfSwkb2s9ZnVuY3Rpb24oYSl7Xy5lWihhLCgpPT57Wm9rKGEpO18uSm1rKGEsImFhdmxfdXBkYXRlIil9LDIwMCwiYWF2bF91cGRhdGUiKX0sZHBrPWZ1bmN0aW9uKGEsYil7KGI9Yi5Qei5aZmEpJiYhYS5CYS5oYXMoYikmJihhLkJhLmFkZChiKSxhPWEueGMsYS5vYStiLmxlbmd0aD4xODAwJiZhLmZsdXNoKCksYS53YS5hZGQoYiksYS5vYSs9Yi5sZW5ndGgpfSxmcGs9Y2xhc3MgZXh0ZW5kcyBfLkxta3tjb25zdHJ1Y3Rvcigpe3ZhciBhPV8uZ1o/Xy5nWjpuZXcgXy5RbWs7c3VwZXIoYSk7dGhpcy5HYT0hMTt0aGlzLndhPW5ldyBNYXA7dGhpcy5CYT1uZXcgU2V0O3RoaXMuRWE9bmV3IFNldDt0aGlzLmtjPW51bGw7dGhpcy5PYT1EYXRlLm5vdygpO3RoaXMub2E9bnVsbDt0aGlzLklhPSExO3RoaXMueGM9bmV3IGVwayhhKX1pbml0KGEpe3RoaXMuT2E9Cl8uVW9rKGEpfHxEYXRlLm5vdygpO2lmKHRoaXMuSWE9V29rKCkpdGhpcy5HYT0hMDtpZih0aGlzLmtjPV8uaW5rKWFwayh0aGlzKSxab2sodGhpcywhMCksXy5lWih0aGlzLCgpPT57WW9rKHRoaXMpO1pvayh0aGlzLCEwKX0sNTAwLCJhYXZsX3BhZ2VfbG9hZCIpLCF0aGlzLkJhLnNpemUmJnRoaXMuR2EmJl8ud2xrKF8uY28oXy5kWi5laSx0aGlzLnhjLkdhKSxuZXcgTWFwKFtbImN0IiwiYWF2bCJdLFsiengiLGAke0RhdGUubm93KCl9YF1dKSkubG9nKCl9U2EoYSl7cmV0dXJuIGEuaGFzQXR0cmlidXRlKCJkYXRhLWFhdnMiKSYmIXRoaXMuRWEuaGFzKGEuZ2V0QXR0cmlidXRlKCJkYXRhLWFhdnMiKSkmJl8ua24oYSwiZGlzcGxheSIpIT09Im5vbmUiJiZfLmtuKGEsInZpc2liaWxpdHkiKT09PSJ2aXNpYmxlIiYmIV8udW5rKF8uTm5rKGEuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkpKX1kaXNwb3NlKCl7c3VwZXIuZGlzcG9zZSgpO3RoaXMueGMuZGlzcG9zZSgpfX0sYnBrPShuZXcgVVJMU2VhcmNoUGFyYW1zKF8uZGYoKSkpLmdldCgidWRtIik9PT0KIjUwIixjcGs9YnBrP2RvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJ1tqc25hbWU9Im9FUTN4Il0nKTpudWxsLGdwaz1fLkhsaygpPyIxNVNWIjoiVFdTViIsZXBrPWNsYXNzIGV4dGVuZHMgXy5MbWt7Y29uc3RydWN0b3IoYSl7c3VwZXIoYSk7dGhpcy53YT1uZXcgU2V0O3RoaXMuQmE9bmV3IFNldDt0aGlzLk9hPV8ueGxrP0RhdGUubm93KCkrMkUzOjA7dGhpcy5FYT1bXTt0aGlzLm9hPTA7dGhpcy5HYT1uZXcgXy5ibyh7cGF0aDoiL2FkdmlldyIsRkY6ITB9KTtfLnhsayYmXy5lWih0aGlzLHRoaXMuSWEuYmluZCh0aGlzKSwyRTMsImZpcnN0X2Rpc3BhdGNoX3RpbWVyIil9Zmx1c2goKXtpZih0aGlzLndhLnNpemV8fHRoaXMuQmEuc2l6ZSl7Xy5KbWsodGhpcywiYWF2bF9mbHVzaCIpO3ZhciBhPV8uY28oXy5kWi5laSx0aGlzLkdhKTt2YXIgYj1bXTt0aGlzLndhLnNpemUmJmIucHVzaChgQVBBRDoke1suLi50aGlzLndhXS5qb2luKCl9YCk7dGhpcy5CYS5zaXplJiZiLnB1c2goYCR7Z3BrfToke1suLi50aGlzLkJhXS5qb2luKCl9YCk7CmI9bmV3IE1hcChbWyJjdCIsImFhdmwiXSxbImFhdnMiLGIuam9pbigiOyIpXSxbInp4IixgJHtEYXRlLm5vdygpfWBdXSk7YT1fLndsayhhLGIpO0RhdGUubm93KCk+PXRoaXMuT2E/YS5sb2coKTp0aGlzLkVhLnB1c2goYSk7dGhpcy53YS5jbGVhcigpO3RoaXMuQmEuY2xlYXIoKTt0aGlzLm9hPTB9fUlhKCl7Zm9yKGxldCBhIG9mIHRoaXMuRWEpYS5sb2coKTt0aGlzLkVhLmxlbmd0aD0wfWRpc3Bvc2UoKXtzdXBlci5kaXNwb3NlKCk7Xy54bmsodGhpcyk7dGhpcy5JYSgpfX07Xy4kbihfLm1uayxuZXcgZnBrKTsKdmFyIGxwaz17bW91c2VvdXQ6Im8iLG1vdXNlb3ZlcjoiaSJ9LG1waz1jbGFzcyBleHRlbmRzIF8uWmR7Y29uc3RydWN0b3IoYSxiKXtzdXBlcigiYXR0bi1ob3Zlci1jaGciKTt0aGlzLkFhPWE7dGhpcy53YT1ifX0sbnBrPWNsYXNzIGV4dGVuZHMgXy5mWntjb25zdHJ1Y3RvcihhKXtzdXBlcigpO3RoaXMuZG9tRWxlbWVudD1hfXdhKGEpe3ZhciBiPWxway5tb3VzZW92ZXIsYz10aGlzLmRvbUVsZW1lbnQ7aWYoIWN8fHRoaXMuZXZlbnRUeXBlIT1iKXJldHVybiExO2I9bHBrLm1vdXNlb3V0O2ZvcihsZXQgZD1hLmxlbmd0aC0xO2Q+PTAmJiEodGhpcy5rYS1hW2RdLmthPjIpO2QtLSlpZihhW2RdLmV2ZW50VHlwZT09YiYmYVtkXS5BYSgpPT09Yyl7Zm9yKGM9ZDtjPGEubGVuZ3RoLTE7YysrKWFbY109YVtjKzFdO2EucG9wKCk7cmV0dXJuITB9cmV0dXJuITF9QWEoKXtyZXR1cm4gdGhpcy5kb21FbGVtZW50fX0sb3BrPWNsYXNzIGV4dGVuZHMgbnBre2NvbnN0cnVjdG9yKGEsYixjLApkKXtzdXBlcihkKTt0aGlzLkVhPWE7dGhpcy5CYT1iO3RoaXMuZXZlbnRUeXBlPWN9b2EoKXtyZXR1cm5bImgiLHRoaXMuQmEsdGhpcy5FYSx0aGlzLmV2ZW50VHlwZV19fSxxcGs9ZnVuY3Rpb24oYSl7aWYoYS53YS5vYSlmb3IobGV0IGIgb2YgXy5wbmsoYS53YSkpe2xldCBjPWIuUWM7YS5vYS5wdXNoKGEua2EubGlzdGVuKGMsIm1vdXNlb3ZlciIsKCk9PntwcGsoYSxiLCJtb3VzZW92ZXIiLGMpfSkpO2Eub2EucHVzaChhLmthLmxpc3RlbihjLCJtb3VzZW91dCIsKCk9PntwcGsoYSxiLCJtb3VzZW91dCIsYyl9KSl9fSxycGs9ZnVuY3Rpb24oYSl7Zm9yKGxldCBiPTA7YjxhLm9hLmxlbmd0aDtiKyspYS5vYVtiXSYmYS5rYS52byhhLm9hW2JdKTthLm9hPVtdfSxwcGs9ZnVuY3Rpb24oYSxiLGMsZCl7YS5XaS5sb2cobmV3IG9wayhiLkFhLGIuQmEsbHBrW2NdLGQpKTthLndhLmRpc3BhdGNoRXZlbnQobmV3IG1wayhjLGQpKX0sc3BrPWNsYXNzIGV4dGVuZHMgXy5MbWt7Y29uc3RydWN0b3IoYSwKYixjKXtzdXBlcihjKTt0aGlzLndhPWE7dGhpcy5XaT1iO3RoaXMub2E9W107dGhpcy5hZGRMaXN0ZW5lcihhLCJhdHRuLXZlLWNoZyIsdGhpcy5CYSwhMSx0aGlzKTtxcGsodGhpcyl9QmEoKXtycGsodGhpcyk7cXBrKHRoaXMpfXFjKCl7cnBrKHRoaXMpO3N1cGVyLnFjKCl9fTt2YXIgdHBrPWNsYXNzIGV4dGVuZHMgXy5oWntjb25zdHJ1Y3RvcihhLGIsYyl7c3VwZXIoYSxiLGMpO3RoaXMub2E9dGhpcy5rYS5saXN0ZW4od2luZG93LCJwb2ludGVybW92ZSIsZD0+e2QucG9pbnRlclR5cGUmJmQucG9pbnRlclR5cGU9PSJtb3VzZSImJih0aGlzLnhjLmRGKCkuRWEuTT0hMCx0aGlzLm9hJiZ0aGlzLmthLnZvKHRoaXMub2EpKX0pO3RoaXMud2E9dGhpcy5rYS5saXN0ZW4od2luZG93LCJ0b3VjaHN0YXJ0IiwoKT0+e3RoaXMueGMuZEYoKS5FYS5UPSEwO3RoaXMud2EmJnRoaXMua2Eudm8odGhpcy53YSl9KX1xYygpe3RoaXMud2EmJnRoaXMua2Eudm8odGhpcy53YSk7dGhpcy5vYSYmdGhpcy5rYS52byh0aGlzLm9hKX19O18uJG4oXy5tbmssbmV3IGNsYXNze2NvbnN0cnVjdG9yKCl7dGhpcy5vYT10aGlzLmthPW51bGx9aW5pdCgpe3ZhciBhPV8uZ1osYj1fLmNaLGM9Xy5pbms7YSYmYiYmYyYmKF8uV21rKGIuZEYoKSwiSCIpLHRoaXMua2E9bmV3IHNwayhjLGIsYSksdGhpcy5vYT1uZXcgdHBrKGEsYixjKSl9ZGlzcG9zZSgpe3RoaXMua2EmJih0aGlzLmthLmRpc3Bvc2UoKSx0aGlzLmthPW51bGwpO3RoaXMub2EmJih0aGlzLm9hLmRpc3Bvc2UoKSx0aGlzLm9hPW51bGwpfX0pOwoKCl8udigpOwp9Y2F0Y2goZSl7Xy5fRHVtcEV4Y2VwdGlvbihlKX0KdHJ5ewpfLmF2az1fLmtjKCJLSG91cmQiLFtdKTsKfWNhdGNoKGUpe18uX0R1bXBFeGNlcHRpb24oZSl9CnRyeXsKXy5sTGk9Y2xhc3MgZXh0ZW5kcyBfLmx7Y29uc3RydWN0b3IoYSl7c3VwZXIoYSl9R3EoKXtyZXR1cm4gXy5mayh0aGlzLDEpfXNldFNwZWVkKGEpe3JldHVybiBfLndoKHRoaXMsOCxhKX19Owp9Y2F0Y2goZSl7Xy5fRHVtcEV4Y2VwdGlvbihlKX0KdHJ5ewpfLmlMaT1jbGFzcyBleHRlbmRzIF8ubHtjb25zdHJ1Y3RvcihhKXtzdXBlcihhKX13YSgpe3JldHVybiBfLk9qKHRoaXMsNCl9QmEoKXtyZXR1cm4gXy5Rayh0aGlzLDQpfW9hKCl7cmV0dXJuIF8uZWkodGhpcyw0KX1BYSgpe3JldHVybiBfLnEodGhpcyxfLkJOYiw1KX19Owp9Y2F0Y2goZSl7Xy5fRHVtcEV4Y2VwdGlvbihlKX0KdHJ5ewpfLlFKYj1mdW5jdGlvbihhLGIpe3JldHVybiBfLm1rKGEsMixiKX07Xy5SSmI9ZnVuY3Rpb24oYSxiKXtpZighTnVtYmVyLmlzRmluaXRlKGIpKXRocm93IEVycm9yKCk7dmFyIGM9TWF0aC50cnVuYyhiKTtiPShiLWMrYyUxRTMpKjFFNjtyZXR1cm4gXy5RSmIoYS5zZXRTZWNvbmRzKE1hdGgudHJ1bmMoYy8xRTMpKSxNYXRoLnRydW5jKGIpKX07Cn1jYXRjaChlKXtfLl9EdW1wRXhjZXB0aW9uKGUpfQp0cnl7CnZhciBCTGksSUxpLE9MaSxQTGksUUxpLFJMaSxTTGksVExpLFVMaSxWTGksV0xpLFhMaSxZTGk7Xy5DTGk9ZnVuY3Rpb24oKXtfLmpmLmdldCgiRVVVTEUiKSE9bnVsbCYmXy5qZi5yZW1vdmUoIkVVVUxFIiwiLyIpOyhCTGkoImoiKXx8QkxpKCJhIikpJiZfLmpmLnJlbW92ZSgiVVVMRSIsIi8iKX07QkxpPWZ1bmN0aW9uKGEpe3ZhciBiPV8uamYuZ2V0KCJVVUxFIik7aWYoIWIpcmV0dXJuIG51bGw7Yj1iLnNwbGl0KCIrIik7cmV0dXJuIGIubGVuZ3RoIT0yfHxiWzBdIT1hP251bGw6YlsxXX07Xy5FTGk9ZnVuY3Rpb24oYSl7cmV0dXJuIF8uRExpKGEpLmthKCk/KF8uQ0xpKCksITApOiExfTtJTGk9ZnVuY3Rpb24oYSl7c3dpdGNoKGEpe2Nhc2UgMTpyZXR1cm4gRkxpO2Nhc2UgMjpyZXR1cm4gR0xpO2Nhc2UgMzpyZXR1cm4gSExpO2RlZmF1bHQ6dGhyb3cgRXJyb3IoIk5zYCIrYSk7fX07Cl8uS0xpPWZ1bmN0aW9uKGEpe3N3aXRjaChfLkpMaShhKSl7Y2FzZSAwOnJldHVybiAwO2Nhc2UgMTpyZXR1cm4gMTtjYXNlIDI6cmV0dXJuIDI7Y2FzZSAzOnJldHVybiAzO2Nhc2UgNTpyZXR1cm4gNDtjYXNlIDY6cmV0dXJuIDU7ZGVmYXVsdDpyZXR1cm4gMH19O18uTExpPWZ1bmN0aW9uKGEpe3N3aXRjaChhKXtjYXNlIDE6cmV0dXJuIDI7Y2FzZSAyOnJldHVybiAzO2Nhc2UgMzpyZXR1cm4gNDtjYXNlIDFFMzpyZXR1cm4gNTtjYXNlIDEwMDI6cmV0dXJuIDY7ZGVmYXVsdDpyZXR1cm4gMH19O18uTkxpPWZ1bmN0aW9uKGEpe2lmKGE9PT0yKXJldHVybiBudWxsO3RyeXt2YXIgYj13aW5kb3cubG9jYWxTdG9yYWdlfWNhdGNoKGMpe3JldHVybiBudWxsfWlmKCFiKXJldHVybiBudWxsO2E9bmV3IE1MaShiKTtpZighYS5zZXQoInBsYWNlaG9sZGVyIiwwKSlyZXR1cm4gbnVsbDthLnJlbW92ZSgicGxhY2Vob2xkZXIiKTtyZXR1cm4gYX07Ck9MaT1mdW5jdGlvbihhKXtyZXR1cm4gYT09PTF8fGE9PT01fTtQTGk9ZnVuY3Rpb24oYSl7c3dpdGNoKGEpe2Nhc2UgMTpyZXR1cm4gMjtjYXNlIDI6cmV0dXJuIDM7Y2FzZSAzOnJldHVybiAxO2Nhc2UgNDpyZXR1cm4gNTtkZWZhdWx0OnJldHVybiAwfX07UUxpPWZ1bmN0aW9uKGEpe3ZhciBiPVBMaShhLm9hKCkpO2I9Xy5uWChiKTthPWEuQWEoKTtyZXR1cm4gXy5TYihiLF8uQk5iLDIsYSl9O1JMaT1mdW5jdGlvbihhKXtyZXR1cm4gYT9hLkJhKCkmJmEud2EoKSE9PTA/UHJvbWlzZS5yZXNvbHZlKGEpOlByb21pc2UucmVqZWN0KG5ldyBfLm9YKDIsYFNpbGsgZ2VvbG9jYXRpb24gcGVybWlzc2lvbnMgQVBJIHJldHVybmVkIGludmFsaWQgcGVybWlzc2lvbiB2YWx1ZSAke2Eub2EoKX0uYCkpOlByb21pc2UucmVqZWN0KG5ldyBfLm9YKDIsIlNpbGsgZ2VvbG9jYXRpb24gcGVybWlzc2lvbnMgQVBJIHJldHVybmVkIG51bGwgb3IgdW5kZWZpbmVkLiIpKX07ClNMaT1mdW5jdGlvbihhKXtpZihhIGluc3RhbmNlb2YgXy5YZSl7YTpzd2l0Y2goYS5JQWEpe2Nhc2UgImZlYXR1cmVfbm90X2VuYWJsZWQiOnZhciBiPTE7YnJlYWsgYTtkZWZhdWx0OmI9M31hPVByb21pc2UucmVqZWN0KG5ldyBfLm9YKGIsYS5tZXNzYWdlKSl9ZWxzZSBhPVByb21pc2UucmVqZWN0KG5ldyBfLm9YKDQsYFNpbGsgQVBJIHJldHVybmVkIGFuIHVua25vd24gZXJyb3I6ICR7YX1gKSk7cmV0dXJuIGF9O1RMaT1jbGFzcyBleHRlbmRzIF8ubHtjb25zdHJ1Y3RvcihhKXtzdXBlcihhKX19O1VMaT1jbGFzcyBleHRlbmRzIF8ubHtjb25zdHJ1Y3RvcihhKXtzdXBlcihhKX19O1ZMaT1jbGFzcyBleHRlbmRzIF8ubHtjb25zdHJ1Y3RvcihhKXtzdXBlcihhKX19O1dMaT1jbGFzcyBleHRlbmRzIF8ubHtjb25zdHJ1Y3RvcihhKXtzdXBlcihhKX1nZXRGaWVsZE9mVmlldygpe3JldHVybiBfLnEodGhpcyxWTGksOCl9fTsKWExpPWNsYXNzIGV4dGVuZHMgXy5se2NvbnN0cnVjdG9yKGEpe3N1cGVyKGEpfUdxKCl7cmV0dXJuIF8uRGUodGhpcywzKX1OYygpe3JldHVybiBfLnEodGhpcyxUTGksMTApfXhkKCl7cmV0dXJuIF8uTWoodGhpcywxNil9aGFzQXR0cmlidXRlcygpe3JldHVybiBfLmtqKHRoaXMsV0xpLDE5KX19O1lMaT0hIShfLk9pWzM3XSYzMik7Xy5aTGk9ISEoXy5PaVs4Ml0+PjI5JjEpO18uJExpPSEhKF8uT2lbOTBdJjgxOTIpO18uRExpPWZ1bmN0aW9uKGEpe3JldHVybiBhIGluc3RhbmNlb2YgXy5wWD9hOm5ldyBfLnBYKDIsYFRoZSBnZW9sb2NhdGlvbiBBUEkgcmV0dXJuZWQgYW4gdW5rbm93biBlcnJvcjogJHthfWApfTtfLnBYPWNsYXNzIGV4dGVuZHMgRXJyb3J7Y29uc3RydWN0b3IoYSxiKXtzdXBlcihiKTt0aGlzLmNvZGU9YX1rYSgpe3JldHVybiB0aGlzLmNvZGU9PT0xfHx0aGlzLmNvZGU9PT0xMDAxfX07dmFyIGFNaSxiTWk7YU1pPW5ldyBfLnRCKCJoIiw2KTtiTWk9bmV3IF8udEIoIm4iLDEwKTsKXy5jTWk9Y2xhc3N7Y29uc3RydWN0b3IoYSl7dGhpcy5rYT1hTWk7dGhpcy53YT1hO3RoaXMub2E9ITB9d3JpdGUoYSxiLGMpe3ZhciBkPW5ldyBYTGk7ZD1fLlpoKGQsMSwxKTtkPV8uWmgoZCwyLDEyKTtkPV8uWmgoZCw5LGI9PT0yPzEyOjYpO2MhPT12b2lkIDAmJl8uWmgoZCwyNSxjKTtpZihhLnRpbWVzdGFtcCl7Yz1TdHJpbmc7dmFyIGU9YS50aW1lc3RhbXAsZj1uZXcgXy54QjtmLnNldFRpbWUoZSk7Yz1jKGYuZ2V0VGltZSgpKjFFMyk7Xy50aChkLDMsYyl9aWYoYT1hLmNvb3JkcylhLmxhdGl0dWRlJiZhLmxvbmdpdHVkZSYmKGM9YS5sYXRpdHVkZSxlPWEubG9uZ2l0dWRlLGY9bmV3IFVMaSxfLmxrKGYsMSxNYXRoLnJvdW5kKGMqMUU3KSksXy5sayhmLDIsTWF0aC5yb3VuZChlKjFFNykpLF8uU2IoZCxVTGksNSxmKSksYS5hY2N1cmFjeSYmXy53aChkLDcsYS5hY2N1cmFjeSoxRTMqLjYyKSx0aGlzLndhJiYoYS5zcGVlZHx8YS5oZWFkaW5nKSYmKGM9bmV3IFdMaSxhLnNwZWVkJiYKXy5sayhjLDQsTWF0aC5yb3VuZChhLnNwZWVkKjMuNikpLGEuaGVhZGluZyYmXy5sayhjLDMsTWF0aC5yb3VuZChhLmhlYWRpbmcpKSxfLlNiKGQsV0xpLDE5LGMpKTtkPWQuRmMoKTtkPWBqKyR7Xy5QYShkKX1gO2E9Yj09PTI/Yk1pOnRoaXMua2E7Xy5qZi5zZXQoYj09PTI/IkVVVUxFIjoiVVVMRSIsZCx7bWF4QWdlOigoYS5xdSoyNCthLmhvdXJzKSo2MCthLm1pbnV0ZXMpKjYwK2Eua2EscGF0aDoiLyIsZG9tYWluOnZvaWQgMCxzZWN1cmU6dGhpcy5vYX0pfX07dmFyIEZMaSxHTGksSExpO0ZMaT1be3JKYTo1NEU0LHRpbWVvdXRNaWxsaXM6M0U0fV07R0xpPVt7ckphOjE1RTMsdGltZW91dE1pbGxpczozRTQsZW5hYmxlSGlnaEFjY3VyYWN5OiEwfSx7ckphOjU0RTQsdGltZW91dE1pbGxpczozRTR9XTtITGk9W3tySmE6MTVFMyx0aW1lb3V0TWlsbGlzOjNFNH0se3JKYTo1NEU0LHRpbWVvdXRNaWxsaXM6M0U0fV07Xy5kTWk9Y2xhc3N7Y29uc3RydWN0b3IoYSl7dGhpcy5Pbz1hfWFzeW5jIGdldEN1cnJlbnRQb3NpdGlvbihhLGIpe3ZhciBjPSgwLF8uTWYpKCksZD1jKCk7Yz1jKDEpO3RyeXtsZXQgZTtmb3IobGV0IGYgb2YgSUxpKGIpKXRyeXtyZXR1cm4gYyhhd2FpdCBkKHRoaXMuT28uZ2V0Q3VycmVudFBvc2l0aW9uKGEsZi50aW1lb3V0TWlsbGlzLGYpKSl9Y2F0Y2goZyl7YygpO2lmKF8uRExpKGcpLmthKCkpdGhyb3cgZztlPWd9dGhyb3cgZXx8RXJyb3IoIk9zIik7fWZpbmFsbHl7ZCgpfX19O18uZU1pPWZ1bmN0aW9uKGEsYil7YS5rYT0hMDt2YXIgYz1hLm9hLGQ9Xy5LTGkoYik7Xy5aaChjLDMsZCk7YT1hLm9hO2I9Xy5xKGIsXy5CTmIsMik7Xy5TYihhLF8uQk5iLDE1LGIpfTtfLmZNaT1mdW5jdGlvbihhLGIpe2Eua2E9ITA7Xy5vayhhLm9hLDUsYil9O18uZ01pPWZ1bmN0aW9uKGEsYil7YS5rYT0hMDtfLiRoKGEub2EsOSwhMCk7dmFyIGM7KGM9YS5jb3VudGVycyk9PW51bGx8fGMuWHpjKGIpfTsKXy5oTWk9Y2xhc3N7Y29uc3RydWN0b3IoYSxiKXt0aGlzLmljYj1hO3RoaXMuY291bnRlcnM9Yjt0aGlzLm9hPW5ldyBfLkpPYjt0aGlzLmthPSExfWFzeW5jIGZsdXNoKCl7dmFyIGE9KDAsXy5NZikoKSxiPWEoKTthPWEoMSk7dHJ5e2lmKHRoaXMua2Epe3ZhciBjOyhjPXRoaXMuY291bnRlcnMpPT1udWxsfHxjLmZsdXNoKCk7aWYodGhpcy5pY2Ipe3ZhciBkPV8uT2EodGhpcy5vYS5vYSgpLDQpO2EoYXdhaXQgYihfLkR2KFtuZXcgXy5mbyh0aGlzLmljYiwic2hvdyIpXSx7ZGF0YTp7bHBsOmR9fSkpKX10aGlzLmthPSExfX1maW5hbGx5e2IoKX19fTt2YXIgTUxpPWNsYXNze2NvbnN0cnVjdG9yKGEpe3RoaXMua2E9YX1nZXQoYSl7aWYoIV8uZWEubmF2aWdhdG9yLmNvb2tpZUVuYWJsZWQpcmV0dXJuIG51bGw7YT10aGlzLmthLmdldEl0ZW0oInVkbGE6OiIrYSk7aWYoIWEpcmV0dXJuIG51bGw7dHJ5e3JldHVybiBKU09OLnBhcnNlKGEpfWNhdGNoKGIpe3JldHVybiBudWxsfX1yZW1vdmUoYSl7Xy5lYS5uYXZpZ2F0b3IuY29va2llRW5hYmxlZCYmdGhpcy5rYS5yZW1vdmVJdGVtKCJ1ZGxhOjoiK2EpfXNldChhLGIpe2lmKCFfLmVhLm5hdmlnYXRvci5jb29raWVFbmFibGVkKXJldHVybiExO3RyeXtyZXR1cm4gdGhpcy5rYS5zZXRJdGVtKCJ1ZGxhOjoiK2EsSlNPTi5zdHJpbmdpZnkoYikpLCEwfWNhdGNoKGMpe3JldHVybiExfX19O18ub1g9Y2xhc3MgZXh0ZW5kcyBFcnJvcntjb25zdHJ1Y3RvcihhLGIpe3N1cGVyKGIpO3RoaXMuY29kZT1hfX07dmFyIGlNaTtfLkpMaT1mdW5jdGlvbihhKXtyZXR1cm4gXy5PaihhLDEpfTtfLm5YPWZ1bmN0aW9uKGEpe3ZhciBiPW5ldyBpTWk7cmV0dXJuIF8uWmgoYiwxLGEpfTtpTWk9Y2xhc3MgZXh0ZW5kcyBfLmx7Y29uc3RydWN0b3IoYSl7c3VwZXIoYSl9fTt2YXIgak1pO2pNaT1hc3luYyBmdW5jdGlvbihhKXt2YXIgYj0oMCxfLk1mKSgpLGM9YigpO2I9YigxKTt0cnl7bGV0IGY9RGF0ZS5ub3coKTt0cnl7bGV0IGc9Yihhd2FpdCBjKGEuR2EuU3FiKCkpKSxoPURhdGUubm93KCktZjt2YXIgZD1hLnhjO2Qua2E9ITA7Xy5vayhkLm9hLDYsaCk7cmV0dXJuIFFMaShnKX1jYXRjaChnKXtiKCk7aWYoIShnIGluc3RhbmNlb2YgXy5vWCYmZy5jb2RlPT09MSkpe2xldCBoPURhdGUubm93KCktZjt2YXIgZT1hLnhjO2Uua2E9ITA7Xy5vayhlLm9hLDYsaCl9dGhyb3cgZzt9fWZpbmFsbHl7YygpfX07Cl8ua01pPWNsYXNze2NvbnN0cnVjdG9yKGEsYil7dGhpcy5HYT1hO3RoaXMueGM9Yjt0aGlzLmthPXRoaXMuRWE9MDt0aGlzLkFhPXRoaXMuQmE9bnVsbDt0aGlzLm9hPV8ublgoMCk7dGhpcy5vYT1fLm5YKDApfWFkYSgpe3RoaXMuQmF8fCh0aGlzLkJhPWpNaSh0aGlzKSk7cmV0dXJuIHRoaXMuQmF9d2EoKXt0aGlzLkFhfHwodGhpcy5BYT10aGlzLkdhLlNxYigpLnRoZW4oUUxpKSk7cmV0dXJuIHRoaXMuQWF9YXN5bmMgWGphKCl7dmFyIGE9KDAsXy5NZikoKSxiPWEoKTthPWEoMSk7dHJ5e3RoaXMub2E9YShhd2FpdCBiKHRoaXMuYWRhKCkpKSx0aGlzLmthPTEsdGhpcy5FYT1EYXRlLm5vdygpfWZpbmFsbHl7YigpfX1hc3luYyBWTWEoYT1EYXRlLm5vdygpLXRoaXMuRWEpe18uSkxpKHRoaXMub2EpO3RoaXMua2E9Mn1hc3luYyBVTWEoYSxiPURhdGUubm93KCktdGhpcy5FYSl7dmFyIGM9KDAsXy5NZikoKTthPWMoKTtjPWMoMSk7dHJ5e2lmKF8uSkxpKHRoaXMub2EpPT09MHx8dGhpcy5rYSE9PQoxKXRoaXMua2E9MjtlbHNle3RoaXMua2E9Mjt2YXIgZD1jKGF3YWl0IGEodGhpcy53YSgpKSk7Xy5KTGkoZCkhPT0wJiZPTGkoXy5KTGkoZCkpJiZiPDUwMCYmKHRoaXMub2E9Xy5uWCgzKSl9fWZpbmFsbHl7YSgpfX1Jb2EoKXtyZXR1cm4gT0xpKF8uSkxpKHRoaXMub2EpKSYmdGhpcy5rYT09PTJ9fTtfLmxNaT1uZXcgXy5hbzt2YXIgbU1pLG5NaSxvTWk7bU1pPWNsYXNze2FzeW5jIGFkYSgpe3JldHVybiBfLm5YKDApfWFzeW5jIHdhKCl7cmV0dXJuIF8ublgoMCl9YXN5bmMgWGphKCl7fWFzeW5jIFZNYSgpe31hc3luYyBVTWEoKXt9SW9hKCl7cmV0dXJuITF9fTtuTWk9ZnVuY3Rpb24oYSl7cmV0dXJuIGEua2E/YS5vYTphLkFhfTtvTWk9YXN5bmMgZnVuY3Rpb24oYSl7dmFyIGI9KDAsXy5NZikoKSxjPWIoKTtiPWIoMSk7dHJ5e2xldCBkO3RyeXtkPWIoYXdhaXQgYyhuTWkoYSkuYWRhKCkpKX1jYXRjaChlKXtyZXR1cm4gYigpLGUgaW5zdGFuY2VvZiBfLm9YJiZlLmNvZGU9PT0xPyhhLmthPSEwLFtiKGF3YWl0IGMoYS5vYS5hZGEoKSkpLDFdKTpbXy5uWCgwKSwzXX1yZXR1cm4gXy5KTGkoZCk9PT0xJiZZTGk/KGEua2E9ITAsW2IoYXdhaXQgYyhhLm9hLmFkYSgpKSksMl0pOltkLDNdfWZpbmFsbHl7YygpfX07Cl8ucE1pPWNsYXNze2NvbnN0cnVjdG9yKGEsYixjKXt0aGlzLkFhPWE7dGhpcy54Yz1iO3RoaXMua2E9ITE7dGhpcy5vYT1jfHxuZXcgbU1pfWFzeW5jIGFkYSgpe3ZhciBhPSgwLF8uTWYpKCksYj1hKCk7YT1hKDEpO3RyeXtsZXQgW2QsZV09YShhd2FpdCBiKG9NaSh0aGlzKSkpO3ZhciBjPXRoaXMueGM7Yy5rYT0hMDtfLlpoKGMub2EsNyxlKTtfLmVNaSh0aGlzLnhjLGQpO3JldHVybiBkfWZpbmFsbHl7YigpfX1hc3luYyB3YSgpe3ZhciBhPSgwLF8uTWYpKCksYj1hKCk7YT1hKDEpO3RyeXt0cnl7cmV0dXJuIGEoYXdhaXQgYih0aGlzLkFhLndhKCkpKX1jYXRjaChjKXtyZXR1cm4gYSgpLF8ublgoMCl9fWZpbmFsbHl7YigpfX1hc3luYyBYamEoKXt2YXIgYT0oMCxfLk1mKSgpLGI9YSgpO2E9YSgxKTt0cnl7YShhd2FpdCBiKHRoaXMuYWRhKCkpKTt0cnl7YShhd2FpdCBiKG5NaSh0aGlzKS5YamEoRGF0ZS5ub3coKSkpKX1jYXRjaChkKXtpZihhKCksZCBpbnN0YW5jZW9mIF8ub1gmJgpkLmNvZGU9PT0xKXt0aGlzLmthPSEwO3ZhciBjPXRoaXMueGM7Yy5rYT0hMDtfLlpoKGMub2EsNywxKTthKGF3YWl0IGIodGhpcy5vYS5YamEoRGF0ZS5ub3coKSkpKX19dGhpcy5CYT1EYXRlLm5vdygpfWZpbmFsbHl7YigpfX1hc3luYyBWTWEoYT1EYXRlLm5vdygpLXRoaXMuQmEpe3ZhciBiPSgwLF8uTWYpKCksYz1iKCk7Yj1iKDEpO3RyeXt2YXIgZD10aGlzLnhjO2Qua2E9ITA7Xy5aaChkLm9hLDQsMSk7Xy5mTWkodGhpcy54YyxhKTtiKGF3YWl0IGMobk1pKHRoaXMpLlZNYShhKSkpfWZpbmFsbHl7YygpfX1hc3luYyBVTWEoYSxiPURhdGUubm93KCktdGhpcy5CYSl7dmFyIGM9KDAsXy5NZikoKSxkPWMoKTtjPWMoMSk7dHJ5e3ZhciBlPXRoaXMueGMsZj1hLmNvZGU7ZS5rYT0hMDtfLlpoKGUub2EsNCxfLkxMaShmKSk7Xy5mTWkodGhpcy54YyxiKTtjKGF3YWl0IGQobk1pKHRoaXMpLlVNYShhLGIpKSl9ZmluYWxseXtkKCl9fUlvYSgpe3JldHVybiBuTWkodGhpcykuSW9hKCl9fTt2YXIgcU1pLHJNaSxzTWksdE1pO3FNaT1mdW5jdGlvbihhKXthLnN0b3JhZ2Uuc2V0KCJpa3MiLDApO2Euc3RvcmFnZS5zZXQoInNyIiwwKTthLnN1bT0wO2Euc3RvcmFnZS5zZXQoImxsdHNhIixEYXRlLm5vdygpKX07ck1pPWZ1bmN0aW9uKGEsYixjLGQpe3ZhciBlPURhdGUubm93KCk7Yz1jPjUwMDsoYnx8YykmJmEuc3RvcmFnZS5zZXQoImxzdG90IixlKTsoY3x8YS5zdW08MCYmYnx8YS5zdW0+MCYmIWIpJiZhLnN0b3JhZ2Uuc2V0KCJsbHRzYSIsZSk7c3dpdGNoKGQpe2Nhc2UgMDphLmthPWU7YS5zdG9yYWdlLnNldCgibHRwIixhLmthKTticmVhaztjYXNlIDE6Y2FzZSA1OmI/YS5zdW0rKzphLnN1bS0tO2Euc3RvcmFnZS5zZXQoInNyIixhLnN1bSk7aWYoYS5zdW08LTF8fDE8YS5zdW0pYS5vYT0hMCxhLnN0b3JhZ2Uuc2V0KCJpa3MiLE51bWJlcihhLm9hKSk7YS5rYT1lO2Euc3RvcmFnZS5zZXQoImx0cCIsYS5rYSl9fTsKc01pPWNsYXNze2NvbnN0cnVjdG9yKGEsYil7dGhpcy5zdG9yYWdlPWE7dGhpcy54Yz1iO3RoaXMua2E9TnVtYmVyKHRoaXMuc3RvcmFnZS5nZXQoImx0cCIpKTt0aGlzLnN1bT1OdW1iZXIodGhpcy5zdG9yYWdlLmdldCgic3IiKSk7dGhpcy5vYT0hIXRoaXMuc3RvcmFnZS5nZXQoImlrcyIpfVhqYShhKXt0aGlzLnN0b3JhZ2Uuc2V0KCJsb290IixhKTtOdW1iZXIodGhpcy5zdG9yYWdlLmdldCgibGx0c2EiKSl8fHRoaXMuc3RvcmFnZS5zZXQoImxsdHNhIixhKX19Owp0TWk9ZnVuY3Rpb24oYSxiPURhdGUubm93KCkpe2lmKGEua2Epe2E9YS5rYTthLmthfHwoYS5rYT1iLGEuc3RvcmFnZS5zZXQoImx0cCIsYS5rYSkpO3ZhciBjPU51bWJlcihhLnN0b3JhZ2UuZ2V0KCJsbHRzYSIpKTt2YXIgZD1OdW1iZXIoYS5zdG9yYWdlLmdldCgibG9vdCIpKTtpZihjPSFjfHwhZHx8YS5zdW08PTA/ITE6ZC1jPjg2NEU1KWQ9YS54YyxkLmthPSEwLF8uJGgoZC5vYSw4LCEwKTthLmthJiZEYXRlLm5vdygpLWEua2E+ODY0RTUmJiFjJiYoYS5zdW09MCxhLnN0b3JhZ2Uuc2V0KCJzciIsYS5zdW0pLGEub2E9ITAsYS5zdG9yYWdlLnNldCgiaWtzIixOdW1iZXIoYS5vYSkpKTtiPWEub2E/YS5zdW08LTE/MzphLnN1bT4xPzI6Yi1OdW1iZXIoYS5zdG9yYWdlLmdldCgibHN0b3QiKSk8NjA0OEU1PzE6Yi1OdW1iZXIoYS5zdG9yYWdlLmdldCgibG9vdCIpKTw2MDQ4RTU/Njo1OjB9ZWxzZSBiPTA7cmV0dXJuIGJ9OwpfLnVNaT1jbGFzc3tjb25zdHJ1Y3RvcihhLGIpe3RoaXMuQWE9ITE7dGhpcy5rYT1hP25ldyBzTWkoYSxiKTpudWxsO3RoaXMub2E9MH1hc3luYyBWTWEoYSl7dmFyIGI9dGhpcy5vYTtpZih0aGlzLm9hPT09M3x8dGhpcy5vYT09PTYpYj0wLHRoaXMua2EmJnFNaSh0aGlzLmthKTthPjUwMCYmKHRoaXMuQWE9ITApO3RoaXMua2EmJnJNaSh0aGlzLmthLCEwLGEsYil9YXN5bmMgVU1hKGEsYil7dmFyIGM9ITA7YS5rYSgpJiYoYz0hMSk7YT10aGlzLm9hO2lmKHRoaXMub2E9PT0yJiYhY3x8dGhpcy5vYT09PTMmJmN8fGI+NTAwJiZ0aGlzLm9hPT09NilhPTAsdGhpcy5rYSYmcU1pKHRoaXMua2EpO2I+NTAwJiYodGhpcy5BYT0hMCk7dGhpcy5rYSYmck1pKHRoaXMua2EsYyxiLGEpfUlvYSgpe3JldHVybiB0aGlzLkFhfWFkYSgpe3JldHVybiBQcm9taXNlLnJlc29sdmUoXy5uWCh0TWkodGhpcykpKX13YSgpe3JldHVybiBQcm9taXNlLnJlc29sdmUoXy5uWCh0TWkodGhpcykpKX1YamEoYSl7dGhpcy5vYT0KdE1pKHRoaXMsYSk7dGhpcy5rYSYmdGhpcy5rYS5YamEoYSk7cmV0dXJuIFByb21pc2UucmVzb2x2ZSgpfX07Xy52TWk9Y2xhc3N7YXN5bmMgU3FiKCl7dmFyIGE9KDAsXy5NZikoKSxiPWEoKTthPWEoMSk7dHJ5e2xldCBjPV8uaGMoKS5rYSxkPWEoYXdhaXQgYihfLiRmKF8uQzJhLGMpKSk7cmV0dXJuIGQhPW51bGwmJmQuaXNBdmFpbGFibGUoKSYmZC5ONSgpP2QuVmNhKCkudGhlbihSTGksU0xpKTpQcm9taXNlLnJlamVjdChuZXcgXy5vWCgxLCJTaWxrIEFQSSBub3QgYXZhaWxhYmxlLiIpKX1maW5hbGx5e2IoKX19fTsKdmFyIHdNaT1mdW5jdGlvbihhKXtzd2l0Y2goYSl7Y2FzZSAiZ3JhbnRlZCI6cmV0dXJuIDE7Y2FzZSAiZGVuaWVkIjpyZXR1cm4gMjtjYXNlICJwcm9tcHQiOnJldHVybiAzO2RlZmF1bHQ6cmV0dXJuIDB9fSx4TWk9Y2xhc3N7YXN5bmMgU3FiKCl7dmFyIGE9KDAsXy5NZikoKSxiPWEoKTthPWEoMSk7dHJ5e2xldCBkLGU7aWYoISgoZD1uYXZpZ2F0b3IpPT1udWxsPzA6KGU9ZC5wZXJtaXNzaW9ucyk9PW51bGw/MDplLnF1ZXJ5KSl0aHJvdyBuZXcgXy5vWCgxLCJIVE1MNSBwZXJtaXNzaW9ucyBBUEkgbWlzc2luZyIpO3RyeXtsZXQgZj1hKGF3YWl0IGIobmF2aWdhdG9yLnBlcm1pc3Npb25zLnF1ZXJ5KHtuYW1lOiJnZW9sb2NhdGlvbiJ9KSkpO2lmKCFmKXRocm93IG5ldyBfLm9YKDIsIkhUTUw1IGdlb2xvY2F0aW9uIHBlcm1pc3Npb25zIEFQSSByZXR1cm5lZCBudWxsIG9yIHVuZGVmaW5lZC4iKTt2YXIgYz1uZXcgXy5pTGk7cmV0dXJuIF8uWmgoYyw0LHdNaShmLnN0YXRlKSl9Y2F0Y2goZil7dGhyb3cgYSgpLApmIGluc3RhbmNlb2YgVHlwZUVycm9yP25ldyBfLm9YKDEsIkhUTUw1IGdlb2xvY2F0aW9uIHBlcm1pc3Npb25zIEFQSSBtaXNzaW5nIik6ZiBpbnN0YW5jZW9mIF8ub1g/ZjpuZXcgXy5vWCg0LGBUaGUgSFRNTDUgZ2VvbG9jYXRpb24gcGVybWlzc2lvbnMgQVBJIHJldHVybmVkIGFuIHVua25vd24gZXJyb3I6ICR7Zn1gKTt9fWZpbmFsbHl7YigpfX19O18uWm4oXy5sTWksY2xhc3N7Y3JlYXRlKCl7cmV0dXJuIG5ldyB4TWl9fSk7Cn1jYXRjaChlKXtfLl9EdW1wRXhjZXB0aW9uKGUpfQp0cnl7Cl8uakxpPWNsYXNzIGV4dGVuZHMgXy5se2NvbnN0cnVjdG9yKGEpe3N1cGVyKGEpfUVhKCl7cmV0dXJuIF8uRmUodGhpcywyKX13YSgpe3JldHVybiBfLkpqKHRoaXMsMil9QmEoKXtyZXR1cm4gXy5Iayh0aGlzLDMpfW9hKCl7cmV0dXJuIF8uZGkodGhpcywzKX1JYSgpe3JldHVybiBfLkZlKHRoaXMsNCl9QWEoKXtyZXR1cm4gXy5Kaih0aGlzLDQpfX07Xy5rTGk9Y2xhc3MgZXh0ZW5kcyBfLmx7Y29uc3RydWN0b3IoYSl7c3VwZXIoYSl9Z2V0T3B0aW9ucygpe3JldHVybiBfLnEodGhpcyxfLmpMaSwyKX1zZXRPcHRpb25zKGEpe3JldHVybiBfLlNiKHRoaXMsXy5qTGksMixhKX19O18ua0xpLnByb3RvdHlwZS5vYT1fLiRiKFswLF8uRyxbMCwxLF8uaWwsXy5ELF8uaWxdXSk7Cn1jYXRjaChlKXtfLl9EdW1wRXhjZXB0aW9uKGUpfQp0cnl7CnZhciB5TWksQU1pLHpNaSxETWksQ01pLEdNaSxCTWksRU1pO3lNaT1mdW5jdGlvbihhKXtzd2l0Y2goYSl7Y2FzZSAicGVybWlzc2lvbl9kZW5pZWQiOnJldHVybiAxO2Nhc2UgImZlYXR1cmVfbm90X2VuYWJsZWQiOnJldHVybiAxRTM7Y2FzZSAiaW5jb2duaXRvX2xvY2F0aW9uX3VuYXZhaWxhYmxlIjpyZXR1cm4gMTAwMTtjYXNlICJsb2NhdGlvbl90aW1lb3V0IjpjYXNlIDI6Y2FzZSAxMTpyZXR1cm4gMztkZWZhdWx0OnJldHVybiAyfX07CkFNaT1mdW5jdGlvbihhKXtpZighYSlyZXR1cm4gUHJvbWlzZS5yZWplY3Qoek1pKTt2YXIgYj1fLlZsYShfLkpqKGEsMSkpLGM9Xy50aihhLDIpLGQ9Xy50aihhLDMpLGU9Xy50aihhLDQpO2lmKCEoYiYmYyYmZCYmZSkpcmV0dXJuIFByb21pc2UucmVqZWN0KG5ldyBfLnBYKDIsIlNpbGsgQVBJIHJldHVybmVkIGEgR2VvbG9jYXRpb24gcG9zaXRpb24gd2l0aCBtaXNzaW5nIGZpZWxkcy4iKSk7aWYodHlwZW9mIGIhPT0ibnVtYmVyIilyZXR1cm4gUHJvbWlzZS5yZWplY3QobmV3IF8ucFgoMiwiU2lsayBBUEkgcmV0dXJuZWQgYSBHZW9sb2NhdGlvbiBwb3NpdGlvbiB3aXRoIGEgdGltZXN0YW1wIHRoYXQgaXMgbm90IGEgbnVtYmVyLiIpKTt2YXIgZixnLGgsaztiPXt0aW1lc3RhbXA6Yixjb29yZHM6e2xhdGl0dWRlOmMsbG9uZ2l0dWRlOmQsYWNjdXJhY3k6ZSxhbHRpdHVkZTooZj1fLnRqKGEsNSkpIT1udWxsP2Y6bnVsbCxhbHRpdHVkZUFjY3VyYWN5OihnPV8udGooYSw2KSkhPQpudWxsP2c6bnVsbCxoZWFkaW5nOihoPV8udGooYSw3KSkhPW51bGw/aDpudWxsLHNwZWVkOihrPV8udGooYSw4KSkhPW51bGw/azpudWxsfX07Zj1fLmVpKGEsMTApO2E9Xy5laShhLDExKTtyZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHtnZW9sb2NhdGlvblBvc2l0aW9uOmIsbjNiOmYsS0ljOmF9KX07Xy5GTWk9ZnVuY3Rpb24oKXtyZXR1cm4gbmV3IEJNaShuZXcgQ01pLG5ldyBCTWkobmV3IERNaSxuZXcgRU1pKSl9O3pNaT1uZXcgXy5wWCgyLCJTaWxrIEFQSSByZXR1cm5lZCBudWxsIG9yIHVuZGVmaW5lZC4iKTtETWk9Y2xhc3N7YXN5bmMgTE8oYSl7dmFyIGI9KDAsXy5NZikoKSxjPWIoKTtiPWIoMSk7dHJ5e2xldCBkPWIoYXdhaXQgYyhhLkxPKCkpKTtpZighZCl0aHJvdyB6TWk7cmV0dXJue2dlb2xvY2F0aW9uUG9zaXRpb246ZH19ZmluYWxseXtjKCl9fUJYYihhKXtyZXR1cm4gYS5pc0F2YWlsYWJsZSgpfX07CkNNaT1jbGFzc3tMTyhhLGIsYyl7cmV0dXJuIGEuT2NhKGIsYykudGhlbihBTWkpfUJYYihhKXtyZXR1cm4gYS5pc0F2YWlsYWJsZSgpJiZhLk01KCl9fTtHTWk9YXN5bmMgZnVuY3Rpb24oYSxiLGMsZCxlKXt2YXIgZj0oMCxfLk1mKSgpLGc9ZigpO2Y9ZigxKTt0cnl7dHJ5e3JldHVybiBmKGF3YWl0IGcoYS5vYS5MTyhiLGMsZSkpKX1jYXRjaChoKXtmKCk7bGV0IGs9aCBpbnN0YW5jZW9mIF8uWGU/bmV3IF8ucFgoeU1pKGguSUFhKSxoLm1lc3NhZ2UpOm5ldyBfLnBYKDIsYFNpbGsgQVBJIHJldHVybmVkIGFuIHVua25vd24gZXJyb3I6ICR7aH1gKTtyZXR1cm4gay5jb2RlPT09MUUzP2Eua2EuZ2V0Q3VycmVudFBvc2l0aW9uKGMsZCk6UHJvbWlzZS5yZWplY3Qoayl9fWZpbmFsbHl7ZygpfX07CkJNaT1jbGFzc3tjb25zdHJ1Y3RvcihhLGIpe3RoaXMub2E9YTt0aGlzLmthPWJ9YXN5bmMgZ2V0Q3VycmVudFBvc2l0aW9uKGEsYixjKXt2YXIgZD0oMCxfLk1mKSgpLGU9ZCgpO2Q9ZCgxKTt0cnl7aWYoYyl7dmFyIGY9bmV3IF8uakxpO3ZhciBnPV8udGgoZiwyLGMuckphKTt2YXIgaD1fLnRoKGcsNCxjLnRpbWVvdXRNaWxsaXMpO3ZhciBrPV8uJGgoaCwzLCEhYy5lbmFibGVIaWdoQWNjdXJhY3kpfWVsc2Ugaz12b2lkIDA7dmFyIG09aztsZXQgbj1fLmhjKCkua2EscD1kKGF3YWl0IGUoXy4kZihfLkMyYSxuKSkpO3JldHVybiBwJiZ0aGlzLm9hLkJYYihwKT9HTWkodGhpcyxwLGEsYixtKTp0aGlzLmthLmdldEN1cnJlbnRQb3NpdGlvbihhLGIpfWZpbmFsbHl7ZSgpfX19O0VNaT1jbGFzc3tnZXRDdXJyZW50UG9zaXRpb24oKXtyZXR1cm4gUHJvbWlzZS5yZWplY3QobmV3IF8ucFgoMUUzLCJTaWxrIEFQSSBub3QgYXZhaWxhYmxlLiIpKX19Owp9Y2F0Y2goZSl7Xy5fRHVtcEV4Y2VwdGlvbihlKX0KdHJ5ewpfLmJMaT1fLmtjKCJwakRURmIiLFtfLlBxXSk7Cn1jYXRjaChlKXtfLl9EdW1wRXhjZXB0aW9uKGUpfQp0cnl7CnZhciBidms9ZnVuY3Rpb24oYSl7c3dpdGNoKGEpe2Nhc2UgMDpyZXR1cm4gMTtjYXNlIDE6cmV0dXJuIDM7Y2FzZSAyOnJldHVybiA0O2Nhc2UgMzpyZXR1cm4gNTtjYXNlIDU6cmV0dXJuIDY7Y2FzZSA2OnJldHVybiA3O2Nhc2UgNzpyZXR1cm4gODtjYXNlIDg6cmV0dXJuIDk7Y2FzZSA5OnJldHVybiAxMDtjYXNlIDEwMDpyZXR1cm4gMTAwO2Nhc2UgMTAxOnJldHVybiAxMDE7ZGVmYXVsdDpyZXR1cm4gMH19LGN2az1mdW5jdGlvbihhKXthLmthJiZnb29nbGUuY2FmdCYmZ29vZ2xlLmNhZnQoKCk9PnsoMCxfLm1mKSgoKT0+e2EuZmx1c2goKX0pfSl9LGR2az1hc3luYyBmdW5jdGlvbihhKXt2YXIgYj0oMCxfLk1mKSgpLGM9YigpO2I9YigxKTt0cnl7bGV0IGQ9Xy5oYygpLmthLGU9Yihhd2FpdCBjKF8uJGYoXy5iTGksZCkpKSxmPWIoYXdhaXQgYyhfLiRmKF8uWnEsZCkpKSxnPV8uQShhLDc2KT9iKGF3YWl0IGMoXy4kZihfLks2YSxkKSkpOnZvaWQgMDtyZXR1cm57YWVhOmUsV2I6ZiwKWHM6Z319ZmluYWxseXtjKCl9fSxsdms9ZnVuY3Rpb24oYSxiKXt2YXIgYz1fLkxqKGEsNzIpO2lmKF8uQShhLDQ0KXx8IWMpYz12b2lkIDA7ZWxzZXt2YXIgZD1uZXcgXy53NmEoMTY1NSk7Yz1uZXcgZXZrKGQsYyl9Yz1uZXcgXy5oTWkoYi5pY2IsYyk7ZD1fLk9qKGEsNjIpO3ZhciBlPShuZXcgZnZrKS5jcmVhdGUoKTtpZihlKXt2YXIgZj1fLk5MaShkKTtlPW5ldyBfLmtNaShlLGMpO2Q9ZiYmZCE9PTI/bmV3IF8udU1pKGYsYyk6dm9pZCAwO2Q9bmV3IF8ucE1pKGUsYyxkKX1lbHNlIGQ9bnVsbDtpZighZClyZXR1cm4gbnVsbDtmPShuZXcgZ3ZrKS5mcm9tKGEsYi5laSxkKTtpZighZilyZXR1cm4gbnVsbDtlPShuZXcgaHZrKS5mcm9tKGEpO2lmKCFlKXJldHVybiBudWxsO2I9Yi5laTtpZihfLkEoYSwyMSkpe3ZhciBnPWR2ayhhKTtiPW5ldyBpdmsoYixnKX1lbHNlIGI9bmV3IGp2aztyZXR1cm4gd2luZG93LmJ0b2E/bmV3IGt2ayhhLGYsYyxkLGUsYik6bnVsbH0sbnZrPWFzeW5jIGZ1bmN0aW9uKGEsCmIpe3ZhciBjO3JldHVybigoYz1sdmsoYSxiKSk9PW51bGw/dm9pZCAwOmMuc3RhcnQoKSl8fG5ldyBtdmsobnVsbCl9LG92az1mdW5jdGlvbihhKXtfLmhlKGRvY3VtZW50LCJ2aXNpYmlsaXR5Y2hhbmdlIiwoKT0+e2RvY3VtZW50LnZpc2liaWxpdHlTdGF0ZT09PSJ2aXNpYmxlIiYmYSgpfSl9LHB2az1jbGFzcyBleHRlbmRzIF8ubHtjb25zdHJ1Y3RvcihhKXtzdXBlcihhKX19O3B2ay5wcm90b3R5cGUuWGE9IkM0bWt1ZiI7CnZhciBxdms9e1BST01QVDowLFVlZDoxLFhlZDoyLFdlZDozLFRlZDo1LFllZDo2LFZlZDo3LFplZDo4LFNlZDo5LFRpZDoxMDAsUmVkOjEwMSwwOiJQUk9NUFQiLDE6Ik5PX1BST01QVF9CQUNLT0ZGIiwyOiJOT19QUk9NUFRfTk9fU1RPUkFHRSIsMzoiTk9fUFJPTVBUX05PVF9HUkFOVEVEIiw1OiJOT19QUk9NUFRfQUxSRUFEWV9PUEVOIiw2OiJOT19QUk9NUFRfU0FNRV9FVkVOVCIsNzoiTk9fUFJPTVBUX05PVF9ESVJFQ1RfTkFWSUdBVElPTiIsODoiTk9fUFJPTVBUX1RIUk9UVExFRCIsOToiTk9fUFJFX1BST01QVF9HUkFOVEVEIiwxMDA6IlBSRV9QUk9NUFQiLDEwMToiTk9fUFJFX1BST01QVF9ERU5JRUQifSxmdms9Y2xhc3N7Y3JlYXRlKCl7Zm9yKGxldCBhIG9mIF8uWW4oXy5sTWkpKXtsZXQgYj1hLmNyZWF0ZSgpO2lmKGIpcmV0dXJuIGJ9cmV0dXJuIG51bGx9fSxydms9Y2xhc3N7Y29uc3RydWN0b3IoYSl7dGhpcy5vYT1hO18uSm8oYSwiL2NsaWVudF9zdHJlYW16L2xvY2F0aW9uL2xvY2F0aW9uX3Byb21wdC9wcm9tcHRfZGVjaXNpb25zX2NvdW50IiwKXy5lYygiZGVjaXNpb24iKSxfLmVjKCJicm93c2VyIikpfWluY3JlbWVudChhLGIpe18uS28odGhpcy5vYSwiL2NsaWVudF9zdHJlYW16L2xvY2F0aW9uL2xvY2F0aW9uX3Byb21wdC9wcm9tcHRfZGVjaXNpb25zX2NvdW50IixhLGIpfWthKCl7cmV0dXJuIHRoaXMub2Eua2EoIi9jbGllbnRfc3RyZWFtei9sb2NhdGlvbi9sb2NhdGlvbl9wcm9tcHQvcHJvbXB0X2RlY2lzaW9uc19jb3VudCIpfX0sc3ZrPWNsYXNze2NvbnN0cnVjdG9yKGEpe3RoaXMub2E9YTtfLkpvKGEsIi9jbGllbnRfc3RyZWFtei9sb2NhdGlvbi9sb2NhdGlvbl9wcm9tcHQvcHJvbXB0X3Jlc3BvbnNlc19jb3VudCIsXy5lYygicmVzcG9uc2UiKSxfLmVjKCJicm93c2VyIikpfWluY3JlbWVudChhLGIpe18uS28odGhpcy5vYSwiL2NsaWVudF9zdHJlYW16L2xvY2F0aW9uL2xvY2F0aW9uX3Byb21wdC9wcm9tcHRfcmVzcG9uc2VzX2NvdW50IixhLGIpfWthKCl7cmV0dXJuIHRoaXMub2Eua2EoIi9jbGllbnRfc3RyZWFtei9sb2NhdGlvbi9sb2NhdGlvbl9wcm9tcHQvcHJvbXB0X3Jlc3BvbnNlc19jb3VudCIpfX07dmFyIGh2aztfLnR2az1uZXcgXy5hbztodms9Y2xhc3N7ZnJvbShhKXtmb3IobGV0IGIgb2YgXy5ZbihfLnR2aykpe2xldCBjPWIuZnJvbShhKTtpZihjKXJldHVybiBjfXJldHVybiBudWxsfX07dmFyIG12az1jbGFzc3tjb25zdHJ1Y3RvcihhKXt0aGlzLmVycm9yPWF9fTt2YXIgdnZrPWFzeW5jIGZ1bmN0aW9uKGEsW2IsY10pe3ZhciBkPSgwLF8uTWYpKCksZT1kKCk7ZD1kKDEpO3RyeXt2YXIgZj1hLnhjO2Yua2E9ITA7dmFyIGc9Xy5aaChmLm9hLDEsYnZrKGIpKTthOntsZXQgbTt0cnl7bT13aW5kb3cucGVyZm9ybWFuY2Uubm93KCl9Y2F0Y2gobil7dmFyIGg9dm9pZCAwO2JyZWFrIGF9aD1fLlFKYigobmV3IF8uS3IpLnNldFNlY29uZHMoTWF0aC5mbG9vcihtLzFFMykpLG0lMUUzKjFFNil9Xy5TYihnLF8uS3IsMTIsaCk7bGV0IGs7KGs9Zi5jb3VudGVycyk9PW51bGx8fGsuV3pjKGIpO2lmKGI9PT0wKXJldHVybiBhLnByb21wdChjKTtkKGF3YWl0IGUodXZrKGEpKSk7Y3ZrKGEueGMpO3JldHVybiBuZXcgbXZrKG51bGwpfWZpbmFsbHl7ZSgpfX0sdXZrPWFzeW5jIGZ1bmN0aW9uKGEpe3ZhciBiPSgwLF8uTWYpKCksYz1iKCk7Yj1iKDEpO3RyeXtsZXQgZT1iKGF3YWl0IGMoYS5rYS5hZGEoKSkpO2lmKF8uSkxpKGUpPT09M3x8Xy5KTGkoZSk9PT0KNil7Xy5DTGkoKTt2YXIgZD1hLnhjO2Qua2E9ITA7Xy4kaChkLm9hLDE2LCEwKX19ZmluYWxseXtjKCl9fSx3dms9YXN5bmMgZnVuY3Rpb24oYSxiKXt2YXIgYz0oMCxfLk1mKSgpLGQ9YygpO2M9YygxKTt0cnl7Yyhhd2FpdCBkKGEua2EuVk1hKCkpKTt2YXIgZT1iLmdlb2xvY2F0aW9uUG9zaXRpb24sZj1iLktJYztsZXQgaz1fLk9qKGEuY29uZmlnLDYyKXx8MDthLndhLndyaXRlKGUsayxmKTt2YXIgZz1iLm4zYjt2YXIgaD1nP2c9PT0yOmEua2EuSW9hKCk7YS5vYS5XTWEoITAsaCk7aCYmXy5nTWkoYS54YywhMCk7Yyhhd2FpdCBkKGEueGMuZmx1c2goKSkpO2gmJmMoYXdhaXQgZChhLkJhLnIwYigpKSk7cmV0dXJuIG5ldyBtdmsobnVsbCl9ZmluYWxseXtkKCl9fSx4dms9YXN5bmMgZnVuY3Rpb24oYSxiKXt2YXIgYz0oMCxfLk1mKSgpLGQ9YygpO2M9YygxKTt0cnl7bGV0IGY9Xy5ETGkoYik7Yyhhd2FpdCBkKGEua2EuVU1hKGYpKSk7aWYoXy5FTGkoZikpe3ZhciBlPWEueGM7CmUua2E9ITA7Xy4kaChlLm9hLDE2LCEwKX1sZXQgZz0hZi5rYSgpLGg9YS5rYS5Jb2EoKTthLm9hLldNYShnLGgpO2gmJl8uZ01pKGEueGMsZyk7Yyhhd2FpdCBkKGEueGMuZmx1c2goKSkpO2MoYXdhaXQgZChhLmthLndhKCkpKTtyZXR1cm4gbmV3IG12ayhuZXcgXy5wWChmLmNvZGUsZi5tZXNzYWdlKSl9ZmluYWxseXtkKCl9fSxrdms9Y2xhc3N7Y29uc3RydWN0b3IoYSxiLGMsZCxlLGYpe3RoaXMuY29uZmlnPWE7dGhpcy5vYT1iO3RoaXMueGM9Yzt0aGlzLmthPWQ7dGhpcy5BYT1lO3RoaXMuQmE9Zjt0aGlzLndhPW5ldyBfLmNNaSghMCl9YXN5bmMgc3RhcnQoKXt2YXIgYT0oMCxfLk1mKSgpLGI9YSgpO2E9YSgxKTt0cnl7aWYoIV8uTkxpKF8uT2oodGhpcy5jb25maWcsNjIpKSl7dmFyIGM9dGhpcy54YztjLmthPSEwO18uJGgoYy5vYSwyLCEwKX1sZXQgZD1hKGF3YWl0IGIodGhpcy5vYS5qUWEoKSkpO3JldHVybiB2dmsodGhpcyxkKX1maW5hbGx5e2IoKX19YXN5bmMgcHJvbXB0KGEpe3ZhciBiPQooMCxfLk1mKSgpLGM9YigpO2I9YigxKTt0cnl7Yihhd2FpdCBjKHRoaXMua2EuWGphKCkpKTtjdmsodGhpcy54Yyk7dHJ5e2xldCBkPWIoYXdhaXQgYygobmV3IF8uZE1pKHRoaXMuQWEpKS5nZXRDdXJyZW50UG9zaXRpb24oYSwzKSkpO3JldHVybiB3dmsodGhpcyxkKX1jYXRjaChkKXtyZXR1cm4gYigpLHh2ayh0aGlzLGQpfX1maW5hbGx5e2MoKX19fTt2YXIgZXZrPWNsYXNze2NvbnN0cnVjdG9yKGEsYil7dGhpcy5rYT1uZXcgXy5JUGEoYSk7dGhpcy53YT1uZXcgcnZrKHRoaXMua2EpO3RoaXMuQWE9bmV3IHN2ayh0aGlzLmthKTt0aGlzLm9hPWJ8fCJVTktOT1dOX0JST1dTRVIifVd6YyhhKXt0aGlzLndhLmluY3JlbWVudChxdmtbYV0sdGhpcy5vYSl9WHpjKGEpe3RoaXMuQWEuaW5jcmVtZW50KGE/IkFDQ0VQVEVEIjoiREVOSUVEIix0aGlzLm9hKX1mbHVzaCgpe3RoaXMua2Eub2EoKX19O3ZhciB5dms9Y2xhc3N7YXN5bmMgalFhKCl7cmV0dXJuWzAsMl19V01hKCl7fX07dmFyIGd2aztfLnp2az1uZXcgXy5hbztndms9Y2xhc3N7ZnJvbShhLGIsYyl7aWYoXy5PaihhLDExKT09PTIpcmV0dXJuIG5ldyB5dms7Zm9yKGxldCBkIG9mIF8uWW4oXy56dmspKXtsZXQgZT1kLmZyb20oYSxiLGMpO2lmKGUpcmV0dXJuIGV9cmV0dXJuIG51bGx9fTt2YXIganZrPWNsYXNze2FzeW5jIHIwYigpe319LGl2az1jbGFzc3tjb25zdHJ1Y3RvcihhLGIpe3RoaXMuZWk9YTt0aGlzLmthPWJ9YXN5bmMgcjBiKCl7dmFyIGE9KDAsXy5NZikoKSxiPWEoKTthPWEoMSk7dHJ5e2xldCBjPWEoYXdhaXQgYih0aGlzLmthKSksZD1jLmFlYS5rYShuZXcgTWFwKFtbInNlaSIsdGhpcy5laV0sWyJkbG5yIiwiMSJdXSkpO2lmKGMuWHMpdHJ5e2EoYXdhaXQgYihjLlhzLnRyYW5zaXRpb24oZC50b1N0cmluZygpKSkpO3JldHVybn1jYXRjaChlKXthKCksXy5WZShFcnJvcigiTXNgIitlKSl9Yy5XYi5uYXZpZ2F0ZVRvKGQsITEpfWZpbmFsbHl7YigpfX19O3ZhciBBdms9YXN5bmMgZnVuY3Rpb24oYSxiLGMpe3ZhciBkPSgwLF8uTWYpKCksZT1kKCk7ZD1kKDEpO3RyeXtsZXQgZj1hLmdldFJvb3QoKS5lbCgpO2QoYXdhaXQgZShudmsoYix7ZWk6YyxpY2I6Zn0pKSl9ZmluYWxseXtlKCl9fTtfLmpzKF8uYXZrLGNsYXNzIGV4dGVuZHMgXy5oc3tzdGF0aWMgUWEoKXtyZXR1cm57anNkYXRhOntFQ2M6cHZrfX19Y29uc3RydWN0b3IoYSl7c3VwZXIoKTt2YXIgYj1hLmpzZGF0YS5FQ2MsYz1nb29nbGUuZ2V0RUkodGhpcy5nZXRSb290KCkuZWwoKSk7QXZrKHRoaXMsYixjKTtfLkEoYiw2MSkmJm92ayhmdW5jdGlvbigpe252ayhiLHtlaTpjfSl9KX19KTsKdmFyIEJ2az1mdW5jdGlvbihhKXtyZXR1cm4gbmV3IFByb21pc2UoKGIsYyk9PntuYXZpZ2F0b3IuZ2VvbG9jYXRpb24uZ2V0Q3VycmVudFBvc2l0aW9uKGIsYyxhKX0pfSxDdms9Xy5UYShmdW5jdGlvbihhKXtyZXR1cm4oMCxfLnhDYSkoYSkmJigwLF8uR2JhKShhLmNvZGUpJiYoMCxfLlVhKShhLm1lc3NhZ2UpPyEwOiExfSksRHZrPWNsYXNze2FzeW5jIGdldEN1cnJlbnRQb3NpdGlvbihhLGIsYyl7dmFyIGQ9KDAsXy5NZikoKTthPWQoKTtkPWQoMSk7dHJ5e2xldCBlPWM/e3RpbWVvdXQ6Yy50aW1lb3V0TWlsbGlzLG1heGltdW1BZ2U6Yy5ySmEsZW5hYmxlSGlnaEFjY3VyYWN5OiEhYy5lbmFibGVIaWdoQWNjdXJhY3l9Ont0aW1lb3V0OmIsbWF4aW11bUFnZToxNUUzfTt0cnl7bGV0IGY9ZChhd2FpdCBhKEJ2ayhlKSkpO2lmKCFmKXRocm93IG5ldyBfLnBYKDIsIlRoZSBIVE1MNSBnZW9sb2NhdGlvbiBBUEkgcmV0dXJuZWQgbnVsbCBvciB1bmRlZmluZWQuIik7cmV0dXJue2dlb2xvY2F0aW9uUG9zaXRpb246Zn19Y2F0Y2goZil7dGhyb3cgZCgpLApiPWYsYiBpbnN0YW5jZW9mIF8ucFg/YjpDdmsoYik/bmV3IF8ucFgoYi5jb2RlLGIubWVzc2FnZSk6bmV3IF8ucFgoMixgVGhlIEhUTUw1IGdlb2xvY2F0aW9uIEFQSSByZXR1cm5lZCBhbiB1bmtub3duIGVycm9yOiAke2J9YCk7fX1maW5hbGx5e2EoKX19fTt2YXIgRXZrPWNsYXNze2Zyb20oKXt2YXIgYSxiO3JldHVybigoYT1uYXZpZ2F0b3IpPT1udWxsPzA6KGI9YS5nZW9sb2NhdGlvbik9PW51bGw/MDpiLmdldEN1cnJlbnRQb3NpdGlvbik/bmV3IER2azpudWxsfX07Xy5aTGkmJl8uWm4oXy50dmssRXZrKTt2YXIgRnZrPWNsYXNze2Zyb20oKXtyZXR1cm4gXy5GTWkoKX19O18uJExpJiZfLlpuKF8udHZrLEZ2ayk7CnZhciBHdms9ZnVuY3Rpb24oYSl7cmV0dXJue3FnYTpOdW1iZXIoYS5nZXQoImJhY2tvZmYiKSksVXZiOk51bWJlcihhLmdldCgibGFzdC1yZWoiKSl9fSxIdms9ZnVuY3Rpb24oYSx7cWdhOmIsVXZiOmN9KXthLnNldCgiYmFja29mZiIsYikmJmEuc2V0KCJsYXN0LXJlaiIsYyl9LEl2az1jbGFzcyBleHRlbmRzIF8ubHtjb25zdHJ1Y3RvcihhKXtzdXBlcihhKX19LEp2az1jbGFzc3tjb25zdHJ1Y3RvcihhLGIpe3RoaXMuc3RvcmFnZT1hO3RoaXMua2E9Yn1hc3luYyBqUWEoKXtpZighdGhpcy5zdG9yYWdlKXJldHVyblsyXTt2YXIge3FnYTphLFV2YjpifT1HdmsodGhpcy5zdG9yYWdlKSxjPU51bWJlcihfLk1qKHRoaXMua2EsMikpO3JldHVybiBhJiZiJiZEYXRlLm5vdygpLWI8TWF0aC5taW4oYSxjKT9bMV06WzAsMl19V01hKGEsYil7aWYodGhpcy5zdG9yYWdlKWlmKGEpe3ZhciBjPXRoaXMuc3RvcmFnZTtjLnJlbW92ZSgiYmFja29mZiIpO2MucmVtb3ZlKCJsYXN0LXJlaiIpfWVsc2UgYiYmCih7cWdhOmF9PUd2ayh0aGlzLnN0b3JhZ2UpLGE/Yz1NYXRoLm1heChhLE1hdGgubWluKE51bWJlcihfLk5qKHRoaXMua2EsMykpKmEsTnVtYmVyKF8uTWoodGhpcy5rYSwyKSkpKTpjPU51bWJlcihfLk1qKHRoaXMua2EsMSkpLEh2ayh0aGlzLnN0b3JhZ2Use3FnYTpjLFV2YjpEYXRlLm5vdygpfSkpfX07dmFyIEt2az1jbGFzc3tjb25zdHJ1Y3RvcihhLGIsYyl7dGhpcy5zdG9yYWdlPWE7dGhpcy5laT1iO3RoaXMua2E9Y31hc3luYyBqUWEoKXt2YXIgYT0oMCxfLk1mKSgpLGI9YSgpO2E9YSgxKTt0cnl7aWYoIV8udG1hKCkpcmV0dXJuWzddO2lmKF8uZWEubHB0KXJldHVybls1XTtpZighdGhpcy5zdG9yYWdlKXJldHVyblsyXTt7bGV0IGY9dGhpcy5zdG9yYWdlLmdldCgibGFzdC1laSIpO3ZhciBjPWYgaW5zdGFuY2VvZiBBcnJheT9mOltdO2lmKGMuaW5kZXhPZih0aGlzLmVpKSE9PS0xKXZhciBkPSExO2Vsc2V7Zm9yKGMucHVzaCh0aGlzLmVpKTtjLmxlbmd0aD4zOyljLnNoaWZ0KCk7dGhpcy5zdG9yYWdlLnNldCgibGFzdC1laSIsYyk7ZD0hMH19aWYoIWQpcmV0dXJuWzZdO2xldCBlPWEoYXdhaXQgYih0aGlzLmthLmpRYSgpKSk7W2RdPWU7ZD09PTAmJihfLmVhLmxwdD0hMCk7cmV0dXJuIGV9ZmluYWxseXtiKCl9fVdNYShhLGIpe3RoaXMua2EuV01hKGEsYil9fTtfLlpuKF8uenZrLGNsYXNze2Zyb20oYSxiKXtpZihfLk9qKGEsMTEpIT09NClyZXR1cm4gbnVsbDt2YXIgYz1fLk5MaShfLk9qKGEsNjIpKTtpZighYylyZXR1cm4gbnVsbDthPV8ucShhLEl2ayw0Nyk7cmV0dXJuIG5ldyBLdmsoYyxiLG5ldyBKdmsoYyxhKSl9fSk7CnZhciBMdms9Y2xhc3N7Y29uc3RydWN0b3IoYSl7dGhpcy5rYT1hfWFzeW5jIGpRYSgpe3ZhciBhPSgwLF8uTWYpKCksYj1hKCk7YT1hKDEpO3RyeXtyZXR1cm4gXy5KTGkoYShhd2FpdCBiKHRoaXMua2EuYWRhKCkpKSk9PT0yP1swLDFdOlszXX1maW5hbGx5e2IoKX19V01hKCl7fX07Xy5abihfLnp2ayxjbGFzc3tmcm9tKGEsYixjKXtyZXR1cm4gXy5PaihhLDExKT09PTMmJmM/bmV3IEx2ayhjKTpudWxsfX0pOwp9Y2F0Y2goZSl7Xy5fRHVtcEV4Y2VwdGlvbihlKX0KdHJ5ewpfLnUoIktIb3VyZCIpOwoKCgpfLnYoKTsKfWNhdGNoKGUpe18uX0R1bXBFeGNlcHRpb24oZSl9CnRyeXsKXy5GSGs9Xy5rYygib1FmYkRkIixbXSk7Cn1jYXRjaChlKXtfLl9EdW1wRXhjZXB0aW9uKGUpfQp0cnl7CnZhciBaaGMsWGhjLFloYyxiaWMsZGljLGhpYyxnaWMsY2ljLGFpYywkaGMsV2hjO1poYz1mdW5jdGlvbihhKXtyZXR1cm4gV2hjP1hoYyhhKTpZaGMoYSkudGhlbihiPT5iLnJlc3BvbnNlKX07WGhjPWZ1bmN0aW9uKGEpe2EuaGVhZGVyc3x8KGEuaGVhZGVycz1uZXcgTWFwKTthLmhlYWRlcnMuc2V0KCJ4LXNnLWUiLCIxIik7cmV0dXJuIFloYyhhKS50aGVuKGI9Pnt2YXIgYz1iLm9NYyxkPTI7Yz09PSJzIj9kPTA6Yz09PSJhIiYmKGQ9MSk7cmV0dXJuIF8uTzdiKGIucmVzcG9uc2UsZCxhLGU9PlByb21pc2UucmVzb2x2ZShZaGMoZSkudGhlbihmPT5mLnJlc3BvbnNlKSksYi5ldmVudElkKX0pfTsKWWhjPWZ1bmN0aW9uKHttZXRob2Q6YSx1cmw6YixVemI6Yyx5ZzpkLGp0OmUsaGVhZGVyczpmfSl7dmFyIGc9Xy5sZigpLGg9JGhjPyRoYygpOm5ldyBfLnByO2gubGlzdGVuKCJjb21wbGV0ZSIsbT0+e209bS50YXJnZXQ7dmFyIG49ITE7bS5nZXRSZXNwb25zZUhlYWRlcigiWC1Tb3JyeS1SZWRpcmVjdCIpJiYobj0hMCk7aWYoXy5zcihtKSl7Xy5RbyhkLCJzdCIpO2xldCByPW0uS3coKTtkLlpzKCJicyIsci5sZW5ndGgpO3J8fGcucmVqZWN0KG5ldyBfLlczYigiQXN5bmMgcmVzcG9uc2UgZXJyb3IiLGUse3M6bS5nZXRTdGF0dXMoKSxyLGlzcjpuLHJ1cmw6YWljKG0pfSkpO3ZhciBwOyhuPW0uZ2V0UmVzcG9uc2VIZWFkZXIoIngtZ29vZ2xlLWdmZS1iYWNrZW5kLXJlcXVlc3QtaW5mbyIpKSYmKG49L2VpZD0oW14sXSspLy5leGVjKG4pKSYmKHA9blsxXSk7Zy5yZXNvbHZlKHtyZXNwb25zZTpyLG9NYzptLmdldFJlc3BvbnNlSGVhZGVyKCJ4LXNnLWNzIil8fCJ1IixldmVudElkOnB9KX1lbHNlIF8uUW8oZCwKImZ0IiksZC5sb2coKSwocD1tLmdldFN0YXR1cygpKT8ocD17czpwLGlzcjpuLHJ1cmw6YWljKG0pfSxtLnpSPT09NyYmKHAuYWI9MSksZy5yZWplY3QobmV3IF8uVzNiKCJBc3luYyByZXF1ZXN0IGVycm9yIixlLHApKSk6Zy5yZWplY3QobmV3IF8uVzNiKCJBc3luYyBuZXR3b3JrIGVycm9yIixlKSl9KTt2YXIgaz1nLnByb21pc2UuSHgobT0+e2lmKG0gaW5zdGFuY2VvZiBfLldlKWguYWJvcnQoKTtlbHNlIHRocm93IG07fSk7Xy5RbyhkLCJmciIpO2guc2V0V2l0aENyZWRlbnRpYWxzKF8uRjRiKTtmPWY/T2JqZWN0LmZyb21FbnRyaWVzKGYpOnZvaWQgMDtoLnNlbmQoYixhLGMsZik7cmV0dXJuIGt9O2JpYz1mdW5jdGlvbihhKXtyZXR1cm4hYXx8YSBpbnN0YW5jZW9mIE1hcD9uZXcgTWFwKGF8fFtdKTpuZXcgTWFwKE9iamVjdC5lbnRyaWVzKGEpKX07Cl8uV3k9ZnVuY3Rpb24oYSxiLGMsZCxlLGYsZz17fSxoLGs9Imluc2VydCIsbT0hMSxuPSExKXt2YXIgcD1jaWMoYSk7cC5zdGFydCgpO2I9YmljKGIpO2c9YmljKGcpO3JldHVybiBkaWMoYSxiLGcscCxlLGMsaCxkLGYsayxtLG4pfTtkaWM9ZnVuY3Rpb24oYSxiLGMsZCxlLGYsZyxoLGssbSxuPSExLHA9ITEpe2Iuc2V0KCJfZm10IixuPyJqc29uIjoianNwYiIpO2UhPW51bGwmJmMuc2V0KCJxIixlKTtjPV8uUDRiKGEsYixjLCJHRVQiLCIiLGYsZyxoLGssbSk7ZT0iIjtmP2U9ZjpnJiYoZT1nKTtyZXR1cm4gXy5laWMoe21ldGhvZDoiR0VUIix1cmw6Yyx5ZzpkLGp0OmEsaGVhZGVyczpfLk00YigpLFd3OmJ9LHAsZSl9OwpfLmVpYz1mdW5jdGlvbihhLGI9ITEsYz0iIil7dmFyIGQsZT0oZD1hLld3KT09bnVsbD92b2lkIDA6ZC5nZXQoIl9mbXQiKTtpZihlIT09Impzb24iJiZlIT09ImpzcGIiKXRocm93IEVycm9yKCJVaCIpO2EueWd8fChhLnlnPWNpYyhhLmp0KSk7cmV0dXJuIFpoYyhhKS50aGVuKGY9PntpZihiKXtsZXQgaDsoaD1hLnlnKT09bnVsbHx8aC5sb2coKX1mLnN0YXJ0c1dpdGgoIildfSdcbiIpJiYoZj1mLnN1YnN0cig1KSk7dHJ5e3ZhciBnPUpTT04ucGFyc2UoZil9Y2F0Y2goaCl7cmV0dXJuIF8uSGgoaCl9cmV0dXJuIF8ucGcoZykmJihnPV8ucGphKGcpLGY9Zy5fX2Vycl9fLGYhPT12b2lkIDApP18uSGgoZik6ZSE9PSJqc3BiInx8ZyBpbnN0YW5jZW9mIEFycmF5P18uRGcoZyk6Xy5IaCgpfSkuY2F0Y2goZj0+ZiBpbnN0YW5jZW9mIF8uVzNiJiZmaWM/Z2ljKGYsYixhLGMpOl8uSGgoZikpfTsKaGljPWZ1bmN0aW9uKGEsYil7dmFyIGM9Yi51cmxQYXJhbXM/bmV3IE1hcChiLnVybFBhcmFtcyk6bmV3IE1hcDt0cnl7bGV0IGQ9bmV3IF8uSGUoYi51cmwpO18uVG4oZCwiZ29vZ2xlX2FidXNlIixhKTtjLnNldCgiZ29vZ2xlX2FidXNlIixhKTtiLnVybD1kLnRvU3RyaW5nKCk7Yi51cmxQYXJhbXM9Y31jYXRjaChkKXt9cmV0dXJuIGJ9O2dpYz1mdW5jdGlvbihhLGIsYyxkKXtpZihfLiQzYihhKSlyZXR1cm4gYT1fLmE0YihhKSxjPWhpYyhhLGMpLF8uZWljKGMsYixkKTt2YXIgZT1fLmI0YihhKTtpZihlKXtfLmQ0YihlLGQpO2lmKCFfLlgzYilyZXR1cm4gXy5yZygoMCxfLmY0YikoZSkudGhlbihmPT57Xy5lNGIoZSxkKTtjPWhpYyhmLGMpO3JldHVybiBfLmVpYyhjLGIsZCl9KSxfLlozYik7aWYoXy5nNGIpcmV0dXJuIF8uWDNiLnByb21pc2UudGhlbigoKT0+Xy5laWMoYyxiLGQpKX1yZXR1cm4gXy5IaChhKX07CmNpYz1mdW5jdGlvbihhKXt2YXIgYj1uZXcgXy5SbygiYXN5bmMiKTtiLkdjKCJhc3R5cCIsYSk7cmV0dXJuIGJ9O2FpYz1mdW5jdGlvbihhKXt0cnl7cmV0dXJuIGEuU2k/YS5TaS5yZXNwb25zZVVSTDoiIn1jYXRjaChiKXtyZXR1cm4iIn19OyRoYz1udWxsO1doYz1fLmo4Yjt2YXIgZmljPV8uZzhiOwp9Y2F0Y2goZSl7Xy5fRHVtcEV4Y2VwdGlvbihlKX0KdHJ5ewp2YXIgbl9iLGtfYixsX2IsbV9iOwpfLnN4PWZ1bmN0aW9uKGEsYil7dmFyIGM9Ynx8e307Yj1jLmRvY3VtZW50fHxkb2N1bWVudDt2YXIgZD1fLnpjKGEpLnRvU3RyaW5nKCksZT0obmV3IF8ucEhhKGIpKS5jcmVhdGVFbGVtZW50KCJTQ1JJUFQiKSxmPXtzNmI6ZSxoWTp2b2lkIDB9LGc9bmV3IF8uWWUoa19iLGYpLGg9bnVsbCxrPWMudGltZW91dCE9bnVsbD9jLnRpbWVvdXQ6NUUzO2s+MCYmKGg9d2luZG93LnNldFRpbWVvdXQoZnVuY3Rpb24oKXtsX2IoZSwhMCk7Zy5rYShuZXcgbV9iKDEsIlRpbWVvdXQgcmVhY2hlZCBmb3IgbG9hZGluZyBzY3JpcHQgIitkKSl9LGspLGYuaFk9aCk7ZS5vbmxvYWQ9ZS5vbnJlYWR5c3RhdGVjaGFuZ2U9ZnVuY3Rpb24oKXtlLnJlYWR5U3RhdGUmJmUucmVhZHlTdGF0ZSE9ImxvYWRlZCImJmUucmVhZHlTdGF0ZSE9ImNvbXBsZXRlInx8KGxfYihlLGMuaW9jfHwhMSxoKSxnLmNhbGxiYWNrKG51bGwpKX07ZS5vbmVycm9yPWZ1bmN0aW9uKCl7bF9iKGUsITAsaCk7Zy5rYShuZXcgbV9iKDAsCiJFcnJvciB3aGlsZSBsb2FkaW5nIHNjcmlwdCAiK2QpKX07Zj1jLmF0dHJpYnV0ZXN8fHt9O18ud2phKGYse3R5cGU6InRleHQvamF2YXNjcmlwdCIsY2hhcnNldDoiVVRGLTgifSk7Xy52SGEoZSxmKTtfLmRkKGUsYSk7bl9iKGIpLmFwcGVuZENoaWxkKGUpO3JldHVybiBnfTtuX2I9ZnVuY3Rpb24oYSl7dmFyIGI9Xy5LbSgiSEVBRCIsYSk7cmV0dXJuIGImJmIubGVuZ3RoIT09MD9iWzBdOmEuZG9jdW1lbnRFbGVtZW50fTtrX2I9ZnVuY3Rpb24oKXtpZih0aGlzJiZ0aGlzLnM2Yil7bGV0IGE9dGhpcy5zNmI7YSYmYS50YWdOYW1lPT0iU0NSSVBUIiYmbF9iKGEsITAsdGhpcy5oWSl9fTtsX2I9ZnVuY3Rpb24oYSxiLGMpe2MhPW51bGwmJl8uZWEuY2xlYXJUaW1lb3V0KGMpO2Eub25sb2FkPSgpPT57fTthLm9uZXJyb3I9KCk9Pnt9O2Eub25yZWFkeXN0YXRlY2hhbmdlPSgpPT57fTtiJiZ3aW5kb3cuc2V0VGltZW91dChmdW5jdGlvbigpe18uWW0oYSl9LDApfTsKbV9iPWZ1bmN0aW9uKGEsYil7dmFyIGM9IkpzbG9hZGVyIGVycm9yIChjb2RlICMiK2ErIikiO2ImJihjKz0iOiAiK2IpO18uYmEuY2FsbCh0aGlzLGMpO3RoaXMuY29kZT1hfTtfLlVpKG1fYixfLmJhKTsKfWNhdGNoKGUpe18uX0R1bXBFeGNlcHRpb24oZSl9CnRyeXsKXy51KCJvUWZiRGQiKTsKdmFyIHhaPWZ1bmN0aW9uKGEpe2dvb2dsZS5sb2coInNycGJnZCIsU3RyaW5nKGEpKX0sR0hrPWZ1bmN0aW9uKCl7eFooMTEpfSxISGs9ZnVuY3Rpb24oKXt4WigzKX0sSkhrPWZ1bmN0aW9uKGEpe0lIayYmKGE/YS5sZW5ndGg+MTg3NT94WigxMCk6eFooYSk6eFooOSkpfSxLSGs9ZnVuY3Rpb24oYSl7dHJ5e2EuaW52b2tlKEpIayl9Y2F0Y2goYil7eFooOCl9fSxNSGs9ZnVuY3Rpb24oYSxiLGMpe3ZhciBkPWEuZ2V0QXR0cmlidXRlKGIpO2lmKCFkfHwhZC5pbmNsdWRlcygiYWNsaz8iKSlyZXR1cm4hMTtjPWMuaW52b2tlKCk7Yz10eXBlb2YgYyE9PSJzdHJpbmcifHxjLmxlbmd0aD4oTEhrPzE1MDA6NTAwKT92b2lkIDA6YztpZighYylyZXR1cm4hMDtkPV8uRmMoZCtgJmJnPSR7Y31gKTthLnNldEF0dHJpYnV0ZShiLF8uQmMoZCkpO3JldHVybiEwfSxOSGs9ZnVuY3Rpb24oYSxiKXtpZihiPV8uZW4oYi50YXJnZXQsIkEiKSl7dmFyIGM9ITE7aWYoYi5oYXNBdHRyaWJ1dGUoImRhdGEtYWwiKSljPQohMDtlbHNle2xldCBkPWI7Zm9yKDtkOyl7aWYoZC5pZD09PSJ0YWRzInx8ZC5pZD09PSJ0YWRzYiIpe2M9ITA7YnJlYWt9ZD1fLkxnKGQpfX1jJiYoTUhrKGIsImhyZWYiLGEpfHxNSGsoYiwiZGF0YS1ydyIsYSkpfX0sU0hrPWZ1bmN0aW9uKCl7dmFyIGE9bnVsbDt0cnl7YT1uZXcgd2luZG93LmJvdGd1YXJkLmJnKE9Iayl9Y2F0Y2goYil7eFooNik7cmV0dXJufWEuaW52b2tlP1BIayYmKFFIayYmXy5oZSh3aW5kb3csImNsaWNrIixfLlRpKE5IayxhKSwhMCksUkhrJiZfLmhlKHdpbmRvdywidW5sb2FkIiwoKT0+S0hrKGEpKSxRSGt8fFJIa3x8S0hrKGEpKTp4Wig3KX0sVkhrPWZ1bmN0aW9uKCl7VEhrJiYod2luZG93LmJvdGd1YXJkP3dpbmRvdy5ib3RndWFyZC5iZz9VSGs/KDAsXy5qbykoU0hrLFVIayk6U0hrKCk6eFooNSk6eFooNCkpfSxYSGs9ZnVuY3Rpb24oKXtfLnlmKF8uc3goXy5zdGEoV0hrKSx7aW9jOiEwfSksVkhrLEhIayl9LGNJaz1mdW5jdGlvbigpe1lIaz93aW5kb3cuZG9jdW1lbnQucmVhZHlTdGF0ZT09PQpaSGs/WEhrKCk6JEhrP18ueW4od2luZG93LCJsb2FkIixYSGspOl8ueW4od2luZG93LmRvY3VtZW50LGFJayxYSGspOmJJaz8oMCxfLmpvKShYSGssYklrKTpYSGsoKX0sZ0lrPWZ1bmN0aW9uKGEpe3ZhciBiPW5ldyBkSWsoYSk7YT9fLnQoYiwxKT9fLnQoYiwyKT8oYT1fLnQoYiwxKSxiPV8udChiLDIpLGVJaz0hMCxXSGs9YSxPSGs9YixmSWsmJmNJaygpKTp4WigxNCk6eFooMTMpOnhaKDEyKX0sZElrPWNsYXNzIGV4dGVuZHMgXy5se2NvbnN0cnVjdG9yKGEpe3N1cGVyKGEpfX0sZUlrPSExLE9Iaz0iIixXSGs9IiIsZklrPSExLGJJaz0wLFlIaz0hMSxUSGs9ITEsVUhrPTAsUEhrPSExLFJIaz0hMSxRSGs9ITEsSUhrPSExLCRIaz0hMSxaSGs9ImNvbXBsZXRlIixhSWs9ImxvYWQiLExIaz0hMTsKXy5qcyhfLkZIayxjbGFzcyBleHRlbmRzIF8uaHN7Y29uc3RydWN0b3IoKXtzdXBlcigpO3ZhciBhPV8uZWEuZ29vZ2xlLnBtYy5iZ2Q7aWYoYSYmIWVJaylpZihhKWlmKCJldCJpbiBhJiYoVUhrPWEuZXQpLCJlZCJpbiBhJiYoYklrPWEuZWQpLGEuZWEmJihZSGs9ITApLGEuZWkmJihQSGs9ITApLGEubHImJihMSGs9ITApLGEuZXUmJihSSGs9ITApLGEuYWMmJihRSGs9ITApLGEuZXAmJihJSGs9ITApLGEuZXImJihUSGs9ITApLGEuZWwmJihmSWs9ITApLGEuYXMpXy5XeSgiYmdhc3kiLHt9KS50aGVuKGdJayxHSGspO2Vsc2UgaWYoYS5pKWlmKGEucCl7YS53bCYmKCRIaz0hMCk7YS5saSYmKFpIaz0iaW50ZXJhY3RpdmUiLGFJaz0iRE9NQ29udGVudExvYWRlZCIpO3ZhciBiPVN0cmluZyhhLmkpO2E9U3RyaW5nKGEucCk7ZUlrPSEwO1dIaz1iO09Iaz1hO2ZJayYmY0lrKCl9ZWxzZSB4WigyKTtlbHNlIHhaKDEpO2Vsc2UgeFooMCl9fSk7Cl8udigpOwp9Y2F0Y2goZSl7Xy5fRHVtcEV4Y2VwdGlvbihlKX0KfSkodGhpcy5faGQpOwovLyBHb29nbGUgSW5jLgo="}},"time_used":170,"timings":{"blocked":0,"dns":0,"connect":0,"send":0,"wait":162,"receive":8,"ssl":0},"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"www.google.com/xjs/_/js/k=xjs.hd.no.ZJX-0yQnO-M.2019.O/am=AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgQAAAAABBAAAAAAAAAAAAAAAYAAgAAAAAAAAAAAAAAAAAAIAAAQAAIAAAAAAAAAAAEAAAAAAABAAACAAAYAAAAQABBAAAAAMAAAAAAAAAAAAAAAAAAAAAgBAAAABCAADwBwZYAQAAAAAAAAASADAAAAAAAAAAFgAAIAEAAAAEQAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAABgAAAAAAKAAAAABAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAgAAACgAACAAAAgAAAAAAAAAAAAAAAACgAwAAAAAAAAAAAAAAAAAAAAAAAAAACAAAQIAAAAAAAAAAAAQACAAAAEAHQOABhhQUAAAAAAAAAAAAAAAAAAAAAAAAAAACLIBdSAEBEAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAyAkAAAAAAICF/d=0/dg=0/br=1/rs=ACT90oG_sTN876pKLsn8EAIC7HPAt8yW8Q/m=lOO0Vd,sy9w,P6sQOc?cb=121509378\u0026xjs=s4","fqdn":"www.google.com","domain":"google.com","tld":"com"},"ip":{"addr":"142.251.157.119","port":443,"asn":15169,"as":"GOOGLE","country":"United States","country_code":"US"},"is_navigation_request":false,"resource_type":"script","requested_by":"https://www.google.com/","date":"2026-07-27T15:33:57.223Z","timestamp":1785166437223,"http_version":"HTTP/3","security_state":"secure","security_info":{"cipher_suite":"TLS_AES_128_GCM_SHA256","key_group_name":"mlkem768x25519","signature_name":"ECDSA-P256-SHA256","protocol":"TLSv1.3","cert":{"subject":{"commonName":"*.google.com","organization":""},"issuer":{"commonName":"WR2","organization":"Google Trust Services"},"validity":{"start":"Mon, 29 Jun 2026 08:37:25 GMT","end":"Mon, 21 Sep 2026 08:37:24 GMT"},"fingerprint":{"sha1":"D9:DA:81:30:78:3E:9C:6B:5F:9D:18:52:0E:BE:6D:52:2F:FB:33:E0","sha256":"EA:E2:2D:87:EC:9C:D6:51:9D:59:E4:13:35:3B:97:14:E3:DA:58:2D:1C:69:19:41:54:94:25:C3:94:17:F3:0C"}}},"request":{"raw":"GET /xjs/_/js/k=xjs.hd.no.ZJX-0yQnO-M.2019.O/am=AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgQAAAAABBAAAAAAAAAAAAAAAYAAgAAAAAAAAAAAAAAAAAAIAAAQAAIAAAAAAAAAAAEAAAAAAABAAACAAAYAAAAQABBAAAAAMAAAAAAAAAAAAAAAAAAAAAgBAAAABCAADwBwZYAQAAAAAAAAASADAAAAAAAAAAFgAAIAEAAAAEQAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAABgAAAAAAKAAAAABAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAgAAACgAACAAAAgAAAAAAAAAAAAAAAACgAwAAAAAAAAAAAAAAAAAAAAAAAAAACAAAQIAAAAAAAAAAAAQACAAAAEAHQOABhhQUAAAAAAAAAAAAAAAAAAAAAAAAAAACLIBdSAEBEAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAyAkAAAAAAICF/d=0/dg=0/br=1/rs=ACT90oG_sTN876pKLsn8EAIC7HPAt8yW8Q/m=lOO0Vd,sy9w,P6sQOc?cb=121509378\u0026xjs=s4 HTTP/1.1\r\nHost: www.google.com\r\nUser-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:134.0) Gecko/20100101 Firefox/134.0\r\nAccept: */*\r\nAccept-Language: en-US,en;q=0.9\r\nAccept-Encoding: gzip, deflate, br, zstd\r\nReferer: https://www.google.com/\r\nSec-GPC: 1\r\nConnection: keep-alive\r\nCookie: AEC=AdJVEauUsWHpfGAsUyeilL8EI9I2Tr9FfEzOqXuEJToXYpKe1KUK4km-Sg; __Secure-ENID=35.SE=Y_fs7GGaQFs5VFS1Srk0O5HomBGnVvSvp_o-rK3Am89F7jST0q2gQCa-M2gCxRk_RBjJksMh8YwWZDFw6RfcbCeBYtqlTvos6MvDyL0vbheeaZHlJlF3BR2G5kruhoHre_VO9emvjcRgOiD0eMH_wgHEfSKU-zQvglvx9fcoejE2yypfhg2tPUPVvlmUpN-CV5a7002cW6ZslC01vtYrwve2XCNHFFzwCEs876fojdvGEQOKEx9xE4f1ASBTSBOWDkt2Ow\r\nSec-Fetch-Dest: script\r\nSec-Fetch-Mode: no-cors\r\nSec-Fetch-Site: same-origin\r\nPriority: u=1\r\nPragma: no-cache\r\nCache-Control: no-cache\r\n\r\n","headers":null,"cookies":null,"method":"GET"},"response":{"raw":"HTTP/3 200 \r\naccept-ranges: bytes\r\ncontent-encoding: br\r\ncontent-security-policy-report-only: require-trusted-types-for 'script'; report-uri https://csp.withgoogle.com/csp/gws-team\r\ncross-origin-resource-policy: cross-origin\r\ncross-origin-opener-policy: same-origin; report-to=\"gws-team\"\r\nreport-to: {\"group\":\"gws-team\",\"max_age\":2592000,\"endpoints\":[{\"url\":\"https://csp.withgoogle.com/csp/report-to/gws-team\"}]}\r\ncontent-length: 1066\r\nx-content-type-options: nosniff\r\nserver: sffe\r\nx-xss-protection: 0\r\ndate: Sat, 25 Jul 2026 02:19:00 GMT\r\nexpires: Sun, 25 Jul 2027 02:19:00 GMT\r\ncache-control: public, immutable, max-age=31536000\r\nlast-modified: Sat, 25 Jul 2026 01:57:35 GMT\r\ncontent-type: text/javascript; charset=UTF-8\r\nvary: Accept-Encoding, Origin\r\nage: 220497\r\nalt-svc: h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000\r\n\r\n","headers":null,"cookies":null,"status_code":"200","status_text":"","fingerprints":null,"data":{"size":2113,"size_decoded":1894,"mime_type":"text/javascript; charset=UTF-8","magic":"JavaScript source, ASCII text, with very long lines (513)","md5":"015eb4537f66039b0b9c6be3bbc28fbe","sha1":"d2de1113ffadfaade42ef3f5a9d20ac38d4fa70b","sha256":"9ff5feea74cf5cb2651a8e6ba6cec067fee3d82dc7703b50b3f7b225c3002bd1","sha512":"f418ff18e7c840e16a5c63b71272b8a4e5f4f81370a9cc91167c922462240fb0459a2aeef0f3a70037622c85f35c3fcd2b2619d027de53c166d454e29f42c42a","ssdeep":"","tlshash":"9641952d61e7b0532251f0d0046a1043e1afa867e0d85c7e7ef4bec6abd108956e23fc","first_seen":"2026-07-25T01:07:04.031041Z","last_seen":"2026-07-27T21:44:04.588475Z","times_seen":209,"resource_available":true,"data":"dGhpcy5faGQ9dGhpcy5faGR8fHt9OyhmdW5jdGlvbihfKXt2YXIgd2luZG93PXRoaXM7CnRyeXsKXy51KCJsT08wVmQiKTsKXy5jbGI9bmV3IF8ub28oXy55UmEpOwpfLnYoKTsKfWNhdGNoKGUpe18uX0R1bXBFeGNlcHRpb24oZSl9CnRyeXsKdmFyIGVsYjtlbGI9ZnVuY3Rpb24oYSl7aWYoYS5iTWIpe2xldCBiPURhdGUubm93KCktYS5IUGM7cmV0dXJuIGEuYk1iKGEuQ1phKzEsYil9cmV0dXJuIE1hdGgucmFuZG9tKCkqTWF0aC5taW4oYS5iQWMqTWF0aC5wb3coYS5va2IsYS5DWmEpLGEuekVjKX07Xy5mbGI9ZnVuY3Rpb24oYSl7aWYoIWEuRHhhKCkpdGhyb3cgRXJyb3IoImRmYCIrYS5tSmEpOysrYS5DWmE7YS5ta2I9ZWxiKGEpfTtfLmdsYj1jbGFzc3tjb25zdHJ1Y3RvcihhLGIsYyxkLGUsZil7dGhpcy5tSmE9YTt0aGlzLmJBYz1iO3RoaXMub2tiPWM7dGhpcy56RWM9ZDt0aGlzLkNMYz1lO3RoaXMuYk1iPWZ8fG51bGw7dGhpcy5IUGM9RGF0ZS5ub3coKTt0aGlzLkNaYT0wO3RoaXMubWtiPWVsYih0aGlzKX1uVWIoKXtyZXR1cm4gdGhpcy5DWmF9RHhhKGEpe3JldHVybiB0aGlzLkNaYT49dGhpcy5tSmE/ITE6YSE9bnVsbD8hIXRoaXMuQ0xjW2FdOiEwfX07Cn1jYXRjaChlKXtfLl9EdW1wRXhjZXB0aW9uKGUpfQp0cnl7Cl8udSgiUDZzUU9jIik7CnZhciBobGI9ZnVuY3Rpb24oYSl7dmFyIGI9e307Xy5MYShhLkFhKCksZT0+e2JbZV09ITB9KTt2YXIgYz1hLkJhKCksZD1hLkVhKCk7cmV0dXJuIG5ldyBfLmdsYihhLndhKCksXy50ZShjLmdldFNlY29uZHMoKSkqMUUzLGEub2EoKSxfLnRlKGQuZ2V0U2Vjb25kcygpKSoxRTMsYil9LGlsYj1uZXcgXy5IcSgicmV0cnlDb25maWdPdmVycmlkZXMiKSxqbGI9ZnVuY3Rpb24oYSxiLGMsZCl7cmV0dXJuIGMudGhlbihlPT5lLGU9PntpZihlIGluc3RhbmNlb2YgXy5xaSl7aWYoIWUuc3RhdHVzfHwhZC5EeGEoZS5zdGF0dXMuWW4oKSkpdGhyb3cgZTt9ZWxzZSBpZigiZnVuY3Rpb24iPT10eXBlb2YgXy5naGImJmUgaW5zdGFuY2VvZiBfLmdoYilzd2l0Y2goZS5rYSl7Y2FzZSAxMDM6Y2FzZSA3OmNhc2UgMTA6Y2FzZSAxMDE6Y2FzZSAxMDU6Y2FzZSA0MDg6Y2FzZSA0MjU6Y2FzZSA0Mjk6Y2FzZSA1MDI6Y2FzZSA1MDM6Y2FzZSA1MDQ6YnJlYWs7ZGVmYXVsdDp0aHJvdyBlO31pZihkJiYKIWQuRHhhKCkpcmV0dXJuIF8uSGgoZSk7dmFyIGY9ZC5ta2I7cmV0dXJuKG5ldyBfLlNnKGc9PntzZXRUaW1lb3V0KGcsZil9KSkudGhlbigoKT0+e18uZmxiKGQpO3ZhciBnPWQublViKCk7Yj1iLkN3KF8uaFdhLGcpO3JldHVybiBqbGIoYSxiLGEuZmV0Y2goYiksZCl9KX0pfTsKXy5iZyhjbGFzc3tjb25zdHJ1Y3Rvcigpe3RoaXMua2E9Xy5IZihfLmJsYik7dGhpcy5vYT1fLkhmKF8uY2xiKTt0aGlzLnhjPW51bGw7dmFyIGE9Xy5IZihfLlNmYik7dGhpcy5mZXRjaD1hLmZldGNoLmJpbmQoYSl9cnhhKGEsYil7aWYodGhpcy5vYS5nZXRUeXBlKGEuVWwoKSkhPT0xKXJldHVybiBuZXcgXy5CcihhLG51bGwsMCk7dmFyIGM9dGhpcy5rYS5wb2xpY3ksZD1fLklxKGEsaWxiKSxlPW51bGw7aWYoZCl7ZT17fTtpZihkLkVaYSlmb3IodmFyIGYgb2YgZC5FWmEpZVtmXT0hMDtlbHNlIGlmKGMpZm9yKHZhciBnIG9mIGMuQWEoKSllW2ddPSEwO2xldCBuPTEscD0wO2Y9SW5maW5pdHk7Zz0yO2lmKGMpe249Yy53YSgpfHxuO2xldCB4LHo9KHg9Yy5JYSgpKT09bnVsbD92b2lkIDA6eC5nZXRTZWNvbmRzKCk7cD1fLnRlKGMuS2EoKS5nZXRTZWNvbmRzKCkpKjFFMztmPXohPW51bGw/Xy50ZSh6KSoxRTM6ZjtnPWMub2EoKXx8Z312YXIgaCxrLG07bGV0IHI7Yz0oaD1kLm1heEF0dGVtcHRzKSE9Cm51bGw/aDpuO2g9KGs9ZC5EdGIpIT1udWxsP2s6cDtrPShtPWQubmtiKSE9bnVsbD9tOmc7bT0ocj1kLmZ4YikhPW51bGw/cjpmO2U9bmV3IF8uZ2xiKGMsaCxrLG0sZSxkLkltYyl9ZWxzZSBjJiYoZT1obGIoYykpO2UmJmUuRHhhKCk/KGI9amxiKHRoaXMsYSxiLGUpLGE9bmV3IF8uQnIoYSxiLDIpKTphPW5ldyBfLkJyKGEsbnVsbCwwKTtyZXR1cm4gYX19LF8uZGxiKTsKXy52KCk7Cn1jYXRjaChlKXtfLl9EdW1wRXhjZXB0aW9uKGUpfQp9KSh0aGlzLl9oZCk7Ci8vIEdvb2dsZSBJbmMuCg=="}},"time_used":11,"timings":{"blocked":0,"dns":0,"connect":0,"send":0,"wait":11,"receive":0,"ssl":0},"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"google.com/","fqdn":"google.com","domain":"google.com","tld":"com"},"ip":{"addr":"142.250.178.110","port":443,"asn":15169,"as":"GOOGLE","country":"United States","country_code":"US"},"is_navigation_request":true,"resource_type":"document","requested_by":"","date":"2026-07-27T15:33:55.583Z","timestamp":1785166435583,"http_version":"HTTP/3","security_state":"secure","security_info":{"cipher_suite":"TLS_AES_128_GCM_SHA256","key_group_name":"mlkem768x25519","signature_name":"ECDSA-P256-SHA256","protocol":"TLSv1.3","cert":{"subject":{"commonName":"*.google.com","organization":""},"issuer":{"commonName":"WE2","organization":"Google Trust Services"},"validity":{"start":"Mon, 29 Jun 2026 08:37:35 GMT","end":"Mon, 21 Sep 2026 08:37:34 GMT"},"fingerprint":{"sha1":"2F:20:3B:91:88:65:20:CD:06:9D:0C:58:4D:17:6F:FC:9D:EC:41:83","sha256":"0C:7B:D3:23:E9:5B:D6:6B:F2:5C:71:91:4D:41:CE:E6:D7:1F:A2:F2:63:BA:25:70:1D:00:F3:C0:72:21:51:6D"}}},"request":{"raw":"GET / HTTP/1.1\r\nHost: google.com\r\nUser-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:134.0) Gecko/20100101 Firefox/134.0\r\nAccept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8\r\nAccept-Language: en-US,en;q=0.9\r\nAccept-Encoding: gzip, deflate, br, zstd\r\nSec-GPC: 1\r\nConnection: keep-alive\r\nUpgrade-Insecure-Requests: 1\r\nSec-Fetch-Dest: document\r\nSec-Fetch-Mode: navigate\r\nSec-Fetch-Site: none\r\nPriority: u=0, i\r\nPragma: no-cache\r\nCache-Control: no-cache\r\n\r\n","headers":null,"cookies":null,"method":"GET"},"response":{"raw":"HTTP/3 301 \r\nlocation: https://www.google.com/\r\ncontent-type: text/html; charset=UTF-8\r\ncontent-security-policy-report-only: object-src 'none';base-uri 'self';script-src 'nonce-_MtemyGMN1M96Ci6Y96ZsQ' 'strict-dynamic' 'report-sample' 'unsafe-eval' 'unsafe-inline' https: http:;report-uri https://csp.withgoogle.com/csp/gws/other-hp\r\ncross-origin-opener-policy: same-origin-allow-popups; report-to=\"gws\"\r\nreport-to: {\"group\":\"gws\",\"max_age\":2592000,\"endpoints\":[{\"url\":\"https://csp.withgoogle.com/csp/report-to/gws/other\"}]}\r\ndate: Mon, 27 Jul 2026 15:33:55 GMT\r\nexpires: Wed, 26 Aug 2026 15:33:55 GMT\r\ncache-control: public, max-age=2592000\r\nserver: gws\r\ncontent-length: 220\r\nx-xss-protection: 0\r\nx-frame-options: SAMEORIGIN\r\nalt-svc: h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000\r\n\r\n","headers":null,"cookies":null,"status_code":"301","status_text":"","fingerprints":[{"name":"Google Web Server","description":"","website":"https://en.wikipedia.org/wiki/Google_Web_Server","common_platform_enumeration":"cpe:2.3:a:google:web_server:*:*:*:*:*:*:*:*","icon":"Google.svg","categories":["Web servers"]}],"data":{"size":0,"size_decoded":0,"mime_type":"text/html; charset=UTF-8","magic":"","md5":"d41d8cd98f00b204e9800998ecf8427e","sha1":"da39a3ee5e6b4b0d3255bfef95601890afd80709","sha256":"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855","sha512":"cf83e1357eefb8bdf1542850d66d8007d620e4050b5715dc83f4a921d36ce9ce47d0d13c5d85f2b0ff8318d2877eec2f63b931bd47417a81a538327af927da3e","ssdeep":"","tlshash":"","first_seen":"0001-01-01T00:00:00Z","last_seen":"2026-08-16T23:46:43.370624Z","times_seen":17926730,"resource_available":true,"data":null}},"time_used":114,"timings":{"blocked":-1,"dns":5,"connect":35,"send":0,"wait":74,"receive":0,"ssl":0},"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"www.google.com/gen_204?atyp=i\u0026ct=bxjs\u0026cad=\u0026b=0\u0026ei=Y3pnarTELeimwPAPo6StkA4\u0026zx=1785166436376\u0026opi=89978449","fqdn":"www.google.com","domain":"google.com","tld":"com"},"ip":{"addr":"142.251.157.119","port":443,"asn":15169,"as":"GOOGLE","country":"United States","country_code":"US"},"is_navigation_request":false,"resource_type":"beacon","requested_by":"https://www.google.com/","date":"2026-07-27T15:33:56.423Z","timestamp":1785166436423,"http_version":"HTTP/3","security_state":"secure","security_info":{"cipher_suite":"TLS_AES_128_GCM_SHA256","key_group_name":"mlkem768x25519","signature_name":"ECDSA-P256-SHA256","protocol":"TLSv1.3","cert":{"subject":{"commonName":"*.google.com","organization":""},"issuer":{"commonName":"WR2","organization":"Google Trust Services"},"validity":{"start":"Mon, 29 Jun 2026 08:37:25 GMT","end":"Mon, 21 Sep 2026 08:37:24 GMT"},"fingerprint":{"sha1":"D9:DA:81:30:78:3E:9C:6B:5F:9D:18:52:0E:BE:6D:52:2F:FB:33:E0","sha256":"EA:E2:2D:87:EC:9C:D6:51:9D:59:E4:13:35:3B:97:14:E3:DA:58:2D:1C:69:19:41:54:94:25:C3:94:17:F3:0C"}}},"request":{"raw":"POST /gen_204?atyp=i\u0026ct=bxjs\u0026cad=\u0026b=0\u0026ei=Y3pnarTELeimwPAPo6StkA4\u0026zx=1785166436376\u0026opi=89978449 HTTP/1.1\r\nHost: www.google.com\r\nUser-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:134.0) Gecko/20100101 Firefox/134.0\r\nAccept: */*\r\nAccept-Language: en-US,en;q=0.9\r\nAccept-Encoding: gzip, deflate, br, zstd\r\nReferer: https://www.google.com/\r\nContent-Type: text/plain;charset=UTF-8\r\nContent-Length: 0\r\nOrigin: https://www.google.com\r\nSec-GPC: 1\r\nConnection: keep-alive\r\nCookie: AEC=AdJVEauUsWHpfGAsUyeilL8EI9I2Tr9FfEzOqXuEJToXYpKe1KUK4km-Sg; __Secure-ENID=35.SE=AbigeV3aJ0m6xMobN92AbNZpW8pBnglGTPw_dz_A9WWyoDaiBBZPKRYUFk43qYtDkrYoTgVKiKtyKOguRjujzVzhuA6WYYbk-i87vjK7wNHmdliDMhNspbLvs4LU7H3yif4utRnzW3A5pWS7luM5rorSqU-pj8vCqCmdLtP-tPTBFRmS_IwoinM092pFPLFq5WUhH_JzQWk4Nj64_cv8DwX9Gzz3yPDcXsoOsZMMsbp3c373u3CG8Y4REmw\r\nSec-Fetch-Dest: empty\r\nSec-Fetch-Mode: no-cors\r\nSec-Fetch-Site: same-origin\r\nPriority: u=6\r\n\r\n","headers":null,"cookies":null,"method":"POST"},"response":{"raw":"HTTP/3 204 \r\ncontent-type: text/html; charset=UTF-8\r\ncontent-security-policy: object-src 'none';base-uri 'self';script-src 'nonce-ChlvlCf-PNvKNehbWpPQaA' 'strict-dynamic' 'report-sample' 'unsafe-eval' 'unsafe-inline' https: http:;report-uri https://csp.withgoogle.com/csp/gws/other\r\ncross-origin-opener-policy: same-origin-allow-popups; report-to=\"gws\"\r\nreport-to: {\"group\":\"gws\",\"max_age\":2592000,\"endpoints\":[{\"url\":\"https://csp.withgoogle.com/csp/report-to/gws/other\"}]}\r\ndate: Mon, 27 Jul 2026 15:33:56 GMT\r\nserver: gws\r\ncontent-length: 0\r\nx-xss-protection: 0\r\nx-frame-options: SAMEORIGIN\r\nalt-svc: h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000\r\n\r\n","headers":null,"cookies":null,"status_code":"204","status_text":"","fingerprints":[{"name":"Google Web Server","description":"","website":"https://en.wikipedia.org/wiki/Google_Web_Server","common_platform_enumeration":"cpe:2.3:a:google:web_server:*:*:*:*:*:*:*:*","icon":"Google.svg","categories":["Web servers"]}],"data":{"size":0,"size_decoded":653,"mime_type":"text/html; charset=UTF-8","magic":"","md5":"d41d8cd98f00b204e9800998ecf8427e","sha1":"da39a3ee5e6b4b0d3255bfef95601890afd80709","sha256":"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855","sha512":"cf83e1357eefb8bdf1542850d66d8007d620e4050b5715dc83f4a921d36ce9ce47d0d13c5d85f2b0ff8318d2877eec2f63b931bd47417a81a538327af927da3e","ssdeep":"","tlshash":"","first_seen":"0001-01-01T00:00:00Z","last_seen":"2026-08-16T23:46:43.370624Z","times_seen":17926730,"resource_available":true,"data":""}},"time_used":19,"timings":{"blocked":-1,"dns":0,"connect":0,"send":0,"wait":19,"receive":0,"ssl":0},"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"www.google.com/xjs/_/ss/k=xjs.hd.h9GHjaAphl0.L.F4.O/am=AAAEQAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAABAAAAIECAAAZAAAAAAAgAACAAAAAAAIAAAAAABAeAAAAMAAAAAAAAAAAAAAAAAAAQAAAIAAAAAAAAAAAEAAAAAAAAAIAiAAAAAAAAQABFAAAQAAAAAAAAAAACAAAAAAAAAAACBAAAAAAAAAAAABAAgAAAAAAAAAAYTAQAAAAABAGAAAAAAAAAAAAAAAAAAAAAABAJEACACAAAAAAAAgAAAAAAAQBhBAEAAEKIAAAAAAAAAKABQAAAACgAxAEAQAAAAAAAAAACAAEgRBAAAAAgAAAABAACAAIAAAAAGAEBQBAogYCAECgAwAAACADAAAAAAQAAAAAAAAAAAAAiAAAAAAAAACQAAADBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAE/d=0/br=1/rs=ACT90oGbAV3hgWIqz8I-ppdbYy_xG58I7g/m=y05UD,PPhKqf,vECdaf,sy1hp,syoh,syqg,sy2aw,sy1c7,sy1g1,sy1g5,epYOx?cb=121509378\u0026xjs=s4","fqdn":"www.google.com","domain":"google.com","tld":"com"},"ip":{"addr":"142.251.157.119","port":443,"asn":15169,"as":"GOOGLE","country":"United States","country_code":"US"},"is_navigation_request":false,"resource_type":"fetch","requested_by":"https://www.google.com/","date":"2026-07-27T15:33:57.109Z","timestamp":1785166437109,"http_version":"HTTP/3","security_state":"secure","security_info":{"cipher_suite":"TLS_AES_128_GCM_SHA256","key_group_name":"mlkem768x25519","signature_name":"ECDSA-P256-SHA256","protocol":"TLSv1.3","cert":{"subject":{"commonName":"*.google.com","organization":""},"issuer":{"commonName":"WR2","organization":"Google Trust Services"},"validity":{"start":"Mon, 29 Jun 2026 08:37:25 GMT","end":"Mon, 21 Sep 2026 08:37:24 GMT"},"fingerprint":{"sha1":"D9:DA:81:30:78:3E:9C:6B:5F:9D:18:52:0E:BE:6D:52:2F:FB:33:E0","sha256":"EA:E2:2D:87:EC:9C:D6:51:9D:59:E4:13:35:3B:97:14:E3:DA:58:2D:1C:69:19:41:54:94:25:C3:94:17:F3:0C"}}},"request":{"raw":"GET /xjs/_/ss/k=xjs.hd.h9GHjaAphl0.L.F4.O/am=AAAEQAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAABAAAAIECAAAZAAAAAAAgAACAAAAAAAIAAAAAABAeAAAAMAAAAAAAAAAAAAAAAAAAQAAAIAAAAAAAAAAAEAAAAAAAAAIAiAAAAAAAAQABFAAAQAAAAAAAAAAACAAAAAAAAAAACBAAAAAAAAAAAABAAgAAAAAAAAAAYTAQAAAAABAGAAAAAAAAAAAAAAAAAAAAAABAJEACACAAAAAAAAgAAAAAAAQBhBAEAAEKIAAAAAAAAAKABQAAAACgAxAEAQAAAAAAAAAACAAEgRBAAAAAgAAAABAACAAIAAAAAGAEBQBAogYCAECgAwAAACADAAAAAAQAAAAAAAAAAAAAiAAAAAAAAACQAAADBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAE/d=0/br=1/rs=ACT90oGbAV3hgWIqz8I-ppdbYy_xG58I7g/m=y05UD,PPhKqf,vECdaf,sy1hp,syoh,syqg,sy2aw,sy1c7,sy1g1,sy1g5,epYOx?cb=121509378\u0026xjs=s4 HTTP/1.1\r\nHost: www.google.com\r\nUser-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:134.0) Gecko/20100101 Firefox/134.0\r\nAccept: */*\r\nAccept-Language: en-US,en;q=0.9\r\nAccept-Encoding: gzip, deflate, br, zstd\r\nReferer: https://www.google.com/\r\nSec-GPC: 1\r\nConnection: keep-alive\r\nCookie: AEC=AdJVEauUsWHpfGAsUyeilL8EI9I2Tr9FfEzOqXuEJToXYpKe1KUK4km-Sg; __Secure-ENID=35.SE=Uz4O9fexpqtcg27rsCzqB3loBSC8a70Mqp_d18c3cjeU9uMWe4FHcPW1svFlK9taJqOPsqN9ZTMvrbcif3fGSVkGFj_PZtB1iqcUHQQ3k4McoRQh3TFmXwFvuBZDiuJbZsEWkIiLh9oQZqCS02Kcsd8T8KoXlZsObsNcGy15dXCeCexC1uy7XgZprqFrMQQA8uTOFbrZoEzmrPkKmCFOh5B5Jnu68ljyS8KtzuKzT_-dPSCoq1OOlqfaBgM\r\nSec-Fetch-Dest: empty\r\nSec-Fetch-Mode: cors\r\nSec-Fetch-Site: same-origin\r\nPragma: no-cache\r\nCache-Control: no-cache\r\n\r\n","headers":null,"cookies":null,"method":"GET"},"response":{"raw":"HTTP/3 200 \r\naccept-ranges: bytes\r\ncontent-encoding: br\r\ncontent-security-policy-report-only: require-trusted-types-for 'script'; report-uri https://csp.withgoogle.com/csp/gws-team\r\ncross-origin-resource-policy: cross-origin\r\ncross-origin-opener-policy: same-origin; report-to=\"gws-team\"\r\nreport-to: {\"group\":\"gws-team\",\"max_age\":2592000,\"endpoints\":[{\"url\":\"https://csp.withgoogle.com/csp/report-to/gws-team\"}]}\r\ncontent-length: 1947\r\nx-content-type-options: nosniff\r\nserver: sffe\r\nx-xss-protection: 0\r\ndate: Fri, 24 Jul 2026 23:48:37 GMT\r\nexpires: Sat, 24 Jul 2027 23:48:37 GMT\r\ncache-control: public, immutable, max-age=31536000\r\nlast-modified: Fri, 24 Jul 2026 22:53:47 GMT\r\ncontent-type: text/css; charset=UTF-8\r\nvary: Accept-Encoding, Origin\r\nage: 229520\r\nalt-svc: h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000\r\n\r\n","headers":null,"cookies":null,"status_code":"200","status_text":"","fingerprints":null,"data":{"size":8235,"size_decoded":2768,"mime_type":"text/css; charset=UTF-8","magic":"ASCII text, with very long lines (8235), with no line terminators","md5":"6f83577ef611caa63fcb520d23de6305","sha1":"74974a5b603702f63e83c6c0a209331ccbd85c11","sha256":"95ccd89365d1f8b58a0ae71f0cda3188da217e0f958621e8d40fdee8f2dd6831","sha512":"ea163b42c1eddfa2b0854c8c46c8f386ef8e843eacfd12fe40411790702037e5a2cdcf869c694f3bd0ee132d8ef733a555fe1f84f1bef5536d74fc122b00e88a","ssdeep":"192:M2gsZJMQVd8VG61Y9VAkz5tPZzdU+QTLuDYSQ+srHqKPHT1L:dgsZJMQVdh9VAkzvhMS1U","tlshash":"e402b672a390011ea857868977c4feca902dca27d9335aefbd55b22dc4c30e617b720d","first_seen":"2026-04-10T17:27:26.526047Z","last_seen":"2026-08-16T22:30:53.84421Z","times_seen":11388,"resource_available":false,"data":"LmpiQkl0ZntkaXNwbGF5OmJsb2NrO3Bvc2l0aW9uOnJlbGF0aXZlfS5EVTBOSntib3R0b206MDtsZWZ0OjA7cG9zaXRpb246YWJzb2x1dGU7cmlnaHQ6MDt0b3A6MH0ubFAzSm9me2Rpc3BsYXk6aW5saW5lLWJsb2NrO3Bvc2l0aW9uOnJlbGF0aXZlfS5uTk11T2R7YW5pbWF0aW9uOnFsaS1jb250YWluZXItcm90YXRlIDE1NjguMjM1Mjk0MTE3Nm1zIGxpbmVhciBpbmZpbml0ZX1Aa2V5ZnJhbWVzIHFsaS1jb250YWluZXItcm90YXRlezAle3RyYW5zZm9ybTpyb3RhdGUoMCl9dG97dHJhbnNmb3JtOnJvdGF0ZSgxdHVybil9fS5Sb0ttaGJ7aGVpZ2h0OjEwMCU7b3BhY2l0eTowO3Bvc2l0aW9uOmFic29sdXRlO3dpZHRoOjEwMCV9Lm5OTXVPZCAuVlFkZWFie2FuaW1hdGlvbjpxbGktZmlsbC11bmZpbGwtcm90YXRlIDUzMzJtcyBjdWJpYy1iZXppZXIoMC40LDAsMC4yLDEpIGluZmluaXRlIGJvdGgscWxpLWJsdWUtZmFkZS1pbi1vdXQgNTMzMm1zIGN1YmljLWJlemllcigwLjQsMCwwLjIsMSkgaW5maW5pdGUgYm90aH0ubk5NdU9kIC5JRXFpQWZ7YW5pbWF0aW9uOnFsaS1maWxsLXVuZmlsbC1yb3RhdGUgNTMzMm1zIGN1YmljLWJlemllcigwLjQsMCwwLjIsMSkgaW5maW5pdGUgYm90aCxxbGktcmVkLWZhZGUtaW4tb3V0IDUzMzJtcyBjdWJpYy1iZXppZXIoMC40LDAsMC4yLDEpIGluZmluaXRlIGJvdGh9Lm5OTXVPZCAuc21vY3Nle2FuaW1hdGlvbjpxbGktZmlsbC11bmZpbGwtcm90YXRlIDUzMzJtcyBjdWJpYy1iZXppZXIoMC40LDAsMC4yLDEpIGluZmluaXRlIGJvdGgscWxpLXllbGxvdy1mYWRlLWluLW91dCA1MzMybXMgY3ViaWMtYmV6aWVyKDAuNCwwLDAuMiwxKSBpbmZpbml0ZSBib3RofS5uTk11T2QgLkZsS2JDZXthbmltYXRpb246cWxpLWZpbGwtdW5maWxsLXJvdGF0ZSA1MzMybXMgY3ViaWMtYmV6aWVyKDAuNCwwLDAuMiwxKSBpbmZpbml0ZSBib3RoLHFsaS1ncmVlbi1mYWRlLWluLW91dCA1MzMybXMgY3ViaWMtYmV6aWVyKDAuNCwwLDAuMiwxKSBpbmZpbml0ZSBib3RofS5CU25MYiAubk5NdU9kIC5Sb0ttaGJ7YW5pbWF0aW9uOnFsaS1maWxsLXVuZmlsbC1yb3RhdGUgNTMzMm1zIGN1YmljLWJlemllcigwLjQsMCwwLjIsMSkgaW5maW5pdGUgYm90aDtvcGFjaXR5OjAuOTl9QGtleWZyYW1lcyBxbGktZmlsbC11bmZpbGwtcm90YXRlezAle3RyYW5zZm9ybTpyb3RhdGUoMCl9MTIuNSV7dHJhbnNmb3JtOnJvdGF0ZSgxMzVkZWcpfTI1JXt0cmFuc2Zvcm06cm90YXRlKDI3MGRlZyl9MzcuNSV7dHJhbnNmb3JtOnJvdGF0ZSg0MDVkZWcpfTUwJXt0cmFuc2Zvcm06cm90YXRlKDU0MGRlZyl9NjIuNSV7dHJhbnNmb3JtOnJvdGF0ZSg2NzVkZWcpfTc1JXt0cmFuc2Zvcm06cm90YXRlKDgxMGRlZyl9ODcuNSV7dHJhbnNmb3JtOnJvdGF0ZSg5NDVkZWcpfXRve3RyYW5zZm9ybTpyb3RhdGUoM3R1cm4pfX1Aa2V5ZnJhbWVzIHFsaS1ibHVlLWZhZGUtaW4tb3V0ezAle29wYWNpdHk6MC45OX0yNSV7b3BhY2l0eTowLjk5fTI2JXtvcGFjaXR5OjB9ODkle29wYWNpdHk6MH05MCV7b3BhY2l0eTowLjk5fXRve29wYWNpdHk6MC45OX19QGtleWZyYW1lcyBxbGktcmVkLWZhZGUtaW4tb3V0ezAle29wYWNpdHk6MH0xNSV7b3BhY2l0eTowfTI1JXtvcGFjaXR5OjAuOTl9NTAle29wYWNpdHk6MC45OX01MSV7b3BhY2l0eTowfX1Aa2V5ZnJhbWVzIHFsaS15ZWxsb3ctZmFkZS1pbi1vdXR7MCV7b3BhY2l0eTowfTQwJXtvcGFjaXR5OjB9NTAle29wYWNpdHk6MC45OX03NSV7b3BhY2l0eTowLjk5fTc2JXtvcGFjaXR5OjB9fUBrZXlmcmFtZXMgcWxpLWdyZWVuLWZhZGUtaW4tb3V0ezAle29wYWNpdHk6MH02NSV7b3BhY2l0eTowfTc1JXtvcGFjaXR5OjAuOTl9OTAle29wYWNpdHk6MC45OX10b3tvcGFjaXR5OjB9fS5iZURRUHtkaXNwbGF5OmlubGluZS1ibG9jaztoZWlnaHQ6MTAwJTtvdmVyZmxvdzpoaWRkZW47cG9zaXRpb246cmVsYXRpdmU7d2lkdGg6NTAlfS5GY1hmaXstbW96LWJveC1zaXppbmc6Ym9yZGVyLWJveDtib3gtc2l6aW5nOmJvcmRlci1ib3g7aGVpZ2h0OjEwMCU7bGVmdDo0NSU7b3ZlcmZsb3c6aGlkZGVuO3Bvc2l0aW9uOmFic29sdXRlO3RvcDowO3dpZHRoOjEwJX0uU1BLRm1je2JvcmRlci1yYWRpdXM6NTAlO2JvcmRlcjozcHggc29saWQgdHJhbnNwYXJlbnQ7LW1vei1ib3gtc2l6aW5nOmJvcmRlci1ib3g7Ym94LXNpemluZzpib3JkZXItYm94fUBtZWRpYSAoZm9yY2VkLWNvbG9yczphY3RpdmUpLChwcmVmZXJzLWNvbnRyYXN0Om1vcmUpey5iZURRUDpsYXN0LWNoaWxkIC5TUEtGbWN7Ym9yZGVyOm5vbmV9fS54M1NkWGR7d2lkdGg6MjAwJX0uSjd1dVVle3RyYW5zZm9ybTpyb3RhdGUoMTI5ZGVnKX0uc0RQSUN7bGVmdDotMTAwJTt0cmFuc2Zvcm06cm90YXRlKC0xMjlkZWcpfS50UzNQNXtsZWZ0Oi00NTAlO3dpZHRoOjEwMDAlfS5WUWRlYWIgLlNQS0ZtY3tib3JkZXItY29sb3I6IzQyODVmNH0uSUVxaUFmIC5TUEtGbWN7Ym9yZGVyLWNvbG9yOiNlYTQzMzV9LnNtb2NzZSAuU1BLRm1je2JvcmRlci1jb2xvcjojZmJiYzA0fS5GbEtiQ2UgLlNQS0ZtY3tib3JkZXItY29sb3I6IzM0YTg1M30uUm9LbWhiIC5KN3V1VWV7Ym9yZGVyLWJvdHRvbS1jb2xvcjp0cmFuc3BhcmVudDtib3JkZXItcmlnaHQtY29sb3I6dHJhbnNwYXJlbnR9LlJvS21oYiAuc0RQSUN7Ym9yZGVyLWJvdHRvbS1jb2xvcjp0cmFuc3BhcmVudDtib3JkZXItbGVmdC1jb2xvcjp0cmFuc3BhcmVudH0uUm9LbWhiIC50UzNQNXtib3JkZXItYm90dG9tLWNvbG9yOnRyYW5zcGFyZW50fS5HZ1RKV2UgLm5OTXVPZCAuSjd1dVVle2FuaW1hdGlvbjpxbGktbGVmdC1zcGluIDEzMzNtcyBjdWJpYy1iZXppZXIoMC40LDAsMC4yLDEpIGluZmluaXRlIGJvdGh9LkdnVEpXZSAubk5NdU9kIC5zRFBJQ3thbmltYXRpb246cWxpLXJpZ2h0LXNwaW4gMTMzM21zIGN1YmljLWJlemllcigwLjQsMCwwLjIsMSkgaW5maW5pdGUgYm90aH0uQlNuTGIgLm5OTXVPZCAuSjd1dVVle2FuaW1hdGlvbjpxbGktbGVmdC1zcGluIDEzMzNtcyBjdWJpYy1iZXppZXIoMC40LDAsMC4yLDEpIGluZmluaXRlIGJvdGg7Ym9yZGVyLWxlZnQtY29sb3I6dmFyKC0tRXBGTlcpO2JvcmRlci10b3AtY29sb3I6dmFyKC0tRXBGTlcpfS5CU25MYiAubk5NdU9kIC5zRFBJQ3thbmltYXRpb246cWxpLXJpZ2h0LXNwaW4gMTMzM21zIGN1YmljLWJlemllcigwLjQsMCwwLjIsMSkgaW5maW5pdGUgYm90aDtib3JkZXItcmlnaHQtY29sb3I6dmFyKC0tRXBGTlcpO2JvcmRlci10b3AtY29sb3I6dmFyKC0tRXBGTlcpfS5CU25MYiAubk5NdU9kIC50UzNQNXtib3JkZXItY29sb3I6dmFyKC0tRXBGTlcpO2JvcmRlci1ib3R0b20tY29sb3I6dHJhbnNwYXJlbnR9QGtleWZyYW1lcyBxbGktbGVmdC1zcGluezAle3RyYW5zZm9ybTpyb3RhdGUoMTMwZGVnKX01MCV7dHJhbnNmb3JtOnJvdGF0ZSgtNWRlZyl9dG97dHJhbnNmb3JtOnJvdGF0ZSgxMzBkZWcpfX1Aa2V5ZnJhbWVzIHFsaS1yaWdodC1zcGluezAle3RyYW5zZm9ybTpyb3RhdGUoLTEzMGRlZyl9NTAle3RyYW5zZm9ybTpyb3RhdGUoNWRlZyl9dG97dHJhbnNmb3JtOnJvdGF0ZSgtMTMwZGVnKX19Yy13aXp7Y29udGFpbjpzdHlsZX1jLXdpej5jLWRhdGF7ZGlzcGxheTpub25lfWMtd2l6LnJFVFNEe2NvbnRhaW46bm9uZX1jLXdpei5VYmk4Wntjb250YWluOmxheW91dCBzdHlsZX0uTnpTZmlme2JhY2tncm91bmQ6I2ZmZjtib3JkZXItcmFkaXVzOjI0cHg7Ym94LXNoYWRvdzowcHggNHB4IDZweCByZ2JhKDMyLDMzLDM2LDAuMjgpO21hcmdpbi1sZWZ0Oi00cHg7bWFyZ2luLXRvcDowO3Bvc2l0aW9uOmFic29sdXRlO3RvcDotNHB4O3dpZHRoOmNhbGMoMTAwJSArIDhweCk7ei1pbmRleDo5ODl9LktvV0hwZHttYXJnaW46MjBweH0uQmlLTmZ7YWxpZ24tc2VsZjpmbGV4LWVuZDtjdXJzb3I6cG9pbnRlcjtkaXNwbGF5Oi1tb3otYm94O2Rpc3BsYXk6ZmxleDtwYWRkaW5nOjE0cHg7cG9zaXRpb246YWJzb2x1dGU7cmlnaHQ6NnB4O3RvcDo2cHh9LnA0cHZUZHtjb2xvcjpyZ2IoMzIsMzMsMzYpO2ZvbnQtZmFtaWx5Okdvb2dsZSBTYW5zIERpc3BsYXksUm9ib3RvLEFyaWFsLHNhbnMtc2VyaWY7Zm9udC1zaXplOjE2cHg7Zm9udC13ZWlnaHQ6NDAwO2xpbmUtaGVpZ2h0OjI4cHg7bWFyZ2luOjAgMCAxNHB4O3RleHQtYWxpZ246Y2VudGVyO2xldHRlci1zcGFjaW5nOi4xcHh9LkJIOXJuey1tb3otYm94LWFsaWduOmNlbnRlcjthbGlnbi1pdGVtczpjZW50ZXI7ZGlzcGxheTotbW96LWlubGluZS1ib3g7ZGlzcGxheTppbmxpbmUtZmxleDstbW96LWJveC1vcmllbnQ6aG9yaXpvbnRhbDstbW96LWJveC1kaXJlY3Rpb246bm9ybWFsO2ZsZXgtZGlyZWN0aW9uOnJvdzstbW96LWJveC1mbGV4OjE7ZmxleC1ncm93OjE7LW1vei1ib3gtcGFjazppbml0aWFsO2p1c3RpZnktY29udGVudDpub3JtYWw7cGFkZGluZy10b3A6MTZweH0uTnJkUVZle2JhY2tncm91bmQ6cmdiKDI0OCwyNDksMjUwKTtib3JkZXI6MXB4IGRhc2hlZCAjYzBjMGMwO2JvcmRlci1yYWRpdXM6OHB4Oy1tb3otYm94LXNpemluZzpib3JkZXItYm94O2JveC1zaXppbmc6Ym9yZGVyLWJveDtkaXNwbGF5Oi1tb3otYm94O2Rpc3BsYXk6ZmxleDstbW96LWJveC1vcmllbnQ6dmVydGljYWw7LW1vei1ib3gtZGlyZWN0aW9uOm5vcm1hbDtmbGV4LWRpcmVjdGlvbjpjb2x1bW47LW1vei1ib3gtZmxleDoxO2ZsZXgtZ3JvdzoxO2hlaWdodDoyODBweDtwb3NpdGlvbjpyZWxhdGl2ZTt3aWR0aDoxMDAlfS5wWkJORmV7Ym9yZGVyOjFweCBkYXNoZWQgI2MwYzBjMH0uTU9XeVFle2JvcmRlcjoxcHggZGFzaGVkICNjMGMwYzB9LmY2R0Ewe2hlaWdodDoxMDAlOy1tb3otYm94LXBhY2s6Y2VudGVyO2p1c3RpZnktY29udGVudDpjZW50ZXI7bWFyZ2luLXRvcDowfS5DYWNmQiwuZjZHQTB7LW1vei1ib3gtYWxpZ246Y2VudGVyO2FsaWduLWl0ZW1zOmNlbnRlcjtkaXNwbGF5Oi1tb3otYm94O2Rpc3BsYXk6ZmxleDstbW96LWJveC1vcmllbnQ6dmVydGljYWw7LW1vei1ib3gtZGlyZWN0aW9uOm5vcm1hbDtmbGV4LWRpcmVjdGlvbjpjb2x1bW59LkNhY2ZCLC5VYTdZdWYsLmY2R0Ewe2JvcmRlci1yYWRpdXM6OHB4Oy1tb3otYm94LWZsZXg6MTtmbGV4LWdyb3c6MX0uQ2FjZkJ7YmFja2dyb3VuZDojZjBmNmZmOy1tb3otYm94LXBhY2s6Y2VudGVyO2p1c3RpZnktY29udGVudDpjZW50ZXI7aGVpZ2h0OjEwMCU7d2lkdGg6MTAwJX0uWmVWQnRje2NvbG9yOnJnYig5NSw5OSwxMDQpO2ZvbnQtZmFtaWx5Okdvb2dsZSBTYW5zLFJvYm90byxBcmlhbCxzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNnB4O2xpbmUtaGVpZ2h0OjI1cHg7bWF4LXdpZHRoOjMwMHB4fS5hbFRCUWV7LW1vei1ib3gtYWxpZ246Y2VudGVyO2FsaWduLWl0ZW1zOmNlbnRlcjtiYWNrZ3JvdW5kLWNvbG9yOnJnYigyNTIsMjMyLDIzMCk7Ym9yZGVyLXRvcC1sZWZ0LXJhZGl1czo4cHg7Ym9yZGVyLXRvcC1yaWdodC1yYWRpdXM6OHB4Oy1tb3otYm94LXBhY2s6anVzdGlmeTtqdXN0aWZ5LWNvbnRlbnQ6c3BhY2UtYmV0d2VlbjtsZWZ0OjA7cG9zaXRpb246YWJzb2x1dGU7cmlnaHQ6MDt0b3A6MH0uT0h6V2pie2NvbG9yOnJnYigxNzksMjAsMTgpOy1tb3otYm94LWZsZXg6MTtmbGV4OjE7Zm9udC1mYW1pbHk6R29vZ2xlIFNhbnMsUm9ib3RvLEFyaWFsLHNhbnMtc2VyaWY7Zm9udC1zaXplOjEycHg7cGFkZGluZzo1cHg7dGV4dC1hbGlnbjpjZW50ZXJ9LlVhN1l1ZnstbW96LWJveC1hbGlnbjpjZW50ZXI7YWxpZ24taXRlbXM6Y2VudGVyO2FsaWduLXNlbGY6Y2VudGVyO2JhY2tncm91bmQ6I2YwZjZmZjtkaXNwbGF5Oi1tb3otYm94O2Rpc3BsYXk6ZmxleDstbW96LWJveC1mbGV4OjE7ZmxleDoxOy1tb3otYm94LW9yaWVudDp2ZXJ0aWNhbDstbW96LWJveC1kaXJlY3Rpb246bm9ybWFsO2ZsZXgtZGlyZWN0aW9uOmNvbHVtbjtoZWlnaHQ6MTAwJTstbW96LWJveC1wYWNrOmNlbnRlcjtqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyO3dpZHRoOjEwMCV9LndISDhhZntjb2xvcjpyZ2IoOTUsOTksMTA0KTtmb250LWZhbWlseTpHb29nbGUgU2FucyxSb2JvdG8sQXJpYWwsc2Fucy1zZXJpZjtmb250LXNpemU6MTZweDtsaW5lLWhlaWdodDoyNXB4O21hcmdpbi10b3A6MTJweH0uRFY3dGhle2NvbG9yOnJnYigyNSwxMDMsMjEwKTtjdXJzb3I6cG9pbnRlcn0uRFY3dGhlLlJpRUNmZjpmb2N1c3tvdXRsaW5lOm5vbmV9LkRWN3RoZTpob3Zlcnt0ZXh0LWRlY29yYXRpb246dW5kZXJsaW5lfS5EVjd0aGU6Zm9jdXN7dGV4dC1kZWNvcmF0aW9uOnVuZGVybGluZX0uQXJJQVhie2ZpbGw6cmdiKDI0MSwyNDMsMjQ0KX0ucU9GTHNie2ZpbGw6cmdiKDIxOCwyMjAsMjI0KX0uQXllMWt7d2lkdGg6aW5oZXJpdDtwb3NpdGlvbjpyZWxhdGl2ZTtkaXNwbGF5OmJsb2NrfS5SYW9VVWV7ZGlzcGxheTotbW96LWlubGluZS1ib3g7ZGlzcGxheTppbmxpbmUtZmxleDttYXJnaW4tcmlnaHQ6MThweH0uZThFdWxley1tb3otYm94LXNpemluZzpib3JkZXItYm94O2JveC1zaXppbmc6Ym9yZGVyLWJveDtkaXNwbGF5Oi1tb3otYm94O2Rpc3BsYXk6ZmxleDstbW96LWJveC1vcmllbnQ6dmVydGljYWw7LW1vei1ib3gtZGlyZWN0aW9uOm5vcm1hbDtmbGV4LWRpcmVjdGlvbjpjb2x1bW47cGFkZGluZzowIDIwcHggMjBweDt3aWR0aDoxMDAlfS5ZSngyNXstbW96LWJveC1hbGlnbjpjZW50ZXI7YWxpZ24taXRlbXM6Y2VudGVyO2Rpc3BsYXk6LW1vei1ib3g7ZGlzcGxheTpmbGV4fS5kaU9sSWV7Ym9yZGVyLXRvcDoxcHggc29saWQgcmdiKDIzMiwyMzQsMjM3KTstbW96LWJveC1mbGV4OjE7ZmxleC1ncm93OjE7aGVpZ2h0OjB9LmFISzFiZHtjb2xvcjpyZ2IoOTUsOTksMTA0KTtjdXJzb3I6ZGVmYXVsdDtmbGV4LXNocmluazowO2ZvbnQtZmFtaWx5Okdvb2dsZSBTYW5zIERpc3BsYXksUm9ib3RvLEFyaWFsLHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHg7bWFyZ2luLWxlZnQ6MjBweDttYXJnaW4tcmlnaHQ6MjBweH0uUFhUNmNke2Rpc3BsYXk6LW1vei1ib3g7ZGlzcGxheTpmbGV4O21hcmdpbi10b3A6MTRweH0uY0I5TTd7YmFja2dyb3VuZC1jb2xvcjojZmZmO2JvcmRlcjoxcHggc29saWQgcmdiKDIxOCwyMjAsMjI0KTtjb2xvcjpyZ2IoNjAsNjQsNjcpO2JvcmRlci1yYWRpdXM6MzZweDtkaXNwbGF5Oi1tb3otaW5saW5lLWJveDtkaXNwbGF5OmlubGluZS1mbGV4Oy1tb3otYm94LWZsZXg6MTtmbGV4LWdyb3c6MTtmb250LXNpemU6MTRweDtmb250LWZhbWlseTpHb29nbGUgU2FucyBEaXNwbGF5LFJvYm90byxBcmlhbCxzYW5zLXNlcmlmO2hlaWdodDo0MHB4O3BhZGRpbmc6MCAyNHB4O3dpZHRoOjEwMCU7b3V0bGluZTpub25lfS5jQjlNNyA6Oi1tb3otcGxhY2Vob2xkZXJ7Y29sb3I6cmdiKDEyOCwxMzQsMTM5KX0uY0I5TTcgOjpwbGFjZWhvbGRlcntjb2xvcjpyZ2IoMTI4LDEzNCwxMzkpfS5jQjlNNzpob3Zlcntib3JkZXI6MXB4IHNvbGlkIHJnYig2MCw2NCw2Nyl9LmNCOU03OmZvY3Vze2JvcmRlcjoxcHggc29saWQgcmdiKDI1LDEwMywyMTApfS5jQjlNNzphY3RpdmV7Ym9yZGVyOjFweCBzb2xpZCByZ2IoMjUsMTAzLDIxMCl9LlF3YmQzey1tb3otYm94LWFsaWduOmNlbnRlcjthbGlnbi1pdGVtczpjZW50ZXI7YmFja2dyb3VuZDojZmZmO2JvcmRlci1yYWRpdXM6MzJweDtib3JkZXI6MXB4IHNvbGlkIHJnYigyMTgsMjIwLDIyNCk7Y29sb3I6cmdiKDI2LDExNSwyMzIpO2N1cnNvcjpwb2ludGVyO2Rpc3BsYXk6LW1vei1pbmxpbmUtYm94O2Rpc3BsYXk6aW5saW5lLWZsZXg7ZmxleC1zaHJpbms6MDtmb250LWZhbWlseTpHb29nbGUgU2FucyxSb2JvdG8sQXJpYWwsc2Fucy1zZXJpZjtmb250LXNpemU6MTRweDstbW96LWJveC1wYWNrOmNlbnRlcjtqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyO2xldHRlci1zcGFjaW5nOi4yNXB4O21hcmdpbi1sZWZ0OjhweDtvdXRsaW5lOjA7cGFkZGluZzo4cHggMjRweH0uUXdiZDM6aG92ZXJ7YmFja2dyb3VuZDpyZ2JhKDI1LDEwMywyMTAsMC4wOCk7Y29sb3I6cmdiKDI2LDExNSwyMzIpO2JvcmRlcjoxcHggc29saWQgcmdiKDIxOCwyMjAsMjI0KX0uUXdiZDM6Zm9jdXN7YmFja2dyb3VuZDpyZ2JhKDI1LDEwMywyMTAsMC4wOCk7Ym9yZGVyOjFweCBzb2xpZCByZ2IoMjUsMTAzLDIxMCk7Y29sb3I6cmdiKDI2LDExNSwyMzIpfS5Rd2JkMzphY3RpdmV7YmFja2dyb3VuZDpyZ2JhKDI1LDEwMywyMTAsMC4xNCk7Ym9yZGVyOjFweCBzb2xpZCByZ2IoMjE4LDIyMCwyMjQpO2NvbG9yOnJnYigyNiwxMTUsMjMyKX1zZW50aW5lbHt9"}},"time_used":10,"timings":{"blocked":0,"dns":0,"connect":0,"send":0,"wait":10,"receive":0,"ssl":0},"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"www.google.com/gen_204?atyp=i\u0026ei=Y3pnarTELeimwPAPo6StkA4\u0026vet=10ahUKEwj0gZKal_OVAxVoExAIHSNSC-IQuqMJCJwB..s\u0026bl=_SWN\u0026s=webhp\u0026lpl=CAUQARgAMBI4A2IHCAIQgOiSJg\u0026zx=1785166437159\u0026opi=89978449","fqdn":"www.google.com","domain":"google.com","tld":"com"},"ip":{"addr":"142.251.157.119","port":443,"asn":15169,"as":"GOOGLE","country":"United States","country_code":"US"},"is_navigation_request":false,"resource_type":"beacon","requested_by":"https://www.google.com/","date":"2026-07-27T15:33:57.187Z","timestamp":1785166437187,"http_version":"HTTP/3","security_state":"secure","security_info":{"cipher_suite":"TLS_AES_128_GCM_SHA256","key_group_name":"mlkem768x25519","signature_name":"ECDSA-P256-SHA256","protocol":"TLSv1.3","cert":{"subject":{"commonName":"*.google.com","organization":""},"issuer":{"commonName":"WR2","organization":"Google Trust Services"},"validity":{"start":"Mon, 29 Jun 2026 08:37:25 GMT","end":"Mon, 21 Sep 2026 08:37:24 GMT"},"fingerprint":{"sha1":"D9:DA:81:30:78:3E:9C:6B:5F:9D:18:52:0E:BE:6D:52:2F:FB:33:E0","sha256":"EA:E2:2D:87:EC:9C:D6:51:9D:59:E4:13:35:3B:97:14:E3:DA:58:2D:1C:69:19:41:54:94:25:C3:94:17:F3:0C"}}},"request":{"raw":"POST /gen_204?atyp=i\u0026ei=Y3pnarTELeimwPAPo6StkA4\u0026vet=10ahUKEwj0gZKal_OVAxVoExAIHSNSC-IQuqMJCJwB..s\u0026bl=_SWN\u0026s=webhp\u0026lpl=CAUQARgAMBI4A2IHCAIQgOiSJg\u0026zx=1785166437159\u0026opi=89978449 HTTP/1.1\r\nHost: www.google.com\r\nUser-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:134.0) Gecko/20100101 Firefox/134.0\r\nAccept: */*\r\nAccept-Language: en-US,en;q=0.9\r\nAccept-Encoding: gzip, deflate, br, zstd\r\nReferer: https://www.google.com/\r\nOrigin: https://www.google.com\r\nSec-GPC: 1\r\nConnection: keep-alive\r\nCookie: AEC=AdJVEauUsWHpfGAsUyeilL8EI9I2Tr9FfEzOqXuEJToXYpKe1KUK4km-Sg; __Secure-ENID=35.SE=Y_fs7GGaQFs5VFS1Srk0O5HomBGnVvSvp_o-rK3Am89F7jST0q2gQCa-M2gCxRk_RBjJksMh8YwWZDFw6RfcbCeBYtqlTvos6MvDyL0vbheeaZHlJlF3BR2G5kruhoHre_VO9emvjcRgOiD0eMH_wgHEfSKU-zQvglvx9fcoejE2yypfhg2tPUPVvlmUpN-CV5a7002cW6ZslC01vtYrwve2XCNHFFzwCEs876fojdvGEQOKEx9xE4f1ASBTSBOWDkt2Ow\r\nSec-Fetch-Dest: empty\r\nSec-Fetch-Mode: no-cors\r\nSec-Fetch-Site: same-origin\r\nPriority: u=6\r\nContent-Length: 0\r\n\r\n","headers":null,"cookies":null,"method":"POST"},"response":{"raw":"HTTP/3 204 \r\ncontent-type: text/html; charset=UTF-8\r\ncontent-security-policy: object-src 'none';base-uri 'self';script-src 'nonce-GKWyHGKkS0E6vs90pva50w' 'strict-dynamic' 'report-sample' 'unsafe-eval' 'unsafe-inline' https: http:;report-uri https://csp.withgoogle.com/csp/gws/other\r\ncross-origin-opener-policy: same-origin-allow-popups; report-to=\"gws\"\r\nreport-to: {\"group\":\"gws\",\"max_age\":2592000,\"endpoints\":[{\"url\":\"https://csp.withgoogle.com/csp/report-to/gws/other\"}]}\r\ndate: Mon, 27 Jul 2026 15:33:57 GMT\r\nserver: gws\r\ncontent-length: 0\r\nx-xss-protection: 0\r\nx-frame-options: SAMEORIGIN\r\nalt-svc: h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000\r\n\r\n","headers":null,"cookies":null,"status_code":"204","status_text":"","fingerprints":[{"name":"Google Web Server","description":"","website":"https://en.wikipedia.org/wiki/Google_Web_Server","common_platform_enumeration":"cpe:2.3:a:google:web_server:*:*:*:*:*:*:*:*","icon":"Google.svg","categories":["Web servers"]}],"data":{"size":0,"size_decoded":653,"mime_type":"text/html; charset=UTF-8","magic":"","md5":"d41d8cd98f00b204e9800998ecf8427e","sha1":"da39a3ee5e6b4b0d3255bfef95601890afd80709","sha256":"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855","sha512":"cf83e1357eefb8bdf1542850d66d8007d620e4050b5715dc83f4a921d36ce9ce47d0d13c5d85f2b0ff8318d2877eec2f63b931bd47417a81a538327af927da3e","ssdeep":"","tlshash":"","first_seen":"0001-01-01T00:00:00Z","last_seen":"2026-08-16T23:46:43.370624Z","times_seen":17926730,"resource_available":true,"data":""}},"time_used":20,"timings":{"blocked":-1,"dns":0,"connect":0,"send":0,"wait":20,"receive":0,"ssl":0},"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"www.google.com/xjs/_/js/k=xjs.hd.no.ZJX-0yQnO-M.2019.O/am=AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgQAAAAABBAAAAAAAAAAAAAAAYAAgAAAAAAAAAAAAAAAAAAIAAQQAAIAAAAAAAAAAAEAAAAAAABAAACAAAYAAAAQABFAAAAAMAAAAAAAAAAAAAAAAAAAAAgBAAAABCAADwBwZYAQAAAAAAAAASADAAAAAAAAAAFgAAIAEAAAAEQAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAABgAAAAAAKAAAAABAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAgAAACgAACAAAAgAAAAAAAAAAAAAAAACgAwAAAAADAAAAAAAAAAAAAAAAAAAACAAAQIAAAAAAAAAAAAQACAAAAEAHQOABhhQUAAAAAAAAAAAAAAAAAAAAAAAAAAACLIBdSAEBEAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAyAkAAAAAAICF/d=1/ed=1/dg=4/br=1/rs=ACT90oEp9PejxfBZZRK7SiiesZRt_H0TFw/ee=ALeJib:B8gLwd;AfeaP:TkrAjf;BMxAGc:E5bFse;BgS6mb:fidj5d;BjwMce:cXX2Wb;CIZTGb:Kqhykb;CxXAWb:YyRLvc;DQEued:Fevhcf;DULqB:RKfG5c;Dkk6ge:JZmW9e;DpcR3d:zL72xf;EABSZ:MXZt9d;ESrPQc:mNTJvc;EVNhjf:pw70Gc;EjXHpb:pSHqh;EmZ2Bf:zr1jrb;EnlcNd:WeHg4;F54IAe:ZgsFh;F9mqte:UoRcbe;FSxmUe:fiZR8b;Fkukfc:i8H2c;Fmv9Nc:O1Tzwc;G0KhTb:LIaoZ;GleZL:J1A7Od;HMDDWe:G8QUdb;HtPxrd:Gx8jAb;IBADCc:RYquRb;IoGlCf:b5lhvb;IsdWVc:qzxzOb;JXJSm:ii1RGf;JXS8fb:Qj0suc;JqSq7d:y9ePhe;JsbNhc:Xd8iUd;K08hxe:zmbGlf;K5nYTd:ZDZcre;KA3P2:C3JnCe;KDb6nb:fE9n2;KOxcK:OZqGte;KQzWid:ZMKkN;KdIHef:BWtNj;KpRAue:Tia57b;LBgRLc:SdcwHb,XVMNvd;LBn8Cf:bJ9L0c;LEikZe:byfTOb,lsjVmc;LXA8b:q7OdKd;LsNahb:ucGLNb;MNkAde:KMCd1d;NJ1rfe:qTnoBf;NPKaK:SdcwHb;NSEoX:lazG7b;NjIwef:YVgi7d;Np8Qkd:Dpx6qc;Nyt6ic:jn2sGd;OIfWUb:qfOYcd;OgagBe:cNTe0;OiqE2c:TFpEK;OoK5v:Sp69O;OohIYe:mpEAQb;Pjplud:PoEs9b;PpTLXd:pJYjx;Q1Ow7b:x5CSu;Q7iJ9c:bVLZ3d;QE20Be:gIltO;QFOGlf:PQ2Aoe;QGR0gd:Mlhmy;QYLF2b:pAQYUd;Qw8Feb:jpavUe;R4IIIb:QWfeKf;R9Ulx:CR7Ufe;RCF5Sd:X1kBmd;Raf5me:mgvFMc;SLtqO:Kh1xYe;SMDL4c:fTfGO;SNUn3:ZwDk9d,xD8Kp;SNk4Je:wWMhg;ScI3Yc:e7Hzgb,e7Hzgb;ShpF6e:N0pvGc;Snahre:mGCtob;SwCqAd:fXbCZc;SzQQ3e:dNhofb;TIUVQd:lWTJwd;TroZ1d:vVVzjb;U96pRd:FsR04;UBKJZ:LGDJGb;UDrY1c:N0F29d,W50NVd,eps46d,wciyUe;UVmjEd:EesRsb;UVzb9c:IvPZ6d;UYRIEb:HzTAQc;UyG7Kb:wQd0G;V2HTTe:RolTY;VGRfx:VFqbr;VMuEm:pL7sBc;VN6jIc:ddQyuf;VOcgDe:YquhTb;VhA7bd:vAmQFf;VsAqSb:PGf2Re;W9QSQe:ynCWwc;WDGyFe:jcVOxd;WXtNeb:QU9BMd;Wfmdue:g3MJlb;Wl55ib:vgbiKb;Y3c5sd:FGbfLe;YIZmRd:A1yn5d;YV5bee:IvPZ6d;YnHUBf:sNsSob;ZSH6tc:QAvyLe;ZWEUA:afR4Cf;ZlOOMb:P0I0Ec;a56pNe:JEfCwb;aAJE9c:WHW6Ef;aCJ9tf:qKftvc;aVZq3e:EMeVIb;aZ61od:arTwJ;aci7y:Z5Tr6c;bUIkwb:WMwEHe;bcPXSc:gSZLJb;cEt90b:ws9Tlc;cFTWae:gT8qnd;dIoSBb:ZgGg9b;dLlj2:Qqt3Gf;dXdZV:a7QTqd;dowIGb:ebZ3mb,ebZ3mb;dtl0hd:lLQWFe;eBAeSb:Ck63tb;eBZ5Nd:audvde;eHDfl:ofjVkb;eJKchc:ATg1be;eO3lse:UefOmb;euOXY:OZjbQ;g8nkx:U4MzKc;gaub4:TN6bMe;gbfHR:qZtzib;gtVSi:ekUOYd;h3MYod:ws9Tlc;hK67qb:QWEO5b;hVic1b:Kqhykb;heHB1:sFczq;hjRo6e:F62sG;hlqGX:FWz1ic;hsLsYc:Vl118;hwoVHd:zw4U8c;iFQyKf:QIhFr;jJj2G:kF2o2b;k1O0rf:pnOULd;k2Qxcb:XY51pe;kbAm9d:MkHyGd;lOO0Vd:OTA3Ae;lbfkyf:MqGdUd;liAz7d:kF2o2b;mMVOGb:qDM7K;mWzs9c:fz5ukf;nBZnZe:CvErjb;nE6OJf:Fi4rsc;nEBWNb:MxKX9d;nJw4Gd:dPFZH;nrDcw:SuEoDe;oGtAuc:sOXFj;oSUNyd:fTfGO,fTfGO;oUlnpc:RagDlc;oiBhre:OuMkRd;okUaUd:wItadb;pKJiXd:VCenhc;pNsl2d:j9Yuyc;pXdRYb:JKoKVe;pj82le:ww04Df;qGV2uc:HHi04c;qQEoOc:KUM7Z,d7YSfd;qZx2Fc:j0xrE;qaS3gd:yiLg6e;qafBPd:sgY6Zb;qavrXe:I0C9u;qddgKe:d7YSfd,x4FYXe;rdexKf:FEkKD;rmWaj:PMS6Sd;ropkZ:UT1DG;sTsDMc:kHVSUb;sZmdvc:rdGEfc;tH4IIe:Ymry6;teSRSb:BMLai;tosKvd:ZCqP3;trZL0b:qY8PFe;uuQkY:u2V3ud;vEYCNb:FaqsVd;vRlMvf:Iw9Xo;vfVwPd:lcrkwe;w3bZCb:ZPGaIb;w9w86d:XwhUEb,dt4g2b,gKD90c,lWVZVe;wQlYve:aLUfP;wR5FRb:O1Gjze,TtcOte;wV5Pjc:L8KGxe;x9N9ie:KH4Qof;xBbsrc:NEW1Qc;xpaRob:AVqZ9b;yiL5Ab:MT0ZBd;ysNiMc:CpIBjd;yxTchf:KUM7Z;z97YGf:oug9te;zaIgPb:Sl0pxd/m=cdos,hsm,jsa,mb4ZUb,cEt90b,SNUn3,qddgKe,sTsDMc,dtl0hd,eHDfl,YV5bee,d,csi?cb=121509378","fqdn":"www.google.com","domain":"google.com","tld":"com"},"ip":{"addr":"142.251.157.119","port":443,"asn":15169,"as":"GOOGLE","country":"United States","country_code":"US"},"is_navigation_request":false,"resource_type":"script","requested_by":"https://www.google.com/","date":"2026-07-27T15:33:56.068Z","timestamp":1785166436068,"http_version":"HTTP/3","security_state":"secure","security_info":{"cipher_suite":"TLS_AES_128_GCM_SHA256","key_group_name":"mlkem768x25519","signature_name":"ECDSA-P256-SHA256","protocol":"TLSv1.3","cert":{"subject":{"commonName":"*.google.com","organization":""},"issuer":{"commonName":"WR2","organization":"Google Trust Services"},"validity":{"start":"Mon, 29 Jun 2026 08:37:25 GMT","end":"Mon, 21 Sep 2026 08:37:24 GMT"},"fingerprint":{"sha1":"D9:DA:81:30:78:3E:9C:6B:5F:9D:18:52:0E:BE:6D:52:2F:FB:33:E0","sha256":"EA:E2:2D:87:EC:9C:D6:51:9D:59:E4:13:35:3B:97:14:E3:DA:58:2D:1C:69:19:41:54:94:25:C3:94:17:F3:0C"}}},"request":{"raw":"GET /xjs/_/js/k=xjs.hd.no.ZJX-0yQnO-M.2019.O/am=AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgQAAAAABBAAAAAAAAAAAAAAAYAAgAAAAAAAAAAAAAAAAAAIAAQQAAIAAAAAAAAAAAEAAAAAAABAAACAAAYAAAAQABFAAAAAMAAAAAAAAAAAAAAAAAAAAAgBAAAABCAADwBwZYAQAAAAAAAAASADAAAAAAAAAAFgAAIAEAAAAEQAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAABgAAAAAAKAAAAABAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAgAAACgAACAAAAgAAAAAAAAAAAAAAAACgAwAAAAADAAAAAAAAAAAAAAAAAAAACAAAQIAAAAAAAAAAAAQACAAAAEAHQOABhhQUAAAAAAAAAAAAAAAAAAAAAAAAAAACLIBdSAEBEAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAyAkAAAAAAICF/d=1/ed=1/dg=4/br=1/rs=ACT90oEp9PejxfBZZRK7SiiesZRt_H0TFw/ee=ALeJib:B8gLwd;AfeaP:TkrAjf;BMxAGc:E5bFse;BgS6mb:fidj5d;BjwMce:cXX2Wb;CIZTGb:Kqhykb;CxXAWb:YyRLvc;DQEued:Fevhcf;DULqB:RKfG5c;Dkk6ge:JZmW9e;DpcR3d:zL72xf;EABSZ:MXZt9d;ESrPQc:mNTJvc;EVNhjf:pw70Gc;EjXHpb:pSHqh;EmZ2Bf:zr1jrb;EnlcNd:WeHg4;F54IAe:ZgsFh;F9mqte:UoRcbe;FSxmUe:fiZR8b;Fkukfc:i8H2c;Fmv9Nc:O1Tzwc;G0KhTb:LIaoZ;GleZL:J1A7Od;HMDDWe:G8QUdb;HtPxrd:Gx8jAb;IBADCc:RYquRb;IoGlCf:b5lhvb;IsdWVc:qzxzOb;JXJSm:ii1RGf;JXS8fb:Qj0suc;JqSq7d:y9ePhe;JsbNhc:Xd8iUd;K08hxe:zmbGlf;K5nYTd:ZDZcre;KA3P2:C3JnCe;KDb6nb:fE9n2;KOxcK:OZqGte;KQzWid:ZMKkN;KdIHef:BWtNj;KpRAue:Tia57b;LBgRLc:SdcwHb,XVMNvd;LBn8Cf:bJ9L0c;LEikZe:byfTOb,lsjVmc;LXA8b:q7OdKd;LsNahb:ucGLNb;MNkAde:KMCd1d;NJ1rfe:qTnoBf;NPKaK:SdcwHb;NSEoX:lazG7b;NjIwef:YVgi7d;Np8Qkd:Dpx6qc;Nyt6ic:jn2sGd;OIfWUb:qfOYcd;OgagBe:cNTe0;OiqE2c:TFpEK;OoK5v:Sp69O;OohIYe:mpEAQb;Pjplud:PoEs9b;PpTLXd:pJYjx;Q1Ow7b:x5CSu;Q7iJ9c:bVLZ3d;QE20Be:gIltO;QFOGlf:PQ2Aoe;QGR0gd:Mlhmy;QYLF2b:pAQYUd;Qw8Feb:jpavUe;R4IIIb:QWfeKf;R9Ulx:CR7Ufe;RCF5Sd:X1kBmd;Raf5me:mgvFMc;SLtqO:Kh1xYe;SMDL4c:fTfGO;SNUn3:ZwDk9d,xD8Kp;SNk4Je:wWMhg;ScI3Yc:e7Hzgb,e7Hzgb;ShpF6e:N0pvGc;Snahre:mGCtob;SwCqAd:fXbCZc;SzQQ3e:dNhofb;TIUVQd:lWTJwd;TroZ1d:vVVzjb;U96pRd:FsR04;UBKJZ:LGDJGb;UDrY1c:N0F29d,W50NVd,eps46d,wciyUe;UVmjEd:EesRsb;UVzb9c:IvPZ6d;UYRIEb:HzTAQc;UyG7Kb:wQd0G;V2HTTe:RolTY;VGRfx:VFqbr;VMuEm:pL7sBc;VN6jIc:ddQyuf;VOcgDe:YquhTb;VhA7bd:vAmQFf;VsAqSb:PGf2Re;W9QSQe:ynCWwc;WDGyFe:jcVOxd;WXtNeb:QU9BMd;Wfmdue:g3MJlb;Wl55ib:vgbiKb;Y3c5sd:FGbfLe;YIZmRd:A1yn5d;YV5bee:IvPZ6d;YnHUBf:sNsSob;ZSH6tc:QAvyLe;ZWEUA:afR4Cf;ZlOOMb:P0I0Ec;a56pNe:JEfCwb;aAJE9c:WHW6Ef;aCJ9tf:qKftvc;aVZq3e:EMeVIb;aZ61od:arTwJ;aci7y:Z5Tr6c;bUIkwb:WMwEHe;bcPXSc:gSZLJb;cEt90b:ws9Tlc;cFTWae:gT8qnd;dIoSBb:ZgGg9b;dLlj2:Qqt3Gf;dXdZV:a7QTqd;dowIGb:ebZ3mb,ebZ3mb;dtl0hd:lLQWFe;eBAeSb:Ck63tb;eBZ5Nd:audvde;eHDfl:ofjVkb;eJKchc:ATg1be;eO3lse:UefOmb;euOXY:OZjbQ;g8nkx:U4MzKc;gaub4:TN6bMe;gbfHR:qZtzib;gtVSi:ekUOYd;h3MYod:ws9Tlc;hK67qb:QWEO5b;hVic1b:Kqhykb;heHB1:sFczq;hjRo6e:F62sG;hlqGX:FWz1ic;hsLsYc:Vl118;hwoVHd:zw4U8c;iFQyKf:QIhFr;jJj2G:kF2o2b;k1O0rf:pnOULd;k2Qxcb:XY51pe;kbAm9d:MkHyGd;lOO0Vd:OTA3Ae;lbfkyf:MqGdUd;liAz7d:kF2o2b;mMVOGb:qDM7K;mWzs9c:fz5ukf;nBZnZe:CvErjb;nE6OJf:Fi4rsc;nEBWNb:MxKX9d;nJw4Gd:dPFZH;nrDcw:SuEoDe;oGtAuc:sOXFj;oSUNyd:fTfGO,fTfGO;oUlnpc:RagDlc;oiBhre:OuMkRd;okUaUd:wItadb;pKJiXd:VCenhc;pNsl2d:j9Yuyc;pXdRYb:JKoKVe;pj82le:ww04Df;qGV2uc:HHi04c;qQEoOc:KUM7Z,d7YSfd;qZx2Fc:j0xrE;qaS3gd:yiLg6e;qafBPd:sgY6Zb;qavrXe:I0C9u;qddgKe:d7YSfd,x4FYXe;rdexKf:FEkKD;rmWaj:PMS6Sd;ropkZ:UT1DG;sTsDMc:kHVSUb;sZmdvc:rdGEfc;tH4IIe:Ymry6;teSRSb:BMLai;tosKvd:ZCqP3;trZL0b:qY8PFe;uuQkY:u2V3ud;vEYCNb:FaqsVd;vRlMvf:Iw9Xo;vfVwPd:lcrkwe;w3bZCb:ZPGaIb;w9w86d:XwhUEb,dt4g2b,gKD90c,lWVZVe;wQlYve:aLUfP;wR5FRb:O1Gjze,TtcOte;wV5Pjc:L8KGxe;x9N9ie:KH4Qof;xBbsrc:NEW1Qc;xpaRob:AVqZ9b;yiL5Ab:MT0ZBd;ysNiMc:CpIBjd;yxTchf:KUM7Z;z97YGf:oug9te;zaIgPb:Sl0pxd/m=cdos,hsm,jsa,mb4ZUb,cEt90b,SNUn3,qddgKe,sTsDMc,dtl0hd,eHDfl,YV5bee,d,csi?cb=121509378 HTTP/1.1\r\nHost: www.google.com\r\nUser-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:134.0) Gecko/20100101 Firefox/134.0\r\nAccept: */*\r\nAccept-Language: en-US,en;q=0.9\r\nAccept-Encoding: gzip, deflate, br, zstd\r\nReferer: https://www.google.com/\r\nSec-GPC: 1\r\nConnection: keep-alive\r\nCookie: AEC=AdJVEauUsWHpfGAsUyeilL8EI9I2Tr9FfEzOqXuEJToXYpKe1KUK4km-Sg; __Secure-ENID=35.SE=AbigeV3aJ0m6xMobN92AbNZpW8pBnglGTPw_dz_A9WWyoDaiBBZPKRYUFk43qYtDkrYoTgVKiKtyKOguRjujzVzhuA6WYYbk-i87vjK7wNHmdliDMhNspbLvs4LU7H3yif4utRnzW3A5pWS7luM5rorSqU-pj8vCqCmdLtP-tPTBFRmS_IwoinM092pFPLFq5WUhH_JzQWk4Nj64_cv8DwX9Gzz3yPDcXsoOsZMMsbp3c373u3CG8Y4REmw\r\nSec-Fetch-Dest: script\r\nSec-Fetch-Mode: no-cors\r\nSec-Fetch-Site: same-origin\r\nPragma: no-cache\r\nCache-Control: no-cache\r\n\r\n","headers":null,"cookies":null,"method":"GET"},"response":{"raw":"HTTP/3 200 \r\naccept-ranges: bytes\r\ncontent-encoding: br\r\ncontent-security-policy-report-only: require-trusted-types-for 'script'; report-uri https://csp.withgoogle.com/csp/gws-team\r\ncross-origin-resource-policy: cross-origin\r\ncross-origin-opener-policy: same-origin; report-to=\"gws-team\"\r\nreport-to: {\"group\":\"gws-team\",\"max_age\":2592000,\"endpoints\":[{\"url\":\"https://csp.withgoogle.com/csp/report-to/gws-team\"}]}\r\ncontent-length: 389332\r\nx-content-type-options: nosniff\r\nserver: sffe\r\nx-xss-protection: 0\r\ndate: Sat, 25 Jul 2026 02:18:58 GMT\r\nexpires: Sun, 25 Jul 2027 02:18:58 GMT\r\ncache-control: public, immutable, max-age=31536000\r\nlast-modified: Sat, 25 Jul 2026 01:57:35 GMT\r\ncontent-type: text/javascript; charset=UTF-8\r\nvary: Accept-Encoding, Origin\r\nage: 220498\r\nalt-svc: h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000\r\n\r\n","headers":null,"cookies":null,"status_code":"200","status_text":"","fingerprints":null,"data":{"size":1099161,"size_decoded":390162,"mime_type":"text/javascript; charset=UTF-8","magic":"JavaScript source, ASCII text, with very long lines (621)","md5":"dcc734ddea2955ff8e017e472b6e969d","sha1":"06b9a5c3a6da4e801eab8930410e65a61f52c267","sha256":"4f35b5e84dbe5a741bf991be77a56ab6a8bd939d8b210f28104eefd2a119c166","sha512":"d6cd9c92e7ac9f59b36f1f7665349f6011911744ac19ac8a7261a834d689fc9d1ecd81e93d0dc1b13abcd32ad044ac9882c37ec3bf74d2bc4e630ba2a8646d09","ssdeep":"24576:F0BMYWnZd/mmqt7sielEb6VrTpypeJ+oL:F0BMYWnUt7sielEb6VrTpypeJ+oL","tlshash":"ab25099873a3b453a276f595416f0287f2beb892f44c886cb5a8d8d17eb084541f7f38","first_seen":"2026-07-25T02:50:28.804621Z","last_seen":"2026-07-27T20:08:12.353164Z","times_seen":200,"resource_available":false,"data":"dGhpcy5faGQ9dGhpcy5faGR8fHt9OyhmdW5jdGlvbihfKXt2YXIgd2luZG93PXRoaXM7CnRyeXsKLyoKCiBDb3B5cmlnaHQgVGhlIENsb3N1cmUgTGlicmFyeSBBdXRob3JzLgogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAKKi8KLyoKCiBDb3B5cmlnaHQgR29vZ2xlIExMQwogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAKKi8KLyoKCiBDb3B5cmlnaHQgMjAyNCBHb29nbGUsIEluYwogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IE1JVAoqLwovKgogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAKKi8KLyoKIENvcHlyaWdodCBUaGUgQ2xvc3VyZSBMaWJyYXJ5IEF1dGhvcnMuCiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMAoqLwovKgoKIENvcHlyaWdodCAyMDA1LCAyMDA3IEJvYiBJcHBvbGl0by4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KIENvcHlyaWdodCBUaGUgQ2xvc3VyZSBMaWJyYXJ5IEF1dGhvcnMuCiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogTUlUCiovCi8qCgogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KCiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuZGV2L2xpY2Vuc2UKKi8KdmFyIGJhYSxjYWEsbmFhLHBhYSxyYWEsc2FhLHRhYSx1YWEsdmFhLHdhYSx4YWEseWFhLENhYSxBYWEsemFhLERhYSxCYWEsRWFhLEdhYSxGYWEsSGFhLElhYSxKYWEsTGFhLE1hYSxjYmEsaWJhLGpiYSxtYmEsa2JhLHFiYSxzYmEsdGJhLHViYSxBYmEsQmJhLEliYSxOYmEsUGJhLFFiYSxPYmEsVGJhLFJiYSxLYmEsVmJhLFdiYSxZYmEsWmJhLGJjYSxkY2EsaGNhLGljYSxrY2EsbGNhLG5jYSxvY2EscGNhLHJjYSxzY2EsdWNhLEFjYSxEY2EsTGNhLE1jYSxKY2EsUGNhLEdjYSxRY2EsRWNhLEhjYSxJY2EsUmNhLFNjYSxVY2EsZGRhLGVkYSxmZGEsZ2RhLGpkYSxpZGEsa2RhLHdkYSxvYixBZGEsemRhLEJkYSxEZGEsRWRhLEdkYSxIZGEsRmRhLExkYSxNZGEsTmRhLE9kYSxQZGEsUWRhLFJkYSxLZGEsU2RhLFZkYSxZZGEsJGRhLGFlYSxoZWEsbmVhLG9lYSxzZWEsSmVhLE1lYSxRZWEsT2VhLFNlYSxQZWEsUmVhLFVlYSxWZWEsdGIsVGVhLGFmYSxXZWEsWWVhLGJmYSxkZmEsamZhLApsZmEsbWZhLG9mYSxwZmEscWZhLCRlYSx5ZmEseGZhLEZmYSxIZmEsSWZhLFFmYSxNZmEsVWZhLFZmYSxYZmEsJGZhLGNnYSxlZ2EsZ2dhLGlnYSxrZ2EsbWdhLHRnYSx3Z2EsemdhLEJnYSxHZ2EsSmdhLExnYSxOZ2EsT2dhLFBnYSxSZ2EsV2dhLFlnYSxaZ2EsYWhhLGJoYSxkaGEsZmhhLGdoYSxpaGEsa2hhLGxoYSxuaGEscGhhLHFoYSxzaGEsdGhhLHpoYSxBaGEsQ2hhLFFoYSxOaGEsU2hhLGZjLFZoYSxaaGEsYmlhLGVpYSxnaWEsQ2Msd2lhLHlpYSxIaWEsTWlhLFBpYSxRaWEsUmlhLFNpYSxUaWEsZmphLGVqYSxramEseWphLEVqYSxIamEsSmphLCRqYSxpa2EsamthLGtrYSxsa2EseGthLHhkLEJrYSxMa2EsTmthLFJrYSxUa2EsY2xhLGlsYSxsbGEsbWxhLHdsYSx2bGEsQmxhLEVsYSxZbGEscm1hLHVtYSx3bWEsem1hLEJtYSxEbWEsRW1hLEttYSxTbWEsWG1hLFJtYSxZbWEsc25hLHRuYSx2bmEsdW5hLHduYSx4bmEsRG5hLEduYSxKbmEsSG5hLExuYSxWbmEsWG5hLFluYSwKWm5hLGFvYSxib2EsZm9hLGlvYSxrb2EsbW9hLG5vYSxyb2Esc29hLFFvYSxSb2EsWG9hLGRwYSxpcGEsbHBhLG5wYSxtcGEsb3BhLHBwYSxxcGEsdHBhLHVwYSx2cGEseHBhLHlwYSx6cGEsQXBhLEVwYSxPcGEsUnBhLFVwYSxWcGEsWHBhLGFxYSwkcGEsY3FhLGRxYSxrcWEsanFhLG5xYSxscWEsb3FhLHFxYSxzcWEsd3FhLHhxYSxwcWEsT3FhLFRxYSxWcWEsV3FhLFlxYSxacWEsZnJhLGNyYSxkcmEsZXJhLGdyYSxhcmEsaXJhLGpyYSxscmEsbnJhLHFyYSx4cmEsenJhLEZyYSxIcmEsRHJhLE9yYSxQcmEsUXJhLFJyYSxacmEsJHJhLGVzYSxZcmEsbHNhLEFzYSxDc2EsenNhLHdzYSxEc2EsQnNhLExzYSxQc2EsU3NhLFVzYSxUc2EsVnNhLFlzYSxhdGEsZHRhLGV0YSxsdGEsbXRhLHB0YSx2dGEsd3RhLHh0YSx5dGEsenRhLEJ0YSxDdGEsVHRhLFB0YSxWdGEsWXRhLFp0YSwkdGEsZnVhLGl1YSxqdWEsa3VhLGx1YSxudWEsc3VhLHh1YSxBdWEsdHVhLEZ1YSxKdWEsS3VhLEx1YSxNdWEsClh1YSxZdWEsWnVhLCR1YSxhdmEsZHZhLGV2YSxndmEsaXZhLG12YSxwdmEsbnZhLHV2YSxDdmEsRHZhLEV2YSxGdmEsWHZhLFl2YSxhd2EsZndhLGd3YSxod2EsbndhLG93YSx1d2EsQ3dhLEd3YSxGd2EsT3dhLFl3YSxad2EsJHdhLGh4YSxseGEsbXhhLHN4YSx3eGEsdHhhLHp4YSxCeGEsRHhhLEV4YSxLeGEsTXhhLFV4YSxXeGEsWnhhLGF5YSxieWEsZXlhLGd5YSxteWEscXlhLHJ5YSxzeWEsdHlhLHZ5YSxBeWEsRXlhLEZ5YSxJeWEsS3lhLFJ5YSxZeWEsJHlhLGF6YSxiemEsZnphLGp6YSxtemEsbnphLHB6YSxzemEsdHphLHV6YSx3emEsQnphLEN6YSxMemEsTXphLFN6YSxWemEsV3phLFp6YSwkemEsYUFhLGJBYSxkQWEsZ0FhLGVBYSxxQWEsdkFhLERBYSxFQWEsRkFhLEdBYSxIQWEsTEFhLEtBYSxNQWEsTkFhLE9BYSxQQWEsUUFhLFJBYTsKXy5iYT1mdW5jdGlvbihhLGIpe2lmKEVycm9yLmNhcHR1cmVTdGFja1RyYWNlKUVycm9yLmNhcHR1cmVTdGFja1RyYWNlKHRoaXMsXy5iYSk7ZWxzZXtsZXQgYz1FcnJvcigpLnN0YWNrO2MmJih0aGlzLnN0YWNrPWMpfWEmJih0aGlzLm1lc3NhZ2U9U3RyaW5nKGEpKTtiIT09dm9pZCAwJiYodGhpcy5jYXVzZT1iKX07Xy5hYWE9ZnVuY3Rpb24oYSxiKXthPWEuc3BsaXQoIiVzIik7dmFyIGM9IiIsZD1hLmxlbmd0aC0xO2ZvcihsZXQgZT0wO2U8ZDtlKyspYys9YVtlXSsoZTxiLmxlbmd0aD9iW2VdOiIlcyIpO18uYmEuY2FsbCh0aGlzLGMrYVtkXSl9O2JhYT1mdW5jdGlvbihhKXt0aHJvdyBFcnJvcigidCIpO307Y2FhPWZ1bmN0aW9uKGEsYil7Yj1TdHJpbmcuZnJvbUNoYXJDb2RlLmFwcGx5KG51bGwsYik7cmV0dXJuIGE9PW51bGw/YjphK2J9OwpfLmdhYT1mdW5jdGlvbihhLGI9ITEpe2lmKGRhYSl7aWYoYiYmKGVhYT8hYS5pc1dlbGxGb3JtZWQoKTovKD86W15cdUQ4MDAtXHVEQkZGXXxeKVtcdURDMDAtXHVERkZGXXxbXHVEODAwLVx1REJGRl0oPyFbXHVEQzAwLVx1REZGRl0pLy50ZXN0KGEpKSl0aHJvdyBFcnJvcigidSIpO2E9KGZhYXx8KGZhYT1uZXcgVGV4dEVuY29kZXIpKS5lbmNvZGUoYSl9ZWxzZXtsZXQgZD0wLGU9bmV3IFVpbnQ4QXJyYXkoMyphLmxlbmd0aCk7Zm9yKGxldCBmPTA7ZjxhLmxlbmd0aDtmKyspe3ZhciBjPWEuY2hhckNvZGVBdChmKTtpZihjPDEyOCllW2QrK109YztlbHNle2lmKGM8MjA0OCllW2QrK109Yz4+NnwxOTI7ZWxzZXtpZihjPj01NTI5NiYmYzw9NTczNDMpe2lmKGM8PTU2MzE5JiZmPGEubGVuZ3RoKXtsZXQgZz1hLmNoYXJDb2RlQXQoKytmKTtpZihnPj01NjMyMCYmZzw9NTczNDMpe2M9KGMtNTUyOTYpKjEwMjQrZy01NjMyMCs2NTUzNjtlW2QrK109Yz4+MTh8MjQwO2VbZCsrXT1jPj4KMTImNjN8MTI4O2VbZCsrXT1jPj42JjYzfDEyODtlW2QrK109YyY2M3wxMjg7Y29udGludWV9ZWxzZSBmLS19aWYoYil0aHJvdyBFcnJvcigidSIpO2M9NjU1MzN9ZVtkKytdPWM+PjEyfDIyNDtlW2QrK109Yz4+NiY2M3wxMjh9ZVtkKytdPWMmNjN8MTI4fX1hPWQ9PT1lLmxlbmd0aD9lOmUuc3ViYXJyYXkoMCxkKX1yZXR1cm4gYX07Xy5mYT1mdW5jdGlvbihhKXtfLmVhLnNldFRpbWVvdXQoKCk9Pnt0aHJvdyBhO30sMCl9O18uaGFhPWZ1bmN0aW9uKGEpe3ZhciBiPVtdLGM9MDtmb3IobGV0IGQ9MDtkPGEubGVuZ3RoO2QrKyl7bGV0IGU9YS5jaGFyQ29kZUF0KGQpO2U+MjU1JiYoYltjKytdPWUmMjU1LGU+Pj04KTtiW2MrK109ZX1yZXR1cm4gYn07Cl8uaWFhPWZ1bmN0aW9uKGEpe3ZhciBiPVtdLGM9MDtmb3IobGV0IGQ9MDtkPGEubGVuZ3RoO2QrKyl7bGV0IGU9YS5jaGFyQ29kZUF0KGQpO2U8MTI4P2JbYysrXT1lOihlPDIwNDg/YltjKytdPWU+PjZ8MTkyOigoZSY2NDUxMik9PTU1Mjk2JiZkKzE8YS5sZW5ndGgmJihhLmNoYXJDb2RlQXQoZCsxKSY2NDUxMik9PTU2MzIwPyhlPTY1NTM2KygoZSYxMDIzKTw8MTApKyhhLmNoYXJDb2RlQXQoKytkKSYxMDIzKSxiW2MrK109ZT4+MTh8MjQwLGJbYysrXT1lPj4xMiY2M3wxMjgpOmJbYysrXT1lPj4xMnwyMjQsYltjKytdPWU+PjYmNjN8MTI4KSxiW2MrK109ZSY2M3wxMjgpfXJldHVybiBifTtfLmlhPWZ1bmN0aW9uKGEsYil7cmV0dXJuIGEubGFzdEluZGV4T2YoYiwwKT09MH07Xy5qYWE9ZnVuY3Rpb24oYSxiKXt2YXIgYz1hLmxlbmd0aC1iLmxlbmd0aDtyZXR1cm4gYz49MCYmYS5pbmRleE9mKGIsYyk9PWN9OwpfLmxhYT1mdW5jdGlvbihhLGIpe3JldHVybiBfLmthYShiLGEuc2xpY2UoMCxiLmxlbmd0aCkpPT0wfTtfLm1hYT1mdW5jdGlvbihhLGIpe3JldHVybiBhLnRvTG93ZXJDYXNlKCk9PWIudG9Mb3dlckNhc2UoKX07Xy5qYT1mdW5jdGlvbihhKXtyZXR1cm4vXltcc1x4YTBdKiQvLnRlc3QoYSl9O18ua2FhPWZ1bmN0aW9uKGEsYil7YT1TdHJpbmcoYSkudG9Mb3dlckNhc2UoKTtiPVN0cmluZyhiKS50b0xvd2VyQ2FzZSgpO3JldHVybiBhPGI/LTE6YT09Yj8wOjF9O18ubGE9ZnVuY3Rpb24oYSxiKXtyZXR1cm4gYS5pbmRleE9mKGIpIT0tMX07Cl8ubmE9ZnVuY3Rpb24oYSxiKXt2YXIgYz0wO2E9Xy5tYShTdHJpbmcoYSkpLnNwbGl0KCIuIik7Yj1fLm1hKFN0cmluZyhiKSkuc3BsaXQoIi4iKTt2YXIgZD1NYXRoLm1heChhLmxlbmd0aCxiLmxlbmd0aCk7Zm9yKGxldCBnPTA7Yz09MCYmZzxkO2crKyl7dmFyIGU9YVtnXXx8IiIsZj1iW2ddfHwiIjtkb3tlPS8oXGQqKShcRCopKC4qKS8uZXhlYyhlKXx8WyIiLCIiLCIiLCIiXTtmPS8oXGQqKShcRCopKC4qKS8uZXhlYyhmKXx8WyIiLCIiLCIiLCIiXTtpZihlWzBdLmxlbmd0aD09MCYmZlswXS5sZW5ndGg9PTApYnJlYWs7Yz1uYWEoZVsxXS5sZW5ndGg9PTA/MDpwYXJzZUludChlWzFdLDEwKSxmWzFdLmxlbmd0aD09MD8wOnBhcnNlSW50KGZbMV0sMTApKXx8bmFhKGVbMl0ubGVuZ3RoPT0wLGZbMl0ubGVuZ3RoPT0wKXx8bmFhKGVbMl0sZlsyXSk7ZT1lWzNdO2Y9ZlszXX13aGlsZShjPT0wKX1yZXR1cm4gY307Cm5hYT1mdW5jdGlvbihhLGIpe3JldHVybiBhPGI/LTE6YT5iPzE6MH07Xy5vYT1mdW5jdGlvbigpe3ZhciBhPV8uZWEubmF2aWdhdG9yO3JldHVybiBhJiYoYT1hLnVzZXJBZ2VudCk/YToiIn07cGFhPWZ1bmN0aW9uKGEpe2lmKCFfLm9hYXx8IV8ucGEpcmV0dXJuITE7Zm9yKGxldCBiPTA7YjxfLnBhLmJyYW5kcy5sZW5ndGg7YisrKXtsZXQge2JyYW5kOmN9PV8ucGEuYnJhbmRzW2JdO2lmKGMmJl8ubGEoYyxhKSlyZXR1cm4hMH1yZXR1cm4hMX07Xy5xYT1mdW5jdGlvbihhKXtyZXR1cm4gXy5sYShfLm9hKCksYSl9O18ucWFhPWZ1bmN0aW9uKCl7cmV0dXJuIF8ubGEoXy5vYSgpLnRvTG93ZXJDYXNlKCksImthaW9zIil9O3JhYT1mdW5jdGlvbihhKXtmb3IodmFyIGI9UmVnRXhwKCIoW0EtWl1bXFx3IF0rKS8oW15cXHNdKylcXHMqKD86XFwoKC4qPylcXCkpPyIsImciKSxjPVtdLGQ7ZD1iLmV4ZWMoYSk7KWMucHVzaChbZFsxXSxkWzJdLGRbM118fHZvaWQgMF0pO3JldHVybiBjfTsKc2FhPWZ1bmN0aW9uKGE9ITEpe3JldHVybiBhfHxfLm9hYT8hIV8ucGEmJl8ucGEuYnJhbmRzLmxlbmd0aD4wOiExfTt0YWE9ZnVuY3Rpb24oKXtyZXR1cm4gc2FhKCk/ITE6Xy5xYSgiT3BlcmEiKX07dWFhPWZ1bmN0aW9uKCl7cmV0dXJuIHNhYSgpPyExOl8ucWEoIlRyaWRlbnQiKXx8Xy5xYSgiTVNJRSIpfTt2YWE9ZnVuY3Rpb24oKXtyZXR1cm4gc2FhKCk/ITE6Xy5xYSgiRWRnZSIpfTt3YWE9ZnVuY3Rpb24oKXtyZXR1cm4gc2FhKCk/cGFhKCJNaWNyb3NvZnQgRWRnZSIpOl8ucWEoIkVkZy8iKX07eGFhPWZ1bmN0aW9uKCl7cmV0dXJuIHNhYSgpP3BhYSgiT3BlcmEiKTpfLnFhKCJPUFIiKX07eWFhPWZ1bmN0aW9uKCl7cmV0dXJuIF8ucWEoIkZpcmVmb3giKXx8Xy5xYSgiRnhpT1MiKX07Q2FhPWZ1bmN0aW9uKCl7cmV0dXJuIF8ucWEoIlNhZmFyaSIpJiYhKHphYSgpfHxBYWEoKXx8dGFhKCl8fHZhYSgpfHx3YWEoKXx8eGFhKCl8fHlhYSgpfHxCYWEoKXx8Xy5xYSgiQW5kcm9pZCIpKX07CkFhYT1mdW5jdGlvbigpe3JldHVybiBzYWEoKT8hMTpfLnFhKCJDb2FzdCIpfTt6YWE9ZnVuY3Rpb24oKXtyZXR1cm4gc2FhKCk/cGFhKCJDaHJvbWl1bSIpOihfLnFhKCJDaHJvbWUiKXx8Xy5xYSgiQ3JpT1MiKSkmJiF2YWEoKXx8QmFhKCl9O0RhYT1mdW5jdGlvbigpe3JldHVybiBfLnFhKCJBbmRyb2lkIikmJiEoemFhKCl8fHlhYSgpfHx0YWEoKXx8QmFhKCkpfTtCYWE9ZnVuY3Rpb24oKXtyZXR1cm4gXy5xYSgiU2lsayIpfTtFYWE9ZnVuY3Rpb24oYSl7dmFyIGI9e307YS5mb3JFYWNoKGM9PntiW2NbMF1dPWNbMV19KTtyZXR1cm4gYz0+YltjLmZpbmQoZD0+ZCBpbiBiKV18fCIifTsKR2FhPWZ1bmN0aW9uKCl7dmFyIGE9Xy5vYSgpO2lmKHVhYSgpKXJldHVybiBGYWEoYSk7YT1yYWEoYSk7dmFyIGI9RWFhKGEpO3JldHVybiB0YWEoKT9iKFsiVmVyc2lvbiIsIk9wZXJhIl0pOnZhYSgpP2IoWyJFZGdlIl0pOndhYSgpP2IoWyJFZGciXSk6QmFhKCk/YihbIlNpbGsiXSk6emFhKCk/YihbIkNocm9tZSIsIkNyaU9TIiwiSGVhZGxlc3NDaHJvbWUiXSk6KGE9YVsyXSkmJmFbMV18fCIifTsKRmFhPWZ1bmN0aW9uKGEpe3ZhciBiPS9ydjogKihbXGRcLl0qKS8uZXhlYyhhKTtpZihiJiZiWzFdKXJldHVybiBiWzFdO2I9IiI7dmFyIGM9L01TSUUgKyhbXGRcLl0rKS8uZXhlYyhhKTtpZihjJiZjWzFdKWlmKGE9L1RyaWRlbnRcLyhcZC5cZCkvLmV4ZWMoYSksY1sxXT09IjcuMCIpaWYoYSYmYVsxXSlzd2l0Y2goYVsxXSl7Y2FzZSAiNC4wIjpiPSI4LjAiO2JyZWFrO2Nhc2UgIjUuMCI6Yj0iOS4wIjticmVhaztjYXNlICI2LjAiOmI9IjEwLjAiO2JyZWFrO2Nhc2UgIjcuMCI6Yj0iMTEuMCJ9ZWxzZSBiPSI3LjAiO2Vsc2UgYj1jWzFdO3JldHVybiBifTsKSGFhPWZ1bmN0aW9uKGEpe3ZhciBiPV8ub2EoKTtpZihhPT09IkludGVybmV0IEV4cGxvcmVyIilyZXR1cm4gdWFhKCk/RmFhKGIpOiIiO2I9cmFhKGIpO3ZhciBjPUVhYShiKTtzd2l0Y2goYSl7Y2FzZSAiT3BlcmEiOmlmKHRhYSgpKXJldHVybiBjKFsiVmVyc2lvbiIsIk9wZXJhIl0pO2lmKHhhYSgpKXJldHVybiBjKFsiT1BSIl0pO2JyZWFrO2Nhc2UgIk1pY3Jvc29mdCBFZGdlIjppZih2YWEoKSlyZXR1cm4gYyhbIkVkZ2UiXSk7aWYod2FhKCkpcmV0dXJuIGMoWyJFZGciXSk7YnJlYWs7Y2FzZSAiQ2hyb21pdW0iOmlmKHphYSgpKXJldHVybiBjKFsiQ2hyb21lIiwiQ3JpT1MiLCJIZWFkbGVzc0Nocm9tZSJdKX1yZXR1cm4gYT09PSJGaXJlZm94IiYmeWFhKCl8fGE9PT0iU2FmYXJpIiYmQ2FhKCl8fGE9PT0iQW5kcm9pZCBCcm93c2VyIiYmRGFhKCl8fGE9PT0iU2lsayImJkJhYSgpPyhhPWJbMl0pJiZhWzFdfHwiIjoiIn07CklhYT1mdW5jdGlvbihhKXtpZihzYWEoKSYmYSE9PSJTaWxrIil7dmFyIGI9Xy5wYS5icmFuZHMuZmluZCgoe2JyYW5kOmN9KT0+Yz09PWEpO2lmKCFifHwhYi52ZXJzaW9uKXJldHVybiBOYU47Yj1iLnZlcnNpb24uc3BsaXQoIi4iKX1lbHNle2I9SGFhKGEpO2lmKGI9PT0iIilyZXR1cm4gTmFOO2I9Yi5zcGxpdCgiLiIpfXJldHVybiBiLmxlbmd0aD09PTA/TmFOOk51bWJlcihiWzBdKX07SmFhPWZ1bmN0aW9uKGEsYil7cmV0dXJuIElhYShhKT49Yn07TGFhPWZ1bmN0aW9uKGEpe3ZhciBiPSIiO0phYSgiQ2hyb21pdW0iLDk4KXx8KGI9SGFhKGEpKTt2YXIgYz1hIT09IlNpbGsiJiZzYWEoITApO2lmKGMpe2lmKCFfLnBhLmJyYW5kcy5maW5kKCh7YnJhbmQ6ZH0pPT5kPT09YSkpcmV0dXJufWVsc2UgaWYoYj09PSIiKXJldHVybjtyZXR1cm4gbmV3IEthYShhLGMsYil9O01hYT1mdW5jdGlvbigpe3JldHVybiBfLm9hYT8hIV8ucGEmJiEhXy5wYS5wbGF0Zm9ybTohMX07Cl8ucmE9ZnVuY3Rpb24oKXtyZXR1cm4gTWFhKCk/Xy5wYS5wbGF0Zm9ybT09PSJBbmRyb2lkIjpfLnFhKCJBbmRyb2lkIil9O18uTmFhPWZ1bmN0aW9uKCl7cmV0dXJuIF8ucWEoImlQaG9uZSIpJiYhXy5xYSgiaVBvZCIpJiYhXy5xYSgiaVBhZCIpfTtfLnNhPWZ1bmN0aW9uKCl7cmV0dXJuIF8uTmFhKCl8fF8ucWEoImlQYWQiKXx8Xy5xYSgiaVBvZCIpfTtfLk9hYT1mdW5jdGlvbigpe3JldHVybiBNYWEoKT9fLnBhLnBsYXRmb3JtPT09Im1hY09TIjpfLnFhKCJNYWNpbnRvc2giKX07Xy5QYWE9ZnVuY3Rpb24oKXtyZXR1cm4gTWFhKCk/Xy5wYS5wbGF0Zm9ybT09PSJMaW51eCI6Xy5xYSgiTGludXgiKX07Xy5RYWE9ZnVuY3Rpb24oKXtyZXR1cm4gTWFhKCk/Xy5wYS5wbGF0Zm9ybT09PSJXaW5kb3dzIjpfLnFhKCJXaW5kb3dzIil9O18uUmFhPWZ1bmN0aW9uKCl7cmV0dXJuIE1hYSgpP18ucGEucGxhdGZvcm09PT0iQ2hyb21lIE9TIjpfLnFhKCJDck9TIil9OwpfLlNhYT1mdW5jdGlvbigpe3ZhciBhPV8ub2EoKSxiPSIiO18uUWFhKCk/KGI9L1dpbmRvd3MgKD86TlR8UGhvbmUpIChbMC05Ll0rKS8sYj0oYT1iLmV4ZWMoYSkpP2FbMV06IjAuMCIpOl8uc2EoKT8oYj0vKD86aVBob25lfGlQb2R8aVBhZHxDUFUpXHMrT1NccysoXFMrKS8sYj0oYT1iLmV4ZWMoYSkpJiZhWzFdLnJlcGxhY2UoL18vZywiLiIpKTpfLk9hYSgpPyhiPS9NYWMgT1MgWCAoWzAtOV8uXSspLyxiPShhPWIuZXhlYyhhKSk/YVsxXS5yZXBsYWNlKC9fL2csIi4iKToiMTAiKTpfLnFhYSgpPyhiPS8oPzpLYWlPUylcLyhcUyspL2ksYj0oYT1iLmV4ZWMoYSkpJiZhWzFdKTpfLnJhKCk/KGI9L0FuZHJvaWRccysoW15cKTtdKykoXCl8OykvLGI9KGE9Yi5leGVjKGEpKSYmYVsxXSk6Xy5SYWEoKSYmKGI9Lyg/OkNyT1NccysoPzppNjg2fHg4Nl82NClccysoWzAtOS5dKykpLyxiPShhPWIuZXhlYyhhKSkmJmFbMV0pO3JldHVybiBifHwiIn07Cl8udWE9ZnVuY3Rpb24oYSl7cmV0dXJuIF8ubmEoXy5TYWEoKSxhKT49MH07Xy52YT1mdW5jdGlvbihhKXtyZXR1cm4gYVthLmxlbmd0aC0xXX07Xy5UYWE9ZnVuY3Rpb24oYSxiLGMpe3ZhciBkPWEubGVuZ3RoLGU9dHlwZW9mIGE9PT0ic3RyaW5nIj9hLnNwbGl0KCIiKTphO2ZvcigtLWQ7ZD49MDstLWQpZCBpbiBlJiZiLmNhbGwoYyxlW2RdLGQsYSl9O18ueGE9ZnVuY3Rpb24oYSxiLGMpe2I9Xy53YShhLGIsYyk7cmV0dXJuIGI8MD9udWxsOnR5cGVvZiBhPT09InN0cmluZyI/YS5jaGFyQXQoYik6YVtiXX07Xy53YT1mdW5jdGlvbihhLGIsYyl7dmFyIGQ9YS5sZW5ndGgsZT10eXBlb2YgYT09PSJzdHJpbmciP2Euc3BsaXQoIiIpOmE7Zm9yKGxldCBmPTA7ZjxkO2YrKylpZihmIGluIGUmJmIuY2FsbChjLGVbZl0sZixhKSlyZXR1cm4gZjtyZXR1cm4tMX07Cl8uVmFhPWZ1bmN0aW9uKGEsYixjKXtiPV8uVWFhKGEsYixjKTtyZXR1cm4gYjwwP251bGw6dHlwZW9mIGE9PT0ic3RyaW5nIj9hLmNoYXJBdChiKTphW2JdfTtfLlVhYT1mdW5jdGlvbihhLGIsYyl7dmFyIGQ9YS5sZW5ndGgsZT10eXBlb2YgYT09PSJzdHJpbmciP2Euc3BsaXQoIiIpOmE7Zm9yKC0tZDtkPj0wO2QtLSlpZihkIGluIGUmJmIuY2FsbChjLGVbZF0sZCxhKSlyZXR1cm4gZDtyZXR1cm4tMX07Xy5BYT1mdW5jdGlvbihhLGIpe3JldHVybiBfLnphKGEsYik+PTB9O18uQmE9ZnVuY3Rpb24oYSxiKXtfLkFhKGEsYil8fGEucHVzaChiKX07Xy5EYT1mdW5jdGlvbihhLGIpe2I9Xy56YShhLGIpO3ZhciBjOyhjPWI+PTApJiZfLkNhKGEsYik7cmV0dXJuIGN9O18uQ2E9ZnVuY3Rpb24oYSxiKXtyZXR1cm4gQXJyYXkucHJvdG90eXBlLnNwbGljZS5jYWxsKGEsYiwxKS5sZW5ndGg9PTF9OwpfLldhYT1mdW5jdGlvbihhLGIpe3ZhciBjPTA7Xy5UYWEoYSxmdW5jdGlvbihkLGUpe2IuY2FsbCh2b2lkIDAsZCxlLGEpJiZfLkNhKGEsZSkmJmMrK30pO3JldHVybiBjfTtfLkZhPWZ1bmN0aW9uKGEpe3JldHVybiBBcnJheS5wcm90b3R5cGUuY29uY2F0LmFwcGx5KFtdLGFyZ3VtZW50cyl9O18uR2E9ZnVuY3Rpb24oYSl7dmFyIGI9YS5sZW5ndGg7aWYoYj4wKXtsZXQgYz1BcnJheShiKTtmb3IobGV0IGQ9MDtkPGI7ZCsrKWNbZF09YVtkXTtyZXR1cm4gY31yZXR1cm5bXX07Xy5JYT1mdW5jdGlvbihhLGIpe2ZvcihsZXQgYz0xO2M8YXJndW1lbnRzLmxlbmd0aDtjKyspe2xldCBkPWFyZ3VtZW50c1tjXTtpZihfLkhhKGQpKXtsZXQgZT1hLmxlbmd0aHx8MCxmPWQubGVuZ3RofHwwO2EubGVuZ3RoPWUrZjtmb3IobGV0IGc9MDtnPGY7ZysrKWFbZStnXT1kW2ddfWVsc2UgYS5wdXNoKGQpfX07Cl8uWWFhPWZ1bmN0aW9uKGEsYixjLGQpe0FycmF5LnByb3RvdHlwZS5zcGxpY2UuYXBwbHkoYSxfLlhhYShhcmd1bWVudHMsMSkpfTtfLlhhYT1mdW5jdGlvbihhLGIsYyl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg8PTI/QXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYSxiKTpBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhLGIsYyl9O18uWmFhPWZ1bmN0aW9uKGEsYixjKXtiPWJ8fGE7dmFyIGQ9Zz0+ZztjPWN8fGQ7Zm9yKHZhciBlPWQ9MCxmPW5ldyBTZXQ7ZTxhLmxlbmd0aDspe2xldCBnPWFbZSsrXSxoPWMoZyk7Zi5oYXMoaCl8fChmLmFkZChoKSxiW2QrK109Zyl9Yi5sZW5ndGg9ZH07Xy5KYT1mdW5jdGlvbihhLGIsYyl7cmV0dXJuIF8uJGFhKGEsY3x8Xy5hYmEsITEsYil9OwpfLiRhYT1mdW5jdGlvbihhLGIsYyxkLGUpe2Zvcih2YXIgZj0wLGc9YS5sZW5ndGgsaDtmPGc7KXtsZXQgaz1mKyhnLWY+Pj4xKSxtO2M/bT1iLmNhbGwoZSxhW2tdLGssYSk6bT1iKGQsYVtrXSk7bT4wP2Y9aysxOihnPWssaD0hbSl9cmV0dXJuIGg/ZjotZi0xfTtfLmJiYT1mdW5jdGlvbihhLGIpe2Euc29ydChifHxfLmFiYSl9O18uS2E9ZnVuY3Rpb24oYSxiLGMpe2lmKCFfLkhhKGEpfHwhXy5IYShiKXx8YS5sZW5ndGghPWIubGVuZ3RoKXJldHVybiExO3ZhciBkPWEubGVuZ3RoO2M9Y3x8Y2JhO2ZvcihsZXQgZT0wO2U8ZDtlKyspaWYoIWMoYVtlXSxiW2VdKSlyZXR1cm4hMTtyZXR1cm4hMH07Xy5hYmE9ZnVuY3Rpb24oYSxiKXtyZXR1cm4gYT5iPzE6YTxiPy0xOjB9O2NiYT1mdW5jdGlvbihhLGIpe3JldHVybiBhPT09Yn07Xy5kYmE9ZnVuY3Rpb24oYSxiKXt2YXIgYz17fTtfLkxhKGEsZnVuY3Rpb24oZCxlKXtjW2IuY2FsbCh2b2lkIDAsZCxlLGEpXT1kfSk7cmV0dXJuIGN9OwpfLk1hPWZ1bmN0aW9uKGEsYixjKXt2YXIgZD1bXSxlPTAsZj1hO2M9Y3x8MTtiIT09dm9pZCAwJiYoZT1hLGY9Yik7aWYoYyooZi1lKTwwKXJldHVybltdO2lmKGM+MClmb3IoYT1lO2E8ZjthKz1jKWQucHVzaChhKTtlbHNlIGZvcihhPWU7YT5mO2ErPWMpZC5wdXNoKGEpO3JldHVybiBkfTtfLmViYT1mdW5jdGlvbihhLGIpe3ZhciBjPVtdO2ZvcihsZXQgZD0wO2Q8YjtkKyspY1tkXT1hO3JldHVybiBjfTtfLmZiYT1mdW5jdGlvbihhKXt2YXIgYj1bXTtmb3IobGV0IGQ9MDtkPGFyZ3VtZW50cy5sZW5ndGg7ZCsrKXtsZXQgZT1hcmd1bWVudHNbZF07aWYoQXJyYXkuaXNBcnJheShlKSlmb3IobGV0IGY9MDtmPGUubGVuZ3RoO2YrPTgxOTIpe3ZhciBjPV8uWGFhKGUsZixmKzgxOTIpO2M9Xy5mYmEuYXBwbHkobnVsbCxjKTtmb3IobGV0IGc9MDtnPGMubGVuZ3RoO2crKyliLnB1c2goY1tnXSl9ZWxzZSBiLnB1c2goZSl9cmV0dXJuIGJ9OwpfLmdiYT1mdW5jdGlvbigpe3JldHVybiBfLmxhKF8ub2EoKS50b0xvd2VyQ2FzZSgpLCJ3ZWJraXQiKSYmIV8ucWEoIkVkZ2UiKX07Xy5oYmE9ZnVuY3Rpb24oKXtyZXR1cm4gXy5xYSgiR2Vja28iKSYmIV8uZ2JhKCkmJiEoXy5xYSgiVHJpZGVudCIpfHxfLnFhKCJNU0lFIikpJiYhXy5xYSgiRWRnZSIpfTtpYmE9ZnVuY3Rpb24oKXtyZXR1cm4gXy5OYWEoKXx8Xy5xYSgiaVBvZCIpfTtqYmE9ZnVuY3Rpb24oKXtyZXR1cm4gXy5OYS5NeSgpJiYhXy5zYSgpfTsKXy5PYT1mdW5jdGlvbihhLGIpe2I9PT12b2lkIDAmJihiPTApO2tiYSgpO2I9bGJhW2JdO2Zvcih2YXIgYz1BcnJheShNYXRoLmZsb29yKGEubGVuZ3RoLzMpKSxkPWJbNjRdfHwiIixlPTAsZj0wO2U8YS5sZW5ndGgtMjtlKz0zKXt2YXIgZz1hW2VdLGg9YVtlKzFdLGs9YVtlKzJdLG09YltnPj4yXTtnPWJbKGcmMyk8PDR8aD4+NF07aD1iWyhoJjE1KTw8MnxrPj42XTtrPWJbayY2M107Y1tmKytdPW0rZytoK2t9bT0wO2s9ZDtzd2l0Y2goYS5sZW5ndGgtZSl7Y2FzZSAyOm09YVtlKzFdLGs9YlsobSYxNSk8PDJdfHxkO2Nhc2UgMTphPWFbZV0sY1tmXT1iW2E+PjJdK2JbKGEmMyk8PDR8bT4+NF0raytkfXJldHVybiBjLmpvaW4oIiIpfTtfLlBhPWZ1bmN0aW9uKGEsYil7cmV0dXJuIGI/Xy5PYShfLmhhYShhKSxiKTpfLmVhLmJ0b2EoYSl9OwpfLm5iYT1mdW5jdGlvbihhLGIpe2lmKCFiKXJldHVybiBfLmVhLmF0b2IoYSk7dmFyIGM9IiI7bWJhKGEsZnVuY3Rpb24oZCl7Yys9U3RyaW5nLmZyb21DaGFyQ29kZShkKX0pO3JldHVybiBjfTtfLlFhPWZ1bmN0aW9uKGEpe3ZhciBiPVtdO21iYShhLGZ1bmN0aW9uKGMpe2IucHVzaChjKX0pO3JldHVybiBifTtfLlJhPWZ1bmN0aW9uKGEpe3ZhciBiPWEubGVuZ3RoLGM9YiozLzQ7YyUzP2M9TWF0aC5mbG9vcihjKTpfLmxhKCI9LiIsYVtiLTFdKSYmKGM9Xy5sYSgiPS4iLGFbYi0yXSk/Yy0yOmMtMSk7dmFyIGQ9bmV3IFVpbnQ4QXJyYXkoYyksZT0wO21iYShhLGZ1bmN0aW9uKGYpe2RbZSsrXT1mfSk7cmV0dXJuIGUhPT1jP2Quc3ViYXJyYXkoMCxlKTpkfTsKbWJhPWZ1bmN0aW9uKGEsYil7ZnVuY3Rpb24gYyhlKXtmb3IoO2Q8YS5sZW5ndGg7KXtsZXQgZj1hLmNoYXJBdChkKyspLGc9b2JhW2ZdO2lmKGchPW51bGwpcmV0dXJuIGc7aWYoIV8uamEoZikpdGhyb3cgRXJyb3IoInhgIitmKTt9cmV0dXJuIGV9a2JhKCk7Zm9yKHZhciBkPTA7Oyl7bGV0IGU9YygtMSksZj1jKDApLGc9Yyg2NCksaD1jKDY0KTtpZihoPT09NjQmJmU9PT0tMSlicmVhaztiKGU8PDJ8Zj4+NCk7ZyE9NjQmJihiKGY8PDQmMjQwfGc+PjIpLGghPTY0JiZiKGc8PDYmMTkyfGgpKX19OwprYmE9ZnVuY3Rpb24oKXtpZighb2JhKXtvYmE9e307dmFyIGE9IkFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXowMTIzNDU2Nzg5Ii5zcGxpdCgiIiksYj1bIisvPSIsIisvIiwiLV89IiwiLV8uIiwiLV8iXTtmb3IobGV0IGM9MDtjPDU7YysrKXtsZXQgZD1hLmNvbmNhdChiW2NdLnNwbGl0KCIiKSk7bGJhW2NdPWQ7Zm9yKGxldCBlPTA7ZTxkLmxlbmd0aDtlKyspe2xldCBmPWRbZV07b2JhW2ZdPT09dm9pZCAwJiYob2JhW2ZdPWUpfX19fTtxYmE9ZnVuY3Rpb24oYSl7cmV0dXJuIHBiYVthXXx8IiJ9O3NiYT1mdW5jdGlvbihhKXthPXJiYS50ZXN0KGEpP2EucmVwbGFjZShyYmEscWJhKTphO2E9YXRvYihhKTt2YXIgYj1uZXcgVWludDhBcnJheShhLmxlbmd0aCk7Zm9yKGxldCBjPTA7YzxhLmxlbmd0aDtjKyspYltjXT1hLmNoYXJDb2RlQXQoYyk7cmV0dXJuIGJ9Owp0YmE9ZnVuY3Rpb24oYSl7cmV0dXJuIGEhPW51bGwmJmEgaW5zdGFuY2VvZiBVaW50OEFycmF5fTt1YmE9ZnVuY3Rpb24oYSxiKXt2YXIgYz1hLmxlbmd0aDtpZihjIT09Yi5sZW5ndGgpcmV0dXJuITE7Zm9yKGxldCBkPTA7ZDxjO2QrKylpZihhW2RdIT09YltkXSlyZXR1cm4hMTtyZXR1cm4hMH07Xy54YmE9ZnVuY3Rpb24oYSl7cmV0dXJuIGEubGVuZ3RoPT0wP18udmJhKCk6bmV3IF8uU2EoYSxfLndiYSl9OwpBYmE9ZnVuY3Rpb24oYSxiKXtpZih0eXBlb2YgYT09PSJzdHJpbmciKXJldHVybiBuZXcgeWJhKHNiYShhKSxiKTtpZihBcnJheS5pc0FycmF5KGEpKXJldHVybiBuZXcgeWJhKG5ldyBVaW50OEFycmF5KGEpLGIpO2lmKGEuY29uc3RydWN0b3I9PT1VaW50OEFycmF5KXJldHVybiBuZXcgeWJhKGEsITEpO2lmKGEuY29uc3RydWN0b3I9PT1BcnJheUJ1ZmZlcilyZXR1cm4gYT1uZXcgVWludDhBcnJheShhKSxuZXcgeWJhKGEsITEpO2lmKGEuY29uc3RydWN0b3I9PT1fLlNhKXJldHVybiBiPV8uemJhKGEpfHxuZXcgVWludDhBcnJheSgwKSxuZXcgeWJhKGIsITAsYSk7aWYoYSBpbnN0YW5jZW9mIFVpbnQ4QXJyYXkpcmV0dXJuIGE9YS5jb25zdHJ1Y3Rvcj09PVVpbnQ4QXJyYXk/YTpuZXcgVWludDhBcnJheShhLmJ1ZmZlcixhLmJ5dGVPZmZzZXQsYS5ieXRlTGVuZ3RoKSxuZXcgeWJhKGEsITEpO3Rocm93IEVycm9yKCk7fTsKQmJhPWZ1bmN0aW9uKCl7cmV0dXJuIHR5cGVvZiBCaWdJbnQ9PT0iZnVuY3Rpb24ifTtfLkRiYT1mdW5jdGlvbihhLGIpe3ZhciBjPUNiYTtpZighYihhKSl7dmFyIGQsZTtiPShlPShkPXR5cGVvZiBjPT09ImZ1bmN0aW9uIj9jKCk6Yyk9PW51bGw/dm9pZCAwOmQuY29uY2F0KCJcbiIpKSE9bnVsbD9lOiIiO3Rocm93IEVycm9yKCJCYCIrYisiYCIrU3RyaW5nKGEpKTt9fTtfLkViYT1mdW5jdGlvbihhLGIpe18uRGJhKGEsYik7cmV0dXJuIGF9O18uRmJhPWZ1bmN0aW9uKGEpe3ZhciBiPUNiYTtpZighYSl0aHJvdyBFcnJvcigodHlwZW9mIGI9PT0iZnVuY3Rpb24iP2IoKTpiKXx8U3RyaW5nKGEpKTt9O18uVGE9ZnVuY3Rpb24oYSl7YS5nQ2Q9ITA7cmV0dXJuIGF9OwpfLllhPWZ1bmN0aW9uKGEpe3ZhciBiPWE7aWYoKDAsXy5VYSkoYikpe2lmKCEvXlxzKig/Oi0/WzEtOV1cZCp8MCk/XHMqJC8udGVzdChiKSl0aHJvdyBFcnJvcihTdHJpbmcoYikpO31lbHNlIGlmKCgwLF8uR2JhKShiKSYmIU51bWJlci5pc1NhZmVJbnRlZ2VyKGIpKXRocm93IEVycm9yKFN0cmluZyhiKSk7cmV0dXJuIF8uV2E/QmlnSW50KGEpOmE9SGJhKGEpP2E/IjEiOiIwIjooMCxfLlVhKShhKT9hLnRyaW0oKXx8IjAiOlN0cmluZyhhKX07SWJhPWZ1bmN0aW9uKGEsYil7aWYoYS5sZW5ndGg+Yi5sZW5ndGgpcmV0dXJuITE7aWYoYS5sZW5ndGg8Yi5sZW5ndGh8fGE9PT1iKXJldHVybiEwO2ZvcihsZXQgYz0wO2M8YS5sZW5ndGg7YysrKXtsZXQgZD1hW2NdLGU9YltjXTtpZihkPmUpcmV0dXJuITE7aWYoZDxlKXJldHVybiEwfX07Xy5KYmE9ZnVuY3Rpb24oYSl7dmFyIGI9YT4+PjA7Xy5aYT1iO18uJGE9KGEtYikvNDI5NDk2NzI5Nj4+PjB9OwpfLkxiYT1mdW5jdGlvbihhKXtpZihhPDApe18uSmJhKC1hKTtsZXQgW2IsY109S2JhKF8uWmEsXy4kYSk7Xy5aYT1iPj4+MDtfLiRhPWM+Pj4wfWVsc2UgXy5KYmEoYSl9O05iYT1mdW5jdGlvbihhKXt2YXIgYj1NYmF8fChNYmE9bmV3IERhdGFWaWV3KG5ldyBBcnJheUJ1ZmZlcig4KSkpO2Iuc2V0RmxvYXQzMigwLCthLCEwKTtfLiRhPTA7Xy5aYT1iLmdldFVpbnQzMigwLCEwKX07UGJhPWZ1bmN0aW9uKGEsYil7dmFyIGM9Yio0Mjk0OTY3Mjk2KyhhPj4+MCk7cmV0dXJuIE51bWJlci5pc1NhZmVJbnRlZ2VyKGMpP2M6T2JhKGEsYil9O1FiYT1mdW5jdGlvbihhLGIpe3JldHVybiBfLllhKEJiYSgpP0JpZ0ludC5hc1VpbnROKDY0LChCaWdJbnQoYj4+PjApPDxCaWdJbnQoMzIpKStCaWdJbnQoYT4+PjApKTpPYmEoYSxiKSl9OwpfLlNiYT1mdW5jdGlvbihhLGIpe3JldHVybiBCYmEoKT9fLllhKEJpZ0ludC5hc0ludE4oNjQsKEJpZ0ludC5hc1VpbnROKDMyLEJpZ0ludChiKSk8PEJpZ0ludCgzMikpK0JpZ0ludC5hc1VpbnROKDMyLEJpZ0ludChhKSkpKTpfLllhKFJiYShhLGIpKX07T2JhPWZ1bmN0aW9uKGEsYil7Yj4+Pj0wO2E+Pj49MDtpZihiPD0yMDk3MTUxKXZhciBjPSIiKyg0Mjk0OTY3Mjk2KmIrYSk7ZWxzZSBCYmEoKT9jPSIiKyhCaWdJbnQoYik8PEJpZ0ludCgzMil8QmlnSW50KGEpKTooYz0oYT4+PjI0fGI8PDgpJjE2Nzc3MjE1LGI9Yj4+MTYmNjU1MzUsYT0oYSYxNjc3NzIxNSkrYyo2Nzc3MjE2K2IqNjcxMDY1NixjKz1iKjgxNDc0OTcsYio9MixhPj0xRTcmJihjKz1hLzFFNz4+PjAsYSU9MUU3KSxjPj0xRTcmJihiKz1jLzFFNz4+PjAsYyU9MUU3KSxjPWIrVGJhKGMpK1RiYShhKSk7cmV0dXJuIGN9OwpUYmE9ZnVuY3Rpb24oYSl7YT1TdHJpbmcoYSk7cmV0dXJuIjAwMDAwMDAiLnNsaWNlKGEubGVuZ3RoKSthfTtSYmE9ZnVuY3Rpb24oYSxiKXtpZihiJjIxNDc0ODM2NDgpaWYoQmJhKCkpYT0iIisoQmlnSW50KGJ8MCk8PEJpZ0ludCgzMil8QmlnSW50KGE+Pj4wKSk7ZWxzZXtsZXQgW2MsZF09S2JhKGEsYik7YT0iLSIrT2JhKGMsZCl9ZWxzZSBhPU9iYShhLGIpO3JldHVybiBhfTsKXy5VYmE9ZnVuY3Rpb24oYSl7aWYoYS5sZW5ndGg8MTYpXy5MYmEoTnVtYmVyKGEpKTtlbHNlIGlmKEJiYSgpKWE9QmlnSW50KGEpLF8uWmE9TnVtYmVyKGEmQmlnSW50KDQyOTQ5NjcyOTUpKT4+PjAsXy4kYT1OdW1iZXIoYT4+QmlnSW50KDMyKSZCaWdJbnQoNDI5NDk2NzI5NSkpO2Vsc2V7bGV0IGI9KyhhWzBdPT09Ii0iKTtfLiRhPV8uWmE9MDtsZXQgYz1hLmxlbmd0aDtmb3IobGV0IGQ9YixlPShjLWIpJTYrYjtlPD1jO2Q9ZSxlKz02KXtsZXQgZj1OdW1iZXIoYS5zbGljZShkLGUpKTtfLiRhKj0xRTY7Xy5aYT1fLlphKjFFNitmO18uWmE+PTQyOTQ5NjcyOTYmJihfLiRhKz1NYXRoLnRydW5jKF8uWmEvNDI5NDk2NzI5NiksXy4kYT4+Pj0wLF8uWmE+Pj49MCl9aWYoYil7bGV0IFtkLGVdPUtiYShfLlphLF8uJGEpO18uWmE9ZDtfLiRhPWV9fX07S2JhPWZ1bmN0aW9uKGEsYil7Yj1+YjthP2E9fmErMTpiKz0xO3JldHVyblthLGJdfTsKXy5hYj1mdW5jdGlvbihhLGI9ITEpe3JldHVybiBiJiZTeW1ib2wuZm9yJiZhP1N5bWJvbC5mb3IoYSk6YSE9bnVsbD9TeW1ib2woYSk6U3ltYm9sKCl9O1ZiYT1mdW5jdGlvbihhLGIpe2FbXy5iYl18PWJ9O1diYT1mdW5jdGlvbihhKXtpZig0JmEpcmV0dXJuIDUxMiZhPzUxMjoxMDI0JmE/MTAyNDowfTtfLlhiYT1mdW5jdGlvbihhKXtWYmEoYSwzNCk7cmV0dXJuIGF9O1liYT1mdW5jdGlvbihhKXtWYmEoYSw4MTkyKTtyZXR1cm4gYX07WmJhPWZ1bmN0aW9uKGEpe1ZiYShhLDMyKTtyZXR1cm4gYX07YmNhPWZ1bmN0aW9uKGEpe3JldHVybiBhIT1udWxsJiZhW18uJGJhXT09PV8uYWNhfTtfLmNiPWZ1bmN0aW9uKGEsYil7cmV0dXJuIGI9PT12b2lkIDA/YS5DYyE9PWNjYSYmISEoMiYoYS5Qa1tfLmJiXXwwKSk6ISEoMiZiKSYmYS5DYyE9PWNjYX07ZGNhPWZ1bmN0aW9uKGEsYil7YS5DYz1iP2NjYTp2b2lkIDB9OwpfLmdjYT1mdW5jdGlvbihhLGIsYyl7aWYoYT09bnVsbCl7aWYoIWMpdGhyb3cgRXJyb3IoKTt9ZWxzZSBpZih0eXBlb2YgYT09PSJzdHJpbmciKWE9Xy5lY2EoYSk7ZWxzZSBpZihhLmNvbnN0cnVjdG9yIT09Xy5TYSlpZih0YmEoYSkpYT1fLmZjYShhKTtlbHNle2lmKCFiKXRocm93IEVycm9yKCk7YT12b2lkIDB9cmV0dXJuIGF9O2hjYT1mdW5jdGlvbihhKXtyZXR1cm4hMX07aWNhPWZ1bmN0aW9uKGEsYil7aWYoIUFycmF5LmlzQXJyYXkoYSl8fGEubGVuZ3RoKXJldHVybiExO3ZhciBjPWFbXy5iYl18MDtpZihjJjEpcmV0dXJuITA7aWYoIWhjYShiKSlyZXR1cm4hMTthW18uYmJdPWN8MTtyZXR1cm4hMH07Xy5qY2E9ZnVuY3Rpb24oYSxiKXtpZih0eXBlb2YgYiE9PSJudW1iZXIifHxiPDB8fGI+PWEubGVuZ3RoKXRocm93IEVycm9yKCk7fTtrY2E9ZnVuY3Rpb24oYSxiKXtpZih0eXBlb2YgYiE9PSJudW1iZXIifHxiPDB8fGI+YS5sZW5ndGgpdGhyb3cgRXJyb3IoKTt9OwpsY2E9ZnVuY3Rpb24oYSxiLGMpe3ZhciBkPWImMTI4PzA6LTEsZT1hLmxlbmd0aCxmO2lmKGY9ISFlKWY9YVtlLTFdLGY9ZiE9bnVsbCYmdHlwZW9mIGY9PT0ib2JqZWN0IiYmZi5jb25zdHJ1Y3Rvcj09PU9iamVjdDt2YXIgZz1lKyhmPy0xOjApO2ZvcihiPWImMTI4PzE6MDtiPGc7YisrKWMoYi1kLGFbYl0pO2lmKGYpe2E9YVtlLTFdO2ZvcihsZXQgaCBpbiBhKSFpc05hTihoKSYmYygraCxhW2hdKX19O18ubWNhPWZ1bmN0aW9uKGEpe3JldHVybiBhJjEyOD9fLmRiOnZvaWQgMH07bmNhPWZ1bmN0aW9uKGEsYil7YS5fX2Nsb3N1cmVfX2Vycm9yX19jb250ZXh0X185ODQzODJ8fChhLl9fY2xvc3VyZV9fZXJyb3JfX2NvbnRleHRfXzk4NDM4Mj17fSk7YS5fX2Nsb3N1cmVfX2Vycm9yX19jb250ZXh0X185ODQzODIuc2V2ZXJpdHk9Yn07b2NhPWZ1bmN0aW9uKCl7dmFyIGE9RXJyb3IoKTtuY2EoYSwiaW5jaWRlbnQiKTtfLmZhKGEpfTsKcGNhPWZ1bmN0aW9uKGEpe2E9RXJyb3IoYSk7bmNhKGEsIndhcm5pbmciKTtyZXR1cm4gYX07cmNhPWZ1bmN0aW9uKGEsYil7aWYoYSE9bnVsbCl7dmFyIGM7dmFyIGQ9KGM9cWNhKSE9bnVsbD9jOnFjYT17fTtjPWRbYV18fDA7Yz49Ynx8KGRbYV09YysxLG9jYSgpKX19O18uZWI9ZnVuY3Rpb24oYSxiPWB1bmV4cGVjdGVkIHZhbHVlICR7YX0hYCl7dGhyb3cgRXJyb3IoYik7fTtzY2E9ZnVuY3Rpb24oYSl7aWYodHlwZW9mIGEhPT0ibnVtYmVyIil0aHJvdyBFcnJvcigiRGAiK3R5cGVvZiBhKyJgIithKTtyZXR1cm4gYX07Xy50Y2E9ZnVuY3Rpb24oYSl7aWYoYT09bnVsbHx8dHlwZW9mIGE9PT0ibnVtYmVyIilyZXR1cm4gYTtpZihhPT09Ik5hTiJ8fGE9PT0iSW5maW5pdHkifHxhPT09Ii1JbmZpbml0eSIpcmV0dXJuIE51bWJlcihhKX07dWNhPWZ1bmN0aW9uKGEpe3JldHVybiBfLmdjYShhLCExLCExKX07Cl8ud2NhPWZ1bmN0aW9uKGEpe2lmKHR5cGVvZiBhIT09ImJvb2xlYW4iKXRocm93IEVycm9yKCJFYCIrXy52Y2EoYSkrImAiK2EpO3JldHVybiBhfTtfLnhjYT1mdW5jdGlvbihhKXtpZihhPT1udWxsfHx0eXBlb2YgYT09PSJib29sZWFuIilyZXR1cm4gYTtpZih0eXBlb2YgYT09PSJudW1iZXIiKXJldHVybiEhYX07QWNhPWZ1bmN0aW9uKGEpe3N3aXRjaCh0eXBlb2YgYSl7Y2FzZSAiYmlnaW50IjpyZXR1cm4hMDtjYXNlICJudW1iZXIiOnJldHVybiB5Y2EoYSk7Y2FzZSAic3RyaW5nIjpyZXR1cm4gemNhLnRlc3QoYSk7ZGVmYXVsdDpyZXR1cm4hMX19O18uQmNhPWZ1bmN0aW9uKGEpe2lmKCF5Y2EoYSkpdGhyb3cgcGNhKCJlbnVtIik7cmV0dXJuIGF8MH07Xy5DY2E9ZnVuY3Rpb24oYSl7cmV0dXJuIGE9PW51bGw/YTp5Y2EoYSk/YXwwOnZvaWQgMH07CkRjYT1mdW5jdGlvbihhKXtpZih0eXBlb2YgYSE9PSJudW1iZXIiKXRocm93IHBjYSgiaW50MzIiKTtpZigheWNhKGEpKXRocm93IHBjYSgiaW50MzIiKTtyZXR1cm4gYXwwfTtfLmdiPWZ1bmN0aW9uKGEpe2lmKGE9PW51bGwpcmV0dXJuIGE7aWYodHlwZW9mIGE9PT0ic3RyaW5nIiYmYSlhPSthO2Vsc2UgaWYodHlwZW9mIGEhPT0ibnVtYmVyIilyZXR1cm47cmV0dXJuIHljYShhKT9hfDA6dm9pZCAwfTtfLmhiPWZ1bmN0aW9uKGEpe2lmKHR5cGVvZiBhIT09Im51bWJlciIpdGhyb3cgcGNhKCJ1aW50MzIiKTtpZigheWNhKGEpKXRocm93IHBjYSgidWludDMyIik7cmV0dXJuIGE+Pj4wfTtfLmliPWZ1bmN0aW9uKGEpe2lmKGE9PW51bGwpcmV0dXJuIGE7aWYodHlwZW9mIGE9PT0ic3RyaW5nIiYmYSlhPSthO2Vsc2UgaWYodHlwZW9mIGEhPT0ibnVtYmVyIilyZXR1cm47cmV0dXJuIHljYShhKT9hPj4+MDp2b2lkIDB9OwpfLktjYT1mdW5jdGlvbihhLGIpe2IhPW51bGx8fChiPTEwMjQpO2lmKCFBY2EoYSkpdGhyb3cgcGNhKCJpbnQ2NCIpO3ZhciBjPXR5cGVvZiBhO3N3aXRjaChiKXtjYXNlIDUxMjpzd2l0Y2goYyl7Y2FzZSAic3RyaW5nIjpyZXR1cm4gRWNhKGEpO2Nhc2UgImJpZ2ludCI6cmV0dXJuIFN0cmluZyhGY2EoNjQsYSkpO2RlZmF1bHQ6cmV0dXJuIEdjYShhKX1jYXNlIDEwMjQ6c3dpdGNoKGMpe2Nhc2UgInN0cmluZyI6cmV0dXJuIEhjYShhKTtjYXNlICJiaWdpbnQiOnJldHVybiBfLllhKEZjYSg2NCxhKSk7ZGVmYXVsdDpyZXR1cm4gSWNhKGEpfWNhc2UgMDpzd2l0Y2goYyl7Y2FzZSAic3RyaW5nIjpyZXR1cm4gRWNhKGEpO2Nhc2UgImJpZ2ludCI6cmV0dXJuIF8uWWEoRmNhKDY0LGEpKTtkZWZhdWx0OnJldHVybiBKY2EoYSl9ZGVmYXVsdDpyZXR1cm4gXy5lYihiLCJVbmtub3duIGZvcm1hdCByZXF1ZXN0ZWQgdHlwZSBmb3IgaW50NjQiKX19OwpfLmpiPWZ1bmN0aW9uKGEpe3JldHVybiBhPT1udWxsP2E6Xy5LY2EoYSx2b2lkIDApfTtMY2E9ZnVuY3Rpb24oYSl7dmFyIGI9YS5sZW5ndGg7aWYoYVswXT09PSItIj9iPDIwfHxiPT09MjAmJmE8PSItOTIyMzM3MjAzNjg1NDc3NTgwOCI6YjwxOXx8Yj09PTE5JiZhPD0iOTIyMzM3MjAzNjg1NDc3NTgwNyIpcmV0dXJuIGE7Xy5VYmEoYSk7cmV0dXJuIFJiYShfLlphLF8uJGEpfTtNY2E9ZnVuY3Rpb24oYSl7aWYoYVswXT09PSItIil2YXIgYj0hMTtlbHNlIGI9YS5sZW5ndGgsYj1iPDIwPyEwOmI9PT0yMCYmYTw9IjE4NDQ2NzQ0MDczNzA5NTUxNjE1IjtpZihiKXJldHVybiBhO18uVWJhKGEpO3JldHVybiBPYmEoXy5aYSxfLiRhKX07CkpjYT1mdW5jdGlvbihhKXthPU5jYShhKTtpZighT2NhKGEpKXtfLkxiYShhKTt2YXIgYj1fLlphLGM9Xy4kYTtpZihhPWMmMjE0NzQ4MzY0OCliPX5iKzE+Pj4wLGM9fmM+Pj4wLGI9PTAmJihjPWMrMT4+PjApO2I9UGJhKGIsYyk7YT10eXBlb2YgYj09PSJudW1iZXIiP2E/LWI6YjphPyItIitiOmJ9cmV0dXJuIGF9O1BjYT1mdW5jdGlvbihhKXthPU5jYShhKTthPj0wJiZPY2EoYSl8fChfLkxiYShhKSxhPVBiYShfLlphLF8uJGEpKTtyZXR1cm4gYX07R2NhPWZ1bmN0aW9uKGEpe2E9TmNhKGEpO09jYShhKT9hPVN0cmluZyhhKTooXy5MYmEoYSksYT1SYmEoXy5aYSxfLiRhKSk7cmV0dXJuIGF9O1FjYT1mdW5jdGlvbihhKXthPU5jYShhKTthPj0wJiZPY2EoYSk/YT1TdHJpbmcoYSk6KF8uTGJhKGEpLGE9T2JhKF8uWmEsXy4kYSkpO3JldHVybiBhfTsKRWNhPWZ1bmN0aW9uKGEpe3ZhciBiPU5jYShOdW1iZXIoYSkpO2lmKE9jYShiKSlyZXR1cm4gU3RyaW5nKGIpO2I9YS5pbmRleE9mKCIuIik7YiE9PS0xJiYoYT1hLnN1YnN0cmluZygwLGIpKTtyZXR1cm4gTGNhKGEpfTtIY2E9ZnVuY3Rpb24oYSl7dmFyIGI9TmNhKE51bWJlcihhKSk7aWYoT2NhKGIpKXJldHVybiBfLllhKGIpO2I9YS5pbmRleE9mKCIuIik7YiE9PS0xJiYoYT1hLnN1YnN0cmluZygwLGIpKTtyZXR1cm4gQmJhKCk/Xy5ZYShGY2EoNjQsQmlnSW50KGEpKSk6Xy5ZYShMY2EoYSkpfTtJY2E9ZnVuY3Rpb24oYSl7cmV0dXJuIE9jYShhKT9fLllhKEpjYShhKSk6Xy5ZYShHY2EoYSkpfTtSY2E9ZnVuY3Rpb24oYSl7cmV0dXJuIE9jYShhKT9fLllhKFBjYShhKSk6Xy5ZYShRY2EoYSkpfTsKU2NhPWZ1bmN0aW9uKGEpe3ZhciBiPU5jYShOdW1iZXIoYSkpO2lmKE9jYShiKSYmYj49MClyZXR1cm4gU3RyaW5nKGIpO2I9YS5pbmRleE9mKCIuIik7YiE9PS0xJiYoYT1hLnN1YnN0cmluZygwLGIpKTtyZXR1cm4gTWNhKGEpfTtVY2E9ZnVuY3Rpb24oYSl7dmFyIGI9TmNhKE51bWJlcihhKSk7aWYoT2NhKGIpJiZiPj0wKXJldHVybiBfLllhKGIpO2I9YS5pbmRleE9mKCIuIik7YiE9PS0xJiYoYT1hLnN1YnN0cmluZygwLGIpKTtyZXR1cm4gQmJhKCk/Xy5ZYShUY2EoNjQsQmlnSW50KGEpKSk6Xy5ZYShNY2EoYSkpfTtfLldjYT1mdW5jdGlvbihhKXtpZihhPT1udWxsKXJldHVybiBhO2lmKHR5cGVvZiBhPT09ImJpZ2ludCIpcmV0dXJuIFZjYShhKT9hPU51bWJlcihhKTooYT1GY2EoNjQsYSksYT1WY2EoYSk/TnVtYmVyKGEpOlN0cmluZyhhKSksYTtpZihBY2EoYSkpcmV0dXJuIHR5cGVvZiBhPT09Im51bWJlciI/SmNhKGEpOkVjYShhKX07Cl8uWGNhPWZ1bmN0aW9uKGEsYj0hMSl7dmFyIGM9dHlwZW9mIGE7aWYoYT09bnVsbClyZXR1cm4gYTtpZihjPT09ImJpZ2ludCIpcmV0dXJuIFN0cmluZyhGY2EoNjQsYSkpO2lmKEFjYShhKSlyZXR1cm4gYz09PSJzdHJpbmciP0VjYShhKTpiP0djYShhKTpKY2EoYSl9O18ua2I9ZnVuY3Rpb24oYSl7dmFyIGI9dHlwZW9mIGE7aWYoYT09bnVsbClyZXR1cm4gYTtpZihiPT09ImJpZ2ludCIpcmV0dXJuIF8uWWEoRmNhKDY0LGEpKTtpZihBY2EoYSkpcmV0dXJuIGI9PT0ic3RyaW5nIj9IY2EoYSk6SWNhKGEpfTsKXy5ZY2E9ZnVuY3Rpb24oYSxiKXtiIT1udWxsfHwoYj0xMDI0KTtpZighQWNhKGEpKXRocm93IHBjYSgidWludDY0Iik7dmFyIGM9dHlwZW9mIGE7c3dpdGNoKGIpe2Nhc2UgNTEyOnN3aXRjaChjKXtjYXNlICJzdHJpbmciOnJldHVybiBTY2EoYSk7Y2FzZSAiYmlnaW50IjpyZXR1cm4gU3RyaW5nKFRjYSg2NCxhKSk7ZGVmYXVsdDpyZXR1cm4gUWNhKGEpfWNhc2UgMTAyNDpzd2l0Y2goYyl7Y2FzZSAic3RyaW5nIjpyZXR1cm4gVWNhKGEpO2Nhc2UgImJpZ2ludCI6cmV0dXJuIF8uWWEoVGNhKDY0LGEpKTtkZWZhdWx0OnJldHVybiBSY2EoYSl9Y2FzZSAwOnN3aXRjaChjKXtjYXNlICJzdHJpbmciOnJldHVybiBTY2EoYSk7Y2FzZSAiYmlnaW50IjpyZXR1cm4gXy5ZYShUY2EoNjQsYSkpO2RlZmF1bHQ6cmV0dXJuIFBjYShhKX1kZWZhdWx0OnJldHVybiBfLmViKGIsIlVua25vd24gZm9ybWF0IHJlcXVlc3RlZCB0eXBlIGZvciBpbnQ2NCIpfX07Cl8uWmNhPWZ1bmN0aW9uKGEpe3JldHVybiBhPT1udWxsP2E6Xy5ZY2EoYSx2b2lkIDApfTtfLiRjYT1mdW5jdGlvbihhKXtpZihhPT1udWxsKXJldHVybiBhO2lmKHR5cGVvZiBhPT09ImJpZ2ludCIpcmV0dXJuIGE+PTAmJlZjYShhKT9hPU51bWJlcihhKTooYT1UY2EoNjQsYSksYT1WY2EoYSk/TnVtYmVyKGEpOlN0cmluZyhhKSksYTtpZihBY2EoYSkpcmV0dXJuIHR5cGVvZiBhPT09Im51bWJlciI/UGNhKGEpOlNjYShhKX07Xy5hZGE9ZnVuY3Rpb24oYSl7dmFyIGI9dHlwZW9mIGE7aWYoYT09bnVsbClyZXR1cm4gYTtpZihiPT09ImJpZ2ludCIpcmV0dXJuIFN0cmluZyhUY2EoNjQsYSkpO2lmKEFjYShhKSlyZXR1cm4gYj09PSJzdHJpbmciP1NjYShhKTpQY2EoYSl9OwpfLmxiPWZ1bmN0aW9uKGEpe3ZhciBiPXR5cGVvZiBhO2lmKGE9PW51bGwpcmV0dXJuIGE7aWYoYj09PSJiaWdpbnQiKXJldHVybiBfLllhKFRjYSg2NCxhKSk7aWYoQWNhKGEpKXJldHVybiBiPT09InN0cmluZyI/VWNhKGEpOlJjYShhKX07Xy5iZGE9ZnVuY3Rpb24oYSl7aWYoYT09bnVsbClyZXR1cm4gYTt2YXIgYj10eXBlb2YgYTtpZihiPT09ImJpZ2ludCIpcmV0dXJuIFN0cmluZyhGY2EoNjQsYSkpO2lmKEFjYShhKSl7aWYoYj09PSJzdHJpbmciKXJldHVybiBFY2EoYSk7aWYoYj09PSJudW1iZXIiKXJldHVybiBKY2EoYSl9fTtfLmNkYT1mdW5jdGlvbihhKXtpZihhPT1udWxsKXJldHVybiBhO3ZhciBiPXR5cGVvZiBhO2lmKGI9PT0iYmlnaW50IilyZXR1cm4gU3RyaW5nKFRjYSg2NCxhKSk7aWYoQWNhKGEpKXtpZihiPT09InN0cmluZyIpcmV0dXJuIFNjYShhKTtpZihiPT09Im51bWJlciIpcmV0dXJuIFBjYShhKX19OwpkZGE9ZnVuY3Rpb24oYSl7aWYoYT09bnVsbHx8dHlwZW9mIGE9PSJzdHJpbmcifHxhIGluc3RhbmNlb2YgXy5TYSlyZXR1cm4gYX07ZWRhPWZ1bmN0aW9uKGEpe2lmKHR5cGVvZiBhIT09InN0cmluZyIpdGhyb3cgRXJyb3IoKTtyZXR1cm4gYX07ZmRhPWZ1bmN0aW9uKGEpe2lmKGEhPW51bGwmJnR5cGVvZiBhIT09InN0cmluZyIpdGhyb3cgRXJyb3IoKTtyZXR1cm4gYX07Z2RhPWZ1bmN0aW9uKGEpe3JldHVybiBhPT1udWxsfHx0eXBlb2YgYT09PSJzdHJpbmciP2E6dm9pZCAwfTtqZGE9ZnVuY3Rpb24oYSxiLGMsZCl7aWYoYmNhKGEpKXJldHVybiBhO2lmKCFBcnJheS5pc0FycmF5KGEpKXJldHVybiBjP2QmMj9iW2hkYV18fChiW2hkYV09aWRhKGIpKTpuZXcgYjp2b2lkIDA7Yz1hW18uYmJdfDA7ZD1jfGQmMzJ8ZCYyO2QhPT1jJiYoYVtfLmJiXT1kKTtyZXR1cm4gbmV3IGIoYSl9O2lkYT1mdW5jdGlvbihhKXthPW5ldyBhO18uWGJhKGEuUGspO3JldHVybiBhfTsKXy5tYj1mdW5jdGlvbihhLGIsYyl7YT1iP0RjYShhKTpfLmdiKGEpO3JldHVybiBhPT1udWxsP2M/MDp2b2lkIDA6YXwwfTtrZGE9ZnVuY3Rpb24oYSxiLGMpe2E9Yj9fLmhiKGEpOl8uaWIoYSk7Yj1hPT1udWxsP2M/MDp2b2lkIDA6YT4+PjA7cmV0dXJuIHR5cGVvZiBiPT09Im51bWJlciI/Yj4+PjA6Yn07Xy5uYj1mdW5jdGlvbihhLGIsYyl7aWYoYilyZXR1cm4gZWRhKGEpO3ZhciBkO3JldHVybihkPWdkYShhKSkhPW51bGw/ZDpjPyIiOnZvaWQgMH07Cl8uc2RhPWZ1bmN0aW9uKGEsYixjKXtpZih0eXBlb2YgQmlnSW50NjRBcnJheSE9PSJ1bmRlZmluZWQiKXJldHVybiBsZGF8fChsZGE9bmV3IEJpZ0ludDY0QXJyYXkoMSksbWRhPW5ldyBVaW50MzJBcnJheShsZGEuYnVmZmVyKSxsZGFbMF09QmlnSW50KDEpLG5kYT1tZGFbMF09PT0xKSxsZGFbMF09YSxhPW5kYT8wOjEsbmV3IGIobWRhW2FdLG1kYVsxLWFdKTtvZGF8fChwZGE9QmlnSW50KE51bWJlci5NSU5fU0FGRV9JTlRFR0VSKSxxZGE9QmlnSW50KE51bWJlci5NQVhfU0FGRV9JTlRFR0VSKSxyZGE9QmlnSW50KDQyOTQ5NjcyOTUpLG9kYT1CaWdJbnQoMzIpKTtpZihhPj1wZGEmJmE8PXFkYSlyZXR1cm4gYyhOdW1iZXIoYSkpO2E9QmlnSW50LmFzVWludE4oNjQsYSk7cmV0dXJuIG5ldyBiKE51bWJlcihhJnJkYSksTnVtYmVyKGE+Pm9kYSkpfTtfLnVkYT1mdW5jdGlvbihhKXtzd2l0Y2godHlwZW9mIGEpe2Nhc2UgInN0cmluZyI6Xy50ZGEoYSl9fTt3ZGE9ZnVuY3Rpb24oYSl7c3dpdGNoKHR5cGVvZiBhKXtjYXNlICJzdHJpbmciOl8udmRhKGEpfX07Cl8ueGRhPWZ1bmN0aW9uKGEpe3N3aXRjaCh0eXBlb2YgYSl7Y2FzZSAic3RyaW5nIjphLmxlbmd0aCYmYVswXT09PSItIj9fLnZkYShhLnN1YnN0cmluZygxKSk6Xy52ZGEoYSl9fTtvYj1mdW5jdGlvbigpe3ZhciBhPWNsYXNze2NvbnN0cnVjdG9yKCl7dGhyb3cgRXJyb3IoKTt9fTtPYmplY3Quc2V0UHJvdG90eXBlT2YoYSxhLnByb3RvdHlwZSk7cmV0dXJuIGF9O18ueWRhPWZ1bmN0aW9uKGEpe3JldHVybiBhfTsKXy5DZGE9ZnVuY3Rpb24oYSxiLGMsZCl7dmFyIGU9emRhO3ZhciBmPUFkYTtpZihjLmxlbmd0aHx8ZCl7dmFyIGc9MCxoPTAsaz0wLG09MCxuPTA7Zm9yKHZhciBwPWMubGVuZ3RoLTE7cD49MDtwLS0pe3ZhciByPWNbcF07ZCYmcD09PWMubGVuZ3RoLTEmJnI9PT1kfHwobSsrLHIhPW51bGwmJmsrKyl9aWYoZClmb3IodmFyIHggaW4gZClwPSt4LGlzTmFOKHApfHwobis9QmRhKHApLGgrKyxwPmcmJihnPXApKTttPWUobSxrKStmKGgsZyxuKTt4PWs7cD1oO3I9Zzt2YXIgej1uO2ZvcihsZXQgSD1jLmxlbmd0aC0xO0g+PTA7SC0tKXt2YXIgQj1jW0hdO2lmKEI9PW51bGx8fGQmJkg9PT1jLmxlbmd0aC0xJiZCPT09ZCljb250aW51ZTtCPUgtYjtsZXQgSj1lKEIseCkrZihwLHIseik7SjxtJiYoYT0xK0IsbT1KKTtwKys7eC0tO3orPUJkYShCKTtyPU1hdGgubWF4KHIsQil9Yj1lKDAsMCkrZihwLHIseik7YjxtJiYoYT0xLG09Yik7aWYoZCl7cD1oO3I9Zzt6PW47eD1rO2ZvcihsZXQgSCBpbiBkKXtkPQorSDtpZihpc05hTihkKSljb250aW51ZTtpZihkPj0xMDI0KWNvbnRpbnVlO3AtLTt4Kys7ei09SC5sZW5ndGg7Zz1lKGQseCkrZihwLHIseik7ZzxtJiYoYT0xK2QsbT1nKX19ZT1hfWVsc2UgZT0xO3JldHVybiBlfTtBZGE9ZnVuY3Rpb24oYSxiKXtyZXR1cm4gYT09MD8wOjkqTWF0aC5tYXgoMTw8MzItTWF0aC5jbHozMihhK2EvMi0xKSw0KTw9Yj9hPT0wPzA6YTw0PzEwMCsoYS0xKSoxNjphPDY/MTQ4KyhhLTQpKjE2OmE8MTI/MjQ0KyhhLTYpKjE2OmE8MjI/NDM2KyhhLTEyKSoxOTphPDQ0PzgyMCsoYS0yMikqMTc6NTIrMzIqYTo0MCs0KmJ9O3pkYT1mdW5jdGlvbihhKXtyZXR1cm4gNDArNCphfTtCZGE9ZnVuY3Rpb24oYSl7cmV0dXJuIGE+PTEwMD9hPj0xRTQ/TWF0aC5jZWlsKE1hdGgubG9nMTAoMSthKSk6YTwxRTM/Mzo0OmE8MTA/MToyfTsKRGRhPWZ1bmN0aW9uKGEsYil7aWYodHlwZW9mIGI9PT0ic3RyaW5nIil0cnl7Yj1zYmEoYil9Y2F0Y2goYyl7cmV0dXJuITF9cmV0dXJuIHRiYShiKSYmdWJhKGEsYil9O0VkYT1mdW5jdGlvbihhKXtzd2l0Y2goYSl7Y2FzZSAiYmlnaW50IjpjYXNlICJzdHJpbmciOmNhc2UgIm51bWJlciI6cmV0dXJuITA7ZGVmYXVsdDpyZXR1cm4hMX19O0dkYT1mdW5jdGlvbihhLGIpe2lmKGFbXy4kYmFdPT09Xy5hY2EpYT1hLlBrO2Vsc2UgaWYoIUFycmF5LmlzQXJyYXkoYSkpcmV0dXJuITE7aWYoYltfLiRiYV09PT1fLmFjYSliPWIuUGs7ZWxzZSBpZighQXJyYXkuaXNBcnJheShiKSlyZXR1cm4hMTtyZXR1cm4gRmRhKGEsYix2b2lkIDAsMil9O0hkYT1mdW5jdGlvbihhLGIsYyl7cmV0dXJuIEZkYShhLGIsYywwKX07CkZkYT1mdW5jdGlvbihhLGIsYyxkKXtpZihhPT09Ynx8YT09bnVsbCYmYj09bnVsbClyZXR1cm4hMDtpZihhIGluc3RhbmNlb2YgTWFwKXJldHVybiBJZGEoYSxiLGMpO2lmKGIgaW5zdGFuY2VvZiBNYXApcmV0dXJuIElkYShiLGEsYyk7aWYoYT09bnVsbHx8Yj09bnVsbClyZXR1cm4hMTtpZihhIGluc3RhbmNlb2YgXy5TYSlyZXR1cm4gSmRhKGEsYik7aWYoYiBpbnN0YW5jZW9mIF8uU2EpcmV0dXJuIEpkYShiLGEpO2lmKHRiYShhKSlyZXR1cm4gRGRhKGEsYik7aWYodGJhKGIpKXJldHVybiBEZGEoYixhKTt2YXIgZT10eXBlb2YgYSxmPXR5cGVvZiBiO2lmKGUhPT0ib2JqZWN0Inx8ZiE9PSJvYmplY3QiKXJldHVybiBOdW1iZXIuaXNOYU4oYSl8fE51bWJlci5pc05hTihiKT9TdHJpbmcoYSk9PT1TdHJpbmcoYik6RWRhKGUpJiZFZGEoZik/IiIrYT09PSIiK2I6ZT09PSJib29sZWFuIiYmZj09PSJudW1iZXIifHxlPT09Im51bWJlciImJmY9PT0iYm9vbGVhbiI/IWE9PT0hYjohMTsKaWYoYVtfLiRiYV09PT1fLmFjYXx8YltfLiRiYV09PT1fLmFjYSlyZXR1cm4gR2RhKGEsYik7aWYoYS5jb25zdHJ1Y3RvciE9Yi5jb25zdHJ1Y3RvcilyZXR1cm4hMTtpZihhLmNvbnN0cnVjdG9yPT09QXJyYXkpe2Y9YVtfLmJiXXwwO3ZhciBnPWJbXy5iYl18MCxoPWEubGVuZ3RoLGs9Yi5sZW5ndGgsbT1NYXRoLm1heChoLGspO2U9KGZ8Z3w2NCkmMTI4PzA6LTE7aWYoZD09PTF8fChmfGcpJjEpZD0xO2Vsc2UgaWYoKGZ8ZykmODE5MilyZXR1cm4gS2RhKGEsYik7Zj1oJiZhW2gtMV07Zz1rJiZiW2stMV07ZiE9bnVsbCYmdHlwZW9mIGY9PT0ib2JqZWN0IiYmZi5jb25zdHJ1Y3Rvcj09PU9iamVjdHx8KGY9bnVsbCk7ZyE9bnVsbCYmdHlwZW9mIGc9PT0ib2JqZWN0IiYmZy5jb25zdHJ1Y3Rvcj09PU9iamVjdHx8KGc9bnVsbCk7aD1oLWUtKyEhZjtrPWstZS0rISFnO2Zvcih2YXIgbj0wO248bTtuKyspaWYoIUxkYShuLWUsYSxmLGgsYixnLGssZSxjLGQpKXJldHVybiExO2lmKGYpZm9yKHZhciBwIGluIGYpe2Q9CmE7bT1mO249aDt2YXIgcj1iLHg9Zyx6PWssQj1lLEg9YztsZXQgSj0rcDtpZighKCFOdW1iZXIuaXNGaW5pdGUoSil8fEo8bnx8Sjx6fHxMZGEoSixkLG0sbixyLHgseixCLEgsMikpKXJldHVybiExfWlmKGcpZm9yKGxldCBKIGluIGcpaWYoKHA9ZiYmSiBpbiBmKXx8KHA9YSxkPWYsbT1oLG49YixyPWcseD1rLHo9ZSxCPWMsSD0rSixwPSFOdW1iZXIuaXNGaW5pdGUoSCl8fEg8bXx8SDx4PyEwOkxkYShILHAsZCxtLG4scix4LHosQiwyKSksIXApcmV0dXJuITE7cmV0dXJuITB9aWYoYS5jb25zdHJ1Y3Rvcj09PU9iamVjdClyZXR1cm4gSGRhKFthXSxbYl0pO3Rocm93IEVycm9yKCk7fTsKTGRhPWZ1bmN0aW9uKGEsYixjLGQsZSxmLGcsaCxrLG0pe2I9TWRhKGEsYixjLGQsaCk7ZT1NZGEoYSxlLGYsZyxoKTttPW09PT0xO2lmKGU9PW51bGwmJmljYShiLGEpfHxiPT1udWxsJiZpY2EoZSxhKSlyZXR1cm4hMDtrPW0/azprPT1udWxsP3ZvaWQgMDprLmthKGEpO3JldHVybiBGZGEoYixlLGssaGNhKGEpPzE6MCl9O01kYT1mdW5jdGlvbihhLGIsYyxkLGUpe3ZhciBmO3JldHVybihmPWE8ZD9iW2ErZV06dm9pZCAwKSE9bnVsbD9mOmM9PW51bGw/dm9pZCAwOmNbYV19O05kYT1mdW5jdGlvbihhKXtyZXR1cm4gYX07T2RhPWZ1bmN0aW9uKGEsYixjLGQsZSxmKXthPWpkYShhLGQsYyxmKTtlJiYoYT1hLk11KCkpO3JldHVybiBhfTtQZGE9ZnVuY3Rpb24oYSxiLGMpe2lmKGEuc2l6ZSE9Yi5zaXplKXJldHVybiExO3ZhciBkPSEwO2EuZm9yRWFjaCgoZSxmKT0+e0hkYShlLGIuZ2V0KGYpLGM9PW51bGw/dm9pZCAwOmMua2EoMikpfHwoZD0hMSl9KTtyZXR1cm4gZH07ClFkYT1mdW5jdGlvbihhLGIpe2lmKCFBcnJheS5pc0FycmF5KGEpfHwhQXJyYXkuaXNBcnJheShiKSlyZXR1cm4gMDthPSIiK2FbMF07Yj0iIitiWzBdO3JldHVybiBhPT09Yj8wOmE8Yj8tMToxfTtSZGE9ZnVuY3Rpb24oYSxiLGMpe2lmKGI9PW51bGwpcmV0dXJuIGEuc2l6ZT09PTA7aWYoIUFycmF5LmlzQXJyYXkoYil8fGEuc2l6ZT5iLmxlbmd0aClyZXR1cm4hMTtiPVsuLi5iXTtBcnJheS5wcm90b3R5cGUuc29ydC5jYWxsKGIsUWRhKTt2YXIgZD0wLGU9dm9pZCAwO2ZvcihsZXQgZj1iLmxlbmd0aC0xO2Y+PTA7Zi0tKXtsZXQgZz1iW2ZdO2lmKCFnfHwhQXJyYXkuaXNBcnJheShnKXx8Zy5sZW5ndGghPT0yKXJldHVybiExO2xldCBoPWdbMF07aWYoaCE9PWUpe2lmKCFIZGEoYS5nZXQoaCksZ1sxXSxjPT1udWxsP3ZvaWQgMDpjLmthKDIpKSlyZXR1cm4hMTtlPWg7ZCsrfX1yZXR1cm4gZD09PWEuc2l6ZX07CktkYT1mdW5jdGlvbihhLGIpe2lmKCFBcnJheS5pc0FycmF5KGEpfHwhQXJyYXkuaXNBcnJheShiKSlyZXR1cm4hMTthPVsuLi5hXTtiPVsuLi5iXTtBcnJheS5wcm90b3R5cGUuc29ydC5jYWxsKGEsUWRhKTtBcnJheS5wcm90b3R5cGUuc29ydC5jYWxsKGIsUWRhKTt2YXIgYz1hLmxlbmd0aCxkPWIubGVuZ3RoO2lmKGM9PT0wJiZkPT09MClyZXR1cm4hMDtmb3IodmFyIGU9MCxmPTA7ZTxjJiZmPGQ7KXtsZXQgZyxoPWFbZV07aWYoIUFycmF5LmlzQXJyYXkoaCkpcmV0dXJuITE7bGV0IGs9aFswXTtmb3IoO2U8Yy0xJiZIZGEoKGc9YVtlKzFdKVswXSxrKTspZSsrLGg9ZztsZXQgbSxuPWJbZl07aWYoIUFycmF5LmlzQXJyYXkobikpcmV0dXJuITE7bGV0IHA9blswXTtmb3IoO2Y8ZC0xJiZIZGEoKG09YltmKzFdKVswXSxwKTspZisrLG49bTtpZighSGRhKGsscCl8fCFIZGEoaFsxXSxuWzFdKSlyZXR1cm4hMTtlKys7ZisrfXJldHVybiBlPj1jJiZmPj1kfTsKU2RhPWZ1bmN0aW9uKGEpe3JldHVyblthLHRoaXMuZ2V0KGEpXX07VmRhPWZ1bmN0aW9uKCl7cmV0dXJuIFRkYXx8KFRkYT1uZXcgcGIoXy5YYmEoW10pLHZvaWQgMCx2b2lkIDAsdm9pZCAwLFVkYSkpfTtZZGE9ZnVuY3Rpb24oYSl7dmFyIGI9V2RhKFhkYSk7cmV0dXJuIGI/YVtiXTp2b2lkIDB9OyRkYT1mdW5jdGlvbihhLGIsYyl7aWYoYyl7dmFyIGQsZSxmOygoZj0oZT0oZD1hW1hkYV0pIT1udWxsP2Q6YVtYZGFdPW5ldyBaZGEpW2JdKSE9bnVsbD9mOmVbYl09W10pLnB1c2goYyl9fTthZWE9ZnVuY3Rpb24oYSxiKXthPWEuUGs7dmFyIGM9V2RhKFhkYSk7YyYmYyBpbiBhJiYoYT1hW2NdKSYmZGVsZXRlIGFbYl19O18uZGVhPWZ1bmN0aW9uKGEsYixjKXtpZihXZGEoYmVhKSYmV2RhKFhkYSkmJmM9PT1iZWEmJihhPWEuUGssYz1hW1hkYV0pJiYoYz1jLlljYikpdHJ5e2MoYSxiLGNlYSl9Y2F0Y2goZCl7Xy5mYShkKX19OwpfLmZlYT1mdW5jdGlvbihhLGIpe3ZhciBjPVdkYShYZGEpLGQ7YyYmKChkPWFbY10pPT1udWxsP3ZvaWQgMDpkW2JdKSE9bnVsbCYmcmNhKGVlYSwzKX07aGVhPWZ1bmN0aW9uKGEsYil7YjwxMDB8fHJjYShnZWEsMSl9OwpfLmxlYT1mdW5jdGlvbihhLGIsYyxkKXt2YXIgZT1kIT09dm9pZCAwO2Q9ISFkO3ZhciBmPVdkYShYZGEpLGc7IWUmJmYmJihnPWFbZl0pJiZpZWEoZyxoZWEpO2Y9W107dmFyIGg9YS5sZW5ndGg7Zz00Mjk0OTY3Mjk1O3ZhciBrPSExLG09ISEoYiY2NCksbj1tP2ImMTI4PzA6LTE6dm9pZCAwO2lmKCEoYiYxKSl7dmFyIHA9aCYmYVtoLTFdO3AhPW51bGwmJnR5cGVvZiBwPT09Im9iamVjdCImJnAuY29uc3RydWN0b3I9PT1PYmplY3Q/KGgtLSxnPWgpOnA9dm9pZCAwO2lmKG0mJiEoYiYxMjgpJiYhZSl7az0hMDt2YXIgcjtnPSgocj1fLmplYSkhPW51bGw/cjpfLnlkYSkoZy1uLG4sYSxwLHZvaWQgMCkrbn19Yj12b2lkIDA7Zm9yKHI9MDtyPGg7cisrKXtsZXQgej1hW3JdO2lmKHohPW51bGwmJih6PWMoeixkKSkhPW51bGwpaWYobSYmcj49Zyl7bGV0IEI9ci1uO3ZhciB4PXZvaWQgMDsoKHg9YikhPW51bGw/eDpiPXt9KVtCXT16fWVsc2UgZltyXT16fWlmKHApZm9yKGxldCB6IGluIHApe3g9CnBbel07aWYoeD09bnVsbHx8KHg9Yyh4LGQpKT09bnVsbCljb250aW51ZTtoPSt6O2xldCBCO2lmKG0mJiFOdW1iZXIuaXNOYU4oaCkmJihCPWgrbik8ZylmW0JdPXg7ZWxzZXtsZXQgSDsoKEg9YikhPW51bGw/SDpiPXt9KVt6XT14fX1iJiYoaz9mLnB1c2goYik6ZltnXT1iKTtlJiZXZGEoWGRhKSYmKGE9WWRhKGEpKSYmYSBpbnN0YW5jZW9mIFpkYSYmKGZbWGRhXT1rZWEoYSkpO3JldHVybiBmfTtuZWE9ZnVuY3Rpb24oYSl7YVswXT1fLm1lYShhWzBdKTthWzFdPV8ubWVhKGFbMV0pO3JldHVybiBhfTsKXy5tZWE9ZnVuY3Rpb24oYSl7c3dpdGNoKHR5cGVvZiBhKXtjYXNlICJudW1iZXIiOnJldHVybiBOdW1iZXIuaXNGaW5pdGUoYSk/YToiIithO2Nhc2UgImJpZ2ludCI6cmV0dXJuIFZjYShhKT9OdW1iZXIoYSk6IiIrYTtjYXNlICJib29sZWFuIjpyZXR1cm4gYT8xOjA7Y2FzZSAib2JqZWN0IjppZihBcnJheS5pc0FycmF5KGEpKXtsZXQgYj1hW18uYmJdfDA7cmV0dXJuIGEubGVuZ3RoPT09MCYmYiYxP3ZvaWQgMDpfLmxlYShhLGIsXy5tZWEpfWlmKGJjYShhKSlyZXR1cm4gb2VhKGEpO2lmKGEgaW5zdGFuY2VvZiBfLlNhKXJldHVybiBfLnFiKGEpO2lmKGEgaW5zdGFuY2VvZiBwYilyZXR1cm4gYT1hLnNpemUhPT0wP2EubGZiKG5lYSk6dm9pZCAwLGE7cmV0dXJufXJldHVybiBhfTtfLnJlYT1mdW5jdGlvbihhLGIpe2lmKGIpe18uamVhPWI9PW51bGx8fGI9PT1fLnlkYXx8YltwZWFdIT09cWVhP18ueWRhOmI7dHJ5e3JldHVybiBvZWEoYSl9ZmluYWxseXtfLmplYT12b2lkIDB9fXJldHVybiBvZWEoYSl9OwpvZWE9ZnVuY3Rpb24oYSl7YT1hLlBrO3JldHVybiBfLmxlYShhLGFbXy5iYl18MCxfLm1lYSl9O3NlYT1mdW5jdGlvbihhKXtpZighQXJyYXkuaXNBcnJheShhKSl0aHJvdyBFcnJvcigpO2lmKE9iamVjdC5pc0Zyb3plbihhKXx8T2JqZWN0LmlzU2VhbGVkKGEpfHwhT2JqZWN0LmlzRXh0ZW5zaWJsZShhKSl0aHJvdyBFcnJvcigpO3JldHVybiBhfTtfLkllYT1mdW5jdGlvbihhKXtzd2l0Y2godHlwZW9mIGEpe2Nhc2UgImJvb2xlYW4iOnJldHVybiBfLnRlYXx8KF8udGVhPVswLHZvaWQgMCwhMF0pO2Nhc2UgIm51bWJlciI6cmV0dXJuIGE+MD92b2lkIDA6YT09PTA/SGVhfHwoSGVhPVswLHZvaWQgMF0pOlstYSx2b2lkIDBdO2Nhc2UgInN0cmluZyI6cmV0dXJuWzAsYV07Y2FzZSAib2JqZWN0IjpyZXR1cm4gYX19O18uS2VhPWZ1bmN0aW9uKGEsYil7cmV0dXJuIEplYShhLGJbMF0sYlsxXSl9OwpKZWE9ZnVuY3Rpb24oYSxiLGMsZD0wKXtpZihhPT1udWxsKXt2YXIgZT0zMjtjPyhhPVtjXSxlfD0xMjgpOmE9W107YiYmKGU9ZSYtMTY3NjA4MzN8KGImMTAyMyk8PDE0KX1lbHNle2lmKCFBcnJheS5pc0FycmF5KGEpKXRocm93IEVycm9yKCJHIik7ZT1hW18uYmJdfDA7aWYoTGVhJiYxJmUpdGhyb3cgRXJyb3IoIkgiKTsyMDQ4JmUmJiEoMiZlKSYmTWVhKCk7aWYoZSYyNTYpdGhyb3cgRXJyb3IoIkkiKTtpZihlJjY0KXJldHVybihlfGQpIT09ZSYmKGFbXy5iYl09ZXxkKSxhO2lmKGMmJihlfD0xMjgsYyE9PWFbMF0pKXRocm93IEVycm9yKCJKIik7YTp7Yz1hO2V8PTY0O3ZhciBmPWMubGVuZ3RoO2lmKGYpe3ZhciBnPWYtMTtsZXQgaz1jW2ddO2lmKGshPW51bGwmJnR5cGVvZiBrPT09Im9iamVjdCImJmsuY29uc3RydWN0b3I9PT1PYmplY3Qpe2I9ZSYxMjg/MDotMTtnLT1iO2lmKGc+PTEwMjQpdGhyb3cgRXJyb3IoIkwiKTtmb3IodmFyIGggaW4gaylpZihmPStoLGY8ZyljW2YrCmJdPWtbaF0sZGVsZXRlIGtbaF07ZWxzZSBicmVhaztlPWUmLTE2NzYwODMzfChnJjEwMjMpPDwxNDticmVhayBhfX1pZihiKXtoPU1hdGgubWF4KGIsZi0oZSYxMjg/MDotMSkpO2lmKGg+MTAyNCl0aHJvdyBFcnJvcigiTSIpO2U9ZSYtMTY3NjA4MzN8KGgmMTAyMyk8PDE0fX19YVtfLmJiXT1lfDY0fGQ7cmV0dXJuIGF9O01lYT1mdW5jdGlvbigpe2lmKExlYSl0aHJvdyBFcnJvcigiSyIpO3JjYShOZWEsNSl9OwpRZWE9ZnVuY3Rpb24oYSxiKXtpZih0eXBlb2YgYSE9PSJvYmplY3QiKXJldHVybiBhO2lmKEFycmF5LmlzQXJyYXkoYSkpe3ZhciBjPWFbXy5iYl18MDtyZXR1cm4gYS5sZW5ndGg9PT0wJiZjJjE/dm9pZCAwOk9lYShhLGMsYil9aWYoYmNhKGEpKXJldHVybiBQZWEoYSk7aWYoYSBpbnN0YW5jZW9mIHBiKXtiPWEuSWJhO2lmKGImMilyZXR1cm4gYTtpZighYS5zaXplKXJldHVybjtjPV8uWGJhKGEubGZiKCkpO2lmKGEuRXNhKWZvcihhPTA7YTxjLmxlbmd0aDthKyspe2xldCBkPWNbYV0sZT1kWzFdO2U9PW51bGx8fHR5cGVvZiBlIT09Im9iamVjdCI/ZT12b2lkIDA6YmNhKGUpP2U9UGVhKGUpOkFycmF5LmlzQXJyYXkoZSk/ZT1PZWEoZSxlW18uYmJdfDAsISEoYiYzMikpOmU9dm9pZCAwO2RbMV09ZX1yZXR1cm4gY31pZihhIGluc3RhbmNlb2YgXy5TYSlyZXR1cm4gYX07Ck9lYT1mdW5jdGlvbihhLGIsYyl7aWYoYiYyKXJldHVybiBhOyFjfHw0MDk2JmJ8fDE2JmI/YT1SZWEoYSxiLCExLGMmJiEoYiYxNikpOihWYmEoYSwzNCksYiY0JiZPYmplY3QuZnJlZXplKGEpKTtyZXR1cm4gYX07U2VhPWZ1bmN0aW9uKGEsYixjKXthPW5ldyBhLmNvbnN0cnVjdG9yKGIpO2MmJmRjYShhLCEwKTthLkZhYj1jY2E7cmV0dXJuIGF9O1BlYT1mdW5jdGlvbihhKXt2YXIgYj1hLlBrLGM9YltfLmJiXXwwO3JldHVybiBfLmNiKGEsYyk/YTpUZWEoYSxiLGMpP1NlYShhLGIpOlJlYShiLGMpfTtSZWE9ZnVuY3Rpb24oYSxiLGMsZCl7ZCE9bnVsbHx8KGQ9ISEoMzQmYikpO2E9Xy5sZWEoYSxiLFFlYSxkKTtkPTMyO2MmJihkfD0yKTtiPWImMTY3NjkyMTd8ZDthW18uYmJdPWI7cmV0dXJuIGF9OwpVZWE9ZnVuY3Rpb24oYSl7dmFyIGI9YS5QayxjPWJbXy5iYl18MDtyZXR1cm4gXy5jYihhLGMpP1RlYShhLGIsYyk/U2VhKGEsYiwhMCk6bmV3IGEuY29uc3RydWN0b3IoUmVhKGIsYywhMSkpOmF9O1ZlYT1mdW5jdGlvbihhKXtpZihhLkNjIT09Y2NhKXJldHVybiExO3ZhciBiPWEuUGs7Yj1SZWEoYixiW18uYmJdfDApO1ZiYShiLDIwNDgpO2EuUGs9YjtkY2EoYSwhMSk7YS5GYWI9dm9pZCAwO3JldHVybiEwfTtfLnJiPWZ1bmN0aW9uKGEpe2lmKCFWZWEoYSkmJl8uY2IoYSxhLlBrW18uYmJdfDApKXRocm93IEVycm9yKCk7fTt0Yj1mdW5jdGlvbihhLGIpe2I9PT12b2lkIDAmJihiPWFbXy5iYl18MCk7YiYzMiYmIShiJjQwOTYpJiYoYVtfLmJiXT1ifDQwOTYpfTtUZWE9ZnVuY3Rpb24oYSxiLGMpe3JldHVybiBjJjI/ITA6YyYzMiYmIShjJjQwOTYpPyhiW18uYmJdPWN8MixkY2EoYSwhMCksITApOiExfTsKXy51Yj1mdW5jdGlvbihhLGIsYyxkLGUpe3ZhciBmPWMrKGU/MDotMSksZz1hLmxlbmd0aC0xO2lmKGc+PTErKGU/MDotMSkmJmY+PWcpe2xldCBoPWFbZ107aWYoaCE9bnVsbCYmdHlwZW9mIGg9PT0ib2JqZWN0IiYmaC5jb25zdHJ1Y3Rvcj09PU9iamVjdClyZXR1cm4gaFtjXT1kLGJ9aWYoZjw9ZylyZXR1cm4gYVtmXT1kLGI7aWYoZCE9PXZvaWQgMCl7bGV0IGg7Zz0oKGg9YikhPW51bGw/aDpiPWFbXy5iYl18MCk+PjE0JjEwMjN8fDUzNjg3MDkxMjtjPj1nP2QhPW51bGwmJihhW2crKGU/MDotMSldPXtbY106ZH0pOmFbZl09ZH1yZXR1cm4gYn07Cl8ud2I9ZnVuY3Rpb24oYSxiLGMsZCxlLGYsZyl7dmFyIGg9YS5QayxrPWhbXy5iYl18MDtkPV8uY2IoYSxrKT8xOmQ7ZT0hIWV8fGQ9PT0zO2Q9PT0yJiZWZWEoYSkmJihoPWEuUGssaz1oW18uYmJdfDApO3ZhciBtPVdlYShoLGIsZyksbj1tPT09WGVhPzc6bVtfLmJiXXwwLHA9WWVhKG4sayk7dmFyIHI9cDs0JnI/Zj09bnVsbD9hPSExOighZSYmZj09PTAmJig1MTImcnx8MTAyNCZyKSYmKGEuY29uc3RydWN0b3JbWmVhXT0oYS5jb25zdHJ1Y3RvcltaZWFdfDApKzEpPDUmJm9jYSgpLGE9Zj09PTA/ITE6IShmJnIpKTphPSEwO2lmKGEpezQmcCYmKG09Wy4uLm1dLG49MCxwPSRlYShwLGspLGs9Xy51YihoLGssYixtLGcpKTtsZXQgeD1yPTA7Zm9yKDtyPG0ubGVuZ3RoO3IrKyl7bGV0IHo9YyhtW3JdKTt6IT1udWxsJiYobVt4KytdPXopfXg8ciYmKG0ubGVuZ3RoPXgpO2M9KHB8NCkmLTUxMztwPWMmPS0xMDI1O2YmJihwfD1mKTtwJj0tNDA5N31wIT09biYmKG1bXy5iYl09cCwyJgpwJiZPYmplY3QuZnJlZXplKG0pKTtyZXR1cm4gbT1hZmEobSxwLGgsayxiLGcsZCxhLGUpfTthZmE9ZnVuY3Rpb24oYSxiLGMsZCxlLGYsZyxoLGspe3ZhciBtPWI7Zz09PTF8fChnIT09ND8wOjImYnx8ISgxNiZiKSYmMzImZCk/YmZhKGIpfHwoYnw9IWEubGVuZ3RofHxoJiYhKDQwOTYmYil8fDMyJmQmJiEoNDA5NiZifHwxNiZiKT8yOjI1NixiIT09bSYmKGFbXy5iYl09YiksT2JqZWN0LmZyZWV6ZShhKSk6KGc9PT0yJiZiZmEoYikmJihhPVsuLi5hXSxtPTAsYj0kZWEoYixkKSxkPV8udWIoYyxkLGUsYSxmKSksYmZhKGIpfHwoa3x8KGJ8PTE2KSxiIT09bSYmKGFbXy5iYl09YikpKTsyJmJ8fCEoNDA5NiZifHwxNiZiKXx8dGIoYyxkKTtyZXR1cm4gYX07V2VhPWZ1bmN0aW9uKGEsYixjKXthPV8ueGIoYSxiLGMpO3JldHVybiBBcnJheS5pc0FycmF5KGEpP2E6WGVhfTtZZWE9ZnVuY3Rpb24oYSxiKXsyJmImJihhfD0yKTtyZXR1cm4gYXwxfTsKYmZhPWZ1bmN0aW9uKGEpe3JldHVybiEhKDImYSkmJiEhKDQmYSl8fCEhKDI1NiZhKX07Xy5jZmE9ZnVuY3Rpb24oYSl7cmV0dXJuIF8uZ2NhKGEsITAsITApfTtkZmE9ZnVuY3Rpb24oYSl7YT1bLi4uYV07Zm9yKGxldCBiPTA7YjxhLmxlbmd0aDtiKyspe2xldCBjPWFbYl09Wy4uLmFbYl1dO0FycmF5LmlzQXJyYXkoY1sxXSkmJihjWzFdPV8uWGJhKGNbMV0pKX1yZXR1cm4gWWJhKGEpfTsKXy5lZmE9ZnVuY3Rpb24oYSxiLGMsZCxlLGYsZyxoLGspeyFkJiZWZWEoYSkmJihiPWEuUGssYz1iW18uYmJdfDApO3ZhciBtPV8ueGIoYixlLGspO2E9ITE7aWYobT09bnVsbCl7aWYoZClyZXR1cm4gVmRhKCk7bT1bXX1lbHNlIGlmKG0uY29uc3RydWN0b3I9PT1wYilpZihtLkliYSYyJiYhZCltPW0ubGZiKCk7ZWxzZSByZXR1cm4gbTtlbHNlIEFycmF5LmlzQXJyYXkobSk/YT0hISgobVtfLmJiXXwwKSYyKTptPVtdO2lmKGQpe2lmKCFtLmxlbmd0aClyZXR1cm4gVmRhKCk7YXx8KGE9ITAsXy5YYmEobSkpfWVsc2UgYSYmKGE9ITEsWWJhKG0pLG09ZGZhKG0pKTshYSYmYyYzMiYmWmJhKG0pO2Q9bmV3IHBiKG0sZixnLGgpO2M9Xy51YihiLGMsZSxkLGspO2F8fHRiKGIsYyk7cmV0dXJuIGR9OwpfLnliPWZ1bmN0aW9uKGEsYixjLGQsZSxmKXt2YXIgZz1hLlBrLGg9Z1tfLmJiXXwwO3ZhciBrPV8uY2IoYSxoKTthPV8uZWZhKGEsZyxoLGssYixjLGQsZSxmKTshayYmYyYmKGEucm5jPSEwKTtyZXR1cm4gYX07Xy5mZmE9ZnVuY3Rpb24oYSxiLGMsZCxlKXtyZXR1cm4gXy55YihhLGIsdm9pZCAwLGMsZCxlKX07Xy5nZmE9ZnVuY3Rpb24oYSxiKXt0aGlzLnNldChiLGEpfTsKXy56Yj1mdW5jdGlvbihhLGIsYyxkLGUpe18ucmIoYSk7dmFyIGY9YS5QayxnPWZbXy5iYl18MDtpZihjPT1udWxsKXJldHVybiBfLnViKGYsZyxiLHZvaWQgMCxlKSxhO3ZhciBoPWM9PT1YZWE/NzpjW18uYmJdfDAsaz1oLG09YmZhKGgpLG49bXx8T2JqZWN0LmlzRnJvemVuKGMpO218fChoPTApO258fChjPVsuLi5jXSxrPTAsaD0kZWEoaCxnKSxuPSExKTtofD01O3ZhciBwO209KHA9V2JhKGgpKSE9bnVsbD9wOjEwMjQ7aHw9bTtmb3IocD0wO3A8Yy5sZW5ndGg7cCsrKXtsZXQgcj1jW3BdLHg9ZChyLG0pO09iamVjdC5pcyhyLHgpfHwobiYmKGM9Wy4uLmNdLGs9MCxoPSRlYShoLGcpLG49ITEpLGNbcF09eCl9aCE9PWsmJihuJiYoYz1bLi4uY10saD0kZWEoaCxnKSksY1tfLmJiXT1oKTtfLnViKGYsZyxiLGMsZSk7cmV0dXJuIGF9OwpfLkFiPWZ1bmN0aW9uKGEsYixjLGQsZSl7Xy5yYihhKTt2YXIgZj1hLlBrO18udWIoZixmW18uYmJdfDAsYiwoZD09PSIwIj9OdW1iZXIoYyk9PT0wOmM9PT1kKT92b2lkIDA6YyxlKTtyZXR1cm4gYX07Xy5pZmE9ZnVuY3Rpb24oYSxiLGMsZCxlKXtyZXR1cm4gXy5oZmEoYSxiLGMsZCx2b2lkIDAsZSx2b2lkIDAsdm9pZCAwLCEwKX07amZhPWZ1bmN0aW9uKGEsYixjKXtpZihiJjIpdGhyb3cgRXJyb3IoKTt2YXIgZD1fLm1jYShiKSxlPVdlYShhLGMsZCksZj1lPT09WGVhPzc6ZVtfLmJiXXwwLGc9WWVhKGYsYik7aWYoMiZnfHxiZmEoZyl8fDE2JmcpZz09PWZ8fGJmYShnKXx8KGVbXy5iYl09ZyksZT1bLi4uZV0sZj0wLGc9JGVhKGcsYiksXy51YihhLGIsYyxlLGQpO2cmPS0xMztnIT09ZiYmKGVbXy5iYl09Zyk7cmV0dXJuIGV9O2xmYT1mdW5jdGlvbihhKXt2YXIgYjtyZXR1cm4oYj1hW2tmYV0pIT1udWxsP2I6YVtrZmFdPW5ldyBNYXB9OwpfLm5mYT1mdW5jdGlvbihhLGIsYyxkLGUpe3ZhciBmPWxmYShhKSxnPW1mYShmLGEsYixjLGUpO2chPT1kJiYoZyYmKGI9Xy51YihhLGIsZyx2b2lkIDAsZSkpLGYuc2V0KGMsZCkpO3JldHVybiBifTttZmE9ZnVuY3Rpb24oYSxiLGMsZCxlKXt2YXIgZj1hLmdldChkKTtpZihmIT1udWxsKXJldHVybiBmO2Y9MDtmb3IobGV0IGc9MDtnPGQubGVuZ3RoO2crKyl7bGV0IGg9ZFtnXTtfLnhiKGIsaCxlKSE9bnVsbCYmKGYhPT0wJiYoYz1fLnViKGIsYyxmLHZvaWQgMCxlKSksZj1oKX1hLnNldChkLGYpO3JldHVybiBmfTtvZmE9ZnVuY3Rpb24oYSxiLGMsZCxlKXt2YXIgZj0hMTtkPV8ueGIoYSxkLGUsZz0+e3ZhciBoPWpkYShnLGMsITEsYik7Zj1oIT09ZyYmaCE9bnVsbDtyZXR1cm4gaH0pO2lmKGQhPW51bGwpcmV0dXJuIGYmJiFfLmNiKGQpJiZ0YihhLGIpLGR9OwpwZmE9ZnVuY3Rpb24oYSxiLGMsZCxlLGYsZyxoLGspe3ZhciBtPV8uY2IoYSxjKTtmPW0/MTpmO2g9ISFofHxmPT09MzttPWsmJiFtOyhmPT09Mnx8bSkmJlZlYShhKSYmKGI9YS5QayxjPWJbXy5iYl18MCk7YT1XZWEoYixlLGcpO3ZhciBuPWE9PT1YZWE/NzphW18uYmJdfDAscD1ZZWEobixjKTtpZihrPSEoNCZwKSl7dmFyIHI9YSx4PWM7bGV0IHo9ISEoMiZwKTt6JiYoeHw9Mik7bGV0IEI9IXosSD0hMCxKPTAsTj0wO2Zvcig7SjxyLmxlbmd0aDtKKyspe2xldCBRPWpkYShyW0pdLGQsITEseCk7aWYoUSBpbnN0YW5jZW9mIGQpe2lmKCF6KXtsZXQgWj1fLmNiKFEpO0ImJihCPSFaKTtIJiYoSD1aKX1yW04rK109UX19TjxKJiYoci5sZW5ndGg9Tik7cHw9NDtwPUg/cCYtNDA5NzpwfDQwOTY7cD1CP3B8ODpwJi05fXAhPT1uJiYoYVtfLmJiXT1wLDImcCYmT2JqZWN0LmZyZWV6ZShhKSk7aWYobSYmISg4JnB8fCFhLmxlbmd0aCYmKGY9PT0xfHwoZiE9PTQ/MDoyJnB8fCEoMTYmcCkmJgozMiZjKSkpKXtiZmEocCkmJihhPVsuLi5hXSxwPSRlYShwLGMpLGM9Xy51YihiLGMsZSxhLGcpKTtkPWE7bT1wO2ZvcihuPTA7bjxkLmxlbmd0aDtuKyspcj1kW25dLHA9VWVhKHIpLHIhPT1wJiYoZFtuXT1wKTttfD04O3A9bT1kLmxlbmd0aD9tfDQwOTY6bSYtNDA5NzthW18uYmJdPXB9cmV0dXJuIGE9YWZhKGEscCxiLGMsZSxnLGYsayxoKX07cWZhPWZ1bmN0aW9uKGEpe2E9PW51bGwmJihhPXZvaWQgMCk7cmV0dXJuIGF9OyRlYT1mdW5jdGlvbihhLGIpe3JldHVybiBhPSgyJmI/YXwyOmEmLTMpJi0yNzN9OwpfLmhmYT1mdW5jdGlvbihhLGIsYyxkLGUsZixnLGgsayl7Xy5yYihhKTtiPV8ud2IoYSxiLGYsMiwhMCx2b2lkIDAsZyk7dmFyIG07Zj0obT1XYmEoYj09PVhlYT83OmJbXy5iYl18MCkpIT1udWxsP206MTAyNDtpZihrKWlmKEFycmF5LmlzQXJyYXkoZCkpZm9yKGU9ZC5sZW5ndGgsaD0wO2g8ZTtoKyspYi5wdXNoKGMoZFtoXSxmKSk7ZWxzZSBmb3IobGV0IG4gb2YgZCliLnB1c2goYyhuLGYpKTtlbHNlIGgmJmtjYShiLGUpLGUhPXZvaWQgMD9iLnNwbGljZShlLGgsYyhkLGYpKTpiLnB1c2goYyhkLGYpKTtyZXR1cm4gYX07Cl8uQmI9ZnVuY3Rpb24oYSxiLGMsZCxlLGYsZyxoKXtfLnJiKGEpO3ZhciBrPWEuUGs7YT1wZmEoYSxrLGtbXy5iYl18MCxjLGIsMixkLCEwKTtpZihnJiZoKWYhPW51bGx8fChmPWEubGVuZ3RoLTEpLF8uamNhKGEsZiksYS5zcGxpY2UoZixnKSxhLmxlbmd0aHx8KGFbXy5iYl0mPS00MDk3KTtlbHNlIHJldHVybiBnP2tjYShhLGYpOmU9ZSE9bnVsbD9lOm5ldyBjLGYhPXZvaWQgMD9hLnNwbGljZShmLGcsZSk6YS5wdXNoKGUpLGY9Yz1hPT09WGVhPzc6YVtfLmJiXXwwLChnPV8uY2IoZSkpPyhjJj0tOSxhLmxlbmd0aD09PTEmJihjJj0tNDA5NykpOmN8PTQwOTYsYyE9PWYmJihhW18uYmJdPWMpLGd8fHRiKGspLGV9OwpfLkNiPWZ1bmN0aW9uKGEsYil7e2lmKF8uY2IoYSkpdGhyb3cgRXJyb3IoKTtpZihiLmNvbnN0cnVjdG9yIT09YS5jb25zdHJ1Y3Rvcil0aHJvdyBFcnJvcigiTiIpO2xldCBjPWIuUGssZD1jW18uYmJdfDA7VGVhKGIsYyxkKT8oYS5Qaz1jLGRjYShhLCEwKSxhLkZhYj1jY2EpOihiPWM9UmVhKGMsZCksVmJhKGIsMjA0OCksYS5Qaz1iLGRjYShhLCExKSxhLkZhYj12b2lkIDApfX07Xy5yZmE9ZnVuY3Rpb24oYSxiKXtpZihiPT1udWxsKXJldHVybiBuZXcgYTtiPXNlYShiKTtyZXR1cm4gbmV3IGEoWmJhKGIpKX07Xy5zZmE9ZnVuY3Rpb24oYSxiKXtiPT1udWxsPyhhPWEuY29uc3RydWN0b3IsYT1hW2hkYV18fChhW2hkYV09aWRhKGEpKSk6YT1uZXcgYS5jb25zdHJ1Y3RvcihfLlhiYShzZWEoYikpKTtyZXR1cm4gYX07Xy52ZmE9ZnVuY3Rpb24oYSxiLGM9Xy50ZmEpe3JldHVybiBuZXcgdWZhKGEsYiwhMSxjKX07CnlmYT1mdW5jdGlvbihhLGIsYyxkLGUpe3dmYShhLGMseGZhKGIsZCksZSl9OwpfLkNmYT1mdW5jdGlvbihhLGIsYyxkKXt2YXIgZT1kW2FdO2lmKGUpcmV0dXJuIGU7ZT17fTtlLnVrYj1kO2UudWphPV8uSWVhKGRbMF0pO3ZhciBmPWRbMV0sZz0xO2YmJmYuY29uc3RydWN0b3I9PT1PYmplY3QmJihlLmV4dGVuc2lvbnM9ZixmPWRbKytnXSx0eXBlb2YgZj09PSJmdW5jdGlvbiImJihlLldYYj0hMCx6ZmEhPW51bGx8fCh6ZmE9ZiksQWZhIT1udWxsfHwoQWZhPWRbZysxXSksZj1kW2crPTJdKSk7Zm9yKHZhciBoPXt9O2YmJkFycmF5LmlzQXJyYXkoZikmJmYubGVuZ3RoJiZ0eXBlb2YgZlswXT09PSJudW1iZXIiJiZmWzBdPjA7KXtmb3IodmFyIGs9MDtrPGYubGVuZ3RoO2srKyloW2Zba11dPWY7Zj1kWysrZ119Zm9yKGs9MTtmIT09dm9pZCAwOyl7dHlwZW9mIGY9PT0ibnVtYmVyIiYmKGsrPWYsZj1kWysrZ10pO2xldCBwO3ZhciBtPXZvaWQgMDtmIGluc3RhbmNlb2YgdWZhP3A9ZjoocD1CZmEsZy0tKTtsZXQgcjtpZigocj1wKT09bnVsbD8wOnIuQmEpe2Y9ZFsrK2ddOwptPWQ7dmFyIG49Zzt0eXBlb2YgZj09PSJmdW5jdGlvbiImJihmPWYoKSxtW25dPWYpO209Zn1mPWRbKytnXTtuPWsrMTt0eXBlb2YgZj09PSJudW1iZXIiJiZmPDAmJihuLT1mLGY9ZFsrK2ddKTtmb3IoO2s8bjtrKyspe2xldCB4PWhba107bT9jKGUsayxwLG0seCk6YihlLGsscCx4KX19cmV0dXJuIGRbYV09ZX07Xy5FZmE9ZnVuY3Rpb24oYSl7cmV0dXJuIEFycmF5LmlzQXJyYXkoYSk/YVswXWluc3RhbmNlb2YgdWZhP2E6W0RmYSxhXTpbYSx2b2lkIDBdfTt4ZmE9ZnVuY3Rpb24oYSxiKXtpZihhIGluc3RhbmNlb2YgXy5sKXJldHVybiBhLlBrO2lmKEFycmF5LmlzQXJyYXkoYSkpcmV0dXJuIF8uS2VhKGEsYil9O0ZmYT1mdW5jdGlvbihhLGIsYyxkKXt2YXIgZT1jLndhO2FbYl09ZD8oZixnLGgpPT5lKGYsZyxoLGQpOmV9OwpIZmE9ZnVuY3Rpb24oYSxiLGMsZCxlKXt2YXIgZj1jLndhLGcsaDthW2JdPShrLG0sbik9PmYoayxtLG4saHx8KGg9Xy5DZmEoR2ZhLEZmYSxIZmEsZCkudWphKSxnfHwoZz1JZmEoZCkpLGUpfTsKSWZhPWZ1bmN0aW9uKGEpe3ZhciBiPWFbSmZhXTtpZihiIT1udWxsKXJldHVybiBiO3ZhciBjPV8uQ2ZhKEdmYSxGZmEsSGZhLGEpO2I9Yy5XWGI/KGQsZSk9PnpmYShkLGUsYyk6KGQsZSk9PnthOntLZmEoKTt0cnl7Zm9yKDtMZmEoZSkmJmUua2EhPTQ7KXtsZXQgaD1lLndhLGs9Y1toXTtpZihrPT1udWxsKXtsZXQgbT1jLmV4dGVuc2lvbnM7aWYobSl7bGV0IG49bVtoXTtpZihuKXtsZXQgcD1NZmEobik7cCE9bnVsbCYmKGs9Y1toXT1wKX19fWshPW51bGwmJmsoZSxkLGgpfHwkZGEoZCxoLE5mYShlKSl9bGV0IGc9WWRhKGQpO2cmJihnLlljYj1jLnVrYltPZmFdKTt2YXIgZj0hMDticmVhayBhfWNhdGNoKGcpe2lmKGcgaW5zdGFuY2VvZiBSYW5nZUVycm9yKXRocm93IG5ldyBTeW50YXhFcnJvcjt0aHJvdyBnO31maW5hbGx5e1BmYT4wJiZQZmEtLX1mPXZvaWQgMH1yZXR1cm4gZn07YVtKZmFdPWI7YVtPZmFdPVFmYS5iaW5kKGEpO3JldHVybiBifTsKUWZhPWZ1bmN0aW9uKGEsYixjLGQpe3ZhciBlPXRoaXNbR2ZhXSxmPXRoaXNbSmZhXSxnPV8uS2VhKHZvaWQgMCxlLnVqYSksaD1ZZGEoYSk7aWYoaCl7dmFyIGs9ITEsbT1lLmV4dGVuc2lvbnM7aWYobSl7ZT0obixwLHIpPT57aWYoci5sZW5ndGghPT0wKWlmKG1bcF0pZm9yKGxldCB4IG9mIHIpe249UmZhKHgpO3RyeXtrPSEwLGYoZyxuKX1maW5hbGx5e1NmYShuKX19ZWxzZSBkPT1udWxsfHxkKGEscCxyKX07aWYoYj09bnVsbClpZWEoaCxlKTtlbHNlIGlmKGghPW51bGwpe2xldCBuPWhbYl07biYmZShoLGIsbil9aWYoayl7bGV0IG49YVtfLmJiXXwwO2lmKG4mMiYmbiYyMDQ4JiYoYz09bnVsbHx8IWMuSUxjKSl0aHJvdyBFcnJvcigpO2xldCBwPV8ubWNhKG4pLHI9KHgseik9PntpZihfLnhiKGEseCxwKSE9bnVsbClzd2l0Y2goYz09bnVsbD92b2lkIDA6Yy53RmQpe2Nhc2UgMTpyZXR1cm47ZGVmYXVsdDp0aHJvdyBFcnJvcigpO316IT1udWxsJiYobj1fLnViKGEsbix4LHosCnApKTtkZWxldGUgaFt4XX07Yj09bnVsbD9sY2EoZyxnW18uYmJdfDAsKHgseik9PntyKHgseil9KTpyKGIsXy54YihnLGIscCkpfX19fTtNZmE9ZnVuY3Rpb24oYSl7YT1fLkVmYShhKTt2YXIgYj1hWzBdLndhO2lmKGE9YVsxXSl7bGV0IGM9SWZhKGEpLGQ9Xy5DZmEoR2ZhLEZmYSxIZmEsYSkudWphO3JldHVybihlLGYsZyk9PmIoZSxmLGcsZCxjKX1yZXR1cm4gYn07Xy5XZmE9ZnVuY3Rpb24oYSl7cmV0dXJuIF8uQ2ZhKFRmYSxVZmEsVmZhLGEpfTtVZmE9ZnVuY3Rpb24oYSxiLGMpe2FbYl09Yy5BYX07VmZhPWZ1bmN0aW9uKGEsYixjLGQpe3ZhciBlLGYsZz1jLkFhO2FbYl09KGgsayxtKT0+ZyhoLGssbSxmfHwoZj1fLldmYShkKS51amEpLGV8fChlPVhmYShkKSkpfTtYZmE9ZnVuY3Rpb24oYSl7dmFyIGI9YVtZZmFdO2lmKCFiKXtsZXQgYz1fLldmYShhKTtiPShkLGUpPT5fLlpmYShkLGUsYyk7YVtZZmFdPWJ9cmV0dXJuIGJ9OwpfLlpmYT1mdW5jdGlvbihhLGIsYyl7bGNhKGEsYVtfLmJiXXwwLChkLGUpPT57aWYoZSE9bnVsbCl7dmFyIGY9JGZhKGMsZCk7Zj9mKGIsZSxkKTpkPDUwMHx8cmNhKGFnYSwzKX19KTsoYT1ZZGEoYSkpJiZpZWEoYSwoZCxlLGYpPT57YmdhKGIsYi5rYS5lbmQoKSk7Zm9yKGQ9MDtkPGYubGVuZ3RoO2QrKyliZ2EoYixfLnpiYShmW2RdKXx8bmV3IFVpbnQ4QXJyYXkoMCkpfSl9OyRmYT1mdW5jdGlvbihhLGIpe3ZhciBjPWFbYl07aWYoYylyZXR1cm4gYztpZihjPWEuZXh0ZW5zaW9ucylpZihjPWNbYl0pe2M9Xy5FZmEoYyk7dmFyIGQ9Y1swXS5BYTtpZihjPWNbMV0pe2xldCBlPVhmYShjKSxmPV8uV2ZhKGMpLnVqYTtjPWEuV1hiP0FmYShmLGUpOihnLGgsayk9PmQoZyxoLGssZixlKX1lbHNlIGM9ZDtyZXR1cm4gYVtiXT1jfX07Cl8uRGI9ZnVuY3Rpb24oYSxiLGMpe2lmKEFycmF5LmlzQXJyYXkoYikpe3ZhciBkPWJbXy5iYl18MDtpZihkJjQpcmV0dXJuIGI7Zm9yKHZhciBlPTAsZj0wO2U8Yi5sZW5ndGg7ZSsrKXtsZXQgZz1hKGJbZV0pO2chPW51bGwmJihiW2YrK109Zyl9ZjxlJiYoYi5sZW5ndGg9Zik7YT1kfDE7YyYmKGE9KGF8NCkmLTE1MzcpO2EhPT1kJiYoYltfLmJiXT1hKTtjJiZhJjImJk9iamVjdC5mcmVlemUoYik7cmV0dXJuIGJ9fTtjZ2E9ZnVuY3Rpb24oYSxiLGMsZCxlLGYpe2lmKEFycmF5LmlzQXJyYXkoYikpe2ZvcihsZXQgZz0wO2c8Yi5sZW5ndGg7ZysrKWYoYSxiW2ddLGMsZCxlKTthPWJbXy5iYl18MDthJjF8fChiW18uYmJdPWF8MSl9fTtfLkViPWZ1bmN0aW9uKGEsYixjKXtyZXR1cm4gbmV3IHVmYShhLGIsITEsYyl9O18uR2I9ZnVuY3Rpb24oYSxiLGMpe3JldHVybiBuZXcgdWZhKGEsYixfLmRnYSxjKX07CmVnYT1mdW5jdGlvbihhLGIsYz1fLnRmYSl7cmV0dXJuIG5ldyB1ZmEoYSxiLF8uZGdhLGMpfTtfLkhiPWZ1bmN0aW9uKGEsYixjKXtfLnViKGEsYVtfLmJiXXwwLGIsYyxfLm1jYShhW18uYmJdfDApKX07Z2dhPWZ1bmN0aW9uKGEsYixjKXtiPV8uS2VhKHZvaWQgMCxiKTtfLmZnYShhLGMsYik7cmV0dXJuIGJ9O2lnYT1mdW5jdGlvbihhLGIsYyl7Yj1fLnRjYShiKTtiIT1udWxsJiYoXy5LYihhLGMsMSksXy5oZ2EoYS5rYSxiKSl9O2tnYT1mdW5jdGlvbihhLGIsYyl7Yj1fLnRjYShiKTtiIT1udWxsJiYoXy5LYihhLGMsNSksYT1hLmthLE5iYShiKSxfLmpnYShhLF8uWmEpKX07bWdhPWZ1bmN0aW9uKGEsYixjKXtsZ2EoYSxjLF8uYmRhKGIpKX07Xy5vZ2E9ZnVuY3Rpb24oYSxiLGMpe2I9Xy5EYihfLmJkYSxiLCExKTtpZihiIT1udWxsKWZvcihsZXQgZD0wO2Q8Yi5sZW5ndGg7ZCsrKW5nYShhLGMsYltkXSl9Owp0Z2E9ZnVuY3Rpb24oYSxiLGMpe2I9Xy5EYihfLmJkYSxiLCExKTtpZihiIT1udWxsJiZiLmxlbmd0aCl7Yz1fLnBnYShhLGMpO2ZvcihsZXQgZT0wO2U8Yi5sZW5ndGg7ZSsrKXtsZXQgZj1iW2VdO3N3aXRjaCh0eXBlb2YgZil7Y2FzZSAibnVtYmVyIjp2YXIgZD1hLmthO18uTGJhKGYpO18uTGIoZCxfLlphLF8uJGEpO2JyZWFrO2Nhc2UgImJpZ2ludCI6ZD1fLnNkYShmLF8ucWdhLF8ucmdhKTtfLkxiKGEua2EsZC5sbyxkLmhpKTticmVhaztkZWZhdWx0OmQ9Xy50ZGEoZiksXy5MYihhLmthLGQubG8sZC5oaSl9fV8uc2dhKGEsYyl9fTtfLnZnYT1mdW5jdGlvbihhLGIsYyl7Yj1fLmNkYShiKTtiIT1udWxsJiYod2RhKGIpLHVnYShhLGMsYikpfTt3Z2E9ZnVuY3Rpb24oYSxiLGMpe2I9Xy5EYihfLmNkYSxiLCExKTtpZihiIT1udWxsKWZvcihsZXQgZD0wO2Q8Yi5sZW5ndGg7ZCsrKXVnYShhLGMsYltkXSl9Owp6Z2E9ZnVuY3Rpb24oYSxiLGMpe2I9Xy5EYihfLmNkYSxiLCExKTtpZihiIT1udWxsJiZiLmxlbmd0aCl7Yz1fLnBnYShhLGMpO2ZvcihsZXQgZT0wO2U8Yi5sZW5ndGg7ZSsrKXt2YXIgZD1iW2VdO3N3aXRjaCh0eXBlb2YgZCl7Y2FzZSAibnVtYmVyIjpfLnhnYShhLmthLGQpO2JyZWFrO2Nhc2UgImJpZ2ludCI6bGV0IGY9TnVtYmVyKGQpO051bWJlci5pc1NhZmVJbnRlZ2VyKGYpP18ueGdhKGEua2EsZik6KGQ9Xy55Z2EoZCksXy5MYihhLmthLGQubG8sZC5oaSkpO2JyZWFrO2RlZmF1bHQ6ZD1fLnZkYShkKSxfLkxiKGEua2EsZC5sbyxkLmhpKX19Xy5zZ2EoYSxjKX19O0JnYT1mdW5jdGlvbihhLGIsYyl7Yj1fLmdiKGIpO2IhPW51bGwmJkFnYShhLGMsYil9O18uRGdhPWZ1bmN0aW9uKGEsYixjKXtDZ2EoYSxjLF8uY2RhKGIpKX07Cl8uRWdhPWZ1bmN0aW9uKGEsYixjKXtiPV8uRGIoXy5jZGEsYiwhMSk7aWYoYiE9bnVsbClmb3IobGV0IGQ9MDtkPGIubGVuZ3RoO2QrKylDZ2EoYSxjLGJbZF0pfTtHZ2E9ZnVuY3Rpb24oYSxiLGMpe2I9Xy5EYihfLmNkYSxiLCExKTtpZihiIT1udWxsJiZiLmxlbmd0aClmb3IoXy5LYihhLGMsMiksXy5NYihhLmthLGIubGVuZ3RoKjgpLGM9MDtjPGIubGVuZ3RoO2MrKyl7dmFyIGQ9YltjXTtzd2l0Y2godHlwZW9mIGQpe2Nhc2UgIm51bWJlciI6RmdhKGEua2EsZCk7YnJlYWs7Y2FzZSAiYmlnaW50IjpkPV8ueWdhKGQpO18uTmIoYS5rYSxkLmxvLGQuaGkpO2JyZWFrO2RlZmF1bHQ6ZD1fLnZkYShkKSxfLk5iKGEua2EsZC5sbyxkLmhpKX19fTtfLklnYT1mdW5jdGlvbihhLGIsYyl7Xy5IZ2EoYSxjLF8uaWIoYikpfTtKZ2E9ZnVuY3Rpb24oYSxiLGMpe2I9Xy54Y2EoYik7YiE9bnVsbCYmKF8uS2IoYSxjLDApLGEua2Eua2EucHVzaChiPzE6MCkpfTsKTGdhPWZ1bmN0aW9uKGEsYixjKXtiPWdkYShiKTtiIT1udWxsJiZLZ2EoYSxjLF8uZ2FhKGIsITEpKX07Xy5NZ2E9ZnVuY3Rpb24oYSxiLGMsZCxlKXtiPXhmYShiLGQpO2IhPW51bGwmJihfLktiKGEsYywzKSxlKGIsYSksXy5LYihhLGMsNCkpfTtOZ2E9ZnVuY3Rpb24oYSxiLGMsZCxlKXt3ZmEoYSxjLHhmYShiLGQpLGUpfTtPZ2E9ZnVuY3Rpb24oYSxiLGMpe2I9ZGRhKGIpO2IhPW51bGwmJktnYShhLGMsQWJhKGIsITApLmJ1ZmZlcil9O1BnYT1mdW5jdGlvbihhLGIsYyl7Yj1fLmliKGIpO2IhPW51bGwmJmIhPW51bGwmJihfLktiKGEsYywwKSxfLk1iKGEua2EsYikpfTtSZ2E9ZnVuY3Rpb24oYSxiLGMpe1FnYShhLGMsXy5nYihiKSl9OwpfLlRnYT1mdW5jdGlvbihhLGIsYyl7aWYoYS5rYSE9PTEmJmEua2EhPT0yKXJldHVybiExO2I9Xy5PYihiLGMpO2lmKGEua2E9PTIpe2M9YS5vYTt2YXIgZD1fLlBiKGEub2EpLzg7YT1jLmthO2QqPTg7aWYoYStkPmMud2EpdGhyb3cgRXJyb3IoKTtsZXQgZT1jLm9hO2ErPWUuYnl0ZU9mZnNldDtjLmthKz1kO2M9bmV3IERhdGFWaWV3KGUuYnVmZmVyLGEsZCk7Zm9yKGE9MDs7KXtkPWErODtpZihkPmMuYnl0ZUxlbmd0aClicmVhaztiLnB1c2goYy5nZXRGbG9hdDY0KGEsITApKTthPWR9fWVsc2UgYi5wdXNoKFNnYShhLm9hKSk7cmV0dXJuITB9O1dnYT1mdW5jdGlvbihhLGIsYyl7aWYoYS5rYSE9PTUmJmEua2EhPT0yKXJldHVybiExO2I9Xy5PYihiLGMpO2Eua2E9PTI/Xy5VZ2EoYSxWZ2EsYik6Yi5wdXNoKFZnYShhLm9hKSk7cmV0dXJuITB9O1lnYT1mdW5jdGlvbihhLGIsYyl7aWYoYS5rYSE9PTApcmV0dXJuITE7Xy5IYihiLGMsWGdhKGEub2EpKTtyZXR1cm4hMH07ClpnYT1mdW5jdGlvbihhLGIsYyl7aWYoYS5rYSE9PTAmJmEua2EhPT0yKXJldHVybiExO2I9Xy5PYihiLGMpO2Eua2E9PTI/Xy5VZ2EoYSxYZ2EsYik6Yi5wdXNoKFhnYShhLm9hKSk7cmV0dXJuITB9O2FoYT1mdW5jdGlvbihhLGIsYyl7aWYoYS5rYSE9PTApcmV0dXJuITE7YT1YZ2EoYS5vYSk7Xy5IYihiLGMsYT09PSRnYT92b2lkIDA6YSk7cmV0dXJuITB9O2JoYT1mdW5jdGlvbihhLGIsYyxkKXtpZihhLmthIT09MClyZXR1cm4hMTtfLlFiKGIsYyxkLFhnYShhLm9hKSk7cmV0dXJuITB9O18uY2hhPWZ1bmN0aW9uKGEsYixjKXtyZXR1cm4gWmdhKGEsYixjKX07ZGhhPWZ1bmN0aW9uKGEsYixjKXtyZXR1cm4gWmdhKGEsYixjKX07ZmhhPWZ1bmN0aW9uKGEsYixjKXtpZihhLmthIT09MClyZXR1cm4hMTtfLkhiKGIsYyxlaGEoYS5vYSkpO3JldHVybiEwfTsKZ2hhPWZ1bmN0aW9uKGEsYixjKXtpZihhLmthIT09MCYmYS5rYSE9PTIpcmV0dXJuITE7Yj1fLk9iKGIsYyk7YS5rYT09Mj9fLlVnYShhLGVoYSxiKTpiLnB1c2goZWhhKGEub2EpKTtyZXR1cm4hMH07Xy5oaGE9ZnVuY3Rpb24oYSxiLGMpe2lmKGEua2EhPT0wKXJldHVybiExO2E9ZWhhKGEub2EpO18uSGIoYixjLGE9PT0kZ2E/dm9pZCAwOmEpO3JldHVybiEwfTtpaGE9ZnVuY3Rpb24oYSxiLGMsZCl7aWYoYS5rYSE9PTApcmV0dXJuITE7Xy5RYihiLGMsZCxlaGEoYS5vYSkpO3JldHVybiEwfTtfLmpoYT1mdW5jdGlvbihhLGIsYyl7cmV0dXJuIGZoYShhLGIsYyl9O2toYT1mdW5jdGlvbihhLGIsYyl7cmV0dXJuIGdoYShhLGIsYyl9O2xoYT1mdW5jdGlvbihhLGIsYyl7cmV0dXJuIGdoYShhLGIsYyl9OwpuaGE9ZnVuY3Rpb24oYSxiLGMpe2lmKGEua2EhPT0wJiZhLmthIT09MilyZXR1cm4hMTtiPV8uT2IoYixjKTthLmthPT0yP18uVWdhKGEsbWhhLGIpOmIucHVzaChtaGEoYS5vYSkpO3JldHVybiEwfTtwaGE9ZnVuY3Rpb24oYSxiLGMpe2lmKGEua2EhPT0xKXJldHVybiExO18uSGIoYixjLG9oYShhLm9hKSk7cmV0dXJuITB9O3FoYT1mdW5jdGlvbihhLGIsYyl7aWYoYS5rYSE9PTEmJmEua2EhPT0yKXJldHVybiExO2I9Xy5PYihiLGMpO2Eua2E9PTI/Xy5VZ2EoYSxvaGEsYik6Yi5wdXNoKG9oYShhLm9hKSk7cmV0dXJuITB9O18ucmhhPWZ1bmN0aW9uKGEsYixjKXtpZihhLmthIT09MSlyZXR1cm4hMTthPW9oYShhLm9hKTtfLkhiKGIsYyxhPT09JGdhP3ZvaWQgMDphKTtyZXR1cm4hMH07c2hhPWZ1bmN0aW9uKGEsYixjLGQpe2lmKGEua2EhPT0xKXJldHVybiExO18uUWIoYixjLGQsb2hhKGEub2EpKTtyZXR1cm4hMH07CnRoYT1mdW5jdGlvbihhLGIsYyl7cmV0dXJuIHBoYShhLGIsYyl9O18udWhhPWZ1bmN0aW9uKGEsYixjKXtyZXR1cm4gcWhhKGEsYixjKX07Xy52aGE9ZnVuY3Rpb24oYSxiLGMpe3JldHVybiBxaGEoYSxiLGMpfTtfLnhoYT1mdW5jdGlvbihhLGIsYyl7aWYoYS5rYSE9PTUmJmEua2EhPT0yKXJldHVybiExO2I9Xy5PYihiLGMpO2Eua2E9PTI/Xy5VZ2EoYSxfLndoYSxiKTpiLnB1c2goXy53aGEoYS5vYSkpO3JldHVybiEwfTt6aGE9ZnVuY3Rpb24oYSxiLGMpe2lmKGEua2EhPT0yKXJldHVybiExO2E9eWhhKGEpO18uSGIoYixjLGE9PT1fLnZiYSgpP3ZvaWQgMDphKTtyZXR1cm4hMH07QWhhPWZ1bmN0aW9uKGEsYixjKXtpZihhLmthIT09MCYmYS5rYSE9PTIpcmV0dXJuITE7Yj1fLk9iKGIsYyk7YS5rYT09Mj9fLlVnYShhLF8uUGIsYik6Yi5wdXNoKF8uUGIoYS5vYSkpO3JldHVybiEwfTsKQ2hhPWZ1bmN0aW9uKGEsYixjKXtpZihhLmthIT09MCYmYS5rYSE9PTIpcmV0dXJuITE7Yj1fLk9iKGIsYyk7YS5rYT09Mj9fLlVnYShhLEJoYSxiKTpiLnB1c2gobWhhKGEub2EpKTtyZXR1cm4hMH07Xy5EaGE9ZnVuY3Rpb24oYSl7aWYoISgoYT09bnVsbD92b2lkIDA6YS5wcm90b3R5cGUpaW5zdGFuY2VvZiBfLmwpKXRocm93IEVycm9yKCk7cmV0dXJuIGFbaGRhXXx8KGFbaGRhXT1pZGEoYSkpfTtfLlViPWZ1bmN0aW9uKGEsYixjKXtyZXR1cm4gbmV3IF8uUmIoYSxiLGMsMCxfLnEsXy5TYil9O18uRWhhPWZ1bmN0aW9uKGEpe2EhPW51bGwmJihhPWEua2F8fCIiLGE9dHlwZW9mIGE9PT0ic3RyaW5nIj9hOm5ldyBVaW50OEFycmF5KGEpKTtyZXR1cm4gYX07Xy5GaGE9ZnVuY3Rpb24oYSxiLGM9InR5cGUuZ29vZ2xlYXBpcy5jb20vIil7Yy5zdWJzdHIoLTEpIT09Ii8iJiYoYys9Ii8iKTtfLlZiKGEsMSxjK2IpfTsKXy5HaGE9ZnVuY3Rpb24oYSxiLGMpe2lmKF8udChhLDEpLnNwbGl0KCIvIikucG9wKCkhPWMpcmV0dXJuIG51bGw7Yz10eXBlb2YgYj09PSJmdW5jdGlvbiI/YjpiLmNvbnN0cnVjdG9yO3ZhciBkPWEuUGssZT1kW18uYmJdfDA7Yj1fLnhiKGQsMik7VmVhKGEpJiYoZD1hLlBrLGU9ZFtfLmJiXXwwKTthPWQ7aWYoYiE9bnVsbCYmIUFycmF5LmlzQXJyYXkoYikmJiFiY2EoYikpdGhyb3cgRXJyb3IoIlNgIitfLnZjYShiKSk7ZD1qZGEoYixjLCEwLGUpO2lmKCEoZCBpbnN0YW5jZW9mIGMpKXRocm93IEVycm9yKCJUYCIrZC5jb25zdHJ1Y3Rvci5kaXNwbGF5TmFtZSsiYCIrYy5kaXNwbGF5TmFtZSk7KGM9ISEoMiZlKSl8fChkPWQuTXUoKSk7YiE9PWQmJihfLnViKGEsZSwyLGQpLGN8fHRiKGEpKTtyZXR1cm4gZH07Xy5XYj1mdW5jdGlvbihhKXtyZXR1cm4oKT0+YVtoZGFdfHwoYVtoZGFdPWlkYShhKSl9OwpfLlhiPWZ1bmN0aW9uKGEsYil7cmV0dXJuKGMsZCk9PnthOntsZXQgZj17UkZiOiEwfTtkJiZPYmplY3QuYXNzaWduKGYsZCk7Yz1SZmEoYyx2b2lkIDAsdm9pZCAwLGYpO3RyeXtsZXQgZz1uZXcgYSxoPWcuUGs7SWZhKGIpKGgsYyk7dmFyIGU9ZzticmVhayBhfWNhdGNoKGcpe2lmKGcgaW5zdGFuY2VvZiBSYW5nZUVycm9yKXRocm93IG5ldyBTeW50YXhFcnJvcjt0aHJvdyBnO31maW5hbGx5e1NmYShjKX1lPXZvaWQgMH1yZXR1cm4gZX19O18uSGhhPWZ1bmN0aW9uKGEpe3JldHVybihiLGMpPT57VmVhKGIpO0tmYSgpO3RyeXtJZmEoYSkoYi5QayxjKX1jYXRjaChkKXtpZihkIGluc3RhbmNlb2YgUmFuZ2VFcnJvcil0aHJvdyBuZXcgU3ludGF4RXJyb3I7dGhyb3cgZDt9ZmluYWxseXtQZmE+MCYmUGZhLS19cmV0dXJuIGJ9fTtfLlliPWZ1bmN0aW9uKGEpe3JldHVybiBiPT5JaGEoYixhKX07Cl8uWmI9ZnVuY3Rpb24oYSxiKXt2YXIgYztyZXR1cm4oKT0+e3ZhciBkO3JldHVybihkPWMpIT1udWxsP2Q6Yz17W18uSmhhXTpiLFtfLktoYV06YX19fTtfLiRiPWZ1bmN0aW9uKGEpe3JldHVybiBmdW5jdGlvbigpe3JldHVybiBJaGEodGhpcyxhKX19O18uTGhhPWZ1bmN0aW9uKGEpe3JldHVybiBfLlRhKGI9PmIgaW5zdGFuY2VvZiBhJiZfLmNiKGIpKX07Xy5hYz1mdW5jdGlvbihhKXtyZXR1cm4gXy5UYShiPT5iIGluc3RhbmNlb2YgYSYmIV8uY2IoYikpfTtfLk1oYT1mdW5jdGlvbihhKXtyZXR1cm4gYj0+e2I9SlNPTi5wYXJzZShiKTtpZighQXJyYXkuaXNBcnJheShiKSl0aHJvdyBFcnJvcigiT2AiK18udmNhKGIpKyJgIitiKTtfLlhiYShiKTtyZXR1cm4gbmV3IGEoYil9fTtfLmRjPWZ1bmN0aW9uKGEpe3JldHVybiBiPT5fLmJjKGEsYil9O18uZWM9ZnVuY3Rpb24oYSl7cmV0dXJue0NuOjMsbHBiOmF9fTsKUWhhPWZ1bmN0aW9uKGEsYixjKXt2YXIgZDtjJiYoZD1iPU5oYShPaGEsYywoKT0+YikpO2E9Yj1OaGEoT2hhLGEsKCk9PmIpO2MmJmQhPT1hJiZPaGEuc2V0KGMsYSk7KGM9Yi5rYSkmJk5oYShQaGEsYywoKT0+bmV3IFNldCkuYWRkKGIpO3JldHVybiBifTtOaGE9ZnVuY3Rpb24oYSxiLGMpe3ZhciBkPWEuZ2V0KGIpO2R8fChkPWMoYiksYS5zZXQoYixkKSk7cmV0dXJuIGR9O1NoYT1mdW5jdGlvbihhKXtyZXR1cm4gTmhhKFJoYSxhLnRvU3RyaW5nKCksKCk9Pm5ldyBTZXQpfTtmYz1mdW5jdGlvbihhLGIpe1NoYShiKS5hZGQoYSl9O1ZoYT1mdW5jdGlvbihhKXtpZihfLlRoYSlhKF8uVGhhKTtlbHNle2xldCBiOygoYj1VaGEpIT1udWxsP2I6VWhhPVtdKS5wdXNoKGEpfX07Xy5oYz1mdW5jdGlvbigpeyFfLlRoYSYmXy5XaGEmJl8uWGhhKF8uV2hhKCkpO3JldHVybiBfLlRoYX07Cl8uWGhhPWZ1bmN0aW9uKGEpe18uVGhhPWE7dmFyIGI7KGI9VWhhKT09bnVsbHx8Yi5mb3JFYWNoKFZoYSk7VWhhPXZvaWQgMH07Xy51PWZ1bmN0aW9uKGEpe18uVGhhJiZZaGEoYSl9O18udj1mdW5jdGlvbigpe18uVGhhJiZfLlRoYS56cmEoKX07WmhhPWZ1bmN0aW9uKGEsYixjLGQ9ITEsZT0hMSl7cmV0dXJuIG5ldyBfLmljKGEsYnx8dm9pZCAwLGMsZCxlKX07Xy5qYz1mdW5jdGlvbihhLGIsYyxkPSExLGUsZj0hMSl7Yj1aaGEoYSxiIT1udWxsP2I6bnVsbCxjLGQsZik7cmV0dXJuIFFoYShhLGIsZSl9O18ua2M9ZnVuY3Rpb24oYSxiKXtyZXR1cm4gXy5qYyhhLGEsYiwhMSl9O18uYWlhPWZ1bmN0aW9uKGEpe2lmKGEgaW5zdGFuY2VvZiBfLiRoYSlyZXR1cm4gYS5rYTt0aHJvdyBFcnJvcigiViIpO307YmlhPWZ1bmN0aW9uKGEpe3JldHVybiBhLnRvU3RyaW5nKCkuaW5kZXhPZigiYCIpPT09LTF9OwpfLmxjPWZ1bmN0aW9uKGEpe2E9YVswXS50b0xvd2VyQ2FzZSgpO3JldHVybiBuZXcgXy4kaGEoY2lhLGEpfTtlaWE9ZnVuY3Rpb24oKXt2YXIgYT1udWxsO2lmKCFkaWEpcmV0dXJuIGE7dHJ5e2xldCBiPWM9PmM7YT1kaWEuY3JlYXRlUG9saWN5KCJnb29nI2h0bWwiLHtjcmVhdGVIVE1MOmIsY3JlYXRlU2NyaXB0OmIsY3JlYXRlU2NyaXB0VVJMOmJ9KX1jYXRjaChiKXt9cmV0dXJuIGF9O2dpYT1mdW5jdGlvbigpe2ZpYT09PXZvaWQgMCYmKGZpYT1laWEoKSk7cmV0dXJuIGZpYX07Xy55PWZ1bmN0aW9uKGEpe3ZhciBiPWdpYSgpO2E9Yj9iLmNyZWF0ZUhUTUwoYSk6YTtyZXR1cm4gbmV3IF8ucGMoY2lhLGEpfTtfLmhpYT1mdW5jdGlvbihhKXtyZXR1cm4gYSBpbnN0YW5jZW9mIF8ucGN9O18ucWM9ZnVuY3Rpb24oYSl7aWYoXy5oaWEoYSkpcmV0dXJuIGEua2E7dGhyb3cgRXJyb3IoIlYiKTt9O18uamlhPWZ1bmN0aW9uKGEpe3JldHVybiBuZXcgXy5paWEoY2lhLGEpfTsKXy5raWE9ZnVuY3Rpb24oYSl7cmV0dXJuIGEgaW5zdGFuY2VvZiBfLmlpYX07Xy5saWE9ZnVuY3Rpb24oYSl7aWYoXy5raWEoYSkpcmV0dXJuIGEua2E7dGhyb3cgRXJyb3IoIlYiKTt9O18ubWlhPWZ1bmN0aW9uKGEsLi4uYil7dmFyIGM9YVswXTtmb3IobGV0IGQ9MDtkPGEubGVuZ3RoLTE7ZCsrKWMrPVN0cmluZyhiW2RdKSxjKz1hW2QrMV07YT1kb2N1bWVudC5pbXBsZW1lbnRhdGlvbi5jcmVhdGVIVE1MRG9jdW1lbnQoIiIpO2I9YS5jcmVhdGVFbGVtZW50KCJzdHlsZSIpO2EuaGVhZC5hcHBlbmRDaGlsZChiKTthPWIuc2hlZXQ7YS5pbnNlcnRSdWxlKGMsMCk7aWYoYS5jc3NSdWxlcy5sZW5ndGg9PT0xJiYoYz1hLmNzc1J1bGVzWzBdLGMgaW5zdGFuY2VvZiBDU1NTdHlsZVJ1bGUpKXJldHVybiBfLmppYShjLmNzc1RleHQucmVwbGFjZSgvPC9nLCJcXDNDICIpKX07Xy5yYz1mdW5jdGlvbihhKXtyZXR1cm4gXy5qaWEoYVswXSl9O18ubmlhPWZ1bmN0aW9uKGEpe3JldHVybiBfLmppYShhLm1hcChfLmxpYSkuam9pbigiIikpfTsKXy54Yz1mdW5jdGlvbihhKXt2YXIgYj1naWEoKTthPWI/Yi5jcmVhdGVTY3JpcHRVUkwoYSk6YTtyZXR1cm4gbmV3IF8udGMoY2lhLGEpfTtfLm9pYT1mdW5jdGlvbihhKXtyZXR1cm4gYSBpbnN0YW5jZW9mIF8udGN9O18uemM9ZnVuY3Rpb24oYSl7aWYoXy5vaWEoYSkpcmV0dXJuIGEuVzNiO3Rocm93IEVycm9yKCJWIik7fTtfLkFjPWZ1bmN0aW9uKGEpe3JldHVybiBuZXcgXy5waWEoY2lhLGEpfTtfLnFpYT1mdW5jdGlvbihhKXtyZXR1cm4gYSBpbnN0YW5jZW9mIF8ucGlhfTtfLkJjPWZ1bmN0aW9uKGEpe2lmKF8ucWlhKGEpKXJldHVybiBhLmthO3Rocm93IEVycm9yKCJWIik7fTtDYz1mdW5jdGlvbihhKXtyZXR1cm4gbmV3IHJpYShiPT5iLnN1YnN0cigwLGEubGVuZ3RoKzEpLnRvTG93ZXJDYXNlKCk9PT1hKyI6Iil9OwpfLkRjPWZ1bmN0aW9uKGEsYj1zaWEpe2lmKF8ucWlhKGEpKXJldHVybiBhO2ZvcihsZXQgYz0wO2M8Yi5sZW5ndGg7KytjKXtsZXQgZD1iW2NdO2lmKGQgaW5zdGFuY2VvZiByaWEmJmQuaXNWYWxpZChhKSlyZXR1cm4gXy5BYyhhKX19O18uRmM9ZnVuY3Rpb24oYSxiPXNpYSl7Yj1fLkRjKGEsYik7Yj09PXZvaWQgMCYmXy50aWEoYS50b1N0cmluZygpKTtyZXR1cm4gYnx8Xy5FY307Cl8uR2M9ZnVuY3Rpb24oYSl7dmFyIGI9d2luZG93O2lmKHR5cGVvZiBNZWRpYVNvdXJjZSE9PSJ1bmRlZmluZWQiJiZhIGluc3RhbmNlb2YgTWVkaWFTb3VyY2V8fHR5cGVvZiBiLk1hbmFnZWRNZWRpYVNvdXJjZSE9PSJ1bmRlZmluZWQiJiZhIGluc3RhbmNlb2YgYi5NYW5hZ2VkTWVkaWFTb3VyY2UpcmV0dXJuIF8uQWMoVVJMLmNyZWF0ZU9iamVjdFVSTChhKSk7Yj1hLnR5cGU7Yi50b0xvd2VyQ2FzZSgpPT09ImFwcGxpY2F0aW9uL29jdGV0LXN0cmVhbSI/Yj0hMDooYj1iLm1hdGNoKC9eKFteO10rKSg/Ojtcdys9KD86XHcrfCJbXHc7LD0gXSsiKSkqJC9pKSxiPShiPT1udWxsP3ZvaWQgMDpiLmxlbmd0aCk9PT0yJiYoL15pbWFnZVwvKD86Ym1wfGdpZnxqcGVnfGpwZ3xwbmd8dGlmZnx3ZWJwfHgtaWNvbnxoZWljfGhlaWZ8YXZpZnx4LW1zLWJtcCkkL2kudGVzdChiWzFdKXx8L152aWRlb1wvKD86M2dwcHxhdml8bXBlZ3xtcGd8bXA0fG9nZ3x3ZWJtfHgtZmx2fHgtbWF0cm9za2F8cXVpY2t0aW1lfHgtbXMtd212KSQvaS50ZXN0KGJbMV0pfHwKL15hdWRpb1wvKD86M2dwcDJ8M2dwcHxhYWN8YW1yfEwxNnxtaWRpfG1wM3xtcDR8bXBlZ3xvZ2F8b2dnfG9wdXN8eC1tNGF8eC1tYXRyb3NrYXx4LXdhdnx3YXZ8d2VibSkkL2kudGVzdChiWzFdKXx8L15mb250XC9bXHctXSskL2kudGVzdChiWzFdKSkpO2lmKCFiKXRocm93IEVycm9yKCJWIik7cmV0dXJuIF8uQWMoVVJMLmNyZWF0ZU9iamVjdFVSTChhKSl9O18udWlhPWZ1bmN0aW9uKGEsLi4uYil7dmFyIGM9W2FbMF1dO2ZvcihsZXQgZD0wO2Q8Yi5sZW5ndGg7ZCsrKWMucHVzaChTdHJpbmcoYltkXSkpLGMucHVzaChhW2QrMV0pO3JldHVybiBfLkFjKGMuam9pbigiIikpfTt3aWE9ZnVuY3Rpb24oYSl7aWYoIXZpYSl7YTp7dmFyIGI9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiYSIpO3RyeXtiLmhyZWY9YX1jYXRjaChjKXthPXZvaWQgMDticmVhayBhfWE9Yi5wcm90b2NvbDthPWE9PT0iOiJ8fGE9PT0iIj8iaHR0cHM6IjphfXJldHVybiBhfXRyeXtiPW5ldyBVUkwoYSl9Y2F0Y2goYyl7cmV0dXJuImh0dHBzOiJ9cmV0dXJuIGIucHJvdG9jb2x9Owp5aWE9ZnVuY3Rpb24oYSl7dmFyIGI9IXhpYS50ZXN0KGEpO2ImJl8udGlhKGEpO2lmKCFiKXJldHVybiBhfTtfLkhjPWZ1bmN0aW9uKGEpe3JldHVybiBhIGluc3RhbmNlb2YgXy5waWE/Xy5CYyhhKTp5aWEoYSl9O18uQWlhPWZ1bmN0aW9uKGEpe3ZhciBiPWdpYSgpO2E9Yj9iLmNyZWF0ZVNjcmlwdChhKTphO3JldHVybiBuZXcgXy56aWEoY2lhLGEpfTtfLkJpYT1mdW5jdGlvbihhKXtyZXR1cm4gYSBpbnN0YW5jZW9mIF8uemlhfTtfLkljPWZ1bmN0aW9uKGEpe2lmKF8uQmlhKGEpKXJldHVybiBhLmthO3Rocm93IEVycm9yKCJWIik7fTsKXy5KYz1mdW5jdGlvbihhLGIpe2lmKF8uaGlhKGEpKXJldHVybiBhO2E9Xy5DaWEoU3RyaW5nKGEpKTtpZihiPT1udWxsPzA6Yi5URWQpYT1hLnJlcGxhY2UoLyhefFtcclxuXHQgXSkgL2csIiQxJiMxNjA7Iik7aWYoYj09bnVsbD8wOmIuTzNiKWE9YS5yZXBsYWNlKC8oXHJcbnxcbnxccikvZywiPGJyPiIpO2lmKGI9PW51bGw/MDpiLlVFZClhPWEucmVwbGFjZSgvKFx0KykvZywnPHNwYW4gc3R5bGU9IndoaXRlLXNwYWNlOnByZSI+JDE8L3NwYW4+Jyk7cmV0dXJuIF8ueShhKX07Xy5DaWE9ZnVuY3Rpb24oYSl7cmV0dXJuIGEucmVwbGFjZSgvJi9nLCImYW1wOyIpLnJlcGxhY2UoLzwvZywiJmx0OyIpLnJlcGxhY2UoLz4vZywiJmd0OyIpLnJlcGxhY2UoLyIvZywiJnF1b3Q7IikucmVwbGFjZSgvJy9nLCImYXBvczsiKX07Xy5FaWE9ZnVuY3Rpb24oYSl7cmV0dXJuIF8uRGlhKCIiLGEpfTtfLkRpYT1mdW5jdGlvbihhLGIpe2E9Xy5KYyhhKTtyZXR1cm4gXy55KGIubWFwKGM9Pl8ucWMoXy5KYyhjKSkpLmpvaW4oXy5xYyhhKS50b1N0cmluZygpKSl9OwpIaWE9ZnVuY3Rpb24oYSl7aWYoIUZpYS50ZXN0KGEpKXRocm93IEVycm9yKCJWIik7aWYoR2lhLmluZGV4T2YoYS50b1VwcGVyQ2FzZSgpKSE9PS0xKXRocm93IEVycm9yKCJWIik7fTtfLktpYT1mdW5jdGlvbihhLGIsYyl7SGlhKGEpO3ZhciBkPWA8JHthfWA7YiYmKGQrPV8uSWlhKGIpKTtBcnJheS5pc0FycmF5KGMpfHwoYz1jPT09dm9pZCAwP1tdOltjXSk7SmlhLmluZGV4T2YoYS50b1VwcGVyQ2FzZSgpKSE9PS0xP2QrPSI+IjooYj1fLkVpYShjLm1hcChlPT5fLmhpYShlKT9lOl8uSmMoU3RyaW5nKGUpKSkpLGQrPSI+IitiLnRvU3RyaW5nKCkrIjwvIithKyI+Iik7cmV0dXJuIF8ueShkKX07Cl8uSWlhPWZ1bmN0aW9uKGEpe3ZhciBiPSIiLGM9T2JqZWN0LmtleXMoYSk7Zm9yKGxldCBmPTA7ZjxjLmxlbmd0aDtmKyspe3ZhciBkPWNbZl0sZT1hW2RdO2lmKCFGaWEudGVzdChkKSl0aHJvdyBFcnJvcigiViIpO2lmKGUhPT12b2lkIDAmJmUhPT1udWxsKXtpZigvXm9uLi9pLnRlc3QoZCkpdGhyb3cgRXJyb3IoIlYiKTtMaWEuaW5kZXhPZihkLnRvTG93ZXJDYXNlKCkpIT09LTEmJihlPV8ucWlhKGUpP2UudG9TdHJpbmcoKTp5aWEoU3RyaW5nKGUpKXx8ImFib3V0OmludmFsaWQjekNsb3N1cmV6Iik7ZT1gJHtkfT0iJHtfLkpjKFN0cmluZyhlKSl9ImA7Yis9IiAiK2V9fXJldHVybiBifTtNaWE9ZnVuY3Rpb24oYSl7dHJ5e3JldHVybiBuZXcgVVJMKGEsd2luZG93LmRvY3VtZW50LmJhc2VVUkkpfWNhdGNoKGIpe3JldHVybiBuZXcgVVJMKCJhYm91dDppbnZhbGlkIil9fTtfLk5pYT1mdW5jdGlvbihhLGIpe2EudGV4dENvbnRlbnQ9Xy5saWEoYil9OwpfLk9pYT1mdW5jdGlvbihhLGIpe3JldHVybiBhLmNyZWF0ZUNvbnRleHR1YWxGcmFnbWVudChfLnFjKGIpKX07UGlhPWZ1bmN0aW9uKGEsYil7dmFyIGM9Yi5jcmVhdGVSYW5nZSgpO2Muc2VsZWN0Tm9kZShiLmJvZHkpO2E9Xy55KGEpO3JldHVybiBfLk9pYShjLGEpfTtRaWE9ZnVuY3Rpb24oYSl7YT1hLm5vZGVOYW1lO3JldHVybiB0eXBlb2YgYT09PSJzdHJpbmciP2E6IkZPUk0ifTtSaWE9ZnVuY3Rpb24oYSl7YT1hLm5vZGVUeXBlO3JldHVybiBhPT09MXx8dHlwZW9mIGEhPT0ibnVtYmVyIn07U2lhPWZ1bmN0aW9uKGEsYixjKXthLnNldEF0dHJpYnV0ZShiLGMpfTtUaWE9ZnVuY3Rpb24oYSl7cmV0dXJuIGEuVDIubWFwKGI9Pnt2YXIgYz1iLlZnYTtyZXR1cm5gJHtiLnVybH0ke2M/YCAke2N9YDoiIn1gfSkuam9pbigiICwgIil9O18uVmlhPWZ1bmN0aW9uKGEpe3JldHVybiBfLlVpYS5FRihhKX07Xy5LYz1mdW5jdGlvbihhKXtyZXR1cm4gXy5VaWEuRUYoYSl9OwpfLldpYT1mdW5jdGlvbihhKXt2YXIgYj1hLnNwbGl0KC9bPyNdLyksYz0vWz9dLy50ZXN0KGEpPyI/IitiWzFdOiIiO3JldHVybntQZmI6YlswXSxwYXJhbXM6YyxmcmFnbWVudDovWyNdLy50ZXN0KGEpPyIjIisoYz9iWzJdOmJbMV0pOiIifX07Xy5MYz1mdW5jdGlvbihhLC4uLmIpe2lmKGIubGVuZ3RoPT09MClyZXR1cm4gXy54YyhhWzBdKTthWzBdLnRvTG93ZXJDYXNlKCk7dmFyIGM9YVswXTtmb3IobGV0IGQ9MDtkPGIubGVuZ3RoO2QrKyljKz1lbmNvZGVVUklDb21wb25lbnQoYltkXSkrYVtkKzFdO3JldHVybiBfLnhjKGMpfTtfLk1jPWZ1bmN0aW9uKGEsYil7YT1fLldpYShfLnpjKGEpLnRvU3RyaW5nKCkpO3JldHVybiBfLlhpYShhLlBmYixhLnBhcmFtcyxhLmZyYWdtZW50LGIpfTsKXy5YaWE9ZnVuY3Rpb24oYSxiLGMsZCl7ZnVuY3Rpb24gZShnLGgpe2chPW51bGwmJihBcnJheS5pc0FycmF5KGcpP2cuZm9yRWFjaChrPT5lKGssaCkpOihiKz1mK2VuY29kZVVSSUNvbXBvbmVudChoKSsiPSIrZW5jb2RlVVJJQ29tcG9uZW50KGcpLGY9IiYiKSl9dmFyIGY9Yi5sZW5ndGg/IiYiOiI/IjtkLmNvbnN0cnVjdG9yPT09T2JqZWN0JiYoZD1PYmplY3QuZW50cmllcyhkKSk7QXJyYXkuaXNBcnJheShkKT9kLmZvckVhY2goZz0+ZShnWzFdLGdbMF0pKTpkLmZvckVhY2goZSk7cmV0dXJuIF8ueGMoYStiK2MpfTtfLlppYT1mdW5jdGlvbihhLGIpe2E9Xy56YyhhKS50b1N0cmluZygpO3JldHVybiBfLnhjKFlpYS5leGVjKGEpWzBdKyhiLnRyaW0oKT8iIyIrYjoiIikpfTsKXy4kaWE9ZnVuY3Rpb24oYSxiKXthPV8uV2lhKF8uemMoYSkudG9TdHJpbmcoKSk7dmFyIGM9YS5QZmIuc2xpY2UoLTEpPT09Ii8iPyIiOiIvIjtiPWEuUGZiK2MrZW5jb2RlVVJJQ29tcG9uZW50KGIpO3JldHVybiBfLnhjKGIrYS5wYXJhbXMrYS5mcmFnbWVudCl9O18uYWphPWZ1bmN0aW9uKGEpe3JldHVybiBfLkFpYShhLmpvaW4oIiIpKX07Xy5iamE9ZnVuY3Rpb24oYSl7cmV0dXJuIF8uQWlhKEpTT04uc3RyaW5naWZ5KGEpLnJlcGxhY2UoLzwvZywiXFx1MDAzQyIpKX07Cl8uZ2phPWZ1bmN0aW9uKGEsYil7dmFyIGM7aWYoIShjPSFiKSl7bGV0IGYsZztjPSEoTWF0aC5yYW5kb20oKTwoKGc9KGY9Yi5KRmQpIT1udWxsP2Y6Y2phW2IubzViWzBdXSkhPW51bGw/ZzowKSl9aWYoY3x8d2luZG93LlNBRkVWQUxVRVNfUkVQT1JUSU5HPT09ITF8fCEoIkRvY3VtZW50RnJhZ21lbnQiaW4gd2luZG93KSlyZXR1cm4gYTt2YXIgZCxlO01hdGgucmFuZG9tKCk8KChlPShkPWIuckJkKSE9bnVsbD9kOmRqYVtiLm81YlswXV0pIT1udWxsP2U6MCkmJmVqYShiLCJIRUFSVEJFQVQiKTtmamEoYSxiKXx8Xy5KYyhhKS50b1N0cmluZygpIT09YSYmZWphKGIsIkhfRVNDQVBFIik7cmV0dXJuIGF9OwpmamE9ZnVuY3Rpb24oYSxiKXt0cnl7Xy5oamEuRUYoYSl9Y2F0Y2goYyl7cmV0dXJuIGVqYShiLCJIX1NMU0FOSVRJWkUiKSwhMH10cnl7Xy5pamEuRUYoYSl9Y2F0Y2goYyl7cmV0dXJuIGVqYShiLCJIX1JTQU5JVElaRSIpLCEwfXRyeXtfLktjKGEpfWNhdGNoKGMpe3JldHVybiBlamEoYiwiSF9TQU5JVElaRSIpLCEwfXJldHVybiExfTtlamE9ZnVuY3Rpb24oYSxiKXsoamphP2pqYTp0eXBlb2Ygd2luZG93IT09InVuZGVmaW5lZCImJndpbmRvdy5uYXZpZ2F0b3ImJndpbmRvdy5uYXZpZ2F0b3Iuc2VuZEJlYWNvbiE9PXZvaWQgMD9uYXZpZ2F0b3Iuc2VuZEJlYWNvbi5iaW5kKG5hdmlnYXRvcik6a2phKSgiaHR0cHM6Ly9jc3Aud2l0aGdvb2dsZS5jb20vY3NwL2xjcmVwb3J0LyIrYS5vNWIsSlNPTi5zdHJpbmdpZnkoe2hvc3Q6d2luZG93LmxvY2F0aW9uLmhvc3RuYW1lLHR5cGU6YixhZGRpdGlvbmFsRGF0YTp2b2lkIDB9KSl9OwpramE9ZnVuY3Rpb24oYSxiKXt2YXIgYz1uZXcgWE1MSHR0cFJlcXVlc3Q7Yy5vcGVuKCJQT1NUIixhKTtjLnNldFJlcXVlc3RIZWFkZXIoIkNvbnRlbnQtVHlwZSIsImFwcGxpY2F0aW9uL2pzb24iKTtjLnNlbmQoYil9O18uT2M9ZnVuY3Rpb24oYSl7bGphLmFkZChhLnRvU3RyaW5nKCkpfTtfLlBjPWZ1bmN0aW9uKGEsYixjKXtmb3IobGV0IGQgaW4gYSliLmNhbGwoYyxhW2RdLGQsYSl9O18ubWphPWZ1bmN0aW9uKGEsYil7dmFyIGM9e307Zm9yKGxldCBkIGluIGEpYi5jYWxsKHZvaWQgMCxhW2RdLGQsYSkmJihjW2RdPWFbZF0pO3JldHVybiBjfTtfLlFjPWZ1bmN0aW9uKGEsYixjKXt2YXIgZD17fTtmb3IobGV0IGUgaW4gYSlkW2VdPWIuY2FsbChjLGFbZV0sZSxhKTtyZXR1cm4gZH07Xy5uamE9ZnVuY3Rpb24oYSxiKXtmb3IobGV0IGMgaW4gYSlpZihiLmNhbGwodm9pZCAwLGFbY10sYyxhKSlyZXR1cm4hMDtyZXR1cm4hMX07Cl8ub2phPWZ1bmN0aW9uKGEpe3ZhciBiPTA7Zm9yKGxldCBjIGluIGEpYisrO3JldHVybiBifTtfLnBqYT1mdW5jdGlvbihhKXtmb3IobGV0IGIgaW4gYSlyZXR1cm4gYVtiXX07Xy5TYz1mdW5jdGlvbihhKXt2YXIgYj1bXSxjPTA7Zm9yKGxldCBkIGluIGEpYltjKytdPWFbZF07cmV0dXJuIGJ9O18uVGM9ZnVuY3Rpb24oYSl7dmFyIGI9W10sYz0wO2ZvcihsZXQgZCBpbiBhKWJbYysrXT1kO3JldHVybiBifTtfLnFqYT1mdW5jdGlvbihhLGIpe2ZvcihsZXQgYyBpbiBhKWlmKGFbY109PWIpcmV0dXJuITA7cmV0dXJuITF9O18uVWM9ZnVuY3Rpb24oYSl7Zm9yKGxldCBiIGluIGEpcmV0dXJuITE7cmV0dXJuITB9O18ucmphPWZ1bmN0aW9uKGEsYil7YiBpbiBhJiZkZWxldGUgYVtiXX07Xy5WYz1mdW5jdGlvbihhLGIsYyl7aWYoYSE9PW51bGwmJmIgaW4gYSl0aHJvdyBFcnJvcigiWGAiK2IpO2FbYl09Y307Cl8uc2phPWZ1bmN0aW9uKGEsYil7cmV0dXJuIGEhPT1udWxsJiZiIGluIGE/YVtiXTp2b2lkIDB9O18udGphPWZ1bmN0aW9uKGEsYil7Zm9yKGxldCBjIGluIGEpaWYoIShjIGluIGIpfHxhW2NdIT09YltjXSlyZXR1cm4hMTtmb3IobGV0IGMgaW4gYilpZighKGMgaW4gYSkpcmV0dXJuITE7cmV0dXJuITB9O18uV2M9ZnVuY3Rpb24oYSl7dmFyIGI9e307Zm9yKGxldCBjIGluIGEpYltjXT1hW2NdO3JldHVybiBifTtfLnVqYT1mdW5jdGlvbihhKXt2YXIgYj17fTtmb3IobGV0IGMgaW4gYSliW2FbY11dPWM7cmV0dXJuIGJ9O18ud2phPWZ1bmN0aW9uKGEsYil7Zm9yKGxldCBlPTE7ZTxhcmd1bWVudHMubGVuZ3RoO2UrKyl7dmFyIGM9YXJndW1lbnRzW2VdO2ZvcihkIGluIGMpYVtkXT1jW2RdO2ZvcihsZXQgZj0wO2Y8dmphLmxlbmd0aDtmKyspe3ZhciBkPXZqYVtmXTtPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoYyxkKSYmKGFbZF09Y1tkXSl9fX07Cl8ueGphPWZ1bmN0aW9uKGEpe3ZhciBiPWFyZ3VtZW50cy5sZW5ndGg7aWYoYj09MSYmQXJyYXkuaXNBcnJheShhcmd1bWVudHNbMF0pKXJldHVybiBfLnhqYS5hcHBseShudWxsLGFyZ3VtZW50c1swXSk7aWYoYiUyKXRocm93IEVycm9yKCJZIik7dmFyIGM9e307Zm9yKGxldCBkPTA7ZDxiO2QrPTIpY1thcmd1bWVudHNbZF1dPWFyZ3VtZW50c1tkKzFdO3JldHVybiBjfTt5amE9ZnVuY3Rpb24oYSl7dmFyIGI9YXJndW1lbnRzLmxlbmd0aDtpZihiPT0xJiZBcnJheS5pc0FycmF5KGFyZ3VtZW50c1swXSkpcmV0dXJuIHlqYS5hcHBseShudWxsLGFyZ3VtZW50c1swXSk7dmFyIGM9e307Zm9yKGxldCBkPTA7ZDxiO2QrKyljW2FyZ3VtZW50c1tkXV09ITA7cmV0dXJuIGN9O18uWGM9ZnVuY3Rpb24oYSxiKXtiPV8uSGMoYik7YiE9PXZvaWQgMCYmKGEuaHJlZj1iKX07Xy56amE9ZnVuY3Rpb24oYSxiKXtiPV8uSGMoYik7YiE9PXZvaWQgMCYmKGEuYWN0aW9uPWIpfTsKXy5aYz1mdW5jdGlvbihhLGIpe2Euc3JjPV8uemMoYikudG9TdHJpbmcoKX07Xy5BamE9ZnVuY3Rpb24oYSxiKXthLnNyY2RvYz1fLnFjKGIpfTtfLkJqYT1mdW5jdGlvbihhLGIpe2Euc2V0QXR0cmlidXRlKCJzYW5kYm94IiwiIik7Zm9yKGxldCBjPTA7YzxiLmxlbmd0aDtjKyspYS5zYW5kYm94LnN1cHBvcnRzJiYhYS5zYW5kYm94LnN1cHBvcnRzKGJbY10pfHxhLnNhbmRib3guYWRkKGJbY10pfTsKXy5EamE9ZnVuY3Rpb24oYSxiLGMpe2EucmVtb3ZlQXR0cmlidXRlKCJzcmNkb2MiKTtzd2l0Y2goYil7Y2FzZSAwOmlmKGMgaW5zdGFuY2VvZiBfLnRjKXRocm93IG5ldyBfLkNqYSgiVHJ1c3RlZFJlc291cmNlVXJsIiwwKTtfLkJqYShhLFtdKTtiPV8uSGMoYyk7YiE9PXZvaWQgMCYmKGEuc3JjPWIpO2JyZWFrO2Nhc2UgMTppZighKGMgaW5zdGFuY2VvZiBfLnRjKSl0aHJvdyBuZXcgXy5DamEodHlwZW9mIGMsMSk7Xy5CamEoYSwiYWxsb3ctc2FtZS1vcmlnaW4gYWxsb3ctc2NyaXB0cyBhbGxvdy1mb3JtcyBhbGxvdy1wb3B1cHMgYWxsb3ctcG9wdXBzLXRvLWVzY2FwZS1zYW5kYm94IGFsbG93LXN0b3JhZ2UtYWNjZXNzLWJ5LXVzZXItYWN0aXZhdGlvbiIuc3BsaXQoIiAiKSk7Xy5aYyhhLGMpO2JyZWFrO2Nhc2UgMjppZihjIGluc3RhbmNlb2YgXy50Yyl0aHJvdyBuZXcgXy5DamEoIlRydXN0ZWRSZXNvdXJjZVVybCIsMik7Xy5CamEoYSwiYWxsb3ctc2FtZS1vcmlnaW4gYWxsb3ctc2NyaXB0cyBhbGxvdy1mb3JtcyBhbGxvdy1wb3B1cHMgYWxsb3ctcG9wdXBzLXRvLWVzY2FwZS1zYW5kYm94IGFsbG93LXN0b3JhZ2UtYWNjZXNzLWJ5LXVzZXItYWN0aXZhdGlvbiIuc3BsaXQoIiAiKSk7CmI9Xy5IYyhjKTtiIT09dm9pZCAwJiYoYS5zcmM9Yik7YnJlYWs7ZGVmYXVsdDpfLmViKGIsdm9pZCAwKX19O18uJGM9ZnVuY3Rpb24oYSxiLGMsZCl7Yj1fLkhjKGIpO3JldHVybiBiIT09dm9pZCAwP2Eub3BlbihiLGMsZCk6bnVsbH07Xy5GamE9ZnVuY3Rpb24oYSl7cmV0dXJuIEVqYSgic2NyaXB0IixhKX07Xy5HamE9ZnVuY3Rpb24oYSl7cmV0dXJuIEVqYSgic3R5bGUiLGEpfTtFamE9ZnVuY3Rpb24oYSxiPWRvY3VtZW50KXt2YXIgYyxkPShjPWIucXVlcnlTZWxlY3Rvcik9PW51bGw/dm9pZCAwOmMuY2FsbChiLGAke2F9W25vbmNlXWApO3JldHVybiBkPT1udWxsPyIiOmQubm9uY2V8fGQuZ2V0QXR0cmlidXRlKCJub25jZSIpfHwiIn07SGphPWZ1bmN0aW9uKGEpe3ZhciBiPV8uRmphKGEub3duZXJEb2N1bWVudCk7YiYmYS5zZXRBdHRyaWJ1dGUoIm5vbmNlIixiKX07Cl8uSWphPWZ1bmN0aW9uKGEsYixjKXthLnRleHRDb250ZW50PV8uSWMoYik7KGM9PW51bGw/MDpjLlJHYyl8fEhqYShhKX07Xy5kZD1mdW5jdGlvbihhLGIsYyl7YS5zcmM9Xy56YyhiKTsoYz09bnVsbD8wOmMuUkdjKXx8SGphKGEpfTtfLmVkPWZ1bmN0aW9uKGEsYil7YS5ub2RlVHlwZT09PTEmJkpqYShhKTthLmlubmVySFRNTD1fLnFjKGIpfTtfLktqYT1mdW5jdGlvbihhLGIpe3ZhciBjPWEucGFyZW50RWxlbWVudDtjIT09bnVsbCYmSmphKGMpO2Eub3V0ZXJIVE1MPV8ucWMoYil9O18uTGphPWZ1bmN0aW9uKGEsYixjKXt2YXIgZD1iPT09ImJlZm9yZWJlZ2luInx8Yj09PSJhZnRlcmVuZCI/YS5wYXJlbnRFbGVtZW50OmE7ZCE9PW51bGwmJkpqYShkKTthLmluc2VydEFkamFjZW50SFRNTChiLF8ucWMoYykpfTsKXy5mZD1mdW5jdGlvbihhLGIsYyxkKXtpZihhLmxlbmd0aD09PTApdGhyb3cgRXJyb3IoIlYiKTthPWEubWFwKGY9Pl8uYWlhKGYpKTt2YXIgZT1jLnRvTG93ZXJDYXNlKCk7aWYoYS5ldmVyeShmPT5lLmluZGV4T2YoZikhPT0wKSl0aHJvdyBFcnJvcigiWmAiK2MpO2Iuc2V0QXR0cmlidXRlKGMsZCl9O0pqYT1mdW5jdGlvbihhKXtpZigvXihzY3JpcHR8c3R5bGUpJC9pLnRlc3QoYS50YWdOYW1lKSl0aHJvdyBFcnJvcigiViIpO307Xy5PamE9ZnVuY3Rpb24oYSxiLGMpe2lmKF8ub2lhKGIpKV8uTWphKGEsYixjKTtlbHNle2lmKE5qYS5pbmRleE9mKGMpPT09LTEpdGhyb3cgRXJyb3IoIiRgIitjKTtiPV8uSGMoYik7YiE9PXZvaWQgMCYmKGEuaHJlZj1iLGEucmVsPWMpfX07Xy5NamE9ZnVuY3Rpb24oYSxiLGMpe2EuaHJlZj1fLnpjKGIpLnRvU3RyaW5nKCk7YS5yZWw9Y307Cl8uUGphPWZ1bmN0aW9uKGEsYil7dmFyIGM9d2lhKGIpO2MhPT0iamF2YXNjcmlwdDoiJiZjIT09ImRhdGE6IiYmYS5zZXRBdHRyaWJ1dGUoImhyZWYiLGIpfTtfLlFqYT1mdW5jdGlvbihhLGIpe2Eud3JpdGUoXy5xYyhiKSl9O18uU2phPWZ1bmN0aW9uKGEsYil7cmV0dXJuIF8uUmphKGEsYiwidGV4dC9odG1sIil9O18uUmphPWZ1bmN0aW9uKGEsYixjKXtyZXR1cm4gYS5wYXJzZUZyb21TdHJpbmcoXy5xYyhiKSxjKX07Xy5UamE9ZnVuY3Rpb24oYSxiKXtiPV8uSWMoYik7dmFyIGM9YS5ldmFsKGIpO2M9PT1iJiYoYz1hLmV2YWwoYi50b1N0cmluZygpKSk7cmV0dXJuIGN9O18uZ2Q9ZnVuY3Rpb24oYSxiKXtiPV8uSGMoYik7YiE9PXZvaWQgMCYmKGEuaHJlZj1iKX07Xy5oZD1mdW5jdGlvbihhLGIpe2I9Xy5IYyhiKTtiIT09dm9pZCAwJiZhLnJlcGxhY2UoYil9O18uVWphPWZ1bmN0aW9uKGEsYil7Yj1fLkhjKGIpO2IhPT12b2lkIDAmJmEuYXNzaWduKGIpfTtfLlZqYT1mdW5jdGlvbihhKXtyZXR1cm4gXy55KGEpfTsKXy5XamE9ZnVuY3Rpb24oYSl7cmV0dXJuIF8ueGMoYSl9O18uWGphPWZ1bmN0aW9uKGEpe3JldHVybiBfLmppYShhKX07Xy5ZamE9ZnVuY3Rpb24oYSxiLGMsZCxlLGYsZyl7dmFyIGg9IiI7YSYmKGgrPWErIjoiKTtjJiYoaCs9Ii8vIixiJiYoaCs9YisiQCIpLGgrPWMsZCYmKGgrPSI6IitkKSk7ZSYmKGgrPWUpO2YmJihoKz0iPyIrZik7ZyYmKGgrPSIjIitnKTtyZXR1cm4gaH07Xy5qZD1mdW5jdGlvbihhKXtyZXR1cm4gYS5tYXRjaChaamEpfTskamE9ZnVuY3Rpb24oYSxiKXtyZXR1cm4gYT9iP2RlY29kZVVSSShhKTpkZWNvZGVVUklDb21wb25lbnQoYSk6YX07Xy5rZD1mdW5jdGlvbihhLGIpe3JldHVybiBfLmpkKGIpW2FdfHxudWxsfTtfLmFrYT1mdW5jdGlvbihhKXthPV8ua2QoMSxhKTshYSYmXy5lYS5zZWxmJiZfLmVhLnNlbGYubG9jYXRpb24mJihhPV8uZWEuc2VsZi5sb2NhdGlvbi5wcm90b2NvbC5zbGljZSgwLC0xKSk7cmV0dXJuIGE/YS50b0xvd2VyQ2FzZSgpOiIifTsKXy5ia2E9ZnVuY3Rpb24oYSl7cmV0dXJuICRqYShfLmtkKDMsYSksITApfTtfLmNrYT1mdW5jdGlvbihhKXtyZXR1cm4gJGphKF8ua2QoNSxhKSwhMCl9O18uZGthPWZ1bmN0aW9uKGEpe3ZhciBiPWEuaW5kZXhPZigiIyIpO3JldHVybiBiPDA/bnVsbDphLnNsaWNlKGIrMSl9O18ubGQ9ZnVuY3Rpb24oYSl7cmV0dXJuICRqYShfLmRrYShhKSl9O18uZWthPWZ1bmN0aW9uKGEpe2E9Xy5qZChhKTtyZXR1cm4gXy5ZamEoYVsxXSxhWzJdLGFbM10sYVs0XSl9O18ubWQ9ZnVuY3Rpb24oYSl7YT1fLmpkKGEpO3JldHVybiBfLllqYShhWzFdLG51bGwsYVszXSxhWzRdKX07Xy5vZD1mdW5jdGlvbihhKXthPV8uamQoYSk7cmV0dXJuIF8uWWphKG51bGwsbnVsbCxudWxsLG51bGwsYVs1XSxhWzZdLGFbN10pfTtfLmZrYT1mdW5jdGlvbihhKXt2YXIgYj1hLmluZGV4T2YoIiMiKTtyZXR1cm4gYjwwP2E6YS5zbGljZSgwLGIpfTsKXy5oa2E9ZnVuY3Rpb24oYSxiKXtpZihhKXthPWEuc3BsaXQoIiYiKTtmb3IobGV0IGM9MDtjPGEubGVuZ3RoO2MrKyl7bGV0IGQ9YVtjXS5pbmRleE9mKCI9IiksZSxmPW51bGw7ZD49MD8oZT1hW2NdLnN1YnN0cmluZygwLGQpLGY9YVtjXS5zdWJzdHJpbmcoZCsxKSk6ZT1hW2NdO2IoZSxmP18uZ2thKGYpOiIiKX19fTtpa2E9ZnVuY3Rpb24oYSl7dmFyIGI9YS5pbmRleE9mKCIjIik7YjwwJiYoYj1hLmxlbmd0aCk7dmFyIGM9YS5pbmRleE9mKCI/Iik7aWYoYzwwfHxjPmIpe2M9Yjt2YXIgZD0iIn1lbHNlIGQ9YS5zdWJzdHJpbmcoYysxLGIpO3JldHVyblthLnNsaWNlKDAsYyksZCxhLnNsaWNlKGIpXX07amthPWZ1bmN0aW9uKGEsYil7cmV0dXJuIGI/YT9hKyImIitiOmI6YX07a2thPWZ1bmN0aW9uKGEsYil7aWYoIWIpcmV0dXJuIGE7YT1pa2EoYSk7YVsxXT1qa2EoYVsxXSxiKTtyZXR1cm4gYVswXSsoYVsxXT8iPyIrYVsxXToiIikrYVsyXX07CmxrYT1mdW5jdGlvbihhLGIsYyl7aWYoQXJyYXkuaXNBcnJheShiKSlmb3IobGV0IGQ9MDtkPGIubGVuZ3RoO2QrKylsa2EoYSxTdHJpbmcoYltkXSksYyk7ZWxzZSBiIT1udWxsJiZjLnB1c2goYSsoYj09PSIiPyIiOiI9IitfLnBkKGIpKSl9O18ubWthPWZ1bmN0aW9uKGEsYil7dmFyIGM9W107Zm9yKGI9Ynx8MDtiPGEubGVuZ3RoO2IrPTIpbGthKGFbYl0sYVtiKzFdLGMpO3JldHVybiBjLmpvaW4oIiYiKX07Xy5ua2E9ZnVuY3Rpb24oYSl7dmFyIGI9W107Zm9yKGxldCBjIGluIGEpbGthKGMsYVtjXSxiKTtyZXR1cm4gYi5qb2luKCImIil9O18ub2thPWZ1bmN0aW9uKGEsYil7dmFyIGM9YXJndW1lbnRzLmxlbmd0aD09Mj9fLm1rYShhcmd1bWVudHNbMV0sMCk6Xy5ta2EoYXJndW1lbnRzLDEpO3JldHVybiBra2EoYSxjKX07Xy5wa2E9ZnVuY3Rpb24oYSxiKXtiPV8ubmthKGIpO3JldHVybiBra2EoYSxiKX07Cl8ucWthPWZ1bmN0aW9uKGEsYixjKXtjPWMhPW51bGw/Ij0iK18ucGQoYyk6IiI7cmV0dXJuIGtrYShhLGIrYyl9O18ucmthPWZ1bmN0aW9uKGEsYixjLGQpe2Zvcih2YXIgZT1jLmxlbmd0aDsoYj1hLmluZGV4T2YoYyxiKSk+PTAmJmI8ZDspe3ZhciBmPWEuY2hhckNvZGVBdChiLTEpO2lmKGY9PTM4fHxmPT02MylpZihmPWEuY2hhckNvZGVBdChiK2UpLCFmfHxmPT02MXx8Zj09Mzh8fGY9PTM1KXJldHVybiBiO2IrPWUrMX1yZXR1cm4tMX07Xy5yZD1mdW5jdGlvbihhLGIpe3JldHVybiBfLnJrYShhLDAsYixhLnNlYXJjaChfLnNrYSkpPj0wfTtfLnNkPWZ1bmN0aW9uKGEsYil7dmFyIGM9YS5zZWFyY2goXy5za2EpLGQ9Xy5ya2EoYSwwLGIsYyk7aWYoZDwwKXJldHVybiBudWxsO3ZhciBlPWEuaW5kZXhPZigiJiIsZCk7aWYoZTwwfHxlPmMpZT1jO2QrPWIubGVuZ3RoKzE7cmV0dXJuIF8uZ2thKGEuc2xpY2UoZCxlIT09LTE/ZTowKSl9OwpfLnVrYT1mdW5jdGlvbihhLGIpe2Zvcih2YXIgYz1hLnNlYXJjaChfLnNrYSksZD0wLGUsZj1bXTsoZT1fLnJrYShhLGQsYixjKSk+PTA7KWYucHVzaChhLnN1YnN0cmluZyhkLGUpKSxkPU1hdGgubWluKGEuaW5kZXhPZigiJiIsZSkrMXx8YyxjKTtmLnB1c2goYS5zbGljZShkKSk7cmV0dXJuIGYuam9pbigiIikucmVwbGFjZSh0a2EsIiQxIil9O18udGQ9ZnVuY3Rpb24oYSxiLGMpe3JldHVybiBfLnFrYShfLnVrYShhLGIpLGIsYyl9O18udWQ9ZnVuY3Rpb24oYSxiKXthPWlrYShhKTt2YXIgYz1hWzFdLGQ9W107YyYmYy5zcGxpdCgiJiIpLmZvckVhY2goZnVuY3Rpb24oZSl7dmFyIGY9ZS5pbmRleE9mKCI9Iik7Zj1mPj0wP2Uuc2xpY2UoMCxmKTplO2IuaGFzT3duUHJvcGVydHkoZil8fGQucHVzaChlKX0pO2FbMV09amthKGQuam9pbigiJiIpLF8ubmthKGIpKTtyZXR1cm4gYVswXSsoYVsxXT8iPyIrYVsxXToiIikrYVsyXX07Cl8udmthPWZ1bmN0aW9uKGEsYil7Xy5pYShiLCIvIil8fChiPSIvIitiKTthPV8uamQoYSk7cmV0dXJuIF8uWWphKGFbMV0sYVsyXSxhWzNdLGFbNF0sYixhWzZdLGFbN10pfTt4a2E9ZnVuY3Rpb24oKXt2YXIgYT1fLmVhLl9GX2pzVXJsPyIiOiJiYXNlLWpzIjt2YXIgYj0iIjt2YXIgYz1fLmVhLl9GX2pzVXJsO2E6e2lmKHR5cGVvZiBkb2N1bWVudCE9PSJ1bmRlZmluZWQiJiZkb2N1bWVudCYmZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQmJihhPWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGEpKSl7bGV0IGQ9YS50YWdOYW1lLnRvVXBwZXJDYXNlKCk7aWYoZD09IlNDUklQVCJ8fGQ9PSJMSU5LIilicmVhayBhfWE9bnVsbH1hJiYoYj1hLnNyYz9hLnNyYzphLmdldEF0dHJpYnV0ZSgiaHJlZiIpKTtpZihjJiZiKXtpZihjIT1iKXRocm93IEVycm9yKCJkYWAiK2MrImAiK2IpO2I9Y31lbHNlIGI9Y3x8YjtpZighd2thKGIpKXRocm93IEVycm9yKCJlYSIpO3JldHVybiBifTsKXy52ZD1mdW5jdGlvbihhLGIpe2IuaGFzT3duUHJvcGVydHkoImRpc3BsYXlOYW1lIil8fChiLmRpc3BsYXlOYW1lPWEudG9TdHJpbmcoKSk7Ylt5a2FdPWF9O18uemthPWZ1bmN0aW9uKGEpe2E9YVt5a2FdO3JldHVybiBhIGluc3RhbmNlb2YgXy5pYz9hOm51bGx9O3hkPWZ1bmN0aW9uKGEsYixjLGQsZSl7YT1fLmpjKGEsYixkP1tkXTp2b2lkIDAsITEsdm9pZCAwLEFrYSk7ZSYmQmthKGUpLmFkZChhKTt3ZC5nZXRJbnN0YW5jZSgpLnJlZ2lzdGVyKGEsbmV3IENrYShhLFNoYShhKSxjP1NoYShjKTpuZXcgU2V0LEJrYShhKSxjP0JrYShjKTpuZXcgU2V0LGQpKTtyZXR1cm4gYX07QmthPWZ1bmN0aW9uKGEpe3JldHVybiBOaGEoRGthLGEudG9TdHJpbmcoKSwoKT0+bmV3IFNldCl9O18ueWQ9ZnVuY3Rpb24oKXtyZXR1cm4gRWthfHxfLmVhLmxvY2F0aW9ufTtfLkZrYT1mdW5jdGlvbigpe3JldHVybiBfLnlkKCkucHJvdG9jb2wrIi8vIitfLnlkKCkuaG9zdH07Cl8uSWthPWZ1bmN0aW9uKCl7cmV0dXJuIF8uemR8fF8uR2thfHxfLkhrYX07Xy5BZD1mdW5jdGlvbigpe3JldHVybiBfLnpkfHxfLkhrYX07TGthPWZ1bmN0aW9uKGEsYil7cmV0dXJuKGE9Xy5Ka2EoYSxiLF8uS2thLCExLHdpbmRvdy5sb2NhdGlvbikpP2Euc3BsaXQoIiYiKS5tYXAoYz0+Yy5zcGxpdCgiPSIpKTpbXX07Xy5Ka2E9ZnVuY3Rpb24oYSxiLGMsZCxlPXdpbmRvdy5sb2NhdGlvbil7dmFyIGY9IiI7YSYmKGYrPWAmeng9JHtEYXRlLm5vdygpLnRvU3RyaW5nKCl9YCk7Xy5lYS5fY3NoaWQmJmImJihmKz1gJmNzaGlkPSR7Xy5lYS5fY3NoaWR9YCk7KGE9YygpKSYmKGYrPWAmb3BpPSR7YX1gKTsoYT1fLnNkKGUuc2VhcmNoLCJnZW1jaWQiKSkmJihmKz1gJmdlbWNpZD0ke2F9YCk7KGU9Xy5zZChlLnNlYXJjaCwiZ2VtcmlkIikpJiYoZis9YCZnZW1yaWQ9JHtlfWApOyFkJiZmJiYoZj1mLnN1YnN0cmluZygxKSk7cmV0dXJuIGZ9OwpfLk1rYT1mdW5jdGlvbihhKXt0cnl7d2luZG93Lm5hdmlnYXRvci5zZW5kQmVhY29uKGEsIiIpfWNhdGNoKGIpe319O05rYT1mdW5jdGlvbigpe3JldHVybiB3aW5kb3cuZ29vZ2xlJiZ3aW5kb3cuZ29vZ2xlLmtPUEl8fG51bGx9O18uUGthPWZ1bmN0aW9uKGEpe2Zvcih2YXIgYjthJiYoIWEuZ2V0QXR0cmlidXRlfHwhKGI9YS5nZXRBdHRyaWJ1dGUoImVpZCIpKSk7KWE9YS5wYXJlbnROb2RlO3JldHVybiBifHxPa2F9O18uUWthPWZ1bmN0aW9uKGEpe2Zvcih2YXIgYj1udWxsO2EmJighYS5nZXRBdHRyaWJ1dGV8fCEoYj1hLmdldEF0dHJpYnV0ZSgibGVpZCIpKSk7KWE9YS5wYXJlbnROb2RlO3JldHVybiBifTsKUmthPWZ1bmN0aW9uKGEsYixjLGQsZSxmPU5rYSl7Y3x8KGM9IiIsYi5zZWFyY2goIiZlaT0iKT09PS0xJiYoYz1gJmVpPSR7Xy5Qa2EoZCl9YCxiLnNlYXJjaCgiJmxlaT0iKT09PS0xJiYoZD1fLlFrYShkKSkmJihjKz1gJmxlaT0ke2R9YCkpLGY9Xy5Ka2EoITAsYi5zZWFyY2goIiZjc2hpZD0iKT09PS0xJiZhIT09InNsaCIsZiwhMCksYz1gLyR7ZXx8Imdlbl8yMDQifT9hdHlwPWkmY3Q9JHtTdHJpbmcoYSl9JmNhZD0ke2IrYytmfWApO2E9YzsvXmh0dHA6L2kudGVzdChhKSYmd2luZG93LmxvY2F0aW9uLnByb3RvY29sPT09Imh0dHBzOiImJihnb29nbGUubWwmJmdvb2dsZS5tbChFcnJvcigiaGEiKSwhMSx7c3JjOmEsZ2xtbToxfSksYT0iIik7KGM9YSkmJl8uTWthKGMpfTtfLlNrYT1mdW5jdGlvbihhLGIpe3JldHVybiBfLmJjKGIsYFske2Euc3Vic3RyaW5nKDQpfWApfTtUa2E9ZnVuY3Rpb24oYT13aW5kb3cpe3JldHVybiBhLldJWl9nbG9iYWxfZGF0YX07Cl8uVWthPWZ1bmN0aW9uKGEsYj13aW5kb3cpe3JldHVybihiPVRrYShiKSkmJmEgaW4gYj9iW2FdOm51bGx9O18uQmQ9ZnVuY3Rpb24oYSxiPXdpbmRvdyl7cmV0dXJuIG5ldyBfLlZrYShhLF8uVWthKGEsYikpfTtfLldrYT1mdW5jdGlvbigpe3ZhciBhPV8uQmQoIlM2bFpsIik7cmV0dXJuIGEuTGIoKSYmXy5DZChhLDApIT09MD9fLkNkKGEsMCk6bnVsbH07Xy5Ya2E9ZnVuY3Rpb24oYSl7dmFyIGI9Xy5Xa2EoKSxjPSIiO2IhPW51bGwmJihhJiYoYys9IiYiKSxjKz1gb3BpPSR7Yn1gKTtyZXR1cm4gY307Xy5La2E9ZnVuY3Rpb24oKXt2YXIgYT1fLldrYSgpO3JldHVybiBhP2E6KGE9TmthKCkpP2E6bnVsbH07Xy5EZD1mdW5jdGlvbihhKXthJiZ0eXBlb2YgYS5kaXNwb3NlPT0iZnVuY3Rpb24iJiZhLmRpc3Bvc2UoKX07Cl8uWWthPWZ1bmN0aW9uKGEpe2ZvcihsZXQgYj0wLGM9YXJndW1lbnRzLmxlbmd0aDtiPGM7KytiKXtsZXQgZD1hcmd1bWVudHNbYl07Xy5IYShkKT9fLllrYS5hcHBseShudWxsLGQpOl8uRGQoZCl9fTtfLkVkPWZ1bmN0aW9uKCl7dGhpcy5vRT10aGlzLm9FO3RoaXMuU3k9dGhpcy5TeX07Xy5aa2E9ZnVuY3Rpb24oYSl7cmV0dXJuIE1hdGguZmxvb3IoTWF0aC5yYW5kb20oKSphKX07Xy5GZD1mdW5jdGlvbihhLGIsYyl7cmV0dXJuIE1hdGgubWluKE1hdGgubWF4KGEsYiksYyl9O18uR2Q9ZnVuY3Rpb24oYSxiLGMpe3JldHVybiBhK2MqKGItYSl9O18uSWQ9ZnVuY3Rpb24oYSxiLGMpe3JldHVybiBNYXRoLmFicyhhLWIpPD0oY3x8MUUtNil9O18uSmQ9ZnVuY3Rpb24oYSl7cmV0dXJuIGEqTWF0aC5QSS8xODB9O18uS2Q9ZnVuY3Rpb24oYSxiKXt0aGlzLng9YSE9PXZvaWQgMD9hOjA7dGhpcy55PWIhPT12b2lkIDA/YjowfTsKXy5MZD1mdW5jdGlvbihhLGIpe3RoaXMud2lkdGg9YTt0aGlzLmhlaWdodD1ifTtfLiRrYT1mdW5jdGlvbigpe3JldHVybiBfLk5kPyJXZWJraXQiOl8uT2Q/Ik1veiI6bnVsbH07Xy5hbGE9ZnVuY3Rpb24oKXtyZXR1cm4gXy5OZD8iLXdlYmtpdCI6Xy5PZD8iLW1veiI6bnVsbH07Y2xhPWZ1bmN0aW9uKGEsYil7aWYoYiYmYSBpbiBiKXJldHVybiBhO3ZhciBjPV8uJGthKCk7cmV0dXJuIGM/KGM9Yy50b0xvd2VyQ2FzZSgpLGE9YytfLmJsYShhKSxiPT09dm9pZCAwfHxhIGluIGI/YTpudWxsKTpudWxsfTtfLlBkPWZ1bmN0aW9uKGEsYixjLGQpe3RoaXMudG9wPWE7dGhpcy5yaWdodD1iO3RoaXMuYm90dG9tPWM7dGhpcy5sZWZ0PWR9O18uUmQ9ZnVuY3Rpb24oYSxiLGMsZCl7dGhpcy5sZWZ0PWE7dGhpcy50b3A9Yjt0aGlzLndpZHRoPWM7dGhpcy5oZWlnaHQ9ZH07Xy5TZD1mdW5jdGlvbihhLGIpe2I/YS5zZXRBdHRyaWJ1dGUoInJvbGUiLGIpOmEucmVtb3ZlQXR0cmlidXRlKCJyb2xlIil9OwpfLmRsYT1mdW5jdGlvbihhKXtyZXR1cm4gYS5nZXRBdHRyaWJ1dGUoInJvbGUiKXx8bnVsbH07Xy5UZD1mdW5jdGlvbihhLGIsYyl7QXJyYXkuaXNBcnJheShjKSYmKGM9Yy5qb2luKCIgIikpO3ZhciBkPSJhcmlhLSIrYjtjPT09IiJ8fGM9PXZvaWQgMD8oZWxhfHwoZWxhPXthdG9taWM6ITEsYXV0b2NvbXBsZXRlOiJub25lIixkcm9wZWZmZWN0OiJub25lIixoYXNwb3B1cDohMSxsaXZlOiJvZmYiLG11bHRpbGluZTohMSxtdWx0aXNlbGVjdGFibGU6ITEsb3JpZW50YXRpb246InZlcnRpY2FsIixyZWFkb25seTohMSxyZWxldmFudDoiYWRkaXRpb25zIHRleHQiLHJlcXVpcmVkOiExLHNvcnQ6Im5vbmUiLGJ1c3k6ITEsZGlzYWJsZWQ6ITEsaGlkZGVuOiExLGludmFsaWQ6ImZhbHNlIn0pLGM9ZWxhLGIgaW4gYz9hLnNldEF0dHJpYnV0ZShkLGNbYl0pOmEucmVtb3ZlQXR0cmlidXRlKGQpKTphLnNldEF0dHJpYnV0ZShkLGMpfTsKXy5VZD1mdW5jdGlvbihhLGIpe2EucmVtb3ZlQXR0cmlidXRlKCJhcmlhLSIrYil9O18uVmQ9ZnVuY3Rpb24oYSxiKXthPWEuZ2V0QXR0cmlidXRlKCJhcmlhLSIrYik7cmV0dXJuIGE9PW51bGx8fGE9PXZvaWQgMD8iIjpTdHJpbmcoYSl9O18uZmxhPWZ1bmN0aW9uKGEpe3ZhciBiPV8uVmQoYSwiYWN0aXZlZGVzY2VuZGFudCIpO3JldHVybiBfLldkKGEpLmdldEVsZW1lbnRCeUlkKGIpfTtfLmdsYT1mdW5jdGlvbihhLGIpe3ZhciBjPSIiO2ImJihjPWIuaWQpO18uVGQoYSwiYWN0aXZlZGVzY2VuZGFudCIsYyl9O18uaGxhPWZ1bmN0aW9uKGEsYil7Xy5UZChhLCJsYWJlbCIsYil9O18uWWQ9ZnVuY3Rpb24oYSl7dGhpcy5pZD1hfTtpbGE9ZnVuY3Rpb24oYSl7cmV0dXJuIF8uTmQ/IndlYmtpdCIrYTphLnRvTG93ZXJDYXNlKCl9OwpfLiRkPWZ1bmN0aW9uKGEsYil7Xy5aZC5jYWxsKHRoaXMsYT9hLnR5cGU6IiIpO3RoaXMucmVsYXRlZFRhcmdldD10aGlzLmN1cnJlbnRUYXJnZXQ9dGhpcy50YXJnZXQ9bnVsbDt0aGlzLmJ1dHRvbj10aGlzLnNjcmVlblk9dGhpcy5zY3JlZW5YPXRoaXMuY2xpZW50WT10aGlzLmNsaWVudFg9dGhpcy5vZmZzZXRZPXRoaXMub2Zmc2V0WD0wO3RoaXMua2V5PSIiO3RoaXMuY2hhckNvZGU9dGhpcy5rZXlDb2RlPTA7dGhpcy5tZXRhS2V5PXRoaXMuc2hpZnRLZXk9dGhpcy5hbHRLZXk9dGhpcy5jdHJsS2V5PSExO3RoaXMuc3RhdGU9bnVsbDt0aGlzLmthPSExO3RoaXMucG9pbnRlcklkPTA7dGhpcy5wb2ludGVyVHlwZT0iIjt0aGlzLnRpbWVTdGFtcD0wO3RoaXMuamc9bnVsbDthJiZ0aGlzLmluaXQoYSxiKX07Cl8ua2xhPWZ1bmN0aW9uKGEsYixjLGQsZSl7dGhpcy5saXN0ZW5lcj1hO3RoaXMucHJveHk9bnVsbDt0aGlzLnNyYz1iO3RoaXMudHlwZT1jO3RoaXMuY2FwdHVyZT0hIWQ7dGhpcy5oYW5kbGVyPWU7dGhpcy5rZXk9KytqbGE7dGhpcy5yZW1vdmVkPXRoaXMuTTA9ITF9O2xsYT1mdW5jdGlvbihhKXt0aGlzLnNyYz1hO3RoaXMuVGQ9e307dGhpcy5rYT0wfTtfLmFlPWZ1bmN0aW9uKGEpe18uRWQuY2FsbCh0aGlzKTt0aGlzLk5hPWE7dGhpcy5CYT17fX07Xy5iZT1mdW5jdGlvbigpe18uRWQuY2FsbCh0aGlzKTt0aGlzLnJjYT1uZXcgbGxhKHRoaXMpO3RoaXMua2xjPXRoaXM7dGhpcy5EemI9bnVsbH07Xy5kZT1mdW5jdGlvbihhKXt2YXIgYj1fLmNlKGEpO3JldHVybiBiJiZtbGEoKT8tYS5zY3JvbGxMZWZ0OmImJl8ubmxhKGEpIT0idmlzaWJsZSI/YS5zY3JvbGxXaWR0aC1hLmNsaWVudFdpZHRoLWEuc2Nyb2xsTGVmdDphLnNjcm9sbExlZnR9OwpfLmVlPWZ1bmN0aW9uKGEpe3ZhciBiPWEub2Zmc2V0TGVmdCxjPWEub2Zmc2V0UGFyZW50O2N8fF8ub2xhKGEpIT0iZml4ZWQifHwoYz1fLldkKGEpLmRvY3VtZW50RWxlbWVudCk7cmV0dXJuIGM/Xy5jZShjKT9jLmNsaWVudFdpZHRoLShiK2Eub2Zmc2V0V2lkdGgpOmI6Yn07Xy5mZT1mdW5jdGlvbihhLGIpe2I9TWF0aC5tYXgoYiwwKTtfLmNlKGEpP21sYSgpP2Euc2Nyb2xsTGVmdD0tYjphLnNjcm9sbExlZnQ9YS5zY3JvbGxXaWR0aC1iLWEuY2xpZW50V2lkdGg6YS5zY3JvbGxMZWZ0PWJ9O21sYT1mdW5jdGlvbigpe3ZhciBhPV8uZ2UuanRhJiYoMCxfLmdlLndWYSkoMTApLGI9Xy5wbGEmJl8ubmEoXy5xbGEsMTApPj0wLGM9Xy5nZS5DSFJPTUUmJigwLF8uZ2Uud1ZhKSg4NSk7cmV0dXJuIF8uT2R8fGF8fGJ8fGN9Owp3bGE9ZnVuY3Rpb24oYSxiKXt2YXIgYz1ybGErKyxkPXtKRWM6e2lkOmMsdUs6YS5tZWFzdXJlLGNvbnRleHQ6Yn0sVUZjOntpZDpjLHVLOmEud2MsY29udGV4dDpifSxzdGF0ZTp7fSxhcmdzOnZvaWQgMCxwVmE6ITF9O3JldHVybiBmdW5jdGlvbigpe2FyZ3VtZW50cy5sZW5ndGg+MD8oZC5hcmdzfHwoZC5hcmdzPVtdKSxkLmFyZ3MubGVuZ3RoPTAsZC5hcmdzLnB1c2guYXBwbHkoZC5hcmdzLGFyZ3VtZW50cyksZC5hcmdzLnB1c2goZC5zdGF0ZSkpOmQuYXJncyYmZC5hcmdzLmxlbmd0aCE9MD8oZC5hcmdzWzBdPWQuc3RhdGUsZC5hcmdzLmxlbmd0aD0xKTpkLmFyZ3M9W2Quc3RhdGVdO2QucFZhfHwoZC5wVmE9ITAsc2xhW3RsYV0ucHVzaChkKSk7dWxhfHwodWxhPSEwLHdpbmRvdy5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUodmxhKSl9fTsKdmxhPWZ1bmN0aW9uKCl7dWxhPSExO3ZhciBhPXNsYVt0bGFdLGI9YS5sZW5ndGg7dGxhPSh0bGErMSklMjtmb3IodmFyIGM9MDtjPGI7KytjKXt2YXIgZD1hW2NdO3ZhciBlPWQuSkVjO2QucFZhPSExO2UudUsmJmUudUsuYXBwbHkoZS5jb250ZXh0LGQuYXJncyl9Zm9yKGM9MDtjPGI7KytjKWQ9YVtjXSxlPWQuVUZjLGQucFZhPSExLGUudUsmJmUudUsuYXBwbHkoZS5jb250ZXh0LGQuYXJncyksZC5zdGF0ZT17fTthLmxlbmd0aD0wfTtfLnhsYT1mdW5jdGlvbihhKXtfLmJlLmNhbGwodGhpcyk7dGhpcy5RYz1hO3RoaXMua2E9Xy5oZSh0aGlzLlFjLCJmb2N1cyIsdGhpcywhMCk7dGhpcy5vYT1fLmhlKHRoaXMuUWMsImJsdXIiLHRoaXMsITApfTsKXy5qZT1mdW5jdGlvbihhLGIpe3ZhciBjPWE7YiYmKGM9KDAsXy5pZSkoYSxiKSk7Yz1fLmplLnNVYyhjKTtfLmplLlFqYz9zZXRUaW1lb3V0KGMsMCk6KGM9Xy5qZS5oS2MoYyksXy5qZS5JeWF8fChfLmplLkl5YT1fLmplLkJ3YygpKSxfLmplLkl5YShjKSl9O0JsYT1mdW5jdGlvbigpe2Zvcih2YXIgYTthPXlsYS5yZW1vdmUoKTspe3RyeXthLnVLLmNhbGwoYS5zY29wZSl9Y2F0Y2goYil7Xy5mYShiKX16bGEucHV0KGEpfUFsYT0hMX07Xy5uZT1mdW5jdGlvbihhLGIpe18uYmUuY2FsbCh0aGlzKTt0aGlzLmthPWF8fDE7dGhpcy5vYT1ifHxfLmVhO3RoaXMud2E9KDAsXy5pZSkodGhpcy5SUWMsdGhpcyk7dGhpcy5BYT1fLmtlKCl9O18uQ2xhPWZ1bmN0aW9uKCl7fTsKXy5wZT1mdW5jdGlvbihhKXtfLmJlLmNhbGwodGhpcyk7dGhpcy5vYT1hfHxfLm9lKCk7dGhpcy5RYj1EbGE7dGhpcy5TYT1udWxsO3RoaXMuR2E9ITE7dGhpcy5RYz1udWxsO3RoaXMuT2E9dm9pZCAwO3RoaXMuS2E9dGhpcy5CYT10aGlzLkpvPXRoaXMuT2I9bnVsbDt0aGlzLkJlPSExfTtFbGE9ZnVuY3Rpb24oYSxiKXt0aGlzLlFjPWE7dGhpcy5vYT1ifTtfLnFlPWZ1bmN0aW9uKGEsYil7Xy5wZS5jYWxsKHRoaXMsYik7dGhpcy5DYz0hIWE7dGhpcy5FYT1udWxsO3RoaXMuSmI9d2xhKHt3Yzp0aGlzLk9jYn0sdGhpcyk7d2xhKHt3Yzp0aGlzLlBifSx0aGlzKX07Xy5zZT1mdW5jdGlvbihhLGIsYyl7Xy5xZS5jYWxsKHRoaXMsYixjKTt0aGlzLndhPWF8fCJtb2RhbC1kaWFsb2ciO3RoaXMua2E9cmUocmUobmV3IEZsYSxUbGEsITApLFVsYSwhMSwhMCl9O18uVmxhPWZ1bmN0aW9uKGEpe2lmKGEhPW51bGwpcmV0dXJuIF8udGUoYSl9OwpfLnZlPWZ1bmN0aW9uKGEpe3JldHVybiBhPT1udWxsP251bGw6Xy50ZShhKX07Xy50ZT1mdW5jdGlvbihhKXtyZXR1cm4gVmNhKGEpP051bWJlcihhKTpTdHJpbmcoYSl9O18uV2xhPWZ1bmN0aW9uKGEpe3JldHVybiBhPT1udWxsP251bGw6U3RyaW5nKGEpfTtZbGE9ZnVuY3Rpb24oYSl7dmFyIGI9W107Xy53ZShhLDEpJiZiLnB1c2goImk6IitfLnhlKGEsMSwtMSkpO18ud2UoYSwyKSYmYi5wdXNoKCJ0OiIrXy5YbGEoYSkpO18ud2UoYSw4KSYmYi5wdXNoKCJ5OiIrXy54ZShhLDgpKTtfLndlKGEsNSkmJmIucHVzaCgiZToiK18ueGUoYSw1LC0xKSk7Xy53ZShhLDYpJiZiLnB1c2goInI6IitfLnhlKGEsNiwtMSkpO18ud2UoYSw3KSYmYi5wdXNoKCJzOiIrXy54ZShhLDcpKTtyZXR1cm4iMSIrYi5qb2luKCIsIil9O18uYW1hPWZ1bmN0aW9uKGEpe3ZhciBiPV8ueWUoYSk7cmV0dXJuIGI/Xy5abGEoXy4kbGEoYikpOmEuZ2V0QXR0cmlidXRlKCJlaWQiKX07Cl8ueWU9ZnVuY3Rpb24oYSl7cmV0dXJuIGE/YS5nZXRBdHRyaWJ1dGUoImRhdGEtdmVkIil8fCIiOiIifTtfLiRsYT1mdW5jdGlvbihhKXtpZighYXx8YS5jaGFyQXQoMCkhPSIwIiYmYS5jaGFyQXQoMCkhPSIyIilyZXR1cm4gbnVsbDthPWEuc3Vic3RyaW5nKDEpO3RyeXtyZXR1cm4oMCxfLmJtYSkoYSl9Y2F0Y2goYil7cmV0dXJuIG51bGx9fTsKXy5abGE9ZnVuY3Rpb24oYSl7aWYoYSlpZihhPV8uemUoYSxfLkFlLDEzKSl7dmFyIGI9Xy56ZShhLF8uQ2UsMSksYz1OdW1iZXIoXy5EZShiLDEpKXx8MCxkPWMlMUU2O2M9KGMtZCkvMUU2O3ZhciBlPShfLkVlKGIsMil8fDApLTE2Nzc3MjE2MDtlPDAmJihlPWNtYStlKTtiPV8uRWUoYiwzKXx8MDt2YXIgZj1uZXcgZG1hO2VtYShmLGMpO18uTWIoZixkKTtfLk1iKGYsZSk7Xy5NYihmLGIpO2Q9Zi5lbmQoKTtkPV8uT2EoZCw0KTtfLkZlKGEsMikmJihhPV8uRGUoYSwyKSxkKz1gOiR7YX1gKTthPWR9ZWxzZSBhPW51bGw7ZWxzZSBhPW51bGw7cmV0dXJuIGF9O18ua21hPWZ1bmN0aW9uKGEpe2E9bmV3IGZtYShfLlFhKGEpKTt2YXIgYj1nbWEoYSksYz1fLlBiKGEpO2I9YioxRTYrYztjPV8uUGIoYSk7Yys9MTY3NzcyMTYwO2M+PWNtYSYmKGMtPWNtYSk7YT1fLlBiKGEpO3JldHVybiBfLmhtYShfLmltYShfLmptYShuZXcgXy5DZSxiKSxjKSxhKX07Cl8ubG1hPWZ1bmN0aW9uKGEpe3JldHVybiBhP2EuaGFzQXR0cmlidXRlKCJkYXRhLXZlZCIpP2E6YS5xdWVyeVNlbGVjdG9yKCJbZGF0YS12ZWRdIik6bnVsbH07Xy5tbWE9ZnVuY3Rpb24oYSl7aWYoYS5jaGFyQXQoMCkhPT0iMSIpe2E9Xy4kbGEoYSk7aWYoIWEpcmV0dXJue307Xy53ZShhLDEpJiZfLnhlKGEsMSwtMSk9PT0tMT8oYT1hLmNsb25lKCksYT1fLkdlKGEsMSksYT1ZbGEoYSkpOmE9WWxhKGEpfXJldHVybnt2ZWQ6YSxpY3R4OiIxMTEifX07Xy5ubWE9ZnVuY3Rpb24oYSxiKXtpZihiKWZvcihsZXQgW2MsZF1vZiBiKWEuc2V0KGMsZCl9OwpfLkhlPWZ1bmN0aW9uKGEsYil7dGhpcy5CYT10aGlzLkVhPXRoaXMua2E9IiI7dGhpcy5BYT1udWxsO3RoaXMud2E9dGhpcy5JYT0iIjt0aGlzLkdhPSExO3ZhciBjO2EgaW5zdGFuY2VvZiBfLkhlPyh0aGlzLkdhPWIhPT12b2lkIDA/YjphLkdhLF8uSWUodGhpcyxhLmthKSx0aGlzLkVhPWEuRWEsXy5KZSh0aGlzLGEuQW8oKSksXy5LZSh0aGlzLGEuQWEpLF8uTGUodGhpcyxhLmdldFBhdGgoKSksXy5vbWEodGhpcyxhLnd0KCkuY2xvbmUoKSksXy5NZSh0aGlzLGEud2EpKTphJiYoYz1fLmpkKFN0cmluZyhhKSkpPyh0aGlzLkdhPSEhYixfLkllKHRoaXMsY1sxXXx8IiIsITApLHRoaXMuRWE9Xy5wbWEoY1syXXx8IiIpLF8uSmUodGhpcyxjWzNdfHwiIiwhMCksXy5LZSh0aGlzLGNbNF0pLF8uTGUodGhpcyxjWzVdfHwiIiwhMCksXy5vbWEodGhpcyxjWzZdfHwiIiwhMCksXy5NZSh0aGlzLGNbN118fCIiLCEwKSk6KHRoaXMuR2E9ISFiLHRoaXMub2E9bmV3IF8uT2UobnVsbCx0aGlzLkdhKSl9OwpfLlBlPWZ1bmN0aW9uKGEsYixjLGQsZSl7UmthKGEsYixjLGQsZSxfLktrYSl9O18ucW1hPWZ1bmN0aW9uKCl7dmFyIGEsYjtyZXR1cm4oYT13aW5kb3cucGVyZm9ybWFuY2UpPT1udWxsP3ZvaWQgMDooYj1hLmdldEVudHJpZXNCeVR5cGUpPT1udWxsP3ZvaWQgMDpiLmNhbGwoYSwibmF2aWdhdGlvbiIpWzBdfTtybWE9ZnVuY3Rpb24oKXt2YXIgYSxiO3JldHVybihhPXdpbmRvdy5wZXJmb3JtYW5jZSk9PW51bGw/dm9pZCAwOihiPWEubmF2aWdhdGlvbik9PW51bGw/dm9pZCAwOmIudHlwZX07Xy5zbWE9ZnVuY3Rpb24oKXt2YXIgYT1fLnFtYSgpO3JldHVybiBhP2EudHlwZT09PSJiYWNrX2ZvcndhcmQiP2Eubm90UmVzdG9yZWRSZWFzb25zPT09dm9pZCAwPyEwOiEhYS5ub3RSZXN0b3JlZFJlYXNvbnM6ITE6cm1hKCk9PT0yfTtfLnRtYT1mdW5jdGlvbigpe3ZhciBhPV8ucW1hKCk7cmV0dXJuIGE/KGE9YS50eXBlLCFhfHxhPT09Im5hdmlnYXRlIik6IXJtYSgpfTsKdW1hPWZ1bmN0aW9uKCl7aWYodHlwZW9mIHdpbmRvdy5wZXJmb3JtYW5jZSE9PSJ1bmRlZmluZWQiJiZ0eXBlb2Ygd2luZG93LnBlcmZvcm1hbmNlLmdldEVudHJpZXNCeVR5cGU9PT0iZnVuY3Rpb24iKXt2YXIgYT13aW5kb3cucGVyZm9ybWFuY2UuZ2V0RW50cmllc0J5VHlwZSgibmF2aWdhdGlvbiIpO2lmKGEubGVuZ3RoIT09MCYmYVswXSlyZXR1cm4gYVswXX19O18udm1hPWZ1bmN0aW9uKGEsYil7dmFyIGM9dW1hKCk7aWYoYyl7dmFyIGQ9Yy50cmFuc2ZlclNpemU7dmFyIGU9Yy50eXBlfWQ9PT12b2lkIDAmJihkPS0xKTthPWAmdHQ9JHthfSZlaT1gK2dvb2dsZS5rRUk7YSs9YCZ0cnM9JHtkfWA7YiE9PXZvaWQgMCYmKGErPWAmYmZ0PSR7Yn1gKTtlJiYoYSs9YCZudD0ke2V9YCk7Xy5QZSgiYmFja2J1dHRvbiIsYSl9Owp3bWE9ZnVuY3Rpb24oYSxiKXtmb3IobGV0IGMgb2YgYSl7aWYoYy5yZWFzb25zIT09bnVsbCYmYy5yZWFzb25zLmxlbmd0aCl7YT1bXTtmb3IobGV0IGUgb2YgYy5yZWFzb25zKWUucmVhc29uJiZhLnB1c2goZS5yZWFzb24pO2E9YS5qb2luKCIsIil9ZWxzZSBhPSJDcm9zc09yaWdpbiI7bGV0IGQ9Yy51cmw/InVybDoiK2MudXJsOmMuc3JjPyJzcmM6IitjLnNyYzpjLmlkPyJpZDoiK2MuaWQ6Yy5uYW1lPyJuYW1lOiIrYy5uYW1lOiJub0NoaWxkSW5mbyI7YiE9PSIiJiYoYis9Ii4iKTtiKz1gJHtkfS18LSR7YX1gO2MuY2hpbGRyZW4mJmMuY2hpbGRyZW4ubGVuZ3RoPjAmJihiPXdtYShjLmNoaWxkcmVuLGIpKX1yZXR1cm4gYn07em1hPWZ1bmN0aW9uKCl7eG1hPV8ueWQoKS5ocmVmO3ltYT1zZXRUaW1lb3V0KCgpPT57eW1hPXhtYT1udWxsfSwxMDApfTsKQm1hPWZ1bmN0aW9uKGEpe2lmKCF3aW5kb3cucGVyZm9ybWFuY2UpcmV0dXJuIG51bGw7aWYoXy5OYS5TVygpKXJldHVybiBNYXRoLnJvdW5kKHdpbmRvdy5wZXJmb3JtYW5jZS5ub3coKS1hLnRpbWVTdGFtcCk7YT13aW5kb3cucGVyZm9ybWFuY2UudGltaW5nJiZ3aW5kb3cucGVyZm9ybWFuY2UudGltaW5nLm5hdmlnYXRpb25TdGFydDtyZXR1cm4gXy5OYS5NeSgpJiZBbWEmJmEmJkFtYSE9PWE/KGEtPUFtYSxNYXRoLnJvdW5kKHdpbmRvdy5wZXJmb3JtYW5jZS5ub3coKS1hKSk6bnVsbH07Xy5DbWE9ZnVuY3Rpb24oYSxiPXt9KXthLmRldGFpbHN8fChhLmRldGFpbHM9e30pO09iamVjdC5hc3NpZ24oYS5kZXRhaWxzLGIpfTtEbWE9ZnVuY3Rpb24oYSl7dmFyIGI7cmV0dXJuKGI9YS5kZXRhaWxzKSE9bnVsbD9iOm51bGx9OwpFbWE9ZnVuY3Rpb24oYSl7cmV0dXJuIG5ldyBSZWdFeHAoYCUoPzoke2VuY29kZVVSSUNvbXBvbmVudChhKS5zdWJzdHIoMSkucmVwbGFjZSgvJS9nLCJ8Iil9KWAsImciKX07Xy5IbWE9ZnVuY3Rpb24oYSxiPW5ldyBNYXAsYz0hMCxkPSEwKXtfLkZtYShiLGMsZCk7cmV0dXJuIGE9Xy5HbWEoYSxiKX07Xy5GbWE9ZnVuY3Rpb24oYSxiLGMpe2I9TGthKGIsYyk7Zm9yKGM9MDtjPGIubGVuZ3RoO2MrKylhLnNldChiW2NdWzBdLGJbY11bMV0pfTtfLkdtYT1mdW5jdGlvbihhLGIpe2E9bmV3IF8uUmUoYSk7Zm9yKGxldCBbYyxkXW9mIGIpYS5zZWFyY2hQYXJhbXMuc2V0KGMsZCk7cmV0dXJuIGE9YS50b1N0cmluZygpfTtLbWE9ZnVuY3Rpb24oYSl7dmFyIGI9bmV3IFNldCxjPVtdO2ZvcihsZXQgZCBvZiBhKXthPV8uSW1hKGQpO2lmKCFhfHxiLmhhcyhhKSljb250aW51ZTtiLmFkZChhKTsoYT1fLkptYS5nZXQoYSkpJiZjLnB1c2goYSl9cmV0dXJuIGN9OwpfLkltYT1mdW5jdGlvbihhKXt2YXIgYj1fLlNlKGEpO2E9Xy5MbWEoYik7Yj1fLlRlKGIsImNiIik7aWYoIWIpcmV0dXJuIiI7dmFyIGM9Yi5tYXRjaCgvbG9hZGVkKF9nfF9oKT9fKFxkKStfXGQrLyk7cmV0dXJuIGM/YCR7YX0uJHtOdW1iZXIoY1swXSktMX1gOihiPWIubWF0Y2goL2xvYWRlZChfZ3xfaCk/XyhcZCkrLykpP2Ake2F9LiR7YlswXX1gOiIifTtfLlVlPWZ1bmN0aW9uKGEpe3JldHVybiBfLk9hKGEsMil9O18uTW1hPWZ1bmN0aW9uKGEsYil7aWYoYj09bnVsbD8wOmIuc3RhY2spdHJ5e2xldCBjPWIuc3RhY2suaW5kZXhPZigiXG4iKTthLnN0YWNrKz1gXG4ke2M9PT0tMT9iLnN0YWNrOmIuc3RhY2suc3Vic3RyaW5nKGMrMSl9YH1jYXRjaChjKXt9fTsKXy5WZT1mdW5jdGlvbihhLHtEZjpiPXt9LHNYOmM9MCxsZXZlbDpkLEttYTplPSExfT17fSl7dHlwZW9mIGE9PT0ib2JqZWN0IiYmYSE9PW51bGwmJihjPT09MCYmYS5vbmVOYW1lc3BhY2VUeXBlIT09dm9pZCAwJiYoYz1hLm9uZU5hbWVzcGFjZVR5cGUpLGV8fGEuY2hlY2tFcnJvckxldmVsPT09dm9pZCAwfHwoZT1hLmNoZWNrRXJyb3JMZXZlbCkpO2lmKCEoImZ1bmN0aW9uIj09dHlwZW9mIF8uTm1hJiZhIGluc3RhbmNlb2YgXy5ObWEpKXt2YXIgZixnPShmPWEuSUNhKT09bnVsbD92b2lkIDA6Zi5KUmI7aWYoZyE9PXZvaWQgMClpZihnPT09NHx8Zz09PTMpZD0wLGU9ITE7ZWxzZSBpZihnPT09MilkPTIsZT0hMTtlbHNlIGlmKGc9PT0xfHxnPT09MClkPTMsZT0hMTtpZihkPT09dm9pZCAwfHxlKV8uT21hKGEpP2Q9MzpfLlBtYShhKSYmKGQ9Mik7ZD09PXZvaWQgMCYmKGQ9Mik7Yj1ifHx7fTshYXx8YSBpbnN0YW5jZW9mIEVycm9yfHwoYi5jb25zdHJ1Y3Rvcl9uYW1lPWEuY29uc3RydWN0b3IubmFtZSwKYi5mcm9tX3dpbmRvdz1TdHJpbmcoYSBpbnN0YW5jZW9mIE9iamVjdCkpO3dpbmRvdy5nb29nbGUmJndpbmRvdy5nb29nbGUuZXJkJiZ3aW5kb3cuZ29vZ2xlLmVyZC5jJiYoYi5vZmM9d2luZG93Lmdvb2dsZS5lcmQuYyk7UW1hPjAmJihiLnBoZj1TdHJpbmcoUW1hKSk7ZG9jdW1lbnQucmVhZHlTdGF0ZSE9PSJjb21wbGV0ZSImJihiLnJzPWRvY3VtZW50LnJlYWR5U3RhdGUpO2lmKGEuY2F1c2UgaW5zdGFuY2VvZiBFcnJvcil7Yi5jYXVzZV9tc2c9YS5jYXVzZS5tZXNzYWdlO3RyeXtsZXQgaD1hLmNhdXNlO2Zvcig7aCBpbnN0YW5jZW9mIEVycm9yOyl7bGV0IGssbT0oaz1oLnN0YWNrKSE9bnVsbD9rOmgubWVzc2FnZTthLnN0YWNrKz1gXG5DYXVzZWQgYnk6XG4ke219YDtoPWguY2F1c2V9fWNhdGNoKGgpe319ZD09PTAmJlJtYShhLGIpO2U9U21hKGEpO2U9S21hKGUpO2ZvcihsZXQgaCBvZiBlKWgub25lcnJvciYmKGQhPT0zJiYoZD0yKSxoLm9uZXJyb3IoYS5tZXNzYWdlLGEuZmlsZU5hbWV8fAoiIiwwLDAsYSkpO09iamVjdC5hc3NpZ24oYixEbWEoYSkpO2lmKChkPT09MXx8Xy5UbWEoKSkmJlVtYShhLGIsZCkpdHJ5e18uVm1hKGEsYixkKSxXbWEoaD0+e2gubG9nKGEsYixjLGQpfSl9Y2F0Y2goaCl7fX19O1NtYT1mdW5jdGlvbihhKXt2YXIgYj1uZXcgU2V0O2lmKGEuc3RhY2spe2E9YS5zdGFjay50b1N0cmluZygpLm1hdGNoQWxsKC8oaHR0cHM6XC9cLy4qPyk6XGQrOlxkKy9nKTtmb3IobGV0IGMgb2YgYSl3a2EoY1sxXSkmJmIuYWRkKGNbMV0pfXJldHVybiBBcnJheS5mcm9tKGIpfTsKXy5PbWE9ZnVuY3Rpb24oYSl7aWYoKChhPT1udWxsP3ZvaWQgMDphLl9sZXZlbCl8fDApPT09MylyZXR1cm4hMDt2YXIgYixjLGQ7cmV0dXJuKChiPWEuc3RhY2spPT1udWxsPzA6Yi5pbmNsdWRlcygiLWV4dGVuc2lvbjovLyIpKXx8KChjPWEuZmlsZU5hbWUpPT1udWxsPzA6Yy5pbmNsdWRlcygiLWV4dGVuc2lvbjovIikpfHwoKGQ9YS5zdGFjayk9PW51bGw/MDpkLmluY2x1ZGVzKCJAd2Via2l0LW1hc2tlZC11cmw6LyIpKT8hMDphLm1lc3NhZ2U9PT0iU2NyaXB0IGVycm9yInx8YS5tZXNzYWdlPT09IlNjcmlwdCBlcnJvci4ifHxhLm1lc3NhZ2U9PT0iRXJyb3I6IFNjcmlwdCBlcnJvciJ8fGEubWVzc2FnZT09PSJFcnJvcjogU2NyaXB0IGVycm9yLiJ8fGEubWVzc2FnZT09PSJjYW4ndCBhY2Nlc3MgZGVhZCBvYmplY3QifTsKXy5QbWE9ZnVuY3Rpb24oYSl7cmV0dXJuIVhtYShhKXx8IWEubWVzc2FnZXx8KChhPT1udWxsP3ZvaWQgMDphLl9sZXZlbCl8fDApPT09Mnx8YSBpbnN0YW5jZW9mIF8uV2U/ITA6YSBpbnN0YW5jZW9mIF8uWGU/YS5JQWE9PT0yfHxhLklBYT09PTExOnR5cGVvZiBhLm1lc3NhZ2UhPT0ic3RyaW5nInx8YS5tZXNzYWdlPT09Ik1heGltdW0gY2FsbCBzdGFjayBzaXplIGV4Y2VlZGVkIiYmZ29vZ2xlLnNuPT09IndlYmhwInx8YS5tZXNzYWdlPT09IlRoZSBzdXBlcmNsYXNzIGlzIG5vdCBhIGNvbnN0cnVjdG9yLiJ8fGEubWVzc2FnZS5zdGFydHNXaXRoKCJfMHgiKSYmYS5tZXNzYWdlLmVuZHNXaXRoKCIgaXMgbm90IGRlZmluZWQiKXx8YS5zdGFjayYmIWEuc3RhY2suaW5jbHVkZXMoIi9fL2pzL2s9eGpzLiIpJiZhLnN0YWNrLmluY2x1ZGVzKCIvXy9qcy9rPWJvcS1zZWFyY2guVmlld1BhY2thZ2VTZXJ2aWNlIil8fGEubWVzc2FnZT09PSJGYWlsZWQgdG8gZmV0Y2gifHxhLm1lc3NhZ2U9PT0KIk5ldHdvcmtFcnJvciB3aGVuIGF0dGVtcHRpbmcgdG8gZmV0Y2ggcmVzb3VyY2UuInx8RXJyb3IoIlBhIikubWVzc2FnZT09PWEubWVzc2FnZXx8IkFzeW5jIHJlcXVlc3QgZXJyb3IiPT09YS5tZXNzYWdlfHxFcnJvcigiUWEiKS5tZXNzYWdlPT09YS5tZXNzYWdlfHwiQXN5bmMgc2VydmVyIGVycm9yIj09PWEubWVzc2FnZXx8InJlcXVpcmUgaXMgbm90IGRlZmluZWQiPT09YS5tZXNzYWdlfHxhLm1lc3NhZ2Uuc3RhcnRzV2l0aCgiUmVxdWVzdCBGYWlsZWQsIHN0YXR1cz0iKXx8YS5tZXNzYWdlLnN0YXJ0c1dpdGgoIkpzbG9hZGVyIGVycm9yIChjb2RlICMiKXx8YS5tZXNzYWdlPT09IlNoYWthIEVycm9yIDMwMTYifHxhLm1lc3NhZ2U9PT0iTG9hZCBmYWlsZWQifHxhLm1lc3NhZ2Uuc3RhcnRzV2l0aCgiU2hhcmUgY2FuY2VsZWQiKXx8YS5tZXNzYWdlPT09IkFib3J0IGR1ZSB0byBjYW5jZWxsYXRpb24gb2Ygc2hhcmUuInx8YS5tZXNzYWdlPT09IlRoZSByZXF1ZXN0IGlzIG5vdCBhbGxvd2VkIGJ5IHRoZSB1c2VyIGFnZW50IG9yIHRoZSBwbGF0Zm9ybSBpbiB0aGUgY3VycmVudCBjb250ZXh0LCBwb3NzaWJseSBiZWNhdXNlIHRoZSB1c2VyIGRlbmllZCBwZXJtaXNzaW9uLiJ8fAphLm1lc3NhZ2UuaW5jbHVkZXMoIlRoZSBvcGVyYXRpb24gd2FzIGFib3J0ZWQuIil8fGEubWVzc2FnZT09PSJGYWlsZWQgdG8gZXhlY3V0ZSAnc3RhcnQnIG9uICdTcGVlY2hSZWNvZ25pdGlvbic6IHJlY29nbml0aW9uIGhhcyBhbHJlYWR5IHN0YXJ0ZWQuInx8YS5tZXNzYWdlPT09IkVycm9yIGxvYWRpbmcgc2NyaXB0Inx8YS5tZXNzYWdlPT09IlJlc2l6ZU9ic2VydmVyIGxvb3AgY29tcGxldGVkIHdpdGggdW5kZWxpdmVyZWQgbm90aWZpY2F0aW9ucy4ifHxhLm1lc3NhZ2Uuc3RhcnRzV2l0aCgiVGhlIHBsYXkoKSByZXF1ZXN0Iil8fGEubWVzc2FnZS5zdGFydHNXaXRoKCJUaGUgcGxheSByZXF1ZXN0Iil8fGEubWVzc2FnZT09PSJTa2lwcGluZyB2aWV3IHRyYW5zaXRpb24gYmVjYXVzZSBza2lwVHJhbnNpdGlvbigpIHdhcyBjYWxsZWQuInx8YS5tZXNzYWdlPT09RXJyb3IoIlJhIikubWVzc2FnZXx8YS5tZXNzYWdlLnN0YXJ0c1dpdGgoJ0NvdWxkIG5vdCBsb2FkICInKXx8YS5tZXNzYWdlLmVuZHNXaXRoKCJEZWZlcnJlZCB3YXMgY2FuY2VsZWQiKXx8CmEubWVzc2FnZS5lbmRzV2l0aCgiVHhaV2NjIil8fGEubWVzc2FnZS5lbmRzV2l0aCgiZmY4U1diIil8fGEubWVzc2FnZS5zdGFydHNXaXRoKCJGYWlsZWQgdG8gcmV0cmlldmUgZGVwZW5kZW5jaWVzIG9mIHNlcnZpY2UiKSYmYS5tZXNzYWdlLmVuZHNXaXRoKCJkIGlzIG5vdCBhIGZ1bmN0aW9uIil8fHR5cGVvZiBhLm1lc3NhZ2U9PT0ic3RyaW5nIiYmKGEubWVzc2FnZS5pbmNsdWRlcygiaW5pdCBpcyBub3QgZGVmaW5lZCIpfHxhLm1lc3NhZ2UuaW5jbHVkZXMoIkNhbid0IGZpbmQgdmFyaWFibGU6IGluaXQiKSl8fGEubWVzc2FnZT09PUVycm9yKCJTYSIpLm1lc3NhZ2V8fGEubWVzc2FnZS5pbmNsdWRlcygiVGhlIGltYWdlIHVybCBpcyBub3Qgc3VwcG9ydGVkIil8fGEubWVzc2FnZS5pbmNsdWRlcygiaW52YWxpZF91cmw6IERvd25sb2FkIHVybCBpcyBub3QgdmFsaWQiKXx8YS5tZXNzYWdlPT09IkNhbm5vdCByZWFkIHByb3BlcnRpZXMgb2YgbnVsbCAocmVhZGluZyAncHVzaElkJykifHwKYS5tZXNzYWdlPT09Im51bGwgaXMgbm90IGFuIG9iamVjdCAoZXZhbHVhdGluZyAnYi5wdXNoSWQnKSJ8fGEubWVzc2FnZT09PSJ1bmRlZmluZWQgaXMgbm90IGFuIG9iamVjdCAoZXZhbHVhdGluZyAnYS5wcm90b3R5cGUnKSJ8fGEubWVzc2FnZT09PSJ1bmRlZmluZWQgaXMgbm90IGFuIG9iamVjdCAoZXZhbHVhdGluZyAnYi5wcm90b3R5cGUnKSJ8fGEubWVzc2FnZT09PSJhIGlzIHVuZGVmaW5lZCJ8fGEubWVzc2FnZT09PSJiIGlzIHVuZGVmaW5lZCJ8fGEubWVzc2FnZT09PSJDYW5ub3QgcmVhZCBwcm9wZXJ0aWVzIG9mIHVuZGVmaW5lZCAocmVhZGluZyAncHJvdG90eXBlJykifHxhLm1lc3NhZ2U9PT0iQ2Fubm90IHJlYWQgcHJvcGVydGllcyBvZiBudWxsIChyZWFkaW5nICdjYWxsJykifHxhLm1lc3NhZ2U9PT0ibnVsbCBpcyBub3QgYW4gb2JqZWN0IChldmFsdWF0aW5nICdiLmNhbGxiYWNrLmNhbGwnKSJ8fGEubWVzc2FnZT09PSJUaGUgdXNlciBkZW5pZWQgcGVybWlzc2lvbiB0byBhY2Nlc3MgdGhlIGRhdGFiYXNlLiJ8fAphLm1lc3NhZ2U9PT0iRXJyb3IgaW4gaW5wdXQgc3RyZWFtInx8YS5tZXNzYWdlPT09IkludGVybmFsIGVycm9yLiJ8fGEubWVzc2FnZT09PSJuZXR3b3JrIGVycm9yInx8YS5tZXNzYWdlLmluY2x1ZGVzKCJGYWlsZWQgdG8gcmVhZCB0aGUiKSYmYS5tZXNzYWdlLmluY2x1ZGVzKCJzZXNzaW9uU3RvcmFnZSIpfHxhLm1lc3NhZ2UuaW5jbHVkZXMoIk5TX0VSUk9SX1hQQ19TRUNVUklUWV9NQU5BR0VSIil8fGEubWVzc2FnZT09PSJVUkkgbWFsZm9ybWVkInx8YS5tZXNzYWdlPT09IlR5cGVFcnJvcjogTG9hZCBmYWlsZWQifHxhLm1lc3NhZ2UuaW5jbHVkZXMoImdlbmVyYWxfZXJyb3I6IENhbm5vdCBhY2Nlc3MgcGx1Z2lucyIpfHxhLm1lc3NhZ2UuaW5jbHVkZXMoImBmZWVkYmFjay10aHVtYnMtY29udGFpbmVyYCIpfHxhLm1lc3NhZ2UuaW5jbHVkZXMoIlRoZSB1c2VyIGFib3J0ZWQgYSByZXF1ZXN0Iil8fGEubWVzc2FnZS5pbmNsdWRlcygiVHJhbnNpdGlvbiB3YXMgYWJvcnRlZCBiZWNhdXNlIG9mIGludmFsaWQgc3RhdGUiKXx8CmEubWVzc2FnZS5pbmNsdWRlcygiVHJhbnNpdGlvbiB3YXMgc2tpcHBlZCIpPyEwOiExfTtYbWE9ZnVuY3Rpb24oYSl7cmV0dXJuIGEmJihhIGluc3RhbmNlb2YgRXJyb3J8fGEuaGFzT3duUHJvcGVydHkoIm1lc3NhZ2UiKSl9O1JtYT1mdW5jdGlvbihhLGIpe2lmKGEubWVzc2FnZS5zdGFydHNXaXRoKCJGYWlsZWQgdG8gcmV0cmlldmUgZGVwZW5kZW5jaWVzIikmJmEubWVzc2FnZS5pbmNsdWRlcygiIC0+ICIpKXtsZXQgYz1hLm1lc3NhZ2UubGFzdEluZGV4T2YoImAiKTthLm1lc3NhZ2U9YS5tZXNzYWdlLnN1YnN0cmluZygwLGMpO2IuYWRkaXRpb25hbF9pbmZvPWEubWVzc2FnZS5zdWJzdHJpbmcoYysxKX19O18uWWU9ZnVuY3Rpb24oYSxiKXt0aGlzLkJhPVtdO3RoaXMubmI9YTt0aGlzLlBhPWJ8fG51bGw7dGhpcy53YT10aGlzLm9hPSExO3RoaXMuckU9dm9pZCAwO3RoaXMuTmE9dGhpcy5yYj10aGlzLkdhPSExO3RoaXMuRWE9MDt0aGlzLkpvPW51bGw7dGhpcy5BYT0wfTsKWW1hPWZ1bmN0aW9uKGEsYil7aWYoYSE9PXZvaWQgMCl7dmFyIGM9MDtYbWEoYSl8fChhPUVycm9yKCJUYWAiK2IrImAiK2EpLGM9Mik7Xy5WZShhLHtEZjp7dXI6Yn0sbGV2ZWw6YyxLbWE6ITB9KX19O18uYWY9ZnVuY3Rpb24oYSl7dmFyIGI9Wm1hLGM9Xy4kZShhKSxkPShbLC4uLmZdKT0+YihjLGYpLGU9KFtmLC4uLmddKT0+YS5hcHBseShmLGcpO3JldHVybiBmdW5jdGlvbiguLi5mKXt2YXIgZz10aGlzfHxfLmVhLGg9JG1hLmdldChnKTtofHwoaD17fSwkbWEuc2V0KGcsaCkpO3JldHVybiBhbmEoaCxbdGhpcywuLi5mXSxlLGQpfX07Xy5ibmE9ZnVuY3Rpb24oYSl7Xy5iZS5jYWxsKHRoaXMpO3RoaXMua2E9YXx8Xy5vZSgpO2lmKHRoaXMub2E9dGhpcy5hd2MoKSl0aGlzLndhPV8uaGUodGhpcy5rYS5nZXREb2N1bWVudCgpLHRoaXMub2EsKDAsXy5pZSkodGhpcy5reGMsdGhpcykpfTtfLmJmPWZ1bmN0aW9uKCl7Y25hfHwoY25hPW5ldyBfLmJuYSk7cmV0dXJuIGNuYX07Cl8uZG5hPWZ1bmN0aW9uKGEpe2RvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoYSl9O18uZW5hPWZ1bmN0aW9uKGEsYil7aWYoXy55ZCgpLmhyZWYubWF0Y2goL1smP11nc2M9MS8pKXtsZXQgYz1fLmVhLmdhcGksZD1jLmlmcmFtZXMuZ2V0Q29udGV4dCgpLmdldFBhcmVudElmcmFtZSgpO2lmKGQhPW51bGwpe2EubWF0Y2goIl4vW14vXSsiKSYmKGE9YCR7Xy5Ga2EoKX1gK2EpO2Quc2VuZCgibmF2aWdhdGUiLHtocmVmOmF9LHZvaWQgMCxjLmlmcmFtZXMuQ1JPU1NfT1JJR0lOX0lGUkFNRVNfRklMVEVSKTtyZXR1cm59fWI/Xy55ZCgpLnJlcGxhY2UoYSk6Xy55ZCgpLmhyZWY9YX07Cl8uY2Y9ZnVuY3Rpb24oYSxiKXt0cnl7KG5ldyBSZWdFeHAoIl4oIitfLkZrYSgpKyIpPy8odXJsfGFjbGspXFw/LiomcmN0PWooJnwkKSIpKS50ZXN0KGEpPyhmbmF8fChmbmE9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiaWZyYW1lIiksZm5hLnN0eWxlLmRpc3BsYXk9Im5vbmUiLF8uZG5hKGZuYSkpLGdvb2dsZS5yPTEsZm5hLnNyYz1hKTpfLmVuYShhLGIpfWNhdGNoKGMpe18uZW5hKGEsYil9fTtfLmhuYT1mdW5jdGlvbihhLGIsYyl7Xy5jZihfLmduYShhLGMpLGIpfTsKXy5kZj1mdW5jdGlvbigpe3ZhciBhPV8ueWQoKSxiPWEuaGFzaD9hLmhyZWY6IiI7aWYoYil7dmFyIGM9Yi5pbmRleE9mKCIjIik7Yj1iLnN1YnN0cihjKzEpfXZhciBkPWEuc2VhcmNoP2EuaHJlZi5zdWJzdHIoYS5ocmVmLmluZGV4T2YoIj8iKSsxKS5yZXBsYWNlKC8jLiovLCIiKToiIjtjPWImJmIubWF0Y2goLyhefCYpcT0vKTtiPShjP2I6ZCkucmVwbGFjZSgvKF58JikoZnB8dGNoKT1bXiZdKi9nLCIiKS5yZXBsYWNlKC9eJi8sIiIpO3JldHVybihjPyIvc2VhcmNoIjphLnBhdGhuYW1lKSsoYj9gPyR7Yn1gOiIiKX07Cl8uZ25hPWZ1bmN0aW9uKGEsYil7dmFyIGM9e307aWYoIWImJihiPV8uZGYoKS5tYXRjaCgvWz8mXVtcd1wuXC1+XSs9KFteJl0qKS9nKSkpZm9yKGxldCBlPTAsZjtmPWJbZSsrXTspe2xldCBnPWYubWF0Y2goLyhbXHdcLlwtfl0rPyk9KC4qKS8pO2NbZ1sxXV09Z1syXX1mb3IodmFyIGQgaW4gYSlhLmhhc093blByb3BlcnR5KGQpJiYoYj1hW2RdLGI9PW51bGw/ZGVsZXRlIGNbZF06Y1tkXT1iLnRvU3RyaW5nKCkucmVwbGFjZSgvWyYjXS9nLGVuY29kZVVSSUNvbXBvbmVudCkpO2E9Ii9zZWFyY2g/IjtkPSEwO2ZvcihsZXQgZSBpbiBjKWMuaGFzT3duUHJvcGVydHkoZSkmJihhPWEuY29uY2F0KChkPyIiOiImIikrZSsiPSIrY1tlXSksZD0hMSk7cmV0dXJuIGF9O18uam5hPWZ1bmN0aW9uKGEse3pjOmIsVG06Yyx1c2VyQWN0aW9uOmQsZGF0YTplLHBhdGg6Zn09e30pe18uaW5hKHt6YzpiLFRtOmMsdXNlckFjdGlvbjpkLHJpYTphLGRhdGE6ZSxwYXRoOmZ9KX07Cl8uaW5hPWZ1bmN0aW9uKHt6YzphLFRtOmIsdXNlckFjdGlvbjpjLHJpYTpkLGRhdGE6ZSxwYXRoOmZ9KXt2YXIgZz1hP2dvb2dsZS5nZXRFSShhKTpnb29nbGUua0VJLGg7aWYoaD1kKXtoPW5ldyBfLmVmO2ZvcihsZXQgaz0wLG07bT1kW2srK107KXtsZXQgbj1fLnllKG0uZWxlbWVudCk7Xy5rbmEoaCxtLnR5cGUsbixtLmVsZW1lbnQpO18ubG5hKG4sbS50eXBlKX1oLmthPWc7aD1fLmZmKGgpfWQ9aDtmPV8ubW5hKGcsZik7YSYmKGE9Xy55ZShhKSxmLkdjKCJ2ZWQiLGEpLF8ubG5hKGEpKTtiIT09dm9pZCAwJiZmLkdjKCJpY3R4IixTdHJpbmcoYikpO2MmJmYuR2MoInVhY3QiLFN0cmluZyhjKSk7ZCE9bnVsbCYmZi5HYygidmV0IixkKTtnb29nbGUua0JMJiZmLkdjKCJibCIsZ29vZ2xlLmtCTCk7Z29vZ2xlLnNuJiZmLkdjKCJzIixnb29nbGUuc24pO2lmKGUpZm9yKGxldCBrIGluIGUpZi5HYyhrLGVba10pO2YubG9nKCl9O18ubm5hPWZ1bmN0aW9uKCl7fTtfLmdmPWZ1bmN0aW9uKCl7fTsKXy5vbmE9ZnVuY3Rpb24oYSl7cmV0dXJue3ZhbHVlOmEsZG9uZTohMX19O18ucW5hPWZ1bmN0aW9uKGEpe2lmKGEgaW5zdGFuY2VvZiBfLmdmKXJldHVybiBhO2lmKHR5cGVvZiBhLllGPT0iZnVuY3Rpb24iKXJldHVybiBhLllGKCExKTtpZihfLkhhKGEpKXtsZXQgYj0wLGM9bmV3IF8uZ2Y7Yy5uZXh0PWZ1bmN0aW9uKCl7Zm9yKDs7KXtpZihiPj1hLmxlbmd0aClyZXR1cm4gXy5wbmE7aWYoYiBpbiBhKXJldHVybiBfLm9uYShhW2IrK10pO2IrK319O3JldHVybiBjfXRocm93IEVycm9yKCJXYSIpO307Xy5ybmE9ZnVuY3Rpb24oYSxiKXtpZihfLkhhKGEpKV8uTGEoYSxiLHZvaWQgMCk7ZWxzZSBmb3IoYT1fLnFuYShhKTs7KXtsZXQge2RvbmU6Yyx2YWx1ZTpkfT1hLm5leHQoKTtpZihjKWJyZWFrO2IuY2FsbCh2b2lkIDAsZCx2b2lkIDAsYSl9fTsKc25hPWZ1bmN0aW9uKGEsYil7dmFyIGM9Xy5xbmEoYSk7YT1uZXcgXy5nZjthLm5leHQ9ZnVuY3Rpb24oKXtmb3IoOzspe2xldCB7ZG9uZTpkLHZhbHVlOmV9PWMubmV4dCgpO2lmKGQpcmV0dXJuIF8ucG5hO2lmKGIuY2FsbCh2b2lkIDAsZSx2b2lkIDAsYykpcmV0dXJuIF8ub25hKGUpfX07cmV0dXJuIGF9O3RuYT1mdW5jdGlvbihhLGIpe3ZhciBjPV8ucW5hKGEpO2E9bmV3IF8uZ2Y7YS5uZXh0PWZ1bmN0aW9uKCl7dmFyIHtkb25lOmQsdmFsdWU6ZX09Yy5uZXh0KCk7aWYoZClyZXR1cm4gXy5wbmE7dmFyIGY9Yi5jYWxsKHZvaWQgMCxlLHZvaWQgMCxjKTtyZXR1cm4gXy5vbmEoZil9O3JldHVybiBhfTt2bmE9ZnVuY3Rpb24oYSl7cmV0dXJuIHVuYShhcmd1bWVudHMpfTsKdW5hPWZ1bmN0aW9uKGEpe3ZhciBiPV8ucW5hKGEpO2E9bmV3IF8uZ2Y7dmFyIGM9bnVsbDthLm5leHQ9ZnVuY3Rpb24oKXtmb3IoOzspe2lmKGM9PW51bGwpe3ZhciBkPWIubmV4dCgpO2lmKGQuZG9uZSlyZXR1cm4gXy5wbmE7Yz1fLnFuYShkLnZhbHVlKX1kPWMubmV4dCgpO2lmKGQuZG9uZSljPW51bGw7ZWxzZSByZXR1cm4gXy5vbmEoZC52YWx1ZSl9fTtyZXR1cm4gYX07d25hPWZ1bmN0aW9uKGEpe2lmKF8uSGEoYSkpcmV0dXJuIF8uR2EoYSk7YT1fLnFuYShhKTt2YXIgYj1bXTtfLnJuYShhLGZ1bmN0aW9uKGMpe2IucHVzaChjKX0pO3JldHVybiBifTt4bmE9ZnVuY3Rpb24oYSl7dGhpcy5rYT1hO3RoaXMub2E9bnVsbH07Xy5oZj1mdW5jdGlvbigpe3ZhciBhPW51bGw7dHJ5e2E9Xy5lYS5sb2NhbFN0b3JhZ2V8fG51bGx9Y2F0Y2goYil7fXhuYS5jYWxsKHRoaXMsYSl9OwpfLnluYT1mdW5jdGlvbigpe3ZhciBhPW51bGw7dHJ5e2E9Xy5lYS5zZXNzaW9uU3RvcmFnZXx8bnVsbH1jYXRjaChiKXt9eG5hLmNhbGwodGhpcyxhKX07Xy56bmE9ZnVuY3Rpb24oYSxiKXt0aGlzLm9hPWE7dGhpcy5rYT1iKyI6OiJ9O18uQW5hPWZ1bmN0aW9uKGEpe3RoaXMuaU49YX07Xy5DbmE9ZnVuY3Rpb24oYSxiLGMsZCl7c3dpdGNoKGEpe2Nhc2UgIlN0b3JhZ2UgbWVjaGFuaXNtOiBTdG9yYWdlIGRpc2FibGVkIjpyZXR1cm47Y2FzZSBCbmE6cmV0dXJuO2Nhc2UgIlN0b3JhZ2UgbWVjaGFuaXNtOiBRdW90YSBleGNlZWRlZCI6cmV0dXJufWE9dHlwZW9mIGE9PT0ic3RyaW5nIj9FcnJvcihhKTphO2M9e29wOmIsazpjfTtiPT09InNldCImJihjLnY9ZCk7Z29vZ2xlLm1sKGEsITEsYyl9O0RuYT1mdW5jdGlvbihhKXt0aGlzLmthPWF8fHtjb29raWU6IiJ9fTsKXy5FbmE9ZnVuY3Rpb24oKXt0cnl7aWYoIV8uamYuaXNFbmFibGVkKCkpcmV0dXJuITE7aWYoIV8uamYuaXNFbXB0eSgpKXJldHVybiEwO18uamYuc2V0KCJURVNUQ09PS0lFU0VOQUJMRUQiLCIxIix7bWF4QWdlOjYwfSk7aWYoXy5qZi5nZXQoIlRFU1RDT09LSUVTRU5BQkxFRCIpIT0iMSIpcmV0dXJuITE7Xy5qZi5yZW1vdmUoIlRFU1RDT09LSUVTRU5BQkxFRCIpO3JldHVybiEwfWNhdGNoKGEpe3JldHVybiExfX07R25hPWZ1bmN0aW9uKGEsYixjKXtGbmEoYSxiLGMpfTsKSm5hPWZ1bmN0aW9uKGEsYil7dmFyIGM9SG5hKGEpLGQ9Zj0+e2Muc2V0KCJpIixuZXcgSW5hKHtwcmlvcml0eToiKiIsbGFzdEFjY2Vzc2VkOk51bWJlci5NQVhfU0FGRV9JTlRFR0VSfSxmKSl9LGU9KCk9Pnt2YXIgZj1jLmdldCgiaSIpO2Y9PT1udWxsJiZkKDApO3ZhciBnPTA7ZiE9bnVsbCYmKGc9Zi5nZXRWYWx1ZSgpKTtyZXR1cm4gZ307cmV0dXJuKCk9PntGbmE9Yjt2YXIgZj1lKCk7ZChmKzEpO0ZuYT1mdW5jdGlvbigpe307cmV0dXJuIGZ9fTtIbmE9ZnVuY3Rpb24oYSl7YSBpbiBLbmF8fChLbmFbYV09TG5hKCJfYyIsYSxHbmEsITEpKTtyZXR1cm4gS25hW2FdfTtMbmE9ZnVuY3Rpb24oYSxiLGMsZCl7Xy5rZihiKXx8KGI9Im4iKTtpZihiPT0ibiIpYj1uZXcgTW5hO2Vsc2V7aWYoYiBpbiBObmEpYj1ObmFbYl07ZWxzZXt2YXIgZT1uZXcgT25hKFBuYShiKSk7Yj1ObmFbYl09ZX1iPW5ldyBRbmEoYyxiKTtiPW5ldyBSbmEoYSxiKTtkfHwoYj1uZXcgTW5hKGIpKX1yZXR1cm4gYn07Cl8uU25hPWZ1bmN0aW9uKCl7Z29vZ2xlLmMudSgieGUiKX07Vm5hPWZ1bmN0aW9uKGEpe18uVG5hPV8ubGYoKTtfLlVuYT9fLlVuYS5wcm9taXNlLnRoZW4oKCk9PnthKCk7Xy5UbmEucmVzb2x2ZSgpfSk6KDAsXy5tZikoKCk9PnthKCk7Xy5UbmEucmVzb2x2ZSgpfSl9O1huYT1mdW5jdGlvbihhKXthPWEuSGtiLmNoYXJDb2RlQXQoYS5JcCsrKTtyZXR1cm4gV25hW2FdfTtZbmE9ZnVuY3Rpb24oYSl7dmFyIGI9MCxjPTA7ZG97dmFyIGQ9WG5hKGEpO2J8PShkJjMxKTw8YztjKz01fXdoaWxlKGQmMzIpO3JldHVybiBiPDA/Yis0Mjk0OTY3Mjk2OmJ9O1puYT1mdW5jdGlvbihhLGIpe3RoaXMua2E9YTt0aGlzLm9hPWJ9O2FvYT1mdW5jdGlvbihhLGIpe18uRWQuY2FsbCh0aGlzKTt0aGlzLkFhPWE7dGhpcy5FYT1iO3RoaXMud2E9JG5hP251bGw6W107dGhpcy5rYT0kbmE/bnVsbDpbXTt0aGlzLm9hPSRuYT9udWxsOltdO3RoaXMuQmE9ITF9Owpib2E9ZnVuY3Rpb24oKXt0aGlzLkZiPXRoaXMua2E9bnVsbH07Xy5lb2E9ZnVuY3Rpb24oYSl7Y29hP18uaGMoKS5ua2EoYSk6ZG9hLnB1c2goYSl9O2ZvYT1mdW5jdGlvbigpe2NvYT0hMDtmb3IobGV0IGEgb2YgZG9hKV8uZW9hKGEpO2RvYT1bXX07Xy5nb2E9ZnVuY3Rpb24oYSxiKXtfLm5mKGEpO2xqYS5oYXMoYS50b1N0cmluZygpKTtiJiZsamEuaGFzKGIudG9TdHJpbmcoKSl9O18uaG9hPWZ1bmN0aW9uKGEpe3JldHVybmAkJFhJRDoke2F9JCRgfTsKXy5xZj1mdW5jdGlvbihhKXtpZihhKXtpZih0eXBlb2YgYS5aSD09PSJmdW5jdGlvbiImJnR5cGVvZiBhLklyPT09InN0cmluZyIpcmV0dXJuIGEuSXI7aWYoYSBpbnN0YW5jZW9mIF8uaWMpcmV0dXJuIF8uaG9hKGEudG9TdHJpbmcoKSk7aWYodHlwZW9mIGE9PT0iZnVuY3Rpb24iKXt2YXIgYj1fLnprYShhKTtyZXR1cm4gYj9fLnFmKGIpOmBVbnJlZ2lzdGVyZWQgb2JqZWN0OiAke2EubmFtZT9hLm5hbWU6YDxhbm9ueW1vdXMgKHNhbXBsZSBtZXRob2RzOiAke2lvYShhKX0pPmB9YH1yZXR1cm4gYS5jb25zdHJ1Y3RvciYmYS5jb25zdHJ1Y3RvciE9PU9iamVjdD9fLnFmKGEuY29uc3RydWN0b3IpOmEuSXI/U3RyaW5nKGEuSXIpOigoYj1hLmV6KT09bnVsbD8wOmIudG9rZW4pP1N0cmluZyhhLmV6LnRva2VuKTpTdHJpbmcoYSl9cmV0dXJuIFN0cmluZyhhKX07CmlvYT1mdW5jdGlvbihhKXtyZXR1cm4gT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMoYS5wcm90b3R5cGUpLmZpbHRlcihiPT5iIT09ImNvbnN0cnVjdG9yIikuc2xpY2UoMCw1KS5qb2luKCIsICIpfTtfLnVmPWZ1bmN0aW9uKGEpe3ZhciBiPV8ucmY7Xy5yZj1hO3JldHVybiBifTtfLnZmPWZ1bmN0aW9uKGEpe3JldHVybiBhPT09Xy5qb2F8fChhPT1udWxsP3ZvaWQgMDphLm5hbWUpPT09Ilx1MDI3NU5vdEZvdW5kIn07CmtvYT1mdW5jdGlvbihhKXt2YXIgYj17fSxjPXt9LGQ9W10sZT1bXSxmPWs9PntpZighY1trXSl7dmFyIG09ayBpbnN0YW5jZW9mIF8uaWM/ay5lRigpOltdO2Nba109Wy4uLm1dO20uZm9yRWFjaChuPT57YltuXT1iW25dfHxbXTtiW25dLnB1c2goayl9KTttLmxlbmd0aHx8ZC5wdXNoKGspO20uZm9yRWFjaChmKX19O2ZvcihhLmZvckVhY2goZik7ZC5sZW5ndGg7KXtsZXQgaz1kLnNoaWZ0KCk7ZS5wdXNoKGspO2Jba10mJmJba10uZm9yRWFjaChtPT57Xy5EYShjW21dLGspO2NbbV0ubGVuZ3RofHxkLnB1c2gobSl9KX12YXIgZz17fSxoPVtdO2UuZm9yRWFjaChrPT57ayBpbnN0YW5jZW9mIF8uaWMmJihrPWsua2Esaz09bnVsbHx8Z1trXXx8KGdba109ITAsaC5wdXNoKGspKSl9KTtyZXR1cm57c2VydmljZXM6ZSx1QjpofX07Xy5sb2E9ZnVuY3Rpb24oYSl7cmV0dXJuKGE9PW51bGw/dm9pZCAwOmEubmFtZSk9PT0iQ2FuY2VsZWRFcnJvciJ9Owptb2E9ZnVuY3Rpb24oYSl7YT1FcnJvcihhKTthLm5hbWU9IkNhbmNlbGVkRXJyb3IiO3JldHVybiBhfTtub2E9ZnVuY3Rpb24oYSl7cmV0dXJuIG5ldyBfLndmKChiLGMpPT57Xy55ZihhLGIsYyl9KX07Xy56Zj1mdW5jdGlvbihhLGI9ITEpe3ZhciBjPW5ldyBfLlllO2EuSXgoZD0+e2MuY2FsbGJhY2soZCl9LGQ9PntiJiZfLmxvYShkKT9jLmNhbmNlbCgpOmMua2EoZCl9KTtyZXR1cm4gY307Xy5vb2E9ZnVuY3Rpb24oYSl7YS50aGVuKHZvaWQgMCwoKT0+e30pO3JldHVybiBhfTtfLkFmPWZ1bmN0aW9uKGEsYil7dmFyIGM7aWYoKGM9YSk9PW51bGw/MDpjLmlzRGlzcG9zZWQpdGhyb3cgRXJyb3IoInRiYCIrU3RyaW5nKGEuSXIpKTtmb3IoO2EhPT12b2lkIDA7KXtjPWE7aWYoYy5mTGEpcmV0dXJuIGMuZkxhKGIse29wdGlvbmFsOiEwfSk7YT1hLnBhcmVudH1yZXR1cm4gXy5qb2F9O18ucG9hPWZ1bmN0aW9uKGEsYixjKXtyZXR1cm57dDRiOmEsdG9rZW46YyxhU2I6Yix2YWx1ZTp2b2lkIDB9fTsKXy5xb2E9ZnVuY3Rpb24oYSl7cmV0dXJue2Rlc2NyaXB0aW9uOmEsZXo6Xy5wb2EoInJvb3QiLHZvaWQgMCxTeW1ib2woYSkpfX07cm9hPWZ1bmN0aW9uKGEpe3ZhciBiLGMsZDtyZXR1cm4gU3RyaW5nKChkPShjPShiPWE9PW51bGw/dm9pZCAwOmEuZGlzcGxheU5hbWUpIT1udWxsP2I6YT09bnVsbD92b2lkIDA6YS5uYW1lKSE9bnVsbD9jOmE9PW51bGw/dm9pZCAwOmEuSXIpIT1udWxsP2Q6YSl9O3NvYT1mdW5jdGlvbihhKXtpZighYS5leil0aHJvdyBFcnJvcigiR2JgIityb2EoYSkpO307Xy50b2E9ZnVuY3Rpb24oYSl7cmV0dXJuIGFbXy5CZl0hPT12b2lkIDB9O18uQ2Y9ZnVuY3Rpb24oYT0zKXt2YXIgYj1fLnJmO2lmKCFiKXtzd2l0Y2goYSl7Y2FzZSAwOmE9RXJyb3IoInNiIik7YnJlYWs7Y2FzZSAxOmE9RXJyb3IoInZiIik7YnJlYWs7Y2FzZSAyOmE9RXJyb3IoIndiIik7YnJlYWs7ZGVmYXVsdDphPUVycm9yKCJ4YiIpfXRocm93IGE7fXJldHVybiBifTtfLnVvYT1mdW5jdGlvbihhKXtyZXR1cm4gXy51ZihhKX07Cl8ud29hPWZ1bmN0aW9uKCl7dmFyIGE9Xy5DZigxKTthPV8uQWYoYSx2b2EpO2lmKF8udmYoYSkpdGhyb3cgRXJyb3IoIkliIik7cmV0dXJuIGF9O18uem9hPWZ1bmN0aW9uKCl7dmFyIGE9Xy5DZigxKTthPV8uQWYoYSxfLnhvYSk7aWYoIShfLnZmKGEpfHxhW18ueW9hXSYmIWEuYUtiKSlyZXR1cm4gYS52YWx1ZX07Xy5Bb2E9ZnVuY3Rpb24oKXt2YXIgYT1fLnpvYSgpO2lmKCFhKXRocm93IEVycm9yKCJMYiIpO3JldHVybiBhfTtfLkJvYT1mdW5jdGlvbihhLGIpe2IuZXliPXZvaWQgMDthLk9lYj9hLk9lYi5leWI9YjphLm1sYj1iO2EuT2ViPWJ9O18uQ29hPWZ1bmN0aW9uKGEpe3ZhciBiPV8ucmY7YiYmIWIuaXNEaXNwb3NlZCYmKF8uQm9hKGIsYSksYS5wYXJlbnQ9Yil9O18uRW9hPWZ1bmN0aW9uKGEpe2Zvcih2YXIgYj1hLm1sYjtiOyl7bGV0IGM9Yi5leWI7Xy5Eb2EoYik7Yj1jfWEubWxiPXZvaWQgMDthLk9lYj12b2lkIDB9OwpfLkRvYT1mdW5jdGlvbihhKXtpZighYS5pc0Rpc3Bvc2VkKXthLmlzRGlzcG9zZWQ9ITA7dmFyIGI7KGI9YVtTeW1ib2wuZGlzcG9zZV0pPT1udWxsfHxiLmNhbGwoYSk7YS5wYXJlbnQ9dm9pZCAwO18uRW9hKGEpfX07Xy5Nb2E9ZnVuY3Rpb24oYSxiPSEwKXt2YXIgYz17c3RhdGU6Ik5PTkUifSxkPXtmTGE6ZT0+e3N3aXRjaChlLmV6LnRva2VuKXtjYXNlIEZvYS5lei50b2tlbjp2YXIgZj1jO2JyZWFrO2Nhc2UgR29hLmV6LnRva2VuOmY9YS5ueGQ7YnJlYWs7Y2FzZSBfLnhvYS5lei50b2tlbjpmPWEucm9vdEVsZW1lbnQ7YnJlYWs7Y2FzZSBIb2EuZXoudG9rZW46Zj1hLkFGYzticmVhaztjYXNlIElvYS5lei50b2tlbjpmPWEucmM7YnJlYWs7Y2FzZSBfLkpvYS5lei50b2tlbjpmPWEuZzViO2JyZWFrO2Nhc2UgXy5Lb2EuZXoudG9rZW46Zj1hLm05YTticmVhaztjYXNlIHZvYS5lei50b2tlbjpmPWEucUt9cmV0dXJuIGY/ZjpfLkxvYShkLGUpfX07YiYmXy5Db2EoZCk7cmV0dXJuIGR9OwpfLkxvYT1mdW5jdGlvbihhLGIpe2ZvcihhPWEucGFyZW50O2E7KXt2YXIgYz1hO2lmKGMuZkxhKXJldHVybiBjLmZMYShiKTthPWEucGFyZW50fWE9Yi5lei50b2tlbjtjPU5vYS5nZXQoYSk7YyE9PXZvaWQgMD9iPWM6KGM9Yi5lei50NGIsYi5lei5hU2I/KGI9Yi5lei5hU2IoKSxhJiZjPT09InJvb3QiJiZOb2Euc2V0KGEsYikpOmI9Xy5qb2EpO3JldHVybiBifTtfLk9vYT1mdW5jdGlvbigpe3ZhciBhPV8uQ2YoMSk7YT1fLkFmKGEsSG9hKTtpZighXy52ZihhKSlyZXR1cm4gYX07Xy5EZj1mdW5jdGlvbigpe3ZhciBhPV8uQ2YoMSk7cmV0dXJuIG5ldyBfLlBvYShhKX07Xy5GZj1mdW5jdGlvbihhLGIpe2E9YS5nZXRDb250ZXh0KDApO2E9Xy51ZihhKTt0cnl7dmFyIGM9YigpfWZpbmFsbHl7Xy51ZihhKX1yZXR1cm4gY307Cl8uSGY9ZnVuY3Rpb24oYSxiKXtRb2EoYSk7aWYoYVtfLkJmXSE9PXZvaWQgMCl0aHJvdyBFcnJvcigiSGJgIityb2EoYSkpO3NvYShhKTt2YXIgYz1fLkFmKF8ucmYsYSk7cmV0dXJuIFJvYShjLF8ucWYoYSksYj09bnVsbD92b2lkIDA6Yi5vcHRpb25hbCl9O18uTGY9ZnVuY3Rpb24oYSxiKXtRb2EoYSk7dmFyIGM9Xy5EZigpO2lmKGFbXy5CZl0pe2xldCBlPW51bGw7cmV0dXJuKCk9PmU/ZTplPV8uRmYoYywoKT0+Xy5LZihhLGIpKX12YXIgZD1udWxsO3JldHVybigpPT5kP2Q6ZD1fLkZmKGMsKCk9Pl8uSGYoYSxiKSl9OwpfLktmPWFzeW5jIGZ1bmN0aW9uKGEsYil7dmFyIGM9KDAsXy5NZikoKSxkPWMoKTtjPWMoMSk7dHJ5e1FvYShhKTthW18uQmZdfHxzb2EoYSk7aWYoYS5leiYmIWFbXy5CZl0pcmV0dXJuIFByb21pc2UucmVzb2x2ZShfLkhmKGEsYikpO2xldCBlPW5ldyBQcm9taXNlKChnLGgpPT57YVtfLkJmXShnLGs9PntfLnZmKGspP2coayk6aChrKX0pfSksZj1jKGF3YWl0IGQoZSkpO3JldHVybiBSb2EoZixfLnFmKGEpLGI9PW51bGw/dm9pZCAwOmIub3B0aW9uYWwpfWZpbmFsbHl7ZCgpfX07Xy5Tb2E9ZnVuY3Rpb24oYSl7dHJ5e1FvYShhKSxhW18uQmZdfHxzb2EoYSl9Y2F0Y2goYil7cmV0dXJuIE5mKGIpfXJldHVybiBhLmV6JiYhYVtfLkJmXT9uZXcgXy53ZihiPT57YihfLkhmKGEpKX0pOihuZXcgXy53ZigoYixjKT0+e2FbXy5CZl0oYixkPT57Xy52ZihkKT9iKGQpOmMoZCl9KX0pKS5tYXAoYj0+Um9hKGIsXy5xZihhKSkpfTsKXy5RZj1mdW5jdGlvbihhKXtyZXR1cm57SXI6YS50b1N0cmluZygpLFtfLkJmXTooYixjKT0+e3ZhciBkPV8uRGYoKTtfLlRvYShfLk9mLmdldEluc3RhbmNlKCksYSkuZmxhdE1hcChlPT57aWYoZC5pc0Rpc3Bvc2VkKCkpdGhyb3cgbmV3IF8uVW9hKGBMYXp5IGluamVjdGlvbiBieSBJRCBvZiAke2F9IGNhbmNlbGxlZCBzaW5jZSB0aGUgc291cmNlIGNvbnRleHQgJHtkLmNvbnRleHQuSXJ9IHdhcyBkaXNwb3NlZCB3aGlsZSBkb3dubG9hZGluZyB0aGUgaW5qZWN0ZWQgb2JqZWN0LiBUaGlzIHVzdWFsbHkgaGFwcGVucyB3aGVuIHNvbWUgYXN5bmMgbG9naWMgbGVha3MgYWZ0ZXIgYSBXaXogb2JqZWN0IGlzIGRpc3Bvc2VkLmApO3JldHVybiBfLkZmKGQsKCk9Pl8uU29hKGUpKX0pLkl4KGIsYyl9fX07UW9hPWZ1bmN0aW9uKGEpe2lmKCFfLnJmKXRocm93IEVycm9yKCJOYmAiK18ucWYoYSkpO307ClJvYT1mdW5jdGlvbihhLGIsYyl7aWYoXy52ZihhKSl7aWYoYylyZXR1cm4gbnVsbDtpZihhPT09Xy5qb2EpdGhyb3cgRXJyb3IoIk9iYCIrYik7dGhyb3cgYTt9cmV0dXJuIGF9O18uVm9hPWZ1bmN0aW9uKCl7dmFyIGE9Xy5DZigxKSxiPV8uQWYoYSxJb2EpO2lmKCFfLnZmKGIpKXJldHVybiBiO2E9Xy5BZihhLHZvYSk7aWYoIV8udmYoYSkpcmV0dXJuIGEubFcoKX07Xy5SZj1mdW5jdGlvbihhLGIpe3ZhciBjPVdvYVthXTtjfHwoYz1Xb2FbYV09W10pO2MucHVzaChiKX07WG9hPWZ1bmN0aW9uKGEsYil7aWYoYT1Xb2FbYV0pZm9yKGxldCBjPTA7YzxhLmxlbmd0aDtjKyspYVtjXShiKX07Xy5ab2E9ZnVuY3Rpb24oYSxiKXtiPWIub2xhKCk7dmFyIGM9Xy51ZihiKTt0cnl7bGV0IGQ9Xy56a2EoYSksZT1uZXcgYTtlW1lvYV09YjtkJiZYb2EoZCxlKTtyZXR1cm4gZX1maW5hbGx5e18udWYoYyl9fTsKXy5hcGE9ZnVuY3Rpb24oYSxiLGMpe2lmKCEkb2EpdGhyb3cgRXJyb3IoIlNiIik7cmV0dXJuICRvYShhLGIsYyl9O18uYnBhPWZ1bmN0aW9uKGEpe2lmKGEgaW5zdGFuY2VvZiBfLlRmKXJldHVybiBhLlpIKCk7aWYoYSBpbnN0YW5jZW9mIF8uaWN8fChhPV8uT2YuZ2V0SW5zdGFuY2UoKS5aSChhKSkpcmV0dXJuIGF9O2RwYT1mdW5jdGlvbihhKXtyZXR1cm4oYT1fLmJwYShhKSk/Y3BhKHdkLmdldEluc3RhbmNlKCksYSk6dm9pZCAwfTsKaXBhPWZ1bmN0aW9uKGEsYil7dmFyIGM9ZHBhKGEpO2lmKCh0eXBlb2YgYSE9PSJmdW5jdGlvbiJ8fF8udG9hKGEpKSYmIWMpcmV0dXJuIE5mKCJTZXJ2aWNlIGtleSBtdXN0IGJlIGEgU2VydmljZUlkLCBJbmplY3Rpb25LZXksIG9yIFNlcnZpY2UgY29uc3RydWN0b3IgdGhhdCBpcyByZWdpc3RlcmVkLiIpO3ZhciBkLGU9KGQ9Yz09bnVsbD92b2lkIDA6Yy50b1N0cmluZygpKSE9bnVsbD9kOmE7aWYoYT1lcGEoZSkpcmV0dXJuIGE7dmFyIGYsZzthPW5ldyBfLndmKChoLGspPT57Zj1oO2c9a30pOyFfLmZwYS5oYXMoZSkmJmdwYShlLGEpOyh0eXBlb2YgZT09PSJzdHJpbmciP18uVG9hKF8uT2YuZ2V0SW5zdGFuY2UoKSxjKTpfLlVmKGUpKS5mbGF0TWFwKGg9Pl8udG9hKGgpP18uYXBhKGMsaCxuZXcgXy5ocGEoYixoKSk6Xy5VZihfLlpvYShoLG5ldyBfLmhwYShiLGgpKSkpLkl4KGYsZyk7cmV0dXJuIGF9OwpfLlZmPWZ1bmN0aW9uKGEsYj0hMSl7Zm9yKGxldCBjIG9mIE9iamVjdC5rZXlzKGEpKV8uanBhW2NdPWFbY10sYiYmKGtwYVtjXT0hMCl9O2xwYT1mdW5jdGlvbihhLGIsYyxkLGUsZil7Xy5ZZS5jYWxsKHRoaXMsZSxmKTt0aGlzLklhPWE7dGhpcy5LYT1bXTt0aGlzLlJhPSEhYjt0aGlzLkZiPSEhYzt0aGlzLkFiPSEhZDt0aGlzLlphPTA7Zm9yKGI9MDtiPGEubGVuZ3RoO2IrKylfLnlmKGFbYl0sKDAsXy5pZSkodGhpcy5TYSx0aGlzLGIsITApLCgwLF8uaWUpKHRoaXMuU2EsdGhpcyxiLCExKSk7YS5sZW5ndGghPTB8fHRoaXMuUmF8fHRoaXMuY2FsbGJhY2sodGhpcy5LYSl9O25wYT1mdW5jdGlvbihhLGIpe3RyeXtyZXR1cm4gbXBhKGEsYil9Y2F0Y2goYyl7cmV0dXJuIE5mKGMpfX07Cm1wYT1mdW5jdGlvbihhLGIpe3ZhciBjPU9iamVjdC5rZXlzKGIpO2lmKCFjLmxlbmd0aClyZXR1cm4gXy5VZih7fSk7dmFyIGQ9e30sZT1bXTtmb3IobGV0IGYgb2YgYyljPW9wYShhLGJbZl0sZikubWFwKGc9PntkW2ZdPWd9KSxlLnB1c2goYyk7cmV0dXJuIF8uV2YoZSkubWFwKCgpPT5kKX07b3BhPWZ1bmN0aW9uKGEsYixjKXt2YXIgZD1fLnVvYShhLm9sYSgpKTt0cnl7bGV0IGU9e30sZj1bXTtpZighKGMgaW4gXy5qcGEpKXRocm93IEVycm9yKCJXYmAiK2MrImAiK2EpO2ZvcihsZXQgayBvZiBPYmplY3Qua2V5cyhiKSk7bGV0IGc9Xy5qcGFbY107a3BhW2NdfHwoZz1wcGEoZykpO2xldCBoPWcoYSxiKTtmb3IobGV0IGsgb2YgT2JqZWN0LmtleXMoaCkpe2xldCBtPXFwYShoW2tdLGUsYyxrLGEpO2YucHVzaChtKTtfLnJwYSYmXy5zcGEoYSxoW2tdLGspfXJldHVybiBfLldmKGYpLm1hcCgoKT0+ZSl9ZmluYWxseXtfLnVmKGQpfX07CnBwYT1mdW5jdGlvbihhKXtyZXR1cm4oYixjKT0+e3ZhciBkPXt9O2ZvcihsZXQgZSBvZiBPYmplY3Qua2V5cyhjKSlkW2VdPWEoYixjW2VdLGMsZSk7cmV0dXJuIGR9fTtxcGE9ZnVuY3Rpb24oYSxiLGMsZCxlKXtpZighYSl0aHJvdyBFcnJvcigiWGJgIitjKyJgIitkKyJgIitlKTtyZXR1cm4obmV3IF8ud2YoKGYsZyk9PnthIGluc3RhbmNlb2YgXy53Zj9hLkl4KGYsZyk6YS50aGVuKGYsZyl9KSkubWFwKGY9PntiW2RdPWZ9KX07Xy5aZj1mdW5jdGlvbihhLGIpe3JldHVybiBfLlhmKG5wYShhLGIpKX07dHBhPWZ1bmN0aW9uKGEpe3JldHVybiBhLmhhc093blByb3BlcnR5KCJRYSIpP2EuUWE6KCk9Pih7fSl9Owp1cGE9ZnVuY3Rpb24oYSxiLGMpe3ZhciBkPU9iamVjdC5nZXRQcm90b3R5cGVPZihhKTtkPWQ/T2JqZWN0LmdldFByb3RvdHlwZU9mKGQpOnZvaWQgMDtpZighYXx8ZD09PV8uRWR8fGQ9PT12b2lkIDApcmV0dXJuIF8uVWYoKTtkPXRwYShhKS5jYWxsKGEsYyk7dmFyIGU9bnBhKGIsZCE9bnVsbD9kOnt9KTtkPU9iamVjdC5nZXRQcm90b3R5cGVPZihhKTtyZXR1cm4gdXBhKGQsYixjKS5mbGF0TWFwKGY9PmUubWFwKGc9PntnLkdiPWY7cmV0dXJuIGd9KSkubWFwKGY9PmYsZj0+e2E6e3ZhciBnPV8ucWYoYSk7bGV0IGg7aWYoZj09bnVsbCloPUVycm9yKCJaYmAiK2crImAiK2Yse2NhdXNlOmZ9KTtlbHNlIGlmKHR5cGVvZiBmPT09InN0cmluZyIpaD1FcnJvcigiJGJgIitnKyJgIitmLHtjYXVzZTpmfSk7ZWxzZSBpZihmLm1lc3NhZ2Upe2g9ZjtnPWBGYWlsZWQgdG8gcmV0cmlldmUgZGVwZW5kZW5jaWVzIG9mIHNlcnZpY2UgJHtnfTogJHtoLm1lc3NhZ2V9YDt0cnl7aC5tZXNzYWdlPQpnfWNhdGNoKGspe2Y9RXJyb3IoImFjYCIrZysiYCIrayx7Y2F1c2U6Zn0pO2JyZWFrIGF9fWVsc2UgdHJ5e2g9RXJyb3IoIiRiYCIrZysiYCIrSlNPTi5zdHJpbmdpZnkoZikse2NhdXNlOmZ9KX1jYXRjaChrKXtoPUVycm9yKCIkYmAiK2crImAiK2Yse2NhdXNlOmZ9KX1mPWh9cmV0dXJuIGZ9KX07dnBhPWZ1bmN0aW9uKGEsYil7cmV0dXJuIE5mKG1vYShgJHtfLnFmKGEpfSBjYW5jZWxlZDogdGhlIHNvdXJjZSBpcyBub3QgdmFsaWQuICR7Yn1gKSl9O3hwYT1mdW5jdGlvbihhLGIsYyxkKXt2YXIge2lzVmFsaWQ6ZSxpbnZhbGlkUmVhc29uOmZ9PXdwYT9jLlI1KCk6e2lzVmFsaWQ6ITB9O2lmKCFlKXJldHVybiB2cGEoYixmKTthPV8udWYoYSk7dHJ5e3JldHVybiBkKCl9ZmluYWxseXtfLnVmKGEpfX07Xy4kZj1mdW5jdGlvbihhLGIpe3JldHVybiBfLnpmKHlwYShhLGIpKX07CnlwYT1mdW5jdGlvbihhLGIpe3JldHVybiB6cGEoKCk9Pl8uU29hKGEgaW5zdGFuY2VvZiBfLmljP18uUWYoYSk6YSksYil9O3pwYT1mdW5jdGlvbihhLGIpe2I9Xy5Nb2Eoe3JjOmIhPW51bGw/Yjp2b2lkIDB9LCExKTtiPV8udWYoYik7dHJ5e3JldHVybiBhKCl9ZmluYWxseXtfLnVmKGIpfX07QXBhPWZ1bmN0aW9uKGEsYil7YSYmXy5PZi5nZXRJbnN0YW5jZSgpLnJlZ2lzdGVyKGEsYil9O18uYWc9ZnVuY3Rpb24oYSxiKXtBcGEoYSxiKTtiW18uQmZdPShjLGQpPT57aXBhKGIsXy5Wb2EoKSkuSXgoYyxkKX07Yi5Jcj0iQ29uc3RydWN0b3I6ICIrU3RyaW5nKGEpfTsKXy5iZz1mdW5jdGlvbihhLGIpe2ImJl8uT2YuZ2V0SW5zdGFuY2UoKS5yZWdpc3RlcihiLGEpO2EuZXo9Xy5wb2EoInJvb3QiLCgpPT57dmFyIGM9Xy5Wb2EoKTt2YXIgZD1kcGEoYSk7aWYodHlwZW9mIGE9PT0iZnVuY3Rpb24iJiZfLnRvYShhKSl0aHJvdyBFcnJvcigiVWJgIitfLnFmKGEpKTt2YXIgZTtkPShlPWQ9PW51bGw/dm9pZCAwOmQudG9TdHJpbmcoKSkhPW51bGw/ZTphO2lmKGU9QnBhLm9hLmdldChkKSlkPWU7ZWxzZXtlPXR5cGVvZiBhPT09ImZ1bmN0aW9uIj9hOl8uQ3BhKF8uT2YuZ2V0SW5zdGFuY2UoKSxhLlpIKCkpO2lmKCFlKXRocm93IEVycm9yKCJWYmAiK2EpO2M9Xy5ab2EoZSxuZXcgXy5ocGEoYyxlKSk7Xy5mcGEuaGFzKGQpfHwoZT1CcGEsRHBhKGUsZCksZS5vYS5zZXQoZCxjKSk7ZD1jfXJldHVybiBkfSxifHxhKX07Xy5jZz1mdW5jdGlvbihhKXtBcGEodm9pZCAwLGEpfTsKRXBhPWZ1bmN0aW9uKGEpe2lmKGEuX19oaXA9PT12b2lkIDApe2xldCBiLGM9bmV3IFByb21pc2UoZD0+e2I9ZH0pO2MuX19yPWI7YS5fX2hpcD1jfX07Xy5kZz1mdW5jdGlvbihhKXt2YXIgYixjPShiPUZwYS52emQpIT1udWxsP2I6YTtyZXR1cm4gXy5HcGEoYyl9O18uZmc9ZnVuY3Rpb24oYSxiLGMpe2lmKEhwYSYmYS5kYXRhc2V0KWEuZGF0YXNldFtiXT1jO2Vsc2V7aWYoLy1bYS16XS8udGVzdChiKSl0aHJvdyBFcnJvcigiViIpO2Euc2V0QXR0cmlidXRlKCJkYXRhLSIrXy5JcGEoYiksYyl9fTtfLmdnPWZ1bmN0aW9uKGEsYil7aWYoLy1bYS16XS8udGVzdChiKSlyZXR1cm4gbnVsbDtpZihIcGEmJmEuZGF0YXNldCl7aWYoXy5OYS5SVWEoKSYmIShiIGluIGEuZGF0YXNldCkpcmV0dXJuIG51bGw7YT1hLmRhdGFzZXRbYl07cmV0dXJuIGE9PT12b2lkIDA/bnVsbDphfXJldHVybiBhLmdldEF0dHJpYnV0ZSgiZGF0YS0iK18uSXBhKGIpKX07Cl8uaWc9ZnVuY3Rpb24oYSxiKXshLy1bYS16XS8udGVzdChiKSYmKEhwYSYmYS5kYXRhc2V0P18uaGcoYSxiKSYmZGVsZXRlIGEuZGF0YXNldFtiXTphLnJlbW92ZUF0dHJpYnV0ZSgiZGF0YS0iK18uSXBhKGIpKSl9O18uaGc9ZnVuY3Rpb24oYSxiKXtyZXR1cm4vLVthLXpdLy50ZXN0KGIpPyExOkhwYSYmYS5kYXRhc2V0P2IgaW4gYS5kYXRhc2V0OmEuaGFzQXR0cmlidXRlP2EuaGFzQXR0cmlidXRlKCJkYXRhLSIrXy5JcGEoYikpOiEhYS5nZXRBdHRyaWJ1dGUoImRhdGEtIitfLklwYShiKSl9O18uamc9ZnVuY3Rpb24oYSl7aWYoSHBhJiZhLmRhdGFzZXQpcmV0dXJuIGEuZGF0YXNldDt2YXIgYj17fTthPWEuYXR0cmlidXRlcztmb3IobGV0IGM9MDtjPGEubGVuZ3RoOysrYyl7bGV0IGQ9YVtjXTtpZihfLmlhKGQubmFtZSwiZGF0YS0iKSl7bGV0IGU9Xy5KcGEoZC5uYW1lLnNsaWNlKDUpKTtiW2VdPWQudmFsdWV9fXJldHVybiBifTtfLktwYT1mdW5jdGlvbihhKXtyZXR1cm4gYVtfLmVhLlN5bWJvbC5pdGVyYXRvcl0oKX07Cl8ubGc9ZnVuY3Rpb24oYSxiKXt0aGlzLm9hPXt9O3RoaXMua2E9W107dGhpcy53YT10aGlzLnNpemU9MDt2YXIgYz1hcmd1bWVudHMubGVuZ3RoO2lmKGM+MSl7aWYoYyUyKXRocm93IEVycm9yKCJZIik7Zm9yKGxldCBkPTA7ZDxjO2QrPTIpdGhpcy5zZXQoYXJndW1lbnRzW2RdLGFyZ3VtZW50c1tkKzFdKX1lbHNlIGEmJnRoaXMuYWRkQWxsKGEpfTsKXy5McGE9ZnVuY3Rpb24oYSl7dmFyIGI9YS50eXBlO2lmKHR5cGVvZiBiPT09InN0cmluZyIpc3dpdGNoKGIudG9Mb3dlckNhc2UoKSl7Y2FzZSAiY2hlY2tib3giOmNhc2UgInJhZGlvIjpyZXR1cm4gYS5jaGVja2VkP2EudmFsdWU6bnVsbDtjYXNlICJzZWxlY3Qtb25lIjpyZXR1cm4gYj1hLnNlbGVjdGVkSW5kZXgsYj49MD9hLm9wdGlvbnNbYl0udmFsdWU6bnVsbDtjYXNlICJzZWxlY3QtbXVsdGlwbGUiOmI9W107bGV0IGM7Zm9yKGxldCBkPTA7Yz1hLm9wdGlvbnNbZF07ZCsrKWMuc2VsZWN0ZWQmJmIucHVzaChjLnZhbHVlKTtyZXR1cm4gYi5sZW5ndGg/YjpudWxsfXJldHVybiBhLnZhbHVlIT1udWxsP2EudmFsdWU6bnVsbH07T3BhPWZ1bmN0aW9uKCl7dmFyIGE7Xy5uZyhfLiRmKF8uTXBhLF8uaGMoKS5rYSksYj0+e2E9Yn0pO3JldHVybiBfLkViYShhLF8uTnBhKX07Cl8uUXBhPWZ1bmN0aW9uKCl7dmFyIGEsYj0hKChhPWdvb2dsZS5ocyk9PW51bGx8fCFhLm5ocyk7aWYoIVBwYSYmYil0cnl7UHBhPU9wYSgpfWNhdGNoKGMpe18uVmUoYyx7bGV2ZWw6MH0pfXJldHVybiBQcGF9O1JwYT1mdW5jdGlvbigpe3ZhciBhPV8uUXBhKCk7cmV0dXJuIGE/Xy5vZChhLmdldEN1cnJlbnRVcmwoKSk6Xy5vZy5sb2NhdGlvbi5wYXRobmFtZStfLm9nLmxvY2F0aW9uLnNlYXJjaCtfLm9nLmxvY2F0aW9uLmhhc2h9O18uU3BhPWZ1bmN0aW9uKGEpe3JldHVybiBfLnBnKGEpJiZ0eXBlb2YgYS51cmw9PT0ic3RyaW5nIiYmXy5wZyhhLm1ldGFkYXRhKSYmdHlwZW9mIGEubWV0YWRhdGEuZW50cnlJZD09PSJudW1iZXIiJiZ0eXBlb2YgYS5tZXRhZGF0YS5wdXNoSWQ9PT0ibnVtYmVyIiYmdHlwZW9mIGEubWV0YWRhdGEuc3RhY2tJZD09PSJudW1iZXIiJiZ0eXBlb2YgYS5tZXRhZGF0YS5zdGFja0luZGV4PT09Im51bWJlciI/YTpudWxsfTsKVXBhPWZ1bmN0aW9uKCl7dmFyIGE9Xy5vZy5oaXN0b3J5LnN0YXRlLGI9Xy5TcGEoYSk7cmV0dXJuIGImJl8ucGcoYi5wbHVnaW5TdGF0ZSk/Yjp7c3RhdGU6VHBhP251bGw6YSx1cmw6UnBhKCkscGx1Z2luU3RhdGU6e319fTtWcGE9ZnVuY3Rpb24oYSl7dmFyIGI9YS5tZXRhZGF0YTthPXtzdGF0ZTphLnN0YXRlLHVybDphLnVybH07YiYmKGEubWV0YWRhdGE9Yik7cmV0dXJuIE9iamVjdC5mcmVlemU/T2JqZWN0LmZyZWV6ZShhKTphfTtfLnFnPWZ1bmN0aW9uKCl7cmV0dXJuIFZwYShVcGEoKSl9O1hwYT1mdW5jdGlvbigpe3JldHVybiBfLldwYSgpLmdldFVuaXF1ZUlkKCJISVNUT1JZX0hFQURfSUQiKX07YXFhPWZ1bmN0aW9uKGEpe3ZhciBiPVlwYSsrLGM9YS5qZztiPT09MCYmWnBhLnVybD09PVVwYSgpLnVybCYmYSE9PW51bGwmJmMuc3RhdGU9PT1udWxsfHwkcGEoITEsYy5oYXNVQVZpc3VhbFRyYW5zaXRpb24pfTsKJHBhPWZ1bmN0aW9uKGE9ITEsYj0hMSl7dmFyIGM9VXBhKCksZD1WcGEoYyksZT1icWEsZj1WcGEoWnBhKSxnPShoLGssbSxuPSExKT0+e2NxYShkLGYsaCxrLG0sbil9O2F8fGRxYShjLnBsdWdpblN0YXRlKTtacGE9YztlP2Uuc3RhdHVzIT09MD9fLnJnKGUuZmluaXNoZWQsKCk9PntnKG5ldyBTZXQsITAsdm9pZCAwLGIpfSk6KF8ucmcoZS5maW5pc2hlZCwoKT0+e2coZS5hNSwhMSxlLnNvdXJjZSxiKX0pLGUucmVzb2x2ZShjKSxlLnN0YXR1cz0xKTpnKG5ldyBTZXQsITAsdm9pZCAwLGIpfTsKY3FhPWZ1bmN0aW9uKGEsYixjLGQsZSxmPSExKXt2YXIgZz1iLnVybCYmYS51cmwmJmIudXJsPT09YS51cmw7ZD17dXNlckluaXRpYXRlZDpkLGZMYzohMSxoYXNVQVZpc3VhbFRyYW5zaXRpb246Zn07ZSE9PXZvaWQgMCYmKGQuc291cmNlPWUpO2ZvcihsZXQgaCBvZiBfLmVxYSl7aWYoYy5oYXMoaCkpY29udGludWU7ZT1fLmZxYS5nZXQoaCk7aWYoIWd8fGUmJmUudEdjKXRyeXtoKGEsYixkKX1jYXRjaChrKXtncWEudGhyb3dFeGNlcHRpb24oayl9fX07ZHFhPWZ1bmN0aW9uKGEpe3ZhciBiPVpwYS5wbHVnaW5TdGF0ZTtmb3IobGV0IGMgb2YgXy5ocWEua2V5cygpKXtsZXQgZD1fLmhxYS5nZXQoYyk7aWYoZC5saXN0ZW5lcil0cnl7ZC5saXN0ZW5lcihhW2NdLGJbY10pfWNhdGNoKGUpe2dxYS50aHJvd0V4Y2VwdGlvbihlKX19fTtfLmlxYT1mdW5jdGlvbihhLGI9ITEpe18uZXFhLmFkZChhKTtiP18uZnFhLnNldChhLHt0R2M6Yn0pOl8uZnFhLmRlbGV0ZShhKX07CmtxYT1mdW5jdGlvbihhLGIsYyxkLGUsZixnLGgpe2gmJmJxYSYmYnFhLnN0YXR1cz09PTAmJihicWEucmVqZWN0KG5ldyBfLnRnKCJQcmVlbXB0ZWQgYnkgYSBzeW5jaHJvbm91cyBjYWxsIikpLGJxYS5zdGF0dXM9Mik7dmFyIGs9VXBhKCk7aWYoZD1kKGspKXt2YXIgbT1fLmxmKCksbj17cmVzb2x2ZTptLnJlc29sdmUscmVqZWN0Om0ucmVqZWN0LGZpbmlzaGVkOmEsc3RhdHVzOjAsYTU6Zixzb3VyY2U6Z307Xy5yZyhtLnByb21pc2UsKCk9PntqcWEoYSk7YnFhPT09biYmKGJxYT1udWxsKX0pO20ucHJvbWlzZS50aGVuKHI9PntlKGsscixwKT9iKFZwYShyKSk6YyhFcnJvcigiaWMiKSl9LHI9PntjKHIpfSk7YnFhPW47dmFyIHA9ZCgpO18ub2cuc2V0VGltZW91dCgoKT0+e2JxYT09PW4mJm4uc3RhdHVzPT09MCYmKG0ucmVqZWN0KG5ldyBfLnRnKCJUaW1lZCBvdXQiKSksbi5zdGF0dXM9Mil9LDEwMCl9ZWxzZSBqcWEoYSksYyhuZXcgXy50ZygiRXJyb3IgZ2V0dGluZyBvcGVyYXRpb24iKSl9OwpqcWE9ZnVuY3Rpb24oYSl7Xy5yZyhhLCgpPT57bHFhKCExKX0pO2EuSHgoKCk9Pnt9KX07bnFhPWZ1bmN0aW9uKGEsYix7YmFhOmM9ITAsYTU6ZD1uZXcgU2V0LHNvdXJjZTplfT17fSl7dmFyIHtwcm9taXNlOmYscmVzb2x2ZTpnLHJlamVjdDpofT1fLmxmKCksaz1tPT57a3FhKGYsZyxoLGEsYixkLGUsbSl9O2M/bXFhLnVuc2hpZnQoayk6bXFhLnB1c2goayk7bHFhKGMpO3JldHVybiBmfTtscWE9ZnVuY3Rpb24oYSl7IW1xYS5sZW5ndGh8fGJxYSYmIWF8fG1xYS5zaGlmdCgpKGEpfTsKb3FhPWZ1bmN0aW9uKGEsYixjLGQpe2I9Xy5vZChiKTt2YXIgZTtpZihjLm1ldGFkYXRhJiYoe3B1c2hJZDpmLHN0YWNrSWQ6ZSxzdGFja0luZGV4Omd9PWMubWV0YWRhdGEsIWQpKXt2YXIgZj12b2lkIDA7dmFyIGc9Yy5tZXRhZGF0YS5zdGFja0luZGV4KzF9Yz17ZW50cnlJZDpYcGEoKSxwdXNoSWQ6Znx8WHBhKCksc3RhY2tJZDplfHxYcGEoKSxzdGFja0luZGV4Omd8fDB9O3JldHVybntzdGF0ZTphLHVybDpiLG1ldGFkYXRhOmMscGx1Z2luU3RhdGU6e319fTsKcXFhPWZ1bmN0aW9uKGEsYil7cmV0dXJuKCk9Pnt2YXIgYzt0eXBlb2YgYT09PSJmdW5jdGlvbiI/e3N0YXRlOmQsdXJsOmYscmVwbGFjZTpjfT1hKCk6e3N0YXRlOmQsdXJsOmYscmVwbGFjZTpjfT1hO3ZhciBkPW9xYShkLGYsYixjKTtmb3IodmFyIGUgb2YgXy5ocWEua2V5cygpKXt2YXIgZj1fLmhxYS5nZXQoZSk7bGV0IGc9Yi5wbHVnaW5TdGF0ZVtlXTtkLnBsdWdpblN0YXRlW2VdPWYuZ2V0U3RhdGUoVnBhKGQpLFZwYShiKSxnLGMpfWN8fFVwYSgpLm1ldGFkYXRhfHwoZT1vcWEoYi5zdGF0ZSxiLnVybCxiLCEwKSxwcWEoZSwhMCksWnBhPWUpO3BxYShkLGMpOyRwYSghMCk7cmV0dXJuIGR9fTtzcWE9ZnVuY3Rpb24oYSx7YmFhOmIsYTU6Yyxzb3VyY2U6ZH09e30pe3JxYSsrO3JldHVybiBucWEoZT0+cXFhKGEsZSksKGUsZixnKT0+Zi51cmw9PT1nLnVybCx7YmFhOmIsYTU6Yyxzb3VyY2U6ZH0pfTsKXy50cWE9ZnVuY3Rpb24oYSxiLHtiYWE6YyxhNTpkLHNvdXJjZTplfT17fSl7cmV0dXJuIHNxYSh7c3RhdGU6YSx1cmw6YixyZXBsYWNlOiExfSx7YmFhOmMsYTU6ZCxzb3VyY2U6ZX0pfTtfLnVxYT1mdW5jdGlvbihhLGIse2JhYTpjLGE1OmQsc291cmNlOmV9PXt9KXtyZXR1cm4gc3FhKHtzdGF0ZTphLHVybDpiLHJlcGxhY2U6ITB9LHtiYWE6YyxhNTpkLHNvdXJjZTplfSl9O3dxYT1mdW5jdGlvbihhKXtyZXR1cm4oKT0+e3ZhciBiPV8uUXBhKCk7Yj9hPT09LTE/Yi5iYWNrKCk6YT09PTE/Yi5mb3J3YXJkKCk6Yi5nbyhhKTooMCxfLnZxYSkoYSk7cmV0dXJuIGF9fTt4cWE9ZnVuY3Rpb24oYSxiLGMpe2E9YS5tZXRhZGF0YTtiPWIubWV0YWRhdGE7cmV0dXJuIGEmJmImJmEuc3RhY2tJZD09PWIuc3RhY2tJZD9hLnN0YWNrSW5kZXgrYz09PWIuc3RhY2tJbmRleDohMH07Cl8ueXFhPWZ1bmN0aW9uKGEse2JhYTpiLGE1OmMsc291cmNlOmR9PXt9KXtyZXR1cm4gbnFhKGU9Pnt2YXIgZjt0eXBlb2YgYT09PSJudW1iZXIiP2Y9YTpmPWEoZSk7cmV0dXJuIGYhPT1udWxsP3dxYShmKTpudWxsfSx4cWEse2JhYTpiLGE1OmMsc291cmNlOmR9KX07cHFhPWZ1bmN0aW9uKGEsYil7dmFyIGM9Xy5RcGEoKTtjP2I/Yy5yZXBsYWNlU3RhdGUoYSwiIixhLnVybCk6Yy5wdXNoU3RhdGUoYSwiIixhLnVybCk6Yj9fLnpxYShhLGEudXJsKTpfLm9nLmhpc3RvcnkucHVzaFN0YXRlKGEsIiIsYS51cmwpfTtfLnVnPWZ1bmN0aW9uKGEsYil7dmFyIGM9e307YSBpbiBBcWF8fChBcWFbYV09Yyk7Yz1iLm5hbWU7cmV0dXJuIEFxYVthXVtjXT9BcWFbYV1bY106QXFhW2FdW2NdPW5ldyBfLkJxYShhLGMse2l5YjohIWIuaXlifSl9O18uRHFhPWZ1bmN0aW9uKGEpe2E9Xy5DcWEuZ2V0KFN0cmluZyhhKSk7cmV0dXJuIEFycmF5LmlzQXJyYXkoYSk/YTpbXX07Cl8uemc9ZnVuY3Rpb24oYSxiKXt2YXIgYz1fLnZnKF8ud2csYSk7Xy5FcWFbYV0/Xy5FcWFbYV0uaGFzKGIpfHwoXy5FcWFbYV0uYWRkKGIpLGdvb2dsZS5kY2xjKCgpPT57YihjLCEwKX0pKTooXy5FcWFbYV09bmV3IFNldChbYl0pLGdvb2dsZS5kY2xjKCgpPT57YihjLCEwKX0pKX07Xy5IcWE9ZnVuY3Rpb24oYSl7Xy5GcWFbYS5kd2EoKV18fChfLkZxYVthLmR3YSgpXT1hLGdvb2dsZS5kY2xjKCgpPT57YS5GcmEoXy53ZykmJihfLkdxYT1hLGEuaGFuZGxlKF8ud2csITApKX0pKX07Xy5DZz1mdW5jdGlvbihhLGIsYyl7dmFyIGQ9e307ZFthXT1iO3JldHVybiBfLkFnKGQsYyl9O18uQWc9ZnVuY3Rpb24oYSxiKXthPV8uSXFhKF8ud2csYSk7aWYoYS5lcXVhbHMoXy53ZykpYj1fLkRnKCk7ZWxzZXt2YXIgYz1fLkpxYSgpO2MuaHNzPXt9O2I9Xy5LcWEoYSxjLGIpfXJldHVybiBifTtfLkZnPWZ1bmN0aW9uKGEpe3JldHVybiBfLkxxYSgtMSxhKX07Cl8uTHFhPWZ1bmN0aW9uKGEsYj0hMCl7cmV0dXJuIF8ueXFhKGEse2JhYTpifSl9O18uR2c9ZnVuY3Rpb24oYSl7cmV0dXJuIE1xYShhKT09PTE/Xy52ZyhOcWEsYSk6Xy52ZyhfLndnLGEpfTtPcWE9ZnVuY3Rpb24oKXt2YXIgYT1fLndnLGI9Xy5HcWE7YiYmKGIuRnJhKGEpP2dvb2dsZS5kY2xjKCgpPT57Yi5oYW5kbGUoYSl9KTooZ29vZ2xlLmRjbGMoKCk9PntiLkFIKGEpfSksXy5HcWE9bnVsbCkpO2lmKCFfLkdxYSlmb3IobGV0IGMgaW4gXy5GcWEpe2xldCBkPV8uRnFhW2NdO2lmKGQuRnJhKGEpKXtnb29nbGUuZGNsYygoKT0+e2QuaGFuZGxlKGEpfSk7Xy5HcWE9ZDticmVha319Zm9yKGxldCBjIGluIF8uRXFhKXtsZXQgZD1fLnZnKF8ud2csYyk7Zm9yKGxldCBlIG9mIF8uRXFhW2NdKWdvb2dsZS5kY2xjKCgpPT5lKGQsITEpKX19OwpfLktxYT1mdW5jdGlvbihhLGIsYz0hMSxkPSEwKXt2YXIgZT1fLnlkKCk7dmFyIGY9Xy5QcWEoYSksZztpZihnPWEuZ2V0UGF0aCgpPT09Xy53Zy5nZXRQYXRoKCkpe2c9Xy53ZztsZXQgaD1fLlFxYShhKTtnPV8uUXFhKGcpO2g9Xy5JcWEoaCx7cTpfLnZnKGgsInEiKS50b0xvd2VyQ2FzZSgpLnRyaW0oKX0pO2c9Xy5JcWEoZyx7cTpfLnZnKGcsInEiKS50b0xvd2VyQ2FzZSgpLnRyaW0oKX0pO2c9Xy5ScWEoaCxnKX1nJiYoZj1lLnNlYXJjaC5zdWJzdHIoMSkpO2U9Xy5ZamEodm9pZCAwLHZvaWQgMCx2b2lkIDAsdm9pZCAwLGEuZ2V0UGF0aCgpLGYsXy5TcWEoYSkpO2I9c3FhKHtzdGF0ZTpiLHVybDplLHJlcGxhY2U6Y30se2E1Om5ldyBTZXQoW1RxYV0pLGJhYTpkfSk7Xy53Zz1hO09xYSgpO3JldHVybiBifTtfLkpxYT1mdW5jdGlvbigpe3ZhciBhPV8ucWcoKS5zdGF0ZTtyZXR1cm4gT2JqZWN0LmFzc2lnbih7fSxhfHx7fSl9OwpUcWE9ZnVuY3Rpb24oKXt2YXIgYT1fLlVxYShfLnlkKCkuaHJlZiwhMCkuc3RhdGU7Xy53Zy5lcXVhbHMoYSl8fChfLndnPV8uUXFhKGEpLE9xYSgpKX07VnFhPWZ1bmN0aW9uKGEsYil7YTp7aWYodHlwZW9mIHdpbmRvdy5FdmVudD09PSJmdW5jdGlvbiIpdHJ5e3ZhciBjPW5ldyBFdmVudChhLHtidWJibGVzOiExLGNhbmNlbGFibGU6ITB9KTticmVhayBhfWNhdGNoKGQpe31jPWRvY3VtZW50LmNyZWF0ZUV2ZW50KCJFdmVudCIpO2MuaW5pdEV2ZW50KGEsITEsITApfWE9YzthLnlwYj1iO3JldHVybiBhfTtXcWE9ZnVuY3Rpb24oKXt0cnl7aWYodHlwZW9mIHdpbmRvdy5FdmVudFRhcmdldD09PSJmdW5jdGlvbiIpcmV0dXJuIG5ldyBFdmVudFRhcmdldH1jYXRjaChhKXt9dHJ5e3JldHVybiBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKX1jYXRjaChhKXt9cmV0dXJuIG51bGx9OwpZcWE9ZnVuY3Rpb24oYSl7dmFyIGIsYyxkLGU7cmV0dXJuIG5ldyBYcWEoKGQ9KGI9SWcoYSkpPT1udWxsP3ZvaWQgMDpiLm5hbWUpIT1udWxsP2Q6IiIsKGU9KGM9SWcoYSkpPT1udWxsP3ZvaWQgMDpjLmVsZW1lbnQpIT1udWxsP2U6bnVsbCxhLmdldEV2ZW50KCksYS5HcSgpLGEua2EuZXZlbnRUeXBlLGEua2EudGFyZ2V0RWxlbWVudCl9O1pxYT1mdW5jdGlvbihhLGIpe2Zvcig7YSYmYS5ub2RlVHlwZT09PU5vZGUuRUxFTUVOVF9OT0RFO2E9YS5wYXJlbnROb2RlKWIoYSl9O18uJHFhPWZ1bmN0aW9uKGEpe3ZhciBiPWEuZXZlbnQsYz1hLm9iO2E9YS50YXJnZXRFbGVtZW50O2IuZGV0YWlsfHwoYi5kZXRhaWw9e3R5cGU6Yi50eXBlfHwiIn0pO3JldHVybiBuZXcgWHFhKCIiLGMuZWwoKSxiLHZvaWQgMCxiLmRldGFpbC50eXBlfHxiLnR5cGUsYS5lbCgpKX07CmZyYT1mdW5jdGlvbihhLGIsYyxkPSExKXtiPWFyYShhLGIpO3ZhciBlPXt9O2Zvcih2YXIgZiBpbiBhKXtsZXQgaz1hW2ZdO3R5cGVvZiBrIT09ImZ1bmN0aW9uIiYmZiE9PSJ0YXJnZXQiJiZmIT09InBhdGgiJiYoZVtmXT1rKX1lLnRhcmdldD1jO3ZhciBnLGg7aWYoZj0oaD1hLnBhdGgpIT1udWxsP2g6KGc9YS5jb21wb3NlZFBhdGgpPT1udWxsP3ZvaWQgMDpnLmNhbGwoYSkpZm9yKGc9MDtnPGYubGVuZ3RoO2crKylpZihmW2ddPT09Yyl7ZS5wYXRoPWYuc2xpY2UoZyk7ZS5jb21wb3NlZFBhdGg9KCk9PmUucGF0aDticmVha31lLl9yZXRhcmdldD1iO2UuX29yaWdpbmFsRXZlbnQ9YTtkPyhjPWFbYnJhXSxlW2JyYV09Yz9jOmIpOmVbYnJhXT1jO2EucHJldmVudERlZmF1bHQmJihlLmRlZmF1bHRQcmV2ZW50ZWQ9YS5kZWZhdWx0UHJldmVudGVkfHwhMSxlLnByZXZlbnREZWZhdWx0PWNyYSk7YS5zdG9wUHJvcGFnYXRpb24mJihlLl9wcm9wYWdhdGlvblN0b3BwZWQ9YS5fcHJvcGFnYXRpb25TdG9wcGVkfHwKITEsZS5zdG9wUHJvcGFnYXRpb249ZHJhLGUuX2ltbWVkaWF0ZVByb3BhZ2F0aW9uU3RvcHBlZD1hLl9pbW1lZGlhdGVQcm9wYWdhdGlvblN0b3BwZWR8fCExLGUuc3RvcEltbWVkaWF0ZVByb3BhZ2F0aW9uPWVyYSk7cmV0dXJuIGV9O2NyYT1mdW5jdGlvbigpe3RoaXMuZGVmYXVsdFByZXZlbnRlZD0hMDt0aGlzLl9vcmlnaW5hbEV2ZW50LnByZXZlbnREZWZhdWx0KCl9O2RyYT1mdW5jdGlvbigpe3RoaXMuX3Byb3BhZ2F0aW9uU3RvcHBlZD0hMDt0aGlzLl9vcmlnaW5hbEV2ZW50LnN0b3BQcm9wYWdhdGlvbigpfTtlcmE9ZnVuY3Rpb24oKXt0aGlzLl9pbW1lZGlhdGVQcm9wYWdhdGlvblN0b3BwZWQ9ITA7dGhpcy5fb3JpZ2luYWxFdmVudC5zdG9wSW1tZWRpYXRlUHJvcGFnYXRpb24oKX07Z3JhPWZ1bmN0aW9uKGEsYil7cmV0dXJuKGE9YVticmFdKSYmIWIuY29udGFpbnMoYSk/YTpifTsKYXJhPWZ1bmN0aW9uKGEsYil7dmFyIGM7cmV0dXJuKGM9YS5fcmV0YXJnZXQpIT1udWxsP2M6Yn07aXJhPWZ1bmN0aW9uKGEsYixjLGQ9ITAsZSl7YT17dHlwZTpiLHRhcmdldDphLGJ1YmJsZXM6ZCxbXy5ocmFdOiEwfTtjIT09dm9pZCAwJiYoYS5kYXRhPWMpO2UmJihhPU9iamVjdC5hc3NpZ24oe30sYSxlKSk7cmV0dXJuIGF9O2pyYT1mdW5jdGlvbihhKXtmb3IoO2EuX29yaWdpbmFsRXZlbnQ7KWE9YS5fb3JpZ2luYWxFdmVudDt2YXIgYixjLGQsZSxmPShlPWE9PW51bGw/dm9pZCAwOihiPWEudGFyZ2V0KT09bnVsbD92b2lkIDA6KGM9Yi5vd25lckRvY3VtZW50KT09bnVsbD92b2lkIDA6KGQ9Yy5kZWZhdWx0Vmlldyk9PW51bGw/dm9pZCAwOmQuRXZlbnQpIT1udWxsP2U6RXZlbnQ7cmV0dXJuIGEgaW5zdGFuY2VvZiBmfTtfLkpnPWZ1bmN0aW9uKGEpe3JldHVybiBhIGluc3RhbmNlb2YgXy5rcmE/YS5kYXRhP2EuZGF0YTpscmEoYS5ldmVudCk6bHJhKGEpfTsKbHJhPWZ1bmN0aW9uKGEpe3ZhciBiPWEuZGF0YTtpZihiKXJldHVybiBiO2lmKChhPWEuZGV0YWlsKSYmYS5kYXRhKXJldHVybiBhLmRhdGF9O18ubXJhPWZ1bmN0aW9uKGEpe3ZhciBiPV8uSmcoYSk7cmV0dXJuIGImJmIucW8/Yi5xbzooYT0oYSBpbnN0YW5jZW9mIF8ua3JhP2EuZXZlbnQ6YSkuZGV0YWlsKSYmYS5RUmN9O25yYT1mdW5jdGlvbigpe3ZhciBhO2lmKCEoXy5lYT09bnVsbD8wOihhPV8uZWEuU3ltYm9sKT09bnVsbD8wOmEuZm9yKSlyZXR1cm4gbmV3IFdlYWtNYXA7YT1TeW1ib2wuZm9yKCJnb29nbGUuZ29lbSIpO3ZhciBiPV8uZWFbYV07aWYoYilyZXR1cm4gYjtiPW5ldyBXZWFrTWFwO3JldHVybiBfLmVhW2FdPWJ9OwpxcmE9ZnVuY3Rpb24oYSxiLGMpe2lmKCFiJiZhLmhhc0F0dHJpYnV0ZSgianNzaGFkb3ciKSlyZXR1cm4gbnVsbDtmb3IoYj0wO2E9Xy5vcmEoYSk7KXtpZihhJiZhPT09YyYmYj4wKXtwcmF8fChwcmE9ITApO2JyZWFrfWlmKGEuaGFzQXR0cmlidXRlKCJqc3Nsb3QiKSliKz0xO2Vsc2UgaWYoYS5oYXNBdHRyaWJ1dGUoImpzc2hhZG93IikmJmI+MCl7LS1iO2NvbnRpbnVlfWlmKGI8PTApcmV0dXJuIGF9cmV0dXJuIG51bGx9O18ub3JhPWZ1bmN0aW9uKGEpe3JldHVybiBhP18ucnJhKGEpP18ucnJhKGEpOmEucGFyZW50Tm9kZSYmYS5wYXJlbnROb2RlLm5vZGVUeXBlPT09MTE/YS5wYXJlbnROb2RlLmhvc3Q6Xy5MZyhhKTpudWxsfTtfLnNyYT1mdW5jdGlvbihhLGIsYyxkLGUpe2ZvcihjfHwoYT1xcmEoYSxkLGUpKTthJiZhIT09ZTspe2lmKGIoYSkpcmV0dXJuIGE7YT1xcmEoYSxkLGUpfXJldHVybiBudWxsfTtfLnRyYT1mdW5jdGlvbihhKXtyZXR1cm4gZG9jdW1lbnQucXVlcnlTZWxlY3RvcihgW2pzdWlkPSIke2F9Il1gKX07Cl8udXJhPWZ1bmN0aW9uKGEsYixjKXtmb3IoY3x8KGE9Xy5vcmEoYSkpO2E7KXtpZihiKGEpKXJldHVybiBhO2E9Xy5vcmEoYSl9cmV0dXJuIG51bGx9O18uT2c9ZnVuY3Rpb24oYSxiKXtiLmlkfHwoYi5pZD0ib3ciK18uJGUoYikpO2Euc2V0QXR0cmlidXRlKCJqc293bmVyIixiLmlkKTthLl9fb3duZXI9Yjt2YXIgYz1fLk1nKGIsXy52cmEpO2MmJih3cmEuaGFzKGMpfHx3cmEuc2V0KGMsW10pLHdyYS5nZXQoYykucHVzaChhKSk7KGM9Xy5OZy5nZXQoYikpfHxfLk5nLnNldChiLGM9W10pO2MuaW5jbHVkZXMoYSl8fGMucHVzaChhKTtiLnNldEF0dHJpYnV0ZSgiX19JU19PV05FUiIsITApfTtfLnZyYT1mdW5jdGlvbihhKXtyZXR1cm4gXy5SZyhhKT9hLmdldEF0dHJpYnV0ZSgianNuYW1lIik9PT0iY29GU3hlIjohMX07CnhyYT1mdW5jdGlvbihhKXtpZighYSlyZXR1cm5bXTt2YXIgYj0od3JhLmhhcyhhKT93cmEuZ2V0KGEpOltdKS5maWx0ZXIoYz0+ZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmNvbnRhaW5zKGMpKTt3cmEuc2V0KGEsYik7cmV0dXJuIGJ9O18ueXJhPWZ1bmN0aW9uKGEsYil7dmFyIGM9Yi5kb2N1bWVudC5xdWVyeVNlbGVjdG9yKGEpO3JldHVybiBjP18uRGcoYyk6bmV3IF8uU2coZD0+e3ZhciBlPSgpPT57dmFyIGY9Yi5kb2N1bWVudC5xdWVyeVNlbGVjdG9yKGEpO2Y/ZChmKTpiLmRvY3VtZW50LnJlYWR5U3RhdGU9PSJsb2FkaW5nIj9fLmVhLnNldFRpbWVvdXQoZSw1MCk6ZCh2b2lkIDApfTtfLmVhLnNldFRpbWVvdXQoZSwwKX0pfTt6cmE9ZnVuY3Rpb24oYSxiKXt2YXIgYz1hLl9fd2l6O2N8fChjPWEuX193aXo9e30pO3JldHVybiBjW2IudG9TdHJpbmcoKV19OwpfLkFyYT1mdW5jdGlvbihhLGIpe3JldHVybiBfLnNyYShhLGM9Pl8uUmcoYykmJmMuaGFzQXR0cmlidXRlKCJqc2NvbnRyb2xsZXIiKSxiLCEwKX07Xy5CcmE9ZnVuY3Rpb24oYSxiKXt2YXIgYz1udWxsLGQ9YVtgJHdhJCR7Yn1gXTtkJiYoYz1kLmNhbGwoYSkpO2lmKCFjKXRocm93IEVycm9yKCJuY2AiK18uaG9hKGIpKyJgIitfLnFmKGEpKTtyZXR1cm4gY307Xy5DcmE9ZnVuY3Rpb24oYSl7Il9fanNhY3Rpb24iaW4gYSYmZGVsZXRlIGEuX19qc2FjdGlvbn07Cl8uVGc9ZnVuY3Rpb24oYSxiLGMsZCl7dmFyIGU9Xy5tYShhLmdldEF0dHJpYnV0ZSgianNhY3Rpb24iKXx8IiIpO2QmJihjPWMuYmluZChkKSk7Yj1iIGluc3RhbmNlb2YgQXJyYXk/YjpbYl07Zm9yKGxldCBmIG9mIGIpRHJhKGUsZil8fChlJiYhLzskLy50ZXN0KGUpJiYoZSs9IjsiKSxlKz1gJHtmfTouQ0xJRU5UYCxfLkVyYShhLGUpKSwoZD16cmEoYSxmKSk/ZC5wdXNoKGMpOmEuX193aXpbZi50b1N0cmluZygpXT1bY107cmV0dXJue2V0OmIsY2I6YyxlbDphfX07Xy5WZz1mdW5jdGlvbihhLGIsYyxkKXtkJiYoYz1jLmJpbmQoZCkpO3ZhciBlO3JldHVybiBlPV8uVGcoYSxiLGZ1bmN0aW9uKGYpe18uVWcoZSk7cmV0dXJuIGMoZil9LG51bGwpfTtfLldnPWZ1bmN0aW9uKGEsYixjLGQpe3JldHVybiBfLlRnKGEsYixjLGQpfTsKXy5VZz1mdW5jdGlvbihhKXt2YXIgYj0hMDtmb3IobGV0IGMgb2YgYS5ldCl7bGV0IGQ9enJhKGEuZWwsYyk7aWYoIWQpe2I9ITE7Y29udGludWV9bGV0IGU9Xy5EYShkLGEuY2IpO2QubGVuZ3RofHxGcmEoYS5lbCxjKTtiPWImJmV9cmV0dXJuIGJ9O18uR3JhPWZ1bmN0aW9uKGEpe3ZhciBiPWEuX193aXo7aWYoYil7Zm9yKGxldCBjIG9mIE9iamVjdC5rZXlzKGIpKUZyYShhLGMpO2EuX193aXo9dm9pZCAwfX07RnJhPWZ1bmN0aW9uKGEsYil7dmFyIGM9Xy5tYShhLmdldEF0dHJpYnV0ZSgianNhY3Rpb24iKXx8IiIpO2I9YCR7Yn06LkNMSUVOVGA7Yz1jLnJlcGxhY2UoYisiOyIsIiIpO2M9Yy5yZXBsYWNlKGIsIiIpO18uRXJhKGEsYyl9O18uRXJhPWZ1bmN0aW9uKGEsYil7YS5zZXRBdHRyaWJ1dGUoImpzYWN0aW9uIixiKTtfLkNyYShhKX07Xy5ZZz1mdW5jdGlvbihhLGIsYyl7Xy5YZyhhLGIsYyx2b2lkIDApfTsKSHJhPWZ1bmN0aW9uKGEsYixjLGQsZSl7Xy5YZyhhLGIsYyxkLGUpfTtfLlhnPWZ1bmN0aW9uKGEsYixjLGQsZSl7SXJhKF8uSnJhKGEpLGEsYixjLGQsZSl9O18uSnJhPWZ1bmN0aW9uKGEpe3JldHVybiBfLmRnKF8uV2QoYSkpfTtfLlpnPWZ1bmN0aW9uKGEsYixjLGQsZSl7YT1fLktyYShhLGIpO2ZvcihsZXQgZiBvZiBhKWE9ZSxkJiYoYT1hfHx7fSxhLl9fc291cmNlPWQpLF8uWGcoZixiLGMsITEsYSl9O18uS3JhPWZ1bmN0aW9uKGEsYil7dmFyIGM9W10sZD1lPT57dmFyIGY9Zz0+e18uTmcuaGFzKGcpJiZfLkxhKF8uTmcuZ2V0KGcpLGg9PntfLiRnKGEsaCl8fGQoaCl9KTtfLkxyYShnLGIpJiZjLnB1c2goZyl9O18uUmcoZSkmJmYoZSk7Xy5MYShlLnF1ZXJ5U2VsZWN0b3JBbGwoYFtqc2FjdGlvbio9IiR7Yn0iXSxbanNjb250cm9sbGVyXVtfX0lTX09XTkVSXWApLGYpfTtkKGEpO3JldHVybiBjfTsKXy5McmE9ZnVuY3Rpb24oYSxiKXt2YXIgYz1hLl9fanNhY3Rpb247cmV0dXJuIGM/ISFjW2IudG9TdHJpbmcoKV06RHJhKGEuZ2V0QXR0cmlidXRlKCJqc2FjdGlvbiIpLGIpfTtEcmE9ZnVuY3Rpb24oYSxiKXtpZighYSlyZXR1cm4hMTt2YXIgYz1NcmFbYV07aWYoYylyZXR1cm4hIWNbYi50b1N0cmluZygpXTtjPU5yYVtiLnRvU3RyaW5nKCldO2N8fChjPW5ldyBSZWdFeHAoYCheXFxzKiR7Yn1cXHMqOnxbXFxzO10ke2J9XFxzKjopYCksTnJhW2IudG9TdHJpbmcoKV09Yyk7cmV0dXJuIGMudGVzdChhKX07T3JhPWZ1bmN0aW9uKGEpe3dpbmRvdy5kb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigiX2N1c3RvbSIsYj0+e3ZhciBjPWIuZGV0YWlsO2MmJmMuX3R5cGUmJmEoe3R5cGU6Yy5fdHlwZSx0YXJnZXQ6Yi50YXJnZXQsYnViYmxlczohMCxkZXRhaWw6Y30pfSl9OwpQcmE9ZnVuY3Rpb24oYSl7cmV0dXJuIGE9PT0ibW91c2VlbnRlciI/Im1vdXNlb3ZlciI6YT09PSJtb3VzZWxlYXZlIj8ibW91c2VvdXQiOmE9PT0icG9pbnRlcmVudGVyIj8icG9pbnRlcm92ZXIiOmE9PT0icG9pbnRlcmxlYXZlIj8icG9pbnRlcm91dCI6YX07UXJhPWZ1bmN0aW9uKGEpe2EucHJldmVudERlZmF1bHQ/YS5wcmV2ZW50RGVmYXVsdCgpOmEucmV0dXJuVmFsdWU9ITF9O1JyYT1mdW5jdGlvbihhKXthPWEudGFyZ2V0OyFhLmdldEF0dHJpYnV0ZSYmYS5wYXJlbnROb2RlJiYoYT1hLnBhcmVudE5vZGUpO3JldHVybiBhfTtfLlRyYT1mdW5jdGlvbihhKXtyZXR1cm4gU3JhJiZhLm1ldGFLZXl8fCFTcmEmJmEuY3RybEtleXx8YS53aGljaD09PTJ8fGEud2hpY2g9PW51bGwmJmEuYnV0dG9uPT09NHx8YS5zaGlmdEtleX07Xy5VcmE9ZnVuY3Rpb24oKXtyZXR1cm4gd2luZG93Lmd1ZXN0Um9vdEVsZW1lbnQ/d2luZG93Lmd1ZXN0Um9vdEVsZW1lbnQ6ZG9jdW1lbnQuYm9keX07Cl8uVnJhPWZ1bmN0aW9uKGEpe2E9YHNlYXJjaC53aXoubGVnYWN5R2xvYmFsSGFuZGxlckV2ZW50cy4ke2EucmVwbGFjZUFsbCgiLiIsIl8iKS5yZXBsYWNlQWxsKCItIiwiXyIpfWA7cmV0dXJuIF8uYWgoYSl9O1pyYT1mdW5jdGlvbihhLGIsYyl7dmFyIGQ9YSsiLiIrYjtpZihfLldyYSgpKXt2YXIgZT1fLlZyYShkKTtpZihlKXt2YXIgZj1fLlhyYS5nZXQoZCk7ZiYmXy5VZyhmKTtlPV8uVGcoXy5VcmEoKSxlLGc9Pnt2YXIgaD1fLkpnKGcpO2gmJmguUnRiPyhZcmEoaC5lbGVtZW50LGEsYiwiaWEiKSxjKGguZWxlbWVudCxoLmRhdGFzZXQsaC5ldmVudCxoLmRKKSk6KGg9Zy50YXJnZXRFbGVtZW50LmVsKCksWXJhKGgsYSxiLCJuIiksYyhoLF8uamcoaCksZy5ldmVudCxfLiRxYShnKSkpfSk7Xy5YcmEuc2V0KGQsZSl9fX07CiRyYT1mdW5jdGlvbihhLGIsYyl7dmFyIGQ9YSsiLiIrYjtpZihfLldyYSgpKXt2YXIgZT1fLlZyYShkKTtpZihlKXt2YXIgZj1fLlhyYS5nZXQoZCk7ZiYmXy5VZyhmKTtlPV8uVGcoXy5VcmEoKSxlLGc9Pnt2YXIgaD1fLkpnKGcpO2gmJmguUnRiPyhZcmEoaC5Xc2EudGFyZ2V0RWxlbWVudC5lbCgpLGEsYiwiaWF3IiksYyhoLldzYSkpOihoPW5ldyBfLmtyYShnLmV2ZW50LGcudGFyZ2V0RWxlbWVudCxnLnRhcmdldEVsZW1lbnQpLGc9Zy50YXJnZXRFbGVtZW50LmVsKCksWXJhKGcsYSxiLCJ3IiksYyhoKSl9KTtfLlhyYS5zZXQoZCxlKX19fTtfLmFzYT1mdW5jdGlvbihhLGIpe2ZvcihsZXQgYyBpbiBiKVpyYShhLGMsYltjXSk7Xy5iaFthXT1fLmJoW2FdfHxbXTtmb3IobGV0IGMgaW4gYilfLmJoW2FdLmluY2x1ZGVzKGMpfHxfLkJhKF8uYmhbYV0sYyl9OwpfLmJzYT1mdW5jdGlvbihhLGIpe2ZvcihsZXQgYyBvZiBPYmplY3Qua2V5cyhiKSkkcmEoYSxjLGJbY10pO18uYmhbYV09Xy5iaFthXXx8W107Zm9yKGxldCBjIG9mIE9iamVjdC5rZXlzKGIpKV8uYmhbYV0uaW5jbHVkZXMoYyl8fF8uQmEoXy5iaFthXSxjKX07Xy5jc2E9ZnVuY3Rpb24oKXt9O18uV3JhPWZ1bmN0aW9uKCl7cmV0dXJuIHdpbmRvdy5nd3Nfd2l6YmluZCYmXy5HcGEod2luZG93LmRvY3VtZW50KT8hMDohMX07CmVzYT1mdW5jdGlvbihhLGIsYyl7dmFyIGQ9Xy5BcmEoYSwhMCksZT1kJiZkLmdldEF0dHJpYnV0ZSgianNjb250cm9sbGVyIil8fCJVTksiLGY9IiI7aWYoZD09PWEpZj0iY3RybG9ucm9vdCI7ZWxzZSBpZihlIT09IlVOSyIpe2xldCBnPW5ldyBTZXQ7YT1hLnF1ZXJ5U2VsZWN0b3JBbGwoIltqc2FjdGlvbl0iKTtmb3IobGV0IGggb2YgYSlpZihhPWguZ2V0QXR0cmlidXRlKCJqc2FjdGlvbiIpKXthPWEuc3BsaXQoIjsiKTtmb3IobGV0IGsgb2YgYSkhXy5qYShrKSYmKGE9Xy5kc2EoaywiOiIsMSkucG9wKCkpJiYoYT1hLnRyaW0oKSxhLmluY2x1ZGVzKCIuIil8fF8uQXJhKGgsITApIT09ZHx8Zy5hZGQoYSkpfWY9ImJyb2tlbi4iO2ZvcihsZXQgaCBvZiBnKWYrPWAke2h9YH1yZXR1cm5gYWN0aW9ueGlkLiR7ZX0udHlwZS4ke2J9LiR7Y30uJHtmfS5gfTsKWXJhPWZ1bmN0aW9uKGEsYixjLGQpe2lmKCEoTWF0aC5yYW5kb20oKT4uMDEpKXtiPWAke2J9LiR7Y31gO2M9Xy5WcmEoYik7YT1lc2EoYSxiLFN0cmluZyhjKSk7Yj1uZXcgTWFwO2lmKE1hdGgucmFuZG9tKCk+LjEpZm9yKGxldCBlIG9mIF8uWHJhLmtleXMoKSl7bGV0IGY9Xy5WcmEoZSksZz1kb2N1bWVudC5ib2R5LnF1ZXJ5U2VsZWN0b3JBbGwoYFtqc2FjdGlvbio9IiR7Zn0iXWApO2cubGVuZ3RoPT09MCYmKGM9YG51LnR5cGUuJHtlfS4ke2Z9LmAsYi5zZXQoYywoYi5nZXQoYyl8fDApKzEpKTtmb3IobGV0IGggb2YgZyljPSJnLiIrZXNhKGgsZSxTdHJpbmcoZikpLGIuc2V0KGMsKGIuZ2V0KGMpfHwwKSsxKX1mb3IobGV0IFtlLGZdb2YgYi5lbnRyaWVzKCkpYSs9YCR7ZX0uJHtmfS5gO18uY2goKS5HYygiY2FkIixgbG9nc2NvcGUuJHtnb29nbGUuZXJkLmJ2fS4ke2R9LiR7YX1gKS5sb2coKX19OwpfLmZzYT1mdW5jdGlvbihhKXt2YXIgYj1hLmN0LGM9YS52ZWQ7YT1hLnNyYzsoY3x8YSkmJl8uUGUoYixjP2AmdmVkPSR7Y31gOiIiLGEpfTtfLmdzYT1mdW5jdGlvbihhKXt2YXIgYj1hLnVybDsoYT1hLnZlZHx8IiIpJiYoYj1fLnBrYShiLHt2ZWQ6YX0pKTtfLmNmKGIpfTsKXy5oc2E9ZnVuY3Rpb24oKXtfLldnKGRvY3VtZW50LmJvZHksInhqaFRJZiIsYT0+e2E9YS50YXJnZXRFbGVtZW50LmVsKCk7YT1fLmpnKGEpO18uZnNhKGEpO18uRmcoKX0pO18uV2coZG9jdW1lbnQuYm9keSwiTzJ2eXNlIixhPT57YT1hLnRhcmdldEVsZW1lbnQuZWwoKTtfLmdzYShfLmpnKGEpKX0pO18uV2coZG9jdW1lbnQuYm9keSwiSVZLVGZlIixhPT57YT1hLnRhcmdldEVsZW1lbnQuZWwoKTtfLmZzYShfLmpnKGEpKX0pO18uV2coZG9jdW1lbnQuYm9keSwiRXo3Vk1jIixhPT57YT1hLnRhcmdldEVsZW1lbnQuZWwoKTthPV8uamcoYSk7dmFyIGI9YS51cmwsYz1hLnZlZHx8IiI7YyYmKGI9Xy5wa2EoYix7dmVkOmN9KSxfLmZzYShhKSk7Xy5jZihiKX0pfTtfLmpzYT1mdW5jdGlvbigpe2dvb2dsZS5jcj1pc2EoKTtyZXR1cm4gZ29vZ2xlLmNyfTsKbHNhPWZ1bmN0aW9uKCl7dmFyIGE9bmV3IFNldCxiPXdpbmRvdy5fRl9qc1VybDtpZihiKXRyeXtfLmtzYShfLlNlKGIpKS5mb3JFYWNoKGM9PnthLmFkZChjKX0pfWNhdGNoKGMpe18uVmUoRXJyb3IoIm9jIikpfWdvb2dsZSYmZ29vZ2xlLnhqcyYmZ29vZ2xlLnhqcy5leGNtJiZnb29nbGUueGpzLmV4Y20uZm9yRWFjaChjPT57YS5hZGQoYyl9KTtyZXR1cm4gYX07Xy5uc2E9ZnVuY3Rpb24oYSl7cmV0dXJuIGE/Xy5UYShiPT57dHJ5e2lmKGIgaW5zdGFuY2VvZiBhKXJldHVybiEwO2xldCBjLGQsZT1iPT1udWxsP3ZvaWQgMDooYz1iLm93bmVyRG9jdW1lbnQpPT1udWxsP3ZvaWQgMDooZD1jLmRlZmF1bHRWaWV3KT09bnVsbD92b2lkIDA6ZFthLm5hbWVdO3JldHVybiBtc2EoZSkmJmIgaW5zdGFuY2VvZiBlfWNhdGNoKGMpe3JldHVybiExfX0pOl8uVGEoKCk9PiExKX07Cl8ucHNhPWZ1bmN0aW9uKGEpe3ZhciBiLGM7cmV0dXJuKGM9KGI9Z29vZ2xlKS5ja3RvY3J8fChiLmNrdG9jcj17fSkpW2FdfHwoY1thXT1uZXcgb3NhKX07Xy5xc2E9ZnVuY3Rpb24oYSl7YT1fLnFjKGEpLnRvU3RyaW5nKCk7dmFyIGI9bmV3IF8uZWg7Xy5maChiLDIsYSk7cmV0dXJuIGJ9O18ucnNhPWZ1bmN0aW9uKGEpe2lmKCFhKXJldHVybiBudWxsO2E9Xy5naChhLDIpO3JldHVybiBhPT09bnVsbHx8YT09PXZvaWQgMD9udWxsOl8ueShhKX07Xy5paD1mdW5jdGlvbihhKXthPV8uQmMoYSk7dmFyIGI9bmV3IF8uaGg7Xy5maChiLDMsYSk7cmV0dXJuIGJ9O18uamg9ZnVuY3Rpb24oYSl7aWYoIWEpcmV0dXJuIG51bGw7YT1fLmdoKGEsMyk7cmV0dXJuIGE9PT1udWxsfHxhPT09dm9pZCAwP251bGw6Xy5BYyhhKX07Xy5zc2E9ZnVuY3Rpb24oYSl7aWYoIWEpcmV0dXJuIG51bGw7YT1fLmdoKGEsNik7cmV0dXJuIGE9PT1udWxsfHxhPT09dm9pZCAwP251bGw6Xy5BaWEoYSl9OwpfLnRzYT1mdW5jdGlvbihhKXtpZighYSlyZXR1cm4gbnVsbDthPV8uZ2goYSw3KTtyZXR1cm4gYT09PW51bGx8fGE9PT12b2lkIDA/bnVsbDpfLmppYShhKX07Xy51c2E9ZnVuY3Rpb24oYSl7YT1fLnpjKGEpLnRvU3RyaW5nKCk7dmFyIGI9bmV3IF8ua2g7Xy5maChiLDQsYSk7cmV0dXJuIGJ9O18ubGg9ZnVuY3Rpb24oYSl7aWYoIWEpcmV0dXJuIG51bGw7YT1fLmdoKGEsNCk7cmV0dXJuIGE9PT1udWxsfHxhPT09dm9pZCAwP251bGw6Xy54YyhhKX07CkFzYT1mdW5jdGlvbigpe18udnNhKCJfRl9pbnN0YWxsQ3NzIixhPT57dmFyIGI9ZG9jdW1lbnQuc3R5bGVTaGVldHMubGVuZ3RoLGM9Xy5vZSgpLmdldEVsZW1lbnRzQnlUYWdOYW1lKCJIRUFEIilbMF0sZD1fLm9lKCkuY3JlYXRlRWxlbWVudCgiU1RZTEUiKSxlPV8uR2phKGRvY3VtZW50KTtlJiZkLnNldEF0dHJpYnV0ZSgibm9uY2UiLGUpO2Quc2V0QXR0cmlidXRlKCJkYXRhLWxhdGUtY3NzIiwiIik7KGU9KDAsXy5OYS5icGEpKCkpJiZjLmFwcGVuZENoaWxkKGQpO2E9ZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoYSk7ZC5hcHBlbmRDaGlsZChhKTtlfHxjLmFwcGVuZENoaWxkKGQpO2RvY3VtZW50LnN0eWxlU2hlZXRzLmxlbmd0aDw9YiYmXy5WZShFcnJvcigicWMiKSk7d3NhKGQpfSk7Xy52c2EoIl9GX2luc3RhbGxDc3NQcm90byIsYT0+e3ZhciBiPXhzYShhKTthPW51bGw7dHJ5e2xldCBkPWRvY3VtZW50LmN1cnJlbnRTY3JpcHQ7aWYoZCYmZC5zcmMpe3ZhciBjPV8uU2UoZC5zcmMpOwphPV8uVGUoYywiY2siKX19Y2F0Y2goZCl7Xy5WZShFcnJvcigicGNgIitkKSx7bGV2ZWw6Mn0pfWM9Xy5taChiLHlzYSwxLF8ub2goKSk7enNhKGMsYSl9KX07Q3NhPWZ1bmN0aW9uKGEsYixjKXt2YXIgZD1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJzdHlsZSIpO18uTmlhKGQsXy5uaWEoYS5tYXAoQnNhKSkpO2Quc2V0QXR0cmlidXRlKCJkYXRhLW1zcy1zdHlsZXMiLGIuam9pbigiLCIpKTtjJiZkLnNldEF0dHJpYnV0ZSgiZGF0YS1jayIsYyk7Xy5vZSgpLmdldEVsZW1lbnRzQnlUYWdOYW1lKCJIRUFEIilbMF0uYXBwZW5kQ2hpbGQoZCl9Owp6c2E9ZnVuY3Rpb24oYSxiKXtEc2EoYSk7aWYoYil7bGV0IGU9Xy5wc2EoYik7dmFyIGM9YS5maWx0ZXIoZj0+IWUuaGFzKF8udChmLDEpKSk7YT1jLm1hcChmPT5fLnQoZiwxKSk7YS5sZW5ndGghPTAmJihDc2EoYyxhLGIpLGUuYWRkQWxsKGEpKX1lbHNle18uVmUoRXJyb3IoInJjIikse2xldmVsOjJ9KTt2YXIgZD1fLmpzYSgpO2I9YS5maWx0ZXIoZT0+IWQuaGFzKF8udChlLDEpKSk7YT1iLm1hcChlPT5fLnQoZSwxKSk7aWYoYS5sZW5ndGghPTApe0NzYShiLGEsbnVsbCk7Zm9yKGMgb2YgYSlkLmFkZChjKX19fTt3c2E9ZnVuY3Rpb24oYSl7dmFyIGI9Xy54YShkb2N1bWVudC5zdHlsZVNoZWV0cyxjPT5jLm93bmVyTm9kZT09PWEpO2I9YiYmYi5jc3NSdWxlcztiPT09bnVsbHx8Yi5sZW5ndGg9PT0wP18uVmUoRXJyb3IoInNjIikpOihiPWJbYi5sZW5ndGgtMV0sYiBpbnN0YW5jZW9mIENTU1N0eWxlUnVsZSYmYi5zZWxlY3RvclRleHQ9PT0ic2VudGluZWwifHxfLlZlKEVycm9yKCJ0YyIpKSl9OwpEc2E9ZnVuY3Rpb24oYSl7Zm9yKGxldCBiPTA7YjxhLmxlbmd0aDtiKyspXy5waChhW2JdLDEpfHxfLlZlKEVycm9yKCJ1Y2AiK2IpKX07QnNhPWZ1bmN0aW9uKGEpe3ZhciBiPV8udHNhKF8ucShhLF8uRXNhLDUpKTtyZXR1cm4gYj09PW51bGw/KF8uVmUoRXJyb3IoInZjYCIrXy50KGEsMSkpKSwoMCxfLnJjKWBgKTpifTtfLktzYT1mdW5jdGlvbihhLGIpe2ZvcihsZXQgYyBpbiBiKV8uRnNhW2NdLnB1c2goYSk7R3NhW2FdPWI7Xy5Ic2EmJklzYS5wdXNoKCgpPT57Xy5Kc2EoYSl9KX07THNhPWZ1bmN0aW9uKCl7Zm9yKGxldCBhIG9mIElzYSlhKCk7SXNhPVtdfTtfLk1zYT1mdW5jdGlvbihhLGIpe2I9Ynx8e307Yi5fZT0oKT0+e307Xy5Lc2EoYSxiKX07Xy5yaD1mdW5jdGlvbihhKXt2YXIgYj1PaGEuZ2V0KGEpO3JldHVybiBiP2I6KGI9bmV3IF8uaWMoYSxhLnNwbGl0KCIjIilbMF0sW10pLFFoYShhLGIpLGIpfTsKUHNhPWZ1bmN0aW9uKGEsYj0hMCl7aWYoIU5zYS5oYXMoYSkpe05zYS5hZGQoYSk7aWYoYS5ub2RlVHlwZT09PTEpe3ZhciBjPWEuZ2V0QXR0cmlidXRlKCJqc2VkZ2UiKTtpZihjKXtsZXQgZD1hLmdldEF0dHJpYnV0ZSgianNtb2RlbCIpLGU9Xy5Pc2EoZCk7Yz1fLk9zYShjKTtmb3IobGV0IGY9MDtmPGUubGVuZ3RoO2YrKyl7bGV0IGc9Y1tmXS5zcGxpdCgiLCIpO2ZvcihsZXQgaD0wO2g8Zy5sZW5ndGg7aCsrKVZoYShrPT57ay5FT2EoZ1toXSxlW2ZdKX0pfX19YS5wYXJlbnROb2RlJiZiJiZQc2EoYS5wYXJlbnROb2RlKX19OwpTc2E9ZnVuY3Rpb24oYSl7dmFyIGI9bmV3IE1hcChbW251bGwsMF1dKSxjPW5ldyBNYXAsZD1uZXcgTWFwLGU9ZG9jdW1lbnQuYm9keS5xdWVyeVNlbGVjdG9yQWxsKCJbanNjb250cm9sbGVyXSwgW2pzbW9kZWxdIik7Zm9yKHZhciBmIG9mIGUpe2U9Zi5nZXRBdHRyaWJ1dGUoImpzY29udHJvbGxlciIpO3ZhciBnPV8uT3NhKGYuZ2V0QXR0cmlidXRlKCJqc21vZGVsIil8fCIiKSxoPXZvaWQgMDtmb3IobGV0IGsgb2ZbLi4uZyxlXSl7aWYoIWspY29udGludWU7ZT1rLnNwbGl0KCIjIilbMF07aWYoYShlKSljb250aW51ZTtRc2EmJihSc2EmJmQuaGFzKGUpfHxkLnNldChlLGYpKTtSc2EmJmghPT12b2lkIDB8fChoPWYuY2xvc2VzdCgiLk1qall1ZCIpKTtnPWIuZ2V0KGgpO2c9PT12b2lkIDAmJihnPWIuc2l6ZSxiLnNldChoLGcpKTtjLmdldChlKT09PXZvaWQgMCYmYy5zZXQoZSxnKX19aWYoUXNhJiYoYT1kb2N1bWVudC5nZXRFbGVtZW50QnlJZChRc2EpKSlmb3IobGV0IFtrLG1db2YgYyl7Zj0KaztpZihtIT09MCljb250aW51ZTsoaD1kLmdldChmKSkmJmEuY29tcGFyZURvY3VtZW50UG9zaXRpb24oaCk9PT1Ob2RlLkRPQ1VNRU5UX1BPU0lUSU9OX0ZPTExPV0lORyYmYy5zZXQoZixiLnNpemUpfXJldHVybiBjfTtVc2E9ZnVuY3Rpb24oYSxiLGMpe2I9bmV3IE1hcChiKTtmb3IobGV0IGU9YS5sZW5ndGgtMTtlPj0wO2UtLSl7dmFyIGQ9YVtlXTtsZXQgZj1iLmdldChkKTtmPT09dm9pZCAwJiYoZj0wLGIuc2V0KGQsZikpO2Q9YyhkKTtmb3IobGV0IGcgb2YgZClkPWIuZ2V0KGcpLGQ9PT12b2lkIDA/Yi5zZXQoZyxmKTpkPmYmJmIuc2V0KGcsZil9Yz1bXTtmb3IobGV0IGUgb2YgYSlhPWIuZ2V0KGUpLChjW2FdfHwoY1thXT1bXSkpLnB1c2goZSk7cmV0dXJuIGMuZmlsdGVyKFRzYSl9O1RzYT1mdW5jdGlvbihhKXtyZXR1cm4gYSE9PXZvaWQgMCYmYS5sZW5ndGg+MH07ClZzYT1mdW5jdGlvbihhKXtmb3IodmFyIGIgb2ZbImQiLCJjc2kiXSl7bGV0IGM9YS5pbmRleE9mKGIpO2MhPT0tMSYmKGEuc3BsaWNlKGMsMSksYS5wdXNoKGIpKX1iPWEuaW5kZXhPZigiY3NpZXMiKTtiPjAmJihhLnNwbGljZShiLDEpLGEudW5zaGlmdCgiY3NpZXMiKSl9O1lzYT1mdW5jdGlvbihhKXtpZihhLmxlbmd0aCE9PTApe2ZvcihsZXQgYiBvZiBhKVdzYS5wdXNoKGIpO2ZvcihsZXQgYiBvZiBYc2EpYihhKX19O2F0YT1mdW5jdGlvbigpe1pzYXx8KFpzYT1uZXcgTWVzc2FnZUNoYW5uZWwsWnNhLnBvcnQxLm9ubWVzc2FnZT0oKT0+e3ZhciBhPSRzYS5zaGlmdCgpO2EmJmEoKX0pO1pzYS5wb3J0Mi5wb3N0TWVzc2FnZSh2b2lkIDApfTsKXy5jdGE9ZnVuY3Rpb24oYSxiKXtpZihfLmJ0YS5oYXMoYSkpe2xldCBjPWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoInNjcmlwdFtzcmNdIiksZD0iIjtmb3IobGV0IGUgb2YgYylkKz1lLmdldEF0dHJpYnV0ZSgic3JjIik7Xy5WZShFcnJvcigieGNgIithKSx7RGY6e3NjcmlwdHM6ZH0sbGV2ZWw6MH0pfV8uYnRhLnNldChhLGIpfTtkdGE9ZnVuY3Rpb24oYSl7cmV0dXJue2V2ZW50VHlwZTphLmV2ZW50VHlwZSxldmVudDphLmV2ZW50LHRhcmdldEVsZW1lbnQ6YS50YXJnZXRFbGVtZW50LGVpYzphLmVpYyxlaWE6YS5laWEsdGltZVN0YW1wOmEudGltZVN0YW1wLGVpcnA6YS5laXJwLGVpYWNrOmEuZWlhY2ssZWlyOmEuZWlyfX07Xy5mdGE9ZnVuY3Rpb24oKXt2YXIgYT1kb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdbanNuYW1lPSJndWVzdF9jb250YWluZXJfIl06bm90KFtkYXRhLW9qc2FjXSksIFtqc25hbWU9ImNvRlN4ZSJdOm5vdChbZGF0YS1vanNhY10pJyk7Zm9yKGxldCBiIG9mIGEpZXRhKGIpfTsKXy5odGE9ZnVuY3Rpb24oYSl7cmV0dXJuKGE9Xy5zcmEoYSxiPT5fLmd0YS5oYXMoYiksITAsITApKT9fLmd0YS5nZXQoYSk6bnVsbH07ZXRhPWZ1bmN0aW9uKGEsYj0hMSl7dmFyIGM9Xy5ndGEuaGFzKGEpO2lmKGJ8fCFjKWI9e3I6YSxlcTpbXX0sXy5ndGEuc2V0KGEsYiksaXRhJiYhYyYmaXRhKGIpfTtsdGE9ZnVuY3Rpb24oYSxiLGMpe3ZhciBkPWp0YTtrdGEuZD1hO2t0YS5kcz1iO2t0YS5hdHRuPWQ7a3RhLmRpc3BhdGNoQ3VzdG9tRXZlbnQ9Y307bXRhPWZ1bmN0aW9uKGEsYil7aWYoYi5lcSliLmVxLnB1c2goYSk7ZWxzZXtsZXQgYzsoYz1iLm0pPT1udWxsfHxjLmRpc3BhdGNoRXZlbnRJbmZvKGEpfX07Cl8ubnRhPWZ1bmN0aW9uKGEpe18uZnRhKCk7aWYoa3RhLmQpe2lmKGEpe2xldCBiOyhiPWt0YS5hdHRuKT09bnVsbHx8Yi5jYWxsKGt0YSl9a3RhLmQoKX1mb3IobGV0IGIgb2YgXy5ndGEudmFsdWVzKCkpe2xldCBjLGQ7KGM9Yi5tKT09bnVsbHx8KGQ9Yy5kaXJ0eSk9PW51bGx8fGQuY2FsbChjKX19O18ub3RhPWZ1bmN0aW9uKGEsYil7Xy5mdGEoKTt2YXIgYz1fLmh0YShhKTtpZihjKXtsZXQgZTsoZT1jLm0pPT1udWxsfHxlLmRpcnR5U3VidHJlZShhLGIpfWVsc2V7dmFyIGQ7KGQ9a3RhLmRzKT09bnVsbHx8ZC5jYWxsKGt0YSxhLGIpO2ZvcihsZXQgZSBvZiBfLmd0YS52YWx1ZXMoKSlpZihhLmNvbnRhaW5zKGUucikpe2xldCBmLGc7KGY9ZS5tKT09bnVsbHx8KGc9Zi5kaXJ0eVN1YnRyZWUpPT1udWxsfHxnLmNhbGwoZixhLGIpfX19O3B0YT1mdW5jdGlvbihhKXtpdGE9YTtmb3IobGV0IGIgb2YgXy5ndGEudmFsdWVzKCkpYShiKX07Cl8uc2g9ZnVuY3Rpb24oYSxiKXthPV8ucXRhKGEpO3JldHVybiBfLnkoXy5namEoYSxiKSl9O18ucnRhPWZ1bmN0aW9uKGEpe2E9Xy5xdGEoYSk7cmV0dXJuIF8uQWlhKGEpfTtfLnN0YT1mdW5jdGlvbihhKXthPV8ucXRhKGEpO3JldHVybiBfLnhjKGEpfTtfLnF0YT1mdW5jdGlvbihhKXtyZXR1cm4gYT09PW51bGw/Im51bGwiOmE9PT12b2lkIDA/InVuZGVmaW5lZCI6YX07dnRhPWZ1bmN0aW9uKGE9ITEpe3JldHVybiBhfHx0dGF8fCF1dGE/ImxvdyI6ImhpZ2gifTt3dGE9ZnVuY3Rpb24oYSl7aWYoIXdrYShhKSlyZXR1cm4iIjt2YXIgYj1fLlNlKGEpO3JldHVybiBhLnJlcGxhY2UoYi53YSwiL3hqcy9fL2pzLyIpfTsKeHRhPWZ1bmN0aW9uKCl7aWYoIWdvb2dsZS54anN1c3x8IWdvb2dsZS5wcylyZXR1cm4gbnVsbDt2YXIgYT1bXSxiPXt9LGM9bmV3IFNldChbLi4uZ29vZ2xlLnBzLm1hcChkPT53dGEoZCkpLmZpbHRlcihkPT4hIWQpXSk7Zm9yKGxldCBkIG9mIGdvb2dsZS54anN1cyl7aWYoIWMuaGFzKHd0YShkKSkpY29udGludWU7bGV0IGU9bmV3IFByb21pc2UoKGYsZyk9PntiW2RdPXtyZXNvbHZlOigpPT57ZigpfSxyZWplY3Q6KCk9PntnKEVycm9yKCJ5Y2AiK3d0YShkKSkpfX19KTthLnB1c2goZSl9Z29vZ2xlLmFybT1iO3JldHVybiBQcm9taXNlLmFsbChhKX07eXRhPWZ1bmN0aW9uKGEpe2lmKHdpbmRvdy5wZXJmb3JtYW5jZSYmd2luZG93LnBlcmZvcm1hbmNlLmdldEVudHJpZXNCeVR5cGUpe3ZhciBiPXdpbmRvdy5wZXJmb3JtYW5jZS5nZXRFbnRyaWVzQnlUeXBlKCJyZXNvdXJjZSIpLmZpbHRlcihjPT5jLm5hbWUuZW5kc1dpdGgoYSkpO2lmKGIubGVuZ3RoPT09MSlyZXR1cm4gYlswXX19Owp6dGE9ZnVuY3Rpb24oYSxiPSIiKXt2YXIgYz1bXTthPXl0YShhKTtpZighYSlyZXR1cm4gYztiPWI/YisiXyI6YjthLmRlY29kZWRCb2R5U2l6ZSE9PXZvaWQgMCYmYy5wdXNoKGAke2J9ZGJzPSR7YS5kZWNvZGVkQm9keVNpemV9YCk7YS5lbmNvZGVkQm9keVNpemUhPT12b2lkIDAmJmMucHVzaChgJHtifWVicz0ke2EuZW5jb2RlZEJvZHlTaXplfWApO2EudHJhbnNmZXJTaXplIT09dm9pZCAwJiZjLnB1c2goYCR7Yn10cz0ke2EudHJhbnNmZXJTaXplfWApO2Eud29ya2VyU3RhcnQhPT12b2lkIDAmJmMucHVzaChgJHtifXdzPSR7YS53b3JrZXJTdGFydH1gKTthLnN0YXJ0VGltZSE9PXZvaWQgMCYmYy5wdXNoKGAke2J9bHM9JHtNYXRoLnJvdW5kKGEuc3RhcnRUaW1lKX1gKTthLnJlc3BvbnNlRW5kIT09dm9pZCAwJiZjLnB1c2goYCR7Yn1sZT0ke01hdGgucm91bmQoYS5yZXNwb25zZUVuZCl9YCk7cmV0dXJuIGN9OwpCdGE9ZnVuY3Rpb24oYSxiKXt2YXIgYz1BdGEsZD1bXTtmb3IobGV0IGU9MDtlPGEubGVuZ3RoO2UrPWMpZC5wdXNoKGEuc2xpY2UoZSxlK2MpKTthPWQubWFwKGIpO3JldHVybiBQcm9taXNlLmFsbChhKX07Q3RhPWZ1bmN0aW9uKGEpe3R5cGVvZiBnb29nbGUudGljayE9PSJmdW5jdGlvbiI/Xy5WZShFcnJvcigiRWMiKSk6Z29vZ2xlLnRpY2soImxvYWQiLGEpfTsKXy5LdGE9ZnVuY3Rpb24oYSxiKXt2YXIgYz0oYj1EdGEoKS5nZXQoYikpP2IuZ2V0TmFtZSgpOiJ1bmtub3duIjthLnN0b3AoKS50aGVuKGQ9Pnt2YXIgZT1uZXcgRXRhO2Zvcih2YXIgZiBvZiBkLmZyYW1lcyl7bGV0IGc9KG5ldyBGdGEpLkVlKGYubmFtZSk7Zi5yZXNvdXJjZUlkIT09dm9pZCAwJiZfLnRoKGcsMixmLnJlc291cmNlSWQpO2YubGluZSE9PXZvaWQgMCYmXy50aChnLDMsZi5saW5lKTtmLmNvbHVtbiE9PXZvaWQgMCYmXy50aChnLDQsZi5jb2x1bW4pO18udWgoZSwxLEZ0YSxnKX1fLkd0YShlLDIsZC5yZXNvdXJjZXMpO2ZvcihsZXQgZyBvZiBkLnNhbXBsZXMpZj1uZXcgSHRhLGY9Xy53aChmLDIsZy50aW1lc3RhbXApLGcuc3RhY2tJZCE9PXZvaWQgMCYmXy50aChmLDEsZy5zdGFja0lkKSxfLnVoKGUsMyxIdGEsZik7Zm9yKGxldCBnIG9mIGQuc3RhY2tzKWQ9bmV3IEl0YSxkPV8udGgoZCwxLGcuZnJhbWVJZCksZy5wYXJlbnRJZCE9PXZvaWQgMCYmXy50aChkLDIsCmcucGFyZW50SWQpLF8udWgoZSw0LEl0YSxkKTtlPV8uT2EoSnRhKGUpKTtfLmNoKCkuR2MoImN0Iiwic3AiKS5HYygicHQiLGUpLkdjKCJuIixjKS5HYygic21vIixnb29nbGUuc21vKS5sb2coKX0pLmNhdGNoKCgpPT57fSl9O18uTXRhPWZ1bmN0aW9uKGEpe3JldHVybigwLF8uTHRhKSgpLldDKGEpLmlzTG9hZGVkKCl9O18uTnRhPWZ1bmN0aW9uKGEpe3JldHVybigwLF8uTHRhKSgpLndhLmhhcyhhKX07ClR0YT1mdW5jdGlvbihhKXtpZihhLmxlbmd0aCl7T3RhKCkubG9nKCJNSVNTSU5HX01PRFVMRV9JTl9NT0RVTEVTRVRfQ09VTlQiKTthPWEubWFwKFB0YSk7dmFyIGI9UXRhKFJ0YSgpLkJhKSxjPTAsZD17fTtmb3IobGV0IGYgb2YgYSl7aWYoIWZ8fCFTdGEuaW5jbHVkZXMoZi50b1N0cmluZygpKSljb250aW51ZTtjPTI7dmFyIGU9ZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbChgW2pzY29udHJvbGxlcn49IiR7Zn0iXSxbanNtb2RlbH49IiR7Zn0iXWApO2UubGVuZ3RoPjAmJihlPUFycmF5LmZyb20oZSkubWFwKChnLGgpPT57dmFyIGs9W107Zm9yKHZhciBtIG9mIGcuZ2V0QXR0cmlidXRlTmFtZXMoKSltLnN0YXJ0c1dpdGgoImpzIikmJmsucHVzaChgJHttfT0iJHtnLmdldEF0dHJpYnV0ZShtKX0iYCk7bT0ibm9uZSI7Zy5wYXJlbnRFbGVtZW50JiYobT1gJHtnLnBhcmVudEVsZW1lbnQudGFnTmFtZS50b0xvd2VyQ2FzZSgpfSR7Zy5wYXJlbnRFbGVtZW50LmNsYXNzTmFtZT8iLiIrCmcucGFyZW50RWxlbWVudC5jbGFzc05hbWU6IiJ9YCk7cmV0dXJuYFske2h9XSB0YWc9JHtnLnRhZ05hbWUudG9Mb3dlckNhc2UoKX0gY2xhc3M9IiR7Zy5jbGFzc05hbWV9IiBhdHRycz17JHtrLmpvaW4oIiwgIil9fSBwYXJlbnQ9eyR7bX19YH0pLGRbYGRvbV9jb250ZXh0XyR7Zn1gXT1lLmpvaW4oIjsgIikpO2RbYG1vZHVsZV8ke2Z9YF09Zj9TdHJpbmcoZi5rYSk6InVua25vd24ifV8uVmUoRXJyb3IoIkZjYCIrYS5qb2luKCIsICIpKyJgIisoYj9iOiJ1bmtub3duIikpLHtEZjpkLGxldmVsOmMsS21hOiEwfSl9fTtQdGE9ZnVuY3Rpb24oYSl7cmV0dXJuIFV0YS5xRWMoYSl9OwpWdGE9ZnVuY3Rpb24oKXtnb29nbGUuanNsbT03O2lmKGdvb2dsZS5zeSl7Zm9yKGxldCBhIGluIGdvb2dsZS5zeSlpZihnb29nbGUuc3kuaGFzT3duUHJvcGVydHkoYSkpe2xldCBbYixjXT1nb29nbGUuc3lbYV07dHJ5e2MuYXBwbHkoYil9Y2F0Y2goZCl7Xy5WZShkKX19Z29vZ2xlLnN5PXt9O2dvb2dsZS5qc2xtPTg7Xy52c2EoImdvb2dsZS5zeCIsKGEsYik9Pnt0cnl7Yi5hcHBseShhKX1jYXRjaChjKXtfLlZlKGMpfX0pfWVsc2UgZ29vZ2xlLmpzbG09OH07WXRhPWZ1bmN0aW9uKGEsYixjKXtXdGEmJiFYdGEmJihiJiYoZ29vZ2xlLmMmJkN0YSgieGpzMmxzIiksYS50aGVuKCgpPT57Z29vZ2xlLmMmJihDdGEoInhqczJlZTEiKSxDdGEoInZpdCIpKX0pKSxjJiZhLnRoZW4oKCk9Pntnb29nbGUuYyYmKEN0YSgieGpzIiksXy5TbmEoKSl9KSl9OwpadGE9ZnVuY3Rpb24oYSxiKXshWHRhJiZiJiZhLnRoZW4oKCk9Pntnb29nbGUuc2VwJiYoXy5LdGEoZ29vZ2xlLnNlcCwyKSxnb29nbGUuc2VwPXZvaWQgMCl9KX07JHRhPWZ1bmN0aW9uKGEpe3ZhciBiPVtdLGM9bmV3IFNldDtmb3IobGV0IGQgb2YgYSlfLk50YShkKT9iLnB1c2goZCk6Yy5hZGQoZCk7cmV0dXJue2lkczpiLGxTYzpbLi4uY119fTsKXy5jdWE9ZnVuY3Rpb24oYSxiLGMsZCxlKXt2YXIgZj0oMCxfLkx0YSkoKSx7aWRzOmcsbFNjOmh9PSR0YShhKSxrPWcuc29tZShtPT4hZi5XQyhtKS5pc0xvYWRlZCgpKTtUdGEoaCk7az8oIVh0YSYmYiYmKGs9V3RhP18uTnRhKCJjc2llcyIpPyJjc2llcyI6bnVsbDpudWxsKSYmIWcuaW5jbHVkZXMoaykmJmcudW5zaGlmdChrKSxrPWF1YShmLGcpLGs9UHJvbWlzZS5hbGwoT2JqZWN0LnZhbHVlcyhrKSksay50aGVuKExzYSksWXRhKGssYixjKSxadGEoayxjKSxlJiZrLnRoZW4oKCk9PntlKGEpfSksWHRhfHwoYnVhPWspLGMmJihkJiZrLnRoZW4oVnRhKSxYdGE9ITApKTooZSYmZShhKSxjJiYoWXRhKGJ1YSwhMSwhMCksWnRhKGJ1YSwhMCksZCYmYnVhLnRoZW4oVnRhKSxYdGE9ITApKX07Xy5kdWE9ZnVuY3Rpb24oYSxiPSgpPT57fSl7Xy5jdWEoYSwhMCwhMCwhMSxiKX07Xy5ldWE9ZnVuY3Rpb24oYSl7Zm9yKDthOyl7aWYoYS5uZXh0U2libGluZylyZXR1cm4hMDthPWEucGFyZW50RWxlbWVudH1yZXR1cm4hMX07CmZ1YT1mdW5jdGlvbihhLGIsYyxkLGUpe2I9Yi5xdWVyeVNlbGVjdG9yQWxsKGQ9PT12b2lkIDA/YFske2N9XWA6YFske2N9PSIke2R9Il1gKTtmb3IobGV0IGYgb2YgYilfLkFyYShmLCExKT09PWEmJmUoZil9O18ueGg9ZnVuY3Rpb24oYSxiLGMpe3ZhciBkPVtdO2Z1YShhLGIsImpzbmFtZSIsYyxlPT57ZC5wdXNoKGUpfSk7cmV0dXJuIGR9OwpfLmd1YT1mdW5jdGlvbihhLGIsYyl7dmFyIGQ9Xy5BcmEoYSwhMCksZT1uZXcgU2V0LGY9bT0+ZS5hZGQobSk7ZnVhKGQsYSxiLGMsZik7aWYoYT09PWQpe3ZhciBnPV8uTmcuZ2V0KGQpO2lmKGcpe2Zvcih2YXIgaD0wO2g8Zy5sZW5ndGg7aCsrKXt2YXIgaz1nW2hdOyhjPT09dm9pZCAwP2suaGFzQXR0cmlidXRlKGIpOmsuZ2V0QXR0cmlidXRlKGIpPT09YykmJmUuYWRkKGspfWZvcihoPTA7aDxnLmxlbmd0aDtoKyspZnVhKGQsZ1toXSxiLGMsZil9fWlmKGEuaGFzQXR0cmlidXRlKCJqc3NoYWRvdyIpfHxhLnF1ZXJ5U2VsZWN0b3IoIltqc3NoYWRvd10iKSlmb3IoYT1hLnF1ZXJ5U2VsZWN0b3JBbGwoIltqc2NvbnRyb2xsZXJdIiksZz0wO2c8YS5sZW5ndGg7ZysrKWlmKGs9YVtnXSwoaD1fLk5nLmdldChrKSkmJl8uQXJhKGssITEpPT09ZClmb3Ioaz0wO2s8aC5sZW5ndGg7aysrKWZ1YShkLGhba10sYixjLGYpO3JldHVybiBBcnJheS5mcm9tKGUpfTsKaXVhPWZ1bmN0aW9uKGE9IiIpe3JldHVybmAke18uaHVhLm1hcChiPT5gJHthfSBbJHtifV1gKS5qb2luKCIsIil9LCR7YCR7YX0gW2pzYWN0aW9uKj0idHJpZ2dlci4iXWB9YH07anVhPWZ1bmN0aW9uKGEpe3ZhciBiPXRoaXMuZ2V0QXR0cmlidXRlKGEpO0VsZW1lbnQucHJvdG90eXBlLnNldEF0dHJpYnV0ZS5hcHBseSh0aGlzLGFyZ3VtZW50cyk7dmFyIGM9dGhpcy5nZXRBdHRyaWJ1dGUoYSk7Xy5YZyh0aGlzLCJkeVJjcGIiLHtuYW1lOmEsR3lhOmMsQUpjOmJ9LCExKX07a3VhPWZ1bmN0aW9uKGEpe3ZhciBiPXRoaXMuZ2V0QXR0cmlidXRlKGEpO0VsZW1lbnQucHJvdG90eXBlLnJlbW92ZUF0dHJpYnV0ZS5hcHBseSh0aGlzLGFyZ3VtZW50cyk7Xy5YZyh0aGlzLCJkeVJjcGIiLHtuYW1lOmEsR3lhOm51bGwsQUpjOmJ9LCExKX07Cmx1YT1mdW5jdGlvbigpe3JldHVybiEhKHdpbmRvdy5wZXJmb3JtYW5jZSYmd2luZG93LnBlcmZvcm1hbmNlLm1hcmsmJndpbmRvdy5wZXJmb3JtYW5jZS5tZWFzdXJlJiZ3aW5kb3cucGVyZm9ybWFuY2UuY2xlYXJNZWFzdXJlcyYmd2luZG93LnBlcmZvcm1hbmNlLmNsZWFyTWFya3MpfTtfLnB1YT1mdW5jdGlvbihhLGIsYyxkKXtiPV8ucmgoYi50b1N0cmluZygpKTt2YXIgZT13ZC5nZXRJbnN0YW5jZSgpLmthW2IudG9TdHJpbmcoKV0/Xy5uZihiKTp2b2lkIDA7Yz0oYT1fLm11YShhLGIsZSxkKSk/bnVhKGEuZWxlbWVudCxhLmpuLGMpOm5ldyBfLm91YShiKTtyZXR1cm4gYyBpbnN0YW5jZW9mIF8ub3VhP05mKGMpOmN9OwpfLm11YT1mdW5jdGlvbihhLGIsYyxkKXtmb3IodmFyIGU9YTtlOyl7YTp7dmFyIGY9Yjt2YXIgZz1jLGg9ZT09PWEsaz1kLG09ZS5nZXRBdHRyaWJ1dGUoImpzbW9kZWwiKTtpZihtKXttPV8uT3NhKG0pO2ZvcihsZXQgeD1tLmxlbmd0aC0xO3g+PTA7eC0tKXt2YXIgbj1fLnJoKG1beF0pLHA9dm9pZCAwO2lmKGcpe3A9bjtuPWY7dmFyIHI9ZztwPXAudG9TdHJpbmcoKT09PW4udG9TdHJpbmcoKT9jcGEod2QuZ2V0SW5zdGFuY2UoKSxuKTpxdWEocixwKT9wOnZvaWQgMH1lbHNlIG4udG9TdHJpbmcoKT09PWYudG9TdHJpbmcoKSYmKHA9bik7aWYocCl7aWYoaCYmayYmKG49Xy5PZi5nZXRJbnN0YW5jZSgpLlpIKGspKSYmbi50b1N0cmluZygpPT09cC50b1N0cmluZygpKWNvbnRpbnVlO2Y9cDticmVhayBhfX19Zj12b2lkIDB9aWYoZilyZXR1cm4gUHNhKGUpLHtlbGVtZW50OmUsam46Zn07ZT1xcmEoZSl9fTsKbnVhPWZ1bmN0aW9uKGEsYixjKXtpZighXy5ydWEoYSkpcmV0dXJuIE5mKG1vYShgTW9kZWwgPCR7Yn0+IGNhbmNlbGVkOiBlbGVtZW50IG5vdCBpbiBkb2N1bWVudCBiZWZvcmUgY29uc3RydWN0b3IgbG9hZGApKTt2YXIgZD1zdWEoYSxiKTtpZihkKXJldHVybiBkO2Q9Xy5Ub2EoXy5PZi5nZXRJbnN0YW5jZSgpLGIpO3ZhciB7cmVzb2x2ZTplLHJlamVjdDpmLGNhbmNlbDpnLHBlbmRpbmc6aH09dHVhKGEsYik7ZC5JeChrPT57dHJ5e2lmKCFfLnJ1YShhKSl7bGV0IG09YS5fX2pzbW9kZWw7bSYmZGVsZXRlIG1bYi50b1N0cmluZygpXTtnKCJub3QgaW4gZG9jdW1lbnQgYWZ0ZXIgbW9kdWxlIGxvYWQiKX1pZihfLnRvYShrKSl7aWYoIV8udXVhKXRocm93IEVycm9yKCJHYyIpOygwLF8udXVhKShrLGIsYSxjKS5JeChlLGYpfWVsc2V7bGV0IG09Xy52dWEoYSxrLGIsYyk7ZShtKX19Y2F0Y2gobSl7ZihtKX19LGYpO3d1YShfLnloKGEpLGEpO3JldHVybiBofTsKXy52dWE9ZnVuY3Rpb24oYSxiLGMsZCl7aWYoIV8ucnVhKGEpKXRocm93IEVycm9yKCJLY2AiK18ucWYoYykpO3ZhciBlO2E6aWYoZT14dWEoYSxjKSl7aWYoZS5wZW5kaW5nIGluc3RhbmNlb2YgXy53Zil7ZT1fLnl1YShlLnBlbmRpbmcpO2lmKGUuc3RhdGU9PT0wKXtlPXZvaWQgMDticmVhayBhfWlmKGUuc3RhdGU9PT0yKXRocm93IGUuZXJyb3I7dGhyb3cgRXJyb3IoIkxjYCIrYy50b1N0cmluZygpKTt9ZT1lLmluc3RhbmNlfWVsc2UgZT12b2lkIDA7aWYoZSlyZXR1cm4gZTtpZighXy56dWEpdGhyb3cgRXJyb3IoIkdjIik7Yj0oMCxfLnp1YSkoYixhLGQpO0F1YShhKVtjLnRvU3RyaW5nKCldPXtpbnN0YW5jZTpiLGpuOmMudG9TdHJpbmcoKSxjcWE6QnVhfTtyZXR1cm4gYn07c3VhPWZ1bmN0aW9uKGEsYil7aWYoYT14dWEoYSxiKSlyZXR1cm4gYS5pbnN0YW5jZT9fLlVmKGEuaW5zdGFuY2UpOmEucGVuZGluZ307Cnh1YT1mdW5jdGlvbihhLGIpe3ZhciBjOyhhPShjPWEuX19qc21vZGVsKT09bnVsbD92b2lkIDA6Y1tiLnRvU3RyaW5nKCldKSYmYSYmQ3VhKGEpO3JldHVybiBhfTtBdWE9ZnVuY3Rpb24oYSl7dmFyIGI9YS5fX2pzbW9kZWw7Ynx8KGI9e30sYS5fX2pzbW9kZWw9Yik7cmV0dXJuIGJ9O3R1YT1mdW5jdGlvbihhLGIpe3ZhciBjLGQsZT1uZXcgXy53ZigoZyxoKT0+e2M9ZztkPWh9KSxmPWc9PntnPW1vYShgTW9kZWwgPCR7Yn0+IGNhbmNlbGVkOiAke2d9YCk7ZChnKX07QXVhKGEpW2IudG9TdHJpbmcoKV09e3BlbmRpbmc6ZSxjYW5jZWw6ZixqbjpiLnRvU3RyaW5nKCksY3FhOkJ1YX07cmV0dXJue3Jlc29sdmU6YyxyZWplY3Q6ZCxjYW5jZWw6ZixwZW5kaW5nOmV9fTtfLkV1YT1mdW5jdGlvbihhKXt2YXIgYjtyZXR1cm4oKGI9YVtfLkR1YV0pIT1udWxsP2I6Xy5VZigpKS5tYXAoKCk9PmEpfTtfLkd1YT1mdW5jdGlvbihhLGIsYyl7cmV0dXJuIF8uemYoRnVhKGEsYixjKSl9OwpGdWE9ZnVuY3Rpb24oYSxiLGMpe3ZhciBkPWEgaW5zdGFuY2VvZiBfLmljP2E6Xy5PZi5nZXRJbnN0YW5jZSgpLlpIKGEpO3JldHVybiBfLlRvYShfLk9mLmdldEluc3RhbmNlKCksZCkuZmxhdE1hcChlPT57aWYoIWJ8fGIgaW5zdGFuY2VvZiBfLkh1YSl7bGV0IGY7Yj1uZXcgSXVhKGMsZSwoZj1iKSE9bnVsbD9mOnZvaWQgMCl9cmV0dXJuIF8uYXBhKGQsZSxiKX0pfTtKdWE9ZnVuY3Rpb24oYSl7cmV0dXJuIHR5cGVvZiBhPT09Im9iamVjdCI/YS5jdG9yPT09Xy56aD97anNuYW1lOmEuanNuYW1lfTphOntqc25hbWU6YX19O0t1YT1mdW5jdGlvbihhLGIpe3JldHVybiBuZXcgXy5TZyhjPT57dmFyIGQ9YS5IYihiKS5lbCgpO2lmKGQpYyhkKTtlbHNle2xldCBlPW5ldyBNdXRhdGlvbk9ic2VydmVyKCgpPT57dmFyIGY9YS5IYihiKS5lbCgpO2YmJihjKGYpLGUuZGlzY29ubmVjdCgpKX0pO2Uub2JzZXJ2ZShhLmdldFJvb3QoKS5lbCgpLHtjaGlsZExpc3Q6ITAsc3VidHJlZTohMH0pfX0pfTsKTHVhPWZ1bmN0aW9uKGEsYil7cmV0dXJuIF8uUWMoYixjPT5LdWEoYSxjKSl9O011YT1mdW5jdGlvbihhLGIpe3JldHVybiBfLlFjKGIsYz0+S3VhKGEsdHlwZW9mIGM9PT0ib2JqZWN0IiYmYyE9PW51bGw/Yy5qc25hbWU6YykudGhlbihkPT5uZXcgXy5TZygoZSxmKT0+e18ueWYoYS5UdShkKSxnPT57ZShnKX0sZil9KSkpfTsKXy5OdWE9ZnVuY3Rpb24oKXt2YXIgYT1BcnJheS5mcm9tKGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoIltkYXRhLWd3cy1pbmFjdGl2ZS1yb290XSIpKSxiPUFycmF5LmZyb20oZG9jdW1lbnQuYm9keS5xdWVyeVNlbGVjdG9yQWxsKCJbanNjb250cm9sbGVyXSxbanNhY3Rpb25dIikpO2ZvcihsZXQgYyBvZiBiKWRlbGV0ZSBjLl9fR1dTX0lOQUNUSVZFO2ZvcihsZXQgYyBvZiBhKXthPUFycmF5LmZyb20oYy5xdWVyeVNlbGVjdG9yQWxsKCJbanNjb250cm9sbGVyXSxbanNhY3Rpb25dIikpOyhjLmdldEF0dHJpYnV0ZSgianNjb250cm9sbGVyIil8fGMuZ2V0QXR0cmlidXRlKCJqc2FjdGlvbiIpKSYmYS5wdXNoKGMpO2ZvcihsZXQgZCBvZiBhKWQuZ2V0QXR0cmlidXRlKCJkYXRhLWd3cy1pbmFjdGl2ZS1pZ25vcmUiKT09bnVsbCYmKGQuX19HV1NfSU5BQ1RJVkU9MSl9fTsKXy5PdWE9ZnVuY3Rpb24oYT0iMSIpe2E9QXJyYXkuZnJvbShkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKGBbZGF0YS1nd3MtaW5hY3RpdmUtcm9vdD0iJHthfSJdYCkpO2ZvcihsZXQgYiBvZiBhKWIucmVtb3ZlQXR0cmlidXRlKCJkYXRhLWd3cy1pbmFjdGl2ZS1yb290Iik7Xy5OdWEoKTthLmZvckVhY2goYj0+Xy5aZyhiLCJzdklhVGQiLGIpKX07Xy5QdWE9ZnVuY3Rpb24oYSl7cmV0dXJuIGE/YSBpbnN0YW5jZW9mIEVsZW1lbnQ/Il9fR1dTX0lOQUNUSVZFImluIGE6YSBpbnN0YW5jZW9mIF8uQWg/Il9fR1dTX0lOQUNUSVZFImluIGEuZ2V0Um9vdCgpLmVsKCk6ITE6ITF9O18uUXVhPWZ1bmN0aW9uKGEpe3JldHVybiBPYmplY3Qua2V5cyhhKS5tYXAoYj0+YCR7Yn0uYCthW2JdKS5qb2luKCIsIil9O18uUnVhPWZ1bmN0aW9uKGEpe3JldHVybiBNYXRoLnJvdW5kKGEpfTsKXy5UdWE9ZnVuY3Rpb24oYSl7YT1hLnRpbWVTdGFtcDtpZihhIT1udWxsKXtpZihTdWF8fGE8OTA0ODkyNEU1KXJldHVybiBhO3ZhciBiO2E8OTA0ODkyNEU4P2I9YTpiPWEqLjAwMTtyZXR1cm4gYi1fLkJofX07Xy5WdWE9ZnVuY3Rpb24oYSl7dmFyIGIsYztpZigoYz1hLmV2ZW50KT09bnVsbD8wOmMudGltZVN0YW1wKWM9Xy5UdWEoYS5ldmVudCk7ZWxzZXt2YXIgZDtjPSgoZD1hLmRhdGEpPT1udWxsPzA6ZC5xbyk/Xy5UdWEoYS5kYXRhLnFvKTp2b2lkIDB9cmV0dXJuKGI9YykhPW51bGw/YjpfLlV1YS5ub3coKX07WHVhPWZ1bmN0aW9uKCl7dmFyIGE9ZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LGI9Xy5lYS5fanNhbGg7aWYoYSYmYilmb3IobGV0IGMgb2YgV3VhKWEucmVtb3ZlRXZlbnRMaXN0ZW5lcihjLGIsYz09PSJmb2N1cyIpfTsKWXVhPWZ1bmN0aW9uKCl7dmFyIGE9InBlcmZvcm1hbmNlImluIHdpbmRvdz8oKT0+cGVyZm9ybWFuY2Uubm93KCk6KCk9PkRhdGUubm93KCk7aWYoISh0eXBlb2YgZ29vZ2xlLmJ1ZHQhPT0ibnVtYmVyInx8Z29vZ2xlLmJ1ZHQ8PTApKXt2YXIgYj1hKCkrZ29vZ2xlLmJ1ZHQsYz1nb29nbGUuYnVkdGJvdW5kP2dvb2dsZS5idWR0Ym91bmQ6MUU3O2ZvcihsZXQgZD0wO2Q8YztkKyspaWYoYSgpPj1iKXJldHVybjtfLmNoKCkuR2MoImJ1ZHQtbWF4IiwiMSIpLkdjKCJidWR0IixgJHtnb29nbGUuYnVkdH1gKS5HYygiYnVkdGJvdW5kIixgJHtnb29nbGUuYnVkdGJvdW5kfWApLmxvZygpfX07WnVhPWZ1bmN0aW9uKGEsYil7cmV0dXJuIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGIpfHxhLnF1ZXJ5U2VsZWN0b3IoYCMke2J9YCl9O18uQ2g9ZnVuY3Rpb24oYSxiKXtyZXR1cm4gXy56ZihucGEoYSxiKSwhMCl9O18uRGg9ZnVuY3Rpb24oYSxiKXthLl9fc295X3NraXBfaGFuZGxlcj1ifTsKJHVhPWZ1bmN0aW9uKCl7fTthdmE9ZnVuY3Rpb24oYSxiKXtmb3IoO2EubGVuZ3RoPmI7KWEucG9wKCl9O18uYnZhPWZ1bmN0aW9uKGEsYixjKXtpZihjPT1udWxsKWEucmVtb3ZlQXR0cmlidXRlKGIpO2Vsc2V7dmFyIGQ7KGQ9Yi5sYXN0SW5kZXhPZigieG1sOiIsMCk9PT0wPyJodHRwOi8vd3d3LnczLm9yZy9YTUwvMTk5OC9uYW1lc3BhY2UiOmIubGFzdEluZGV4T2YoInhsaW5rOiIsMCk9PT0wPyJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIjpudWxsKT9hLnNldEF0dHJpYnV0ZU5TKGQsYixjKTphLnNldEF0dHJpYnV0ZShiLGMpfX07ZHZhPWZ1bmN0aW9uKGEsYixjKXthPWEuc3R5bGU7aWYodHlwZW9mIGM9PT0ic3RyaW5nIilhLmNzc1RleHQ9YztlbHNle2EuY3NzVGV4dD0iIjtmb3IobGV0IGYgaW4gYylpZihjdmEuY2FsbChjLGYpKXtiPWE7dmFyIGQ9ZixlPWNbZl07ZC5pbmRleE9mKCItIik+PTA/Yi5zZXRQcm9wZXJ0eShkLGUpOmJbZF09ZX19fTsKZXZhPWZ1bmN0aW9uKGEsYixjKXt2YXIgZD10eXBlb2YgYztkPT09Im9iamVjdCJ8fGQ9PT0iZnVuY3Rpb24iP2FbYl09YzpfLmJ2YShhLGIsYyl9O18uZnZhPWZ1bmN0aW9uKCl7dmFyIGE9bmV3ICR1YTthLl9fZGVmYXVsdD1ldmE7YS5zdHlsZT1kdmE7cmV0dXJuIGF9O2d2YT1mdW5jdGlvbihhLGIsYyxkKXsoZFtiXXx8ZC5fX2RlZmF1bHQpKGEsYixjKX07aXZhPWZ1bmN0aW9uKGEsYixjKXtiPW5ldyBodmEoYixjKTtyZXR1cm4gYS5fX2luY3JlbWVudGFsRE9NRGF0YT1ifTsKXy5sdmE9ZnVuY3Rpb24oYSxiKXtpZihhLl9faW5jcmVtZW50YWxET01EYXRhKXJldHVybiBhLl9faW5jcmVtZW50YWxET01EYXRhO3ZhciBjPWEubm9kZVR5cGU9PT0xP2EubG9jYWxOYW1lOmEubm9kZU5hbWUsZD1fLmp2YTtkPWEubm9kZVR5cGU9PT0xJiZkIT1udWxsP2EuZ2V0QXR0cmlidXRlKGQpOm51bGw7Yj1pdmEoYSxjLGEubm9kZVR5cGU9PT0xP2R8fGI6bnVsbCk7aWYoYS5ub2RlVHlwZT09PTEmJihjPWEuYXR0cmlidXRlcyxkPWMubGVuZ3RoKSl7YT1fLmt2YShiLGQqMik7Zm9yKGxldCBlPTAsZj0wO2U8ZDtlKz0xLGYrPTIpe2xldCBnPWNbZV0saD1nLnZhbHVlO2FbZl09Zy5uYW1lO2FbZisxXT1ofX1yZXR1cm4gYn07bXZhPWZ1bmN0aW9uKGEsYixjLGQsZSl7cmV0dXJuIGI9PWMmJmQ9PWV9OwpwdmE9ZnVuY3Rpb24oYSl7Zm9yKHZhciBiPV8uRWgsYz1udmEoKTtjIT09YTspe2xldCBkPWMubmV4dFNpYmxpbmc7Yi5yZW1vdmVDaGlsZChjKTtvdmEub2EucHVzaChjKTtjPWR9fTtudmE9ZnVuY3Rpb24oKXtyZXR1cm4gRmg/RmgubmV4dFNpYmxpbmc6Xy5FaC5maXJzdENoaWxkfTsKdXZhPWZ1bmN0aW9uKGEsYil7Rmg9bnZhKCk7dmFyIGM7YTp7aWYoYz1GaCl7ZG97aWYoYz09PXF2YSlicmVhazt2YXIgZD1jLGU9YSxmPWI7bGV0IGc9Xy5sdmEoZCxmKTtpZihydmEoZCxlLGcub2EsZixnLmtleSkpYnJlYWsgYX13aGlsZShiJiYoYz1jLm5leHRTaWJsaW5nKSl9Yz1udWxsfWN8fChhPT09IiN0ZXh0Ij8oYT1zdmEuY3JlYXRlVGV4dE5vZGUoIiIpLGl2YShhLCIjdGV4dCIsbnVsbCkpOihjPXN2YSxkPV8uRWgsdHlwZW9mIGE9PT0iZnVuY3Rpb24iP2M9bmV3IGE6Yz0oZD1hPT09InN2ZyI/Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIjphPT09Im1hdGgiPyJodHRwOi8vd3d3LnczLm9yZy8xOTk4L01hdGgvTWF0aE1MIjpkPT1udWxsfHxfLmx2YShkKS5vYT09PSJmb3JlaWduT2JqZWN0Ij9udWxsOmQubmFtZXNwYWNlVVJJKT9jLmNyZWF0ZUVsZW1lbnROUyhkLGEpOmMuY3JlYXRlRWxlbWVudChhKSxpdmEoYyxhLGIpLGE9Yyksb3ZhLmthLnB1c2goYSksYz1hKTsKYT1jO2lmKGEhPT1GaCl7aWYodHZhLmluZGV4T2YoYSk+PTApZm9yKGI9Xy5FaCxjPWEubmV4dFNpYmxpbmcsZD1GaDtkIT09bnVsbCYmZCE9PWE7KWU9ZC5uZXh0U2libGluZyxiLmluc2VydEJlZm9yZShkLGMpLGQ9ZTtlbHNlIF8uRWguaW5zZXJ0QmVmb3JlKGEsRmgpO0ZoPWF9fTtfLnZ2YT1mdW5jdGlvbihhLGIpe3V2YShhLGIpO18uRWg9Rmg7Rmg9bnVsbDtyZXR1cm4gXy5FaH07Xy53dmE9ZnVuY3Rpb24oKXtwdmEobnVsbCk7Rmg9Xy5FaDtfLkVoPV8uRWgucGFyZW50Tm9kZTtyZXR1cm4gRmh9OwpDdmE9ZnVuY3Rpb24oYSxiLGMpe3ZhciBkPW92YSxlPXN2YSxmPXR2YSxnPXh2YSxoPUZoLGs9Xy5FaCxtPXJ2YTtzdmE9YS5vd25lckRvY3VtZW50O292YT1uZXcgeXZhKGEpO3J2YT1iO3h2YT1bXTtGaD1udWxsO2I9Xy5FaD1hLnBhcmVudE5vZGU7dmFyIG49enZhLmNhbGwoYSk7aWYoKG49bi5ub2RlVHlwZT09PTExfHxuLm5vZGVUeXBlPT09OT9uLmFjdGl2ZUVsZW1lbnQ6bnVsbCkmJmEuY29udGFpbnMobikpe2ZvcihhPVtdO24hPT1iOylhLnB1c2gobiksbj1uLnBhcmVudE5vZGV8fChiP24uaG9zdDpudWxsKTtiPWF9ZWxzZSBiPVtdO3R2YT1iO3RyeXtyZXR1cm4gYygpfWZpbmFsbHl7Yz1vdmEsXy5BdmEmJmMua2EubGVuZ3RoPjAmJigwLF8uQXZhKShjLmthKSxfLkJ2YSYmYy5vYS5sZW5ndGg+MCYmKDAsXy5CdmEpKGMub2EpLHN2YT1lLG92YT1kLHJ2YT1tLHh2YT1nLEZoPWgsXy5FaD1rLHR2YT1mfX07CkR2YT1mdW5jdGlvbihhLGI9e30pe3ZhciB7bWF0Y2hlczpjPW12YX09YjtyZXR1cm4oZCxlLGYpPT5DdmEoZCxjLCgpPT5hKGQsZSxmKSl9O0V2YT1mdW5jdGlvbihhKXtyZXR1cm4gRHZhKChiLGMsZCk9PntfLkVoPUZoPWI7Rmg9bnVsbDtjKGQpO3B2YShudWxsKTtGaD1fLkVoO18uRWg9Xy5FaC5wYXJlbnROb2RlO3JldHVybiBifSxhKX07RnZhPWZ1bmN0aW9uKGEsYixjLGQpe0doLnB1c2goZ3ZhKTtHaC5wdXNoKGEpO0doLnB1c2goYik7R2gucHVzaChjKTtHaC5wdXNoKGQpfTsKXy5WdmE9ZnVuY3Rpb24oYT1HdmEpe3ZhciBiPV8uRWgsYz1fLmx2YShiKSxkPXh2YTtjPV8ua3ZhKGMsZC5sZW5ndGgpO2Zvcih2YXIgZT0hYy5sZW5ndGh8fCExLGY9MDtmPGQubGVuZ3RoO2YrPTIpe3ZhciBnPWRbZl07aWYoZSljW2ZdPWc7ZWxzZSBpZihjW2ZdIT09ZylicmVhaztsZXQgaz1kW2YrMV07aWYoZXx8Y1tmKzFdIT09ayljW2YrMV09ayxGdmEoYixnLGssYSl9aWYoZjxkLmxlbmd0aHx8ZjxjLmxlbmd0aCl7Zm9yKGY9ZT1mO2Y8Yy5sZW5ndGg7Zis9MilIdmFbY1tmXV09Y1tmKzFdO2ZvcihmPWU7ZjxkLmxlbmd0aDtmKz0yKWU9ZFtmXSxnPWRbZisxXSxIdmFbZV0hPT1nJiZGdmEoYixlLGcsYSksY1tmXT1lLGNbZisxXT1nLGRlbGV0ZSBIdmFbZV07YXZhKGMsZC5sZW5ndGgpO2Zvcih2YXIgaCBpbiBIdmEpRnZhKGIsaCx2b2lkIDAsYSksZGVsZXRlIEh2YVtoXX1hPUl2YTtJdmE9Yj1HaC5sZW5ndGg7Zm9yKGg9YTtoPGI7aCs9NSkoMCxHaFtoXSkoR2hbaCsxXSxHaFtoKwoyXSxHaFtoKzNdLEdoW2grNF0pO0l2YT1hO2F2YShHaCxhKTthdmEoZCwwKX07WHZhPWZ1bmN0aW9uKGEsYj1HdmEpe3ZhciBjPV8uRWgsZD1fLmx2YShjKTtpZighZC53YSYmKGQud2E9ITAsYSYmYS5sZW5ndGgpKXt2YXIgZT1kLmthO2lmKGUmJmUubGVuZ3RoKXtmb3IoZT0wO2U8YS5sZW5ndGg7ZSs9MilXdmFbYVtlXV09ZSsxO2Q9Xy5rdmEoZCwwKTtlPTA7Zm9yKGxldCBnPTA7ZzxkLmxlbmd0aDtnKz0yKXtsZXQgaD1kW2ddLGs9ZFtnKzFdLG09V3ZhW2hdO20/YVttXT09PWsmJmRlbGV0ZSBXdmFbaF06KGRbZV09aCxkW2UrMV09ayxlKz0yKX1hdmEoZCxlKTtmb3IodmFyIGYgaW4gV3ZhKWd2YShjLGYsYVtXdmFbZl1dLGIpLGRlbGV0ZSBXdmFbZl19ZWxzZSBmb3IoZj0wO2Y8YS5sZW5ndGg7Zis9MilndmEoYyxhW2ZdLGFbZisxXSxiKX19OwpZdmE9ZnVuY3Rpb24oYSwuLi5iKXt1dmEoIiN0ZXh0IixudWxsKTtiPUZoO3ZhciBjPV8ubHZhKGIpO2lmKGMudGV4dCE9PWEpe2M9Yy50ZXh0PWE7Zm9yKGxldCBkPTE7ZDxhcmd1bWVudHMubGVuZ3RoO2QrPTEpYz0oMCxhcmd1bWVudHNbZF0pKGMpO2IuZGF0YSE9PWMmJihiLmRhdGE9Yyl9fTtfLlp2YT1mdW5jdGlvbihhLGI9IiIpe2E9YS5fX3NveTtpZighYSl0aHJvdyBFcnJvcihgJHtifQoKRGlkIG5vdCBmaW5kIGEgU295IHtlbGVtZW50fSBvbiB0aGUgaWRvbS1yZW5kZXJlZCBET00gbm9kZS4gTWFrZSBzdXJlIHRoYXQgdGhlIG5vZGUKaXMgYXQgdGhlIHJvb3Qgb2YgdGhlIFNveSB7ZWxlbWVudH0uCiAgICAgIGAudHJpbSgpKTthLlRfKCExKTtyZXR1cm4gYX07YXdhPWZ1bmN0aW9uKGEpe2Zvcig7YSYmIWEuY0tiJiYhJHZhKGEpOylhPWEucGFyZW50RWxlbWVudDtyZXR1cm57ZWxlbWVudDphLGNXYjphLmNLYn19Owpmd2E9ZnVuY3Rpb24oKXtfLlZmKHtzb3k6ZnVuY3Rpb24oYSxiKXt2YXIgYz1fLnpvYSgpfHxfLk9vYSgpLGQ9YEZhaWxlZCB0byBpbmplY3QgU295IHtlbGVtZW50fSAke2IubmFtZX0gZnJvbSAke2F9LmAsZT1jLl9fc295P18uWnZhKGMsZCk6bnVsbDtpZihlKXJldHVybiBfLkRnKGUpO3ZhciBmPWF3YShjKSxnPWYuZWxlbWVudDtnLkxpYnx8KGcuTGliPW5ldyBTZXQpO3ZhciBoPWcuTGliO2U9bmV3IFNldDtmb3IodmFyIGsgb2YgaClfLiRnKGMsaykmJmUuYWRkKGspO2Uuc2l6ZXx8KGguYWRkKGMpLGMuX19zb3lfdGFnZ2VkX2Zvcl9za2lwPSEwKTtrPWYuY1diP2YuY1diLnRoZW4oKCk9PntoLmNsZWFyKCk7dmFyIG09Yy5fX3NveT9fLlp2YShjKTpudWxsO2lmKG0pcmV0dXJuIG07bT1nLl9fc295O2lmKCFtKXttPWBIeWRyYXRpb24gc291cmNlICR7Zz9kb2N1bWVudC5ib2R5LmNvbnRhaW5zKGcpPyJpbiBkb20iOiJub3QgaW4gZG9tIjoibWlzc2luZyJ9YDtsZXQgbj1gRWwgc291cmNlICR7ZG9jdW1lbnQuYm9keS5jb250YWlucyhjKT8KImluIGRvbSI6Im5vdCBpbiBkb20ifWA7cmV0dXJuIF8uSGgobmV3IGJ3YShgRmFpbGVkIHRvIGdldCBTb3kge2VsZW1lbnR9ICR7Yi5uYW1lfSBmcm9tIGh5ZHJhdGlvbiBzb3VyY2UgZm9yICR7YX0uICR7bX0sJHtufWApKX1tLnJlbmRlcigpO3JldHVybiBfLlp2YShjLGQpfSk6Xy5JaChbYS51bihfLmN3YSxmLmVsZW1lbnQpLF8uQ2goYSx7c2VydmljZTp7emJiOl8uZHdhfX0pXSkudGhlbihtPT57dmFyIG49bVsxXS5zZXJ2aWNlLnpiYjtyZXR1cm4gbVswXS56VWIoKS50aGVuKHA9PntmLmVsZW1lbnQuZ2V0QXR0cmlidXRlKCJqc3JlbmRlcmVyIik7aC5jbGVhcigpO2cuX19pbmNyZW1lbnRhbERPTURhdGF8fG4udUhhKGcscC50ZW1wbGF0ZSxwLmFyZ3MpO2lmKCghYy5fX3NveXx8IV8uWnZhKGMpKSYmZy5fX2luY3JlbWVudGFsRE9NRGF0YSl7cD1FcnJvcjt2YXIgcjt7bGV0IEo9YyxOPVtdLFE9YGh5ZHJhdGlvblNvdXJjZUVsZW1lbnQ6ICR7ZG9jdW1lbnQuYm9keS5jb250YWlucyhnKT8KImluIGRvbSI6Im5vdCBpbiBkb20ifWA7YSBpbnN0YW5jZW9mIF8uRWQmJmEuaXNEaXNwb3NlZCgpJiYoUSs9IiAoZGlzcG9zZWQpIik7aWYoYyl7Zm9yKHI9YGVsZW1lbnQ6ICR7ZG9jdW1lbnQuYm9keS5jb250YWlucyhjKT8iaW4gZG9tIjoibm90IGluIGRvbSJ9YDtKOyl7dmFyIHg9Tix6PXgudW5zaGlmdDt2YXIgQj1KO2xldCBaPVtdO3ZhciBIPUIuZ2V0QXR0cmlidXRlKCJqc2NvbnRyb2xsZXIiKTtIJiZaLnB1c2goYGpzY29udHJvbGxlcj0iJHtIfSJgKTsoSD1CLmdldEF0dHJpYnV0ZSgianNtb2RlbCIpKSYmWi5wdXNoKGBqc21vZGVsPSIke0h9ImApO0I9YDwke0IudGFnTmFtZX0keygiICIrWi5qb2luKCIgIikpLnRyaW1FbmQoKX0+YDt6LmNhbGwoeCxCKTtpZihKLmhhc0F0dHJpYnV0ZSgianNjb250cm9sbGVyIikpYnJlYWs7Sj1KLnBhcmVudEVsZW1lbnR9cj1geyR7UX0sICR7cn0sIGRvbTogJHtOLmpvaW4oIiA+ICIpfX1gfWVsc2Ugcj1geyR7UX0sIGVsZW1lbnQ6IG51bGx9YH1fLmZhKG5ldyBid2EocCgiVmNgIisKcikubWVzc2FnZSkpO3JldHVybiBudWxsfXJldHVybiBfLlp2YShjLGQpfSl9KTtjLkxpYj1lO2MuY0tiPWs7cmV0dXJuIGsudGhlbihtPT57ZXdhJiZtLlJfKGV3YSk7cmV0dXJuIG19KX19KX07Z3dhPWZ1bmN0aW9uKGEsYil7cmV0dXJuIGIudG9VcHBlckNhc2UoKX07aHdhPWZ1bmN0aW9uKGEpe2lmKGEudGFnTmFtZSE9PSJBIil0aHJvdyBFcnJvcigiV2MiKTtyZXR1cm4gYX07Xy5qd2E9ZnVuY3Rpb24oKXtfLkpoPW5ldyBpd2F9O18uS2g9ZnVuY3Rpb24oYSxiKXthPV8ua3dhKGEsYik7cmV0dXJuIGE9PT0tMT8iIjonIGRhdGEtc295bG9nPSInK2ErJyInfTtfLmt3YT1mdW5jdGlvbihhLGIpe2lmKCFfLkpoKXtpZihiKXRocm93IEVycm9yKCIkYyIpO3JldHVybi0xfWE9bmV3IGx3YShhLkJtKCkuZ2V0SWQoKSxhLmdldERhdGEoKSxiLGEuQm0oKS5nZXRNZXRhZGF0YSgpLGEuQm0oKS5nZXROYW1lKCkpO3JldHVybiBfLkpoLmVsZW1lbnRzLnB1c2goYSktMX07Cl8uTGg9ZnVuY3Rpb24oYSxiLGMpe3JldHVybiBfLkpoPyhhPV8uSmgua2EucHVzaChuZXcgbXdhKGEsYikpLTEsIiBkYXRhLXNveWxvZ2dpbmdmdW5jdGlvbi0iK2MrJz0iJythKyciJyk6IiJ9O18ucXdhPWZ1bmN0aW9uKGEsYil7aWYoYSBpbnN0YW5jZW9mIEVsZW1lbnQpcmV0dXJuIGI9bndhKGEsYiksYS5wYXJlbnROb2RlIT09bnVsbCYmb3dhKGEucGFyZW50Tm9kZSxhLGIpLGI7Xy5wd2EoYSxBcnJheS5mcm9tKGEuY2hpbGROb2RlcyksYik7cmV0dXJuW2FdfTtfLnB3YT1mdW5jdGlvbihhLGIsYyl7dmFyIGQ9bnVsbDtmb3IobGV0IGU9MDtlPGIubGVuZ3RoO2UrKyl7bGV0IGY9YltlXTtpZighKGYgaW5zdGFuY2VvZiBFbGVtZW50KSljb250aW51ZTtsZXQgZz1ud2EoZixjKTtpZihnLmxlbmd0aCE9PTF8fGdbMF0hPT1mKWR8fChkPWIuc2xpY2UoMCxlKSksZC5wdXNoKC4uLmcpLG93YShhLGYsZyl9cmV0dXJuIGR9Owpud2E9ZnVuY3Rpb24oYSxiKXtpZighKGEgaW5zdGFuY2VvZiBFbGVtZW50KSlyZXR1cm5bYV07dmFyIGM9LTEsZD12b2lkIDA7YS5oYXNBdHRyaWJ1dGUoImRhdGEtc295bG9nIikmJigoYz1hLmdldEF0dHJpYnV0ZSgiZGF0YS1zb3lsb2ciKSk/Yz1wYXJzZUludChjLDEwKTpjPS0xLGMhPS0xJiYoZD1iLmVudGVyKF8uSmguZWxlbWVudHNbY10pKSk7aWYoYS5oYXNBdHRyaWJ1dGVzKCkpe3ZhciBlPWE7YS50YWdOYW1lPT09IlZFQVRUUiImJihlPWEuZmlyc3RFbGVtZW50Q2hpbGQpO2Zvcih2YXIgZiBvZiBhLmdldEF0dHJpYnV0ZU5hbWVzKCkpaWYoXy5pYShmLCJkYXRhLXNveWxvZ2dpbmdmdW5jdGlvbi0iKSl7dmFyIGc9YS5nZXRBdHRyaWJ1dGUoZik7aWYoZS5oYXNBdHRyaWJ1dGUoImRhdGEtc295bG9nIikmJmEudGFnTmFtZT09PSJWRUFUVFIiKXtfLmZkKHJ3YSxlLGYsZyk7Y29udGludWV9Zz1fLkpoLmthW3BhcnNlSW50KGcsMTApXTtlLnNldEF0dHJpYnV0ZShmLnN1YnN0cmluZygyNCksCmIuTkgoZy5uYW1lLGcuYXJncykpO2EucmVtb3ZlQXR0cmlidXRlKGYpfX1mb3IoZj1hLmZpcnN0RWxlbWVudENoaWxkO2Y7KWU9Zi5uZXh0RWxlbWVudFNpYmxpbmcsZz1ud2EoZixiKSxmLnRhZ05hbWU9PT0iVkVBVFRSIj9vd2EoYSxmLG53YShmLmZpcnN0RWxlbWVudENoaWxkLGIpKTpvd2EoYSxmLGcpLGY9ZTtpZihjPT09LTEpcmV0dXJuW2FdO2IuZXhpdCgpO2lmKF8uSmguZWxlbWVudHNbY10uSndiKXJldHVybltdO2I9W2FdO2EudGFnTmFtZSE9PSJWRUxPRyI/YS5yZW1vdmVBdHRyaWJ1dGUoImRhdGEtc295bG9nIik6YS5jaGlsZE5vZGVzJiYoYj1BcnJheS5mcm9tKGEuY2hpbGROb2RlcykpO2QmJmIubGVuZ3RoPjAmJnN3YShkLGJbMF0pO3JldHVybiBifTsKb3dhPWZ1bmN0aW9uKGEsYixjKXtpZihjLmxlbmd0aD09PTApYS5yZW1vdmVDaGlsZChiKTtlbHNlIGlmKGMubGVuZ3RoPT09MSliIT09Y1swXSYmYS5yZXBsYWNlQ2hpbGQoY1swXSxiKTtlbHNle2ZvcihsZXQgZCBvZiBjKWEuaW5zZXJ0QmVmb3JlKGQsYik7YS5yZW1vdmVDaGlsZChiKX19O3V3YT1mdW5jdGlvbigpe3ZhciBhPV8uTmgoXy50d2EpO2V3YT1hO18uUmYoXy5kd2EsYj0+e2IuUl8oYSl9KX07Xy53d2E9ZnVuY3Rpb24oYSxiKXt0cnl7bGV0IGM9Xy5PaChhKS5nZXRQYXRoKCk7aWYodndhLmluY2x1ZGVzKGMpKXJldHVybiExfWNhdGNoKGMpe31zd2l0Y2goYi5nZXRFeHRlbnNpb24oXy5QaCkpe2Nhc2UgMTpyZXR1cm4hMTtkZWZhdWx0OnJldHVybiEwfX07Xy56d2E9ZnVuY3Rpb24oKXtyZXR1cm4gXy54d2EoXy5CZCgidzJidEFlIiksXy55d2EsbmV3IF8ueXdhKX07Cl8uQndhPWZ1bmN0aW9uKGEpe2lmKEF3YS5oYXMoYSkpcmV0dXJuIEF3YS5nZXQoYSk7dGhyb3cgRXJyb3IoImFkYCIrYSk7fTtDd2E9ZnVuY3Rpb24oYSl7dmFyIGI9bmV3IE1hcDtmb3IobGV0IGMgb2YgT2JqZWN0LmtleXMoYSkpYi5zZXQoYVtjXS5zdHJpbmcsYVtjXS5iSik7cmV0dXJuIGJ9O18uUmg9ZnVuY3Rpb24oYSxiKXt2YXIgYz1BcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMpLGQ9Yy5zaGlmdCgpO2lmKHR5cGVvZiBkPT0idW5kZWZpbmVkIil0aHJvdyBFcnJvcigiY2QiKTtyZXR1cm4gZC5yZXBsYWNlKC8lKFswXC0gXCtdKikoXGQrKT8oXC4oXGQrKSk/KFslc2ZkaXVdKS9nLGZ1bmN0aW9uKGUsZixnLGgsayxtLG4scCl7aWYobT09IiUiKXJldHVybiIlIjt2YXIgcj1jLnNoaWZ0KCk7aWYodHlwZW9mIHI9PSJ1bmRlZmluZWQiKXRocm93IEVycm9yKCJkZCIpO2FyZ3VtZW50c1swXT1yO3JldHVybiBEd2FbbV0uYXBwbHkobnVsbCxhcmd1bWVudHMpfSl9OwpHd2E9ZnVuY3Rpb24oYSl7aWYoYT1fLlNoKGEsXy5DZSwxLEV3YSkpXy5pbWEoYSxGd2EoXy5VaChhLDIpKSksXy5obWEoYSxGd2EoXy5VaChhLDMpKSl9O0Z3YT1mdW5jdGlvbihhKXtyZXR1cm4gYT09PXZvaWQgMD9hOmE+PTA/YTphKzQyOTQ5NjcyOTZ9O18uSndhPWZ1bmN0aW9uKGEpe3ZhciBiPW5ldyBfLkFlO0h3YXx8KEh3YT1uZXcgXy5DZSxfLmhtYShId2EsMCksXy5pbWEoSHdhLDApLF8uam1hKEh3YSxEYXRlLm5vdygpKjFFMykpO18uSXdhKGIsSHdhKTtfLnRoKGIsMixhKTtyZXR1cm4gYn07Xy5XaD1mdW5jdGlvbihhLGIsYyl7aWYoYSYmKGE9Xy5nZyhhLCJ2ZWQiKSkpcmV0dXJuIG5ldyBfLlZoKGEsYixjKX07Xy5ZaD1mdW5jdGlvbihhLGIsYyl7aWYoYSl7bGV0IGQ9YVtfLkt3YV07aWYoZCBpbnN0YW5jZW9mIF8uTHdhKXJldHVybiBuZXcgXy5YaChkLGIsYyk7aWYoYT1fLmdnKGEsInZlZCIpKXJldHVybiBuZXcgXy5YaChhLGIsYyl9fTsKXy5Nd2E9ZnVuY3Rpb24oYSl7aWYoYSlyZXR1cm4gXy5NZyhhLGI9PmIgaW5zdGFuY2VvZiBFbGVtZW50JiZfLmhnKGIsInZlZCIpLCEwKXx8dm9pZCAwfTtfLk53YT1mdW5jdGlvbihhLGIpe3JldHVybiBfLlloKF8uTXdhKGEpLDMsYil9O093YT1mdW5jdGlvbihhKXtyZXR1cm4gYT9hIGluc3RhbmNlb2YgXy5YaD9bYV06YTpbXX07Xy5Rd2E9ZnVuY3Rpb24oYSxiKXtyZXR1cm4gYj9hLnJlcGxhY2UoUHdhLCIiKTphfTtfLld3YT1mdW5jdGlvbihhLGIpe3ZhciBjPTAsZD0wLGU9ITE7YT1fLlF3YShhLGIpLnNwbGl0KFJ3YSk7Zm9yKGI9MDtiPGEubGVuZ3RoO2IrKyl7bGV0IGY9YVtiXTtTd2EudGVzdChfLlF3YShmKSk/KGMrKyxkKyspOlR3YS50ZXN0KGYpP2U9ITA6Xy5Vd2EudGVzdChfLlF3YShmKSk/ZCsrOlZ3YS50ZXN0KGYpJiYoZT0hMCl9cmV0dXJuIGQ9PTA/ZT8xOjA6Yy9kPi40Py0xOjF9OwpZd2E9ZnVuY3Rpb24oYSl7cmV0dXJuIF8uZ2UuQ0hST01FJiYhXy5nZS5BTkRST0lEJiYhXy5nZS5UQ2EmJiFfLmdlLlFOYSYmWHdhKGEpfTtad2E9ZnVuY3Rpb24oKXtyZXR1cm4gXy5nZS5DSFJPTUUmJihfLmdlLlRDYXx8Xy5nZS5RTmEpJiZYd2EoIjMyIikmJiFYd2EoIjQ3Iil9OyR3YT1mdW5jdGlvbihhKXtyZXR1cm4gdHlwZW9mIGE9PT0ic3RyaW5nIj9wYXJzZUludChhLDEwKTphfTsKXy5peGE9ZnVuY3Rpb24oYSxiKXt2YXIgYz1hW2F4YV07aWYoYyYmIWIpcmV0dXJuIGMuY2xvbmUoKTtiPW5ldyBieGE7YVtheGFdPWI7Xy5aaChiLDEsOSk7Yz1fLkNkKF8uQmQoIkxWSVhYYiIpLDApO18uWmgoYiwyLGMpO2EuZGV2aWNlUGl4ZWxSYXRpbz8oYz1hLmRldmljZVBpeGVsUmF0aW8sYz10eXBlb2YgYz09PSJzdHJpbmciP3BhcnNlRmxvYXQoYyk6Yyk6Yz0xO2lzTmFOKGMpPyhfLmZhKEVycm9yKCJrZCIpKSxjPTEpOmM8PTAmJihfLmZhKEVycm9yKCJsZCIpKSxjPTEpO18ud2goYiwzLGMpO3ZhciBkPSR3YShhLmlubmVyV2lkdGgpLGU9JHdhKGEuaW5uZXJIZWlnaHQpO2lzTmFOKGQpP18uZmEoRXJyb3IoIm1kIikpOmQ8MD9fLmZhKEVycm9yKCJuZCIpKTppc05hTihlKT9fLmZhKEVycm9yKCJvZCIpKTplPDA/Xy5mYShFcnJvcigicGQiKSk6KGQ9Y3hhKG5ldyBfLmR4YSxkKS5zZXRIZWlnaHQoZSksXy5TYihiLF8uZHhhLDUsZCkpO2Euc2NyZWVuJiZjJiYoZD0kd2EoYS5zY3JlZW4ud2lkdGgpLAphPSR3YShhLnNjcmVlbi5oZWlnaHQpLGlzTmFOKGQpP18uZmEoRXJyb3IoInFkIikpOmQ8MD9fLmZhKEVycm9yKCJyZCIpKTppc05hTihhKT9fLmZhKEVycm9yKCJzZCIpKTphPDA/Xy5mYShFcnJvcigidGQiKSk6KGE9Y3hhKG5ldyBfLmR4YSxkKmMpLnNldEhlaWdodChhKmMpLF8uU2IoYixfLmR4YSw0LGEpKSk7YT1uZXcgXy5leGE7Yz0oMCxfLk5hLlNXKSgpJiYoWXdhKCIyMyIpfHxfLmdlLkNIUk9NRSYmXy5nZS5BTkRST0lEJiZYd2EoIjI1Iil8fCFfLmdlLkNIUk9NRSYmIV8uZ2UuR05hJiZfLmdlLkFORFJPSUQmJlh3YSgiNC4yIil8fF8uZ2UubE9hJiZYd2EoIjEyLjEwIil8fFp3YSgpKTthPV8uJGgoYSwxLGMpO2M9KDAsXy5OYS5TVykoKSYmKFl3YSgiMTciKXx8Xy5nZS5DSFJPTUUmJl8uZ2UuQU5EUk9JRCYmWHdhKCIyNSIpfHwhXy5nZS5DSFJPTUUmJiFfLmdlLkdOYSYmXy5nZS5BTkRST0lEJiZYd2EoIjQuMCIpfHxfLmdlLmxPYSYmWHdhKCIxMS4xMCIpfHxad2EoKSk7CmE9Xy4kaChhLDIsYyk7YT1fLiRoKGEsNCwhIXdpbmRvdy5QdXNoTWFuYWdlcik7Xy5TYihiLF8uZXhhLDYsYSk7YT1uZXcgZnhhO18uZ3hhJiYoYz1fLmd4YSxkPWMud05jKCksXy4kaChhLDEsZCksZD1jLm03YSgpLF8uWmgoYSwyLGQpLGM9Yy5uN2EoKSxfLlpoKGEsMyxjKSk7Xy5TYihiLGZ4YSw3LGEpO2h4YShiKTtyZXR1cm4gYi5jbG9uZSgpfTsKaHhhPWZ1bmN0aW9uKGEpe2lmKGp4YSl7bGV0IGQ9YS5LaigpO2lmKGQpe2lmKCFqeGEuS2ooKSl7dmFyIGI9anhhLGM9bmV3IF8uZHhhO18uU2IoYixfLmR4YSw1LGMpfWN4YShqeGEuS2ooKSxfLmJpKGQpKS5zZXRIZWlnaHQoXy5jaShkLDIpKX1pZihhPV8ucShhLGZ4YSw3KSlfLnEoanhhLGZ4YSw3KXx8KGI9anhhLGM9bmV3IGZ4YSxfLlNiKGIsZnhhLDcsYykpLGI9Xy5xKGp4YSxmeGEsNyksYz1fLmRpKGEsMSksYj1fLiRoKGIsMSxjKSxjPV8uZWkoYSwyKSxiPV8uWmgoYiwyLGMpLGE9Xy5laShhLDMpLF8uWmgoYiwzLGEpfWVsc2UganhhPWEuY2xvbmUoKX07Xy5reGE9ZnVuY3Rpb24oYSl7Xy5iZS5jYWxsKHRoaXMpO3RoaXMub2E9YXx8d2luZG93O3RoaXMud2E9Xy5oZSh0aGlzLm9hLCJyZXNpemUiLHRoaXMuQWEsITEsdGhpcyk7dGhpcy5rYT1fLmdpKHRoaXMub2EpfTsKbHhhPWZ1bmN0aW9uKGEpe18uYmUuY2FsbCh0aGlzKTt0aGlzLm9hPWE/YS5nZXRXaW5kb3coKTp3aW5kb3c7dGhpcy5BYT10aGlzLm9hLmRldmljZVBpeGVsUmF0aW8+PTEuNT8yOjE7dGhpcy5NSj0oMCxfLmllKSh0aGlzLkJhLHRoaXMpO3RoaXMud2E9bnVsbDsodGhpcy5rYT10aGlzLm9hLm1hdGNoTWVkaWE/dGhpcy5vYS5tYXRjaE1lZGlhKCIobWluLXJlc29sdXRpb246IDEuNWRwcHgpLCAoLXdlYmtpdC1taW4tZGV2aWNlLXBpeGVsLXJhdGlvOiAxLjUpIik6bnVsbCkmJnR5cGVvZiB0aGlzLmthLmFkZExpc3RlbmVyIT09ImZ1bmN0aW9uIiYmdHlwZW9mIHRoaXMua2EuYWRkRXZlbnRMaXN0ZW5lciE9PSJmdW5jdGlvbiImJih0aGlzLmthPW51bGwpfTsKXy5paT1mdW5jdGlvbihhLGIpe18uRWQuY2FsbCh0aGlzKTt0aGlzLkJhPWE7aWYoYil7aWYodGhpcy53YSl0aHJvdyBFcnJvcigidWQiKTt0aGlzLndhPWI7dGhpcy5vYT1fLm9lKGIpO3RoaXMua2E9bmV3IF8ua3hhKF8uaGkoYikpO3RoaXMua2Eud19hKHRoaXMuQmEuZ2V0RXZlbnRUYXJnZXQoKSk7dGhpcy5BYT1uZXcgbHhhKHRoaXMub2EpO3RoaXMuQWEuc3RhcnQoKX19O18ubnhhPWZ1bmN0aW9uKGEsYil7YiYmYi5DZj9iLkNmKGEpOihiPW14YShiKSxhLmlubmVySFRNTD1fLnFjKGIpKX07Xy5weGE9ZnVuY3Rpb24oYSxiLGMsZCl7KGI9YihjfHxveGEsZCkpJiZiLkNmJiZhP2IuQ2YoYSk6KGI9bXhhKGIpLGEuaW5uZXJIVE1MPV8ucWMoYikpfTsKXy5qaT1mdW5jdGlvbihhLGIsYyxkKXthOmlmKGE9YShifHxveGEsYyksZD1kfHxfLm9lKCksYSYmYS5JZD9kPWEuSWQoKTooZD1kLmNyZWF0ZUVsZW1lbnQoIkRJViIpLGE9bXhhKGEpLGQuaW5uZXJIVE1MPV8ucWMoYSkpLGQuY2hpbGROb2Rlcy5sZW5ndGg9PTEmJihhPWQuZmlyc3RDaGlsZCxhLm5vZGVUeXBlPT0xKSl7ZD1hO2JyZWFrIGF9cmV0dXJuIGR9O214YT1mdW5jdGlvbihhKXtyZXR1cm4gXy5wZyhhKT9hLlRhYSYmKGE9YS5UYWEoKSxhIGluc3RhbmNlb2YgXy5wYyk/YTpfLkpjKCJ6U295eiIpOl8uSmMoU3RyaW5nKGEpKX07Xy5raT1mdW5jdGlvbihhKXtpZih0eXBlb2YgYT09PSJmdW5jdGlvbiIpdmFyIGI9YTtlbHNlIGlmKHR5cGVvZiBhPT09Im9iamVjdCIpYj1hLmNvbnN0cnVjdG9yO2Vsc2UgdGhyb3cgRXJyb3Iodm9pZCAwKTtyZXR1cm4gXy5UYShjPT5jIGluc3RhbmNlb2YgYil9OwpzeGE9ZnVuY3Rpb24oYSxiKXtmb3IodmFyIGM9W10sZD1hLmxlbmd0aCxlPTAsZj1bXSxnLGgsaz0wO2s8ZDspe3N3aXRjaChlKXtjYXNlIDA6dmFyIG09YS5pbmRleE9mKCI8IixrKTtpZihtPDApe2lmKGMubGVuZ3RoPT09MClyZXR1cm4gYTtjLnB1c2goYS5zdWJzdHJpbmcoaykpO2s9ZH1lbHNlIGMucHVzaChhLnN1YnN0cmluZyhrLG0pKSxoPW0saz1tKzEscXhhPyhyeGEubGFzdEluZGV4PWssbT1yeGEuZXhlYyhhKSk6KHJ4YS5sYXN0SW5kZXg9MCxtPXJ4YS5leGVjKGEuc3Vic3RyaW5nKGspKSksbT8oZj1bIjwiLG1bMF1dLGc9bVsxXSxlPTEsays9bVswXS5sZW5ndGgpOmMucHVzaCgiPCIpO2JyZWFrO2Nhc2UgMTptPWEuY2hhckF0KGsrKyk7c3dpdGNoKG0pe2Nhc2UgIiciOmNhc2UgJyInOmxldCBuPWEuaW5kZXhPZihtLGspO248MD9rPWQ6KGYucHVzaChtLGEuc3Vic3RyaW5nKGssbisxKSksaz1uKzEpO2JyZWFrO2Nhc2UgIj4iOmYucHVzaChtKTtjLnB1c2goYihmLmpvaW4oIiIpLApnKSk7ZT0wO2Y9W107aD1nPW51bGw7YnJlYWs7ZGVmYXVsdDpmLnB1c2gobSl9YnJlYWs7ZGVmYXVsdDp0aHJvdyBFcnJvcigpO31lPT09MSYmaz49ZCYmKGs9aCsxLGMucHVzaCgiPCIpLGU9MCxmPVtdLGg9Zz1udWxsKX1yZXR1cm4gYy5qb2luKCIiKX07d3hhPWZ1bmN0aW9uKGEpe3ZhciBiLGMsZD0oYz0oYj1hLlM0YSk9PW51bGw/dm9pZCAwOmIuc2xpY2UoKSkhPW51bGw/YzpbXTt0eGEoZCxfLmxpLGEuSGFjKTt0eGEoZCxfLm1pLGEuS1hiKTt0eGEoZCxfLnV4YSxhLmV4dGVuc2lvbklkKTt0eGEoZCxfLnZ4YSxhLk9uYik7cmV0dXJuWy4uLihuZXcgTWFwKGQubWFwKGU9PltlLmtleS5nZXRJZCgpLGVdKSkpLnZhbHVlcygpXX07dHhhPWZ1bmN0aW9uKGEsYixjKXtjIT1udWxsJiZhLnB1c2goe2tleTpiLHZhbHVlOmN9KX07Cl8ueXhhPWZ1bmN0aW9uKGEpe3JldHVybiBfLnBnKGEpJiZhLlprIT09dm9pZCAwJiZhLlprIGluc3RhbmNlb2YgXy54eGEmJmEuSWkhPT12b2lkIDAmJihhLkxvPT09dm9pZCAwfHxhLkxvIGluc3RhbmNlb2YgXy5sKT8hMDohMX07enhhPWZ1bmN0aW9uKGEpe3ZhciBiPWEuVERkO18ueXhhKGEpJiYoYj1hLm1ldGFkYXRhPyFhLm1ldGFkYXRhLmZhdGFsOnZvaWQgMCk7cmV0dXJuIGJ9O0J4YT1mdW5jdGlvbihhLGIpe2lmKCFhKXJldHVybiBfLkRnKCk7dmFyIGM9YS5UdWE7cmV0dXJuIF8ueXhhKGEpJiYoYz1hLm1ldGFkYXRhP2EubWV0YWRhdGEuVHVhOnZvaWQgMCxhLm1ldGFkYXRhJiZhLm1ldGFkYXRhLmp1Yyk/Xy5DaChiLHtzZXJ2aWNlOntGUmE6Xy5BeGF9fSkudGhlbihkPT57ZD1kLnNlcnZpY2UuRlJhO2ZvcihsZXQgZSBvZiBhLm1ldGFkYXRhLmp1YylfLm5pKGQuZ2V0KGUudUFkKSwhMSkmJihjPWUuVHVhKTtyZXR1cm4gY30pOl8uRGcoYyl9OwpEeGE9ZnVuY3Rpb24oYSxiLGMpe3JldHVybiBCeGEoYSxjKS50aGVuKGQ9PntpZihkPT12b2lkIDB8fGQ8MClyZXR1cm4gYjt2YXIgZT0hMTtiLnRoZW4oKCk9PntlPSEwfSwoKT0+e30pO2Q9Xy5vaShkLF8uRGcobnVsbCkpO2EubWV0YWRhdGEmJihhLm1ldGFkYXRhLmZWYj0hMSk7ZC50aGVuKCgpPT57YS5tZXRhZGF0YSYmKGEubWV0YWRhdGEuZlZiPSFlKX0pO3JldHVybiBfLkN4YShbYixkXSl9KX07RXhhPWZ1bmN0aW9uKGEsYil7cmV0dXJuIHp4YShhKT9iLkh4KGZ1bmN0aW9uKCl7cmV0dXJuIF8uRGcobnVsbCl9KTpifTsKS3hhPWZ1bmN0aW9uKGEsYil7cmV0dXJuIF8ueXhhKGEpJiZhLm1ldGFkYXRhJiZhLm1ldGFkYXRhLkJMYz9iLnRoZW4oYz0+e2lmKCFjJiZhLm1ldGFkYXRhJiZhLm1ldGFkYXRhLmZWYil7Yz1uZXcgRnhhO2xldCBkPW5ldyBfLnBpO18uR3hhKGQsYywid2l6LmRhdGEuY2xpZW50cy5XaXpEYXRhVGltZW91dEVycm9yIik7cmV0dXJuIF8uSHhhKF8uSXhhKG5ldyBfLkp4YSwyKSxbZF0pfX0sYz0+e2lmKGMgaW5zdGFuY2VvZiBfLnFpKXJldHVybiBjLnN0YXR1c30pOmJ9O18uTHhhPWZ1bmN0aW9uKGEsYixjKXthLmhhc0F0dHJpYnV0ZShiKXx8Xy5yaS5fX2RlZmF1bHQoYSxiLGMpfTtNeGE9ZnVuY3Rpb24oKXtfLlZmKHtkYXRhOihhLGIpPT5fLkNoKGEse2pzZGF0YTp7cDpifX0pLnRoZW4oYz0+Yy5qc2RhdGEucCl9KTtmd2EoKTt1d2EoKTtfLnJpWyJkYXRhLXZlZCJdPV8uTHhhO18ucmlbImRhdGEtaHZlaWQiXT1fLkx4YX07ClV4YT1mdW5jdGlvbigpe3ZhciBhPV8uT2YuZ2V0SW5zdGFuY2UoKS5TbCgpO2lmKGEpe18uTnhhKGEsd2luZG93LmRvY3VtZW50KTt2YXIgYj1uZXcgT3hhKGEsXy5OaChfLnR3YSkpLGM9Xy5zaSgpLGQ9IlFmIjtoeGEoXy5peGEod2luZG93KSk7Y1tkXT1qeGE7YS5yZWdpc3RlclNlcnZpY2UoXy51aSxuZXcgXy52aShjKSk7YS5yZWdpc3RlclNlcnZpY2UoXy54aSxiKTthPXdpbmRvdy53aXpfcHJvZ3Jlc3M7Yi5nZXRFdmVudFRhcmdldCgpLmxpc3RlbihfLlB4YSxhKTtReGEoYik7Xy5SeGE9ITB9Yj17cnBjOlN4YShfLlR4YSwicnBjIil9O18uVmYoYiwhMCk7TXhhKCl9O18uVnhhPWZ1bmN0aW9uKGEsYixjKXtyZXR1cm4gXy56ZihfLnB1YShhLGIsYyksITApfTtXeGE9ZnVuY3Rpb24oKXt2YXIgYT13aW5kb3cuZ3dzX3dpemJpbmQudHJpZ2dlcixiPV8ueWgoZG9jdW1lbnQpO2x0YSgoKT0+e2IuZGlydHkoKX0sKGMsZCk9PntiLmRpcnR5U3VidHJlZShjLGQpfSxhKX07Cl8ueWk9ZnVuY3Rpb24oYSxiPSExKXtfLm50YShiKX07Xy5CaT1mdW5jdGlvbihhKXtyZXR1cm4gWHhhLnByb21pc2UudGhlbigoKT0+Xy5kZyhkb2N1bWVudCkuVHUoXy56aShhKSkpfTtfLll4YT1mdW5jdGlvbihhLGIpe18ub3RhKGEsYil9O1p4YT1mdW5jdGlvbihhKXtyZXR1cm57YWxsTG9hZGVkOm5ldyBQcm9taXNlKGI9PntfLmR1YShhLGIpfSl9fTtheWE9ZnVuY3Rpb24oYSl7dmFyIGI9d2QuZ2V0SW5zdGFuY2UoKSxjPV8uT2YuZ2V0SW5zdGFuY2UoKSxkPWMuU2woKSxlPWEua2E7cmV0dXJuIGMuaXNMb2FkZWQoYSl8fGEuQWF8fGQmJl8uJHhhKGQsYSl8fCEhYi5rYVthLnRvU3RyaW5nKCldfHxlJiZfLk10YShlKX07YnlhPWZ1bmN0aW9uKGEsYil7cmV0dXJuIF8uUWMoYiwoYyxkKT0+bmV3IF8ud2YoZT0+e25wYShhLHtqc2RhdGE6e1tkXTpjfX0pLkl4KGY9PntlKGYuanNkYXRhW2RdKX0sKCk9PntlKG51bGwpfSl9KSl9OwpleWE9ZnVuY3Rpb24oYSxiKXt2YXIgYz1fLkNoKGEse3NlcnZpY2U6e0ZoOl8uY3lhfX0pO3JldHVybiBfLlFjKGIsZD0+e2lmKHR5cGVvZiBkPT0iZnVuY3Rpb24iKXZhciBlPWQ7ZWxzZSBpZihkIGluc3RhbmNlb2YgXy5DaSllPWQueW47ZWxzZSBpZihkIGluc3RhbmNlb2YgXy5sKXZhciBmPWQ7ZWxzZXtkLmN0b3ImJih0eXBlb2YgZC5jdG9yPT0iZnVuY3Rpb24iP2U9ZC5jdG9yOmU9ZC5jdG9yLnluKTtmPWQueVBiO3ZhciBnPWQub25VcGRhdGV9ZT1mP2YuY29uc3RydWN0b3I6ZTt2YXIgaD1fLmR5YShlKSxrPV8uem9hKCl8fF8uT29hKCk7ZyYmYS5CZShoLGcsISFmKTtyZXR1cm4gYy50aGVuKG09Pm0uc2VydmljZS5GaC5yZXNvbHZlKGssZSxkLkV3YywhIWYsYSkpfSl9O18uZnlhPWZ1bmN0aW9uKCl7dGhpcy5rYT1bXTt0aGlzLm9hPVtdfTtneWE9ZnVuY3Rpb24oYSl7VmJhKGEsMjU2KTtPYmplY3QuZnJlZXplKGEpfTsKXy5qeWE9ZnVuY3Rpb24oYSxiKXtiPV8uRGhhKGIpO2lmKGE9PW51bGwpcmV0dXJuIGI7dmFyIGM9YVtoeWFdO2lmKGMpcmV0dXJuIGM7Yz1hW2l5YV07aWYodHlwZW9mIGM9PT0iZnVuY3Rpb24iKXtsZXQgZTthPShlPWNbaHlhXSkhPW51bGw/ZTpjW2h5YV09YygpfXZhciBkPV8uc2ZhKGIsWy4uLmFdKTthW2h5YV09ZDthW2l5YV09KCk9Pl8ucmVhKGQpO2EubGVuZ3RoPTA7Z3lhKGEpO3JldHVybiBkfTtfLmt5YT1mdW5jdGlvbihhKXthPWEudHJpbSgpLnNwbGl0KC87Lyk7cmV0dXJue1hhOmFbMF0sbWVzc2FnZUtleTphWzBdKyI7IithWzFdLGlkOmFbMV0saW5zdGFuY2VJZDphWzJdfX07bXlhPWZ1bmN0aW9uKGE9WXFhLGIpe3JldHVybiBjPT5uZXcgbHlhKGEoYyksYil9OwpfLm55YT1mdW5jdGlvbigpeyJMbCJpbiBfLmpwYXx8Xy5WZih7TGwoYSxiKXtpZighKGIgaW5zdGFuY2VvZiBfLmljKSlpZihiIGluc3RhbmNlb2YgXy5UZiliPWIuWkgoKTtlbHNlIHRocm93IEVycm9yKCJMZGAiK2IpO3JldHVybiBhLnVuKGIpLnRoZW4oYz0+YywoKT0+bnVsbCl9fSl9O18ub3lhPWZ1bmN0aW9uKGEpe3JldHVybi9fJC8udGVzdChhKT9fLmFoKGEucmVwbGFjZSgvXyQvLCIiKSk6YX07cXlhPWZ1bmN0aW9uKGEpe2lmKCFweWF8fGEua2EudGFyZ2V0RWxlbWVudC50YWdOYW1lIT09IklOUFVUIiYmYS5rYS50YXJnZXRFbGVtZW50LnRhZ05hbWUhPT0iVEVYVEFSRUEifHxhLmthLmV2ZW50VHlwZSE9PSJmb2N1cyIpYT1hLmdldEV2ZW50KCksYS5zdG9wUHJvcGFnYXRpb24mJmEuc3RvcFByb3BhZ2F0aW9uKCl9O3J5YT1mdW5jdGlvbihhLGIpe2EuZWNyZChjPT57Yi5kaXNwYXRjaChjKX0sMCl9OwpzeWE9ZnVuY3Rpb24oYSxiLGMpe2ZvcihsZXQgZD0wO2Q8Yy5sZW5ndGg7ZCsrKXRyeXtsZXQgZT1jW2RdLm9hKGIsYSk7aWYoZSE9bnVsbCYmZS5hYm9ydClyZXR1cm4gZX1jYXRjaChlKXtfLmZhKGUpfX07dHlhPWZ1bmN0aW9uKGEsYil7Zm9yKGxldCBjPTA7YzxiLmxlbmd0aDtjKyspdHJ5e2JbY10ud2EoYSl9Y2F0Y2goZCl7Xy5mYShkKX19O3Z5YT1mdW5jdGlvbihhKXt2YXIgYj1bXTtmb3IobGV0IGMgb2YgYS5nZXQoKSkoYT11eWEuZ2V0KGMuYWN0aW9uKSkmJmIucHVzaChhKTtyZXR1cm4gYn07Xy55eWE9ZnVuY3Rpb24oYSl7aWYod3lhIT09d3lhKXRocm93IEVycm9yKCk7cmV0dXJuIG5ldyB4eWEoYSl9OwpfLnp5YT1mdW5jdGlvbihhLC4uLmIpe3ZhciBjPWFbMF07aWYoYS5sZW5ndGg9PT0xKXJldHVybiBjKyJfIjtjPVswLGNdO2ZvcihsZXQgZD0wO2Q8Yi5sZW5ndGg7ZCsrKXtsZXQgZT1iW2RdO2UgaW5zdGFuY2VvZiB4eWE/Yy5wdXNoKDIsZS5rR2MpOnR5cGVvZiBlPT09Im51bWJlciI/Yy5wdXNoKDIsU3RyaW5nKGUpKTpjLnB1c2goMSxlKTtjLnB1c2goMCxhW2QrMV0pfXJldHVybiBKU09OLnN0cmluZ2lmeShjKX07QXlhPWZ1bmN0aW9uKGEsYil7YVswXSE9PSJbIj9iLnB1c2goMCxhKTpiLnB1c2goLi4uSlNPTi5wYXJzZShhKSl9O18uQnlhPWZ1bmN0aW9uKGEsYil7dmFyIGM9W107QXlhKGEsYyk7QXlhKGIsYyk7cmV0dXJuIEpTT04uc3RyaW5naWZ5KGMpfTtFeWE9ZnVuY3Rpb24oYSxiKXt2YXIgYzsoYz1fLkN5YSk9PW51bGx8fGMucHVzaChbYSxiXSk7Xy5EeWEuZm9yRWFjaChkPT57ZChhLGIpfSl9OwpGeWE9ZnVuY3Rpb24oYSl7cmV0dXJuIE1hdGguZmxvb3IoTWF0aC5yYW5kb20oKSphKX07Xy5IeWE9ZnVuY3Rpb24oKXt2YXIgYTtyZXR1cm4oYT1HeWEpPT1udWxsP3ZvaWQgMDphLmdldCgpfTtJeWE9ZnVuY3Rpb24oYSxiKXthPVsuLi5hLm1hcChkPT4oe3NwYW46ZCxkYXRhOmQuWlgoKSx2RmE6ZC52N2EoKX0pKSwuLi5iLm1hcChkPT4oe3NwYW46ZCxkYXRhOmQuWlgoKSx2RmE6ZC52N2EoKX0pKV07YS5zb3J0KChkLGUpPT5kLmRhdGEuTTYhPT1lLmRhdGEuTTY/ZC5kYXRhLk02LWUuZGF0YS5NNjpkLmRhdGEuaWQtZS5kYXRhLmlkKTt2YXIgYz1uZXcgTWFwO2EuZm9yRWFjaCgoe2RhdGE6ZCx2RmE6ZX0pPT57ZSE9bnVsbCYmYy5zZXQoZC5pZCxlKX0pO3JldHVyblthLm1hcCgoe2RhdGE6ZH0pPT5kKSxjXX07Ckt5YT1mdW5jdGlvbihhLGIsYyl7dmFyIGQsZT0oZD1fLkh5YSgpKT09bnVsbD92b2lkIDA6ZC5zcGFuO3JldHVybiBlPT09dm9pZCAwPyhuZXcgSnlhKCJmZWZzVmUiKSkuZW50ZXIoKCk9Pkt5YShhLGIsYykpOkx5YShlLmthLGUsYSxjKS5lbnRlcihiKX07Xy5NeWE9ZnVuY3Rpb24oYSxiKXt2YXIgYyxkPShjPV8uSHlhKCkpPT1udWxsP3ZvaWQgMDpjLnNwYW47cmV0dXJuIGQ9PT12b2lkIDA/YigpOkx5YShkLmthLGQsYSkuZW50ZXIoYil9O18uTnlhPWZ1bmN0aW9uKCl7dmFyIGE7cmV0dXJuKChhPV8uSHlhKCkpPT1udWxsP3ZvaWQgMDphLnNwYW4pIT09dm9pZCAwfTsKUnlhPWZ1bmN0aW9uKGEsYixjLGQpe2E9anJhKGEpO3ZhciBlPSgwLF8uenlhKWBzak9rbGYke2N9TEVaV0hmJHthP18ueXlhKGIpOmJ9T1dYRVhlYDtyZXR1cm4gXy5OeWEoKT8oKT0+S3lhKF8uQnlhKGUsInRjS3VJYyIpLGQpOmEmJk95YS5oYXMoYil8fGI9PT0iSklidVFjIj8oKT0+e3ZhciBmOygoZj1fLkh5YSgpKT09bnVsbD92b2lkIDA6Zi5zcGFuKSE9bnVsbCYmXy5GYmEoITApO2lmKFB5YS5zaXplPjApe2xldCBoLGs7dmFyIGc9KGs9KGg9Zyk9PW51bGw/dm9pZCAwOm5ldyBReWEobmV3IE1hcChoLmthKSkpIT1udWxsP2s6bmV3IFF5YTtmb3IobGV0IG0gb2YgUHlhKWcubWVyZ2UobSgpKTtnPWcuYnVpbGQoKX1yZXR1cm4obmV3IEp5YShlLGcsMCkpLmVudGVyKGQpfTpkfTsKWXlhPWZ1bmN0aW9uKGEpe3ZhciBiPWEuZXZlbnQsYz1iLndoaWNofHxiLmtleUNvZGU7IWMmJmIua2V5JiYoYz1TeWFbYi5rZXldKTtfLlR5YSYmYz09PTMmJihjPTEzKTtpZihjIT09MTMmJmMhPT0zMil2YXIgZD0hMTtlbHNlIGlmKGQ9UnJhKGIpLChiPWIudHlwZSE9PSJrZXlkb3duInx8ISEoISgiZ2V0QXR0cmlidXRlImluIGQpfHwoZC5nZXRBdHRyaWJ1dGUoInR5cGUiKXx8ZC50YWdOYW1lKS50b1VwcGVyQ2FzZSgpaW4gVXlhfHxkLnRhZ05hbWUudG9VcHBlckNhc2UoKT09PSJCVVRUT04ifHxkLnR5cGUmJmQudHlwZS50b1VwcGVyQ2FzZSgpPT09IkZJTEUifHxkLmlzQ29udGVudEVkaXRhYmxlKXx8Yi5jdHJsS2V5fHxiLnNoaWZ0S2V5fHxiLmFsdEtleXx8Yi5tZXRhS2V5fHwoZC5nZXRBdHRyaWJ1dGUoInR5cGUiKXx8ZC50YWdOYW1lKS50b1VwcGVyQ2FzZSgpaW4gVnlhJiZjPT09MzIpfHwoKGI9ZC50YWdOYW1lIGluIFd5YSl8fChiPWQuZ2V0QXR0cmlidXRlTm9kZSgidGFiaW5kZXgiKSwKYj1iIT1udWxsJiZiLnNwZWNpZmllZCksYj0hKGImJiFkLmRpc2FibGVkKSksYilkPSExO2Vsc2V7dmFyIGU9KGQuZ2V0QXR0cmlidXRlKCJyb2xlIil8fGQudHlwZXx8ZC50YWdOYW1lKS50b1VwcGVyQ2FzZSgpO2I9Xy5YeWFbZV0lYz09PTA7Yz0hKGUgaW4gXy5YeWEpJiZjPT09MTM7ZD1kLnRhZ05hbWUudG9VcHBlckNhc2UoKSE9PSJJTlBVVCJ8fCEhZC50eXBlO2Q9KGJ8fGMpJiZkfWQmJihhLmVpYWNrPSEwLGEuZXZlbnRUeXBlPSJjbGljayIpfTsKJHlhPWZ1bmN0aW9uKGEpe3ZhciBiO2lmKGI9YS5laWFjayl7dmFyIGM9YS5ldmVudDtiPWMud2hpY2h8fGMua2V5Q29kZTtjPVJyYShjKTtjPShjLnR5cGV8fGMudGFnTmFtZSkudG9VcHBlckNhc2UoKTtpZighKGI9Yj09PTMyJiZjIT09IkNIRUNLQk9YIikpe2I9UnJhKGEuZXZlbnQpO2M9Yi50YWdOYW1lLnRvVXBwZXJDYXNlKCk7bGV0IGQ9KGIuZ2V0QXR0cmlidXRlKCJyb2xlIil8fCIiKS50b1VwcGVyQ2FzZSgpO2I9Yz09PSJCVVRUT04ifHxkPT09IkJVVFRPTiI/ITA6IShiLnRhZ05hbWUudG9VcHBlckNhc2UoKWluIFp5YSl8fGM9PT0iQSJ8fGM9PT0iU0VMRUNUInx8KGIuZ2V0QXR0cmlidXRlKCJ0eXBlIil8fGIudGFnTmFtZSkudG9VcHBlckNhc2UoKWluIFZ5YXx8KGIuZ2V0QXR0cmlidXRlKCJ0eXBlIil8fGIudGFnTmFtZSkudG9VcHBlckNhc2UoKWluIFV5YT8hMTohMH19YiYmUXJhKGEuZXZlbnQpfTsKYXphPWZ1bmN0aW9uKGEsYixjKXtiLmVpYXx8Yi5ldmVudFR5cGUhPT0iY2xpY2sifHxiLmVpYWNrfHxjLmNsaWNrb25seT09PXZvaWQgMHx8KGIuZXZlbnRUeXBlPSJjbGlja29ubHkiLGIuZWlhPVtjLmNsaWNrb25seSxhXSl9O2J6YT1mdW5jdGlvbihhKXtyZXR1cm4gXy5zcmEoYSxiPT57dmFyIGM9Yi5oYXNBdHRyaWJ1dGUoImpzY29udHJvbGxlciIpO2I9Yi5oYXNBdHRyaWJ1dGUoImpzYWN0aW9uIikmJi86XHMqdHJpZ2dlclwuLy50ZXN0KGIuZ2V0QXR0cmlidXRlKCJqc2FjdGlvbiIpKTtyZXR1cm4gY3x8Yn0sITEsITApfTtmemE9ZnVuY3Rpb24oYSxiPW15YSgpKXt2YXIgYz13aW5kb3cuZ3dzX3dpemJpbmQsZD13aW5kb3cuZG9jdW1lbnQ7Xy5mdGEoKTt2YXIgZT1jLnRyaWdnZXI7Yz1jLmNvbmZpZ3VyZTtkPW5ldyBjemEoZCxhKTt2YXIgZj1uZXcgZHphKGUsZCxhLGIpO2EmJihlemEoXy5PZi5nZXRJbnN0YW5jZSgpLGEpLF8uRGkoYSxkKSk7YyhnPT57cnlhKGcsZi5DdmIpfSl9OwpqemE9ZnVuY3Rpb24oKXt2YXIgYT13aW5kb3cuZ3dzX3dpemJpbmQudHJpZ2dlcixiPWd6YSgpO2Iud2E9YTtoemEmJihiLmthPW5ldyBpemEpO2E9d2luZG93LmRvY3VtZW50O0VwYShhKTthPWEuX19oaXA7YS5fX3IoYik7ZGVsZXRlIGEuX19yfTttemE9ZnVuY3Rpb24oYSxiKXtyZXR1cm4gXy5RYyhiLChjLGQpPT57dmFyIGU9Yy55bigpO2U9e2ZmOntbZF06ZX19O3ZhciBmPXt9O3JldHVybiBfLkNoKGEsYSBpbnN0YW5jZW9mIF8uQWh8fGEgaW5zdGFuY2VvZiBfLmt6YXx8ImZ1bmN0aW9uIj09dHlwZW9mIF8uRWkmJmEgaW5zdGFuY2VvZiBfLkVpfHwiZnVuY3Rpb24iPT10eXBlb2YgXy5semEmJmEgaW5zdGFuY2VvZiBfLmx6YT9lOmYpLnRoZW4oZz0+e2c9Zy5mZiYmZy5mZltkXTtyZXR1cm4gYy5WbihnP25ldyBNYXAoW1siUjg0RFBlIixnXV0pOnZvaWQgMCl9KX0pfTtuemE9ZnVuY3Rpb24oKXtqemEoKTtnemEoKS5vYT1hPT57Xy5WZShFcnJvcihhKSl9fTsKcHphPWZ1bmN0aW9uKCl7b3phJiZ3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigidW5sb2FkIiwoKT0+e18uVmUoRXJyb3IoIiRkIikpfSl9O18ucnphPWZ1bmN0aW9uKCl7Xy5HcGEod2luZG93LmRvY3VtZW50KT9fLlZlKEVycm9yKCJiZSIpKTp3aW5kb3cuZ3dzX3dpemJpbmQ/Xy5oYygpLklJYihxemEpOl8uVmUoRXJyb3IoImNlIikpfTtzemE9ZnVuY3Rpb24oKXt2YXIgYT13aW5kb3cuX2Vqc2EsYjtyZXR1cm4oYj1hPT1udWxsP3ZvaWQgMDphLnEpIT1udWxsP2I6W119O3R6YT1mdW5jdGlvbigpe3ZhciBhPXdpbmRvdy5fZWpzYTtpZihhKXt2YXIgYj1hLmMsYz1hLmV0LGQ9YS5oO2ZvcihsZXQgZT0wO2U8Yy5sZW5ndGg7ZSsrKWIucmVtb3ZlRXZlbnRMaXN0ZW5lcihjW2VdLGQsdm9pZCAwKTtiPWEuYztjPWEuZXRjO2E9YS5oO2ZvcihkPTA7ZDxjLmxlbmd0aDtkKyspYi5yZW1vdmVFdmVudExpc3RlbmVyKGNbZF0sYSwhMCl9fTsKdXphPWZ1bmN0aW9uKGEpe3JldHVybnt0cmlnZ2VyOmI9Pnt2YXIgYz1hLmhhbmRsZXIoYi50eXBlKTtjfHwoYS5hZGRFdmVudChiLnR5cGUpLGM9YS5oYW5kbGVyKGIudHlwZSkpO3ZhciBkPWIudGFyZ2V0fHxiLnNyY0VsZW1lbnQ7YyYmYyhiLnR5cGUsYixkLm93bmVyRG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50KX0sY29uZmlndXJlOmI9PntiKGEpfX19O18udnphPWZ1bmN0aW9uKGEpe2lmKGEuX19nd2JwPT09dm9pZCAwKXtsZXQgYixjPW5ldyBQcm9taXNlKGQ9PntiPWR9KTtjLl9fcj1iO2EuX19nd2JwPWN9fTt3emE9ZnVuY3Rpb24oYSl7dmFyIGI9ZG9jdW1lbnQ7Xy52emEoYik7Yj1iLl9fZ3dicDt2YXIgYz1iLl9fcjtjJiYoYyhhKSxkZWxldGUgYi5fX3IpfTtCemE9ZnVuY3Rpb24oYSl7dmFyIGI9KHh6YT95emE6enphKS5jb25jYXQoQXphKTtmb3IobGV0IGM9MDtjPGIubGVuZ3RoO2MrKylhLmFkZEV2ZW50KGJbY10pfTsKQ3phPWZ1bmN0aW9uKGEpe3ZhciBiPVsiY2xpY2siLCJmb2N1cyIsInRvdWNoc3RhcnQiLCJtb3VzZWRvd24iXSxjPTA7cmV0dXJue2FkZEV2ZW50TGlzdGVuZXIoZCxlLGYpe2EuYWRkRXZlbnRMaXN0ZW5lcihkLGc9Pnt2YXIgaD1lKGcpO3JldHVybiBrPT57dmFyIG09Yi5pbmNsdWRlcyhrLnR5cGUpLG49RGF0ZS5ub3coKTttJiYoYz1uKTtuPW4tYzwxRTM7aWYobXx8biltPVt7ZXZlbnRUeXBlOmsudHlwZSxldmVudDprLHRhcmdldEVsZW1lbnQ6ay50YXJnZXQsZWljOmcsdGltZVN0YW1wOkRhdGUubm93KCl9XSxZc2EobSk7aChrKX19LGYpfSxBSCgpe2EuQUgoKX19fTsKTHphPWZ1bmN0aW9uKCl7dmFyIGE9bmV3IER6YTt2YXIgYj1FemE/bmV3IEZ6YShDemEoYSkpOm5ldyBGemEoYSk7QnphKGIpO2IuYWRkRXZlbnQoIl9jdXN0b20iKTthPU9iamVjdC5hc3NpZ24oe30sdXphKGIpLHthZGRFdmVudChjKXtiLmFkZEV2ZW50KGMpfX0pO18uZWEuZ3dzX3dpemJpbmQ9YTt3emEoYSk7T3JhKGEudHJpZ2dlcik7YT1zemEoKTsoR3phfHxIemF8fEl6YSkmJllzYShhKTtKemEoYixhKTtLemE/KGE9d2luZG93Ll9lanNhKSYmYS5xJiYoYS5xLnB1c2g9KCk9PjAsYS5xLmxlbmd0aD0wKTp0emEoKTt3aW5kb3cuX2Vqc2E9dm9pZCAwfTtfLkZpPWZ1bmN0aW9uKGEsYil7cmV0dXJuIF8uamMoYSxhLGIsITApfTsKTXphPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gYSgpe2VbMF09MTczMjU4NDE5MztlWzFdPTQwMjMyMzM0MTc7ZVsyXT0yNTYyMzgzMTAyO2VbM109MjcxNzMzODc4O2VbNF09MzI4NTM3NzUyMDtuPW09MH1mdW5jdGlvbiBiKHApe2Zvcih2YXIgcj1nLHg9MDt4PDY0O3grPTQpclt4LzRdPXBbeF08PDI0fHBbeCsxXTw8MTZ8cFt4KzJdPDw4fHBbeCszXTtmb3IoeD0xNjt4PDgwO3grKylwPXJbeC0zXV5yW3gtOF1eclt4LTE0XV5yW3gtMTZdLHJbeF09KHA8PDF8cD4+PjMxKSY0Mjk0OTY3Mjk1O3A9ZVswXTt2YXIgej1lWzFdLEI9ZVsyXSxIPWVbM10sSj1lWzRdO2Zvcih4PTA7eDw4MDt4Kyspe2lmKHg8NDApaWYoeDwyMCl7dmFyIE49SF56JihCXkgpO3ZhciBRPTE1MTg1MDAyNDl9ZWxzZSBOPXpeQl5ILFE9MTg1OTc3NTM5MztlbHNlIHg8NjA/KE49eiZCfEgmKHp8QiksUT0yNDAwOTU5NzA4KTooTj16XkJeSCxRPTMzOTU0Njk3ODIpO049KChwPDw1fHA+Pj4yNykmNDI5NDk2NzI5NSkrCk4rSitRK3JbeF0mNDI5NDk2NzI5NTtKPUg7SD1CO0I9KHo8PDMwfHo+Pj4yKSY0Mjk0OTY3Mjk1O3o9cDtwPU59ZVswXT1lWzBdK3AmNDI5NDk2NzI5NTtlWzFdPWVbMV0reiY0Mjk0OTY3Mjk1O2VbMl09ZVsyXStCJjQyOTQ5NjcyOTU7ZVszXT1lWzNdK0gmNDI5NDk2NzI5NTtlWzRdPWVbNF0rSiY0Mjk0OTY3Mjk1fWZ1bmN0aW9uIGMocCxyKXtpZih0eXBlb2YgcD09PSJzdHJpbmciKXtwPXVuZXNjYXBlKGVuY29kZVVSSUNvbXBvbmVudChwKSk7Zm9yKHZhciB4PVtdLHo9MCxCPXAubGVuZ3RoO3o8QjsrK3opeC5wdXNoKHAuY2hhckNvZGVBdCh6KSk7cD14fXJ8fChyPXAubGVuZ3RoKTt4PTA7aWYobT09MClmb3IoO3grNjQ8cjspYihwLnNsaWNlKHgseCs2NCkpLHgrPTY0LG4rPTY0O2Zvcig7eDxyOylpZihmW20rK109cFt4KytdLG4rKyxtPT02NClmb3IobT0wLGIoZik7eCs2NDxyOyliKHAuc2xpY2UoeCx4KzY0KSkseCs9NjQsbis9NjR9ZnVuY3Rpb24gZCgpe3ZhciBwPVtdLApyPW4qODttPDU2P2MoaCw1Ni1tKTpjKGgsNjQtKG0tNTYpKTtmb3IodmFyIHg9NjM7eD49NTY7eC0tKWZbeF09ciYyNTUscj4+Pj04O2IoZik7Zm9yKHg9cj0wO3g8NTt4KyspZm9yKHZhciB6PTI0O3o+PTA7ei09OClwW3IrK109ZVt4XT4+eiYyNTU7cmV0dXJuIHB9Zm9yKHZhciBlPVtdLGY9W10sZz1bXSxoPVsxMjhdLGs9MTtrPDY0OysrayloW2tdPTA7dmFyIG0sbjthKCk7cmV0dXJue3Jlc2V0OmEsdXBkYXRlOmMsZGlnZXN0OmQsZGlnZXN0U3RyaW5nOmZ1bmN0aW9uKCl7Zm9yKHZhciBwPWQoKSxyPSIiLHg9MDt4PHAubGVuZ3RoO3grKylyKz0iMDEyMzQ1Njc4OUFCQ0RFRiIuY2hhckF0KE1hdGguZmxvb3IocFt4XS8xNikpKyIwMTIzNDU2Nzg5QUJDREVGIi5jaGFyQXQocFt4XSUxNik7cmV0dXJuIHJ9fX07ClN6YT1mdW5jdGlvbihhLGI9TnphKXtpZighT3phKXtsZXQgZDthPShkPWEubmF2aWdhdG9yKT09bnVsbD92b2lkIDA6ZC51c2VyQWdlbnREYXRhO2lmKCFhfHx0eXBlb2YgYS5nZXRIaWdoRW50cm9weVZhbHVlcyE9PSJmdW5jdGlvbiJ8fGEuYnJhbmRzJiZ0eXBlb2YgYS5icmFuZHMubWFwIT09ImZ1bmN0aW9uIilyZXR1cm4gUHJvbWlzZS5yZWplY3QoRXJyb3IoImZlIikpO1B6YSgoYS5icmFuZHN8fFtdKS5tYXAoZT0+e3ZhciBmPW5ldyBRemE7Zj1fLmZoKGYsMSxlLmJyYW5kKTtyZXR1cm4gXy5maChmLDIsZS52ZXJzaW9uKX0pKTt0eXBlb2YgYS5tb2JpbGU9PT0iYm9vbGVhbiImJl8uJGgoUnphLDIsYS5tb2JpbGUpO096YT1hLmdldEhpZ2hFbnRyb3B5VmFsdWVzKGIpfXZhciBjPW5ldyBTZXQoYik7cmV0dXJuIE96YS50aGVuKGQ9Pnt2YXIgZT1SemEuY2xvbmUoKTtjLmhhcygicGxhdGZvcm0iKSYmXy5maChlLDMsZC5wbGF0Zm9ybSk7Yy5oYXMoInBsYXRmb3JtVmVyc2lvbiIpJiYKXy5maChlLDQsZC5wbGF0Zm9ybVZlcnNpb24pO2MuaGFzKCJhcmNoaXRlY3R1cmUiKSYmXy5maChlLDUsZC5hcmNoaXRlY3R1cmUpO2MuaGFzKCJtb2RlbCIpJiZfLmZoKGUsNixkLm1vZGVsKTtjLmhhcygidWFGdWxsVmVyc2lvbiIpJiZfLmZoKGUsNyxkLnVhRnVsbFZlcnNpb24pO3JldHVybiBlLkZjKCl9KS5jYXRjaCgoKT0+UnphLkZjKCkpfTtfLlR6YT1mdW5jdGlvbihhLGIsYyxkKXt0aGlzLndhPWE7dGhpcy5CYT1iO3RoaXMua2E9dGhpcy5vYT1hO3RoaXMuQWE9Y3x8MDt0aGlzLkVhPWR8fDJ9O1Z6YT1mdW5jdGlvbihhKXt2YXIgYj1uZXcgVXphO2IuYWJvcnQoYSk7cmV0dXJuIGIuc2lnbmFsfTtXemE9ZnVuY3Rpb24oKXtpZih0aGlzLmFib3J0ZWQpe2xldCBhO3Rocm93KGE9dGhpcy5yZWFzb24pIT1udWxsP2E6bmV3IERPTUV4Y2VwdGlvbigic2lnbmFsIGlzIGFib3J0ZWQgd2l0aG91dCByZWFzb24iLCJBYm9ydEVycm9yIik7fX07Clp6YT1mdW5jdGlvbihhKXt2YXIgYj1uZXcgVXphO2ZvcihsZXQgYyBvZiBhKWlmKGMuYWJvcnRlZCl7Yi5hYm9ydChjLnJlYXNvbik7YnJlYWt9ZWxzZSBYemEuc2V0KGIuc2lnbmFsLGIpLFl6YS5hZGQoYyxiLnNpZ25hbCk7cmV0dXJuIGIuc2lnbmFsfTskemE9ZnVuY3Rpb24oKXtmb3IobGV0IGEgb2YgWXphLmdldCh0aGlzKSlYemEuZ2V0KGEpLmFib3J0KHRoaXMucmVhc29uKX07YUFhPWZ1bmN0aW9uKGEpe3ZhciBiPW5ldyBVemE7c2V0VGltZW91dCgoKT0+e2IuYWJvcnQobmV3IERPTUV4Y2VwdGlvbigic2lnbmFsIHRpbWVkIG91dCIsIlRpbWVvdXRFcnJvciIpKX0sYSk7cmV0dXJuIGIuc2lnbmFsfTtiQWE9ZnVuY3Rpb24oYSxiKXthJiZiJiZhLmFkZEV2ZW50TGlzdGVuZXIoImFib3J0IixiKX07ZEFhPWZ1bmN0aW9uKGEpe2lmKGEhPT1jQWEpdGhyb3cgYTt9O2dBYT1mdW5jdGlvbigpe2VBYSgpO3JldHVybiBmQWF9OwplQWE9ZnVuY3Rpb24oKXtpZighaEFhKXtoQWE9ITA7aUFhPW5ldyBqQWE7dmFyIGE9e0hRYzppQWF9O2ZBYT1uZXcgKF8ua0FhfHxfLmxBYSkoYSk7bUFhPW5ldyBfLm5BYShhKTtvQWE9Wy4uLl8ucEFhXS5tYXAoYj0+bmV3IGIoYSkpO3FBYSgpfX07cUFhPWZ1bmN0aW9uKCl7Zm9yKGxldCBhIG9mIG9BYSk7ckFhKGlBYSxmQWEsbUFhLC4uLm9BYSl9O18udUFhPWZ1bmN0aW9uKGEsYixjLGQsZSl7TWF0aC5yYW5kb20oKTxkJiYoZT1lP25ldyBNYXAoWy4uLmUoKV0pOm5ldyBNYXAsZS5zZXQoImN0Iiwic2lsayIpLnNldCgiciIsZC50b1N0cmluZygpKSxhJiZlLnNldCgicyIsYSksYiYmZS5zZXQoIm0iLGIpLGUuc2V0KCJ0IixjLnRvU3RyaW5nKCkpLGUuc2V0KCJjIixfLnNBYSksdEFhKGUpKX07Cl8uR2k9ZnVuY3Rpb24oe3NlcnZpY2VOYW1lOmEsamQ6YixubTpjfSx7c2FtcGxlUmF0ZTpkPS4wMX09e30pe3ZhciBlPShuZXcgTWFwKS5zZXQoImwiLCgxKS50b1N0cmluZygpKTtfLnVBYShhLGIsYyxkLCgpPT5lKX07CnZBYT1mdW5jdGlvbihhKXt2YXIgYj1uZXcgTWFwO2EualFiJiZiLnNldCgiamQiLGEualFiKTthLmgxYiYmYi5zZXQoIm50dCIsYS5oMWIpO2EubWVhJiYoYi5zZXQoIm50dHdjIiwoYS5tZWEuSFpiLWEubWVhLkdaYikudG9TdHJpbmcoKSksYi5zZXQoIndkIiwoYS5tZWEuVkZjLWEubWVhLkdaYikudG9TdHJpbmcoKSksYi5zZXQoIm5kIixhLm1lYS5XRmMudG9TdHJpbmcoKSksYi5zZXQoIm1lIixhLm1lYS5qRmMudG9TdHJpbmcoKSksYi5zZXQoIm5yIixhLm1lYS5hR2MudG9TdHJpbmcoKSksYi5zZXQoIndyIiwoYS5tZWEuSFpiLWEubWVhLlpGYykudG9TdHJpbmcoKSkpO2EuQjViJiZiLnNldCgianIiLGEuQjViKTtyZXR1cm5bLi4uYl0ubWFwKChbYyxkXSk9PmAke2N9LiR7ZH1gKS5qb2luKCIsIil9OwpfLnhBYT1mdW5jdGlvbih7c2VydmljZU5hbWU6YSxqZDpiLG5tOmN9LHtzYW1wbGVSYXRlOmQ9LjAxfT17fSxlKXthJiZ3QWEuaGFzKGEpJiYoZD0uMDAxKTtfLnVBYShhLGIsYyxkLCgpPT57dmFyIGY9KG5ldyBNYXApLnNldCgibCIsKDQpLnRvU3RyaW5nKCkpO2lmKGUpe2xldCBnPWUoKTtmLnNldCgiZCIsdkFhKGcpKX1yZXR1cm4gZn0pfTtfLnlBYT1mdW5jdGlvbih7c2VydmljZU5hbWU6YSxqZDpiLG5tOmN9LGQpe3ZhciBlPShuZXcgTWFwKS5zZXQoImwiLCgyKS50b1N0cmluZygpKS5zZXQoImUiLGQudG9TdHJpbmcoKSk7Xy51QWEoYSxiLGMsLjAxLCgpPT5lKX07Xy5IaT1mdW5jdGlvbih7c2VydmljZU5hbWU6YSxqZDpiLG5tOmN9LGQpe3ZhciBlPShuZXcgTWFwKS5zZXQoImwiLCgzKS50b1N0cmluZygpKS5zZXQoImUiLGQudG9TdHJpbmcoKSk7Xy51QWEoYSxiLGMsMSwoKT0+ZSl9OwpfLnpBYT1mdW5jdGlvbihhLGIpe18uSGkoe3NlcnZpY2VOYW1lOmIhPW51bGw/YjoiaW5mcmEtdW5rbm93biIsamQ6ImluZnJhLXVua25vd24iLG5tOjV9LGEpfTtfLklpPWZ1bmN0aW9uKGEsYil7dmFyIGM9Xy5BQWEoKTtfLkhpKHtzZXJ2aWNlTmFtZTphLGpkOmIsbm06MX0sYyk7cmV0dXJuIFByb21pc2UucmVqZWN0KGMpfTtfLkJBYT1mdW5jdGlvbigpe307Xy5DQWE9ZnVuY3Rpb24oYSl7aWYoIWEpcmV0dXJue307dHJ5e3JldHVybiBKU09OLnBhcnNlKGEpfWNhdGNoKGIpe3Rocm93IG5ldyBfLlhlKDEsYEVycm9yIHdoaWxlIHBhcnNpbmcgSlNPTiByZXNwb25zZSAke2F9YCxiKTt9fTtFQWE9T2JqZWN0LmRlZmluZVByb3BlcnR5OwpGQWE9ZnVuY3Rpb24oYSl7YT1bIm9iamVjdCI9PXR5cGVvZiBnbG9iYWxUaGlzJiZnbG9iYWxUaGlzLGEsIm9iamVjdCI9PXR5cGVvZiB3aW5kb3cmJndpbmRvdywib2JqZWN0Ij09dHlwZW9mIHNlbGYmJnNlbGYsIm9iamVjdCI9PXR5cGVvZiBnbG9iYWwmJmdsb2JhbF07Zm9yKHZhciBiPTA7YjxhLmxlbmd0aDsrK2Ipe3ZhciBjPWFbYl07aWYoYyYmYy5NYXRoPT1NYXRoKXJldHVybiBjfXRocm93IEVycm9yKCJhIik7fTtHQWE9RkFhKHRoaXMpO0hBYT0iSW50OCBVaW50OCBVaW50OENsYW1wZWQgSW50MTYgVWludDE2IEludDMyIFVpbnQzMiBGbG9hdDMyIEZsb2F0NjQiLnNwbGl0KCIgIik7R0FhLkJpZ0ludDY0QXJyYXkmJihIQWEucHVzaCgiQmlnSW50NjQiKSxIQWEucHVzaCgiQmlnVWludDY0IikpOwp2YXIgSkFhPWZ1bmN0aW9uKGEsYil7aWYoYilmb3IodmFyIGM9MDtjPEhBYS5sZW5ndGg7YysrKUlBYShIQWFbY10rIkFycmF5LnByb3RvdHlwZS4iK2EsYil9LEppPWZ1bmN0aW9uKGEsYil7YiYmSUFhKGEsYil9LElBYT1mdW5jdGlvbihhLGIpe3ZhciBjPUdBYTthPWEuc3BsaXQoIi4iKTtmb3IodmFyIGQ9MDtkPGEubGVuZ3RoLTE7ZCsrKXt2YXIgZT1hW2RdO2lmKCEoZSBpbiBjKSlyZXR1cm47Yz1jW2VdfWE9YVthLmxlbmd0aC0xXTtkPWNbYV07Yj1iKGQpO2IhPWQmJmIhPW51bGwmJkVBYShjLGEse2NvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMCx2YWx1ZTpifSl9O0ppKCJBc3luY0NvbnRleHQiLGZ1bmN0aW9uKGEpe2Z1bmN0aW9uIGIoYyl7dHJ5e3JldHVybiBjJiYoREFhPWNbIkFcdTFkOWNzdGF0ZSJdfHwoY1siQVx1MWQ5Y3N0YXRlIl09W10pKX1jYXRjaChkKXt9fWIoR0FhLnRvcCl8fGIoR0FhKXx8Yih7fSk7cmV0dXJuIGF8fHt9fSk7TEFhPWZ1bmN0aW9uKCl7cmV0dXJuIEtBYX07Cl8uTWY9ZnVuY3Rpb24oKXtyZXR1cm4gTEFhfTtLQWE9ZnVuY3Rpb24oYSl7cmV0dXJuIGF9O01BYT1mdW5jdGlvbihhKXt2YXIgYj1EQWE7aWYoIWJbMF0pcmV0dXJuIGE7dmFyIGM9YlswXTtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgZD1iWzBdO2JbMF09Yzt0cnl7cmV0dXJuIGEuYXBwbHkodGhpcyxhcmd1bWVudHMpfWZpbmFsbHl7YlswXT1kfX19O05BYT1PYmplY3QuY3JlYXRlO09BYT1PYmplY3Quc2V0UHJvdG90eXBlT2Y7UEFhPWZ1bmN0aW9uKGEsYil7YS5wcm90b3R5cGU9TkFhKGIucHJvdG90eXBlKTthLnByb3RvdHlwZS5jb25zdHJ1Y3Rvcj1hO09BYShhLGIpO2EuUmQ9Yi5wcm90b3R5cGV9O1FBYT1mdW5jdGlvbihhKXt2YXIgYj0wO3JldHVybiBmdW5jdGlvbigpe3JldHVybiBiPGEubGVuZ3RoP3tkb25lOiExLHZhbHVlOmFbYisrXX06e2RvbmU6ITB9fX07Cl8uU0FhPWZ1bmN0aW9uKGEpe3ZhciBiPWFbU3ltYm9sLmFzeW5jSXRlcmF0b3JdO2lmKGIhPT12b2lkIDApYT1iLmNhbGwoYSk7ZWxzZXtiPVJBYTt2YXIgYz10eXBlb2YgU3ltYm9sIT0idW5kZWZpbmVkIiYmU3ltYm9sLml0ZXJhdG9yJiZhW1N5bWJvbC5pdGVyYXRvcl07aWYoYylhPWMuY2FsbChhKTtlbHNlIGlmKHR5cGVvZiBhLmxlbmd0aD09Im51bWJlciIpYT17bmV4dDpRQWEoYSl9O2Vsc2UgdGhyb3cgRXJyb3IoImJgIitTdHJpbmcoYSkpO2E9bmV3IGIoYSl9cmV0dXJuIGF9OwpSQWE9ZnVuY3Rpb24oYSl7dGhpc1tTeW1ib2wuYXN5bmNJdGVyYXRvcl09ZnVuY3Rpb24oKXtyZXR1cm4gdGhpc307dGhpc1tTeW1ib2wuaXRlcmF0b3JdPWZ1bmN0aW9uKCl7cmV0dXJuIGF9O3RoaXMubmV4dD1mdW5jdGlvbihiKXtyZXR1cm4gUHJvbWlzZS5yZXNvbHZlKGEubmV4dChiKSl9O3RoaXNbInRocm93Il09ZnVuY3Rpb24oYil7cmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uKGMsZCl7dmFyIGU9YVsidGhyb3ciXTtlIT09dm9pZCAwP2MoZS5jYWxsKGEsYikpOihjPWFbInJldHVybiJdLGMhPT12b2lkIDAmJmMuY2FsbChhKSxkKG5ldyBUeXBlRXJyb3IoImMiKSkpfSl9O2FbInJldHVybiJdIT09dm9pZCAwJiYodGhpc1sicmV0dXJuIl09ZnVuY3Rpb24oYil7cmV0dXJuIFByb21pc2UucmVzb2x2ZShhWyJyZXR1cm4iXShiKSl9KX07SmkoImdsb2JhbFRoaXMiLGZ1bmN0aW9uKGEpe3JldHVybiBhfHxHQWF9KTsKSmkoIlN5bWJvbC5kaXNwb3NlIixmdW5jdGlvbihhKXtyZXR1cm4gYT9hOlN5bWJvbCgiZyIpfSk7SmkoIlN1cHByZXNzZWRFcnJvciIsZnVuY3Rpb24oYSl7ZnVuY3Rpb24gYihjLGQsZSl7aWYoISh0aGlzIGluc3RhbmNlb2YgYikpcmV0dXJuIG5ldyBiKGMsZCxlKTtlPUVycm9yKGUpOyJzdGFjayJpbiBlJiYodGhpcy5zdGFjaz1lLnN0YWNrKTt0aGlzLm1lc3NhZ2U9ZS5tZXNzYWdlO3RoaXMuZXJyb3I9Yzt0aGlzLnN1cHByZXNzZWQ9ZH1pZihhKXJldHVybiBhO1BBYShiLEVycm9yKTtiLnByb3RvdHlwZS5uYW1lPSJTdXBwcmVzc2VkRXJyb3IiO3JldHVybiBifSk7CkppKCJPYmplY3QuZnJvbUVudHJpZXMiLGZ1bmN0aW9uKGEpe3JldHVybiBhP2E6ZnVuY3Rpb24oYil7dmFyIGM9e307aWYoIShTeW1ib2wuaXRlcmF0b3IgaW4gYikpdGhyb3cgbmV3IFR5cGVFcnJvcigiaGAiK2IpO2I9YltTeW1ib2wuaXRlcmF0b3JdLmNhbGwoYik7Zm9yKHZhciBkPWIubmV4dCgpOyFkLmRvbmU7ZD1iLm5leHQoKSl7ZD1kLnZhbHVlO2lmKE9iamVjdChkKSE9PWQpdGhyb3cgbmV3IFR5cGVFcnJvcigiaSIpO2NbZFswXV09ZFsxXX1yZXR1cm4gY319KTsKSmkoIlN0cmluZy5wcm90b3R5cGUucmVwbGFjZUFsbCIsZnVuY3Rpb24oYSl7cmV0dXJuIGE/YTpmdW5jdGlvbihiLGMpe2lmKGIgaW5zdGFuY2VvZiBSZWdFeHAmJiFiLmdsb2JhbCl0aHJvdyBuZXcgVHlwZUVycm9yKCJqIik7cmV0dXJuIGIgaW5zdGFuY2VvZiBSZWdFeHA/dGhpcy5yZXBsYWNlKGIsYyk6dGhpcy5yZXBsYWNlKG5ldyBSZWdFeHAoU3RyaW5nKGIpLnJlcGxhY2UoLyhbLSgpXFtcXXt9Kz8qLiRcXnwsOiM8IVxcXSkvZywiXFwkMSIpLnJlcGxhY2UoL1x4MDgvZywiXFx4MDgiKSwiZyIpLGMpfX0pO0ppKCJTdHJpbmcucHJvdG90eXBlLnRyaW1MZWZ0IixmdW5jdGlvbihhKXtmdW5jdGlvbiBiKCl7cmV0dXJuIHRoaXMucmVwbGFjZSgvXltcc1x4YTBdKy8sIiIpfXJldHVybiBhfHxifSk7SmkoIlN0cmluZy5wcm90b3R5cGUudHJpbVN0YXJ0IixmdW5jdGlvbihhKXtyZXR1cm4gYXx8U3RyaW5nLnByb3RvdHlwZS50cmltTGVmdH0pOwpKaSgiU2V0LnByb3RvdHlwZS5kaWZmZXJlbmNlIixmdW5jdGlvbihhKXtyZXR1cm4gYT9hOmZ1bmN0aW9uKGIpe1RBYSh0aGlzKTtVQWEoYik7dmFyIGM9VkFhKHRoaXMsYik7Yj1uZXcgU2V0KHRoaXMpO3ZhciBkPWMuQ0RiO2M9Yy5QdmI7Zm9yKHZhciBlPWQubmV4dCgpOyFlLmRvbmU7KWMuaGFzKGUudmFsdWUpJiZiLmRlbGV0ZShlLnZhbHVlKSxlPWQubmV4dCgpO3JldHVybiBifX0pO0ppKCJTZXQucHJvdG90eXBlLmludGVyc2VjdGlvbiIsZnVuY3Rpb24oYSl7cmV0dXJuIGE/YTpmdW5jdGlvbihiKXtUQWEodGhpcyk7VUFhKGIpO3ZhciBjPW5ldyBTZXQsZD1WQWEodGhpcyxiKTtiPWQuQ0RiO2Q9ZC5QdmI7Zm9yKHZhciBlPWIubmV4dCgpOyFlLmRvbmU7KWQuaGFzKGUudmFsdWUpJiZjLmFkZChlLnZhbHVlKSxlPWIubmV4dCgpO3JldHVybiBjfX0pOwp2YXIgVUFhPWZ1bmN0aW9uKGEpe2lmKHR5cGVvZiBhIT09Im9iamVjdCJ8fGE9PT1udWxsfHx0eXBlb2YgYS5zaXplIT09Im51bWJlciJ8fGEuc2l6ZTwwfHx0eXBlb2YgYS5rZXlzIT09ImZ1bmN0aW9uInx8dHlwZW9mIGEuaGFzIT09ImZ1bmN0aW9uIil0aHJvdyBuZXcgVHlwZUVycm9yKCJrIik7fSxWQWE9ZnVuY3Rpb24oYSxiKXtpZihhLnNpemU8PWIuc2l6ZSlhPXtDRGI6YS5rZXlzKCksUHZiOmJ9O2Vsc2V7Yj1iLmtleXMoKTtpZih0eXBlb2YgYiE9PSJvYmplY3QifHxiPT09bnVsbHx8dHlwZW9mIGIubmV4dCE9PSJmdW5jdGlvbiIpdGhyb3cgbmV3IFR5cGVFcnJvcigibCIpO2E9e0NEYjpiLFB2YjphfX1yZXR1cm4gYX0sVEFhPWZ1bmN0aW9uKGEpe2lmKCEoYSBpbnN0YW5jZW9mIFNldCkpdGhyb3cgbmV3IFR5cGVFcnJvcigibSIpO307CkppKCJTdHJpbmcucHJvdG90eXBlLm1hdGNoQWxsIixmdW5jdGlvbihhKXtyZXR1cm4gYT9hOmZ1bmN0aW9uKGIpe2lmKGIgaW5zdGFuY2VvZiBSZWdFeHAmJiFiLmdsb2JhbCl0aHJvdyBuZXcgVHlwZUVycm9yKCJuIik7dmFyIGM9bmV3IFJlZ0V4cChiLGIgaW5zdGFuY2VvZiBSZWdFeHA/dm9pZCAwOiJnIiksZD10aGlzLGU9ITEsZj17bmV4dDpmdW5jdGlvbigpe2lmKGUpcmV0dXJue3ZhbHVlOnZvaWQgMCxkb25lOiEwfTt2YXIgZz1jLmV4ZWMoZCk7aWYoIWcpcmV0dXJuIGU9ITAse3ZhbHVlOnZvaWQgMCxkb25lOiEwfTtnWzBdPT09IiImJihjLmxhc3RJbmRleCs9MSk7cmV0dXJue3ZhbHVlOmcsZG9uZTohMX19fTtmW1N5bWJvbC5pdGVyYXRvcl09ZnVuY3Rpb24oKXtyZXR1cm4gZn07cmV0dXJuIGZ9fSk7CkppKCJTdHJpbmcucHJvdG90eXBlLnRyaW1SaWdodCIsZnVuY3Rpb24oYSl7ZnVuY3Rpb24gYigpe3JldHVybiB0aGlzLnJlcGxhY2UoL1tcc1x4YTBdKyQvLCIiKX1yZXR1cm4gYXx8Yn0pO0ppKCJTdHJpbmcucHJvdG90eXBlLnRyaW1FbmQiLGZ1bmN0aW9uKGEpe3JldHVybiBhfHxTdHJpbmcucHJvdG90eXBlLnRyaW1SaWdodH0pO3ZhciBXQWE9ZnVuY3Rpb24oYSl7YT1NYXRoLnRydW5jKGEpfHwwO2E8MCYmKGErPXRoaXMubGVuZ3RoKTtpZighKGE8MHx8YT49dGhpcy5sZW5ndGgpKXJldHVybiB0aGlzW2FdfTtKaSgiQXJyYXkucHJvdG90eXBlLmF0IixmdW5jdGlvbihhKXtyZXR1cm4gYT9hOldBYX0pO0pBYSgiYXQiLGZ1bmN0aW9uKGEpe3JldHVybiBhP2E6V0FhfSk7SmkoIlN0cmluZy5wcm90b3R5cGUuYXQiLGZ1bmN0aW9uKGEpe3JldHVybiBhP2E6V0FhfSk7CnZhciBYQWE9e30sWUFhPWZ1bmN0aW9uKCl7aWYodHlwZW9mIEdBYS5FdmVudFRhcmdldD09PSJmdW5jdGlvbiIpdmFyIGE9R0FhLkV2ZW50VGFyZ2V0LnByb3RvdHlwZTtlbHNlIGZvcihhPUdBYTthJiYhT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGEsImFkZEV2ZW50TGlzdGVuZXIiKTspYT1hLl9fcHJvdG9fXztpZihhKXt2YXIgYj1hLnJlbW92ZUV2ZW50TGlzdGVuZXIsYz1hLmFkZEV2ZW50TGlzdGVuZXIsZD1uZXcgV2Vha01hcCxlPXt9O2EucmVtb3ZlRXZlbnRMaXN0ZW5lcj1mdW5jdGlvbihmLGcsaCl7dmFyIGs9ZC5nZXQoZyE9bnVsbD9nOmUpO2s9ayYmay5nZXQodGhpcyk7dmFyIG09ISh0eXBlb2YgaD09PSJib29sZWFuIj9oOmgmJmguY2FwdHVyZSkrZjtrJiZrW21dJiYoZz1rW21dLGRlbGV0ZSBrW21dKTtyZXR1cm4gYi5jYWxsKHRoaXMsZixnLGgpfTthLmFkZEV2ZW50TGlzdGVuZXI9ZnVuY3Rpb24oZixnLGgpe3ZhciBrPVhBYVtmXTtpZighaylyZXR1cm4gYy5jYWxsKHRoaXMsCmYsZyxoKTt2YXIgbT1nIT1udWxsP2c6ZSxuPWQuZ2V0KG0pO258fChuPW5ldyBXZWFrTWFwLGQuc2V0KG0sbikpO3ZhciBwPW4uZ2V0KHRoaXMpO3B8fChwPXt9LG4uc2V0KHRoaXMscCkpO3ZhciByPSEodHlwZW9mIGg9PT0iYm9vbGVhbiI/aDpoJiZoLmNhcHR1cmUpK2Y7aWYoIXBbcl0peyhtPWcpJiZ0eXBlb2YgbT09PSJvYmplY3QiJiYobT1mdW5jdGlvbigpe3ZhciB4PWcuaGFuZGxlRXZlbnQ7aWYodHlwZW9mIHg9PT0iZnVuY3Rpb24iKXJldHVybiB4LmFwcGx5KGcsYXJndW1lbnRzKX0pO2lmKG0pe2gmJmgub25jZSYmKG09ZnVuY3Rpb24oeCl7cmV0dXJuIGZ1bmN0aW9uKCl7aWYodHlwZW9mIHghPT0iZnVuY3Rpb24iKXRocm93IEVycm9yKCJvYCIreCk7ZGVsZXRlIHBbcl07cmV0dXJuIHguYXBwbHkodGhpcyxhcmd1bWVudHMpfX0obSkpO2ZvcihuPTA7bjxrLmxlbmd0aDtuKyspbT1rW25dKG0sZix0aGlzKTtpZihoJiZHQWEuQWJvcnRTaWduYWwmJmguc2lnbmFsIGluc3RhbmNlb2YKR0FhLkFib3J0U2lnbmFsKXtpZihoLnNpZ25hbC5hYm9ydGVkKXJldHVybjtoLnNpZ25hbC5hZGRFdmVudExpc3RlbmVyKCJhYm9ydCIsZnVuY3Rpb24oKXtkZWxldGUgcFtyXX0se29uY2U6ITB9KX19cFtyXT1tO3JldHVybiBjLmNhbGwodGhpcyxmLG0saCl9fTtZQWE9ZnVuY3Rpb24oKXt9fX0sWkFhPWZ1bmN0aW9uKGEpe3ZhciBiPVsicmVhZHlzdGF0ZWNoYW5nZSJdO1lBYSgpO2ZvcihsZXQgYz0wO2M8Yi5sZW5ndGg7YysrKShYQWFbYltjXV18fChYQWFbYltjXV09W10pKS5wdXNoKGEpfSxLaT1mdW5jdGlvbihhLGIpe0lBYShhLGZ1bmN0aW9uKGMpe3JldHVybiBjJiZiKGMpfSl9LCRBYT0hMTsKSmkoIkFzeW5jQ29udGV4dC5WYXJpYWJsZSIsZnVuY3Rpb24oYSl7ZnVuY3Rpb24gYihlKXt0aGlzLm5hbWU9ZSYmZS5uYW1lfHwiIjt0aGlzLmluZGV4PWRbMV0rKzt0aGlzLmRlZmF1bHRWYWx1ZT1lP2UuZGVmYXVsdFZhbHVlOnZvaWQgMH1pZihhKXt2YXIgYz1hWyJcdTFkNDNcdTFkOWNzdGFydCJdO3R5cGVvZiBjPT09ImZ1bmN0aW9uIiYmKF8uTWY9Yyk7Yz1hLl9KU0M7dHlwZW9mIGM9PT0iZnVuY3Rpb24iJiYoTEFhPWMpO3JldHVybiBhfSRBYT0hMDtLQWE9ZnVuY3Rpb24oZSl7cmV0dXJuIGV9O3ZhciBkPURBYTtkWzBdPWRbMF18fFtdO2RbMV09ZFsxXXx8MDtiLnByb3RvdHlwZS5nZXQ9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5pbmRleCBpbiBkWzBdP2RbMF1bdGhpcy5pbmRleF06dGhpcy5kZWZhdWx0VmFsdWV9O2IucHJvdG90eXBlLnJ1bj1mdW5jdGlvbihlLGYsZyl7dmFyIGg9ZFswXTsoZFswXT1oLnNsaWNlKCkpW3RoaXMuaW5kZXhdPWU7dHJ5e3JldHVybiBmLmFwcGx5KG51bGwsCkFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cywyKSl9ZmluYWxseXtkWzBdPWh9fTtiWyJcdTFkNDNcdTFkOWNzdGFydCJdPV8uTWY9ZnVuY3Rpb24oZSl7dmFyIGY9ZFswXSxnPWU/dm9pZCAwOmRbMF07cmV0dXJuIGZ1bmN0aW9uKGgpe3JldHVybiBoP2Z1bmN0aW9uKGspe2c9Z3x8ZFswXTtkWzBdPWY7cmV0dXJuIGt9OmZ1bmN0aW9uKGspe2cmJihkWzBdPWcsZz12b2lkIDApO3JldHVybiBrfX19O2IuX0pTQz1MQWE9ZnVuY3Rpb24oZSl7dmFyIGY9KDAsXy5NZikoZSk7cmV0dXJuIGZ1bmN0aW9uKGcsaCl7cmV0dXJuIGYoaCkoZyl9fTtyZXR1cm4gYn0pOwokQWEmJmZ1bmN0aW9uKCl7dmFyIGE9ZnVuY3Rpb24oZCl7dmFyIGU9YXJndW1lbnRzO3JldHVybiBmdW5jdGlvbihmKXtmdW5jdGlvbiBnKCl7Zm9yKHZhciBoPTA7aDxlLmxlbmd0aDtoKyspe3ZhciBrPWVbaF0sbT1hcmd1bWVudHNba107dHlwZW9mIG09PT0iZnVuY3Rpb24iJiYoYXJndW1lbnRzW2tdPU1BYShtKSl9cmV0dXJuIGYuYXBwbHkodGhpcyxhcmd1bWVudHMpfWlmKCFmKXJldHVybiBmO3RyeXtFQWEoZywibmFtZSIse3ZhbHVlOmYubmFtZX0pLEVBYShnLCJsZW5ndGgiLHt2YWx1ZTpmLmxlbmd0aH0pLEVBYShnLCJ0b1N0cmluZyIse2VudW1lcmFibGU6ITEsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuIGYudG9TdHJpbmcoKX19KX1jYXRjaChoKXt9cmV0dXJuIGd9fSxiPWEoMCk7S2koIlByb21pc2UiLGZ1bmN0aW9uKGQpe3ZhciBlPWQucHJvdG90eXBlO2UudGhlbj1hKDAsMSkoZS50aGVuKTtlLmNhdGNoPWIoZS5jYXRjaCk7CmUuZmluYWxseT1iKGUuZmluYWxseSk7cmV0dXJuIGR9KTtLaSgicXVldWVNaWNyb3Rhc2siLGIpO0tpKCJyZXF1ZXN0QW5pbWF0aW9uRnJhbWUiLGIpO0tpKCJyZXF1ZXN0SWRsZUNhbGxiYWNrIixiKTtLaSgic2V0SW50ZXJ2YWwiLGIpO0tpKCJzZXRUaW1lb3V0IixiKTtLaSgic2NoZWR1bGVyLnBvc3RUYXNrIixiKTtLaSgiSFRNTENhbnZhc0VsZW1lbnQucHJvdG90eXBlLnRvQmxvYiIsYik7S2koIkRhdGFiYXNlLnByb3RvdHlwZS50cmFuc2FjdGlvbiIsYSgwLDEsMikpO0tpKCJCYXNlQXVkaW9Db250ZXh0LnByb3RvdHlwZS5kZWNvZGVBdWRpb0RhdGEiLGEoMSwyKSk7S2koIkZpbGVTeXN0ZW1FbnRyeS5wcm90b3R5cGUuZ2V0UGFyZW50IixhKDAsMSkpO0tpKCJGaWxlU3lzdGVtRGlyZWN0b3J5RW50cnkucHJvdG90eXBlLmdldEZpbGUiLGEoMiwzKSk7S2koIkZpbGVTeXN0ZW1EaXJlY3RvcnlFbnRyeS5wcm90b3R5cGUuZ2V0RGlyZWN0b3J5IixhKDIsMykpO0tpKCJGaWxlU3lzdGVtRmlsZUVudHJ5LnByb3RvdHlwZS5maWxlIiwKYSgwLDEpKTtLaSgiTWVkaWFTZXNzaW9uLnByb3RvdHlwZS5zZXRBY3Rpb25IYW5kbGVyIixhKDEpKTt2YXIgYz1uZXcgV2Vha01hcDtLaSgiWE1MSHR0cFJlcXVlc3QucHJvdG90eXBlLnNlbmQiLGZ1bmN0aW9uKGQpe1pBYShmdW5jdGlvbihlKXtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgZj1EQWFbMF07dHJ5e3JldHVybiBEQWFbMF09Yy5nZXQodGhpcyl8fGYsZS5hcHBseSh0aGlzLGFyZ3VtZW50cyl9ZmluYWxseXtEQWFbMF09Zn19fSk7cmV0dXJuIGZ1bmN0aW9uKCl7Yy5zZXQodGhpcyxEQWFbMF0pO3JldHVybiBkLmFwcGx5KHRoaXMsYXJndW1lbnRzKX19KX0oKTtKaSgiT2JqZWN0Lmhhc093biIsZnVuY3Rpb24oYSl7cmV0dXJuIGE/YTpmdW5jdGlvbihiLGMpe3JldHVybiBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoYixjKX19KTsKSmkoIkFzeW5jQ29udGV4dC5TbmFwc2hvdCIsZnVuY3Rpb24oYSl7ZnVuY3Rpb24gYigpe3RoaXMua2E9Y1swXX1pZihhKXJldHVybiBhO3ZhciBjPURBYTtiLndyYXA9TUFhO2IucHJvdG90eXBlLnJ1bj1mdW5jdGlvbihkKXt2YXIgZT1jWzBdO2NbMF09dGhpcy5rYTt0cnl7cmV0dXJuIGQuYXBwbHkobnVsbCxBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMsMSkpfWZpbmFsbHl7Y1swXT1lfX07cmV0dXJuIGJ9KTtKaSgiUHJvbWlzZS53aXRoUmVzb2x2ZXJzIixmdW5jdGlvbihhKXtyZXR1cm4gYT9hOmZ1bmN0aW9uKCl7dmFyIGIsYztyZXR1cm57cHJvbWlzZTpuZXcgUHJvbWlzZShmdW5jdGlvbihkLGUpe2I9ZDtjPWV9KSxyZXNvbHZlOmIscmVqZWN0OmN9fX0pOwp2YXIgYUJhPWZ1bmN0aW9uKGEsYixjKXthIGluc3RhbmNlb2YgU3RyaW5nJiYoYT1TdHJpbmcoYSkpO2Zvcih2YXIgZD1hLmxlbmd0aC0xO2Q+PTA7ZC0tKXt2YXIgZT1hW2RdO2lmKGIuY2FsbChjLGUsZCxhKSlyZXR1cm57aTpkLHY6ZX19cmV0dXJue2k6LTEsdjp2b2lkIDB9fTtKaSgiQXJyYXkucHJvdG90eXBlLmZpbmRMYXN0SW5kZXgiLGZ1bmN0aW9uKGEpe3JldHVybiBhP2E6ZnVuY3Rpb24oYixjKXtyZXR1cm4gYUJhKHRoaXMsYixjKS5pfX0pO0pBYSgiZmluZExhc3RJbmRleCIsZnVuY3Rpb24oYSl7cmV0dXJuIGE/YTpmdW5jdGlvbihiLGMpe3JldHVybiBhQmEodGhpcyxiLGMpLml9fSk7CkppKCJQcm9taXNlLmFsbFNldHRsZWQiLGZ1bmN0aW9uKGEpe2Z1bmN0aW9uIGIoZCl7cmV0dXJue3N0YXR1czoiZnVsZmlsbGVkIix2YWx1ZTpkfX1mdW5jdGlvbiBjKGQpe3JldHVybntzdGF0dXM6InJlamVjdGVkIixyZWFzb246ZH19cmV0dXJuIGE/YTpmdW5jdGlvbihkKXt2YXIgZT10aGlzO2Q9QXJyYXkuZnJvbShkLGZ1bmN0aW9uKGYpe3JldHVybiBlLnJlc29sdmUoZikudGhlbihiLGMpfSk7cmV0dXJuIGUuYWxsKGQpfX0pO0ppKCJBZ2dyZWdhdGVFcnJvciIsZnVuY3Rpb24oYSl7aWYoYSlyZXR1cm4gYTthPWZ1bmN0aW9uKGIsYyl7Yz1FcnJvcihjKTsic3RhY2siaW4gYyYmKHRoaXMuc3RhY2s9Yy5zdGFjayk7dGhpcy5lcnJvcnM9Yjt0aGlzLm1lc3NhZ2U9Yy5tZXNzYWdlfTtQQWEoYSxFcnJvcik7YS5wcm90b3R5cGUubmFtZT0iQWdncmVnYXRlRXJyb3IiO3JldHVybiBhfSk7Cl8uX0R1bXBFeGNlcHRpb249d2luZG93Ll9EdW1wRXhjZXB0aW9ufHxmdW5jdGlvbihhKXt0aHJvdyBhO307d2luZG93Ll9EdW1wRXhjZXB0aW9uPV8uX0R1bXBFeGNlcHRpb247Z29vZ2xlLmMmJmdvb2dsZS50aWNrKCJsb2FkIiwieGpzZXMiKTtnb29nbGUucHBlJiYhZ29vZ2xlLnBlcCYmKGdvb2dsZS5wZXA9Z29vZ2xlLnNwKCkpO3ZhciBiQmEsTmksUGksY0JhLGRCYSxlQmEsV2RhO2JCYT1iQmF8fHt9O18uZWE9dGhpc3x8c2VsZjtfLkxpPWZ1bmN0aW9uKGEsYixjKXthPWEuc3BsaXQoIi4iKTtjPWN8fF8uZWE7Zm9yKHZhciBkO2EubGVuZ3RoJiYoZD1hLnNoaWZ0KCkpOylhLmxlbmd0aHx8Yj09PXZvaWQgMD9jW2RdJiZjW2RdIT09T2JqZWN0LnByb3RvdHlwZVtkXT9jPWNbZF06Yz1jW2RdPXt9OmNbZF09Yn07Tmk9ZnVuY3Rpb24oYSxiKXt2YXIgYz1fLk1pKCJXSVpfZ2xvYmFsX2RhdGEub3hOM25iIik7YT1jJiZjW2FdO3JldHVybiBhIT1udWxsP2E6Yn07Xy5PaT1fLmVhLl94anNfdG9nZ2xlc3x8W107UGk9ZnVuY3Rpb24oKXt9O1BpLmdldD1mdW5jdGlvbigpe3JldHVybiBudWxsfTtfLk1pPWZ1bmN0aW9uKGEsYil7YT1hLnNwbGl0KCIuIik7Yj1ifHxfLmVhO2Zvcih2YXIgYz0wO2M8YS5sZW5ndGg7YysrKWlmKGI9YlthW2NdXSxiPT1udWxsKXJldHVybiBudWxsO3JldHVybiBifTsKXy5TaT1mdW5jdGlvbihhKXthLldvYT12b2lkIDA7YS5nZXRJbnN0YW5jZT1mdW5jdGlvbigpe3JldHVybiBhLldvYT9hLldvYTphLldvYT1uZXcgYX19O18udmNhPWZ1bmN0aW9uKGEpe3ZhciBiPXR5cGVvZiBhO3JldHVybiBiIT0ib2JqZWN0Ij9iOmE/QXJyYXkuaXNBcnJheShhKT8iYXJyYXkiOmI6Im51bGwifTtfLkhhPWZ1bmN0aW9uKGEpe3ZhciBiPV8udmNhKGEpO3JldHVybiBiPT0iYXJyYXkifHxiPT0ib2JqZWN0IiYmdHlwZW9mIGEubGVuZ3RoPT0ibnVtYmVyIn07Xy5wZz1mdW5jdGlvbihhKXt2YXIgYj10eXBlb2YgYTtyZXR1cm4gYj09Im9iamVjdCImJmEhPW51bGx8fGI9PSJmdW5jdGlvbiJ9O18uJGU9ZnVuY3Rpb24oYSl7cmV0dXJuIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChhLGNCYSkmJmFbY0JhXXx8KGFbY0JhXT0rK2RCYSl9O2NCYT0iY2xvc3VyZV91aWRfIisoTWF0aC5yYW5kb20oKSoxRTk+Pj4wKTtkQmE9MDsKZUJhPWZ1bmN0aW9uKGEsYixjKXtyZXR1cm4gYS5jYWxsLmFwcGx5KGEuYmluZCxhcmd1bWVudHMpfTtfLmllPWZ1bmN0aW9uKGEsYixjKXtfLmllPWVCYTtyZXR1cm4gXy5pZS5hcHBseShudWxsLGFyZ3VtZW50cyl9O18uVGk9ZnVuY3Rpb24oYSxiKXt2YXIgYz1BcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMsMSk7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIGQ9Yy5zbGljZSgpO2QucHVzaC5hcHBseShkLGFyZ3VtZW50cyk7cmV0dXJuIGEuYXBwbHkodGhpcyxkKX19O18ua2U9ZnVuY3Rpb24oKXtyZXR1cm4gRGF0ZS5ub3coKX07Xy52c2E9ZnVuY3Rpb24oYSxiKXtfLkxpKGEsYil9O1dkYT1mdW5jdGlvbihhKXtyZXR1cm4gYX07Cl8uVWk9ZnVuY3Rpb24oYSxiKXtmdW5jdGlvbiBjKCl7fWMucHJvdG90eXBlPWIucHJvdG90eXBlO2EuUmQ9Yi5wcm90b3R5cGU7YS5wcm90b3R5cGU9bmV3IGM7YS5wcm90b3R5cGUuY29uc3RydWN0b3I9YTthLmJhc2U9ZnVuY3Rpb24oZCxlLGYpe2Zvcih2YXIgZz1BcnJheShhcmd1bWVudHMubGVuZ3RoLTIpLGg9MjtoPGFyZ3VtZW50cy5sZW5ndGg7aCsrKWdbaC0yXT1hcmd1bWVudHNbaF07cmV0dXJuIGIucHJvdG90eXBlW2VdLmFwcGx5KGQsZyl9fTtfLlVpKF8uYmEsRXJyb3IpO18uYmEucHJvdG90eXBlLm5hbWU9IkN1c3RvbUVycm9yIjt2YXIgZkJhO18uVWkoXy5hYWEsXy5iYSk7Xy5hYWEucHJvdG90eXBlLm5hbWU9IkFzc2VydGlvbkVycm9yIjt2YXIgZ0JhPXZvaWQgMCxoQmEsaUJhPXR5cGVvZiBUZXh0RGVjb2RlciE9PSJ1bmRlZmluZWQiLGZhYSxlYWE9dHlwZW9mIFN0cmluZy5wcm90b3R5cGUuaXNXZWxsRm9ybWVkPT09ImZ1bmN0aW9uIixkYWE9dHlwZW9mIFRleHRFbmNvZGVyIT09InVuZGVmaW5lZCI7dmFyIGpCYSxrQmEsbEJhLG1CYSxuQmEsb0JhLHBCYTtfLm1hPWZ1bmN0aW9uKGEpe3JldHVybiBhLnRyaW0oKX07akJhPS8mL2c7a0JhPS88L2c7bEJhPS8+L2c7bUJhPS8iL2c7bkJhPS8nL2c7b0JhPS9ceDAwL2c7cEJhPS9bXHgwMCY8PiInXS87dmFyIFZpPSEhKF8uT2lbMjNdPj4yMSYxKSxxQmE9ISEoXy5PaVsyM10+PjE2JjEpLHJCYT0hIShfLk9pWzIzXT4+MjMmMSksc0JhPSEhKF8uT2lbMjJdPj4yOSYxKSx0QmE9ISEoXy5PaVsyM10mOCksdUJhPSEhKF8uT2lbMjNdPj4yNCYxKSx2QmE9ISEoXy5PaVsyM10mNTEyKSx3QmE9ISEoXy5PaVsyMl0+PjI3JjEpLHhCYT0hIShfLk9pWzIzXT4+MjImMSkseUJhPSEhKF8uT2lbMjJdPj4yOCYxKSx6QmE9ISEoXy5PaVsyM10mMjA0OCksQUJhPSEhKF8uT2lbMjNdJjQpLEJCYT0hIShfLk9pWzIzXT4+MTUmMSksQ0JhPSEhKF8uT2lbMjNdJjgxOTIpLERCYT0hIShfLk9pWzIzXT4+MTQmMSk7dmFyIEVCYSxHQmEsSEJhLExlYSwkbmEsTkJhLE9CYTtFQmE9TmkoMSwhMCk7Xy5vYWE9Vmk/ckJhOk5pKDYxMDQwMTMwMSwhMSk7Xy5GQmE9Vmk/c0JhOk5pKDUxMzY1OTUyMywhMSk7R0JhPVZpP3FCYXx8IXRCYTpOaSgxMzMxNzYxNDAzLCEwKTtIQmE9Vmk/dUJhOk5pKDY1MTE3NTgyOCwhMSk7TGVhPVZpP3FCYXx8IXZCYTpOaSg3NDg0MDIxNDcsITApO18uSUJhPVZpP3dCYTpOaSg4NjEzNzc3MjMsITEpO18uSkJhPVZpP3FCYXx8IXhCYTpOaSg4NjEzNzc3MjQsRUJhKTtfLktCYT1WaT9xQmF8fCF5QmE6TmkoODY5MzM2OTA0LEVCYSk7Xy5MQmE9Vmk/cUJhfHwhekJhOk5pKDg2OTMzNjkwNSxFQmEpO18uTUJhPVZpP0FCYTpOaSgyODM5NTMxNTUsITEpOyRuYT1WaT9CQmE6TmkoOTE5NDQ0ODI0LCExKTtOQmE9Vmk/Q0JhOk5pKDkyODg3NTM5OCwhMSk7T0JhPVZpP0RCYTpOaSg2ODM3NDkyMDEsITEpO3ZhciBQQmE7UEJhPV8uZWEubmF2aWdhdG9yO18ucGE9UEJhP1BCYS51c2VyQWdlbnREYXRhfHxudWxsOm51bGw7dmFyIFFCYT1jbGFzc3tjb25zdHJ1Y3RvcihhKXt0aGlzLmthPWF9VUhhKGEpe3JldHVybiBfLm5hKHRoaXMua2EsYSk+PTB9fTt2YXIgUkJhPW5ldyBjbGFzc3tjb25zdHJ1Y3Rvcigpe3RoaXMua2E9dGhpcy5vYT12b2lkIDA7dGhpcy53YT0hMX1BYSgpe2lmKF8ucGEpcmV0dXJuIHRoaXMub2F9YXN5bmMgbG9hZCgpe2lmKF8ucGEpcmV0dXJuIHRoaXMua2F8fCh0aGlzLndhPSEwLHRoaXMua2E9KGFzeW5jKCk9Pnt2YXIgYT0oMCxfLk1mKSgpLGI9YSgpO2E9YSgxKTt0cnl7dHJ5e3JldHVybiB0aGlzLm9hPWEoYXdhaXQgYihfLnBhLmdldEhpZ2hFbnRyb3B5VmFsdWVzKFsiZnVsbFZlcnNpb25MaXN0Il0pKSkuZnVsbFZlcnNpb25MaXN0fWZpbmFsbHl7YSgpLHRoaXMud2E9ITF9fWZpbmFsbHl7YigpfX0pKCkpLGF3YWl0IHRoaXMua2F9aHJhKCl7aWYodGhpcy53YSl0aHJvdyBFcnJvcigidyIpO3RoaXMub2E9dGhpcy5rYT12b2lkIDA7dGhpcy53YT0hMX19O18uTmE9e3FiYTp7ZFdjOiJBbmRyb2lkIEJyb3dzZXIiLHIyYToiQ2hyb21pdW0iLEdOYToiTWljcm9zb2Z0IEVkZ2UiLFFmYToiRmlyZWZveCIsUkNhOiJJbnRlcm5ldCBFeHBsb3JlciIsbE9hOiJPcGVyYSIsanRhOiJTYWZhcmkiLFJvZDoiU2lsayJ9fTtfLk5hLkR1Yj10YWE7Xy5OYS5icGE9dWFhO18uTmEuQzlhPXZhYTtfLk5hLmNDZD13YWE7Xy5OYS5yQ2Q9eGFhO18uTmEuWkhhPXlhYTtfLk5hLk15PUNhYTtfLk5hLlpCZD1BYWE7Xy5OYS55dWI9ZnVuY3Rpb24oKXtyZXR1cm4oXy5xYSgiaVBhZCIpfHxfLnFhKCJpUGhvbmUiKSkmJiFDYWEoKSYmIXphYSgpJiYhQWFhKCkmJiF5YWEoKSYmXy5xYSgiQXBwbGVXZWJLaXQiKX07Xy5OYS5TVz16YWE7Xy5OYS5SVWE9RGFhO18uTmEuTEJjPUJhYTtfLk5hLmdldFZlcnNpb249R2FhO18uTmEuWEJjPWZ1bmN0aW9uKCl7cmV0dXJuIF8ubmEoR2FhKCksMTApPj0wfTtfLk5hLlVIYT1KYWE7Cl8uTmEuU1VhPWZ1bmN0aW9uKGEsYil7cmV0dXJuIElhYShhKTw9Yn07dmFyIEthYT1jbGFzc3tjb25zdHJ1Y3RvcihhLGIsYyl7dGhpcy5vYT1hO3RoaXMua2E9bmV3IFFCYShjKTt0aGlzLndhPWJ9QWEoKXtpZih0aGlzLndhKXt2YXIgYT1SQmEuQWEoKTtpZihhIT09dm9pZCAwKXJldHVybiBhPWEuZmluZCgoe2JyYW5kOmJ9KT0+dGhpcy5vYT09PWIpLG5ldyBRQmEoYS52ZXJzaW9uKX1pZihTQmEpcmV0dXJuIHRoaXMua2F9YXN5bmMgbG9hZCgpe3ZhciBhPSgwLF8uTWYpKCksYj1hKCk7YT1hKDEpO3RyeXtpZih0aGlzLndhKXtsZXQgYz1hKGF3YWl0IGIoUkJhLmxvYWQoKSkpO2lmKGMhPT12b2lkIDApe2xldCBkPWMuZmluZCgoe2JyYW5kOmV9KT0+dGhpcy5vYT09PWUpO3JldHVybiBuZXcgUUJhKGQudmVyc2lvbil9fWVsc2UgYShhd2FpdCBiKDApKTtTQmE9ITA7cmV0dXJuIHRoaXMua2F9ZmluYWxseXtiKCl9fX0sU0JhPSExOwpfLk5hLmlEZD1hc3luYyBmdW5jdGlvbigpe3ZhciBhPSgwLF8uTWYpKCksYj1hKCk7YT1hKDEpO3RyeXtzYWEoITApJiZhKGF3YWl0IGIoUkJhLmxvYWQoKSkpLFNCYT0hMH1maW5hbGx5e2IoKX19O18uTmEuaHJhPSgpPT57U0JhPSExO1JCYS5ocmEoKX07Xy5OYS5IQWQ9TGFhO18uTmEuakJkPWZ1bmN0aW9uKGEpe2lmKHNhYSghMCkpe3ZhciBiPUxhYShhKTtyZXR1cm4gYj8oYj1iLkFhKCkpP2Iua2E6Xy5wYS5icmFuZHMuZmluZCgoe2JyYW5kOmN9KT0+Yz09PWEpLnZlcnNpb246IiJ9cmV0dXJuIEhhYShhKX07Xy56YT1mdW5jdGlvbihhLGIsYyl7cmV0dXJuIEFycmF5LnByb3RvdHlwZS5pbmRleE9mLmNhbGwoYSxiLGMpfTtfLkxhPWZ1bmN0aW9uKGEsYixjKXtBcnJheS5wcm90b3R5cGUuZm9yRWFjaC5jYWxsKGEsYixjKX07Xy5XaT1mdW5jdGlvbihhLGIpe3JldHVybiBBcnJheS5wcm90b3R5cGUuZmlsdGVyLmNhbGwoYSxiLHZvaWQgMCl9O18uWGk9ZnVuY3Rpb24oYSxiLGMpe3JldHVybiBBcnJheS5wcm90b3R5cGUubWFwLmNhbGwoYSxiLGMpfTtfLlRCYT1mdW5jdGlvbihhLGIsYyl7cmV0dXJuIEFycmF5LnByb3RvdHlwZS5yZWR1Y2UuY2FsbChhLGIsYyl9O18uWWk9ZnVuY3Rpb24oYSxiLGMpe3JldHVybiBBcnJheS5wcm90b3R5cGUuc29tZS5jYWxsKGEsYixjKX07Xy5aaT1mdW5jdGlvbihhKXtfLlppWyIgIl0oYSk7cmV0dXJuIGF9O18uWmlbIiAiXT1mdW5jdGlvbigpe307dmFyIGFuYT1mdW5jdGlvbihhLGIsYyxkKXtkPWQ/ZChiKTpiO3JldHVybiBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoYSxkKT9hW2RdOmFbZF09YyhiKX07dmFyICRCYSxmQ2EsakNhO18uVUJhPWZ1bmN0aW9uKCl7cmV0dXJuIF8uZWEubmF2aWdhdG9yfHxudWxsfTtfLlZCYT1fLk5hLkR1YigpO18uJGk9Xy5OYS5icGEoKTtfLldCYT1fLnFhKCJFZGdlIik7Xy5YQmE9Xy5XQmF8fF8uJGk7Xy5PZD1fLmhiYSgpO18uTmQ9Xy5nYmEoKTtfLllCYT1fLk5kJiZfLnFhKCJNb2JpbGUiKTskQmE9Xy5VQmEoKTtfLlpCYT0kQmEmJiRCYS5wbGF0Zm9ybXx8IiI7Xy5haj1fLk9hYSgpO18uYUNhPV8uUWFhKCk7Xy5iQ2E9Xy5QYWEoKXx8Xy5SYWEoKTtfLmNDYT1fLnJhKCk7Xy5kQ2E9Xy5OYWEoKTtfLmVDYT1fLnFhKCJpUGFkIik7ZkNhPV8ucWEoImlQb2QiKTtfLnBsYT1fLnNhKCk7Xy5xYWEoKTt2YXIgZ0NhOwphOntsZXQgYT0iIixiPWZ1bmN0aW9uKCl7dmFyIGM9Xy5vYSgpO2lmKF8uT2QpcmV0dXJuL3J2OihbXlwpO10rKShcKXw7KS8uZXhlYyhjKTtpZihfLldCYSlyZXR1cm4vRWRnZVwvKFtcZFwuXSspLy5leGVjKGMpO2lmKF8uJGkpcmV0dXJuL1xiKD86TVNJRXxydilbOiBdKFteXCk7XSspKFwpfDspLy5leGVjKGMpO2lmKF8uTmQpcmV0dXJuL1dlYktpdFwvKFxTKykvLmV4ZWMoYyk7aWYoXy5WQmEpcmV0dXJuLyg/OlZlcnNpb24pWyBcL10/KFxTKykvLmV4ZWMoYyl9KCk7YiYmKGE9Yj9iWzFdOiIiKTtpZihfLiRpKXt2YXIgaENhO2xldCBjPV8uZWEuZG9jdW1lbnQ7aENhPWM/Yy5kb2N1bWVudE1vZGU6dm9pZCAwO2lmKGhDYSE9bnVsbCYmaENhPnBhcnNlRmxvYXQoYSkpe2dDYT1TdHJpbmcoaENhKTticmVhayBhfX1nQ2E9YX1fLmlDYT1nQ2E7akNhPXt9O18ua0NhPWZ1bmN0aW9uKGEpe3JldHVybiBhbmEoakNhLGEsZnVuY3Rpb24oKXtyZXR1cm4gXy5uYShfLmlDYSxhKT49MH0pfTt2YXIgbENhLG1DYSxuQ2Esb0NhLHBDYSxxQ2E7Xy5nZT17fTtsQ2E9Xy5OYS5aSGEoKTttQ2E9aWJhKCk7bkNhPV8ucWEoImlQYWQiKTtvQ2E9Xy5OYS5SVWEoKTtwQ2E9Xy5OYS5TVygpO3FDYT1qYmEoKTtfLmdlLkFORFJPSUQ9b0NhO18uZ2UueFdjPSExO18uZ2UueVdjPSExO18uZ2UueldjPSExO18uZ2UuQVdjPSExO18uZ2UuQldjPSExO18uZ2UuQ1djPSExO18uZ2UuQ0hST01FPXBDYTtfLmdlLkdOYT1fLldCYTtfLmdlLlFmYT1sQ2E7Xy5nZS5SQ2E9Xy4kaTtfLmdlLlFOYT1uQ2E7Xy5nZS5UQ2E9bUNhO18uZ2UubE9hPV8uVkJhO18uZ2UuanRhPXFDYTtfLmdlLm5DZD1pYmE7Xy5nZS53Q2Q9amJhO3ZhciBsYmE9e30sb2JhPW51bGw7dmFyIHJiYSxwYmEsckNhO3JiYT0vWy1fLl0vZztwYmE9eyItIjoiKyIsXzoiLyIsIi4iOiI9In07Xy53YmE9e307ckNhPXR5cGVvZiBzdHJ1Y3R1cmVkQ2xvbmUhPSJ1bmRlZmluZWQiO3ZhciBKZGEsc0NhO18uZWNhPWZ1bmN0aW9uKGEpe3JldHVybiBhP25ldyBfLlNhKGEsXy53YmEpOl8udmJhKCl9O18udmJhPWZ1bmN0aW9uKCl7cmV0dXJuIHNDYXx8KHNDYT1uZXcgXy5TYShudWxsLF8ud2JhKSl9O18uZmNhPWZ1bmN0aW9uKGEpe3JldHVybiBhLmxlbmd0aD9uZXcgXy5TYShuZXcgVWludDhBcnJheShhKSxfLndiYSk6Xy52YmEoKX07Xy5xYj1mdW5jdGlvbihhKXt2YXIgYj1hLmthO2lmKGI9PW51bGwpYT0iIjtlbHNlIGlmKHR5cGVvZiBiPT09InN0cmluZyIpYT1iO2Vsc2V7bGV0IGM9IiIsZD0wLGU9Yi5sZW5ndGgtMTAyNDA7Zm9yKDtkPGU7KWMrPVN0cmluZy5mcm9tQ2hhckNvZGUuYXBwbHkobnVsbCxiLnN1YmFycmF5KGQsZCs9MTAyNDApKTtjKz1TdHJpbmcuZnJvbUNoYXJDb2RlLmFwcGx5KG51bGwsZD9iLnN1YmFycmF5KGQpOmIpO2I9YnRvYShjKTthPWEua2E9Yn1yZXR1cm4gYX07Cl8uemJhPWZ1bmN0aW9uKGEpe2lmKF8ud2JhIT09Xy53YmEpdGhyb3cgRXJyb3IoInoiKTt2YXIgYj1hLmthO2I9Yj09bnVsbHx8dGJhKGIpP2I6dHlwZW9mIGI9PT0ic3RyaW5nIj9zYmEoYik6bnVsbDtyZXR1cm4gYj09bnVsbD9iOmEua2E9Yn07Xy5iaj1mdW5jdGlvbihhKXtyZXR1cm4gbmV3IFVpbnQ4QXJyYXkoXy56YmEoYSl8fDApfTsKXy50Q2E9ZnVuY3Rpb24oYSxiKXtpZighYS5rYXx8IWIua2F8fGEua2E9PT1iLmthKXJldHVybiBhLmthPT09Yi5rYTtpZih0eXBlb2YgYS5rYT09PSJzdHJpbmciJiZ0eXBlb2YgYi5rYT09PSJzdHJpbmciKXt2YXIgYz1hLmthO2xldCBkPWIua2E7Yi5rYS5sZW5ndGg+YS5rYS5sZW5ndGgmJihkPWEua2EsYz1iLmthKTtpZihjLmxhc3RJbmRleE9mKGQsMCkhPT0wKXJldHVybiExO2ZvcihiPWQubGVuZ3RoO2I8Yy5sZW5ndGg7YisrKWlmKGNbYl0hPT0iPSIpcmV0dXJuITE7cmV0dXJuITB9Yz1fLnpiYShhKTtiPV8uemJhKGIpO3JldHVybiB1YmEoYyxiKX07SmRhPWZ1bmN0aW9uKGEsYil7aWYodHlwZW9mIGI9PT0ic3RyaW5nIiliPV8uZWNhKGIpO2Vsc2UgaWYoYiBpbnN0YW5jZW9mIFVpbnQ4QXJyYXkpYj1uZXcgXy5TYShiLF8ud2JhKTtlbHNlIGlmKCEoYiBpbnN0YW5jZW9mIF8uU2EpKXJldHVybiExO3JldHVybiBfLnRDYShhLGIpfTsKXy5TYT1jbGFzc3tpc0VtcHR5KCl7cmV0dXJuIHRoaXMua2E9PW51bGx9Y29uc3RydWN0b3IoYSxiKXtpZihiIT09Xy53YmEpdGhyb3cgRXJyb3IoInoiKTt0aGlzLmthPWE7aWYoYSE9bnVsbCYmYS5sZW5ndGg9PT0wKXRocm93IEVycm9yKCJ5Iik7fX07dmFyIHliYT1jbGFzc3tjb25zdHJ1Y3RvcihhLGIsYyl7dGhpcy5idWZmZXI9YTtpZihjJiYhYil0aHJvdyBFcnJvcigpO3RoaXMuaSQ9Yn19O3ZhciBDYmE7Q2JhPXZvaWQgMDtfLk5wYT1fLlRhKGE9PmEhPT1udWxsJiZhIT09dm9pZCAwKTt2YXIgSGJhLHZDYSx3Q2EsbXNhO18uR2JhPV8uVGEoYT0+dHlwZW9mIGE9PT0ibnVtYmVyIik7Xy51Q2E9Xy5UYShhPT5OdW1iZXIuaXNJbnRlZ2VyKGEpKTtfLlVhPV8uVGEoYT0+dHlwZW9mIGE9PT0ic3RyaW5nIik7SGJhPV8uVGEoYT0+dHlwZW9mIGE9PT0iYm9vbGVhbiIpO3ZDYT1fLlRhKGE9PnR5cGVvZiBhPT09ImJpZ2ludCIpO3dDYT1fLlRhKGE9PmEhPW51bGwmJnR5cGVvZiBhPT09Im9iamVjdCImJnR5cGVvZiBhLnRoZW49PT0iZnVuY3Rpb24iKTttc2E9Xy5UYShhPT50eXBlb2YgYT09PSJmdW5jdGlvbiIpO18ueENhPV8uVGEoYT0+ISFhJiYodHlwZW9mIGE9PT0ib2JqZWN0Inx8dHlwZW9mIGE9PT0iZnVuY3Rpb24iKSk7Xy55Q2E9Xy5UYShhPT5BcnJheS5pc0FycmF5KGEpKTtfLldhPXR5cGVvZiBfLmVhLkJpZ0ludD09PSJmdW5jdGlvbiImJnR5cGVvZiBfLmVhLkJpZ0ludCgwKT09PSJiaWdpbnQiO3ZhciBWY2EsQ0NhLEFDYSxEQ2EsQkNhO18uekNhPV8uVGEoYT0+Xy5XYT92Q2EoYSk6KDAsXy5VYSkoYSkmJi9eKD86LT9bMS05XVxkKnwwKSQvLnRlc3QoYSkpO1ZjYT1fLlRhKGE9Pl8uV2E/YT49QUNhJiZhPD1CQ2E6YVswXT09PSItIj9JYmEoYSxDQ2EpOkliYShhLERDYSkpO0NDYT1OdW1iZXIuTUlOX1NBRkVfSU5URUdFUi50b1N0cmluZygpO0FDYT1fLldhP0JpZ0ludChOdW1iZXIuTUlOX1NBRkVfSU5URUdFUik6dm9pZCAwO0RDYT1OdW1iZXIuTUFYX1NBRkVfSU5URUdFUi50b1N0cmluZygpO0JDYT1fLldhP0JpZ0ludChOdW1iZXIuTUFYX1NBRkVfSU5URUdFUik6dm9pZCAwO18uRUNhPV8uV2E/QmlnSW50KDApOnZvaWQgMDt2YXIgTWJhO18uWmE9MDtfLiRhPTA7dmFyIG1oYSxlaGEsWGdhLG9oYSxnbWEsVmdhLFNnYSxCaGEsRkNhLElDYSxKQ2EsS0NhLGZtYSxMQ2E7Xy5HQ2E9ZnVuY3Rpb24oYSxiKXt2YXIgYz0wLGQ9MCxlPTAsZj1hLm9hLGc9YS5rYTtkb3t2YXIgaD1mW2crK107Y3w9KGgmMTI3KTw8ZTtlKz03fXdoaWxlKGU8MzImJmgmMTI4KTtpZihlPjMyKWZvcihkfD0oaCYxMjcpPj40LGU9MztlPDMyJiZoJjEyODtlKz03KWg9ZltnKytdLGR8PShoJjEyNyk8PGU7RkNhKGEsZyk7aWYoIShoJjEyOCkpcmV0dXJuIGIoYz4+PjAsZD4+PjApO3Rocm93IEVycm9yKCk7fTtfLkhDYT1mdW5jdGlvbihhKXtmb3IodmFyIGI9MCxjPWEua2EsZD1jKzEwLGU9YS5vYTtjPGQ7KXtsZXQgZj1lW2MrK107Ynw9ZjtpZigoZiYxMjgpPT09MClyZXR1cm4gRkNhKGEsYyksISEoYiYxMjcpfXRocm93IEVycm9yKCk7fTsKbWhhPWZ1bmN0aW9uKGEpe3ZhciBiPWEub2EsYz1hLmthLGQ9YltjKytdLGU9ZCYxMjc7aWYoZCYxMjgmJihkPWJbYysrXSxlfD0oZCYxMjcpPDw3LGQmMTI4JiYoZD1iW2MrK10sZXw9KGQmMTI3KTw8MTQsZCYxMjgmJihkPWJbYysrXSxlfD0oZCYxMjcpPDwyMSxkJjEyOCYmKGQ9YltjKytdLGV8PWQ8PDI4LGQmMTI4JiZiW2MrK10mMTI4JiZiW2MrK10mMTI4JiZiW2MrK10mMTI4JiZiW2MrK10mMTI4JiZiW2MrK10mMTI4KSkpKSl0aHJvdyBFcnJvcigpO0ZDYShhLGMpO3JldHVybiBlfTtfLlBiPWZ1bmN0aW9uKGEpe3JldHVybiBtaGEoYSk+Pj4wfTtlaGE9ZnVuY3Rpb24oYSl7cmV0dXJuIF8uR0NhKGEsUWJhKX07WGdhPWZ1bmN0aW9uKGEpe3JldHVybiBfLkdDYShhLF8uU2JhKX07Cl8ud2hhPWZ1bmN0aW9uKGEpe3ZhciBiPWEub2EsYz1hLmthLGQ9YltjXSxlPWJbYysxXSxmPWJbYysyXTtiPWJbYyszXTtJQ2EoYSw0KTtyZXR1cm4oZDw8MHxlPDw4fGY8PDE2fGI8PDI0KT4+PjB9O29oYT1mdW5jdGlvbihhKXt2YXIgYj1fLndoYShhKTthPV8ud2hhKGEpO3JldHVybiBRYmEoYixhKX07Z21hPWZ1bmN0aW9uKGEpe3ZhciBiPWEub2EsYz1hLmthLGQ9YltjXSxlPWJbYysxXSxmPWJbYysyXTtiPWJbYyszXTtJQ2EoYSw0KTtyZXR1cm4gZDw8MHxlPDw4fGY8PDE2fGI8PDI0fTtWZ2E9ZnVuY3Rpb24oYSl7dmFyIGI9Xy53aGEoYSk7YT0oYj4+MzEpKjIrMTt2YXIgYz1iPj4+MjMmMjU1O2ImPTgzODg2MDc7cmV0dXJuIGM9PTI1NT9iP05hTjphKkluZmluaXR5OmM9PTA/YSoxLjQwMTI5ODQ2NDMyNDgxN0UtNDUqYjphKk1hdGgucG93KDIsYy0xNTApKihiKzgzODg2MDgpfTsKU2dhPWZ1bmN0aW9uKGEpe3ZhciBiPWEuRWE7Ynx8KGI9YS5vYSxiPWEuRWE9bmV3IERhdGFWaWV3KGIuYnVmZmVyLGIuYnl0ZU9mZnNldCxiLmJ5dGVMZW5ndGgpKTtiPWIuZ2V0RmxvYXQ2NChhLmthLCEwKTtJQ2EoYSw4KTtyZXR1cm4gYn07QmhhPWZ1bmN0aW9uKGEpe3JldHVybiBtaGEoYSl9O0ZDYT1mdW5jdGlvbihhLGIpe2Eua2E9YjtpZihiPmEud2EpdGhyb3cgRXJyb3IoKTt9O0lDYT1mdW5jdGlvbihhLGIpe0ZDYShhLGEua2ErYil9O0pDYT1mdW5jdGlvbihhLGIpe2lmKGI8MCl0aHJvdyBFcnJvcigpO3ZhciBjPWEua2E7Yj1jK2I7aWYoYj5hLndhKXRocm93IEVycm9yKCk7YS5rYT1iO3JldHVybiBjfTtLQ2E9ZnVuY3Rpb24oYSxiKXtpZihiPT0wKXJldHVybiBfLnZiYSgpO3ZhciBjPUpDYShhLGIpO2EuQWpiJiZhLkJhP2M9YS5vYS5zdWJhcnJheShjLGMrYik6KGE9YS5vYSxiPWMrYixjPWM9PT1iP25ldyBVaW50OEFycmF5KDApOmEuc2xpY2UoYyxiKSk7cmV0dXJuIF8ueGJhKGMpfTsKZm1hPWNsYXNze2NvbnN0cnVjdG9yKGEsYixjLGQpe3RoaXMub2E9bnVsbDt0aGlzLkJhPSExO3RoaXMuRWE9bnVsbDt0aGlzLmthPXRoaXMud2E9dGhpcy5BYT0wO3RoaXMuaW5pdChhLGIsYyxkKX1pbml0KGEsYixjLHtBamI6ZD0hMSxSRmI6ZT0hMX09e30pe3RoaXMuQWpiPWQ7dGhpcy5SRmI9ZTthJiYoYT1BYmEoYSx0aGlzLlJGYiksdGhpcy5vYT1hLmJ1ZmZlcix0aGlzLkJhPWEuaSQsdGhpcy5FYT1udWxsLHRoaXMuQWE9Ynx8MCx0aGlzLndhPWMhPT12b2lkIDA/dGhpcy5BYStjOnRoaXMub2EubGVuZ3RoLHRoaXMua2E9dGhpcy5BYSl9Y2xlYXIoKXt0aGlzLm9hPW51bGw7dGhpcy5CYT0hMTt0aGlzLkVhPW51bGw7dGhpcy5rYT10aGlzLndhPXRoaXMuQWE9MDt0aGlzLkFqYj0hMX1kRigpe2lmKHRoaXMuQmEpdGhyb3cgRXJyb3IoKTtyZXR1cm4gdGhpcy5vYX1yZXNldCgpe3RoaXMua2E9dGhpcy5BYX19O0xDYT1bXTt2YXIgUGZhLFJmYSxTZmEsTGZhLE9DYSxQQ2EsS2ZhLFFDYSxOZmEsUkNhLFRDYSxVQ2EseWhhLE1DYTtQZmE9MDtSZmE9ZnVuY3Rpb24oYSxiLGMsZCl7aWYoTUNhLmxlbmd0aCl7bGV0IGU9TUNhLnBvcCgpO2Uuc2V0T3B0aW9ucyhkKTtlLm9hLmluaXQoYSxiLGMsZCk7cmV0dXJuIGV9cmV0dXJuIG5ldyBfLk5DYShhLGIsYyxkKX07U2ZhPWZ1bmN0aW9uKGEpe2Eub2EuY2xlYXIoKTthLkFhPS0xO2Eud2E9LTE7YS5rYT0tMTtNQ2EubGVuZ3RoPDEwMCYmTUNhLnB1c2goYSl9O0xmYT1mdW5jdGlvbihhKXt2YXIgYj1hLm9hO2lmKGIua2E9PWIud2EpcmV0dXJuITE7YS5CYT1hLm9hLmthO2I9Xy5QYihhLm9hKTt2YXIgYz1iPj4+MyxkPWImNztpZighKGQ+PTAmJmQ8PTUpKXRocm93IEVycm9yKCk7aWYoYzwxKXRocm93IEVycm9yKCk7YS5BYT1iO2Eud2E9YzthLmthPWQ7cmV0dXJuITB9OwpPQ2E9ZnVuY3Rpb24oYSl7dHJ5e3N3aXRjaChhLmthKXtjYXNlIDA6YS5rYSE9MD9PQ2EoYSk6Xy5IQ2EoYS5vYSk7YnJlYWs7Y2FzZSAxOklDYShhLm9hLDgpO2JyZWFrO2Nhc2UgMjpQQ2EoYSk7YnJlYWs7Y2FzZSA1OklDYShhLm9hLDQpO2JyZWFrO2Nhc2UgMzpLZmEoKTtsZXQgYj1hLndhO3RyeXtkb3tpZighTGZhKGEpKXRocm93IEVycm9yKCk7aWYoYS5rYT09NCl7aWYoYS53YSE9Yil0aHJvdyBFcnJvcigpO2JyZWFrfU9DYShhKX13aGlsZSgxKX1jYXRjaChjKXtpZihjIGluc3RhbmNlb2YgUmFuZ2VFcnJvcil0aHJvdyBuZXcgU3ludGF4RXJyb3I7dGhyb3cgYzt9ZmluYWxseXtQZmE+MCYmUGZhLS19YnJlYWs7ZGVmYXVsdDp0aHJvdyBFcnJvcigpO319Y2F0Y2goYil7aWYoYiBpbnN0YW5jZW9mIFJhbmdlRXJyb3IpdGhyb3cgbmV3IFN5bnRheEVycm9yO3Rocm93IGI7fX07ClBDYT1mdW5jdGlvbihhKXtpZihhLmthIT0yKU9DYShhKTtlbHNle3ZhciBiPV8uUGIoYS5vYSk7SUNhKGEub2EsYil9fTtLZmE9ZnVuY3Rpb24oKXtpZihQZmE+PTEwMCl0aHJvdyBuZXcgU3ludGF4RXJyb3I7UGZhKyt9O1FDYT1mdW5jdGlvbihhLGIpe2lmKCFhLlpQYil7bGV0IGM9YS5vYS5rYS1iO2Eub2Eua2E9YjtyZXR1cm4gS0NhKGEub2EsYyl9fTtOZmE9ZnVuY3Rpb24oYSl7dmFyIGI9YS5CYTtPQ2EoYSk7cmV0dXJuIFFDYShhLGIpfTtSQ2E9ZnVuY3Rpb24oYSxiLGMpe3ZhciBkPWEub2Eud2EsZT1fLlBiKGEub2EpO2U9YS5vYS5rYStlO3ZhciBmPWUtZDtmPD0wJiYoYS5vYS53YT1lLGMoYixhLHZvaWQgMCx2b2lkIDAsdm9pZCAwKSxmPWUtYS5vYS5rYSk7aWYoZil0aHJvdyBFcnJvcigpO2Eub2Eua2E9ZTthLm9hLndhPWQ7cmV0dXJuIGJ9OwpfLlNDYT1mdW5jdGlvbihhLGIsYyxkKXtkKGMsYSk7aWYoYS5rYSE9PTQpdGhyb3cgRXJyb3IoKTtpZihhLndhIT09Yil0aHJvdyBFcnJvcigpO307VENhPWZ1bmN0aW9uKGEsYil7Zm9yKHZhciBjPTAsZD0wO0xmYShhKSYmYS5rYSE9NDspYS5BYSE9PTE2fHxjP2EuQWEhPT0yNnx8ZD9PQ2EoYSk6Yz8oZD0tMSxSQ2EoYSxjLGIpKTooZD1hLkJhLFBDYShhKSk6KGM9Xy5QYihhLm9hKSxkJiYoYS5vYS5rYT1kLGQ9MCkpO2lmKGEuQWEhPT0xMnx8IWR8fCFjKXRocm93IEVycm9yKCk7fTsKVUNhPWZ1bmN0aW9uKGEpe3ZhciBiPV8uUGIoYS5vYSk7YT1hLm9hO3ZhciBjPUpDYShhLGIpO2E9YS5vYTtpZihpQmEpe3ZhciBkPWEsZTsoZT1oQmEpfHwoZT1oQmE9bmV3IFRleHREZWNvZGVyKCJ1dGYtOCIse2ZhdGFsOiEwfSkpO2I9YytiO2Q9Yz09PTAmJmI9PT1kLmxlbmd0aD9kOmQuc3ViYXJyYXkoYyxiKTt0cnl7dmFyIGY9ZS5kZWNvZGUoZCl9Y2F0Y2goaCl7aWYoZ0JhPT09dm9pZCAwKXt0cnl7ZS5kZWNvZGUobmV3IFVpbnQ4QXJyYXkoWzEyOF0pKX1jYXRjaChrKXt9dHJ5e2UuZGVjb2RlKG5ldyBVaW50OEFycmF5KFs5N10pKSxnQmE9ITB9Y2F0Y2goayl7Z0JhPSExfX1lPWdCYTshZSYmKGhCYT12b2lkIDApO3Rocm93IGg7fX1lbHNle2Y9YztiPWYrYjtjPVtdO2xldCBoPW51bGw7bGV0IGs7Zm9yKDtmPGI7KXt2YXIgZz1hW2YrK107ZzwxMjg/Yy5wdXNoKGcpOmc8MjI0P2Y+PWI/YmFhKGMpOihrPWFbZisrXSxnPDE5NHx8KGsmMTkyKSE9PTEyOD8oZi0tLGJhYShjKSk6CmMucHVzaCgoZyYzMSk8PDZ8ayY2MykpOmc8MjQwP2Y+PWItMT9iYWEoYyk6KGs9YVtmKytdLChrJjE5MikhPT0xMjh8fGc9PT0yMjQmJms8MTYwfHxnPT09MjM3JiZrPj0xNjB8fCgoZT1hW2YrK10pJjE5MikhPT0xMjg/KGYtLSxiYWEoYykpOmMucHVzaCgoZyYxNSk8PDEyfChrJjYzKTw8NnxlJjYzKSk6Zzw9MjQ0P2Y+PWItMj9iYWEoYyk6KGs9YVtmKytdLChrJjE5MikhPT0xMjh8fChnPDwyOCkrKGstMTQ0KT4+MzAhPT0wfHwoKGU9YVtmKytdKSYxOTIpIT09MTI4fHwoKGQ9YVtmKytdKSYxOTIpIT09MTI4PyhmLS0sYmFhKGMpKTooZz0oZyY3KTw8MTh8KGsmNjMpPDwxMnwoZSY2Myk8PDZ8ZCY2MyxnLT02NTUzNixjLnB1c2goKGc+PjEwJjEwMjMpKzU1Mjk2LChnJjEwMjMpKzU2MzIwKSkpOmJhYShjKTtjLmxlbmd0aD49ODE5MiYmKGg9Y2FhKGgsYyksYy5sZW5ndGg9MCl9Zj1jYWEoaCxjKX1yZXR1cm4gZn07CnloYT1mdW5jdGlvbihhKXt2YXIgYj1fLlBiKGEub2EpO3JldHVybiBLQ2EoYS5vYSxiKX07Xy5VZ2E9ZnVuY3Rpb24oYSxiLGMpe3ZhciBkPV8uUGIoYS5vYSk7Zm9yKGQ9YS5vYS5rYStkO2Eub2Eua2E8ZDspYy5wdXNoKGIoYS5vYSkpfTtfLk5DYT1jbGFzc3tjb25zdHJ1Y3RvcihhLGIsYyxkKXtpZihMQ2EubGVuZ3RoKXtsZXQgZT1MQ2EucG9wKCk7ZS5pbml0KGEsYixjLGQpO2E9ZX1lbHNlIGE9bmV3IGZtYShhLGIsYyxkKTt0aGlzLm9hPWE7dGhpcy5CYT10aGlzLm9hLmthO3RoaXMua2E9dGhpcy5BYT10aGlzLndhPS0xO3RoaXMuc2V0T3B0aW9ucyhkKX1zZXRPcHRpb25zKHtaUGI6YT0hMX09e30pe3RoaXMuWlBiPWF9ZEYoKXtyZXR1cm4gdGhpcy5vYS5kRigpfXJlc2V0KCl7dGhpcy5vYS5yZXNldCgpO3RoaXMuQmE9dGhpcy5vYS5rYTt0aGlzLmthPXRoaXMud2E9dGhpcy5BYT0tMX19O01DYT1bXTt2YXIgaGRhLGtmYSxaZWEsWGRhLGVlYSxnZWEsYWdhLGh5YSxpeWEsTmVhLHBlYSxiZWE7aGRhPV8uYWIoKTtrZmE9Xy5hYigpO1plYT1fLmFiKCk7WGRhPV8uYWIoKTtlZWE9Xy5hYigpO2dlYT1fLmFiKCk7YWdhPV8uYWIoKTtoeWE9Xy5hYigpO2l5YT1fLmFiKCJfamNjYSIsITApO05lYT1fLmFiKCk7Xy4kYmE9Xy5hYigibV9tIiwhMCk7cGVhPV8uYWIoKTtiZWE9Xy5hYigpO3ZhciBYZWEsVkNhO18uYmI9Xy5hYigiamFzIiwhMCk7VkNhPVtdO1ZDYVtfLmJiXT03O1hlYT1PYmplY3QuZnJlZXplKFZDYSk7dmFyIGNjYSxYQ2E7Xy5hY2E9e307Xy5XQ2E9e307Y2NhPXt9O1hDYT1jbGFzc3tjb25zdHJ1Y3RvcihhLGIsYyl7dGhpcy5CdmI9YTt0aGlzLmN4Yj1iO3RoaXMuVHJhPWN9bmV4dCgpe3ZhciBhPXRoaXMuQnZiLm5leHQoKTthLmRvbmV8fChhLnZhbHVlPXRoaXMuY3hiLmNhbGwodGhpcy5UcmEsYS52YWx1ZSkpO3JldHVybiBhfVtTeW1ib2wuaXRlcmF0b3JdKCl7cmV0dXJuIHRoaXN9fTtfLmNqPU9iamVjdC5mcmVlemUoe30pO18uWUNhPU9iamVjdC5mcmVlemUoe30pO18uZGI9e307dmFyIHFjYT12b2lkIDA7dmFyIEZjYT10eXBlb2YgQmlnSW50PT09ImZ1bmN0aW9uIj9CaWdJbnQuYXNJbnROOnZvaWQgMCxUY2E9dHlwZW9mIEJpZ0ludD09PSJmdW5jdGlvbiI/QmlnSW50LmFzVWludE46dm9pZCAwLE9jYT1OdW1iZXIuaXNTYWZlSW50ZWdlcix5Y2E9TnVtYmVyLmlzRmluaXRlLE5jYT1NYXRoLnRydW5jLHpjYT0vXi0/KFsxLTldWzAtOV0qfDApKFwuWzAtOV0rKT8kLzt2YXIgWkNhLGFEYSxjRGEscGRhLHFkYSxyZGEsb2RhLG5kYSxsZGEsbWRhO18ueWdhPWZ1bmN0aW9uKGEpe3JldHVybiBfLnNkYShhLFpDYSxfLiRDYSl9O18uJENhPWZ1bmN0aW9uKGEpe3JldHVybiBuZXcgWkNhKGEmNDI5NDk2NzI5NSxNYXRoLmZsb29yKGEvNDI5NDk2NzI5NikpfTtfLnZkYT1mdW5jdGlvbihhKXtpZighYSlyZXR1cm4gYURhfHwoYURhPW5ldyBaQ2EoMCwwKSk7aWYoIS9eXGQrJC8udGVzdChhKSlyZXR1cm4gbnVsbDtfLlViYShhKTtyZXR1cm4gbmV3IFpDYShfLlphLF8uJGEpfTtfLmJEYT1mdW5jdGlvbihhKXtyZXR1cm4gYS5sbz09PTA/bmV3IFpDYSgwLDErfmEuaGkpOm5ldyBaQ2EofmEubG8rMSx+YS5oaSl9O1pDYT1jbGFzc3tjb25zdHJ1Y3RvcihhLGIpe3RoaXMubG89YT4+PjA7dGhpcy5oaT1iPj4+MH19O18ucmdhPWZ1bmN0aW9uKGEpe3JldHVybiBuZXcgXy5xZ2EoYSY0Mjk0OTY3Mjk1LE1hdGguZmxvb3IoYS80Mjk0OTY3Mjk2KSl9OwpfLnRkYT1mdW5jdGlvbihhKXtpZighYSlyZXR1cm4gY0RhfHwoY0RhPW5ldyBfLnFnYSgwLDApKTtpZighL14tP1xkKyQvLnRlc3QoYSkpcmV0dXJuIG51bGw7Xy5VYmEoYSk7cmV0dXJuIG5ldyBfLnFnYShfLlphLF8uJGEpfTtfLnFnYT1jbGFzc3tjb25zdHJ1Y3RvcihhLGIpe3RoaXMubG89YT4+PjA7dGhpcy5oaT1iPj4+MH19O3ZhciBkRGEsRmdhLGVtYSxkbWE7Xy5MYj1mdW5jdGlvbihhLGIsYyl7Zm9yKDtjPjB8fGI+MTI3OylhLmthLnB1c2goYiYxMjd8MTI4KSxiPShiPj4+N3xjPDwyNSk+Pj4wLGM+Pj49NzthLmthLnB1c2goYil9O18uamdhPWZ1bmN0aW9uKGEsYil7YS5rYS5wdXNoKGI+Pj4wJjI1NSk7YS5rYS5wdXNoKGI+Pj44JjI1NSk7YS5rYS5wdXNoKGI+Pj4xNiYyNTUpO2Eua2EucHVzaChiPj4+MjQmMjU1KX07Xy5OYj1mdW5jdGlvbihhLGIsYyl7Xy5qZ2EoYSxiKTtfLmpnYShhLGMpfTtfLk1iPWZ1bmN0aW9uKGEsYil7Zm9yKDtiPjEyNzspYS5rYS5wdXNoKGImMTI3fDEyOCksYj4+Pj03O2Eua2EucHVzaChiKX07ZERhPWZ1bmN0aW9uKGEsYil7aWYoYj49MClfLk1iKGEsYik7ZWxzZXtmb3IobGV0IGM9MDtjPDk7YysrKWEua2EucHVzaChiJjEyN3wxMjgpLGI+Pj03O2Eua2EucHVzaCgxKX19O18ueGdhPWZ1bmN0aW9uKGEsYil7Xy5MYmEoYik7Xy5MYihhLF8uWmEsXy4kYSl9OwpGZ2E9ZnVuY3Rpb24oYSxiKXtfLkpiYShiKTtfLmpnYShhLF8uWmEpO18uamdhKGEsXy4kYSl9O2VtYT1mdW5jdGlvbihhLGIpe2Eua2EucHVzaChiPj4+MCYyNTUpO2Eua2EucHVzaChiPj4+OCYyNTUpO2Eua2EucHVzaChiPj4+MTYmMjU1KTthLmthLnB1c2goYj4+PjI0JjI1NSl9O18uaGdhPWZ1bmN0aW9uKGEsYil7dmFyIGM9TWJhfHwoTWJhPW5ldyBEYXRhVmlldyhuZXcgQXJyYXlCdWZmZXIoOCkpKTtjLnNldEZsb2F0NjQoMCwrYiwhMCk7Xy5aYT1jLmdldFVpbnQzMigwLCEwKTtfLiRhPWMuZ2V0VWludDMyKDQsITApO18uamdhKGEsXy5aYSk7Xy5qZ2EoYSxfLiRhKX07ZG1hPWNsYXNze2NvbnN0cnVjdG9yKCl7dGhpcy5rYT1bXX1sZW5ndGgoKXtyZXR1cm4gdGhpcy5rYS5sZW5ndGh9ZW5kKCl7dmFyIGE9dGhpcy5rYTt0aGlzLmthPVtdO3JldHVybiBhfX07dmFyIGJnYSxBZ2EsdWdhLG5nYSxsZ2EsQ2dhLFFnYSxLZ2Esd2ZhO2JnYT1mdW5jdGlvbihhLGIpe2IubGVuZ3RoIT09MCYmKGEud2EucHVzaChiKSxhLm9hKz1iLmxlbmd0aCl9O18uS2I9ZnVuY3Rpb24oYSxiLGMpe18uTWIoYS5rYSxiKjgrYyl9O18ucGdhPWZ1bmN0aW9uKGEsYil7Xy5LYihhLGIsMik7Yj1hLmthLmVuZCgpO2JnYShhLGIpO2IucHVzaChhLm9hKTtyZXR1cm4gYn07Xy5zZ2E9ZnVuY3Rpb24oYSxiKXt2YXIgYz1iLnBvcCgpO2ZvcihjPWEub2ErYS5rYS5sZW5ndGgoKS1jO2M+MTI3OyliLnB1c2goYyYxMjd8MTI4KSxjPj4+PTcsYS5vYSsrO2IucHVzaChjKTthLm9hKyt9O18uZURhPWZ1bmN0aW9uKGEpe2JnYShhLGEua2EuZW5kKCkpO3ZhciBiPW5ldyBVaW50OEFycmF5KGEub2EpLGM9YS53YSxkPWMubGVuZ3RoLGU9MDtmb3IobGV0IGY9MDtmPGQ7ZisrKXtsZXQgZz1jW2ZdO2Iuc2V0KGcsZSk7ZSs9Zy5sZW5ndGh9YS53YT1bYl07cmV0dXJuIGJ9OwpBZ2E9ZnVuY3Rpb24oYSxiLGMpe2MhPW51bGwmJihfLktiKGEsYiwwKSxkRGEoYS5rYSxjKSl9O3VnYT1mdW5jdGlvbihhLGIsYyl7aWYoYyE9bnVsbClzd2l0Y2goXy5LYihhLGIsMCksdHlwZW9mIGMpe2Nhc2UgIm51bWJlciI6Xy54Z2EoYS5rYSxjKTticmVhaztjYXNlICJiaWdpbnQiOmI9Xy55Z2EoYyk7Xy5MYihhLmthLGIubG8sYi5oaSk7YnJlYWs7ZGVmYXVsdDpiPV8udmRhKGMpLF8uTGIoYS5rYSxiLmxvLGIuaGkpfX07bmdhPWZ1bmN0aW9uKGEsYixjKXtpZihjIT1udWxsKXN3aXRjaChfLktiKGEsYiwwKSx0eXBlb2YgYyl7Y2FzZSAibnVtYmVyIjphPWEua2E7Xy5MYmEoYyk7Xy5MYihhLF8uWmEsXy4kYSk7YnJlYWs7Y2FzZSAiYmlnaW50IjpjPV8uc2RhKGMsXy5xZ2EsXy5yZ2EpO18uTGIoYS5rYSxjLmxvLGMuaGkpO2JyZWFrO2RlZmF1bHQ6Yz1fLnRkYShjKSxfLkxiKGEua2EsYy5sbyxjLmhpKX19OwpsZ2E9ZnVuY3Rpb24oYSxiLGMpe2MhPW51bGwmJihfLnVkYShjKSxuZ2EoYSxiLGMpKX07Xy5IZ2E9ZnVuY3Rpb24oYSxiLGMpe2MhPW51bGwmJihfLktiKGEsYiw1KSxfLmpnYShhLmthLGMpKX07Q2dhPWZ1bmN0aW9uKGEsYixjKXtpZihjIT1udWxsKXN3aXRjaCh3ZGEoYyksXy5LYihhLGIsMSksdHlwZW9mIGMpe2Nhc2UgIm51bWJlciI6RmdhKGEua2EsYyk7YnJlYWs7Y2FzZSAiYmlnaW50IjpiPV8ueWdhKGMpO18uTmIoYS5rYSxiLmxvLGIuaGkpO2JyZWFrO2RlZmF1bHQ6Yj1fLnZkYShjKSxfLk5iKGEua2EsYi5sbyxiLmhpKX19O1FnYT1mdW5jdGlvbihhLGIsYyl7YyE9bnVsbCYmKGM9cGFyc2VJbnQoYywxMCksXy5LYihhLGIsMCksZERhKGEua2EsYykpfTtLZ2E9ZnVuY3Rpb24oYSxiLGMpe18uS2IoYSxiLDIpO18uTWIoYS5rYSxjLmxlbmd0aCk7YmdhKGEsYS5rYS5lbmQoKSk7YmdhKGEsYyl9Owp3ZmE9ZnVuY3Rpb24oYSxiLGMsZCl7YyE9bnVsbCYmKGI9Xy5wZ2EoYSxiKSxkKGMsYSksXy5zZ2EoYSxiKSl9O18uZkRhPWNsYXNze2NvbnN0cnVjdG9yKCl7dGhpcy53YT1bXTt0aGlzLm9hPTA7dGhpcy5rYT1uZXcgZG1hfX07Xy5kZ2E9b2IoKTtfLmdEYT1vYigpO18udGZhPW9iKCk7Xy5oRGE9b2IoKTtfLmlEYT1vYigpO18uakRhPW9iKCk7Xy5rRGE9b2IoKTtfLmxEYT1vYigpO18ubURhPW9iKCk7Xy5uRGE9b2IoKTtfLm9EYT1vYigpO18uZGo9b2IoKTtfLmVqPW9iKCk7Xy5wRGE9b2IoKTtfLmZqPW9iKCk7Xy5xRGE9b2IoKTtfLnJEYT1vYigpO18uc0RhPW9iKCk7Xy50RGE9b2IoKTtfLnVEYT1vYigpO3ZhciBxZWE9e307Xy5DZGFbcGVhXT1xZWE7dmFyIFVkYT17fSx2RGE9KCgpPT5jbGFzcyBleHRlbmRzIE1hcHtjb25zdHJ1Y3Rvcigpe3N1cGVyKCl9fSkoKSxJZGE9ZnVuY3Rpb24oYSxiLGMpe3JldHVybiBiIGluc3RhbmNlb2YgcGI/UGRhKGEsYixjKTpSZGEoYSxiLGMpfSx3RGE9ZnVuY3Rpb24oYSl7aWYoYS5JYmEmMil0aHJvdyBFcnJvcigiRiIpO30scGI9Y2xhc3MgZXh0ZW5kcyB2RGF7Y29uc3RydWN0b3IoYSxiLGM9TmRhLGQ9TmRhKXtzdXBlcigpO3RoaXMuSWJhPWFbXy5iYl18MDt0aGlzLkVzYT1iO3RoaXMuY1dhPWM7dGhpcy5VR2I9dGhpcy5Fc2E/T2RhOmQ7Zm9yKGxldCBlPTA7ZTxhLmxlbmd0aDtlKyspe2xldCBmPWFbZV0sZz1jKGZbMF0sITEsITApLGg9ZlsxXTtiP2g9PT12b2lkIDAmJihoPW51bGwpOmg9ZChmWzFdLCExLCEwLHZvaWQgMCx2b2lkIDAsdGhpcy5JYmEpO3N1cGVyLnNldChnLGgpfX1sZmIoYSl7cmV0dXJuIFliYShBcnJheS5mcm9tKHN1cGVyLmVudHJpZXMoKSxhKSl9Y2xlYXIoKXt3RGEodGhpcyk7CnN1cGVyLmNsZWFyKCl9ZGVsZXRlKGEpe3dEYSh0aGlzKTtyZXR1cm4gc3VwZXIuZGVsZXRlKHRoaXMuY1dhKGEsITAsITEpKX1lbnRyaWVzKCl7aWYodGhpcy5Fc2Epe3ZhciBhPXN1cGVyLmtleXMoKTthPW5ldyBYQ2EoYSxTZGEsdGhpcyl9ZWxzZSBhPXN1cGVyLmVudHJpZXMoKTtyZXR1cm4gYX12YWx1ZXMoKXtpZih0aGlzLkVzYSl7dmFyIGE9c3VwZXIua2V5cygpO2E9bmV3IFhDYShhLHBiLnByb3RvdHlwZS5nZXQsdGhpcyl9ZWxzZSBhPXN1cGVyLnZhbHVlcygpO3JldHVybiBhfWZvckVhY2goYSxiKXt0aGlzLkVzYT9zdXBlci5mb3JFYWNoKChjLGQsZSk9PnthLmNhbGwoYixlLmdldChkKSxkLGUpfSk6c3VwZXIuZm9yRWFjaChhLGIpfXNldChhLGIpe3dEYSh0aGlzKTthPXRoaXMuY1dhKGEsITAsITEpO3JldHVybiBhPT1udWxsP3RoaXM6Yj09bnVsbD8oc3VwZXIuZGVsZXRlKGEpLHRoaXMpOnN1cGVyLnNldChhLHRoaXMuVUdiKGIsITAsITAsdGhpcy5Fc2EsITEsdGhpcy5JYmEpKX1nTmMoYSl7dmFyIGI9CnRoaXMuY1dhKGFbMF0sITEsITApO2E9YVsxXTthPXRoaXMuRXNhP2E9PT12b2lkIDA/bnVsbDphOnRoaXMuVUdiKGEsITEsITAsdm9pZCAwLCExLHRoaXMuSWJhKTtzdXBlci5zZXQoYixhKX1oYXMoYSl7cmV0dXJuIHN1cGVyLmhhcyh0aGlzLmNXYShhLCExLCExKSl9Z2V0KGEpe2E9dGhpcy5jV2EoYSwhMSwhMSk7dmFyIGI9c3VwZXIuZ2V0KGEpO2lmKGIhPT12b2lkIDApe3ZhciBjPXRoaXMuRXNhO3JldHVybiBjPyhjPXRoaXMuVUdiKGIsITEsITAsYyx0aGlzLnJuYyx0aGlzLkliYSksYyE9PWImJnN1cGVyLnNldChhLGMpLGMpOmJ9fVtTeW1ib2wuaXRlcmF0b3JdKCl7cmV0dXJuIHRoaXMuZW50cmllcygpfX07cGIucHJvdG90eXBlLnRvSlNPTj12b2lkIDA7cGIucHJvdG90eXBlLnhFYz1fLldDYTt2YXIgVGRhO3ZhciBpZWE9ZnVuY3Rpb24oYSxiKXtmb3IobGV0IGMgaW4gYSkhaXNOYU4oYykmJmIoYSwrYyxhW2NdKX0sa2VhPWZ1bmN0aW9uKGEpe3ZhciBiPW5ldyBaZGE7aWVhKGEsKGMsZCxlKT0+e2JbZF09Wy4uLmVdfSk7Yi5ZY2I9YS5ZY2I7cmV0dXJuIGJ9LFpkYT1jbGFzc3t9LGNlYT17SUxjOiEwfTtfLnhEYT1yQ2E/c3RydWN0dXJlZENsb25lOmE9Pl8ubGVhKGEsMCxfLm1lYSk7dmFyIEhlYTt2YXIgeURhLGpqO3lEYT1fLllhKDApO18uaGo9e307Xy5paj1mdW5jdGlvbihhLGIsYyxkLGUpe2I9Xy54YihhLlBrLGIsYyxlKTtpZihiIT09bnVsbHx8ZCYmYS5GYWIhPT1jY2EpcmV0dXJuIGJ9O18ueGI9ZnVuY3Rpb24oYSxiLGMsZCl7aWYoYj09PS0xKXJldHVybiBudWxsO3ZhciBlPWIrKGM/MDotMSksZj1hLmxlbmd0aC0xO2lmKCEoZjwxKyhjPzA6LTEpKSl7aWYoZT49Zil7dmFyIGc9YVtmXTtpZihnIT1udWxsJiZ0eXBlb2YgZz09PSJvYmplY3QiJiZnLmNvbnN0cnVjdG9yPT09T2JqZWN0KXtjPWdbYl07dmFyIGg9ITB9ZWxzZSBpZihlPT09ZiljPWc7ZWxzZSByZXR1cm59ZWxzZSBjPWFbZV07aWYoZCYmYyE9bnVsbCl7ZD1kKGMpO2lmKGQ9PW51bGwpcmV0dXJuIGQ7aWYoIU9iamVjdC5pcyhkLGMpKXJldHVybiBoP2dbYl09ZDphW2VdPWQsZH1yZXR1cm4gY319Owpqaj1mdW5jdGlvbihhLGIsYyxkKXtfLnJiKGEpO3ZhciBlPWEuUGs7Xy51YihlLGVbXy5iYl18MCxiLGMsZCk7cmV0dXJuIGF9O18ua2o9ZnVuY3Rpb24oYSxiLGMsZCl7YT1hLlBrO3JldHVybiBvZmEoYSxhW18uYmJdfDAsYixjLGQpIT09dm9pZCAwfTtfLm1qPWZ1bmN0aW9uKGEsYixjLGQpe3ZhciBlPWEuUGs7cmV0dXJuIG9mYShlLGVbXy5iYl18MCxiLF8ubGooYSxkLGMpKSE9PXZvaWQgMH07Xy5PYj1mdW5jdGlvbihhLGIpe3JldHVybiBqZmEoYSxhW18uYmJdfDAsYil9O18ub2o9ZnVuY3Rpb24oYSxiLGMpe3ZhciBkPWEuUGs7cmV0dXJuIHBmYShhLGQsZFtfLmJiXXwwLGIsYywzKS5sZW5ndGh9O18ucGo9ZnVuY3Rpb24oYSxiLGMsZCl7dmFyIGU9YS5QazthPXBmYShhLGUsZVtfLmJiXXwwLGMsYiwzKTtfLmpjYShhLGQpO3JldHVybiBhW2RdfTsKXy5xaj1mdW5jdGlvbihhLGIsYyxkKXtfLnJiKGEpO3ZhciBlPWEuUGs7YT1wZmEoYSxlLGVbXy5iYl18MCxjLGIsMix2b2lkIDAsITApO18uamNhKGEsZCk7Yz1hW2RdO2I9VWVhKGMpO2MhPT1iJiYoYVtkXT1iLGQ9YT09PVhlYT83OmFbXy5iYl18MCw0MDk2JmR8fChhW18uYmJdPWR8NDA5Nix0YihlKSkpO3JldHVybiBifTtfLnJqPWZ1bmN0aW9uKGEsYixjLGQsZSl7Xy5CYihhLGIsYyx2b2lkIDAsZSxkLDEpO3JldHVybiBhfTtfLnRqPWZ1bmN0aW9uKGEsYixjLGQpe3JldHVybiBfLmlqKGEsYixjLGQsXy50Y2EpfTtfLnVqPWZ1bmN0aW9uKGEsYixjLGQpe3JldHVybiBfLmlqKGEsYixjLGQsXy5jZmEpfTtfLm9oPWZ1bmN0aW9uKGEpe3JldHVybiBhPT09Xy5jaj8yOjR9O18udmo9ZnVuY3Rpb24oYSxiKXthPV8udWooYSxiKTtyZXR1cm4gYT09bnVsbD9fLnZiYSgpOmF9OwpfLnpEYT1mdW5jdGlvbihhLGIpe18ucmIoYSk7YT1hLlBrO3ZhciBjPWFbXy5iYl18MCxkPV8ueGIoYSxiKTtkIGluc3RhbmNlb2YgcGImJiEoZCBpbnN0YW5jZW9mIHBiJiZkLkliYSYyKT9kLmNsZWFyKCk6ZCE9bnVsbCYmXy51YihhLGMsYil9O18uR2U9ZnVuY3Rpb24oYSxiLGMpe3JldHVybiBqaihhLGIsdm9pZCAwLGMpfTtfLndqPWZ1bmN0aW9uKGEsYil7Xy5yYihhKTt2YXIgYz1hLlBrO18ubmZhKGMsY1tfLmJiXXwwLGIsMCk7cmV0dXJuIGF9O18uZmdhPWZ1bmN0aW9uKGEsYixjKXtqZmEoYSxhW18uYmJdfDAsYikucHVzaChjKX07Xy54aj1mdW5jdGlvbihhLGIsYyxkKXtfLnJiKGEpO3ZhciBlPWEuUGssZj1lW18uYmJdfDA7aWYoZD09bnVsbCl7bGV0IGc9bGZhKGUpO2lmKG1mYShnLGUsZixjKT09PWIpZy5zZXQoYywwKTtlbHNlIHJldHVybiBhfWVsc2UgZj1fLm5mYShlLGYsYyxiKTtfLnViKGUsZixiLGQpO3JldHVybiBhfTsKXy5RYj1mdW5jdGlvbihhLGIsYyxkKXt2YXIgZT1hW18uYmJdfDAsZj1fLm1jYShlKTtlPV8ubmZhKGEsZSxjLGIsZik7Xy51YihhLGUsYixkLGYpfTtfLmxqPWZ1bmN0aW9uKGEsYixjLGQpe3JldHVybiBfLkFqKGEsYixkKT09PWM/YzotMX07Xy5Baj1mdW5jdGlvbihhLGIsYyl7YT1hLlBrO3JldHVybiBtZmEobGZhKGEpLGEsdm9pZCAwLGIsYyl9O18uQmo9ZnVuY3Rpb24oYSxiLGMsZCxlKXtfLnJiKGEpO2E9YS5Qazt2YXIgZj1hW18uYmJdfDAsZz1fLnhiKGEsYyxlKTtkPWQ9PT1fLllDYTtiPWpkYShnLGIsIWQsZik7aWYoIWR8fGIpcmV0dXJuIGI9VWVhKGIpLGchPT1iJiYoZj1fLnViKGEsZixjLGIsZSksdGIoYSxmKSksYn07Xy5CRGE9ZnVuY3Rpb24oYSxiLGMsZCl7dmFyIGU9YVtfLmJiXXwwO18ubmZhKGEsZSxkLGMsXy5tY2EoZSkpO3JldHVybiBfLkFEYShhLGIsYyl9OwpfLkFEYT1mdW5jdGlvbihhLGIsYyl7dmFyIGQ9YVtfLmJiXXwwLGU9Xy5tY2EoZCksZj1fLnhiKGEsYyxlKTtpZihiY2EoZikpe2lmKCFfLmNiKGYpKXJldHVybiBWZWEoZiksZi5Qazt2YXIgZz1mLlBrfWVsc2UgQXJyYXkuaXNBcnJheShmKSYmKGc9Zik7aWYoZyl7bGV0IGg9Z1tfLmJiXXwwO2gmMiYmKGc9UmVhKGcsaCkpfWc9Xy5LZWEoZyxiKTtnIT09ZiYmXy51YihhLGQsYyxnLGUpO3JldHVybiBnfTtfLnplPWZ1bmN0aW9uKGEsYixjLGQpe2E9YS5QaztyZXR1cm4gb2ZhKGEsYVtfLmJiXXwwLGIsYyxkKXx8YltoZGFdfHwoYltoZGFdPWlkYShiKSl9O18uQ2o9ZnVuY3Rpb24oYSxiLGMsZCl7YT1hLlBrO3JldHVybiBvZmEoYSxhW18uYmJdfDAsYixjLGQpfTsKXy5xPWZ1bmN0aW9uKGEsYixjLGQpe3ZhciBlPWEuUGssZj1lW18uYmJdfDA7Yj1vZmEoZSxmLGIsYyxkKTtpZihiPT1udWxsKXJldHVybiBiO2Y9ZVtfLmJiXXwwO2lmKCFfLmNiKGEsZikpe2xldCBnPVVlYShiKTtnIT09YiYmKFZlYShhKSYmKGU9YS5QayxmPWVbXy5iYl18MCksYj1nLGY9Xy51YihlLGYsYyxiLGQpLHRiKGUsZikpfXJldHVybiBifTtfLkVqPWZ1bmN0aW9uKGEsYixjLGQpe3ZhciBlPWEuUGs7cmV0dXJuIHBmYShhLGUsZVtfLmJiXXwwLGIsYywxLGQpfTtfLkZqPWZ1bmN0aW9uKGEsYixjLGQpe3JldHVybiBfLnplKGEsYixfLmxqKGEsZCxjKSl9O18ubWg9ZnVuY3Rpb24oYSxiLGMsZCxlKXt2YXIgZj1hLlBrO3JldHVybiBwZmEoYSxmLGZbXy5iYl18MCxiLGMsZCxlLCExLCEwKX07Xy5TYj1mdW5jdGlvbihhLGIsYyxkLGUpe2Q9cWZhKGQpO2pqKGEsYyxkLGUpO2QmJiFfLmNiKGQpJiZ0YihhLlBrKTtyZXR1cm4gYX07Cl8uR2o9ZnVuY3Rpb24oYSxiLGMsZCl7ZD1xZmEoZCk7Xy54aihhLGIsYyxkKTtkJiYhXy5jYihkKSYmdGIoYS5Qayk7cmV0dXJuIGF9O18uSGo9ZnVuY3Rpb24oYSxiLGMsZCl7Xy5yYihhKTt2YXIgZT1hLlBrLGY9ZVtfLmJiXXwwO2lmKGM9PW51bGwpcmV0dXJuIF8udWIoZSxmLGIsdm9pZCAwLGQpLGE7dmFyIGc9Yz09PVhlYT83OmNbXy5iYl18MCxoPWcsaz1iZmEoZyksbT1rfHxPYmplY3QuaXNGcm96ZW4oYyksbj0hMCxwPSEwO2ZvcihsZXQgeD0wO3g8Yy5sZW5ndGg7eCsrKXt2YXIgcj1jW3hdO2t8fChyPV8uY2IociksbiYmKG49IXIpLHAmJihwPXIpKX1rfHwoZz1uPzEzOjUsZz1wP2cmLTQwOTc6Z3w0MDk2KTttJiZnPT09aHx8KGM9Wy4uLmNdLGg9MCxnPSRlYShnLGYpKTtnIT09aCYmKGNbXy5iYl09Zyk7Zj1fLnViKGUsZixiLGMsZCk7MiZnfHwhKDQwOTYmZ3x8MTYmZyl8fHRiKGUsZik7cmV0dXJuIGF9OwpfLnVoPWZ1bmN0aW9uKGEsYixjLGQsZSl7Xy5CYihhLGIsYyx2b2lkIDAsZCxlKTtyZXR1cm4gYX07Xy5DRGE9ZnVuY3Rpb24oYSxiLGMsZCl7Xy5CYihhLGIsYyx2b2lkIDAsdm9pZCAwLGQsMSwhMCk7cmV0dXJuIGF9O18uSWo9ZnVuY3Rpb24oYSxiLGMsZCxlKXtfLnJiKGEpO3ZhciBmPWEuUGs7Yj1wZmEoYSxmLGZbXy5iYl18MCxjLGIsMixlLCEwKTtlPWM9MDtpZihBcnJheS5pc0FycmF5KGQpKXt2YXIgZz1kLmxlbmd0aDtmb3IobGV0IGs9MDtrPGc7aysrKXt2YXIgaD1kW2tdO2IucHVzaChoKTsoaD1fLmNiKGgpKSYmIWMrKyYmKGJbXy5iYl0mPS05KTtofHxlKyt8fFZiYShiLDQwOTYpfX1lbHNlIGZvcihnIG9mIGQpZD1nLGIucHVzaChkKSwoZD1fLmNiKGQpKSYmIWMrKyYmKGJbXy5iYl0mPS05KSxkfHxlKyt8fFZiYShiLDQwOTYpO2UmJnRiKGYpO3JldHVybiBhfTtfLkREYT1mdW5jdGlvbihhLGIsYyl7cmV0dXJuIF8uWGNhKF8uaWooYSxiLGMsdm9pZCAwLF8ua2IpKX07Cl8uSmo9ZnVuY3Rpb24oYSxiLGMsZCl7cmV0dXJuIF8uaWooYSxiLGMsZCxfLmtiKX07Xy5Laj1mdW5jdGlvbihhLGIpe3JldHVybiBfLmFkYShfLmlqKGEsYix2b2lkIDAsdm9pZCAwLF8ubGIpKX07Xy5kaT1mdW5jdGlvbihhLGIsYyxkKXtyZXR1cm4gXy54Y2EoXy5paihhLGIsYyxkKSl9O18uY2k9ZnVuY3Rpb24oYSxiLGMsZCl7cmV0dXJuIF8uZ2IoXy5paihhLGIsYyxkKSl9O18uVWg9ZnVuY3Rpb24oYSxiLGMsZCl7cmV0dXJuIF8uaWIoXy5paihhLGIsYyxkKSl9O18uTGo9ZnVuY3Rpb24oYSxiLGMsZCl7cmV0dXJuIGdkYShfLmlqKGEsYixjLGQpKX07Xy5laT1mdW5jdGlvbihhLGIsYyxkKXtyZXR1cm4gXy5DY2EoXy5paihhLGIsYyxkKSl9O18uQT1mdW5jdGlvbihhLGIsYz0hMSxkKXt2YXIgZTtyZXR1cm4oZT1fLmRpKGEsYixkKSkhPW51bGw/ZTpjfTtfLnhlPWZ1bmN0aW9uKGEsYixjPTAsZCl7dmFyIGU7cmV0dXJuKGU9Xy5jaShhLGIsZCkpIT1udWxsP2U6Y307Cl8uRWU9ZnVuY3Rpb24oYSxiLGM9MCl7dmFyIGQ7cmV0dXJuKGQ9Xy5VaChhLGIpKSE9bnVsbD9kOmN9O18uRGU9ZnVuY3Rpb24oYSxiLGM9eURhLGQpe3ZhciBlO3JldHVybihlPV8uSmooYSxiLGQpKSE9bnVsbD9lOmN9O18uTWo9ZnVuY3Rpb24oYSxiKXt2YXIgYztyZXR1cm4oYz1fLmlqKGEsYix2b2lkIDAsdm9pZCAwLF8ubGIpKSE9bnVsbD9jOnlEYX07Xy5Oaj1mdW5jdGlvbihhLGIsYz0wLGQpe3ZhciBlO3JldHVybihlPV8udGooYSxiLGQpKSE9bnVsbD9lOmN9O18udD1mdW5jdGlvbihhLGIsYz0iIixkKXt2YXIgZTtyZXR1cm4oZT1fLkxqKGEsYixkKSkhPW51bGw/ZTpjfTtfLk9qPWZ1bmN0aW9uKGEsYixjPTAsZCl7dmFyIGU7cmV0dXJuKGU9Xy5laShhLGIsZCkpIT1udWxsP2U6Y307Xy5FRGE9ZnVuY3Rpb24oYSxiKXt2YXIgYztyZXR1cm4oYz1fLkREYShhLGIpKSE9bnVsbD9jOiIwIn07Cl8uRkRhPWZ1bmN0aW9uKGEsYil7dmFyIGM7cmV0dXJuKGM9Xy5ERGEoYSxiKSkhPW51bGw/YzoiMCJ9O18uUGo9ZnVuY3Rpb24oYSxiKXt2YXIgYztyZXR1cm4oYz1fLktqKGEsYikpIT1udWxsP2M6IjAifTtfLlFqPWZ1bmN0aW9uKGEsYixjLGQsZSl7cmV0dXJuIF8ud2IoYSxiLF8uZ2IsYyxlLHZvaWQgMCxkKX07Xy5HRGE9ZnVuY3Rpb24oYSxiLGMpe2E9Xy53YihhLGIsXy5sYiwzLCEwLDEwMjQpO18uamNhKGEsYyk7cmV0dXJuIGFbY119O18uUmo9ZnVuY3Rpb24oYSxiLGMsZCxlKXtyZXR1cm4gXy53YihhLGIsZ2RhLGMsZSx2b2lkIDAsZCl9O18uU2o9ZnVuY3Rpb24oYSxiLGMpe2E9Xy5SaihhLGIsMyx2b2lkIDAsITApO18uamNhKGEsYyk7cmV0dXJuIGFbY119O18uVGo9ZnVuY3Rpb24oYSxiLGMsZCxlKXtyZXR1cm4gXy53YihhLGIsXy5DY2EsYyxlLHZvaWQgMCxkKX07Xy5Vaj1mdW5jdGlvbihhLGIsYyl7YT1fLlRqKGEsYiwzLHZvaWQgMCwhMCk7Xy5qY2EoYSxjKTtyZXR1cm4gYVtjXX07Cl8uVmo9ZnVuY3Rpb24oYSxiLGMpe3JldHVybiBfLkEoYSxfLmxqKGEsYyxiKSx2b2lkIDAsdm9pZCAwKX07Xy5Xaj1mdW5jdGlvbihhLGIsYyxkKXtyZXR1cm4gXy54ZShhLF8ubGooYSxjLGIpLGQpfTtfLkhEYT1mdW5jdGlvbihhLGIsYyl7cmV0dXJuIF8uTWooYSxfLmxqKGEsYyxiKSl9O18uWGo9ZnVuY3Rpb24oYSxiLGMpe3JldHVybiBfLk5qKGEsXy5saihhLGMsYikpfTtfLllqPWZ1bmN0aW9uKGEsYixjKXtyZXR1cm4gXy50KGEsXy5saihhLGMsYiksdm9pZCAwLHZvaWQgMCl9O18uWmo9ZnVuY3Rpb24oYSxiLGMsZCl7cmV0dXJuIF8uT2ooYSxfLmxqKGEsYyxiKSxkLHZvaWQgMCl9O18uSURhPWZ1bmN0aW9uKGEsYixjKXtyZXR1cm4gXy5naChhLF8ubGooYSxjLGIpKX07Xy5TaD1mdW5jdGlvbihhLGIsYyxkKXtyZXR1cm4gXy5xKGEsYixfLmxqKGEsZCxjKSx2b2lkIDApfTtfLmFrPWZ1bmN0aW9uKGEsYixjKXtiPV8ubGooYSxjLGIpO3JldHVybiBfLmRpKGEsYil9OwpfLkpEYT1mdW5jdGlvbihhLGIsYyl7Yj1fLmxqKGEsYyxiKTtyZXR1cm4gXy5LaihhLGIpfTtfLmJrPWZ1bmN0aW9uKGEsYixjKXtiPV8ubGooYSxjLGIpO3JldHVybiBhPV8uTGooYSxiLHZvaWQgMCl9O18uS0RhPWZ1bmN0aW9uKGEsYixjKXtiPV8ubGooYSxjLGIpO3JldHVybiBhPV8uZWkoYSxiLHZvaWQgMCl9O18uY2s9ZnVuY3Rpb24oYSxiKXtyZXR1cm4gXy5kaShhLGIsdm9pZCAwLF8uaGopfTtfLkxEYT1mdW5jdGlvbihhLGIpe3JldHVybiBfLmNpKGEsYil9O18uZGs9ZnVuY3Rpb24oYSxiLGMpe3JldHVybiBfLmNpKGEsYixjLF8uaGopfTtfLmVrPWZ1bmN0aW9uKGEsYil7cmV0dXJuIF8uVWgoYSxiLHZvaWQgMCxfLmhqKX07Xy5maz1mdW5jdGlvbihhLGIpe3JldHVybiBfLkpqKGEsYix2b2lkIDAsXy5oail9O18uZ2s9ZnVuY3Rpb24oYSxiKXtyZXR1cm4gXy5paihhLGIsdm9pZCAwLF8uaGosXy5sYil9OwpfLmhrPWZ1bmN0aW9uKGEsYil7cmV0dXJuIF8udGooYSxiLHZvaWQgMCxfLmhqKX07Xy5naD1mdW5jdGlvbihhLGIsYyl7cmV0dXJuIF8uTGooYSxiLGMsXy5oail9O18uaWs9ZnVuY3Rpb24oYSxiKXtyZXR1cm4gXy5laShhLGIsdm9pZCAwLF8uaGopfTtfLiRoPWZ1bmN0aW9uKGEsYixjLGQpe3JldHVybiBqaihhLGIsYz09bnVsbD9jOl8ud2NhKGMpLGQpfTtfLmprPWZ1bmN0aW9uKGEsYixjLGQpe3JldHVybiBfLkFiKGEsYixjPT1udWxsP2M6Xy53Y2EoYyksITEsZCl9O18uTURhPWZ1bmN0aW9uKGEsYixjLGQpe3JldHVybiBfLnhqKGEsYixjLGQ9PW51bGw/ZDpfLndjYShkKSl9O18ubGs9ZnVuY3Rpb24oYSxiLGMsZCl7cmV0dXJuIGpqKGEsYixjPT1udWxsP2M6RGNhKGMpLGQpfTtfLm1rPWZ1bmN0aW9uKGEsYixjLGQpe3JldHVybiBfLkFiKGEsYixjPT1udWxsP2M6RGNhKGMpLDAsZCl9OwpfLm5rPWZ1bmN0aW9uKGEsYixjLGQpe3JldHVybiBfLnhqKGEsYixjLGQ9PW51bGw/ZDpEY2EoZCkpfTtfLm9rPWZ1bmN0aW9uKGEsYixjKXtyZXR1cm4gamooYSxiLGM9PW51bGw/YzpfLmhiKGMpKX07Xy5ORGE9ZnVuY3Rpb24oYSxiLGMpe3JldHVybiBfLkFiKGEsYixjPT1udWxsP2M6Xy5oYihjKSwwKX07Xy50aD1mdW5jdGlvbihhLGIsYyl7cmV0dXJuIGpqKGEsYixfLmpiKGMpKX07Xy5waz1mdW5jdGlvbihhLGIsYyxkKXtyZXR1cm4gXy54aihhLGIsYyxfLmpiKGQpKX07Xy5xaz1mdW5jdGlvbihhLGIsYyl7cmV0dXJuIGpqKGEsYixfLlpjYShjKSl9O18uc2s9ZnVuY3Rpb24oYSxiLGMpe3JldHVybiBqaihhLGIsXy5qYihjKSl9O18udGs9ZnVuY3Rpb24oYSxiLGMpe3JldHVybiBqaihhLGIsXy5aY2EoYykpfTtfLndoPWZ1bmN0aW9uKGEsYixjKXtyZXR1cm4gamooYSxiLGM9PW51bGw/YzpzY2EoYykpfTsKXy51az1mdW5jdGlvbihhLGIsYyxkKXtyZXR1cm4gXy5BYihhLGIsYz09bnVsbD9jOnNjYShjKSwwLGQpfTtfLk9EYT1mdW5jdGlvbihhLGIsYyxkKXtyZXR1cm4gXy54aihhLGIsYyxkPT1udWxsP2Q6c2NhKGQpKX07Xy5maD1mdW5jdGlvbihhLGIsYyxkKXtyZXR1cm4gamooYSxiLGZkYShjKSxkKX07Xy5WYj1mdW5jdGlvbihhLGIsYyxkKXtyZXR1cm4gXy5BYihhLGIsZmRhKGMpLCIiLGQpfTtfLnZrPWZ1bmN0aW9uKGEsYixjLGQpe3JldHVybiBfLnhqKGEsYixjLGZkYShkKSl9O18ud2s9ZnVuY3Rpb24oYSxiLGMpe3JldHVybiBqaihhLGIsXy5nY2EoYywhMSwhMCkpfTtfLlBEYT1mdW5jdGlvbihhLGIsYyl7cmV0dXJuIF8uQWIoYSxiLF8uZ2NhKGMsITEsITApLF8udmJhKCkpfTtfLlpoPWZ1bmN0aW9uKGEsYixjLGQpe3JldHVybiBqaihhLGIsYz09bnVsbD9jOl8uQmNhKGMpLGQpfTsKXy54az1mdW5jdGlvbihhLGIsYyl7cmV0dXJuIF8uQWIoYSxiLGM9PW51bGw/YzpfLkJjYShjKSwwKX07Xy55az1mdW5jdGlvbihhLGIsYyxkKXtyZXR1cm4gXy54aihhLGIsYyxkPT1udWxsP2Q6Xy5CY2EoZCkpfTtfLnprPWZ1bmN0aW9uKGEsYixjKXtyZXR1cm4gXy56YihhLGIsYyxEY2EpfTtfLkFrPWZ1bmN0aW9uKGEsYixjKXtyZXR1cm4gXy5oZmEoYSxiLERjYSxjLHZvaWQgMCxfLmdiKX07Xy5Eaz1mdW5jdGlvbihhLGIsYyxkKXtyZXR1cm4gXy56YihhLGIsYyxlZGEsZCl9O18uRWs9ZnVuY3Rpb24oYSxiLGMpe3JldHVybiBfLmhmYShhLGIsZWRhLGMsdm9pZCAwLGdkYSl9O18uR3RhPWZ1bmN0aW9uKGEsYixjKXtyZXR1cm4gXy5pZmEoYSxiLGVkYSxjLGdkYSl9O18uUURhPWZ1bmN0aW9uKGEsYixjLGQpe3JldHVybiBfLmhmYShhLGIsZWRhLGQsYyxnZGEsdm9pZCAwLDEpfTtfLkZrPWZ1bmN0aW9uKGEsYixjKXtyZXR1cm4gXy56YihhLGIsYyxfLkJjYSl9OwpfLkdrPWZ1bmN0aW9uKGEsYixjLGQpe3JldHVybiBfLmhmYShhLGIsXy5CY2EsYyxkLF8uQ2NhKX07Xy5SRGE9ZnVuY3Rpb24oYSxiLGMpe3JldHVybiBfLmlmYShhLGIsXy5CY2EsYyxfLkNjYSl9O18uSGs9ZnVuY3Rpb24oYSxiLGMpe3JldHVybiBfLmRpKGEsYixjKSE9bnVsbH07Xy53ZT1mdW5jdGlvbihhLGIsYyl7cmV0dXJuIF8uY2koYSxiLGMpIT1udWxsfTtfLklrPWZ1bmN0aW9uKGEsYixjKXtyZXR1cm4gXy5MRGEoYSxfLmxqKGEsYyxiKSkhPW51bGx9O18uS2s9ZnVuY3Rpb24oYSxiKXtyZXR1cm4gXy5VaChhLGIpIT1udWxsfTtfLkZlPWZ1bmN0aW9uKGEsYil7cmV0dXJuIF8uV2NhKF8uaWooYSxiLHZvaWQgMCx2b2lkIDAsXy5rYikpIT1udWxsfTtfLlNEYT1mdW5jdGlvbihhLGIsYyl7Yj1fLmxqKGEsYyxiKTtyZXR1cm4gXy5XY2EoXy5paihhLGIsdm9pZCAwLHZvaWQgMCxfLmtiKSkhPW51bGx9OwpfLkxrPWZ1bmN0aW9uKGEsYil7cmV0dXJuIF8uJGNhKF8uaWooYSxiLHZvaWQgMCx2b2lkIDAsXy5sYikpIT1udWxsfTtfLk1rPWZ1bmN0aW9uKGEsYil7cmV0dXJuIF8uYWRhKF8uaWooYSxiKSkhPW51bGx9O18uVERhPWZ1bmN0aW9uKGEsYixjKXtiPV8ubGooYSxjLGIpO3JldHVybiBfLmFkYShfLmlqKGEsYikpIT1udWxsfTtfLk5rPWZ1bmN0aW9uKGEsYil7cmV0dXJuIF8udGooYSxiKSE9bnVsbH07Xy5Paz1mdW5jdGlvbihhLGIsYyl7Yj1fLmxqKGEsYyxiKTtyZXR1cm4gXy50aihhLGIpIT1udWxsfTtfLnBoPWZ1bmN0aW9uKGEsYixjKXtyZXR1cm4gXy5MaihhLGIsYykhPW51bGx9O18uUGs9ZnVuY3Rpb24oYSxiLGMpe3JldHVybiBfLmJrKGEsYixjKSE9bnVsbH07Xy5Raz1mdW5jdGlvbihhLGIpe3JldHVybiBfLmVpKGEsYikhPW51bGx9O18uUms9ZnVuY3Rpb24oYSxiLGMpe3JldHVybiBfLktEYShhLGIsYykhPW51bGx9OwpfLlRrPWZ1bmN0aW9uKGEsYixjKXtyZXR1cm4gXy55YihhLGIsYyxrZGEpfTtfLlVrPWZ1bmN0aW9uKGEsYixjKXtyZXR1cm4gXy5mZmEoYSxiLF8ubmIsXy5uYixjKX07Xy5VRGE9ZnVuY3Rpb24oYSxiLGMpe18ucmIoYSk7Yy5mb3JFYWNoKF8uZ2ZhLF8uVWsoYSxiKSk7cmV0dXJuIGF9O18uVkRhPWZ1bmN0aW9uKGEsYixjKXtfLnpEYShhLGIpO2MmJl8uVURhKGEsYixjKTtyZXR1cm4gYX07Xy5iYz1mdW5jdGlvbihhLGIpe2lmKGI9PW51bGx8fGI9PSIiKXJldHVybiBuZXcgYTtiPUpTT04ucGFyc2UoYik7aWYoIUFycmF5LmlzQXJyYXkoYikpdGhyb3cgRXJyb3IoIlEiKTtyZXR1cm4gbmV3IGEoWmJhKGIpKX07Xy5Waz1mdW5jdGlvbihhLGIpe3JldHVybiBhPT09Ynx8YT09bnVsbCYmYj09bnVsbHx8ISghYXx8IWIpJiZhIGluc3RhbmNlb2YgYi5jb25zdHJ1Y3RvciYmR2RhKGEsYil9OwpfLmw9Y2xhc3N7Y29uc3RydWN0b3IoYSxiLGMpe3RoaXMuUGs9SmVhKGEsYixjLDIwNDgpfXRvSlNPTigpe3JldHVybiBfLnJlYSh0aGlzKX1GYyhhKXtyZXR1cm4gSlNPTi5zdHJpbmdpZnkoXy5yZWEodGhpcyxhKSl9Z2V0RXh0ZW5zaW9uKGEpe18uZmVhKHRoaXMuUGssYS5KdCk7Xy5kZWEodGhpcyxhLkp0LGEua1dhKTtyZXR1cm4gYS5jdG9yP2EuWVc/YS5mR2EodGhpcyxhLmN0b3IsYS5KdCxfLm9oKCksYS5GWik6YS5mR2EodGhpcyxhLmN0b3IsYS5KdCxhLkZaKTphLllXP2EuZkdhKHRoaXMsYS5KdCxfLm9oKCksYS5GWik6YS5mR2EodGhpcyxhLkp0LGEuZGVmYXVsdFZhbHVlLGEuRlopfUdhKGEpe18uZmVhKHRoaXMuUGssYS5KdCk7Xy5kZWEodGhpcyxhLkp0LGEua1dhKTtyZXR1cm4gXy5Caih0aGlzLGEuY3RvcixhLkp0LHZvaWQgMCxhLkZaKX1MYyhhKXtfLmZlYSh0aGlzLlBrLGEuSnQpO18uZGVhKHRoaXMsYS5KdCxhLmtXYSk7YT1hLmN0b3I/YS5mR2EodGhpcyxhLmN0b3IsCmEuSnQsYS5GWik6YS5mR2EodGhpcyxhLkp0LG51bGwsYS5GWik7cmV0dXJuIGE9PT1udWxsP3ZvaWQgMDphfWhhc0V4dGVuc2lvbihhKXtfLmZlYSh0aGlzLlBrLGEuSnQpO18uZGVhKHRoaXMsYS5KdCxhLmtXYSk7cmV0dXJuIGEuY3Rvcj9fLmtqKHRoaXMsYS5jdG9yLGEuSnQsYS5GWik6dGhpcy5MYyhhKSE9PXZvaWQgMH1jbG9uZSgpe3ZhciBhPXRoaXMuUGssYj1hW18uYmJdfDA7cmV0dXJuIFRlYSh0aGlzLGEsYik/U2VhKHRoaXMsYSwhMCk6bmV3IHRoaXMuY29uc3RydWN0b3IoUmVhKGEsYiwhMSkpfUpmKCl7cmV0dXJuIV8uY2IodGhpcyl9aSQoKXtyZXR1cm4gXy5jYih0aGlzKX1NdSgpe3JldHVybiBVZWEodGhpcyl9VGMoKXt2YXIgYT10aGlzLlBrLGI9YVtfLmJiXXwwO3JldHVybiBfLmNiKHRoaXMsYik/dGhpczpUZWEodGhpcyxhLGIpP1NlYSh0aGlzLGEpOm5ldyB0aGlzLmNvbnN0cnVjdG9yKFJlYShhLGIsITApKX1rYShhLGIpe2FlYSh0aGlzLGEuSnQpO3JldHVybiBhLmN0b3I/CmEuZTdiKHRoaXMsYS5jdG9yLGEuSnQsYixhLkZaKTphLmU3Yih0aGlzLGEuSnQsYixhLkZaKX1rVigpe3ZhciBhPV8uV0RhO2FlYSh0aGlzLGEuSnQpO18uR2UodGhpcyxhLkp0LGEuRlopfX07Xy5sLnByb3RvdHlwZVtfLiRiYV09Xy5hY2E7dmFyIHVmYSxCZmEsRGZhLFRmYSxHZmEsSmZhLFlmYSxPZmEsemZhLEFmYTt1ZmE9Y2xhc3N7Y29uc3RydWN0b3IoYSxiLGMsZCl7dGhpcy53YT1hO3RoaXMuQWE9Yjt0aGlzLmthPWM7dGhpcy5vYT1kO2E9V2RhKF8udGZhKTsoYT0hIWEmJmQ9PT1hKXx8KGE9V2RhKF8uaERhKSxhPSEhYSYmZD09PWEpO3RoaXMuQmE9YX19O0JmYT1fLnZmYShmdW5jdGlvbihhLGIsYyxkLGUpe2lmKGEua2EhPT0yKXJldHVybiExO1JDYShhLF8uQURhKGIsZCxjKSxlKTtyZXR1cm4hMH0seWZhKTtEZmE9Xy52ZmEoZnVuY3Rpb24oYSxiLGMsZCxlKXtpZihhLmthIT09MilyZXR1cm4hMTtSQ2EoYSxfLkFEYShiLGQsYyksZSk7cmV0dXJuITB9LHlmYSk7VGZhPVN5bWJvbCgpO0dmYT1TeW1ib2woKTtKZmE9U3ltYm9sKCk7WWZhPVN5bWJvbCgpO18uWERhPVN5bWJvbCgpO09mYT1TeW1ib2woKTt2YXIgJGdhLEloYSxZRGE7JGdhPV8uWWEoMCk7SWhhPShhLGIpPT57dmFyIGM9bmV3IF8uZkRhO18uWmZhKGEuUGssYyxfLldmYShiKSk7cmV0dXJuIF8uZURhKGMpfTtZRGE9Xy5FYih6aGEsZnVuY3Rpb24oYSxiLGMpe2lmKGIhPW51bGwpe2lmKGIgaW5zdGFuY2VvZiBfLmwpe2xldCBkPWIuUk1jO2Q/KGI9ZChiKSxiIT1udWxsJiZLZ2EoYSxjLEFiYShiLCEwKS5idWZmZXIpKTpyY2EoYWdhLDMpO3JldHVybn1pZihBcnJheS5pc0FycmF5KGIpKXtyY2EoYWdhLDMpO3JldHVybn19T2dhKGEsYixjKX0sXy50RGEpOwpfLldrPV8udmZhKGZ1bmN0aW9uKGEsYixjLGQsZSl7aWYoYS5rYSE9PTIpcmV0dXJuITE7YT1SQ2EoYSxfLktlYShbdm9pZCAwLHZvaWQgMF0sZCksZSk7YT1bLi4uYV07ZD1iW18uYmJdfDA7ZT1fLm1jYShkKTtpZihkJjIpdGhyb3cgRXJyb3IoKTt2YXIgZj1fLnhiKGIsYyxlKTtpZihmIGluc3RhbmNlb2YgcGIpKGYuSWJhJjIpIT0wPyhmPWYubGZiKCksZi5wdXNoKGEpLF8udWIoYixkLGMsZixlKSk6Zi5nTmMoYSk7ZWxzZSBpZihBcnJheS5pc0FycmF5KGYpKXt2YXIgZz1mW18uYmJdfDA7aWYoIShnJjgxOTIpKXt2YXIgaD1mLGs9Z3w9ODE5MjtoW18uYmJdPWt9ZyYyJiYoZj1kZmEoZiksXy51YihiLGQsYyxmLGUpKTtmLnB1c2goYSl9ZWxzZSBfLnViKGIsZCxjLFliYShbYV0pLGUpO3JldHVybiEwfSxmdW5jdGlvbihhLGIsYyxkLGUpe2lmKGIgaW5zdGFuY2VvZiBwYiliLmZvckVhY2goKGYsZyk9Pnt3ZmEoYSxjLF8uS2VhKFtnLGZdLGQpLGUpfSk7ZWxzZSBpZihBcnJheS5pc0FycmF5KGIpKXtmb3IobGV0IGY9CjA7ZjxiLmxlbmd0aDtmKyspe2xldCBnPWJbZl07QXJyYXkuaXNBcnJheShnKSYmd2ZhKGEsYyxfLktlYShnLGQpLGUpfVliYShiKX19KTtfLlhrPWZ1bmN0aW9uKGEsYil7cmV0dXJuWyEwLGEsYl19O18uWWs9Xy5FYihmdW5jdGlvbihhLGIsYyl7aWYoYS5rYSE9PTEpcmV0dXJuITE7Xy5IYihiLGMsU2dhKGEub2EpKTtyZXR1cm4hMH0saWdhLF8uc0RhKTtfLlprPV8uRWIoZnVuY3Rpb24oYSxiLGMpe2lmKGEua2EhPT0xKXJldHVybiExO2E9U2dhKGEub2EpO18uSGIoYixjLGE9PT0wP3ZvaWQgMDphKTtyZXR1cm4hMH0saWdhLF8uc0RhKTtfLiRrPV8uRWIoZnVuY3Rpb24oYSxiLGMsZCl7aWYoYS5rYSE9PTEpcmV0dXJuITE7Xy5RYihiLGMsZCxTZ2EoYS5vYSkpO3JldHVybiEwfSxpZ2EsXy5zRGEpO18uYWw9Xy5FYihmdW5jdGlvbihhLGIsYyl7aWYoYS5rYSE9PTUpcmV0dXJuITE7Xy5IYihiLGMsVmdhKGEub2EpKTtyZXR1cm4hMH0sa2dhLF8uckRhKTsKXy5ibD1fLkdiKFdnYSxmdW5jdGlvbihhLGIsYyl7Yj1fLkRiKF8udGNhLGIsITApO2lmKGIhPW51bGwpZm9yKGxldCBnPTA7ZzxiLmxlbmd0aDtnKyspe3ZhciBkPWEsZT1jLGY9YltnXTtmIT1udWxsJiYoXy5LYihkLGUsNSksZD1kLmthLE5iYShmKSxfLmpnYShkLF8uWmEpKX19LF8uckRhKTtfLmRsPV8uR2IoV2dhLGZ1bmN0aW9uKGEsYixjKXtiPV8uRGIoXy50Y2EsYiwhMCk7aWYoYiE9bnVsbCYmYi5sZW5ndGgpe18uS2IoYSxjLDIpO18uTWIoYS5rYSxiLmxlbmd0aCo0KTtmb3IobGV0IGQ9MDtkPGIubGVuZ3RoO2QrKyljPWEua2EsTmJhKGJbZF0pLF8uamdhKGMsXy5aYSl9fSxfLnJEYSk7Xy5lbD1fLkViKGZ1bmN0aW9uKGEsYixjKXtpZihhLmthIT09NSlyZXR1cm4hMTthPVZnYShhLm9hKTtfLkhiKGIsYyxhPT09MD92b2lkIDA6YSk7cmV0dXJuITB9LGtnYSxfLnJEYSk7Cl8uZmw9Xy5FYihmdW5jdGlvbihhLGIsYyxkKXtpZihhLmthIT09NSlyZXR1cm4hMTtfLlFiKGIsYyxkLFZnYShhLm9hKSk7cmV0dXJuITB9LGtnYSxfLnJEYSk7Xy5nbD1fLkViKGZ1bmN0aW9uKGEsYixjKXtyZXR1cm4gWWdhKGEsYixjKX0sbWdhLF8uZGopO18uWkRhPV8uR2IoXy5jaGEsdGdhLF8uZGopO18uJERhPV8uRWIoZnVuY3Rpb24oYSxiLGMpe3JldHVybiBhaGEoYSxiLGMpfSxtZ2EsXy5kaik7Xy5obD1fLkViKGZ1bmN0aW9uKGEsYixjLGQpe3JldHVybiBiaGEoYSxiLGMsZCl9LG1nYSxfLmRqKTtfLmlsPV8uRWIoZnVuY3Rpb24oYSxiLGMpe3JldHVybiBZZ2EoYSxiLGMpfSxtZ2EsXy5kaik7Xy5qbD1fLkdiKGRoYSxfLm9nYSxfLmRqKTtfLmtsPV8uR2IoZGhhLHRnYSxfLmRqKTtfLmxsPV8uRWIoZnVuY3Rpb24oYSxiLGMpe3JldHVybiBhaGEoYSxiLGMpfSxtZ2EsXy5kaik7Cl8ubWw9Xy5FYihmdW5jdGlvbihhLGIsYyxkKXtyZXR1cm4gYmhhKGEsYixjLGQpfSxtZ2EsXy5kaik7Xy5ubD1fLkViKF8uamhhLF8udmdhLF8uZWopO18uYUVhPV8uR2Ioa2hhLHdnYSxfLmVqKTtfLmJFYT1fLkdiKGtoYSx6Z2EsXy5laik7Xy5vbD1fLkViKGZ1bmN0aW9uKGEsYixjLGQpe3JldHVybiBpaGEoYSxiLGMsZCl9LF8udmdhLF8uZWopO18ucGw9Xy5FYihmdW5jdGlvbihhLGIsYyl7cmV0dXJuIGZoYShhLGIsYyl9LF8udmdhLF8uZWopO18ucWw9Xy5HYihsaGEsd2dhLF8uZWopO18ucmw9Xy5HYihsaGEsemdhLF8uZWopO18uY0VhPV8uRWIoZnVuY3Rpb24oYSxiLGMpe3JldHVybiBfLmhoYShhLGIsYyl9LF8udmdhLF8uZWopO18uc2w9Xy5FYihmdW5jdGlvbihhLGIsYyxkKXtyZXR1cm4gaWhhKGEsYixjLGQpfSxfLnZnYSxfLmVqKTsKXy5DPV8uRWIoZnVuY3Rpb24oYSxiLGMpe2lmKGEua2EhPT0wKXJldHVybiExO18uSGIoYixjLG1oYShhLm9hKSk7cmV0dXJuITB9LEJnYSxfLmtEYSk7Xy50bD1fLkdiKG5oYSxmdW5jdGlvbihhLGIsYyl7Yj1fLkRiKF8uZ2IsYiwhMCk7aWYoYiE9bnVsbClmb3IobGV0IGQ9MDtkPGIubGVuZ3RoO2QrKylBZ2EoYSxjLGJbZF0pfSxfLmtEYSk7Xy51bD1fLkdiKG5oYSxmdW5jdGlvbihhLGIsYyl7Yj1fLkRiKF8uZ2IsYiwhMCk7aWYoYiE9bnVsbCYmYi5sZW5ndGgpe2M9Xy5wZ2EoYSxjKTtmb3IobGV0IGQ9MDtkPGIubGVuZ3RoO2QrKylkRGEoYS5rYSxiW2RdKTtfLnNnYShhLGMpfX0sXy5rRGEpO18udmw9Xy5FYihmdW5jdGlvbihhLGIsYyl7aWYoYS5rYSE9PTApcmV0dXJuITE7YT1taGEoYS5vYSk7Xy5IYihiLGMsYT09PTA/dm9pZCAwOmEpO3JldHVybiEwfSxCZ2EsXy5rRGEpOwpfLndsPV8uRWIoZnVuY3Rpb24oYSxiLGMsZCl7aWYoYS5rYSE9PTApcmV0dXJuITE7Xy5RYihiLGMsZCxtaGEoYS5vYSkpO3JldHVybiEwfSxCZ2EsXy5rRGEpO18uZEVhPV8uRWIodGhhLGZ1bmN0aW9uKGEsYixjKXtiPV8uY2RhKGIpO2lmKGIhPW51bGwpc3dpdGNoKF8ueGRhKGIpLF8uS2IoYSxjLDEpLGE9YS5rYSxfLnhkYShiKSx0eXBlb2YgYil7Y2FzZSAibnVtYmVyIjpiPDA/KGM9Xy5iRGEoXy4kQ2EoLWIpKSxfLk5iKGEsYy5sbyxjLmhpKSk6RmdhKGEsYik7YnJlYWs7Y2FzZSAiYmlnaW50IjpjPWI8QmlnSW50KDApP18uYkRhKF8ueWdhKC1iKSk6Xy55Z2EoYik7Xy5OYihhLGMubG8sYy5oaSk7YnJlYWs7ZGVmYXVsdDpjPWIubGVuZ3RoJiZiWzBdPT09Ii0iP18uYkRhKF8udmRhKGIuc3Vic3RyaW5nKDEpKSk6Xy52ZGEoYiksXy5OYihhLGMubG8sYy5oaSl9fSxfLmZqKTtfLnhsPV8uRWIodGhhLF8uRGdhLF8uZmopO18uZUVhPV8uR2IoXy51aGEsR2dhLF8uZmopOwpfLmZFYT1fLkViKGZ1bmN0aW9uKGEsYixjLGQpe3JldHVybiBzaGEoYSxiLGMsZCl9LF8uRGdhLF8uZmopO18uemw9Xy5FYihmdW5jdGlvbihhLGIsYyl7cmV0dXJuIHBoYShhLGIsYyl9LF8uRGdhLF8uZmopO18uQWw9Xy5HYihfLnZoYSxHZ2EsXy5maik7Xy5nRWE9Xy5FYihmdW5jdGlvbihhLGIsYyl7cmV0dXJuIF8ucmhhKGEsYixjKX0sXy5EZ2EsXy5maik7Xy5oRWE9Xy5FYihmdW5jdGlvbihhLGIsYyxkKXtyZXR1cm4gc2hhKGEsYixjLGQpfSxfLkRnYSxfLmZqKTtfLkJsPV8uRWIoZnVuY3Rpb24oYSxiLGMpe2lmKGEua2EhPT01KXJldHVybiExO18uSGIoYixjLF8ud2hhKGEub2EpKTtyZXR1cm4hMH0sXy5JZ2EsXy5uRGEpO18uRD1fLkViKGZ1bmN0aW9uKGEsYixjKXtpZihhLmthIT09MClyZXR1cm4hMTtfLkhiKGIsYyxfLkhDYShhLm9hKSk7cmV0dXJuITB9LEpnYSxfLmlEYSk7Cl8uQ2w9Xy5FYihmdW5jdGlvbihhLGIsYyl7aWYoYS5rYSE9PTApcmV0dXJuITE7YT1fLkhDYShhLm9hKTtfLkhiKGIsYyxhPT09ITE/dm9pZCAwOmEpO3JldHVybiEwfSxKZ2EsXy5pRGEpO18uRGw9Xy5FYihmdW5jdGlvbihhLGIsYyxkKXtpZihhLmthIT09MClyZXR1cm4hMTtfLlFiKGIsYyxkLF8uSENhKGEub2EpKTtyZXR1cm4hMH0sSmdhLF8uaURhKTtfLkU9Xy5FYihmdW5jdGlvbihhLGIsYyl7aWYoYS5rYSE9PTIpcmV0dXJuITE7Xy5IYihiLGMsVUNhKGEpKTtyZXR1cm4hMH0sTGdhLF8uakRhKTtfLkVsPV8uR2IoZnVuY3Rpb24oYSxiLGMpe2lmKGEua2EhPT0yKXJldHVybiExO18uZmdhKGIsYyxVQ2EoYSkpO3JldHVybiEwfSxmdW5jdGlvbihhLGIsYyl7Yj1fLkRiKGdkYSxiLCEwKTtpZihiIT1udWxsKWZvcihsZXQgZz0wO2c8Yi5sZW5ndGg7ZysrKXt2YXIgZD1hLGU9YyxmPWJbZ107ZiE9bnVsbCYmS2dhKGQsZSxfLmdhYShmLCExKSl9fSxfLmpEYSk7Cl8uRmw9Xy5FYihmdW5jdGlvbihhLGIsYyl7aWYoYS5rYSE9PTIpcmV0dXJuITE7YT1VQ2EoYSk7Xy5IYihiLGMsYT09PSIiP3ZvaWQgMDphKTtyZXR1cm4hMH0sTGdhLF8uakRhKTtfLkdsPV8uRWIoZnVuY3Rpb24oYSxiLGMsZCl7aWYoYS5rYSE9PTIpcmV0dXJuITE7Xy5RYihiLGMsZCxVQ2EoYSkpO3JldHVybiEwfSxMZ2EsXy5qRGEpO18uSGw9ZWdhKGZ1bmN0aW9uKGEsYixjLGQsZSl7aWYoYS5rYSE9PTMpcmV0dXJuITE7Xy5TQ2EoYSxjLGdnYShiLGQsYyksZSk7cmV0dXJuITB9LGZ1bmN0aW9uKGEsYixjLGQsZSl7Y2dhKGEsYixjLGQsZSxfLk1nYSl9LF8uaERhKTtfLkY9ZWdhKGZ1bmN0aW9uKGEsYixjLGQsZSl7aWYoYS5rYSE9PTIpcmV0dXJuITE7UkNhKGEsZ2dhKGIsZCxjKSxlKTtyZXR1cm4hMH0sZnVuY3Rpb24oYSxiLGMsZCxlKXtjZ2EoYSxiLGMsZCxlLE5nYSl9KTsKXy5JbD1fLnZmYShmdW5jdGlvbihhLGIsYyxkLGUsZil7aWYoYS5rYSE9PTIpcmV0dXJuITE7UkNhKGEsXy5CRGEoYixkLGMsZiksZSk7cmV0dXJuITB9LE5nYSk7Xy5KbD1fLkViKGZ1bmN0aW9uKGEsYixjKXtpZihhLmthIT09MilyZXR1cm4hMTtfLkhiKGIsYyx5aGEoYSkpO3JldHVybiEwfSxPZ2EsXy50RGEpO18uS2w9Xy5HYihmdW5jdGlvbihhLGIsYyl7aWYoYS5rYSE9PTIpcmV0dXJuITE7Xy5mZ2EoYixjLHloYShhKSk7cmV0dXJuITB9LGZ1bmN0aW9uKGEsYixjKXtiPV8uRGIoZGRhLGIsITEpO2lmKGIhPW51bGwpZm9yKGxldCBnPTA7ZzxiLmxlbmd0aDtnKyspe3ZhciBkPWEsZT1jLGY9YltnXTtmIT1udWxsJiZLZ2EoZCxlLEFiYShmLCEwKS5idWZmZXIpfX0sXy50RGEpO18uTGw9Xy5FYih6aGEsT2dhLF8udERhKTtfLk1sPV8uRWIoZnVuY3Rpb24oYSxiLGMsZCl7aWYoYS5rYSE9PTIpcmV0dXJuITE7Xy5RYihiLGMsZCx5aGEoYSkpO3JldHVybiEwfSxPZ2EsXy50RGEpOwpfLk5sPV8uRWIoZnVuY3Rpb24oYSxiLGMpe2lmKGEua2EhPT0wKXJldHVybiExO18uSGIoYixjLF8uUGIoYS5vYSkpO3JldHVybiEwfSxQZ2EsXy5sRGEpO18uT2w9Xy5HYihBaGEsZnVuY3Rpb24oYSxiLGMpe2I9Xy5EYihfLmliLGIsITApO2lmKGIhPW51bGwpZm9yKGxldCBnPTA7ZzxiLmxlbmd0aDtnKyspe3ZhciBkPWEsZT1jLGY9YltnXTtmIT1udWxsJiYoXy5LYihkLGUsMCksXy5NYihkLmthLGYpKX19LF8ubERhKTtfLlFsPV8uR2IoQWhhLGZ1bmN0aW9uKGEsYixjKXtiPV8uRGIoXy5pYixiLCEwKTtpZihiIT1udWxsJiZiLmxlbmd0aCl7Yz1fLnBnYShhLGMpO2ZvcihsZXQgZD0wO2Q8Yi5sZW5ndGg7ZCsrKV8uTWIoYS5rYSxiW2RdKTtfLnNnYShhLGMpfX0sXy5sRGEpO18uaUVhPV8uRWIoZnVuY3Rpb24oYSxiLGMpe2lmKGEua2EhPT0wKXJldHVybiExO2E9Xy5QYihhLm9hKTtfLkhiKGIsYyxhPT09MD92b2lkIDA6YSk7cmV0dXJuITB9LFBnYSxfLmxEYSk7Cl8uUmw9Xy5FYihmdW5jdGlvbihhLGIsYyxkKXtpZihhLmthIT09MClyZXR1cm4hMTtfLlFiKGIsYyxkLF8uUGIoYS5vYSkpO3JldHVybiEwfSxQZ2EsXy5sRGEpO18uRz1fLkViKGZ1bmN0aW9uKGEsYixjKXtpZihhLmthIT09MClyZXR1cm4hMTtfLkhiKGIsYyxtaGEoYS5vYSkpO3JldHVybiEwfSxSZ2EsXy51RGEpO18uU2w9Xy5HYihDaGEsZnVuY3Rpb24oYSxiLGMpe2I9Xy5EYihfLmdiLGIsITApO2lmKGIhPW51bGwpZm9yKGxldCBkPTA7ZDxiLmxlbmd0aDtkKyspUWdhKGEsYyxiW2RdKX0sXy51RGEpO18uVGw9Xy5HYihDaGEsZnVuY3Rpb24oYSxiLGMpe2I9Xy5EYihfLmdiLGIsITApO2lmKGIhPW51bGwmJmIubGVuZ3RoKXtjPV8ucGdhKGEsYyk7Zm9yKGxldCBkPTA7ZDxiLmxlbmd0aDtkKyspZERhKGEua2EsYltkXSk7Xy5zZ2EoYSxjKX19LF8udURhKTsKXy5VbD1fLkViKGZ1bmN0aW9uKGEsYixjKXtpZihhLmthIT09MClyZXR1cm4hMTthPW1oYShhLm9hKTtfLkhiKGIsYyxhPT09MD92b2lkIDA6YSk7cmV0dXJuITB9LFJnYSxfLnVEYSk7Xy5XbD1fLkViKGZ1bmN0aW9uKGEsYixjLGQpe2lmKGEua2EhPT0wKXJldHVybiExO18uUWIoYixjLGQsbWhhKGEub2EpKTtyZXR1cm4hMH0sUmdhLF8udURhKTtfLlhsPV8uRWIoZnVuY3Rpb24oYSxiLGMpe2lmKGEua2EhPT01KXJldHVybiExO18uSGIoYixjLGdtYShhLm9hKSk7cmV0dXJuITB9LGZ1bmN0aW9uKGEsYixjKXtiPV8uZ2IoYik7YiE9bnVsbCYmKF8uS2IoYSxjLDUpLGVtYShhLmthLGIpKX0sXy5vRGEpO18uakVhPVshMCxfLkMsXy5pbF07Xy5rRWE9WyEwLF8uQyxfLkRdO18ubEVhPVshMCxfLkUsXy5hbF07Xy5tRWE9WyEwLF8uRSxfLkRdO18uWWw9WyEwLF8uRSxfLkVdO18uSmhhPVN5bWJvbCgpO18uS2hhPVN5bWJvbCgpO18ubkVhPW5ldyBNYXA7Xy5SYj1jbGFzc3tjb25zdHJ1Y3RvcihhLGIsYyxkLGUsZil7dGhpcy5KdD1hO3RoaXMuY3Rvcj1jO3RoaXMuWVc9ZDt0aGlzLmZHYT1lO3RoaXMuZTdiPWY7dGhpcy5kZWZhdWx0VmFsdWU9dm9pZCAwO3RoaXMuRlo9Yi5tZXNzYWdlSWQhPW51bGw/Xy5kYjp2b2lkIDA7dGhpcy5rV2E9dm9pZCAwfXJlZ2lzdGVyKCl7Xy5aaSh0aGlzKX19O18ub0VhPXt9O18ucEVhPXt9O18ucUVhPXt9O18uckVhPXt9O18uWmw9Y2xhc3MgZXh0ZW5kcyBfLmx7Y29uc3RydWN0b3IoYSl7c3VwZXIoYSl9fTtfLkVzYT1jbGFzcyBleHRlbmRzIF8ubHtjb25zdHJ1Y3RvcihhKXtzdXBlcihhKX19O3ZhciB5c2E9Y2xhc3MgZXh0ZW5kcyBfLmx7Y29uc3RydWN0b3IoYSl7c3VwZXIoYSl9ZVZiKCl7cmV0dXJuIF8ua2oodGhpcyxfLkVzYSw1KX19O18uc0VhPVswLDUsXy5FXTt2YXIgeHNhPV8uWGIoY2xhc3MgZXh0ZW5kcyBfLmx7Y29uc3RydWN0b3IoYSl7c3VwZXIoYSl9VFNhKCl7cmV0dXJuIF8ub2oodGhpcyx5c2EsMSl9fSxbMCxfLkYsWzAsXy5FLDIsXy5zRWEsWzAsNixfLkVdXV0pO3ZhciB0RWE9Y2xhc3MgZXh0ZW5kcyBfLmx7Y29uc3RydWN0b3IoYSl7c3VwZXIoYSl9fTt2YXIgUmhhPW5ldyBNYXAsRGthPW5ldyBNYXAsT2hhPW5ldyBNYXAsUGhhPW5ldyBNYXA7ZmMoIllZbUh6YiIsInJoalRHYiIpO3ZhciBVaGE7dmFyIHVFYSx2RWE7dUVhPWZ1bmN0aW9uKGEsYixjPSExKXthLm9hPWEub2EuY29uY2F0KGIpO2lmKGMpe2lmKCFhLmthKXRocm93IEVycm9yKCJVYCIrYS53YSk7Yi5tYXAoZD0+ZC5rYSkuZm9yRWFjaChkPT57VmhhKGU9PntlLkVPYShhLmthLGQpfSl9KX19O3ZFYT1mdW5jdGlvbihhLGIsYz0hMSl7aWYoYyl7aWYoIWEua2EpdGhyb3cgRXJyb3IoIlVgIithLndhKTtiLm1hcChkPT5kLmthKS5mb3JFYWNoKGQ9PntWaGEoZT0+e2UueWNiKGEua2EsZCl9KX0pfWEub2E9YS5vYS5maWx0ZXIoZD0+Yi5pbmRleE9mKGQpPT09LTEpfTtfLmljPWNsYXNze2NvbnN0cnVjdG9yKGEsYixjLGQ9ITEsZT0hMSl7Yz1jfHxbXTt0aGlzLndhPWE7dGhpcy5rYT1ifHxudWxsO3RoaXMub2E9W107dUVhKHRoaXMsYyxlKTt0aGlzLkFhPWR9dG9TdHJpbmcoKXtyZXR1cm4gdGhpcy53YX1lRigpe3JldHVybiB0aGlzLm9hfVZtKGEsYj0hMSl7dkVhKHRoaXMsdGhpcy5vYSxiKTt1RWEodGhpcyxhLGIpfWhyYSgpe319O3ZhciB3RWE9e3RvU3RyaW5nOmZ1bmN0aW9uKGEpe3ZhciBiPVtdLGM9MDthLT0tMjE0NzQ4MzY0ODtiW2MrK109ImFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6QUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVoiLmNoYXJBdChhJTUyKTtmb3IoYT1NYXRoLmZsb29yKGEvNTIpO2E+MDspYltjKytdPSJhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ekFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaMDEyMzQ1Njc4OSIuY2hhckF0KGElNjIpLGE9TWF0aC5mbG9vcihhLzYyKTtyZXR1cm4gYi5qb2luKCIiKX19O3ZhciB4RWEseUVhOwpfLmFoPWZ1bmN0aW9uKGEpe2E9eEVhKGEpO2Zvcih2YXIgYj0yNjU0NDM1NzY5LGM9MjY1NDQzNTc2OSxkPTMxNDE1OTI2NSxlPWEubGVuZ3RoLGY9ZSxnPTAsaD1mdW5jdGlvbigpe2ItPWM7Yi09ZDtiXj1kPj4+MTM7Yy09ZDtjLT1iO2NePWI8PDg7ZC09YjtkLT1jO2RePWM+Pj4xMztiLT1jO2ItPWQ7Yl49ZD4+PjEyO2MtPWQ7Yy09YjtjXj1iPDwxNjtkLT1iO2QtPWM7ZF49Yz4+PjU7Yi09YztiLT1kO2JePWQ+Pj4zO2MtPWQ7Yy09YjtjXj1iPDwxMDtkLT1iO2QtPWM7ZF49Yz4+PjE1fTtmPj0xMjtmLT0xMixnKz0xMiliKz15RWEoYSxnKSxjKz15RWEoYSxnKzQpLGQrPXlFYShhLGcrOCksaCgpO2QrPWU7c3dpdGNoKGYpe2Nhc2UgMTE6ZCs9YVtnKzEwXTw8MjQ7Y2FzZSAxMDpkKz1hW2crOV08PDE2O2Nhc2UgOTpkKz1hW2crOF08PDg7Y2FzZSA4OmMrPWFbZys3XTw8MjQ7Y2FzZSA3OmMrPWFbZys2XTw8MTY7Y2FzZSA2OmMrPWFbZys1XTw8ODtjYXNlIDU6Yys9YVtnKzRdO2Nhc2UgNDpiKz0KYVtnKzNdPDwyNDtjYXNlIDM6Yis9YVtnKzJdPDwxNjtjYXNlIDI6Yis9YVtnKzFdPDw4O2Nhc2UgMTpiKz1hW2ddfWgoKTtyZXR1cm4gd0VhLnRvU3RyaW5nKGQpfTt4RWE9ZnVuY3Rpb24oYSl7dmFyIGI9W107Zm9yKGxldCBjPTA7YzxhLmxlbmd0aDtjKyspYi5wdXNoKGEuY2hhckNvZGVBdChjKSk7cmV0dXJuIGJ9O3lFYT1mdW5jdGlvbihhLGIpe3JldHVybiBhW2JdKyhhW2IrMV08PDgpKyhhW2IrMl08PDE2KSsoYVtiKzNdPDwyNCl9O18uekVhPV8ua2MoIllZbUh6YiIsW10pO3ZhciBjaWE9e307Xy4kaGE9Y2xhc3N7Y29uc3RydWN0b3IoYSxiKXt0aGlzLmthPWJ9dG9TdHJpbmcoKXtyZXR1cm4gdGhpcy5rYX19O2JpYShhPT5hYGApfHxiaWEoYT0+YWBcMGApfHxiaWEoYT0+YWBcbmApfHxiaWEoYT0+YWBcdTAwMDBgKTt2YXIgQUVhPWdsb2JhbFRoaXMudHJ1c3RlZFR5cGVzLGRpYT1BRWEsZmlhO18ucGM9Y2xhc3N7Y29uc3RydWN0b3IoYSxiKXt0aGlzLmthPWJ9dG9TdHJpbmcoKXtyZXR1cm4gdGhpcy5rYSsiIn19O18uJGw9bmV3IF8ucGMoY2lhLEFFYT9BRWEuZW1wdHlIVE1MOiIiKTtfLmlpYT1jbGFzc3tjb25zdHJ1Y3RvcihhLGIpe3RoaXMua2E9Yn10b1N0cmluZygpe3JldHVybiB0aGlzLmthfX07Xy50Yz1jbGFzc3tjb25zdHJ1Y3RvcihhLGIpe3RoaXMuVzNiPWJ9dG9TdHJpbmcoKXtyZXR1cm4gdGhpcy5XM2IrIiJ9fTtfLnBpYT1jbGFzc3tjb25zdHJ1Y3RvcihhLGIpe3RoaXMua2E9Yn10b1N0cmluZygpe3JldHVybiB0aGlzLmthfX07Xy5CRWE9Xy5BYygiYWJvdXQ6YmxhbmsiKTtfLkVjPV8uQWMoImFib3V0OmludmFsaWQjekNsb3N1cmV6Iik7dmFyIHJpYSxzaWEsdmlhLENFYSx4aWE7cmlhPWNsYXNze2NvbnN0cnVjdG9yKGEpe3RoaXMuaXNWYWxpZD1hfX07Cl8uYW09e1RFTDpDYygidGVsIiksTmRjOm5ldyByaWEoYT0+L15jYWxsdG86XCs/XGQqJC9pLnRlc3QoYSkpLFlpYzpuZXcgcmlhKGE9PmEuaW5kZXhPZigic3NoOi8vIik9PT0wKSxBaWM6Q2MoInJ0c3AiKSxpSWI6Q2MoImRhdGEiKSxiaGI6Q2MoImh0dHAiKSxjaGI6Q2MoImh0dHBzIiksRVhURU5TSU9OOm5ldyByaWEoYT0+YS5pbmRleE9mKCJjaHJvbWUtZXh0ZW5zaW9uOi8vIik9PT0wfHxhLmluZGV4T2YoIm1vei1leHRlbnNpb246Ly8iKT09PTB8fGEuaW5kZXhPZigibXMtYnJvd3Nlci1leHRlbnNpb246Ly8iKT09PTB8fGEuaW5kZXhPZigic2FmYXJpLXdlYi1leHRlbnNpb246Ly8iKT09PTApLHFJYjpDYygiZnRwIiksZWliOm5ldyByaWEoYT0+L15bXjpdKihbLz8jXXwkKS8udGVzdChhKSksa0piOkNjKCJtYWlsdG8iKSxDSWI6Q2MoImludGVudCIpLFhnYzpDYygibWFya2V0IiksQmZjOkNjKCJpdG1zIiksQ2ZjOkNjKCJpdG1zLWFwcHNzIiksRGZjOkNjKCJpdG1zLXNlcnZpY2VzIiksCktlYzpDYygiZmItbWVzc2VuZ2VyIiksbmtjOkNjKCJ3aGF0c2FwcCIpLFJpYzpuZXcgcmlhKGE9PmEuaW5kZXhPZigic2lwOiIpPT09MHx8YS5pbmRleE9mKCJzaXBzOiIpPT09MCksa2liOkNjKCJzbXMiKSx3dmQ6Q2MoInZuZC55b3V0dWJlIiksamZjOkNjKCJnb29nbGVob21lIiksbzdjOkNjKCJnb29nbGVob21lc2RrIiksUGFkOkNjKCJsaW5lIil9O3NpYT1bXy5hbS5pSWIsXy5hbS5iaGIsXy5hbS5jaGIsXy5hbS5rSmIsXy5hbS5xSWIsXy5hbS5laWJdO3ZpYT10eXBlb2YgVVJMPT09ImZ1bmN0aW9uIjtDRWE9WyJkYXRhOiIsImh0dHA6IiwiaHR0cHM6IiwibWFpbHRvOiIsImZ0cDoiXTt4aWE9L15ccyooPyFqYXZhc2NyaXB0OikoPzpbXHcrLi1dKzp8W146Lz8jXSooPzpbLz8jXXwkKSkvaTtfLnRpYT0oKT0+e307Xy56aWE9Y2xhc3N7Y29uc3RydWN0b3IoYSxiKXt0aGlzLmthPWJ9dG9TdHJpbmcoKXtyZXR1cm4gdGhpcy5rYSsiIn19O18uREVhPW5ldyBfLnppYShjaWEsQUVhP0FFYS5lbXB0eVNjcmlwdDoiIik7dmFyIEZpYT0vXlthLXpdW2EtelxkLV0qJC9pLEdpYT0iQVBQTEVUIEJBU0UgRU1CRUQgSUZSQU1FIExJTksgTUFUSCBNRVRBIE9CSkVDVCBTQ1JJUFQgU1RZTEUgU1ZHIFRFTVBMQVRFIi5zcGxpdCgiICIpLEppYT0iQVJFQSBCUiBDT0wgQ09NTUFORCBIUiBJTUcgSU5QVVQgS0VZR0VOIFBBUkFNIFNPVVJDRSBUUkFDSyBXQlIiLnNwbGl0KCIgIiksTGlhPVsiYWN0aW9uIiwiZm9ybWFjdGlvbiIsImhyZWYiXTt2YXIgRUVhO0VFYT1mdW5jdGlvbihhLGIsYyl7Yz1hLmthLmdldChjKTtyZXR1cm4oYz09bnVsbD8wOmMuaGFzKGIpKT9jLmdldChiKTphLkFhLmhhcyhiKT97a0w6MX06KGM9YS5CYS5nZXQoYikpP2M6YS5vYSYmWy4uLmEub2FdLnNvbWUoZD0+Yi5pbmRleE9mKGQpPT09MCk/e2tMOjF9OntrTDowfX07Xy5GRWE9Y2xhc3N7Y29uc3RydWN0b3IoYSxiLGMsZCxlKXt0aGlzLndhPWE7dGhpcy5rYT1iO3RoaXMuQWE9Yzt0aGlzLkJhPWQ7dGhpcy5vYT1lfX07dmFyIEdFYT0iQVJUSUNMRSBTRUNUSU9OIE5BViBBU0lERSBIMSBIMiBIMyBINCBINSBINiBIRUFERVIgRk9PVEVSIEFERFJFU1MgUCBIUiBQUkUgQkxPQ0tRVU9URSBPTCBVTCBMSCBMSSBETCBEVCBERCBGSUdVUkUgRklHQ0FQVElPTiBNQUlOIERJViBFTSBTVFJPTkcgU01BTEwgUyBDSVRFIFEgREZOIEFCQlIgUlVCWSBSQiBSVCBSVEMgUlAgREFUQSBUSU1FIENPREUgVkFSIFNBTVAgS0JEIFNVQiBTVVAgSSBCIFUgTUFSSyBCREkgQkRPIFNQQU4gQlIgV0JSIE5PQlIgSU5TIERFTCBQSUNUVVJFIFBBUkFNIFRSQUNLIE1BUCBUQUJMRSBDQVBUSU9OIENPTEdST1VQIENPTCBUQk9EWSBUSEVBRCBURk9PVCBUUiBURCBUSCBTRUxFQ1QgREFUQUxJU1QgT1BUR1JPVVAgT1BUSU9OIE9VVFBVVCBQUk9HUkVTUyBNRVRFUiBGSUVMRFNFVCBMRUdFTkQgREVUQUlMUyBTVU1NQVJZIE1FTlUgRElBTE9HIFNMT1QgQ0FOVkFTIEZPTlQgQ0VOVEVSIEFDUk9OWU0gQkFTRUZPTlQgQklHIERJUiBIR1JPVVAgU1RSSUtFIFRUIi5zcGxpdCgiICIpLApIRWE9W1siQSIsbmV3IE1hcChbWyJocmVmIix7a0w6N31dXSldLFsiQVJFQSIsbmV3IE1hcChbWyJocmVmIix7a0w6N31dXSldLFsiTElOSyIsbmV3IE1hcChbWyJocmVmIix7a0w6NSxjb25kaXRpb25zOm5ldyBNYXAoW1sicmVsIixuZXcgU2V0KCJhbHRlcm5hdGUgYXV0aG9yIGJvb2ttYXJrIGNhbm9uaWNhbCBjaXRlIGhlbHAgaWNvbiBsaWNlbnNlIG5leHQgcHJlZmV0Y2ggZG5zLXByZWZldGNoIHByZXJlbmRlciBwcmVjb25uZWN0IHByZWxvYWQgcHJldiBzZWFyY2ggc3VicmVzb3VyY2UiLnNwbGl0KCIgIikpXV0pfV1dKV0sWyJTT1VSQ0UiLG5ldyBNYXAoW1sic3JjIix7a0w6NX1dLFsic3Jjc2V0Iix7a0w6Nn1dXSldLFsiSU1HIixuZXcgTWFwKFtbInNyYyIse2tMOjV9XSxbInNyY3NldCIse2tMOjZ9XV0pXSxbIlZJREVPIixuZXcgTWFwKFtbInNyYyIse2tMOjV9XV0pXSxbIkFVRElPIixuZXcgTWFwKFtbInNyYyIse2tMOjV9XV0pXV0sSUVhPSJ0aXRsZSBhcmlhLWF0b21pYyBhcmlhLWF1dG9jb21wbGV0ZSBhcmlhLWJ1c3kgYXJpYS1jaGVja2VkIGFyaWEtY3VycmVudCBhcmlhLWRpc2FibGVkIGFyaWEtZHJvcGVmZmVjdCBhcmlhLWV4cGFuZGVkIGFyaWEtaGFzcG9wdXAgYXJpYS1oaWRkZW4gYXJpYS1pbnZhbGlkIGFyaWEtbGFiZWwgYXJpYS1sZXZlbCBhcmlhLWxpdmUgYXJpYS1tdWx0aWxpbmUgYXJpYS1tdWx0aXNlbGVjdGFibGUgYXJpYS1vcmllbnRhdGlvbiBhcmlhLXBvc2luc2V0IGFyaWEtcHJlc3NlZCBhcmlhLXJlYWRvbmx5IGFyaWEtcmVsZXZhbnQgYXJpYS1yZXF1aXJlZCBhcmlhLXNlbGVjdGVkIGFyaWEtc2V0c2l6ZSBhcmlhLXNvcnQgYXJpYS12YWx1ZW1heCBhcmlhLXZhbHVlbWluIGFyaWEtdmFsdWVub3cgYXJpYS12YWx1ZXRleHQgYWx0IGFsaWduIGF1dG9jYXBpdGFsaXplIGF1dG9jb21wbGV0ZSBhdXRvY29ycmVjdCBhdXRvZm9jdXMgYXV0b3BsYXkgYmdjb2xvciBib3JkZXIgY2VsbHBhZGRpbmcgY2VsbHNwYWNpbmcgY2hlY2tlZCBjaXRlIGNvbG9yIGNvbHMgY29sc3BhbiBjb250cm9scyBjb250cm9sc2xpc3QgY29vcmRzIGNyb3Nzb3JpZ2luIGRhdGV0aW1lIGRpc2FibGVkIGRvd25sb2FkIGRyYWdnYWJsZSBlbmN0eXBlIGZhY2UgZm9ybWVuY3R5cGUgZnJhbWVib3JkZXIgaGVpZ2h0IGhyZWZsYW5nIGhpZGRlbiBpbmVydCBpc21hcCBsYWJlbCBsYW5nIGxvb3AgbWF4IG1heGxlbmd0aCBtZWRpYSBtaW5sZW5ndGggbWluIG11bHRpcGxlIG11dGVkIG5vbmNlIG9wZW4gcGxheXNpbmxpbmUgcGxhY2Vob2xkZXIgcHJlbG9hZCByZWwgcmVxdWlyZWQgcmV2ZXJzZWQgcm9sZSByb3dzIHJvd3NwYW4gc2VsZWN0ZWQgc2hhcGUgc2l6ZSBzaXplcyBzbG90IHNwYW4gc3BlbGxjaGVjayBzdGFydCBzdGVwIHN1bW1hcnkgdHJhbnNsYXRlIHR5cGUgdXNlbWFwIHZhbGlnbiB2YWx1ZSB3aWR0aCB3cmFwIGl0ZW1zY29wZSBpdGVtdHlwZSBpdGVtaWQgaXRlbXByb3AgaXRlbXJlZiIuc3BsaXQoIiAiKSwKSkVhPVtbImRpciIse2tMOjMsY29uZGl0aW9uczpuZXcgTWFwKFtbImRpciIsbmV3IFNldChbImF1dG8iLCJsdHIiLCJydGwiXSldXSl9XSxbImFzeW5jIix7a0w6Myxjb25kaXRpb25zOm5ldyBNYXAoW1siYXN5bmMiLG5ldyBTZXQoWyJhc3luYyJdKV1dKX1dLFsibG9hZGluZyIse2tMOjMsY29uZGl0aW9uczpuZXcgTWFwKFtbImxvYWRpbmciLG5ldyBTZXQoWyJlYWdlciIsImxhenkiXSldXSl9XSxbInBvc3RlciIse2tMOjV9XSxbInRhcmdldCIse2tMOjMsY29uZGl0aW9uczpuZXcgTWFwKFtbInRhcmdldCIsbmV3IFNldChbIl9zZWxmIiwiX2JsYW5rIl0pXV0pfV1dLEtFYT1uZXcgXy5GRWEobmV3IFNldChHRWEpLG5ldyBNYXAoSEVhKSxuZXcgU2V0KElFYSksbmV3IE1hcChKRWEpKSxMRWE9bmV3IF8uRkVhKG5ldyBTZXQoR0VhLmNvbmNhdChbIkJVVFRPTiIsIklOUFVUIl0pKSxuZXcgTWFwKEhFYSksbmV3IFNldChJRWEuY29uY2F0KFsiY2xhc3MiLCJpZCIsIm5hbWUiXSkpLApuZXcgTWFwKEpFYS5jb25jYXQoW1sic3R5bGUiLHtrTDoxfV1dKSkpLE1FYT1uZXcgXy5GRWEobmV3IFNldChHRWEuY29uY2F0KCJTVFlMRSBUSVRMRSBJTlBVVCBURVhUQVJFQSBCVVRUT04gTEFCRUwiLnNwbGl0KCIgIikpKSxuZXcgTWFwKEhFYSksbmV3IFNldChJRWEuY29uY2F0KFsiY2xhc3MiLCJpZCIsInRhYmluZGV4IiwiY29udGVudGVkaXRhYmxlIiwibmFtZSJdKSksbmV3IE1hcChKRWEuY29uY2F0KFtbInN0eWxlIix7a0w6MX1dXSkpLG5ldyBTZXQoWyJkYXRhLSIsImFyaWEtIl0pKTt2YXIgTkVhLFBFYTsKXy5PRWE9ZnVuY3Rpb24oYSxiLGMpe2I9UGlhKGIsYyk7Yj1kb2N1bWVudC5jcmVhdGVUcmVlV2Fsa2VyKGIsNSxnPT57aWYoZy5ub2RlVHlwZT09PTMpZz0xO2Vsc2UgaWYoUmlhKGcpKWlmKGc9UWlhKGcpLGc9PT1udWxsKWc9MjtlbHNle3ZhciBoPWEuQmE7Zz1nIT09IkZPUk0iJiYoaC53YS5oYXMoZyl8fGgua2EuaGFzKGcpKT8xOjJ9ZWxzZSBnPTI7cmV0dXJuIGd9KTtmb3IodmFyIGQ9Yi5uZXh0Tm9kZSgpLGU9Yy5jcmVhdGVEb2N1bWVudEZyYWdtZW50KCksZj1lO2QhPT1udWxsOyl7bGV0IGc7aWYoZC5ub2RlVHlwZT09PTMpYS53YSYmZi5ub2RlTmFtZT09PSJTVFlMRSI/KGQ9YS53YShkLmRhdGEpLGc9YS5jcmVhdGVUZXh0Tm9kZShkKSk6Zz1hLmNyZWF0ZVRleHROb2RlKGQuZGF0YSk7ZWxzZSBpZihSaWEoZCkpZz1ORWEoYSxkLGMpO2Vsc2UgdGhyb3cgRXJyb3IoIlYiKTtmLmFwcGVuZENoaWxkKGcpO2lmKGQ9Yi5maXJzdENoaWxkKCkpZj1nO2Vsc2UgZm9yKDshKGQ9Yi5uZXh0U2libGluZygpKSYmCihkPWIucGFyZW50Tm9kZSgpKTspZj1mLnBhcmVudE5vZGV9cmV0dXJuIGV9OwpORWE9ZnVuY3Rpb24oYSxiLGMpe3ZhciBkPVFpYShiKTtjPWMuY3JlYXRlRWxlbWVudChkKTtiPWIuYXR0cmlidXRlcztmb3IobGV0IHtuYW1lOmgsdmFsdWU6a31vZiBiKXt2YXIgZT1FRWEoYS5CYSxoLGQpLGY7YTp7aWYoZj1lLmNvbmRpdGlvbnMpZm9yKGxldCBbbSxuXW9mIGYpe2Y9bjtsZXQgcDt2YXIgZz0ocD1iLmdldE5hbWVkSXRlbShtKSk9PW51bGw/dm9pZCAwOnAudmFsdWU7aWYoZyYmIWYuaGFzKGcpKXtmPSExO2JyZWFrIGF9fWY9ITB9aWYoZilzd2l0Y2goZS5rTCl7Y2FzZSAxOlNpYShjLGgsayk7YnJlYWs7Y2FzZSAyOnRocm93IEVycm9yKCk7Y2FzZSAzOlNpYShjLGgsay50b0xvd2VyQ2FzZSgpKTticmVhaztjYXNlIDQ6YS5vYT8oZT1hLm9hKGspLFNpYShjLGgsZSkpOlNpYShjLGgsayk7YnJlYWs7Y2FzZSA1OmEua2E/KGU9e3R5cGU6MixhdHRyaWJ1dGVOYW1lOmgsSlFiOmR9LGY9TWlhKGspLChlPWEua2EoZixlKSkmJlNpYShjLGgsZS50b1N0cmluZygpKSk6ClNpYShjLGgsayk7YnJlYWs7Y2FzZSA2OmlmKGEua2Epe2U9e3R5cGU6MixhdHRyaWJ1dGVOYW1lOmgsSlFiOmR9O2Y9W107Zm9yKGxldCBtIG9mIGsuc3BsaXQoIiwiKSl7bGV0IFtuLHBdPW0udHJpbSgpLnNwbGl0KC9ccysvLDIpO2YucHVzaCh7dXJsOm4sVmdhOnB9KX1nPWY7Zj17VDI6W119O2ZvcihsZXQgbSBvZiBnKWc9TWlhKG0udXJsKSwoZz1hLmthKGcsZSkpJiZmLlQyLnB1c2goe3VybDpnLnRvU3RyaW5nKCksVmdhOm0uVmdhfSk7U2lhKGMsaCxUaWEoZikpfWVsc2UgU2lhKGMsaCxrKTticmVhaztjYXNlIDc6ZT1rO2lmKGEuQWEpe2U9e3R5cGU6MixhdHRyaWJ1dGVOYW1lOmgsSlFiOmR9O2Y9TWlhKGspO2U9YS5BYShmLGUpO2lmKGU9PT1udWxsKWJyZWFrO2U9ZS50b1N0cmluZygpfWY9d2lhKGUpO2U9ZiE9PXZvaWQgMCYmQ0VhLmluZGV4T2YoZi50b0xvd2VyQ2FzZSgpKSE9PS0xP2U6ImFib3V0OmludmFsaWQjekNsb3N1cmV6IjtTaWEoYyxoLGUpfX1yZXR1cm4gY307ClBFYT1jbGFzc3tjb25zdHJ1Y3RvcihhLGIsYyxkLGUpe3RoaXMuQmE9YTt0aGlzLndhPWI7dGhpcy5vYT1jO3RoaXMua2E9ZDt0aGlzLkFhPWU7dGhpcy5jaGFuZ2VzPVtdfUVGKGEpe3ZhciBiPWRvY3VtZW50LmltcGxlbWVudGF0aW9uLmNyZWF0ZUhUTUxEb2N1bWVudCgiIik7YT1fLk9FYSh0aGlzLGEsYik7Yj1iLmJvZHk7Yi5hcHBlbmRDaGlsZChhKTtiPShuZXcgWE1MU2VyaWFsaXplcikuc2VyaWFsaXplVG9TdHJpbmcoYik7Yj1iLnNsaWNlKGIuaW5kZXhPZigiPiIpKzEsYi5sYXN0SW5kZXhPZigiPC8iKSk7cmV0dXJuIF8ueShiKX1jcmVhdGVUZXh0Tm9kZShhKXtyZXR1cm4gZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoYSl9fTtfLlVpYT1uZXcgUEVhKEtFYSk7Xy5pamE9bmV3IFBFYShMRWEpO18uaGphPW5ldyBQRWEoTUVhKTt2YXIgU0VhO18uUUVhPWZ1bmN0aW9uKGEpe3ZhciBiPW5ldyBNYXAoYS5rYS5CYSk7Yi5zZXQoInN0eWxlIix7a0w6NH0pO2Eua2E9bmV3IF8uRkVhKGEua2Eud2EsYS5rYS5rYSxhLmthLkFhLGIsYS5rYS5vYSk7cmV0dXJuIGF9O18uUkVhPWZ1bmN0aW9uKGEpe3ZhciBiPW5ldyBTZXQoYS5rYS5BYSk7Yi5hZGQoImNsYXNzIik7YS5rYT1uZXcgXy5GRWEoYS5rYS53YSxhLmthLmthLGIsYS5rYS5CYSxhLmthLm9hKTtyZXR1cm4gYX07U0VhPWNsYXNze2NvbnN0cnVjdG9yKCl7dGhpcy5vYT0hMTt0aGlzLmthPUtFYX19O18uVEVhPWNsYXNzIGV4dGVuZHMgU0Vhe2J1aWxkKCl7aWYodGhpcy5vYSl0aHJvdyBFcnJvcigiVyIpO3RoaXMub2E9ITA7cmV0dXJuIG5ldyBQRWEodGhpcy5rYSx2b2lkIDAsdm9pZCAwLHRoaXMuQWEsdGhpcy53YSl9fTt2YXIgWWlhPS9bXiNdKi87dmFyIGNqYT17MDoxLDE6MX0sZGphPXswOi4xLDE6LjF9LGpqYTsoMCxfLmxjKWBtaWNhLWA7ZmMoImxXVEp3ZCIsImx3S2F1ZCIpO3ZhciBsamE9bmV3IFNldDtfLlVFYT1fLmtjKCJsV1RKd2QiLFtdKTtfLk9jKF8uVUVhKTt2YXIgdmphPSJjb25zdHJ1Y3RvciBoYXNPd25Qcm9wZXJ0eSBpc1Byb3RvdHlwZU9mIHByb3BlcnR5SXNFbnVtZXJhYmxlIHRvTG9jYWxlU3RyaW5nIHRvU3RyaW5nIHZhbHVlT2YiLnNwbGl0KCIgIik7Xy5WRWE9e1o1YzowLEQzYzoxLEUzYzoyLDA6IkZPUk1BVFRFRF9IVE1MX0NPTlRFTlQiLDE6IkVNQkVEREVEX0lOVEVSTkFMX0NPTlRFTlQiLDI6IkVNQkVEREVEX1RSVVNURURfRVhURVJOQUxfQ09OVEVOVCJ9O18uQ2phPWNsYXNzIGV4dGVuZHMgRXJyb3J7Y29uc3RydWN0b3IoYSxiKXtzdXBlcihgJHthfSBjYW5ub3QgYmUgdXNlZCB3aXRoIGludGVudCAke18uVkVhW2JdfWApO3RoaXMudHlwZT1hO3RoaXMuaW50ZW50PWI7dGhpcy5uYW1lPSJUeXBlQ2Fubm90QmVVc2VkV2l0aElmcmFtZUludGVudEVycm9yIn19O3ZhciBOamE9ImFsdGVybmF0ZSBhdXRob3IgYm9va21hcmsgY2Fub25pY2FsIGNpdGUgaGVscCBpY29uIGxpY2Vuc2UgbW9kdWxlcHJlbG9hZCBuZXh0IHByZWZldGNoIGRucy1wcmVmZXRjaCBwcmVyZW5kZXIgcHJlY29ubmVjdCBwcmVsb2FkIHByZXYgc2VhcmNoIHN1YnJlc291cmNlIi5zcGxpdCgiICIpO18uV0VhPWZ1bmN0aW9uKGEpe3JldHVybiBhIGluc3RhbmNlb2YgRnVuY3Rpb24/YS5kaXNwbGF5TmFtZXx8YS5uYW1lfHwidW5rbm93biB0eXBlIG5hbWUiOmEgaW5zdGFuY2VvZiBPYmplY3Q/YS5jb25zdHJ1Y3Rvci5kaXNwbGF5TmFtZXx8YS5jb25zdHJ1Y3Rvci5uYW1lfHxPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoYSk6YT09PW51bGw/Im51bGwiOnR5cGVvZiBhfTt2YXIgWkVhLCRFYTtfLlhFYT1mdW5jdGlvbihhKXtyZXR1cm4hL1teMC05XS8udGVzdChhKX07Xy5wZD1mdW5jdGlvbihhKXtyZXR1cm4gZW5jb2RlVVJJQ29tcG9uZW50KFN0cmluZyhhKSl9O18uZ2thPWZ1bmN0aW9uKGEpe3JldHVybiBkZWNvZGVVUklDb21wb25lbnQoYS5yZXBsYWNlKC9cKy9nLCIgIikpfTtfLmJtPWZ1bmN0aW9uKGEpe3BCYS50ZXN0KGEpJiYoYS5pbmRleE9mKCImIikhPS0xJiYoYT1hLnJlcGxhY2UoakJhLCImYW1wOyIpKSxhLmluZGV4T2YoIjwiKSE9LTEmJihhPWEucmVwbGFjZShrQmEsIiZsdDsiKSksYS5pbmRleE9mKCI+IikhPS0xJiYoYT1hLnJlcGxhY2UobEJhLCImZ3Q7IikpLGEuaW5kZXhPZignIicpIT0tMSYmKGE9YS5yZXBsYWNlKG1CYSwiJnF1b3Q7IikpLGEuaW5kZXhPZigiJyIpIT0tMSYmKGE9YS5yZXBsYWNlKG5CYSwiJiMzOTsiKSksYS5pbmRleE9mKCJceDAwIikhPS0xJiYoYT1hLnJlcGxhY2Uob0JhLCImIzA7IikpKTtyZXR1cm4gYX07Cl8uY209ZnVuY3Rpb24oYSl7cmV0dXJuIF8ubGEoYSwiJiIpPyJkb2N1bWVudCJpbiBfLmVhP18uWUVhKGEpOlpFYShhKTphfTtfLllFYT1mdW5jdGlvbihhLGIpe3ZhciBjPXsiJmFtcDsiOiImIiwiJmx0OyI6IjwiLCImZ3Q7IjoiPiIsIiZxdW90OyI6JyInfTt2YXIgZD1iP2IuY3JlYXRlRWxlbWVudCgiZGl2Iik6Xy5lYS5kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTtyZXR1cm4gYS5yZXBsYWNlKCRFYSxmdW5jdGlvbihlLGYpe3ZhciBnPWNbZV07aWYoZylyZXR1cm4gZztmLmNoYXJBdCgwKT09IiMiJiYoZj1OdW1iZXIoIjAiK2Yuc2xpY2UoMSkpLGlzTmFOKGYpfHwoZz1TdHJpbmcuZnJvbUNoYXJDb2RlKGYpKSk7Z3x8KF8uZWQoZCxfLnkoZSsiICIpKSxnPWQuZmlyc3RDaGlsZC5ub2RlVmFsdWUuc2xpY2UoMCwtMSkpO3JldHVybiBjW2VdPWd9KX07ClpFYT1mdW5jdGlvbihhKXtyZXR1cm4gYS5yZXBsYWNlKC8mKFteO10rKTsvZyxmdW5jdGlvbihiLGMpe3N3aXRjaChjKXtjYXNlICJhbXAiOnJldHVybiImIjtjYXNlICJsdCI6cmV0dXJuIjwiO2Nhc2UgImd0IjpyZXR1cm4iPiI7Y2FzZSAicXVvdCI6cmV0dXJuJyInO2RlZmF1bHQ6cmV0dXJuIGMuY2hhckF0KDApIT0iIyJ8fChjPU51bWJlcigiMCIrYy5zbGljZSgxKSksaXNOYU4oYykpP2I6U3RyaW5nLmZyb21DaGFyQ29kZShjKX19KX07JEVhPS8mKFteO1xzPCZdKyk7Py9nO18uYUZhPWZ1bmN0aW9uKGEsYil7dmFyIGM9Yi5sZW5ndGg7Zm9yKGxldCBkPTA7ZDxjO2QrKyl7bGV0IGU9Yz09MT9iOmIuY2hhckF0KGQpO2lmKGEuY2hhckF0KDApPT1lJiZhLmNoYXJBdChhLmxlbmd0aC0xKT09ZSlyZXR1cm4gYS5zdWJzdHJpbmcoMSxhLmxlbmd0aC0xKX1yZXR1cm4gYX07Cl8uYkZhPWZ1bmN0aW9uKGEpe3JldHVybiBTdHJpbmcoYSkucmVwbGFjZSgvKFstKClcW1xde30rPyouJFxefCw6IzwhXFxdKS9nLCJcXCQxIikucmVwbGFjZSgvXHgwOC9nLCJcXHgwOCIpfTtfLmRtPWZ1bmN0aW9uKGEpe3JldHVybiBhPT1udWxsPyIiOlN0cmluZyhhKX07Xy5jRmE9ZnVuY3Rpb24oKXtyZXR1cm4gTWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpKjIxNDc0ODM2NDgpLnRvU3RyaW5nKDM2KStNYXRoLmFicyhNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkqMjE0NzQ4MzY0OCleXy5rZSgpKS50b1N0cmluZygzNil9O18uZW09ZnVuY3Rpb24oYSl7dmFyIGI9MDtmb3IobGV0IGM9MDtjPGEubGVuZ3RoOysrYyliPTMxKmIrYS5jaGFyQ29kZUF0KGMpPj4+MDtyZXR1cm4gYn07Xy5mbT1mdW5jdGlvbihhKXt2YXIgYj1OdW1iZXIoYSk7cmV0dXJuIGI9PTAmJl8uamEoYSk/TmFOOmJ9OwpfLkpwYT1mdW5jdGlvbihhKXtyZXR1cm4gU3RyaW5nKGEpLnJlcGxhY2UoL1wtKFthLXpdKS9nLGZ1bmN0aW9uKGIsYyl7cmV0dXJuIGMudG9VcHBlckNhc2UoKX0pfTtfLklwYT1mdW5jdGlvbihhKXtyZXR1cm4gU3RyaW5nKGEpLnJlcGxhY2UoLyhbQS1aXSkvZywiLSQxIikudG9Mb3dlckNhc2UoKX07Xy5ibGE9ZnVuY3Rpb24oYSl7cmV0dXJuIGEucmVwbGFjZShSZWdFeHAoIihefFtcXHNdKykoW2Etel0pIiwiZyIpLGZ1bmN0aW9uKGIsYyxkKXtyZXR1cm4gYytkLnRvVXBwZXJDYXNlKCl9KX07Xy5kRmE9ZnVuY3Rpb24oYSl7aXNGaW5pdGUoYSkmJihhPVN0cmluZyhhKSk7cmV0dXJuIHR5cGVvZiBhPT09InN0cmluZyI/L15ccyotPzB4L2kudGVzdChhKT9wYXJzZUludChhLDE2KTpwYXJzZUludChhLDEwKTpOYU59OwpfLmRzYT1mdW5jdGlvbihhLGIsYyl7YT1hLnNwbGl0KGIpO2Zvcih2YXIgZD1bXTtjPjAmJmEubGVuZ3RoOylkLnB1c2goYS5zaGlmdCgpKSxjLS07YS5sZW5ndGgmJmQucHVzaChhLmpvaW4oYikpO3JldHVybiBkfTt2YXIgWmphLHRrYTtaamE9UmVnRXhwKCJeKD86KFteOi8/Iy5dKyk6KT8oPzovLyg/OihbXlxcXFwvPyNdKilAKT8oW15cXFxcLz8jXSo/KSg/OjooWzAtOV0rKSk/KD89W1xcXFwvPyNdfCQpKT8oW14/I10rKT8oPzpcXD8oW14jXSopKT8oPzojKFtcXHNcXFNdKikpPyQiKTtfLnNrYT0vI3wkLzt0a2E9L1s/Jl0oJHwjKS87dmFyIGVGYSx3a2EsaEZhLGtGYSxpRmEsakZhLFF0YSxuRmEsb0ZhLHJGYSxnRmEsdUZhLGxGYTtfLlNlPWZ1bmN0aW9uKGEpe3ZhciBiPWVGYShhKSxjPW5ldyBfLmZGYSxkPV8uamQoYilbNV07Xy5QYyhnRmEsZnVuY3Rpb24oZil7dmFyIGc9ZC5tYXRjaCgiLyIrZisiPShbXi9dKykiKTtnJiZfLmdtKGMsZixnWzFdKX0pO3ZhciBlPSIiO2U9YS5pbmRleE9mKCJfL3NzLyIpIT0tMT8iXy9zcy8iOiJfL2pzLyI7aEZhKGMsYS5zdWJzdHIoMCxhLmluZGV4T2YoZSkrZS5sZW5ndGgpKTsoYT1fLmtkKDYsYikpJiZfLmhrYShhLChmLGcpPT57Yy5vYVtmXT1nfSk7cmV0dXJuIGN9O2VGYT1mdW5jdGlvbihhKXtyZXR1cm4gYS5zdGFydHNXaXRoKCJodHRwczovL3ViZXJwcm94eS1wZW4tcmVkaXJlY3QuY29ycC5nb29nbGUuY29tL3ViZXJwcm94eS9wZW4/dXJsPSIpP2Euc3Vic3RyKDY1KTphfTsKd2thPWZ1bmN0aW9uKGEpe2E9Xy5ja2EoZUZhKGEpKTtyZXR1cm4gYT09PW51bGw/ITE6UmVnRXhwKCIoL18vanMvKXwoL18vc3MvKSIsImciKS50ZXN0KGEpPy9cL2s9Ly50ZXN0KGEpOiExfTtfLmdtPWZ1bmN0aW9uKGEsYixjKXtjP2Eua2FbYl09YzpkZWxldGUgYS5rYVtiXX07aEZhPWZ1bmN0aW9uKGEsYil7YS53YT1ifTsKa0ZhPWZ1bmN0aW9uKGEpe3ZhciBiPVtdLGM9ZD0+e2Eua2FbZF0hPT12b2lkIDAmJmIucHVzaChkKyI9IithLmthW2RdKX07aUZhKGEpPyhjKCJtZCIpLGMoImsiKSxjKCJjayIpLGMoImFtIiksYygicnMiKSxjKCJnc3Ntb2R1bGVzZXRwcm90byIpLGMoInNsayIpLGMoImR0aSIpLGMoImRid2giKSk6KGMoInNkY2giKSxjKCJrIiksYygiY2siKSxjKCJhbSIpLGMoImFtYyIpLGMoInJ0IiksImQiaW4gYS5rYXx8Xy5nbShhLCJkIiwiMCIpLGMoImQiKSxjKCJleG0iKSxjKCJleGNtIiksKGEua2EuZXhjbXx8YS5rYS5leG0pJiZiLnB1c2goImVkPTEiKSxjKCJpbSIpLGMoImRnIiksYygic20iKSxfLlRlKGEsImJyIikhPSIxIiYmXy5UZShhLCJiciIpIT0iMCJ8fGMoImJyIiksYygiYnItZCIpLF8uVGUoYSwicmIiKT09IjEiJiZjKCJyYiIpLF8uVGUoYSwienMiKSE9PSIwIiYmYygienMiKSxqRmEoYSkhPT0iIiYmYygid3QiKSxjKCJnc3Ntb2R1bGVzZXRwcm90byIpLGMoInVqZyIpLApjKCJzcCIpLGMoImljaGMiKSxjKCJycyIpLGMoImNiIiksYygiY2NiIiksYygiZWUiKSxjKCJzbGsiKSxjKCJkdGkiKSxjKCJkYndoIiksYygiaWMiKSxjKCJtIikpO3JldHVybiBiLmpvaW4oIi8iKX07Xy5UZT1mdW5jdGlvbihhLGIpe3JldHVybiBhLmthW2JdP2Eua2FbYl06bnVsbH07aUZhPWZ1bmN0aW9uKGEpe2E9Xy5UZShhLCJtZCIpO3JldHVybiEhYSYmYSE9PSIwIn07akZhPWZ1bmN0aW9uKGEpe3N3aXRjaChfLlRlKGEsInd0Iikpe2Nhc2UgIjAiOnJldHVybiIwIjtjYXNlICIxIjpyZXR1cm4iMSI7Y2FzZSAiMiI6cmV0dXJuIjIiO2RlZmF1bHQ6cmV0dXJuIiJ9fTtfLkxtYT1mdW5jdGlvbihhKXtyZXR1cm4gXy5UZShhLCJrIil9O1F0YT1mdW5jdGlvbihhKXsoYT1fLkxtYShhKSk/KGE9YS5zcGxpdCgiLiIpLGE9MTxhLmxlbmd0aD9hWzFdOm51bGwpOmE9bnVsbDtyZXR1cm4gYX07Cl8ubUZhPWZ1bmN0aW9uKGEsYil7aWYoYilmb3IobGV0IGMgb2YgYilpZighbEZhLnRlc3QoYykpdGhyb3cgRXJyb3IoImFhYCIrYyk7Xy5nbShhLCJtIixiLmpvaW4oIiwiKSl9O25GYT1mdW5jdGlvbihhLGIpe2ImJmIubGVuZ3RoPjA/KGIuc29ydCgpLF8uZ20oYSwiZXhtIixiLmpvaW4oIiwiKSkpOl8uZ20oYSwiZXhtIixudWxsKX07b0ZhPWZ1bmN0aW9uKGEpe3JldHVybihhPV8uVGUoYSwiZXhtIikpP2Euc3BsaXQoIiwiKTpbXX07Xy5wRmE9ZnVuY3Rpb24oYSxiKXtiJiZiLmxlbmd0aD4wPyhiLnNvcnQoKSxfLmdtKGEsImV4Y20iLGIuam9pbigiLCIpKSk6Xy5nbShhLCJleGNtIixudWxsKX07Xy5rc2E9ZnVuY3Rpb24oYSl7cmV0dXJuKGE9Xy5UZShhLCJleGNtIikpP2Euc3BsaXQoIiwiKTpbXX07Xy5xRmE9ZnVuY3Rpb24oYSl7cmV0dXJuKGE9Xy5UZShhLCJtIikpP2Euc3BsaXQoIiwiKTpbXX07CnJGYT1mdW5jdGlvbihhKXtzd2l0Y2goXy5UZShhLCJkZyIpKXtjYXNlICIwIjpyZXR1cm4iMCI7Y2FzZSAiMiI6cmV0dXJuIjIiO2Nhc2UgIjMiOnJldHVybiIzIjtjYXNlICI0IjpyZXR1cm4iNCI7ZGVmYXVsdDpyZXR1cm4iMSJ9fTtfLnNGYT1mdW5jdGlvbihhLGIpe3ZhciBjPWIgaW5zdGFuY2VvZiBNYXA/QXJyYXkuZnJvbShiLmVudHJpZXMoKSkuZmlsdGVyKChbLGRdKT0+ZCYmZC5zaXplPjApLm1hcCgoW2QsZV0pPT57ZT1BcnJheS5mcm9tKGUpO2UubGVuZ3RoPjEmJmUuc29ydCgpO3JldHVybiBkKyI6IitlLmpvaW4oIiwiKX0pOk9iamVjdC5rZXlzKGIpLmZpbHRlcihkPT4hIU9iamVjdC5rZXlzKGJbZF0pLmxlbmd0aCkubWFwKGQ9Pnt2YXIgZT1PYmplY3Qua2V5cyhiW2RdKTtlLmxlbmd0aD4xJiZlLnNvcnQoKTtyZXR1cm4gZCsiOiIrZS5qb2luKCIsIil9KTtjLnNvcnQoKTtfLmdtKGEsImVlIixjLmpvaW4oIjsiKSl9OwpfLnRGYT1mdW5jdGlvbihhKXthPV8uVGUoYSwiZWUiKTtpZihOQmEpe2lmKCFhKXJldHVybiBuZXcgTWFwO3ZhciBiPW5ldyBNYXAsYz1hLnNwbGl0KCI7Iik7Zm9yKHZhciBkIG9mIGMpe2xldCBbZixnXT1kLnNwbGl0KCI6Iik7Yz1uZXcgU2V0O2Iuc2V0KGYsYyk7Zm9yKHZhciBlIG9mIGcuc3BsaXQoIiwiKSljLmFkZChlKX1yZXR1cm4gYn1pZighYSlyZXR1cm57fTtkPXt9O2U9YS5zcGxpdCgiOyIpO2ZvcihiIG9mIGUpe2xldCBbZixnXT1iLnNwbGl0KCI6Iik7ZFtmXT17fTtmb3IoYyBvZiBnLnNwbGl0KCIsIikpZFtmXVtjXT0hMH1yZXR1cm4gZH07Cl8uZkZhPWNsYXNze2NvbnN0cnVjdG9yKCl7dGhpcy5rYT17fTt0aGlzLndhPSIiO3RoaXMub2E9e319dG9TdHJpbmcoKXt2YXIgYT10aGlzLndhK2tGYSh0aGlzKSxiPV8ubmthKHRoaXMub2EpLGM9IiI7YiE9IiImJihjPSI/IitiKTtyZXR1cm4gYStjfXNldENhbGxiYWNrKGEpe2lmKGEhPW51bGwmJiF1RmEudGVzdChhKSl0aHJvdyBFcnJvcigiYmFgIithKTtfLmdtKHRoaXMsImNiIixhKX1jbG9uZSgpe3ZhciBhPW5ldyBfLmZGYTthLmthPU9iamVjdC5hc3NpZ24oe30sdGhpcy5rYSk7YS53YT10aGlzLndhO2Eub2E9T2JqZWN0LmFzc2lnbih7fSx0aGlzLm9hKTtyZXR1cm4gYX19OwpnRmE9e3hrZDoiayIsbzFjOiJjayIsZmVkOiJtIixSNGM6ImV4bSIsUDRjOiJleGNtIixlVmM6ImFtIixaVmM6ImFtYyIsY2RkOiJtbSIsVWpkOiJydCIsQjljOiJkIixRNGM6ImVkIixKcGQ6InN2IixhMmM6ImRlb2IiLGdZYzoiY2IiLE5aYzoiY2NiIixoWWM6ImNiaSIsUW9kOiJycyIsem1kOiJzZGNoIixLOWM6ImltIixiMmM6ImRnIixsNGM6ImJyIixrNGM6ImJyLWQiLHQ0YzoicmIiLEt3ZDoienMiLG53ZDoid3QiLFg0YzoiZWUiLElwZDoic20iLE1FVEFEQVRBOiJtZCIsWTdjOiJnc3Ntb2R1bGVzZXRwcm90byIsb3RkOiJ1amciLG50ZDoic3AiLEE5YzoiaWNoYyIsTm9kOiJzbGsiLEwyYzoiZHRpIixLMmM6ImRid2giLG4kYzoiaWMifTt1RmE9UmVnRXhwKCJeKGdhcGlcXC4pP2xvYWRlZChfZ3xfaCk/KF9bMC05YS16XSspKyQiKTtsRmE9UmVnRXhwKCJeW2EtekEtWjAtOS1fKl0rJCIpO3ZhciB2RmE9ITEsd0ZhPSExO3ZhciBBa2E9IWZ1bmN0aW9uKCl7aWYodkZhKXJldHVybiB3RmE7dkZhPSEwO3RyeXt2YXIgYT14a2EoKX1jYXRjaChjKXtyZXR1cm4hMX12YXIgYj1fLnRGYShfLlNlKGEpKTtpZihiIGluc3RhbmNlb2YgTWFwKXtpZihiLnNpemU9PT0wKXJldHVybiExO1ZoYShjPT57Zm9yKGxldCBbZCxlXW9mIGIuZW50cmllcygpKXtsZXQgZj1kLGc9ZTtmb3IobGV0IGggb2YgZyljLkVPYShmLGgpfX0pfWVsc2V7bGV0IGM9T2JqZWN0LmtleXMoYik7aWYoYy5sZW5ndGg9PT0wKXJldHVybiExO1ZoYShkPT57Zm9yKGxldCBlIG9mIGMpe2xldCBmPWJbZV07Zm9yKGxldCBnIG9mIE9iamVjdC5rZXlzKGYpKWQuRU9hKGUsZyl9fSl9cmV0dXJuIHdGYT0hMH0oKTt2YXIgeWthPVN5bWJvbCgiZmEiKTtfLk5oPWE9Pnt2YXIgYj0iV29hIjtpZihhLldvYSYmYS5oYXNPd25Qcm9wZXJ0eShiKSlyZXR1cm4gYS5Xb2E7Yj1uZXcgYTtyZXR1cm4gYS5Xb2E9Yn07dmFyIGNwYSx3ZDtjcGE9ZnVuY3Rpb24oYSxiKXt2YXIgYztpZigoYT1hLmthW2IudG9TdHJpbmcoKV0pPT1udWxsKXZhciBkPXZvaWQgMDtlbHNle2xldCBlO2Q9KGU9YS5rYSkhPW51bGw/ZTphLm9hfXJldHVybihjPWQpIT1udWxsP2M6Yn07Xy5uZj1mdW5jdGlvbihhKXt2YXIgYj13ZC5nZXRJbnN0YW5jZSgpLmthW2EudG9TdHJpbmcoKV07aWYoIWIpdGhyb3cgRXJyb3IoImdhYCIrYSk7cmV0dXJuIGJ9O3dkPWNsYXNze2NvbnN0cnVjdG9yKCl7dGhpcy5rYT17fX1yZWdpc3RlcihhLGIpe3RoaXMua2FbYS50b1N0cmluZygpXT1ifWhyYSgpe3RoaXMua2E9e319c3RhdGljIGdldEluc3RhbmNlKCl7cmV0dXJuIF8uTmgod2QpfX07dmFyIHhGYSxxdWEsQ2thO3hGYT1bXTtxdWE9ZnVuY3Rpb24oYSxiKXtpZigobmV3IFNldChbLi4uYS53YSwuLi5hLkFhXSkpLmhhcyhiLnRvU3RyaW5nKCkpKXJldHVybiEwO2E9bmV3IFNldChbLi4uYS5CYSwuLi5hLkVhXSk7Zm9yKGxldCBjIG9mIGEpaWYocXVhKF8ubmYoYyksYikpcmV0dXJuITA7cmV0dXJuITF9O18uaG09ZnVuY3Rpb24oYSxiKXthLmthIT09YiYmKGxqYS5oYXMoYS5qbi50b1N0cmluZygpKSYmbGphLmhhcyhiLnRvU3RyaW5nKCkpLHF1YShhLGIpLGEub2EmJnZFYShhLmpuLFthLm9hXSxBa2EpLHVFYShhLmpuLFtiXSxBa2EpLGEua2E9Yil9O0NrYT1jbGFzc3tjb25zdHJ1Y3RvcihhLGIsYyxkLGUsZj1udWxsKXt0aGlzLmpuPWE7dGhpcy53YT1iO3RoaXMuQWE9Yzt0aGlzLkJhPWQ7dGhpcy5FYT1lO3RoaXMub2E9Zjt0aGlzLnhjPXRoaXMua2E9bnVsbDt4RmEucHVzaCh0aGlzKX19O18ueUZhPXhkKCJsd0thdWQiLCJUSVVWUWQiLHZvaWQgMCxfLlVFYSk7Xy5PYyhfLnlGYSk7Xy5pbT1jbGFzcyBleHRlbmRzIF8ubHtjb25zdHJ1Y3RvcihhKXtzdXBlcihhKX1nZXRTZWNvbmRzKCl7cmV0dXJuIF8uRGUodGhpcywxKX1zZXRTZWNvbmRzKGEpe3JldHVybiBfLkFiKHRoaXMsMSxfLmpiKGEpLCIwIil9fTtfLmptPVswLF8ubGwsXy52bF07Xy5HeGE9ZnVuY3Rpb24oYSxiLGMpe3ZhciBkPWIuY29uc3RydWN0b3I7Yi5STWM9dm9pZCAwO18uRmhhKGEsYywidHlwZS5nb29nbGVhcGlzLmNvbSIpO18uU2IoYSxkLDIsYix2b2lkIDApO3JldHVybiBhfTsKXy5waT1jbGFzcyBleHRlbmRzIF8ubHtjb25zdHJ1Y3RvcihhKXtzdXBlcihhKX1nZXRUeXBlTmFtZSgpe3JldHVybiBfLnQodGhpcywxKS5zcGxpdCgiLyIpLnBvcCgpfWdldFZhbHVlKCl7dmFyIGE9Xy5paih0aGlzLDIpO2lmKEFycmF5LmlzQXJyYXkoYSl8fGEgaW5zdGFuY2VvZiBfLmwpdGhyb3cgRXJyb3IoIlIiKTtyZXR1cm4gXy52aih0aGlzLDIpfXNldFZhbHVlKGEpe2lmKGE9PW51bGwpYT10aGlzO2Vsc2UgaWYoQXJyYXkuaXNBcnJheShhKSlhPWpqKHRoaXMsMixfLmxlYShhLDAsXy5tZWEpKTtlbHNlIGlmKHR5cGVvZiBhPT09InN0cmluZyJ8fGEgaW5zdGFuY2VvZiBfLlNhfHx0YmEoYSkpYT1fLlBEYSh0aGlzLDIsYSk7ZWxzZSB0aHJvdyBFcnJvcigiUGAiK2EpO3JldHVybiBhfX07Xy5tbT1bMCxfLkZsLFlEYV07Xy56RmE9Y2xhc3MgZXh0ZW5kcyBfLmx7Y29uc3RydWN0b3IoYSl7c3VwZXIoYSl9fTtfLkl4YT1mdW5jdGlvbihhLGIpe3JldHVybiBfLm1rKGEsMSxiKX07Xy5IeGE9ZnVuY3Rpb24oYSxiKXtyZXR1cm4gXy5IaihhLDMsYil9O18uSnhhPWNsYXNzIGV4dGVuZHMgXy5se2NvbnN0cnVjdG9yKGEpe3N1cGVyKGEpfVluKCl7cmV0dXJuIF8ueGUodGhpcywxKX1nZXRNZXNzYWdlKCl7cmV0dXJuIF8udCh0aGlzLDIpfX07Xy5BRmE9WzAsXy52bCxfLkZsLF8uRixfLm1tXTt2YXIgRUZhO18uQkZhPSEhKF8uT2lbMTJdPj4yMiYxKTtfLkNGYT0hIShfLk9pWzEyXT4+MjMmMSk7Xy5ERmE9ISEoXy5PaVsxMl0+PjI0JjEpO0VGYT0hIShfLk9pWzEyXT4+MjYmMSk7Xy5GRmE9ISEoXy5PaVsxMl0+PjI3JjEpO18uR0ZhPSEhKF8uT2lbMTJdPj4yOSYxKTtfLkhGYT0hIShfLk9pWzEzXSYxKTt2YXIgSUZhPSEhKF8uT2lbNjBdPj4xOSYxKSxKRmE9ISEoXy5PaVs2MF0+PjIwJjEpO3ZhciBPRmE7Xy5LRmE9ISEoXy5PaVsxN10mMTAyNCk7Xy5MRmE9ISEoXy5PaVsxN10mMjA0OCk7Xy5NRmE9ISEoXy5PaVsxN10mNDA5Nik7Xy5ORmE9ISEoXy5PaVsxN10mODE5Mik7T0ZhPSEhKF8uT2lbMTddPj4xNCYxKTtfLlBGYT0hIShfLk9pWzE3XT4+MTUmMSk7Xy5RRmE9ISEoXy5PaVsxN10+PjE2JjEpO18uUkZhPSEhKF8uT2lbMTddPj4xNyYxKTtfLlNGYT0hIShfLk9pWzgxXT4+MjImMSk7Xy5URmE9ISEoXy5PaVs5N10mNTEyKTtfLlVGYT0hIShfLk9pWzIyXSY0MDk2KTtfLlZGYT0hIShfLk9pWzg4XT4+MjAmMSk7Xy5XRmE9ISEoXy5PaVs4OF0+PjIzJjEpO18uWEZhPSEhKF8uT2lbODhdPj4yNCYxKTt2YXIgWUZhO1lGYT0hIShfLk9pWzI2XT4+MTcmMSk7Xy5aRmE9ISEoXy5PaVs4Ml0+PjI1JjEpO3ZhciAkRmEsYUdhLGJHYSxjR2EsR3phLEl6YSx0dGEsRXphLGRHYSxlR2EsSHphLGhHYSxqR2Esa0dhLGxHYSxtR2E7JEZhPSEhKF8uT2lbMzFdPj4yMyYxKTthR2E9ISEoXy5PaVszMV0+PjI0JjEpO2JHYT0hIShfLk9pWzMxXT4+MjUmMSk7Y0dhPSEhKF8uT2lbMzFdPj4yNiYxKTtHemE9ISEoXy5PaVszMV0+PjI3JjEpO0l6YT0hIShfLk9pWzMxXT4+MjgmMSk7dHRhPSEhKF8uT2lbMzFdPj4yOSYxKTtFemE9ISEoXy5PaVszMl0mMSk7ZEdhPSEhKF8uT2lbMzJdJjIpO2VHYT0hIShfLk9pWzMyXSY0KTtfLmZHYT0hIShfLk9pWzMyXSY4KTtIemE9ISEoXy5PaVszMl0mMTYpO18uZ0dhPSEhKF8uT2lbMzJdJjMyKTtoR2E9ISEoXy5PaVszMl0mNjQpO18uaUdhPSEhKF8uT2lbMzJdJjEyOCk7akdhPSEhKF8uT2lbMzJdJjI1Nik7a0dhPSEhKF8uT2lbMzJdJjUxMik7bEdhPSEhKF8uT2lbMzJdJjEwMjQpO21HYT0hIShfLk9pWzMyXSYyMDQ4KTt2YXIgbkdhPSEhKF8uT2lbMzJdPj4xNCYxKSxLemE9ISEoXy5PaVszMl0+PjE2JjEpLHh6YT0hIShfLk9pWzMyXT4+MTcmMSk7dmFyIG9HYT1fLk9pWzMyXT4+MTUmMT85MDA3MTk5MjU0NzQwOTkxOjEwO18ucEdhPSEhKF8uT2lbMzJdJjQwOTYpO18ucUdhPSEhKF8uT2lbMzJdJjgxOTIpO3ZhciBzR2EsdEdhLHVHYTtfLnJHYT0hIShfLk9pWzgwXSYzMik7c0dhPSEhKF8uT2lbODBdJjY0KTt0R2E9ISEoXy5PaVs4MF0mMTI4KTt1R2E9ISEoXy5PaVs4MF0mMjU2KTtfLnZHYT0hIShfLk9pWzMyXT4+MjgmMSk7dmFyIHdHYT0hIShfLk9pWzIwXSYyMDQ4KSx4R2E9ISEoXy5PaVsyMF0mODE5Mik7dmFyIHlHYT0hIShfLk9pWzMyXT4+MTgmMSksekdhPSEhKF8uT2lbMzJdPj4xOSYxKSxBR2E9ISEoXy5PaVszMl0+PjIwJjEpLEJHYT0hIShfLk9pWzMyXT4+MjEmMSksQ0dhPSEhKF8uT2lbMzJdPj4yMiYxKSxER2E9ISEoXy5PaVszMl0+PjIzJjEpLEVHYT0hIShfLk9pWzMyXT4+MjQmMSksRkdhPSEhKF8uT2lbMzJdPj4yNiYxKTt2YXIgR0dhPV8uT2lbMzJdPj4yNSYxPzQ1MDpFR2E/NDAwOkRHYT8zNTA6Q0dhPzMwMDpCR2E/MjUwOkFHYT8yMDA6ekdhPzE1MDp5R2E/MTAwOkZHYT81MDowO3ZhciBIR2EsSUdhLEtHYSxMR2EsTUdhLE5HYSxSc2EsT0dhLFBHYSxSR2EsU0dhLFRHYSxVR2E7SEdhPSEhKF8uT2lbNDRdJjUxMik7SUdhPSEhKF8uT2lbNDRdJjEwMjQpO18uSkdhPSEhKF8uT2lbNDRdJjIwNDgpO0tHYT0hIShfLk9pWzQ0XSY0MDk2KTtMR2E9ISEoXy5PaVs0NF0mODE5Mik7TUdhPSEhKF8uT2lbNDRdPj4xNSYxKTtOR2E9ISEoXy5PaVs0NF0+PjE2JjEpO1JzYT0hIShfLk9pWzQ0XT4+MTcmMSk7T0dhPSEhKF8uT2lbNDRdPj4xOCYxKTtQR2E9ISEoXy5PaVs0NF0+PjE5JjEpO18uUUdhPSEhKF8uT2lbNDRdPj4yMCYxKTtSR2E9ISEoXy5PaVs0NF0+PjIxJjEpO1NHYT0hIShfLk9pWzQ0XT4+MjImMSk7VEdhPSEhKF8uT2lbNDRdPj4yMyYxKTtVR2E9ISEoXy5PaVs0NF0+PjI1JjEpO3ZhciBRc2E9Xy5PaVs0NF0+PjI0JjE/ImNlbnRlcl9jb2wiOiIiO3ZhciBvemE9ISEoXy5PaVsxM10mNDA5Nik7dmFyIEVrYTtfLlZHYT0hIShfLk9pWzIyXSY2NCk7Xy5XR2E9ISEoXy5PaVsyMl0mMjU2KTtfLlhHYT0hIShfLk9pWzIyXSY1MTIpO18uWUdhPSEhKF8uT2lbMjJdJjIwNDgpO18uemQ9Xy5YRmE7Xy5Ia2E9Xy5WRmE7Xy5aR2E9ISEoXy5PaVs4OF0+PjIyJjEpO18uR2thPV8uV0ZhO3ZhciBPa2E7dmFyICRHYSxhSGEsZEhhLGNIYTskR2E9ZnVuY3Rpb24oYSl7dGhyb3cgRXJyb3IoImlhYCIrYS5vYSk7fTthSGE9ZnVuY3Rpb24oYSxiKXtyZXR1cm4gbmV3IFR5cGVFcnJvcigiamFgIitiKyJgIithLm9hKyJgIithLmthKyJgIit0eXBlb2YgYS5rYSl9O18ub209ZnVuY3Rpb24oYSl7dmFyIGI9Xy5ubShhKTtiPT09bnVsbCYmJEdhKGEpO3JldHVybiBifTtfLnBtPWZ1bmN0aW9uKGEsYil7dmFyIGM7cmV0dXJuKGM9Xy5ubShhKSkhPW51bGw/YzpifTtfLm5tPWZ1bmN0aW9uKGEpe3ZhciBiPWEua2E7aWYoYj09bnVsbClyZXR1cm4gbnVsbDtpZih0eXBlb2YgYj09PSJzdHJpbmciKXJldHVybiBiO3Rocm93IGFIYShhLCJzdHJpbmciKTt9O18ucm09ZnVuY3Rpb24oYSl7dmFyIGI9Xy5iSGEoYSk7Yj09PW51bGwmJiRHYShhKTtyZXR1cm4gYn07Xy5uaT1mdW5jdGlvbihhLGIpe3ZhciBjO3JldHVybihjPV8uYkhhKGEpKSE9bnVsbD9jOmJ9OwpfLmJIYT1mdW5jdGlvbihhKXt2YXIgYj1hLmthO2lmKGI9PW51bGwpcmV0dXJuIG51bGw7aWYodHlwZW9mIGI9PT0iYm9vbGVhbiIpcmV0dXJuIGI7aWYodHlwZW9mIGI9PT0ic3RyaW5nIil7Yj1iLnRvTG93ZXJDYXNlKCk7aWYoYj09PSJ0cnVlInx8Yj09PSIxIilyZXR1cm4hMDtpZihiPT09ImZhbHNlInx8Yj09PSIwIilyZXR1cm4hMX10aHJvdyBhSGEoYSwiYm9vbGVhbiIpO307Xy50bT1mdW5jdGlvbihhKXt2YXIgYj1fLnNtKGEpO2I9PT1udWxsJiYkR2EoYSk7cmV0dXJuIGJ9O18uQ2Q9ZnVuY3Rpb24oYSxiKXt2YXIgYztyZXR1cm4oYz1fLnNtKGEpKSE9bnVsbD9jOmJ9OwpfLnNtPWZ1bmN0aW9uKGEpe3ZhciBiPWEua2E7aWYoYj09bnVsbClyZXR1cm4gbnVsbDtpZih0eXBlb2YgYj09PSJudW1iZXIiKXJldHVybiBiO2lmKHR5cGVvZiBiPT09InN0cmluZyIpe2xldCBjPU51bWJlcihiKTtpZighaXNOYU4oYykmJihjIT09MHx8Yi50cmltKCkubGVuZ3RoIT09MCkpcmV0dXJuIGN9dGhyb3cgYUhhKGEsIm51bWJlciIpO307Xy51bT1mdW5jdGlvbihhLGIpe3JldHVybiBfLlNrYShfLm9tKGEpLGIpfTtfLnh3YT1mdW5jdGlvbihhLGIsYyl7YT1fLm5tKGEpO3JldHVybiBhPT09bnVsbD9jOl8uU2thKGEsYil9O2RIYT1mdW5jdGlvbihhKXt2YXIgYj1hLmthO2lmKGI9PW51bGwpcmV0dXJuIG51bGw7QXJyYXkuaXNBcnJheShiKXx8KHR5cGVvZiBiIT09InN0cmluZyI/Yj1bYl06KGI9Yi50cmltKCksYj1iPT0iIj9bXTpiLnNwbGl0KCIsIikubWFwKGM9PmMudHJpbSgpKSkpO3JldHVybiBjSGEoYSxiKX07CmNIYT1mdW5jdGlvbihhLGIpe3ZhciBjPWEub2ErIlsiO3JldHVybiBBcnJheS5mcm9tKGIsKGQsZSk9Pm5ldyBfLlZrYShjK2UrIl0iLGQpKX07Xy5lSGE9ZnVuY3Rpb24oYSl7dmFyIGI9W10sYz1kSGEoYSk7cmV0dXJuIGM9PT1udWxsP2NIYShhLGIpOmN9OwpfLlZrYT1jbGFzc3tjb25zdHJ1Y3RvcihhLGIpe3RoaXMub2E9YTt0aGlzLmthPWJ9c3RyaW5nKGEpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPT0wP18ub20odGhpcyk6Xy5wbSh0aGlzLGEpfWJvb2woYSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg9PTA/Xy5ybSh0aGlzKTpfLm5pKHRoaXMsYSl9bnVtYmVyKGEpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPT0wP18udG0odGhpcyk6Xy5DZCh0aGlzLGEpfUxiKCl7cmV0dXJuIHRoaXMua2EhPW51bGx9dG9TdHJpbmcoKXtyZXR1cm4gXy5vbSh0aGlzKX1UZyhhLGIpe3ZhciBjPSEwLGQ9dm9pZCAwO2ZvcihsZXQgZSBpbiBhKXtsZXQgZj1hW2VdO2MmJihjPSExLGQ9dHlwZW9mIGY9PT0ibnVtYmVyIj9fLkNkKHRoaXMsYik6Xy5wbSh0aGlzLGIpKTtpZihmPT1kKXJldHVybiBkfUpTT04uc3RyaW5naWZ5KGEpO3JldHVybiBkfWFycmF5KGEpe2lmKGFyZ3VtZW50cy5sZW5ndGg9PTApe3ZhciBiPWRIYSh0aGlzKTtiPT09bnVsbCYmJEdhKHRoaXMpOwpyZXR1cm4gYn1iPWRIYSh0aGlzKTtyZXR1cm4gYj09bnVsbD9hOmJ9b2JqZWN0KGEpe3ZhciBiPXRoaXMua2E7aWYoYj09bnVsbClyZXR1cm4gYT09PXZvaWQgMCYmJEdhKHRoaXMpLGE7aWYodHlwZW9mIGI9PT0ib2JqZWN0IiYmYi5jb25zdHJ1Y3Rvcj09PU9iamVjdCl7YT17fTtsZXQgYz10aGlzLm9hKyIuIjtmb3IobGV0IGQgaW4gYilhW2RdPW5ldyBfLlZrYShjK2QsYltkXSk7cmV0dXJuIGF9dGhyb3cgYUhhKHRoaXMsIm9iamVjdCIpO319O18udm09e2l4OmZ1bmN0aW9uKCl7aWYod2luZG93Lmdvb2dsZSYmd2luZG93Lmdvb2dsZS5rRUkpcmV0dXJuIHdpbmRvdy5nb29nbGUua0VJO3ZhciBhPV8uQmQoInVTMDJrZSIpO3JldHVybiBhLkxiKCk/YS5zdHJpbmcoIiIpOiIifX07Xy5FZC5wcm90b3R5cGUub0U9ITE7Xy5FZC5wcm90b3R5cGUuaXNEaXNwb3NlZD1mdW5jdGlvbigpe3JldHVybiB0aGlzLm9FfTtfLkVkLnByb3RvdHlwZS5kaXNwb3NlPWZ1bmN0aW9uKCl7dGhpcy5vRXx8KHRoaXMub0U9ITAsdGhpcy5xYygpKX07Xy5FZC5wcm90b3R5cGVbU3ltYm9sLmRpc3Bvc2VdPWZ1bmN0aW9uKCl7dGhpcy5kaXNwb3NlKCl9O18uRGk9ZnVuY3Rpb24oYSxiKXthLmFkZE9uRGlzcG9zZUNhbGxiYWNrKF8uVGkoXy5EZCxiKSl9O18uRWQucHJvdG90eXBlLmFkZE9uRGlzcG9zZUNhbGxiYWNrPWZ1bmN0aW9uKGEsYil7dGhpcy5vRT9iIT09dm9pZCAwP2EuY2FsbChiKTphKCk6KHRoaXMuU3l8fCh0aGlzLlN5PVtdKSxiJiYoYT1hLmJpbmQoYikpLHRoaXMuU3kucHVzaChhKSl9O18uRWQucHJvdG90eXBlLnFjPWZ1bmN0aW9uKCl7aWYodGhpcy5TeSlmb3IoO3RoaXMuU3kubGVuZ3RoOyl0aGlzLlN5LnNoaWZ0KCkoKX07Cl8uZkhhPWZ1bmN0aW9uKGEpe3JldHVybiBhJiZ0eXBlb2YgYS5pc0Rpc3Bvc2VkPT0iZnVuY3Rpb24iP2EuaXNEaXNwb3NlZCgpOiExfTt2YXIgZ0hhO2dIYT1mdW5jdGlvbihhKXtyZXR1cm4gdHlwZW9mIGEuY2xhc3NOYW1lPT0ic3RyaW5nIj9hLmNsYXNzTmFtZTphLmdldEF0dHJpYnV0ZSYmYS5nZXRBdHRyaWJ1dGUoImNsYXNzIil8fCIifTtfLmhIYT1mdW5jdGlvbihhKXtyZXR1cm4gYS5jbGFzc0xpc3Q/YS5jbGFzc0xpc3Q6Z0hhKGEpLm1hdGNoKC9cUysvZyl8fFtdfTtfLndtPWZ1bmN0aW9uKGEsYil7dHlwZW9mIGEuY2xhc3NOYW1lPT0ic3RyaW5nIj9hLmNsYXNzTmFtZT1iOmEuc2V0QXR0cmlidXRlJiZhLnNldEF0dHJpYnV0ZSgiY2xhc3MiLGIpfTtfLnhtPWZ1bmN0aW9uKGEsYil7cmV0dXJuIGEuY2xhc3NMaXN0P2EuY2xhc3NMaXN0LmNvbnRhaW5zKGIpOl8uQWEoXy5oSGEoYSksYil9O18ueW09ZnVuY3Rpb24oYSxiKXtpZihhLmNsYXNzTGlzdClhLmNsYXNzTGlzdC5hZGQoYik7ZWxzZSBpZighXy54bShhLGIpKXtsZXQgYz1nSGEoYSk7Xy53bShhLGMrKGMubGVuZ3RoPjA/IiAiK2I6YikpfX07Cl8uem09ZnVuY3Rpb24oYSxiKXtpZihhLmNsYXNzTGlzdClBcnJheS5wcm90b3R5cGUuZm9yRWFjaC5jYWxsKGIsZnVuY3Rpb24oZCl7Xy55bShhLGQpfSk7ZWxzZXt2YXIgYz17fTtBcnJheS5wcm90b3R5cGUuZm9yRWFjaC5jYWxsKF8uaEhhKGEpLGZ1bmN0aW9uKGQpe2NbZF09ITB9KTtBcnJheS5wcm90b3R5cGUuZm9yRWFjaC5jYWxsKGIsZnVuY3Rpb24oZCl7Y1tkXT0hMH0pO2I9IiI7Zm9yKGxldCBkIGluIGMpYis9Yi5sZW5ndGg+MD8iICIrZDpkO18ud20oYSxiKX19O18uQW09ZnVuY3Rpb24oYSxiKXthLmNsYXNzTGlzdD9hLmNsYXNzTGlzdC5yZW1vdmUoYik6Xy54bShhLGIpJiZfLndtKGEsQXJyYXkucHJvdG90eXBlLmZpbHRlci5jYWxsKF8uaEhhKGEpLGZ1bmN0aW9uKGMpe3JldHVybiBjIT1ifSkuam9pbigiICIpKX07Cl8uQm09ZnVuY3Rpb24oYSxiKXthLmNsYXNzTGlzdD9BcnJheS5wcm90b3R5cGUuZm9yRWFjaC5jYWxsKGIsZnVuY3Rpb24oYyl7Xy5BbShhLGMpfSk6Xy53bShhLEFycmF5LnByb3RvdHlwZS5maWx0ZXIuY2FsbChfLmhIYShhKSxmdW5jdGlvbihjKXtyZXR1cm4hXy5BYShiLGMpfSkuam9pbigiICIpKX07Xy5DbT1mdW5jdGlvbihhLGIsYyl7Yz9fLnltKGEsYik6Xy5BbShhLGIpfTtfLkRtPWZ1bmN0aW9uKGEsYixjKXtfLnhtKGEsYikmJihfLkFtKGEsYiksXy55bShhLGMpKX07Xy5pSGE9ZnVuY3Rpb24oYSxiKXt2YXIgYz0hXy54bShhLGIpO18uQ20oYSxiLGMpO3JldHVybiBjfTtfLkVtPWZ1bmN0aW9uKGEsYixjKXtfLkFtKGEsYik7Xy55bShhLGMpfTtfLmpIYT0oYSxiKT0+Xy5wZyhhKSYmXy5wZyhhKSYmXy5wZyhhKSYmYS5ub2RlVHlwZT09PTEmJighYS5uYW1lc3BhY2VVUkl8fGEubmFtZXNwYWNlVVJJPT09Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwiKSYmYS50YWdOYW1lLnRvVXBwZXJDYXNlKCk9PT1iLnRvU3RyaW5nKCk7Xy5LZC5wcm90b3R5cGUuY2xvbmU9ZnVuY3Rpb24oKXtyZXR1cm4gbmV3IF8uS2QodGhpcy54LHRoaXMueSl9O18uS2QucHJvdG90eXBlLmVxdWFscz1mdW5jdGlvbihhKXtyZXR1cm4gYSBpbnN0YW5jZW9mIF8uS2QmJl8ua0hhKHRoaXMsYSl9O18ua0hhPWZ1bmN0aW9uKGEsYil7cmV0dXJuIGE9PWI/ITA6YSYmYj9hLng9PWIueCYmYS55PT1iLnk6ITF9O18ubEhhPWZ1bmN0aW9uKGEsYil7dmFyIGM9YS54LWIueDthPWEueS1iLnk7cmV0dXJuIE1hdGguc3FydChjKmMrYSphKX07Xy5tSGE9ZnVuY3Rpb24oYSxiKXtyZXR1cm4gbmV3IF8uS2QoYS54LWIueCxhLnktYi55KX07Xy5hYT1fLktkLnByb3RvdHlwZTtfLmFhLmNlaWw9ZnVuY3Rpb24oKXt0aGlzLng9TWF0aC5jZWlsKHRoaXMueCk7dGhpcy55PU1hdGguY2VpbCh0aGlzLnkpO3JldHVybiB0aGlzfTsKXy5hYS5mbG9vcj1mdW5jdGlvbigpe3RoaXMueD1NYXRoLmZsb29yKHRoaXMueCk7dGhpcy55PU1hdGguZmxvb3IodGhpcy55KTtyZXR1cm4gdGhpc307Xy5hYS5yb3VuZD1mdW5jdGlvbigpe3RoaXMueD1NYXRoLnJvdW5kKHRoaXMueCk7dGhpcy55PU1hdGgucm91bmQodGhpcy55KTtyZXR1cm4gdGhpc307Xy5hYS50cmFuc2xhdGU9ZnVuY3Rpb24oYSxiKXthIGluc3RhbmNlb2YgXy5LZD8odGhpcy54Kz1hLngsdGhpcy55Kz1hLnkpOih0aGlzLngrPU51bWJlcihhKSx0eXBlb2YgYj09PSJudW1iZXIiJiYodGhpcy55Kz1iKSk7cmV0dXJuIHRoaXN9O18uYWEuc2NhbGU9ZnVuY3Rpb24oYSxiKXt0aGlzLngqPWE7dGhpcy55Kj10eXBlb2YgYj09PSJudW1iZXIiP2I6YTtyZXR1cm4gdGhpc307Xy5uSGE9ZnVuY3Rpb24oYSxiKXtyZXR1cm4gYT09Yj8hMDphJiZiP2Eud2lkdGg9PWIud2lkdGgmJmEuaGVpZ2h0PT1iLmhlaWdodDohMX07Xy5hYT1fLkxkLnByb3RvdHlwZTtfLmFhLmNsb25lPWZ1bmN0aW9uKCl7cmV0dXJuIG5ldyBfLkxkKHRoaXMud2lkdGgsdGhpcy5oZWlnaHQpfTtfLmFhLmFyZWE9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy53aWR0aCp0aGlzLmhlaWdodH07Xy5hYS5hc3BlY3RSYXRpbz1mdW5jdGlvbigpe3JldHVybiB0aGlzLndpZHRoL3RoaXMuaGVpZ2h0fTtfLmFhLmlzRW1wdHk9ZnVuY3Rpb24oKXtyZXR1cm4hdGhpcy5hcmVhKCl9O18uYWEuY2VpbD1mdW5jdGlvbigpe3RoaXMud2lkdGg9TWF0aC5jZWlsKHRoaXMud2lkdGgpO3RoaXMuaGVpZ2h0PU1hdGguY2VpbCh0aGlzLmhlaWdodCk7cmV0dXJuIHRoaXN9OwpfLmFhLmZsb29yPWZ1bmN0aW9uKCl7dGhpcy53aWR0aD1NYXRoLmZsb29yKHRoaXMud2lkdGgpO3RoaXMuaGVpZ2h0PU1hdGguZmxvb3IodGhpcy5oZWlnaHQpO3JldHVybiB0aGlzfTtfLmFhLnJvdW5kPWZ1bmN0aW9uKCl7dGhpcy53aWR0aD1NYXRoLnJvdW5kKHRoaXMud2lkdGgpO3RoaXMuaGVpZ2h0PU1hdGgucm91bmQodGhpcy5oZWlnaHQpO3JldHVybiB0aGlzfTtfLmFhLnNjYWxlPWZ1bmN0aW9uKGEsYil7dGhpcy53aWR0aCo9YTt0aGlzLmhlaWdodCo9dHlwZW9mIGI9PT0ibnVtYmVyIj9iOmE7cmV0dXJuIHRoaXN9O18ub0hhPWZ1bmN0aW9uKGEsYil7Yj1hLmFzcGVjdFJhdGlvKCk+Yi5hc3BlY3RSYXRpbygpP2Iud2lkdGgvYS53aWR0aDpiLmhlaWdodC9hLmhlaWdodDtyZXR1cm4gYS5zY2FsZShiKX07dmFyIHFIYSx1SGEseEhhLHlIYSxBSGEsRkhhLElIYSxISGEsTkhhLE9IYSxQSGEsU0hhO18ub2U9ZnVuY3Rpb24oYSl7cmV0dXJuIGE/bmV3IF8ucEhhKF8uV2QoYSkpOmZCYXx8KGZCYT1uZXcgXy5wSGEpfTtfLkZtPWZ1bmN0aW9uKGEpe3JldHVybiBxSGEoZG9jdW1lbnQsYSl9O18uckhhPWZ1bmN0aW9uKGEpe3JldHVybihhPV8uRm0oYSkpP2E6bnVsbH07cUhhPWZ1bmN0aW9uKGEsYil7cmV0dXJuIHR5cGVvZiBiPT09InN0cmluZyI/YS5nZXRFbGVtZW50QnlJZChiKTpifTtfLkptPWZ1bmN0aW9uKGEpe3JldHVybiBxSGEoZG9jdW1lbnQsYSl9O18uS209ZnVuY3Rpb24oYSxiKXtyZXR1cm4oYnx8ZG9jdW1lbnQpLmdldEVsZW1lbnRzQnlUYWdOYW1lKFN0cmluZyhhKSl9O18uTW09ZnVuY3Rpb24oYSxiLGMpe3JldHVybiBfLnNIYShkb2N1bWVudCxhLGIsYyl9O18uTm09ZnVuY3Rpb24oYSxiKXtyZXR1cm4oYnx8ZG9jdW1lbnQpLnF1ZXJ5U2VsZWN0b3JBbGwoIi4iK2EpfTsKXy5PbT1mdW5jdGlvbihhLGIpe3ZhciBjPWJ8fGRvY3VtZW50LGQ9bnVsbDtjLmdldEVsZW1lbnRzQnlDbGFzc05hbWU/ZD1jLmdldEVsZW1lbnRzQnlDbGFzc05hbWUoYSlbMF06ZD1fLnRIYSgiKiIsYSxiKTtyZXR1cm4gZHx8bnVsbH07Xy5zSGE9ZnVuY3Rpb24oYSxiLGMsZCl7YT1kfHxhO3JldHVybihiPWImJmIhPSIqIj9TdHJpbmcoYikudG9VcHBlckNhc2UoKToiIil8fGM/YS5xdWVyeVNlbGVjdG9yQWxsKGIrKGM/Ii4iK2M6IiIpKTphLmdldEVsZW1lbnRzQnlUYWdOYW1lKCIqIil9O18udEhhPWZ1bmN0aW9uKGEsYixjKXt2YXIgZD1kb2N1bWVudCxlPWN8fGQsZj1hJiZhIT0iKiI/U3RyaW5nKGEpLnRvVXBwZXJDYXNlKCk6IiI7cmV0dXJuIGZ8fGI/ZS5xdWVyeVNlbGVjdG9yKGYrKGI/Ii4iK2I6IiIpKTpfLnNIYShkLGEsYixjKVswXXx8bnVsbH07Cl8udkhhPWZ1bmN0aW9uKGEsYil7Xy5QYyhiLGZ1bmN0aW9uKGMsZCl7ZD09InN0eWxlIj9hLnN0eWxlLmNzc1RleHQ9YzpkPT0iY2xhc3MiP2EuY2xhc3NOYW1lPWM6ZD09ImZvciI/YS5odG1sRm9yPWM6dUhhLmhhc093blByb3BlcnR5KGQpP2Euc2V0QXR0cmlidXRlKHVIYVtkXSxjKTpfLmlhKGQsImFyaWEtIil8fF8uaWEoZCwiZGF0YS0iKT9hLnNldEF0dHJpYnV0ZShkLGMpOmFbZF09Y30pfTt1SGE9e2NlbGxwYWRkaW5nOiJjZWxsUGFkZGluZyIsY2VsbHNwYWNpbmc6ImNlbGxTcGFjaW5nIixjb2xzcGFuOiJjb2xTcGFuIixmcmFtZWJvcmRlcjoiZnJhbWVCb3JkZXIiLGhlaWdodDoiaGVpZ2h0IixtYXhsZW5ndGg6Im1heExlbmd0aCIsbm9uY2U6Im5vbmNlIixyb2xlOiJyb2xlIixyb3dzcGFuOiJyb3dTcGFuIix0eXBlOiJ0eXBlIix1c2VtYXA6InVzZU1hcCIsdmFsaWduOiJ2QWxpZ24iLHdpZHRoOiJ3aWR0aCJ9OwpfLmdpPWZ1bmN0aW9uKGEpe3JldHVybiBfLndIYShhfHx3aW5kb3cpfTtfLndIYT1mdW5jdGlvbihhKXthPWEuZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50O3JldHVybiBuZXcgXy5MZChhLmNsaWVudFdpZHRoLGEuY2xpZW50SGVpZ2h0KX07Xy5QbT1mdW5jdGlvbigpe3JldHVybiB4SGEoZG9jdW1lbnQpfTt4SGE9ZnVuY3Rpb24oYSl7dmFyIGI9Xy5RbShhKTthPWEuZGVmYXVsdFZpZXc7cmV0dXJuIG5ldyBfLktkKChhPT1udWxsP3ZvaWQgMDphLnBhZ2VYT2Zmc2V0KXx8Yi5zY3JvbGxMZWZ0LChhPT1udWxsP3ZvaWQgMDphLnBhZ2VZT2Zmc2V0KXx8Yi5zY3JvbGxUb3ApfTtfLlFtPWZ1bmN0aW9uKGEpe3JldHVybiBhLnNjcm9sbGluZ0VsZW1lbnQ/YS5zY3JvbGxpbmdFbGVtZW50Ol8uTmQ/YS5ib2R5fHxhLmRvY3VtZW50RWxlbWVudDphLmRvY3VtZW50RWxlbWVudH07Xy5oaT1mdW5jdGlvbihhKXtyZXR1cm4gYT9hLmRlZmF1bHRWaWV3OndpbmRvd307Cl8uUm09ZnVuY3Rpb24oYSxiLGMpe3JldHVybiB5SGEoZG9jdW1lbnQsYXJndW1lbnRzKX07eUhhPWZ1bmN0aW9uKGEsYil7dmFyIGM9YlsxXSxkPV8uekhhKGEsU3RyaW5nKGJbMF0pKTtjJiYodHlwZW9mIGM9PT0ic3RyaW5nIj9kLmNsYXNzTmFtZT1jOkFycmF5LmlzQXJyYXkoYyk/ZC5jbGFzc05hbWU9Yy5qb2luKCIgIik6Xy52SGEoZCxjKSk7Yi5sZW5ndGg+MiYmQUhhKGEsZCxiLDIpO3JldHVybiBkfTtBSGE9ZnVuY3Rpb24oYSxiLGMsZCl7ZnVuY3Rpb24gZShmKXtmJiZiLmFwcGVuZENoaWxkKHR5cGVvZiBmPT09InN0cmluZyI/YS5jcmVhdGVUZXh0Tm9kZShmKTpmKX1mb3IoO2Q8Yy5sZW5ndGg7ZCsrKXtsZXQgZj1jW2RdOyFfLkhhKGYpfHxfLnBnKGYpJiZmLm5vZGVUeXBlPjA/ZShmKTpfLkxhKGYmJnR5cGVvZiBmLmxlbmd0aD09Im51bWJlciImJnR5cGVvZiBmLml0ZW09PSJmdW5jdGlvbiI/Xy5HYShmKTpmLGUpfX07Cl8uU209ZnVuY3Rpb24oYSl7cmV0dXJuIF8uekhhKGRvY3VtZW50LGEpfTtfLnpIYT1mdW5jdGlvbihhLGIpe2I9U3RyaW5nKGIpO2EuY29udGVudFR5cGU9PT0iYXBwbGljYXRpb24veGh0bWwreG1sIiYmKGI9Yi50b0xvd2VyQ2FzZSgpKTtyZXR1cm4gYS5jcmVhdGVFbGVtZW50KGIpfTtfLkJIYT1mdW5jdGlvbihhLGIpe3ZhciBjPV8uekhhKGEsIkRJViIpO18uZWQoYyxiKTtpZihjLmNoaWxkTm9kZXMubGVuZ3RoPT0xKWM9Yy5yZW1vdmVDaGlsZChjLmZpcnN0Q2hpbGQpO2Vsc2V7Zm9yKGE9YS5jcmVhdGVEb2N1bWVudEZyYWdtZW50KCk7Yy5maXJzdENoaWxkOylhLmFwcGVuZENoaWxkKGMuZmlyc3RDaGlsZCk7Yz1hfXJldHVybiBjfTtfLkNIYT1mdW5jdGlvbihhLGIpe2EuYXBwZW5kQ2hpbGQoYil9O18uVG09ZnVuY3Rpb24oYSxiKXtBSGEoXy5XZChhKSxhLGFyZ3VtZW50cywxKX07Xy5VbT1mdW5jdGlvbihhKXtmb3IodmFyIGI7Yj1hLmZpcnN0Q2hpbGQ7KWEucmVtb3ZlQ2hpbGQoYil9OwpfLlZtPWZ1bmN0aW9uKGEsYil7Yi5wYXJlbnROb2RlJiZiLnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKGEsYil9O18uV209ZnVuY3Rpb24oYSxiKXtiLnBhcmVudE5vZGUmJmIucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUoYSxiLm5leHRTaWJsaW5nKX07Xy5YbT1mdW5jdGlvbihhLGIsYyl7YS5pbnNlcnRCZWZvcmUoYixhLmNoaWxkTm9kZXNbY118fG51bGwpfTtfLlltPWZ1bmN0aW9uKGEpe3JldHVybiBhJiZhLnBhcmVudE5vZGU/YS5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKGEpOm51bGx9O18uREhhPWZ1bmN0aW9uKGEsYil7dmFyIGM9Yi5wYXJlbnROb2RlO2MmJmMucmVwbGFjZUNoaWxkKGEsYil9O18uWm09ZnVuY3Rpb24oYSl7cmV0dXJuIGEuZmlyc3RFbGVtZW50Q2hpbGQhPT12b2lkIDA/YS5maXJzdEVsZW1lbnRDaGlsZDpfLkVIYShhLmZpcnN0Q2hpbGQsITApfTtGSGE9ZnVuY3Rpb24oYSl7cmV0dXJuIGEubmV4dEVsZW1lbnRTaWJsaW5nfTsKXy5HSGE9ZnVuY3Rpb24oYSl7cmV0dXJuIGEucHJldmlvdXNFbGVtZW50U2libGluZyE9PXZvaWQgMD9hLnByZXZpb3VzRWxlbWVudFNpYmxpbmc6Xy5FSGEoYS5wcmV2aW91c1NpYmxpbmcsITEpfTtfLkVIYT1mdW5jdGlvbihhLGIpe2Zvcig7YSYmYS5ub2RlVHlwZSE9MTspYT1iP2EubmV4dFNpYmxpbmc6YS5wcmV2aW91c1NpYmxpbmc7cmV0dXJuIGF9O18uUmc9ZnVuY3Rpb24oYSl7cmV0dXJuIF8ucGcoYSkmJmEubm9kZVR5cGU9PTF9O18uTGc9ZnVuY3Rpb24oYSl7cmV0dXJuIGEucGFyZW50RWxlbWVudHx8bnVsbH07Xy4kZz1mdW5jdGlvbihhLGIpe3JldHVybiBhJiZiP2E9PWJ8fGEuY29udGFpbnMoYik6ITF9OwpfLkpIYT1mdW5jdGlvbihhLGIpe2lmKGE9PWIpcmV0dXJuIDA7aWYoYS5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbilyZXR1cm4gYS5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbihiKSYyPzE6LTE7aWYoInNvdXJjZUluZGV4ImluIGF8fGEucGFyZW50Tm9kZSYmInNvdXJjZUluZGV4ImluIGEucGFyZW50Tm9kZSl7dmFyIGM9YS5ub2RlVHlwZT09MSxkPWIubm9kZVR5cGU9PTE7aWYoYyYmZClyZXR1cm4gYS5zb3VyY2VJbmRleC1iLnNvdXJjZUluZGV4O2xldCBlPWEucGFyZW50Tm9kZSxmPWIucGFyZW50Tm9kZTtyZXR1cm4gZT09Zj9ISGEoYSxiKTohYyYmXy4kZyhlLGIpPy0xKklIYShhLGIpOiFkJiZfLiRnKGYsYSk/SUhhKGIsYSk6KGM/YS5zb3VyY2VJbmRleDplLnNvdXJjZUluZGV4KS0oZD9iLnNvdXJjZUluZGV4OmYuc291cmNlSW5kZXgpfWQ9Xy5XZChhKTtjPWQuY3JlYXRlUmFuZ2UoKTtjLnNlbGVjdE5vZGUoYSk7Yy5jb2xsYXBzZSghMCk7YT1kLmNyZWF0ZVJhbmdlKCk7YS5zZWxlY3ROb2RlKGIpOwphLmNvbGxhcHNlKCEwKTtyZXR1cm4gYy5jb21wYXJlQm91bmRhcnlQb2ludHMoXy5lYS5SYW5nZS5TVEFSVF9UT19FTkQsYSl9O0lIYT1mdW5jdGlvbihhLGIpe3ZhciBjPWEucGFyZW50Tm9kZTtpZihjPT1iKXJldHVybi0xO2Zvcig7Yi5wYXJlbnROb2RlIT1jOyliPWIucGFyZW50Tm9kZTtyZXR1cm4gSEhhKGIsYSl9O0hIYT1mdW5jdGlvbihhLGIpe2Zvcig7Yj1iLnByZXZpb3VzU2libGluZzspaWYoYj09YSlyZXR1cm4tMTtyZXR1cm4gMX07Xy5ydWE9ZnVuY3Rpb24oYSl7cmV0dXJuKGEub3duZXJEb2N1bWVudC5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbihhKSYxNik9PTE2fTtfLldkPWZ1bmN0aW9uKGEpe3JldHVybiBhLm5vZGVUeXBlPT05P2E6YS5vd25lckRvY3VtZW50fHxhLmRvY3VtZW50fTsKXy4kbT1mdW5jdGlvbihhLGIpe2lmKCJ0ZXh0Q29udGVudCJpbiBhKWEudGV4dENvbnRlbnQ9YjtlbHNlIGlmKGEubm9kZVR5cGU9PTMpYS5kYXRhPVN0cmluZyhiKTtlbHNlIGlmKGEuZmlyc3RDaGlsZCYmYS5maXJzdENoaWxkLm5vZGVUeXBlPT0zKXtmb3IoO2EubGFzdENoaWxkIT1hLmZpcnN0Q2hpbGQ7KWEucmVtb3ZlQ2hpbGQoYS5sYXN0Q2hpbGQpO2EuZmlyc3RDaGlsZC5kYXRhPVN0cmluZyhiKX1lbHNlIF8uVW0oYSksYS5hcHBlbmRDaGlsZChfLldkKGEpLmNyZWF0ZVRleHROb2RlKFN0cmluZyhiKSkpfTtfLktIYT1mdW5jdGlvbihhLGIsYyxkKXtpZihhIT1udWxsKWZvcihhPWEuZmlyc3RDaGlsZDthOyl7aWYoYihhKSYmKGMucHVzaChhKSxkKXx8Xy5LSGEoYSxiLGMsZCkpcmV0dXJuITA7YT1hLm5leHRTaWJsaW5nfXJldHVybiExfTsKXy5NSGE9ZnVuY3Rpb24oYSxiKXtmb3IoYT1fLkxIYShhKTthLmxlbmd0aD4wOyl7dmFyIGM9YS5wb3AoKTtpZihiKGMpKXJldHVybiBjO2ZvcihjPWMubGFzdEVsZW1lbnRDaGlsZDtjO2M9Yy5wcmV2aW91c0VsZW1lbnRTaWJsaW5nKWEucHVzaChjKX1yZXR1cm4gbnVsbH07Xy5MSGE9ZnVuY3Rpb24oYSl7aWYoYS5ub2RlVHlwZT09OSlyZXR1cm5bYS5kb2N1bWVudEVsZW1lbnRdO3ZhciBiPVtdO2ZvcihhPWEubGFzdEVsZW1lbnRDaGlsZDthO2E9YS5wcmV2aW91c0VsZW1lbnRTaWJsaW5nKWIucHVzaChhKTtyZXR1cm4gYn07TkhhPXtTQ1JJUFQ6MSxTVFlMRToxLEhFQUQ6MSxJRlJBTUU6MSxPQkpFQ1Q6MX07T0hhPXtJTUc6IiAiLEJSOiJcbiJ9O18uUUhhPWZ1bmN0aW9uKGEpe3JldHVybiBhLmhhc0F0dHJpYnV0ZSgidGFiaW5kZXgiKSYmUEhhKGEpfTtfLmFuPWZ1bmN0aW9uKGEsYil7Yj9hLnRhYkluZGV4PTA6KGEudGFiSW5kZXg9LTEsYS5yZW1vdmVBdHRyaWJ1dGUoInRhYkluZGV4IikpfTsKXy5ibj1mdW5jdGlvbihhKXtyZXR1cm4gYS50YWdOYW1lPT0iQSImJmEuaGFzQXR0cmlidXRlKCJocmVmIil8fGEudGFnTmFtZT09IklOUFVUInx8YS50YWdOYW1lPT0iVEVYVEFSRUEifHxhLnRhZ05hbWU9PSJTRUxFQ1QifHxhLnRhZ05hbWU9PSJCVVRUT04iPyFhLmRpc2FibGVkJiYoIWEuaGFzQXR0cmlidXRlKCJ0YWJpbmRleCIpfHxQSGEoYSkpOl8uUUhhKGEpfTtQSGE9ZnVuY3Rpb24oYSl7YT1hLnRhYkluZGV4O3JldHVybiB0eXBlb2YgYT09PSJudW1iZXIiJiZhPj0wJiZhPDMyNzY4fTtfLmRuPWZ1bmN0aW9uKGEpe3ZhciBiPVtdO18uUkhhKGEsYiwhMCk7YT1iLmpvaW4oIiIpO2E9YS5yZXBsYWNlKC8gXHhBRCAvZywiICIpLnJlcGxhY2UoL1x4QUQvZywiIik7YT1hLnJlcGxhY2UoL1x1MjAwQi9nLCIiKTthPWEucmVwbGFjZSgvICsvZywiICIpO2EhPSIgIiYmKGE9YS5yZXBsYWNlKC9eXHMqLywiIikpO3JldHVybiBhfTsKXy5SSGE9ZnVuY3Rpb24oYSxiLGMpe2lmKCEoYS5ub2RlTmFtZSBpbiBOSGEpKWlmKGEubm9kZVR5cGU9PTMpYz9iLnB1c2goU3RyaW5nKGEubm9kZVZhbHVlKS5yZXBsYWNlKC8oXHJcbnxccnxcbikvZywiIikpOmIucHVzaChhLm5vZGVWYWx1ZSk7ZWxzZSBpZihhLm5vZGVOYW1lIGluIE9IYSliLnB1c2goT0hhW2Eubm9kZU5hbWVdKTtlbHNlIGZvcihhPWEuZmlyc3RDaGlsZDthOylfLlJIYShhLGIsYyksYT1hLm5leHRTaWJsaW5nfTtfLmVuPWZ1bmN0aW9uKGEsYixjLGQpe2lmKCFiJiYhYylyZXR1cm4gbnVsbDt2YXIgZT1iP1N0cmluZyhiKS50b1VwcGVyQ2FzZSgpOm51bGw7cmV0dXJuIF8uTWcoYSxmdW5jdGlvbihmKXtyZXR1cm4oIWV8fGYubm9kZU5hbWU9PWUpJiYoIWN8fHR5cGVvZiBmLmNsYXNzTmFtZT09PSJzdHJpbmciJiZfLkFhKGYuY2xhc3NOYW1lLnNwbGl0KC9ccysvKSxjKSl9LCEwLGQpfTsKXy5mbj1mdW5jdGlvbihhLGIsYyl7cmV0dXJuIF8uZW4oYSxudWxsLGIsYyl9O18uTWc9ZnVuY3Rpb24oYSxiLGMsZCl7YSYmIWMmJihhPWEucGFyZW50Tm9kZSk7Zm9yKGM9MDthJiYoZD09bnVsbHx8Yzw9ZCk7KXtpZihiKGEpKXJldHVybiBhO2E9YS5wYXJlbnROb2RlO2MrK31yZXR1cm4gbnVsbH07Xy5nbj1mdW5jdGlvbihhKXt0cnl7bGV0IGI9YSYmYS5hY3RpdmVFbGVtZW50O3JldHVybiBiJiZiLm5vZGVOYW1lP2I6bnVsbH1jYXRjaChiKXtyZXR1cm4gbnVsbH19O18uVEhhPWZ1bmN0aW9uKCl7dmFyIGE9Xy5oaSgpO3JldHVybiBhLmRldmljZVBpeGVsUmF0aW8hPT12b2lkIDA/YS5kZXZpY2VQaXhlbFJhdGlvOmEubWF0Y2hNZWRpYT9TSGEoMyl8fFNIYSgyKXx8U0hhKDEuNSl8fFNIYSgxKXx8Ljc1OjF9OwpTSGE9ZnVuY3Rpb24oYSl7cmV0dXJuIF8uaGkoKS5tYXRjaE1lZGlhKCIobWluLXJlc29sdXRpb246ICIrYSsiZHBweCksKG1pbi0tbW96LWRldmljZS1waXhlbC1yYXRpbzogIithKyIpLChtaW4tcmVzb2x1dGlvbjogIithKjk2KyJkcGkpIikubWF0Y2hlcz9hOjB9O18ucEhhPWZ1bmN0aW9uKGEpe3RoaXMua2E9YXx8Xy5lYS5kb2N1bWVudHx8ZG9jdW1lbnR9O18uYWE9Xy5wSGEucHJvdG90eXBlO18uYWEub2g9Xy5vZTtfLmFhLmdldERvY3VtZW50PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMua2F9O18uYWEuSmE9ZnVuY3Rpb24oYSl7cmV0dXJuIHFIYSh0aGlzLmthLGEpfTtfLmFhLk9VYz1fLnBIYS5wcm90b3R5cGUuSmE7Xy5hYS5nZXRFbGVtZW50c0J5VGFnTmFtZT1mdW5jdGlvbihhLGIpe3JldHVybihifHx0aGlzLmthKS5nZXRFbGVtZW50c0J5VGFnTmFtZShTdHJpbmcoYSkpfTtfLmFhLnNldFByb3BlcnRpZXM9Xy52SGE7Cl8uYWEuWmw9ZnVuY3Rpb24oYSxiLGMpe3JldHVybiB5SGEodGhpcy5rYSxhcmd1bWVudHMpfTtfLmFhLmNyZWF0ZUVsZW1lbnQ9ZnVuY3Rpb24oYSl7cmV0dXJuIF8uekhhKHRoaXMua2EsYSl9O18uYWEuY3JlYXRlVGV4dE5vZGU9ZnVuY3Rpb24oYSl7cmV0dXJuIHRoaXMua2EuY3JlYXRlVGV4dE5vZGUoU3RyaW5nKGEpKX07Xy5hYS5nZXRXaW5kb3c9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5rYS5kZWZhdWx0Vmlld307Xy5VSGE9ZnVuY3Rpb24oYSl7cmV0dXJuIHhIYShhLmthKX07Xy5hYT1fLnBIYS5wcm90b3R5cGU7Xy5hYS5hcHBlbmRDaGlsZD1fLkNIYTtfLmFhLmFwcGVuZD1fLlRtO18uYWEuY2FuSGF2ZUNoaWxkcmVuPWZ1bmN0aW9uKGEpe2lmKGEubm9kZVR5cGUhPTEpcmV0dXJuITE7c3dpdGNoKGEudGFnTmFtZSl7Y2FzZSAiQVBQTEVUIjpjYXNlICJBUkVBIjpjYXNlICJCQVNFIjpjYXNlICJCUiI6Y2FzZSAiQ09MIjpjYXNlICJDT01NQU5EIjpjYXNlICJFTUJFRCI6Y2FzZSAiRlJBTUUiOmNhc2UgIkhSIjpjYXNlICJJTUciOmNhc2UgIklOUFVUIjpjYXNlICJJRlJBTUUiOmNhc2UgIklTSU5ERVgiOmNhc2UgIktFWUdFTiI6Y2FzZSAiTElOSyI6Y2FzZSAiTk9GUkFNRVMiOmNhc2UgIk5PU0NSSVBUIjpjYXNlICJNRVRBIjpjYXNlICJPQkpFQ1QiOmNhc2UgIlBBUkFNIjpjYXNlICJTQ1JJUFQiOmNhc2UgIlNPVVJDRSI6Y2FzZSAiU1RZTEUiOmNhc2UgIlRSQUNLIjpjYXNlICJXQlIiOnJldHVybiExfXJldHVybiEwfTsKXy5hYS5GSWI9Xy5VbTtfLmFhLmxYYj1fLlZtO18uYWEucmVtb3ZlTm9kZT1fLlltO18uYWEuZ2V0Q2hpbGRyZW49ZnVuY3Rpb24oYSl7cmV0dXJuIGEuY2hpbGRyZW59O18uYWEuSFRiPV8uWm07Xy5hYS5EOWE9Xy5SZztfLmFhLmNvbnRhaW5zPV8uJGc7Xy5hYS5BaT1fLldkO18uYWE9Xy5QZC5wcm90b3R5cGU7Xy5hYS5nZXRXaWR0aD1mdW5jdGlvbigpe3JldHVybiB0aGlzLnJpZ2h0LXRoaXMubGVmdH07Xy5hYS5nZXRIZWlnaHQ9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5ib3R0b20tdGhpcy50b3B9O18uYWEuY2xvbmU9ZnVuY3Rpb24oKXtyZXR1cm4gbmV3IF8uUGQodGhpcy50b3AsdGhpcy5yaWdodCx0aGlzLmJvdHRvbSx0aGlzLmxlZnQpfTtfLmFhLmNvbnRhaW5zPWZ1bmN0aW9uKGEpe3JldHVybiB0aGlzJiZhP2EgaW5zdGFuY2VvZiBfLlBkP2EubGVmdD49dGhpcy5sZWZ0JiZhLnJpZ2h0PD10aGlzLnJpZ2h0JiZhLnRvcD49dGhpcy50b3AmJmEuYm90dG9tPD10aGlzLmJvdHRvbTphLng+PXRoaXMubGVmdCYmYS54PD10aGlzLnJpZ2h0JiZhLnk+PXRoaXMudG9wJiZhLnk8PXRoaXMuYm90dG9tOiExfTsKXy5hYS5leHBhbmQ9ZnVuY3Rpb24oYSxiLGMsZCl7Xy5wZyhhKT8odGhpcy50b3AtPWEudG9wLHRoaXMucmlnaHQrPWEucmlnaHQsdGhpcy5ib3R0b20rPWEuYm90dG9tLHRoaXMubGVmdC09YS5sZWZ0KToodGhpcy50b3AtPWEsdGhpcy5yaWdodCs9TnVtYmVyKGIpLHRoaXMuYm90dG9tKz1OdW1iZXIoYyksdGhpcy5sZWZ0LT1OdW1iZXIoZCkpO3JldHVybiB0aGlzfTtfLmFhLmNlaWw9ZnVuY3Rpb24oKXt0aGlzLnRvcD1NYXRoLmNlaWwodGhpcy50b3ApO3RoaXMucmlnaHQ9TWF0aC5jZWlsKHRoaXMucmlnaHQpO3RoaXMuYm90dG9tPU1hdGguY2VpbCh0aGlzLmJvdHRvbSk7dGhpcy5sZWZ0PU1hdGguY2VpbCh0aGlzLmxlZnQpO3JldHVybiB0aGlzfTsKXy5hYS5mbG9vcj1mdW5jdGlvbigpe3RoaXMudG9wPU1hdGguZmxvb3IodGhpcy50b3ApO3RoaXMucmlnaHQ9TWF0aC5mbG9vcih0aGlzLnJpZ2h0KTt0aGlzLmJvdHRvbT1NYXRoLmZsb29yKHRoaXMuYm90dG9tKTt0aGlzLmxlZnQ9TWF0aC5mbG9vcih0aGlzLmxlZnQpO3JldHVybiB0aGlzfTtfLmFhLnJvdW5kPWZ1bmN0aW9uKCl7dGhpcy50b3A9TWF0aC5yb3VuZCh0aGlzLnRvcCk7dGhpcy5yaWdodD1NYXRoLnJvdW5kKHRoaXMucmlnaHQpO3RoaXMuYm90dG9tPU1hdGgucm91bmQodGhpcy5ib3R0b20pO3RoaXMubGVmdD1NYXRoLnJvdW5kKHRoaXMubGVmdCk7cmV0dXJuIHRoaXN9OwpfLmFhLnRyYW5zbGF0ZT1mdW5jdGlvbihhLGIpe2EgaW5zdGFuY2VvZiBfLktkPyh0aGlzLmxlZnQrPWEueCx0aGlzLnJpZ2h0Kz1hLngsdGhpcy50b3ArPWEueSx0aGlzLmJvdHRvbSs9YS55KToodGhpcy5sZWZ0Kz1hLHRoaXMucmlnaHQrPWEsdHlwZW9mIGI9PT0ibnVtYmVyIiYmKHRoaXMudG9wKz1iLHRoaXMuYm90dG9tKz1iKSk7cmV0dXJuIHRoaXN9O18uYWEuc2NhbGU9ZnVuY3Rpb24oYSxiKXtiPXR5cGVvZiBiPT09Im51bWJlciI/YjphO3RoaXMubGVmdCo9YTt0aGlzLnJpZ2h0Kj1hO3RoaXMudG9wKj1iO3RoaXMuYm90dG9tKj1iO3JldHVybiB0aGlzfTtfLlJkLnByb3RvdHlwZS5jbG9uZT1mdW5jdGlvbigpe3JldHVybiBuZXcgXy5SZCh0aGlzLmxlZnQsdGhpcy50b3AsdGhpcy53aWR0aCx0aGlzLmhlaWdodCl9O18uVkhhPWZ1bmN0aW9uKGEpe3JldHVybiBuZXcgXy5QZChhLnRvcCxhLmxlZnQrYS53aWR0aCxhLnRvcCthLmhlaWdodCxhLmxlZnQpfTtfLldIYT1mdW5jdGlvbihhKXtyZXR1cm4gbmV3IF8uUmQoYS5sZWZ0LGEudG9wLGEucmlnaHQtYS5sZWZ0LGEuYm90dG9tLWEudG9wKX07Xy5YSGE9ZnVuY3Rpb24oYSxiKXtyZXR1cm4gYT09Yj8hMDphJiZiP2EubGVmdD09Yi5sZWZ0JiZhLndpZHRoPT1iLndpZHRoJiZhLnRvcD09Yi50b3AmJmEuaGVpZ2h0PT1iLmhlaWdodDohMX07Cl8uUmQucHJvdG90eXBlLmludGVyc2VjdGlvbj1mdW5jdGlvbihhKXt2YXIgYj1NYXRoLm1heCh0aGlzLmxlZnQsYS5sZWZ0KSxjPU1hdGgubWluKHRoaXMubGVmdCt0aGlzLndpZHRoLGEubGVmdCthLndpZHRoKTtpZihiPD1jKXtsZXQgZD1NYXRoLm1heCh0aGlzLnRvcCxhLnRvcCk7YT1NYXRoLm1pbih0aGlzLnRvcCt0aGlzLmhlaWdodCxhLnRvcCthLmhlaWdodCk7aWYoZDw9YSlyZXR1cm4gdGhpcy5sZWZ0PWIsdGhpcy50b3A9ZCx0aGlzLndpZHRoPWMtYix0aGlzLmhlaWdodD1hLWQsITB9cmV0dXJuITF9O18uWUhhPWZ1bmN0aW9uKGEsYil7dmFyIGM9TWF0aC5tYXgoYS5sZWZ0LGIubGVmdCksZD1NYXRoLm1pbihhLmxlZnQrYS53aWR0aCxiLmxlZnQrYi53aWR0aCk7aWYoYzw9ZCl7bGV0IGU9TWF0aC5tYXgoYS50b3AsYi50b3ApO2E9TWF0aC5taW4oYS50b3ArYS5oZWlnaHQsYi50b3ArYi5oZWlnaHQpO2lmKGU8PWEpcmV0dXJuIG5ldyBfLlJkKGMsZSxkLWMsYS1lKX1yZXR1cm4gbnVsbH07Cl8uWkhhPWZ1bmN0aW9uKGEsYil7cmV0dXJuIGEubGVmdDw9Yi5sZWZ0K2Iud2lkdGgmJmIubGVmdDw9YS5sZWZ0K2Eud2lkdGgmJmEudG9wPD1iLnRvcCtiLmhlaWdodCYmYi50b3A8PWEudG9wK2EuaGVpZ2h0fTtfLmFhPV8uUmQucHJvdG90eXBlO18uYWEuaW50ZXJzZWN0cz1mdW5jdGlvbihhKXtyZXR1cm4gXy5aSGEodGhpcyxhKX07Cl8uYWEuZGlmZmVyZW5jZT1mdW5jdGlvbihhKXt2YXIgYj1fLllIYSh0aGlzLGEpO2lmKGImJmIuaGVpZ2h0JiZiLndpZHRoKXtiPVtdO3ZhciBjPXRoaXMudG9wLGQ9dGhpcy5oZWlnaHQsZT10aGlzLmxlZnQrdGhpcy53aWR0aCxmPXRoaXMudG9wK3RoaXMuaGVpZ2h0LGc9YS5sZWZ0K2Eud2lkdGgsaD1hLnRvcCthLmhlaWdodDthLnRvcD50aGlzLnRvcCYmKGIucHVzaChuZXcgXy5SZCh0aGlzLmxlZnQsdGhpcy50b3AsdGhpcy53aWR0aCxhLnRvcC10aGlzLnRvcCkpLGM9YS50b3AsZC09YS50b3AtdGhpcy50b3ApO2g8ZiYmKGIucHVzaChuZXcgXy5SZCh0aGlzLmxlZnQsaCx0aGlzLndpZHRoLGYtaCkpLGQ9aC1jKTthLmxlZnQ+dGhpcy5sZWZ0JiZiLnB1c2gobmV3IF8uUmQodGhpcy5sZWZ0LGMsYS5sZWZ0LXRoaXMubGVmdCxkKSk7ZzxlJiZiLnB1c2gobmV3IF8uUmQoZyxjLGUtZyxkKSk7YT1ifWVsc2UgYT1bdGhpcy5jbG9uZSgpXTtyZXR1cm4gYX07Cl8uYWEuYm91bmRpbmdSZWN0PWZ1bmN0aW9uKGEpe3ZhciBiPU1hdGgubWF4KHRoaXMubGVmdCt0aGlzLndpZHRoLGEubGVmdCthLndpZHRoKSxjPU1hdGgubWF4KHRoaXMudG9wK3RoaXMuaGVpZ2h0LGEudG9wK2EuaGVpZ2h0KTt0aGlzLmxlZnQ9TWF0aC5taW4odGhpcy5sZWZ0LGEubGVmdCk7dGhpcy50b3A9TWF0aC5taW4odGhpcy50b3AsYS50b3ApO3RoaXMud2lkdGg9Yi10aGlzLmxlZnQ7dGhpcy5oZWlnaHQ9Yy10aGlzLnRvcH07Xy5hYS5jb250YWlucz1mdW5jdGlvbihhKXtyZXR1cm4gYSBpbnN0YW5jZW9mIF8uS2Q/YS54Pj10aGlzLmxlZnQmJmEueDw9dGhpcy5sZWZ0K3RoaXMud2lkdGgmJmEueT49dGhpcy50b3AmJmEueTw9dGhpcy50b3ArdGhpcy5oZWlnaHQ6dGhpcy5sZWZ0PD1hLmxlZnQmJnRoaXMubGVmdCt0aGlzLndpZHRoPj1hLmxlZnQrYS53aWR0aCYmdGhpcy50b3A8PWEudG9wJiZ0aGlzLnRvcCt0aGlzLmhlaWdodD49YS50b3ArYS5oZWlnaHR9OwpfLmFhLmRpc3RhbmNlPWZ1bmN0aW9uKGEpe3ZhciBiPWEueDx0aGlzLmxlZnQ/dGhpcy5sZWZ0LWEueDpNYXRoLm1heChhLngtKHRoaXMubGVmdCt0aGlzLndpZHRoKSwwKTthPWEueTx0aGlzLnRvcD90aGlzLnRvcC1hLnk6TWF0aC5tYXgoYS55LSh0aGlzLnRvcCt0aGlzLmhlaWdodCksMCk7cmV0dXJuIE1hdGguc3FydChiKmIrYSphKX07Xy5hYS5nZXRTaXplPWZ1bmN0aW9uKCl7cmV0dXJuIG5ldyBfLkxkKHRoaXMud2lkdGgsdGhpcy5oZWlnaHQpfTtfLmFhLnl2PWZ1bmN0aW9uKCl7cmV0dXJuIG5ldyBfLktkKHRoaXMubGVmdCx0aGlzLnRvcCl9O18uYWEuZ2V0Q2VudGVyPWZ1bmN0aW9uKCl7cmV0dXJuIG5ldyBfLktkKHRoaXMubGVmdCt0aGlzLndpZHRoLzIsdGhpcy50b3ArdGhpcy5oZWlnaHQvMil9O18uYWEuS3Q9ZnVuY3Rpb24oKXtyZXR1cm4gbmV3IF8uS2QodGhpcy5sZWZ0K3RoaXMud2lkdGgsdGhpcy50b3ArdGhpcy5oZWlnaHQpfTsKXy5hYS5jZWlsPWZ1bmN0aW9uKCl7dGhpcy5sZWZ0PU1hdGguY2VpbCh0aGlzLmxlZnQpO3RoaXMudG9wPU1hdGguY2VpbCh0aGlzLnRvcCk7dGhpcy53aWR0aD1NYXRoLmNlaWwodGhpcy53aWR0aCk7dGhpcy5oZWlnaHQ9TWF0aC5jZWlsKHRoaXMuaGVpZ2h0KTtyZXR1cm4gdGhpc307Xy5hYS5mbG9vcj1mdW5jdGlvbigpe3RoaXMubGVmdD1NYXRoLmZsb29yKHRoaXMubGVmdCk7dGhpcy50b3A9TWF0aC5mbG9vcih0aGlzLnRvcCk7dGhpcy53aWR0aD1NYXRoLmZsb29yKHRoaXMud2lkdGgpO3RoaXMuaGVpZ2h0PU1hdGguZmxvb3IodGhpcy5oZWlnaHQpO3JldHVybiB0aGlzfTtfLmFhLnJvdW5kPWZ1bmN0aW9uKCl7dGhpcy5sZWZ0PU1hdGgucm91bmQodGhpcy5sZWZ0KTt0aGlzLnRvcD1NYXRoLnJvdW5kKHRoaXMudG9wKTt0aGlzLndpZHRoPU1hdGgucm91bmQodGhpcy53aWR0aCk7dGhpcy5oZWlnaHQ9TWF0aC5yb3VuZCh0aGlzLmhlaWdodCk7cmV0dXJuIHRoaXN9OwpfLmFhLnRyYW5zbGF0ZT1mdW5jdGlvbihhLGIpe2EgaW5zdGFuY2VvZiBfLktkPyh0aGlzLmxlZnQrPWEueCx0aGlzLnRvcCs9YS55KToodGhpcy5sZWZ0Kz1hLHR5cGVvZiBiPT09Im51bWJlciImJih0aGlzLnRvcCs9YikpO3JldHVybiB0aGlzfTtfLmFhLnNjYWxlPWZ1bmN0aW9uKGEsYil7Yj10eXBlb2YgYj09PSJudW1iZXIiP2I6YTt0aGlzLmxlZnQqPWE7dGhpcy53aWR0aCo9YTt0aGlzLnRvcCo9Yjt0aGlzLmhlaWdodCo9YjtyZXR1cm4gdGhpc307dmFyIGFJYSwkSGEsY0lhLGJJYSxkSWEsaklhLGdJYSxtSWEsdUlhO18uaG49ZnVuY3Rpb24oYSxiLGMpe2lmKHR5cGVvZiBiPT09InN0cmluZyIpJEhhKGEsYyxiKTtlbHNlIGZvcihsZXQgZCBpbiBiKSRIYShhLGJbZF0sZCl9O2FJYT0vXi0tLisvOyRIYT1mdW5jdGlvbihhLGIsYyl7KGM9YklhKGEsYykpJiYoYUlhLnRlc3QoYyk/YS5zdHlsZS5zZXRQcm9wZXJ0eShjLGIpOmEuc3R5bGVbY109Yil9O2NJYT17fTtiSWE9ZnVuY3Rpb24oYSxiKXt2YXIgYz1jSWFbYl07aWYoIWMpe3ZhciBkPV8uSnBhKGIpO2M9ZDthLnN0eWxlW2RdPT09dm9pZCAwJiYoZD1fLiRrYSgpK18uYmxhKGQpLGEuc3R5bGVbZF0hPT12b2lkIDAmJihjPWQpKTtjSWFbYl09Y31yZXR1cm4gY307Xy5qbj1mdW5jdGlvbihhLGIpe3ZhciBjPWEuc3R5bGVbXy5KcGEoYildO3JldHVybiB0eXBlb2YgYyE9PSJ1bmRlZmluZWQiP2M6YS5zdHlsZVtiSWEoYSxiKV18fCIifTsKXy5rbj1mdW5jdGlvbihhLGIpe3ZhciBjPV8uV2QoYSk7cmV0dXJuIGMuZGVmYXVsdFZpZXcmJmMuZGVmYXVsdFZpZXcuZ2V0Q29tcHV0ZWRTdHlsZSYmKGE9Yy5kZWZhdWx0Vmlldy5nZXRDb21wdXRlZFN0eWxlKGEsbnVsbCkpP2FbYl18fGEuZ2V0UHJvcGVydHlWYWx1ZShiKXx8IiI6IiJ9O2RJYT1mdW5jdGlvbihhLGIpe3JldHVybiBfLmtuKGEsYil8fChhLmN1cnJlbnRTdHlsZT9hLmN1cnJlbnRTdHlsZVtiXTpudWxsKXx8YS5zdHlsZSYmYS5zdHlsZVtiXX07Xy5vbGE9ZnVuY3Rpb24oYSl7cmV0dXJuIGRJYShhLCJwb3NpdGlvbiIpfTtfLm5sYT1mdW5jdGlvbihhKXtyZXR1cm4gZElhKGEsIm92ZXJmbG93WCIpfTtfLmVJYT1mdW5jdGlvbihhKXtyZXR1cm4gZElhKGEsIm92ZXJmbG93WSIpfTsKXy5mSWE9ZnVuY3Rpb24oYSl7YTp7dmFyIGI9Xy5KcGEoInRyYW5zZm9ybSIpO2lmKGEuc3R5bGVbYl09PT12b2lkIDAmJihiPV8uJGthKCkrXy5ibGEoYiksYS5zdHlsZVtiXSE9PXZvaWQgMCkpe2I9Xy5hbGEoKSsiLXRyYW5zZm9ybSI7YnJlYWsgYX1iPSJ0cmFuc2Zvcm0ifXJldHVybiBkSWEoYSxiKXx8ZElhKGEsInRyYW5zZm9ybSIpfTtfLmxuPWZ1bmN0aW9uKGEsYixjKXtpZihiIGluc3RhbmNlb2YgXy5LZCl7dmFyIGQ9Yi54O2I9Yi55fWVsc2UgZD1iLGI9YzthLnN0eWxlLmxlZnQ9Z0lhKGQsITEpO2Euc3R5bGUudG9wPWdJYShiLCExKX07Xy5oSWE9ZnVuY3Rpb24oYSl7cmV0dXJuKGE/Xy5XZChhKTpkb2N1bWVudCkuZG9jdW1lbnRFbGVtZW50fTtfLmlJYT1mdW5jdGlvbihhKXt0cnl7cmV0dXJuIGEuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCl9Y2F0Y2goYil7cmV0dXJue2xlZnQ6MCx0b3A6MCxyaWdodDowLGJvdHRvbTowfX19OwpqSWE9ZnVuY3Rpb24oYSl7dmFyIGI9Xy5XZChhKSxjPWRJYShhLCJwb3NpdGlvbiIpLGQ9Yz09ImZpeGVkInx8Yz09ImFic29sdXRlIjtmb3IoYT1hLnBhcmVudE5vZGU7YSYmYSE9YjthPWEucGFyZW50Tm9kZSlpZihhLm5vZGVUeXBlPT0xMSYmYS5ob3N0JiYoYT1hLmhvc3QpLGM9ZElhKGEsInBvc2l0aW9uIiksZD1kJiZjPT0ic3RhdGljIiYmYSE9Yi5kb2N1bWVudEVsZW1lbnQmJmEhPWIuYm9keSwhZCYmKGEuc2Nyb2xsV2lkdGg+YS5jbGllbnRXaWR0aHx8YS5zY3JvbGxIZWlnaHQ+YS5jbGllbnRIZWlnaHR8fGM9PSJmaXhlZCJ8fGM9PSJhYnNvbHV0ZSJ8fGM9PSJyZWxhdGl2ZSIpKXJldHVybiBhO3JldHVybiBudWxsfTsKXy5rSWE9ZnVuY3Rpb24oYSl7Zm9yKHZhciBiPW5ldyBfLlBkKDAsSW5maW5pdHksSW5maW5pdHksMCksYz1fLm9lKGEpLGQ9Yy5nZXREb2N1bWVudCgpLmJvZHksZT1jLmdldERvY3VtZW50KCkuZG9jdW1lbnRFbGVtZW50LGY9Xy5RbShjLmthKTthPWpJYShhKTspaWYoKCFfLk5kfHxhLmNsaWVudEhlaWdodCE9MHx8YSE9ZCkmJmEhPWQmJmEhPWUmJmRJYShhLCJvdmVyZmxvdyIpIT0idmlzaWJsZSIpe2xldCBnPV8ubW4oYSksaD1uZXcgXy5LZChhLmNsaWVudExlZnQsYS5jbGllbnRUb3ApO2cueCs9aC54O2cueSs9aC55O2IudG9wPU1hdGgubWF4KGIudG9wLGcueSk7Yi5yaWdodD1NYXRoLm1pbihiLnJpZ2h0LGcueCthLmNsaWVudFdpZHRoKTtiLmJvdHRvbT1NYXRoLm1pbihiLmJvdHRvbSxnLnkrYS5jbGllbnRIZWlnaHQpO2IubGVmdD1NYXRoLm1heChiLmxlZnQsZy54KX1kPWYuc2Nyb2xsTGVmdDtmPWYuc2Nyb2xsVG9wO2IubGVmdD1NYXRoLm1heChiLmxlZnQsZCk7Yi50b3A9Ck1hdGgubWF4KGIudG9wLGYpO2M9Xy5naShjLmdldFdpbmRvdygpKTtiLnJpZ2h0PU1hdGgubWluKGIucmlnaHQsZCtjLndpZHRoKTtiLmJvdHRvbT1NYXRoLm1pbihiLmJvdHRvbSxmK2MuaGVpZ2h0KTtyZXR1cm4gYi50b3A+PTAmJmIubGVmdD49MCYmYi5ib3R0b20+Yi50b3AmJmIucmlnaHQ+Yi5sZWZ0P2I6bnVsbH07Cl8ubklhPWZ1bmN0aW9uKGEsYixjKXt2YXIgZD1ifHxfLlFtKGRvY3VtZW50KSxlPV8ubW4oYSksZj1fLm1uKGQpLGc9Xy5sSWEoZCk7ZD09Xy5RbShkb2N1bWVudCk/KGI9ZS54LWQuc2Nyb2xsTGVmdCxlPWUueS1kLnNjcm9sbFRvcCk6KGI9ZS54LWYueC1nLmxlZnQsZT1lLnktZi55LWcudG9wKTtmPW1JYShhKTthPWQuY2xpZW50V2lkdGgtZi53aWR0aDtmPWQuY2xpZW50SGVpZ2h0LWYuaGVpZ2h0O2c9ZC5zY3JvbGxMZWZ0O2Q9ZC5zY3JvbGxUb3A7Yz8oZys9Yi1hLzIsZCs9ZS1mLzIpOihnKz1NYXRoLm1pbihiLE1hdGgubWF4KGItYSwwKSksZCs9TWF0aC5taW4oZSxNYXRoLm1heChlLWYsMCkpKTtyZXR1cm4gbmV3IF8uS2QoZyxkKX07Xy5vSWE9ZnVuY3Rpb24oYSxiKXtiPWJ8fF8uUW0oZG9jdW1lbnQpO2E9Xy5uSWEoYSxiKTtiLnNjcm9sbExlZnQ9YS54O2Iuc2Nyb2xsVG9wPWEueX07Cl8ubW49ZnVuY3Rpb24oYSl7dmFyIGI9Xy5XZChhKSxjPW5ldyBfLktkKDAsMCk7aWYoYT09Xy5oSWEoYikpcmV0dXJuIGM7YT1fLmlJYShhKTtiPV8uVUhhKF8ub2UoYikpO2MueD1hLmxlZnQrYi54O2MueT1hLnRvcCtiLnk7cmV0dXJuIGN9O18ubm49ZnVuY3Rpb24oYSl7cmV0dXJuIF8ubW4oYSkueX07Xy5wbj1mdW5jdGlvbihhLGIpe2E9Xy5vbihhKTtiPV8ub24oYik7cmV0dXJuIG5ldyBfLktkKGEueC1iLngsYS55LWIueSl9O18ucElhPWZ1bmN0aW9uKGEpe2E9Xy5pSWEoYSk7cmV0dXJuIG5ldyBfLktkKGEubGVmdCxhLnRvcCl9O18ub249ZnVuY3Rpb24oYSl7aWYoYS5ub2RlVHlwZT09MSlyZXR1cm4gXy5wSWEoYSk7YT1hLmNoYW5nZWRUb3VjaGVzP2EuY2hhbmdlZFRvdWNoZXNbMF06YTtyZXR1cm4gbmV3IF8uS2QoYS5jbGllbnRYLGEuY2xpZW50WSl9OwpfLnFJYT1mdW5jdGlvbihhLGIsYyl7aWYoYiBpbnN0YW5jZW9mIF8uTGQpYz1iLmhlaWdodCxiPWIud2lkdGg7ZWxzZSBpZihjPT12b2lkIDApdGhyb3cgRXJyb3IoImthIik7Xy5xbihhLGIpO18ucm4oYSxjKX07Z0lhPWZ1bmN0aW9uKGEsYil7dHlwZW9mIGE9PSJudW1iZXIiJiYoYT0oYj9NYXRoLnJvdW5kKGEpOmEpKyJweCIpO3JldHVybiBhfTtfLnJuPWZ1bmN0aW9uKGEsYil7YS5zdHlsZS5oZWlnaHQ9Z0lhKGIsITApfTtfLnFuPWZ1bmN0aW9uKGEsYil7YS5zdHlsZS53aWR0aD1nSWEoYiwhMCl9O18uc249ZnVuY3Rpb24oYSl7cmV0dXJuIF8ucklhKG1JYSxhKX07Cl8ucklhPWZ1bmN0aW9uKGEsYil7aWYoZElhKGIsImRpc3BsYXkiKSE9Im5vbmUiKXJldHVybiBhKGIpO3ZhciBjPWIuc3R5bGUsZD1jLmRpc3BsYXksZT1jLnZpc2liaWxpdHksZj1jLnBvc2l0aW9uO2MudmlzaWJpbGl0eT0iaGlkZGVuIjtjLnBvc2l0aW9uPSJhYnNvbHV0ZSI7Yy5kaXNwbGF5PSJpbmxpbmUiO2E9YShiKTtjLmRpc3BsYXk9ZDtjLnBvc2l0aW9uPWY7Yy52aXNpYmlsaXR5PWU7cmV0dXJuIGF9O21JYT1mdW5jdGlvbihhKXt2YXIgYj1hLm9mZnNldFdpZHRoLGM9YS5vZmZzZXRIZWlnaHQsZD1fLk5kJiYhYiYmIWM7cmV0dXJuKGI9PT12b2lkIDB8fGQpJiZhLmdldEJvdW5kaW5nQ2xpZW50UmVjdD8oYT1fLmlJYShhKSxuZXcgXy5MZChhLnJpZ2h0LWEubGVmdCxhLmJvdHRvbS1hLnRvcCkpOm5ldyBfLkxkKGIsYyl9O18udG49ZnVuY3Rpb24oYSl7dmFyIGI9Xy5tbihhKTthPV8uc24oYSk7cmV0dXJuIG5ldyBfLlJkKGIueCxiLnksYS53aWR0aCxhLmhlaWdodCl9OwpfLnVuPWZ1bmN0aW9uKGEsYil7YT1hLnN0eWxlOyJvcGFjaXR5ImluIGE/YS5vcGFjaXR5PWI6Ik1vek9wYWNpdHkiaW4gYT9hLk1vek9wYWNpdHk9YjoiZmlsdGVyImluIGEmJihhLmZpbHRlcj1iPT09IiI/IiI6ImFscGhhKG9wYWNpdHk9IitOdW1iZXIoYikqMTAwKyIpIil9O18udm49ZnVuY3Rpb24oYSxiKXthLnN0eWxlLmRpc3BsYXk9Yj8iIjoibm9uZSJ9O18ud249ZnVuY3Rpb24oYSl7cmV0dXJuIGEuc3R5bGUuZGlzcGxheSE9Im5vbmUifTsKXy5zSWE9ZnVuY3Rpb24oYSl7dmFyIGI9Xy5vZSh2b2lkIDApLGM9Xy5zSGEoYi5rYSwiSEVBRCIpWzBdO2lmKCFjKXt2YXIgZD1fLnNIYShiLmthLCJCT0RZIilbMF07Yz1iLlpsKCJIRUFEIik7ZC5wYXJlbnROb2RlLmluc2VydEJlZm9yZShjLGQpfWQ9Yi5abCgiU1RZTEUiKTt2YXIgZT1fLkdqYShkb2N1bWVudCk7ZSYmZC5zZXRBdHRyaWJ1dGUoIm5vbmNlIixlKTthPV8ubGlhKGEpO18uZWEudHJ1c3RlZFR5cGVzP18uJG0oZCxhKTpkLmlubmVySFRNTD1hO2IuYXBwZW5kQ2hpbGQoYyxkKTtyZXR1cm4gZH07Xy5jZT1mdW5jdGlvbihhKXtyZXR1cm4icnRsIj09ZElhKGEsImRpcmVjdGlvbiIpfTtfLnRJYT1fLk9kPyJNb3pVc2VyU2VsZWN0IjpfLk5kfHxfLldCYT8iV2Via2l0VXNlclNlbGVjdCI6bnVsbDsKdUlhPWZ1bmN0aW9uKGEsYil7dmFyIGM9Xy5rbihhLGIrIkxlZnQiKSxkPV8ua24oYSxiKyJSaWdodCIpLGU9Xy5rbihhLGIrIlRvcCIpO2E9Xy5rbihhLGIrIkJvdHRvbSIpO3JldHVybiBuZXcgXy5QZChwYXJzZUZsb2F0KGUpLHBhcnNlRmxvYXQoZCkscGFyc2VGbG9hdChhKSxwYXJzZUZsb2F0KGMpKX07Xy52SWE9ZnVuY3Rpb24oYSl7cmV0dXJuIHVJYShhLCJwYWRkaW5nIil9O18ud0lhPWZ1bmN0aW9uKGEpe3JldHVybiB1SWEoYSwibWFyZ2luIil9O18ubElhPWZ1bmN0aW9uKGEpe3ZhciBiPV8ua24oYSwiYm9yZGVyTGVmdFdpZHRoIiksYz1fLmtuKGEsImJvcmRlclJpZ2h0V2lkdGgiKSxkPV8ua24oYSwiYm9yZGVyVG9wV2lkdGgiKTthPV8ua24oYSwiYm9yZGVyQm90dG9tV2lkdGgiKTtyZXR1cm4gbmV3IF8uUGQocGFyc2VGbG9hdChkKSxwYXJzZUZsb2F0KGMpLHBhcnNlRmxvYXQoYSkscGFyc2VGbG9hdChiKSl9O3ZhciBlbGE7Xy5ZZC5wcm90b3R5cGUudG9TdHJpbmc9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5pZH07Xy5aZD1mdW5jdGlvbihhLGIpe3RoaXMudHlwZT1hIGluc3RhbmNlb2YgXy5ZZD9TdHJpbmcoYSk6YTt0aGlzLmN1cnJlbnRUYXJnZXQ9dGhpcy50YXJnZXQ9Yjt0aGlzLmRlZmF1bHRQcmV2ZW50ZWQ9dGhpcy5vYT0hMX07Xy5aZC5wcm90b3R5cGUuc3RvcFByb3BhZ2F0aW9uPWZ1bmN0aW9uKCl7dGhpcy5vYT0hMH07Xy5aZC5wcm90b3R5cGUucHJldmVudERlZmF1bHQ9ZnVuY3Rpb24oKXt0aGlzLmRlZmF1bHRQcmV2ZW50ZWQ9ITB9O18ueElhPWZ1bmN0aW9uKGEpe2EucHJldmVudERlZmF1bHQoKX07Xy55SWE9ISghXy5lYS5uYXZpZ2F0b3J8fCFfLmVhLm5hdmlnYXRvci5tYXhUb3VjaFBvaW50cyk7aWxhKCJBbmltYXRpb25TdGFydCIpO18ueklhPWlsYSgiQW5pbWF0aW9uRW5kIik7aWxhKCJBbmltYXRpb25JdGVyYXRpb24iKTtfLnhuPWlsYSgiVHJhbnNpdGlvbkVuZCIpO18uVWkoXy4kZCxfLlpkKTtfLmFhPV8uJGQucHJvdG90eXBlOwpfLmFhLmluaXQ9ZnVuY3Rpb24oYSxiKXt2YXIgYz10aGlzLnR5cGU9YS50eXBlLGQ9YS5jaGFuZ2VkVG91Y2hlcyYmYS5jaGFuZ2VkVG91Y2hlcy5sZW5ndGg/YS5jaGFuZ2VkVG91Y2hlc1swXTpudWxsO3RoaXMudGFyZ2V0PWEudGFyZ2V0fHxhLnNyY0VsZW1lbnQ7dGhpcy5jdXJyZW50VGFyZ2V0PWI7Yj1hLnJlbGF0ZWRUYXJnZXQ7Ynx8KGM9PSJtb3VzZW92ZXIiP2I9YS5mcm9tRWxlbWVudDpjPT0ibW91c2VvdXQiJiYoYj1hLnRvRWxlbWVudCkpO3RoaXMucmVsYXRlZFRhcmdldD1iO2Q/KHRoaXMuY2xpZW50WD1kLmNsaWVudFghPT12b2lkIDA/ZC5jbGllbnRYOmQucGFnZVgsdGhpcy5jbGllbnRZPWQuY2xpZW50WSE9PXZvaWQgMD9kLmNsaWVudFk6ZC5wYWdlWSx0aGlzLnNjcmVlblg9ZC5zY3JlZW5YfHwwLHRoaXMuc2NyZWVuWT1kLnNjcmVlbll8fDApOih0aGlzLm9mZnNldFg9Xy5OZHx8YS5vZmZzZXRYIT09dm9pZCAwP2Eub2Zmc2V0WDphLmxheWVyWCx0aGlzLm9mZnNldFk9Cl8uTmR8fGEub2Zmc2V0WSE9PXZvaWQgMD9hLm9mZnNldFk6YS5sYXllclksdGhpcy5jbGllbnRYPWEuY2xpZW50WCE9PXZvaWQgMD9hLmNsaWVudFg6YS5wYWdlWCx0aGlzLmNsaWVudFk9YS5jbGllbnRZIT09dm9pZCAwP2EuY2xpZW50WTphLnBhZ2VZLHRoaXMuc2NyZWVuWD1hLnNjcmVlblh8fDAsdGhpcy5zY3JlZW5ZPWEuc2NyZWVuWXx8MCk7dGhpcy5idXR0b249YS5idXR0b247dGhpcy5rZXlDb2RlPWEua2V5Q29kZXx8MDt0aGlzLmtleT1hLmtleXx8IiI7dGhpcy5jaGFyQ29kZT1hLmNoYXJDb2RlfHwoYz09ImtleXByZXNzIj9hLmtleUNvZGU6MCk7dGhpcy5jdHJsS2V5PWEuY3RybEtleTt0aGlzLmFsdEtleT1hLmFsdEtleTt0aGlzLnNoaWZ0S2V5PWEuc2hpZnRLZXk7dGhpcy5tZXRhS2V5PWEubWV0YUtleTt0aGlzLmthPV8uYWo/YS5tZXRhS2V5OmEuY3RybEtleTt0aGlzLnBvaW50ZXJJZD1hLnBvaW50ZXJJZHx8MDt0aGlzLnBvaW50ZXJUeXBlPWEucG9pbnRlclR5cGU7CnRoaXMuc3RhdGU9YS5zdGF0ZTt0aGlzLnRpbWVTdGFtcD1hLnRpbWVTdGFtcDt0aGlzLmpnPWE7YS5kZWZhdWx0UHJldmVudGVkJiZfLiRkLlJkLnByZXZlbnREZWZhdWx0LmNhbGwodGhpcyl9O18uYWEuZXBhPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuamcuYnV0dG9uPT0wJiYhKF8uYWomJnRoaXMuY3RybEtleSl9O18uYWEuc3RvcFByb3BhZ2F0aW9uPWZ1bmN0aW9uKCl7Xy4kZC5SZC5zdG9wUHJvcGFnYXRpb24uY2FsbCh0aGlzKTt0aGlzLmpnLnN0b3BQcm9wYWdhdGlvbj90aGlzLmpnLnN0b3BQcm9wYWdhdGlvbigpOnRoaXMuamcuY2FuY2VsQnViYmxlPSEwfTtfLmFhLnByZXZlbnREZWZhdWx0PWZ1bmN0aW9uKCl7Xy4kZC5SZC5wcmV2ZW50RGVmYXVsdC5jYWxsKHRoaXMpO3ZhciBhPXRoaXMuamc7YS5wcmV2ZW50RGVmYXVsdD9hLnByZXZlbnREZWZhdWx0KCk6YS5yZXR1cm5WYWx1ZT0hMX07Xy5hYS5VbmE9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5qZ307Xy5BSWE9ImNsb3N1cmVfbGlzdGVuYWJsZV8iKyhNYXRoLnJhbmRvbSgpKjFFNnwwKTtfLkJJYT1mdW5jdGlvbihhKXtyZXR1cm4hKCFhfHwhYVtfLkFJYV0pfTt2YXIgamxhPTA7dmFyIENJYT1mdW5jdGlvbihhKXthLnJlbW92ZWQ9ITA7YS5saXN0ZW5lcj1udWxsO2EucHJveHk9bnVsbDthLnNyYz1udWxsO2EuaGFuZGxlcj1udWxsfTtsbGEucHJvdG90eXBlLmFkZD1mdW5jdGlvbihhLGIsYyxkLGUpe3ZhciBmPWEudG9TdHJpbmcoKTthPXRoaXMuVGRbZl07YXx8KGE9dGhpcy5UZFtmXT1bXSx0aGlzLmthKyspO3ZhciBnPURJYShhLGIsZCxlKTtnPi0xPyhiPWFbZ10sY3x8KGIuTTA9ITEpKTooYj1uZXcgXy5rbGEoYix0aGlzLnNyYyxmLCEhZCxlKSxiLk0wPWMsYS5wdXNoKGIpKTtyZXR1cm4gYn07bGxhLnByb3RvdHlwZS5yZW1vdmU9ZnVuY3Rpb24oYSxiLGMsZCl7YT1hLnRvU3RyaW5nKCk7aWYoIShhIGluIHRoaXMuVGQpKXJldHVybiExO3ZhciBlPXRoaXMuVGRbYV07Yj1ESWEoZSxiLGMsZCk7cmV0dXJuIGI+LTE/KENJYShlW2JdKSxfLkNhKGUsYiksZS5sZW5ndGg9PTAmJihkZWxldGUgdGhpcy5UZFthXSx0aGlzLmthLS0pLCEwKTohMX07CnZhciBFSWE9ZnVuY3Rpb24oYSxiKXt2YXIgYz1iLnR5cGU7aWYoIShjIGluIGEuVGQpKXJldHVybiExO3ZhciBkPV8uRGEoYS5UZFtjXSxiKTtkJiYoQ0lhKGIpLGEuVGRbY10ubGVuZ3RoPT0wJiYoZGVsZXRlIGEuVGRbY10sYS5rYS0tKSk7cmV0dXJuIGR9O2xsYS5wcm90b3R5cGUucmVtb3ZlQWxsPWZ1bmN0aW9uKGEpe2E9YSYmYS50b1N0cmluZygpO3ZhciBiPTA7Zm9yKGxldCBjIGluIHRoaXMuVGQpaWYoIWF8fGM9PWEpe2xldCBkPXRoaXMuVGRbY107Zm9yKGxldCBlPTA7ZTxkLmxlbmd0aDtlKyspKytiLENJYShkW2VdKTtkZWxldGUgdGhpcy5UZFtjXTt0aGlzLmthLS19cmV0dXJuIGJ9O2xsYS5wcm90b3R5cGUuaHdhPWZ1bmN0aW9uKGEsYil7YT10aGlzLlRkW2EudG9TdHJpbmcoKV07dmFyIGM9W107aWYoYSlmb3IobGV0IGQ9MDtkPGEubGVuZ3RoOysrZCl7bGV0IGU9YVtkXTtlLmNhcHR1cmU9PWImJmMucHVzaChlKX1yZXR1cm4gY307CmxsYS5wcm90b3R5cGUuZ3dhPWZ1bmN0aW9uKGEsYixjLGQpe2E9dGhpcy5UZFthLnRvU3RyaW5nKCldO3ZhciBlPS0xO2EmJihlPURJYShhLGIsYyxkKSk7cmV0dXJuIGU+LTE/YVtlXTpudWxsfTtsbGEucHJvdG90eXBlLmhhc0xpc3RlbmVyPWZ1bmN0aW9uKGEsYil7dmFyIGM9YSE9PXZvaWQgMCxkPWM/YS50b1N0cmluZygpOiIiLGU9YiE9PXZvaWQgMDtyZXR1cm4gXy5uamEodGhpcy5UZCxmdW5jdGlvbihmKXtmb3IobGV0IGc9MDtnPGYubGVuZ3RoOysrZylpZighKGMmJmZbZ10udHlwZSE9ZHx8ZSYmZltnXS5jYXB0dXJlIT1iKSlyZXR1cm4hMDtyZXR1cm4hMX0pfTt2YXIgRElhPWZ1bmN0aW9uKGEsYixjLGQpe2ZvcihsZXQgZT0wO2U8YS5sZW5ndGg7KytlKXtsZXQgZj1hW2VdO2lmKCFmLnJlbW92ZWQmJmYubGlzdGVuZXI9PWImJmYuY2FwdHVyZT09ISFjJiZmLmhhbmRsZXI9PWQpcmV0dXJuIGV9cmV0dXJuLTF9O3ZhciBGSWEsR0lhLEhJYSxKSWEsTElhLE1JYSxQSWEsTklhLFFJYTtGSWE9ImNsb3N1cmVfbG1fIisoTWF0aC5yYW5kb20oKSoxRTZ8MCk7R0lhPXt9O0hJYT0wO18uaGU9ZnVuY3Rpb24oYSxiLGMsZCxlKXtpZihkJiZkLm9uY2UpcmV0dXJuIF8ueW4oYSxiLGMsZCxlKTtpZihBcnJheS5pc0FycmF5KGIpKXtmb3IobGV0IGY9MDtmPGIubGVuZ3RoO2YrKylfLmhlKGEsYltmXSxjLGQsZSk7cmV0dXJuIG51bGx9Yz1fLklJYShjKTtyZXR1cm4gXy5CSWEoYSk/YS5saXN0ZW4oYixjLF8ucGcoZCk/ISFkLmNhcHR1cmU6ISFkLGUpOkpJYShhLGIsYywhMSxkLGUpfTsKSklhPWZ1bmN0aW9uKGEsYixjLGQsZSxmKXtpZighYil0aHJvdyBFcnJvcigibGEiKTt2YXIgZz1fLnBnKGUpPyEhZS5jYXB0dXJlOiEhZSxoPV8uS0lhKGEpO2h8fChhW0ZJYV09aD1uZXcgbGxhKGEpKTtjPWguYWRkKGIsYyxkLGcsZik7aWYoYy5wcm94eSlyZXR1cm4gYztkPUxJYSgpO2MucHJveHk9ZDtkLnNyYz1hO2QubGlzdGVuZXI9YztpZihhLmFkZEV2ZW50TGlzdGVuZXIpZT09PXZvaWQgMCYmKGU9ITEpLGEuYWRkRXZlbnRMaXN0ZW5lcihiLnRvU3RyaW5nKCksZCxlKTtlbHNlIGlmKGEuYXR0YWNoRXZlbnQpYS5hdHRhY2hFdmVudChNSWEoYi50b1N0cmluZygpKSxkKTtlbHNlIGlmKGEuYWRkTGlzdGVuZXImJmEucmVtb3ZlTGlzdGVuZXIpYS5hZGRMaXN0ZW5lcihkKTtlbHNlIHRocm93IEVycm9yKCJtYSIpO0hJYSsrO3JldHVybiBjfTtMSWE9ZnVuY3Rpb24oKXt2YXIgYT1OSWEsYj1mdW5jdGlvbihjKXtyZXR1cm4gYS5jYWxsKGIuc3JjLGIubGlzdGVuZXIsYyl9O3JldHVybiBifTsKXy55bj1mdW5jdGlvbihhLGIsYyxkLGUpe2lmKEFycmF5LmlzQXJyYXkoYikpe2ZvcihsZXQgZj0wO2Y8Yi5sZW5ndGg7ZisrKV8ueW4oYSxiW2ZdLGMsZCxlKTtyZXR1cm4gbnVsbH1jPV8uSUlhKGMpO3JldHVybiBfLkJJYShhKT9hLmxpc3Rlbk9uY2UoYixjLF8ucGcoZCk/ISFkLmNhcHR1cmU6ISFkLGUpOkpJYShhLGIsYywhMCxkLGUpfTtfLnpuPWZ1bmN0aW9uKGEsYixjLGQsZSl7aWYoQXJyYXkuaXNBcnJheShiKSl7Zm9yKGxldCBmPTA7ZjxiLmxlbmd0aDtmKyspXy56bihhLGJbZl0sYyxkLGUpO3JldHVybiBudWxsfWQ9Xy5wZyhkKT8hIWQuY2FwdHVyZTohIWQ7Yz1fLklJYShjKTtpZihfLkJJYShhKSlyZXR1cm4gYS51bmxpc3RlbihiLGMsZCxlKTtpZighYSlyZXR1cm4hMTtpZihhPV8uS0lhKGEpKWlmKGI9YS5nd2EoYixjLGQsZSkpcmV0dXJuIF8uQW4oYik7cmV0dXJuITF9OwpfLkFuPWZ1bmN0aW9uKGEpe2lmKHR5cGVvZiBhPT09Im51bWJlciJ8fCFhfHxhLnJlbW92ZWQpcmV0dXJuITE7dmFyIGI9YS5zcmM7aWYoXy5CSWEoYikpcmV0dXJuIGIudm8oYSk7dmFyIGM9YS50eXBlLGQ9YS5wcm94eTtiLnJlbW92ZUV2ZW50TGlzdGVuZXI/Yi5yZW1vdmVFdmVudExpc3RlbmVyKGMsZCxhLmNhcHR1cmUpOmIuZGV0YWNoRXZlbnQ/Yi5kZXRhY2hFdmVudChNSWEoYyksZCk6Yi5hZGRMaXN0ZW5lciYmYi5yZW1vdmVMaXN0ZW5lciYmYi5yZW1vdmVMaXN0ZW5lcihkKTtISWEtLTsoYz1fLktJYShiKSk/KEVJYShjLGEpLGMua2E9PTAmJihjLnNyYz1udWxsLGJbRklhXT1udWxsKSk6Q0lhKGEpO3JldHVybiEwfTsKXy5PSWE9ZnVuY3Rpb24oYSxiKXtpZihhKWlmKF8uQklhKGEpKWEucmVtb3ZlQWxsTGlzdGVuZXJzKGIpO2Vsc2UgaWYoYT1fLktJYShhKSl7dmFyIGM9MDtiPWImJmIudG9TdHJpbmcoKTtmb3IobGV0IGQgaW4gYS5UZClpZighYnx8ZD09Yil7bGV0IGU9YS5UZFtkXS5jb25jYXQoKTtmb3IobGV0IGY9MDtmPGUubGVuZ3RoOysrZilfLkFuKGVbZl0pJiYrK2N9fX07TUlhPWZ1bmN0aW9uKGEpe3JldHVybiBhIGluIEdJYT9HSWFbYV06R0lhW2FdPSJvbiIrYX07Xy5Cbj1mdW5jdGlvbihhLGIsYyl7aWYoXy5CSWEoYSkpYz1hLkRGYShiLCExLGMpO2Vsc2V7bGV0IGU9ITA7aWYoYT1fLktJYShhKSlpZihiPWEuVGRbYi50b1N0cmluZygpXSlmb3IoYj1iLmNvbmNhdCgpLGE9MDthPGIubGVuZ3RoO2ErKyl7dmFyIGQ9YlthXTtkJiZkLmNhcHR1cmU9PTAmJiFkLnJlbW92ZWQmJihkPVBJYShkLGMpLGU9ZSYmZCE9PSExKX1jPWV9cmV0dXJuIGN9OwpQSWE9ZnVuY3Rpb24oYSxiKXt2YXIgYz1hLmxpc3RlbmVyLGQ9YS5oYW5kbGVyfHxhLnNyYzthLk0wJiZfLkFuKGEpO3JldHVybiBjLmNhbGwoZCxiKX07TklhPWZ1bmN0aW9uKGEsYil7cmV0dXJuIGEucmVtb3ZlZD8hMDpQSWEoYSxuZXcgXy4kZChiLHRoaXMpKX07Xy5LSWE9ZnVuY3Rpb24oYSl7YT1hW0ZJYV07cmV0dXJuIGEgaW5zdGFuY2VvZiBsbGE/YTpudWxsfTtRSWE9Il9fY2xvc3VyZV9ldmVudHNfZm5fIisoTWF0aC5yYW5kb20oKSoxRTk+Pj4wKTtfLklJYT1mdW5jdGlvbihhKXtpZih0eXBlb2YgYT09PSJmdW5jdGlvbiIpcmV0dXJuIGE7YVtRSWFdfHwoYVtRSWFdPWZ1bmN0aW9uKGIpe3JldHVybiBhLmhhbmRsZUV2ZW50KGIpfSk7cmV0dXJuIGFbUUlhXX07Xy5SSWE9ZnVuY3Rpb24oYSl7aWYoYT49NDgmJmE8PTU3fHxhPj05NiYmYTw9MTA2fHxhPj02NSYmYTw9OTB8fF8uTmQmJmE9PTApcmV0dXJuITA7c3dpdGNoKGEpe2Nhc2UgMzI6Y2FzZSA0MzpjYXNlIDYzOmNhc2UgNjQ6Y2FzZSAxMDc6Y2FzZSAxMDk6Y2FzZSAxMTA6Y2FzZSAxMTE6Y2FzZSAxODY6Y2FzZSA1OTpjYXNlIDE4OTpjYXNlIDE4NzpjYXNlIDYxOmNhc2UgMTg4OmNhc2UgMTkwOmNhc2UgMTkxOmNhc2UgMTkyOmNhc2UgMjIyOmNhc2UgMjE5OmNhc2UgMjIwOmNhc2UgMjIxOmNhc2UgMTYzOmNhc2UgNTg6cmV0dXJuITA7Y2FzZSAxNzM6Y2FzZSAxNzE6cmV0dXJuIF8uT2Q7ZGVmYXVsdDpyZXR1cm4hMX19O18uVWkoXy5hZSxfLkVkKTt2YXIgU0lhPVtdO18uYWUucHJvdG90eXBlLmxpc3Rlbj1mdW5jdGlvbihhLGIsYyxkKXtBcnJheS5pc0FycmF5KGIpfHwoYiYmKFNJYVswXT1iLnRvU3RyaW5nKCkpLGI9U0lhKTtmb3IobGV0IGU9MDtlPGIubGVuZ3RoO2UrKyl7bGV0IGY9Xy5oZShhLGJbZV0sY3x8dGhpcy5oYW5kbGVFdmVudCxkfHwhMSx0aGlzLk5hfHx0aGlzKTtpZighZilicmVhazt0aGlzLkJhW2Yua2V5XT1mfXJldHVybiB0aGlzfTtfLmFlLnByb3RvdHlwZS5saXN0ZW5PbmNlPWZ1bmN0aW9uKGEsYixjLGQpe3JldHVybiBUSWEodGhpcyxhLGIsYyxkKX07dmFyIFRJYT1mdW5jdGlvbihhLGIsYyxkLGUsZil7aWYoQXJyYXkuaXNBcnJheShjKSlmb3IobGV0IGc9MDtnPGMubGVuZ3RoO2crKylUSWEoYSxiLGNbZ10sZCxlLGYpO2Vsc2V7Yj1fLnluKGIsYyxkfHxhLmhhbmRsZUV2ZW50LGUsZnx8YS5OYXx8YSk7aWYoIWIpcmV0dXJuIGE7YS5CYVtiLmtleV09Yn1yZXR1cm4gYX07Cl8uYWUucHJvdG90eXBlLnVubGlzdGVuPWZ1bmN0aW9uKGEsYixjLGQsZSl7aWYoQXJyYXkuaXNBcnJheShiKSlmb3IobGV0IGY9MDtmPGIubGVuZ3RoO2YrKyl0aGlzLnVubGlzdGVuKGEsYltmXSxjLGQsZSk7ZWxzZSBjPWN8fHRoaXMuaGFuZGxlRXZlbnQsZD1fLnBnKGQpPyEhZC5jYXB0dXJlOiEhZCxlPWV8fHRoaXMuTmF8fHRoaXMsYz1fLklJYShjKSxkPSEhZCxiPV8uQklhKGEpP2EuZ3dhKGIsYyxkLGUpOmE/KGE9Xy5LSWEoYSkpP2EuZ3dhKGIsYyxkLGUpOm51bGw6bnVsbCxiJiYoXy5BbihiKSxkZWxldGUgdGhpcy5CYVtiLmtleV0pO3JldHVybiB0aGlzfTtfLmFlLnByb3RvdHlwZS5yZW1vdmVBbGw9ZnVuY3Rpb24oKXtfLlBjKHRoaXMuQmEsZnVuY3Rpb24oYSxiKXt0aGlzLkJhLmhhc093blByb3BlcnR5KGIpJiZfLkFuKGEpfSx0aGlzKTt0aGlzLkJhPXt9fTtfLmFlLnByb3RvdHlwZS5xYz1mdW5jdGlvbigpe18uYWUuUmQucWMuY2FsbCh0aGlzKTt0aGlzLnJlbW92ZUFsbCgpfTsKXy5hZS5wcm90b3R5cGUuaGFuZGxlRXZlbnQ9ZnVuY3Rpb24oKXt0aHJvdyBFcnJvcigibmEiKTt9O18uVWkoXy5iZSxfLkVkKTtfLmJlLnByb3RvdHlwZVtfLkFJYV09ITA7Xy5hYT1fLmJlLnByb3RvdHlwZTtfLmFhLm13YT1mdW5jdGlvbigpe3JldHVybiB0aGlzLkR6Yn07Xy5hYS53X2E9ZnVuY3Rpb24oYSl7dGhpcy5EemI9YX07Xy5hYS5hZGRFdmVudExpc3RlbmVyPWZ1bmN0aW9uKGEsYixjLGQpe18uaGUodGhpcyxhLGIsYyxkKX07Xy5hYS5yZW1vdmVFdmVudExpc3RlbmVyPWZ1bmN0aW9uKGEsYixjLGQpe18uem4odGhpcyxhLGIsYyxkKX07Cl8uYWEuZGlzcGF0Y2hFdmVudD1mdW5jdGlvbihhKXt2YXIgYixjPXRoaXMubXdhKCk7aWYoYylmb3IoYj1bXTtjO2M9Yy5td2EoKSliLnB1c2goYyk7Yz10aGlzLmtsYzt2YXIgZD1hLnR5cGV8fGE7aWYodHlwZW9mIGE9PT0ic3RyaW5nIilhPW5ldyBfLlpkKGEsYyk7ZWxzZSBpZihhIGluc3RhbmNlb2YgXy5aZClhLnRhcmdldD1hLnRhcmdldHx8YztlbHNle3ZhciBlPWE7YT1uZXcgXy5aZChkLGMpO18ud2phKGEsZSl9ZT0hMDt2YXIgZjtpZihiKWZvcihmPWIubGVuZ3RoLTE7IWEub2EmJmY+PTA7Zi0tKXt2YXIgZz1hLmN1cnJlbnRUYXJnZXQ9YltmXTtlPWcuREZhKGQsITAsYSkmJmV9YS5vYXx8KGc9YS5jdXJyZW50VGFyZ2V0PWMsZT1nLkRGYShkLCEwLGEpJiZlLGEub2F8fChlPWcuREZhKGQsITEsYSkmJmUpKTtpZihiKWZvcihmPTA7IWEub2EmJmY8Yi5sZW5ndGg7ZisrKWc9YS5jdXJyZW50VGFyZ2V0PWJbZl0sZT1nLkRGYShkLCExLGEpJiZlO3JldHVybiBlfTsKXy5hYS5xYz1mdW5jdGlvbigpe18uYmUuUmQucWMuY2FsbCh0aGlzKTt0aGlzLnJlbW92ZUFsbExpc3RlbmVycygpO3RoaXMuRHpiPW51bGx9O18uYWEubGlzdGVuPWZ1bmN0aW9uKGEsYixjLGQpe3JldHVybiB0aGlzLnJjYS5hZGQoU3RyaW5nKGEpLGIsITEsYyxkKX07Xy5hYS5saXN0ZW5PbmNlPWZ1bmN0aW9uKGEsYixjLGQpe3JldHVybiB0aGlzLnJjYS5hZGQoU3RyaW5nKGEpLGIsITAsYyxkKX07Xy5hYS51bmxpc3Rlbj1mdW5jdGlvbihhLGIsYyxkKXtyZXR1cm4gdGhpcy5yY2EucmVtb3ZlKFN0cmluZyhhKSxiLGMsZCl9O18uYWEudm89ZnVuY3Rpb24oYSl7cmV0dXJuIEVJYSh0aGlzLnJjYSxhKX07Xy5hYS5yZW1vdmVBbGxMaXN0ZW5lcnM9ZnVuY3Rpb24oYSl7cmV0dXJuIHRoaXMucmNhP3RoaXMucmNhLnJlbW92ZUFsbChhKTowfTsKXy5hYS5ERmE9ZnVuY3Rpb24oYSxiLGMpe2E9dGhpcy5yY2EuVGRbU3RyaW5nKGEpXTtpZighYSlyZXR1cm4hMDthPWEuY29uY2F0KCk7dmFyIGQ9ITA7Zm9yKGxldCBlPTA7ZTxhLmxlbmd0aDsrK2Upe2xldCBmPWFbZV07aWYoZiYmIWYucmVtb3ZlZCYmZi5jYXB0dXJlPT1iKXtsZXQgZz1mLmxpc3RlbmVyLGg9Zi5oYW5kbGVyfHxmLnNyYztmLk0wJiZ0aGlzLnZvKGYpO2Q9Zy5jYWxsKGgsYykhPT0hMSYmZH19cmV0dXJuIGQmJiFjLmRlZmF1bHRQcmV2ZW50ZWR9O18uYWEuaHdhPWZ1bmN0aW9uKGEsYil7cmV0dXJuIHRoaXMucmNhLmh3YShTdHJpbmcoYSksYil9O18uYWEuZ3dhPWZ1bmN0aW9uKGEsYixjLGQpe3JldHVybiB0aGlzLnJjYS5nd2EoU3RyaW5nKGEpLGIsYyxkKX07Xy5hYS5oYXNMaXN0ZW5lcj1mdW5jdGlvbihhLGIpe3JldHVybiB0aGlzLnJjYS5oYXNMaXN0ZW5lcihhIT09dm9pZCAwP1N0cmluZyhhKTp2b2lkIDAsYil9O18ucWxhPWZ1bmN0aW9uKCl7aWYoXy5hQ2Epe3ZhciBhPS9XaW5kb3dzIE5UIChbMC05Ll0rKS87cmV0dXJuKGE9YS5leGVjKF8ub2EoKSkpP2FbMV06IjAifXJldHVybiBfLmFqPyhhPS8xWzB8MV1bXy5dWzAtOV8uXSsvLChhPWEuZXhlYyhfLm9hKCkpKT9hWzBdLnJlcGxhY2UoL18vZywiLiIpOiIxMCIpOl8uY0NhPyhhPS9BbmRyb2lkXHMrKFteXCk7XSspKFwpfDspLywoYT1hLmV4ZWMoXy5vYSgpKSk/YVsxXToiIik6Xy5kQ2F8fF8uZUNhfHxmQ2E/KGE9Lyg/OmlQaG9uZXxDUFUpXHMrT1NccysoXFMrKS8sKGE9YS5leGVjKF8ub2EoKSkpP2FbMV0ucmVwbGFjZSgvXy9nLCIuIik6IiIpOiIifSgpO18uZ2UuSHFjPWZ1bmN0aW9uKCl7aWYoXy5nZS5RZmEpcmV0dXJuIF8uZ2UuakdhKC9GaXJlZm94XC8oWzAtOS5dKykvKTtpZihfLmdlLlJDYXx8Xy5nZS5HTmF8fF8uZ2UubE9hKXJldHVybiBfLmlDYTtpZihfLmdlLkNIUk9NRSl7aWYoXy5zYSgpfHxfLk9hYSgpKXt2YXIgYT1fLmdlLmpHYSgvQ3JpT1NcLyhbMC05Ll0rKS8pO2lmKGEpcmV0dXJuIGF9cmV0dXJuIF8uZ2UuakdhKC9DaHJvbWVcLyhbMC05Ll0rKS8pfWlmKF8uZ2UuanRhJiYhXy5zYSgpKXJldHVybiBfLmdlLmpHYSgvVmVyc2lvblwvKFswLTkuXSspLyk7aWYoXy5nZS5UQ2F8fF8uZ2UuUU5hKXtpZihhPV8uZ2UuUFJiKC9WZXJzaW9uXC8oXFMrKS4qTW9iaWxlXC8oXFMrKS8pKXJldHVybiBhWzFdKyIuIithWzJdfWVsc2UgaWYoXy5nZS5BTkRST0lEKXJldHVybihhPV8uZ2UuakdhKC9BbmRyb2lkXHMrKFswLTkuXSspLykpP2E6Xy5nZS5qR2EoL1ZlcnNpb25cLyhbMC05Ll0rKS8pO3JldHVybiIifTsKXy5nZS5qR2E9ZnVuY3Rpb24oYSl7cmV0dXJuKGE9Xy5nZS5QUmIoYSkpP2FbMV06IiJ9O18uZ2UuUFJiPWZ1bmN0aW9uKGEpe3JldHVybiBhLmV4ZWMoXy5vYSgpKX07Xy5nZS5WRVJTSU9OPV8uZ2UuSHFjKCk7Xy5nZS53VmE9ZnVuY3Rpb24oYSl7cmV0dXJuIF8ubmEoXy5nZS5WRVJTSU9OLGEpPj0wfTt2YXIgVklhPWZ1bmN0aW9uKGEsYixjKXtfLmJlLmNhbGwodGhpcyk7dGhpcy50YXJnZXQ9YTt0aGlzLmhhbmRsZT1ifHxhO3RoaXMuQmE9Y3x8bmV3IF8uUmQoTmFOLE5hTixOYU4sTmFOKTt0aGlzLndhPV8uV2QoYSk7dGhpcy5rYT1uZXcgXy5hZSh0aGlzKTtfLkRpKHRoaXMsdGhpcy5rYSk7dGhpcy5kZWx0YVk9dGhpcy5kZWx0YVg9dGhpcy5zdGFydFk9dGhpcy5zdGFydFg9dGhpcy5zY3JlZW5ZPXRoaXMuc2NyZWVuWD10aGlzLmNsaWVudFk9dGhpcy5jbGllbnRYPTA7dGhpcy5BYT0hMDt0aGlzLm9hPSExO18uaGUodGhpcy5oYW5kbGUsWyJ0b3VjaHN0YXJ0IiwibW91c2Vkb3duIl0sdGhpcy51OWIsITEsdGhpcyk7dGhpcy5FYT1VSWF9O18uVWkoVklhLF8uYmUpO3ZhciBVSWE9Xy5lYS5kb2N1bWVudCYmXy5lYS5kb2N1bWVudC5kb2N1bWVudEVsZW1lbnQmJiEhXy5lYS5kb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuc2V0Q2FwdHVyZSYmISFfLmVhLmRvY3VtZW50LnJlbGVhc2VDYXB0dXJlOwpfLmFhPVZJYS5wcm90b3R5cGU7Xy5hYS5obT1mdW5jdGlvbigpe3JldHVybiB0aGlzLkFhfTtfLmFhLnNldEVuYWJsZWQ9ZnVuY3Rpb24oYSl7dGhpcy5BYT1hfTtfLmFhLnFjPWZ1bmN0aW9uKCl7VklhLlJkLnFjLmNhbGwodGhpcyk7Xy56bih0aGlzLmhhbmRsZSxbInRvdWNoc3RhcnQiLCJtb3VzZWRvd24iXSx0aGlzLnU5YiwhMSx0aGlzKTt0aGlzLmthLnJlbW92ZUFsbCgpO3RoaXMuRWEmJnRoaXMud2EucmVsZWFzZUNhcHR1cmUoKTt0aGlzLmhhbmRsZT10aGlzLnRhcmdldD1udWxsfTsKXy5hYS51OWI9ZnVuY3Rpb24oYSl7dmFyIGI9YS50eXBlPT0ibW91c2Vkb3duIjtpZighdGhpcy5BYXx8dGhpcy5vYXx8YiYmIWEuZXBhKCkpdGhpcy5kaXNwYXRjaEV2ZW50KCJlYXJseWNhbmNlbCIpO2Vsc2UgaWYodGhpcy5kaXNwYXRjaEV2ZW50KG5ldyBXSWEoInN0YXJ0Iix0aGlzLGEuY2xpZW50WCxhLmNsaWVudFksYSkpKXt0aGlzLm9hPSEwO2ImJmEucHJldmVudERlZmF1bHQoKTtiPXRoaXMud2E7dmFyIGM9Yi5kb2N1bWVudEVsZW1lbnQsZD0hdGhpcy5FYTt0aGlzLmthLmxpc3RlbihiLFsidG91Y2htb3ZlIiwibW91c2Vtb3ZlIl0sdGhpcy51eGMse2NhcHR1cmU6ZCxwYXNzaXZlOiExfSk7dGhpcy5rYS5saXN0ZW4oYixbInRvdWNoZW5kIiwibW91c2V1cCJdLHRoaXMuWjVhLGQpO3RoaXMuRWE/KGMuc2V0Q2FwdHVyZSghMSksdGhpcy5rYS5saXN0ZW4oYywibG9zZWNhcHR1cmUiLHRoaXMuWjVhKSk6dGhpcy5rYS5saXN0ZW4oXy5oaShiKSwiYmx1ciIsdGhpcy5aNWEpOwp0aGlzLkthJiZ0aGlzLmthLmxpc3Rlbih0aGlzLkthLCJzY3JvbGwiLHRoaXMuSWEsZCk7dGhpcy5jbGllbnRYPXRoaXMuc3RhcnRYPWEuY2xpZW50WDt0aGlzLmNsaWVudFk9dGhpcy5zdGFydFk9YS5jbGllbnRZO3RoaXMuc2NyZWVuWD1hLnNjcmVlblg7dGhpcy5zY3JlZW5ZPWEuc2NyZWVuWTt0aGlzLmRlbHRhWD10aGlzLnRhcmdldC5vZmZzZXRMZWZ0O3RoaXMuZGVsdGFZPXRoaXMudGFyZ2V0Lm9mZnNldFRvcDt0aGlzLkdhPV8uVUhhKF8ub2UodGhpcy53YSkpfX07Xy5hYS5aNWE9ZnVuY3Rpb24oYSxiKXt0aGlzLmthLnJlbW92ZUFsbCgpO3RoaXMuRWEmJnRoaXMud2EucmVsZWFzZUNhcHR1cmUoKTt0aGlzLm9hPyh0aGlzLm9hPSExLHRoaXMuZGlzcGF0Y2hFdmVudChuZXcgV0lhKCJlbmQiLHRoaXMsYS5jbGllbnRYLGEuY2xpZW50WSxhLFhJYSh0aGlzLHRoaXMuZGVsdGFYKSxZSWEodGhpcyx0aGlzLmRlbHRhWSksYnx8YS50eXBlPT0idG91Y2hjYW5jZWwiKSkpOnRoaXMuZGlzcGF0Y2hFdmVudCgiZWFybHljYW5jZWwiKX07Cl8uYWEudXhjPWZ1bmN0aW9uKGEpe2lmKHRoaXMuQWEpe3ZhciBiPWEuY2xpZW50WC10aGlzLmNsaWVudFgsYz1hLmNsaWVudFktdGhpcy5jbGllbnRZO3RoaXMuY2xpZW50WD1hLmNsaWVudFg7dGhpcy5jbGllbnRZPWEuY2xpZW50WTt0aGlzLnNjcmVlblg9YS5zY3JlZW5YO3RoaXMuc2NyZWVuWT1hLnNjcmVlblk7aWYoIXRoaXMub2Epe2xldCBkPXRoaXMuc3RhcnRYLXRoaXMuY2xpZW50WCxlPXRoaXMuc3RhcnRZLXRoaXMuY2xpZW50WTtpZihkKmQrZSplPjApaWYodGhpcy5kaXNwYXRjaEV2ZW50KG5ldyBXSWEoInN0YXJ0Iix0aGlzLGEuY2xpZW50WCxhLmNsaWVudFksYSkpKXRoaXMub2E9ITA7ZWxzZXt0aGlzLmlzRGlzcG9zZWQoKXx8dGhpcy5aNWEoYSk7cmV0dXJufX1jPVpJYSh0aGlzLGIsYyk7Yj1jLng7Yz1jLnk7dGhpcy5vYSYmdGhpcy5kaXNwYXRjaEV2ZW50KG5ldyBXSWEoImJlZm9yZWRyYWciLHRoaXMsYS5jbGllbnRYLGEuY2xpZW50WSxhLGIsYykpJiYoJElhKHRoaXMsCmEsYixjKSxhLnByZXZlbnREZWZhdWx0KCkpfX07dmFyIFpJYT1mdW5jdGlvbihhLGIsYyl7dmFyIGQ9Xy5VSGEoXy5vZShhLndhKSk7Yis9ZC54LWEuR2EueDtjKz1kLnktYS5HYS55O2EuR2E9ZDthLmRlbHRhWCs9YjthLmRlbHRhWSs9YztyZXR1cm4gbmV3IF8uS2QoWElhKGEsYS5kZWx0YVgpLFlJYShhLGEuZGVsdGFZKSl9O1ZJYS5wcm90b3R5cGUuSWE9ZnVuY3Rpb24oYSl7dmFyIGI9WklhKHRoaXMsMCwwKTthLmNsaWVudFg9dGhpcy5jbGllbnRYO2EuY2xpZW50WT10aGlzLmNsaWVudFk7JElhKHRoaXMsYSxiLngsYi55KX07CnZhciAkSWE9ZnVuY3Rpb24oYSxiLGMsZCl7YS50YXJnZXQuc3R5bGUubGVmdD1jKyJweCI7YS50YXJnZXQuc3R5bGUudG9wPWQrInB4IjthLmRpc3BhdGNoRXZlbnQobmV3IFdJYSgiZHJhZyIsYSxiLmNsaWVudFgsYi5jbGllbnRZLGIsYyxkKSl9LFhJYT1mdW5jdGlvbihhLGIpe3ZhciBjPWEuQmE7YT1pc05hTihjLmxlZnQpP251bGw6Yy5sZWZ0O2M9aXNOYU4oYy53aWR0aCk/MDpjLndpZHRoO3JldHVybiBNYXRoLm1pbihhIT1udWxsP2ErYzpJbmZpbml0eSxNYXRoLm1heChhIT1udWxsP2E6LUluZmluaXR5LGIpKX0sWUlhPWZ1bmN0aW9uKGEsYil7dmFyIGM9YS5CYTthPWlzTmFOKGMudG9wKT9udWxsOmMudG9wO2M9aXNOYU4oYy5oZWlnaHQpPzA6Yy5oZWlnaHQ7cmV0dXJuIE1hdGgubWluKGEhPW51bGw/YStjOkluZmluaXR5LE1hdGgubWF4KGEhPW51bGw/YTotSW5maW5pdHksYikpfTtWSWEucHJvdG90eXBlLk53PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMub2F9Owp2YXIgV0lhPWZ1bmN0aW9uKGEsYixjLGQsZSxmLGcpe18uWmQuY2FsbCh0aGlzLGEpO3RoaXMuY2xpZW50WD1jO3RoaXMuY2xpZW50WT1kO3RoaXMubGVmdD1mIT09dm9pZCAwP2Y6Yi5kZWx0YVg7dGhpcy50b3A9ZyE9PXZvaWQgMD9nOmIuZGVsdGFZfTtfLlVpKFdJYSxfLlpkKTt2YXIgYUphPWZ1bmN0aW9uKGEpe3RoaXMua2E9bmV3IE1hcDt2YXIgYj1hcmd1bWVudHMubGVuZ3RoO2lmKGI+MSl7aWYoYiUyKXRocm93IEVycm9yKCJZIik7Zm9yKGxldCBjPTA7YzxiO2MrPTIpdGhpcy5zZXQoYXJndW1lbnRzW2NdLGFyZ3VtZW50c1tjKzFdKX1lbHNlIGEmJnRoaXMuYWRkQWxsKGEpfTtfLmFhPWFKYS5wcm90b3R5cGU7Xy5hYS56aT1mdW5jdGlvbigpe3JldHVybiB0aGlzLmthLnNpemV9O18uYWEueXo9ZnVuY3Rpb24oKXtyZXR1cm4gQXJyYXkuZnJvbSh0aGlzLmthLnZhbHVlcygpKX07Xy5hYS5nZXRLZXlzPWZ1bmN0aW9uKCl7cmV0dXJuIEFycmF5LmZyb20odGhpcy5rYS5rZXlzKCkpfTtfLmFhLmVxdWFscz1mdW5jdGlvbihhLGI9KGMsZCk9PmM9PT1kKXtyZXR1cm4gdGhpcz09PWE/ITA6dGhpcy5rYS5zaXplIT1hLnppKCk/ITE6dGhpcy5nZXRLZXlzKCkuZXZlcnkoYz0+Yih0aGlzLmthLmdldChjKSxhLmdldChjKSkpfTsKXy5hYS5pc0VtcHR5PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMua2Euc2l6ZT09MH07Xy5hYS5jbGVhcj1mdW5jdGlvbigpe3RoaXMua2EuY2xlYXIoKX07Xy5hYS5yZW1vdmU9ZnVuY3Rpb24oYSl7cmV0dXJuIHRoaXMua2EuZGVsZXRlKGEpfTtfLmFhLmdldD1mdW5jdGlvbihhLGIpe3JldHVybiB0aGlzLmthLmhhcyhhKT90aGlzLmthLmdldChhKTpifTtfLmFhLnNldD1mdW5jdGlvbihhLGIpe3RoaXMua2Euc2V0KGEsYik7cmV0dXJuIHRoaXN9O18uYWEuYWRkQWxsPWZ1bmN0aW9uKGEpe2lmKGEgaW5zdGFuY2VvZiBhSmEpZm9yKGxldCBbYixjXW9mIGEua2EpdGhpcy5rYS5zZXQoYixjKTtlbHNlIGlmKGEpZm9yKGxldCBbYixjXW9mIE9iamVjdC5lbnRyaWVzKGEpKXRoaXMua2Euc2V0KGIsYyl9O18uYWEuZm9yRWFjaD1mdW5jdGlvbihhLGI9dGhpcyl7dGhpcy5rYS5mb3JFYWNoKChjLGQpPT5hLmNhbGwoYixjLGQsdGhpcykpfTtfLmFhLmNsb25lPWZ1bmN0aW9uKCl7cmV0dXJuIG5ldyBhSmEodGhpcyl9O3ZhciBzbGE9W1tdLFtdXSx0bGE9MCx1bGE9ITEscmxhPTA7dmFyIGJKYT1fLkxjYGFib3V0OmJsYW5rYDtfLnpjKGJKYSk7dmFyIGNKYT1fLkxjYGphdmFzY3JpcHQ6dW5kZWZpbmVkYDtfLnpjKGNKYSk7Xy5VaShfLnhsYSxfLmJlKTtfLnhsYS5wcm90b3R5cGUuaGFuZGxlRXZlbnQ9ZnVuY3Rpb24oYSl7dmFyIGI9bmV3IF8uJGQoYS5qZyk7Yi50eXBlPWEudHlwZT09ImZvY3VzaW4ifHxhLnR5cGU9PSJmb2N1cyI/ImZvY3VzaW4iOiJmb2N1c291dCI7dGhpcy5kaXNwYXRjaEV2ZW50KGIpfTtfLnhsYS5wcm90b3R5cGUucWM9ZnVuY3Rpb24oKXtfLnhsYS5SZC5xYy5jYWxsKHRoaXMpO18uQW4odGhpcy5rYSk7Xy5Bbih0aGlzLm9hKTtkZWxldGUgdGhpcy5RY307dmFyIERuPXR5cGVvZiBBc3luY0NvbnRleHQhPT0idW5kZWZpbmVkIiYmdHlwZW9mIEFzeW5jQ29udGV4dC5TbmFwc2hvdD09PSJmdW5jdGlvbiI/YT0+YSYmQXN5bmNDb250ZXh0LlNuYXBzaG90LndyYXAoYSk6YT0+YTt2YXIgZEphPWNsYXNze2NvbnN0cnVjdG9yKGEsYil7dGhpcy53YT1hO3RoaXMuQWE9Yjt0aGlzLm9hPTA7dGhpcy5rYT1udWxsfWdldCgpe2lmKHRoaXMub2E+MCl7dGhpcy5vYS0tO3ZhciBhPXRoaXMua2E7dGhpcy5rYT1hLm5leHQ7YS5uZXh0PW51bGx9ZWxzZSBhPXRoaXMud2EoKTtyZXR1cm4gYX1wdXQoYSl7dGhpcy5BYShhKTt0aGlzLm9hPDEwMCYmKHRoaXMub2ErKyxhLm5leHQ9dGhpcy5rYSx0aGlzLmthPWEpfX07Xy5qZS5oS2M9RG47Xy5qZS5RamM9ITE7Xy5qZS5Cd2M9ZnVuY3Rpb24oKXtpZih0eXBlb2YgTWVzc2FnZUNoYW5uZWwhPT0idW5kZWZpbmVkIil7bGV0IGE9bmV3IE1lc3NhZ2VDaGFubmVsLGI9e30sYz1iO2EucG9ydDEub25tZXNzYWdlPWZ1bmN0aW9uKCl7aWYoYi5uZXh0IT09dm9pZCAwKXtiPWIubmV4dDtsZXQgZD1iLmNiO2IuY2I9bnVsbDtkKCl9fTtyZXR1cm4gZnVuY3Rpb24oZCl7Yy5uZXh0PXtjYjpkfTtjPWMubmV4dDthLnBvcnQyLnBvc3RNZXNzYWdlKDApfX1yZXR1cm4gZnVuY3Rpb24oYSl7Xy5lYS5zZXRUaW1lb3V0KGEsMCl9fTtfLmplLnNVYz1hPT5hO3ZhciBlSmE9Y2xhc3N7Y29uc3RydWN0b3IoKXt0aGlzLm9hPXRoaXMua2E9bnVsbH1hZGQoYSxiKXt2YXIgYz16bGEuZ2V0KCk7Yy5zZXQoYSxiKTt0aGlzLm9hP3RoaXMub2EubmV4dD1jOnRoaXMua2E9Yzt0aGlzLm9hPWN9cmVtb3ZlKCl7dmFyIGE9bnVsbDt0aGlzLmthJiYoYT10aGlzLmthLHRoaXMua2E9dGhpcy5rYS5uZXh0LHRoaXMua2F8fCh0aGlzLm9hPW51bGwpLGEubmV4dD1udWxsKTtyZXR1cm4gYX19LHpsYT1uZXcgZEphKCgpPT5uZXcgZkphLGE9PmEucmVzZXQoKSksZkphPWNsYXNze2NvbnN0cnVjdG9yKCl7dGhpcy5uZXh0PXRoaXMuc2NvcGU9dGhpcy51Sz1udWxsfXNldChhLGIpe3RoaXMudUs9YTt0aGlzLnNjb3BlPWI7dGhpcy5uZXh0PW51bGx9cmVzZXQoKXt0aGlzLm5leHQ9dGhpcy5zY29wZT10aGlzLnVLPW51bGx9fTt2YXIgZ0phLEFsYSx5bGEsaEphO0FsYT0hMTt5bGE9bmV3IGVKYTtfLkVuPShhLGIpPT57Z0phfHxoSmEoKTtBbGF8fChnSmEoKSxBbGE9ITApO3lsYS5hZGQoYSxiKX07aEphPSgpPT57dmFyIGE9UHJvbWlzZS5yZXNvbHZlKHZvaWQgMCk7Z0phPSgpPT57YS50aGVuKEJsYSl9fTt2YXIgbEphO18uaUphPWZ1bmN0aW9uKCl7cmV0dXJuIG51bGx9O18uakphPWZ1bmN0aW9uKCl7fTtfLmtKYT1mdW5jdGlvbihhKXtyZXR1cm4gYX07bEphPWZ1bmN0aW9uKGEpe3ZhciBiPWFyZ3VtZW50cyxjPWIubGVuZ3RoO3JldHVybiBmdW5jdGlvbigpe2ZvcihsZXQgZT0wO2U8YztlKyspdmFyIGQ9YltlXS5hcHBseSh0aGlzLGFyZ3VtZW50cyk7cmV0dXJuIGR9fTtfLkZuPWZ1bmN0aW9uKGEpe3ZhciBiPSExLGM7cmV0dXJuIGZ1bmN0aW9uKCl7Ynx8KGM9YSgpLGI9ITApO3JldHVybiBjfX07Xy5tSmE9ZnVuY3Rpb24oYSl7dmFyIGI9YTtyZXR1cm4gZnVuY3Rpb24oKXtpZihiKXtsZXQgYz1iO2I9bnVsbDtjKCl9fX07Xy5Hbj1mdW5jdGlvbihhLGIsYyl7dmFyIGQ9MDtyZXR1cm4gZnVuY3Rpb24oZSl7Xy5lYS5jbGVhclRpbWVvdXQoZCk7dmFyIGY9YXJndW1lbnRzO2Q9Xy5lYS5zZXRUaW1lb3V0KGZ1bmN0aW9uKCl7YS5hcHBseShjLGYpfSxiKX19OwpfLkhuPWZ1bmN0aW9uKGEsYixjKXt2YXIgZD0wLGU9ITEsZj1bXSxnPWZ1bmN0aW9uKCl7ZD0wO2UmJihlPSExLGgoKSl9LGg9ZnVuY3Rpb24oKXtkPV8uZWEuc2V0VGltZW91dChnLGIpO3ZhciBrPWY7Zj1bXTthLmFwcGx5KGMsayl9O3JldHVybiBmdW5jdGlvbihrKXtmPWFyZ3VtZW50cztkP2U9ITA6aCgpfX07dmFyIG5KYT1mdW5jdGlvbihhKXtpZighYSlyZXR1cm4hMTt0cnl7cmV0dXJuISFhLiRnb29nX1RoZW5hYmxlfWNhdGNoKGIpe3JldHVybiExfX07dmFyIG9KYSxwSmEscUphLENKYSxGSmEsSkphLEhKYSxLSmE7Xy5TZz1mdW5jdGlvbihhLGIpe3RoaXMudmQ9MDt0aGlzLnJFPXZvaWQgMDt0aGlzLlhEYT10aGlzLkFtYT10aGlzLkpvPW51bGw7dGhpcy5uOGE9dGhpcy5Fb2I9ITE7aWYoYSE9Xy5qSmEpdHJ5e2xldCBjPXRoaXM7YS5jYWxsKGIsZnVuY3Rpb24oZCl7Yy5UUCgyLGQpfSxmdW5jdGlvbihkKXtjLlRQKDMsZCl9KX1jYXRjaChjKXt0aGlzLlRQKDMsYyl9fTtvSmE9ZnVuY3Rpb24oKXt0aGlzLm5leHQ9dGhpcy5jb250ZXh0PXRoaXMua2E9dGhpcy53YT10aGlzLndWPW51bGw7dGhpcy5vYT0hMX07b0phLnByb3RvdHlwZS5yZXNldD1mdW5jdGlvbigpe3RoaXMuY29udGV4dD10aGlzLmthPXRoaXMud2E9dGhpcy53Vj1udWxsO3RoaXMub2E9ITF9O3BKYT1uZXcgZEphKGZ1bmN0aW9uKCl7cmV0dXJuIG5ldyBvSmF9LGZ1bmN0aW9uKGEpe2EucmVzZXQoKX0pOwpxSmE9ZnVuY3Rpb24oYSxiLGMpe3ZhciBkPXBKYS5nZXQoKTtkLndhPWE7ZC5rYT1iO2QuY29udGV4dD1jO3JldHVybiBkfTtfLkRnPWZ1bmN0aW9uKGEpe2lmKGEgaW5zdGFuY2VvZiBfLlNnKXJldHVybiBhO3ZhciBiPW5ldyBfLlNnKF8uakphKTtiLlRQKDIsYSk7cmV0dXJuIGJ9O18uSGg9ZnVuY3Rpb24oYSl7cmV0dXJuIG5ldyBfLlNnKGZ1bmN0aW9uKGIsYyl7YyhhKX0pfTtfLnNKYT1mdW5jdGlvbihhLGIsYyl7ckphKGEsYixjLG51bGwpfHxfLkVuKF8uVGkoYixhKSl9O18uQ3hhPWZ1bmN0aW9uKGEpe3JldHVybiBuZXcgXy5TZyhmdW5jdGlvbihiLGMpe2EubGVuZ3RofHxiKHZvaWQgMCk7Zm9yKGxldCBlPTA7ZTxhLmxlbmd0aDtlKyspe3ZhciBkPWFbZV07Xy5zSmEoZCxiLGMpfX0pfTsKXy5JaD1mdW5jdGlvbihhKXtyZXR1cm4gbmV3IF8uU2coZnVuY3Rpb24oYixjKXt2YXIgZD1hLmxlbmd0aCxlPVtdO2lmKGQpe3ZhciBmPWZ1bmN0aW9uKGssbSl7ZC0tO2Vba109bTtkPT0wJiZiKGUpfSxnPWZ1bmN0aW9uKGspe2Moayl9O2ZvcihsZXQgaz0wO2s8YS5sZW5ndGg7aysrKXt2YXIgaD1hW2tdO18uc0phKGgsXy5UaShmLGspLGcpfX1lbHNlIGIoZSl9KX07Xy50SmE9ZnVuY3Rpb24oYSl7cmV0dXJuIG5ldyBfLlNnKGZ1bmN0aW9uKGIpe3ZhciBjPWEubGVuZ3RoLGQ9W107aWYoYyl7dmFyIGU9ZnVuY3Rpb24oZyxoLGspe2MtLTtkW2ddPWg/e0N2YzohMCx2YWx1ZTprfTp7Q3ZjOiExLHJlYXNvbjprfTtjPT0wJiZiKGQpfTtmb3IobGV0IGc9MDtnPGEubGVuZ3RoO2crKyl7dmFyIGY9YVtnXTtfLnNKYShmLF8uVGkoZSxnLCEwKSxfLlRpKGUsZywhMSkpfX1lbHNlIGIoZCl9KX07Cl8ubGY9ZnVuY3Rpb24oKXt2YXIgYSxiLGM9bmV3IF8uU2coZnVuY3Rpb24oZCxlKXthPWQ7Yj1lfSk7cmV0dXJuIG5ldyB1SmEoYyxhLGIpfTtfLlNnLnByb3RvdHlwZS50aGVuPWZ1bmN0aW9uKGEsYixjKXtyZXR1cm4gdkphKHRoaXMsRG4odHlwZW9mIGE9PT0iZnVuY3Rpb24iP2E6bnVsbCksRG4odHlwZW9mIGI9PT0iZnVuY3Rpb24iP2I6bnVsbCksYyl9O18uU2cucHJvdG90eXBlLiRnb29nX1RoZW5hYmxlPSEwO0NKYT1mdW5jdGlvbihhLGIsYyxkKXtCSmEoYSxxSmEoYnx8Xy5qSmEsY3x8bnVsbCxkKSl9O18ucmc9ZnVuY3Rpb24oYSxiLGMpe2I9RG4oYik7Yz1xSmEoYixiLGMpO2Mub2E9ITA7QkphKGEsYyk7cmV0dXJuIGF9O18uU2cucHJvdG90eXBlLmZpbmFsbHk9ZnVuY3Rpb24oYSl7YT1EbihhKTtyZXR1cm4gbmV3IF8uU2coKGIsYyk9PntDSmEodGhpcyxkPT57YSgpO2IoZCl9LGQ9PnthKCk7YyhkKX0pfSl9OwpfLlNnLnByb3RvdHlwZS5IeD1mdW5jdGlvbihhLGIpe3JldHVybiB2SmEodGhpcyxudWxsLERuKGEpLGIpfTtfLlNnLnByb3RvdHlwZS5jYXRjaD1fLlNnLnByb3RvdHlwZS5IeDtfLlNnLnByb3RvdHlwZS5jYW5jZWw9ZnVuY3Rpb24oYSl7aWYodGhpcy52ZD09MCl7bGV0IGI9bmV3IF8uV2UoYSk7Xy5FbihmdW5jdGlvbigpe0RKYSh0aGlzLGIpfSx0aGlzKX19Owp2YXIgREphPWZ1bmN0aW9uKGEsYil7aWYoYS52ZD09MClpZihhLkpvKXt2YXIgYz1hLkpvO2lmKGMuQW1hKXt2YXIgZD0wLGU9bnVsbCxmPW51bGw7Zm9yKGxldCBnPWMuQW1hO2cmJihnLm9hfHwoZCsrLGcud1Y9PWEmJihlPWcpLCEoZSYmZD4xKSkpO2c9Zy5uZXh0KWV8fChmPWcpO2UmJihjLnZkPT0wJiZkPT0xP0RKYShjLGIpOihmPyhkPWYsZC5uZXh0PT1jLlhEYSYmKGMuWERhPWQpLGQubmV4dD1kLm5leHQubmV4dCk6RUphKGMpLEZKYShjLGUsMyxiKSkpfWEuSm89bnVsbH1lbHNlIGEuVFAoMyxiKX0sQkphPWZ1bmN0aW9uKGEsYil7YS5BbWF8fGEudmQhPTImJmEudmQhPTN8fEdKYShhKTthLlhEYT9hLlhEYS5uZXh0PWI6YS5BbWE9YjthLlhEYT1ifSx2SmE9ZnVuY3Rpb24oYSxiLGMsZCl7dmFyIGU9cUphKG51bGwsbnVsbCxudWxsKTtlLndWPW5ldyBfLlNnKGZ1bmN0aW9uKGYsZyl7ZS53YT1iP2Z1bmN0aW9uKGgpe3RyeXtsZXQgaz1iLmNhbGwoZCxoKTtmKGspfWNhdGNoKGspe2coayl9fToKZjtlLmthPWM/ZnVuY3Rpb24oaCl7dHJ5e2xldCBrPWMuY2FsbChkLGgpO2s9PT12b2lkIDAmJmggaW5zdGFuY2VvZiBfLldlP2coaCk6ZihrKX1jYXRjaChrKXtnKGspfX06Z30pO2Uud1YuSm89YTtCSmEoYSxlKTtyZXR1cm4gZS53Vn07Xy5TZy5wcm90b3R5cGUuaFNjPWZ1bmN0aW9uKGEpe3RoaXMudmQ9MDt0aGlzLlRQKDIsYSl9O18uU2cucHJvdG90eXBlLmlTYz1mdW5jdGlvbihhKXt0aGlzLnZkPTA7dGhpcy5UUCgzLGEpfTtfLlNnLnByb3RvdHlwZS5UUD1mdW5jdGlvbihhLGIpe3RoaXMudmQ9PTAmJih0aGlzPT09YiYmKGE9MyxiPW5ldyBUeXBlRXJyb3IoIm9hIikpLHRoaXMudmQ9MSxySmEoYix0aGlzLmhTYyx0aGlzLmlTYyx0aGlzKXx8KHRoaXMuckU9Yix0aGlzLnZkPWEsdGhpcy5Kbz1udWxsLEdKYSh0aGlzKSxhIT0zfHxiIGluc3RhbmNlb2YgXy5XZXx8SEphKHRoaXMsYikpKX07CnZhciBySmE9ZnVuY3Rpb24oYSxiLGMsZCl7aWYoYSBpbnN0YW5jZW9mIF8uU2cpcmV0dXJuIENKYShhLGIsYyxkKSwhMDtpZihuSmEoYSkpcmV0dXJuIGEudGhlbihiLGMsZCksITA7aWYoXy5wZyhhKSl0cnl7bGV0IGU9YS50aGVuO2lmKHR5cGVvZiBlPT09ImZ1bmN0aW9uIilyZXR1cm4gSUphKGEsZSxiLGMsZCksITB9Y2F0Y2goZSl7cmV0dXJuIGMuY2FsbChkLGUpLCEwfXJldHVybiExfSxJSmE9ZnVuY3Rpb24oYSxiLGMsZCxlKXt2YXIgZj0hMSxnPWZ1bmN0aW9uKGspe2Z8fChmPSEwLGMuY2FsbChlLGspKX0saD1mdW5jdGlvbihrKXtmfHwoZj0hMCxkLmNhbGwoZSxrKSl9O3RyeXtiLmNhbGwoYSxnLGgpfWNhdGNoKGspe2goayl9fSxHSmE9ZnVuY3Rpb24oYSl7YS5Fb2J8fChhLkVvYj0hMCxfLkVuKGEubDZhLGEpKX0sRUphPWZ1bmN0aW9uKGEpe3ZhciBiPW51bGw7YS5BbWEmJihiPWEuQW1hLGEuQW1hPWIubmV4dCxiLm5leHQ9bnVsbCk7YS5BbWF8fChhLlhEYT1udWxsKTsKcmV0dXJuIGJ9O18uU2cucHJvdG90eXBlLmw2YT1mdW5jdGlvbigpe2Zvcih2YXIgYTthPUVKYSh0aGlzKTspRkphKHRoaXMsYSx0aGlzLnZkLHRoaXMuckUpO3RoaXMuRW9iPSExfTtGSmE9ZnVuY3Rpb24oYSxiLGMsZCl7aWYoYz09MyYmYi5rYSYmIWIub2EpZm9yKDthJiZhLm44YTthPWEuSm8pYS5uOGE9ITE7aWYoYi53ViliLndWLkpvPW51bGwsSkphKGIsYyxkKTtlbHNlIHRyeXtiLm9hP2Iud2EuY2FsbChiLmNvbnRleHQpOkpKYShiLGMsZCl9Y2F0Y2goZSl7S0phLmNhbGwobnVsbCxlKX1wSmEucHV0KGIpfTtKSmE9ZnVuY3Rpb24oYSxiLGMpe2I9PTI/YS53YS5jYWxsKGEuY29udGV4dCxjKTphLmthJiZhLmthLmNhbGwoYS5jb250ZXh0LGMpfTtISmE9ZnVuY3Rpb24oYSxiKXthLm44YT0hMDtfLkVuKGZ1bmN0aW9uKCl7YS5uOGEmJktKYS5jYWxsKG51bGwsYil9KX07S0phPV8uZmE7Xy5XZT1mdW5jdGlvbihhKXtfLmJhLmNhbGwodGhpcyxhKX07Xy5VaShfLldlLF8uYmEpOwpfLldlLnByb3RvdHlwZS5uYW1lPSJjYW5jZWwiO3ZhciB1SmE9ZnVuY3Rpb24oYSxiLGMpe3RoaXMucHJvbWlzZT1hO3RoaXMucmVzb2x2ZT1iO3RoaXMucmVqZWN0PWN9O18uVWkoXy5uZSxfLmJlKTtfLmFhPV8ubmUucHJvdG90eXBlO18uYWEuZW5hYmxlZD0hMTtfLmFhLkk3PW51bGw7Xy5hYS5zZXRJbnRlcnZhbD1mdW5jdGlvbihhKXt0aGlzLmthPWE7dGhpcy5JNyYmdGhpcy5lbmFibGVkPyh0aGlzLnN0b3AoKSx0aGlzLnN0YXJ0KCkpOnRoaXMuSTcmJnRoaXMuc3RvcCgpfTtfLmFhLlJRYz1mdW5jdGlvbigpe2lmKHRoaXMuZW5hYmxlZCl7bGV0IGE9Xy5rZSgpLXRoaXMuQWE7YT4wJiZhPHRoaXMua2EqLjg/dGhpcy5JNz10aGlzLm9hLnNldFRpbWVvdXQodGhpcy53YSx0aGlzLmthLWEpOih0aGlzLkk3JiYodGhpcy5vYS5jbGVhclRpbWVvdXQodGhpcy5JNyksdGhpcy5JNz1udWxsKSx0aGlzLmlRYigpLHRoaXMuZW5hYmxlZCYmKHRoaXMuc3RvcCgpLHRoaXMuc3RhcnQoKSkpfX07Xy5hYS5pUWI9ZnVuY3Rpb24oKXt0aGlzLmRpc3BhdGNoRXZlbnQoInRpY2siKX07Cl8uYWEuc3RhcnQ9ZnVuY3Rpb24oKXt0aGlzLmVuYWJsZWQ9ITA7dGhpcy5JN3x8KHRoaXMuSTc9dGhpcy5vYS5zZXRUaW1lb3V0KHRoaXMud2EsdGhpcy5rYSksdGhpcy5BYT1fLmtlKCkpfTtfLmFhLnN0b3A9ZnVuY3Rpb24oKXt0aGlzLmVuYWJsZWQ9ITE7dGhpcy5JNyYmKHRoaXMub2EuY2xlYXJUaW1lb3V0KHRoaXMuSTcpLHRoaXMuSTc9bnVsbCl9O18uYWEucWM9ZnVuY3Rpb24oKXtfLm5lLlJkLnFjLmNhbGwodGhpcyk7dGhpcy5zdG9wKCk7ZGVsZXRlIHRoaXMub2F9O18uSW49ZnVuY3Rpb24oYSxiLGMpe2lmKHR5cGVvZiBhPT09ImZ1bmN0aW9uIiljJiYoYT0oMCxfLmllKShhLGMpKTtlbHNlIGlmKGEmJnR5cGVvZiBhLmhhbmRsZUV2ZW50PT0iZnVuY3Rpb24iKWE9KDAsXy5pZSkoYS5oYW5kbGVFdmVudCxhKTtlbHNlIHRocm93IEVycm9yKCJwYSIpO3JldHVybiBOdW1iZXIoYik+MjE0NzQ4MzY0Nz8tMTpfLmVhLnNldFRpbWVvdXQoYSxifHwwKX07Xy5Kbj1mdW5jdGlvbihhKXtfLmVhLmNsZWFyVGltZW91dChhKX07Cl8ub2k9ZnVuY3Rpb24oYSxiKXt2YXIgYz1udWxsO3JldHVybihuZXcgXy5TZyhmdW5jdGlvbihkLGUpe2M9Xy5JbihmdW5jdGlvbigpe2QoYil9LGEpO2M9PS0xJiZlKEVycm9yKCJxYSIpKX0pKS5IeChmdW5jdGlvbihkKXtfLkpuKGMpO3Rocm93IGQ7fSl9O18uU2koXy5DbGEpO18uQ2xhLnByb3RvdHlwZS5rYT0wO18uTEphPWZ1bmN0aW9uKGEpe3JldHVybiI6IisoYS5rYSsrKS50b1N0cmluZygzNil9O18uVWkoXy5wZSxfLmJlKTtfLnBlLnByb3RvdHlwZS5RTD1fLkNsYS5nZXRJbnN0YW5jZSgpO3ZhciBEbGE9bnVsbDtfLnBlLnByb3RvdHlwZS5nZXRJZD1mdW5jdGlvbigpe3JldHVybiB0aGlzLlNhfHwodGhpcy5TYT1fLkxKYSh0aGlzLlFMKSl9O18ucGUucHJvdG90eXBlLk1jPWZ1bmN0aW9uKGEpe3RoaXMuSm8mJnRoaXMuSm8uS2EmJihfLnJqYSh0aGlzLkpvLkthLHRoaXMuU2EpLF8uVmModGhpcy5Kby5LYSxhLHRoaXMpKTt0aGlzLlNhPWF9O18ucGUucHJvdG90eXBlLkphPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuUWN9O18uS249ZnVuY3Rpb24oYSl7YS5PYXx8KGEuT2E9bmV3IF8uYWUoYSkpO3JldHVybiBhLk9hfTtfLmFhPV8ucGUucHJvdG90eXBlOwpfLmFhLnNldFBhcmVudD1mdW5jdGlvbihhKXtpZih0aGlzPT1hKXRocm93IEVycm9yKCJzYSIpO2lmKGEmJnRoaXMuSm8mJnRoaXMuU2EmJnRoaXMuSm8uSGhhKHRoaXMuU2EpJiZ0aGlzLkpvIT1hKXRocm93IEVycm9yKCJzYSIpO3RoaXMuSm89YTtfLnBlLlJkLndfYS5jYWxsKHRoaXMsYSl9O18uYWEuZ2V0UGFyZW50PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuSm99O18uYWEud19hPWZ1bmN0aW9uKGEpe2lmKHRoaXMuSm8mJnRoaXMuSm8hPWEpdGhyb3cgRXJyb3IoInRhIik7Xy5wZS5SZC53X2EuY2FsbCh0aGlzLGEpfTtfLmFhLm9oPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMub2F9O18uYWEucXg9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5HYX07Xy5hYS5GQT1mdW5jdGlvbigpe3RoaXMuUWM9dGhpcy5vYS5jcmVhdGVFbGVtZW50KCJESVYiKX07Xy5hYS5yZW5kZXI9ZnVuY3Rpb24oYSl7TUphKHRoaXMsYSl9OwpfLmFhLkJjYj1mdW5jdGlvbihhKXtNSmEodGhpcyxhLnBhcmVudE5vZGUsYSl9O3ZhciBNSmE9ZnVuY3Rpb24oYSxiLGMpe2lmKGEuR2EpdGhyb3cgRXJyb3IoInVhIik7YS5RY3x8YS5GQSgpO2I/Yi5pbnNlcnRCZWZvcmUoYS5RYyxjfHxudWxsKTphLm9hLmdldERvY3VtZW50KCkuYm9keS5hcHBlbmRDaGlsZChhLlFjKTthLkpvJiYhYS5Kby5xeCgpfHxhLnF0KCl9O18uYWE9Xy5wZS5wcm90b3R5cGU7Xy5hYS5zdT1mdW5jdGlvbihhKXtpZih0aGlzLkdhKXRocm93IEVycm9yKCJ1YSIpO2lmKGEmJnRoaXMuUk5hKGEpKXt0aGlzLkJlPSEwO2xldCBiPV8uV2QoYSk7dGhpcy5vYSYmdGhpcy5vYS5nZXREb2N1bWVudCgpPT1ifHwodGhpcy5vYT1fLm9lKGEpKTt0aGlzLmpNKGEpO3RoaXMucXQoKX1lbHNlIHRocm93IEVycm9yKCJ2YSIpO307Xy5hYS5STmE9ZnVuY3Rpb24oKXtyZXR1cm4hMH07Xy5hYS5qTT1mdW5jdGlvbihhKXt0aGlzLlFjPWF9OwpfLmFhLnF0PWZ1bmN0aW9uKCl7dGhpcy5HYT0hMDtfLk5KYSh0aGlzLGZ1bmN0aW9uKGEpeyFhLnF4KCkmJmEuSmEoKSYmYS5xdCgpfSl9O18uYWEuYUY9ZnVuY3Rpb24oKXtfLk5KYSh0aGlzLGZ1bmN0aW9uKGEpe2EucXgoKSYmYS5hRigpfSk7dGhpcy5PYSYmdGhpcy5PYS5yZW1vdmVBbGwoKTt0aGlzLkdhPSExfTtfLmFhLnFjPWZ1bmN0aW9uKCl7dGhpcy5HYSYmdGhpcy5hRigpO3RoaXMuT2EmJih0aGlzLk9hLmRpc3Bvc2UoKSxkZWxldGUgdGhpcy5PYSk7Xy5OSmEodGhpcyxmdW5jdGlvbihhKXthLmRpc3Bvc2UoKX0pOyF0aGlzLkJlJiZ0aGlzLlFjJiZfLlltKHRoaXMuUWMpO3RoaXMuSm89dGhpcy5PYj10aGlzLlFjPXRoaXMuS2E9dGhpcy5CYT1udWxsO18ucGUuUmQucWMuY2FsbCh0aGlzKX07Xy5hYS51bj1mdW5jdGlvbigpe3JldHVybiB0aGlzLk9ifTtfLmFhLldsYT1mdW5jdGlvbihhLGIpe3RoaXMuY2piKGEsXy5PSmEodGhpcyksYil9OwpfLmFhLmNqYj1mdW5jdGlvbihhLGIsYyl7aWYoYS5HYSYmKGN8fCF0aGlzLkdhKSl0aHJvdyBFcnJvcigidWEiKTtpZihiPDB8fGI+Xy5PSmEodGhpcykpdGhyb3cgRXJyb3IoIndhIik7dGhpcy5LYSYmdGhpcy5CYXx8KHRoaXMuS2E9e30sdGhpcy5CYT1bXSk7aWYoYS5nZXRQYXJlbnQoKT09dGhpcyl7dmFyIGQ9dGhpcy5LYSxlPWEuZ2V0SWQoKTtkW2VdPWE7Xy5EYSh0aGlzLkJhLGEpfWVsc2UgXy5WYyh0aGlzLkthLGEuZ2V0SWQoKSxhKTthLnNldFBhcmVudCh0aGlzKTtfLllhYSh0aGlzLkJhLGIsMCxhKTthLkdhJiZ0aGlzLkdhJiZhLmdldFBhcmVudCgpPT10aGlzPyhjPXRoaXMuY0ooKSwoYy5jaGlsZE5vZGVzW2JdfHxudWxsKSE9YS5KYSgpJiYoYS5KYSgpLnBhcmVudEVsZW1lbnQ9PWMmJmMucmVtb3ZlQ2hpbGQoYS5KYSgpKSxiPWMuY2hpbGROb2Rlc1tiXXx8bnVsbCxjLmluc2VydEJlZm9yZShhLkphKCksYikpKTpjPyh0aGlzLlFjfHx0aGlzLkZBKCksYj1fLlBKYSh0aGlzLApiKzEpLE1KYShhLHRoaXMuY0ooKSxiP2IuUWM6bnVsbCkpOnRoaXMuR2EmJiFhLkdhJiZhLlFjJiZhLlFjLnBhcmVudE5vZGUmJmEuUWMucGFyZW50Tm9kZS5ub2RlVHlwZT09MSYmYS5xdCgpfTtfLmFhLmNKPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuUWN9O18uYWEuWUdhPWZ1bmN0aW9uKCl7cmV0dXJuISF0aGlzLkJhJiZ0aGlzLkJhLmxlbmd0aCE9MH07Xy5PSmE9ZnVuY3Rpb24oYSl7cmV0dXJuIGEuQmE/YS5CYS5sZW5ndGg6MH07Xy5wZS5wcm90b3R5cGUuSGhhPWZ1bmN0aW9uKGEpe3JldHVybiB0aGlzLkthJiZhP18uc2phKHRoaXMuS2EsYSl8fG51bGw6bnVsbH07Xy5QSmE9ZnVuY3Rpb24oYSxiKXtyZXR1cm4gYS5CYT9hLkJhW2JdfHxudWxsOm51bGx9O18uTkphPWZ1bmN0aW9uKGEsYixjKXthLkJhJiZhLkJhLmZvckVhY2goYixjKX07Cl8ucGUucHJvdG90eXBlLnJlbW92ZUNoaWxkPWZ1bmN0aW9uKGEsYil7aWYoYSl7bGV0IGM9dHlwZW9mIGE9PT0ic3RyaW5nIj9hOmEuZ2V0SWQoKTthPXRoaXMuSGhhKGMpO2MmJmEmJihfLnJqYSh0aGlzLkthLGMpLF8uRGEodGhpcy5CYSxhKSxiJiYoYS5hRigpLGEuUWMmJl8uWW0oYS5RYykpLGEuc2V0UGFyZW50KG51bGwpKX1pZighYSl0aHJvdyBFcnJvcigieGEiKTtyZXR1cm4gYX07dmFyIFFKYSxSSmE7Xy5VaShfLnFlLF8ucGUpO18uYWE9Xy5xZS5wcm90b3R5cGU7Xy5hYS5saGI9bnVsbDtfLmFhLnkyYT0hMTtfLmFhLkwwPW51bGw7Xy5hYS5YUz1udWxsO18uYWEuUGFhPW51bGw7Xy5hYS5wa2I9ITE7Xy5hYS5UTmE9ZnVuY3Rpb24oKXtyZXR1cm4iZ29vZy1tb2RhbHBvcHVwIn07Xy5hYS5aOD1mdW5jdGlvbigpe3JldHVybiB0aGlzLkwwfTtfLmFhLkZBPWZ1bmN0aW9uKCl7Xy5xZS5SZC5GQS5jYWxsKHRoaXMpO3ZhciBhPXRoaXMuSmEoKSxiPV8ubWEodGhpcy5UTmEoKSkuc3BsaXQoIiAiKTtfLnptKGEsYik7Xy5hbihhLCEwKTtfLnZuKGEsITEpO1FKYSh0aGlzKTtSSmEodGhpcyl9OwpRSmE9ZnVuY3Rpb24oYSl7aWYoYS5DYyYmIWEuWFMpe2xldCBiPWEub2goKS5abCgiSUZSQU1FIix7ZnJhbWVib3JkZXI6MCxzdHlsZToiYm9yZGVyOjA7dmVydGljYWwtYWxpZ246Ym90dG9tOyJ9KTtfLlpjKGIsYkphKTthLlhTPWI7YS5YUy5jbGFzc05hbWU9YS5UTmEoKSsiLWJnIjtfLnZuKGEuWFMsITEpO18udW4oYS5YUywwKX1hLkwwfHwoYS5MMD1hLm9oKCkuWmwoIkRJViIsYS5UTmEoKSsiLWJnIiksXy52bihhLkwwLCExKSl9O1JKYT1mdW5jdGlvbihhKXthLlBhYXx8KGEuUGFhPWEub2goKS5jcmVhdGVFbGVtZW50KCJTUEFOIiksXy52bihhLlBhYSwhMSksXy5hbihhLlBhYSwhMCksYS5QYWEuc3R5bGUucG9zaXRpb249ImFic29sdXRlIil9O18uU0phPWZ1bmN0aW9uKGEpe2EucGtiPSEwO3RyeXthLlBhYS5mb2N1cygpfWNhdGNoKGIpe31fLkluKGEudjViLDAsYSl9O18uYWE9Xy5xZS5wcm90b3R5cGU7Xy5hYS52NWI9ZnVuY3Rpb24oKXt0aGlzLnBrYj0hMX07Cl8uYWEuUk5hPWZ1bmN0aW9uKGEpe3JldHVybiEhYSYmYS50YWdOYW1lPT0iRElWIn07Xy5hYS5qTT1mdW5jdGlvbihhKXtfLnFlLlJkLmpNLmNhbGwodGhpcyxhKTthPV8ubWEodGhpcy5UTmEoKSkuc3BsaXQoIiAiKTtfLnptKHRoaXMuSmEoKSxhKTtRSmEodGhpcyk7UkphKHRoaXMpO18uYW4odGhpcy5KYSgpLCEwKTtfLnZuKHRoaXMuSmEoKSwhMSl9O18uYWEucXQ9ZnVuY3Rpb24oKXt0aGlzLlhTJiZfLlZtKHRoaXMuWFMsdGhpcy5KYSgpKTtfLlZtKHRoaXMuTDAsdGhpcy5KYSgpKTtfLnFlLlJkLnF0LmNhbGwodGhpcyk7Xy5XbSh0aGlzLlBhYSx0aGlzLkphKCkpO3RoaXMubGhiPW5ldyBfLnhsYSh0aGlzLm9oKCkuZ2V0RG9jdW1lbnQoKSk7Xy5Lbih0aGlzKS5saXN0ZW4odGhpcy5saGIsImZvY3VzaW4iLHRoaXMub25Gb2N1cyk7VEphKHRoaXMsITEpfTsKXy5hYS5hRj1mdW5jdGlvbigpe3RoaXMuaXNWaXNpYmxlKCkmJnRoaXMuc2V0VmlzaWJsZSghMSk7Xy5EZCh0aGlzLmxoYik7Xy5xZS5SZC5hRi5jYWxsKHRoaXMpO18uWW0odGhpcy5YUyk7Xy5ZbSh0aGlzLkwwKTtfLlltKHRoaXMuUGFhKX07Cl8uYWEuc2V0VmlzaWJsZT1mdW5jdGlvbihhKXtpZihhIT10aGlzLnkyYSlpZih0aGlzLk5hJiZ0aGlzLk5hLnN0b3AoKSx0aGlzLlJhJiZ0aGlzLlJhLnN0b3AoKSx0aGlzLklhJiZ0aGlzLklhLnN0b3AoKSx0aGlzLlBhJiZ0aGlzLlBhLnN0b3AoKSx0aGlzLnF4KCkmJlRKYSh0aGlzLGEpLGEpe2lmKHRoaXMuZGlzcGF0Y2hFdmVudCgiYmVmb3Jlc2hvdyIpKXt0cnl7dGhpcy5FYT10aGlzLm9oKCkuZ2V0RG9jdW1lbnQoKS5hY3RpdmVFbGVtZW50fWNhdGNoKGIpe310aGlzLlBiKCk7Xy5Lbih0aGlzKS5saXN0ZW4odGhpcy5vaCgpLmdldFdpbmRvdygpLCJyZXNpemUiLHRoaXMuT2NiKS5saXN0ZW4odGhpcy5vaCgpLmdldFdpbmRvdygpLCJvcmllbnRhdGlvbmNoYW5nZSIsdGhpcy5KYik7VUphKHRoaXMsITApO3RoaXMuZm9jdXMoKTt0aGlzLnkyYT0hMDtpZih0aGlzLk5hJiZ0aGlzLlJhKV8ueW4odGhpcy5OYSwiZW5kIix0aGlzLm9uU2hvdywhMSx0aGlzKSx0aGlzLlJhLnBsYXkoKSwKdGhpcy5OYS5wbGF5KCk7ZWxzZSB0aGlzLm9uU2hvdygpfX1lbHNlIGlmKHRoaXMuZGlzcGF0Y2hFdmVudCgiYmVmb3JlaGlkZSIpKXtfLktuKHRoaXMpLnVubGlzdGVuKHRoaXMub2goKS5nZXRXaW5kb3coKSwicmVzaXplIix0aGlzLk9jYikudW5saXN0ZW4odGhpcy5vaCgpLmdldFdpbmRvdygpLCJvcmllbnRhdGlvbmNoYW5nZSIsdGhpcy5KYik7dGhpcy55MmE9ITE7dGhpcy5JYSYmdGhpcy5QYT8oXy55bih0aGlzLklhLCJlbmQiLHRoaXMud0YsITEsdGhpcyksdGhpcy5QYS5wbGF5KCksdGhpcy5JYS5wbGF5KCkpOnRoaXMud0YoKTthOnt0cnl7bGV0IGI9dGhpcy5vaCgpLGM9Yi5nZXREb2N1bWVudCgpLmJvZHksZD1iLmdldERvY3VtZW50KCkuYWN0aXZlRWxlbWVudHx8YztpZighdGhpcy5FYXx8dGhpcy5FYT09Yyl7dGhpcy5FYT1udWxsO2JyZWFrIGF9KGQ9PWN8fGIuY29udGFpbnModGhpcy5KYSgpLGQpKSYmdGhpcy5FYS5mb2N1cygpfWNhdGNoKGIpe310aGlzLkVhPW51bGx9fX07CnZhciBUSmE9ZnVuY3Rpb24oYSxiKXthLkZifHwoYS5GYj1uZXcgRWxhKGEuUWMsYS5vYSkpO2E9YS5GYjtpZihiKXthLmthfHwoYS5rYT1bXSk7Yj1hLm9hLmdldENoaWxkcmVuKGEub2EuZ2V0RG9jdW1lbnQoKS5ib2R5KTtmb3IobGV0IGM9MDtjPGIubGVuZ3RoO2MrKyl7bGV0IGQ9YltjXTtkPT1hLlFjfHxfLlZkKGQsImhpZGRlbiIpfHwoXy5UZChkLCJoaWRkZW4iLCEwKSxhLmthLnB1c2goZCkpfX1lbHNlIGlmKGEua2Epe2ZvcihiPTA7YjxhLmthLmxlbmd0aDtiKyspXy5VZChhLmthW2JdLCJoaWRkZW4iKTthLmthPW51bGx9fTtfLnFlLnByb3RvdHlwZS5QYj1mdW5jdGlvbigpe3RoaXMuT2NiKCk7dGhpcy5yZXBvc2l0aW9uKCl9O3ZhciBVSmE9ZnVuY3Rpb24oYSxiKXthLlhTJiZfLnZuKGEuWFMsYik7YS5MMCYmXy52bihhLkwwLGIpO18udm4oYS5KYSgpLGIpO18udm4oYS5QYWEsYil9O18uYWE9Xy5xZS5wcm90b3R5cGU7Xy5hYS5vblNob3c9ZnVuY3Rpb24oKXt0aGlzLmRpc3BhdGNoRXZlbnQoInNob3ciKX07Cl8uYWEud0Y9ZnVuY3Rpb24oKXtVSmEodGhpcywhMSk7dGhpcy5kaXNwYXRjaEV2ZW50KCJoaWRlIil9O18uYWEuaXNWaXNpYmxlPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMueTJhfTtfLmFhLmZvY3VzPWZ1bmN0aW9uKCl7dGhpcy5DU2IoKX07Cl8uYWEuT2NiPWZ1bmN0aW9uKCl7dGhpcy5YUyYmXy52bih0aGlzLlhTLCExKTt0aGlzLkwwJiZfLnZuKHRoaXMuTDAsITEpO3ZhciBhPXRoaXMub2goKS5nZXREb2N1bWVudCgpO3ZhciBiPVZKYSh0aGlzKTt2YXIgYz1NYXRoLm1heChiLndpZHRoLE1hdGgubWF4KGEuYm9keS5zY3JvbGxXaWR0aCxhLmRvY3VtZW50RWxlbWVudC5zY3JvbGxXaWR0aCkpO2E9TWF0aC5tYXgoYi5oZWlnaHQsTWF0aC5tYXgoYS5ib2R5LnNjcm9sbEhlaWdodCxhLmRvY3VtZW50RWxlbWVudC5zY3JvbGxIZWlnaHQpKTt0aGlzLlhTJiYoXy52bih0aGlzLlhTLCEwKSxfLnFJYSh0aGlzLlhTLGMsYSkpO3RoaXMuTDAmJihfLnZuKHRoaXMuTDAsITApLF8ucUlhKHRoaXMuTDAsYyxhKSl9OwpfLmFhLnJlcG9zaXRpb249ZnVuY3Rpb24oKXt2YXIgYTtpZihfLm9sYSh0aGlzLkphKCkpPT0iZml4ZWQiKXZhciBiPWE9MDtlbHNlIGI9Xy5VSGEodGhpcy5vaCgpKSxhPWIueCxiPWIueTt2YXIgYz1fLnNuKHRoaXMuSmEoKSk7dmFyIGQ9VkphKHRoaXMpO2E9TWF0aC5tYXgoYStkLndpZHRoLzItYy53aWR0aC8yLDApO2I9TWF0aC5tYXgoYitkLmhlaWdodC8yLWMuaGVpZ2h0LzIsMCk7Xy5sbih0aGlzLkphKCksYSxiKTtfLmxuKHRoaXMuUGFhLGEsYil9O18uYWEub25Gb2N1cz1mdW5jdGlvbihhKXt0aGlzLnBrYj90aGlzLnY1YigpOmEudGFyZ2V0PT10aGlzLlBhYSYmXy5Jbih0aGlzLkNTYiwwLHRoaXMpfTtfLmFhLkNTYj1mdW5jdGlvbigpe3RyeXt0aGlzLkphKCkuZm9jdXMoKX1jYXRjaChhKXt9fTt2YXIgVkphPWZ1bmN0aW9uKGEpe2E9YS5vaCgpLmdldERvY3VtZW50KCk7cmV0dXJuIF8uZ2koXy5oaShhKXx8d2luZG93KX07Cl8ucWUucHJvdG90eXBlLnFjPWZ1bmN0aW9uKCl7Xy5EZCh0aGlzLk5hKTt0aGlzLk5hPW51bGw7Xy5EZCh0aGlzLklhKTt0aGlzLklhPW51bGw7Xy5EZCh0aGlzLlJhKTt0aGlzLlJhPW51bGw7Xy5EZCh0aGlzLlBhKTt0aGlzLlBhPW51bGw7Xy5xZS5SZC5xYy5jYWxsKHRoaXMpfTtfLlVpKF8uc2UsXy5xZSk7Xy5hYT1fLnNlLnByb3RvdHlwZTtfLmFhLkhJYj0hMDtfLmFhLk1UYT0hMDtfLmFhLkl4Yj0hMDtfLmFhLkdJYj0hMDtfLmFhLkkzYT0uNTtfLmFhLnoyYT0iIjtfLmFhLlNmYT1udWxsO18uYWEuaVk9bnVsbDtfLmFhLmgwPW51bGw7Xy5hYS5aMGE9bnVsbDtfLmFhLlpVPW51bGw7Xy5hYS5ac2E9bnVsbDtfLmFhLnFRPW51bGw7Xy5hYS5UTmE9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy53YX07Xy5hYS5zZXRUaXRsZT1mdW5jdGlvbihhKXt0aGlzLnoyYT1hO3RoaXMuaDAmJl8uJG0odGhpcy5oMCxhKX07Xy5hYS5nZXRUaXRsZT1mdW5jdGlvbigpe3JldHVybiB0aGlzLnoyYX07Xy5hYS5nZXRDb250ZW50PWZ1bmN0aW9uKCl7cmV0dXJuIiJ9O18uV0phPWZ1bmN0aW9uKGEpe2EuSmEoKXx8YS5yZW5kZXIoKX07Xy5zZS5wcm90b3R5cGUuY0o9ZnVuY3Rpb24oKXtfLldKYSh0aGlzKTtyZXR1cm4gdGhpcy5ac2F9OwpfLnNlLnByb3RvdHlwZS5aOD1mdW5jdGlvbigpe18uV0phKHRoaXMpO3JldHVybiBfLnNlLlJkLlo4LmNhbGwodGhpcyl9O18uWEphPWZ1bmN0aW9uKGEsYil7YS5JM2E9YjthLkphKCkmJihiPWEuWjgoKSkmJl8udW4oYixhLkkzYSl9O18uWUphPWZ1bmN0aW9uKGEsYil7YS5JeGI9YjtpZihhLnF4KCkpe2xldCBjPWEub2goKSxkPWEuWjgoKSxlPWEuWFM7Yj8oZSYmYy5sWGIoZSxhLkphKCkpLGMubFhiKGQsYS5KYSgpKSk6KGMucmVtb3ZlTm9kZShlKSxjLnJlbW92ZU5vZGUoZCkpfWEuaXNWaXNpYmxlKCkmJlRKYShhLGIpfTtfLnNlLnByb3RvdHlwZS52VGE9ZnVuY3Rpb24oKXt9OwpfLlpKYT1mdW5jdGlvbihhLGIpe3ZhciBjPV8ubWEoYS53YSsiLXRpdGxlLWRyYWdnYWJsZSIpLnNwbGl0KCIgIik7YS5KYSgpJiYoYj9fLnptKGEuaVksYyk6Xy5CbShhLmlZLGMpKTtiJiYhYS5TZmE/KGI9bmV3IFZJYShhLkphKCksYS5pWSksYS5TZmE9YixfLnptKGEuaVksYyksXy5oZShhLlNmYSwic3RhcnQiLGEuWk1jLCExLGEpLF8uaGUoYS5TZmEsImRyYWciLGEudlRhLCExLGEpKTohYiYmYS5TZmEmJihhLlNmYS5kaXNwb3NlKCksYS5TZmE9bnVsbCl9O18uYWE9Xy5zZS5wcm90b3R5cGU7Cl8uYWEuRkE9ZnVuY3Rpb24oKXtfLnNlLlJkLkZBLmNhbGwodGhpcyk7dmFyIGE9dGhpcy5KYSgpLGI9dGhpcy5vaCgpO3RoaXMuWjBhPXRoaXMuZ2V0SWQoKTt2YXIgYz10aGlzLmdldElkKCkrIi5jb250ZW50RWwiO3RoaXMuaVk9Yi5abCgiRElWIix0aGlzLndhKyItdGl0bGUiLHRoaXMuaDA9Yi5abCgiU1BBTiIse2NsYXNzTmFtZTp0aGlzLndhKyItdGl0bGUtdGV4dCIsaWQ6dGhpcy5aMGF9LHRoaXMuejJhKSx0aGlzLlpVPWIuWmwoIlNQQU4iLHRoaXMud2ErIi10aXRsZS1jbG9zZSIpKTtfLlRtKGEsdGhpcy5pWSx0aGlzLlpzYT1iLlpsKCJESVYiLHtjbGFzc05hbWU6dGhpcy53YSsiLWNvbnRlbnQiLGlkOmN9KSx0aGlzLnFRPWIuWmwoIkRJViIsdGhpcy53YSsiLWJ1dHRvbnMiKSk7Xy5TZCh0aGlzLmgwLCJoZWFkaW5nIik7Xy5TZCh0aGlzLlpVLCJidXR0b24iKTtfLmFuKHRoaXMuWlUsITApO18uaGxhKHRoaXMuWlUsIkx1a2siKTtfLlNkKGEsImRpYWxvZyIpO18uVGQoYSwKImxhYmVsbGVkYnkiLHRoaXMuWjBhfHwiIik7Xy52bih0aGlzLlpVLHRoaXMuTVRhKTt0aGlzLmthJiYoYT10aGlzLmthLGEuUWM9dGhpcy5xUSxhLnJlbmRlcigpKTtfLnZuKHRoaXMucVEsISF0aGlzLmthKTtfLlhKYSh0aGlzLHRoaXMuSTNhKX07Cl8uYWEuak09ZnVuY3Rpb24oYSl7Xy5zZS5SZC5qTS5jYWxsKHRoaXMsYSk7YT10aGlzLkphKCk7dmFyIGI9dGhpcy53YSsiLWNvbnRlbnQiO3RoaXMuWnNhPV8uTW0obnVsbCxiLGEpWzBdO3RoaXMuWnNhfHwodGhpcy5ac2E9dGhpcy5vaCgpLlpsKCJESVYiLGIpLGEuYXBwZW5kQ2hpbGQodGhpcy5ac2EpKTtiPXRoaXMud2ErIi10aXRsZSI7dmFyIGM9dGhpcy53YSsiLXRpdGxlLXRleHQiLGQ9dGhpcy53YSsiLXRpdGxlLWNsb3NlIjsodGhpcy5pWT1fLk1tKG51bGwsYixhKVswXSk/KHRoaXMuaDA9Xy5NbShudWxsLGMsdGhpcy5pWSlbMF0sdGhpcy5aVT1fLk1tKG51bGwsZCx0aGlzLmlZKVswXSk6KHRoaXMuaVk9dGhpcy5vaCgpLlpsKCJESVYiLGIpLGEuaW5zZXJ0QmVmb3JlKHRoaXMuaVksdGhpcy5ac2EpKTt0aGlzLmgwPyh0aGlzLnoyYT1fLmRuKHRoaXMuaDApLHRoaXMuaDAuaWR8fCh0aGlzLmgwLmlkPXRoaXMuZ2V0SWQoKSkpOih0aGlzLmgwPV8uUm0oIlNQQU4iLHtjbGFzc05hbWU6YywKaWQ6dGhpcy5nZXRJZCgpfSksdGhpcy5pWS5hcHBlbmRDaGlsZCh0aGlzLmgwKSk7dGhpcy5aMGE9dGhpcy5oMC5pZDtfLlRkKGEsImxhYmVsbGVkYnkiLHRoaXMuWjBhfHwiIik7dGhpcy5aVXx8KHRoaXMuWlU9dGhpcy5vaCgpLlpsKCJTUEFOIixkKSx0aGlzLmlZLmFwcGVuZENoaWxkKHRoaXMuWlUpKTtfLnZuKHRoaXMuWlUsdGhpcy5NVGEpO2I9dGhpcy53YSsiLWJ1dHRvbnMiOyh0aGlzLnFRPV8uTW0obnVsbCxiLGEpWzBdKT8odGhpcy5rYT1uZXcgRmxhKHRoaXMub2goKSksdGhpcy5rYS5zdSh0aGlzLnFRKSk6KHRoaXMucVE9dGhpcy5vaCgpLlpsKCJESVYiLGIpLGEuYXBwZW5kQ2hpbGQodGhpcy5xUSksdGhpcy5rYSYmKGE9dGhpcy5rYSxhLlFjPXRoaXMucVEsYS5yZW5kZXIoKSksXy52bih0aGlzLnFRLCEhdGhpcy5rYSkpO18uWEphKHRoaXMsdGhpcy5JM2EpfTsKXy5hYS5xdD1mdW5jdGlvbigpe18uc2UuUmQucXQuY2FsbCh0aGlzKTtfLktuKHRoaXMpLmxpc3Rlbih0aGlzLkphKCksImtleWRvd24iLHRoaXMucmIpLmxpc3Rlbih0aGlzLkphKCksImtleXByZXNzIix0aGlzLnJiKTtfLktuKHRoaXMpLmxpc3Rlbih0aGlzLnFRLCJjbGljayIsdGhpcy5YYik7Xy5aSmEodGhpcyx0aGlzLkdJYik7Xy5Lbih0aGlzKS5saXN0ZW4odGhpcy5aVSwiY2xpY2siLHRoaXMuRUhjKTt2YXIgYT10aGlzLkphKCk7Xy5TZChhLCJkaWFsb2ciKTt0aGlzLmgwLmlkIT09IiImJl8uVGQoYSwibGFiZWxsZWRieSIsdGhpcy5oMC5pZCk7dGhpcy5JeGJ8fF8uWUphKHRoaXMsITEpfTtfLmFhLmFGPWZ1bmN0aW9uKCl7dGhpcy5pc1Zpc2libGUoKSYmdGhpcy5zZXRWaXNpYmxlKCExKTtfLlpKYSh0aGlzLCExKTtfLnNlLlJkLmFGLmNhbGwodGhpcyl9OwpfLmFhLnNldFZpc2libGU9ZnVuY3Rpb24oYSl7YSE9dGhpcy5pc1Zpc2libGUoKSYmKHRoaXMucXgoKXx8dGhpcy5yZW5kZXIoKSxfLnNlLlJkLnNldFZpc2libGUuY2FsbCh0aGlzLGEpKX07Xy5hYS5vblNob3c9ZnVuY3Rpb24oKXtfLnNlLlJkLm9uU2hvdy5jYWxsKHRoaXMpO3RoaXMuZGlzcGF0Y2hFdmVudCgiYWZ0ZXJzaG93Iil9O18uYWEud0Y9ZnVuY3Rpb24oKXtfLnNlLlJkLndGLmNhbGwodGhpcyk7dGhpcy5kaXNwYXRjaEV2ZW50KCJhZnRlcmhpZGUiKX07Cl8uYWEuWk1jPWZ1bmN0aW9uKCl7dmFyIGE9dGhpcy5vaCgpLmdldERvY3VtZW50KCksYj1fLmdpKF8uaGkoYSl8fHdpbmRvdyksYz1NYXRoLm1heChhLmJvZHkuc2Nyb2xsV2lkdGgsYi53aWR0aCk7YT1NYXRoLm1heChhLmJvZHkuc2Nyb2xsSGVpZ2h0LGIuaGVpZ2h0KTt2YXIgZD1fLnNuKHRoaXMuSmEoKSk7Xy5vbGEodGhpcy5KYSgpKT09ImZpeGVkIj90aGlzLlNmYS5CYT1uZXcgXy5SZCgwLDAsTWF0aC5tYXgoMCxiLndpZHRoLWQud2lkdGgpLE1hdGgubWF4KDAsYi5oZWlnaHQtZC5oZWlnaHQpKTp0aGlzLlNmYS5CYT1uZXcgXy5SZCgwLDAsYy1kLndpZHRoLGEtZC5oZWlnaHQpfTtfLmFhLkVIYz1mdW5jdGlvbigpeyRKYSh0aGlzKX07dmFyICRKYT1mdW5jdGlvbihhKXtpZihhLk1UYSl7dmFyIGI9YS5rYSxjPWImJmIub2E7Yz8oYj1iLmdldChjKSxhLmRpc3BhdGNoRXZlbnQobmV3IGFLYShjLGIpKSYmYS5zZXRWaXNpYmxlKCExKSk6YS5zZXRWaXNpYmxlKCExKX19OwpfLnNlLnByb3RvdHlwZS5xYz1mdW5jdGlvbigpe3RoaXMucVE9dGhpcy5aVT1udWxsO18uc2UuUmQucWMuY2FsbCh0aGlzKX07Xy5iS2E9ZnVuY3Rpb24oYSl7YS5rYT1udWxsO2lmKGEucVEpe2lmKGEua2Epe3ZhciBiPWEua2E7Yi5RYz1hLnFRO2IucmVuZGVyKCl9ZWxzZSBfLmVkKGEucVEsXy4kbCk7Xy52bihhLnFRLCEhYS5rYSl9fTtfLnNlLnByb3RvdHlwZS5YYj1mdW5jdGlvbihhKXthOntmb3IoYT1hLnRhcmdldDthIT1udWxsJiZhIT10aGlzLnFROyl7aWYoYS50YWdOYW1lPT0iQlVUVE9OIilicmVhayBhO2E9YS5wYXJlbnROb2RlfWE9bnVsbH1pZihhJiYhYS5kaXNhYmxlZCl7YT1hLm5hbWU7bGV0IGI9dGhpcy5rYS5nZXQoYSk7dGhpcy5kaXNwYXRjaEV2ZW50KG5ldyBhS2EoYSxiKSkmJnRoaXMuc2V0VmlzaWJsZSghMSl9fTsKXy5zZS5wcm90b3R5cGUucmI9ZnVuY3Rpb24oYSl7dmFyIGI9ITEsYz0hMSxkPXRoaXMua2EsZT1hLnRhcmdldDtpZihhLnR5cGU9PSJrZXlkb3duIilpZih0aGlzLkhJYiYmYS5rZXlDb2RlPT0yNyl7dmFyIGY9ZCYmZC5vYTtlPWUudGFnTmFtZT09IlNFTEVDVCImJiFlLmRpc2FibGVkO2YmJiFlPyhjPSEwLGI9ZC5nZXQoZiksYj10aGlzLmRpc3BhdGNoRXZlbnQobmV3IGFLYShmLGIpKSk6ZXx8KGI9ITApfWVsc2UgYS5rZXlDb2RlPT05JiZhLnNoaWZ0S2V5JiZlPT10aGlzLkphKCkmJl8uU0phKHRoaXMpO2Vsc2UgaWYoYS5rZXlDb2RlPT0xMyl7aWYoZS50YWdOYW1lPT0iQlVUVE9OIiYmIWUuZGlzYWJsZWQpZj1lLm5hbWU7ZWxzZSBpZihlPT10aGlzLlpVKSRKYSh0aGlzKTtlbHNlIGlmKGQpe2xldCBoPWQuZ2V0RGVmYXVsdCgpO3ZhciBnO2lmKGc9aClhOntnPV8uS20oIkJVVFRPTiIsZC5RYyk7bGV0IGs7Zm9yKGxldCBtPTA7az1nW21dO20rKylpZihrLm5hbWU9PWh8fGsuaWQ9PQpoKXtnPWs7YnJlYWsgYX1nPW51bGx9ZT0oZS50YWdOYW1lPT0iVEVYVEFSRUEifHxlLnRhZ05hbWU9PSJTRUxFQ1QifHxlLnRhZ05hbWU9PSJBIikmJiFlLmRpc2FibGVkOyFnfHxnLmRpc2FibGVkfHxlfHwoZj1oKX1mJiZkJiYoYz0hMCxiPXRoaXMuZGlzcGF0Y2hFdmVudChuZXcgYUthKGYsU3RyaW5nKGQuZ2V0KGYpKSkpKX1lbHNlIGUhPXRoaXMuWlV8fGEua2V5Q29kZSE9MzImJmEua2V5IT0iICJ8fCRKYSh0aGlzKTtpZihifHxjKWEuc3RvcFByb3BhZ2F0aW9uKCksYS5wcmV2ZW50RGVmYXVsdCgpO2ImJnRoaXMuc2V0VmlzaWJsZSghMSl9O3ZhciBhS2E9ZnVuY3Rpb24oYSxiKXt0aGlzLnR5cGU9ImRpYWxvZ3NlbGVjdCI7dGhpcy5rZXk9YTt0aGlzLmNhcHRpb249Yn07Xy5VaShhS2EsXy5aZCk7dmFyIEZsYT1mdW5jdGlvbihhKXthSmEuY2FsbCh0aGlzKTt0aGlzLkFhPWF8fF8ub2UoKTt0aGlzLm9hPXRoaXMuUWM9dGhpcy53YT1udWxsfTtfLlVpKEZsYSxhSmEpOwpGbGEucHJvdG90eXBlLmNsZWFyPWZ1bmN0aW9uKCl7YUphLnByb3RvdHlwZS5jbGVhci5jYWxsKHRoaXMpO3RoaXMud2E9dGhpcy5vYT1udWxsfTtGbGEucHJvdG90eXBlLnNldD1mdW5jdGlvbihhLGIsYyxkKXthSmEucHJvdG90eXBlLnNldC5jYWxsKHRoaXMsYSxiKTtjJiYodGhpcy53YT1hKTtkJiYodGhpcy5vYT1hKTtyZXR1cm4gdGhpc307dmFyIHJlPWZ1bmN0aW9uKGEsYixjLGQpe3JldHVybiBhLnNldChiLmtleSxiLmNhcHRpb24sYyxkKX07Xy5hYT1GbGEucHJvdG90eXBlO18uYWEucmVuZGVyPWZ1bmN0aW9uKCl7aWYodGhpcy5RYyl7Xy5lZCh0aGlzLlFjLF8uJGwpO2xldCBhPV8ub2UodGhpcy5RYyk7dGhpcy5mb3JFYWNoKGZ1bmN0aW9uKGIsYyl7Yj1hLlpsKCJCVVRUT04iLHtuYW1lOmN9LGIpO2M9PXRoaXMud2EmJihiLmNsYXNzTmFtZT0iZ29vZy1idXR0b25zZXQtZGVmYXVsdCIpO3RoaXMuUWMuYXBwZW5kQ2hpbGQoYil9LHRoaXMpfX07Cl8uYWEuc3U9ZnVuY3Rpb24oYSl7aWYoYSYmYS5ub2RlVHlwZT09MSl7dGhpcy5RYz1hO2E9Xy5LbSgiQlVUVE9OIix0aGlzLlFjKTt2YXIgYjtmb3IobGV0IGU9MDtiPWFbZV07ZSsrKXt2YXIgYz1iLm5hbWV8fGIuaWQ7dmFyIGQ9Xy5kbihiKXx8Yi52YWx1ZTtpZihjKXtsZXQgZj1lPT0wO3RoaXMuc2V0KGMsZCxmLGIubmFtZT09ImNhbmNlbCIpO2YmJl8ueW0oYiwiZ29vZy1idXR0b25zZXQtZGVmYXVsdCIpfX19fTtfLmFhLkphPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuUWN9O18uYWEub2g9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5BYX07Xy5hYS5nZXREZWZhdWx0PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMud2F9Owp2YXIgVGxhPXtrZXk6Im9rIixjYXB0aW9uOiJPSyJ9LFVsYT17a2V5OiJjYW5jZWwiLGNhcHRpb246IkF2YnJ5dCJ9LGNLYT17a2V5OiJ5ZXMiLGNhcHRpb246IkphIn0sZEthPXtrZXk6Im5vIixjYXB0aW9uOiJOZWkifSxlS2E9e2tleToic2F2ZSIsY2FwdGlvbjoiTGFncmUifSxmS2E9e2tleToiY29udGludWUiLGNhcHRpb246IkZvcnRzZXR0In07dHlwZW9mIGRvY3VtZW50IT0idW5kZWZpbmVkIiYmKHJlKG5ldyBGbGEsVGxhLCEwLCEwKSxyZShyZShuZXcgRmxhLFRsYSwhMCksVWxhLCExLCEwKSxyZShyZShuZXcgRmxhLGNLYSwhMCksZEthLCExLCEwKSxyZShyZShyZShuZXcgRmxhLGNLYSksZEthLCEwKSxVbGEsITEsITApLHJlKHJlKHJlKG5ldyBGbGEsZkthKSxlS2EpLFVsYSwhMCwhMCkpO3ZhciBnS2EsaEthO18uTW49ZnVuY3Rpb24oYSxiKXtyZXR1cm4gbmV3IF8uTG4oYSxiKX07Xy5qS2E9ZnVuY3Rpb24oYSl7cmV0dXJuIGE+MD9hPj0weDdmZmZmZmZmZmZmZmZmZmY/Z0thOm5ldyBfLkxuKGEsYS80Mjk0OTY3Mjk2KTphPDA/YTw9LTB4N2ZmZmZmZmZmZmZmZmZmZj9oS2E6KG5ldyBfLkxuKC1hLC1hLzQyOTQ5NjcyOTYpKS5uZWdhdGUoKTpfLmlLYX07Cl8uTG49Y2xhc3N7Y29uc3RydWN0b3IoYSxiKXt0aGlzLnhuPWF8MDt0aGlzLmVvPWJ8MH1xbGEoKXtyZXR1cm4gdGhpcy54bn1FQmEoKXtyZXR1cm4gdGhpcy5lbyo0Mjk0OTY3Mjk2Kyh0aGlzLnhuPj4+MCl9dG9HYmlnaW50KCl7cmV0dXJuIF8uV2E/Xy5ZYShCaWdJbnQodGhpcy54bj4+PjApKyhCaWdJbnQodGhpcy5lbyk8PEJpZ0ludCgzMikpKTpfLllhKHRoaXMudG9TdHJpbmcoKSl9aXNTYWZlSW50ZWdlcigpe3ZhciBhPXRoaXMuZW8+PjIxO3JldHVybiBhPT0wfHxhPT0tMSYmISh0aGlzLnhuPT0wJiZ0aGlzLmVvPT0tMjA5NzE1Mil9dG9TdHJpbmcoYSl7YT1hfHwxMDtpZihhPDJ8fDM2PGEpdGhyb3cgRXJyb3IoIkJhYCIrYSk7aWYodGhpcy5pc1NhZmVJbnRlZ2VyKCkpe3ZhciBiPXRoaXMuRUJhKCk7cmV0dXJuIGE9PTEwPyIiK2I6Yi50b1N0cmluZyhhKX1iPTE0LShhPj4yKTt2YXIgYz1NYXRoLnBvdyhhLGIpLGQ9Xy5NbihjLGMvNDI5NDk2NzI5Nik7Yz10aGlzLmRpdihkKTsKZD1NYXRoLmFicyh0aGlzLmcwKGMubXVsdGlwbHkoZCkpLkVCYSgpKTt2YXIgZT1hPT0xMD8iIitkOmQudG9TdHJpbmcoYSk7ZS5sZW5ndGg8YiYmKGU9IjAwMDAwMDAwMDAwMDAiLnNsaWNlKGUubGVuZ3RoLWIpK2UpO2Q9Yy5FQmEoKTtyZXR1cm4oYT09MTA/ZDpkLnRvU3RyaW5nKGEpKStlfUd4YSgpe3JldHVybiB0aGlzLnhuPT0wJiZ0aGlzLmVvPT0wfWVJYSgpe3JldHVybiB0aGlzLmVvPDB9ZXF1YWxzKGEpe3JldHVybiBhPT1udWxsPyExOnRoaXMueG49PWEueG4mJnRoaXMuZW89PWEuZW99dERjKGEpe3JldHVybiB0aGlzLmNvbXBhcmUoYSk8MH11RGMoYSl7cmV0dXJuIHRoaXMuY29tcGFyZShhKTw9MH1KVWIoYSl7cmV0dXJuIHRoaXMuY29tcGFyZShhKT4wfVFyYihhKXtyZXR1cm4gdGhpcy5jb21wYXJlKGEpPj0wfWNvbXBhcmUoYSl7cmV0dXJuIHRoaXMuZW89PWEuZW8/dGhpcy54bj09YS54bj8wOnRoaXMueG4+Pj4wPmEueG4+Pj4wPzE6LTE6dGhpcy5lbz5hLmVvPzE6Ci0xfW5lZ2F0ZSgpe3ZhciBhPX50aGlzLnhuKzF8MDtyZXR1cm4gXy5NbihhLH50aGlzLmVvKyFhfDApfWFkZChhKXt2YXIgYj10aGlzLmVvPj4+MTYsYz10aGlzLmVvJjY1NTM1LGQ9dGhpcy54bj4+PjE2LGU9YS5lbz4+PjE2LGY9YS5lbyY2NTUzNSxnPWEueG4+Pj4xNjthPSh0aGlzLnhuJjY1NTM1KSsoYS54biY2NTUzNSk7Zz0oYT4+PjE2KSsoZCtnKTtkPWc+Pj4xNjtkKz1jK2Y7cmV0dXJuIF8uTW4oKGcmNjU1MzUpPDwxNnxhJjY1NTM1LCgoZD4+PjE2KSsoYitlKSY2NTUzNSk8PDE2fGQmNjU1MzUpfWcwKGEpe3JldHVybiB0aGlzLmFkZChhLm5lZ2F0ZSgpKX1tdWx0aXBseShhKXtpZih0aGlzLkd4YSgpKXJldHVybiB0aGlzO2lmKGEuR3hhKCkpcmV0dXJuIGE7dmFyIGI9dGhpcy5lbz4+PjE2LGM9dGhpcy5lbyY2NTUzNSxkPXRoaXMueG4+Pj4xNixlPXRoaXMueG4mNjU1MzUsZj1hLmVvPj4+MTYsZz1hLmVvJjY1NTM1LGg9YS54bj4+PjE2O2E9YS54biY2NTUzNTt2YXIgaz0KZSphO3ZhciBtPShrPj4+MTYpK2QqYTt2YXIgbj1tPj4+MTY7bT0obSY2NTUzNSkrZSpoO24rPW0+Pj4xNjtuKz1jKmE7dmFyIHA9bj4+PjE2O249KG4mNjU1MzUpK2QqaDtwKz1uPj4+MTY7bj0obiY2NTUzNSkrZSpnO3A9cCsobj4+PjE2KSsoYiphK2MqaCtkKmcrZSpmKSY2NTUzNTtyZXR1cm4gXy5NbigobSY2NTUzNSk8PDE2fGsmNjU1MzUscDw8MTZ8biY2NTUzNSl9ZGl2KGEpe2lmKGEuR3hhKCkpdGhyb3cgRXJyb3IoIkVhIik7aWYodGhpcy5lSWEoKSl7aWYodGhpcy5lcXVhbHMoaEthKSl7aWYoYS5lcXVhbHMoXy5rS2EpfHxhLmVxdWFscyhfLmxLYSkpcmV0dXJuIGhLYTtpZihhLmVxdWFscyhoS2EpKXJldHVybiBfLmtLYTt2YXIgYj10aGlzLk1DYigxKS5kaXYoYSkuc2hpZnRMZWZ0KDEpO2lmKGIuZXF1YWxzKF8uaUthKSlyZXR1cm4gYS5lSWEoKT9fLmtLYTpfLmxLYTt2YXIgYz10aGlzLmcwKGEubXVsdGlwbHkoYikpO3JldHVybiBiLmFkZChjLmRpdihhKSl9cmV0dXJuIGEuZUlhKCk/CnRoaXMubmVnYXRlKCkuZGl2KGEubmVnYXRlKCkpOnRoaXMubmVnYXRlKCkuZGl2KGEpLm5lZ2F0ZSgpfWlmKHRoaXMuR3hhKCkpcmV0dXJuIF8uaUthO2lmKGEuZUlhKCkpcmV0dXJuIGEuZXF1YWxzKGhLYSk/Xy5pS2E6dGhpcy5kaXYoYS5uZWdhdGUoKSkubmVnYXRlKCk7Yj1fLmlLYTtmb3IoYz10aGlzO2MuUXJiKGEpOyl7bGV0IGU9TWF0aC5tYXgoMSxNYXRoLmZsb29yKGMuRUJhKCkvYS5FQmEoKSkpO3ZhciBkPU1hdGguY2VpbChNYXRoLmxvZyhlKS9NYXRoLkxOMik7ZD1kPD00OD8xOk1hdGgucG93KDIsZC00OCk7bGV0IGY9Xy5qS2EoZSksZz1mLm11bHRpcGx5KGEpO2Zvcig7Zy5lSWEoKXx8Zy5KVWIoYyk7KWUtPWQsZj1fLmpLYShlKSxnPWYubXVsdGlwbHkoYSk7Zi5HeGEoKSYmKGY9Xy5rS2EpO2I9Yi5hZGQoZik7Yz1jLmcwKGcpfXJldHVybiBifUJGYyhhKXtyZXR1cm4gdGhpcy5nMCh0aGlzLmRpdihhKS5tdWx0aXBseShhKSl9bm90KCl7cmV0dXJuIF8uTW4ofnRoaXMueG4sCn50aGlzLmVvKX1hbmQoYSl7cmV0dXJuIF8uTW4odGhpcy54biZhLnhuLHRoaXMuZW8mYS5lbyl9b3IoYSl7cmV0dXJuIF8uTW4odGhpcy54bnxhLnhuLHRoaXMuZW98YS5lbyl9eG9yKGEpe3JldHVybiBfLk1uKHRoaXMueG5eYS54bix0aGlzLmVvXmEuZW8pfXNoaWZ0TGVmdChhKXthJj02MztpZihhPT0wKXJldHVybiB0aGlzO3ZhciBiPXRoaXMueG47cmV0dXJuIGE8MzI/Xy5NbihiPDxhLHRoaXMuZW88PGF8Yj4+PjMyLWEpOl8uTW4oMCxiPDxhLTMyKX1NQ2IoYSl7YSY9NjM7aWYoYT09MClyZXR1cm4gdGhpczt2YXIgYj10aGlzLmVvO3JldHVybiBhPDMyP18uTW4odGhpcy54bj4+PmF8Yjw8MzItYSxiPj5hKTpfLk1uKGI+PmEtMzIsYj49MD8wOi0xKX19O18uaUthPV8uTW4oMCwwKTtfLmtLYT1fLk1uKDEsMCk7Xy5sS2E9Xy5NbigtMSwtMSk7Z0thPV8uTW4oNDI5NDk2NzI5NSwyMTQ3NDgzNjQ3KTtoS2E9Xy5NbigwLDIxNDc0ODM2NDgpO18uam1hPWZ1bmN0aW9uKGEsYil7cmV0dXJuIF8udGgoYSwxLGIpfTtfLmltYT1mdW5jdGlvbihhLGIpe3JldHVybiBfLm9rKGEsMixiKX07Xy5obWE9ZnVuY3Rpb24oYSxiKXtyZXR1cm4gXy5vayhhLDMsYil9O18uQ2U9Y2xhc3MgZXh0ZW5kcyBfLmx7Y29uc3RydWN0b3IoYSl7c3VwZXIoYSl9fTtfLk9uPVswLF8uaWwsXy5CbCwtMV07Xy5Jd2E9ZnVuY3Rpb24oYSxiKXtyZXR1cm4gXy5TYihhLF8uQ2UsMSxiKX07Xy5BZT1jbGFzcyBleHRlbmRzIF8ubHtjb25zdHJ1Y3RvcihhKXtzdXBlcihhKX19O18ubUthPVswLF8uT24sXy5pbF07Xy5YbGE9ZnVuY3Rpb24oYSl7cmV0dXJuIF8ueGUoYSwyKX07Xy5uS2E9ZnVuY3Rpb24oYSxiKXtyZXR1cm4gXy5sayhhLDIsYil9O18uUG49Y2xhc3MgZXh0ZW5kcyBfLmx7Y29uc3RydWN0b3IoYSl7c3VwZXIoYSl9fTtfLlFuPVswLF8uQywtMSwyLF8uQywtNCxfLkQsXy5DLF8ueGwsXy5tS2EsXy5DLFswLF8udGwsXy5DXSxfLkNdO18uUm49Y2xhc3MgZXh0ZW5kcyBfLmx7Y29uc3RydWN0b3IoYSl7c3VwZXIoYSwxKX19O18uU249e307Xy5ibWE9Xy5YYihfLlBuLF8uUW4pO18uU25bMTU4NzIwNTJdPV8uUW47Xy5Tbls0MTU2Mzc5XT1fLk9uO3ZhciBjbWE9MioqMzI7Xy5vS2E9ZnVuY3Rpb24oYSl7aWYoYS55eiYmdHlwZW9mIGEueXo9PSJmdW5jdGlvbiIpcmV0dXJuIGEueXooKTtpZih0eXBlb2YgTWFwIT09InVuZGVmaW5lZCImJmEgaW5zdGFuY2VvZiBNYXB8fHR5cGVvZiBTZXQhPT0idW5kZWZpbmVkIiYmYSBpbnN0YW5jZW9mIFNldClyZXR1cm4gQXJyYXkuZnJvbShhLnZhbHVlcygpKTtpZih0eXBlb2YgYT09PSJzdHJpbmciKXJldHVybiBhLnNwbGl0KCIiKTtpZihfLkhhKGEpKXtsZXQgYj1bXSxjPWEubGVuZ3RoO2ZvcihsZXQgZD0wO2Q8YztkKyspYi5wdXNoKGFbZF0pO3JldHVybiBifXJldHVybiBfLlNjKGEpfTsKXy5wS2E9ZnVuY3Rpb24oYSl7aWYoYS5nZXRLZXlzJiZ0eXBlb2YgYS5nZXRLZXlzPT0iZnVuY3Rpb24iKXJldHVybiBhLmdldEtleXMoKTtpZighYS55enx8dHlwZW9mIGEueXohPSJmdW5jdGlvbiIpe2lmKHR5cGVvZiBNYXAhPT0idW5kZWZpbmVkIiYmYSBpbnN0YW5jZW9mIE1hcClyZXR1cm4gQXJyYXkuZnJvbShhLmtleXMoKSk7aWYoISh0eXBlb2YgU2V0IT09InVuZGVmaW5lZCImJmEgaW5zdGFuY2VvZiBTZXQpKXtpZihfLkhhKGEpfHx0eXBlb2YgYT09PSJzdHJpbmciKXtsZXQgYj1bXTthPWEubGVuZ3RoO2ZvcihsZXQgYz0wO2M8YTtjKyspYi5wdXNoKGMpO3JldHVybiBifXJldHVybiBfLlRjKGEpfX19OwpfLnFLYT1mdW5jdGlvbihhLGIsYyl7aWYoYS5mb3JFYWNoJiZ0eXBlb2YgYS5mb3JFYWNoPT0iZnVuY3Rpb24iKWEuZm9yRWFjaChiLGMpO2Vsc2UgaWYoXy5IYShhKXx8dHlwZW9mIGE9PT0ic3RyaW5nIilBcnJheS5wcm90b3R5cGUuZm9yRWFjaC5jYWxsKGEsYixjKTtlbHNle2xldCBkPV8ucEthKGEpLGU9Xy5vS2EoYSksZj1lLmxlbmd0aDtmb3IobGV0IGc9MDtnPGY7ZysrKWIuY2FsbChjLGVbZ10sZCYmZFtnXSxhKX19O3ZhciByS2EsQkthLHNLYSx1S2EsdEthLHhLYSx2S2E7Xy5IZS5wcm90b3R5cGUudG9TdHJpbmc9ZnVuY3Rpb24oKXt2YXIgYT1bXSxiPXRoaXMua2E7YiYmYS5wdXNoKHJLYShiLHNLYSwhMCksIjoiKTt2YXIgYz10aGlzLkFvKCk7aWYoY3x8Yj09ImZpbGUiKWEucHVzaCgiLy8iKSwoYj10aGlzLkVhKSYmYS5wdXNoKHJLYShiLHNLYSwhMCksIkAiKSxhLnB1c2goXy5wZChjKS5yZXBsYWNlKC8lMjUoWzAtOWEtZkEtRl17Mn0pL2csIiUkMSIpKSxjPXRoaXMuQWEsYyE9bnVsbCYmYS5wdXNoKCI6IixTdHJpbmcoYykpO2lmKGM9dGhpcy5nZXRQYXRoKCkpdGhpcy5CYSYmYy5jaGFyQXQoMCkhPSIvIiYmYS5wdXNoKCIvIiksYS5wdXNoKHJLYShjLGMuY2hhckF0KDApPT0iLyI/dEthOnVLYSwhMCkpOyhjPXRoaXMub2EudG9TdHJpbmcoKSkmJmEucHVzaCgiPyIsYyk7KGM9dGhpcy53YSkmJmEucHVzaCgiIyIsckthKGMsdkthKSk7cmV0dXJuIGEuam9pbigiIil9OwpfLkhlLnByb3RvdHlwZS5yZXNvbHZlPWZ1bmN0aW9uKGEpe3ZhciBiPXRoaXMuY2xvbmUoKSxjPSEhYS5rYTtjP18uSWUoYixhLmthKTpjPSEhYS5FYTtjP2IuRWE9YS5FYTpjPSEhYS5CYTtjP18uSmUoYixhLkFvKCkpOmM9YS5BYSE9bnVsbDt2YXIgZD1hLmdldFBhdGgoKTtpZihjKV8uS2UoYixhLkFhKTtlbHNlIGlmKGM9ISFhLklhKXtpZihkLmNoYXJBdCgwKSE9Ii8iKWlmKHRoaXMuQmEmJiF0aGlzLklhKWQ9Ii8iK2Q7ZWxzZXt2YXIgZT1iLmdldFBhdGgoKS5sYXN0SW5kZXhPZigiLyIpO2UhPS0xJiYoZD1iLmdldFBhdGgoKS5zbGljZSgwLGUrMSkrZCl9ZT1kO2lmKGU9PSIuLiJ8fGU9PSIuIilkPSIiO2Vsc2UgaWYoXy5sYShlLCIuLyIpfHxfLmxhKGUsIi8uIikpe2Q9Xy5pYShlLCIvIik7ZT1lLnNwbGl0KCIvIik7bGV0IGY9W107Zm9yKGxldCBnPTA7ZzxlLmxlbmd0aDspe2xldCBoPWVbZysrXTtoPT0iLiI/ZCYmZz09ZS5sZW5ndGgmJmYucHVzaCgiIik6aD09Ii4uIj8KKChmLmxlbmd0aD4xfHxmLmxlbmd0aD09MSYmZlswXSE9IiIpJiZmLnBvcCgpLGQmJmc9PWUubGVuZ3RoJiZmLnB1c2goIiIpKTooZi5wdXNoKGgpLGQ9ITApfWQ9Zi5qb2luKCIvIil9ZWxzZSBkPWV9Yz9fLkxlKGIsZCk6Yz1hLm9hLnRvU3RyaW5nKCkhPT0iIjtjP18ub21hKGIsYS53dCgpLmNsb25lKCkpOmM9ISFhLndhO2MmJl8uTWUoYixhLndhKTtyZXR1cm4gYn07Xy5IZS5wcm90b3R5cGUuY2xvbmU9ZnVuY3Rpb24oKXtyZXR1cm4gbmV3IF8uSGUodGhpcyl9O18uSWU9ZnVuY3Rpb24oYSxiLGMpe2Eua2E9Yz9fLnBtYShiLCEwKTpiO2Eua2EmJihhLmthPWEua2EucmVwbGFjZSgvOiQvLCIiKSk7cmV0dXJuIGF9O18uSGUucHJvdG90eXBlLkFvPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuQmF9O18uSmU9ZnVuY3Rpb24oYSxiLGMpe2EuQmE9Yz9fLnBtYShiLCEwKTpiO3JldHVybiBhfTsKXy5LZT1mdW5jdGlvbihhLGIpe2lmKGIpe2I9TnVtYmVyKGIpO2lmKGlzTmFOKGIpfHxiPDApdGhyb3cgRXJyb3IoIk1hYCIrYik7YS5BYT1ifWVsc2UgYS5BYT1udWxsO3JldHVybiBhfTtfLkhlLnByb3RvdHlwZS5nZXRQYXRoPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuSWF9O18uTGU9ZnVuY3Rpb24oYSxiLGMpe2EuSWE9Yz9fLnBtYShiLCEwKTpiO3JldHVybiBhfTtfLm9tYT1mdW5jdGlvbihhLGIsYyl7YiBpbnN0YW5jZW9mIF8uT2U/KGEub2E9Yix3S2EoYS5vYSxhLkdhKSk6KGN8fChiPXJLYShiLHhLYSkpLGEub2E9bmV3IF8uT2UoYixhLkdhKSk7cmV0dXJuIGF9O18uSGUucHJvdG90eXBlLnNldFF1ZXJ5PWZ1bmN0aW9uKGEsYil7cmV0dXJuIF8ub21hKHRoaXMsYSxiKX07Xy5IZS5wcm90b3R5cGUud3Q9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5vYX07Xy5IZS5wcm90b3R5cGUuZ2V0UXVlcnk9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5vYS50b1N0cmluZygpfTsKXy5Ubj1mdW5jdGlvbihhLGIsYyl7YS5vYS5zZXQoYixjKTtyZXR1cm4gYX07Xy5Vbj1mdW5jdGlvbihhLGIsYyl7QXJyYXkuaXNBcnJheShjKXx8KGM9W1N0cmluZyhjKV0pO18ueUthKGEub2EsYixjKTtyZXR1cm4gYX07Xy5Xbj1mdW5jdGlvbihhLGIpe3JldHVybiBhLm9hLmdldChiKX07Xy5NZT1mdW5jdGlvbihhLGIsYyl7YS53YT1jP18ucG1hKGIpOmI7cmV0dXJuIGF9O18uekthPWZ1bmN0aW9uKGEpe18uVG4oYSwiengiLF8uY0ZhKCkpO3JldHVybiBhfTtfLk9oPWZ1bmN0aW9uKGEsYil7cmV0dXJuIGEgaW5zdGFuY2VvZiBfLkhlP2EuY2xvbmUoKTpuZXcgXy5IZShhLGIpfTtfLkFLYT1mdW5jdGlvbihhLGIsYyxkLGUsZixnKXt2YXIgaD1uZXcgXy5IZShudWxsKTthJiZfLkllKGgsYSk7YiYmKGguRWE9Yik7YyYmXy5KZShoLGMpO2QmJl8uS2UoaCxkKTtlJiZfLkxlKGgsZSk7ZiYmXy5vbWEoaCxmKTtnJiZfLk1lKGgsZyk7cmV0dXJuIGh9OwpfLnBtYT1mdW5jdGlvbihhLGIpe3JldHVybiBhP2I/ZGVjb2RlVVJJKGEucmVwbGFjZSgvJTI1L2csIiUyNTI1IikpOmRlY29kZVVSSUNvbXBvbmVudChhKToiIn07ckthPWZ1bmN0aW9uKGEsYixjKXtyZXR1cm4gdHlwZW9mIGE9PT0ic3RyaW5nIj8oYT1lbmNvZGVVUkkoYSkucmVwbGFjZShiLEJLYSksYyYmKGE9YS5yZXBsYWNlKC8lMjUoWzAtOWEtZkEtRl17Mn0pL2csIiUkMSIpKSxhKTpudWxsfTtCS2E9ZnVuY3Rpb24oYSl7YT1hLmNoYXJDb2RlQXQoMCk7cmV0dXJuIiUiKyhhPj40JjE1KS50b1N0cmluZygxNikrKGEmMTUpLnRvU3RyaW5nKDE2KX07c0thPS9bI1wvXD9AXS9nO3VLYT0vWyNcPzpdL2c7dEthPS9bI1w/XS9nO3hLYT0vWyNcP0BdL2c7dkthPS8jL2c7Xy5PZT1mdW5jdGlvbihhLGIpe3RoaXMub2E9dGhpcy5rYT1udWxsO3RoaXMud2E9YXx8bnVsbDt0aGlzLkFhPSEhYn07Cl8uQ0thPWZ1bmN0aW9uKGEpe2Eua2F8fChhLmthPW5ldyBNYXAsYS5vYT0wLGEud2EmJl8uaGthKGEud2EsZnVuY3Rpb24oYixjKXthLmFkZChfLmdrYShiKSxjKX0pKX07Xy5ES2E9ZnVuY3Rpb24oYSl7dmFyIGI9Xy5wS2EoYSk7aWYodHlwZW9mIGI9PSJ1bmRlZmluZWQiKXRocm93IEVycm9yKCJPYSIpO3ZhciBjPW5ldyBfLk9lKG51bGwpO2E9Xy5vS2EoYSk7Zm9yKGxldCBkPTA7ZDxiLmxlbmd0aDtkKyspe2xldCBlPWJbZF0sZj1hW2RdO0FycmF5LmlzQXJyYXkoZik/Xy55S2EoYyxlLGYpOmMuYWRkKGUsZil9cmV0dXJuIGN9O18uYWE9Xy5PZS5wcm90b3R5cGU7Xy5hYS56aT1mdW5jdGlvbigpe18uQ0thKHRoaXMpO3JldHVybiB0aGlzLm9hfTtfLmFhLmFkZD1mdW5jdGlvbihhLGIpe18uQ0thKHRoaXMpO3RoaXMud2E9bnVsbDthPUVLYSh0aGlzLGEpO3ZhciBjPXRoaXMua2EuZ2V0KGEpO2N8fHRoaXMua2Euc2V0KGEsYz1bXSk7Yy5wdXNoKGIpO3RoaXMub2ErPTE7cmV0dXJuIHRoaXN9OwpfLmFhLnJlbW92ZT1mdW5jdGlvbihhKXtfLkNLYSh0aGlzKTthPUVLYSh0aGlzLGEpO3JldHVybiB0aGlzLmthLmhhcyhhKT8odGhpcy53YT1udWxsLHRoaXMub2EtPXRoaXMua2EuZ2V0KGEpLmxlbmd0aCx0aGlzLmthLmRlbGV0ZShhKSk6ITF9O18uYWEuY2xlYXI9ZnVuY3Rpb24oKXt0aGlzLmthPXRoaXMud2E9bnVsbDt0aGlzLm9hPTB9O18uYWEuaXNFbXB0eT1mdW5jdGlvbigpe18uQ0thKHRoaXMpO3JldHVybiB0aGlzLm9hPT0wfTtfLkZLYT1mdW5jdGlvbihhLGIpe18uQ0thKGEpO2I9RUthKGEsYik7cmV0dXJuIGEua2EuaGFzKGIpfTtfLmFhPV8uT2UucHJvdG90eXBlO18uYWEuZm9yRWFjaD1mdW5jdGlvbihhLGIpe18uQ0thKHRoaXMpO3RoaXMua2EuZm9yRWFjaChmdW5jdGlvbihjLGQpe2MuZm9yRWFjaChmdW5jdGlvbihlKXthLmNhbGwoYixlLGQsdGhpcyl9LHRoaXMpfSx0aGlzKX07Cl8uYWEuZ2V0S2V5cz1mdW5jdGlvbigpe18uQ0thKHRoaXMpO3ZhciBhPUFycmF5LmZyb20odGhpcy5rYS52YWx1ZXMoKSksYj1BcnJheS5mcm9tKHRoaXMua2Eua2V5cygpKSxjPVtdO2ZvcihsZXQgZD0wO2Q8Yi5sZW5ndGg7ZCsrKXtsZXQgZT1hW2RdO2ZvcihsZXQgZj0wO2Y8ZS5sZW5ndGg7ZisrKWMucHVzaChiW2RdKX1yZXR1cm4gY307Xy5hYS55ej1mdW5jdGlvbihhKXtfLkNLYSh0aGlzKTt2YXIgYj1bXTtpZih0eXBlb2YgYT09PSJzdHJpbmciKV8uRkthKHRoaXMsYSkmJihiPWIuY29uY2F0KHRoaXMua2EuZ2V0KEVLYSh0aGlzLGEpKSkpO2Vsc2V7YT1BcnJheS5mcm9tKHRoaXMua2EudmFsdWVzKCkpO2ZvcihsZXQgYz0wO2M8YS5sZW5ndGg7YysrKWI9Yi5jb25jYXQoYVtjXSl9cmV0dXJuIGJ9OwpfLmFhLnNldD1mdW5jdGlvbihhLGIpe18uQ0thKHRoaXMpO3RoaXMud2E9bnVsbDthPUVLYSh0aGlzLGEpO18uRkthKHRoaXMsYSkmJih0aGlzLm9hLT10aGlzLmthLmdldChhKS5sZW5ndGgpO3RoaXMua2Euc2V0KGEsW2JdKTt0aGlzLm9hKz0xO3JldHVybiB0aGlzfTtfLmFhLmdldD1mdW5jdGlvbihhLGIpe2lmKCFhKXJldHVybiBiO2E9dGhpcy55eihhKTtyZXR1cm4gYS5sZW5ndGg+MD9TdHJpbmcoYVswXSk6Yn07Xy55S2E9ZnVuY3Rpb24oYSxiLGMpe2EucmVtb3ZlKGIpO2MubGVuZ3RoPjAmJihhLndhPW51bGwsYS5rYS5zZXQoRUthKGEsYiksXy5HYShjKSksYS5vYSs9Yy5sZW5ndGgpfTsKXy5PZS5wcm90b3R5cGUudG9TdHJpbmc9ZnVuY3Rpb24oKXtpZih0aGlzLndhKXJldHVybiB0aGlzLndhO2lmKCF0aGlzLmthKXJldHVybiIiO3ZhciBhPVtdLGI9QXJyYXkuZnJvbSh0aGlzLmthLmtleXMoKSk7Zm9yKGxldCBkPTA7ZDxiLmxlbmd0aDtkKyspe3ZhciBjPWJbZF07bGV0IGU9Xy5wZChjKTtjPXRoaXMueXooYyk7Zm9yKGxldCBmPTA7ZjxjLmxlbmd0aDtmKyspe2xldCBnPWU7Y1tmXSE9PSIiJiYoZys9Ij0iK18ucGQoY1tmXSkpO2EucHVzaChnKX19cmV0dXJuIHRoaXMud2E9YS5qb2luKCImIil9O18uT2UucHJvdG90eXBlLmNsb25lPWZ1bmN0aW9uKCl7dmFyIGE9bmV3IF8uT2U7YS53YT10aGlzLndhO3RoaXMua2EmJihhLmthPW5ldyBNYXAodGhpcy5rYSksYS5vYT10aGlzLm9hKTtyZXR1cm4gYX07CnZhciBFS2E9ZnVuY3Rpb24oYSxiKXtiPVN0cmluZyhiKTthLkFhJiYoYj1iLnRvTG93ZXJDYXNlKCkpO3JldHVybiBifSx3S2E9ZnVuY3Rpb24oYSxiKXtiJiYhYS5BYSYmKF8uQ0thKGEpLGEud2E9bnVsbCxhLmthLmZvckVhY2goZnVuY3Rpb24oYyxkKXt2YXIgZT1kLnRvTG93ZXJDYXNlKCk7ZCE9ZSYmKHRoaXMucmVtb3ZlKGQpLF8ueUthKHRoaXMsZSxjKSl9LGEpKTthLkFhPWJ9O18uT2UucHJvdG90eXBlLmV4dGVuZD1mdW5jdGlvbihhKXtmb3IobGV0IGI9MDtiPGFyZ3VtZW50cy5sZW5ndGg7YisrKV8ucUthKGFyZ3VtZW50c1tiXSxmdW5jdGlvbihjLGQpe3RoaXMuYWRkKGQsYyl9LHRoaXMpfTtPa2E9KDAsXy52bS5peCkoKTt2YXIgeW1hPW51bGwseG1hPW51bGwsQW1hPW51bGw7QW1hPXdpbmRvdy5wZXJmb3JtYW5jZSYmd2luZG93LnBlcmZvcm1hbmNlLnRpbWluZyYmd2luZG93LnBlcmZvcm1hbmNlLnRpbWluZy5uYXZpZ2F0aW9uU3RhcnQ7Xy5zbWEoKSYmIV8ucmQoXy55ZCgpLmhyZWYsIm5iYiIpJiZfLnZtYSgibmF2aWdhdGlvbiIpOwpfLmhlKF8uaGkoKSwicGFnZXNob3ciLGE9Pnt2YXIgYj1hLmpnO2E9KGE9dW1hKCkpJiZhLnR5cGV8fCJudWxsIjtpZihiLnBlcnNpc3RlZCl7Xy5OYS5NeSgpJiYoem1hKCksXy5QZSgibnJyIiwiJm5ycnI9c2FmYXJpSGl0IikpO2xldCBnPUJtYShiKTtnIT1udWxsP18udm1hKCJwYWdlc2hvdyIsZyk6Xy52bWEoInBhZ2VzaG93Iil9ZWxzZSBfLlBlKCJwc250IixgJm50PSR7YX1gKSxfLk5hLk15KCkmJmE9PT0iYmFja19mb3J3YXJkIiYmXy5QZSgibnJyIiwiJm5ycnI9c2FmYXJpTWlzcyIpO2lmKChfLk5hLlNXKCl8fF8uQWQoKSkmJihhPT09ImJhY2tfZm9yd2FyZCJ8fGIucGVyc2lzdGVkKSlhOnt2YXIgYzthPShjPXVtYSgpKT09bnVsbD92b2lkIDA6Yy5ub3RSZXN0b3JlZFJlYXNvbnM7aWYoYSE9PXZvaWQgMHx8Yi5wZXJzaXN0ZWQpaWYoYT09PXZvaWQgMCYmYi5wZXJzaXN0ZWQpdmFyIGQ9IiZucnJyPW5vQVBJaGl0IjtlbHNlIGlmKGIucGVyc2lzdGVkKWQ9IiZucnJyPWhpdCI7CmVsc2UgaWYoYT09PW51bGwpZD0iJm5ycnI9bnVsbCI7ZWxzZXtiOntjPWEucmVhc29ucztpZihjIT09bnVsbCYmYy5sZW5ndGghPT0wKWZvcihlIG9mIGMpaWYoZS5yZWFzb249PT0ic2Vzc2lvbi1yZXN0b3JlZCIpe3ZhciBlPSEwO2JyZWFrIGJ9ZT0hMX1pZihlKWJyZWFrIGE7dmFyIGY7ZT1gJm11cmw9JHtlbmNvZGVVUklDb21wb25lbnQoKGY9YS51cmwpIT1udWxsP2Y6InVua25vd24iKX1gO2Y9W107aWYoYS5yZWFzb25zIT09bnVsbCYmYS5yZWFzb25zLmxlbmd0aD4wKWZvcihkIG9mIGEucmVhc29ucylkLnJlYXNvbiYmZi5wdXNoKGQucmVhc29uKTtlbHNlIGYucHVzaCgibWFpbk5vdEJsb2NraW5nIik7ZD1gJm1ucnI9JHtmLmpvaW4oIiwiKX1gO2Q9YCR7ZX0ke2R9YDtmPWEuY2hpbGRyZW4hPT1udWxsP3dtYShhLmNoaWxkcmVuLCIiKToiIjtkKz1gJm5ycnI9JHtmfWB9ZWxzZSBkPSImbnJycj1ub0FQSW1pc3MiO18uUGUoIm5yciIsZCl9fSwhMSk7Cl8uaGUoXy5oaSgpLCJwb3BzdGF0ZSIsKCk9PntfLk5hLk15KCkmJnltYSYmeG1hPT09Xy55ZCgpLmhyZWY/KGNsZWFyVGltZW91dCh5bWEpLHhtYT15bWE9bnVsbCk6Xy52bWEoInBvcHN0YXRlIil9LCExKTtfLk5hLk15KCkmJnptYSgpO18uR0thPWNsYXNzIGV4dGVuZHMgRXJyb3J7Y29uc3RydWN0b3IoYSxiKXtzdXBlcihhKTt0aGlzLl9sZXZlbD1ifX07Xy50Zz1jbGFzcyBleHRlbmRzIF8uR0the2NvbnN0cnVjdG9yKGEpe3N1cGVyKGEsMil9fTtfLkhLYT1jbGFzcyBleHRlbmRzIF8uR0the2NvbnN0cnVjdG9yKGEpe3N1cGVyKGEsMyl9fTt2YXIgSUthLEtLYSxMS2E7SUthPWNsYXNze2NvbnN0cnVjdG9yKGEsYil7dGhpcy5GYz1hO3RoaXMua2E9Yn19O18uSkthPW5ldyBJS2EoZW5jb2RlVVJJQ29tcG9uZW50LGE9PmRlY29kZVVSSUNvbXBvbmVudChhLnJlcGxhY2UoL1wrL2csIiUyMCIpKSk7S0thPUVtYSgiJCwvOjs/QFtdXmB7fH0iKTtFbWEoIj0mJCwvOjtAW11eYHt8fSIpO18uWG49bmV3IElLYShhPT5fLkpLYS5GYyhhKS5yZXBsYWNlKEtLYSxkZWNvZGVVUklDb21wb25lbnQpLF8uSkthLmthKTtMS2E9bmV3IElLYShhPT5hLnJlcGxhY2UoLyUyMC9nLCIrIiksYT0+YS5yZXBsYWNlKCIrIiwiJTIwIikpO3ZhciBNS2E9Y2xhc3N7Y29uc3RydWN0b3IoYT1bXSl7dGhpcy5vYT1uZXcgTWFwO3RoaXMua2E9W107Zm9yKGxldCBbYixjXW9mIGEpdGhpcy5hcHBlbmQoYixjKX1nZXQoYSl7cmV0dXJuIHRoaXMuZ2V0QWxsKGEpWzBdfWdldEFsbChhKXtyZXR1cm4gdGhpcy5vYS5nZXQoYSl8fFtdfXNldChhLGIpe2lmKHRoaXMuaGFzKGEpKXt0aGlzLm9hLnNldChhLFtiXSk7dmFyIGM9ITA7dGhpcy5rYT1fLldpKHRoaXMua2EsZD0+e2lmKGQ9PWEpaWYoYyljPSExO2Vsc2UgcmV0dXJuITE7cmV0dXJuITB9KX1lbHNlIHRoaXMuYXBwZW5kKGEsYil9YXBwZW5kKGEsYil7dGhpcy5rYS5wdXNoKGEpO3ZhciBjPXRoaXMuZ2V0QWxsKGEpO2MucHVzaChiKTt0aGlzLm9hLnNldChhLGMpfWhhcyhhKXtyZXR1cm4gdGhpcy5vYS5oYXMoYSl9ZGVsZXRlKGEpe3RoaXMub2EuZGVsZXRlKGEpO3RoaXMua2E9Xy5XaSh0aGlzLmthLGI9PmIhPWEpfXNpemUoKXtyZXR1cm4gdGhpcy5rYS5sZW5ndGh9a2V5cygpe3JldHVybiB0aGlzLmthfVtTeW1ib2wuaXRlcmF0b3JdKCl7dmFyIGE9CltdLGI9bmV3IE1hcDtmb3IobGV0IGMgb2YgdGhpcy5rZXlzKCkpe2xldCBkPXRoaXMuZ2V0QWxsKGMpLGU9Yi5nZXQoYyl8fDA7Yi5zZXQoYyxlKzEpO2EucHVzaChbYyxkW2VdXSl9cmV0dXJuIGFbU3ltYm9sLml0ZXJhdG9yXSgpfX07dmFyIE5LYT1jbGFzc3tGYyhhKXtyZXR1cm4gYS5qb2luKCImIil9a2EoYSl7cmV0dXJuIGE/YS5zcGxpdCgiJiIpOltdfX07Xy5PS2E9Y2xhc3N7Y29uc3RydWN0b3IoYT0iPSIpe3RoaXMub2E9YX1GYyh7a2V5OmEsdmFsdWU6Yn0pe3JldHVybiBhK3RoaXMub2ErYn1rYShhKXthPWEuc3BsaXQodGhpcy5vYSk7cmV0dXJue2tleTphLnNoaWZ0KCksdmFsdWU6YS5qb2luKHRoaXMub2EpfX19O3ZhciBQS2E9Y2xhc3N7Y29uc3RydWN0b3IoKXt2YXIgYT1uZXcgTkthO3RoaXMub2E9bmV3IF8uT0thO3RoaXMua2E9YX1GYyhhKXt2YXIgYj1bXTtmb3IobGV0IFtjLGRdb2YgYSliLnB1c2godGhpcy5vYS5GYyh7a2V5OmMsdmFsdWU6ZH0pKTtyZXR1cm4gdGhpcy5rYS5GYyhiKX19O18uUUthPWNsYXNze2NvbnN0cnVjdG9yKGEsYil7dGhpcy5FYT1uZXcgUEthO3RoaXMuQmE9Yjt0aGlzLnNldFZhbHVlKGEpfWNsb25lKCl7dmFyIGE9bmV3IF8uUUthKCIiLHRoaXMuQmEpO2EuQWE9dGhpcy5BYTthLm9hPW5ldyBNS2EodGhpcy5vYSk7YS53YT1uZXcgTWFwO2ZvcihsZXQgW2IsY11vZiB0aGlzLndhKWEud2Euc2V0KGIsWy4uLmNdKTtyZXR1cm4gYX1zZXRWYWx1ZShhKXt0aGlzLkFhPWE7dmFyIGI9dGhpcy5FYSxjPW5ldyBNS2E7Zm9yKGxldCBkIG9mIGIua2Eua2EoYSkpe2xldCB7a2V5OmUsdmFsdWU6Zn09Yi5vYS5rYShkKTtjLmFwcGVuZChlLGYpfXRoaXMub2E9Yzt0aGlzLndhPW5ldyBNYXB9Z2V0KGEpe3JldHVybiB0aGlzLmdldEFsbChhKVswXX1nZXRBbGwoYSl7aWYoIXRoaXMud2EuaGFzKGEpJiZ0aGlzLm9hLmhhcyhhKSl7dmFyIGI9Xy5YaSh0aGlzLm9hLmdldEFsbChhKSxjPT50aGlzLkJhLmthKGMsYSkpO3RoaXMud2Euc2V0KGEsYil9ZWxzZSBiPQp0aGlzLndhLmdldChhKTtyZXR1cm4gYnx8W119c2V0KGEsYil7dGhpcy5BYT1udWxsO3RoaXMud2Euc2V0KGEsW2JdKTt0aGlzLm9hLnNldChhLHRoaXMuQmEuRmMoYixhKSl9YXBwZW5kKGEsYil7dGhpcy5BYT1udWxsO3ZhciBjPXRoaXMud2EuZ2V0KGEpfHxbXTtjLnB1c2goYik7dGhpcy53YS5zZXQoYSxjKTt0aGlzLm9hLmFwcGVuZChhLHRoaXMuQmEuRmMoYixhKSl9aGFzKGEpe3JldHVybiB0aGlzLndhLmhhcyhhKXx8dGhpcy5vYS5oYXMoYSl9ZGVsZXRlKGEpe3RoaXMuQWE9bnVsbDt0aGlzLndhLmRlbGV0ZShhKTt0aGlzLm9hLmRlbGV0ZShhKX1zaXplKCl7cmV0dXJuIHRoaXMub2Euc2l6ZSgpfWtleXMoKXtyZXR1cm4gdGhpcy5vYS5rZXlzKCl9dG9TdHJpbmcoKXtyZXR1cm4gdGhpcy5BYSE9bnVsbD90aGlzLkFhOnRoaXMuRWEuRmModGhpcy5vYSl9ZXh0ZW5kKGEpe2E9YVtTeW1ib2wuaXRlcmF0b3JdJiZhW1N5bWJvbC5pdGVyYXRvcl0oKS5uZXh0KCkudmFsdWUgaW5zdGFuY2VvZgpBcnJheT9hOk9iamVjdC5lbnRyaWVzKGEpO2ZvcihsZXQgW2IsY11vZiBhKXRoaXMuYXBwZW5kKGIsYyl9W1N5bWJvbC5pdGVyYXRvcl0oKXt2YXIgYT1bXSxiPW5ldyBNYXA7Zm9yKGxldCBjIG9mIHRoaXMua2V5cygpKXtsZXQgZD10aGlzLmdldEFsbChjKSxlPWIuZ2V0KGMpfHwwO2Iuc2V0KGMsZSsxKTthLnB1c2goW2MsZFtlXV0pfXJldHVybiBhW1N5bWJvbC5pdGVyYXRvcl0oKX19O3ZhciBSS2E7UkthPWZ1bmN0aW9uKGEsYixjPWQ9Pm5ldyBkKXtpZighYi5jdG9yKXJldHVybiBiLmluc3RhbmNlO2M9YyhiLmN0b3IpO2Eub2EmJihkZWxldGUgYi5jdG9yLGIuaW5zdGFuY2U9Yyk7cmV0dXJuIGN9O18uWW49ZnVuY3Rpb24oYSxiKXtyZXR1cm4gYS5rYS5tYXAoYz0+UkthKGEsYyxiKSl9O18uU0thPWNsYXNze2NvbnN0cnVjdG9yKCl7dGhpcy5rYT1bXTt0aGlzLm9hPSExfUdpKGEpe3JldHVybiB0aGlzLmthLmxlbmd0aD9SS2EodGhpcyx0aGlzLmthWzBdLGEpOnZvaWQgMH19O18uWm49ZnVuY3Rpb24oYSxiKXthLmthLnB1c2goe2N0b3I6Yn0pfTtfLiRuPWZ1bmN0aW9uKGEsYil7YS5rYS5wdXNoKHtpbnN0YW5jZTpifSl9O18uYW89Y2xhc3MgZXh0ZW5kcyBfLlNLYXt9O3ZhciBXbWE7Xy5US2E9KGEsYik9PntpZihhLmxlbmd0aCE9PTApcmV0dXJuIGIoYVswXSl9O18uVUthPShhLGIpPT57Zm9yKGxldCBjIG9mIGEpaWYoYT1iKGMpLGEhPW51bGwpcmV0dXJuIGF9O1dtYT1hPT57dmFyIGI9Xy5ZbihfLlZLYSk7Zm9yKGxldCBjIG9mIGIpaWYoYShjKSlicmVha307dmFyIFdLYTtXS2E9ZnVuY3Rpb24oYSl7aWYoIWEucHJvdG9jb2x8fCFhLmhvc3RuYW1lKXJldHVybiIiO3ZhciBiPWAke2EucHJvdG9jb2x9Ly8ke2EuaG9zdG5hbWV9YDthLnBvcnQmJihiKz1gOiR7YS5wb3J0fWApO3JldHVybiBifTtfLlhLYT1mdW5jdGlvbihhKXthPWEuc2VhcmNoUGFyYW1zLnRvU3RyaW5nKCk7cmV0dXJuKGE/Ij8iOiIiKSthfTtfLllLYT1mdW5jdGlvbihhLGIpe2IubGVuZ3RoJiZiLmNoYXJBdCgwKT09Ij8iJiYoYj1iLnN1YnN0cigxKSk7YS5zZWFyY2hQYXJhbXMuc2V0VmFsdWUoYil9OwpfLlpLYT1mdW5jdGlvbihhLGIpe2EucHJvdG9jb2w9Yi5wcm90b2NvbDthLnVzZXJuYW1lPWIudXNlcm5hbWU7YS5wYXNzd29yZD1iLnBhc3N3b3JkO2EuaG9zdG5hbWU9Yi5ob3N0bmFtZTthLnBvcnQ9Yi5wb3J0O2EucGF0aG5hbWU9Yi5wYXRobmFtZTthLnNlYXJjaD1iLnNlYXJjaDthLmhhc2g9Yi5oYXNoO2Euc2VhcmNoUGFyYW1zPWIuc2VhcmNoUGFyYW1zLmNsb25lKCk7YS5vcmlnaW49Yi5vcmlnaW59OwpfLlJlPWNsYXNze2NvbnN0cnVjdG9yKGEse3o2YjpiPV8uWG59PXt9KXthPWE9PT0iIj9bXTpfLmpkKGEpO3ZhciBjPWFbMV18fCIiO3RoaXMucHJvdG9jb2w9YysoYz8iOiI6IiIpO2M9KGFbMl18fCIiKS5zcGxpdCgiOiIpO3RoaXMudXNlcm5hbWU9Yy5zaGlmdCgpfHwiIjt0aGlzLnBhc3N3b3JkPWMuam9pbigiOiIpO3RoaXMuaG9zdG5hbWU9YVszXXx8IiI7dGhpcy5wb3J0PWFbNF18fCIiO3RoaXMucGF0aG5hbWU9YVs1XXx8IiI7dmFyIGQ9YVs2XXx8IiI7dGhpcy5zZWFyY2g9KGQ/Ij8iOiIiKStkO2E9YVs3XXx8IiI7dGhpcy5oYXNoPShhPyIjIjoiIikrYTt0aGlzLm9hPXR5cGVvZiBPYmplY3QuZGVmaW5lUHJvcGVydGllcyE9PSJmdW5jdGlvbiI7dGhpcy5zZWFyY2hQYXJhbXM9bmV3IF8uUUthKGQsYik7dGhpcy5vcmlnaW49V0thKHRoaXMpO3RoaXMub2E/dGhpcy5zZWFyY2hQYXJhbXM9Xy5US2EoXy5ZbihfLiRLYSksZT0+ZS5tcmIodGhpcyxkLGIpKXx8dGhpcy5zZWFyY2hQYXJhbXM6Ck9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKHRoaXMse3NlYXJjaDp7Z2V0OigpPT5fLlhLYSh0aGlzKSxzZXQ6ZT0+Xy5ZS2EodGhpcyxlKX19KX1jbG9uZSgpe3ZhciBhPW5ldyBfLlJlKCIiKTtfLlpLYShhLHRoaXMpO3JldHVybiBhfXRvU3RyaW5nKGE9ITEpe3JldHVybiBfLllqYShhPyIiOnRoaXMucHJvdG9jb2wuc3Vic3RyKDAsdGhpcy5wcm90b2NvbC5sZW5ndGgtMSksYT8iIjp0aGlzLnVzZXJuYW1lKyh0aGlzLnBhc3N3b3JkPyI6IjoiIikrdGhpcy5wYXNzd29yZCxhPyIiOnRoaXMuaG9zdG5hbWUsYT8iIjp0aGlzLnBvcnQsdGhpcy5wYXRobmFtZSx0aGlzLnNlYXJjaC5zdWJzdHIoMSksdGhpcy5oYXNoLnN1YnN0cigxKSl9fTtfLiRLYT1uZXcgXy5hbztfLmFMYT1jbGFzc3tsb2coYSxiKXtfLnBHYXx8Xy5QZSgiIiwiIixfLkhtYShhLGIpKX19O18uYkxhPWZ1bmN0aW9uKCl7cmV0dXJuIG5ldyBfLmFMYX07Xy5ibz1jbGFzc3tjb25zdHJ1Y3Rvcih7cGF0aDphPSIvZ2VuXzIwNCIsRkY6Yj0hMH09e30pe3RoaXMuc2VuZGVyPV8uYkxhKCk7dGhpcy5wYXRoPWE7dGhpcy5GRj1ifWxvZ0RhdGEoYSl7dGhpcy5GRj90aGlzLnNlbmRlci5sb2coXy5HbWEodGhpcy5wYXRoLGEpKTp0aGlzLnNlbmRlci5sb2codGhpcy5wYXRoLGEpfX07Xy5jTGE9ZnVuY3Rpb24oYSxiKXtyZXR1cm4gXy5sayhhLDEzLGIpfTtfLmRMYT1jbGFzcyBleHRlbmRzIF8ubHtjb25zdHJ1Y3RvcihhKXtzdXBlcihhKX19O18uZkxhPWZ1bmN0aW9uKGEpe3ZhciBiPW5ldyBfLmVMYTtyZXR1cm4gXy5TYihiLF8uZExhLDIsYSl9O18uZUxhPWNsYXNzIGV4dGVuZHMgXy5se2NvbnN0cnVjdG9yKGEpe3N1cGVyKGEpfX07Xy5nTGE9ZnVuY3Rpb24oYSxiKXtyZXR1cm4gXy5TYihhLF8uZUxhLDEsYil9O18uaExhPWNsYXNzIGV4dGVuZHMgXy5se2NvbnN0cnVjdG9yKGEpe3N1cGVyKGEpfWdldENvbnRleHQoKXtyZXR1cm4gXy5xKHRoaXMsXy5lTGEsMSl9fTt2YXIgaUxhPVswLFswLDEsWzAsMTIsXy5DLDEwLF8uRF0sWzAsNyxbMCxfLkMsLTFdXV1dO18uaExhLnByb3RvdHlwZS5vYT1fLiRiKGlMYSk7dmFyIGpMYTtqTGE9Xy5YYihfLmhMYSxpTGEpO18ua0xhPV8uWWIoaUxhKTtfLlNuWzUyNTAwMjc2M109aUxhO18uY2g9ZnVuY3Rpb24oYSl7cmV0dXJuKG5ldyBfLmxMYShhKSkuR2MoImVpIiwoMCxfLnZtLml4KSgpKX07Xy5jbz1mdW5jdGlvbihhLGIsYyl7cmV0dXJuKG5ldyBfLmxMYShiLGMpKS5HYygiZWkiLGEpfTtfLm1MYT1mdW5jdGlvbihhLGIpe3ZhciBjPV8ueWUoYSk7cmV0dXJuIGM/KG5ldyBfLmxMYShiKSkuR2MoInZlZCIsYyk6KGE9Xy5hbWEoYSkpP18uY28oYSxiKTpudWxsfTsKXy5sTGE9Y2xhc3N7Y29uc3RydWN0b3IoYT1uZXcgXy5ibyxiPXtId2I6ISh3aW5kb3cuZ29vZ2xlJiZ3aW5kb3cuZ29vZ2xlLnN0dnNjKX0pe3RoaXMudHJhbnNwb3J0PWE7dGhpcy5vcHRpb25zPWI7dGhpcy5kYXRhPW5ldyBNYXA7dGhpcy5HYygiYXR5cCIsImkiKTt0aGlzLm9wdGlvbnMuSHdiJiYoXy5zbWEoKSYmdGhpcy5HYygiYmIiLCIxIiksKChhPV8ucW1hKCkpP2EudHlwZT09PSJyZWxvYWQiOnJtYSgpPT09MSkmJnRoaXMuR2MoInIiLCIxIikpO3dpbmRvdy5nb29nbGUmJndpbmRvdy5nb29nbGUuc3R2c2MmJih0aGlzLkdjKCJzc3IiLCIxIiksd2luZG93Lmdvb2dsZS5zdHZzYy5pc0JGJiZ0aGlzLkdjKCJiYiIsIjEiKSk7YT1fLkJkKCJxZkkwWmMiKTthLkxiKCkmJnRoaXMuR2MoInNjaWZpIixfLlBhKF8ub20oYSkpKTthPV8uQmQoIkpISEt1YiIpO2lmKGEuTGIoKSl7YTp7YT1fLm9tKGEpO3RyeXt2YXIgYz1qTGEoXy5RYShhKSl9Y2F0Y2goZyl7Yz0hMTticmVhayBhfWxldCBkLAplLGY7Yz0oZj0oZD1jLmdldENvbnRleHQoKSk9PW51bGw/dm9pZCAwOihlPV8ucShkLF8uZExhLDIpKT09bnVsbD92b2lkIDA6Xy5BKGUsMjQpKSE9bnVsbD9mOiExfWMmJnRoaXMuR2MoInpjY3BtIiwiZXBpIil9fUdjKGEsYil7dGhpcy5kYXRhLnNldChhLGIpO3JldHVybiB0aGlzfWdldERhdGEoKXtyZXR1cm4gdGhpcy5kYXRhfWxvZygpe3RoaXMudHJhbnNwb3J0LmxvZ0RhdGEodGhpcy5kYXRhKTtyZXR1cm4gdGhpc319O18uSm1hPW5ldyBNYXA7Xy5uTGE9Y2xhc3MgZXh0ZW5kcyBfLmx7Y29uc3RydWN0b3IoYSl7c3VwZXIoYSl9Z2V0SWQoKXtyZXR1cm4gXy5naCh0aGlzLDEpfU1jKGEpe3JldHVybiBfLmZoKHRoaXMsMSxhKX1ZZygpe3JldHVybiBfLnBoKHRoaXMsMSl9fTtfLm9MYT1mdW5jdGlvbihhKXtyZXR1cm4gbmV3IF8uWGUoMCxgTWlzc2luZyAke2F9YCl9O18uQUFhPWZ1bmN0aW9uKCl7cmV0dXJuIG5ldyBfLlhlKCJ1bmtub3duX2Vycm9yIiwiU2VydmljZSBpcyBub3QgYXZhaWxhYmxlISIpfTtfLnBMYT1mdW5jdGlvbihhKXtyZXR1cm4gbmV3IF8uWGUoXy5naChhLDEpLF8uZ2goYSwyKSl9O18uWGU9Y2xhc3MgZXh0ZW5kcyBFcnJvcntjb25zdHJ1Y3RvcihhLGIsYyl7c3VwZXIoYCR7YX06JHtiP2AgJHtifWA6IiJ9JHtjJiZjLm1lc3NhZ2U/YCAke2MubWVzc2FnZX1gOiIifWApO3RoaXMuSUFhPWF9fTt2YXIgcUxhLFVtYSxyTGEsc0xhLFFtYTsKcUxhPWZ1bmN0aW9uKGEsYil7dmFyIGM9RGF0ZS5ub3coKTtpZighYS5vYS5oYXMoYikpcmV0dXJuIGM9e2NvdW50OjEsZ1dhOkRhdGUubm93KCksWDBhOjEsWXRhOjB9LGEub2Euc2V0KGIsYyksITE7dmFyIGQ9YS5vYS5nZXQoYik7ZC5jb3VudCs9MTtpZihjLWQuZ1dhPjQqTWF0aC5wb3coMixkLll0YSkqMjAwKXJldHVybiBkLlgwYSs9MSxkLmdXYT1jLGQuWXRhPU1hdGgubWF4KGQuWXRhLTEsMCksYS5vYS5zZXQoYixkKSwhMTtpZihjLWQuZ1dhPk1hdGgucG93KDIsZC5ZdGEpKjIwMClyZXR1cm4gZC5YMGErPTEsZC5nV2E9YyxkLll0YT1NYXRoLm1pbihkLll0YSsxLDgpLGEub2Euc2V0KGIsZCksITE7TWF0aC5yYW5kb20oKTw9LjEmJmEud2E8NSYmKGEud2ErKyxfLmNoKCkuR2MoImNhZCIsYGtleS4ke2J9LGVycm9yQ291bnQuJHtkLmNvdW50fSxsTG9nLiR7ZC5nV2F9LHRpbWVzTG9nZ2VkLiR7ZC5YMGF9LGJSYXRlLiR7ZC5ZdGF9LG5vdy4ke2N9YCkubG9nKCkpO3JldHVybiEwfTsKVW1hPWZ1bmN0aW9uKGEsYixjKXt2YXIgZD1yTGEsZT1EYXRlLm5vdygpO2lmKGQua2EubGVuZ3RoPDYwfHxlLWQua2FbMF0+NkU0KXtpZihhPWBtZXNzYWdlOiR7YS5tZXNzYWdlfSwgY29udGV4dDoke0pTT04uc3RyaW5naWZ5KGIpfWAsZ29vZ2xlJiZnb29nbGUuZXJkJiYhZ29vZ2xlLmVyZC5kZXx8IXFMYShkLGEpKXtpZihjJiZjPT09Myl7aWYoZC5BYT49MSlyZXR1cm4hMTtkLkFhKyt9ZC5rYS5sZW5ndGg+PTYwJiZkLmthLnNoaWZ0KCk7ZC5rYS5wdXNoKERhdGUubm93KCkpO3JldHVybiEwfX1lbHNlIE1hdGgucmFuZG9tKCk8PS4xJiZkLndhPDUmJihkLndhKyssXy5jaCgpLkdjKCJjYWQiLGBpbnYuJHtkLmthLmxlbmd0aH0sbEludi4ke2Qua2FbMF19LG5vdy4ke2V9YCkubG9nKCkpO3JldHVybiExfTtyTGE9bmV3IGNsYXNze2NvbnN0cnVjdG9yKCl7dGhpcy5vYT1uZXcgTWFwO3RoaXMua2E9W107dGhpcy53YT10aGlzLkFhPTB9fTtfLlZLYT1uZXcgXy5hbzsKKChzTGE9Xy5lYS5nb29nbGUpPT1udWxsPzA6c0xhLmRsKXx8Xy5lYS5wYXJlbnRXaW5kb3d8fF8uTGkoImdvb2dsZS5kbCIsKGEsYixjLGQpPT57Xy5WZShhLHtEZjpjLGxldmVsOmIsS21hOmR9KX0pO3ZhciB0TGE7KCh0TGE9Xy5lYS5qc2wpPT1udWxsPzA6dExhLmVsKXx8Xy5MaSgianNsLmVsIiwoYSxiKT0+e2J8fChiPXt9KTtiLm1pbGVzdG9uZT1TdHJpbmcoZ29vZ2xlLmpzbG18fDApO2dvb2dsZS5qc2xhJiYoYi5hc3luYz1nb29nbGUuanNsYSk7Xy5WZShhLHtEZjpiLGxldmVsOjB9KX0pO18uVG1hPSgpPT4hMDtfLlZtYT0oKT0+e307UW1hPTA7d2luZG93LmFkZEV2ZW50TGlzdGVuZXIoInBhZ2VoaWRlIiwoKT0+e1FtYSsrfSk7dmFyIHpMYSxFTGEsQ0xhLHdMYSx4TGE7Xy5ZZS5wcm90b3R5cGUuY2FuY2VsPWZ1bmN0aW9uKGEpe2lmKHRoaXMub2EpdGhpcy5yRSBpbnN0YW5jZW9mIF8uWWUmJnRoaXMuckUuY2FuY2VsKCk7ZWxzZXtpZih0aGlzLkpvKXtsZXQgYj10aGlzLkpvO2RlbGV0ZSB0aGlzLkpvO2E/Yi5jYW5jZWwoYSk6KGIuQWEtLSxiLkFhPD0wJiZiLmNhbmNlbCgpKX10aGlzLm5iP3RoaXMubmIuY2FsbCh0aGlzLlBhLHRoaXMpOnRoaXMuTmE9ITA7dGhpcy5vYXx8dGhpcy5rYShuZXcgXy51TGEodGhpcykpfX07Xy5ZZS5wcm90b3R5cGUuT2E9ZnVuY3Rpb24oYSxiKXt0aGlzLkdhPSExO3ZMYSh0aGlzLGEsYil9O3ZhciB2TGE9ZnVuY3Rpb24oYSxiLGMpe2Eub2E9ITA7YS5yRT1jO2Eud2E9IWI7d0xhKGEpfSx5TGE9ZnVuY3Rpb24oYSl7aWYoYS5vYSl7aWYoIWEuTmEpdGhyb3cgbmV3IHhMYShhKTthLk5hPSExfX07Cl8uWWUucHJvdG90eXBlLmNhbGxiYWNrPWZ1bmN0aW9uKGEpe3lMYSh0aGlzKTt2TGEodGhpcywhMCxhKX07Xy5ZZS5wcm90b3R5cGUua2E9ZnVuY3Rpb24oYSl7eUxhKHRoaXMpO3ZMYSh0aGlzLCExLGEpfTt6TGE9YT0+e3Rocm93IGE7fTtfLm5nPWZ1bmN0aW9uKGEsYixjKXtyZXR1cm4gXy55ZihhLGIsbnVsbCxjKX07Xy5BTGE9ZnVuY3Rpb24oYSxiLGMpe3JldHVybiBfLnlmKGEsbnVsbCxiLGMpfTtfLlllLnByb3RvdHlwZS5maW5hbGx5PWZ1bmN0aW9uKGEpe3JldHVybiBfLkJMYShuZXcgUHJvbWlzZSgoYixjKT0+e18ueWYodGhpcyxkPT57YSgpO2IoZCl9LGQ9PnthKCk7YyhkKX0pfSkpfTtfLnlmPWZ1bmN0aW9uKGEsYixjLGQpe3ZhciBlPWEub2E7ZXx8KGI9PT1jP2I9Yz1EbihiKTooYj1EbihiKSxjPURuKGMpKSk7YS5CYS5wdXNoKFtiLGMsZF0pO2UmJndMYShhKTtyZXR1cm4gYX07Cl8uWWUucHJvdG90eXBlLnRoZW49ZnVuY3Rpb24oYSxiLGMpe3ZhciBkLGUsZj1uZXcgXy5TZyhmdW5jdGlvbihnLGgpe2U9ZztkPWh9KTtfLnlmKHRoaXMsZSxmdW5jdGlvbihnKXtnIGluc3RhbmNlb2YgXy51TGE/Zi5jYW5jZWwoKTpkKGcpO3JldHVybiBDTGF9LHRoaXMpO3JldHVybiBmLnRoZW4oYSxiLGMpfTtfLlllLnByb3RvdHlwZS4kZ29vZ19UaGVuYWJsZT0hMDt2YXIgRExhPWZ1bmN0aW9uKGEsYil7YiBpbnN0YW5jZW9mIF8uWWU/Xy5uZyhhLCgwLF8uaWUpKGIubHosYikpOl8ubmcoYSxmdW5jdGlvbigpe3JldHVybiBifSl9O18uWWUucHJvdG90eXBlLmx6PWZ1bmN0aW9uKGEpe3ZhciBiPW5ldyBfLlllO18ueWYodGhpcyxiLmNhbGxiYWNrLGIua2EsYik7YSYmKGIuSm89dGhpcyx0aGlzLkFhKyspO3JldHVybiBifTtfLlllLnByb3RvdHlwZS5pc0Vycm9yPWZ1bmN0aW9uKGEpe3JldHVybiBhIGluc3RhbmNlb2YgRXJyb3J9OwpFTGE9ZnVuY3Rpb24oYSl7cmV0dXJuIF8uWWkoYS5CYSxmdW5jdGlvbihiKXtyZXR1cm4gdHlwZW9mIGJbMV09PT0iZnVuY3Rpb24ifSl9O0NMYT17fTsKd0xhPWZ1bmN0aW9uKGEpe2lmKGEuRWEmJmEub2EmJkVMYShhKSl7dmFyIGI9YS5FYSxjPUZMYVtiXTtjJiYoXy5lYS5jbGVhclRpbWVvdXQoYy5rYSksZGVsZXRlIEZMYVtiXSk7YS5FYT0wfWEuSm8mJihhLkpvLkFhLS0sZGVsZXRlIGEuSm8pO2I9YS5yRTtmb3IodmFyIGQ9Yz0hMTthLkJhLmxlbmd0aCYmIWEuR2E7KXt2YXIgZT1hLkJhLnNoaWZ0KCksZj1lWzBdO2xldCBoPWVbMV07ZT1lWzJdO2lmKGY9YS53YT9oOmYpdHJ5e3ZhciBnPWYuY2FsbChlfHxhLlBhLGIpO2c9PT1DTGEmJihnPXZvaWQgMCk7ZyE9PXZvaWQgMCYmKGEud2E9YS53YSYmKGc9PWJ8fGEuaXNFcnJvcihnKSksYS5yRT1iPWcpO2lmKG5KYShiKXx8dHlwZW9mIF8uZWEuUHJvbWlzZT09PSJmdW5jdGlvbiImJmIgaW5zdGFuY2VvZiBfLmVhLlByb21pc2UpZD0hMCxhLkdhPSEwfWNhdGNoKGspe2I9ayxhLndhPSEwLEVMYShhKXx8KGM9ITApfX1hLnJFPWI7ZCYmKGc9KDAsXy5pZSkoYS5PYSxhLCEwKSxkPSgwLF8uaWUpKGEuT2EsCmEsITEpLGIgaW5zdGFuY2VvZiBfLlllPyhfLnlmKGIsZyxkKSxiLnJiPSEwKTpiLnRoZW4oZyxkKSk7YyYmKGI9bmV3IEdMYShiKSxGTGFbYi5rYV09YixhLkVhPWIua2EpfTtfLkJMYT1mdW5jdGlvbihhKXt2YXIgYj1uZXcgXy5ZZTthLnRoZW4oZnVuY3Rpb24oYyl7Yi5jYWxsYmFjayhjKX0sZnVuY3Rpb24oYyl7Yi5rYShjKX0pO3JldHVybiBifTt4TGE9ZnVuY3Rpb24oYSl7Xy5iYS5jYWxsKHRoaXMpO3RoaXMuSEM9YX07Xy5VaSh4TGEsXy5iYSk7eExhLnByb3RvdHlwZS5tZXNzYWdlPSJEZWZlcnJlZCBoYXMgYWxyZWFkeSBmaXJlZCI7eExhLnByb3RvdHlwZS5uYW1lPSJBbHJlYWR5Q2FsbGVkRXJyb3IiO18udUxhPWZ1bmN0aW9uKGEpe18uYmEuY2FsbCh0aGlzKTt0aGlzLkhDPWF9O18uVWkoXy51TGEsXy5iYSk7Xy51TGEucHJvdG90eXBlLm1lc3NhZ2U9IkRlZmVycmVkIHdhcyBjYW5jZWxlZCI7Xy51TGEucHJvdG90eXBlLm5hbWU9IkNhbmNlbGVkRXJyb3IiOwp2YXIgR0xhPWZ1bmN0aW9uKGEpe3RoaXMua2E9Xy5lYS5zZXRUaW1lb3V0KCgwLF8uaWUpKHRoaXMudGhyb3dFcnJvcix0aGlzKSwwKTt0aGlzLllwPWF9O0dMYS5wcm90b3R5cGUudGhyb3dFcnJvcj1mdW5jdGlvbigpe2RlbGV0ZSBGTGFbdGhpcy5rYV07ekxhKHRoaXMuWXApfTt2YXIgRkxhPXt9O3ZhciBITGE9Y2xhc3MgZXh0ZW5kcyBfLlpke2NvbnN0cnVjdG9yKGEsYil7c3VwZXIoInZpc2liaWxpdHljaGFuZ2UiKTt0aGlzLmhpZGRlbj1hO3RoaXMudmlzaWJpbGl0eVN0YXRlPWJ9fTt2YXIgJG1hPW5ldyBXZWFrTWFwLFptYT1mdW5jdGlvbihhLGIpe2E9W2FdO2ZvcihsZXQgYz1iLmxlbmd0aC0xO2M+PTA7LS1jKWEucHVzaCh0eXBlb2YgYltjXSxiW2NdKTtyZXR1cm4gYS5qb2luKCJcdiIpfTtfLlVpKF8uYm5hLF8uYmUpO18uYWE9Xy5ibmEucHJvdG90eXBlO18uYWEuYXdjPV8uYWYoZnVuY3Rpb24oKXt2YXIgYT10aGlzLmlzU3VwcG9ydGVkKCksYj10aGlzLkVxYigpIT0iaGlkZGVuIjtpZihhKXt2YXIgYztiP2M9KChfLiRrYSgpfHwiIikrInZpc2liaWxpdHljaGFuZ2UiKS50b0xvd2VyQ2FzZSgpOmM9InZpc2liaWxpdHljaGFuZ2UiO2E9Y31lbHNlIGE9bnVsbDtyZXR1cm4gYX0pO18uYWEuRXFiPV8uYWYoZnVuY3Rpb24oKXtyZXR1cm4gY2xhKCJoaWRkZW4iLHRoaXMua2EuZ2V0RG9jdW1lbnQoKSl9KTtfLmFhLk93Yz1fLmFmKGZ1bmN0aW9uKCl7cmV0dXJuIGNsYSgidmlzaWJpbGl0eVN0YXRlIix0aGlzLmthLmdldERvY3VtZW50KCkpfSk7Xy5hYS5pc1N1cHBvcnRlZD1mdW5jdGlvbigpe3JldHVybiEhdGhpcy5FcWIoKX07Xy5hYS5pc0hpZGRlbj1mdW5jdGlvbigpe3JldHVybiEhdGhpcy5rYS5nZXREb2N1bWVudCgpW3RoaXMuRXFiKCldfTsKXy5hYS5nZXRWaXNpYmlsaXR5U3RhdGU9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5pc1N1cHBvcnRlZCgpP3RoaXMua2EuZ2V0RG9jdW1lbnQoKVt0aGlzLk93YygpXTpudWxsfTtfLmFhLmt4Yz1mdW5jdGlvbigpe3ZhciBhPXRoaXMuZ2V0VmlzaWJpbGl0eVN0YXRlKCk7YT1uZXcgSExhKHRoaXMuaXNIaWRkZW4oKSxhKTt0aGlzLmRpc3BhdGNoRXZlbnQoYSl9O18uYWEucWM9ZnVuY3Rpb24oKXtfLkFuKHRoaXMud2EpO18uYm5hLlJkLnFjLmNhbGwodGhpcyl9O3ZhciBjbmE9bnVsbDt2YXIgZm5hO18uSUxhPVJlZ0V4cCgiW0EtWmEtel8tXSsiKTtfLkpMYT1SZWdFeHAoIl4oW0EtWmEtel8tXSspKFxcZCspPyIpO18uS0xhPWZ1bmN0aW9uKCl7fTtfLmxuYT1mdW5jdGlvbigpe307Xy5mbz1jbGFzc3tjb25zdHJ1Y3RvcihhLGIpe3RoaXMuZWxlbWVudD1hO3RoaXMudHlwZT1ifX07dmFyIE9MYTtfLmtuYT1mdW5jdGlvbihhLGIsYyxkPSIiKXthLnp3YS5wdXNoKHtsQmE6Yyx0YXJnZXRFbGVtZW50OmQsR0s6Yn0pfTtfLkxMYT1mdW5jdGlvbihhLGIsYz0iIil7Xy5rbmEoYSwic2hvdyIsYixjKX07Xy5NTGE9ZnVuY3Rpb24oYSxiPSIiLGM9IiIpe18ua25hKGEsImhpZGUiLGIsYyl9O18uTkxhPWZ1bmN0aW9uKGEsYixjPSIiKXtfLmtuYShhLCJpbnNlcnQiLGIsYyl9O09MYT1mdW5jdGlvbihhLGIpe3ZhciBjPSIiO2ImJihjPXR5cGVvZiBiPT09InN0cmluZyI/Yjpnb29nbGUuZ2V0RUkoYikpO3JldHVybiBjJiZjIT09YS5rYT9jOiIifTsKXy5mZj1mdW5jdGlvbihhKXt2YXIgYj1bXTtmb3IobGV0IGQ9MCxlO2U9YS56d2FbZCsrXTspe2xldCBmPWUubEJhLGc9ZS5HSyxoPWUuT2U7dmFyIGM9ZS5sOGE7bGV0IGs9ZS5XR2QsbT1PTGEoYSxlLnRhcmdldEVsZW1lbnQpO2M9T0xhKGEsYyk7c3dpdGNoKGcpe2Nhc2UgInNob3ciOmIucHVzaChgJHtmfS4ke219LnNgKTticmVhaztjYXNlICJpbnNlcnQiOmIucHVzaChgJHtmfS4ke219Lmkke2M/YC4wLiR7aH0uJHtjfWA6IiJ9YCk7YnJlYWs7Y2FzZSAiZGVkdXBlLWluc2VydCI6Yi5wdXNoKGAke2Z9LiR7bX0uaSR7Yz9gLjEuJHtofS4ke2N9YDoiLjEifWApO2JyZWFrO2Nhc2UgImhpZGUiOmIucHVzaChgJHtmfS4ke219LmhgKTticmVhaztjYXNlICJjb3B5IjpiLnB1c2goYC4ke2t9LmNgKX19cmV0dXJuIGIubGVuZ3RoPyIxIitiLmpvaW4oIjsiKToiIn07Xy5QTGE9ZnVuY3Rpb24oYSl7cmV0dXJuKGE9Xy5mZihhKSk/YCZ2ZXQ9JHthfWA6IiJ9OwpfLmVmPWNsYXNze2NvbnN0cnVjdG9yKCl7dGhpcy56d2E9W107dGhpcy5rYT0iIn19O3ZhciBRTGE7UUxhPWNsYXNze2NvbnN0cnVjdG9yKGEsYj0iL2dlbl8yMDQiKXt0aGlzLnBhdGg9Yjt0aGlzLnVyaT1gJHt0aGlzLnBhdGh9P2VpPSR7Xy5Ybi5GYyhhKX1gfUdjKGEsYil7dGhpcy51cmkrPWAmJHthfT0ke18uWG4uRmMoYil9YH1sb2coKXt0eXBlb2Ygd2luZG93Lm5hdmlnYXRvci5zZW5kQmVhY29uPT09ImZ1bmN0aW9uIj9fLk1rYSh0aGlzLnVyaSk6Z29vZ2xlLmxvZygiIiwiIix0aGlzLnVyaSl9fTtfLm1uYT1mdW5jdGlvbihhLGIpe3JldHVybiBuZXcgUUxhKGEsYil9O18uUkxhPW5ldyBfLmFvO3ZhciBnbyxobztnbz1mdW5jdGlvbihhKXthLkdpfHwoYS5HaT1fLlJMYS5HaSgpKTtyZXR1cm4gYS5HaX07CmhvPW5ldyBjbGFzc3trYSgpe3JldHVybiB0aGlzLkdpIT1udWxsfVN3KGEpe3JldHVybiBnbyh0aGlzKS5TdyhhKX1IYmIoYSl7cmV0dXJuIGdvKHRoaXMpLkhiYihhKX1mbHVzaCgpe2dvKHRoaXMpLmZsdXNoKCl9aHFhKGEpe3JldHVybiBnbyh0aGlzKS5ocWEoYSl9UkVhKGEsYil7cmV0dXJuIGdvKHRoaXMpLlJFYShhLGIpfXNldFRpbWVvdXQoYSxiLC4uLmMpe3JldHVybiBnbyh0aGlzKS5zZXRUaW1lb3V0KGEsYiwuLi5jKX1jbGVhclRpbWVvdXQoYSl7Z28odGhpcykuY2xlYXJUaW1lb3V0KGEpfWNsZWFySW50ZXJ2YWwoYSl7Z28odGhpcykuY2xlYXJJbnRlcnZhbChhKX1zZXRJbnRlcnZhbChhLGIsLi4uYyl7cmV0dXJuIGdvKHRoaXMpLnNldEludGVydmFsKGEsYiwuLi5jKX15aWVsZCgpe3JldHVybiBnbyh0aGlzKS55aWVsZCgpfXJlcXVlc3RJZGxlQ2FsbGJhY2soYSxiKXtyZXR1cm4gZ28odGhpcykucmVxdWVzdElkbGVDYWxsYmFjayhhLGIpfWNhbmNlbElkbGVDYWxsYmFjayhhKXtnbyh0aGlzKS5jYW5jZWxJZGxlQ2FsbGJhY2soYSl9fTsKXy5TTGE9aG8uU3cuYmluZChobyk7Xy5pbz1oby5IYmIuYmluZChobyk7aG8uZmx1c2guYmluZChobyk7Xy5tZj1oby5ocWEuYmluZChobyk7Xy5UTGE9aG8uUkVhLmJpbmQoaG8pO18uam89aG8uc2V0VGltZW91dC5iaW5kKGhvKTtfLmtvPWhvLmNsZWFyVGltZW91dC5iaW5kKGhvKTtfLmxvPWhvLnNldEludGVydmFsLmJpbmQoaG8pO18ubW89aG8uY2xlYXJJbnRlcnZhbC5iaW5kKGhvKTtfLlVMYT1oby55aWVsZC5iaW5kKGhvKTtfLlZMYT1oby5yZXF1ZXN0SWRsZUNhbGxiYWNrLmJpbmQoaG8pO2hvLmNhbmNlbElkbGVDYWxsYmFjay5iaW5kKGhvKTtoby5rYS5iaW5kKGhvKTsoZnVuY3Rpb24oYSl7S0phPWI9PntZbWEoYiwiZ3AiKX07ekxhPWI9PntpZihTdHJpbmcoYikuc3RhcnRzV2l0aCgiVHlwZUVycm9yOiBhLnRhcmdldEVsZW1lbnQuVCIpKXtsZXQgYz0hMSxkPV8ub2UoKS5nZXRFbGVtZW50c0J5VGFnTmFtZSgiaWZyYW1lIik7Zm9yKGxldCBlIG9mIGQpZS5zcmMuaW5kZXhPZigiL3V2aWV3ZXI/Iik+MCYmKGM9ITApO18uVmUoYix7RGY6e3VyOiJkZiIsdXY6U3RyaW5nKGMpfSxsZXZlbDozfSl9ZWxzZSBZbWEoYiwiZGYiKX07YSYmd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoInVuaGFuZGxlZHJlamVjdGlvbiIsYj0+e2IucHJldmVudERlZmF1bHQoKTtZbWEoYi5yZWFzb24sIm5wIil9KX0pKCEwKTtfLkxpKCJnb29nbGUubmF2LmdvIixfLmNmKTtfLkxpKCJnb29nbGUubmF2LnNlYXJjaCIsXy5obmEpO18uTGkoImdvb2dsZS5sdmUuRyIsXy5mbyk7Cl8uTGkoImdvb2dsZS5sdmUuR1QiLHtLb2Q6InNob3ciLEhJREU6ImhpZGUiLEo5YzoiaW5zZXJ0IixTMWM6ImRlZHVwZS1pbnNlcnQiLGswYzoiY29weSJ9KTtfLkxpKCJnb29nbGUubHZlLmxvZ0ciLF8uam5hKTtfLkxpKCJnb29nbGUuc2V0VGltZW91dFN4IixfLmpvKTtfLkxpKCJnb29nbGUubmF2LmdldExvY2F0aW9uIiwoKT0+d2luZG93LmxvY2F0aW9uLmhyZWYpO3ZhciBXTGE9RXJyb3IoIlVhIiksQm5hPUVycm9yKCJWYSIpO18uZ2YucHJvdG90eXBlLm5leHQ9ZnVuY3Rpb24oKXtyZXR1cm4gXy5wbmF9O18ucG5hPXtkb25lOiEwLHZhbHVlOnZvaWQgMH07Xy5nZi5wcm90b3R5cGUuWUY9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpc307dmFyICRMYT1mdW5jdGlvbihhKXtpZihhIGluc3RhbmNlb2YgWExhfHxhIGluc3RhbmNlb2YgWUxhfHxhIGluc3RhbmNlb2YgWkxhKXJldHVybiBhO2lmKHR5cGVvZiBhLm5leHQ9PSJmdW5jdGlvbiIpcmV0dXJuIG5ldyBYTGEoKCk9PmEpO2lmKHR5cGVvZiBhW1N5bWJvbC5pdGVyYXRvcl09PSJmdW5jdGlvbiIpcmV0dXJuIG5ldyBYTGEoKCk9PmFbU3ltYm9sLml0ZXJhdG9yXSgpKTtpZih0eXBlb2YgYS5ZRj09ImZ1bmN0aW9uIilyZXR1cm4gbmV3IFhMYSgoKT0+YS5ZRigpKTt0aHJvdyBFcnJvcigiWGEiKTt9LFhMYT1jbGFzc3tjb25zdHJ1Y3RvcihhKXt0aGlzLm9hPWF9WUYoKXtyZXR1cm4gbmV3IFlMYSh0aGlzLm9hKCkpfVtTeW1ib2wuaXRlcmF0b3JdKCl7cmV0dXJuIG5ldyBaTGEodGhpcy5vYSgpKX1rYSgpe3JldHVybiBuZXcgWkxhKHRoaXMub2EoKSl9fSxZTGE9Y2xhc3MgZXh0ZW5kcyBfLmdme2NvbnN0cnVjdG9yKGEpe3N1cGVyKCk7dGhpcy5vYT1hfW5leHQoKXtyZXR1cm4gdGhpcy5vYS5uZXh0KCl9W1N5bWJvbC5pdGVyYXRvcl0oKXtyZXR1cm4gbmV3IFpMYSh0aGlzLm9hKX1rYSgpe3JldHVybiBuZXcgWkxhKHRoaXMub2EpfX0sClpMYT1jbGFzcyBleHRlbmRzIFhMYXtjb25zdHJ1Y3RvcihhKXtzdXBlcigoKT0+YSk7dGhpcy53YT1hfW5leHQoKXtyZXR1cm4gdGhpcy53YS5uZXh0KCl9fTt2YXIgYU1hPWZ1bmN0aW9uKCl7fTtfLlVpKGFNYSxfLm5uYSk7YU1hLnByb3RvdHlwZS56aT1mdW5jdGlvbigpe3ZhciBhPTA7Zm9yKGxldCBiIG9mIHRoaXMpYSsrO3JldHVybiBhfTthTWEucHJvdG90eXBlW1N5bWJvbC5pdGVyYXRvcl09ZnVuY3Rpb24oKXtyZXR1cm4gJExhKHRoaXMuWUYoITApKS5rYSgpfTthTWEucHJvdG90eXBlLmNsZWFyPWZ1bmN0aW9uKCl7dmFyIGE9QXJyYXkuZnJvbSh0aGlzKTtmb3IobGV0IGIgb2YgYSl0aGlzLnJlbW92ZShiKX07Xy5VaSh4bmEsYU1hKTtfLmFhPXhuYS5wcm90b3R5cGU7Xy5hYS5pc0F2YWlsYWJsZT1mdW5jdGlvbigpe2lmKHRoaXMub2E9PT1udWxsKXt2YXIgYT10aGlzLmthO2lmKGEpdHJ5e2Euc2V0SXRlbSgiX19zYWsiLCIxIik7YS5yZW1vdmVJdGVtKCJfX3NhayIpO3ZhciBiPSEwfWNhdGNoKGMpe2I9YyBpbnN0YW5jZW9mIERPTUV4Y2VwdGlvbiYmKGMubmFtZT09PSJRdW90YUV4Y2VlZGVkRXJyb3IifHxjLmNvZGU9PT0yMnx8Yy5jb2RlPT09MTAxNHx8Yy5uYW1lPT09Ik5TX0VSUk9SX0RPTV9RVU9UQV9SRUFDSEVEIikmJmEmJmEubGVuZ3RoIT09MH1lbHNlIGI9ITE7dGhpcy5vYT1ifXJldHVybiB0aGlzLm9hfTsKXy5hYS5zZXQ9ZnVuY3Rpb24oYSxiKXtiTWEodGhpcyk7dHJ5e3RoaXMua2Euc2V0SXRlbShhLGIpfWNhdGNoKGMpe2lmKHRoaXMua2EubGVuZ3RoPT0wKXRocm93IlN0b3JhZ2UgbWVjaGFuaXNtOiBTdG9yYWdlIGRpc2FibGVkIjt0aHJvdyJTdG9yYWdlIG1lY2hhbmlzbTogUXVvdGEgZXhjZWVkZWQiO319O18uYWEuZ2V0PWZ1bmN0aW9uKGEpe2JNYSh0aGlzKTthPXRoaXMua2EuZ2V0SXRlbShhKTtpZih0eXBlb2YgYSE9PSJzdHJpbmciJiZhIT09bnVsbCl0aHJvdyJTdG9yYWdlIG1lY2hhbmlzbTogSW52YWxpZCB2YWx1ZSB3YXMgZW5jb3VudGVyZWQiO3JldHVybiBhfTtfLmFhLnJlbW92ZT1mdW5jdGlvbihhKXtiTWEodGhpcyk7dGhpcy5rYS5yZW1vdmVJdGVtKGEpfTtfLmFhLnppPWZ1bmN0aW9uKCl7Yk1hKHRoaXMpO3JldHVybiB0aGlzLmthLmxlbmd0aH07Cl8uYWEuWUY9ZnVuY3Rpb24oYSl7Yk1hKHRoaXMpO3ZhciBiPTAsYz10aGlzLmthLGQ9bmV3IF8uZ2Y7ZC5uZXh0PWZ1bmN0aW9uKCl7aWYoYj49Yy5sZW5ndGgpcmV0dXJuIF8ucG5hO3ZhciBlPWMua2V5KGIrKyk7aWYoYSlyZXR1cm4gXy5vbmEoZSk7ZT1jLmdldEl0ZW0oZSk7aWYodHlwZW9mIGUhPT0ic3RyaW5nIil0aHJvdyJTdG9yYWdlIG1lY2hhbmlzbTogSW52YWxpZCB2YWx1ZSB3YXMgZW5jb3VudGVyZWQiO3JldHVybiBfLm9uYShlKX07cmV0dXJuIGR9O18uYWEuY2xlYXI9ZnVuY3Rpb24oKXtiTWEodGhpcyk7dGhpcy5rYS5jbGVhcigpfTtfLmFhLmtleT1mdW5jdGlvbihhKXtiTWEodGhpcyk7cmV0dXJuIHRoaXMua2Eua2V5KGEpfTt2YXIgYk1hPWZ1bmN0aW9uKGEpe2lmKGEua2E9PW51bGwpdGhyb3cgRXJyb3IoIllhIik7YS5pc0F2YWlsYWJsZSgpfHxfLmZhKEVycm9yKCJZYSIpKX07Xy5VaShfLmhmLHhuYSk7Xy5VaShfLnluYSx4bmEpO18uVWkoXy56bmEsYU1hKTtfLnpuYS5wcm90b3R5cGUuc2V0PWZ1bmN0aW9uKGEsYil7dGhpcy5vYS5zZXQodGhpcy5rYSthLGIpfTtfLnpuYS5wcm90b3R5cGUuZ2V0PWZ1bmN0aW9uKGEpe3JldHVybiB0aGlzLm9hLmdldCh0aGlzLmthK2EpfTtfLnpuYS5wcm90b3R5cGUucmVtb3ZlPWZ1bmN0aW9uKGEpe3RoaXMub2EucmVtb3ZlKHRoaXMua2ErYSl9O18uem5hLnByb3RvdHlwZS5ZRj1mdW5jdGlvbihhKXt2YXIgYj10aGlzLm9hW1N5bWJvbC5pdGVyYXRvcl0oKSxjPXRoaXMsZD1uZXcgXy5nZjtkLm5leHQ9ZnVuY3Rpb24oKXt2YXIgZT1iLm5leHQoKTtpZihlLmRvbmUpcmV0dXJuIGU7Zm9yKGU9ZS52YWx1ZTtlLnNsaWNlKDAsYy5rYS5sZW5ndGgpIT1jLmthOyl7ZT1iLm5leHQoKTtpZihlLmRvbmUpcmV0dXJuIGU7ZT1lLnZhbHVlfXJldHVybiBfLm9uYShhP2Uuc2xpY2UoYy5rYS5sZW5ndGgpOmMub2EuZ2V0KGUpKX07cmV0dXJuIGR9O18uY01hPV8uZWEuSlNPTi5zdHJpbmdpZnk7Xy5BbmEucHJvdG90eXBlLnNldD1mdW5jdGlvbihhLGIpe2I9PT12b2lkIDA/dGhpcy5pTi5yZW1vdmUoYSk6dGhpcy5pTi5zZXQoYSxfLmNNYShiKSl9O18uQW5hLnByb3RvdHlwZS5nZXQ9ZnVuY3Rpb24oYSl7dHJ5e3ZhciBiPXRoaXMuaU4uZ2V0KGEpfWNhdGNoKGMpe3JldHVybn1pZihiIT09bnVsbCl0cnl7cmV0dXJuIEpTT04ucGFyc2UoYil9Y2F0Y2goYyl7dGhyb3ciU3RvcmFnZTogSW52YWxpZCB2YWx1ZSB3YXMgZW5jb3VudGVyZWQiO319O18uQW5hLnByb3RvdHlwZS5yZW1vdmU9ZnVuY3Rpb24oYSl7dGhpcy5pTi5yZW1vdmUoYSl9O3ZhciBkTWE7Xy5hYT1EbmEucHJvdG90eXBlO18uYWEuaXNFbmFibGVkPWZ1bmN0aW9uKCl7aWYoIV8uZWEubmF2aWdhdG9yLmNvb2tpZUVuYWJsZWQpcmV0dXJuITE7aWYoIXRoaXMuaXNFbXB0eSgpKXJldHVybiEwO3RoaXMuc2V0KCJURVNUQ09PS0lFU0VOQUJMRUQiLCIxIix7bWF4QWdlOjYwfSk7aWYodGhpcy5nZXQoIlRFU1RDT09LSUVTRU5BQkxFRCIpIT09IjEiKXJldHVybiExO3RoaXMucmVtb3ZlKCJURVNUQ09PS0lFU0VOQUJMRUQiKTtyZXR1cm4hMH07Cl8uYWEuc2V0PWZ1bmN0aW9uKGEsYixjKXt2YXIgZD0hMTtpZih0eXBlb2YgYz09PSJvYmplY3QiKXt2YXIgZT1jLnNhbWVTaXRlO2Q9Yy5zZWN1cmV8fCExO3ZhciBmPWMuZG9tYWlufHx2b2lkIDA7dmFyIGc9Yy5wYXRofHx2b2lkIDA7dmFyIGg9Yy5tYXhBZ2V9aWYoL1s7PVxzXS8udGVzdChhKSl0aHJvdyBFcnJvcigiWmFgIithKTtpZigvWztcclxuXS8udGVzdChiKSl0aHJvdyBFcnJvcigiJGFgIitiKTtoPT09dm9pZCAwJiYoaD0tMSk7Yz1mPyI7ZG9tYWluPSIrZjoiIjtnPWc/IjtwYXRoPSIrZzoiIjtkPWQ/IjtzZWN1cmUiOiIiO2g9aDwwPyIiOmg9PTA/IjtleHBpcmVzPSIrKG5ldyBEYXRlKDE5NzAsMSwxKSkudG9VVENTdHJpbmcoKToiO2V4cGlyZXM9IisobmV3IERhdGUoRGF0ZS5ub3coKStoKjFFMykpLnRvVVRDU3RyaW5nKCk7dGhpcy5rYS5jb29raWU9YSsiPSIrYitjK2craCtkKyhlIT1udWxsPyI7c2FtZXNpdGU9IitlOiIiKX07Cl8uYWEuZ2V0PWZ1bmN0aW9uKGEsYil7dmFyIGM9YSsiPSIsZD0odGhpcy5rYS5jb29raWV8fCIiKS5zcGxpdCgiOyIpO2ZvcihsZXQgZT0wLGY7ZTxkLmxlbmd0aDtlKyspe2Y9Xy5tYShkW2VdKTtpZihmLmxhc3RJbmRleE9mKGMsMCk9PTApcmV0dXJuIGYuc2xpY2UoYy5sZW5ndGgpO2lmKGY9PWEpcmV0dXJuIiJ9cmV0dXJuIGJ9O18uYWEucmVtb3ZlPWZ1bmN0aW9uKGEsYixjKXt2YXIgZD10aGlzLmdldChhKSE9PXZvaWQgMDt0aGlzLnNldChhLCIiLHttYXhBZ2U6MCxwYXRoOmIsZG9tYWluOmN9KTtyZXR1cm4gZH07Xy5hYS5nZXRLZXlzPWZ1bmN0aW9uKCl7cmV0dXJuIGRNYSh0aGlzKS5rZXlzfTtfLmFhLnl6PWZ1bmN0aW9uKCl7cmV0dXJuIGRNYSh0aGlzKS52YWx1ZXN9O18uYWEuaXNFbXB0eT1mdW5jdGlvbigpe3JldHVybiF0aGlzLmthLmNvb2tpZX07Cl8uYWEuemk9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5rYS5jb29raWU/KHRoaXMua2EuY29va2llfHwiIikuc3BsaXQoIjsiKS5sZW5ndGg6MH07Xy5hYS5jbGVhcj1mdW5jdGlvbigpe3ZhciBhPWRNYSh0aGlzKS5rZXlzO2ZvcihsZXQgYj1hLmxlbmd0aC0xO2I+PTA7Yi0tKXRoaXMucmVtb3ZlKGFbYl0pfTtkTWE9ZnVuY3Rpb24oYSl7YT0oYS5rYS5jb29raWV8fCIiKS5zcGxpdCgiOyIpO3ZhciBiPVtdLGM9W107Zm9yKGxldCBmPTA7ZjxhLmxlbmd0aDtmKyspe3ZhciBkPV8ubWEoYVtmXSk7dmFyIGU9ZC5pbmRleE9mKCI9Iik7ZT09LTE/KGIucHVzaCgiIiksYy5wdXNoKGQpKTooYi5wdXNoKGQuc3Vic3RyaW5nKDAsZSkpLGMucHVzaChkLnN1YnN0cmluZyhlKzEpKSl9cmV0dXJue2tleXM6Yix2YWx1ZXM6Y319O18uamY9bmV3IERuYSh0eXBlb2YgZG9jdW1lbnQ9PSJ1bmRlZmluZWQiP251bGw6ZG9jdW1lbnQpO3ZhciBlTWE9UmVnRXhwKCJecDooW2EtelxcKl0pXFx8bDooXFxkKykiLCJpIiksSW5hPWNsYXNze2NvbnN0cnVjdG9yKGEsYixjKXt0aGlzLmthPWI7dGhpcy5vYT1jO3RoaXMubWV0YWRhdGE9YX1nZXRWYWx1ZSgpe2lmKHRoaXMua2E9PT12b2lkIDApe2E6e3ZhciBhPXRoaXMub2E7dHJ5e2xldCBjPUpTT04ucGFyc2UoYSk7aWYoYz09PW51bGwpdGhyb3cgRXJyb3IoImFiYCIrYSk7dmFyIGI9YzticmVhayBhfWNhdGNoKGMpe3Rocm93IEVycm9yKCJhYmAiK2EpO31iPXZvaWQgMH10aGlzLmthPWJ9cmV0dXJuIHRoaXMua2F9RmMoKXt0aGlzLm9hPT09dm9pZCAwJiYodGhpcy5vYT1fLmNNYSh0aGlzLmthKSk7cmV0dXJuInA6Iit0aGlzLm1ldGFkYXRhLnByaW9yaXR5KyJ8bDoiKyh0aGlzLm1ldGFkYXRhLmxhc3RBY2Nlc3NlZCsiXyIpK3RoaXMub2F9fTt2YXIgZk1hPWZ1bmN0aW9uKGEpe2ZvcihsZXQgYiBvZiB3bmEoYSkpYS5yZW1vdmUoYik7YS5yZXNldCgpfSxnTWE9Y2xhc3N7Y2xlYXIoKXtmTWEodGhpcyl9cmVzZXQoKXt9fTt2YXIgaE1hPWNsYXNzIGV4dGVuZHMgZ01he2NvbnN0cnVjdG9yKGEpe3N1cGVyKCk7dGhpcy5pTj1hfWdldChhLGI9ITEpe3JldHVybiB0aGlzLmlOLmdldChhLGIpfWhhcyhhKXtyZXR1cm4gdGhpcy5pTi5oYXMoYSl9c2V0KGEsYil7dGhpcy5pTi5zZXQoYSxiKX1yZW1vdmUoYSl7dGhpcy5pTi5yZW1vdmUoYSl9Y2xlYXIoKXt0aGlzLmlOLmNsZWFyKCl9cmVzZXQoKXt0aGlzLmlOLnJlc2V0KCl9WUYoKXtyZXR1cm4gdGhpcy5pTi5ZRigpfX07dmFyIGlNYT1mdW5jdGlvbihhLGIsYyxkPXt9KXt0cnl7YigpfWNhdGNoKGUpe2Eua2EoZSxjLGQpfX0sUW5hPWNsYXNzIGV4dGVuZHMgaE1he2NvbnN0cnVjdG9yKGEsYil7c3VwZXIoYik7dGhpcy5rYT1hfWdldChhLGI9ITEpe3ZhciBjPW51bGw7aU1hKHRoaXMsKCk9PmM9c3VwZXIuZ2V0KGEsYiksImdldCIse2tleTphfSk7cmV0dXJuIGN9aGFzKGEpe3ZhciBiPSExO2lNYSh0aGlzLCgpPT5iPXN1cGVyLmhhcyhhKSwiaGFzIix7a2V5OmF9KTtyZXR1cm4gYn1zZXQoYSxiKXtpTWEodGhpcywoKT0+c3VwZXIuc2V0KGEsYiksInNldCIse2tleTphLHZhbHVlOmIuZ2V0VmFsdWUoKX0pfXJlbW92ZShhKXtpTWEodGhpcywoKT0+c3VwZXIucmVtb3ZlKGEpLCJyZW1vdmUiLHtrZXk6YX0pfVlGKCl7dHJ5e3ZhciBhPXRoaXMuaU4uWUYoKX1jYXRjaChkKXtyZXR1cm4gdGhpcy5rYShkLCJpdGVyYXRvciIse30pLG5ldyBfLmdmfXZhciBiPTAsYz1uZXcgXy5nZjtjLm5leHQ9KCk9Pntmb3IoOzspdHJ5e2xldCBkPQphLm5leHQoKTtyZXR1cm4gZC5kb25lP18ucG5hOl8ub25hKGQudmFsdWUpfWNhdGNoKGQpe2IrKztpZihiPjUpcmV0dXJuIF8ucG5hO3RoaXMua2EoZCwiaXRlcmF0b3IiLHt9KX19O3JldHVybiBjfWNsZWFyKCl7aU1hKHRoaXMsKCk9PnN1cGVyLmNsZWFyKCksImNsZWFyIil9cmVzZXQoKXtpTWEodGhpcywoKT0+c3VwZXIucmVzZXQoKSwicmVzZXQiKX19O3ZhciBqTWE9Y2xhc3MgZXh0ZW5kcyBoTWF7Y29uc3RydWN0b3IoYSxiKXtzdXBlcihiKTt0aGlzLmthPWF9Z2V0KGEsYj0hMSl7dmFyIGM9c3VwZXIuZ2V0KGEsYik7IWImJmMmJmMubWV0YWRhdGEucHJpb3JpdHk8IngiJiYoYy5tZXRhZGF0YS5sYXN0QWNjZXNzZWQ9dGhpcy5rYSgpLHN1cGVyLnNldChhLGMpKTtyZXR1cm4gY31zZXQoYSxiKXtiLm1ldGFkYXRhLnByaW9yaXR5PCJ4IiYmKGIubWV0YWRhdGEubGFzdEFjY2Vzc2VkPXRoaXMua2EoKSk7c3VwZXIuc2V0KGEsYil9fTt2YXIga01hPTIvMyxuTWE9ZnVuY3Rpb24oYSxiLGMsZCxlLGYsZz0wKXtmPWZ8fGIubGVuZ3RoK2UubGVuZ3RoO2lmKGEub2EhPT12b2lkIDAmJmc9PTAmJmY+PWEub2EpdGhyb3cgV0xhO3RyeXthLkFhLnNldChiLGUpfWNhdGNoKGspe2lmKGs9PSJTdG9yYWdlIG1lY2hhbmlzbTogUXVvdGEgZXhjZWVkZWQiJiZnPDQpe2xNYShhKTthLm9hPWEud2ErTWF0aC5jZWlsKGtNYSpmKTtpZighKGEub2E+YS53YStmKSl7dmFyIGg9bU1hKGEsYyk7Zm9yKGxldCBtIG9mIGgpaWYoYS5yZW1vdmUobSksYS5vYT5hLndhK2YpYnJlYWt9bk1hKGEsYixjLGQsZSxmLGcrMSk7cmV0dXJufXRocm93IGs7fWEud2ErPWY7YS5vYSE9PXZvaWQgMCYmKGEub2E9TWF0aC5tYXgoYS5vYSxhLndhKSk7YS5rYVtiXT17cHJpb3JpdHk6YyxsYXN0QWNjZXNzZWQ6ZCx3ZWlnaHQ6Zn19LGxNYT1mdW5jdGlvbihhKXthLkJhfHwoXy5ybmEoYSxiPT57YiBpbiBhLmthfHxhLmdldChiKX0pLGEuQmE9ITApfSxtTWE9CmZ1bmN0aW9uKGEsYil7dmFyIGM9QXJyYXkuZnJvbShPYmplY3Qua2V5cyhhLmthKSk7Yz1jLmZpbHRlcihkPT5hLmthW2RdLnByaW9yaXR5Pj1iKTtpZihjLmxlbmd0aD09MCl0aHJvdyBCbmE7Yy5zb3J0KChkLGUpPT57ZD1hLmthW2RdO2U9YS5rYVtlXTtyZXR1cm4gZC5wcmlvcml0eT09ZS5wcmlvcml0eT9kLmxhc3RBY2Nlc3NlZC1lLmxhc3RBY2Nlc3NlZDpkLnByaW9yaXR5PGUucHJpb3JpdHk/MTotMX0pO3JldHVybiBjfSxPbmE9Y2xhc3MgZXh0ZW5kcyBnTWF7Y29uc3RydWN0b3IoYSl7c3VwZXIoKTt0aGlzLkFhPWE7dGhpcy53YT0wO3RoaXMua2E9e307dGhpcy5CYT0hMX1nZXQoYSl7dmFyIGI9dGhpcy5BYS5nZXQoYSk7aWYoYj09PW51bGwpcmV0dXJuIG51bGw7dmFyIGM9Yi5pbmRleE9mKCJfIik7Yz1jPDA/bnVsbDp7ZUZjOmIuc3Vic3RyKDAsYykscFRjOmIuc3Vic3RyKGMrMSl9O2lmKGM9PT1udWxsKWM9bnVsbDtlbHNle3ZhciBkPWVNYS5leGVjKGMuZUZjKTtpZihkPT09Cm51bGwpdmFyIGU9bnVsbDtlbHNlIGU9ZFsxXSxkPXBhcnNlSW50KGRbMl0sMTApLGU9TnVtYmVyLmlzTmFOKGQpP251bGw6e3ByaW9yaXR5OmUsbGFzdEFjY2Vzc2VkOmR9O2M9ZT09PW51bGw/bnVsbDpuZXcgSW5hKGUsdm9pZCAwLGMucFRjKX1pZihjPT09bnVsbClyZXR1cm4gbnVsbDt0aGlzLmthW2FdPT09dm9pZCAwJiYoYj1hLmxlbmd0aCtiLmxlbmd0aCx0aGlzLmthW2FdPXtwcmlvcml0eTpjLm1ldGFkYXRhLnByaW9yaXR5LGxhc3RBY2Nlc3NlZDpjLm1ldGFkYXRhLmxhc3RBY2Nlc3NlZCx3ZWlnaHQ6Yn0sdGhpcy53YSs9Yix0aGlzLm9hIT09dm9pZCAwJiYodGhpcy5vYSs9YikpO3JldHVybiBjfWhhcyhhKXtyZXR1cm4gdGhpcy5BYS5nZXQoYSkhPT1udWxsfXJlbW92ZShhKXt2YXIgYj10aGlzLkFhLmdldChhKTtiIT09bnVsbCYmKGEgaW4gdGhpcy5rYSYmKGRlbGV0ZSB0aGlzLmthW2FdLHRoaXMud2EtPWEubGVuZ3RoK2IubGVuZ3RoKSx0aGlzLkFhLnJlbW92ZShhKSl9cmVzZXQoKXt0aGlzLm9hPQp2b2lkIDA7dGhpcy53YT0wO2ZvcihsZXQgYSBvZiBPYmplY3Qua2V5cyh0aGlzLmthKSlkZWxldGUgdGhpcy5rYVthXX1zZXQoYSxiKXthIGluIHRoaXMua2EmJnRoaXMucmVtb3ZlKGEpO25NYSh0aGlzLGEsYi5tZXRhZGF0YS5wcmlvcml0eSxiLm1ldGFkYXRhLmxhc3RBY2Nlc3NlZCxiLkZjKCkpfVlGKCl7cmV0dXJuIHRoaXMuQWEuWUYoITApfX07dmFyIE1uYT1jbGFzcyBleHRlbmRzIGdNYXtjb25zdHJ1Y3RvcihhPW51bGwpe3N1cGVyKCk7dGhpcy5rYT1hO3RoaXMub2E9e319Z2V0KGEsYj0hMSl7dmFyIGM9dGhpcy5vYVthXXx8bnVsbDtjPT09bnVsbCYmdGhpcy5rYSYmKGM9dGhpcy5rYS5nZXQoYSxiKSxjIT09bnVsbCYmKHRoaXMub2FbYV09YykpO3JldHVybiBjfWhhcyhhKXtyZXR1cm4gdGhpcy5vYS5oYXNPd25Qcm9wZXJ0eShhKXx8dGhpcy5rYSE9bnVsbCYmdGhpcy5rYS5oYXMoYSl9c2V0KGEsYil7dGhpcy5vYVthXT1iO2IubWV0YWRhdGEucHJpb3JpdHk8IngiJiZ0aGlzLmthJiZ0aGlzLmthLnNldChhLGIpfXJlbW92ZShhKXt2YXIgYj10aGlzLm9hW2FdO3RoaXMua2EmJihiJiZiLm1ldGFkYXRhLnByaW9yaXR5PCJ4Inx8IWIpJiZ0aGlzLmthLnJlbW92ZShhKTtkZWxldGUgdGhpcy5vYVthXX1jbGVhcigpe3RoaXMua2EmJnRoaXMua2EuY2xlYXIoKTt0aGlzLm9hPXt9fVlGKCl7dmFyIGE9T2JqZWN0LmtleXModGhpcy5vYSk7CmE9Xy5xbmEoYSk7aWYoIXRoaXMua2EpcmV0dXJuIGE7dmFyIGI9c25hKHRoaXMua2EsYz0+IShjIGluIHRoaXMub2EpKTtyZXR1cm4gdm5hKGEsYil9fTt2YXIgUm5hPWNsYXNzIGV4dGVuZHMgaE1he2NvbnN0cnVjdG9yKGEsYil7c3VwZXIoYik7dGhpcy5rYT1hKyI7OyJ9Z2V0KGEsYj0hMSl7cmV0dXJuIHN1cGVyLmdldCh0aGlzLmthK2EsYil9aGFzKGEpe3JldHVybiBzdXBlci5oYXModGhpcy5rYSthKX1zZXQoYSxiKXtzdXBlci5zZXQodGhpcy5rYSthLGIpfXJlbW92ZShhKXtzdXBlci5yZW1vdmUodGhpcy5rYSthKX1ZRigpe3ZhciBhPXRoaXMua2EubGVuZ3RoLGI9dG5hKHRoaXMuaU4sYz0+e2lmKGMuc3Vic3RyKDAsYSk9PXRoaXMua2EpcmV0dXJuIGMuc3Vic3RyKGEpfSk7cmV0dXJuIHNuYShiLF8ua0phKX1jbGVhcigpe2ZNYSh0aGlzKX1yZXNldCgpe319O3ZhciBQbmEsTm5hLG9NYSxLbmEscE1hLEZuYTtfLmtmPWZ1bmN0aW9uKGEpe2lmKGE9PSJuIilyZXR1cm4hMDthPVBuYShhKTtyZXR1cm4hKGEgaW5zdGFuY2VvZiBfLmhmJiZfLk5hLmJwYSgpJiYhXy5FbmEoKSkmJmEuaXNBdmFpbGFibGUoKX07UG5hPWZ1bmN0aW9uKGEpe2lmKGEgaW4gb01hKXJldHVybiBvTWFbYV07dmFyIGI7YT09InMiP2I9bmV3IF8ueW5hOmI9bmV3IF8uaGY7cmV0dXJuIG9NYVthXT1ifTsKXy5CcWE9Y2xhc3N7Y29uc3RydWN0b3IoYSxiLHtlcnJvckhhbmRsZXI6Yz1wTWEsaXliOmQ9ITF9PXt9KXt2YXIgZT10aGlzLmdldE5leHRJZD1KbmEoYSxjKTtjPUxuYShiLGEsYyxkKTt0aGlzLmthPW5ldyBqTWEoZSxjKTtpZihjPV8uZWEubVBQa3hkKXtlPVtdO2ZvcihsZXQgZyBvZiBjKWlmKGM9Z1sxXSxjWzBdPT1hJiZjWzFdPT1iKXt2YXIgZj1nWzFdO2M9Zls0XXx8Im0iO2Q9ZlsyXTtmPWZbM107Z1swXT90aGlzLmthLmdldChkKTp0aGlzLnNldChkLGYsYyl9ZWxzZSBlLnB1c2goZyk7Xy5lYS5tUFBreGQ9ZX19c2V0KGEsYixjPSJtIil7dGhpcy5rYS5zZXQoYSxuZXcgSW5hKHtwcmlvcml0eTpjfSxiKSl9Z2V0KGEpe3JldHVybihhPXRoaXMua2EuZ2V0KGEpKT9hLmdldFZhbHVlKCk6bnVsbH1oYXMoYSl7cmV0dXJuIHRoaXMua2EuaGFzKGEpfVlGKCl7cmV0dXJuIHNuYSh0bmEodGhpcy5rYSxhPT57dmFyIGI9dGhpcy5rYS5nZXQoYSwhMCk7cmV0dXJuIGI/e2tleTphLAp2YWx1ZTpiLmdldFZhbHVlKCkscHJpb3JpdHk6Yi5tZXRhZGF0YS5wcmlvcml0eSxsYXN0QWNjZXNzZWQ6Yi5tZXRhZGF0YS5sYXN0QWNjZXNzZWR9Om51bGx9KSxhPT4hIWEpfVtTeW1ib2wuaXRlcmF0b3JdKCl7cmV0dXJuIHRoaXMuWUYoKX1yZW1vdmUoYSl7dGhpcy5rYS5yZW1vdmUoYSl9Y2xlYXIoKXt0aGlzLmthLmNsZWFyKCl9fTtObmE9e307b01hPXt9O0tuYT17fTtwTWE9ZnVuY3Rpb24oKXt9O0ZuYT1mdW5jdGlvbigpe307Xy5xTWE9e25hbWU6ImFpbSJ9O18uck1hPXtuYW1lOiJhc3luYyIsaXliOkVGYX07Xy5zTWE9e25hbWU6IkxIIn07Xy50TWE9e25hbWU6InNjcm9sbCJ9O18udU1hPXtuYW1lOiJhaWMifTtwTWE9KGEsYixjKT0+e3ZhciBkPWMua2V5O2Quc3RhcnRzV2l0aChfLnNNYS5uYW1lKyI7OyIpfHxhIT09V0xhJiZfLkNuYShhLGIsZCxjLnZhbHVlKX07ZmMoIkt6aXRnZCIsIkVXcFNIIik7ZmMoIk1UeTlsZSIsIlNVSFJLYyIpO18uVW5hPXdHYT9fLmxmKCk6bnVsbDt2YXIgeE1hLHpNYSxBTWEsQk1hO18udk1hPW5ldyBTZXQoImFhaSBhYWljYSBhYWl0a24gYWFzYiBhY2IgYWNvIGFkIGFkc2FmZSBhZHRlc3QgYWR0ZXN0LXVzZXJhZ2VudCBhZWMgYWVnYyBhZXAgYWdjaWQgYWdzaWQgYWhtYiBhaWMgYWltX3BhZHQgYWlvX2l0IGFpb2ggYWlzIGFqaWQgYWttIGFtYyBhbXAgYW1wY2N0IGFtcGlkeCBhbXBydSBhbXBzIGFwcCBhcHBlbnQgYXJxcmNkIGFydCBhcnYgYXNfYXV0aG9yIGFzX2RycmIgYXNfZHQgYXNfZXBxIGFzX2VxIGFzX2ZpbGV0eXBlIGFzX2Z0IGFzX21heGQgYXNfbWF4bSBhc19taW5kIGFzX21pbm0gYXNfbW9kZSBhc19uaGkgYXNfbmxvIGFzX25sb2MgYXNfbnNyYyBhc19vY2N0IGFzX29xIGFzX3EgYXNfcWRyIGFzX3JpZ2h0cyBhc19zY29yaW5nIGFzX3NpdGVzZWFyY2ggYXNfc3QgYXNpZCBhc2lmdCBhc3JjIGFzdGlkbCBhdHZtIGF1dGh1c2VyIGF2bSBhdnggYm1wIGJvb3N0aWQgYm9vc3R2aWQgYnJldCBic2htIGJzaG9wZSBic3AgYnNxIGJ1eSBjMmNvZmYgY2FudmFzaWQgY2FwYWJpbGl0aWVzIGNjdF9vcHRvdXQgY2RzIGNmIGNmc3FzIGNoYW5uZWwgY2hpcHMgY2hycSBjbGllIGNtcHNyX2ltZ3VybCBjbXBzcl9uYW1lIGNvaWUgY29tcGxldGUgY29udm9fZnByX2VzYyBjb3JwdXMgY3IgY3J1IGNzIGNzc3QgY3N1aSBjc3VpbyBjc3VpciBjdGIgY3RzY3R4IGRhdGFfcHVzaF9lcG9jaCBkY250aWQgZGNyIGRkbCBkZWIgZGVidGltZSBkZXBpZCBkb2NpZCBkb21haW5zIGRwbCBkciBkdGhwIGR1dWwgZSBlYmNpZCBlZGJnIGVkaXRudXJsIGVkaXRvdXJsIGVkaXRxIGVkaXRydCBlZXVpIGVmIGVscmMgZXByZHMgZXFsZCBlc3ByayBlc3JjaCBldHMgZXZhbF9pZCBleGFtX3NlbCBleGFtX3RhYl9zZWwgZXhhbV90aWVyX2lkIGV4YW1fdmlkX2NhdCBleHAgZXhwX3JlcXVlc3RfaWQgZXhwX3VpZCBleHBmbGFncyBleHBpZCBleHBpZF9jIGV4cGxhaW4gZXhwbmQgZXhwcm9sbG91dHMgZmFrZWFkcyBmYnggZmJ4ZGMgZmJ4c3QgZmMgZmNxIGZjdiBmaWx0ZXIgZmlyIGZsYXYgZmxiciBmbGwgZm9yY2VfZXhwZXJpZW5jZSBmcmNudyBmcm96ZW5fY2xvY2sgZnNocCBmc3BuIGZzciBmc3RhdCBmdnIgZnogZ2FyYyBnYnB2IGdjc2lkIGdpYiBnbCBnbHNsZiBncGMgZ3Nfc3NwIGdzYXMgZ3NjIGdzZXNzaW9uaWQgZ3N0ayBoY2kgaGdpIGhsIGhsdnRzIGhvc3QgaG90ZWxfZGF0ZXMgaG90ZWxfZHMgaG90ZWxfbHFpIGhvdGVsX2xxdGtuIGhvdGVsX29jY3VwYW5jeSBob3Rzd2FwcyBocGNzIGhxIGh0ZiBodGluIGh0cHQgaHRzIGh0c3NucyBodHN0IGlhciBpYnAgaWN0eCBpZnJlcSBpZ3UgaW1nY29sb3IgaW1naWwgaW1ncmVmdXJsIGltZ3N6IGltZ3R5cGUgaW1ndXJsIGltZ3dvIGlubGFuZyBpbm1wIGludGVyZXN0cyBpb3NsYSBpc19zaG9wcGluZ19lbnRpdHkgaXNjIGlzaWVpIGl4IGpiciBqZnIgamxzZyBqcnQganNtb2RlIGpzcGVwdCBqc3B0IGpzdGkga2dtaWQga2dzIGttdGYga3B0YWIgbGFzdF9xaWQgbGNpZiBsZXAgbGZiaSBsZmJ0IGxmaWQgbGlkIGxpdGUgbGxwYmIgbGxwZ2FiZSBsbHBsb2MgbG5zX2FpZCBsbnNfaWlzIGxuc19pbWcgbG5zX2ludCBsbnNfbW9kZSBsbnNfc3VyZmFjZSBsbnNfdHFzIGxuc192ZnMgbG5zaWQgbG51IGxwaXMgbHBzaWQgbHB0cCBscWkgbHIgbHJmc2lkIGxzYSBsc2FjayBsc2FwciBsc2VscSBsc2Vzc2lvbmlkIGxzZiBsc2lzciBsc2xzIGxzc3BwIGxzdGh3ZmkgbHN0b2RsZmkgbHN0czJiIGxzdHMyYyBsc3RzZCBsdGtuIGx0eXBlIGx1YWNrIGx1ZG9jaWQgbHhjYXIgbWFjdHggbWFkc2UgbWFzZmMgbWF0IG1jX2FjdGlvbiBtY19xaWQgbWNpIG1jcCBtY3EgbWVyZ2VsYWJlbCBtZXRhIG1ndHlwIG1pZCBtbHJpZCBtbHJvIG1scm9sIG1scm9zIG1tb3JxIG1tc2MgbW1zbSBtbXNvIG1vZHMgbXF2c3JpZCBtcmMgbXJxIG1ycWVpIG1ycXJpIG1ycXJzIG1yciBteHQgbmNiIG5lYXIgbmVmIG5lbSBuZXAgbmVzIG5ld3dpbmRvdyBuZXggbmZwciBuaHIgbmlyZiBub19zd19jciBub3JkIG5vdGlmY2lkIG5vdGlmZnAgbnBzIG51bSBvZyBvZ2RlYiBvaGwgb2kgb2xsIG9vbHBtaWQgb29scHF3IG9vbHBzcmMgb3BpIG9wdGFxdWEgb3B0ZCBvcHRpIG9wdHEgb3B0cyBvcHR0IG9yY2wgb3JtYyBvcm1xIG9ycCBvcnMgb3JzYyBvc3BuIG96IHBjbXAgcGNyIHBjcyBwZG8gcGRvaSBwZWVrX3B3cyBwZ2EgcGhkZXNjIHBoZXRzIHBpaXMgcGxmIHBsdWdpbiBwcHMgcHJkbCBwcmRzIHBybWQgcHNiIHBzZ24gcHNvYyBwc3RpY2sgcHVycyBwdmYgcHZoIHB2cSBwd3MgcHdzdCBxIHFmIHFpZCBxcGFkZHIgcXIgcXVhbnR1bSBxdWVyeSByYXB0IHJjaXYgcmN0IHJlYW1lbml0aWVzIHJlZGF5cyByZWZ0X3QgcmVtYXhiYXRoIHJlbWF4YmVkIHJlbWF4cHJpY2UgcmVtaWQgcmVtaWRzIHJlbWluYmF0aCByZW1pbmJlZCByZW1pbnByaWNlIHJlbmRyIHJlcWZsdCByZXJlY3QgcmVyZXNpZGVuY2UgcmVzdHJpY3QgcmV2aWV3IHJmbGZxIHJsZGltbSBybGhhIHJsaGFjIHJsaHNjIHJsbGEgcmxsYWcgcmxsYXMgcmxtcyBybHN0IHJvdCBzYWIgc2FiZiBzYWJnY2kgc2FicGYgc2FicGkgc2FicGxhY2VpZCBzYWJwbmYgc2Fidmkgc2FkdiBzYWZlIHNhZmV1aSBzYW5fb3B0X291dF9kYXRhIHNhbl9vcHRfb3V0X3JlcXVlc3RfbW9kZSBzYW5fb3B0X291dF9zaXRlIHNhcnEgc2JpZCBzY2FfZXN2IHNjaGlwcyBzY2lzIHNjb3Jpbmcgc2VhcmNoIHNlbF90aWVyX2lkIHNlcmRlc2sgc2Vzc2lvbmlkIHNmbSBzaGJ1ZCBzaGRlYiBzaGVtIHNobWQgc2htZHMgc2huZGwgc2hvcGJnIHNob3Bjb24gc2hvcG1kIHNob3BycyBzaG9wc3Qgc2hvcHZsIHNodWIgc2kgc2lkZWIgc2lkZXNlYXJjaCBzaWV4X3Agc2lmYm0gc2lnY3Qgc2lnbmMgc2lnbmVkaW4gc2lncGMgc2l0ZV9mbGF2b3JlZCBzaXRlc2VhcmNoIHNqYyBzamNwIHNrZXdfaG9zdCBza2V3X2hvdHN3YXBzIHNraXAgc2xiIHNsbCBzbXN0aWR4IHNtc3RrIHNuaSBzbm9wdCBzbnIgc29yYyBzb3VyY2VfaXAgc291cmNlaWQgc3Agc3BfYWUgc3BfYWltcnMgc3BfaHBlcCBzcF9ocHRlIHNwX2ltZ2hwIHNwX25lZCBzcGZzIHNwdnIgc3FkcCBzcmNfYW10IHNyY19jdXJyIHNyZHMgc3JwY2FjaGVleHBmcHIgc3JwY2FjaGVmaWxsIHNycGNhY2hla2V5ZnByIHNycGQgc3J0c3Qgc3NiIHNzYmwgc3NpIHNzcG4gc3NycyBzc3NjIHNzdGsgc3RhcnQgc3RkIHN0ZWZjIHN0ZWdjIHN0ZWd0IHN0ZW5zaSBzdGVudCBzdGVwdCBzdGljayBzdGtwIHN0ciBzdHJtbWlkIHN0cyBzdWJfc2VsIHN1YmNhdCBzdWJqZWN0X2lkIHN1cGVycm9vdCBzdXJsIHN4cyBzeiBzemwgdGFjYyB0YmFzIHRiY3AgdGJtIHRibmlkIHRicyB0Y2kgdGZzIHRvYnQgdHJfZCB0cl9kZXN0IHRyX2Rlc3RfZmlkIHRyX2Rlc3RfbGF0bG5nIHRyX2Rlc3RfcSB0cl9kZXN0X3N0IHRyX2lyIHRyX29yIHRyX29yX2ZpZCB0cl9vcl9sYXRsbmcgdHJfb3JfcSB0cl9vcl9zdCB0cl90IHRybmQgdHNkbyB0c3EgdHRfY2xhc3MgdHRfZGF0ZSB0dF9kZXN0aW5hdGlvbiB0dF9sY2lkIHR0X2xmaWQgdHRfb3JpZ2luIHR0X3BuciB0dF9wbnJfc3JjIHR0X3Bucl9zcmNfaWQgdHRfcXVvdGEgdHRfdG4gdHRfdHJhaW5udW1iZXIgdHRkZXhwcmVmIHR0ZGlmIHR0ZHJmbXQgdHRzbSB0dHNwIHR3ZF9zdXJmYWNlIHR3ZF90b2sgdHdkX3R5cGUgdWNiY2IgdWNsaXRlIHVkZiB1ZG0gdWRzIHVpZCB1aWRlYiB1bHJjIHVsdiB1bSB1cGEgdXNlcmFnZW50IHVzZXJpZCB1c2cgdXRsIHV0bV9jYW1wYWlnbiB1dG1fY29udGVudCB1dG1fbWVkaXVtIHV0bV9zb3VyY2UgdXRtX3Rlcm0gdXVsZCB1dWxlIHZhY2FzeW5jIHZhY2NhcmR0eXBlIHZhY2RhdGF0eXBlIHZhY2hpZXIgdmFjbG9jbWlkIHZhY3BlciB2YWN0YWIgdmVjb2xvciB2ZXhwZGlnIHZnaSB2aWRjaXAgdmlzIHZpdCB2c2RpbSB2c2VwIHZzaW50IHZzcmlkIHZ1aWQgd2JzayB3ZHN6IHdneCB3aWQgemNjcG0iLnNwbGl0KCIgIikpOwpfLndNYT1uZXcgU2V0KCJhY3Rpb24gYWRkaCBhZmZkb20gYWdzYWJrIGFnc2FkIGFxcyBhciBiYXYgYmloIGJpdyBiciBicmQgYnMgYnZtIGNhZCBjZCBjaGFuZ2VkX2xvYyBjbGllbnQgY3AgY3QgY3RmIGN0eHMgY3R6biBjdWQgZGJsIGRidHMgZGV2aWNlbGFuZyBkZXZsb2MgZHByIGRxIGRzIGVjaCBlaSBlbnRyeXBvaW50IGVydG4gZXNwdiBmYnMgZmhlaXQgZnAgZ2J2IGdjIGdjYyBnY3MgZ2tvX3ZpIGdsbCBnbSBnciBnc19pZCBnc19pdnMgZ3NfbCBnc19sY3AgZ3NfbHAgZ3NfbXNzIGdzX3JpIGdzX3JuIGhzIGh3IGllIGlnIGlubSBpb24gaXJjaXAgaXNuIGthcGsgbGVpIGxuc19tcSBscmFkIGxzZnQgbHV1bCBtYXBzbCBtY28gbWN1ciBtZGMgbWZ4IG1xIG1zaWcgbXN0ayBtdGlkIG11dWwgbXZzIG5kc3Agbml0ZWMgbm9hIG5vcmMgbnBzaWMgbnR5cCBvZSBvcSBvc20gb3V0cHV0IHBhZGIgcGFkdCBwYnggcGRsIHBlaSBwZiBwamYgcG5wIHBxIHBxc3VidHMgcHJtZG8gcHJvZyBwc2kgcHNqIHFzZCBxc3VidHMgcmFtX21iIHJjaWQgcmVkaXIgcmVkaXJfZXNjIHJlZiByZXNudW0gcmV2aWQgcmYgcmxha3AgcmxzIHJseiBzYSBzY2xpZW50IHNjc3Igc2VpIHNlcnQgc2VzaW52IHNpdGUgc2xhIHNucyBzb3VyY2Ugc3BlbGwgc3Brbmxhbmcgc3B2bWJpIHNxaSBzdWdleHAgc3VnZ2VzdCBzdWd2Y3Igc3hzcmYgdGFiIHRibyB0Y2ggdGVsIHRvayB1YWN0IHYgdmVkIHdmIHdwaGMtYWdzYSB3cmFwaWQgeGhyIHp4Ii5zcGxpdCgiICIpKTsKeE1hPW5ldyBTZXQoImEgYWN0aXZldGFiIGFkc3N1ZiBhZ3NhIGFnc2F3dmFyIGFob3RlbF9kYXRlcyBhaW1vcyBhbXBfY3QgYW1wZWR1IGFtcGYgYW1waCBhbXBoLWRsZyBhbXBzaGFyZSBhb2UgYW9mIGFxIGFyaWQgYXNzdCBhc3RpY2sgYXN5bmMgYXN5bmNzdCBiIGJhX2NlbiBiYV9sb2MgYmVsYWlyIGJzaHQgYnRuSSBidG5LIGNhdGFsb2dpZCBjYXRpZCBjaXZmaSBjbGIgY2xzc3QgY2x4c3QgY25zIGNvYXN5bmMgY29ic3NpZCBjb2NwIGNvbG9jbWlkIGNwaSBjcnMgY3NvIGN0bWRsZyBkIGRibWVyY2hhbnRpZCBkYm8gZGJvZmZlcmRvY2lkcyBkYnZwIGRkbGUgZGRseCBkZWxheSBkZW1vc3QgZGVzdF9iZ2MgZGVzdF9taWQgZGVzdF9zcmMgZGZwYXJhbXMgZGkgZGxuciBkbmxiIGRvYmMgZG9icyBkb2J2dWVpIGR0IGR1ZjMgZWVzZWhzayBlZXNoc2sgZWltIGVsIGVvYiBlcGMgZXBjaSBlcGQgZXBpIGVzdnQgZiBmYWNyYyBmY3NvIGZjdmlldyBmY3ZpZXdvbnMgZmN2aWV3diBmZHNzIGZkc3QgZmVzcCBmaWQgZmxzdCBmbHQgZm5oYyBmcHN0YXRlIGZzIGZzYXBwIGZzYyBmdCBmdmVkIGdkaXNtaXNzIGdmZV9yZCBncGNpZCBncmlkbGF5b3V0IGd3c19yZCBoIGhjbyBoZWFkbGluZU9mZmVyRG9jaWQgaGlkZSBobGdzdGF0ZSBobHNkc3RhdGUgaG10dCBob3RlbF9maWx0ZXIgaG90ZWxfcmxpbW0gaHBvY2MgaHFzdWJ0cyBoc2lfYWwgaHNxIGh0aWNoaXBzIGh0aWRvY2lkIGh0aWZjaGlwIGh0aWxyYWQgaHRpbHR5cGUgaHRpb3JjbCBodGlvcm9xIGh0aW9ycCBodGlvcnMgaHRpcHQgaHRpcSBodGlzY2hpcHMgaHRpc29yYyBodGlzdCBodGl0YWIgaHRpdHJuZCBodGl2cnQgaWR4IGlnY2kgaWdzYWhjIGlnc2FzIGlnc2FzaHMgaWdzYXQgaWdzYXVybCBpbWFnZURvY2lkIGltYWdla2V5IGltZ2RpaSBpbWdyYyBpbWdyZWcgaW1ndiBpbnRlbnQgaXAgaXFoIGlycCBpc2EgaXNtIGlzdGF0ZSBpdSBpdmxieCBqYW9zIGpic2YganBlIGpwaW1mcGZpIGpwcCBrZmhpIGtmaWcga3BldmxieCBrcGZiLWF0dHIga3BmYi1ia3Qga3BmYi1jdHgga3BmYi1kb2NpZCBrcGZiLWVjdHgga3BmYi1lbnRpdHlpZCBrcGZiLWVudGl0eW5hbWUga3BmYi1mdGFnIGtwZmItZnR5cGUga3BmYi1oa2kga3BmYi1rcGlkIGtwZmItbHBhZ2Uga3BmYi1seXJpY2lkIGtwZmItcGlkIGtwZmItcmVjdHgga3BmYi1yZW50aXR5IGtwZmItcnZhbCBrcGZiLXNlY2lkcyBrcGZiLXN0YWdlIGtwZmItdGF0dHIga3BmYi10c291cmNlaWQga3BmYi12ZSBrcGZiLXZ0IGtwdmFsYnggbGFhIGxhdCBsYmRmIGxibCBsY20gbGNzdCBsZklkIGxmY2V4cGQgbGgtaW0gbGt0IGxuZyBsbnMgbG9hcnQgbG9jYWxBbm5vdGF0ZWRPZmZlcklkIGxvY2FsT2ZmZXJTdG9yZUlkIGxvZWMgbG9oIGxvayBscGMgbHBnIGxwbGtzYyBscG1pZCBscHFhIGxwc2l2b2kgbHBzdGF0ZSBscHRsIGxyZCBscmYtZ2VjLWFydGljbGUtaWQgbHRkZmlkIGx0ZGcgbHRkbCBsdG8gbHVhYyBtYnBzdCBtZHAgbWVyY2hhbnRpZCBtZnNzIG1oYiBtaHdiIG1pZSBtbGRkIG1scCBtbHB2IG1tYyBtbm8gbXBkIG1wcCBtc2xkbGcgbmJiIG5tbGJ4IG5vdGlmcGwgbm90aWZwbGRlYiBucCBvZnUgb20gb3Nob3Agb3Nob3Bwcm9kdWN0IG9zcnBzYiBvc3Mgb3NzIG9zdiBvc3ZlIG9zdm4gb3ZlZCBwIHBiIHBjbWlkIHBkbGcgcGdzaXZvaSBwaSBwaWUgcGl1IHBpdiBwamQgcGsgcGtmcyBwbGFtIHBsYW5zcmNxIHBsYW5zcmN1IHBsaSBwbHNtIHBsdiBwbWQgcG1zdGsgcHJpZCBwcm9kdWN0aWQgcHNjaWQgcHNkIHB0c3ViIHB1cGRsZyBwdXBybGJ4IHB2UXVlcnkgcHZmaWx0ZXIgcHZvIHB2byBwdnMgcHZzIHB2dGMgcHZ0eXBlIHFpZHUgcW0gcW9wIHJic3AgcmRzIHJlZmlsaGUgcmVmcSByZWZ2IHJlaHAgcmVtaWRzdCByZXRpbGhlIHJldmlld19pZCByZnQgcmkgcmlkIHJpaSByaXZpIHJpdmljIHJpdmlwdiByaXZ6ZCBybGRvYyBybGZpIHJsZmwgcmxoZCBybGhzIHJsaW1tIHJsbWYgcmxtbGVsIHJsdGJzIHJsdnAgcnBkIHJyaWQgcnNuciByc3BpIHJzcnMgc2FiZWMgc2FicHRjIHNhYnMgc2Fic2Qgc2JmYnUgc2JvIHNjaGlkIHNjcmwgc2NzbyBzZGxnIHNlYXJjaF9wbHVzX29uZSBzZmx0IHNmbHRsZiBzZmx0bWYgc2dsYiBzZ3JvIHNoIHNoZCBzaGZpbCBzaGxvYyBzaG9ydGxpc3RtaWRzIHNodHZzIHNod2NzbGIgc2kgc2llIHNpcHIgc2l2IHNsbyBzbHN0X3NociBzbHQgc21pZHMgc21yIHNtcnEgc213aWUgc25nIHNuc2Igc29kcGkgc29yaSBzcGEgc3BjaSBzcGQgc3BmIHNwc2Qgc3B1ZCBzcmJsYiBzcyBzc2JmIHNzYnMgc3NsX2RiZyBzdCBzdGkgc3RvcmVtaWQgc3Ygc3ZjaCB0IHRhYnN0IHRibmggdGJuaWQgdGJudyB0YnN0YXRlIHRjZnMgdGN0eCB0ZHVkcyB0ZHVydCB0ZHVzcCB0aSB0b3BpYyB0cGQgdHBmZW4gdHBmayB0cGZtIHRyZXggdHJpZnAgdHJpcF9pZCB0cnJlZiB0c3AgdHRkY3MgdHRsY2lkIHR0bGZpZCB0dHMgdHR0biB0dyB0d2QgdHdtbGJ4IHVnYyB1Z2NxYWxiIHVtdnJlZyB1bXZ0ZmsgdW12dmVyIHZjaCB2ZXQgdmZpZCB2aGlkIHZpZXcgdmlld2VyU3RhdGUgdmxkIHZuc25iYiB2c3IgdnNzaWQgdnRvIHZ0c3QgdnVhbnIgdyB3Z3ZzIHduc3RhdGUgd3B0YWIgd3RpIHd2cyB3eGlyYyB3eHBkIHhnYWNpZCB4eHJpIi5zcGxpdCgiICIpKTsKXy55TWE9bmV3IFNldCgiYWNiIGFjbyBhZWMgYWVnYyBhZXAgYWdjaWQgYWdzaWQgYWhtYiBhaXB0IGFtYyBhcnFyY2QgYXJ2IGFzcmMgYXRwIGF1dGh1c2VyIGJvb3N0aWQgYm9vc3R2aWQgYnNob3BlIGNkcyBjZiBjaGFubmVsIGNzIGNzdWkgZGF0YV9wdXNoX2Vwb2NoIGRjciBkZWIgZGVidGltZSBkdGhwIGUgZWRiZyBlZGl0bnVybCBlZGl0b3VybCBlZGl0cSBlZGl0cnQgZWxyYyBlc3JjaCBldmFsX2lkIGV4cCBleHBfcmVxdWVzdF9pZCBleHBfdWlkIGV4cGZsYWdzIGV4cGlkIGV4cGxhaW4gZXhwcm9sbG91dHMgZmFrZWFkcyBmZXNwIGZvcmNlX2V4cGVyaWVuY2UgZnJlbmRmaWx0ZXIgZnJvemVuX2Nsb2NrIGdhcmMgZ2NzaWQgZ2wgZ3NhcyBnc2MgaGwgaG9zdCBob3RlbF9kYXRlcyBob3RlbF9kcyBob3Rzd2FwcyBodHMgaWd1IGltZ24gaXNjIGlzaWVpIGpzbW9kZSBsbnNfaW1nIGxuc19pbnQgbG5zX21vZGUgbG5zX3N1cmZhY2UgbG5zX3RxcyBsciBsc2YgbHNmdCBsc2lzciBsdGtuIG1hY3R4IG1hc2ZjIG1hdCBtY3AgbWVyZ2VsYWJlbCBtZ3R5cCBtbHAgbXJjIG5lZiBuZW0gbmVwIG5zb3VyY2Ugb2dkZWIgb3B0aSBvcHRxIG9wdHMgb3B0dCBwY3MgcGVla19wd3MgcGdhIHBpaXMgcGx1Z2luIHByZnEgcHZmIHB3cyByY2l2IHJsc3Qgcmx6IHNhZmUgc2NhX2VzdiBzZXNzaW9uaWQgc2hvcG1kIHNob3BycyBzaG9wdmwgc2hvcnRsaXN0bWlkcyBzaWRlc2VhcmNoIHNrZXdfaG9zdCBza2V3X2hvdHN3YXBzIHNraXAgc25pIHNuciBzb3VyY2Ugc291cmNlX2lwIHNvdXJjZWlkIHNydHN0IHNzbF9kYmcgc3Qgc3RpY2sgc3RrcCB0YmNwIHRicyB0Y2ZzIHRzZG8gdWNzcmMgdWNzcmNpIHVkZiB1ZG0gdWlkZWIgdWxyYyB1c2VyYWdlbnQgdXRsIHV1bGQgdXVsZSB2IHZleHBkaWcgdml0IHZzaW50IHZzcmlkIHZ1aWQgd2RzeiB6Y2NwbSIuc3BsaXQoIiAiKSk7CnpNYT1uZXcgU2V0KFtdKTtBTWE9bmV3IFNldChbImFzX3EiLCJkcSIsIm9xIiwicSIsInFwYWRkciJdKTtCTWE9bmV3IFNldChbImFtcGNjdCIsImNsaWVudCIsImRjciIsImhzIiwidiJdKTtfLkNNYT1uZXcgU2V0KFsuLi4obmV3IFNldCgiZGF0YV9wdXNoX2Vwb2NoIGRlYiBkdXVsIGUgZXNwdiBlc3JjaCBleHAgZXhwX3JlcXVlc3RfaWQgZXhwX3VpZCBleHBmbGFncyBleHBpZCBleHBpZF9jIGV4cHJvbGxvdXRzIGZlc3AgZnJvemVuX2Nsb2NrIGhvc3QgaG90c3dhcHMgaW9uIGl4IGpzbW9kZSBtb2RzIG5vc3NsIG51dWwgb2dkZWIgc2Vzc2lvbmlkIHV1bGQiLnNwbGl0KCIgIikpKSwuLi5CTWFdKTtfLkRNYT1uZXcgU2V0KCJhY2IgYWQgYWRkaCBhZWMgYWVnYyBhZXAgYWdjaWQgYWdzaWQgYWhtYiBhaWMgYW1jIGFzX3N0IGF0diBhdXRodXNlciBiaWggYml3IGJvb3N0aWQgYm9vc3R2aWQgY2FudmFzaWQgY2RzIGNvbXBsZXRlIGNzIGN0eHMgZGNyIGRuciBlIGVzcmNoIGVzdCBleHAgZXhwZWN0IGV4cGZsYWdzIGV4cGlkIGV4cGlkX2MgZXhwcm9sbG91dHMgZmVzcCBmaHAgZmxhdiBmb3JjZV9leHBlcmllbmNlIGZyY253IGZyb3plbl9jbG9jayBmc3JjIGdhbmNsayBnYW5wdWIgZ2J2IGdjIGdjcyBnbCBnbGwgZ2xwIGdtIGdwYyBnciBncnBpbmcgaCBoaWRlIGhsIGhvc3QgaG90ZWxfZGF0ZXMgaG90ZWxfZHMgaG90ZWxfb2NjdXBhbmN5IGhvdHN3YXBzIGhxIGh0cyBpZ3UgaW1nYXIgaW1nYyBpbWdjb2xvciBpbWdyZWZ1cmwgaW1nc2duIGltZ3N6IGltZ3RicyBpbWd0eXBlIGltZ3VybCBpc2llaSBqc21vZGUga2Fpb3NlbWJlZCBsY2YgbGRzdCBsaXRlIGxpdGV1aSBsbnNfc3VyZmFjZSBsc2Z0IG1hY3R4IG1hc2ZjIG1ib29zdCBtZXJnZWxhYmVsIG1vZHMgbW9ua2V5cyBtc2NhdCBtdm91dCBuY2IgbmRzcCBuZWFyIG5lZiBuZnByIG5pcmYgbm9oa3Igbm9yZCBub3N0ZW0gb2hsIG9wdEwgb3B0YSBvcHRhcXVhIG9wdGQgb3B0ZSBvcHRnIG9wdGkgb3B0cSBvcHRyIG9wdHMgb3B0dCBwaGwgcGx1Z2luIHByYnhwbHRmbSBwcm1kbyBwc2IgcHQgcHdzIHFkYiBxZiBxciBxdWFudHVtIHJjdSByaWNoc25pcHBldCBybGxhIHJscyBybHogc2FiIHNoYiBzaWRlc2VhcmNoIHNpZyBzaXRlX2ZsYXZvcmVkIHNrZXdfaG9zdCBza2lwIHNreSBzbnIgc29iIHNvdXJjZV9pcCBzdF91c2cgc3RpY2sgc3VwZXJyb290IHN3bSBzeiB0Ym0gdGNmcyB0aGEgdG5tIHRzZG8gdHNsIHRzbSB1Y2JjYiB1Y2xpdGUgdWRmIHVkbSB1aWRlYiB1ciB1dGwgdXVsZCB1eGlkIHYgdmV4cGRpZyB2aXQgdyB3ZHN6IHdtbCB6Y2NwbSIuc3BsaXQoIiAiKSk7Xy5FTWE9ZnVuY3Rpb24oYSxiKXtyZXR1cm4gQU1hLmhhcyhiKT9MS2EuRmMoYSk6YX07Xy5GTWE9ZnVuY3Rpb24oYSxiKXtyZXR1cm4gQU1hLmhhcyhiKT9MS2Eua2EoYSk6YX07dmFyIEdNYTtHTWE9Y2xhc3N7RmMoYSxiKXtyZXR1cm4gXy5FTWEoXy5Ybi5GYyhhKSxiKX1rYShhLGIpe3RyeXtyZXR1cm4gXy5Ybi5rYShfLkZNYShhLGIpKX1jYXRjaChjKXtyZXR1cm4gXy5WZShFcnJvcigiYmJgIitjLm1lc3NhZ2UpLHtEZjp7azpiLHY6YX19KSwiIn19fTtfLkhNYT1uZXcgR01hO3ZhciBNcWEsSU1hLEtNYSxMTWEsUE1hLFFNYSxPTWE7TXFhPWZ1bmN0aW9uKGEpe3JldHVybiBfLnZNYS5oYXMoYSk/MDpfLndNYS5oYXMoYSk/MTp4TWEuaGFzKGEpPzI6M307SU1hPWZ1bmN0aW9uKGEpe3N3aXRjaChNcWEoYSkpe2Nhc2UgMDpjYXNlIDE6cmV0dXJuITA7ZGVmYXVsdDpyZXR1cm4hMX19O18uUXFhPWZ1bmN0aW9uKGEpe3JldHVybiBfLkpNYShhLFsuLi5fLndNYV0pfTtfLlVxYT1mdW5jdGlvbihhLGIpe3ZhciBjPUtNYShfLmRrYShhKXx8IiIpLGQ9S01hKF8ua2QoNixhKXx8IiIpO2lmKGMua2EubGVuZ3RoIT09MCliPWM7ZWxzZXtjPUxNYShjKTtsZXQgZT17fTtmb3IobGV0IGYgaW4gYyl7bGV0IGc9Y1tmXTtnIT09bnVsbCYmKGVbZl09Xy5ITWEua2EoZyxmKSl9Yj1fLklxYShkLGUsYil9Yi5wYXRoPV8ua2QoNSxhKXx8IiI7cmV0dXJue3N0YXRlOmIsYmFzZTphLnJlcGxhY2UoLyMuKiQvLCIiKX19OwpLTWE9ZnVuY3Rpb24oYSl7dmFyIGI9Xy5oaSgpLmxvY2F0aW9uLnBhdGhuYW1lLGM9bmV3IF8uTU1hO2MucGF0aD1iO2lmKCFhKXJldHVybiBjO2E9bmV3IF8uUUthKGEsXy5ITWEpO2ZvcihsZXQgW2QsZV1vZiBhKWE9ZCxiPWUsTXFhKGEpIT09MyYmKElNYShhKSYmKGMucGFyYW1zLmhhcyhhKXx8Yy5rYS5wdXNoKGEpKSxjLnBhcmFtcy5zZXQoYSxiKSk7cmV0dXJuIGN9O18uTk1hPWZ1bmN0aW9uKGEpe3JldHVybiBhPT09Ii8ifHxhPT09Ii9zZWFyY2gifHxhPT09Ii93ZWJocCJ9O18uSk1hPWZ1bmN0aW9uKGEsYil7cmV0dXJuIF8uSXFhKGEsXy5RYyhBcnJheS5pc0FycmF5KGIpP3lqYShiKTpiLCgpPT4iIikpfTtMTWE9ZnVuY3Rpb24oYSl7cmV0dXJuIF8uUWMoT01hKGEpLChiLGMpPT5fLkhNYS5GYyhiLGMpKX07Xy52Zz1mdW5jdGlvbihhLGIpe3JldHVybiBhLnBhcmFtcy5nZXQoYil8fCIifTsKXy5QcWE9ZnVuY3Rpb24oYSl7dmFyIGI9bmV3IF8uUUthKCIiLF8uSE1hKSxjPW5ldyBTZXQoWy4uLmEua2EsLi4uYS5wYXJhbXMua2V5cygpXSk7Zm9yKGxldCBkIG9mIGMpYS5wYXJhbXMuaGFzKGQpJiZJTWEoZCkmJmIuc2V0KGQsYS5wYXJhbXMuZ2V0KGQpfHwiIik7cmV0dXJuIGIudG9TdHJpbmcoKX07Xy5TcWE9ZnVuY3Rpb24oYSl7dmFyIGI9Wy4uLmEucGFyYW1zLmtleXMoKV07Yi5zb3J0KCk7dmFyIGM9bmV3IF8uUUthKCIiLF8uSE1hKTtmb3IobGV0IGQgb2YgYilJTWEoZCl8fGMuc2V0KGQsYS5wYXJhbXMuZ2V0KGQpfHwiIik7cmV0dXJuIGMudG9TdHJpbmcoKX07Cl8uSXFhPWZ1bmN0aW9uKGEsYixjKXthPW5ldyBfLk1NYShhKTtjPWM/KCk9PiExOmQ9PiFkO2ZvcihsZXQgZCBpbiBiKUlNYShkKSYmKGMoYltkXSl8fGEucGFyYW1zLmhhcyhkKT9jKGJbZF0pJiZfLkRhKGEua2EsZCk6YS5rYS5wdXNoKGQpKSxjKGJbZF0pP2EucGFyYW1zLmRlbGV0ZShkKTphLnBhcmFtcy5zZXQoZCxTdHJpbmcoYltkXSkpO3JldHVybiBhfTtQTWE9ZnVuY3Rpb24oYSl7dmFyIGI9e307Zm9yKGxldCBjIG9mIGEucGFyYW1zLmtleXMoKSlJTWEoYykmJihiW2NdPWEucGFyYW1zLmdldChjKXx8IiIpO3JldHVybiBifTtRTWE9ZnVuY3Rpb24oYSl7cmV0dXJuIF8uUWMoUE1hKGEpLChiLGMpPT5fLkhNYS5GYyhiLGMpKX07T01hPWZ1bmN0aW9uKGEpe3ZhciBiPXt9O2ZvcihsZXQgYyBvZiBhLnBhcmFtcy5rZXlzKCkpTXFhKGMpPT09MiYmKGJbY109YS5wYXJhbXMuZ2V0KGMpfHwiIik7cmV0dXJuIGJ9OwpfLlJxYT1mdW5jdGlvbihhLGIpe3JldHVybiBfLnRqYShRTWEoYSksUU1hKGIpKSYmKGEucGF0aD09PWIucGF0aHx8Xy5OTWEoYi5wYXRoKSYmXy5OTWEoYS5wYXRoKSl9OwpfLk1NYT1jbGFzc3tjb25zdHJ1Y3RvcihhKXthPyh0aGlzLnBhcmFtcz1uZXcgTWFwKFsuLi5hLnBhcmFtc10pLHRoaXMua2E9Wy4uLmEua2FdLHRoaXMucGF0aD1hLnBhdGgpOih0aGlzLnBhcmFtcz1uZXcgTWFwLHRoaXMua2E9W10sdGhpcy5wYXRoPSIiKX1nZXRQYXJhbXMoKXt2YXIgYT17fTtmb3IobGV0IGIgb2YgdGhpcy5wYXJhbXMua2V5cygpKWFbYl09dGhpcy5wYXJhbXMuZ2V0KGIpfHwiIjtyZXR1cm4gYX1nZXRQYXRoKCl7cmV0dXJuIHRoaXMucGF0aH1lcXVhbHMoYSl7aWYodGhpcy5wYXJhbXMuc2l6ZSE9PWEucGFyYW1zLnNpemUpcmV0dXJuITE7Zm9yKGxldCBiIG9mIHRoaXMucGFyYW1zLmtleXMoKSlpZighek1hLmhhcyhiKSYmdGhpcy5wYXJhbXMuZ2V0KGIpIT09YS5wYXJhbXMuZ2V0KGIpKXJldHVybiExO3JldHVybiB0aGlzLnBhdGg9PT1hLnBhdGh8fF8uTk1hKGEucGF0aCkmJl8uTk1hKHRoaXMucGF0aCl9fTt2YXIgV25hPW5ldyBVaW50OEFycmF5KDEyMyksUk1hPSExO3ZhciBTTWE9W107UGk9UGl8fHt9O3ZhciBUTWE9ZnVuY3Rpb24oKXtfLkVkLmNhbGwodGhpcyl9O18uVWkoVE1hLF8uRWQpO1RNYS5wcm90b3R5cGUuaW5pdGlhbGl6ZT1mdW5jdGlvbigpe307Wm5hLnByb3RvdHlwZS5leGVjdXRlPWZ1bmN0aW9uKGEpe3RoaXMua2EmJih0aGlzLmthLmNhbGwodGhpcy5vYXx8bnVsbCxhKSx0aGlzLmthPXRoaXMub2E9bnVsbCl9O1puYS5wcm90b3R5cGUuYWJvcnQ9ZnVuY3Rpb24oKXt0aGlzLm9hPXRoaXMua2E9bnVsbH07UGkudUpiPVpuYTtfLlVpKGFvYSxfLkVkKTtfLmFhPWFvYS5wcm90b3R5cGU7Xy5hYS5LeGI9VE1hO18uYWEub2FiPW51bGw7Xy5hYS5lRj1mdW5jdGlvbigpe3JldHVybiB0aGlzLkFhfTtfLmFhLlZtPWZ1bmN0aW9uKGEpe3RoaXMuQWE9YX07Xy5hYS5nZXRJZD1mdW5jdGlvbigpe3JldHVybiB0aGlzLkVhfTt2YXIgVk1hPWZ1bmN0aW9uKGEsYixjKXthLndhfHwoYS53YT1bXSk7VU1hKGEud2EsYixjKX0sV01hPWZ1bmN0aW9uKGEsYil7YS5rYXx8KGEua2E9W10pO1VNYShhLmthLGIpfSxVTWE9ZnVuY3Rpb24oYSxiLGMpe2I9bmV3IFBpLnVKYihiLGMpO2EucHVzaChiKX07Xy5hYT1hb2EucHJvdG90eXBlO18uYWEuaXNMb2FkZWQ9ZnVuY3Rpb24oKXtyZXR1cm4hIXRoaXMub2FifTtfLmFhLm1oYj1mdW5jdGlvbigpe3JldHVybiB0aGlzLkJhfTtfLmFhLnpyYT1mdW5jdGlvbigpe3RoaXMub2FiPW5ldyBUTWF9OwpfLmFhLm9uTG9hZD1mdW5jdGlvbihhKXt2YXIgYj1uZXcgdGhpcy5LeGI7Yi5pbml0aWFsaXplKGEoKSk7dGhpcy5vYWI9YjtpZih0aGlzLm9hJiYoYj1YTWEodGhpcy5vYSxhKCkpKSlyZXR1cm4gYjtpZih0aGlzLndhJiYoYT1YTWEodGhpcy53YSxhKCkpKSlyZXR1cm4gYTt0aGlzLmthJiYodGhpcy5rYS5sZW5ndGg9MCk7cmV0dXJuIG51bGx9O18uYWEub25FcnJvcj1mdW5jdGlvbihhKXt0aGlzLmthJiYoYT1YTWEodGhpcy5rYSxhKSkmJl8uZmEoRXJyb3IoImRiYCIrYSkpO3RoaXMub2EmJih0aGlzLm9hLmxlbmd0aD0wKTt0aGlzLndhJiYodGhpcy53YS5sZW5ndGg9MCl9O3ZhciBYTWE9ZnVuY3Rpb24oYSxiKXt2YXIgYz1bXTtmb3IobGV0IGQ9MDtkPGEubGVuZ3RoO2QrKyl0cnl7YVtkXS5leGVjdXRlKGIpfWNhdGNoKGUpe18uZmEoZSksYy5wdXNoKGUpfWEubGVuZ3RoPTA7cmV0dXJuIGMubGVuZ3RoP2M6bnVsbH07CmFvYS5wcm90b3R5cGUucWM9ZnVuY3Rpb24oKXthb2EuUmQucWMuY2FsbCh0aGlzKTtfLkRkKHRoaXMub2FiKX07UGkuZURhPWFvYTt2YXIgWU1hPXtFUlJPUjoiZXJyb3IiLElETEU6ImlkbGUiLEFDVElWRToiYWN0aXZlIixOamM6InVzZXJJZGxlIixNamM6InVzZXJBY3RpdmUifTtfLmFhPWJvYS5wcm90b3R5cGU7Xy5hYS5hN2I9ZnVuY3Rpb24oKXt9O18uYWEuZDdiPWZ1bmN0aW9uKCl7fTtfLmFhLnRkYj1mdW5jdGlvbigpe307Xy5hYS5FT2E9ZnVuY3Rpb24oKXt0aHJvdyBFcnJvcigiZWIiKTt9O18uYWEueWNiPWZ1bmN0aW9uKCl7dGhyb3cgRXJyb3IoImZiIik7fTt2YXIgWk1hPWZ1bmN0aW9uKGEpe3ZhciBiPVJ0YSgpO2EuRmI9Yn07Xy5hYT1ib2EucHJvdG90eXBlO18uYWEuWlRiPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMua2F9O18uYWEuQkNiPWZ1bmN0aW9uKGEpe3RoaXMua2E9YX07Xy5hYS5pc0FjdGl2ZT1mdW5jdGlvbigpe3JldHVybiExfTtfLmFhLmxZYj1mdW5jdGlvbigpe3JldHVybiExfTtfLmFhLm5rYT1mdW5jdGlvbigpe307Xy5hYS5JSWI9ZnVuY3Rpb24oKXt9OwpfLmFhLnRUYj1mdW5jdGlvbigpe3Rocm93IEVycm9yKCJnYiIpO307dmFyIGFOYT1mdW5jdGlvbihhKXtzd2l0Y2goYS50eXBlKXtjYXNlICRNYS5UeXBlLlJKYjpyZXR1cm4iVW5hdXRob3JpemVkIjtjYXNlICRNYS5UeXBlLmhJYjpyZXR1cm4iQ29uc2VjdXRpdmUgbG9hZCBmYWlsdXJlcyI7Y2FzZSAkTWEuVHlwZS5USU1FT1VUOnJldHVybiJUaW1lZCBvdXQiO2Nhc2UgJE1hLlR5cGUuQUpiOnJldHVybiJPdXQgb2YgZGF0ZSBtb2R1bGUgaWQiO2Nhc2UgJE1hLlR5cGUuZ2hiOnJldHVybiJJbml0IGVycm9yIjtkZWZhdWx0OnJldHVybmBVbmtub3duIGZhaWx1cmUgdHlwZSAke2EudHlwZX1gfX0sJE1hPWNsYXNzIGV4dGVuZHMgRXJyb3J7Y29uc3RydWN0b3IoYSxiLGMsZCxlKXtzdXBlcigpO3RoaXMubmFtZT0iTW9kdWxlTG9hZEZhaWx1cmUiO3RoaXMudHlwZT1hO3RoaXMuc3RhdHVzPWI7dGhpcy51cmw9ZDt0aGlzLmNhdXNlPWU7dGhpcy5tZXNzYWdlPXRoaXMudG9TdHJpbmcoKX10b1N0cmluZygpe3JldHVybmAke2FOYSh0aGlzKX0gKCR7dGhpcy5zdGF0dXMhPQp2b2lkIDA/dGhpcy5zdGF0dXM6Ij8ifSlgfX07UGkuejA9JE1hO1BpLnowLlR5cGU9e1JKYjowLGhJYjoxLFRJTUVPVVQ6MixBSmI6MyxnaGI6NH07dmFyIG5vPWZ1bmN0aW9uKCl7Ym9hLmNhbGwodGhpcyk7dGhpcy5JYT1udWxsO3RoaXMud2E9bmV3IE1hcDt0aGlzLkVhPW5ldyBTZXQ7dGhpcy5HYT1bXTt0aGlzLlJhPW5ldyBTZXQ7dGhpcy5OYT0hMTt0aGlzLkJhPVtdO3RoaXMuS2E9bmV3IFNldDt0aGlzLm9hPU5CYT9uZXcgTWFwOnt9O3RoaXMuWmE9bmV3IE1hcDt0aGlzLkFhPXRoaXMuU2E9bmV3IFBpLmVEYShbXSwiIik7dGhpcy5BYj1udWxsO3RoaXMuT2E9bmV3IF8uWWU7dGhpcy5XaT1udWxsO3RoaXMuSWI9dGhpcy5PYj10aGlzLkpiPXRoaXMucmI9dGhpcy5uYj0hMX0sWWhhO18uVWkobm8sYm9hKTt2YXIgYk5hPWZ1bmN0aW9uKGEsYil7Xy5iYS5jYWxsKHRoaXMsYEVycm9yIGxvYWRpbmcgJHthfTogJHtifWApfTtfLlVpKGJOYSxfLmJhKTtuby5wcm90b3R5cGUuYTdiPWZ1bmN0aW9uKGEpe3RoaXMubmI9YX07bm8ucHJvdG90eXBlLmQ3Yj1mdW5jdGlvbihhKXt0aGlzLnJiPWF9Owpuby5wcm90b3R5cGUudGRiPWZ1bmN0aW9uKGEsYil7aWYoISh0aGlzIGluc3RhbmNlb2Ygbm8pKXRoaXMudGRiKGEsYik7ZWxzZSBpZih0eXBlb2YgYT09PSJzdHJpbmciKXtpZihhLnN0YXJ0c1dpdGgoImQkIikpe2E9YS5zdWJzdHJpbmcoMik7Zm9yKHZhciBjPVtdLGQ9MCxlPWEuaW5kZXhPZigiLyIpLGY9MCxnPSExLGg9MDs7KXt2YXIgaz1nP2Euc3Vic3RyaW5nKGYpOmEuc3Vic3RyaW5nKGYsZSk7aWYoay5sZW5ndGg9PT0wKWQrKyxmPSJzeSIrZC50b1N0cmluZygzNiksaz1bXTtlbHNle3ZhciBtPWsuaW5kZXhPZigiOiIpO2lmKG08MClmPWssaz1bXTtlbHNlIGlmKG09PT1rLmxlbmd0aC0xKWY9ay5zdWJzdHJpbmcoMCxtKSxrPUFycmF5KGNbaC0xXSk7ZWxzZXtmPWsuc3Vic3RyaW5nKDAsbSk7az1rLnN1YnN0cmluZyhtKzEpLnNwbGl0KCIsIik7bT1oO2ZvcihsZXQgbj0wO248ay5sZW5ndGg7bisrKW0tPWtbbl0ubGVuZ3RoPT09MD8xOk51bWJlcihrW25dKSxrW25dPWNbbV19bT0KMDtpZihmLmxlbmd0aD09PTApbT0xO2Vsc2UgaWYoZi5jaGFyQXQoMCk9PT0iKyJ8fGYuY2hhckF0KDApPT09Ii0iKW09TnVtYmVyKGYpO20hPT0wJiYoZCs9bSxmPSJzeSIrZC50b1N0cmluZygzNikpfWMucHVzaChmKTtjTmEodGhpcyxmLGspO2lmKGcpYnJlYWs7Zj1lKzE7ZT1hLmluZGV4T2YoIi8iLGYpO2U9PT0tMSYmKGc9ITApO2grK310aGlzLklhPWN9ZWxzZSBpZihhLnN0YXJ0c1dpdGgoInAkIikpZE5hKHRoaXMsYSk7ZWxzZXthPWEuc3BsaXQoIi8iKTtjPVtdO2ZvcihkPTA7ZDxhLmxlbmd0aDtkKyspe2g9YVtkXS5zcGxpdCgiOiIpO2U9aFswXTtnPVtdO2lmKGhbMV0pZm9yKGc9aFsxXS5zcGxpdCgiLCIpLGg9MDtoPGcubGVuZ3RoO2grKylnW2hdPWNbcGFyc2VJbnQoZ1toXSwzNildO2MucHVzaChlKTtjTmEodGhpcyxlLGcpfXRoaXMuSWE9Y31pZihiJiZiLmxlbmd0aCl7Zm9yKGxldCBuIG9mIGIpdGhpcy5FYS5hZGQobik7dGhpcy5BYj1fLnZhKGIpfWVsc2UgdGhpcy5PYS5vYXx8CnRoaXMuT2EuY2FsbGJhY2soKTtPYmplY3QuZnJlZXplKHRoaXMuSWEpO2VOYSh0aGlzKX19Owp2YXIgZE5hPWZ1bmN0aW9uKGEsYil7aWYoIVJNYSl7Zm9yKHZhciBjPTA7Yzw2NDtjKyspV25hWyJBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWmFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6MDEyMzQ1Njc4OS1fIi5jaGFyQ29kZUF0KGMpXT1jO1JNYT0hMH1iPXtIa2I6YixJcDoyfTtZbmEoYik7Yz1ZbmEoYik7dmFyIGQ9WW5hKGIpKzEsZT1BcnJheShjKSxmPUFycmF5KGMpLGc9QXJyYXkoYyk7ZD1BcnJheShkKTt2YXIgaD0wLGs9MCxtPWIuSGtiLG49Yi5JcCxwPWIuSGtiLmluZGV4T2YoInwiLGIuSXApO2IuSXA9cCsxO2ZvcihwPTA7cDxjO3ArKyl7dmFyIHI9WW5hKGIpLHg9ciYyLHo9ciYxO3I+Pj49Mjt6PyhoKz1yPj4+MV4tKHImMSkscj0ic3kiK2gudG9TdHJpbmcoMzYpKTooej1uLG4rPXIscj1tLnN1YnN0cmluZyh6LG4pKTtlW3BdPXI7eCYmKGRbaysrXT1yKX1kW2tdPSIiO24rKztiLklwKys7az1jJi0yO2g9YyYxO2ZvcihtPTA7bTxrO20rPTIpbj1YbmEoYiksZ1ttXT0KbiY3LGdbbSsxXT1uPj4+MyY3O2gmJihoPVhuYShiKSxnW2tdPWgmNyk7Yi5JcCsrO2ZvcihrPTA7azxjO2srKylnW2tdPT09NyYmKGdba109WW5hKGIpKTtiLklwKys7az0wO2ZvcihoPTA7aDxjO2grKyl7bT1nW2hdO249bT09PTA/U01hOkFycmF5KG0pO2ZbaF09bjtwPWs7Zm9yKHg9MDt4PG07eCsrKXAtPVluYShiKSxuW3hdPWRbcF07ZFtrXT09PWVbaF0mJmsrK312YXIge2lkczpCLGRlcGVuZGVuY2llczpIfT17aWRzOmUsZGVwZW5kZW5jaWVzOmZ9O2ZvcihiPTA7YjxCLmxlbmd0aDtiKyspY05hKGEsQltiXSxIW2JdKTthLklhPUJ9O18uYWE9bm8ucHJvdG90eXBlO18uYWEuV0M9ZnVuY3Rpb24oYSl7cmV0dXJuIHRoaXMud2EuZ2V0KGEpfTsKXy5hYS5FT2E9ZnVuY3Rpb24oYSxiKXt2YXIgYz10aGlzLldDKGEpO2MmJmMuaXNMb2FkZWQoKT90aGlzLmxvYWQoYik6dGhpcy5vYSBpbnN0YW5jZW9mIE1hcD8oYz10aGlzLm9hLmdldChhKSxjfHwoYz1uZXcgU2V0LHRoaXMub2Euc2V0KGEsYykpLGMuYWRkKGIpKToodGhpcy5vYVthXXx8KHRoaXMub2FbYV09e30pLHRoaXMub2FbYV1bYl09ITApfTtfLmFhLnljYj1mdW5jdGlvbihhLGIpe2lmKHRoaXMub2EgaW5zdGFuY2VvZiBNYXApe3ZhciBjPXRoaXMub2EuZ2V0KGEpO2MmJihjLmRlbGV0ZShiKSxjLnNpemU9PT0wJiZ0aGlzLm9hLmRlbGV0ZShhKSl9ZWxzZSBpZih0aGlzLm9hW2FdKXtkZWxldGUgdGhpcy5vYVthXVtiXTtmb3IoYyBpbiB0aGlzLm9hW2FdKXJldHVybjtkZWxldGUgdGhpcy5vYVthXX19O18uYWEuQkNiPWZ1bmN0aW9uKGEpe25vLlJkLkJDYi5jYWxsKHRoaXMsYSk7ZU5hKHRoaXMpfTsKXy5hYS5pc0FjdGl2ZT1mdW5jdGlvbigpe3JldHVybiB0aGlzLkVhLnNpemU+MH07Xy5hYS5sWWI9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5LYS5zaXplPjB9Owp2YXIgZk5hPWZ1bmN0aW9uKGEpe3ZhciBiPWEuSmIsYz1hLmlzQWN0aXZlKCk7YyE9YiYmKGEubDZhKGM/WU1hLkFDVElWRTpZTWEuSURMRSksYS5KYj1jKTtiPWEubFliKCk7YiE9YS5PYiYmKGEubDZhKGI/WU1hLk1qYzpZTWEuTmpjKSxhLk9iPWIpfSxjTmE9ZnVuY3Rpb24oYSxiLGMpe3ZhciBkPWEud2EuZ2V0KGIpO2Q/ZC5WbShjKTphLndhLnNldChiLG5ldyBQaS5lRGEoYyxiKSl9LGF1YT1mdW5jdGlvbihhLGIsYyl7dmFyIGQ9bmV3IFNldChiKTtiPVtdO3ZhciBlPXt9O2ZvcihsZXQgZiBvZiBkKXtkPWEuV0MoZik7aWYoIWQpdGhyb3cgRXJyb3IoImhiYCIrZik7bGV0IGc9bmV3IF8uWWU7ZVtmXT1nO2QuaXNMb2FkZWQoKT9nLmNhbGxiYWNrKGEua2EpOihnTmEoYSxmLGQsISFjLGcpLGhOYShhLGYpfHxiLnB1c2goZikpfWIubGVuZ3RoPjAmJmlOYShhLGIpO3JldHVybiBlfSxnTmE9ZnVuY3Rpb24oYSxiLGMsZCxlKXtWTWEoYyxlLmNhbGxiYWNrLGUpO1dNYShjLGZ1bmN0aW9uKGYpe2Uua2EobmV3IGJOYShiLApmKSl9KTtoTmEoYSxiKT9kJiYoYS5LYS5hZGQoYiksZk5hKGEpKTpkJiZhLkthLmFkZChiKX0saU5hPWZ1bmN0aW9uKGEsYil7YS5yYj9fLm5nKGEuT2EsKDAsXy5pZSkoYS5QYSxhLGIpKTphLkVhLnNpemU9PT0wfHxhLk5hJiZbLi4uYS5FYV0uZXZlcnkoYz0+YS5XQyhjKS5taGIoKSk/YS5QYShiKTooYS5CYS5wdXNoKGIpLGZOYShhKSl9Owpuby5wcm90b3R5cGUuUGE9ZnVuY3Rpb24oYSxiPTAsYyl7dmFyIGQ9ak5hKHRoaXMsYSk7aWYodGhpcy5yYnx8dGhpcy5OYSlmb3IobGV0IGUgb2YgZCl0aGlzLkVhLmFkZChlKTtlbHNlIHRoaXMuRWE9bmV3IFNldChkKTt0aGlzLkdhPXRoaXMubmI/YTpfLkdhKGQpO2ZOYSh0aGlzKTtpZihkLmxlbmd0aCE9PTApe2ZvcihsZXQgZSBvZiBkKXRoaXMuUmEuYWRkKGUpO2E9dGhpcy5GYjtpZighYSl0aHJvdyBFcnJvcigiaWIiKTtpZigodGhpcy5vYSBpbnN0YW5jZW9mIE1hcD90aGlzLm9hLnNpemU+MDpPYmplY3Qua2V5cyh0aGlzLm9hKS5sZW5ndGg+MCkmJiFhLndkKXRocm93IEVycm9yKCJqYiIpO2tOYShhLF8uR2EoZCkse05ROnRoaXMub2Esb25FcnJvcjooZSxmLGcpPT5sTmEodGhpcyx0aGlzLkdhLGQsZSE9bnVsbD9lOnZvaWQgMCxmLGIsISFnKSxyNjooMCxfLmllKSh0aGlzLlFiLHRoaXMpLExwYjohIWN9KX19Owp2YXIgbU5hPWNsYXNze2NvbnN0cnVjdG9yKGEpe3RoaXMua2E9YTt0aGlzLm9hPW5ldyBTZXQ7dGhpcy5yZXN1bHQ9W119RTcoYSl7aWYoIXRoaXMub2EuaGFzKGEpJiYodGhpcy5vYS5hZGQoYSksIXRoaXMua2EuUmEuaGFzKGEpKSl7dmFyIGI9dGhpcy5rYS5XQyhhKTtpZihiJiYhYi5pc0xvYWRlZCgpKXtiPWIuZUYoKTtmb3IobGV0IGM9MDtjPGIubGVuZ3RoO2MrKyl0aGlzLkU3KGJbY10pO3RoaXMucmVzdWx0LnB1c2goYSl9fX19LGpOYT1mdW5jdGlvbihhLGIpe2I9Yi5maWx0ZXIoZT0+YS53YS5nZXQoZSkuaXNMb2FkZWQoKT8oXy5lYS5zZXRUaW1lb3V0KCgpPT5FcnJvcigia2JgIitlKSwwKSwhMSk6ITApO2lmKE9CYSl7dmFyIGM9bmV3IG1OYShhKTtmb3IodmFyIGQ9MDtkPGIubGVuZ3RoO2QrKyljLkU3KGJbZF0pO2M9Yy5yZXN1bHR9ZWxzZXtjPVtdO2ZvcihkPTA7ZDxiLmxlbmd0aDtkKyspYz1jLmNvbmNhdChuTmEoYSxiW2RdKSk7Xy5aYWEoYyl9cmV0dXJuIWEubmImJgpjLmxlbmd0aD4xPyhiPWMuc2hpZnQoKSxhLkJhPWMubWFwKGZ1bmN0aW9uKGUpe3JldHVybltlXX0pLmNvbmNhdChhLkJhKSxbYl0pOmN9LG5OYT1mdW5jdGlvbihhLGIpe2lmKE9CYSlyZXR1cm4gYT1uZXcgbU5hKGEpLGEuRTcoYiksYS5yZXN1bHQ7dmFyIGM9W107YS5SYS5oYXMoYil8fGMucHVzaChiKTtiPVtiXTtmb3IobGV0IGQ9MDtkPGIubGVuZ3RoO2QrKyl7bGV0IGU9YS5XQyhiW2RdKS5lRigpO2ZvcihsZXQgZj1lLmxlbmd0aC0xO2Y+PTA7Zi0tKXtsZXQgZz1lW2ZdO2EuV0MoZykuaXNMb2FkZWQoKXx8YS5SYS5oYXMoZyl8fChjLnB1c2goZyksYi5wdXNoKGcpKX19Yy5yZXZlcnNlKCk7Xy5aYWEoYyk7cmV0dXJuIGN9LGVOYT1mdW5jdGlvbihhKXtpZihhLkFhPT1hLlNhKXthLkFhPW51bGw7bGV0IGI9YS5TYS5vbkxvYWQoKDAsXy5pZSkoYS5aVGIsYSkpO2ImJmIubGVuZ3RoJiZvTmEoYSxuZXcgUGkuejAoUGkuejAuVHlwZS5naGIsdm9pZCAwLHZvaWQgMCx2b2lkIDAsCmJbMF0pKTtmTmEoYSl9fTsKbm8ucHJvdG90eXBlLnpyYT1mdW5jdGlvbigpe2lmKHRoaXMuQWEpe3ZhciBhPXRoaXMuQWEuZ2V0SWQoKSxiPVtdO2lmKHRoaXMub2EgaW5zdGFuY2VvZiBNYXApe3ZhciBjPXRoaXMub2EuZ2V0KGEpO2lmKGMpe2Zvcih2YXIgZCBvZiBBcnJheS5mcm9tKGMpKShjPXRoaXMuV0MoZCkpJiYhYy5pc0xvYWRlZCgpJiYodGhpcy55Y2IoYSxkKSxiLnB1c2goZCkpO2F1YSh0aGlzLGIpfX1lbHNlIGlmKHRoaXMub2FbYV0pe2ZvcihjIG9mIE9iamVjdC5rZXlzKHRoaXMub2FbYV0pKShkPXRoaXMuV0MoYykpJiYhZC5pc0xvYWRlZCgpJiYodGhpcy55Y2IoYSxjKSxiLnB1c2goYykpO2F1YSh0aGlzLGIpfXRoaXMuaXNEaXNwb3NlZCgpfHwoKGI9dGhpcy53YS5nZXQoYSkub25Mb2FkKCgwLF8uaWUpKHRoaXMuWlRiLHRoaXMpKSkmJmIubGVuZ3RoJiZvTmEodGhpcyxuZXcgUGkuejAoUGkuejAuVHlwZS5naGIsdm9pZCAwLHZvaWQgMCx2b2lkIDAsYlswXSkpLHRoaXMuS2EuZGVsZXRlKGEpLHRoaXMuRWEuZGVsZXRlKGEpLAp0aGlzLk5hfHx0aGlzLkVhLnNpemUhPT0wfHxwTmEodGhpcyksdGhpcy5BYiYmYT09dGhpcy5BYiYmKHRoaXMuT2Eub2F8fHRoaXMuT2EuY2FsbGJhY2soKSksZk5hKHRoaXMpLHRoaXMuQWE9bnVsbCl9fTt2YXIgaE5hPWZ1bmN0aW9uKGEsYil7aWYoYS5FYS5oYXMoYikpcmV0dXJuITA7Zm9yKGxldCBjPTA7YzxhLkJhLmxlbmd0aDtjKyspaWYoXy5BYShhLkJhW2NdLGIpKXJldHVybiEwO3JldHVybiExfSxxTmE9ZnVuY3Rpb24oYSxiLGMsZCl7dmFyIGU9YS53YS5nZXQoYik7ZS5pc0xvYWRlZCgpPyhhPW5ldyBQaS51SmIoYyxkKSxfLmVhLnNldFRpbWVvdXQoKDAsXy5pZSkoYS5leGVjdXRlLGEpLDApKTpoTmEoYSxiKT9WTWEoZSxjLGQpOihWTWEoZSxjLGQpLGlOYShhLFtiXSkpfTtuby5wcm90b3R5cGUubG9hZD1mdW5jdGlvbihhLGIpe3JldHVybiBhdWEodGhpcyxbYV0sYilbYV19O18uck5hPWZ1bmN0aW9uKGEsYil7cmV0dXJuIGF1YShhLGIpfTsKWWhhPWZ1bmN0aW9uKGEpe3ZhciBiPV8uVGhhO2IuQWEmJmIuQWEuZ2V0SWQoKT09PSJzeW50aGV0aWNfbW9kdWxlX292ZXJoZWFkIiYmKGIuenJhKCksYi53YS5kZWxldGUoInN5bnRoZXRpY19tb2R1bGVfb3ZlcmhlYWQiKSk7dmFyIGM9Yi53YS5nZXQoYSk7YyYmKGM9Yy5lRigpfHxbXSxzTmEoYixjLGQ9PntkLnpyYSgpO2IuRWEuZGVsZXRlKGQuZ2V0SWQoKSl9LGQ9PiFkLmlzTG9hZGVkKCksbmV3IFNldCkpO2IuQWE9Yi5XQyhhKTtiLkFhJiYoYi5BYS5CYT0hMCk7Yi5OYSYmcE5hKGIpfTtuby5wcm90b3R5cGUubmthPWZ1bmN0aW9uKGEpe2lmKCF0aGlzLkFhKXt2YXIgYj1uZXcgUGkuZURhKFtdLCJzeW50aGV0aWNfbW9kdWxlX292ZXJoZWFkIik7dGhpcy53YS5zZXQoInN5bnRoZXRpY19tb2R1bGVfb3ZlcmhlYWQiLGIpO3RoaXMuQWE9Yn1iPXRoaXMuQWE7Yi5vYXx8KGIub2E9W10pO1VNYShiLm9hLGEpfTsKbm8ucHJvdG90eXBlLklJYj1mdW5jdGlvbihhKXtpZih0aGlzLkFhJiZ0aGlzLkFhLmdldElkKCkhPT0ic3ludGhldGljX21vZHVsZV9vdmVyaGVhZCIpe3ZhciBiPXRoaXMuQWE7aWYoYi5LeGI9PT1UTWEpYi5LeGI9YTtlbHNlIHRocm93IEVycm9yKCJjYiIpO319Owp2YXIgbE5hPWZ1bmN0aW9uKGEsYixjLGQsZSxmPTAsZz0hMSl7dmFyIGg9Zz8wOmYrMTtmPV8uR2EoYyk7YS5HYT1iO2ZvcihsZXQgayBvZiBjKWEuUmEuZGVsZXRlKGspO2lmKGQ9PTQwMSlvTmEoYSxuZXcgUGkuejAoUGkuejAuVHlwZS5SSmIsZCkpLGEuQmEubGVuZ3RoPTA7ZWxzZSBpZihkPT00MTApdE5hKGEsbmV3IFBpLnowKFBpLnowLlR5cGUuQUpiLGQpKSxwTmEoYSk7ZWxzZSBpZihoPj0zKXROYShhLG5ldyBQaS56MChQaS56MC5UeXBlLmhJYixkLGYsZSkpLHBOYShhKTtlbHNle2xldCBrPWQ9PTgwMDF8fCExOyhjPU1hdGgucG93KGgsMikqNUUzKT9fLmVhLnNldFRpbWVvdXQoKCk9PnthLlBhKGIsaCxrKX0sYyk6YS5QYShiLGgsayl9fTtuby5wcm90b3R5cGUuUWI9ZnVuY3Rpb24oKXt0TmEodGhpcyxuZXcgUGkuejAoUGkuejAuVHlwZS5USU1FT1VUKSk7cE5hKHRoaXMpfTsKdmFyIHROYT1mdW5jdGlvbihhLGIpe2EuR2EubGVuZ3RoPjE/YS5CYT1hLkdhLm1hcChmdW5jdGlvbihjKXtyZXR1cm5bY119KS5jb25jYXQoYS5CYSk6b05hKGEsYil9LG9OYT1mdW5jdGlvbihhLGIpe3ZhciBjPWEuR2E7YS5FYS5jbGVhcigpO3ZhciBkPVtdO2Zvcih2YXIgZT0wO2U8YS5CYS5sZW5ndGg7ZSsrKXt2YXIgZj1hLkJhW2VdLmZpbHRlcihmdW5jdGlvbihnKXt2YXIgaD1uTmEodGhpcyxnKTtyZXR1cm4gXy5ZaShjLGZ1bmN0aW9uKGspe3JldHVybiBfLkFhKGgsayl9KX0sYSk7Xy5JYShkLGYpfWZvcihlPTA7ZTxjLmxlbmd0aDtlKyspXy5CYShkLGNbZV0pO2ZvcihlPTA7ZTxkLmxlbmd0aDtlKyspe2ZvcihmPTA7ZjxhLkJhLmxlbmd0aDtmKyspXy5EYShhLkJhW2ZdLGRbZV0pO2EuS2EuZGVsZXRlKGRbZV0pfWlmKGU9YS5aYS5nZXQoWU1hLkVSUk9SKSlmb3IoZj0wO2Y8ZS5sZW5ndGg7ZisrKXtsZXQgZz1lW2ZdO2ZvcihsZXQgaD0wO2g8ZC5sZW5ndGg7aCsrKWcoWU1hLkVSUk9SLApkW2hdLGIpfWZvcihkPTA7ZDxjLmxlbmd0aDtkKyspaWYoZT1hLndhLmdldChjW2RdKSllLm9uRXJyb3IoYik7YS5HYS5sZW5ndGg9MDtmTmEoYSl9LHBOYT1mdW5jdGlvbihhKXtmb3IoO2EuQmEubGVuZ3RoOyl7bGV0IGI9YS5CYS5zaGlmdCgpLmZpbHRlcihmdW5jdGlvbihjKXtyZXR1cm4hdGhpcy5XQyhjKS5pc0xvYWRlZCgpfSxhKTtpZihiLmxlbmd0aD4wKXthLlBhKGIpO3JldHVybn19Zk5hKGEpfTtuby5wcm90b3R5cGUubDZhPWZ1bmN0aW9uKGEpe3ZhciBiPXRoaXMuWmEuZ2V0KGEpO2ZvcihsZXQgYz0wO2ImJmM8Yi5sZW5ndGg7YysrKWJbY10oYSl9O3ZhciBzTmE9ZnVuY3Rpb24oYSxiLGMsZCxlKXtmb3IobGV0IGYgb2YgYiliPWEuV0MoZiksIWUuaGFzKGYpJiZkKGIpJiYoZS5hZGQoZiksc05hKGEsYi5lRigpfHxbXSxjLGQsZSksYyhiKSl9Owpuby5wcm90b3R5cGUuZGlzcG9zZT1mdW5jdGlvbigpe18uWWthKEFycmF5LmZyb20odGhpcy53YS52YWx1ZXMoKSksdGhpcy5TYSk7dGhpcy53YS5jbGVhcigpO3RoaXMuRWEuY2xlYXIoKTt0aGlzLkdhPVtdO3RoaXMuS2EuY2xlYXIoKTt0aGlzLkJhPVtdO3RoaXMuWmEuY2xlYXIoKTt0aGlzLkliPSEwfTtuby5wcm90b3R5cGUuaXNEaXNwb3NlZD1mdW5jdGlvbigpe3JldHVybiB0aGlzLklifTtuby5wcm90b3R5cGUudFRiPWZ1bmN0aW9uKCl7aWYoIXRoaXMuSWEpdGhyb3cgRXJyb3IoIm1iIik7cmV0dXJuIHRoaXMuSWF9O18uV2hhPWZ1bmN0aW9uKCl7cmV0dXJuIG5ldyBub307dmFyIGNvYT0hMSxkb2E9W107dmFyIHVOYTtfLldwYT1mdW5jdGlvbigpe3dpbmRvdy5nb29nbGU9d2luZG93Lmdvb2dsZXx8e307d2luZG93Lmdvb2dsZS51bmlxdWVJZFNlcnZpY2V8fCh3aW5kb3cuZ29vZ2xlLnVuaXF1ZUlkU2VydmljZT1uZXcgdU5hKTtyZXR1cm4gd2luZG93Lmdvb2dsZS51bmlxdWVJZFNlcnZpY2V9O3VOYT1jbGFzc3tjb25zdHJ1Y3Rvcigpe3RoaXMuY291bnRlcnM9bmV3IE1hcH1zZXRJbml0aWFsVmFsdWUoYSxiLGMpe3JldHVybiB0aGlzLmNvdW50ZXJzLmdldChhKT09PXZvaWQgMHx8Yz8odGhpcy5jb3VudGVycy5zZXQoYSxiKSwhMCk6ITF9Z2V0VW5pcXVlSWQoYSl7dmFyIGI9dGhpcy5jb3VudGVycy5nZXQoYSl8fDA7dGhpcy5jb3VudGVycy5zZXQoYSxiKzEpO3JldHVybiBifX07ZmMoIktVTTdaIiwiWUxRU2QiKTtmYygiS1VNN1oiLCJZQ3ZEc2MiKTt2YXIgdk5hPV8ua2MoIktVTTdaIik7Xy5PYyh2TmEpO18uTXBhPXhkKCJZTFFTZCIsInl4VGNoZiIsImZKNTA4ZCIsdk5hKTtfLndOYT14ZCgiWUN2RHNjIiwicVFFb09jIiwiTjFVWU4iLHZOYSk7Xy5PYyhfLndOYSk7Xy5nb2EoXy53TmEsdk5hKTt2YXIgeE5hPVN5bWJvbCgibmIiKSx5TmE9U3ltYm9sKCJvYiIpO18ucmY9dm9pZCAwO18uam9hPVN5bWJvbCgicWIiKTt2YXIgek5hLE5mO3pOYT1TeW1ib2woKTtfLlVmPWZ1bmN0aW9uKGEpe3JldHVybiBuZXcgXy53Zih6TmEsMSxhKX07TmY9ZnVuY3Rpb24oYSl7cmV0dXJuIG5ldyBfLndmKHpOYSwyLGEpfTtfLldmPWZ1bmN0aW9uKGEpe3JldHVybiBuZXcgXy53ZigoYixjKT0+e2EubGVuZ3RofHxiKFtdKTt2YXIgZD1hLmxlbmd0aCxlPUFycmF5KGQpLGY9MDtmb3IobGV0IGc9MDtnPGQ7ZysrKWFbZ10uSXgoaD0+e2VbZ109aDtmKys7Zj09PWQmJmIoZSl9LGg9PntjKGgpfSl9KX07Xy5YZj1mdW5jdGlvbihhKXtyZXR1cm4gbmV3IFByb21pc2UoKGIsYyk9PnthLkl4KGIsYyl9KX07Xy55dWE9ZnVuY3Rpb24oYSl7c3dpdGNoKGEuc3RhdGUpe2Nhc2UgMDpyZXR1cm57c3RhdGU6YS5zdGF0ZX07Y2FzZSAxOnJldHVybntzdGF0ZTphLnN0YXRlLHZhbHVlOmEudmFsdWV9O2Nhc2UgMjpyZXR1cm57c3RhdGU6YS5zdGF0ZSxlcnJvcjphLmVycm9yfTtkZWZhdWx0Ol8uZWIoYS5zdGF0ZSx2b2lkIDApfX07Cl8ud2Y9Y2xhc3N7Y29uc3RydWN0b3IoYSxiLGMpe3RoaXMuc3RhdGU9MDt0aGlzLmthPVtdO2lmKGE9PT16TmEpdGhpcy5zdGF0ZT1iLHRoaXMuc3RhdGU9PT0xP3RoaXMudmFsdWU9Yzp0aGlzLmVycm9yPWM7ZWxzZXtiPWQ9PntpZih0aGlzLnN0YXRlPT09MCl7dGhpcy52YWx1ZT1kO3RoaXMuc3RhdGU9MTtmb3IobGV0IGU9MDtlPHRoaXMua2EubGVuZ3RoO2UrKyl7bGV0IFtmXT10aGlzLmthW2VdO3RyeXtmKGQpfWNhdGNoKGcpe319dGhpcy5rYT1bXX19O2M9ZD0+e2lmKHRoaXMuc3RhdGU9PT0wKXt0aGlzLmVycm9yPWQ7dGhpcy5zdGF0ZT0yO2ZvcihsZXQgZT0wO2U8dGhpcy5rYS5sZW5ndGg7ZSsrKXtsZXQgWyxmXT10aGlzLmthW2VdO3RyeXtmKGQpfWNhdGNoKGcpe319dGhpcy5rYT1bXX19O3RyeXthKGIsYyl9Y2F0Y2goZCl7YyhkKX19fUl4KGEsYil7c3dpdGNoKHRoaXMuc3RhdGUpe2Nhc2UgMDp0aGlzLmthLnB1c2goW2EsYl0pO2JyZWFrO2Nhc2UgMTphKHRoaXMudmFsdWUpOwpicmVhaztjYXNlIDI6Yih0aGlzLmVycm9yKTticmVhaztkZWZhdWx0Ol8uZWIodGhpcy5zdGF0ZSx2b2lkIDApfX1tYXAoYSxiKXt2YXIgYz1fLnl1YSh0aGlzKSxkPWMuc3RhdGU7c3dpdGNoKGQpe2Nhc2UgMTp0cnl7cmV0dXJuIF8uVWYoYShjLnZhbHVlKSl9Y2F0Y2goZSl7cmV0dXJuIE5mKGUpfWNhc2UgMjp0cnl7cmV0dXJuIE5mKGI/YihjLmVycm9yKTpjLmVycm9yKX1jYXRjaChlKXtyZXR1cm4gTmYoZSl9Y2FzZSAwOmJyZWFrO2RlZmF1bHQ6Xy5lYihkLHZvaWQgMCl9cmV0dXJuIG5ldyBfLndmKChlLGYpPT57dGhpcy5JeChnPT57dHJ5e2UoYShnKSl9Y2F0Y2goaCl7ZihoKX19LGc9Pnt0cnl7ZihiP2IoZyk6Zyl9Y2F0Y2goaCl7ZihoKX19KX0pfWZsYXRNYXAoYSxiKXt2YXIgYz1fLnl1YSh0aGlzKSxkPWMuc3RhdGU7c3dpdGNoKGQpe2Nhc2UgMTp0cnl7cmV0dXJuIGEoYy52YWx1ZSl9Y2F0Y2goZSl7cmV0dXJuIE5mKGUpfWNhc2UgMjp0cnl7cmV0dXJuIE5mKGI/YihjLmVycm9yKToKYy5lcnJvcil9Y2F0Y2goZSl7cmV0dXJuIE5mKGUpfWNhc2UgMDpicmVhaztkZWZhdWx0Ol8uZWIoZCx2b2lkIDApfXJldHVybiBuZXcgXy53ZigoZSxmKT0+e3RoaXMuSXgoZz0+e3RyeXthKGcpLkl4KGUsZil9Y2F0Y2goaCl7ZihoKX19LGc9Pnt0cnl7ZihiP2IoZyk6Zyl9Y2F0Y2goaCl7ZihoKX19KX0pfX07dmFyIEJOYSxETmEsZXphLEZOYSxHTmE7Qk5hPWZ1bmN0aW9uKGEsYil7cmV0dXJuIF8uck5hKF8uQU5hKGEpLGIpfTtETmE9ZnVuY3Rpb24oYSl7cmV0dXJuIF8uQ05hP18uSWgoYSk6UHJvbWlzZS5hbGwoYSl9O18uQU5hPWZ1bmN0aW9uKGEpe2Eub2F8fChhLm9hPV8uaGMoKSk7cmV0dXJuIGEub2F9O2V6YT1mdW5jdGlvbihhLGIpe2EucmM9Yn07Xy5Ub2E9ZnVuY3Rpb24oYSxiKXtiPWNwYSh3ZC5nZXRJbnN0YW5jZSgpLGIpO3ZhciBjPWEuZzNbYi50b1N0cmluZygpXTtpZihjKXtmb3IobGV0IGQgb2YgYS5rYSlkLmthKFtiXSk7cmV0dXJuIF8uVWYoYyl9cmV0dXJuIGIgaW5zdGFuY2VvZiBfLmljP25ldyBfLndmKChkLGUpPT57Xy5FTmEoYSxbYl0pLnRoZW4oKCk9PnthLmczW2IudG9TdHJpbmcoKV18fGUoRk5hKGEsYikpO2QoYS5nM1tiLnRvU3RyaW5nKCldKX0sZSl9KTpOZihGTmEoYSxiKSl9OwpfLkVOYT1mdW5jdGlvbihhLGIpe2E9R05hKGEsYik7cmV0dXJuIF8uQ05hP18ub29hKGEpOmF9O0ZOYT1mdW5jdGlvbihhLGIpe2ZvcihsZXQgYyBvZiBhLmthKWMub2EoW2JdKTtyZXR1cm4gbmV3IFR5cGVFcnJvcigicmJgIitiKX07Xy5DcGE9ZnVuY3Rpb24oYSxiKXtiPWNwYSh3ZC5nZXRJbnN0YW5jZSgpLGIpO3ZhciBjPWEuZzNbYi50b1N0cmluZygpXTtpZihjKWZvcihsZXQgZCBvZiBhLmthKWQua2EoW2JdKTtyZXR1cm4gY307CkdOYT1mdW5jdGlvbihhLGIpe3ZhciBjPXdkLmdldEluc3RhbmNlKCk7Yj1iLm1hcChtPT5jcGEoYyxtKSk7Yj1bLi4uKG5ldyBTZXQoYikpXTt2YXIgZD1bXSxlPVtdO2IuZm9yRWFjaChtPT57YS5pc0xvYWRlZChtKT9kLnB1c2gobSk6ZS5wdXNoKG0pfSk7dmFyIGY9ZS5maWx0ZXIobT0+IWEud2EuaGFzKG0pKTtpZihkLmxlbmd0aClmb3IobGV0IG0gb2YgYS5rYSltLmthKGQpO2lmKGYubGVuZ3RoKWZvcihsZXQgbSBvZiBhLmthKW0uQWEoZik7Yj1rb2EoZSkuc2VydmljZXMuZmlsdGVyKG09Pm0gaW5zdGFuY2VvZiBfLmljJiYhYS5pc0xvYWRlZChtKSYmIWMua2FbbS50b1N0cmluZygpXSk7dmFyIGc9bmV3IFNldDtiLmZvckVhY2gobT0+e209bS5rYTttIT1udWxsJiZnLmFkZChtKX0pO2lmKCFnLnNpemUpcmV0dXJuIF8uQ05hP18uRGcoKTpQcm9taXNlLnJlc29sdmUoKTtmLmZvckVhY2gobT0+e2Eud2EuYWRkKG0pfSk7dHJ5e3ZhciBoPU9iamVjdC52YWx1ZXMoYS5BYShhLApbLi4uZ10pKX1jYXRjaChtKXtsZXQgbjtfLkNOYT9uPV8uSGgobSk6bj1Qcm9taXNlLnJlamVjdChtKTtoPVtuXX12YXIgaz0oKT0+e2YuZm9yRWFjaChtPT57YS53YS5kZWxldGUobSl9KX07cmV0dXJuIEROYShoKS50aGVuKCgpPT57aygpO2lmKGYubGVuZ3RoKWZvcihsZXQgbSBvZiBhLmthKW0ud2EoZil9LG09PntrKCk7aWYoZi5sZW5ndGgpZm9yKGxldCBuIG9mIGEua2Epbi5vYShmKTt0aHJvdyBtO30pfTsKXy5PZj1jbGFzc3tjb25zdHJ1Y3Rvcigpe3RoaXMuZzM9e307dGhpcy5yYz1udWxsO3RoaXMua2E9bmV3IFNldDt0aGlzLm9hPXRoaXMueGM9bnVsbDt0aGlzLndhPW5ldyBTZXQ7dGhpcy5BYT1CTmF9U2woKXtyZXR1cm4gdGhpcy5yY31yZWdpc3RlcihhLGIpe18udmQoYSxiKTt0aGlzLmczW2EudG9TdHJpbmcoKV09Yn1aSChhKXtpZihhPV8uemthKGEpKXJldHVybiBhfWlzTG9hZGVkKGEpe3JldHVybiEhdGhpcy5nM1thLnRvU3RyaW5nKCldfWhyYSgpe3RoaXMuZzM9e307dGhpcy5rYS5jbGVhcigpfXN0YXRpYyBnZXRJbnN0YW5jZSgpe3JldHVybiBfLk5oKF8uT2YpfX07Xy5DTmE9IUhCYTtfLkhOYT1jbGFzcyBleHRlbmRzIF8uYmF7Y29uc3RydWN0b3IoYSl7c3VwZXIoYSk7dGhpcy5uYW1lPSJcdTAyNzVOb3RGb3VuZCJ9fTtfLkJmPVN5bWJvbCgiRmIiKTt2YXIgSG9hLElvYSx2b2EsR29hLEZvYTtIb2E9Xy5xb2EoIldpekluamVjdGlvbkNvbnRleHRfTW9kZWxSb290RWxlbWVudCIpO18uSm9hPV8ucW9hKCJXaXpJbmplY3Rpb25Db250ZXh0X1JlbmRlcmVyRGF0YSIpO18uS29hPV8ucW9hKCJXaXpJbmplY3Rpb25Db250ZXh0X0luamVjdGluZ0NvbnN0cnVjdG9yIik7SW9hPV8ucW9hKCJXaXpJbmplY3Rpb25Db250ZXh0X0FwcENvbnRleHQiKTt2b2E9Xy5xb2EoIldpekluamVjdGlvbkNvbnRleHRfRGlzcGF0Y2hlciIpO18ueG9hPV8ucW9hKCJXaXpJbmplY3Rpb25Db250ZXh0X1Jvb3RFbGVtZW50Iik7R29hPV8ucW9hKCJXaXpJbmplY3Rpb25Db250ZXh0X0FzeW5jRGVwcyIpO0ZvYT1fLnFvYSgiV2l6SW5qZWN0aW9uQ29udGV4dF9PYmplY3RDcmVhdGlvblRyYWNrZXIiKTtfLklOYT1TeW1ib2woIkpiIik7Xy55b2E9U3ltYm9sKCJLYiIpO3ZhciBOb2E9bmV3IE1hcDtfLlBvYT1jbGFzc3tjb25zdHJ1Y3RvcihhKXt0aGlzLmNvbnRleHQ9YX1pc0Rpc3Bvc2VkKCl7cmV0dXJuISgodGhpcz09bnVsbD8wOnRoaXMuY29udGV4dCkmJiF0aGlzLmNvbnRleHQuaXNEaXNwb3NlZCl9Z2V0Q29udGV4dCgpe3RoaXMuaXNEaXNwb3NlZCgpO3JldHVybiB0aGlzLmNvbnRleHR9cnVuKGEpe3JldHVybiBfLkZmKHRoaXMsYSl9fTtfLlVvYT1jbGFzcyBleHRlbmRzIEVycm9ye2NvbnN0cnVjdG9yKGEpe3N1cGVyKGEpO09iamVjdC5zZXRQcm90b3R5cGVPZih0aGlzLG5ldy50YXJnZXQucHJvdG90eXBlKX19O3ZhciBKTmE7Xy5UZj1jbGFzc3tjb25zdHJ1Y3RvcihhKXt0aGlzLmludGVyZmFjZUlkPWE7dGhpcy5Jcj10aGlzLmthPWEudG9TdHJpbmcoKX1aSCgpe3JldHVybiB0aGlzLmludGVyZmFjZUlkfVtfLkJmXShhLGIpe3ZhciBjO2lmKChjPUpOYSk9PW51bGw/MDpjLlpBYyh0aGlzLmludGVyZmFjZUlkKSl7dmFyIGQ7aWYoYz0oZD1KTmEpPT1udWxsP3ZvaWQgMDpkLmdldEluc3RhbmNlKHRoaXMuaW50ZXJmYWNlSWQpKXtjLnRoZW4oYSxiKTtyZXR1cm59fWQ9Y3BhKHdkLmdldEluc3RhbmNlKCksdGhpcy5pbnRlcmZhY2VJZCk7Xy5RZihkKVtfLkJmXShhLGIpfVt4TmFdKCl7cmV0dXJuW3t0eXBlOnlOYSxrZXk6dGhpcy5pbnRlcmZhY2VJZC50b1N0cmluZygpfV19fTsKXy5vbz1jbGFzcyBleHRlbmRzIF8uVGZ7Y29uc3RydWN0b3IoYSl7c3VwZXIoYSk7dGhpcy5lej1fLnBvYSgicm9vdCIsKCk9Pnt2YXIgYjtpZigoYj1KTmEpPT1udWxsPzA6Yi5aQWModGhpcy5pbnRlcmZhY2VJZCkpdGhyb3cgRXJyb3IoIlBiIik7Yj1fLkNwYShfLk9mLmdldEluc3RhbmNlKCksdGhpcy5pbnRlcmZhY2VJZCk7aWYoIWIpe2I9Y3BhKHdkLmdldEluc3RhbmNlKCksdGhpcy5pbnRlcmZhY2VJZCk7aWYodGhpcy5pbnRlcmZhY2VJZD09PWIpdGhyb3cgRXJyb3IoIlFiYCIrdGhpcy5pbnRlcmZhY2VJZCk7dGhyb3cgRXJyb3IoIlJiYCIrdGhpcy5pbnRlcmZhY2VJZCsiYCIrYik7fXJldHVybiBfLkhmKGIpfSk7dGhpc1tfLkJmXT12b2lkIDB9fTtmYygid3M5VGxjIiwiTnBENGVjIik7Xy5LTmE9Xy5rYygid3M5VGxjIik7Xy5PYyhfLktOYSk7Xy5wbz14ZCgiTnBENGVjIiwiY0V0OTBiIiwiSmo3c0xlIixfLktOYSk7Xy5PYyhfLnBvKTtfLnFvPW5ldyBfLm9vKF8ucG8pO3ZhciBMTmE9Y2xhc3MgZXh0ZW5kcyBfLmJhe2NvbnN0cnVjdG9yKGEpe3N1cGVyKCk7dGhpcy5tZXNzYWdlPSJBcHBDb250ZXh0IGlzIGRpc3Bvc2VkLCBjYW5ub3QgZ2V0ICIrYS5qb2luKCIsICIpKyIuIn19O3ZhciBXb2E9e307dmFyIFlvYT1TeW1ib2woIlYiKSwkb2E9dm9pZCAwO18uaHBhPWNsYXNze2NvbnN0cnVjdG9yKGEsYil7dGhpcy5yYz1hO3RoaXMubTlhPWJ9U2woKXtyZXR1cm4gdGhpcy5yY31sVygpe3JldHVybiB0aGlzLnJjfWM1KCl7dGhyb3cgRXJyb3IoIlRiIik7fWdldERhdGEoKXt0aHJvdyBFcnJvcigiVGIiKTt9a2EoKXtyZXR1cm57cmM6dGhpcy5yYyxtOWE6dGhpcy5tOWEsZzViOnRoaXN9fW9sYSgpe3RoaXMub2F8fCh0aGlzLm9hPV8uTW9hKHRoaXMua2EoKSwhMSkpO3JldHVybiB0aGlzLm9hfVI1KCl7cmV0dXJue2lzVmFsaWQ6ITB9fXRvU3RyaW5nKCl7cmV0dXJuYGNvbnRleHQ6JHtfLnFmKHRoaXMubTlhKX1gfX07dmFyIERwYSxncGEsZXBhLE1OYSxOTmEsQnBhO0RwYT1mdW5jdGlvbihhLGIpe2Eub2EuaGFzKGIpO2Eua2EuaGFzKGIpfTtncGE9ZnVuY3Rpb24oYSxiKXt2YXIgYz1CcGE7RHBhKGMsYSk7Yy5rYS5zZXQoYSxiKTtiLkl4KGQ9PntjLm9hLnNldChhLGQpO2Mua2EuZGVsZXRlKGEpfSxkPT57ZCBpbnN0YW5jZW9mIExOYSYmYy5rYS5nZXQoYSk9PT1iJiZjLmthLmRlbGV0ZShhKX0pfTtlcGE9ZnVuY3Rpb24oYSl7dmFyIGI9QnBhLGM9Yi5vYS5nZXQoYSk7aWYoIV8uZnBhLmhhcyhhKSlyZXR1cm4gYz9fLlVmKGMpOmIua2EuZ2V0KGEpfTtNTmE9ZnVuY3Rpb24oYSl7KGE9PW51bGw/MDphLmRpc3Bvc2UpJiZhLmRpc3Bvc2UoKTthPWE/YVtZb2FdOnZvaWQgMDthJiZfLkRvYShhKX07Ck5OYT1jbGFzc3tjb25zdHJ1Y3Rvcigpe3RoaXMub2E9bmV3IE1hcDt0aGlzLmthPW5ldyBNYXB9ZGlzcG9zZShhKXtpZihhKXtmb3IobGV0IGIgb2ZbLi4udGhpcy5vYS52YWx1ZXMoKV0ucmV2ZXJzZSgpKU1OYShiKTtmb3IobGV0IGIgb2ZbLi4udGhpcy5rYS52YWx1ZXMoKV0ucmV2ZXJzZSgpKWIubWFwKGM9PntNTmEoYyl9KX10aGlzLm9hLmNsZWFyKCk7dGhpcy5rYS5jbGVhcigpfX07QnBhPW5ldyBOTmE7Xy5mcGE9bmV3IFNldDtfLnJwYT0hMTtfLnNwYT1mdW5jdGlvbigpe307dmFyIGtwYTtfLmpwYT17fTtrcGE9e307Xy5VaShscGEsXy5ZZSk7bHBhLnByb3RvdHlwZS5TYT1mdW5jdGlvbihhLGIsYyl7dGhpcy5aYSsrO3RoaXMuS2FbYV09W2IsY107dGhpcy5vYXx8KHRoaXMuUmEmJmI/dGhpcy5jYWxsYmFjayhbYSxjXSk6dGhpcy5GYiYmIWI/dGhpcy5rYShjKTp0aGlzLlphPT10aGlzLklhLmxlbmd0aCYmdGhpcy5jYWxsYmFjayh0aGlzLkthKSk7dGhpcy5BYiYmIWImJihjPW51bGwpO3JldHVybiBjfTtscGEucHJvdG90eXBlLmthPWZ1bmN0aW9uKGEpe2xwYS5SZC5rYS5jYWxsKHRoaXMsYSk7Zm9yKGE9MDthPHRoaXMuSWEubGVuZ3RoO2ErKyl0aGlzLklhW2FdLmNhbmNlbCgpfTtfLk9OYT1mdW5jdGlvbihhKXtyZXR1cm4gXy5uZyhuZXcgbHBhKGEsITEsITApLGZ1bmN0aW9uKGIpe3ZhciBjPVtdO2ZvcihsZXQgZD0wO2Q8Yi5sZW5ndGg7ZCsrKWNbZF09YltkXVsxXTtyZXR1cm4gY30pfTtfLlZmKHtwcmVsb2FkOmZ1bmN0aW9uKGEsYil7dmFyIGM9W10sZD1PYmplY3Qua2V5cyhiKTtmb3IobGV0IGUgb2YgZCl7bGV0IGY9YltlXTtmIGluc3RhbmNlb2YgXy5UZj9jLnB1c2goZi5aSCgpKTpmIGluc3RhbmNlb2YgXy5pYyYmYy5wdXNoKGYpfWI9Xy5FTmEoXy5PZi5nZXRJbnN0YW5jZSgpLGMpO2M9e307Zm9yKGxldCBlIG9mIGQpY1tlXT1iO3JldHVybiBjfX0sITApO18uVmYoe2NvbnRleHQ6ZnVuY3Rpb24oYSxiKXtyZXR1cm4gXy5VZihhLmM1KGIpKX0sa3JhOmZ1bmN0aW9uKGEsYil7dHJ5e2xldCBjPWI7dHlwZW9mIGI9PT0iZnVuY3Rpb24iJiYoYz1iLmNhbGwoYSxhKSk7cmV0dXJuIGMgaW5zdGFuY2VvZiBfLndmP2M6UHJvbWlzZS5yZXNvbHZlKGMpfWNhdGNoKGMpe3JldHVybiBQcm9taXNlLnJlamVjdChjKX19fSk7Cl8uVmYoe3JjOmZ1bmN0aW9uKGEsYil7YT1PYmplY3Qua2V5cyhiKTt2YXIgYz17fTtmb3IobGV0IGYgb2YgYSl7bGV0IGc9YltmXSxoPV8uemthKGcpLGs7aD9rPWg6az1nO2NbZl09a31iPV8uVm9hKCk7aWYoIWIpdGhyb3cgRXJyb3IoIlliIik7dHJ5e3ZhciBkPV8uUE5hKGIsT2JqZWN0LnZhbHVlcyhjKSk7Yj17fTtmb3IodmFyIGUgb2YgYSliW2VdPW5vYShkW2NbZV0udG9TdHJpbmcoKV0pO3JldHVybiBifWNhdGNoKGYpe2Q9TmYoZik7ZT17fTtmb3IobGV0IGcgb2YgYSllW2ddPWQ7cmV0dXJuIGV9fX0sITApO18uVmYoe0hDOmZ1bmN0aW9uKGEsYil7YT1iLmNhbGwoYSxhKTtyZXR1cm4gQXJyYXkuaXNBcnJheShhKT9ub2EoXy5PTmEoYSkpOmEgaW5zdGFuY2VvZiBfLlllP25vYShhKTphfX0pO3ZhciBRTmE9ISEoXy5PaVs2OV0mNTEyKSx3cGE9ISEoXy5PaVs5OV0+PjE4JjEpO18ucm89U3ltYm9sKCJiYyIpO3ZhciBSTmEsU05hLFROYSxVTmE7Uk5hPWZ1bmN0aW9uKGEpe3JldHVybiBuZXcgXy53ZigoYixjKT0+e18ueWYobmV3IGxwYShhLmthLHZvaWQgMCwhMCksYixjKX0pfTtTTmE9Y2xhc3N7Y29uc3RydWN0b3IoKXt0aGlzLmthPVtdfWFkZChhKXt0aGlzLmthLnB1c2goYSl9fTtUTmE9ZnVuY3Rpb24oYSl7cmV0dXJuIG5ldyBfLndmKChiLGMpPT57RE5hKGEua2EpLnRoZW4oYixjKX0pfTtVTmE9Y2xhc3N7Y29uc3RydWN0b3IoKXt0aGlzLmthPVtdfWFkZChhKXt0aGlzLmthLnB1c2goYSl9fTtfLlZOYT1mdW5jdGlvbihhKXtyZXR1cm4gXy5PZi5nZXRJbnN0YW5jZSgpLlpIKGEuY29uc3RydWN0b3IpfTtfLldOYT1mdW5jdGlvbihhLGIpe2EuUUx8fChhLlFMPW5ldyBVTmEpO2EuUUwuYWRkKGIpfTtfLlhOYT1mdW5jdGlvbihhLGIpe2I9YiBpbnN0YW5jZW9mIF8uWWU/YjpfLkJMYShiKTthLlJMfHwoYS5STD1uZXcgU05hKTthLlJMLmFkZChiKX07Cl8uWU5hPWNsYXNzIGV4dGVuZHMgXy5FZHtjb25zdHJ1Y3Rvcigpe3N1cGVyKCk7dGhpcy5RQ2E9Xy5Wb2EoKTt0aGlzLnNiYT1fLkNmKDEpO3RoaXMuc2JhLklyPV8ucWYodGhpcykrIl9vYmpfaWN0eCJ9cWMoKXt0aGlzLlRiKCk7c3VwZXIucWMoKTtfLkRvYSh0aGlzLnNiYSl9dG9TdHJpbmcoKXtyZXR1cm5gJHtfLnFmKHRoaXMpfVske18uJGUodGhpcyl9XWB9aU8oKXt9S29jKCl7dmFyIGE9Xy5VZigpO3RoaXMuUkwmJihhPWEuZmxhdE1hcCgoKT0+Uk5hKHRoaXMuUkwpKSk7dGhpcy5RTCYmKGE9YS5mbGF0TWFwKCgpPT5UTmEodGhpcy5RTCkpKTtyZXR1cm4gYX1zdGF0aWMgUWEoKXtyZXR1cm57fX1TbCgpe3JldHVybiB0aGlzLlFDYX1sVygpe3JldHVybiB0aGlzLlFDYX1UYigpe31jNSgpe3Rocm93IEVycm9yKCJUYiIpO31nZXREYXRhKCl7dGhyb3cgRXJyb3IoIlRiIik7fW9sYSgpe2lmKHRoaXMuaXNEaXNwb3NlZCgpKXRocm93IEVycm9yKCJjY2AiK18ucWYodGhpcykpOwpyZXR1cm4gdGhpcy5zYmF9UjUoKXtyZXR1cm4gdGhpcy5pc0Rpc3Bvc2VkKCk/e2lzVmFsaWQ6ITEsaW52YWxpZFJlYXNvbjoiV2l6IE9iamVjdCBpcyBkaXNwb3NlZCJ9Ontpc1ZhbGlkOiEwfX19Owokb2E9ZnVuY3Rpb24oYSxiLGMpe3ZhciB7aXNWYWxpZDpkLGludmFsaWRSZWFzb246ZX09d3BhP2MuUjUoKTp7aXNWYWxpZDohMH0sZj1kP3VwYShiLGMsYSk6dnBhKGIsZSksZz1jLm9sYSgpO2Y9Zi5mbGF0TWFwKGg9PnhwYShnLGIsYywoKT0+KCgpPT57dmFyIGs9bmV3IGIoaCk7a1tZb2FdPWc7dmFyIG0sbjtyZXR1cm4oKG49KG09ay5Lb2MpPT1udWxsP3ZvaWQgMDptLmNhbGwoaywwKSkhPW51bGw/bjpfLlVmKCkpLm1hcCgoKT0+ayl9KSgpKSkuZmxhdE1hcChoPT57dmFyIGs9eHBhKGcsYixjLCgpPT57dmFyIG07KG09aC5pTyk9PW51bGx8fG0uY2FsbChoKTtYb2EoYSxoKTtyZXR1cm4gXy5VZihoKX0pO2suSXgoKCk9Pnt9LCgpPT52b2lkIGguZGlzcG9zZSgpKTtyZXR1cm4ga30pO2MgaW5zdGFuY2VvZiBfLmhwYSYmZi5JeCgoKT0+e30sKCk9PntjLm9hJiZfLkRvYShjLm9hKX0pO3JldHVybiBmfTtfLnNvPWNsYXNzIGV4dGVuZHMgXy5ZTmF7c3RhdGljIFFhKCl7cmV0dXJue319am5hKGEpe18uV05hKHRoaXMsYSl9b3QoYSl7Xy5YTmEodGhpcyxhKX19O3ZhciBaTmE9ZnVuY3Rpb24oYSl7dmFyIGI9Xy5TYyhhKS5tYXAoYz0+Xy5icGEoYykpLmZpbHRlcihjPT5jIGluc3RhbmNlb2YgXy5pYyk7Xy5FTmEoXy5PZi5nZXRJbnN0YW5jZSgpLGIpO3JldHVybiBfLlFjKGEsYz0+YyBpbnN0YW5jZW9mIF8uaWM/Xy5Tb2EoXy5RZihjKSk6Xy5Tb2EoYykpfTtfLlZmKHtzZXJ2aWNlOmZ1bmN0aW9uKGEsYil7cmV0dXJuIFpOYShiKX19LCEwKTt2YXIgY09hPWZ1bmN0aW9uKGEpeyROYT0hMDt2YXIgYj1hLmthLmhpc3Rvcnk7YU9hPWIucHVzaFN0YXRlO3ZhciBjPShlLGYsZyk9PnthT2EuY2FsbChiLGUsZixnKX07Yi5wdXNoU3RhdGU9YztiT2E9Yi5yZXBsYWNlU3RhdGU7dmFyIGQ9KGUsZixnKT0+e2JPYS5jYWxsKGIsZSxmLGcpfTtiLnJlcGxhY2VTdGF0ZT1kO2Eud2E9KCk9PnthT2EmJmJPYSYmYi5wdXNoU3RhdGU9PT1jJiZiLnJlcGxhY2VTdGF0ZT09PWQmJihiLnB1c2hTdGF0ZT1hT2EsYi5yZXBsYWNlU3RhdGU9Yk9hLCROYT0hMSl9fSxkT2E9Y2xhc3MgZXh0ZW5kcyBfLkVke2NvbnN0cnVjdG9yKCl7c3VwZXIoKTt0aGlzLmthPV8uSGYoXy5xbykuZ2V0KCk7dGhpcy5vYT10aGlzLmthLmxvY2F0aW9uIT10aGlzLmthLnBhcmVudC5sb2NhdGlvbiYmITE7dGhpcy53YT1udWxsO3RoaXMub2F8fCROYXx8Y09hKHRoaXMpfXlmKCl7cmV0dXJuIHRoaXMub2F9YmFjaygpe3RoaXMub2F8fHRoaXMua2EuaGlzdG9yeS5iYWNrKCl9Zm9yd2FyZCgpe3RoaXMub2F8fAp0aGlzLmthLmhpc3RvcnkuZm9yd2FyZCgpfWdvKGEpe3RoaXMub2F8fHRoaXMua2EuaGlzdG9yeS5nbyhhKX1wdXNoU3RhdGUoYSxiLGMpe3RoaXMub2F8fGFPYS5jYWxsKHRoaXMua2EuaGlzdG9yeSxhLGIsYyl9cmVwbGFjZVN0YXRlKGEsYixjKXt0aGlzLm9hfHxiT2EuY2FsbCh0aGlzLmthLmhpc3RvcnksYSxiLGMpfXN0YXRlKCl7dHJ5e3JldHVybiB0aGlzLmthLmhpc3Rvcnkuc3RhdGV9Y2F0Y2goYSl7cmV0dXJuIG51bGx9fWdldEN1cnJlbnRVcmwoKXtyZXR1cm4gdGhpcy5rYS5sb2NhdGlvbi5ocmVmfXFjKCl7c3VwZXIucWMoKTt0aGlzLndhJiZ0aGlzLndhKCl9fSwkTmE9ITEsYU9hPW51bGwsYk9hPW51bGw7Xy5iZyhkT2Esdk5hKTt2YXIgZU9hLEJ1YSxnT2EsaU9hLEN1YTt0cnl7bGV0IGEsYixjPShiPShhPXdpbmRvdyk9PW51bGw/dm9pZCAwOmEudG9wKSE9bnVsbD9iOl8uZWE7Yy5VM2JISGYhPW51bGx8fChjLlUzYkhIZj0wKTtlT2E9U3RyaW5nKGMuVTNiSEhmKyspfWNhdGNoKGEpe18uZWEuVTNiSEhmIT1udWxsfHwoXy5lYS5VM2JISGY9MCksZU9hPVN0cmluZyhfLmVhLlUzYkhIZisrKX1CdWE9ZU9hO18uR3BhPWZ1bmN0aW9uKGEpe3JldHVybiBhLl9fd2l6ZGlzcGF0Y2hlcn07Xy5mT2E9ZnVuY3Rpb24oYSl7cmV0dXJuIGEuX19jb21wb25lbnR9O2dPYT1mdW5jdGlvbihhLGIpe2ImJihiLmNxYT1CdWEsYiYmQ3VhKGIpKTthLl9fanNjb250cm9sbGVyPWJ9O18uaE9hPWZ1bmN0aW9uKGEpe3ZhciBiPWEuX19qc2NvbnRyb2xsZXI7YiYmQ3VhKGIpO3JldHVybiBhLl9fanNjb250cm9sbGVyfTtfLnJyYT1mdW5jdGlvbihhKXtyZXR1cm4gYS5fX293bmVyfTsKaU9hPWZ1bmN0aW9uKGEpe2EmJkN1YShhKTtpZihhLnBlbmRpbmcpe2xldCB7c3RhdGU6Yix2YWx1ZTpjfT1fLnl1YShhLnBlbmRpbmcpO2lmKGI9PT0wKXtsZXQgZDsoZD1hLmNhbmNlbCk9PW51bGx8fGQuY2FsbChhLCJkaXNwb3NlZCIpfWVsc2UgYj09PTEmJl8uRGQoYyl9ZWxzZSBfLkRkKGEuaW5zdGFuY2UpfTtDdWE9ZnVuY3Rpb24oYSl7aWYoYS5jcWEhPT1CdWEpe2xldCBiPU9iamVjdC5lbnRyaWVzKGEpLmZpbHRlcigoWyxjXSk9PnR5cGVvZiBjPT09InN0cmluZyIpLm1hcCgoW2MsZF0pPT5gJHtjfT0ke2R9YCkuam9pbigiLCAiKTt0aHJvdyBFcnJvcigiZGNgIitCdWErImAiK2EuY3FhKyJgIitiKTt9fTt2YXIgRnBhPXt9O3ZhciBIcGE9IV8uZ2UuUkNhJiYhXy5OYS5NeSgpO3ZhciBqT2Esa09hO2pPYT1hPT50eXBlb2YgYT09InN0cmluZyI/Yj0+ISFiLm1hdGNoZXMmJmIubWF0Y2hlcyhhKTphO18udG89YT0+Yj0+Yi5nZXRBdHRyaWJ1dGUmJl8ueG0oYixhKTtfLnVvPShhLGIpPT5jPT5iIT09dm9pZCAwP2MuZ2V0QXR0cmlidXRlJiZjLmdldEF0dHJpYnV0ZShhKT09YjpjLmhhc0F0dHJpYnV0ZSYmYy5oYXNBdHRyaWJ1dGUoYSk7a09hPSgpPT4hMDtfLmxPYT1mdW5jdGlvbihhLGIpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPT0yP2M9Pl8uZ2coYyxhKT09YjpjPT5fLmhnKGMsYSl9O3ZhciBtT2E7bU9hPWNsYXNze2NvbnN0cnVjdG9yKGEsYil7dGhpcy5rYT1fLktwYShhKTt0aGlzLm9hPWJ9W1N5bWJvbC5pdGVyYXRvcl0oKXtyZXR1cm4gdGhpc31uZXh0KCl7dmFyIGE9dGhpcy5rYS5uZXh0KCk7cmV0dXJue3ZhbHVlOmEuZG9uZT92b2lkIDA6dGhpcy5vYS5jYWxsKHZvaWQgMCxhLnZhbHVlKSxkb25lOmEuZG9uZX19fTtfLm5PYT1mdW5jdGlvbihhLGIpe3JldHVybiBuZXcgbU9hKGEsYil9O18ub09hPWNsYXNze2NvbnN0cnVjdG9yKGEpe3RoaXMub2E9YTt0aGlzLmthPTB9W1N5bWJvbC5pdGVyYXRvcl0oKXtyZXR1cm4gdGhpc31uZXh0KCl7Zm9yKDt0aGlzLmthPHRoaXMub2EubGVuZ3RoOyl7bGV0IGE9dGhpcy5vYVt0aGlzLmthXS5uZXh0KCk7aWYoIWEuZG9uZSlyZXR1cm4gYTt0aGlzLmthKyt9cmV0dXJue2RvbmU6ITB9fX07Xy5hYT1fLmxnLnByb3RvdHlwZTtfLmFhLnppPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuc2l6ZX07Xy5hYS55ej1mdW5jdGlvbigpe3BPYSh0aGlzKTt2YXIgYT1bXTtmb3IobGV0IGI9MDtiPHRoaXMua2EubGVuZ3RoO2IrKylhLnB1c2godGhpcy5vYVt0aGlzLmthW2JdXSk7cmV0dXJuIGF9O18uYWEuZ2V0S2V5cz1mdW5jdGlvbigpe3BPYSh0aGlzKTtyZXR1cm4gdGhpcy5rYS5jb25jYXQoKX07Xy5hYS5oYXM9ZnVuY3Rpb24oYSl7cmV0dXJuIHFPYSh0aGlzLm9hLGEpfTtfLmFhLmVxdWFscz1mdW5jdGlvbihhLGIpe2lmKHRoaXM9PT1hKXJldHVybiEwO2lmKHRoaXMuc2l6ZSE9YS56aSgpKXJldHVybiExO2I9Ynx8ck9hO3BPYSh0aGlzKTt2YXIgYztmb3IobGV0IGQ9MDtjPXRoaXMua2FbZF07ZCsrKWlmKCFiKHRoaXMuZ2V0KGMpLGEuZ2V0KGMpKSlyZXR1cm4hMTtyZXR1cm4hMH07dmFyIHJPYT1mdW5jdGlvbihhLGIpe3JldHVybiBhPT09Yn07Cl8ubGcucHJvdG90eXBlLmlzRW1wdHk9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5zaXplPT0wfTtfLmxnLnByb3RvdHlwZS5jbGVhcj1mdW5jdGlvbigpe3RoaXMub2E9e307dGhpcy53YT10aGlzLnNpemU9dGhpcy5rYS5sZW5ndGg9MH07Xy5sZy5wcm90b3R5cGUucmVtb3ZlPWZ1bmN0aW9uKGEpe3JldHVybiB0aGlzLmRlbGV0ZShhKX07Xy5sZy5wcm90b3R5cGUuZGVsZXRlPWZ1bmN0aW9uKGEpe3JldHVybiBxT2EodGhpcy5vYSxhKT8oZGVsZXRlIHRoaXMub2FbYV0sLS10aGlzLnNpemUsdGhpcy53YSsrLHRoaXMua2EubGVuZ3RoPjIqdGhpcy5zaXplJiZwT2EodGhpcyksITApOiExfTsKdmFyIHBPYT1mdW5jdGlvbihhKXtpZihhLnNpemUhPWEua2EubGVuZ3RoKXtmb3IodmFyIGI9MCxjPTA7YjxhLmthLmxlbmd0aDspe3ZhciBkPWEua2FbYl07cU9hKGEub2EsZCkmJihhLmthW2MrK109ZCk7YisrfWEua2EubGVuZ3RoPWN9aWYoYS5zaXplIT1hLmthLmxlbmd0aCl7Yj17fTtmb3IoZD1jPTA7YzxhLmthLmxlbmd0aDspe2xldCBlPWEua2FbY107cU9hKGIsZSl8fChhLmthW2QrK109ZSxiW2VdPTEpO2MrK31hLmthLmxlbmd0aD1kfX07Xy5hYT1fLmxnLnByb3RvdHlwZTtfLmFhLmdldD1mdW5jdGlvbihhLGIpe3JldHVybiBxT2EodGhpcy5vYSxhKT90aGlzLm9hW2FdOmJ9O18uYWEuc2V0PWZ1bmN0aW9uKGEsYil7cU9hKHRoaXMub2EsYSl8fCh0aGlzLnNpemUrPTEsdGhpcy5rYS5wdXNoKGEpLHRoaXMud2ErKyk7dGhpcy5vYVthXT1ifTsKXy5hYS5hZGRBbGw9ZnVuY3Rpb24oYSl7aWYoYSBpbnN0YW5jZW9mIF8ubGcpe3ZhciBiPWEuZ2V0S2V5cygpO2ZvcihsZXQgYz0wO2M8Yi5sZW5ndGg7YysrKXRoaXMuc2V0KGJbY10sYS5nZXQoYltjXSkpfWVsc2UgZm9yKGIgaW4gYSl0aGlzLnNldChiLGFbYl0pfTtfLmFhLmZvckVhY2g9ZnVuY3Rpb24oYSxiKXt2YXIgYz10aGlzLmdldEtleXMoKTtmb3IobGV0IGQ9MDtkPGMubGVuZ3RoO2QrKyl7bGV0IGU9Y1tkXSxmPXRoaXMuZ2V0KGUpO2EuY2FsbChiLGYsZSx0aGlzKX19O18uYWEuY2xvbmU9ZnVuY3Rpb24oKXtyZXR1cm4gbmV3IF8ubGcodGhpcyl9O18uYWEudHJhbnNwb3NlPWZ1bmN0aW9uKCl7dmFyIGE9bmV3IF8ubGc7Zm9yKGxldCBiPTA7Yjx0aGlzLmthLmxlbmd0aDtiKyspe2xldCBjPXRoaXMua2FbYl07YS5zZXQodGhpcy5vYVtjXSxjKX1yZXR1cm4gYX07Xy5hYS5rZXlzPWZ1bmN0aW9uKCl7cmV0dXJuICRMYSh0aGlzLllGKCEwKSkua2EoKX07Cl8uYWEudmFsdWVzPWZ1bmN0aW9uKCl7cmV0dXJuICRMYSh0aGlzLllGKCExKSkua2EoKX07Xy5hYS5lbnRyaWVzPWZ1bmN0aW9uKCl7dmFyIGE9dGhpcztyZXR1cm4gXy5uT2EodGhpcy5rZXlzKCksZnVuY3Rpb24oYil7cmV0dXJuW2IsYS5nZXQoYildfSl9O18uYWEuWUY9ZnVuY3Rpb24oYSl7cE9hKHRoaXMpO3ZhciBiPTAsYz10aGlzLndhLGQ9dGhpcyxlPW5ldyBfLmdmO2UubmV4dD1mdW5jdGlvbigpe2lmKGMhPWQud2EpdGhyb3cgRXJyb3IoImVjIik7aWYoYj49ZC5rYS5sZW5ndGgpcmV0dXJuIF8ucG5hO3ZhciBmPWQua2FbYisrXTtyZXR1cm4gXy5vbmEoYT9mOmQub2FbZl0pfTtyZXR1cm4gZX07dmFyIHFPYT1mdW5jdGlvbihhLGIpe3JldHVybiBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoYSxiKX07dmFyIHNPYSx0T2E7c09hPWZ1bmN0aW9uKCl7dmFyIGE9RXJyb3IoKTthLm5hbWU9IlNlY3VyaXR5RXJyb3IiO3Rocm93IGE7fTt0T2E9ZnVuY3Rpb24oKXtyZXR1cm57Z2V0IG9wZW5lcigpe3JldHVybiBudWxsfSxzZXQgb3BlbmVyKGEpe30sZ2V0IGNsb3NlZCgpe3JldHVybiEwfSxnZXQgbG9jYXRpb24oKXtzT2EoKX0sZ2V0IGRvY3VtZW50KCl7c09hKCl9LHBvc3RNZXNzYWdlOmZ1bmN0aW9uKCl7fSxjbG9zZTpmdW5jdGlvbigpe30sZm9jdXM6ZnVuY3Rpb24oKXt9fX07Cl8udm89ZnVuY3Rpb24oYSxiLGMpe2J8fChiPXt9KTtjPWN8fHdpbmRvdzt2YXIgZD1fLnFpYShhKT9hOl8uRmModHlwZW9mIGEuaHJlZiE9InVuZGVmaW5lZCI/YS5ocmVmOlN0cmluZyhhKSk7dmFyIGU9c2VsZi5jcm9zc09yaWdpbklzb2xhdGVkIT09dm9pZCAwLGY9InN0cmljdC1vcmlnaW4td2hlbi1jcm9zcy1vcmlnaW4iO3dpbmRvdy5SZXF1ZXN0JiYoZj0obmV3IFJlcXVlc3QoIi8iKSkucmVmZXJyZXJQb2xpY3kpO3ZhciBnPWIubm9yZWZlcnJlcjtpZihlJiZnJiZmPT09InVuc2FmZS11cmwiKXRocm93IEVycm9yKCJmYyIpO2Y9ZyYmIWU7YT1iLnRhcmdldHx8YS50YXJnZXQ7Zz1bXTt2YXIgaD1bXSxrPSExO2Zvcih2YXIgbSBpbiBiKXtsZXQgbj1iW21dO3N3aXRjaChtKXtjYXNlICJ3aWR0aCI6Y2FzZSAiaGVpZ2h0IjpjYXNlICJ0b3AiOmNhc2UgImxlZnQiOmcucHVzaChtKyI9IituKTticmVhaztjYXNlICJ0YXJnZXQiOmJyZWFrO2Nhc2UgIm5vb3BlbmVyIjpjYXNlICJub3JlZmVycmVyIjpuPwpoLnB1c2gobSk6KGs9ITAsaC5wdXNoKG0rIj1mYWxzZSIpKTticmVhaztjYXNlICJhdHRyaWJ1dGlvbnNyYyI6Zy5wdXNoKG0rKG4/Ij0iK246IiIpKTticmVhaztkZWZhdWx0OmcucHVzaChtKyI9Iisobj8xOjApKX19bT1hIT09dm9pZCAwJiYhWyJfYmxhbmsiLCJfc2VsZiIsIl90b3AiLCJfcGFyZW50IiwiIl0uaW5jbHVkZXMoYSk7bT1fLk5hLlpIYSgpJiZtO2lmKEdCYSYmZSYmZy5sZW5ndGg9PT0wJiZoLmxlbmd0aD4wJiYhbSYmIWspcmV0dXJuIGgubGVuZ3RoPT09MiYmKGg9WyJub3JlZmVycmVyIl0pLF8uJGMoYyxkLGEsaFswXSksdE9hKCk7ZT1nLmpvaW4oIiwiKTtfLnNhKCkmJmMubmF2aWdhdG9yJiZjLm5hdmlnYXRvci5zdGFuZGFsb25lJiZhJiZhIT0iX3NlbGYiPyhlPV8uU20oIkEiKSxfLlhjKGUsZCksZS50YXJnZXQ9YSxmJiYoZS5yZWw9Im5vcmVmZXJyZXIiKSwoKGI9Yi5hdHRyaWJ1dGlvbnNyYyl8fGI9PT0iIikmJmUuc2V0QXR0cmlidXRlKCJhdHRyaWJ1dGlvbnNyYyIsCmIpLGI9ZG9jdW1lbnQuY3JlYXRlRXZlbnQoIk1vdXNlRXZlbnQiKSxiLmluaXRNb3VzZUV2ZW50KCJjbGljayIsITAsITAsYywxKSxlLmRpc3BhdGNoRXZlbnQoYiksYz10T2EoKSk6Zj8oYz1fLiRjKGMsIiIsYSxlKSxiPV8uQmMoZCksYyYmKGMub3BlbmVyPW51bGwsYj09PSIiJiYoYj0iamF2YXNjcmlwdDonJyIpLGI9Xy5WamEoJzxtZXRhIG5hbWU9InJlZmVycmVyIiBjb250ZW50PSJuby1yZWZlcnJlciI+PG1ldGEgaHR0cC1lcXVpdj0icmVmcmVzaCIgY29udGVudD0iMDsgdXJsPScrXy5ibShiKSsnIj4nLHtqdXN0aWZpY2F0aW9uOiJiLzEyMDE0NDEyLCBtZXRhIHRhZyB3aXRoIHNhbml0aXplZCBVUkwifSksKGQ9Yy5kb2N1bWVudCkmJmQud3JpdGUmJihfLlFqYShkLGIpLGQuY2xvc2UoKSkpKTooKGM9Xy4kYyhjLGQsYSxlKSkmJmIubm9vcGVuZXImJihjLm9wZW5lcj1udWxsKSxjJiZiLm5vcmVmZXJyZXImJihjLm9wZW5lcj1udWxsKSk7cmV0dXJuIGN9O3ZhciB1T2EseU9hO18ud289ZnVuY3Rpb24oYSl7dGhpcy5rYT11T2EoYSl9O3VPYT1mdW5jdGlvbihhKXtpZihhIGluc3RhbmNlb2YgXy53bylhPWEua2E7ZWxzZSBpZihhWzBdaW5zdGFuY2VvZiBfLndvKXtsZXQgYj1uZXcgU2V0O2ZvcihsZXQgYz0wO2M8YS5sZW5ndGg7YysrKWZvcihsZXQgZCBvZiBhW2NdLmthKWIuYWRkKGQpO2E9Yn1yZXR1cm5bLi4uYV19O18ud28ucHJvdG90eXBlLmVhY2g9ZnVuY3Rpb24oYSxiLGM9ITEpeyhjP18uVGFhOl8uTGEpKHRoaXMua2EsYSxiKTtyZXR1cm4gdGhpc307Xy54bz1mdW5jdGlvbihhLGIpe2ZvcihsZXQgYz0wO2M8YS5zaXplKCk7YysrKXtsZXQgZD1hLmVxKGMpO2IuY2FsbCh2b2lkIDAsZCxjKX19O18uYWE9Xy53by5wcm90b3R5cGU7Xy5hYS5zaXplPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMua2EubGVuZ3RofTtfLmFhLmlzRW1wdHk9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5rYS5sZW5ndGg9PT0wfTsKXy5hYS5nZXQ9ZnVuY3Rpb24oYSl7cmV0dXJuIHRoaXMua2FbYV18fG51bGx9O18uYWEuZWw9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5rYVswXXx8bnVsbH07Xy5hYS5Faz1mdW5jdGlvbigpe3JldHVybiB0aGlzLmthLmxlbmd0aD90aGlzLmthWzBdOm51bGx9O18uYWEuaGI9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5rYS5sZW5ndGg/dGhpcy5rYVswXTpudWxsfTtfLmFhLnRvQXJyYXk9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5rYS5zbGljZSgpfTtfLnlvPWZ1bmN0aW9uKGEpe3JldHVybiBhLmthLnNsaWNlKCl9O18uYWE9Xy53by5wcm90b3R5cGU7Xy5hYS5tYXA9ZnVuY3Rpb24oYSxiKXtyZXR1cm4gXy5YaSh0aGlzLmthLGEsYil9O18uYWEuZXF1YWxzPWZ1bmN0aW9uKGEpe3JldHVybiB0aGlzPT09YXx8Xy5LYSh0aGlzLmthLGEua2EpfTsKXy5hYS5lcT1mdW5jdGlvbihhKXt2YXIgYj1hPDA/dGhpcy5rYS5sZW5ndGgrYTphO3ZhciBjPXRoaXMua2FbYl07aWYoIWMpdGhyb3cgRXJyb3IoImdjYCIrYSsiYCIrYisiYCIrdGhpcy5rYS5sZW5ndGgpO3JldHVybiBuZXcgXy56byhjKX07Xy5hYS5maXJzdD1mdW5jdGlvbigpe3JldHVybiB0aGlzLmthLmxlbmd0aD09MD9udWxsOm5ldyBfLnpvKHRoaXMua2FbMF0pfTtfLmFhLmxhc3Q9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5rYS5sZW5ndGg9PTA/bnVsbDpuZXcgXy56byh0aGlzLmthW3RoaXMua2EubGVuZ3RoLTFdKX07Xy5hYS5maW5kPWZ1bmN0aW9uKGEpe3ZhciBiPVtdO3RoaXMuZWFjaChmdW5jdGlvbihjKXtjPWMucXVlcnlTZWxlY3RvckFsbChTdHJpbmcoYSkpO2ZvcihsZXQgZD0wO2Q8Yy5sZW5ndGg7ZCsrKWIucHVzaChjW2RdKX0pO3JldHVybiBuZXcgXy53byhiKX07Cl8uQW89ZnVuY3Rpb24oYSxiKXt2YXIgYz1bXTthLmVhY2goZnVuY3Rpb24oZCl7KGQ9ZC5xdWVyeVNlbGVjdG9yKGIpKSYmYy5wdXNoKGQpfSk7cmV0dXJuIG5ldyBfLndvKGMpfTtfLkJvPWZ1bmN0aW9uKGEsYil7cmV0dXJuIGEuZmluZCgnW2pzbmFtZT0iJytiKyciXScpfTtfLmFhPV8ud28ucHJvdG90eXBlO18uYWEucGFyZW50PWZ1bmN0aW9uKCl7dmFyIGE9W107dGhpcy5lYWNoKGZ1bmN0aW9uKGIpeyhiPV8uTGcoYikpJiYhXy5BYShhLGIpJiZhLnB1c2goYil9KTtyZXR1cm4gbmV3IF8ud28oYSl9O18uYWEuY2hpbGRyZW49ZnVuY3Rpb24oKXt2YXIgYT1bXTt0aGlzLmVhY2goZnVuY3Rpb24oYil7Yj1iLmNoaWxkcmVuO2ZvcihsZXQgYz0wO2M8Yi5sZW5ndGg7YysrKWEucHVzaChiW2NdKX0pO3JldHVybiBuZXcgXy53byhhKX07Xy5hYS5maWx0ZXI9ZnVuY3Rpb24oYSl7YT1fLldpKHRoaXMua2Esak9hKGEpKTtyZXR1cm4gbmV3IF8ud28oYSl9OwpfLmFhLmNsb3Nlc3Q9ZnVuY3Rpb24oYSl7dmFyIGI9W10sYz1qT2EoYSksZD1mdW5jdGlvbihlKXtyZXR1cm4gXy5SZyhlKSYmYyhlKX07dGhpcy5lYWNoKGZ1bmN0aW9uKGUpeyhlPV8uTWcoZSxkLCEwKSkmJiFfLkFhKGIsZSkmJmIucHVzaChlKX0pO3JldHVybiBuZXcgXy53byhiKX07Xy5hYS5uZXh0PWZ1bmN0aW9uKGEpe3JldHVybiB2T2EodGhpcyxGSGEsYSl9O18uYWEudEQ9ZnVuY3Rpb24oYSl7cmV0dXJuIHZPYSh0aGlzLF8uR0hhLGEpfTt2YXIgdk9hPWZ1bmN0aW9uKGEsYixjKXt2YXIgZD1bXTt2YXIgZT1jP2pPYShjKTprT2E7YS5lYWNoKGZ1bmN0aW9uKGYpeyhmPWIoZikpJiZlKGYpJiZkLnB1c2goZil9KTtyZXR1cm4gbmV3IF8ud28oZCl9O18ud28ucHJvdG90eXBlLmhhc0NsYXNzPWZ1bmN0aW9uKGEpe2ZvcihsZXQgYj0wO2I8dGhpcy5rYS5sZW5ndGg7YisrKWlmKF8ueG0odGhpcy5rYVtiXSxhKSlyZXR1cm4hMDtyZXR1cm4hMX07Cl8ud09hPWZ1bmN0aW9uKGEsYil7YS5lYWNoKGZ1bmN0aW9uKGMpe18ud20oYyxiKX0pfTtfLmFhPV8ud28ucHJvdG90eXBlO18uYWEuYWRkQ2xhc3M9ZnVuY3Rpb24oYSl7cmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbihiKXtfLnltKGIsYSl9KX07Xy5hYS5yZW1vdmVDbGFzcz1mdW5jdGlvbihhKXtyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKGIpe18uQW0oYixhKX0pfTtfLmFhLnRvZ2dsZUNsYXNzPWZ1bmN0aW9uKGEsYil7cmV0dXJuIGI9PT0hMD90aGlzLmFkZENsYXNzKGEpOmI9PT0hMT90aGlzLnJlbW92ZUNsYXNzKGEpOnRoaXMuZWFjaChmdW5jdGlvbihjKXtfLmlIYShjLGEpfSl9O18uYWEuVmI9ZnVuY3Rpb24oKXtpZih0aGlzLmthLmxlbmd0aD4wKXtsZXQgYT10aGlzLmthWzBdO2lmKCJ0ZXh0Q29udGVudCJpbiBhKXJldHVybiBfLm1hKGEudGV4dENvbnRlbnQpO2lmKCJpbm5lclRleHQiaW4gYSlyZXR1cm4gXy5tYShhLmlubmVyVGV4dCl9cmV0dXJuIiJ9OwpfLmFhLkJjPWZ1bmN0aW9uKGEpe3JldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oYil7Xy4kbShiLGEpfSl9O18uYWEueWM9ZnVuY3Rpb24oYSl7aWYodGhpcy5rYS5sZW5ndGg+MClyZXR1cm4gdGhpcy5rYVswXS5nZXRBdHRyaWJ1dGUoYSl9O18uQ289ZnVuY3Rpb24oYSxiLGMpe3JldHVybiBhLmVhY2goZnVuY3Rpb24oZCl7ZC5zZXRBdHRyaWJ1dGUoYixjKX0pfTtfLkRvPWZ1bmN0aW9uKGEsYil7cmV0dXJuIGEuZWFjaChmdW5jdGlvbihjKXtjLnJlbW92ZUF0dHJpYnV0ZShiKX0pfTtfLmFhPV8ud28ucHJvdG90eXBlO18uYWEuZ2V0U3R5bGU9ZnVuY3Rpb24oYSl7aWYodGhpcy5rYS5sZW5ndGg+MClyZXR1cm4gXy5qbih0aGlzLmthWzBdLGEpfTtfLmFhLnNldFN0eWxlPWZ1bmN0aW9uKGEsYil7cmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbihjKXtfLmhuKGMsYSxiKX0pfTsKXy5hYS5nZXREYXRhPWZ1bmN0aW9uKGEpe2lmKHRoaXMua2EubGVuZ3RoPT09MClyZXR1cm4gbmV3IF8uVmthKGEsbnVsbCk7dmFyIGI9Xy5nZyh0aGlzLmthWzBdLGEpO3JldHVybiBuZXcgXy5Wa2EoYSxiKX07Xy5hYS5sWj1mdW5jdGlvbihhKXt2YXIgYjtpZih0aGlzLmthLmxlbmd0aD09PTB8fChiPV8uZ2codGhpcy5rYVswXSxhKSk9PT1udWxsKXRocm93IEVycm9yKCJoY2AiK2EpO3JldHVybiBuZXcgXy5Wa2EoYSxiKX07Xy5hYS5zZXREYXRhPWZ1bmN0aW9uKGEsYil7dGhpcy5lYWNoKGZ1bmN0aW9uKGMpe2I9PW51bGw/Xy5pZyhjLGEpOl8uZmcoYyxhLGIpfSk7cmV0dXJuIHRoaXN9O18uYWEuZm9jdXM9ZnVuY3Rpb24oYSl7dHJ5e2E/dGhpcy5lbCgpLmZvY3VzKGEpOnRoaXMuZWwoKS5mb2N1cygpfWNhdGNoKGIpe31yZXR1cm4gdGhpc307Cl8uYWEuY2xpY2s9ZnVuY3Rpb24oKXt2YXIgYT1fLldkKHRoaXMuZWwoKSk7aWYoYS5jcmVhdGVFdmVudCl7bGV0IGI9YS5jcmVhdGVFdmVudCgiTW91c2VFdmVudHMiKTtiLmluaXRNb3VzZUV2ZW50KCJjbGljayIsITAsITAsYS5kZWZhdWx0VmlldywxLDAsMCwwLDAsITEsITEsITEsITEsMCxudWxsKTt0aGlzLmVsKCkuZGlzcGF0Y2hFdmVudChiKX1lbHNlIGE9YS5jcmVhdGVFdmVudE9iamVjdCgpLGEuY2xpZW50WD0wLGEuY2xpZW50WT0wLGEuc2NyZWVuWD0wLGEuc2NyZWVuWT0wLGEuYWx0S2V5PSExLGEuY3RybEtleT0hMSxhLnNoaWZ0S2V5PSExLGEuYnV0dG9uPTAsdGhpcy5lbCgpLmZpcmVFdmVudCgib25jbGljayIsYSl9Owp2YXIgeE9hPWZ1bmN0aW9uKGEsYixjLGQ9ITEpe2Z1bmN0aW9uIGUoZixnLGgpe3ZhciBrPWc7ZyYmZy5wYXJlbnROb2RlJiYoaz1nLmNsb25lTm9kZSghMCkpO2YoayxoKX1pZihhLmthLmxlbmd0aD09MSl7bGV0IGY9YS5rYVswXSxnPWg9PmIoaCxmKTtjIGluc3RhbmNlb2YgXy53bz9jLmVhY2goZyx2b2lkIDAsZCk6QXJyYXkuaXNBcnJheShjKT8oZD9fLlRhYTpfLkxhKShjLGcpOmIoYyxmKTtyZXR1cm4gYX1yZXR1cm4gYS5lYWNoKGZ1bmN0aW9uKGYpe2MgaW5zdGFuY2VvZiBfLndvP2MuZWFjaChmdW5jdGlvbihnKXtlKGIsZyxmKX0pOkFycmF5LmlzQXJyYXkoYyk/Xy5MYShjLGZ1bmN0aW9uKGcpe2UoYixnLGYpfSk6ZShiLGMsZil9KX07Xy5hYT1fLndvLnByb3RvdHlwZTtfLmFhLmFwcGVuZD1mdW5jdGlvbihhKXtyZXR1cm4geE9hKHRoaXMsZnVuY3Rpb24oYixjKXtiJiZjLmFwcGVuZENoaWxkKGIpfSxhKX07Cl8uYWEucmVtb3ZlPWZ1bmN0aW9uKCl7cmV0dXJuIHhPYSh0aGlzLGZ1bmN0aW9uKGEsYil7Xy5ZbShiKX0sbnVsbCl9O18uYWEuZW1wdHk9ZnVuY3Rpb24oKXtyZXR1cm4geE9hKHRoaXMsZnVuY3Rpb24oYSxiKXtfLlVtKGIpfSxudWxsKX07Xy5hYS5hZnRlcj1mdW5jdGlvbihhLGI9ITApe3JldHVybiB4T2EodGhpcyxmdW5jdGlvbihjLGQpe2MmJl8uV20oYyxkKX0sYSwhYil9O18uYWEuYmVmb3JlPWZ1bmN0aW9uKGEpe3JldHVybiB4T2EodGhpcyxmdW5jdGlvbihiLGMpe2ImJl8uVm0oYixjKX0sYSl9O18uYWEucmVwbGFjZVdpdGg9ZnVuY3Rpb24oYSl7cmV0dXJuIHhPYSh0aGlzLGZ1bmN0aW9uKGIsYyl7YiYmXy5ESGEoYixjKX0sYSl9O18uYWEuWmU9ZnVuY3Rpb24oKXt2YXIgYT0hMDt0aGlzLmVhY2goZnVuY3Rpb24oYil7YT1hJiZfLnduKGIpfSk7cmV0dXJuIGF9OwpfLmFhLnRvZ2dsZT1mdW5jdGlvbihhKXtyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKGIpe18udm4oYixhKX0pfTtfLmFhLnNob3c9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy50b2dnbGUoITApfTtfLmFhLmhpZGU9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy50b2dnbGUoITEpfTtfLmFhLnRyaWdnZXI9ZnVuY3Rpb24oYSxiLGMsZCl7cmV0dXJuIHlPYSh0aGlzLGEsYixjLGQpfTt5T2E9ZnVuY3Rpb24oYSxiLGMsZCxlKXtyZXR1cm4gYS5lYWNoKGZ1bmN0aW9uKGYpe0lyYShfLmRnKF8uV2QoZikpLGYsYixjLGQsZSl9KX07Xy56aT1mdW5jdGlvbihhKXtyZXR1cm4gYSBpbnN0YW5jZW9mIF8ud28/YS5lbCgpOmF9O18uem89ZnVuY3Rpb24oYSxiKXthIGluc3RhbmNlb2YgXy53byYmKGI9YS5rYSxhPW51bGwpO3RoaXMua2E9dU9hKGEhPW51bGw/W2FdOmIpfTtfLlVpKF8uem8sXy53byk7Xy5hYT1fLnpvLnByb3RvdHlwZTtfLmFhLmNoaWxkcmVuPWZ1bmN0aW9uKCl7cmV0dXJuIG5ldyBfLndvKEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKHRoaXMua2FbMF0uY2hpbGRyZW4pKX07Cl8uYWEuZWFjaD1mdW5jdGlvbihhLGIpe2EuY2FsbChiLHRoaXMua2FbMF0sMCk7cmV0dXJuIHRoaXN9O18uYWEuc2l6ZT1mdW5jdGlvbigpe3JldHVybiAxfTtfLmFhLmVsPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMua2FbMF19O18uYWEuRWs9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5rYVswXX07Xy5hYS5oYj1mdW5jdGlvbigpe3JldHVybiB0aGlzLmthWzBdfTtfLmFhLmVxPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXN9O18uYWEuZmlyc3Q9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpc307Xy5Fbz1mdW5jdGlvbihhKXtyZXR1cm4gYSBpbnN0YW5jZW9mIF8uem8/YTpuZXcgXy56byhfLnppKGEpKX07Xy5nb2EoXy5wbyxfLktOYSk7dmFyIHpPYT1jbGFzc3tjb25zdHJ1Y3Rvcigpe3RoaXMua2E9d2luZG93fWdldCgpe3JldHVybiB0aGlzLmthfWdldERvY3VtZW50KCl7cmV0dXJuIHRoaXMua2EuZG9jdW1lbnR9ZmluZChhKXtyZXR1cm4obmV3IF8uem8odGhpcy5rYS5kb2N1bWVudC5kb2N1bWVudEVsZW1lbnQpKS5maW5kKGEpfX07Xy5iZyh6T2EsXy5LTmEpO3ZhciBycWE9MDt2YXIgZ3FhLFBwYSxtcWEsYnFhLFpwYSxZcGEsVHBhO2dxYT17dGhyb3dFeGNlcHRpb246Xy5mYX07Xy5vZz1fLmhpKCk7Xy52cWE9ZnVuY3Rpb24oYSl7Xy5vZy5oaXN0b3J5LmdvKGEpfTtfLnpxYT1mdW5jdGlvbihhLGIpe18ub2cuaGlzdG9yeS5yZXBsYWNlU3RhdGUoYSwiIixiKX07UHBhPW51bGw7Xy5mcWE9bmV3IE1hcDtfLmVxYT1uZXcgU2V0O18uaHFhPW5ldyBNYXA7bXFhPVtdO2JxYT1udWxsO1lwYT0wO18uV3BhKCkuc2V0SW5pdGlhbFZhbHVlKCJISVNUT1JZX0hFQURfSUQiLF8uTWkoInBlcmZvcm1hbmNlLnRpbWluZy5uYXZpZ2F0aW9uU3RhcnQiLF8ub2cpfHxEYXRlLm5vdygpKTtfLkFPYT1mdW5jdGlvbihhKXtyZXR1cm4hIWEmJmEuc3Vic3RyKDEpLmluZGV4T2YoIiMiKT4tMX07VHBhPVlGYTt2YXIgQXFhPXt9O3ZhciBCT2E7Xy5DcWE9Xy51ZygicyIse25hbWU6ImhzYiJ9KTtCT2E9W18uQ3FhXTtfLmhxYS5zZXQoImhzIix7Z2V0U3RhdGU6ZnVuY3Rpb24oYSxiLGMsZCl7dmFyIGU9YS5tZXRhZGF0YTtiPWUuc3RhY2tJZDtlPWUucHVzaElkO2M9KEFycmF5LmlzQXJyYXkoYyk/YzpbXSkuc2xpY2UoKTtpZighZHx8IWMubGVuZ3RoKXtjLnB1c2goZSk7ZD1fLkRxYShiKTtsZXQgZj1hLm1ldGFkYXRhLnN0YWNrSW5kZXgsZz1jLnNsaWNlKDAsLTUwKTtmb3IobGV0IGggb2YgQk9hKXtmb3IobGV0IGsgb2YgZyloLnJlbW92ZShTdHJpbmcoZFtrXSkpO2ZvcihsZXQgaz1mO2s8ZC5sZW5ndGg7KytrKWgucmVtb3ZlKFN0cmluZyhkW2tdKSl9Yz1jLnNsaWNlKC01MCk7Xy5DcWEuc2V0KFN0cmluZyhiKSxjLCIqIil9YT1PYmplY3QuYXNzaWduKHt9LGEpO18uQ3FhLnNldChTdHJpbmcoZSksYSwiKiIpO3JldHVybiBjfX0pO3ZhciBDT2E9ITE7Xy5lb2EoKCk9PntpZighQ09hKXtDT2E9ITA7dmFyIGE7aWYoKGE9Z29vZ2xlLmhzKT09bnVsbD8wOmEubmhzKXRyeXtQcGE9T3BhKCl9Y2F0Y2goYil7Xy5WZShFcnJvcigiamNgIitiLHtjYXVzZTpifSkse2xldmVsOjB9KX1fLkFPYShfLm9nLmxvY2F0aW9uLmhhc2gpJiYoYT1lbmNvZGVVUklDb21wb25lbnQoXy5vZy5sb2NhdGlvbi5oYXNoKSxnb29nbGUubG9nKCJqYmgiLCJoPSIrYS5zdWJzdHIoMCw0MCkpLF8ub2cubG9jYXRpb24uaGFzaD0iIik7WnBhPVVwYSgpO2E9Xy5rZCg1LF8ub2cubG9jYXRpb24uaHJlZikhPT0iL18vY2hyb21lL25ld3RhYiImJiFacGEubWV0YWRhdGE7Xy5oZShfLm9nLCJwb3BzdGF0ZSIsYXFhLCExKTthJiZzcWEoe3N0YXRlOl8ub2cuaGlzdG9yeS5zdGF0ZSx1cmw6UnBhKCkscmVwbGFjZTohMH0pfX0pO3ZhciBOcWE7Xy5FcWE9e307Xy5GcWE9e307Xy5HcWE9bnVsbDtfLmVvYSgoKT0+e3ZhciBhPV8ueWQoKTsoYT1hLmhhc2g/YS5ocmVmLnN1YnN0cihhLmhyZWYuaW5kZXhPZigiIyIpKToiIikmJmEuc3Vic3RyKDEpLmluZGV4T2YoIiMiKT4tMSYmKGE9ZW5jb2RlVVJJQ29tcG9uZW50KGEpLGdvb2dsZS5sb2coImpiaCIsIiZoPSIrYS5zdWJzdHIoMCw0MCkpLF8ueWQoKS5oYXNoPSIiKTtOcWE9S01hKF8ueWQoKS5zZWFyY2guc3Vic3RyaW5nKDEpKTtfLlFxYShOcWEpO18ud2c9Xy5RcWEoXy5VcWEoXy55ZCgpLmhyZWYpLnN0YXRlKTtfLmlxYShUcWEpfSk7ZmMoIlM4NHF1YiIsImJpZ0FNYyIpO2ZjKCJHTEdKNCIsImE5RHI2Iik7ZmMoIkdMR0o0IiwiYmlnQU1jIik7ZmMoIkM2bTJTIiwiYTlEcjYiKTtmYygiQzZtMlMiLCJKZVBTbGQiKTt2YXIgRE9hPSJ3aW5kb3ciaW4gZ2xvYmFsVGhpcyYmd2luZG93LnBlcmZvcm1hbmNlJiZ3aW5kb3cucGVyZm9ybWFuY2UudGltaW5nJiYibmF2aWdhdGlvblN0YXJ0ImluIHdpbmRvdy5wZXJmb3JtYW5jZS50aW1pbmc/d2luZG93LnBlcmZvcm1hbmNlLnRpbWluZy5uYXZpZ2F0aW9uU3RhcnQ6dm9pZCAwO3ZhciBFT2E9ZnVuY3Rpb24oYSxiKXthLndhJiZhLllwKCJleHRyYWRhdGEiKTthLlBhLm9pPWIudG9TdHJpbmcoKS5yZXBsYWNlKC9bOjssXHNdL2csIl8iKX0sRk9hPWZ1bmN0aW9uKGEsYj0hMCl7aWYoIWEuamcpcmV0dXJuIDA7dmFyIGM9YS5qZztyZXR1cm4gYy54Xz09bnVsbHx8YiYmYy5LOWE/MDooYS5BYT9ET2Erd2luZG93LnBlcmZvcm1hbmNlLm5vdygpOmMudGltZVN0YW1wKS1jLnhffSxHT2E9ZnVuY3Rpb24oYSl7dmFyIGI9Xy5GbztpZighYS5qZylyZXR1cm4gbnVsbDt2YXIgYz1hLmpnO3JldHVybiBjLnhfPT1udWxsP2MudGltZVN0YW1wOmEuQWE/Yj9jLnhfLWI6bnVsbDpjLnhffSxYcWE9Y2xhc3N7Y29uc3RydWN0b3IoYSxiLGMsZCxlLGYsZz0hMSxoPSExKXt0aGlzLkd3PVdxYSgpO3RoaXMuS2E9W107dGhpcy5OYT17fTt0aGlzLmthPW5ldyBNYXA7dGhpcy5PYT17fTt0aGlzLndhPSExO3RoaXMuZGdhPXt9O3RoaXMuUGE9e307dGhpcy5TYT10aGlzLkFhPSExOwp0aGlzLkJhPW51bGw7dGhpcy5JYT0oKT0+RGF0ZS5ub3coKTt0aGlzLlJhPWEucmVwbGFjZShIT2EsIl8iKTt0aGlzLm5iPWE7dGhpcy5vYT1ifHxudWxsO3RoaXMuamc9Y3x8bnVsbDt0aGlzLnJiPWV8fG51bGw7dGhpcy5HYT1mfHxudWxsOyF0aGlzLkdhJiZjJiZjLnRhcmdldCYmYy50YXJnZXQubm9kZVR5cGU9PT1Ob2RlLkVMRU1FTlRfTk9ERSYmKHRoaXMuR2E9Yy50YXJnZXQpO2c/KHRoaXMuSWE9KCk9PnBlcmZvcm1hbmNlLm5vdygpLHRoaXMuRWE9ZCE9PXZvaWQgMD9kOnRoaXMuSWEoKSk6dGhpcy5FYT1kfHx0aGlzLklhKCk7dGhpcy5aYT10aGlzLkVhO3RoaXMua2Euc2V0KCJtYWluLWFjdGlvbmZsb3ctYnJhbmNoIiwxKTtjJiZiJiZjLnR5cGU9PT0iY2xpY2siJiZ0aGlzLmFjdGlvbihiKTtofHxJT2EucHVzaCh0aGlzKTt0aGlzLkFiPSsrSk9hO2E9VnFhKCJjcmVhdGVkIix0aGlzKTtLT2EhPW51bGwmJktPYS5kaXNwYXRjaEV2ZW50KGEpfWlkKCl7cmV0dXJuIHRoaXMuQWJ9Z2V0VGljayhhKXtyZXR1cm4gYT09PQoic3RhcnQiP3RoaXMuRWE6dGhpcy5OYVthXX1nZXRUeXBlKCl7cmV0dXJuIHRoaXMuUmF9QWMoYSl7dGhpcy5SYT1hLnJlcGxhY2UoSE9hLCJfIik7dGhpcy5uYj1hfXRpY2soYSxiKXt0aGlzLndhJiZ0aGlzLllwKCJ0aWNrIix2b2lkIDAsYSk7dmFyIGM7Yj0oYz1iKSE9bnVsbD9jOnt9O2EgaW4gdGhpcy5OYSYmKHRoaXMuT2FbYV09ITApO2M9Yi50aW1lfHx0aGlzLklhKCk7IWIuVnJjJiYhYi50emQmJmM+dGhpcy5aYSYmKHRoaXMuWmE9Yyk7Zm9yKHZhciBkPWMtdGhpcy5FYSxlPXRoaXMuS2EubGVuZ3RoO2U+MCYmdGhpcy5LYVtlLTFdWzFdPmQ7KWUtLTt0aGlzLkthLnNwbGljZShlLDAsW2EsZCxiLlZyY10pO3RoaXMuTmFbYV09Y31kb25lKGEsYixjKXt2YXIgZD10aGlzLmthLmdldChhKTtpZih0aGlzLndhfHxkPT09dm9pZCAwKXRoaXMuWXAoImRvbmUiLGEsYik7ZWxzZXtiJiZ0aGlzLnRpY2soYixjKTtkLS07dGhpcy5rYS5zZXQoYSxkKTtkPT09MCYmdGhpcy5rYS5kZWxldGUoYSk7CmlmKGE9dGhpcy5rYS5zaXplPT09MClpZihLT2Epe2I9YT0iIjtmb3IodmFyIGUgaW4gdGhpcy5PYSl0aGlzLk9hLmhhc093blByb3BlcnR5KGUpJiYoYj1iK2ErZSxhPSJ8Iik7YiYmKHRoaXMuUGEuZHVwPWIpO2U9VnFhKCJiZWZvcmVkb25lIix0aGlzKTtpZih0aGlzLkd3LmRpc3BhdGNoRXZlbnQoZSkmJktPYS5kaXNwYXRjaEV2ZW50KGUpKXthPXRoaXMuUGE7ZT1bXTtmb3IobGV0IFtmLGddb2YgT2JqZWN0LmVudHJpZXMoYSkpYj1nLGE9ZW5jb2RlVVJJQ29tcG9uZW50KGYpLGI9ZW5jb2RlVVJJQ29tcG9uZW50KGIpLnJlcGxhY2UoLyU3Qy9nLCJ8IiksZS5wdXNoKGErIjoiK2IpOyhlPWUuam9pbigiLCIpKSYmKHRoaXMuZGdhLmNhZD1lKTtlPVZxYSgiZG9uZSIsdGhpcyk7YT1LT2EuZGlzcGF0Y2hFdmVudChlKX1lbHNlIGE9ITF9ZWxzZSBhPSEwO2EmJih0aGlzLndhPSEwLGU9SU9hLmluZGV4T2YodGhpcyksZSE9PS0xJiZJT2Euc3BsaWNlKGUsMSksdGhpcy5HYT10aGlzLmpnPQp0aGlzLm9hPW51bGwsdGhpcy5Hdz1XcWEoKSx0aGlzLlNhPSEwKX19aXNEaXNwb3NlZCgpe3JldHVybiB0aGlzLlNhfWx6KGEsYixjKXt0aGlzLndhJiZ0aGlzLllwKCJicmFuY2giLGEsYik7YiYmdGhpcy50aWNrKGIsYyk7dmFyIGQ7Yj0oZD10aGlzLmthLmdldChhKSkhPW51bGw/ZDowO2IrKzt0aGlzLmthLnNldChhLGIpfXRpbWVycygpe3JldHVybiB0aGlzLkthfVlwKGEsYixjKXtpZihLT2Epe3ZhciBkPVZxYSgiZXJyb3IiLHRoaXMpO2QuZXJyb3I9YTtkLmx6PWI7ZC50aWNrPWM7ZC5maW5pc2hlZD10aGlzLndhO0tPYS5kaXNwYXRjaEV2ZW50KGQpfX1hY3Rpb24oYSl7dGhpcy53YSYmdGhpcy5ZcCgiYWN0aW9uIik7dmFyIGI9W10sYz1udWxsLGQ9bnVsbCxlPW51bGwsZj1udWxsO1pxYShhLGc9Pnt2YXIgaDshZy5fX29pJiZnLmdldEF0dHJpYnV0ZSYmKGcuX19vaT0oaD1nLmdldEF0dHJpYnV0ZSgib2kiKSkhPW51bGw/aDp2b2lkIDApO2lmKGg9Zy5fX29pKWIudW5zaGlmdChoKSwKY3x8KGM9Zy5nZXRBdHRyaWJ1dGUoImpzaW5zdGFuY2UiKSk7ZXx8ZCYmZCE9PSIxInx8KGU9Zy5nZXRBdHRyaWJ1dGUoInZlZCIpKTtmfHwoZj1nLmdldEF0dHJpYnV0ZSgidmV0IikpO2R8fChkPWcuZ2V0QXR0cmlidXRlKCJqc3RyYWNrIikpfSk7ZiYmKHRoaXMuZGdhLnZldD1mKTtkJiYodGhpcy5kZ2EuY3Q9dGhpcy5SYSxiLmxlbmd0aD4wJiZFT2EodGhpcyxiLmpvaW4oIi4iKSksYyYmKGE9Yy5jaGFyQXQoMCk9PT0iKiI/TnVtYmVyKGMuc2xpY2UoMSkpOk51bWJlcihjKSx0aGlzLmRnYS5jZD1hKSxkIT09IjEiJiYodGhpcy5kZ2EuZWk9ZCksZSYmKHRoaXMuZGdhLnZlZD1lKSl9VlJhKCl7cmV0dXJuIHRoaXMubmJ9Y2FsbGJhY2soYSxiLGMsZCl7dGhpcy5seihiLGMpO3ZhciBlPXRoaXM7cmV0dXJuIGZ1bmN0aW9uKC4uLmYpe3RyeXtyZXR1cm4gYS5jYWxsKHRoaXMsLi4uZil9ZmluYWxseXtlLmRvbmUoYixkKX19fW5vZGUoKXtyZXR1cm4gdGhpcy5vYX1ldmVudCgpe3JldHVybiB0aGlzLmpnfWV2ZW50VHlwZSgpe3JldHVybiB0aGlzLnJifXRhcmdldCgpe3JldHVybiB0aGlzLkdhfXZhbHVlKGEpe2lmKHRoaXMub2Epe2lmKGEgaW4KdGhpcy5vYSlyZXR1cm4gdGhpcy5vYVthXTtpZih0aGlzLm9hLmdldEF0dHJpYnV0ZSlyZXR1cm4gdGhpcy5vYS5nZXRBdHRyaWJ1dGUoYSl9fX0sSU9hPVtdLEtPYT1XcWEoKSxIT2E9L1t+Liw/Ji1dL2csSk9hPTA7dmFyIE1PYT1mdW5jdGlvbigpe3JldHVybiBhPT5uZXcgTE9hKGEpfSxMT2E9Y2xhc3MgZXh0ZW5kcyBYcWF7Y29uc3RydWN0b3IoYSl7dmFyIGIsYyxkLGU7c3VwZXIoKGQ9KGI9SWcoYSkpPT1udWxsP3ZvaWQgMDpiLm5hbWUpIT1udWxsP2Q6IiIsKGU9KGM9SWcoYSkpPT1udWxsP3ZvaWQgMDpjLmVsZW1lbnQpIT1udWxsP2U6bnVsbCxhLmdldEV2ZW50KCksYS5HcSgpLGEua2EuZXZlbnRUeXBlLGEua2EudGFyZ2V0RWxlbWVudCl9fTt2YXIgYnJhPVN5bWJvbCgia2MiKTtfLmhyYT1TeW1ib2woImxjIik7Xy5rcmE9Y2xhc3N7Y29uc3RydWN0b3IoYSxiLGMsZCxlPWIpe3RoaXMuZXZlbnQ9YTt0aGlzLnRhcmdldEVsZW1lbnQ9Yjt0aGlzLm9iPWM7dGhpcy5rYT1lO3RoaXMudHlwZT1hLnR5cGU7dGhpcy5kYXRhPWEuZGF0YTt0aGlzLnNvdXJjZT1kfWNhc3QoKXtyZXR1cm4gdGhpc319O3ZhciBOT2E7Tk9hPW5ldyBXZWFrTWFwO18uTmc9bmV3IFdlYWtNYXA7dmFyIHByYT0hMSx3cmE9bnJhKCk7dmFyIE9PYT1uZXcgUmVnRXhwKCJeXFwuPyg/OlxcJlxcdytcXHwpPygiK18uYkZhKCIjIikrIj9cXHcrKSg/OlxcKChbXFx3fD0tXSspXFwpKT8kIiksUE9hPVJlZ0V4cCgiXih0cmlnZ2VyLltcXHdcXC5dKykoPzpcXCgoW1xcd3w9LV0rKVxcKSk/JCIpO3ZhciBRT2E9Y2xhc3N7Y29uc3RydWN0b3IoYSxiLGMpe3RoaXMuYWN0aW9uPWE7dGhpcy50YXJnZXQ9Ynx8bnVsbDt0aGlzLmFyZ3M9Y3x8bnVsbH10b1N0cmluZygpe3JldHVybmB3aXouQWN0aW9uPG5hbWU9JHt0aGlzLmFjdGlvbn0sIGpzbmFtZT0ke3RoaXMudGFyZ2V0fT5gfX07dmFyIFJPYT17fSxUT2E9ZnVuY3Rpb24oYSl7dmFyIGI9Uk9hW2FdO2lmKGIpcmV0dXJuIGI7dmFyIGM9YS5zdGFydHNXaXRoKCJ0cmlnZ2VyLiIpO2I9YS5zcGxpdCgiLCIpO3ZhciBkPW5ldyBTT2E7Yi5mb3JFYWNoKGU9PntlPV8ubWEoZSk7dmFyIGY9ZS5tYXRjaChjP1BPYTpPT2EpO2lmKGYpe3ZhciBnPWU9bnVsbDtpZihmWzJdKXtsZXQgaD1mWzJdLnNwbGl0KCJ8Iik7Zm9yKGxldCBrPTA7azxoLmxlbmd0aDtrKyspe2xldCBtPWhba10uc3BsaXQoIj0iKTttWzFdPyhlfHwoZT17fSksZVttWzBdXT1tWzFdKTpnPW1bMF19fWQuYWRkKG5ldyBRT2EoZlsxXSxnLGUpKX1lbHNlIF8uZmEoRXJyb3IoIm1jYCIrZSsiYCIrYykpfSk7cmV0dXJuIFJPYVthXT1kfSxTT2E9Y2xhc3N7Y29uc3RydWN0b3IoKXt0aGlzLmthPVtdfWdldCgpe3JldHVybiB0aGlzLmthfWFkZChhKXt0aGlzLmthLnB1c2goYSl9fTt2YXIgTXJhPXt9O3ZhciBOcmE9e307dmFyIFVPYT1bImZvY3VzIiwiYmx1ciIsImVycm9yIiwibG9hZCIsInRvZ2dsZSJdOyJjbGljayBkYmxjbGljayBmb2N1c2luIGZvY3Vzb3V0IGtleWRvd24ga2V5dXAga2V5cHJlc3MgbW91c2VvdmVyIG1vdXNlb3V0IHN1Ym1pdCB0b3VjaHN0YXJ0IHRvdWNoZW5kIHRvdWNobW92ZSB0b3VjaGNhbmNlbCBhdXhjbGljayBjaGFuZ2UgY29tcG9zaXRpb25zdGFydCBjb21wb3NpdGlvbnVwZGF0ZSBjb21wb3NpdGlvbmVuZCBiZWZvcmVpbnB1dCBpbnB1dCBzZWxlY3QgY29weSBjdXQgcGFzdGUgbW91c2Vkb3duIG1vdXNldXAgd2hlZWwgY29udGV4dG1lbnUgZHJhZ292ZXIgZHJhZ2VudGVyIGRyYWdsZWF2ZSBkcm9wIGRyYWdzdGFydCBkcmFnZW5kIHBvaW50ZXJkb3duIHBvaW50ZXJtb3ZlIHBvaW50ZXJ1cCBwb2ludGVyY2FuY2VsIHBvaW50ZXJvdmVyIHBvaW50ZXJvdXQgZ290cG9pbnRlcmNhcHR1cmUgbG9zdHBvaW50ZXJjYXB0dXJlIGVuZGVkIGxvYWRlZG1ldGFkYXRhIHBhZ2VoaWRlIHBhZ2VzaG93IHZpc2liaWxpdHljaGFuZ2UgYmVmb3JlbWF0Y2giLnNwbGl0KCIgIikuY29uY2F0KFVPYSk7dmFyIFNyYSxweWEsV3lhLFN5YSxWeWEsVXlhLFp5YTtTcmE9dHlwZW9mIG5hdmlnYXRvciE9PSJ1bmRlZmluZWQiJiYvTWFjaW50b3NoLy50ZXN0KG5hdmlnYXRvci51c2VyQWdlbnQpO18uVHlhPXR5cGVvZiBuYXZpZ2F0b3IhPT0idW5kZWZpbmVkIiYmIS9PcGVyYS8udGVzdChuYXZpZ2F0b3IudXNlckFnZW50KSYmL1dlYktpdC8udGVzdChuYXZpZ2F0b3IudXNlckFnZW50KTtweWE9dHlwZW9mIG5hdmlnYXRvciE9PSJ1bmRlZmluZWQiJiYhL09wZXJhfFdlYktpdC8udGVzdChuYXZpZ2F0b3IudXNlckFnZW50KSYmL0dlY2tvLy50ZXN0KG5hdmlnYXRvci5wcm9kdWN0KTtXeWE9e0E6MSxJTlBVVDoxLFRFWFRBUkVBOjEsU0VMRUNUOjEsQlVUVE9OOjF9O1N5YT17RW50ZXI6MTMsIiAiOjMyfTsKXy5YeWE9e0E6MTMsQlVUVE9OOjAsQ0hFQ0tCT1g6MzIsQ09NQk9CT1g6MTMsRklMRTowLEdSSURDRUxMOjEzLExJTks6MTMsTElTVEJPWDoxMyxNRU5VOjAsTUVOVUJBUjowLE1FTlVJVEVNOjAsTUVOVUlURU1DSEVDS0JPWDowLE1FTlVJVEVNUkFESU86MCxPUFRJT046MCxSQURJTzozMixSQURJT0dST1VQOjMyLFJFU0VUOjAsU1VCTUlUOjAsU1dJVENIOjMyLFRBQjowLFRSRUU6MTMsVFJFRUlURU06MTN9O1Z5YT17Q0hFQ0tCT1g6ITAsRklMRTohMCxPUFRJT046ITAsUkFESU86ITB9O1V5YT17Q09MT1I6ITAsREFURTohMCxEQVRFVElNRTohMCwiREFURVRJTUUtTE9DQUwiOiEwLEVNQUlMOiEwLE1PTlRIOiEwLE5VTUJFUjohMCxQQVNTV09SRDohMCxSQU5HRTohMCxTRUFSQ0g6ITAsVEVMOiEwLFRFWFQ6ITAsVEVYVEFSRUE6ITAsVElNRTohMCxVUkw6ITAsV0VFSzohMH07Clp5YT17QTohMCxBUkVBOiEwLEJVVFRPTjohMCxESUFMT0c6ITAsSU1HOiEwLElOUFVUOiEwLExJTks6ITAsTUVOVTohMCxPUFRHUk9VUDohMCxPUFRJT046ITAsUFJPR1JFU1M6ITAsU0VMRUNUOiEwLFRFWFRBUkVBOiEwfTtfLlhyYT1uZXcgTWFwO18uYmg9e307dmFyIGlzYT1fLmFmKCgpPT5uZXcgU2V0KFsuLi5sc2EoKSwuLi4oZ29vZ2xlLmNyJiZnb29nbGUuY3J8fG5ldyBTZXQpXSkpO18ubnNhKE5vZGUpO18ubnNhKGdsb2JhbFRoaXMuRWxlbWVudCk7Xy5WT2E9Xy5uc2EoZ2xvYmFsVGhpcy5IVE1MRWxlbWVudCk7Xy5uc2EoZ2xvYmFsVGhpcy5TVkdFbGVtZW50KTt2YXIgb3NhPWNsYXNze2NvbnN0cnVjdG9yKCl7dGhpcy5rYT17fX1hZGQoYSl7dGhpcy5rYVthXT0hMH1hZGRBbGwoYSl7Zm9yKGxldCBiPTA7YjxhLmxlbmd0aDtiKyspdGhpcy5hZGQoYVtiXSl9aGFzKGEpe3JldHVybiEhdGhpcy5rYVthXX1nZXRBbGxJbnN0YWxsZWRDaHVua0lkcygpe3JldHVybiBPYmplY3Qua2V5cyh0aGlzLmthKX1jbGVhcigpe3RoaXMua2E9e319fTtfLmVoPWNsYXNzIGV4dGVuZHMgXy5se2NvbnN0cnVjdG9yKGEpe3N1cGVyKGEpfX07Xy5Hbz1bMCwxLF8uRV07Xy5oaD1jbGFzcyBleHRlbmRzIF8ubHtjb25zdHJ1Y3RvcihhKXtzdXBlcihhKX19O18uSG89WzAsMixfLkVdO18ua2g9Y2xhc3MgZXh0ZW5kcyBfLmx7Y29uc3RydWN0b3IoYSl7c3VwZXIoYSl9fTtfLklvPVswLDMsXy5FXTt2YXIgR3NhLElzYTtHc2E9e307Xy5Gc2E9e2luaXQ6W10sX2U6W119O18uSHNhPSExO0lzYT1bXTtfLkpzYT1mdW5jdGlvbihhKXt0cnl7bGV0IGQ9R3NhW2FdO2lmKGQpe2xldCBlPWQuaW5pdCxmPWdvb2dsZS5wbWNbYV07dmFyIGI7aWYoYj1lKXt2YXIgYztpZighKGM9Zikpe2xldCBnPUdzYVthXTtjPSEoIWd8fCFnLl9lKX1iPWN9YiYmKGUoZiksTWF0aC5yYW5kb20oKTwuMDAxJiZfLmNoKCkuR2MoImNhZCIsYGZpcmVpbml0LiR7YX0uY2ZnLiR7SlNPTi5zdHJpbmdpZnkoZil9YCkubG9nKCkpfX1jYXRjaChkKXtfLlZlKGQse0RmOntjYXVzZToibWluaXQiLG1pZDphfSxsZXZlbDowfSl9fTt2YXIgJHZhLFdPYSxOc2E7JHZhPWE9Pnt2YXIgYj1fLm5mKF8uY3dhKTthPWEuZ2V0QXR0cmlidXRlKCJqc21vZGVsIik7aWYoIWEpcmV0dXJuITE7YT1fLk9zYShhKTtmb3IobGV0IGM9YS5sZW5ndGgtMTtjPj0wO2MtLSl7bGV0IGQ9Xy5yaChhW2NdKTtpZihxdWEoYixkKSlyZXR1cm4hMH1yZXR1cm4hMX07V09hPS87XHMqfFxzKy87Xy5Pc2E9YT0+YS50cmltKCkuc3BsaXQoV09hKS5maWx0ZXIoYj0+Yi5sZW5ndGg+MCk7TnNhPW5ldyBXZWFrU2V0O3ZhciBXc2E9W10sWHNhPVtdO3ZhciBYT2E9ZnVuY3Rpb24oKXt0aHJvdyBFcnJvcigid2MiKTt9O3ZhciBac2EsJHNhPVtdLFlPYT0oYSxiPSJ1c2VyLXZpc2libGUiKT0+e3ZhciBjPXR5cGVvZiB3aW5kb3chPT0idW5kZWZpbmVkIj93aW5kb3cuc2NoZWR1bGVyOnZvaWQgMCxkPSgpPT57dHlwZW9mIE1lc3NhZ2VDaGFubmVsIT09InVuZGVmaW5lZCI/KCRzYS5wdXNoKGEpLGF0YSgpKTpzZXRUaW1lb3V0KGEsMCl9O2M/Yy55aWVsZD9jLnlpZWxkKHtwcmlvcml0eTpifSkudGhlbihhKS5jYXRjaCgoKT0+e2MucG9zdFRhc2s/Yy5wb3N0VGFzayhhLHtwcmlvcml0eTpifSkuY2F0Y2goZCk6ZCgpfSk6Yy5wb3N0VGFzaz9jLnBvc3RUYXNrKGEse3ByaW9yaXR5OmJ9KS5jYXRjaChkKTpkKCk6ZCgpfSxaT2E9YT0+dHlwZW9mIHJlcXVlc3RJZGxlQ2FsbGJhY2shPT0idW5kZWZpbmVkIj9yZXF1ZXN0SWRsZUNhbGxiYWNrKGEsdm9pZCAwKTpzZXRUaW1lb3V0KCgpPT57dmFyIGI9cGVyZm9ybWFuY2Uubm93KCk7YSh7ZGlkVGltZW91dDohMSx0aW1lUmVtYWluaW5nOigpPT5NYXRoLm1heCgwLAo1MC0ocGVyZm9ybWFuY2Uubm93KCktYikpfSl9LDEpLCRPYT1hPT57dHlwZW9mIGNhbmNlbElkbGVDYWxsYmFjayE9PSJ1bmRlZmluZWQiP2NhbmNlbElkbGVDYWxsYmFjayhhKTpjbGVhclRpbWVvdXQoYSl9LGFQYT1uZXcgU2V0KFsiY2xpY2siLCJtb3VzZWRvd24iLCJrZXlkb3duIiwidG91Y2hzdGFydCJdKSxjUGE9ZnVuY3Rpb24oYSxiKXtpZihiLmxlbmd0aCE9PTApZm9yKGxldCBjIG9mIGIpe2lmKCFhUGEuaGFzKGMuZXZlbnRUeXBlKSljb250aW51ZTthLnJiPXBlcmZvcm1hbmNlLm5vdygpO2ZvcihiPWMudGFyZ2V0RWxlbWVudDtiOyl7bGV0IGQ9Yi5nZXRBdHRyaWJ1dGUoImpzY29udHJvbGxlciIpO2lmKGQpe2JQYShhLGQuc3BsaXQoIiMiKVswXSk7YnJlYWt9Yj1iLnBhcmVudEVsZW1lbnR9fX0sZVBhPWZ1bmN0aW9uKGEpe3ZhciBiPXdpbmRvdy5sb2FkZWRfaF8wLGM9KGIucXx8W10pLnNsaWNlKCk7Yi5xJiYoYi5xLmxlbmd0aD0wKTtiLnQmJmNsZWFyVGltZW91dChiLnQpOwppZihiLmgpZm9yKHZhciBkIGluIGIuaClPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoYi5oLGQpJiZhLm9hLmFkZChkKTtkPShlLGYsZz0hMSk9PntkUGEoYSxlLGYsZyl9O2QucT1iLnE7ZC5oPWIuaDtkLnQ9Yi50O3dpbmRvdy5sb2FkZWRfaF8wPWQ7Zm9yKGxldCBlIG9mIGMpZFBhKGEsZS5pZCxlLmNhbGxiYWNrLCExLGUucyl9LGlQYT1mdW5jdGlvbihhKXt2YXIgYj1hLmthLmZpbHRlcihjPT5hLkVhLmhhcyhjLmlkKSk7aWYoYi5sZW5ndGg+MClpZihhLmthPWEua2EuZmlsdGVyKGM9PiFhLkVhLmhhcyhjLmlkKSksYS5CYSE9PXZvaWQgMCYmKCRPYShhLkJhKSxhLkJhPXZvaWQgMCksZEdhKWEud2EucHVzaCguLi5iKSxmUGEoYSk7ZWxzZSBmb3IobGV0IGMgb2YgYilnUGEoYSxjLmlkLGMuY2FsbGJhY2spfHxoUGEoYSxjLmlkLGMuY2FsbGJhY2ssYy5zKSxjLnMuX3AhPT12b2lkIDAmJmMucy5fcC0tfSxiUGE9ZnVuY3Rpb24oYSxiKXtpZighYS5FYS5oYXMoYikmJgooYS5FYS5hZGQoYiksKGI9YS5JYS5XQyhiKSkmJiFiLmlzTG9hZGVkKCkmJihiPWIuZUYoKSkpKWZvcihsZXQgYyBvZiBiKWJQYShhLGMpfSxmUGE9ZnVuY3Rpb24oYSl7aWYoIWEuR2Epe3ZhciBiPWEud2EubGVuZ3RoPjA7aWYoZUdhKXtpZighYil7alBhKGEpO3JldHVybn19ZWxzZSBpZighYiYmYS5rYS5sZW5ndGg9PT0wKXJldHVybjthLkdhPSEwO3ZhciBjPSgpPT57WU9hKCgpPT57dmFyIGQ9cGVyZm9ybWFuY2Uubm93KCksZTtmb3IoZT1wZXJmb3JtYW5jZS5ub3coKS1hLnJiPDJFMz8xNjo1MDsoYS53YS5sZW5ndGg+MHx8IWVHYSYmYS5rYS5sZW5ndGg+MCkmJnBlcmZvcm1hbmNlLm5vdygpLWQ8ZTspe2xldCBmPWEud2EubGVuZ3RoPjAsZz1mP2Eud2Euc2hpZnQoKTphLmthLnNoaWZ0KCk7YkdhJiZjb25zb2xlLmxvZyhgRGVhZGxpbmUgbG9vcCBwcm9jZXNzaW5nIGNodW5rOiAke2cuaWR9LCBwcmlvcml0eTogJHtmfWApO2dQYShhLGcuaWQsZy5jYWxsYmFjayl8fGhQYShhLApnLmlkLGcuY2FsbGJhY2ssZy5zKTtnLnMuX3AhPT12b2lkIDAmJmcucy5fcC0tfWEud2EubGVuZ3RoPjB8fCFlR2EmJmEua2EubGVuZ3RoPjA/YygpOihhLkdhPSExLGVHYSYmYS5rYS5sZW5ndGg+MCYmalBhKGEpKX0sYS53YS5sZW5ndGg+MD8idXNlci1ibG9ja2luZyI6InVzZXItdmlzaWJsZSIpfTtjKCl9fSxnUGE9ZnVuY3Rpb24oYSxiLGMpe3ZhciBkPWEuSWEuV0MoYik7aWYoa1BhKGEsYikpcmV0dXJuIGEub2EuYWRkKGIpLCEwO3ZhciBlPWEuZUYoYikuZXZlcnkoZz0+a1BhKGEsZykpLGY9IWEuUGEuZ2V0KGIpfHxhLlNhLmhhcyhiKTtyZXR1cm4gZSYmZj8oIWEub2EuaGFzKGIpJiYoYkdhJiZjb25zb2xlLmxvZyhgRXhlY3V0aW5nIGNodW5rIHN5bmM6ICR7Yn0sIHByaW9yaXR5OiAke2EuRWEuaGFzKGIpfWApLGMuY2FsbChnbG9iYWxUaGlzKSxkPT1udWxsfHxkLnpyYSgpLFhPYShbYl0pLGEub2EuYWRkKGIpLGEuT2EuZGVsZXRlKGIpLGM9YS5BYS5nZXQoYikpJiYoYygpLAphLkFhLmRlbGV0ZShiKSxhLkthLmRlbGV0ZShiKSksITApOiExfSxoUGE9ZnVuY3Rpb24oYSxiLGMsZCl7Yj1sUGEoYSxiLGMpO2M9YS5OYS5nZXQoZCk7Y3x8KGM9W10sYS5OYS5zZXQoZCxjKSk7Yy5wdXNoKGIpfSxkUGE9ZnVuY3Rpb24oYSxiLGMsZD0hMSxlKXtiR2EmJmNvbnNvbGUubG9nKGBoYW5kbGVDaHVuazogJHtifSwgZmx1c2g6ICR7ZH0sIHByaW9yaXR5OiAke2EuRWEuaGFzKGIpfWApO2lmKCFhLm9hLmhhcyhiKSl7dmFyIGY9ZXx8ZG9jdW1lbnQuY3VycmVudFNjcmlwdDtmJiYhZi5jaHVua1NjaGVkdWxlckluaXRlZCYmKGYuX3A9MCxmLmNodW5rU2NoZWR1bGVySW5pdGVkPSEwLFlPYSgoKT0+e21QYShhLGYpfSwidXNlci12aXNpYmxlIikpO2EuT2EuYWRkKGIpOyhkPWEuRWEuaGFzKGIpKSYmIWRHYT9nUGEoYSxiLGMpfHwoZj9oUGEoYSxiLGMsZik6bFBhKGEsYixjKSk6Zj8oZi5fcD0oZi5fcHx8MCkrMSxkPyhhLkJhIT09dm9pZCAwJiYoJE9hKGEuQmEpLGEuQmE9CnZvaWQgMCksYS53YS5wdXNoKHtpZDpiLGNhbGxiYWNrOmMsczpmfSkpOmEua2EucHVzaCh7aWQ6YixjYWxsYmFjazpjLHM6Zn0pLGI9blBhKGEsYiksYz1hLk5hLmdldChmKSxjfHwoYz1bXSxhLk5hLnNldChmLGMpKSxjLnB1c2goYiksZEdhP2VHYT9kP2ZQYShhKTpqUGEoYSk6ZlBhKGEpOm9QYShhKSk6bFBhKGEsYixjKX19LGtQYT1mdW5jdGlvbihhLGIpe2lmKGEuWmEuaGFzKGIpfHxhLm9hLmhhcyhiKSlyZXR1cm4hMDt2YXIgYztyZXR1cm4hKChjPWEuSWEuV0MoYikpPT1udWxsfHwhYy5pc0xvYWRlZCgpKSYmIWEuT2EuaGFzKGIpfSxuUGE9ZnVuY3Rpb24oYSxiKXtpZihrUGEoYSxiKSlyZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCk7dmFyIGM9YS5LYS5nZXQoYik7aWYoYylyZXR1cm4gYzthLm5iLnB1c2goYik7Yz1uZXcgUHJvbWlzZShlPT57YS5BYS5zZXQoYixlKX0pO2EuS2Euc2V0KGIsYyk7dmFyIGQ9YS5lRihiKTtmb3IobGV0IGUgb2YgZCluUGEoYSxlKTtyZXR1cm4gY30sCm1QYT1hc3luYyBmdW5jdGlvbihhLGIpe3ZhciBjPSgwLF8uTWYpKCksZD1jKCk7Yz1jKDEpO3RyeXtjKGF3YWl0IGQoUHJvbWlzZS5hbGwoYS5OYS5nZXQoYil8fFtdKSkpLGIuZG9uZSYmYi5kb25lKCksZGVsZXRlIGIuX3B9ZmluYWxseXtkKCl9fSxsUGE9YXN5bmMgZnVuY3Rpb24oYSxiLGMpe3ZhciBkPSgwLF8uTWYpKCksZT1kKCk7ZD1kKDEpO3RyeXtsZXQgaD1hLklhLldDKGIpO2lmKGtQYShhLGIpKWEub2EuYWRkKGIpO2Vsc2V7dmFyIGY9YS5lRihiKS5tYXAoaz0+blBhKGEsaykpLGc9YS5QYS5nZXQoYik7aWYoZyl7bGV0IGs9Zy50aGVuKCgpPT57YS5TYS5hZGQoYil9KTtmLnB1c2goayl9ZChhd2FpdCBlKFByb21pc2UuYWxsKGYpKSk7aWYoIWEub2EuaGFzKGIpKXtiR2EmJmNvbnNvbGUubG9nKGBFeGVjdXRpbmcgY2h1bms6ICR7Yn0sIHByaW9yaXR5OiAke2EuRWEuaGFzKGIpfWApO2MuY2FsbChnbG9iYWxUaGlzKTtoPT1udWxsfHxoLnpyYSgpO1hPYShbYl0pO2Eub2EuYWRkKGIpOwphLk9hLmRlbGV0ZShiKTtsZXQgaz1hLkFhLmdldChiKTtrJiYoaygpLGEuQWEuZGVsZXRlKGIpLGEuS2EuZGVsZXRlKGIpKX19fWZpbmFsbHl7ZSgpfX0salBhPWZ1bmN0aW9uKGEpe2lmKCEoYS5CYSE9PXZvaWQgMHx8YS5rYS5sZW5ndGg9PT0wfHxhLndhLmxlbmd0aD4wKSl7dmFyIGI9Yz0+e2ZvcihhLkJhPXZvaWQgMDthLmthLmxlbmd0aD4wJiZjLnRpbWVSZW1haW5pbmcoKT4wJiZhLndhLmxlbmd0aD09PTA7KXtsZXQgZD1hLmthLnNoaWZ0KCk7YkdhJiZjb25zb2xlLmxvZyhgSWRsZSBsb29wIHByb2Nlc3NpbmcgY2h1bms6ICR7ZC5pZH1gKTtnUGEoYSxkLmlkLGQuY2FsbGJhY2spfHxoUGEoYSxkLmlkLGQuY2FsbGJhY2ssZC5zKTtkLnMuX3AhPT12b2lkIDAmJmQucy5fcC0tfWEua2EubGVuZ3RoPjAmJmEud2EubGVuZ3RoPT09MCYmKGEuQmE9Wk9hKGIpKX07YS5CYT1aT2EoYil9fSxvUGE9ZnVuY3Rpb24oYSl7aWYoIWEuR2EmJmEua2EubGVuZ3RoIT09MCl7YS5HYT0hMDsKdmFyIGI9KCk9PntZT2EoKCk9Pnt2YXIgYz1bXSxkPW5ldyBTZXQsZT1NYXRoLm1pbihhLkFiLGEua2EubGVuZ3RoKTtmb3IobGV0IGY9MDtmPGU7ZisrKWMucHVzaChhLmthW2ZdKSxkLmFkZChmKTtkLnNpemU+MCYmKGEua2E9YS5rYS5maWx0ZXIoKGYsZyk9PiFkLmhhcyhnKSkpO2lmKGMubGVuZ3RoPT09MClhLkdhPSExO2Vsc2V7Zm9yKGxldCBmIG9mIGMpYkdhJiZjb25zb2xlLmxvZyhgQmF0Y2ggbG9vcCBwcm9jZXNzaW5nIGNodW5rOiAke2YuaWR9LCBiYXRjaCBzaXplOiAke2MubGVuZ3RofSwgcHJpb3JpdHk6ICR7YS5FYS5oYXMoZi5pZCl9YCksaFBhKGEsZi5pZCxmLmNhbGxiYWNrLGYucyksZi5zLl9wIT09dm9pZCAwJiZmLnMuX3AtLTthLmthLmxlbmd0aD4wP2IoKTphLkdhPSExfX0sInVzZXItdmlzaWJsZSIpfTtiKCl9fSxwUGE9ZnVuY3Rpb24oYSl7YkdhJiZjb25zb2xlLndhcm4oInJlc29sdmVTdHVja0RlcGVuZGVuY2llcyBjYWxsZWQhIik7Zm9yKGxldCBiIG9mIGEubmIpYS5BYS5oYXMoYikmJgooYS5BYS5nZXQoYikoKSxhLkFhLmRlbGV0ZShiKSxhLkthLmRlbGV0ZShiKSl9LHFQYT1jbGFzc3tjb25zdHJ1Y3RvcihhLGIsYyl7dGhpcy5JYT1hO3RoaXMuUGE9Yjt0aGlzLlJhPWM7dGhpcy5OYT1uZXcgV2Vha01hcDt0aGlzLkthPW5ldyBNYXA7dGhpcy5BYT1uZXcgTWFwO3RoaXMubmI9W107dGhpcy5FYT1uZXcgU2V0O3RoaXMub2E9bmV3IFNldDt0aGlzLk9hPW5ldyBTZXQ7dGhpcy5aYT1uZXcgU2V0O3RoaXMuU2E9bmV3IFNldDt0aGlzLmthPVtdO3RoaXMud2E9W107dGhpcy5HYT0hMTt0aGlzLkFiPWFHYT81MDokRmE/MTAwOjE7dGhpcy5yYj0tSW5maW5pdHk7aWYoIXR0YSl7dGhpcy5JYS5OYT0hMDtsZXQgZD1QaS5lRGEucHJvdG90eXBlLm1oYixlPXRoaXM7UGkuZURhLnByb3RvdHlwZS5taGI9ZnVuY3Rpb24oKXt2YXIgZj10aGlzLmdldElkKCk7cmV0dXJuIGUuT2EuaGFzKGYpfHxlLm9hLmhhcyhmKT8hMDpkLmNhbGwodGhpcyl9fVByb21pc2UucmVzb2x2ZSgpLnRoZW4oKCk9Pgp7dmFyIGQ9V3NhLnNwbGljZSgwKTtjUGEodGhpcyxkKTtlUGEodGhpcyk7WHNhLnB1c2goZT0+e2NQYSh0aGlzLGUpO2lQYSh0aGlzKX0pfSk7d2luZG93LmFkZEV2ZW50TGlzdGVuZXIoInBhZ2VzaG93IixkPT57ZC5wZXJzaXN0ZWQmJmVQYSh0aGlzKX0pfWVGKGEpe3ZhciBiPXRoaXMuSWEuV0MoYSk7Yj1iP2IuZUYoKTpbXTtpZih0aGlzLlJhKXtsZXQgYz10aGlzLlJhKCk7YyYmKGMgaW5zdGFuY2VvZiBNYXA/KGE9Yy5nZXQoYSkpJiYoYj1iLmNvbmNhdChBcnJheS5mcm9tKGEpKSk6Y1thXSYmKGI9Yi5jb25jYXQoT2JqZWN0LmtleXMoY1thXSkpKSl9cmV0dXJuIGJ9fTt2YXIgclBhPWZ1bmN0aW9uKGEpe2Eua2E8YS5vYSYmYS5xdWV1ZS5sZW5ndGg+MCYmYS5xdWV1ZS5zaGlmdCgpKCl9LHNQYT1mdW5jdGlvbihhLGIpe3ZhciBjPURhdGUubm93KCk7cmV0dXJuIG5ldyBQcm9taXNlKChkLGUpPT57YS5xdWV1ZS5wdXNoKGFzeW5jKCk9Pnt2YXIgZj0oMCxfLk1mKSgpLGc9ZigpO2Y9ZigxKTt0cnl7YS5rYSsrO2xldCBoPURhdGUubm93KCktYyxrO3R5cGVvZigoaz13aW5kb3cubmF2aWdhdG9yKT09bnVsbD92b2lkIDA6ay5zZW5kQmVhY29uKT09PSJmdW5jdGlvbiImJmg+MjAmJk1hdGgucmFuZG9tKCk8LjAxJiZuYXZpZ2F0b3Iuc2VuZEJlYWNvbihgL2dlbl8yMDQ/Y2FkPWxvYWRfcmxhLiR7aH0uY3MuJHthLndhfS5pYy4ke2EuQWF9YCwiIik7dHJ5e2xldCBtPWYoYXdhaXQgZyhiKCkpKTtkKG0pfWNhdGNoKG0pe2YoKSxlKG0pfWZpbmFsbHl7YS5rYS0tLHJQYShhKX19ZmluYWxseXtnKCl9fSk7clBhKGEpfSl9LHVQYT1jbGFzc3tjb25zdHJ1Y3Rvcigpe3ZhciBhPQpBdGE7dGhpcy5vYT10UGE7dGhpcy53YT1hO3RoaXMuQWE9S0dhO3RoaXMua2E9MDt0aGlzLnF1ZXVlPVtdfX07Xy52UGE9Y2xhc3N7Y29uc3RydWN0b3IoYSl7dGhpcy5rYT1hfX07dmFyIHdQYSx4UGEsQVBhO3dQYT1mdW5jdGlvbihhKXtyZXR1cm4gYS5maWVsZHMubWFwKGI9PmIuQ24pfTt4UGE9ZnVuY3Rpb24oYSl7cmV0dXJuIGEuZmllbGRzLm1hcChiPT5iLmxwYil9O18ueVBhPWZ1bmN0aW9uKGEsLi4uYil7Yj1hLmdldEtleSguLi5iKTtyZXR1cm4gYS5rYS5oYXMoYik/YS5rYS5nZXQoYik6dm9pZCAwfTtfLnpQYT1mdW5jdGlvbihhLGIsLi4uYyl7Yz1hLmdldEtleSguLi5jKTthLmthLnNldChjLFtuZXcgXy52UGEoYildKX07QVBhPWZ1bmN0aW9uKGEsLi4uYil7cmV0dXJuKGE9Xy55UGEoYSwuLi5iKSkmJmEubGVuZ3RoP2FbMF06dm9pZCAwfTtfLkJQYT1jbGFzc3tjb25zdHJ1Y3RvcihhLGIsYyl7dGhpcy5vYT1hO3RoaXMud2E9Yjt0aGlzLmZpZWxkcz1jfHxbXTt0aGlzLmthPW5ldyBNYXB9Y2xlYXIoKXt0aGlzLmthLmNsZWFyKCl9Z2V0S2V5KC4uLmEpe3JldHVybiBhP2Euam9pbigiLCIpOiJrZXkifX07dmFyIENQYT1mdW5jdGlvbihhLC4uLmIpe3ZhciBjPTAsZD1BUGEoYSwuLi5iKTtkJiYoYz1kLmthKTtfLnpQYShhLGMrMSwuLi5iKX0sRFBhPWNsYXNzIGV4dGVuZHMgXy5CUGF7Y29uc3RydWN0b3IoYSxiKXtzdXBlcihhLDMsYil9fTt2YXIgRVBhLEZQYSxHUGE7RVBhPWZ1bmN0aW9uKGEpe2Eud2EuZW5hYmxlZHx8YS53YS5zdGFydCgpO2EuRWErKzthLkVhPj1hLkdhJiZhLm9hKCl9O0ZQYT1mdW5jdGlvbihhKXtmb3IobGV0IGI9MDtiPGEubGVuZ3RoO2IrKylhW2JdLmNsZWFyKCl9O18uSm89ZnVuY3Rpb24oYSxiLC4uLmMpe2EuQWEuaGFzKGIpfHxhLkFhLnNldChiLG5ldyBEUGEoYixjKSl9O0dQYT1mdW5jdGlvbihhLGIsLi4uYyl7KGI9YS5rYShiKSkmJmIgaW5zdGFuY2VvZiBEUGEmJihDUGEoYiwuLi5jKSxFUGEoYSkpfTtfLktvPWZ1bmN0aW9uKGEsYiwuLi5jKXtHUGEoYSxiLC4uLmMpfTsKXy5JUGE9Y2xhc3MgZXh0ZW5kcyBfLkVke2NvbnN0cnVjdG9yKGEpe3N1cGVyKCk7dGhpcy5LYT1hO3RoaXMuRWE9MDt0aGlzLkdhPTEwMDt0aGlzLkFhPW5ldyBNYXA7dGhpcy5JYT1uZXcgU2V0O3RoaXMuQmE9M0U0O3RoaXMud2E9bmV3IF8ubmUodGhpcy5CYSk7dGhpcy53YS5saXN0ZW4oInRpY2siLHRoaXMub2EsITEsdGhpcyk7Xy5EaSh0aGlzLHRoaXMud2EpfW9hKCl7dmFyIGE9Wy4uLnRoaXMuQWEudmFsdWVzKCldLmZpbHRlcihiPT5iLmthLnNpemUpO2EubGVuZ3RoJiZ0aGlzLkthLmZsdXNoKGEsITEpO0ZQYShhKTt0aGlzLkVhPTA7dGhpcy53YS5lbmFibGVkJiZ0aGlzLndhLnN0b3AoKX1rYShhKXtyZXR1cm4gdGhpcy5JYS5oYXMoYSk/dm9pZCAwOnRoaXMuQWEuZ2V0KGEpfUtvKGEsYiwuLi5jKXsoYT10aGlzLmthKGEpKSYmImZ1bmN0aW9uIj09dHlwZW9mIF8uSFBhJiZhIGluc3RhbmNlb2YgXy5IUGEmJihhLktvKGIsLi4uYyksRVBhKHRoaXMpKX19O3ZhciBPdGE7T3RhPWZ1bmN0aW9uKCl7Xy5KUGF8fChfLkpQYT1uZXcgXy5LUGEpO3JldHVybiBfLkpQYX07Xy5LUGE9Y2xhc3N7Y29uc3RydWN0b3IoYT17Zmx1c2goKXt9fSl7bmV3IF8uSVBhKGEpfWxvZygpe315eChhKXtPdGEoKS5sb2coIkpTX1JVTlRJTUVfRVJST1JfQ09VTlQiKTsoYT09bnVsbD8wOmEuaW5jbHVkZXMoIkRlcGVuZGVuY3kgb24gdW5rbm93biBtb2R1bGUiKSkmJk90YSgpLmxvZygiTU9EVUxFX0xPQURfUkVRVUVTVFNfQ09VTlQiLCExKX19O18uYnRhPW5ldyBNYXA7dmFyIElnPWZ1bmN0aW9uKGEpe2lmKGE9YS5rYS5laWEpcmV0dXJue25hbWU6YVswXSxlbGVtZW50OmFbMV19fSxMUGE9Y2xhc3N7Y29uc3RydWN0b3IoYSl7dGhpcy5rYT1hfWdldEV2ZW50KCl7cmV0dXJuIHRoaXMua2EuZXZlbnR9Z2V0Q29udGFpbmVyKCl7cmV0dXJuIHRoaXMua2EuZWljfUdxKCl7cmV0dXJuIHRoaXMua2EudGltZVN0YW1wfUZkYihhKXt0aGlzLmthLmVpcj1hfWNsb25lKCl7cmV0dXJuIG5ldyBMUGEoZHRhKHRoaXMua2EpKX19O3ZhciBpdGEsTlBhLE9QYSxrdGE7aXRhPW51bGw7Xy5NUGE9bnVsbDtOUGE9Xy5lYS5wYXJlbnRXaW5kb3c/Xy5lYS5wYXJlbnRXaW5kb3c6Xy5lYTtOUGEuX19ncj9PUGE9TlBhLl9fZ3I6KE9QYT17ZzpuZXcgTWFwLGg6e319LE5QYS5fX2dyPU9QYSk7KHtnOl8uZ3RhLGg6a3RhfT1PUGEpO3ZhciBBdGE9S0dhPzIwMDowLHRQYT1rR2E/NTpsR2E/NzoxMCxQUGE9SEdhPzU6MyxRUGE9SEdhPzU6MyxSUGE9ITEsU1BhPVtdLHV0YT0hMSxUUGEsa05hLFhQYSxaUGEsYlFhLGNRYSxXUGEsVlBhLFVQYSwkUGEsYVFhLGRRYSxlUWEsaVFhLGpRYSxnUWEsaFFhLG1RYSxuUWEsb1FhLHBRYSxrUWEsbFFhLHNRYSx0UWEsZlFhLHFRYSxyUWEsdlFhLHVRYSxZUGEseVFhLHpRYTsoKFRQYT1nb29nbGUpPT1udWxsPzA6VFBhLmNhZnQpJiZnb29nbGUuY2FmdCgoKT0+e3V0YT0hMH0pOwprTmE9ZnVuY3Rpb24oYSxiLHtOUTpjfT17fSl7aWYoYylpZihjIGluc3RhbmNlb2YgTWFwKXthLk5RfHwoYS5OUT1uZXcgTWFwKTt2YXIgZD1hLk5RO2ZvcihsZXQgW2YsZ11vZiBjLmVudHJpZXMoKSl7Yz1mO2xldCBoPWcsaz1kLmdldChjKTtrfHwoaz1uZXcgU2V0LGQuc2V0KGMsaykpO2Zvcih2YXIgZSBvZiBoKWsuYWRkKGUpfX1lbHNlIGZvcihkIGluIGEuTlF8fChhLk5RPXt9KSxlPWEuTlEsYylPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoYyxkKSYmKGVbZF09T2JqZWN0LmFzc2lnbih7fSxlW2RdfHx7fSxjW2RdKSk7YS5BYisrO2I9Yi5maWx0ZXIoZj0+IS9eKD86c3l8ZW0pWzAtOWEtel17MCw0fSQvLnRlc3QoZikpO2lmKGEub2EoKSYmakdhKXtmb3IobGV0IGYgb2YgYilhLlFiLmFkZChmKTtVUGEoKT9hLlBhfHwoYS5QYT0oMCxfLlZMYSkoKCk9PntWUGEoYSl9LHt0aW1lb3V0OjEwMH0pKTphLlBhfHwoYS5QYT0oMCxfLmpvKSgoKT0+e1ZQYShhKX0sCjEpKX1lbHNlIFdQYShhLGIpfTtYUGE9ZnVuY3Rpb24oYSxiLGMsZCxlKXtmb3IobGV0IGYgb2YgYil7Yj1hLkFhLldDKGYpO2lmKGUmJiFlKGIpKWNvbnRpbnVlO2xldCBnPWIuZUYoKXx8W107aWYoZCl7bGV0IGg9W107aWYoZCBpbnN0YW5jZW9mIE1hcCl7bGV0IGs9ZC5nZXQoZik7ayYmKGg9QXJyYXkuZnJvbShrKSl9ZWxzZSBkW2ZdJiYoaD1PYmplY3Qua2V5cyhkW2ZdKSk7Zz1nLmNvbmNhdChoKX1pZihhLlphLmhhcyhmKSlmb3IobGV0IGggb2YgYS5aYS5nZXQoZikpZy5wdXNoKGgpO1hQYShhLGcsYyxkLGUpO2MoYil9fTtaUGE9ZnVuY3Rpb24oYSxiKXtZUGEoYSxiKTtiPWIucXVlcnlTZWxlY3RvckFsbCgiW2pzbW9kZWxdW2pzY29udHJvbGxlcl0iKTtmb3IobGV0IGMgb2YgYilZUGEoYSxjKX07CmJRYT1mdW5jdGlvbihhKXthLmtkPT1udWxsJiYoYS5rZD0kUGEoYSkudGhlbihiPT57YiYmYi5oYXNPd25Qcm9wZXJ0eSgibW9kdWxlR3JhcGgiKSYmKGEuQWEudGRiKGIubW9kdWxlR3JhcGgpLFhQYShhLEFycmF5LmZyb20oYS5HYSksYz0+e2Eud2EuYWRkKGMuZ2V0SWQoKSl9LGEuTlEsYz0+IWEud2EuaGFzKGMuZ2V0SWQoKSkpLFhQYShhLEFycmF5LmZyb20oYS5SYSksYz0+e2EubmIuYWRkKGMuZ2V0SWQoKSl9LGEuTlEsYz0+IWEubmIuaGFzKGMuZ2V0SWQoKSkpLGEuTmE9ITApO2ImJmIuaGFzT3duUHJvcGVydHkoImNodW5rVHlwZXMiKT8oYVFhKGEsYi5jaHVua1R5cGVzKSxhLk5hJiZhLkZiJiZhLmJhc2VDc3NVcmwmJihhLlBiPSEwKSk6YS5rYSYmKDAsXy5qbykoKCk9PnthJiZhLmthJiZwUGEoYS5rYSl9LDdFMyl9KSl9OwpjUWE9ZnVuY3Rpb24oYSxiKXt2YXIgYz1fLnFGYShfLlNlKGIpKSxkLGU9KGQ9Xy5TZShiKS5vYS54anMpPT1udWxsP3ZvaWQgMDpkLnNwbGl0KCJzIilbMV07Yz1jLmZpbHRlcihnPT4hL14oPzpzeXxlbSlbMC05YS16XXswLDR9JC8udGVzdChnKSk7ZD1bXTtpZihhLk9iPD0xKXt2YXIgZj1bLi4ub0ZhKGEuQmEpLC4uLl8ucUZhKGEuQmEpXTtkLnB1c2goYGxpZHM9JHtmLmpvaW4oIiwiKX1gKTtkLnB1c2goYG5wcD0ke2EuRWEubGVuZ3RoLTF9YCk7aWYoYS5FYSYmYS5FYS5sZW5ndGg+MSlmb3IoZC5wdXNoKC4uLnp0YShhLkVhWzBdLCJwMSIpKSxmPTE7ZjxhLkVhLmxlbmd0aDtmKyspZC5wdXNoKC4uLnp0YShhLkVhW2ZdLGBwcCR7Zn1gKSk7ZWxzZSBkLnB1c2goLi4uenRhKGEuUGMsInAxIikpfWY9YS5BYj09PTE/MTowO2QucHVzaChgc249JHtnb29nbGUuc259YCk7ZC5wdXNoKGBwdj0ke2Z9YCk7ZC5wdXNoKGBpZHM9JHtjLmpvaW4oIiwiKX1gKTtkLnB1c2goYGFtPSR7Xy5UZShhLkJhLAoiYW0iKX1gKTtkLnB1c2goYGs9JHtfLkxtYShhLkJhKX1gKTtkLnB1c2goYG5zcmw9JHthLk9ifWApO2QucHVzaChgcz0ke2V9YCk7ZC5wdXNoKC4uLnp0YShiKSk7Z29vZ2xlLmxvZyYmZ29vZ2xlLmxvZygicHBtIixgJiR7ZC5qb2luKCImIil9YCl9O1dQYT1hc3luYyBmdW5jdGlvbihhLGIpe3ZhciBjPSgwLF8uTWYpKCksZD1jKCk7Yz1jKDEpO3RyeXtpZihhLkljJiYhYS5DYyl7dHJ5e2MoYXdhaXQgZChhLkljKSl9Y2F0Y2goZil7YygpLF8uVmUoZil9YS5DYz0hMDthLkdhPW5ldyBTZXQoWy4uLmEuR2FdLmZpbHRlcihmPT5hLkFhLldDKGYpLmlzTG9hZGVkKCkpKX1iPWIuZmlsdGVyKGY9PmEub2EoKT8hYS53YS5oYXMoZikmJiFhLkdhLmhhcyhmKTohYS5HYS5oYXMoZikpO2xldCBlPWRRYShhLGIpO2VRYShhLGUsYS5HYSk7Zm9yKGxldCBmIG9mIGUpYS5HYS5hZGQoZiksYS53YS5hZGQoZik7aEdhfHxiUWEoYSl9ZmluYWxseXtkKCl9fTsKVlBhPWZ1bmN0aW9uKGEpe2EuUGE9bnVsbDt2YXIgYj1BcnJheS5mcm9tKGEuUWIpO2EuUWIuY2xlYXIoKTtiLmxlbmd0aD4wJiZXUGEoYSxiKX07VVBhPWZ1bmN0aW9uKCl7dmFyIGE9Xy5kZyhkb2N1bWVudCk7aWYoYSl7bGV0IGI7YT0hKChiPWEuQ3ZiLmthKSE9bnVsbCYmYi5sZW5ndGgpfWVsc2UgYT0hMDtyZXR1cm4gYX07CiRQYT1mdW5jdGlvbihhKXtpZighXy5lYS5mZXRjaClyZXR1cm4gUHJvbWlzZS5yZXNvbHZlKG51bGwpO3ZhciBiPWEuWGIuY2xvbmUoKTtkZWxldGUgYi5rYS5tO2RlbGV0ZSBiLmthLmV4bTtkZWxldGUgYi5rYS5lZDtfLmdtKGIsImRnIixudWxsKTtfLmdtKGIsIm1kIixhLlVjKTtyZXR1cm4gZlFhKGEsYi50b1N0cmluZygpLEhHYT81OjEpLnRoZW4oYz0+Yy5qc29uKCkuY2F0Y2goKCk9PnthLmthJiYoMCxfLmpvKSgoKT0+e2EmJmEua2EmJnBQYShhLmthKX0sN0UzKX0pKS5jYXRjaCgoKT0+e2Eua2EmJigwLF8uam8pKCgpPT57YSYmYS5rYSYmcFBhKGEua2EpfSw3RTMpfSl9OwphUWE9ZnVuY3Rpb24oYSxiKXt0cnl7dmFyIGM9YS5BYS50VGIoKX1jYXRjaChlKXtfLlZlKGUpfWlmKGMhPW51bGwmJmMubGVuZ3RoPjApe2EuS2E9bmV3IFNldDt2YXIgZD1bXTtmb3IobGV0IGU9MDtlPGIubGVuZ3RoO2UrKyliW2VdPT09IjIiPyhhLkthLmFkZChjW2VdKSxkLnB1c2goY1tlXSkpOmJbZV09PT0iMyImJmEuS2EuYWRkKGNbZV0pO2lmKGEua2Epe2E9YS5rYTtiR2EmJmNvbnNvbGUubG9nKCJyZWdpc3RlckNzc09ubHlDaHVua3M6IixkKTtmb3IobGV0IGUgb2YgZClpZihhLlphLmFkZChlKSxhLm9hLmFkZChlKSxkPWEuQWEuZ2V0KGUpKWQoKSxhLkFhLmRlbGV0ZShlKSxhLkthLmRlbGV0ZShlKX19fTtkUWE9ZnVuY3Rpb24oYSxiKXtpZighYS5OYSlyZXR1cm4gYjt2YXIgYz1bXTtYUGEoYSxiLGQ9PnthLndhLmFkZChkLmdldElkKCkpO2MucHVzaChkLmdldElkKCkpfSxhLk5RLGQ9PiFhLndhLmhhcyhkLmdldElkKCkpJiYhZC5pc0xvYWRlZCgpKTtyZXR1cm4gY307CmVRYT1mdW5jdGlvbihhLGIsYyl7dmFyIGQ9IShnb29nbGUueGpzdXMmJmdvb2dsZS54anN1cy5sZW5ndGg+MCksZT1hLmhjP1VzYShiLGEuaGMsaD0+YS5BYS5XQyhoKS5lRigpKTp2b2lkIDAsZixnPWEuSWE7aWYoYS5QYil7bGV0IGg9Z1FhKGEsYixMR2E/dm9pZCAwOmUpO05HYT9mPXZvaWQgMDpmPWg7Zz1hLkZifWU/KGUuZm9yRWFjaChoPT57aD1oUWEoYSxoLGMsITEsZyxhLm9hKCk/dm9pZCAwOmYpO2Eub2EoKXx8KGY9aCk7aCE9PXZvaWQgMCYmKGlRYShhKSxoLnRoZW4oKCk9PntqUWEoYSl9KSl9KSxhLm9hKCkmJlByb21pc2UucmVzb2x2ZSgpKTooYj1oUWEoYSxiLGMsZCxnLGEub2EoKT92b2lkIDA6ZiksYiE9PXZvaWQgMCYmKGlRYShhKSxiLnRoZW4oKCk9PntqUWEoYSl9KSkpfTtpUWE9ZnVuY3Rpb24oYSl7YS5TYSgpfHxhLkliKyt9O2pRYT1mdW5jdGlvbihhKXthLlNhKCl8fChhLkliLS0sYS5JYj09PTAmJihhLk9hLmNsZWFyKCksYS5KYi5jbGVhcigpKSl9OwpnUWE9ZnVuY3Rpb24oYSxiLGMpe2lmKE9HYSl7dmFyIGQ9bmV3IFNldDtpZihjKWZvcih2YXIgZSBvZiBjKXt2YXIgZj1rUWEoYSxlKTtmb3IobGV0IGcgb2YgZilkLmFkZChnKX1lbHNle2U9a1FhKGEsYik7Zm9yKGYgb2YgZSlkLmFkZChmKX1pZihkLnNpemU9PT0wKXJldHVybiBQcm9taXNlLnJlc29sdmUoKTtlPVtdO2ZvcihsZXQgZyBvZiBkKWUucHVzaChsUWEoYSxbZ10pKTtyZXR1cm4gUHJvbWlzZS5hbGwoZSl9aWYoYylyZXR1cm4gUHJvbWlzZS5hbGwoYy5tYXAoZz0+e2c9a1FhKGEsZyk7cmV0dXJuIGcubGVuZ3RoPjA/bFFhKGEsZyk6UHJvbWlzZS5yZXNvbHZlKCl9KSk7ZD1rUWEoYSxiKTtyZXR1cm4gZC5sZW5ndGg9PT0wP1Byb21pc2UucmVzb2x2ZSgpOmxRYShhLGQpfTsKaFFhPWZ1bmN0aW9uKGEsYixjLGQ9ITAsZSxmKXtpZihLR2EmJmIubGVuZ3RoPkF0YSl7bGV0IGc9ZjtCdGEoYixoPT57dmFyIGs9YS5vYSgpP3ZvaWQgMDpnO3JldHVybiBnPW1RYShhLGgsYyxkLGUsayl9KTtyZXR1cm4gZ31yZXR1cm4gbVFhKGEsYixjLGQsZSxhLm9hKCk/dm9pZCAwOmYpfTttUWE9ZnVuY3Rpb24oYSxiLGMsZD0hMCxlLGYpe2M9blFhKGEsYixjLGQsZSxhLm9hKCk/dm9pZCAwOmYpO2lmKCFhLm9hKCkpe2MudGhlbigoKT0+e1hPYShiKX0pO2ZvcihsZXQgZyBvZiBiKWMmJmEuSmIuc2V0KGcsYyl9cmV0dXJuIGN9OwpuUWE9ZnVuY3Rpb24oYSxiLGMsZD0hMCxlLGYpe2M9b1FhKGEsYixjLGUpO2lmKE5HYSYmYS5QYil7dmFyIGc9W107ZiYmZy5wdXNoKGYpO2Zvcih2YXIgaCBvZiBiKXt2YXIgaz1hLk9hLmdldChoKTtrJiZnLnB1c2goayl9Zy5sZW5ndGg+MD9mPVByb21pc2UuYWxsKGcpOmY9dm9pZCAwfWVsc2UgaWYoIWEub2EoKSl7aD1uZXcgU2V0O2YmJmguYWRkKGYpO2ZvcihnIG9mIGIpeyhiPWEuT2EuZ2V0KGcpKSYmaC5hZGQoYik7Yj1hLkFhLldDKGcpLmVGKCk7Zm9yKGsgb2YgYikoYj1hLkpiLmdldChrKSkmJmguYWRkKGIpfWguc2l6ZSYmKGY9UHJvbWlzZS5hbGwoaCkpfWY9YS5vYSgpP3ZvaWQgMDpmO2Eub2EoKSYmakdhJiYoVVBhKCk/KGc9YS5yYixnLm9hPTMsclBhKGcpKTooZz1hLnJiLGcub2E9dFBhLHJQYShnKSkpO3JldHVybiBwUWEoYSxjLGQsZil9OwpvUWE9ZnVuY3Rpb24oYSxiLGMsZD1hLklhLGU9ITEpe2Q9ZC5jbG9uZSgpO2EuTmE/KGM9Yi5maWx0ZXIoZj0+YS5uYi5oYXMoZikpLmxlbmd0aD09PTAsZT9jJiZuRmEoZCxbXSk6KG5GYShkLFtdKSxjJiZfLnBGYShkLFtdKSksXy5zRmEoZCx7fSksXy5nbShkLCJkIiwiMCIpLGQub2EueGpzPSJzIisoYS5LYT8iNCI6IjMiKSk6KFZzYShiLnNvcnQoKSksbkZhKGQsQXJyYXkuZnJvbShjKSksXy5nbShkLCJkIiwiMSIpLGEuTlEmJiFlJiZfLnNGYShkLGEuTlEpLGEuQWImJihkLm9hLnhqcz0icyIrKGEuQWI9PT0xPyIxIjoiMiIpKSk7SkZhP18uZ20oZCwiYnItZCIsIjEiKTpJRmEmJl8uZ20oZCwiYnItZCIsIjAiKTtfLm1GYShkLGIpO18uZ20oZCwiZWQiLCIxIik7Xy5nbShkLCJpY2hjIixQR2E/IjEiOm51bGwpO3JldHVybiBkLnRvU3RyaW5nKCl9O3BRYT1mdW5jdGlvbihhLGIsYyxkKXtyZXR1cm4gTUdhJiZ1dGE/cVFhKGEsYixkKTpzUGEoYS5yYiwoKT0+clFhKGEsYixjLGQpKX07CmtRYT1mdW5jdGlvbihhLGIpe3JldHVybiBhLkthP2IuZmlsdGVyKGM9PmEuS2EuaGFzKGMpJiYhYS5uYi5oYXMoYykpOmJ9O2xRYT1mdW5jdGlvbihhLGIpe3JldHVybiBLR2EmJmIubGVuZ3RoPkF0YT9CdGEoYixjPT5zUWEoYSxjKSk6c1FhKGEsYil9O3NRYT1mdW5jdGlvbihhLGIpe3ZhciBjPW9RYShhLGIsbmV3IFNldCxhLmJhc2VDc3NVcmwsITApO2M9dFFhKGEsYyk7Zm9yKGxldCBkIG9mIGIpYS5PYS5zZXQoZCxjKTtyZXR1cm4gY307dFFhPWZ1bmN0aW9uKGEsYil7dmFyIGM9U0dhP1FQYTowO3JldHVybiBmUWEoYSxiLGMpLnRoZW4oZD0+ZC50ZXh0KCkudGhlbihlPT57ZS5sZW5ndGgmJl9GX2luc3RhbGxDc3MoZSl9KSkuY2F0Y2goZD0+e18uVmUoRXJyb3IoIkJjYCIrYysiYCIrZC5tZXNzYWdlKSx7bGV2ZWw6M30pfSl9OwpmUWE9ZnVuY3Rpb24oYSxiLGMsZD0wLGU9e30pe3JldHVybiB1UWEoYSxiLGUpLmNhdGNoKGY9PntpZihmIGluc3RhbmNlb2YgVHlwZUVycm9yJiZkPGMpcmV0dXJuIG5ldyBQcm9taXNlKChnLGgpPT57KDAsXy5qbykoKCk9PntmUWEoYSxiLGMsZCsxLE9iamVjdC5hc3NpZ24oe30sZSx7cHJpb3JpdHk6ImxvdyJ9KSkudGhlbihnLGgpfSxIR2E/NDAwKjIqKmQrTWF0aC5yYW5kb20oKSo0MDA6MCl9KTt2UWEoYik7dGhyb3cgZjt9KX07CnFRYT1hc3luYyBmdW5jdGlvbihhLGIsYyl7dmFyIGQ9KDAsXy5NZikoKSxlPWQoKTtkPWQoMSk7dHJ5e2xldCBmPWZRYShhLGIsVEdhP1BQYTowKSxnLGg9IiI7dHJ5e2c9ZChhd2FpdCBlKGYpKTtpZighZy5vaylyZXR1cm4gdlFhKGIpLF8uVmUoRXJyb3IoIkNjYCIrZy5zdGF0dXMpLHtsZXZlbDozfSksITE7aD1kKGF3YWl0IGUoZy50ZXh0KCkpKX1jYXRjaChrKXtyZXR1cm4gZCgpLE1hdGgucmFuZG9tKCk8LjAxJiZfLlZlKGsse0RmOntyZXNwb25zZToiZXJyIn0sbGV2ZWw6M30pLCExfWlmKGMpdHJ5e2QoYXdhaXQgZShjKSl9Y2F0Y2goayl7cmV0dXJuIGQoKSwhMX10cnl7aWYoVUdhKV8uVGphKHdpbmRvdyxfLnJ0YShoKSk7ZWxzZXtsZXQgaz1fLlNtKCJTQ1JJUFQiKTtfLklqYShrLF8ucnRhKGgpKTtkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGspfX1jYXRjaChrKXtyZXR1cm4gXy5WZShFcnJvcigiRGNgIitrLm1lc3NhZ2UpKSwhMX1hLlN5PF8ud1FhJiZjUWEoYSxiKTsKcmV0dXJuITB9ZmluYWxseXtlKCl9fTsKclFhPWFzeW5jIGZ1bmN0aW9uKGEsYixjLGQpe3JldHVybiBuZXcgUHJvbWlzZShhc3luYyhlLGYpPT57dmFyIGc9KDAsXy5NZikoKSxoPWcoKTtnPWcoMSk7dHJ5e2xldCBrPSExO2lmKGQpe2xldCBwPV8uU20oIkxJTksiKTtfLk9qYShwLGIsInByZWxvYWQiKTtwLmFzPSJzY3JpcHQiO3AuZmV0Y2hQcmlvcml0eT12dGEoKTtfLmRuYShwKTtrPSEwO3RyeXtnKGF3YWl0IGgoZCkpfWNhdGNoKHIpe2coKTtlKCExKTtyZXR1cm59fWxldCBtPTAsbj0oKT0+e2lmKG0+PVBQYSlUR2EmJih2UWEoYiksZihuZXcgXy5IS2EoIkZhaWxlZCB0byBsb2FkIHZpYSBzY3JpcHQuIikpKTtlbHNle20rKzt2YXIgcD1fLlNtKCJTQ1JJUFQiKTtrfHwocC5mZXRjaFByaW9yaXR5PXZ0YShtPjEpKTtfLmRkKHAsXy5zdGEoYikpO3AuYXN5bmM9ISFjO3ZhciByPSgpPT57T3RhKCkubG9nKCJNT0RVTEVfTE9BRF9SRVFVRVNUU19DT1VOVCIsITApO2UoITApO2EuT2IrKzthLlN5PF8ud1FhJiZjUWEoYSxiKX07CmEuU2EoKT8ocC5kb25lPXIscC5vbmxvYWQ9KCk9PntpZihhLmthKXt2YXIgeD1hLmthO3AuY2h1bmtTY2hlZHVsZXJJbml0ZWR8fChwLmNodW5rU2NoZWR1bGVySW5pdGVkPSEwLHAuX3A9MCxtUGEoeCxwKSl9fSk6cC5vbmxvYWQ9cjtwLm9uZXJyb3I9KCk9PntUR2E/KDAsXy5qbykobixIR2E/NDAwKjIqKm0rTWF0aC5yYW5kb20oKSo0MDA6MCk6dlFhKGIpfTtnb29nbGUuYXM/Z29vZ2xlLmFzKHApOl8uZG5hKHApfX07bigpfWZpbmFsbHl7aCgpfX0pfTt2UWE9ZnVuY3Rpb24oYSl7UlBhfHwoXy5jdGEoImpzZmFpbCIsKCk9PlNQYS5qb2luKCIsIikpLFJQYT0hMCk7U1BhLnB1c2goYSl9O3VRYT1mdW5jdGlvbihhLGIsYz17fSl7cmV0dXJuIHNQYShhLnJiLCgpPT5fLnhRYShiLE9iamVjdC5hc3NpZ24oe30se2NyZWRlbnRpYWxzOiJpbmNsdWRlIixwcmlvcml0eTp2dGEoKX0sYykpKX07CllQYT1mdW5jdGlvbihhLGIpe2lmKCFfLmh0YShiKSl7dmFyIGM9Yi5nZXRBdHRyaWJ1dGUoImpzY29udHJvbGxlciIpO2lmKGMmJihjPWMuc3BsaXQoIiMiKVswXSkpe3ZhciBkPV8uZ2coYiwidnBsb2FkIik7ZCYmZG9jdW1lbnQucXVlcnlTZWxlY3RvcihgW2pzY29udHJvbGxlcj0ke2R9XWApJiZ5UWEoYSxjLGQpO2lmKGI9Yi5nZXRBdHRyaWJ1dGUoImpzbW9kZWwiKSl7Yj1fLk9zYShiKTtmb3IobGV0IGUgb2YgYil5UWEoYSxjLGUpfX19fTt5UWE9ZnVuY3Rpb24oYSxiLGMpe2lmKCFhLndhLmhhcyhiKSYmIWEud2EuaGFzKGMpKXt2YXIgZD0hMTtYUGEoYSxbYl0sZj0+e2YuZ2V0SWQoKT09PWMmJihkPSEwKX0sYS5OUSwoKT0+IWQpO2lmKCFkKXt2YXIgZT0hMTtYUGEoYSxbY10sZj0+e2YuZ2V0SWQoKT09PWImJihlPSEwKX0sYS5OUSwoKT0+IWUpO2V8fChhLlphLmhhcyhiKXx8YS5aYS5zZXQoYixbXSksYS5aYS5nZXQoYikucHVzaChjKSl9fX07CnpRYT1jbGFzc3tjb25zdHJ1Y3Rvcigpe3RoaXMuSWI9MDt0aGlzLk9hPW5ldyBNYXA7dGhpcy5KYj1uZXcgTWFwO3RoaXMua2E9bnVsbDt0aGlzLlFiPW5ldyBTZXQ7dGhpcy5QYT1udWxsO3RoaXMuQ2M9ITE7dGhpcy5aYT1uZXcgTWFwO3RoaXMud2Q9ITA7dGhpcy5OYT0hMTt0aGlzLmtkPW51bGw7dGhpcy5QYj0hMTt0aGlzLk9iPXRoaXMuQWI9MDt0aGlzLkthPW51bGw7dGhpcy5VYz1SR2E/IjE4IjoiMTAiO3RoaXMuU2E9Xy5hZigoKT0+e3ZhciBnO3JldHVybigoZz10aGlzLkZiKT09bnVsbD92b2lkIDA6Xy5UZShnLCJjY2IiKSk9PT0ibG9hZGVkX2hfMCJ9KTt0aGlzLm9hPV8uYWYoKCk9PnRoaXMuU2EoKSYmRXphKTtnb29nbGUueGpzdXx8Xy5WZShFcnJvcigiemMiKSx7bGV2ZWw6MX0pO3RoaXMucmI9bmV3IHVQYTt0aGlzLkljPXh0YSgpO3RoaXMuRWE9Z29vZ2xlLnhqc3VzJiZnb29nbGUueGpzdXMubGVuZ3RoPjA/W2dvb2dsZS54anN1LC4uLmdvb2dsZS54anN1c106W2dvb2dsZS54anN1XTsKdGhpcy5YYj1fLlNlKHRoaXMuRWFbMF0pO3ZhciBhPXJGYSh0aGlzLlhiKTtpZihhPT09IjEifHxhPT09IjMifHxhPT09IjQiKXRoaXMuTmE9ITAsdGhpcy5VYz0iMiI7dmFyIGI7KChiPWdvb2dsZS54anMpPT1udWxsPzA6Yi5iYXNlanMpP3RoaXMuRmI9Xy5TZShnb29nbGUueGpzLmJhc2Vqcyk6Xy5WZShFcnJvcigiQWMiKSx7bGV2ZWw6SUdhPzE6M30pO3RoaXMuUGM9dGhpcy5FYVt0aGlzLkVhLmxlbmd0aC0xXTt0aGlzLkJhPV8uU2UodGhpcy5QYyk7dGhpcy5BYT1fLmhjKCk7dGhpcy5OYSYmS0dhJiYodGhpcy5oYz1Tc2EoZz0+IXRoaXMuQWEud2EuaGFzKGcpfHx0aGlzLkFhLldDKGcpLmlzTG9hZGVkKCkpKTt0aGlzLkdhPW5ldyBTZXQoWy4uLl8ucUZhKHRoaXMuQmEpLC4uLm9GYSh0aGlzLkJhKV0pO3RoaXMud2E9bmV3IFNldDt0aGlzLlJhPW5ldyBTZXQoWy4uLl8ua3NhKHRoaXMuQmEpXSk7dGhpcy5uYj1uZXcgU2V0O3RoaXMuWGk9bnVsbDsobUdhfHxFemEpJiZYUGEodGhpcywKQXJyYXkuZnJvbSh0aGlzLkdhKSxnPT57dGhpcy53YS5hZGQoZy5nZXRJZCgpKX0sdGhpcy5OUSxnPT4hdGhpcy53YS5oYXMoZy5nZXRJZCgpKSk7bUdhJiYoWlBhKHRoaXMsZG9jdW1lbnQuYm9keSksdGhpcy5YaT1uZXcgTXV0YXRpb25PYnNlcnZlcihnPT57Zm9yKGxldCBoIG9mIGcpaWYoaC50eXBlPT09ImNoaWxkTGlzdCIpZm9yKGxldCBrIG9mIGguYWRkZWROb2RlcylrLm5vZGVUeXBlPT09Tm9kZS5FTEVNRU5UX05PREUmJlpQYSh0aGlzLGspfSksdGhpcy5YaS5vYnNlcnZlKGRvY3VtZW50LmJvZHkse2NoaWxkTGlzdDohMCxzdWJ0cmVlOiEwfSkpO3ZhciBjO3RoaXMuSWE9KChjPWdvb2dsZS54anMpPT1udWxsPzA6Yy5iYXNlY29tYik/Xy5TZShnb29nbGUueGpzLmJhc2Vjb21iKTp0aGlzLkJhLmNsb25lKCk7dmFyIGQsZTt0aGlzLlJhPW5ldyBTZXQoWy4uLnRoaXMuUmEsLi4uXy5rc2EodGhpcy5JYSksLi4uKChlPShkPWdvb2dsZS54anMpPT1udWxsP3ZvaWQgMDpkLmV4Y20pIT0KbnVsbD9lOltdKV0pO18ucEZhKHRoaXMuSWEsQXJyYXkuZnJvbSh0aGlzLlJhKSk7Xy5nbSh0aGlzLklhLCJ1amciLCIxIik7dmFyIGY7Xy5lYS5mZXRjaCYmdHlwZW9mIF9GX2luc3RhbGxDc3M9PT0iZnVuY3Rpb24iJiYoKGY9Z29vZ2xlLnhqcyk9PW51bGw/MDpmLmJhc2Vjc3MpJiYodGhpcy5iYXNlQ3NzVXJsPV8uU2UoZ29vZ2xlLnhqcy5iYXNlY3NzKSxuRmEodGhpcy5iYXNlQ3NzVXJsLEFycmF5LmZyb20odGhpcy5SYSkpKTt0aGlzLlN5PU1hdGgucmFuZG9tKCk7RXphJiZ0aGlzLlNhKCkmJih0aGlzLmthPW5ldyBxUGEodGhpcy5BYSx0aGlzLk9hLCgpPT50aGlzLk5RKSk7aEdhJiZiUWEodGhpcyl9fTtfLndRYT0uMDE7Xy54UWE9ZnVuY3Rpb24oYSxiKXtyZXR1cm4gZmV0Y2goYSxiKX07dmFyIEFRYT1jbGFzcyBleHRlbmRzIF8ubHtjb25zdHJ1Y3RvcihhKXtzdXBlcihhKX1nZXROYW1lKCl7cmV0dXJuIF8udCh0aGlzLDEpfUVlKGEpe3JldHVybiBfLmZoKHRoaXMsMSxhKX1kaCgpe3JldHVybiBfLnBoKHRoaXMsMSl9QmgoKXtyZXR1cm4gXy50KHRoaXMsMil9fTt2YXIgRHRhPSgpPT57dmFyIGE9bmV3IE1hcDthLnNldCgxLG5ldyBBUWEoWyJwZSIsIlByaW1hcnkgWEpTIEV4ZWN1dGlvbiJdKSk7YS5zZXQoMixuZXcgQVFhKFsic2UiLCJTZWNvbmRhcnkgWEpTIEV4ZWN1dGlvbiJdKSk7cmV0dXJuIGF9O3ZhciBGdGE9Y2xhc3MgZXh0ZW5kcyBfLmx7Y29uc3RydWN0b3IoYSl7c3VwZXIoYSl9Z2V0TmFtZSgpe3JldHVybiBfLnQodGhpcywxKX1FZShhKXtyZXR1cm4gXy5maCh0aGlzLDEsYSl9ZGgoKXtyZXR1cm4gXy5waCh0aGlzLDEpfX07dmFyIEh0YT1jbGFzcyBleHRlbmRzIF8ubHtjb25zdHJ1Y3RvcihhKXtzdXBlcihhKX1HcSgpe3JldHVybiBfLk5qKHRoaXMsMil9fTt2YXIgSXRhPWNsYXNzIGV4dGVuZHMgXy5se2NvbnN0cnVjdG9yKGEpe3N1cGVyKGEpfX07dmFyIEV0YT1jbGFzcyBleHRlbmRzIF8ubHtjb25zdHJ1Y3RvcihhKXtzdXBlcihhKX1nZXRSZXNvdXJjZXMoYSl7cmV0dXJuIF8uU2oodGhpcywyLGEpfX07dmFyIEp0YT1fLlliKFswLF8uRixbMCxfLkUsXy5pbCwtMl0sXy5FbCxfLkYsWzAsXy5pbCxfLllrXSxfLkYsWzAsXy5pbCwtMV1dKTt2YXIgQlFhPWNsYXNzIGV4dGVuZHMgbm97V0MoYSl7dGhpcy53YS5oYXMoYSl8fHRoaXMud2Euc2V0KGEsbmV3IFBpLmVEYShbXSxhKSk7cmV0dXJuIHRoaXMud2EuZ2V0KGEpfX07dmFyIFh0YT0hMSxidWE9UHJvbWlzZS5yZXNvbHZlKCksUnRhLFN0YSxVdGEsV3RhO18uWGhhKG5ldyBCUWEpO1J0YT1fLmFmKCgpPT5uZXcgelFhKTtfLkx0YT1fLmFmKCgpPT57dmFyIGE9Xy5oYygpO2EuYTdiKCEwKTt0dGEmJmdvb2dsZS5jYWZ0JiZnb29nbGUuY2FmdCgoKT0+e2EuZDdiKCEwKX0pO2NHYSYmKGEubG9hZCgibHNqVm1jIiksYS5sb2FkKCJieWZUT2IiKSxhLmxvYWQoInNnWTZaYiIpKTtaTWEoYSk7cmV0dXJuIGF9KTtTdGE9WyJtc216SGYiLCJ3UXBUdWMiLCJUeFpXY2MiXTtVdGE9e0tBZDpmdW5jdGlvbigpe3JldHVybiBBcnJheS5mcm9tKE9oYS52YWx1ZXMoKSl9LHFFYzpfLnJoLHhGZDprb2F9O1d0YT1PRmE7Xy5MaSgiZ29vZ2xlLmxvYWQiLGZ1bmN0aW9uKGEsYj0oKT0+e30sYyl7Xy5OdGEoYSk/KGI9bEphKExzYSxiKSxxTmEoKDAsXy5MdGEpKCksYSxiLGMhPT12b2lkIDA/Yzp2b2lkIDApKTpUdGEoW2FdKX0pO18uTGkoImdvb2dsZS5sb2FkQWxsIixfLmR1YSk7Xy5Mbz17fTtfLm91YT1jbGFzcyBleHRlbmRzIF8uSE5he2NvbnN0cnVjdG9yKGEpe3N1cGVyKCJObyB2YWxpZCBtb2RlbCBmb3IgIitfLnFmKGEpKTt0aGlzLmtleT1hfX07dmFyIENRYT0hMSxEUWE9MDt2YXIgRVFhLEZRYSxHUWEsSVFhLE1RYSxOUWEsUVFhLHd1YSxIUWEsT1FhLFBRYSxWUWEsUlFhLFRRYSxTUWEsTFFhLEtRYTtFUWE9MDtGUWE9ITE7Xy5Nbz1mdW5jdGlvbihhKXtyZXR1cm4gXy55aChhKS5kaXJ0eSgpfTtfLnloPWZ1bmN0aW9uKGEpe3JldHVybiBfLldkKGEpLl9fd2l6bWFuYWdlcn07R1FhPWZ1bmN0aW9uKGEsYixjKXtpZihhLmlzRGlzcG9zZWQoKSlyZXR1cm4gXy5IaChFcnJvcigpKTtpZighRlFhJiZhLkFhKXJldHVybiBhLkFhLnByb21pc2UudGhlbigoKT0+R1FhKGEsYixjKSk7dmFyIGQ9YHRyaWdnZXJSZW5kZXJfJHtFUWF9YDtsdWEoKSYmKHdpbmRvdy5wZXJmb3JtYW5jZS5tYXJrKGQpLEVRYSsrKTtyZXR1cm4gXy5yZyhIUWEoYSxjKSwoKT0+e2x1YSgpJiYod2luZG93LnBlcmZvcm1hbmNlLm1lYXN1cmUoImZjYnlYZSIsZCksd2luZG93LnBlcmZvcm1hbmNlLmNsZWFyTWFya3MoZCksd2luZG93LnBlcmZvcm1hbmNlLmNsZWFyTWVhc3VyZXMoImZjYnlYZSIpKX0pfTsKSVFhPWZ1bmN0aW9uKGEsYil7dmFyIGM9YS5aYS5iaW5kKGEpO2IuYWRkRXZlbnRMaXN0ZW5lcigic2Nyb2xsIixjKTthLmFkZE9uRGlzcG9zZUNhbGxiYWNrKCgpPT57Yi5yZW1vdmVFdmVudExpc3RlbmVyKCJzY3JvbGwiLGMpfSl9OwpNUWE9ZnVuY3Rpb24oYSxiKXt2YXIgYz1BcnJheS5mcm9tKGIucXVlcnlTZWxlY3RvckFsbChfLkpRYSkpO2lmKGEuQmEpZm9yKGxldCBlIG9mIGEuQmEpZm9yKGxldCBmIG9mIGUucXVlcnlTZWxlY3RvckFsbChfLkpRYSkpYy5wdXNoKGYpO3hyYShiKS5mb3JFYWNoKGU9PntBcnJheS5mcm9tKGUucXVlcnlTZWxlY3RvckFsbChfLkpRYSkpLmZvckVhY2goZj0+Yy5wdXNoKGYpKTtfLlJnKGUpJiZlLm1hdGNoZXMoXy5KUWEpJiZjLnB1c2goZSl9KTt2YXIgZDtDUWEmJkRRYT09PTEmJihkPUFycmF5LmZyb20oYi5xdWVyeVNlbGVjdG9yQWxsKEtRYSkpKTtyZXR1cm4gYy5maWx0ZXIoZT0+ZCYmZC5pbmNsdWRlcyhlKT8hMTpfLkxyYShlLCJyY3VRNmIiKSYmTFFhLnRlc3QoZS5nZXRBdHRyaWJ1dGUoImpzYWN0aW9uIikpfHxfLmh1YS5zb21lKGY9PmUuaGFzQXR0cmlidXRlKGYpKSl9OwpOUWE9ZnVuY3Rpb24oYSxiKXtpZighXy5mSGEoYS5TYSkpe3ZhciBjPVtdO2IuZm9yRWFjaChkPT57dmFyIGU9ZC5nZXRBdHRyaWJ1dGUoImpzY29udHJvbGxlciIpO2UmJiFkLmdldEF0dHJpYnV0ZSgianNsYXp5IikmJihkPV8ucmgoZSkpJiYhYS5OYS5oYXMoZCkmJihjLnB1c2goZCksYS5OYS5hZGQoZCkpfSk7aWYoYy5sZW5ndGg+MCl7bGV0IGQ7KGQ9Xy5FTmEoXy5PZi5nZXRJbnN0YW5jZSgpLGMpKT09bnVsbHx8ZC50aGVuKHZvaWQgMCwoKT0+e30pfX19OwpRUWE9ZnVuY3Rpb24oYSxiLGM9ITEpe2I9YS5QYShiKTt2YXIgZD1bXTtmb3IobGV0IGU9MDtlPGIubGVuZ3RoO2UrKyl7bGV0IGY9YltlXSxnPWYuZ2V0QXR0cmlidXRlKCJqc2NvbnRyb2xsZXIiKSxoPWYuZ2V0QXR0cmlidXRlKCJqc293bmVyIiksaz1mLmdldEF0dHJpYnV0ZSgianNtb2RlbCIpO2smJlBzYShmLCExKTtpZihfLkxyYShmLCJyY3VRNmIiKXx8Z3x8aHx8ayl7aWYoYS5vYS5oYXMoZikpY29udGludWU7YS5vYS5hZGQoZik7UU5hJiYoZi5fX3dpem1hbmFnZXJzfHwoZi5fX3dpem1hbmFnZXJzPW5ldyBTZXQpLGYuX193aXptYW5hZ2Vycy5hZGQoYSkpfV8uTHJhKGYsImR5UmNwYiIpJiYoT2JqZWN0LmRlZmluZVByb3BlcnR5KGYsInNldEF0dHJpYnV0ZSIse3ZhbHVlOmp1YSx3cml0YWJsZTohMCxjb25maWd1cmFibGU6ITB9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZiwicmVtb3ZlQXR0cmlidXRlIix7dmFsdWU6a3VhLHdyaXRhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH0pKTsKXy5McmEoZiwicmN1UTZiIik/ZC5wdXNoKGYpOmN8fGEud2EuYWRkKGYpfWN8fChOUWEoYSxkKSxPUWEoYSkpO3JldHVybiBQUWEoZCl9O3d1YT1mdW5jdGlvbihhLGIpe2EuaXNEaXNwb3NlZCgpfHxhLm9hLmhhcyhiKXx8UVFhKGEsW2JdLCEwKX07CkhRYT1mdW5jdGlvbihhLGIpe2EuT2EoKTt2YXIgYz1SUWEoYS5rYSk7aWYoYyYmIWIpe3ZhciBkPVtdO2ZvcihiPTA7YjxjLklLYi5sZW5ndGg7YisrKXt2YXIgZT1jLklLYltiXTtpZihhLmdldERvY3VtZW50KCkuZG9jdW1lbnRFbGVtZW50LmNvbnRhaW5zKGUpKWQucHVzaChlKTtlbHNlIGlmKGEuQmEpZm9yKHZhciBmIG9mIGEuQmEpaWYoZi5jb250YWlucyhlKSl7ZC5wdXNoKGUpO2JyZWFrfX1jLnJlbW92ZWQuZm9yRWFjaChnPT57YS5FYShnKTtNUWEoYSxnKS5mb3JFYWNoKGg9PnthLkVhKGgpfSl9KTtyZXR1cm4gUVFhKGEsZCl9Yz1NUWEoYSxhLkdhKTtmPVtdO2I9bmV3IFNldDtmb3IoZT0wO2U8Yy5sZW5ndGg7ZSsrKXtsZXQgZz1jW2VdO2Eub2EuaGFzKGcpP2IuYWRkKGcpOmYucHVzaChnKX1mb3IoZCBvZlsuLi5hLm9hXSliLmhhcyhkKXx8YS5FYShkKTtyZXR1cm4gUVFhKGEsZil9OwpPUWE9ZnVuY3Rpb24oYSl7U1FhPDB8fCFhLndhLnNpemV8fChhLklhJiZ3aW5kb3cuY2xlYXJUaW1lb3V0KGEuSWEpLGEuSWE9d2luZG93LnNldFRpbWVvdXQoKCk9PntOUWEoYSxhLndhKTthLndhLmNsZWFyKCl9LFNRYSkpfTtQUWE9ZnVuY3Rpb24oYSl7aWYoIWEubGVuZ3RoKXJldHVybiBfLkRnKCk7dmFyIGI9bHVhKCk7YiYmKHdpbmRvdy5wZXJmb3JtYW5jZS5jbGVhck1lYXN1cmVzKCJrRGNQOWIiKSx3aW5kb3cucGVyZm9ybWFuY2UuY2xlYXJNYXJrcygiTzdqUE5iIiksd2luZG93LnBlcmZvcm1hbmNlLm1hcmsoIk83alBOYiIpKTthLmZvckVhY2goYz0+e3RyeXtfLlhnKGMsInJjdVE2YiIsdm9pZCAwLCExKX1jYXRjaChkKXt3aW5kb3cuc2V0VGltZW91dCgoKT0+e3Rocm93IGQ7fSwwKX19KTtiJiZ3aW5kb3cucGVyZm9ybWFuY2UubWVhc3VyZSgia0RjUDliIiwiTzdqUE5iIik7cmV0dXJuIF8uRGcoKX07ClZRYT1jbGFzcyBleHRlbmRzIF8uRWR7Y29uc3RydWN0b3IoYSxiKXtzdXBlcigpO3RoaXMuR2E9YTt0aGlzLlNhPWI7dGhpcy5XaT1udWxsO3RoaXMuUmE9Yz0+e18uamUoYyl9O3RoaXMua2E9bmV3IFRRYSh0aGlzLldpLCgpPT5HUWEodGhpcywwLCExKSx0aGlzLlJhKTt0aGlzLm9hPW5ldyBTZXQ7dGhpcy53YT1uZXcgU2V0O3RoaXMuSWE9bnVsbDt0aGlzLk5hPW5ldyBTZXQ7dGhpcy5LYT10aGlzLkFhPW51bGw7YS5fX3dpem1hbmFnZXI9dGhpcztGUWF8fElRYSh0aGlzLF8uaGkoYSkpfU9hKCl7fWRpcnR5KCl7dmFyIGE9dGhpcy5rYTthLmthfHwoYS5rYT0hMCk7cmV0dXJuIF8uVVFhKHRoaXMua2EpfWRpcnR5U3VidHJlZShhLGIpe3ZhciBjPU1RYSh0aGlzLGEpO2ZvcihsZXQgZCBvZiBjKWlmKCFifHxiKGQsYSkpYz10aGlzLmthLGMua2F8fGMud2EucHVzaChkKSxfLlVRYSh0aGlzLmthKX1nZXREb2N1bWVudCgpe3JldHVybiB0aGlzLkdhfVphKCl7dGhpcy5vYSYmKHRoaXMuQWF8fAoodGhpcy5BYT1fLmxmKCkpLHRoaXMuS2EmJndpbmRvdy5jbGVhclRpbWVvdXQodGhpcy5LYSksdGhpcy5LYT13aW5kb3cuc2V0VGltZW91dCgoKT0+e3RoaXMuQWEmJih0aGlzLkFhLnJlc29sdmUoKSx0aGlzLkFhPW51bGwpfSwyMDApKX1QYShhKXtyZXR1cm4gYX1FYShhKXt2YXIgYj1hLl9fc295O2ImJmIuZGlzcG9zZSgpOyhiPV8uZk9hKGEpKSYmYi5kaXNwb3NlKCk7KGI9Xy5oT2EoYSkpJiZpT2EoYik7Z09hKGEpO2lmKGI9YS5fX2pzbW9kZWwpe2I9T2JqZWN0LnZhbHVlcyhiKTtmb3IobGV0IGM9MDtjPGIubGVuZ3RoO2MrKylpT2EoYltjXSl9YS5fX2pzbW9kZWw9dm9pZCAwOyhiPV8ucnJhKGEpKSYmXy5OZy5oYXMoYikmJl8uRGEoXy5OZy5nZXQoYiksYSk7dGhpcy5vYS5kZWxldGUoYSk7dGhpcy53YS5kZWxldGUoYSl9cWMoKXtzdXBlci5xYygpO3RoaXMub2EuZm9yRWFjaCh0aGlzLkVhLmJpbmQodGhpcykpO3RoaXMud2EuY2xlYXIoKTt0aGlzLkdhPW51bGx9cmVtb3ZlRGlzY29ubmVjdGVkUm9vdChhKXt2YXIgYjsKKGI9dGhpcy5CYSk9PW51bGx8fGIuZGVsZXRlKGEpfX07Xy5VUWE9ZnVuY3Rpb24oYSl7aWYoYS5vYSlyZXR1cm4gYS5vYTthLm9hPW5ldyBfLlNnKGI9Pnt2YXIgYz0hMTthLkJhPSgpPT57Y3x8KGEub2E9bnVsbCxhLkJhPW51bGwsYz0hMCxiKGEuR2EoKSkpfTthLkVhKGEuQmEpfSk7YS5vYS5IeCgoKT0+e30pO3JldHVybiBhLm9hfTtSUWE9ZnVuY3Rpb24oYSl7dmFyIGI9YS5rYT9udWxsOntJS2I6YS53YSxyZW1vdmVkOmEuQWF9O2Eud2E9W107YS5BYT1bXTthLmthPSExO3JldHVybiBifTtUUWE9Y2xhc3N7Y29uc3RydWN0b3IoYSxiLGMpe3RoaXMuV2k9YTt0aGlzLkdhPWI7dGhpcy5FYT1jO3RoaXMud2E9W107dGhpcy5BYT1bXTt0aGlzLmthPSExO3RoaXMuQmE9dGhpcy5vYT1udWxsfX07U1FhPTA7TFFhPVJlZ0V4cCgiKFxccypyY3VRNmJcXHMqOlxccyp0cmlnZ2VyKSIpO18uaHVhPVsianNjb250cm9sbGVyIiwianNtb2RlbCIsImpzb3duZXIiXTtfLkpRYT1pdWEoKTsKS1FhPVsiW2pzbmFtZT1jb0ZTeGVdIiwiW21pY2EtYXBwLWlkXSJdLm1hcChhPT5pdWEoYSkpLmpvaW4oIiwiKTtfLnV1YT12b2lkIDA7Xy56dWE9dm9pZCAwO18ua3phPWNsYXNzIGV4dGVuZHMgXy5ocGF7Y29uc3RydWN0b3IoYSxiLGMpe3N1cGVyKGIubFcoKSxjKTt0aGlzLndhPXZvaWQgMDt0aGlzLmVsZW1lbnQ9YTt0aGlzLnFLPWJ9a2EoKXt2YXIgYT1zdXBlci5rYSgpO2EucUs9dGhpcy5xSzthLnJvb3RFbGVtZW50PXt2YWx1ZTp0aGlzLmVsZW1lbnR9O3JldHVybiBhfWM1KCl7dGhyb3cgRXJyb3IoIk1jIik7fWdldFJvb3QoKXtyZXR1cm4gdGhpcy5yb290P3RoaXMucm9vdDp0aGlzLnJvb3Q9bmV3IF8uem8odGhpcy5lbGVtZW50KX1nZXREYXRhKGEpe3JldHVybiB0aGlzLmdldFJvb3QoKS5nZXREYXRhKGEpfVI1KCl7dmFyIGE9c3VwZXIuUjUoKTtyZXR1cm4gYS5pc1ZhbGlkP3RoaXMuZWxlbWVudC5pc0Nvbm5lY3RlZD9fLmhpKF8uV2QodGhpcy5lbGVtZW50KSk9PW51bGw/e2lzVmFsaWQ6ITEsaW52YWxpZFJlYXNvbjoiV2luZG93IG5vdCBhdmFpbGFibGUifTp7aXNWYWxpZDohMH06e2lzVmFsaWQ6ITEsaW52YWxpZFJlYXNvbjoiRWxlbWVudCBub3QgY29ubmVjdGVkIHRvIERPTSJ9OgphfXVuKGEsYil7cmV0dXJuIHRoaXMua3dhKGEsYil9a3dhKGEsYil7cmV0dXJuIF8uemYodGhpcy5pb2EoYSxiKSwhMCl9aW9hKGEsYil7cmV0dXJuIF8ucHVhKGJ8fHRoaXMuZWxlbWVudCxhLHRoaXMubFcoKSkubWFwKGM9PmMsYz0+e2MgaW5zdGFuY2VvZiBfLm91YSYmKGMubWVzc2FnZSs9YCByZXF1ZXN0ZWQgYnkgJHt0aGlzfWApO3JldHVybiBjfSl9VHUoYSxiKXtyZXR1cm4gdGhpcy5CZChhLF8uTG8sYil9QmQoYSxiLGMpe3JldHVybiBfLnpmKHRoaXMuUngoYSxjKSwhMCl9RDlhKGEpe3JldHVybiBhLnRhZ05hbWUhPT12b2lkIDB9UngoYSxiKXtpZih0aGlzLkQ5YShhKSl7bGV0IGM9dGhpcy5xSy5SeChhKTtyZXR1cm4gYj9jLm1hcChkPT57YihkKTtyZXR1cm4gZH0pOmN9cmV0dXJuIHRoaXMuSjEoYSkubWFwKGM9PntpZihjLmxlbmd0aD09PTApdGhyb3cgRXJyb3IoIk5jYCIrYSsiYCIrdGhpcyk7Yj09bnVsbHx8YihjWzBdKTtyZXR1cm4gY1swXX0pfWNXKGEsYil7cmV0dXJuIF8uemYodGhpcy5KMShhLApiKSwhMCl9SjEoYSxiKXt2YXIgYz1bXSxkPXRoaXMuSGIoYSksZT10aGlzLmdldFJvb3QoKS5lbCgpO2lmKGQuc2l6ZSgpPT09MCYmZS5vd25lckRvY3VtZW50LnJlYWR5U3RhdGU9PT0ibG9hZGluZyIpcmV0dXJuIG5ldyBfLndmKChmLGcpPT57ZS5vd25lckRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoInJlYWR5c3RhdGVjaGFuZ2UiLCgpPT57dGhpcy5KMShhLGIpLkl4KGYsZyl9LHtvbmNlOiEwfSl9KTtkLmVhY2goZj0+e2MucHVzaCh0aGlzLnFLLlJ4KGYpKX0pO2Q9Xy5XZihjKTtyZXR1cm4gYj9kLm1hcChmPT57YihmKTtyZXR1cm4gZn0pOmR9SGIoYSl7cmV0dXJuIG5ldyBfLndvKF8uZ3VhKHRoaXMuZWxlbWVudCwianNuYW1lIixhKSl9aW5pdGlhbGl6ZShhKXt2YXIgYjsoYj10aGlzLndhKT09bnVsbHx8Yi5jYWxsKHRoaXMsYSl9fTtfLkR1YT1TeW1ib2wodm9pZCAwKTtfLnpoPVN5bWJvbCgiT2MiKTt2YXIgV1FhO1dRYT1mdW5jdGlvbihhLGIpe3ZhciBjPWEub2FbU3RyaW5nKGIpXTtyZXR1cm4gYz09bnVsbCYmYS5GaD9hLkZoKGIpOmN9O18uSHVhPWNsYXNze2NvbnN0cnVjdG9yKGE9e30sYixjLGQpe3RoaXMub2E9YTt0aGlzLnBhcmVudD1iO3RoaXMuRmg9Yzt0aGlzLnJjPWR8fGImJmIubFcoKTt0aGlzLmthPV8uTW9hKHtyYzp0aGlzLnJjfSwhMSl9YzUoYSl7dmFyIGI9V1FhKHRoaXMsYSk7cmV0dXJuIGI9PW51bGwmJnRoaXMucGFyZW50P3RoaXMucGFyZW50LmM1KGEpOmJ9U2woKXtyZXR1cm4gdGhpcy5yY31sVygpe3JldHVybiB0aGlzLnJjfHx2b2lkIDB9Z2V0RGF0YShhKXt2YXIgYj1XUWEodGhpcyxhKTtyZXR1cm4gYj09bnVsbCYmdGhpcy5wYXJlbnQ/dGhpcy5wYXJlbnQuZ2V0RGF0YShhKTpuZXcgXy5Wa2EoYSxiKX1vbGEoKXtyZXR1cm4gdGhpcy5rYX1SNSgpe3JldHVybntpc1ZhbGlkOiEwfX19O3ZhciBJdWE9Y2xhc3MgZXh0ZW5kcyBfLmhwYXtjb25zdHJ1Y3RvcihhLGIsYyl7c3VwZXIoYSxiKTt0aGlzLndhPWN9a2EoKXt2YXIgYT1zdXBlci5rYSgpO2EuZzViPXRoaXM7cmV0dXJuIGF9YzUoYSl7aWYoIXRoaXMud2EpdGhyb3cgRXJyb3IoIlBjIik7cmV0dXJuIHRoaXMud2EuYzUoYSl9Z2V0RGF0YShhKXtyZXR1cm4gdGhpcy53YT90aGlzLndhLmdldERhdGEoYSk6bmV3IF8uVmthKGEsbnVsbCl9fTtfLlhRYT1mdW5jdGlvbihhLGIpe2E9Xy56aShhKTtiPV8uZ3VhKGEsImpzbmFtZSIsYik7cmV0dXJuIG5ldyBfLndvKGIpfTtfLllRYT1mdW5jdGlvbihhLGIsYyxkLGU9Xy5KcmEoYikpe2E9W107dmFyIGY9Xy5ndWEoYiwianNuYW1lIixkKTtpZihmLmxlbmd0aD09PTAmJmIub3duZXJEb2N1bWVudC5yZWFkeVN0YXRlPT09ImxvYWRpbmciJiYhXy5ldWEoYikpcmV0dXJuIG5ldyBfLndmKChnLGgpPT57Yi5vd25lckRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoInJlYWR5c3RhdGVjaGFuZ2UiLCgpPT57Xy5ZUWEoMCxiLGMsZCxlKS5JeChnLGgpfSx7b25jZTohMH0pfSk7Zm9yKGxldCBnIG9mIGYpYS5wdXNoKGUuUngoZykpO3JldHVybiBfLldmKGEpLmZsYXRNYXAoZz0+Xy5XZihnLm1hcChfLkV1YSkpKX07Xy5aUWE9ZnVuY3Rpb24oYSxiKXtyZXR1cm4gRXJyb3IoIlJjYCIrYisiYCIrXy5WTmEoYSkpfTsKXy5Obz1mdW5jdGlvbihhLGIsYyl7dmFyIGQ9Xy56aShiKTtiPVtdO2IucHVzaC5hcHBseShiLF8ueGgoYS5nZXRSb290KCkuZWwoKSxkLGMpKTtpZihiLmxlbmd0aD4wKXJldHVybiBfLkVvKGJbMF0pO2lmKGQ9Xy5OZy5nZXQoYS5nZXRSb290KCkuZWwoKSkpZm9yKGxldCBlPTA7ZTxkLmxlbmd0aDtlKyspe2lmKGRbZV0uZ2V0QXR0cmlidXRlKCJqc25hbWUiKT09Yyl7Yi5wdXNoKGRbZV0pO2JyZWFrfWIucHVzaC5hcHBseShiLF8ueGgoYS5nZXRSb290KCkuZWwoKSxkW2VdLGMpKX1yZXR1cm4gYi5sZW5ndGg+MD9fLkVvKGJbMF0pOm5ldyBfLndvKGIpfTtfLk9vPWZ1bmN0aW9uKGEsYil7cmV0dXJuIF8uemYoYS5SeChiKSwhMCkudGhlbigpfTtfLlBvPWZ1bmN0aW9uKGEsYixjKXthLmdldFJvb3QoKS5lbCgpO2I9YiBpbnN0YW5jZW9mIF8uem8/Yi5lbCgpOmI7Xy5PZyhiLGM/Yy5lbCgpOmEuZ2V0Um9vdCgpLmVsKCkpfTsKXy5BaD1jbGFzcyBleHRlbmRzIF8uWU5he2NvbnN0cnVjdG9yKCl7c3VwZXIoKTt0aGlzLmYkPXt9O3RoaXMucE09Xy5Bb2EoKTt0aGlzLnFLPV8ud29hKCk7dGhpcy5hZGRPbkRpc3Bvc2VDYWxsYmFjaygoKT0+e3ZhciBhPV8ucnJhKHRoaXMucE0pO2lmKGEmJl8uTmcuZ2V0KGEpKXtsZXQgYjtfLkRhKChiPV8uTmcuZ2V0KGEpKSE9bnVsbD9iOm51bGwsdGhpcy5nZXRSb290KCkuZWwoKSl9fSl9dG9TdHJpbmcoKXtyZXR1cm5gJHtfLnFmKHRoaXMpfVske18uJGUodGhpcy5wTSl9XWB9U2woKXtyZXR1cm4gdGhpcy5xSy5TbCgpfWxXKCl7cmV0dXJuIHRoaXMucUsubFcoKX1BaSgpe3JldHVybiBfLldkKHRoaXMucE0pfWdldFdpbmRvdygpe3JldHVybiBfLmhpKHRoaXMuQWkoKSl9SGIoYSl7cmV0dXJuIF8uWFFhKHRoaXMucE0sYSl9SmEoYSl7dmFyIGI9dGhpcy5IYihhKTtpZihiLnNpemUoKT49MSlyZXR1cm4gYi5lcSgwKTt0aHJvdyBfLlpRYSh0aGlzLGEpO31WYShhKXtyZXR1cm4gXy5Obyh0aGlzLAp0aGlzLnBNLGEpfWdldFJvb3QoKXtyZXR1cm4gdGhpcy5mJC5yb290P3RoaXMuZiQucm9vdDp0aGlzLmYkLnJvb3Q9bmV3IF8uem8odGhpcy5wTSl9Z2V0RGF0YShhKXtyZXR1cm4gdGhpcy5nZXRSb290KCkuZ2V0RGF0YShhKX1SNSgpe3ZhciBhPXN1cGVyLlI1KCk7cmV0dXJuIGEuaXNWYWxpZD90aGlzLnBNLmlzQ29ubmVjdGVkP3RoaXMuZ2V0V2luZG93KCk/e2lzVmFsaWQ6ITB9Ontpc1ZhbGlkOiExLGludmFsaWRSZWFzb246IldpbmRvdyBub3QgYXZhaWxhYmxlIn06e2lzVmFsaWQ6ITEsaW52YWxpZFJlYXNvbjoiRWxlbWVudCBub3QgY29ubmVjdGVkIHRvIERPTSJ9OmF9bFooYSl7cmV0dXJuIHRoaXMuZ2V0Um9vdCgpLmxaKGEpfWM1KCl7dGhyb3cgRXJyb3IoIk1jIik7fXVuKGEsYil7cmV0dXJuIHRoaXMua3dhKGEsYil9a3dhKGEsYil7cmV0dXJuIF8uemYodGhpcy5pb2EoYSxiKSwhMCl9aW9hKGEsYil7cmV0dXJuIF8ucHVhKGJ8fHRoaXMucE0sYSx0aGlzLmxXKCkpLm1hcChjPT4KYyxjPT57YyBpbnN0YW5jZW9mIF8ub3VhJiYoYy5tZXNzYWdlKz1gIHJlcXVlc3RlZCBieSAke3RoaXN9YCk7cmV0dXJuIGN9KX1CZChhLGIsYyl7cmV0dXJuIF8uemYodGhpcy5SeChhLGMpLCEwKX1EOWEoYSl7cmV0dXJuIGEudGFnTmFtZSE9PXZvaWQgMH1SeChhLGIpe2lmKHRoaXMuRDlhKGEpKXtsZXQgYz10aGlzLnFLLlJ4KGEpLmZsYXRNYXAoZD0+Xy5FdWEoZCkpO3JldHVybiBiP2MubWFwKGQ9PntiKGQpO3JldHVybiBkfSk6Y31yZXR1cm4gdGhpcy5KMShhKS5tYXAoYz0+e2lmKGMubGVuZ3RoPT09MCl0aHJvdyBfLlpRYSh0aGlzLGEpO2I9PW51bGx8fGIoY1swXSk7cmV0dXJuIGNbMF19KX1jVyhhLGIpe3JldHVybiBfLnpmKHRoaXMuSjEoYSxiKSwhMCl9SjEoYSxiKXthPV8uWVFhKDAsdGhpcy5wTSx0aGlzLnBNLGEsdGhpcy5xSyk7cmV0dXJuIGI/YS5tYXAoYz0+e2IoYyk7cmV0dXJuIGN9KTphfXRyaWdnZXIoYSxiLGMpe3ZhciBkPXRoaXMucE0sZT1fLnJyYSh0aGlzLnBNKXx8Cm51bGw7ZSYmIV8uTHJhKHRoaXMucE0sYSkmJihkPWUpO2QmJl8uWGcoZCxhLGIsYyx7X3JldGFyZ2V0OnRoaXMucE0sX19zb3VyY2U6dGhpc30pfW5vdGlmeShhLGIpe18uWmcodGhpcy5nZXRSb290KCkuZWwoKSxhLGIsdGhpcyl9TjdhKCl7cmV0dXJuIG5ldyBfLnpvKF8ucnJhKHRoaXMucE0pKX16OGEoKXtyZXR1cm4hIV8ucnJhKHRoaXMucE0pfWRpcnR5KCl7Xy55aChkb2N1bWVudCkuZGlydHkoKX1OZCgpe319O18uQWgucHJvdG90eXBlLiR3YSRucFQybWQ9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5OZH07Cl8uVmYoe2NvbnRyb2xsZXIoYSxiKXsoe2pzbmFtZTpifT1KdWEoYikpO3JldHVybiBhLlJ4KGIpLm1hcChjPT5jKX0sT2MoYSxiKXsoe2pzbmFtZTpifT1KdWEoYikpO3JldHVybiBhLkoxKGIpLm1hcChjPT5jWzBdfHxudWxsKX0sY29udHJvbGxlcnMoYSxiKXt2YXIge2pzbmFtZTpjLGN0b3I6ZH09SnVhKGIpO3JldHVybiBhLkoxKGMpLm1hcChlPT57aWYoZClmb3IobGV0IGYgb2YgZSk7cmV0dXJuIGV9KX0scmVuZGVyZXIoYSxiKXtyZXR1cm4gRnVhKGIsYSxhLlNsKCkpfX0pO18uJFFhPSExO18uYVJhPV8ua2MoIlJ5dmFVYiIpO18uYlJhPV8ua2MoImFSanV4YiIsW18uYVJhXSk7dmFyIGNSYTtjUmE9Y2xhc3N7Y29uc3RydWN0b3IoYSl7dGhpcy5hYm9ydD1hfX07Xy5kUmE9bmV3IGNSYSghMSk7Xy5lUmE9bmV3IGNSYSghMCk7Xy5mUmE9Y2xhc3MgZXh0ZW5kcyBfLnNve29hKCl7cmV0dXJuIF8uZFJhfXdhKCl7fX07Xy5hZyhfLmFSYSxfLmZSYSk7Xy5nUmE9Y2xhc3MgZXh0ZW5kcyBfLmZSYXtjb25zdHJ1Y3RvcihhKXtzdXBlcihhLkdiKX1vYShhLGIpe3JldHVybiBfLlB1YShiKT9fLmVSYTpfLmRSYX1yZXNldChhKXtfLk91YShhKX19O18uYWcoXy5iUmEsXy5nUmEpO18uVXVhPV8uZWEucGVyZm9ybWFuY2U7dmFyIFN1YT1fLlV1YS50aW1lT3JpZ2luIT1udWxsO18uQmg9U3VhP18uVXVhLnRpbWVPcmlnaW46Xy5VdWEudGltaW5nLm5hdmlnYXRpb25TdGFydDtfLmhSYT1jbGFzc3tzdGFydCgpe3JldHVybiB0aGlzLnN0YXJ0VGltZT09bnVsbD8odGhpcy5zdGFydFRpbWU9Xy5VdWEubm93KCksdGhpcy5oZj1EYXRlLm5vdygpLCEwKTohMX1lbGFwc2VkVGltZSgpe2lmKHRoaXMuc3RhcnRUaW1lPT1udWxsKXJldHVybiAwO3ZhciBhPV8uVXVhLm5vdygpLXRoaXMuc3RhcnRUaW1lO3JldHVybiBNYXRoLm1heChhLDApfX07Xy5Rbz1mdW5jdGlvbihhLGIsYyl7cmV0dXJuIGEuWnMoYixfLlJ1YShhLmthLmVsYXBzZWRUaW1lKCkpLGMpfTtfLlJvPWNsYXNze2NvbnN0cnVjdG9yKGE9IndlYiIsYj0iY3NpIixjLGQsZT0hMCl7dGhpcy5ydD17fTt0aGlzLmthPW5ldyBfLmhSYTt0aGlzLm9hPWU/Xy5jbygoMCxfLnZtLml4KSgpLGMsZCk6bmV3IF8ubExhKGMsZCk7dGhpcy5vYS5HYygicyIsYSkuR2MoImF0eXAiLGIpfUdjKGEsYil7dGhpcy5vYS5HYyhhLGIpO3JldHVybiB0aGlzfXN0YXJ0KCl7dGhpcy5rYS5zdGFydCgpO3JldHVybiB0aGlzfVpzKGEsYixjKXt2YXIgZD1hO2MmJihkPWAke2F9LSR7Y31gKTt0aGlzLnJ0W2RdPWI7cmV0dXJuIHRoaXN9bG9nKCl7Xy5VYyh0aGlzLnJ0KXx8dGhpcy5HYygicnQiLF8uUXVhKHRoaXMucnQpKTt0aGlzLm9hLmxvZygpfX07dmFyIGlSYTt3aW5kb3cuZ29vZ2xlPXdpbmRvdy5nb29nbGV8fHt9O2lSYT1nb29nbGUuc3R2c2MmJmdvb2dsZS5zdHZzYy5ucztfLkZvPXdpbmRvdy5wZXJmb3JtYW5jZSYmd2luZG93LnBlcmZvcm1hbmNlLnRpbWluZyYmIm5hdmlnYXRpb25TdGFydCJpbiB3aW5kb3cucGVyZm9ybWFuY2UudGltaW5nP2lSYXx8d2luZG93LnBlcmZvcm1hbmNlLnRpbWluZy5uYXZpZ2F0aW9uU3RhcnQ6dm9pZCAwO3ZhciBqUmE9Y2xhc3N7eFNhKCl7fUFhKCl7fXNob3VsZExvZ1RyaWdnZXJFdmVudHMoKXtyZXR1cm4hMX19O2dvb2dsZS5ubGk9Z29vZ2xlLm5saXx8MDsKdmFyIFd1YT1bImNsaWNrIiwiZm9jdXMiLCJ0b3VjaHN0YXJ0IiwibW91c2Vkb3duIl0sa1JhPWZ1bmN0aW9uKGEpe3JldHVybiBnb29nbGUubmxpPj1vR2F8fCFhLm5vZGUoKXx8dHlwZW9mIEdPYShhKSE9PSJudW1iZXIiJiZhLkJhIT1udWxsPyExOmEuQmEhPW51bGx8fF8uQWEoV3VhLGEuZXZlbnRUeXBlKCkpfSxsUmE9ZnVuY3Rpb24oYSxiPSEwKXtyZXR1cm4gYS5ub2RlKCk/TWF0aC5yb3VuZChGT2EoYSxiKSk6MH0sbVJhPWZ1bmN0aW9uKCl7dmFyIGE7cmV0dXJuKGE9d2luZG93Lm5hdmlnYXRpb24pPT1udWxsP3ZvaWQgMDphLmN1cnJlbnRFbnRyeX0sblJhPWZ1bmN0aW9uKGEsYixjLGQsZSxmLGcsaCxrLG0sbixwLHIpe2Z1bmN0aW9uIHgoQixIKXt6LnB1c2goYCR7Qn0uJHtIfWApfXZhciB6PVtdO2EuY3FhJiZ6LnB1c2goYS5jcWEpO2ghPT1udWxsJiZ4KCJzdCIsTWF0aC5yb3VuZChoKSk7aD1uPD0xO3goaD8idCI6InRuaSIsZCk7eChoPyJhdCI6ImF0bmkiLGUpO2ImJgp4KCJldCIsYik7KGI9Xy55ZShjKSkmJngoInZlIixiKTtmJiZ4KCJuIixmKTtnJiZ4KCJhbiIsZyk7eCgiY24iLG4pO2Eua2E+MCYmeCgiZHQiLGEua2EpO2Eud2E+MCYmeCgiYWR0IixhLndhKTtjPV8uTHJhKGMsInJjdVE2YiIpO3goImllIixjPzE6MCk7ayE9PW51bGwmJngoImFmIixNYXRoLnJvdW5kKHBlcmZvcm1hbmNlLm5vdygpLWspKTtnb29nbGUudGltZXJzJiZfLkZvIT09dm9pZCAwJiYoaz1nb29nbGUudGltZXJzLmxvYWQpJiYoaz1rLnQuZmh0LGshPT12b2lkIDAmJngoImZodCIsTWF0aC5tYXgoMCxrLV8uRm8pKSk7YS5vYSYmeCgiYmYiLGEub2EpO20mJngoInRpZSIsbSk7cCE9PXZvaWQgMCYmeCgiZXR0IixTdHJpbmcocCkpO3ImJihtPW1SYSgpKSYmKHgoInNuZWQiLFN0cmluZyhtLnNhbWVEb2N1bWVudCkpLHgoInNuZWkiLFN0cmluZyhtLmlkPT09ci5pZCkpKTsoYS5LYXx8bmV3IF8uUm8oImpzYSIpKS5HYygianNpIix6LmpvaW4oKSkubG9nKCl9LGh6YT1uZXcgY2xhc3MgZXh0ZW5kcyBqUmF7Y29uc3RydWN0b3IoYT0KbnVsbCl7c3VwZXIoKTt0aGlzLkthPWE7dGhpcy5HYT0hMTt0aGlzLndhPXRoaXMua2E9dGhpcy5FYT10aGlzLm9hPTA7dGhpcy5JYT1iPT57Yi5wZXJzaXN0ZWQmJihnb29nbGUubmxpPTAsdGhpcy5vYT1iLnRpbWVTdGFtcCx0aGlzLndhPXRoaXMua2E9MCl9O3RoaXMuQmE9KCk9Pntkb2N1bWVudC52aXNpYmlsaXR5U3RhdGU9PT0iaGlkZGVuIiYmKHRoaXMuRWE9cGVyZm9ybWFuY2Uubm93KCkpfTt0aGlzLmNxYT1nb29nbGUueGpzdT9RdGEoXy5TZShnb29nbGUueGpzdSkpOm51bGw7d2luZG93LmFkZEV2ZW50TGlzdGVuZXIoInBhZ2VzaG93Iix0aGlzLklhKTtkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCJ2aXNpYmlsaXR5Y2hhbmdlIix0aGlzLkJhKX1kaXNwb3NlKCl7d2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoInBhZ2VzaG93Iix0aGlzLklhKTtkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCJ2aXNpYmlsaXR5Y2hhbmdlIix0aGlzLkJhKX14U2EoYSl7dGhpcy5rYT0KR0dhO2lmKGtSYShhKSYmISh0aGlzLmthPD0wKSYmbFJhKGEsITEpPj0wKXthPXBlcmZvcm1hbmNlLm5vdygpO2xldCBiPXBlcmZvcm1hbmNlLm5vdygpO2Zvcig7Yi1hPHRoaXMua2E7KWI9cGVyZm9ybWFuY2Uubm93KCk7dGhpcy53YT1NYXRoLmZsb29yKGItYSk7cmV0dXJuIFByb21pc2UucmVzb2x2ZSgpfX1BYShhLGIpe2lmKGtSYShhKSl7dGhpcy5HYXx8KHRoaXMuR2E9ITAsWHVhKCkpO3ZhciBjPUdPYShhKTtpZighKGMhPT1udWxsJiZjPHRoaXMub2EpKXt2YXIgZD1hLmV2ZW50VHlwZSgpLGU9YS5nZXRUeXBlKCksZj1hLkJhLGc9YS5ub2RlKCksaD1hLmV2ZW50KCksaz1oP2guSSRiOnZvaWQgMCxtPW1SYSgpLG49Kytnb29nbGUubmxpLHA9bFJhKGEpLHI9bFJhKGEsITEpO25SYSh0aGlzLGQsZyxwLHIsYixlLGMsbnVsbCxmLG4sayk7dmFyIHg9cGVyZm9ybWFuY2Uubm93KCk7cmVxdWVzdEFuaW1hdGlvbkZyYW1lKCgpPT57dGhpcy5FYT54JiZkb2N1bWVudC52aXNpYmlsaXR5U3RhdGU9PT0KInZpc2libGUifHxuUmEodGhpcyxkLGcscCxyLGIsZSxjLHgsZixuLGssbSl9KX19fXNob3VsZExvZ1RyaWdnZXJFdmVudHMoKXtyZXR1cm4gZ29vZ2xlLm5saTwxfX07ZmMoInNnWTZaYiIsInJoZlE1YyIpO18ub1JhPV8ua2MoInNnWTZaYiIsW10pO18uT2MoXy5vUmEpO18ucFJhPW5ldyBfLmljKCJieWZUT2IiLCJieWZUT2IiKTtfLlNvPW5ldyBfLmljKCJMRWlrWmUiLCJMRWlrWmUiKTtfLnFSYT1uZXcgXy5pYygibHNqVm1jIiwibHNqVm1jIik7Xy5yUmE9eGQoIndkbXNRYyIsIks1bllUZCIpO18uT2MoXy5yUmEpO2ZjKCJaRFpjcmUiLCJ3ZG1zUWMiKTtfLnNSYT1fLmtjKCJaRFpjcmUiLFtdKTtfLk9jKF8uc1JhKTtmYygiT1RBM0FlIiwiaGN6MjBiIik7Xy50UmE9Xy5rYygiT1RBM0FlIik7Xy5PYyhfLnRSYSk7ZmMoImViWjNtYiIsImJhb1dJYyIpO18udVJhPV8ua2MoImViWjNtYiIsW10pO18uT2MoXy51UmEpO18uVG89eGQoImJhb1dJYyIsImRvd0lHYiIsdm9pZCAwLF8udVJhKTtfLk9jKF8uVG8pO18udlJhPXhkKCJyaGZRNWMiLCJxYWZCUGQiKTtfLk9jKF8udlJhKTtmYygiZTdIemdiIiwiUDNRWEwiKTtfLndSYT1fLmtjKCJlN0h6Z2IiLFtdKTtfLk9jKF8ud1JhKTtfLnhSYT14ZCgiUDNRWEwiLCJTY0kzWWMiLHZvaWQgMCxfLndSYSk7Xy5PYyhfLnhSYSk7Xy55UmE9eGQoImhjejIwYiIsImxPTzBWZCIpO18uT2MoXy55UmEpO18uelJhPXhkKCJpcVowVCIsImE1NnBOZSIpO2ZjKCJKRWZDd2IiLCJpcVowVCIpO18uQVJhPV8ua2MoIkpFZkN3YiIsW10pO2ZjKCJSdVVyY2YiLCJMM0xyc2QiKTtfLlR4YT1fLmtjKCJSdVVyY2YiLFtfLlRvXSk7dmFyIEJSYT1jbGFzcyBleHRlbmRzIF8ubHtjb25zdHJ1Y3RvcihhKXtzdXBlcihhKX19O3ZhciBDUmE9Y2xhc3MgZXh0ZW5kcyBfLmx7Y29uc3RydWN0b3IoYSl7c3VwZXIoYSl9fTt2YXIgRFJhPWNsYXNzIGV4dGVuZHMgXy5se2NvbnN0cnVjdG9yKGEpe3N1cGVyKGEpfX07dmFyIEVSYT1jbGFzcyBleHRlbmRzIF8ubHtjb25zdHJ1Y3RvcihhKXtzdXBlcihhKX19O3ZhciBGUmE9Y2xhc3MgZXh0ZW5kcyBfLmx7Y29uc3RydWN0b3IoYSl7c3VwZXIoYSl9fTt2YXIgR1JhPWNsYXNzIGV4dGVuZHMgXy5se2NvbnN0cnVjdG9yKGEpe3N1cGVyKGEpfX07dmFyIEhSYT1jbGFzcyBleHRlbmRzIF8ubHtjb25zdHJ1Y3RvcihhKXtzdXBlcihhKX19O3ZhciBJUmE9Y2xhc3MgZXh0ZW5kcyBfLmx7Y29uc3RydWN0b3IoYSl7c3VwZXIoYSl9fTt2YXIgSlJhPWNsYXNzIGV4dGVuZHMgXy5se2NvbnN0cnVjdG9yKGEpe3N1cGVyKGEpfX07dmFyIEtSYT1jbGFzcyBleHRlbmRzIF8ubHtjb25zdHJ1Y3RvcihhKXtzdXBlcihhKX16cmIoKXtyZXR1cm4gXy50KHRoaXMsOSl9fTt2YXIgTFJhPWNsYXNzIGV4dGVuZHMgXy5se2NvbnN0cnVjdG9yKGEpe3N1cGVyKGEpfX07dmFyIE1SYT1jbGFzcyBleHRlbmRzIF8ubHtjb25zdHJ1Y3RvcihhKXtzdXBlcihhKX19O3ZhciBOUmE9Y2xhc3MgZXh0ZW5kcyBfLmx7Y29uc3RydWN0b3IoYSl7c3VwZXIoYSl9fTt2YXIgT1JhPWNsYXNzIGV4dGVuZHMgXy5se2NvbnN0cnVjdG9yKGEpe3N1cGVyKGEpfX07dmFyIFBSYT1jbGFzcyBleHRlbmRzIF8ubHtjb25zdHJ1Y3RvcihhKXtzdXBlcihhKX19O3ZhciBRUmE9Y2xhc3MgZXh0ZW5kcyBfLmx7Y29uc3RydWN0b3IoYSl7c3VwZXIoYSl9fTt2YXIgUlJhPWNsYXNzIGV4dGVuZHMgXy5se2NvbnN0cnVjdG9yKGEpe3N1cGVyKGEpfUVHYSgpe3JldHVybiBfLnQodGhpcywxKX1scmIoKXtyZXR1cm4gXy50KHRoaXMsMil9fTt2YXIgU1JhPWNsYXNzIGV4dGVuZHMgXy5se2NvbnN0cnVjdG9yKGEpe3N1cGVyKGEpfX07dmFyIFRSYT1jbGFzcyBleHRlbmRzIF8ubHtjb25zdHJ1Y3RvcihhKXtzdXBlcihhKX1jbGVhckNhbnZhcygpe3JldHVybiBfLkdlKHRoaXMsMjcpfVNjYSgpe3JldHVybiBfLnQodGhpcyw1NCl9ZkEoKXtyZXR1cm4gXy50KHRoaXMsMTIpfWFpYSgpe3JldHVybiBfLnQodGhpcywyMil9YnJiKCl7cmV0dXJuIF8udCh0aGlzLDE0KX1MN2EoKXtyZXR1cm4gXy50KHRoaXMsMTYpfUNxKCl7cmV0dXJuIF8udCh0aGlzLDI2KX1WeCgpe3JldHVybiBfLnQodGhpcywxMSl9WDEoKXtyZXR1cm4gXy50KHRoaXMsMjgpfWppYSgpe3JldHVybiBfLnQodGhpcywxMyl9SmMoKXtyZXR1cm4gXy50KHRoaXMsMTApfXdyYigpe3JldHVybiBfLnQodGhpcywxMDYpfX07dmFyIFVSYT1jbGFzcyBleHRlbmRzIF8ubHtjb25zdHJ1Y3RvcihhKXtzdXBlcihhKX19O3ZhciBWUmE9Y2xhc3MgZXh0ZW5kcyBfLmx7Y29uc3RydWN0b3IoYSl7c3VwZXIoYSl9VVEoKXtyZXR1cm4gXy50KHRoaXMsOCl9fTt2YXIgV1JhPWNsYXNzIGV4dGVuZHMgXy5se2NvbnN0cnVjdG9yKGEpe3N1cGVyKGEpfX07dmFyIFhSYT1jbGFzcyBleHRlbmRzIF8ubHtjb25zdHJ1Y3RvcihhKXtzdXBlcihhKX19O3ZhciBZUmE9Y2xhc3MgZXh0ZW5kcyBfLmx7Y29uc3RydWN0b3IoYSl7c3VwZXIoYSl9fTt2YXIgWlJhPWNsYXNzIGV4dGVuZHMgXy5se2NvbnN0cnVjdG9yKGEpe3N1cGVyKGEpfX07dmFyICRSYT1jbGFzcyBleHRlbmRzIF8ubHtjb25zdHJ1Y3RvcihhKXtzdXBlcihhKX19O3ZhciBhU2E9Y2xhc3MgZXh0ZW5kcyBfLmx7Y29uc3RydWN0b3IoYSl7c3VwZXIoYSl9d3JiKCl7cmV0dXJuIF8udCh0aGlzLDUpfX07dmFyIGJTYTtfLlVvPWZ1bmN0aW9uKGEpe3JldHVybiBfLk5qKGEsMTYsMSl9O2JTYT1jbGFzcyBleHRlbmRzIF8ubHtjb25zdHJ1Y3RvcihhKXtzdXBlcihhKX19O3ZhciBjU2E9Y2xhc3MgZXh0ZW5kcyBfLmx7Y29uc3RydWN0b3IoYSl7c3VwZXIoYSl9bHJiKCl7cmV0dXJuIF8uTmoodGhpcywxKX19O18uZFNhPWNsYXNzIGV4dGVuZHMgXy5se2NvbnN0cnVjdG9yKGEpe3N1cGVyKGEpfWdldFZhbHVlKCl7cmV0dXJuIF8udCh0aGlzLDIpfXNldFZhbHVlKGEpe3JldHVybiBfLmZoKHRoaXMsMixhKX1jbGVhclZhbHVlKCl7cmV0dXJuIF8uR2UodGhpcywyKX19O3ZhciBlU2E9Y2xhc3MgZXh0ZW5kcyBfLmx7Y29uc3RydWN0b3IoYSl7c3VwZXIoYSl9c2V0UGFyYW1ldGVycyhhLGIpe3JldHVybiBfLnJqKHRoaXMsMSxfLmRTYSxhLGIpfX07Xy55d2E9Y2xhc3MgZXh0ZW5kcyBfLmx7Y29uc3RydWN0b3IoYSl7c3VwZXIoYSl9fTtfLlZvPXtVTktOT1dOOjAscTJjOjEsVmRkOjIsWHFkOjMsdnBkOjQscDZjOjUsTnZkOjZ9O3ZhciBjeGE7Y3hhPWZ1bmN0aW9uKGEsYil7cmV0dXJuIF8ubGsoYSwzLGIpfTtfLmJpPWZ1bmN0aW9uKGEpe3JldHVybiBfLmNpKGEsMyl9O18uZHhhPWNsYXNzIGV4dGVuZHMgXy5se2NvbnN0cnVjdG9yKGEpe3N1cGVyKGEpfWdldEhlaWdodCgpe3JldHVybiBfLmRrKHRoaXMsMil9c2V0SGVpZ2h0KGEpe3JldHVybiBfLmxrKHRoaXMsMixhKX1xZygpe3JldHVybiBfLndlKHRoaXMsMil9Z2V0V2lkdGgoKXtyZXR1cm4gXy5kayh0aGlzLDMpfVZpKCl7cmV0dXJuIF8ud2UodGhpcywzKX19O18uZXhhPWNsYXNzIGV4dGVuZHMgXy5se2NvbnN0cnVjdG9yKGEpe3N1cGVyKGEpfX07Xy5Xbz1bLTEse31dO3ZhciBmeGE9Y2xhc3MgZXh0ZW5kcyBfLmx7Y29uc3RydWN0b3IoYSl7c3VwZXIoYSl9bTdhKCl7cmV0dXJuIF8uaWsodGhpcywyKX1uN2EoKXtyZXR1cm4gXy5payh0aGlzLDMpfX07dmFyIGJ4YTtfLlhvPWZ1bmN0aW9uKGEpe3JldHVybiBfLmVpKGEsMil9O2J4YT1jbGFzcyBleHRlbmRzIF8ubHtjb25zdHJ1Y3RvcihhKXtzdXBlcihhLDUwMCl9TGYoKXtyZXR1cm4gXy5payh0aGlzLDEpfVVvKCl7cmV0dXJuIF8uZWkodGhpcywxKX1nZXREZXZpY2UoKXtyZXR1cm4gXy5payh0aGlzLDIpfXdLKCl7cmV0dXJuIF8uaGsodGhpcywzKX1Laigpe3JldHVybiBfLnEodGhpcyxfLmR4YSw1KX1HcSgpe3JldHVybiBfLmZrKHRoaXMsOCl9fTt2YXIgZlNhPWZ1bmN0aW9uKGEpe2Z1bmN0aW9uIGIoYyl7Yz1hW2NdO3JldHVybiB0eXBlb2YgYz09PSJzdHJpbmciJiZjLnN0YXJ0c1dpdGgoIiUuQC4iKT9KU09OLnBhcnNlKCJbIitjLnN1YnN0cmluZyg0LGMubGVuZ3RoKSk6Y31PYmplY3Qua2V5cyhhKS5sZW5ndGg+NDUmJl8uVmUoRXJyb3IoIlRjIikse2xldmVsOjF9KTtyZXR1cm57YjhjOmIoIkE1dEYzYiIpLE5tOmZ1bmN0aW9uKCl7cmV0dXJuIG5ldyBiU2EoYigiemhrUk8iKSl9LEkwOmZ1bmN0aW9uKCl7cmV0dXJuIG5ldyBfLnl3YShiKCJ3MmJ0QWUiKSl9LEJMYjpmdW5jdGlvbigpe3JldHVybiBuZXcgY1NhKGIoImVhMlZLIikpfSxhdXRoVXNlcjpiKCJweE80WmQiKSxRZjpmdW5jdGlvbigpe3JldHVybiBuZXcgYnhhKGIoIm1YT1k1ZCIpKX0sY3NwX25vbmNlOmIoIlNzUTR4Iiksa0NkOmIoIk11SldqZCIpLGxhbmd1YWdlQ29kZTpiKCJHV3NkS2UiKSxsb2NhbGU6YigiTjF5Y2FiIiksZVM6YigiTWdVY0RiIikscnRsOmIoIlNJc3JUZCIpLApzY3JvbGxUb1NlbGVjdGVkSXRlbUlubGluZTpiKCJmeUxwRGMiKSxsTWM6ZnVuY3Rpb24oKXtyZXR1cm4gbmV3IEJSYShiKCJKUG5UcCIpKX0sVkZkOmZ1bmN0aW9uKCl7cmV0dXJuIG5ldyBDUmEoYigiWnh0UENkIikpfSxXRmQ6ZnVuY3Rpb24oKXtyZXR1cm4gbmV3IERSYShiKCJOeXpDd2UiKSl9LFhGZDpmdW5jdGlvbigpe3JldHVybiBuZXcgRVJhKGIoInNwejJxIikpfSxZRmQ6ZnVuY3Rpb24oKXtyZXR1cm4gbmV3IEZSYShiKCJnZWlReGMiKSl9LFpGZDpmdW5jdGlvbigpe3JldHVybiBuZXcgR1JhKGIoInhGbWNvZiIpKX0sQmI6ZnVuY3Rpb24oKXtyZXR1cm4gbmV3IFRSYShiKCJsRHFpb2YiKSl9LGFHZDpmdW5jdGlvbigpe3JldHVybiBuZXcgSFJhKGIoImtYVlV6ZCIpKX0saVM6ZnVuY3Rpb24oKXtyZXR1cm4gbmV3IFVSYShiKCJzQ1U1MGQiKSl9LHc2YjpmdW5jdGlvbigpe3JldHVybiBuZXcgSVJhKGIoInc5WmljYyIpKX0sTGk6ZnVuY3Rpb24oKXtyZXR1cm4gbmV3IFZSYShiKCJJa1NzcmYiKSl9LAptTWM6ZnVuY3Rpb24oKXtyZXR1cm4gbmV3IFJSYShiKCJNUjB3NCIpKX0sYkdkOmZ1bmN0aW9uKCl7cmV0dXJuIG5ldyBKUmEoYigiT0l0TnFmIikpfSxuTWM6ZnVuY3Rpb24oKXtyZXR1cm4gbmV3IEtSYShiKCJqMkZvUyIpKX0sWWQ6ZnVuY3Rpb24oKXtyZXR1cm4gbmV3IFdSYShiKCJlMnpvVyIpKX0sRm06ZnVuY3Rpb24oKXtyZXR1cm4gbmV3IFhSYShiKCJXMUJ0ZSIpKX0sY0dkOmZ1bmN0aW9uKCl7cmV0dXJuIG5ldyBMUmEoYigicGJ2c2hmIikpfSxtZGI6ZnVuY3Rpb24oKXtyZXR1cm4gbmV3IE1SYShiKCJ1OW1lcCIpKX0sZEdkOmZ1bmN0aW9uKCl7cmV0dXJuIG5ldyBOUmEoYigibXJxYVFiIikpfSxlR2Q6ZnVuY3Rpb24oKXtyZXR1cm4gbmV3IE9SYShiKCJVbXExMGUiKSl9LEJsOmZ1bmN0aW9uKCl7cmV0dXJuIG5ldyBZUmEoYigiazdUcXllIikpfSxmR2Q6ZnVuY3Rpb24oKXtyZXR1cm4gbmV3IFBSYShiKCJ5NTBMQyIpKX0sVWU6ZnVuY3Rpb24oKXtyZXR1cm4gbmV3IFpSYShiKCJqZlNFa2QiKSl9LApnR2Q6ZnVuY3Rpb24oKXtyZXR1cm4gbmV3IFFSYShiKCJHVnRQbSIpKX0sdEE6ZnVuY3Rpb24oKXtyZXR1cm4gbmV3IFNSYShiKCJNZXhOdGUiKSl9LFZkOmZ1bmN0aW9uKCl7cmV0dXJuIG5ldyAkUmEoYigiQWFoY25mIikpfSxoR2Q6ZnVuY3Rpb24oKXtyZXR1cm4gbmV3IGFTYShiKCJQRmhtZWQiKSl9LHRNYzpiKCJCNHBaYmQiKSx6OWI6ZnVuY3Rpb24oKXtyZXR1cm4gbmV3IGVTYShiKCJya0QyNSIpKX0sQjc6Yigick55dUpjIiksUkY6YigiTFU1ZkdiIikscUlkOmIoImdYa0hvZSIpfX07dmFyIGdTYTtfLnNpPSgpPT57dmFyIGE9d2luZG93LklKX3ZhbHVlczthPWE9PT13aW5kb3cuSUpfdmFsdWVzJiZnU2E/Z1NhOmdTYT1hP2ZTYShhKTp7fTtyZXR1cm4gYX07Xy5oU2E9e307Xy5DaT1mdW5jdGlvbihhLGIpe3RoaXMueW49YTt0aGlzLndhPWI7YS5wcm90b3R5cGUuWGEmJihfLmhTYVthLnByb3RvdHlwZS5YYV09dGhpcyl9O18uQ2kucHJvdG90eXBlLm9hPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMueW4ucHJvdG90eXBlLlhhfTtfLkNpLnByb3RvdHlwZS5nZXRJbnN0YW5jZT1mdW5jdGlvbihhKXtyZXR1cm4gbmV3IHRoaXMueW4oYSl9O18uZHlhPWZ1bmN0aW9uKGEsYil7dmFyIGM9bnVsbDthIGluc3RhbmNlb2YgXy5sP3R5cGVvZiBhLlhhPT09InN0cmluZyImJihjPWEuWGEpOmEgaW5zdGFuY2VvZiBfLkNpP3R5cGVvZiBhLm9hPT09ImZ1bmN0aW9uIiYmKGM9YS55bi5wcm90b3R5cGUuWGEpOnR5cGVvZiBhLnByb3RvdHlwZS5YYT09PSJzdHJpbmciJiYoYz1hLnByb3RvdHlwZS5YYSk7cmV0dXJuIGImJiFjPyIiOmN9O3ZhciBpU2E7Xy5Zbz1mdW5jdGlvbigpe3JldHVybiJfIn07Xy5abz17fTtfLiRvPWZ1bmN0aW9uKGEpe2lmKCEoYSBpbnN0YW5jZW9mIF8ubCkpcmV0dXJuIiIrYTt2YXIgYj1fLmR5YShhLCEwKTtyZXR1cm4gYj8oXy5ab1tiXXx8Xy5ZbykoYSk6InVuc3VwcG9ydGVkIn07Xy5hcD1mdW5jdGlvbihhKXtyZXR1cm4gYSE9bnVsbD9hOiIifTtpU2E9ZnVuY3Rpb24oYSl7cmV0dXJuIGEucmVwbGFjZSgvWztcc1x8XCtcMF0vZyxmdW5jdGlvbihiKXtyZXR1cm4ifCIrYi5jaGFyQ29kZUF0KDApKyIrIn0pfTtfLmJwPWZ1bmN0aW9uKGEpe3ZhciBiPV8uZHlhKGEpO3R5cGVvZiBhPT09ImZ1bmN0aW9uIj9hPSIiOihhPV8uJG8oYSksYT1pU2EoYSkpO3JldHVybntYYTpiLGlkOmEsVTg6YisiOyIrYX19O18uUHhhPW5ldyBfLllkKCJhIik7Xy5qU2E9bmV3IF8uWWQoImIiKTtfLmtTYT1uZXcgXy5ZZCgiYyIpO18ubFNhPWNsYXNzIGV4dGVuZHMgXy5aZHtjb25zdHJ1Y3RvcihhLGIsYyl7c3VwZXIoYSxiKTt0aGlzLm5vZGU9Yjt0aGlzLmtpbmQ9Y319O3ZhciBwU2EscVNhLHJTYTtfLm5TYT1mdW5jdGlvbihhLGIpe3ZhciBjPV8uZHlhKGIpO3JldHVybiBfLm1TYShhKS5maWx0ZXIoZD0+ZC5pbmNsdWRlcyhjKSkubGVuZ3RoPjB9O18ubVNhPWZ1bmN0aW9uKGEpe3JldHVybihhPV8ub1NhKGEpLmdldEF0dHJpYnV0ZSgianNkYXRhIikpP18ubWEoYSkuc3BsaXQoL1xzKy8pOltdfTtwU2E9ZnVuY3Rpb24oYSl7aWYoKGE9YS5nZXRBdHRyaWJ1dGUoImpzZGF0YSIpKSYmYS5pbmRleE9mKCJkZWZlcnJlZC0iKT09MClyZXR1cm4gXy5tYShhLnN1YnN0cmluZyg5KSl9O18ub1NhPWZ1bmN0aW9uKGEsYil7dmFyIGM9cFNhKGEpO2lmKGMpe2xldCBkO2ImJihkPWIucXVlcnlTZWxlY3RvcigiIyIrYykpO2R8fChkPVp1YShhLGMpKTtyZXR1cm4gZH1yZXR1cm4gYX07CnFTYT1mdW5jdGlvbihhKXt2YXIgYj1wU2EoYSk7cmV0dXJuIGI/bmV3IF8uU2coKGMsZCk9Pnt2YXIgZT0oKT0+e2I9cFNhKGEpO3ZhciBmPVp1YShhLGIpO2Y/YyhmLmdldEF0dHJpYnV0ZSgianNkYXRhIikpOndpbmRvdy5kb2N1bWVudC5yZWFkeVN0YXRlPT0iY29tcGxldGUiPyhmPVsiVW5hYmxlIHRvIGZpbmQgZGVmZXJyZWQganNkYXRhIHdpdGggaWQ6ICIrYl0sYS5oYXNBdHRyaWJ1dGUoImpzY29udHJvbGxlciIpJiZmLnB1c2goImpzY29udHJvbGxlcjogIithLmdldEF0dHJpYnV0ZSgianNjb250cm9sbGVyIikpLGEuaGFzQXR0cmlidXRlKCJqc21vZGVsIikmJmYucHVzaCgianNtb2RlbDogIithLmdldEF0dHJpYnV0ZSgianNtb2RlbCIpKSxkKEVycm9yKGYuam9pbigiXG4iKSkpKTpfLkluKGUsNTApfTtfLkluKGUsNTApfSk6Xy5EZyhhLmdldEF0dHJpYnV0ZSgianNkYXRhIikpfTtyU2E9ZnVuY3Rpb24oYSl7dmFyIGI9cFNhKGEpO3JldHVybiBiPyFadWEoYSxiKTohMX07dmFyIFF4YSx1U2E7Xy5KeGEucHJvdG90eXBlLlhhPSJ2M0JibWMiO18uc1NhPXt9O18udFNhPTA7Cl8udlNhPWZ1bmN0aW9uKGEsYj0hMCl7aWYoXy50U2EhPTAmJmEmJihhLm5vZGVUeXBlPT0xfHxhLm5vZGVUeXBlPT0xMSkpe3ZhciBjPV8uUmcoYSk/W2FdOltdO2ImJl8uSWEoYyxhLnF1ZXJ5U2VsZWN0b3JBbGwoIltqc2RhdGFdIikpO2M9Yy5maWx0ZXIoZnVuY3Rpb24oZil7Zi5oYXNBdHRyaWJ1dGUoImpzZGF0YSIpPyhmPWYuZ2V0QXR0cmlidXRlKCJqc2RhdGEiKSxmPSFfLmphKF8uZG0oZikpKTpmPSExO3JldHVybiBmfSk7dmFyIGQ9Xy5SZyhhKT9hOnZvaWQgMCxlPW5ldyBTZXQ7Xy5MYShjLGZ1bmN0aW9uKGYpe3ZhciBnPV8ub1NhKGYsZCkuZ2V0QXR0cmlidXRlKCJqc2RhdGEiKTtpZihnKXtnPV8ubWEoZykuc3BsaXQoIiAiKS5maWx0ZXIobT0+IW0uc3RhcnRzV2l0aCgiO3Vuc3VwcG9ydGVkIikpO3ZhciBoPU5PYS5nZXQoZil8fHt9LGs9e307Zy5mb3JFYWNoKGZ1bmN0aW9uKG0pe3ZhciBuPXVTYShtKS5pbnN0YW5jZUlkO18uc1NhW21dPyhrW25dPV8uc1NhW21dLAplLmFkZChtKSk6aFtuXSYmKGtbbl09aFtuXSl9KTtPYmplY3Qua2V5cyhrKS5sZW5ndGghPT0wJiZOT2Euc2V0KGYsayl9fSk7Zm9yKGxldCBmIG9mIGUpZGVsZXRlIF8uc1NhW2ZdLF8udFNhLS19fTtReGE9ZnVuY3Rpb24oYSl7YS5nZXRFdmVudFRhcmdldCgpLmxpc3RlbihfLlB4YSxiPT5fLnZTYShiLm5vZGUpKTthLmdldEV2ZW50VGFyZ2V0KCkubGlzdGVuKF8ua1NhLGI9Pl8udlNhKGIubm9kZSkpfTtfLndTYT1mdW5jdGlvbihhLGIpe3ZhciBjPXVTYShiKS5pbnN0YW5jZUlkO2lmKCFjLnN0YXJ0c1dpdGgoIiQiKSlyZXR1cm4gbnVsbDt2YXIgZD1OT2EuZ2V0KGEpO18uc1NhW2JdJiYoZHx8KGQ9e30sTk9hLnNldChhLGQpKSxkW2NdPV8uc1NhW2JdLGRlbGV0ZSBfLnNTYVtiXSxfLnRTYS0tKTtpZighZClyZXR1cm4gbnVsbDtpZihhPWRbY10pcmV0dXJuIF8uRGcoYSk7dGhyb3cgRXJyb3IoIlVjYCIrYik7fTsKdVNhPWZ1bmN0aW9uKGEpe2E9Xy5tYShhKS5zcGxpdCgvOy8pO3JldHVybntYYTphWzBdLG1lc3NhZ2VLZXk6YVswXSsiOyIrYVsxXSxpZDphWzFdLGluc3RhbmNlSWQ6YVsyXX19O18uUnhhPSEwO2ZjKCJxVG5vQmYiLCJHbUV5Q2IiKTtfLmR3YT1fLmtjKCJxVG5vQmYiLFtdKTtfLk9jKF8uZHdhKTtfLmN3YT14ZCgieHMxR3kiLCJWZ2Q2aGIiLCJqTnJJc2YiKTtfLmp2YT0ia2V5Ijt2YXIgY3ZhPU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHk7JHVhLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKG51bGwpO3ZhciBHdmE9Xy5mdmEoKTtfLkF2YT1udWxsO18uQnZhPW51bGw7dmFyIHl2YT1jbGFzc3tjb25zdHJ1Y3RvcihhKXt0aGlzLmthPVtdO3RoaXMub2E9W107dGhpcy5ub2RlPWF9fTt2YXIgenZhPXR5cGVvZiBOb2RlIT09InVuZGVmaW5lZCImJk5vZGUucHJvdG90eXBlLmdldFJvb3ROb2RlfHxmdW5jdGlvbigpe2Zvcih2YXIgYT10aGlzLGI9YTthOyliPWEsYT1hLnBhcmVudE5vZGU7cmV0dXJuIGJ9O3ZhciBodmE7Xy5rdmE9ZnVuY3Rpb24oYSxiKXt2YXIgYzsoYz1hLmthKXx8KGI9QXJyYXkoYiksYXZhKGIsMCksYz1hLmthPWIpO3JldHVybiBjfTtodmE9Y2xhc3N7Y29uc3RydWN0b3IoYSxiKXt0aGlzLmthPW51bGw7dGhpcy53YT0hMTt0aGlzLm9hPWE7dGhpcy5rZXk9Yjt0aGlzLnRleHQ9dm9pZCAwfX07dmFyIG92YSxGaCxzdmEsdHZhLHJ2YSxxdmEseHZhO292YT1udWxsO0ZoPW51bGw7Xy5FaD1udWxsO3N2YT1udWxsO3R2YT1bXTtydmE9bXZhO3F2YT1udWxsO3h2YT1bXTtfLnhTYT1FdmEoKTt2YXIgR2g9W10sSXZhPTA7dmFyIEh2YT1uZXcgJHVhO3ZhciBXdmE9bmV3ICR1YTt2YXIgZXdhPW51bGwsYndhPWNsYXNzIGV4dGVuZHMgRXJyb3J7Y29uc3RydWN0b3IoYSl7c3VwZXIoYSk7dGhpcy5uYW1lPSJIeWRyYXRpb25FcnJvciJ9fTtfLmNwPWNsYXNzIGV4dGVuZHMgXy5se2NvbnN0cnVjdG9yKGEpe3N1cGVyKGEsMSl9fTtfLnlTYT1fLldiKF8uY3ApO3ZhciB6U2EsQVNhLEJTYSxDU2Esc3dhLERTYSxsd2EsbXdhLGl3YSxyd2E7elNhPWZ1bmN0aW9uKGEsYixjKXt2YXIgZD1iLnN1YnN0cmluZyg1KS50b0xvd2VyQ2FzZSgpLnJlcGxhY2UoLy0oW2Etel0pL2csZ3dhKTthLmthLnB1c2goYixlPT57ZS5kYXRhc2V0W2RdPWN9KX07QVNhPWZ1bmN0aW9uKGEsYil7YS5rYS5wdXNoKCJqc2xvZyIsYz0+e2Muc2V0QXR0cmlidXRlKCJqc2xvZyIsYil9KX07QlNhPWZ1bmN0aW9uKGEsYil7dmFyIGM9Xy5EYyhiKTtpZihjPT1udWxsKXRocm93IEVycm9yKCJZY2AiK2IpO2Eua2EucHVzaCgiaHJlZiIsZD0+e18uWGMoaHdhKGQpLGMpfSk7cmV0dXJuIGF9O0NTYT1mdW5jdGlvbihhLC4uLmIpe3ZhciBjPWIubWFwKGQ9PntkPV8uRGMoZCk7aWYoZD09bnVsbCl0aHJvdyBFcnJvcigiWmNgIitkKTtyZXR1cm4gZH0pLmpvaW4oIiAiKTthLmthLnB1c2goInBpbmciLGQ9Pntod2EoZCkuc2V0QXR0cmlidXRlKCJwaW5nIixjKX0pfTsKc3dhPWZ1bmN0aW9uKGEsYixjKXthPWEua2E7Zm9yKGxldCBlPTA7ZTxhLmxlbmd0aDtlKz0yKXtpZighYyl7dmFyIGQ9YVtlXTtpZihiLmhhc0F0dHJpYnV0ZShkKSl0aHJvdyBFcnJvcigiWGNgIitkKTt9YVtlKzFdKGIpfX07RFNhPWNsYXNze2NvbnN0cnVjdG9yKCl7dGhpcy5rYT1bXX19O2x3YT1jbGFzc3tjb25zdHJ1Y3RvcihhLGIsYyxkLGUpe3RoaXMuaWQ9YTt0aGlzLmRhdGE9Yjt0aGlzLkp3Yj1jO3RoaXMua2E9ZDt0aGlzLm9hPWV9fTttd2E9Y2xhc3N7Y29uc3RydWN0b3IoYSxiKXt0aGlzLm5hbWU9YTt0aGlzLmFyZ3M9Yn19O2l3YT1jbGFzc3tjb25zdHJ1Y3Rvcigpe3RoaXMuZWxlbWVudHM9W107dGhpcy5rYT1bXX19O3J3YT1bKDAsXy5sYylgZGF0YS1zb3lsb2dnaW5nZnVuY3Rpb24tYF07Xy5lcD1jbGFzc3tjb25zdHJ1Y3RvcihhLGIsYyl7dGhpcy5rYT1hO3RoaXMub2E9Ynx8KDAsXy55U2EpKCk7dGhpcy53YT1jfWdldElkKCl7cmV0dXJuIHRoaXMua2F9Z2V0TmFtZSgpe3JldHVybiB0aGlzLndhfWdldE1ldGFkYXRhKCl7cmV0dXJuIHRoaXMub2F9dG9TdHJpbmcoKXtyZXR1cm4ielNveVZleiJ9fTsKXy5JPWNsYXNze2NvbnN0cnVjdG9yKGEsYil7dGhpcy5vYT1hO3RoaXMua2E9Yn1CbSgpe3JldHVybiB0aGlzLm9hfWdldERhdGEoKXtyZXR1cm4gdGhpcy5rYX10b1N0cmluZygpe3JldHVybiJ6U295VmVEeiJ9fTtfLlBoPW5ldyBfLlJiKDMyMjE4NTMwOSxfLmNwLG51bGwsMCxfLk9qLF8uWmgpO3ZhciB2d2E9WyIvYWNsayIsIi9wYWdlYWQvYWNsayJdO18uZnA9ZnVuY3Rpb24oKXt2YXIgYT1fLnp3YSgpO3JldHVybiBfLnQoYSwzLCIwIil9O18uRVNhPSgwLF8ubGMpYHZlLWA7dmFyIEZTYSxBd2E7CkZTYT17QVJST1dfS0VZUzp7c3RyaW5nOiJhcnJvd19rZXlzIixiSjoiV3huN3ViIn0sQVVUT01BVEVEOntzdHJpbmc6ImF1dG9tYXRlZCIsYko6IndqcExZYyJ9LENMSUNLOntzdHJpbmc6ImNsaWNrIixiSjoiY091Q2dkIn0sRFJBR0VORDp7c3RyaW5nOiJkcmFnZW5kIixiSjoiUmxEM1cifSxEUk9QOntzdHJpbmc6ImRyb3AiLGJKOiJEYVk4M2IifSxHRU5FUklDX0NMSUNLOntzdHJpbmc6ImdlbmVyaWNfY2xpY2siLGJKOiJzekpnamMifSxIT1ZFUjp7c3RyaW5nOiJob3ZlciIsYko6IlptZGtFIn0sSU1QUkVTU0lPTjp7c3RyaW5nOiJpbXByZXNzaW9uIixiSjoieHI2YkIifSxLRVlCT0FSRF9FTlRFUjp7c3RyaW5nOiJrZXlib2FyZF9lbnRlciIsYko6IlNZaEg5ZCJ9LEtFWVBSRVNTOntzdHJpbmc6ImtleXByZXNzIixiSjoiS3IydzRiIn0sTE9OR19QUkVTUzp7c3RyaW5nOiJsb25nX3ByZXNzIixiSjoidGZTTlZiIn0sTU9VU0VPVkVSOntzdHJpbmc6Im1vdXNlb3ZlciIsYko6IkZyZkUzYiJ9LApSSUdIVF9DTElDSzp7c3RyaW5nOiJyaWdodGNsaWNrIixiSjoiQ1lRbXplIn0sU0NST0xMOntzdHJpbmc6InNjcm9sbCIsYko6Ilh1SHBzYiJ9LFNXSVBFOntzdHJpbmc6InN3aXBlIixiSjoiZXRlZWRiIn0sVklTOntzdHJpbmc6InZpcyIsYko6IkhrZ0JzZiJ9fTtBd2E9Q3dhKEZTYSk7Xy5HU2E9bmV3IE1hcDtmb3IobGV0IGEgb2YgT2JqZWN0LmtleXMoRlNhKSlfLkdTYS5zZXQoRlNhW2FdLmJKLEZTYVthXS5zdHJpbmcpO18uSFNhPUN3YSh7VFJBQ0s6e3N0cmluZzoidHJhY2siLGJKOiJ1MDE0TiJ9LElOREVYOntzdHJpbmc6ImluZGV4IixiSjoiY1FZU1BjIn0sTVVUQUJMRTp7c3RyaW5nOiJtdXRhYmxlIixiSjoiZFlGajdlIn0sQ09NUE9ORU5UX0lEOntzdHJpbmc6ImNpZCIsYko6ImNPdXlxIn0sVEVTVF9DT0RFOntzdHJpbmc6InRjIixiSjoiRE02RXplIn19KTt2YXIgRHdhPXtzOmZ1bmN0aW9uKGEsYixjKXtyZXR1cm4gaXNOYU4oYyl8fGM9PSIifHxhLmxlbmd0aD49TnVtYmVyKGMpP2E6YT1iLmluZGV4T2YoIi0iLDApPi0xP2ErIiAiLnJlcGVhdChOdW1iZXIoYyktYS5sZW5ndGgpOiIgIi5yZXBlYXQoTnVtYmVyKGMpLWEubGVuZ3RoKSthfSxmOmZ1bmN0aW9uKGEsYixjLGQsZSl7ZD1hLnRvU3RyaW5nKCk7aXNOYU4oZSl8fGU9PSIifHwoZD1wYXJzZUZsb2F0KGEpLnRvRml4ZWQoZSkpO3ZhciBmPU51bWJlcihhKTwwPyItIjpiLmluZGV4T2YoIisiKT49MD8iKyI6Yi5pbmRleE9mKCIgIik+PTA/IiAiOiIiO051bWJlcihhKT49MCYmKGQ9ZitkKTtpZihpc05hTihjKXx8ZC5sZW5ndGg+PU51bWJlcihjKSlyZXR1cm4gZDtkPWlzTmFOKGUpP01hdGguYWJzKE51bWJlcihhKSkudG9TdHJpbmcoKTpNYXRoLmFicyhOdW1iZXIoYSkpLnRvRml4ZWQoZSk7YT1OdW1iZXIoYyktZC5sZW5ndGgtZi5sZW5ndGg7Yi5pbmRleE9mKCItIiwwKT49MD8KZD1mK2QrIiAiLnJlcGVhdChhKTooYj1iLmluZGV4T2YoIjAiLDApPj0wPyIwIjoiICIsZD1mK2IucmVwZWF0KGEpK2QpO3JldHVybiBkfSxkOmZ1bmN0aW9uKGEsYixjLGQsZSxmLGcsaCl7cmV0dXJuIER3YS5mKHBhcnNlSW50KGEsMTApLGIsYyxkLDAsZixnLGgpfX07RHdhLmk9RHdhLmQ7RHdhLnU9RHdhLmQ7Xy5JU2E9ZnVuY3Rpb24oYSxiKXthLkVhLnB1c2goYil9O18uSlNhPWNsYXNze2NvbnN0cnVjdG9yKGEsYil7dGhpcy5HYT1hO3RoaXMua2E9bnVsbDt0aGlzLkFhPVtdO3RoaXMud2E9dm9pZCAwO3RoaXMuS2E9dGhpcy5vYT0hMTt0aGlzLkxMYj1udWxsO3RoaXMuRWE9W107dGhpcy5CYT12b2lkIDA7dGhpcy5BTmE9Ynx8ITE7dGhpcy5PQmE9bmV3IFNldH1nZXRJRCgpe3JldHVybiB0aGlzLkdhfWdldEluZGV4KCl7cmV0dXJuIHRoaXMua2F9SmYoKXtyZXR1cm4gdGhpcy5vYX1zZXRBdHRyaWJ1dGUoYSl7dGhpcy5MTGI9YTtyZXR1cm4gdGhpc31nZXRBdHRyaWJ1dGUoKXtyZXR1cm4gdGhpcy5MTGJ9SWEoYSl7cmV0dXJuIHRoaXMuQU5hP18uQndhKGEpOmF9fTtfLkpTYS5wcm90b3R5cGUuaXNNdXRhYmxlPV8uSlNhLnByb3RvdHlwZS5KZjtfLkt3YT1TeW1ib2woImdkIik7Xy5LU2E9U3ltYm9sKCJoZCIpO18uTHdhPWNsYXNze2NvbnN0cnVjdG9yKGEsYil7dGhpcy5YMWE9YTt0aGlzLlVOYT1ifX07Xy5MU2E9ITE7dmFyIEV3YTtfLmdwPWNsYXNzIGV4dGVuZHMgXy5se2NvbnN0cnVjdG9yKGEpe3N1cGVyKGEpfW9hKGEpe3JldHVybiBfLkdqKHRoaXMsMSxFd2EsYSl9T18oYSl7Xy5Haih0aGlzLDIsRXdhLGEpfX07RXdhPVsxLDJdO18uaHA9WzAsRXdhLFszLDZdLF8uSWwsXy5PbixfLklsLF8ubUthLF8ud2wsMixfLklsLFswLF8udGwsXy5DXV07dmFyIE1TYT1jbGFzcyBleHRlbmRzIF8ubHtjb25zdHJ1Y3RvcihhKXtzdXBlcihhKX19O3ZhciBOU2E9ZnVuY3Rpb24oYSxiKXtfLklTYShhLGZ1bmN0aW9uKGMpe2MgaW5zdGFuY2VvZiBNU2EmJiFfLmdoKGMsMykmJl8uZmgoYywzLGIpfSl9LE9TYT1jbGFzcyBleHRlbmRzIF8uSlNhe2NvbnN0cnVjdG9yKGEpe3N1cGVyKGEpO3RoaXMuT2E9dGhpcy5OYT10aGlzLlBhPW51bGx9Q2goKXtyZXR1cm4gdGhpcy5OYX19O18uUFNhPWNsYXNzIGV4dGVuZHMgXy5se2NvbnN0cnVjdG9yKGEpe3N1cGVyKGEsMil9fTtfLlFTYT1bLTIse30sXy5EXTtfLlNTYT1mdW5jdGlvbihhLGIpe3JldHVybiBfLnZrKGEsNSxfLlJTYSxiKX07Xy5pcD1jbGFzcyBleHRlbmRzIF8ubHtjb25zdHJ1Y3RvcihhKXtzdXBlcihhKX1nZXRFdmVudCgpe3JldHVybiBfLlNoKHRoaXMsXy5DZSwxLF8uVFNhKX19O18uVFNhPVsxLDMsNF07Xy5SU2E9WzIsNV07Xy5VU2E9Y2xhc3MgZXh0ZW5kcyBfLmx7Y29uc3RydWN0b3IoYSl7c3VwZXIoYSl9fTtfLmpwPWNsYXNzIGV4dGVuZHMgXy5se2NvbnN0cnVjdG9yKGEpe3N1cGVyKGEsMjMzKX1qZGEoKXtyZXR1cm4gXy54ZSh0aGlzLDEpfXZKKCl7cmV0dXJuIF8udCh0aGlzLDUpfUNoKCl7cmV0dXJuIF8ucSh0aGlzLF8uZ3AsMTEpfXNldFZpc2libGUoYSl7cmV0dXJuIF8uWmgodGhpcyw2LGEpfX07Xy5WU2E9Xy5kYyhfLmpwKTtfLmtwPXt9O18uV1NhPV8uVWIoMjczLF8uanAsXy5QU2EpO18ua3BbMjczXT1fLlFTYTt2YXIgWFNhPVswLF8uR107Xy5scD1mdW5jdGlvbihhLGIpe3JldHVybiBfLmZoKGEsNSxiKX07Xy5tcD1jbGFzcyBleHRlbmRzIF8ubHtjb25zdHJ1Y3RvcihhKXtzdXBlcihhLDMzMSl9amRhKCl7cmV0dXJuIF8uZGsodGhpcywxKX12Sigpe3JldHVybiBfLmdoKHRoaXMsNSl9c2V0VmlzaWJsZShhKXtyZXR1cm4gXy5aaCh0aGlzLDYsYSl9Q2goKXtyZXR1cm4gXy5xKHRoaXMsXy5ncCwxMSl9Z2V0SW5kZXgoKXtyZXR1cm4gXy54ZSh0aGlzLDEzMSwtMSl9eGQoYSl7cmV0dXJuIF8uU2oodGhpcywyNjAsYSl9fTtfLm5wPXt9O18ubnBbODUyXT1YU2E7Xy5rcFs4NTJdPVhTYTt2YXIgWVNhPVswLF8uVFNhLF8uUlNhLF8uSWwsXy5PbixfLklsLF8uUW4sXy5JbCxfLm1LYSxfLkdsLC0xXTt2YXIgWlNhPVswLFlTYV07Xy4kU2E9Wy0zMzEsXy5ucCxfLkMsMSxfLkMsXy50bCxfLkUsXy5HLF8uQywtMixfLnRsLF8uaHAsNSxfLkUsMzcsXy5FLDUxLF8uemwsMjIsXy5ELF8uQywtMSwxNixfLkMsMTYsXy5KbCwzNyxfLkUsOCxfLkMsMTgsWlNhLDcsXy5KbCwxOSxfLkVsLDE5LF8uQyw0OSxfLnRsXTtfLmFUYT1bLTIzMyxfLmtwLF8uQywxLF8uQyxfLnRsLF8uRSxfLkcsXy5DLDMsXy5ocCw1LF8uRSwxMTIsXy5ELDE4LF8uQyw4MixaU2FdO3ZhciBId2E7Xy5iVGE9MTtId2E9bnVsbDt2YXIgY1RhLGRUYTtjVGE9KGEsYik9PntsZ2EoYiwxLF8uSmooYSwxKSk7Xy5IZ2EoYiwyLF8uVWgoYSwyKSk7Xy5IZ2EoYiwzLF8uVWgoYSwzKSl9O2RUYT0oYSxiKT0+e3dmYShiLDEsXy5xKGEsXy5DZSwxKSxjVGEpO2xnYShiLDIsXy5KaihhLDIpKX07Xy5lVGE9ZnVuY3Rpb24oYSl7dmFyIGI9bmV3IF8uZkRhO2E9YS5rYTt2YXIgYz1fLnhlKGEsMSwtMSk7YyE9bnVsbCYmQWdhKGIsMSxjKTtjPV8uY2koYSwyKTtjIT1udWxsJiZBZ2EoYiwyLGMpO18ud2UoYSw1KSYmKGM9Xy54ZShhLDUsLTEpLGMhPW51bGwmJkFnYShiLDUsYykpO3dmYShiLDEzLF8ucShhLF8uQWUsMTMpLGRUYSk7cmV0dXJuIjAiK18uT2EoXy5lRGEoYiksNCl9O18uZlRhPWNsYXNze2NvbnN0cnVjdG9yKGEpe3RoaXMua2E9YX19O18uZ1RhPWNsYXNzIGV4dGVuZHMgXy5se2NvbnN0cnVjdG9yKGEpe3N1cGVyKGEpfX07dmFyIGhUYT1bMCxaU2FdO18ub3A9Y2xhc3MgZXh0ZW5kcyBfLmx7Y29uc3RydWN0b3IoYSl7c3VwZXIoYSl9fTt2YXIgaVRhO18ucHA9ZnVuY3Rpb24oYSl7cmV0dXJuIF8uQShhLDIpfTtfLnFwPWZ1bmN0aW9uKGEpe3JldHVybiBfLkEoYSwzKX07Xy5ycD1mdW5jdGlvbihhKXtyZXR1cm4gXy5BKGEsNCl9O18uc3A9ZnVuY3Rpb24oYSxiKXtyZXR1cm4gXy5sayhhLDgsYil9O18udHA9ZnVuY3Rpb24oYSl7cmV0dXJuIF8uT2ooYSw5KX07Xy51cD1mdW5jdGlvbihhLGIpe3JldHVybiBfLlpoKGEsOSxiKX07Xy52cD1mdW5jdGlvbihhLGIpe3JldHVybiBfLlNiKGEsXy5ncCwxMCxiKX07Xy53cD1mdW5jdGlvbihhKXtyZXR1cm4gXy5xKGEsXy5tcCwxNil9O18ueHA9ZnVuY3Rpb24oYSxiKXtyZXR1cm4gXy5TYihhLF8ubXAsMTYsYil9O18ueXA9ZnVuY3Rpb24oYSxiKXtyZXR1cm4gXy5TYihhLF8uaGgsMjEsYil9OwpfLnpwPWNsYXNzIGV4dGVuZHMgXy5se2NvbnN0cnVjdG9yKGEpe3N1cGVyKGEsMjIpfU9kKCl7cmV0dXJuIF8udCh0aGlzLDEpfU5pKCl7cmV0dXJuIF8ucGgodGhpcywxKX1DaCgpe3JldHVybiBfLnEodGhpcyxfLmdwLDEwKX13Yigpe3JldHVybiBfLkEodGhpcywxMSl9Y0QoKXtyZXR1cm4gXy5xKHRoaXMsXy5vcCwxMyl9SmQoKXtyZXR1cm4gXy5raih0aGlzLF8ub3AsMTMpfXhkKCl7cmV0dXJuIF8udCh0aGlzLDIwKX12Sigpe3JldHVybiBfLnEodGhpcyxfLmhoLDIxKX19O2lUYT17fTtfLnpwLnByb3RvdHlwZS5YYT0idlZKRjRlIjtfLmpUYT1fLlViKDIyLF8uenAsXy5nVGEpO2lUYVsyMl09aFRhO18uQXA9WzAsXy5DLDEsXy5HLF8uRCwtMV07Xy5CcD1bLTIyLGlUYSxfLkUsXy5ELC0yLF8uRSwxLF8uRyxfLkMsXy5HLF8uaHAsXy5ELF8uQyxfLkFwLF8uQywtMSxfLiRTYSxfLkQsLTEsWzAsXy5FLC0xXSxfLkUsXy5Ib107Xy5rVGE9Xy5IaGEoXy5CcCk7Xy5sVGE9Xy5ZYihfLkJwKTt2YXIgblRhLG9UYSxyVGEsc1RhLHRUYTtfLm1UYT1uZXcgTWFwKFtbInZpc2libGUiLDBdLFsiaGlkZGVuIiwxXSxbInJlcHJlc3NlZF9jb3VudGVyZmFjdHVhbCIsM10sWyJyZXByZXNzZWRfcHJpdmFjeSIsNF1dKTtuVGE9bmV3IE1hcChbWzAsMF0sWzEsMV0sWzIsM10sWzMsMl0sWzQsNF1dKTtvVGE9Y2xhc3N7Y29uc3RydWN0b3IoYSxiLGMpe3RoaXMuaW5kZXg9YTt0aGlzLndhPWI7dGhpcy5vYT1jO3RoaXMua2E9MH19OwpfLnBUYT1mdW5jdGlvbihhLGIsYyxkLGUpe2M9Y3x8bmV3IF8uenA7aWYoXy5raihjLF8ubXAsMTYpKXt2YXIgZj1fLndwKGMpLmNsb25lKCk7Zj1fLkdlKGYsMTQ5KTtmPV8uR2UoZiw0KTtmPV8uR2UoZiwyMzIpO2Y9Xy5HZShmLDMpO2Y9Xy5HZShmLDExKTtmPV8uR2UoZiwxNyk7Zj1fLkdlKGYsNyk7Zj1fLkdlKGYsNSk7Zj1fLkdlKGYsNil9ZWxzZSBmPW5ldyBfLm1wO18ubGsoZiwxLGIpO2I9bnVsbDthLmthLmxlbmd0aCYmKGI9YS5rYVthLmthLmxlbmd0aC0xXSxfLkFrKGEub2FbYi5pbmRleF0sNCxhLm9hLmxlbmd0aCkpO2Q9ISEoZHx8YiYmYi53YSk7aWYoXy5RayhjLDkpJiZfLnRwKGMpIT0wKXt2YXIgZz1uVGEuZ2V0KF8udHAoYykpO2cmJmYuc2V0VmlzaWJsZShnKX1lbHNlIGQmJmYuc2V0VmlzaWJsZSgyKTtlIT09dm9pZCAwJiYoYS5BYVthLm9hLmxlbmd0aF09ZSk7Xy53ZShjLDgpP051bWJlcihfLnhlKGMsOCkpPj0wJiYoZT1fLnhlKGMsOCksXy5sayhmLDMsZSksCmImJmIua2ErKyk6YiYmKF8uT2ooYyw3KT09Mnx8Yi5vYSkmJihlPWIua2ErKyxfLmxrKGYsMyxlKSk7Xy5raihjLF8uZ3AsMTApJiYoR3dhKGMuQ2goKSksZT1jLkNoKCksXy5TYihmLF8uZ3AsMTEsZSkpO18ucGgoYywyMCkmJihlPVtjLnhkKCldLF8uRGsoZiwyNjAsZSkpOyhlPWMudkooKSkmJl8ubHAoZiwoXy5qaChlKXx8KDAsXy51aWEpYGApLnRvU3RyaW5nKCkpO18ud2UoYywxNCkmJihlPV8ueGUoYywxNCwtMSksXy5sayhmLDE0OSxlKSk7Yy5nZXRFeHRlbnNpb24oXy5qVGEpIT1udWxsJiYoZT1jLmdldEV4dGVuc2lvbihfLmpUYSksZT1fLnEoZSxfLlVTYSwxKSxfLmtqKGUsXy5pcCwxKSYmKGI9Xy5xKGUsXy5pcCwxKSxfLlBrKGIsNSxfLlJTYSkmJihnPV8uJGxhKF8uWWooYiw1LF8uUlNhKSkpKSYmKGc9bmV3IF8uUG4oXy5yZWEoZykpLF8uR2ooYiwyLF8uUlNhLGcpKSxfLlNiKGYsXy5VU2EsMjMyLGUpKTthLmthLnB1c2gobmV3IG9UYShhLm9hLmxlbmd0aCxkLCEhXy5BKGMsCjE4KSkpO2M9KDAsXy5WU2EpKGYuRmMoKSk7YS5vYS5wdXNoKGMpfTtfLnFUYT1mdW5jdGlvbihhKXthLmthLnBvcCgpfTtfLkNwPWZ1bmN0aW9uKGEpe3ZhciBiPXJUYShhKTtpZihiPDApcmV0dXJuIiI7dmFyIGM9YS5vYVtiXSxkPW5ldyBfLlBuO18ubkthKGQsXy5jaShjLDEpKTtpZihfLkxTYSlyZXR1cm4gXy5lVGEobmV3IF8uZlRhKGQpKTtfLmxrKGQsMSxiKTtfLndlKGMsMykmJihiPV8ueGUoYywzLC0xKSxfLmxrKGQsNSxiKSk7YT1fLkp3YShhLndhKTtfLlNiKGQsXy5BZSwxMyxhKTtyZXR1cm4gXy5lVGEobmV3IF8uZlRhKGQpKX07clRhPWZ1bmN0aW9uKGEpe3JldHVybihhPWEua2FbYS5rYS5sZW5ndGgtMV0pP2EuaW5kZXg6LTF9O3NUYT1mdW5jdGlvbihhKXt2YXIgYj1yVGEoYSk7aWYoYjwwKXJldHVybi0xO3ZhciBjO3JldHVybihjPV8uY2koYS5vYVtiXSwxKSkhPW51bGw/YzotMX07CnRUYT1mdW5jdGlvbihhKXt2YXIgYjtyZXR1cm4oYj1hLkFhW3JUYShhKV0pIT1udWxsP2I6MH07Xy51VGE9Y2xhc3N7Y29uc3RydWN0b3IoKXt0aGlzLndhPV8uYlRhKys7dGhpcy5vYT1bXTt0aGlzLmthPVtdO3RoaXMuQWE9W119YnVpbGQoKXtyZXR1cm4gdGhpcy5vYX19O18udlRhPWNsYXNzIGV4dGVuZHMgXy5se2NvbnN0cnVjdG9yKGEpe3N1cGVyKGEsNyl9dUooKXtyZXR1cm4gXy5xKHRoaXMsXy5pcCwxKX1lSyhhKXtyZXR1cm4gXy5TYih0aGlzLF8uaXAsMSxhKX1nZXRUeXBlKCl7cmV0dXJuIF8uT2oodGhpcywyKX1BYyhhKXtyZXR1cm4gXy5aaCh0aGlzLDIsYSl9dGUoKXtyZXR1cm4gXy5laSh0aGlzLDIpfX07Xy53VGE9e307dmFyIHhUYT1bLTcsXy53VGEsWVNhLF8uRyxZU2EsXy5pbCxZU2EsXy5EXTtfLkVwPWNsYXNzIGV4dGVuZHMgXy5se2NvbnN0cnVjdG9yKGEpe3N1cGVyKGEsMSl9fTtfLkZwPXt9O18ueVRhPVstMSxfLkZwXTtfLnpUYT1mdW5jdGlvbihhLGIpe3JldHVybiBfLmZoKGEsMTEsYil9O18uQVRhPWZ1bmN0aW9uKGEsYil7cmV0dXJuIF8ubGsoYSwxLGIpfTtfLkJUYT1mdW5jdGlvbihhLGIpe18ubGsoYSwyLGIpfTtfLkNUYT1mdW5jdGlvbihhLGIpe3JldHVybiBfLmxrKGEsMyxiKX07Xy5HcD1mdW5jdGlvbihhLGIpe3JldHVybiBfLmxrKGEsNixiKX07Xy5IcD1jbGFzcyBleHRlbmRzIF8ubHtjb25zdHJ1Y3RvcihhKXtzdXBlcihhLDE3KX1qZGEoKXtyZXR1cm4gXy54ZSh0aGlzLDEsLTEpfWdldEltYWdlVXJsKCl7cmV0dXJuIF8udCh0aGlzLDkpfW9hKCl7cmV0dXJuIF8uTGoodGhpcyw5KX19O3ZhciBEVGE9Wy0xNyx7fSxfLkMsLTcsXy5FLC00LF8uRixfLmFUYSxfLnlUYSxfLlFuXTt2YXIgRVRhPWZ1bmN0aW9uKGEsYil7cmV0dXJuIF8uWmgoYSwxLGIpfSxGVGE9Y2xhc3MgZXh0ZW5kcyBfLmx7Y29uc3RydWN0b3IoYSl7c3VwZXIoYSl9fTt2YXIgR1RhPWZ1bmN0aW9uKGEsYil7Xy51aChhLDIsRlRhLGIpfSxIVGE9Y2xhc3MgZXh0ZW5kcyBfLmx7Y29uc3RydWN0b3IoYSl7c3VwZXIoYSl9fTtfLklUYT1mdW5jdGlvbihhLGIpe18uZmgoYSwyLGIpfTtfLkpUYT1jbGFzcyBleHRlbmRzIF8ubHtjb25zdHJ1Y3RvcihhKXtzdXBlcihhKX1vYShhKXtyZXR1cm4gXy5maCh0aGlzLDMsYSl9fTt2YXIgS1RhPWNsYXNzIGV4dGVuZHMgXy5se2NvbnN0cnVjdG9yKGEpe3N1cGVyKGEpfX07Xy5MVGE9Y2xhc3MgZXh0ZW5kcyBfLmx7Y29uc3RydWN0b3IoYSl7c3VwZXIoYSl9Z2V0UXVlcnkoKXtyZXR1cm4gXy50KHRoaXMsNyl9c2V0UXVlcnkoYSl7cmV0dXJuIF8uZmgodGhpcyw3LGEpfX07Xy5MVGEucHJvdG90eXBlLm9hPV8uJGIoWzAsWzAsWzAsXy5HXSxfLnBsLC0xLFswLFstMTYse30sXy5DLF8uRWwsXy5FLC0xLF8uQywtMSxbMCxfLmlsLF8uRyxbMCxfLkQsXy5DLF8uRSwtMV0sWzAsXy5HLF8uU2wsXy5DLF8uRSxfLkddLFswLF8uRyxfLkMsXy5TbCxfLkddLFswLF8uRCwtMV0sWzAsXy5HXSwxLF8uRixbMCxfLkQsLTEsXy5HLF8uQyxfLkcsXy5DXV0sXy5FLF8uaWwsWzAsXy5FLF8uRCwtMSxfLkMsLTFdLF8uRyxbMCxfLkMsLTIsXy5EXSxbMCxfLkYsWzAsXy50bF1dLFswLF8uRCxfLkMsLTFdLFswLF8uRyxfLkMsLTFdXSxbMCxbMCxfLkddLF8uRixbMCxfLkcsXy5pbF1dXSxbMCxfLkcsLTEsXy5FLF8uQyxfLkYsWzAsXy5FLF8uQ11dXSxbMCxfLkUsLTIsXy5DLC0xXSxbMCxfLnBsLC0zLF8uRywtMSxfLk9uLF8ucGwsXy5GLFswLFsyLDMsNCw1XSxfLkcsXy5zbCwtM10sXy5FXSxbMCxfLnBsLC0xXSxbMCxfLkYsWzAsXy5DLF8uRWxdLF8uRixbMCxfLkcsXy5FLApfLkRdLC0xLF8uR10sWzAsXy5FLF8uQyxfLkUsXy5DLF8uRSwtMSxfLnVsXSxfLkUsLTEsWzAsXy5DLF8uaWwsWzAsXy5HLC00LF8uRSxfLkcsXy5FLF8uRCwtNCxfLkMsLTEsXy5HLC0yLF8uQyxfLkUsXy5FbCxfLkQsWzAsXy5HLF8uRSxfLkQsLTEsXy5DLFswLF8uQyxfLkQsLTEsXy5FLF8uRF0sXy5ELC0xLF8uQywtMixfLkQsLTEsXy5DLC0yLF8uRCwtMSxfLkMsLTEsXy5ELC0zLF8uQyxfLkQsXy5DLDEsXy5ELC0yXSxfLmlsLF8uRyxfLkUsXy5pbCxfLlRsLDM0LF8ubUthXV0sWzAsXy5HXV0pO3ZhciBNVGE7TVRhPWNsYXNze2NvbnN0cnVjdG9yKGEsYil7dGhpcy5rYT1hO3RoaXMuVWE9Yn19O18uVmg9Y2xhc3N7Y29uc3RydWN0b3IoYSxiLGMpe3RoaXMuSXNhPWE7dGhpcy51c2VyQWN0aW9uPWI7dGhpcy5UbT1jfX07Xy5YaD1jbGFzc3tjb25zdHJ1Y3RvcihhLGIsYz0hMSl7dGhpcy5Jc2E9YTt0aGlzLkdLPWI7dGhpcy5rYT1jfX07Xy5McD1mdW5jdGlvbihhLGIpe2EuTGZhPWI7cmV0dXJuIGF9O18uTXA9ZnVuY3Rpb24oYSxiKXthLk1lPWI7cmV0dXJuIGF9O18uTnA9ZnVuY3Rpb24oYSxiLGMpe3JldHVybiBfLk1wKGEsXy5XaChiLGMpKX07Xy5PcD1mdW5jdGlvbihhLGIpe2lmKGIpe2xldCBjPU93YShhLlJlKTtjLnB1c2goYik7YS5SZT1jfXJldHVybiBhfTtfLlBwPWZ1bmN0aW9uKGEsYixjKXtyZXR1cm4gXy5PcChhLF8uWWgoYixjKSl9O18uUXA9ZnVuY3Rpb24oYSxiKXtyZXR1cm4gXy5QcChhLGIsMSl9OwpfLk5UYT1mdW5jdGlvbihhLGIpe3JldHVybiBfLlBwKGEsYiwyKX07Xy5ScD1mdW5jdGlvbihhLGIpe2EuQnE9YjtyZXR1cm4gYX07Xy5PVGE9Y2xhc3N7Y29uc3RydWN0b3IoYSl7dGhpcy5rYT1hfWxvZyhhKXtyZXR1cm4gdGhpcy5rYSh0aGlzLGEpfX07dmFyIFBUYT1jbGFzc3tlbWIoYSl7cmV0dXJuIG5ldyBPU2EoYSl9R09hKGEsYixjKXtiPWIudHJpbSgpO2M9Yy50cmltKCk7c3dpdGNoKGIpe2Nhc2UgInZpc2liaWxpdHkiOmEuUGE9YzticmVhaztjYXNlICJmZWF0dXJlX3RyZWVfcmVmIjpiPW5ldyBfLmdwKEpTT04ucGFyc2UoYykpO0d3YShiKTthLk5hPWI7YnJlYWs7Y2FzZSAidmVkIjpOU2EoYSxjKTticmVhaztjYXNlICJ2ZV9mb3JfZXh0ZW5zaW9ucyI6Yj1uZXcgXy5tcChKU09OLnBhcnNlKGMpKSxhLk9hPWJ9fW00KCl7fX07dmFyIFFUYT1jbGFzcyBleHRlbmRzIF8ubHtjb25zdHJ1Y3RvcihhKXtzdXBlcihhKX1nZXRLZXkoKXtyZXR1cm4gXy50KHRoaXMsMSl9RmooYSl7cmV0dXJuIF8uZmgodGhpcywxLGEpfWdldFZhbHVlKCl7cmV0dXJuIF8udCh0aGlzLDIpfWREKCl7cmV0dXJuIF8uZ2godGhpcywyKX1zZXRWYWx1ZShhKXtyZXR1cm4gXy5maCh0aGlzLDIsYSl9Y2xlYXJWYWx1ZSgpe3JldHVybiBfLkdlKHRoaXMsMil9fTt2YXIgUlRhPWNsYXNzIGV4dGVuZHMgXy5se2NvbnN0cnVjdG9yKGEpe3N1cGVyKGEsNCl9fTt2YXIgVFRhLFZUYTtfLlNUYT1mdW5jdGlvbihhLGIpe3JldHVybiBfLmxrKGEsMTEsYil9O1RUYT1mdW5jdGlvbihhLGIpe18ud2soYSw2LGIpfTtfLlVUYT1mdW5jdGlvbihhLGIpe3JldHVybiBfLmZoKGEsOCxiKX07VlRhPWZ1bmN0aW9uKGEsYil7Xy53ayhhLDE4LGIpfTtfLldUYT1mdW5jdGlvbihhLGIpe3JldHVybiBfLmZoKGEsMjQsYil9O18uWFRhPWZ1bmN0aW9uKGEsYil7cmV0dXJuIF8uemsoYSwyMCxiKX07Xy5TcD1jbGFzcyBleHRlbmRzIF8ubHtjb25zdHJ1Y3RvcihhKXtzdXBlcihhLDM3KX1zZXRWYWx1ZShhLGIpe3JldHVybiBfLnJqKHRoaXMsMyxRVGEsYSxiKX19O18uWVRhPWNsYXNze1o2Yigpe319O18uWlRhPWNsYXNzIGV4dGVuZHMgXy5se2NvbnN0cnVjdG9yKGEpe3N1cGVyKGEpfX07Xy4kVGE9ZnVuY3Rpb24oYSxiKXtfLlNiKGEsXy5BZSwzLGIpfTtfLmFVYT1mdW5jdGlvbihhLGIpe3JldHVybiBfLlNiKGEsXy5IcCw0LGIpfTtfLmJVYT1jbGFzcyBleHRlbmRzIF8ubHtjb25zdHJ1Y3RvcihhKXtzdXBlcihhKX1vYShhKXtyZXR1cm4gXy5TYih0aGlzLF8uQWUsMSxhKX19O18uYlVhLnByb3RvdHlwZS53YT1fLiRiKFswLF8ubUthLF8uRixfLmFUYSxfLm1LYSxEVGEsXy5HLF8uRSxbMCxfLkYseFRhXSxfLm1LYSxbMCxfLm1LYV1dKTt2YXIgY1VhLGRVYSxlVWEsZlVhLGpVYSxrVWEsbFVhLG1VYSxvVWEscFVhO2NVYT17aXNjaDoyNH07ZFVhPXsyOjMzMn07ZVVhPXt3ZWI6MCxpbWFnZXM6Mix2aWRlbzo3LGFpbTo1MH07Xy5nVWE9ZnVuY3Rpb24oYSl7aWYoIWEubGVuZ3RoKXJldHVybiIiO3ZhciBiPVtdO2ZvcihsZXQgYyBvZiBhKWE9Yy5Jc2EsdHlwZW9mIGE9PT0ic3RyaW5nIiYmYi5wdXNoKGErIi4uIitmVWEoYy5HSykrKGMua2E/Ii4xIjoiIikpO3JldHVybiIxIitiLmpvaW4oIjsiKX07Xy5oVWE9ZnVuY3Rpb24oYSl7cmV0dXJuIGEuUmUhPXZvaWQgMCYmKGEuUmUgaW5zdGFuY2VvZiBfLlhofHwhIWEuUmUubGVuZ3RoKX07Xy5pVWE9ZnVuY3Rpb24oYSl7aWYoYS5MZmEmJmEuTGZhLmJ1aWxkKCkubGVuZ3RoPjB8fGEuTWV8fGEubkxhKWE9ITA7ZWxzZXt2YXIgYjtpZihiPV8uaFVhKGEpKWE9T3dhKGEuUmUpLGI9IShhLmxlbmd0aD09MSYmYVswXS5HSz09Myk7YT1ifXJldHVybiBhfTsKZlVhPWZ1bmN0aW9uKGEpe3N3aXRjaChhKXtjYXNlIDM6cmV0dXJuImkiO2Nhc2UgMTpyZXR1cm4icyI7Y2FzZSAyOnJldHVybiJoIjtkZWZhdWx0OnJldHVybiIifX07Cl8ublVhPWZ1bmN0aW9uKGEsYixjLGQpe2lmKCFfLmlVYShiKSlyZXR1cm4gbnVsbDt2YXIgZT1iLkxmYSxmPWIuTWUsZz1iLlJlLGg9Yi5CcTtlJiYhZS5idWlsZCgpLmxlbmd0aCYmKGU9dm9pZCAwKTtnPT12b2lkIDA/Zz1bXTpnIGluc3RhbmNlb2YgXy5YaCYmKGc9W2ddKTt2YXIgaz1uZXcgXy5TcDtoPWh8fG5ldyBfLkhwO3ZhciBtPW5ldyBfLmJVYTtfLiRUYShtLGpVYShhKSk7Yj1iLm5MYXx8bnVsbDtpZihlKW0ub2EoXy5Kd2EoZS53YSkpO2Vsc2V7bGV0IHA9Xy5iVGErKzttLm9hKF8uSndhKHApKTtmJiYoYS5CYT1wKX1lJiYoZT1lLmJ1aWxkKCksXy5IaihtLDIsZSksYz9nLmxlbmd0aHx8KGc9W25ldyBfLlhoKG5ldyBfLkx3YSgwKSwzKV0pOmEuQmEmJiFnLmxlbmd0aCYmXy4kVGEobSxfLkp3YShhLkJhKSksZnx8KGcubGVuZ3RoP18uU1RhKGssYS5HYSk6Xy5TVGEoayxhLkVhKSkpO2YmJihjPWYuSXNhLGMgaW5zdGFuY2VvZiBNVGE/KF8uQVRhKGgsYy5VYSksXy5CVGEoaCwKYy5rYS5YMWEpLChjPWMua2EuVU5hKSYmXy4kVGEobSxfLkp3YShjKSkpOnR5cGVvZiBjPT09InN0cmluZyImJihiPWJ8fG5ldyBfLkxUYSxlPV8ucShiLF8uSlRhLDIpfHxuZXcgXy5KVGEsXy5maChlLDEsYyksXy56VGEoaCxjKSxfLlNiKGIsXy5KVGEsMixlKSxfLkdlKG0sMykpLGM9Zi5UbSxjIT09dm9pZCAwJiZfLkdwKGgsYyksZj1mLnVzZXJBY3Rpb24sZiE9PXZvaWQgMCYmXy5DVGEoaCxmKSk7aWYoZy5sZW5ndGgpaWYoYS5LYSl7dmFyIG49Zy5yZWR1Y2UoKHAscik9PnAuY29uY2F0KGtVYShhLHIsXy5taChtLF8uanAsMixfLm9oKCkpKSksW10pO24ubGVuZ3RoJiYoZz1uZXcgXy5aVGEsXy5IaihnLDEsbiksXy5TYihtLF8uWlRhLDcsZykpfWVsc2V7Zj1bXTtmb3IobiBvZiBnKWc9bi5Jc2EsdHlwZW9mIGc9PT0ic3RyaW5nIj9mLnB1c2gobik6ZyBpbnN0YW5jZW9mIF8uTHdhJiYoXy5aaChtLDUsbi5HSyksXy5CVGEoaCxnLlgxYSksKGc9Zy5VTmEpJiZfLiRUYShtLF8uSndhKGcpKSk7CmYubGVuZ3RoJiYoYj1ifHxuZXcgXy5MVGEsbj1fLnEoYixfLkpUYSwyKXx8bmV3IF8uSlRhLF8uSVRhKG4sXy5nVWEoZikpLF8uU2IoYixfLkpUYSwyLG4pKX1iPWxVYShiKTtiPW1VYShhLGIpO18uYVVhKG0saCk7ZD8oVlRhKGssbS53YSgpKSxiJiZUVGEoayxiLm9hKCkpKTooXy5XVGEoayxtLkZjKCkpLGImJl8uVVRhKGssYi5GYygpKSk7cmV0dXJuIGt9O2pVYT1mdW5jdGlvbihhKXt2YXIgYj1uZXcgXy5BZTtfLkl3YShiLGEuQWF8fChhLkFhPV8udW0oXy5CZCgiWWxsaDNlIiksXy5DZSkpKTtyZXR1cm4gYn07a1VhPWZ1bmN0aW9uKGEsYixjKXt2YXIgZD1vVWEoYSxiLklzYSk7aWYoIWQpcmV0dXJuW107aWYoYi5HSz09PTMpe2xldCBlPXBVYShjKTtyZXR1cm4gZS5tYXAoZj0+e3ZhciBnPW5ldyBfLnZUYTtnLkFjKGIuR0spO2cuZUsoZCk7ZS5sZW5ndGg+MSYmXy5TYihnLF8uaXAsMyxmKTtyZXR1cm4gZ30pfWE9bmV3IF8udlRhO2EuQWMoYi5HSyk7YS5lSyhkKTtyZXR1cm5bYV19OwpsVWE9ZnVuY3Rpb24oYSl7dmFyIGI9bnVsbCxjPV8uc2Qod2luZG93LmxvY2F0aW9uLmhyZWYsInRibSIpLGQ9Xy5zZCh3aW5kb3cubG9jYXRpb24uaHJlZiwidWRtIik7YyYmKGI9Y1VhW2NdKTshYiYmZCYmKGI9ZFVhW2RdKTtiJiYoYXx8KGE9bmV3IF8uTFRhKSxjPV8ucShhLEhUYSw1KXx8bmV3IEhUYSxfLlNiKGEsSFRhLDUsYyksXy5taChjLEZUYSwyLF8ub2goKSkuZmluZChlPT5fLk9qKGUsMSk9PT1iKXx8R1RhKGMsRVRhKG5ldyBGVGEsYikpKTtyZXR1cm4gYX07bVVhPWZ1bmN0aW9uKGEsYil7aWYoIShhLklhJiZ3aW5kb3cuZ29vZ2xlJiYic24iaW4gd2luZG93Lmdvb2dsZSkpcmV0dXJuIGI7YT1lVWFbZ29vZ2xlLnNuXTtpZihhIT09bnVsbCYmYSE9PXZvaWQgMCl7Ynx8KGI9bmV3IF8uTFRhKTtsZXQgYz1fLnEoYixLVGEsMTApfHxuZXcgS1RhO18uU2IoYixLVGEsMTAsYyk7Xy5aaChjLDEsYSl9cmV0dXJuIGJ9OwpvVWE9ZnVuY3Rpb24oYSxiKXt2YXIgYz1uZXcgXy5pcDtpZih0eXBlb2YgYj09PSJzdHJpbmciKXt2YXIgZD1fLiRsYShiKTtpZighZClyZXR1cm4gbnVsbDtfLkdlKGQsMik7Xy5HaihjLDIsXy5SU2EsZCl9ZWxzZSBpZihiIGluc3RhbmNlb2YgXy5Md2Epe2Q9bmV3IF8uaXA7bGV0IGU9bmV3IF8uUG47Xy5sayhlLDEsYi5YMWEpO2IuVU5hIT09dm9pZCAwPyhhPWQsYj1fLkp3YShiLlVOYSksXy5HaihhLDMsXy5UU2EsYikpOihiPWQsYT1hLkFhfHwoYS5BYT1fLnVtKF8uQmQoIllsbGgzZSIpLF8uQ2UpKSxfLkdqKGIsMSxfLlRTYSxhKSk7Xy5HaihkLDIsXy5SU2EsZSl9cmV0dXJuIGN9OwpwVWE9ZnVuY3Rpb24oYSl7dmFyIGI9bmV3IFNldDtmb3IobGV0IGM9MDtjPGEubGVuZ3RoO2MrKyliLmFkZChjKTtmb3IobGV0IGMgb2YgYSlfLlFqKGMsNCxfLm9oKCkpLmZvckVhY2goZD0+e2IuZGVsZXRlKGQpfSk7cmV0dXJuWy4uLmIudmFsdWVzKCldLm1hcChjPT57dmFyIGQ9bmV3IF8uaXAsZT1uZXcgXy5QbjtfLmxrKGUsMSxjKTtfLkdqKGQsMixfLlJTYSxlKTtyZXR1cm4gZH0pfTsKXy5xVWE9Y2xhc3MgZXh0ZW5kcyBfLllUYXtjb25zdHJ1Y3RvcihhPTUsYj0hMSxjPTUsZD0hMSl7c3VwZXIoKTt0aGlzLkJhPW51bGw7dGhpcy5FYT1hO3RoaXMuR2E9Yzt0aGlzLkFhPW51bGw7dGhpcy5LYT1iO3RoaXMuSWE9ZH1rYShhLGIpe2E6e3ZhciBjPWIub2E7aWYoYyYmYyBpbnN0YW5jZW9mIE1TYSl7dmFyIGQ9Xy5naChjLDMpO2lmKGQpe2E9bmV3IF8uVmgoZCxhLm9hKCkpO2JyZWFrIGF9ZD1fLmRrKGMsMik7Yz1fLmRrKGMsMSk7aWYoZCE9bnVsbCYmYyE9bnVsbCl7YT1uZXcgXy5WaChuZXcgTVRhKG5ldyBfLkx3YShjLGQpLGEud2EoKSksYS5vYSgpKTticmVhayBhfX1hPXZvaWQgMH1yZXR1cm4oYT1fLm5VYSh0aGlzLHtNZTphfSkpPyhiLmthJiZfLlhUYShhLGIua2EpLGEpOm5ldyBfLlNwfXdhKCl7cmV0dXJuIG5ldyBQVGF9b2EoKXtyZXR1cm4gbmV3IE1TYX1aNmIoYSxiKXt2YXIgYz1hLkphKClbXy5Ld2FdO2MmJihfLmxrKGIsMSxjLlgxYSksXy5sayhiLDIsCmMuVU5hKSk7KGE9Xy5nZyhhLkphKCksInZlZCIpKSYmXy5maChiLDMsYSl9fTtfLnJVYT1uZXcgXy5SYigzMjIxODUzMTEsXy5jcCxudWxsLDAsXy5BLF8uJGgpO3ZhciBQd2EsU3dhLFR3YSxSd2EsVndhO1B3YT0vPFtePl0qPnwmW147XSs7L2c7Xy5zVWE9UmVnRXhwKCJbXHUwNTkxLVx1MDZlZlx1MDZmYS1cdTA4ZmZcdTIwMGZcdWQ4MDItXHVkODAzXHVkODNhLVx1ZDgzYlx1ZmIxZC1cdWZkZmZcdWZlNzAtXHVmZWZjXSIpO18uVXdhPVJlZ0V4cCgiW0EtWmEtelx1MDBjMC1cdTAwZDZcdTAwZDgtXHUwMGY2XHUwMGY4LVx1MDJiOFx1MDMwMC1cdTA1OTBcdTA5MDAtXHUxZmZmXHUyMDBlXHUyYzAwLVx1ZDgwMVx1ZDgwNC1cdWQ4MzlcdWQ4M2MtXHVkYmZmXHVmOTAwLVx1ZmIxY1x1ZmUwMC1cdWZlNmZcdWZlZmQtXHVmZmZmXSIpO1N3YT1SZWdFeHAoIl5bXkEtWmEtelx1MDBjMC1cdTAwZDZcdTAwZDgtXHUwMGY2XHUwMGY4LVx1MDJiOFx1MDMwMC1cdTA1OTBcdTA5MDAtXHUxZmZmXHUyMDBlXHUyYzAwLVx1ZDgwMVx1ZDgwNC1cdWQ4MzlcdWQ4M2MtXHVkYmZmXHVmOTAwLVx1ZmIxY1x1ZmUwMC1cdWZlNmZcdWZlZmQtXHVmZmZmXSpbXHUwNTkxLVx1MDZlZlx1MDZmYS1cdTA4ZmZcdTIwMGZcdWQ4MDItXHVkODAzXHVkODNhLVx1ZDgzYlx1ZmIxZC1cdWZkZmZcdWZlNzAtXHVmZWZjXSIpOwpUd2E9L15odHRwOlwvXC8uKi87Xy50VWE9UmVnRXhwKCJbQS1aYS16XHUwMGMwLVx1MDBkNlx1MDBkOC1cdTAwZjZcdTAwZjgtXHUwMmI4XHUwMzAwLVx1MDU5MFx1MDkwMC1cdTFmZmZcdTIwMGVcdTJjMDAtXHVkODAxXHVkODA0LVx1ZDgzOVx1ZDgzYy1cdWRiZmZcdWY5MDAtXHVmYjFjXHVmZTAwLVx1ZmU2Zlx1ZmVmZC1cdWZmZmZdW15cdTA1OTEtXHUwNmVmXHUwNmZhLVx1MDhmZlx1MjAwZlx1ZDgwMi1cdWQ4MDNcdWQ4M2EtXHVkODNiXHVmYjFkLVx1ZmRmZlx1ZmU3MC1cdWZlZmNdKiQiKTtfLnVVYT1SZWdFeHAoIltcdTA1OTEtXHUwNmVmXHUwNmZhLVx1MDhmZlx1MjAwZlx1ZDgwMi1cdWQ4MDNcdWQ4M2EtXHVkODNiXHVmYjFkLVx1ZmRmZlx1ZmU3MC1cdWZlZmNdW15BLVphLXpcdTAwYzAtXHUwMGQ2XHUwMGQ4LVx1MDBmNlx1MDBmOC1cdTAyYjhcdTAzMDAtXHUwNTkwXHUwOTAwLVx1MWZmZlx1MjAwZVx1MmMwMC1cdWQ4MDFcdWQ4MDQtXHVkODM5XHVkODNjLVx1ZGJmZlx1ZjkwMC1cdWZiMWNcdWZlMDAtXHVmZTZmXHVmZWZkLVx1ZmZmZl0qJCIpOwpfLnZVYT1SZWdFeHAoIl4oYXJ8Y2tifGR2fGhlfGl3fGZhfG5xb3xwc3xzZHx1Z3x1cnx5aXwuKlstX10oQWRsbXxBcmFifEhlYnJ8Tmtvb3xSb2hnfFRoYWEpKSg/IS4qWy1fXShMYXRufEN5cmwpKCR8LXxfKSkoJHwtfF8pIiwiaSIpO1J3YT0vXHMrLztWd2E9L1tcZFx1MDZmMC1cdTA2ZjldLzt2YXIgeFVhLHpVYTtfLlRwPXt9O18ud1VhPXt9O3hVYT17fTtfLnlVYT17fTtfLlVwPXt9O3pVYT17fTtfLlZwPWZ1bmN0aW9uKCl7dGhyb3cgRXJyb3IoImlkIik7fTtfLlZwLnByb3RvdHlwZS5SZ2E9bnVsbDtfLlZwLnByb3RvdHlwZS5nZXRDb250ZW50PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuY29udGVudH07Xy5WcC5wcm90b3R5cGUudG9TdHJpbmc9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5jb250ZW50fTtfLlZwLnByb3RvdHlwZS5UYWE9ZnVuY3Rpb24oKXtpZih0aGlzLkNiIT09Xy5UcCl0aHJvdyBFcnJvcigiamQiKTtyZXR1cm4gXy55KHRoaXMudG9TdHJpbmcoKSl9O18uQVVhPWZ1bmN0aW9uKCl7Xy5WcC5jYWxsKHRoaXMpfTtfLlVpKF8uQVVhLF8uVnApO18uQVVhLnByb3RvdHlwZS5DYj1fLlRwO3ZhciBCVWE9ZnVuY3Rpb24oKXtfLlZwLmNhbGwodGhpcyl9O18uVWkoQlVhLF8uVnApO0JVYS5wcm90b3R5cGUuQ2I9Xy53VWE7QlVhLnByb3RvdHlwZS5SZ2E9MTsKXy5DVWE9ZnVuY3Rpb24oKXtfLlZwLmNhbGwodGhpcyl9O18uVWkoXy5DVWEsXy5WcCk7Xy5DVWEucHJvdG90eXBlLkNiPXhVYTtfLkNVYS5wcm90b3R5cGUuUmdhPTE7Xy5EVWE9ZnVuY3Rpb24oKXtfLlZwLmNhbGwodGhpcyl9O18uVWkoXy5EVWEsXy5WcCk7Xy5EVWEucHJvdG90eXBlLkNiPV8ueVVhO18uRFVhLnByb3RvdHlwZS5SZ2E9MTtfLkVVYT1mdW5jdGlvbigpe18uVnAuY2FsbCh0aGlzKX07Xy5VaShfLkVVYSxfLlZwKTtfLkVVYS5wcm90b3R5cGUuQ2I9Xy5VcDtfLkVVYS5wcm90b3R5cGUuUmdhPTE7dmFyIEZVYT1mdW5jdGlvbigpe18uVnAuY2FsbCh0aGlzKX07Xy5VaShGVWEsXy5WcCk7RlVhLnByb3RvdHlwZS5DYj16VWE7RlVhLnByb3RvdHlwZS5SZ2E9MTt2YXIgR1VhLEpVYSxNVWEsTFVhLEhVYSxJVWEsS1VhLE5VYTtHVWE9ZnVuY3Rpb24oYSl7dmFyIGI9YS5rYSxjPXJUYShiKTtpZihjPj0wJiZjPGIub2EubGVuZ3RoKXtsZXQgZD1uZXcgXy5QU2E7Xy4kaChkLDEsITApO2Iub2FbY10ua2EoXy5XU2EsZCl9cmV0dXJuIHJUYShhLmthKS50b1N0cmluZygpfTsKSlVhPWZ1bmN0aW9uKGEsYixjPSExLGQ9bnVsbCl7dHJ5e2xldCBlPW5ldyBfLkhlKGIpO2lmKHRUYShhLmthKT09PTMpSFVhKGUsSVVhKGEpKTtlbHNle2UuZ2V0UGF0aCgpIT0iL2FjbGsiJiZlLmdldFBhdGgoKSE9Ii9wYWdlYWQvYWNsayImJl8uV24oZSwic2EiKT09dm9pZCAwJiZfLlRuKGUsInNhIiwiWCIpO2xldCBnPV8uQ3AoYS5rYSk7Xy5UbihlLCJ2ZWQiLGcpO2MmJl8uVG4oZSwidmV0IixfLmdVYShbbmV3IF8uWGgoZywzKV0pKX1IVWEoZSxkKTtsZXQgZj1lLnRvU3RyaW5nKCk7Zj1mLnJlcGxhY2UoLyUyQi9pZywiKyIpO3JldHVybiBmPWYucmVwbGFjZSgvJTNBL2lnLCI6Iil9Y2F0Y2goZSl7fXJldHVybiBifTtNVWE9ZnVuY3Rpb24oYSxiLGM9bnVsbCl7dFRhKGEua2EpPT09MyYmKGI9Xy5PaChiKSxIVWEoYixJVWEoYSkpLGI9Yi50b1N0cmluZygpKTt2YXIge2hyZWY6ZCxsR2I6ZX09S1VhKGIsITApO2I9ZDtyZXR1cm4gTFVhKGEsYixjLGUpfTsKTFVhPWZ1bmN0aW9uKGEsYixjPW51bGwsZD1udWxsKXt2YXIge2hyZWY6ZSxsR2I6Zn09S1VhKGIsITEpO2I9ZTtkIT09bnVsbCYmKGY9ZCk7dmFyIGc9bmV3IF8uSGUoIi91cmw/c2E9dCZzb3VyY2U9d2ViJnJjdD1qIik7Yj1mP2I6TlVhKGIpO18uVG4oZywidXJsIixiKTtmJiZfLlRuKGcsInVvaCIsZik7Xy5UbihnLCJ2ZWQiLF8uQ3AoYS5rYSkpOyhhPV8uZnAoKSkmJmEhPT0iMCImJl8uVG4oZywiYXV0aHVzZXIiLGEpO0hVYShnLGMpO18uRm1hKHtzZXQoaCxrKXtfLlRuKGcsaCxrKX19LCExLCExKTtyZXR1cm4gZy50b1N0cmluZygpfTtfLk9VYT1mdW5jdGlvbihhLGIpe3ZhciBjPWEua2E7YS5rYT1ifHxuZXcgXy51VGE7cmV0dXJuIGN9O0hVYT1mdW5jdGlvbihhLGIpe2ImJmIuZm9yRWFjaCgoYyxkKT0+e2MhPT1udWxsJiZjIT09dm9pZCAwJiZfLlRuKGEsZCxjKX0pfTsKSVVhPWZ1bmN0aW9uKGEpe2E9c1RhKGEua2EpO3JldHVybihhPWE+LTE/YDF0OiR7YX1gOiIiKT9uZXcgTWFwKE9iamVjdC5lbnRyaWVzKF8ubW1hKGEpKSk6bmV3IE1hcH07S1VhPWZ1bmN0aW9uKGEsYil7dmFyIGM9YS5pbmRleE9mKCIvZ290bz91cmw9Iik7cmV0dXJuIGMhPT0tMT97aHJlZjphLnN1YnN0cmluZyhjKzEwKSxsR2I6Yj8iMiI6IjEifTp7aHJlZjphLGxHYjpudWxsfX07TlVhPWZ1bmN0aW9uKGEpe3JldHVybiBfLk9oKF8uZWEubG9jYXRpb24ub3JpZ2luKS5yZXNvbHZlKF8uT2goYSkpLnRvU3RyaW5nKCl9OwpfLnR3YT1jbGFzc3tjb25zdHJ1Y3RvcihhKXt0aGlzLmthPW5ldyBfLnVUYTt0aGlzLkdhPVtdO3RoaXMuQmE9bnVsbDt0aGlzLkFhPWF9ZW50ZXIoYSl7dGhpcy5HYS5wdXNoKGEuaWQpO3ZhciBiPWEuaWQ7aWYoYj09LTF8fGI9PS0yKXt2YXIgYztpZihhLmRhdGEgaW5zdGFuY2VvZiBfLnpwJiZfLmtqKGEuZGF0YSxfLmhoLDIxKSYmKChjPXRoaXMuQWEpPT1udWxsPzA6Yy5VUWIpJiYoYT1fLmpoKGEuZGF0YS52SigpKSkpcmV0dXJuIEJTYShuZXcgRFNhLGEpfWVsc2V7Yj1hLmRhdGEgaW5zdGFuY2VvZiBfLnpwP2EuZGF0YS5KZigpP2EuZGF0YTphLmRhdGEuY2xvbmUoKTp2b2lkIDA7dmFyIGQ7Xy5wVGEodGhpcy5rYSxhLmlkLGIsYS5Kd2IsKGQ9YS5rYSk9PW51bGw/dm9pZCAwOmQuTGMoXy5QaCkpO2Q9bmV3IERTYTtjPWI9PW51bGw/dm9pZCAwOl8ucnAoYik7dmFyIGU7c3dpdGNoKChlPXRoaXMuQWEpPT1udWxsP3ZvaWQgMDplLnNUYyl7Y2FzZSAzOmMmJnpTYShkLCJkYXRhLXZlZCIsCl8uQ3AodGhpcy5rYSkpO2JyZWFrO2Nhc2UgMTp6U2EoZCwiZGF0YS12ZWQiLF8uQ3AodGhpcy5rYSkpfWU9Yj09bnVsbD92b2lkIDA6Xy5xcChiKTt2YXIgZjtzd2l0Y2goKGY9dGhpcy5BYSk9PW51bGw/dm9pZCAwOmYuZ3pjKXtjYXNlIDM6ZSYmelNhKGQsImRhdGEtaHZlaWQiLEdVYSh0aGlzKSk7YnJlYWs7Y2FzZSAxOnpTYShkLCJkYXRhLWh2ZWlkIixHVWEodGhpcykpfWY9Yj09bnVsbD92b2lkIDA6Xy5wcChiKTtjPWI9PW51bGw/dm9pZCAwOmIudkooKTtiPShiPT1udWxsPzA6Xy53ZShiLDE1KSk/Yj09bnVsbD92b2lkIDA6Xy54ZShiLDE1LC0xKTp2b2lkIDA7ZT1hLmthO3ZhciBnO2lmKChnPXRoaXMuQWEpIT1udWxsJiZnLlVRYiYmKGc9Yz9fLmpoKGMpLnRvU3RyaW5nKCk6dm9pZCAwLCghZnx8ZykmJmcmJmYpKWlmKGY9bmV3IE1hcCxiIT12b2lkIDAmJmYuc2V0KCJpY3R4IixiLnRvU3RyaW5nKCkpLGUmJl8ud3dhKGcsZSkpe2I9ZS5nZXRFeHRlbnNpb24oXy5QaCk9PT0KMztsZXQgbTtzd2l0Y2goKG09dGhpcy5BYSk9PW51bGw/dm9pZCAwOm0ucG9jKXtjYXNlIDI6QlNhKGQsYj9KVWEodGhpcyxnKTpnKTt6U2EoZCwiZGF0YS1zYiIsTVVhKHRoaXMsZyxmKSk7YnJlYWs7Y2FzZSAzOkJTYShkLGI/SlVhKHRoaXMsZyk6Zyk7Q1NhKGQsTFVhKHRoaXMsZyxmKSk7YnJlYWs7Y2FzZSA0OkJTYShkLGI/SlVhKHRoaXMsZyk6Zyk7elNhKGQsImRhdGEtY3RwYWN3IiwiMSIpO0NTYShkLE1VYSh0aGlzLGcsZikpO2JyZWFrO2RlZmF1bHQ6QlNhKGQsTVVhKHRoaXMsZyxmKSl9fWVsc2UgQlNhKGQsSlVhKHRoaXMsZywhMSxmKSk7dmFyIGg7KChoPWEua2EpPT1udWxsPzA6aC5MYyhfLnJVYSkpJiZ6U2EoZCwiZGF0YS1hdiIsIjEiKTt2YXIgazsoKGs9dGhpcy5BYSk9PW51bGw/MDprLm5PYykmJkFTYShkLGEub2F8fCIiKTtyZXR1cm4gZH19b2EoYSxiKXt0aGlzLkJhP3RoaXMuQmEoYSxiKTpiKCl9ZXhpdCgpe3ZhciBhPXRoaXMuR2EucG9wKCk7YT09LTF8fGE9PQotMnx8Xy5xVGEodGhpcy5rYSl9TkgoYSxiKXt0cnl7c3dpdGNoKGEpe2Nhc2UgInVUWktDZSI6bGV0IGQ9U3RyaW5nKHNUYSh0aGlzLmthKSk7cmV0dXJuIGJbMF0/ZCtiWzBdLnRvU3RyaW5nKCk6ZDtjYXNlICJoczRwQmIiOnZhciBjPWJbMF0udG9TdHJpbmcoKTtyZXR1cm4gU3RyaW5nKHNUYSh0aGlzLmthKSkrIjt2ZWQ6IitfLkNwKHRoaXMua2EpKyI7dHJhY2s6IitjO2Nhc2UgIkRuejFqYiI6cmV0dXJuIF8uQ3AodGhpcy5rYSk7Y2FzZSAibWsxdUFmIjpyZXR1cm4gR1VhKHRoaXMpO2Nhc2UgIlBWMXI5IjpyZXR1cm4oYlswXWluc3RhbmNlb2YgXy5DVWE/YlswXS5nZXRDb250ZW50KCk6YlswXSk/SlVhKHRoaXMsYlswXS50b1N0cmluZygpLGJbMV18fCExLGJbMl0pOiIiO2Nhc2UgIkFOSTJ4YyI6cmV0dXJuIExVYSh0aGlzLGJbMF0udG9TdHJpbmcoKSxiWzFdKTtjYXNlICJ0TkpSaWUiOnJldHVybiBNVWEodGhpcyxiWzBdLnRvU3RyaW5nKCksYlsxXSk7ZGVmYXVsdDpyZXR1cm4iIn19Y2F0Y2goZCl7cmV0dXJuIiJ9fXdhKCl7Xy5PVWEodGhpcyl9fTt2YXIgWHdhPV8uZ2Uud1ZhO3ZhciBheGEsanhhO2F4YT1TeW1ib2woKTtqeGE9bnVsbDtfLmd4YT1udWxsO18uV3A9bmV3IF8uaWMoIm43M3F3ZiIsIm43M3F3ZiIpO3ZhciBQVWE7Xy5VaShfLmt4YSxfLmJlKTtfLlFVYT1mdW5jdGlvbihhKXthPWF8fHdpbmRvdzt2YXIgYj1fLiRlKGEpO3JldHVybiBQVWFbYl09UFVhW2JdfHxuZXcgXy5reGEoYSl9O1BVYT17fTtfLmt4YS5wcm90b3R5cGUuZ2V0U2l6ZT1mdW5jdGlvbigpe3JldHVybiB0aGlzLmthP3RoaXMua2EuY2xvbmUoKTpudWxsfTtfLmt4YS5wcm90b3R5cGUucWM9ZnVuY3Rpb24oKXtfLmt4YS5SZC5xYy5jYWxsKHRoaXMpO3RoaXMud2EmJihfLkFuKHRoaXMud2EpLHRoaXMud2E9bnVsbCk7dGhpcy5rYT10aGlzLm9hPW51bGx9O18ua3hhLnByb3RvdHlwZS5BYT1mdW5jdGlvbigpe3ZhciBhPV8uZ2kodGhpcy5vYSk7Xy5uSGEoYSx0aGlzLmthKXx8KHRoaXMua2E9YSx0aGlzLmRpc3BhdGNoRXZlbnQoInJlc2l6ZSIpKX07Xy5VaShseGEsXy5iZSk7bHhhLnByb3RvdHlwZS5zdGFydD1mdW5jdGlvbigpe3RoaXMua2EmJih0eXBlb2YgdGhpcy5rYS5hZGRFdmVudExpc3RlbmVyPT09ImZ1bmN0aW9uIj8odGhpcy5rYS5hZGRFdmVudExpc3RlbmVyKCJjaGFuZ2UiLHRoaXMuTUopLHRoaXMud2E9KCk9Pnt0aGlzLmthLnJlbW92ZUV2ZW50TGlzdGVuZXIoImNoYW5nZSIsdGhpcy5NSil9KToodGhpcy5rYS5hZGRMaXN0ZW5lcih0aGlzLk1KKSx0aGlzLndhPSgpPT57dGhpcy5rYS5yZW1vdmVMaXN0ZW5lcih0aGlzLk1KKX0pKX07bHhhLnByb3RvdHlwZS5CYT1mdW5jdGlvbigpe3ZhciBhPXRoaXMub2EuZGV2aWNlUGl4ZWxSYXRpbz49MS41PzI6MTt0aGlzLkFhIT1hJiYodGhpcy5BYT1hLHRoaXMuZGlzcGF0Y2hFdmVudCgiZCIpKX07bHhhLnByb3RvdHlwZS5xYz1mdW5jdGlvbigpe3RoaXMud2EmJnRoaXMud2EoKTtseGEuUmQucWMuY2FsbCh0aGlzKX07Xy5VaShfLmlpLF8uRWQpO18uTnhhPWZ1bmN0aW9uKGEsYil7Yj1uZXcgXy5paShhLGIpO2EucmVnaXN0ZXJTZXJ2aWNlKF8uV3AsYil9O18uaWkucHJvdG90eXBlLkFpPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMud2F9O18uaWkucHJvdG90eXBlLm9oPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMub2F9O18uaWkucHJvdG90eXBlLnFjPWZ1bmN0aW9uKCl7dGhpcy5vYT10aGlzLndhPW51bGw7dGhpcy5rYSYmKHRoaXMua2EuZGlzcG9zZSgpLHRoaXMua2E9bnVsbCk7Xy5EZCh0aGlzLkFhKTt0aGlzLkFhPW51bGx9O18udmQoXy5XcCxfLmlpKTt2YXIgU1VhLFJVYSxYVWEsWVVhLFVVYSxWVWEsV1VhLFpVYSwkVWEsYVZhLGJWYSxjVmE7U1VhPWZ1bmN0aW9uKGEsYil7aWYoYS5yYyE9Yi5yYyl7aWYoUlVhKGEucmMsYi5yYykpcmV0dXJuIDE7aWYoUlVhKGIucmMsYS5yYykpcmV0dXJuLTF9cmV0dXJuIGEuaW5kZXg8Yi5pbmRleD8tMTphLmluZGV4PT1iLmluZGV4PzA6MX07Cl8uUE5hPWZ1bmN0aW9uKGEsYixjKXtpZihhLmlzRGlzcG9zZWQoKSl0aHJvdyBuZXcgTE5hKGIpO3ZhciBkPSFjO2M9e307dmFyIGU9W10sZj1bXSxnPXt9O2ZvcihsZXQgbiBvZiBiKWlmKGI9Xy4keGEoYSxuKSl7bGV0IHA9bmV3IF8uWWU7Y1tuXT1wO2IuTURhJiYoRExhKHAsYi5NRGEoKSksXy5uZyhwLF8uVGkoZnVuY3Rpb24ocil7cmV0dXJuIHJ9LGIpKSk7cC5jYWxsYmFjayhiKX1lbHNlIGlmKGEud2Fbbl0pYj1hLndhW25dLmx6KCksXy5uZyhiLCgpPT5hLkVhKG4pKSxjW25dPWI7ZWxzZXt2YXIgaD12b2lkIDA7biBpbnN0YW5jZW9mIF8uaWM/aD1rb2EoW25dKS51QjooYj1hLklhW25dKSYmKGg9W2JdKTshZHx8aCYmaC5sZW5ndGg/KGgmJihlLnB1c2goLi4uaCksZ1tuXT1fLnZhKGgpKSxmLnB1c2gobikpOihiPW5ldyBfLlllLGNbbl09YixiLmthKEVycm9yKCJ2ZGAiK24pKSl9aWYoZCl7aWYoZS5sZW5ndGgpe2Zvcih2YXIgayBvZiBmKWEuZ2V0RXZlbnRUYXJnZXQoKS5kaXNwYXRjaEV2ZW50KG5ldyBUVWEoImUiLAprKSk7aD1hdWEoVVVhKGEpLGUpO2Zvcih2YXIgbSBvZiBmKWY9Z1ttXSxrPWhbZl0saz1rIGluc3RhbmNlb2YgXy5ZZT9rLmx6KCk6Xy5CTGEoayksY1ttXT1rLFZVYShhLGssbSxmKX19ZWxzZSBmb3IobGV0IG4gb2YgZil7bGV0IHA9Z1tuXTttPW5ldyBfLlllKHI9Pnt2YXIgeD1uLHo9YS5rYSYmYS5rYVt4XTtpZih6KXtmb3IobGV0IEI9MDtCPHoubGVuZ3RoOysrQilpZih6W0JdLnJjPT1hJiZ6W0JdLmQ9PXIpe18uQ2EoeixCKTticmVha316Lmxlbmd0aD09MCYmZGVsZXRlIGEua2FbeF19fSk7Y1tuXT1tOyhmPWEua2Fbbl0pfHwoYS5rYVtuXT1mPVtdKTtwJiZXVWEoYSxtLG4scCk7Xy5uZyhtLCgpPT5hLkdhKG4scCkpO2YucHVzaCh7cmM6YSxkOm19KX1yZXR1cm4gY307UlVhPWZ1bmN0aW9uKGEsYil7Zm9yKDthOyl7aWYoYT09YilyZXR1cm4hMDthPWEuQWF9cmV0dXJuITF9O1hVYT1mdW5jdGlvbihhKXtmb3IoO2EuQWE7KWE9YS5BYTtyZXR1cm4gYX07Cl8uJHhhPWZ1bmN0aW9uKGEsYil7Zm9yKHZhciBjPWE7YztjPWMuQWEpe2lmKGMuaXNEaXNwb3NlZCgpKXRocm93IG5ldyBMTmEoW2JdKTtpZihjLm9hW2JdKXJldHVybiBjLm9hW2JdWzBdO2lmKGMuUmFbYl0pYnJlYWt9aWYoYz1hLkthW2JdKXtjPWMoYSk7aWYoYz09bnVsbCl0aHJvdyBFcnJvcigid2RgIitiKTthLnJlZ2lzdGVyU2VydmljZShiLGMpO3JldHVybiBjfXJldHVybiBudWxsfTtZVWE9ZnVuY3Rpb24oYSxiKXtyZXR1cm4hKCFhLm9hW2JdJiYhYS5LYVtiXSl9O1VVYT1mdW5jdGlvbihhKXtyZXR1cm4gYS5QYT9hLlBhOmEuQWE/VVVhKGEuQWEpOm51bGx9O1ZVYT1mdW5jdGlvbihhLGIsYyxkKXtfLm5nKGIsZnVuY3Rpb24oKXt0aGlzLmdldEV2ZW50VGFyZ2V0KCkuZGlzcGF0Y2hFdmVudChuZXcgVFVhKCJmIixjKSl9LGEpO18uQUxhKGIsKDAsXy5pZSkoYS5PYSxhLGMsZCkpO18ubmcoYiwoMCxfLmllKShhLkdhLGEsYyxkKSl9OwpXVWE9ZnVuY3Rpb24oYSxiLGMsZCl7Xy5uZyhiLGZ1bmN0aW9uKCl7dmFyIGU9VVVhKHRoaXMpO3JldHVybiBlLldDKGQpLmlzTG9hZGVkKCk/ZS5rYTplLmxvYWQoZCl9LGEpO18uQUxhKGIsKDAsXy5pZSkoYS5PYSxhLGMsZCkpfTtaVWE9ZnVuY3Rpb24oYSxiLGMpe3ZhciBkPVtdLGU9YS5rYVtjXTtlJiYoXy5UYWEoZSxmdW5jdGlvbihmKXtSVWEoZi5yYyxiKSYmKGQucHVzaChmLmQpLF8uRGEoZSxmKSl9KSxlLmxlbmd0aD09MCYmZGVsZXRlIGEua2FbY10pO3JldHVybiBkfTskVWE9ZnVuY3Rpb24oYSxiLGMpe2IgaW5zdGFuY2VvZiBfLmljJiYoYi5rYT1jKTthLklhW2JdPWN9O2FWYT1mdW5jdGlvbihhLGIsYyl7YS5LYVtiXT1jO2lmKGM9YS5rYVtiXSl7aWYoYy5sZW5ndGg+MSl7Zm9yKGxldCBkPTA7ZDxjLmxlbmd0aDsrK2QpY1tkXS5pbmRleD1kO2Muc29ydChTVWEpfWZvcig7Yy5sZW5ndGg7KWMuc2hpZnQoKS5kLmNhbGxiYWNrKG51bGwpO2RlbGV0ZSBhLmthW2JdfX07CmJWYT1mdW5jdGlvbihhLGIpe2Eua2EmJl8uUGMoYS5rYSxmdW5jdGlvbihjLGQsZSl7Xy5UYWEoYyxmdW5jdGlvbihmKXtmLnJjPT1iJiZfLkRhKGMsZil9KTtjLmxlbmd0aD09MCYmZGVsZXRlIGVbZF19KX07Cl8uZFZhPWNsYXNzIGV4dGVuZHMgXy5FZHtjb25zdHJ1Y3Rvcigpe3N1cGVyKCk7dGhpcy5vYT17fTt0aGlzLklhPXt9O3RoaXMuS2E9e307dGhpcy5rYT17fTt0aGlzLndhPXt9O3RoaXMuUmE9e307dGhpcy5OYT1uZXcgXy5iZTt0aGlzLkFhPW51bGw7dmFyIGE9WFVhKHRoaXMpO3RoaXMhPWEmJihhLkJhP2EuQmEucHVzaCh0aGlzKTphLkJhPVt0aGlzXSl9Z2V0KGEpe3ZhciBiPV8uJHhhKHRoaXMsYSk7aWYoYj09bnVsbCl0aHJvdyBFcnJvcigidmRgIithKTtyZXR1cm4gYn1HYShhLGIpe3ZhciBjPV8uJHhhKHRoaXMsYSk7aWYoYz09bnVsbCl7aWYodGhpcy53YVthXSlyZXR1cm4gYz10aGlzLndhW2FdLmx6KCksXy5uZyhjLCgwLF8uaWUpKHRoaXMuR2EsdGhpcyxhLGIpKSxjO2lmKCFiKXRocm93IEVycm9yKCJ4ZGAiK2EpO3Rocm93IEVycm9yKCJ5ZGAiK2IrImAiK2EpO31yZXR1cm4gYy5NRGE/KGI9bmV3IF8uWWUsRExhKGIsYy5NRGEoKSksYi5jYWxsYmFjayhjKSxfLm5nKGIsCigwLF8uaWUpKHRoaXMuRWEsdGhpcyxhKSksYik6dGhpcy5FYShhKX1FYShhKXt0aGlzLndhW2FdJiZkZWxldGUgdGhpcy53YVthXTtyZXR1cm4gdGhpcy5nZXQoYSl9T2EoYSxiLGMpe3JldHVybiBjIGluc3RhbmNlb2YgXy51TGE/YzpuZXcgY1ZhKGEsYixjKX1yZWdpc3RlclNlcnZpY2UoYSxiLGMpe2lmKHRoaXMuaXNEaXNwb3NlZCgpKWN8fF8uRGQoYik7ZWxzZXt0aGlzLm9hW2FdPVtiLCFjXTtjPVpVYSh0aGlzLHRoaXMsYSk7Zm9yKGxldCBkPTA7ZDxjLmxlbmd0aDtkKyspY1tkXS5jYWxsYmFjayhudWxsKTtkZWxldGUgdGhpcy5JYVthXTthIGluc3RhbmNlb2YgXy5pYyYmXy52ZChhLGIuY29uc3RydWN0b3IpO3JldHVybiBifX11bnJlZ2lzdGVyU2VydmljZShhKXtpZighdGhpcy5vYVthXSl0aHJvdyBFcnJvcigidmRgIithKTt2YXIgYj10aGlzLm9hW2FdO2RlbGV0ZSB0aGlzLm9hW2FdO2JbMV0mJl8uRGQoYlswXSl9cWMoKXtpZihYVWEodGhpcyk9PXRoaXMpe3ZhciBhPQp0aGlzLkJhO2lmKGEpZm9yKDthLmxlbmd0aDspYVswXS5kaXNwb3NlKCl9ZWxzZXthPVhVYSh0aGlzKS5CYTtmb3IobGV0IGI9MDtiPGEubGVuZ3RoO2IrKylpZihhW2JdPT10aGlzKXthLnNwbGljZShiLDEpO2JyZWFrfX1mb3IobGV0IGIgaW4gdGhpcy5vYSlhPXRoaXMub2FbYl0sYVsxXSYmYVswXS5kaXNwb3NlJiZhWzBdLmRpc3Bvc2UoKTt0aGlzLm9hPW51bGw7dGhpcy5OYS5kaXNwb3NlKCk7YlZhKHRoaXMsdGhpcyk7dGhpcy5rYT1udWxsO18uRGQodGhpcy5TYSk7dGhpcy5SYT10aGlzLlNhPW51bGw7c3VwZXIucWMoKX1nZXRFdmVudFRhcmdldCgpe3JldHVybiB0aGlzLk5hfX07CmNWYT1mdW5jdGlvbihhLGIsYyl7Xy5iYS5jYWxsKHRoaXMpO3RoaXMuam49YTt0aGlzLmNhdXNlPWM7dGhpcy5tZXNzYWdlPSdNb2R1bGUgIicrYisnIiBmYWlsZWQgdG8gbG9hZCB3aGVuIHJlcXVlc3RpbmcgdGhlIHNlcnZpY2UgIicrYSsnIiBbY2F1c2U6ICcrYysiXSI7dGhpcy5zdGFjaz1jLnN0YWNrKyJcbldSQVBQRUQgQlk6XG4iK3RoaXMuc3RhY2t9O18uVWkoY1ZhLF8uYmEpO3ZhciBUVWE9ZnVuY3Rpb24oYSxiKXtfLlpkLmNhbGwodGhpcyxhKTt0aGlzLmpuPWJ9O18uVWkoVFVhLF8uWmQpO18ueGk9bmV3IF8uaWMoIk1wSndaYyIsIk1wSndaYyIpO18udWk9bmV3IF8uaWMoIlVVSnFWZSIsIlVVSnFWZSIpO3ZhciBveGE9e307dmFyIGVWYTtlVmE9ZnVuY3Rpb24oYSl7cmV0dXJuIGEuSWE/YS5JYS5nZXREYXRhKCk6e319OwpfLmZWYT1jbGFzc3tjb25zdHJ1Y3RvcihhLGIpe3RoaXMuRWE9Ynx8Xy5vZSgpO3RoaXMuSWE9YXx8bnVsbH13YShhLGIpe3ZhciBjPWVWYSh0aGlzKTt2YXIgZD10aGlzLkVhfHxfLm9lKCk7KGE9YShifHxveGEsYykpJiZhLklkP2Q9YS5JZCgpOihhPW14YShhKSxkPV8uQkhhKGQua2EsYSkpO3RoaXMub2EoZCxfLlRwKTtyZXR1cm4gZH1JZChhLGIpe2E9Xy5qaShhLGIsZVZhKHRoaXMpLHRoaXMuRWEpO3RoaXMub2EoYSxfLlRwKTtyZXR1cm4gYX1DZihhLGIsYyl7Xy5weGEoYSxiLGMsZVZhKHRoaXMpKTt0aGlzLm9hKGEsXy5UcCl9cmVuZGVyKGEsYil7YT1hKGJ8fHt9LGVWYSh0aGlzKSk7dGhpcy5vYShudWxsLGEgaW5zdGFuY2VvZiBfLlZwP2EuQ2I6bnVsbCk7cmV0dXJuIFN0cmluZyhhKX1rYShhLGIpe3ZhciBjPWVWYSh0aGlzKTthPWEoYnx8b3hhLGMpO3JldHVybiBTdHJpbmcoYSl9QWEoYSxiKXtyZXR1cm4gdGhpcy5CYShhLGIpfUJhKGEsYil7YT1hKGJ8fHt9LGVWYSh0aGlzKSk7CnRoaXMub2EobnVsbCxhLkNiKTtyZXR1cm4gYX1vYSgpe319O3ZhciBnVmE7Z1ZhPWNsYXNze2NvbnN0cnVjdG9yKGEpe3RoaXMua2E9YTt0aGlzLm9hPV8uJHhhKHRoaXMua2EsXy51aSl9Z2V0RGF0YSgpe3RoaXMua2EuaXNEaXNwb3NlZCgpfHwodGhpcy5vYT1fLiR4YSh0aGlzLmthLF8udWkpKTtyZXR1cm4gdGhpcy5vYT9fLlhwKHRoaXMub2EpOnt9fX07Xy5ZcD1jbGFzcyBleHRlbmRzIF8uZlZhe2NvbnN0cnVjdG9yKGEpe3ZhciBiPW5ldyBnVmEoYSk7c3VwZXIoYixhLmdldChfLldwKS5vaCgpKTt0aGlzLkdhPW5ldyBfLmJlO3RoaXMuTmE9Yn1nZXREYXRhKCl7cmV0dXJuIHRoaXMuTmEuZ2V0RGF0YSgpfWdldEV2ZW50VGFyZ2V0KCl7cmV0dXJuIHRoaXMuR2F9b2EoYSxiKXtzdXBlci5vYShhLGIpO3RoaXMuR2EuZGlzcGF0Y2hFdmVudChuZXcgXy5sU2EoXy5QeGEsYSxiKSl9fTtfLnZkKF8ueGksXy5ZcCk7Xy5oVmE9Y2xhc3N7Y29uc3RydWN0b3IoYSl7dGhpcy5rYT10eXBlb2YgYT09Im51bWJlciI/YT4wPzE6YTwwPy0xOm51bGw6YT09bnVsbD9udWxsOmE/LTE6MX1tYXJrKCl7c3dpdGNoKHRoaXMua2Epe2Nhc2UgMTpyZXR1cm4iXHUyMDBlIjtjYXNlIC0xOnJldHVybiJcdTIwMGYiO2RlZmF1bHQ6cmV0dXJuIiJ9fX07Xy5oVmEucHJvdG90eXBlLm9hPV8uV3dhO3ZhciBsVmEscFZhLHFWYSxyVmEsdlZhLHNWYSx0VmEsdVZhLHF4YSxyeGEsQVZhLHlWYSxGVmEsR1ZhLG9WYSxuVmEsUVZhLFJWYSxLVmEsU1ZhLENWYSxCVmEsSlZhLElWYSxMVmEsRVZhLFRWYSxVVmEseFZhLHdWYTtfLmlWYT1mdW5jdGlvbihhKXtpZihhIT1udWxsKXN3aXRjaChhLlJnYSl7Y2FzZSAxOnJldHVybiAxO2Nhc2UgLTE6cmV0dXJuLTE7Y2FzZSAwOnJldHVybiAwfXJldHVybiBudWxsfTtfLmFxPWZ1bmN0aW9uKGEpe3JldHVybiBfLlpwKGEsXy5UcCk/YTphIGluc3RhbmNlb2YgXy5wYz8oMCxfLiRwKShfLnFjKGEpLnRvU3RyaW5nKCkpOigwLF8uJHApKFN0cmluZyhTdHJpbmcoYSkpLnJlcGxhY2UoXy5qVmEsXy5rVmEpLF8uaVZhKGEpKX07bFZhPWZ1bmN0aW9uKGEpe2Z1bmN0aW9uIGIoYyl7dGhpcy5jb250ZW50PWN9Yi5wcm90b3R5cGU9YS5wcm90b3R5cGU7cmV0dXJuIGZ1bmN0aW9uKGMpe3JldHVybiBuZXcgYihTdHJpbmcoYykpfX07Cl8uJHA9ZnVuY3Rpb24oYSl7ZnVuY3Rpb24gYihjKXt0aGlzLmNvbnRlbnQ9Y31iLnByb3RvdHlwZT1hLnByb3RvdHlwZTtyZXR1cm4gZnVuY3Rpb24oYyxkKXtjPW5ldyBiKFN0cmluZyhjKSk7ZCE9PXZvaWQgMCYmKGMuUmdhPWQpO3JldHVybiBjfX0oXy5BVWEpO18uYnE9bFZhKEJVYSk7Xy5jcT1sVmEoXy5DVWEpO18ubVZhPWxWYShfLkRVYSk7Xy5kcT1sVmEoXy5FVWEpO18uZXE9bFZhKEZVYSk7Xy5mcT1mdW5jdGlvbihhKXt2YXIgYj1TdHJpbmcoYSk7YT09bnVsbD8oYT0iXyIsYj0ibnVsbCIpOmE9dHlwZW9mIGE9PT0ibnVtYmVyIj8iIyI6IjoiO3JldHVybmAke2IubGVuZ3RofSR7YX0ke2J9YH07Xy5ncT1mdW5jdGlvbihhLGIpe2ZvcihsZXQgYyBpbiBiKWMgaW4gYXx8KGFbY109YltjXSk7cmV0dXJuIGF9OwpfLmhxPWZ1bmN0aW9uKGEsYil7cmV0dXJuIGEmJmImJmEuZHBhJiZiLmRwYT9hLkNiIT09Yi5DYj8hMTphLnRvU3RyaW5nKCk9PT1iLnRvU3RyaW5nKCk6YSBpbnN0YW5jZW9mIF8uVnAmJmIgaW5zdGFuY2VvZiBfLlZwP2EuQ2IhPWIuQ2I/ITE6YS50b1N0cmluZygpPT1iLnRvU3RyaW5nKCk6YT09Yn07Xy5pcT1mdW5jdGlvbihhKXtyZXR1cm4gYSBpbnN0YW5jZW9mIG5WYT9vVmEoYSk/ITA6ISFhLmdldENvbnRlbnQoKTphIGluc3RhbmNlb2YgXy5WcD8hIWEuZ2V0Q29udGVudCgpOiEhYX07Xy5qcT1mdW5jdGlvbihhKXtyZXR1cm4gXy5pcShhKT9hOnZvaWQgMH07cFZhPXt9O3FWYT17fTsKXy5tcT1mdW5jdGlvbihhLGIsYyxkKXt2YXIgZT0ia2V5XyIrYSsiOiIrYixmPXBWYVtlXTtpZihmPT09dm9pZCAwfHxjPmYpcFZhW2VdPWMscVZhW2VdPWQ7ZWxzZSBpZihjPT1mKXtpZihkPT09cVZhW2VdKXRocm93IEVycm9yKCJBZGAiK2ErImAiK2IpO3Rocm93IEVycm9yKCJCZGAiK2ErImAiK2IpO319O18ubnE9ZnVuY3Rpb24oYSxiKXt2YXIgYz1xVmFbImtleV8iK2ErIjoiKyhifHwiIildO2N8fGI9PT0iInx8KGM9cVZhWyJrZXlfIithKyI6Il0pO3JldHVybiBjP2M6clZhfTtyVmE9ZnVuY3Rpb24oKXtyZXR1cm4iIn07Xy5vcT1mdW5jdGlvbihhKXtyZXR1cm4gXy5hcShhKX07Cl8ucHE9ZnVuY3Rpb24oYSl7aWYoYT09bnVsbClyZXR1cm4iIjtpZihhIGluc3RhbmNlb2YgXy5wYylhPV8ucWMoYSkudG9TdHJpbmcoKTtlbHNlIGlmKF8uWnAoYSxfLlRwKSlhPWEudG9TdHJpbmcoKTtlbHNlIHJldHVybiBhO3ZhciBiPSIiLGM9MCxkPSIiLGU9W10sZj0vPCg/OiEtLS4qPy0tfCg/OiF8KFwvP1thLXpdW1x3Oi1dKikpKCg/OltePiciXXwiW14iXSoifCdbXiddKicpKikpPnwkL2dpO2ZvcihsZXQgbTttPWYuZXhlYyhhKTspe3ZhciBnPW1bMV0saD1tWzJdO2xldCBuPW0uaW5kZXg7Zz1nP2cudG9Mb3dlckNhc2UoKTpudWxsO2lmKGQpZD09PWcmJihkPSIiKTtlbHNlIGlmKGM9YS5zdWJzdHJpbmcoYyxuKSxjPV8uY20oYyksc1ZhKGUpfHwoYz1jLnJlcGxhY2UoL1sgXHRcclxuXSsvZywiICIpLC9bXiBcdFxyXG5dJC8udGVzdChiKXx8KGM9Yy5yZXBsYWNlKC9eIC8sIiIpKSksYis9YyxnJiYoL14oc2NyaXB0fHN0eWxlfHRleHRhcmVhfHRpdGxlKSQvLnRlc3QoZyk/CmQ9Ii8iK2c6L15iciQvLnRlc3QoZyk/Yis9IlxuIjp0VmEudGVzdChnKT8vW15cbl0kLy50ZXN0KGIpJiYoYis9IlxuIik6L14odGR8dGgpJC8udGVzdChnKSYmKGIrPSJcdCIpLCF1VmEudGVzdCgiPCIrZysiPiIpKSlpZihnLmNoYXJBdCgwKT09PSIvIilmb3IoZz1nLnN1YnN0cmluZygxKTtlLmxlbmd0aD4wJiZlLnBvcCgpLnRhZyE9PWc7KTtlbHNlIGlmKC9ecHJlJC8udGVzdChnKSllLnB1c2gobmV3IHZWYShnLCEwKSk7ZWxzZXthOntpZihoIT09IiIpZm9yKDtjPXdWYS5leGVjKGgpOylpZigvXnN0eWxlJC9pLnRlc3QoY1sxXSkpe2g9Y1syXTt3VmEubGFzdEluZGV4PTA7aWYoaCE9PSIiKXtpZihoLmNoYXJBdCgwKT09PSInInx8aC5jaGFyQXQoMCk9PT0nIicpaD1oLnN1YnN0cigxLGgubGVuZ3RoLTIpO2I6e2M9L1tcdFxuXHIgXSooW146O1x0XG5cciBdKilbXHRcblxyIF0qOltcdFxuXHIgXSooW146O1x0XG5cciBdKilbXHRcblxyIF0qKD86O3wkKS9nO2Zvcih2YXIgaztrPQpjLmV4ZWMoaCk7KWlmKC9ed2hpdGUtc3BhY2UkL2kudGVzdChrWzFdKSl7az1rWzJdO2lmKC9eKHByZXxwcmUtd3JhcHxicmVhay1zcGFjZXMpJC9pLnRlc3Qoaykpe2g9ITA7YnJlYWsgYn1pZigvXihub3JtYWx8bm93cmFwKSQvaS50ZXN0KGspKXtoPSExO2JyZWFrIGJ9fWg9bnVsbH1icmVhayBhfWJyZWFrfWg9bnVsbH1oPT1udWxsJiYoaD1zVmEoZSkpO2UucHVzaChuZXcgdlZhKGcsaCkpfWlmKCFtWzBdKWJyZWFrO2M9bittWzBdLmxlbmd0aH1yZXR1cm4gYi5yZXBsYWNlKC9cdTAwQTAvZywiICIpfTt2VmE9Y2xhc3N7Y29uc3RydWN0b3IoYSxiKXt0aGlzLnRhZz1hO3RoaXMua2E9Yn19O3NWYT1mdW5jdGlvbihhKXt2YXIgYj1hLmxlbmd0aDtyZXR1cm4gYj4wP2FbYi0xXS5rYTohMX07dFZhPS9eXC8/KGFkZHJlc3N8YmxvY2txdW90ZXxkZHxkaXZ8ZGx8ZHR8aFsxLTZdfGhyfGxpfG9sfHB8cHJlfHRhYmxlfHRyfHVsKSQvO3VWYT1SZWdFeHAoIl48KD86YXJlYXxiYXNlfGJyfGNvbHxjb21tYW5kfGVtYmVkfGhyfGltZ3xpbnB1dHxrZXlnZW58bGlua3xtZXRhfHBhcmFtfHNvdXJjZXx0cmFja3x3YnIpXFxiIik7Cl8uelZhPWZ1bmN0aW9uKGEsYil7aWYoIWIpcmV0dXJuIHN4YShTdHJpbmcoYSksKCk9PiIiKS5yZXBsYWNlKHhWYSwiJmx0OyIpO2E9U3RyaW5nKGEpLnJlcGxhY2UoL1xbL2csIiYjOTE7Iik7dmFyIGM9W10sZD1bXTthPXN4YShhLChmLGcpPT57aWYoZyYmKGc9Zy50b0xvd2VyQ2FzZSgpLGIuaGFzT3duUHJvcGVydHkoZykmJmJbZ10pKXtsZXQgaD1jLmxlbmd0aCxrPSI8LyIsbT0iIjtpZihmLmNoYXJBdCgxKSE9PSIvIil7az0iPCI7bGV0IG47Zm9yKDtuPXdWYS5leGVjKGYpOylpZihuWzFdJiZuWzFdLnRvTG93ZXJDYXNlKCk9PT0iZGlyIil7aWYoZj1uWzJdKXtpZihmLmNoYXJBdCgwKT09PSInInx8Zi5jaGFyQXQoMCk9PT0nIicpZj1mLnN1YnN0cigxLGYubGVuZ3RoLTIpO2Y9Zi50b0xvd2VyQ2FzZSgpO2lmKGY9PT0ibHRyInx8Zj09PSJydGwifHxmPT09ImF1dG8iKW09JyBkaXI9IicrZisnIid9YnJlYWt9d1ZhLmxhc3RJbmRleD0wfWNbaF09aytnKyI+IjtkW2hdPW07cmV0dXJuIlsiKwpoKyJdIn1yZXR1cm4iIn0pO2E9Xy5xcShhKTt2YXIgZT15VmEoYyk7YT1hLnJlcGxhY2UoL1xbKFxkKylcXS9nLGZ1bmN0aW9uKGYsZyl7cmV0dXJuIGRbZ10mJmNbZ10/Y1tnXS5zdWJzdHIoMCxjW2ddLmxlbmd0aC0xKStkW2ddKyI+IjpjW2ddfSk7cmV0dXJuIGErZX07cXhhPVJlZ0V4cC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkoInN0aWNreSIpO3J4YT1uZXcgUmVnRXhwKChxeGE/IiI6Il4iKSsiKD86IXwvPyhbYS16QS1aXVthLXpBLVowLTk6LV0qKSkiLHF4YT8iZ3kiOiJnIik7QVZhPWZ1bmN0aW9uKGEsYil7YT1hLnJlcGxhY2UoLzxcLy9nLCI8XFwvIikucmVwbGFjZSgvXF1cXT4vZywiXV1cXD4iKTtyZXR1cm4gYj9hLnJlcGxhY2UoL3svZywiIFxceyIpLnJlcGxhY2UoL30vZywiIFxcfSIpLnJlcGxhY2UoL1wvXCovZywiLyAqIikucmVwbGFjZSgvXFwkLywiXFwgIik6YX07CnlWYT1mdW5jdGlvbihhKXt2YXIgYj1bXTtmb3IobGV0IGQ9MCxlPWEubGVuZ3RoO2Q8ZTsrK2Qpe3ZhciBjPWFbZF07Yy5jaGFyQXQoMSk9PSIvIj8oYz1iLmxhc3RJbmRleE9mKGMpLGM8MD9hW2RdPSIiOihhW2RdPWIuc2xpY2UoYykucmV2ZXJzZSgpLmpvaW4oIiIpLGIubGVuZ3RoPWMpKTpjPT0iPGxpPiImJmIubGFzdEluZGV4T2YoIjwvb2w+Iik8MCYmYi5sYXN0SW5kZXhPZigiPC91bD4iKTwwP2FbZF09IiI6dVZhLnRlc3QoYyl8fGIucHVzaCgiPC8iK2Muc3Vic3RyaW5nKDEpKX1yZXR1cm4gYi5yZXZlcnNlKCkuam9pbigiIil9O18uSz1mdW5jdGlvbihhKXtyZXR1cm4gXy5acChhLF8uVHApP18ucXEoXy56VmEoYS5nZXRDb250ZW50KCkpKTpTdHJpbmcoYSkucmVwbGFjZShfLmpWYSxfLmtWYSl9OwpfLnJxPWZ1bmN0aW9uKGEpe18uWnAoYSxfLlRwKT8oYT1fLnpWYShhLmdldENvbnRlbnQoKSksYT1TdHJpbmcoYSkucmVwbGFjZShCVmEsXy5rVmEpKTphPVN0cmluZyhhKS5yZXBsYWNlKENWYSxfLmtWYSk7cmV0dXJuIGF9O18uc3E9ZnVuY3Rpb24oYSl7YT1TdHJpbmcoYSk7Zm9yKHZhciBiPShkLGUsZik9Pnt2YXIgZz1NYXRoLm1pbihlLmxlbmd0aC1mLGQubGVuZ3RoKTtmb3IobGV0IGg9MDtoPGc7aCsrKWlmKGRbaF0hPT1fLkRWYShlW2YraF0pKXJldHVybiExO3JldHVybiEwfSxjPTA7KGM9YS5pbmRleE9mKCI8IixjKSkhPS0xOyl7aWYoYigiXHgzYy9zY3JpcHQiLGEsYyl8fGIoIlx4M2MhLS0iLGEsYykpcmV0dXJuInpTb3l6IjtjKz0xfXJldHVybiBhfTtfLnRxPWZ1bmN0aW9uKGEpe18uWnAoYSxfLlVwKT9hPWEuZ2V0Q29udGVudCgpOihhPVN0cmluZyhhKSxhPUVWYS50ZXN0KGEpP2E6InpTb3l6Iik7cmV0dXJuIGF9OwpfLnVxPWZ1bmN0aW9uKGEpe18uWnAoYSxfLlVwKSYmKGE9YS5nZXRDb250ZW50KCkpO3JldHVybihhJiYhYS5zdGFydHNXaXRoKCIgIik/IiAiOiIiKSthfTtGVmE9L1snKCldL2c7R1ZhPWZ1bmN0aW9uKGEpe3JldHVybiIlIithLmNoYXJDb2RlQXQoMCkudG9TdHJpbmcoMTYpfTtfLnZxPWZ1bmN0aW9uKGEpe2E9ZW5jb2RlVVJJQ29tcG9uZW50KFN0cmluZyhhKSk7RlZhLmxhc3RJbmRleD0wO3JldHVybiBGVmEudGVzdChhKT9hLnJlcGxhY2UoRlZhLEdWYSk6YX07Xy5IVmE9ZnVuY3Rpb24oYSl7cmV0dXJuIF8ud3EoYSl9O18ueHE9ZnVuY3Rpb24oYSl7Xy5acChhLHhVYSl8fF8uWnAoYSxfLnlVYSk/YT1fLndxKGEpOl8ucWlhKGEpP2E9Xy5IVmEoXy5CYyhhKSk6YSBpbnN0YW5jZW9mIF8udGM/YT1fLkhWYShfLnpjKGEpLnRvU3RyaW5nKCkpOihhPVN0cmluZyhhKSxhPUlWYS50ZXN0KGEpP2EucmVwbGFjZShKVmEsS1ZhKToiYWJvdXQ6aW52YWxpZCN6U295eiIpO3JldHVybiBhfTsKXy55cT1mdW5jdGlvbihhKXtfLlpwKGEseFVhKXx8Xy5acChhLF8ueVVhKT9hPV8ud3EoYSk6Xy5xaWEoYSk/YT1fLkhWYShfLkJjKGEpKTphIGluc3RhbmNlb2YgXy50Yz9hPV8uSFZhKF8uemMoYSkudG9TdHJpbmcoKSk6KGE9U3RyaW5nKGEpLGE9TFZhLnRlc3QoYSk/YS5yZXBsYWNlKEpWYSxLVmEpOiJhYm91dDppbnZhbGlkI3pTb3l6Iik7cmV0dXJuIGF9O18uTD1mdW5jdGlvbihhKXtyZXR1cm4gXy5acChhLHpVYSk/QVZhKGEuZ2V0Q29udGVudCgpLCExKTphPT1udWxsPyIiOmEgaW5zdGFuY2VvZiBfLmlpYT9BVmEoXy5saWEoYSksITEpOkFWYShTdHJpbmcoYSksITApfTtfLk1WYT1mdW5jdGlvbiguLi5hKXtyZXR1cm4gYS5mbGF0KCkuZmlsdGVyKGI9Pl8uaXEoYikpLmpvaW4oIjsiKX07Xy56cT1mdW5jdGlvbiguLi5hKXtyZXR1cm4gYS5mbGF0KCkuZmlsdGVyKGI9PmIpLmpvaW4oIiAiKX07Cl8uQXE9ZnVuY3Rpb24oYSwuLi5iKXtyZXR1cm4oYj1hPT09ImNsYXNzIj9fLnpxKC4uLmIpOl8uTVZhKC4uLmIpKT8oMCxfLmRxKShgJHthfT0iJHtfLksoYil9ImApOigwLF8uZHEpKCIiKX07Xy5EVmE9YT0+IkEiPD1hJiZhPD0iWiI/YS50b0xvd2VyQ2FzZSgpOmE7Xy5OVmE9e307Xy5PVmE9ZnVuY3Rpb24oYSxiKXt2YXIgYz1fLmlWYShhKTtpZihjIT1udWxsKXJldHVybiBjO2I9Ynx8Xy5acChhLF8uVHApO2I9Xy5Xd2EoYSsiIixiKTthIT1udWxsJiZhLlJnYSE9PXZvaWQgMCYmKGEuUmdhPWIpO3JldHVybiBifTsKXy5CcT1mdW5jdGlvbihhKXt2YXIgYj1fLk5WYVsxXXx8KF8uTlZhWzFdPW5ldyBfLmhWYSgxKSksYz1fLnkoU3RyaW5nKGEpKTthPV8uT1ZhKGEsITApO2E9PW51bGwmJihhPWIub2EoXy5xYyhjKS50b1N0cmluZygpLCEwKSk7dmFyIGQ9dm9pZCAwO2Q9ZHx8ZD09dm9pZCAwO3ZhciBlLGY9YSE9MCYmYSE9Yi5rYTtmPyhmJiYoZT1hPT0tMT8icnRsIjoibHRyIiksZT1fLktpYSgic3BhbiIse2RpcjplfSxjKSk6ZT1jO2M9Xy5xYyhjKS50b1N0cmluZygpO2U9Xy5FaWEoW2UsZCYmKE51bWJlcihhKSpOdW1iZXIoYi5rYSk8MHx8Yi5rYT09MSYmXy51VWEudGVzdChfLlF3YShjLCEwKSl8fGIua2E9PS0xJiZfLnRVYS50ZXN0KF8uUXdhKGMsITApKSk/Yi5rYT09MT8iXHUyMDBlIjoiXHUyMDBmIjoiIl0pO3JldHVybiBfLnFjKGUpLnRvU3RyaW5nKCl9O18uWnA9ZnVuY3Rpb24oYSxiKXtyZXR1cm4gYSE9bnVsbCYmYS5DYj09PWJ9OwpvVmE9ZnVuY3Rpb24oYSl7dmFyIGI7Zm9yKGxldCBjIG9mKGI9YS5UMikhPW51bGw/YjpbXSlpZihjIGluc3RhbmNlb2YgblZhJiZvVmEoYykpcmV0dXJuITA7cmV0dXJuITF9O18uTT1mdW5jdGlvbihhLGIpe2EuVDIhPT12b2lkIDA/YS5UMi5wdXNoKGIpOmEuY29udGVudCs9YjtyZXR1cm4gYX07Xy5PPWZ1bmN0aW9uKGEsYil7YS5UMiE9PXZvaWQgMD9hLlQyLnB1c2goYik6ImZ1bmN0aW9uIj09dHlwZW9mIF8uUFZhJiZiIGluc3RhbmNlb2YgXy5QVmE/KGEuVDI9W2EuY29udGVudCxiXSxhLmNvbnRlbnQ9dm9pZCAwKTpiIGluc3RhbmNlb2YgblZhP2IuUjlhKCk/YS5jb250ZW50Kz1iLmdldENvbnRlbnQoKTooYS5UMj1bYS5jb250ZW50LGJdLGEuY29udGVudD12b2lkIDApOmEuY29udGVudCs9YjtyZXR1cm4gYX07Cm5WYT1jbGFzcyBleHRlbmRzIF8uQVVhe1I5YSgpe3JldHVybiB0aGlzLmNvbnRlbnQhPT12b2lkIDB9Z2V0Q29udGVudCgpe2lmKHRoaXMuY29udGVudCE9PXZvaWQgMClyZXR1cm4gdGhpcy5jb250ZW50O3ZhciBhPSIiO2ZvcihsZXQgYiBvZiB0aGlzLlQyKWE9ImZ1bmN0aW9uIj09dHlwZW9mIF8uUFZhJiZiIGluc3RhbmNlb2YgXy5QVmE/YStiLnJlbmRlcigpOmErYjtyZXR1cm4gYX10b1N0cmluZygpe3JldHVybiB0aGlzLmdldENvbnRlbnQoKX19O18uUD0oKCk9PntmdW5jdGlvbiBhKCl7dGhpcy5jb250ZW50PSIifWEucHJvdG90eXBlPW5WYS5wcm90b3R5cGU7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIG5ldyBhfX0pKCk7ClFWYT17Ilx4MDAiOiImIzA7IiwiXHQiOiImIzk7IiwiXG4iOiImIzEwOyIsIlx2IjoiJiMxMTsiLCJcZiI6IiYjMTI7IiwiXHIiOiImIzEzOyIsIiAiOiImIzMyOyIsJyInOiImcXVvdDsiLCImIjoiJmFtcDsiLCInIjoiJiMzOTsiLCItIjoiJiM0NTsiLCIvIjoiJiM0NzsiLCI8IjoiJmx0OyIsIj0iOiImIzYxOyIsIj4iOiImZ3Q7IiwiYCI6IiYjOTY7IiwiXHUwMDg1IjoiJiMxMzM7IiwiXHUwMGEwIjoiJiMxNjA7IiwiXHUyMDI4IjoiJiM4MjMyOyIsIlx1MjAyOSI6IiYjODIzMzsifTtfLmtWYT1mdW5jdGlvbihhKXtyZXR1cm4gUVZhW2FdfTsKUlZhPXsiXHgwMCI6IiUwMCIsIlx1MDAwMSI6IiUwMSIsIlx1MDAwMiI6IiUwMiIsIlx1MDAwMyI6IiUwMyIsIlx1MDAwNCI6IiUwNCIsIlx1MDAwNSI6IiUwNSIsIlx1MDAwNiI6IiUwNiIsIlx1MDAwNyI6IiUwNyIsIlxiIjoiJTA4IiwiXHQiOiIlMDkiLCJcbiI6IiUwQSIsIlx2IjoiJTBCIiwiXGYiOiIlMEMiLCJcciI6IiUwRCIsIlx1MDAwZSI6IiUwRSIsIlx1MDAwZiI6IiUwRiIsIlx1MDAxMCI6IiUxMCIsIlx1MDAxMSI6IiUxMSIsIlx1MDAxMiI6IiUxMiIsIlx1MDAxMyI6IiUxMyIsIlx1MDAxNCI6IiUxNCIsIlx1MDAxNSI6IiUxNSIsIlx1MDAxNiI6IiUxNiIsIlx1MDAxNyI6IiUxNyIsIlx1MDAxOCI6IiUxOCIsIlx1MDAxOSI6IiUxOSIsIlx1MDAxYSI6IiUxQSIsIlx1MDAxYiI6IiUxQiIsIlx1MDAxYyI6IiUxQyIsIlx1MDAxZCI6IiUxRCIsIlx1MDAxZSI6IiUxRSIsIlx1MDAxZiI6IiUxRiIsIiAiOiIlMjAiLCciJzoiJTIyIiwiJyI6IiUyNyIsIigiOiIlMjgiLCIpIjoiJTI5IiwKIjwiOiIlM0MiLCI+IjoiJTNFIiwiXFwiOiIlNUMiLCJ7IjoiJTdCIiwifSI6IiU3RCIsIlx1MDA3ZiI6IiU3RiIsIlx1MDA4NSI6IiVDMiU4NSIsIlx1MDBhMCI6IiVDMiVBMCIsIlx1MjAyOCI6IiVFMiU4MCVBOCIsIlx1MjAyOSI6IiVFMiU4MCVBOSIsIlx1ZmYwMSI6IiVFRiVCQyU4MSIsIlx1ZmYwMyI6IiVFRiVCQyU4MyIsIlx1ZmYwNCI6IiVFRiVCQyU4NCIsIlx1ZmYwNiI6IiVFRiVCQyU4NiIsIlx1ZmYwNyI6IiVFRiVCQyU4NyIsIlx1ZmYwOCI6IiVFRiVCQyU4OCIsIlx1ZmYwOSI6IiVFRiVCQyU4OSIsIlx1ZmYwYSI6IiVFRiVCQyU4QSIsIlx1ZmYwYiI6IiVFRiVCQyU4QiIsIlx1ZmYwYyI6IiVFRiVCQyU4QyIsIlx1ZmYwZiI6IiVFRiVCQyU4RiIsIlx1ZmYxYSI6IiVFRiVCQyU5QSIsIlx1ZmYxYiI6IiVFRiVCQyU5QiIsIlx1ZmYxZCI6IiVFRiVCQyU5RCIsIlx1ZmYxZiI6IiVFRiVCQyU5RiIsIlx1ZmYyMCI6IiVFRiVCQyVBMCIsIlx1ZmYzYiI6IiVFRiVCQyVCQiIsCiJcdWZmM2QiOiIlRUYlQkMlQkQifTtLVmE9ZnVuY3Rpb24oYSl7cmV0dXJuIFJWYVthXX07Xy5qVmE9L1tceDAwXHgyMlx4MjZceDI3XHgzY1x4M2VdL2c7U1ZhPS9bXHgwMFx4MjJceDI3XHgzY1x4M2VdL2c7Q1ZhPS9bXHgwMFx4MDktXHgwZCBceDIyXHgyNlx4MjdceDJkXC9ceDNjLVx4M2VgXHg4NVx4YTBcdTIwMjhcdTIwMjldL2c7QlZhPS9bXHgwMFx4MDktXHgwZCBceDIyXHgyN1x4MmRcL1x4M2MtXHgzZWBceDg1XHhhMFx1MjAyOFx1MjAyOV0vZztKVmE9L1tceDAwLSBceDIyXHgyNy1ceDI5XHgzY1x4M2VcXFx4N2JceDdkXHg3Zlx4ODVceGEwXHUyMDI4XHUyMDI5XHVmZjAxXHVmZjAzXHVmZjA0XHVmZjA2LVx1ZmYwY1x1ZmYwZlx1ZmYxYVx1ZmYxYlx1ZmYxZFx1ZmYxZlx1ZmYyMFx1ZmYzYlx1ZmYzZF0vZztJVmE9L14oPyFqYXZhc2NyaXB0OikoPzpbYS16MC05Ky4tXSs6fFteJjpcLz8jXSooPzpbXC8/I118JCkpL2k7TFZhPS9eW14mOlwvPyNdKig/OltcLz8jXXwkKXxeaHR0cHM/OnxeZmlsZXN5c3RlbTpodHRwcz86fF5mdHA6fF5kYXRhOmltYWdlXC9bYS16MC05Ky1dKztiYXNlNjQsW2EtejAtOStcL10rPSokfF5ibG9iOi9pOwpFVmE9L14oPyFvbnxzcmN8KD86YWN0aW9ufGFyY2hpdmV8YmFja2dyb3VuZHxjaXRlfGNsYXNzaWR8Y29kZWJhc2V8Y29udGVudHxkYXRhfGRzeW5jfGhyZWZ8aHR0cC1lcXVpdnxsb25nZGVzY3xzdHlsZXx1c2VtYXApXHMqJCkoPzpbYS16MC05XyQ6LV0qKSQvaTtUVmE9L14oPyFiYXNlfGlmcmFtZXxsaW5rfG5vZnJhbWVzfG5vc2NyaXB0fG9iamVjdHxzY3JpcHR8c3R5bGV8dGV4dGFyZWF8dGl0bGV8eG1wKVthLXowLTlfJDotXSokL2k7VVZhPS9eW2EtekEtWjAtOStcL18tXSs9ezAsMn0kLztfLnFxPWZ1bmN0aW9uKGEpe3JldHVybiBTdHJpbmcoYSkucmVwbGFjZShTVmEsXy5rVmEpfTtfLndxPWZ1bmN0aW9uKGEpe3JldHVybiBTdHJpbmcoYSkucmVwbGFjZShKVmEsS1ZhKX07Xy5FcT1mdW5jdGlvbihhKXthPVN0cmluZyhhKTtyZXR1cm4gVFZhLnRlc3QoYSk/YToielNveXoifTtfLkZxPWZ1bmN0aW9uKGEpe2E9U3RyaW5nKGEpO3JldHVybiBVVmEudGVzdChhKT9hOiJ6U295eiJ9Owp4VmE9LzwvZzt3VmE9LyhbYS16QS1aXVthLXpBLVowLTk6XC1dKilbXHRcblxyXHUwMDIwXSo9W1x0XG5cclx1MDAyMF0qKCJbXiJdKiJ8J1teJ10qJykvZzt2YXIgVlZhPWNsYXNze2VudGVyKCl7fWV4aXQoKXt9TkgoKXtyZXR1cm4iIn13YSgpe31vYShhLGIpe2IoKX19LFdWYT1mdW5jdGlvbihhLGIpe2lmKGIgaW5zdGFuY2VvZiBFbGVtZW50fHxiIGluc3RhbmNlb2YgRG9jdW1lbnRGcmFnbWVudCl7e2xldCBjPV8ucXdhKGIsYS5XaSk7aWYoYy5sZW5ndGg9PT0xKWI9Y1swXTtlbHNle2I9ZG9jdW1lbnQuY3JlYXRlRG9jdW1lbnRGcmFnbWVudCgpO2ZvcihsZXQgZCBvZiBjKWIuYXBwZW5kQ2hpbGQoZCl9fWEuV2kgaW5zdGFuY2VvZiBWVmF8fGEuZ2V0RXZlbnRUYXJnZXQoKS5kaXNwYXRjaEV2ZW50KG5ldyBfLlpkKF8ualNhLGIpKX1yZXR1cm4gYn0sWFZhPWZ1bmN0aW9uKGEsYil7aWYoYS5XaSBpbnN0YW5jZW9mIFZWYSlyZXR1cm4gYjt2YXIgYz1hLkthO18uZWQoYyxiLlRhYSgpKTtXVmEoYSxjKTthLm9hKG51bGwsXy5UcCk7Yj0oMCxfLiRwKShjLmlubmVySFRNTCk7Yy50ZXh0Q29udGVudD0iIjtyZXR1cm4gYn0sT3hhPWNsYXNzIGV4dGVuZHMgXy5ZcHtjb25zdHJ1Y3RvcihhLApiPW5ldyBWVmEpe3N1cGVyKGEpO3RoaXMuV2k9Ynx8bmV3IFZWYTt0aGlzLkthPXRoaXMuRWEuY3JlYXRlRWxlbWVudCgiZmFrZS1lbGVtZW50Iil9d2EoYSxiKXtfLmp3YSgpO3RyeXtyZXR1cm4gV1ZhKHRoaXMsc3VwZXIud2EoYSxiKSl9ZmluYWxseXtfLkpoPW51bGx9fUlkKGEsYil7Xy5qd2EoKTt0cnl7cmV0dXJuIFdWYSh0aGlzLHN1cGVyLklkKGEsYikpfWZpbmFsbHl7Xy5KaD1udWxsfX1DZihhLGIsYyl7Xy5qd2EoKTt0cnl7c3VwZXIuQ2YoYSxiLGMpLFdWYSh0aGlzLGEpfWZpbmFsbHl7Xy5KaD1udWxsfX1yZW5kZXIoYSxiKXtfLmp3YSgpO3RyeXtsZXQgYz1hKGJ8fHt9LHRoaXMuZ2V0RGF0YSgpKTtpZihjIGluc3RhbmNlb2YgXy5WcClyZXR1cm4gU3RyaW5nKFhWYSh0aGlzLGMpKTt0aGlzLm9hKG51bGwsbnVsbCk7cmV0dXJuIFN0cmluZyhjKX1maW5hbGx5e18uSmg9bnVsbH19QmEoYSxiKXtfLmp3YSgpO3RyeXtsZXQgYz1hKGJ8fHt9LHRoaXMuZ2V0RGF0YSgpKTsKaWYoYy5DYj09PV8uVHApcmV0dXJuIHN1cGVyLm9hKG51bGwsYy5DYiksWFZhKHRoaXMsYyk7dGhpcy5vYShudWxsLGMuQ2IpO3JldHVybiBXVmEodGhpcyxjKX1maW5hbGx5e18uSmg9bnVsbH19fTtfLlhwPWZ1bmN0aW9uKGEpe2lmKCFhLmthKXJldHVybiBudWxsO2lmKCFhLm9hKXtmb3IobGV0IGIgaW4gYS5rYSl7aWYodHlwZW9mIGEua2FbYl0hPT0iZnVuY3Rpb24iKWNvbnRpbnVlO2lmKCFhLmthLmhhc093blByb3BlcnR5KGIpKWNvbnRpbnVlO2xldCBjPWEua2FbYl07T2JqZWN0LmRlZmluZVByb3BlcnR5KGEua2EsYix7Y29uZmlndXJhYmxlOiEwLGdldDooKT0+e3RyeXtsZXQgZD1jKCk7T2JqZWN0LmRlZmluZVByb3BlcnR5KGEua2EsYix7dmFsdWU6ZH0pO3JldHVybiBkfWNhdGNoKGQpe18uZmEoZCl9fX0pfWEub2E9ITB9cmV0dXJuIGEua2F9O18udmk9Y2xhc3N7Y29uc3RydWN0b3IoYSl7dGhpcy5rYT1hfHxudWxsO3RoaXMub2E9ITF9fTtfLnZkKF8udWksXy52aSk7ZmMoInZmdU5KZiIsIlNGM2dzZCIpO18uWVZhPV8ua2MoInZmdU5KZiIpO18uWlZhPXhkKCJTRjNnc2QiLCJpRlF5S2YiLCJFTDlnOSIsXy5ZVmEpO18uQXhhPV8ua2MoIklaVDYzIik7Xy5PYyhfLkF4YSk7Xy5HcT1fLmtjKCJQclBZUmQiLFtfLkF4YSxfLnpFYV0pO2ZjKCJRSWhGciIsIlNGM2dzZCIpO2ZjKCJwdzcwR2MiLCJJWm40eGMiKTtfLiRWYT1fLmtjKCJwdzcwR2MiLFtdKTtfLk9jKF8uJFZhKTtfLmFXYT14ZCgiSVpuNHhjIiwiRVZOaGpmIix2b2lkIDAsXy4kVmEsIkdtRXlDYiIpO18uYldhPV8ua2MoIlFJaEZyIixbXy5HcSxfLmFXYV0pO2ZjKCJ5R2ZTZGQiLCJHbUV5Q2IiKTtfLmNXYT1fLmtjKCJ5R2ZTZGQiLFtdKTtfLk9jKF8uY1dhKTtfLmRXYT14ZCgiR21FeUNiIiwiTkoxcmZlIix2b2lkIDAsXy5jV2EpO18uT2MoXy5kV2EpO18uaG0oXy5uZihfLmRXYSksXy5kd2EpO18uaG0oXy5uZihfLlpWYSksXy5iV2EpO18uZVdhPXhkKCJVZ0F0WGUiLCJyTHBkSWYiLCJMM0xyc2QiKTt2YXIgRnhhPWNsYXNzIGV4dGVuZHMgXy5se2NvbnN0cnVjdG9yKGEpe3N1cGVyKGEpfX07Xy5IcT1jbGFzc3tjb25zdHJ1Y3RvcihhLGIpe3RoaXMuaWQ9YTt0aGlzLmRlZmF1bHRWYWx1ZT1ifUsxKCl7cmV0dXJuIHRoaXMuZGVmYXVsdFZhbHVlfWdldElkKCl7cmV0dXJuIHRoaXMuaWR9dG9TdHJpbmcoKXtyZXR1cm4gdGhpcy5pZH19O18uZldhPVN5bWJvbCgpO18uZ1dhPVN5bWJvbCgpO18uaFdhPW5ldyBfLkhxKCJyZXRyeUNvdW50IiwwKTtfLnZ4YT1uZXcgXy5IcSgiZWVzVG9rZW5zIik7Xy5taT1uZXcgXy5IcSgiZnJvbnRlbmRNZXRob2RUeXBlIik7Xy5pV2E9bmV3IF8uSHEoImJhdGNoSWQiKTtfLmpXYT1uZXcgXy5IcSgiYmF0Y2hSZXF1ZXN0SWQiKTtfLnV4YT1uZXcgXy5IcSgiZXh0ZW5zaW9uSWQiKTtfLmxpPW5ldyBfLkhxKCJ1bm9iZnVzY2F0ZWRScGNJZCIpO18ua1dhPW5ldyBfLkhxKCJpc0luaXRpYWxEYXRhIiwhMCk7Xy5JcT1mdW5jdGlvbihhLGIpe2lmKGE9YS5vcHRpb25zLmdldChiLmdldElkKCkpKXt2YXIgYztyZXR1cm4oYz1hWzFdKSE9bnVsbD9jOmIuSzEoKX19OwpfLmxXYT1jbGFzc3tjb25zdHJ1Y3RvcihhLGIsYz17fSxkPVtdKXt0aGlzLlprPWE7dGhpcy5Mbz1iO3RoaXMuc2lkZUNoYW5uZWw9Yzt0aGlzLm9wdGlvbnM9bmV3IE1hcDtfLkZiYShfLmdXYT09PV8uZ1dhKTtkLmZvckVhY2goZT0+e3ZhciBmPWUua2V5O2U9ZS52YWx1ZTt0aGlzLm9wdGlvbnMuc2V0KGYuZ2V0SWQoKSxbZixlXSl9KX1VbCgpe3JldHVybiB0aGlzLlprfWVCKCl7dmFyIGE9dGhpcy5MbztpZihhIT1udWxsKXJldHVybiB0aGlzLkxvPShhPT1udWxsPzA6YS5pJCgpKT9hLmNsb25lKCk6YX1DdyhhLGIpe18uRmJhKGEuZGVmYXVsdFZhbHVlIT1udWxsfHxiIT09dm9pZCAwKTt2YXIgYz10aGlzLmNsb25lKCk7Yy5vcHRpb25zLnNldChhLmdldElkKCksW2EsYiE9bnVsbD9iOmEuSzEoKV0pO3JldHVybiBjfWNsb25lKCl7dmFyIGE9T2JqZWN0LmZyb21FbnRyaWVzKE9iamVjdC5lbnRyaWVzKHRoaXMuc2lkZUNoYW5uZWwpLm1hcCgoW2MsZF0pPT5bYyxkLmNsb25lKCldKSksCmI9dGhpcy5MbztiPShiPT1udWxsPzA6Yi5pJCgpKT9iOmI9PW51bGw/dm9pZCAwOmIuY2xvbmUoKTtyZXR1cm4gbmV3IF8ubFdhKHRoaXMuWmssYixhLEFycmF5LmZyb20odGhpcy5vcHRpb25zLnZhbHVlcygpLChbYyxkXSk9Pih7a2V5OmMsdmFsdWU6ZH0pKSl9Z2V0IGFkYigpe3JldHVybiB0aGlzLlprfX07Xy5KcT1bLTEsXy5TbixmdW5jdGlvbihhLGIsYyl7S2ZhKCk7dHJ5e2xldCBkPWMuZXh0ZW5zaW9ucztmb3IoO0xmYShiKSYmYi5rYSE9NDspaWYoYi5BYT09PTExKXtsZXQgZj1iLkJhLGc9ITEsaDtUQ2EoYiwoayxtKT0+e2g9aztrPWNbaF07aWYoaz09bnVsbCl7bGV0IG49ZD09bnVsbD92b2lkIDA6ZFtoXTtpZihuKXtsZXQgcD1JZmEobikscj1fLkNmYShHZmEsRmZhLEhmYSxuKS51amE7az1jW2hdPSh4LHosQik9PnAoXy5BRGEoeixyLEIpLHgpfX1rIT1udWxsP2sobSxhLGgpOihnPSEwLG0ub2Eua2E9bS5vYS53YSl9KTtnJiYkZGEoYSxoLFFDYShiLGYpKX1lbHNlICRkYShhLGIud2EsTmZhKGIpKTtsZXQgZT1ZZGEoYSk7ZSYmKGUuWWNiPWMudWtiW09mYV0pO3JldHVybiEwfWNhdGNoKGQpe2lmKGQgaW5zdGFuY2VvZiBSYW5nZUVycm9yKXRocm93IG5ldyBTeW50YXhFcnJvcjt0aHJvdyBkO31maW5hbGx5e1BmYT4wJiZQZmEtLX19LGZ1bmN0aW9uKGEsYil7cmV0dXJuKGMsCmQsZSk9PntkPXhmYShkLGEpO2QhPW51bGwmJihfLktiKGMsMSwzKSxfLktiKGMsMiwwKSxkRGEoYy5rYSxlKSxlPV8ucGdhKGMsMyksYihkLGMpLF8uc2dhKGMsZSksXy5LYihjLDEsNCkpfX1dO18ubVdhPWNsYXNze2NvbnN0cnVjdG9yKGEsYixjLGQ9e30pe3RoaXMuWms9YTt0aGlzLmc0PWI7dGhpcy5zaWRlQ2hhbm5lbD1jO3RoaXMua2E9ZDtfLkZiYShfLmdXYT09PV8uZ1dhKX1VbCgpe3JldHVybiB0aGlzLlprfXU5KCl7dmFyIGE9dGhpcy5nNDtyZXR1cm4gYSBpbnN0YW5jZW9mIF8ubD9hLmkkKCk/YS5jbG9uZSgpOmE6YX1Ddygpe3JldHVybiBuZXcgXy5tV2EodGhpcy5aayx0aGlzLmc0LHRoaXMuc2lkZUNoYW5uZWwpfWdldCBhZGIoKXtyZXR1cm4gdGhpcy5aa319O3ZhciBuV2E7Xy5LcT1TeW1ib2woKTtuV2E9U3ltYm9sKCk7Xy5vV2E9e307Cl8ueHhhPWNsYXNze2NvbnN0cnVjdG9yKGEsYixjLGQpe2lmKCFhfHx0eXBlb2YgYSE9PSJvYmplY3QifHwhYVtuV2FdKXtsZXQgZT1hLGYsZyxoLGs7aXNOYU4oZSl8fChoPStlKTtpZihkKWZvcihsZXQgbT0wO208ZC5sZW5ndGg7bSs9Mil7bGV0IG49ZFttXSxwPWRbbSsxXTtuPT09Xy5saT9hPXA6bj09PV8ubWk/Zz1wOm49PT1fLnV4YT9oPXA6bj09PV8udnhhJiYoaz1bLi4ucF0pO2xldCByOygocj1mKSE9bnVsbD9yOmY9W10pLnB1c2goT2JqZWN0LmZyZWV6ZSh7a2V5Om4sdmFsdWU6cH0pKX1hPXtbbldhXTohMCxTNGE6ZixPbmI6ayxleHRlbnNpb25JZDpoLEtYYjpnLHBfOmUsbExjOmMsdUxjOmIsSGFjOmF9fWI9dGhpc1tfLktxXT1PYmplY3QuYXNzaWduKHt9LGEpO3RoaXMuYWRiPWM9Yi5wXztiLlM0YT13eGEoYik7ZD1fLm9XYVtgb18ke2N9YF07aWYoZD09bnVsbD8wOmQuZ2VhKWQ9Yi5nZWE9ZC5nZWEsXy5vV2FbYHVfJHtkfWBdPWI7Xy5vV2FbYG9fJHtjfWBdPWJ9Z2V0TmFtZSgpe3JldHVybiB0aGlzW18uS3FdLnBffXRvU3RyaW5nKCl7cmV0dXJuIHRoaXNbXy5LcV0ucF99b29hKCl7cmV0dXJuIHRoaXNbXy5LcV0udUxjfWlyYigpe3JldHVybiB0aGlzW18uS3FdLmxMY31nZXREZWZhdWx0T3B0aW9ucygpe3ZhciBhLApiO3JldHVybihiPShhPXRoaXNbXy5LcV0uUzRhKT09bnVsbD92b2lkIDA6YS5zbGljZSgpKSE9bnVsbD9iOltdfWdldEluc3RhbmNlKGEpe3JldHVybiBuZXcgXy5sV2EodGhpcyxhLHZvaWQgMCx0aGlzW18uS3FdLlM0YSl9UHMoYSxiLGM9e30pe3JldHVybiBuZXcgXy5tV2EodGhpcyxhLGIsYyl9Z0dhKCl7dmFyIGE7cmV0dXJuKGE9dGhpc1tfLktxXS5leHRlbnNpb25JZCkhPW51bGw/YTpudWxsfW1hdGNoZXMoYSl7dmFyIGI7aWYodGhpcy5hZGIudG9TdHJpbmcoKT09PSgoYj1hLmFkYik9PW51bGw/dm9pZCAwOmIudG9TdHJpbmcoKSkpcmV0dXJuITA7aWYoYT09bnVsbHx8IWFbXy5LcV0pcmV0dXJuITE7dmFyIHtwXzpjLGV4dGVuc2lvbklkOmR9PXRoaXNbXy5LcV0se3BfOmUsZXh0ZW5zaW9uSWQ6Zn09YVtfLktxXTtyZXR1cm4gYz09PWV8fCEoIWR8fFN0cmluZyhkKSE9PWUmJlN0cmluZyhmKSE9PWMmJmQhPT1mKX19O18ucWk9Y2xhc3MgZXh0ZW5kcyBfLmJhe2NvbnN0cnVjdG9yKGEpe3N1cGVyKGEuZ2V0TWVzc2FnZSgpKTt0aGlzLnN0YXR1cz1hfX07Xy5xaS5wcm90b3R5cGUubmFtZT0iUnBjRXJyb3IiO3ZhciBwV2E9W0R4YSxLeGEsRXhhXSxxV2E9ZnVuY3Rpb24oYSxiLGMpe18uTGEocFdhLGZ1bmN0aW9uKGQpe2E9ZChiLGEsYyl9KTtyZXR1cm4gYX07dmFyIHRXYT1mdW5jdGlvbihhLGIpe2lmKF8uU2MoYikubGVuZ3RoPT09MClyZXR1cm4gbnVsbDt2YXIgYz0hMSxkPSExO18uUGMoYixlPT57cldhKGUpJiYoYz0hMCk7c1dhKGUpJiYoZD0hMCl9KTtpZihjfHxkKXtsZXQgZT17fTtjJiYoZS5leHBlcmltZW50PV8uQXhhKTtkJiYoZS5jbGllbnRFeHBlcmltZW50PV8uekVhKTtyZXR1cm4gXy5DaChhLHtzZXJ2aWNlOmV9KS50aGVuKGY9Pnt2YXIgZz1mLnNlcnZpY2UuZXhwZXJpbWVudCxoPWYuc2VydmljZS5jbGllbnRFeHBlcmltZW50O3JldHVybiBfLm1qYShiLGs9Pnt2YXIgbT1yV2Eoayksbj0oaz1zV2EoaykpJiZrLmxlbmd0aD4wO2lmKCEobSYmbS5sZW5ndGg+MHx8bikpcmV0dXJuITA7bj0hMTttJiZtLmxlbmd0aD4wJiZnJiYobj1fLllpKG0scD0+Xy5uaShnLmdldChwKSwhMSkpKTttPSExO2smJmsubGVuZ3RoPjAmJmgmJihtPV8uWWkoayxwPT5oLmthKHApKSk7cmV0dXJuIG58fG19KX0pfXJldHVybiBifSxyV2E9ZnVuY3Rpb24oYSl7dmFyIGI9CmEubmhhO18ueXhhKGEpJiYoYj1hLm1ldGFkYXRhP2EubWV0YWRhdGEubmhhOnZvaWQgMCk7cmV0dXJuIGJ9LHNXYT1mdW5jdGlvbihhKXt2YXIgYj1hLmtFYTtfLnl4YShhKSYmKGI9YS5tZXRhZGF0YT9hLm1ldGFkYXRhLmtFYTp2b2lkIDApO3JldHVybiBifTt2YXIgU3hhPWZ1bmN0aW9uKGEsYil7Xy5uZihfLmVXYSk7Xy5lV2EuZUYoKS5wdXNoKGEpO3JldHVybihjLGQpPT57Xy5QYyhkLChnLGgpPT57dHlwZW9mIGcubWFrZVJlcXVlc3Q9PT0iZnVuY3Rpb24iJiYoZz1fLldjKGcpLGRbaF09ZyxnLnJlcXVlc3Q9Zy5tYWtlUmVxdWVzdC5jYWxsKGMpKTtiJiYhZy5JaSYmKGcuSWk9Yil9KTt2YXIgZSxmPV8ubmcoXy5DaChjLHtzZXJ2aWNlOntXcGM6YX19KSxnPT57ZT1nLnNlcnZpY2UuV3BjO3JldHVybiB0V2EoYyxkKX0pLnRoZW4oZz0+Zz9lLmV4ZWN1dGUoZyk6Xy5EZyh7fSkpO3JldHVybiBfLlFjKGQsKGcsaCk9Pnt2YXIgaz1mLnRoZW4obT0+bVtoXT9tW2hdOm51bGwpO3JldHVybiBxV2EoayxnLGMpfSl9fTtfLnJpPV8uZnZhKCk7dmFyIHVXYSx4V2E7dVdhPXttYXRjaGVzOihhLGIsYyxkLGUpPT57aWYoYT1iPT09YylkPT1lP2E9ITA6dHlwZW9mIGQhPT0ic3RyaW5nInx8dHlwZW9mIGUhPT0ic3RyaW5nIj9hPSExOihhPWQubGVuZ3RoLGI9ZS5sZW5ndGgsYT1hPT09Yj8hMTphPmI/ZC5zbGljZSgwLGIpPT09ZTplLnNsaWNlKDAsYSk9PT1kKTtyZXR1cm4gYX19O18udldhPUV2YSh1V2EpO18ud1dhPWZ1bmN0aW9uKGEpe3JldHVybiBEdmEoKGIsYyxkKT0+e3ZhciBlPXtuZXh0U2libGluZzpifTtGaD1lO2MoZCk7Xy5FaCYmcHZhKGIubmV4dFNpYmxpbmcpO3JldHVybiBlPT09Rmg/bnVsbDpGaH0sYSl9KHVXYSk7KGZ1bmN0aW9uKGE9e30pe3ZhciB7bWF0Y2hlczpiPW12YX09YTtyZXR1cm4oYyxkLGUsZik9Pnt2YXIgZz1xdmE7cXZhPWQ7dmFyIGg9Q3ZhKGMsYiwoKT0+e0ZoPWM7ZShmKTtwdmEoZCk7cmV0dXJuIGN9KTtxdmE9ZztyZXR1cm4gaH19KSh1V2EpOwp4V2E9ZnVuY3Rpb24oYSxiKXthPWEua2FbYS5rYS5sZW5ndGgtMV18fCIiO3JldHVybiBiPT09dm9pZCAwP2E6Xy5mcShiKSthfTsKXy56V2E9Y2xhc3N7Y29uc3RydWN0b3IoKXt0aGlzLmthPVtdfW9wZW4oYSxiKXt0aGlzLm9hKGEsYil9b2EoYSxiKXthPV8udnZhKGEseFdhKHRoaXMsYikpO3RoaXMuRTcoYSk7cmV0dXJuIGF9VGEoYSxiKXthPV8udnZhKGEsYik7dGhpcy5FNyhhKX1KbihhLGIpe2E9dGhpcy5acSgpOyFhfHxhLl9faGFzQmVlblJlbmRlcmVkfHxhLmhhc0NoaWxkTm9kZXMoKT8odGhpcy5za2lwKCksdGhpcy5jbG9zZSgpKTooYS5fX2hhc0JlZW5SZW5kZXJlZD0hMCxiKHRoaXMpKX1FNygpe31OZihhKXt0aGlzLmthLnB1c2goXy5mcShhKSl9VGYoKXt0aGlzLmthLnBvcCgpfUNhKGEpe3RoaXMua2FbdGhpcy5rYS5sZW5ndGgtMV09eFdhKHRoaXMsYSl9RmEoKXt2YXIgYT10aGlzLmthW3RoaXMua2EubGVuZ3RoLTFdfHwiIjtpZihhKXt2YXIgYj1hLm1hdGNoKC9bMC05XSsvKVswXTt0aGlzLmthW3RoaXMua2EubGVuZ3RoLTFdPWEuc3Vic3RyaW5nKGIubGVuZ3RoKzErTnVtYmVyKGIpKX19Y2xvc2UoKXtfLnd2YSgpfWtiKCl7dmFyIGE9Cl8ud3ZhKCk7YSYmYS5fX3NveV9wYXRjaF9oYW5kbGVyJiZhLl9fc295X3BhdGNoX2hhbmRsZXIoKX10ZXh0KGEpe2EmJll2YShhKX1wcmludChhLGIpe2lmKGEgaW5zdGFuY2VvZiBfLkFVYXx8Ynx8YSBpbnN0YW5jZW9mIF8ucGMpe3ZhciBjPWEgaW5zdGFuY2VvZiBfLnBjP18ucWMoYSkudG9TdHJpbmcoKTpTdHJpbmcoYSk7aWYoLyZ8PC8udGVzdChjKSl7Yj1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJodG1sLWJsb2IiKTtfLm54YShiLCgwLF8uJHApKGMpKTtiPUFycmF5LmZyb20oYi5jaGlsZE5vZGVzKTtmb3IobGV0IGQgb2YgYiliPXRoaXMud2EoKSxjPXRoaXMuWnEoKSxkLl9fb3JpZ2luYWxDb250ZW50PWEsYyYmKGI/Yi5fX29yaWdpbmFsQ29udGVudCE9PWEmJmMuaW5zZXJ0QmVmb3JlKGQsYik6Yy5hcHBlbmRDaGlsZChkKSksdGhpcy5JRigpfWVsc2UgdGhpcy50ZXh0KGMpfWVsc2UgYSE9PXZvaWQgMCYmKGEmJmEuZHBhP2EuaW52b2tlKHRoaXMpOnRoaXMudGV4dChTdHJpbmcoYSkpKX1hdHRyKGEsCmIpe3ZhciBjPXh2YTtjLnB1c2goYSk7Yy5wdXNoKGIpfXdhKCl7cmV0dXJuIG52YSgpfXNraXAoKXtGaD1fLkVoLmxhc3RDaGlsZH1acSgpe3JldHVybiBfLkVofUlGKCl7Rmg9bnZhKCl9RGEoKXtfLlZ2YShfLnJpKTt2YXIgYT10aGlzLkFhO2lmKGEpe2xldCBiPXRoaXMuWnEoKTtzd2EoYSxiLGIuX19oYXNCZWVuUmVuZGVyZWQpO2IuX19oYXNCZWVuUmVuZGVyZWQ9ITA7dGhpcy5BYT12b2lkIDB9fUhhKGEpe1h2YShhLF8ucmkpfXRiKGEsYil7dmFyIGM9dGhpcy54YztpZihjKXRoaXMuQWE9Yy5lbnRlcihuZXcgbHdhKGEuQm0oKS5nZXRJZCgpLGEuZ2V0RGF0YSgpLCEhYixhLkJtKCkuZ2V0TWV0YWRhdGEoKSxhLkJtKCkuZ2V0TmFtZSgpKSk7ZWxzZSBpZihiKXRocm93IEVycm9yKCIkYyIpO3JldHVybiBiP25ldyBfLnlXYSh0aGlzKTp0aGlzfXViKCl7dmFyIGE7KGE9dGhpcy54Yyk9PW51bGx8fGEuZXhpdCgpO3RoaXMuQWE9dm9pZCAwO3JldHVybiB0aGlzfVJfKGEpe3RoaXMueGM9CmF9R3koKXtyZXR1cm4gdGhpcy54Y31OSChhLGIsYyl7cmV0dXJuIHRoaXMueGM/dGhpcy54Yy5OSChhLGIpOmN9eWIoYSxiLGMsZCl7Yj10aGlzLnhjP3RoaXMueGMuTkgoYixjKTpkO3RoaXMuYXR0cihhLGIpfUFmKGEsYixjLGQsZSxmKXt2YXIgZz1iKyh0aGlzLmthW3RoaXMua2EubGVuZ3RoLTFdfHwiIiksaD1uZXcgYTtoLmRhdGE9ZDtoLmthPWU7aC5rZXk9ZztoLnRlbXBsYXRlPWYuYmluZChoKTtoLlJfKHRoaXMuR3koKSk7dmFyIGs9KGU9ZSYmZS5pblRlbXBsYXRlQ2xvbmluZyk/bnVsbDp0aGlzLm9hKGMsYiksbT10aGlzLm9hO3RoaXMub2E9KG4scCk9PntpZihrKXtpZihwIT09Yil0aHJvdyBFcnJvcigiQ2RgIitwKyJgIitiKTt9ZWxzZSBrPW0uY2FsbCh0aGlzLG4scCksaC5ub2RlPWssay5fX3NveT1oO3RoaXMub2E9bTtyZXR1cm4ga307ZT8oaC5vYShkKSxoLlNhKHRoaXMsZCkpOms/KGM9ay5fX3NveSxjIGluc3RhbmNlb2YgYSYmKGg9YyksYT1oLlFiKGssZCksaC50ZW1wbGF0ZT0KZi5iaW5kKGgpLGE/KHRoaXMuc2tpcCgpLHRoaXMuY2xvc2UoKSx0aGlzLm9hPW0pOmguU2EodGhpcyxkKSk6Zi5jYWxsKGgsdGhpcyxkKX19O18ueVdhPWNsYXNzIGV4dGVuZHMgXy56V2F7Y29uc3RydWN0b3IoYSl7c3VwZXIoKTt0aGlzLnJlbmRlcmVyPWE7dGhpcy5kZXB0aD0xO3RoaXMuUl8oYS5HeSgpKX1vcGVuKCl7fVRhKCl7fUpuKCl7fWNsb3NlKCl7fWtiKCl7fXRleHQoKXt9YXR0cigpe313YSgpe3JldHVybiBudWxsfURhKCl7fUhhKCl7fXNraXAoKXt9a2V5KCl7fVpxKCl7fUlGKCl7fXRiKGEsYil7c3VwZXIudGIoYSxiKTt0aGlzLmRlcHRoKys7cmV0dXJuIHRoaXN9dWIoKXtzdXBlci51YigpO3RoaXMuZGVwdGgtLTtyZXR1cm4gdGhpcy5kZXB0aD09PTA/dGhpcy5yZW5kZXJlcjp0aGlzfX07dmFyIEFXYT1fLkZuKCgpPT5uZXcgXy5IdWEodm9pZCAwLHZvaWQgMCx2b2lkIDAsbmV3IF8uZFZhKSk7Xy5McT1mdW5jdGlvbigpe18uQm4od2luZG93LCJhdHRuX2RvbV91cGRhdGUiLG51bGwpfTt3aW5kb3cuZ29vZ2xlPXdpbmRvdy5nb29nbGV8fHt9O3dpbmRvdy5nb29nbGUuZG9tY2hhbmdlPV8uTHE7d2luZG93Lmdvb2dsZS5hdHRuU2lnbmFsPWZ1bmN0aW9uKGEsYil7Xy5Cbih3aW5kb3csYSxiKX07dmFyIGN6YT1jbGFzcyBleHRlbmRzIFZRYXtQYShhKXtyZXR1cm4gYS5maWx0ZXIoYj0+IV8uaHRhKGIpKX1PYSgpe18uZnRhKCl9fTt2YXIgWHhhPV8ubGYoKSxqdGE9Xy5McTtfLkxpKCJnb29nbGUuZHJ0eSIsXy55aSk7Xy5MaSgiZ29vZ2xlLmRydHlTdWJ0cmVlIixfLll4YSk7Xy5CV2E9Xy5rYygibTlvViIsW10pO18uT2MoXy5CV2EpO18uUmYoXy5CV2EsYT0+e2Euc2V0RW5hYmxlZCghMCl9KTtfLk1xPWNsYXNze2NvbnN0cnVjdG9yKCl7dGhpcy5wcm9taXNlPW5ldyBQcm9taXNlKChhLGIpPT57dGhpcy5yZXNvbHZlPWE7dGhpcy5yZWplY3Q9Yn0pfX07dmFyIENXYT1uZXcgTWFwO25ldyBfLk1xO1hPYT1mdW5jdGlvbihhKXtmb3IobGV0IGIgb2YgYSkoYT1DV2EuZ2V0KGIpKSYmYS5yZXNvbHZlKCl9O2dvb2dsZS5tdW09ZnVuY3Rpb24oYSl7aWYoeEdhJiZ3a2EoYSkpe3ZhciBiPXdkLmdldEluc3RhbmNlKCksYz1fLnFGYShfLlNlKGEpKS5maWx0ZXIoZD0+Q1dhLmhhcyhkKSk7aWYoYyl7YT1bXTtmb3IobGV0IGQgb2YgYylpZigoYz1EV2EuckVjKGQpKSYmYy5zaXplPjApZm9yKGxldCBlIG9mIGMpYS5wdXNoKGNwYShiLGUpKTtlbHNlKGM9Q1dhLmdldChkKSkmJl8uTXRhKGQpJiZjLnJlc29sdmUoKTtiPWtvYShhKS5zZXJ2aWNlcztmb3IobGV0IGQgb2YgYil7Yj1kLmthO2lmKCFiKWNvbnRpbnVlOyhiPUNXYS5nZXQoYikpJiZheWEoZCkmJmIucmVzb2x2ZSgpfX19fTt2YXIgRFdhPXtyRWM6ZnVuY3Rpb24oYSl7cmV0dXJuIFBoYS5nZXQoYSl9fTt2YXIgRVdhPVtdLEZXYT1bXSxHV2E9ITEsSFdhPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gYShrKXtrLkxUY3x8KGsuTFRjPSEwLGsuZGVwZW5kcyYmay5kZXBlbmRzLmZvckVhY2goYSksaC5wdXNoKGspKX12YXIgYj17fSxjLGQ7Zm9yKGM9RVdhLmxlbmd0aC0xO2M+PTA7LS1jKXt2YXIgZT1FV2FbY107aWYoZS5tYW5pZmVzdC5zZXJ2aWNlcyl7dmFyIGY9ZS5tYW5pZmVzdC5zZXJ2aWNlcztmb3IoZD1mLmxlbmd0aC0xO2Q+PTA7LS1kKWJbZltkXS5pZF09ZX1pZihlLm1hbmlmZXN0LmlVYylmb3IoZj1lLm1hbmlmZXN0LmlVYyxkPWYubGVuZ3RoLTE7ZD49MDstLWQpYltmW2RdLmlkXT1lfWZvcihjPUVXYS5sZW5ndGgtMTtjPj0wOy0tYyl7ZT1FV2FbY107Zj1lLm1hbmlmZXN0O2lmKGYucmVxdWlyZXMpZm9yKGUuZGVwZW5kcz1uZXcgU2V0LGQ9Zi5yZXF1aXJlcy5sZW5ndGgtMTtkPj0wOy0tZCl7dmFyIGc9YltmLnJlcXVpcmVzW2RdXTtnJiZlLmRlcGVuZHMuYWRkKGcpfWlmKGYuV2NjKWZvcihlLmRlcGVuZHN8fAooZS5kZXBlbmRzPW5ldyBTZXQpLGQ9Zi5XY2MubGVuZ3RoLTE7ZD49MDstLWQpKGc9YltmLldjY1tkXV0pJiZlLmRlcGVuZHMuYWRkKGcpfXZhciBoPVtdO18uTGEoRVdhLGEpO0VXYT1ofSxKV2E9ZnVuY3Rpb24oYSl7aWYoIUdXYSl7SFdhKCk7bGV0IGM7Zm9yKGM9MDtjPEVXYS5sZW5ndGg7KytjKXt2YXIgYj1FV2FbY10ubWFuaWZlc3Q7Yi5zZXJ2aWNlcyYmSVdhKGEsYi5zZXJ2aWNlcyk7Yi5jb25maWd1cmUmJmIuY29uZmlndXJlKGEpfWZvcihjPTA7YzxFV2EubGVuZ3RoOysrYyliPUVXYVtjXSxiLm1hbmlmZXN0LmluaXRpYWxpemUmJmIubWFuaWZlc3QuaW5pdGlhbGl6ZShhKTtmb3IoYz0wO2M8RldhLmxlbmd0aDsrK2MpRldhW2NdKGEpO0dXYT0hMH19LElXYT1mdW5jdGlvbihhLGIpe2ZvcihsZXQgYz0wO2M8Yi5sZW5ndGg7KytjKXtsZXQgZD1iW2NdO2lmKCFZVWEoYSxkLmlkKSYmIWQuVkNkKWlmKGQubW9kdWxlKSRVYShhLGQuaWQsZC5tb2R1bGUpO2Vsc2UgaWYoZC5tdWx0aXBsZSl7bGV0IGU9CiguLi5mKT0+bmV3IGQuY3RvciguLi5mKTthVmEoYSxkLmlkLGQuY2FsbGJhY2t8fGUpfWVsc2UgYS5yZWdpc3RlclNlcnZpY2UoZC5pZCxkLmNhbGxiYWNrP2QuY2FsbGJhY2soYSk6bmV3IGQuY3RvcihhKSl9fTtfLktXYT1uZXcgXy5pYygiZ3ljaGciLCJneWNoZyIsW18uU29dKTtfLkxXYT1uZXcgXy5pYygiVWxtbXJkIiwiVWxtbXJkIixbXy5LV2FdKTtmYygiSk5veGkiLCJVZ0F0WGUiKTtfLk1XYT1uZXcgXy5pYygieFVkaXBmIiwieFVkaXBmIik7Xy5OV2E9bmV3IF8uaWMoIk53SDBIIiwiTndIMEgiLFtfLk1XYV0pO2ZjKCJ3OWhEdiIsIlVnQXRYZSIpO18uT1dhPV8ua2MoInc5aER2IixbXy5OV2FdKTtfLlBXYT1fLmtjKCJKTm94aSIsW18uTFdhLF8uT1dhXSk7ZmMoIlp3RGs5ZCIsInhpcUVzZSIpO18uUVdhPV8ua2MoIlp3RGs5ZCIpO3ZhciBSV2E9eGQoInhpcUVzZSIsIlNOVW4zIiwiRUxwZEplIik7Xy5jeWE9Xy5rYygiUk1oQmZlIixbUldhXSk7U3hhKF8uUFdhKTt2YXIgU1dhPWZ1bmN0aW9uKGEpe2Eua2EubGVuZ3RoPT09MCYmKGEua2E9YS5vYSxhLmthLnJldmVyc2UoKSxhLm9hPVtdKX07Xy5meWEucHJvdG90eXBlLmVucXVldWU9ZnVuY3Rpb24oYSl7dGhpcy5vYS5wdXNoKGEpfTtfLlRXYT1mdW5jdGlvbihhKXtTV2EoYSk7cmV0dXJuIGEua2EucG9wKCl9O18uVVdhPWZ1bmN0aW9uKGEpe1NXYShhKTtyZXR1cm4gXy52YShhLmthKX07Xy5hYT1fLmZ5YS5wcm90b3R5cGU7Xy5hYS56aT1mdW5jdGlvbigpe3JldHVybiB0aGlzLmthLmxlbmd0aCt0aGlzLm9hLmxlbmd0aH07Xy5hYS5pc0VtcHR5PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMua2EubGVuZ3RoPT09MCYmdGhpcy5vYS5sZW5ndGg9PT0wfTtfLmFhLmNsZWFyPWZ1bmN0aW9uKCl7dGhpcy5rYT1bXTt0aGlzLm9hPVtdfTtfLmFhLmNvbnRhaW5zPWZ1bmN0aW9uKGEpe3JldHVybiBfLkFhKHRoaXMua2EsYSl8fF8uQWEodGhpcy5vYSxhKX07Cl8uYWEucmVtb3ZlPWZ1bmN0aW9uKGEpe3t2YXIgYj10aGlzLmthO2xldCBjPUFycmF5LnByb3RvdHlwZS5sYXN0SW5kZXhPZi5jYWxsKGIsYSxiLmxlbmd0aC0xKTtjPj0wPyhfLkNhKGIsYyksYj0hMCk6Yj0hMX1yZXR1cm4gYnx8Xy5EYSh0aGlzLm9hLGEpfTtfLmFhLnl6PWZ1bmN0aW9uKCl7dmFyIGE9W107Zm9yKHZhciBiPXRoaXMua2EubGVuZ3RoLTE7Yj49MDstLWIpYS5wdXNoKHRoaXMua2FbYl0pO2I9dGhpcy5vYS5sZW5ndGg7Zm9yKGxldCBjPTA7YzxiOysrYylhLnB1c2godGhpcy5vYVtjXSk7cmV0dXJuIGF9O3ZhciBYV2EsJFdhLGFYYTtfLlZXYT17fTtfLk5xPWZ1bmN0aW9uKGEsYixjKXtiIGluc3RhbmNlb2YgXy5DaSYmKGI9Yi55bik7Yj1fLmR5YShiKTthIGluc3RhbmNlb2YgXy5DaSYmKGE9YS55bik7dmFyIGQ9Xy5keWEoYSk7Xy5WV2FbZF18fChfLlZXYVtkXT17fSk7Xy5WV2FbZF1bYl18fChfLlZXYVtkXVtiXT1bXSk7Xy5WV2FbZF1bYl0ucHVzaCh7Y3RvcjphLHVLOmN9KX07WFdhPWZ1bmN0aW9uKGEsYil7YT1fLldXYShhLGIpO3JldHVybiBhLmxlbmd0aD09MD9udWxsOmFbMF0uY3Rvcn07Xy5aV2E9ZnVuY3Rpb24oYSxiLGMpe2lmKGEuWGEpe2M9Y3x8Yi5zcGxpdCgiOyIpWzBdO3ZhciBkPWEuWGE7aWYoYz09ZCl7aWYoXy5icChhKS5VOD09YilyZXR1cm4gYX1lbHNlIGlmKGQ9Xy5XV2EoZCxjKSxkLmxlbmd0aCE9MClyZXR1cm4gXy5ZV2EoYSxkLGMsdm9pZCAwKS5tYXBbYl19fTsKXy5XV2E9ZnVuY3Rpb24oYSxiKXt2YXIgYz1fLlZXYVthXTtpZighYylyZXR1cm5bXTt2YXIgZD1jW2JdO2lmKGQpcmV0dXJuIGQ7Y1tiXT1bXTtkPU9iamVjdC5rZXlzKGMpO3ZhciBlPWQuaW5kZXhPZihhKTtlPj0wJiYoZFtlXT1kW2QubGVuZ3RoLTFdLGRbZC5sZW5ndGgtMV09YSk7Zm9yKGxldCBmIG9mIGQpZD1jW2ZdLF8uTGEoZCxmdW5jdGlvbihnKXt2YXIgaD1fLldXYShmLGIpO18uTGEoaCxmdW5jdGlvbihrKXtjW2JdLnB1c2goe3VLOmZ1bmN0aW9uKG0pe3ZhciBuPVtdO209Zy51SyhtKTtmb3IobGV0IHA9MDtwPG0ubGVuZ3RoO3ArKyluLnB1c2guYXBwbHkobixrLnVLKG1bcF0pKTtyZXR1cm4gbn0sY3RvcjpnLmN0b3J9KX0pfSk7cmV0dXJuIGNbYl19OwpfLllXYT1mdW5jdGlvbihhLGIsYyxkKXthLks0YXx8KGEuSzRhPXt9KTt2YXIgZT1hLks0YVtjXTtpZihlJiYhZClyZXR1cm4gZTtlPWEuSzRhW2NdPXtzZXQ6bmV3IFNldCxtYXA6e319O18uTGEoYixmdW5jdGlvbihmKXtmPWYudUsoYSk7Zm9yKGxldCBnIG9mIGYpZS5zZXQuYWRkKGcpfSk7aWYoXy5ab1tjXSlmb3IobGV0IGYgb2YgZS5zZXQpZS5tYXBbXy5icChmKS5VOF09ZjtyZXR1cm4gZX07JFdhPWZ1bmN0aW9uKCl7cmV0dXJuIE9iamVjdC52YWx1ZXMoXy5WV2EpLnJlZHVjZSgoYSxiKT0+YStPYmplY3Qua2V5cyhiKS5sZW5ndGgsMCl9O2FYYT1mdW5jdGlvbigpe3JldHVybiBPYmplY3QuZW50cmllcyhfLlZXYSkucmVkdWNlKChhLFtiLGNdKT0+e2ZvcihsZXQgZCBpbiBjKWErPWAke18uaG9hKGIpfSAtPiAke18uaG9hKGQpfVxuYDtyZXR1cm4gYX0sIiIpfTtfLm5mKFJXYSk7dmFyIGJYYT1uZXcgXy5UZihSV2EpO18uY1hhPXt9O18uZFhhPW5ldyBfLkhxKCJleGNsdWRlRnJvbUJhdGNoaW5nIik7Xy5PcT1uZXcgXy5IcSgic2tpcENhY2hlIiwhMCk7Xy5lWGE9bmV3IF8uSHEoIm1heFJldHJpZXMiLDMpO18uZlhhPW5ldyBfLkhxKCJzZXF1ZW5jZUdyb3VwIik7Xy5nWGE9bmV3IF8uSHEoImdlbmVyaWNIdHRwSGVhZGVyIik7Xy5oWGE9bmV3IF8uSHEoInVybFBhcmFtcyIpO18uaVhhPW5ldyBfLkhxKCJza2lwTm90aWZ5IiwhMCk7dmFyIGpYYSxrWGEsbFhhLG1YYTsKalhhPWZ1bmN0aW9uKGEsYixjLGQsZSxmLGcsaCl7Zm9yKHZhciBrPWI7YiYmYi5nZXRBdHRyaWJ1dGU7KXtpZihyU2EoYikpcmV0dXJuIHFTYShiKS50aGVuKCgpPT5qWGEoYSxiLGMsZCxlLGYsZyxoKSk7dmFyIG09Xy5tU2EoYiksbj1fLmR5YShjKTtpZihnKXt2YXIgcD1fLnphKG0sZyk7cCE9LTEmJihtPW0uc2xpY2UoMCxwKSl9cD1tLnBvcCgpO2lmKGQ9PTApZm9yKDtwOyl7Zj1wO2U9Xy5reWEocCk7aWYobj09ZS5YYSlicmVhaztwPW0ucG9wKCk7aWYoIXApcmV0dXJuIG09Xy5tU2EoYikubWFwKHI9Pl8ua3lhKHIpLlhhKS5qb2luKCIsICIpLF8uSGgoRXJyb3IoIkpkYCIrbisiYCIrbSsiYCIra1hhKGgsaykpKX1pZihuPWEua2Eub2EoYixjLGYpKXJldHVybiBuO249YjtiPV8uTGcoYik7aWYoIXApY29udGludWU7aWYobT1sWGEoYSxwLG0sbixiLGMsZCxlLGYsaCkpcmV0dXJuIG19cmV0dXJuIF8uSGgoRXJyb3IoIktkYCIrZisiYCIrKGUmJmUuWGEpKyJgIitrWGEoaCxrKSsKImAiKyRXYSgpKyJgIithWGEoKSkpfTtrWGE9ZnVuY3Rpb24oYSxiKXtyZXR1cm4oYiYmYi5nZXRBdHRyaWJ1dGU/Yi5nZXRBdHRyaWJ1dGUoImpzY29udHJvbGxlciIpOnZvaWQgMCl8fF8ucWYoYSl9OwpsWGE9ZnVuY3Rpb24oYSxiLGMsZCxlLGYsZyxoLGssbSl7aWYoZysrPT0wKXtpZihoLmluc3RhbmNlSWQpcmV0dXJuIGEua2EucDdhKGguaW5zdGFuY2VJZCkudGhlbihuPT5uP18uanlhKG4sZik6Yy5sZW5ndGg+MD9sWGEoYSxjLnBvcCgpLGMsZCxlLGYsZyxoLGssbSk6alhhKGEsZSxmLGcsaCxrLHZvaWQgMCxtKSl9ZWxzZSBpZihiPV8ua3lhKGIpLGIuaW5zdGFuY2VJZCYmaC5pbnN0YW5jZUlkIT1iLmluc3RhbmNlSWQpe2xldCBuPVhXYShiLlhhLGguWGEpO258fGguWGEhPWIuWGF8fGguaWQhPWIuaWR8fChuPWYpO2lmKG4pcmV0dXJuIG1YYShhLGQsayxoLG4sbSkudGhlbihmdW5jdGlvbihwKXtyZXR1cm4gcD9wOmMubGVuZ3RoPjA/bFhhKHRoaXMsYy5wb3AoKSxjLGQsZSxmLGcsaCxrLG0pOmpYYSh0aGlzLGUsZixnLGgsayx2b2lkIDAsbSl9LG51bGwsYSl9cmV0dXJuIGMubGVuZ3RoPjA/bFhhKGEsYy5wb3AoKSxjLGQsZSxmLGcsaCxrLG0pOmpYYShhLGUsZixnLGgsaywKdm9pZCAwLG0pfTttWGE9ZnVuY3Rpb24oYSxiLGMsZCxlLGYpe3JldHVybiBqWGEoYSxiLGUsMCx2b2lkIDAsdm9pZCAwLGMsZikudGhlbihnPT5fLlpXYShnLGQubWVzc2FnZUtleSxkLlhhKSl9O18ub1hhPWNsYXNzIGV4dGVuZHMgXy5zb3tzdGF0aWMgUWEoKXtyZXR1cm57c2VydmljZTp7azlhOmJYYX19fWNvbnN0cnVjdG9yKGEpe3N1cGVyKCk7dGhpcy5rYT1hLnNlcnZpY2UuazlhO3RoaXMuV2k9bnVsbH1yZXNvbHZlKGEsYixjLGQ9ITEsZSl7YT1qWGEodGhpcyxhLGIsMCx2b2lkIDAsdm9pZCAwLHZvaWQgMCxlKTtyZXR1cm4gYyE9PXZvaWQgMD9hLnRoZW4oZj0+Xy5uWGE/Zi5UYygpOmYuTXUoKSk6YS50aGVuKGY9PmQ/Zi5UYygpOmYuY2xvbmUoKSl9fTtfLm5YYT0hMTtfLmFnKF8uY3lhLF8ub1hhKTtmYygieEQ4S3AiLCJFTHBkSmUiKTt2YXIgcFhhPV8ua2MoInhEOEtwIixbXSk7Xy5xWGE9bmV3IE1hcDtfLnJYYT1uZXcgU2V0O3ZhciBzWGE9ZnVuY3Rpb24oYSl7dmFyIGI9YS5rYTtfLmVhLldfamQ9bmV3IF8uZWEuUHJveHkoXy5lYS5XX2pkfHx7fSx7c2V0KGMsZCxlKXtjW2RdPWU7aWYoYz1iLmdldChkKSljLnJlc29sdmUoZSksYi5kZWxldGUoZCk7cmV0dXJuITB9fSl9OwpfLmFnKHBYYSxjbGFzcyBleHRlbmRzIF8uc297Y29uc3RydWN0b3IoKXtzdXBlcigpO3RoaXMua2E9bmV3IE1hcDtzWGEodGhpcyl9cDdhKGEpe3ZhciBiPV8uZWEuV19qZFthXTtpZihiKXJldHVybiBfLkRnKGIpO2lmKGI9dGhpcy5rYS5nZXQoYSkpcmV0dXJuIGIucHJvbWlzZTtiPV8ubGYoKTt2YXIgYz0hMTtiLnByb21pc2UudGhlbigoKT0+e2M9ITB9KTt2YXIgZD10aGlzLmthOygwLF8uam8pKCgpPT57aWYoIWMpe2xldCBlPUFycmF5LmZyb20oZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgiW2pzZGF0YV0iKSkuZmlsdGVyKGc9PihnPWcuZ2V0QXR0cmlidXRlKCJqc2RhdGEiKSkmJmcuaW5jbHVkZXMoYSkpLm1hcChnPT5nLmdldEF0dHJpYnV0ZSgianNjb250cm9sbGVyIikpLmpvaW4oIi4iKSxmPV8uZWEuV19qZFthXTtpZihmKXRocm93IGQuZ2V0KGEpLnJlc29sdmUoZiksZC5kZWxldGUoYSksbmV3IF8udGcoYEdfSURTX3dpdGhfZGF0YV8ke2F9XyR7ZX1gKTt0aHJvdyBuZXcgXy50ZyhgR19JRFNfbm9fZGF0YV8ke2F9XyR7ZX1gKTsKfX0sMkU0KTt0aGlzLmthLnNldChhLGIpO3JldHVybiBiLnByb21pc2V9b2EoYSxiLGMpe2lmKF8ucVhhLmhhcyhjKSYmYS5oYXNBdHRyaWJ1dGUoImpzZGF0YSIpKXt2YXIgZD1hLmdldEF0dHJpYnV0ZSgianNkYXRhIik7aWYoXy5tYShkKS5zcGxpdCgvXHMrLykuaW5jbHVkZXMoYykpe2xldCBlPV8ucVhhLmdldChjKTtfLnFYYS5kZWxldGUoYyk7ZD1OT2EuZ2V0KGEpfHx7fTtiPWUgaW5zdGFuY2VvZiBfLmw/ZTpuZXcgYihlKTtkW2NdPWI7Tk9hLnNldChhLGQpfX1yZXR1cm4oKGI9Tk9hLmdldChhKSkmJmMgaW4gYj9fLkRnKGJbY10pOm51bGwpfHxfLndTYShhLGMpfX0pO3ZhciB0WGE9bmV3IE1hcCx1WGE9ZnVuY3Rpb24oYSxiKXt2YXIgYzsoYz1hLmthKT09bnVsbHx8Yy5BYShhLmRKLGIpfSx2WGE9ZnVuY3Rpb24oYSl7YS5kSi5CYSE9bnVsbCYmdFhhLmNsZWFyKCk7YS5kSi5kb25lKCJ3aXoiKX0sd1hhPWZ1bmN0aW9uKGEsYixjKXt2YXIgZDsoZD1hLmthKSE9bnVsbCYmZC5zaG91bGRMb2dUcmlnZ2VyRXZlbnRzKCkmJiF0WGEuaGFzKGIpJiZ0WGEuc2V0KGIsYyl9LHhYYT1mdW5jdGlvbihhKXt2YXIgYjtpZigoYj1hLmthKSE9bnVsbCYmYi5zaG91bGRMb2dUcmlnZ2VyRXZlbnRzKCkmJmEuZEomJihiPWEuZEouZXZlbnRUeXBlKCkpKXtsZXQgYz10WGEuZ2V0KGIpO2lmKGMpcmV0dXJuIGEuZEouQmE9YixjfX0sbHlhPWNsYXNze2NvbnN0cnVjdG9yKGEsYil7dGhpcy5kSj1hO3RoaXMua2E9Yn14U2EoKXtpZih0aGlzLmthKXJldHVybiB0aGlzLmthLnhTYSh0aGlzLmRKKX19O3ZhciBpemE9Y2xhc3N7Y29uc3RydWN0b3IoKXt0aGlzLnhjPWh6YX1sb2dEaXNwYXRjaEpzbGlua2VkKGEsYixjLGQsZSxmLGcsaCxrKXtPYmplY3QuYXNzaWduKGMse3hfOmgsSzlhOmt9KTthPW5ldyBYcWEoYSxiLGMsZCxlLGYsdm9pZCAwLCEwKTthLkFhPSEwO3RoaXMueGMuQWEoYSxnKX1nZXREZWxheURlZmVycmVkSnNsaW5rZWQoYSxiLGMsZCxlLGYsZyxoLGspe09iamVjdC5hc3NpZ24oYyx7eF86aCxLOWE6a30pO2E9bmV3IFhxYShhLGIsYyxkLGUsZix2b2lkIDAsITApO2EuQWE9ITA7cmV0dXJuKGE9dGhpcy54Yy54U2EoYSkpP2E6dm9pZCAwfXNob3VsZExvZ1RyaWdnZXJFdmVudHMoKXtyZXR1cm4gdGhpcy54Yy5zaG91bGRMb2dUcmlnZ2VyRXZlbnRzKCl9fTt2YXIgeVhhLGd6YT1mdW5jdGlvbigpe3lYYXx8KHlYYT1uZXcgelhhKTtyZXR1cm4geVhhfSx6WGE9Y2xhc3N7Y29uc3RydWN0b3IoKXt0aGlzLm9hPSgpPT57fTt0aGlzLmthPW51bGx9cmVnaXN0ZXJHdWVzdEludGVyZmFjZShhLGIpe3ZhciBjPV8uZ3RhLmdldChhKTtjfHwoZXRhKGEsITEpLGM9Xy5ndGEuZ2V0KGEpKTtmb3IobGV0IGQgb2YgYy5lcSliLmRpc3BhdGNoRXZlbnRJbmZvKGQpO2RlbGV0ZSBjLmVxO2MubT1ifWdldFNlcnZpY2VJbnN0YW5jZShhKXt2YXIgYj1fLnJoKF8ub3lhKGEpKSxjPWlwYShiLF8uaGMoKS5rYSksZD1uZXcgUHJvbWlzZSgoZSxmKT0+e2MuSXgoZSxmKX0pO2QuY2F0Y2goZT0+e3RoaXMub2EoYEVycm9yIGxvb2tpbmcgdXAgc2VydmljZSwga2V5PSR7YX0sIHJlc29sdmVkIHNlcnZpY2VJZD0ke2J9LCBlcnI9JHtlfWApfSk7cmV0dXJuIGR9Z2V0QWN0aW9uTG9nZ2VyKCl7aWYodGhpcy5rYSlyZXR1cm4gdGhpcy5rYTt0aHJvdyBFcnJvcigiTWQiKTsKfWRpc3BhdGNoQ3VzdG9tRXZlbnQoYSl7dGhpcy53YShhKTtpZihhLnR5cGUpe2xldCBiPWEudHlwZS50b1N0cmluZygpO2IuZW5kc1dpdGgoIl8iKSYmKGE9T2JqZWN0LmNyZWF0ZShPYmplY3QuZ2V0UHJvdG90eXBlT2YoYSksT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnMoYSkpLGEudHlwZT1fLmFoKGIuc2xpY2UoMCwtMSkpLHRoaXMud2EoYSkpfX19O3ZhciBBWGE9ZnVuY3Rpb24oYSxiKXthLm9hLnB1c2goYik7YS5rYXx8KGEua2E9ITAsUHJvbWlzZS5yZXNvbHZlKCkudGhlbigoKT0+e2Eua2E9ITE7YS56bmEoYS5vYSl9KSl9LERYYT1jbGFzc3tjb25zdHJ1Y3RvcihhLHt3RGE6Yix6bmE6Y309e30pe3RoaXMud2E9YTt0aGlzLmthPSExO3RoaXMub2E9W107dGhpcy53RGE9Yjt0aGlzLnpuYT1jfWRpc3BhdGNoKGEpe3ZhciBiPW5ldyBMUGEoYSksYzsoYz10aGlzLndEYSkhPW51bGwmJihjLnNsYiYmYS5ldmVudFR5cGU9PT0iY2xpY2siJiZfLlRyYShhLmV2ZW50KT9hLmV2ZW50VHlwZT0iY2xpY2ttb2QiOmMua2EmJmMuQWEoYSkpO2lmKChjPXRoaXMud0RhKSE9bnVsbCYmIWEuZWlyKXtmb3IodmFyIGQ9YS50YXJnZXRFbGVtZW50O2QmJmQhPT1hLmVpYzspe2lmKGQubm9kZVR5cGU9PT1Ob2RlLkVMRU1FTlRfTk9ERSl7dmFyIGU9YyxmPWQsZz1hLGg9ZixrPWguX19qc2FjdGlvbjtpZighayl7bGV0IG49aC5nZXRBdHRyaWJ1dGUoImpzYWN0aW9uIik7CmlmKG4pe2s9TXJhW25dO2lmKCFrKXtrPXt9O2xldCBwPW4uc3BsaXQoQlhhKTtmb3IobGV0IHI9MDtyPHAubGVuZ3RoO3IrKyl7dmFyIG09cFtyXTtpZighbSljb250aW51ZTtsZXQgeD1tLmluZGV4T2YoIjoiKSx6PXghPT0tMSxCPXo/bS5zdWJzdHIoMCx4KS50cmltKCk6ImNsaWNrIjttPXo/bS5zdWJzdHIoeCsxKS50cmltKCk6bTtrW0JdPW19TXJhW25dPWt9aC5fX2pzYWN0aW9uPWt9ZWxzZSBrPUNYYSxoLl9fanNhY3Rpb249a31oPWtbZy5ldmVudFR5cGVdO2ghPT12b2lkIDAmJihnLmVpYT1baCxmXSk7ZS5rYSYmZS5vYShmLGcsayl9aWYoYS5laWEpYnJlYWs7YTp7ZT12b2lkIDA7aWYoZj1kLl9fb3duZXIpe2Q9ZjticmVhayBhfWY9ZC5wYXJlbnROb2RlO2Q9KGY9PW51bGw/dm9pZCAwOmYubm9kZU5hbWUpPT09IiNkb2N1bWVudC1mcmFnbWVudCI/KGU9Zj09bnVsbD92b2lkIDA6Zi5ob3N0KSE9bnVsbD9lOm51bGw6Zn19aWYoZD1hLmVpYSlpZihjLmthJiZjLndhKGEpLApjLklFYiYmKGEuZXZlbnRUeXBlPT09Im1vdXNlZW50ZXIifHxhLmV2ZW50VHlwZT09PSJtb3VzZWxlYXZlInx8YS5ldmVudFR5cGU9PT0icG9pbnRlcmVudGVyInx8YS5ldmVudFR5cGU9PT0icG9pbnRlcmxlYXZlIikpaWYoYz1hLmV2ZW50LGU9YS5ldmVudFR5cGUsZj1kWzFdLGc9Yy5yZWxhdGVkVGFyZ2V0LCEoYy50eXBlPT09Im1vdXNlb3ZlciImJmU9PT0ibW91c2VlbnRlciJ8fGMudHlwZT09PSJtb3VzZW91dCImJmU9PT0ibW91c2VsZWF2ZSJ8fGMudHlwZT09PSJwb2ludGVyb3ZlciImJmU9PT0icG9pbnRlcmVudGVyInx8Yy50eXBlPT09InBvaW50ZXJvdXQiJiZlPT09InBvaW50ZXJsZWF2ZSIpfHxnJiYoZz09PWZ8fGYuY29udGFpbnMoZykpKWEuZWlhPXZvaWQgMDtlbHNle2M9YS5ldmVudDtlPWRbMV07Zj17fTtmb3IobGV0IG4gaW4gYyl7aWYobj09PSJzcmNFbGVtZW50Inx8bj09PSJ0YXJnZXQiKWNvbnRpbnVlO2c9bjtrPWNbZ107dHlwZW9mIGshPT0iZnVuY3Rpb24iJiYKKGZbZ109ayl9Zi50eXBlPWMudHlwZT09PSJtb3VzZW92ZXIiPyJtb3VzZWVudGVyIjpjLnR5cGU9PT0ibW91c2VvdXQiPyJtb3VzZWxlYXZlIjpjLnR5cGU9PT0icG9pbnRlcm92ZXIiPyJwb2ludGVyZW50ZXIiOiJwb2ludGVybGVhdmUiO2YudGFyZ2V0PWYuc3JjRWxlbWVudD1lO2YuYnViYmxlcz0hMTtmLl9vcmlnaW5hbEV2ZW50PWM7YS5ldmVudD1mO2EudGFyZ2V0RWxlbWVudD1kWzFdfWEuZWlyPSEwfShhPUlnKGIpKSYmYS5lbGVtZW50LnRhZ05hbWU9PT0iQSImJihiLmthLmV2ZW50VHlwZT09PSJjbGljayJ8fGIua2EuZXZlbnRUeXBlPT09ImNsaWNrbW9kIikmJlFyYShiLmdldEV2ZW50KCkpO3RoaXMuem5hJiZiLmthLmVpcnA/QVhhKHRoaXMsYik6dGhpcy53YShiKX19O3ZhciBFWGE9ZnVuY3Rpb24oYSxiKXthLnpuYT1ifSxGWGE9Y2xhc3N7Y29uc3RydWN0b3IoYSx7d0RhOmIsem5hOmMsc3RvcFByb3BhZ2F0aW9uOmQ9ITEsSWpiOmU9ITF9PXt9KXt0aGlzLm9hPWE7dGhpcy5hY3Rpb25zPXt9O3RoaXMud2E9bmV3IE1hcDt0aGlzLnpuYT1jO3RoaXMucUs9bmV3IERYYShmPT57aWYodGhpcy53YS5zaXplKXt2YXIgZz1mLmNsb25lKCk7Zy5rYS5ldmVudFR5cGU9PT0iY2xpY2tvbmx5IiYmKGcua2EuZXZlbnRUeXBlPSJjbGljayIpO3ZhciBoPWcuZ2V0RXZlbnQoKTtnPXRoaXMud2EuZ2V0KGcua2EuZXZlbnRUeXBlKTtsZXQgbj0hMTtpZihnKWZvcih2YXIgayBvZiBnKWsoaCk9PT0hMSYmKG49ITApO24mJlFyYShoKX10aGlzLklqYiYmcXlhKGYpO2lmKGg9SWcoZikpaWYodGhpcy5zdG9wUHJvcGFnYXRpb24mJnF5YShmKSxrPXZvaWQgMCx0aGlzLm9hJiYoaz10aGlzLm9hKGYpKSxrfHwoaz10aGlzLmFjdGlvbnNbaC5uYW1lXSksaylrKGYpO2Vsc2V7dmFyIG07CihtPXRoaXMua2EpPT1udWxsfHxtLnB1c2goZil9fSx7d0RhOmIsem5hOmY9Pnt0aGlzLmthPWY7dmFyIGc7KGc9dGhpcy56bmEpPT1udWxsfHxnLmNhbGwodGhpcyx0aGlzLmthLHRoaXMpfX0pO3RoaXMuc3RvcFByb3BhZ2F0aW9uPWQ7dGhpcy5JamI9ZX1kaXNwYXRjaChhKXt0aGlzLnFLLmRpc3BhdGNoKGEpfWVQKGEpe3JldHVybiB0aGlzLmFjdGlvbnMuaGFzT3duUHJvcGVydHkoYSl9fTtpZihDUWEpdGhyb3cgRXJyb3IoIk5kIik7Q1FhPSEwO0RRYT0xO18uR1hhPXZvaWQgMDtfLkhYYT12b2lkIDA7dmFyIHV5YT1uZXcgTWFwO18uSVhhPSExO3ZhciBKWGE9ISEoXy5PaVs5OV0+PjE5JjEpO3ZhciBMWGE9Y2xhc3N7Y29uc3RydWN0b3IoKXt2YXIgYT17bmFtZToiY3VycmVudFNwYW4ifTt0aGlzLm5hbWU9YS5uYW1lO3RoaXMub2E9YS5kZWZhdWx0VmFsdWV9Z2V0KCl7cmV0dXJuIHRoaXMua2E/dGhpcy5rYS5nZXQoKTp0aGlzLm9hfXJ1bihhLGIsLi4uYyl7aWYoIUtYYSgpKXtsZXQgZCxlPShkPXRoaXMua2EpPT1udWxsP3ZvaWQgMDpkLmdldCgpO3RyeXtyZXR1cm4gdGhpcy5rYT17Z2V0OigpPT5hfSxiLmFwcGx5KG51bGwsYyl9ZmluYWxseXt0aGlzLmthPXtnZXQ6KCk9PmV9fX10aGlzLmthfHwodGhpcy5rYT1uZXcgQXN5bmNDb250ZXh0LlZhcmlhYmxlKHtuYW1lOnRoaXMubmFtZSxkZWZhdWx0VmFsdWU6dGhpcy5vYX0pKTtyZXR1cm4gdGhpcy5rYS5ydW4oYSxiLC4uLmMpfX0sS1hhPSgpPT57dmFyIGEsYj0oYT1nbG9iYWxUaGlzLkFzeW5jQ29udGV4dCk9PW51bGw/dm9pZCAwOmEuVmFyaWFibGU7aWYoIWIpcmV0dXJuKEtYYT0oKT0+ITEpKCk7dmFyIGM9bmV3IGI7CmE9e307S1hhPWMucnVuKGEsZnVuY3Rpb24oKXt2YXIgZD0oMCxfLk1mKSgxKSxlPWQoKSxmPWQoMSk7cmV0dXJuIGZ1bmN0aW9uKigpe2YoKTt0cnl7Zih5aWVsZCBlKGMuZ2V0KCkpKX1maW5hbGx5e2UoKX19KCl9KS5uZXh0KCkudmFsdWU9PT1hPygpPT4hMDooKT0+ITE7cmV0dXJuIEtYYSgpfTt2YXIgd3lhPVN5bWJvbCgpO3ZhciB4eWE9Y2xhc3N7Y29uc3RydWN0b3IoYSl7dGhpcy5rR2M9YX19O18uRHlhPW5ldyBTZXQ7Xy5DeWE9W107dmFyIE1YYSxReWEsTlhhO01YYT1TeW1ib2woKTtReWE9Y2xhc3N7Y29uc3RydWN0b3IoYT1uZXcgTWFwKXt0aGlzLmthPWE7dGhpcy5mcm96ZW49ITF9c2V0KGEsYil7aWYodGhpcy5mcm96ZW4pdGhyb3cgRXJyb3IoIlFkIik7aWYoYj09bnVsbCl0aHJvdyBFcnJvcigiUmQiKTtpZih0aGlzLmthLmhhcyhhKSl0aHJvdyBFcnJvcigiU2QiKTt0aGlzLmthLnNldChhLGIpO3JldHVybiB0aGlzfW1lcmdlKGEpe2ZvcihsZXQgYiBvZiBhLmtleXMoTVhhKSl0aGlzLnNldChiLGEuZ2V0KGIpKTtyZXR1cm4gdGhpc31idWlsZCgpe3RoaXMuZnJvemVuPSEwO3JldHVybiBuZXcgTlhhKHRoaXMua2EpfX07TlhhPWNsYXNze2NvbnN0cnVjdG9yKGEpe3RoaXMua2E9YX1nZXQoYSl7cmV0dXJuIHRoaXMua2EuZ2V0KGEpfWhhcyhhKXtyZXR1cm4gdGhpcy5rYS5oYXMoYSl9aXNFbXB0eSgpe3JldHVybiB0aGlzLmthLnNpemU9PT0wfWtleXMoKXtyZXR1cm4gdGhpcy5rYS5rZXlzKCl9fTsKXy5PWGE9Y2xhc3N7fTt2YXIgUFhhPW5ldyBfLk9YYSxHeWEsU1hhPWNsYXNze2NvbnN0cnVjdG9yKGEsYixjLGQsZT0hMCl7dGhpcy5wYXJlbnQ9YTt0aGlzLmlkPWI7dGhpcy5uYW1lPWM7dGhpcy5JYT1kO3RoaXMuSjBhPWU7dGhpcy5BYT0wO3RoaXMubWFya2VyPXRoaXMuT209dm9pZCAwO3RoaXMuR2E9e3NwYW46dGhpc307dGhpcy5CYT12b2lkIDA7YT09PXZvaWQgMD8odGhpcy5rYT10aGlzLHRoaXMuTTY9MCk6KHRoaXMua2E9YS5rYSx0aGlzLk02PXBlcmZvcm1hbmNlLm5vdygpLXRoaXMua2EudWJiKX1lbnRlcihhKXt2YXIgYjtpZigoYj10aGlzLnBhcmVudCk9PW51bGw/MDpiLkFhPT09MCl0aGlzLkowYT0hMTtiPXRoaXMucmVmKCk7dmFyIGM9dGhpcy5rYTtjLm9hIT09dm9pZCAwJiYoY2xlYXJUaW1lb3V0KGMub2EpLGMub2E9dm9pZCAwKTt0aGlzLmlzQWN0aXZlKCk7Yy5BTi5pbmRleE9mKHRoaXMpO2MuQU4ucHVzaCh0aGlzKTtjLndhKys7dHJ5e2xldCBkPUd5YS5ydW4odGhpcy5HYSxhKTsKcmV0dXJuIHdDYShkKSYmdHlwZW9mIGQuZmluYWxseT09PSJmdW5jdGlvbiI/dGhpcy5leHRlbmQoZCk6ZH1maW5hbGx5e2IoKX19aXNBY3RpdmUoKXtyZXR1cm4gdGhpcy5BYT4wfXJlZigpe3RoaXMuQWErKz09PTAmJnRoaXMuT20hPT12b2lkIDAmJih0aGlzLk9tPXZvaWQgMCxRWGEodGhpcy5rYSx0aGlzKSk7dmFyIGE7dGhpcy5CYSE9bnVsbHx8KHRoaXMuQmE9KGE9dGhpcy5wYXJlbnQpPT1udWxsP3ZvaWQgMDphLnJlZigpKTtyZXR1cm4oKT0+e3RoaXMucGFyZW50IT09dm9pZCAwJiZ0aGlzLnBhcmVudC5pc0FjdGl2ZSgpO2lmKC0tdGhpcy5BYT09PTApe3RoaXMuT209dGhpcy5vWigpO1JYYSh0aGlzLmthLHRoaXMpO3ZhciBiOyhiPXRoaXMuQmEpPT1udWxsfHxiLmNhbGwodGhpcyk7dGhpcy5CYT12b2lkIDB9fX1leHRlbmQoYSl7dmFyIGI9dGhpcy5yZWYoKTt0aGlzLkowYT0hMTtyZXR1cm4gYS5maW5hbGx5KGIpfXRLKCl7dGhpcy5HYS5zcGFuPXZvaWQgMH1vWigpe3ZhciBhPQp0aGlzLk02O3JldHVybiBwZXJmb3JtYW5jZS5ub3coKS0odGhpcy5rYS51YmIrYSl9djdhKCl7dmFyIGE9dGhpcy5JYTthIGluc3RhbmNlb2YgUXlhJiYodGhpcy5JYT1hPWEuYnVpbGQoKSk7cmV0dXJuIGF9WlgoKXt2YXIgYT10aGlzLk02LGI9dGhpcy5PbTt0aGlzIGluc3RhbmNlb2YgSnlhJiZ0aGlzLmthPT09dGhpcyYmKGE9MCxiLT10aGlzLkthKTt2YXIgYztyZXR1cm57aWQ6dGhpcy5pZCxwYXJlbnRJZDooYz10aGlzLnBhcmVudCk9PW51bGw/dm9pZCAwOmMuaWQsbmFtZTp0aGlzLm5hbWUsbWFya2VyOnRoaXMubWFya2VyPT09ITAsTTY6YSxKMGE6dGhpcy5KMGEsT206Yn19fSxUWGE9bmV3IFNldCxRWGE9ZnVuY3Rpb24oYSxiKXtiLmlzQWN0aXZlKCk7YS5BTi5pbmRleE9mKGIpO2Eud2ErK30sUlhhPWZ1bmN0aW9uKGEsYil7Yi5pc0FjdGl2ZSgpOy0tYS53YTtpZihhLndhPT09MCl7Zm9yKGxldCBjIG9mIGEuRWEpYy5lbmQoITEpO2Eub2E9c2V0VGltZW91dCgoKT0+e2Eub2E9CnZvaWQgMDtpZihhLndhPT09MCl7Y2xlYXJUaW1lb3V0KGEub2EpO2Eub2E9dm9pZCAwO2Zvcih2YXIgYyBvZiBhLkFOKWMudEsoKTtUWGEuZGVsZXRlKGEpO2E6e2ZvcihjPTA7YzxhLkVhLmxlbmd0aDtjKyspe3ZhciBkPXZvaWQgMDtpZigoZD1hLkVhW2NdLnY3YSgpKT09bnVsbHx8IWQuZ2V0KFBYYSkpe3ZhciBlPSExO2JyZWFrIGF9fWZvcihkPWEuQU4ubGVuZ3RoLTE7ZD49MDtkLS0paWYoKGU9YS5BTltkXS52N2EoKSk9PW51bGx8fCFlLmdldChQWGEpKXtlPSExO2JyZWFrIGF9ZT0hMH1pZighZSl7dmFyIFtmLGddPUl5YShhLkFOLGEuRWEpO0V5YSh7aWQ6YS5PYSxzdGFydFRpbWVNczphLlBhLHViYjphLnViYixBTjpmfSxnKX19fSxhLlJhPT09MT8wOjVFMyl9fSxMeWE9ZnVuY3Rpb24oYSxiLGMsZCl7Xy5GYmEoYi5rYT09PWEpO3JldHVybiBuZXcgU1hhKGIsKythLk5hLGMsZCwhMCl9LEp5YT1jbGFzcyBleHRlbmRzIFNYYXtjb25zdHJ1Y3RvcihhLGIsYz0wKXtzdXBlcih2b2lkIDAsCjAsYSxiKTt0aGlzLlJhPWM7aWYoXy5XYSlhPV8uWWEoQmlnSW50KEZ5YSg0Mjk0OTY3Mjk2KSk8PEJpZ0ludCgzMil8QmlnSW50KEZ5YSg0Mjk0OTY3Mjk2KSkpO2Vsc2UgYTp7Zm9yKDs7KXthPUZ5YSgweGE3YzVhYzQ3MWI0OCk7Yj1GeWEoMUU1KTtpZighYSl7YT1fLllhKFN0cmluZyhiKSk7YnJlYWsgYX1pZihhPDB4YTdjNWFjNDcxYjQ3fHxiPDUxNjE2KXthPV8uWWEoU3RyaW5nKGEpK1N0cmluZyhiKS5wYWRTdGFydCg1LCIwIikpO2JyZWFrIGF9fWE9dm9pZCAwfXRoaXMuT2E9YTt0aGlzLlBhPURhdGUubm93KCk7dGhpcy51YmI9cGVyZm9ybWFuY2Uubm93KCk7dGhpcy5LYT0wO3RoaXMub2E9dm9pZCAwO3RoaXMud2E9MDt0aGlzLkFOPVtdO3RoaXMuRWE9W107R3lhIT1udWxsfHwoR3lhPW5ldyBMWGEpO3RoaXMuTmE9dGhpcy5pZDtUWGEuYWRkKHRoaXMpfX07dmFyIFB5YT1uZXcgU2V0O3ZhciBPeWE9bmV3IFNldChbImNoYW5nZSIsImNsaWNrIiwiaW5wdXQiLCJrZXlkb3duIiwic3VibWl0Il0pO3ZhciBDWGE9e30sQlhhPS9ccyo7XHMqLyxVWGE9Y2xhc3N7Y29uc3RydWN0b3IoKXsoe0lFYjpiPSExLHNsYjphPSEwfT17SUViOiEwfSk7dmFyIGEsYjt0aGlzLmthPSExO3RoaXMuc2xiPSEwO3RoaXMub2E9dGhpcy53YT10aGlzLkFhPXZvaWQgMDt0aGlzLklFYj1iO3RoaXMuc2xiPWF9fTt2YXIgSXJhLFZYYSxXWGEsWFhhLFlYYSwkWGEsYllhLGZZYSxkWWEsZVlhLGlZYSxnWWEsaFlhLGpZYSxrWWEsbFlhLG9ZYSxuWWEsbVlhLHBZYTtJcmE9ZnVuY3Rpb24oYSxiLGMsZCxlPSEwLGYpe2I9aXJhKGIsYyxkLGUsZik7YS50cmlnZ2VyKGIpfTtfLmFZYT1mdW5jdGlvbihhLGIpe3ZhciBjPV8uT2YuZ2V0SW5zdGFuY2UoKSxkPVZYYShiKTtpZihkIGluc3RhbmNlb2YgXy5ITmEpcmV0dXJuIGQ7dmFyIGU9V1hhKGEsYixkKTtpZihlKXJldHVybiBlO2U9WFhhKGIsZCk7d3VhKGEubWFuYWdlcixiKTt0cnl7WVhhKGEsYixkLCJ3aGVuIHJlcXVlc3RlZCIpfWNhdGNoKGYpe2UucmVqZWN0KGYpfV8uVG9hKGMsZCkuZmxhdE1hcChmPT57WVhhKGEsYixkLCJhZnRlciBtb2R1bGUgbG9hZCIpO3JldHVybiBfLnRvYShmKT8kWGEoYSxkLGIsZik6KGY9Xy5aWGEoYSxiLGYpLGYgaW5zdGFuY2VvZiBfLkhOYT9OZihmKTpfLlVmKGYpKX0pLkl4KGUucmVzb2x2ZSxlLnJlamVjdCk7cmV0dXJuIGUucGVuZGluZ307ClZYYT1mdW5jdGlvbihhKXt2YXIgYj1hLmdldEF0dHJpYnV0ZSgianNjb250cm9sbGVyIik7cmV0dXJuIGI/Xy5yaChiKTooYT1hLmdldEF0dHJpYnV0ZSgianNuYW1lIiksbmV3IF8uSE5hKCJObyBjb250cm9sbGVyIGRlZmluZWQgZm9yIHRoaXMgZWxlbWVudC4iKyhhP2AgW3dpdGgganNuYW1lICcke2F9J11gOiIiKSkpfTtXWGE9ZnVuY3Rpb24oYSxiLGMpe3RyeXtsZXQgZD1iWWEoYSxiLGMpO2lmKGQpcmV0dXJuIGQucGVuZGluZz9kLnBlbmRpbmc6Xy5VZihkLmluc3RhbmNlKX1jYXRjaChkKXtyZXR1cm4gTmYoZCl9fTtYWGE9ZnVuY3Rpb24oYSxiKXt2YXIgYyxkLGU9bmV3IF8ud2YoKGYsZyk9PntjPWY7ZD1nfSk7Z09hKGEse2puOmIudG9TdHJpbmcoKSxwZW5kaW5nOmUsY2FuY2VsOmY9PntkKG1vYShgQ29udHJvbGxlciA8JHtifT4gY2FuY2VsZWQ6ICR7Zn1gKSl9fSk7cmV0dXJue3Jlc29sdmU6YyxyZWplY3Q6ZCxwZW5kaW5nOmV9fTsKWVhhPWZ1bmN0aW9uKGEsYixjLGQpe2lmKCFhLnF4KGIpKXRocm93IGdPYShiKSxtb2EoYENvbnRyb2xsZXIgPCR7Y30+IGNhbmNlbGVkOiAke2Bub3QgaW4gZG9jdW1lbnQgJHtkfWB9YCk7fTsKXy5aWGE9ZnVuY3Rpb24oYSxiLGMpe18ucWYoYyk7dmFyIGQ9Xy5PZi5nZXRJbnN0YW5jZSgpLGU9VlhhKGIpO2lmKGUgaW5zdGFuY2VvZiBfLkhOYSlyZXR1cm4gZTtkPWQuWkgoYyk7aWYoIWQpdGhyb3cgRXJyb3IoIlRkYCIrXy5xZihjKSk7aWYoZC50b1N0cmluZygpIT09ZS50b1N0cmluZygpKXRocm93IEVycm9yKCJVZGAiK2QudG9TdHJpbmcoKSsiYCIrZS50b1N0cmluZygpKTtZWGEoYSxiLGQsIndoZW4gcmVxdWVzdGVkIik7d3VhKGEubWFuYWdlcixiKTthOmlmKGU9YllhKGEsYixkKSl7aWYoZS5wZW5kaW5nKXtpZihfLnl1YShlLnBlbmRpbmcpLnN0YXRlPT09MCl7ZT12b2lkIDA7YnJlYWsgYX10aHJvdyBFcnJvcigiVmRgIitkLnRvU3RyaW5nKCkpO31lPWUuaW5zdGFuY2V9ZWxzZSBlPXZvaWQgMDtpZihlKXJldHVybiBlO2lmKCFfLkhYYSl0aHJvdyBFcnJvcigiT2QiKTthPSgwLF8uSFhhKShjLGIsYSk7Z09hKGIse2luc3RhbmNlOmEsam46ZC50b1N0cmluZygpfSk7CnJldHVybiBhfTskWGE9ZnVuY3Rpb24oYSxiLGMsZCl7dmFyIGU9ITA7aWYoIV8uR1hhKXRocm93IEVycm9yKCJPZCIpO2Q9KDAsXy5HWGEpKGQsYixjLGEpLm1hcChmPT57ZXx8WVhhKGEsYyxiLCJhZnRlciBpbml0Iik7cmV0dXJuIGZ9KTtlPSExO3JldHVybiBkfTtiWWE9ZnVuY3Rpb24oYSxiLGMpe2lmKGE9YS5FYShjLGIpKXtpZihhLmpuLnRvU3RyaW5nKCk9PT1jLnRvU3RyaW5nKCkpcmV0dXJuIGE7Z09hKGIpO2lPYShhKX19O18uY1lhPWZ1bmN0aW9uKGEsYil7Zm9yKGxldCBjIG9mIGEud2EpZm9yKGxldCBkIG9mIGIpO2Eud2EucHVzaCguLi5iKX07CmZZYT1mdW5jdGlvbihhLGIsYyl7aWYoIWEucmN8fCFhLnJjLmlzRGlzcG9zZWQoKSl7dmFyIGQ9SWcoYikuZWxlbWVudDtpZighZHx8IV8uSVhhfHwoImlzQ29ubmVjdGVkImluIGQ/ZC5pc0Nvbm5lY3RlZDpfLiRnKF8uV2QoZCksZCkpKXt2YXIgZT1JZyhiKS5uYW1lLGY9ZS5pbmRleE9mKCIuIiksZz1lLnN1YnN0cmluZygwLGYpO2lmKGcpYT1lLnN1YnN0cmluZyhmKzEpLGc9PT0idHJpZ2dlciImJihjPT1udWxsfHx3WGEoYyxhLGIuZ2V0RXZlbnQoKSksYz1UT2EoZSksYz1kWWEoYixjLGQpLFtjXT1jLGMmJkhyYShkLGMuYWN0aW9uLmFjdGlvbi5zdWJzdHJpbmcoOCksYi5nZXRFdmVudCgpLmRhdGEpKTtlbHNle2Q9Yi5nZXRFdmVudCgpO2U9Xy5VZigpO2c9KCk9Pnt9O2Y9az0+e0pYYSYmXy5mYShrKX07dmFyIGg9ZCYmZC5fZF9lcnI7aCYmKGc9ZC5fZF9lcnJfcnMsZj1kLl9kX2Vycl9yaixkZWxldGUgZC5fZF9lcnIsZGVsZXRlIGQuX2RfZXJyX3JzLGRlbGV0ZSBkLl9kX2Vycl9yaik7CmVZYShhLGIsZSxoLGMpLkl4KGcsZil9fX19O2RZYT1mdW5jdGlvbihhLGIsYyl7dmFyIGQ9W10sZT1hLmdldEV2ZW50KCk7Yj1iLmdldCgpO2ZvcihsZXQgZz0wO2c8Yi5sZW5ndGg7ZysrKXtsZXQgaD1iW2ddO2lmKGguYWN0aW9uPT09IkNMSUVOVCJ8fGguYWN0aW9uLnN0YXJ0c1dpdGgoIiMiKSljb250aW51ZTtsZXQgaz1hcmEoZSxhLmthLnRhcmdldEVsZW1lbnQpO3ZhciBmPW51bGw7aWYoaC50YXJnZXQpe2Y9YztsZXQgbT1rLG49bnVsbDtkb3tsZXQgcD1tLmdldEF0dHJpYnV0ZSgianNuYW1lIikscj1iemEobSk7aWYoaC50YXJnZXQ9PT1wJiZyPT09Zil7bj1tO2JyZWFrfW09Xy5vcmEobSl9d2hpbGUobSYmbSE9PWYpO2Y9bjtpZighZiljb250aW51ZX1pZihoLmFyZ3MmJmguYXJncy5wcmV2ZW50RGVmYXVsdD09PSJ0cnVlIil7bGV0IG07KG09ZS5wcmV2ZW50RGVmYXVsdCk9PW51bGx8fG0uY2FsbChlKX1kLnB1c2goe2FjdGlvbjpoLHRhcmdldDpmfHxrfSl9cmV0dXJuIGR9OwplWWE9ZnVuY3Rpb24oYSxiLGMsZCxlKXt2YXIgZj1jLGc9YyxoPUlnKGIpLmVsZW1lbnQsaz1iLmdldEV2ZW50KCksbT1nWWEoayk7ay54Xz1tP20uc3RhcnRUaW1lOm51bGw7ay5JJGI9bT9tLmk2YTpudWxsO3ZhciBuPWFyYShrLGIua2EudGFyZ2V0RWxlbWVudCk7dmFyIHA9KG09KHA9SWcoYikpPT1udWxsP3ZvaWQgMDpwLm5hbWUpP1RPYShtKTp2b2lkIDA7dmFyIHI7bT1bLi4uKHA/dnlhKHApOltdKSwuLi4oKHI9enJhKGgsYi5rYS5ldmVudFR5cGUpKSE9bnVsbD9yOltdKV07dmFyIHg9ISFtJiZtLmxlbmd0aD4wLHo9ITE7ZSE9bnVsbCYmZS5kSi5seigid2l6Iik7aWYoeClmb3IobGV0IEggb2YgbSlmPWc9Yy5mbGF0TWFwKCgpPT5oWWEoYSxiLEgsbnVsbCxuKSkubWFwKEo9Pnt6PUooKT09PSEwfHx6fSk7UHNhKGgpO3ZhciBCPWlZYShiKTtpZihCKXtsZXQgSD1wP2RZYShiLHAsQik6W107aWYoSC5sZW5ndGgpe2xldCBKPWEuUngoQiksTj1CLmdldEF0dHJpYnV0ZSgianNjb250cm9sbGVyIik7CmY9UnlhKGIuZ2V0RXZlbnQoKSxiLmthLmV2ZW50VHlwZS50b1N0cmluZygpLE4sKCk9PmcuZmxhdE1hcCgoKT0+e3ZhciB7c3RhdGU6UX09Xy55dWEoSik7aWYoUT09PTF8fFE9PT0yKWsuSzlhPSEwO2lmKFE9ZT09bnVsbD92b2lkIDA6eFhhKGUpKVE9Z1lhKFEpLGsueF89UT9RLnN0YXJ0VGltZTpudWxsLGsuSSRiPVE/US5pNmE6bnVsbDtyZXR1cm4gSi5mbGF0TWFwKFo9Pnt2YXIgWT1lPT1udWxsP3ZvaWQgMDplLnhTYShCLmdldEF0dHJpYnV0ZSgianNjb250cm9sbGVyIil8fHZvaWQgMCk7aWYoWSlyZXR1cm4gbmV3IF8ud2YoKGRhLGNhKT0+e1kudGhlbigoKT0+e2U9PW51bGx8fHVYYShlLE4pO2pZYShhLFosYixCLEgseikuSXgoZGEsY2EpfSl9KTtlPT1udWxsfHx1WGEoZSxOKTtyZXR1cm4gallhKGEsWixiLEIsSCx6KX0pfSkpKCl9ZWxzZSBmPWcubWFwKCgpPT57eD96JiZrWWEoYSxiKTprWWEoYSxiLCEwKX0pfWVsc2UgZj1nLm1hcCgoKT0+e3omJmtZYShhLGIsITApfSk7CnJldHVybihuZXcgXy53ZigoSCxKKT0+e2YubWFwKEgsTj0+e2lmKF8ubG9hKE4pKUgoKTtlbHNlIGlmKEImJkIhPT1kb2N1bWVudC5ib2R5KXtsZXQgUT1kP2suZGF0YS5lcnJvcnMuc2xpY2UoKTpbXTtsWWEoYSxiLEIsTixRKS5JeChILEopfWVsc2UgSihOKX0pfSkpLm1hcCgoKT0+e2U9PW51bGx8fHZYYShlKX0sSD0+e2U9PW51bGx8fHZYYShlKTt0aHJvdyBIO30pfTtpWWE9ZnVuY3Rpb24oYSl7dmFyIHtlbGVtZW50OmIsbmFtZTpjfT1JZyhhKTthPW51bGw7Yy5zdGFydHNXaXRoKCImIikmJihhPWMuaW5kZXhPZigifCIpLGE9Xy50cmEoYy5zdWJzdHJpbmcoMSxhKSkpO3ZhciBkO3JldHVybihkPWEpIT1udWxsP2Q6Xy5BcmEoYiwhMCl9OwpnWWE9ZnVuY3Rpb24oYSl7YT1hLnRpbWVTdGFtcDtpZihhPT09dm9pZCAwKXJldHVybiBudWxsO3ZhciBiPV8ua2UoKTtpZihhPj1iKzMxNTM2RTYpcmV0dXJue3N0YXJ0VGltZTphLzFFMyxpNmE6MH07aWYoYT49Yi0zMTUzNkU2JiZhPGIrMzE1MzZFNilyZXR1cm57c3RhcnRUaW1lOmEsaTZhOjF9O2I9RE9hO3JldHVybiBiIT09dm9pZCAwP3tzdGFydFRpbWU6YStiLGk2YToyfTpudWxsfTsKaFlhPWZ1bmN0aW9uKGEsYixjLGQsZSl7dmFyIGY9Yi5nZXRFdmVudCgpO2I9SWcoYikuZWxlbWVudDtlLm5vZGVUeXBlPT09Tm9kZS5URVhUX05PREUmJihlPWUucGFyZW50Tm9kZSk7dmFyIGc9bmV3IF8ua3JhKGYsbmV3IF8uem8oZSksbmV3IF8uem8oYiksZi5fX3NvdXJjZSxuZXcgXy56byhncmEoZixlKSkpLGg9W107ZT1bXTtmb3IobGV0IGsgb2YgYS53YSkoZj1hLnByb2Nlc3NvcnNbay50b1N0cmluZygpXSk/aC5wdXNoKGYpOmUucHVzaChrKTtyZXR1cm4gbVlhKGEsZSkubWFwKGs9Pntmb3IobGV0IG0gb2YgayloLnB1c2gobSk7aWYoaC5sZW5ndGgpe2lmKHN5YShkLGcsaCkpcmV0dXJuKCk9Pnt9O3R5YShnLGgpfXJldHVybiBjLmJpbmQoZCxnKX0pfTsKallhPWZ1bmN0aW9uKGEsYixjLGQsZSxmKXt2YXIgZz1jLmdldEV2ZW50KCksaD1fLkV1YShiKTtmb3IobGV0IHthY3Rpb246ayx0YXJnZXQ6bX1vZiBlKWg9aC5mbGF0TWFwKCgpPT57dmFyIG49Xy5CcmEoYixrLmFjdGlvbik7cmV0dXJuIGhZYShhLGMsbixiLG0pfSkubWFwKG49PntmPW4oKT09PSEwfHxmfSk7cmV0dXJuIGgubWFwKCgpPT57aWYoZiYmZy5idWJibGVzIT09ITEpe2xldCBrPW5ZYShhLGMsZCk7ayE9bnVsbCYmYS50cmlnZ2VyKGspfX0pfTtrWWE9ZnVuY3Rpb24oYSxiLGM9ITEpeyhiPW5ZYShhLGIsdm9pZCAwLGMpKSYmYS50cmlnZ2VyKGIpfTsKbFlhPWZ1bmN0aW9uKGEsYixjLGQsZSl7dmFyIGY9Xy5vcmEoYyk7aWYoIWYpcmV0dXJuIF8uZmEoZCksXy5VZigpO2lmKCFvWWEoYSkpdGhyb3cgZDthPXthQWQ6YCR7Yi5rYS5ldmVudFR5cGV9YCx1eWQ6Yy5nZXRBdHRyaWJ1dGUoImpzY29udHJvbGxlciIpLGVycm9yOmR9O2UucHVzaChhKTtyZXR1cm4gbmV3IF8ud2YoKGcsaCk9PntfLlhnKGYsInUwcGpvZSIse2Vycm9yczplfSx2b2lkIDAse19kX2VycjohMCxfZF9lcnJfcnM6ZyxfZF9lcnJfcmo6aH0pfSl9O29ZYT1mdW5jdGlvbihhKXt2YXIgYj1kb2N1bWVudC5ib2R5O2ImJiFhLkFhJiYoXy5UZyhiLCJ1MHBqb2UiLGM9PnthLklhKGMpfSxhKSxhLkFhPSEwKTtyZXR1cm4gYS5BYX07bllhPWZ1bmN0aW9uKGEsYixjLGQ9ITEpe3JldHVybihjPV8ub3JhKGN8fElnKGIpLmVsZW1lbnQpKSYmYS5xeChjKT9mcmEoYi5nZXRFdmVudCgpLGIua2EudGFyZ2V0RWxlbWVudCxjLGQpOm51bGx9OwptWWE9ZnVuY3Rpb24oYSxiKXt2YXIgYz1bXTtfLkVOYShfLk9mLmdldEluc3RhbmNlKCksYik7Zm9yKGxldCBkIG9mIGIpYj15cGEoZCxhLnJjKS5tYXAoZT0+YS5wcm9jZXNzb3JzW2QudG9TdHJpbmcoKV09ZSksYy5wdXNoKGIpO3JldHVybiBfLldmKGMpfTsKcFlhPWNsYXNze2NvbnN0cnVjdG9yKGEsYixjLGQpe3RoaXMuR2E9YTt0aGlzLm1hbmFnZXI9Yjt0aGlzLnJjPWM7dGhpcy5CYT1kO3RoaXMueGM9bnVsbDt0aGlzLmthPVtdO3RoaXMucHJvY2Vzc29ycz17fTt0aGlzLndhPVtdO3RoaXMuSWE9ZT0+e2lmKChlPWUuZGF0YSkmJmUuZXJyb3JzJiZlLmVycm9ycy5sZW5ndGg+MCl0aHJvdyBlLmVycm9yc1swXS5lcnJvcjt9O3RoaXMuQWE9ITE7Xy5VZigpO2E9bmV3IFVYYTthLmthPSEwO2EuQWE9WXlhO2Eud2E9JHlhO2Eub2E9YXphO3RoaXMuQ3ZiPW5ldyBGWGEodGhpcy5vYSgpLHt3RGE6YSxzdG9wUHJvcGFnYXRpb246ITEsSWpiOiExfSk7RVhhKHRoaXMuQ3ZiLChlLGYpPT57Zm9yKHZhciBnO2c9ZS5zaGlmdCgpOylnLmthLmVpcnA9ITEsZi5kaXNwYXRjaChnLmthKX0pO2I9Yi5nZXREb2N1bWVudCgpO2IuX193aXpkaXNwYXRjaGVyX3Jlc29sdmUmJihiLl9fd2l6ZGlzcGF0Y2hlcl9yZXNvbHZlKCksZGVsZXRlIGIuX193aXpkaXNwYXRjaGVyX3Jlc29sdmUpOwpiLl9fd2l6ZGlzcGF0Y2hlcj10aGlzfVNsKCl7cmV0dXJuIHRoaXMucmN9bFcoKXtyZXR1cm4gdGhpcy5yY310cmlnZ2VyKGEpe3RoaXMuR2EoYSl9cXgoYSl7aWYoYS5vd25lckRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5jb250YWlucyhhKSl7Zm9yKHZhciBiIG9mIHRoaXMua2EpaWYoYi5jb250YWlucyhhKSlyZXR1cm4hMTtyZXR1cm4hMH1mb3IoYj1hO2I9Yi5wYXJlbnROb2RlOyl7bGV0IGM7Yj0oYz1iLmhvc3QpIT1udWxsP2M6YjtpZih0aGlzLmthLmluY2x1ZGVzKGIpKWJyZWFrO2lmKGI9PT1hLm93bmVyRG9jdW1lbnQpcmV0dXJuITB9cmV0dXJuITF9VHUoYSl7cmV0dXJuIHRoaXMuQmQoYSxfLkxvKX1CZChhKXtyZXR1cm4gXy56Zih0aGlzLlJ4KGEpLCEwKX1SeChhKXthPV8uYVlhKHRoaXMsYSk7cmV0dXJuIGEgaW5zdGFuY2VvZiBfLkhOYT9OZihhKTphfW9hKCl7dGhpcy5tYW5hZ2VyLmFkZE9uRGlzcG9zZUNhbGxiYWNrKCgpPT57fSk7cmV0dXJuKCk9PmE9Pnt2YXIgYjsKdGhpcy5CYSYmKGI9dGhpcy5CYShhKSk7dmFyIGM7KGM9YikhPW51bGwmJihjLmRKLkFhPSEwKTtmWWEodGhpcyxhLGIpO3ZhciBkOyhkPWIpIT1udWxsJiZkLmRKLmRvbmUoIm1haW4tYWN0aW9uZmxvdy1icmFuY2giKX19RWEoYSxiKXtyZXR1cm4gXy5oT2EoYil9fTt2YXIgZHphPWNsYXNzIGV4dGVuZHMgcFlhe2NvbnN0cnVjdG9yKGEsYixjLGQpe3N1cGVyKGEsYixjLGQpO3B0YShlPT57dGhpcy5rYS5wdXNoKF8uemkoZS5yKSl9KTtfLk1QYT1lPT57ZT10aGlzLmthLmluZGV4T2YoXy56aShlLnIpKTtlPj0wJiZ0aGlzLmthLnNwbGljZShlLDEpfX1vYSgpe3ZhciBhPXN1cGVyLm9hKCk7cmV0dXJuIGI9Pnt2YXIgYyxkPShjPUlnKGIpKT09bnVsbD92b2lkIDA6Yy5lbGVtZW50O2lmKCFkKXJldHVybigpPT57fTtpZihjPV8uaHRhKGQpKXJldHVybiBtdGEoYi5rYSxjKSwoKT0+e307aWYoYSlyZXR1cm4gYShiKTt0aHJvdyBFcnJvcigiV2QiKTt9fUVhKGEsYil7aWYoKGI9Xy5oT2EoYikpJiZiLmNxYSE9PUJ1YSl0aHJvdyBFcnJvcigiWGRgIithKTtyZXR1cm4gYn19O18uVmYoe21vZGVsOmZ1bmN0aW9uKGEsYil7dmFyIGM9Xy5icGEoYik7aWYoIWMpdGhyb3cgRXJyb3IoIlpkYCIrYik7cmV0dXJuIGEuaW9hKGMpfSxCODpmdW5jdGlvbihhLGIpe3JldHVybiBfLlVmKF8ueHdhKGEuZ2V0RGF0YShiLm5hbWUpLGIuY3RvcixudWxsKSl9fSk7dmFyIHJZYSxxWWEscXphOwpyWWE9ZnVuY3Rpb24oYSl7Xy5obShfLm5mKFJXYSkscFhhKTtfLk9mLmdldEluc3RhbmNlKCkuQWE9KGMsZCk9PntpZihnb29nbGUuc3R2c2N8fCFBcnJheS5pc0FycmF5KF8uZWEuX0xfQ0lEUykpdmFyIGU9bnVsbDtlbHNle2ZvcihsZXQgZiBvZiBkKV8uZWEuX0xfQ0lEUy5pbmNsdWRlcyhmKXx8Xy5lYS5fTF9DSURTLnB1c2goZik7Yz17fTtmb3IoZSBvZiBkKUNXYS5oYXMoZSl8fENXYS5zZXQoZSxuZXcgXy5NcSksY1tlXT1DV2EuZ2V0KGUpLnByb21pc2U7ZT1jfXJldHVybiBlfHxaeGEoZCl9O3NHYSYmKEZRYT0hMCk7ZnphKGEucmMsbXlhKE1PYSgpLGh6YSkpO18uVmYoe2pzZGF0YTpleWF9LCEwKTtfLlZmKHtmZjpieWF9LCEwKTtfLlNvLlZtKFtfLnBSYSxfLnFSYV0sQWthKTtfLmhtKF8ubmYoXy52UmEpLF8ub1JhKTtfLmhtKF8ubmYoXy5UbyksXy51UmEpO18uaG0oXy5uZihfLnhSYSksXy53UmEpO18uaG0oXy5uZihfLnJSYSksXy5zUmEpO18uaG0oXy5uZihfLnpSYSksCl8uQVJhKTtfLmhtKF8ubmYoXy55UmEpLF8udFJhKTtfLkZvIT09dm9pZCAwP0RPYT1fLkZvOl8uVmUoRXJyb3IoImFlIikpO18uJFFhJiZfLmNZYShfLmRnKGRvY3VtZW50KSxbXy5iUmFdKTtXeGEoKTtYeGEucmVzb2x2ZSgpO3ZhciBiPV8ueWgod2luZG93LmRvY3VtZW50KTt3aW5kb3cud2l6X3Byb2dyZXNzPSgpPT5iLmRpcnR5KCk7Xy5WZih7b2U6bXphLGhuYTpMdWEsQVBiOk11YX0sITApO18ubnlhKCk7Z29vZ2xlLmJ1ZHQ9PT12b2lkIDB8fGdvb2dsZS5idWR0PD0wfHx3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigiYmVmb3JldW5sb2FkIixZdWEpO256YSgpO1V4YSgpO3FZYSgpfTtxWWE9ZnVuY3Rpb24oKXtnb29nbGUuZmNlPUhyYTt2YXIgYT1nb29nbGUucWNlO2lmKGEhPW51bGwpe2dvb2dsZS5xY2U9bnVsbDtmb3IobGV0IGIgb2YgYSlIcmEuYXBwbHkodm9pZCAwLGIpfX07CnF6YT1jbGFzcyBleHRlbmRzIFRNYXtjb25zdHJ1Y3Rvcigpe3N1cGVyKCk7dGhpcy5yYz1BV2EoKS5TbCgpfWluaXRpYWxpemUoKXtKV2EodGhpcy5yYyk7dmFyIGE9KDAsXy5MdGEpKCk7YS5CQ2IodGhpcy5yYyk7dGhpcy5yYy5QYT1hO0FzYSgpO3dHYXx8dEdhP1ZuYSgoKT0+e3JZYSh0aGlzKTt0aGlzLmRpcnR5KCl9KToocllhKHRoaXMpLFZuYSgoKT0+e3RoaXMuZGlydHkoKX0pKTtmb2EoKTtwemEoKX1kaXJ0eSgpe3VHYXx8Xy55aCh3aW5kb3cuZG9jdW1lbnQpLmRpcnR5KCkudGhlbigoKT0+eygwLF8uam8pKCgpPT57Xy5zWWEodGhpcy5yYyl9LDApfSl9fTtfLnNZYT0oKT0+e307dmFyIHRZYT1mdW5jdGlvbihhLGIpe2lmKGEucUspYS5xSyhiKTtlbHNle2IuZWlycD0hMDtsZXQgYzsoYz1hLmthKT09bnVsbHx8Yy5wdXNoKGIpfX0sSnphPWZ1bmN0aW9uKGEsYil7Zm9yKGxldCBlPTA7ZTxiLmxlbmd0aDtlKyspe2xldCBmPWJbZV07dmFyIGM9YSxkPWYuZXZlbnRUeXBlO2xldCBnPVtdO2Mub2FbZF0mJmcucHVzaChkKTtjLndhW2RdJiZnLnB1c2goLi4uYy53YVtkXSk7Zm9yKGM9MDtjPGcubGVuZ3RoO2MrKylkPWR0YShmKSxkLmV2ZW50VHlwZT1nW2NdLHRZYShhLGQpfX0sRnphPWNsYXNze2NvbnN0cnVjdG9yKGEpe3RoaXMub2E9e307dGhpcy53YT17fTt0aGlzLnFLPW51bGw7dGhpcy5rYT1bXTt0aGlzLkFhPWF9aGFuZGxlRXZlbnQoYSxiLGMpe3ZhciBkPWIudGFyZ2V0LGU9RGF0ZS5ub3coKTt0WWEodGhpcyx7ZXZlbnRUeXBlOmEsZXZlbnQ6Yix0YXJnZXRFbGVtZW50OmQsZWljOmMsdGltZVN0YW1wOmUsZWlhOnZvaWQgMCxlaXJwOnZvaWQgMCxlaWFjazp2b2lkIDB9KX1hZGRFdmVudChhLApiLGMpe2lmKCEoYSBpbiB0aGlzLm9hKSYmdGhpcy5BYSl7dmFyIGQ9KGUsZixnKT0+e3RoaXMuaGFuZGxlRXZlbnQoZSxmLGcpfTt0aGlzLm9hW2FdPWQ7Yj1QcmEoYnx8YSk7aWYoYiE9PWEpe2xldCBlPXRoaXMud2FbYl18fFtdO2UucHVzaChhKTt0aGlzLndhW2JdPWV9dGhpcy5BYS5hZGRFdmVudExpc3RlbmVyKGIsZT0+Zj0+e2QoYSxmLGUpfSxjKX19aGFuZGxlcihhKXtyZXR1cm4gdGhpcy5vYVthXX1BSCgpe3ZhciBhOyhhPXRoaXMuQWEpPT1udWxsfHxhLkFIKCk7dGhpcy5BYT1udWxsO3RoaXMub2E9e307dGhpcy53YT17fTt0aGlzLnFLPW51bGw7dGhpcy5rYT1bXX1lY3JkKGEpe3RoaXMucUs9YTt2YXIgYjtpZigoYj10aGlzLmthKT09bnVsbD8wOmIubGVuZ3RoKXtmb3IoYT0wO2E8dGhpcy5rYS5sZW5ndGg7YSsrKXRZYSh0aGlzLHRoaXMua2FbYV0pO3RoaXMua2E9bnVsbH19fTt2YXIgRHphPWNsYXNze2NvbnN0cnVjdG9yKCl7dGhpcy5lbGVtZW50PXdpbmRvdy5kb2N1bWVudC5kb2N1bWVudEVsZW1lbnQ7dGhpcy5rYT1bXX1hZGRFdmVudExpc3RlbmVyKGEsYixjKXt2YXIgZD10aGlzLmthLGU9ZC5wdXNoLGY9dGhpcy5lbGVtZW50O2I9Yih0aGlzLmVsZW1lbnQpO3ZhciBnPSExO1VPYS5pbmRleE9mKGEpPj0wJiYoZz0hMCk7Zi5hZGRFdmVudExpc3RlbmVyKGEsYix0eXBlb2YgYz09PSJib29sZWFuIj97Y2FwdHVyZTpnLHBhc3NpdmU6Y306Zyk7ZS5jYWxsKGQse2V2ZW50VHlwZTphLGhhbmRsZXI6YixjYXB0dXJlOmcscGFzc2l2ZTpjfSl9QUgoKXtmb3IobGV0IGM9MDtjPHRoaXMua2EubGVuZ3RoO2MrKyl7dmFyIGE9dGhpcy5lbGVtZW50LGI9dGhpcy5rYVtjXTthLnJlbW92ZUV2ZW50TGlzdGVuZXI/YS5yZW1vdmVFdmVudExpc3RlbmVyKGIuZXZlbnRUeXBlLGIuaGFuZGxlcix0eXBlb2YgYi5wYXNzaXZlPT09ImJvb2xlYW4iP3tjYXB0dXJlOmIuY2FwdHVyZX06CmIuY2FwdHVyZSk6YS5kZXRhY2hFdmVudCYmYS5kZXRhY2hFdmVudChgb24ke2IuZXZlbnRUeXBlfWAsYi5oYW5kbGVyKX10aGlzLmthPVtdfX07dmFyIHp6YT0iY2xpY2sgZm9jdXNpbiBmb2N1c291dCBhdXhjbGljayBjaGFuZ2UgY29weSBkYmxjbGljayBiZWZvcmVpbnB1dCBpbnB1dCBrZXl1cCBrZXlkb3duIGtleXByZXNzIG1vdXNlZG93biBtb3VzZWVudGVyIG1vdXNlbGVhdmUgbW91c2Vtb3ZlIG1vdXNlb3V0IG1vdXNlb3ZlciBtb3VzZXVwIHBhc3RlIHBvaW50ZXJkb3duIHBvaW50ZXJlbnRlciBwb2ludGVybGVhdmUgcG9pbnRlcnVwIHRvdWNoc3RhcnQgdG91Y2htb3ZlIHRvdWNoZW5kIHRvdWNoY2FuY2VsIHRyYW5zaXRpb25jYW5jZWwgdHJhbnNpdGlvbmVuZCB0cmFuc2l0aW9ucnVuIHRyYW5zaXRpb25zdGFydCBhbmltYXRpb25jYW5jZWwgYW5pbWF0aW9uZW5kIGRyYWdvdmVyIGRyYWdlbnRlciBkcmFnbGVhdmUgZHJvcCBkcmFnc3RhcnQgZHJhZ2VuZCBzY3JvbGwgc3BlZWNoIi5zcGxpdCgiICIpLHl6YT0iY2xpY2sgZm9jdXNpbiBmb2N1c291dCBtb3VzZWRvd24gbW91c2VlbnRlciBtb3VzZWxlYXZlIG1vdXNlbW92ZSBtb3VzZW91dCBtb3VzZW92ZXIgbW91c2V1cCBwb2ludGVyZG93biBwb2ludGVyZW50ZXIgcG9pbnRlcmxlYXZlIHBvaW50ZXJ1cCB0b3VjaG1vdmUgZHJhZ292ZXIgZHJhZ2VudGVyIGRyYWdsZWF2ZSBkcm9wIGRyYWdzdGFydCBkcmFnZW5kIGNoYW5nZSBjb250ZXh0bWVudSBiZWZvcmVpbnB1dCBpbnB1dCBrZXlkb3duIGtleXByZXNzIGtleXVwIHNjcm9sbCB0b3VjaHN0YXJ0IHRvdWNoZW5kIHRvdWNoY2FuY2VsIHBhc3RlIHRyYW5zaXRpb25lbmQgYW5pbWF0aW9uY2FuY2VsIGFuaW1hdGlvbmVuZCIuc3BsaXQoIiAiKSwKQXphPVsiZm9jdXMiLCJibHVyIiwiZXJyb3IiLCJsb2FkIl07bkdhJiZMemEoKTtfLnJ6YSgpO18uaHNhKCk7Xy5Nc2EoImpzYSIse2luaXQ6Xy5jc2F9KTtmYygiUnJ1aEJlIiwiY2JRNENmIik7ZmMoIlRIaHFCIiwiY2JRNENmIik7ZmMoIk04SXpEIiwiZXFUOUsiKTtmYygibDhLUm8iLCJFV3BTSCIpO2ZjKCJFWDlsUmIiLCJwVUc3NmUiKTtmYygiZkVJbElmIiwicGZLWmciKTtmYygiRTZTNHRjIiwiUUtXR3pjIik7ZmMoInllemdJYyIsIkVXcFNIIik7Xy51WWE9Xy5rYygiSVBQY0FlIixbXSk7Xy52WWE9Xy5rYygiYzg3OVZlIixbXy51WWFdKTtfLlBxPV8ua2MoIlVGWmhCYyIsW18ucG9dKTtfLndZYT1fLmtjKCJVU2dGOGQiLFtfLlBxXSk7Xy54WWE9Xy5rYygiTWYzekViIixbXy53WWFdKTtfLnlZYT1fLmtjKCJRekc0b2QiLFtfLndZYSxfLnhZYV0pO2ZjKCJhTFVmUCIsIlA3WU9XZSIpO18uellhPV8ua2MoImFMVWZQIixbXy5wb10pO18uUXE9eGQoIlA3WU9XZSIsIndRbFl2ZSIsdm9pZCAwLF8uellhKTtfLkFZYT1fLmtjKCJpejdMaWQiLFtfLnlZYSxfLlFxXSk7ZmMoIklJZjVqYiIsIlFBR1p4ZCIpO2ZjKCJJU0kzZiIsInFBTUxrZiIpO2ZjKCJ5M0k1RGMiLCJxQU1Ma2YiKTtmYygiczVndElmIiwicUFNTGtmIik7ZmMoIkZNcUFXIiwicUFNTGtmIik7ZmMoInBZc2thZCIsInFBTUxrZiIpO2ZjKCJrSFZTVWIiLCJlTlM5QyIpO18uQllhPV8ua2MoImtIVlNVYiIsW10pO18uUnE9eGQoImVOUzlDIiwic1RzRE1jIix2b2lkIDAsXy5CWWEpO18uU3E9Xy5rYygiTEs0UHllIixbXy5ScV0pO18uQ1lhPV8ua2MoIkZDSnZaZCIsW18uU3FdKTtmYygic3RER29mIiwiVE5KdW1mIik7ZmMoIm9nbUJjZCIsInBqOElBZSIpO2ZjKCJHTnZzOWQiLCJzYUxCamYiKTtmYygieWRkR0NiIiwic2FMQmpmIik7Xy5EWWE9eGQoInNhTEJqZiIsIklUTnVmYiIpO2ZjKCJQODBSY2YiLCJzYUxCamYiKTtmYygiUmxwalpiIiwic2FMQmpmIik7Xy5FWWE9eGQoImk0Qm5FZiIsIkxYQThiIik7ZmMoInE3T2RLZCIsImk0Qm5FZiIpO18uRllhPV8ua2MoInE3T2RLZCIsW10pO18uaG0oXy5uZihfLkVZYSksXy5GWWEpO2ZjKCJSYWdEbGMiLCJhSUNhUmMiKTtfLkdZYT1fLmtjKCJSYWdEbGMiLFtdKTtmYygiQk80M2dkIiwiYUlDYVJjIik7Xy5IWWE9eGQoImFJQ2FSYyIsIm9VbG5wYyIsdm9pZCAwLF8uR1lhKTtmYygieDRGWVhlIiwidDlLeW5iIik7ZmMoInhRdFpiIiwiWTg0UkgiKTtmYygieFF0WmIiLCJySGpwWGQiKTtfLklZYT1fLmtjKCJ4UXRaYiIsW18ucG8sXy5NcGFdKTtfLkpZYT14ZCgickhqcFhkIiwicWRkZ0tlIiwidDlLeW5iIixfLklZYSk7ZmMoInNpS25RZCIsIk84azFDZCIpO18uS1lhPV8ua2MoInNpS25RZCIpO18uTFlhPXhkKCJPOGsxQ2QiLCJ3UjVGUmIiLCJvQWVVMGMiLF8uS1lhKTtfLk1ZYT14ZCgicEI2WnFkIiwicFhkUlliIiwiUEZiWjYiKTtmYygiaGM2VWJkIiwieHMxR3kiKTtfLlRxPV8ua2MoImhjNlViZCIsW18uR3EsXy5aVmFdKTtmYygiU3BzZlNiIiwibzAySmllIik7Xy5OWWE9Xy5rYygiU3BzZlNiIixbXy5HcSxfLlRxLF8ueGksXy5XcF0pO18uT1lhPXhkKCJvMDJKaWUiLCJkSW9TQmIiLCJseFYyVWMiLF8uTllhKTtmYygiemJNTDNjIiwiYnFOSlciKTtfLlBZYT1fLmtjKCJ6Yk1MM2MiLFtfLk1ZYSxfLk9ZYSxfLkpZYSxfLkxZYSxfLnBvXSk7Xy5VcT14ZCgidWlOa2VlIiwiZUJBZVNiIiwiTUtMaEdjIixfLlBZYSwiQnd1ZWgiKTtmYygiQ2s2M3RiIiwiTUtMaEdjIik7ZmMoInV4TXBVIiwicmhmUTVjIik7Xy5RWWE9Xy5rYygidmdiaUtiIixbXSk7Xy5SWWE9eGQoImNsWXhaIiwiV2w1NWliIix2b2lkIDAsXy5RWWEpO18uV3E9eGQoImFDWHRSZCIsIllWNWJlZSIpO2ZjKCJJdlBaNmQiLCJhQ1h0UmQiKTtmYygiSXZQWjZkIiwiR05iT2QiKTtmYygiTWtIeUdkIiwiVDZzVHNmIik7Xy5TWWE9Xy5rYygiTWtIeUdkIixbXy5wbyxfLlVxXSk7Xy5YcT14ZCgiVDZzVHNmIiwia2JBbTlkIiwibGhEWTZjIixfLlNZYSk7ZmMoInd3MDREZiIsIlBZaVhxZiIpO18uVFlhPV8ua2MoInd3MDREZiIsW10pO18uVVlhPXhkKCJQWWlYcWYiLCJwajgybGUiLHZvaWQgMCxfLlRZYSk7ZmMoInZWVnpqYiIsImthY1d2YyIpO18uVllhPV8ua2MoInZWVnpqYiIpO18uV1lhPXhkKCJrYWNXdmMiLCJUcm9aMWQiLCJCQzRrQmMiLF8uVllhKTtfLlhZYT1fLmtjKCJKWm1XOWUiLFtfLldZYSxfLlVZYV0pO18uWVlhPXhkKCJIblUwZ2YiLCJEa2s2Z2UiLHZvaWQgMCxfLlhZYSk7Xy5ZcT1fLmtjKCJBTnluMSIpO2ZjKCJVNE16S2MiLCJYQW1tTmIiKTtfLlpZYT1fLmtjKCJVNE16S2MiLFtfLllxLF8uVXEsXy5QcSxfLnBvXSk7Xy4kWWE9eGQoIlhBbW1OYiIsImc4bmt4Iix2b2lkIDAsXy5aWWEpO18uYVphPV8ua2MoIkl2UFo2ZCIsW18uWHEsXy4kWWEsXy5ZWWEsXy5TcSxfLlJZYV0pO18uaG0oXy5uZihfLldxKSxfLmFaYSk7dmFyIGJaYT14ZCgiR05iT2QiLCJVVnpiOWMiLHZvaWQgMCx2b2lkIDAsIkE4Q2dzZCIpO18uaG0oXy5uZihiWmEpLF8uYVphKTtmYygiT1hUcUZiIiwidjMwQXRmIik7Xy5acT1fLmtjKCJrUXZsZWYiLFtfLnBvXSk7ZmMoIlBaSUlNYyIsIkF5NXhqYyIpO18uY1phPV8ua2MoIlBaSUlNYyIpO18uZFphPXhkKCJBeTV4amMiLCJ2ZlZ3UGQiLCJnOWl2amUiLF8uY1phKTtmYygiZHQ0ZzJiIiwiYlR1RzZiIik7ZmMoIlZ2TFZRZCIsImJUdUc2YiIpO18uZVphPV8ua2MoIlZ2TFZRZCIsW10pO18uT2MoXy5lWmEpO18uJHE9eGQoImJUdUc2YiIsInc5dzg2ZCIsdm9pZCAwLF8uZVphKTtfLk9jKF8uJHEpO2ZjKCJwbk9VTGQiLCJac2plYWMiKTtmYygia0YybzJiIiwid3Z4YWVmIik7ZmMoImtGMm8yYiIsIkRUMGlHYiIpO18uZlphPV8ua2MoImtGMm8yYiIsW10pO18uZ1phPXhkKCJ3dnhhZWYiLCJsaUF6N2QiLHZvaWQgMCxfLmZaYSk7Xy5oWmE9Xy5rYygicG5PVUxkIixbXy5acSxfLmdaYV0pO3ZhciBpWmE9eGQoInV1UndrIiwiazFPMHJmIix2b2lkIDAsdm9pZCAwLCJac2plYWMiKTtfLmhtKF8ubmYoaVphKSxfLmhaYSk7ZmMoIkZPTkVkZiIsImNpdHlSIik7ZmMoImxMUVdGZSIsIlU2UkRQZSIpO3ZhciBqWmE9Xy5rYygibExRV0ZlIik7Xy5rWmE9eGQoIlU2UkRQZSIsImR0bDBoZCIsIlFuTnpLZiIsalphKTtmYygidGFmUHJmIiwiVTZSRFBlIik7ZmMoIlE3QmFFZSIsImFyTUFkZiIpO2ZjKCJKaVZMamQiLCJjaXR5UiIpO2ZjKCJaMVJnMCIsImNpdHlSIik7Xy5sWmE9Xy5rYygiWjFSZzAiLFtdKTtfLm1aYT14ZCgiY2l0eVIiLCJlSERmbCIsdm9pZCAwLF8ubFphKTtmYygiZE1aazNlIiwiZko1MDhkIik7ZmMoIlR0Y090ZSIsIm9BZVUwYyIpO18ublphPV8ua2MoIlR0Y090ZSIsW10pO2ZjKCJaZ0dnOWIiLCJseFYyVWMiKTtfLm9aYT1fLmtjKCJaZ0dnOWIiLFtdKTt2YXIgcFphLHFaYTtwWmE9bnVsbDtxWmE9bmV3IFNldChbMV0pO18uclphPXtiTmM6YT0+e3BaYT1hO3JldHVybiBfLnJaYX0sTFRiOigpPT5wWmEsd1ZiOigpPT5fLnJaYS5MVGIoKSE9bnVsbCxYTWM6YT0+e3FaYT1uZXcgU2V0KGEpO3JldHVybiBfLnJaYX0saHdjOigpPT5xWmF9O18uclphLlhNYyhbMl0pLmJOYygidmlldyIpO18uaG0oXy5uZihfLk9ZYSksXy5vWmEpO18uaG0oXy5uZihfLkxZYSksXy5uWmEpO2ZjKCJKS29LVmUiLCJQRmJaNiIpO2ZjKCJMc2ZHU2QiLCJQRmJaNiIpO2ZjKCJUaWE1N2IiLCJjNnhuN2IiKTtfLnNaYT1fLmtjKCJUaWE1N2IiLFtdKTtfLnRaYT14ZCgiYzZ4bjdiIiwiS3BSQXVlIix2b2lkIDAsXy5zWmEpO2ZjKCJkUEZaSCIsIkRXNTNEIik7Xy5hcj1fLmtjKCJnc2tCRWMiLFtfLlBxLF8uWnEsXy5QWWFdKTtfLnVaYT1fLmtjKCJkUEZaSCIsW18uYXJdKTtfLnZaYT14ZCgiRFc1M0QiLCJuSnc0R2QiLHZvaWQgMCxfLnVaYSk7ZmMoIk5LMG54IiwiRFc1M0QiKTtmYygieFNrdlllIiwiYzZ4bjdiIik7Xy53WmE9eGQoIkpYV3ZPIiwiY29KOGUiKTtmYygiS3ZvVzgiLCJKWFd2TyIpO2ZjKCJmVGZHTyIsImJJZjhpIik7Xy54WmE9Xy5rYygiZlRmR08iKTtfLnlaYT14ZCgiYklmOGkiLCJTTURMNGMiLCJMS045c2UiLF8ueFphLCJvV09sRGIiKTtfLnpaYT14ZCgib1dPbERiIiwib1NVTnlkIiwiRDVnaldlIixfLnhaYSk7ZmMoIkVFRE9SYiIsIkpiak1rZiIpO2ZjKCJQb0VzOWIiLCJKYmpNa2YiKTtfLkFaYT1fLmtjKCJQb0VzOWIiKTtfLk9jKF8uQVphKTtfLkJaYT14ZCgiSmJqTWtmIiwiUGpwbHVkIiwiQlVzTmkiLF8uQVphKTtfLk9jKF8uQlphKTtmYygiSHZyZXVlIiwidEJzVlZjIik7ZmMoImNuakVDZiIsImdjaEVZIik7ZmMoImNuakVDZiIsImtqa3lrZCIpO2ZjKCJCV3ROaiIsImZSTFRkIik7Xy5DWmE9Xy5rYygiQld0TmoiLFtdKTt2YXIgRFphPXhkKCJ0V2hiamMiLCJLZElIZWYiLHZvaWQgMCx2b2lkIDAsImZSTFRkIik7Xy5uZihEWmEpO18uaG0oXy5uZihEWmEpLF8uQ1phKTtmYygiQ295dUZiIiwieHhnQXljIik7ZmMoIkNveXVGYiIsIkFBQjRNZSIpO2ZjKCJDb3l1RmIiLCJ2a0t1cGMiKTtmYygidlpyMnJiIiwiajZNVmJlIik7ZmMoInZacjJyYiIsIkRPc0RYZCIpO2ZjKCJuTnhrWWQiLCJFV3BTSCIpO2ZjKCJEdm43ZmUiLCJEcm5PeGUiKTtmYygicm5aVmZkIiwibWpYRVoiKTtmYygicm5aVmZkIiwibzUwY1JjIik7ZmMoIkhyNWFoIiwiRFdiZGJjIik7ZmMoIkhyNWFoIiwid01kN2pjIik7ZmMoIndXTWhnIiwiT0w3ZEViIik7ZmMoIndXTWhnIiwiWFdCSVkiKTtmYygid1dNaGciLCJoUzh3RmIiKTtfLkVaYT1fLmtjKCJ2TnpLSGQiLFtdKTtfLkZaYT1fLmtjKCJ3V01oZyIsW18uRVphLF8uUHFdKTt4ZCgiWFdCSVkiLCJTTms0SmUiLHZvaWQgMCxfLkZaYSk7ZmMoIlpvU3ZyYyIsImVxVDlLIik7ZmMoImFEOE9FZSIsInBPY2VJYyIpO2ZjKCJzMGo3QyIsIktxaE41ZCIpO2ZjKCJpU1pJNmIiLCJFV3BTSCIpO2ZjKCJPSU1IeGUiLCJFV3BTSCIpO2ZjKCJwQ2tVaWIiLCJHUmVFQ2QiKTtmYygiTXNqd3NiIiwiSVJYQVgiKTtmYygiUVE1MUNlIiwiSVJYQVgiKTtmYygiZzQ4UDdkIiwiYlllMTkiKTtmYygiWFY2N0tiIiwiYlllMTkiKTtmYygid1pHZlFiIiwiYlllMTkiKTtmYygielVCbjdiIiwiZVRrdGJmIik7ZmMoInpVQm43YiIsIk50ZUMxZSIpO2ZjKCJaYnk4cmYiLCJrNWRHRGYiKTtmYygidVV6TUYiLCJrNWRHRGYiKTtmYygiZU9QcTFiIiwibndmcGxmIik7ZmMoIkJuaW1iZCIsInhPc1N0ZiIpO2ZjKCJsSHJBSiIsIlpwc0FuZiIpO2ZjKCJiT0M4dmUiLCJXUDEyNiIpO2ZjKCJlWDV1cmUiLCJvVHdWcGQiKTtmYygiUUUxYndkIiwiZVRrdGJmIik7ZmMoIlFFMWJ3ZCIsInA3NUFoZiIpO2ZjKCJBaDdjTGQiLCJlVGt0YmYiKTtmYygiQWg3Y0xkIiwiaFgzM0tjIik7ZmMoIldPSmpaIiwiZVRrdGJmIik7ZmMoIldPSmpaIiwiTnRlQzFlIik7ZmMoIkVWU2lsZSIsImVUa3RiZiIpO2ZjKCJkcExtcSIsIlpwc0FuZiIpO2ZjKCJkcExtcSIsInRJWVR2YiIpO2ZjKCJkcExtcSIsIktxaE41ZCIpO2ZjKCJET2VrQ2QiLCJXQXNCZmUiKTtmYygiSENwYm9mIiwiTDVtNHBlIik7ZmMoIlJqMDBWYyIsImVUa3RiZiIpO2ZjKCJESWRqZGMiLCJFV3BTSCIpO2ZjKCJwZ0NYcWIiLCJLcWhONWQiKTtmYygiaTlTTkJmIiwiZUlEMTBkIik7ZmMoIk9aTGd1YyIsIk15THNEZSIpO2ZjKCJLZFhabGQiLCJaMlZUamQiKTtmYygid2pycEJkIiwieU52cUMiKTtmYygid2pycEJkIiwibUp1alljIik7ZmMoIkdJWWlnZiIsImQyN1NRZSIpO2ZjKCJuWUNuRWQiLCJEaXlhbWYiKTtmYygiYWVDVERmIiwiRGl5YW1mIik7ZmMoIlUydXRnZSIsImZlWHYyZCIpO2ZjKCJUOVJ6emQiLCJhd2JydWYiKTtmYygiWmZBb3oiLCJyaGZRNWMiKTtmYygiRzVzQmxkIiwiYXdicnVmIik7ZmMoInlEVlZrYiIsInJoZlE1YyIpO2ZjKCJpdnVsS2UiLCJNSDhLd2QiKTtmYygiU2Rjd0hiIiwiQ0JsUnhmIik7ZmMoIlNkY3dIYiIsImRvS3M0YyIpO2ZjKCJPMUdqemUiLCJPOGsxQ2QiKTtmYygiRkI4UjQiLCJmZVh2MmQiKTtmYygiVzU2eWpiIiwiZmVYdjJkIik7ZmMoInlLWDdKYyIsIloyVlRqZCIpO2ZjKCJUVFRLQmYiLCJFV3BTSCIpO2ZjKCJsaW11biIsIkVXcFNIIik7ZmMoImVIcUNFYiIsImZlWHYyZCIpO2ZjKCJUeTlMdmQiLCJmZVh2MmQiKTtmYygiTk5jbUJjIiwiak5ySXNmIik7ZmMoImZxMlFPYiIsImZlWHYyZCIpO2ZjKCJwUmgwRWYiLCJmZVh2MmQiKTtmYygiS1VvRnVmIiwiZmVYdjJkIik7ZmMoIlJFdHg2YiIsImZlWHYyZCIpO2ZjKCJiTU5PZmUiLCJmZVh2MmQiKTtmYygiRTRNakVmIiwiZmVYdjJkIik7ZmMoImRYZU1qYiIsImZlWHYyZCIpO2ZjKCJjVkJuQWUiLCJmZVh2MmQiKTtmYygicFE2bThkIiwiZmVYdjJkIik7ZmMoInJXUUhlZiIsImZlWHYyZCIpO2ZjKCJVSWNVOGIiLCJmZVh2MmQiKTtmYygiU3VFb0RlIiwiRUdiNjNjIik7Xy5HWmE9Xy5rYygiU3VFb0RlIixbXSk7Xy5IWmE9eGQoIkVHYjYzYyIsIm5yRGN3Iix2b2lkIDAsXy5HWmEpO2ZjKCJ5N2NHT2UiLCJIZ3BPa2IiKTtmYygicmRHRWZjIiwia25tbGFjIik7ZmMoIk8xVHp3YyIsIkViTFhWYyIpO18uSVphPV8ua2MoIk8xVHp3YyIpO18uSlphPXhkKCJFYkxYVmMiLCJGbXY5TmMiLCJVQUlwSWIiLF8uSVphKTtfLktaYT1fLmtjKCJyZEdFZmMiLFtfLkpaYSxfLkhaYV0pO18uTFphPXhkKCJrbm1sYWMiLCJzWm1kdmMiLHZvaWQgMCxfLktaYSwiSGdwT2tiIik7Xy5NWmE9Xy5rYygieTdjR09lIixbXy5MWmFdKTtfLk5aYT1fLmtjKCJaenhxZGQiKTtmYygiYnZCQ2siLCJKcmFGRmUiKTtmYygiUVdFTzViIiwiSnJhRkZlIik7Xy5PWmE9Xy5rYygiUVdFTzViIik7Xy5QWmE9eGQoIkpyYUZGZSIsImhLNjdxYiIsImV3OU1GZiIsXy5PWmEpO2ZjKCJ3ZExBbWUiLCJFYkxYVmMiKTtmYygiSFlzdnciLCJFYkxYVmMiKTtmYygiU0pNdjFjIiwiRWJMWFZjIik7Xy5RWmE9Xy5rYygiZGV3algiLFtfLnhpLF8uTlphLF8uUFphXSk7ZmMoIklUTnVnZSIsImUxM3BQYiIpO2ZjKCJDWm1BYmQiLCJmZVh2MmQiKTtmYygiSElyTWxjIiwiYlQxNnBiIik7Xy5SWmE9Xy5rYygiYVczcFkiKTtfLk9jKF8uUlphKTtfLmJyPV8ua2MoImZnajhSYiIsW18uV3AsXy54aSxfLlJaYV0pO18uU1phPV8ua2MoIkhJck1sYyIsW18uUFlhLF8uYnJdKTtmYygiUjJ0Q3RiIiwiYlQxNnBiIik7Xy5UWmE9Xy5rYygiUjJ0Q3RiIixbXy5wbyxfLlNaYV0pO18uVVphPXhkKCJiVDE2cGIiLCJ2RVlDTmIiLHZvaWQgMCxfLlRaYSk7ZmMoIlZzSWZmZCIsImJUMTZwYiIpO2ZjKCJRV2ZlS2YiLCJLR3lZaGYiKTtfLlZaYT1fLmtjKCJRV2ZlS2YiLFtfLlFaYV0pO18uV1phPXhkKCJLR3lZaGYiLCJSNElJSWIiLCJiaGRXMWQiLF8uVlphKTtmYygiRmFxc1ZkIiwiYlQxNnBiIik7ZmMoIkU2Zm96ZSIsImZlWHYyZCIpO2ZjKCJxbWxSTWIiLCJmZVh2MmQiKTtmYygiRTViRnNlIiwicUJlWWdjIik7Xy5YWmE9Xy5rYygiRTViRnNlIixbXy5NWmFdKTtfLllaYT14ZCgicUJlWWdjIiwiQk14QUdjIiwiZ3VScnVjIixfLlhaYSk7ZmMoIlVWNmh1YiIsInFCZVlnYyIpO2ZjKCJ6UEpWaGMiLCJmZVh2MmQiKTtmYygiSk5kdDljIiwiZmVYdjJkIik7ZmMoIk9jTkdrZiIsIkpLZUJOZSIpO2ZjKCJXZjBRSGQiLCJmZVh2MmQiKTtmYygic0N3b1ZjIiwiTlIyUEpiIik7ZmMoInNpSEpKYiIsIk5SMlBKYiIpO18uWlphPV8ua2MoImFCUkRnZSIsW10pO2ZjKCJMOEtHeGUiLCJQNGZRV2QiKTtfLiRaYT1fLmtjKCJMOEtHeGUiLFtfLnBvXSk7Xy5jcj14ZCgiUDRmUVdkIiwid1Y1UGpjIix2b2lkIDAsXy4kWmEsIkpqN3NMZSIpO18uYV9hPV8ua2MoImtOMVNpYyIsW10pO18uYl9hPV8ua2MoIlpOS0ZHZiIsW18uY3IsXy5hX2EsXy5aWmFdKTtmYygiTnpLQzliIiwiTk9haVVlIik7ZmMoImcxR3hKZSIsIm1WS21ZIik7ZmMoInNNN3hvZCIsImVxVDlLIik7ZmMoInNNN3hvZCIsImVxVDlLIik7ZmMoIm45U3NjZiIsIk5PYWlVZSIpO2ZjKCJjbEtpVGUiLCJMWU12WCIpO2ZjKCJwSjE1MiIsIkVXcFNIIik7ZmMoInBKMTUyIiwiWnBzQW5mIik7ZmMoInV0RzZpZCIsInl5bGdRYyIpO2ZjKCJ1dEc2aWQiLCJKY3QxdCIpO2ZjKCJhVjNHWmMiLCJOT2FpVWUiKTtmYygicnlwV3hkIiwiamZhZEtjIik7ZmMoIklLcUpiZiIsInl5bGdRYyIpO2ZjKCJJS3FKYmYiLCJKY3QxdCIpO2ZjKCJRcXQzR2YiLCJ5eWZYZWUiKTtfLmNfYT1fLmtjKCJRcXQzR2YiLFtdKTtmYygiT25sWERiIiwieXlmWGVlIik7Xy5kX2E9eGQoInl5ZlhlZSIsImRMbGoyIix2b2lkIDAsXy5jX2EpO2ZjKCJXbjNhRWMiLCJHR05PeGMiKTtfLmVfYT14ZCgiR0dOT3hjIiwicktvRzVlIik7ZmMoImF3MnVoZCIsInJxdnlRZSIpO2ZjKCJhdzJ1aGQiLCJlcVQ5SyIpO2ZjKCJyaEhvMSIsIkVXcFNIIik7ZmMoIkdhVEd6ZSIsIk9OQWVhYyIpO2ZjKCJkaXpSR2YiLCJaMlZUamQiKTtmYygiT1E0NndlIiwieXJadG5lIik7ZmMoIlFLQmZOIiwieXJadG5lIik7ZmMoImx4eGpZZSIsImNzc0FyZSIpO2ZjKCJhOTl3WiIsInVIcTdUZSIpO2ZjKCJraGtOcGUiLCJ1SHE3VGUiKTt2YXIgZl9hPXhkKCJ4SDlsdWQiLCJuRTZPSmYiLHZvaWQgMCx2b2lkIDAsIm9wQ0dTIik7ZmMoIkZpNHJzYyIsIm9wQ0dTIik7Xy5nX2E9Xy5rYygiRmk0cnNjIixbXSk7Xy5obShfLm5mKGZfYSksXy5nX2EpO3ZhciBoX2E9eGQoImxGWndYZSIsIlc5UVNRZSIsdm9pZCAwLHZvaWQgMCwiT2pQSGJmIik7Xy5pX2E9Xy5rYygieW5DV3djIixbXSk7Xy5obShfLm5mKGhfYSksXy5pX2EpO2ZjKCJkd1FjdiIsIk5PYWlVZSIpO2ZjKCJHbzJVaGQiLCJFV3BTSCIpO2ZjKCJkcDZKTWMiLCJmSEsyT2MiKTtmYygiRDBtbk1kIiwiSHdWazhiIik7ZmMoIkQwbW5NZCIsIk1lR3BZZCIpO18ual9hPXhkKCJId1ZrOGIiLCJDSVpUR2IiKTtfLk9jKF8ual9hKTtmYygiS3FoeWtiIiwiSHdWazhiIik7ZmMoIktxaHlrYiIsIk1lR3BZZCIpO18ua19hPV8ua2MoIktxaHlrYiIsW10pO18uT2MoXy5rX2EpO3ZhciBsX2E9eGQoIk1lR3BZZCIsImhWaWMxYiIsdm9pZCAwLHZvaWQgMCwiUk1DU2NiIik7Xy5obShfLm5mKGxfYSksXy5rX2EpO2ZjKCJoZGxrUWMiLCJpcWxkRGUiKTtmYygiR0FLQnNjIiwiaXFsZERlIik7ZmMoIlhmVzlMZSIsImlxbGREZSIpO2ZjKCJIRmVjZ2YiLCJpcWxkRGUiKTtmYygiaFFJSDVkIiwiaXFsZERlIik7ZmMoInl5eGlHYyIsImlxbGREZSIpO2ZjKCJNNUNtNGIiLCJOT2FpVWUiKTtfLm1fYT1fLmtjKCJZUHhRYWQiLFtfLlRvXSk7ZmMoIkVOaXBNZSIsInJxdnlRZSIpO2ZjKCJ4dXAyayIsIk5PYWlVZSIpO2ZjKCJ4dXAyayIsIkdiZEt0ZSIpO2ZjKCJRSE1BYWYiLCJOT2FpVWUiKTtmYygiUUhNQWFmIiwiR2JkS3RlIik7ZmMoIkVEUFhaYiIsIk5PYWlVZSIpO2ZjKCJFRFBYWmIiLCJHYmRLdGUiKTtmYygidmhGWmxlIiwiTk9haVVlIik7ZmMoInZoRlpsZSIsIkdiZEt0ZSIpO18ubl9hPXhkKCJBQXRYV2IiLCJyZGV4S2YiKTtfLm9fYT1fLmtjKCJ2aEZabGUiLFtfLm5fYV0pO2ZjKCJwV09iUWUiLCJOT2FpVWUiKTtmYygicFdPYlFlIiwiR2JkS3RlIik7ZmMoIkd2Y1VwZSIsIk5PYWlVZSIpO2ZjKCJHdmNVcGUiLCJHYmRLdGUiKTtmYygibGZUR25iIiwiTk9haVVlIik7Xy5wX2E9Xy5rYygibGZUR25iIixbXy5uX2FdKTtfLnFfYT14ZCgieWY2blBjIiwiRVNyUFFjIik7Xy5yX2E9Xy5rYygicGNlajJlIixbXy5jcl0pO2ZjKCJtTlRKdmMiLCJ5ZjZuUGMiKTtfLnNfYT1fLmtjKCJBNFVyZWYiLFtdKTtfLnRfYT1fLmtjKCJXdGR5QWUiLFtdKTtfLnVfYT1fLmtjKCJtTlRKdmMiLFtfLkNZYSxfLnlZYSxfLnVZYSxfLkFZYSxfLnNfYSxfLnRfYSxfLnJfYV0pO18uaG0oXy5uZihfLnFfYSksXy51X2EpO2ZjKCJGRWtLRCIsIkFBdFhXYiIpO18udl9hPV8ua2MoInF6SGMxZSIsW10pO18ud19hPV8ua2MoIkQ5aXdmIixbXSk7Xy54X2E9Xy5rYygiVk55WXpiIixbXy5tX2EsXy5UbyxfLlBxXSk7Xy55X2E9Xy5rYygiRkVrS0QiLFtfLnVZYSxfLnZZYSxfLndZYSxfLnhZYSxfLndfYSxfLnZfYSxfLlBxLF8ueF9hXSk7Xy5obShfLm5mKF8ubl9hKSxfLnlfYSk7ZmMoIk9IQjhxZCIsIk5PYWlVZSIpO2ZjKCJzVVlNdmQiLCJOT2FpVWUiKTtmYygiZkhDaGJkIiwiTk9haVVlIik7ZmMoIldIWUlOZSIsIm5GR3lMZCIpO2ZjKCJjRVNFbmYiLCJwT2plT2UiKTtmYygiS2dPVWZiIiwicE9qZU9lIik7ZmMoIlhSNkd4ZCIsInBPamVPZSIpO2ZjKCJYUjZHeGQiLCJocjEzTCIpO2ZjKCJwSjhjOWMiLCJ5SFRyOCIpO2ZjKCJiNG10U2UiLCJOT2FpVWUiKTtfLnpfYT1fLmtjKCJEcGVtNWMiLFtdKTtmYygiRnkxUHYiLCJLcWhONWQiKTtmYygiclR1QU5lIiwiQ3Z0NkZkIik7ZmMoIk5WbG5FIiwiUHlVQ3VmIik7Xy5BX2E9eGQoIkZ0VWZJZSIsInZSbE12ZiIsdm9pZCAwLHZvaWQgMCwiTk9haVVlIik7ZmMoIkl3OVhvIiwiRnRVZkllIik7Xy5CX2E9Xy5rYygiSXc5WG8iLFtdKTtfLmRyPXhkKCJtMzhwS2UiLCJtV3pzOWMiLHZvaWQgMCx2b2lkIDAsIk1LTGhHYyIpO18uQ19hPV8ua2MoIlA5dkRoYyIsW10pO18uRF9hPV8ua2MoInN6Rk5LYyIsW10pO18uRV9hPV8ua2MoImNvT2RIYyIsW10pO2ZjKCJmejV1a2YiLCJtMzhwS2UiKTtmYygiU00xbG1kIiwidWlOa2VlIik7Xy5GX2E9Xy5rYygiU00xbG1kIixbXy5KWWFdKTtmYygid0l0YWRiIiwiZGM5UXRmIik7Xy5HX2E9Xy5rYygid0l0YWRiIixbXy5GX2FdKTtfLkhfYT14ZCgiZGM5UXRmIiwib2tVYVVkIix2b2lkIDAsXy5HX2EpO18uSV9hPV8ua2MoImZ6NXVrZiIsW18uSF9hLF8uQ19hLF8uY3IsXy5EX2EsXy5FX2FdKTtfLmhtKF8ubmYoXy5kciksXy5JX2EpO18uaG0oXy5uZihfLkFfYSksXy5CX2EpO2ZjKCJuVFU0TyIsIm03V3kxZSIpO2ZjKCJKSXJ0SGQiLCJqZmFkS2MiKTtmYygiaEJDSDdjIiwiTk9haVVlIik7ZmMoIm5WUGxOZCIsIk5PYWlVZSIpO2ZjKCJqTHFXSWMiLCJOT2FpVWUiKTtmYygiQ0lUOVRlIiwiTk9haVVlIik7ZmMoIlI1QnBQIiwiTk9haVVlIik7ZmMoIkhKaHFNZSIsIk5PYWlVZSIpO2ZjKCJjUFBINWUiLCJOT2FpVWUiKTtmYygicW9kTEFlIiwicnF2eVFlIik7ZmMoImI1bGh2YiIsIk5PODRnZCIpO2ZjKCJiNWxodmIiLCJqMzdiYWYiKTtfLkpfYT1fLmtjKCJFOU02VWMiLFtdKTtfLktfYT1fLmtjKCJtYTR4RyIsW10pO18uTF9hPV8ua2MoImI1bGh2YiIsW18uS19hLF8uSl9hXSk7Xy5NX2E9eGQoImozN2JhZiIsIklvR2xDZiIpO18uaG0oXy5uZihfLk1fYSksXy5MX2EpO18uTl9hPV8ua2MoImc5eHZSZCIsW18uYl9hXSk7Xy5PX2E9Xy5rYygibUdDdG9iIixbXSk7Xy5QX2E9Xy5rYygiaU5MY2JlIixbXSk7Xy5RX2E9eGQoImQ4ajJDYyIsIlNuYWhyZSIsdm9pZCAwLF8uUF9hKTtfLmhtKF8ubmYoXy5RX2EpLF8uT19hKTtmYygiTVQwWkJkIiwiTzdHNGFmIik7Xy5SX2E9Xy5rYygiTVQwWkJkIixbXSk7Xy5TX2E9Xy5rYygiUkhucnBiIixbXSk7Xy5UX2E9eGQoIk83RzRhZiIsInlpTDVBYiIsdm9pZCAwLF8uU19hKTtfLmhtKF8ubmYoXy5UX2EpLF8uUl9hKTtmYygiYXVFYVZlIiwiZXFUOUsiKTtmYygiRzdKMUlmIiwiamZhZEtjIik7Xy5VX2E9Xy5rYygiWExKZGtlIixbXSk7Xy5WX2E9Xy5rYygieU1wQmNiIixbXy5QcV0pO18uZXI9eGQoIm1PWnJzZCIsIk9vSzV2Iix2b2lkIDAsXy5VX2EpO18uZDBhPV8ua2MoIlF2aGxBZSIsW10pO18uZTBhPXhkKCJYdzYxNCIsInJtV2FqIix2b2lkIDAsXy5kMGEpO2ZjKCJQTVM2U2QiLCJYdzYxNCIpO18uZjBhPV8ua2MoIlBNUzZTZCIsW18uZXJdKTtmYygiU3A2OU8iLCJtT1pyc2QiKTtfLmcwYT1fLmtjKCJtSTNMRmIiKTtmYygibGF6RzdiIiwicUNTWVdlIik7Xy5oMGE9Xy5rYygibGF6RzdiIixbXy5nMGFdKTtfLmZyPV8ua2MoIldxNmx4ZiIsW18uaDBhXSk7Xy5pMGE9Xy5rYygiU3A2OU8iLFtfLldxLF8uVl9hLF8uU3EsXy5mcixfLk5fYSxfLmJfYSxfLlFfYV0pO18uaG0oXy5uZihfLmVyKSxfLmkwYSk7Xy5obShfLm5mKF8uZTBhKSxfLmYwYSk7ZmMoIkJKNDZvIiwiUld0REZmIik7ZmMoIndWdjJ4ZiIsIk5PYWlVZSIpO2ZjKCJTZmM1QyIsIk5PYWlVZSIpO2ZjKCJrMFNSaWUiLCJOT2FpVWUiKTtmYygieEFiMFRjIiwiTk9haVVlIik7ZmMoIlc0eWRHZSIsImpmYWRLYyIpO2ZjKCJScU9wUWQiLCJlcVQ5SyIpO2ZjKCJlOEV6bGYiLCJFV3BTSCIpO2ZjKCJPWnFHdGUiLCJhemxFM2UiKTtmYygiYkZPdlRjIiwiYXpsRTNlIik7Xy5qMGE9Xy5rYygiYkZPdlRjIixbXSk7Xy5rMGE9eGQoImF6bEUzZSIsIktPeGNLIix2b2lkIDAsXy5qMGEpO2ZjKCJwNXJQNiIsIk5PYWlVZSIpO2ZjKCJFTzEzcGQiLCJtYTR4RyIpO2ZjKCJMOEJHc2MiLCJOT2FpVWUiKTtfLmdyPV8ua2MoImJ0ZHB2ZCIpO18ubDBhPV8ua2MoIk1JMmZWYiIsW18uZ3JdKTtfLmhyPV8ua2MoIlJyNU5PZSIsW18ueGksXy5mcl0pO18ubTBhPV8ua2MoIkw4QkdzYyIsW18uR3EsXy5sMGEsXy5jeWEsXy5ocixfLmZyXSk7ZmMoIk9YMlBnYiIsIm03V3kxZSIpO2ZjKCJWZWxpbCIsImtEZWFHIik7ZmMoIlZlbGlsIiwiUWVGSnZmIik7ZmMoImpORmRpZiIsImtEZWFHIik7ZmMoImpORmRpZiIsIlFlRkp2ZiIpO2ZjKCJpZlhuRGIiLCJRZUZKdmYiKTtmYygib0lyS0JmIiwicndmN00iKTtmYygiWjQxSEkiLCJFV3BTSCIpO2ZjKCJXcXRmeiIsIklSWEFYIik7ZmMoIkoxeE5IYiIsIlFMdFREYyIpO2ZjKCJReGF1WWMiLCJOYzNndGMiKTtmYygialJMYlkiLCJOT2FpVWUiKTtmYygiU3JNcG9iIiwiWnBzQW5mIik7ZmMoIlNyTXBvYiIsInRJWVR2YiIpO2ZjKCJCOGJhd2IiLCJkMjdTUWUiKTtmYygiQUd2b2ljIiwiZDI3U1FlIik7ZmMoIm1lMURLYiIsImQyN1NRZSIpO2ZjKCJKdGxMQWUiLCJkMjdTUWUiKTtmYygicGVHNSIsIkRub1JsYiIpO2ZjKCJldEdQNGMiLCJEbm9SbGIiKTtmYygiWllaZGRkIiwiRG5vUmxiIik7ZmMoIklXTkhyZiIsIlI5d3lmIik7ZmMoIk1VSXlSZCIsIlI5d3lmIik7ZmMoImZSRUM3ZCIsIlI5d3lmIik7ZmMoIkNXNUZaZSIsIm81MGNSYyIpO2ZjKCJVZWZPbWIiLCJjeE5Td2IiKTtmYygicVk4UEZlIiwibVJRcUUiKTtfLm4wYT1fLmtjKCJxWThQRmUiKTtfLm8wYT14ZCgibVJRcUUiLCJ0clpMMGIiLCJJaDBTOCIsXy5uMGEpO2ZjKCJTbDBweGQiLCJZUmRlY2QiKTtmYygibkZDbHJmIiwiY3hOU3diIik7Xy5wMGE9Xy5rYygibkZDbHJmIixbXSk7Xy5pcj14ZCgiY3hOU3diIiwiZU8zbHNlIix2b2lkIDAsXy5wMGEpO2ZjKCJRdHB4YmQiLCJZUmRlY2QiKTtfLnEwYT1fLmtjKCJRdHB4YmQiLFtdKTtfLnIwYT14ZCgiWVJkZWNkIiwiemFJZ1BiIix2b2lkIDAsXy5xMGEpO2ZjKCJpQW1yU2QiLCJkYW1rSmIiKTtfLnMwYT1fLmtjKCJpQW1yU2QiLFtdKTtfLk9jKF8uczBhKTtfLnQwYT14ZCgiZGFta0piIiwiaDNNWW9kIix2b2lkIDAsXy5zMGEsIkpqN3NMZSIpO2ZjKCJYeTUwemYiLCJmWFFqamMiKTtmYygianBhdlVlIiwiZlhRampjIik7Xy51MGE9Xy5rYygianBhdlVlIixbXSk7Xy52MGE9eGQoImZYUWpqYyIsIlF3OEZlYiIsdm9pZCAwLF8udTBhKTtmYygiSE1GRGJiIiwiRUtsZjciKTtmYygicGJ4TnBiIiwiTmZUcHBiIik7ZmMoIk14S1g5ZCIsIk5mVHBwYiIpO18udzBhPV8ua2MoIk14S1g5ZCIsW10pO18ueDBhPXhkKCJOZlRwcGIiLCJuRUJXTmIiLHZvaWQgMCxfLncwYSk7ZmMoIkc4UVVkYiIsIkVLbGY3Iik7Xy55MGE9Xy5rYygiRzhRVWRiIixbXSk7Xy56MGE9eGQoIkVLbGY3IiwiSE1ERFdlIix2b2lkIDAsXy55MGEpO2ZjKCJvWnJTTWMiLCJOazlhRWMiKTtmYygiREhWblEiLCJOazlhRWMiKTtmYygiR3FlV3VmIiwiTms5YUVjIik7ZmMoIkVxV0x1IiwiTms5YUVjIik7ZmMoImhtU1l5YiIsIk5rOWFFYyIpO2ZjKCJwdnl3bWQiLCJJejRnaGIiKTtmYygiRUtJcnVlIiwiSVJYQVgiKTtmYygiSmFISXIiLCJ5eWxnUWMiKTtmYygiSmFISXIiLCJKY3QxdCIpO2ZjKCJTS1hnQWMiLCJ5eWxnUWMiKTtmYygiU0tYZ0FjIiwiSmN0MXQiKTtmYygiazVhbXFmIiwiTk9haVVlIik7ZmMoIkcyem9lYiIsIk5PYWlVZSIpO18uQTBhPV8ua2MoImdJbHRPIixbXSk7Xy5CMGE9eGQoIlRzRmZKYiIsIlFFMjBCZSIsdm9pZCAwLF8uQTBhKTtmYygidG9rb25iIiwiTk9haVVlIik7ZmMoIkRSNHliIiwiTk9haVVlIik7ZmMoIlg0bFlHYiIsIk5PYWlVZSIpO2ZjKCJDZDIyMyIsIk5PYWlVZSIpO2ZjKCJOczdscGQiLCJqZmFkS2MiKTtmYygiSGJjT09iIiwiTk9haVVlIik7ZmMoIkxWMXh6ZCIsIkdQYkt5ZCIpO18uQzBhPV8ua2MoInl4ZmU0YiIsW10pO18uRDBhPXhkKCJVNGRFWGQiLCJPSWZXVWIiLHZvaWQgMCxfLkMwYSk7ZmMoInFmT1ljZCIsIlU0ZEVYZCIpO18uRTBhPV8ua2MoInFmT1ljZCIsW10pO18uaG0oXy5uZihfLkQwYSksXy5FMGEpO18uRjBhPV8ua2MoIlRKZnlUYiIsW10pO18uRzBhPXhkKCJvZ1VrUGMiLCJMQm44Q2YiLHZvaWQgMCxfLkYwYSk7ZmMoImJKOUwwYyIsIm9nVWtQYyIpO18uSDBhPV8ua2MoImJKOUwwYyIsW10pO18uaG0oXy5uZihfLkcwYSksXy5IMGEpO2ZjKCJQQnh3c2YiLCJJUlhBWCIpO18uSTBhPV8ua2MoImhlN2ZYZCIsW10pO18uSjBhPV8ua2MoIk1MUXRYYyIsW18uaHJdKTtfLkswYT1fLmtjKCJrVnVoZmMiLFtfLnhpLF8uSTBhLF8uSjBhXSk7Xy5MMGE9Xy5rYygicVU0UG9iIixbXy5XcSxfLkswYSxfLlBxXSk7ZmMoIkZJek1wIiwiTk9haVVlIik7ZmMoInhiM2dhZCIsIlBudTY4ZCIpO2ZjKCJTalpUYWUiLCJFV3BTSCIpO2ZjKCJDOWI2RGMiLCJJUlhBWCIpO2ZjKCJ6djZqOSIsIkJTRFNJYyIpO2ZjKCJBSzZ4Q2UiLCJQelc1OWQiKTtmYygibkRmTEFjIiwiSVJYQVgiKTtmYygiUjZPN0ZmIiwiRVdwU0giKTtmYygibU5sc3plIiwicE9qZU9lIik7ZmMoIm1ObHN6ZSIsImhyMTNMIik7ZmMoImM2MVFmYiIsIkVXcFNIIik7ZmMoImZCRldLYiIsIkVXcFNIIik7ZmMoIllIaE1TYyIsInFCTnZGYiIpO2ZjKCJqNlNjQmIiLCJlcVQ5SyIpO2ZjKCJOeVdoQWMiLCJOT2FpVWUiKTtmYygiRGVxeFBkIiwiRVdwU0giKTtmYygiRlV4OUZjIiwiUjhIWkVjIik7ZmMoIms4REZrIiwiWDMxcEtkIik7ZmMoIk4wcHZHYyIsIlgzMXBLZCIpO18uTTBhPV8ua2MoIk4wcHZHYyIsW10pO18uTjBhPXhkKCJYMzFwS2QiLCJTaHBGNmUiLHZvaWQgMCxfLk0wYSk7ZmMoIlJZcXVSYiIsIkF1WGRtZCIpO18uTzBhPV8ua2MoIlJZcXVSYiIsW10pO2ZjKCJYWTUxcGUiLCJSOEhaRWMiKTtfLlAwYT1fLmtjKCJYWTUxcGUiLFtdKTtfLlEwYT14ZCgiUjhIWkVjIiwiazJReGNiIix2b2lkIDAsXy5QMGEpO2ZjKCJ5c0tJRWYiLCJYMzFwS2QiKTtfLlIwYT14ZCgiQXVYZG1kIiwiSUJBRENjIix2b2lkIDAsXy5PMGEpO2ZjKCJBUk4wQiIsIlI4SFpFYyIpO2ZjKCJhN0Z1dCIsIlgzMXBLZCIpO18uUzBhPXhkKCJuTVlHMGUiLCJVOTZwUmQiKTtmYygiRnNSMDQiLCJuTVlHMGUiKTtmYygib3NxTVZlIiwibk1ZRzBlIik7ZmMoImk4SDJjIiwiYmZjd3ZjIik7ZmMoImk2ZnZGYiIsImJmY3d2YyIpO18uVDBhPXhkKCJxQ1NZV2UiLCJOU0VvWCIsIlRyWXIxZCIsXy5oMGEpO18uanI9Xy5rYygibWRSN3EiLFtfLldwLF8uZzBhLF8uVDBhXSk7Xy5VMGE9Xy5rYygiaTZmdkZiIixbXy5qcl0pO18uVjBhPXhkKCJiZmN3dmMiLCJGa3VrZmMiLHZvaWQgMCxfLlUwYSk7ZmMoIkQ4UXMxYyIsImVxVDlLIik7ZmMoIldvNHk5ZCIsImpmYWRLYyIpO18uVzBhPV8uRmkoIldvNHk5ZCIsW10pO18uWDBhPV8ua2MoImRnd1o0YiIsW18uWXFdKTtmYygiV096NnRjIiwiamZhZEtjIik7ZmMoIlAwSTBFYyIsImpmYWRLYyIpO18uWTBhPXhkKCJBWml3VmUiLCJJR3J4TmUiKTtfLlowYT1fLmtjKCJoMFZSTWQiLFtdKTtfLiQwYT1fLmtjKCJzT1BnViIsW18uWjBhXSk7Xy5hMWE9Xy5rYygiUDBJMEVjIixbXy5DX2EsXy4kMGEsXy5EX2EsXy5kcixfLlgwYSxfLlkwYSxfLlcwYV0pO18uYjFhPXhkKCJqZmFkS2MiLCJabE9PTWIiLHZvaWQgMCxfLmExYSk7Xy5jMWE9eGQoIm03V3kxZSIsInQ5a3liZCIpO2ZjKCJ4QndLMyIsImVxVDlLIik7ZmMoInJlSjRVZCIsImVxVDlLIik7ZmMoIm5hVTg4ZCIsIm03V3kxZSIpO3hkKCJVY1BweGYiLCJ1c0VIeGIiKTt4ZCgiZUo4VE5iIiwiTlpBN28iKTt4ZCgiVUZJRTNkIiwiWHhadEYiKTtfLmQxYT14ZCgiRDliQmJmIiwiU1NZVEhlIik7ZmMoIk4zd1NLZSIsIkQ5YkJiZiIpO2ZjKCJjajc3ZCIsIlVGSUUzZCIpO2ZjKCJjajc3ZCIsIkQ5YkJiZiIpO2ZjKCJuanRRNGUiLCJBWml3VmUiKTt4ZCgieVBSWFoiLCJjbGVkdGUiKTtmYygiTDFKMmRjIiwibTdXeTFlIik7ZmMoIlFmYk1IYyIsIksyWlBrYyIpO2ZjKCJRZmJNSGMiLCJ3YlBoUWMiKTtmYygiaDVra2hjIiwiVDIyNTdkIik7ZmMoIml1WFBRZSIsIlJLMlBsIik7ZmMoInp4dnUiLCJKS2VCTmUiKTtmYygicURNN0siLCJKS2VCTmUiKTtfLmUxYT1fLmtjKCJxRE03SyIsW10pO18uZjFhPXhkKCJKS2VCTmUiLCJtTVZPR2IiLHZvaWQgMCxfLmUxYSk7ZmMoIm1ndkZNYyIsIlJLMlBsIik7Xy5nMWE9Xy5rYygibWd2Rk1jIixbXSk7Xy5oMWE9eGQoIlJLMlBsIiwiUmFmNW1lIix2b2lkIDAsXy5nMWEpO2ZjKCJ5OWVQaGUiLCJUMjI1N2QiKTtfLmkxYT1fLmtjKCJ5OWVQaGUiLFtdKTtfLmoxYT14ZCgiVDIyNTdkIiwiSnFTcTdkIix2b2lkIDAsXy5pMWEpO2ZjKCJtcEVBUWIiLCJLMlpQa2MiKTtfLmsxYT1fLmtjKCJtcEVBUWIiLFtdKTtfLmwxYT14ZCgiSzJaUGtjIiwiT29oSVllIix2b2lkIDAsXy5rMWEpO2ZjKCJ6bWJHbGYiLCJ3YlBoUWMiKTtfLm0xYT1fLmtjKCJ6bWJHbGYiLFtdKTtfLm4xYT14ZCgid2JQaFFjIiwiSzA4aHhlIix2b2lkIDAsXy5tMWEpO2ZjKCJxbjR6QmUiLCJNVWxjNGUiKTtmYygicEpZangiLCJNVWxjNGUiKTtfLm8xYT1fLmtjKCJwSllqeCIsW10pO18ucDFhPXhkKCJNVWxjNGUiLCJQcFRMWGQiLHZvaWQgMCxfLm8xYSk7ZmMoIkI4Z0x3ZCIsIkRXYmRiYyIpO18ucTFhPV8ua2MoIkI4Z0x3ZCIsW10pO18ucjFhPXhkKCJEV2JkYmMiLCJBTGVKaWIiLHZvaWQgMCxfLnExYSk7ZmMoIkhuSUQ0YiIsIlo3M2o3YyIpO2ZjKCJ2OGFWemIiLCJQems1QmMiKTtmYygidUlCdTBkIiwiUHVSOEoiKTtmYygidUlCdTBkIiwiWjczajdjIik7ZmMoIkFWcVo5YiIsIlB6azVCYyIpO18uczFhPV8ua2MoIkFWcVo5YiIsW10pO18udDFhPXhkKCJQems1QmMiLCJ4cGFSb2IiLHZvaWQgMCxfLnMxYSk7ZmMoIkEzVzF3YiIsImUxM3BQYiIpO2ZjKCJDMWhBRmMiLCJlMTNwUGIiKTtmYygicFU4NkhkIiwidEhFUEwiKTtmYygiWWRZZHkiLCJ0SEVQTCIpO18udTFhPXhkKCJ0a2xtOGUiLCJoZUhCMSIpO2ZjKCJFdFo4Q2QiLCJ0a2xtOGUiKTtmYygic0ZjenEiLCJ0a2xtOGUiKTt2YXIgdjFhPXhkKCJjSFR6SmYiLCJTd0NxQWQiLHZvaWQgMCx2b2lkIDAsIlA4eFYxZCIpO2ZjKCJmWGJDWmMiLCJjSFR6SmYiKTtfLncxYT1fLmtjKCJmWGJDWmMiLFtdKTtfLmhtKF8ubmYodjFhKSxfLncxYSk7ZmMoIlBpUTdGYiIsImk0Qm5FZiIpO2ZjKCJMMEowQ2QiLCJqZmFkS2MiKTtmYygic09YRmoiLCJMZFVWMWIiKTtfLngxYT1fLmtjKCJzT1hGaiIpO18ueTFhPXhkKCJMZFVWMWIiLCJvR3RBdWMiLCJlbzRkMWIiLF8ueDFhKTtmYygiQTdmQ1UiLCJVZ0F0WGUiKTtmYygiUjlZSEpjIiwiWTg0UkgiKTtmYygiUjlZSEpjIiwickhqcFhkIik7ZmMoIlhkOGlVZCIsImh0UzY2ZSIpO18uejFhPV8ua2MoIlhkOGlVZCIsW10pO18uT2MoXy56MWEpO18uQTFhPXhkKCJodFM2NmUiLCJKc2JOaGMiLHZvaWQgMCxfLnoxYSk7Xy5PYyhfLkExYSk7ZmMoImQ3WVNmZCIsInJIanBYZCIpO2ZjKCJkN1lTZmQiLCJZQ3ZEc2MiKTtmYygiSFQ4WERlIiwidWlOa2VlIik7ZmMoIlFDb2k4YyIsInVyN0U3YiIpO2ZjKCJIelRBUWMiLCJjSUFIaWQiKTtfLkIxYT1fLmtjKCJIelRBUWMiLFtdKTtfLkMxYT14ZCgiY0lBSGlkIiwiVVlSSUViIix2b2lkIDAsXy5CMWEpO2ZjKCJ6cjFqcmIiLCJkQXlDRiIpO18uRDFhPV8ua2MoInpyMWpyYiIsW18uUFlhXSk7Xy5FMWE9eGQoImRBeUNGIiwiRW1aMkJmIiwiYUllOXFiIixfLkQxYSk7ZmMoIlBWbFFPZCIsIkNCbFJ4ZiIpO18uRjFhPV8ua2MoIlBWbFFPZCIpO18uRzFhPXhkKCJDQmxSeGYiLCJOUEthSyIsImFheVlLZCIsXy5GMWEpO2ZjKCJYVk1OdmQiLCJkb0tzNGMiKTtfLkgxYT1fLmtjKCJYVk1OdmQiLFtfLnBvXSk7Xy5JMWE9eGQoImRvS3M0YyIsIkxCZ1JMYyIsImF2NTF0ZSIsXy5IMWEpO2ZjKCJYVGY0ZGQiLCJmZVh2MmQiKTtmYygia1dnWGVlIiwiYXdicnVmIik7ZmMoIlZEb3ZOYyIsInZGS242YyIpO2ZjKCJvdkt1TGQiLCJyaGZRNWMiKTtmYygiTWxobXkiLCJNSDhLd2QiKTtfLkoxYT1fLmtjKCJNbGhteSIpO18uT2MoXy5KMWEpO18uSzFhPXhkKCJNSDhLd2QiLCJRR1IwZ2QiLCJSVnZBZyIsXy5KMWEpO18uT2MoXy5LMWEpO2ZjKCJQNnNRT2MiLCJJTmQ1a2IiKTtmYygiQTF5bjVkIiwidDJYSFFlIik7Xy5MMWE9Xy5rYygiQTF5bjVkIixbXSk7Xy5PYyhfLkwxYSk7Xy5NMWE9eGQoInQyWEhRZSIsIllJWm1SZCIsdm9pZCAwLF8uTDFhKTtfLk9jKF8uTTFhKTt2YXIgTjFhPXhkKCJ2RktuNmMiLCJVdmM4byIpO18uT2MoTjFhKTtmYygiTzYyNkZlIiwickp6TnRmIik7ZmMoInc5QzRkIiwiQ0Q5RENjIik7ZmMoImdOVXg1ZSIsInJKek50ZiIpO2ZjKCJYTDcxZGYiLCJ2RHYwNyIpO2ZjKCJYbnlOMmUiLCJGS2JQYmUiKTtmYygiaEFsanMiLCJGS2JQYmUiKTtmYygiUElWYXliIiwiVVFEb3EiKTtmYygicVBuQmJiIiwiVVFEb3EiKTtmYygiRUtIdmNiIiwiQ0Q5RENjIik7ZmMoIldEM00zZCIsIlJnbjJCYiIpO2ZjKCJRVnlzSmUiLCJmZVh2MmQiKTtmYygidW9FdTBjIiwiZmVYdjJkIik7ZmMoImFnVnBOIiwicUJ5SGsiKTtmYygiTEJhSnhiIiwicHhhZk9kIik7ZmMoIlBsV1NUIiwiUk1naUZlIik7ZmMoInl4a21mZCIsIkdhSkhMIik7ZmMoInZ5RHBGZCIsImZlWHYyZCIpO2ZjKCJLNE5nUyIsImZlWHYyZCIpO2ZjKCJNSDBoSmUiLCJmZVh2MmQiKTtmYygiTHhRMFEiLCJmZVh2MmQiKTtmYygiVkJsNUZmIiwiZmVYdjJkIik7ZmMoImNucjgyYiIsIndwWm5zIik7ZmMoIkg0ak9zZSIsImZlWHYyZCIpO2ZjKCJ1dTdVT2UiLCJlMTNwUGIiKTtmYygic29IeGYiLCJySnpOdGYiKTtmYygic29IeGYiLCJVUURvcSIpO2ZjKCJuS3VGcGIiLCJDRDlEQ2MiKTtmYygib2dWTnJkIiwickp6TnRmIik7ZmMoInh6YlJqIiwiUmduMkJiIik7ZmMoInRLSEZ4ZiIsImUxM3BQYiIpO2ZjKCJldEJQWWIiLCJ2RHYwNyIpO2ZjKCJldEJQWWIiLCJlMTNwUGIiKTtmYygib0lwUXFiIiwiZTEzcFBiIik7ZmMoIkZxa3BjYiIsImUxM3BQYiIpO2ZjKCJsYzFURmYiLCJlMTNwUGIiKTtmYygiZ0p6RHljIiwiRktiUGJlIik7ZmMoIkR2NHIwZSIsImUxM3BQYiIpO2ZjKCJQSFVJeWIiLCJlMTNwUGIiKTtmYygiUEhVSXliIiwiZmVYdjJkIik7ZmMoIlNVOVJzZiIsInFCeUhrIik7ZmMoIlNVOVJzZiIsImUxM3BQYiIpO2ZjKCJmbWtsZmYiLCJSTWdpRmUiKTtmYygiRm83bHViIiwiZmVYdjJkIik7ZmMoImVNMUM3ZCIsImZlWHYyZCIpO2ZjKCJFRjhwZSIsIkVtNFJ0ZCIpO2ZjKCJFRjhwZSIsImUxM3BQYiIpO2ZjKCJlMmpub2UiLCJmZVh2MmQiKTtmYygiSG1FbTAiLCJmZVh2MmQiKTtmYygiUDhlYXFjIiwid3BabnMiKTtmYygidVkzTnZkIiwiRTlDN1djIik7ZmMoIll3SEdUZCIsIkU5QzdXYyIpO2ZjKCJ1cGR4ciIsInp4SVFmYyIpO3hkKCJEVDBpR2IiLCJqSmoyRyIsdm9pZCAwLF8uZlphKTtmYygibU94Q0JlIiwiWjJWVGpkIik7ZmMoImVTWjBPYyIsIlYwM0R4ZSIpO2ZjKCJ1Y0dMTmIiLCJMUzFBVWIiKTtfLk8xYT1fLmtjKCJ1Y0dMTmIiLFtdKTtmYygiS0g0UW9mIiwiSGNsa3diIik7Xy5QMWE9Xy5rYygiS0g0UW9mIixbXSk7ZmMoIndRZDBHIiwiVjAzRHhlIik7Xy5RMWE9Xy5rYygid1FkMEciLFtdKTtfLlIxYT14ZCgiVjAzRHhlIiwiVXlHN0tiIix2b2lkIDAsXy5RMWEpO2ZjKCJaaEtCaGQiLCJmSjUwOGQiKTtfLlMxYT14ZCgiTFMxQVViIiwiTHNOYWhiIix2b2lkIDAsXy5PMWEpO18uVDFhPXhkKCJIY2xrd2IiLCJ4OU45aWUiLHZvaWQgMCxfLlAxYSk7ZmMoImFpS0NsYiIsIlBZaVhxZiIpO2ZjKCJLZzFyQmMiLCJkYzlRdGYiKTtmYygiWW1yeTYiLCJhYk8xemIiKTtfLlUxYT1fLmtjKCJZbXJ5NiIsW18uU3FdKTtmYygiTm9FQ0xiIiwiYWJPMXpiIik7Xy5WMWE9eGQoImFiTzF6YiIsInRINElJZSIsdm9pZCAwLF8uVTFhKTtmYygiblF6ZTNkIiwiUDRmUVdkIik7ZmMoImJWTFozZCIsIkZZWnFnZCIpO3ZhciBXMWE9eGQoIkZZWnFnZCIsIlE3aUo5YyIsdm9pZCAwLHZvaWQgMCwibjdmRzhjIik7Xy5YMWE9Xy5rYygiYlZMWjNkIixbXSk7Xy5obShfLm5mKFcxYSksXy5YMWEpO3ZhciBZMWE9eGQoIlpmZXNEZCIsIlFGT0dsZiIsdm9pZCAwLHZvaWQgMCwieGxKdGtiIik7ZmMoIlBRMkFvZSIsInhsSnRrYiIpO18uWjFhPV8ua2MoIlBRMkFvZSIsW18uZnIsXy5QcV0pO18uaG0oXy5uZihZMWEpLF8uWjFhKTt2YXIgJDFhPXhkKCJ4UTRZcWUiLCJLQTNQMiIsdm9pZCAwLHZvaWQgMCwiYklVZzBlIik7ZmMoIkMzSm5DZSIsInhRNFlxZSIpO18uYTJhPV8ua2MoIkMzSm5DZSIsW18uTDBhXSk7Xy5obShfLm5mKCQxYSksXy5hMmEpO18uYjJhPXhkKCJWaVRBSWQiLCJXWHROZWIiLHZvaWQgMCx2b2lkIDAsImt5Sk9mZCIpO2ZjKCJRVTlCTWQiLCJreUpPZmQiKTtfLmMyYT1fLmtjKCJRVTlCTWQiLFtfLkpZYV0pO18uaG0oXy5uZihfLmIyYSksXy5jMmEpO3ZhciBkMmE9eGQoIlhBZWZOYyIsImh3b1ZIZCIsdm9pZCAwLHZvaWQgMCwiRGVHZjljIik7ZmMoInp3NFU4YyIsIlhBZWZOYyIpO18uZTJhPV8ua2MoInp3NFU4YyIsW18uZXIsXy5tMGFdKTtfLmhtKF8ubmYoZDJhKSxfLmUyYSk7dmFyIGYyYT14ZCgiTlF0M1hlIiwiZFhkWlYiLHZvaWQgMCx2b2lkIDAsIk1sSzVyZCIpO2ZjKCJhN1FUcWQiLCJOUXQzWGUiKTtfLmcyYT1fLmtjKCJhN1FUcWQiLFtfLkIwYV0pO18uaG0oXy5uZihmMmEpLF8uZzJhKTt2YXIgaDJhPXhkKCJ2SG1TYmUiLCJFalhIcGIiLHZvaWQgMCx2b2lkIDAsImlySmJlZSIpO2ZjKCJwU0hxaCIsInZIbVNiZSIpO18uaTJhPV8ua2MoInBTSHFoIixbXy5lcixfLnBfYSxfLm9fYV0pO18uaG0oXy5uZihoMmEpLF8uaTJhKTt2YXIgajJhPXhkKCJ4YmFORGUiLCJWTXVFbSIsdm9pZCAwLHZvaWQgMCwiV3hTbWxkIik7ZmMoInBMN3NCYyIsInhiYU5EZSIpO18uazJhPV8ua2MoInBMN3NCYyIsW18uel9hXSk7Xy5obShfLm5mKGoyYSksXy5rMmEpO18ubDJhPXhkKCJTcXQ5eWIiLCJRWUxGMmIiLHZvaWQgMCx2b2lkIDAsImVxclgxYyIpO2ZjKCJwQVFZVWQiLCJTcXQ5eWIiKTtfLm0yYT1fLmtjKCJwQVFZVWQiLFtdKTtfLmhtKF8ubmYoXy5sMmEpLF8ubTJhKTtfLm4yYT14ZCgiSzU1ckZjIiwiUkNGNVNkIix2b2lkIDAsdm9pZCAwLCJydVQ2NiIpO2ZjKCJYMWtCbWQiLCJLNTVyRmMiKTtfLm8yYT1fLmtjKCJYMWtCbWQiLFtfLmVyXSk7Xy5obShfLm5mKF8ubjJhKSxfLm8yYSk7Xy5wMmE9eGQoInZXSTVRZSIsIkY1NElBZSIsdm9pZCAwLHZvaWQgMCwiUThvekoiKTtmYygiWmdzRmgiLCJ2V0k1UWUiKTtfLnEyYT1fLmtjKCJaZ3NGaCIsW10pO18uaG0oXy5uZihfLnAyYSksXy5xMmEpO18ucjJhPXhkKCJyQlNUcmQiLCJZbkhVQmYiLHZvaWQgMCx2b2lkIDAsIkp5d0pOZCIpO2ZjKCJzTnNTb2IiLCJyQlNUcmQiKTtfLnMyYT1fLmtjKCJzTnNTb2IiLFtfLlNxXSk7Xy5obShfLm5mKF8ucjJhKSxfLnMyYSk7ZmMoIlNRUHJ5ZiIsInJIckdnYiIpO2ZjKCJoam9xb2UiLCJHQ0Z2SmYiKTtmYygiVVQxREciLCJmRmhpVWMiKTtfLnQyYT1fLmtjKCJVVDFERyIpO18udTJhPXhkKCJmRmhpVWMiLCJyb3BrWiIsImFPRncyIixfLnQyYSk7ZmMoIkprc2ZEZiIsImVOUzlDIik7ZmMoImduMWV5ZSIsInYzMEF0ZiIpO2ZjKCJKRk5ZVGQiLCJ2MzBBdGYiKTtmYygibGNya3dlIiwidjMwQXRmIik7ZmMoIk1YWnQ5ZCIsIlp6T0xqZSIpO18udjJhPV8ua2MoIk1YWnQ5ZCIsW10pO18udzJhPXhkKCJaek9MamUiLCJFQUJTWiIsdm9pZCAwLF8udjJhKTtmYygielF6Y1hlIiwia0t1cW0iKTtfLngyYT1fLmtjKCJ6UXpjWGUiLFtdKTtfLnkyYT14ZCgia0t1cW0iLCJxYXZyWGUiLHZvaWQgMCxfLngyYSk7ZmMoImZFOW4yIiwiSGxLVmtlIik7Xy56MmE9Xy5rYygiZkU5bjIiKTtfLkEyYT14ZCgiSGxLVmtlIiwiS0RiNm5iIiwic1pMOTNkIixfLnoyYSk7ZmMoImZnMVZRIiwiYUpXbm1lIik7ZmMoIkxMRW9KYyIsImFKV25tZSIpO18uQjJhPV8ua2MoIkxMRW9KYyIsW10pO18uQzJhPXhkKCJhSldubWUiLCJwTnNsMmQiLHZvaWQgMCxfLkIyYSk7ZmMoImtKNk9vYyIsImFKV25tZSIpO2ZjKCJURnBFSyIsIkhqbExBYiIpO18uRDJhPV8ua2MoIlRGcEVLIik7Xy5FMmE9eGQoIkhqbExBYiIsIk9pcUUyYyIsIlVuTW9aZCIsXy5EMmEpO2ZjKCJqOVl1eWMiLCJhSldubWUiKTtmYygib2ZqVmtiIiwiY2l0eVIiKTtmYygicnc1akdkIiwiaU9hOUViIik7ZmMoImVwczQ2ZCIsImlPYTlFYiIpO18uRjJhPV8ua2MoImVwczQ2ZCIsW10pO18uRzJhPXhkKCJpT2E5RWIiLCJVRHJZMWMiLHZvaWQgMCxfLkYyYSk7ZmMoIk4wRjI5ZCIsImlPYTlFYiIpO2ZjKCJDdkVyamIiLCJwc1RaRWYiKTtfLkgyYT1fLmtjKCJDdkVyamIiKTtfLkkyYT14ZCgicHNUWkVmIiwibkJablplIiwiWEUxY2NmIixfLkgyYSk7ZmMoIlc1ME5WZCIsImlPYTlFYiIpO2ZjKCJ3Y2l5VWUiLCJpT2E5RWIiKTtmYygicmxIS0ZjIiwiTENmYWFjIik7ZmMoIlVvUmNiZSIsIlZiM3NZYiIpO18uSjJhPV8ua2MoIlVvUmNiZSIpO18uSzJhPXhkKCJWYjNzWWIiLCJGOW1xdGUiLCJ3V3J5diIsXy5KMmEpO2ZjKCJKSlROU2QiLCJ6NXg2amMiKTtmYygiSjFBN09kIiwiejV4NmpjIik7Xy5MMmE9Xy5rYygiSjFBN09kIixbXSk7Xy5NMmE9eGQoIno1eDZqYyIsIkdsZVpMIix2b2lkIDAsXy5MMmEpO2ZjKCJ1MGliQWUiLCJqbFFteWIiKTtmYygiQnpubHdlIiwiamxRbXliIik7Xy5OMmE9Xy5rYygiQnpubHdlIixbXSk7Xy5PMmE9eGQoImpsUW15YiIsIk55dDZpYyIsdm9pZCAwLF8uTjJhKTtmYygiUXlTaTFjIiwibHh6b1EiKTtmYygiaWkxUkdmIiwiSGJqTGllIik7Xy5QMmE9Xy5rYygiaWkxUkdmIik7Xy5RMmE9eGQoIkhiakxpZSIsIkpYSlNtIiwiWk1Wb2dlIixfLlAyYSk7ZmMoIkNKUllEZiIsImpsUW15YiIpO2ZjKCJzWm55aiIsImpsUW15YiIpO2ZjKCJqbjJzR2QiLCJqbFFteWIiKTtmYygiZU1WWDNjIiwiRzR0djNkIik7ZmMoImFyVHdKIiwiR0pSSE4iKTtfLlIyYT1fLmtjKCJhclR3SiIpO18uUzJhPXhkKCJHSlJITiIsImFaNjFvZCIsIlc1MEd3IixfLlIyYSk7ZmMoIm5LUExwYyIsIkc0dHYzZCIpO2ZjKCJUOXk1RGQiLCJlaklWWGQiKTtmYygicmtpUmtkIiwiRzR0djNkIik7ZmMoIk94VjZOYyIsIlZmczRxZiIpO2ZjKCJRajBzdWMiLCJWZnM0cWYiKTtfLlQyYT1fLmtjKCJRajBzdWMiLFtdKTtfLmtyPXhkKCJWZnM0cWYiLCJKWFM4ZmIiLHZvaWQgMCxfLlQyYSk7ZmMoInNFVVY1IiwiVmZzNHFmIik7ZmMoIms0WG84YiIsIlZmczRxZiIpO2ZjKCJPVFVTUGIiLCJWZnM0cWYiKTtmYygieXFtcm9mIiwiVmZzNHFmIik7ZmMoInBQSXZpZSIsIlZmczRxZiIpO2ZjKCJwNExyQ2UiLCJWZnM0cWYiKTtmYygiazBUM1ViIiwiVmZzNHFmIik7ZmMoIkpXa09SYiIsImJUdUc2YiIpO2ZjKCJZQjd0cGIiLCJiVHVHNmIiKTtmYygiRk01UUplIiwiYlR1RzZiIik7ZmMoInQxcGZyYiIsImJUdUc2YiIpO2ZjKCJnS0Q5MGMiLCJiVHVHNmIiKTtmYygiWHdoVUViIiwiYlR1RzZiIik7ZmMoInY3aEgwYiIsImVOUzlDIik7ZmMoIkJNTGFpIiwicWF1bVViIik7Xy5VMmE9Xy5rYygiQk1MYWkiKTtfLlYyYT14ZCgicWF1bVViIiwidGVTUlNiIiwic0ZROG5jIixfLlUyYSk7ZmMoInlpTGc2ZSIsImVqSVZYZCIpO18uVzJhPV8ua2MoInlpTGc2ZSIsW10pO3hkKCJlaklWWGQiLCJxYVMzZ2QiLHZvaWQgMCxfLlcyYSk7ZmMoIlFBdnlMZSIsIkt6emFTYyIpO18uWDJhPV8ua2MoIlFBdnlMZSIpO18uWTJhPXhkKCJLenphU2MiLCJaU0g2dGMiLCJESWxDb2QiLF8uWDJhKTtmYygiZnZqY1BiIiwiS3p6YVNjIik7ZmMoIkxHb0VIZCIsIkt6emFTYyIpO2ZjKCJVUzFFVSIsIkt6emFTYyIpO2ZjKCJWQ2VuaGMiLCJxNTJybmUiKTtfLloyYT1fLmtjKCJWQ2VuaGMiKTtfLiQyYT14ZCgicTUycm5lIiwicEtKaVhkIiwicUJ4VU0iLF8uWjJhKTtmYygiSDhmS2piIiwicTUycm5lIik7ZmMoInZtTWhrYyIsInE1MnJuZSIpO2ZjKCJCZ3lQUGMiLCJxNTJybmUiKTtmYygiUmV3TFBjIiwiZkZoaVVjIik7ZmMoInQ5dWtwYyIsImZGaGlVYyIpO2ZjKCJVQkdjZGQiLCJmRmhpVWMiKTtmYygiTzlYRFVkIiwiZkZoaVVjIik7ZmMoIlpQR2FJYiIsIlRwQ0VyZSIpO18uYTNhPV8ua2MoIlpQR2FJYiIpO18uYjNhPXhkKCJUcENFcmUiLCJ3M2JaQ2IiLCJtU0JQTWMiLF8uYTNhKTtmYygicE5uZ04iLCJUcENFcmUiKTtmYygiWTRsVDhkIiwiVHBDRXJlIik7ZmMoImVTRkM1YyIsIlRwQ0VyZSIpO2ZjKCJ2QW1RRmYiLCJYR0dzNmUiKTtfLmMzYT1fLmtjKCJ2QW1RRmYiKTtfLmQzYT14ZCgiWEdHczZlIiwiVmhBN2JkIiwiUGx0WWdmIixfLmMzYSk7ZmMoImxrRU5CYiIsIlhHR3M2ZSIpO2ZjKCJxZVNMVyIsIlhHR3M2ZSIpO2ZjKCJWRnFiciIsImJPbWJTZSIpO18uZTNhPV8ua2MoIlZGcWJyIik7Xy5mM2E9eGQoImJPbWJTZSIsIlZHUmZ4IiwiaXJ2Z1ViIixfLmUzYSk7ZmMoIm1UMXlnZSIsImJPbWJTZSIpO2ZjKCJCNmI4NSIsImJPbWJTZSIpO2ZjKCJMSWFvWiIsIkt5RUU2YyIpO18uZzNhPV8ua2MoIkxJYW9aIik7Xy5oM2E9eGQoIkt5RUU2YyIsIkcwS2hUYiIsImZTZ3R5IixfLmczYSk7ZmMoInlzY1J3ZCIsIkt5RUU2YyIpO2ZjKCJwUHhkQWQiLCJLeUVFNmMiKTtmYygiV0hXNkVmIiwic2lzRGRlIik7Xy5pM2E9Xy5rYygiV0hXNkVmIik7Xy5qM2E9eGQoInNpc0RkZSIsImFBSkU5YyIsImc1Q0Q2ZCIsXy5pM2EpO2ZjKCJyZnIycGYiLCJzaXNEZGUiKTtmYygiTnNpQ1JiIiwic2lzRGRlIik7ZmMoIlJvbFRZIiwiVXBmdEpmIik7Xy5rM2E9Xy5rYygiUm9sVFkiKTtfLmwzYT14ZCgiVXBmdEpmIiwiVjJIVFRlIiwiejNBZTVjIixfLmszYSk7ZmMoInhDc2luZSIsIlVwZnRKZiIpO2ZjKCJCa2lIdGQiLCJVcGZ0SmYiKTtmYygiRld6MWljIiwiYjkwYjhlIik7Xy5tM2E9Xy5rYygiRld6MWljIik7Xy5uM2E9eGQoImI5MGI4ZSIsImhscUdYIiwiUzYyUE1lIixfLm0zYSk7ZmMoIlhsUFBrYyIsImI5MGI4ZSIpO2ZjKCJVSDdqN2IiLCJiOTBiOGUiKTtmYygiZzNNSmxiIiwiT2RRaUdiIik7Xy5vM2E9Xy5rYygiZzNNSmxiIik7Xy5wM2E9eGQoIk9kUWlHYiIsIldmbWR1ZSIsIldCSlczZSIsXy5vM2EpO2ZjKCJsSkI5U2UiLCJPZFFpR2IiKTtmYygiSzZaRWJmIiwiT2RRaUdiIik7ZmMoIlJ1c1V2ZCIsInZ1NENUYyIpO2ZjKCJBVGcxYmUiLCJ2dTRDVGMiKTtfLnEzYT1fLmtjKCJBVGcxYmUiKTtfLnIzYT14ZCgidnU0Q1RjIiwiZUpLY2hjIiwiVmJsY1RkIixfLnEzYSk7ZmMoInNGcUx6YyIsInZ1NENUYyIpO2ZjKCJoVnFmQiIsIkFnMWg0YiIpO2ZjKCJmaWRqNWQiLCJBZzFoNGIiKTtfLnMzYT1fLmtjKCJmaWRqNWQiKTtfLnQzYT14ZCgiQWcxaDRiIiwiQmdTNm1iIiwiRTZhUUFiIixfLnMzYSk7ZmMoInpnSnBkYyIsIkFnMWg0YiIpO2ZjKCJGaVFDTiIsIkFnMWg0YiIpO2ZjKCJSOGd0MSIsIkFnMWg0YiIpO2ZjKCJtSUJ5dSIsImU3TTFVZCIpO2ZjKCJla1VPWWQiLCJlN00xVWQiKTtfLnUzYT1fLmtjKCJla1VPWWQiKTtfLnYzYT14ZCgiZTdNMVVkIiwiZ3RWU2kiLCJtejVrMSIsXy51M2EpO2ZjKCJJeTE3bWQiLCJlN00xVWQiKTtmYygieXZCSVhjIiwiZTdNMVVkIik7ZmMoIkpUenhOYyIsImVNV0NkIik7ZmMoIlpNS2tOIiwiZU1XQ2QiKTtfLnczYT1fLmtjKCJaTUtrTiIpO18ueDNhPXhkKCJlTVdDZCIsIktReldpZCIsIllxMGh3IixfLnczYSk7ZmMoIlRBanZ5IiwiZU1XQ2QiKTtmYygiaHdZSTRjIiwiZU1XQ2QiKTtmYygiTTdJaklmIiwiUXdBVTBlIik7ZmMoIkNSN1VmZSIsIlF3QVUwZSIpO18ueTNhPV8ua2MoIkNSN1VmZSIpO18uejNhPXhkKCJRd0FVMGUiLCJSOVVseCIsInhWNU9yZiIsXy55M2EpO2ZjKCJSMUVORmQiLCJRd0FVMGUiKTtmYygiR1RhTmxjIiwiUXdBVTBlIik7ZmMoImM0NXIxYyIsIkF5NXhqYyIpO2ZjKCJHM1BQMmQiLCJBeTV4amMiKTtmYygiZzZaVW9iIiwiQXk1eGpjIik7ZmMoIlo3eWJSYiIsIkU3elZPZCIpO2ZjKCJMR0RKR2IiLCJFN3pWT2QiKTtfLkEzYT1fLmtjKCJMR0RKR2IiKTtfLkIzYT14ZCgiRTd6Vk9kIiwiVUJLSloiLCJjVjBKdmUiLF8uQTNhKTtmYygid08wbHVmIiwiRTd6Vk9kIik7ZmMoInhrY3RKIiwiRTd6Vk9kIik7ZmMoImJJc2t2ZCIsIkU3OFg3YyIpO2ZjKCJGZXZoY2YiLCJFNzhYN2MiKTtfLkMzYT1fLmtjKCJGZXZoY2YiKTtfLkQzYT14ZCgiRTc4WDdjIiwiRFFFdWVkIiwiU21FVG1kIixfLkMzYSk7ZmMoIlpCcm9iIiwiRTc4WDdjIik7ZmMoIlZ2WWZxZCIsIkU3OFg3YyIpO2ZjKCJJcWp2bWYiLCJOb0JvTmQiKTtmYygiZE5ob2ZiIiwiTm9Cb05kIik7Xy5FM2E9Xy5rYygiZE5ob2ZiIik7Xy5GM2E9eGQoIk5vQm9OZCIsIlN6UVEzZSIsIlNLUHduZCIsXy5FM2EpO2ZjKCJNQ2xFaWIiLCJOb0JvTmQiKTtmYygidm8zWE0iLCJOb0JvTmQiKTtmYygiZ0h2UFNiIiwiSGxLVmtlIik7ZmMoImJWSE1BIiwiSGxLVmtlIik7ZmMoIm42NkdhZCIsIkhsS1ZrZSIpO2ZjKCJaMnFMNmIiLCJjRVlDUCIpO2ZjKCJDcElCamQiLCJjRVlDUCIpO18uRzNhPV8ua2MoIkNwSUJqZCIpO18uSDNhPXhkKCJjRVlDUCIsInlzTmlNYyIsIlU4dFJHYiIsXy5HM2EpO2ZjKCJ3QXVOVmIiLCJjRVlDUCIpO2ZjKCJkYnIyTWMiLCJjRVlDUCIpO2ZjKCJ2b3lZbCIsIkVEeHZoYiIpO2ZjKCJFZXNSc2IiLCJFRHh2aGIiKTtfLkkzYT1fLmtjKCJFZXNSc2IiKTtfLkozYT14ZCgiRUR4dmhiIiwiVVZtakVkIiwicDhUSGxjIixfLkkzYSk7ZmMoImtyUll0ZiIsIkVEeHZoYiIpO2ZjKCJzb0FSWGIiLCJrcG1EamYiKTtmYygib3VnOXRlIiwia3BtRGpmIik7Xy5LM2E9Xy5rYygib3VnOXRlIik7Xy5MM2E9eGQoImtwbURqZiIsIno5N1lHZiIsImY3RXpyIixfLkszYSk7ZmMoIm1URkNRZSIsImtwbURqZiIpO2ZjKCJ5V0NPNGMiLCJrcG1EamYiKTtmYygiR0VkRndjIiwibnU2a2NjIik7ZmMoIlRrckFqZiIsIm51NmtjYyIpO18uTTNhPV8ua2MoIlRrckFqZiIpO18uTjNhPXhkKCJudTZrY2MiLCJBZmVhUCIsImRoRzN5ZSIsXy5NM2EpO2ZjKCJuVkc0NmIiLCJudTZrY2MiKTtmYygiaVRwbFhlIiwiSGpsTEFiIik7ZmMoInE2NXRBYyIsIkhqbExBYiIpO2ZjKCJsT3FDMWUiLCJIamxMQWIiKTtmYygiR0Z5ZFJiIiwiSGpsTEFiIik7ZmMoIm1NSmxGYiIsInNwblV3ZSIpO2ZjKCJhdWR2ZGUiLCJzcG5Vd2UiKTtfLk8zYT1fLmtjKCJhdWR2ZGUiKTtfLlAzYT14ZCgic3BuVXdlIiwiZUJaNU5kIiwiWFJCRnYiLF8uTzNhKTtmYygiTWtmNUxlIiwic3BuVXdlIik7ZmMoImg0cXpTIiwic3BuVXdlIik7ZmMoIlVmeDRtZSIsImthY1d2YyIpO2ZjKCJodzJsMmQiLCJrYWNXdmMiKTtmYygibmw5YUlkIiwia2FjV3ZjIik7ZmMoIlZqOWhwZCIsIlU2UkRQZSIpO2ZjKCJJbDFNNGIiLCJVNlJEUGUiKTtmYygiajdmMXRmIiwiSXlmV1FiIik7ZmMoIll5Ukx2YyIsIkl5ZldRYiIpO18uUTNhPV8ua2MoIll5Ukx2YyIpO18uUjNhPXhkKCJJeWZXUWIiLCJDeFhBV2IiLCJqVllRNGUiLF8uUTNhKTtmYygiWWhtUkIiLCJJeWZXUWIiKTtmYygiaFZtREFjIiwicHNUWkVmIik7ZmMoInlUeHM0ZSIsInBzVFpFZiIpO2ZjKCJFaUxWT2MiLCJwc1RaRWYiKTtmYygib244ZVNjIiwid1d0VVFlIik7ZmMoIkt0elNRZSIsIndXdFVRZSIpO2ZjKCJkZFF5dWYiLCJ3V3RVUWUiKTtfLlMzYT1fLmtjKCJkZFF5dWYiKTtfLlQzYT14ZCgid1d0VVFlIiwiVk42akljIiwicmhmRTllIixfLlMzYSk7ZmMoInZXZlo4YyIsIndXdFVRZSIpO2ZjKCJ0cHpIU2MiLCJrUDFwemMiKTtmYygib2tJeDgiLCJrUDFwemMiKTtmYygiYWZSNENmIiwia1AxcHpjIik7Xy5VM2E9Xy5rYygiYWZSNENmIik7Xy5WM2E9eGQoImtQMXB6YyIsIlpXRVVBIiwidkY1aHVmIixfLlUzYSk7ZmMoIktSRFVVYiIsImtQMXB6YyIpO2ZjKCJGcnlJa2UiLCJWYjNzWWIiKTtmYygiSGJSNUMiLCJWYjNzWWIiKTtmYygiWE15cnNkIiwiVmIzc1liIik7ZmMoImhROTdyZSIsIlZiM3NZYiIpO2ZjKCJKSk9FNyIsIlZiM3NZYiIpO2ZjKCJUa3BSZmMiLCJlOEVSdGIiKTtmYygiU28xTGFlIiwiZThFUnRiIik7ZmMoImNOVGUwIiwiZThFUnRiIik7Xy5XM2E9Xy5rYygiY05UZTAiKTtfLlgzYT14ZCgiZThFUnRiIiwiT2dhZ0JlIiwiWDdxNjUiLF8uVzNhKTtmYygiaUsyc2IiLCJlOEVSdGIiKTtmYygieDFoTzViIiwiZThFUnRiIik7ZmMoIndvY1lBIiwibkpkM3UiKTtmYygiWlpkRXpkIiwibkpkM3UiKTtmYygiSEhpMDRjIiwibkpkM3UiKTtfLlkzYT1fLmtjKCJISGkwNGMiKTtfLlozYT14ZCgibkpkM3UiLCJxR1YydWMiLCJZT3U1bGYiLF8uWTNhKTtmYygicktXdXBkIiwiajNRSlNjIik7ZmMoInJNRk8wZSIsImozUUpTYyIpO2ZjKCJLaDF4WWUiLCJqM1FKU2MiKTtfLiQzYT1fLmtjKCJLaDF4WWUiKTtfLmE0YT14ZCgiajNRSlNjIiwiU0x0cU8iLCJvOW5URmYiLF8uJDNhKTtmYygic29WcHRmIiwiajNRSlNjIik7ZmMoImRBcEZqZSIsIm00NG1oZSIpO2ZjKCJyc3A1amMiLCJtNDRtaGUiKTtmYygiWkNxUDMiLCJtNDRtaGUiKTtfLmI0YT1fLmtjKCJaQ3FQMyIpO18uYzRhPXhkKCJtNDRtaGUiLCJ0b3NLdmQiLCJxYlJLTWMiLF8uYjRhKTtmYygicnpJN2hlIiwieGVqWVBjIik7ZmMoIkd4OGpBYiIsInhlallQYyIpO18uZDRhPV8ua2MoIkd4OGpBYiIpO18uZTRhPXhkKCJ4ZWpZUGMiLCJIdFB4cmQiLCJqWnd6WGQiLF8uZDRhKTtmYygiRXowc2RiIiwieGVqWVBjIik7ZmMoIkhMSHp2ZSIsIlJiOVNsZiIpO2ZjKCJab2RmRGYiLCJSYjlTbGYiKTtmYygiWXF1aFRiIiwiUmI5U2xmIik7Xy5mNGE9Xy5rYygiWXF1aFRiIik7Xy5nNGE9eGQoIlJiOVNsZiIsIlZPY2dEZSIsIkZSbWFLZSIsXy5mNGEpO2ZjKCJZZUthcSIsIlJiOVNsZiIpO2ZjKCJMTUhZVCIsInh0TlY5ZSIpO2ZjKCJqS2U5YmIiLCJ4dE5WOWUiKTtmYygiVmwxMTgiLCJ4dE5WOWUiKTtfLmg0YT1fLmtjKCJWbDExOCIpO18uaTRhPXhkKCJ4dE5WOWUiLCJoc0xzWWMiLCJoY0lpZGMiLF8uaDRhKTtmYygiT2RvM09kIiwieHROVjllIik7ZmMoIm1IVTBUZCIsImpzM1pnYiIpO2ZjKCJLOXk3SmMiLCJqczNaZ2IiKTtmYygiT3VNa1JkIiwianMzWmdiIik7Xy5qNGE9Xy5rYygiT3VNa1JkIik7Xy5rNGE9eGQoImpzM1pnYiIsIm9pQmhyZSIsIm5FTzFUZSIsXy5qNGEpO2ZjKCJWMmhTOGUiLCJqczNaZ2IiKTtmYygiQVlNZjFjIiwiaGZmZmNlIik7ZmMoIkdlMERpYiIsImhmZmZjZSIpO2ZjKCJ1MlYzdWQiLCJoZmZmY2UiKTtfLmw0YT1fLmtjKCJ1MlYzdWQiKTtfLm00YT14ZCgiaGZmZmNlIiwidXVRa1kiLCJrbjZVbmYiLF8ubDRhKTtmYygiZDdOVHkiLCJoZmZmY2UiKTtmYygicDZqZzNlIiwiSnpld09lIik7ZmMoIk8yeUR6ZCIsIkp6ZXdPZSIpO2ZjKCJxWnR6aWIiLCJKemV3T2UiKTtfLm40YT1fLmtjKCJxWnR6aWIiKTtfLm80YT14ZCgiSnpld09lIiwiZ2JmSFIiLCJKcXF6ZGUiLF8ubjRhKTtmYygiU3RsZ0hiIiwiSnpld09lIik7ZmMoIm9hWllXIiwib3oyMTBjIik7ZmMoImpjVk94ZCIsIm96MjEwYyIpO18ucDRhPV8ua2MoImpjVk94ZCIpO18ucTRhPXhkKCJvejIxMGMiLCJXREd5RmUiLCJCYm1hRWUiLF8ucDRhKTtmYygibjBmaGJjIiwib3oyMTBjIik7ZmMoIm1PR1daZCIsIm96MjEwYyIpO2ZjKCJWUTdZdWYiLCJvejIxMGMiKTtmYygiWTZHSmZjIiwiR0RFbTVlIik7ZmMoInFLZnR2YyIsIkdERW01ZSIpO18ucjRhPV8ua2MoInFLZnR2YyIpO18uczRhPXhkKCJHREVtNWUiLCJhQ0o5dGYiLCJuSzd0ZGUiLF8ucjRhKTtmYygiTTBWUWJkIiwiR0RFbTVlIik7ZmMoIko0a2V2YiIsIm1SUXFFIik7ZmMoIlJ4QWdOYiIsIm1SUXFFIik7ZmMoImRoamlwZSIsIm1SUXFFIik7ZmMoImFobks5YyIsIm1SUXFFIik7ZmMoInhURVJsZCIsIlFSRHgwZCIpO2ZjKCJXTXdFSGUiLCJRUkR4MGQiKTtfLnQ0YT1fLmtjKCJXTXdFSGUiKTtfLnU0YT14ZCgiUVJEeDBkIiwiYlVJa3diIiwiSmR5VkhjIixfLnQ0YSk7ZmMoImVEWmdWIiwiUVJEeDBkIik7ZmMoIm9xU2xBYiIsIlA1dDU3ZSIpO2ZjKCJBMENzMWQiLCJQNXQ1N2UiKTtmYygiTXFHZFVkIiwiUDV0NTdlIik7Xy52NGE9Xy5rYygiTXFHZFVkIik7Xy53NGE9eGQoIlA1dDU3ZSIsImxiZmt5ZiIsIlBhZnY1YiIsXy52NGEpO2ZjKCJ0UVRPeGQiLCJIYmpMaWUiKTtmYygiWjhQZGgiLCJIYmpMaWUiKTtmYygiRHRVWmpjIiwiYkdMN2FjIik7ZmMoIlJLZkc1YyIsImJHTDdhYyIpO18ueDRhPV8ua2MoIlJLZkc1YyIpO18ueTRhPXhkKCJiR0w3YWMiLCJEVUxxQiIsIlUyOFVvIixfLng0YSk7ZmMoIkxuZDNuZCIsImJHTDdhYyIpO2ZjKCJhNzBxN2IiLCJiR0w3YWMiKTtmYygiU1p0TnZjIiwiVE5lMndkIik7ZmMoIlhBZ3c3YiIsIlROZTJ3ZCIpO2ZjKCJEcHg2cWMiLCJUTmUyd2QiKTtfLno0YT1fLmtjKCJEcHg2cWMiKTtfLkE0YT14ZCgiVE5lMndkIiwiTnA4UWtkIiwiYnV4QXdjIixfLno0YSk7ZmMoIlRVd01yYyIsIlROZTJ3ZCIpO2ZjKCJYWTR5eWIiLCJhVVhZV2QiKTtmYygiQ1V3amZmIiwiYVVYWVdkIik7ZmMoIng1Q1N1IiwiYVVYWVdkIik7Xy5CNGE9Xy5rYygieDVDU3UiKTtfLkM0YT14ZCgiYVVYWVdkIiwiUTFPdzdiIiwibWtudzRiIixfLkI0YSk7ZmMoInNmRlRsZSIsImFVWFlXZCIpO2ZjKCJyRkdXVmQiLCJzMlNQdGUiKTtmYygiRGNET01jIiwiczJTUHRlIik7ZmMoImdTWkxKYiIsInMyU1B0ZSIpO18uRDRhPV8ua2MoImdTWkxKYiIpO18uRTRhPXhkKCJzMlNQdGUiLCJiY1BYU2MiLCJ3VFhtV2MiLF8uRDRhKTtmYygidVduRm8iLCJHSlJITiIpO2ZjKCJBSWpjdmMiLCJHSlJITiIpO2ZjKCJIMU9uemIiLCJHSlJITiIpO2ZjKCJuN2hleWYiLCJtTmdIMGUiKTtmYygiVmI1M1pjIiwibU5nSDBlIik7ZmMoImoweHJFIiwibU5nSDBlIik7Xy5GNGE9Xy5rYygiajB4ckUiKTtfLkc0YT14ZCgibU5nSDBlIiwicVp4MkZjIiwiaENGWFViIixfLkY0YSk7ZmMoIm52ODZzIiwibU5nSDBlIik7ZmMoInFiU3RBZCIsIkFWUEVNIik7ZmMoImdUOHFuZCIsIkFWUEVNIik7Xy5INGE9Xy5rYygiZ1Q4cW5kIik7Xy5JNGE9eGQoIkFWUEVNIiwiY0ZUV2FlIiwicXJMVFEiLF8uSDRhKTtmYygiUUUzaHZkIiwiQVZQRU0iKTtmYygiUGdUWUJmIiwiTnQ1RHZlIik7ZmMoImRjSHQzYiIsIk50NUR2ZSIpO2ZjKCJGR2JmTGUiLCJOdDVEdmUiKTtfLko0YT1fLmtjKCJGR2JmTGUiKTtfLks0YT14ZCgiTnQ1RHZlIiwiWTNjNXNkIiwiZ2ltYzdjIixfLko0YSk7ZmMoIlVmeUpqYyIsIk50NUR2ZSIpO2ZjKCJma1VXS2IiLCJqVHNOVWUiKTtmYygiSHBHTVBjIiwialRzTlVlIik7ZmMoIllWZ2k3ZCIsImpUc05VZSIpO18uTDRhPV8ua2MoIllWZ2k3ZCIpO18uTTRhPXhkKCJqVHNOVWUiLCJOakl3ZWYiLCJUNmdsSGMiLF8uTDRhKTtmYygiUmZ0ekhmIiwialRzTlVlIik7ZmMoIlZoeGVSYiIsIlFhR2R5YiIpO2ZjKCJxSUZBRmUiLCJRYUdkeWIiKTtmYygiRU1lVkliIiwiUWFHZHliIik7Xy5ONGE9Xy5rYygiRU1lVkliIik7Xy5PNGE9eGQoIlFhR2R5YiIsImFWWnEzZSIsImNzcGNFYyIsXy5ONGEpO2ZjKCJ0Rzk3dWMiLCJRYUdkeWIiKTtmYygiRzVJNkUiLCJCZ2tCdWYiKTtmYygieUlsUDdkIiwiQmdrQnVmIik7ZmMoIlRONmJNZSIsIkJna0J1ZiIpO18uUDRhPV8ua2MoIlRONmJNZSIpO18uUTRhPXhkKCJCZ2tCdWYiLCJnYXViNCIsIkpIU2pHYyIsXy5QNGEpO2ZjKCJLbW5uNmIiLCJCZ2tCdWYiKTtmYygibzl3NXZkIiwiVjlUR3pjIik7ZmMoInRxZlFtZSIsIlY5VEd6YyIpO2ZjKCJLTUNkMWQiLCJWOVRHemMiKTtfLlI0YT1fLmtjKCJLTUNkMWQiKTtfLlM0YT14ZCgiVjlUR3pjIiwiTU5rQWRlIiwiWVBLNGdiIixfLlI0YSk7ZmMoIk1zU2paYiIsIlY5VEd6YyIpO2ZjKCJTRnN1RWYiLCJVSVpzNmIiKTtmYygia2g5NE9jIiwiVUlaczZiIik7ZmMoIk5FVzFRYyIsIlVJWnM2YiIpO18uVDRhPV8ua2MoIk5FVzFRYyIpO18uVTRhPXhkKCJVSVpzNmIiLCJ4QmJzcmMiLCJQRWFvUWQiLF8uVDRhKTtmYygiRnJjeUplIiwiVUlaczZiIik7ZmMoIlNYU0poZSIsInFhdW1VYiIpO2ZjKCJNRFpWcWYiLCJxYXVtVWIiKTtmYygiVVV2Y1pkIiwicWF1bVViIik7ZmMoImFoSW4xYyIsIkhySFhxYyIpO2ZjKCJsSHBRdGQiLCJIckhYcWMiKTtmYygiT1pqYlEiLCJIckhYcWMiKTtfLlY0YT1fLmtjKCJPWmpiUSIpO18uVzRhPXhkKCJIckhYcWMiLCJldU9YWSIsIlZwb0JGYiIsXy5WNGEpO2ZjKCJFMnpsSWYiLCJIckhYcWMiKTtmYygiZlNHakFiIiwiV0FoZFAiKTtmYygiZmlaUjhiIiwiV0FoZFAiKTtfLlg0YT1fLmtjKCJmaVpSOGIiKTtmYygiTHAwMm8iLCJXQWhkUCIpO18uWTRhPXhkKCJXQWhkUCIsIkZTeG1VZSIsInNSNGlVYiIsXy5YNGEpO2ZjKCJ1eGNFZWIiLCJRa054bGMiKTtmYygid083cmRiIiwiUWtOeGxjIik7ZmMoInF6eHpPYiIsIlFrTnhsYyIpO18uWjRhPV8ua2MoInF6eHpPYiIpO18uJDRhPXhkKCJRa054bGMiLCJJc2RXVmMiLCJUVkJDZmQiLF8uWjRhKTtmYygiTFI2NHgiLCJRa054bGMiKTtmYygiS1dManJmIiwiV0lRU0NmIik7ZmMoIlBHZjJSZSIsIldJUVNDZiIpO18uYTVhPV8ua2MoIlBHZjJSZSIpO2ZjKCJIWm5KNiIsIldJUVNDZiIpO18uYjVhPXhkKCJXSVFTQ2YiLCJWc0FxU2IiLCJOOHZLbCIsXy5hNWEpO2ZjKCJDNEtPbWMiLCJSVGR6TGQiKTtmYygia0tjSTdjIiwiUlRkekxkIik7ZmMoInpMNzJ4ZiIsIlJUZHpMZCIpO18uYzVhPV8ua2MoInpMNzJ4ZiIpO18uZDVhPXhkKCJSVGR6TGQiLCJEcGNSM2QiLCJCMlpJcWIiLF8uYzVhKTtmYygidjc0VmFkIiwiUlRkekxkIik7ZmMoInNISWtlYyIsImxVY1VNYiIpO2ZjKCJIaFlUZmIiLCJsVWNVTWIiKTtmYygiWjVUcjZjIiwibFVjVU1iIik7Xy5lNWE9Xy5rYygiWjVUcjZjIik7Xy5mNWE9eGQoImxVY1VNYiIsImFjaTd5IiwiZmlnSnFmIixfLmU1YSk7ZmMoIkVacW9aYyIsImxVY1VNYiIpO2ZjKCJZekFab2UiLCJ4elJmaGUiKTtmYygiaGJiWElmIiwieHpSZmhlIik7ZmMoIkY2MnNHIiwieHpSZmhlIik7Xy5nNWE9Xy5rYygiRjYyc0ciKTtfLmg1YT14ZCgieHpSZmhlIiwiaGpSbzZlIiwibXdla0IiLF8uZzVhKTtmYygiRWhWMjIiLCJRMlVOTmUiKTtmYygiV2VIZzQiLCJRMlVOTmUiKTtfLmk1YT1fLmtjKCJXZUhnNCIpO2ZjKCJZMlh1VCIsIlEyVU5OZSIpO18uajVhPXhkKCJRMlVOTmUiLCJFbmxjTmQiLCJRRXpUQ2UiLF8uaTVhKTtmYygiSlpEZ3FlIiwiSE1KWVFiIik7ZmMoImJNMlc1ZSIsIkhNSllRYiIpO2ZjKCJjWFgyV2IiLCJITUpZUWIiKTtfLms1YT1fLmtjKCJjWFgyV2IiKTtfLmw1YT14ZCgiSE1KWVFiIiwiQmp3TWNlIiwiZVFtU2ZmIixfLms1YSk7ZmMoIk8xUnEzIiwiSE1KWVFiIik7ZmMoInptcHRIZiIsIm02SUFLYiIpO2ZjKCJFUFJ0OWQiLCJiZlhIUWIiKTtmYygiUWx5cnliIiwiS2FobkJiIik7ZmMoImtqa3lrZCIsIkw1QW1xYiIpO2ZjKCJFdEN4OGIiLCJ5U2hUMWQiKTtmYygiSXAzRXJjIiwiTURQWDllIik7ZmMoIkw5N211ZCIsImtDWFpOYiIpO2ZjKCJnbHNjViIsImJmWEhRYiIpO2ZjKCJWWDNsUCIsIkthaG5CYiIpO2ZjKCJKTzBkSmQiLCJ5U2hUMWQiKTtmYygiWE5VcjdjIiwiTURQWDllIik7ZmMoIkZrZzdiZCIsImtDWFpOYiIpO18ubTVhPV8ua2MoIkpLb0tWZSIsW18ub1phLF8uU3FdKTtfLm41YT1fLmtjKCJMc2ZHU2QiLFtdKTtfLm81YT1fLmtjKCJWc0lmZmQiLFtfLldaYSxfLlNaYV0pO18ucDVhPV8ua2MoIkZhcXNWZCIsW18ubVphLF8uU1phXSk7Xy5xNWE9Xy5rYygieDRGWVhlIixbXSk7Xy5yNWE9Xy5rYygiRXRaOENkIixbXy54UmEsXy5ocixfLlBxLF8ueGksXy51aV0pO18uczVhPV8ua2MoInNGY3pxIixbXSk7Xy50NWE9Xy5rYygiT1pxR3RlIixbXy5TbyxfLlRvXSk7dmFyIHU1YT1mdW5jdGlvbihhKXtpZighYSlyZXR1cm4iIjtpZigvXmFib3V0Oig/OmJsYW5rfHNyY2RvYykkLy50ZXN0KGEpKXJldHVybiB3aW5kb3cub3JpZ2lufHwiIjthLmluZGV4T2YoImJsb2I6Iik9PT0wJiYoYT1hLnN1YnN0cmluZyg1KSk7YT1hLnNwbGl0KCIjIilbMF0uc3BsaXQoIj8iKVswXTthPWEudG9Mb3dlckNhc2UoKTthLmluZGV4T2YoIi8vIik9PTAmJihhPXdpbmRvdy5sb2NhdGlvbi5wcm90b2NvbCthKTsvXltcd1wtXSo6XC9cLy8udGVzdChhKXx8KGE9d2luZG93LmxvY2F0aW9uLmhyZWYpO3ZhciBiPWEuc3Vic3RyaW5nKGEuaW5kZXhPZigiOi8vIikrMyksYz1iLmluZGV4T2YoIi8iKTtjIT0tMSYmKGI9Yi5zdWJzdHJpbmcoMCxjKSk7Yz1hLnN1YnN0cmluZygwLGEuaW5kZXhPZigiOi8vIikpO2lmKCFjKXRocm93IEVycm9yKCJkZWAiK2EpO2lmKGMhPT0iaHR0cCImJmMhPT0iaHR0cHMiJiZjIT09ImNocm9tZS1leHRlbnNpb24iJiZjIT09Im1vei1leHRlbnNpb24iJiYKYyE9PSJmaWxlIiYmYyE9PSJhbmRyb2lkLWFwcCImJmMhPT0iY2hyb21lLXNlYXJjaCImJmMhPT0iY2hyb21lLXVudHJ1c3RlZCImJmMhPT0iY2hyb21lIiYmYyE9PSJhcHAiJiZjIT09ImRldnRvb2xzIil0aHJvdyBFcnJvcigiZWVgIitjKTthPSIiO3ZhciBkPWIuaW5kZXhPZigiOiIpO2lmKGQhPS0xKXt2YXIgZT1iLnN1YnN0cmluZyhkKzEpO2I9Yi5zdWJzdHJpbmcoMCxkKTtpZihjPT09Imh0dHAiJiZlIT09IjgwInx8Yz09PSJodHRwcyImJmUhPT0iNDQzIilhPSI6IitlfXJldHVybiBjKyI6Ly8iK2IrYX07dmFyIHc1YT1jbGFzcyBleHRlbmRzIF8ubHtjb25zdHJ1Y3RvcihhKXtzdXBlcihhKX1jbGVhclZhbHVlKCl7cmV0dXJuIF8ud2oodGhpcyx2NWEpfX0sdjVhPVsxLDIsM107dmFyIHk1YT1jbGFzcyBleHRlbmRzIF8ubHtjb25zdHJ1Y3RvcihhKXtzdXBlcihhKX1jbGVhclZhbHVlKCl7cmV0dXJuIF8ud2oodGhpcyx4NWEpfX0seDVhPVsxLDIsM107dmFyIHo1YT1jbGFzcyBleHRlbmRzIF8ubHtjb25zdHJ1Y3RvcihhKXtzdXBlcihhKX19O3ZhciBBNWE9Y2xhc3MgZXh0ZW5kcyBfLmx7Y29uc3RydWN0b3IoYSl7c3VwZXIoYSl9fTt2YXIgQjVhPWNsYXNzIGV4dGVuZHMgXy5se2NvbnN0cnVjdG9yKGEpe3N1cGVyKGEpfX07dmFyIEQ1YT1mdW5jdGlvbihhLGIsYyl7dmFyIGQ9U3RyaW5nKF8uZWEubG9jYXRpb24uaHJlZik7cmV0dXJuIGQmJmEmJmI/W2IsQzVhKHU1YShkKSxhLGN8fG51bGwpXS5qb2luKCIgIik6bnVsbH0sQzVhPWZ1bmN0aW9uKGEsYixjKXt2YXIgZD1bXSxlPVtdO2lmKChBcnJheS5pc0FycmF5KGMpPzI6MSk9PTEpcmV0dXJuIGU9W2IsYV0sXy5MYShkLGZ1bmN0aW9uKGgpe2UucHVzaChoKX0pLEU1YShlLmpvaW4oIiAiKSk7dmFyIGY9W10sZz1bXTtfLkxhKGMsZnVuY3Rpb24oaCl7Zy5wdXNoKGgua2V5KTtmLnB1c2goaC52YWx1ZSl9KTtjPU1hdGguZmxvb3IoKG5ldyBEYXRlKS5nZXRUaW1lKCkvMUUzKTtlPWYubGVuZ3RoPT0wP1tjLGIsYV06W2Yuam9pbigiOiIpLGMsYixhXTtfLkxhKGQsZnVuY3Rpb24oaCl7ZS5wdXNoKGgpfSk7YT1FNWEoZS5qb2luKCIgIikpO2E9W2MsYV07Zy5sZW5ndGg9PTB8fGEucHVzaChnLmpvaW4oIiIpKTtyZXR1cm4gYS5qb2luKCJfIil9LEU1YT1mdW5jdGlvbihhKXt2YXIgYj0KTXphKCk7Yi51cGRhdGUoYSk7cmV0dXJuIGIuZGlnZXN0U3RyaW5nKCkudG9Mb3dlckNhc2UoKX07dmFyIEc1YTtfLkY1YT1mdW5jdGlvbigpe3ZhciBhPV8uZWEuX19TQVBJU0lEfHxfLmVhLl9fQVBJU0lEfHxfLmVhLl9fM1BTQVBJU0lEfHxfLmVhLl9fMVBTQVBJU0lEfHxfLmVhLl9fT1ZFUlJJREVfU0lEO2lmKGEpcmV0dXJuITA7dHlwZW9mIGRvY3VtZW50IT09InVuZGVmaW5lZCImJihhPW5ldyBEbmEoZG9jdW1lbnQpLGE9YS5nZXQoIlNBUElTSUQiKXx8YS5nZXQoIkFQSVNJRCIpfHxhLmdldCgiX19TZWN1cmUtM1BBUElTSUQiKXx8YS5nZXQoIl9fU2VjdXJlLTFQQVBJU0lEIikpO3JldHVybiEhYX07RzVhPWZ1bmN0aW9uKGEsYixjLGQpeyhhPV8uZWFbYV0pfHx0eXBlb2YgZG9jdW1lbnQ9PT0idW5kZWZpbmVkInx8KGE9KG5ldyBEbmEoZG9jdW1lbnQpKS5nZXQoYikpO3JldHVybiBhP0Q1YShhLGMsZCk6bnVsbH07Cl8uSDVhPWZ1bmN0aW9uKGEpe3ZhciBiPXU1YShfLmVhPT1udWxsP3ZvaWQgMDpfLmVhLmxvY2F0aW9uLmhyZWYpLGM9W107aWYoXy5GNWEoKSl7Yj1iLmluZGV4T2YoImh0dHBzOiIpPT0wfHxiLmluZGV4T2YoImNocm9tZS1leHRlbnNpb246Iik9PTB8fGIuaW5kZXhPZigiY2hyb21lLXVudHJ1c3RlZDovL25ldy10YWItcGFnZSIpPT0wfHxiLmluZGV4T2YoIm1vei1leHRlbnNpb246Iik9PTA7dmFyIGQsZT0oZD1iKT9fLmVhLl9fU0FQSVNJRDpfLmVhLl9fQVBJU0lEO2V8fHR5cGVvZiBkb2N1bWVudD09PSJ1bmRlZmluZWQifHwoZT1uZXcgRG5hKGRvY3VtZW50KSxlPWUuZ2V0KGQ/IlNBUElTSUQiOiJBUElTSUQiKXx8ZS5nZXQoIl9fU2VjdXJlLTNQQVBJU0lEIikpOyhkPWU/RDVhKGUsZD8iU0FQSVNJREhBU0giOiJBUElTSURIQVNIIixhKTpudWxsKSYmYy5wdXNoKGQpO2ImJigoYj1HNWEoIl9fMVBTQVBJU0lEIiwiX19TZWN1cmUtMVBBUElTSUQiLCJTQVBJU0lEMVBIQVNIIiwKYSkpJiZjLnB1c2goYiksKGE9RzVhKCJfXzNQU0FQSVNJRCIsIl9fU2VjdXJlLTNQQVBJU0lEIiwiU0FQSVNJRDNQSEFTSCIsYSkpJiZjLnB1c2goYSkpfXJldHVybiBjLmxlbmd0aD09MD9udWxsOmMuam9pbigiICIpfTt2YXIgSTVhPWNsYXNze2NvbnN0cnVjdG9yKCl7dGhpcy5taW5TaXplPTEwMjR9YXN5bmMgQ3VhKGEpe3ZhciBiPSgwLF8uTWYpKCksYz1iKCk7Yj1iKDEpO3RyeXtsZXQgZD1uZXcgQ29tcHJlc3Npb25TdHJlYW0oImd6aXAiKSxlPShuZXcgUmVzcG9uc2UoZC5yZWFkYWJsZSkpLmFycmF5QnVmZmVyKCksZj1kLndyaXRhYmxlLmdldFdyaXRlcigpO2IoYXdhaXQgYyhmLndyaXRlKChuZXcgVGV4dEVuY29kZXIpLmVuY29kZShhKSkpKTtiKGF3YWl0IGMoZi5jbG9zZSgpKSk7cmV0dXJuIG5ldyBVaW50OEFycmF5KGIoYXdhaXQgYyhlKSkpfWZpbmFsbHl7YygpfX1pc1N1cHBvcnRlZChhKXtyZXR1cm4gYTx0aGlzLm1pblNpemU/ITE6dHlwZW9mIENvbXByZXNzaW9uU3RyZWFtIT09InVuZGVmaW5lZCJ9fTt2YXIgSjVhPWNsYXNze2NvbnN0cnVjdG9yKGEsYil7dGhpcy5pbnRlcnZhbE1zPWE7dGhpcy5jYWxsYmFjaz1iO3RoaXMuZW5hYmxlZD0hMTt0aGlzLmthPSgpPT5fLmtlKCk7dGhpcy5vYT10aGlzLmthKCl9c2V0SW50ZXJ2YWwoYSl7dGhpcy5pbnRlcnZhbE1zPWE7dGhpcy50aW1lciYmdGhpcy5lbmFibGVkPyh0aGlzLnN0b3AoKSx0aGlzLnN0YXJ0KCkpOnRoaXMudGltZXImJnRoaXMuc3RvcCgpfXN0YXJ0KCl7dGhpcy5lbmFibGVkPSEwO3RoaXMudGltZXJ8fCh0aGlzLnRpbWVyPXNldFRpbWVvdXQoKCk9Pnt0aGlzLnRpY2soKX0sdGhpcy5pbnRlcnZhbE1zKSx0aGlzLm9hPXRoaXMua2EoKSl9c3RvcCgpe3RoaXMuZW5hYmxlZD0hMTt0aGlzLnRpbWVyJiYoY2xlYXJUaW1lb3V0KHRoaXMudGltZXIpLHRoaXMudGltZXI9dm9pZCAwKX10aWNrKCl7aWYodGhpcy5lbmFibGVkKXtsZXQgYT1NYXRoLm1heCh0aGlzLmthKCktdGhpcy5vYSwwKTthPHRoaXMuaW50ZXJ2YWxNcyouOD8KdGhpcy50aW1lcj1zZXRUaW1lb3V0KCgpPT57dGhpcy50aWNrKCl9LHRoaXMuaW50ZXJ2YWxNcy1hKToodGhpcy50aW1lciYmKGNsZWFyVGltZW91dCh0aGlzLnRpbWVyKSx0aGlzLnRpbWVyPXZvaWQgMCksdGhpcy5jYWxsYmFjaygpLHRoaXMuZW5hYmxlZCYmKHRoaXMuc3RvcCgpLHRoaXMuc3RhcnQoKSkpfWVsc2UgdGhpcy50aW1lcj12b2lkIDB9fTt2YXIgSzVhPWNsYXNzIGV4dGVuZHMgXy5se2NvbnN0cnVjdG9yKGEpe3N1cGVyKGEpfWc4YSgpe3JldHVybiBfLk9qKHRoaXMsMSl9blViKCl7cmV0dXJuIF8ueGUodGhpcywzKX19O3ZhciBRemE9Y2xhc3MgZXh0ZW5kcyBfLmx7Y29uc3RydWN0b3IoYSl7c3VwZXIoYSl9VVEoKXtyZXR1cm4gXy50KHRoaXMsMSl9Z2V0VmVyc2lvbigpe3JldHVybiBfLnQodGhpcywyKX19O3ZhciBQemE9ZnVuY3Rpb24oYSl7Xy5IaihSemEsMSxhKX0sTDVhPWNsYXNzIGV4dGVuZHMgXy5se2NvbnN0cnVjdG9yKGEpe3N1cGVyKGEpfXVuKCl7cmV0dXJuIF8udCh0aGlzLDYpfX0sTTVhPV8uZGMoTDVhKTt2YXIgTjVhPWNsYXNzIGV4dGVuZHMgXy5se2NvbnN0cnVjdG9yKGEpe3N1cGVyKGEpfX07dmFyIE81YT1bMCxfLkUsLTEsXy5HLF8uRSwtMSxfLkcsXy5FLC0xLFswLF8uRixbMCxfLkUsLTFdLF8uRCxfLkUsLTVdLFswLF8uRyxfLkQsXy5DLC0yXV07dmFyIE56YT1bInBsYXRmb3JtIiwicGxhdGZvcm1WZXJzaW9uIiwiYXJjaGl0ZWN0dXJlIiwibW9kZWwiLCJ1YUZ1bGxWZXJzaW9uIl0sUnphPW5ldyBMNWEsT3phPW51bGw7dmFyIFA1YT1bMCxfLkUsXy5HLDEsXy5FLC0xLF8uRywxLF8uRywxLF8uaWxdO3ZhciBRNWE9WzAsXy5HLF8uRSwtMl07dmFyIFI1YT1bMCxfLkUsXy5HXTt2YXIgUzVhPVswLF8uRSxfLkddO3ZhciBUNWE9WzAsXy5ELC0zXTt2YXIgVTVhPVswLF8uRyxfLkUsLTEsXy5pbCxfLkMsLTEsXy5FLC01LF8uRixbMCxfLkUsLTRdLC0xLF8uRCxbMCxfLkQsLTNdLF8uR107dmFyIFY1YT1mdW5jdGlvbihhKXtyZXR1cm4gXy5aaChhLDEsMSl9LFc1YT1jbGFzcyBleHRlbmRzIF8ubHtjb25zdHJ1Y3RvcihhKXtzdXBlcihhKX19O18uU25bNjYzMjE2ODddPVswLF8uRywxLFswLF8uRSwtNixfLmlsLF8uQyxfLkUsLTEsXy5pbF0sMSxbMCxfLkUsMSxfLkUsLTVdLF8uRSwtMSxbMCxfLkcsXy5FLC04XSxbMCxfLkUsLTNdLFswLF8uRSxfLkcsXy5FLC0yXSxPNWEsXy5pbCxbMCxfLkUsLTMsXy5pbCxfLkMsXy5FLC0xXSxbMCxfLkcsXy5FLC0xXSxbMCxfLkUsLTldLFswLF8uRSwtNixfLkcsXy5FLDEsXy5FLF8uRCxfLkcsLTEsXy5ELF8uRSwtMixfLkcsXy5FLF8uRyxfLkUsXy5DLC0xXSwxLFswLF8uR10sMSxbMCxfLkUsLTRdLDEsUDVhLFswLFsxLDIsMyw0LDUsNl0sXy5JbCxQNWEsXy5JbCxSNWEsXy5JbCxTNWEsXy5JbCxbMCxfLkddLF8uSWwsVTVhLF8uSWwsUTVhXSxSNWEsUzVhLFU1YSxbMCxbMCxfLkcsXy5FLC0xLF8uaWwsXy5DLC0xLF8uRSwtNCxfLkYsWzAsXy5FLC00XSwtMSwxLFQ1YV0sWzAsXy5HLF8uRSwtMSxfLmlsLF8uQywtMSxfLkUsLTQsVDVhXV0sUTVhLFswLF8uRSxbMCxfLkMsLTMsXy5HXSwKXy5HLC0yLFswLF8uQywtMV0sXy5EXSw0LFswLF8uRSxfLkcsXy5FLC0xLF8uaWwsXy5HLF8uRSwtMSxfLkcsXy5DLC0xXV07dmFyIFg1YT1jbGFzcyBleHRlbmRzIF8ubHtjb25zdHJ1Y3RvcihhKXtzdXBlcihhLDE5KX12X2EoYSl7cmV0dXJuIF8uWmgodGhpcywyLGEpfX07dmFyIFo1YSwkNWEsYTZhLGI2YTtaNWE9ZnVuY3Rpb24oYSxiKXtfLlNiKGEub2EsVzVhLDEsYik7Xy5PaihiLDEpfHxWNWEoYik7YS5hamF8fChiPV8uWTVhKGEpLF8udChiLDUpfHxfLmZoKGIsNSxhLmxvY2FsZSkpO2Eud2EmJihiPV8uWTVhKGEpLF8ucShiLEw1YSw5KXx8Xy5TYihiLEw1YSw5LGEud2EpKX07Xy5ZNWE9ZnVuY3Rpb24oYSl7dmFyIGI9Xy5xKGEub2EsVzVhLDEpO2J8fChiPW5ldyBXNWEsWjVhKGEsYikpO2E9YjtiPV8ucShhLE41YSwxMSk7Ynx8KGI9bmV3IE41YSxfLlNiKGEsTjVhLDExLGIpKTtyZXR1cm4gYn07JDVhPWZ1bmN0aW9uKGEsYil7YS5rYT1ifTthNmE9ZnVuY3Rpb24oYSl7dmFyIGI9YS5hamE/dm9pZCAwOl8uaGkoKTtiP1N6YShiLE56YSkudGhlbihjPT57YS53YT1NNWEoYyE9bnVsbD9jOiJbXSIpO2M9Xy5ZNWEoYSk7Xy5TYihjLEw1YSw5LGEud2EpO3JldHVybiEwfSkuY2F0Y2goKCk9PiExKTpQcm9taXNlLnJlc29sdmUoITEpfTsKYjZhPWNsYXNze2NvbnN0cnVjdG9yKGEsYj0hMSl7dGhpcy5hamE9Yjt0aGlzLndhPXRoaXMubG9jYWxlPW51bGw7dGhpcy5rYT0wO3RoaXMuaXNGaW5hbD0hMTt0aGlzLm9hPW5ldyBYNWE7TnVtYmVyLmlzSW50ZWdlcihhKSYmdGhpcy5vYS52X2EoYSk7Ynx8KHRoaXMubG9jYWxlPWRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5nZXRBdHRyaWJ1dGUoImxhbmciKSk7WjVhKHRoaXMsbmV3IFc1YSl9dl9hKGEpe3RoaXMub2Eudl9hKGEpO3JldHVybiB0aGlzfWJ1aWxkKGEsYj0wLGM9MCxkPW51bGwsZT0wLGY9MCl7aWYoIXRoaXMuYWphKXt2YXIgZz1fLlk1YSh0aGlzKTt2YXIgaD1uZXcgSzVhO2g9Xy5aaChoLDEsdGhpcy5rYSk7aD1fLiRoKGgsMix0aGlzLmlzRmluYWwpO2M9Xy5sayhoLDMsYz4wP2M6dm9pZCAwKTtlPV8ubGsoYyw0LGU+MD9lOnZvaWQgMCk7Zj1fLmxrKGUsNSxmPjA/Zjp2b2lkIDApLlRjKCk7Xy5TYihnLEs1YSwxMCxmKX1nPXRoaXMub2EuY2xvbmUoKTtmPURhdGUubm93KCkudG9TdHJpbmcoKTsKZz1fLnNrKGcsNCxmKTthPWEuc2xpY2UoKTthPV8uSGooZywzLGEpO2QmJihkPV8uY0xhKG5ldyBfLmRMYSxkKSxnPV8uZkxhKGQpLGQ9bmV3IFJUYSxkPV8uU2IoZCxfLmVMYSwxLGcpLGQ9Xy5aaChkLDIsOSksXy5TYihhLFJUYSwxOCxkKSk7YiYmXy50aChhLDE0LGIpO3JldHVybiBhfX07Xy5UemEucHJvdG90eXBlLm9tYj0wO18uVHphLnByb3RvdHlwZS5yZXNldD1mdW5jdGlvbigpe3RoaXMua2E9dGhpcy5vYT10aGlzLndhO3RoaXMub21iPTB9O18uVHphLnByb3RvdHlwZS5nZXRWYWx1ZT1mdW5jdGlvbigpe3JldHVybiB0aGlzLm9hfTtfLlR6YS5wcm90b3R5cGUucWdhPWZ1bmN0aW9uKCl7dGhpcy5rYT1NYXRoLm1pbih0aGlzLkJhLHRoaXMua2EqdGhpcy5FYSk7dGhpcy5vYT1NYXRoLm1pbih0aGlzLkJhLHRoaXMua2ErKHRoaXMuQWE/TWF0aC5yb3VuZCh0aGlzLkFhKihNYXRoLnJhbmRvbSgpLS41KSoyKnRoaXMua2EpOjApKTt0aGlzLm9tYisrfTt2YXIgYzZhPWNsYXNzIGV4dGVuZHMgXy5se2NvbnN0cnVjdG9yKGEpe3N1cGVyKGEsOCl9fSxkNmE9Xy5kYyhjNmEpO3ZhciBlNmE9Xy5VYigxNzUyMzczNzUsYzZhLGNsYXNzIGV4dGVuZHMgXy5se2NvbnN0cnVjdG9yKGEpe3N1cGVyKGEpfX0pO3ZhciBmNmEsZzZhLGg2YSxpNmEsazZhLG02YSxuNmEsbzZhLGw2YSxwNmE7ZjZhPWZ1bmN0aW9uKCl7cmV0dXJuImh0dHBzOi8vcGxheS5nb29nbGUuY29tL2xvZz9mb3JtYXQ9anNvbiZoYXNmYXN0PXRydWUifTtnNmE9ZnVuY3Rpb24oYSxiKXtpZighYS5yYilyZXR1cm4oKT0+e307dmFyIGM9KCk9PnthLmZsdXNoKCl9O3JldHVybiBiPygpPT57YigpLnRoZW4oYyl9OmN9O2g2YT1mdW5jdGlvbihhKXthLkthfHwoYS5LYT1mNmEoKSk7dHJ5e3JldHVybihuZXcgVVJMKGEuS2EpKS50b1N0cmluZygpfWNhdGNoKGIpe3JldHVybihuZXcgVVJMKGEuS2EsXy5oaSgpLmxvY2F0aW9uLm9yaWdpbikpLnRvU3RyaW5nKCl9fTtpNmE9ZnVuY3Rpb24oYSxiLGMpe2EuUmEmJmEuUmEuaW5jcmVtZW50KGIsYyl9OwpfLmo2YT1mdW5jdGlvbihhLGIpe2I/KGEuZXhwZXJpbWVudElkc3x8KGEuZXhwZXJpbWVudElkcz1uZXcgdEVhKSxhPWEuZXhwZXJpbWVudElkcyxiPWIuRmMoKSxfLmZoKGEsNCxiKSk6YS5leHBlcmltZW50SWRzJiZfLkdlKGEuZXhwZXJpbWVudElkcyw0KX07azZhPWZ1bmN0aW9uKGEsYil7YS5CYT1uZXcgXy5UemEoYjwxPzE6YiwzRTUsLjEpO2Eud2Euc2V0SW50ZXJ2YWwoYS5CYS5nZXRWYWx1ZSgpKX07bTZhPWZ1bmN0aW9uKGEpe2w2YShhLDMyLDEwLChiLGMpPT57Yj1uZXcgVVJMKGIpO2Iuc2VhcmNoUGFyYW1zLnNldCgiZm9ybWF0IiwianNvbiIpO3ZhciBkPSExO3RyeXtkPV8uaGkoKS5uYXZpZ2F0b3Iuc2VuZEJlYWNvbihiLnRvU3RyaW5nKCksYy5GYygpKX1jYXRjaChlKXt9ZHx8KGEuRWE9ITEpO3JldHVybiBkfSl9OwpuNmE9ZnVuY3Rpb24oYSxiLGM9bnVsbCxkPWEud2l0aENyZWRlbnRpYWxzKXt2YXIgZT17fSxmPW5ldyBVUkwoaDZhKGEpKTtjJiYoZS5BdXRob3JpemF0aW9uPWMpO2EuVVgmJihlWyJYLUdvb2ctQXV0aFVzZXIiXT1hLlVYLGYuc2VhcmNoUGFyYW1zLnNldCgiYXV0aHVzZXIiLGEuVVgpKTthLnRYJiYoT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsIlgtR29vZy1QYWdlSWQiLHt2YWx1ZTphLnRYfSksZi5zZWFyY2hQYXJhbXMuc2V0KCJwYWdlSWQiLGEudFgpKTtyZXR1cm57dXJsOmYudG9TdHJpbmcoKSxib2R5OmIsWm1jOjEscmVxdWVzdEhlYWRlcnM6ZSxyZXF1ZXN0VHlwZToiUE9TVCIsd2l0aENyZWRlbnRpYWxzOmQsdGltZW91dE1pbGxpczphLnRpbWVvdXRNaWxsaXN9fTsKbzZhPWZ1bmN0aW9uKGEpe2w2YShhLDYsNSwoYixjKT0+e2I9bmV3IFVSTChiKTtiLnNlYXJjaFBhcmFtcy5zZXQoImZvcm1hdCIsImJhc2U2NGpzb24iKTtiLnNlYXJjaFBhcmFtcy5zZXQoInAiLF8uUGEoYy5GYygpLDMpKTtjPWIudG9TdHJpbmcoKTtpZihjLmxlbmd0aD4xNTM2MClyZXR1cm4hMTsobmV3IEltYWdlKS5zcmM9YztyZXR1cm4hMH0pfTsKbDZhPWZ1bmN0aW9uKGEsYixjLGQpe2lmKGEua2EubGVuZ3RoIT09MCl7dmFyIGU9bmV3IFVSTChoNmEoYSkpO2Uuc2VhcmNoUGFyYW1zLmRlbGV0ZSgiZm9ybWF0Iik7dmFyIGY9YS5TdmEoKTtmJiZlLnNlYXJjaFBhcmFtcy5zZXQoImF1dGgiLGYpO2Uuc2VhcmNoUGFyYW1zLnNldCgiYXV0aHVzZXIiLGEuVVh8fCIwIik7Zm9yKGY9MDtmPGMmJmEua2EubGVuZ3RoOysrZil7bGV0IGc9YS5rYS5zbGljZSgwLGIpLGg9YS5vYS5idWlsZChnLGEuQWEsYS5HYSxhLlRxYSxhLlphLGEuU2EpO2lmKCFkKGUudG9TdHJpbmcoKSxoKSl7KythLkdhO2JyZWFrfWEuQWE9MDthLkdhPTA7YS5aYT0wO2EuU2E9MDthLmthPWEua2Euc2xpY2UoZy5sZW5ndGgpfWEud2EuZW5hYmxlZCYmYS53YS5zdG9wKCl9fTsKcDZhPWNsYXNzIGV4dGVuZHMgXy5FZHtjb25zdHJ1Y3RvcihhKXtzdXBlcigpO3RoaXMuZ009IiI7dGhpcy5rYT1bXTt0aGlzLkpiPSIiO3RoaXMudFg9bnVsbDt0aGlzLk9hPXRoaXMuUGE9dGhpcy5JYT0hMTt0aGlzLk9iPXRoaXMubmI9LTE7dGhpcy5JYj0hMTt0aGlzLk5hPXRoaXMuZXhwZXJpbWVudElkcz1udWxsO3RoaXMuR2E9dGhpcy5BYT0wO3RoaXMuUmE9bnVsbDt0aGlzLlNhPXRoaXMuWmE9MDt0aGlzLlFiPTE7dGhpcy50aW1lb3V0TWlsbGlzPTA7dGhpcy5BYj0hMTt0aGlzLkcyPWEuRzI7dGhpcy5TdmE9YS5TdmF8fCgoKT0+e30pO3RoaXMub2E9bmV3IGI2YShhLkcyLGEuYWphKTt0aGlzLm5ldHdvcms9YS5uZXR3b3JrfHxudWxsO3RoaXMuVHFhPWEuVHFhfHxudWxsO3RoaXMuYnVmZmVyU2l6ZT0xRTM7dGhpcy5LYT1hLkFTY3x8bnVsbDt0aGlzLlVYPWEuVVh8fG51bGw7dGhpcy5SUWE9YS5SUWF8fCExO3RoaXMueGM9bnVsbDt0aGlzLndpdGhDcmVkZW50aWFscz0hYS5vbmI7CnRoaXMuYWphPWEuYWphfHwhMTt0aGlzLkVhPSF0aGlzLmFqYSYmISFfLmhpKCkmJiEhXy5oaSgpLm5hdmlnYXRvciYmXy5oaSgpLm5hdmlnYXRvci5zZW5kQmVhY29uIT09dm9pZCAwO3RoaXMucmI9dHlwZW9mIFVSTFNlYXJjaFBhcmFtcyE9PSJ1bmRlZmluZWQiJiYhIShuZXcgVVJMKGY2YSgpKSkuc2VhcmNoUGFyYW1zJiYhIShuZXcgVVJMKGY2YSgpKSkuc2VhcmNoUGFyYW1zLnNldDt2YXIgYj1WNWEobmV3IFc1YSk7WjVhKHRoaXMub2EsYik7dGhpcy5CYT1uZXcgXy5UemEoMUU0LDNFNSwuMSk7YT1nNmEodGhpcyxhLkozYSk7dGhpcy53YT1uZXcgSjVhKHRoaXMuQmEuZ2V0VmFsdWUoKSxhKTt0aGlzLkZiPW5ldyBKNWEoNkU1LGEpO3RoaXMuUlFhfHx0aGlzLkZiLnN0YXJ0KCk7aWYoIXRoaXMuYWphKXtkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCJ2aXNpYmlsaXR5Y2hhbmdlIiwoKT0+e2lmKGRvY3VtZW50LnZpc2liaWxpdHlTdGF0ZT09PSJoaWRkZW4iKXt0aGlzLk04KCk7CmxldCBlOyhlPXRoaXMuUmEpPT1udWxsfHxlLmZsdXNoKCl9fSk7bGV0IGMsZDsoYz1fLmhpKCkpPT1udWxsfHwoZD1jLmFkZEV2ZW50TGlzdGVuZXIpPT1udWxsfHxkLmNhbGwoYywicGFnZWhpZGUiLCgpPT57dGhpcy5NOCgpO3ZhciBlOyhlPXRoaXMuUmEpPT1udWxsfHxlLmZsdXNoKCl9KX19cWMoKXt0aGlzLk04KCk7dGhpcy53YS5zdG9wKCk7dGhpcy5GYi5zdG9wKCk7c3VwZXIucWMoKX1kaXNwYXRjaChhKXtpZihhIGluc3RhbmNlb2YgXy5TcCl0aGlzLmxvZyhhKTtlbHNlIHRyeXt2YXIgYj1fLlVUYShuZXcgXy5TcCxhLkZjKCkpO3RoaXMubG9nKGIpfWNhdGNoKGMpe2k2YSh0aGlzLDQsMSl9fXNldFByb2R1Y3RJRChhKXt0aGlzLlRxYT1hfWxvZyhhKXtpNmEodGhpcywyLDEpO2lmKHRoaXMucmIpe2E9YS5jbG9uZSgpO3ZhciBiPXRoaXMuUWIrKzthPV8udGgoYSwyMSxiKTt0aGlzLmdNJiZfLmZoKGEsMjYsdGhpcy5nTSk7Yj1hO2lmKF8uWGNhKF8uaWooYiwxLHZvaWQgMCkpPT0KbnVsbCl7dmFyIGM9RGF0ZS5ub3coKTtjPU51bWJlci5pc0Zpbml0ZShjKT9jLnRvU3RyaW5nKCk6IjAiO18uc2soYiwxLGMpfV8uRmUoYiwxNSl8fF8udGgoYiwxNSwobmV3IERhdGUpLmdldFRpbWV6b25lT2Zmc2V0KCkqNjApO3RoaXMuZXhwZXJpbWVudElkcyYmKGM9dGhpcy5leHBlcmltZW50SWRzLmNsb25lKCksXy5TYihiLHRFYSwxNixjKSk7aTZhKHRoaXMsMSwxKTtiPXRoaXMua2EubGVuZ3RoLXRoaXMuYnVmZmVyU2l6ZSsxO2I+MCYmKHRoaXMua2Euc3BsaWNlKDAsYiksdGhpcy5BYSs9YixpNmEodGhpcywzLGIpKTt0aGlzLmthLnB1c2goYSk7dGhpcy5SUWF8fHRoaXMud2EuZW5hYmxlZHx8dGhpcy53YS5zdGFydCgpfX1mbHVzaChhLGIpe2lmKHRoaXMua2EubGVuZ3RoPT09MClhJiZhKCk7ZWxzZSBpZih0aGlzLkFiJiZ0aGlzLkVhKXRoaXMub2Eua2E9MyxtNmEodGhpcyk7ZWxzZXt2YXIgYz1EYXRlLm5vdygpO2lmKHRoaXMuT2I+YyYmdGhpcy5uYjxjKWImJmIoInRocm90dGxlZCIpOwplbHNle3RoaXMubmV0d29yayYmKHR5cGVvZiB0aGlzLm5ldHdvcmsuZzhhPT09ImZ1bmN0aW9uIj8kNWEodGhpcy5vYSx0aGlzLm5ldHdvcmsuZzhhKCkpOnRoaXMub2Eua2E9MCk7dmFyIGQ9dGhpcy5rYS5sZW5ndGgsZT10aGlzLm9hLmJ1aWxkKHRoaXMua2EsdGhpcy5BYSx0aGlzLkdhLHRoaXMuVHFhLHRoaXMuWmEsdGhpcy5TYSksZj10aGlzLlN2YSgpO2lmKGYmJnRoaXMuSmI9PT1mKWImJmIoInN0YWxlLWF1dGgtdG9rZW4iKTtlbHNlIGlmKHRoaXMua2E9W10sdGhpcy53YS5lbmFibGVkJiZ0aGlzLndhLnN0b3AoKSx0aGlzLkFhPTAsdGhpcy5JYSlhJiZhKCk7ZWxzZXtjPWUuRmMoKTtsZXQgZzt0aGlzLk5hJiZ0aGlzLk5hLmlzU3VwcG9ydGVkKGMubGVuZ3RoKSYmKGc9dGhpcy5OYS5DdWEoYykpO2xldCBoPW42YSh0aGlzLGMsZiksaz1wPT57dGhpcy5CYS5yZXNldCgpO3RoaXMud2Euc2V0SW50ZXJ2YWwodGhpcy5CYS5nZXRWYWx1ZSgpKTtpZihwKXt2YXIgcj1udWxsO3RyeXtsZXQgeD0KSlNPTi5zdHJpbmdpZnkoSlNPTi5wYXJzZShwLnJlcGxhY2UoIildfSdcbiIsIiIpKSk7cj1kNmEoeCl9Y2F0Y2goeCl7fXImJihwPU51bWJlcihfLkRlKHIsMSxfLllhKCItMSIpKSkscD4wJiYodGhpcy5uYj1EYXRlLm5vdygpLHRoaXMuT2I9dGhpcy5uYitwKSxyPXIuTGMoZTZhKSkmJihyPV8ueGUociwxLC0xKSxyIT09LTEmJih0aGlzLklifHxrNmEodGhpcyxyKSkpfWEmJmEoKTt0aGlzLkdhPTB9LG09KHAscik9Pnt2YXIgeD1fLm1oKGUsXy5TcCwzLF8ub2goKSk7dmFyIHo9TnVtYmVyKF8uRGUoZSwxNCkpO3RoaXMuQmEucWdhKCk7dGhpcy53YS5zZXRJbnRlcnZhbCh0aGlzLkJhLmdldFZhbHVlKCkpO3A9PT00MDEmJmYmJih0aGlzLkpiPWYpO3omJih0aGlzLkFhKz16KTtyPT09dm9pZCAwJiYocj10aGlzLkR4YShwKSk7ciYmKHRoaXMua2E9eC5jb25jYXQodGhpcy5rYSksdGhpcy5SUWF8fHRoaXMud2EuZW5hYmxlZHx8dGhpcy53YS5zdGFydCgpKTtpNmEodGhpcyw3LDEpOwpiJiZiKCJuZXQtc2VuZC1mYWlsZWQiLHApOysrdGhpcy5HYX0sbj0oKT0+e3RoaXMubmV0d29yayYmdGhpcy5uZXR3b3JrLnNlbmQoaCxrLG0pfTtnP2cudGhlbihwPT57aTZhKHRoaXMsNSxkKTtoLnJlcXVlc3RIZWFkZXJzWyJDb250ZW50LUVuY29kaW5nIl09Imd6aXAiO2gucmVxdWVzdEhlYWRlcnNbIkNvbnRlbnQtVHlwZSJdPSJhcHBsaWNhdGlvbi9iaW5hcnkiO2guYm9keT1wO2guWm1jPTI7bigpfSwoKT0+e2k2YSh0aGlzLDYsZCk7bigpfSk6bigpfX19fU04KCl7dGhpcy5JYXx8KHRoaXMub2EuaXNGaW5hbD0hMCx0aGlzLlBhJiYodGhpcy5vYS5rYT0zLG02YSh0aGlzKSksdGhpcy5PYSYmKHRoaXMub2Eua2E9MixvNmEodGhpcykpLHRoaXMuZmx1c2goKSx0aGlzLm9hLmlzRmluYWw9ITEpfUR4YShhKXtyZXR1cm4gNTAwPD1hJiZhPDYwMHx8YT09PTQwMXx8YT09PTB9fTt2YXIgcTZhPWNsYXNze2NvbnN0cnVjdG9yKCl7dGhpcy5Za2M9dHlwZW9mIEFib3J0Q29udHJvbGxlciE9PSJ1bmRlZmluZWQifWFzeW5jIHNlbmQoYSxiLGMpe3ZhciBkPSgwLF8uTWYpKCksZT1kKCk7ZD1kKDEpO3RyeXtsZXQgZj10aGlzLllrYz9uZXcgQWJvcnRDb250cm9sbGVyOnZvaWQgMCxnPWYmJmEudGltZW91dE1pbGxpcz4wP3NldFRpbWVvdXQoKCk9PntmLmFib3J0KCl9LGEudGltZW91dE1pbGxpcyk6dm9pZCAwO3RyeXtsZXQgaD1PYmplY3QuYXNzaWduKHt9LHttZXRob2Q6YS5yZXF1ZXN0VHlwZSxoZWFkZXJzOk9iamVjdC5hc3NpZ24oe30sYS5yZXF1ZXN0SGVhZGVycyl9LGEuYm9keSYme2JvZHk6YS5ib2R5fSxhLndpdGhDcmVkZW50aWFscyYme2NyZWRlbnRpYWxzOiJpbmNsdWRlIn0se3NpZ25hbDphLnRpbWVvdXRNaWxsaXMmJmY/Zi5zaWduYWw6bnVsbH0pLGs9ZChhd2FpdCBlKGZldGNoKGEudXJsLGgpKSk7ay5zdGF0dXM9PT0yMDA/Yj09bnVsbHx8YihkKGF3YWl0IGUoay50ZXh0KCkpKSk6CmM9PW51bGx8fGMoay5zdGF0dXMpfWNhdGNoKGgpe3N3aXRjaChkKCksaD09bnVsbD92b2lkIDA6aC5uYW1lKXtjYXNlICJBYm9ydEVycm9yIjpjPT1udWxsfHxjKDQwOCk7YnJlYWs7ZGVmYXVsdDpjPT1udWxsfHxjKDQwMCl9fWZpbmFsbHl7Y2xlYXJUaW1lb3V0KGcpfX1maW5hbGx5e2UoKX19ZzhhKCl7cmV0dXJuIDR9fTtfLnI2YT1mdW5jdGlvbihhLGIpe2Euakc9YjtyZXR1cm4gYX07Xy5zNmE9ZnVuY3Rpb24oYSxiKXthLndtYT1iO3JldHVybiBhfTtfLnQ2YT1mdW5jdGlvbihhKXthLkJhPSEwO3JldHVybiBhfTtfLnU2YT1mdW5jdGlvbihhKXthLkdhPSEwO3JldHVybiBhfTtfLnY2YT1mdW5jdGlvbihhKXthLndhPSEwO3JldHVybiBhfTsKXy5scj1jbGFzcyBleHRlbmRzIF8uRWR7Y29uc3RydWN0b3IoYSxiPSIwIil7c3VwZXIoKTt0aGlzLkcyPWE7dGhpcy5VWD1iO3RoaXMuakc9Imh0dHBzOi8vcGxheS5nb29nbGUuY29tL2xvZz9mb3JtYXQ9anNvbiZoYXNmYXN0PXRydWUiO3RoaXMuRWE9ITA7dGhpcy53bWE9bnVsbDt0aGlzLklhPSExO3RoaXMubmV0d29yaz1udWxsO3RoaXMuZ009IiI7dGhpcy5BYT10aGlzLmthPXRoaXMuVHFhPW51bGw7dGhpcy53YT10aGlzLkJhPSExO3RoaXMub2E9bnVsbDt0aGlzLkdhPSExO3RoaXMudFg9bnVsbDt0aGlzLmJ1ZmZlclNpemU9dm9pZCAwO3RoaXMueGM9bnVsbH1zZXRQcm9kdWN0SUQoYSl7dGhpcy5UcWE9YTtyZXR1cm4gdGhpc31vbmIoKXt0aGlzLkthPSEwO3JldHVybiB0aGlzfWJ1aWxkKCl7dGhpcy5uZXR3b3JrfHwodGhpcy5uZXR3b3JrPW5ldyBxNmEpO3ZhciBhPW5ldyBwNmEoe0cyOnRoaXMuRzIsU3ZhOnRoaXMuU3ZhP3RoaXMuU3ZhOl8uSDVhLFVYOnRoaXMuVVgsCkFTYzp0aGlzLmpHLGFqYTp0aGlzLklhLFJRYTohMSxvbmI6dGhpcy5LYSxKM2E6dGhpcy5KM2EsbmV0d29yazp0aGlzLm5ldHdvcmt9KTtfLkRpKHRoaXMsYSk7dGhpcy5FYXx8KGEuSWE9ITApO2lmKHRoaXMud21hKXt2YXIgYj10aGlzLndtYSxjPV8uWTVhKGEub2EpO18uZmgoYyw3LGIpfWEuTmE9bmV3IEk1YTt0aGlzLmdNJiYoYS5nTT10aGlzLmdNKTt0aGlzLlRxYSYmYS5zZXRQcm9kdWN0SUQodGhpcy5UcWEpO3RoaXMudFgmJihhLnRYPXRoaXMudFgpO3RoaXMua2EmJl8uajZhKGEsdGhpcy5rYSk7dGhpcy5BYSYmKGM9dGhpcy5BYSxhLmV4cGVyaW1lbnRJZHN8fChhLmV4cGVyaW1lbnRJZHM9bmV3IHRFYSksYj1hLmV4cGVyaW1lbnRJZHMsYz1bLi4uY10sXy56YihiLDIsYyx1Y2EpKTt0aGlzLkJhJiYoYS5QYT10aGlzLkJhJiZhLkVhKTt0aGlzLndhJiYoYS5PYT10aGlzLndhKTt0aGlzLm9hJiYoYj10aGlzLm9hLGEuSWI9ITAsazZhKGEsYikpO3RoaXMuR2EmJihhLkFiPQphLkVhKTthNmEoYS5vYSk7dGhpcy5idWZmZXJTaXplJiYoYS5idWZmZXJTaXplPXRoaXMuYnVmZmVyU2l6ZSk7dGhpcy5uZXR3b3JrLnZfYSYmdGhpcy5uZXR3b3JrLnZfYSh0aGlzLkcyKTt0aGlzLm5ldHdvcmsuZk5jJiZ0aGlzLm5ldHdvcmsuZk5jKGEpO3JldHVybiBhfX07Xy53NmE9Y2xhc3MgZXh0ZW5kcyBfLkVke2NvbnN0cnVjdG9yKGE9LTEsYj0iIixjPSIiLGQ9ITEsZT0iIixmKXtzdXBlcigpO3RoaXMuRzI9YTt0aGlzLmdNPWI7Zj9iPWY6KGE9bmV3IF8ubHIoYSwiMCIpLGEuZ009YixfLkRpKHRoaXMsYSksYyE9PSIiJiZfLnI2YShhLGMpLGQmJihhLklhPSEwKSxlJiZfLnM2YShhLGUpLGI9YS5idWlsZCgpKTt0aGlzLnRyYW5zcG9ydD1ifWZsdXNoKGEpe2E9YXx8W107aWYoYS5sZW5ndGgpe2xldCBtPW5ldyBCNWEsbj1bXTtmb3IobGV0IHA9MDtwPGEubGVuZ3RoO3ArKyl7bGV0IHI9YVtwXTt2YXIgYj1uZXcgQTVhO2I9Xy5maChiLDEsci5vYSk7dmFyIGM9eFBhKHIpO2I9Xy5EayhiLDMsYyk7Yz1bXTtsZXQgeD1bXTtmb3IobGV0IHogb2Ygci5rYS5rZXlzKCkpeC5wdXNoKHouc3BsaXQoIiwiKSk7Zm9yKGxldCB6PTA7ejx4Lmxlbmd0aDt6Kyspe2xldCBCPXhbel07dmFyIGQ9ci53YSxlPV8ueVBhKHIsLi4uQil8fFtdO2xldCBIPVtdO2Zvcih2YXIgZj0KMDtmPGUubGVuZ3RoO2YrKyl7dmFyIGc9ZVtmXSxoPWcmJmcua2E7Zz1uZXcgeTVhO3N3aXRjaChkKXtjYXNlIDM6aD1OdW1iZXIoaCk7TnVtYmVyLmlzRmluaXRlKGgpJiZfLnBrKGcsMSx4NWEsaCk7YnJlYWs7Y2FzZSAyOl8uT0RhKGcsMix4NWEsTnVtYmVyKGgpKX1ILnB1c2goZyl9Zm9yKGQ9MDtkPEgubGVuZ3RoO2QrKyl7ZT1IW2RdO2Y9bmV3IHo1YTtmPV8uU2IoZix5NWEsMixlKTtlPUI7Zz1bXTtoPXdQYShyKTtmb3IobGV0IEo9MDtKPGgubGVuZ3RoO0orKyl7dmFyIGs9aFtKXTtsZXQgTj1lW0pdLFE9bmV3IHc1YTtzd2l0Y2goayl7Y2FzZSAzOl8udmsoUSwxLHY1YSxTdHJpbmcoTikpO2JyZWFrO2Nhc2UgMjprPU51bWJlcihOKTtOdW1iZXIuaXNGaW5pdGUoaykmJl8ubmsoUSwyLHY1YSxrKTticmVhaztjYXNlIDE6Xy5NRGEoUSwzLHY1YSxOPT09InRydWUiKX1nLnB1c2goUSl9Xy5IaihmLDEsZyk7Yy5wdXNoKGYpfX1fLkhqKGIsNCxjKTtuLnB1c2goYik7ci5jbGVhcigpfV8uSGoobSwKMSxuKTt0aGlzLnRyYW5zcG9ydC5kaXNwYXRjaChtKTt0aGlzLnRyYW5zcG9ydC5mbHVzaCgpfX19O18ueDZhPV8ua2MoIkNrNjN0YiIsW18uSllhXSk7Xy55NmE9Xy5rYygiRnNSMDQiLFtfLlVxXSk7Xy56NmE9Xy5rYygiaThIMmMiLFtfLmZyXSk7Xy5BNmE9Xy5rYygiQk80M2dkIixbXSk7Xy5CNmE9Xy5rYygiVWVmT21iIixbXy5QcSxfLmZyXSk7Xy5DNmE9Xy5rYygiU2wwcHhkIixbXy5acV0pO18uRDZhPV8ua2MoIkQwbW5NZCIsW10pO18uT2MoXy5ENmEpO18uRTZhPV8ua2MoIkkwQzl1IixbXy5BMmFdKTtfLkY2YT1fLmtjKCJOSzBueCIsW10pO18uRzZhPSEhKF8uT2lbNDBdPj4yOCYxKTtfLkg2YT1fLmtjKCJYOGp0ZWYiLFtdKTtfLkk2YT1fLmtjKCJJRnF4eGMiLFtdKTtfLko2YT1jbGFzcyBleHRlbmRzIF8ubHtjb25zdHJ1Y3RvcihhKXtzdXBlcihhKX1nZXRRdWVyeSgpe3JldHVybiBfLnQodGhpcywxKX1zZXRRdWVyeShhKXtyZXR1cm4gXy5maCh0aGlzLDEsYSl9fTtfLks2YT1fLmtjKCJOeWVxTSIsW18uUHEsXy50WmFdKTtfLkw2YT1fLmtjKCJYeTUwemYiLFtfLks2YV0pO18uTTZhPV8ua2MoIkhNRkRiYiIsW18uWnFdKTtfLk42YT1fLmtjKCJwYnhOcGIiLFtfLlpxLF8uU3EsXy50MGFdKTtfLk82YT1fLmtjKCJLdm9XOCIsW10pO18uUDZhPV8ua2MoIkVFRE9SYiIpO18uT2MoXy5QNmEpO3ZhciBVNmEsUjZhLFE2YTtfLlM2YT1fLmFmKCgpPT5RNmEoKXx8Xy5MbWEoUjZhKCkpKTtfLlQ2YT1fLmFmKCgpPT5RdGEoUjZhKCkpKTtVNmE9Xy5hZigoKT0+e18uZWEuX0ZfanNVcmx8fChfLmVhLl9GX2pzVXJsPWdvb2dsZS54anN1KTtpZihfLmVhLl9GX2pzVXJsKXJldHVybiBfRl9qc1VybH0pO1I2YT1fLmFmKCgpPT5fLlNlKFU2YSgpKSk7UTZhPV8uYWYoKCk9Pl8uc2QoVTZhKCksInZlciIpKTtfLlY2YT1fLmtjKCJwM2htUmMiLFtdKTtfLlc2YT1fLmtjKCJwTkJGYmUiLFtfLlY2YV0pO18uWDZhPV8ua2MoImhWcWZCIik7Xy5ZNmE9Xy5rYygiZ24xZXllIixbXSk7Xy5aNmE9Xy5rYygiaURqVHliIixbXSk7Xy4kNmE9Xy5rYygic29BUlhiIik7Xy5hN2E9Xy5rYygiT3hWNk5jIixbXSk7Xy5iN2E9Xy5rYygiZmcxVlEiLFtdKTtfLmM3YT1fLmtjKCJydzVqR2QiLFtdKTtfLmQ3YT1fLmtjKCJ2N2hIMGIiLFtdKTtfLmU3YT1fLmtjKCJxWEVvUCIsW18uZDdhXSk7Xy5mN2E9Xy5rYygiRnJ5SWtlIik7Xy5nN2E9Xy5rYygib2FaWVciKTtfLmg3YT1fLmtjKCJKSlROU2QiLFtfLnBvXSk7Xy5pN2E9Xy5rYygiZnpjM0xkIixbXy5oN2FdKTtfLmo3YT1fLmtjKCJKV252TCIsW18uaDdhXSk7Xy5rN2E9Xy5rYygiT0JwRmtkIixbXy5qN2FdKTtfLmw3YT1fLmtjKCJ1MGliQWUiLFtfLmNyXSk7Xy5tN2E9Xy5rYygiUXlTaTFjIixbXy5jcixfLlpxXSk7Xy5uN2E9Xy5rYygiRHRVWmpjIik7Xy5vN2E9Xy5rYygiZU1WWDNjIixbXSk7Xy5wN2E9Xy5rYygic0VVVjUiLFtdKTtfLnE3YT1fLmtjKCJKV2tPUmIiLFtdKTtfLk9jKF8ucTdhKTtfLnI3YT1fLmtjKCJZQjd0cGIiLFtdKTtfLk9jKF8ucjdhKTtfLnM3YT1fLmtjKCJ3WDhMamIiLFtfLmQ3YV0pO18udDdhPV8ua2MoInM0QmRIZSIsW18uZDdhXSk7Xy52N2E9ZnVuY3Rpb24oYSxiLGMpe3JldHVybiBuZXcgXy51N2EoYSxiLGMpfTtfLnU3YT1jbGFzc3tjb25zdHJ1Y3RvcihhLGIsYyl7dGhpcy5UST1hO3RoaXMubmV3U3RhdGU9Yjt0aGlzLm9sZFN0YXRlPWN9fTtfLnc3YT1jbGFzc3tjb25zdHJ1Y3Rvcih7SFFjOmF9KXt0aGlzLm9hPWF9QVhhKCl7fXJlc2V0KCl7fX07dmFyIHg3YT17eFhjOjEsQ2pkOjIsUzRjOjMsd3dkOjQsZG5kOjUsUkVTT0xWRUQ6NixLamQ6NyxQVWM6OH07dmFyIEI3YTtfLnk3YT0hKCF3aW5kb3cucGVyZm9ybWFuY2V8fCF3aW5kb3cucGVyZm9ybWFuY2Uubm93KTtfLno3YT0hISh3aW5kb3cucGVyZm9ybWFuY2UmJndpbmRvdy5wZXJmb3JtYW5jZS5tYXJrJiZ3aW5kb3cucGVyZm9ybWFuY2UuZ2V0RW50cmllc0J5TmFtZSk7Xy5BN2E9Xy56N2EmJiEhd2luZG93LnBlcmZvcm1hbmNlLm1lYXN1cmU7QjdhPXdpbmRvdy5BYm9ydENvbnRyb2xsZXIhPW51bGw7Xy5DN2E9V2Vha01hcC50b1N0cmluZygpLmluZGV4T2YoIltuYXRpdmUgY29kZV0iKSE9PS0xO3ZhciBEN2E9dHlwZW9mIEFib3J0Q29udHJvbGxlcj09PSJmdW5jdGlvbiI7aWYodHlwZW9mIERPTUV4Y2VwdGlvbj09PSJmdW5jdGlvbiIpdHJ5e25ldyBET01FeGNlcHRpb259Y2F0Y2goYSl7fTt2YXIgRTdhPWNsYXNze2NvbnN0cnVjdG9yKGEpe3RoaXMudmFsdWU9YX1kZXJlZigpe3JldHVybiB0aGlzLnZhbHVlfX0sRjdhPXR5cGVvZiBXZWFrUmVmPT09ImZ1bmN0aW9uIj9XZWFrUmVmOkU3YTt2YXIgRzdhPWRvY3VtZW50LmNyZWF0ZURvY3VtZW50RnJhZ21lbnQ/KCk9PmRvY3VtZW50LmNyZWF0ZURvY3VtZW50RnJhZ21lbnQoKTooKT0+ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2IiksWXphPW5ldyBjbGFzc3tjb25zdHJ1Y3RvcihhKXt0aGlzLmthPWE7dGhpcy5tYXA9bmV3IFdlYWtNYXB9YWRkKGEsYil7dGhpcy5tYXAuaGFzKGEpfHwodGhpcy5rYShhKSx0aGlzLm1hcC5zZXQoYSxbXSkpO3RoaXMubWFwLmdldChhKS5wdXNoKG5ldyBGN2EoYikpfWdldChhKXt2YXIgYj10aGlzLGM9KDAsXy5NZikoMSksZD1jKCksZT1jKDEpO3JldHVybiBmdW5jdGlvbiooKXtlKCk7dHJ5e2xldCBnPWIubWFwLmdldChhKTtpZihnKXt2YXIgZj0wO2ZvcihsZXQgaCBvZiBnKXtsZXQgaz1oLmRlcmVmKCk7ayYmKGYrKyxlKHlpZWxkIGQoaykpKX1pZigyKmY8Zy5sZW5ndGgpe2Y9MDtmb3IobGV0IGggb2YgZyloLmRlcmVmKCkmJihnW2YrK109aCk7Zy5sZW5ndGg9Zn19fWZpbmFsbHl7ZCgpfX0oKX19KGE9Pgp7YS5hZGRFdmVudExpc3RlbmVyKCJhYm9ydCIsJHphLHtvbmNlOiEwfSl9KSxYemE9bmV3IFdlYWtNYXAsSTdhPWNsYXNze2NvbnN0cnVjdG9yKGE9SDdhKXt0aGlzLnNpZ25hbD1uZXcgYX1hYm9ydChhKXt0aGlzLnNpZ25hbC5hYm9ydGVkfHwodGhpcy5zaWduYWwuYWJvcnRlZD0hMCx0aGlzLnNpZ25hbC5yZWFzb249YSxhPW5ldyBFdmVudCgiYWJvcnQiKSx0aGlzLnNpZ25hbC5kaXNwYXRjaEV2ZW50KGEpKX19LEg3YT1jbGFzc3tjb25zdHJ1Y3Rvcigpe3RoaXMudGFyZ2V0PUc3YSgpO3RoaXMuYWJvcnRlZD0hMTt0aGlzLm9uYWJvcnQ9bnVsbH10aHJvd0lmQWJvcnRlZCgpe1d6YS5jYWxsKHRoaXMpfWFkZEV2ZW50TGlzdGVuZXIoYSxiLGMpe3RoaXMudGFyZ2V0LmFkZEV2ZW50TGlzdGVuZXIoYSxiLGMpfXJlbW92ZUV2ZW50TGlzdGVuZXIoYSxiLGMpe3RoaXMudGFyZ2V0LnJlbW92ZUV2ZW50TGlzdGVuZXIoYSxiLGMpfWRpc3BhdGNoRXZlbnQoYSl7aWYodGhpcy5vbmFib3J0JiYKYS50eXBlPT09ImFib3J0Iil0aGlzLm9uYWJvcnQoYSk7cmV0dXJuIHRoaXMudGFyZ2V0LmRpc3BhdGNoRXZlbnQoYSl9fTtIN2EuYWJvcnQ9VnphO0g3YS50aW1lb3V0PWFBYTtIN2EuYW55PVp6YTt2YXIgVXphPUQ3YT9BYm9ydENvbnRyb2xsZXI6STdhLEo3YT1EN2E/QWJvcnRTaWduYWw6SDdhO3R5cGVvZiBKN2EuYWJvcnQhPT0iZnVuY3Rpb24iJiYoSjdhLmFib3J0PVZ6YSk7dHlwZW9mIEo3YS5wcm90b3R5cGUudGhyb3dJZkFib3J0ZWQhPT0iZnVuY3Rpb24iJiYoSjdhLnByb3RvdHlwZS50aHJvd0lmQWJvcnRlZD1XemEpO3R5cGVvZiBKN2EuYW55IT09ImZ1bmN0aW9uIiYmKEo3YS5hbnk9WnphKTt0eXBlb2YgSjdhLnRpbWVvdXQhPT0iZnVuY3Rpb24iJiYoSjdhLnRpbWVvdXQ9YUFhKTt2YXIgY0FhPXt9LEs3YT1CN2E/d2luZG93LkFib3J0Q29udHJvbGxlcjpVemE7dmFyIEw3YSxNN2EsUDdhO0w3YT0xO003YT1mdW5jdGlvbihhLGIpe3ZhciBjPWEudmQ7YS52ZD1iO2Eub25TdGF0ZUNoYW5nZShhLGIsYyl9O18uTjdhPWZ1bmN0aW9uKGEpe2EudmQ9PT0xJiZNN2EoYSwyKX07Xy5PN2E9ZnVuY3Rpb24oYSl7YT1hLnZkO3JldHVybiBhPT09N3x8YT09PTZ8fGE9PT04fTsKUDdhPWNsYXNze2NvbnN0cnVjdG9yKHtwcmlvcml0eTphLHNpZ25hbDpifT17fSl7dGhpcy52ZD0xO3RoaXMua2E9bmV3IF8uTXE7dGhpcy5wcm9taXNlPXRoaXMua2EucHJvbWlzZTt0aGlzLmlkPUw3YSsrO3RoaXMucHJpb3JpdHk9YTtiJiZiQWEoYiwoKT0+e18uTzdhKHRoaXMpfHwoTTdhKHRoaXMsOCksdGhpcy5rYS5yZWplY3QoY0FhKSl9KX1ibG9jaygpe3RoaXMudmQhPT0yJiZ0aGlzLnZkIT09NHx8TTdhKHRoaXMsMSl9WVVhKCl7dmFyIGE9dGhpcy52ZDtyZXR1cm4gYT09PTJ8fGE9PT00fWV4ZWN1dGUoYT0hMSl7TTdhKHRoaXMsMyk7KGE9dGhpcy5vYShhKSkmJk03YSh0aGlzLGEpO3JldHVybiB0aGlzLnZkfWdldFN0YXRlKCl7cmV0dXJuIHRoaXMudmR9cmVzb2x2ZShhKXtfLk83YSh0aGlzKXx8KE03YSh0aGlzLDYpLHRoaXMua2EucmVzb2x2ZShhKSl9cmVqZWN0KGEpe18uTzdhKHRoaXMpfHwoTTdhKHRoaXMsNyksdGhpcy5rYS5yZWplY3QoYSkpfX07Xy5RN2E9Y2xhc3MgZXh0ZW5kcyBQN2F7Y29uc3RydWN0b3IoYSxiPXt9KXtzdXBlcihiKTt0aGlzLmNhbGxiYWNrPWE7dGhpcy5UcmE9Yi5UcmE7dGhpcy52M2E9Yi52M2F9b2EoKXt2YXIgYT0hMTt0cnl7dmFyIGI9dGhpcy5jYWxsYmFjay5hcHBseSh0aGlzLlRyYSx0aGlzLnYzYSl9Y2F0Y2goZCl7YT0hMDt2YXIgYz1kfWlmKCFhKXJldHVybiB0aGlzLndhKGIpO3RoaXMucmVqZWN0KGMpfXdhKGEpe2lmKGEgaW5zdGFuY2VvZiBQcm9taXNlfHxuSmEoYSkpcmV0dXJuIGEudGhlbih0aGlzLnJlc29sdmUuYmluZCh0aGlzKSx0aGlzLnJlamVjdC5iaW5kKHRoaXMpKSw1O3RoaXMucmVzb2x2ZShhKX19O3ZhciBSN2E9Y2xhc3MgZXh0ZW5kcyBQN2F7Y29uc3RydWN0b3IoYSxiKXtzdXBlcihiKTt0aGlzLml0ZXJhdG9yPWF9b2EoYSl7dmFyIGI9ITE7dHJ5e2RvIHZhciBjPXRoaXMuaXRlcmF0b3IubmV4dCgpLmRvbmU7d2hpbGUoIWMmJmEmJihhPT09ITB8fGEoKSkpfWNhdGNoKGUpe2I9Yz0hMDt2YXIgZD1lfWlmKCFjKXJldHVybiA0O2I/dGhpcy5yZWplY3QoZCk6dGhpcy5yZXNvbHZlKCl9fTt2YXIgUzdhPWNsYXNzIGV4dGVuZHMgXy5RN2F7d2EoKXt0aGlzLnJlc29sdmUoKX19O18uVDdhPWNsYXNze2NvbnN0cnVjdG9yKGEpe3RoaXMudmFsdWU9YX19O3ZhciBWN2E7VjdhPWZ1bmN0aW9uKGEsYixjLGQpe1U3YShhLm9hLGIpO2lmKGMpaWYoZCl7bGV0IGUsZj0oKT0+dm9pZCB3aW5kb3cuY2xlYXJUaW1lb3V0KGUpO2JBYShkLGYpO2U9d2luZG93LnNldFRpbWVvdXQoKCk9PntkJiZmJiZkLnJlbW92ZUV2ZW50TGlzdGVuZXIoImFib3J0IixmKTthLmthKGIpfSxjKX1lbHNlIHdpbmRvdy5zZXRUaW1lb3V0KCgpPT52b2lkIGEua2EoYiksYyk7ZWxzZSBhLmthKGIpfTsKXy5sQWE9Y2xhc3MgZXh0ZW5kcyBfLnc3YXtTdyhhKXt2YXIgYj10aGlzLkFhKGEpO1Y3YSh0aGlzLGIsYS5kZWxheSxhLnNpZ25hbCk7cmV0dXJuIGIucHJvbWlzZX1BYShhKXtpZih0eXBlb2YgYT09PSJmdW5jdGlvbiIpcmV0dXJuIG5ldyBfLlE3YShhLHZvaWQgMCk7aWYoYS5jYWxsYmFjaylyZXR1cm4gbmV3IF8uUTdhKGEuY2FsbGJhY2ssYSk7dmFyIGI9YS5pdGVyYXRvcnx8YS5CdmJbU3ltYm9sLml0ZXJhdG9yXSgpO3JldHVybiBuZXcgUjdhKGIsYSl9a2EoYSl7Xy5ON2EoYSl9c2V0VGltZW91dChhLGIsLi4uYyl7Ynx8KGI9MCk7dmFyIGQ9bmV3IEs3YSxlPWQuc2lnbmFsO2E9bmV3IFM3YShhLHt2M2E6YyxzaWduYWw6ZX0pO2EucHJvbWlzZS50aGVuKHZvaWQgMCxkQWEpO1Y3YSh0aGlzLGEsYixlKTtyZXR1cm4gbmV3IF8uVDdhKGQpfXNldEludGVydmFsKGEsYiwuLi5jKXtiPDEwJiYoYj0xMCk7dmFyIGQ9bmV3IEs3YSxlPWQuc2lnbmFsLGY9e3YzYTpjLHNpZ25hbDplfSwKZz0oKT0+e2lmKCFlLmFib3J0ZWQpe2xldCBoPW5ldyBTN2EoYSxmKTtoLnByb21pc2UudGhlbihnLGcpO1Y3YSh0aGlzLGgsYixlKX19O2coKTtyZXR1cm4gbmV3IF8uVDdhKGQpfWNsZWFyVGltZW91dChhKXthIT1udWxsJiZhLnZhbHVlLmFib3J0KCl9Y2xlYXJJbnRlcnZhbChhKXt0aGlzLmNsZWFyVGltZW91dChhKX19O3ZhciBVN2E9ZnVuY3Rpb24oYSxiKXt2YXIgYz1iLmdldFN0YXRlKCk7YS5rYS5nZXQoYykuYWRkKGIpO2Eud2EuYWRkKGIpO2Iub25TdGF0ZUNoYW5nZT1hLkdhO2I9Xy52N2EoYixjLG51bGwpO2Eub2EucHVzaChiKTtXN2EoYSl9LHJBYT1mdW5jdGlvbihhLC4uLmIpe2ZvcihsZXQgYyBvZiBiKWEuQWEuYWRkKGMpfSxXN2E9ZnVuY3Rpb24oYSl7IWEuQmEmJmEub2EubGVuZ3RoPjAmJihhLkJhPSEwLF8uRW4oKCk9PnthLkJhPSExO3ZhciBiPWEub2E7YS5vYT1bXTt2YXIgYz1BcnJheS5mcm9tKGEuQWEpO2ZvcihsZXQgZCBvZiBjKXRyeXtkLkFYYShiKX1jYXRjaChlKXtfLmZhKGUpfVc3YShhKX0pKX0sakFhPWNsYXNze2NvbnN0cnVjdG9yKCl7dGhpcy5BYT1uZXcgU2V0O3RoaXMud2E9bmV3IFNldDt0aGlzLmthPW5ldyBNYXA7Zm9yKGxldCBhIG9mIE9iamVjdC52YWx1ZXMoeDdhKSlhPT09M3x8YT09PTd8fGE9PT02fHxhPT09OHx8dGhpcy5rYS5zZXQoYSxuZXcgU2V0KTt0aGlzLklhPQp0aGlzLmthLmdldCgyKTt0aGlzLkthPXRoaXMua2EuZ2V0KDQpO3RoaXMub2E9W107dGhpcy5HYT0oYSxiLGMpPT57Yz09PTM/dGhpcy5FYT12b2lkIDA6dGhpcy5rYS5nZXQoYykuZGVsZXRlKGEpO2lmKGI9PT0zKXRoaXMuRWE9YTtlbHNle2xldCBkPXRoaXMua2EuZ2V0KGIpO2Q/ZC5hZGQoYSk6dGhpcy53YS5kZWxldGUoYSl9YT1fLnY3YShhLGIsYyk7dGhpcy5vYS5wdXNoKGEpO1c3YSh0aGlzKX07dGhpcy5CYT0hMX1od2EoKXtyZXR1cm4gdGhpcy5BYX1yZXNldCgpe319O3ZhciBoQWEsaUFhLGZBYSxtQWEsb0FhO2hBYT0hMTtfLnBBYT1uZXcgU2V0O18uWDdhPV8ua2MoIk9YVHFGYiIsW18uWXEsXy5acV0pO18uWTdhPV8ua2MoImR0NGcyYiIsW10pO18uT2MoXy5ZN2EpO18ubXI9Xy5GaSgiV1ZEeUtlIixbXSk7dmFyIFo3YT1fLkZpKCJmdmpjUGIiLFtfLm1yXSk7Xy4kN2E9Xy5rYygiTEdvRUhkIixbWjdhXSk7dmFyIGE4YT1fLkZpKCJIOGZLamIiLFtfLm1yXSk7Xy5iOGE9Xy5rYygidm1NaGtjIixbYThhXSk7dmFyIGM4YT1fLkZpKCJSZXdMUGMiLFtfLm1yXSk7Xy5kOGE9Xy5rYygidDl1a3BjIixbYzhhXSk7Xy5lOGE9Xy5rYygiWTRsVDhkIik7Xy5mOGE9Xy5rYygiRmlRQ04iKTtfLmc4YT1fLmtjKCJJeTE3bWQiKTt2YXIgaDhhPV8uRmkoIkpUenhOYyIsW18ubXJdKTtfLmk4YT1fLmtjKCJUQWp2eSIsW2g4YV0pO18uajhhPV8ua2MoIlIxRU5GZCIpO18uazhhPV8ua2MoIndPMGx1ZiIpO18ubDhhPV8ua2MoIlpCcm9iIik7Xy5tOGE9Xy5rYygiTUNsRWliIik7Xy5uOGE9Xy5rYygidnliOG5mIixbXSk7Xy5vOGE9Xy5rYygiYlZITUEiKTtfLnA4YT1fLmtjKCJ3QXVOVmIiKTtfLnE4YT1fLmtjKCJrSjZPb2MiLFtfLkUyYV0pO18ucjhhPV8ua2MoInE2NXRBYyIpO3ZhciBzOGE9Xy5GaSgibU1KbEZiIixbXy5tcl0pO18udDhhPV8ua2MoIk1rZjVMZSIsW3M4YV0pO18udThhPV8ua2MoImh3MmwyZCIpO18udjhhPV8ua2MoIk8yeUR6ZCIpO18udzhhPV8ua2MoIk4wRjI5ZCIsW18uSTJhXSk7Xy54OGE9Xy5rYygiVzUwTlZkIixbXSk7Xy55OGE9Xy5rYygieVR4czRlIik7dmFyIHdBYT1uZXcgU2V0KCJHZW9sb2NhdGlvbiBJbml0aWFsaXphdGlvbiBUaW1lc3RhbXAgVWlNb2RlcyBDbG9jayBJbnRlcm5hbEhpc3RvcnkiLnNwbGl0KCIgIikpO3ZhciB0QWE7dEFhPSgpPT57fTtfLnNBYT0idyI7dEFhPWZ1bmN0aW9uKGEpe3ZhciBiPV8uY2goKTthLmZvckVhY2goKGMsZCk9PntiLkdjKGQsYyl9KTtiLkdjKCJwIiwiZ3dzIik7Yi5sb2coKX07Xy56OGE9Xy5rYygiRk9ORWRmIixbXy5rWmEsXy5wb10pO18uQThhPW5ldyBfLlRmKF8ua1phKTtfLmFnKF8uejhhLGNsYXNzIGV4dGVuZHMgXy5zb3tzdGF0aWMgUWEoKXtyZXR1cm57c2VydmljZTp7bFA6Xy5BOGEsd2luZG93Ol8ucW99fX1jb25zdHJ1Y3RvcihhKXtzdXBlcigpO3RoaXMud2luZG93PWEuc2VydmljZS53aW5kb3cuZ2V0KCk7dGhpcy5sUD1hLnNlcnZpY2UubFB9aXNBdmFpbGFibGUoKXtyZXR1cm4gdGhpcy5sUC5pc0F2YWlsYWJsZSgpfVlNKCl7cmV0dXJuIHRoaXMubFAuWU0oKX1iYWNrKCl7cmV0dXJuIHRoaXMubFAuYmFjaygpfU5kYSgpe3JldHVybiB0aGlzLmxQLk5kYSgpfWZvcndhcmQoKXtyZXR1cm4gdGhpcy5sUC5mb3J3YXJkKCl9aCQoKXtyZXR1cm4gdGhpcy5sUC5oJCgpfWdvKGEpe3JldHVybiB0aGlzLmxQLmdvKGEpfVE1KCl7cmV0dXJuIHRoaXMubFAuUTUoKX1wdXNoU3RhdGUoYSxiLGMpe3ZhciBkPXRoaXMubFAucHVzaFN0YXRlKGMpO3RoaXMud2luZG93Lmhpc3RvcnkucHVzaFN0YXRlKGEsYixjKTtyZXR1cm4gZH1yZXBsYWNlU3RhdGUoYSwKYixjKXt2YXIgZD10aGlzLmxQLnJlcGxhY2VTdGF0ZShjKTt0aGlzLndpbmRvdy5oaXN0b3J5LnJlcGxhY2VTdGF0ZShhLGIsYyk7cmV0dXJuIGR9fSk7dmFyIFA4YSxROGEsUjhhLFM4YTtfLkI4YT0hIShfLk9pWzgzXSYxMDI0KTtfLkM4YT0hIShfLk9pWzgzXSYyMDQ4KTtfLkQ4YT0hIShfLk9pWzgzXSY0MDk2KTtfLkU4YT0hIShfLk9pWzgzXT4+MTgmMSk7Xy5GOGE9ISEoXy5PaVs4M10+PjIyJjEpO18uRzhhPSEhKF8uT2lbODNdPj4yOCYxKTtfLkg4YT0hIShfLk9pWzg0XT4+MjEmMSk7Xy5JOGE9ISEoXy5PaVs4NF0+PjI0JjEpO18uSjhhPSEhKF8uT2lbODRdPj4yNSYxKTtfLks4YT0hIShfLk9pWzg0XT4+MjkmMSk7Xy5MOGE9ISEoXy5PaVs4NV0mMSk7Xy5NOGE9ISEoXy5PaVs4NV0mMik7Xy5OOGE9ISEoXy5PaVs4NV0mOCk7Xy5POGE9ISEoXy5PaVs4NV0mNjQpO1A4YT0hIShfLk9pWzg1XSYxMDI0KTtROGE9ISEoXy5PaVs4NV0mMjA0OCk7UjhhPSEhKF8uT2lbODVdJjQwOTYpO1M4YT0hIShfLk9pWzg1XT4+MTQmMSk7Xy5UOGE9ISEoXy5PaVs4Nl0+PjE1JjEpO18uVThhPSEhKF8uT2lbODZdPj4yMiYxKTsKXy5WOGE9ISEoXy5PaVs4Nl0+PjIzJjEpO18uVzhhPSEhKF8uT2lbODZdPj4yNCYxKTtfLlg4YT0hIShfLk9pWzg3XSY2NCk7Xy5ZOGE9ISEoXy5PaVs4N10mODE5Mik7Xy5aOGE9ISEoXy5PaVs4N10+PjE1JjEpO18uJDhhPSEhKF8uT2lbODddPj4yMSYxKTtfLmE5YT0hIShfLk9pWzg3XT4+MjImMSk7Xy5iOWE9ISEoXy5PaVs4N10+PjIzJjEpO18uYzlhPSEhKF8uT2lbOTBdJjEwMjQpO18uZDlhPSEhKF8uT2lbOTBdJjIwNDgpO18uZTlhPSEhKF8uT2lbOTBdPj4yMSYxKTtfLmY5YT0hIShfLk9pWzkwXT4+MjImMSk7Xy5nOWE9ISEoXy5PaVs5MF0+PjIzJjEpO18uaDlhPSEhKF8uT2lbOTBdPj4yOSYxKTtfLmk5YT0hIShfLk9pWzkxXSY4KTtfLmo5YT0hIShfLk9pWzkxXSY1MTIpO18uazlhPSEhKF8uT2lbOTFdPj4yNSYxKTtfLmw5YT0hIShfLk9pWzkyXT4+MTQmMSk7Xy5tOWE9ISEoXy5PaVs5Ml0+PjE5JjEpO18ubjlhPSEhKF8uT2lbOTJdPj4yNSYxKTsKXy5vOWE9ISEoXy5PaVs5Ml0+PjI2JjEpO18ucDlhPSEhKF8uT2lbOTNdJjEpO18ucTlhPSEhKF8uT2lbOTNdJjIpO18ucjlhPSEhKF8uT2lbOTNdJjQpO18uczlhPSEhKF8uT2lbOTNdJjY0KTtfLnQ5YT0hIShfLk9pWzkzXSYyNTYpO18udTlhPSEhKF8uT2lbOTNdJjEwMjQpO18udjlhPSEhKF8uT2lbOTNdPj4xNCYxKTtfLnc5YT0hIShfLk9pWzkzXT4+MTUmMSk7Xy54OWE9ISEoXy5PaVs5M10+PjE2JjEpO18ueTlhPSEhKF8uT2lbOTNdPj4xOCYxKTtfLno5YT0hIShfLk9pWzk0XT4+MTYmMSk7Xy5BOWE9ISEoXy5PaVs5NV0mMSk7Xy5COWE9ISEoXy5PaVs5NV0mMik7Xy5DOWE9ISEoXy5PaVs5NV0mNCk7Xy5EOWE9ISEoXy5PaVs5NV0mMTAyNCk7Xy5FOWE9ISEoXy5PaVs5NV0mMjA0OCk7Xy5GOWE9ISEoXy5PaVs5NV0mNDA5Nik7Xy5HOWE9ISEoXy5PaVs5NV0+PjE5JjEpO18uSDlhPSEhKF8uT2lbOTddJjQwOTYpO18uSTlhPSEhKF8uT2lbOTddJjgxOTIpOwpfLko5YT0hIShfLk9pWzk3XT4+MTQmMSk7Xy5LOWE9ISEoXy5PaVs5N10+PjIwJjEpO18uTDlhPSEhKF8uT2lbOTddPj4yNCYxKTtfLk05YT0hIShfLk9pWzk4XSYxKTtfLk45YT0hIShfLk9pWzk4XSY4MTkyKTtfLk85YT0hIShfLk9pWzk4XT4+MTQmMSk7Xy5QOWE9ISEoXy5PaVs5OF0+PjI2JjEpO18uUTlhPWZ1bmN0aW9uKGEpe18uekFhKEVycm9yKCJnZSIpLGEpO3JldHVybiIifTtfLm5yPWZ1bmN0aW9uKCl7fTtfLlI5YT1mdW5jdGlvbigpe307Xy5vcj1mdW5jdGlvbihhKXtyZXR1cm4hIV8uTWkoXy5ROWEoYSkpfTtfLlM5YT1mdW5jdGlvbihhLGIpe3ZhciBjPV8uTWkoXy5ROWEoYSkpO2lmKCFjKXRocm93IGE9Xy5vTGEoYSksXy5IaShiLGEpLGE7cmV0dXJuIGN9O18uVDlhPWNsYXNzIGV4dGVuZHMgXy5se2NvbnN0cnVjdG9yKGEpe3N1cGVyKGEpfX07Xy5UOWEucHJvdG90eXBlLm9hPV8uJGIoWzAsXy5DXSk7Xy5VOWE9Y2xhc3MgZXh0ZW5kcyBfLmx7Y29uc3RydWN0b3IoYSl7c3VwZXIoYSl9Z2V0VXJsKCl7cmV0dXJuIF8udCh0aGlzLDEpfUVjKCl7cmV0dXJuIF8ucGgodGhpcywxKX19O18uVTlhLnByb3RvdHlwZS5vYT1fLiRiKFswLF8uRV0pO18uVjlhPWNsYXNzIGV4dGVuZHMgXy5se2NvbnN0cnVjdG9yKGEpe3N1cGVyKGEpfWdldFVybCgpe3JldHVybiBfLnQodGhpcywxKX1FYygpe3JldHVybiBfLnBoKHRoaXMsMSl9fTtfLlY5YS5wcm90b3R5cGUub2E9Xy4kYihbMCxfLkVdKTtfLlc5YT1fLmtjKCJ0YWZQcmYiKTtfLm5mKF8ua1phKTt2YXIgWDlhPWNsYXNzIGV4dGVuZHMgXy5zb3tpc0F2YWlsYWJsZSgpe3JldHVybiBfLm9yKCJzaWxrSW50ZXJuYWxIaXN0b3J5U2VydmljZSIpfVlNKCl7cmV0dXJuIFA4YX1OZGEoKXtyZXR1cm4gUThhfWgkKCl7cmV0dXJuIFI4YX1RNSgpe3JldHVybiBTOGF9YXN5bmMgYmFjaygpe3ZhciBhPSgwLF8uTWYpKCksYj1hKCk7YT1hKDEpO3RyeXthKGF3YWl0IGIoXy5ucih7c2VydmljZU5hbWU6InNpbGtJbnRlcm5hbEhpc3RvcnlTZXJ2aWNlIixtZXRob2ROYW1lOiJiYWNrIixEZDp7c2VydmljZU5hbWU6IkludGVybmFsSGlzdG9yeSIsamQ6ImJhY2sifX0pKSl9ZmluYWxseXtiKCl9fWFzeW5jIGZvcndhcmQoKXt2YXIgYT0oMCxfLk1mKSgpLGI9YSgpO2E9YSgxKTt0cnl7YShhd2FpdCBiKF8ubnIoe3NlcnZpY2VOYW1lOiJzaWxrSW50ZXJuYWxIaXN0b3J5U2VydmljZSIsbWV0aG9kTmFtZToiZm9yd2FyZCIsRGQ6e3NlcnZpY2VOYW1lOiJJbnRlcm5hbEhpc3RvcnkiLGpkOiJmb3J3YXJkIn19KSkpfWZpbmFsbHl7YigpfX1hc3luYyBnbyhhKXt2YXIgYj0KKDAsXy5NZikoKSxjPWIoKTtiPWIoMSk7dHJ5e2xldCBkPW5ldyBfLlQ5YTthIT1udWxsJiZfLmxrKGQsMSxhKTtiKGF3YWl0IGMoXy5ucih7c2VydmljZU5hbWU6InNpbGtJbnRlcm5hbEhpc3RvcnlTZXJ2aWNlIixtZXRob2ROYW1lOiJnbyIsdWY6KCk9PmQub2EoKSxEZDp7c2VydmljZU5hbWU6IkludGVybmFsSGlzdG9yeSIsamQ6ImdvIn19KSkpfWZpbmFsbHl7YygpfX1hc3luYyBwdXNoU3RhdGUoYSl7dmFyIGI9KDAsXy5NZikoKSxjPWIoKTtiPWIoMSk7dHJ5e2xldCBkPW5ldyBfLlU5YTthIT1udWxsJiZfLmZoKGQsMSxhKTtiKGF3YWl0IGMoXy5ucih7c2VydmljZU5hbWU6InNpbGtJbnRlcm5hbEhpc3RvcnlTZXJ2aWNlIixtZXRob2ROYW1lOiJwdXNoU3RhdGUiLHVmOigpPT5kLm9hKCksRGQ6e3NlcnZpY2VOYW1lOiJJbnRlcm5hbEhpc3RvcnkiLGpkOiJwdXNoU3RhdGUifX0pKSl9ZmluYWxseXtjKCl9fWFzeW5jIHJlcGxhY2VTdGF0ZShhKXt2YXIgYj0oMCxfLk1mKSgpLApjPWIoKTtiPWIoMSk7dHJ5e2xldCBkPW5ldyBfLlY5YTthIT1udWxsJiZfLmZoKGQsMSxhKTtiKGF3YWl0IGMoXy5ucih7c2VydmljZU5hbWU6InNpbGtJbnRlcm5hbEhpc3RvcnlTZXJ2aWNlIixtZXRob2ROYW1lOiJyZXBsYWNlU3RhdGUiLHVmOigpPT5kLm9hKCksRGQ6e3NlcnZpY2VOYW1lOiJJbnRlcm5hbEhpc3RvcnkiLGpkOiJyZXBsYWNlU3RhdGUifX0pKSl9ZmluYWxseXtjKCl9fX07Xy5hZyhfLlc5YSxYOWEpO18uWTlhPV8ua2MoIkt0elNRZSIpO18uWjlhPV8ua2MoIm9rSXg4Iik7Xy4kOWE9Xy5rYygiVDl5NURkIixbXSk7Xy5PYyhfLiQ5YSk7Xy5hJGE9Xy5rYygibktQTHBjIixbXy4kOWFdKTtfLmIkYT1fLmtjKCJGTTVRSmUiLFtdKTtfLk9jKF8uYiRhKTtfLmMkYT1fLmtjKCJIOGNPZmQiLFtfLmQ3YV0pO18uZCRhPV8ua2MoImdhN1hwZCIsW18uYyRhXSk7Xy5lJGE9Xy5rYygiWE15cnNkIik7Xy5mJGE9Xy5rYygiU28xTGFlIik7Xy5nJGE9Xy5rYygiWlpkRXpkIik7Xy5oJGE9Xy5rYygick1GTzBlIik7Xy5pJGE9Xy5rYygicnNwNWpjIik7Xy5qJGE9Xy5rYygiWm9kZkRmIik7Xy5rJGE9Xy5rYygiaktlOWJiIik7dmFyIGwkYT1fLkZpKCJtSFUwVGQiLFtfLm1yXSk7Xy5tJGE9Xy5rYygiSzl5N0pjIixbbCRhXSk7Xy5uJGE9Xy5rYygiR2UwRGliIik7Xy5vJGE9Xy5rYygibU9HV1pkIik7dmFyIHAkYT1fLkZpKCJKNGtldmIiLFtfLm1yXSk7Xy5xJGE9Xy5rYygiUnhBZ05iIixbcCRhXSk7Xy5yJGE9Xy5rYygidE5OOHYiLFtfLmg3YV0pO18ucyRhPV8ua2MoImYwQ3liZSIsW18uciRhXSk7dmFyIHQkYT1fLkZpKCJvcVNsQWIiLFtfLm1yXSk7Xy51JGE9Xy5rYygiQTBDczFkIixbdCRhXSk7Xy52JGE9Xy5rYygiWEFndzdiIik7dmFyIHckYT1fLkZpKCJYWTR5eWIiLFtfLm1yXSk7Xy54JGE9Xy5rYygiQ1V3amZmIixbdyRhXSk7Xy55JGE9Xy5rYygiRGNET01jIik7dmFyIHokYT1fLkZpKCJuN2hleWYiLFtfLm1yXSk7Xy5BJGE9Xy5rYygiVmI1M1pjIixbeiRhXSk7Xy5CJGE9Xy5rYygicmtpUmtkIixbXSk7Xy5DJGE9Xy5rYygiazRYbzhiIixbXSk7Xy5EJGE9Xy5rYygiT1RVU1BiIixbXy5DJGFdKTtfLkUkYT1fLmtjKCJ0MXBmcmIiLFtdKTtfLk9jKF8uRSRhKTt2YXIgRiRhPV8uRmkoIlZoeGVSYiIsW18ubXJdKTtfLkckYT1fLmtjKCJxSUZBRmUiLFtGJGFdKTtfLkgkYT1fLmtjKCJ5SWxQN2QiKTtfLkkkYT1fLmtjKCJ0cWZRbWUiKTtfLkokYT1fLmtjKCJraDk0T2MiKTtfLkskYT1fLmtjKCJWRjl5TGIiLFtfLlYyYSxfLmQ3YV0pO18uTCRhPV8ua2MoIk1EWlZxZiIpO18uTSRhPV8ua2MoIkczUFAyZCIpO18uTiRhPV8ua2MoIkpKWWRUZSIsW18uaDdhXSk7Xy5PJGE9Xy5rYygiQUlqY3ZjIik7Xy5QJGE9Xy5rYygieXFtcm9mIixbXy5QcSxfLm1yXSk7dmFyIFEkYT1fLkZpKCJQZ1RZQmYiLFtfLm1yXSk7Xy5SJGE9Xy5rYygiZGNIdDNiIixbUSRhXSk7Xy5TJGE9Xy5rYygibFdWWlZlIixbXSk7Xy5PYyhfLlMkYSk7Xy5UJGE9Xy5rYygiZ0tEOTBjIixbXSk7Xy5PYyhfLlQkYSk7Xy5VJGE9Xy5rYygiSHBHTVBjIik7Xy5WJGE9Xy5rYygibEhwUXRkIik7dmFyIFckYT1fLkZpKCJ1eGNFZWIiLFtfLm1yXSk7Xy5YJGE9Xy5rYygid083cmRiIixbVyRhXSk7Xy5ZJGE9Xy5rYygia0tjSTdjIik7dmFyIFokYT1fLkZpKCJzSElrZWMiLFtfLm1yXSk7Xy4kJGE9Xy5rYygiSGhZVGZiIixbWiRhXSk7Xy5hYWI9Xy5rYygiaGJiWElmIik7dmFyIGJhYj1fLkZpKCJKWkRncWUiLFtfLm1yXSk7Xy5jYWI9Xy5rYygiYk0yVzVlIixbYmFiXSk7Xy5kYWI9Xy5rYygiUTdCYUVlIixbXSk7Xy5hZyhfLmRhYixjbGFzcyBleHRlbmRzIF8uc297aXNBdmFpbGFibGUoKXtyZXR1cm4gXy5vcigiYWdzYV9leHQiKX1ZTSgpe3JldHVybiB0aGlzLmlzQXZhaWxhYmxlKCl9YmFjaygpe18ubnIoe3NlcnZpY2VOYW1lOiJhZ3NhX2V4dCIsbWV0aG9kTmFtZToiZ29CYWNrIixEZDp7c2VydmljZU5hbWU6IkludGVybmFsSGlzdG9yeSIsamQ6ImJhY2sifSx1UzohMX0pO3JldHVybiBQcm9taXNlLnJlc29sdmUodm9pZCAwKX1OZGEoKXtyZXR1cm4hMX1mb3J3YXJkKCl7cmV0dXJuIF8uSWkoIkludGVybmFsSGlzdG9yeSIsImZvcndhcmQiKX1oJCgpe3JldHVybiExfWdvKCl7cmV0dXJuIF8uSWkoIkludGVybmFsSGlzdG9yeSIsImdvIil9UTUoKXtyZXR1cm4hMX1wdXNoU3RhdGUoKXtyZXR1cm4gXy5JaSgiSW50ZXJuYWxIaXN0b3J5IiwicHVzaFN0YXRlIil9cmVwbGFjZVN0YXRlKCl7cmV0dXJuIF8uSWkoIkludGVybmFsSGlzdG9yeSIsInJlcGxhY2VTdGF0ZSIpfX0pO18uZWFiPV8ua2MoIkppVkxqZCIsW18ua1phLF8ucG9dKTtfLmFnKF8uZWFiLGNsYXNzIGV4dGVuZHMgXy5zb3tzdGF0aWMgUWEoKXtyZXR1cm57c2VydmljZTp7bFA6Xy5BOGEsd2luZG93Ol8ucW99fX1jb25zdHJ1Y3RvcihhKXtzdXBlcigpO3RoaXMud2luZG93PWEuc2VydmljZS53aW5kb3cuZ2V0KCk7dGhpcy5sUD1hLnNlcnZpY2UubFB9aXNBdmFpbGFibGUoKXtyZXR1cm4gdGhpcy5sUC5pc0F2YWlsYWJsZSgpfVlNKCl7cmV0dXJuIHRoaXMubFAuWU0oKX1iYWNrKCl7cmV0dXJuIHRoaXMubFAuYmFjaygpfU5kYSgpe3JldHVybiExfWZvcndhcmQoKXtyZXR1cm4gUHJvbWlzZS5yZWplY3QoRXJyb3IoImhlIikpfWgkKCl7cmV0dXJuITF9Z28oKXtyZXR1cm4gUHJvbWlzZS5yZWplY3QoRXJyb3IoImhlIikpfVE1KCl7cmV0dXJuITB9cHVzaFN0YXRlKGEsYixjKXt0aGlzLndpbmRvdy5oaXN0b3J5LnB1c2hTdGF0ZShhLGIsYyk7cmV0dXJuIFByb21pc2UucmVzb2x2ZSgpfXJlcGxhY2VTdGF0ZShhLGIsYyl7dGhpcy53aW5kb3cuaGlzdG9yeS5yZXBsYWNlU3RhdGUoYSwKYixjKTtyZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCl9fSk7Xy5mYWI9Xy5lYS5KU09OLnN0cmluZ2lmeTtfLmdhYj1fLmVhLkpTT04ucGFyc2U7Xy5oYWI9Y2xhc3N7Y29uc3RydWN0b3IoYT1uZXcgXy5PS2EsYj1uZXcgTkthLGM9KCk9Pm5ldyBNYXApe3RoaXMud2E9YTt0aGlzLm9hPWI7dGhpcy5BYT1jfUZjKGEpe3ZhciBiPVtdO2ZvcihsZXQgW2MsZF1vZiBhKWIucHVzaCh0aGlzLndhLkZjKHtrZXk6Yyx2YWx1ZTpkfSkpO3JldHVybiB0aGlzLm9hLkZjKGIpfWthKGEpe3ZhciBiPXRoaXMuQWEoKTtmb3IobGV0IGMgb2YgdGhpcy5vYS5rYShhKSl7bGV0IHtrZXk6ZCx2YWx1ZTplfT10aGlzLndhLmthKGMpO2IuaGFzKGQpfHxiLnNldChkLGUpfXJldHVybiBifX07Xy5pYWI9ZnVuY3Rpb24oYSl7c3dpdGNoKGEpe2Nhc2UgMjAwOmNhc2UgMjAxOmNhc2UgMjAyOmNhc2UgMjA0OmNhc2UgMjA2OmNhc2UgMzA0OmNhc2UgMTIyMzpyZXR1cm4hMDtkZWZhdWx0OnJldHVybiExfX07Xy5qYWI9ZnVuY3Rpb24oKXtyZXR1cm4gXy5qYWIuc3VjLlZuKCl9O18uamFiLmFOYz1mdW5jdGlvbigpe18uamFiLnN1Yz1uZXcga2FifTt2YXIga2FiPWZ1bmN0aW9uKCl7fTtfLlVpKGthYixfLkJBYSk7a2FiLnByb3RvdHlwZS5Wbj1mdW5jdGlvbigpe3JldHVybiBuZXcgWE1MSHR0cFJlcXVlc3R9O18uamFiLmFOYygpO3ZhciBsYWIsbmFiO18ucHI9ZnVuY3Rpb24oYSl7Xy5iZS5jYWxsKHRoaXMpO3RoaXMuaGVhZGVycz1uZXcgTWFwO3RoaXMuazJhPWF8fG51bGw7dGhpcy5mbWE9ITE7dGhpcy5TaT1udWxsO3RoaXMuaFdhPSIiO3RoaXMuelI9MDt0aGlzLmZVPSIiO3RoaXMuZ3hhPXRoaXMudnRiPXRoaXMuYzlhPXRoaXMuQW9iPSExO3RoaXMuaWZiPTA7dGhpcy5GQj1udWxsO3RoaXMuWUthPSIiO3RoaXMuY0tjPXRoaXMuZjQ9ITE7dGhpcy5ka2I9dGhpcy5WRmI9bnVsbH07Xy5VaShfLnByLF8uYmUpO18ucHIucHJvdG90eXBlLldpPW51bGw7bGFiPS9eaHR0cHM/JC9pO18ubWFiPVsiUE9TVCIsIlBVVCJdO25hYj1bXTsKXy5xcj1mdW5jdGlvbihhLGIsYyxkLGUsZixnKXt2YXIgaD1uZXcgXy5wcjtuYWIucHVzaChoKTtiJiZoLmxpc3RlbigiY29tcGxldGUiLGIpO2gubGlzdGVuT25jZSgicmVhZHkiLGguZ29jKTtmJiZoLkFyYShmKTtnJiZoLnNldFdpdGhDcmVkZW50aWFscyhnKTtoLnNlbmQoYSxjLGQsZSk7cmV0dXJuIGh9O18uYWE9Xy5wci5wcm90b3R5cGU7Xy5hYS5nb2M9ZnVuY3Rpb24oKXt0aGlzLmRpc3Bvc2UoKTtfLkRhKG5hYix0aGlzKX07Xy5hYS5BcmE9ZnVuY3Rpb24oYSl7dGhpcy5pZmI9TWF0aC5tYXgoMCxhKX07Xy5hYS5zZXRSZXNwb25zZVR5cGU9ZnVuY3Rpb24oYSl7dGhpcy5ZS2E9YX07Xy5hYS5zZXRXaXRoQ3JlZGVudGlhbHM9ZnVuY3Rpb24oYSl7dGhpcy5mND1hfTtfLmFhLnZ3YT1mdW5jdGlvbigpe3JldHVybiB0aGlzLmY0fTtfLmFhLnNldFRydXN0VG9rZW49ZnVuY3Rpb24oYSl7dGhpcy5WRmI9YX07Cl8uYWEuc2V0QXR0cmlidXRpb25SZXBvcnRpbmc9ZnVuY3Rpb24oYSl7dGhpcy5ka2I9YX07Cl8uYWEuc2VuZD1mdW5jdGlvbihhLGIsYyxkKXtpZih0aGlzLlNpKXRocm93IEVycm9yKCJpZWAiK3RoaXMuaFdhKyJgIithKTtiPWI/Yi50b1VwcGVyQ2FzZSgpOiJHRVQiO3RoaXMuaFdhPWE7dGhpcy5mVT0iIjt0aGlzLnpSPTA7dGhpcy5Bb2I9ITE7dGhpcy5mbWE9ITA7dGhpcy5TaT10aGlzLmRuYSgpO3RoaXMuU2kub25yZWFkeXN0YXRlY2hhbmdlPURuKCgwLF8uaWUpKHRoaXMuQTJiLHRoaXMpKTt0aGlzLmNLYyYmIm9ucHJvZ3Jlc3MiaW4gdGhpcy5TaSYmKHRoaXMuU2kub25wcm9ncmVzcz1EbigoMCxfLmllKShmdW5jdGlvbihmKXt0aGlzLnoyYihmLCEwKX0sdGhpcykpLHRoaXMuU2kudXBsb2FkJiYodGhpcy5TaS51cGxvYWQub25wcm9ncmVzcz1EbigoMCxfLmllKSh0aGlzLnoyYix0aGlzKSkpKTt0cnl7dGhpcy52dGI9ITAsdGhpcy5TaS5vcGVuKGIsU3RyaW5nKGEpLCEwKSx0aGlzLnZ0Yj0hMX1jYXRjaChmKXt0aGlzLllwKDUsZik7cmV0dXJufWE9Y3x8IiI7Yz1uZXcgTWFwKHRoaXMuaGVhZGVycyk7CmlmKGQpaWYoT2JqZWN0LmdldFByb3RvdHlwZU9mKGQpPT09T2JqZWN0LnByb3RvdHlwZSlmb3IodmFyIGUgaW4gZCljLnNldChlLGRbZV0pO2Vsc2UgaWYodHlwZW9mIGQua2V5cz09PSJmdW5jdGlvbiImJnR5cGVvZiBkLmdldD09PSJmdW5jdGlvbiIpZm9yKGxldCBmIG9mIGQua2V5cygpKWMuc2V0KGYsZC5nZXQoZikpO2Vsc2UgdGhyb3cgRXJyb3IoImplYCIrU3RyaW5nKGQpKTtkPUFycmF5LmZyb20oYy5rZXlzKCkpLmZpbmQoZj0+Xy5tYWEoIkNvbnRlbnQtVHlwZSIsZikpO2U9Xy5lYS5Gb3JtRGF0YSYmYSBpbnN0YW5jZW9mIF8uZWEuRm9ybURhdGE7IV8uQWEoXy5tYWIsYil8fGR8fGV8fGMuc2V0KCJDb250ZW50LVR5cGUiLCJhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQ7Y2hhcnNldD11dGYtOCIpO2ZvcihsZXQgW2YsZ11vZiBjKXRoaXMuU2kuc2V0UmVxdWVzdEhlYWRlcihmLGcpO3RoaXMuWUthJiYodGhpcy5TaS5yZXNwb25zZVR5cGU9dGhpcy5ZS2EpOwoid2l0aENyZWRlbnRpYWxzImluIHRoaXMuU2kmJnRoaXMuU2kud2l0aENyZWRlbnRpYWxzIT09dGhpcy5mNCYmKHRoaXMuU2kud2l0aENyZWRlbnRpYWxzPXRoaXMuZjQpO2lmKCJzZXRUcnVzdFRva2VuImluIHRoaXMuU2kmJnRoaXMuVkZiKXRyeXt0aGlzLlNpLnNldFRydXN0VG9rZW4odGhpcy5WRmIpfWNhdGNoKGYpe31pZigic2V0QXR0cmlidXRpb25SZXBvcnRpbmciaW4gdGhpcy5TaSYmdGhpcy5ka2IpdHJ5e3RoaXMuU2kuc2V0QXR0cmlidXRpb25SZXBvcnRpbmcodGhpcy5ka2IpfWNhdGNoKGYpe310cnl7dGhpcy5GQiYmKGNsZWFyVGltZW91dCh0aGlzLkZCKSx0aGlzLkZCPW51bGwpLHRoaXMuaWZiPjAmJih0aGlzLkZCPXNldFRpbWVvdXQodGhpcy5oWS5iaW5kKHRoaXMpLHRoaXMuaWZiKSksdGhpcy5jOWE9ITAsdGhpcy5TaS5zZW5kKGEpLHRoaXMuYzlhPSExfWNhdGNoKGYpe3RoaXMuWXAoNSxmKX19OwpfLmFhLmRuYT1mdW5jdGlvbigpe3JldHVybiB0aGlzLmsyYT90aGlzLmsyYS5WbigpOl8uamFiKCl9O18uYWEuaFk9ZnVuY3Rpb24oKXt0eXBlb2YgYkJhIT0idW5kZWZpbmVkIiYmdGhpcy5TaSYmKHRoaXMuZlU9IlRpbWVkIG91dCBhZnRlciAiK3RoaXMuaWZiKyJtcywgYWJvcnRpbmciLHRoaXMuelI9OCx0aGlzLmRpc3BhdGNoRXZlbnQoInRpbWVvdXQiKSx0aGlzLmFib3J0KDgpKX07Xy5hYS5ZcD1mdW5jdGlvbihhLGIpe3RoaXMuZm1hPSExO3RoaXMuU2kmJih0aGlzLmd4YT0hMCx0aGlzLlNpLmFib3J0KCksdGhpcy5neGE9ITEpO3RoaXMuZlU9Yjt0aGlzLnpSPWE7b2FiKHRoaXMpO3BhYih0aGlzKX07dmFyIG9hYj1mdW5jdGlvbihhKXthLkFvYnx8KGEuQW9iPSEwLGEuZGlzcGF0Y2hFdmVudCgiY29tcGxldGUiKSxhLmRpc3BhdGNoRXZlbnQoImVycm9yIikpfTsKXy5wci5wcm90b3R5cGUuYWJvcnQ9ZnVuY3Rpb24oYSl7dGhpcy5TaSYmdGhpcy5mbWEmJih0aGlzLmZtYT0hMSx0aGlzLmd4YT0hMCx0aGlzLlNpLmFib3J0KCksdGhpcy5neGE9ITEsdGhpcy56Uj1hfHw3LHRoaXMuZGlzcGF0Y2hFdmVudCgiY29tcGxldGUiKSx0aGlzLmRpc3BhdGNoRXZlbnQoImFib3J0IikscGFiKHRoaXMpKX07Xy5wci5wcm90b3R5cGUucWM9ZnVuY3Rpb24oKXt0aGlzLlNpJiYodGhpcy5mbWEmJih0aGlzLmZtYT0hMSx0aGlzLmd4YT0hMCx0aGlzLlNpLmFib3J0KCksdGhpcy5neGE9ITEpLHBhYih0aGlzLCEwKSk7Xy5wci5SZC5xYy5jYWxsKHRoaXMpfTtfLnByLnByb3RvdHlwZS5BMmI9ZnVuY3Rpb24oKXt0aGlzLmlzRGlzcG9zZWQoKXx8KHRoaXMudnRifHx0aGlzLmM5YXx8dGhpcy5neGE/cWFiKHRoaXMpOnRoaXMudkhjKCkpfTtfLnByLnByb3RvdHlwZS52SGM9ZnVuY3Rpb24oKXtxYWIodGhpcyl9Owp2YXIgcWFiPWZ1bmN0aW9uKGEpe2lmKGEuZm1hJiZ0eXBlb2YgYkJhIT0idW5kZWZpbmVkIilpZihhLmM5YSYmYS55VCgpPT00KXNldFRpbWVvdXQoYS5BMmIuYmluZChhKSwwKTtlbHNlIGlmKGEuZGlzcGF0Y2hFdmVudCgicmVhZHlzdGF0ZWNoYW5nZSIpLGEuaXNDb21wbGV0ZSgpKXthLmZtYT0hMTt0cnl7Xy5zcihhKT8oYS5kaXNwYXRjaEV2ZW50KCJjb21wbGV0ZSIpLGEuZGlzcGF0Y2hFdmVudCgic3VjY2VzcyIpKTooYS56Uj02LGEuZlU9Xy5yYWIoYSkrIiBbIithLmdldFN0YXR1cygpKyJdIixvYWIoYSkpfWZpbmFsbHl7cGFiKGEpfX19O18ucHIucHJvdG90eXBlLnoyYj1mdW5jdGlvbihhLGIpe3RoaXMuZGlzcGF0Y2hFdmVudChzYWIoYSwicHJvZ3Jlc3MiKSk7dGhpcy5kaXNwYXRjaEV2ZW50KHNhYihhLGI/ImRvd25sb2FkcHJvZ3Jlc3MiOiJ1cGxvYWRwcm9ncmVzcyIpKX07CnZhciBzYWI9ZnVuY3Rpb24oYSxiKXtyZXR1cm57dHlwZTpiLGxlbmd0aENvbXB1dGFibGU6YS5sZW5ndGhDb21wdXRhYmxlLGxvYWRlZDphLmxvYWRlZCx0b3RhbDphLnRvdGFsfX0scGFiPWZ1bmN0aW9uKGEsYil7aWYoYS5TaSl7YS5GQiYmKGNsZWFyVGltZW91dChhLkZCKSxhLkZCPW51bGwpO2xldCBjPWEuU2k7YS5TaT1udWxsO2J8fGEuZGlzcGF0Y2hFdmVudCgicmVhZHkiKTt0cnl7Yy5vbnJlYWR5c3RhdGVjaGFuZ2U9bnVsbH1jYXRjaChkKXt9fX07Xy5wci5wcm90b3R5cGUuaXNBY3RpdmU9ZnVuY3Rpb24oKXtyZXR1cm4hIXRoaXMuU2l9O18ucHIucHJvdG90eXBlLmlzQ29tcGxldGU9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy55VCgpPT00fTtfLnNyPWZ1bmN0aW9uKGEpe3ZhciBiPWEuZ2V0U3RhdHVzKCksYztpZighKGM9Xy5pYWIoYikpKXtpZihiPWI9PT0wKWE9Xy5ha2EoU3RyaW5nKGEuaFdhKSksYj0hbGFiLnRlc3QoYSk7Yz1ifXJldHVybiBjfTsKXy5wci5wcm90b3R5cGUueVQ9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5TaT90aGlzLlNpLnJlYWR5U3RhdGU6MH07Xy5wci5wcm90b3R5cGUuZ2V0U3RhdHVzPWZ1bmN0aW9uKCl7dHJ5e3JldHVybiB0aGlzLnlUKCk+Mj90aGlzLlNpLnN0YXR1czotMX1jYXRjaChhKXtyZXR1cm4tMX19O18ucmFiPWZ1bmN0aW9uKGEpe3RyeXtyZXR1cm4gYS55VCgpPjI/YS5TaS5zdGF0dXNUZXh0OiIifWNhdGNoKGIpe3JldHVybiIifX07Xy5wci5wcm90b3R5cGUuS3c9ZnVuY3Rpb24oKXt0cnl7cmV0dXJuIHRoaXMuU2k/dGhpcy5TaS5yZXNwb25zZVRleHQ6IiJ9Y2F0Y2goYSl7cmV0dXJuIiJ9fTtfLnRyPWZ1bmN0aW9uKGEsYil7aWYoYS5TaSlyZXR1cm4gYT1hLlNpLnJlc3BvbnNlVGV4dCxiJiZhLmluZGV4T2YoYik9PTAmJihhPWEuc3Vic3RyaW5nKGIubGVuZ3RoKSksXy5nYWIoYSl9O18uYWE9Xy5wci5wcm90b3R5cGU7Cl8uYWEuUHM9ZnVuY3Rpb24oKXt0cnl7aWYoIXRoaXMuU2kpcmV0dXJuIG51bGw7aWYoInJlc3BvbnNlImluIHRoaXMuU2kpcmV0dXJuIHRoaXMuU2kucmVzcG9uc2U7c3dpdGNoKHRoaXMuWUthKXtjYXNlICIiOmNhc2UgInRleHQiOnJldHVybiB0aGlzLlNpLnJlc3BvbnNlVGV4dDtjYXNlICJhcnJheWJ1ZmZlciI6aWYoIm1velJlc3BvbnNlQXJyYXlCdWZmZXIiaW4gdGhpcy5TaSlyZXR1cm4gdGhpcy5TaS5tb3pSZXNwb25zZUFycmF5QnVmZmVyfXJldHVybiBudWxsfWNhdGNoKGEpe3JldHVybiBudWxsfX07Xy5hYS5nZXRSZXNwb25zZUhlYWRlcj1mdW5jdGlvbihhKXtpZih0aGlzLlNpJiZ0aGlzLmlzQ29tcGxldGUoKSlyZXR1cm4gYT10aGlzLlNpLmdldFJlc3BvbnNlSGVhZGVyKGEpLGE9PT1udWxsP3ZvaWQgMDphfTsKXy5hYS5nZXRBbGxSZXNwb25zZUhlYWRlcnM9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5TaSYmdGhpcy55VCgpPj0yP3RoaXMuU2kuZ2V0QWxsUmVzcG9uc2VIZWFkZXJzKCl8fCIiOiIifTtfLmFhLnNaPWZ1bmN0aW9uKCl7dmFyIGE9e30sYj10aGlzLmdldEFsbFJlc3BvbnNlSGVhZGVycygpLnNwbGl0KCJcclxuIik7Zm9yKGxldCBkPTA7ZDxiLmxlbmd0aDtkKyspe2lmKF8uamEoYltkXSkpY29udGludWU7dmFyIGM9Xy5kc2EoYltkXSwiOiIsMSk7bGV0IGU9Y1swXTtjPWNbMV07aWYodHlwZW9mIGMhPT0ic3RyaW5nIiljb250aW51ZTtjPWMudHJpbSgpO2xldCBmPWFbZV18fFtdO2FbZV09ZjtmLnB1c2goYyl9cmV0dXJuIF8uUWMoYSxmdW5jdGlvbihkKXtyZXR1cm4gZC5qb2luKCIsICIpfSl9O18uYWEuZ2V0TGFzdEVycm9yPWZ1bmN0aW9uKCl7cmV0dXJuIHR5cGVvZiB0aGlzLmZVPT09InN0cmluZyI/dGhpcy5mVTpTdHJpbmcodGhpcy5mVSl9O18udGFiPV8ua2MoIlBYR3VTZCIsW18uZDdhXSk7Xy51YWI9bmV3IF8uVGYoXy5tWmEpO18udmFiPV8ua2MoImRNWmszZSIsW18ubVphLF8ucG9dKTtfLndhYj1jbGFzcyBleHRlbmRzIF8uc297c3RhdGljIFFhKCl7cmV0dXJue3NlcnZpY2U6e0NPYzpfLnVhYix3aW5kb3c6Xy5xb319fWNvbnN0cnVjdG9yKGEpe3N1cGVyKCk7dGhpcy5rYT1hLnNlcnZpY2UuQ09jO3RoaXMud2luZG93PWEuc2VydmljZS53aW5kb3cuZ2V0KCl9eWYoKXtyZXR1cm4hMX1iYWNrKCl7dGhpcy5rYS5pc0F2YWlsYWJsZSgpP3RoaXMua2EuWU0oKT90aGlzLmthLmJhY2soKTp0aGlzLndpbmRvdy5oaXN0b3J5LmJhY2soKTp0aGlzLndpbmRvdy5oaXN0b3J5LmJhY2soKX1mb3J3YXJkKCl7dGhpcy5rYS5pc0F2YWlsYWJsZSgpP3RoaXMua2EuTmRhKCk/dGhpcy5rYS5mb3J3YXJkKCk6dGhpcy53aW5kb3cuaGlzdG9yeS5mb3J3YXJkKCk6dGhpcy53aW5kb3cuaGlzdG9yeS5mb3J3YXJkKCl9Z28oYSl7dGhpcy5rYS5pc0F2YWlsYWJsZSgpP3RoaXMua2EuaCQoKT90aGlzLmthLmdvKGEpOnRoaXMud2luZG93Lmhpc3RvcnkuZ28oYSk6dGhpcy53aW5kb3cuaGlzdG9yeS5nbyhhKX1wdXNoU3RhdGUoYSwKYixjPSIiKXt0aGlzLmthLmlzQXZhaWxhYmxlKCk/dGhpcy5rYS5RNSgpP3RoaXMua2EucHVzaFN0YXRlKGEsYixjKTp0aGlzLndpbmRvdy5oaXN0b3J5LnB1c2hTdGF0ZShhLGIsYyk6dGhpcy53aW5kb3cuaGlzdG9yeS5wdXNoU3RhdGUoYSxiLGMpfXJlcGxhY2VTdGF0ZShhLGIsYz0iIil7dGhpcy5rYS5pc0F2YWlsYWJsZSgpP3RoaXMua2EuUTUoKT90aGlzLmthLnJlcGxhY2VTdGF0ZShhLGIsYyk6dGhpcy53aW5kb3cuaGlzdG9yeS5yZXBsYWNlU3RhdGUoYSxiLGMpOnRoaXMud2luZG93Lmhpc3RvcnkucmVwbGFjZVN0YXRlKGEsYixjKX1zdGF0ZSgpe3JldHVybiB0aGlzLndpbmRvdy5oaXN0b3J5LnN0YXRlfWdldEN1cnJlbnRVcmwoKXtyZXR1cm4gdGhpcy53aW5kb3cubG9jYXRpb24uaHJlZn19O18uYWcoXy52YWIsXy53YWIpO3ZhciB4YWI9Y2xhc3MgZXh0ZW5kcyBfLnNve2lzQXZhaWxhYmxlKCl7cmV0dXJuITF9WU0oKXtyZXR1cm4hMX1OZGEoKXtyZXR1cm4hMX1oJCgpe3JldHVybiExfVE1KCl7cmV0dXJuITF9YmFjaygpe3JldHVybiBfLklpKCJJbnRlcm5hbEhpc3RvcnkiLCJiYWNrIil9Zm9yd2FyZCgpe3JldHVybiBfLklpKCJJbnRlcm5hbEhpc3RvcnkiLCJmb3J3YXJkIil9Z28oKXtyZXR1cm4gXy5JaSgiSW50ZXJuYWxIaXN0b3J5IiwiZ28iKX1wdXNoU3RhdGUoKXtyZXR1cm4gXy5JaSgiSW50ZXJuYWxIaXN0b3J5IiwicHVzaFN0YXRlIil9cmVwbGFjZVN0YXRlKCl7cmV0dXJuIF8uSWkoIkludGVybmFsSGlzdG9yeSIsInJlcGxhY2VTdGF0ZSIpfX07Xy5hZyhqWmEseGFiKTtfLnlhYj0hIShfLk9pWzcwXSYxNik7Xy56YWI9ISEoXy5PaVs3MF0mMzIpO18uQWFiPSEhKF8uT2lbNzBdJjY0KTtfLkJhYj0hIShfLk9pWzcwXSYxMjgpO18uQ2FiPSEhKF8uT2lbNzBdJjI1Nik7dmFyIERhYj1jbGFzc3tjb25zdHJ1Y3Rvcigpe3RoaXMuY2FsbGJhY2tzPW5ldyBNYXA7dGhpcy5rYT0obmV3IERhdGUpLmdldFRpbWUoKX1nZXROZXh0SWQoKXtyZXR1cm4odGhpcy5rYSsrKS50b1N0cmluZygpfXNldChhLGIpe3RoaXMuY2FsbGJhY2tzLnNldChhLGIpfWdldChhKXtyZXR1cm4gdGhpcy5jYWxsYmFja3MuZ2V0KGEpfWRlbGV0ZShhKXt0aGlzLmNhbGxiYWNrcy5kZWxldGUoYSl9aGFzKGEpe3JldHVybiB0aGlzLmNhbGxiYWNrcy5oYXMoYSl9fSxFYWI7d2luZG93Lmdvb2dsZXx8KHdpbmRvdy5nb29nbGU9e30pO3dpbmRvdy5nb29nbGUuc2lsa2Nicnx8KHdpbmRvdy5nb29nbGUuc2lsa2Nicj1uZXcgRGFiKTtFYWI9d2luZG93Lmdvb2dsZS5zaWxrY2JyOwpfLkZhYj1mdW5jdGlvbihhLGIsYyl7RWFiLmhhcyhhKT8oYT1FYWIuZ2V0KGEpLHR5cGVvZiBiPT09InN0cmluZyImJmI9PT1hLmdldEFyZ1BsYWNlaG9sZGVyKCkmJihiPXZvaWQgMCksYS5leGVjdXRlKGIpKTpfLnpBYShuZXcgXy5YZSgzLCJObyBjYWxsYmFjayBmb3IgZ2l2ZW4gaWQuIiksYyl9OwpfLkdhYj1jbGFzc3tjb25zdHJ1Y3RvcihhLHtsaGE6Yj0hMSxaT2E6Yz0iQHtyZXN1bHR9IixpZDpkPUVhYi5nZXROZXh0SWQoKSxjYXB0dXJlU3RhY2tUcmFjZTplPSExfT17fSl7dGhpcy5jYWxsYmFjaz1hO3RoaXMuaWQ9ZDt0aGlzLmxoYT1iO3RoaXMuWk9hPWM7ZSYmKGE9RXJyb3IsYS5jYXB0dXJlU3RhY2tUcmFjZT8oYj17fSxhLmNhcHR1cmVTdGFja1RyYWNlKGIsXy5HYWIpLHRoaXMuc3RhY2tIb2xkZXI9Yik6dGhpcy5zdGFja0hvbGRlcj1FcnJvcigpKTtFYWIuc2V0KHRoaXMuaWQsdGhpcyl9Z2V0SWQoKXtyZXR1cm4gdGhpcy5pZH1nZXRBcmdQbGFjZWhvbGRlcigpe3JldHVybiB0aGlzLlpPYX1leGVjdXRlKGEpe3RoaXMubGhhJiZ0aGlzLmRpc3Bvc2UoKTt0aGlzLmNhbGxiYWNrKGEpfWRpc3Bvc2UoKXtFYWIuZGVsZXRlKHRoaXMuaWQpfX07Xy5lYS5zaWxrPV8uZWEuc2lsa3x8e307Xy5lYS5zaWxrLmNhbGxiYWNrPV8uRmFiO18uSGFiPV8ua2MoIlVTMUVVIixbWjdhXSk7Xy5JYWI9Xy5rYygiQmd5UFBjIixbYThhXSk7Xy5KYWI9Xy5rYygiVUJHY2RkIixbYzhhXSk7Xy5LYWI9Xy5rYygiZVNGQzVjIik7Xy5MYWI9Xy5rYygicWVTTFciKTtfLk1hYj1fLmtjKCJCNmI4NSIpO18uTmFiPV8ua2MoInBQeGRBZCIpO18uT2FiPV8ua2MoIk5zaUNSYiIpO18uUGFiPV8ua2MoIkJraUh0ZCIpO3ZhciBRYWI9Xy5GaSgiWGxQUGtjIixbXy5tcl0pO18uUmFiPV8ua2MoIlVIN2o3YiIsW1FhYl0pO18uU2FiPV8ua2MoIks2WkViZiIpO18uVWFiPV8ua2MoInNGcUx6YyIpO18uVmFiPV8ua2MoIlI4Z3QxIik7Xy5XYWI9Xy5rYygieXZCSVhjIik7Xy5YYWI9Xy5rYygiaHdZSTRjIixbaDhhXSk7Xy5ZYWI9Xy5rYygiR1RhTmxjIik7Xy5aYWI9Xy5rYygiZzZaVW9iIik7Xy4kYWI9Xy5rYygieGtjdEoiKTtfLmFiYj1fLmtjKCJWdllmcWQiKTtfLmJiYj1fLmtjKCJ2bzNYTSIpO18uY2JiPV8ua2MoIm42NkdhZCIpO18uZGJiPV8ua2MoImRicjJNYyIpO18uZWJiPV8ua2MoImtyUll0ZiIpO18uZmJiPV8ua2MoInlXQ080YyIpO18uZ2JiPV8ua2MoIm5WRzQ2YiIpO18uaGJiPV8ua2MoImxPcUMxZSIpO18uaWJiPV8ua2MoImg0cXpTIixbczhhXSk7Xy5qYmI9Xy5rYygibmw5YUlkIik7Xy5rYmI9Xy5rYygiWWhtUkIiKTtfLmxiYj1fLmtjKCJTdGxnSGIiKTtfLm1iYj1fLmtjKCJ3Y2l5VWUiLFtdKTtfLm5iYj1fLmtjKCJFaUxWT2MiKTtfLm9iYj1fLmtjKCJJbDFNNGIiKTtfLnBiYj1fLmtjKCJ2V2ZaOGMiKTtfLnFiYj1fLmtjKCJLUkRVVWIiKTtfLnJiYj1fLmtjKCJoUTk3cmUiKTtfLnNiYj1fLmtjKCJpSzJzYiIpO18udGJiPV8ua2MoInNvVnB0ZiIpO3ZhciB1YmI9Xy5GaSgicnpJN2hlIixbXy5tcl0pO18udmJiPV8ua2MoIkV6MHNkYiIsW3ViYl0pO18ud2JiPV8ua2MoIlllS2FxIik7Xy54YmI9Xy5rYygiT2RvM09kIik7Xy55YmI9Xy5rYygiVjJoUzhlIixbbCRhXSk7Xy56YmI9Xy5rYygiZDdOVHkiKTtfLkFiYj1fLmtjKCJWUTdZdWYiKTtfLkJiYj1fLmtjKCJNMFZRYmQiKTtfLkNiYj1fLmtjKCJkaGppcGUiLFtwJGFdKTt2YXIgRGJiPV8uRmkoInhURVJsZCIsW18ubXJdKTtfLkViYj1fLmtjKCJlRFpnViIsW0RiYl0pO18uRmJiPV8ua2MoImxCcDAiLFtfLmg3YV0pO18uR2JiPV8ua2MoIkNKUllEZiIsW18uY3JdKTtfLkhiYj1fLmtjKCJaOFBkaCIpO18uSWJiPV8ua2MoImE3MHE3YiIpO18uSmJiPV8ua2MoIlRVd01yYyIpO18uS2JiPV8ua2MoInNmRlRsZSIsW3ckYV0pO18uTGJiPV8ua2MoIm52ODZzIixbeiRhXSk7Xy5NYmI9Xy5rYygiSDFPbnpiIik7Xy5OYmI9Xy5rYygiUUUzaHZkIik7Xy5PYmI9Xy5rYygicFBJdmllIixbXy5tcl0pO18uUGJiPV8ua2MoIlVmeUpqYyIsW1EkYV0pO18uUWJiPV8ua2MoIlh3aFVFYiIsW10pO18uT2MoXy5RYmIpO18uUmJiPV8ua2MoIlJmdHpIZiIpO18uU2JiPV8ua2MoInRHOTd1YyIsW0YkYV0pO18uVGJiPV8ua2MoIkttbm42YiIpO18uVWJiPV8ua2MoIk1zU2paYiIpO18uVmJiPV8ua2MoIkZyY3lKZSIpO18uV2JiPV8ua2MoInhrakd2ZSIsW18uZDdhXSk7Xy5YYmI9Xy5rYygiVVV2Y1pkIik7Xy5ZYmI9Xy5rYygiRTJ6bElmIik7dmFyIFpiYj1fLkZpKCJmU0dqQWIiLFtfLm1yXSk7Xy4kYmI9Xy5rYygiTHAwMm8iLFtaYmJdKTtfLmFjYj1fLmtjKCJMUjY0eCIsW1ckYV0pO18uYmNiPV8ua2MoIkhabko2Iik7Xy5jY2I9Xy5rYygidjc0VmFkIik7Xy5kY2I9Xy5rYygiRVpxb1pjIixbWiRhXSk7Xy5lY2I9Xy5rYygiWTJYdVQiKTtfLmZjYj1fLmtjKCJPMVJxMyIsW2JhYl0pO18uZ2NiPV8ua2MoIkhVRUJiYyIsW18ucG8sXy5QcV0pO18uaGNiPV8ua2MoInpuaFlDZSIsW18uZ3JdKTtfLmljYj1fLmtjKCJHUnZYNGMiLFtdKTtfLmpjYj1fLmtjKCJoam9xb2UiLFtfLmdjYixfLmhjYixfLmljYl0pO18ua2NiPV8ua2MoIndLZFRsZSIsW18uY3IsXy5hcl0pO18udXI9Xy5rYygiRmRkOG5kIixbXy5rY2IsXy5ocixfLmZyXSk7Xy52cj1fLmtjKCJMMUFBa2IiKTtfLk9jKF8udnIpO18ubGNiPV8ua2MoImI2dmNiYiIsW18udnJdKTtfLm1jYj1fLmtjKCJ0dFEyNyIsW18ueGksXy5UbyxfLnVyLF8ua2NiXSk7Xy5uY2I9Xy5rYygiU0dwUmNlIixbXy54aSxfLllxLF8uVG8sXy51cixfLmxjYixfLmtjYl0pO18ub2NiPV8ua2MoImxjcmt3ZSIsW18ueGksXy5ZcSxfLlRvLF8ua2NiLF8uUFlhLF8ubmNiLF8ubWNiXSk7Xy5wY2I9Xy5rYygiajlZdXljIixbXSk7Xy5xY2I9Xy5rYygib2ZqVmtiIixbXy5wb10pO18ucmNiPV8ua2MoInJsSEtGYyIsW18uWnFdKTtfLnNjYj1fLmtjKCJzWm55aiIsW10pO18udGNiPV8ua2MoImpuMnNHZCIsW18uY3JdKTtfLnVjYj1fLmtjKCJwNExyQ2UiLFtdKTtfLnZjYj1fLmtjKCJKa3NmRGYiLFtfLmhjYixfLmljYl0pO18ud2NiPV8ua2MoImswVDNVYiIsW18udWNiXSk7Xy54Y2I9Xy5rYygiTzlYRFVkIixbYzhhXSk7Xy55Y2I9Xy5rYygiR0Z5ZFJiIik7Xy56Y2I9Xy5rYygiSkpPRTciKTtfLkFjYj1fLmtjKCJ4MWhPNWIiKTtfLkJjYj1fLmtjKCJhaG5LOWMiLFtwJGFdKTt2YXIgQ2NiO0NjYj1jbGFzc3tTdyhhKXtyZXR1cm4gZ0FhKCkuU3coYSl9c2V0VGltZW91dChhLGIsLi4uYyl7cmV0dXJuIGdBYSgpLnNldFRpbWVvdXQoYSxiLC4uLmMpfXNldEludGVydmFsKGEsYiwuLi5jKXtyZXR1cm4gZ0FhKCkuc2V0SW50ZXJ2YWwoYSxiLC4uLmMpfWNsZWFyVGltZW91dChhKXtyZXR1cm4gZ0FhKCkuY2xlYXJUaW1lb3V0KGEpfWNsZWFySW50ZXJ2YWwoYSl7cmV0dXJuIGdBYSgpLmNsZWFySW50ZXJ2YWwoYSl9fTtfLndyPW5ldyBDY2I7Cl8uaG0oXy5uZihfLk1ZYSksXy5tNWEpOwpfLmhtKF8ubmYoXy5VWmEpLF8ucDVhKTsKXy5obShfLm5mKF8uSllhKSxfLnE1YSk7Cl8uaG0oXy5uZihfLnUxYSksXy5zNWEpOwpfLmhtKF8ubmYoXy5rMGEpLF8udDVhKTsKXy5obShfLm5mKF8uVXEpLF8ueDZhKTsKXy5obShfLm5mKF8uUzBhKSxfLnk2YSk7Cl8uaG0oXy5uZihfLlYwYSksXy56NmEpOwpfLmhtKF8ubmYoXy50MGEpLF8uS05hKTtfLmhtKF8ubmYoXy5yMGEpLF8uQzZhKTtfLmhtKF8ubmYoXy5pciksXy5CNmEpOwpfLklYYT0hMDsKXy5obShfLm5mKF8ual9hKSxfLmtfYSk7Cl8uaG0oXy5uZihfLnkyYSksXy5FNmEpO18uaG0oXy5uZihfLnkyYSksXy5FNmEpOwoKdmFyIFJjYj1mdW5jdGlvbigpe2ZvcihsZXQgW2EsYl1vZiBQY2IuZW50cmllcygpKV8uVmUoRXJyb3IoImtlYCIrYSkse2xldmVsOjAsRGY6e2FtZGVsYXk6Yi5qb2luKCJfIiksdjooMCxfLlM2YSkoKX19KTtQY2IuY2xlYXIoKTtRY2I9dm9pZCAwfTtfLnJwYT0hMDt2YXIgUGNiPW5ldyBNYXAsUWNiOwppZihfLmlHYXx8TWF0aC5yYW5kb20oKTwuMDAxKV8uc3BhPShhLGIsYyk9PntpZihiKXt2YXIgZD17QUZkOiEwLHA5YjohMH07Zm9yKGxldCBnIG9mIE9iamVjdC5rZXlzKGQpKWlmKFN0cmluZyhnKT09PVN0cmluZyhjKSlyZXR1cm47dmFyIGU9U3ltYm9sKCJsZSIpLGY7ZD1uZXcgUHJvbWlzZShnPT57Zj0oMCxfLmpvKSgoKT0+e2coZSl9LDQwMCl9KTtiPWIgaW5zdGFuY2VvZiBfLndmP18uWGYoYikudGhlbihnPT5nLCgpPT57fSk6Yi50aGVuKGc9PmcsKCk9Pnt9KTtQcm9taXNlLnJhY2UoW2IsZF0pLnRoZW4oZz0+e2c9PT1lPyhnPVBjYi5nZXQoYyksZ3x8KGc9W10sUGNiLnNldChjLGcpKSxnLnB1c2goYHdpel9hc3luY190aW1lb3V0LiR7Y30uJHthfWApLFFjYnx8KFFjYj0oMCxfLmpvKShSY2IsM0UzKSkpOmYmJigwLF8ua28pKGYpfSl9fTsKCl8uVWNiPWZ1bmN0aW9uKGEsYil7cmV0dXJuKGJ8fDEpLShhfHwxKX07Xy5WY2I9T2JqZWN0LnZhbHVlcyh7eThjOjMsTUVESVVNOjIsRmdjOjF9KS5zb3J0KF8uVWNiKTsKXy5UbWE9KCk9PiEoIWdvb2dsZS5lcmR8fCFnb29nbGUuZXJkLmpzcik7Cl8uWmNiPWZ1bmN0aW9uKGEsYil7cmV0dXJuInJlcXVlc3RJZGxlQ2FsbGJhY2siaW4gd2luZG93P3dpbmRvdy5yZXF1ZXN0SWRsZUNhbGxiYWNrKGEsYik6d2luZG93LnNldFRpbWVvdXQoKCk9Pnt2YXIgYz1EYXRlLm5vdygpO2Eoe2RpZFRpbWVvdXQ6ITEsdGltZVJlbWFpbmluZzooKT0+TWF0aC5tYXgoMCwxMC0oRGF0ZS5ub3coKS1jKSl9KX0sdHlwZW9mKGI9PW51bGw/dm9pZCAwOmIudGltZW91dCk9PT0ibnVtYmVyIiYmYi50aW1lb3V0Pj0wP01hdGgubWluKGIudGltZW91dCw1MCk6NTApfTtfLiRjYj1mdW5jdGlvbihhKXsiY2FuY2VsSWRsZUNhbGxiYWNrImluIHdpbmRvdyYmd2luZG93LmNhbmNlbElkbGVDYWxsYmFjayhhKTt3aW5kb3cuY2xlYXJUaW1lb3V0KGEpfTsKXy5hZGI9YXN5bmMgZnVuY3Rpb24oKXt2YXIgYTtpZigoYT13aW5kb3cuc2NoZWR1bGVyKT09bnVsbD8wOmEueWllbGQpcmV0dXJuIHdpbmRvdy5zY2hlZHVsZXIueWllbGQoKTt2YXIgYjsoKGI9d2luZG93LnNjaGVkdWxlcik9PW51bGw/MDpiLnBvc3RUYXNrKSYmd2luZG93LnNjaGVkdWxlci5wb3N0VGFzaygoKT0+e30se3ByaW9yaXR5OiJ1c2VyLWJsb2NraW5nIn0pO3JldHVybiBuZXcgUHJvbWlzZShjPT57d2luZG93LnNldFRpbWVvdXQoKCk9PntjKCl9LDApfSl9OwpfLmhtKF8ubmYoXy4kcSksXy5ZN2EpOwp2YXIgb2RiLHBkYjtvZGI9ZnVuY3Rpb24oYSxiKXtyZXR1cm4gXy5VY2IoYS5wcmlvcml0eSxiLnByaW9yaXR5KX07cGRiPWNsYXNzIGV4dGVuZHMgXy53N2F7QVhhKGEpe2ZvcihsZXQge1RJOmIsbmV3U3RhdGU6Y31vZiBhKWlmKChjPT09Mnx8Yz09PTQpJiZiLllVYSgpKXt0aGlzLmthPW51bGw7dGhpcy5BYSgpO2JyZWFrfX19O18ucWRiPWNsYXNzIGV4dGVuZHMgcGRie2NvbnN0cnVjdG9yKGEpe3N1cGVyKGEpO3RoaXMuQmE9YS5zb3J0fHxvZGI7dGhpcy5rYT1udWxsfW5leHQoKXtpZighdGhpcy5rYSl7dmFyIGE9QXJyYXksYj1hLmZyb207dmFyIGM9dGhpcy5vYTtjPVsuLi5jLkthLC4uLmMuSWFdO3RoaXMua2E9Yi5jYWxsKGEsYyk7dGhpcy5rYS5zb3J0KHRoaXMuQmEpfWZvcig7KGE9dGhpcy5rYS5zaGlmdCgpKSYmIWEuWVVhKCk7KTtiPSExO3RoaXMua2EubGVuZ3RofHwodGhpcy5rYT1udWxsLGI9ITApO3JldHVybntUSTphLGRvbmU6Yn19cmVzZXQoKXtzdXBlci5yZXNldCgpfX07Cl8uJFFhPSEwOwpfLnlkYj1jbGFzc3tsb2coYSxiKXtpZighXy5wR2EmJihhPV8uSG1hKGEpLGE9YS5yZXBsYWNlQWxsKCJgIiwiJTYwIiksdHlwZW9mIHdpbmRvdy5uYXZpZ2F0b3Iuc2VuZEJlYWNvbj09PSJmdW5jdGlvbiIpKXRyeXt3aW5kb3cubmF2aWdhdG9yLnNlbmRCZWFjb24oYSxiPyhuZXcgXy5oYWIpLkZjKGIpOnZvaWQgMCl9Y2F0Y2goYyl7fX19Owp2YXIgQmRiPWZ1bmN0aW9uKGEpe2lmKCFhLnN0YWNrKXJldHVybiBudWxsO2lmKGEuc3RhY2spe3ZhciBiPWEuc3RhY2suc3BsaXQoIlxuIik7dmFyIGM9e30sZD0wLGU7Zm9yKGxldCBnPTA7ZT1iW2ddOysrZyl7ZT1lLnJlcGxhY2UoemRiLCI6Iik7dmFyIGY9ZS5tYXRjaChBZGIpO2lmKGYpe2Y9ZlsxXTtsZXQgaDtjW2ZdP2g9Y1tmXTooaD0ie3siK2QrKyArIn19IixjW2ZdPWgpO2JbZ109ZS5yZXBsYWNlKGYsaCl9fWEuc3RhY2s9Yi5qb2luKCJcbiIpO2I9Y31lbHNlIGI9e307Yz1hLnN0YWNrO2Q9MTAyNDAtKGVuY29kZVVSSUNvbXBvbmVudCgiIikrIiZ0cmFjZT0mdHVtPSIrZW5jb2RlVVJJQ29tcG9uZW50KF8uZmFiKGIpKSkubGVuZ3RoO2lmKGQ+MClmb3IoZT1jLnNwbGl0KCJcbiIpO2VuY29kZVVSSUNvbXBvbmVudChjKS5sZW5ndGg+ZCYmZS5sZW5ndGg+MjspZS5wb3AoKSxjPWUuam9pbigiXG4iKTthLnN0YWNrPWM7cmV0dXJuIGJ9LENkYj17fSxEZGI9ZnVuY3Rpb24oYSl7dmFyIGI9CiIiO3R5cGVvZiBhLnRvU3RyaW5nPT09ImZ1bmN0aW9uIiYmKGI9IiIrYSk7cmV0dXJuIGIrYS5zdGFja30sRWRiPWZ1bmN0aW9uKGEsYil7Ynx8KGI9e30pO2JbRGRiKGEpXT0hMDt2YXIgYz1hLnN0YWNrfHwiIixkPWEuY2F1c2U7ZCYmIWJbRGRiKGQpXSYmKGMrPSJcbkNhdXNlZCBieTogIixkLnN0YWNrJiZkLnN0YWNrLmluZGV4T2YoZC50b1N0cmluZygpKT09MHx8KGMrPXR5cGVvZiBkPT09InN0cmluZyI/ZDpkLm1lc3NhZ2UrIlxuIiksYys9RWRiKGQsYikpO2E9YS5lcnJvcnM7aWYoQXJyYXkuaXNBcnJheShhKSl7ZD0xO2xldCBlO2ZvcihlPTA7ZTxhLmxlbmd0aCYmIShkPjQpO2UrKyliW0RkYihhW2VdKV18fChjKz0iXG5Jbm5lciBlcnJvciAiK2QrKyArIjogIixhW2VdLnN0YWNrJiZhW2VdLnN0YWNrLmluZGV4T2YoYVtlXS50b1N0cmluZygpKT09MHx8KGMrPXR5cGVvZiBhW2VdPT09InN0cmluZyI/YVtlXTphW2VdLm1lc3NhZ2UrIlxuIiksYys9RWRiKGFbZV0sYikpOwplPGEubGVuZ3RoJiYoYys9IlxuLi4uICIrKGEubGVuZ3RoLWUpKyIgbW9yZSBpbm5lciBlcnJvcnMiKX1yZXR1cm4gY30sRmRiPWZ1bmN0aW9uKGEpe3ZhciBiPV8uTWkoIndpbmRvdy5sb2NhdGlvbi5ocmVmIik7YT09bnVsbCYmKGE9J1Vua25vd24gRXJyb3Igb2YgdHlwZSAibnVsbC91bmRlZmluZWQiJyk7aWYodHlwZW9mIGE9PT0ic3RyaW5nIilyZXR1cm57bWVzc2FnZTphLG5hbWU6IlVua25vd24gZXJyb3IiLGxpbmVOdW1iZXI6Ik5vdCBhdmFpbGFibGUiLGZpbGVOYW1lOmIsc3RhY2s6Ik5vdCBhdmFpbGFibGUifTt2YXIgYz0hMTt0cnl7dmFyIGQ9YS5saW5lTnVtYmVyfHxhLmxpbmV8fCJOb3QgYXZhaWxhYmxlIn1jYXRjaChmKXtkPSJOb3QgYXZhaWxhYmxlIixjPSEwfXRyeXt2YXIgZT1hLmZpbGVOYW1lfHxhLmZpbGVuYW1lfHxhLnNvdXJjZVVSTHx8Xy5lYS4kZ29vZ0RlYnVnRm5hbWV8fGJ9Y2F0Y2goZil7ZT0iTm90IGF2YWlsYWJsZSIsYz0hMH1iPUVkYihhKTtpZighKCFjJiYKYS5saW5lTnVtYmVyJiZhLmZpbGVOYW1lJiZhLnN0YWNrJiZhLm1lc3NhZ2UmJmEubmFtZSkpe2M9YS5tZXNzYWdlO2lmKGM9PW51bGwpe2lmKGEuY29uc3RydWN0b3ImJmEuY29uc3RydWN0b3IgaW5zdGFuY2VvZiBGdW5jdGlvbil7aWYoYS5jb25zdHJ1Y3Rvci5uYW1lKWM9YS5jb25zdHJ1Y3Rvci5uYW1lO2Vsc2UgaWYoYz1hLmNvbnN0cnVjdG9yLENkYltjXSljPUNkYltjXTtlbHNle2M9U3RyaW5nKGMpO2lmKCFDZGJbY10pe2xldCBmPS9mdW5jdGlvblxzKyhbXlwoXSspL20uZXhlYyhjKTtDZGJbY109Zj9mWzFdOiJbQW5vbnltb3VzXSJ9Yz1DZGJbY119Yz0nVW5rbm93biBFcnJvciBvZiB0eXBlICInK2MrJyInfWVsc2UgYz0iVW5rbm93biBFcnJvciBvZiB1bmtub3duIHR5cGUiO3R5cGVvZiBhLnRvU3RyaW5nPT09ImZ1bmN0aW9uIiYmT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZyE9PWEudG9TdHJpbmcmJihjKz0iOiAiK2EudG9TdHJpbmcoKSl9cmV0dXJue21lc3NhZ2U6YywKbmFtZTphLm5hbWV8fCJVbmtub3duRXJyb3IiLGxpbmVOdW1iZXI6ZCxmaWxlTmFtZTplLHN0YWNrOmJ8fCJOb3QgYXZhaWxhYmxlIn19cmV0dXJue21lc3NhZ2U6YS5tZXNzYWdlLG5hbWU6YS5uYW1lLGxpbmVOdW1iZXI6YS5saW5lTnVtYmVyLGZpbGVOYW1lOmEuZmlsZU5hbWUsc3RhY2s6Yn19LEdkYj0hIShfLk9pWzMxXT4+MjImMSk7dmFyIEFkYj0vKGh0dHBzPzpcL1wvLio/XC8uKj8pOlxkKy8semRiPS9cPy4qPzovO3ZhciBIZGI9Y2xhc3N7bG9nKGEsYil7Xy5wR2F8fF8ucXIoXy5IbWEoYSksdm9pZCAwLCJQT1NUIixiPyhuZXcgXy5oYWIpLkZjKGIpOnZvaWQgMCl9fTt2YXIgSWRiPWZ1bmN0aW9uKGEsYil7dmFyIGM9YS5nZXQoYik7YS5kZWxldGUoYik7cmV0dXJuIGN9LEpkYj1jbGFzc3tjb25zdHJ1Y3Rvcigpe3RoaXMuc2VuZGVyPXR5cGVvZiB3aW5kb3cubmF2aWdhdG9yLnNlbmRCZWFjb249PT0iZnVuY3Rpb24iP25ldyBfLnlkYjpuZXcgSGRiO3RoaXMucGF0aD0iL2dlbl8yMDQifWxvZ0RhdGEoYSl7dmFyIGI9bmV3IE1hcCxjPUlkYihhLCJ0cmFjZSIpLGQ9SWRiKGEsImpleHBpZCIpO2lmKGMpe2xldCBnPUVycm9yKCJWIik7Zy5zdGFjaz1jOyhjPUJkYihnKSkmJiFfLlVjKGMpJiZhLnNldCgidHVtIiwoMCxfLmZhYikoYykpO2Euc2V0KCJ0cmFjZSIsZy5zdGFjayl9ZCYmKGQubGVuZ3RoPjM5OTAmJihkPWQuc3Vic3RyaW5nKDAsMzk5MCkpLGIuc2V0KCJqZXhwaWQiLGQpKTt2YXIgZT1fLkdtYSh0aGlzLnBhdGgsYSksZj1NYXRoLnJhbmRvbSgpPC4wMTtmJiYoYS5kZWxldGUoInRyYWNlIiksYS5kZWxldGUoInR1bSIpLGEuZGVsZXRlKCJlY3R4IiksCmEuc2V0KCJlcnJvciIsU3RyaW5nKGEuZ2V0KCJlcnJvciIpKS5zdWJzdHJpbmcoMCwyMDApKSxhLnNldCgiY2FkIiwicnNwIiksZT1fLkdtYSh0aGlzLnBhdGgsYSkpO0dkYiYmKG5ldyBQZXJmb3JtYW5jZU9ic2VydmVyKChnLGgpPT57Zy5nZXRFbnRyaWVzKCkuZm9yRWFjaChrPT57aWYoay5uYW1lLmluY2x1ZGVzKGUpKXtrPWsucmVzcG9uc2VTdGF0dXM7aWYoaz49NDAwKXtsZXQgbT1TdHJpbmcoYS5nZXQoImVycm9yIikpLnN1YnN0cmluZygwLDMwKTtrPWA/YXR5cD1pJmpzZWw9MyZlbXNnPWpzZXJyb3JfcmVzcG9uc2VfY29kZV8ke2t9JmNhZD11cmxfbGVuZ3RoLiR7ZS5sZW5ndGh9LmVycm9yX3N1YnN0cmluZy4ke219LnJrLiR7KDAsXy5TNmEpKCl9LnNpemUuJHtTdHJpbmcoYS5nZXQoInRyYWNlIikpLmxlbmd0aH0uJHtTdHJpbmcoYS5nZXQoInR1bSIpKS5sZW5ndGh9LiR7Zj8icnNwIjoiYmlnIn0mZWk9JHsoMCxfLnZtLml4KSgpfWA7dGhpcy5zZW5kZXIubG9nKHRoaXMucGF0aCsKayk7dGhpcy5zZW5kZXIubG9nKCIvaHR0cHNlcnZpY2UvcmV0cnkvanNlcnJvciIrayl9aC5kaXNjb25uZWN0KCl9fSl9KSkub2JzZXJ2ZSh7ZW50cnlUeXBlczpbInJlc291cmNlIl19KTt0aGlzLnNlbmRlci5sb2coZSxiLnNpemU+MD9iOnZvaWQgMCk7dGhpcy5zZW5kZXIubG9nKCIvaHR0cHNlcnZpY2UvcmV0cnkvanNlcnJvciIrZS5zdWJzdHJpbmcodGhpcy5wYXRoLmxlbmd0aCksYi5zaXplPjA/Yjp2b2lkIDApfX07CmlmKF8ucUdhJiZuYXZpZ2F0b3Iuc2VuZEJlYWNvbil7bGV0IGE9bmV3IFNldChbIiZlcnJvcj0iLCImZW1zZz0iXSk7KG5ldyBQZXJmb3JtYW5jZU9ic2VydmVyKGI9PntiLmdldEVudHJpZXMoKS5mb3JFYWNoKGM9Pnt2YXIgZD0hMCxlPWMubmFtZTtmb3IobGV0IGYgaW4gYSlpZihlLmluY2x1ZGVzKGYpKXtkPSExO2JyZWFrfWM9Yy5yZXNwb25zZVN0YXR1cztkJiZjPj00MDAmJihkPWA/YXR5cD1pJmpzZWw9MyZlbXNnPWdlbl8yMDRfcmVzcG9uc2VfY29kZV8ke2N9JmNhZD11cmxfbGVuZ3RoLiR7ZS5sZW5ndGh9Lm5hbWUuJHtlLnN1YnN0cmluZygwLDMwMCkucmVwbGFjZUFsbCgvW1w/Jl0vZywiLCIpfSZlaT0keygwLF8udm0uaXgpKCl9YCxuYXZpZ2F0b3Iuc2VuZEJlYWNvbigiL2dlbl8yMDQiK2QsIiIpLG5hdmlnYXRvci5zZW5kQmVhY29uKCIvaHR0cHNlcnZpY2UvcmV0cnkvanNlcnJvciIrZCwiIikpfSl9KSkub2JzZXJ2ZSh7ZW50cnlUeXBlczpbInJlc291cmNlIl19KX07Xy4kbihfLlZLYSxuZXcgY2xhc3N7Y29uc3RydWN0b3IoKXt0aGlzLmthPV8uY2gobmV3IEpkYil9bG9nKGEsYixjLGQpe2E9RmRiKGEpO3ZhciBlPWdvb2dsZS5lcmQ7dGhpcy5rYS5HYygiYnZlciIsU3RyaW5nKGUuYnYpKTt2YXIgZjsoKGY9d2luZG93Lmdvb2dsZSk9PW51bGw/MDpmLmd2ZXJzKSYmdGhpcy5rYS5HYygiZ3ZlcnMiLE9iamVjdC5rZXlzKHdpbmRvdy5nb29nbGUuZ3ZlcnMpLmpvaW4oIiwiKSk7KGY9ZS5kcGYpJiZ0aGlzLmthLkdjKCJkcGYiLFN0cmluZyhmKSk7dGhpcy5rYS5HYygic3JjcGciLGdvb2dsZS5zbik7dGhpcy5rYS5HYygianNyIixkPT09MT8xOmUuanNyKTt0aGlzLmthLkdjKCJlcnJvciIsYS5oYXNPd25Qcm9wZXJ0eSgibWVzc2FnZSIpP2EubWVzc2FnZTpgTm9uRXJyb3JPYmplY3Q6ICR7YT09bnVsbD92b2lkIDA6YS5tZXNzYWdlfWApO3RoaXMua2EuR2MoInRyYWNlIixhPT1udWxsP3ZvaWQgMDphLnN0YWNrKTt0aGlzLmthLkdjKCJzY3JpcHQiLAphLmZpbGVOYW1lKTt0aGlzLmthLkdjKCJsaW5lIixTdHJpbmcoYS5saW5lTnVtYmVyKSk7dGhpcy5rYS5HYygib25zIixjP1N0cmluZyhjKToiMCIpO3RoaXMua2EuR2MoImpzZWwiLFN0cmluZyhkKSk7Z29vZ2xlLmtFWFBJJiZ0aGlzLmthLkdjKCJqZXhwaWQiLGVuY29kZVVSSUNvbXBvbmVudChnb29nbGUua0VYUEkpKTtlLnNkJiZkIT09MyYmdGhpcy5rYS5HYygic2QiLCIxIik7Zm9yKGxldCBbZyxoXW9mIF8uYnRhLmVudHJpZXMoKSljPWcsKGQ9aCgpKSYmKGJbY109ZCk7dGhpcy5rYS5HYygiZWN0eCIsKDAsXy5mYWIpKGIpKTt0aGlzLmthLmxvZygpfX0pOwp2YXIgS2RiPWZ1bmN0aW9uKGEpe2Eud2F8fChhLndhPSEwLF8uamUoKCk9PnthLndhPSExO3ZhciB7VEk6Yixkb25lOmN9PWEubmV4dCgpO2ImJmIuZXhlY3V0ZSghMCk7Y3x8S2RiKGEpfSkpfSxMZGI9Y2xhc3MgZXh0ZW5kcyBfLnFkYntjb25zdHJ1Y3RvcihhKXtzdXBlcihhKTt0aGlzLndhPSExfUFhKCl7S2RiKHRoaXMpfX07Xy5uQWE9TGRiOwpfLmJMYT0oKT0+d2luZG93Lm5hdmlnYXRvci5zZW5kQmVhY29uIT1udWxsP25ldyBfLnlkYjpuZXcgXy5hTGE7Cl8uaG0oXy5uZihfLmRaYSksXy5vY2IpOwpfLmhtKF8ubmYoXy5DMmEpLF8ucGNiKTsKXy5obShfLm5mKF8ubVphKSxfLnFjYik7Cl8uaG0oXy5uZihfLk8yYSksXy50Y2IpOwp2YXIgJGViPWZ1bmN0aW9uKGEpe2lmKCFhLmZ4YSl7bGV0IGI9YS5wbGF5O2EucGxheT0oKT0+e3ZhciBjPWIuY2FsbChhKSxkPWEuTmooKTtpZihkIT09SW5maW5pdHkpe2xldCBlPXdpbmRvdy5zZXRUaW1lb3V0KCgpPT5hLmZpbmlzaCgpLGQpO2Q9KCk9PnZvaWQgd2luZG93LmNsZWFyVGltZW91dChlKTtjLnRoZW4oZCxkKX1yZXR1cm4gY307YS5meGE9ITB9fTsKXy4kbihfLlJMYSxuZXcgY2xhc3N7U3coYSl7JGViKGEpO3JldHVybiBfLndyLlN3KHtjYWxsYmFjazphLnBsYXksVHJhOmF9KX1IYmIoYSl7JGViKGEpO3JldHVybiBfLndyLlN3KHtjYWxsYmFjazphLnBsYXksVHJhOmEscHJpb3JpdHk6M30pfWZsdXNoKCl7dGhyb3cgRXJyb3IoInBlIik7fWhxYShhKXtyZXR1cm4gXy53ci5TdyhhKX1SRWEoYSxiKXt2YXIgYz0hMTtyZXR1cm4oLi4uZCk9PntjfHwoYz0hMCxfLndyLlN3KCgpPT52b2lkKGM9ITEpKSxhLmFwcGx5KGIsZCkpfX1zZXRUaW1lb3V0KGEsYiwuLi5jKXtyZXR1cm4gXy53ci5zZXRUaW1lb3V0KGEsYiwuLi5jKX1jbGVhclRpbWVvdXQoYSl7Xy53ci5jbGVhclRpbWVvdXQoYSl9Y2xlYXJJbnRlcnZhbChhKXtfLndyLmNsZWFySW50ZXJ2YWwoYSl9c2V0SW50ZXJ2YWwoYSxiLC4uLmMpe3JldHVybiBfLndyLnNldEludGVydmFsKGEsYiwuLi5jKX15aWVsZCgpe3JldHVybiBfLmFkYigpfXJlcXVlc3RJZGxlQ2FsbGJhY2soYSwKYil7cmV0dXJuIF8uWmNiKGEsYil9Y2FuY2VsSWRsZUNhbGxiYWNrKGEpe18uJGNiKGEpfX0pOwpfLl9Nb2R1bGVNYW5hZ2VyX2luaXRpYWxpemU9ZnVuY3Rpb24oYSxiKXtpZighXy5UaGEpe2lmKCFfLldoYSlyZXR1cm47Xy5YaGEoXy5XaGEoKSl9Xy5UaGEudGRiKGEsYil9OwpfLl9Nb2R1bGVNYW5hZ2VyX2luaXRpYWxpemUoJ3AkQV90TS0xSHF1YW50dW10N3hnSWV3czlUbGNjRXQ5MGJxZGRnS2V5eFRjaGZ4UXRaYnFRRW9PY1I5WUhKY0tVTTdad3J6RVhiVHhDSmZkV1ZEeUtlVmo5aHBkdGFmUHJmZHRsMGhkbExRV0ZlSWwxTTRiZUhEZmxGT05FZGZKaVZMamRaMVJnMGRNWmszZW9malZrYlE3QmFFZXJMcGRJZnFhZkJQZGViWjNtYmRvd0lHYmU3SHpnYlNjSTNZY1J1VXJjZlVVSnFWZW43M3F3Zk1wSndaY2J5ZlRPYkxFaWtaZXhVZGlwZk53SDBIZ3ljaGdVbG1tcmRBMXluNWRZSVptUmRsT08wVmRQNnNRT2NVdmM4b09UQTNBZVlRR0FQYlBqcGx1ZFFHUjBnZGtXZ1hlZVBvRXM5YlZEb3ZOY3dqV1lpZm92S3VMZE1saG15VDlSenpkWmZBb3pHNXNCbGR5RFZWa2JFRURPUmJpdnVsS2VOSjFyZmV5R2ZTZGRxVG5vQmZWZ2Q2aGJSeXZhVWJZWW1IemJzT1hGam9HdEF1Y0laVDYzWU5qR0RkaUZReUtmUHJQWVJkdmZ1TkpmaGM2VWJkcTB4VGlmRW1aMkJmVWFzOUhkd1I1RlJic2lLblFkcFhkUlliZTVxRkxjZElvU0JiU3BzZlNiWmdHZzliemJNTDNjenIxanJibUkzTEZibGF6RzdiTlNFb1htZFI3cWtqS2RYZU1JNms3Y0VBb1N0ZENrNjN0YmVCQWVTYkhUOFhEZVNNMWxtZE92Q1FxZVd3anVydlJOdlRld1dRMExjYnRkcHZkV3E2bHhmRjU0SUFlTDhLR3hlblF6ZTNkd1Y1UGpjZmFSRnRkcFU4NkhkelZ0ZGdmWWRZZHl0N2pqemJScjVOT2VwdzcwR2NFVk5oamZRSWhGcm05b1ZTWFNKaGVNRFpWcWZCTUxhaVVVdmNaZHRlU1JTYnY3aEgwYnFYRW9Qd1g4TGpiczRCZEhlSDhjT2ZkZ2E3WHBka0hWU1ViUFhHdVNkeGtqR3Zlc1RzRE1jVkY5eUxidjFkYU1MSzRQeWVhTFVmUHdRbFl2ZWFSanV4YkYycEVoY3V4TXBVWXZHY2Jkc2dZNlpibHNqVm1jSzVuWVRkWkRaY3JlYTU2cE5lSkVmQ3didzloRHZKTm94aVNOVW4zWndEazlkUk1oQmZleEQ4S3BwM2htUmNwTkJGYmVVaVBoa2J4QjJkUWRDblQ1d2RrdHZhbWRENkRub2ZHUlNyU2VKeEU5M3BHRHF2ZHZMclV3YnhCNnAzcHNCM3lFS2lFQmVBOU43OGVuYTdBdmZ4TzlINWVBTkl1aWZUalVnVmV1ZW5iZWRYZjBkRGVlVFZPQ1JKRE9CY1hEbHQ3ZFhidXBZYTNjWm9jUUZiVkN6MmVGY2NVUXBUVWJwZmxIYkdXcW1icHFVeFVjV3hKNmdUcmlyYmNobVpvMWVDSnVjeGVTS1pTS2NYSG82cWV6b0Z0NmVzbUtXSmJubnExc2NXYVNSVWJwUWsxZmN0T1FVTGRoaGNoTGR2YmpkWGNHWHl6MW0zQWFYZGhhUEdxZEQyRFRFZnc3eXNnVDNxOFdkZnBsUXhjeWp3NDV2UGk3OWNQcTUwNkZYVWR3RVJ3VmJlVHY1OWVncE4zNGNnaXl1ZWNBM2VXRGJhZ3ZVWWRqVnFEN05tUjlqZEdSSjMyY3FuZ0pCZlUzT3ZjY3lmSDJCZEIxN3lTZWNLVjIyY3ZocFFOY0IweHI3YmhmSjloYk5ld0VlZHpqTmhMZEZESFdkVE8wY3NiRzR0cGRldDJNTHdjUTJRSDhiRUQ2a2ZkTXJrY0FkVG5YbEdkbUw0aEdZdU5PQ2JEd25QZ2RVNm5sSmVzVTZlYWZPYTdRcGJhUUZRRmV3Q2tzZmJvU2NLZmZkMTkxYmVDbDFIZ2JrT1NpMGRDWDVMSWRYVGttWmRTNDQwSnNXWFRQZFV6bng0ZGRmdnF3Zk1MUVZDdkpQRnNlbU0xSThkcE9ZWWNlb1Mzc2JkaEFYNWVlTXpiT0VlVjlXMWFkWTBkcEZjQU9Ua3VjWE9laE9jZEFuZWtkb0VhbUpSUDZueWZ2aWY2SGNQb0pqOGROaFViSGNhRDdmRWRoV0pqSWZlZTlHbGRVRnNic2VVYmNIUmJVWk53b0NWVnA1Y3kyNXFaYnhrd2kwVURESk5lVmduQ2piRm1uRTZiV3VJUG5iYlhLUHpkWURMa1RkeVVFbWRvTUNvcmJpNXcwWWNvRE1jbmZNdnRzZnZGN0s2ZWtwQXJ0elRCNWNqYVBrYmprUlBqZW9HMHFlZXk2SWhhYkhmeEs5ZHJhamNDY0FENkFJYmZMaU9DZGNGcExtZm5vWDdxZVZiV2x1YnhWSzJrY1F1alZYY3l3RlVUY0R5ZzNQZXI5Z3lmY3I3WXlRZGNkN0EyYlIzNFRwQmJtOWdiVVA3c2lmZXV2eE1FMHF1Q2JwSXY1SmJRV1RHcGRoTVhscWNRMThkcWNJVE5LcFExRzRQY2NpVUgxYkxCRHZCZFROM2IxQ1BxYXViTHU2Tk9jU2JObmdmRkdsdE5kTVNtQ2diazNyOXBKTURnQUFCeFJWY2doSDluZkhLRGdJYmcwRWtzZVRIcG1Xa1JOenVkYXNwS0hieEpLSjRkZXo5RkZvNDdtR2NpZU5Ia2ZHeXBoaGNDVHdkOHZvanFyZXlZTzRVZWdiZkZBY1c0cnVhYkxkTTZKckt1czFlVEFXY3lkY2RMV1BWVGZ2bWNSU2xmbGVKQkFISGVyYm1DdGJ2VHFNZlFOdm1uZWczNUE5Q1dPZkVQOGZ6RWVmclJWQmNyMjRiUlJ0Zjl1Y25vd1NiZE1KNGhlSGtPYWlDd1ZEMGN0REE5R0tyVXI1ZVVYOHFlZWxsYWdIZnRXNzExYkExU3kyYm9PVGlGY09rNFhNZExTalhZY1I2VWtXYm1HV3ZEZW83b1ZoZFhCQTlrY20zQ01YYnhNSHg1ZU1QcDNzZGdYbTVMZUZldDRBcElzZUJXcUk2NWVQbWtyQmNiSU1Nb2Z4TlNueWhwdmtIZmk5NEdOeUNoZ3RiU1kzZTdjVGIxOE9idjdoSUhmckwyQVJaR0xVWk5yQnhyZUJtUXREY0w5a0FyYmRXWUtSZXFad012aDZ2ZlViRFIwUnViWDBBbWtjVDJSWWhlZ0RhdWRjZk5NaHpyd3lIWGNMamFpc2RLcUVJbVJacjVsZmhyUk9ZZ2lWQ0xkQWpSVkllQXF6UkhmdEU2UnpkZ081RnFlcGhlY2JjWGswY3EyOGd2Y0lHb2ZFY2FWeFVrZEVYQWFpZG5zSnhqY0hxQnJrZk1zWThYZG8wajV6Y0gyMzkyZW9YUkR6Y1BFNzI4YmhpaXRzZFZXQVg1ZVV1VkZhY3Bvem1PY1JFSlF3YnoyZ21lSUVkbkxla2FDbXdieUVjNGRmUk5wWFlOd1pyTFVkSHJkbjcwNXliVWZmcmJlVjlHcUpicnVYTGhiUDA5ZnBlbDhtTXJyeEFLSWNaeW15aGZBbXZBU2RTUUFaRmRadWR4Y2JNUmI3bmZYVG14d2VEMUo2SGVZbE1jR2VGdVFXeWNJd2Vza2JRS1FiNGVnS2VuTXQ0QXY1ZGR1M1E0ZWdLTzMwZVU0amF0ZE5YdkVPZXJKQmhlYnBoMU5FZElZcjVtYlppaFA3ZHhsc0xXTEZybjNibWhJWWhmSEloUWZlQ2FsQThCUW1KRGNqZ2pGQ2REd1M0YmJOSENwRGRqdEZRQWZJeWVWMklNdEx4TkZkcHRjTWFyUUFpbnhZRWRZM3dhcmJ6RGZOVWVnd2hrOGJIa000UmJEVlJvSmJXeDBaMmRvdHRjRmVpMFhuMmRHSzFHT2JSemZWOGJwaHpET2J2YTJNb2NHd2Y5aWZkdDdjcGJaY09tMGR5Z2ZhZ2Zhdk50QmRrMFltc2JBUG1LMWRVdDBUTWNQbENUbGN3S2EyQmRmVXBKTmJyWWFGV2JTZnJXWUdHOGpQZHNIc2pjZEFRaWdhZEpwenJrZlJvaUZjWlFOZnhma3hTdHBjUURNYjhlZWw1Rk9ibTRiVEFkSHZrSEFiaElkMm5kYUFzZExiWno3UlhjVFd5d2dkVXFKZndjQWRlaHRlUUJIN3RjWXJmYXVmSUhuenNlV0gzS2hjT09kTUZibWpuQjRiWExSUjliV0FmUjVkSFhhcElid1BVM3VxME8wZGZpOWdJUWNxSWxjcmR0VWpaS2RJalVlTmVhMG55RHlrOXlUYkx0TkRUYm4wZWFDYk5zRVVHZW9qbHVMYnp4VEZRZEVLWVRacXY5Tnp4M2dQNmRSS0dWWGJSY0JOSm10SUVrZVpHREl0Y1kydUJ5ZHpzOWY5ZFB2U0JHZktwM0JsY2FrOTQ2VHVyS3hjTHFHRXJkR3hMS0hlR0FkU2RkU1JPQXNmZm5JaGNlTzE5cThBM2NmV25NZkxBdU1VQXRkbU9lczhjYnBsRXhiQnYzd0hkVU1rNDVjZGNmVVllV0ZSSk9iVUFZVEdlTmw5dmxkdnByS1Vkamp0cldlTXcyOUtjdG5uVkRlR2hxcGFlVVhud0lmb0U2dWpUbkpHS2JoVTFJSGVTbm1FeGZPbGxodGJMeWVIcGZlOE9UdmJwTXdPRWVvNFdPQ2J4dWFaVmVYT1NCY2RtbjIydmRTWXpsMmRkQ20yUFltVWVhY3dXQkNGZkdReEFDZVA3WXNiYmgyS3VsY1pnS2NlZVRoanpBTWpBMm9EUFd0U2NMMlFGVWRBaWhrYWRKTDQzTGJLa3owVmJoTHhPSWNseFU0QWN2emdaNGdCV0g0dTZsZVljYno1S2NlamRKeEdmeUZHOWdlZzI0TWVjUnllYXp6dkdJYWNJdmVWcVZaTHlCZVk0SmZjZkJnWHdkZGJlTUhiZWFWWGRqZXJrYkJuVHZQRmJka3hyZmVleFBrZHdmMVlnQmRxcWhBNEJWbGhtZGFYT3lSY0E5QXRST1VONkdjT1ZjT3ZkSnRqMWFkTlk0OHdHTEdac01pbHJUY1lsdHE3Y3FZTVVEZXl1MVlMY2hqNVp1VlZxVEpleXBKYU5iTUppelNiQlUxdjFleDloUXhiUkdYOHpmbnlRUXNldGJmUnZyMkU4T2N6Y2x1ZmJMS2k5UWRNbUd3RGRrd0Y5R2Voa0NDdWVMcVRMT1ZsUEhnY2k5MzVhYmpoZ3Q2ZWxVWDRaZEJVMFhkZFFpOVlMZEo0UGJDZXNqanNBYnhWeFcyY1p4bXpFZXlwVmc3ZXFsN3FKYldpbWlqZEc2NUt6d29oV2tvNUQ3dGZsWmJLTmRxVHV3QWJQVTF3ZGJJVllpOWNUUk1QckFxd01nVmtNVG1meHUyTjNiV0JzS2RSUXQzTGRLbUgwaGN2U0xPd2J1VmxYZ2ZCTnZKZ2ZEQWxwMHhEc09hYklUZzNUYnFsOFlFZUtqTTRBZmFHZ1N2Y0JkMDloZFh5cExjWlhwVm1jWDY3UjJlUWx6V3VjSUlxQllkQXhCNHZmZW9LeHhieDlZaXplRktielJlZGs4M3VmZHdnRmJlSlNIZkFqSnRUS2JmdXJGaGRuVUpLYmNwMXNsaFdMcFdvR0xQUzZjeVc5anJkRUZkemliTkt2STBlUG9oekhuUzkwdWNLMDJyM2VXZW9lc0JCc1BGZEEzWDVEY3kycThtZFpldVBoZlYyVkJ2eDFtTmVXTFVDRGV5dVFCZWNnZ1k1M2NXekgxbFV5WERIemNPTkRiRXNCeERlVnc1MHdib1daZWdjTUdPeGhjYVBNNE5lZ3ZEZmZmeER5b1BaWk42aVNDdHNBZUNWdnYwYkU4NVBhZU1hOVhIY0JzdEhNdHZmajRjazhnQnVmRXMzaUlmT3VIb1Fla3JjZGNLUmcwcGNNYkFNNWV1eDd0ZWZhZG43Tm9POGlRYmxyVDZLRXVBNVpjUXpyYVpiRFhvMkJlZ0dZemdtNmIyUGVJOUpJamNnc0x1RmRUaVJFUWNuenU0VWRoZWN6a2ZhRzN3VmNFVktQZXZ6WDVWYkdSUzdMY2x0WFl6YnJqbFN5ZXQxOFFPZEc3Zk5XUk9hMDdjeWpoYXZpUk9LOWR0Q2cxamVJZlBEbmNDNjk3a2V2cUJjYmVSOEEwY2J4ZTZzTGVpeXhua2VsUE8xdWV5bjlGZmRqSnRTemNyRmJLamVKM2pteWg2OTJ1Yk5hZGhEYm95Q2cwZHlCaUIxZmZGOGFmRTlkSjhjeVhUM0FjU3Bqb0VDeUltSmNBWW1QdWRyWU1CR2N6VjJ2OWVWTzE1VGRtWTFzNnNMTFlrelRVbkpkTXZWdmVTR2pXRmVVMmRJUnh6YnFhZXJ0bFJYZE1CQXViY3hQWUJHVnRQQWJlZlFSUURmSTQ3YUJiV3cwak9lRzBsN0pmUkNUM0xlb1NOcnpkSW01TjFVTk9VcGV0Vk44UGRyZ2FWTGNoRUIwQmNmb05pOVAwMDZ5ZlNnYWZvZXBZQUFmZGMzeHB4ZlhEU0VIYktiWWJiUkJjTnhib0RUelNkcG5pdWJkQjJxbFBlUkxJU3VkZDZGVlpkeWIwOGpmSEd2MG1mZ0hoU2pkVUZaaEJjeFRFUmxkV013RUhlYlVJa3diZURaZ1ZrTjFTaWNKZklOZGZ1VXpNRlpieThyZkVOaW9yY1ViZ3A4WUsxWnBJalN5WnpSVlBlZFNCV1RyZWwwU3RYYmtRdmxlZkRoWFBHTDFBQWtiTzZ5OGVkVkJlM1RiQTRVVENiYVczcFl3R003SmNWM2RET2J2MlA4Y2NGYmJha2VrbU5oc2JISDJNMGJNa0h5R2RrYkFtOWRBTnluMVU0TXpLY2c4bmt4RFByZUV2UHFDcGx0czNSZVU5RVlnZUtDUU1CY0R5VGVpYlVCWEhJUjNmaGticGZkSEdibG9MOHZibXM0bVpiWENUb1VRS1pnWmRuN3F5NmRIUEd0bWRZVjViZWV4UnhEbGRPWkxndWNCWXdKbGZWRWJOb2VlWDV1cmV1TFlKcGNPeFY2TmNzRVVWNWs0WG84Yk9UVVNQYnlxbXJvZlFqMHN1Y0pYUzhmYnBQSXZpZXA0THJDZWswVDNVYldjdDQyTGlCeFBlT0tzNjJOelU2Vm5Sd1duZWZYTzB4ZUNuU1cyZFdsTlFHZG5hYlBiYktiWXZVY2dTWnZkYktIMGxiZlNNcXVPYk9FOFNWZFpCc0VDZEdVNEdhYnpHTG0zYlVtM3VxY0trUjJaUXZobEFlcm1XYWpISWc3Y2RpcFdMZmVNYmlmMlFWYVVoZkNJWlRHYm85dzV2ZHRxZlFtZUtNQ2QxZE1zU2paYk1Oa0FkZWQ4blREZlNKcEQyY1NqVUtsZHRrZlk3YmVNc3FYcnRIMWJkZ3NrQkVjd0tkVGxlRmRkOG5kYjZ2Y2JiUjVkd2hSM01oNGRYRGlyVmN2eURwRmRjZmNuTGVLNE5nU01IMGhKZVJpSU5XZWk4b05aYkFrRTZ3ZWFsVFlDZWtLQlFTYldwaGpUR2JSRWpybnZKT2V5S3F2U0FPR214Y2RPd1JPZXpDbmN2YnFpTXFJZHo5T3kzZGtwbUpLYkl2blVlWkRiaWhmZnBoYXdmc1htamZmc29SVHdkYUxtZ3NjRm5jaXVlQTZoWGZlQVo5ZnlMd1IzeWJRM2t6T2NMQnlRSmZFSklMejVpUXljTDdFaUtmbGR6dHpjRnhDUDhkRFRlbDZibWJ2QlJoYnIyMkhVZ3NtZklZV2g3ZUZyM1ZHYlpvblhqZkw5Q2pOYlZjcDNYYlRVdDZtVkVVUlVjaFM5cGZlRnhaSGNmVnhqdlF5MDVVRHB6UjRBZEh0cDlEZFZLbVZ2Y2hlSEIxY3hVNnJiZlpwMGVkRXRaOENkVjFzNHplc0ZjenF1SVpJWGRxVVlKdmV4aFVENWRweGFmT2RMQmFKeGJkdFQ4cGRtenpaemNjbnI4MmJMeFEwUVZCbDVGZkdJOGg3SWlDNXlkTzYyNkZlbkVJUG5kdzlDNGRnTlV4NWV2dk1HaWVyQ2NDeGNBUGRjT2NxS0VOMWRHendkYmhBbGpzWG55TjJlZ2JNVnljdHRRMjdUODlhbGZUcGo3UGJiVGk4d2NhcmZXR2ZQMFZGQWNTR3BSY2V5eGttZmRQbkxnbWJHQnpIbmNXcWJ1V2NleGFPRmRYTldtRGZPQVpzTGNLZ3Q5ZGNERGE0MWV3VHV4d2ZVOTZwUmRvc3FNVmVGc1IwNEpzYk5oY1hkOGlVZGQ3WVNmZGhLU2szZWJveHVIYm1kcEZiY2k4SDJjRmt1a2ZjaTZmdkZiYlRwUU1hT1RnN2VycThvRmZ0QkZmTmVmdGxSSWNZODZqR2RERlRYYmZSQW5uVWRpNWR4VWRQOGVhcWNlMmpub2VIbUVtMHV1N1VPZXNvSHhmbkt1RnBib2dWTnJkeHpiUmpwS2p0b2RyUTY4bmV4a0ZJTWNuajY3TENsOGdJZnhLREZHZE9jNUVYZVpwNDk3V2NqREZHMEwwTGN1bXNFbWVKbnlxcmNDZFZibWZaYWtlU2VnSnpEeWNvcEtQeWRJRk1yZmJ1M0xZRmJwNVJLRGZ4a2hTU2RaVndhRWZzcmFyamJNV2ZmZGJWcURCUWNHWHJUemN6NGEyU2NldEJQWWJpNUg5TlNVOVJzZlBIVUl5YnFORzBGY3l3T1I1Y3dnMVA2YndrWTk2YkNIQ1NsYm0yWm96ZmZta2xmZk9oUHZZYlVSTUUyYlVhS21oZGpRaE5iZUp4aW5GZHMwZkpSY09BODljZFNUWVQyYlBJVmF5YnFQbkJiYkVLSHZjYldEM00zZGM0NXIxY3ZmVndQZEczUFAyZFBaSUlNY2c2WlVvYmduMWV5ZWxjcmt3ZUpGTllUZGhlUUM3ZVltOEswZEFibTI4clRIUHFicTAwSVhlWWpUQ0RiRmgwbDBoZTdmWGRNTFF0WGNrVnVoZmNxVTRQb2JRcUo4R2RvUGRBRGZyZGV4S2ZsZlRHbmJYTEpka2VPb0s1dnRsWmhrZFBKZFVmZFJPYUt4ZUJKNDZvd1Z2MnhmRU5pcE1lR1BiS3lkeXhmZTRiT0lmV1VicWZPWWNkQXhzTDRrQjh6S2VhT1I2VWhQREFvZnhCaVhKZkpKVE5TZGZ6YzNMZEpXbnZMT0JwRmtkdE5OOHZmMEN5YmVKSllkVGVKMUE3T2RHbGVaTGxCcDBNN0lqSWZSOVVseFIxRU5GZENSN1VmZUdUYU5sY2wxT3diZkVpaFNPYlJXdDE2YmtqUlpQY3ZOektIZGI1Vzg1S2RJSGVmQld0Tmp4eTVVSlY4VUdUd1dNaGdTTms0SmVRbHlyeWJFUFJ0OWRramt5a2RDb3l1RmJQRWZqNGJQeW1DQ2VEVFJOSGRXbmVDa2VFdEN4OGJ4TWNsZ2RMTTd3eHZacjJyYm1wRUFRYk9vaElZZUFMZUppYkI4Z0x3ZEhyNWFocEpZanhQcFRMWGRIbklENGJyblpWZmR5OWVQaGVKcVNxN2RuYjUwbmg1a2toY3lvaXA3ZUR2bjdmZUh2cmV1ZWpOWkRMbXcwNmFlUlR2RElBVExNVGVVRVNod2NZSG5VQmN6bXB0SGZMOTdtdWRJcDNFcmNQMGFKYWN6bmhZQ2VUV1V4bGRHUnZYNGNaVHU5eWVnbGxMOHJvcGtaV2xPajViQkpYbENjeU52MGRjcWo5dDZiYkZ1ZGRZbTlOWmNXWHROZWJHbkxoNmVjbmpFQ2ZxZU1lb2VMYzVGQmNDRURiR2RpQW1yU2RoM01Zb2RPOHZXWmpjWGttY2tsMkdZYmlUS3dpY3FuNHpCZXptYkdsZkswOGh4ZXp3Mnd1ZU8zbHNlbkZDbHJmdUlCdTBkSDZ1UUVkanBhdlVlUXc4RmVibDNHWHNmZGNzanRiemFJZ1BiUXRweGJkUWZiTUhjczk4MGxmWnZGVVdlR1ZTRjJ0aEZEZmNuOFlPN2VqeXdFa2Z2RUNkYWZaYUtFb2RRcnBzTWNQUGhLcWZlcFlPeHFCU0pyYkNXNUZaZWxwc1VBZlk5dDlTY3VuVjRUSXg3WUVkaFZpYzFiRDBtbk1kS3FoeWtiSWhFYnpkNUVoSmV4UUl3YmN6eDMwWXNaQ25DYnVQVXlDTEZrNTlkVDFIT3hjZkN4RURkV28zbjhSSjR0VGRGR1NJeWVHajFTSGVQUkE4VWREZXc0bGR1UDVqQ0FUWTM5ZUt0TjZGZmRsUmNmYk5QUlZQY0xlOWRXZVdBc0JmZURPZWtDZFNpUHY5Y04zMVJoZGkxTVhVVk9BM2FjbThITTdERmZ2cFRTWkVxZGJjTDZtY2dPaERkY0ViUEtKZnBGc2RoZHdQN2dqZmdnUTBaYmFhQm9BZEpONHZTZHlnRVYyY1AxME93ZnZveTQ4YlZ0TWZqbk54a1lkYndpeEFiRHBlbTVjczBqN0NuVE5maGVha0ZpZ2VEbldIb2ZHZnJzY2RuV2VqSGZzdERHb2ZNdnc4TGVyOEU0WmV6MFZxZGN6TGpBQ2J1MzdYSmRGeWtBOWN3NFV5Tkloa1diY0Z6VGFqZFBBR2pmQnB0R25mUTU5UmpmcGdDWHFiUENxQ29lZWpXSzJsTGhZcmRUVTl5RmNocGFmaWRWR1JmeG1UMXlnZVZGcWJyQjZiODVRemQzaWZLV0xqcmZQR2YyUmVIWm5KNlZzQXFTYmRXc1l0ZHVjMVl2Y01JZ21vZk1uQ29pbzVRUUVjZlVrNHhmQjgybHhiSjF4Tkhib1NrZ0lmRHRxQmRESWRqZGNiOE9aZmZCTXlESGRiaEJrNmJaNnRNNWNteW9tUGRXcXRmemFEOE9FZVpvU3ZyY1BHeWtsZkZSTEpyZGtQc1BUY3hYQXRIWE81azNiazJQTGJidUNwQU1ReGF1WWNQbW1tSUxqQTl5Y3ZhY3FkZExMZ0JjMzJ6MGVNeWRtNWVjaDNqYWNxa2cwYmZ0ZlRIRWNVMHdnVGNsS2lUZUxIR2ZFZG93OFNCYkpyZXlGZHRkaFpuYncxSGFaYlBqZ1B5ZW1PbFZGZnlRc2o5ZEk2WURnZFg1M1FuYko4anA2Y1dWMFF6YnR1Qzh4ZUc3UUptVXM1WDN0b2xlamNOUEthS1BWbFFPZExCZ1JMY1hWTU52ZEJWZ3F1ZlNKS0JiY3FCaWtZZVN2eDZlZmlWeGxtY0hya0xUZE9hMXFCZkhPOEFvZnBvMkprYnNvWHVTdzc3SG5rNEF2dGJaWjhmdWVuRUVBcmNqUGFDZWVjRm83c2JOdkI2SWRvRWxVWE9GM1plZHF2OGdCVHNDOTdkWG53Um5jZUtYUkZmcklYaHplckJsTHllTGI3WkhYRTVjZ2VLVGZNZmRVVGJlRWVXVGpPZGNIVkJ1RmNnbFVMVWVQcDJNNnNXTTlIYnFXdXh6aHVSVFBiR0ZQeVFkSEJWYVlqWXUxRGRRVGQzaGZnYlFmVGJGQUNZQmRGMVFUZmNLdmZ1aGNXMDByZmNzdVhrRmNqWGtIZmVwdW5KQmVZcXN6RWZ3UFpWZmVuMjlEaGZaY1Vjb2N5V1ZCcWVZeHc2aGJySzVVaWZiNGZVZUxvQVBvZUsyMWV5ZGJhSlBaTHZHeHllTG5tWjBlZlJOeXRlT3JIb2lkZGhWNVNlRjFVUHFmRVJ0YzFkREtRZHBiRTZTNHRjeU1iQnBiSzNrQ3dic2tXdWljSDBZQktkSklBZTNlTjV0akhiZld4WlFkZGY5bldTTEg5SWNMc05haGJ4OU45aWVlU1owT2N1Y0dMTmJLSDRRb2ZVeUc3S2JaaEtCaGR3UWQwR3JpSTgzbmxVejBlSHh2V2FiYmtvUnVjVXd0eFFlbFdUSndkVElVVlFkU0daY1RJOVIyNmVUYld2Zlc2b1IzZXFhUzNnZFQ5eTVEZHlpTGc2ZWZrVVdLYkhwR01QY1lWZ2k3ZE5qSXdlZlJmdHpIZkpXa09SYllCN3RwYmxXVlpWZUZNNVFKZXQxcGZyYmdLRDkwY1Z2TFZRZHc5dzg2ZFh3aFVFYkRWRDNwZnhrQm9Hd2FaWWxjcmE3SmZFSWxJZnBkallCYlo0ZFZPZE10S1dUY2h4bDFaZVFhRlNFYnZSbE12Zmk4UzBwRGl5YW1mV0NVT3JkbllDbkVkUUp1b1JlelVCbjdiRGhWUTVjUUUxYndkQWg3Y0xkV09KalpSajAwVmNsVDF6OGJ6WmdQMGJYTjR3S2ZjaXI0N2RxV0Q0ZUlUTnVmYkM2cGlzZlpCN0ptYmZWYVdMUDgwUmNmUmxwalpiaWtMU1hiTTBBOXlmR052czlkeWRkR0NiWTUwMklkTjZYN2ZiTENRdGpzRWN2ZWR2N1RIUnVPcVZmZW1TR0NYZUlYek5YY2IxYzI1Y2I2a25zYm9YS1lNYk5hTmNWZWFvYVU3SktvS1ZlZFBGWkhuSnc0R2ROSzBueHVLbEdiZlRpYTU3YnhTa3ZZZUtwUkF1ZU55ZXFNbUpDVEpjRXlRSW1kd1FjdlF0T25TZEhTS2U2YlhNT1V5RE9kVm9lSTFKM05lZ3RDeFZkSW9HbENmQzhIc1B2WnlYY2ROTzg0Z2RnT1RZMXdPVVFqcXZhSVRjYjhYdk5kRnBGU21iUkRycW5menY2ajlQWVN2VGNTWUl4WHh6Z3ZHZlNGc3VFZmtoOTRPY05FVzFRY0ZyY3lKZXhCYnNyY0lYNTNUYkRMT3hpZXpwUWtWY0VOeXRzWnpmc3FkaWU5RmFibzJ4NVJkSlJRVzhiR2JVcEhkR3REQjVGeTFQdkM4ZmZEa0tWaGRjWlVCcnVVZng0bWVUcm9aMWRodzJsMmR2VlZ6amJubDlhSWRyVHVBTmVyMHRWc2JnVEczbkRxMllqYk5WbG5FcW1kRVVlVXFHd2dYWmFJdGNIc01YcmZGajRhYng0RllYZVJCUE9EY3JlSjRVZGF1RWFWZUlHcnhOZW5qdFE0ZVh2eXZjY0h3ZHk4ZE15UTdCY2gwVlJNZHNPUGdWUDl2RGhjY2xlZHRlSFdlcDJlc3pGTktjemVHbTdkbVd6czljRVFqQ1pka21ha2NjV280eTlkZGd3WjRiV096NnRjUDBJMEVjWmxPT01iRzdKMUlmTHl3R0ViRnBVTXZkdWtWWHBjTmdkUWNZOVFEbmRJeU1MRWhxeUZoZmd2YkVVYlJNMHI5ZVNWSTRlZEtod25SZVJDMWVqZWZ4YVJiY2Y0dmM0YnRSSTVlQlJNTExjbGV1ZkRjR2JLSlhic0tvQnFjVU5mR0ZiRDlhY3NibktyRlBjVEpmeVRiTEJuOENmUmo2UUNmYVlyS21BUHNpNlp0ZU55ZVluSFVCZlltcnk2Tm9FQ0xidEg0SUllTW5WVjJkUlZaVktldXNFSHhiTlpBN29YeFp0RlNTWVRIZU4zd1NLZXlZeEplY2o3N2R3azliVHlEWHVwcEEzVk5iVlhkZnhkTTlPUW5mYUt4MlZld0RORE56cUtPMWJnWmpoSWZweHEzeHJPREN6TjVMcXBjblJUNktlZmdqOFJicWF2clhlelF6Y1hlaURqVHliZ0h2UFNiS0RiNm5iYlZITUFmRTluMm42NkdhZEkwQzl1dnliOG5mRTBPYXVNSTJmVmJIZEIzVmJSMm9zdmNITGplMmR5UERpZ2J0OWt5YmRBbGkyZmRTVDdjeGNMMUoyZGNSYWY1bWVtZ3ZGTWNoaHBzeHFvTkZKZGlaRmNqZndJdGFkYm9rVWFVZEtnMXJCY1Jld0xQY3Q5dWtwY1VUMURHVUJHY2RkTzlYRFVkaWoxdW1kQkg4SVNiRDhRczFjbm1HS3Vidll3elllQkZwblNlRVlRWFViS1VGbWRmREpPa1pjeEJ3SzNRTlFXQUFKZWZhYlF4QVdVeGhJZkFjV085ZWVsZUlDMWVSZzZxb2RRUFpldmZwdFEycGNHaEcxYmVoSks3NWRjb09kSGNSWWJXc2JONTlQNWJONG5ORmNPNFdjR2NoaHpDbWJpNGJrWGNLWnRENWRyYTNQMGVsd2Rka2ZFRlE3OGNNYm0yV2RYN1UwY2JTZGN3SGJwaklDRGVPMUdqemVtVXMxamVBckxrTmNXNW5yMGJyNmNxaGRvRjA2amNVTU1XY2RsOGdReWRwSEh3S2ZyWVBYemVqY3JieWNRbUFDVWRQcHNjWGJWN3hpNWRLb3JuSWVpVFBmTGN3UFJOc2RFY1cwOGNUSXA5dGM0TVlGZUh3YXZDYnlNbkI0Y0QyTk0yY3Q1bEpZZU9wM0hxZm5hVTg4ZHlaNnk4YlhxR1lQR0ZPS3hibmtqdk1kSkJvWjhiY2t6M2VkVkZJR1hlTnJrMzZjU3VseWhmdDZMTnhKQzNramVMckJWNmRRbzFNaHBTcGJjYnd6VW9XZGtMWFhhZmY5T2dnZm9XTEd1ZVhjendIZGxFUHFwZm1NVk9HYnFETTdLRnJ5SWtlSGJSNUNYTXlyc2RGOW1xdGVVb1JjYmVoUTk3cmVKSk9FN2l1WFBRZXp4dnVEcEhWY2ZtQ3daamNwaWFSNmNVS2g1Z2VEWTFpa0hNRERXZUc4UVVkYlBOQ2lPZE1MUm5wY25FQldOYndOZHBHY014S1g5ZHNIdGFhZEx6RGVOQXR3RndiRlg0T0NkS3hLTHpkWEw3MWRmYWdWcE5INGpPc2V0d2NGa2VRVnlzSmVmZWJMZWRWSEF2OGJ1b0V1MGNiWjBtb2RadkhzZWJGVUNmYmR1V25Gb0FJamN2Y2FyVHdKYVo2MW9kSDFPbnpiaHNwRERmTDhCR3NjYXcydWhkUWF0Z2ZlWjQxSEllRlk1Y2RLeml0Z2RRUFJRSGZIanExVWNJOExObGNOQzBraGJxc2J6Z2JrYXgxU2V1cVVHcWJiVTI0N2VSWmVyQmR0Tnc2R2JZWnMwZXdMUTh3Y2w1bUJSZUNQN0ZqZENPY01uZFIzc0hJZkFjbzNSYldCWWg0VnZTeXVjRUlDWDlYbzZ5amZSNGtoOWNEMWVkb2RPTEhOQUVPZllHSnpxRXpiT2xxRjFTcldJMmNIV3A0TGNablREZFlkTVMzYk9xQUtHZGtsa1hFWEcwMnBkS0hFaTdiUVQ2b3lwTWRZamRObVRIenFFVEtXYkdQb2hraExMR3JleE01dnZmTU5ibThkb1JHbVRlbnJEY3dTdUVvRGV3ZExBbWVPMVR6d2NIWXN2d1NKTXYxY0ZtdjlOY3NabWR2Y3k3Y0dPZXJkR0VmY0E2NlpvY1p6eHFkZFRhdmlUY2J2QkNrUVdFTzViaEs2N3FidWY4aFl2V1FOdWRkZXdqWEVVSXNiY01mYjBORTViRnNlQk14QUdjVVY2aHViUVdmZUtmUjRJSUlidkVZQ05iSElyTWxjVnNJZmZkRmFxc1ZkUjJ0Q3RiU0ZEcWtleWVya2NRRmlyRmJNVEM4aWNjNGtGMWRSMDN5SmN0bzRpWGRVSDJjR2NRUTUxQ2VXSkNZdmVuN1lMT2E5bUZqZHA1R3AyZW42eDljSkJXemNlekxwR1ZkUjNWYUJkekdUdUdmaDM3WmRkc003eG9kVER5ZEhkVnhoMmliR0NTYmhkTnhaalBkaGZySUpiTEc2anlUeGVTRmNyS29HNWVXbjNhRWNldmxlS2ZBN1VMQWRuNUV0WmRyaEhvMW44SmU1Y0oxdDg3ZVpUeDN4ZWhubHpJaUczWm1majdmMXRmQ3hYQVdiWXlSTHZjWWhtUkJ4UkpKcWJyaGU3UGJLblFlRWNKbTl0TmRucVE1ZmVkcDZKTWNwazJ0MGVaekdSOWJiZmtGZnR1WjVXY2xXTEY1YnZINFpFYmIxcWtHY3RlSmV3ZVNIWFRHZEVxZFhsY3pOOHNFY0RwVHZMZVNaWHNpZlluQlpPYkF0VXhzY2pXVjBwYlh6VWNlYnB6a1huYmVCWVBQV0hZSU5lbVptVmNkY0VTRW5mRmJzRlZkdWQ2dFFkS2dPVWZiaE5NN3dlak1hTzJkdXZmcHljVTUxbFljZG5BdFRlb2d6ZnBkeW1KeWJPT1hpSWJ6SzhtZ2JtdWNzZ2ZMUnhHZ2NKNW5FbWNKek40M2RwNXRVNWJ0eHJxMmNKT0docGR6djg4c2NwRjBDM2NGRjBpMWRKRmZuQmZPOVNxSGJhOTl3Wmtoa05wZVg5T2Z4ZnBqRFRGYmlUcGxYZU9pcUUyY3E2NXRBY1RGcEVLbE9xQzFlR0Z5ZFJiZmcxVlFrSjZPb2NwTnNsMmRMTEVvSmNqOVl1eWNnQ25ncmZzQTFzc2NkaXpSR2ZucVFRbGRNVHk5bGVkcExtcWluNjFUYktkWFpsZHVEV256S21uUm9kUlVvMFl3NGRJQWJFUWwxZWV0bHFoQWN2TXpLaWR1MU9SbmZHaG9uZnA0clE0Rk9PYUdkckxJM2djS0RnWjFlUzN6UjZjTTFrVDViS1JMRTVjcTRub09lZ3RqZGdkdWdqVjBkTUNubk9keGg5RGtiQ21SMW1lUG12TUNiUnFWeW9mZzhubllkY25ZS0taUHczSWJZSXRxTGJGM04zTGNtV2NIY2JPYmJHN2RpemlkYWZOaG9GS2ZCZEdkeWR5S1g3SmNuZFJmc2JueXIzSGZsSHJBSkdJWWlnZm1PeENCZUxFOEIwY3BKMTUyZTVkYU9lU0tKeldlV0ZvWTlidlg2aEZmZUNDUmxleHFaeXphQXRFbWVSS3NaZmJUSGhxQlJydWhCZXVPVU5aY3B4bW1QbnJiMEtjcjVlN3hjaWZYbkRiS3ZYeXBmeldsWklkVmVsaWx5OVdIeWNhQlJEZ2VRTVZQYWZxalB4RWRqUmlsSmZOSkpNRWVaTktGR2ZGSDI3bGpORmRpZmx0aExFZXg4MThBa2xFTWZlYjFkZ0tjTXduTHdiV2pkV2FmQXZtd29mRXhNT3JlS0hGeUtjTk05SkVkZTdCYjRkYldZUFRlZEtLOGllYmx4ZWlmbU52UHdmeFljWkZidU1XV3JMSDFaemZucFkxdmN2Ykc4cWRRVG83N2NoTlhXSGJOUjJQSmJPVzBJYmRwSFYycWZzaUhKSmJWZ3Jnc2RzQ3dvVmNiOWFEM0dhVEd6ZWU4RXpsZk82eWpSZFpRdTlFRTlXMUZmSTUyZHlkczFCTlJIWDJ0TGR4eWxPSmROMTFzUmNjSE1QV2JJV05IcmZtMVJvOGJwZUc1ZXRHUDRjWllaZGRkd3VVN3BiSnRsTEFlSjRnYTFiTVVJeVJkZlJFQzdkU3JNcG9iYnFldTBkUTlqTEpkR2c0ME1wajhJQWV2UmUwdmVSYWdEbGNCTzQzZ2RvVWxucGNvV1ZybmVicGVjN2JvZ21CY2R0WTJ3OWRIb1p2bGZsbnBxRGZPbEdRT0Rod0NRYkd2ZFV5Y1hxdnRIZEg0NGFVY004SXpEYW8zOTZlSXNCQnVjaTlTTkJmb1FXYnRkWlhMSkhmeTBmWU9jekR1VlZiQzJ5emtkazZHUXdvc2RXR2ZyYUtteWVIQ3Bib2ZEZXF4UGR5ejM2OGJ4N21wZWVHUmVFQ2RoenJ6VWRwQ2tVaWJlQVI0SGZuTjJlMWVPWHBBbWZuUXE2U2NmY0RCRXFXeDM1ZVo5WE9kSHhiU2NmV1AxMjZiT0M4dmVCeDhZdGRKQmlNZExQZWwzYnpvdVF5VUhnVnBlR2s5dEljVk9YaHRkTldFUWJlZGNKZ2RuN2hleWZWYjUzWmNqMHhyRXFaeDJGY252ODZzcldHM0NjRDJDam1lR1ZqZ3NkS0VNRTZlc1lFWDhieGlLd3pmdTZXYWRJbGJWdmw4S1JvRVg5bFJiTDZBMUVlWWJ3Y3dzV05lbmZseHhqWWVYOGp0ZWZPNjNPWGRwNmpnM2VPMnlEemRnYmZIUnFadHppYlN0bGdIYm9McGFXYldTVEtiY1BQb0UyZWp4eDVpY281d1RsY3RJajRmYnNIWjkyY1RtRmZoZlZENFFtZUtmblQ5ZFo0bnZJSnFOTmNGTlFhQ2Jsd0dRZ2VwQll4eWRJQXdrTmNjTXFaN2NncWlCRlJJU2FoYkdndmV5Y0xzMk1tZGNKTWN2ZXJlWndBR2tDbzZjdnJFMEtjQkllNEt2S3ZSZmRIbWFNcGJmRkJNZ2RSRnNHT2Rwc1BpMmR4ekJ5SWVlcFZVbmVnYmxMdmVKSTljRGZqMTk3cWVncXAwM1dhMDB1ZUx6Y0wyZFdLZjhEZkU2V0N4ZEZNQUY1YkVZSFZyZVBWSEpMZURoUFltZUdiRWRnYktIb3VyZGRzY2c4ZVBVcHpncVNhcEliRW94MzlkZWsyQkxiRXFkdGRmVEpPRmpicWNIOUxjbkU2T0pmYTQ4U29kVFFZWlJiRmk0cnNjd2VXVnRjbGxsUWxmWHdzck9sQVZLcmZqREpuR0NTYURiY3hveTBJZmw5VDhyY0U5TTZVY21hNHhHYjVsaHZieGM5azBiV09uQ0JNNlFnQmJFTzEzcGRSZGdkbmVGNjF0MGV4ZmpNamRhYmRUREZreWVpbHkwQmVvUWZiRGRJUXc5SnFtanIzbWYyaWZjWmloZWhkSEltQ25jV2pHdHplYURWRjdUNVZWZ2YxSlJGYmFMdGNBQml1Qk1TRmp2ZG9kQ1pJY3doZ1FZZWFlQ1REZnZuc1V1Y0pVV29pZFFLOFFOVFpYMVZiQ09nd0RlYjhJMDVlZ1Z0cWxjd3FLdTdkTmtUTlZiQ1lLb1FxUjdpNGNfcks5OXFZSmRiejZlTXE5bjBjcHlGV3dlZlpVZEhmd3RiOTRlbHRERndmUWVCWWZjVDZQT25maHJVOUh0d2JvZEVHTkpGZmlTdmc2ZXg3ejR0Y3VZM052ZFl3SEdUZGZpR2RjYkVGTkxMYnFBS0luY0dGYXJ0ZmU5dUFyZHFMWUM5ZW91MklqYnJhZ3N0ZHBycXA3ZEFaekhDZmtaNU55ZFdXZW4yU0tDWkVidXBkeHJQZE9jTWJFOHd3VmNjVkJuQWVwUTZtOGRVSWNVOGJ1MGliQWVCem5sd2VOeXQ2aWNDSlJZRGZzWm55ampuMnNHZHRRVE94ZGlpMVJHZkpYSlNtWjhQZGhReVNpMWNWQ3dtREU2Zm96ZWIxU28yZVFneG40Y3Bjd2VHYlBLb0I3ZXpMb1pkUDA2RGFkRFRUS0FjQmk1cHRkRlNZbzBiTDMyYndjdXRHNmlkVTg5Mm1jSUtxSmJmdUpmaW9ma0dyY2JPR1BkQmNxQVpIaWVJWU04OVdtaDJUYlc0YjdpY1J2TUdpZEJuRXN3YmlTbURkUUg1QjRiS2V3V0Vwd3JHbmN4c281WWJaMTFiSGRHcndtbGVxdUU3QmVWS1NzdEdRMnM1Y2JESnpUYlNkRlFsZFZRUVVVY2dLTFFuYlY1M3VvZFVkUHJzY1hzcUhJY0ZWV2hvZk1ZY0o5ZVRpRUZKY3hyQThvZmN0YkZDZE5BY0p3Y1V5S0ZJY0lPdGtRWnpQaFljTmxTTUdkQUpkYXhjbjlKUjNlVDM4YTdlWnBEMDhlZ2dzcjNkQTdBVmlkaHZQVFJjRTkxZFNjaUNUMUxjZVMySE9icUFnZ0FiWEFqeHliY0VWTHlDekJaY21YSTJJZVRyVmtGYm5OQVBvY2M2OXl6ZGdLTDVkZW1UdmFMZE94ZDBJYkNDMWZ3YnJZbnJOZWtyeTYzZXE4Q2QzZWhzcm1mZUFlaVF0YndLeklsZXJxOXloZktIaldISUkzR1dkQWowS3hmdW5UYUpic2VLZTBiS2Z4cE5iWlpKOEhFR0tmZGR0QTYya2V4cGRHNmRhWDRHNmNSWTVXY0hLSVM0WmVsanBXTUlvQWVBM2Q3RGRlMEtiamZuREVYZ2ZmU2VtQmV0SFlveGZtbmJkWWJUSWg1T3dTY2lHZFJjZGQ4bjNKQ3dmVm1RQ2JmaG1Md25jclREWnJidmE5aTJldHQ5em5mTTZ6MjVjeTV3Y3BkRkozdDNiZ0l6MWtkQkZMOGVjYmx0dU9kUEFCTERlaW84cUdmZDlycG1jaVZvRGlWWldGVmRNV3RKM2RMaHZXS2JVV1ZKVGJ3OGdXamRYYkVuUk9ZZ2JMR3FqMmVjZ3d6NmRXcWk1M2V1NG9JZGRlUTJXeHZsSjNySlN5bmVpTXFKTmNidU5FZHhXQ3BkZkJiRGZGZnF3bUlNQUhCdlFkQk1ab0pkSkUxOWJicTRmM3djUHR3NUNib0xSckllYzFBTGRmYUlyNEdiamdlWENlV3VOZXBmVVlSSUViUUNvaThjSHpUQVFjQWdxaHFleER5a2xkWWZpbDBucVRSMmJnZmZFMGVHcE1neWR6ckpCNGNWOHloSGJtUzQ2RWZKTldoWmRod3huTmJJeVJmZWNKRkI5MGRNOTJnTnNOOTNXZUFOUTJkYlJkak9oY3UxczlCZGZDTGNTY1FzaGpZY05JekI0Q2lwaEhlRHJnMEJlZ01vU1liUHZZU3pjYlFUd1hiVXFaTThldkk1NDhlczF1UzhlemNiS3ZjSjQxck9lTm5TYWJmUVN5SVJiaVdCZ0hjQld1WnVjWVcwdVlSWGp4aGRUTmxxdmJ3NXF4NWE0VnBzZGlnWkdyZmlTMnlDZWtNZlRmZVA1ZzljQzM4Y2FkRFFIMW1lV3dmbk1iVGlMMDNjYWFzUm1lTmxuNkZiSUcwN2Fmb2g5RExjcVhUMXhmekd5NlBRY2N1c2RUNjhvWGNFbERvcWJHZHBtT2NNb0pvYWJ2bnlFeGZSNXhYNGRuZ2RHWGJ4QlVPUVlGVkRJYmhybHFxek92clJjTEQ5WnhkeG5DRUhiY1YzVTBkaWY4emVxcHVXZ2I5MEEyYnNNR2NnZHBhTVBjaFZzUFRlalZXQWt1ZlNHRWV3RkxXbmZndXdJVGNtWnVYdWNpaGtUY2NUa0J3TVI2VDhFZGJDWk14ZUJKVGp2WDJ4OHdkUFl5d2tkaUtZSmRibm44b1llaDFsclZlSUw2eGFmVkxqMjljZGVIcmNqOEtmV2VJYXBYaWJaYTdXa2VqdDdTanVUcG9UYlM4ZEhvY2h0aHdIZVZXV2ZseXA4SmJ4UUhFdWN0SWdDa2NXSFUwOWNyNFY5WGJLT1VpeElWTGdiZWVlb05oZnF0RTVBdzFGdEdiamtNTE5lSFhoR0ZkcHB4V2RjalRzM09jT1ZoTzNhRlRlTXFERDVlZUFFT2R1ZFc3ZlE4YnpOQ2FOY3VVRldjZVR0NTFDZklzTUg5YnlBWjJKZHRrQUtnYm4wTXRTYmFGR0N6Zk5tdUZlY2hlQXk4ZFM1NGJoY1RINVg4ZUtlWHdTZloxdURkU1J1aHFmTUpXWWxkRnk5RTNjeExuNFRldUFBckpZcVIydGZlQU1UZGZndkRackp6YXdLYmlROEFsSTB6STBqdGxrSmI5bEI5cUhSOW1iTjFpR1p6ODJ0NGNnWTN6Q2JtRHdPWWR2T0RvRmV6VVlqbm1VY1BqY2RKWWh1ZVROZURlZlpTdm1XZEtCcnZHZXl6NVBIY0N3VkY4ZURKNDc3ZUZEV0dYZEEwSEtpZmV5UDNDY0tuNm5pZkt0ekhnZWtPQVhYY3N0OU5qYkxhM3Z4Y3h1RjFXZWdCNkJYZXhXcmpmZE9HVXhCZFZPUU5uYmhxc3JSY1RBTEExYkM4Q2VPZFpmU0tMZUZyZlNmQkZUNjlkTDNudnpkbUhtSldlRlpFREZkZmE5TjhkdlZmOXZkUG8yckNsZkdBNWRhVXp5QVQ3SWlrYmxNaFZqZXY2M3ZKZWtUcWVpa09EOVJhN2pRU2JlUG1pbmVmTjB1a2VsMjEwQmN0T0xIZ2R3NTRJbWVLN3hlV2J4YnIzQVcyR3lGY0JYbUJZVjd0b0RlYW54dWllUER5QnRldUNvR01kUlhHem5ZNGl4RWJFVE4zcmNRNUxSNmRwdzlWTWRNNll6TmJkUnBUWWJueWZmZGZnNUt3dmZWcWVzTmRDR2t1SmZlejdvUkpicjkzY0V3OTh0ZmtjNHQ5aHFadVRkajJucGdlTWJpaHNiV2lnWHpiT0pOM0piS05vSVliWDNobnpjcGhjNmpiREE0NXZlV1gwbVZkU1lSODRjVHduQkViendMMFRpbWZRZGJXRmplNGR4TzlaMmV4eFBwRWJCVWxZSmZxV1JoWGR4YjVSWmJoNm5jbGNGUHFENGRYcmFUYmR2RFdJUFFRRzFiZm9OYm0wY0Y2c0VJR2NZcXdGVmlHYmJUaDJhQ2ZsSWNIT2R3anBwNmJEZDJ1Y2NQOTRoVGR1aW82eGNzZllQdmRlZFQzWGVDNlVsemRoMXhYVnJyNWRiR0dxZVJkU1pxUlpiaWZsU0NicG04QmliYmxRbHhiUGZmcU5waDN2VmJyUUxDNGJjVEhtS2RodlBYVGNHQTlib2Zidm5KWGV6VFFlVGNDbnBHZEFWYmZ4UGNhQ1ZjQkxJaHRmZUwxS1diVGo3MXJmanVhcUFVMkp0WUw2dDhZZVYxREtiY3dkMUNqZFliOHVyYlUycjFBakFGaWZjdmtUWW9kcTVLNnJjcnBUeVlleHljYklmazAyZTJkelhYS09jbFpuZVhlb1RsRWdlbG1EYTdiYjdXcHJjcGdRVmJ1aFhTdmRMUlV4VmR5Z3RzTGV3UzJ6akpjNGNEZU1lMlhSZHhBbjBaYncwZXNPZXlVUzljZEVhZm96ZEJkMExpSGdkd2ZmcDRIaUlkb2Jkb3pleGl6U1FiSWxtaEtjeGZYeHZlQnB5dThjdG5sRjBlNHlBVXZUald6ZGUyUVloZmJveXJrZWprSkhXZHVHYzBMY09BSE9rZm1RMFF6ZGtGZVNqZG9mdzdRYkU3UnV1aTRHeTdianVsd3NlRWZjbWpjUE9CNEpjR2ZMN0hlVnZVeEZiUGpwUzlleFliT3VmR05yR2pmR0R5bzZRQ2ZxNmRWUnd1QmJic01tbGRmSENuSWRkbml0QWZnQ3RwTmVFSWxDR2ZKS1BndmNpcUFlTmVUWVBjQ2R0RzlMMGJvekVhZGRZcGRoTGV3VlAycVRnZFFFZnhPVHdvY3Z4Y2g0ZVRRVGZmY1ZWQ1BwZWRZbU5lYlZlYjJjYmNsNDNIZHhPU3pRZEZPd1c2Y29PSFVzZVNyUVN3UDVnWkRiTnFuWTViREZ4UFZjdzI5Q3Zicm56V0dkdUtlNFhlOThtR2ZUb29vV2ViNHhDSWJCM3F6RWNiQzVybGJEWXVobGJZcW82MFZuVEtzY3BDZHRXZWgxTEFuY0Rib3VLZFdzcXZlY0lNWXdUZEVpMExEZHM3bnRWRWszYmhiVFJSaVBjRlY0M09iaVNaSTZiT0lNSHhldkpLSnBiRHFtT2tNc2p3c2JEeVZqemNHdkhNZGJYOWsyamNaRHpSYkhHRnVoY29NQXlHZzQ4UDdkWFY2N0tiZWJGUUxld1pHZlFiZWVDWDhjekduSkljYlNWaVZjdGxmWmFlSjBxNkh0aUx6M2REQlF0TWRwSklpZ2R2TGR3QWNyZGZHTmJUZkowYnl1VWtjZGRGSzJkY0kwSkVzYVo1cTdkVDY5cThkQ0N3TklldTZBQ1BiZjd0MFdjWFROdmFmeWZtTjljTHh4akVkZU9QcTFiUjlXUG1id2JKZThlejNtVkhLWVh0aGVWTDU4bU83eFI3ZXNiX3dpek9mMXJJY1ZYM2xQcmNXTEZkZ2xzY1ZUNEJBQ0pPMGRKZHV6OTM4Y0ZrZzdiZFhOVXI3Y3Jnd3djYmZqZkhiWlYwQXNyWFJTaGVaMXBMR2RkUnAza21wQ2toZE1NVFRtZHNaWFQwYnhudWkxZEFWcVo5YnhwYVJvYnY4YVZ6YlRkQzNXY0hlaU45WWo5YjVjSGk3TUNkbTViQ2djY21uSmZjQkdBeXpkY3JjZG9zY3NpZXNjc2lHNUk2RXlJbFA3ZFRONmJNZWdhdWI0S21ubjZiYXZVYWtkaHNtZWpzYWpzYW11YXN5bmNmb290aXB2NnNmakpqMkdrRjJvMmJsaUF6N2RrMU8wcmZwbk9VTGRVVnpiOWN2Z2JpS2JXbDU1aWJhaUtDbGJ3dzA0RGZwajgybGVKWm1XOWVEa2s2Z2VJdlBaNmRRRk9HbGZQUTJBb2Vod29WSGR6dzRVOGNFalhIcGJ2aEZabGVwU0hxaHBLSmlYZEg4ZktqYnZtTWhrY1ZDZW5oY0JneVBQY1NRUHJ5Znc5b2J2YmRFNTdSY3luQ1d3Y1N3Q3FBZGZYYkNaY1E3aUo5Y2JWTFozZHNOc1NvYlpnc0ZoUVU5Qk1kS0EzUDJDM0puQ2VWTXVFbXBMN3NCY1JDRjVTZFgxa0JtZFFZTEYyYnBBUVlVZGRYZFpWZ0lsdE9RRTIwQmVhN1FUcWRTZUhzTWJJU0p2T2RSaHNoTmNmejV1a2ZJeVVlWGNad0ZEdGZuVFU0T1JEVjNOYldONERFZkpJcnRIZHVsU3BRYk9YMlBnYlpTZ3VLYkt0S2d2ZEVuZ0hkY29TU0k0YmxLZDBjYmR6ajBkc0RPeFdjZlRGWW5WZ0JkRWN0S01tbmZWMk85cWhJRkNkamVsSWdlSlZzTnRHektxUmRHajMydGZGQ1JmdVUydXRnZXhaVHU1Ykl3OVhvdndUVFdiYXNNcUllTFhBOGJQaVE3RmJxN09kS2REcFg2NGRFdWZpTmJ6elptT2J3WVB3UGNZNkdKZmNxS2Z0dmNhQ0o5dGZNMFZRYmRaMWpQdmJ4R1FZamV6c242d2JNSXVremJMSUt2R2NXY3BOZGNZRmljTWNSWUtmQmFGaE1xY1ozWkNTY0NtZmdrWllrYjliSHFPVVFjSUdwM3FkQTdmQ1VhTDFjTHNheXZBZnM1ZW9jZmxpbXVuUE1TNlNkeU1wQmNiSFRTQUtkdTA5UlJodnRNVHBodGduZmtOaWJOZGc5eHZSZGlOTGNiZVNuYWhyZVNwNjlPTnpLQzlibjlTc2NmY0VOS0pkcU1IYlRkU2cxQndmWU5kT2JkTHJEb2xidDhkbThkeXgwS3ZLQk5Rb2R6WkFheHNtS2ZMY1B5VXBpZFBYZFg2ZFBjc0RnZEFHeFFVcHhiRDR0UDV0bmJpQUJTbGZBalkzbmNmYWRtbmRhM0dPc2RPbjRjYmJQRVhnZGVKNGV5VUZCOFI0ZjJxV0ZmY0ZkVkVmd0QySVVkYkxZdE5lZGtua1dkSHU3VGFkbVhRVDJlbWJoaUJkdExYU3plYm15ak5ia29mSWNVZDZGUGNTYkExbWVzZHVvZFNOa3JXZVh3ek4yT0hIVTVkcGpvNkdicU9SWEFmclN6WmtmUEk5ZTBjWGM0TmdmVXhWWDFla3FJU0tlalNXejhkTk9CelFldVdBa3JidWlFQ3JmbFZiVFRjVzloRDh5WVR3aWN5VFN1WGJZNGp3SmZJcHR3RHdhQzRGV3VDS0NjT0NmTURkaWpFVXZDZlM4VWRLRjNnaGk3WjhXY05CNjd2YkNWelF2ZFVzT1FIY21sRlFxZmRDb1pJZEtuZmFkYll1b1J1YndFVmxLZmlGS2hLUXFOempkR2p3bjdjbU13QUNmalA3Q0xkbmhob0ZjcklrOWVSSERqMER2NEpvZGlOOWc0ZWM5SDlpc0xTa1FlRUs5bHViWVRWNUhiYm1XTmdjZkVFdjViaG9selpjS096eUFieHJaRGtkNjN3Y2ROUHBnTGRDQW4zdGVKRmxoRGNwVWZWQWZjcEpDMmJWSlM3eGRyTXhHS2VhWHBiMHFmZkJzY3NiZDltVHZRMHNmeGExaGJlMkVmemROdWgxeGJtRndxV2VnSGxFSWJwU0pPS2JwbDR4cGR3aGxIZ2N3cUFCWGJDcEZYamNlbzFYZFBCRWg1Yk9qdHdRZUo0c1JFaTBsNDNlYzVhTHNkZm94OENBQVpTdmJoVnBUSWZhcmNDem1QVEN4ZXliVkd4ZXhQQlZ0VzU2eWpiTmpXMTNid0hFRnVlSHFDRWJxYzY0cGN2TjBVRUttM0x3ZEdSQU1yZW5Ca1Z4TE9QZzVjZ1dUeEplQVVDR3ZjdGZRdndlZEhEandmbjN6ckhkcEJxTVdiS0JubGtlYk1vRUJmbGphZWljd3AxZWpjSHF1RGJkVjB4VHBiSXdTVEVla0dGRzhiSGVTVVllUm1EM1FiaE9wUHFjdW5OTm5ma0tmdlZTdTBnZGNlSDM2ZEVHTjJwYmd5NWxHVUFpRXBlT210dzRkbEI5SVVjYzlVZlhlT1Y4Tk5jUzk0bTBjT050V2pVYmU1aHplbUtlY0h0YjFRZWo0OUxHZGh1dURlZHY4ckJkZGswSHFnY2NybE5YZXVHd0VLZk9oTlZXYkhNTVVNZXBUUExxZGtRaXNsY0pCS1BrSHFSRmJlU2xEUjZjVVVGVXdjdWowdFRlcEJLR2tlTUVXMGJkektURlhlVDlvRnNkTEFTRzFja2FpdmRlUVU0RnFoSFV1Z2REY1llbmJrOVNvV2JyUjFzY2NyQ2Z0S2VmOGYxcmNpbzgyc2ZxTXlmdVlvYXJVZGtXUUZ0ZkV0aDFUYm05Qkw4Y3d1eldEYlhoQXJQVGRXajFjYlVkT3hmczFjN0JmYjNKSFdiclF5SGJiZkRGdFRiRFJCSHVhYmtKY3BRd1laYlcwVHFHY2YzSzYyZWZycDEyU0pMMmJjSWViTjFib25SZ3Jkc3I0MkhjSDhEQ1RIN09lMWNVb21OTWJaUU5GemR5R3RreGVKVWw3eWZwSnZzUGRZak5oQmZvQWpFRWRaNmdSZWRqNTFhSmVLTzFscWpKdGloZUQ4b1ZLYkMzMUh4YnVlWWZ1ZXNmQW11ZmRMZmxFSDZsbHNlR0xXbGZjUGtaeWZmVUhsTkJlQXpxS2RlN3RmcmZqM3RDdmVLcDZaYmJWbGRncWZiRXZiQ2RHSWF3Z2RMc0RWRWZtc1BhNlNua09iY2dtbE1xUmJNWGFmQzc0aFdiQ3NDVlVjbTZ1emxFRUt3ZGNONGZ5U2VtZ1ZFa2ZsekV6cWJVMmc2MEp0VEN5ZGU3N1BSYmFGNVl4bUNOSWtkeWJMZm5maEUxN21pb3QyRWNwZXBiMWRVbkJsa09hWUF6bFUzdXljU3lXUFdiT2t6bG1kUjAxOFJleTZiR29jVEZDc1VlVXRlTVBiYUlja3VmRWJLTm1hRXZZZWNSUTVJSGJIb3RoSnRKdkozYlBmbDZSZFI1aGhIZHg2ZEtoWmJDQXhjQUtOaUJrVnBvd2VYZUFaZmZCQXBvZ2Z2UVBKQmJtdHBCb2ZSUTNLN2VDOFVYSWNaekdTd2ZIODZ0T2JMcmR6S2JSTlNqRGRHVzZwY1A3bHJlZHk1UGFiY0VuNVhQY3Q4S2lyYmZHdk9ZZGhuVklBUFQxMUliWmtnTFhlQ2VKNklkemwzS0ticUZCeDhicGdqMWRlQmZYVm9iamlWaldiaXpwNm5lczN4MVpjbExaR2JyN3JwQWROaEpnNmJpQXgwUmNZZ2NocGVyMHpFTmRuTm9vNWRIdXpqRHJONHpHZmk4ZDVUZFNhNFBnZWFrWXhZZGRNcE5OZXJTV3hGY3Foc0xrZWkwTzhXY015ZE5VY25Zb1VoYkJpdjlDZWY3ZVpLZUZKbW1yZVdlSzVvZUljeDIxZGZicTRkZU1ia1Y2ZFBMazR5YkFwbW02ZVdHaGhmY1B6ZnNQZUtxWWtucTlHcmNiYWM1cktkcTJCRWxibks0N0xlc2hGTDBiUTlQQWllUGxXU1RNTDFzcmN1M2VJaXlLbUd3ZERlekVRZXppR0J1Zm5qY0ZFeVh5VnZlS3BiUEh2M2kwWm9KejI4ZVRRSFpTY0xDVFBqZUxzMjNJYldJdURjYnAwZE96Y0ZyOVgwZWpYSnJWZEx1dVJUZVUwcUo2YTVac3JENGRleVJ2dm9NZXJQTzh1Ym82enQwY2MxUVp4ZEdQSFlKZHNlQklCZVZYVG9yZVdhTmYwZUVTd2EzY3VEdERLYmlidmY1YmxxYjNKY09qalBEZFlOSktMWndvbEZkQm85cGlmQ1ptQWJkZXBFbTVjV1hzcXViS2p6SW9CQVZpU2VVTXU1MmJDR0NjQ2dITHdBZHlmWmNQZGxZeDFzb3ZJQlZYSFhrcWJ4V0FJRGNVMEJhc2VOQ09zQmNERUZmaWJrNWFtcWZyN2VldEE3Qjg0Y3phbUpEZlRMZHFUeTlMcUZld1lMZmtjYVZpYmhlazdiQ1hkRFFnS2JDQ2h6TmtCdlhiZnJMZDU5YklNakwzbGlpdmRlSjFaN2RlSk5kdDljdEs2M0VEdjRyMGV6UEpWaGNzVHRVQ1NXeWJDY08xaFg1Yk15dkl3YlBRNXNmeFhGUkZldEZPYTliV0FhNVVjSHdtWlpibEtvN0RmeVpmTnVKQUhCbWVzRTNxV2JwN2FReGREY0k5TkNIUzdMYmdTeFFqUUJMdGJmb1pINmtjeGJJYk1lUkFCQkxlUUR3MGZjbXpQZ0NkQ0hKM2tmTDZ5UlZjdFZOc05iYWV3VmRiYUZFMFRkSTMwaFlDMHpEaGRzYjhrOEFuWHhoZlBoaGFYY2EyaXdoZmwwcDBWZXRLSEZ4Zm9jMVgwY3Z5aE9TYnJkaHZ1SUdYemFkZTVjZjJiZHFRaHdiWFVPSG5oZDFyV3BWZ0NrZXQ4VllDZnQ5S045ZEJEcnlLZmhPNEViYkxNSW9SY01pMkxMbjV4VGdicmxnemlkd3hnekdjU0NyVTdkUEg3Z1NhTDU1RGRNM3VwdGVseWNBb2NIVHI2c2VFNjh4WGJzTUJKOWJpRFVROGVzZm13RmV1a1Bya2ZFcFFCdWZhNWh3eGV5NnlXeGZHd05IR2VKeGd6b2JYWDBHeGVUMUZoMWJLY1ZZSWNsV1haM2NWOWhEb2VRbHlDcGVwREVsbWJvTXRqaWRiZjFkclpiZXRJSmpXbHJlYnJDYWVjQmJlT2lkbE90NzdjRGlhdlBidFJmMTBjZEt5Q3lmc3hZS0djSVduUnliZFdSeHNjREgyaU1jRW1lU1BlaVI1cE5iSXhoaXlmdVhmODJkcGZBbXdBRFJhN2V6eDBkeWRZSjVuUHJKSUpzZG8xMUpXbXVRNE1lelVpNFVlZmN1NEpkbzNWNFZkeEhUYmJlRDg5a2RldTd2QkZjQ0VXajdiRlM4c2ljeEo0UHBmenkxVWplaUNKTzVkWmFkOGNlV1NSS2pUVDg0SWRWbTlLWmRXTjV3RWZvUFVnSkZ6aW41Y2k1blE1Y0JoWVJKZlplNEVzZVg1ZXI4ZE5mNUZNSmphb3JlQ2t3UEdkS3EzaVBsWTY4Y2VyRUF2cmNGanZRc2J1RHc0TmJmUHdKYWRkT3c1UGRWOHFISmViRHAzUmRhZmFIRmZWWEhaSmJaWDVpdWN3MlllUGJIUHdxTGNybVQ3UGVLMU5XQ0ZxZDhCZVdQWDNXZHdmNHFzYVQzWHZieHlMdHl3a2FmT3V4ZTFhZUo0VEw0ZGk2QzE1eGRGUThkZThSb2RjWUdDV0xkRENNaHJjVW5rcWVmU2JwTWtiSllmWTNiTFcyd05iRlNMa0pkaU9neFpiaUkxSHBCNWFVc2ZRbDBZRmRnaVh4SGRsTjAyMGJBQVVURGRldjk2RGRLa293Y2VYQ1YxZ2JXTnB2d2JxOFlTcWVwTzBUUmNCQ1lOOEhpWjNJZnE4bnVpZHFtMXpTZGpOMzV3ZUthVjNTZU1FQzJyZFJoQXB6YkllM243ZU9iTnUxY3NwYkF0UU5wamRid2tobktlRUtwb1piRTBRaDVhSDNvSmVKSmg1VkNTeFhjY05XbzR1ZWI4NFJpQzZSNFJiY28wMzlldkd5dzJjQTZ5TldkUGpHRTBjekVraHJOWnhkNmR0R2w1RWZ4RmF2Y1lrazdUZEo1dkp0ZExXZ0RjZWVjTXVJZG9VOHp1Y2FrcE1QY2JueFlvZnJ5cFd4ZGFWM0daY2pVSjZFY2l3M0NJZGxtdHVIY0p3Q0ZHZHdwRTB5Ym9yUWVxYnR1U1p3ZWNUTVhZUTVkUmhkTTVDbTRieHVwMmtRSE1BYWZFRFBYWmJwV09iUWVHdmNVcGVsV0RSbmRQYVMyVUp4eG92Y0VHcVRJYnljaGttZUpCZENPZG01Z2JnZFVYZkNOZEVVMWR3ZVg4bFRLZXd4MkQyZFJVMUthY3gxRzZvZW5WcWcwZE03U1lQYTRCM0JiSFpOQXpld3NpQzZlY25ldVhkZzlYQjhiSjdSUTJib0lwUXFiY0FvWHZlaGdWN3ljeFJ6akVmb2pqS1FiTEpuNDhlellYdEVibTNVZXRkQjJxTDBkT1JGb1FlZG1uelFjTDBKMENkdVZDNHpkR21RdldkZFpzN1VjcTg3QjBjelZRbWJPSEI4cWRzVVlNdmRmSENoYmRiNG10U2VoQkNIN2NHbzRZd25WUGxOZGpMcVdJY0NJVDlUZVI1QnBQSEpocU1lUkhucnBieWlMNUFiY1BQSDVlU2ZjNUNrMFNSaWVXNHlkR2VRclBSU2JXdDJyV2J4QWIwVGNqczhPYmJzcm5YM0VPakdDZU9jTkdrZnB2ZzlTY3A1clA2alJMYllxRlVXb0cyem9lYlV1Mm9pZHRva29uYkRSNHliYmtmMXVjR3Y0VlhYNGxZR2JxcGtHcWZFSUVQa05zN2xwZE5FZkdJYno5QUxiZkNkMjIzTzNuMHpmV3JoN3ZjQUQ0MDdjSGJjT09ieHVscEZjRkl6TXBOeVdoQWNtR0N0b2JSbUNCZmZNVDBaQmRiSjlMMGNoU0hYemJjQjI1MmJlc0RoUWN4YWZoSmVnOTg2bklqdGVKZHNpSWloZEh4aWpuYmd2c3h4ZXBYUEZLZEo5MFVoZkdEVktXZG5EeUk3ZWJUbUN2ZEZJNEM4ZGJLZjl4ZVM5N3MxY1VlZk9tYko0a2V2YlJ4QWdOYnFZOFBGZXRyWkwwYmRoamlwZWFobks5Y0lGcXh4Y1NsMHB4ZFh5NTB6ZkhNRkRiYnBieE5wYnJGTkh5Y0ViTzlzY2doNGZXY2NvSjhlY0U2Ym5udnY1dmR6Z3dzc2RHMGNOcmRNRXhoaklxanZtZlN6UVEzZU1DbEVpYmROaG9mYnZvM1hNRlV4OUZjazJReGNiSUJBRENjazhERmtTaHBGNmVSWXF1UmJ5c0tJRWZOMHB2R2NYWTUxcGVBUk4wQmE3RnV0bVg2Mm9mSUU4VmVkdzlEemZicG1wOVRiYnI1ZjNkSDlXNVNTUnRJZGNaRHU3M0RBZWZKVjl3T3lkazJZWUNtdGNMRXZuNFlhY05ocmFGYmpuM3BEZHF0UGdBY1VtUXlCZVhUZjRkZGJBaVJHY1Y0MzlvaVhiM2hlSmFUdkNmQUE0SlRjaG8yUEdkeVNVQWRkUHFTNTNlSXV1cmxmREJzV0JjVWp2MTZjekhDS3BjdklHNWhkYnhIekhiakJ0VW1kWFoyNlJicVNmNmpjdHYySnliTk5nc2pjU1hJcnRjS0lkb2JjYW01WHZjdlRZQUhjSWtMSkFiUTE1amVmU0gzMFdKUW9aVHVSRWNmR1NuVmJocG91T2ROUWc0UmVLa1BlRFhzZnRqY29RdEJyYnVBeG5WaWVlMmtjcDFiaE5kdUZnTUNjV01BWUxjWEFsbU5jRW95NjdRSk9JY2ZLUlpIQmRsYzFURmZGcWtwY2JpalpraWZnTllzVGNGbzdsdWJlTTFDN2R1OGZTQmZFRjhwZUpOY0pFZnhXN1huY3RmQ2pZYlZZeXhmaTBrTlNjSFVFQmJjaGpvcW9lSmtzZkRmRUFCU1pNWFp0OWRoVm1EQWN5VHhzNGVuQlpuWmVDdkVyamJFaUxWT2NydzVqR2ROMEYyOWRXNTBOVmRVRHJZMWNlcHM0NmR3Y2l5VWVybEhLRmNlTVZYM2NuS1BMcGNya2lSa2RaU0g2dGNmdmpjUGJMR29FSGRRQXZ5TGVVUzFFVXczYlpDYnBObmdOWTRsVDhkWlBHYUliZVNGQzVjVmhBN2JkbGtFTkJidkFtUUZmcWVTTFdHMEtoVGJ5c2NSd2RMSWFvWnBQeGRBZGFBSkU5Y3JmcjJwZldIVzZFZk5zaUNSYlYySFRUZXhDc2luZVJvbFRZQmtpSHRkaGxxR1hYbFBQa2NGV3oxaWNVSDdqN2JXZm1kdWVsSkI5U2VnM01KbGJLNlpFYmZSdXNVdmRlSktjaGNBVGcxYmVzRnFMemNoVnFmQnpnSnBkY0JnUzZtYkZpUUNOZmlkajVkUjhndDFtSUJ5dWd0VlNpSXkxN21kZWtVT1lkeXZCSVhjSlR6eE5jS1F6V2lkVEFqdnlaTUtrTmh3WUk0Y2JJc2t2ZERRRXVlZFpCcm9iRmV2aGNmVnZZZnFkWjJxTDZieXNOaU1jd0F1TlZiQ3BJQmpkZGJyMk1jdm95WWxVVm1qRWRFZXNSc2JrclJZdGZzb0FSWGJtVEZDUWV6OTdZR2ZvdWc5dGV5V0NPNGNHRWRGd2NBZmVhUFRrckFqZm5WRzQ2Ym1NSmxGYmVCWjVOZE1rZjVMZWF1ZHZkZWg0cXpTb244ZVNjS3R6U1FlVk42akljZGRReXVmdldmWjhjVGtwUmZjU28xTGFlT2dhZ0JlY05UZTBpSzJzYngxaE81YnJLV3VwZHJNRk8wZVNMdHFPS2gxeFllc29WcHRmZEFwRmplcnNwNWpjdG9zS3ZkWkNxUDNITEh6dmVab2RmRGZWT2NnRGVZcXVoVGJZZUthcUxNSFlUaktlOWJiaHNMc1ljVmwxMThPZG8zT2RtSFUwVGRLOXk3SmNvaUJocmVPdU1rUmRWMmhTOGVBWU1mMWNHZTBEaWJ1dVFrWXUyVjN1ZGQ3TlR5b2FaWVduMGZoYmNtT0dXWmRXREd5RmVqY1ZPeGRWUTdZdWZvcVNsQWJBMENzMWRNcUdkVWRsYmZreWZEdFVaamNMbmQzbmRSS2ZHNWNEVUxxQmE3MHE3YlNadE52Y1hBZ3c3YkRweDZxY05wOFFrZFRVd01yY3JGR1dWZERjRE9NY2dTWkxKYmJjUFhTY3FiU3RBZGdUOHFuZGNGVFdhZVFFM2h2ZFBnVFlCZmRjSHQzYkZHYmZMZVkzYzVzZFVmeUpqY1ZoeGVSYnFJRkFGZUVNZVZJYmFWWnEzZXRHOTd1Y2FoSW4xY2xIcFF0ZE9aamJRRTJ6bElmZXVPWFlmU0dqQWJmaVpSOGJMcDAyb0ZTeG1VZXV4Y0VlYndPN3JkYnF6eHpPYkxSNjR4SXNkV1ZjQzRLT21ja0tjSTdjekw3Mnhmdjc0VmFkRHBjUjNkc0hJa2VjSGhZVGZiWjVUcjZjRVpxb1pjYWNpN3lZekFab2VoYmJYSWZGNjJzR2hqUm82ZUVoVjIyV2VIZzRZMlh1VEVubGNOZEpaRGdxZWJNMlc1ZWNYWDJXYk8xUnEzQmp3TWNlT1hUcUZiZHQ0ZzJiQXRIb25jVHRjT3RlTHNmR1NkcTJKdHVmS3ZvVzhmVGZHT1NNREw0Y29TVU55ZHh2a2pkUXF0M0dmT25sWERiZExsajJzcDR1Y2ZRVzVEZEFxaHI2Y2dXWFZnYktEbjR1Y0NLMHFRZVZqd0lXR1Jya2ZGeWNDZ2NIR3ZUUmVsd0dNb2NmV01jMW1ocUtZZFVxckplbGJoeWtmZEhPVGJ1TldWNmNBbGYwdGZqeXJZbmlqYkVmY3FRcUNzYkgwb0NUcmpnYzBiY1ZLdXZiVG1NbUJiTzd6OEZPNmhmWnZGRWFBZnBMU0J1eDF4S2pkcEZLcVpkazJVYnhjZ1RTa2hleXl5dWpmT2dRd3hkS3BOYUliSlF5TjhjczhWU0NjeXNRUWVxeDBJZWNvMlR3U2J0SU9XRXlNSmVBek5KTVhkT1RDeUdmdHNmdUJkUm1LUktjSTUzaUJKd1JueGR5NWZYQmNvNEtWcGZSc0U0MUpseGRlZE5JZmdpZlFJUnhibGtNRDNlYUtJczdjYlFKY0tlUjR4SzBHRjBma0lnUzJGUE5Nc2plU3dKdmpiRzVjQTNiRHU2RmhiZ3ZQQXFma2t1amRjYnF0SXRjUDZaaHJiZURyWnBjY0xWZ1NlZ1lWV0xicWVmeGdyeHVZcWRQajZVU2ZpVFhIZGcyMG14SWUxN2ZjRThVb0tkaGszQkplYkRndkdiVENsYXFleTRCbHRlSW9iVFRSdDVCdWRPSFJRYWJRNngxU2VGaXZvSmV3aDI4TGRIQkU4WGJQbzkyaGJkd0ZkQmRlcTB3cGR3a2lFSFQzTzFyZVBJZHJCZlEweXZkYk9YRkhFZEZGbmd3Y3E5b2RWbTRuQ1RHZlFWclJvNDhnYmhoRmpyZW9IVlFITWNhTlpkR0VXRzNjUlhqMXdmRXlIcXhiSGlVaVdiUExXa0dleVRIMHpiZ0JReldlZ1hZYndTSkdsYWV5c1FEYmV2WnN2VVVuWlNlY1dFOHJ4ZGVkOGZuZmhGM2JnZmFhYUFkZUZlUzg0cXViR21ISDBjR0xHSjRDakJlU2tUbTRBYlRGdGV1YmRIWngzZURVRjZBY1NCVkR1TmZ1andwdnl3bWRDNm0yU1RINWtqZEpzTXpYZFREUFMwY1lDS0tGUHBmTzNidG5VUGNiSjloVHZid1owbGNlclJOaXlkUHJUWTNiZ2RpZmxjU1g5WGVzb25pY0lJZjVqYktHZHpJY0lTSTNmczVndElmazJmdWljVzJkMVplVlprWkFmRkNKdlpkcFlza2FkeTNJNURjRk1xQVdUTHd6V2VuUlVoOWJzcGNoSFlTQ29mRnU3WWxkbGxpc2xvY3BtYjRaVWJYRDdvT2NUOGpBdWVRTk4yNmJEYmpTYmI5bzN4Y2t5bkt3S2FMZVpvaWtEZU96YnNTZVc5UVNRZUdvMlVoZFA0TU9JZng1T2hkZFcwYXg4Y0VTclBRY1d0ZHlBZVBzUEFmZEJra1cxYnBjZWoyZUE0VXJlZmZ6MXZnZXlNRzVjZlh2VHBGTjJRc3NmUnFPcFFkWGZkbUVmVW9xTFFFOFJudmZMakNYaW9JM0wxZFo5RkxMY2JtNWROQWNkNWVlQnFZb0RkdVFqbHZkVVNnRjhkRDZ0aGhjUTNFSTVjTUNFVVNleE8zY3diWDNqWjhiQzliNkRjQm5pbWJkTWFFVWhkZUhQTTd6b3Q5OFl4NFY4ZGowaGFhY1lQeFFhZFZOeVl6Yk92MGtuZXI1eXVhZnNkSDN2WE8ybE5lTVBKSmxjd1pvZWhmeGRhSUdkQWRDaXdkbVFKbkRib1AzWnFlRmFtbDlkV2hZcmJmTVB2cXhiaG9zUnlTZ3k1TGNVcEpjWmRSNk83RmZwRVdUN2VaOVRmSGRoSk5adWJoaTlzRmJZT3dXamZiYzk5OWVtdWZWYWRpU0NzOWJRQ015ZXZGWjh5ZHhKc2ZtZG5YVDRmUjREWDRkVWJYQmh6aVJ6TGNQam9mOWV5RWZmSmVOR25xWGVnamlCYlFtcDRMQ3lMRnlmU3VxaWdibmI5SFJiU2paVGFlSW10a3dicHJzd3NmbDhYdmlldVh3ek1lcXdpZjhYOUkxcWJLck5MbWtIVDZtY3F4ZGNGZmNoTXE5Y3VieTNiZlFwWjNyY2VLVXRUY2JPMFVoY01rcXBUdXFQY2JFaEFxU2RWdGx1UmRzZjlEaWZaTEpscWZBYW1oemZsNUtCYlZoTmtwZkxmd2dTakhWNW5lUFpCY0tlSXBoYXFieW5URElNMEFWMWNOZXJ6SlpGNnphZElVakx3a3FJbU9iZVhjVElla3hjMmRVUkk1SWNqdXYyTWVkOEtuN2RSZkVscmViWWw4c2V5MzBkRGJ0Y2I4VmFpNjRjZkg5ekFrY0RYRmlwZkVTSE9kQzJ2Y1hpVm14aWNXZ05vWVNNd1hBYlluUWUwSExEaDVjUDRvMmZkbGt5VkVlYWpsU3JkVnhTaENlWnlVSzJkQk9LdjZPNW44RmFWVml1ZUxJNG9MZG1VMW1rYkg1S3ZmZHVVaFRoQlVmYVdiU0p2MVNmVXNGU2R4N2RhWWNkQ1BaMUg4QWwzZVE5RXRZZUJKYVhIY1A0UDJZZE5FMVBqYkVocTBiZVU2cktsalB2TTRkSzhrM3ZkTEYyNUlUWFVkdmVTTVAzR2VTa3JzaWJ4eEI0Y2NXSGx0UWJHNnNnU3lobndLZEx5Q1JiUzdVd3Jjd0hQUk5OZUVWMWNrWVNobmNaRlkxNWRpWTMzcGJLVWZtcmZ1OGkxSkszbTJ3TEhudkVjUHBnT3ZmbWxRRmVmTFE0S2JORUdGZmJNUm54TWl3eFA3Ykt2Ull6ZnNVNFhyZWtuV1NQYnhWQVBCZUFDRWZxVHBXS2RjZEk1SWlObHkwa2R2eW1CTmJHT1c2RWJLYlZWOWRwVGd0MmRuSWFHa1BxRlhZYlRCcnZNb1VCaXdmUWxuNG1vaWJxbWJQVkNJVmRXRGNxQWVSRFp6M2VGRlAzdWVONmNHM2JRSjdIWmNXQ3JzRGZVV2JQZ2NtTTFqQmRscE1DNXc0ejJsVTk4clFjTDN4NmtmS0lwaEhEVHJ6T2JIV010cmN6SW5kZ2ZWUlJXZ2NHYUxqcWJEMzhjMGRHdHAwdmZxMU8wcGR0ZEppWGNwS1lxQ2NIcHEyd2NqdjhWdkhFOFR0Z21JZzVJTlQ4a2VCV2FyMWRxcHZwYlpvanJxZndQeFdjalE4OXpmd0ZqZ3VjZFI2MUplUmZCN1FiTUozQThzVkpRbmVBYzZuSWR6ajVTYmN6MDlnYmRxRDVOd2RENm5nQ2NBdE5qWGJQWDBjUFkxb0FXZVBkcFVwY1lhS0NJZHkwbDdtY056UGE4ZU9OWUpzZHBiWWpzZFRxRVFWYlR6ZDRZY2pNRDIzY3hmdElrblRFckdjaUdQdExiRmxqWjVOaUM5MUExSUd3Y3N1MG5oZnFxanJlY3JKWGcxZEsxcjdJYlBUd0FzQkg2NmxmZ1daNFFjdERKR0djd2lkTXFlcmZ1YkZyYTN1aGJPSWJuaGZkeWR4eWZpTXFGY2RYNktvUmNhc1dmUmRlckdlU2VNNHcwMmN4UFJwUmJZSWVzNGRaWTY3T256ck8wbHZ3OUpkZ3N4dmFid2lzYUNicms4MHdPcGdkYWVXVTNuV2VVbjdEd2VkT3k5M2RJZGxYemRnMFN1aGJBUTc1RHlHS2ZGYnJ6TEluY0tCY1J4YlBPUzRDU3p6TkNkSGI2YWFkdDVyUm9ibEhqeG9jVFdSVDNidjRjTlVuSkpPYWJudTJyWG41Z0puYnpnYjVuY2FuaGxPYkFyNUpIY3RKck5NYm16dVVZY3V2RTRGY0NWcVlVYnd3c3dLZWlrRXR3ZHJNYTdzZVJraEVhZER4ajBDeTZZdGlibDlCMldldThlNUFiVEJXakljUTRHSlBjWXl1MzdkUG5aaEtld1BaYzBlVnhFM2RmUkEwMElmUkVrNFJjcFpZbzVYR1Z4MGJ3RU1SYmJBbWZIcWRmNGVpdExNS2dhZkw4UVZsZHNhSXJCa3JtYkdmRTR3a0lmbllnRGt2WkZ2amVTdVpFdmZ1R1JuamR5dXFhZGVCcjFMTkQ2ak13YkxVMkE3aHFEMXhlQU0yb0plbGFIZEFjSEptT21ja2V6SEljTkFpWEZic3BDNG1lbVFGWDlQYkdsWmNDcVhBS2Z0c1dQRlkxYmdmYmx1eUdLZU1QcFdaZHZKZDJhYmZYd29rZlhmcDVnZHduSnpJYnRKblFoZWtJRFhKdjE0SUhTQkJKdGVOU3g1amJFMXl5QmZRYUpwYTBnSWJWQ1E4NGVPVFJkbmNCS1ZOWmVnd0piRWJxVjFacWJlajJSWlZBYlRIY3Qyb0JyZEZJcUlJZllGN3ZHZnhvemo5Y1AyWDB1YkdVeFYyY2RRbU9GYmhoUHJYZGVXMzhoTERWN2xObzRoVGRjM3FweWRxd3lPVmVCOUxJTWRMN1I0QkVldm5sd0tKRmJjekZNNmJiUUx3T3NLeFg1SmVLUlg2WXNKVHVlTU4wRlViYjJHYzFiU1Vjd0lid3NvN1lkaExYQlZ0S2RvWWVwSDFLd2NvMmlXYWZhbkhObmJmUTdidWRsNTFNaWV3Um5NdWJSZmNxRWZHbjBRa2VNa0lzdmJ2bkRSNE00TG9DZkE3RlBnY21DY214ZW8xbmFGdkdwRk1DSjlzS0QzNzAxYnV4Mld4TU5pUU5jdEg3NWhjajd5RWxkU3BGTVhkcmQ3Tmdid3JUSGpldkJ5c25lS2RIUkVDWVhNb2NnY2xyb2JMZ3hWcWRmeDB4N2VyNGx3bGZjRm4zQ2RTSm9Kd2VpcGlkcmVYSTZwaWVKTkFXZGVqSm5BVmR4QkdOemZ6OE1RWGJyMnp3QWNJV0k1emZCUGlFVGJRak9WRUVYTjM0Vk9WSUJlVU12aXdjV2VlNEhlaTZtTXFiQTlhdDZjV3A0eHV3SWx5Y0tXOU55dEwzdG1ZY3ZVRWVxbDhNbGVVbmtValN2S25mZEJuUUdjSmdvODliY01FNlhYcmFzUWJleERUOGRXWmRBRmNDaGtMcGZYRnZtT0NwdnR2Yk9HZlpjZmM2MVFmYmxnNkV2YmZCRldLYkZsNFdYS0lDVFNjVGFxUzNjdmEyTmRjSEZURVViVEtCWW9lUDdCY0ljUTlzVHdka1hibW5lR3ZXQ1pFVlNpbGVEbldZWWJwMVFZUWRVZmY3a2J5QVRHM2R5T2VBc2VGSXRPNWVtYm9JUWpXSG5PZHFJQWpBYnlmNldwZk40UEFZYldHQjl4ZE9NVXJ3Y3llemdJY20weFpEYkd6OTFiY1N6UjI5YnFFTUJ6QkFjVkhiUGZrU2t6Q2J2R2VaeXU2eGZqaHZiaWJiaFZEaGJzVnNHMlBWODlJZmFPOGtPZElQUGNBZUtIMzJTZE1mM3pFYlF6RzRvZGl6N0xpZG1OVEp2Y2xkREhFYkVCcUZzYzg3OVZlcXpIYzFlRDlpd2ZGRWtLRGV4M3J5YlpabHpLZHJoWXcxYkJld1hEcUNndDRjZmFnaXZvaW1iZGVyeHJOaDN4dUl1WUg4TnpjMldFZGNqVGlqZXI1UkxzYVNmbldjWHJlZmxkcnZiaFljcW9kTEFlY3MydUZlVHpTeGVmTTVPdWZmVnVoUGxmUDRZbjJaUENlZGVWaTBxMGNybW9RTGVlczc1Q2NiN3dyNGRub1JSOGNIamlITEhPSmJ5Y09acUd0ZUtPeGNLYkZPdlRjajIwM0FNc2xucmJqb1VpTmJhcElxeWVLcW5ITWJ3b2NZQVpaZEV6ZHFHVjJ1Y0hIaTA0Y2Vsb1VRZXVNQzVwY0ViUGoxZUlxOEY2ZEgyUjhWZEtXTXVqZUwzdlgyZFYyM1FsT1B3akVmeGZtWk1iSm5VZWJlRGE0aGtkc1J3SlplTkQwa21mVTlZYXBlZFoyNUtjaHlwWUl6T3VwU2NlMElzSlQweFh5Zk1sdmp4V2tsQjRlT2JSYkk3TVNZYmpBYkl6ZHdoU0hSZW9JcktCZkJUcE9waXBnZE5kRmdYSEplVFpGckhkSjcyQ2pkY0lkR0dmRnZYemtmUFVrVnZkbWlOcjJlT1pIOXpjQlZSblN1SmhiRmNhN2JPVFR3OEdpczVWZlpibk12dTlkWWhFbHFiUkZBblJoYjJEbGVwQVhYM2RZYmhqaFhVQWtMY1BpTnJFZGs0Unh6YktVREtYYm1GODlQZVBDRzJmeDFvblhiR01WUmNmdk5PbTllRzFkVjNlYkdxOE9pbXVyS2JJVFp0SGRPcmtGYmZxRFRybWRSY3U4QmNCcnlySm16b2llUHY5ZWJlblRRUWxkWUtyOWFleEhpYVVlS1ZKY2tjYXlNOUpmR3hFTlVPYXpJZFU2MEFCZGlYUXU0Y1ltYTd2ZHdqcnBCZG5QYVF1akg2aVllQjhiYXdiQUd2b2ljbWUxREtiRWJrU2hmRzlxSkZib1pyU01jWmNoSDBjekhZSEdiQjNzQVllRXFXTHVYUVdVU2JWNUxtSWV0WDNwWkRIVm5RR3FlV3VmQXRTYmhtU1l5YnRHTVpNY1RvbUtWYmVLVEE2ZWdyVDJNY1BBNFZ4ZXlNTWRhYmZNa05vY3ZIbFRkZXBHUjR3Y2ZJTjhkYm5YaXpQUTl5SGJPUHVLZWNZeUhmdGpFWjlrYmtVQ3gzZWM1Vk96ZU12OHNuYkVmSkdFZUtTcWZPZXVzbDZHY0VuNTJ5ZWV4ZDBkYkpQM0dIZGJodzRkY2JYYnRjZEhRRVNiY2g5eXZSYnhFVk1nY0FCMTV5ZVNFNmZwREJvQWJlZHZOVkpiUjMyYUhieXVXMFVlSWZvTkhjdDZrdVRlZDFCMUpjUnhLT0hjcWtSVGtjaWd6SkxkRGhTMHpmSDBOaU5UT3dLa2VDdmtNZ2VCWmd4Q2R0Y3RySmJVQ2xXQWRnY29ST2R4Tmo3Z2JpWlR0VmdWUnd0ZWl0R0xKZVpOWWQ2ZWJhWjZiZkNhaVJIYkI3aGdmY2ZuM3NUZGt2REJjQlVJVjdldklzSjZiUFJubVFlVWZuRXFjRmIzMUVkV2NEMHhFS0lydWVFUXlKV2RMWVhqYmR6Wm5pcnN5TG83ZVMwOGRFZm55aWtlZkJSWVFZbllCelVGbm1EemNUaVBHeGVZRGVIVWJ2TGlMOWV5TG9wbWV5RFdQZ2N2cERpeWNZd1NqdWVNUE9IUGRMNkJTT2VEUXYzOWRDbzdtVmRDT2xRRVZpQm5HZG1aeVFBeU5UWWpieG52Y2hRbWFmZFppalBleVBNR2JkR0I5TDhkRDBkNFJiNFZud2ZjdXpkZGRNZlFHWFRSZ1Q1ZGR0ZFNiY2dCNHA1ZFFSTGRtZUIxeTNVZWJncWhLYlV3OThhY2ZoQVhOdWVwYUJic2tkRWNjVjZBeGpkZE93NXlPejBvRmNsb1VFSmVRR2x4M2NDbWFrYWRNcjRZSmNHQWE1Q2JPUTQ2d2VaN044cGNRS0JmTlBkd21lY2htYmVQYVFtc2NNY3RQc2VBM3ZiQ2ZsRFNhZmJxeVA3emVFbzg5NWJSekhYbURnclRkYk9RanV2Ym8zdXZXYmVDYnFnZGRhRXdpY1gyaVFPY0hGZWNnZkZaU2pPaGRsa1FjR0FLQnNjWGZXOUxlaFFJSDVkeXl4aUdjdmlBdm9jcXc2VUxiaG14a1ZISzZUbWJZODVTM2RKbGYybGNUbW00ZmZXVEhlYmJ0ZEN0Y0NXYlZ2Z2lwMldkQzNab1Rlc2V1M0llYUlRY1JlczNReE9ia2t6Q2lkWjd5YlJiVUJLSlp3TzBsdWZMR0RKR2J4a2N0SlhZNHl5YkNVd2pmZng1Q1N1UTFPdzdic2ZGVGxlZWREYnZjcWp6QWljZnB6bWFmb2xkTzJkWGtlOFhkT1NSNmdmSVdLZjJkV3F1SkNmcXQ2SHVjd1lRTGVlUG5qc2JjTW9BSXdleWlUS3NjZzFHeEpleHlwRkVjUU5rc1JkTzJLeGtjVThDaEtjZmVFSUhZdEhWUmRWcllZOXRwekhTY29rSXg4WldFVUFhZlI0Q2ZLUkRVVWJ1dVJFSmNxc0owcmREM2I3UGRBZmpYZmNKWXFKQWVyRllIUWNEQWZZdHRaQW9iZG9GemJSbDVDSlplWEtGelVja3JjY09lV091ZWRmSmZpUDNiRnVMVEhiUEJ4d3NmRnQ0M25kUFY2NTNjQnFzbDFkTFYxeHpkZTg1THJjWVNRUzBlcXJKeWJmS2FOUXpjQnh0a3JkSUJ5SkhlbW5FWnF3bDZLTWN6bUNmZ2Z6WGJrV2NndnlOZWNHb2lHNGNNQzlQd2NyNkY4WGR2U2VLSWZFaDc4WGRySUs0YmJZV1FHSWNvRm5CUGRldnBERGNXNUloc1lPQm9rZk9tZFEzQWVlcE9iaGM5czVjQ2pya1VlelpXem1iSm80UGRiUWFuZUhiYmZFQmFjckJ0ZkxiYWFSYXViUnFiOElodFVRZER4cXh1ZHRmQWhoZnVma0ZHZU4yVXREYlQwTU95ZUVDSEluZm9keFVlT1BlTDdjVkF4ZzNjZU51THpjazJqaEZiVG1teFFiekhXd3lmcnpJN2hlSHRQeHJkR3g4akFiRXowc2RiTjAwWkdkZEdmeGhjYkJCZTVjS0NFRkNmenlUdWJlRFFQS2JmcWNiWWJmQm9lVXd4S0NyWmN2aHNmc2VjUjhsNmJXSW1SeGVPTktBb2NUb2pjVGJscTljaGRCWnZhNGNCeTJtdXpneVZXYk80d3M4Y3VsdHlIY0ozS25ZYkd4UFVyZE1PT3ljZWM4YU0yY012Q0JlZGVab1hpYnBQTjFkYm9mdDhHZWF0ZmRkTTE3cjdiUE9vQnJjUjlnRktmejZJejVnYkR1aWJBbE5YYkFlUnA3STNPRWJUV21WSGZUeUV5RW5rNFhBZEo3ZmZJb3J2aEViVkpJdGh1YkxRWUN2SjY3ZHRsck1GZUhzVHFITW5tM1RjUGZuVkxiVkxFUXBhN0RXQmVBRERQYWJFa09pWWJ2cHM1WWJOU041dmJVdzRHTmpobDNmVWZySThicFhVOG5mQ1FaSFBkc2E5TVZUejJNT2JJRkhrZWZoYlRId2Z4YjNnYWRpanVDbmRQVXJvZ2RKQ3ZEWmNpc2lJbGZPSnc1OGNPeGVreGVWdnpLM2VqSWduMmVTNzFSRGZyckhmeUVJUDQyZjlyVGxkVTU1cXdjakp2alpENlMwcmJjM2NadWVRUWZrV2J0blcxQmVNMHNZZmJvWlIxRWRIYzljdWJUbUwwTWNXc2NlaGV0Y1Q1V2RJZktSVWRuZEY2YWR3bGdKbmRlMno1b2R3dmdZc2VTYUIwa29GSkRhZks0SEVLY1RETnN2Y2Zpd3hwWXdwbjZjSkVJR2xZcFdzaWRGVW54emZJSXNSOWNvWHF3OGNOeUZLaGNYV2c3bGRhSnFEbmNTTHRkZnRWbE1mZHVINHNwYmVBZTNnY0tzREt4ZGVmVnBnZFYzQTVwYkxDc3FZZXd3WENDYkFLNnhDZXptTHM2ZVRWMG1OeGo4T0VSYVhhelppUHRoZlVQT1hyZkNpZ3hwYlJBTDR5ZHd3V1Z0Znc4S0pGZUhvMHd0ZHlySEFrRzNZRjdmU2Q5amRMa1hHdmRkUzRza2JDOUFHQWZaTlFrcndYS2dnY29CNkd2Ymg4VXd2Zlp2dXNiZHRzc2RMZVFhOFhDVUplQWpkYkVUN0ZmSm5idThlbGFpcjR6MkR1bVpydjRHY2h6bjhSY3hycjJkY1lOUlZqY2VPRXk1YlRyQkRSY2s3enNOZGd6bGdvY1dJVktFdWg1djlkNmM2SWJjajA3b2ZlSGZmdWRDMFJ2cWZCNUIxaWJkcmQwc2JXQ0h3NGNJOVFYRk5WNUI2ZHdzem1oYmNIelJxRldlZmJSbXdkc2ZvTmUyY3YySFNZUWlVOHVjdTI1ZEdjWk5FYWVibUVQNEFmWlpEUHZWaXloRmVVdHZ6OGVpYjlIa2J3aUdTQmRhckJTR2NtZVV2UGRUdXE2d2V3eG9yUWVVb0VRd2RMSTU0QmNPcm14dGNLZUpXV2N5N3ppS2ZITFdxa2NhNmdXZGZJbXJNV2VVcGdYMWNNYkgxbmRLRHZ0VWNFS0FSRXc3dHl6ZlM1cHB5ZmJUR2tTZFhUVVpXY1hUOENsZnc2b3c5ZUdCMFR2Y3lTUEpQZUQxZE5JYnZlcmhWY25EZkxBY0wzZTk0ZWRZaERuY25vM2llZGd0ZzBveVc4Y01jcGY4c29mV1lCNldjSGY2ZzJlTlQ3UXFjblpCUVlld1EzdzBlR0pXeDliZDJCZmVkRmlERE5iQkdER0RlbkVFUk9iZUpURkdjb3JOTXRkclVyUkhkd1hjRHpiek94dFRiRWZRc09jdGp3MDVjUkY1R05kRkRFOGZlSzZpQ3RjcUphZmNYM2tXT3lSYndGcUF5eDJCSWhBcnBKOGM5Y3VmRHB2ZUxxN1lIZW9YVWtnY1Y5NU1QYm03VW8xY3p1UmV0bGt3MUpkWFI2R3hkbU5sc3plQ3k3djVicFFYRUZjUm1IMTJlenVrcWllRllkMUxJQTFGdlJWWDJuZWRRbWdCYnBSNGlWYkdybTd4ZkVjM0paZFlwUHVQYk90NnE2dnlDemZjc0djYnVyVXhib2V2OTJ6UWJtazh4QmVEazRtTGNTRGh4ZmNoT2FEZXZ2dDI3YmRMcDRnQzE4MkNmTmdiV1llY09uWkNld1J2S1FkWm1FWGhab0F6V2RuRXR1OWVSd0ExWlUzcUhEZU10a0lTZXg0Wld0ZXhFVnB2ZU11MmR3UWFJUk1kT1ZBSkxkemxLSDZDeURSMWRPWjhOeGZJTU5zN2V2a0ZCT2RJeWp4bVduWDBNR0NRWExieUxuRjhlbnE5cnZmeDNsazdkbllFU0VkWWlFT3ZlY2R0MExVSllnTmNRems1UWVpa1lENWN5eVlVcVlwM1JlcVdaUEVjTmZoQkNidGhNSTZjdklzN3pmQWU5V25kWGxwa0lkS29BVTllYXlaWmFjU1pEUXFiQVBmMGdmS0pzdWtialR2YmRmc0t1RXNVN1dkVWV0TXFZeWNoaFBUbGZqZndnelNjSHRsZEN3T2hmY0FWaXBVZVhKclNpajJ6RzhjUmFzWDdhZUlBZkswYlNoZUV4RW1MZXM5ZzFtYmFlaTZGZmNsY2MyZFpRV2xTZHlnaXBmY0JVN0NKY3h4OG15ZlJVMnk4ZGFJRzRHY1l3WkVoZE4wNUhsZFRMcXN3ZkxVcHJRY3dEbU1CUTdYQmZaaHFoRWE3VXJLZk83ZjNuZmhIaFpTZWNWNDZxY3JXZGx2Y2FpVlhQY01VNVNoY1NSVFJEYmtNNXQ1Y3FraXdSY2N6aHNKYmdtdEJXYnh1RVhrY1lIaE1TY0V6TG9KYlZsdFpRZFVCOUVZZWlJbHpwYmRobkd2ZXJRUjR2ZHlzUklsZVZRT0QzY1dZZ0RyZWFXR1hQejNiRGJLSkdRVGRMUVBRSGRzR0JRanJ6bEpEZGlLQWJnVnh2MmZlU3pFTGFjTDRpQ2pmcnByRW5jajZTY0JiWHAxU2tsRFZHZWRmVDBhcWVaUjhNUWRJNUVMc1VzZWROZGpyRzY0ZVN2dHZLZnRsVjZpVXRiSFdrMEdmTVlLQ3JrUmF5WmRDOWJUQ2Z2YVdiTmVkWEFtM2R6eGNMbGVkckg0VWJRdUhRVWNrSEZ5ZGlPOEhOZUN6TGFjZnBwNUZLZnNIZ0JYY3pqS3NzZkJ3QTBaZXVRMzVsZlpFVE1nZk9UaVBLYkJMZFRhY2lKbFBHZW93SFpZZEEyUldYYm9jZzhaYlgxcmhIZU9qeU16Ym1WOUZpYllmNXlnY3JJMnFiZGF5dEZMZEU3aGRsYkZ1Njh6ZGZjRzNjY0N2Q3ZnZXlEbkU0Y0EzVzF3YnA4VnhWZXR3SmpvY3F5OTZ5Zk1oajVvYnVYNzRDZUMxaEFGY1B4NHpHY25mbDRrZFNnN05UdTgxam9wZU9Ec0UxWVVka1N5dVJiQ3hGRG1pcDdIU2JyTURtOGJSMnZxWGxaOGt0WmV3bEJlbnBxOTBRcm83eGRrVzdCRVhmZUJvZkFlOEpiS2tGa0FmZDM2Y1lldjhyUURjQTE4RjZlSE9FRGdjV05MVDFjSFpEbndkSVI0bTViY0FxR0dlc2xkekRlWWwzV2RiY0hzZWdkQ2Z2d0Fla3NGSjhkbXVST01jUWNxWmxjRkFoVVNFYUdBS2VLNGVjZWZqT0hlbFBqc3U0Y3ZtaXZPYmZhVmxJZG52S3FhZHd5S3p3Y0RZWjFNY1lLekc1ZE5lVFprZEZqMzBjZVlrOTlwM3V2amRWUnlLYWZMN1JLN3h4OEVzZXlqTXNMZWtpbXZtelZMU0lSdDZaN2JtbnhKWnZYQ3FyZmRNVzlMY3JXN0E1ZU9nNHNJZWdyMnRKYm5oYk8yUG95akhmRGxTd1JlYVYyN1dkUnY4cGdia2JrOGFjRnNOYk5lYjJIeGFidktsaFRkbUFUYW5qSFBrU2NyTE10c2RVV1BUbmNzYjRWV0lYdTZBZnJmWThBaVVYUW9ldzlDWDBjSTZRcDZuNHV2SWVVTGlHSWZwYWpQUWJDQVcwS2VKYmV2amVsZ1RMV2NjSzY3MGJ2MlNRNWxSSndZbmRWVDBldzlyektiQjRhWERmUDlTUURkaVNSSGNjSGNFVXBicW1sUk1iZzV1d3lmTUFpQzBYdXBoUWJFUUhEMVVSYnRCY1RUVEtCZnBPWWdRcE5uemhkU0dzQ1pjdW81d01TcnhsOXg1eUc3ZW04aXlFZEViVzdxZERHQVNEZENLQWx3ZG1FN0NjZWRWU0Q4ZEdXaWUxZHJFOFd1ZWpOakZKY1BtdkVpTDViSkNlTThnazZjTzRMb3Jmb0EycXNkTmxvVWxmVzJpUHpiR0NmSDFBd0UwUmR0S1gwaWNvMDZQYWVQQ0dsd2VCNlJuV2VUNThwZGZQZEExUGJaeVJZdEVEclVOY05lbWlDYm1EUnpqZlZDaHUzZUJGZklRY1ZOWnpPYk9HT2xHY2lPV1d1ZHdESVUxZFNCRHF6ZVB3SlJaYW8yZ05aMldlTGVKYUhJcnE3NjNmY1VwNEhZdmFtNmlmU0tYZ0FjdEhiT0plWE5XdW5lek9ucHhicm1MakllQjI5c2plaUZXdXdmSFFLY1ZjaWVPSERidU03YU5lamlTa0dpUTlrbWJvMThPUmJMcEpQYWNDa1V5cmRxOUM2Z2RibnIzT2NmQ3MyYmRNMGNWUXNuZWloZGc5Y1hqYmF5MFFUZEUyanJKY3pEQ1lUY1dHaVMyY29Jdk9CZE1SSFVWZWZzZTVyZU9yOE16ZmNTN2V5ZVVBNmpsYmc0SGFjZFhGb2NnYkFpVVB4ZkI1MDB2ZUp2U0VSZVpTZmxZZVFZUVpwZm5xTVYzYkNGWlkxVGJlY0hkZnc3dVRlcDFFTXlieFdTT25lRVltYlJiQ1UxS29ld3VoMFZkaU9tRHRUOXlGcGVDaDF0VGJXY2dCbEk0Y0dTZVNZZzBiZGNrbGNyZGZrQnhLZld1YVJjYmxKc1FZZUxpZFA3Y0FLbmtxZWFPSTFwZmw3bzFuRVVrbjZjdDJRanVmYTV3OEViVmhBTDBiU0h3M3l0Mm90V1VwTUZHZUgxSkx5S1I2alVialRJREZiTTQxc0dkYUFNUjhjdlVaUjVOcTk0MWVHS3NLMGRiRTNxVWVqUWw5dGZBREJWcmJBeW9XYmJWV2c5YWR0Qks4QWVUZ0FpTWNsSlQ4dmRwZENzcWNERDg4Y2g4emE2Y0NLVjd2YkhaNHc0Y3c4RnhyYnlZNXVFY1VZV2JqZHd6MEVvVlg4cHllTEdYb1BlWXcxa21iYjUwcXFleURKeFhkdGNvS1pkY0ZUR2hlZnFDMllkZHRuT09lWTRvOFB3MnZYZmRGdjdKM2NBSElSQmZzNHlYT2VVNUtIRUo0cW5MZXJ0NjdzZG1sSGtuY3BaSHpBZHBEZE9HYndxWURRZEduZHhCY1hJdXBKZXhHWmFNY2VMTlFKZE1OZEVBY0wxNDBQY2tTb0RSUzBJeHViS0w4ZXBmeExpTkliR1dkV0FlVXZ6UDB5eDM5aGNncVJBSmVkSTVFeWNYT3JTa2JtWktEQmVua2FZek5ub2VCZVhuQ2xCbTZTVWRmd0JvZ1FlY1dZdmR0R0JKQ2ZFTFRSVENBM0VlZXJIQ3BSZFBLN0ZvZHFrRjZnY01ZU1FtYUwzZEJiRHRPYldlUHo1NTVjRjZRYURidmNta3NlWjU1TlFlRnFTaWRmaTNvYU9JVE51Z2VuMEhBMmJUeTlMdmR2U3VrWmJuVGlBQ2Nnb2NSdmRha2plV2RhbkhBZnEyUU9iY2RHSUJmcFJoMEVmS1VvRnVmUkV0eDZiYk1OT2ZlRTRNakVmZFhlTWpibGdOTkhmaWNkNFpkQWRZUEZiZ2xqeHVjcjFSTktkQk1nOVNkSjdXWkhjRXVNTmZmdHNVbGhOTmNtQmNLQVduU2VPMFFhT2RyV1FIZWZXZjBRSGRwM0ZmdGZpNjUyQmNVQU94aGJWNk9OWmR6ekxSNmJ4eXRQYkVKT0pGTlUxdFNyT3hJU2NPWDZVYmgzSXptZkJOTlpIZXJkVjdOZE11bnk3ZGYyU1JkYnRTNE1aY1lzWWVSZXxjYVlZYWFqdkNMTFVZTFlVWWFhTFlZYVlZV1lZVWFZWWFhVExhYUxZYVlZWVlUWXJCZlRMVExhakJhTGpCSFJXTExMV2FUVFlhYXJCTGFVYUxZYWFMTExMTGFZTExZWUxhVUxhTFdMWUxZWVRZYVlhWVlUYVRVYVdUTGFhYWJhTGFMTGFhYkxMTGFhTFRMWWFiWWFMWWFiakJMTEw3RV9EYnJDWHpCdkR6Q1RMakJUcmdCdmNMek92YXJJYkxQckI3Q1RuQ3pDVExMTGY3QkxMTGpJM01iZnpGTHZFX0RyQmJ6SW5CYkx6QlB6Q2J2QmpDSG5Cbkw3VXZEM0tqSjNJN0JMckJIckViSGJiM0JqQ0xMTFRMTExMTGJMWGpCTHpDTFBqQkhiM0NqQnpEdkI3QnZCakMzQmpDbkZMekZuRnpGdkM3QzNHekVIakR6QkxMTFRMX0JQSF9IakxMTExUTGpCdkJyQ1RKYVlMTGJKYUxMYVdMVExXVExhYUxZYUphTExZYUxZV2FhYVRhYVlMWWFZTExZTFlMVVlhYWFUVVNMTFlZVVlhTGFMVVlZYVlZWVlhWVdhTFVhWVlUTFBiSldZTGJMekNuQ0xUTFBiTHpCTFhQSHJDYkxMakJZWWFZYVlXVVVhWVVhVExZakJMTExZTExMWUxMWUxZTFlhVWFZV1VhWWFZYVlhWVdZckNZTFVMWUxVYVVUWUxVTFlMVUxZTFlMWUxZTFlMWUxZTFlMWUxZTFlMWUxZTFVMWUxZTFlMVUxZTFlMVUxZV1VUVUxZTFlMWUxZTFlMVUxZTFlMWUxZTFlMWUxZTFlMWUxZTFlMVUxZTFlMWUxZTFlMWUxZTFlMVUxZTFlMWUxZTFlMWUxZTFlMWUxZTFlMWUxZTFVMWUxZTExMWUxVTFlMWUxZTFlMWUxZTExMTFlMWUxZTFlMWUxVTFlMWUxZTFlMWUxZTFlMWUxMTExZTFVMWUxZTFVMWUxZTFlMWUxZTFVMWUxZTFlMWUxVTFlTVWFZYVlqQllMWVRMTFhZakJMTFlMTFlMTFlMTFlMTFlMTFlhVFlMTFlMTFlMTFlMTFVMTFlMTFlMTFVMTFlMTFlMTFlMTExZTExZTExVTExZYVRZTExVTExZYVRZTExZYVVUTFVMTFlhWWFVYVlhckJVYVRZTExZTFVMTFlMWUxZTFlMVWFZVFVMWUxMWWFZVFVMWUxVTFVMTExZWUxVTFlVYVVUWVdZYVlhWWpCWUxMWUxZYVlhWWJZYVlUWVVMTFVMWUxZYVVhVWJMWUxZTFlMWUxVTFVMWUxZYVlXWWFZakJMWVlVTFlMTExZTFVhVVRZYVlhWWFRYVlZWXJCTFlZTExZTFlZTFlZTFlMWWFZV1liTExZTFVhVVVhWWJZTFlMTFlMWVVMWWFUWWFZVFlhWWFZYllhVVRZTFlZTFlMWVlZTFlZVWFZYVViTFlMWUxZTFlhVVRVTFlMVUxZTFlMWUxZYVlUTFlhWWFZYVlqQllZTFlZWVlZTExMWUxZTFlMWUxZTFVMTGFZYVliVUxZTExZTFlMWUxZYVlUWUxZYVlUWUxZTFlMWUxZTFlZTFlMWUxZTFVMWUxZTFlMWUxZTFVMWUxZTFlMWUxZTFlMVUxVTFlMWVdZVFlMWUxZWVlVWVlZWUxZTFlXVVdZYllhWWFZYllhWWFZYllMTFlMWUxZVWFZYVlZYllMWWFZVFlhWVRVTFlMWWFZVFlMWUxMVUxVTFlMWUxZTFlMWUxZTFlMTExMTExMTExMTExMTExVV1lUTExMWUxZYVlUVUxhVVlZYVliWVVhWVVUWUxVTFlMWUxMVUxZWVlVVUxZTExMWUxZTFlMVUxZWUxZTFlMWUxZTFlMVUxZTFlMWUxZTFlMWUxVTFlMWUxZTFlMWUxZTFlZWVlZWUxZTFVVWVlZTFlMWUxVTFVMWUxVTFlMWUxZTFlMWVlVWVlZWVlVWVlZWVlMWVlZWVlZVVlZWVVVWVlZWVVhYVVZWVlZYlFhWVRZWVVMVUxZWVlMWVlZWVVVWVlZWVVZWVlVWVlZWUxVWVVMWWFZVExMV1lhWWJZYVlhVVlZWWJZTFlVTFlVTFlZTFlMWUxZTFlMWUxZWVlZWVVZWUxZVVlZTFlVWVlMWUxZTFlMVUxVTFlMVVlVWVlZVVlZWVlZWVlVWVlZWUxVWVlMWVlZVVlZWUxZTExZYUxhTExMTFRZYWFiYVlZVVRMYVRMYUxXTExMTGFMVExQWVdVYldMYVRMYlRMWUxhYWJMTGJIVFRIVGJuQ3pDTFVMTExhVExMYUxUVFRhTExhV1lMYUxZVFlMTExMYUxZWWFXYmFXTGJMVFdVTGFhVGFMVExqQ0x2QmpDTFBiTExqQmpCM0JMTHZEVEx2QmpHSnpDUGpCSFBQWExYakJuQllqRExMV0xMWUxiSFRMVFRMTExMTExKVExQWWpCYVRMWUxUTFBiSlVMYVRMYWJhYUxhakJMVExMTFRUTEphYVRMTExhTFlMVExZVExZVWFZVExMWVlhTFlhTFlMckJIYmpGTHZFekJISGpCSGJMX0JyRVQ3Q0xUTFRfSmpMTFRyQmZyQjNHTFBqR25GTFRMekVqQ2pDVDNCSHJEdlN6UkxMakJyQnJCTHZEakJUTGpCSHJCTExXTGFMVUxMVVRMTExMTExMTEphVFlMVGFMTGFMTFlMTFl6SG5IVGpCckZMVExqQlRUbkJQTF9IYmpCYmpCSHpHWVlhVFRMVExMWWpCTFlMWUxZYVdZV0xUTFRMVExUTGFhTFdUYWFMYllZWVlhTExhVGJMekI3RFRMTFg3RExmX0RyQ0xMTFk3Q2FhV0xMYVRMYWFhYUxMTExVVFlMTFlyQlBIckJMYUxMTExhTExXVGFMTGFMTExMTExMTGFMTFlMVExUakphTExfQkxMVGE3QkxMV2JMekJXSF9CakJhVG5KekZqQnJNTFBqUUx2WHZMSHJCSEhqRFc3SFQ3SExhM0hhckJmTDdCTGpOTGFiSFRfUGF6Q1RMYnJCTFhMdkI3RF9QelFMbldQcllMVExMTFRfWWphakJqRGpCM2NMVExUSHJlM2lCYVdhYWFhYWFhYVdhYWFTYWFhYWFXV2FhYWFhYVdhYWFXZnJqQkxQV3pCVEhZakUzQ1RhVExMTFRMWVdUTExMVExMTHpCbkJuQnpCTFRUTFRMTExMVEhUX0I3Q0xUTExMTGpCTExMdkJqQ0xMTEx2Q3JEYkxiTExMTExMYVRUSFRMTExMVExMTGFUdkI3QmJMTExMYlJSWGhCUFpKSllUN0JIWHJCYVVhTExhTExZVGFMYUxhTGFiTGJMYUxMTFdMTExZV0xhVExUTFRmWXJCWUxVTGFhTGFhTFdqQkxiWWJQTFRMV0xhN0NUVEwzRGpGM0VUVGpDakJIYmJMVExiakJMTExMakJMUGpCckJIUHJDSFRMdkNqQkxMekJuQ2pDbkRqRVRUSFBZV2pCWUxhVGFUTFlUTExMTExMSkpKWWFMWVRUTFlMWUxMTGFMTFlUYUxMTFlUWVRIVGFMTFlhVFlVYVlMWUxZTFlMWWJMVWFZVFdMWUxMYUxZTFlMYUxhYUxMYVRhTFRhTFVhTExMV0xMWUxhTFVMYUxhYVdMYUxhTGFMVUxXTGFMYWFhYlRZTGFZTGFMYUxZTGFMYUxhTFlMWUxZTFlMYVdMYVRMYWJhVGFUYUxZTGFUYllMTGFMYVRUWGF6QkxZTGFMWUxZTFlMWUxhTFlMWUxZTExZYUxMTExMWVlZTFlUTExMTGpCYUxhVGpCTHZCVExMakJMTGJUTFRMTFRUTFBhN0t6Qm5LakVmakpISEhIbkduQmpKbkU3RTNNalBfSmJyQkxMYWpJTHpHbkdUSHpCYkwzQkxMYkh6QmJmdkM3RExMVFRIckJMUGJMVEhUTExMTG5FekVUSFRUTExYakJMTExMVUxZVGFMYUxMTExUSFdUTGFMYXJETExmdkNUTExYckJMVGZqRGFhckJhTExUTFlhTFRUTExhWVdMTExMYllhVGFUYlBiV0xMVExMVFRMakJIUG5CckNhTFRZWVlhVFlMTExMTFVMYUxVVFlMTExZYUxZV1lXWVlZV1FUTFlXWVlZTGFMTFlMTExMVExMTExMdkJqQ0xMTExUTFRIVExMTExMTExMTExMVExMTDdCWFRUTExMTHZDakRhTFliUGFiV1lXVExQV2pCV2J6QkxuQ0xiYkhYakNMTFdZYmFqQlhMTFRMTExMYUxhTExhakJhVEhUTGFhTGFMYUxMYUxXTGFZYWFZYkxUTFdVYUxMVEhiYWpCTFhqQlhyQmpCSFRYSHJCbkRhWWF6RExXVFRMYVRMYUxhTGFMTExXTGFMTFdhTGFUTGFMVFlMYVRMYUxhTGFhTFRhTHpCZnJCYVdXVGpEM0NqRW5ETExyRG5DekNMTDNFakJMYlRMTHZCN0JhYWF6Q2FUTFRMV2FhVFRMekNIYkhUX0JQTDdDMUJ2QnpEYkhiZmJUTFRIUkxMakRMakx2TjdCN0VuQkxUX0JqTnZSckJMVHJCVExMVExMekJuQjdCakJIVDNHekhqQkxMTExMTExuRHpETExMTExMYkhUckZfQnJDTHZEUEhhckRyQ3ZHTExMN0JUTHpETFRIYlRMTEx2QjdCckJQblpUTGpiTExhVFlMYUxUYVlhVFdUTExMVEhUckRIVExMM0RMTExMckZMZl9EakRUYkxidkY3RmpCX0ZIVEw3RllMYUxMYUxhWWFUV2FZVExQYmFMTExZWWFMYXpCTExhYVlqQlBqQkxiTFhZckJZTFlUVUxZTExhVFlMVFRhWUxZTExUSGFVYmFhTGFMYUxUV0xMTGFZWWFMVUxhVFlMTExMV0xZTFVhTFRUVFRMYkxqQlRUYUxhTExVYVRMTGFMWUxZTFlMVUxZTExMWVRhYUxMWVlMTExMVExhVExZWUxVYUxMV0xVTFlMWUxZTGFUTGFMTExMTExMWUxhTExhTFlMWUxZTExZTFVMTGFMYUxhTFRMVExqQnJCWExMWHJCTHZDV2pETFRMTFhZekJMWGFqQlRIVFlhTGFMYUxZYkxYckJMUGJMTFlMWUxZVExZTFlMVVlUWUxVTFlMTFRMWWJUTExhTExZVExMVVRZTExZTFlVTExZVVVUWUxUWVlVWVRMWUxUckJZTExMWUxVTGFMYUxZTFlMTFRMWUxVVFlMVGFMYUx6QkxMTF9CTFlqQ1lMWUxMVUxMTExMYWJZYWFMTGFUTFdMWUxhTFdMTFlMVUxMYVRZTFFMWUxZTFlMWUxZTFV6QllMTExZTFlMWUxMWWJMVEhhVGFMVExMTExMakJMTEp2QjNCakNMYXJCWUxUSmFMakJ6RmpEbklqT3ZPSHJIakMzRzdJTDNMckI3SmpCX0lUekczQzNCX0NqRXpCekZIYkwzRkxhekdUYXpCWUxhTExMTExyQkxiV1RUX0N6Qkx2QkxMVWpETFRMUGpCTGFXVFlZYUxhTExZVExMWUxhamxCenlCXzJDN0U3QlRiUExfRzdIM0RqT25KekJqQ2JQekNQbkxMak1MN19CYmFIVExUSGJMTFRMTExhX0JfZ0M3RmFqU2pCUEw3Q0xMN0gzaUJMakNuQmJIakJUVFRMTG5CM0M3UzdDTDNDTG5HdlJ6U2FhallfYnprQm5IM2J6RUxMamZIVHZHV0h2Vl9HdkI3bUJqYl9yQjdRVExUTExMTHZDckRUTExMbmFqQjdaTDNCakNUV19sQjdZTDdGM1F6WWIzTkxyRF91QmFhYWFhYVdhV2FhYWFhSGpvQnJCSFRqQmpCX0RMX0RUTExyWF9YelpMTFRfYkxMX0ZXYW5IckpQckJIYV9UajRCUGJfekJiN3pCTGF2NkJqekJhM3pCNzZCYnZHN0dMakJMM2dDVExqRDdNYWFXYVdhYVdhbkpybENUTG5FYjdETFRUbkU3RXZFakJhYWFMbmpEelhfSV9NckJqQmI3SmpLTGpCVFR6Qkx6LUJMMzlCVFRUekJQUGJienRCdlEzY2JUakJiekU3QkxqQkxmckJyQ1RickJQN0JUSFRMVEw3Q1RMckhMakJYck1MTExiakI3TFRIYmpCTExMTFRMTExUSFRMTFRqRVRyQlRqQkpKYUxhclVfVHJDYWFhYWFhYVRyT2pDYUxfQnJDNUJ2QjNRYXJCYVRXVGFUTGFhek9XX1E3Q1RqT25PYlRMTExMTExMTGFUTExMTExMTExMTExMTExMTExMTGFUYVRUTGJMTExMYWFyRFlMTFlMWUxMSkphTExMTFRIVExiSGpCUllMWUxhTFlMWUxZTFlXTGFhYUxhWVlhTFlVTExXTGFMTExhTGFMWVlhV2JXTFlMWVlhWUxMWVlZYVlMTFlZWVlZWVlhWUxZTFVMTFVMTExVVExhVExiWUxZTFlMTExMTExZTExZYVRMTExMTFVZTGFUYVRZTFlyQllMTFRSWUxZTExVTFliWUxZVFlMWUxXYUxMWVRZTFdUYVRZTExMTGFMTGFMTGFMWUxhVExUSGFqQlVUWUxVYUxMTGFMYUxUSGFhVGFMYVVMTGFVYVRiYkhVYmFMWUxZYVdMTFRZTFVUV2FhYkxXTGFMWUxUSFRhYVRXTExZTExhVFRVTExMVExVTFlMWUxUTGFMYUxMVExMVWpDTGpCSHZDYmZiYTdEVEhQSHpCVUxZTExZTFlZWWFMWUxZTFlMTFVUYUxZYUxZTFlMVUxVVFdMTFlMV0xMWWFZWVlMTExMWUxMTFlMVVRhTFRVTGFMTFVMWUxZTFVhTGFUWVRMWWFMTFlUTGFhVFlhTExUVFdhWVlhYWFZYWFhTFlMWWFUWWFZTFRiV1RhYVRVck1yR1hMdkdhN0dfQkx6RUxmekJuQmpMM09MalBfUXZGakZ6RmEzRmFqSWpHYWFhYWFfYkxUVDdDakNXYWF2RWJMTExMTExyQmJqQkxMTFRMTFRIYWFhYTNIckZMM0VqSUhiTExqQmpOdkxyTGpCX0I3Q25MUHpMM05MTExiakNyQkw3RnpLX1Q3QnJNekNyQ3ZON1BuTV9DckRMekVqSkxuTlQ3Q0xyR0xuR2JUakJMZlRIakJUN0I3QlJSUkpKSmJKSllZYUxMYUxVVFVUYWFVTFlhTGFhWVVVYUxZVFdMVUxMVFdiTFdUYUxhTExZVFliV1lMWUxXTFViYVRZYWFMWVlMVFlhVVVZVVlMVWFMYWJhYkxMYUxhYUxMYUxZTGFhWUxXTGFMWVlhTFlMVEhhWVVZWWJZYmFUTFlZTGFMWUxZTFlMYUxXTFVhV0xhTExXTGF6Q25DVExMTExMTGJMTGJIYVliTGFMYUxMYWFUWUxZTFlMWUxhTFlhTFlMYUxZTFlZTGJMYVRMTExMTExZWUxZTGFMTGFUWWFMYUxUYUxZVFlUWUxUTExqQkxQUExqQm5DN0NZTFlMWUxhVFlMWVRZTExVYUxhTFlMakJISGFiYUxhTFlMYUxXTFlhVFliYUxhYUxhTFdMWWFMVUxZTFlMWUxZTFlMWUxZYVVqQllMVVlZWVlVTFRZTFFMTFRIWWpCSHpCUExUZnJCWUxZTExZckJVYVlMWWpCUExiVEhZYVRZWUxMWUxMTExVVGFZYVRMYUxMV1RUTGZyQkxhTFlMWUxUYWFMYXJCTFhIckJhTFlMWUxMVUxZVWFZTGFMTExMTExhTExUSFlUWUxVTFlMWVRUYWpDYjdCX0RiSFRiTGF6Q0xZYnJPdkhmTG5CWHJEdkRqRTdDX0d6SEwzRW5EeklhYTNFakZfRHJFN0JUek1MbkpUTFRUX1M3REhqQnJPblM3UnZKbkJhYWFhYVdyRGpNTHpCTExMTG5MekZMTEx6QlRIN0VMM0szRHJJTExMZm5CblNqV0w3Rm5iN1ZuU2pIelBMTG5hamNuTnpLdk83UGpDbmRQenlCTExfbEI3QzdNTExhYTdJYmJUVEwzQkw3QkxMTExMM0VqR0xMVEhqQmJMYkxMTExMTExhVGFhYVdhV2FhYVdXYVdhV2FhYVdhYVdhX1A3RFBfWWpXVEhyUV95QnJmVzNMdkRhN0JqT0xMYlBMVGpTTDN6QmpRYmpQblFyU0pKNVNIUkpVTExhTGFMYUxhV1lMWVlVWWFhWVRMWUxZYVlSSFVZYVdhV1lVVEpZWVlZYWFhWVlhVFdMYUxMVGFiTGFUYUxZTFlMWUxZYVRVTFlMV0xMYUxZTFlMYUxZTFlMTFlMWUxZTFlMYUxiWVdMWVlMTExMYUxZYUxZVFVMTFlMWUxZTFVUWUxMWWFZVUxMWUxZYUxZYUxhTFlUVUxZTFlhVGFMYUxhTExZVFlyQmY3QkhYekJZTFlMYUxZTFlMWUxZVGFMV1RMWVRhVFliTFlMWUxZTFlMWUxMTFlMTFlUSFRZVFlMVUxhVExhTFlMWUxZTFlMWUxZTFlMWUxZTFlMWUxMWVRVTGFMWUxMYUxMWWFMTExMWVVZWUxVWVlZWWJUYUxZTExZTGFMTFlUTExXTFlMWWJXTGFMTFRMVEhYekJXckN6RGFUYXZGckJQSFg3R2FfR2pETHZDekJUakJMTExMTHpCYXJCakJMTExhbkJVV3pCakJQYkxMZll6QlRIYmFIWVRMYkhUSmZZYXJCWXpCZlk3QkxhVExMYXZCWWE3Q1RIZkxyQmEzQllyQ2FMWVRMTExUV0hZYWpCWUxMakNMM0I3Q3ZDVExMakJhM0JyREhhSGFqQkxMakJQRllyQllMYUxZTExMTFlXTFlMWUxZTFVMWVRZTFlMTExMTFlMYUxVTFlMTFlMTFVMWUxZVFdMYUxMVFlqQkxhTGFMWVRMTFVhYWFhekJhYWFqQldMWUxZTFVMYUxhTGFMYVlMTGFMWVRZTFlMWUxZTFlMWUxhTFdMWUxZVFlMWUxZWUxZTFlMWUxhTFlMV0xZTGFhVFdMWUxZTFVMYUxhTFlUWWpCWExiTFRMWUxMTExZTExMU0xhTGFMTFlMTFlMTFlMTFlMWUxZYUxZTFVMYUxhWVRIVFlhTGFMTFlMTFlUTFlMWWJQekRuRFRMTExMTFRMTFpKSkxMUkZZYkhVYVRZekRIVExMN0JIbkJqVnZIdkpuSXpDakc3SW5MN1JuVHJFTDNDN0t2Q0hfRExqTjNJM016UTNOekVUSGpDakVMTExmckJMM0JfRWpCTFA3QkhUTExMVG5DakMzQnpGVEwzUnJDalJMakNMTExuQ1RIN0RuRWpCTExqRDNYclh2WGpadlk3RHpCVExQakJMUHJMTExMbk83VVBaaEJWSkpSSkpKSkpKSmJISFpKSkpKSkpZVEhZVFVMWUxZTGFMWUxMTFlMWUxZTFlMVUxZTFlMWUxhTExZTFlZTFlUWWFMYUxhTFlMSlVMVUxZYVVMWUxUVUxhTFlMVUxZTFlMWUxVTFlMYVlVYVVUYUxZTFlMVEhZYllMVUxZTFVMVUxMWUxMWUxVTGFMWWFMTFlMVFlZV1lZTFlMWUxZTFliYkxZYllUWUxZTFlMUllMUWFUYWFhYUxhTFdUYVRZTGFMTFRZTFVMYUxhTFVMTFlMWVRIVExZTGFMYVRMUGpCWUxhTGFMTExMTExMTGJZTFlMVUxMWUxhTExZTFlMWWFMWUxMTFpZTExZakJIWVRZTFVMWUxZTFlMWUxZTFlZVGFMTFlZTFlMWVRMVUxhTFVMWUxZTExMWUxhV0xZTExZTFVMYUxZTFlMWUxZVE9ZckJQTFRuQnpCWVRZVFVMVUxZVFlMWUxZTFVMUUxVTGFMV0xZTExZTFlMWUxZTGFMV0xhTFlhTFlMWUxMTFlMVVlMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTFRMTExMTExMTExMTExMTExMTExMTExMTExUVExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExUTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMakJYTExUTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMVExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExUTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTFRMVExUSElXYWFZYkxZWVlZWVFZYWFZVGFhWVlZWVlZWVlZWWFXYVdZWVlZekJZVFlZYUxZVVlMWVlXVUxZV1lZWVlXWVlZWVlZTFlZWUxZTFVZTFlMTExVTExZWVlZV1lVWVlZWVlVWVlZWVlZWVlZWVlZWVlZVVlZWVlZWVlZWVlZWVlVVVlZWVlZWVlZWVlZWVlZWVlVWVlZWVlVWVlZVVlVVVlZWVlZWVlVWVVZWVlZWVlZWVlZWVlZWVlVWVlZWVlVVVlVVVlVVVlZVVlZVVlZWVlZWVlZWWFhVGFZYWFXWVlZWVlhWVlZWVVZWVlZWVlVWVlZWVlZWVlZWVlZWVlVWVlVWVlZWVVZWVlZWVlZWVlVWVlZWVlhWVlVWVVhWVlVWVVZWVVZVVlZWVlZVVlZVVlZWVlZWVVZWVlZVVlZWVVVWVlZWVVZWVVZWVlZWVVVWVlZWVlZWVlZWVlZWVlZVVlZWVlZVVlZVVlVVVVVWVVZWVlZVVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlVWVlZWVlZVVlVWVlZVVVZWVlZWVlZVVlVWVlZWVVZWVlZWVlZWVlZVVlZVVlZWVlZWVlZWVlZWVVZWVlZWVlZWVlZVVlZVVVZWVlZWVlZWVlZVVVZWVlZWVVZWVlZWVlZVVVZWVlZVVVZWVlZVVlZWVlZWVlZWVlVWVlZWVVZWVlZWVlVWWFZWVlZWVdVWWFqQkxZYWFhWWFZVWFZWVlZYWFZYVdZWVlZYWFhWVlZWVlhV2FhWVlZYVlhWVlZVVlMYWFMWWFVWVlZWVlZVVlZWVlZWVlVWVlMTFRMWVlZWVVZWVlZVWFXTExMTExZTFlZWWFZWUxMYVVZWVlhVVlZWVVZWVRZWWFMYWFUWWFZTExZVVlVWVlZV1lXV2FZYVlZVVVhYUxVWVlhWVlhWVlVWVlZWVlJUVVNVFVZWVdZVUVNUU1JVVFRSVVZYVlZWVlhYllhYVlhWVlZWVlZYkxMYVVhYkxhWVlZYWFZVFlZWVlZWVVZVVlVWWFZYVlVVWFZTGFZWWFZWVVhVFlZWVlhYWFMTFVUTGFMWUxZVWFZVVVhVVRhWVVZTExMTFRIWVVZWVdUWVlhWVlZYllZYVlZWVlZWVlZVVlZVVlZYVVMVUxMWVlVWWFhV1dhYWFZYWJMTFdMWVRMUFliTGFMYXpCTGJfQkxQYmhDYWFyQlhMWWpCakJhSFdUWVVZTFlMYVRMTGFVVXJDVEhYTG5CTFRhakNMTGZ2Q2JZYWFhYVlVVVlhckRIYWFhYVliWVlZVVlVWVlVWVlZWVlZWVlZWVlZWVVZWVlVVVlZVVlVWVlZWVlZWVlZVVlZWVlZVVVZWVVZWVlZWVlZVVlZWVlZWVlZVVlVVVlZWVlZWVlZWVlVWVlVWVlVWVlVWVlVWVlXWVlMVVlZVVlZWVlZWVlZWVlZWVlMWUxZWUxZYVVVWVlZVVlZWVlZWVVVWVlZWVlZWVlZWVlUWVdhWVlZYVlZckJZYVRZVVlZWUxZWVlZTFVZWVlZWUxVWUxZTFlMWVlVVVlZWUxZVVlZWVlVTFlMWWFhYWFZWVlZVVlZWVlZVVlZWVlVWVlZWVlZWVVZVVlZWVVZWVlZVVlZVVlZVVlZVVVZWVlZWVlZWVVZWVVZWVlVWVVZWVlZWVlZWVlZVVlZWVlZWVVZWVlZWVlZWVlZVVlZWVlZWVVZWVlZWVlZWVlZWVlZWVlZWVlZWVlVekJhYUxUTFBqQkhhYWFiWVdhV1RhTGFMTGJMakRqQl9DSFRYckJIVDNCekNIN0JfQmpCTEx2RWFXWVVXWVlZN0ZMWVlZYWFhVVVVWVlZWWFZYllMVEhZVFlhYWFhVVlMYllZWVlXWVlVWVlVV2FZWVRhVEhZYVdhYVdZYWFhakJVVVlZVUxZWVlVWVlVWVlUTFVZWVlZWVlVWVlZVVlVWVlZWVlZWVlZWVlVYUxMVVlhTFlZWVlZVVlZWUxVVUxZWVlZWVlVWVlZWVVZWVlZWVlZWVlZWVlZWVlZWVlZWVlZVVVZWVlZWVlZWVlZWVlZWVlVWVlVWVVZWVlZWVlZWVlZWVlZVVlZWVVZWVlZWVVZWVVZWVlZWVlZWVlZWVlZWVVZWVVZVVVZWVVZWVlZWVlZWVlZVVlZWVlZWVlZWVlZVVlZWVlZWVlZWVVZWVlVWVVZWVVZWVlZWVVZWVVZWVlZWVlZWUxZWWFMVFlqQmFZTExhTFlVWTdDdkNMakMzQmpCTFhMUFlXckNhTGFMYUxhYUxXVGFyQlRuQlRIUFk3QllZYUxZWUxUTFl6Q2pCckJfQ3JDM0NqREw3QnJCdkZMWFhqRFBIX0I3RmZyQ3ZIekVMdkM3Rl9DWXpEWUxMWVRZVVlZWVlZWWFhYVlZWVlZWVRIWVlZWVliWVlVTExMTFRMUGJMVExMWVlZWVRhV1lZTExMVEhhVVlZYWFXWVlhVFlZTExZV0xMWVlZVUxVTExMTExMTExMTExMV1lZWVVMTFlXWUxMTFlMVVlZYVVMWVlUTFlMVExMTExuQnpCTExZTFlVWVlMWVlZWWFMTFRUYWFXYWpCWUxZWVlZWVlhYVlZWUxhTFlZWVlZWVlZWVlZYVlXV2FMYWFXTFlhTFRZWVVZYWFMVWFZWVlZVVVhTFlhWWFVTFlVVVlMVVVZWVlhYWFZV1lUYWFhWVlhWVlZVExKWVlZWVlZYVlhWVlZVVVVTFlVWVlVTFlZVVlZWVlhVVlZYUxZWWFhYWFVWWFZVVlhWVlVWVRZTFlhWVlMWVlZWVlZTFlZWVlhVGFZWVVZTFVMWVlZWUxZWVVZTFlVWVlUWVlZWUxZVVlVTGFZWVlMWVlZYllhWVlMVVlZVVlVVFVVTFlZWUxhWVVVWVRZWVVZWUxZWVlZWVRVWVlZVFlZWVlZTFlVWVlMYVlZWVVUWVlZWVlUWVlZVVVZTFlZVVlZTFlZWVVMWUxZWVlVTFVZYVVZVGFZWVlZTFlZVVlVTExMVVlZYVlZTGFZWVlMWVlZVVlUWUxMWVlhWUxZWVlZTFlZWVlMYVlZWVlMYVlZWVlMWVlVWVVUYVlVWUxhWVlVWUxZWVlZWVRhWVlZVUxZWVVZTFVVVWFUYVRIWVlVYVlZWVlZWVVVWVlVWVlXVWJUSFlZWVlVVVlZWVlVVVlZVVlhV2FyQllVWVlZVVVZVVlZWVlZWVlMWVVZWVlMVVVZWVlMWVVZWVlVWVlVWVlZVVVVWVlZWVlZWVlZWVlVWVVZVVlZTFlZWVlVWVlZWVlZWVlZVVlZWVlZVVVVWVlVWVlZWVlZWVlVWVRZVUxZWUxZWUlhVFlhVEhUVVVZYVRZYVVMTFVUWVRVTFlZWVVhWVlZVExZVU1NWVVUVExqRHJFSDNHakVIYkxMM0VyRm5ESEh6SXZDSEhiVFQzQ0hfQ0xfQnpJYkxuS1RhYVdhYXJLTFRMTGFhYUxZYVdqQlRIYVRZUVlZTVVZWVlVYVlNWVlZWVlZYVlhYVRZTFlhYVlZVVRMWXJCSEhibkJZWWpDVEhUZldZVVlZekJVWUxMTFlUYUxMTGFZYkxYTGJUTFByQlBMVFRMVEhUTExZWVlZWVRhWVVMTFVMWVlhVExhYVlXYVk3QkxUSFRyQkxMckRIN0NqQ2pCTHZNekNuQ3pDN0JMTGJqSXZJTFRMbkNMbkNMckZMX0RfRHJJTExMTFRuQ3pDVEhUTExqQlBMakJMX0Z2SDdOWWFhYWJMYVlhWVdZWVlMYUxZYWFZYlRIYVlVWVlUWVVZVUxZVExMTFlZVWFyQmJMTGZMakJUYkhIUHJCTFRIVExMTHJCTExMbkJ6QjNCakN2QjdCdkM3Q0x2SUhUN0lUSGJMUGZuSldZYWFyTGFMTGpCTExuQkxZYXpCWVlMVUxZTExVTFlMWUxZTFlMWUxZTFlMVUxVTFlMTFlMWUxZTFVMWUxZTFVMWUxZTFlMVUxZTFVMWUxVTFlMWUxVTFlMWUxZTFlMWUxZTFVMWUxZTFVMWUxVYUxVVFlMVVlZTFlMWUxZTFlMVUxVTFlMWVlMWUxVTFlMVVlZVVlZWVlZWVVMWUxZTFVMWUxZTFlMTFlMWVVVTFlMWVVMWUxZTFlMWUxZVVVZWUxZVVlMVUxZTExZTFlZTFlMVUxZVVlZTFlMWUxZVVlMVVlVTExZWVlZWUxZWUxZTFlMWUxVTFVMWVlVWVlZTFlZTFlMWUxZWUxZWVVVTFVZTFlMVUxVTFlZTFlMWVlMVUxZTFlMWUxZTFlMWUxZTFVMWUxZTFlMWUxZTFlMWVlMWVlMVUxZTFlMVUxVWVlZTFlMWUxVWUxZTFlMWVVMWUxZTFlMWUxZTFlZTFlZTExZVVVMWVlZVUxZTFlZWUxZWVVMWVlMWVVZWUxZTFlMWUxVTFlMVUxZTFlMWUxZWUxZTFlZTFlMWVlMWUxVWVlZTFlZTExZTFlMWVlZWVVZWVlVWUxZTFVMWVlMVUxZWVlZVVlMVVlZWVlZWVlVWVlVWVlZWVlZWVlVVVlZVVFZWVlZWVlVWVlZWVlZWVlZVVVZWVlZVVVZWVVVVVlZWVlZVUxZWVlZTFlZWVlZWVVZYVlVVVVhV3pCTFlhVFlhWVlMWUxXVGFZWWFZYWFhTFlZYUxZWWFhVExMTExMTFlVVWFhYUxZVVViakJyQkhuQ1RMckJISFBhV1VZVVVZWWE3QldMWVlMYUxhVVlMYWFMTGFZTFVMTDdCdkJMTHJCUGJMbkJIWXJDSGJIWGFyQmFZWVlZWVVUWWpCckJIakNMTDNEakVMTExMVEhyQ19HTExqQ0hIckVIVFhqQm5CSHJDSFRMVExQX0k3Sm5ISHZDckNqSWFZVExUVEhQckJIYWFiYkhUTGZ6QkhUTExUVEhQakJMbkVZN0VZTFVZWVlMWUxZTFlZWUxZTFlVWVVZTExZWVRUSFBZVVlqQmJMUEhZakJMTExqQkxQSEhyQkxMTExMTExUSFRMTExMTExMTExMTExMTExMTExhYWFhTGFZYVVhTGFXVFVZWVlVWVFhVVVVWWFVWVlZWVlMWVlZV2FZYVRMWVlZVVlZV1lXWWFhWXJCVVlhWVlZYVliWWFhV1lZWVlZWVlZV3JCTFlVYVVVTFVhYVlZVVlZWVlZWVlZWVVZVVVZWVlVWVlVWVlZWVlVWWFhWVVZWVlZVVRVWVlhYVlZWVVVWVlZWVVZWVlZYVlUTFlZWVlUVWFZVVVZU1lZWVlZWVlhckJZWVlXTFVZV1lZYVlZYVlZTGFhYVlZWVlZVVRMTFlZTFlZWVlZYWFZVGJZVVlZYWFMTExhYVlMVWFUWVlZWVlZTExVYWJQWVliWVlVWVlZVVlUWVlVVVlZTFlZWVlZWVlZWVlVWVdVVVVZYWFVWVlVWXpCWVlhWVlhV1lZakJZVVlhYWFhYVlZVWJUWVNhYVlhVFlhVVlZWVlZckJQYkxZTGFXWVlZWVlqQllZTFVZWVRZYVVZV2FhWWFhYVRZV0xMWVlVTGFMWVVhWWFZWVRZVFlZWWFZWWFhYVlZWWFZV1lVTFlMTFVXWVlhWVlZWVlVWVVZWVlZWWFMTFlZTFlMWUxMTExZWUxZWVlZWVVZWVlZWVlZWVlZWVlZVVlVWVlZWVlZWVlZVVVZWVlZTFlZVVlMWVlZWVlUYWFZWVlZWVlZWVlVWVlZWVlZWVlVWVlZWVlZWVlZWVlVWVlZVVlVVVVZVVlVWVVVWVlVWVlVWVlZWVlVVVlZWVVZWVlZYVlhWVlZWVlZVVVZWVVMWVlZWWFZWVlZWVlZWVlZVVlZWVVZVVlZWVlZWVVZWVlZWVlZWVlZYVdVVVlZYVlZWVlVVVlZWVlVWVlZWVlVWVlZVVVZWVlZWVlZWVVVWVlZWVlZWVVZWVVVWVVVWVlZWVVZWVlZWVlZWVlZWVlZWVlZWVRZTFlVWVlMYWFZWWFZWVlZWVlZVVlUWVlZWVlZWVlZWVlZWVlZWVlMWVlZVVlVVUxVV1lhYVRhYVlXWVlZYVlhWVVVWVlZTFlZTFlVTFlVWUxZTFlVWVlZVUxZWVlMWUxVWUxZVVlZWVlMVVlZTFVZWUxZWVVVWUxZWUxZWUxZVVlMWVlMVVVZTFlMWUxZWVlZWVlZWVlVWVlZVVlZWUxVWVVMVVlZWVlZTFlZWVlMWVlZWVlVTFVZVVlZWWFZWVlhYWFhWVlZWVlZN0JZYVlZWVlVVVlZVWFXYWFhYVRMWVVZWVlVWVlZSVlZTFVZWVlZWUxqQlBIWVlVWVlyQmpDTExMYTNCUHpDbkJhZnpDVExQYVlhYWFhWVlhWWJhWVlZYVlZWVlZYVlZWWFZYVlZWVVRVVlZVVlZVVVZVVlVWVVZWVlZN0hIdkdySExUVExiTF9EYWFhX0ZUTGJhYkxiVExhTExhYUxMYUxMTGJiYmFhWXpDTFBZVVlZVVlZWVlZWVlZVVVZWVVZWVVVWVVZWVlZWVVZWVlZWVlZWVVZWWJUTExMTExMTExhVExMVVlVWVlVWVlZWVlZWVVVWVlZWVlZWWFVWVVUTExMTFlZVVlZVVVZWVlZWVlZWVlZVVlhYWFZWVVZWVlZYVlZV1lhYVlZYUxZTFlMWVlMTExUTExMTExMVFdXWUxVWVVZWVlZWWFZWVlZWVVZWVlZWVlZVVlZWVlZWVlZWVlZWVlZWVlZWVlZVVlZWVlZWVlVWVlVWVlZWVlZWVlZVVlZakJMYVlMVVVZVVlZWVlVWVlZWVlZWVlZWVVZWVlZWVlZVVlZWVlZWVlZWVVZWVlZVVlZWVlZWVlZWVlZWVVZWVlZVVlZWVlZVVlVYVVZWVVZWVlZVVlZWVlZWVlXYWFZWVlZV1VZWVlZWVlZWVlhWVlhWVlhVVlZWVlZWVlZWVVZVVVZakJIVVlhVFlhVFlhWXxBQUFJWUFDQUFDQUFKSUFBQURRSUFBQkJBd0lCQ0NBTkFDQTZBWUFBQTRBaUNFb29ZWUZCSUFJSUlBQ0RCRXdBQm9BSkRZQUNBQUFKSVFBSkFJNkFvQUFCQm9CQ0JTQTNKSkw0RUFRUFFZSllCU29EakFJQkpTSjQ1eEpQUFBPNXh4NUpBQXd4REFKQUhBUEFBQ1lBQU9ZQ0xBQWFRWUlRQVFRQlBGVlJBRUFMSkFCU1NKU1FRSUFJUUFEUUJKQWlDWVJKSjZCRUxDQlFCRFFKSUtKSkpCQkJCQkJCQkpKSkpCSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpCSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpCSkpKSkpKSkpCUUpKSkpKSkpKSkpKSkpKSWdKSmhKSkpKSkpKSlJSUlJKQkJCSkpKUkxaSkpSSkpSSkpCSkpKSkpKSkpKSkpKSkpKSlFKSlJKSkJKSkpKSUpKSVlCTUlJSUlCSkpKQkpLSkpKSUpLWUI1UkpKQjRKT0tCSkJCQjVCTkpJSUpJUEFMSUlJSUxLUlJKUlJKQkJCNVNRSUpnd0lKSUlJUUpZUlFaNUtSSkJCQlJLQlJJS0tJSkpMSUJKQkJKQlJKWkxLMUpSSUlRUlpSQlJKSlJSUkpCQk5JSUlKSkpJQWFKUlJaaEpDREpKUkxKSkpJSkpJSkpKSkpKSkpKSkpKSkpKUlpSUlJKQnBaSlJCUlJSWmFaS0tLSUlMSUlMSUlLaEJKSklJSkpCSkJKSkpCUkpSSlZKSkpLSktLQUFLSklKQVBJS1pKQkpaUUo0U0NKTU1JSXdCSkphQjVKQkJSSkpLS0tLS0tLS0tLS0tLS0tLS0tLUkpCQkpKSkpKSkpKSkpKSkpKS0pKSkpKSkpKSkpKS0tKQUxSSkJKUlJSSlJKSkpKSkpKSkpBUktCQmVZSUxJSWFDQkJJT0pKSkpKSktRY0NCUktKSUlwUkpSQkJKSkpKSkpKSkpKQllKQUFBRGdBQ0FBUElLSUFBWXBBSUdBa1lRcEFBeFlBSUFBQndCSEFFQU1CNEJQRUNLVEU1WUNBRUFBSElJREJBRGdBQUFBSTRBSkFJSXkzSWdCRFFKSUxUQUFKR0I1VG9BRkJvWUFEQUtEQTRCQTVRQnhJSkpJd0J3QkNJSUJRSkxKSlFCQkFRSkFBUElBSXM2QVlJZ0JTTElIWEZnSUM4WUFGR29BRmhBR0pBQUJBQV9JSUJuQkJRMUFFREVBQUlJQUFYWVpBWUpCUUVMSVJKQTRMYUhGSWdKV0xFQ0hMNEpKZ0FBRllRQURRUkE1SkVJQ0lBSkNaQ0pBaEFCNUpCUklJQzRCQkdSUkpCS3JJSkNKNUNKQUpKQkJKUklKdzZBQUFBQUFBQUFBQUFBQUFBNFpGamJ4Q0JjU0VCQUNJWkhJUVBCQnZFU2FRSUFQQlFYZ0FDSkJDRE1qU3dJVGprSUFCQ0FId0VIRFJKRENGQkJBNEFwQTRISkpCdHBweENKSUs0clk2WklBSExhSUpLQlNqYnd5UUtRZkg4MUppX05IQ0RvSXFFQ0FfaFM1WU53V0hkQlBIRGZnQUtBWVpvd2hHQ1BGUXh3NTRHUTRJRHZCcEJPUFZFRVJIZkZGRWRNQjQ0SktFRG5GX1BIRU5scElIUE9GRENZUU9hU1BxZ1JacVJoWlpwQURJU1VSUmJJTEhEQUdJQkNJQVJJNUFCWXhwd2g0QUFKWEFDTEJJQ0hoQ0lCRTRJYUJKNVJKRDhySjZSd1FJS1FIWXB5RVhBSEluLVFsTEhJUzZBSUs0QktRUUtpQkFJNDVJSEFaUkU0UWhnUTRBU1paQkNZSUpZSUdBUUNRNEo1WENuUm1SMEM4NkE0SlE1NW9JQ0NBWUJSQUdBUko1QUtCSnBJTUY1UUlDT1FwQ01pUEFKQXdCQUp3QkJCQjRBM0JBTUltNDZSSjY1S0hvSU5vaEtOQkxSRjVBSEFUQUNZUUhaSTRvSVlZQU80WVlRcEFBRFlUUkFEQlJTYVJaNkpDU0ExNVBVWHR0dHRmREhINnR0bEw0N1J2X192dHQ2dV9BdzVJUVFFQWxaSkNJSTVKUXhrTnA3SWNrOFlBRExBR0FZNEg4QWdLNUF3clFfZ2dwNUlQSEk0bzBaNG9PT0c1QW9BQ0dITko1b2dJSUJKS3NISjdEQUVGRkdGRmhQaVNESmJBSGlLYVpGRGJhRk40S0VLNm9BVUxIbjc1REhUQ0JJQUlRYThJUzZIUkI0NEFLR2Y5QUZBSEVGNFlvQUVFREI1SkFYb0M0Z0FISEFMQkRZSkk0QTRTZ2dneGh3QkNFRkVvd0FKaTVZNEFFVEZQU0ZSUkRFREV5UkFFREVFRERFRERGSUdHR3BJSU1LSktoS0NLQUxGQUhLUURBQUF2WktGNUZRQU9OaGlJSkFOVFk0SlA3d1FCb0FCRER3STRJSUhKQTVaSVFvSVFJQlFJZ0phS0NkQko2SkhJSmhMQUlfS0o1cUFhRUk1UkpnNTQ3YkpTU01mUlJqU0NNb1BjSURBQUFBQUE0TUtoSlRLNGFLWjdBVENHQ0xSUmdCWFRiQUJZREFBQUFRQkhTU1VwQTRQN0xCSkpCSTVCQ19BUnY2XzRBUDY2RElGQktJSkdCSkxaTUJxS0FoQzVYX0I0eTZDQUFBX0M1QTdJSUlJR1E0Ql9CSkpKS0lKS0pKSlJKS1JCQlJLVFY0UkpERkFRQUFRUWhBSERLRkxDR1lBZ0FBQ0FITFJVRUVRZ2hvQUFZSklJSlJKQkJFY2hReEJISkhERUpRNUlEQUtWSFE1cDRvQ0FIRjRnWXdvZ1lBZzRRNVJBTFBZU09LTEI2Umc0QUFFQlFETDREN0JSX0RaSkhUU0hFSEE1WThCUERnSkxKQkdTTFBHVVFFVEVZUEJSNTVBcVJYSFlRUkFISEY1UXFCR0RESEdSUkFESkpCNFo1WVlCSEx5NGdSSkRFeEFZSTRZWkthREFBQUtRNkFDSUlQS0lCSkFYSkNBSUVEQTQ0QUFBSEk2QTRTS09NVFVhUjZBQUg1X0FIQ05FX19DZ0MwNEJpS1ZaSTY0T3hEZ0NER0FBQVFBSEE1bzZvSVFBREFBWVFnSjRJTUtOeFJCRkVITE16QUpBREpKSlZ4QUpCNUFvcTZJWjR5QlFRekpKNTVOX1paaFk0NmFBUUFMQ1g1UjZIUERIUTVxSDdZUm9ZaElHTEtiSXhGQUE0TkhGNlJBSnc1ZzU0UG9XSEhQSEZPS0tDNERORUppUVFaaDdyQUVERTc0NlNYWEVNTE9OQ0pCTElKSVBDQTBSSmJISEg0NEFnMFlhSFpBcFFISFlZNUwyWk41Z1JCZlJZLXhnZ0FES1FZZ05RWEo2b29Rb0FINERLSVBRNUw1LTdoNkFCNEtubktJWjVUM1NCQUE0SlJKQ2FhUlI2UEpTNlQ4cmZhbl9XTDVfUFlHSTVuS0pSSlpKS1pSUlJKUklBQUFBQUFBQUFBQTR2WF81RE13cEpPSzZLNUNBQ2dCR0dDR0FJQUFBNFFBQUlBaEFBQVFBU0tnSWk0Q2ZOTk5EVm9nUUlPQ0tOQ0Y2b29vUVBuUUFRallFUE9vb29vNUFESkFGRW9KT0RFRWM0b2diUGNYVjRZZ1p3WTZSYUFHT000NHhvb0F3TFBER0hHR3B3b29vWTRZb1lnNEFHR05DWUFEQlFMYllCWldKTjRvUkhBSERQQzVmZl81SllvX0hFWDVSWk1oOEtSQmZJUkI1TFJHZkpKQmY0TWZoUWg0RGhMSzRVb1NKcjREZkpCWExaQlBCSEpVSEhHUGVKNUhGTUhGSE5USUpIS0ZFaEFIR0hFRUFINDRvaTVKS1FxaDZndzRZYVFBZ1laSVlZeTZZeHdnZ1lZQUVMQ1BDUkhYY3BnWVlJeFl4b0E2SVkzQUhISHlJSDRaUGZIb2dZSUFCQ1FCSDhBSERKTHBJU3BBQUJ3UkdnU0xScVJxWUIwNktCUjdRUHhBNlpnTUpPM25iUEtWUFFKSWJuUFo4NzVTWU1kWlpEREFBQUFBQVFDQUFBTXE0NGdZb0I0WWc0WW9vWWdKSEU1WUJMTEVZZzRBWkVFTkNQSENPUFBLQkJQTTFSTUhEREQxZ0FQQ0ZFUUhZQkpvb2dSSTRncG93QURGSUpJSERCTFNoSEVVVURxaWlYUExEUWhRaVNuX182NDBCRkM4cGhSSEE0QUhONGd3Z2dZZ2dBT3dIRUdnSWhob2s1SVlPZ29nNGdZZ0FFQzVnb1lvZ2dnWVlZWXdxYUJPS09FQkxNSHA1QTQ0Q0FBSUFBQUFBQkFBQ0FBQUlBQkFiSUFCQURBQkZBRVFjclFBRUJBSkFLS0pJb1FBQURCQUNRQVNJQVFBSVFKQlJKSkpCUUJCQllBQUFKQUlKSklKSVFCSklJQUJKWWFBSkFOQVpSQUFJUUlJQUFBS0FRVUFBS0FZQUlCSkFKQ0pJQUlBQVFKQUFBWUJJYktKUUtnQ0NKQkpDQkFTSUNBQUFDQVFBQUlCSUFCQUFKQUJJSUlBQUJCSUlDaE5DQUpTWklEQUFaQUFKQUFBQkFBSVpCQUJBQUFBQUFBUUpLQklBQUFBREJBQUFSQkNDSUFKUUJBVkNCWnJKQkpFQUFRUkFBQUxRQUlKQUNvQ0FVa1NBQUFBQUFBUUFBQUJDSkFBUUFCQUtKSkJKUVlKSkpRSUlKSkFKSkFCQUFKSUpJQUFJUUlRSkJCREtJQklDQlJLTUpJQUlJSVNRSUFBSVpJSUFBQVJDSUFBQUtxUk1UQVRCUUFJWVJKSkpSQkxBUUFBVFFUSUpGQUlBQUlBUVlCQUFCSUlBQVFCWUlBQkJCQUlBSUJJQUFJUlpKQVNSVUJRSkJZSUlBSUFCQUFJSUFSSUhCSUFBS0JCUklDQUJBQUFBQUFRUVFJU1NJUUNBQVpCQlJDQmJBRUFKRk1DYmJKSVlJSUxJRUJETERSWlpKSklJQUFJQUpBQUpDUUpCQUpBQUNKS0JBQUFSSklJSklKSUJJSktCUUFBSUpKSkpLSkpSSkpLS0lBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUpRU2ZzQ1RxclNuQ21hYmpUdFhpVHk1UUJZUlpCSnJudDczdkJQRkJKSVl3Sm1zZWFKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpBSkpKQkpKSkpKSkpKSkJCNkpSTDVmX19fX19fX19fX19fZmZmX19fX19fX19fXzdfXzdfX19fX19fX19fX19fX19fXzdfN19fX19fX19fZl9fX19mN19fX19fN19fX19fX19fX19fX19fX19fX19mX19mX19fX19fX19fX183X19fX19fX19fX19fX19fXzdfX19fX19fX19fX19fN2ZmX19fX19fX19fX19fX2ZVUlNiRkNmTHJiYVpaa2liaVRpYmJVYUtjU1NTZlNkcldMSkpKSkpKQjJ6a0lVSVVGNGdQUDlUSmZpNmFTS0pKY2Q0RERuSkdNaXFhTjVUNlc4Ql8zODFSSVlKSU5BQURBQUFGQVlFSEhEQ1FaREJMSmN2SEFKSUlJWVFBSTU3bnZiWHZJVjZJV0JKVmt2NGpmQktfM0R4dW1DTElNQWttOHZlRVM5a3FBajVBSTV4U19hWFR5X3ZvWWZqQm5pYXRBeTRsSi01VElVLW5kOWN2YjdranFKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpSSkpKSkpKSkpKSkpKSkpKSkpKSktKSlg4XzVCSkpKSkpKSkpKUkJKSkpKSkpKSkpKSkpKQkFJQVpCSkpKTEpaWlNhTFJSWkpTU1JSSkpKUkJBSUpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSklDQkh2Q2huQ01fQWxXbjg4TF84Q185YWlGNW1jVFNrVlc1TWY5SG5ybzNiaWZiajlrUDctLTROR18zcl9YejhVNk5KSkpKSnhPSkpKSkpJX0xfN0JKUkpLSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKQkpKSkpKSkp4V0xKSkpKSkpKSkpKSkpKSlM2RUJYZmhIblRIaUpfX01NT0VFWlFJQTlmazhhYjdGRzRyNTRfOVBfNTRfbC1rSF9zOS1jVFM5Ml9TZnNjM1ZLSFJSXzY1dl9TN3ZINFNLNlY1WDdxUEhZYmJiYjdkX1FYa0tQV19NZkRXV1M3WDZoX2ZUcXlQNmxPT21tazhtUEtLUUNPWl9FQTQ1WUlSUkJJRWdBaGJYVUw1bWo3Y0pmNHJpbjd2SjR1OVhIRm52OTl1OV9fb3VkRTdxU1hTUjVDQURDUklKSUNNS0lLSkFMS0NZSkFMQllKQUxCWkpBTEJESklESkJEUVJSSUpZSUpZSUpZSUJaSUpESlJJSllCSllCSkJMSUJMSVlTSUNMSUpLSUJMSUJBYkRaUkpBWkJCRFJCQ0xCWUJKVEJLS0JCTEpJS0JSSkJZSkJSSkJZSkFMQlNRS0NmQlpRQUxGU2tYSlNLQ0lKSkFJSlNLU0tTS0pKSlNKSlNKSkpKSkpKSkpKSktLSlJTS0tMUktSU1NTU1NTU1NTS0NRQ0toSk1wbzZUV250dzJmSFhYdThsVkdfYUZBbkJIQlFQaEVNQ0NJS1FDUEtoQ0FEWDB2TnJIUGRKc3VmaGRvUEhJZldpZUxYUzRfWGYzYmo1REtIUHBrUUhKNjZDWGFfOTFtNWJRdnZqNzBiSEpKS1FLSjRCS0p6UFNLSUlZSUFKS1JxS1hLNDdCRDhuVHRWZWxtSjlic2libmZLNjJhUTVNWVVTS1NRUkpTU0xRSzlBQ1NTX25ZSEtKOV9MQkJKUVJJSU9NTExNUlFRSkJLS1NDS0tTU2FCU1NSSkNLQ0tTU0tLS0JoUkpCVFNKTFNKS0tLSklJQkJaWkpLSkpKQkpKUkpKSlNSUlJSUlJSUkpKUkJTSlpKU0tKU1RKS1NLUktLSktKSkpKSkpJSUlKSkpKSkpKSmFKSkpSUkJSSktLUkJSQkJSSkpCSkpSUktaQkpTUlJSUlNKSkpLTEpKUkpNSUlKTExCSllKSkpKSkxKTEpJWkpKSUtLS0tNTElJSnBaSklLSVJKSktLUUlSSkpKSkpaUkpKS1NTS0pKS0pMSkpKSkpKSkpKSkpKSkpKS0pKSkpKSkpKSkpKSklja3QxazZQeVg5NVB2Tm1lVXI0WDQ4SFZtNm5HVTQzclNISDlrOWN6OW9vTUhmRHZoXzRpcEVvSl9zUjlQZnMwRC1aWlNTQ1JKbklBREFDSUJTQ1lLSDdfUlNIdl8tUFhhWlFSa181NTdlZFBzRGxYa0V5REtfZEJCX0FUQkJIQUVSWlBBSUJJUklRVGFYYXZlV2hOZWo2WmRhaTZfWEpMdlc0WkxFNG44WUI1X09QODY3OWxpOW5feVhURUNJSlNKSUtJUkpJSktsc0xJSVNnY1FRUXNjM0Q5a2xWX3ZjbjhOSmF2cjVmZFhxU1lFTV92SjVGdmRmYkxmdi1rNWpzRi1sOWhCVV9NSnY5VkpKck1KNWZfXzhfdWNpbEVsazl6Zl9kZFVubjRxYUhfM212WmpUN2JtVXV2SGhpYjZEX1lBUlJaUkI2M3o0ZWtEZk12ZG5ZSUNSOWZkc2ZKcFE4UFBYUzZKSkpKSkpSSkpKSkpKSkpKSkpJSkpLenBtUkk1TkpKSkpKSlJKSkpKSkpKSkpSUlNTU0tKSlNSU0pKNTM1Y0pKUkpKTUxqY0pKSkpKSktKSkpKS0pKSmg3WGs5UkpKSkpLSkpKQUpTSkpKSkpSSkpKSkpzSkpSSkpKSkpSU0tSS1I4OTFiLW1lWUtKSkpKQkhjTkpSaHdpel9Ybjg2OUtLU0pLWkpaUkpKQUpLTUlaSlJKS0pLSk5KSkpSSkpKSkpKSkpKSkpKSkpKSkpCSlJKSlNLSlJKU0lvX2s5alVVNjY4ZnZ2a2xqbWVqUDViTVJjZ1R2OWNSXzlKSkpDNFBDWDZISGRUQkJqTlFKQV9uZm5QNUpKSkpKSkpKSlROVUpoQ0FQYmdKTFFDUUJKZmhBUDR2S0pSSkpKSkpKSkpKSkpKSkpKSjVKS0pKQnE1T0pKSkpKSkpKNUUzWEtCX0pKSkpKSkpKSzZOSko1VFJvMUNIM19KUkthWkU0NVY2X0JKWkpSSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSko0S0pKSkpKSkpKSkpNSkpKSWJBYlFBQUFDSkpKSkpKSkpKSkpJSkpKSkpKSlo3OFVmNzhtci12YUduX2NKSkpKSlZCVGdDSHxITk9JSEhISElKSkhMSVhIUEhISkpISlFISElLSEhIS1FKSUxMTXFCVFFISUtKS0hMSEhLSUpLSDhCZElIVU1USklMSElOSExITktRSkhOS0pKSkhLSEhMS0hLS0hKS0hJS0lISUlOUkhLSkpMTE9RTUpSSE5ISVBISklJU0hJTE1MSElmTUlNS0pISk1ISkhJSklJU01LTE1JTE5TTkxJUEpLSExWVFlMSElKSlFKS0xISlFMTEhLUE1LUE5MSEhJS0lIT09MSkhKSkxJSVNKSEpLSUtJS0pVUkhJSUhLTmFoREhKT09LTElISHBDSUhJSlAyQ0pJVktRSUpJSUpLSUhKSUkxQ0lKTElMS0lUbEJRTlBIT09KSElJSE1ITUlITEhJTVJJTUlJS0lQTUhISUlMSkxIT0hMSlBWTUhUSlRJa0JMSU1tQkhMSktIS0g3QkhLVEhTSUxRSE5ISUlmSUlIV2hCSFdSUEtJSE5KSUlOSktUTUpISUhITEpISkhITUxLSE9JSExPSUxOVkhJSEhOTU5IS0xOSUxPTEtJT0hKSExISjNEVUlPUGhCTk5ISEtJTk9OSkhQTUxNSU9LSkhLT0pQSkpJSUhjSUlIS2lCSlNLT0pRTExMTk1LSE5KSFFKUElKUUlJSE5JSFhLSUhJSEhISUpKS0pJTktISFZJSEhKSUhLSExJSk9PSEpIS0pLSklKTEhKSU9IWE9MSUxOSVFOSkpjSU1LSUhKSU1UUEhIS0tIbnpCSUlLTElJSEhPSEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhOUEtUSk1LTElLSk1MSUhUUUlQTEtLS1RPU09LS0tIT3dCTEpIUUpWTkpNV0tMSEpLSUhLSU5LTEhISEpJTEhKSUhISEhISEhRSUhJSElISEtwQklIUEhJSUhKVkpOTkxLU0lIU0hJSUtJTkhJZ0JIZU5OSExQTkhNTElISEpKUUhISWJLUUlISkpKSElOSW1CT05OS0hLSU1ISklISkpJUVVJSUpMSEtIUk1TTElrQkhPTElLSE1JSElKSkhISkhTSEhISEtOT0lJS0lISFBKTE9IUUlOTmNIUkhIcEJVUUlMSEhISUxIUU9STU5MYkhKSFZUSklMV05JS0xJSFVRSXZCUFdIT0hKTUpJdUNVTkhOS0xKSVZUVkpISUlJSEtIUEtIVFBJSUlJS0hKS01NTVBUTEliakNLUlBLSUlJSUhJNEVSS01IS05aSUpLVEk5RE1ISEtMSEhYSUpQUktJUU9IUElYSFBLSUpIUFFNSEhKUEhJTEhITktRSFZLTFpOTGFOU0lISUlJSUpNSUlJSUlKSUlMUEpISkhJSkpPTUpITEpIS0lKUEpITEllSEhJSUlISVJjUk5jTkhJSU1MSFFUSE1KSEhJWVZJSllMSkhOSkhIS0hOSEtJS09hSWlCS09OaUJNSE9hTkxISVdLSzRCS0lJSlFJU1FMSEhLSkpKSnxCQkJDQkNCQkNDQkJCQkJDREJCQkJCQkJDQkNCQkJEQkJCQkdCQkJFQkJCQkJUSENCQmRCQkJCQkJCQ0RDT0pESGNCQkZZTWRCRFRXQkpGQktCS0JGSkJER0JDRVBGT09EQlJCQkVCQkNEREJCQkNCQkJGR0JFQkJCQkN5Q1RCQkM3Q0JDOUNCUkJCQkJESktCUmhDQkJDQkJCQkJCQ0ZDQkJCQkJLQ0JGQkJCQkJCQktWQldCTkJCQkVCQ0k2Q0JHT0JGRllZT05Pa0JCYUJCQkJTRENJREJKQkJCREJCQkZEQkJCQlJYR3BCQmlCSWRCdUJCREJCREZVQk5DQldkQkVNREJCcUR6REJCQmhEWnZEQkJCRExOOEN5REJDQ0RMTjhDMERCRUZWRTdDVDNEQkJHRkxKRThDNURCREdDRExKRThDN0RCRkdDRExKRThDOURCTkZMS19DZ0JnRUJCUEZMS19DaUVCU0ZMTjhDa0VCVUZaQjZDbUVCQkNDRENDQ0RDQ29FaURCQkJCQkJCQnZCTUtCY0JKQnhCM0VCQkJzQlVZQlNCQkJFQkJCQmxCRUJFekNCQkNCQ0I2QmVDQ0JDQkJCQkJCQkJCMkVMQkJCREJCSkJpSUJCQ1d1SEJFQlVCQkJWQkI0RkJqRUJCQkRTaUZCZ0JCS1MtRUJCSFNpRkI4RkJJMUZkQkJvR0JCQnpJQkJCQkJCQkJCQkJCQkNDQkNCRUNCQkJyREJCQkJrSW5FbEJrRUJ3SUJCQkR2QzhCSW9FQkJJQkIwRTJFRUZHRzBFQkJCQkJCRkJGREJCU2xENERvSjNJWUJEcElEYmhKQjhJbkp2Q3dGLUlCQkJCQkJCQkJEQkZCQkNCREJCQkJCQkJCQk9CUEJRQlJCQlRCVUJWQldCWEJZQlpCYUJiQmNCZEJlQmZCZ0JCaEJCaUJCakJCa0JCbEJCbUJCbkJCb0JCcEJCcUJCckJCc0JCQnVCQnZCQndCQnhCQnlCQnpCQjBCQjFCQjJCQjNCQjRCQjVCQjZCQjdCQjhCQjlCQi1CQl9CQmdDQmhDQmlDQmpDQmtDQmxDQm1DQm5DQm9DQnBDQnFDQnJDQnNDQnRDQnVDQnZDQndDQnhDQnlDQnpDQjBDQjFDQjJDQjNDQjRDQjVDQkJCQkNCREJFQkZCR0JpREJqREJCQkJCQ0JEQkVCRkJHQkhCSUJKQktCTEJNQk5CT0I1REJCQlBCVEJVQkVCQlBCV0JnRUJoRUJpRUJqRUJjQmRCZUJmQkJnQkJCaEJCQmlCQkJqQkJCQkJuQkJvQkJ4RXlFckJCQkJCQjFFQjNCN0NCQk1CQnhCbURCQjVFQkJQQ0JCTEJCQkJQQkJSQkJUQkIxQkJCcEZCQlpCQmJCQmRCQmZCQmhCQkJCakJCQm1CQkJGekZCQnFCQkJCQmpHQkJ2Q0JCQkIwQkJCQkJ1RC1DQkJDdUQtQ0JCQkJCQkJCM0dCQjVHQkJCQzZHQkRCRUJfR0JCaEhCNURwREJCdUNzQkJCTXhEUUJZZGpCQk5sQ0JvSEIwQ0JCQmhFYVRaakJCQm1FUFlSRXJCQkRySEJDQnRIQkJCQnJFV0JKQ0NaYVNCQmJzQ3dCLUNCMEhCQkIzSEJCSHNFTk5EQlNCekJCQnlGckNCQkJCQlpRNkd2REJCd0RCc0JsQ0J0QjhEQnFGQmdGcERCdEhKQnpHQkJCQnNCNUNlT2hDSlVpRUJCQm5HbkJCekl6SUJCQjlEQkJCQjlEM0JCM0lCQkJCQkI4SThJQmlDNkdCMEduQkJ3Q0JtQ19DNERCQndFRTNCVEVNWkJuQzZHQkIxRThDQnBDQkJCLUZDbUpCQkRCQjVIZEJpQ3FIQjRFSUJCQkNCa0ZuQ2hFcERCQkJCMUpCQkI0SkJCb0l5QkJtRkJ2SFBFdUZCakNCb0hWQnBGc0JMNUNDcEJDcUZMNUNDLUpCQnZJWUJCQm5EQkNuREI2Q3lCNEZCRW5EQkJHbkRCdURCdkRCSm5EQktuREJMbkRCekRCQkJsRFE1RHhDQkJCQl9CQkIxS0IyS3pLNUgtQ0JCektCMktCM0pqQkJoRTZHQjJHWlVCbUlXaEJEQmdDaEMtSUJCQkJfS0JnTEJtSS1DQl9LQ0JtTEJpTEJsTEJCR0J0SUJCSkJyTEJ4SUJ5SUJ6SUIwSUJEMUlCeExCeUxCekxCMExCMUxCMkxCM0xCNExCeklwREIxSUJuREIxSXBEQjJJcERCM0lwREIzRUJCMkhHRlduQ0I2RTRGZEJpTUJzSTZEQkJ1STZEQnZJNkRCd0k2REI1S0dQNEtIMEpqQmJvSnFKSmhCX0tPMkh4RjZHQndEOElCQkIxRjhELUNCQkJ4S1BZQkJCM0o3Q0IyTUJzRnlCMUZCQjJNQkJCQnFEOE1CekZCQmxKQkI0SkI1SkI2SkJCOEpwREI5SkJsTkNCQmhLQko3Q0RCaUpuTkJyTkJzTkJxTkRCck5CbUtwREJuS21EQnNLcEQyTjVONk5nSzRONU5CQkJCQkJCQkJCQkJCQm5KQ0JCX05DQmpPQkI1S0JDQkJ6RkJHNEdvR0JCQzJOQjBMckJEQkhFbkQ3SEJpREJ4TkI1TS1EeUlsQllCX0R5SWxCWUJCQkJ6RnlFZ0JwRERCQnJObk5sTkN6TnRMa0REQnpPQkJFN0JzRnlCdkNCMU9CQkJ5THBEQlJ6TEJrTFFCbExRQm1MUUI4RDdIQjRMcERCNUxwREJxTFFCckxRQnNMUUJpRTdIQmpFN0hCa0U3SEJ3TFFCeExRQnlMUUJvRTdIQjBMUUJxRTdIQm1NcERCQm5NcER3UG1JcE1CQkJDQjFIeVBCelBCMFBCMVBCMlBCM1BCNFBCNVBCNlBCN1BCOFBCMkJ5QmlEd0V1RXNFa09qT2hPLU42TndOdU43RTZQQjdFMkVsT2lPX043TnlOeE52TjFFeUVCd0V5RUJ3RTFFMUVCQnpFeUUzRTBFQnlFOVBCQmlRQjRCeE5qQl9FN0hCZ0Y3SEJmZWhGN0hCZWFZX0xwQm9CbkJqQmlCaEJkY2JacU1fQl9CQi1NcEQtTXBENkxCQkJ6QnNLUUUyREN6QmhLQkJCQkZ6QmhLQkJCcFBVNk1TMEM0RkJCQkJ3TkQxQkVJTzBRQnJKck9CeU9CbVFCNFFCNVFCM0ppRUJ3T0Y0SjZEbUREbE9XYnBQYzRRQlRwUTVDbExuR25NQjZRaktCME9YUUliQjhKZ0hCN1FCbks2R0JCQmhSaFJoUmhSaFJoUmhSaFJoUmhSaFJoUmhSaFJoUmhSd1FfTmtSQjlOQm5EQkJCMllDQkIzWUNCQkJCQkJCRDVZQzhHMmJCMWJDQkJCd1pEQkJKaFpDRkJCQkJCRkJCeVV6R0JEeVpDQjJaQkJfWkNCQkMyWkJCQkNCQjdaQ0JnYUNNQkJCQkNCQklCQkJJQkJCQkg0V0JCQm9hQkJCNmJJQkJCQkhxYUlCMWFCQkNER3lhQk5QcWFJQkJQQkRHQkZHZ1B5RWlMckZtQ2pCVUJCQkJPM2FDQnFiQ2dXQkJCcUM0VEJCQkJCRWJiMVpDQkRCQkJCQkJCQkJEd1ZCQkJDQkJCQkJCQkJERUVDckJuYVNXdWFDNlhCQkNGaFdqRUJGQkJCRUZHSUJMQjVDMVpDQkJCOGNDQ0JCQkJCQ0JGQkNDQkRCREJCbmRQQkRCQnJkQ0JEQkJCWU1zRGlaQ1pXOEIzQkZCQkJqQkVCQmU2Y0NCQkJuRTFaQ0JCOERCaWVDQjlFQkJEQkJCQkJHQzJDc0xyS1M2RXFZRkJCQkJCLUNKVXNCaEs4SUJCV0JCQ0xKQjBPQkJCQkJCQkJEM0YwYkJGQkNCRHJoQkJIQkJCcWVCMGRDQjFkQjVkTm5lOWRqZkZsZkJfZGhlZ2VCMGRCQ0JCQkJQSER3ZENNYWdDQkZqQnpkTURVbkJ0Y01EVTJESEJCQkJCQkJCQkJHQkRCQkJCQkJDQkNCQkNER3FabEItQkJTQkJCRlhHSEVHOUI1RFhIQkJCQ2tlOUNCaUNDRkJCaUNFakNCQkJCRUJGQkJCcUJERGpCNEJ1Q21LdlBDQm5TQkJCQ0NCQ0JCQkJDcE9DeUMyRkJ2Qy1FVEhCQmpoQkNnSUJrZUJwUHhCd0NCQy1FRkJUbVZCQkZCQnNoQkNnQ0J0SE5UaVpDQkI4UjBQQ0JCemhCQzRCbUdCQkJoR0JCblNwUElDQnVqQkJCQkJCQkI1ZDZGQklCQkJCMmRpREJNdWtCRUJCQkNCQm1HdUMxWkNFQnFpQkNISkJEQkRDQ2dlQkRIQnFpQkNCQjJpQkNCNGlCQ0JDM2lCQ0JCQkJCQkJDQ0JCQm5qQkNCMkVsT0NCQkNCQl9sQkJCQmxKQkJCQk5FR05waEJwbEJCQ0JFRUJCQkJCQkJHQkJKQ0ZCQkNCT0JCQkdCRnZjcUcxQ0IyRzVEMVpDbmhCQkJfZWdJQkVCQnBLT1NyVUIyZUJ5ZWE5SjRaTDdDREJCQkJEQnZrQkM0Q0Ixa0JDRkJCQkZDdWtCQ3RLQkJCQkI3a0JtQkJCQkIta0JCQmpsQkJtbEJCQkdCT0NCQlJCQkJCRUJEQ0l0S2pCRkJCQjFsQkJDcG5CQkJCQkZCQ1dUQkJCQkJCQ0JPQlFCQkJDQkhJQjFDQkJCQkNCQkI3b0JCQkJEQ0lsQnJCUHhmUEJCQkJKOUNCcEJFQnJCRUJ0QkJCdkJDQkJDQkdDQ1ZCN0I2QnlCWEJ0QnNCQkJCQ0JCWURJbkJCS0xyQmxFQnlCekIzZ0IzRDdnQjZEUTFEb0JCQ0JCQkNfRWtjQmpFaWQ0RUJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkdCQkJCQkJCQkJCQ0JCQkJaRm5CQkMwQkJDX3BCNEJwQ0JCQmpCVjhrQkJ5QjZCQmdERHZCQkVDQkVfcEJtcUJCRjRGNWdCZTdDd0ZpZEJCQmxDREJFSzJGaWRCQkJJQ2pxQjhwQkJCaUU3Q0JCQkJFQjFjQ0NDQ0NDQ0NEQ0NDQ0NDQ0NDQ0NDQ0NDQ0xCTEJDQkJERW5DZ09NTUJCT3dERkR2QnpmQkNDRUZCR0JHQlBCQ3pqQkRCT0djQkJCQkJDRFRFQmtiQkJCQkJDQkJCQkJFb1JCR0JDQkJCR0JHR0JQN0w5RkJCQnpEdUhDZ0JCekd0SEJCQkNCQkIyRlQwSEI5RlBCQ0VESkJIcEdCQkJDSmlHQkJDSE5GS3VFRUJCSXVFRENFMUVCQ0YyRWtDQkIyQkJEQkNEU0NCQ0RQYmhDSWxFN0ttVHdEeUVDakJ6REIxZ0JCQkJ3S3lKQkI3Q2pDOE51VTBGQ0otSHhLd2FCQkMxUEVCQkVCbHRCQkNsQmdIZ2xCQkJCQkJCQkNWUEJCQ0JMMFNCQkJFQ0JCWjFIdEt6YUhGRkMxSFF2S0JKQjdCbElCQkI2QnJFQkVFbklvbUJHQkJJbklvbUJIQkNJbklvbUJJQkRHQ1g0dEJtdUJDQkRCX0I3SGdCQkJCREVPRy1TcUMwRkNCaENHakN4Q0NFZ0NFMEdCQkJKWUVZQ3pFd0tfQ21iUUVCQnFNLU1CQkJCNHRCSkVCQnZ1QnlzQkRCQkNtb0JCSEREREdCRTVzQklEQkU2c0JLR0J2dUJCRjdzQjhLQmdCQkI4QzJCOUNzRHlIdUQwRHhGZ0JGRkppTEJVQ0JCRUJDQ0RDQk91QzFGREt0RE5CQnNEREJESmlHQ29EQzdFQkJFQ0lHRkRnRWhEaUJES05pRDJFckNVQkJGSjVIakNzQnhMakV1SEJ6RDFFR0JDREhDRkJ6SURLQkVCVENDRkdJc0UxRW1CakpzYkNtQ0JGWDZLM21CeUJCUkNGQlluS3ZrQkNCb3dCQkJod0JCQjlMdmtCQ19KQkJDdkZqRUR2QkJCdEJEekJDQkJCTWlCa3ZCQ0JDRlZIQ0IxS0RHQmpKMGRqREJUN0NDZ3FCckUyQkRwTEJCQkNUTU9FeEoxbEJCVjJMLUpES2xCYW5CQkJCakJJaExFWENER0pEdExCQkJIQ1BpQnhKMWxCQkNoQ3ZLM21CTDRCMHNCREJCQkJHRkMxd0JDRkJFa0JSNEpCaEx6YUNCdkx1REJCdkw4QndjaEYwRUJ4RWpIQkJyeEJDQmtzQmxzQkJCbTBCdHNCQnFzQkJCRkZrSmhqQkJHRnRFM0VoakJoTEJ1SndDcGVCd0pCd2lCU0JDeXNCQkJDTXZFNUVuQzJnQjNDMEVDQkJzSXNwQkNCQkRCQjhLNG1CSUNCNUtrRHVKemFDclhCbUZfQzhCX0RvSi1hQjlMV054S3dhbUJtWENKQ3dVZ0dCQkIzRUJCQ0NWOEVFcEJ5bkJCQkNGQjBFQkhCQlpyR3FCZ2xCR0JEeU1RRkNCQkM3TW9tQkVCQkRDN01vbUJHQkZDTG5FcElvbUJJQkhDN01vbUJIUkJHUml5QkIySndPN2EwSUVsWUJCQkJ0QkMwV3ZVb0dDQjNCdkV6RWpCdEJnQzJqQkN3QkNnQklCQmdCSXFKQnFHNXNCQ3dCQnlKeXBCQ0J0R2dKNWpCQ0NDbEJCQkNsQmtGaEZCQkNWRmlFN1RCbUZjbUQ4SDdFX0NtYlFHQ0JCQ0JCNEdydUJCMHpCQ0I4R3VFRmpCdEI4QjZqQkN3QkNSbEJJQkJSbEJJQnVDdE5EQkJCQ0NGS0hJQ3VCQkJDRktISUNyQm1IekNCbUNMeEhrQjJvQkNGQnlDcnhCQ0JvQzNOX2pCQzJCQjVCRHhNQm1aQ3hhSTVCQjhCRHhNQkJCQ0NCdEJNMFhCd0dTMUZ2Q0J0S3phQ0JCQzRGX0dEbkNCQmdPc21CVUJCN0JCaUhCQncwQkZqSEJCRGhHdkdEQ0JCMU1wQ0IzTWxFQkJCN0JuQjhFOUU2SXdaQy1CQkdCQ0VzdkJ4RkJvYjFaQ2lJQmhJMkdCMUJCekJ4R0J5QnhHME9KbElCa0luSEJxSG5Jb21CcEhCc0hwVHFIQnRIdnVCckhCdUh6QjBHb21CQkI2M0J0R3hHQkRzR0JCQnJHQkdIQkdEQkh2R0dCd0dHQjFHQkRsekJJQkJDQkNFRG1FT1BiRURCQk5CQkJ1WjlDdFdCRUZrSHNINk5CQkJRQkREQkJCQkJCQkp3RWdOQjBENERNdTFCNzBCQnJCQjkwQkJZRU9CQkJDQ0U1MUJCQkczVTRnQk9MMTBCdkJDREJCQkJKenZCeUVCQkJEQkJCOFc2YnREQmlEdDFCQkJ3SUJEbHlCcVFWbGRMN2NCQkJCQkJCLWNMX2FCQkp6eUJCREIxZEJVd0lCQkJEREdERzhjc004ZDFkQkJJX2FCQnhKeUpCQkJDREJCRF9NSDNOenRCU3d6QkJ6VnVCbzFCQkJ2Qm8xQkJCQ0NDbkJlbVRDbFltRERCeFY4VzBCWmpTVWxGM0I0QmpCNVFCQkJCQkZFVFNYcFNUbkMtQzBVQnpVQndhNUQ4VTBGQ0JvZTZhMFUzS0ZCeGVCQ0JCQkJDcmFCRUp4Q0ZFOVVvQkJCdmYwQkJDQnZmNVRwTkJCLU1CREppR0IzTUM3RUJCSG5KR2xEMUJDM2FyRm1ERGdQQkJCQmlPSVFFN1VCRUJCQkJxQklzTUJDT0dDQ0JCdUNnTzFDbzFCQnJCQkJJRkN1TUJyVkJoR0JJX0VCbWZyQnZCX1dwZUI3Q28xQkJyQkU1Q3dUdEJCQkJCQkNWUkVwQnpUSHBKMEJCX0Q0VjNLRTlXQkJCRFk2Q01CaUJ4QkNCQkJ5QnFlbGFJQ0lCMTZCSUJCQkI5UHFRQjdDdWRCQjlDNk1CQkJCQ0JCQkpEQ0JuQmtCMU1vbUJVbWlCQkJON0J6VnBLblREQkJCUUxCZ0JsNUJDcGZCcmVNZ0ZpdkJ0QkJ1d0JMNUNCQkJDeGhCelVpRkNCOUVDQkJzN0JDQkltN0JDNVFxUUJCQjRDZ0JpZTFaQ0JCQkJCQ0J5NEJCREJ5NEJERUJCQnAtQkNDQ0JCRERCQkJzWXZqQkMxaEJ4TzJoQndPdlJxUUJCQkJCQkNCcUIzQ0REdk1MZ1NfTVpCQkNEdUVEdWR6RkJCaEpCbEVGUDFNaFdCQmhpQjhTaWlCNVNCUzFEQkJDREJCaU4tTkNvRndJQm1pQjlScVFINkIyQ0REdk00RW5OQnBRQmhTcVE3RW5OQnBRMUVIZ054YXpHbkJnRnVkQkJ5UjRhNUVHQkdHbVpzT0JCQ0JCVXVzQlNOa0RXQ0REQkdHME1CQmhHbzFCQnBCQ0JCQkJCQklfQjlDREVNME0taUJCQktCQkJEQkJCQ0JCQkJDQ0RCTk1zQkdYUUVKVDRVN0kzVkJCbURtNkJDQkIzOUJCQkJCdWJCQjJiRUJCQkVnSGhXQkJDdEgtYnVIQkJCQkVCRUNIM1czTkdCdi1CSEJCT05CQkJDYktCQkJIQ0JCaUJuU25TREJCQmhCblpCM0tZQjBrQkJCNGRCQm5sQlo4WUNuX0JCQlJCUEJpQjBrQkMzZ0JCQkIyZ0JnQkJmQ0RPbEJCQkNHSUJaRkhpakJiV3pfQjFfQmNCQkJCYndsQjZfQkJCQkJERUIyX0JvYzVCMEI5QkJCQkJCQ0N2QjZqQjBCSUJCQkJwQkNFM2NCTkhkMC1CQ3ZnQ0JCeUMwa0JDQkJDQlhGMl9CRVVLYUJCQklxQm5sQnpVd0J4QkJURFp4Qm5iQnFpQkNqQ0JpQzJCMGpCQnlpQkJDMUJMTm9nQlJzRFBaOFlDbkNCbUNPeGtCWC1ZQzhCS3ZEQkI3QkpCUnhrQjFaQ0JZVTVCNWtCREJCQjJmemhCbkJCQmtEX2tCcVoyQ0IwQ0JpQkNsQ29EQkJCbENobUIwREJCZ0M4NUJDN0s0RDViQkJCNUt4VURCcERIQk85V2tHQkJCQ0JFbVdockJCTDBETXNmQkJCQjNmQkJCRkRCNERDTGpqQm9CQkg0ZkJiQkJCQkJOQkJCQkhxQmxoQ0JCbkUwLUJiRm9EQkJCQlB1aUNnTnpCTkNFSG1CTWptQjVDNEJlQjY5QmxIRF9rQzdNQkJCQnlrQ0M5WDhSQmdCSUQtZ0JCQkJCQnFCQkJCNmpCSUJILUJ2akJDdk1CNVkzQkIzZlFSbkJQU3NZb0dIaFVCQkJCQkJCQ0hCVmZ5akJJMEVfTzdDRHg4Qnk4QkNvNUJNS0lyOEJCQkJDVmdtQkJ3VEw3Q0RkQkJCRUlCQkp6Qm9Tck1yRkRDS0JCQkJJeUJfakJqQkJaSHFCQlZCREJKQnRCVUd1b0JvTmpIT1ZMQkJDVk1CQkNWTkJCQ1ZPQkJDVlBCQkNWUUJCQ1ZSQkJDVlNCQkNWQkJCQkJCQkJCVkhmTlRDQkJLQlJCSjhCNUVweEJqSEJUQkpCdEJVR3VvQm9OakhmVkJZS0RCQ0NDSHZsQjhSc0IzRmRCQkNWZUJCQ1ZmQkJDVmdCQkJDVmhCQkJDVnNCQkhIQnlCRkJCQkRCQkJETUZIUEN6Qi1Xd2dCTC1DdUNnQkVhQkJPUU9CQ0VMMUIyMUJ3RXdDdkRCbkNIaEJKRERDQkpyM0JzQjNGQk1MVElTVEZLRERpNUJtRG1CRkhDQkRCQkRKQnEzQnNCTHNGSWZSQ0NDS2RpN0JKZlJDQ0NLZDBwQnVSNEJERUtCbVl3Z0JCOEJDbEJDekJCQkNWMEJCQkNWMUJCQkNWMkJCQkNWaEVuTEJCQkJCWFVSRExraEJCUlBuQ0ZFNkJCQkNWQm9CTURLQ0NCQkJCQ0RqZ0JGckY4UnNCTDVDekNCQ0hDQkJCQkNDTERCQ0NkYUx2QkJCQnZFZ2dCMWV6UGlES0JCdkJDRkRFQkRDRkJDT0JZTUZ3aEJuRGxCQ0JCQjZFdEJCQjRHMG1CQkJFX0dtX0IzZkRLbEJsYzBKamJqaEJCLW1DQnpqQ3JjQkpCQkNCRUM1SThQaERtRFhvZnJYa2JCNGdCQmxaQkI1QnNFblpCNEJ1RUJCQ21icFpCQjBCeEU4YXZoQkJCQkNzWHRabkdGQkJFRkJDRzZnQkJCTkNCWHhnQkV2Wm5Hd0JGdlpuR3dCaEIwWWpFa0NCQkJCRU5JOW1DQm1INGdDQkI4aENCcUI1bUNsb0NCQnFJQkUyX0JCQlNCQkREbUlCSEIyX0JDR0REQ2tCRWpHVUI2QjNHSEJDQkdEQ0RlR0RpR1dOcl9CQ0pCN0I1STBrQkNoSV9wQ0JCQ0JJRDJIVURFQkV5QjVrQkZ3YUM4UjAxQklSRnJIVURfS0JCREw0QjVHRERCd2xCQkRFQkdORnBIV00zZUJya0J0a0JDQmt2QjFaQ3ZJQmF5SHVnQ0NYQkVPRWp2QmlaQzU0QkJCeXFCQkl0WVNpRkNEQkIzUXZMb0JIRkNHQi1mQk8yQ0NEX0hCQkJCOEh4bUJfVVNpRkNGQndqQ1NpRkMzZGFFX1pCcE16UkhHMFF0cENCRzhsQ0JCQ0RsQzhGcVU5QmRuRDdtQkJDR21qQ25HQkxpRzhwQmlaQ0RCQndLbmxCWjZULUxCektxQjJrQjhZQ3dLQkJ1S0hubEIxWkNCQkJvbkMwRURCQkJqd0IwSmhRQ0J1bEJCNkJDRUIySW5WMUVCcm5CR0J5aUIxbkJCRl9RQkJCQ0I1UXRXckVKLUJ1QzhKbEswRkNCaHNCc0UxWkNCMnNCdGRDOW5CdFNCLW5DaW1DQmhtQ3pTQkJFOG5DQ0NEeGpDckVCQkVCREI4VDBUcUJ6YTJEcUZCbm9CRElQQkJCQ01ENG5CdkZNd0NneEIxWkNCQkItcUNCRGpsQzBGQ0JGaWxDMEZDQkZCanBCemhCQ0JHamxDMEZDQklpbEMwRkNqQkNIZTZ2QkJCSEVaQm5uQm5DNkZTdFU4Q01tRU9EQk5SRFA0bkJjUEJEQkNCOXBCanVCQi1wQmlFZ3FCakVFQkJCQkNtU3BiSVdsRGhKMFFDREhCQkJKd3JDQ1JCYmNpb0JDVEI0QjZvQkJDMkJ5ZW9LQjFyQ0NCMnJDQ0Y0QjZvQkJERzRCNm9CQkgyQnllb0tCMXZCQmpjQ3F3QkJCQm1xQkJCaUVJMEJnV1NmbEJ0akI3TXlXQkNCdXdCQkR1d0JCQkRCQkJKQnp0QnZDdUNzVEJCQml3QkR0Q0JCb0NpQ0I3QlN6bkJCcWlCQ0JyVHNXS0IyYzBGQzBoQ0w1Q0NsTFYtQkJCaUxXVXFCcGtCQnRhQzVOQnlMaENGWnBrQjFaQzNoQ0w1Q0JCME5ubEJaOFlDQnpzQ0Nxb0IzS0JfeEJGenNDQkJCQkVCR2lPQklCNUVCTEJCRG9vQkJfSTRCMEIwUllQRFA3eUJ3UDh5QjNTOXlCeFBCQkJDb1JwQnZDSUREdk1MZ1NtUkJFQ1R6TDVDd0JfRGhCZ2RJb0tDcEtCQkJDOURzR3VHX0VEbmRCQkQ4VnZka2FDQkJDQkJGRXR0Q0NCQkdEM1FPekRoQkRoWG1YMWVvdUIxZUN0Q0JCQjlXQjJVQkVGc2hCQkIwTDRsQkRCQkJCRGtQbEI1Z0JsRTFZQ0J1MEIxWkNCN0wwb0IxWkNCQnhNRmlvQmtUcEdDQm51Q0NCa3ZCdkYxWkNCMnpCemFDQm8xQmlaQ0JydUNDeTBCQ0JCQzh3Qkl6RDFaQ3R5QjNnQkJCQkJzQk44ZXZKQl9JM0JvSENfTFlQbEZDeHlCQkJCejBCaWFDdHhCQ0JCQklEOHdCSHBkQ0JsMUIxWkNCQlAzMEJwVHNHQ0JDUDh3QklrQkJqY0NCQnd4Q0NDQmd2Q0NCQnp4Q0JCdXNDQkJtQ3FrQkJ2TXRCTHJhQ0JCQncxQjhYQjRCQ3Z0Q0JCMnVCQkJwdkNDQkNwdkNDQnhVNzZCQ0NCQjVWN09CRkNCQkc0WEJJRTYwQnJhQzRRQkJCQjB2Q0NCRC0xQjFaQ0JuQnd1Q0NCQm14QmlEMEhCQjJ6QkJoQ3dVLXVDQkQzckNCQmdwQzBFaXBDQkJGQncwQm5VQkJOLUlCNXNCNWRCZEZyeEJlbEQxWkNCQm13Q0NreUJlRGl6QkNCQkIteUJCQkJ0VXVlcEN5QmhVU2lGQ0NCQnZ3Q0NCeFU3Q3dkdGRCQkQwWEJDQkNEQmkzQjFaQ0I0d0NDQmwzQjFaQ0RDQkJCQzEwQkJrSEI5R0JCX3dDQ0JpeENDQnUzQjFaQ0JJOHdDQ0JseENDQm14Q0NCeTNCMVpDQm94Q0NCcHhDQ0J5YWpkMVpDLWFCQkJwM0JpYUNCQkNwM0JpYUNCQ0NwM0JpYUNsR0JCakdqdEJKQkJCQ213Q1JwZUJvZTdyQkJCQnByQkVCQkNzbkJLRHNyQkJCdnJCRWpuQkJCQkJSQkVNNHhDQ0JCc3JCREtsQjhIdkNKX3dDR2pVQkNCQ2x4Q0JCQkJCQkJDQzlieVdXaGRXTUxCREpCTjd3Q0dHQjJ5QkJEdnhDc3hDS3N4Q0ZHRS12Q1Y2eENCQkJCQkJENmI1V0RVOGNOREZDSkRNQ0Jsd0NCZ3pCQkJCQ0M3d0NCQkhYMnpDZWgwQmhCQkJCenpDQ2pCQkJqQjB0Q0I4eUNoekNCQjdCcm5DLUMtQjNrQkZCaXBDbkRCcWpCOEhCQkNCQkJqa0JHSEJCQlI2aUJhSkxVcENnbkNMQkJCTkJFdXpDQ0I4eUNCSlBCQkJCQkJCaGE1MUJCbkNzVHktQkJDQkJCOHVDU2lGQ3VDQkJCckNsNUJpWkNCOHpDQkI2QnhhOVlOaGRCQlZzZUJCQkNCQ3FlMVVnQ0kxWUIwQ2dDbUJzeUNxMEJGOUJCekN1eUJCQmdDTDF5QkJCajBDNXlDMkRCQnJEQkJCLUJCREJHQ0MtVG1Dc0JqeEJCQkJCREJDQlFfdUIzeENCOWxDM3JCQkJCMnFCYUV0WUJCQkNCQkJCQkJCQkJCQkJDQnZJWTB1Q0JCN3JCM2ZCQkJCQkJCREJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQnFCQnd2Q0J5Qm1tQjdDRXBCc21CN25CODFCQkJCQm4wQmxleUJCRkJCQ3ZCemNrQmhYbXZDRDlxQ3hyQnN2Q3R2Q0JCdGRqT0lRRUNCbGNDQ0NCN0NxYzByQllFQ0JCQkJ5c0JoRXNGZ25DbUREQkNCQjRkc09RRUN4VkJCQkJCaEp5RnpzQ3BEMEY3dkJCQjhzQjhEc2hCQlR1ZGlPQm1hQkJCQkI4c0NFQkNXa0JERUxVdkI2cUJpWkJrbENCQkJCQkJsdENfQlBGZ3RDakRwd0Nxd0NpdENwRGp0Q3BEa3RDcERyd0NEenNCYkJDd3dDd3RDSlZFcUJEU2d2Q2RWNXBDX3ZDRGdDNHRCQjJzQzRCYm5pQ3FMZWtDd3RDcER4dENwRDl0Qy1DQjBCcXNCLVMxR0JCMXRDbUREekJ1ZGlPaVhCQm9ENUdFQjF0Q3BEb3RCYkJteENzQ3QwQ01CQkJCQkJCQkJCQkJCQkJCQkJCQkJCRENCQkJCQkJCQkJCQkJCQkJCQkJCQkJDQ0NEQkJCRUJCRUJFQkJORGRuTTBQb0J0SWpFa0JoRHJCM09CdUhnbkNtRER2SHd1Q3BEeEh5SGRCMXRDcEQ5eEMteEMySGduQ3BEM0hwcUM0SHBxQ2l5Q0JCQkJCYnhCbXRCOHVDbUR4dENzQm1Ea3lDRG95Q215Q2h2Q21ERDNwQzJGLUNCQkJzdUJCRkNCQjdvQ3l2QkJCN3VCQjlRNGRCZGpaQjR1QkJCN3hCMXlDN3ZCbXZCUDd5QzV5Q0RCN3ZCQy1vQjh5QkJCcERxbkJzRjNGbEZ5ZDVrQ0I2dkNtREQ3SW1xQzhJbXFDRDl2Q21ERGs0Q3E1Q0dCbUVGNm5CMWxDQjk3QkJCQnhHbWJtZkh1RWxVX3dCQmd4QkJoeEJCaXhCQmhpQjhPRURreEJCZzBDNHZDQ1FScERCQkJCQm53QklRRUMtVUJQQkJCR0JCQkJCQkJFQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkRDQkJCQkJFQ0NERUJCQkJHQkJCQkJCQkI4Q0hDQlNCRENEREJCSGNSRUtFREZ4Q3JKaEo0T3NQREJyTG5Td0d4RzJ6Q0NCQjVMMUZGenFCU3VZX0RySVpqQjQ4QnpHb2tCNjVDajZDNjZDNUd5OUJ6OUJCQmpDMXVCektNQkIxVjlmckdCd0ZzYXFFQkdDQ1UyTEJDT0dDQ0JCdUNvTDRDQkNxQ3hDc095UDlKakVaM1FsRXVGdm5CQkJCckJXRHVEd3JCSEhHQ0N3Q0p1RXRDeXFCOUV5Qy1IdENudkJ1RjJkdEJac01HQ3lDc0VPdHNCQ1RCQ0hyQ19GaHNCQ0JCRHJDZ08zR3JyQkNCQkRyQ2dPQkJCMkdoYWtFX01HNFFxV0YzRW1EN2RrRFdJck1DQ0lDMXlCQmtEbXZCQ0JCRHJDZ09CakQ3dUJCQkNYLUQ5ZUJ3NkNieDZDb0lwSWxJQnRCR3ZFdnNCcUVrQnQ5QnU1Q2dKbUI5QnFJX0hCQjdIekJqQ2xGczBCcDdDbkpqT2p3QndEN0RnbkItRXhDOUppd0NCNExCQmlMUzFnQnY3QnJKaUJMUjVFelN4WkIxQ21pQnBCQjRNT0dDeUNqRDJoQmhEMHdCQ0JCRHJDZ09oRDF3QkNCQkRyQ2dPcExCQkJCQkJCQkJCREJDQkJCQkJCREJCQkJCQkNCQkJCQkJDRUNCQkJGQkJCQkJCRkVCRUJDQkJCQkNCQkRsSEVRdUZZN0dJclAwS2Q5QmxDdURuQkJUa0U0RVdyVUc4QjVDcEJYTzFLQkJoTG9rQnB2QkN4S3dXQlM4Qm9GMkNDNnZDNURrM0NEQkJCQkJCQkJxMEItRTF1QkJIbGJCQkJCQkJ0M0JsQkJFaG5Cb0lqRUNDSzZNRmkzQkVCQkJCRTlCTEJvRXpzQlNCQkJCQkNDQzEwQkVsMUJCQkJCQkJxSjZxQklQblpnWkY1MEJDQkJEckNnT0JCQkJwQ01CUkN5UEI2RjlCN00xTUJCSEdFcDRDQnI0Q0J0NENCdjRDREJCejRDQmd6QzRGQkJEQkZCaDJDZzVDQkJCbDJDQkRCbzJDQkdCQkJ2MkJCdzJCQm1EN0N3SkhxMkNuRG1PRHN4Q09EOUN3TUJCQkJCQkJCQkNDRERFQ0NEQ0NDQ0NDQkJTUkMtSkhxSGlVbldtSUJUbVU2VkI1Vi1WOFZCQjZWQkMzakN3ZENCQkI0UEJ4LUNHQm9Ua3RCcGVCQkNDQ0NCQmdyQmxWdEVNNUNyVHFHQ0I0aERDQjVGQ0JCRzBoRENCOGhEQ3hXQndXQjFXNXRCN0QxWkNCMTlCM0tCQkJncENCQkJCREUyTWtrQjdNNkZfRDdCeUo4STVJQnBvQ2dCaU5PQkRCQ0JDQ2pYQkJSeVdCbjhDc0dDa3NCSUJCQnRhSEJERGc2QkJyb0NCdGFDQkJ0bERCQkNCQkJEQkZCQkNDQi1tQ2pjQ0JfbUNqY0NnMEJEd1Q1a0NCQjJrQzRFLU54QzBtQ0JCQjdqQ3FmQ19QQkJDOFBaNWMxRzlOMENhZXFDYnJUbEJyZ0R0MEJCQkJCRGp0QjZMQnVqRENCc2lDamhCQy1tQzRrQnpXRTNXQkJCQkJCOVV3QmdzQl9FQnVDMVpDak5CQi1qRGhzQnpYanNCb05CQjZldFZyTjZlQkJCQkJCQmhOd01oUUMzMUJ0RUNCbmtEQ0JCMVQ3eUJpQzZWU2lGQ0VCRHMtQzBGQ0JGT3VuQ3VDMVpDQjFtQ0ZyZENtYXJ3QkJCQlZobUNqQ3RiQ0JZdW5DamNDQkJadW5DNUYyUTBGQ0JqdUNwV0NCdGtEQ0JpZ0NCMksxWkNCOHBDZTFaQ0I3cUMxWkNCeGtEQ0JCdmlCdGlDQkJCQi1xQzFaQ0JpckNDQkIxaEJCQm5FbGVmcFlCMEhsQkNCQmlYblF5NUIxR0JCQkI5VTlCQjFrQ0JCcG5EZ2lCbmpCREdCQkJEcnJDOVpDQkItaENCOWhDX0hDcy1DQjMtQ0JDQkJ0UTVFdTJCeFNCMUdCMUNGQkJCN3JDMVpDQjhyQ3BYLUJCTkNtQ0JCQjdsREJCbG5CQkN1aENqcENRQkJCQndFaVRQcXhCNWNrOEI0bUJxRHVFM2xDLVlCQkZDbEVvV25xQjlhMEJ2QjhDNGhDXzBCNEVpVEZDRW5FMWxDNlk4Q0JCQkMtbkNCYkJCOWhDOEdCQ1J3aENCNEVCQkJDRUp3Smc0QjhHaEN0QmdCQkJydENaRGNzbENkNVhCQkJCWENFelg2U2lCTzlNLVA0Q3ZTekhDQmhCeWxEQ0JENkpJcmlCdEtfQ3dCRkJCQkJCR2NCdGlDQkk2ZkJEMmpEQ0NpQkRCQkNJYUMybERDMmxEQkJ5UXFCaEYxRkZ5bkNxT0JCX0tCQmpuRENDN3VCQkJCOHVCQkI5a0RCQkNDQy1zQkIwdkJDMHZCQkJuZE5CQkpDRHFKNUc2Q2cwQjRicVRCOElzS283QmlaQ0ItdEMxWkNndUMwV0NwakNCQnBqQzBrQkJDanJDaDlDcERERHBYaXRCQkIwbkRCREJCQ3FYb1g2VnFoRGhoRDhnRDR5QndHbmhEQkJCQkJCeUNDcFYxdkJvWkJCTmhFT0JCTWx5QkJKbUdCRDFOcElxYkJreUJCQ0VCM0NCSHV5QkJCRnV5QmtjMVpDMXVCbGZCMHVCamZpQjJDX1dDQkJockRCQkNCQkJCcjNCeVhUZ1VpRkNCQ3IzQnlYVGdVaUZDQmd2Q3pVaUZDOEJCQjZCM29CQ2dFaGdCTnBTc0hDQmdwREM0dUNCQkQxdUNNNkRCQmdjN3NDQ21DQjlvRENCLW9EQ0JpVW5JbXZCSXpEakN5WENCNWQzcUJsRnBCZ0JCQkNDQkRCQjRyRENDQ0YxdkNEQkJEQ3RMd1BzTHpJbjZCQy11QzlTRDFlckNCQkJOeEJJQ0J3cERDQnhwRENDQkJCSUt5ZC1xQmdESU9NbFc0SUJCSTlvQ0Nqd0N6VUJCQjB3Q2laQ0JCRWx2Q3RCaVpDQkM0cERDcWJCbmJ6c0QxcERCX0J3cENCQi1wREM2dkJCQnh2Qm42QklDQkJycURyZEJCQkloZDVmMFA3WFNpRkJCcHFEQ2lxRGQ3eUJtMkJwVmd6QnFWQkNCQ0NDbmdCOW5CUnNxRHF2Q0JDMFY0Y0JDQkNDQkJON0NCRi14Q3VqREJCQkIydkJjQ0R0QmMyWnJCTWhDZ1c5VkJUMG9EQjBqRGhfQ0JCQkI3X0IyRXBiQkJGQkJCQkJCQkJCQkJCMlhCQkJCOWpESEJrN0JqRjJFcGdDZ0I5REJCQkJHQ0Z4X0JsQkVDMWFCTEhGRDhRcHdCQkJCQkJCQkNGQkJDQ0NLRzdOb0o1MEIwMkNqZ0QzQjlnQ0lRRTJXQkJCQkJCQkJCQjJ5Qm1meEVEaEJCQkJCQkJCQkRfakQ4a0REbmhEUUJpekJrT0lRRXFhcld1NENoSWMyRGxsRDVoRGxDb0JsbEREQnBpRDdDRG5pRF9Dc2lDQkxxNkM4R3NsRHZpQ0J3aUNCQkJtQnhUNnNCWUVCQkJCQkJEQkJCQkNCQkJCQkNCQjFRTk9Mb0RNRFdwZ0NCaUR6SXJCRUhHRzBXQkJURkhtUGhXcU50QndUbkJLa2lDQ0JCRHJDZ09CSmhqQm5hbEVDSEhHQm9JdklfaUNwZUVCQkJCQkJCQkJCQkJCQkJCQkJCQkJFQkJCQkJCQkJCQkJCQnBDMnFDQmxDNl9Cb0R4QmdDLUJqN0JoRjVFLUJpZ0NjN0REdkItQ0VCMUJrOEI4RFNIR0N0SWxJRkJDeEIwUEJxeUJoSkhCQkJCQkZwQnk3QjdGQnkyQjdjNFlfZFM2MEJCaXNEQkVIcGlDd0NDR3c3QmdKbVJDQkMzQmRid19Dci1CQjdsQ0JvakMtRHZHQk84Q0JnRTctQmNnRUJDOUNCRUloREJnREJDVEpDX0ItNkJhcGxCN0NVX0JPQklqV3V1QkIzekJnRmpHZ0pxaUI1dUQ3MkJCQmdCb0drZGluQ1NvakMtREJwREY2Z0NCMERCaEJzRUVnQktDMzlCN0VKckRCQkJCQkJGQkJEQ0JFQ0hCQklNQkJCQ0RrQ1VCbkxCVkJMa0JDQ0NIQ0R0QzJEdEM2TzVISWhCZWhCMUN3SGtEd0J2R3BSQkJCQndUbG9EQkIzekNtVUNCckpCOHdDSmhlQ0U1Y0JDZ0Q2Wmd4QkdrRHFZM0ZDQjFCNkNzbUQxRWhwREJCQkJqcERCQjR2REJsRkJCRDR2RDZnQzdnQ0JCQkNFekJqREdsQmpDc1RCNFkzTExCRHBwQl9GeGRCQl93QnJoQkRCQmcxQ0JDbWE4VzdqQkhzYUJCRnIxQ3dhQkVCREhCQkc5dkRCQjl2RElCQkJxU25qQ0V3YUJCb3dEQm8xQ0JLOTBDQ0ZCcndEQkVzUzhpQ0ZEdFZCQkJCaHpEQ0NDQkViQkZWNHZEQ21HN2tENzJCQjYyQm0wQlNpRkJCQnZGQ0JCQ0RCSmlVdnhCOUpJeUJEREdPSmxZdklCQjB3Q3phZ0lDS0JCREJrRHNCUEJFbkJQYlBHenpCdXhELUJCQjhCQm5DSUxlNTlCX0M4QmdsQjhGQ0NDQkJDcUMybUJndEItckRCeHVCd3ZCTkJpdkJfa0NCQ3VyQnlEQzlrQ0JDQkI2QkJEMkJvQmtzQlBERXpENlMtSUIyY1NpRkNvZkJuZl8yQnFCclVESEM3QktGOXdDU0JCQklZYktGSFQzaENyT3hZQlJnMkJ3MUJTaUZDT0JOMjJDQ0JCUmlDQmhDNHZEQ0I2eERDQjVGN3dDd1ZEU2lGQ0N6Q0JCekNwRFhESXZ0Q0NtQ0JCbUNCZ0hCQml5RENCQkJvVl9DM09sQ3ZaakVDQ1ZfWkJCQkJCQ0JCQkNCdkVFM0JURU1aQkRubkNQbm1EQmw2QjFNQ01LSHJDN1NCMlNpb0NCQjJuQ0NCQkRyQ2dPa25DYUVEdFpCQ2luQ0VGSEdDeUN2WkJCQkJCQ0JCQkJCQkJDN3lEQm93Q29mQkJDQkJCQ0NDQjJFRkVDMFBYT29Rb0JKQnpLclRqQlBvQnVIeUp4SEZIME14RUJCV0JWMENfRUJ3d0NyVTFPaW1ERENTRjZDQkJCQ0VPRjZDWnUxQm9EdlRCdEJIbkRvQ1UzVUtRdEZEbkRLQkJCZUJhYVVLZ0JOcER4RGxLcXdCZEdCaXpEQ3owQ0J3MENCMkVFcXVEQ0J2RW9CQ0JCbXpEQ3Y2Q0JCdDZDb1J6SENCaXpEbUNDQkJsekRCdHpEQm16RElCNzRDQ0JCeUp3VkIxNUJERC1ldDVCZ2JHQkJHbUIyZGFzQm4zQkMyVG9IU2tCWkd0ekRDN0JnQnZoQkJzUXlQd0IyY2pGdUI0VDJjZUJCc1F2UG0wQ0RpLUJCQkJNdlFudEI1MUJDQ0JCQkNCQkI5eUN1Yk5EQkI3dERXU2lGQ0JDbDBEQ3hFQjhEVVpQQ1ZFSDJnQzhtQjhGQzZCZzVCa09JUUVxUEIzUUI1Qjk0QnRCMU1DT0dDQjhYaHhCT0d2akItbEJHRXdRRWlxQ0JCQzlCd1ZIRGpqQnVPQkJDREJDOEJoRm9PbUNQbXhCQkJCVG9uQ2pCNWxCYWlGQ3hOQm5MLUJKQ3RKa0hCNm5Cc3FCQmtrQzdyQjNFQkJsNkNDb2FJQkNCQkRCQzk1Q0I4NUNCQkJCbGZCNUl4Q2xxQmlCOEVTb1NmY2xCdEVDbUM2b0IxdUJ2Q0JCOG9CaXNDQm4xREJqckM1bUJwRF9DZ0RCQkJEeTZCbzZCQkJCeDFEQ0JCckVxREJJaERDRks5Q0JFSzlDMUQ3REcwdkJ0ZjRWU0JDQ0ZCQkNGMnZEQkItMkN4RUJuekQwRUJtSWlEZkRDOEZCQkJDRGU3RV9CaGhDQnRCOW9DWEcza0JhQ0NCQkMzN0M0VWlGSUN2QjJuQ0VtN0NCQkNLNjZDM2FDRnk2Q0JDQ0tnQm81Q2hiRzY3Q0JGS3c3Q0JReDFEQzY2Q0JSbzZDSkJJS2Z5MERDS0JKS3gxREM2M0NCNDNDdjJEMTBCQkJCNTREQ0NDQzQwQkJCRHNJdW5CM0VWckJIbFV4ckIwR0J6R0JudUI3QmtHQkNCc3VCZ29DQ3R2QkJfdkNxd0NueEMwb0NuR2dEMW9DbkdxQkJCQkJudkJHUjFZdEhCQkY0dUJaZ25DQ0JDRnh1QkhNTmduQ0NCQkoxcEI5bUItbEJDQml2QlhDVXNtQ0NCQjgyREM3SWpnQzRGUEJGTHJ2QkRNdmhCeW5CbkdCb2hCQk8xZ0JCREJKcUdzb0JUaEJzbUNDVGQ4R0JCNkdsdkJCQm9QLW5EQ3F4Q0VCV0JudkJYMFlCM0ZQdEJQQkJDSkpHN3VCSXRuQ0NCQnMzREJ1ckNCOXBDQkJucUNDMEhCaExFdXJDQmdxQ0JCcXFDQzBIQkR2ckNGeEZSQ2t6Q0IyckN5RkJDR3F0QzJEQzJqQ0JCQkVEd2pDMEdkMUVCRUJpTjViQkRtOUN6YURCQ3hyQ0JCbnFDU2tJQnRLemF6cENvQnpTSUJIQkdIT2pCcXZCR21aQkJCWWFtdkJEREpCQkVEeXBDa3ZCQkIzcUMwdEJCTndwQzdUQkItNkRCQkNDQkJCMzREcS1CRnBDdWRDMGdDRHlNOFFCQkRCQ2lJLUIwREN4QjJ1QlZuMEJuR3NPZjY5Qi05QkI4OUJCQ0JCX0s5RDd1QlFMemZSa1gtQ0NCejNDMUgxWkNCdXFCNzBCMVpDQnl0QkJ3cUI3MEIxWkNCQjZjSm9LcnRCM0s4Wms1Q0JCQlBIRHlkTWFnQ0RnbUJnekJCeXlCN3dDS0JCQkJDRTg1QzBDOUJnYUVTQ0JCQms0RGp1Q0JCWUVDalpCQnhCQkJCQkJCQnhCQkNDdHREc0JtRG51Q2tnQ2h6QjBZZ0RPNUNYcWhCQjV5QjliR0ZHQkNCaE5NbVBoV0s0ckN6RDBDQkM3aUJrc0JCdUNnTzF0REIycERyRm1EM3REeUVCM2pEc0xMS0JQOGpCQkJCQkJCQ0NDRm1kcmtCNW5CMnBEN0lIQkJCeWRmcmpCWmdNRi1hQkJuc0N0Q0cwREJSREMxdEJuRmpiSmhEdkdJX0ZxQnBzQ25DZ0JnRGtqQnZuQnlvQkIxb0ItY3pXLVlvNURaQ191Q0JIbkNnT0I4ekJnY0JuSUJEQkJCREIxRDRtQ3JNQ0VDREJCQkJwcUQ3SWFCQkJCQkJCQlU4aEMtTW5wQmkxQ3cyQ3FwQm50QnkyQ3oyQ2lEeXpDNmlCLXdDN2lCMXRDcER4cEJvcUJCcGN2M0J6cEJoQnpvQjFwQjdoRDBXOHBCc3hCQkJCQkJCQ21ROVR0ckJLNUVna0Jrd0NDWUVDaGF6R25CbGpCbWpCOHBCQjBjckJ6b0JxakI0c0NCQkJDQkJCSjBpQnNGNWlCaHFCbnRCaWR3dkM4RngwQkNDN2FCQkJ3QmlEVEJrdkJEUHVaQnZDdkhIT3ZsQl90QzVDT0c2Q0J1QktVLXlCamJCQ0dkN0xzRjBYMFhzRmt2Q0JCV3hDcWRCakNsc0JuRzhHTUJCQjloQmxGczBCRERQbkJCNXlCU3RqQjBDX2dCNFJIMVkzQ0tHRzZDMUVCMmU0Qlc4QkQteUJ0ZWdPSUxqMUJCLWE1NUQ1NUQxQ0N4akJ1ckJCdUNnT0J0Q2lkQjNHeFB3S2tFOWRCN0NwY2M1RXpTeFpCamZNT0cyRWtKekh0Yko1STc1RGtpQnZzQm5HQnBDMkRqYzhUa2pCazFEdG1ENnlEQ0tFRENCaXFENElCQ0JKRURENnBEQ0UyR2dxREJqbkQyUWxuRDRRR2huRDZRcG5EOFFwbENVeEkyMUQzMUQ5UUQ3eURfUTl5RDdDRHhuRG94RDNCLTFEbndENEZnMkRqekQ3Q2kyRGoyRGsyRHFSREJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJDQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkNCQkI0UE5GMVFOcEIxQmpCTVZrckJ3VEJCRUJCQkJCQkJCQkJCQkJFQkJCQkJCQkJCQkJEQkJCaURCQkJCQkJCQkJDQ0JEQkNCQkNCbUg0RUNEbGR3RnBRaktxRUJHQ0NVMkxCYkJ1Q29MNENCOEVoZ0NCQjhFRHVNYzBsQnVPdlR3S2hFdHZDOEVDQ25oQkhjaEIwUHVPWjNNQnVDZ09CQkJCQzRFeE0xUUZ1UzFSeUl1RTRIZTlzQmhDQkJDQkJFQkJCQkJCQkhCRVNCQkJCQkJCd0JwQmtCRnRZZ0JCODBCZ080aUNuR0JCQjREazhEQkJCa0VMakJsdEJCMkMtQkI4eUJyRDBwQkJCM0NfQjBEa1pzdkN1STZrQnN0QkJHQkNCQkZMc0V4Y3FJcUNzTGtsQ0xpOURlejhEd19EQkJCTnZDOEJsbEJxQzN2Q0ZVRjdDMkkwa0I0Ri1zQ0JDRXJfRG85REJCRzRFMjNEaUZCREY5Q2c2RDBFQjR0Q0JudEI1eEJwZWpCeERCQkJDQzNzQnpyQ25LQkRCQkJDQzRoRUJCN1AxckRCQ0IyaUVCQjk3Q0IzS0JDaGE4c0JlaEJoeENCQkJCaGE5bkNrWWlGazNDQkJqQkR5T3Z5Q0psWWF0RkNGRUJCREdDQ0JCZ25EMVpDREJDZ25EMVpDcGVCb2U3b0NCendCeXFDMEZDN3lCbHhCQkJsbkQxWkNCcmR4akRDQmxoRURCQkJwbkQxWkNDQkJCOTBCSEJGQi1nRUNDQkJCejdEU2lGQ2xhckZCQjRaSkNyRmlFcjVDQkNobURuYkNCMzdEU2lGQ0I3ZDhwQzFaQ0IxaEV0LUJCdE5CQkI1RXNCQ0ZCQkREQkJCck10RkIzSHdSNUh0ZjNMRzJKb1NsZTNwQzFaQ0JCblluQ0RvYTlRQkJCOGhFQjRoRUNoWHFCbkNnZEJCRGhUYzhDUXB3QnZab2N0RUNKSEJFbnpCNzBCMVpDcmVCQnc3RHNHQ0I4bkROMVpDQl9qQnJrQzFaQ0Jyb0R6VWlGQ3BzQ0JTek41UURudEJrYzFaQ0JCMGtFQ0NCQng4RDBGQ0I4bURyYkNCczVCcGpDMEZDdjFCMjRCQkJ0Tm1yQjNwQ0MtZkI5ZjdvQ0I1b0QxWkNCNm9EMVpDQjdvRDFaQ3VYa2ZzakJCQi0tQmlrQndkaENDQl9mdWFub0NDQnEtQ0IzS0Zqd0J3d0NEQ2trREJCQkNwZk0zTmtMNm9CNENrRHRCTlRnV3hDQndDcWdFQzZpREJrZkJueEJscEJ0SURQSEQxY2RtQmdDaGlFUEJweEI3dkNCcUJCQ0JCMUpqb0NqVkJoQ05UaVpDQmhqRUNCX21EamNDQ0JCdXBEQjdrREpzRTFaQ0JtakVDOWMtYUI5UV9MLWEtUjNNakJQaVI2QkJCM3lCQjV5QkMweUJCQjV5QkJCM3BEOFM1R0NCbjdCOG1Cd2FGLUlDQkJ2akVDaW1EQkJDQzlvRGIxWkNCQzBtQ21FaEJ6S3dMNUVNZ0NaMVpDbUNHQkZDNHBEMVpDQkk0cEQxWkNCcm9EMkIxWkNCQkI3QjhoRUM0aUJnT21jN2lEQkJ3d0JnY19WRkYtRXVDclQxbEJCNHdCdjVCQkJsbURlNmNDQkQ0d0J4RXZ5QkJ1QzFaQ0J1akRrRHJCamNDQmxDeWdEMUgxWkNzdkJCQnk2QnhwQ0NCQkRGbG1EZUJPQzNqRUNCMDBCXzFCMVpDQjQ2Qjh2QjFaQ0Jxa0VDQkpHX2I1VWlHeGtCQnNrRUNCSno2QnhwQ0NCdWtFQ0I2cUQxWkNCMENyNEI1ckJJSU9sRDFaQ0JCaWV0c0NpYUNCNW5ETTVDMVpDQnlxRE4xWkNDQkJCQjFyREJCc25FcXJEQkNCQ0RHQkNEQkNEQkJDR0JCQ0NEQ3U4QzZPcFNsRkJFQk5CQkwwbEI0Z0NqcERCQmhNX1VWbkkta0JtVkQzYUNxR0N0Q0JreUI1dUIzSzhaQ2xrRDhhQkJCdEQyZDJDbWdDcWhCQ0JCQjRoQmtWNUIzQzBsQkJfSTNCb0JyVGlGQ0J3bEVDQkxycUMxWmlGNFZDcUdDdWpFQm9qRUJtSHBFVHNjQ1o4RGZwc0JfTENEaGR5RnJRc2JoRDF1QmpwQm5HQjRwQjhFOU1yREk5V3RyQnN1QnVwQm5HQmxNamN0Qkd2RWdRQkNDQmlIRGhDSjFCSUJRamNCQkRCRmdCSC1DNVJXN0p3RjdUaERtZUpCQkhvRzU1RFNpRkN5N0NuMEJCaDRDbkdCOHFCbnRCbkdsbUJ5SHNFVXphaG5Cb0lsRW1OdU1DcGUyd0JCdUNnTzBIMEM0QlUzZjdka0RXSXRNME11ZVo1VEJCQkJCQkJDQ0JHMkdFckNVbkNGM01zUVd0aUJxZjlCQkJHQkJCQkJDQjRWejdEcERqd0JCQmlNcGNnT3NJV0l4aUNfX0NrTTRtQjNtRW1NNG1CN0JuTTJrQmlDN0I3MEI5d0JCdnZCdEJsdUJCc01vRDF2QkJEQkJCQkJCRFB2R29EOUJ2T19QMTRDVTFDNEt1NkRoMUJpMUJCNm5CazFCQkJCQ0J4Sy1CQjB5QnFrQ0J5SHhfREJwMUJCeThDcjFCdDFCQ0JCQzNNeU14U3lUZ0I1V3JNcGdCUFBCNmpFeER2MUJ3MUJCQjROckx6bkJCMFluR0JCQi1IckRzQ2d5Qi1Yb3NCQmdJeF9EeGtFNnpCMzFCeDVDakpDQkJCREJKSXBJcERkc0RwdkJXSWxqQ0JtSXhfREJHREU3SG9ERHNDdmZsRnIwQkJvSTU3RDREOTFCQkJFOUtuZnZLOUNpWnhYNGI2Q0JxSXhfRF8xQkJqUm92QlpCM1p0bUVDOVF3YXMxQkJCQkRQak1kMXlCMWNub0JQQm5rRThEQkNyeUJnQ3NCQkJnUnZ5QkJyMkJCQkJES1BtQkswR3lDXzBCZ29COGJzREI3SXk3RF9EMTBCN0JCQmYxX0I0akNCdm9FZ09oUHVpREJCbWlET0I5UnlvQ0JtR0JCRVBUM0tzQmQyRF91QmdCcmtDQnprRWpFQkJIREpJRUdPLWlFQm5KeF9EbW1Fbm1FaUNCQnlCT2lOdDJEaEN1YXpjQmYwTWozQmx6QkJuU3B2QklCQkJDRUNCd0JPckhwRHVDdTREemhFcTNCQkJCTmNtSnBFQi0xRHUzQjhha2VsOUJuR3FINE9vZ0I0UGtNbEM2akJ3WjRGUEVCQkJFR0NGbkpWM1BUOVFCazVDd0VCMzZCaHBDU2lGQkI2Q0JzQnlqQmc4Q1NpRkJDQkI2Q2tUeUwwTTNZOVNqTTBEbWxFcXJCQkJCQjRDYUxuVnJKc1l6MEJONVQ5Rkd3OEJoc0JnRnVDcFRxQmlGQ0JCa3NESTlFQndFbWxFQ3FFQm9FcGhCVm5DMVM2VDBaOWFCOEhzekJ3dUNDQkJCQkZDLUNnQkJHRHpqQnFnQ2tFbWRDQm5vRC1IMVpDc25CQmpIb2dCaHJDdzRCNXFDQkJCREJrc0RlbEQxWkNCaUhDQkI0UXE1RENCdndEMVpDenREQkJscUVDQkJCaGF4R3ZxQmxfQkNCQ0J5Z0IwcERDQnd0RE02V1NpRkNCbnREa2RDQnFwRGpoQkNCQkJCQy1qQl9FenlCc1JIbkROelVCQjZzRGVuQ2UxWkNCRjJrQmxuQnBhQjNLQm50RElvZEM0OUJCN3lDbk5CcFFGQkJCQ0UtbUJzWXhTY0RDdlc5Q0pSSC1CZEtQclRxR0N6d0N2eERDeV9DMnFFQkJHeV9DQkVCMXhEd1RFQkJDcnhEQ09CQk9FMmdCb0dxbENKaGVDQnh4RDFaQ0JocUR4SHJUcUdDQjk1Qnp6QmVrQ2hCMVpDQnFyRUNDQ0JCQ0I1eERCQjd0RDlkQnpyRUNJQkVEQkIyckVDQjNyRUNIREJHRF93RHdhQ0lEQkhEM3REZTZjQ0JpMUM5SENCQjN2REJqY0NCeTlCMzBCelVpRkNCdnhEd2FDQi1vRWlEQ0Joc0VDQmlzRUNCdm1FMEZDQmtzRUMwd0RCeHdEQm56Q3ZkRjJCclRxR0NDQkJCQy1KQkItSnI2QnVzQkkzVkI4OUJnMEJ1QmlXZ0RDX3FCakZyVHAtQjRadUhCai1CNXNCRkJCQ0JfbEJCRHZzRUNCenNFQ0JzS3dpRUJDQkIwd0R1QzFaQ0I1c0VDaHNEQjFLaG1EQnVDeldCQm0tQnV0QmxjQ0VCQkMzOUI4b0NxR0NCQ3F2RGpCQkJ6dkROSmxEMVpDRUZ1aEN5VjFVeUhCQkJGNjlCV21vQ3FHQ0JEQkZyLUJGbW9DcUdDQkZCRjY5QlJGbW9DcUdDUUVCQjVyQnFnQ3FoQkNTQkJKX3JEa0Z6Qm1VcUdDQkJESUxtLUIxdUNDV2dCa1VqLUJCQkNESVJrVXFTeEVvbkJrMEJxR0NsVkJDQ0RJMVVxUzlfQ3FHQ0xDQ0JLQ0M0dkRHQkJCaTBEMVpDQm16RHphQ0I0MERpV0JCQkJCcXVFQ0JCQnlzQjhuQzFaQ0ZHQ3R6Q0JCQkNDREJDWG9MNmJuWjJSWGlFbFZ0RWxEclRxR0NCQjIwQzRjTTVDRXZVQnF1RUNCenVFQkJuckVoRy1wREJFOEZqaENraEJCQjZtRDFnRG5Ha3FEQkNEMVNuRkJEQ0dCNW1DNW5DZ3ZFQjFyRUJNeGtEX0J0RDJrQkJCOHVFQ3I1Qi1CQnE1QkJwNUJpQ0J3b0REbTVCRmw1QkJCQkJpNUJIWTlwREJVQkNCWjlGYy1uRF9CNnFEam9DQ0M5TkJCQkttVG1GaEJfRkJJVUkyWHB2QnJnQmpCLW5EaHJEaXJEa3JEQmhCRHBCc2pEQkJEYkZrR2poQ1VDQkJCR0JCQ0VvWXJyRG9aQkJvQkJEOGhEeHBEX0JCQktLaEIyWHB2QkZ5ckRCQkRCQ0JEQkNWMFQzckQ5b0M1ckRCQktKS2hCNFpCQ0xKS2hCX21DRUxKS2hCX21DRENMSktoQndTdjBCQnFnQkdfQl9tQ2xmbHBEY19CbXBEY19CQkJCQkJCNkJLQkJsc0RQUUlnQjFTcUMtbkRCQkJCS0VKRFNUbXJEa2xEd0IwbkRzc0RfaUR2c0QxckNyWjJHMmtETkJCQjBrRERCREppR0R2YXpvQ25HQkJIQnVCYUl3U3cwQjFzRHhaQmlaX3dCMmFCdXZCelhCQkNuQkNHSmJrR21NOTBCQjhaQjNhdnZCM1lCQkZGQkJCREJpbER1RElwbUJCMHhFQjBCdUJpckVGWjdDcENDb2EzeUNCeWpEbkdCQ25hOXZCanREQnBEX21DdVpCQkNhbXREQkNEb3REQkJNQkVIQkJ6Q0JTQkVCRFB6eEVveUVCVEJDRHBxQzVuQ0JCb0ROMzVCanZDMEZDSkJ0MERlbkNlMVpDQng0RDFaQ0JueUVDQm14RHVIMVpDbjFEQkJCaUU4X0J4VHJkSW9kQ0J0eUVDQjU0RDFaQ0JFQmtzQjZYOHdCSW9kQ0J3eUVDQnJ1QmtxQ2lhQ0I5NER6VWlGQ0J6eUVDQl80RDFaQzAxRERCQkJwa0NrRGhxQjNESUM4V0JrdEUwRkNobUNCRHFrQ25COUJ0UXJkSERCNnlFQ3Z3RUJCajFFQ0JCNzREQ0JCX3lFQ0JoekVDQnQ1RDFaQ0JvMkIzUE5ybUNZMEZDbDZDQkJoNkN1SUpfdkRiQkJtekVDQm01RE4xWkNDQkJCbGxDX0h6RS1makR4RWdCZ1c0eERCbXRDeUN1QzlWekpCekhOVGhXQnM1REJzNURnQmhXaERDdjVEQnQ1REJmaFdWMEV3NURCcHRDbERCX29CQmYxUnNFazJFQmoyRUJDQ0JCcGpDbHlCVkdCMERDQkIxekVDOTFEQi15RC1DN2RDd21Ca08wRHFTcmQ5Ql96RUIwd0VCQ2duRDhzQmc3Q0JCM1FzaEI3b0J4V0JuQl9CMUJ0RE41VG5HQjh6RUNCOXpFQ0ItekVDQnZsQzJQNi1CQ3J3QkJ6Ym5KM2R1SEJCZzBFQ0JCQ3hIODlCenVDQ3BvQ0Jub0NCcEs1dERqY0NCQng2RHpXc0J0b0NCQkJpQkgzcEI1Q2pLNlJwRUJKbERnQkdGc0Q2UzdKcERWRzlEQkI5MkVCQ0NCQnN4RWhEQ0I2NkQwV2hEQ0I4N0QwWUNtU0JsU3l6RUJCQmotQnVHNUp1UFZwSzZMZ0dnQmlaQ0J6dUJpbURDc1JCLUpKa0gycERCMTZEdVUwRkNCNG9DQjhxQmpoQkNCNTBFQ0JsN0R6VWlGQ0J6ekR5LUMzdUJCX0gzbUJ3WjJScmVNZjZCMVpDQmoxRUNCQm4xRUNGQkVOeHlFMnpFRU15dUJfbkNCQkJCLXVCLW5DNEU5YkI0N0QxWkNCNTdEMVpDQ1NCQkZ5M0VDdVNCQnVTR0pCQkVKNnpEUTEyREJQaWhCeDFDX3FEcVFCMzRDQm9TX2xDa1Z3Q0g5akJCQkJCQkJwM0RfQ0JCQkVIQjA4Q2hCaVdoRF9Dd0JDZUJReTNFQ0JCajJFQkJSQkJQLTVEQnEyRUNTQkJTVDU3RDhQd3JEcVFCNTVDNkIyQ0Q5TTZiRXItQ25OQnBRbC1DSE1wTWQ3TG1QQkJCQkJEQkJDbS1DSDFNd0pJNVJCQkJCQkJCbi1DSE0wTXNQeU5CQ0N2LUNEREdsZEo2QkJCeUJpOERCQkJCQkJCQ0hCSEVJTERuQ2prQ3JEd0toSWhCRGphN0RUSDdZQ0I1RGprQ3JENHRCTmpkQ09TbXZCX25DQk5TVHp1Qi1uQ3lCQkJ6Qi0wRUNCVERYWEVCQkJERE5FWEVFRGcyQ1RCU0hpM0N4akJvQkJhTjEyQ3UxREhYQkJFQlhlbDRETXVjQ0JCQnRSaHZDQnMyQkNCQkR1Z0RCczJCQ0I5Ukw0a0VDQkIyeURCcEtOelVnQ2lEQ0J3NUR6ZENCbmlCcjBDOUcxWkNCdS1DMzRCQ0JrMEVpRENCbjNFQ0J6OUQxWkNCMDlEMVpDQmhzRG5STjFaQ3MtQ0JCcC1DcGNNNUNCQ2hCcTVDTC1EaEJEQjU5RDFaQ0J0OUROVGlaQ0JCdzNFQ0JDQkJ6M0VDREJDejNFQ0JwaEQtYnZhQzVfQ25OQnBRNl9Dbk5CcFE1MkRCQkJfTTFuQmdyQkx5V0Y5R1ByVEJxV3JhM1FCQkJ4d0JqdEJ5Wno3REJCLTNFQ0JDNDdEbWNDQkQtM0VDQkJGQkJ0UzVEOEloRzhJeEN2c0JpRmdaTXNDTi1UcUJCd3lFMEZDQmw0RUNCM3hCdm1EQ0JCbjRFQ3BzQ3V3QnVPQkJCQnBPemZDdUMzRHpWeEJlQmd3QmhYQkJ0NEVDQjkzRGpHdmFDQnc0RUNCX3FDRHZ0Q0NCMHlCLWxEQ0JxMkJwaURDQjFPX3BFQ0IxNEVDQjI0RUNCMzRFQ0I0NEVDQjA5Q3JlTXVjQ0NfcURCQjR5Qm40QnNTQzgwQkJCODBCdXhFQkJxekVTaUZDXzBCQi0wQmkxQkJoMUJzLUNTaUZDajFCQmkxQmdrRENCQjYwRDNLQ0JCb3hCX3VCbHlCQjV4QkpDdEozSDB4Q0VCQkNvNUVCSkJDRzQ5RDRWMEZCQkJCekIzMERIZ0h2WHRFQ0JDQnpCMzBESGdIdlh0RUN4NUVCdmxDQkJCNXRDOHRDQkJCQ0NyMEJCa19DQndzQzMxQjFfREJnQnZ5Qmt0QzZCQkJCOXZDQkJCRUItdkNHQi12Q0JCRUJLQ0JyX0M4aER1YkIzaURIdWFndURCQkJCR0JCR0NvNUVCQkJmQjl2Q0JnQ0JuMkJfbkNwLUQtT3R6QzVaM2tEemFna0QwYWdrRGhrRHdzQ3QxQnBqRXJrRHZkQkNEMnZEQndrRDR2REIwa0RGaHRDOWtFQkJnbEVweEMyaUVCQkJCQ21zQzEtRTItRTMtRTQtRTUtRUI4LUU5LUVCQkJfWXFadzhCbl9FcF9Fc19FQjFaQkJCRnd0Q0JCODhCNjhCQkJEaDlCbFE4ZTdfRXFzREJCQmdnRlE4OEJ5OUJCdnJEcmdGQmx1REZCZ0JnckRCb2dCV295Q1AzOUJCandCQkJZN2ZCQmk2QjQtQkJCQ2c3Qmd1RHI2QkJCWmttRUJhQmtEcHRDOHpERkc2N0I4eUJINjdCOHlCSWtESksxaUZORG5pQm1XUEJDT2tEU3V4QkJUVzMwRDd3REJxMERyMERMb2pGQkJCREJCQ3Z1RHVHUngwRDlxRDBGQmtyRENER3B3QzF4QnR3Q2c3Q0JCaHNEbEg5a0RCQzhTbFA4YUJFZE10aEI4aUJGckJsVEhWdW1FQldDRFdzNUNCQ1p1bUVCQmloQjRyQ0JCQkJDRDFzRHViRThtRkI0akJCQkR0NURFRkJCMjFEblpnb0ZFSTdzRERtdERPQko2akMwb0Yxb0YwekR0VzV1REI5N0NkUHlkQ3A5Q0JCbDRDQnBuRWtEX0NxbkVrRF9DQkJ4OUNzUzhVdDBER2l3RDhHOTBDb0RrSEMzRUJCQjRrQ3JVQmxOalhyLUNCb05oZXJmcWZCQkJCakZIellGQkJCdC1DN3FCRG9wRURCdC1DN3FCRUJ0LUM3cUJCQkhvcEVvRjFzQkN4RjFzQnpGMEZ2eUJwWEJDcnRFQnJwQ3RwQ0JCQ0VGQjVyQkJDenBDRUZFQkJCRkdOQkNwbUNTVFd1cUNfZ0RaYzg0Q3J0RnBPcU9oNUM5RzN4RHpKd2xFOUdfR29vRWdIaEh2dkV5bkNCbEhvb0VCbkhwSDVuQ29SQkJzaURCRkdudEVIenpFSUNHN29CdTBCQkM1dUY3dUZrbER3d0VzeEUySTlqQjNJOWpCNUk5akJCQkkySnFqQmhjaXRCa3hFLV9DX0l0b0VCX2lEd3hFdUpwb0U5bkNCenhFQ3FTNWtEd2FGclNDQndnRGdEeFd6Yi0wRF8wRGtGbmNrNkQ4WG42RDhYeEY0dkVzQ3A2RDRrRDBWOTNFQkRCQkNEREVGR0hJTUJCTEJ0aEQ0T0JCeEtHd0t1S0h2S0o4Vkt1S3VMTHRLU1RrQi1VOGpEZ0N3VEdwbEJCQnVrRTBXczlEM0Q3MkVpUmh4QnpyQ0J3bkRCRHNYNnpCcnJDRXdyQ0Jud0VSOHJDVjFNa0IxWUJ5WTNZQjl2Q3pZNVk0WTJ1Q0JCNlk4WTF1QzlZREI5dkMyakQ3aUI3NEVCMEJEdHRDdXRDQjZtRXZQbllfbUVqOEVvb0Q3cER4bEQ4MkVCazZFXzJFQkJCQ0MtMkU2QzNRTy1ZczVEM3VDMWJtcERCM3ZDcXRCRUYzNkVCQkJCQ0JFQkJISkJHRUpDQlBCTUU1aUVCV3FZWUJCZEJhRWdCTVdxWU5XcVlCUFdob0VGa0JXUEhxWXl3RFlXcVl6a0R2QnBCSGNXcVlkV3FZZVdxWWZXcVkyQjNCMTRGbnlDdnhCR0J0cEN5d0RKa0ktLURCQjF3REduSW14REJFaTVESDF3RE05d0RKMXdETWd4RGh4RE8zbEN6V01rd0RreUMxVzhDQ2dyRW5uRXk1Rno1RjE1RjM1Rm43RUIybkNtNkZuNkZyU19yRUJCczZGRUt5NkYwZ0VPQjY2RlJTbm9DOTZGLTZGbERtRDk4RTNtRXd0RXh0RUJDREJDNnRFbXBFbXBFQkNEdHBFRkItdEUzcEVxWEI4ckNsaEZxaEZyaEZyYXBoRkJtYkNpc0NCQnZoRnlzQ3hoRnlzQ3poRktCQkJEeTFDckZ3ZEJyZEM0akJCQ0JCQ0JCQkJGQ0JCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkNCQkVCQkJCRERCQkJCQkNCQkJCQkJCQkNCQkNCQkJCQkJDQkJDQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJEQkJCQ0JCQkNCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkNCQkRCQkJCQ0JCQkJCQkJCQkJCQkJCQkJCQkJCQkNCQkJCQkJCQkNDQkNCQkJCQkJCQkNCQkJEQ0NEQkJCQkJCQkJCQkJCQ0JCQkJCQkNCQkJCQkJCQkJCQkJCQkdDQ0JCQkJCQkJCQkJCQkJCQkJCQ0JCQkJEQkJCQkJEQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJDQkJCQkJDQkJFQ0JCQkJCQkJCQkJCQkJCQkJDQkJDQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQ0JCREJEQkJCQkJCREVCQkJCQkJCQkJCQkJCRUJCQkJCQkJCQkJDQkJCQkJCQkJCQkJCQkNCQkJCQ0JCQkJCQkJCQkJCQkJCQkJDQ0JCQkZCQkJCQkNDQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkNCQkJCRUJCQ0NCQkJCREJDQ0JDQkJCQkJCQkJCQkJCQkNCQkJCQkJCQkJCQkJCQkJCQkJCQkJEQkRCQkREQkJCQkJCQ0JDQkJCQkJCRUJCQkJCQkJCQkJCRENCQkVCQkJCQkJCQkJCQkJDQkJCQkNCQ0JDQkJDQkJCQkJCQkNCQkJCRUJCQkJCQkJIQkJDQkJCQkNCQkJCREJCQkJCRUJCRENDQkNCQkNCQkJCQkJEQ0RDQkNEQkJCQkJCQkJCQkJCQkJDQkJDQkJDQkJCQkJCQ0JCQkJCQkJCQkJCQkJJQkJCQkNCQkJCQ0JDQ0JCQkJCQkJCQ0JCQ0JDQkJCQkNCQkJCQkNCQkNCQkJCREJCQkJEQkJDQkJEQkJCQkNCQkJDQkJCQkJCQ0JCQ0JCQkJCQkJCRUJDQkNCQkhCQkJCQkNDQkJFQkJDQkJCQkJCQ0NDQkJCQkZDRUNCQkJDQ0JCQkNCQkJCQkJCQkJCQkJCQ0JCQkJCQkJCQkRCQkNFQkJKQkJCQkNCQkJQQkJDQkJCQkJDQkVCQkJCQkJCQ0JCQkRCQkJDQkJCQkJCQkJCQkJCQkJCQkJEQkNIQkJCQ0ZCQkJCQkJCQkJCSEJCQkJDQkJHREJCRENCQ0NCQkJCQkJCQkNDQ0NDQkJFQ0JCTklFQkNGQkZOQkJCQkJCREJCQkRCRENCQkNDQkJCQkNDQkdCQkJCQkJEQ0NCQkJHQkJCRUJCQkJCQkJEREJCQ1V4Q0ROREJDRExCQ0JCQ0RDS0VHQkZCQkdEREJCQkJCQkJGQkJCQkJCTUJCTERHRUNCQkJEQkJHQ0JCQkJCQkVDRDdDZ0JCR0RDTEVEQkNCQkJCQkJCQkJCRENCQkJERENCQkJCQ0VGQkJCREJHQkhDQkJCRUNCRUJCQkJCQ0JDR0NFQkJCQ0JEQkdCQ0JCQlpLQ0NGN0ZETUJCQkRPQkJDR0ZCSkRFQkZCRkRDQkNCTEJDQkRCQkJCQkJCQ0tDRktGQkJCREJCTUJCSEdCQkJCQkJCSkNEQkJCTVdGQkJEQkRGQ0lPQ0RFSUJDTURHRUJUNURET0dEQkVCQkNFREJEQkNEREVCQkJDRENCQkVCQlNJQkJGR0pLREVNUEJCSU1GQkZCQkJCQ0JDQ0JCSkVERUJEQ0VCQ0JHQ0JGTURHQkJCRExDQ0JDR3RDZ0tDUVNuQlhDQkNDQkJCQkJCQkJFQkdKSENCSENFQkJFQkZCREREQkJDQkNCRElEQkJCQkNCQkRIQ0VIRldDQkNCQkZIRkJCQkJDREJKRkRCQkJCR1JCRERESERDR0RDREVCQkJFT3VCTnRCaUNFRkVZUlVsRHdCR0dEQkVHWU9sQkVzREJCQkRCQkJETEVFRUREQkJCQkhJSk5DQ0dGSkJFR0JCQkNDR0NFR0JEREhDQ0JHMEJHRUJGSE5DRERoREhrRU1EQ0ZERkNCZ0JIVUJDRUVXQkhCQ0pDdENCU0ZFQ0RJTlFsQkdCZUlMQ1FKQm1TUEdCQkRJQ0VYQkJCTUNDQ0NEQ0NDRENERjdEQkJDQ0NDREtqQkRna0Z3YUJ2Q3loRndhQkJCd0MxMkZqRkJ4Q0I0Z0QtSEI1LUZCNS1GQ2prRm9hSUJ0LUZJQnlDNnBEMnBCQnpOeENvaEZ3Q3BoRnpkZ1preUJrWG5qQlRGd1ZCNmNfeEI5MENCd0NCQ3lkbnhCOHZEQkN3Q29oRjVjQ3ZDdEN1aEY1Y3ktRklCeS1GSUJxa0Z3YUJzQ3hzQzl2REJxa0Z3YUJyQ3doRm9rRkNvYUlCcUN2MEJpWWxTaElwQzMtQzkyQkRLbEJzS0lCb0M4LUZCQkJvQ3QtRkNCbUNCcEMzZDMtQjJkN2hCR3o1RFNpRmx0REJ3ZDZrQ2xwQnlEaEY2RG1oQjhGQ0JvNUZCQkNvNUZERG81RkJCa0J3Z0dCQ0NCaWxGclVCQnZkeW5FclVCRkJxZHB4Qm53Q3hhQ1FpRkN0YjVqRkM0QnJiOGxDOWpDaWFDOWF3cEMzZ0NpYUMtYTNqRWtiQjhhd3BDNGdDdVVTaUZDQjdhd3BDNWdDdVVTaUZDN2FxcUV1VVNpRkNCNGFzcUV1VVNpRkM0YTZxRXpVaUZDd3BGQjJhN2xDUzZKcTBDQ3hwRnphX2xDc0txMENDQkJCQkIxWXhqRkJCdTFFOENwQzlrQkRCQkQzWTFtRkNKRDJZM21GQ0p1VTVxRkMyVTR3RU4xWkMzUWlsRGl3QnpVaUZDM1E2dUZDMlF1d0UxUXZ3RTRFMXJGeXJGMnJGejBGeTBGeDBGdzBGdjBGdTBGdDBGbTBGbDBGazBGMzBGMjBGMTBGMDBGcjBGczBGcTBGajBGOHpGNnpGNXpGNHpGM3pGN3pGMnpGaDBGX3pGZzBGLXpGOXpGaTBGeXpGeHpGdHpGcXpGcnpGaXpGanpGb3pGcHpGa3pGbHpGbXpGbnpGOXhGLXhGNXhGZ3pGaHpGNnlGN3lGNHlGNXlGMHlGMXlGeXlGenlGdXlGdnlGd3lGeHlGOHlGOXlGc3lGdHlGM3hGNHhGcXlGcnlGbHlGbXlGbnlGb3lGanlGa3lGaHlGaXlGX3hGLXlGMnlGM3lGN3hGOHhGeXZGeHZGMnZGM3ZGMW9EMG9EcnhGdHhGcHhGcXhGbHJGanVGcDNGX3RGLXRGOXRGOHRGNnRGNXRGNHRGM3RGMnRGMXRGMHRGcXZGeHRGaWdEa2dEbWdEb2dENTdEaTZEbkNCQkIweER2SkROQkJCQnpvQm5iQ0VCMTlEejdEVkQyRXkyRHo3RHk3REQyRTMyREJCQ1ZEMkUzMkRCQkNWRDJFNTFERTJFMzJEQkJDVkUyRTMyREJCQ1ZFMkUzMkRCQkNWRTJFMzJEQkJDVkUyRTMyREJCQ1ZFMkUzMkRCQkNWRTJFMzJEQkJDVkUyRTMyREJCQ1ZFMkUzMkRCQkNWRTJFMzJEQkJDVkUyRTMyREJCQ1ZFMkUzMkRCQkNWRTJFMzJEQkJDVkUyRTMyREJCQ1ZFMkUzMkRCQkNWRTJFMzJEQkJDVkUyRTMyREJCQ1ZFMkUzMkRCQkNWRTJFMzJEQkJDVkUyRTMyREJCQ1ZFMkUzMkRCQkNWRTJFMzJEQkJDVkUyRTMyREJCQ1ZFMkUzMkRCQkNWRTJFMzJEQkJDVkUyRXMyREUyRTMyREJCQ1ZFMkVyMkRFMkUzMkRCQkNWRTJFcTJERTJFMzJEQkJDVkUyRTMyREJCQ1ZFMkUzMkRCQkNWRTJFMzJEQkJDVkUyRTMyREJCQ1ZFMkUzMkRCQkNWRTJFMzJEQkJDVkUyRTMyREJCQ1ZFMkUzMkRCQkNWRTJFMzJEQkJDVkUyRTMyREJCQ1ZFMkUzMkRCQkNWRTJFMzJEQkJDVkUyRTMyREJCQ1ZFMkUzMkRCQkNWRTJFMzJEQkJDVkUyRTMyREJCQ1ZFMkUzMkRCQkNWRTJFMzJEQkJDVkUyRTMyREJCQ1ZFMkU0MURGMkUzMkRCQkNWRjJFMzJEQkJDVkYyRTMyREJCQ1ZGMkUzMkRCQkNWRjJFMzJEQkJDVkYyRTIyREcyRTMyREJCQ1ZHMkUzMkRCQkNWRzJFMzJEQkJDVkcyRTMyREJCQ1ZHMkUzMkRCQkNWRzJFMzJEQkJDVkcyRTMyREJCQ1ZHMkUzMkRCQkNWRzJFMzJEQkJDVkcyRTMyREJCQ1ZHMkUzMkRCQkNWRzJFMzJEQkJDVkcyRTMyREJCQ1ZHMkUzMkRCQkNWRzJFMzJEQkJDVkcyRTMyREJCQ1ZHMkUzMkRCQkNWRzJFMzJEQkJDVkcyRTMyREJCQ1ZHMkUzMkRCQkNWRzJFMzJEQkJDVkcyRTMyREJCQ1ZHMkUzMkRCQkNWRzJFMzJEQkJDVkcyRTMyREJCQ1ZHMkUzMkRCQkNWRzJFMzJEQkJDVkcyRTMyREJCQ1ZHMkUzMkRCQkNWRzJFMzJEQkJDVkcyRTMyREJCQ1ZHMkUzMkRCQkNWRzJFMzJEQkJDVkcyRTMyREJCQ1ZHMkUzMkRCQkNWRzJFcDJERzJFMzJEQkJDVkcyRTMyREJCQ1ZHMkUzMkRCQkNWRzJFMzFERzJFMzJEQkJDVkcyRTMyREJCQ1ZHMkUzMkRCQkNWRzJFMzJEQkJDVkcyRTMyREJCQ1ZHMkUzMkRCQkNWRzJFMzJEQkJDVkcyRTMyREJCQ1ZHMkUzMkRCQkNWRzJFMzJEQkJDVkcyRTMyREJCQ1ZHMkUzMkRCQkNWRzJFMzJEQkJDVkcyRTMyREJCQ1ZHMkUzMkRCQkNWRzJFMzJEQkJDVkcyRTMyREJCQ1ZHMkUzMkRCQkNWRzJFMjFERzJFMzJEQkJDVkcyRTMyREJCQ1ZHMkUzMkRCQkNWRzJFMzJEQkJDVkcyRTMyREJCQ1ZHMkUzMkRCQkNWRzJFMzJEQkJDVkcyRTMyREJCQ1ZHMkUzMkRCQkNWRzJFbzJERzJFazFERzJFMzJEQkJDVkcyRTMyREJCQ1ZHMkUzMkRCQkNWRzJFMzJEQkJDVkcyRTMyREJCQ1ZHMkUzMkRCQkNWRzJFMzJEQkJDVkcyRTMyREJCQ1ZHMkUzMkRCQkNWRzJFMzJEQkJDVkcyRTMyREJCQ1ZHMkVuMkRHMkUzMkRCQkNWRzJFMzJEQkJDVkcyRTMyREJCQ1ZHMkUzMkRCQkNWRzJFMzJEQkJDVkcyRTMyREJCQ1ZHMkUzMkRCQkNWRzJFMzJEQkJDVkcyRTMyREJCQ1ZHMkUzMkRCQkNWRzJFMzJEQkJDVkcyRTMyREJCQ1ZHMkUzMkRCQkNWRzJFMzJEQkJDVkcyRTMyREJCQ1ZHMkUzMkRCQkNWRzJFMzJEQkJDVkcyRTMyREJCQ1ZHMkUzMkRCQkNWRzJFMzJEQkJDVkcyRTMyREJCQ1ZHMkUzMkRCQkNWRzJFMzJEQkJDVkcyRTMyREJCQ1ZHMkUzMkRCQkNWRzJFMzJEQkJDVkcyRTMyREJCQ1ZHMkUzMkRCQkNWRzJFMzJEQkJDVkcyRTMyREJCQ1ZHMkUzMkRCQkNWRzJFMzJEQkJDVkcyRTMyREJCQ1ZHMkUzMkRCQkNWRzJFMzJEQkJDVkcyRTMyREJCQ1ZHMkUzMkRCQkNWRzJFMzJEQkJDVkcyRTMyREJCQ1ZHMkUzMkRCQkNWRzJFNjFERzJFMzJEQkJDVkcyRTMyREJCQ1ZHMkUzMkRCQkNWRzJFMzJEQkJDVkcyRTMyREJCQ1ZHMkVqMURHMkUzMkRCQkNWRzJFMzJEQkJDVkcyRTMyREJCQ1ZHMkUzMkRCQkNWRzJFMzJEQkJDVkcyRTMyREJCQ1ZHMkUzMkRCQkNWRzJFMzJEQkJDVkcyRTMyREJCQ1ZHMkUzMkRCQkNWRzJFMzJEQkJDVkcyRTMyREJCQ1ZHMkUzMkRCQkNWRzJFMzJEQkJDVkcyRTMyREJCQ1ZHMkUzMkRCQkNWRzJFMzJEQkJDVkcyRTMyREJCQ1ZHMkUzMkRCQkNWRzJFMzJEQkJDVkcyRTMyREJCQ1ZHMkUzMkRCQkNWRzJFbTJERzJFMzJEQkJDVkcyRTMyREJCQ1ZHMkUzMkRCQkNWRzJFMzJEQkJDVkcyRTMyREJCQ1ZHMkUzMkRCQkNWRzJFMzJEQkJDVkcyRTMyREJCQ1ZHMkUzMkRCQkNWRzJFMzJEQkJDVkcyRTMyREJCQ1ZHMkUzMkRCQkNWRzJFMzJEQkJDVkcyRTMyREJCQ1ZHMkUzMkRCQkNWRzJFMzJEQkJDVkcyRTMyREJCQ1ZHMkUzMkRCQkNWRzJFMzJEQkJDVkcyRTMyREJCQ1ZHMkUzMkRCQkNWRzJFMzJEQkJDVkcyRTMyREJCQ1ZHMkUzMkRCQkNWRzJFMzJEQkJDVkcyRTMyREJCQ1ZHMkUzMkRCQkNWRzJFMzJEQkJDVkcyRTMyREJCQ1ZHMkUzMkRCQkNWRzJFMzJEQkJDVkcyRTMyREJCQ1ZHMkUzMkRCQkNWRzJFaTFERzJFMzJEQkJDVkcyRTMyREJCQ1ZHMkUzMkRCQkNWRzJFMzJEQkJDVkcyRTMyREJCQ1ZHMkUzMkRCQkNWRzJFMzJEQkJDVkcyRTMyREJCQ1ZHMkUzMkRCQkNWRzJFMzJEQkJDVkcyRTMyREJCQ1ZHMkUzMkRCQkNWRzJFMzJEQkJDVkcyRTMyREJCQ1ZHMkUzMkRCQkNWRzJFMzJEQkJDVkcyRTMyREJCQ1ZHMkUzMkRCQkNWRzJFMzJEQkJDVkcyRTMyREJCQ1ZHMkUzMkRCQkNWRzJFMzJEQkJDVkcyRTMyREJCQ1ZHMkUzMkRCQkNWRzJFMzJEQkJDVkcyRTMyREJCQ1ZHMkUzMkRCQkNWRzJFbDJERzJFMzJEQkJDVkcyRTMyREJCQ1ZHMkU5MERHMkUzMkRCQkNWRzJFaDFERzJFMzJEQkJDVkcyRTMyREJCQ1ZHMkUzMkRCQkNWRzJFMzJEQkJDVkcyRTMyREJCQ1ZHMkUzMkRCQkNWRzJFMzJEQkJDVkcyRTMyREJCQ1ZHMkUzMkRCQkNWRzJFMzJEQkJDVkcyRTMyREJCQ1ZHMkUzMkRCQkNWRzJFMzJEQkJDVkcyRTMyREJCQ1ZHMkUzMkRCQkNWRzJFMzJEQkJDVkcyRTMyREJCQ1ZHMkUzMkRCQkNWRzJFMzJEQkJDVkcyRTMyREJCQ1ZHMkUzMkRCQkNWRzJFMzJEQkJDVkcyRTMyREJCQ1ZHMkUzMkRCQkNWRzJFMzJEQkJDVkcyRTMyREJCQ1ZHMkUzMkRCQkNWRzJFejJERUQxRXUyRDQ3RFZxN0Q0N0RWNDdEVjQ3RFZJMUVrMkRCQi02RG9HMzBDaWpCd19CMEU4dUIwckRCQkJvRzMwRDNDTXNaUUlyRTlJaVRNMUVnMkROMUUtMURfNkRQMUU3MURQMUU2MURCQ3hHbDNEMmlDd0d0M0R2aUNSaDZEUjFFMTFENjZEUjFFdzNENTZEUjFFczFEQkxCbDZERk8xRXExRGo4RFZCVDFFcDFEVjFFdzNEVjFFdzNEbDhEVlYxRXkxRC1CVjFFeDFEbThEVm44RFZCQkI1NkRZMUVtMURZMUVsMURZMUVvMURZMUVuMURZMUVrMURYQnM2REJzNkRiMUVfMkQ4OERMbjlEaThEU0hrZ0JjMUU4MER0OERWdDhEVnU4RFZ1OERWdThEVnU4RFZCQkJCR0NDQkNCRUVDeTVEOENxLURDOVdCODhEQ28tRER4OEQwcUIwT21EQkM1OERCQjY4REI2OERCbUJIakIxRTcxRGxCMEw0d0JrNUZEempCazlFQzJyRjFyRjByRnpyRnlyRnhyRndyRnZyRnVyRnRyRnNyRnJyRnFyRnByRmsyRUVDcGUzQjdDQkIxMUVHQ3lDaDJGbUREQkIwakJ2c0MtakJ2UjFqQjJ1Q3d1Q0MwakIzdUN3dUNDeHlGempCaXRDbXdDQ3lqQm9qRXI1RnhqQmppRW5iQzRuRXZkdGpCLTVEOEoxWkN5a0Q4RV9hQm9SaWFCQkJCanBFbk5CcFFCQkJCQkJCdmpCNklKcWFtOUJTd0RoQjRCNmJtQlM5MEZCSHVqQjBTcnVDTHJFcWQ1REJJdGpCaEhxVHltQ3pqQm43QnAwQkZvRkI5SHdVc0I1S0NUQnlqQnVrREJ1akIxNEU0bUZCQnlqQi11Q3hXd1BCX05sYUJCempCeDRFempCeGtETmtqQmd0Q3cxQnBqQjFpRXdqQnR0Q0J5UG5qQkh1RW5UU2lGQ0J2akJqMUZzQm1EMTVGRDE1RkQxNUZENDVGdnFEMXJGQkJ3akIyaEVqY0NsMUZzQkxCd2pCb2pFeWFDQndqQmdsRUJ4akJoeENIaXlCSFd6VXhqQjk5RUNxMUYzQjdDQkI0MENIcTJDVENhakNONTJGTDdDRGg2RnMxRnR4Rl9Ec0JMNUNDcER2LUQzQnEtQm9EQm5EQm1EN19EQm5EOWdFQkJsRHotRC1tQjhoRTNCQ0JrREJCbERsOURvb0JwMURtMURnSnV3RERKc0I0R05yX0JDLUlueUQ4bEJCOUlDMDVEQkI5SW93RE5HeUhWTmpfQklDOUlseERtQjdyQjJhQy1JajVGOEk4eERobkNDQkJCNUlENWtCN2NxTjloQnpIVmlpRzhJN3pDNlNrRWxHMEJ4SWstQmtKMHhEU0Z5TW5GQkRCM0lKb2lDcXVCTE1uSFVnTDJFZ0ZCOUNGbk56YUNCNUk4d0RYdW5DQzRJeXhEeG5DQ0RCMElCSDBoQzF1Qk5MSW1IRlVraUJ2ZEMzSV93RFN6bkNDMklneERPRDBuQ0N3cUVnakV5VHVyRUI0RDFnR0JCQ0Jwb0JtakR0MkJDeWxGcmhGNkNlQjI3Q3RwQ01zQ0JqRmt5QkJuM0J4d0N0RUJDMzRDOE15WlYtSGljQkU1N0RsTWV3QjRCeVVDOUNnQ1pCRWhWaHBGdVRTcnBDeS1CQi1yRUJCaG9FRkJnb0VCN2tHQkI2a0dCREJDd2NfNERpVUJFdGNCeGNpaEJJNzZCelE2TnZPTXNDTnZxRURKME14UUJqc0J6UjNuQ0RJLURoQkQtMEJwZ0VrOEZubEcyb0U0MURwb0VoWEMybEZNQnBnRkJ2cEV0V0tCZ0VKc0UxWkNCMmRwNkNDMGRxaUVHQ0JwRXNFMVpDbDlCN0R4TWlDMUIzQ2dFQ0JCaURGQzZjcW9Cc2NWVnRCQjJJOTVGQ0ItYV8zQjVMRTZQQnprQkhCNW9CcUdDbUMtYTVqQ0U3aUNtaEI5YTZzRHcyQnAwQ2dEOGpEQkJCN2FwNEJoQndLRjBvQi1CbEhvVk1zREhEa1QyRjlhazlCRHFaejVCNUxFNlBCemtCSEI1b0JxR0NtQ3NadGxDRTdpQ21oQnhVQndVd3FDMHBCcjZCd3FCc2xCQnZuREJDQ3BVenFCMVRoZF9Ua2V1RjdrR0JCREN1VXJpRG40Rm5EQkJCS3RVMDBFMVpDQjJVSnNVc3VGQzJVMjBFMVpDSkNvVTN6RUVlcFhzQ0NtQ0twVTYwRTFaQ0JCRXRVaHBCdmlCX1JyVjFkX0VCeVVucEZCeFVvd0U5WTVrQi13QjdZckNsNUJpWkNxYno5Q2luQ3V6RTU0RUI4OUJCcG1EZ2xCck1DQ0gyU0JCQkJCQkJDQkJCQ0RCSnQwQjNVZmpFQzVCRnZET0VGTFVzSkJCRENuRm5CSVF5QzJEdENnSTJDaU55QzZNakJQdkRuRlhJX0YwQ2laR3ZxQzNVQkJCLW1CbUNPRnRCamFqcUV2RnpVaUZDaWFvcEZDbDVEQnNKbGlFd1YtZjBFQm50RXlWWWdEVDdtQnVzQ19vQ0JySkI2bUJuMkJxdEIwYTRFNm1Cc2pFblpDNW1Cbi1EQndGdmdHQkNCNW1CMThFQzktRTVtQm43QnZoREM0bUJ0aENxN0NDM21COU90ekNzM0JpREN2bUJpMUItbkRDdW1CLWpEdWZUdG1CemtCdC1DTlRnVWlGQ3NDc21CcjJCQkJwdEN0WkN4bUJ5YV9qRHJFTndtQnphd1l2ckNyRU5xb0IxX0RkeUkxekZDMklCamxCNC1FdWpCNXhEZ25DTDdDREJCSXJqQjhoQ1pVNUItSG1tQmRfbEJhNERxQkNCempCX19FQ3pqQnd4Q3d1Q0NpcEVMMW9FUHJYaUtpV3ZwRUgzT3dwRUgzT2hyQmk5Q0JCQkJCQng0Qi13Q19XczhGZ25FQkJCQkJfckItZUs2RnBGdUQ3YnNMcEk2QnRhQkk5RDZUV29wRUI4ZnVyQnMtQkZ0QnA1RXFRcTVFcVFCQnRxRUJzQkhCRERHME02UUJCMWZ3bkRVZ0N5QjFmS3JVRzBwRUhvckNzLUJCQm41Q25NUzhKaVpoQmpCSzliTTJsQnI3RUJ4OEQ1bkN2NUZwRHd5RHBxQ3Z3RG5OeFhEZ0VuREJfNkJDZ1BDUENqTUdwQjdQQnpVZ0ItV3VFU0JwSXdCSHVHMC1CeEp6aUJ3QzJCNU4tWDNFNENtQkJCQ0ItNkJfQmREN0gwaUJuRDdsQmd4QjNSeUZsekNCQmdsQ19ReXVEQjM1RnBEQjl0QzhJNUdxZi1YbU04bEI0M0I2akRCQjJrR0I5bEIyM0IyUWw5RkJCRGstQlM1Ry1DblEtRUJEbmxDeF9EQ0tCUzZrQ19RQktCQnEyQ0dHSTFsQmtZQkJzbENfUXl1REJzLUVCQzU5RUZEdkJCQnFtQm91QjRUYXNFenZCX2hCYTlrQmltRWdCaVpDQnJtQjEtRUNvekRCQm45Qmlja1RqdUItQ0JtOUJvT2tjQmpXMlh0dEJzekRCNjlCX0hyRHNqQjN4QmdsQjd2RHV6Q0RzaUdlQkM4LUVoQlRCQkJnbUNJakQzQnJlR0JCQzI5QnpCNUcwaEJ0S3NMSGltQnE0RXlERklNZ0RCQmhtQ3hfRHBtQjc2REIzS1MzSXc2RnlDQkJ5LUMtbURDREJqbUJvZ0J1ZHREcU1IcktZcWxCdmJuR0JCNkkyM0ZDNUlrdURCM21CcVZDeURMblZySkItc0MzbUI5M0J1aER5RkM4bUI3X0VsQjZpQ254QnN4QkItbEZ4ZUJDN21CcWhDc2E4aUJCQmpCMmNfQi1tQnNaeV9EYThLOTZGQ0ZCQndsR0JEOG1CODNCaEJvbUJCaUJzbENfUXl1RG9fQi1tQzNtQ3BwRHdfQnUxRTEzQzQ2Q3RzRHNzRHJzRHFzRDkzRl8zRngwRnkwRnAyRm8yRm4yRm0yRmsyRmwyRm8tRnItRjIyRjQyRjgyRjEyRnkyRjN0RmhzRGlzRGpzRDF0RjJ0RnYxRnA5Rmk4Ri1tQzNtQ3ZyRDVfQmx1Rml1Rmh1Ri10RjhfQmc4RTI2Q3UzQzdDajJGdDFGczFGejlGNjhGdThGcThGMzdGcjFGbDFGazFGcTFGZzFGajFGcDFGXzBGOTBGODBGbTNGbzNGcjNGbDNGejNGajNGazNGcTNGdTNGdzNGdDNGeDNGdjNGNzBGd3pDNTBGMzBGMDBGdzBGdjBGdTNDZ0QtNkMxN0MxM0MwQnpCbUptMUNKQ3JGaUVyNUM5bUJ2OEJnbUJvNkUwRkNnQjZrQjN1Ql9CODBDblVTQmhCNGtCajlCc3VCMDBCQzNrQjI1QkpDdEoyakNnQjFVdEJ6aEdCdWtCXzVCSkN0SnFJaHhDazJDOTFDb3dEbndEbXdEcF9CN19FVXRfRTNfRTlfRS1fRXpfRTY3RWp3RDF6REIyekRCbXdEbXdEaEVCMnVEbTFDeUJ4Qmx4RnB4Rm94Rm14Rm54RnF4RjV1RDZ1RHl1RnV3RnR3RnB2RG92RDR6RjF6RjB6Rnp6RjN6RjJ6Rm8yQ3RfQndoRkJpZ0ZkY25fRXhCQjJoRkJ6dUNxNkVqNkV1Z0Y4NUVOQkJ3MkVodEVoNkU5NUVOQkItNUVOQnI2RUJyNkVCcjZFQi01RU5CLTVFTkJCcDFCczZFQkJ0NkVCQmg2RU5CQi1fRXY2RUJ2NkVCdjZFQnY2RUJyX0R2NkVCQnc2RUJ2NkVwZ0ZtZ0Z2Z0Z3Z0YtaEZCZ2dGT0J6OEV5MkM3d0RZWC1rRTh3RF8xQzBuRFZrdkZzdURfLUZnX0YtLUZqOEZpOEZrOEZtOEZuOEZsOEZ3OUZ2OUZ4OUZnLUY4OUYtOUZfOUZoLUZpLUY5OUY2OUZ1d0R2d0Q1OUY3OUY0OUYzOUYwLUZ5LUZ6LUYxLUZxLUZuLUZrLUZtLUZsLUZvLUZwLUZyLUZzLUZ2LUZ3LUZ5OUZ6OUYxOUZyOEY3OEY5OEYtOEZzOEZxOEY0OEYyOEYzOEY1OEY2OEYwOEZ5OEZ6OEYxOEZwOUZxOUZzOUZ0OUZ1OUZyOUZnOUZoOUZpOUZfOEZtOUZqOUZsOUZuOUZ2OEZ0OEZ1OEZ3OEZoOEZnOEYwdUR6dUR5dUQxdUR1dUR2dURydUQtdURpdkRfdUQydUQ1dUR0dUQ5dUQ4dUQ3dUQ2dUQ0dURxdkRydkRndUR4dkRwdkRtdURrdURqdUQ2MUM2MUNnQ2hDQndqQnctRTRwRUJCenhEQl9CQks2YkJ6MkJnQ0I0aEdEQkJEMUVCQ0RCdmpCQjhqQndpRkIwTC1tRXcwQkJ4UGlqRThGRjZCQ3pFbHBCRDlqQndnQ3JzQkVyakJCQmdrQjBfRFNCQkRsSHVJclVqZ0R4ZUVRcnFDc3BCUjd2Q1FCb3ZDamxCQ3R1Qm0yQmpaaXpDRmoyQmlWOTBCRDZZZ0JCajVFQklqMkJzX0J4SzBleUJqQm9fREJvYkJCMnJDM0RxQjg1RURCREppR0JCb2dFQ0tXc3FDUDNEdkJrekN6dkMzd0JraEJtakZCcTdFSEV2RWxCakJCa3hDQ212QkREcFpCRGhCczFCTnpyQ0IzRHlwQzlCRzRCajZFQkJCQkZCSEJDQk96MUI3Qm5YeXdCSkJXSkpqakJOcTlFbEdCMmtCcWpGQ0ZZUmxqQm1qQjVfQ3BleUV2a0J6akY5QnpnRnlsQkIzTUIyTXB1RW9VUW9rQnQ3Qi1uREMta0JCQkZKcGtCc2pGQ0ZVSXlqQmgxRDJ1QkNQcGtCdGpGQ056TXd0RU5CaE50dEVCcjZFNklCZ05CX01CLU1OdGtCdWpGQ05za0J2akZDUjJrQms5RTlGQzRrQndqRmFoTWtqQ0kzeUNGQjNrQjlsR0JOcWtCdXVEdUc0dUJrQ2ZyMERTaXdDX2xHQkJNUnJrQjRfRUYwREJOam9HUE9EbzJCeHFDQkJMaGxCcTBETENCQkprbEJ4aUI0eENodkJCTEJrbEJvZ0M0R3IyQ1NpRkNHQzJvQjdoRkkwbUItakZncEItNUVTaUZDdkNCQnE5Qmg1Q0JCQkJDNUJCQkJCSkJCRkJVMmpCaUMtWTFIdkRMdUtOekVwSi1FZVA2SjhlM0dkTE9HQ3lDOUVqSnNVaG5CdGhCeTZEU2lGQzVsQjIwRG51QjRsQjZ3RGt5QjNsQm5vRUIybEItaUZDcUR5Smh1RS1Gb0NFdWxCbUJ2a0Jta0ZDdWtCbmtGQ2loQnpuRkNoaEIwbkZDOG5CdWdFemFnSUI3bkI5dkI3Ym0wQnhENGxCNjVFUzZFSUNvcEJsOUVxQ0M4Z0MzWjJSczFCQjBENmxCMFp2YjFNQnNCdHNCX0M1RWppQnlEcUNDZzNEQmt3RGxCQjlvQnFpQzd3QjhtQjhGQ3RHa2pCbWxEMzFCQjNFc0RKX2xCMVozLURyRTVDZ0NCQkRxcEJ5M0I2aUQtcEJvOEVNRFc2QmpCZXVuQnNoQmttRHVVU2lGQzhtQjU5RWpCZXhDdG1Cd21Cc1pNcUJrSGtXQkR0bUJ0aUI2UW1GOWpEcEdDQkJCQkJCcG1Cd1pKMklaaFBnQnVIMkowQjJ5QnZQbVVOd0JIcURGNWlCb0RnZ0J2WHVGM2lEU0NDaEQ4bEJ2bEVobkJqaUZDUmwyRG9vQjZuQmpCQkUybUJ4WnNKaVo4eUJ0YW1UYWlGQ21DQkUxbUJxWjBKaVo4eUJ0YW1UYWlGQ21DRkJCeW1CaHVEbVRqSHVVU2lGQ2pPMm1FcU4xcEVxWGpuQmxacGpFU2lGQ0YzbUJwaUZDRkpxbUJ5WkcwWlQyaEM0c0JDcU0zakJrNUVDczNEaFF0M0RudEJCQkZCQjVtQnBiblB4Si1PeUN4S0xvbEIwbUJhaUZDaG5CN3VEQjJ0QlNwaUNtM0RuM0RzM0R0M0RwM0QxeENCdGlDQ3NpQ3FpQ3BuQjdhbjhDb2xCMEZDSTRtQno4RVNpRkNsaUNfaENsZ0N2aEMtaENqaUNsaUNqaUNoaUM3aENtbkJsbkdCQkJIdm1CX2N5bEVDS3FtQjV4Qnl3Q3BIcVRnSXptQjdha29FOG1HQkJLSl9sQmlhQld2TzhjUW15Ql9CRW5pQlNpRkN6bUJ4YTdJNTVEU2lGQzlOcHBFRERCSW1tQm9hZ0R5bEVDOWhDOGhDMmhDcWhDM3pEQkJwaENyaEN1eUJCcGhDb2hDaGhDZ2hDaWhDbTlDM3pGMDJGeDJGMzJGNDJGODJGNzJGMjJGdzJGejJGdDJGdTJGdjJGcjJGczJGbDJGbTJGbjJGbzJGcDJGcTJGajJGazJGNTJGOXJDZ3NDX3JDLXJDM3NDdTBGdzBGX3pGN3RENnREdjBGbXVEbjlDanpGenpGX3lGLXlGN3lGNnlGNXlGMXlGMnlGMHlGaHpGZ3pGenlGeXlGeHlGaXpGNHlGM3lGd3lGOXlGOHlGMnNDMXNDaHlGMHNDeXNDenNDeHNDd3NDdnNDdXNDdHNDc3NDcnNDcXNDbXNDbnNDb3NDbHNDa3NDanNDMDFGNDFGMTFGMjFGXzBGNDBGODBGNTBGNzBGOTBGaXNDN3hGNnhGNXhGaHNDNXJDNnJDN3JDOHJDc3lGcnlGcXlGcHlGb3lGbnlGbXlGbHlGa3lGanlGaXlGM3JDLWhDNmhDNGhDc2hDQ3FoQ0JwaENvaENuaENsaENraENoaENnaEM3Z0MxbkIwWnhpRVNpRkIwbkIzaEJ2NkRTaUZCNEs2YzJLN2M2aEJ4Z0NpaUZoaUZuaUZtaUZsaUZraUZqaUZfaEY5aEYzZ0N2Z0N5Z0NuZ0N4Z0NoaUZvaUZuaUZsaUZraUZnaUY5aEZrdUMzZ0N2Z0N1Z0MwZ0NyZ0NtZ0M3a0IweEI2a0JfNUIydUVQQnpEMkJ6ZjdyQjFSbWhEbkd4dUJqX0M3N0JDdHlFQkJCMlUtbUVxSzhKelVpRkM1LUZrREJzdUJ2aURnQjVCeFI1SWhCd3ZCazZFQ25pRzN4RW5OQnBRQkJnVnFlcTVDSnlEQ01oQjRCc1ZfQkJCaFZ5LURvSW1VVC1aeGdDcHZEQzd1Qjk2RUN6OUZ1QkJCaHpEM1pCMEVuSl9XaV9GcERCMnhFSGdONHpFQjF6Qmk2QjJmQjlCaEQyV0NIRnpDdE9CQ09CQkRCQkJCQkNCQkJCQkJCQ28tQzZ6QkR5TThJZ0kwS0JCQkNDQkhtekJEaFE5WXRRZ0owR3NELU1KQ0xsRHFDb1V2SXhPQkJFQ0xGQnVqQnQ4Q2lRZFFnQnVCQnVaTWhZSnBqQml3Q3pjRl9IQnBqQjJzREY0eEVCcWpCM3NEQkJEaklCcmpCNHNERkJzakI1c0RGbXRFQkJvUUJxUUZCQjV5RWsxQjJCQkRCbWhDM0tEbkUxRGtDNEdqbUJGREJHQ29RNDZCdF9EQ0N1UWgzRkJCb3JDeF9ES21RbjZGQzVRdnZEbG9CeWtCNFF0c0NDaUdCckk4VTNleUJuRHlqQkI4cUdCM1FsNkZGb1FuM0ZCbFF0d0RrUXd3RGluQ0JCbUl5SUJCdHZDbGdCbnVCTzlWRlZ0RjlCdkpfdUMtU3lJeHJCQk53ckRsdkJpRWpGQkJDTkV5SkN1c0N1YS1DbHJCakZnZkM2dEVfUUJCREN0a0ZTQkdOc2tDOEw1eUJFdnhDQ0NCcEYxdEJ1TzFNYkJ1Q2dPQkJGUTZKdzZCM0huRTV5QjVYdUVCREN1MEMtV21EelZ3WklGTnl6RG93Qk9OM0NuNEVtREV5RkJCR0JQX3FEaDNCM3JERUdUaHNDZzNCSkpuWHBDRUhxRHcyQmdWT3MwQlNuWGNCQkJCQkQ3dUMwY3VDTVV5UEI2RjlCeFpXTm14RXZKbkhnQmVCQkcxOEM3LUJ0QnlFQ2w4Qi1uQ0RCT25YX0tCQkRsNkIzcENCZHNyQ3hfRGJ0NEM0U21EQzd3QkJERURITUo0SnVzQ3hVQlZpQ2tXek5zSkNxQmxCV0VDWDlCX0JvQjdtQmxCQjV5RWsxQnBCcy1DX2dDeERCQmR0OENYX2dDeUJuRG5EOGtCQkVmdEhpSjc2Qm4xQmpWelBsSDJENVVhVnRFQ0tvUjg2QjRsRDRUYmlGQ3hSMjBGMEZDTmpSLTZCdF9EQ0dvUnpnRTY1QkNHblI1Z0Y1VGFpRkNTNlFpN0I0bEQxWkNCTG5RWXBsRTNQN0wxWkNyUTlvRUlGQnFRa29FQmgtRTZJQnFRQnBRQm9RTWhSNWhGNFlDWldDN1BsN0JpaEQyRTFaQ1cxUW03QjRsRDFaQ0ZCdEg0bENtM0IxaUJCSWhCSHU3Q1AzekJnRnR4QkJtUnM3Ql9RNm9EMEZDbVJfNkZsUm13Q0N2QkM0UG83Ql9RdXVEQ3hCNVA0b0NJZkQtUEJCeXNDX1F5dURubkJfNkM3cENDNGpCcG9GQ192RXdDcEJMRER2TUx1VkJQQkJyTHV6RHJWR3ZNclNCY211RUxYdGhGcVF1aEZxUUJCQ0JDX0gzMkRoUjBSMUJ4cUdCcnFGeDNEamVCQkJCQkJIUW1JcmNzUy1iMlQwR3FPQmxDQmxGQ3NGa0dHMENGdEI0QkNCQkJKcVVwQ0UtWnZCNEVFQ0hRbUlxY3J1QjQ3QjBDRnRCN3lCdkI0RXNsQjFwRG9KV19hanBDOEJDcFRoT2hCUThNOUJfa0IzekNCX0NxRkJvY3VPeHVCNHdCakJLOWJNNldySUJuNUN6V2taaEJqQks5Yk1CaER5aEJsdkJqekR6a0JsdERQQ0R0QmlmcTBFSURESmlkZkJJZ0g2aEZxUUJ6MEU4dkVOMEJCQkMtdkVCNUJQbGdCQkhwSW1jaTlCOWM2U2VEdEI5Ym1YQzFrQjd0RHRCaWY1STlicnZCdFNfckJGdEJCMWtCc3ZCQ3N1QndSanpCbkI0RXRqRG52QkJzakRza0I0OUIxeUVza0JwbEZCakIzOENPRVhfZ0M4c0JCQnRrQndpRm5Hc3FCdS1FajdEQkI5akNLOUJxSHhfREN6cUI0WWtaMk82N0NhVzNFbzZEN3ZDbTFFMTFCS0JCQjBEbGdCeGZoRXlsRUNnRXltQkVzcUJtOEVxR0NCOGpCcS1ERzJEREtsQnp5RkJoSnVaOXhCNE5zZHdSYmNGdEI5Yk1xQ3dVc0ZCQnhsR0NCeGxHREJ4bEdFQnhsR0ZCeGxHR0J4bEdIQnhsR0lCeGxHSkJ4bEdLQnhsR0JCQkJCQkJCQkJETnZJbzVDOWM3VGpCSzliMkNCX0RoYzIwQmp6RF9mdnRGQ25CNWU4d0RCdENkUWhCbkIzZS13REJ0Q2RRaEI4ZXVyRkJCdS1DT2dEMGhDX0JtZDlLQnJ6RUI4ZTRvRm5HOGVpaEM4LUJ5ckI1aUdwRG5fQ0JCQkQ0LUNFRURqMkJ3TDhzQkRCOWU3b0Y4RkNKOWVqa0NDLVVpb0NxQjhhdDBDQ0JDeS1DckREdXhCblRES2xCQl9lNm9GbkdockdCbGUzeUVNNlcwRkNsZXl2RkNtekZWa0JCQmtlMTJFLVlDNzFFeGQwaERtUGxsQkRyZG5LMDNCcC1DbGpGcVF3ekZtS3h6RnFRUEJCQkJCNk1vbUNaemRzZ0I2REY0TUw2UThKa0c3Z0RfMEJMREl5TXhRekdCQkJCcWpGcVFyakZxUUJCQkJHQkN2QjZKNVMzeURMQklsQ2RRaEJ6bUdCN2NveEZDQjhCLWEtMERuQ2RRaEI4YU1oWTNCb1d3OUJzLUJGdEJqekJuQl9YOEUxQmVDa0JDQjhDdUJYTEJCQkJCQkxQQkJDQkJCQkdoQ0ZLNUUtMUJCM0MwckIxbEJvLUNpbkNCbWtGaXFCQjNwR2g0RXlWdWRfMkQ5Z0I3WUN2ZG52RGo2RGtkazJCRkRHczBFOEN6MEJzQkVNRGsxRV9CbjFFQkJCQnVkN3JDN1dHMVFEb0RXNDRCMkMzZHFvQzB1QnlEeVZGeWRtMkUzY0JCQnhkaDNEZzZCaDFFQkJJcmQ2d0ZDaTFFQkNJcWQ3d0ZDRHhkOHdGQ0R3ZGowRU11Y0NEdmQtd0ZDRHVkX3dGQ0R0ZGd4RkNEc2RoeEZDQ0JHRGpkcWpDdUZ1dUJHT3dVQkJ0ZDdsRDR0QklGcGRreEZDMUh3d0M3dEJFNXVCVHVUU2x4R0JreEcwc0ZCQkRCQkJCNmdEdURmbjRCbFhnVm1vRHowRmtvRXZzQjRUdll1aUJnbkRqSnhFb1phaUZDbUN1WXZpQmduRGpKNWRhcUhCdFlvMkZDQkJCQmdZcG5CaEIxbkVyRTBDcUJXX1hCQzhYeG9CMW5FckUwQ2dDQndSX19GeHdHQkJERUJENlg0Z0NCQkI1WENFQjFYN1hDQjNYei1FNS1Dc3dEQ2hnQ3B4QmcyQkJCTGpZLWxCZUpudkdDQk5oWXluQm92R0NCT19Ydi1CcDlCRUJMN1h2bEJYbkJNQ0VCSjZYbjNGRE41WDZuQkU5X0Jub0RCRkwxWERPMFhVMEh4UDFsQk9QZ3hFQ0ZCRkxuWERPbVh1MEY2OUJCQnBZbHRDanJCM1Jnb0JqRkNCcVl2bEJCWHpYem9CcHVFSUN1cUdCeUdCeEl5X0Z3Q2dIQmt4QjNYdWpEa0M1M0JCeVV4OUU4Q3phQlVCeFV5OUV3Q25ZaG5CMzdDQkNOQkppWHFuQnV3RUNCQ1hoWHFuQnZ3RUM2WHBuQnB3RUlDMF9CanJGQkJCQk1DQkhDLVdzbkJrZ0J0Z0NDbkIydUJDRkhYN1c2eUZqRkNIeFg3eUZqRkNlQjRXXzNGQ0RDWHRYaG5Cc3dFQ2NzWDVuQjFrRDdKbGhCQ25ZM3lGQm1ZN29CSnBwRWpGQ2pZLWxCdnhFSUNjQzBXbW1CanNFOUZDZ0JoWDMzRkNERERYNFdqcUV0SXRnQmpGQ2NFM1doNEZDNy1CQmhWbUZwdkJCRkNOQkhDNFc4bUJyakQtbkI5RkNCMVhteUY5RkNHQ05CSl9MM0s1bUI3WjI5QjlMdEl3bEJDZjFXcW1CenhFSUN5WF9uQmd3RUlDNF9CMUIyWHB2QjdpQkJGQkNYeVdvNEZDR0JDWHhXa29CbHdFQ0JGQkNYd1drb0JrcERpbkJDR0JDWHZXa29CbndFQ1JQdVdfbUJseEVJQ0RwWDRtQjJ4RUNvWG51RW9Dc0NyakJ5RUJuWDd5RTRsQkNuWDd5RUJzakJ5RTRVN3RFQ2xVanBFTkRCQmtVQmtVQnlwRXFFN3RCQ2pVNjdGaVU5MUVuQjRrQm1CaVU5N0ZpVS03RkJCQkItVDVwRTdCeElkREtlQkREeld5ekZ4TWhwRkJqVGpUaFR2M0ZnM0ZCei1DQ3VyQnlEYUVrZkJ3dUVFQnhTa2dHQkJEQ0JCQ0JCQkNCOERoMkNvOEM3M0M3M0N6VjczQzh5R0I3eUdCQ0JCcFQwX0ZnMURCQkNCQkJxVDFfRkJCQnFUMl9GQkJCcVQzX0ZCQkJxVDRfRkJCa3pHQnBzRzZHQ0JCc1Q1X0ZCQkJzVDZfRkNDQkJ0VDdfRkJCQkJ0VDhfRkJCQ0JCc3pHQnJ6R0JDQkJ2VC1fRkJCQkJ1VGdnR0JCQkJ1VGhnR0JCQkJ1VGlnR0JCM3NHQnVUamdHQkJ6ekdCeXpHQkNCQnZUbGdHQkJCQnVUbmdHQkJCQkJ0VHBnR0JCQkJ0VHFnR0JCQnRUcmdHNzFEdDZDQkJDQkJCdVRzZ0dCQ0M5ekdCOHpHQkNCQnhUdGdHQkJCQkJCRHhUdWdHQkJCRUNCQmswR0JqMEdCQ0JCMFR4Z0dCQkIwVHlnR0JCQ0RDQ0IzVHpnR0JCQjNUMGdHQkJ0MEdCN3lGeGhCQl95RkNCX3lGdjBHQnUwR0JDQkI2VDJnR0JCQnkwR0J4MEdDQjAwR0J6MEdCQ0JCLVQzZ0dCQkIzMEdCMjBHQkNCQmdVNGdHQkJCZ1U1Z0dCQlVvMEdCNzBHQkNCQ0VCQy1PaGlDc2V6dEJFRGhHdVNNaUJxQnZ2RDBoQ3BldVY0dEd5c0d1QnpFeXRHdkU5cUJ4bkZDNHRCdVFxZGhyRU1uVXhjNW9EcDBGOUV5NkVuTkJwUUI0NkV2TWxSQkNCd2NCMXNDaURzakJuTC1kdEhtTmlGQy1TMUVfOEZpckdqckdCLVMxRS1TMUVpckctUzFFcXlEOHhEX3hEanlEaXlEbHJHQnR5REVrb0dEZ3JHQ2hyR3J5REVrb0dEZ3JHQ2hyR3B5REVrb0dEZ3JHQ2hyR2x5REVqckdCQmp5REZFZ3JHRGhyR0NCaHlER0ZnckdFaHJHREI3eUR6eUQ5eUQzeUQ1eURoeURreURueURyeUR0eUR2eUQ5eERfeEQ2eUR5eUQyeUQ4eUQ0eUQweURxckdsVDFFcXJHbFQxRW05RnByR3ByR3ByR3FyR0JsVDFFcXJHQmxUMUVtOUZxckdCQkJsVDFFbjlGc3JHcnJHQm1UMUVzckdxckdyckdCbVQxRXJyR0JtVDFFbVQxRW1UMUVtVDFFbVQxRW1UMUVtVDFFbVQxRW1UMUVtVDFFbVQxRW1UMUVtVDFFbVQxRW1UMUVyckdCbVQxRXFyR21UMUVyckdCbVQxRW1UMUVyckdCQm1UMUVxaEZzckdCQm5UMUVxaEZ0ckdCQm9UMUV2MkRoQmw1QnRnQkJxNURDcnFGQkJCcDVCMHRDOXZCdEJoQnQ1Qnk1RUN0cUZCQjhSZ3BFTW9Qc09vUXNsRkJCQ0JCNFJ3bkIzOEI1Z0IwWXVDekROZ0J0QmhCbllrdEM4OUJ3Vm81QndnQkJxNURDcFF0WDR4RTFaQ0IybkIydEVlNmNDMm5CcnZFQnVDMVpDc1FqZV9tRWU2Y0NDNXRDeUI5QnlJRDkzQ3lEODVDeTNEQkJCMm5CNTBDMEp3a0JCZ0k0RHZDVzFaQ0JDQkNCMm5CaHlCeGtCMVdDNGJCd0ZsN0V0TkJDR0RCbjVCLU94dUNDQkVCNUU5TEwySkNVdkV0QmhCWF9NQ0JXQjdFdHdDanJDQno1Qmg3QnNLcTBDQ3k1QjJ1QnV4QzFaQ0hxNUI2NUVDQnU1QjZfRE56VWlGQzJOMHJCbFhzSDdwQkJwNUJoaEJwNURxNUJGOGdCaDVEQ3N6R0NvLUNwNkJ4Wm5FdURvVEJCczVCN2tCeFI1VzRVRkdOZTdWaURrWHNHQzRCQ3Q1QjR1QzN0QmhDdmJDOHlGakctdkRtc0JuV3I1Qnl3QzlqQzBGQ0JCMy1EVWxCcmNuWDJNMHBFQ2pHODVFQkJCb0YtbER6VGlPbE9DRG9CbVhCREJCQkJCQkNCQkJCQkNDQkJDeWEtQkJTQkJCRlgwQ0JJczlFQkJCQndGOEJ0Q2pEMXBDNlVpTnhFZ0RpTnVKN0VxQkpVOVZsOUV3N0VCenJENVJyZ0JCTWo5RG9nQkVGdXJEeTVCQkJDQjI3RUI0OURyZ0JfSHo5RS12QkJKQkJDQkJCQ0JHREJHRXlKNkgyQ0JCdDdGMjBHeTRCQng0Qmc1RTdDMzRCeGdFVnY2RjBXQkJCQkJCRng0QkI3NEI2LUUtWkI1VndtRTRCckJDZ3RCZ0JCQkIyNEJ1akRaR0J1TTVOakRGRUN1NEJESERCeDRCNDNEejhFQnM3RjBXQm52RGxuQjBFMlZCREJJeTRCaGlEQkJCOTRCS0JoOUN1YXpuRTM0QmxJakJtekVDMjRCdjhFQ252RGstQnlyRURDa0RzNEJsM0VTaUZDcjRCNjVCcnBDVGlaQ3E0QjRaMmtENEUtVXA0QndfQ21EaFhCSkJwNEI5OEVDOXlEMndCcHJCbjVEQ3V2QmdvRWU2Y0NxdkI4bEZDaXZCMDNDNzBCMVpDMUNyc0JyNUNvVi1kelVpRkNzNEZCMkNyc0J0dURGdlkyQzVDelVpRkM4OEVCQkJwdUI4c0RpNkJDZDU5RXF5QkJ6aUJ3ckNDanRCZ2hCMHZHdkZLMndGNnNCaGpGeUZDeHhCNnBFTnpVaUZDdjdCLTVFQ2h6R1RCZ0NCQi1COXFCN3pDVWxCa1puRG5YcUZOelVpRkNtQ3g5RXhkNXFGcVE2cUZxUUJCQkJCc1I0dEJDamhDbkZyVEJCRUJHLUI5cUJCNnpDVWxCeldtRE9nQjVDb0txTFo3Z0JsQ0ItcUI1ekNVbEJtWnNhbEVsV2lGQzBINmdELTBCQkZMaGpCQkJCQkJDbzdGclI0OUVEeU04UXVDQkJCQkJDcTdGeFFSQkJCQkNrQ3dGMDNCQkJDLVBqeEJ1WVZFNUNoZm1COEU2SkJLSEdHUkJGaUowdkVTMER1a0JzeEZDdGtCdHhGQ3JrQnZ4RkNzaUJoYnQ0RUNoVEJnVHJQaWJyRTV3RDJJcmlCd3pGQ0NnVC1CQkJCcWlCNTFFZWxEMVpDQlNsN0JrZ0RCZ2hCcVp3Q3pCQkI3OEVqRHdWQi1fRTlFbFlhdmYwdUNDNDdGa0tCQnFJOU14a0Q5ZkI4Q3JCRkRCTHFNTEg1UjNFQ0JCZzZFODdGejJEcWxDQkJ6MkRxQ01VeVBCNkY5QmtKM0RDREVNRG1NTG5xR3NCQkI5QmhKenVFZWFyUXlmcHFHc0JCQkJGQ0ZudUQxdUJqQ2p0RDdyRnFRQnE2RTZxQjNJODFFRERER3ZsQkJCQkNCaktNbnZEQjRnQkg2aEJtQmlIQkJCQkJCQkJCQnlJWUJDS3ZwRTBVQkZCSkVFamdCbDlEZ0JrZHdYakRDbGxCdzNFTjFaQ3BsQmh0RTRLelVpRkN0a0I4eEU1R3pVaUZDLWpCemlEbXdDQ252R0J5NEIwNkItVXd5QnVDMVpDQjA0QjFpRW52QnluRkN0OEZnYUJCNG1CdW5FQmpPQloxWkM2SjNoR1JtRERCQkI1bUJ0bkVCak9CWjFaQ19rQm80RXpVaUZDNnVELWdEc0o1VXNfRk1EOUJ0dER5dEJCQkJhN2tGNlFySF9ScDdCczNEM0s4WkJCMGtCLXpFMkRpQml4QnF1RHplQmh4QnBnRkJoeEJ0Z0ZTaUVnQkMwdkcxdkd6dkczdkd4c0ZxUTV2R3lzR3BEenNHcEQ5dkdrcEduN0VCQkJCQkJCQkJCTUNsRHdIa0kzbkUzRVQ3Y2xEaXdHQmp3R2x3R213R253R3VzR1JwRGtCcjVEb1l6TnhNMFlCdDZETU9HNk50VzhNNUlfUEJCQkJCQnJ3R2p0R3BEa3RHcER5LUVfZXZ3R3dFendHQnBnRnVkM3dHNndHN3dHMXRHbkQ5d0ctd0c0dEduRDN0R3BEUUIzdkR1d0J1ZDV0R3BEbG9HQjhCN0l3eERua0JITTBNLXRHbkRfdEduRG54R0JCQkJCQ0JCQkJCQkJCQkJCQkJDQkRCQkJCQkNCQkJCQ0JMQkJCYll0Sm5DLXNFQlNoRThrQjNFUG43RUJCNUJCbjdCbV9DQnVETWhCcFplc0RCTjV6R3QzQnk4QjJ1Qm11R0w3Q0RCQkJDME4ycEJzUS1LNkd0RHRCSkI5RnZUNm1Cd2YzVXdEc0NDbUNCRXFtQi0wRHhFd2EyWTctRUNrNkJDQjdPMVlnbUJ2MkV4bEJ3NUVOMVpDQklubEJ6ekZDdGxCbWxENzBCMVpDNXFHNkdCdnlCcHJFWXphQ3N1R21EREJCaXBCMXhFNEVqcEIzbkNGdm9EQmlwQmt0Q3RrQ3hFTjhYbVItbkM5dEMxeEcyeEdCQjRDbVZodENCRW9DSVU1VWtSdGxCMXhDTWdCd0cwUy1FQkVncEIzbEIxekZDdG5Cb2xCM3NFQ3VuQjgzRU4xWkN6dUdwREJueUJsbkZDdG5CZ3lGQ00zTzFZNkZuRnpjMzNFTjFaQzhnRkNyQjNjQm9FcmpCMzRET3dCelRIMkoxdUdMLUNodkctQ2d5R25yRzFHQkJCQi1CLUQzaEJfM0RFMjBCaUZDMm5CNjNFTnpVaUZDNWxCdHZFQjNLMFpDci1CMC1EZ0M2c0dwRC11R25EbXlHd3lEbHZCRUQ5TXhRcUNCQnR5RHR2QnhkM0NweUdpdkdtRERqdkdMN0NEdnZHLUNsdkdwRG12R3BEbnZHcER4eUdydkduRHN2R25EdXZHbkQyeUd1dkdwRDR5RzV5R3h2R3BEeXZHcER6dkdwRDB2R3BEM3ZHa0REX3lHbnNHNkdvc0c2R2p6RzJpRkR1ZGlLQkJ2RW1JNnpDLWhDQ0RQX3ZHcERqd0duRGp3R29EbHdHbkQ0dUd0QkJCQkJCQkJCQkNCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkRCQkJCQ0ZDRUJkQlBnQ0J1SEp3REVRekZqRHZwQm1CQzk0Q0xCQkhDQ3lDZGEyc0JCc0I4Q0ZLSTM2QnZ6Qml2QmdCd0cxUTdGVk5hNFY3Q0lDbUNtbEI3ckMydEJzQmdCclQwR2U0Q04xWkNuckJrMkUxWkNsSE1weEZCQjVvQno0RXpVaUZDLV9FOXNCX19FXzRGaGdGOS1FbEVGUDFNQkJCQkNqRGpFa0s5aUVfSlVsRDRXQkZDNm9CeTVEZ0I4Sm9UM1VuR0tCaUh0NUJqVnA0QnVVY0ZvZEJ6d0dtREZCQkJCX3pHQkJoMEdCQ0JCeXFHNEZSTDdDRkJyd0dSbURGQnN3R1NxREJ0d0dSckRCdXdHU0stQ0JwMEdCS0JMQk1CdDBHQkJQdjBHQlF3MEdCUjN3RzZEQlNCVHowR0JVMDBHQlZfcEcyS0JXOHRHNkdCWE1NbHRHQkJaX3RHNkdCYXd0R3FIQlFNQjgwR0JkQmUtMEdCZkJnQmcxR0JoQm54RzZEQmlCb3hHNkRCakJqMUdCa0JrMUdCbEJydUdCQnR1R2dEUnBEQl94R3JEQmd5R0JCaHlHcERCdnhHbHlHbkRCbUN0MUdCQmt4R2M2RWx5R3BEQjd4R3YxR0JueUdwREJveUdwREJweUdwREI4aEZCQkJsZ0ZCQnd5R0JuREJ4eUdCbkRCQnp5R25EQ0NDQ0JCQ0NCNzFHQjgxR0Jqdkc2R0ItMUdCXzFHQmcyRzZ5R25EQkJpMkdCQkM4eUduRGoyR0JDazJHQkRFLXlHbkRCc3ZHNkdCLXlHcERCX3lHcERCcDJHQkJCbkRCb0RCb0RCb0RwRHIyR0J1ekc3Q0ZCdDJHbHpHcERCQm16R3BEQkN3MkdCQ296R3BEQkRCcHpHcERCRkZCRnN6R25EQkZyekdwREIxMkdCSEZESXR6R3BEQnRFbkV1ekdwREJCNTJHNTJHQ0M1MkdCNjJHREJFQkJCQklCSkpKSkpKQktLQkxCajNHQkJyRTl6R2tEREI5VTlVOVVsM0dCQl96R25EQi16R3BEQkJpMEdpREJCd3dHbENCazBHbkRCQmowR3BEQkJsMEdwREJCQm8wR3BEQnkzR0J6M0dCQjEzR0IyM0dCdTBHcERCdjBHcERCdHBHdzBHQmcwR1JwREJCQnowR3BEQmdzR0QyMEduREIxMEdwREIyMEdwREIzMEdwREIxb0c0MEdwREJxa0Zxa0Zxa0Z0ekdCcHhHNkdCNzBHTC1DQkJsNEdCbTRHQmcxR25EQkJnMUdCSi1DQkJCazFHQnl4R2lCNEZCenhHekRuREJ3SUJCQjV0RzJLQkJCeDRHQkJCQnY0R0JxMUdtRERCQkJyMUdtRERCQkJCQnQxR21EREJCQkJCdjFHcERCdzFHcERCejFHbkRCMDFHbkRCTjV0RzRCLUlCanlHekRuREJCQmc1R0JCM3hHUXpESi1DQm95R3pEbkRCQ0J3d0d4SUJsNUdCajVHREJCQkItMUdwREJoMkduRG81R0JCQnI1R0JEbEdvSGhLNUhuSHlmMEh6SGk1RHM1R0JrcEd2TTNEQmxwR3BRQkJzNUdCdDVHREJ6S3ByR3pLcHJHektwckd6S3ByR3pLcHJHMzFHQkMySzJLMktuckd6SzlIMkh2SDN0R0k3SnBIcEg1SjVKc0hzSHlKbkhuSG5IbkhtSGxIekgwSGpIMEhrSGhIMkoxSTNKZ0hfR19HeUg3RzJHNEcwRzVHQjFKM0k0SnlHcUdxR3FHcUdxRy1HOUc4RzFHeEczR3pHb0dtR3BHbkd5NUdCa0l0R21HQjFtQzZnRTFaQzNtQ3Q2RUN1dUI0LUMtekNDdmxDN2hEbmItRWttQ3JoRXpVaUZDMm1DNWdFelVpRkN2QzlyQmo1RTFaQ3RDNnBCbzdFYTdZQ3VyQmk4RTFaQzd3Qi0wREdsaEI1dUI0MkVrTHNqQi13QjdUdkRuekJqYmpjQ3dOSTQ0QnozQ0JfcEIxUl9Jdm1Dd3hGM3NCQmx6RHhSaHhCT0dCQ0JlcUprOEI5d0J4RG5IdkJUOFRtUW9Nck1pQ25Fb1U4RkNtQ2hSeTFCRHhObW9GT0dCQkRCZXVsQ0IxRm5yQndHTWdxQm9NMlNONVQ2Q2lEQ3htQ0JCQ2hCbklsOUJDQjVVamNuTVQ1R2pOdWMwU0NONVQ4RkNZeXVCbmxENFNoRW9aTXVjQ2pOQldqdUItNEV6VWlGQ2xOSEkyUjFyREJqTkktUjhsQnROQnlMdjZCcWxEeVY2Z0JpWTFWNnpGQzJ0QjI2RDBWOEoxWkNFaGxDMDhFQndJOU8wWXBtQzItRHBtQ3N6QnJyQ25tQ2gzREIzSzhaQkNCMU04Z0Iwb0QtdkJ0V0JCQkIxTXpnQjlvRHJtQ3B0QjYzRUJCbXRCN2xEdWRsWWlaQ0l3dEJnMEZDdG1DMnVDelc3RS1GblNxWkJEQ0IxTXg1Ql92Qy12QmN4Vk15TDVfRUN3VnZuRzlGM2tFOGtCLWpCQkJvRDNYcHlFTWxkbzNHbkRCQkJCb01zNERtaUJCRkJIQnp0QjRzQy1FeXBCX2FlbEQ1VDhGQ2hPdWZydENDUkRzSTVPMFlvVnF0Qm1sRHl2Q0N6bENoaUVCQkJCd1lDNFVzekUySHpVdnRCbzBFNUdUZ1VpRkNxeUJ1dEVDQjlENEU3ekd6RG5EX21GanJCcUJReER3M0duRHgzR25EQkJCQkJnRkI2QjVSdUZpbkRWNkUwQzRiY2dONUktSzVWcDZDMTNCNUM5TXVhQnZFRTNCVEVNWkJCQ0s1NkQtN0JCRWEzSGk0Q3BYZndtREJEZWxMQmhCbGxDeWpEbm1DLTNEQjNLOFpCQmRCMU15NEItd0M1bENySDZvQnR5RkMtdkIweUZDaW9DdzZFQ3hIdmdDd2dFTjFaQzRtQ190RG1VMVpDNjdCMi1CbnhCd1ZfWklCckpCQjd5QnF4RTRFQkIyTW1tQnppRDZ5Qm4yRTFaQzdPQnh4QjlxRDlqQkJuR2hDZ0JCQm1KbUVsa0JzaEQ1T3pLbEw4UkJ5eEJ5M0V6d0JueUZDQjF1Qnk1RWV6VWlGQ3NCb3RCejZFMVpDd29HMXFGT0RyZEJCQjloQjVNaG5EdVVnQm1VR21CcnRCN1ktc0NyQjF2QkkxQ2VCV3pVelo2MUVKdUMtQlRFLVlDcTRGcVFrckZuTkJwUXo3R0JvVnlsRF9yQmhFbnJGRHVkMkMtM0dSTDVDQzU3RzY3R0JCQkhCOFdtMEVESlFrTXhxQkJFQkJCQ0ZUME1DMVU3bUZCTkUwdUJ4UDVKbHlFTWxkNGpFMjRHcERxeEc4R1RrRERCQkJCQ0hIVHlJQnNEWG5LdUs2bkVCOEJCRTZLNUIxUjVuQjRpRG5iOUVCQkJCQkJ0WUM2NEdCQkdPakJCQ0ZqbUMyN0J0VUQ2QjJ0QmlDd3RCajBGQzROVDVnQnF0Q0MxUDBmcDRFUGxDRHNJN1d6UW5WbHhCd3lGQ0J2bEMxNkJ1bkNqY0M0ckZEeU04UXRFQkJCMVB1MUczR0RwOEc4cEU0bkNrQmk1R3BEbDVGcVFtNUduRG41R25EbTVHcER4OEdwNUdwRGIwOEdCQkJCQkJCQkJCQkJCTmhCTXlHWGhGOUJ5Ujg1QzZyQkJzQjlCYnRzR3ZNVG5EZ0JtNEdiVDQ1R25EaTlHajlHLTVHbkRfNUduRC01R3BEaTZHQm5EbzlHRnM5R0JCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQk9CQkhCd0JCSDlFZ0RCdkNVSkZKR3JCN0hQVkhIdnpCM3pCX0R5Q2lCdkZzSnJRRElQdW1CakNCQkJCbElyQk1CQnVEQmtEREY5SzVCczVCandDQjJTY084QkJGcXRCa3RDeFdfWHdIc0RxSzhKVHlJMEtuRzJDZzNFdU9yRjJtQkJCQkJCQ0JCQnRJeTlHcTZHcER0NkduRHU2R25EQkJCQmhDdldDTTQxQmk2Q0JCRkN5Q2dCanJDQ0JJc0I3Qm5tQ2xRcmZveUVvRkpzRTFaQ3pMdkV1NEUyRDhOTEhtYXlHQkM0US1KanVFN09JOVVucEVGQjNNTG90RklEREcwTXhRbG9GbzFFaVlIQkRKME14UTQ2R3BENzZHbkRzcUZqckJyRmstR3VxRnV3QkwtNkdwRG8tR3lxRnl6Qjh0Rm5OQnBRMHFGOXNCekRpREJCQkJCQkJCQkJCQkJCQkJCT3NCWkNCQ0dFY0JSQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQ0JGQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQ0JCQkZCQkJOQkJCQkJCQkJCQkJDQkJCQkJCQkJCQkJCQkJCQkJCQkJEQkJCMUJGREU1Q0hFMExuQ0d0ekJVQ3JvQmdRM2dCa0JCSENuRmtmZ0J2QzhEQlNCLUpNNEYwTGtHOG5CNF9Dd0ZnVUJtRDFCM2ZIdFNCOVBJazZCOWlEMUN3VmpEdmRDOFJCaEJpREJrTGc3Ql9pRHdIMFd4QmlaQ2xpQzZqRkM0UHltQjd5RU01QzFaQzRQeG1COF9DeGtCMFItVG03R21EREJvRGd4QjN4RkNuN0dtRERCb0RCX3dCMTNEcGRNNUMxWkNrY0J6ekJ1eUZDM3JDN3JDNzBCMVpDbXJDODZFQ0J4YzBaOXZGQ18xR3JGbUREQndpQnRScmxENFNlNENMQm5aTXVjQ3dyQ3Z0Q3p6Qjg0RTFaQ3JxQ2tpRTFaQ3hyQy1nRTFaQ3M3R3BEQkJ4eEItNkUxWkNzeEI2MEZDdTdHcEQ0LUdCQkJ3Q2lKdkVfQmtHQkN1Qm1vRG1zQlQwZTBDQ0JEQkJqTkNFS0JpUUktakJxNURnQjMzQkNyUThqQnU0RTFaQzAwQjJ4RkM2LUdfckdCQkJCUDZOaVhvMkVCQjlQS3NoQnc0RDBEZ0IwMEJqREM0N0dtREQ3N0duRGpfR2lfR0JCQkJCc0I3Q29CQmxFX0JrQ0pnQ2lYRkJCcmlFOXVGbk5CcFFxX0dsOEdyRHZfRzI3R1JwREJCQlZ0Q29MeVU5cUV5X0cyX0czX0c2X0c3X0cxOEduRC1fRzU4R25EajlHN0NGNThHcEQ2OEdwRHE1R3hEcERCQkJCQkJCQkJCQkJCQkJCQkJCQkVCQkJCQkJHQkJCSkJCQkJCQkJCQlVzRkJCQmFOQkJCQkJCQkJCQk9jQ0JDQ0JCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkNCQkJCQkJCQkJCQ0I4QllqQ2Q0SmdDMEhzQkRydUNqbEJ0TjdyQmJNSGhIV0JCekN4QnQ3QzlGM0xCMHRGQkQxUkRoQmk5RURCMUI1SzZOaURZQkJodkZuYmtYQkZwU0JETUduRmlvQ0JxR2tsQzloRXdhQ0htRjR1RkJrRC1DM25Hd0d5TDVfRUN3VnhUQkJCQ0Y0UV9nQ2luRkMtZ0NqbkZDOWdDcG9ENy1CQ21rQjJiamtCNGJCa3RET3o2QkNsa0I2X0JodUREQnNidGtCb29GQ3N1QjI1RkNydUJrN0VxdUI0NUZDcHVCMHJDQm91QjY1RkNvdUIxbkNudUIxLUV3VkRTaUZDdWJ6a0JvUV9lMS1CRC1XQmtqQkMxYnJrQjFPMEJfZTY5QlFMaFhsakJDc2J6a0JxUV9lMS1CbTZCQ3E5R21EQjBnSHdfQjBvRkN2X0JCa1ZxcUJ4N0NvQlF5ZHRfQjI3Q3V6QjFaQ0N0X0JxOUN6TXZkN0czQ3hYQkJCQjNFNE1MLUt1S21ZQmh5Q2pGc0V5RXBNMkRoQmdOa0t3R0VjMmdIdl9CazRDaDNCbl9CX3ZEdWY1Z0h4ckdzYXFFS0J1X0I2bERyb0J1VDhFVEJCdV9CaDhDalZ2TTdRQnRhQ3VfQm9uRWlEX0N1X0JwbkVpRF9DQkJEcF9CcHlDbUZqRzNFek55Q3NTNUJ6QmlDcWVCM3FCb2dHQkNCbllubkJxeUN6Y3lEOUI3VGlDaUZwWHdCR0pOQ21DRnBfQm04QzlVR3FkQmlFcldDeGlDLWtDNUJ2eUI4bUIwRklDbVZscUJ2cUNzS3EwQ0Ntb0dCQmdWRUJ5TkNDdWNCbm1CNEpoWWtPNXpCcmRsX0JuX0I5cURCcmxCQkJrX0IzV3VuQ2tMRS1CdEdsYUl6RDFaQ0JsX0JsX0JuZ0N3RXNJX0x6TnhYa19Cd3BGQ2pfQndiQkN5X0J4VDJjVklDTU02VzBGQ2lfQjRzRU11Y0NoX0I3ckVlX0NHelVpRkNnX0JfdkV6VWlGQzYtQmx3RTFaQ18tQi1qRjN3Rm5OQnBRN3dGRHZNOFFKQkJCeEcwS3BCLUp6QzBJclhua0I1dUJ1THhPRkI2RGhCbFVsQjhFTjNXdmN4aUJoekM3SnVCcm1DZV8tQmp3RTFaQ0JCekdxNEJqekN1THhTaEJsVWxCOEVOSk1nQzktQnpsQ0NSREJrb0NoVnNHQ3lrRVZCOC1Cc3NFakN0YkM3akN4N0JtaEJqc0JCdUMxWkNCNmpDQjktQmdlOS1CcWY4LUJwZjJxRUN4Nkc2R3JoSHJoSHJoSGktR3BEaDZHcUhyaEhyaEhyaEhrLUduRHJoSHJoSHJoSGktR3BEcmhIcmhIcmhIcmhIcmhIaS1HcERyaEh5LUI2aEU5SC1HOFpwbkdTMkdXQkJ4LUJ0LUM3aUNseEJvN0MxWkM2aUNqbUZDdGhIdGhIQkJ5LUJyaEhEQ0J2LUJ2LUNEQnUtQnctQ0JCdy1CRHUtQnAtR25Ebi1HcER3LUI3N0M0Q3F0QjVxQ2ppRUJqY0N1LUI5d0UxWkN0LUJ6cUZDcy1Ca2Rwc0RqRkJ6Qm1VcUdDci1COTdDekIxdkJHb2FxLUIycUZDQnAtQml4RTFaQ19WcW9DclI4dkJ1b0I0R1cyd0NDcTZDNl9CQkJtLUJ3NUJsLUIxeEJDbjVEQ20tQjZ1RWpjQ24tQjF4QnlfQzFaQzh2REJCQy05QjQ1Qm1FXzBCQ01JeU1rWEJCQkJ0akNwbEJyZkU5RUNEeTZCaEJHdEQxQ3FYTTBDZ0NCVXg5QjR4QkU4WndCX3dCaVM2VThGQ2wtQjV4QnlfQzFaQ0RCZy1CMjVCRV85QjM1Qi1wQmpVMnhCdllfRXJpQ2pVREM4OUI2NUJfOUJnc0VuZkNDODlCbWdCX1ItWHduQ2pVOTlCNmtDemxEY0MyaEhsb0UyaEh3akMtbEZvb0U5RUZCQkM2OUJzakM1R3duQ0VfVEJENTlCbXFDejdDcmpDOWxGQzN2QzM4RE11Y0NzdEdCNDlCdmdCN1JFcFhybkJ4QjBhSjlCQnVDMVpDQkJnVzJuQmt5Qmc4QzVEMzlCMnZDbDhDQmE4OEJ2cUMwWDI5QjFyRkMxOUJ2b0NqUVBqekJrZk9DMTlCcHlCSF85QkJ6OUJ3b0M3a0M0RUJ6OUJ6OUJxcENCcDlCeWxGQ3I5Qmd5RXFhdzhCc3pFMVpDdjhCNG1CMlYzVUJwRS1nQ2czQkIwQnZhQ0NCcjlCNXJCM2V6aERDQ0Jta0JqWjVNODhCX19DQ3A5QnltRjBGQ3MyRUJDQkJEbzlCd3pEY0ZvZEJoWXNDQ21DbTlCaXFGc0NDbUNCRmc5QjhvRWdDSUd4YjBGQzU4Qmt2RWU2Y0NGejhCenJDcWhEQzE4Qmd0RkM4OEJtNkJvRl9LRXFGZ2xCR3ZNdk9NZ0NCSmthQzY5QnVwQ0RCNTlCa3NGQjU5Qm95RWxvSElkb2lIQkJCNDlCcHlFcFgwRTY5Ql9yRkNCQzdDdEQ0TUx5SXNDdGZ0dkRCQkdCekRoQkRuMUJhSXlERDE5QnN5RXBYMEVMbTlCMjZDX3FDN0dnQ0JLaTlCMTBEcWRCSlAxWkM5eEZuTkJwUS14Rm5OQnBRTUJCQkJHcjlCeXpEY0Z0TUxCMDlCN3VFMDlCM3lFMVpDaXlGbk5CcFFCQjZHdk5ycEJ4OUItNkNtdkMwQ2dDQlQ3OEJnbkYwRkNCQkYzR0RzTkJ2UzFXNVV3Si1nQm14QnlDYmZDNE11SWlJd0J2UTdDMEZDQ3Y5Qnd5RWlhQ3c5Qm9tQ3JtRENVNjhCaG5GMEZDdDlCX3pEWkREQzRNd1FCaFlzQ0NtQzJfR0JfNUdyRnBEQkRfNUdyRnBEQl9vSEJDT0kzOEJ3cUN6b0NwWHNDQ21DQkNCSEpDOFNMb0tzZnVXdjJCampCRUJCR0J6RGhCRGdkbllzQ0NtQ0ZfNUd0Rm5EQkJEU0U1OEIwOENwRW1UY0ZoZEhCaFkwRVNJMDhCN3NGQ2F4OEJxbkYwRkNKRmhFMUN2TjNvQm9WdlJ4dENmQzRNd1FLNFhzQ0NtQzk4Qnl3RU11Y0Nwbkd3YkJCQkJxbkduWXBEcW5HbllMN0NEcW5HblltRERCQkJCNjhCMnhENWhCTlRpWkN0QzM4QjBxQy1vQ05vVXRGQzU4Qnl0RkM0ekI1NUVNc0NOVGlaQzZ6QnVtRHUyQnhTQmpIQ21DN3pCdG1EdTJCeFNCakhDbUMzekJ4bUR1MkJ4U0JqSENtQzV6Qjk4RTFaQ3JtQzZWaV9DQ2dWZ0IyVzBDZ0NCNDhCdi1CaUhsTjZLbWhCMEQyTS1FeFNCcW1DLTBCaGZfb0NCakhDbUNCcW1Dc3FFelVpRkM2SDkwQmcwRTFaQ3Q4QnEwRTFaQ0I2SHkwQkIzOEI4SDcwQmt2RS1FOEg2MEJqMEUxWkM4SDUwQm12RS1FeVRpcEJ0dkU0RUJ2VHhWeVR4bkNCejhCN3RGQ3k4Qm8wRTFaQ0I5SDAwQnJ2RS1IeDBCczBFMVpDeDBCOXRDc2Vyb0JuYUJySGdDdjBCaTJGQ0JCdzBCXzdFTXpVeDBCMnZDb3RCcGNNc0NOVENpRnNoQkJ2MEIxNUQzRGhCb2R1YUNCdTBCMjVEM0RoQnRjYnNYdThCcnhFTXVjQzdsQzd2QnJ2RDdsQ3VqRS1aTHFKamxDeWxGQ0JCZ2xDbm5FQm9sQ0JFa2xDdmlDbW1DTXNDZ0IxVEJubEMyb0VNQkVpbEN4aUN6WHJ4QmdCMVQ5eUZEdk04UUJCRGlsQzhzRGhCRC1kNmdDb3FGNGdDM2xFQjNLOFo0Z0MxdkUyZ0NucUZDOWxDOTBDdEd4aUNCQk51Q3dCUHhFQkJCQkRFZ1NhMXRCLWR3ekNoQkQ5TWlsQmhUOXRCM1R0NUNtRWZDRC1kQkJFQnpnQ21xRkNCQkU0Z0NpcUZDLThCb3hFTTVDMVpDN1ZobkJrdUZDOThCNG5DdHNCb0JCell2Qi1FOWJqOEJoakVxT3lkQ3AyRkJ4eUIwdUV3bUc1WnBEQkMzZ0dLQkNsckgxMEV0ekNCOWtDcXhCQjRrQ0JCQkJCX1lfckI2dkM5a0Nta0Jpb0RHMmtDeXhEOUhwUC1kNllDX3JCOXZDNmtDLXZDc0dyeUM0MEV6cUJCQm84QnlzQjVrRC1EQkJuOEJ6c0Izb0R3MkY4SS1IQkNCQkJCbzhCLXJGaURDQkNsOEIxc0J2MkM1TXhCX1hUNjBFQjN4Qnk1RkN6WjFpQkJuOEJqdkZDbjhCa3ZGQ3FtQy1yRG15QnBtQ184QkJubUM5U2xQOGFrdkJfWnZGcFRubUM3aUIzb0RfWkNuQnZzQjd1QnhSTTlvQndjd0J1Q3pXaURDQ2dxQnFkaThCRDBDb3NCdWZ4U0J1RTlFQm11QjlfRkJCREVCRG91SEIwakV6cUQyakVCQkRDQkJGQkNCQ0NsbUM2aUJPb21DXzhCd3VDMVpDbUN2bUN4b0VNNUMxWkMzakVtaERvRUJ1bUNrVGpxQnd1QzliQm1iblBzYzk4QjVFcFRnWGhmZ0JxYkJNRDNhdHJCajlCQ0JzbUNraENqeEUxWkNCem1Ddm9FTXptQ3FsRkNCOWpFekNDbS1DQkJES0I4akVxcURCNm5DbGtGQ3drSDc4Qm9qRXdINWVUaEZDWGo4QmsxRWlhQ0J3c0JwUXJqRTdSNThCdDlENVlCNDhCbW5DdFItaEI3dEJvRXRDSUNZZzhCcXZGQ0J1dUJtZ0dCQkNFQ0NCQ3VtQ3BqRjBFQmlCNTdCX3NCaGN1NkJwbUJUNzhCZ3JFQnBLTnpVZ0NpREM2OEJodEIzb0RpQjM3QnNzRWlqQkM0OEJ0c0UxRWU1N0J3dkZDM3pCdS1FZ0JpWkNsQkN2eUJteUN4eEJFLUhkQkY5Qm9MdUVnQnBaM3lCdzVGQzBFekUxRXA4Qjd6RXVDMVpDeGhIbkRCMm5HdFlzQkI4N0JuZ0R2WE5UaWUxWkNCQzU3Qmc2RGhZNEVhZzBGQkI4R21QM2xCNTNEZ0JwQjVjMVpDeDlGQkU0N0J2NkRqUDNDbkR5Q0RfOUcwaEhwRDFoSHBESHZoSEJCQkJCQkQ2R0NrS2dGbk1CM1p5YTBLS3RGeDFCMUM3UE1UQnBDcUJnQnBCM2JpQmdsSGdsSEJCQkJobEhDQ0NDQ0M0aEhwRENDRUVobEh0Rm1Ga0Z1Rm5GdkZxRnJGakZsRnBGb0YwRnlHeEd4R3hHRERobEhCQjVoSHBER3RnSHNCa0RCcDhCOTBEQ3E3QkNCTTg3Qjk1RGhZNEVNZ1c3bEIzMkUxWkNpOEJ4dENnakRDbXZIQmx2SERDQmo4Qnk2RHJjelVpRkNHSjA3QjJrRHZWMEh6SHpIeEh5SGxHa0dfVmpVeVZ6VmtWaVZ4VndWNGpHN2lCaFZoVmdWX1UtVTdVNlU1VTNVX1VnVjZVM1VnVW9Vb1VvVW9VX1RKb1V6VUJ6VUJ3VUR3VUR3VUR3VUR2VUV2VUVxVW5VbVVrVWhVdVVGdVVGLVRzVUhzVUhzVUh0VWpHaUdoR2dHMkUtUnJCSDE0QjVoRDdJX0ZoUXlCTkcxNEJsakRnQjJFaVJjN2tGbFl6VTNwSEJfRmhRX0JnOEVnQm56QjFFQnBvR3RrQkNCd3dDeWlFZ0ctRl9GeUd3R3hHcjdHcGxIb2xIb2xINnpDX2hITDdDREJoaUhsRERCZ2lIbUREMTZCOHJEbXNCZ0JCMDZCbHlGQzVUX08zWXBGM0cwUnlSeVJuSHBIb0htSGxIbEgxS2lIeURqSDBLa0gxUmhIaWpCLUZ3R3dHdkdCd0d3R3dHd0d3R3dHd0d3R181QjQyRWpjQy01Qm5tRDlzQ0I1RmtTV3FoQnduRDJTZ0JwVnhtRzRGUkw3Q0ZqaUhtRDk1QnE1RTFaQzg1QnI1RTFaQ0I1V2tqQjNoRWxZQnpIOVByaUJvckMydEJCMVZ3R2otR3FIai1HLUY5Rl9GLUt4S29JMUp6SkJ0bEh6SjNKNkoySnRKdUppSjVJa2lIcERraUhwRGtKZ0pqSl9JbUluSS1JMEkxSXJJOElraUhwRDlJNklxSXBJN0lsSWpJbEozSTJJemhIUm1ERGlSMHBHOUdSbUQ0Z0h0bEh0bEg0Z0h2SXFsSEZ0SXhJeUloSXdJeklpSXVJc0kySF9IbWlIbkRtaUhuRGdpSHREa2lIcERCdWxIQmhpSEJoaUhDbC1HMG9HM0tCNXlDNjFEMGtCQmpGRUJEMlJVUG10RHB4Qk1wWUlXdVdzR0NCNXlDcnlCaWJ1dUIyR0NwRkJCQkJCa0hCVjZCU0pGSDdpQjZjQnZxQzNTT2dCc21CQkJwUkM1NUI5dUVCM0s4Wmc2QnFyQ2hxQ2U2Y0NfNUJrekZDLTVCbHpGQzg1QmhqRHgyQnpVaUZDLVlNN0oxV0I2cENrQlJqaEJ3UXZIX1FlbER6VWlGQ0I0NUIxNUV6VWlGQzQ1QjI1RTFaQzM1QnE1RXVVU2lGQzI1QnR6RkNCam9GdzlCQnpsSGhnQmdnQl9mLWY5ZjhmN2Y2ZjVmNGZqR3lCT19MN0VEblRtTmc3RGdCaE4ycUJDczVCc3JDc29EQ3JpSG1ERGk4R3BHTDdDRkJCLUs5SzFGNk0yRnA1Qm42RTFaQ0I0bENna0I0cEQxWkNCM2xDQjNsQ3ZuRkNobUN1d0QtdkJCOFlrdEI0akJxeUN0eEJyVjFFODJEOEVySzBRVTJEQkNFQ0hQZ01MLU5pRTNIQkJCQmlEa0RCa0RDQkItbEN2NURoQjlGc0RoSmJkcVN1R0NEN3BEbTRCdHVCTXVjQ0NfbENEQmdtQzdqQmlvRDJCMVpDRjhsQ3NuRkNCQmltQzFoRkJ2NUJnM0RtRWhCLVplbVh6NkJuMkVCeVg5aEJ5b0RodEJjckJCdUNuVHVHQzNMcHRCandFM0s4WkJCd1hCdGhCNmxEOXdCZWxEMVpDNGlIbkRfbEg4bEhEOEo0aUhuRDRpSG5EQkI1aUhuREJCbl9HekRuREJCNU83aUhKLUNCOGlIaURCQkJCa21IQi1pSG5EbG1IMGdCb2lHbUREQkJubUhuc0I1MkZuREJCQmhqSG5EekdvbUhoakhpREJCQmlqSGlEQkJCd19HekRKN0NEQkJCQkJybUhCc21IbGpIbkRCQnRtSEJCQjVoSEJCcW1IQkI3aEh4c0JCeG1IQnltSEJCSEVFRUVFRUVFRUVFRUUtaEhCQkJfaEhzQkJCQjFtSHVqSG5EdWpIbkR1akhuREJCQjJtSHZqSG5EQkJ3akhuRHdqSG5ETkJYczRCazFGQ0JVNk96cEJ4N0UxWkNDV0J0NEJyOERaREZEMUJuTDlOTWhDdGFDRnc0QnoxRkNsNUJ1N0UxWkNXdDRCdzdFMVpDWDhFT3FHOU1vQm9IcFhnNEM2UjNPRUI2RGhCRDFCMFhKMTRCMDFGQ1B5NEJvMUZDUGs0QjIxRkM2YncwQkJwd0MydEM2eUJxd0NrN0Nxd0NvX0NCQkJud0N1a0UxWkN1NUJuMUZYQkIxNEJCMXBFNk5WTTVDMVpDajBDb2dFaWFDamlCdVg1OURKY2taTXVjQ1czNEI3bkRyd0JNNEJoQjFQOW1GdWRCRjhJeEdoTGxleXlGdkIteEMtZ0QzVjBrQkJzekN1c0N5WW9aTXNDbkJxMENnOERXdmRDbTBDZ3ZEcHJCQ2c4QjY0RTFaQ3J6Q3EtRE11Y0N3LUJxMkUxWkNzekNqN0VDd3pDdzBCdm1EQ1U2NEJ1NkVlMVpDUDM0QnZsRGsxQlB4SGx4Qms2RW5iQ2w1QjUyRS1FQms1Qms2RVIwNEJ1MUZDWXNIclNCS0dqUmpEX0pvNEMxZ0JCRzBEaEJEcUJGR3NWX0I1Qk1yWmduSHhpSEJCQkJCQ0JDRkRHQnlJb0UxTF9mbWZ6NUNOX1gzSWxzQmdOX3FEbTVCeDFGQ180QnVfRHEyQkNDQnlpSHVCamxCcVVxMUZDLTRCNTFGQ3U0QjA4RTFaQ3Q0QnEyRkNqeEYyYkJ1ZC1hcnRDcnZDVGlaQ0JyNEJxOUVpWkNyNEJ6NUVNdWNDcTRCdXRDd3JDSU9NNUMxWkNwNEJ2dENncERDN3hCOThGQ184RWdrSHBEcklnVGpIbEo1OEJZbEhzQmQzQmpJNlVqQmdCa0Z2QjNCNkJxUjJJQkY2aUJxVEJCQjBvRENfRzZFOHlCMFBuUDZJQnN3Q2lmbzhEcERCdHdDaGY1NURzRklDRk92NkdFRHk0RXRuSHVuSG1rSHBEQkJvaEU4OUJqSW1qQnREQkRCQnR3RHBER2pFSmx2QnlnQnREamxCMG5Ic2tIcERCQkJCcW5EaEppSWpkOHBCdmtIcER3a0hwREJIZ3pEaEJhM3lCREJDQndvRGlfQmpqQ2hDQkJQbnZDaUxsT2hIel9DMWNwRGhtQjBLeEN0bUQwTkJrekJqc0NCenNCeEdCa3pCMXVIQkJ3N0NscUJCdDJCMWxDaTJDeXZHcGVCY01IdjRGN2M1c0JEQ014dkNwZ0I3a0R5YUNUbGlCQjBEQkg2UDB2QmhFbEdudENteUJDNXBCMU00eENKQ3RKcjVDTC12RDU2RDRFV3B2Qy11Qk4yT3A5QjljMEJhdEZ0MkJfbEVCREt5dkNwc0R5TG1CM21CQ3QyQmxuRW15QkNCQkJKUWp2Q3pmZ1dvQ2xvRDhpQjhpQkJDTm5tQjRQOW9DbUdvQ29HczdDV1NRNUVaYmFVNXBHVFBRWlhTYlU1cEdUUFFNX2tITC1DZy1FcHFDQno0RXl2QmtCd2tCcm9IOXFCbXpEZ25DcERrbEhwRGwtRXZvSHdvSGlyQm16RGduQ3BEOXRIZEJCQkJCQkJCQkJCQkM3cUJDcy1CR0Y2TERrZTRHLU5PSXZlNW9IQi1rSDJEZ2xIU2tEQnpqRWtsREQ1b0g2b0hnbUg3Q0Rfb0hCRktsOEdCQktCTWkzREM4TTdTb3ZCQnVDZ084ckJtekRwcUNqbUhrX0VnbkNtRERCQkJCQkJCQkNCREJDQkZEc0JnUzJHajNCMGZ1RDJCRG9abHBCZ1lJcUxDQl9Ra0JsQ25fRUJCbUI5cUJ1LUJoVGdidkN6cUI0cEJCZ0JrckI4bEIydUI0VHBIN3BCeEQxaEJPYWlGQzVvQzF1RWhVMEZDNG9DNWpDcUJuQkdxQnJtSG9EckJsQm1CbkJvQmtCakJpQngzRHAzRG8zRG4zRG0zRF8yREdiYWM4OEdXWC04R1lVVlNLTE5PUkhJaEJfd0Nua0N5M0NGTk1ER01ERV9Ccl9Fc19FNjJEem9CdV9Fdl9Fd19FeF9FeV9Fel9FQjBfRXoyRTU0Q01ERW9qRUJCQkNCQkJCQkJCQkJDd3RCbThCaUJGS0RCcEdPc0NyQ1k4Q3RoQnlOV0lqZXFtQnVDT194Q281RThGQ0pLTUxKSUhHRkROSk1JSEdGRURDaXdDOVhrWnVJOHRDbVVhV3NFQ0o1dkM0LUJnakRDQnl2QzVoQnk2RFNpRkNTZ3ZDczhFU2lGQ1FjaHhDNGY2RndDM0c5eUNsWE9haUZDVG83RWRpckc0YjdfRW41RUJCQkJCQzJvQnpEQkNxbEJpWHFDVHVHTEtGMERXb25CbnpCVmdjc0NkRUIxb0JpcEJvV0RrWnVJdUZhbVRqcUIwa0JELW9CQzN5RDV5QmkyREVnM0Qyc0Ixc0J5c0JCM3lENXlCaTJERTJ4Q3g5Qjl5RkJ1d0NCdXdDN2dCdUJ2aEJlcTJDT1JCSUJ0d0NoN0JybURDcXJEb3JEbnJEcXJEb3JEbnJEOHlDcFp4NEJ3bkNTaUZDa3dDM2hGQy10QzZxRHp6Q2d2QnprQkJCeHpDb2tFd1VCX3RDbnBDMzZDQ190Q25wQzJnQ04xWkN3ckNzdEVCQnZyQ3hvQ2k0Q2FpRkNCQ3RyQ19lcGFDNU9CUGxCQkhDRHlpQlhyTXlCNU16Qk15V0I4eUVtQmFDdWpCQkNCdXJDcnBDdHdCOG1CYWlGQ0RCc3JDNjVEMkJHZ2xCYWlGQ3Nmc2ZzZjhfR0JsX0dFM3FINjVFMXRDNzVFMXRDcEQ2cUh5bkhtREQ2dEc1Wm1EREJCQkJCQkJCQkJCQkJvQjNJeGdCbURDbFg1YmlJaERDQkt2R1loQ1BpRk5xSklwTmNPUUJCQkdkVUJONkhCdmtCTDRRdUZzQ0JGblRwRHU1REJvekJqU3V1Q1N0RnRFbzZCaWFDcWxDN3lDMzBDMEZDV3prQ1d5a0NCbWxDenVDX0Z0RW82QmlhQ21sQ0RtMEIxcUI1ekJoVnlGQ0VMQ0J6a0N6Z0U4bUI4RkNuNUVpOUU0Z0Y2LUV6c0Jrd0RoRTctRXYtRTQtRTRuSHBEcGdIb2dITUx1OEVvNUVwNUVrNUVqNUVxNUVuNUVtNUVsNUV6M0VCNnpFTk9QdUtLNThHam1FaW1FZ21FOWxFLWxFOGxFN2xFNGxFNWxFMmxFMWxFdi1HODRFNzRFNjRFSkltNEU5M0VsNEVINTRFODNFNzNFR3A0RS0zRUY0Z0Y1Z0ZCQkJzeUNpWTFCaEhISnFNQm5GeTFCN2U1VnBEN2dGZ25DQjEzRHYzRG80RG40RDkyRHQzRHAzRDcyRDMyRHMzRC0yRGkzRGgzRERvM0RvX0duX0dtX0dwX0dsX0c1bUhLWm1EMG5Iem5IeW5Ib19HbnFIbnFIaXJIaXJINW5IcEREOG5IbUREd25IdEJvQ2x4QnIyRjZCaXJIRGhxSE95bUgwbUh6bUhCMTNEbTdELTZEanVHdGhEMzZEdzZEZzJEejNEeTNEeDNEdzNEdjNEXzFEbzREbjREcTRERS0yRHUzRHEzRDgyRDQyRGcwRHQzRF8yRGozRGkzRDl6REU2ekRvM0RwM0REbHFCLW5CX3JEcHlDb3VERHl5QzFmaEJWcUNGZzRDMGtCQnh5Q25nRkN4eUN2a0J6Y1Y5QjJWdFc1RGRHb0QyQm1ETkIyZWxFSXN5Q3l6QzdzQ0NDb3lDRXFwQjdvQjZYQjhYekd3STY2QnlJSmxZU2UzRWJweUM5Z0IwX0RveUM0a0I2N0RFaXlDb2dCVzVEOVl2MUIxbkJhaUZDQ2p5Q2prQmlha3lDNGtCcTJEU3NDMkNDanlDdWxCNThDOFlTaUZpeUNrN0VTaUZrcUI3bkIxaUYteENvN0VTaUZDOXhDd2hCV2o1RFNpRjh4Q3hoQldyT2lxRE94R0JCQjV4Q3pnQmFZNDVEaUZDN3hDd21CODBEU2lGajBCMGRCNnhDdDdFM3hDNGhCbkR5MkRTaUZCenlDOGdCM0U2MERhNkVJQ3p5QzlnQjNFLTZEQnh5Qy1nQjVFaGdEM1VhaUZDQnd5Q19nQjRFaWdEM1VhaUZDa0J1d0NyaEZDb3ZDMWpGQzhyRzJxRzBxR3hxR3lxR29xRzdvRzFvRzdIcnVHQng1QnZwRV9GNW1CQml6SENCQng1QkJrekhCeTVCeHZFNW1CQm16SEJCQzlIQ3d4QjRrRV9JLXJCJyxbJ2Nkb3MnLCdoc20nLCdqc2EnLCdYZDhpVWQnLCdKc2JOaGMnLCdkN1lTZmQnLCd4NEZZWGUnLCdxZGRnS2UnLCdZWW1IemInLCdJWlQ2MycsJ1lOakdEZCcsJ1ByUFlSZCcsJ21JM0xGYicsJ2xhekc3YicsJ0NrNjN0YicsJ1dxNmx4ZicsJ1JyNU5PZScsJ2Q2RlZaZCcsJ3liMDhqZicsJ1VGWmhCYycsJ2tRdmxlZicsJ2VCQWVTYicsJ01rSHlHZCcsJ2tiQW05ZCcsJ2tIVlNVYicsJ3NUc0RNYycsJ3YxZGFNJywnTEs0UHllJywnQU55bjEnLCdVNE16S2MnLCdnOG5reCcsJ3ZnYmlLYicsJ1dsNTVpYicsJ1ltOU5aYycsJ3ZWVnpqYicsJ1Ryb1oxZCcsJ3d3MDREZicsJ3BqODJsZScsJ0pabVc5ZScsJ0RrazZnZScsJ0l2UFo2ZCcsJ1lWNWJlZScsJ3hSeERsZCcsJ09aTGd1YycsJ3J0SDFiZCcsJ3ZOektIZCcsJ2I1Vzg1JywnQld0TmonLCd4eTVVSicsJ1Y4VUdUJywnd1dNaGcnLCdRbHlyeWInLCdFUFJ0OWQnLCdramt5a2QnLCdDb3l1RmInLCdQRWZqNGInLCdQeW1DQ2UnLCdEVFJOSGQnLCdXbmVDa2UnLCdFdEN4OGInLCd4TWNsZ2QnLCdMTTd3eCcsJ3ZacjJyYicsJ0hyNWFoJywnSG5JRDRiJywncm5aVmZkJywnbmI1MG4nLCdoNWtraGMnLCd5b2lwN2UnLCdEdm43ZmUnLCdqTlpETCcsJ213MDZhZScsJ1JUdkRJJywnQVRMTVRlJywnTDk3bXVkJywnSXAzRXJjJywnUDBhSmFjJywnY25qRUNmJywncUJTSnJiJywnQ1c1RlplJywnbHBzVUFmJywnWTl0OVNjJywndW5WNFQnLCdtYjRaVWInLCd3czlUbGMnLCdjRXQ5MGInLCdad0RrOWQnLCd4RDhLcCcsJ1NOVW4zJywnbExRV0ZlJywnZHRsMGhkJywnb2ZqVmtiJywnZUhEZmwnLCdkJywnY3NpJ10pOwp9Y2F0Y2goZSl7Xy5fRHVtcEV4Y2VwdGlvbihlKX0KdHJ5ewpfLk5DPWZ1bmN0aW9uKGEpe3JldHVybiBfLnQoYSwzKX07Xy5PQz1mdW5jdGlvbihhKXtyZXR1cm4gXy50KGEsMyl9O18uTkZjPWZ1bmN0aW9uKGEpe3JldHVybiBfLnQoYSw5KX07Xy5QQz0hIShfLk9pWzU0XSY2NCk7Xy5FeT0hIShfLk9pWzU0XSYxMjgpO18uUUM9ISEoXy5PaVs1NF0mMjU2KTsKfWNhdGNoKGUpe18uX0R1bXBFeGNlcHRpb24oZSl9CnRyeXsKXy5QZmU9ZnVuY3Rpb24oKXtyZXR1cm4gXy5vYWEmJl8ucGE/Xy5wYS5tb2JpbGU6IV8uT2ZlKCkmJihfLnFhKCJpUG9kIil8fF8ucWEoImlQaG9uZSIpfHxfLnFhKCJBbmRyb2lkIil8fF8ucWEoIklFTW9iaWxlIikpfTtfLk9mZT1mdW5jdGlvbigpe3JldHVybiBfLm9hYSYmXy5wYT8hXy5wYS5tb2JpbGUmJihfLnFhKCJpUGFkIil8fF8ucWEoIkFuZHJvaWQiKXx8Xy5xYSgiU2lsayIpKTpfLnFhKCJpUGFkIil8fF8ucWEoIkFuZHJvaWQiKSYmIV8ucWEoIk1vYmlsZSIpfHxfLnFhKCJTaWxrIil9O18uZks9ZnVuY3Rpb24oKXtyZXR1cm4hXy5QZmUoKSYmIV8uT2ZlKCl9Owp9Y2F0Y2goZSl7Xy5fRHVtcEV4Y2VwdGlvbihlKX0KdHJ5ewp2YXIgUWZlOwpfLmdLPWZ1bmN0aW9uKGEsYil7dmFyIGM9YT09PTA/IkhlaWdodCI6IldpZHRoIjtpZihfLlBmZSgpJiZfLnJhKCkpcmV0dXJuIFFmZSYmXy5OYS5aSGEoKXx8Xy5OYS5TVygpP2E9PT0wP18uaGkoKS5pbm5lckhlaWdodDpfLmhpKCkuaW5uZXJXaWR0aDphPT09MD9NYXRoLnJvdW5kKF8uaGkoKS5vdXRlckhlaWdodC8oXy5oaSgpLmRldmljZVBpeGVsUmF0aW98fDEpKTpNYXRoLnJvdW5kKF8uaGkoKS5vdXRlcldpZHRoLyhfLmhpKCkuZGV2aWNlUGl4ZWxSYXRpb3x8MSkpO2lmKF8uZ2JhKCkmJl8ucmEoKSl7aWYoXy5OYS5MQmMoKSl7Yj1fLmhpKCkub3V0ZXJXaWR0aDtjPV8uaGkoKS5zY3JlZW4ud2lkdGg7bGV0IGQ9Xy5oaSgpLnNjcmVlbi5oZWlnaHQsZT1fLmhpKCkuZGV2aWNlUGl4ZWxSYXRpbzswPGUmJmU8TnVtYmVyLk1BWF9WQUxVRXx8KGU9MSk7bGV0IGY9bnVsbCxnPWE9PT0wO2ZvcihsZXQgaD0wO2g8UmZlLmxlbmd0aDtoKyspe2xldCBrPVJmZVtoXSxtPWglMj9SZmVbaC0KMV06UmZlW2grMV07aWYoXy5JZChiLGssNSkpe2Y9Zz9tOms7YnJlYWt9fWY9PT1udWxsJiYoZj1hPT09MT9jOmQpO3JldHVybiBmL2V9aWYoYT09PTEpcmV0dXJuIF8uaGkoKS5kb2N1bWVudC5kb2N1bWVudEVsZW1lbnQub2Zmc2V0V2lkdGg7YT1zY3JlZW4uaGVpZ2h0L3NjcmVlbi53aWR0aDswPGEmJmE8TnVtYmVyLk1BWF9WQUxVRXx8KGE9MSk7Yj1fLmhpKCkub3V0ZXJIZWlnaHQvXy5oaSgpLm91dGVyV2lkdGg7aWYoYj4xJiZhPDF8fGI8MSYmYT4xKWE9MS9hO3JldHVybiBNYXRoLnJvdW5kKF8uaGkoKS5kb2N1bWVudC5kb2N1bWVudEVsZW1lbnQub2Zmc2V0V2lkdGgqYSl9cmV0dXJuIGI/Xy5oaSgpLmRvY3VtZW50LmRvY3VtZW50RWxlbWVudFtgY2xpZW50JHtjfWBdOl8uaGkoKVtgaW5uZXIke2N9YF0/Xy5oaSgpW2Bpbm5lciR7Y31gXTpfLmhpKCkuZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50JiZfLmhpKCkuZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50W2BvZmZzZXQke2N9YF0/Cl8uaGkoKS5kb2N1bWVudC5kb2N1bWVudEVsZW1lbnRbYG9mZnNldCR7Y31gXTowfTtRZmU9ISEoXy5PaVsyMV0+PjE3JjEpO3ZhciBSZmU9WzYwMCwxMDI0LDgwMCwxMjAwXTsKfWNhdGNoKGUpe18uX0R1bXBFeGNlcHRpb24oZSl9CnRyeXsKXy51KCJjZG9zIik7CnZhciByVGw9ZnVuY3Rpb24oYT0hMSl7cFRsPV8uZ0soMSk7YXx8KHFUbD1fLmdLKDApKX0sdFRsPWZ1bmN0aW9uKGE9ITEpe18uSkdhPyhzVGwoImJpdyIscFRsKSxhfHxzVGwoImJpaCIscVRsKSk6KHNUbCgiYml3IixfLmdLKDEpKSxhfHxzVGwoImJpaCIsXy5nSygwKSkpfSxzVGw9ZnVuY3Rpb24oYSxiKXt2YXIgYz1kb2N1bWVudC5nZXRFbGVtZW50c0J5TmFtZShhKTtpZihjLmxlbmd0aCljWzBdLnZhbHVlPVN0cmluZyhiKTtlbHNle2xldCBkPWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ0c2YiKTtkJiYoYz1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJpbnB1dCIpLGMudHlwZT0iaGlkZGVuIixjLm5hbWU9YSxjLnZhbHVlPVN0cmluZyhiKSxkLmFwcGVuZENoaWxkKGMpKX19LHZUbD1mdW5jdGlvbihhKXthPWF8fHdpbmRvdy5ldmVudDtpZihhPV8uZW4oYS50YXJnZXR8fGEuc3JjRWxlbWVudCwiQSIpKXt2YXIgYj1hLmdldEF0dHJpYnV0ZSgiaHJlZiIpO2lmKGIpe2lmKC9eXC8oc2VhcmNofGltYWdlcylcPy8udGVzdChiKSl7dmFyIGM9Cl8uSkdhP3tiaXc6U3RyaW5nKHBUbCksYmloOlN0cmluZyhxVGwpfTp7Yml3OlN0cmluZyhfLmdLKDEpKSxiaWg6U3RyaW5nKF8uZ0soMCkpfTtjLmRwcj1TdHJpbmcodVRsKTtmb3IoZCBpbiBjKWI9Xy51a2EoYixkKTt2YXIgZD1fLnBrYShiLGMpfWVsc2UgZD1iO18uWGMoYSxkKX19fSx3VGw9ZnVuY3Rpb24oKXtfLmhlKHdpbmRvdywicmVzaXplIiwoKT0+e3ZhciBhO2lmKGE9IV8uRXkpYT1kb2N1bWVudC5nZXRFbGVtZW50c0J5TmFtZSgicSIpLGE9YS5sZW5ndGg+MCYmZG9jdW1lbnQuYWN0aXZlRWxlbWVudD09PWFbMF07Xy5KR2EmJnJUbChhKTt0VGwoYSl9KTtfLmhlKGRvY3VtZW50LCJjbGljayIsdlRsKTtfLmhlKGRvY3VtZW50LCJ0b3VjaHN0YXJ0Iix2VGwpfSx1VGw9bnVsbCxwVGwscVRsOwpfLktzYSgiY2RvcyIse2luaXQ6ZnVuY3Rpb24oYSl7d1RsKCk7Xy5KR2EmJnJUbCgpO3RUbCgpO3VUbD1NYXRoLnJvdW5kKCh3aW5kb3cuZGV2aWNlUGl4ZWxSYXRpb3x8MSkqMTAwKS8xMDA7dmFyIGI9bmF2aWdhdG9yLm1heFRvdWNoUG9pbnRzfHwwO2lmKGdvb2dsZS5zbj09PSJ3ZWIifHxnb29nbGUuc249PT0icHJvZHVjdHNlYXJjaCJ8fGdvb2dsZS5zbj09PSJ3ZWJocCIpe2xldCBjPV8uSkdhP3BUbDpfLmdLKDEpLGQ9Xy5KR2E/cVRsOl8uZ0soMCksZT1OdW1iZXIoYS5kcHJ8fDEpIT09dVRsLGY9KGEubXRwfHwwKSE9PWI7YyYmZCYmKGMhPT1hLmJpd3x8ZCE9PWEuYmlofHxlfHxmKSYmZ29vZ2xlLmxvZygiIiwiIixfLkhtYShgL2NsaWVudF8yMDQ/YXR5cD1pJmJpdz0ke2N9JmJpaD0ke2R9JHshXy5RR2F8fGU/YCZkcHI9JHt1VGx9YDoiIn0ke2Y/YCZtdHA9JHtifWA6IiJ9JmVpPSR7Z29vZ2xlLmtFSX1gLG5ldyBNYXAsITEsITEpKX19fSk7Cl8udigpOwp9Y2F0Y2goZSl7Xy5fRHVtcEV4Y2VwdGlvbihlKX0KdHJ5ewpfLnUoImhzbSIpOwoKXy52KCk7Cn1jYXRjaChlKXtfLl9EdW1wRXhjZXB0aW9uKGUpfQp0cnl7Cl8udSgianNhIik7CgpfLnYoKTsKfWNhdGNoKGUpe18uX0R1bXBFeGNlcHRpb24oZSl9CnRyeXsKXy5qZmI9Y2xhc3N7fTsKfWNhdGNoKGUpe18uX0R1bXBFeGNlcHRpb24oZSl9CnRyeXsKXy51KCJYZDhpVWQiKTsKdmFyIGJVYz1mdW5jdGlvbihhKXt2YXIgYj1hLndpbmRvdy5oaXN0b3J5LnB1c2hTdGF0ZS5iaW5kKGEud2luZG93Lmhpc3RvcnkpLGM9YS53aW5kb3cuaGlzdG9yeS5yZXBsYWNlU3RhdGUuYmluZChhLndpbmRvdy5oaXN0b3J5KTthLndpbmRvdy5oaXN0b3J5LnB1c2hTdGF0ZT0oZCxlLGYpPT57YS56VWE9ITA7YihkLGUsZik7YS56VWE9ITF9O2Eud2luZG93Lmhpc3RvcnkucmVwbGFjZVN0YXRlPShkLGUsZik9PnthLnpVYT0hMDtjKGQsZSxmKTthLnpVYT0hMX19OwpfLmJnKGNsYXNze2NvbnN0cnVjdG9yKCl7dGhpcy54Yz1udWxsO3RoaXMuelVhPSExO3RoaXMud2luZG93PV8uSGYoXy5xbykuZ2V0KCk7dGhpcy5uYXZpZ2F0aW9uPXRoaXMud2luZG93Lm5hdmlnYXRpb247YlVjKHRoaXMpfWdldCBjdXJyZW50RW50cnkoKXtyZXR1cm4gdGhpcy5uYXZpZ2F0aW9uLmN1cnJlbnRFbnRyeX1nZXRDdXJyZW50VXJsKCl7dmFyIGEsYjtyZXR1cm4oYj0oYT10aGlzLmN1cnJlbnRFbnRyeSk9PW51bGw/dm9pZCAwOmEudXJsKSE9bnVsbD9iOiIifWVudHJpZXMoKXtyZXR1cm4gdGhpcy5uYXZpZ2F0aW9uLmVudHJpZXMoKX1uYXZpZ2F0ZShhLGIpe3JldHVybiB0aGlzLm5hdmlnYXRpb24ubmF2aWdhdGUoYSxiKX10cmF2ZXJzZVRvKGEsYil7cmV0dXJuIHRoaXMubmF2aWdhdGlvbi50cmF2ZXJzZVRvKGEsYil9YWRkRXZlbnRMaXN0ZW5lcihhLGIsYyl7dGhpcy5uYXZpZ2F0aW9uLmFkZEV2ZW50TGlzdGVuZXIoYSxiLGMpfXJlbW92ZUV2ZW50TGlzdGVuZXIoYSwKYixjKXt0aGlzLm5hdmlnYXRpb24ucmVtb3ZlRXZlbnRMaXN0ZW5lcihhLGIsYyl9ZGlzcGF0Y2hFdmVudChhKXtyZXR1cm4gdGhpcy5uYXZpZ2F0aW9uLmRpc3BhdGNoRXZlbnQoYSl9fSxfLnoxYSk7Cl8udigpOwp9Y2F0Y2goZSl7Xy5fRHVtcEV4Y2VwdGlvbihlKX0KdHJ5ewpfLnUoIkpzYk5oYyIpOwpfLmFVYz1uZXcgXy5vbyhfLkExYSk7Cl8udigpOwp9Y2F0Y2goZSl7Xy5fRHVtcEV4Y2VwdGlvbihlKX0KdHJ5ewpfLmNVYz1fLmtjKCJkN1lTZmQiKTtfLk9jKF8uY1VjKTsKfWNhdGNoKGUpe18uX0R1bXBFeGNlcHRpb24oZSl9CnRyeXsKXy51KCJkN1lTZmQiKTsKdmFyIGRVYz1mdW5jdGlvbihhKXtpZighYXx8YS5pZD09bnVsbHx8YS5rZXk9PW51bGwpcmV0dXJuIG51bGw7dmFyIGI9e2lkOmEuaWQscHVzaElkOmEua2V5fTtpZihhLnVybCl0cnl7bGV0IGQ9bmV3IFVSTChhLnVybCk7Yi51cmw9ZC5wYXRobmFtZStkLnNlYXJjaCtkLmhhc2h9Y2F0Y2goZCl7fXRyeXt2YXIgYz1hLmdldFN0YXRlKCl9Y2F0Y2goZCl7fWMmJihiLnVzZXJEYXRhPWMpO3JldHVybiBifSxlVWM9e30sZlVjPWZ1bmN0aW9uKGEsYil7aWYoYS5rYS56VWEpYS5pbmZvPWVVYztlbHNle2EuaW5mbz1iLmluZm87dmFyIGM7aWYoYi5jYW5JbnRlcmNlcHQmJigoYz1iLmluZm8pPT1udWxsPzA6Yy5pbnRlcmNlcHQpKXtsZXQgZCxlO2IuaW50ZXJjZXB0KHtoYW5kbGVyOigpPT57dmFyIGY7cmV0dXJuKGY9Yi5pbmZvKT09bnVsbD92b2lkIDA6Zi5pbnRlcmNlcHR9LGZvY3VzUmVzZXQ6KGQ9Yi5pbmZvKT09bnVsbD92b2lkIDA6ZC5mb2N1c1Jlc2V0LHNjcm9sbDooZT1iLmluZm8pPT0KbnVsbD92b2lkIDA6ZS5zY3JvbGx9KX1lbHNlIGIubmF2aWdhdGlvblR5cGUhPT0icHVzaCJ8fGIuZGVzdGluYXRpb24uc2FtZURvY3VtZW50fHwoYS5CYT0hMCl9fTsKXy5iZyhjbGFzcyBleHRlbmRzIF8uRWR7Y29uc3RydWN0b3IoKXtzdXBlcigpO3RoaXMuVGQ9bmV3IFNldDt0aGlzLndhPXZvaWQgMDt0aGlzLkJhPSExO3RoaXMuaW5mbz12b2lkIDA7dGhpcy5rYT1fLkhmKF8uYVVjKTt2YXIgYT1jPT57ZlVjKHRoaXMsYyl9O3RoaXMua2EuYWRkRXZlbnRMaXN0ZW5lcigibmF2aWdhdGUiLGEpO3ZhciBiPWM9PntpZih0aGlzLmluZm8hPT1lVWMpe3ZhciBkPSExLGU9bnVsbCxmLGcsaD0oZz0oZj1jLmZyb20pPT1udWxsP3ZvaWQgMDpmLmluZGV4KSE9bnVsbD9nOi0xLGssbTtmPShtPShrPXRoaXMua2EuY3VycmVudEVudHJ5KT09bnVsbD92b2lkIDA6ay5pbmRleCkhPW51bGw/bTotMTtpZihmPj0wJiZoPj0wKWlmKGY+aClkPSEwO2Vsc2UgaWYoZjxoKXtlPVtdO2ZvcihsZXQgciBvZiB0aGlzLmthLmVudHJpZXMoKSlyLmluZGV4PD1oJiZyLmluZGV4PmYmJmUucHVzaCh7aWQ6ci5pZCxwdXNoSWQ6ci5rZXksRWVhOnIuaW5kZXghPT1mKzF9KX1jLm5hdmlnYXRpb25UeXBlPT09CiJyZXBsYWNlIiYmYy5mcm9tJiYoZT1jLmZyb20sZT1be2lkOmUuaWQscHVzaElkOmUua2V5LEVlYTohMH1dKTtoPSF0aGlzLmluZm87dmFyIG4scDtrPWg/bmV3IF8uamZiOihwPShuPXRoaXMuaW5mbyk9PW51bGw/dm9pZCAwOm4uc291cmNlKSE9bnVsbD9wOnRoaXM7ZD17dXNlckluaXRpYXRlZDpoLG1QOmQsc291cmNlOmt9O2UmJihkLndVPWUpO2ZvcihsZXQgciBvZiB0aGlzLlRkKXIoZFVjKHRoaXMua2EuY3VycmVudEVudHJ5KSxkVWMoYy5mcm9tKSxkKX19O3RoaXMua2EuYWRkRXZlbnRMaXN0ZW5lcigiY3VycmVudGVudHJ5Y2hhbmdlIixiKTt0aGlzLmFkZE9uRGlzcG9zZUNhbGxiYWNrKCgpPT57dGhpcy5rYS5yZW1vdmVFdmVudExpc3RlbmVyKCJuYXZpZ2F0ZSIsYSk7dGhpcy5rYS5yZW1vdmVFdmVudExpc3RlbmVyKCJjdXJyZW50ZW50cnljaGFuZ2UiLGIpfSk7Xy5IZihfLnFvKS5nZXQoKS5hZGRFdmVudExpc3RlbmVyKCJwYWdlc2hvdyIsKCk9Pnt0aGlzLkJhPSExfSl9Z2V0U3RhdGUoKXtyZXR1cm4gZFVjKHRoaXMua2EuY3VycmVudEVudHJ5KX1maW5kKGEpe3ZhciBiLApjPShiPXRoaXMua2EuY3VycmVudEVudHJ5KT09bnVsbD92b2lkIDA6Yi5pbmRleDtmb3IoYj10aGlzLmthLmVudHJpZXMoKTtjPj0wO2MtLSl7dmFyIGQ9YltjXTtpZighZC5zYW1lRG9jdW1lbnQpY29udGludWU7aWYoKGQ9ZFVjKGQpKSYmYShkKSlyZXR1cm4gZH1yZXR1cm4gbnVsbH1wdXNoQXN5bmMoYSxiLGM9dGhpcyl7cmV0dXJuIHRoaXMubmF2aWdhdGUoYSx7dXNlckRhdGE6Yixzb3VyY2U6YyxoaXN0b3J5OiJwdXNoIn0pLmNvbW1pdHRlZH1vYShhLGIsYz10aGlzKXtyZXR1cm4gdGhpcy5uYXZpZ2F0ZShhLHt1c2VyRGF0YTpiLHNvdXJjZTpjLGhpc3Rvcnk6InJlcGxhY2UifSkuY29tbWl0dGVkfW5hdmlnYXRlKGE9dGhpcy5nZXRDdXJyZW50VXJsKCksYil7dmFyIGMsZCxlLGY9e3NvdXJjZTooYz1iPT1udWxsP3ZvaWQgMDpiLnNvdXJjZSkhPW51bGw/Yzp0aGlzLGludGVyY2VwdDooZD1iPT1udWxsP3ZvaWQgMDpiLmludGVyY2VwdCkhPW51bGw/ZDohMCxmb2N1c1Jlc2V0OihlPQpiPT1udWxsP3ZvaWQgMDpiLmZvY3VzUmVzZXQpIT1udWxsP2U6Im1hbnVhbCIsc2Nyb2xsOmI9PW51bGw/dm9pZCAwOmIuc2Nyb2xsfTtpZigoYj09bnVsbD92b2lkIDA6Yi5oaXN0b3J5KT09PSJhdXRvIil0aHJvdyBFcnJvcigib2oiKTt2YXIgZz1iPT1udWxsP3ZvaWQgMDpiLmhpc3Rvcnk7Xy5OYS5VSGEoXy5OYS5xYmEucjJhLDExMik/Z3x8KGc9InB1c2giKTpnPT09InB1c2giJiYoZz12b2lkIDApO3ZhciBoPSgpPT57dmFyIHtjb21taXR0ZWQ6ayxmaW5pc2hlZDptfT10aGlzLmthLm5hdmlnYXRlKGEse3N0YXRlOmI9PW51bGw/dm9pZCAwOmIudXNlckRhdGEsaW5mbzpmLGhpc3Rvcnk6Z30pO3JldHVybntjb21taXR0ZWQ6ay50aGVuKG49PmRVYyhuKSksZmluaXNoZWQ6bS50aGVuKG49PmRVYyhuKSl9fTtpZih0aGlzLndhKXtsZXQgaztjPW5ldyBQcm9taXNlKG49PntrPW59KTtsZXQgbTtkPW5ldyBQcm9taXNlKG49PnttPW59KTt0aGlzLndhLnRoZW4oKCk9Pnt2YXIge2NvbW1pdHRlZDpuLApmaW5pc2hlZDpwfT1oKCk7ayhuKTttKHApfSk7cmV0dXJue2NvbW1pdHRlZDpjLGZpbmlzaGVkOmR9fXJldHVybiBoKCl9cG9wKGEsYj10aGlzKXt2YXIgYz10aGlzLmthLmVudHJpZXMoKTtmb3IobGV0IGQ9MDtkPGMubGVuZ3RoO2QrKylpZihjW2RdLmlkPT09YSlyZXR1cm4gZD09PTA/Xy5IaChFcnJvcigicGoiKSk6dGhpcy50cmF2ZXJzZVRvKGNbZC0xXS5rZXkse2luZm86e3NvdXJjZTpifX0pO3JldHVybiBfLkhoKEVycm9yKCJxaiIpKX1BYShhLGI9dGhpcyl7Zm9yKGxldCBjIG9mIHRoaXMua2EuZW50cmllcygpKWlmKGMuaWQ9PT1hKXJldHVybiB0aGlzLnRyYXZlcnNlVG8oYy5rZXkse2luZm86e3NvdXJjZTpifX0pO3JldHVybiBfLkhoKEVycm9yKCJxaiIpKX1hc3luYyB0cmF2ZXJzZVRvKGEsYil7dmFyIGM9KDAsXy5NZikoKSxkPWMoKTtjPWMoMSk7dHJ5e2lmKHRoaXMuQmEpe2xldCBoPVByb21pc2UucmVqZWN0KEVycm9yKCJyaiIpKTtoLmNhdGNoKCgpPT57fSk7cmV0dXJuIGh9bGV0IGUsCmY9bmV3IFByb21pc2UoaD0+e2U9aH0pLGc9dGhpcy53YTt0aGlzLndhPWY7ZyYmYyhhd2FpdCBkKGcpKTt0cnl7bGV0IGg9Yyhhd2FpdCBkKHRoaXMua2EudHJhdmVyc2VUbyhhLGIpLmNvbW1pdHRlZCkpO3JldHVybiBkVWMoaCl9ZmluYWxseXtjKCksZSgpLHRoaXMud2E9PT1mJiYodGhpcy53YT12b2lkIDApfX1maW5hbGx5e2QoKX19Z2V0Q3VycmVudFVybCgpe3ZhciBhO3JldHVybihhPXRoaXMua2EuY3VycmVudEVudHJ5KT09bnVsbD92b2lkIDA6YS51cmx9YWRkTGlzdGVuZXIoYSl7dGhpcy5UZC5hZGQoYSl9cmVtb3ZlTGlzdGVuZXIoYSl7dGhpcy5UZC5kZWxldGUoYSl9fSxfLmNVYyk7Cl8udigpOwp9Y2F0Y2goZSl7Xy5fRHVtcEV4Y2VwdGlvbihlKX0KdHJ5ewpfLnUoIng0RllYZSIpOwp2YXIgdVpnLHdaZyx4WmcsdlpnLHlaZyx6Wmc7dVpnPWZ1bmN0aW9uKGEpe3ZhciBiPV8ucWcoKTtpZihiJiZiLm1ldGFkYXRhKXtsZXQgYz1iLm1ldGFkYXRhLnN0YWNrSW5kZXg7Yj1fLkRxYShiLm1ldGFkYXRhLnN0YWNrSWQpO2ZvcihsZXQgZD1jO2Q+PTAmJmQ8Yi5sZW5ndGg7LS1kKXtsZXQgZT1fLlNwYShfLkNxYS5nZXQoU3RyaW5nKGJbZF0pKSk7aWYoZSYmYShlKSlyZXR1cm57ZGlyZWN0aW9uOmQtYyxlbnRyeTplfX19cmV0dXJuIG51bGx9O3daZz1mdW5jdGlvbihhKXt2YXIgYj17fSxjPWEudXJsLGQ9YS5zdGF0ZTthPWEubWV0YWRhdGE7Yi5pZD1TdHJpbmcoYT9hLmVudHJ5SWQ6LTEpO2IucHVzaElkPVN0cmluZyhhP2EucHVzaElkOi0xKTtiLnVybD1jO2lmKGM9dlpnKGQpKWIudXNlckRhdGE9YztyZXR1cm4gYn07CnhaZz1mdW5jdGlvbihhKXtpZighYS5tZXRhZGF0YSlyZXR1cm4hMTt2YXIgYj1hLm1ldGFkYXRhLnN0YWNrSW5kZXg7YT1fLkRxYShhLm1ldGFkYXRhLnN0YWNrSWQpO3JldHVybiBiPj0wJiZiPGEubGVuZ3RofTt2Wmc9ZnVuY3Rpb24oYSl7cmV0dXJuIF8ucGcoYSkmJl8ucGcoYS53dWQpP2Eud3VkOnZvaWQgMH07eVpnPWZ1bmN0aW9uKGEpe3ZhciBiPV8ucWcoKS5zdGF0ZTtiPV8ucGcoYik/T2JqZWN0LmFzc2lnbih7fSxiKTp7fTthPT09dm9pZCAwP2RlbGV0ZSBiLnd1ZDpiLnd1ZD1hO3JldHVybiBifTt6Wmc9ZnVuY3Rpb24oYSl7YS50aGVuKHZvaWQgMCwoKT0+bnVsbCk7cmV0dXJuIGF9OwpfLkFaZz1jbGFzcyBleHRlbmRzIF8uc297Y29uc3RydWN0b3IoKXtzdXBlcigpO3RoaXMua2E9bmV3IE1hcH1nZXRTdGF0ZSgpe3JldHVybiB3WmcoXy5xZygpKX1maW5kKGEpe3ZhciBiPXVaZyhjPT5hKHdaZyhjKSkpO2lmKGIpcmV0dXJuIHdaZyhiLmVudHJ5KTtiPV8ucWcoKTtyZXR1cm4geFpnKGIpP251bGw6KGI9d1pnKGIpLGEoYik/YjpudWxsKX1uYXZpZ2F0ZShhLGI9e30pe3JldHVybiBiLmhpc3Rvcnk9PT0icmVwbGFjZSI/e2NvbW1pdHRlZDp0aGlzLm9hKGEsYi51c2VyRGF0YSxiLnNvdXJjZSl9Ontjb21taXR0ZWQ6dGhpcy5wdXNoQXN5bmMoYSxiLnVzZXJEYXRhLGIuc291cmNlKX19cHVzaEFzeW5jKGE9Xy5xZygpLnVybCxiPXZaZyhfLnFnKCkuc3RhdGUpLGMpe3JldHVybiBfLnRxYSh5WmcoYiksYSx7c291cmNlOmN9KS50aGVuKHdaZyl9b2EoYT1fLnFnKCkudXJsLGI9dlpnKF8ucWcoKS5zdGF0ZSksYyl7cmV0dXJuIF8udXFhKHlaZyhiKSxhLHtzb3VyY2U6Y30pLnRoZW4od1pnKX1wb3AoYSwKYil7cmV0dXJuIHpaZyhfLnlxYSgoKT0+e3ZhciBjPXVaZyhkPT4hIWQubWV0YWRhdGEmJmQubWV0YWRhdGEuZW50cnlJZD09PU51bWJlcihhKSk7cmV0dXJuIGM/Yy5kaXJlY3Rpb24tMTpudWxsfSx7c291cmNlOmJ9KS50aGVuKHdaZykpfUFhKGEsYil7cmV0dXJuIHpaZyhfLnlxYSgoKT0+e3ZhciBjPXVaZyhkPT4hIWQubWV0YWRhdGEmJmQubWV0YWRhdGEuZW50cnlJZD09PU51bWJlcihhKSk7cmV0dXJuIGM/Yy5kaXJlY3Rpb246bnVsbH0se3NvdXJjZTpifSkudGhlbih3WmcpKX1nZXRDdXJyZW50VXJsKCl7dmFyIGE9Xy5RcGEoKTtyZXR1cm4gYT9hLmdldEN1cnJlbnRVcmwoKTpfLm9nLmxvY2F0aW9uLmhyZWZ9YWRkTGlzdGVuZXIoYSl7aWYoIXRoaXMua2EuaGFzKGEpKXt2YXIgYj0oYyxkLGUpPT57aWYoIWUuZkxjKXtlPXt1c2VySW5pdGlhdGVkOmUudXNlckluaXRpYXRlZCxzb3VyY2U6ZS5zb3VyY2UhPT12b2lkIDA/ZS5zb3VyY2U6ZS51c2VySW5pdGlhdGVkP25ldyBfLmpmYjoKdGhpc307aWYoYy5tZXRhZGF0YSYmZC5tZXRhZGF0YSYmYy5tZXRhZGF0YS5zdGFja0lkPT09ZC5tZXRhZGF0YS5zdGFja0lkKWlmKGMubWV0YWRhdGEucHVzaElkPT09ZC5tZXRhZGF0YS5wdXNoSWQpZS53VT1be2lkOlN0cmluZyhjLm1ldGFkYXRhLnB1c2hJZCksRWVhOiExfV07ZWxzZSBpZihjLm1ldGFkYXRhLnB1c2hJZDxkLm1ldGFkYXRhLnB1c2hJZCl7bGV0IGc9W10saD1fLkRxYShjLm1ldGFkYXRhLnN0YWNrSWQpO3ZhciBmPWQubWV0YWRhdGEuc3RhY2tJbmRleDtsZXQgaz1jLm1ldGFkYXRhLnN0YWNrSW5kZXg7Zm9yKDtmPmsmJmY+PTAmJmY8aC5sZW5ndGg7Zi0tKXtsZXQgbT1fLlNwYShfLkNxYS5nZXQoU3RyaW5nKGhbZl0pKSk7bSYmbS5tZXRhZGF0YSYmZy5wdXNoKHtpZDpTdHJpbmcobS5tZXRhZGF0YS5lbnRyeUlkKSxFZWE6Zj5rKzF9KX1lLndVPWd9Yy5tZXRhZGF0YSYmZC5tZXRhZGF0YSYmKGUubVA9Yy5tZXRhZGF0YS5zdGFja0luZGV4Pj1kLm1ldGFkYXRhLnN0YWNrSW5kZXgpOwphKHdaZyhjKSx3WmcoZCksZSl9fTt0aGlzLmthLnNldChhLGIpO18uaXFhKGIsITApfX1yZW1vdmVMaXN0ZW5lcihhKXtpZih0aGlzLmthLmhhcyhhKSl7dmFyIGI9dGhpcy5rYS5nZXQoYSk7Xy5lcWEuZGVsZXRlKGIpO18uZnFhLmRlbGV0ZShiKTt0aGlzLmthLmRlbGV0ZShhKX19fTtfLmFnKF8ucTVhLF8uQVpnKTsKXy52KCk7Cn1jYXRjaChlKXtfLl9EdW1wRXhjZXB0aW9uKGUpfQp0cnl7Cl8udSgicWRkZ0tlIik7Cl8uaGZiPW5ldyBfLlRmKF8uSllhKTsKXy52KCk7Cn1jYXRjaChlKXtfLl9EdW1wRXhjZXB0aW9uKGUpfQp0cnl7Cl8uQm1iPWZ1bmN0aW9uKGEsYil7cmV0dXJuIGIoYFske2Euc3Vic3RyaW5nKDQpfWApfTtfLkRtYj1jbGFzcyBleHRlbmRzIF8ubHtjb25zdHJ1Y3RvcihhKXtzdXBlcihhKX1jbGVhclZhbHVlKCl7cmV0dXJuIF8ud2oodGhpcyxfLkNtYil9fTtfLkNtYj1bMSwyXTt2YXIgRW1iO0VtYj1jbGFzcyBleHRlbmRzIF8ubHtjb25zdHJ1Y3RvcihhKXtzdXBlcihhKX1jbGVhclZhbHVlKCl7cmV0dXJuIF8ud2oodGhpcyxfLk9yKX19O18uT3I9WzIsMyw0LDUsNiw4XTt2YXIgRm1iPWNsYXNzIGV4dGVuZHMgXy5se2NvbnN0cnVjdG9yKGEpe3N1cGVyKGEpfVluYSgpe3JldHVybiBfLm1oKHRoaXMsRW1iLDIsXy5vaCgpKX11N2EoKXtyZXR1cm4gXy52aih0aGlzLDMpfX07Xy5HbWI9ZnVuY3Rpb24oYSl7cmV0dXJuIF8ubWgoYSxGbWIsMSxfLm9oKCkpfTtfLkhtYj1fLmRjKGNsYXNzIGV4dGVuZHMgXy5se2NvbnN0cnVjdG9yKGEpe3N1cGVyKGEpfX0pOwp9Y2F0Y2goZSl7Xy5fRHVtcEV4Y2VwdGlvbihlKX0KdHJ5ewpfLnUoIllZbUh6YiIpOwp2YXIgSW1iPWNsYXNze2NvbnN0cnVjdG9yKCl7dmFyIGE9bnVsbDt0aGlzLndhPSEwO3ZhciBiPV8uVWthKCJUU0R0ViIsd2luZG93KTsoYj10eXBlb2YgYiE9PSJzdHJpbmciP251bGw6YikmJihhPV8uR21iKF8uQm1iKGIsXy5IbWIpKVswXSk7aWYoYSlmb3IodmFyIGMgb2YgYS5ZbmEoKSlpZihfLm1qKGMsXy5waSw2LF8uT3IpKXRocm93IEVycm9yKCk7aWYoYj1hKXtjPXt9O2ZvcihkIG9mIGIuWW5hKCkpc3dpdGNoKGI9Xy5EZShkLDEpLnRvU3RyaW5nKCksXy5BaihkLF8uT3IpKXtjYXNlIDM6Y1tiXT1fLlZqKGQsMyxfLk9yKTticmVhaztjYXNlIDI6Y1tiXT1fLnRlKF8uRGUoZCxfLmxqKGQsXy5PciwyKSkpO2JyZWFrO2Nhc2UgNDpjW2JdPV8uWGooZCw0LF8uT3IpO2JyZWFrO2Nhc2UgNTpjW2JdPV8uWWooZCw1LF8uT3IpO2JyZWFrO2Nhc2UgNjpjW2JdPV8uU2goZCxfLnBpLDYsXy5Pcik7YnJlYWs7Y2FzZSA4OmxldCBlPV8uRmooZCxfLkRtYiw4LF8uT3IpO3N3aXRjaChfLkFqKGUsCl8uQ21iKSl7Y2FzZSAxOmNbYl09Xy5ZaihlLDEsXy5DbWIpO2JyZWFrO2RlZmF1bHQ6dGhyb3cgRXJyb3IoImpmYCIrXy5BaihlLF8uQ21iKSk7fWJyZWFrO2RlZmF1bHQ6dGhyb3cgRXJyb3IoImpmYCIrXy5BaihkLF8uT3IpKTt9dmFyIGQ9Y31lbHNlIGQ9e307dGhpcy5vYT1kO3RoaXMudG9rZW49YT9hLnU3YSgpOm51bGx9a2EoYSl7cmV0dXJuIGEucGhhc2U9PT0xfHx0aGlzLndhJiYhKGEua2V5IGluIHRoaXMub2EpP2EuZGVmYXVsdFZhbHVlOmEuY3Rvcih0aGlzLm9hW2Eua2V5XSl9dTdhKCl7cmV0dXJuIHRoaXMudG9rZW59fTtfLkptYj1jbGFzcyBleHRlbmRzIF8uc297Y29uc3RydWN0b3IoKXtzdXBlcigpO3RoaXMuR2k9bmV3IEltYn1rYShhKXt0aGlzLkdpPXRoaXMuR2k7cmV0dXJuIHRoaXMuR2kua2EoYSl9dTdhKCl7dGhpcy5HaT10aGlzLkdpO3JldHVybiB0aGlzLkdpLnU3YSgpfX07Xy5hZyhfLnpFYSxfLkptYik7Cl8udigpOwp9Y2F0Y2goZSl7Xy5fRHVtcEV4Y2VwdGlvbihlKX0KdHJ5ewpfLnUoIklaVDYzIik7CnZhciBNbWI9ZnVuY3Rpb24oKXt2YXIgYT1fLlVrYSgiblF5QUUiLHdpbmRvdyk7dmFyIGI9Xy5Va2EoIlRTRHRWIix3aW5kb3cpO2lmKGImJnR5cGVvZiBiPT09InN0cmluZyIpe3ZhciBjPV8uR21iKF8uQm1iKGIsXy5IbWIpKVswXTtpZihjKXtiPXt9O2ZvcihkIG9mIGMuWW5hKCkpc3dpdGNoKGM9Xy50KGQsNyksXy5BaihkLF8uT3IpKXtjYXNlIDM6YltjXT1fLlZqKGQsMyxfLk9yKTticmVhaztjYXNlIDI6YltjXT1fLnRlKF8uRGUoZCxfLmxqKGQsXy5PciwyKSkpO2JyZWFrO2Nhc2UgNDpiW2NdPV8uWGooZCw0LF8uT3IpO2JyZWFrO2Nhc2UgNTpiW2NdPV8uWWooZCw1LF8uT3IpO2JyZWFrO2Nhc2UgODpsZXQgZT1fLkZqKGQsXy5EbWIsOCxfLk9yKTtzd2l0Y2goXy5BaihlLF8uQ21iKSl7Y2FzZSAxOmJbY109IiUuQC4iK18uWWooZSwxLF8uQ21iKS5zdWJzdHJpbmcoMSl9fXZhciBkPWJ9ZWxzZSBkPXt9fWVsc2UgZD17fTtpZihkJiZPYmplY3Qua2V5cyhkKS5sZW5ndGg+MClmb3IobGV0IGUgb2YgT2JqZWN0LmtleXMoZCkpZSBpbgphfHwoYVtlXT1kW2VdKTtyZXR1cm4gYX07Xy5ObWI9Y2xhc3N7Z2V0KGEpe3ZhciBiPU1tYigpW2FdO3JldHVybiBiIT09dm9pZCAwP25ldyBfLlZrYSgiblF5QUUuIithLGIpOm51bGx9Z2V0QWxsKCl7cmV0dXJuKG5ldyBfLlZrYSgiblF5QUUiLE1tYigpKSkub2JqZWN0KCl9fTtfLmJnKF8uTm1iLF8uQXhhKTsKXy52KCk7Cn1jYXRjaChlKXtfLl9EdW1wRXhjZXB0aW9uKGUpfQp0cnl7Cl8uUHI9bmV3IF8uSHEoImNvbXBvbmVudENvbm5lY3RlZCIpO18uUXI9bmV3IF8uSHEoImNvbXBvbmVudERpc2Nvbm5lY3RlZCIpOwp9Y2F0Y2goZSl7Xy5fRHVtcEV4Y2VwdGlvbihlKX0KdHJ5ewpfLlJyPWNsYXNzIGV4dGVuZHMgXy5se2NvbnN0cnVjdG9yKGEpe3N1cGVyKGEpfX07Cn1jYXRjaChlKXtfLl9EdW1wRXhjZXB0aW9uKGUpfQp0cnl7Cl8udSgiWU5qR0RkIik7CgpfLnYoKTsKfWNhdGNoKGUpe18uX0R1bXBFeGNlcHRpb24oZSl9CnRyeXsKXy51KCJQclBZUmQiKTsKdmFyIFBtYixRbWIsUm1iLFRtYixWbWIsV21iLFhtYixhbmIsYm5iLFVtYixlbmIsWW1iLGhuYixmbmIsWm1iLGduYjtQbWI9ZnVuY3Rpb24oYSl7dmFyIGI9e307Zm9yKGxldCBjIGluIGEpe2xldCBkPWFbY10uSWkhPW51bGw/YVtjXS5JaToiZGF0YSI7ZCBpbiBifHwoYltkXT17fSk7YltkXVtjXT1hW2NdfWE9e307Zm9yKGxldCBjIGluIGIpYVtjXT1iW2NdO3JldHVybiBhfTtRbWI9ZnVuY3Rpb24oYSl7cmV0dXJuIF8uVEJhKGEsKGIsYyk9PihiW2MuZlhhXT1jLGIpLHt9KX07Um1iPWZ1bmN0aW9uKGEsYil7dmFyIGM7Zm9yKGxldCBkIG9mKChjPWEubWV0YWRhdGEpPT1udWxsP3ZvaWQgMDpjLlZwKXx8W10paWYoZC5rZXk9PT1iKXtkLnZhbHVlLm5vdGlmeSgwKTticmVha319O1RtYj1mdW5jdGlvbihhKXt2YXIgYj1hLkphKCk7cmV0dXJuIGI/KF8uU21iKGIsbnVsbCksYi5YeUhpOT1udWxsLGEuUWM9bnVsbCwhMCk6ITF9OwpWbWI9ZnVuY3Rpb24oKXt2YXIgYT1fLkJkKCJ3MmJ0QWUiKTtyZXR1cm4gYSYmYS5MYiYmYS5MYigpP18uQm1iKGEuc3RyaW5nKCksVW1iKTpuZXcgXy55d2F9O1dtYj1mdW5jdGlvbihhLGIpe3JldHVybiBfLlFjKGIsYz0+e2M9Xy5tamEoYywoZSxmKT0+Zi5pbmRleE9mKGAke2F9fGApPT0wKTt2YXIgZD17fTtfLlBjKGMsKGUsZik9PntkW2Yuc3Vic3RyaW5nKGYuaW5kZXhPZigifCIpKzEpXT1lfSk7cmV0dXJuIGR9KX07WG1iPWZ1bmN0aW9uKGEpe3JldHVybiBPYmplY3Qua2V5cyhhKS5yZWR1Y2UoKGIsYyk9PmJ8fCEhYVtjXSwhMSl9OwphbmI9ZnVuY3Rpb24oYSxiLGMsZCxlLGYpe3ZhciBnPXtqODpifSxoPW5ldyBfLkh1YSh7RlZ4TGtmOmd9LGMsdm9pZCAwLGQpO3JldHVybigpPT57ZnVuY3Rpb24gayhtKXt2YXIgbj17fSxwPV8uUWMoWW1iKGIpLChyLHgpPT5yLnRoZW4oej0+ei5sZW5ndGghPTF8fFptYih6WzBdKT9fLkloKHoubWFwKEI9Pl8uJG1iKEIpKSkudGhlbihCPT57blttLmdldCh4KV09Qn0pOl8uJG1iKHpbMF0pLnRoZW4oQj0+e25bbS5nZXQoeCldPUJ9KSkpO3JldHVybiBfLkloKF8uU2MocCkpLnRoZW4oKCk9Pm4pfWcuSE5iPWUgaW5zdGFuY2VvZiBfLlNnP2UudGhlbihrKTprKGUpO3JldHVybiBfLkloKFtmLGcuSE5iXSkudGhlbigoKT0+Xy5HdWEoYS5rYSxoLGQpKX19O2JuYj1mdW5jdGlvbihhKXt2YXIgYj1fLk9mLmdldEluc3RhbmNlKCk7YT1fLlRvYShiLGEpO3JldHVybiBfLkNOYT9fLm9vYShfLnpmKGEsITApLnRoZW4oKSk6Xy5YZihhKX07Cl8uU21iPWZ1bmN0aW9uKGEsYil7YS5fX2NvbXBvbmVudD1ifTtVbWI9Xy5kYyhfLnl3YSk7Xy5kbmI9ZnVuY3Rpb24oYSxiKXt2YXIgYz1fLmZPYShhKTtpZihjKXJldHVybiBfLkRnKGMpO2lmKGM9YS5YeUhpOSlyZXR1cm4gYztjPV8uTWcoYSxkPT4hIWQuYXR0cmlidXRlcyYmISFkLmF0dHJpYnV0ZXMuZ2V0TmFtZWRJdGVtKCJjLXdpeiIpKTtpZighY3x8YS5nZXRBdHRyaWJ1dGUoImRhdGEtbm9kZS1pbmRleCIpPT09IjA7MCIpcmV0dXJuIGNuYihiLGEpO2I9Xy5kbmIoYyxiKTtpZighYS5oYXNBdHRyaWJ1dGUoImMtd2l6IikpcmV0dXJuIGI7Yj1iLnRoZW4oZD0+ZW5iKGQpLnRoZW4oZT0+e3ZhciBmPWEuZ2V0QXR0cmlidXRlKCJkYXRhLW5vZGUtaW5kZXgiKTtlPWVbZl07aWYoIWUpdGhyb3cgRXJyb3IoImtmYCIrZC5pZCsiYCIrYS5nZXRBdHRyaWJ1dGUoImpzcmVuZGVyZXIiKSsiYCIrZik7ZS50eShhKTtyZXR1cm4gZX0pKTtyZXR1cm4gYS5YeUhpOT1ifTsKZW5iPWZ1bmN0aW9uKGEpe2EuSWF8fChhLklhPV8uSWgoXy5TYyhhLm9hKSkudGhlbihfLmZiYSkudGhlbihiPT5fLkloKGIubWFwKGM9PmMuaWQmJmMuaWQuZklhKCk/Zm5iKGMpOmMpKSkudGhlbihiPT5RbWIoYikpKTtyZXR1cm4gYS5JYX07WW1iPWZ1bmN0aW9uKGEpe3JldHVybiBfLlFjKGEub2EsYj0+YiBpbnN0YW5jZW9mIGduYj9fLkRnKFtiXSk6Yil9O2huYj1mdW5jdGlvbihhLGIpe3JldHVybiBiKGEpP18uSWgoT2JqZWN0LnZhbHVlcyhZbWIoYSkpLm1hcChjPT5jLnRoZW4oZD0+Xy5JaChkLm1hcChlPT5obmIoZSxiKSkpKSkpOl8uRGcoITApfTtfLiRtYj1mdW5jdGlvbihhKXthLk5hfHwoYS5OYT1hLk9hKCkpO3JldHVybiBhLk5hfTsKZm5iPWFzeW5jIGZ1bmN0aW9uKGEpe3ZhciBiPSgwLF8uTWYpKCksYz1iKCk7Yj1iKDEpO3RyeXtsZXQgZD1iKGF3YWl0IGMoYS5LYSkpLGU9T2JqZWN0LnZhbHVlcyhkKSxmPWEuaWQuZ2V0TmFtZSgpO2lmKCFlLmxlbmd0aCl0aHJvdyBFcnJvcigibGZgIitmKTtsZXQgZz1iKGF3YWl0IGMoZVswXSkpO2lmKCFnLmxlbmd0aCl0aHJvdyBFcnJvcigibWZgIitPYmplY3Qua2V5cyhkKVswXSk7cmV0dXJuIGdbMF19ZmluYWxseXtjKCl9fTtabWI9ZnVuY3Rpb24oYSl7cmV0dXJuIGEuQWEmJmEuQWEuUDZ9OwpnbmI9Y2xhc3N7Y29uc3RydWN0b3IoYSxiLGMsZCxlLGYsZyxoLGssbSl7dGhpcy5pZD1hO3RoaXMuRWE9Yjt0aGlzLndhPWM7dGhpcy5mWGE9ZDt0aGlzLmduYT1lfHx7fTtlPT09bnVsbCYmYS5nZXROYW1lKCk7dGhpcy5HYT1mO3RoaXMua2E9Z3x8e307dGhpcy5vYT1oO3RoaXMuS2E9azt0aGlzLkFhPW07dGhpcy5JYT1udWxsO3RoaXMuQmE9ITE7dGhpcy5PYT10aGlzLk5hPXRoaXMuUWM9bnVsbH1nZXRQYXJhbXMoKXtyZXR1cm4gdGhpcy5FYX11cGRhdGUoYSxiLGMsZCxlLGYsZyxoLGssbSl7dGhpcy5FYT1ifHx0aGlzLkVhO3RoaXMuZlhhPWR8fHRoaXMuZlhhO3RoaXMuR2E9Znx8dGhpcy5HYTt0aGlzLmthPWd8fHRoaXMua2E7dGhpcy5nbmE9ZXx8dGhpcy5nbmE7dGhpcy5vYT1ofHx0aGlzLm9hO3RoaXMuS2E9a3x8dGhpcy5LYTt0aGlzLkFhPW18fHRoaXMuQWE7dGhpcy53YT1jfHx0aGlzLndhfUphKCl7cmV0dXJuIHRoaXMuUWN9dHkoYSl7dGhpcy5pZC5mSWEoKT9mbmIodGhpcykudGhlbihiPT4Ke18uU21iKGEsYil9KTpfLlNtYihhLHRoaXMpO3RoaXMuUWM9YTtmb3IobGV0IGIgaW4gdGhpcy5nbmEpUm1iKHRoaXMuZ25hW2JdLF8uUHIpfWRpc3Bvc2UoKXtpZighdGhpcy5CYSl7dGhpcy5CYT0hMDtmb3IobGV0IGEgaW4gdGhpcy5nbmEpUm1iKHRoaXMuZ25hW2FdLF8uUXIpO2huYih0aGlzLFRtYil9fWlzRGlzcG9zZWQoKXtyZXR1cm4gdGhpcy5CYX19O3ZhciBpbmIsa25iLG1uYjtpbmI9ZnVuY3Rpb24oYSl7cmV0dXJuIGEuRWF8fG5ldyAoYS5vYS5nZXRQYXJhbXMoKS5jdG9yKX07Xy5qbmI9ZnVuY3Rpb24oYSxiKXthLndhPU9iamVjdC5hc3NpZ24oYS53YXx8e30sYik7cmV0dXJuIGF9O2tuYj1mdW5jdGlvbihhLGIsYyl7YS5JYT1iO2EuS2E9YztyZXR1cm4gYX07Cm1uYj1jbGFzc3tjb25zdHJ1Y3RvcihhLGIsYyl7dGhpcy5vYT1hO3RoaXMuRWE9Y3x8dm9pZCAwO3RoaXMuR2E9Yn1HMSgpe3JldHVybiB0aGlzLk5hfUFhKGEpe3RoaXMuQmE9YTtyZXR1cm4gdGhpc31KdmEoKXt2YXIgYT10aGlzLndhJiZ0aGlzLndhLlZwfHxbXTthLnB1c2goe2tleTpfLk9xLHZhbHVlOiEwfSk7cmV0dXJuIF8uam5iKHRoaXMse1ZwOmF9KX1rYShhKXtpZighYSlyZXR1cm4gdGhpczt2YXIgYj1fLlFjKGEsYz0+KCk9PmMpO3JldHVybiBrbmIodGhpcywoKT0+Xy5EZyhhKSxiKX1mZXRjaCgpe3JldHVybiBfLiRtYihfLmxuYih0aGlzLkdhLHRoaXMuR2EsW3RoaXNdKVswXSl9fTtfLlRyPXt9O3ZhciBjbmIsbm5iLG9uYixwbmIsdW5iLHFuYixybmIsc25iLHRuYix2bmIsd25iLHhuYix5bmI7Y25iPWZ1bmN0aW9uKGEsYil7dmFyIGM9Yi5nZXRBdHRyaWJ1dGUoImpzcmVuZGVyZXIiKSxkPV8ucmgoYyk7cmV0dXJuIF8uRGcoYm5iKGQpKS50aGVuKCgpPT57dmFyIGU9Xy5mT2EoYik7aWYoZSlyZXR1cm4gZTt2YXIgZj1fLlRyW2NdO2U9Yi5nZXRBdHRyaWJ1dGUoImRhdGEtcCIpP18uQm1iKGIuZ2V0QXR0cmlidXRlKCJkYXRhLXAiKSxoPT5fLmJjKGYuZ2V0UGFyYW1zKCkuY3RvcixoKSk6bnVsbDt2YXIgZz1uZXcgXy5remEoYixfLmRnKF8uV2QoYikpLF8uVXIpO2U9Xy5sbmIoYSxnLFthLlpEKGYsZSldKVswXTtlLnR5KGIpO3JldHVybiBlfSl9OwpfLmxuYj1mdW5jdGlvbihhLGIsYyl7dmFyIGQ9Xy5mYmEoXy5YaShjLGU9Pm5uYihhLGUub2EsITApKSk7Xy5FTmEoXy5PZi5nZXRJbnN0YW5jZSgpLGQpO2M9Yy5tYXAoZT0+b25iKGEsYixlLCIwOzAiKSk7ZD1bXS5jb25jYXQoLi4uYy5tYXAoZT0+ZS5QdWEpKTtwbmIoYSxkLGIpO3JldHVybiBjLm1hcChlPT5lLmo4KX07bm5iPWZ1bmN0aW9uKGEsYixjPSExKXt2YXIgZD1bXTtjJiZkLnB1c2goYi5rYSk7dmFyIGU9Yi5vYSgpO2UmJmUubGVuZ3RoPjAmJmUuZm9yRWFjaChmPT52b2lkIGQucHVzaChmKSk7Yi5mSWEoKXx8Xy5QYyhiLmdldENoaWxkcmVuKCksZj0+e2YucmVjdXJzaXZlfHxfLklhKGQsbm5iKGEsZi5pZCxjKSl9KTtyZXR1cm4gZH07Cm9uYj1mdW5jdGlvbihhLGIsYyxkLGUpe3ZhciBmPWMub2EsZz1WbWIoKSxoPXFuYihhLGMsZyksaz1gJHtmLmdldE5hbWUoKX06JHthLmthKyt9YCx7Z1BiOm0sT09iOm59PXJuYihhLGIsaCxjLklhLGspO20uY2F0Y2goKCk9Pnt9KTtrPW4/W25dOltdO3ZhciBwPXt9LHI9Xy5EZygpLHg9Xy5EZygpO2lmKGYuZklhKCkpe3I9c25iKGYsbSxjLkVhKTt2YXIgej1yLnRoZW4oKHthb2M6Sn0pPT50bmIoYSxiLGMsZyxtLEopKTt4PXIudGhlbigoe2NvYzpKfSk9PkopO3I9ei50aGVuKEo9PntPYmplY3QuYXNzaWduKHAsSi5HTmIpO0o9T2JqZWN0LnZhbHVlcyhwKTtyZXR1cm4gSi5sZW5ndGg9PT0xP0pbMF0udGhlbihOPT57TlswXS5mWGE9ZDtyZXR1cm4gcH0pOl8uRGcocCl9KTt2YXIgQj16LnRoZW4oSj0+Si5GTmIpO3oudGhlbihKPT57Si5ubGIubGVuZ3RoPjAmJnBuYihhLEoubmxiLGIpfSl9ZWxzZSBCPXRuYihhLGIsYyxnLG0pLE9iamVjdC5hc3NpZ24ocCxCLkdOYiksay5wdXNoKC4uLkIubmxiKSwKQj1CLkZOYjt2YXIgSD1pbmIoYyk7KHo9Yy5HMSgpKT96LnVwZGF0ZSgwLEgsbSxkLGgsZyxjLkJhLHAscixlKTp6PW5ldyBnbmIoZixILG0sZCxoLGcsYy5CYSxwLHIsZSk7ZT1hbmIoZix6LGIsYS5TbCgpLEIseCk7ei5PYT1lO3JldHVybntqODp6LFB1YTprfX07cG5iPWZ1bmN0aW9uKGEsYixjKXt2YXIgZD11bmIoYSxiKSxlPV8uQ2goYyxkKTtfLkxhKGIsZnVuY3Rpb24oZil7Zi5zdGFydC5jYWxsKHRoaXMsZSl9LGEpfTt1bmI9ZnVuY3Rpb24oYSxiKXt2YXIgYz17fTtfLkxhKGIsZnVuY3Rpb24oZCl7Xy5QYyhkLndaYSwoZSxmKT0+e2NbZC5Tb2MrInwiK2ZdPWV9LHRoaXMpfSxhKTtyZXR1cm4gUG1iKGMpfTsKcW5iPWZ1bmN0aW9uKGEsYixjKXt2YXIgZD17fSxlPWIub2EuUGEoKTtpZihfLlVjKGUpKXJldHVybiBkO3ZhciBmPWIuS2F8fHt9LGc9aW5iKGIpLGg9Yi53YTtfLlBjKGUsKGssbSk9PntpZighZlttXSl7dmFyIG49dm9pZCAwO3R5cGVvZiBrPT09ImZ1bmN0aW9uIj9uPWsoZyxjLGgpOm49aztuIT09dm9pZCAwJiYoZFttXT1uKX19LGEpO3JldHVybiBkfTsKcm5iPWZ1bmN0aW9uKGEsYixjLGQsZSl7dmFyIGY9ZD9fLkRnKGQoYikpOl8uRGcoe30pO2lmKE9iamVjdC5rZXlzKGMpLmxlbmd0aD09MClyZXR1cm57Z1BiOmYsT09iOm51bGx9O3ZhciBnPXt9O3JldHVybntnUGI6bmV3IF8uU2coaD0+e2cud1phPWM7Zy5Tb2M9ZTtnLnN0YXJ0PWs9PntrPWsudGhlbihtPT5XbWIoZSxtKSk7aChfLkloKFtmLGtdKS50aGVuKG09Pnt2YXIgbj1tWzBdO209bVsxXTt2YXIgcD17fTtmb3IobGV0IHIgaW4gbSlmb3IobGV0IHggaW4gbVtyXSlwW3hdPW1bcl1beF07Xy53amEocCxuKTtyZXR1cm4gcH0pKX19LGEpLE9PYjpnfX07CnNuYj1mdW5jdGlvbihhLGIsYyl7cmV0dXJuIGIudGhlbihkPT57dmFyIGU9YS5FYShkLGMpLGY9ZS5xazsoZD1hLm9hKCkpJiZkLmxlbmd0aD4wJiZmLmNvbmNhdChkLm1hcChnPT5nLmthKSk7ZD1Qcm9taXNlLnJlc29sdmUoKTtkPV8uck5hKF8uQU5hKF8uT2YuZ2V0SW5zdGFuY2UoKSksZik7ZT1PYmplY3Qua2V5cyhlLnprKTtlPWUubGVuZ3RoPT09MT9lWzBdOiJub3QgZXhpc3QiO3JldHVybntjb2M6Xy5JaChPYmplY3QudmFsdWVzKGQpKSxhb2M6ZX19KX07CnRuYj1mdW5jdGlvbihhLGIsYyxkLGUsZil7dmFyIGc9bmV3IE1hcCxoPXt9LGs9W10sbT1jLm9hLmdldENoaWxkcmVuKCksbj0xO2ZvcihsZXQgSCBpbiBtKXtpZihmJiZIIT09Ziljb250aW51ZTt2YXIgcD1tW0hdO2xldCBKPXAubmFtZTtnLnNldChKLEgpO3ZhciByPXAuRnYoaW5iKGMpLGQsZSk7aWYoIXZuYihhLHIpKWNvbnRpbnVlO3A9YTt2YXIgeD1uLHo9YixCPWMud2E7Yy5vYS5nZXROYW1lKCk7cD1yLlA2P3duYihwLHoscix4KTpyLnJlY3Vyc2l2ZT94bmIocCx6LHIseCk6eW5iKHAseixyLHgsQik7bGV0IHtqODpOLFB1YTpRfT1wO04mJihoW0pdPU4sbis9MSxrLnB1c2goLi4uUSkpfXJldHVybntHTmI6aCxubGI6ayxGTmI6Z319Owp2bmI9ZnVuY3Rpb24oYSxiKXt2YXIgYz1iLlJUIT1udWxsP2IuUlQ6ITAsZD0hIWIubmhhJiZiLm5oYS5sZW5ndGg+MCxlPSEhYi5rRWEmJmIua0VhLmxlbmd0aD4wLGY9ITE7Yi5uaGEmJmIubmhhLmxlbmd0aD4wJiYoZj1fLllpKGIubmhhLGZ1bmN0aW9uKGgpe3JldHVybiB0aGlzLndhLmdldChoKS5ib29sKCl9LGEpKTt2YXIgZz0hMTtiLmtFYSYmYi5rRWEubGVuZ3RoPjAmJihnPV8uWWkoYi5rRWEsZnVuY3Rpb24oaCl7cmV0dXJuIHRoaXMuQWEua2EoaCl9LGEpKTtyZXR1cm4gZHx8ZT9jJiYoZnx8Zyk6Y307CnduYj1mdW5jdGlvbihhLGIsYyxkKXtyZXR1cm57ajg6Yy5wTihhKS50aGVuKGZ1bmN0aW9uKGUpe3ZhciBmPV8uVGMoZSk7aWYoZS5UQWIpe3ZhciBnPWUuVEFifHxbXTt2YXIgaD1fLnhhKGYsaz0+ZVtrXT09Zyl9ZWxzZSBoPWZbMF0sZz1lW2hdfHxbXTtyZXR1cm4gXy5YaShnLGZ1bmN0aW9uKGssbSl7dmFyIG49Xy5tamEoZSxwPT4hQXJyYXkuaXNBcnJheShwKSk7bltoXT1rO2s9a25iKHRoaXMuWkQoYy5pZCxjLktlKSwoKT0+bixjLnF3KTsoe2o4Om19PW9uYih0aGlzLGIsayxgJHtkfTske219YCxjKSk7cmV0dXJuIG19LHRoaXMpfSx2b2lkIDAsYSksUHVhOltdfX07eG5iPWZ1bmN0aW9uKGEsYixjLGQpe3JldHVybntqODpjLnBOKGEpLnRoZW4oZT0+WG1iKGUpP3luYihhLGIsYyxkKS5qODpfLkRnKFtdKSksUHVhOltdfX07CnluYj1mdW5jdGlvbihhLGIsYyxkLGUpe2U9a25iKF8uam5iKGEuWkQoYy5pZCxjLktlKSxlKSxjLnBOLGMucXcpO2E9b25iKGEsYixlLGAke2R9OzBgLGMpO3JldHVybntqODpfLkRnKFthLmo4XSksUHVhOmEuUHVhfX07Cl8uVXI9Y2xhc3MgZXh0ZW5kcyBfLnNve3N0YXRpYyBRYSgpe3JldHVybntzZXJ2aWNlOntGUmE6Xy5ObWIscW9jOl8uSm1ifX19Y29uc3RydWN0b3IoYSl7c3VwZXIoKTt0aGlzLndhPWEuc2VydmljZS5GUmE7dGhpcy5BYT1hLnNlcnZpY2UucW9jO3RoaXMuV2k9bnVsbDt0aGlzLmthPTB9RzEoYSl7cmV0dXJuIF8uZG5iKGEsdGhpcyl9WkQoYSxiKXtyZXR1cm4gbmV3IG1uYihhLHRoaXMsYil9ZmV0Y2goYSxiLGMsZCxlKXt0aGlzLmthPTA7YT1fLmpuYih0aGlzLlpEKGEsYykuQWEoZCksZSk7Yj1fLmxuYih0aGlzLGIsW2FdKVswXTtyZXR1cm4gXy4kbWIoYil9QjYoYSl7cmV0dXJuIF8uRU5hKF8uT2YuZ2V0SW5zdGFuY2UoKSxubmIodGhpcyxhLCEwKSl9b2EoYSxiKXtyZXR1cm4gdGhpcy5aRChhLGIpfUxXYShhLGIsYyxkKXt2YXIgZT1ubmIodGhpcyxhKTtfLkVOYShfLk9mLmdldEluc3RhbmNlKCksZSk7dmFyIHtqODpmLFB1YTpnfT1vbmIodGhpcyxiLHRoaXMub2EoYSxjKSwKIjA7MCIpO2YudHkoZCk7dmFyIGg9MDtfLkxhKGcsZnVuY3Rpb24obSl7Xy5QYyhtLndaYSwoKT0+e2grK30sdGhpcyl9LHRoaXMpO2E9dW5iKHRoaXMsZyk7dmFyIGs9Xy5DaChiLGEpO18uTGEoZyxtPT57bS5zdGFydChrKX0pO3JldHVybiBmfX07Xy5hZyhfLkdxLF8uVXIpOwpfLnYoKTsKfWNhdGNoKGUpe18uX0R1bXBFeGNlcHRpb24oZSl9CnRyeXsKXy5pRWI9Y2xhc3MgZXh0ZW5kcyBfLmx7Y29uc3RydWN0b3IoYSl7c3VwZXIoYSl9fTsKfWNhdGNoKGUpe18uX0R1bXBFeGNlcHRpb24oZSl9CnRyeXsKXy5qRWI9Xy5rYygia2pLZFhlIixbXy54aSxfLldwLF8uanIsXy5nMGFdKTsKfWNhdGNoKGUpe18uX0R1bXBFeGNlcHRpb24oZSl9CnRyeXsKXy51KCJtSTNMRmIiKTsKXy5SZihfLmcwYSxhPT57dmFyIGI9Xy5CZCgiekNoSm9kIik7Yj1iLkxiKCk/Xy51bShiLF8uaUViKTp2b2lkIDA7YS5BYT0hIWImJiEhXy5BKGIsMSk7YiYmXy5waChiLDIpP2Eub2E9Xy50KGIsMil8fCIiOmEub2E9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vbG9nP2Zvcm1hdD1qc29uJmhhc2Zhc3Q9dHJ1ZSI7YS5HMj03MDQ7YS5CYT1uZXcgXy5xVWE7YS53YT0hMDthLlVYPV8ucG0oXy5CZCgiUXJ0eEsiKSwiMCIpfSk7Xy5SZihfLmpFYixhPT5hLmluaXQoKSk7Xy5uRWI9Y2xhc3MgZXh0ZW5kcyBfLnNve2NvbnN0cnVjdG9yKCl7c3VwZXIoKTt0aGlzLmthPXRoaXMuRzI9bnVsbDt0aGlzLkdhPXRoaXMuSWE9dGhpcy5FYT10aGlzLkthPXRoaXMuTmE9dGhpcy53YT10aGlzLkFhPSExfX07Xy5hZyhfLmcwYSxfLm5FYik7Cl8udigpOwp9Y2F0Y2goZSl7Xy5fRHVtcEV4Y2VwdGlvbihlKX0KdHJ5ewpfLm9FYj1mdW5jdGlvbihhLGIpe2Eua2E9YjtyZXR1cm4gYX07Xy5wRWI9ZnVuY3Rpb24oYSxiKXtyZXR1cm4gXy56ayhhLDMsYil9O18ucUViPWNsYXNzIGV4dGVuZHMgXy5se2NvbnN0cnVjdG9yKGEpe3N1cGVyKGEpfX07Cn1jYXRjaChlKXtfLl9EdW1wRXhjZXB0aW9uKGUpfQp0cnl7Cl8uckViPWNsYXNze2NvbnN0cnVjdG9yKCl7dGhpcy5BTmE9ITF9ZW1iKGEpe3JldHVybiBuZXcgXy5KU2EoYSx0aGlzLkFOYSl9R09hKCl7fW00KCl7fX07Cn1jYXRjaChlKXtfLl9EdW1wRXhjZXB0aW9uKGUpfQp0cnl7Cl8udSgibGF6RzdiIik7CnZhciBzRWI9Y2xhc3N7a2EoYSxiKXtyZXR1cm4gXy5YVGEoXy5VVGEobmV3IF8uU3AsYS5GYygpKSxiLmthKX13YSgpe3JldHVybiBuZXcgXy5yRWJ9b2EoKXtyZXR1cm4gbmV3IF8uekZhfX07dmFyIHRFYj1jbGFzc3tjb25zdHJ1Y3RvcihhLGIsYyxkKXthPW5ldyBfLmxyKGEsYnx8IjAiKTtjJiZfLnI2YShhLGMpO2QhPT12b2lkIDAmJihhLm9hPU1hdGgubWF4KGQsMUUzKSk7dGhpcy5rYT1hLmJ1aWxkKCk7Yz1fLldrYSgpO2MhPW51bGwmJnRoaXMua2Euc2V0UHJvZHVjdElEKGMpO2M9Xy5CZCgiY2ZiMmgiKTtjLkxiKCkmJihjPWMudG9TdHJpbmcoKSxkPV8uWTVhKHRoaXMua2Eub2EpLF8uZmgoZCw3LGMpKX1nZXRJbnN0YW5jZSgpe3JldHVybiB0aGlzLmthfWRpc3BhdGNoKGEpe3RoaXMua2EuZGlzcGF0Y2goYSl9Zmx1c2goYSxiKXt0aGlzLmthLmZsdXNoKGEsYil9TTgoKXt0aGlzLmthLk04KCl9d2EoYSl7dGhpcy5rYS5PYT1hfUFhKGEpe3ZhciBiPXRoaXMua2E7Yi5QYT1hJiZiLkVhfUJhKGEpe3RoaXMua2EuSWE9YX19O18ubmYoXy5UMGEpO18udUViPWNsYXNzIGV4dGVuZHMgXy5zb3tzdGF0aWMgUWEoKXtyZXR1cm57c2VydmljZTp7Y29uZmlndXJhdGlvbjpfLm5FYn19fWNvbnN0cnVjdG9yKGEpe3N1cGVyKCk7YT1hLnNlcnZpY2UuY29uZmlndXJhdGlvbjt2YXIgYj1hLkcyfHwtMTt0aGlzLmthPWEudHJhbnNwb3J0fHxuZXcgdEViKGIsYS5VWHx8IjAiLGEub2EsYS5QYSk7dGhpcy5rYS5CYShhLkFhKTt0aGlzLmthLkFhKCExKTt0aGlzLmthLndhKCExKTt0aGlzLm9hPWEuQmF8fG5ldyBzRWJ9fTtfLmFnKF8uaDBhLF8udUViKTsKXy52KCk7Cn1jYXRjaChlKXtfLl9EdW1wRXhjZXB0aW9uKGUpfQp0cnl7Cl8udSgiQ2s2M3RiIik7Cl8uckZiPWNsYXNzIGV4dGVuZHMgXy5zb3tzdGF0aWMgUWEoKXtyZXR1cm57c2VydmljZTp7b1E6Xy5oZmJ9fX1jb25zdHJ1Y3RvcihhKXtzdXBlcigpO3RoaXMub1E9YS5zZXJ2aWNlLm9RO3RoaXMuR3c9bmV3IF8uYmU7dGhpcy5rYT1uZXcgTWFwO3RoaXMub1EuYWRkTGlzdGVuZXIoKGIsYyx7dXNlckluaXRpYXRlZDpkLHdVOmV9KT0+e2lmKGUpZm9yKGxldCB7aWQ6ZixFZWE6Z31vZiBlKWlmKHRoaXMua2EuaGFzKGYpKXtsZXQgaD10aGlzLmthLmdldChmKTtfLmplKCgpPT57aChnKX0pO3RoaXMua2EuZGVsZXRlKGYpfWQmJnRoaXMuR3cuZGlzcGF0Y2hFdmVudCgiRldrY2VjIil9KX1nZXRTdGF0ZSgpe3JldHVybiB0aGlzLm9RLmdldFN0YXRlKCl9Z2V0Q3VycmVudFVybCgpe3JldHVybiB0aGlzLm9RLmdldEN1cnJlbnRVcmwoKX1nZXRFdmVudFRhcmdldCgpe3JldHVybiB0aGlzLkd3fWFkZExpc3RlbmVyKGEpe3RoaXMub1EuYWRkTGlzdGVuZXIoYSl9cHVzaEFzeW5jKGEsYiwKYyxkLGUpe3JldHVybiB0aGlzLnZDP3RoaXMudkMucHVzaEFzeW5jKGEsYixjLGQsZSk6KGQ/dGhpcy5vUS5vYShhLGIsZSk6dGhpcy5vUS5wdXNoQXN5bmMoYSxiLGUpKS50aGVuKGY9PntjJiZ0aGlzLmthLnNldChmLmlkLGMpO3JldHVybiBmLmlkfSl9bmF2aWdhdGUoYSxiKXtpZih0aGlzLnZDKXJldHVybiB0aGlzLnZDLm5hdmlnYXRlKGEsYik7dmFyIHtjb21taXR0ZWQ6YyxmaW5pc2hlZDpkfT10aGlzLm9RLm5hdmlnYXRlKGEsYik7cmV0dXJue2NvbW1pdHRlZDpjLnRoZW4oZT0+ZS5pZCksZmluaXNoZWQ6ZD09bnVsbD92b2lkIDA6ZC50aGVuKGU9PmUuaWQpfX1wb3AoYSxiPSExLGMpe2lmKHRoaXMudkMpcmV0dXJuIHRoaXMudkMucG9wKGEsYixjKTthPWI/dGhpcy5vUS5BYShhLGMpOnRoaXMub1EucG9wKGEsYyk7cmV0dXJuIF8uRGcoYSl9eVAoYSxiLGMsZCxlKXtyZXR1cm4gdGhpcy52Qz90aGlzLnZDLnlQKGEsYixjLGQsZSk6bnVsbH1vYShhKXtyZXR1cm4gdGhpcy52Qz8KdGhpcy52Qy5BYShhKTpudWxsfXdhKGEpe3RoaXMudkM9YX19O18uYWcoXy54NmEsXy5yRmIpOwpfLnYoKTsKfWNhdGNoKGUpe18uX0R1bXBFeGNlcHRpb24oZSl9CnRyeXsKCl8uUmYoXy5mcixhPT57YS5HYSgpfSk7Cn1jYXRjaChlKXtfLl9EdW1wRXhjZXB0aW9uKGUpfQp0cnl7Cl8udSgiV3E2bHhmIik7CnZhciBDRmI7Xy5CRmI9ZnVuY3Rpb24oYSxiKXsobmV3IF8ud28oW2JdKSkuYXBwZW5kKGEpfTtDRmI9ZnVuY3Rpb24oYSxiLGMsZCl7aWYoYiBpbnN0YW5jZW9mIEVsZW1lbnR8fF8uUmcoYikpYj1bYl07dmFyIGU9W107Xy5MYShiLGY9PnsoZj1fLlloKGYsYykpJiZlLnB1c2goZil9KTthLkRlKHtSZTplLE1lOmR9KX07Cl8uTHU9Y2xhc3MgZXh0ZW5kcyBfLnNve3N0YXRpYyBRYSgpe3JldHVybntzZXJ2aWNlOnt0cmFuc3BvcnQ6Xy51RWJ9fX1jb25zdHJ1Y3RvcihhKXtzdXBlcigpO2E9YS5zZXJ2aWNlLnRyYW5zcG9ydDt0aGlzLkVhPWEua2E7dGhpcy5BYT1hLm9hO3RoaXMuQmE9ITF9R2EoKXt0aGlzLkJhPSEwfW9hKGEsYil7Q0ZiKHRoaXMsYSwxLGIpfXdhKGEsYil7Q0ZiKHRoaXMsYSwyLGIpfURlKGEsYj0hMSl7dmFyIGM9dGhpcy5BYSBpbnN0YW5jZW9mIF8ucVVhP18ublVhKHRoaXMuQWEsYSx2b2lkIDAsITEpOm51bGw7cmV0dXJuIGM/KHRoaXMuRWEuZGlzcGF0Y2goYyksKGJ8fHRoaXMuQmEmJmEuTWUpJiZ0aGlzLkVhLmZsdXNoKCksITApOiExfWthKCl7cmV0dXJuIG5ldyBfLk9UYSgoYSxiKT0+dGhpcy5EZShhLGIpKX19O18uYWcoXy5mcixfLkx1KTsKCl8udigpOwp9Y2F0Y2goZSl7Xy5fRHVtcEV4Y2VwdGlvbihlKX0KdHJ5ewpfLnUoIlJyNU5PZSIpOwp2YXIgUUZiPWNsYXNze2NvbnN0cnVjdG9yKGEsYixjLGQsZSl7dGhpcy5rYT1hO3RoaXMuTWU9Yjt0aGlzLlJlPWM7dGhpcy5CcT1kO3RoaXMubkxhPWV9fSxSRmI9Y2xhc3N7Y29uc3RydWN0b3IoYSxiKXt0aGlzLm91dHB1dD1hO3RoaXMuaW5hPWJ9fTt2YXIgU0ZiO18uTnU9ZnVuY3Rpb24oYSxiLGM9e30sZCl7Yj1hLk16YShiLGMpO2EueGdhKGIuaW5hLGQpO3JldHVybiBiLm91dHB1dH07U0ZiPWZ1bmN0aW9uKGEsYil7aWYoIV8uaVVhKGIpKXJldHVybiExO2IuTGZhJiZiLkxmYS5idWlsZCgpLmxlbmd0aD4wJiYhXy5oVWEoYikmJihiLlJlPWEuS2EpO3JldHVybiBhLklhLkRlKGIsITApfTtfLlRGYj1mdW5jdGlvbihhLGIsYyl7e2xldCBlPV8uT1VhKF8uTmgoXy50d2EpLGMua2EpO2Eua2E9ITA7dHJ5e2xldCBmPWIoKTt2YXIgZD1uZXcgUkZiKGYsYyl9ZmluYWxseXthLmthPSExLF8uT1VhKF8uTmgoXy50d2EpLGUpfX1yZXR1cm4gZH07Xy5VRmI9ZnVuY3Rpb24oe01lOmEsUmU6YixCcTpjLG5MYTpkfT17fSl7cmV0dXJuIG5ldyBRRmIobmV3IF8udVRhLGEsYixjLGQpfTsKXy5PdT1jbGFzcyBleHRlbmRzIF8uc297c3RhdGljIFFhKCl7cmV0dXJue3JjOntzb3k6Xy5ZcH0sc2VydmljZTp7SGM6Xy5MdX19fWNvbnN0cnVjdG9yKGEpe3N1cGVyKCk7dGhpcy5JYT1hLnNlcnZpY2UuSGM7dGhpcy5FYT1hLnJjLnNveTt0aGlzLmthPSExO3RoaXMuQmE9dGhpcy5vYT10aGlzLkFhPXRoaXMud2E9dGhpcy5LYT12b2lkIDA7dGhpcy5OYT10aGlzLkVhLmdldEV2ZW50VGFyZ2V0KCkubGlzdGVuKF8ualNhLCgpPT57aWYoIXRoaXMua2Epe3ZhciBiPV8uT1VhKF8uTmgoXy50d2EpKTtsZXQgYz10aGlzLkFhLGQ9dGhpcy53YSxlPXRoaXMub2EsZj10aGlzLkJhO3RoaXMuQmE9dGhpcy5vYT10aGlzLndhPXRoaXMuQWE9dm9pZCAwO1NGYih0aGlzLHtMZmE6YixNZTpjLFJlOmQsQnE6ZSxuTGE6Zn0pfX0sITEpfUdhKCl7Xy5OaChfLnR3YSkuQmE9KGEsYik9Pnt2YXIgYztfLk51KHRoaXMsKCk9PntiKCk7cmV0dXJuIGF9LHtSZTpfLk53YSgoYz1hLnBhcmVudEVsZW1lbnQpIT0KbnVsbD9jOmEsITApfSl9fVRiKCl7c3VwZXIuVGIoKTt0aGlzLkVhLmdldEV2ZW50VGFyZ2V0KCkudm8odGhpcy5OYSl9TXphKGEsYj17fSl7cmV0dXJuIF8uVEZiKHRoaXMsYSxfLlVGYihiKSl9eGdhKGEpe3JldHVybiBTRmIodGhpcyx7TGZhOmEua2EsTWU6YS5NZSxSZTphLlJlLEJxOmEuQnEsbkxhOmEubkxhfSl9fTtfLmFnKF8uaHIsXy5PdSk7Cl8udigpOwp9Y2F0Y2goZSl7Xy5fRHVtcEV4Y2VwdGlvbihlKX0KdHJ5ewpfLnUoImQ2RlZaZCIpOwp2YXIgWEtiO1hLYj1mdW5jdGlvbihhLGIpe2Eua2EuZm9yRWFjaChjPT57dmFyIGQ9Yi5maWx0ZXIoZT0+Yy5lbGVtZW50cy5pbmNsdWRlcyhlLnRhcmdldCkpO2QubGVuZ3RoPjAmJmMuY2FsbGJhY2soZCl9KX07Xy5ZS2I9ZnVuY3Rpb24oYSxiLGMpe3ZhciBkPWEub2ErKztpZihhLlhpPT09dm9pZCAwKXJldHVybiBkO2I9YiBpbnN0YW5jZW9mIF8ud28/Yi50b0FycmF5KCk6W2JdO2Eua2EucHVzaCh7a2V5OmQsZWxlbWVudHM6YixjYWxsYmFjazpjfSk7Yi5mb3JFYWNoKGU9PnthLlhpLm9ic2VydmUoZSl9KTtyZXR1cm4gZH07Cl8uWktiPWNsYXNze2NvbnN0cnVjdG9yKCl7dGhpcy5rYT1bXTt0aGlzLm9hPTE7dmFyIGE9d2luZG93O3RoaXMuWGk9YS5SZXNpemVPYnNlcnZlcj09PXZvaWQgMD92b2lkIDA6bmV3IGEuUmVzaXplT2JzZXJ2ZXIoYj0+e1hLYih0aGlzLGIpfSl9cGF1c2UoKXt0aGlzLlhpIT09dm9pZCAwJiZ0aGlzLlhpLmRpc2Nvbm5lY3QoKX1yZXN1bWUoKXt0aGlzLlhpIT09dm9pZCAwJiZ0aGlzLmthLmZsYXRNYXAoYT0+YS5lbGVtZW50cykuZm9yRWFjaChhPT57dGhpcy5YaS5vYnNlcnZlKGEpfSl9aXNTdXBwb3J0ZWQoKXtyZXR1cm4gdGhpcy5YaSE9PXZvaWQgMH19OwpfLnYoKTsKfWNhdGNoKGUpe18uX0R1bXBFeGNlcHRpb24oZSl9CnRyeXsKXy5qdj1fLmtjKCJ5YjA4amYiLFtdKTtfLk9jKF8uanYpOwp9Y2F0Y2goZSl7Xy5fRHVtcEV4Y2VwdGlvbihlKX0KdHJ5ewpfLnUoInliMDhqZiIpOwp2YXIgJEtiOyRLYj1mdW5jdGlvbihhLGIpe2lmKGEuWGkhPT12b2lkIDApe3ZhciBjPWEua2EuZmlsdGVyKGQ9PmQua2V5PT09YikuZmxhdE1hcChkPT5kLmVsZW1lbnRzKTthLmthPWEua2EuZmlsdGVyKGQ9PmQua2V5IT09Yik7Yy5maWx0ZXIoZD0+IWEua2EuZmxhdE1hcChlPT5lLmVsZW1lbnRzKS5pbmNsdWRlcyhkKSkuZm9yRWFjaChkPT57YS5YaS51bm9ic2VydmUoZCl9KX19O18ua3Y9Y2xhc3N7Y29uc3RydWN0b3IoKXt0aGlzLlhpPW5ldyBfLlpLYn1rYShhLGIpe3JldHVybiBfLllLYih0aGlzLlhpLGEsYil9b2EoYSl7JEtiKHRoaXMuWGksYSl9cGF1c2UoKXt0aGlzLlhpLnBhdXNlKCl9cmVzdW1lKCl7dGhpcy5YaS5yZXN1bWUoKX1pc1N1cHBvcnRlZCgpe3JldHVybiB0aGlzLlhpLmlzU3VwcG9ydGVkKCl9fTtfLmJnKF8ua3YsXy5qdik7Cl8udigpOwp9Y2F0Y2goZSl7Xy5fRHVtcEV4Y2VwdGlvbihlKX0KdHJ5ewpfLnUoIlVGWmhCYyIpOwpfLm92PWZ1bmN0aW9uKGEpe3JldHVybiBhLmxvY2F0aW9uLnNlYXJjaH07Xy5PTGI9ZnVuY3Rpb24oYSl7cmV0dXJuYCR7YS5sb2NhdGlvbi5wcm90b2NvbH0vLyR7YS5sb2NhdGlvbi5ob3N0fWB9O18ucHY9Y2xhc3MgZXh0ZW5kcyBfLnNve3N0YXRpYyBRYSgpe3JldHVybntzZXJ2aWNlOnt3aW5kb3c6Xy5xb319fWNvbnN0cnVjdG9yKGEpe3N1cGVyKCk7dGhpcy5sb2NhdGlvbj1hLnNlcnZpY2Uud2luZG93LmdldCgpLmxvY2F0aW9ufVhlKCl7cmV0dXJuIHRoaXMubG9jYXRpb24uaHJlZn10b1N0cmluZygpe3JldHVybiB0aGlzLmxvY2F0aW9uLnRvU3RyaW5nKCl9fTtfLmFnKF8uUHEsXy5wdik7Cl8udigpOwp9Y2F0Y2goZSl7Xy5fRHVtcEV4Y2VwdGlvbihlKX0KdHJ5ewpfLnUoImtRdmxlZiIpOwp2YXIgelliLEFZYixEWWI7Xy55WWI9ZnVuY3Rpb24oYSxiLGMsZCl7Xy5GaGEoYSxjLGQpO3JldHVybiBfLlBEYShhLDIsYil9O3pZYj1fLmVhLmdhcGk7QVliPWZ1bmN0aW9uKGEpe2EuaWZyYW1lfHwoYS5pZnJhbWU9Xy5TbSgiSUZSQU1FIiksYS5pZnJhbWUuc3R5bGUuZGlzcGxheT0ibm9uZSIsXy5UbShhLmlmcmFtZSkpO3JldHVybiBhLmlmcmFtZX07CkRZYj1mdW5jdGlvbihhLGIsYz0hMSl7YT1hLndpbmRvdy5nZXQoKS5sb2NhdGlvbjtfLkJZYiYmIV8uQ1liJiZ6WWIuaWZyYW1lcy5nZXRDb250ZXh0KCkuZ2V0UGFyZW50SWZyYW1lKCkhPW51bGw/KGM9elliLmlmcmFtZXMuZ2V0Q29udGV4dCgpLmdldFBhcmVudElmcmFtZSgpLGIubWF0Y2goIl4vW14vXSsiKSYmKGI9YCR7YS5wcm90b2NvbH0vLyR7YS5ob3N0fWArYiksYy5zZW5kKCJuYXZpZ2F0ZSIse2hyZWY6Yn0sdm9pZCAwLHpZYi5pZnJhbWVzLkNST1NTX09SSUdJTl9JRlJBTUVTX0ZJTFRFUikpOmM/Xy5oZChhLGIpOl8uZ2QoYSxiKX07Cl8uaXc9Y2xhc3MgZXh0ZW5kcyBfLnNve3N0YXRpYyBRYSgpe3JldHVybntzZXJ2aWNlOnt3aW5kb3c6Xy5xb319fWNvbnN0cnVjdG9yKGEpe3N1cGVyKCk7dGhpcy5pZnJhbWU9bnVsbDt0aGlzLndpbmRvdz1hLnNlcnZpY2Uud2luZG93O2E9dGhpcy53aW5kb3cuZ2V0KCkubG9jYXRpb247dGhpcy5vYT1uZXcgUmVnRXhwKGBeKCR7YS5wcm90b2NvbH0vLyR7YS5ob3N0fSk/Lyh1cmx8YWNsaylcXD8uKiZyY3Q9aigmfCQpYCl9a2EoYSxiPSExKXt2YXIgYz0hMTt0cnl7dGhpcy5vYS50ZXN0KGEpJiYoXy5MaSgiZ29vZ2xlLnIiLDEpLEFZYih0aGlzKS5zcmM9YSxjPSEwKX1maW5hbGx5e2N8fChjPXRoaXMud2luZG93LmdldCgpLmxvY2F0aW9uLGI/Xy5oZChjLF8uRGMoYSkpOmMuaHJlZj1hKX19bmF2aWdhdGVUbyhhLGI9ITEpe3ZhciBjPSExO3RyeXtsZXQgZT1hIGluc3RhbmNlb2YgXy50Yz9fLnpjKGEpLnRvU3RyaW5nKCk6Xy5xaWEoYSk/Xy5CYyhhKTphO2lmKHRoaXMub2EudGVzdChlKSl7Xy5MaSgiZ29vZ2xlLnIiLAoxKTtsZXQgZixnPSgoZj1fLmNrYShlKSkhPW51bGw/ZjoiIikuc3Vic3RyaW5nKDEpLGg9KDAsXy5MYylgLyR7Z31gLGssbT1uZXcgTWFwKChuZXcgVVJMU2VhcmNoUGFyYW1zKChrPV8ua2QoNixlKSkhPW51bGw/azoiIikpLmVudHJpZXMoKSksbj1fLk1jKGgsbSkscD1fLmxkKGUpO3ZhciBkPXA/Xy5aaWEobixwKTpuO18uWmMoQVliKHRoaXMpLGQpO2M9ITB9fWZpbmFsbHl7Y3x8RFliKHRoaXMsYS50b1N0cmluZygpLGIpfX19O18uQlliPSExO18uQ1liPSExO18uYWcoXy5acSxfLml3KTsKXy52KCk7Cn1jYXRjaChlKXtfLl9EdW1wRXhjZXB0aW9uKGUpfQp0cnl7Cl8udSgiZUJBZVNiIik7Cl8uc0ZiPW5ldyBfLlRmKF8uVXEpOwpfLnYoKTsKfWNhdGNoKGUpe18uX0R1bXBFeGNlcHRpb24oZSl9CnRyeXsKXy5uZihfLlVxKTsKfWNhdGNoKGUpe18uX0R1bXBFeGNlcHRpb24oZSl9CnRyeXsKXy51KCJNa0h5R2QiKTsKdmFyICQyYj1bMSwyXSxiM2I9ZnVuY3Rpb24oYSxiLGMpe2EuRWE9PT0wJiYoYj9hLk5hPV8uaGUoYS5BYS5nZXQoKS5kb2N1bWVudC5ib2R5LCJtb3VzZWRvd24iLGQ9PnthM2IoYSxkKX0sITApOihfLnlJYSYmKGEuT2E9Xy5oZShhLkFhLmdldCgpLmRvY3VtZW50LmJvZHksInRvdWNoc3RhcnQiLGQ9PnthM2IoYSxkKSYmIWMmJihkLnN0b3BQcm9wYWdhdGlvbigpLGQucHJldmVudERlZmF1bHQoKSl9LHtjYXB0dXJlOiEwLHBhc3NpdmU6ITF9KSksYS5HYT1fLmhlKGEuQWEuZ2V0KCkuZG9jdW1lbnQuYm9keSwiY2xpY2siLGQ9PnthM2IoYSxkKX0sITApKSk7YS5FYSsrfSxmM2I9ZnVuY3Rpb24oYSl7YS5aYXx8KGEuWmE9YS53YS5nZXRFdmVudFRhcmdldCgpLmxpc3RlbigiRldrY2VjIixiPT57aWYoYS5rYSl7dmFyIGM9YS53YS5nZXRTdGF0ZSgpO2lmKGMpaWYoTnVtYmVyKGMuaWQpPT09TnVtYmVyKGEua2EuQXopKWEua2EucWNiKCk7ZWxzZSBmb3IobGV0IGQgb2YgYS5vYS52YWx1ZXMoKSlkLmV2ZW50VHlwZXMuaGFzKDQpJiYKYzNiKGEsZCw0LHZvaWQgMCxiKX1lbHNlIGlmKGI9ZDNiKGEpKWlmKGM9YS5TYS5nZXQoYikpYS5TYS5kZWxldGUoYiksZTNiKGEsYyl9KSl9LGczYj1mdW5jdGlvbihhLGIsYyxkKXthLmthJiYhYS5rYS5saXN0ZW5lciYmKGEua2EubGlzdGVuZXI9Yik7dmFyIGU9YS53YS5nZXRTdGF0ZSgpLmlkO2Eua2EmJmEua2EubGlzdGVuZXIuZWxlbWVudD09PWIuZWxlbWVudCYmYS5rYS5Bej09PWV8fGEuQmEhPT0wfHwoZT1hLndhLmdldFN0YXRlKCksZD1PYmplY3QuYXNzaWduKHt9LGU/ZS51c2VyRGF0YTp2b2lkIDAse2dRYjpkfSksYS53YS5wdXNoQXN5bmModm9pZCAwLGQpLnRoZW4oZj0+e2Eua2E9e0F6OmYscWNiOmMsbGlzdGVuZXI6Yn19KSl9LGgzYj1mdW5jdGlvbihhLGIsYz0hMCl7YS5vYS5kZWxldGUoXy4kZShiLmVsZW1lbnQpKSYmKGIuZXZlbnRUeXBlcy5oYXMoMSkmJihhLkVhLS0sYS5FYT09PTAmJihhLk5hPyhfLkFuKGEuTmEpLGEuTmE9bnVsbCk6KGEuT2EmJihfLkFuKGEuT2EpLAphLk9hPW51bGwpLGEuR2EmJihfLkFuKGEuR2EpLGEuR2E9bnVsbCkpKSksYi5ldmVudFR5cGVzLmhhcygyKSYmKGEuS2EtLSxhLkthPT09MCYmKF8uQW4oYS5SYSksYS5SYT1udWxsKSksYi5ldmVudFR5cGVzLmhhcygzKSYmKGEuSWEtLSxhLklhPT09MCYmKF8uQW4oYS5QYSksYS5QYT1udWxsKSksYi5ldmVudFR5cGVzLmhhcyg0KSYmKGEuQmEtLSxhLkJhPT09MCYmYyYmYS53YS5wb3AoYS5rYS5BeikpKX0sYzNiPWZ1bmN0aW9uKGEsYixjLGQsZSl7dHJ5e3ZhciBmPWIub25EaXNtaXNzKGMsZCxlKX1jYXRjaChnKXtfLmZhKGcpfWQ9Zj09PSExO2R8fChjPWIuZXZlbnRUeXBlcy5oYXMoNCkmJmMhPT00LGgzYihhLGIsYykpO3JldHVybiFkfSxhM2I9ZnVuY3Rpb24oYSxiKXt2YXIgYz1iLnRhcmdldDtmb3IobGV0IGQgb2ZbLi4uYS5vYS52YWx1ZXMoKV0ucmV2ZXJzZSgpKWlmKGQuZXZlbnRUeXBlcy5oYXMoMSkpe2lmKCFfLiRnKGQuZWxlbWVudCxjKSYmYzNiKGEsZCwxLGMsYikpcmV0dXJuITA7CmJyZWFrfXJldHVybiExfSxkM2I9ZnVuY3Rpb24oYSl7cmV0dXJuKGE9YS53YS5nZXRTdGF0ZSgpKSYmKGE9YS51c2VyRGF0YSkmJmEuZ1FiP2EuZ1FiOm51bGx9LGUzYj1mdW5jdGlvbihhLGIpe2Eua2E9e0F6OmEud2EuZ2V0U3RhdGUoKS5pZCxxY2I6YixsaXN0ZW5lcjpudWxsfTtiKCl9LGkzYj1jbGFzcyBleHRlbmRzIF8uc297c3RhdGljIFFhKCl7cmV0dXJue3NlcnZpY2U6e3dpbmRvdzpfLnFvLGhpc3Rvcnk6Xy5zRmJ9fX1jb25zdHJ1Y3RvcihhKXtzdXBlcigpO3RoaXMuQWE9YS5zZXJ2aWNlLndpbmRvdzt0aGlzLndhPWEuc2VydmljZS5oaXN0b3J5O3RoaXMub2E9bmV3IE1hcDt0aGlzLkVhPTA7dGhpcy5OYT10aGlzLk9hPXRoaXMuR2E9bnVsbDt0aGlzLkthPTA7dGhpcy5SYT1udWxsO3RoaXMuSWE9MDt0aGlzLlBhPW51bGw7dGhpcy5CYT0wO3RoaXMua2E9dGhpcy5aYT1udWxsO3RoaXMuU2E9bmV3IE1hcH1saXN0ZW4oYSxiLGM9JDJiLGQ9ITEsZT0hMSxmPSExLGcsaCl7dmFyIGs9Cl8uJGUoYSk7Yz1uZXcgU2V0KGMpO2lmKGUpdGhpcy51bmxpc3RlbihhKTtlbHNlIGlmKHRoaXMub2EuaGFzKGspKXRocm93IEVycm9yKCJNZyIpO3RoaXMub2Euc2V0KGsse2VsZW1lbnQ6YSxvbkRpc21pc3M6YixldmVudFR5cGVzOmN9KTtjLmhhcygxKSYmYjNiKHRoaXMsZCxmKTtjLmhhcygyKSYmKHRoaXMuS2E9PT0wJiYodGhpcy5SYT1fLmhlKHRoaXMuQWEuZ2V0KCkuZG9jdW1lbnQuYm9keSwia2V5ZG93biIsbT0+e2lmKG0ua2V5Q29kZT09PTI3KXtmb3IobGV0IG4gb2YgdGhpcy5vYS52YWx1ZXMoKSluLmV2ZW50VHlwZXMuaGFzKDIpJiZjM2IodGhpcyxuLDIsdm9pZCAwLG0pO20uc3RvcFByb3BhZ2F0aW9uKCk7bS5wcmV2ZW50RGVmYXVsdCgpfXJldHVybiBmfSwhMCkpLHRoaXMuS2ErKyk7Yy5oYXMoMykmJih0aGlzLklhPT09MCYmKHRoaXMuUGE9Xy5oZSh0aGlzLkFhLmdldCgpLmRvY3VtZW50LmJvZHksImZvY3VzIixtPT57dmFyIG49bS50YXJnZXQ7Zm9yKGxldCBwIG9mIHRoaXMub2EudmFsdWVzKCkpIXAuZXZlbnRUeXBlcy5oYXMoMyl8fApfLnBnKG4pJiZuLm5vZGVUeXBlPjAmJl8uJGcocC5lbGVtZW50LG4pfHxjM2IodGhpcyxwLDMsbixtKTtyZXR1cm4gZn0sITApKSx0aGlzLklhKyspO2MuaGFzKDQpJiYoZjNiKHRoaXMpLGE9dGhpcy5vYS5nZXQoayksZzNiKHRoaXMsYSxnLGgpLHRoaXMuQmErKyl9dW5saXN0ZW4oYSxiPSEwKXsoYT10aGlzLm9hLmdldChfLiRlKGEpKSkmJmgzYih0aGlzLGEsYil9ZGlzbWlzcyhhKXsoYT10aGlzLm9hLmdldChfLiRlKGEpKSkmJmMzYih0aGlzLGEsMCl9aGFzTGlzdGVuZXIoYSl7cmV0dXJuIHRoaXMub2EuaGFzKF8uJGUoYSkpfW5iKGEsYil7ZjNiKHRoaXMpO2QzYih0aGlzKT09PWI/ZTNiKHRoaXMsYSk6dGhpcy5TYS5zZXQoYixhKX19O18uYWcoXy5TWWEsaTNiKTsKXy52KCk7Cn1jYXRjaChlKXtfLl9EdW1wRXhjZXB0aW9uKGUpfQp0cnl7Cl8udSgia2JBbTlkIik7Cl8uSng9bmV3IF8uVGYoXy5YcSk7Cl8udigpOwp9Y2F0Y2goZSl7Xy5fRHVtcEV4Y2VwdGlvbihlKX0KdHJ5ewpfLm5mKF8uUnEpOwp9Y2F0Y2goZSl7Xy5fRHVtcEV4Y2VwdGlvbihlKX0KdHJ5ewpfLnUoImtIVlNVYiIpOwpfLmFnKF8uQllhLGNsYXNzIGV4dGVuZHMgXy5zb3tpc0F2YWlsYWJsZSgpe3JldHVybiExfWVudGVyQmFzaWNNb2RlKCl7cmV0dXJuIF8uSWkoInVpbSIsImVibSIpfWV4aXRCYXNpY01vZGUoKXtyZXR1cm4gXy5JaSgidWltIiwieGJtIil9aXNJbkJhc2ljTW9kZSgpe3JldHVybiExfX0pOwpfLnYoKTsKfWNhdGNoKGUpe18uX0R1bXBFeGNlcHRpb24oZSl9CnRyeXsKXy51KCJzVHNETWMiKTsKXy56R2I9bmV3IF8uVGYoXy5ScSk7Cl8udigpOwp9Y2F0Y2goZSl7Xy5fRHVtcEV4Y2VwdGlvbihlKX0KdHJ5ewpfLnUoInYxZGFNIik7CgpfLnYoKTsKfWNhdGNoKGUpe18uX0R1bXBFeGNlcHRpb24oZSl9CnRyeXsKXy51KCJMSzRQeWUiKTsKdmFyIEFHYixER2IsR0diLEZHYixFR2I7QUdiPVszXTtfLkJHYj1mdW5jdGlvbigpe3JldHVybiExfTtfLkNHYj1mdW5jdGlvbigpe3JldHVybiExfTtER2I9ZnVuY3Rpb24oYSxiKXtzd2l0Y2goYil7Y2FzZSAwOnJldHVybiBhLmpmLmVudGVyQmFzaWNNb2RlKCk7Y2FzZSAxOnJldHVybiBhLmpmLmV4aXRCYXNpY01vZGUoKTtkZWZhdWx0Ol8uZWIoYiwic3RhdGUgaGFkIGFuIHVua25vd24gdHlwZSIpfX07Cl8uUnU9Y2xhc3MgZXh0ZW5kcyBfLnNve3N0YXRpYyBRYSgpe3JldHVybntzZXJ2aWNlOntqZjpfLnpHYn19fWNvbnN0cnVjdG9yKGEpe3N1cGVyKCk7dGhpcy5qZj1hLnNlcnZpY2UuamY7dGhpcy5zdGFjaz1uZXcgRUdifWlzQXZhaWxhYmxlKCl7cmV0dXJuIHRoaXMuamYuaXNBdmFpbGFibGUoKX1pc0luQmFzaWNNb2RlKCl7cmV0dXJuIHRoaXMuamYuaXNJbkJhc2ljTW9kZSgpfXdhc0Jhc2ljTW9kZUxhc3RSZXF1ZXN0ZWQoKXtyZXR1cm4gXy5CR2IoKT90aGlzLnN0YWNrLmdldEN1cnJlbnRTdGF0ZSgpPT09MDp0aGlzLmlzSW5CYXNpY01vZGUoKX1lbnRlckJhc2ljTW9kZShhKXtyZXR1cm4gXy5CR2IoKT90aGlzLnNldFN0YXRlKGEsMCwiZW50ZXJCYXNpY01vZGUiKTp0aGlzLmpmLmVudGVyQmFzaWNNb2RlKCl9ZXhpdEJhc2ljTW9kZShhKXtyZXR1cm4gXy5CR2IoKT90aGlzLnNldFN0YXRlKGEsMSwiZXhpdEJhc2ljTW9kZSIpOnRoaXMuamYuZXhpdEJhc2ljTW9kZSgpfXNldFN0YXRlKGEsCmIsYyl7dmFyIGQ9RkdiKHRoaXMuc3RhY2spO2QmJmQua2E9PT1hP2Quc3RhdGUhPT1iJiYoQUdiLmluY2x1ZGVzKGEpP2Quc3RhdGU9YjooXy55QWEoe3NlcnZpY2VOYW1lOiJVSU1vZGVzQXJiaXRlciIsamQ6YyxubToxfSxuZXcgXy5YZSgxNCxgU2lsayBjb25zdW1lciBpcyBvdmVyd3JpdGluZyBzdGF0ZSAke2F9LCR7ZC5zdGF0ZX0sJHtifWApKSx0aGlzLnN0YWNrLnBvcCgpKSk6dGhpcy5zdGFjay5wdXNoKG5ldyBHR2IoYSxiKSk7cmV0dXJuIERHYih0aGlzLGIpfXJlc3RvcmVUb1ByZXZpb3VzU3RhdGUoYSl7aWYoIV8uQkdiKCkpcmV0dXJuIHRoaXMuZXhpdEJhc2ljTW9kZShhKTt2YXIgYj1GR2IodGhpcy5zdGFjayk7aWYoYj09PXZvaWQgMClyZXR1cm4gYT1uZXcgXy5YZSgxMyxgJHthfSBjYW5ub3QgcmVzdG9yZSBzdGF0ZSBhcyB0aGVyZSBpcyBubyBzdGF0ZSB0byByZXN0b3JlIHRvLmApLF8uSGkoe3NlcnZpY2VOYW1lOiJVSU1vZGVzQXJiaXRlciIsamQ6InJlc3RvcmVUb1ByZXZpb3VzU3RhdGUiLApubToxfSxhKSxQcm9taXNlLnJlamVjdChhKTtpZihiLmthPT09YSlyZXR1cm4gdGhpcy5zdGFjay5wb3AoKSxhPXRoaXMuc3RhY2suZ2V0Q3VycmVudFN0YXRlKCksREdiKHRoaXMsYSk7YT1uZXcgXy5YZSgxMyxgJHthfSBjYW5ub3QgcmVzdG9yZSBzdGF0ZSBhcyAke2Iua2F9IGhhcyBjb250cm9sLmApO18uSGkoe3NlcnZpY2VOYW1lOiJVSU1vZGVzQXJiaXRlciIsamQ6InJlc3RvcmVUb1ByZXZpb3VzU3RhdGUiLG5tOjF9LGEpO3JldHVybiBQcm9taXNlLnJlamVjdChhKX19O0dHYj1jbGFzc3tjb25zdHJ1Y3RvcihhLGIpe3RoaXMua2E9YTt0aGlzLnN0YXRlPWJ9fTtGR2I9ZnVuY3Rpb24oYSl7cmV0dXJuIGEuaXNFbXB0eSgpP3ZvaWQgMDphLml0ZW1zW2EuaXRlbXMubGVuZ3RoLTFdfTsKRUdiPWNsYXNze2NvbnN0cnVjdG9yKCl7dGhpcy5pdGVtcz1bXTt0aGlzLmthPV8uQ0diKCk/MDoxfWdldEN1cnJlbnRTdGF0ZSgpe3ZhciBhPUZHYih0aGlzKTtyZXR1cm4gYSE9PXZvaWQgMD9hLnN0YXRlOnRoaXMua2F9aXNFbXB0eSgpe3JldHVybiB0aGlzLml0ZW1zLmxlbmd0aD09PTB9cHVzaChhKXt0aGlzLml0ZW1zLnB1c2goYSl9cG9wKCl7cmV0dXJuIHRoaXMuaXRlbXMucG9wKCl9fTtfLmFnKF8uU3EsXy5SdSk7Cl8uQkdiPSgpPT4hMDsKXy52KCk7Cn1jYXRjaChlKXtfLl9EdW1wRXhjZXB0aW9uKGUpfQp0cnl7Cl8uZ01iPWZ1bmN0aW9uKGEpe3JldHVybihhPV8uc2QoYSwicGFkdCIpKSYmXy5YRWEoYSk/Xy5mbShhKTowfTtfLmhNYj1mdW5jdGlvbihhKXtyZXR1cm4oYT1fLnNkKGEsInBhZGIiKSkmJl8uWEVhKGEpP18uZm0oYSk6MH07Cn1jYXRjaChlKXtfLl9EdW1wRXhjZXB0aW9uKGUpfQp0cnl7CnZhciBtTWI9ZnVuY3Rpb24oYSl7dmFyIGI9W107YT1sTWIoYSwwLGIpO2lmKGIubGVuZ3RoPjEpZm9yKGxldCBjIG9mIGIpe2xldCBkLGU9YS1jLm9wdGlvbnMuZHVyYXRpb24tKChkPWMub3B0aW9ucy5kZWxheSkhPW51bGw/ZDowKTtlIT09MCYmKGMub3B0aW9ucy5lbmREZWxheT1lKX1yZXR1cm57QjVhOmIsZHVyYXRpb246YX19LGxNYj1mdW5jdGlvbihhLGIsYyl7aWYoImZ1bmN0aW9uIj09dHlwZW9mIF8ubk1iJiZhIGluc3RhbmNlb2YgXy5uTWJ8fEFycmF5LmlzQXJyYXkoYSkpe3ZhciBkPTA7Zm9yKHZhciBlIG9mIGEpYT1sTWIoZSxiLGMpLGE+ZCYmKGQ9YSk7cmV0dXJuIGR9ZT17fTt2YXIgZj1PYmplY3QuYXNzaWduKHt9LGEse0xLYjplfSk7Zi5vcHRpb25zPU9iamVjdC5hc3NpZ24oe30sYS5vcHRpb25zKTt2YXIgZz1hLm9wdGlvbnMuZHVyYXRpb24saCxrPShoPWEub3B0aW9ucy50b2tlbik9PW51bGw/dm9pZCAwOmguZHVyYXRpb247Zi5vcHRpb25zLmR1cmF0aW9uPQpnIT1udWxsP2c6azt2YXIgbTtoPWEub3B0aW9ucy5lYXNpbmc7Zz0obT1hLm9wdGlvbnMudG9rZW4pPT1udWxsP3ZvaWQgMDptLmVhc2luZztpZihtPWghPW51bGw/aDpnKWYub3B0aW9ucy5lYXNpbmc9bTtmb3IoZCBvZiBvTWIpZm9yKGxldCBuIG9mIGEua2V5ZnJhbWVzKWlmKG5bZF0hPW51bGwpe2VbZF09ITA7YnJlYWt9YiYmKGYub3B0aW9ucy5kZWxheT0oZi5vcHRpb25zLmRlbGF5fHwwKStiKTtjLnB1c2goZik7cmV0dXJuIGYub3B0aW9ucy5kdXJhdGlvbisoZi5vcHRpb25zLmRlbGF5fHwwKX0scE1iPWRvY3VtZW50LmNyZWF0ZURvY3VtZW50RnJhZ21lbnQ/KCk9PmRvY3VtZW50LmNyZWF0ZURvY3VtZW50RnJhZ21lbnQoKTooKT0+ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2IikscU1iPWNsYXNze2NvbnN0cnVjdG9yKCl7YTp7bGV0IGI7aWYodHlwZW9mKChiPUV2ZW50VGFyZ2V0KT09bnVsbD92b2lkIDA6Yi5jb25zdHJ1Y3Rvcik9PT0iZnVuY3Rpb24iKXRyeXt2YXIgYT0KbmV3IEV2ZW50VGFyZ2V0O2JyZWFrIGF9Y2F0Y2goYyl7fWE9cE1iKCl9dGhpcy5Hdz1hO3RoaXMua2E9dGhpcy51cGI9bmV3IF8uTXF9YWRkRXZlbnRMaXN0ZW5lcihhLGIsYyl7dGhpcy5Hdy5hZGRFdmVudExpc3RlbmVyKGEsYixjKX1yZW1vdmVFdmVudExpc3RlbmVyKGEsYixjKXt0aGlzLkd3LnJlbW92ZUV2ZW50TGlzdGVuZXIoYSxiLGMpfWRpc3BhdGNoRXZlbnQoYSl7cmV0dXJuIHRoaXMuR3cuZGlzcGF0Y2hFdmVudChhKX19O3ZhciBvTWI9WyJ0cmFuc2Zvcm0iLCJvcGFjaXR5IiwiaGVpZ2h0IiwibWFyZ2luIl07Xy5yTWI9Y2xhc3N7Y29uc3RydWN0b3IoLi4uYSl7dGhpcy5CNWE9YX1bU3ltYm9sLml0ZXJhdG9yXSgpe3JldHVybiB0aGlzLkI1YVtTeW1ib2wuaXRlcmF0b3JdKCl9fTt2YXIgdE1iO18uc01iPWZ1bmN0aW9uKGEpe3ZhciBiPVtdO2ZvcihsZXQge2VmZmVjdDp7dGFyZ2V0OmMsTEtiOmR9fW9mIGEuYW5pbWF0aW9ucyl7bGV0IGU9Z2V0Q29tcHV0ZWRTdHlsZShjKSxmPXt9O2ZvcihsZXQgZyBvZiBPYmplY3Qua2V5cyhkKSlmW2ddPWVbZ107Yi5wdXNoKFtjLGZdKX1mb3IobGV0IFtjLGRdb2YgYilfLmhuKGMsZCk7Zm9yKGxldCB7YW5pbWF0aW9uOmN9b2YgYS5hbmltYXRpb25zKWMuY2FuY2VsKCl9Owp0TWI9Y2xhc3MgZXh0ZW5kcyBxTWJ7Y29uc3RydWN0b3IoYSl7dmFyIGI9e2hKYzohMX07c3VwZXIoKTt0aGlzLmFuaW1hdGlvbnM9W107dmFyIHtCNWE6YyxkdXJhdGlvbjpkfT1tTWIoYSk7dGhpcy5lZWE9ZDthPSgpPT57YTp7Zm9yKGxldCB7YW5pbWF0aW9uOmh9b2YgdGhpcy5hbmltYXRpb25zKWlmKGgucGxheVN0YXRlIT09ImZpbmlzaGVkIilicmVhayBhO3RoaXMua2EmJih0aGlzLmthLnJlc29sdmUoKSx0aGlzLmthPXZvaWQgMCk7dGhpcy5kaXNwYXRjaEV2ZW50KG5ldyBFdmVudCgiZmluaXNoIikpfX07Zm9yKHZhciBlIG9mIGMpe3ZhciBmPWUudGFyZ2V0O2xldCBoPWUua2V5ZnJhbWVzLGs9ZS5MS2I7aWYoaC5sZW5ndGg9PT0xKXtsZXQgbT17fTtmb3IodmFyIGcgb2YgT2JqZWN0LmtleXMoaykpbVtnXT1fLmtuKGYsZyk7ZS5rZXlmcmFtZXM9W20sLi4uaF19fWZvcihsZXQgaCBvZiBjKWU9aC50YXJnZXQsZz1oLmtleWZyYW1lcyxmPWgub3B0aW9ucyxmLmZpbGw9PT0Kdm9pZCAwJiYoZi5maWxsPSJib3RoIiksZi5jb21wb3NpdGU9InJlcGxhY2UiLGU9ZS5hbmltYXRlKGcsZiksKGI9PW51bGw/MDpiLmhKYyl8fGUucGF1c2UoKSxlLm9uZmluaXNoPWEsdGhpcy5hbmltYXRpb25zLnB1c2goe2VmZmVjdDpoLGFuaW1hdGlvbjplfSl9cGxheSgpe2ZvcihsZXQge2FuaW1hdGlvbjphfW9mIHRoaXMuYW5pbWF0aW9ucylhLnBsYXkoKX1maW5pc2goKXtmb3IobGV0IHthbmltYXRpb246YX1vZiB0aGlzLmFuaW1hdGlvbnMpYS5maW5pc2goKX1wYXVzZSgpe2ZvcihsZXQge2FuaW1hdGlvbjphfW9mIHRoaXMuYW5pbWF0aW9ucylhLnBhdXNlKCl9cmV2ZXJzZSgpe2ZvcihsZXQge2FuaW1hdGlvbjphfW9mIHRoaXMuYW5pbWF0aW9ucylhLnJldmVyc2UoKX19O3ZhciB1TWI7dU1iPWFzeW5jIGZ1bmN0aW9uKGEpe2E9bmV3IHRNYihhLnNwZWNzKTtyZXR1cm4gUHJvbWlzZS5yZXNvbHZlKGEpfTtfLnZNYj1jbGFzc3tjb25zdHJ1Y3RvciguLi5hKXt0aGlzLnNwZWNzPUFycmF5LmZyb20oYSl9YXR0YWNoKGEpe3RoaXMuc3BlY3MucHVzaChhKTtyZXR1cm4gdGhpc31hc3luYyBpbml0aWFsaXplKCl7cmV0dXJuIHVNYih0aGlzKX19Owp9Y2F0Y2goZSl7Xy5fRHVtcEV4Y2VwdGlvbihlKX0KdHJ5ewp2YXIgQTBiO0EwYj1jbGFzcyBleHRlbmRzIF8uRWR7Y29uc3RydWN0b3IoYSl7c3VwZXIoKTt0aGlzLmthPW5ldyBTZXQ7dGhpcy5yb290PWEub3duZXJEb2N1bWVudC5ib2R5O3RoaXMuYWRkT25EaXNwb3NlQ2FsbGJhY2soKCk9Pntmb3IobGV0IGIgb2YgdGhpcy5rYSlfLlVnKGIpO3RoaXMua2EuY2xlYXIoKX0pfWxpc3RlbihhLGIpe2E9Xy5UZyh0aGlzLnJvb3QsYSxiKTt0aGlzLmthLmFkZChhKTtyZXR1cm4gYX1saXN0ZW5PbmNlKGEsYil7dmFyIGM7cmV0dXJuIGM9dGhpcy5saXN0ZW4oYSxkPT57dGhpcy52byhjKTtiKGQpfSl9dm8oYSl7dmFyIGI9Xy5VZyhhKTthPXRoaXMua2EuZGVsZXRlKGEpO3JldHVybiBiJiZhfX07Xy5CMGI9ZnVuY3Rpb24oYSl7dmFyIGI9YS5mJC5MTGM7Ynx8KGI9YS5mJC5MTGM9bmV3IEEwYihhLnBNKSxfLkRpKGEsYikpO3JldHVybiBifTsKfWNhdGNoKGUpe18uX0R1bXBFeGNlcHRpb24oZSl9CnRyeXsKXy51KCJBTnluMSIpOwpfLmozYj17bmFtZToibHVwYSJ9O18uazNiPXtuYW1lOiJzdiJ9O18uS3g9Y2xhc3MgZXh0ZW5kcyBfLnNve2dldChhLGIpe3JldHVybiBfLnVnKGEsYil9aXNBdmFpbGFibGUoYSl7cmV0dXJuIF8ua2YoYSl9fTtfLmFnKF8uWXEsXy5LeCk7Cl8udigpOwp9Y2F0Y2goZSl7Xy5fRHVtcEV4Y2VwdGlvbihlKX0KdHJ5ewp2YXIgbjNiLG0zYjtuM2I9ZnVuY3Rpb24oYSxiKXt2YXIgYz1fLkx4LlFhLmRvY3VtZW50LmRvY3VtZW50RWxlbWVudCxkPWMuc2Nyb2xsSGVpZ2h0O2E9TWF0aC5tYXgoMCxNYXRoLm1pbihjLnNjcm9sbFdpZHRoLV8uTHguUWEud2luZG93LmlubmVyV2lkdGgsYSkpO2I9TWF0aC5tYXgoMCxNYXRoLm1pbihkLV8uTHguUWEud2luZG93LmlubmVySGVpZ2h0LGIpKTtjLnN0eWxlLmhlaWdodD1gJHtkfXB4YDtjPV8uTHguUWEuZG9jdW1lbnQuYm9keS5zdHlsZTtjLnBvc2l0aW9uPSJmaXhlZCI7Yy53aWR0aD0iMTAwJSI7Yy5sZWZ0PWAkey1hfXB4YDtjLnRvcD1gJHstYn1weGA7bDNiJiYoMCxfLmtvKShsM2IpO18uTHguUWEud2luZG93LnJlcXVlc3RBbmltYXRpb25GcmFtZT9fLkx4LlFhLndpbmRvdy5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCk9PnZvaWQgbTNiKGEsYikpOmwzYj0oMCxfLmpvKSgoKT0+dm9pZCBtM2IoYSxiKSwxMCl9OwptM2I9ZnVuY3Rpb24oYSxiKXtfLkx4LlFhLndpbmRvdy5zY3JvbGxUbyhhLGIpO2wzYj1udWxsO18uTHguUWEuZG9jdW1lbnQuYm9keS5zdHlsZS5wb3NpdGlvbj0iIjtfLkx4LlFhLmRvY3VtZW50LmJvZHkuc3R5bGUud2lkdGg9IiI7Xy5MeC5RYS5kb2N1bWVudC5ib2R5LnN0eWxlLmxlZnQ9IiI7Xy5MeC5RYS5kb2N1bWVudC5ib2R5LnN0eWxlLnRvcD0iIjtfLkx4LlFhLmRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5zdHlsZS5oZWlnaHQ9IiJ9O18uTHg9e307Xy5MeC5RYT17d2luZG93LGRvY3VtZW50OndpbmRvdy5kb2N1bWVudH07dmFyIG8zYj1fLnNhKCksbDNiPW51bGw7Xy5MeC5ieT1mdW5jdGlvbihhLGIsYyl7aWYoYXx8YilvM2I/KGM9Xy5QbSgpLG4zYihjLngrYSxjLnkrYikpOmM/Xy5MeC5RYS53aW5kb3cuc2Nyb2xsQnkoe3RvcDpiLGxlZnQ6YSxiZWhhdmlvcjoic21vb3RoIn0pOl8uTHguUWEud2luZG93LnNjcm9sbEJ5KGEsYil9OwpfLkx4LnRvPWZ1bmN0aW9uKGEsYixjKXtvM2I/bjNiKGEsYik6Yz9fLkx4LlFhLndpbmRvdy5zY3JvbGxUbyh7dG9wOmIsbGVmdDphLGJlaGF2aW9yOiJzbW9vdGgifSk6Xy5MeC5RYS53aW5kb3cuc2Nyb2xsVG8oYSxiKX07Cn1jYXRjaChlKXtfLl9EdW1wRXhjZXB0aW9uKGUpfQp0cnl7Cl8udSgiVTRNektjIik7CnZhciBwM2IscTNiO3AzYj1mdW5jdGlvbihhKXthLmthfHwoYS5rYT1uZXcgQWJvcnRDb250cm9sbGVyLGEuZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoInRvdWNobW92ZSIsYj0+e2IuY2FuY2VsYWJsZSYmYi5wcmV2ZW50RGVmYXVsdCgpfSx7cGFzc2l2ZTohMSxzaWduYWw6YS5rYS5zaWduYWx9KSxhLmRvY3VtZW50LmJvZHkuYWRkRXZlbnRMaXN0ZW5lcigidG91Y2htb3ZlIixiPT52b2lkIGIuc3RvcFByb3BhZ2F0aW9uKCkse3NpZ25hbDphLmthLnNpZ25hbH0pKX07cTNiPWZ1bmN0aW9uKGEpe3ZhciBiOyhiPWEua2EpPT1udWxsfHxiLmFib3J0KCk7YS5rYT1udWxsfTsKXy5yM2I9Y2xhc3MgZXh0ZW5kcyBfLnNve3N0YXRpYyBRYSgpe3JldHVybntzZXJ2aWNlOntjYWNoZTpfLkt4LGhpc3Rvcnk6Xy5zRmIsbG9jYXRpb246Xy5wdix3aW5kb3c6Xy5xb319fWNvbnN0cnVjdG9yKGEpe3N1cGVyKCk7dGhpcy5rYT1udWxsO3RoaXMud2luZG93PWEuc2VydmljZS53aW5kb3cuZ2V0KCk7dGhpcy5kb2N1bWVudD1hLnNlcnZpY2Uud2luZG93LmdldERvY3VtZW50KCk7dGhpcy5jYWNoZT1hLnNlcnZpY2UuY2FjaGU7dGhpcy5sb2NhdGlvbj1hLnNlcnZpY2UubG9jYXRpb247dGhpcy5zdG9yYWdlPXRoaXMuY2FjaGUuZ2V0KCJzIixfLnRNYSk7dGhpcy5oaXN0b3J5PWEuc2VydmljZS5oaXN0b3J5O3RoaXMub2E9dGhpcy5oaXN0b3J5LmdldEV2ZW50VGFyZ2V0KCkubGlzdGVuKCJGV2tjZWMiLCgpPT57fSl9YnkoYSxiLGMpeygwLF8uTHguYnkpKGEsYixjKX1kaXNhYmxlKCl7cDNiKHRoaXMpO2lmKCF3aW5kb3cudmlzdWFsVmlld3BvcnR8fHdpbmRvdy52aXN1YWxWaWV3cG9ydC5zY2FsZT49CjEpdGhpcy5kb2N1bWVudC5ib2R5LnN0eWxlLm92ZXJmbG93PSJoaWRkZW4ifWVuYWJsZSgpe3EzYih0aGlzKTtpZighd2luZG93LnZpc3VhbFZpZXdwb3J0fHx3aW5kb3cudmlzdWFsVmlld3BvcnQuc2NhbGU+PTEpdGhpcy5kb2N1bWVudC5ib2R5LnN0eWxlLm92ZXJmbG93PSIifVcxKCl7cmV0dXJuIHRoaXMuc3RvcmFnZS5nZXQodGhpcy5sb2NhdGlvbi5YZSgpKX1zRSgpe3RoaXMuc3RvcmFnZS5zZXQodGhpcy5sb2NhdGlvbi5YZSgpLF8uUG0oKSl9dG8oYSxiLGMpeygwLF8uTHgudG8pKGEsYixjKX1UYigpe3EzYih0aGlzKTt0aGlzLm9hJiZ0aGlzLmhpc3RvcnkuZ2V0RXZlbnRUYXJnZXQoKS52byh0aGlzLm9hKX19O18uYWcoXy5aWWEsXy5yM2IpOwpfLnYoKTsKfWNhdGNoKGUpe18uX0R1bXBFeGNlcHRpb24oZSl9CnRyeXsKXy51KCJnOG5reCIpOwpfLnMzYj1uZXcgXy5UZihfLiRZYSk7Cl8udigpOwp9Y2F0Y2goZSl7Xy5fRHVtcEV4Y2VwdGlvbihlKX0KdHJ5ewpfLnQzYj1mdW5jdGlvbihhKXt2YXIgYj1fLkZtKGEpO2lmKGIpcmV0dXJuIGI7Yj1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTtiLmlkPWE7ZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChiKTtyZXR1cm4gYn07Xy5NeD1mdW5jdGlvbigpe3JldHVybiBfLnQzYigibGIiKX07Cn1jYXRjaChlKXtfLl9EdW1wRXhjZXB0aW9uKGUpfQp0cnl7Cl8uYTViPWZ1bmN0aW9uKGEsYil7dmFyIGM9YS5kYXRhc2V0LmNzc1Njb3BlO2M/KGM9bmV3IFNldChjLnNwbGl0KCIgIikpLGMuaGFzKGIpfHwoYy5hZGQoYiksYS5kYXRhc2V0LmNzc1Njb3BlPUFycmF5LmZyb20oYykuam9pbigiICIpKSk6YS5kYXRhc2V0LmNzc1Njb3BlPWJ9O18uYjViPWZ1bmN0aW9uKGEsYil7aWYoXy5GRmEpe3ZhciBjOyhhPShjPWEuY2xvc2VzdCgiW2RhdGEtY3NzLXNjb3BlXSIpKT09bnVsbD92b2lkIDA6Yy5kYXRhc2V0LmNzc1Njb3BlKSYmXy5hNWIoYixhKX19Owp9Y2F0Y2goZSl7Xy5fRHVtcEV4Y2VwdGlvbihlKX0KdHJ5ewpfLndiYz1jbGFzc3tidWlsZCgpe3JldHVybntiZWZvcmVPcGVuOigpPT50aGlzLmJlZm9yZU9wZW4/dGhpcy5iZWZvcmVPcGVuKCk6UHJvbWlzZS5yZXNvbHZlKCksb3BlbjooKT0+dGhpcy5vcGVuKCksY2xvc2U6KCk9PnRoaXMuY2xvc2UoKSxhZnRlckNsb3NlOigpPT50aGlzLmFmdGVyQ2xvc2U/dGhpcy5hZnRlckNsb3NlKCk6UHJvbWlzZS5yZXNvbHZlKCksc3dpcGVUb0Rpc21pc3M6dGhpcy5zd2lwZVRvRGlzbWlzc319fTsKfWNhdGNoKGUpe18uX0R1bXBFeGNlcHRpb24oZSl9CnRyeXsKXy54YmM9Q1NTLnN1cHBvcnRzKCJhbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uIiwibGluZWFyKDAsIDEpIik/ImxpbmVhciggMCwgMC4wMDIsIDAuMDEgMy42JSwgMC4wMzQsIDAuMDc0IDkuMSUsIDAuMTI4IDExLjQlLCAwLjE5NCAxMy40JSwgMC4yNzEgMTUlLCAwLjM0NCAxNi4xJSwgMC41NDQsIDAuNjYgMjAuNiUsIDAuNzE3IDIyLjQlLCAwLjc2NSAyNC42JSwgMC44MDggMjcuMyUsIDAuODQ1IDMwLjQlLCAwLjg4MyAzNS4xJSwgMC45MTYgNDAuNiUsIDAuOTQyIDQ3LjIlLCAwLjk2MyA1NSUsIDAuOTc5IDY0JSwgMC45OTEgNzQuNCUsIDAuOTk4IDg2LjQlLCAxKSI6ImN1YmljLWJlemllcigwLjA1LCAwLjcsIDAuMSwgMSkiO18ucHk9e2R1cmF0aW9uOjIwMCxlYXNpbmc6ImN1YmljLWJlemllcigwLjIsIDAsIDAsIDEpIn07Xy55YmM9e2R1cmF0aW9uOjQ1MCxlYXNpbmc6Xy54YmN9O18uemJjPXtkdXJhdGlvbjo0MDAsZWFzaW5nOl8ueGJjfTsKXy5BYmM9e2R1cmF0aW9uOjMwMCxlYXNpbmc6ImN1YmljLWJlemllcigwLjA1LCAwLjcsIDAuMSwgMSkifTsKfWNhdGNoKGUpe18uX0R1bXBFeGNlcHRpb24oZSl9CnRyeXsKdmFyIEhiYyxHYmMsSWJjLEZiYyxKYmMsTmJjLFJiYyxRYmMsU2JjLCRiYyxVYmMsY2NjLGRjYyxnY2MsWGJjLFpiYztfLkJiYz1mdW5jdGlvbihhKXthPV8uSXBhKGEpO3ZhciBiO18uaWEoYSwiZGF0YS0iKT9iPWEucmVwbGFjZSgiZGF0YS0iLCIiKTpiPWE7cmV0dXJuIF8uSnBhKGIpfTtfLkNiYz1mdW5jdGlvbihhLGIsYz0iIil7Xy5mZyhhLF8uQmJjKGIpLGMpfTtfLkRiYz1mdW5jdGlvbihhLGIpe3JldHVybiBfLmdnKGEsXy5CYmMoYikpfHx2b2lkIDB9O18uRWJjPWZ1bmN0aW9uKGEsYil7Yj1ifHx3aW5kb3c7YT1fLklwYShhKTthPV8uaWEoYSwiZGF0YS0iKT9hOmBkYXRhLSR7YX1gO3JldHVybiBBcnJheS5mcm9tKGIuZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbChgWyR7YX1dYCkpfTtIYmM9ZnVuY3Rpb24oYSxiLGM9Yil7cmV0dXJuIEZiYyhhLEdiYyhiLGMpKX07R2JjPWZ1bmN0aW9uKGEsYj1hKXtyZXR1cm5bW2EsMCwwXSxbMCxiLDBdLFswLDAsMV1dfTsKSWJjPWZ1bmN0aW9uKGEsYil7aWYodHlwZW9mIGEhPT0ibnVtYmVyIiYmdHlwZW9mIGIhPT0ibnVtYmVyIil0aHJvdyBFcnJvcigiTGgiKTtyZXR1cm5bWzEsMCxhXSxbMCwxLGJdLFswLDAsMV1dfTtGYmM9ZnVuY3Rpb24oYSxiKXt2YXIgYz1bXTtmb3IobGV0IGQ9MDtkPGEubGVuZ3RoO2QrKyl7Y1tkXT1bXTtmb3IobGV0IGU9MDtlPGJbMF0ubGVuZ3RoO2UrKyl7bGV0IGY9MDtmb3IobGV0IGc9MDtnPGFbMF0ubGVuZ3RoO2crKylmKz1hW2RdW2ddKmJbZ11bZV07Y1tkXVtlXT1mfX1yZXR1cm4gY307SmJjPWZ1bmN0aW9uKGEpe3JldHVybntFSTphWzBdWzBdLEhJOmFbMV1bMV0sdHJhbnNsYXRlWDphWzBdWzJdLHRyYW5zbGF0ZVk6YVsxXVsyXX19OwpOYmM9ZnVuY3Rpb24oYSl7aWYoYT09PSIifHxhPT09Im5vbmUiKXJldHVybiBLYmM7dmFyIGI9bnVsbCxjPUxiYy5leGVjKGEpLGQ9TWJjLmV4ZWMoYSk7ZCYmZFsxXT9iPXtFSTpOdW1iZXIoZFsxXSksSEk6TnVtYmVyKGRbNl0pLHRyYW5zbGF0ZVg6TnVtYmVyKGRbMTNdKSx0cmFuc2xhdGVZOk51bWJlcihkWzE0XSl9OmMmJmNbMV0mJihiPXtFSTpOdW1iZXIoY1sxXSksSEk6TnVtYmVyKGNbNF0pLHRyYW5zbGF0ZVg6TnVtYmVyKGNbNV0pLHRyYW5zbGF0ZVk6TnVtYmVyKGNbNl0pfSk7aWYoYilyZXR1cm4gYi5pc0lkZW50aXR5PWIuRUk9PT0xJiZiLkhJPT09MSYmYi50cmFuc2xhdGVYPT09MCYmYi50cmFuc2xhdGVZPT09MCxiO3Rocm93IEVycm9yKCJNaGAiK2EpO307Xy5xeT1mdW5jdGlvbigpe3JldHVybiBPYmMuSElkfHx3aW5kb3d9O18uUGJjPWZ1bmN0aW9uKGEpe3JldHVybiBfLnF5KCkuZG9jdW1lbnQuY29udGFpbnMoYSl9OwpSYmM9ZnVuY3Rpb24oYSl7dmFyIGI9YS5zdHlsZXx8Xy5xeSgpLmdldENvbXB1dGVkU3R5bGUoYS50YXJnZXQpLGM9YS5yZWN0fHxhLnRhcmdldC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSxkLGU9KGQ9YS5oVmEpIT1udWxsP2Q6Xy5QYmMoYS50YXJnZXQpLGY7ZD0oZj1hLm9mZnNldFdpZHRoKSE9bnVsbD9mOmEudGFyZ2V0Lm9mZnNldFdpZHRoO3ZhciBnO2Y9KGc9YS5vZmZzZXRIZWlnaHQpIT1udWxsP2c6YS50YXJnZXQub2Zmc2V0SGVpZ2h0O2c9UWJjKHtzdHlsZTpiLGhWYTplfSk7cmV0dXJue3RhcmdldDphLnRhcmdldCxzdHlsZTpiLHJlY3Q6YyxoVmE6ZSxvZmZzZXRXaWR0aDpkLG9mZnNldEhlaWdodDpmLHRyYW5zZm9ybU9yaWdpbjpnfX07ClFiYz1mdW5jdGlvbihhKXtpZighYS5oVmEpdGhyb3cgRXJyb3IoIk5oIik7YT1hLnN0eWxlLnRyYW5zZm9ybU9yaWdpbi5zcGxpdCgiICIpLm1hcChiPT57Yj1OdW1iZXIoYi5zbGljZSgwLC0yKSk7cmV0dXJuIGlzTmFOKGIpPzA6Yn0pO3JldHVybiBhLmxlbmd0aDwyP3t4OjAseTowfTp7eDphWzBdLHk6YVsxXX19O1NiYz1mdW5jdGlvbihhLGIsYz17fSl7dmFyIGQ9e3g6Yi53aWR0aC9hLndpZHRoLHk6Yi5oZWlnaHQvYS5oZWlnaHR9O2MuRkJkfHwoYi53aWR0aDw9Yi5oZWlnaHQ/ZC55PWQueDpkLng9ZC55KTthPXt4OmIueC1hLngseTpiLnktYS55fTtpZihpc05hTihkLngpfHxkLng9PT0wKWQueD0xO2lmKGlzTmFOKGQueSl8fGQueT09PTApZC55PTE7cmV0dXJue3NjYWxlOmQsdHJhbnNsYXRlOmEsYnNhOmAke2B0cmFuc2xhdGUoJHthLnh9cHgsICR7YS55fXB4KWB9ICR7YHNjYWxlKCR7ZC54fSwgJHtkLnl9KWB9YH19OwpfLlRiYz1mdW5jdGlvbihhLGIsYz17fSl7YT1SYmMoYSk7dmFyIGQ9UmJjKGIpO2I9UmJjKGEpO3ZhciBlPWIucmVjdCxmPWIuc3R5bGUudHJhbnNmb3JtO2lmKGYpe3ZhciB7RUk6ZyxISTpoLHRyYW5zbGF0ZVg6ayx0cmFuc2xhdGVZOm0saXNJZGVudGl0eTpufT1OYmMoZik7bj9iPWU6KGY9Yi50cmFuc2Zvcm1PcmlnaW4sYj1uZXcgRE9NUmVjdChlLngtay0oMS1nKSpmLngsZS55LW0tKDEtaCkqZi55LGc/ZS53aWR0aC9nOmIub2Zmc2V0V2lkdGgsaD9lLmhlaWdodC9oOmIub2Zmc2V0SGVpZ2h0KSl9ZWxzZSBiPWU7YT1hLnRyYW5zZm9ybU9yaWdpbjtkPWQucmVjdDtpZihjLkw4YilyZXR1cm4gU2JjKGIsZCxjKTtjLlpEYiYmKGU9Yy5aRGIudHJhbnNsYXRlWSxiLngrPWMuWkRiLnRyYW5zbGF0ZVh8fDAsYi55Kz1lfHwwKTtjLkVSYiYmKGU9Yy5FUmIudHJhbnNsYXRlWSxkLngrPWMuRVJiLnRyYW5zbGF0ZVh8fDAsZC55Kz1lfHwwKTtlPU5iYygiIik7dmFyIHA9W1tlLkVJLDAsCmUudHJhbnNsYXRlWF0sWzAsZS5ISSxlLnRyYW5zbGF0ZVldLFswLDAsMV1dO3A9RmJjKHAsSWJjKGEueCxhLnkpKTtlPXt4OmQud2lkdGgvKGIud2lkdGh8fDEpLHk6ZC5oZWlnaHQvKGIuaGVpZ2h0fHwxKX07Yy5IZmImJihjLkhmYi54JiYoZS55PWUueCksYy5IZmIueSYmKGUueD1lLnkpKTtmPXt4OjAseTowfTtjLmNNYz8ocD1IYmMocCxlLngsZS55KSxwPUZiYyhwLEliYygtYS54LC1hLnkpKSxhPUpiYyhwKS50cmFuc2xhdGVZK2IueSxmLng9KGQueC0oSmJjKHApLnRyYW5zbGF0ZVgrYi54KSkvZS54LGYueT0oZC55LWEpL2UueSk6KGY9e3g6ZC54LWIueCx5OmQueS1iLnl9LHA9RmJjKHAsSWJjKGYueCxmLnkpKSxwPUhiYyhwLGUueCxlLnkpLHA9RmJjKHAsSWJjKC1hLngsLWEueSkpLGI9SmJjKHApLnRyYW5zbGF0ZVksZi54PWYueCtmLngtSmJjKHApLnRyYW5zbGF0ZVgsZi55PWYueStmLnktYik7Yj1gc2NhbGUoJHtlLnh9LCAke2UueX0pYDthPWB0cmFuc2xhdGUoJHtmLnh9cHgsICR7Zi55fXB4KWA7CnJldHVybntzY2FsZTplLHRyYW5zbGF0ZTpmLGJzYTpjLmNNYz9gJHtifSAke2F9YDpgJHthfSAke2J9YH19OwokYmM9ZnVuY3Rpb24oYSxiPXt9KXt2YXIgYz1VYmMoYSxiKSxkPWEuY2xvbmVOb2RlKCEwKSxlPVtkLC4uLmQucXVlcnlTZWxlY3RvckFsbChWYmMpXTtmb3IodmFyIGYgb2YgZSlmb3IodmFyIGcgb2YgV2JjKWYucmVtb3ZlQXR0cmlidXRlKGcpO18uQ2JjKGQsInNuYXBzaG90LWFwaS1lbGVtZW50IiwidHJ1ZSIpO2U9WGJjKGEsZCxjKTtZYmMuaGFzKGMpfHxZYmMuc2V0KGMsd2luZG93LmdldENvbXB1dGVkU3R5bGUoYykpO2Y9WWJjLmdldChjKTtmPWYuZ2V0UHJvcGVydHlWYWx1ZSgidGV4dC1zaXplLWFkanVzdCIpfHxmLmdldFByb3BlcnR5VmFsdWUoIi13ZWJraXQtdGV4dC1zaXplLWFkanVzdCIpfHwiIjtmPU51bWJlcihmLnJlcGxhY2UoLyUkLywiIikpLzEwMDtnPU51bWJlcihlLmZvbnRTaXplLnJlcGxhY2UoL3B4JC8sIiIpKTtOdW1iZXIuaXNOYU4oZyl8fE51bWJlci5pc05hTihmKXx8Zj09PTF8fChkLnN0eWxlLmZvbnRTaXplPWAke2cvZn1weGApO3tiOntmb3IoZj0KYS5wYXJlbnRFbGVtZW50O2Y7KXtnPWdsb2JhbFRoaXMuZ2V0Q29tcHV0ZWRTdHlsZShmKTtpZihnLmJvcmRlclJhZGl1cyYmZy5ib3JkZXJSYWRpdXMhPT0iMHB4IiYmZy5ib3JkZXJSYWRpdXMhPT0iMCIpe2Y9e2VsZW1lbnQ6ZixvY2I6e2JvcmRlclRvcExlZnRSYWRpdXM6Zy5ib3JkZXJUb3BMZWZ0UmFkaXVzLGJvcmRlclRvcFJpZ2h0UmFkaXVzOmcuYm9yZGVyVG9wUmlnaHRSYWRpdXMsYm9yZGVyQm90dG9tUmlnaHRSYWRpdXM6Zy5ib3JkZXJCb3R0b21SaWdodFJhZGl1cyxib3JkZXJCb3R0b21MZWZ0UmFkaXVzOmcuYm9yZGVyQm90dG9tTGVmdFJhZGl1c319O2JyZWFrIGJ9Zj1mLnBhcmVudEVsZW1lbnR9Zj1udWxsfWxldCB4PWY7aWYoeCl7dmFyIGg9YS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSxrPXguZWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtmPXt9O2c9TWF0aC5hYnMoaC50b3Atay50b3ApPDEuNTt2YXIgbT1NYXRoLmFicyhoLmJvdHRvbS1rLmJvdHRvbSk8CjEuNSxuPU1hdGguYWJzKGgubGVmdC1rLmxlZnQpPDEuNTtoPU1hdGguYWJzKGgucmlnaHQtay5yaWdodCk8MS41O2cmJm4mJihmLmJvcmRlclRvcExlZnRSYWRpdXM9eC5vY2IuYm9yZGVyVG9wTGVmdFJhZGl1cyk7ZyYmaCYmKGYuYm9yZGVyVG9wUmlnaHRSYWRpdXM9eC5vY2IuYm9yZGVyVG9wUmlnaHRSYWRpdXMpO20mJmgmJihmLmJvcmRlckJvdHRvbVJpZ2h0UmFkaXVzPXgub2NiLmJvcmRlckJvdHRvbVJpZ2h0UmFkaXVzKTttJiZuJiYoZi5ib3JkZXJCb3R0b21MZWZ0UmFkaXVzPXgub2NiLmJvcmRlckJvdHRvbUxlZnRSYWRpdXMpO2Y9e2FUYjohMCxtYXRjaGVzOmZ9fWVsc2UgZj17YVRiOiExLG1hdGNoZXM6e319fXZhciB7YVRiOnAsbWF0Y2hlczpyfT1mO3AmJihyLmJvcmRlclRvcExlZnRSYWRpdXN8fHIuYm9yZGVyVG9wUmlnaHRSYWRpdXN8fHIuYm9yZGVyQm90dG9tUmlnaHRSYWRpdXN8fHIuYm9yZGVyQm90dG9tTGVmdFJhZGl1cykmJihkLnN0eWxlLm92ZXJmbG93PQoiaGlkZGVuIixyLmJvcmRlclRvcExlZnRSYWRpdXMmJihkLnN0eWxlLmJvcmRlclRvcExlZnRSYWRpdXM9ci5ib3JkZXJUb3BMZWZ0UmFkaXVzKSxyLmJvcmRlclRvcFJpZ2h0UmFkaXVzJiYoZC5zdHlsZS5ib3JkZXJUb3BSaWdodFJhZGl1cz1yLmJvcmRlclRvcFJpZ2h0UmFkaXVzKSxyLmJvcmRlckJvdHRvbVJpZ2h0UmFkaXVzJiYoZC5zdHlsZS5ib3JkZXJCb3R0b21SaWdodFJhZGl1cz1yLmJvcmRlckJvdHRvbVJpZ2h0UmFkaXVzKSxyLmJvcmRlckJvdHRvbUxlZnRSYWRpdXMmJihkLnN0eWxlLmJvcmRlckJvdHRvbUxlZnRSYWRpdXM9ci5ib3JkZXJCb3R0b21MZWZ0UmFkaXVzKSk7ZC5zdHlsZS5oZWlnaHR8fChkLnN0eWxlLmhlaWdodD1lLmhlaWdodCk7ZC5zdHlsZS53aWR0aHx8KGQuc3R5bGUud2lkdGg9ZS53aWR0aCk7ZC5zdHlsZS5oZWlnaHQuZW5kc1dpdGgoIiUiKSYmKGQuc3R5bGUuaGVpZ2h0PWAke2Eub2Zmc2V0SGVpZ2h0fXB4YCk7ZC5zdHlsZS53aWR0aC5lbmRzV2l0aCgiJSIpJiYKKGQuc3R5bGUud2lkdGg9YCR7YS5vZmZzZXRXaWR0aH1weGApO2Quc3R5bGUucG9zaXRpb249Yi5maXhlZD8iZml4ZWQiOiJhYnNvbHV0ZSI7Yi5CSmN8fGMuYXBwZW5kQ2hpbGQoZCk7Yi5DSmN8fFpiYyhkLGEsYik7cmV0dXJuIGR9O18uYWNjPWZ1bmN0aW9uKGEsYj17fSl7Yi5CSmM9ITA7Yi5DSmM9ITA7dmFyIGM9YS5tYXAoZD0+e3ZhciBlPV8ucXkoKSxmPWUuc2Nyb2xsWDtlPWUuc2Nyb2xsWTt2YXIgZz1kLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO3JldHVybntrQmE6ZyxaWDokYmMoZCxiKSxib2R5OlViYyhkLGIpLHpEYzp7Z1VjOmYsaFVjOmUsSlFjOmd9fX0pO3JldHVybntvTGI6KCk9PmMubWFwKCh7Wlg6ZCxrQmE6ZSxib2R5OmYsekRjOmd9KT0+e1piYyhkLGUse09tYzpnfSk7Zi5hcHBlbmRDaGlsZChkKTtyZXR1cm4gZH0pLFRHZDpjLm1hcChkPT5kLlpYKX19O1ViYz1mdW5jdGlvbihhLGI9e30pe3JldHVybiBiLnp4ZHx8YS5jbG9zZXN0KCJib2R5Iil8fGRvY3VtZW50LmJvZHl9OwpjY2M9ZnVuY3Rpb24oYSl7YT13aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZShhKTt2YXIgYj17fTtmb3IobGV0IGMgb2YgYmNjKWJbY109YVtjXTtyZXR1cm4gYn07ZGNjPWZ1bmN0aW9uKGEpe3ZhciBiPWNjYyhhKSxjPVtdO2ZvcihsZXQgZCBvZiBhLmNoaWxkcmVuKWE9dHlwZW9mIGQuc3R5bGU9PT0ib2JqZWN0Ij9kY2MoZCk6ZWNjLGMucHVzaChhKTtyZXR1cm57c3R5bGU6YixjaGlsZHJlbjpjfX07Z2NjPWZ1bmN0aW9uKGEsYj1kb2N1bWVudC5ib2R5KXt2YXIgYz1mY2MuZ2V0KGIpO2N8fChjPW5ldyBNYXAsZmNjLnNldChiLGMpKTtpZihjLmhhcyhhKSlyZXR1cm4gYy5nZXQoYSk7dmFyIGQ9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudChhKTtiLmFwcGVuZENoaWxkKGQpO2I9Y2NjKGQpO2QucmVtb3ZlKCk7Yy5zZXQoYSxiKTtyZXR1cm4gYn07ClhiYz1mdW5jdGlvbihhLGIsYz13aW5kb3cuZG9jdW1lbnQuYm9keSxkPW51bGwpe3ZhciBlPWdjYyhhLnRhZ05hbWUsYyk7ZD1kIT1udWxsP2Q6ZGNjKGEpO2ZvcihsZXQgZiBpbiBkLnN0eWxlKWQuc3R5bGVbZl0hPT1lW2ZdJiYoYi5zdHlsZVtmXT1kLnN0eWxlW2ZdKTtmb3IoZT0wO2U8YS5jaGlsZHJlbi5sZW5ndGg7ZSsrKXR5cGVvZiBhLmNoaWxkcmVuW2VdLnN0eWxlPT09Im9iamVjdCImJlhiYyhhLmNoaWxkcmVuW2VdLGIuY2hpbGRyZW5bZV0sYyxkLmNoaWxkcmVuW2VdKTtyZXR1cm4gZC5zdHlsZX07ClpiYz1mdW5jdGlvbihhLGIsYz17fSl7dmFyIGQ9Yy5ibmF8fCJ0b3AtbGVmdCIsZT1jLk9tY3x8e30sZj1fLnF5KCksZyxoPWUuSlFjfHwoYj09bnVsbD92b2lkIDA6KGc9Yi5nZXRCb3VuZGluZ0NsaWVudFJlY3QpPT1udWxsP3ZvaWQgMDpnLmNhbGwoYikpfHxiLGs7Yj0oaz1lLmdVYykhPW51bGw/azpmLnNjcm9sbFg7dmFyIG07ZT0obT1lLmhVYykhPW51bGw/bTpmLnNjcm9sbFk7ZC5pbmNsdWRlcygidG9wIikmJihhLnN0eWxlLnRvcD1gJHtoLnkrKGMuZml4ZWQ/MDplKX1weGApO2QuaW5jbHVkZXMoImxlZnQiKSYmKGEuc3R5bGUubGVmdD1gJHtoLngrKGMuZml4ZWQ/MDpiKX1weGApO2Euc3R5bGUubWFyZ2luPSIwIn07dmFyIEtiYz17RUk6MSxISToxLHRyYW5zbGF0ZVg6MCx0cmFuc2xhdGVZOjAsaXNJZGVudGl0eTohMH0sTGJjPS8uKm1hdHJpeFwoKFteLF0rKSwoW14sXSspLChbXixdKyksKFteLF0rKSwoW14sXSspLChbXixdKylcKS4qLyxNYmM9Ly4qbWF0cml4M2RcKChbXixdKyksKFteLF0rKSwoW14sXSspLChbXixdKyksKFteLF0rKSwoW14sXSspLChbXixdKyksKFteLF0rKSwoW14sXSspLChbXixdKyksKFteLF0rKSwoW14sXSspLChbXixdKyksKFteLF0rKSwoW14sXSspLChbXixdKylcKS4qLzt2YXIgT2JjPXt9O3ZhciBZYmM9bmV3IFdlYWtNYXAsV2JjPSJqc2FjdGlvbiBqc2NvbnRyb2xsZXIganNtb2RlbCBqc2xvZyBqc25hbWUgaWQiLnNwbGl0KCIgIiksVmJjPVdiYy5tYXAoYT0+YFske2F9XWApLmpvaW4oIiwiKSxiY2M9ImhlaWdodCB3aWR0aCBmb250IGZvbnRTaXplIGJvcmRlciBjb2xvciBiYWNrZ3JvdW5kIGJvcmRlclJhZGl1cyB6SW5kZXggb2JqZWN0Rml0Ii5zcGxpdCgiICIpLGVjYz17c3R5bGU6e30sY2hpbGRyZW46W119LGZjYz1uZXcgV2Vha01hcDsKfWNhdGNoKGUpe18uX0R1bXBFeGNlcHRpb24oZSl9CnRyeXsKXy5oY2M9dm9pZCAwOwp9Y2F0Y2goZSl7Xy5fRHVtcEV4Y2VwdGlvbihlKX0KdHJ5ewp2YXIgamNjLGtjYyxvY2Msc2NjLHRjYyx1Y2MsdmNjLHdjYyx4Y2MseWNjLHpjYyxCY2MsQ2NjLEFjYztfLmljYz1mdW5jdGlvbigpe3ZhciBhPV8uRWJjKCJzbmFwc2hvdC1hcGktZWxlbWVudCIsXy5xeSgpKTtmb3IobGV0IGIgb2YgYSliLnJlbW92ZSgpfTsKamNjPWFzeW5jIGZ1bmN0aW9uKGEpe3ZhciBiPSgwLF8uTWYpKCksYz1iKCk7Yj1iKDEpO3RyeXt2YXIgZD1hIGluc3RhbmNlb2YgQXJyYXk/YTpbYV07bGV0IGY9W10sZz1bXSxoPVtdLGs9W10sbT1bXTthPVtdO2xldCBuPVtdO2ZvcihsZXQgcCBvZiBkKXtmLnB1c2goKCk9Pnt2YXIgeCx6O3JldHVybih6PSh4PXApLkthYyk9PW51bGw/dm9pZCAwOnouY2FsbCh4KX0pO2cucHVzaCgoKT0+e3ZhciB4LHo7cmV0dXJuKHo9KHg9cCkuSW5jKT09bnVsbD92b2lkIDA6ei5jYWxsKHgpfSk7bGV0IHI9cC5SQWI7ay5wdXNoKCgpPT5yPT1udWxsP3ZvaWQgMDpyKCkpO2gucHVzaCgoKT0+e3ZhciB4LHo7cmV0dXJuKHo9KHg9cCkuSm5jKT09bnVsbD92b2lkIDA6ei5jYWxsKHgpfSk7bS5wdXNoKCgpPT57dmFyIHgsejtyZXR1cm4oej0oeD1wKS5zU2MpPT1udWxsP3ZvaWQgMDp6LmNhbGwoeCl9KTthLnB1c2goKCk9PnAuYnVpbGQoKSk7bi5wdXNoKCgpPT57cC54bGE9e307cC5sNz17fTtwLmFFYj0Ke307cC5vMGE9e307cC5ZRGI9e307cC5ZND17fTtwLnRvYj17fTtwLmE2YT17fTtwLnBvYj17fX0pfWZvcihsZXQgcCBvZiBmKXAoKTtmb3IobGV0IHAgb2YgZylwKCk7Zm9yKGQ9MDtkPGgubGVuZ3RoO2QrKyliKGF3YWl0IGMoa1tkXSgpKSksaFtkXSgpO2Zvcih2YXIgZSBvZiBtKWUoKTtlPVtdO2ZvcihsZXQgcCBvZiBhKWUucHVzaCguLi5wKCkpO2ZvcihsZXQgcCBvZiBuKXAoKTtyZXR1cm4gYihhd2FpdCBjKChuZXcgXy52TWIoZSkpLmluaXRpYWxpemUoKSkpfWZpbmFsbHl7YygpfX07CmtjYz1hc3luYyBmdW5jdGlvbihhKXt2YXIgYj0oMCxfLk1mKSgpLGM9YigpO2I9YigxKTt0cnl7aWYoXy5oY2MpcmV0dXJuIGIoYXdhaXQgYygoMCxfLmhjYykoYSkpKSxQcm9taXNlLnJlc29sdmUoKTtsZXQgZD1hIGluc3RhbmNlb2YgQXJyYXk/YTpbYV07YT1udWxsO3RyeXthPWIoYXdhaXQgYyhqY2MoZCkpKSxiKGF3YWl0IGMobmV3IFByb21pc2UoZT0+dm9pZCByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoZSkpKSksYS5wbGF5KCksYihhd2FpdCBjKGEudXBiLnByb21pc2UpKX1jYXRjaChlKXtiKCl9ZmluYWxseXtsZXQgZTsoZT1hKT09bnVsbHx8Xy5zTWIoZSk7Zm9yKGxldCBmIG9mIGQpe2xldCBnLGg7KGg9KGc9ZikuRWEpPT1udWxsfHxoLmNhbGwoZyl9fXJldHVybiBQcm9taXNlLnJlc29sdmUoKX1maW5hbGx5e2MoKX19OwpfLm5jYz1mdW5jdGlvbih7ZWxlbWVudHM6YSxqZmI6YixCTGE6Y30pe3ZhciBkPWEuZmlsdGVyKGU9PiEhZSk7cmV0dXJuIF8ubGNjKG5ldyBfLm1jYywoKT0+ZC5tYXAoZT0+e3ZhciBmPU51bWJlcihnZXRDb21wdXRlZFN0eWxlKGUpLm9wYWNpdHkpO3JldHVybnt0YXJnZXQ6ZSxrZXlmcmFtZXM6W3tvcGFjaXR5OmlzTmFOKGYpP2M/MDoxOmZ9LHtvcGFjaXR5OmM/MTowfV0sb3B0aW9uczpifX0pKX07Xy5wY2M9ZnVuY3Rpb24oYSl7cmV0dXJuIG9jYyhPYmplY3QuYXNzaWduKHt9LGEse0s3YjohMX0pKX07Xy5xY2M9ZnVuY3Rpb24oYSl7cmV0dXJuIG9jYyhPYmplY3QuYXNzaWduKHt9LGEse0s3YjohMH0pKX07Cm9jYz1mdW5jdGlvbih7ZHVyYXRpb246YSxlYXNpbmc6Yix0b2tlbjpjLGJlZm9yZTpkLGFmdGVyOmUsSzdiOmYsWW9iOmc9W119KXtpZighYyYmIWEpdGhyb3cgRXJyb3IoIlJoIik7dmFyIGg9Yz97dG9rZW46Y306e2R1cmF0aW9uOmF8fDEwMCxlYXNpbmc6Ynx8ImN1YmljLWJlemllcigwLjIsIDAuMCwgMC4wLCAxKSJ9O3JldHVybiBfLnJjYyhfLmxjYygobmV3IF8ubWNjKHtZemI6Zj97c3RhcnQ6ITB9OntlbmQ6ITB9fSkpLnN0YXJ0KFt7bmFtZToiYmVmb3JlIixlbGVtZW50OmR9XSkuZW5kKFt7bmFtZToiYWZ0ZXIiLGVsZW1lbnQ6ZX1dKSwoe3N0YXJ0OmssZW5kOm0seGxhOm59KT0+e2Y/bS5IYWEuYWZ0ZXIuc3R5bGUuekluZGV4PWAke3NjYyhkKX1gOmsuSGFhLmJlZm9yZS5zdHlsZS56SW5kZXg9YCR7c2NjKGUpfWA7ZC5zdHlsZS5vcGFjaXR5PSIwIjtlLnN0eWxlLm9wYWNpdHk9IjAiO3ZhciBwPW4uYmVmb3JlVG9BZnRlcjtuPW4uYWZ0ZXJUb0JlZm9yZTtpZighZnx8ZiYmCiFkLmhhc0F0dHJpYnV0ZSgiZGF0YS1zbmFwc2hvdC1hcGktZWxlbWVudCIpKXA9Zj9rLnF5LmJlZm9yZTptLnF5LmFmdGVyLG49e0hmYjpwLndpZHRoPHAuaGVpZ2h0P3t4OiEwfTp7eTohMH19LHA9Xy5UYmMoe3RhcmdldDpkfSx7dGFyZ2V0OmV9LG4pLG49Xy5UYmMoe3RhcmdldDplfSx7dGFyZ2V0OmR9LG4pO3ZhciByPWY/LjY1Oi4zNTtrPVt7dGFyZ2V0OmY/bS5IYWEuYWZ0ZXI6ZSxrZXlmcmFtZXM6W3tvZmZzZXQ6MCxvcGFjaXR5OjAsdHJhbnNmb3JtOm4uYnNhfSx7b2Zmc2V0OmY/LjU6LjIsb3BhY2l0eTowfSx7b2Zmc2V0OnIsb3BhY2l0eToxfSx7b2Zmc2V0OjEsb3BhY2l0eToxLHRyYW5zZm9ybToiIn1dLG9wdGlvbnM6aH0se3RhcmdldDpmP2Q6ay5IYWEuYmVmb3JlLGtleWZyYW1lczpbe29mZnNldDowLG9wYWNpdHk6MSx0cmFuc2Zvcm06IiJ9LHtvZmZzZXQ6cixvcGFjaXR5OjF9LHtvZmZzZXQ6Zj8uODouNSxvcGFjaXR5OjB9LHtvZmZzZXQ6MSxvcGFjaXR5OjAsdHJhbnNmb3JtOnAuYnNhfV0sCm9wdGlvbnM6aH1dO209YXx8KGM9PW51bGw/dm9pZCAwOmMuZHVyYXRpb24pfHwxMDA7cD1ifHwoYz09bnVsbD92b2lkIDA6Yy5lYXNpbmcpfHwiY3ViaWMtYmV6aWVyKDAuMiwgMC4wLCAwLjAsIDEpIjtmb3IobGV0IHggb2YgZylrLnB1c2goe3RhcmdldDp4LGtleWZyYW1lczpbe29mZnNldDowLG9wYWNpdHk6TnVtYmVyKGdldENvbXB1dGVkU3R5bGUoeCkub3BhY2l0eSksdHJhbnNmb3JtOiIifSx7b2Zmc2V0OjEsb3BhY2l0eTpmPzA6MSx0cmFuc2Zvcm06IiJ9XSxvcHRpb25zOntkdXJhdGlvbjptLzMsZWFzaW5nOnB9fSk7cmV0dXJuIGt9KSwoKT0+dm9pZCBfLmljYygpKX07c2NjPWZ1bmN0aW9uKGEpe3JldHVybiBhLnBhcmVudEVsZW1lbnQ/KGE9TnVtYmVyKGdldENvbXB1dGVkU3R5bGUoYS5wYXJlbnRFbGVtZW50KS56SW5kZXgpLGlzTmFOKGEpPzEwMjA6YSk6MTAyMH07dGNjPVsib3BhY2l0eSIsInRyYW5zZm9ybSIsInRyYW5zZm9ybU9yaWdpbiIsInpJbmRleCJdOwp1Y2M9ZnVuY3Rpb24oYSl7dmFyIGI9W107Zm9yKGxldCBjIG9mIGEpdHlwZW9mIGMuZWxlbWVudD09PSJzdHJpbmciJiYoYT1fLnF5KCkuZG9jdW1lbnQucXVlcnlTZWxlY3RvcihjLmVsZW1lbnQpLGMuZWxlbWVudD1hKSxiLnB1c2goYyk7cmV0dXJuIGJ9O3ZjYz1mdW5jdGlvbihhLGIse0N6OmN9PXt9KXthPWM/YS5ZNDphLmw3O2ZvcihsZXQgZCBvZiBiKXtiPWQubmFtZTtjPWQuZWxlbWVudDtpZighY3x8KGM9PW51bGw/dm9pZCAwOmMubm9kZVR5cGUpIT09MSl0aHJvdyBFcnJvcigiT2hgIitiKTthW2JdPWR9fTt3Y2M9ZnVuY3Rpb24oYSl7cmV0dXJue3N0YXJ0OntIYWE6YS5vYSxxeTphLm8wYSxlbGVtZW50czphLmw3fSxlbmQ6e0hhYTphLndhLHF5OmEuYTZhLGVsZW1lbnRzOmEuWTR9LHhsYTphLnhsYX19O18ucmNjPWZ1bmN0aW9uKGEsYil7YS5BYS5wdXNoKGIpO3JldHVybiBhfTtfLmxjYz1mdW5jdGlvbihhLGIpe2EuR2EucHVzaChiKTtyZXR1cm4gYX07CnhjYz1mdW5jdGlvbihhLHtDejpifSl7dmFyIGM9Yj9PYmplY3QudmFsdWVzKGEuWTQpOk9iamVjdC52YWx1ZXMoYS5sNyk7YT1iP2EudG9iOmEuYUViO2ZvcihsZXQgZCBvZiBjKWFbZC5uYW1lXT1fLnF5KCkuZ2V0Q29tcHV0ZWRTdHlsZShkLmVsZW1lbnQpfTt5Y2M9ZnVuY3Rpb24oYSx7Q3o6Yn0pe3ZhciBjPWI/YS5hNmE6YS5vMGE7YT1iP2EuWTQ6YS5sNztmb3IobGV0IGQgb2YgT2JqZWN0LnZhbHVlcyhhKSl7bGV0IGU7YT0oZT1kLmVsZW1lbnQpPT1udWxsP3ZvaWQgMDplLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO2lmKGEud2lkdGg9PT0wfHxhLmhlaWdodD09PTApdGhyb3cgRXJyb3IoIlFoYCIrZC5uYW1lKTtjW2QubmFtZV09YX19O3pjYz1mdW5jdGlvbihhLHtDejpifSl7dmFyIGM9Yj9hLnBvYjphLllEYjthPWI/YS5ZNDphLmw3O2ZvcihsZXQge25hbWU6ZCxlbGVtZW50OmV9b2YgT2JqZWN0LnZhbHVlcyhhKSljW2RdPXtoZWlnaHQ6ZS5vZmZzZXRIZWlnaHQsd2lkdGg6ZS5vZmZzZXRXaWR0aH19OwpCY2M9ZnVuY3Rpb24oYSl7Zm9yKGxldCBkIG9mIE9iamVjdC52YWx1ZXMoYS5sNykpe2xldCBlPWQubmFtZSxmPUFjYyhhLGUse0N6OiExfSk7Zm9yKGxldCBnIG9mIE9iamVjdC52YWx1ZXMoYS5ZNCkpe3ZhciBiPWcubmFtZSxjPWAke2V9VG8ke18uYmxhKGIpfWA7bGV0IGg9YCR7Yn1UbyR7Xy5ibGEoZSl9YDtiPUFjYyhhLGIse0N6OiEwfSk7bGV0IGs9Xy5UYmMoZixiKTthLnhsYVtjXT1rO2M9Xy5UYmMoYixmKTthLnhsYVtoXT1jfX19OwpDY2M9ZnVuY3Rpb24oYSx7Q3o6Yn0pe3ZhciBjLGQ7aWYoIShiPyhjPWEub3B0aW9ucy5ZemIpPT1udWxsPzA6Yy5lbmQ6KGQ9YS5vcHRpb25zLll6Yik9PW51bGw/MDpkLnN0YXJ0KSl7Yz1iP2Eud2E6YS5vYTthPWI/YS5ZNDphLmw3O2I9QXJyYXkuZnJvbShPYmplY3QudmFsdWVzKGEpKS5maWx0ZXIoKHtuS2E6ZX0pPT4hZSkubWFwKGU9PmUuZWxlbWVudCk7Yj1fLmFjYyhiKS5vTGIoKTtkPTA7Zm9yKGxldCBbZSxmXW9mIE9iamVjdC5lbnRyaWVzKGEpKWYubkthfHwoY1tlXT1iW2QrK10pfX07QWNjPWZ1bmN0aW9uKGEsYix7Q3o6Y30pe3ZhciBkPWM/YS50b2I6YS5hRWIsZT1jP2EuYTZhOmEubzBhLGY9Yz9hLnBvYjphLllEYjsoe2VsZW1lbnQ6YX09KGM/YS5ZNDphLmw3KVtiXSk7cmV0dXJue3N0eWxlOmRbYl0scmVjdDplW2JdLGhWYTpfLlBiYyhhKSxvZmZzZXRXaWR0aDpmW2JdLndpZHRoLG9mZnNldEhlaWdodDpmW2JdLmhlaWdodH19OwpfLm1jYz1jbGFzc3tjb25zdHJ1Y3RvcihhPXt9KXt0aGlzLm9wdGlvbnM9YTt0aGlzLmthPW5ldyBNYXA7dGhpcy5LYT1bXTt0aGlzLk5hPVtdO3RoaXMuUkFiPSgpPT5Qcm9taXNlLnJlc29sdmUoKTt0aGlzLk9hPVtdO3RoaXMuQmE9W107dGhpcy5HYT1bXTt0aGlzLkFhPVtdO3RoaXMueGxhPXt9O3RoaXMubDc9e307dGhpcy5vMGE9e307dGhpcy5vYT17fTt0aGlzLmFFYj17fTt0aGlzLllEYj17fTt0aGlzLlk0PXt9O3RoaXMuYTZhPXt9O3RoaXMud2E9e307dGhpcy50b2I9e307dGhpcy5wb2I9e319c3RhcnQoYSl7YT11Y2MoYSk7dmNjKHRoaXMsYSk7cmV0dXJuIHRoaXN9ZW5kKGEpe2lmKEFycmF5LmlzQXJyYXkoYSkpe2xldCBiPXVjYyhhKTt2Y2ModGhpcyxiLHtDejohMH0pO3JldHVybiB0aGlzfXRoaXMuUkFiPWFzeW5jKCk9Pnt2YXIgYj0oMCxfLk1mKSgpLGM9YigpO2I9YigxKTt0cnl7bGV0IGQ9Yihhd2FpdCBjKGEoKSkpO3RoaXMuZW5kKGQpfWZpbmFsbHl7YygpfX07CnJldHVybiB0aGlzfUthYygpe2ZvcihsZXQgYSBvZiB0aGlzLkthKWEoKX1JbmMoKXt0aGlzLmNhcHR1cmUoKTtmb3IobGV0IGEgb2YgdGhpcy5OYSlhKHtzdGFydDp7SGFhOnRoaXMub2EscXk6dGhpcy5vMGEsZWxlbWVudHM6dGhpcy5sN30seGxhOnRoaXMueGxhfSl9Sm5jKCl7dGhpcy5jYXB0dXJlKHtDejohMH0pO2ZvcihsZXQgYSBvZiB0aGlzLk9hKWEod2NjKHRoaXMpKX1zU2MoKXtmb3IobGV0IGEgb2YgdGhpcy5CYSlhKHdjYyh0aGlzKSl9YnVpbGQoKXt2YXIgYT1bXTtmb3IobGV0IGIgb2YgdGhpcy5HYSlhLnB1c2goLi4uYih3Y2ModGhpcykpKTtyZXR1cm4gYX1hc3luYyBwbGF5KCl7dmFyIGE9KDAsXy5NZikoKSxiPWEoKTthPWEoMSk7dHJ5e2EoYXdhaXQgYihrY2ModGhpcykpKX1maW5hbGx5e2IoKX19RWEoKXtmb3IobGV0IFthLGJdb2YgdGhpcy5rYS5lbnRyaWVzKCkpe2xldCBjPWEsZD1iO2ZvcihsZXQgZSBvZiBkLmtleXMoKSljLnN0eWxlLnNldFByb3BlcnR5KGUsCmQuZ2V0KGUpKX1mb3IobGV0IGEgb2YgT2JqZWN0LnZhbHVlcyh0aGlzLm9hKSl7bGV0IGI7KGI9YSk9PW51bGx8fGIucmVtb3ZlKCl9Zm9yKGxldCBhIG9mIE9iamVjdC52YWx1ZXModGhpcy53YSkpe2xldCBiOyhiPWEpPT1udWxsfHxiLnJlbW92ZSgpfWZvcihsZXQgYSBvZiB0aGlzLkFhKXtsZXQgYjsoYj1hKT09bnVsbHx8Yih3Y2ModGhpcykpfXRoaXMua2EuY2xlYXIoKTt0aGlzLm9hPXt9O3RoaXMud2E9e319SWEoe0N6OmF9PXt9KXtpZighXy5oY2MpdGhyb3cgRXJyb3IoIlBoIik7eGNjKHRoaXMse0N6OmF9KTt0aGlzLlNiYih7Q3o6YX0pO3ljYyh0aGlzLHtDejphfSk7emNjKHRoaXMse0N6OmF9KTthJiZCY2ModGhpcyl9Y2FwdHVyZSh7Q3o6YX09e30pe3hjYyh0aGlzLHtDejphfSk7dGhpcy5TYmIoe0N6OmF9KTt5Y2ModGhpcyx7Q3o6YX0pO3pjYyh0aGlzLHtDejphfSk7Q2NjKHRoaXMse0N6OmF9KTthJiZCY2ModGhpcyl9U2JiKHtDejphfSl7YT1hP09iamVjdC52YWx1ZXModGhpcy5ZNCk6Ck9iamVjdC52YWx1ZXModGhpcy5sNyk7Zm9yKGxldCBjIG9mIGEpe2E9Yy5lbGVtZW50O3RoaXMua2EuaGFzKGEpfHx0aGlzLmthLnNldChhLG5ldyBNYXApO2xldCBkPW5ldyBNYXAsZTt2YXIgYj0oKGU9dGhpcy5vcHRpb25zLlNiYik9PW51bGw/dm9pZCAwOmUuYWRkKXx8W107bGV0IGYsZz0oKGY9dGhpcy5vcHRpb25zLlNiYik9PW51bGw/dm9pZCAwOmYucmVtb3ZlKXx8W107Yj10Y2MuY29uY2F0KGIpLmZpbHRlcihrPT4hZy5pbmNsdWRlcyhrKSk7bGV0IGg9YS5zdHlsZTtmb3IobGV0IGsgb2YgYilkLnNldChrLGhba10pO3RoaXMua2Euc2V0KGEsZCl9fX07Cn1jYXRjaChlKXtfLl9EdW1wRXhjZXB0aW9uKGUpfQp0cnl7Cl8uRGNjPWZ1bmN0aW9uKGEsYj0hMSl7Zm9yKGxldCBjIG9mIGEpYT1jLmVsZW1lbnQsYS5zdHlsZS50cmFuc2l0aW9uPWI/Im5vbmUiOiIiLGMuZ0s/YS5jbGFzc0xpc3QuYWRkKGMuSUgpOmEuY2xhc3NMaXN0LnJlbW92ZShjLklIKX07Xy5FY2M9ZnVuY3Rpb24oYSl7cmV0dXJuIG5ldyBQcm9taXNlKGI9PnsoMCxfLmpvKSgoKT0+e2Iodm9pZCAwKX0sYSl9KX07Xy5GY2M9Y2xhc3MgZXh0ZW5kcyBfLndiY3tjb25zdHJ1Y3RvcihhKXsoe1AyYjpiPSIifT17fSk7dmFyIGI7c3VwZXIoKTt0aGlzLm92ZXJsYXk9YTt0aGlzLlAyYj1ifWFzeW5jIG9wZW4oKXt0aGlzLm92ZXJsYXkuc3R5bGUuZGlzcGxheT10aGlzLlAyYn1hc3luYyBjbG9zZSgpe3RoaXMub3ZlcmxheS5zdHlsZS5kaXNwbGF5PSJub25lIn19OwpfLkdjYz1jbGFzcyBleHRlbmRzIF8ud2Jje2NvbnN0cnVjdG9yKGEsYixjLGQpe3N1cGVyKCk7dGhpcy5vYT1hO3RoaXMuQWE9Yjt0aGlzLmthPWM7dGhpcy53YT1kfWFzeW5jIG9wZW4oKXt2YXIgYT0oMCxfLk1mKSgpLGI9YSgpO2E9YSgxKTt0cnl7Xy5EY2ModGhpcy5vYSwhMSksYShhd2FpdCBiKF8uRWNjKHRoaXMua2EpKSl9ZmluYWxseXtiKCl9fWFzeW5jIGNsb3NlKCl7dmFyIGE9KDAsXy5NZikoKSxiPWEoKTthPWEoMSk7dHJ5e18uRGNjKHRoaXMuQWEsITEpLGEoYXdhaXQgYihfLkVjYyh0aGlzLndhKSkpfWZpbmFsbHl7YigpfX19Owp9Y2F0Y2goZSl7Xy5fRHVtcEV4Y2VwdGlvbihlKX0KdHJ5ewp2YXIgaWtjLGprYztfLmZrYz1mdW5jdGlvbihhKXtfLkdxYSYmXy5HcWEuZHdhKCk9PT1hJiYoXy5HcWE9bnVsbCk7ZGVsZXRlIF8uRnFhW2FdfTtfLmdrYz1mdW5jdGlvbigpe3ZhciBhPV8uZno7aWYoYS53YSE9PW51bGwpcmV0dXJuIGEud2E7aWYoZG9jdW1lbnQuYm9keSl7bGV0IGI9Xy52SWEoZG9jdW1lbnQuYm9keSkudG9wO3JldHVybiBhLndhPWJ9cmV0dXJuIDB9O18uaGtjPWNsYXNze2NvbnN0cnVjdG9yKCl7dGhpcy53YT1udWxsfWthKCl7fWdldFNjcm9sbFRvcCgpe3JldHVybiAwfWdldEhlYWRlclBhZGRpbmdIZWlnaHQoKXtyZXR1cm4gMH1nZXRGb290ZXJQYWRkaW5nSGVpZ2h0KCl7cmV0dXJuIDB9QWEoYSxiKXt3aW5kb3cuc2Nyb2xsQnkoYSxiKX1maXhlZFVpU2Nyb2xsVG8oYSxiKXt3aW5kb3cuc2Nyb2xsVG8oYSxiKX1vYSgpe3JldHVybiExfXNlbmRHZW5lcmljQ2xpZW50RXZlbnQoKXt9b3BlbkluQXBwRnVsbFNjcmVlbigpe3JldHVybiExfX07Xy5mej1uZXcgXy5oa2M7CmprYz1uYXZpZ2F0b3IudXNlckFnZW50Lm1hdGNoKC8gR1NBXC8oWy5cZF0rKS8pO2lrYz1qa2M/amtjWzFdOiIiO18ua2tjPV8uemQmJl8ubmEoaWtjLCI0Iik+PTA7Xy5sa2M9Xy56ZCYmXy5uYShpa2MsIjUuMiIpPj0wO18ubWtjPV8uemQmJl8ubmEoaWtjLCI0LjMiKT49MCYmIShfLm5hKGlrYywiNC41Iik+PTApOwp9Y2F0Y2goZSl7Xy5fRHVtcEV4Y2VwdGlvbihlKX0KdHJ5ewpfLnA2Yz0hIShfLk9pWzMwXSY4MTkyKTtfLnE2Yz0hIShfLk9pWzMwXT4+MTQmMSk7Xy5yNmM9ISEoXy5PaVszMF0+PjE1JjEpO18uczZjPSEhKF8uT2lbMzBdPj4xNiYxKTtfLnQ2Yz0hIShfLk9pWzMwXT4+MTcmMSk7Xy51NmM9ISEoXy5PaVszMF0+PjE5JjEpO18udjZjPSEhKF8uT2lbMzBdPj4yNSYxKTtfLnc2Yz0hIShfLk9pWzMwXT4+MjYmMSk7Xy54NmM9ISEoXy5PaVszMV0mMTAyNCk7Xy55NmM9ISEoXy5PaVszMV0mMjA0OCk7Xy56NmM9ISEoXy5PaVszMV0mNDA5Nik7Xy5BNmM9ISEoXy5PaVszMV0mODE5Mik7Cn1jYXRjaChlKXtfLl9EdW1wRXhjZXB0aW9uKGUpfQp0cnl7CnZhciBkZGQ7ZGRkPS0xO18ubEY9Y2xhc3N7Z2V0VW5pcXVlSWQoKXsrK2RkZDtyZXR1cm5ganN1aWRfJHtkZGR9YH1WayhhKXsrK2RkZDtyZXR1cm5gJHthfV8ke2RkZH1gfVViKCl7cmV0dXJuIHRoaXMuZ2V0VW5pcXVlSWQoKX19Owp9Y2F0Y2goZSl7Xy5fRHVtcEV4Y2VwdGlvbihlKX0KdHJ5ewp2YXIgd21kO18uc21kPWZ1bmN0aW9uKGEpe3JldHVybiBfLnJtZChhLDApfTtfLnJtZD1mdW5jdGlvbihhLGIpe3JldHVybiBBcnJheS5mcm9tKGEucXVlcnlTZWxlY3RvckFsbCgiW3RhYmluZGV4XSwgYSwgaW5wdXQsIHRleHRhcmVhLCBzZWxlY3QsIGJ1dHRvbiIpKS5maWx0ZXIoYz0+Xy50bWQoYyxiKSl9O18udW1kPWZ1bmN0aW9uKGEpe3JldHVybiBfLnRtZChhLDApfTsKXy50bWQ9ZnVuY3Rpb24oYSxiLHtYUWI6Yz0hMH09e30pe2lmKCEoYSBpbnN0YW5jZW9mIEhUTUxFbGVtZW50fHxhIGluc3RhbmNlb2YgU1ZHRWxlbWVudCkpcmV0dXJuITE7dmFyIGQ9Xy5ibihhKTtiPT09LTEmJihkfHwoZD1hLmhhc0F0dHJpYnV0ZSgidGFiaW5kZXgiKSYmIWEuaGFzQXR0cmlidXRlKCJkaXNhYmxlZCIpKSk7aWYoIShiPSFkKSl7aWYoYyl7YTp7Zm9yKGM9YTtjO2M9Yy5wYXJlbnRFbGVtZW50KWlmKGMgaW5zdGFuY2VvZiBIVE1MRWxlbWVudCYmYy5pbmVydCl7Yz0hMDticmVhayBhfWM9ITF9Y3x8KGM9Xy5rbihhLCJ2aXNpYmlsaXR5IiksYz1jPT09ImhpZGRlbiJ8fGM9PT0iY29sbGFwc2UiKTtpZighYylhOntmb3IoO2E7YT1hLnBhcmVudEVsZW1lbnQpaWYoXy5rbihhLCJkaXNwbGF5Iik9PT0ibm9uZSIpe2M9ITA7YnJlYWsgYX1jPSExfX1iPWN9cmV0dXJuIGI/ITE6ITB9OwpfLnhtZD1mdW5jdGlvbihhLHt0aHJlc2hvbGQ6Yj0wLHdyYXA6Yz0hMH09e30pe3ZhciB7V3piOmQsUVdiOmV9PV8udm1kKGEpLGY9KGE9ZT49MCYmZTxkLmxlbmd0aCk/ZC5zbGljZSgwLGUrMSk6W107Zj13bWQoZixiKTshZiYmYyYmKGM9YT9kLnNsaWNlKGUrMSk6ZCxmPXdtZChjLGIpKTtyZXR1cm4gZn07Xy52bWQ9ZnVuY3Rpb24oYSl7aWYoIWRvY3VtZW50LmJvZHkuY29udGFpbnMoYSkpdGhyb3cgRXJyb3IoInNrIik7dmFyIGI9QXJyYXkuZnJvbShkb2N1bWVudC5ib2R5LnF1ZXJ5U2VsZWN0b3JBbGwoIlt0YWJpbmRleF0sIGEsIGlucHV0LCB0ZXh0YXJlYSwgc2VsZWN0LCBidXR0b24iKSk7YT1fLkphKGIsYSxfLkpIYSk7aWYoYT49MClyZXR1cm57V3piOmIsUVdiOmEtMSxQV2I6YSsxfTthPS1hLTE7cmV0dXJue1d6YjpiLFFXYjphLTEsUFdiOmF9fTsKd21kPWZ1bmN0aW9uKGEsYil7Zm9yKGxldCBjPWEubGVuZ3RoLTE7Yz49MDtjLS0pe2xldCBkPWFbY107aWYoXy50bWQoZCxiKSlyZXR1cm4gZH19Owp9Y2F0Y2goZSl7Xy5fRHVtcEV4Y2VwdGlvbihlKX0KdHJ5ewpfLnltZD1mdW5jdGlvbihhLGIpe3JldHVybiBhLndhLnNvbWUoYz0+Yy5lbGVtZW50PT09Yil9OwpfLnptZD1mdW5jdGlvbihhLGIpe3ZhciBjPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpO2Muc2V0QXR0cmlidXRlKCJkYXRhLW9zLWZzIiwiIik7Yy5zZXRBdHRyaWJ1dGUoInRhYmluZGV4IiwiMCIpO2Muc2V0QXR0cmlidXRlKCJhcmlhLWhpZGRlbiIsInRydWUiKTtjLnN0eWxlLmJvcmRlcj0iMCI7Yy5zdHlsZS5jbGlwPSJyZWN0KDAgMCAwIDApIjtjLnN0eWxlLmNsaXBQYXRoPSJwb2x5Z29uKDAgMCwgMCAwLCAwIDApIjtjLnN0eWxlLmhlaWdodD0iMXB4IjtjLnN0eWxlLm1hcmdpbj0iLTFweCI7Yy5zdHlsZS5vdmVyZmxvdz0iaGlkZGVuIjtjLnN0eWxlLnBhZGRpbmc9IjAiO2Muc3R5bGUucG9zaXRpb249ImFic29sdXRlIjtjLnN0eWxlLndpZHRoPSIxcHgiO2Muc3R5bGUud2hpdGVTcGFjZT0ibm93cmFwIjtjLnN0eWxlLmFwcGVhcmFuY2U9Im5vbmUiO2Muc3R5bGUuekluZGV4PSItMTAwMCI7Yy5zdHlsZS51c2VyU2VsZWN0PSJub25lIjtiPV8uaGUoYywiZm9jdXMiLApiKTthLndhLnB1c2goe2VsZW1lbnQ6YyxKUjpifSk7cmV0dXJuIGN9O18uQW1kPWNsYXNze2NvbnN0cnVjdG9yKCl7dGhpcy53YT1bXX1kaXNwb3NlKCl7dGhpcy53YS5mb3JFYWNoKHRoaXMuQmEpO3RoaXMud2E9W119QmEoYSl7YS5lbGVtZW50LnJlbW92ZSgpO18uQW4oYS5KUil9fTtfLkJtZD1mdW5jdGlvbihhKXtyZXR1cm4gXy5zbWQoYS5jb250YWluZXIpLmZpbHRlcihiPT4hXy55bWQoYSxiKSl9O18uRG1kPWZ1bmN0aW9uKGEpe2lmKCFhLmthKXtpZihfLkJtZChhKS5sZW5ndGg9PT0wKXRocm93IEVycm9yKCJ0ayIpO3ZhciBiPV8uem1kKGEsKCk9Pnt2YXIgYzsoYz1fLkNtZChhLDApKT09bnVsbHx8Yy5mb2N1cygpfSk7YS5jb250YWluZXIuYXBwZW5kKGIpO2I9Xy56bWQoYSwoKT0+e3ZhciBjOyhjPV8uQ21kKGEsMSkpPT1udWxsfHxjLmZvY3VzKCl9KTthLmNvbnRhaW5lci5jaGlsZHJlblswXS5iZWZvcmUoYik7YS5rYT0hMH19O18uRW1kPWZ1bmN0aW9uKGEpe2Eua2EmJihhLmRpc3Bvc2UoKSxhLmthPSExKX07Xy5DbWQ9ZnVuY3Rpb24oYSxiKXthPV8uQm1kKGEpO2lmKGEubGVuZ3RoIT09MClyZXR1cm4gYj09PTA/YVswXTphW2EubGVuZ3RoLTFdfTtfLkZtZD1mdW5jdGlvbihhKXtyZXR1cm4gXy5DbWQoYSwwKX07Cl8uR21kPWNsYXNzIGV4dGVuZHMgXy5BbWR7Y29uc3RydWN0b3IoYSl7c3VwZXIoKTt0aGlzLmNvbnRhaW5lcj1hO3RoaXMua2E9ITF9fTsKfWNhdGNoKGUpe18uX0R1bXBFeGNlcHRpb24oZSl9CnRyeXsKXy5Nc2Q9ISEoXy5PaVs2Nl0+PjE2JjEpO18uTnNkPSEhKF8uT2lbNjZdPj4xNyYxKTtfLk9zZD0hIShfLk9pWzY2XT4+MTgmMSk7Cn1jYXRjaChlKXtfLl9EdW1wRXhjZXB0aW9uKGUpfQp0cnl7Cl8uekdlPSEhKF8uT2lbMzldJjgpO18uQUdlPSEhKF8uT2lbMzldJjMyKTsKfWNhdGNoKGUpe18uX0R1bXBFeGNlcHRpb24oZSl9CnRyeXsKXy51KCJ2Z2JpS2IiKTsKXy5hZyhfLlFZYSxjbGFzcyBleHRlbmRzIF8uc297fSk7Cl8udigpOwp9Y2F0Y2goZSl7Xy5fRHVtcEV4Y2VwdGlvbihlKX0KdHJ5ewpfLnUoIldsNTVpYiIpOwpfLlVUbD1uZXcgXy5UZihfLlJZYSk7Cl8udigpOwp9Y2F0Y2goZSl7Xy5fRHVtcEV4Y2VwdGlvbihlKX0KdHJ5ewpfLkJ0ZD0hIShfLk9pWzc0XSYyMDQ4KTtfLkN0ZD0hIShfLk9pWzc0XSY0MDk2KTtfLkR0ZD0hIShfLk9pWzc0XSY4MTkyKTtfLkV0ZD0hIShfLk9pWzc0XT4+MTQmMSk7Xy5GdGQ9ISEoXy5PaVs3NF0+PjE1JjEpO18uR3RkPSEhKF8uT2lbNzRdPj4xNiYxKTtfLkh0ZD0hIShfLk9pWzc0XT4+MTcmMSk7Xy5JdGQ9ISEoXy5PaVs3NF0+PjE4JjEpO18uSnRkPSEhKF8uT2lbNzRdPj4xOSYxKTtfLkt0ZD0hIShfLk9pWzc0XT4+MjEmMSk7Xy5MdGQ9ISEoXy5PaVs3NF0+PjIyJjEpO18uTXRkPSEhKF8uT2lbNzRdPj4yMyYxKTtfLk50ZD0hIShfLk9pWzc0XT4+MjQmMSk7Xy5PdGQ9ISEoXy5PaVs3NF0+PjI1JjEpO18uUHRkPSEhKF8uT2lbNzRdPj4yNiYxKTtfLlF0ZD0hIShfLk9pWzc0XT4+MjcmMSk7Xy5SdGQ9ISEoXy5PaVs3NF0+PjI4JjEpO18uU3RkPSEhKF8uT2lbNzRdPj4yOSYxKTtfLlR0ZD0hIShfLk9pWzc1XSYxKTtfLlV0ZD0hIShfLk9pWzc1XSYyKTsKXy5WdGQ9ISEoXy5PaVs3NV0mNCk7Xy5XdGQ9ISEoXy5PaVs3NV0mOCk7Xy5YdGQ9ISEoXy5PaVs3NV0mMTYpO18uWXRkPSEhKF8uT2lbNzVdJjMyKTtfLlp0ZD0hIShfLk9pWzc1XSY2NCk7Xy4kdGQ9ISEoXy5PaVs3NV0mMTI4KTtfLmF1ZD0hIShfLk9pWzc1XSYyNTYpO18uYnVkPSEhKF8uT2lbNzVdJjUxMik7Xy5jdWQ9ISEoXy5PaVs3NV0mMTAyNCk7Xy5kdWQ9ISEoXy5PaVs3NV0mMjA0OCk7Xy5ldWQ9ISEoXy5PaVs3NV0+PjE0JjEpO18uZnVkPSEhKF8uT2lbNzVdPj4xNSYxKTtfLmd1ZD0hIShfLk9pWzc1XT4+MTYmMSk7Xy5odWQ9ISEoXy5PaVs3NV0+PjE3JjEpO18uaXVkPSEhKF8uT2lbNzVdPj4yMCYxKTtfLmp1ZD0hIShfLk9pWzc1XT4+MjEmMSk7Xy5rdWQ9ISEoXy5PaVs3NV0+PjIyJjEpO18ubHVkPSEhKF8uT2lbNzVdPj4yMyYxKTtfLm11ZD0hIShfLk9pWzc1XT4+MjQmMSk7Xy5udWQ9ISEoXy5PaVs3NV0+PjI1JjEpO18ub3VkPSEhKF8uT2lbNzVdPj4yNiYxKTsKXy5wdWQ9ISEoXy5PaVs3NV0+PjI3JjEpOwp9Y2F0Y2goZSl7Xy5fRHVtcEV4Y2VwdGlvbihlKX0KdHJ5ewp2YXIgb3FlLG1xZSxrcWU7Xy5scWU9ZnVuY3Rpb24oYSl7YT1uZXcga3FlKGEpO2EucnVuKCk7cmV0dXJuIGF9O18ubnFlPWZ1bmN0aW9uKGEpe3JldHVybiBuZXcgbXFlKGEpfTtvcWU9dm9pZCAwOwptcWU9Y2xhc3N7Y29uc3RydWN0b3IoYSl7dGhpcy5rYT1hO3RoaXMub2E9bmV3IFNldDt0aGlzLndhPTB9Z2V0IHZhbHVlKCl7b3FlPT09dm9pZCAwfHx0aGlzLm9hLmhhcyhvcWUpfHx0aGlzLm9hLmFkZChvcWUpO3JldHVybiB0aGlzLmthfXNldCB2YWx1ZShhKXtpZih0aGlzLndhPjApdGhyb3cgRXJyb3IoInpsIik7aWYoYSE9PXRoaXMua2Epe3RoaXMud2ErKzt0aGlzLkFhPXRoaXMua2E7dGhpcy5rYT1hO2E9W107dHJ5e2ZvcihsZXQgYiBvZiB0aGlzLm9hKXRyeXtiLnJ1bigpfWNhdGNoKGMpe2EucHVzaChjKX1pZihhLmxlbmd0aD4wKXRocm93IGFbMF07aWYoYS5sZW5ndGg+MSl0aHJvdyBuZXcgQWdncmVnYXRlRXJyb3IoYSxgYXQgbGVhc3Qgb25lIHN1YnNjcmliZXIgY2FsbGJhY2sgZmFpbGVkIHRvIHVwZGF0ZSBmb3IgU2lnbmFsIHdpdGggdmFsdWU6ICR7dGhpcy5rYX1gKTt9ZmluYWxseXt0aGlzLndhLS19fX1zdWJzY3JpYmUoYSl7dmFyIGI9Xy5scWUoKCk9PntvcWU9CnZvaWQgMDthKHRoaXMua2EsdGhpcy5BYSl9KTt0aGlzLm9hLmFkZChiKTtyZXR1cm4oKT0+e3RoaXMub2EuZGVsZXRlKGIpfX19O2txZT1jbGFzc3tjb25zdHJ1Y3RvcihhKXt0aGlzLmNvbXB1dGU9YX1ydW4oKXt2YXIgYT1vcWU7b3FlPXRoaXM7dHJ5e3RoaXMuY29tcHV0ZSgpfWZpbmFsbHl7b3FlPWF9fX07Cn1jYXRjaChlKXtfLl9EdW1wRXhjZXB0aW9uKGUpfQp0cnl7Cl8udSgiWW05TlpjIik7CnZhciBhc2U9Y2xhc3MgZXh0ZW5kcyBfLmx7Y29uc3RydWN0b3IoYSl7c3VwZXIoYSl9RUdhKCl7cmV0dXJuIF8uTmoodGhpcywyKX19LGJzZT1jbGFzcyBleHRlbmRzIF8ubHtjb25zdHJ1Y3RvcihhKXtzdXBlcihhKX1zZXRDb21wb3NpdGlvbihhLGIpe3JldHVybiBfLnJqKHRoaXMsMyxhc2UsYSxiKX19LGNzZT1jbGFzcyBleHRlbmRzIF8ubHtjb25zdHJ1Y3RvcihhKXtzdXBlcihhKX19LGVzZT1mdW5jdGlvbihhKXt2YXIgYj1uZXcgZHNlO3JldHVybiBfLlNiKGIsY3NlLDEsYSl9LGZzZT1mdW5jdGlvbihhLGIpe3JldHVybiBfLlNiKGEsYnNlLDIsYil9LGRzZT1jbGFzcyBleHRlbmRzIF8ubHtjb25zdHJ1Y3RvcihhKXtzdXBlcihhKX19O2RzZS5wcm90b3R5cGUub2E9Xy4kYihbMCxbMCxfLkcsLTFdLFswLF8uRywtMSxfLkYsWzAsXy5HLF8uYWwsXy5DXV1dKTt2YXIgZ3NlPVswLF8uRywtMV0saHNlPWNsYXNzIGV4dGVuZHMgXy5se2NvbnN0cnVjdG9yKGEpe3N1cGVyKGEpfX07CmhzZS5wcm90b3R5cGUub2E9Xy4kYihnc2UpO3ZhciBpc2U9ZnVuY3Rpb24oYSxiKXtyZXR1cm4gXy5aaChhLDEsYil9LGpzZT1mdW5jdGlvbihhLGIpe3JldHVybiBfLlNiKGEsaHNlLDIsYil9LGtzZT1jbGFzcyBleHRlbmRzIF8ubHtjb25zdHJ1Y3RvcihhKXtzdXBlcihhKX19O2tzZS5wcm90b3R5cGUub2E9Xy4kYihbMCxfLkcsZ3NlXSk7dmFyIG5zZTtfLmxzZT17VG9hOntzeXN0ZW06MX0sRGJhOntzeXN0ZW06MjJ9LFBjYzpbNl19O18ubXNlPXtUb2E6e3N5c3RlbToyfSxEYmE6e3N5c3RlbToxMX0sUGNjOlsxMl19OwpfLm9zZT1mdW5jdGlvbihhLGIpe2lmKGEua2EuQWEoKSl7dmFyIGM9Xy5zYSgpP2IuVG9hOmIuRGJhLGQ9bmV3IGhzZTtiLlRvYS5zeXN0ZW0mJl8uWmgoZCwxLGIuVG9hLnN5c3RlbSk7Yi5EYmEuc3lzdGVtJiZfLlpoKGQsMixiLkRiYS5zeXN0ZW0pO3ZhciBlLGY7KChmPShlPWEua2EpLm9hKT09bnVsbD8wOmYuY2FsbChlKSk/KGM9bmV3IGNzZSxiLlRvYS5zeXN0ZW0mJl8uWmgoYywxLGIuVG9hLnN5c3RlbSksYi5Ub2EudFlhJiZfLlpoKGMsMixiLlRvYS50WWEpLGQ9bmV3IGJzZSxiLkRiYS5zeXN0ZW0mJl8uWmgoZCwxLGIuRGJhLnN5c3RlbSksYi5EYmEudFlhJiZfLlpoKGQsMixiLkRiYS50WWEpLGIuRGJhLlVvYyYmKGI9Yi5EYmEuVW9jLm1hcChnPT57aWYoIWcucHJpbWl0aXZlVHlwZSl0aHJvdyBFcnJvcigiSGwiKTt2YXIgaCxrO3ZhciBtPW5ldyBhc2U7bT1fLlpoKG0sMSxnLnByaW1pdGl2ZVR5cGUpO3ZhciBuPShoPWcuc2NhbGUpIT1udWxsP2g6MTtoPV8ud2gobSwKMixuKTtnPShrPWcuQlBiKSE9bnVsbD9rOjA7cmV0dXJuIF8ubGsoaCwzLGcpfSksXy5IaihkLDMsYikpLGI9ZnNlKGVzZShjKSxkKSxhLmthLmthKGIpKTpjLnRZYSYmYS5rYS53YSgpPyhiPWpzZShpc2UobmV3IGtzZSxjLnRZYSksZCksYS5rYS5CYShiKSk6YS5rYS5HYShkKX1lbHNlIG5zZSYmYS52aWJyYXRlKGIuUGNjKX07Xy5wc2U9Y2xhc3N7Y29uc3RydWN0b3IoYSl7dGhpcy5rYT1hfXZpYnJhdGUoYSl7dmFyIGIsYztyZXR1cm4oKGM9KGI9d2luZG93Lm5hdmlnYXRvcikudmlicmF0ZSk9PW51bGw/dm9pZCAwOmMuY2FsbChiLGEpKXx8ITF9fTtuc2U9Xy5BNmM7Cl8udigpOwp9Y2F0Y2goZSl7Xy5fRHVtcEV4Y2VwdGlvbihlKX0KdHJ5ewpfLnFTZj0hIShfLk9pWzI3XT4+MTYmMSk7Xy5lUT0hIShfLk9pWzI3XT4+MTcmMSk7Xy5yU2Y9ISEoXy5PaVsyN10+PjE4JjEpO18uc1NmPSEhKF8uT2lbMjddPj4xOSYxKTtfLnRTZj0hIShfLk9pWzI3XT4+MjAmMSk7Xy51U2Y9ISEoXy5PaVsyN10+PjIxJjEpO18udlNmPSEhKF8uT2lbMjddPj4yMiYxKTtfLndTZj0hIShfLk9pWzI3XT4+MjMmMSk7Xy54U2Y9ISEoXy5PaVsyN10+PjI0JjEpO18ueVNmPSEhKF8uT2lbMjddPj4yNSYxKTtfLnpTZj0hIShfLk9pWzI3XT4+MjYmMSk7Xy5BU2Y9ISEoXy5PaVsyN10+PjI3JjEpO18uQlNmPSEhKF8uT2lbMjddPj4yOCYxKTtfLkNTZj0hIShfLk9pWzI3XT4+MjkmMSk7Xy5mUT0hIShfLk9pWzI4XSYxKTtfLkRTZj0hIShfLk9pWzI4XSYyKTtfLkVTZj0hIShfLk9pWzI4XSY0KTtfLkZTZj0hIShfLk9pWzI4XSY4KTsKfWNhdGNoKGUpe18uX0R1bXBFeGNlcHRpb24oZSl9CnRyeXsKXy5uZihfLldZYSk7Cn1jYXRjaChlKXtfLl9EdW1wRXhjZXB0aW9uKGUpfQp0cnl7Cl8udSgidlZWempiIik7CnZhciBRVmc9Y2xhc3MgZXh0ZW5kcyBfLnNve2lzQXZhaWxhYmxlKCl7cmV0dXJuITF9QWEoKXtyZXR1cm4hMX13YSgpe3JldHVybiExfW9hKCl7cmV0dXJuITF9dmlicmF0ZSgpe3JldHVybiBfLklpKCJIYXB0aWNzIiwidmlicmF0ZSIpfUdhKCl7Xy5JaSgiSGFwdGljcyIsInBsYXlTeXN0ZW1IYXB0aWMiKX1CYSgpe18uSWkoIkhhcHRpY3MiLCJwbGF5UHJlZGVmaW5lZEhhcHRpYyIpfWthKCl7Xy5JaSgiSGFwdGljcyIsInBsYXlIYXB0aWNUb2tlbiIpfX07Xy5hZyhfLlZZYSxRVmcpOwpfLnYoKTsKfWNhdGNoKGUpe18uX0R1bXBFeGNlcHRpb24oZSl9CnRyeXsKXy51KCJUcm9aMWQiKTsKXy5PVmc9bmV3IF8uVGYoXy5XWWEpOwpfLnYoKTsKfWNhdGNoKGUpe18uX0R1bXBFeGNlcHRpb24oZSl9CnRyeXsKXy5WVGw9ZnVuY3Rpb24oYSl7dmFyIGI9Xy5PZi5nZXRJbnN0YW5jZSgpLlpIKGEpLGM9Xy5icGEoYik7Yz9fLmZwYS5hZGQoYy50b1N0cmluZygpKTpfLmZwYS5hZGQoYik7YS5leiYmKGEuZXoudDRiPW51bGwpfTsKfWNhdGNoKGUpe18uX0R1bXBFeGNlcHRpb24oZSl9CnRyeXsKdmFyIHQ1ZTtfLnI1ZT0vaVBob25lfGlQb2R8aVBhZC87Xy5zNWU9ZnVuY3Rpb24oKXtyZXR1cm4gXy5sYShuYXZpZ2F0b3IudXNlckFnZW50LCJBbmRyb2lkIil9O3Q1ZT0vTWFjIE9TIFguK1NpbGtcLy87Xy51NWU9Xy55SWF8fF8ucjVlLnRlc3QobmF2aWdhdG9yLnVzZXJBZ2VudCl8fF8uczVlKCl8fHQ1ZS50ZXN0KG5hdmlnYXRvci51c2VyQWdlbnQpO18udjVlPXdpbmRvdy5uYXZpZ2F0b3IubXNQb2ludGVyRW5hYmxlZDtfLnc1ZT1fLnU1ZT8idG91Y2hzdGFydCI6Xy52NWU/Ik1TUG9pbnRlckRvd24iOiJtb3VzZWRvd24iO18ueDVlPV8udTVlPyJ0b3VjaG1vdmUiOl8udjVlPyJNU1BvaW50ZXJNb3ZlIjoibW91c2Vtb3ZlIjtfLnk1ZT1fLnU1ZT8idG91Y2hlbmQiOl8udjVlPyJNU1BvaW50ZXJVcCI6Im1vdXNldXAiO18uejVlPV8udjVlPyJNU1BvaW50ZXJDYW5jZWwiOiJ0b3VjaGNhbmNlbCI7Cn1jYXRjaChlKXtfLl9EdW1wRXhjZXB0aW9uKGUpfQp0cnl7CnZhciBBNWU9ZnVuY3Rpb24oYSl7dGhpcy5RYz1hO3RoaXMuUWMuX3dlY3Q9dGhpczt0aGlzLm9hPXt9O3RoaXMua2E9e307dGhpcy53YT17fX0sQzVlLEY1ZSxHNWUsSTVlLEZNLEo1ZSxLNWUsTDVlLE01ZTtBNWUucHJvdG90eXBlLldpPW51bGw7QTVlLnByb3RvdHlwZS5BYT1mdW5jdGlvbihhLGIpe3RoaXMub2FbYV09PXZvaWQgMCYmKHRoaXMub2FbYV09MCk7dGhpcy5vYVthXSsrO3ZhciBjPXRoaXMua2FbYV0sZD1jLmxlbmd0aDtmb3IobGV0IGY9MDtmPGQ7ZisrKXRyeXtjW2ZdKGIpfWNhdGNoKGcpe3ZhciBlPWV8fGd9dGhpcy5vYVthXS0tO2lmKGUpdGhyb3cgZTt9O18uQjVlPWZ1bmN0aW9uKGEsYil7YS53YVtiXXx8KGEud2FbYl09KDAsXy5pZSkoYS5BYSxhLGIpKTtyZXR1cm4gYS53YVtiXX07CkM1ZT1mdW5jdGlvbihhLGIsYyxkKXtkPSEhZDt2YXIgZT1iKyI6IisoZD8iY2FwdHVyZSI6ImJ1YmJsZSIpO2Eua2FbZV18fChhLmthW2VdPVtdLGEuUWMuYWRkRXZlbnRMaXN0ZW5lcihiLF8uQjVlKGEsZSksZCkpO2Eua2FbZV0ucHVzaChjKX07Xy5ENWU9ZnVuY3Rpb24oYSxiLGMsZCl7ZD0hIWQ7dmFyIGU9YisiOiIrKGQ/ImNhcHR1cmUiOiJidWJibGUiKTthLmthW2VdJiYoYS5vYVtlXSYmKGEua2FbZV09YS5rYVtlXS5zbGljZSgwKSksYz1hLmthW2VdLmluZGV4T2YoYyksYyE9LTEmJmEua2FbZV0uc3BsaWNlKGMsMSksYS5rYVtlXS5sZW5ndGg9PTAmJihhLmthW2VdPXZvaWQgMCxhLlFjLnJlbW92ZUV2ZW50TGlzdGVuZXIoYixfLkI1ZShhLGUpLGQpKSl9O18uRTVlPWZ1bmN0aW9uKGEpe2EuX3dlY3R8fG5ldyBBNWUoYSk7cmV0dXJuIGEuX3dlY3R9OwpGNWU9ZnVuY3Rpb24oYSxiLGMpe2EuYWRkRXZlbnRMaXN0ZW5lcigiRE9NRm9jdXNJbiIsZnVuY3Rpb24oZCl7ZC50YXJnZXQmJmQudGFyZ2V0LnRhZ05hbWU9PSJURVhUQVJFQSImJmIoKX0sITEpO2EuYWRkRXZlbnRMaXN0ZW5lcigiRE9NRm9jdXNPdXQiLGZ1bmN0aW9uKGQpe2QudGFyZ2V0JiZkLnRhcmdldC50YWdOYW1lPT0iVEVYVEFSRUEiJiZjKCl9LCExKX07Xy5FTT1mdW5jdGlvbihhLGIsYyxkLGUpe3ZhciBmPV8uRTVlKGEpO0M1ZShmLGIsYyxkKTtlJiZGNWUoYSxmdW5jdGlvbigpe0M1ZShmLGIsYyxkKX0sZnVuY3Rpb24oKXtfLkQ1ZShmLGIsYyxkKX0pfTtHNWU9L0Nocm9tZVwvKFswLTkuXSspLzsKXy5INWU9ZnVuY3Rpb24oYSl7cmV0dXJuIGZ1bmN0aW9uKGIpe2IudG91Y2hlcz1bXTtiLnRhcmdldFRvdWNoZXM9W107Yi5jaGFuZ2VkVG91Y2hlcz1bXTtiLnR5cGUhPV8ueTVlJiYoYi50b3VjaGVzWzBdPWIsYi50YXJnZXRUb3VjaGVzWzBdPWIpO2IuY2hhbmdlZFRvdWNoZXNbMF09YjthKGIpfX07STVlPWZ1bmN0aW9uKGEpe3ZhciBiO2lmKGI9Xy5zNWUoKSYmXy5sYShuYXZpZ2F0b3IudXNlckFnZW50LCJDaHJvbWUvIikpYj1HNWUuZXhlYyhuYXZpZ2F0b3IudXNlckFnZW50KSxiPSsoYj9iWzFdOiIiKS5zcGxpdCgiLiIpWzBdPT0xODtyZXR1cm4gYj9uZXcgXy5LZChhLmNsaWVudFgsYS5wYWdlWS13aW5kb3cuc2Nyb2xsWSk6bmV3IF8uS2QoYS5jbGllbnRYLGEuY2xpZW50WSl9OwpMNWU9ZnVuY3Rpb24oYSl7aWYoIShEYXRlLm5vdygpLUo1ZT4yNTAwKSl7dmFyIGI9STVlKGEpO2lmKCEoYi54PDEmJmIueTwxKSl7Zm9yKGxldCBjPTA7YzxGTS5sZW5ndGg7Yys9MilpZihNYXRoLmFicyhiLngtRk1bY10pPDI1JiZNYXRoLmFicyhiLnktRk1bYysxXSk8MjUpe0ZNLnNwbGljZShjLGMrMik7cmV0dXJufWEuc3RvcFByb3BhZ2F0aW9uKCk7YS5wcmV2ZW50RGVmYXVsdCgpOyhhPUs1ZSkmJmEoKX19fTtNNWU9ZnVuY3Rpb24oYSl7dmFyIGI9STVlKChhLnRvdWNoZXN8fFthXSlbMF0pO0ZNLnB1c2goYi54LGIueSk7d2luZG93LnNldFRpbWVvdXQoZnVuY3Rpb24oKXt2YXIgYz1iLngsZD1iLnk7Zm9yKGxldCBlPTA7ZTxGTS5sZW5ndGg7ZSs9MilpZihGTVtlXT09YyYmRk1bZSsxXT09ZCl7Rk0uc3BsaWNlKGUsZSsyKTticmVha31LNWU9dm9pZCAwfSwyNTAwKX07Cl8uTjVlPWZ1bmN0aW9uKGEsYil7SzVlPXZvaWQgMDtpZighRk0pe2RvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIixMNWUsITApO3ZhciBjPU01ZTtfLnU1ZXx8Xy52NWV8fChjPV8uSDVlKGMpKTtfLkVNKGRvY3VtZW50LF8udzVlLGMsITAsITApO0ZNPVtdfUo1ZT1EYXRlLm5vdygpO2ZvcihjPTA7YzxGTS5sZW5ndGg7Yys9MilpZihNYXRoLmFicyhhLUZNW2NdKTwyNSYmTWF0aC5hYnMoYi1GTVtjKzFdKTwyNSl7Rk0uc3BsaWNlKGMsYysyKTticmVha319Owp9Y2F0Y2goZSl7Xy5fRHVtcEV4Y2VwdGlvbihlKX0KdHJ5ewp2YXIgUTVlLFI1ZSxVNWU7Xy5PNWU9ZnVuY3Rpb24oKXt0aGlzLm9hPVtdO3RoaXMua2E9W119O18uUDVlPWZ1bmN0aW9uKGEsYixjLGQpe2Eub2EubGVuZ3RoPWEua2EubGVuZ3RoPTA7YS5vYS5wdXNoKGIsZCk7YS5rYS5wdXNoKGMsZCl9O18uUzVlPWZ1bmN0aW9uKGEsYixjLGQpe3ZhciBlPWEub2FbYS5vYS5sZW5ndGgtMl0tYixmPWEua2FbYS5rYS5sZW5ndGgtMl0tYyxnPWEub2EsaD1hLndhO2gmJmUmJmcubGVuZ3RoPjImJmg+MF5lPjAmJmcuc3BsaWNlKDAsZy5sZW5ndGgtMik7Zz1hLmthOyhoPWEuQWEpJiZmJiZnLmxlbmd0aD4yJiZoPjBeZj4wJiZnLnNwbGljZSgwLGcubGVuZ3RoLTIpO1E1ZShhLm9hLGQpO1E1ZShhLmthLGQpO2Eub2EucHVzaChiLGQpO2Eua2EucHVzaChjLGQpO2Eud2E9ZTthLkFhPWY7cmV0dXJuIFI1ZShhLGIsYyxkKX07UTVlPWZ1bmN0aW9uKGEsYil7Zm9yKDthLmxlbmd0aCYmYi1hWzFdPjI1MHx8YS5sZW5ndGg+MTA7KWEuc3BsaWNlKDAsMil9OwpfLlQ1ZT1mdW5jdGlvbihhLGIsYyxkKXtpZihiIT09dm9pZCAwJiZjIT09dm9pZCAwJiZkKXJldHVybiBRNWUoYS5vYSxkKSxRNWUoYS5rYSxkKSxSNWUoYSxiLGMsZCl9O1I1ZT1mdW5jdGlvbihhLGIsYyxkKXtiPWEub2EubGVuZ3RoPyhiLWEub2FbMF0pLyhkLWEub2FbMV0pOjA7Yz1hLmthLmxlbmd0aD8oYy1hLmthWzBdKS8oZC1hLmthWzFdKTowO2I9VTVlKGEsYik7Yz1VNWUoYSxjKTtyZXR1cm4gbmV3IF8uS2QoYixjKX07VTVlPWZ1bmN0aW9uKGEsYil7dmFyIGM9TWF0aC5hYnMoYik7Yz41JiYoYz1hLmthLmxlbmd0aDw2PzE6NSk7cmV0dXJuIGMqKGI8MD8tMToxKX07Cn1jYXRjaChlKXtfLl9EdW1wRXhjZXB0aW9uKGUpfQp0cnl7Cl8uQ2hqPWZ1bmN0aW9uKGEsYj0hMSl7dmFyIGM9Xy5BaGouZ2V0KGEpO2lmKGMpe3ZhciBkPW51bGw7Zm9yKGxldCBlIG9mIGMpXy56bihlLnRhcmdldCxlLnR5cGUsZS5jYWxsYmFjayxiKSxkPWUudGFyZ2V0O18uQWhqLmRlbGV0ZShhKTtpZihiPV8uQmhqLmdldChhKSl7Zm9yKGxldCBlIG9mIGIpZSgpO18uQmhqLmRlbGV0ZShhKX1kJiYiX0dUTF8iaW4gZCYmXy5EYShkLl9HVExfLGEpfX07Xy5HaGo9ZnVuY3Rpb24oKXtEaGp8fChEaGo9Xy5FaGouR2koKXx8bmV3IEZoaik7cmV0dXJuIERoan07Xy5IaGo9ZnVuY3Rpb24oYSxiKXtyZXR1cm4gXy5HaGooKS5sM2EoYSxiKX07Xy5JaGo9ZnVuY3Rpb24oYSxiLGMsZCxlLGYsZyxoKXtyZXR1cm4gXy5HaGooKS5rM2EoYSxiLGMsZCxlLGYsZyxoKX07Xy5BaGo9bmV3IE1hcDtfLkJoaj1uZXcgTWFwO3ZhciBEaGosRmhqO0Roaj12b2lkIDA7Xy5FaGo9bmV3IF8uYW87RmhqPWNsYXNze2wzYSgpe3JldHVybiJERUZBVUxUX0lEIn1rM2EoKXtyZXR1cm4iREVGQVVMVF9JRCJ9Q3RhKCl7cmV0dXJuIkRFRkFVTFRfSUQifX07CnZhciBKaGosS2hqLE9oajtfLlBYPWZ1bmN0aW9uKGEsYixjLGQpe3ZhciBlPWY9PmMoZi5qZyk7Xy5oZShhLGIsZSxkfHwhMSk7cmV0dXJuIG5ldyBKaGooYSxiLGUpfTtfLkxoaj1mdW5jdGlvbihhLGIsYyl7dmFyIGQ9Imd0IitLaGorKztfLkFoai5zZXQoZCxiKTtjJiZfLkJoai5zZXQoZCxjKTsiX0dUTF8iaW4gYXx8KGEuX0dUTF89W10pO2EuX0dUTF8ucHVzaChkKTtyZXR1cm4gZH07Xy5NaGo9ZnVuY3Rpb24oYSl7cmV0dXJuIWF8fGEueD09PTAmJmEueT09PTA/MDpNYXRoLmFicyhhLngpPk1hdGguYWJzKGEueSk/YS54PjA/Njo0OmEueT4wPzU6M307Xy5OaGo9ZnVuY3Rpb24oYSxiKXtyZXR1cm4gYj09PTB8fGI8PTImJmElMj09PWIlMj8hMDphPT09Yn07SmhqPWNsYXNze2NvbnN0cnVjdG9yKGEsYixjKXt0aGlzLnRhcmdldD1hO3RoaXMudHlwZT1iO3RoaXMuY2FsbGJhY2s9Y319O0toaj0wOwpPaGo9Y2xhc3N7Y29uc3RydWN0b3IoYSxiLGMpe3RoaXMudHlwZT1hO3RoaXMua2E9Yjt0aGlzLnRhcmdldD1jfX07Xy5QaGo9Y2xhc3MgZXh0ZW5kcyBPaGp7Y29uc3RydWN0b3IoYSxiLGMsZCxlLGYsZyxoLGssbSl7c3VwZXIoMyxhLGIpO3RoaXMuZGlyZWN0aW9uPWM7dGhpcy50b3VjaGVzPWQ7dGhpcy5zdGFydFg9ZTt0aGlzLnN0YXJ0WT1mO3RoaXMueD1nO3RoaXMueT1oO3RoaXMudmVsb2NpdHlYPWs7dGhpcy52ZWxvY2l0eVk9bX1iamEoKXtyZXR1cm4gdGhpcy5kaXJlY3Rpb24lMj09PTF9fTtfLlFoaj1jbGFzcyBleHRlbmRzIE9oantjb25zdHJ1Y3RvcihhLGIsYyxkKXtzdXBlcigxLGEsYik7dGhpcy54PWM7dGhpcy55PWR9fTtfLlJoaj1jbGFzcyBleHRlbmRzIE9oantjb25zdHJ1Y3RvcihhLGIsYyxkLGUsZil7c3VwZXIoYSxiLGMpO3RoaXMudG91Y2hlcz1kO3RoaXMueD1lO3RoaXMueT1mfX07Cl8uWm4oXy5FaGosY2xhc3N7bDNhKGEsYil7dmFyIGM9W18uUFgoYSwiY2xpY2siLGZ1bmN0aW9uKGQpe2IobmV3IF8uUWhqKGQsYSxkLnNjcmVlblgsZC5zY3JlZW5ZKSl9KSxfLlBYKGEsImtleWRvd24iLGZ1bmN0aW9uKGQpe3ZhciBlPWQud2hpY2h8fGQua2V5Q29kZXx8ZC5rZXksZj1hLnRhZ05hbWUudG9VcHBlckNhc2UoKTtmPT09IlRFWFRBUkVBInx8Zj09PSJCVVRUT04ifHxmPT09IklOUFVUInx8YS5pc0NvbnRlbnRFZGl0YWJsZXx8ZC5jdHJsS2V5fHxkLnNoaWZ0S2V5fHxkLmFsdEtleXx8ZC5tZXRhS2V5fHxlIT09MTMmJmUhPT0zMiYmZSE9PTN8fChlPT09MzImJmQucHJldmVudERlZmF1bHQoKSxiKGQpKX0pXTtyZXR1cm4gXy5MaGooYSxjKX1rM2EoYSxiLGMsZCxlLGYsZyl7ZnVuY3Rpb24gaChKKXtKPUouamc7aWYoSCl7cj1KLnNjcmVlblg7eD1KLnNjcmVlblk7dmFyIE49Xy5TNWUoQixyLHgsSi50aW1lU3RhbXApO3o9Xy5NaGooTik7Xy5OaGooeixtKSYmYihuZXcgXy5QaGooSiwKYSx6LDEsbixwLHIseCxOLngsTi55KSl9fWZ1bmN0aW9uIGsoSil7Sj1KLmpnO2lmKF8uTmhqKHosbSkpe18uem4oYSwibW91c2Vtb3ZlIixoKTtfLnpuKGEsIm1vdXNldXAiLGspO18uem4oYSwibW91c2VvdXQiLGspO3ZhciBOPV8uVDVlKEIscix4LEoudGltZVN0YW1wKTtkJiZkKG5ldyBfLlBoaihKLGEseiwxLG4scCxKLnNjcmVlblgsSi5zY3JlZW5ZLE4ueCxOLnkpKTtnfHxfLk41ZShuLHApfX12YXIgbT1lfHwwLG4scCxyLHgseixCPW5ldyBfLk81ZSxIPSExO2U9W18uUFgoYSwibW91c2Vkb3duIixmdW5jdGlvbihKKXtuPXI9Si5zY3JlZW5YO3A9eD1KLnNjcmVlblk7Xy5QNWUoQixuLHAsSi50aW1lU3RhbXApO2MmJmMobmV3IF8uUGhqKEosYSwwLDEsbixwLHIseCwwLDApKTtfLmhlKGEsIm1vdXNlbW92ZSIsaCk7Xy5oZShhLCJtb3VzZXVwIixrKTtfLmhlKGEsIm1vdXNlb3V0IixrKX0pLF8uUFgoZG9jdW1lbnQuYm9keSwibW91c2Vkb3duIiwoKT0+e0g9ITB9KSxfLlBYKGRvY3VtZW50LmJvZHksCiJtb3VzZXVwIiwoKT0+e0g9ITF9KV07cmV0dXJuIF8uTGhqKGEsZSl9Q3RhKGEsYixjLGQsZSxmKXtmdW5jdGlvbiBnKHApe3A9cC5qZztuJiZiJiZiKG5ldyBfLlJoaig2LHAsYSwxLHAuc2NyZWVuWCxwLnNjcmVlblkpKX1mdW5jdGlvbiBoKHApe3A9cC5qZztfLnpuKGEsIm1vdXNlbW92ZSIsZyk7Xy56bihhLCJtb3VzZXVwIixoKTtfLnpuKGEsIm1vdXNlb3V0IixoKTtkJiZkKG5ldyBfLlJoaig3LHAsYSwxLHAuc2NyZWVuWCxwLnNjcmVlblkpKTtmfHxfLk41ZShrLG0pfXZhciBrLG0sbj0hMTtlPVtfLlBYKGEsIm1vdXNlZG93biIsZnVuY3Rpb24ocCl7az1wLnNjcmVlblg7bT1wLnNjcmVlblk7YyYmYyhuZXcgXy5SaGooNSxwLGEsMSxrLG0pKTtfLmhlKGEsIm1vdXNlbW92ZSIsZyk7Xy5oZShhLCJtb3VzZXVwIixoKTtfLmhlKGEsIm1vdXNlb3V0IixoKX0pLF8uUFgoZG9jdW1lbnQuYm9keSwibW91c2Vkb3duIiwoKT0+e249ITB9KSxfLlBYKGRvY3VtZW50LmJvZHksIm1vdXNldXAiLAooKT0+e249ITF9KV07cmV0dXJuIF8uTGhqKGEsZSl9fSk7Cn1jYXRjaChlKXtfLl9EdW1wRXhjZXB0aW9uKGUpfQp0cnl7Cl8udSgid3cwNERmIik7CnZhciBlVWwsZ1VsLGZVbCxoVWwsalVsLG9VbCxtVWwsbFVsLG5VbCxyVWwscVVsLHRVbCxzVWwsdVVsLHdVbCx2VWwseFVsLHlVbCxBVWwselVsLEJVbCxDVWwsRVVsLEdVbCxGVWw7ZVVsPWZ1bmN0aW9uKGEpe3R5cGVvZiBhPT09ImZ1bmN0aW9uIj9hKCk6YS51bnN1YnNjcmliZSgpfTtnVWw9ZnVuY3Rpb24oYSl7cmV0dXJuIGEubGVuZ3RoPT09MD9mVWw6YS5sZW5ndGg9PT0xP2FbMF06ZnVuY3Rpb24oYil7cmV0dXJuIGEucmVkdWNlKChjLGQpPT5kKGMpLGIpfX07ZlVsPWZ1bmN0aW9uKGEpe3JldHVybiBhfTtoVWw9ZnVuY3Rpb24oYSl7cmV0dXJuIHR5cGVvZiBhPT09ImZ1bmN0aW9uIn07alVsPWZ1bmN0aW9uKGEsYixjLGQsZSl7cmV0dXJuIG5ldyBpVWwoYSxiLGMsZCxlKX07b1VsPWZ1bmN0aW9uKGEpe2lmKGE8MCl0aHJvdyBFcnJvcigicnYiKTtyZXR1cm4gYj0+a1VsKGIsbFVsKChjLGQpPT5kPT09YSksbVVsKCksblVsKCgpPT5FcnJvcigicnYiKSkpfTsKbVVsPWZ1bmN0aW9uKCl7cmV0dXJuIGE9Pm5ldyBwVWwoYj0+e3ZhciBjPTAsZD1qVWwoYixlPT57KytjPDE/Yi5uZXh0KGUpOihkLnVuc3Vic2NyaWJlKCksYi5uZXh0KGUpLGIuY29tcGxldGUoKSl9KTthLnN1YnNjcmliZShkKX0pfTtsVWw9ZnVuY3Rpb24oYSl7cmV0dXJuIGI9Pm5ldyBwVWwoYz0+e3ZhciBkPTA7Yi5zdWJzY3JpYmUoalVsKGMsZT0+e2EuY2FsbCh2b2lkIDAsZSxkKyspJiZjLm5leHQoZSl9KSl9KX07blVsPWZ1bmN0aW9uKGEpe3JldHVybiBiPT5uZXcgcFVsKGM9Pnt2YXIgZD0hMTtiLnN1YnNjcmliZShqVWwoYyxlPT57ZD0hMDtjLm5leHQoZSl9LCgpPT57ZD9jLmNvbXBsZXRlKCk6Yy5lcnJvcihhKCkpfSkpfSl9O3JVbD1mdW5jdGlvbihhKXtpZihhIGluc3RhbmNlb2YgcFVsKXJldHVybiBhO2lmKGEgaW5zdGFuY2VvZiBBcnJheSlyZXR1cm4gcVVsKGEpO3Rocm93IEVycm9yKCJzdmAiK2EpO307CnFVbD1mdW5jdGlvbihhKXtyZXR1cm4gbmV3IHBVbChiPT57Zm9yKGxldCBjPTA7YzxhLmxlbmd0aCYmIWIuY2xvc2VkO2MrKyliLm5leHQoYVtjXSk7Yi5jb21wbGV0ZSgpfSl9O3RVbD1mdW5jdGlvbihhLGIsYz0hMSxkKXtyZXR1cm4gbmV3IHBVbChlPT57ZnVuY3Rpb24gZihoLC4uLmspe3JlcXVlc3RBbmltYXRpb25GcmFtZSgoKT0+e2subGVuZ3RoP2UubmV4dChBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChbaCwuLi5rXSkpOmUubmV4dChoKX0pfWZ1bmN0aW9uIGcoaCwuLi5rKXtrLmxlbmd0aD9lLm5leHQoQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoW2gsLi4ua10pKTplLm5leHQoaCl9c1VsKGEsYixjP2Y6ZyxlLGQpfSl9O3NVbD1mdW5jdGlvbihhLGIsYyxkLGUpe2EuYWRkRXZlbnRMaXN0ZW5lcihiLGMsZSk7ZC5hZGQoKCk9PnthLnJlbW92ZUV2ZW50TGlzdGVuZXIoYixjLGUpfSl9Owp1VWw9ZnVuY3Rpb24oYSl7cmV0dXJuIGI9Pm5ldyBwVWwoYz0+e3ZhciBkPTA7Yi5zdWJzY3JpYmUoalVsKGMsZT0+e2MubmV4dChhKGUsZCsrKSl9KSl9KX07d1VsPWZ1bmN0aW9uKC4uLmEpe2E9YS5sZW5ndGg9PT0xJiZBcnJheS5pc0FycmF5KGFbMF0pP2FbMF06YTtyZXR1cm4gYS5sZW5ndGg9PT0xP3JVbChhWzBdKTpuZXcgcFVsKHZVbChhKSl9O3ZVbD1mdW5jdGlvbihhKXtyZXR1cm4gYj0+e3ZhciBjPVtdO2ZvcihsZXQgZD0wO2MmJiFiLmNsb3NlZCYmZDxhLmxlbmd0aDtkKyspYy5wdXNoKHJVbChhW2RdKS5zdWJzY3JpYmUoalVsKGIsZT0+e2lmKGMpe2ZvcihsZXQgZj0wO2Y8Yy5sZW5ndGg7ZisrKWYhPT1kJiZjW2ZdLnVuc3Vic2NyaWJlKCk7Yz1udWxsfWIubmV4dChlKX0pKSl9fTsKeFVsPWZ1bmN0aW9uKGEpe3JldHVybiBiPT5uZXcgcFVsKGM9Pnt2YXIgZD1udWxsLGU9MDtiLnN1YnNjcmliZShqVWwoYyxmPT57dmFyIGc7KGc9ZCk9PW51bGx8fGcudW5zdWJzY3JpYmUoKTtnPWUrKztyVWwoYShmLGcpKS5zdWJzY3JpYmUoZD1qVWwoYyx2b2lkIDAsKCk9PntkPW51bGx9KSl9LCgpPT57fSkpfSl9O3lVbD1mdW5jdGlvbihhKXtyZXR1cm4gYj0+bmV3IHBVbChjPT57clVsKGEpLnN1YnNjcmliZShqVWwoYywoKT0+e2MuY29tcGxldGUoKX0sKCk9Pnt9KSk7IWMuY2xvc2VkJiZiLnN1YnNjcmliZShjKX0pfTsKQVVsPWZ1bmN0aW9uKGEpe3ZhciBiPXR5cGVvZiBhPT09ImZ1bmN0aW9uIj97bmV4dDphfTphO3JldHVybiBiP2M9Pm5ldyBwVWwoZD0+e3ZhciBlOyhlPWIuc3Vic2NyaWJlKT09bnVsbHx8ZS5jYWxsKGIpO3ZhciBmPSEwO2Muc3Vic2NyaWJlKGpVbChkLGc9Pnt2YXIgaDsoaD1iLm5leHQpPT1udWxsfHxoLmNhbGwoYixnKTtkLm5leHQoZyl9LCgpPT57Zj0hMTt2YXIgZzsoZz1iLmNvbXBsZXRlKT09bnVsbHx8Zy5jYWxsKGIpO2QuY29tcGxldGUoKX0sZz0+e2Y9ITE7dmFyIGg7KGg9Yi5lcnJvcik9PW51bGx8fGguY2FsbChiLGcpO2QuZXJyb3IoZyl9LCgpPT57aWYoZil7bGV0IGg7KGg9Yi51bnN1YnNjcmliZSk9PW51bGx8fGguY2FsbChiKX12YXIgZzsoZz1iLnRLKT09bnVsbHx8Zy5jYWxsKGIpfSkpfSk6elVsfTt6VWw9ZnVuY3Rpb24oYSl7cmV0dXJuIGF9O0JVbD1mdW5jdGlvbihhKXtyZXR1cm57eDphLmNoYW5nZWRUb3VjaGVzWzBdLmNsaWVudFgseTphLmNoYW5nZWRUb3VjaGVzWzBdLmNsaWVudFl9fTsKQ1VsPWZ1bmN0aW9uKGEpe3JldHVybiBPYmplY3QuYXNzaWduKHt9LEJVbChhKSx7dGFyZ2V0Ol8uUmcoYS50YXJnZXQpP2EudGFyZ2V0OnZvaWQgMH0pfTtFVWw9ZnVuY3Rpb24oKXtyZXR1cm57c3hhOk1hdGguZmxvb3Iod2luZG93LnNjcm9sbFkpPD1EVWwsWEhhOmRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5zY3JvbGxIZWlnaHQtd2luZG93LmlubmVySGVpZ2h0LU1hdGguY2VpbCh3aW5kb3cuc2Nyb2xsWSk8PURVbCxXSGE6TWF0aC5mbG9vcih3aW5kb3cuc2Nyb2xsWCk8PURVbCxWSGE6ZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LnNjcm9sbFdpZHRoLXdpbmRvdy5pbm5lcldpZHRoLU1hdGguY2VpbCh3aW5kb3cuc2Nyb2xsWCk8PURVbH19OwpHVWw9ZnVuY3Rpb24oYSxiKXt2YXIgYz0wLGQ9MCxlPTAsZj0wO2ZvcihiPWIhPW51bGw/YjphO2ImJmIhPT1hLnBhcmVudEVsZW1lbnQ7KXtsZXQge292ZXJmbG93WDpnLG92ZXJmbG93WTpofT1nZXRDb21wdXRlZFN0eWxlKGIpO2Iuc2Nyb2xsSGVpZ2h0PmIuY2xpZW50SGVpZ2h0JiZGVWwoYixoKSYmKGMrPWIuc2Nyb2xsVG9wLGQrPWIuc2Nyb2xsSGVpZ2h0LWIuY2xpZW50SGVpZ2h0LWIuc2Nyb2xsVG9wKTtiLnNjcm9sbFdpZHRoPmIuY2xpZW50V2lkdGgmJkZVbChiLGcpJiYoZSs9Yi5zY3JvbGxMZWZ0LGYrPWIuc2Nyb2xsV2lkdGgtYi5jbGllbnRXaWR0aC1iLnNjcm9sbExlZnQpO2I9Yi5wYXJlbnRFbGVtZW50fXJldHVybntzeGE6Yzw9RFVsLFhIYTpkPD1EVWwsV0hhOmU8PURVbCxWSGE6Zjw9RFVsfX07CkZVbD1mdW5jdGlvbihhLGIpe3JldHVybiBiPT09InNjcm9sbCJ8fGI9PT0iYXV0byI/ITA6KGE9PT1kb2N1bWVudC5kb2N1bWVudEVsZW1lbnR8fGE9PT1kb2N1bWVudC5ib2R5KSYmYj09PSJ2aXNpYmxlIn07Xy5IVWw9Y2xhc3N7Y29uc3RydWN0b3IoKXt0aGlzLmNsb3NlZD0hMTt0aGlzLm9hPW51bGx9dW5zdWJzY3JpYmUoKXtpZighdGhpcy5jbG9zZWQpe3RoaXMuY2xvc2VkPSEwO2xldCBhPXRoaXMub2E7aWYoYSl7dGhpcy5vYT1udWxsO2ZvcihsZXQgYiBvZiBhKXRyeXtlVWwoYil9Y2F0Y2goYyl7fX19fWFkZChhKXthJiZhIT09dGhpcyYmKHRoaXMuY2xvc2VkP2VVbChhKTooYSYmImFkZCJpbiBhJiZhLmFkZCgoKT0+e3RoaXMucmVtb3ZlKGEpfSksdGhpcy5vYSE9bnVsbHx8KHRoaXMub2E9bmV3IFNldCksdGhpcy5vYS5hZGQoYSkpKX1yZW1vdmUoYSl7dmFyIGI7KGI9dGhpcy5vYSk9PW51bGx8fGIuZGVsZXRlKGEpfX07dmFyIElVbD1jbGFzcyBleHRlbmRzIF8uSFVse2NvbnN0cnVjdG9yKGEpe3N1cGVyKCk7dGhpcy5rYT0hMTt0aGlzLmRlc3RpbmF0aW9uPWEgaW5zdGFuY2VvZiBJVWw/YTpuZXcgSlVsKCFhfHxoVWwoYSk/e25leHQ6YSE9bnVsbD9hOnZvaWQgMH06YSk7YSYmaFVsKGEudW5zdWJzY3JpYmUpJiZoVWwoYS5hZGQpJiZhLmFkZCh0aGlzKX1uZXh0KGEpe3RoaXMua2F8fHRoaXMuQmEoYSl9ZXJyb3IoYSl7YSYmIXRoaXMua2EmJih0aGlzLmthPSEwLHRoaXMuQWEoYSkpfWNvbXBsZXRlKCl7dGhpcy5rYXx8KHRoaXMua2E9ITAsdGhpcy53YSgpKX11bnN1YnNjcmliZSgpe3RoaXMuY2xvc2VkfHwodGhpcy5rYT0hMCxzdXBlci51bnN1YnNjcmliZSgpLHRoaXMuZGVzdGluYXRpb249bnVsbCl9QmEoYSl7dmFyIGIsYzsoYz0oYj10aGlzLmRlc3RpbmF0aW9uKS5uZXh0KT09bnVsbHx8Yy5jYWxsKGIsYSl9QWEoYSl7dHJ5e2xldCBiLGM7KGM9KGI9dGhpcy5kZXN0aW5hdGlvbikuZXJyb3IpPT0KbnVsbHx8Yy5jYWxsKGIsYSl9ZmluYWxseXt0aGlzLnVuc3Vic2NyaWJlKCl9fXdhKCl7dHJ5e2xldCBhLGI7KGI9KGE9dGhpcy5kZXN0aW5hdGlvbikuY29tcGxldGUpPT1udWxsfHxiLmNhbGwoYSl9ZmluYWxseXt0aGlzLnVuc3Vic2NyaWJlKCl9fX0sSlVsPWNsYXNze2NvbnN0cnVjdG9yKGEpe3RoaXMua2E9YX1uZXh0KGEpe3ZhciBiPXRoaXMua2E7aWYoYi5uZXh0KXRyeXtiLm5leHQoYSl9Y2F0Y2goYyl7fX1lcnJvcihhKXt2YXIgYj10aGlzLmthO2lmKGIuZXJyb3IpdHJ5e2IuZXJyb3IoYSl9Y2F0Y2goYyl7fX1jb21wbGV0ZSgpe3ZhciBhPXRoaXMua2E7aWYoYS5jb21wbGV0ZSl0cnl7YS5jb21wbGV0ZSgpfWNhdGNoKGIpe319fTt2YXIga1VsPWZ1bmN0aW9uKGEsLi4uYil7cmV0dXJuIGdVbChiKShhKX0scFVsPWNsYXNze2NvbnN0cnVjdG9yKGEpe2EmJih0aGlzLmthPWEpfWthKCl7fXN1YnNjcmliZShhKXthPWEgaW5zdGFuY2VvZiBJVWw/YTpuZXcgSVVsKGEpO2EuYWRkKHRoaXMua2EoYSkpO3JldHVybiBhfX07dmFyIGlVbD1jbGFzcyBleHRlbmRzIElVbHtjb25zdHJ1Y3RvcihhLGIsYyxkLGUpe3N1cGVyKGEpO3RoaXMuRWE9ZTt0aGlzLkJhPWI/ZnVuY3Rpb24oZil7dHJ5e2IoZil9Y2F0Y2goZyl7YS5lcnJvcihnKX19OnN1cGVyLkJhO3RoaXMuQWE9ZD9mdW5jdGlvbihmKXt0cnl7ZChmKX1jYXRjaChnKXthLmVycm9yKGcpfWZpbmFsbHl7dGhpcy51bnN1YnNjcmliZSgpfX06c3VwZXIuQWE7dGhpcy53YT1jP2Z1bmN0aW9uKCl7dHJ5e2MoKX1jYXRjaChmKXthLmVycm9yKGYpfWZpbmFsbHl7dGhpcy51bnN1YnNjcmliZSgpfX06c3VwZXIud2F9dW5zdWJzY3JpYmUoKXt2YXIgYT10aGlzLmNsb3NlZDtzdXBlci51bnN1YnNjcmliZSgpO3ZhciBiO2F8fChiPXRoaXMuRWEpIT1udWxsJiZiLmNhbGwodGhpcyl9fTt2YXIgRFVsLExVbCxNVWwsTlVsLE9VbCxLVWw7RFVsPV8ucDZjPzA6ODsKTFVsPWZ1bmN0aW9uKGEsYixjLGQsZSxmKXt2YXIgZz1lLTE7cmV0dXJuIHhVbChoPT5rVWwoYyxvVWwoZyksQVVsKCgpPT57YS5rYT1mKGIsaC50YXJnZXQpO3ZhciBrO3ZhciBtPWgudGFyZ2V0O2lmKG0pZm9yKGs9W107bSYmbSE9PWRvY3VtZW50LmJvZHk7KXtiOntpZighKG0uc2Nyb2xsSGVpZ2h0Pm0uY2xpZW50SGVpZ2h0fHxtLnNjcm9sbFdpZHRoPm0uY2xpZW50V2lkdGgpKXt2YXIgbj0hMTticmVhayBifWxldCB7b3ZlcmZsb3dYOnAsb3ZlcmZsb3dZOnJ9PWdldENvbXB1dGVkU3R5bGUobSk7bj1GVWwobSxwKXx8RlVsKG0scil9aWYobil7bj1tO2xldCBwPW4uc3R5bGUscj1nZXRDb21wdXRlZFN0eWxlKG4pO2sucHVzaCh7ZWxlbWVudDpuLHNBYzp7b3ZlcmZsb3dYOnAub3ZlcmZsb3dYLG92ZXJmbG93WTpwLm92ZXJmbG93WX0sV29jOntvdmVyZmxvd1g6ci5vdmVyZmxvd1gsb3ZlcmZsb3dZOnIub3ZlcmZsb3dZfX0pfW09bS5wYXJlbnRFbGVtZW50fWVsc2Ugaz1bXTthLkJhPQprfSksdVVsKGs9Pih7eDprLngseTprLnksYXhpczpLVWwoaCxrLGQpLmF4aXMsZGlyZWN0aW9uOktVbChoLGssZCkuZGlyZWN0aW9ufSkpKSl9OwpNVWw9ZnVuY3Rpb24oYSxiLGMsZCl7aWYoZClkPXtob3Jpem9udGFsVmVsb2NpdHk6MCx2ZXJ0aWNhbFZlbG9jaXR5OjB9O2Vsc2V7dmFyIGU9ZD0wO2Eud2EmJmEuRWEmJihlPXBlcmZvcm1hbmNlLm5vdygpLWEuRWEsZD0oYy5ob3Jpem9udGFsLWEud2EuaG9yaXpvbnRhbCkvZSxlPShhLndhLnZlcnRpY2FsLWMudmVydGljYWwpL2UpO2Eud2E9YzthLkVhPXBlcmZvcm1hbmNlLm5vdygpO2Q9e2hvcml6b250YWxWZWxvY2l0eTpkLHZlcnRpY2FsVmVsb2NpdHk6ZX19dmFyIHtob3Jpem9udGFsVmVsb2NpdHk6Zix2ZXJ0aWNhbFZlbG9jaXR5Omd9PWQ7cmV0dXJue2F4aXM6Yi5heGlzLGRpcmVjdGlvbjpiLmRpcmVjdGlvbixob3Jpem9udGFsRGlzdGFuY2U6Yy5ob3Jpem9udGFsLHZlcnRpY2FsRGlzdGFuY2U6LWMudmVydGljYWwsaG9yaXpvbnRhbFZlbG9jaXR5OmYsdmVydGljYWxWZWxvY2l0eTpnLGpNYTphLmthLFhEYjp7eDpiLngseTpiLnl9fX07Ck5VbD1mdW5jdGlvbihhLGIpe3JldHVybntob3Jpem9udGFsOmIueC1hLngsdmVydGljYWw6Yi55LWEueX19O09VbD1mdW5jdGlvbihhLGIpe2Eub2E9Xy5JaGooYixjPT57Yy5rYS5jYW5jZWxhYmxlJiYoYy5rYS5wcmV2ZW50RGVmYXVsdCgpLGMua2Euc3RvcFByb3BhZ2F0aW9uKCkpfSx2b2lkIDAsdm9pZCAwLHZvaWQgMCx2b2lkIDAsdm9pZCAwLHtwYXNzaXZlOiExfSl9O0tVbD1mdW5jdGlvbihhLGIsYyl7dmFyIHtob3Jpem9udGFsOmQsdmVydGljYWw6ZX09TlVsKGEsYik7cmV0dXJuIE1hdGguYWJzKGQpPk1hdGguYWJzKGUpKmM/ZD49MD97YXhpczoieCIsZGlyZWN0aW9uOjR9OntheGlzOiJ4IixkaXJlY3Rpb246M306TWF0aC5hYnMoZSk+TWF0aC5hYnMoZCkqYz9lPj0wP3theGlzOiJ5IixkaXJlY3Rpb246Mn06e2F4aXM6InkiLGRpcmVjdGlvbjoxfTp7YXhpczoidW5jYXRlZ29yaXplZCIsZGlyZWN0aW9uOjB9fTsKXy5QVWw9Y2xhc3MgZXh0ZW5kcyBfLnNve3N0YXRpYyBRYSgpe3JldHVybntzZXJ2aWNlOnt9fX1jb25zdHJ1Y3Rvcigpe3N1cGVyKCk7dGhpcy5BYT0hMDt0aGlzLm9hPSIiO3RoaXMua2E9e3N4YTohMSxYSGE6ITEsV0hhOiExLFZIYTohMX07dGhpcy5FYT10aGlzLndhPW51bGw7dGhpcy5CYT1bXTt0aGlzLkdhPSExfWhtYih7RkViOmEsa2tiOmIsdFJjOmMsREhjOmQsRFhhOmUsQ1hhOmYsb3B0aW9uczpnfSl7dmFyIGgsaz0oaD1nPT1udWxsP3ZvaWQgMDpnLktfYSkhPW51bGw/aDohMCxtLG49KG09Zz09bnVsbD92b2lkIDA6Zy5NZGIpIT1udWxsP206ITAscD1nPT1udWxsP3ZvaWQgMDpnLnVNYTtnPShnPT1udWxsP3ZvaWQgMDpnLmZCYik9PT0yP0VVbDpHVWw7aD0hXy5SdGQ7bT1rVWwodFVsKGEsInRvdWNoc3RhcnQiLGgpLHVVbChDVWwpKTt2YXIgcj1fLnU2Yz97cGFzc2l2ZTohMH06dm9pZCAwLHg9a1VsKHRVbChhLCJ0b3VjaG1vdmUiLCEwLHIpLHVVbChCVWwpKSx6PWtVbCh0VWwoYSwKInRvdWNoY2FuY2VsIixoLHIpLHVVbChCVWwpKSxCPWtVbCh0VWwoYSwidG91Y2hlbmQiLGgsciksdVVsKEJVbCkpO3JldHVybiBrVWwoa1VsKG0sTFVsKHRoaXMsYSx4LGIsYyE9bnVsbD9jOjEsZykpLEFVbChIPT57cCYmcC5sZW5ndGghPT0wJiYhcC5pbmNsdWRlcyhILmRpcmVjdGlvbil8fGQhPW51bGwmJmQoTVVsKHRoaXMsSCx7aG9yaXpvbnRhbDowLHZlcnRpY2FsOjB9LCEwKSl9KSx4VWwoSD0+a1VsKHgsdVVsKEo9Pk5VbChILEopKSxBVWwoSj0+e2lmKCFwfHxwLmxlbmd0aD09PTB8fHAuaW5jbHVkZXMoSC5kaXJlY3Rpb24pKXtpZihrJiZ0aGlzLkFhKXt2YXIgTj1ILmRpcmVjdGlvbjtpZihOPT09MiYmdGhpcy5rYS5zeGF8fE49PT0xJiZ0aGlzLmthLlhIYXx8Tj09PTQmJnRoaXMua2EuV0hhfHxOPT09MyYmdGhpcy5rYS5WSGEpZm9yKGxldCB7ZWxlbWVudDpRLFdvYzpafW9mIHRoaXMuQmEpRlVsKFEsWi5vdmVyZmxvd1gpJiYoUS5zdHlsZS5vdmVyZmxvd1g9ImhpZGRlbiIpLApGVWwoUSxaLm92ZXJmbG93WSkmJihRLnN0eWxlLm92ZXJmbG93WT0iaGlkZGVuIik7aWYoZG9jdW1lbnQuYm9keS5zdHlsZS5vdmVyZmxvdz09PSJoaWRkZW4iKXRoaXMuR2E9ITA7ZWxzZSBpZighd2luZG93LnZpc3VhbFZpZXdwb3J0fHx3aW5kb3cudmlzdWFsVmlld3BvcnQuc2NhbGU+PTEpZG9jdW1lbnQuYm9keS5zdHlsZS5vdmVyZmxvdz0iaGlkZGVuIjt0aGlzLkFhPSExfW4mJiF0aGlzLm9hJiZPVWwodGhpcyxhKTtlPT1udWxsfHxlKE1VbCh0aGlzLEgsSiwhMSkpfX0pLHlVbChrVWwod1VsKEIseiksdVVsKEo9Pk5VbChILEopKSxBVWwoSj0+e2lmKCFwfHxwLmxlbmd0aD09PTB8fHAuaW5jbHVkZXMoSC5kaXJlY3Rpb24pKWsmJiF0aGlzLkFhJiZ0aGlzLkxIKCksdGhpcy5vYSYmKF8uQ2hqKHRoaXMub2EsITEpLHRoaXMub2E9IiIpLGY9PW51bGx8fGYoTVVsKHRoaXMsSCxKLCExKSl9KSkpKSkpLnN1YnNjcmliZSgpfUxIKCl7Zm9yKGxldCB7ZWxlbWVudDphLHNBYzpifW9mIHRoaXMuQmEpYS5zdHlsZS5vdmVyZmxvd1g9CmIub3ZlcmZsb3dYLGEuc3R5bGUub3ZlcmZsb3dZPWIub3ZlcmZsb3dZO3RoaXMuQmE9W107dGhpcy5HYXx8d2luZG93LnZpc3VhbFZpZXdwb3J0JiYhKHdpbmRvdy52aXN1YWxWaWV3cG9ydC5zY2FsZT49MSl8fChkb2N1bWVudC5ib2R5LnN0eWxlLm92ZXJmbG93PSIiKTt0aGlzLkdhPSExO3RoaXMuQWE9ITB9fTtfLmFnKF8uVFlhLF8uUFVsKTtfLlZUbChfLlBVbCk7CgpfLnYoKTsKfWNhdGNoKGUpe18uX0R1bXBFeGNlcHRpb24oZSl9CnRyeXsKXy51KCJwajgybGUiKTsKXy5RVWw9bmV3IF8uVGYoXy5VWWEpOwpfLnYoKTsKfWNhdGNoKGUpe18uX0R1bXBFeGNlcHRpb24oZSl9CnRyeXsKXy51KCJKWm1XOWUiKTsKdmFyIFJVbD1mdW5jdGlvbihhLGIpe3JldHVybigpPT57dmFyIGM9ZG9jdW1lbnQuZ2V0U2VsZWN0aW9uKCk7YS5SYT1jJiZjLnRvU3RyaW5nKCkubGVuZ3RoPjA/ITA6ITE7YS5PYT1iLmNsaWVudFdpZHRoO2EuTmE9Yi5jbGllbnRIZWlnaHR9fSxYVWw9ZnVuY3Rpb24oYSxiLGMpe3JldHVybiBhc3luYyBkPT57dmFyIGU9KDAsXy5NZikoKSxmPWUoKTtlPWUoMSk7dHJ5e2lmKCFTVWwoYSxkKSl7dmFyIGcsaCxrPShoPShnPWEua2EpPT1udWxsP3ZvaWQgMDpnLmpIZCkhPW51bGw/aDouMjU7ZShhd2FpdCBmKFRVbChhLGIpKSk7dmFyIG09VVVsKGEsLWQudmVydGljYWxEaXN0YW5jZSxhLk5hKmspLG49VVVsKGEsZC5ob3Jpem9udGFsRGlzdGFuY2UsYS5PYSprKSxwPVZVbChhLG0pO2lmKGEud2EpYS53YS5vbk1vdmUoe3hXaXRoVGVuc2lvbjpuLHlXaXRoVGVuc2lvbjptLHNjYWxlOnAsYXhpczpkLmF4aXMsaG9yaXpvbnRhbERpc3RhbmNlOmQuaG9yaXpvbnRhbERpc3RhbmNlLHZlcnRpY2FsRGlzdGFuY2U6ZC52ZXJ0aWNhbERpc3RhbmNlLApob3Jpem9udGFsVmVsb2NpdHk6ZC5ob3Jpem9udGFsVmVsb2NpdHksdmVydGljYWxWZWxvY2l0eTpkLnZlcnRpY2FsVmVsb2NpdHksc3RhcnRlZEZyb21TY3JvbGxUb3A6ZC5qTWEuc3hhLHN0YXJ0WDpkLlhEYi54LHN0YXJ0WTpkLlhEYi55fSk7ZWxzZSBiLnN0eWxlLnRyYW5zZm9ybT1gc2NhbGUoJHtwfSkgdHJhbnNsYXRlKCR7bn1weCwgJHttfXB4KWA7Xy5yU2YmJiFhLklhJiZXVWwoYSxkKSYmKGEuSWE9ITAsXy5vc2UoYS5TYSxfLmxzZSkpO2lmKGMmJiFhLndhKXtjLnN0eWxlLnRyYW5zaXRpb258fHJlcXVlc3RBbmltYXRpb25GcmFtZSgoKT0+e2Muc3R5bGUudHJhbnNpdGlvbj0ib3BhY2l0eSAuNXMgZWFzZS1vdXQifSk7bGV0IHIseCx6PSh4PShyPWEua2EpPT1udWxsP3ZvaWQgMDpyLkZEZCkhPW51bGw/eDoiMC40IixCLEgsSj0oSD0oQj1hLmthKT09bnVsbD92b2lkIDA6Qi53RGQpIT1udWxsP0g6IjAuOCI7Yy5zdHlsZS5vcGFjaXR5PVdVbChhLGQpP3o6Sn19fWZpbmFsbHl7ZigpfX19LApaVWw9ZnVuY3Rpb24oYSxiLGMpe3JldHVybiBhc3luYyBkPT57dmFyIGU9KDAsXy5NZikoKSxmPWUoKTtlPWUoMSk7dHJ5e1NVbChhLGQpfHwoYS5JYT0hMSxlKGF3YWl0IGYoWVVsKGEsV1VsKGEsZCksYixjKSkpLChfLlJ0ZHx8YS53YT9nPT5nKCk6cmVxdWVzdEFuaW1hdGlvbkZyYW1lKSgoKT0+e2lmKFdVbChhLGQpKXtsZXQgZzsoZz1hLndhKT09bnVsbHx8Zy5vbkRpc21pc3MoKTthLnVuc3Vic2NyaWJlKCk7Xy5aZyhkb2N1bWVudC5ib2R5LCJWT3k4eGUiLGIpO2EuR2EudmFsdWU9ITA7YyYmKGEub2E9dm9pZCAwLGMuYW5pbWF0ZSh7b3BhY2l0eTowfSx7ZHVyYXRpb246MTAwLGZpbGw6ImZvcndhcmRzIn0pLmZpbmlzaGVkLnRoZW4oKCk9PntjPT1udWxsfHxjLnJlbW92ZSgpfSkpfWVsc2V7bGV0IGc7KGc9YS53YSk9PW51bGx8fGcub25DYW5jZWwoKTtfLlpnKGRvY3VtZW50LmJvZHksInMySVlIYyIsYil9fSkpfWZpbmFsbHl7ZigpfX19LFRVbD1hc3luYyBmdW5jdGlvbihhLApiKXt2YXIgYz0oMCxfLk1mKSgpLGQ9YygpO2M9YygxKTt0cnl7aWYoIWEuQWEudmFsdWUpe18uWmcoZG9jdW1lbnQuYm9keSwidWNWVG5mIixiKTt2YXIgZSxmLGc9KGY9KGU9YS5rYSk9PW51bGw/dm9pZCAwOmUuVnpkKSE9bnVsbD9mOjUwO2EuR2EudmFsdWU9ITE7YS5BYS52YWx1ZT0hMDtpZihhLndhKXRyeXtjKGF3YWl0IGQoYS53YS5vblN0YXJ0KCkpKX1jYXRjaChoKXtjKCksXy5WZShoLHtEZjp7c3JjOiJzdGQtY2gifSxsZXZlbDoyfSksYS53YT12b2lkIDB9aWYoIWEud2Epe2Iuc3R5bGUudHJhbnNmb3JtT3JpZ2luPSJjZW50ZXIgY2VudGVyIjtiLnN0eWxlLndpbGxDaGFuZ2U9InRyYW5zZm9ybSI7Yi5zdHlsZS50cmFuc2l0aW9uPWB0cmFuc2Zvcm0gJHtnfW1zIGVhc2Utb3V0YDtiLnN0eWxlLmNsaXBQYXRoPSJpbnNldCgwIHJvdW5kIDIwcHgpIjtsZXQgaD1iLnBhcmVudEVsZW1lbnQ7aCYmYi5zdHlsZS5oZWlnaHQmJmIuc3R5bGUud2lkdGgmJihoLnN0eWxlLmZpbHRlcj0KYGRyb3Atc2hhZG93KCR7ZG9jdW1lbnQuYm9keS5kYXRhc2V0LmR0PyIwcHggMnB4IDZweCByZ2JhKDIzLCAyMywgMjMsIDAuMzIpIjoiMHB4IDJweCA2cHggcmdiYSg2MCwgNjQsIDY3LCAwLjE2KSJ9KWAsaC5zdHlsZS5oZWlnaHQ9Yi5zdHlsZS5oZWlnaHQsaC5zdHlsZS53aWR0aD1iLnN0eWxlLndpZHRoLGguc3R5bGUucG9zaXRpb249Yi5zdHlsZS5wb3NpdGlvbixoLnN0eWxlLnRvcD1iLnN0eWxlLnRvcCxoLnN0eWxlLnpJbmRleD1iLnN0eWxlLnpJbmRleCk7Yyhhd2FpdCBkKCgwLF8uam8pKCgpPT57Yi5zdHlsZS50cmFuc2l0aW9uPSJ0cmFuc2Zvcm0gZWFzZS1vdXQifSxnKSkpfX19ZmluYWxseXtkKCl9fSxZVWw9YXN5bmMgZnVuY3Rpb24oYSxiLGMsZCl7dmFyIGU9KDAsXy5NZikoKSxmPWUoKTtlPWUoMSk7dHJ5e2lmKGEuQWEudmFsdWUpe3ZhciBnLGgsaz0oaD0oZz1hLmthKT09bnVsbD92b2lkIDA6Zy5kQWQpIT1udWxsP2g6MTAwLG0sbixwPShuPShtPWEua2EpPT1udWxsPwp2b2lkIDA6bS5jQWQpIT1udWxsP246MjAwLHI9Yy5wYXJlbnRFbGVtZW50OygwLF8ubWYpKCgpPT57Xy5aZyhkb2N1bWVudC5ib2R5LCJwVTNQV2IiLGMpO2J8fChhLkFhLnZhbHVlPSExKX0pO2J8fChjLnN0eWxlLnRyYW5zaXRpb249YHRyYW5zZm9ybSAke2t9bXMgZWFzZS1vdXRgLGMuc3R5bGUudHJhbnNmb3JtPSJzY2FsZSgxLjApIHRyYW5zbGF0ZSgwcHgsIDBweCkiKTtlKGF3YWl0IGYoKDAsXy5qbykoKCk9PntyJiYoci5zdHlsZS5maWx0ZXI9IiIsci5zdHlsZS5oZWlnaHQ9IiIsci5zdHlsZS53aWR0aD0iIixyLnN0eWxlLnBvc2l0aW9uPSIiLHIuc3R5bGUudG9wPSIiLHIuc3R5bGUuekluZGV4PSIiKTtjLnN0eWxlLnRyYW5zaXRpb249IiI7Yy5zdHlsZS5jbGlwUGF0aD0iIjtjLnN0eWxlLnRyYW5zZm9ybT0iIjtjLnN0eWxlLndpbGxDaGFuZ2U9IiI7ZCYmKGQuc3R5bGUudHJhbnNpdGlvbj0iIixkLnN0eWxlLm9wYWNpdHk9IjAiKX0saytwKSkpfX1maW5hbGx5e2YoKX19LApTVWw9ZnVuY3Rpb24oYSxiKXtyZXR1cm4gYS5SYXx8Yi5kaXJlY3Rpb249PT0xJiYhYi5qTWEuWEhhfHxiLmRpcmVjdGlvbj09PTImJiFiLmpNYS5zeGF8fGIuZGlyZWN0aW9uPT09MyYmIWIuak1hLlZIYXx8Yi5kaXJlY3Rpb249PT00JiYhYi5qTWEuV0hhPyEwOiExfSxVVWw9ZnVuY3Rpb24oYSxiLGMpe3ZhciBkLGU7YT0oZT0oZD1hLmthKT09bnVsbD92b2lkIDA6ZC5pSGQpIT1udWxsP2U6MTtpZihNYXRoLmFicyhiKTw9YylyZXR1cm4gYjtkPWI8MD8tMToxO3JldHVybiBkKmMrZCpNYXRoLnBvdyhNYXRoLmFicyhiKS1jLGEpfSxWVWw9ZnVuY3Rpb24oYSxiKXt2YXIgYyxkLGU9KGQ9KGM9YS5rYSk9PW51bGw/dm9pZCAwOmMuTEZkKSE9bnVsbD9kOjI1MDAsZixnO2E9KGc9KGY9YS5rYSk9PW51bGw/dm9pZCAwOmYubWF4U2NhbGUpIT1udWxsP2c6MTtyZXR1cm4gTWF0aC5taW4oMS1NYXRoLmFicyhiKS9lLGEpfSxXVWw9ZnVuY3Rpb24oYSxiKXt2YXIgYyxkLGU9KGQ9KGM9YS5rYSk9PQpudWxsP3ZvaWQgMDpjLmpJZCkhPW51bGw/ZDoyMCxmLGc7YT0oZz0oZj1hLmthKT09bnVsbD92b2lkIDA6Zi5vemQpIT1udWxsP2c6NzA7cmV0dXJuIE1hdGguYWJzKGIuaG9yaXpvbnRhbERpc3RhbmNlKT5hfHxNYXRoLmFicyhiLnZlcnRpY2FsRGlzdGFuY2UpPmE/ITA6Yi52ZXJ0aWNhbERpc3RhbmNlK2IudmVydGljYWxWZWxvY2l0eSplPC0xKmF9LCRVbD1jbGFzcyBleHRlbmRzIF8uc297c3RhdGljIFFhKCl7cmV0dXJue3NlcnZpY2U6e1JrYTpfLk9WZyxFRWI6Xy5RVWx9fX1jb25zdHJ1Y3RvcihhKXtzdXBlcigpO3RoaXMuQWE9Xy5ucWUoITEpO3RoaXMuR2E9Xy5ucWUoITEpO3RoaXMuS2E9IiI7dGhpcy5QYT1bXTt0aGlzLklhPSExO3RoaXMuRWE9ITA7dGhpcy5SYT0hMTt0aGlzLk5hPXRoaXMuT2E9MDt0aGlzLlNhPW5ldyBfLnBzZShhLnNlcnZpY2UuUmthKTt0aGlzLkVFYj1hLnNlcnZpY2UuRUVifXRTYyhhLGIsYyl7dGhpcy51bnN1YnNjcmliZSgpO3RoaXMua2E9dm9pZCAwOwp0aGlzLkFhLnZhbHVlPSExO3RoaXMuR2EudmFsdWU9ITE7dGhpcy53YT1jO3RoaXMuS2E9IiI7dGhpcy5QYT1bXTtmb3IodmFyIGQ9YTtkOyl7bGV0IHg9Z2V0Q29tcHV0ZWRTdHlsZShkKS56SW5kZXg7eCE9PSIiJiZ4IT09ImF1dG8iJiYodGhpcy5LYT09PSIiP3RoaXMuS2E9eDp0aGlzLlBhLnB1c2goe2VsZW1lbnQ6ZCx6SW5kZXg6ZC5zdHlsZS56SW5kZXgsbXlkOnh9KSk7ZD1kLnBhcmVudEVsZW1lbnR9ZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LnN0eWxlLm92ZXJzY3JvbGxCZWhhdmlvclk9Im5vbmUiO2RvY3VtZW50LmJvZHkuc3R5bGUub3ZlcnNjcm9sbEJlaGF2aW9yWT0ibm9uZSI7dGhpcy5FYT0hMTtpZihfLlJ0ZCYmIWMpe2xldCB4O3RoaXMub2E9KHg9dGhpcy5vYSkhPW51bGw/eDpfLlNtKCJkaXYiKTt0aGlzLm9hLnN0eWxlLmluc2V0PSItMXB4Ijt0aGlzLm9hLnN0eWxlLnBvc2l0aW9uPSJmaXhlZCI7dGhpcy5vYS5zdHlsZS56SW5kZXg9IjEwMDAiO3RoaXMub2Euc3R5bGUuYmFja2dyb3VuZD0KImJsYWNrIjt0aGlzLm9hLnN0eWxlLndpbGxDaGFuZ2U9Im9wYWNpdHkiO3RoaXMub2Euc3R5bGUudHJhbnNpdGlvbj0iIjt0aGlzLm9hLnN0eWxlLm9wYWNpdHk9IjAiO3RoaXMub2Euc3R5bGUucG9pbnRlckV2ZW50cz0ibm9uZSI7YS5iZWZvcmUodGhpcy5vYSk7dmFyIGU9dGhpcy5vYX12YXIgZjtjPShmPWI9PW51bGw/dm9pZCAwOmIudU1hKSE9bnVsbD9mOlsyXTt2YXIgZyxoLGssbSxuLHAscjt0aGlzLkJhPShrPShoPXRoaXMuRUViKS5obWIpPT1udWxsP3ZvaWQgMDprLmNhbGwoaCx7RkViOmEsa2tiOihtPShnPXRoaXMua2EpPT1udWxsP3ZvaWQgMDpnLm16ZCkhPW51bGw/bToyLHRSYzoxLERIYzpSVWwodGhpcyxhKSxEWGE6WFVsKHRoaXMsYSxlKSxDWGE6WlVsKHRoaXMsYSxlKSxvcHRpb25zOnt1TWE6YyxLX2E6KG49Yj09bnVsbD92b2lkIDA6Yi5LX2EpIT1udWxsP246ITAsTWRiOihwPWI9PW51bGw/dm9pZCAwOmIuTWRiKSE9bnVsbD9wOiEwLGZCYjoocj1iPT1udWxsPwp2b2lkIDA6Yi5mQmIpIT1udWxsP3I6MX19KX11bnN1YnNjcmliZSgpe2lmKCJmdW5jdGlvbiI9PXR5cGVvZiBfLkhVbCYmdGhpcy5CYSBpbnN0YW5jZW9mIF8uSFVsKXtsZXQgYTsoYT10aGlzLkJhKT09bnVsbHx8YS51bnN1YnNjcmliZSgpfWVsc2UgaWYodGhpcy5CYSBpbnN0YW5jZW9mIEFib3J0Q29udHJvbGxlcil7bGV0IGE7KGE9dGhpcy5CYSk9PW51bGx8fGEuYWJvcnQoKX10aGlzLkVhfHwoZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LnN0eWxlLm92ZXJzY3JvbGxCZWhhdmlvclk9IiIsZG9jdW1lbnQuYm9keS5zdHlsZS5vdmVyc2Nyb2xsQmVoYXZpb3JZPSIiLHRoaXMuRWE9ITApfX07Xy5hZyhfLlhZYSwkVWwpO18uVlRsKCRVbCk7Cl8udigpOwp9Y2F0Y2goZSl7Xy5fRHVtcEV4Y2VwdGlvbihlKX0KdHJ5ewpfLnUoIkRrazZnZSIpOwpfLmFWbD1uZXcgXy5UZihfLllZYSk7Cl8udigpOwp9Y2F0Y2goZSl7Xy5fRHVtcEV4Y2VwdGlvbihlKX0KdHJ5ewpfLnUoIkl2UFo2ZCIpOwp2YXIgYlZsPWZ1bmN0aW9uKGEsYil7Zm9yKGxldCBjPTA7YzxhLmxlbmd0aDtjKyspe2xldCBkPWFbY107aWYoXy50bWQoZCxiKSlyZXR1cm4gZH19LGNWbD1mdW5jdGlvbihhKXsoe3RocmVzaG9sZDpiPTAsd3JhcDpmPSEwfT17fSk7dmFyIGIse1d6YjpjLFBXYjpkfT1fLnZtZChhKSxlPShhPWQ+PTAmJmQ8Yy5sZW5ndGgpP2Muc2xpY2UoZCk6W107ZT1iVmwoZSxiKTtpZighZSYmZil7dmFyIGY9YT9jLnNsaWNlKDAsZCk6YztlPWJWbChmLGIpfXJldHVybiBlfSxkVmw9ZnVuY3Rpb24oYSxiKXt2YXIgYztyZXR1cm4oYz1hLnJldmVyc2UoKS5maW5kKGQ9PmQuS2E9PT1iKSk9PW51bGw/dm9pZCAwOmMuekluZGV4fSxlVmw9ZnVuY3Rpb24oe1FJOmEsc1U6YixLNDpjfSl7dmFyIGQsZTtiPXtGWGE6Yj09bnVsbD92b2lkIDA6KGQ9Yi56SW5kZXgpPT1udWxsP3ZvaWQgMDpkLkVzLEJvYzpjPT1udWxsP3ZvaWQgMDooZT1jLnpJbmRleCk9PW51bGw/dm9pZCAwOmUuRXN9O3ZhciBmO2IuZzFhPQooZj1kVmwoYSwxKSk9PW51bGw/dm9pZCAwOmYuRXM7dmFyIGc7Yi5qUmM9KGc9ZFZsKGEsMikpPT1udWxsP3ZvaWQgMDpnLm92ZXJsYXk7cmV0dXJuIGJ9LGZWbD1mdW5jdGlvbihhKXt2YXIgYj1hLmcxYTthPWEualJjO3JldHVybiBiPT09dm9pZCAwfHxhPT09dm9pZCAwPyExOmI8YX0sZ1ZsPWZ1bmN0aW9uKGEpe3JldHVybiBhLkJvYyE9PXZvaWQgMH0saVZsPWFzeW5jIGZ1bmN0aW9uKGEpe3ZhciBiPSgwLF8uTWYpKCksYz1iKCk7Yj1iKDEpO3RyeXtsZXQgZT1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKSxmPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpO3ZhciBkO2xldCBnLGgsayxtPShrPShoPShkPWEuekluZGV4KT09bnVsbD92b2lkIDA6ZC5FcykhPW51bGw/aDooZz1hLnpJbmRleCk9PW51bGw/dm9pZCAwOmcub3ZlcmxheSkhPW51bGw/azoxO2Uuc3R5bGUuY3NzVGV4dD1mLnN0eWxlLmNzc1RleHQ9YHBvc2l0aW9uOiBhYnNvbHV0ZTsgbGVmdDogMDsgYmFja2dyb3VuZDogdmFyKC0teGhVR3djKTsgei1pbmRleDogJHttLQoxfTsgd2lkdGg6IDEwMHZ3OyBoZWlnaHQ6IDMwMHB4O2A7aFZsKGUsZik7ZD0oKT0+e2hWbChlLGYpfTt2aXN1YWxWaWV3cG9ydC5hZGRFdmVudExpc3RlbmVyKCJzY3JvbGwiLGQpO2EuT2E9e2hlYWRlcjplLGZvb3RlcjpmLFhQOmR9O2RvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoZSk7ZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChmKTtiKGF3YWl0IGMobmV3IFByb21pc2Uobj0+dm9pZCgwLF8uam8pKG4sMTApKSkpfWZpbmFsbHl7YygpfX0saFZsPWZ1bmN0aW9uKGEsYil7dmFyIGM9dmlzdWFsVmlld3BvcnQucGFnZVRvcCxkPWMrdmlzdWFsVmlld3BvcnQuaGVpZ2h0LTEwMDthLnN0eWxlLnRvcD1gJHtjLTI5NX1weGA7Yi5zdHlsZS50b3A9YCR7ZH1weGB9LGpWbD1mdW5jdGlvbihhKXtpZihhPWEuT2EpYS5oZWFkZXIucmVtb3ZlKCksYS5mb290ZXIucmVtb3ZlKCksdmlzdWFsVmlld3BvcnQucmVtb3ZlRXZlbnRMaXN0ZW5lcigic2Nyb2xsIixhLlhQKX0sa1ZsPWZ1bmN0aW9uKGEpe3JldHVybiBhLm1hcChiPT4KYi5rYSkubGFzdEluZGV4T2YoITApfSxsVmw9ZnVuY3Rpb24oYSl7dmFyIGI9a1ZsKGEpO3JldHVybiBiIT09LTE/e29QYTphLnNsaWNlKGIpLGh4YTohMX06e29QYTphLGh4YTohMH19LG1WbD1mdW5jdGlvbihhKXt2YXIgYixjLGQsZSxmLGc7cmV0dXJue2ZCYjooZT0oYj1hLmdldFNjcm9sbFRvcFJlcXVpcmVtZW50KT09bnVsbD92b2lkIDA6Yi5jYWxsKGEpKSE9bnVsbD9lOnZvaWQgMCxLX2E6KGY9KGM9YS5nZXRTaG91bGREaXNhYmxlU2Nyb2xsaW5nKT09bnVsbD92b2lkIDA6Yy5jYWxsKGEpKSE9bnVsbD9mOiEwLHVNYTooZz0oZD1hLmdldFN3aXBlVG9EaXNtaXNzRGlyZWN0aW9ucyk9PW51bGw/dm9pZCAwOmQuY2FsbChhKSkhPW51bGw/ZzpbMl19fSxuVmw9ZnVuY3Rpb24oKXtyZXR1cm57ZWw6dm9pZCAwLHByZXZlbnRTY3JvbGw6ITF9fSxvVmw9e1dnYzowLEFkYzoxLEFlYzoyLFRlYzozLENkYzo0fSxwVmw9WyIjc2ZjbnQiLCIuc2ZiZyIsIi5zQmJrbGUiLCIjc2VhcmNoZm9ybSIsCiIjYXBwYmFyIl0scVZsPWNsYXNze2NvbnN0cnVjdG9yKGEpe3RoaXMuRXM9YTtpZighZG9jdW1lbnQucXVlcnlTZWxlY3RvcigiI3haMUpHYyIpKXthPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInN0eWxlIik7YS5pZD0ieFoxSkdjIjt2YXIgYj0oMCxfLm1pYSlgLiR7Im9zLXMifSB7CiAgICB0cmFuc2l0aW9uOgogICAgICAgIGJhY2tncm91bmQtY29sb3IgJHsxMDB9bXMsCiAgICAgICAgdmlzaWJpbGl0eSAwcyAyNTBtczsKICAgICAgcG9zaXRpb246IGZpeGVkOwogICAgICB2aXNpYmlsaXR5OiBoaWRkZW47CiAgICAgIGluc2V0OiAwOwogIH1gLGM9KDAsXy5taWEpYC4keyJvcy1zIn0uJHsib3Mtc3YifSB7CiAgICB0cmFuc2l0aW9uOgogICAgICAgIGJhY2tncm91bmQtY29sb3IgJHsxMDB9bXMsCiAgICAgICAgdmlzaWJpbGl0eSAwcyAwczsKICAgICAgdmlzaWJpbGl0eTogaW5oZXJpdDsKICAgICAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgwLCAwLCAwLCAwLjYpOwogIH1gO2I9Xy5uaWEoW2IsY10pO18uTmlhKGEsYik7ZG9jdW1lbnQuaGVhZC5hcHBlbmRDaGlsZChhKX12YXIgZDsoZD10aGlzLkVzKT09bnVsbHx8ZC5jbGFzc0xpc3QuYWRkKCJvcy1zIil9YXN5bmMgb3BlbihhPSEwKXt2YXIgYj0oMCxfLk1mKSgpLGM9YigpO2I9YigxKTt0cnl7dGhpcy5FcyE9PXZvaWQgMCYmKHRoaXMuRXMuc3R5bGUudHJhbnNpdGlvbj1hPyIiOiJub25lIix0aGlzLkVzLmNsYXNzTGlzdC5hZGQoIm9zLXN2IiksYSYmYihhd2FpdCBjKF8uRWNjKDEwMCkpKSl9ZmluYWxseXtjKCl9fWFzeW5jIGNsb3NlKGE9ITApe3ZhciBiPSgwLF8uTWYpKCksYz1iKCk7Yj1iKDEpO3RyeXt0aGlzLkVzIT09dm9pZCAwJiYodGhpcy5Fcy5zdHlsZS50cmFuc2l0aW9uPWE/IiI6Im5vbmUiLHRoaXMuRXMuY2xhc3NMaXN0LnJlbW92ZSgib3Mtc3YiKSxhJiZiKGF3YWl0IGMoXy5FY2MoMTAwKSkpLHRoaXMubW92ZSgwKSl9ZmluYWxseXtjKCl9fW1vdmUoYSl7dGhpcy5FcyE9PXZvaWQgMCYmCmE+PTAmJk51bWJlci5pc0ludGVnZXIoYSkmJih0aGlzLkVzLnN0eWxlLnpJbmRleD1hLnRvU3RyaW5nKCkpfX0sclZsPXtXZ2M6MCxBZGM6MSxBZWM6MixUZWM6MyxDZGM6NCxTcWQ6NSwwOiJNQU5VQUwiLDE6IkJBQ0tHUk9VTkRfQ0xJQ0siLDI6IkVTQ19LRVkiLDM6IkZPQ1VTX0xPU1QiLDQ6IkJBQ0tfQlVUVE9OIiw1OiJTV0lQRSJ9O3ZhciBzVmw9Y2xhc3N7Y29uc3RydWN0b3IoYSxiKXt0aGlzLm92ZXJsYXk9YTt0aGlzLk9iPSExO3RoaXMuUGE9e2VsOnZvaWQgMCxwcmV2ZW50U2Nyb2xsOiExfTt0aGlzLndhPWIuZ2V0T3ZlcmxheUlkKCk7dGhpcy5CYT1iLmdldElzU2VhcmNoQmFySW5CYWNrZ3JvdW5kKCk7dGhpcy5rYT1iLmdldERpc2FibGVCYWNrZ3JvdW5kKCk7dGhpcy56MGE9e2RlZmF1bHQ6Yi5nZXRTdWJzZXF1ZW50T3ZlcmxheUJlaGF2aW9yKCkuZ2V0RGVmYXVsdCgpLHlQYzpiLmdldFN1YnNlcXVlbnRPdmVybGF5QmVoYXZpb3IoKS5nZXRTdGFja0lkcygpLGVMYzpiLmdldFN1YnNlcXVlbnRPdmVybGF5QmVoYXZpb3IoKS5nZXRSZXBsYWNlSWRzKCksVm1jOmIuZ2V0U3Vic2VxdWVudE92ZXJsYXlCZWhhdmlvcigpLmdldEJsb2NrSWRzKCl9O3RoaXMuUWI9Yi5nZXREaXNtaXNzT3JCbG9ja0NhbGxiYWNrKCk7dGhpcy5HYT17ZXZlbnRUeXBlczpiLmdldEdsb2JhbERpc21pc3NFdmVudHMoKSxuQWI6Yi5nZXRQcm9wYWdhdGVCYWNrZ3JvdW5kQ2xpY2tzKCksCnFjYjpiLmdldERpc21pc3NhbFJlb3BlbkZ1bmN0aW9uKCksRkw6Yi5nZXRTdGFibGVEaXNtaXNzYWxJZCgpfTt0aGlzLlBiPWIuZ2V0RW5hYmxlU3dpcGVUb0Rpc21pc3MoKTt0aGlzLkFiPWIuZ2V0U3dpcGVUb0Rpc21pc3NPcHRpb25zKCk7dGhpcy5hbmltYXRpb249Yi5nZXRBbmltYXRpb24oKTt2YXIgYz1iLmdldFNob3VsZFJlcGFyZW50KCksZD1iLmdldFNjcmltU3R5bGUoKTtkIT09MXx8Y3x8KGQ9MCk7dGhpcy5LYT1kO3RoaXMuUmE9e3Bvc2l0aW9uOmEuc3R5bGUucG9zaXRpb24saXNvbGF0aW9uOmEuc3R5bGUuaXNvbGF0aW9uLHpJbmRleDphLnN0eWxlLnpJbmRleH07dGhpcy5aYT1iLmdldEZvY3VzSGFuZGxpbmcoKTt0aGlzLlR5PWIuZ2V0U2Nyb2xsYWJsZUNvbnRhaW5lcigpO3RoaXMuQWE9Yi5nZXRUYWJPcmRlckluc2VydGlvblBvaW50KCk7dGhpcy5uYj1iLmdldE9wZW5BZmZvcmRhbmNlKCk7dGhpcy5yYj1iLmdldFNob3VsZFRvZ2dsZSgpfX07dmFyIHVWbD1mdW5jdGlvbihhKXthLmthIT09dm9pZCAwJiYoYS5YaS5kaXNjb25uZWN0KCksYS53YSE9PXZvaWQgMCYmKHRWbChhKSxhLndhPXZvaWQgMCksYS5rYT12b2lkIDApfSx0Vmw9ZnVuY3Rpb24oYSl7YS5vYSE9PXZvaWQgMCYmYS5rYSE9PXZvaWQgMCYmKHZWbChhLkJhLGEub2EpLGEud2EhPT12b2lkIDAmJihhLmthLnN0eWxlLnpJbmRleD1hLndhKSxhLm9hPXZvaWQgMCl9LHdWbD1mdW5jdGlvbihhLGIpe3ZhciBjPVtdLGQ9W107Zm9yKGxldCBlIG9mIGIpZS50eXBlPT09ImNoaWxkTGlzdCImJmUudGFyZ2V0PT09YS5rYSYmKGMucHVzaCguLi5lLmFkZGVkTm9kZXMpLGQucHVzaCguLi5lLnJlbW92ZWROb2RlcykpO3JldHVybntMSGM6Yyx6b2M6ZH19LHhWbD1jbGFzc3tjb25zdHJ1Y3RvcihhKXt0aGlzLkJhPWE7dGhpcy5YaT1uZXcgTXV0YXRpb25PYnNlcnZlcigoMCxfLlRMYSkodGhpcy5vbkNoYW5nZSx0aGlzKSk7dGhpcy5BYT1bXX1vbkNoYW5nZShhKXt2YXIge0xIYzpiLAp6b2M6Y309d1ZsKHRoaXMsYSk7YT1jLmxlbmd0aD4wO3ZhciBkPWIubGVuZ3RoPjA7dGhpcy5BYT10aGlzLkFhLmZpbHRlcihlPT4hYy5pbmNsdWRlcyhlKSk7dGhpcy5BYS5wdXNoKC4uLmIpO2EmJnRoaXMuQWEubGVuZ3RoPT09MD90VmwodGhpcyk6ZCYmdGhpcy5rYSE9PXZvaWQgMCYmKHZWbCh0aGlzLkJhLHRoaXMub2EpLHRoaXMuQmEua2E+PTFFNCYmKHRoaXMub2E9Kyt0aGlzLkJhLmthKSx0aGlzLmthLnN0eWxlLnpJbmRleD1gJHt0aGlzLm9hfWApfX07dmFyIHlWbD1hc3luYyBmdW5jdGlvbihhKXtyZXR1cm4gTWF0aC5tYXgoLi4uYS5tYXAoYj0+Yi5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS5ib3R0b20pKX0selZsPWFzeW5jIGZ1bmN0aW9uKGEpe3ZhciBiPSgwLF8uTWYpKCksYz1iKCk7Yj1iKDEpO3RyeXtpZihhLkVzPT09dm9pZCAwJiYoYS5Fcz1fLnJIYSgiaTU4TXciKSksYS5Fcyl7YS5vYT09PXZvaWQgMCYmKGEub2E9Wy4uLmRvY3VtZW50LmJvZHkucXVlcnlTZWxlY3RvckFsbChwVmwuam9pbigiLCIpKV0pO3ZhciBkPWEub2E7YS5rYT1hLkVzLnN0eWxlLmluc2V0O3ZhciBlPWIoYXdhaXQgYyh5VmwoZCkpKTthLkVzLnN0eWxlLmluc2V0PWAke01hdGgubWF4KDAsZSkudG9TdHJpbmcoKX1weCAwIDAgMGB9fWZpbmFsbHl7YygpfX0sQVZsPWZ1bmN0aW9uKGEpe2EuRXMmJmEua2EmJihhLkVzLnN0eWxlLmluc2V0PWEua2EpfSxCVmw9Y2xhc3N7fTt2YXIgQ1ZsPWZ1bmN0aW9uKGEsYil7aWYoYi53YSE9PTYpcmV0dXJuITE7dmFyIGM9Yi5vdmVybGF5LnF1ZXJ5U2VsZWN0b3IoIiNERGVYaGYiKXx8bnVsbDtjJiYoYS5BYT1jLGEua2E9Yi5vdmVybGF5KTtyZXR1cm4hIWEuQWF9LERWbD1mdW5jdGlvbihhKXt2YXIgYjsoYj1hLndhKT09bnVsbHx8Yi5kaXNjb25uZWN0KCk7dmFyIGM7KGM9YS5vYSk9PW51bGx8fGMuZGlzY29ubmVjdCgpO2Eud2E9dm9pZCAwO2Eub2E9dm9pZCAwO2EuQmE9dm9pZCAwfSxGVmw9ZnVuY3Rpb24oYSl7YS5rYSYmYS5BYT8oYS53YT1uZXcgRVZsKHtqRmE6YS5BYSxuYmI6MSxRM2E6YS5FYS5iaW5kKGEpLFJjYjphLkdhLmJpbmQoYSl9KSxhLm9hPW5ldyBFVmwoe2pGYTphLmthLG5iYjo1LFEzYTphLkVhLmJpbmQoYSksUmNiOmEuR2EuYmluZChhKX0pLGEuQmE9YS5rYS5zdHlsZS56SW5kZXgsYS53YS5vYnNlcnZlKCksYS5vYS5vYnNlcnZlKCkpOkRWbChhKX0sR1ZsPWNsYXNze2NvbnN0cnVjdG9yKCl7dGhpcy5vYT0KdGhpcy53YT10aGlzLmthPXRoaXMuQWE9dm9pZCAwfUdhKCl7dmFyIGE7aWYoYT10aGlzLkJhIT09dm9pZCAwKWlmKGE9dGhpcy5rYSl7bGV0IGIsYzthPSgoYj10aGlzLndhKT09bnVsbD8wOmIua2EpfHwoKGM9dGhpcy5vYSk9PW51bGw/MDpjLmthKT8hMTohMH1hJiYodGhpcy5rYS5zdHlsZS56SW5kZXg9dGhpcy5CYSl9RWEoKXshdGhpcy5rYXx8TnVtYmVyKHRoaXMua2Euc3R5bGUuekluZGV4KT49MUUzfHwodGhpcy5rYS5zdHlsZS56SW5kZXg9IjEwMDAiKX19LEVWbD1jbGFzc3tjb25zdHJ1Y3Rvcih7akZhOmEsbmJiOmIsUTNhOmMsUmNiOmR9KXt0aGlzLmthPSExO3RoaXMuWGk9bmV3IE11dGF0aW9uT2JzZXJ2ZXIoKDAsXy5UTGEpKHRoaXMub25DaGFuZ2UsdGhpcykpO3RoaXMuakZhPWE7dGhpcy5uYmI9Yjt0aGlzLlEzYT1jO3RoaXMuUmNiPWR9b25DaGFuZ2UoKXt0aGlzLmpGYT90aGlzLmpGYS5jaGlsZHJlbi5sZW5ndGg+dGhpcy5uYmI/KHRoaXMua2E9ITAsdGhpcy5RM2EoKSk6Cih0aGlzLmthPSExLHRoaXMuUmNiKCkpOnRoaXMua2E9ITF9b2JzZXJ2ZSgpe3RoaXMuWGkub2JzZXJ2ZSh0aGlzLmpGYSx7Y2hpbGRMaXN0OiEwfSl9ZGlzY29ubmVjdCgpe3RoaXMuWGkuZGlzY29ubmVjdCgpfX07dmFyIHZWbD1mdW5jdGlvbihhLGIpe2lmKCEoYj09PXZvaWQgMHx8YjwxRTQpKWlmKGI9PT1hLmthKWZvcihhLmthLS07YS5vYS5oYXMoYS5rYSk7KWEub2EuZGVsZXRlKGEua2EpLGEua2EtLTtlbHNlIGEub2EuYWRkKGIpfSxIVmw9Y2xhc3N7Y29uc3RydWN0b3IoKXt0aGlzLm9hPW5ldyBTZXQ7dGhpcy5rYT05OTk5fX07dmFyIElWbD1jbGFzc3tjb25zdHJ1Y3RvcihhKXt0aGlzLm9hPWF9cmVzdG9yZSgpe2lmKHRoaXMua2Epe3ZhciBhPXRoaXMua2EuZ2V0QXR0cmlidXRlKCJhcmlhLW93bnMiKTthPT09dGhpcy53YT90aGlzLmthLnJlbW92ZUF0dHJpYnV0ZSgiYXJpYS1vd25zIik6YSYmdGhpcy5rYS5zZXRBdHRyaWJ1dGUoImFyaWEtb3ducyIsYS5zcGxpdCgiICIpLmZpbHRlcihiPT5iIT09dGhpcy53YSkuam9pbigiICIpKTt0aGlzLndhPXRoaXMua2E9dm9pZCAwfX19O3ZhciBLVmw9ZnVuY3Rpb24oYSl7dmFyIGI9Xy56bWQoYSwoKT0+e0pWbChhLDEpfSksYz1fLnptZChhLCgpPT57SlZsKGEsMCl9KTthLkFhLmFmdGVyKGMsYil9LE1WbD1mdW5jdGlvbihhKXt2YXIgYj1fLnptZChhLCgpPT57YS5vYS5mb2N1cygpfSk7YS5rYS5jaGlsZHJlblswXS5iZWZvcmUoYik7Yj1fLnptZChhLCgpPT57dmFyIGM7KGM9TFZsKGEsYS5vYSkpPT1udWxsfHxjLmZvY3VzKCl9KTthLmthLmFwcGVuZChiKX0sT1ZsPWZ1bmN0aW9uKGEpe3ZhciBiPV8uem1kKGEsKCk9PntOVmwoYSwwKX0pO2Eua2EuYXBwZW5kKGIpO2I9Xy56bWQoYSwoKT0+e05WbChhLDEpfSk7YS5rYS5jaGlsZHJlblswXS5iZWZvcmUoYil9LFBWbD1mdW5jdGlvbihhKXtyZXR1cm4gXy5zbWQoYS5rYSkuZmlsdGVyKGI9PiFfLnltZChhLGIpKX0sTFZsPWZ1bmN0aW9uKGEsYil7Zm9yKGI9Y1ZsKGIpO2ImJl8ueW1kKGEsYik7KWI9Y1ZsKGIpO3JldHVybiBifSxKVmw9ZnVuY3Rpb24oYSxiKXt2YXIgYywKZD1QVmwoYSk7ZC5sZW5ndGghPT0wP2M9Yj09PTA/ZFswXTpkW2QubGVuZ3RoLTFdOmM9Yj09PTA/TFZsKGEsYS5vYSk6YS5vYTt2YXIgZTsoZT1jKT09bnVsbHx8ZS5mb2N1cygpfSxOVmw9ZnVuY3Rpb24oYSxiKXtpZihiPT09MCl7Zm9yKGI9Xy54bWQoYS5rYSk7YiYmXy55bWQoYSxiKTspYj1fLnhtZChiKTthPWJ9ZWxzZXtiPWEua2E7bGV0IGQ9UFZsKGEpO2E9TFZsKGEsZC5sZW5ndGghPT0wP2RbZC5sZW5ndGgtMV06Yil9dmFyIGM7KGM9YSk9PW51bGx8fGMuZm9jdXMoKX0sUVZsPWNsYXNzIGV4dGVuZHMgXy5BbWR7Y29uc3RydWN0b3Ioe21vdmU6YSxWUWM6Yn0pe3N1cGVyKCk7dGhpcy5rYT1hO3RoaXMuQWE9YjthPV8uc21kKGIpO3RoaXMub2E9YS5sZW5ndGg+MD9hW2EubGVuZ3RoLTFdOl8udW1kKGIpP2I6Xy54bWQoYix7d3JhcDohMH0pfX07dmFyIFJWbD1hc3luYyBmdW5jdGlvbih7c1U6YSxLNDpiLFFJOmN9KXt2YXIgZD0oMCxfLk1mKSgpLGU9ZCgpO2Q9ZCgxKTt0cnl7aWYoIWMuc29tZShoPT5oLk9hIT09dm9pZCAwKSl7dmFyIGY9YSYmYS5rYSYmKGEud2E9PT02fHxhLndhPT09NXx8YS53YT09PTh8fGEud2E9PT05KSxnPWImJmIuT2EhPT12b2lkIDA7ZiYmZz9hLk9hPWIuT2E6ZiYmIWc/ZChhd2FpdCBlKGlWbChhKSkpOiFmJiZnJiZqVmwoYil9fWZpbmFsbHl7ZSgpfX0sU1ZsPWFzeW5jIGZ1bmN0aW9uKGEpe3ZhciBiPSgwLF8uTWYpKCksYz1iKCk7Yj1iKDEpO3RyeXtiKGF3YWl0IGMoYS5hbmltYXRpb24uY2xvc2UoKSkpfWZpbmFsbHl7YygpfX0sVVZsPWZ1bmN0aW9uKGEse0s0OmIsUUk6Y30pe2lmKChiPT1udWxsP3ZvaWQgMDpiLnpJbmRleCkhPT12b2lkIDApe3ZhciBkPWIub3ZlcmxheTtkLnN0eWxlLnBvc2l0aW9uPWIuUmEucG9zaXRpb247ZC5zdHlsZS5pc29sYXRpb249Yi5SYS5pc29sYXRpb247ZC5zdHlsZS56SW5kZXg9CmIuUmEuekluZGV4O2lmKGIub2EhPT12b2lkIDApe2EuY0wucmVtb3ZlQ2hpbGQoZCk7Xy5GRmEmJihhLmNMLmRhdGFzZXQuY3NzU2NvcGU9IiIpO2Iub2EuVzJiPT09MD9iLm9hLnBhcmVudC5hcHBlbmRDaGlsZChiLm92ZXJsYXkpOmIub2EucGFyZW50Lmluc2VydEJlZm9yZShiLm92ZXJsYXksYi5vYS5wYXJlbnQuY2hpbGRyZW5bYi5vYS5XMmJdKTtiLmthfHxUVmwoYik7YS5rYSYmIWIuQmEmJkFWbChhLmthKTtpZighYy5zb21lKGU9PmUub2EhPT12b2lkIDApKXtsZXQgZTsoZT1hLkFhKT09bnVsbHx8dVZsKGUpfUNWbChhLm9hLGIpJiZEVmwoYS5vYSl9fX0sVlZsPWZ1bmN0aW9uKGEsYil7dmFyIGM9Yi5zVSxkPWIub3B0aW9ucztiPWIuUUk7aWYoKGM9PW51bGw/dm9pZCAwOmMuekluZGV4KSE9PXZvaWQgMCl7dmFyIGU9Yy5vdmVybGF5O2Uuc3R5bGUuekluZGV4PWMuekluZGV4Lm92ZXJsYXkudG9TdHJpbmcoKTtlLnN0eWxlLmlzb2xhdGlvbj0iaXNvbGF0ZSI7dmFyIGY7aWYoKGY9CmQ9PW51bGw/dm9pZCAwOmQuZ2V0U2hvdWxkUmVwYXJlbnQoKSkhPW51bGwmJmYpe2Q9ZS5wYXJlbnRFbGVtZW50O2Y9QXJyYXkuZnJvbShkLmNoaWxkcmVuKS5pbmRleE9mKGUpO2Mub2E9e3BhcmVudDpkLFcyYjpmfTtpZighYy5rYSl7dmFyIGc7Yy5KYj0oZz1lLnByZXZpb3VzRWxlbWVudFNpYmxpbmcpIT1udWxsP2c6Yy5vYS5wYXJlbnR9Zz1lLnN0eWxlLnBvc2l0aW9ufHxfLmtuKGUsInBvc2l0aW9uIik7ZyE9PSJmaXhlZCImJmchPT0iYWJzb2x1dGUiJiYoZS5zdHlsZS5wb3NpdGlvbj0iZml4ZWQiKTtfLmI1YihlLGEuY0wpO2EuY0wuYXBwZW5kQ2hpbGQoZSk7YS5rYSYmIWMuQmEmJnpWbChhLmthKTthLmNMLm9mZnNldEhlaWdodDtiLnNvbWUoaD0+aC5vYSE9PXZvaWQgMCl8fChiPWEuQWEpPT1udWxsfHwoYi5rYSE9PXZvaWQgMCYmdVZsKGIpLGIua2E9Xy5NeCgpLGIud2E9Yi5rYS5zdHlsZS56SW5kZXgsYi5YaS5vYnNlcnZlKGIua2Ese2NoaWxkTGlzdDohMH0pKTtDVmwoYS5vYSwKYykmJkZWbChhLm9hKX19fSxYVmw9YXN5bmMgZnVuY3Rpb24oYSxiKXt2YXIgYz0oMCxfLk1mKSgpLGQ9YygpO2M9YygxKTt0cnl7bGV0IHI9Yi5zVSx4PWIuSzQ7V1ZsKGEuRWEsYik7Xy50NmMmJmMoYXdhaXQgZChSVmwoYikpKTtsZXQgej1bXSxCPVtdO3ZhciBlPWIub3B0aW9ucztlJiZlLmdldFNjcmltU3R5bGUoKT09PTEmJmUuZ2V0U2hvdWxkUmVwYXJlbnQoKTtsZXQgSD1lVmwoYik7dmFyIGY9ZT0hMTtnVmwoSCkmJkguRlhhPT09dm9pZCAwJiYoSC5nMWE9PT12b2lkIDB8fGZWbChIKSkmJihmPWU9ITApOyFnVmwoSCkmJkguRlhhIT09dm9pZCAwJiZmVmwoSCkmJihlPSEwLGY9ITEpO2xldCB7dk5jOkosdU5jOk59PXt2TmM6ZSx1TmM6Zn07Zj1lPSExO2lmKEguRlhhIT09dm9pZCAwKXZhciBnPXtRN2I6IWdWbChIKSxJN2I6ITB9O2Vsc2UgZ1ZsKEgpJiZILmcxYSE9PXZvaWQgMCYmZlZsKEgpJiYoZT0hMCxmPSExKSxnPXtRN2I6ZSxJN2I6Zn07bGV0IHtRN2I6USxJN2I6Wn09Cmc7dmFyIGg9Sjt2YXIgaz1OO3ZhciBtPWEuQmEoSCk7dmFyIG49UTt2YXIgcD1aO2gmJnoucHVzaChhLndhLmNsb3NlKGspKTt4IT09dm9pZCAwJiZ6LnB1c2goU1ZsKHgpKTt6Lmxlbmd0aD4wJiZjKGF3YWl0IGQoUHJvbWlzZS5hbGwoeikpKTtVVmwoYSxiKTtsZXQgWTsoeD09bnVsbD8wOihZPXguYW5pbWF0aW9uKT09bnVsbD8wOlkuYWZ0ZXJDbG9zZSkmJmMoYXdhaXQgZCh4LmFuaW1hdGlvbi5hZnRlckNsb3NlKCkpKTttIT09dm9pZCAwJiZhLndhLm1vdmUobSk7bGV0IGRhOyhyPT1udWxsPzA6KGRhPXIuYW5pbWF0aW9uKT09bnVsbD8wOmRhLmJlZm9yZU9wZW4pJiZjKGF3YWl0IGQoci5hbmltYXRpb24uYmVmb3JlT3BlbigpKSk7VlZsKGEsYik7biYmQi5wdXNoKGEud2Eub3BlbihwKSk7ciYmQi5wdXNoKGEuUHRhKHIpKTtCLmxlbmd0aD4wJiZjKGF3YWl0IGQoUHJvbWlzZS5hbGwoQikpKX1maW5hbGx5e2QoKX19LFRWbD1mdW5jdGlvbihhKXt2YXIgYjsoYj1hLkZiKT09bnVsbHx8CmIucmVzdG9yZSgpO3ZhciBjOyhjPWEuTmEpIT1udWxsJiZjLmRpc3Bvc2UoKX0sWVZsPWZ1bmN0aW9uKGEse3NVOmJ9KXtpZihiJiYhYi5rYSl7dmFyIGM9Yi5vdmVybGF5LGQ9Yi5vYTtpZihkIT12b2lkIDAmJmIuSmIhPXZvaWQgMCl7Yy5pZD1jLmlkfHxhLnVuaXF1ZUlkU2VydmljZS5Waygib3N1aWQiKTtiLkNjPWMuaWQ7dmFyIGU7YT0oZT1iLkFhKSE9bnVsbD9lOmIuSmI7dmFyIGYsZztlPShnPShmPWIuQWEpPT1udWxsP3ZvaWQgMDpmLnBhcmVudEVsZW1lbnQpIT1udWxsP2c6ZC5wYXJlbnQ7Yi5GYj1uZXcgSVZsKGMpO2Q9Yi5GYjtkLmthJiZkLnJlc3RvcmUoKTtpZighZC5vYS5pZCl0aHJvdyBFcnJvcigidHYiKTtkLndhPWQub2EuaWQ7bGV0IGgsaztmPShrPShoPWUuZ2V0QXR0cmlidXRlKCJhcmlhLW93bnMiKSk9PW51bGw/dm9pZCAwOmguc3BsaXQoIiAiKSkhPW51bGw/azpbXTtmLmluY2x1ZGVzKGQub2EuaWQpfHwoZi5wdXNoKGQub2EuaWQpLGUuc2V0QXR0cmlidXRlKCJhcmlhLW93bnMiLApmLmpvaW4oIiAiKSksZC5rYT1lKTtiLk5hPW5ldyBRVmwoe21vdmU6YyxWUWM6YX0pO2I9Yi5OYTtpZihiLmthLmNoaWxkcmVuLmxlbmd0aD09PTApdGhyb3cgRXJyb3IoInV2Iik7aWYoIWIub2EpdGhyb3cgRXJyb3IoInZ2Iik7S1ZsKGIpO01WbChiKTtPVmwoYil9fX0sJFZsPWNsYXNze2NvbnN0cnVjdG9yKCl7dmFyIGE9Xy5GbSgic1ptdDNiIik7YXx8KGE9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2IiksYS5pZD0ic1ptdDNiIixhLmNsYXNzTGlzdC5hZGQoIk9MS1Q4ZCIpLGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoYSkpO18uT3NkJiZhLnNldEF0dHJpYnV0ZSgiZGF0YS1zdC1jbnQiLCJsYiIpO3RoaXMuY0w9YTthPV8uRm0oImk1OE13Iik7aWYoIWEpe2lmKGE9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2IikpYS5pZD0iaTU4TXciO3RoaXMuY0wuYXBwZW5kQ2hpbGQoYSk7YT1hIT1udWxsP2E6dm9pZCAwfXRoaXMud2E9bmV3IHFWbChhKTt0aGlzLnVuaXF1ZUlkU2VydmljZT0KbmV3IF8ubEY7dGhpcy5rYT1fLklrYSgpP3ZvaWQgMDpuZXcgQlZsO2E9bmV3IEhWbDt0aGlzLkVhPW5ldyBaVmwoYSk7dGhpcy5BYT1uZXcgeFZsKGEpO3RoaXMub2E9bmV3IEdWbH1CYShhKXtpZihhLkZYYSE9PXZvaWQgMClyZXR1cm4gYS5GWGE7aWYoZ1ZsKGEpJiZhLmcxYSE9PXZvaWQgMClyZXR1cm4gYS5nMWF9YXN5bmMgUHRhKGEpe3ZhciBiPSgwLF8uTWYpKCksYz1iKCk7Yj1iKDEpO3RyeXthLmFuaW1hdGlvbj09PXZvaWQgMCYmKGEuYW5pbWF0aW9uPShuZXcgXy5GY2MoYS5vdmVybGF5KSkuYnVpbGQoKSksYihhd2FpdCBjKGEuYW5pbWF0aW9uLm9wZW4oKSkpfWZpbmFsbHl7YygpfX19LFdWbD1mdW5jdGlvbihhLHtLNDpiLHNVOmMsb3B0aW9uczpkfSl7Yj1iPT1udWxsP3ZvaWQgMDpiLnpJbmRleDtiIT09dm9pZCAwJiYodlZsKGEub2EsYi5vdmVybGF5KSx2VmwoYS5vYSxiLkVzKSxhLmthLnBvcCgpKTtjJiYoKGQ9PW51bGw/MDpkLmdldFNob3VsZFJlcGFyZW50KCkpfHwKKGQ9PW51bGw/MDpkLmdldEVuYWJsZU5vZGVNYW5hZ2VtZW50KCkpKSYmKChkPWQ9PW51bGw/dm9pZCAwOmQuZ2V0T3ZlcnJpZGVaSW5kZXgoKSk/KGI9ZD5hLmthW2Eua2EubGVuZ3RoLTFdP2Q6YS5rYVthLmthLmxlbmd0aC0xXSsyLGQ9YyYmYy5LYT09PTE/Yi0xOnZvaWQgMCk6KGQ9YyYmYy5LYT09PTE/KythLm9hLmthOnZvaWQgMCxiPSsrYS5vYS5rYSksYS5rYS5wdXNoKGIpLGMuekluZGV4PXtvdmVybGF5OmIsRXM6ZH0pfSxaVmw9Y2xhc3N7Y29uc3RydWN0b3IoYSl7dGhpcy5vYT1hO3RoaXMua2E9Wy0xXX19O3ZhciBhV2w9Y2xhc3N7Y29uc3RydWN0b3IoYSl7dGhpcy5PS2I9YX1ubmEoKXt9bHJhKCl7fXBRYSgpe31qWmEoKXt9RlphKCl7fX07dmFyIGNXbD1mdW5jdGlvbih7WHRjOmEsSUlkOmI9ZG9jdW1lbnQuYm9keX0pe3ZhciBjPVtdO2lmKGIuY29udGFpbnMoYSkpZm9yKDthJiZhIT09YjthPWEucGFyZW50RWxlbWVudCl7bGV0IGQsZTtmb3IobGV0IGYgb2YoZT0oZD1hLnBhcmVudEVsZW1lbnQpPT1udWxsP3ZvaWQgMDpkLmNoaWxkcmVuKSE9bnVsbD9lOltdKWYhPT1hJiZiV2woZixjKX1lbHNlIGJXbChiLGMpO3JldHVybiBjfSxkV2w9ZnVuY3Rpb24oYSxiKXtyZXR1cm4gYi5tYXAoYz0+Yy5JYSkuZmlsdGVyKGM9PmMhPT12b2lkIDApLmZsYXQoKS5pbmNsdWRlcyhhKX0sYldsPWZ1bmN0aW9uKGEsYil7YS5pZD09PSJzWm10M2IifHxhLmhhc0F0dHJpYnV0ZSgiZGF0YS1vcy1kbmFoIil8fGEuZ2V0QXR0cmlidXRlKCJhcmlhLWhpZGRlbiIpPT09InRydWUifHwoYS5zZXRBdHRyaWJ1dGUoImFyaWEtaGlkZGVuIiwidHJ1ZSIpLGIucHVzaChhKSl9LGVXbD1jbGFzc3tubmEoYSxiLGMpe2N8fChhLklhPWNXbCh7WHRjOmEub3ZlcmxheX0pKX1scmEoYSwKYixjKXtpZighYyl7dmFyIGQ7Zm9yKGxldCBlIG9mKGQ9YS5JYSkhPW51bGw/ZDpbXSllLnJlbW92ZUF0dHJpYnV0ZSgiYXJpYS1oaWRkZW4iKX19cFFhKGEsYil7aWYoIWIpe3ZhciBjPWEua3piO2E9YS5DbGI7dmFyIGQ9YS5vYSE9PXZvaWQgMDtpZihjLm9hIT09dm9pZCAwJiZkKXtsZXQgZTtjLklhPShlPWEuSWEpIT1udWxsP2U6W107Yj1jLklhLmluZGV4T2YoYy5vdmVybGF5KTtiIT09LTEmJihjLklhLnNwbGljZShiLDEpLGMub3ZlcmxheS5yZW1vdmVBdHRyaWJ1dGUoImFyaWEtaGlkZGVuIikpfWVsc2UgdGhpcy5scmEoYSx7fSxiKSx0aGlzLm5uYShjLHt9LGIpfX1qWmEoe01IYzphLFFJOmJ9KXt2YXIgYz1hLm92ZXJsYXk7Yy5nZXRBdHRyaWJ1dGUoImFyaWEtaGlkZGVuIik9PT0idHJ1ZSImJmRXbChjLGIpJiYoYS5PYj0hMCxjLnJlbW92ZUF0dHJpYnV0ZSgiYXJpYS1oaWRkZW4iKSl9RlphKHtBb2M6YSxRSTpifSl7YS5PYiYmZFdsKGEub3ZlcmxheSxiKSYmYS5vdmVybGF5LnNldEF0dHJpYnV0ZSgiYXJpYS1oaWRkZW4iLAoidHJ1ZSIpfX07dmFyIGZXbD1jbGFzc3tubmEoYSxiLGMpe2lmKCFjJiZhLndhIT09NiYmYS53YSE9PTUpe2EudHU9bmV3IF8uR21kKGEub3ZlcmxheSk7dHJ5e18uRG1kKGEudHUpfWNhdGNoKGQpe2EudHU9dm9pZCAwfX19bHJhKGEsYixjKXtpZighYyl7dmFyIGQ7KGQ9YS50dSk9PW51bGx8fF8uRW1kKGQpfX1wUWEoYSxiKXtpZighYil7dmFyIGM9YS5remI7dGhpcy5scmEoYS5DbGIse30sYik7dGhpcy5ubmEoYyx7fSxiKX19alphKCl7fUZaYSgpe319O3ZhciBnV2w9Y2xhc3N7Y29uc3RydWN0b3IoYSl7dGhpcy5QcD1hfW5uYShhLHtvUGE6YixoeGE6Y30sZCl7aWYoZCl7YyYmdGhpcy5QcC5kaXNhYmxlKCk7Zm9yKGxldCBlIG9mIGIpZS5UeSYmKGUuWGI9ZS5UeS5zdHlsZS5vdmVyZmxvd1gsZS5oYz1lLlR5LnN0eWxlLm92ZXJmbG93WSxlLlR5LnN0eWxlLm92ZXJmbG93PSJoaWRkZW4iKX19bHJhKGEse29QYTpiLGh4YTpjfSxkKXtpZighZCl7YyYmdGhpcy5QcC5lbmFibGUoKTtmb3IobGV0IGUgb2YgYilpZihlLlR5KXtsZXQgZjtlLlR5LnN0eWxlLm92ZXJmbG93WD0oZj1lLlhiKSE9bnVsbD9mOiIiO2xldCBnO2UuVHkuc3R5bGUub3ZlcmZsb3dZPShnPWUuaGMpIT1udWxsP2c6IiJ9fX1wUWEoKXt9alphKCl7fUZaYSgpe319O3ZhciBoV2w9Y2xhc3N7Y29uc3RydWN0b3IoYSl7dGhpcy5KaT1hO3RoaXMua2E9MH1ubmEoYSxiLGMpe2lmKGMmJmEud2EhPT02JiZhLkJhJiYodGhpcy5rYSsrLCEodGhpcy5rYT4xKSYmdGhpcy5KaS5pc0F2YWlsYWJsZSgpJiYhXy5xNmMpKXt0aGlzLkppLmVudGVyQmFzaWNNb2RlKDU4KTtiPV8uZnouZ2V0U2Nyb2xsVG9wKCkrXy5mei5nZXRIZWFkZXJQYWRkaW5nSGVpZ2h0KCk7bGV0IGQ7Yz0oZD1hLkVhKSE9bnVsbD9kOndpbmRvdy5zY3JvbGxZO2M8YiYmYS5LYSE9PTImJihhLkVhPWMsXy5mei5maXhlZFVpU2Nyb2xsVG8oMCxiKSk7dGhpcy5Wcz1fLmhlKGRvY3VtZW50LmRvY3VtZW50RWxlbWVudCwic2Nyb2xsIixfLnhJYSl9fWxyYShhLGIsYyl7IWMmJmEud2EhPT02JiZhLkJhJiYodGhpcy5rYS0tLHRoaXMua2E+MHx8IXRoaXMuSmkuaXNBdmFpbGFibGUoKXx8Xy5xNmN8fCh0aGlzLkppLnJlc3RvcmVUb1ByZXZpb3VzU3RhdGUoNTgpLGEuRWEhPT12b2lkIDAmJmEuS2EhPT0KMiYmXy5mei5maXhlZFVpU2Nyb2xsVG8oMCxhLkVhKSx0aGlzLlZzJiZfLkFuKHRoaXMuVnMpLHRoaXMuVnM9dm9pZCAwKSl9cFFhKGEsYil7dmFyIGM9YS5remI7YT1hLkNsYjtjLkJhPT09YS5CYT9ifHwoYy5FYT1hLkVhKTpjLkJhP3RoaXMubm5hKGMse30sYik6YS5CYSYmdGhpcy5scmEoYSx7fSxiKX1qWmEoKXt9RlphKCl7fX07dmFyIGpXbD1mdW5jdGlvbihhLGIpe3ZhciBjPWlXbChiKTtyZXR1cm4gYz09PS0xPyExOiFiLnNsaWNlKGMpLnNvbWUoZD0+ZC5vdmVybGF5LmNvbnRhaW5zKGEpKX0saVdsPWZ1bmN0aW9uKGEpe3JldHVybiBhLm1hcChiPT5iLmthKS5sYXN0SW5kZXhPZighMCl9LGtXbD1mdW5jdGlvbihhLGIsYyxkKXtpZighYy5nZXRTaG91bGRSZXBhcmVudCgpJiZqV2woYSxkKSl0aHJvdyBhPWRbaVdsKGQpXS53YSxjPWMuZ2V0T3ZlcmxheUlkKCksYz1jPT09MD8ibm8gT3ZlcmxheUlkIjpgT3ZlcmxheUlkICR7Y31gLEVycm9yKCJ3dmAiKyhhPT09MD8ibm8gT3ZlcmxheUlkIjpgT3ZlcmxheUlkICR7YX1gKSsiYCIrKGI9PT0yP2BvcGVuIGEgc3RhY2tlZCBvdmVybGF5ICgke2N9KSB0aGF0IGlzIG5vdCBpdHNkZXNjZW5kYW50IGluIHRoZSBET01gOmByZXBsYWNlIGFuIG92ZXJsYXkgc3RhY2tlZCBvbiB0b3Agb2YgaXQgd2l0aCBhbiBvdmVybGF5ICgke2N9KSB0aGF0IGlzIG5vdCBpdHMgZGVzY2VuZGFudCBpbiB0aGUgRE9NYCkpOwp9LGxXbD1mdW5jdGlvbihhLGIpe3JldHVybiBiIGluc3RhbmNlb2Ygc1ZsJiZiLm9hIT09dm9pZCAwJiZqV2woYi5vYS5wYXJlbnQsYSl9LG1XbD1mdW5jdGlvbihhLHtzVTpiLEs0OmMsUUk6ZH0pe2lmKGxXbChkLGIpKXtsZXQgZT1pV2woZCk7Zm9yKGxldCBmIG9mIGEua2EpZi5qWmEoe01IYzpiLFFJOmQsaWxjOmRbZV19KX1pZihsV2woZCxjKSl7Yj1pV2woZCk7Zm9yKGxldCBlIG9mIGEua2EpZS5GWmEoe0FvYzpjLFFJOmQsaWxjOmRbYl19KX19LG5XbD1mdW5jdGlvbihhKXt2YXIgYj1pV2woYSk7cmV0dXJuIGIhPT0tMT97b1BhOmEuc2xpY2UoYiksaHhhOiExfTp7b1BhOmEsaHhhOiEwfX0sb1dsPWZ1bmN0aW9uKGEse3NVOmIsSzQ6YyxRSTpkfSxlKXtiPShiPT1udWxsPzA6Yi5rYSk/Yjp2b2lkIDA7Yz0oYz09bnVsbD8wOmMua2EpP2M6dm9pZCAwO2lmKGImJiFjKXt2YXIgZj1uV2woZCk7Zm9yKHZhciBnIG9mIGEua2EpZy5ubmEoYixmLGUpfWVsc2UgaWYoIWImJmMpe2c9Cm5XbChkKTtmb3IoZiBvZiBhLmthKWYubHJhKGMsZyxlKX1lbHNlIGlmKGImJmMpZm9yKGxldCBoIG9mIGEua2EpaC5wUWEoe2t6YjpiLENsYjpjfSxlKX0scFdsPWZ1bmN0aW9uKGEse3NVOmIsUUk6Y30pe2lmKGImJmIuQWE9PT12b2lkIDAmJmxXbChjLGIpJiYoYT1pV2woYyksYSE9PS0xKSl7Yz1jW2FdO3ZhciBkOyhhPShkPWMudHUpPT1udWxsP3ZvaWQgMDpfLkNtZChkLDEpKT9iLkFhPWE6Yi5BYT1jLm92ZXJsYXl9fSxxV2w9Y2xhc3N7Y29uc3RydWN0b3IoYSl7dGhpcy5rYT1hfX07dmFyIHNXbD1mdW5jdGlvbihhLHtLNDpiLFFJOmMsYjY6ZH0pe2ImJihhLk5xLnVubGlzdGVuKGIub3ZlcmxheSkscldsKGEsYikpO2ZvcihsZXQgZSBvZiBkKXtpZihlPDB8fGU+PWMubGVuZ3RoKWNvbnRpbnVlO2I9Y1tlXTthLk5xLnVubGlzdGVuKGIub3ZlcmxheSwhMSk7cldsKGEsYil9fSx1V2w9ZnVuY3Rpb24oe3NVOmEsSzQ6YixiNjpjLFFJOmQsZlFiOmV9KXtpZighZSl7aWYoYilmb3IobGV0IGYgb2YgdFdsKGIpKXthOntiPWQ7Zm9yKGU9Yi5sZW5ndGgtMTtlPj0wO2UtLSlpZih0V2woYltlXSkuaW5jbHVkZXMoZikpe2I9ZTticmVhayBhfWI9LTF9Y1tmXT1ifWlmKGEpZm9yKGxldCBmIG9mIHRXbChhKSljW2ZdPWQubGVuZ3RofX0seFdsPWZ1bmN0aW9uKGEse3NVOmIsUUk6YyxiNjpkfSl7Yj1jLmNvbmNhdChiP1tiXTpbXSk7aWYoYi5sZW5ndGghPT0wKXtjPXZXbCh7YjY6ZCx4UGM6Yn0pO2Q9Yi5tYXAoZT0+ZS5rYSkubGFzdEluZGV4T2YoITApO2ZvcihsZXQgW2UsCmZdb2YgYy5lbnRyaWVzKCkpYz1lLGM8ZHx8d1dsKGEsYltjXSxmKX19LHpXbD1mdW5jdGlvbihhLGIsYyl7dmFyIHtybmE6ZCxjRmE6ZSxiRmE6Zn09YyE9bnVsbD9jOnlXbDtkPT09NSYmKGQ9MCk7Yz17Z2V0RGlzbWlzc0V2ZW50VHlwZTooKT0+ZCxnZXROb2RlOigpPT5lIT1udWxsP2U6dm9pZCAwLGdldEV2ZW50OigpPT5mLGdldEFmdGVyRGlzbWlzczooKT0+Yn07dHJ5e3ZhciBnPWEuUWIoYyl9Y2F0Y2goaCl7Zz0hMX1yZXR1cm4gZ30sQldsPWFzeW5jIGZ1bmN0aW9uKGEsYixjLGQse3JuYTplLGNGYTpmfSl7YT1jW2RbZV1dO2lmKGE9PT12b2lkIDB8fGEub3ZlcmxheSE9PWIpcmV0dXJuLTE7c3dpdGNoKGUpe2Nhc2UgMTpyZXR1cm4gbmV3IFByb21pc2UoZz0+eygwLF8uam8pKCgpPT57ZyhBV2woe2FNYjpmLHN0YWNrOmMsYkZhOmV9KSl9LDApfSk7Y2FzZSAzOnJldHVybiBBV2woe2FNYjpmLHN0YWNrOmMsYkZhOmV9KTtjYXNlIDI6cmV0dXJuIGRbZV07Y2FzZSA1OnJldHVybiBkW2VdOwpjYXNlIDQ6cmV0dXJuIGI9PT1jW2MubGVuZ3RoLTFdLm92ZXJsYXk/Yy5sZW5ndGgtMTotMTtkZWZhdWx0OnRocm93IEVycm9yKCJ4dmAiK2UpO319LENXbD1hc3luYyBmdW5jdGlvbihhLGIsYyxkLHtybmE6ZSxjRmE6ZixiRmE6Z30saCl7dmFyIGs9KDAsXy5NZikoKSxtPWsoKTtrPWsoMSk7dHJ5e2xldCBuPWsoYXdhaXQgbShCV2woYSxiLm92ZXJsYXksYyxkLHtybmE6ZSxjRmE6Zn0pKSk7aWYobj09PS0xKWEuTWYoe1FJOmMsYjY6ZCxmUWI6MH0pO2Vsc2UgcmV0dXJuIGgoY1tuXS5vdmVybGF5LHtybmE6ZSxjRmE6ZixiRmE6Z30pfWZpbmFsbHl7bSgpfX0sdldsPWZ1bmN0aW9uKHtiNjphLHhQYzpifSl7dmFyIGM9bmV3IE1hcCxkPVsxLDIsMyw1XSxlPWJbYi5sZW5ndGgtMV0uR2EuZXZlbnRUeXBlcy5maWx0ZXIoZj0+IWQuaW5jbHVkZXMoZikpO2Muc2V0KGIubGVuZ3RoLTEsZSk7Zm9yKGxldCBmIG9mIGQpe2I9YVtmXTtpZihiPDApY29udGludWU7bGV0IGc7ZT0oZz1jLmdldChiKSkhPQpudWxsP2c6W107ZS5wdXNoKGYpO2Muc2V0KGIsZSl9cmV0dXJuIGN9LHdXbD1mdW5jdGlvbihhLGIsYyl7aWYoYy5sZW5ndGghPT0wKXtjLmluY2x1ZGVzKDQpO2lmKGMuaW5jbHVkZXMoNSkpe2xldCBkO2Eua2EudFNjKGIub3ZlcmxheSxtVmwoYi5BYiksKGQ9Yi5hbmltYXRpb24pPT1udWxsP3ZvaWQgMDpkLnN3aXBlVG9EaXNtaXNzKTtiLlNhPV8uVmcoYi5vdmVybGF5LCJWT3k4eGUiLCgpPT57YS5vbkRpc21pc3MoYix7cm5hOjUsY0ZhOmIub3ZlcmxheX0pfSl9Yz1EV2woYyk7YS5OcS5saXN0ZW4oYi5vdmVybGF5LChkLGUsZik9PntpZihkPT09MClyZXR1cm4hMTt0cnl7YS5vbkRpc21pc3MoYix7cm5hOmQsY0ZhOmUsYkZhOmZ9KX1jYXRjaChnKXt9cmV0dXJuITB9LGMsYS5LYywhMSxiLkdhLm5BYixiLkdhLnFjYixiLkdhLkZMKX19LERXbD1mdW5jdGlvbihhKXt2YXIgYj1PYmplY3QudmFsdWVzKG9WbCkubGVuZ3RoLTE7cmV0dXJuIGEuZmlsdGVyKGM9PmM8PWIpfSxyV2w9CmZ1bmN0aW9uKGEsYil7Yi5TYSYmKF8uVWcoYi5TYSksYi5TYT12b2lkIDAsYS5rYS51bnN1YnNjcmliZSgpKX0sdFdsPWZ1bmN0aW9uKGEpe3ZhciBiPWEuR2EuZXZlbnRUeXBlcy5zbGljZSgpO2EuUGImJihhPW1WbChhLkFiKS51TWEpJiZhLmxlbmd0aD4wJiZiLnB1c2goNSk7cmV0dXJuIGJ9LEFXbD1mdW5jdGlvbih7YU1iOmEsc3RhY2s6YixiRmE6Y30pe2lmKCEoYSBpbnN0YW5jZW9mIEVsZW1lbnQpKXJldHVybi0xO3ZhciBkPS0xO2ZvcihsZXQgZz1iLmxlbmd0aC0xO2c+PTAmJiFfLiRnKGJbZ10ub3ZlcmxheSxhKTtnLS0pe3ZhciBlPWEsZj1iW2ddO2lmKGYubmImJl8uJGcoZi5uYixlKSl7YT1iW2ddO2EucmImJmEub3ZlcmxheS5zZXRBdHRyaWJ1dGUoImRhdGEtaW5vIiwiIik7ZD1iW2ddLnJiP2c6ZDticmVha317bGV0IGg9Zj12b2lkIDA7ZT1jIT09Mz8hMTooZj0oaD1iW2ddLk5hKT09bnVsbD92b2lkIDA6Xy55bWQoaCxhKSkhPW51bGw/ZjohMX1pZihlKWJyZWFrOwpFV2woYltnXSxjKSYmKGQ9Zyk7aWYoYltnXS5rYSlicmVha31yZXR1cm4gZH0sRVdsPWZ1bmN0aW9uKGEsYil7cmV0dXJuIGI9PT0xP1sxLDNdLnNvbWUoYz0+YS5HYS5ldmVudFR5cGVzLmluY2x1ZGVzKGMpKTphLkdhLmV2ZW50VHlwZXMuaW5jbHVkZXMoMyl9LEZXbD1jbGFzc3tjb25zdHJ1Y3RvcihhLGIsYyxkKXt0aGlzLm9uRGlzbWlzcz1hO3RoaXMuTnE9Yjt0aGlzLmthPWM7dGhpcy5LYz1kfU1mKGEpe3NXbCh0aGlzLGEpO3VXbChhKTt4V2wodGhpcyxhKX19LHlXbD17cm5hOjB9O3ZhciBHV2w9ZnVuY3Rpb24oe3NVOmEsb3B0aW9uczpifSl7aWYoYSYmYS53YSE9PTYpe3ZhciBjPWI9PW51bGw/dm9pZCAwOmIuZ2V0RWxlbWVudFRvRm9jdXMoKTtpZihjJiZfLiRnKGEub3ZlcmxheSxjKSYmXy50bWQoYywtMSkpcmV0dXJuIGM7aWYoYS5rYSlyZXR1cm4gYj09bnVsbHx8Yi5nZXRBbGxvd05vRm9jdXNhYmxlRGVzY2VuZGFudHMoKSxiPWEudHU/Xy5CbWQoYS50dSk6YS5OYT9QVmwoYS5OYSk6Xy5ybWQoYS5vdmVybGF5LC0xKSwoYj1iLmxlbmd0aD4wP2JbMF06dm9pZCAwKT9hPWI6KGEub3ZlcmxheS50YWJJbmRleD0tMSxhPWEub3ZlcmxheSksYX19LEhXbD1mdW5jdGlvbih7c1U6YSxLNDpifSl7YiYmIWIua2EmJihiLkliPV8uJGcoYi5vdmVybGF5LGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQpKTthJiZhLlphPT09MSYmKGEuUGE9e2VsOmRvY3VtZW50LmFjdGl2ZUVsZW1lbnQscHJldmVudFNjcm9sbDohYS5rYXx8KGI9PW51bGw/MDpiLlBhLnByZXZlbnRTY3JvbGwpPwohMDohMX0pfTt2YXIgSVdsPWZ1bmN0aW9uKGEse3NVOmIsUUk6Y30peyh7aHhhOmN9PWxWbChjKSk7aWYoYyYmYiYmYi5rYSYmYS53YS5pbmNsdWRlcyhiLndhKSYmKGEub2E9aGlzdG9yeS5zY3JvbGxSZXN0b3JhdGlvbixoaXN0b3J5LnNjcm9sbFJlc3RvcmF0aW9uPSJtYW51YWwiLCFhLmthLmVuYWJsZWQpKXtiLkVhPXdpbmRvdy5zY3JvbGxZO2M9Z2V0Q29tcHV0ZWRTdHlsZShkb2N1bWVudC5ib2R5KTt2YXIgZD1nZXRDb21wdXRlZFN0eWxlKGRvY3VtZW50LmRvY3VtZW50RWxlbWVudCk7YS5rYS51UWI9ZC5vdmVyc2Nyb2xsQmVoYXZpb3I7YS5rYS5vTWI9Yy5vdmVyc2Nyb2xsQmVoYXZpb3I7YS5rYS52UWI9ZC5wb3NpdGlvbjthLmthLnBNYj1jLnBvc2l0aW9uO2Eua2EucU1iPWRvY3VtZW50LmJvZHkuc3R5bGUudG9wO2Eua2Euc01iPWRvY3VtZW50LmJvZHkuc3R5bGUud2lkdGg7ZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LnN0eWxlLm92ZXJzY3JvbGxCZWhhdmlvcj0iY29udGFpbiI7ZG9jdW1lbnQuYm9keS5zdHlsZS5vdmVyc2Nyb2xsQmVoYXZpb3I9CiJjb250YWluIjtkb2N1bWVudC5ib2R5LnN0eWxlLnRvcD1gJHstMSpiLkVhfXB4YDtkb2N1bWVudC5ib2R5LnN0eWxlLndpZHRoPSIxMDAlIjtkb2N1bWVudC5ib2R5LnN0eWxlLnBvc2l0aW9uPSJmaXhlZCI7YS5rYS5lbmFibGVkPSEwfX0sSldsPWZ1bmN0aW9uKGEse3NVOmIsSzQ6YyxRSTpkfSl7KHtoeGE6ZH09bFZsKGQpKTshZHx8YiYmYi5rYXx8IWN8fCFjLmthfHwoYS5vYSYmKGhpc3Rvcnkuc2Nyb2xsUmVzdG9yYXRpb249YS5vYSxhLm9hPW51bGwpLGEua2EuZW5hYmxlZCYmKGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5zdHlsZS5vdmVyc2Nyb2xsQmVoYXZpb3I9YS5rYS51UWIsZG9jdW1lbnQuYm9keS5zdHlsZS5vdmVyc2Nyb2xsQmVoYXZpb3I9YS5rYS5vTWIsZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LnN0eWxlLnBvc2l0aW9uPWEua2EudlFiLGRvY3VtZW50LmJvZHkuc3R5bGUudG9wPWEua2EucU1iLGRvY3VtZW50LmJvZHkuc3R5bGUucG9zaXRpb249YS5rYS5wTWIsCmRvY3VtZW50LmJvZHkuc3R5bGUud2lkdGg9YS5rYS5zTWIsd2luZG93LnNjcm9sbFRvKDAsYy5FYSksYS5rYS5lbmFibGVkPSExKSl9LEtXbD1jbGFzc3tjb25zdHJ1Y3Rvcigpe3RoaXMub2E9bnVsbDt0aGlzLmthPXtlbmFibGVkOiExLHVRYjoiIix2UWI6IiIsb01iOiIiLHBNYjoiIixxTWI6IiIsc01iOiIiLHNjcm9sbFk6MH07dGhpcy53YT1fLnM2Yz9bOCw1XTpbOF19fTt2YXIgTFdsPWZ1bmN0aW9uKGEpe3JldHVybiBhLnN0YWNrLmxlbmd0aD4wP2Euc3RhY2tbYS5zdGFjay5sZW5ndGgtMV06dm9pZCAwfSxRV2w9ZnVuY3Rpb24oYSxiLGMpe3JldHVybiBNV2woYSxhc3luYygpPT57dmFyIGQ9KDAsXy5NZikoKSxlPWQoKTtkPWQoMSk7dHJ5e2lmKCFhLmlzT3BlbihiKSlpZihiLmhhc0F0dHJpYnV0ZSgiZGF0YS1pbm8iKSliLnJlbW92ZUF0dHJpYnV0ZSgiZGF0YS1pbm8iKTtlbHNle3ZhciBmPU5XbChhLGMpO2lmKGYhPT00KXt0cnl7a1dsKGIsZixjLGEuUUkoYS5zdGFjayxmKSl9Y2F0Y2gobSl7cmV0dXJufXZhciBnPW5ldyBfLk1xLGg9ITEsaz0hMTtmPT09MyYmKGg9eldsKExXbChhKSxnLnByb21pc2UpLGh8fChmPTIsa1dsKGIsZixjLGEuUUkoYS5zdGFjayxmKSkpKTt0cnl7ZChhd2FpdCBlKE9XbChhLGYsYixjKSkpLGs9ITB9ZmluYWxseXtkKCksaCYmaz9nLnJlc29sdmUoKTooUFdsKGcucHJvbWlzZSksZy5yZWplY3QoKSl9fX19ZmluYWxseXtlKCl9fSl9LApTV2w9ZnVuY3Rpb24oYSxiKXtNV2woYSxhc3luYygpPT57dmFyIGM9KDAsXy5NZikoKSxkPWMoKTtjPWMoMSk7dHJ5e2MoYXdhaXQgZChSV2woYSxiKSkpfWZpbmFsbHl7ZCgpfX0pfSxNV2w9ZnVuY3Rpb24oYSxiKXt2YXIgYz1uZXcgXy5NcSxkPWEub2E7YS5vYT1jLnByb21pc2U7Yy5wcm9taXNlLmZpbmFsbHkoKCk9PnthLm9hPT09Yy5wcm9taXNlJiYoYS5vYT12b2lkIDApfSk7ZD9kLmZpbmFsbHkoKCk9PmMucmVzb2x2ZShiKCkpKTpjLnJlc29sdmUoYigpKTtyZXR1cm4gYy5wcm9taXNlfSxOV2w9ZnVuY3Rpb24oYSxiKXthPUxXbChhKTtpZihhPT09dm9pZCAwKXJldHVybiAwO2E9YS56MGE7Yj1iLmdldE92ZXJsYXlJZCgpO2lmKGIhPT0wKXtpZihhLlZtYy5pbmNsdWRlcyhiKSlyZXR1cm4gNDtpZihhLnlQYy5pbmNsdWRlcyhiKSlyZXR1cm4gMjtpZihhLmVMYy5pbmNsdWRlcyhiKSlyZXR1cm4gM31zd2l0Y2goYS5kZWZhdWx0KXtjYXNlIDI6cmV0dXJuIDM7Y2FzZSAxOnJldHVybiAyOwpkZWZhdWx0OnJldHVybiAyfX0sT1dsPWFzeW5jIGZ1bmN0aW9uKGEsYixjLGQpe3ZhciBlPSgwLF8uTWYpKCksZj1lKCksZz1lKDEpO3RyeXtlPWIhPT0xO2xldCBtPWI9PT0xfHxiPT09MyxuPWU/bmV3IHNWbChjLGQpOnZvaWQgMCxwPW0/TFdsKGEpOnZvaWQgMCxyPWEuUUkoYS5zdGFjayxiKSx4PXt0cmFuc2l0aW9uOmIsc1U6bixLNDpwLG9wdGlvbnM6ZCxRSTpyLGI2OmEuYjZ9O0hXbCh4KTtfLnI2YyYmSldsKGEuQmEseCk7b1dsKGEua2EseCwhMCk7Zyhhd2FpdCBmKFhWbChhLkFhLHgpKSk7Xy5yNmMmJklXbChhLkJhLHgpO3BXbChhLmthLHgpO1lWbChhLkFhLHgpO21XbChhLmthLHgpO29XbChhLmthLHgsITEpO2Eud2EuTWYoeCk7bGV0IHo9eC50cmFuc2l0aW9uLEI9eC5zVSxIPXguSzQsSj1uVmwoKTtpZihIKWE6e3ZhciBoPUguWmE7bGV0IFE9SC5QYTtzd2l0Y2goaCl7Y2FzZSA0Oko9blZsKCk7YnJlYWsgYTtjYXNlIDE6Sj1ILmthP1E6SC5JYnx8IWRvY3VtZW50Lmhhc0ZvY3VzKCl8fApkb2N1bWVudC5hY3RpdmVFbGVtZW50PT09ZG9jdW1lbnQuYm9keT9ROm5WbCgpO2JyZWFrIGE7ZGVmYXVsdDpiPUg7aD1oPT09MztpZihiLkliKWlmKGIuQWEpe2xldCBaPV8udW1kKGIuQWEpO3ZhciBrPWg/Wj9iLkFhOl8ueG1kKGIuQWEpOmNWbChiLkFhKX1lbHNlIGs9aD9fLnhtZChiLm92ZXJsYXkpOmNWbChiLm92ZXJsYXkpO2Vsc2Ugaz12b2lkIDA7Sj17ZWw6ayxwcmV2ZW50U2Nyb2xsOiEwfX19QiYmej09PTMmJkouZWwmJihCLlBhPUopO2xldCBOPUdXbCh4KTtOP04uZm9jdXMoe3ByZXZlbnRTY3JvbGw6ITB9KTpKLmVsJiZKLmVsLmZvY3VzKHtwcmV2ZW50U2Nyb2xsOkoucHJldmVudFNjcm9sbH0pO20mJmEuc3RhY2sucG9wKCk7ZSYmYS5zdGFjay5wdXNoKG4pfWZpbmFsbHl7ZigpfX0sUFdsPWZ1bmN0aW9uKGEpe2EudGhlbigoKT0+e30sKCk9Pnt9KX0sUldsPWFzeW5jIGZ1bmN0aW9uKGEsYixjKXt2YXIgZD0oMCxfLk1mKSgpLGU9ZCgpO2Q9ZCgxKTt0cnl7bGV0IGY9ClRXbChhLGIpO2YhPT0tMSYmZChhd2FpdCBlKFVXbChhLGYsYykpKX1maW5hbGx5e2UoKX19LFRXbD1mdW5jdGlvbihhLGIpe3JldHVybiBhLnN0YWNrLmZpbmRJbmRleChjPT5jLm92ZXJsYXk9PT1iKX0sVVdsPWFzeW5jIGZ1bmN0aW9uKGEsYixjKXt2YXIgZD0oMCxfLk1mKSgpLGU9ZCgpO2Q9ZCgxKTt0cnl7Zm9yKGxldCBmPWEuc3RhY2subGVuZ3RoLTE7Zj49YjtmLS0pe2xldCBnPW5ldyBfLk1xLGg9ITE7aWYoeldsKGEuc3RhY2tbZl0sZy5wcm9taXNlLGMpKXRyeXtkKGF3YWl0IGUoT1dsKGEsMSkpKSxoPSEwfWZpbmFsbHl7ZCgpLGg/Zy5yZXNvbHZlKCk6KFBXbChnLnByb21pc2UpLGcucmVqZWN0KCkpfWVsc2V7YS53YS5NZih7UUk6YS5zdGFjayxiNjphLmI2LGZRYjoxfSk7UFdsKGcucHJvbWlzZSk7Zy5yZWplY3QoKTticmVha319fWZpbmFsbHl7ZSgpfX07Cl8uYWcoXy5hWmEsY2xhc3MgZXh0ZW5kcyBfLnNve3N0YXRpYyBRYSgpe3JldHVybntzZXJ2aWNlOntkaXNtaXNzOl8uSngsUHA6Xy5zM2Isc3dpcGVUb0Rpc21pc3M6Xy5hVmwsamY6Xy5SdSxPS2I6Xy5VVGx9fX1jb25zdHJ1Y3RvcihhKXtzdXBlcigpO3RoaXMuS2M9Xy5CZCgiTFZJWFhiIikuVGcoXy5WbywxKT09PTE7dGhpcy5BYT1uZXcgJFZsO3RoaXMuQmE9bmV3IEtXbDt0aGlzLnN0YWNrPVtdO3RoaXMuYjY9QXJyYXkoT2JqZWN0LnZhbHVlcyhyVmwpLmxlbmd0aCk7dGhpcy53YT1uZXcgRldsKHRoaXMuRWEuYmluZCh0aGlzKSxhLnNlcnZpY2UuZGlzbWlzcyxhLnNlcnZpY2Uuc3dpcGVUb0Rpc21pc3MsdGhpcy5LYyk7dGhpcy5iNi5maWxsKC0xKTt0aGlzLmthPV8uQUdlP25ldyBxV2woW25ldyBlV2wsbmV3IGZXbCxuZXcgZ1dsKGEuc2VydmljZS5QcCksbmV3IGhXbChhLnNlcnZpY2UuamYpLG5ldyBhV2woYS5zZXJ2aWNlLk9LYildKTpuZXcgcVdsKFtuZXcgZVdsLG5ldyBmV2wsCm5ldyBnV2woYS5zZXJ2aWNlLlBwKSxuZXcgaFdsKGEuc2VydmljZS5qZildKX1vcGVuKGEsYil7cmV0dXJuIFFXbCh0aGlzLGEsYi5idWlsZCgpKX1jbG9zZShhKXtTV2wodGhpcyxhKX1pc09wZW4oYSl7cmV0dXJuIHRoaXMuc3RhY2suc29tZShiPT5iLm92ZXJsYXk9PT1hKX1pc1Njcm9sbERpc2FibGVkKCl7cmV0dXJuIHRoaXMuc3RhY2suc29tZShhPT5hLmthKX1vcGVuQ3Jvc3NNb2R1bGVzZXQoYSxiKXtyZXR1cm4gUVdsKHRoaXMsYSxiKX1jbG9zZUNyb3NzTW9kdWxlc2V0KGEpe1NXbCh0aGlzLGEpfUVhKGEsYil7TVdsKHRoaXMsYXN5bmMoKT0+e3ZhciBjPSgwLF8uTWYpKCksZD1jKCk7Yz1jKDEpO3RyeXtjKGF3YWl0IGQoQ1dsKHRoaXMud2EsYSx0aGlzLnN0YWNrLHRoaXMuYjYsYixhc3luYyhlLGYpPT57dmFyIGc9KDAsXy5NZikoKSxoPWcoKTtnPWcoMSk7dHJ5e2coYXdhaXQgaChSV2wodGhpcyxlLGYpKSl9ZmluYWxseXtoKCl9fSkpKX1maW5hbGx5e2QoKX19KX1hc3luYyBjbG9zZUFsbEZvclBhZ2VUcmFuc2l0aW9uKCl7dmFyIGE9CigwLF8uTWYpKCksYj1hKCk7YT1hKDEpO3RyeXtyZXR1cm4gYShhd2FpdCBiKE1XbCh0aGlzLGFzeW5jKCk9Pnt2YXIgYz0oMCxfLk1mKSgpLGQ9YygpO2M9YygxKTt0cnl7Yyhhd2FpdCBkKFVXbCh0aGlzLDApKSl9ZmluYWxseXtkKCl9fSkpKSx0aGlzLnN0YWNrLmxlbmd0aD09PTB9ZmluYWxseXtiKCl9fVFJKGEsYil7cmV0dXJuIGI9PT0xfHxiPT09Mz9hLnNsaWNlKDAsLTEpOmF9fSk7Cl8udigpOwp9Y2F0Y2goZSl7Xy5fRHVtcEV4Y2VwdGlvbihlKX0KdHJ5ewpfLnUoIllWNWJlZSIpOwpfLm95PW5ldyBfLlRmKF8uV3EpOwpfLnYoKTsKfWNhdGNoKGUpe18uX0R1bXBFeGNlcHRpb24oZSl9CnRyeXsKdmFyIE5uYjtfLiRyPWZ1bmN0aW9uKGEsYil7YSU9YjtyZXR1cm4gYSpiPDA/YStiOmF9O18uTW5iPWZ1bmN0aW9uKGEsYil7dGhpcy5rYT1hO3RoaXMub2E9Yn07Tm5iPWZ1bmN0aW9uKGEsYil7dmFyIGM9Xy56aShhKSxkPV8uV2QoYyk7cmV0dXJuIG5ldyBfLlNnKGU9PnsoZnVuY3Rpb24gZygpe3ZhciBoPV8uWFFhKGMsYik7aC5zaXplKCk+MHx8ZC5yZWFkeVN0YXRlPT0iY29tcGxldGUiP2UoaCk6Xy5lYS5zZXRUaW1lb3V0KGcsNTApfSkoKX0pfTtfLk9uYj1mdW5jdGlvbihhLGIpe2EubGVuZ3RoJiYoYiU9YS5sZW5ndGgsYj4wP0FycmF5LnByb3RvdHlwZS51bnNoaWZ0LmFwcGx5KGEsYS5zcGxpY2UoLWIsYikpOmI8MCYmQXJyYXkucHJvdG90eXBlLnB1c2guYXBwbHkoYSxhLnNwbGljZSgwLC1iKSkpO3JldHVybiBhfTtfLmFzPWZ1bmN0aW9uKGEpe2RlbGV0ZSBfLkVxYVthXX07Cl8uUG5iPWZ1bmN0aW9uKGEsYixjKXthPU9iamVjdC5hc3NpZ24oe30se190eXBlOmF9LHt0eXBlOmEsZGF0YTpiLFFSYzpjfSk7dHJ5e3ZhciBkPWRvY3VtZW50LmNyZWF0ZUV2ZW50KCJDdXN0b21FdmVudCIpO2QuaW5pdEN1c3RvbUV2ZW50KCJfY3VzdG9tIiwhMCwhMSxhKX1jYXRjaChlKXtkPWRvY3VtZW50LmNyZWF0ZUV2ZW50KCJIVE1MRXZlbnRzIiksZC5pbml0RXZlbnQoIl9jdXN0b20iLCEwLCExKSxkLmRldGFpbD1hfXJldHVybiBkfTtfLlFuYj1mdW5jdGlvbihhLGIsYyxkKXtiPV8uUG5iKGIsYyxkKTthLmRpc3BhdGNoRXZlbnQoYil9O18uUm5iPWZ1bmN0aW9uKGEsYixjLGQpe18uV3JhKCkmJl8uWHJhLmdldChhKSYmKGE9Xy5WcmEoYSksIWMmJmImJihjPV8uamcoYikpLF8uWGcoYnx8ZG9jdW1lbnQuYm9keSxhLHtlbGVtZW50OmIsZGF0YXNldDpjLGV2ZW50OmQsZEo6dm9pZCAwLFJ0YjohMH0pKX07Cl8uU25iPWZ1bmN0aW9uKGEsYil7c3dpdGNoKF8uV3dhKGIpKXtjYXNlIDE6YS5kaXIhPT0ibHRyIiYmKGEuZGlyPSJsdHIiKTticmVhaztjYXNlIC0xOmEuZGlyIT09InJ0bCImJihhLmRpcj0icnRsIik7YnJlYWs7ZGVmYXVsdDphLnJlbW92ZUF0dHJpYnV0ZSgiZGlyIil9fTtfLlRuYj1mdW5jdGlvbigpe3ZhciBhPV8uUkVhKF8uUUVhKG5ldyBfLlRFYSkpLGI9bmV3IFNldChhLmthLkFhKTtiLmFkZCgiaWQiKTthLmthPW5ldyBfLkZFYShhLmthLndhLGEua2Eua2EsYixhLmthLkJhLGEua2Eub2EpO3JldHVybiBhfTtfLlVuYj1mdW5jdGlvbihhLGIpe3JldHVybiBfLk9tKGEsYil9O18uY3M9ZnVuY3Rpb24oYSl7YS5zdG9wUHJvcGFnYXRpb24oKX07Xy5VaShfLk1uYixfLm5uYSk7Xy5NbmIucHJvdG90eXBlLnNldD1mdW5jdGlvbihhLGIpe3RyeXt0aGlzLmthLnNldChhLGIpfWNhdGNoKGMpe3RoaXMub2EoYywic2V0IixhLGIpfX07Cl8uTW5iLnByb3RvdHlwZS5nZXQ9ZnVuY3Rpb24oYSl7dHJ5e3JldHVybiB0aGlzLmthLmdldChhKX1jYXRjaChiKXtyZXR1cm4gdGhpcy5vYShiLCJnZXQiLGEpLG51bGx9fTtfLk1uYi5wcm90b3R5cGUucmVtb3ZlPWZ1bmN0aW9uKGEpe3RyeXt0aGlzLmthLnJlbW92ZShhKX1jYXRjaChiKXt0aGlzLm9hKGIsInJlbW92ZSIsYSl9fTsKXy5kcz1mdW5jdGlvbihhLGIpe2EuZWFjaChmdW5jdGlvbihjKXt2YXIgZD1jLnR5cGU7c3dpdGNoKHR5cGVvZiBkPT09InN0cmluZyImJmQudG9Mb3dlckNhc2UoKSl7Y2FzZSAiY2hlY2tib3giOmNhc2UgInJhZGlvIjpjLmNoZWNrZWQ9YjticmVhaztjYXNlICJzZWxlY3Qtb25lIjpjLnNlbGVjdGVkSW5kZXg9LTE7aWYodHlwZW9mIGI9PT0ic3RyaW5nIilmb3IodmFyIGU9MDtkPWMub3B0aW9uc1tlXTtlKyspaWYoZC52YWx1ZT09Yil7ZC5zZWxlY3RlZD0hMDticmVha31icmVhaztjYXNlICJzZWxlY3QtbXVsdGlwbGUiOmQ9Yjt0eXBlb2YgZD09PSJzdHJpbmciJiYoZD1bZF0pO2ZvcihsZXQgZj0wO2U9Yy5vcHRpb25zW2ZdO2YrKylpZihlLnNlbGVjdGVkPSExLGQpe2xldCBnO2ZvcihsZXQgaD0wO2c9ZFtoXTtoKyspZS52YWx1ZT09ZyYmKGUuc2VsZWN0ZWQ9ITApfWJyZWFrO2RlZmF1bHQ6Yy52YWx1ZT1iIT1udWxsP2I6IiJ9fSl9OwpfLlZuYj1mdW5jdGlvbihhLGIpe3JldHVybiBfLkFvKGEsJ1tqc25hbWU9IicrYisnIl0nKX07Xy5lcz1mdW5jdGlvbihhKXtpZihhLmYkLmNRYSlyZXR1cm4gYS5mJC5jUWE7YS5mJC5jUWE9bmV3IF8uYWUoYSk7YS5pc0Rpc3Bvc2VkKCl8fGEuYWRkT25EaXNwb3NlQ2FsbGJhY2soKCk9PnthLmYkLmNRYS5kaXNwb3NlKCk7ZGVsZXRlIGEuZiQuY1FhfSk7cmV0dXJuIGEuZiQuY1FhfTtfLlduYj1mdW5jdGlvbihhLGIpe3JldHVybiBObmIoYS5wTSxiKS50aGVuKGM9PntpZihjLnNpemUoKT4wKXJldHVybiBjLmVxKDApO3Rocm93IF8uWlFhKGEsYik7fSl9O18uWG5iPWZ1bmN0aW9uKGEpe3JldHVybiBhLmxhc3RFbGVtZW50Q2hpbGQhPT12b2lkIDA/YS5sYXN0RWxlbWVudENoaWxkOl8uRUhhKGEubGFzdENoaWxkLCExKX07Xy5ZbmI9ZnVuY3Rpb24oYSl7cmV0dXJuIG5ldyBfLktkKGEub2Zmc2V0TGVmdCxhLm9mZnNldFRvcCl9O18uZnM9ZnVuY3Rpb24oYSl7cmV0dXJuIF8ubW4oYSkueH07Cl8uWm5iPWZ1bmN0aW9uKGEpe2lmKCFhLmdldEJvdW5kaW5nQ2xpZW50UmVjdClyZXR1cm4gbnVsbDthPV8ucklhKF8uaUlhLGEpO3JldHVybiBuZXcgXy5MZChhLnJpZ2h0LWEubGVmdCxhLmJvdHRvbS1hLnRvcCl9O18uZ3M9ZnVuY3Rpb24oYSxiLGMpe3ZhciBkPTAsZT1mdW5jdGlvbigpe2Q9MH07cmV0dXJuIGZ1bmN0aW9uKGYpe2R8fChkPV8uZWEuc2V0VGltZW91dChlLGIpLGEuYXBwbHkoYyxhcmd1bWVudHMpKX19O18uJG5iPWZ1bmN0aW9uKGEpe3JldHVybiBhIGluc3RhbmNlb2YgXy53bz9hLmVsKCk6YX07Xy5ocz1jbGFzcyBleHRlbmRzIF8uQWh7c3RhdGljIFFhKCl7cmV0dXJue319am5hKGEpe18uV05hKHRoaXMsYSl9b3QoYSl7Xy5YTmEodGhpcyxhKX19Owp9Y2F0Y2goZSl7Xy5fRHVtcEV4Y2VwdGlvbihlKX0KdHJ5ewp2YXIgYm9iLGNvYixlb2IsZm9iO2JvYj1mdW5jdGlvbihhKXtyZXR1cm4gXy5UYShiPT4oMCxfLnhDYSkoYSkmJk9iamVjdC5nZXRQcm90b3R5cGVPZihiKT09PWEucHJvdG90eXBlKX07Xy5kb2I9ZnVuY3Rpb24oYSxiKXtyZXR1cm4gXy50b2EoYSk/e0lyOmBjaGlsZHJlbigke2J9KTogJHtfLnFmKGEpfWAsW18uQmZdOihjLGQpPT57dmFyIGU9Xy5Bb2EoKSxmPV8ud29hKCk7ZT1fLllRYSgwLGUsbnVsbCxiLGYpO3ZhciBnPWI/YCB3aXRoIGpzbmFtZSAke2J9YDoiIjtlLm1hcChoPT57Zm9yKGxldCBrIG9mIGgpXy5EYmEoayxib2IoYSksYEV4cGVjdGVkIGVsZW1lbnQke2d9IHRvIGhhdmUgY29udHJvbGxlciBvZiB0eXBlICR7Xy5xZihhKX0gYnV0IGZvdW5kICR7Xy5xZihrKX1gKTtyZXR1cm4gaH0pLkl4KGMsZCl9fTp7SXI6YGNoaWxkcmVuKCR7Yn0pOiAke18ucWYoYSl9YCxlejpfLnBvYShudWxsLCgpPT5jb2IoYSxiKSl9fTsKXy5pcz1mdW5jdGlvbihhLGIpe3JldHVybiBfLnRvYShhKT97SXI6YGNoaWxkKCR7Yn0pOiAke18ucWYoYSl9YCxbXy5CZl06KGMsZCk9Pnt2YXIgZT1fLkFvYSgpLGY9Xy53b2EoKTtfLllRYSgwLGUsbnVsbCxiLGYpLm1hcChnPT5lb2IoZyxhLGIpKS5JeChjLGQpfX06e0lyOmBjaGlsZCgke2J9KTogJHtfLnFmKGEpfWAsZXo6Xy5wb2EobnVsbCwoKT0+e3ZhciBjPWNvYihhLGIpO3JldHVybiBlb2IoYyxhLGIpfSl9fTtjb2I9ZnVuY3Rpb24oYSxiKXt2YXIgYz1fLndvYSgpLGQ9Xy5Bb2EoKTtyZXR1cm4gZm9iKDAsZCxhLGIsYyl9Owplb2I9ZnVuY3Rpb24oYSxiLGMpe2M9Yz9gIHdpdGgganNuYW1lICR7Y31gOiIiO2lmKGEubGVuZ3RoPT09MClyZXR1cm4gbmV3IF8uSE5hKGBFeHBlY3RlZCB0byBpbmplY3QgYSBzaW5nbGUgY29udHJvbGxlciR7Y30gYnV0IGZvdW5kICR7YS5sZW5ndGh9YCk7YT1hWzBdO18uRGJhKGEsYm9iKGIpLGBFeHBlY3RlZCBlbGVtZW50JHtjfSB0byBoYXZlIGNvbnRyb2xsZXIgb2YgdHlwZSAke18ucWYoYil9IGJ1dCBmb3VuZCAke18ucWYoYSl9YCk7cmV0dXJuIGF9O18uanM9ZnVuY3Rpb24oYSxiKXtfLk9mLmdldEluc3RhbmNlKCkucmVnaXN0ZXIoYSxiKTtiW18uQmZdPShjLGQpPT57dmFyIGU9Xy56b2EoKTtpZighZSl0aHJvdyBFcnJvcigicGYiKTtlPV8uYVlhKF8ud29hKCksZSk7Xy52ZihlKT9jKGUpOmUubWFwKGY9PntfLnFmKGIpO18ucWYoZik7cmV0dXJuIGZ9KS5JeChjLGQpfX07Cl8ua3M9ZnVuY3Rpb24oYSxiKXtfLk9mLmdldEluc3RhbmNlKCkucmVnaXN0ZXIoYixhKTthLmV6PV8ucG9hKG51bGwsKCk9Pnt2YXIgYz1fLkFvYSgpO2M9Xy5aWGEoXy53b2EoKSxjLGEpO18udmYoYyl8fF8uRGJhKGMsYm9iKGEpLGBFeHBlY3RlZCBlbGVtZW50IHRvIGhhdmUgY29udHJvbGxlciBvZiB0eXBlICR7Xy5xZihhKX0gYnV0IGZvdW5kICR7Xy5xZihjKX1gKTtyZXR1cm4gY30pfTtfLmdvYj1mdW5jdGlvbihhLGIpe3ZhciBjPWEueC1iLng7YT1hLnktYi55O3JldHVybiBjKmMrYSphfTtfLmhvYj1mdW5jdGlvbihhLGIpe3JldHVybiBhLmthW2JdJiZhLmthW2JdfHxudWxsfTtfLmxzPWZ1bmN0aW9uKGEpe2lmKGEua2EubGVuZ3RoPjApcmV0dXJuIF8uTHBhKGEua2FbMF0pfTtfLm1zPWZ1bmN0aW9uKGEsYixjKXtiPV8uemkoYik7cmV0dXJuIG5ldyBfLndvKF8ueGgoYS5wTSxiLGMpKX07Cl8ubnM9ZnVuY3Rpb24oYSxiLGMpe2I9Xy56aShiKTtiPV8ubXMoYSxiLGMpO2lmKGIuc2l6ZSgpPj0xKXJldHVybiBiLmVxKDApO3Rocm93IF8uWlFhKGEsYyk7fTtmb2I9ZnVuY3Rpb24oYSxiLGMsZCxlPV8uSnJhKGIpKXthPVtdO3ZhciBmPV8uT2YuZ2V0SW5zdGFuY2UoKS5aSChjKTtpZighZil0aHJvdyBFcnJvcigiUWNgIitfLnFmKGMpKTtiPV8uZ3VhKGIsImpzY29udHJvbGxlciIsZi50b1N0cmluZygpKTtmb3IobGV0IGcgb2YgYilkJiZnLmdldEF0dHJpYnV0ZSgianNuYW1lIikhPT1kfHxhLnB1c2goZS5SeChnKSk7ZD1fLnl1YShfLldmKGEpLmZsYXRNYXAoZz0+Xy5XZihnLm1hcChfLkV1YSkpKSk7aWYoZT1kLmVycm9yKXtpZihlIGluc3RhbmNlb2YgRXJyb3IpdGhyb3cgZTt0aHJvdyBFcnJvcihlLnRvU3RyaW5nKCkpO31yZXR1cm4gZC52YWx1ZX07Xy5HWGE9ZnVuY3Rpb24oYSxiLGMsZCl7dmFyIGU9bmV3IF8ua3phKGMsZCxhKTtyZXR1cm4gXy5hcGEoYixhLGUpLm1hcChmPT57ZS5pbml0aWFsaXplKGYpO3JldHVybiBmfSl9O18uSFhhPWZ1bmN0aW9uKGEsYixjKXtiPW5ldyBfLmt6YShiLGMsYSk7YT1fLlpvYShhLGIpO2IuaW5pdGlhbGl6ZShhKTtyZXR1cm4gYX07Cn1jYXRjaChlKXtfLl9EdW1wRXhjZXB0aW9uKGUpfQp0cnl7Cl8udWJjPV8ua2MoInhSeERsZCIsW10pOwp9Y2F0Y2goZSl7Xy5fRHVtcEV4Y2VwdGlvbihlKX0KdHJ5ewpfLnUoInhSeERsZCIpOwp2YXIgdmJjPWNsYXNzIGV4dGVuZHMgXy5oc3tjb25zdHJ1Y3Rvcigpe3N1cGVyKCk7dGhpcy5oYW5kbGVyPW51bGx9SFkoKXt0aGlzLmhhbmRsZXImJnRoaXMuaGFuZGxlcigpfX07dmJjLnByb3RvdHlwZS4kd2EkR3RVenJiPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuSFl9O18uanMoXy51YmMsdmJjKTsKXy52KCk7Cn1jYXRjaChlKXtfLl9EdW1wRXhjZXB0aW9uKGUpfQp0cnl7CnZhciBBb2I7QW9iPWZ1bmN0aW9uKGEpe2lmKF8uTmcuaGFzKGEpKXt2YXIgYj1fLldkKGEpO18uV2FhKF8uTmcuZ2V0KGEpLGM9PiFfLiRnKGIuYm9keSxjKSk7YS5zZXRBdHRyaWJ1dGUoIl9fSVNfT1dORVIiLF8uTmcuZ2V0KGEpLmxlbmd0aD4wKX19O18uQm9iPWZ1bmN0aW9uKGEsYil7YS5fX3NveV9wYXRjaF9oYW5kbGVyPWJ9O18uQ29iPWZ1bmN0aW9uKGEpe3JldHVybiBNYXRoLm1pbihhLndpZHRoLGEuaGVpZ2h0KX07Xy5Eb2I9ZnVuY3Rpb24oYSl7cmV0dXJuIF8uSm0oYSl9O18uRW9iPWZ1bmN0aW9uKGEpe0FvYihhLmdldFJvb3QoKS5lbCgpKX07Xy5Gb2I9ZnVuY3Rpb24oYSxiKXt2YXIgYz1bXTtmb3IoYT1fLkxIYShhKTthLmxlbmd0aD4wOyl7dmFyIGQ9YS5wb3AoKTtiKGQpJiZjLnB1c2goZCk7Zm9yKGQ9ZC5sYXN0RWxlbWVudENoaWxkO2Q7ZD1kLnByZXZpb3VzRWxlbWVudFNpYmxpbmcpYS5wdXNoKGQpfXJldHVybiBjfTt2YXIgR29iPTE7dmFyIEhvYixJb2IsSm9iLEtvYixMb2IsTW9iLE5vYixQb2IsUW9iLFJvYixUb2IsU29iO18ub3M9ZnVuY3Rpb24oKXt9O0hvYj1bW10sW11dO0lvYj0wO0pvYj1uZXcgU2V0O0tvYj1udWxsO0xvYj0wO01vYj0wO05vYj0wO18uT29iPTA7UG9iPTA7UW9iPWZ1bmN0aW9uKGEsYil7dGhpcy5rYT10aGlzLndhPXZvaWQgMDt0aGlzLkFhPSExO3RoaXMub2E9d2luZG93O3RoaXMuQmE9Yjt0aGlzLkVhPWF9O18uYWE9UW9iLnByb3RvdHlwZTtfLmFhLm1lYXN1cmU9ZnVuY3Rpb24oYSl7dGhpcy53YT1hO3JldHVybiB0aGlzfTtfLmFhLndjPWZ1bmN0aW9uKGEpe3RoaXMua2E9YTtyZXR1cm4gdGhpc307Xy5hYS5FbT1mdW5jdGlvbigpe3RoaXMuQWE9ITA7cmV0dXJuIHRoaXN9O18uYWEud2luZG93PWZ1bmN0aW9uKGEpe3RoaXMub2E9YTtyZXR1cm4gdGhpc307Cl8uYWEuYnVpbGQ9ZnVuY3Rpb24oKXtyZXR1cm4gUm9iKHttZWFzdXJlOnRoaXMud2Esd2M6dGhpcy5rYSxKUGM6dGhpcy5FYSx3aW5kb3c6dGhpcy5vYSxFbTp0aGlzLkFhfSx0aGlzLkJhKX07Xy5wcz1mdW5jdGlvbihhLGIpe3JldHVybiBuZXcgUW9iKGI/YjpfLm9zLGEpfTsKUm9iPWZ1bmN0aW9uKGEsYil7dmFyIGM9UG9iKyssZD1NYXRoLm1heChhLm1lYXN1cmU/YS5tZWFzdXJlLmxlbmd0aDowLGEud2M/YS53Yy5sZW5ndGg6MCksZT17aWQ6YyxzMGI6YS5tZWFzdXJlLGMxYjphLndjLGNvbnRleHQ6YixhcmdzOltdfSxmPWU7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIGc9Zi5waGFzZSE9PTA7ZyYmKGY9T2JqZWN0LmFzc2lnbih7cGhhc2U6MH0sZSkpO2J8fChmLmNvbnRleHQ9dGhpcyk7Zi5hcmdzPUFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cyk7ZD5hcmd1bWVudHMubGVuZ3RoJiZmLmFyZ3MucHVzaChuZXcgYS5KUGMpO2cmJihnPUlvYiwhYS5FbXx8Xy5Pb2I9PTB8fGEubWVhc3VyZSYmXy5Pb2IhPTF8fChnPShnKzEpJTIpLEhvYltnXS5wdXNoKGYpKTtyZXR1cm4gU29iKGEud2luZG93KX19OwpUb2I9ZnVuY3Rpb24oYSxiKXt2YXIgYz17fTtfLk9vYj0xO2Zvcih2YXIgZD0wO2Q8YS5sZW5ndGg7KytkKXt2YXIgZT1hW2RdO3ZhciBmPWUuYXJnc1tlLmFyZ3MubGVuZ3RoLTFdO2YmJnR5cGVvZiBmPT09Im9iamVjdCImJihmLm5vdz1iKTtpZihlLnMwYil7ZS5waGFzZT0xO3RyeXtlLnMwYi5hcHBseShlLmNvbnRleHQsZS5hcmdzKX1jYXRjaChnKXtjW2RdPSEwLF8uZmEoZyl9fX1fLk9vYj0yO2ZvcihkPTA7ZDxhLmxlbmd0aDsrK2QpaWYoZT1hW2RdLChmPWUuYXJnc1tlLmFyZ3MubGVuZ3RoLTFdKSYmdHlwZW9mIGY9PT0ib2JqZWN0IiYmKGYubm93PWIpLCFjW2RdJiZlLmMxYil7ZS5waGFzZT0yO3RyeXtlLmMxYi5hcHBseShlLmNvbnRleHQsZS5hcmdzKX1jYXRjaChnKXtfLmZhKGcpfX1Mb2I+MCYmYj4xJiYoYT1iLUxvYixhPDUwMCYmKEdvYisrLGE+MTAwJiZNb2IrKyxOb2I8YSYmKE5vYj1hKSkpO0xvYj1Kb2Iuc2l6ZSYmYj4xP2I6MH07ClNvYj1mdW5jdGlvbihhKXtpZighSm9iLmhhcyhhKSl7Sm9iLnNpemV8fChLb2I9bmV3IF8uTXEpO0pvYi5hZGQoYSk7bGV0IGI9S29iLnJlc29sdmU7YS5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUoYz0+e0pvYi5jbGVhcigpO3ZhciBkPUhvYltJb2JdO0lvYj0oSW9iKzEpJTI7dHJ5e1RvYihkLGMpfWZpbmFsbHl7Xy5Pb2I9MCxkLmxlbmd0aD0wfWIoKX0pfXJldHVybiBLb2IucHJvbWlzZX07Xy5Vb2I9ZnVuY3Rpb24oYSxiKXt2YXIgYz1fLk9vYjt0cnl7cmV0dXJuIF8uT29iPTIsYS5hcHBseShiKX1maW5hbGx5e18uT29iPWN9fTsKfWNhdGNoKGUpe18uX0R1bXBFeGNlcHRpb24oZSl9CnRyeXsKXy5VRWI9ZnVuY3Rpb24oYSxiKXtyZXR1cm4gXy5sayhhLDEsYil9O18uVkViPWZ1bmN0aW9uKGEsYil7cmV0dXJuKGE9Xy5PbShhLGIpKT9hOm51bGx9Owp9Y2F0Y2goZSl7Xy5fRHVtcEV4Y2VwdGlvbihlKX0KdHJ5ewpfLkhLYj1hPT57YT1hLnRvVXBwZXJDYXNlKCk7cmV0dXJuIGI9PihiPWIudGFnTmFtZSkmJmIudG9VcHBlckNhc2UoKT09YX07Cn1jYXRjaChlKXtfLl9EdW1wRXhjZXB0aW9uKGUpfQp0cnl7CnZhciBNY2M7Xy5IY2M9ZnVuY3Rpb24oYSxiKXthLkJhPWI7cmV0dXJuIGF9O18ucnk9ZnVuY3Rpb24oYSxiLHtzdGFjazpjPVtdLHJlcGxhY2U6ZD1bXSxibG9jazplPVtdfT17fSl7YS5rYT1iO2EuTmE9YyE9bnVsbD9jOltdO2EuS2E9ZCE9bnVsbD9kOltdO2EuSWE9ZSE9bnVsbD9lOltdO3JldHVybiBhfTtfLnN5PWZ1bmN0aW9uKGEsYil7YS5HYT1mdW5jdGlvbihjKXtjPXtldmVudFR5cGU6Yy5nZXREaXNtaXNzRXZlbnRUeXBlKCksbm9kZTpjLmdldE5vZGUoKSxldmVudDpjLmdldEV2ZW50KCksekM6Yy5nZXRBZnRlckRpc21pc3MoKX07cmV0dXJuIGIoYyl9O3JldHVybiBhfTtfLnR5PWZ1bmN0aW9uKGEsYil7YS5yVGE9YjtyZXR1cm4gYX07Xy5JY2M9ZnVuY3Rpb24oYSxiLGMpe2EucmI9YjthLlphPWM7cmV0dXJuIGF9O18uSmNjPWZ1bmN0aW9uKGEsYil7YS5BYT1iO3JldHVybiBhfTtfLnV5PWZ1bmN0aW9uKGEsYil7YS5hbmltYXRpb249Yi5idWlsZCgpO3JldHVybiBhfTsKXy52eT1mdW5jdGlvbihhLGIpe2Eub2E9YjtyZXR1cm4gYX07Xy5LY2M9ZnVuY3Rpb24oYSxiKXthLndhPWI7cmV0dXJuIGF9O18uTGNjPWZ1bmN0aW9uKGEsYil7YS5uYj1iO3JldHVybiBhfTtNY2M9Y2xhc3N7Y29uc3RydWN0b3IoKXt0aGlzLmthPXRoaXMuQmE9MDt0aGlzLk5hPVtdO3RoaXMuS2E9W107dGhpcy5JYT1bXTt0aGlzLkdhPSgpPT4hMDt0aGlzLnJUYT1bMSwyXTt0aGlzLkw1YT10aGlzLkFhPSExO3RoaXMuRWE9e2dldFNjcm9sbFRvcFJlcXVpcmVtZW50OigpPT57fSxnZXRTaG91bGREaXNhYmxlU2Nyb2xsaW5nOigpPT4hMCxnZXRTd2lwZVRvRGlzbWlzc0RpcmVjdGlvbnM6KCk9PlsyXSxnZXRFbmFibGVGcHNUcmFja2luZzooKT0+ITF9O3RoaXMuT2E9MDt0aGlzLm9hPSExfX07Xy53eT1mdW5jdGlvbihhLGIpe2EuT2E9YjtyZXR1cm4gYX07Xy5OY2M9ZnVuY3Rpb24oYSl7YS5TYT0hMDtyZXR1cm4gYX07Xy5PY2M9ZnVuY3Rpb24oYSl7YS5QYT00O3JldHVybiBhfTsKXy54eT1jbGFzcyBleHRlbmRzIE1jY3tjb25zdHJ1Y3Rvcigpe3N1cGVyKC4uLmFyZ3VtZW50cyk7dGhpcy5rYT0xO3RoaXMuUmE9ITA7dGhpcy5QYT0xO3RoaXMub2E9ITA7dGhpcy5TYT0hMX1BcGEoKXt0aGlzLlJhPSExO3JldHVybiB0aGlzfWJ1aWxkKCl7cmV0dXJue2dldE92ZXJsYXlJZDooKT0+dGhpcy5CYSxnZXREaXNhYmxlQmFja2dyb3VuZDooKT0+ITAsZ2V0UHJvcGFnYXRlQmFja2dyb3VuZENsaWNrczooKT0+ITEsZ2V0U3Vic2VxdWVudE92ZXJsYXlCZWhhdmlvcjooKT0+KHtnZXREZWZhdWx0OigpPT50aGlzLmthLGdldFN0YWNrSWRzOigpPT50aGlzLk5hLGdldFJlcGxhY2VJZHM6KCk9PnRoaXMuS2EsZ2V0QmxvY2tJZHM6KCk9PnRoaXMuSWF9KSxnZXREaXNtaXNzT3JCbG9ja0NhbGxiYWNrOigpPT50aGlzLkdhLGdldEdsb2JhbERpc21pc3NFdmVudHM6KCk9PnRoaXMuclRhLGdldFN0YWJsZURpc21pc3NhbElkOigpPT50aGlzLnJiLGdldERpc21pc3NhbFJlb3BlbkZ1bmN0aW9uOigpPT4KdGhpcy5aYSxnZXRFbmFibGVTd2lwZVRvRGlzbWlzczooKT0+dGhpcy5BYSxnZXRFbmFibGVOb2RlTWFuYWdlbWVudDooKT0+dGhpcy5MNWEsZ2V0U3dpcGVUb0Rpc21pc3NPcHRpb25zOigpPT50aGlzLkVhLGdldEFuaW1hdGlvbjooKT0+dGhpcy5hbmltYXRpb24sZ2V0U2NyaW1TdHlsZTooKT0+dGhpcy5PYSxnZXRTaG91bGRSZXBhcmVudDooKT0+dGhpcy5vYSxnZXRJc1NlYXJjaEJhckluQmFja2dyb3VuZDooKT0+dGhpcy5SYSxnZXRFbGVtZW50VG9Gb2N1czooKT0+dGhpcy53YSxnZXRUYWJPcmRlckluc2VydGlvblBvaW50OigpPT57fSxnZXRBbGxvd05vRm9jdXNhYmxlRGVzY2VuZGFudHM6KCk9PnRoaXMuU2EsZ2V0U2Nyb2xsYWJsZUNvbnRhaW5lcjooKT0+dGhpcy5UeSxnZXRGb2N1c0hhbmRsaW5nOigpPT50aGlzLlBhLGdldE92ZXJyaWRlWkluZGV4OigpPT50aGlzLm5iLGdldE9wZW5BZmZvcmRhbmNlOigpPT57fSxnZXRTaG91bGRUb2dnbGU6KCk9PiExfX19OwpfLnl5PWZ1bmN0aW9uKGEsYil7YS5QYT1iO3JldHVybiBhfTtfLlBjYz1mdW5jdGlvbihhLGIpe2EuQWI9YjtyZXR1cm4gYX07Xy5RY2M9ZnVuY3Rpb24oYSxiKXthLlNhPWI7cmV0dXJuIGF9OwpfLnp5PWNsYXNzIGV4dGVuZHMgTWNje2NvbnN0cnVjdG9yKCl7c3VwZXIoLi4uYXJndW1lbnRzKTt0aGlzLmthPTI7dGhpcy5vYT0hMTt0aGlzLndhPXZvaWQgMDt0aGlzLlBhPTI7dGhpcy5uQWI9ITA7dGhpcy5SYT0hMX1idWlsZCgpe3JldHVybntnZXRPdmVybGF5SWQ6KCk9PnRoaXMuQmEsZ2V0RGlzYWJsZUJhY2tncm91bmQ6KCk9PiExLGdldFByb3BhZ2F0ZUJhY2tncm91bmRDbGlja3M6KCk9PnRoaXMubkFiLGdldFN1YnNlcXVlbnRPdmVybGF5QmVoYXZpb3I6KCk9Pih7Z2V0RGVmYXVsdDooKT0+dGhpcy5rYSxnZXRTdGFja0lkczooKT0+dGhpcy5OYSxnZXRSZXBsYWNlSWRzOigpPT50aGlzLkthLGdldEJsb2NrSWRzOigpPT50aGlzLklhfSksZ2V0RGlzbWlzc09yQmxvY2tDYWxsYmFjazooKT0+dGhpcy5HYSxnZXRHbG9iYWxEaXNtaXNzRXZlbnRzOigpPT50aGlzLnJUYSxnZXRTdGFibGVEaXNtaXNzYWxJZDooKT0+dGhpcy5yYixnZXREaXNtaXNzYWxSZW9wZW5GdW5jdGlvbjooKT0+CnRoaXMuWmEsZ2V0RW5hYmxlU3dpcGVUb0Rpc21pc3M6KCk9PnRoaXMuQWEsZ2V0RW5hYmxlTm9kZU1hbmFnZW1lbnQ6KCk9PnRoaXMuTDVhLGdldFN3aXBlVG9EaXNtaXNzT3B0aW9uczooKT0+dGhpcy5FYSxnZXRBbmltYXRpb246KCk9PnRoaXMuYW5pbWF0aW9uLGdldFNjcmltU3R5bGU6KCk9PjAsZ2V0U2hvdWxkUmVwYXJlbnQ6KCk9PnRoaXMub2EsZ2V0SXNTZWFyY2hCYXJJbkJhY2tncm91bmQ6KCk9PiEwLGdldEVsZW1lbnRUb0ZvY3VzOigpPT50aGlzLndhLGdldEFsbG93Tm9Gb2N1c2FibGVEZXNjZW5kYW50czooKT0+ITAsZ2V0VGFiT3JkZXJJbnNlcnRpb25Qb2ludDooKT0+dGhpcy5BYixnZXRTY3JvbGxhYmxlQ29udGFpbmVyOigpPT50aGlzLlR5LGdldEZvY3VzSGFuZGxpbmc6KCk9PnRoaXMuUGEsZ2V0T3ZlcnJpZGVaSW5kZXg6KCk9PnRoaXMubmIsZ2V0T3BlbkFmZm9yZGFuY2U6KCk9PnRoaXMuU2EsZ2V0U2hvdWxkVG9nZ2xlOigpPT50aGlzLlJhfX19Owp9Y2F0Y2goZSl7Xy5fRHVtcEV4Y2VwdGlvbihlKX0KdHJ5ewpfLkF5PV8ua2MoIk9aTGd1YyIsW18uWHEsXy5XcSxfLmZyXSk7Cn1jYXRjaChlKXtfLl9EdW1wRXhjZXB0aW9uKGUpfQp0cnl7Cl8uUmNjPSEhKF8uT2lbNTJdPj4yNiYxKTtfLlNjYz0hIShfLk9pWzUyXT4+MjcmMSk7Cn1jYXRjaChlKXtfLl9EdW1wRXhjZXB0aW9uKGUpfQp0cnl7Cl8udSgiT1pMZ3VjIik7CnZhciBXY2M9ZnVuY3Rpb24oYSxiKXthLmhhbmRsZXI9Yn0sWGNjPWNsYXNzIGV4dGVuZHMgXy5HY2N7Y29uc3RydWN0b3IoYSxiLGMpe3N1cGVyKGEsYiw1MDAsNDAwKTt0aGlzLmNvbnRlbnQ9Y31hc3luYyBvcGVuKCl7dmFyIGE9KDAsXy5NZikoKSxiPWEoKTthPWEoMSk7dHJ5e18uRGNjKHRoaXMub2EsITEpLGEoYXdhaXQgYihfLkVjYyh0aGlzLmthLzIpKSksdGhpcy5jb250ZW50JiYodGhpcy5jb250ZW50LnN0eWxlLmRpc3BsYXk9IiIpLGEoYXdhaXQgYihfLkVjYyh0aGlzLmthLzIpKSl9ZmluYWxseXtiKCl9fWFzeW5jIGNsb3NlKCl7dmFyIGE9KDAsXy5NZikoKSxiPWEoKTthPWEoMSk7dHJ5e2EoYXdhaXQgYihzdXBlci5jbG9zZSgpKSksdGhpcy5jb250ZW50JiYodGhpcy5jb250ZW50LnN0eWxlLmRpc3BsYXk9Im5vbmUiKX1maW5hbGx5e2IoKX19fTt2YXIgWWNjLFpjYztfLkJ5PW51bGw7WWNjPW51bGw7WmNjPTA7dmFyICRjYyxhZGMsYmRjLGNkYyxkZGM7JGNjPWZ1bmN0aW9uKGEpe2lmKCFhLkJhKXRyeXthLnNuYWNrYmFyPWEuSmEoIk5nNTduYyIpLmhiKCksXy5QbyhhLGEuc25hY2tiYXIpLGEuTmE9YS5KYSgic001TU5iIikuaGIoKSxhLlBhPWEuTmEucGFyZW50RWxlbWVudCxhLmNvbnRlbnQ9YS5KYSgiYk45N1BjIikuaGIoKSxfLnBzKGEpLndjKGEuT2EpLmJ1aWxkKCkoKSxaY2MrKyxhLmdldFJvb3QoKS5maW5kKCJnLXNuYWNrYmFyLWFjdGlvbiIpLmVhY2goYj0+e2IuZ2V0QXR0cmlidXRlKCJqc2NvbnRyb2xsZXIiKSE9bnVsbCYmKF8uT28oYSxiKS50aGVuKGM9PntXY2MoYywoKT0+e2EuYWN0aXZhdGUoYil9KX0pLGEuZVA9ITAsYS5zZXRUaW1lb3V0KG51bGwpKX0pLGEuQmE9ITB9Y2F0Y2goYil7fX07YWRjPWZ1bmN0aW9uKGEpe2EuQmF8fCRjYyhhKTtyZXR1cm4gYS5OYX07YmRjPWZ1bmN0aW9uKGEpe2EuQmF8fCRjYyhhKTtyZXR1cm4gYS5QYX07CmNkYz1mdW5jdGlvbihhLGIpe2lmKGEhPT1fLkJ5KXt2YXIgYz1hLmdldEFuaW1hdGlvbigpO18uQnkmJl8uQnkuZGlzbWlzcygpO18uQnk9YTthLndhJiYoY2xlYXJUaW1lb3V0KGEud2EpLGEud2E9MCk7Yz1fLnZ5KF8uc3koXy51eShuZXcgXy56eSxjKSwoKT0+e2lmKGEuQWEpe2lmKGE9PT1fLkJ5KXthLm9hJiYoY2xlYXJUaW1lb3V0KGEub2EpLGEub2E9MCk7Xy5CeT1udWxsO2lmKCFhLkdhKXt2YXIgZD1hLmthKCk7Xy5YZyhkLCJoclloNGUiKX1hLk5iLndhKGEua2EoKSk7YS53YT0wfWQ9ITB9ZWxzZSBkPSExO3JldHVybiBkfSksITApO2EuS2F8fGEudGltZW91dD09PW51bGx8fF8udHkoYyxbXSk7YS5GZy5vcGVuKGFkYyhhKSxjKTthLnRpbWVvdXQhPT1udWxsJiYoYS5vYT13aW5kb3cuc2V0VGltZW91dChhLmRpc21pc3MuYmluZChhKSxhLnRpbWVvdXQpKTtiPWImJmIgaW5zdGFuY2VvZiBFbGVtZW50P18uV2goYiwyKTp2b2lkIDA7YS5OYi5vYShhLmthKCksYil9fTsKZGRjPWZ1bmN0aW9uKGEsYil7YSE9PV8uQnkmJihhLk9hKCksYS50cmlnZ2VyKCJNSDRtdmYiLHtjb250YWluZXI6WWNjfSksXy5CeSYmXy5CeS5kaXNtaXNzKCksXy5CeT1hLGEud2EmJihjbGVhclRpbWVvdXQoYS53YSksYS53YT0wKSxfLnduKFljYyl8fF8udm4oWWNjLCEwKSxhZGMoYSkuYXBwZW5kQ2hpbGQoYS5rYSgpKSxfLkFtKGEua2EoKSwiclRZVE5iIiksXy55bShhLmthKCksIlVld1BNZCIpLGEuY29udGVudCYmKGEuY29udGVudC5zdHlsZS5kaXNwbGF5PSIiKSxhLnRpbWVvdXQhPT1udWxsPyhhLm9hPXdpbmRvdy5zZXRUaW1lb3V0KGEuZGlzbWlzcy5iaW5kKGEpLGEudGltZW91dCksYS5LYSYmYS5FYS5saXN0ZW4oYS5rYSgpLCgpPT57YS5vbkRpc21pc3MoKX0sdm9pZCAwLHZvaWQgMCx2b2lkIDAsITApKTphLkVhLmxpc3RlbihhLmthKCksKCk9PnthLm9uRGlzbWlzcygpfSksYj1iJiZiIGluc3RhbmNlb2YgRWxlbWVudD9fLldoKGIsMik6dm9pZCAwLGEuTmIub2EoYS5rYSgpLApiKSl9OwpfLkN5PWNsYXNzIGV4dGVuZHMgXy5oc3tzdGF0aWMgUWEoKXtyZXR1cm57c2VydmljZTp7ZGlzbWlzczpfLkp4LG92ZXJsYXk6Xy5veSxOYjpfLkx1fX19Y29uc3RydWN0b3IoYSl7c3VwZXIoKTt0aGlzLnhjPW51bGw7dGhpcy5CYT10aGlzLmVQPSExO3RoaXMud2E9dGhpcy5vYT0wO3RoaXMuaXNJbml0aWFsaXplZD10aGlzLkdhPSExO3RoaXMudGltZW91dD02RTM7dGhpcy5LYT1fLmhnKHRoaXMuZ2V0Um9vdCgpLmVsKCksImRpc21pc3MiKTt0aGlzLklhPV8uaGcodGhpcy5nZXRSb290KCkuZWwoKSwicG9wdXBOb3RpZmljYXRpb25Nb2RlIik7dGhpcy5FYT1hLnNlcnZpY2UuZGlzbWlzczt0aGlzLk5iPWEuc2VydmljZS5OYjt0aGlzLkFhPXRoaXMuZ2V0RGF0YSgib3MiKS5MYigpO3RoaXMuRmc9YS5zZXJ2aWNlLm92ZXJsYXk7Xy5TY2N8fCRjYyh0aGlzKX1hY3RpdmF0ZShhKXt0aGlzLkdhPSEwO3RoaXMuZGlzbWlzcygpO3ZhciBiPXRoaXMua2EoKTtfLlhnKGIsInNGcmNqZSIse29iOmF9KTsKdGhpcy5HYT0hMX1kaXNtaXNzKCl7aWYodGhpcy5BYSl0aGlzLkZnLmNsb3NlKGFkYyh0aGlzKSk7ZWxzZSBpZih0aGlzLkVhLmhhc0xpc3RlbmVyKHRoaXMua2EoKSkpdGhpcy5FYS5kaXNtaXNzKHRoaXMua2EoKSk7ZWxzZSB0aGlzLm9uRGlzbWlzcygpfW9uRGlzbWlzcygpe2lmKHRoaXMhPT1fLkJ5KXJldHVybiEwO3RoaXMub2EmJihjbGVhclRpbWVvdXQodGhpcy5vYSksdGhpcy5vYT0wKTtfLkJ5PW51bGw7Xy5BbSh0aGlzLmthKCksIlVld1BNZCIpO3RoaXMuSWF8fF8ueW0odGhpcy5rYSgpLCJyVFlUTmIiKTt0aGlzLmNvbnRlbnQmJih0aGlzLmNvbnRlbnQuc3R5bGUuZGlzcGxheT0ibm9uZSIpO3RoaXMuR2F8fF8uWWcodGhpcy5rYSgpLCJoclloNGUiKTt0aGlzLk5iLndhKHRoaXMua2EoKSk7dGhpcy53YT13aW5kb3cuc2V0VGltZW91dCgoKT0+e3RoaXMud2E9MDt0aGlzLklhfHxfLkFtKHRoaXMua2EoKSwiclRZVE5iIik7YmRjKHRoaXMpLmFwcGVuZENoaWxkKHRoaXMua2EoKSl9LAo0MDApO3JldHVybiEwfXNldFRpbWVvdXQoYSl7dGhpcy50aW1lb3V0PXRoaXMuZVA/bnVsbDphfXNob3coYSl7Xy5TY2MmJiRjYyh0aGlzKTt0aGlzLkFhP2NkYyh0aGlzLGEpOmRkYyh0aGlzLGEpfWdldEFuaW1hdGlvbigpe3ZhciBhPVt7ZWxlbWVudDp0aGlzLmthKCksSUg6IlVld1BNZCIsZ0s6ITB9LHtlbGVtZW50OnRoaXMua2EoKSxJSDoiclRZVE5iIixnSzohMX1dLGI9W3tlbGVtZW50OnRoaXMua2EoKSxJSDoiVWV3UE1kIixnSzohMX0se2VsZW1lbnQ6dGhpcy5rYSgpLElIOiJyVFlUTmIiLGdLOiF0aGlzLklhfV07cmV0dXJuIG5ldyBYY2MoYSxiLHRoaXMuY29udGVudCl9VGIoKXtpZih0aGlzLmlzSW5pdGlhbGl6ZWQpe3RoaXMub2EmJihjbGVhclRpbWVvdXQodGhpcy5vYSksdGhpcy5vYT0wKTt0aGlzLmRpc21pc3MoKTtpZih0aGlzLkFhKVpjYy0tO2Vsc2UgaWYoYWRjKHRoaXMpPT09dGhpcy5rYSgpLnBhcmVudE5vZGUmJmFkYyh0aGlzKS5yZW1vdmVDaGlsZCh0aGlzLmthKCkpLApZY2MucmVtb3ZlQ2hpbGQoYWRjKHRoaXMpKSx0aGlzLmthKCkuYXBwZW5kQ2hpbGQoYWRjKHRoaXMpKSxaY2MtLSxaY2M9PT0wKXtsZXQgYT1ZY2M7YS5wYXJlbnRFbGVtZW50JiZhLnBhcmVudEVsZW1lbnQucmVtb3ZlQ2hpbGQoYSk7WWNjPW51bGx9c3VwZXIuVGIoKX19T2EoKXtpZighdGhpcy5BYSYmIXRoaXMuaXNJbml0aWFsaXplZCl7dGhpcy5pc0luaXRpYWxpemVkPSEwO2lmKCFZY2Mpe3ZhciBhPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpO2EuaWQ9InNuYmMiO2RvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoYSk7WWNjPWF9YmRjKHRoaXMpLmFwcGVuZENoaWxkKHRoaXMua2EoKSk7WWNjLmFwcGVuZENoaWxkKGFkYyh0aGlzKSk7YT1hZGModGhpcykuY2xvbmVOb2RlKCEwKTtiZGModGhpcykuYXBwZW5kQ2hpbGQoYSl9fWthKCl7dGhpcy5CYXx8JGNjKHRoaXMpO3JldHVybiB0aGlzLnNuYWNrYmFyfX07Xy5DeS5wcm90b3R5cGUuJHdhJGJOUUoxYz1mdW5jdGlvbigpe3JldHVybiB0aGlzLmthfTsKXy5DeS5wcm90b3R5cGUuJHdhJGs0SXNlYj1mdW5jdGlvbigpe3JldHVybiB0aGlzLlRifTtfLkN5LnByb3RvdHlwZS4kd2EkSVl0QnliPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZGlzbWlzc307Xy5qcyhfLkF5LF8uQ3kpOwpfLnYoKTsKfWNhdGNoKGUpe18uX0R1bXBFeGNlcHRpb24oZSl9CnRyeXsKdmFyIGR5Yj1mdW5jdGlvbihhKXtyZXR1cm4gYS5sZW5ndGgmJmEuY2hhckF0KDApPT0iIyI/YS5zdWJzdHIoMSk6YX07Xy5leWI9ZnVuY3Rpb24oYSl7YT1hLmthLnRvU3RyaW5nKCk7cmV0dXJuKGE/IiMiOiIiKSthfTtfLmZ5Yj1mdW5jdGlvbihhLGIpe2IubGVuZ3RoJiZiLmNoYXJBdCgwKT09IiMiJiYoYj1iLnN1YnN0cigxKSk7YS5rYS5zZXRWYWx1ZShiKX07Xy5qdT1jbGFzcyBleHRlbmRzIF8uUmV7Y29uc3RydWN0b3IoYSx7ZXphOmI9Xy5Ybn09e30pe3N1cGVyKGEse3o2YjpifSk7dmFyIGM9ZHliKHRoaXMuaGFzaCk7dGhpcy5rYT1uZXcgXy5RS2EoYyxiKTt0aGlzLm9hP3RoaXMua2E9Xy5US2EoXy5ZbihfLmd5YiksZD0+ZC5yd2ModGhpcyxjLGIpKXx8dGhpcy5rYTpPYmplY3QuZGVmaW5lUHJvcGVydGllcyh0aGlzLHtoYXNoOntnZXQ6KCk9Pl8uZXliKHRoaXMpLHNldDpkPT5fLmZ5Yih0aGlzLGQpfX0pfWNsb25lKCl7dmFyIGE9bmV3IF8uanUoIiIpO18uWkthKGEsdGhpcyk7YS5rYT10aGlzLmthLmNsb25lKCk7cmV0dXJuIGF9fTtfLmd5Yj1uZXcgXy5hbzsKfWNhdGNoKGUpe18uX0R1bXBFeGNlcHRpb24oZSl9CnRyeXsKXy5oeWI9ZnVuY3Rpb24oKXt2YXIgYT13aW5kb3csYj1hLmRvY3VtZW50LGM9MDtpZihiKXtjPWIuYm9keTtiPWIuZG9jdW1lbnRFbGVtZW50O2lmKCFifHwhYylyZXR1cm4gMDthPV8ud0hhKGEpLmhlaWdodDtpZihiLnNjcm9sbEhlaWdodCljPWIuc2Nyb2xsSGVpZ2h0IT1hP2Iuc2Nyb2xsSGVpZ2h0OmIub2Zmc2V0SGVpZ2h0O2Vsc2V7bGV0IGQ9Yi5zY3JvbGxIZWlnaHQsZT1iLm9mZnNldEhlaWdodDtiLmNsaWVudEhlaWdodCE9ZSYmKGQ9Yy5zY3JvbGxIZWlnaHQsZT1jLm9mZnNldEhlaWdodCk7Yz1kPmE/ZD5lP2Q6ZTpkPGU/ZDplfX1yZXR1cm4gY307Xy5rdT1jbGFzcyBleHRlbmRzIF8uanV7Y29uc3RydWN0b3IoYSx7ZXphOmI9Xy5ITWF9PXt9KXtzdXBlcihhLHtlemE6Yn0pfX07Cn1jYXRjaChlKXtfLl9EdW1wRXhjZXB0aW9uKGUpfQp0cnl7CnZhciBqdmMsa3ZjO18uaXZjPWZ1bmN0aW9uKGEpe3JldHVybiBKU09OLnN0cmluZ2lmeShhLChiLGMpPT5jIGluc3RhbmNlb2YgTWFwP09iamVjdC5mcm9tRW50cmllcyhjKTpjKX07anZjPWZ1bmN0aW9uKGEsYixjLGQpe3ZhciBlPSgpPT5kP2EucG9wKGQsITApOl8uSGgoKSxmPSgpPT5jIT09ZDtyZXR1cm4gYj97TXJiOmUsS1BiOmYsbkJiOjJ9OntNcmI6ZSxLUGI6Zix3d2E6KCk9PmM/YS5wb3AoYywhMCk6Xy5IaCgpLG5CYjo2fX07a3ZjPWZ1bmN0aW9uKGEsYil7cmV0dXJue01yYjooKT0+YS5vYShiLlZ1KCkpfHxfLkhoKCksS1BiOigpPT4hMCxuQmI6Mn19O18ubHZjPWE9Pm5ldyBfLmp1KGEpO18ubHZjPWE9Pm5ldyBfLmt1KGEpO18ubXZjPWNsYXNze2NvbnN0cnVjdG9yKCl7dGhpcy5rYT1uZXcgTWFwfWFuZChhLC4uLmIpe3JldHVybiBhLmNhbGwobnVsbCwuLi5iLHRoaXMpfX07Xy5udmM9Y2xhc3N7Y29uc3RydWN0b3IoYSxiLGMpe3RoaXMub2E9Yzt0aGlzLndhPWE7dGhpcy5rYT1ifVNsYihhLHtyc2E6Yj17fSxuWTpjfT17fSl7dmFyIGQ9dGhpcy5rYS5nZXRTdGF0ZSgpfHx7aWQ6IiIscHVzaElkOiIifSxlPXRoaXMub2F8fGQ7ZT17dXJsOl8ubHZjKGUudXJsfHwiIiksc3RhdGU6ZS51c2VyRGF0YXx8bnVsbH07dmFyIGY9ZS51cmwudG9TdHJpbmcoKSxnPV8uaXZjKGUuc3RhdGUpO2ZvcihsZXQgayBvZiB0aGlzLndhLmtleXMoKSlpZihhLmhhcyhrKSl7bGV0IG09YS5nZXQoayk7dGhpcy53YS5nZXQoaykuUWwobSxlKX12YXIge3JlcGxhY2U6aD0hMX09YjtpZihmPT09ZS51cmwudG9TdHJpbmcoKSYmZz09PV8uaXZjKGUuc3RhdGUpKXJldHVybiBfLkRnKGp2Yyh0aGlzLmthLGgsZC5pZCxkLmlkKSk7dGhpcy5vYSYmKHRoaXMub2EudXJsPWUudXJsLnRvU3RyaW5nKCksdGhpcy5vYS51c2VyRGF0YT1lLnN0YXRlKTtpZighYi5RR2QpcmV0dXJuIGM/KGE9CnRoaXMua2EueVAoZS51cmwudG9TdHJpbmcoKSxlLnN0YXRlfHx2b2lkIDAsYy50MSxoLGMuZXZlbnQpKT9hLnRoZW4oaz0+a3ZjKHRoaXMua2EsaykpOl8uSGgoRXJyb3IoInppYCIrZS51cmwpKTp0aGlzLmthLnB1c2hBc3luYyhlLnVybC50b1N0cmluZygpLGUuc3RhdGV8fHZvaWQgMCx2b2lkIDAsaCx0aGlzLmthKS50aGVuKGs9Pmp2Yyh0aGlzLmthLGgsZC5pZCxrKSl9c3RhdGljIGNvbXBvc2UoLi4uYSl7dmFyIGI9bmV3IE1hcDtmb3IobGV0IGUgb2YgYSl7Zm9yKGxldCBmIG9mIGUud2Eua2V5cygpKWIuZGVsZXRlKGYpLGIuc2V0KGYsZS53YS5nZXQoZikpO3ZhciBjPWUua2E7dmFyIGQ9ZS5vYX1yZXR1cm4gbmV3IF8ubnZjKGIsYyxkKX19Owp9Y2F0Y2goZSl7Xy5fRHVtcEV4Y2VwdGlvbihlKX0KdHJ5ewpfLm92Yz1fLmtjKCJydEgxYmQiLFtfLng2YV0pOwp9Y2F0Y2goZSl7Xy5fRHVtcEV4Y2VwdGlvbihlKX0KdHJ5ewpfLnUoInJ0SDFiZCIpOwp2YXIgcHZjLHJ2Yyx0dmMsdnZjLHd2Yyx4dmMseXZjLHp2YyxBdmM7cHZjPWZ1bmN0aW9uKGEsYj1bXSl7Yi5wdXNoKGEpO3JldHVybiBifTtfLnF2Yz1mdW5jdGlvbihhLGIpe3ZhciBjPW5ldyBNYXA7Zm9yKGxldCBlIG9mIGEpZm9yKGxldCBmIG9mIGUua2V5cygpKXthPWY7dmFyIGQ9ZS5nZXQoZik7ZD1iP2IoZCxjLmdldChhKSk6ZDtjLnNldChhLGQpfXJldHVybiBjfTtydmM9ZnVuY3Rpb24oYSxiKXt2YXIgYz1uZXcgTWFwO2ZvcihsZXQgZCBvZiBhLmtleXMoKSljLnNldChkLGIoYS5nZXQoZCksZCkpO3JldHVybiBjfTtfLnN2Yz1mdW5jdGlvbihhKXtyZXR1cm4gXy5wZyhhKT9hOnt9fTt0dmM9ZnVuY3Rpb24oYSxiKXt2YXIgYz1iLnJlZHVjZSgoZCxlKT0+ZHwoZSYmZS5uQmJ8fDApLDEpO3JldHVybiBPYmplY3QuYXNzaWduKHtzdGF0ZShkKXtyZXR1cm4oYS5nZXQoZCl8fG5ldyBkKS5jbG9uZSgpfSxNOWEoZCl7cmV0dXJuKGMmZCk9PT1kfX0sLi4uYil9Owp2dmM9ZnVuY3Rpb24oYSxiPXV2Yyl7cmV0dXJue2dldEN1cnJlbnQ6YS5nZXRDdXJyZW50fHxiLmdldEN1cnJlbnQsVWFhOm5ldyBTZXQoWy4uLmIuVWFhLC4uLmEuVWFhXSksckFhOmEuckFhfHxiLnJBYX19O3d2Yz1mdW5jdGlvbihhKXthPV8ucXZjKGEscHZjKTtyZXR1cm4gcnZjKGEsKGIsYyk9PmMuY29tcG9zZSguLi5iKSl9O3h2Yz1mdW5jdGlvbihhKXt2YXIgYj1bXTtmb3IobGV0IGMgb2YgYSkoYT1jKCkpJiZiLnB1c2goYSk7cmV0dXJuIGIubGVuZ3RoP18uSWgoYik6bnVsbH07eXZjPWZ1bmN0aW9uKGEsYil7dmFyIGM9bmV3IFNldCxkPW5ldyBTZXQoWy4uLmEua2V5cygpLC4uLmIua2V5cygpXSk7Zm9yKGxldCBlIG9mIGQpXy5LYShhLmdldEFsbChlKSxiLmdldEFsbChlKSl8fGMuYWRkKGUpO3JldHVybiBjfTsKenZjPWZ1bmN0aW9uKGEsYil7dmFyIGM7aWYoYz0hIWEmJiEhYilhOnthLnNpemU+Yi5zaXplJiYoW2EsYl09W2IsYV0pO2ZvcihsZXQgZCBvZiBhKWlmKGIuaGFzKGQpKXtjPSEwO2JyZWFrIGF9Yz0hMX1yZXR1cm4gY307QXZjPWZ1bmN0aW9uKGE9bmV3IF8ubXZjKXthLmthLnNldChfLm52YyxudWxsKTtyZXR1cm4gYX07dmFyIHV2Yzt1dmM9e1VhYTpuZXcgU2V0fTtfLkN2Yz1mdW5jdGlvbiguLi5hKXt2YXIgYj1bXSxjPVtdLGQ9W107Zm9yKGxldCBmIG9mIGEpe2IucHVzaChmLkdyKTtjLnB1c2goZi5nRyk7ZC5wdXNoKGYucHliKTt2YXIgZT1mLkhRYXx8ZX1hPV8ucXZjKGIsdnZjKTtjPXd2YyhjKTtkPXd2YyhkKTtyZXR1cm4gbmV3IF8uQnZjKGEsYyxkLGUpfTsKXy5CdmM9Y2xhc3N7Y29uc3RydWN0b3IoYT1uZXcgTWFwLGI9bmV3IE1hcCxjPW5ldyBNYXAsZCl7dGhpcy5Hcj1hO3RoaXMuZ0c9Yjt0aGlzLnB5Yj1jO3RoaXMuSFFhPWR9cnVuKHtvYTphLGV2ZW50VHlwZTpiLG1ldGFkYXRhOmMsa2E6ZH09bmV3IF8ubXZjKXt2YXIgZT1uZXcgTWFwO2ZvcihsZXQgaCBvZiB0aGlzLkdyLmtleXMoKSl7bGV0IGs9dGhpcy5Hci5nZXQoaCksbSxuLHA9KG49KG09ay5nZXRDdXJyZW50KT09bnVsbD92b2lkIDA6bS5jYWxsKGspKSE9bnVsbD9uOm5ldyBoO3ZhciBmPW51bGw7Zm9yKGxldCByIG9mIGsuVWFhKXtsZXQgeD1yO2lmKHguUjdiKXtpZigheC5SN2IocC5jbG9uZSgpLGEpKWNvbnRpbnVlO2Y9eC56UmN9ZWxzZSBmPXI7Zj1wPWYocCxhKX1pZihmKXtlLnNldChoLGYpO2xldCByOyhyPWsuckFhKT09bnVsbHx8ci5jYWxsKGssZil9fWE9W107Zm9yKHZhciBnIG9mIHRoaXMuZ0cua2V5cygpKXtsZXQgaD10aGlzLmdHLmdldChnKSxrPWQuZ2V0KGcpOwprIT09bnVsbCYmYS5wdXNoKCgpPT5oLlNsYihlLGspKX1kPWg9PntiPWJ8fHRoaXMuSFFhO3ZhciBrPVtdLG09dHZjKGUsaCk7Zm9yKGxldCBuIG9mIHRoaXMucHliLnZhbHVlcygpKWsucHVzaCgoKT0+bi5ub3RpZnkoZSxiLGMsbSkpO3JldHVybihoPXh2YyhrKSk/aC50aGVuKCgpPT5tKTpfLkRnKG0pfTtyZXR1cm4oZz14dmMoYSkpP2cudGhlbihkKTpkKFtdKX1jb21wb3NlKC4uLmEpe3JldHVybiBfLkN2Yyh0aGlzLC4uLmEpfX07Xy5EdmM9Y2xhc3MgZXh0ZW5kcyBfLnNve3N0YXRpYyBRYSgpe3JldHVybntzZXJ2aWNlOntSSGI6Xy5yRmJ9fX1jb25zdHJ1Y3RvcihhKXtzdXBlcigpO3RoaXMud2E9W107dGhpcy5vYT1hLnNlcnZpY2UuUkhiO2E9dGhpcy5vYS5nZXRTdGF0ZSgpfHx7fTt0aGlzLmthPXt1cmw6YS51cmwsdXNlckRhdGE6YS51c2VyRGF0YSxpZDoiIixwdXNoSWQ6IiJ9O3RoaXMub2EuYWRkTGlzdGVuZXIoKGIsYyxkKT0+e2lmKCEoZC5zb3VyY2UgaW5zdGFuY2VvZiBfLnJGYikpe2lmKGIudXJsIT09dGhpcy5rYS51cmwpe3ZhciBlPW5ldyBfLmp1KGIudXJsfHwiIik7Yz1uZXcgXy5qdSh0aGlzLmthLnVybHx8IiIpO3ZhciBmPXl2YyhlLnNlYXJjaFBhcmFtcyxjLnNlYXJjaFBhcmFtcyk7ZT15dmMoZS5rYSxjLmthKX1jPV8uc3ZjKGIudXNlckRhdGEpO3ZhciBnPV8uc3ZjKHRoaXMua2EudXNlckRhdGEpO2lmKGM9PT1nKXZhciBoPW5ldyBTZXQ7ZWxzZXt2YXIgaz1uZXcgU2V0LG09bmV3IFNldChbLi4uT2JqZWN0LmtleXMoYyksCi4uLk9iamVjdC5rZXlzKGcpXSk7Zm9yKGggb2YgbSlfLml2YyhjW2hdKSE9PV8uaXZjKGdbaF0pJiZrLmFkZChoKTtoPWt9dGhpcy5rYS51cmw9Yi51cmw7dGhpcy5rYS51c2VyRGF0YT1iLnVzZXJEYXRhO2M9e3VybDpfLmx2YyhiLnVybHx8IiIpLHN0YXRlOmIudXNlckRhdGF9O2I9W107Zm9yKGxldCB7bnVjOm4sVnljOnB9b2YgdGhpcy53YSlnPW5ldyBTZXQsaz1uZXcgU2V0LG09bmV3IFNldCxwLmthJiYocC5rYS5jUyYmKGc9bmV3IFNldChwLmthLmNTKCkpKSxwLmthLkt5JiYoaz1uZXcgU2V0KHAua2EuS3koKSkpKSxwLm9hJiYobT1uZXcgU2V0KHAub2Eua2V5cygpKSksKHp2YyhnLGYpfHx6dmMoayxlKXx8enZjKG0saCkpJiZiLnB1c2gobihjKSk7Yi5sZW5ndGgmJihmPWQud1UmJmQud1UubGVuZ3RoPzE6MCxkPWQuc291cmNlIGluc3RhbmNlb2YgXy5qZmIsZT1fLkN2YyguLi5iKSxiPWUucnVuLGg9bmV3IF8ubXZjLGgubWV0YWRhdGE9e3JlYXNvbjpmLHVzZXJJbml0aWF0ZWQ6ZH0sCmIuY2FsbChlLGguYW5kKEF2YykpKX19KX19O18uYWcoXy5vdmMsXy5EdmMpOwpfLnYoKTsKfWNhdGNoKGUpe18uX0R1bXBFeGNlcHRpb24oZSl9CnRyeXsKdmFyIEJuYixFbmI7Xy5BbmI9ZnVuY3Rpb24oKXt2YXIgYT1fLk9vYSgpO2lmKCFhKXRocm93IEVycm9yKCJNYiIpO3JldHVybiBhfTtCbmI9ZnVuY3Rpb24oKXt2YXIgYT1fLkNmKCk7YT1fLkFmKGEsXy5Lb2EpO2lmKCFfLnZmKGEpKXJldHVybiBhfTtfLlZyPWZ1bmN0aW9uKGEsYil7Xy5PZi5nZXRJbnN0YW5jZSgpLnJlZ2lzdGVyKGEsYik7YltfLkJmXT0oYyxkKT0+e3ZhciBlPV8uem9hKCl8fF8uT29hKCk7aWYoIWUpdGhyb3cgRXJyb3IoIm5mIik7dmFyIGY9Xy5Wb2EoKSxnPUJuYigpO18ucHVhKGUsYSxmLGcpLkl4KGMsZCl9fTsKXy5DbmI9ZnVuY3Rpb24oYSxiKXtfLk9mLmdldEluc3RhbmNlKCkucmVnaXN0ZXIoYixhKTthLmV6PV8ucG9hKG51bGwsKCk9Pnt2YXIgYz1fLnpvYSgpfHxfLk9vYSgpO2lmKCFjKXRocm93IEVycm9yKCJuZiIpO3ZhciBkPV8uVm9hKCksZT1CbmIoKTt2YXIgZj1fLmJwYShhKTtpZighZil0aHJvdyBFcnJvcigiSGNgIitfLnFmKGEpKTtpZihhIGluc3RhbmNlb2YgXy5vbyl7dmFyIGc9YS5aSCgpO2c9Xy5uZihnKX1lbHNlIGlmKF8udG9hKGEpKXRocm93IEVycm9yKCJJY2AiK18ucWYoYSkpO2Y9Xy5yaChmLnRvU3RyaW5nKCkpO2lmKGM9Xy5tdWEoYyxmLGcsZSkpe2lmKGcpe2lmKGY9Xy5DcGEoXy5PZi5nZXRJbnN0YW5jZSgpLGMuam4pLCFmKXRocm93IEVycm9yKCJKY2AiK18ucWYoYy5qbikrImAiK18ucWYoZy5qbikpO31lbHNlIGY9YTtkPV8udnVhKGMuZWxlbWVudCxmLGMuam4sZCl9ZWxzZSBkPW5ldyBfLm91YShmKTtyZXR1cm4gZH0sYil9OwpfLkRuYj1jbGFzcyBleHRlbmRzIF8uWU5he2NvbnN0cnVjdG9yKCl7c3VwZXIoKTt0aGlzLlFjPV8uQW5iKCk7dGhpcy5HYT1udWxsO3RoaXMuUGY9bmV3IE1hcDt0aGlzLmM1PSgpPT57dGhyb3cgRXJyb3IoIllkIik7fX10b1N0cmluZygpe3JldHVybmAke18ucWYodGhpcyl9WyR7Xy4kZSh0aGlzLlFjKX1dYH1nZXREYXRhKGEpe3RoaXMuR2F8fCh0aGlzLkdhPW5ldyBfLnpvKHRoaXMuUWMpKTtyZXR1cm4gdGhpcy5HYS5nZXREYXRhKGEpfVI1KCl7dmFyIGE9c3VwZXIuUjUoKTtyZXR1cm4gYS5pc1ZhbGlkP3RoaXMuUWMuaXNDb25uZWN0ZWQ/Xy5oaShfLldkKHRoaXMuUWMpKT09bnVsbD97aXNWYWxpZDohMSxpbnZhbGlkUmVhc29uOiJXaW5kb3cgbm90IGF2YWlsYWJsZSJ9Ontpc1ZhbGlkOiEwfTp7aXNWYWxpZDohMSxpbnZhbGlkUmVhc29uOiJFbGVtZW50IG5vdCBjb25uZWN0ZWQgdG8gRE9NIn06YX1sWihhKXt0aGlzLkdhfHwodGhpcy5HYT1uZXcgXy56byh0aGlzLlFjKSk7CnJldHVybiB0aGlzLkdhLmxaKGEpfWdldElkKCl7cmV0dXJuIHRoaXMudG9TdHJpbmcoKX1ub3RpZnkoYSxiKXtfLlpnKHRoaXMuUWMsYSxiLHRoaXMpfUFhKCl7cmV0dXJuIHRoaXMuUWN9dW4oYSxiKXtyZXR1cm4gdGhpcy5rd2EoYSxiKX1rd2EoYSxiKXtyZXR1cm4gXy56Zih0aGlzLmlvYShhLGIpLCEwKX1pb2EoYSxiKXtyZXR1cm4gXy5wdWEoYnx8dGhpcy5RYyxhLHRoaXMubFcoKSx0aGlzLmNvbnN0cnVjdG9yKS5tYXAoYz0+YyxjPT57YyBpbnN0YW5jZW9mIF8ub3VhJiYoYy5tZXNzYWdlKz1gIHJlcXVlc3RlZCBieSAke3RoaXN9YCk7cmV0dXJuIGN9KX1CZShhLGIsYz0hMSl7dGhpcy5QZi5zZXQoYSx7aGFuZGxlcjpiLHBCYjpjfSl9d2QoYSl7cmV0dXJuIHRoaXMuUGYuZ2V0KGEpfWxpc3RlbihhLGIsYyl7cmV0dXJuIF8uVGcodGhpcy5RYyxhLGIsYyl9bGlzdGVuT25jZShhLGIsYyl7cmV0dXJuIF8uVmcodGhpcy5RYyxhLGIsYyl9fTsKXy5FaT1jbGFzcyBleHRlbmRzIF8uRG5ie3N0YXRpYyBRYSgpe3JldHVybnt9fWpuYShhKXtfLldOYSh0aGlzLGEpfW90KGEpe18uWE5hKHRoaXMsYSl9fTtFbmI9ZnVuY3Rpb24oYSxiKXtmb3IobGV0IGMgb2YgYS5CYS5rZXlzKCkpe2xldCB7aGFuZGxlcjpkLHBCYjplfT1hLkJhLmdldChjKTtiLkJlKGMsZCxlKX19OwpfLmx6YT1jbGFzcyBleHRlbmRzIF8uaHBhe2NvbnN0cnVjdG9yKGEsYixjKXtzdXBlcihiLGMpO3RoaXMuUWM9YTt0aGlzLndhPW51bGw7dGhpcy5CYT1uZXcgTWFwO3RoaXMuRWE9Y31rYSgpe3ZhciBhPXN1cGVyLmthKCk7YS5BRmM9dGhpcy5RYztyZXR1cm4gYX1jNSgpe3Rocm93IEVycm9yKCJZZCIpO31nZXREYXRhKGEpe3RoaXMud2F8fCh0aGlzLndhPW5ldyBfLnpvKHRoaXMuUWMpKTtyZXR1cm4gdGhpcy53YS5nZXREYXRhKGEpfVI1KCl7dmFyIGE9c3VwZXIuUjUoKTtyZXR1cm4gYS5pc1ZhbGlkP3RoaXMuUWMuaXNDb25uZWN0ZWQ/Xy5oaShfLldkKHRoaXMuUWMpKT09bnVsbD97aXNWYWxpZDohMSxpbnZhbGlkUmVhc29uOiJXaW5kb3cgbm90IGF2YWlsYWJsZSJ9Ontpc1ZhbGlkOiEwfTp7aXNWYWxpZDohMSxpbnZhbGlkUmVhc29uOiJFbGVtZW50IG5vdCBjb25uZWN0ZWQgdG8gRE9NIn06YX1CZShhLGIsYz0hMSl7dGhpcy5CYS5zZXQoYSx7aGFuZGxlcjpiLHBCYjpjfSl9dW4oYSwKYil7cmV0dXJuIHRoaXMua3dhKGEsYil9a3dhKGEsYil7cmV0dXJuIF8uemYodGhpcy5pb2EoYSxiKSwhMCl9aW9hKGEsYil7cmV0dXJuIF8ucHVhKGJ8fHRoaXMuUWMsYSx0aGlzLmxXKCksdGhpcy5FYSkubWFwKGM9PmMsYz0+e2MgaW5zdGFuY2VvZiBfLm91YSYmKGMubWVzc2FnZSs9IiByZXF1ZXN0ZWQgYnkgIit0aGlzKTtyZXR1cm4gY30pfUFhKCl7cmV0dXJuIHRoaXMuUWN9fTtfLnV1YT1mdW5jdGlvbihhLGIsYyxkKXt2YXIgZT1uZXcgXy5semEoYyxkLGEpO3JldHVybiBfLmFwYShiLGEsZSkubWFwKGY9PntFbmIoZSxmKTtyZXR1cm4gZn0pfTtfLnp1YT1mdW5jdGlvbihhLGIsYyl7Yj1uZXcgXy5semEoYixjLGEpO2E9Xy5ab2EoYSxiKTtFbmIoYixhKTtyZXR1cm4gYX07Cn1jYXRjaChlKXtfLl9EdW1wRXhjZXB0aW9uKGUpfQp0cnl7Cl8uVSRkPWNsYXNzIGV4dGVuZHMgXy5se2NvbnN0cnVjdG9yKGEpe3N1cGVyKGEpfX07Xy5WJGQ9Y2xhc3MgZXh0ZW5kcyBfLmx7Y29uc3RydWN0b3IoYSl7c3VwZXIoYSl9Z2V0SWNvbigpe3JldHVybiBfLnEodGhpcyxfLlUkZCw0KX1zZXRJY29uKGEpe3JldHVybiBfLlNiKHRoaXMsXy5VJGQsNCxhKX1Qaigpe3JldHVybiBfLmtqKHRoaXMsXy5VJGQsNCl9fTsKfWNhdGNoKGUpe18uX0R1bXBFeGNlcHRpb24oZSl9CnRyeXsKXy5XJGQ9Y2xhc3MgZXh0ZW5kcyBfLmx7Y29uc3RydWN0b3IoYSl7c3VwZXIoYSl9QWEoKXtyZXR1cm4gXy50KHRoaXMsMSl9d2EoKXtyZXR1cm4gXy50KHRoaXMsMyl9QmEoKXtyZXR1cm4gXy50KHRoaXMsNCl9RWEoKXtyZXR1cm4gXy5BKHRoaXMsNSl9UGEoKXtyZXR1cm4gXy5BKHRoaXMsNil9T2EoKXtyZXR1cm4gXy50KHRoaXMsMTApfW9hKGEpe3JldHVybiBfLmZoKHRoaXMsMTEsYSl9SWIoKXtyZXR1cm4gXy54ZSh0aGlzLDE3KX1KYigpe3JldHVybiBfLnhlKHRoaXMsMTgpfUthKCl7cmV0dXJuIF8udCh0aGlzLDIxKX1PYigpe3JldHVybiBfLnhlKHRoaXMsMjQpfW5iKCl7cmV0dXJuIF8uQSh0aGlzLDI1KX1QYygpe3JldHVybiBfLnhlKHRoaXMsMjYpfUFiKCl7cmV0dXJuIF8uQSh0aGlzLDI3KX1RYigpe3JldHVybiBfLkEodGhpcywyOCl9WGIoKXtyZXR1cm4gXy5BKHRoaXMsMzApfVJhKCl7cmV0dXJuIF8uQSh0aGlzLDMxKX1QYigpe3JldHVybiBfLkEodGhpcywzNCl9WmEoKXtyZXR1cm4gXy5BKHRoaXMsCjM1KX1yYigpe3JldHVybiBfLkEodGhpcywzNil9U2EoKXtyZXR1cm4gXy5BKHRoaXMsMzkpfU5hKCl7cmV0dXJuIF8uQSh0aGlzLDQ1KX1GYigpe3JldHVybiBfLkEodGhpcyw0Nil9aGMoKXtyZXR1cm4gXy5BKHRoaXMsNTQpfUljKCl7cmV0dXJuIF8ueGUodGhpcyw2NSl9SWEoKXtyZXR1cm4gXy5BKHRoaXMsNzEpfX07Xy5XJGQucHJvdG90eXBlLlhhPSJNdUlFdmQiOwp9Y2F0Y2goZSl7Xy5fRHVtcEV4Y2VwdGlvbihlKX0KdHJ5ewpfLnUoInZOektIZCIpOwpfLlgkZD1mdW5jdGlvbihhLGIpe2Eua2EucHVzaChiKX07Xy5ZJGQ9Y2xhc3MgZXh0ZW5kcyBfLkVpe2NvbnN0cnVjdG9yKCl7c3VwZXIoKTt0aGlzLk9mPW5ldyBfLlckZDt0aGlzLmthPVtdfVZCKCl7cmV0dXJuIHRoaXMuT2Z9fTtfLlZyKF8uRVphLF8uWSRkKTsKXy52KCk7Cn1jYXRjaChlKXtfLl9EdW1wRXhjZXB0aW9uKGUpfQp0cnl7Cl8uWiRkPV8ua2MoImI1Vzg1IixbXy5FWmFdKTsKfWNhdGNoKGUpe18uX0R1bXBFeGNlcHRpb24oZSl9CnRyeXsKXy51KCJiNVc4NSIpOwp2YXIgJCRkPWNsYXNze2NvbnN0cnVjdG9yKCl7dGhpcy5rYT1uZXcgTWFwfWhyYSgpe3RoaXMua2EuY2xlYXIoKX19LGFhZT1uZXcgJCRkO18uYmFlPWZ1bmN0aW9uKGEpe2EuT2Y9YS5rYXx8Xy54d2EoXy5CZChhLmFDYiksXy5XJGQsbnVsbCk7dmFyIGI9YS5WbztiLk9mPWEuT2Y7Zm9yKGxldCBjIG9mIGIua2EpYygpfTtfLmNhZT1jbGFzcyBleHRlbmRzIF8uRWl7c3RhdGljIFFhKCl7cmV0dXJue2ZmOntPZjpfLlckZH0sbW9kZWw6e1ZvOl8uWSRkfX19Y29uc3RydWN0b3IoYSl7c3VwZXIoKTt0aGlzLk9mPW51bGw7dGhpcy5rYT1hLmZmLk9mO3RoaXMuVm89YS5tb2RlbC5WbzthPV8ucG0odGhpcy5nZXREYXRhKCJzYktleSIpLCIiKTthYWUua2EuaGFzKGEpJiZhYWUua2EuZ2V0KGEpIT09IiJ8fGFhZS5rYS5zZXQoYSwiIik7dGhpcy5hQ2I9YX1WQigpe3JldHVybiB0aGlzLk9mfX07Xy5WcihfLlokZCxfLmNhZSk7Cl8udigpOwp9Y2F0Y2goZSl7Xy5fRHVtcEV4Y2VwdGlvbihlKX0KdHJ5ewpfLnUoIkJXdE5qIik7Cl8uZGFlPWNsYXNzIGV4dGVuZHMgXy5zb3tjb25zdHJ1Y3Rvcigpe3N1cGVyKCk7dGhpcy5rYT1udWxsfXNldEFpbVN0YXRlQWN0aXZlKGE9ITApe3RoaXMua2EmJnRoaXMua2EuY04oKSE9PWEmJnRoaXMua2EuZEsoYSl9Z2V0QWltU3RhdGVBY3RpdmUoKXt2YXIgYSxiO3JldHVybihiPShhPXRoaXMua2EpPT1udWxsP3ZvaWQgMDphLmNOKCkpIT1udWxsP2I6ITF9c2V0TGhzUGFuZWxTdGF0ZShhKXt2YXIgYjsoYj10aGlzLmthKT09bnVsbHx8Yi5zZXRMaHNQYW5lbFN0YXRlKGEpO18uWmcoZG9jdW1lbnQuYm9keSwiTEpYRzRiIixhKX1yZXNldChhKXt2YXIgYj1hPT09dm9pZCAwO2lmKGJ8fChhPT1udWxsPzA6YS5maWxlcykpe2xldCBjOyhjPXRoaXMua2EpPT1udWxsfHxjLmtvYygpfWlmKGJ8fChhPT1udWxsPzA6YS50b29scykpe2xldCBjOyhjPXRoaXMua2EpPT1udWxsfHxjLmxvYygpfX19O18uYWcoXy5DWmEsXy5kYWUpOwpfLnYoKTsKfWNhdGNoKGUpe18uX0R1bXBFeGNlcHRpb24oZSl9CnRyeXsKXy5uej1jbGFzcyBleHRlbmRzIF8ubHtjb25zdHJ1Y3RvcihhKXtzdXBlcihhKX19O18uR21jPVswLF8uRV07Xy5IbWM9WzAsXy5FLFswLF8uRV0sXy5qbSxfLkRdO18uSW1jPVswLF8uRSwtMyxfLkMsXy5FLC0xLF8uSG1jLF8uRWwsMSxfLkdtY107Xy5vej1bMCxfLm5sLF8uQywtMSxfLkpsLF8uRSxfLkltYyxfLnBsLF8uRSxfLkMsXy5HLF8uRCxfLmlsLF8uRSwtMSxfLkQsLTEsXy5FXTsKfWNhdGNoKGUpe18uX0R1bXBFeGNlcHRpb24oZSl9CnRyeXsKXy5lYWU9ZnVuY3Rpb24oYSxiLGMsZCl7Xy5VayhhLGIpLnNldChjLGQpO3JldHVybiBhfTsKfWNhdGNoKGUpe18uX0R1bXBFeGNlcHRpb24oZSl9CnRyeXsKXy5mYWU9ZnVuY3Rpb24oYSl7aWYoYT1fLk13YShhKSlyZXR1cm4gXy5nZyhhLCJ2ZWQiKXx8dm9pZCAwfTtfLmdhZT17fTtfLmhhZT17fTtfLmlhZT17fTtfLmphZT17fTtfLmthZT17fTtfLmxhZT17fTtfLm1hZT17fTsKfWNhdGNoKGUpe18uX0R1bXBFeGNlcHRpb24oZSl9CnRyeXsKXy5uYWU9ZnVuY3Rpb24oYSxiKXtyZXR1cm4gXy50ayhhLDEsYil9O18ub2FlPWZ1bmN0aW9uKGEsYil7cmV0dXJuIF8ubGsoYSwyLGIpfTtfLnBhZT1mdW5jdGlvbihhLGIpe3JldHVybiBfLmxrKGEsMyxiKX07Xy5xYWU9ZnVuY3Rpb24oYSxiKXtyZXR1cm4gXy53ayhhLDQsYil9O18ucmFlPWZ1bmN0aW9uKGEsYil7cmV0dXJuIF8ucWsoYSw3LGIpfTtfLnNhZT1jbGFzcyBleHRlbmRzIF8ubHtjb25zdHJ1Y3RvcihhKXtzdXBlcihhKX1nZXRFbnYoKXtyZXR1cm4gXy50KHRoaXMsNyl9fTtfLnRhZT1mdW5jdGlvbihhLGIpe3JldHVybiBfLlNiKGEsXy5zYWUsNixiKX07Xy51YWU9Xy5YYihfLm56LF8ub3opO18udmFlPV8uWWIoXy5veik7Xy5Tbls1MjUwMDIxNDJdPV8ub3o7Xy5oYWVbMUUzXT1fLm96O18uaWFlWzFFM109Xy5vejtfLm1hZVsxRTNdPV8ub3o7Xy5nYWVbMUUzXT1fLm96O18ubGFlWzFFM109Xy5vejtfLmphZVsxRTNdPV8ub3o7Xy5rYWVbMUUzXT1fLm96Owp9Y2F0Y2goZSl7Xy5fRHVtcEV4Y2VwdGlvbihlKX0KdHJ5ewpfLnUoInh5NVVKIik7CgpfLnYoKTsKfWNhdGNoKGUpe18uX0R1bXBFeGNlcHRpb24oZSl9CnRyeXsKXy5XSj1mdW5jdGlvbihhKXtyZXR1cm4gYS50eXBlfHx7bWQ6InRleHQvbWFya2Rvd24iLHR4dDoidGV4dC9wbGFpbiIscG5nOiJpbWFnZS9wbmciLGpwZzoiaW1hZ2UvanBlZyIsanBlZzoiaW1hZ2UvanBlZyIsZ2lmOiJpbWFnZS9naWYiLHBkZjoiYXBwbGljYXRpb24vcGRmIn1bYS5uYW1lLnRvTG93ZXJDYXNlKCkuc3BsaXQoIi4iKS5wb3AoKXx8IiJdfHwiYXBwbGljYXRpb24vb2N0ZXQtc3RyZWFtIn07Cn1jYXRjaChlKXtfLl9EdW1wRXhjZXB0aW9uKGUpfQp0cnl7Cl8udSgiVjhVR1QiKTsKXy53YWU9bmV3IFNldCgiaW1hZ2UvYXZpZiBpbWFnZS9ibXAgaW1hZ2UvanBlZyBpbWFnZS9wbmcgaW1hZ2Uvd2VicCBpbWFnZS9oZWlmIGltYWdlL2hlaWMiLnNwbGl0KCIgIikpOwpfLnYoKTsKfWNhdGNoKGUpe18uX0R1bXBFeGNlcHRpb24oZSl9CnRyeXsKXy5Wa2I9ZnVuY3Rpb24oYSl7Zm9yKGxldCBiIGluIF8uRXFhKV8uRXFhW2JdLmRlbGV0ZShhKX07Xy5Xa2I9ZnVuY3Rpb24oYSl7cmV0dXJuIF8uV2E/YSE9PV8uRUNhOmEhPT0iMCJ9O18uWGtiPWZ1bmN0aW9uKGEsYil7Zm9yKHZhciBjPWEuc2VhcmNoKF8uc2thKSxkPTAsZSxmPVtdOyhlPV8ucmthKGEsZCxiLGMpKT49MDspe2Q9YS5pbmRleE9mKCImIixlKTtpZihkPDB8fGQ+YylkPWM7ZSs9Yi5sZW5ndGgrMTtmLnB1c2goXy5na2EoYS5zbGljZShlLE1hdGgubWF4KGQsMCkpKSl9cmV0dXJuIGZ9O18uSnI9ZnVuY3Rpb24oYSxiLGMsZCxlKXtfLnJiKGEpO2lmKGU9PT1fLllDYSl7aWYoXy5saihhLGQsYykhPT1jKXJldHVybn1lbHNlIF8ubmZhKGEuUGssdm9pZCAwLGQsYyk7cmV0dXJuIF8uQmooYSxiLGMsZSl9O18uWWtiPWZ1bmN0aW9uKGEsYil7cmV0dXJuIF8uUmooYSxiLDMsdm9pZCAwLCEwKS5sZW5ndGh9OwpfLlprYj1mdW5jdGlvbihhLGIsYyxkKXtyZXR1cm4gXy54aihhLGIsYyxkPT1udWxsP2Q6Xy5oYihkKSl9O18uS3I9Y2xhc3MgZXh0ZW5kcyBfLmx7Y29uc3RydWN0b3IoYSl7c3VwZXIoYSl9Z2V0U2Vjb25kcygpe3JldHVybiBfLkRlKHRoaXMsMSl9c2V0U2Vjb25kcyhhKXtyZXR1cm4gXy5BYih0aGlzLDEsXy5qYihhKSwiMCIpfW9hKCl7cmV0dXJuIF8ueGUodGhpcywyKX19O18uTHI9WzAsXy5sbCxfLnZsXTsKfWNhdGNoKGUpe18uX0R1bXBFeGNlcHRpb24oZSl9CnRyeXsKXy5ycz1fLkdiKF8udmhhLF8uRWdhLF8uZmopO18uanBiPWZ1bmN0aW9uKGEsYil7cmV0dXJuIF8ubWsoYSwzLGIpfTtfLnNzPWNsYXNzIGV4dGVuZHMgXy5se2NvbnN0cnVjdG9yKGEpe3N1cGVyKGEpfWdldFllYXIoKXtyZXR1cm4gXy54ZSh0aGlzLDEpfXNldFllYXIoYSl7cmV0dXJuIF8ubWsodGhpcywxLGEpfWdldE1vbnRoKCl7cmV0dXJuIF8ueGUodGhpcywyKX1zZXRNb250aChhKXtyZXR1cm4gXy5tayh0aGlzLDIsYSl9Z2V0RGF5KCl7cmV0dXJuIF8ueGUodGhpcywzKX19O18udHM9WzAsXy52bCwtMl07Cn1jYXRjaChlKXtfLl9EdW1wRXhjZXB0aW9uKGUpfQp0cnl7Cl8ua3BiPWZ1bmN0aW9uKGEpe3JldHVybiBhP18ueWUoYSl8fF8ueWUoYS5xdWVyeVNlbGVjdG9yKCJbZGF0YS12ZWRdIikpOiIifTtfLnVzPVswLF8udmwsLTNdOwp9Y2F0Y2goZSl7Xy5fRHVtcEV4Y2VwdGlvbihlKX0KdHJ5ewpfLmxwYj1bMCxfLkZsLC0xXTsKfWNhdGNoKGUpe18uX0R1bXBFeGNlcHRpb24oZSl9CnRyeXsKXy5XcGI9Xy5HYihfLmNoYSxfLm9nYSxfLmRqKTtfLkZzPWNsYXNzIGV4dGVuZHMgXy5se2NvbnN0cnVjdG9yKGEpe3N1cGVyKGEpfX07Xy5Hcz1bMCxfLlprLC0xXTsKfWNhdGNoKGUpe18uX0R1bXBFeGNlcHRpb24oZSl9CnRyeXsKXy5jcWI9WzAsWzgsOV0sXy52bCwtNixfLklsLF8uTHIsXy5JbCxfLmxwYl07Cn1jYXRjaChlKXtfLl9EdW1wRXhjZXB0aW9uKGUpfQp0cnl7Cl8ucXQ9ZnVuY3Rpb24oYSl7cmV0dXJuIF8uRGUoYSwyKX07Xy5YdWI9ZnVuY3Rpb24oYSxiKXtyZXR1cm4gXy5BYihhLDIsXy5qYihiKSwiMCIpfTtfLnJ0PWNsYXNzIGV4dGVuZHMgXy5se2NvbnN0cnVjdG9yKGEpe3N1cGVyKGEpfU9xKCl7cmV0dXJuIF8udCh0aGlzLDEpfX07Xy5zdD1bMCxfLkZsLF8ubGwsXy52bF07Cn1jYXRjaChlKXtfLl9EdW1wRXhjZXB0aW9uKGUpfQp0cnl7Cl8udHQ9WzBdOwp9Y2F0Y2goZSl7Xy5fRHVtcEV4Y2VwdGlvbihlKX0KdHJ5ewpfLmFMYj0hIShfLk9pWzU4XSYxNik7Xy5iTGI9ISEoXy5PaVs1OF0mNjQpO18uY0xiPSEhKF8uT2lbNThdJjEyOCk7Xy5kTGI9ISEoXy5PaVs1OF0mMjU2KTtfLmVMYj0hIShfLk9pWzU4XSYxMDI0KTtfLmZMYj0hIShfLk9pWzU4XSYyMDQ4KTtfLmdMYj0hIShfLk9pWzU4XT4+MTYmMSk7Xy5oTGI9ISEoXy5PaVs1OF0+PjE3JjEpO18uaUxiPSEhKF8uT2lbNThdPj4xOSYxKTtfLmpMYj0hIShfLk9pWzU4XT4+MjAmMSk7Xy5rTGI9ISEoXy5PaVs1OF0+PjIxJjEpO18ubExiPSEhKF8uT2lbNThdPj4yMiYxKTtfLm1MYj0hIShfLk9pWzU4XT4+MjMmMSk7Xy5uTGI9ISEoXy5PaVs1OF0+PjI1JjEpO18ub0xiPSEhKF8uT2lbNThdPj4yNiYxKTtfLnBMYj0hIShfLk9pWzU4XT4+MjcmMSk7Xy5xTGI9ISEoXy5PaVs1OF0+PjI4JjEpO18uckxiPSEhKF8uT2lbNThdPj4yOSYxKTtfLnNMYj0hIShfLk9pWzU5XSYxKTtfLnRMYj0hIShfLk9pWzU5XSYyKTtfLnVMYj0hIShfLk9pWzU5XSY0KTsKXy52TGI9ISEoXy5PaVs1OV0mOCk7Xy53TGI9ISEoXy5PaVs1OV0mMzIpO18ueExiPSEhKF8uT2lbNTldJjEyOCk7Xy55TGI9ISEoXy5PaVs1OV0mMTAyNCk7Xy56TGI9ISEoXy5PaVs1OV0mMjA0OCk7Xy5BTGI9ISEoXy5PaVs1OV0mNDA5Nik7Xy5CTGI9ISEoXy5PaVs1OV0mODE5Mik7Xy5DTGI9ISEoXy5PaVs1OV0+PjE1JjEpOwp9Y2F0Y2goZSl7Xy5fRHVtcEV4Y2VwdGlvbihlKX0KdHJ5ewovKgoKTWF0aC51dWlkLmpzICh2MS40KQpodHRwOi8vd3d3LmJyb29mYS5jb20KbWFpbHRvOnJvYmVydEBicm9vZmEuY29tCkNvcHlyaWdodCAoYykgMjAxMCBSb2JlcnQgS2llZmZlcgpEdWFsIGxpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgYW5kIEdQTCBsaWNlbnNlcy4KKi8KdmFyIGtpYztfLmxpYz1mdW5jdGlvbihhLGIpe3ZhciBjPVtdLGQ7Yj1ifHxraWMubGVuZ3RoO2lmKGEpZm9yKGQ9MDtkPGE7ZCsrKWNbZF09a2ljWzB8TWF0aC5yYW5kb20oKSpiXTtlbHNlIGZvcihjWzhdPWNbMTNdPWNbMThdPWNbMjNdPSItIixjWzE0XT0iNCIsZD0wO2Q8MzY7ZCsrKWNbZF18fChhPTB8TWF0aC5yYW5kb20oKSoxNixjW2RdPWtpY1tkPT0xOT9hJjN8ODphXSk7cmV0dXJuIGMuam9pbigiIil9O18uWHk9ZnVuY3Rpb24oKXtmb3IodmFyIGE9QXJyYXkoMzYpLGI9MCxjLGQ9MDtkPDM2O2QrKylkPT04fHxkPT0xM3x8ZD09MTh8fGQ9PTIzP2FbZF09Ii0iOmQ9PTE0P2FbZF09IjQiOihiPD0yJiYoYj0zMzU1NDQzMitNYXRoLnJhbmRvbSgpKjE2Nzc3MjE2fDApLGM9YiYxNSxiPj49NCxhW2RdPWtpY1tkPT0xOT9jJjN8ODpjXSk7cmV0dXJuIGEuam9pbigiIil9O2tpYz0iMDEyMzQ1Njc4OUFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXoiLnNwbGl0KCIiKTsKfWNhdGNoKGUpe18uX0R1bXBFeGNlcHRpb24oZSl9CnRyeXsKXy53bWM9WzAsXy5hbCwtNCxfLkddOwp9Y2F0Y2goZSl7Xy5fRHVtcEV4Y2VwdGlvbihlKX0KdHJ5ewpfLkNtYz1bMCxfLkYsWzAsXy5hbCwtMV0sXy5HLC0xXTsKfWNhdGNoKGUpe18uX0R1bXBFeGNlcHRpb24oZSl9CnRyeXsKdmFyIGt4YztfLmx4Yz1mdW5jdGlvbihhKXthPWEubWF0Y2goa3hjKTtyZXR1cm4gYSE9bnVsbD9hWzBdOiIifTtreGM9UmVnRXhwKCIoPzooaHR0cHM/fGZ0cCk6Ly98d3d3XFwuKVtcXHcjLTshPT9AXFxbXFxcXFxcXV9ge3x9fl0rIiwiaSIpOwp9Y2F0Y2goZSl7Xy5fRHVtcEV4Y2VwdGlvbihlKX0KdHJ5ewp2YXIgQ2JkLERiZCxKYmQ7Xy5CYmQ9Y2xhc3MgZXh0ZW5kcyBfLmx7Y29uc3RydWN0b3IoYSl7c3VwZXIoYSl9Z2V0VHlwZSgpe3JldHVybiBfLk9qKHRoaXMsMSl9QWMoYSl7cmV0dXJuIF8uWmgodGhpcywxLGEpfXRlKCl7cmV0dXJuIF8uZWkodGhpcywxKX1nZXRTaXplKCl7cmV0dXJuIF8ueGUodGhpcywyLDIwKX1zZXRTaXplKGEpe3JldHVybiBfLmxrKHRoaXMsMixhKX1oRSgpe3JldHVybiBfLndlKHRoaXMsMil9fTsKQ2JkPWNsYXNzIGV4dGVuZHMgXy5se2NvbnN0cnVjdG9yKGEpe3N1cGVyKGEpfWdldFRpdGxlKCl7cmV0dXJuIF8udCh0aGlzLDEpfXNldFRpdGxlKGEpe3JldHVybiBfLmZoKHRoaXMsMSxhKX1sZCgpe3JldHVybiBfLnBoKHRoaXMsMSl9eGQoKXtyZXR1cm4gXy50KHRoaXMsMil9Z2V0SW1hZ2VVcmwoKXtyZXR1cm4gXy50KHRoaXMsMyl9b2EoKXtyZXR1cm4gXy5Maih0aGlzLDMpfVJDKCl7cmV0dXJuIF8udCh0aGlzLDQpfWdldFR5cGUoKXtyZXR1cm4gXy50KHRoaXMsNSl9QWMoYSl7cmV0dXJuIF8uZmgodGhpcyw1LGEpfXRlKCl7cmV0dXJuIF8uTGoodGhpcyw1KX19O0RiZD1jbGFzcyBleHRlbmRzIF8ubHtjb25zdHJ1Y3RvcihhKXtzdXBlcihhKX1nZXRJbWFnZVVybCgpe3JldHVybiBfLnQodGhpcywyKX1vYSgpe3JldHVybiBfLkxqKHRoaXMsMil9eGQoKXtyZXR1cm4gXy50KHRoaXMsMyl9fTsKXy5FYmQ9Y2xhc3MgZXh0ZW5kcyBfLmx7Y29uc3RydWN0b3IoYSl7c3VwZXIoYSl9Rm4oKXtyZXR1cm4gXy50KHRoaXMsMSl9bVooKXtyZXR1cm4gXy50KHRoaXMsNil9Z2V0SW1hZ2VVcmwoKXtyZXR1cm4gXy50KHRoaXMsMil9b2EoKXtyZXR1cm4gXy5Maih0aGlzLDIpfUdlKCl7cmV0dXJuIF8udCh0aGlzLDMpfUFsKCl7cmV0dXJuIF8ucGgodGhpcywzKX19O18uRWJkLnByb3RvdHlwZS5YYT0iTXJxNFhiIjtfLkZiZD1jbGFzcyBleHRlbmRzIF8ubHtjb25zdHJ1Y3RvcihhKXtzdXBlcihhKX1oeWMoKXtyZXR1cm4gXy5waCh0aGlzLDEpfWdldEljb24oKXtyZXR1cm4gXy5xKHRoaXMsXy5CYmQsNCl9c2V0SWNvbihhKXtyZXR1cm4gXy5TYih0aGlzLF8uQmJkLDQsYSl9UGooKXtyZXR1cm4gXy5raih0aGlzLF8uQmJkLDQpfX07Xy5HYmQ9WzcsMTNdO18uSGJkPVsyMl07Xy5JYmQ9WzFdO18uV0U9WzEsMiwzLDQsNSw2LDcsOCwxMCwxMSwxMywxNCwxNSwxNiwxNywxOCwxOSwyMSwyMl07Cl8uWEU9Y2xhc3MgZXh0ZW5kcyBfLmx7Y29uc3RydWN0b3IoYSl7c3VwZXIoYSl9V0EoKXtyZXR1cm4gXy5TaCh0aGlzLENiZCwyLF8uV0UpfVZiKCl7cmV0dXJuIF8uU2godGhpcyxfLkZiZCwzLF8uV0UpfUJjKGEpe3JldHVybiBfLkdqKHRoaXMsMyxfLldFLGEpfVRlKCl7cmV0dXJuIF8ubWoodGhpcyxfLkZiZCwzLF8uV0UpfUh5KCl7cmV0dXJuIF8uU2godGhpcyxfLkViZCw0LF8uV0UpfWdldFBsYWNlKCl7cmV0dXJuIF8uU2godGhpcyxEYmQsNSxfLldFKX19O0piZD1bMCxfLkMsXy5GLFswLF8uQ10sXy5HXTtfLktiZD1bMCxfLkcsXy5DXTt2YXIgTGJkPVswLF8uRSwtMixfLkdzLF8uRV07dmFyIE1iZD1bMCxfLkUsLTUsXy5EXTt2YXIgTmJkPVswLF8uRixbMCxbMiwzLDQsNV0sXy5jcWIsXy5JbCxfLnN0LF8uSWwsWzBdLF8uSWwsWzBdLF8uSWwsWzBdXV07dmFyIE9iZD1bMCxfLnN0LDEsXy5zdCwxLF8uV2ssWyEwLF8uRSxfLnN0XSxfLkUsXy5HLF8uRixbMCxfLmNxYixfLnN0XSxfLkYsWzAsXy5FLF8uc3RdLC0xXTt2YXIgUGJkPVswLF8uRSwtMixfLnVzLC0xLF8uRSxKYmQsXy5GLFswLF8uQyxfLkVdLF8uRSwxLF8uc3QsXy5ELF8uRixPYmQsTmJkLF8uRixbMCxfLkVdLF8uc3QsSmJkLF8uRixbMCxfLkUsXy5zdCxfLkQsXy51cywtMSxfLkUsTmJkLF8uRixPYmQsXy5GLFswLF8uRV0sXy5zdCwtMixfLkUsLTFdLF8uRSxbMCxfLmlsLF8uRSwtMyxfLkRdLFswLF8uRSxfLnRzLF8uQyxKYmQsXy5pbCwtMV0sXy5zdCxfLkcsXy5zdCwtMSxfLkVdO18uUWJkPVswLF8uR2JkLF8uQyxfLkUsLTMsMSxfLklsLF8uc3QsXy5ELF8uRixQYmQsXy5ELF8uc3QsWzAsXy5FLC0yLF8uQ10sXy53bCxfLnN0LF8uRSxfLkQsXy5FLC0xLF8uQyxfLkVdO18uUmJkPVswLF8uRSxfLnBsLF8uRSxfLkYsXy5RYmQsXy50cyxfLkMsSmJkLFswLF8uRyxfLkVsXSxfLkYsWzAsXy5hbCxfLkUsXy5DXSxfLnpsLF8uYWwsXy5DLC0xLF8uRCxfLkMsLTQsXy5EXTtfLlNiZD1bMCxfLldFLF8uSWwsWzAsXy5FLC0yLF8uSmwsXy5FLC01XSxfLklsLFswLF8uRSwtOSxfLmlsXSxfLklsLFswLF8uRSwtMixfLktiZCxfLkRdLF8uSWwsTWJkLF8uSWwsTGJkLF8uSWwsWzAsXy5FXSxfLklsLFswLF8uRSwtMSxbMCxfLkUsLTUsXy5DLF8uRCwtMSxfLkMsXy5FXSxfLkcsXy5FXSxfLklsLFswLF8uRSwtNV0sMSxfLklsLFswLF8uSWJkLF8uSWwsWzAsXy5IYmQsMyxbMCw5LF8uc3QsXy5GLE9iZCxbMCxfLkpsLF8uTHIsXy5qbV0sTmJkLFswLF8uRV1dLFswLF8uRSwtMSxfLnVzLC0xLDEsXy5FLC02LF8udHMsLTEsWzAsXy5DLF8uRixbMCxfLkNdXSxfLkMsXy5GLFswLF8uQyxfLkVdLF8uRSxfLnpsLF8uRF0sMTMsXy5SYmQsXy5RYmQsUGJkLF8uR2xdLFswLFswLF8uRSwtMl0sWzAsXy5FLC0xXSxfLkUsLTFdLDEsWzAsT2JkLF8uRV0sXy5EXSxfLklsLFswLF8uRV0sMSxfLklsLFswLF8uRixbMCxfLkVdXSxfLklsLFswLF8uRSwtMSxfLkcsXy5FLC0xXSwKXy5JbCxbMCxfLkMsLTIsXy5GLFswLF8uRSxfLkMsLTJdLF8udWwsLTEsXy5GLFswLF8uQywtMV0sLTEsXy51bCxfLkddLF8uSWwsWzAsXy5FLDIsXy5GLExiZCxbMCxfLkVdXSxfLklsLFswLF8uRSwtMl0sXy5JbCxbMCxfLkYsWzAsXy5FLF8uRixbMCxfLkUsLTEsXy5Mcl1dXSxfLklsLFswLF8uRSwtNV0sWzAsWzFdLF8uSWwsWzAsXy5FLF8uQyxfLkYsWzAsXy5FXV1dLF8uSWwsWzAsXy5GLFswLFsxXSxfLklsLE1iZF0sLTFdLF8uSWwsWzAsXy5FLC0xLFswLF8uRSxfLkQsXy5FbF1dXTsKfWNhdGNoKGUpe18uX0R1bXBFeGNlcHRpb24oZSl9CnRyeXsKXy5UYmQ9WzEsMiw0LDddO18uVWJkPWNsYXNzIGV4dGVuZHMgXy5se2NvbnN0cnVjdG9yKGEpe3N1cGVyKGEpfX07Xy5WYmQ9WzAsXy5GLF8uU2JkLF8uRixbMCxfLlRiZCxbMTFdLF8uR2wsXy5JbCxfLktiZCxfLkUsXy5HbCxfLkUsLTEsXy5HbCwxLF8uRSxbMCxfLkUsXy5DLC0xXSxfLkdsLF8uQnAsXy5HXV07Cn1jYXRjaChlKXtfLl9EdW1wRXhjZXB0aW9uKGUpfQp0cnl7Cl8ueGFlPVswLF8ud21jLF8uQ21jLF8uYWwsWzAsWzAsWzAsXy5ZaywtMl0sWzAsXy5ZaywtM11dLFswLF8uYWwsLTFdXSxfLkYsXy5DbWMsXy5DbWMsWzAsXy5GLFswLF8uYWwsLTFdLF8uRyxfLmFsLF8uR11dOwp9Y2F0Y2goZSl7Xy5fRHVtcEV4Y2VwdGlvbihlKX0KdHJ5ewp2YXIgQWFlLHlhZSx6YWUsQmFlLENhZSxEYWUsRWFlLEhhZTtBYWU9YXN5bmMgZnVuY3Rpb24oYSl7dmFyIGI9KDAsXy5NZikoKSxjPWIoKTtiPWIoMSk7dHJ5e2xldCBkPWIoYXdhaXQgYyh5YWUoYSkpKTtyZXR1cm4hZHx8ZCBpbnN0YW5jZW9mIEFycmF5QnVmZmVyP251bGw6emFlKGQpfWZpbmFsbHl7YygpfX07eWFlPWZ1bmN0aW9uKGEpe3ZhciBiPW5ldyBGaWxlUmVhZGVyLGM9bmV3IFByb21pc2UoZD0+e2Iub25sb2FkZW5kPSgpPT57ZChiLnJlc3VsdCl9O2Iub25lcnJvcj0oKT0+e2QobnVsbCl9fSk7Yi5yZWFkQXNEYXRhVVJMKGEpO3JldHVybiBjfTt6YWU9ZnVuY3Rpb24oYSl7dmFyIGI9bmV3IEltYWdlLGM9bmV3IFByb21pc2UoZD0+e2Iub25sb2FkPSgpPT57ZChiKX07Yi5vbmVycm9yPSgpPT57ZChudWxsKX19KTtiLnNyYz1hO3JldHVybiBjfTtCYWU9ZnVuY3Rpb24oYSxiKXt0cnl7cmV0dXJuIGEuZ2V0VWludDgoYil9Y2F0Y2goYyl7cmV0dXJuIG51bGx9fTsKQ2FlPWZ1bmN0aW9uKGEsYil7dHJ5e3JldHVybiBhLmdldFVpbnQxNihiKX1jYXRjaChjKXtyZXR1cm4gbnVsbH19O0RhZT1mdW5jdGlvbihhLGIpe3RyeXtyZXR1cm4gYS5nZXRVaW50MzIoYil9Y2F0Y2goYyl7cmV0dXJuIG51bGx9fTsKXy5GYWU9YXN5bmMgZnVuY3Rpb24oYSl7dmFyIGI9KDAsXy5NZikoKSxjPWIoKTtiPWIoMSk7dHJ5e3ZhciBkPWIoYXdhaXQgYyhhLmFycmF5QnVmZmVyKCkpKTtsZXQgbT1uZXcgRGF0YVZpZXcoZCk7aWYoRGFlKG0sMCkhPT0yMzAzNzQxNTExfHxEYWUobSw0KSE9PTIxODc2NTgzNCl2YXIgZT0hMTtlbHNle3ZhciBmPUJhZShtLDI1KTtlPWY9PT00fHxmPT09Nn12YXIgZztpZighKGc9ZXx8KENhZShtLDApPT09MTY5NzM/Q2FlKG0sMjgpPT09NTA6ITEpKSlpZihEYWUobSwwKSE9PTEzODA1MzM4MzB8fERhZShtLDgpIT09MTQ2NDE1Njc1MilnPSExO2Vsc2V7dmFyIGg9QmFlKG0sMTUpO2c9aD09PTg4fHxoPT09NzZ9dmFyIGs9ZztsZXQgbj1iKGF3YWl0IGMoQWFlKGEpKSk7aWYoIW4pcmV0dXJue2tpbmQ6ImZhaWwiLGZpbGU6YX07RGF0ZS5ub3coKTtsZXQgcD1iKGF3YWl0IGMoRWFlKG4sayxhLm5hbWUpKSk7cmV0dXJuIHA/cDp7a2luZDoibWVhc3VyZWQiLGZpbGU6YSxVOTp7d2lkdGg6bi53aWR0aCwKaGVpZ2h0Om4uaGVpZ2h0fX19ZmluYWxseXtjKCl9fTtFYWU9YXN5bmMgZnVuY3Rpb24oYSxiLGMpe3ZhciBkPSgwLF8uTWYpKCksZT1kKCk7ZD1kKDEpO3RyeXtsZXQgaD1uZXcgXy5MZChhLndpZHRoLGEuaGVpZ2h0KTtoLndpZHRoPD1HYWUud2lkdGgmJmguaGVpZ2h0PD1HYWUuaGVpZ2h0fHxfLm9IYShoLEdhZSk7dmFyIGY9e3dpZHRoOk1hdGguZmxvb3IoaC53aWR0aCksaGVpZ2h0Ok1hdGguZmxvb3IoaC5oZWlnaHQpfTtsZXQgaz1kKGF3YWl0IGUoSGFlKHtuMWI6ZixzbGM6Yn0sYSkpKTtpZihrKXtpZihjKXtsZXQgbT1jLmxhc3RJbmRleE9mKCIuIik7dmFyIGc9YCR7bT4wP2Muc2xpY2UoMCxtKTpjfS5qcGdgfWVsc2UgZz0iaW1hZ2UuLmpwZyI7cmV0dXJue2tpbmQ6InByb2Nlc3NlZCIsZmlsZTpuZXcgRmlsZShba10sZyx7bGFzdE1vZGlmaWVkOkRhdGUubm93KCksdHlwZToiaW1hZ2UvanBlZyJ9KSxVOTpmfX19ZmluYWxseXtlKCl9fTsKSGFlPWFzeW5jIGZ1bmN0aW9uKGEsYil7dmFyIGM9YS5uMWIud2lkdGgsZD1hLm4xYi5oZWlnaHQsZT1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJjYW52YXMiKTtlLndpZHRoPWM7ZS5oZWlnaHQ9ZDt2YXIgZj1lLmdldENvbnRleHQoIjJkIix7YWxwaGE6ITEsZGVzeW5jaHJvbml6ZWQ6ITB9KTtpZihmKXJldHVybiBhLnNsYyYmKGYuZmlsbFN0eWxlPSIjZmZmIixmLmZpbGxSZWN0KDAsMCxlLndpZHRoLGUuaGVpZ2h0KSksZi5kcmF3SW1hZ2UoYiwwLDAsYyxkKSxuZXcgUHJvbWlzZShnPT57ZS50b0Jsb2IoaD0+e2coaCE9bnVsbD9oOnZvaWQgMCl9LCJpbWFnZS9qcGVnIiwuNyl9KX07dmFyIEdhZT1uZXcgXy5MZCgxMDI0LDEwMjQpOwp9Y2F0Y2goZSl7Xy5fRHVtcEV4Y2VwdGlvbihlKX0KdHJ5ewpfLklhZT0hIShfLk9pWzM1XT4+MTYmMSk7Xy5KYWU9ISEoXy5PaVszNV0+PjE3JjEpO18uS2FlPSEhKF8uT2lbMzVdPj4xOCYxKTtfLkxhZT0hIShfLk9pWzM1XT4+MTkmMSk7Cn1jYXRjaChlKXtfLl9EdW1wRXhjZXB0aW9uKGUpfQp0cnl7CnZhciBPYWUsUWFlLFJhZSxWYWUsVWFlLGZiZSxpYmUsWGFlLFlhZSxrYmUsamJlLEdiZSxKYmUsd2JlO18uTmFlPWZ1bmN0aW9uKCl7cmV0dXJuIE1hZS5nZXQoKS5lbmRzV2l0aCgidmVpbC5nb29nIik/Imh0dHBzOi8vbGVuc2Zyb250ZW5kLXBhLmNsaWVudHM2LnZlaWwuZ29vZyI6Imh0dHBzOi8vbGVuc2Zyb250ZW5kLXBhLmNsaWVudHM2Lmdvb2dsZS5jb20ifTtPYWU9YXN5bmMgZnVuY3Rpb24oYSl7dmFyIGI9KDAsXy5NZikoKSxjPWIoKTtiPWIoMSk7dHJ5e3JldHVybiBuZXcgVWludDhBcnJheShiKGF3YWl0IGMoKG5ldyBSZXNwb25zZShhLnN0cmVhbSgpLnBpcGVUaHJvdWdoKG5ldyBDb21wcmVzc2lvblN0cmVhbSgiZ3ppcCIpKSkpLmJ5dGVzKCkpKSl9ZmluYWxseXtjKCl9fTsKUWFlPWZ1bmN0aW9uKGEpe3ZhciBiO2lmKCEoYj1hLnR5cGUpKXtiPWEubmFtZTthPVBhZSgpO3ZhciBjPWIubGFzdEluZGV4T2YoIi8iKSsxO2I9Yi5zbGljZShjKS5yZXBsYWNlKC9cLisvZywiLiIpO2M9Yi5sYXN0SW5kZXhPZigiLiIpO2I9Yzw9MD8iIjpiLnNsaWNlKGMrMSk7Yj1hW2IudG9Mb3dlckNhc2UoKV18fCJhcHBsaWNhdGlvbi9vY3RldC1zdHJlYW0ifXJldHVybiBifTsKUmFlPWFzeW5jIGZ1bmN0aW9uKGEpe3ZhciBiPSgwLF8uTWYpKCksYz1iKCk7Yj1iKDEpO3RyeXtzd2l0Y2goYS5raW5kKXtjYXNlICJpbWFnZUZpbGUiOmxldCBkPWIoYXdhaXQgYyhfLkZhZShhLmZpbGUpKSksZT1iKGF3YWl0IGMoZC5maWxlLmFycmF5QnVmZmVyKCkpKTtyZXR1cm57a2luZDoicHJvY2Vzc2VkSW1hZ2VGaWxlIixkYXRhOm5ldyBVaW50OEFycmF5KGUpLGZpbGVOYW1lOmQuZmlsZS5uYW1lLG1pbWVUeXBlOlFhZShkLmZpbGUpfTtjYXNlICJwZGZGaWxlIjpyZXR1cm57a2luZDoiZ3ppcHBlZFBkZkZpbGUiLGRhdGE6Yihhd2FpdCBjKE9hZShhLmZpbGUpKSksZmlsZU5hbWU6YS5maWxlLm5hbWUsbWltZVR5cGU6UWFlKGEuZmlsZSl9O2Nhc2UgInJhd0ZpbGUiOnJldHVybntraW5kOiJnemlwcGVkUmF3RmlsZSIsZGF0YTpiKGF3YWl0IGMoT2FlKGEuZmlsZSkpKSxmaWxlTmFtZTphLmZpbGUubmFtZSxtaW1lVHlwZTpRYWUoYS5maWxlKX07Y2FzZSAiZHJpdmVGaWxlIjpsZXQgZiwKZztyZXR1cm57a2luZDoiZ3ppcHBlZERyaXZlRmlsZSIsZGF0YTpiKGF3YWl0IGMoT2FlKGEuZmlsZSkpKSxGbmI6YS5GbmIsZmlsZU5hbWU6KGY9YS5maWxlTmFtZSkhPW51bGw/ZjphLmZpbGUubmFtZSxtaW1lVHlwZTooZz1hLm1pbWVUeXBlKSE9bnVsbD9nOlFhZShhLmZpbGUpfTtjYXNlICJ1cmwiOmNhc2UgInByb2Nlc3NlZEltYWdlRmlsZSI6Y2FzZSAiZ3ppcHBlZFBkZkZpbGUiOmNhc2UgImd6aXBwZWRSYXdGaWxlIjpjYXNlICJnemlwcGVkRHJpdmVGaWxlIjpyZXR1cm4gYTtkZWZhdWx0Ol8uZWIoYSx2b2lkIDApfX1maW5hbGx5e2MoKX19OwpWYWU9ZnVuY3Rpb24oYSl7dmFyIGI9Xy5TYWUoXy5UYWUoXy5wYWUoXy5vYWUoXy5uYWUobmV3IF8ubnosQmlnSW50LmFzVWludE4oNjQsQmlnSW50KGAweCR7Xy5YeSgpLnJlcGxhY2UoLy0vZywiIil9YCkpLnRvU3RyaW5nKCkpLDEpLDEpLChhPT1udWxsP3ZvaWQgMDphLmtpbmQpPT09InBkZkZpbGUifHwoYT09bnVsbD92b2lkIDA6YS5raW5kKT09PSJnemlwcGVkUGRmRmlsZSJ8fChhPT1udWxsP3ZvaWQgMDphLmtpbmQpPT09InVybCI/MTp2b2lkIDApLFVhZShhKSk7YTppZihhKXtzd2l0Y2goYS5raW5kKXtjYXNlICJwcm9jZXNzZWRJbWFnZUZpbGUiOmNhc2UgImd6aXBwZWRSYXdGaWxlIjpjYXNlICJnemlwcGVkUGRmRmlsZSI6Y2FzZSAiZHJpdmVGaWxlIjpjYXNlICJnemlwcGVkRHJpdmVGaWxlIjppZihhLm1pbWVUeXBlKXthPWEubWltZVR5cGU7YnJlYWsgYX19YT0oYT09bnVsbD92b2lkIDA6YS5raW5kKT09PSJpbWFnZUZpbGUifHwoYT09bnVsbD92b2lkIDA6YS5raW5kKT09PQoicmF3RmlsZSJ8fChhPT1udWxsP3ZvaWQgMDphLmtpbmQpPT09InBkZkZpbGUifHwoYT09bnVsbD92b2lkIDA6YS5raW5kKT09PSJkcml2ZUZpbGUiP1FhZShhLmZpbGUpOnZvaWQgMH1lbHNlIGE9dm9pZCAwO2I9Xy5maChiLDEzLGEpO2E9bmV3IFVpbnQ4QXJyYXkoMTYpO2NyeXB0by5nZXRSYW5kb21WYWx1ZXMoYSk7cmV0dXJuIF8ucmFlKF8ucWFlKGIsYSksRGF0ZS5ub3coKSoxRTMpfTsKVWFlPWZ1bmN0aW9uKGEpe3N3aXRjaChhPT1udWxsP3ZvaWQgMDphLmtpbmQpe2Nhc2UgImltYWdlRmlsZSI6Y2FzZSAicHJvY2Vzc2VkSW1hZ2VGaWxlIjpyZXR1cm4gMDtjYXNlICJyYXdGaWxlIjpjYXNlICJnemlwcGVkUmF3RmlsZSI6cmV0dXJuIDY7Y2FzZSAicGRmRmlsZSI6Y2FzZSAiZ3ppcHBlZFBkZkZpbGUiOnJldHVybiAxO2Nhc2UgInVybCI6cmV0dXJuIDU7Y2FzZSAiZHJpdmVGaWxlIjpjYXNlICJnemlwcGVkRHJpdmVGaWxlIjpyZXR1cm4gNztjYXNlIHZvaWQgMDpicmVhaztkZWZhdWx0Ol8uZWIoYSx2b2lkIDApfX07CmZiZT1hc3luYyBmdW5jdGlvbihhLGIsYyl7dmFyIGQ9KDAsXy5NZikoKSxlPWQoKTtkPWQoMSk7dHJ5e2xldCBmPW5ldyBVUkwoYCR7V2FlfS92MS9nc2Vzc2lvbmlkP3N1cmZhY2U9JHtjfSZwbGF0Zm9ybT0ke2J9YCksZz1kKGF3YWl0IGUoWGFlKGYudG9TdHJpbmcoKSx7bWV0aG9kOiJHRVQiLGNyZWRlbnRpYWxzOiJpbmNsdWRlIixoZWFkZXJzOllhZShhKX0pKSksaD1kKGF3YWl0IGUoZy5qc29uKCkpKSxrPWgucm91dGluZ0luZm98fHt9LG09ay5tdWx0aW1vZGFsVW5kZXJzdGFuZGluZ0xyb1Rva2VuO3JldHVybntRZWE6Xy5aYWUoXy4kYWUoXy5hYmUobmV3IF8uc2FlLGsuY2VsbCksay50YXNrKSxtP18uYmJlKChuZXcgXy5jYmUpLk1jKG0uaWQpLG0uYmFja2VuZD9fLmRiZShuZXcgXy5lYmUsbS5iYWNrZW5kLmJuc0FkZHJlc3MpLlRjKCk6bnVsbCkuVGMoKTpudWxsKS5UYygpLHdKOmguZ3dzU2Vzc2lvbklkfX1maW5hbGx5e2UoKX19OwppYmU9YXN5bmMgZnVuY3Rpb24oYSxiLGMpe3ZhciBkPSgwLF8uTWYpKCksZT1kKCk7ZD1kKDEpO3RyeXtsZXQgZj1uZXcgVVJMKFdhZSsiL3YxL2NydXBsb2FkIik7KGM9PW51bGw/MDpjLndKKSYmZi5zZWFyY2hQYXJhbXMuc2V0KCJnc2Vzc2lvbmlkIixjLndKKTtsZXQgZz1kKGF3YWl0IGUoWGFlKGYudG9TdHJpbmcoKSx7bWV0aG9kOiJQT1NUIixib2R5OmdiZShiKSxjcmVkZW50aWFsczoiaW5jbHVkZSIsa2VlcGFsaXZlOmM9PW51bGw/dm9pZCAwOmMua2VlcGFsaXZlLGhlYWRlcnM6T2JqZWN0LmFzc2lnbih7fSxZYWUoYSkseyJDb250ZW50LVR5cGUiOiJhcHBsaWNhdGlvbi94LXByb3RvYnVmIn0pfSkpKSxoPWQoYXdhaXQgZShnLnRleHQoKSkpO3JldHVybiBoYmUoXy5SYShoKSl9ZmluYWxseXtlKCl9fTsKWGFlPWFzeW5jIGZ1bmN0aW9uKGEsYil7dmFyIGM9KDAsXy5NZikoKSxkPWMoKTtjPWMoMSk7dHJ5e2xldCBlPWMoYXdhaXQgZChmZXRjaChhLGIpKSksZjtpZihfLkphZSYmZS5zdGF0dXM9PT00MDEmJigoZj1iLmhlYWRlcnMpPT1udWxsPzA6Zi5BdXRob3JpemF0aW9uKSl7bGV0IGc9T2JqZWN0LmFzc2lnbih7fSxiLmhlYWRlcnMpO2RlbGV0ZSBnLkF1dGhvcml6YXRpb247cmV0dXJuIGZldGNoKGEsT2JqZWN0LmFzc2lnbih7fSxiLHtoZWFkZXJzOmd9KSl9cmV0dXJuIGV9ZmluYWxseXtkKCl9fTsKWWFlPWZ1bmN0aW9uKGEpe3ZhciBiPXsiWC1Hb29nLUFwaS1LZXkiOmEuYXBpS2V5LCJYLUdvb2ctQXV0aFVzZXIiOmEuYXV0aFVzZXJ8fCIwIiwiWC1Hb29nLUVuY29kZS1SZXNwb25zZS1JZi1FeGVjdXRhYmxlIjoiYmFzZTY0In07YS55bWMmJihiLkF1dGhvcml6YXRpb249YS55bWMpO2EueEUmJihhPV8uSDVhKFtdKSkmJihiLkF1dGhvcml6YXRpb249YSxiWyJYLUdvb2ctQXV0aFVzZXIiXT1fLnBtKF8uQmQoIlFydHhLIiksIjAiKSk7cmV0dXJuIGJ9OwpfLmxiZT1mdW5jdGlvbihhLGIpe3ZhciBjLGQ9Xy50YWUoVmFlKGIpLChjPWEuUlphKT09bnVsbD92b2lkIDA6Yy5RZWEpLGU9bmV3IF8uTXEsZj1uZXcgXy5NcSxnPW5ldyBfLk1xLGg9bmV3IF8uTXE7YS5PSmM/KGFzeW5jKCk9Pnt2YXIgaz0oMCxfLk1mKSgpLG09aygpO2s9aygxKTt0cnl7dHJ5e2xldCB7UWVhOm4sd0o6cH09ayhhd2FpdCBtKGZiZShhLmF1dGgsYS5aYy5wbGF0Zm9ybSxhLlpjLk9sKSkpO2gucmVzb2x2ZSh7UWVhOm4sd0o6cH0pO2UucmVzb2x2ZSh7UHNhOmpiZShfLnRhZShkLmNsb25lKCksbikpLHdKOnB9KX1jYXRjaChuKXtrKCksaC5yZXNvbHZlKHZvaWQgMCl9fWZpbmFsbHl7bSgpfX0pKCk6aC5yZXNvbHZlKGEuUlphKTtQcm9taXNlLmFsbChbaC5wcm9taXNlLFJhZShiKV0pLnRoZW4oKFtrLG1dKT0+a2JlKE9iamVjdC5hc3NpZ24oe30sYSx7UlphOmt9KSxfLnRhZShkLmNsb25lKCksaz09bnVsbD92b2lkIDA6ay5RZWEpLG0pKS50aGVuKGs9PntrLmtpbmQ9PT0KInN1Y2Nlc3MiPyhlLnJlc29sdmUoay51cmxQYXJhbXMpLGYucmVzb2x2ZShrLm9iamVjdHMpKTpnLnJlc29sdmUoayl9KTtiPWs9PlByb21pc2UucmFjZShbay50aGVuKG09Pk9iamVjdC5hc3NpZ24oe30se2tpbmQ6InN1Y2Nlc3MifSxtKSksZy5wcm9taXNlXSk7cmV0dXJue09mYjpiKGUucHJvbWlzZSksbTY6YihmLnByb21pc2UpfX07Cl8ubWJlPWZ1bmN0aW9uKGEsYil7dmFyIGMsZD1fLnRhZShWYWUoYiksKGM9YS5SWmEpPT1udWxsP3ZvaWQgMDpjLlFlYSksZT1uZXcgXy5NcSxmPW5ldyBfLk1xLGc9bmV3IF8uTXE7a2JlKGEsZCxiKS50aGVuKGg9PntoLmtpbmQ9PT0ic3VjY2VzcyI/KGUucmVzb2x2ZShoLnVybFBhcmFtcyksZi5yZXNvbHZlKGgub2JqZWN0cykpOmcucmVzb2x2ZShoKX0pO2E9aD0+UHJvbWlzZS5yYWNlKFtoLnRoZW4oaz0+T2JqZWN0LmFzc2lnbih7fSx7a2luZDoic3VjY2VzcyJ9LGspKSxnLnByb21pc2VdKTtyZXR1cm57eUdiOmpiZShkKSxPZmI6YShlLnByb21pc2UpLG02OmEoZi5wcm9taXNlKX19OwprYmU9YXN5bmMgZnVuY3Rpb24oYSxiLGMpe3ZhciBkPSgwLF8uTWYpKCksZT1kKCk7ZD1kKDEpO3RyeXtsZXQgY2MsbGU7dHJ5e3ZhciBmPWEuWmMsZz1uZXcgbmJlLGg9bmV3IG9iZSxrPW5ldyBwYmU7dmFyIG09Xy5TYihrLF8ubnosMyxiKTt2YXIgbj1uZXcgcWJlO3ZhciBwPV8uWmgobiwxLGYucGxhdGZvcm0pO3ZhciByPV8uWmgocCwyLGYuT2wpO3ZhciB4PV8uU2IobSxxYmUsNCxyKTt2YXIgej1fLlNiKGgscGJlLDEseCk7bGV0IFJjPW5ldyByYmU7aWYoYT09bnVsbD8wOmEub3liKXt2YXIgQj1uZXcgc2JlO3ZhciBIPV8uZmgoQiwxLGEub3liKTtfLlNiKFJjLHNiZSwxMSxIKX1zd2l0Y2goYy5raW5kKXtjYXNlICJwcm9jZXNzZWRJbWFnZUZpbGUiOmJyZWFrO2Nhc2UgImd6aXBwZWRSYXdGaWxlIjpjYXNlICJnemlwcGVkUGRmRmlsZSI6dmFyIEo9UmMsTj1KLnNldENvbnRlbnQsUT1uZXcgdGJlLFo9bmV3IHViZSxZPV8uWmgoWiwxLGMua2luZD09PSJnemlwcGVkUGRmRmlsZSI/CjE6MCkuc2V0RGF0YShjLmRhdGEpO3ZhciBkYT1fLlpoKFksMywzKTt2YXIgY2E9Xy51aChRLDIsdWJlLGRhKTtpZihjLmtpbmQ9PT0iZ3ppcHBlZFBkZkZpbGUiKXt2YXIgaGE9Xy5maChjYSw0LGMuZmlsZU5hbWUpO18uWmgoaGEsMywxKX12YXIga2E9Ti5jYWxsKEosY2EpLHRhPW5ldyB2YmU7dmFyIHlhPV8uZmgodGEsMixjLmZpbGVOYW1lKTtfLlNiKGthLHZiZSwxMix5YSk7YnJlYWs7Y2FzZSAidXJsIjpOPVJjO0o9Ti5zZXRDb250ZW50O3ZhciBYYT1uZXcgdGJlO3ZhciBFYT1fLmZoKFhhLDEsYy51cmwpO0ouY2FsbChOLEVhKTticmVhaztjYXNlICJnemlwcGVkRHJpdmVGaWxlIjp2YXIgVmE9bmV3IHZiZTt2YXIgZmI9Xy5maChWYSwyLGMuZmlsZU5hbWUpO3ZhciBzYj1uZXcgd2JlO3ZhciB2Yj1fLmZoKHNiLDEsYy5GbmIpO3ZhciBGYj1fLlNiKGZiLHdiZSw2LHZiKTtfLlNiKFJjLHZiZSwxMixGYik7YnJlYWs7ZGVmYXVsdDpfLmViKGMsdm9pZCAwKX12YXIgSWI9Xy5TYih6LApyYmUsNCxSYyk7aWYoYy5raW5kPT09InByb2Nlc3NlZEltYWdlRmlsZSIpe2xldCBaZT1fLnhiZShuZXcgXy55YmUsXy56YmUobmV3IF8uQWJlLGMuZGF0YSkpO2MubWltZVR5cGUhPT0iaW1hZ2UvaGVpYyImJmMubWltZVR5cGUhPT0iaW1hZ2UvaGVpZiJ8fF8uQmJlKFplKTtfLlNiKEliLF8ueWJlLDMsWmUpfXZhciBKYj1fLlNiKGcsb2JlLDEsSWIpO3ZhciBzYz1fLiRoKEpiLDUsYT09bnVsbD92b2lkIDA6YS5DQmMpO2lmKGYuel8pe3ZhciBUYj1uZXcgQ2JlO3ZhciBvYz1fLmZoKFRiLDQsZi56Xyk7Xy5TYihzYyxDYmUsMyxvYyl9bGU9cGVyZm9ybWFuY2Uubm93KCk7bGV0IE5lO2NjPWQoYXdhaXQgZShpYmUoYS5hdXRoLHNjLHt3SjooTmU9YS5SWmEpPT1udWxsP3ZvaWQgMDpOZS53SixrZWVwYWxpdmU6YS5rZWVwYWxpdmV9KSkpfWNhdGNoKFJjKXtyZXR1cm4gZCgpLHtraW5kOiJlcnJvciIsZTpSY319aWYoY2MuT3IoKSl7dmFyIG1jPV8uemUoY2MsRGJlLDEpO3ZhciBxZD0KXy5PaihtYywxKTtyZXR1cm57a2luZDoiZXJyb3IiLGU6bmV3IEViZShxZCl9fWxldCB1YyxRZDsodWM9YS5aYy5WX2IpPT1udWxsfHwoUWQ9dWMuUTliKT09bnVsbHx8UWQuY2FsbCh1YyxwZXJmb3JtYW5jZS5ub3coKS1sZSk7bGV0IG1lLHRmPShtZT1fLnEoY2MsRmJlLDIpKT09bnVsbD92b2lkIDA6Xy5xKG1lLEdiZSw3KSxHZixjZDt2YXIgYWQ9KGNkPV8ucSh0ZixfLnNhZSw2KSkhPW51bGw/Y2Q6bmV3IF8uc2FlLFljPV8udCh0ZiwyKTtyZXR1cm57a2luZDoic3VjY2VzcyIsdXJsUGFyYW1zOntQc2E6amJlKF8udGFlKGIuY2xvbmUoKSxhZCkpLHdKOlljfSxvYmplY3RzOnttZWRpYVR5cGU6KEdmPV8ucShjYyxGYmUsMikpPT1udWxsP3ZvaWQgMDpfLmNpKEdmLDgpfX19ZmluYWxseXtlKCl9fTtqYmU9ZnVuY3Rpb24oYSl7cmV0dXJuIF8uT2EoKDAsXy52YWUpKGEpLDQpfTtfLmRiZT1mdW5jdGlvbihhLGIpe3JldHVybiBfLmZoKGEsMSxiKX07Cl8uYWJlPWZ1bmN0aW9uKGEsYil7cmV0dXJuIF8uZmgoYSw0LGIpfTtfLiRhZT1mdW5jdGlvbihhLGIpe3JldHVybiBfLmxrKGEsNSxiKX07Xy5UYWU9ZnVuY3Rpb24oYSxiKXtyZXR1cm4gXy5sayhhLDksYil9O18uU2FlPWZ1bmN0aW9uKGEsYil7cmV0dXJuIF8uWmgoYSwxMCxiKX07Xy5IYmU9ZnVuY3Rpb24oYSxiKXtyZXR1cm4gXy5maChhLDUsYil9O18uSWJlPWZ1bmN0aW9uKGEsYil7cmV0dXJuIF8uR2ooYSwxLF8uV0UsYil9O18uY2JlPWNsYXNzIGV4dGVuZHMgXy5se2NvbnN0cnVjdG9yKGEpe3N1cGVyKGEpfWdldElkKCl7cmV0dXJuIF8udCh0aGlzLDEpfU1jKGEpe3JldHVybiBfLmZoKHRoaXMsMSxhKX1ZZygpe3JldHVybiBfLnBoKHRoaXMsMSl9fTtfLlphZT1mdW5jdGlvbihhLGIpe3JldHVybiBfLlNiKGEsXy5jYmUsOCxiKX07Xy5lYmU9Y2xhc3MgZXh0ZW5kcyBfLmx7Y29uc3RydWN0b3IoYSl7c3VwZXIoYSl9fTsKXy5iYmU9ZnVuY3Rpb24oYSxiKXtyZXR1cm4gXy5TYihhLF8uZWJlLDIsYil9O0diZT1jbGFzcyBleHRlbmRzIF8ubHtjb25zdHJ1Y3RvcihhKXtzdXBlcihhKX19O0piZT1bMCxfLkUsLTIsMixfLkltY107d2JlPWNsYXNzIGV4dGVuZHMgXy5se2NvbnN0cnVjdG9yKGEpe3N1cGVyKGEpfX07dmFyIHZiZT1jbGFzcyBleHRlbmRzIF8ubHtjb25zdHJ1Y3RvcihhKXtzdXBlcihhKX1nZXRGaWxlTmFtZSgpe3JldHVybiBfLnQodGhpcywyKX19O3ZhciBLYmU9WzAsXy5FLC0xLDMsWzAsXy5FLC0xXV07dmFyIE1hZT17Z2V0KCl7cmV0dXJuIHR5cGVvZiB3aW5kb3chPT0idW5kZWZpbmVkIj93aW5kb3cubG9jYXRpb24uaG9zdG5hbWU6IiJ9fTt2YXIgTGJlO18uTWJlPWZ1bmN0aW9uKCl7dmFyIGE9bmV3IExiZTthPV8uWmgoYSwxLDMpO3JldHVybiBfLlpoKGEsMiwzOCl9O0xiZT1jbGFzcyBleHRlbmRzIF8ubHtjb25zdHJ1Y3RvcihhKXtzdXBlcihhKX1KYygpe3JldHVybiBfLk9qKHRoaXMsMil9fTtfLk5iZT1mdW5jdGlvbihhLGIpe3JldHVybiBfLlNiKGEsXy5ueiwzLGIpfTtfLk9iZT1mdW5jdGlvbihhLGIpe3JldHVybiBfLlNiKGEsTGJlLDQsYil9O18uUGJlPWNsYXNzIGV4dGVuZHMgXy5se2NvbnN0cnVjdG9yKGEpe3N1cGVyKGEpfX07dmFyIFFiZT1bMCwyLF8ub3osWzAsXy5HLC0xLDI1LF8uRixbMCxfLkUsLTFdXV07dmFyIFJiZT1bMCxRYmUsWzAsXy5HLDIsWzAsMSxbMCxfLkVdXV1dO3ZhciBTYmU9WzAsMyxfLkVdO3ZhciBUYmU9Y2xhc3MgZXh0ZW5kcyBfLmx7Y29uc3RydWN0b3IoYSl7c3VwZXIoYSl9fTt2YXIgVWJlPWNsYXNzIGV4dGVuZHMgXy5se2NvbnN0cnVjdG9yKGEpe3N1cGVyKGEpfWdldFdpZHRoKCl7cmV0dXJuIF8ueGUodGhpcywxKX1nZXRIZWlnaHQoKXtyZXR1cm4gXy54ZSh0aGlzLDIpfXNldEhlaWdodChhKXtyZXR1cm4gXy5tayh0aGlzLDIsYSl9Z2V0RmlsZU5hbWUoKXtyZXR1cm4gXy50KHRoaXMsNyl9fTt2YXIgVmJlPVswLF8udmwsLTEsMyxbMCxfLlVsXSxfLkZsXTtfLnpiZT1mdW5jdGlvbihhLGIpe3JldHVybiBfLlBEYShhLDEsYil9O18uQWJlPWNsYXNzIGV4dGVuZHMgXy5se2NvbnN0cnVjdG9yKGEpe3N1cGVyKGEpfX07dmFyIFdiZTtfLnhiZT1mdW5jdGlvbihhLGIpe3JldHVybiBfLkdqKGEsMSxXYmUsYil9O18uQmJlPWZ1bmN0aW9uKGEpe3ZhciBiPW5ldyBVYmU7dmFyIGM9bmV3IFRiZTtjPV8ueGsoYywxLDQpO2I9Xy5TYihiLFRiZSw2LGMpO18uU2IoYSxVYmUsMyxiKX07Xy55YmU9Y2xhc3MgZXh0ZW5kcyBfLmx7Y29uc3RydWN0b3IoYSl7c3VwZXIoYSl9SmooKXtyZXR1cm4gXy5TaCh0aGlzLF8uQWJlLDEsV2JlKX14dCgpe3JldHVybiBfLkZqKHRoaXMsXy5BYmUsMSxXYmUpfVl3KGEpe3JldHVybiBfLkpyKHRoaXMsXy5BYmUsMSxXYmUsYSl9fTtXYmU9WzEsMiw1XTt2YXIgWGJlPVswLFdiZSxfLklsLFswLF8uTGwsVmJlXSxfLklsLFswLF8uRmxdLFZiZSxfLkYsXy54YWUsXy5JbCxbMCxfLkZsLC0xXV07Xy5ZYmU9Y2xhc3MgZXh0ZW5kcyBfLmx7Y29uc3RydWN0b3IoYSl7c3VwZXIoYSl9fTtfLlpiZT1jbGFzcyBleHRlbmRzIF8ubHtjb25zdHJ1Y3RvcihhKXtzdXBlcihhKX1JMSgpe3JldHVybiBfLnZqKHRoaXMsMyl9Z2V0Q29udGVudCgpe3JldHVybiBfLnEodGhpcyxfLlliZSwxMCl9c2V0Q29udGVudChhKXtyZXR1cm4gXy5TYih0aGlzLF8uWWJlLDEwLGEpfWtxKCl7cmV0dXJuIF8ua2oodGhpcyxfLlliZSwxMCl9fTt2YXIgJGJlPVswLDIsXy5KbCxfLkUsNSxbMCxfLkUsXy5GLFswLF8uRyxfLkpsLF8uR10sXy5HLF8uRV0sWzAsXy5FXSxLYmVdO18uYWNlPWZ1bmN0aW9uKGEsYil7cmV0dXJuIF8uU2IoYSxfLlBiZSwxLGIpfTtfLmJjZT1mdW5jdGlvbihhLGIpe3JldHVybiBfLlNiKGEsXy5aYmUsNCxiKX07Xy5jY2U9Y2xhc3MgZXh0ZW5kcyBfLmx7Y29uc3RydWN0b3IoYSl7c3VwZXIoYSl9SmooKXtyZXR1cm4gXy5xKHRoaXMsXy5aYmUsNCl9eHQoKXtyZXR1cm4gXy56ZSh0aGlzLF8uWmJlLDQpfVl3KGEpe3JldHVybiBfLkJqKHRoaXMsXy5aYmUsNCxhKX19O18uY2NlLnByb3RvdHlwZS5YYT0iellpWm9iIjt2YXIgZGNlO18uZWNlPWZ1bmN0aW9uKGEpe3ZhciBiPW5ldyBkY2U7cmV0dXJuIF8uU2IoYixfLmNjZSwxLGEpfTtkY2U9Y2xhc3MgZXh0ZW5kcyBfLmx7Y29uc3RydWN0b3IoYSl7c3VwZXIoYSl9fTtfLmZjZT1fLlliKFswLFswLFFiZSwxLFhiZSwkYmVdLFJiZSxTYmUsMSxfLkRdKTt2YXIgZ2NlPWNsYXNzIGV4dGVuZHMgXy5se2NvbnN0cnVjdG9yKGEpe3N1cGVyKGEpfX07dmFyIGhjZT1bMCxfLkddO3ZhciBpY2U9WzAsXy5FLC0zXTtfLmpjZT1jbGFzcyBleHRlbmRzIF8ubHtjb25zdHJ1Y3RvcihhKXtzdXBlcihhKX19O18uamNlLnByb3RvdHlwZS5YYT0iUFRsYk9iIjtfLmtjZT1jbGFzcyBleHRlbmRzIF8ubHtjb25zdHJ1Y3RvcihhKXtzdXBlcihhKX1nZXRFcnJvcigpe3JldHVybiBfLnEodGhpcyxnY2UsMSl9SXUoYSl7cmV0dXJuIF8uU2IodGhpcyxnY2UsMSxhKX1Pcigpe3JldHVybiBfLmtqKHRoaXMsZ2NlLDEpfX07Xy5sY2U9Xy5YYihfLmtjZSxbMCxoY2UsWzAsNixbMCxfLkUsLTEsMyxbMCxfLkUsLTJdXSxfLkMsaWNlXV0pO3ZhciBxYmU9Y2xhc3MgZXh0ZW5kcyBfLmx7Y29uc3RydWN0b3IoYSl7c3VwZXIoYSl9SmMoKXtyZXR1cm4gXy5Paih0aGlzLDIpfX07dmFyIHViZT1jbGFzcyBleHRlbmRzIF8ubHtjb25zdHJ1Y3RvcihhKXtzdXBlcihhKX1nZXREYXRhKCl7cmV0dXJuIF8udmoodGhpcywyKX1zZXREYXRhKGEpe3JldHVybiBfLndrKHRoaXMsMixhKX19O3ZhciB0YmU9Y2xhc3MgZXh0ZW5kcyBfLmx7Y29uc3RydWN0b3IoYSl7c3VwZXIoYSl9fTt2YXIgQ2JlPWNsYXNzIGV4dGVuZHMgXy5se2NvbnN0cnVjdG9yKGEpe3N1cGVyKGEpfX07dmFyIG1jZT1bMCwzLF8uRV07dmFyIHBiZT1jbGFzcyBleHRlbmRzIF8ubHtjb25zdHJ1Y3RvcihhKXtzdXBlcihhKX19O3ZhciBuY2U9WzAsMixfLm96LFswLF8uRywtMSwyNSxfLkYsWzAsXy5FLC0xXV1dO3ZhciBvY2U9WzAsbmNlLFswLF8uRywyLFswLDEsWzAsXy5FXV1dXTt2YXIgc2JlPWNsYXNzIGV4dGVuZHMgXy5se2NvbnN0cnVjdG9yKGEpe3N1cGVyKGEpfX07dmFyIHJiZT1jbGFzcyBleHRlbmRzIF8ubHtjb25zdHJ1Y3RvcihhKXtzdXBlcihhKX1JMSgpe3JldHVybiBfLnZqKHRoaXMsMyl9Z2V0Q29udGVudCgpe3JldHVybiBfLnEodGhpcyx0YmUsMTApfXNldENvbnRlbnQoYSl7cmV0dXJuIF8uU2IodGhpcyx0YmUsMTAsYSl9a3EoKXtyZXR1cm4gXy5raih0aGlzLHRiZSwxMCl9fTt2YXIgcGNlPVswLDIsXy5KbCxfLkUsNSxbMCxfLkUsXy5GLFswLF8uRyxfLkpsLF8uR10sXy5HLF8uRV0sWzAsXy5FXSxLYmVdO3ZhciBvYmU9Y2xhc3MgZXh0ZW5kcyBfLmx7Y29uc3RydWN0b3IoYSl7c3VwZXIoYSl9SmooKXtyZXR1cm4gXy5xKHRoaXMscmJlLDQpfXh0KCl7cmV0dXJuIF8uemUodGhpcyxyYmUsNCl9WXcoYSl7cmV0dXJuIF8uQmoodGhpcyxyYmUsNCxhKX19O29iZS5wcm90b3R5cGUuWGE9InQ4YlZLYyI7dmFyIG5iZT1jbGFzcyBleHRlbmRzIF8ubHtjb25zdHJ1Y3RvcihhKXtzdXBlcihhKX19O3ZhciBnYmU9Xy5ZYihbMCxbMCxuY2UsMSxYYmUscGNlXSxvY2UsbWNlLDEsXy5EXSk7dmFyIFBhZT1fLkZuKCgpPT4oe2JtcDoiaW1hZ2UvYm1wIixnaWY6ImltYWdlL2dpZiIsaGVpYzoiaW1hZ2UvaGVpYyIsaGVpZjoiaW1hZ2UvaGVpZiIsaWNvOiJpbWFnZS94LWljb24iLGpwZWc6ImltYWdlL2pwZWciLGpwZzoiaW1hZ2UvanBlZyIsbWQ6InRleHQvbWFya2Rvd24iLHBkZjoiYXBwbGljYXRpb24vcGRmIixwbmc6ImltYWdlL3BuZyIsdGlmOiJpbWFnZS90aWZmIix0aWZmOiJpbWFnZS90aWZmIix0eHQ6InRleHQvcGxhaW4iLHdlYnA6ImltYWdlL3dlYnAifSkpO3ZhciBEYmU9Y2xhc3MgZXh0ZW5kcyBfLmx7Y29uc3RydWN0b3IoYSl7c3VwZXIoYSl9fTt2YXIgcWNlPVswLF8uR107dmFyIHJjZT1bMCxfLkUsLTNdO3ZhciBGYmU9Y2xhc3MgZXh0ZW5kcyBfLmx7Y29uc3RydWN0b3IoYSl7c3VwZXIoYSl9fTtGYmUucHJvdG90eXBlLlhhPSJPSXlTVmIiO3ZhciBoYmU9Xy5YYihjbGFzcyBleHRlbmRzIF8ubHtjb25zdHJ1Y3RvcihhKXtzdXBlcihhKX1nZXRFcnJvcigpe3JldHVybiBfLnEodGhpcyxEYmUsMSl9SXUoYSl7cmV0dXJuIF8uU2IodGhpcyxEYmUsMSxhKX1Pcigpe3JldHVybiBfLmtqKHRoaXMsRGJlLDEpfX0sWzAscWNlLFswLDYsSmJlLF8uQyxyY2VdXSk7dmFyIFdhZT1fLk5hZSgpO3ZhciBFYmU9Y2xhc3MgZXh0ZW5kcyBFcnJvcntjb25zdHJ1Y3RvcihhKXtzdXBlcihgT2JqZWN0c0ludGVyYWN0aW9uRXJyb3I6ICR7YX1gKTt0aGlzLkNvYj1hfX07Cn1jYXRjaChlKXtfLl9EdW1wRXhjZXB0aW9uKGUpfQp0cnl7Cl8uc2NlPSEhKF8uT2lbNTZdPj4yNyYxKTtfLnRjZT0hIShfLk9pWzU2XT4+MjgmMSk7Xy51Y2U9ISEoXy5PaVs1Nl0+PjI5JjEpO18udmNlPSEhKF8uT2lbNTddJjEpO18ud2NlPSEhKF8uT2lbNTddJjIpO18ueGNlPSEhKF8uT2lbNTddJjQpO18ueWNlPSEhKF8uT2lbNTddJjgpO18uemNlPSEhKF8uT2lbNTddJjE2KTsKfWNhdGNoKGUpe18uX0R1bXBFeGNlcHRpb24oZSl9CnRyeXsKXy5BY2U9YT0+YS5yZXBsYWNlKC9bXHNceGEwXSsvZywiICIpLnJlcGxhY2UoL15ccysvZywiIikudG9Mb2NhbGVMb3dlckNhc2UoKTsKfWNhdGNoKGUpe18uX0R1bXBFeGNlcHRpb24oZSl9CnRyeXsKdmFyIENjZSxCY2U7Xy5EY2U9ZnVuY3Rpb24oYSl7cmV0dXJuIF8uY20oXy5tYShhLnJlcGxhY2UoQmNlLGZ1bmN0aW9uKGIsYyl7cmV0dXJuIENjZS50ZXN0KGMpPyIiOiIgIn0pLnJlcGxhY2UoL1tcdFxuIF0rL2csIiAiKSkpfTtDY2U9L14oPzphYmJyfGFjcm9ueW18YWRkcmVzc3xifGVtfGl8c21hbGx8c3Ryb25nfHN1W2JwXXx1KSQvaTtCY2U9LzxbIVwvXT8oW2EtejAtOV0rKShbXC8gXVtePl0qKT8+L2dpOwp9Y2F0Y2goZSl7Xy5fRHVtcEV4Y2VwdGlvbihlKX0KdHJ5ewpfLkVjZT1mdW5jdGlvbihhKXtyZXR1cm4gYS5vYVswXXx8IiJ9O18uWEo9ZnVuY3Rpb24oYSl7cmV0dXJuIF8uRGNlKF8uRWNlKGEpKX07Xy5ZSj1mdW5jdGlvbihhLGIsYyl7cmV0dXJuKGEub2FbM118fHt9KVtiXXx8Y307Xy5GY2U9ZnVuY3Rpb24oYSl7cmV0dXJuIG5ldyBNYXAoT2JqZWN0LmVudHJpZXMoXy5ZSihhLCJ6cCIse30pKSl9O18uR2NlPWNsYXNze2NvbnN0cnVjdG9yKGEpe3RoaXMub2E9YX1nZXRUeXBlKCl7cmV0dXJuIHRoaXMub2FbMV18fDB9a2EoKXtyZXR1cm4gdGhpcy5vYVsyXXx8W119fTsKfWNhdGNoKGUpe18uX0R1bXBFeGNlcHRpb24oZSl9CnRyeXsKXy5IY2U9ZnVuY3Rpb24oYSl7dmFyIGI9bmV3IFVSTFNlYXJjaFBhcmFtcztmb3IobGV0IFtjLGRdb2YgYS5lbnRyaWVzKCkpYi5hcHBlbmQoYyxkKTtyZXR1cm4gYi50b1N0cmluZygpfTtfLkljZT1mdW5jdGlvbihhLGIpe2Euc2V0KCJvcGkiLGIpO2E9Ii9nZW5fMjA0PyIrXy5IY2UoYSk7KGI9d2luZG93Lm5hdmlnYXRvcikmJmIuc2VuZEJlYWNvbj9iLnNlbmRCZWFjb24oYSwiIik6KGI9bmV3IEltYWdlLGIuc3JjPWEsZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChiKSl9O18uSmNlPWZ1bmN0aW9uKGEpe3JldHVybiBfLllKKGEsInppIiwiIil9O18uS2NlPWZ1bmN0aW9uKGEpe3JldHVybiBfLllKKGEsInpzIiwiIil9O18uTWNlPWZ1bmN0aW9uKGEpe3ZhciBiPW5ldyBfLkxjZTtiLndhPV8uRWNlKGEpO2IuQWE9YS5nZXRUeXBlKCk7Yi5rYT1BcnJheS5mcm9tKGEua2EoKSk7Yi5vYT1fLldjKGEub2FbM10pfHx7fTtyZXR1cm4gYn07Cl8uTmNlPWZ1bmN0aW9uKGEsLi4uYil7YS5rYS5wdXNoKC4uLmIpO3JldHVybiBhfTtfLkxjZT1jbGFzc3tjb25zdHJ1Y3Rvcigpe3RoaXMud2E9IiI7dGhpcy5BYT1udWxsO3RoaXMua2E9W107dGhpcy5vYT17fX1CYyhhLGIsYz0iIixkPSExKXtpZighYyYmZClyZXR1cm4gdGhpcy53YT1iP18uYm0oYSk6YSx0aGlzO2Q9Yj9fLmJtKGMpOmM7YT1hLnNsaWNlKGMubGVuZ3RoKTtiPWI/Xy5ibShhKTphO3RoaXMud2E9ZCsoYj9gPGI+JHtifTwvYj5gOiIiKTtyZXR1cm4gdGhpc31BYyhhKXt0aGlzLkFhPWE7cmV0dXJuIHRoaXN9YnVpbGQoKXt2YXIgYT17fTthWzBdPXRoaXMud2E7dGhpcy5BYSE9PW51bGwmJihhWzFdPXRoaXMuQWEpO3RoaXMua2EmJihhWzJdPUFycmF5LmZyb20obmV3IFNldCh0aGlzLmthKSkpO3RoaXMub2EmJihhWzNdPXRoaXMub2EpO3JldHVybiBuZXcgXy5HY2UoYSl9fTsKfWNhdGNoKGUpe18uX0R1bXBFeGNlcHRpb24oZSl9CnRyeXsKXy5PY2U9Y2xhc3MgZXh0ZW5kcyBfLmx7Y29uc3RydWN0b3IoYSl7c3VwZXIoYSl9Z2V0RGF0YSgpe3JldHVybiBfLnZqKHRoaXMsNCl9c2V0RGF0YShhKXtyZXR1cm4gXy53ayh0aGlzLDQsYSl9Z2V0RmlsZU5hbWUoKXtyZXR1cm4gXy50KHRoaXMsNSl9Z3goKXtyZXR1cm4gXy50KHRoaXMsNil9bDUoKXtyZXR1cm4gXy5Maih0aGlzLDYpfX07Cn1jYXRjaChlKXtfLl9EdW1wRXhjZXB0aW9uKGUpfQp0cnl7Cl8uUGNlPWNsYXNzIGV4dGVuZHMgXy5se2NvbnN0cnVjdG9yKGEpe3N1cGVyKGEpfX07Xy5RY2U9Y2xhc3MgZXh0ZW5kcyBfLmx7Y29uc3RydWN0b3IoYSl7c3VwZXIoYSl9fTtfLlJjZT1bMCxfLkYsWzAsXy5veixfLkQsXy5HLF8uRV0sWzAsXy5FXV07Xy5TY2U9Xy5ZYihfLlJjZSk7Xy5Tbls1MjUwMDQ5NjhdPV8uUmNlOwp9Y2F0Y2goZSl7Xy5fRHVtcEV4Y2VwdGlvbihlKX0KdHJ5ewpfLlRjZT1mdW5jdGlvbihhKXt2YXIgYj1uZXcgXy5VYmQ7cmV0dXJuIF8uSGooYiwxLGEpfTtfLlVjZT1mdW5jdGlvbihhLGIpe3JldHVybiBfLnVoKGEsMSxfLlhFLGIpfTtfLlZjZT1mdW5jdGlvbihhKXtyZXR1cm4gXy5taChhLF8uWEUsMSxfLm9oKCkpfTtfLldjZT1fLlliKF8uVmJkKTsKfWNhdGNoKGUpe18uX0R1bXBFeGNlcHRpb24oZSl9CnRyeXsKXy51KCJ3V01oZyIpOwp2YXIgWWNlLFpjZSwkY2Usa2RlLGxkZSxuZGUsY2RlLG1kZSxxZGUsb2RlLHJkZSxzZGUsdGRlLHVkZSx2ZGUsd2RlLHBkZSxhZGU7Xy5YY2U9ZnVuY3Rpb24oYSl7cmV0dXJuIGE/Xy53YWUuaGFzKF8uV0ooYSkpOiExfTtZY2U9ZnVuY3Rpb24oYSxiLGMsZCl7Xy5JY2UobmV3IE1hcChbWyJhdHlwIiwiY3NpIl0sWyJydCIsYCR7YX0uJHtifWBdLFsicyIsIndlYiJdLFsic291cmNlIiwic2VhcmNoYm94Il0sWyJ2aXQiLGRdXSksYyl9O1pjZT1mdW5jdGlvbigpe3JldHVybntBdXRob3JpemF0aW9uOl8uSDVhKFtdLCEwKSwiWC1Hb29nLUFwaS1LZXkiOiJBSXphU3lCd1FjamdtWFVBc3c1cjRGWlhPNXQ4X0VaX2FVbV9UR0UiLCJYLUdvb2ctQXV0aFVzZXIiOl8ucG0oXy5CZCgiUXJ0eEsiKSwiMCIpLCJYLUdvb2ctRW5jb2RlLVJlc3BvbnNlLUlmLUV4ZWN1dGFibGUiOiJiYXNlNjQifX07CiRjZT1mdW5jdGlvbihhLGI9ITEpe3ZhciBjPVpjZSgpO3JldHVybnttZXRob2Q6IlBPU1QiLGJvZHk6YSxjcmVkZW50aWFsczoiaW5jbHVkZSIsa2VlcGFsaXZlOmIsaGVhZGVyczpPYmplY3QuYXNzaWduKHt9LGMseyJDb250ZW50LVR5cGUiOiJhcHBsaWNhdGlvbi94LXByb3RvYnVmIn0pfX07Xy5iZGU9YXN5bmMgZnVuY3Rpb24oYSxiLGMsZCxlLGY9ITEpe3ZhciBnPSgwLF8uTWYpKCksaD1nKCk7Zz1nKDEpO3RyeXtsZXQgaz0kY2UoKDAsXy5mY2UpKGEpLGYpLG09bmV3IFVSTChhZGUrIi92MS9jcnVwbG9hZCIpO2ImJm0uc2VhcmNoUGFyYW1zLmFwcGVuZCgiZ3Nlc3Npb25pZCIsYik7bGV0IG49cGVyZm9ybWFuY2Uubm93KCkscD1nKGF3YWl0IGgoZmV0Y2gobS50b1N0cmluZygpLGspKSkscj1wZXJmb3JtYW5jZS5ub3coKS1uLHg9Zyhhd2FpdCBoKHAudGV4dCgpKSksej0oMCxfLmxjZSkoXy5SYSh4KSk7KHo9PW51bGw/MDp6Lk9yKCkpfHxZY2UoYyxyLGQsZSk7cmV0dXJuIHp9ZmluYWxseXtoKCl9fTsKa2RlPWZ1bmN0aW9uKGEsYil7aWYoXy5XSihhKS5zdGFydHNXaXRoKCJhcHBsaWNhdGlvbi9wZGYiKSl2YXIgYz0xO2Vsc2UgaWYoXy5YY2UoYSkpYz0wO2Vsc2UgaWYoXy5zY2UpYz02O2Vsc2UgcmV0dXJuIG51bGw7dmFyIGQ7Yj0oZD1jZGUoYilbMF0pIT1udWxsP2Q6Xy5kZGUoYyk7aWYoXy54Y2Upc3dpdGNoKGMpe2Nhc2UgMTpyZXR1cm4gbmV3IF8uZWRlKGIsYSk7Y2FzZSAwOnJldHVybiBuZXcgZmRlKGIsYSk7ZGVmYXVsdDpyZXR1cm4gbmV3IGdkZShiLGEpfWVsc2Ugc3dpdGNoKGMpe2Nhc2UgMTpyZXR1cm4gbmV3IF8uaGRlKGIsYSk7Y2FzZSAwOnJldHVybiBuZXcgaWRlKGIsYSk7ZGVmYXVsdDpyZXR1cm4gYz1fLlNhZShiLDYpLGQ9Xy5XSihhKSxfLmZoKGMsMTMsZCksbmV3IGpkZShiLGEpfX07bGRlPWZ1bmN0aW9uKGEpe3JldHVybiBhIT09bnVsbCYmYSE9PXZvaWQgMH07bmRlPWZ1bmN0aW9uKGEpe3JldHVybiBjZGUoYSkubWFwKG1kZSkuZmlsdGVyKGxkZSl9OwpjZGU9ZnVuY3Rpb24oYSl7dmFyIGI9YS5nZXQoImNpbnB0cyIpO2lmKGIpdHJ5e3JldHVybiBvZGUocGRlKF8uUmEoYikpKS5tYXAoYz0+Xy5xKGMsXy5ueiwxKSkuZmlsdGVyKGxkZSl9Y2F0Y2goYyl7Xy5WZShFcnJvcigiJGtgIitjLm1lc3NhZ2UpLHtsZXZlbDoyfSl9aWYoYT1hLmdldCgidnNyaWQiKSl0cnl7cmV0dXJuWygwLF8udWFlKShfLlJhKGEpKV19Y2F0Y2goYyl7Xy5WZShFcnJvcigiYWxgIitjLm1lc3NhZ2UpLHtsZXZlbDoyfSl9cmV0dXJuW119O18uZGRlPWZ1bmN0aW9uKGEpe3ZhciBiPUJpZ0ludC5hc1VpbnROKDY0LEJpZ0ludChgMHgke18uWHkoKS5yZXBsYWNlKC8tL2csIiIpfWApKS50b1N0cmluZygpLGM9bmV3IFVpbnQ4QXJyYXkoMTYpO2NyeXB0by5nZXRSYW5kb21WYWx1ZXMoYyk7cmV0dXJuIF8uU2FlKF8ucmFlKF8ucWFlKF8ucGFlKF8ub2FlKF8ubmFlKG5ldyBfLm56LGIpLDEpLDEpLGMpLERhdGUubm93KCkqMUUzKSxhKX07Cm1kZT1mdW5jdGlvbihhKXtzd2l0Y2goXy5PaihhLDEwKSl7Y2FzZSAxOnJldHVybiBuZXcgXy5oZGUoYSk7Y2FzZSAwOnJldHVybiBuZXcgaWRlKGEpO2RlZmF1bHQ6cmV0dXJuIF8uVmUoRXJyb3IoImJsYCIrXy5PaihhLDEwKSkse2xldmVsOjJ9KSxudWxsfX07cWRlPWZ1bmN0aW9uKGEsYil7cmV0dXJuIF8uZmgoYSwyLGIpfTtvZGU9ZnVuY3Rpb24oYSl7cmV0dXJuIF8ubWgoYSxfLlBjZSwxLF8ub2goKSl9O3JkZT1mdW5jdGlvbihhLGIpe3JldHVybiBfLlNiKGEsXy5qY2UsMixiKX07c2RlPWNsYXNzIGV4dGVuZHMgXy5se2NvbnN0cnVjdG9yKGEpe3N1cGVyKGEpfX07dGRlPWZ1bmN0aW9uKGEsYil7cmV0dXJuIF8uU2IoYSxzZGUsNyxiKX07dWRlPWNsYXNzIGV4dGVuZHMgXy5se2NvbnN0cnVjdG9yKGEpe3N1cGVyKGEpfWdldERhdGEoKXtyZXR1cm4gXy52aih0aGlzLDIpfXNldERhdGEoYSl7cmV0dXJuIF8ud2sodGhpcywyLGEpfX07CnZkZT1mdW5jdGlvbihhKXt2YXIgYj1uZXcgdWRlO3JldHVybiBfLlpoKGIsMSxhKX07d2RlPWNsYXNzIGV4dGVuZHMgXy5se2NvbnN0cnVjdG9yKGEpe3N1cGVyKGEpfX07cGRlPV8uWGIoXy5RY2UsXy5SY2UpO2FkZT1fLk5hZSgpO3ZhciB4ZGU9Y2xhc3N7Y29uc3RydWN0b3IoYSxiKXt0aGlzLnN0YXR1cz0wO3RoaXMucmVxdWVzdElkPWE7YiYmKHRoaXMuZmlsZT1iLHRoaXMuc3RhdHVzPTEpfWdldFN0YXR1cygpe3JldHVybiB0aGlzLnN0YXR1c31nZXRGaWxlKCl7cmV0dXJuIHRoaXMuZmlsZX1hc3luYyBrYSgpe3JldHVybiB0aGlzLmZpbGV9YXN5bmMgdXBsb2FkKGEsYixjLGQsZSl7dmFyIGY9KDAsXy5NZikoKSxnPWYoKTtmPWYoMSk7dHJ5e2EmJl8udGFlKHRoaXMucmVxdWVzdElkLGEpO2xldCBwPWYoYXdhaXQgZyh0aGlzLmthKCkpKTt0cnl7bGV0IHI9Zihhd2FpdCBnKHAuYXJyYXlCdWZmZXIoKSkpLHg9Zihhd2FpdCBnKHRoaXMud2EocCxyLGMpKSk7dmFyIGg9Xy5lY2UoeCksaz1uZXcgd2RlO3ZhciBtPV8uZmgoayw0LGIpO3ZhciBuPV8uU2IoaCx3ZGUsMyxtKTtsZXQgej1mKGF3YWl0IGcoXy5iZGUobixkLHRoaXMub2EoKSxlLHRoaXMuTlQoKSkpKTt6Lk9yKCk/dGhpcy5zdGF0dXM9Mzp0aGlzLnN0YXR1cz0KMjtyZXR1cm4gen1jYXRjaChyKXt0aHJvdyBmKCksdGhpcy5zdGF0dXM9MyxyO319ZmluYWxseXtnKCl9fX07dmFyIGpkZT1jbGFzcyBleHRlbmRzIHhkZXtvYSgpe3JldHVybiJyY3UifU5UKCl7cmV0dXJuInJhdyJ9YXN5bmMgd2EoYSxiLGMpe3ZhciBkPSgwLF8uTWYpKCksZT1kKCk7ZD1kKDEpO3RyeXtsZXQgcD1uZXcgVWludDhBcnJheShkKGF3YWl0IGUoKG5ldyBSZXNwb25zZSgobmV3IEJsb2IoW2JdKSkuc3RyZWFtKCkucGlwZVRocm91Z2gobmV3IENvbXByZXNzaW9uU3RyZWFtKCJnemlwIikpKSkuYnl0ZXMoKSkpKTt2YXIgZj12ZGUoMCkuc2V0RGF0YShwKTt2YXIgZz1fLlpoKGYsMywzKTt2YXIgaD1uZXcgXy5ZYmU7dmFyIGs9Xy5maChoLDQsYS5uYW1lKTt2YXIgbT1fLnVoKGssMix1ZGUsZyk7dmFyIG49Xy5aaChtLDMsMCk7cmV0dXJuIF8uYmNlKF8uYWNlKG5ldyBfLmNjZSxfLk9iZShfLk5iZShuZXcgXy5QYmUsdGhpcy5yZXF1ZXN0SWQpLGMpKSwobmV3IF8uWmJlKS5zZXRDb250ZW50KG4pKX1maW5hbGx5e2UoKX19fTt2YXIgaWRlPWNsYXNzIGV4dGVuZHMgeGRle29hKCl7cmV0dXJuImljdSJ9TlQoKXtyZXR1cm4iaW1nIn1hc3luYyBrYSgpe3ZhciBhPSgwLF8uTWYpKCksYj1hKCk7YT1hKDEpO3RyeXtsZXQgYz1hKGF3YWl0IGIoc3VwZXIua2EoKSkpLGQ9YShhd2FpdCBiKF8uRmFlKGMpKSk7cmV0dXJuIGQua2luZCE9PSJmYWlsIj9kLmZpbGU6Y31maW5hbGx5e2IoKX19YXN5bmMgd2EoYSxiLGMpe2I9Xy54YmUobmV3IF8ueWJlLF8uemJlKG5ldyBfLkFiZSxuZXcgVWludDhBcnJheShiKSkpO2E9Xy5XSihhKTthIT09ImltYWdlL2hlaWMiJiZhIT09ImltYWdlL2hlaWYifHxfLkJiZShiKTtjPV8uYWNlKG5ldyBfLmNjZSxfLk9iZShfLk5iZShuZXcgXy5QYmUsdGhpcy5yZXF1ZXN0SWQpLGMpKTtyZXR1cm4gXy5TYihjLF8ueWJlLDMsYil9fTtfLnlkZT1jbGFzc3tjb25zdHJ1Y3RvcihhLGIpe3RoaXMuZmlsZT1iO3RoaXMuc3RhdHVzPTA7dGhpcy53YT1hO2ImJih0aGlzLnN0YXR1cz0xKX1nZXQgcmVxdWVzdElkKCl7cmV0dXJuIHRoaXMud2F9Z2V0U3RhdHVzKCl7cmV0dXJuIHRoaXMuc3RhdHVzfWdldEZpbGUoKXtyZXR1cm4gdGhpcy5maWxlfWFzeW5jIHVwbG9hZChhLGIsYyxkLGUpe3ZhciBmPSgwLF8uTWYpKCksZz1mKCk7Zj1mKDEpO3RyeXtsZXQgaD10aGlzLm9hKCksaz17YXV0aDp7YXBpS2V5OiJBSXphU3lCd1FjamdtWFVBc3c1cjRGWlhPNXQ4X0VaX2FVbV9UR0UiLHhFOiEwfSxrZWVwYWxpdmU6aC5raW5kPT09InVybCIsUlphOmE/e1FlYTphLHdKOmQhPW51bGw/ZDp2b2lkIDB9OnZvaWQgMCxaYzp7T2w6Yy5KYygpLHBsYXRmb3JtOl8uT2ooYywxKSx6XzpiLFZfYjp7UTliOnI9PntZY2UodGhpcy5rYSgpLHIsZSx0aGlzLk5UKCkpfX19fSxtO2gua2luZD09PSJ1cmwiPyhtPV8ubWJlKGssaCksdGhpcy53YT0KKDAsXy51YWUpKF8uUWEobS55R2IpKSk6bT1fLmxiZShrLGgpO2xldCBuPWYoYXdhaXQgZyhtLk9mYikpO2lmKG4ua2luZD09PSJlcnJvciIpdGhyb3cgdGhpcy5zdGF0dXM9MyxuLmUgaW5zdGFuY2VvZiBFcnJvcj9uLmU6RXJyb3IoU3RyaW5nKG4uZSkpO2xldCBwPWYoYXdhaXQgZyhtLm02KSk7aWYocC5raW5kPT09ImVycm9yIil0aHJvdyB0aGlzLnN0YXR1cz0zLHAuZSBpbnN0YW5jZW9mIEVycm9yP3AuZTpFcnJvcihTdHJpbmcocC5lKSk7dGhpcy53YT0oMCxfLnVhZSkoXy5RYShuLlBzYSkpO3RoaXMuc3RhdHVzPTI7cmV0dXJuIHJkZShuZXcgXy5rY2UsdGRlKG5ldyBfLmpjZSxxZGUobmV3IHNkZSxuLndKKSkpfWZpbmFsbHl7ZygpfX19O3ZhciBmZGU9Y2xhc3MgZXh0ZW5kcyBfLnlkZXtvYSgpe3JldHVybntraW5kOiJpbWFnZUZpbGUiLGZpbGU6dGhpcy5nZXRGaWxlKCl9fWthKCl7cmV0dXJuImljdSJ9TlQoKXtyZXR1cm4iaW1nIn19O18uZWRlPWNsYXNzIGV4dGVuZHMgXy55ZGV7b2EoKXtyZXR1cm57a2luZDoicGRmRmlsZSIsZmlsZTp0aGlzLmdldEZpbGUoKX19a2EoKXtyZXR1cm4icGN1In1OVCgpe3JldHVybiJwZGYifUFhKCl7dmFyIGE9bmV3IF8uWEUsYj10aGlzLmdldEZpbGUoKTtiJiZfLkliZShhLF8uSGJlKG5ldyBfLk9jZSxiLm5hbWUpKTtyZXR1cm4gYX19O3ZhciBnZGU9Y2xhc3MgZXh0ZW5kcyBfLnlkZXtvYSgpe3JldHVybntraW5kOiJyYXdGaWxlIixmaWxlOnRoaXMuZ2V0RmlsZSgpfX1rYSgpe3JldHVybiJyY3UifU5UKCl7cmV0dXJuInJhdyJ9fTtfLmhkZT1jbGFzcyBleHRlbmRzIHhkZXtvYSgpe3JldHVybiJwY3UifU5UKCl7cmV0dXJuInBkZiJ9YXN5bmMga2EoKXtfLlRhZSh0aGlzLnJlcXVlc3RJZCwxKTtyZXR1cm4gc3VwZXIua2EoKX1hc3luYyB3YShhLGIsYyl7dmFyIGQ9KDAsXy5NZikoKSxlPWQoKTtkPWQoMSk7dHJ5e2xldCBwPW5ldyBVaW50OEFycmF5KGQoYXdhaXQgZSgobmV3IFJlc3BvbnNlKChuZXcgQmxvYihbYl0pKS5zdHJlYW0oKS5waXBlVGhyb3VnaChuZXcgQ29tcHJlc3Npb25TdHJlYW0oImd6aXAiKSkpKS5ieXRlcygpKSkpO3ZhciBmPXZkZSgxKS5zZXREYXRhKHApO3ZhciBnPV8uWmgoZiwzLDMpO3ZhciBoPW5ldyBfLlliZTt2YXIgaz1fLmZoKGgsNCxhLm5hbWUpO3ZhciBtPV8udWgoaywyLHVkZSxnKTt2YXIgbj1fLlpoKG0sMywxKTtyZXR1cm4gXy5iY2UoXy5hY2UobmV3IF8uY2NlLF8uT2JlKF8uTmJlKG5ldyBfLlBiZSx0aGlzLnJlcXVlc3RJZCksYykpLChuZXcgXy5aYmUpLnNldENvbnRlbnQobikpfWZpbmFsbHl7ZSgpfX1BYSgpe3ZhciBhPQpuZXcgXy5YRTt0aGlzLmZpbGUmJl8uSWJlKGEsXy5IYmUobmV3IF8uT2NlLHRoaXMuZmlsZS5uYW1lKSk7cmV0dXJuIGF9fTt2YXIgemRlOwp6ZGU9ZnVuY3Rpb24oYSl7dmFyIGI9e21ldGhvZDoiR0VUIixjcmVkZW50aWFsczoiaW5jbHVkZSIsaGVhZGVyczpPYmplY3QuYXNzaWduKHt9LFpjZSgpKX0sYz1uZXcgVVJMKGFkZSsiL3YxL2dzZXNzaW9uaWQiKSxkPXBlcmZvcm1hbmNlLm5vdygpLGU9dm9pZCAwO2EuQWViPWZldGNoKGMudG9TdHJpbmcoKSxiKS50aGVuKGY9PmYuanNvbigpKS50aGVuKGY9Pnt2YXIgZz1mLnJvdXRpbmdJbmZvfHx7fTtlPXBlcmZvcm1hbmNlLm5vdygpLWQ7YS5pU2E9Zi5nd3NTZXNzaW9uSWQ7YS5XSWE9Zi5zZXNzaW9uSWQ7Zj1nLm11bHRpbW9kYWxVbmRlcnN0YW5kaW5nTHJvVG9rZW47dmFyIGg9Xy4kYWUoXy5hYmUobmV3IF8uc2FlLGcuY2VsbCksZy50YXNrKTtoPV8uZmgoaCw2LGcudXNlcik7Zz1fLmZoKGgsNyxnLmVudik7cmV0dXJuIF8uWmFlKGcsZj9fLmJiZSgobmV3IF8uY2JlKS5NYyhmLmlkKSxmLmJhY2tlbmQ/Xy5kYmUobmV3IF8uZWJlLGYuYmFja2VuZC5ibnNBZGRyZXNzKS5UYygpOm51bGwpLlRjKCk6Cm51bGwpLlRjKCl9KS5jYXRjaCgoKT0+e2EuQWViPW51bGw7Xy5WZShFcnJvcigiZGwiKSx7bGV2ZWw6Mn0pfSkuZmluYWxseSgoKT0+eygwLF8uR2JhKShlKSYmWWNlKCJzY3RyIixlLGEudFUsYS5OVCgpfHwicGRmIil9KX07Cl8uQmRlPWNsYXNzIGV4dGVuZHMgXy5FaXtzdGF0aWMgUWEoKXtyZXR1cm57bW9kZWw6e3FUYTpfLlkkZH0sc2VydmljZTp7U2I6Xy5wdn19fWNvbnN0cnVjdG9yKGEpe3N1cGVyKCk7dGhpcy5Yej1bXTt0aGlzLkFlYj1udWxsO3RoaXMuV0lhPXRoaXMuaVNhPSIiO3RoaXMuU2I9YS5zZXJ2aWNlLlNiO3RoaXMuUjA9Xy5NYmUoKTt0aGlzLlh6PW5kZSh0aGlzLmMyKCkpO3RoaXMubGlzdGVuKCJyUFRDYiIsKCk9Pnt0aGlzLkFlYnx8emRlKHRoaXMpfSk7dGhpcy50VT1hLm1vZGVsLnFUYS5WQigpLkthKCk7dGhpcy5laWQ9Xy50KGEubW9kZWwucVRhLlZCKCksMTEpO18uWCRkKGEubW9kZWwucVRhLCgpPT57dGhpcy50VT1hLm1vZGVsLnFUYS5WQigpLkthKCk7dGhpcy5laWQ9Xy50KGEubW9kZWwucVRhLlZCKCksMTEpfSl9YXN5bmMgQmxhKGEpe3ZhciBiPSgwLF8uTWYpKCksYz1iKCk7Yj1iKDEpO3RyeXtsZXQgZD1rZGUoYSx0aGlzLmMyKCkpO2lmKGQpeyFfLkFkZSYmdGhpcy52aWEoKSYmCih0aGlzLlh6PVtdKTt0aGlzLlh6LnB1c2goZCk7dGhpcy5ub3RpZnkoIk1HejRiZSIsYSk7dHJ5e2xldCBlPWIoYXdhaXQgYyh0aGlzLkFlYikpLGY9Yihhd2FpdCBjKGQudXBsb2FkKGV8fG51bGwsdGhpcy5laWQsdGhpcy5SMCx0aGlzLldJYSx0aGlzLnRVKSkpO2lmKGY9PW51bGw/MDpmLk9yKCkpdGhpcy5yZW1vdmVGaWxlKGEpO2Vsc2V7aWYoIXRoaXMuaVNhfHwhdGhpcy5XSWEpe2xldCBnLGg9KGc9Xy5xKGYsXy5qY2UsMikpPT1udWxsP3ZvaWQgMDpfLnEoZyxzZGUsNyk7dGhpcy5pU2E9KGg9PW51bGw/dm9pZCAwOl8udChoLDIpKXx8IiI7dGhpcy5XSWE9KGg9PW51bGw/dm9pZCAwOl8udChoLDEpKXx8IiJ9dGhpcy5Yei5pbmNsdWRlcyhkKSYmKHRoaXMubm90aWZ5KCJqTmh6bmYiLGQuZ2V0RmlsZSgpKSx0aGlzLm5vdGlmeSgiRGtwTTBiIikpfX1jYXRjaChlKXtiKCksdGhpcy5yZW1vdmVGaWxlKGEpLF8uVmUoRXJyb3IoImNsIikse2xldmVsOjJ9KX19ZWxzZSB0aGlzLm5vdGlmeSgiVTFjOGxjIiwKe2ZpbGU6YSxDb2I6NH0pfWZpbmFsbHl7YygpfX1uVSgpe3JldHVybiB0aGlzLlh6LmZpbHRlcihhPT5hLmdldFN0YXR1cygpIT09MykubGVuZ3RofVV4Yygpe3JldHVybiB0aGlzLlh6LnNvbWUoYT0+YS5nZXRTdGF0dXMoKSE9PTMmJl8uWGNlKGEuZ2V0RmlsZSgpKSl9YnljKCl7cmV0dXJuIHRoaXMuWHouc29tZShhPT5hLmdldFN0YXR1cygpIT09MyYmIV8uWGNlKGEuZ2V0RmlsZSgpKSl9dmlhKCl7cmV0dXJuIHRoaXMuWHoubGVuZ3RoPjB9cmVtb3ZlRmlsZShhKXtmb3IobGV0IGI9MDtiPHRoaXMuWHoubGVuZ3RoO2IrKylpZih0aGlzLlh6W2JdLmdldEZpbGUoKT09PWEpe3RoaXMuWHouc3BsaWNlKGIsMSk7YnJlYWt9dGhpcy5ub3RpZnkoIlRzSUZwYyIsYSl9aFphKCl7dmFyIGE9Wy4uLnRoaXMuWHpdO3RoaXMuWHo9W107Zm9yKGxldCBiIG9mIGEpdGhpcy5ub3RpZnkoIlRzSUZwYyIsYi5nZXRGaWxlKCkpfU5UKCl7dmFyIGE7cmV0dXJuKChhPXRoaXMuWHpbMF0pPT1udWxsPwp2b2lkIDA6YS5OVCgpKXx8IiJ9YzIoKXtyZXR1cm4gbmV3IFVSTFNlYXJjaFBhcmFtcyhfLm92KHRoaXMuU2IpKX1yZXNldCgpe3RoaXMuaFphKCl9fTtfLkFkZT1fLnZjZTtfLlZyKF8uRlphLF8uQmRlKTsKXy52KCk7Cn1jYXRjaChlKXtfLl9EdW1wRXhjZXB0aW9uKGUpfQp0cnl7Cl8uQ2RlPV8ua2MoIlFseXJ5YiIpOwp9Y2F0Y2goZSl7Xy5fRHVtcEV4Y2VwdGlvbihlKX0KdHJ5ewpfLnUoIlFseXJ5YiIpOwpfLkRkZT1jbGFzcyBleHRlbmRzIF8uRWl7Y29uc3RydWN0b3IoKXtzdXBlcigpO3RoaXMua2E9bmV3IE1hcH1iSChhLGIpe3ZhciBjPXRoaXMua2EuZ2V0KGEpfHxuZXcgU2V0O2MuYWRkKGIpO3RoaXMua2Euc2V0KGEsYyl9UHgoYSxiPXt9KXtpZih0aGlzLmthLmdldChhKSlmb3IobGV0IGMgb2YgdGhpcy5rYS5nZXQoYSkpYyhiKX19O18uVnIoXy5DZGUsXy5EZGUpOwpfLnYoKTsKfWNhdGNoKGUpe18uX0R1bXBFeGNlcHRpb24oZSl9CnRyeXsKXy5FZGU9ZnVuY3Rpb24oYSxiKXthLndtPWI7cmV0dXJuIGF9O18uRmRlPWZ1bmN0aW9uKGEpe2EuZ2ViPSExO3JldHVybiBhfTtfLkdkZT1mdW5jdGlvbihhLGIpe2EuQXVhPWI7cmV0dXJuIGF9OwpfLkhkZT1jbGFzc3tjb25zdHJ1Y3Rvcigpe3RoaXMucXVlcnk9IiI7dGhpcy5wYXJhbWV0ZXJzPW5ldyBNYXB9c2V0UXVlcnkoYSl7dGhpcy5xdWVyeT1hO3JldHVybiB0aGlzfXNldFBhcmFtZXRlcnMoYSl7dGhpcy5wYXJhbWV0ZXJzPWE7cmV0dXJuIHRoaXN9dUwoYSl7dGhpcy5zTD1hO3JldHVybiB0aGlzfWJ1aWxkKCl7aWYodGhpcy53bSl7dGhpcy5xdWVyeT10aGlzLnF1ZXJ5P3RoaXMucXVlcnk6Xy5YSih0aGlzLndtKTt0aGlzLnBhcmFtZXRlcnM9dGhpcy5wYXJhbWV0ZXJzLnNpemUhPT0wP3RoaXMucGFyYW1ldGVyczpfLkZjZSh0aGlzLndtKTtsZXQgZjt0aGlzLmdlYj0oZj10aGlzLmdlYikhPW51bGw/Zjp0aGlzLndtLmthKCkuaW5jbHVkZXMoMTQzKX12YXIgYSxiLGMsZCxlO3JldHVybntxdWVyeTp0aGlzLnF1ZXJ5LHBhcmFtZXRlcnM6dGhpcy5wYXJhbWV0ZXJzLGdlYjooYT10aGlzLmdlYikhPW51bGw/YTohMSx3bTooYj10aGlzLndtKSE9bnVsbD9iOm51bGwsc0w6dGhpcy5zTCwKQXVhOihjPXRoaXMuQXVhKSE9bnVsbD9jOm51bGwsYUNiOihkPXRoaXMuYUNiKSE9bnVsbD9kOm51bGwscTNhOihlPXRoaXMucTNhKSE9bnVsbD9lOiExfX19Owp9Y2F0Y2goZSl7Xy5fRHVtcEV4Y2VwdGlvbihlKX0KdHJ5ewp2YXIgSWRlO18uSmRlPWZ1bmN0aW9uKGEpe3ZhciBiPWM9PntjLnBlcnNpc3RlZCYmYSgpfTtJZGUucHVzaChiKTt3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigicGFnZXNob3ciLGIpfTtfLktkZT1mdW5jdGlvbihhLGIsYz0hMSxkPW51bGwpe2lmKGMmJmQhPT1udWxsKXJldHVybiExO2lmKGE9PT1iKXJldHVybiEwO2I9Xy5NaSgiZ29vZ2xlLnBtYy5zYl93aXouc2NxIil8fCIiO3JldHVybiBiIT09IiImJmE9PT1ifTtfLkxkZT1mdW5jdGlvbihhLGIpe2ZvcihsZXQgYyBvZiBiKWEuaW5jbHVkZXMoYyl8fGEucHVzaChjKX07Xy5NZGU9ZnVuY3Rpb24oYSl7cmV0dXJuIF8uWUooYSwiemgiLF8uRWNlKGEpKX07SWRlPVtdO18uWko9Y2xhc3N7Y29uc3RydWN0b3IoKXtPYmplY3QuZnJlZXplJiZPYmplY3QuZnJlZXplKHRoaXMpfX07Xy5OZGU9bmV3IF8uWko7Xy5PZGU9bmV3IF8uWko7Xy5QZGU9bmV3IF8uWko7Xy5RZGU9bmV3IF8uWko7Xy5SZGU9bmV3IF8uWko7Xy5TZGU9bmV3IF8uWko7Xy5UZGU9bmV3IF8uWko7Xy5VZGU9bmV3IF8uWko7Xy5WZGU9bmV3IF8uWko7Xy5XZGU9bmV3IF8uWko7Xy5YZGU9bmV3IF8uWko7Xy5ZZGU9bmV3IF8uWko7bmV3IF8uWko7Xy5aZGU9bmV3IF8uWko7bmV3IF8uWko7Xy4kZGU9bmV3IF8uWko7bmV3IF8uWko7Xy4kSj1mdW5jdGlvbihhLC4uLmIpe18uTGRlKGEuUmEsYik7cmV0dXJuIGF9O18uYWVlPWZ1bmN0aW9uKGEsLi4uYil7Xy5MZGUoYS5rYSxiKTtyZXR1cm4gYX07Xy5hSz1mdW5jdGlvbihhLC4uLmIpe18uTGRlKGEuQWEsYik7cmV0dXJuIGF9O18uYmVlPWZ1bmN0aW9uKGEsYixjKXtpZihhLkthLmhhcyhiKSlyZXR1cm4gYTthLkthLnNldChiLGMpO3JldHVybiBhfTsKXy5jZWU9Y2xhc3N7Y29uc3RydWN0b3IoKXt0aGlzLlBhPVtdO3RoaXMuUmE9W107dGhpcy5rYT1bXTt0aGlzLm9hPVtdO3RoaXMuQWE9W107dGhpcy5HYT1bXTt0aGlzLndhPVtdO3RoaXMuU2E9W107dGhpcy5JYT1uZXcgTWFwO3RoaXMuS2E9bmV3IE1hcDt0aGlzLk5hPVtdO3RoaXMuT2E9W119Z2V0QWxsKCl7cmV0dXJuWy4uLnRoaXMuUGEubWFwKCh7TVFhOmF9KT0+YSksLi4udGhpcy5SYSwuLi50aGlzLmthLC4uLnRoaXMub2EsLi4udGhpcy5BYSwuLi50aGlzLkdhLC4uLnRoaXMud2EsLi4udGhpcy5TYSwuLi50aGlzLklhLnZhbHVlcygpLC4uLnRoaXMuS2EudmFsdWVzKCksLi4udGhpcy5OYSwuLi50aGlzLk9hXX1lRigpe3JldHVybiB0aGlzLlBhfUJhKGEpe3JldHVybiB0aGlzLklhLmdldChhKXx8bnVsbH1FYShhKXtyZXR1cm4gdGhpcy5LYS5nZXQoYSl8fG51bGx9fTsKfWNhdGNoKGUpe18uX0R1bXBFeGNlcHRpb24oZSl9CnRyeXsKdmFyIGRlZT1bMCxfLk5sLC0yLF8uRSxfLk5sLC0yXTtfLmVlZT1bMCxfLkMsXy5ObCxfLk9sLF8uQyxfLkcsXy5DLC0xLF8uRixbMCxfLkcsXy5FLFswLF8uaWwsXy5FLF8uaWwsXy5ELF8uRSwtMSwxLF8uaWwsXy5FLC0xXSxfLkUsLTEsXy5ObF0sXy5HLFswLF8uWWssXy5ObCwtM10sWzAsXy5HLC0xLF8uRSxfLkQsLTEsXy5DLC0xXSxfLk5sLF8uRSxfLkMsWzAsXy5FLC0yXSxfLkUsLTEsXy5ObCwtMSxbMCxfLkVdLF8uRSw1LF8uTmwsXy5HLFswLF8uQywtNF0sWzAsXy5ELF8uQywtNCxfLmptXV07dmFyIGZlZT1bMCxfLk5sLC0yLF8uRyxfLk5sLF8uUWwsXy5ObCxfLkUsXy5ObCwtMSxfLkUsXy5HLC0xLF8uRixfLmVlZV07dmFyIGdlZT1bMCxfLk5sLGZlZSxfLk5sLF8uRyxfLk5sLC0yLFswLF8uRSwtMV0sXy5GLFswLF8uTmwsLTEsXy5FXSxfLkYsXy5lZWVdO18uaGVlPWNsYXNzIGV4dGVuZHMgXy5se2NvbnN0cnVjdG9yKGEpe3N1cGVyKGEpfXVMKGEpe3JldHVybiBfLlpoKHRoaXMsMjMsYSl9YlEoYSl7cmV0dXJuIF8uZmgodGhpcyw0LGEpfWVHYSgpe3JldHVybiBfLnQodGhpcywyNil9Z2V0Q29udGV4dCgpe3JldHVybiBfLk9qKHRoaXMsMzkpfX07Xy5pZWU9WzAsXy5HLF8uRSxbMCxfLkUsXy5ELF8uQ10sXy5FLF8uZWVlLF8uRixfLmVlZSxfLkQsXy5ObCwtMTIsXy5FLF8uTmwsXy5HLF8uTmwsLTEsXy5FLFswLF8uRCxfLk5sLC00XSxbMCxfLkQsLTJdLF8uRywtMSxfLlNsLF8uTmwsXy5FLF8uTmwsLTMsXy5ELF8uRyxfLkYsXy5lZWUsXy5FLC0xLF8uRCxfLk5sLC0xMCxbMCxfLkMsZGVlLF8uRCxfLkMsXy5GLFswLF8uRCwtMixfLk5sLC0xXSxfLkMsLTEzLF8uRyxbMCxfLkMsLTYsXy5pbF0sLTEsXy5xbCxfLkQsXy5DXSxfLk5sLF8uRixbMCxfLk9sLF8uTmwsXy5DLF8uTmwsXy5HLF8uQ10sXy5ObCxbMCxfLk5sLC0xXSxfLkYsWzAsXy5HLF8uRSxfLkMsLTFdLDEsXy5ObCwtMixbMCxfLkMsLTEsXy5pbCwtMixfLkMsLTFdLF8uTmwsLTEsWzAsXy5ObCwtNF0sXy5GLFswLF8uRSxfLkYsXy5lZWVdLF8uTmwsLTEsXy5FLFswLF8uTmwsMSxfLk5sLC0xXSxfLnBsLFswLF8uQywtNV0sWzAsXy5ELC0yXSxfLk5sLC0xLF8uRixbMCwKXy5ObCxfLk9sLF8uRV0sWzAsXy5ELC0yLF8uQyxfLkQsXy5DXSxbMCxbMCxfLkNdLC0xXSxfLnpsLF8uRixbMCxfLkMsLTJdLF8uTmwsWzAsXy5DXSxbMCxfLkQsLTEsXy5DLF8uRF0sXy5GLFswLF8uRCxfLmlsLF8uQ10sXy5ELF8uaWwsXy5GLFswLFsxXSxfLklsLFswLF8uRSxfLkQsXy5DLC0zLF8uRSwtMl0sXy5FXSxfLkYsWzAsXy5FLF8uQyxfLmlsLF8uRSwtMSxfLmlsLF8uRF0sXy5ELFswLF8uRixbMCxfLk5sLF8uT2wsXy5pbF0sXy5DXSxfLkdiKF8udWhhLF8uRWdhLF8uZmopLFswLF8uRCwtMV0sXy5HLC0xLF8uTmwsXy5UbCxfLkUsZGVlLC0xLF8uRixbMCxfLk5sLC0yXSxfLkYsZmVlLF8uRixnZWUsXy5FLF8uRCwtMSxfLkYsWzAsXy5ObCwtNF0sXy5GLGdlZSxfLk5sLF8uRCxbMCxfLkUsLTNdLF8uRSxfLkcsXy5ObCwtMSxfLkUsXy5ObCxfLkUsXy5ObCxfLkcsXy5GLFswLF8uT2wsXy5DLF8uTmxdLF8uRyxbMCxfLkQsXy5DLC0zLF8uVGwsXy51bCwtMV0sXy5ObCwtMSwKXy5EXTtfLmhlZS5wcm90b3R5cGUub2E9Xy4kYihfLmllZSk7Cn1jYXRjaChlKXtfLl9EdW1wRXhjZXB0aW9uKGUpfQp0cnl7Cl8uamVlPWZ1bmN0aW9uKGEsYil7cmV0dXJuIF8uemIoYSwzLGIsXy5oYil9O18ua2VlPWZ1bmN0aW9uKGEsYil7cmV0dXJuIF8uZmgoYSwyLGIpfTtfLmxlZT1mdW5jdGlvbihhLGIpe18uZmgoYSwzMyxiKX07Xy5tZWU9ZnVuY3Rpb24oYSxiKXtyZXR1cm4gXy5GayhhLDMxLGIpfTtfLm5lZT1mdW5jdGlvbihhLGIpe3JldHVybiBfLm9rKGEsOSxiKX07Xy5vZWU9ZnVuY3Rpb24oYSxiKXtyZXR1cm4gXy5vayhhLDEwLGIpfTtfLnBlZT1mdW5jdGlvbihhLGIpe3JldHVybiBfLm9rKGEsMTEsYil9O18ucWVlPWZ1bmN0aW9uKGEsYil7cmV0dXJuIF8ub2soYSwxNCxiKX07Cl8uYks9Y2xhc3MgZXh0ZW5kcyBfLmx7Y29uc3RydWN0b3IoYSl7c3VwZXIoYSl9Z2V0SW5kZXgoKXtyZXR1cm4gXy54ZSh0aGlzLDEsLTEpfWdldFR5cGUoKXtyZXR1cm4gXy5FZSh0aGlzLDIpfUFjKGEpe3JldHVybiBfLm9rKHRoaXMsMixhKX10ZSgpe3JldHVybiBfLlVoKHRoaXMsMil9clcoYSl7cmV0dXJuIF8ud2IodGhpcywzLF8uaWIsXy5vaChhKSl9TGYoKXtyZXR1cm4gXy5Paih0aGlzLDUpfVVvKCl7cmV0dXJuIF8uZWkodGhpcyw1KX1nZXRUaXRsZSgpe3JldHVybiBfLnQodGhpcywxNil9c2V0VGl0bGUoYSl7cmV0dXJuIF8uZmgodGhpcywxNixhKX1sZCgpe3JldHVybiBfLnBoKHRoaXMsMTYpfWdldFVybCgpe3JldHVybiBfLnQodGhpcywxNyl9RWMoKXtyZXR1cm4gXy5waCh0aGlzLDE3KX1sR2EoKXtyZXR1cm4gXy5FZSh0aGlzLDI3KX1hSGEoKXtyZXR1cm4gXy5Layh0aGlzLDI3KX19O18ucmVlPV8uWWIoXy5pZWUpO18uc2VlPV8uWWIoXy5lZWUpO18uU25bMTM1MjkzODYxXT1fLmllZTsKfWNhdGNoKGUpe18uX0R1bXBFeGNlcHRpb24oZSl9CnRyeXsKXy50ZWU9Y2xhc3N7Y29uc3RydWN0b3IoYSxiLGM9MCl7dGhpcy5xdWVyeT1hO3RoaXMuT2E9Yjt0aGlzLnFIPWM7dGhpcy50aW1lc3RhbXA9RGF0ZS5ub3coKTt0aGlzLklhPXBlcmZvcm1hbmNlLm5vdygpO3RoaXMudXJpPW5ldyBfLkhlO3RoaXMuR2E9bmV3IF8uSGU7dGhpcy5LYT10aGlzLndhPXRoaXMuQWE9dGhpcy5mb3JjZWQ9ITE7dGhpcy5vYT1fLkFjZShhKTthPU1hdGgubWluKGIsdGhpcy5xdWVyeS5sZW5ndGgpO2lmKHRoaXMucXVlcnkpe2I9dGhpcy5xdWVyeS5zdWJzdHJpbmcoMCxhKTtmb3IoZCBvZiBiLnNwbGl0KC9bXlxzXSsvKSlhLT1NYXRoLm1heChkLmxlbmd0aC0xLDApO2IubWF0Y2goL15ccysvKSYmYS0tfXZhciBkPWE7dGhpcy5OYT1kfWdldFF1ZXJ5KCl7cmV0dXJuIHRoaXMucXVlcnl9R2hhKCl7cmV0dXJuIHRoaXMuT2F9R3EoKXtyZXR1cm4gdGhpcy50aW1lc3RhbXB9RWEoKXtyZXR1cm4gdGhpcy51cmkudG9TdHJpbmcoKX1CYShhKXt0aGlzLnVyaT1hLmNsb25lKCk7CnRoaXMuR2E9YS5jbG9uZSgpfWthKGEsYixjPSExKXtfLlRuKHRoaXMudXJpLGEsYik7YyYmXy5Ubih0aGlzLkdhLGEsYil9fTsKfWNhdGNoKGUpe18uX0R1bXBFeGNlcHRpb24oZSl9CnRyeXsKdmFyIHZlZTtfLnVlZT1mdW5jdGlvbihhKXtyZXR1cm4gXy5ZSihhLCJ6bCIsLTEpfTt2ZWU9Y2xhc3N7Y29uc3RydWN0b3IoYSl7dGhpcy5rYT1PYmplY3QuYXNzaWduKHt9LGEuYSl9b2EoYSl7cmV0dXJuIHRoaXMua2FbYV0mJnRoaXMua2FbYV1bMF19fTtfLndlZT1mdW5jdGlvbihhLGI9ITAsYz0hMSxkPSExKXt2YXIgZT0oYVswXXx8W10pLm1hcChmPT5uZXcgXy5HY2UoZikpO2E9bmV3IE1hcChPYmplY3QuZW50cmllcyhhWzFdfHx7fSkpO3JldHVybiBuZXcgXy5jSyhlLGEsYixjLHtPZGE6ZH0pfTtfLnhlZT1mdW5jdGlvbihhKXtyZXR1cm4gbmV3IE1hcChhLkFhKX07Xy55ZWU9ZnVuY3Rpb24oYSxiLGM9ITEpe3JldHVybiBuZXcgXy5jSyhiLGEuQWEsYS5CYSxhLkdhLHtzQ2I6ITEsT2RhOmEuSWEmJiFjfSl9OwpfLmNLPWNsYXNze2NvbnN0cnVjdG9yKGE9W10sYj1uZXcgTWFwLGM9ITAsZD0hMSx7c0NiOmU9ITEsT2RhOmY9ITF9PXt9KXt0aGlzLkVhPWE7dGhpcy5BYT1iO3RoaXMuQmE9Yzt0aGlzLkdhPWQ7dGhpcy5LYT1lO3RoaXMuSWE9Zn1rYSgpe3JldHVybiB0aGlzLkVhLnNsaWNlKCl9b2EoYSxiKXthPXRoaXMuQWEuZ2V0KGEpO3JldHVybiBhPT09dm9pZCAwP2I6YX1PZGEoKXtyZXR1cm4gdGhpcy5JYX13YSgpe3JldHVybiBuZXcgdmVlKHRoaXMub2EoImFnIix7fSkpfX07Cn1jYXRjaChlKXtfLl9EdW1wRXhjZXB0aW9uKGUpfQp0cnl7CnZhciBOZWU7Xy56ZWU9ZnVuY3Rpb24oYSxiKXtyZXR1cm4gXy5sayhhLDQsYil9O18uQWVlPWZ1bmN0aW9uKGEsYil7cmV0dXJuIF8uZmgoYSwyLGIpfTtfLkJlZT1mdW5jdGlvbihhLGIpe3JldHVybiBfLmxrKGEsMyxiKX07Xy5DZWU9ZnVuY3Rpb24oYSxiKXtyZXR1cm4gXy5vayhhLDI3LGIpfTtfLkRlZT1mdW5jdGlvbihhLGIpe18ub2soYSwyMixiKX07Xy5FZWU9ZnVuY3Rpb24oYSxiKXtyZXR1cm4gXy5vayhhLDE1LGIpfTtfLkZlZT1mdW5jdGlvbihhLGIpe3JldHVybiBfLm9rKGEsMjUsYil9O18uR2VlPWZ1bmN0aW9uKGEsYil7cmV0dXJuIF8ub2soYSwxOCxiKX07Xy5IZWU9ZnVuY3Rpb24oYSxiKXtyZXR1cm4gXy5vayhhLDE5LGIpfTtfLkllZT1mdW5jdGlvbihhLGIpe3JldHVybiBfLm9rKGEsMjAsYil9O18uSmVlPWZ1bmN0aW9uKGEsYil7cmV0dXJuIF8uZmgoYSwyMSxiKX07Xy5LZWU9ZnVuY3Rpb24oYSl7dHJ5e3JldHVybiBhLkdhLnRvU3RyaW5nKCl9Y2F0Y2goYil7cmV0dXJuIiJ9fTsKXy5MZWU9ZnVuY3Rpb24oYSxiKXtyZXR1cm4gcGFyc2VJbnQoYS5rYVtiXSYmYS5rYVtiXVsyXSwxMCl8fDB9O18uTWVlPWZ1bmN0aW9uKGEpe3ZhciBiPXswOltdfTthLkVhLmZvckVhY2goYz0+YlswXS5wdXNoKGMub2EpKTtiWzFdPXt9O2EuQWEuZm9yRWFjaCgoYyxkKT0+YlsxXVtkXT1jKTtyZXR1cm4gYn07TmVlPWNsYXNzIGV4dGVuZHMgXy5se2NvbnN0cnVjdG9yKGEpe3N1cGVyKGEpfWxHYSgpe3JldHVybiBfLkVlKHRoaXMsMSl9YUhhKCl7cmV0dXJuIF8uS2sodGhpcywxKX19O18uT2VlPWZ1bmN0aW9uKGEpe3ZhciBiPW5ldyBOZWU7cmV0dXJuIF8ub2soYiwxLGEpfTtfLlBlZT1jbGFzcyBleHRlbmRzIF8ubHtjb25zdHJ1Y3RvcihhKXtzdXBlcihhKX1nZXRUeXBlKCl7cmV0dXJuIF8uT2oodGhpcywxLDEpfUFjKGEpe3JldHVybiBfLlpoKHRoaXMsMSxhKX10ZSgpe3JldHVybiBfLmVpKHRoaXMsMSl9fTsKXy5RZWU9Y2xhc3MgZXh0ZW5kcyBfLmx7Y29uc3RydWN0b3IoYSl7c3VwZXIoYSl9Z2V0SWQoKXtyZXR1cm4gXy50KHRoaXMsMSl9TWMoYSl7cmV0dXJuIF8uZmgodGhpcywxLGEpfVlnKCl7cmV0dXJuIF8ucGgodGhpcywxKX19O18uUmVlPWNsYXNze3FRYSgpe3JldHVybltdfX07Cn1jYXRjaChlKXtfLl9EdW1wRXhjZXB0aW9uKGUpfQp0cnl7Cl8uU2VlPWNsYXNze2NvbnN0cnVjdG9yKGEpe3RoaXMuZGVwZW5kZW5jaWVzPWF9Z2V0KGEpe3JldHVybiB0aGlzLmRlcGVuZGVuY2llcy5nZXQoYSl8fG51bGx9fTsKfWNhdGNoKGUpe18uX0R1bXBFeGNlcHRpb24oZSl9CnRyeXsKXy5kSz1fLmtjKCJFUFJ0OWQiLFtfLkNkZV0pOwp9Y2F0Y2goZSl7Xy5fRHVtcEV4Y2VwdGlvbihlKX0KdHJ5ewpfLnUoIkVQUnQ5ZCIpOwp2YXIgVGVlLFdlZTtUZWU9bmV3IF8uUmVlO18uVWVlPWE9PmEuY29uZmlndXJlO18uVmVlPWE9PmEuVm07V2VlPWE9PmEucmVzZXQ7Xy5YZWU9ZnVuY3Rpb24oYSxiLC4uLmMpe2E9YS5vYS5nZXRBbGwoKTtpZihhLmxlbmd0aCE9PTApZm9yKGxldCBkIG9mIGEpaWYoYT1iKGQpLGEhPT12b2lkIDApdHJ5e2EuYXBwbHkoZCxjKX1jYXRjaChlKXt9fTsKXy5lSz1jbGFzcyBleHRlbmRzIF8uRWl7c3RhdGljIFFhKCl7cmV0dXJue21vZGVsOntXdGM6Xy5EZGV9fX1jb25zdHJ1Y3RvcihhKXtzdXBlcigpO3RoaXMub2E9bmV3IF8uY2VlO3RoaXMuSWE9bmV3IE1hcDt0aGlzLlNhPWEubW9kZWwuV3RjO3RoaXMua2EoXy5OZGUsdGhpcy5TYSk7Xy5KZGUoKCk9PnRoaXMucmVzZXQoKSl9a2EoYSxiKXt0aGlzLklhLmhhcyhhKTt0aGlzLklhLnNldChhLGIpfWluaXRpYWxpemUoYSxiKXt0aGlzLm9hPWE7Xy5YZWUodGhpcyxfLlVlZSxiKTtmb3IobGV0IHthNWE6YyxNUWE6ZH1vZiB0aGlzLm9hLmVGKCkpdGhpcy5rYShjLGQpO18uWGVlKHRoaXMsXy5WZWUsbmV3IF8uU2VlKHRoaXMuSWEpKTt0aGlzLlNhLlB4KDEwKX1yZXNldCgpe18uWGVlKHRoaXMsV2VlKX1MamEoYSxiKXtmb3IobGV0IGMgb2YgdGhpcy5vYS5rYSljLkxqYShhLGIpfVJhKGEpe2ZvcihsZXQgZCBvZiB0aGlzLm9hLmthKWZvcihsZXQgZSBvZiBkLmVHYSgpKXt2YXIgYj1hLApjPV8uQmVlKF8uQWVlKF8uemVlKG5ldyBfLlBlZSxlLkFhKCkpLGUud2EoKSksZS5vYSgpKTtfLnVoKGIsNjAsXy5QZWUsYyl9fVhIKGEpe2ZvcihsZXQgYiBvZiB0aGlzLm9hLk9hKWlmKGIua2EoYSkpcmV0dXJuIGI7cmV0dXJuIG51bGx9WmEoYSl7Zm9yKGxldCBiIG9mIHRoaXMub2EuTmEpaWYoYi5EMGEoYSkpcmV0dXJuIGI7cmV0dXJuIG51bGx9S2EoYSl7dmFyIGI9MTtmb3IobGV0IGMgb2YgdGhpcy5vYS5BYSl7bGV0IGQ9Yy5iUihhKTtkPmImJihiPWQpfXJldHVybiBifXdhKGEsYil7Zm9yKGxldCBjIG9mIHRoaXMub2EuR2EpYT1jLk9WKGEsYik7cmV0dXJuIGF9UGEoYSxiKXtmb3IobGV0IGMgb2YgdGhpcy5vYS53YSljLnVwZGF0ZShhLGIpfU9hKGEpe2ZvcihsZXQgYiBvZiB0aGlzLm9hLndhKXtsZXQgYz1iLmdldChhKTtpZihjKXJldHVybiBjfXJldHVybiBudWxsfUVhKGEpe3JldHVybiB0aGlzLm9hLkVhKGEpfHx0aGlzLm9hLkVhKC0xKXx8VGVlfUJhKGEpe3JldHVybiB0aGlzLm9hLkJhKGEpfHwKdGhpcy5vYS5CYSgtMSl8fFRlZX1zd2EoYSl7Zm9yKGxldCBiIG9mIHRoaXMub2Eub2Epe2xldCBjPWIuc3dhKGEpO2lmKGMpcmV0dXJuIGN9cmV0dXJuIG51bGx9TmEoYSl7Zm9yKHZhciBiIG9mIHRoaXMub2Eub2Epe2xldCBjPWIuRVRiKGEua2EoKSk7aWYoYylyZXR1cm4gYj1hLmthKCksYi5wdXNoKGMpLF8ueWVlKGEsYil9cmV0dXJuIGF9fTtfLlZyKF8uZEssXy5lSyk7Cl8udigpOwp9Y2F0Y2goZSl7Xy5fRHVtcEV4Y2VwdGlvbihlKX0KdHJ5ewpfLlllZT1fLmtjKCJramt5a2QiLFtfLlBxLF8uZEssXy5FWmFdKTsKfWNhdGNoKGUpe18uX0R1bXBFeGNlcHRpb24oZSl9CnRyeXsKXy51KCJramt5a2QiKTsKXy5aZWU9ISEoXy5PaVs1Nl0+PjI2JjEpO3ZhciAkZWU9ISEoXy5PaVs1N10mMzIpO3ZhciBhZmU9Xy5FeT8iZ3dzLXdpei1tb2RlbGVzcyI6Im1vYmlsZS1nd3MtbW9kZWxlc3MiLGJmZT1fLkV5JiYkZWU/Imd3cy13aXotaW1nIjpfLkV5PyJpbWciOiJtb2JpbGUtZ3dzLXdpei1pbWciLGNmZT1fLkV5JiYhJGVlPyJnd3Mtd2l6LWltZyI6IiIsZGZlPV8uRXkmJl8uWmVlPyJnd3Mtd2l6IjpfLkV5PyJnd3Mtd2l6LXNlcnAiOl8uUUMmJl8uWmVlPyJtb2JpbGUtZ3dzLXdpei1ocCI6Im1vYmlsZS1nd3Mtd2l6LXNlcnAiO3ZhciBlZmU9e2pKYjoxLHA5YzoyLGRqZDozLFpiZDo1LHV0ZDo3LHokYzo4LGVqZDo5LEEkYzoxMCxpYmQ6MTEsTzVjOjEzLFl2ZDoxNCxhNmM6MTgsSVdjOjE1LEpKYjoyOCxQNWM6MzEscHNkOjMyLE9YYzozMyxVN2M6MzQsb2hjOjEyLHlhZDoyNCxCYWQ6MjYsUyRjOjI3LEZkYzozNix0dmQ6MzcsdXZkOjM4LEpvZDozOSx6a2Q6NDMscnZkOjQ0LEZjZDo0NSxJb2Q6NDcsb3ZkOjQ4LHplYzo0OSxsZGM6NTAsMToiTE9DQUwiLDI6IklNQUdFUyIsMzoiUFJPRFVDVFMiLDU6IkxPREdJTkciLDc6IlZJREVPUyIsODoiSk9CUyIsOToiUFJPRFVDVFNfQ09NUEFSSVNPTl9TSVRFUyIsMTA6IkpPQlNfQ09NUEFSSVNPTl9TSVRFUyIsMTE6IkxPQ0FMX0FORF9UUkFWRUxfQ09NUEFSSVNPTl9TSVRFUyIsMTM6IkZMSUdIVFNfQUlSTElORV9TSVRFUyIsMTQ6IldFQl9PTkxZIiwxODoiRk9SVU1TIiwxNToiQVRUUkFDVElPTlMiLDI4OiJTSE9QUElORyIsMzE6IkZMSUdIVFNfQ09NUEFSSVNPTl9TSVRFUyIsCjMyOiJUUkFJTlMiLDMzOiJCVVNFUyIsMzQ6IkdST1VORF9UUkFOU1BPUlRBVElPTl9DT01QQVJJU09OX1NJVEVTIiwxMjoiTkVXUyIsMjQ6IkxFTlNfTVVMVElNT0RBTCIsMjY6IkxFTlNfVU5JTU9EQUwiLDI3OiJLSURfRlJJRU5ETFlfU0VBUkNIIiwzNjoiQk9PS1MiLDM3OiJWSVNVQUxfUFJPRFVDVFMiLDM4OiJWSVNVQUxfVklERU9TIiwzOToiU0hPUlRfVklERU9TIiw0MzoiU0FDQyIsNDQ6IlZJU1VBTF9NQVRDSEVTIiw0NToiTUFHSV9BSSIsNDc6IlNIT1BQSU5HX1dFQl9DTFVTVEVSIiw0ODoiVklTVUFMX0VYQUNUX01BVENIRVMiLDQ5OiJFTUJFUiIsNTA6IkFJX01PREUifTtfLmdmZT1mdW5jdGlvbihhKXthLm9hPW51bGw7dmFyIGI9bmV3IFVSTFNlYXJjaFBhcmFtcyhfLm92KGEuU2IpKTtiLmhhcygidWRtIikmJihiPU51bWJlcihiLmdldCgidWRtIikpLGIgaW4gZWZlJiYoYS5vYT1iKSk7Xy5mZmUoYSxhLm9hKX07Xy5mZmU9ZnVuY3Rpb24oYSxiKXtpZihhLk1fIT09Yil7YS5NXz1iO2ZvcihsZXQgYyBvZiBhLk5hKWMuRjJiKCl9fTsKXy5oZmU9Y2xhc3MgZXh0ZW5kcyBfLkVpe3N0YXRpYyBRYSgpe3JldHVybntzZXJ2aWNlOntTYjpfLnB2fSxtb2RlbDp7R3I6Xy5lSyxWbzpfLlkkZH19fWNvbnN0cnVjdG9yKGEpe3N1cGVyKCk7dGhpcy5NXz10aGlzLm9hPW51bGw7dGhpcy5JYT1uZXcgTWFwO3RoaXMuRWE9bmV3IE1hcDt0aGlzLkJhPW5ldyBNYXA7dGhpcy5OYT1uZXcgU2V0O3RoaXMuU2I9YS5zZXJ2aWNlLlNiO2EubW9kZWwuR3Iua2EoXy5VZGUsdGhpcyk7dmFyIGI9YS5tb2RlbC5Wbzt0aGlzLk9mPWIuVkIoKTtfLlgkZChiLCgpPT57dGhpcy5PZj1iLlZCKCk7dmFyIGM9WzEsXy5Saih0aGlzLk9mLDQ5LF8ub2goKSldLGQ9WzMsXy5Saih0aGlzLk9mLDUxLF8ub2goKSldLGU9WzUsXy5Saih0aGlzLk9mLDUyLF8ub2goKSldLGY9WzcsXy5Saih0aGlzLk9mLDYwLF8ub2goKSldLGc9WzgsXy5Saih0aGlzLk9mLDYxLF8ub2goKSldLGg9WzksXy5Saih0aGlzLk9mLDU3LF8ub2goKSldLGs9WzEwLF8uUmoodGhpcy5PZiwKNTgsXy5vaCgpKV0sbT1bMTEsXy5Saih0aGlzLk9mLDU5LF8ub2goKSldLG49WzEzLF8uUmoodGhpcy5PZiw1MyxfLm9oKCkpXSxwPVsyNCxfLlJqKHRoaXMuT2YsNjgsXy5vaCgpKV0scj1bMjYsXy5Saih0aGlzLk9mLDY4LF8ub2goKSldLHg9WzI4LF8uUmoodGhpcy5PZiw2NCxfLm9oKCkpXSx6PVszMSxfLlJqKHRoaXMuT2YsNjIsXy5vaCgpKV0sQj1bMzQsXy5Saih0aGlzLk9mLDYzLF8ub2goKSldLEg9WzM3LF8uUmoodGhpcy5PZiw2OCxfLm9oKCkpXSxKPVs0NCxfLlJqKHRoaXMuT2YsNjgsXy5vaCgpKV0sTj1bNDgsXy5Saih0aGlzLk9mLDY4LF8ub2goKSldLFE9WzE0LF8uUmoodGhpcy5PZiw3NSxfLm9oKCkpXSxaPVsxOCxfLlJqKHRoaXMuT2YsNzIsXy5vaCgpKV07dmFyIFk9Xy5Saih0aGlzLk9mLDczLF8ub2goKSk7Yz1bW251bGwsW2RmZSwiIiwiIl1dLGMsWzIsW2JmZSxjZmUsImkiXV0sZCxlLGYsZyxoLGssbSxuLHAscix4LHosQixILEosTixRLFosWzE1LFthZmUsCiIiLCIiXV0sWzMyLFthZmUsIiIsIiJdXSxbMzMsW2FmZSwiIiwiIl1dLFsxMixbYWZlLCIiLCIiXV0sWzI3LFthZmUsIiIsIiJdXSxbMzYsW2FmZSwiIiwiIl1dLFszOCxbYWZlLCIiLCIiXV0sWzM5LFldLFs0MyxbYWZlLCIiLCIiXV0sWzQ1LFthZmUsIiIsIiJdXSxbNDcsW2FmZSwiIiwiIl1dLFs0OSxbYmZlLGNmZSwiaSJdXV07Zm9yKGxldCBbZGEsY2Fdb2YgYyl7Yz1kYTtsZXQgW2hhLGthLHRhXT1jYTt0aGlzLklhLnNldChjLGhhKTt0aGlzLkVhLnNldChjLGthKTt0aGlzLkJhLnNldChjLHRhKX1fLmdmZSh0aGlzKX0pfWthKCl7cmV0dXJuIHRoaXMuTV8hPT1udWxsfUthKCl7cmV0dXJuIHRoaXMuSWEuZ2V0KHRoaXMuTV8pfHx0aGlzLklhLmdldChudWxsKX1PYSgpe3JldHVybiB0aGlzLkVhLmdldCh0aGlzLk1fKXx8dGhpcy5FYS5nZXQobnVsbCl9d2EoKXtyZXR1cm4gdGhpcy5CYS5nZXQodGhpcy5NXyl8fHRoaXMuQmEuZ2V0KG51bGwpfX07Xy5WcihfLlllZSxfLmhmZSk7Cl8udigpOwp9Y2F0Y2goZSl7Xy5fRHVtcEV4Y2VwdGlvbihlKX0KdHJ5ewp2YXIgSE5iLElOYjtfLkROYj1mdW5jdGlvbihhLGIpe2ZvcihsZXQgYyBpbiBhKWlmKGIuY2FsbCh2b2lkIDAsYVtjXSxjLGEpKXJldHVybiBjfTtfLkVOYj1mdW5jdGlvbigpe3JldHVybiBfLm9nLmhpc3RvcnkubGVuZ3RoIT09KF8uWkZhPzA6MSl9O0hOYj1mdW5jdGlvbihhLGIsYyl7dmFyIGQ9bmV3IF8uUUthKCIiLF8uWG4pO0ZOYihuZXcgR05iKCgpPT5kKSxhKTtjKGQsYik7cmV0dXJuIGJ9O0lOYj1mdW5jdGlvbihhLGIpe3ZhciBjPW5ldyBfLlFLYSgiIixfLlhuKTtiKGEsYyk7cmV0dXJuKG5ldyBHTmIoKCk9PmMpKS5GYyhjKX07Xy5KTmI9YT0+YT8iMSI6IjAiO18uS05iPWE9PmE9PSIxIjt2YXIgTE5iLE1OYixOTmI7TE5iPWNsYXNze0ZjKGEpe3ZhciBiPVtdO2ZvcihsZXQgYyBvZiBhKWIucHVzaChjKTtyZXR1cm4gYi5qb2luKCIsIil9a2EoYSl7Zm9yKHZhciBiPS8oPzpefFteYF0pKD86KD86YGApKiksLyxjPWIuZXhlYyhhKSxkPVtdO2MhPT1udWxsOyljPWMuaW5kZXgrY1swXS5sZW5ndGgsZC5wdXNoKGEuc3Vic3RyaW5nKDAsYy0xKSksYT1hLnN1YnN0cmluZyhjKSxjPWIuZXhlYyhhKTtkLnB1c2goYSk7cmV0dXJuIGR9fTtNTmI9Y2xhc3N7RmMoYSl7cmV0dXJuIGEucmVwbGFjZSgvYC9nLCJgYCIpLnJlcGxhY2UoLywvZywiYCwiKX1rYShhKXtyZXR1cm4gYS5yZXBsYWNlKC9gLC9nLCIsIikucmVwbGFjZSgvYGAvZywiYCIpfX07Ck5OYj1jbGFzc3tjb25zdHJ1Y3Rvcigpe3RoaXMud2E9bmV3IExOYjt0aGlzLm9hPW5ldyBNTmJ9RmMoYSl7dmFyIGI9W107Zm9yKGxldCBjIG9mIGEpYi5wdXNoKHRoaXMub2EuRmMoYykpO3JldHVybiB0aGlzLndhLkZjKGIpfWthKGEpe3ZhciBiPVtdO2ZvcihsZXQgYyBvZiB0aGlzLndhLmthKGEpKWIucHVzaCh0aGlzLm9hLmthKGMpKTtyZXR1cm4gYn19O18uT05iPW5ldyBOTmI7dmFyIEZOYj1mdW5jdGlvbihhLGIpe2E9YS5rYS5rYShiKTtmb3IobGV0IFtjLGRdb2YgYSlhLnNldChjLF8uT05iLm9hLmthKGQpKX0sR05iPWNsYXNze2NvbnN0cnVjdG9yKGE9KCk9Pm5ldyBNYXApe3RoaXMua2E9bmV3IF8uaGFiKG5ldyBfLk9LYSgiOiIpLF8uT05iLndhLGEpfUZjKGEpe3ZhciBiPW5ldyBNYXA7Zm9yKGxldCBbYyxkXW9mIGEpYi5zZXQoYyxfLk9OYi5vYS5GYyhkKSk7cmV0dXJuIHRoaXMua2EuRmMoYil9fTt2YXIgUU5iO18uUE5iPWE9PmEudG9TdHJpbmcoKTtRTmI9YT0+TnVtYmVyKGEpO18udnY9ZnVuY3Rpb24oYSxiLGMsZCxlKXtiPWEua2EuZ2V0KGIpO2IhPT12b2lkIDA/Yy5jYWxsKGEub2EsZChiKSk6ZS5jYWxsKGEub2EpfTtfLlJOYj1mdW5jdGlvbihhLGIsYyxkLGUpe3ZhciBmPVtdO2I9YS5rYS5nZXRBbGwoYik7ZSYmYi5sZW5ndGghPTAmJihiPV8uT05iLmthKGIuam9pbigiLCIpKSk7Zm9yKGxldCBnIG9mIGIpZi5wdXNoKGQoZykpO2MuY2FsbChhLm9hLGYpfTtfLnd2PWZ1bmN0aW9uKGEsYixjLGQpe18udnYoYSxiLGMsXy5rSmEsZCl9O18ueHY9ZnVuY3Rpb24oYSxiLGMsZCl7Xy52dihhLGIsYyxRTmIsZCl9O18uU05iPWZ1bmN0aW9uKGEsYixjKXtfLlJOYihhLGIsYyxRTmIsITApfTtfLnl2PWZ1bmN0aW9uKGEsYixjLGQpe18udnYoYSxiLGMsXy5LTmIsZCl9O18uVE5iPWZ1bmN0aW9uKGEsYixjLGQsZSxmKXtfLnZ2KGEsYixjLGc9PkhOYihnLG5ldyBkLGUuYlhhKSxmKX07Cl8uVU5iPWZ1bmN0aW9uKGEsYixjLGQsZSl7Yi5jYWxsKGEub2EpPyhiPWMuY2FsbChhLm9hKSxhLmthLnNldChlLGQoYikpKTphLmthLmRlbGV0ZShlKX07Xy5WTmI9ZnVuY3Rpb24oYSxiLGMsZCxlKXthLmthLmRlbGV0ZShkKTtiPWIuY2FsbChhLm9hKTtpZihiLmxlbmd0aClpZihlKXtlPVtdO2ZvcihsZXQgZiBvZiBiKWUucHVzaChjKGYpKTthLmthLmFwcGVuZChkLF8uT05iLkZjKGUpKX1lbHNlIGZvcihsZXQgZiBvZiBiKWEua2EuYXBwZW5kKGQsYyhmKSk7ZWxzZSBhLmthLmRlbGV0ZShkKX07Xy56dj1mdW5jdGlvbihhLGIsYyxkKXtfLlVOYihhLGIsYyxfLmtKYSxkKX07Xy5Bdj1mdW5jdGlvbihhLGIsYyxkKXtfLlVOYihhLGIsYyxfLlBOYixkKX07Xy5Cdj1mdW5jdGlvbihhLGIsYyxkKXtfLlVOYihhLGIsYyxfLkpOYixkKX07Xy5XTmI9ZnVuY3Rpb24oYSxiLGMsZCxlKXtfLlVOYihhLGIsYyxmPT5JTmIoZixkLmNYYSksZSl9OwpfLkN2PWNsYXNze2NvbnN0cnVjdG9yKGEsYil7dGhpcy5rYT1hO3RoaXMub2E9Yn19Owp9Y2F0Y2goZSl7Xy5fRHVtcEV4Y2VwdGlvbihlKX0KdHJ5ewp2YXIgRXZjLEh2YyxKdmMsS3ZjLE12YztFdmM9ZnVuY3Rpb24oYSxiPW5ldyBTZXQpe2ZvcihsZXQgYyBvZiBhKWIuYWRkKGMpO3JldHVybiBifTtfLkZ2Yz1mdW5jdGlvbihhLGIpe3JldHVybiBifTtfLkd2Yz1mdW5jdGlvbihhLGI9bmV3IF8ubXZjKXtiLm9hPWE7cmV0dXJuIGJ9O18uVno9ZnVuY3Rpb24oKXtyZXR1cm4gXy4kZihfLkR2Yyl9O0h2Yz1jbGFzc3tjb25zdHJ1Y3RvcihhPW5ldyBNYXApe3RoaXMua2E9YX1ub3RpZnkoYSxiLGMsZCl7Zm9yKGxldCBlIG9mIGEua2V5cygpKWlmKHRoaXMua2EuaGFzKGUpKWZvcihsZXQgZiBvZiB0aGlzLmthLmdldChlKSl0cnl7ZihhLmdldChlKS5jbG9uZSgpLGIsYyxkKX1jYXRjaChnKXtfLmZhKGcpfX1zdGF0aWMgY29tcG9zZSguLi5hKXt2YXIgYj1bXTtmb3IobGV0IGMgb2YgYSliLnB1c2goYy5rYSk7YT1fLnF2YyhiLEV2Yyk7cmV0dXJuIG5ldyBIdmMoYSl9fTsKXy5JdmM9ZnVuY3Rpb24oYSx7Z2V0Q3VycmVudDpiLFVhYTpjPVtdLHJBYTpkLGdHOmU9W10sVGQ6Zj1bXSxweWI6Zz1bXSxIUWE6aH09e30pe3ZhciBrPW5ldyBNYXA7Zm9yKGxldCBtIG9mIGUpay5zZXQobS5jb25zdHJ1Y3RvcixtKTtlPW5ldyBNYXA7ZiYmZS5zZXQoSHZjLG5ldyBIdmMobmV3IE1hcChbW2EsbmV3IFNldChbLi4uZl0pXV0pKSk7Zm9yKGxldCBtIG9mIGcpZS5zZXQobS5jb25zdHJ1Y3RvcixtKTtyZXR1cm4gbmV3IF8uQnZjKG5ldyBNYXAoW1thLHtnZXRDdXJyZW50OmIsVWFhOm5ldyBTZXQoYyksckFhOmR9XV0pLGssZSxoKX07Cl8uV3o9Y2xhc3N7Y29uc3RydWN0b3IoYSxiLGM9e30pe3RoaXMua2E9YTt0aGlzLm9hPWI7dGhpcy53YT1jLmM4YXx8KGQ9Pl8ucGcoZCk/ZDp7fSk7dGhpcy5BYT1jLkdkYnx8KChkLGUpPT5lKX1LayhhLGIpe3RoaXMua2EmJnRoaXMua2EuS2smJnRoaXMua2EuS2soYS51cmwsYik7dGhpcy5vYSYmdGhpcy5vYS5Layh0aGlzLndhKGEuc3RhdGUpLGIpfVFsKGEsYil7dGhpcy5rYSYmdGhpcy5rYS5RbCYmdGhpcy5rYS5RbChhLGIudXJsKTtpZih0aGlzLm9hKXtsZXQgYz1PYmplY3QuYXNzaWduKHt9LHRoaXMud2EoYi5zdGF0ZSkpO3RoaXMub2EuUWwoYSxjKTthPU9iamVjdC5hc3NpZ24oe30sXy5wZyhiLnN0YXRlKT9iLnN0YXRlOnt9KTtiLnN0YXRlPXRoaXMuQWEoYSxjKX19fTtKdmM9ZnVuY3Rpb24oYSxiKXthLndhLnB1c2goYil9OwpLdmM9ZnVuY3Rpb24oYSl7dmFyIGI9YS5vYS5nZXRTdGF0ZSgpfHx7fTtyZXR1cm57dXJsOl8ubHZjKGEub2EuZ2V0Q3VycmVudFVybCgpKSxzdGF0ZTpiLnVzZXJEYXRhfX07Xy5MdmM9ZnVuY3Rpb24oYSxiLGMsZCl7cmV0dXJuIG5ldyBfLm52YyhuZXcgTWFwKFtbYSxiXV0pLGMsZCl9OwpfLlh6PWZ1bmN0aW9uKGEsYixjKXt2YXIgZD1iLnluKCk7Yi5CYShfLkx2YyhkLGMsYS5vYSxhLmthKSk7Yi5OYShoPT57dmFyIGs9S3ZjKGEpO2MuS2soayxoKX0pO3ZhciBlPSExLGY9bmV3IGQsZz1fLkl2YyhkLHtVYWE6W2g9Pnt2YXIgaz1LdmMoYSk7Yy5LayhrLGYpO2MuS2soayxoKTtyZXR1cm4gaH1dLFRkOlsoKT0+e2V8fChlPSEwLEp2YyhhLHtudWM6aD0+Yi50cmFuc2l0aW9uKGs9PntjLktrKGgsayk7cmV0dXJuIGt9LCJJYUxUR2IiKSxDU2M6aD0+e3ZhciBrPW5ldyBkO3JldHVybiBiLkthKG09PntpZighYy5rYSlyZXR1cm4hMTt2YXIgbj1fLmx2YygiIikscCxyOyhyPShwPWMua2EpLlFsKT09bnVsbHx8ci5jYWxsKHAsbSxuKTtoKG4pO3ZhciB4LHo7KHo9KHg9Yy5rYSkuS2spPT1udWxsfHx6LmNhbGwoeCxuLGspO3JldHVybiFfLlZrKGssbSl9LCgpPT5rLCJJYUxUR2IiKX0sVnljOmN9KSl9XX0pO2IuRWEoZyl9OwpNdmM9ZnVuY3Rpb24oYSxiLGMpe2EuVGQuc2V0KGIsYyk7cmV0dXJuIGF9O18uWXo9ZnVuY3Rpb24oYSxiLGMpe012YyhhLGMsKGQsZSxmLGcpPT57Yj09PWUmJmMoZCxmLGcpfSl9OwpfLlp6PWNsYXNze2NvbnN0cnVjdG9yKGEpe3RoaXMub2E9YTt0aGlzLnN0YXRlPW5ldyB0aGlzLm9hO3RoaXMuZ0c9bmV3IFNldDt0aGlzLlRkPW5ldyBNYXA7dGhpcy5HYT1uZXcgU2V0O3RoaXMud2E9KCk9Pnt2YXIgYj10aGlzLnN0YXRlLmNsb25lKCk7Zm9yKGxldCBjIG9mIHRoaXMuR2EpYyhiKTtyZXR1cm4gYn07dGhpcy5BYT1iPT57dGhpcy5zdGF0ZT1ifTt0aGlzLklhPShiLGMsZCxlKT0+e2ZvcihsZXQgZiBvZiB0aGlzLlRkLnZhbHVlcygpKXRyeXtmKGIuY2xvbmUoKSxjLGQsZSl9Y2F0Y2goZyl7Xy5mYShnKX19O3RoaXMua2E9Xy5JdmModGhpcy5vYSx7Z2V0Q3VycmVudDp0aGlzLndhLFRkOlt0aGlzLkFhXX0pfXluKCl7cmV0dXJuIHRoaXMub2F9bGlzdGVuKGEpe3JldHVybiBNdmModGhpcyxhLGEpfXVubGlzdGVuKGEpe3RoaXMuVGQuZGVsZXRlKGEpfWdldCgpe3JldHVybiB0aGlzLndhKCl9dHJhbnNpdGlvbihhLGI9IkU4amZzZSIpe3JldHVybiBfLkl2Yyh0aGlzLm9hLAp7Z2V0Q3VycmVudDp0aGlzLndhLFVhYTpbYV0sckFhOnRoaXMuQWEsZ0c6dGhpcy5nRyxUZDpbdGhpcy5JYV0sSFFhOmJ9KX1LYShhLGIsYz0iRThqZnNlIil7cmV0dXJuIF8uSXZjKHRoaXMub2Ese2dldEN1cnJlbnQ6dGhpcy53YSxVYWE6W3tSN2I6YSx6UmM6Yn1dLHJBYTp0aGlzLkFhLGdHOnRoaXMuZ0csVGQ6W3RoaXMuSWFdLEhRYTpjfSl9aW5pdGlhbGl6ZShhPW5ldyBNYXApe2lmKCF0aGlzLmthKXJldHVybiBQcm9taXNlLnJlc29sdmUoKTt2YXIgYj10aGlzLmthLGM9Yi5ydW4sZD1uZXcgXy5tdmM7ZC5ldmVudFR5cGU9InNLbGN2ZCI7YT1jLmNhbGwoYixkLmFuZChfLkd2YyxhKSk7dGhpcy5rYT1udWxsO3JldHVybiBhfUVhKGEpe3RoaXMua2EmJih0aGlzLmthPXRoaXMua2EuY29tcG9zZShhKSl9QmEoYSl7dGhpcy5nRy5hZGQoYSl9TmEoYSl7dGhpcy5HYS5hZGQoYSl9fTtfLiR6PWNsYXNze2NvbnN0cnVjdG9yKGEpe3ZhciBiPV8uSXZjKGEueW4oKSx7VWFhOlsoYyxkKT0+KGQ9ZC5nZXQoIlI4NERQZSIpfHxudWxsKT9kLmNsb25lKCk6Y119KTthLkVhKGIpfX07Cn1jYXRjaChlKXtfLl9EdW1wRXhjZXB0aW9uKGUpfQp0cnl7Cl8uYkE9ZnVuY3Rpb24oYSxiPW5ldyBfLm12Yyl7dmFyIGM9Yi5rYS5nZXQoXy5udmMpfHx7fTtjLnJzYT1hO2Iua2Euc2V0KF8ubnZjLGMpO3JldHVybiBifTsKfWNhdGNoKGUpe18uX0R1bXBFeGNlcHRpb24oZSl9CnRyeXsKXy5pZmU9ZnVuY3Rpb24oYSxiLGMsZCl7Yy5jYWxsKGEucHJvdG8pP2Eub2JqZWN0W2JdPWQuY2FsbChhLnByb3RvKTpkZWxldGUgYS5vYmplY3RbYl19O18uamZlPWZ1bmN0aW9uKGEsYixjLGQpeyhjPWMuY2FsbChhLnByb3RvKSk/YS5vYmplY3RbYl09ZChjKTpkZWxldGUgYS5vYmplY3RbYl19O18ua2ZlPWZ1bmN0aW9uKGEsYixjLGQsZSl7Yj1hLm9iamVjdFtiXTtjPT09ImdiaWdpbnQiP2QuY2FsbChhLnByb3RvLGIpOnR5cGVvZiBiPT09Yz9kLmNhbGwoYS5wcm90byxiKTplLmNhbGwoYS5wcm90byl9O18ubGZlPWZ1bmN0aW9uKGEsYixjLGQsZSl7Yj1hLm9iamVjdFtiXTtiIT1udWxsP2MuY2FsbChhLnByb3RvLGUoYikpOmQuY2FsbChhLnByb3RvKX07Xy5tZmU9Y2xhc3N7Y29uc3RydWN0b3IoYSxiKXt0aGlzLm9iamVjdD1hO3RoaXMucHJvdG89Yn19Owp9Y2F0Y2goZSl7Xy5fRHVtcEV4Y2VwdGlvbihlKX0KdHJ5ewpfLm5mZT1fLmtjKCJDb3l1RmIiLFtfLkNaYSxfLmRLLF8uWWVlLF8uRVphXSk7Cn1jYXRjaChlKXtfLl9EdW1wRXhjZXB0aW9uKGUpfQp0cnl7Cl8udSgiQ295dUZiIik7CnZhciBvZmU9ISEoXy5PaVs5XSY4KTt2YXIgcGZlPWNsYXNzIGV4dGVuZHMgXy5se2NvbnN0cnVjdG9yKGEpe3N1cGVyKGEpfW9hKCl7cmV0dXJuIF8uQSh0aGlzLDEpfWRLKGEpe3JldHVybiBfLiRoKHRoaXMsMSxhKX1JYSgpe3JldHVybiBfLkdlKHRoaXMsMSl9TmEoKXtyZXR1cm4gXy5Iayh0aGlzLDEpfWtaKCl7cmV0dXJuIF8uT2oodGhpcywyKX1aUChhKXtyZXR1cm4gXy5aaCh0aGlzLDIsYSl9QmEoKXtyZXR1cm4gXy5HZSh0aGlzLDIpfUVhKCl7cmV0dXJuIF8uUWsodGhpcywyKX13YSgpe3JldHVybiBfLnhlKHRoaXMsMyl9QWEoYSl7cmV0dXJuIF8ubGsodGhpcywzLGEpfUthKCl7cmV0dXJuIF8uR2UodGhpcywzKX1PYSgpe3JldHVybiBfLndlKHRoaXMsMyl9fTtwZmUucHJvdG90eXBlLlhhPSJwanYyNmQiO3ZhciBxZmU9e2tleXMoKXtyZXR1cm5bImZiYSIsImZhdCJdfSxLayhhLGIpe2E9bmV3IF8ubWZlKGEsYik7Xy5rZmUoYSwiZmJhIiwiYm9vbGVhbiIsYi5kSyxiLklhKTtfLmtmZShhLCJmYXQiLCJudW1iZXIiLGIuWlAsYi5CYSl9LFFsKGEsYil7Yj1uZXcgXy5tZmUoYixhKTtfLmlmZShiLCJmYmEiLGEuTmEsYS5vYSk7Xy5pZmUoYiwiZmF0IixhLkVhLGEua1opfX07dmFyIHJmZT17Y1MoKXtyZXR1cm5bImF0dm0iXX0sS2soYSxiKXtfLnh2KG5ldyBfLkN2KGEuc2VhcmNoUGFyYW1zLGIpLCJhdHZtIixiLkFhLGIuS2EpfSxRbChhLGIpe18uQXYobmV3IF8uQ3YoYi5zZWFyY2hQYXJhbXMsYSksYS5PYSxhLndhLCJhdHZtIil9fTt2YXIgc2ZlPW51bGwsdGZlPWNsYXNzIGV4dGVuZHMgXy5aentjb25zdHJ1Y3RvcihhLGIpe3N1cGVyKGEpO25ldyBfLiR6KHRoaXMpO18uWHooYix0aGlzLG5ldyBfLld6KHJmZSxxZmUse2M4YTpfLnN2YyxHZGI6Xy5GdmN9KSl9c3RhdGljIHluKCl7cmV0dXJuIHBmZX1zdGF0aWMgVm4oYSl7cmV0dXJuIHNmZT9zZmU6c2ZlPV8uVnooKS50aGVuKGI9PntiPW5ldyB0ZmUocGZlLGIpO2IuaW5pdGlhbGl6ZShhKTtyZXR1cm4gYn0pfX07Xy5aby5wanYyNmQ9Xy5Zbzt2YXIgdWZlPXtqNWI6Xy5CTGIsdW5iOm9mZSxtRmE6Xy5yTGJ9LHlmZSxBZmUsdmZlLHdmZSx4ZmU7Xy5ueWEoKTt5ZmU9ZnVuY3Rpb24oYSxiLGMpe3ZhciBkPWIua1ooKSxlPWIub2EoKSxmPSExO2EuQmEhPT1kJiYodmZlKGEsZCksZj0hMCk7YS5vYSE9PWUmJih3ZmUoYSxlLGU/YS5FYTohMSksZj0hMCk7aWYoZiYmYz09PSJJYUxUR2IiKXtsZXQgZzsoZz1hLlBtKT09bnVsbHx8Zy5oWmEoKX1jPT09IklhTFRHYiImJmEuSWEhPT1udWxsJiYoYz1hLklhPzE6MixiLndhKCkhPT1jJiZ4ZmUoYSkpfTtBZmU9ZnVuY3Rpb24oYSl7YS5jTigpP18uZmZlKGEuTGssNTApOihfLnpmZShhLDApLGEuS2E9MCxhPWEuTGssXy5mZmUoYSxhLm9hKSl9O18uQmZlPWZ1bmN0aW9uKGEpe3ZhciBiLGM7cmV0dXJuKGM9KGI9YS5QbSk9PW51bGw/dm9pZCAwOmIuVXhjKCkpIT1udWxsP2M6ITF9OwpfLkNmZT1mdW5jdGlvbihhKXt2YXIgYixjO3JldHVybihjPShiPWEuUG0pPT1udWxsP3ZvaWQgMDpiLmJ5YygpKSE9bnVsbD9jOiExfTt2ZmU9ZnVuY3Rpb24oYSxiKXthLkJhPWI7QWZlKGEpO2EuclJ8fGEuZEsoYS5rYSgpKTthLm5vdGlmeSgiRlU4ZHBkIik7Xy5aZyhkb2N1bWVudC5ib2R5LCJxQmk4d2MiLGEuY04oKSl9O3dmZT1mdW5jdGlvbihhLGIsYz0hMSl7YS5vYT1iO2EuRWE9YztBZmUoYSk7YS5ub3RpZnkoImJ5OWpXIik7Xy5aZyhkb2N1bWVudC5ib2R5LCJxQmk4d2MiLGEuY04oKSl9O3hmZT1mdW5jdGlvbihhKXthLklhIT09bnVsbCYmdWZlLm1GYSYmYS53YS50cmFuc2l0aW9uKGI9PntiLkFhKGEuSWE/MToyKTtyZXR1cm4gYn0pLnJ1bihfLmJBKHtyZXBsYWNlOiEwfSkpfTsKXy5EZmU9ZnVuY3Rpb24oYSl7aWYoIWEuY04oKSlyZXR1cm4gMDtzd2l0Y2goYS5CYSl7Y2FzZSAxOmNhc2UgMjpyZXR1cm4gdWZlLnVuYj8zOjF9cmV0dXJuIF8uQ2ZlKGEpP3VmZS51bmI/MzoxOmEuTmE/YS5OYTp1ZmUudW5iPzM6MX07Xy56ZmU9ZnVuY3Rpb24oYSxiKXt2YXIgYz1iPT09Xy5EZmUoYSk7YS5OYT1iO2M/KGI9YS5vYSYmIWEua2EoKSxjPV8uQmZlKGEpfHxfLkNmZShhKSxiJiYhYyYmYS5kSyghMSkpOmEuY04oKXx8Yj09PTB8fGEuZEsoITApfTsKXy5FZmU9Y2xhc3MgZXh0ZW5kcyBfLkVpe3N0YXRpYyBRYSgpe3JldHVybntzZXJ2aWNlOntLbmE6Xy5kYWV9LG1vZGVsOntHcjpfLmVLLExrOl8uaGZlLFZvOl8uWSRkfSxMbDp7UG06Xy5GWmF9LG9lOntJdmM6dGZlfX19Y29uc3RydWN0b3IoYSl7c3VwZXIoKTt0aGlzLk5hPXRoaXMuQmE9MDt0aGlzLm9hPSExO3RoaXMuSWE9bnVsbDt0aGlzLkthPTA7dGhpcy5FYT0hMTt0aGlzLnJSPV8ubmkodGhpcy5nZXREYXRhKCJocCIpLCExKTt0aGlzLlBtPWEuTGwuUG07dmFyIGI7KGI9YS5zZXJ2aWNlLktuYSkhPW51bGwmJihiLmthPXRoaXMpO2EubW9kZWwuR3Iua2EoXy5TZGUsdGhpcyk7dGhpcy5Maz1hLm1vZGVsLkxrO2I9YS5tb2RlbC5Wbzt0aGlzLndhPWEub2UuSXZjO3VmZS5tRmEmJih0aGlzLndhLmxpc3RlbigoYyxkKT0+e3lmZSh0aGlzLGMsZCl9KSxfLnNtYSgpP3lmZSh0aGlzLHRoaXMud2EuZ2V0KCkpOnRoaXMucmVzZXQoKSxfLlgkZChiLCgpPT57KDAsXy5tZikoKCk9Pgp7QWZlKHRoaXMpfSl9KSl9cDkoKXtyZXR1cm4gdGhpcy5LYX1aUChhKXthIT09dGhpcy5CYSYmKHVmZS5tRmE/dGhpcy53YS50cmFuc2l0aW9uKGI9PntiLlpQKGEpO3JldHVybiBifSkucnVuKCk6dmZlKHRoaXMsYSkpfWtaKCl7cmV0dXJuIHRoaXMuQmF9a2EoKXtyZXR1cm4gdGhpcy5CYSE9PTB9Y04oKXtyZXR1cm4gdGhpcy5vYXx8dGhpcy5rYSgpfWRLKGEsYj0hMSl7dmFyIGMsZCxlPSgoZD0oYz10aGlzLlBtKT09bnVsbD92b2lkIDA6Yy5uVSgpKSE9bnVsbD9kOjApPjA7Yz10aGlzLmthKCk7IXRoaXMuclImJihlfHxjKSYmIWF8fCFhJiZiJiYhdGhpcy5FYXx8dGhpcy5vYT09PWF8fCh1ZmUubUZhPyh0aGlzLkVhPWIsdGhpcy53YS50cmFuc2l0aW9uKGY9PntmLmRLKGEpO3JldHVybiBmfSkucnVuKCkpOndmZSh0aGlzLGEsYikpfXJlc2V0KCl7dWZlLm1GYT90aGlzLndhLnRyYW5zaXRpb24oYT0+e2EuWlAoMCk7YS5kSyghMSk7cmV0dXJuIGF9KS5ydW4oKToodGhpcy5aUCgwKSwKdGhpcy5kSyghMSwhMSkpfXNldExoc1BhbmVsU3RhdGUoYSl7dGhpcy5JYT1hO3hmZSh0aGlzKX1rb2MoKXt2YXIgYTsoYT10aGlzLlBtKT09bnVsbHx8YS5oWmEoKX1sb2MoKXt0aGlzLmthKCkmJih1ZmUubUZhP3RoaXMud2EudHJhbnNpdGlvbihhPT57YS5aUCgwKS5kSyghMSk7cmV0dXJuIGF9KS5ydW4oKToodGhpcy5aUCgwKSx0aGlzLmRLKCExKSkpfX07Xy5WcihfLm5mZSxfLkVmZSk7Cl8udigpOwp9Y2F0Y2goZSl7Xy5fRHVtcEV4Y2VwdGlvbihlKX0KdHJ5ewpfLkhZYj1mdW5jdGlvbihhKXtyZXR1cm4gXy50KGEsODYpfTtfLklZYj1mdW5jdGlvbihhKXtyZXR1cm4gXy50KGEsODgpfTtfLkpZYj1mdW5jdGlvbihhKXtyZXR1cm4gXy50KGEsNCl9O18uanc9ISEoXy5PaVsxOF0mMjU2KTsKfWNhdGNoKGUpe18uX0R1bXBFeGNlcHRpb24oZSl9CnRyeXsKXy5GZmU9ISEoXy5PaVs1Nl0+PjE0JjEpO18uR2ZlPSEhKF8uT2lbNTZdPj4xNSYxKTtfLkhmZT0hIShfLk9pWzU2XT4+MTcmMSk7Xy5JZmU9ISEoXy5PaVs1Nl0+PjE4JjEpOwp9Y2F0Y2goZSl7Xy5fRHVtcEV4Y2VwdGlvbihlKX0KdHJ5ewpfLnUoIlBFZmo0YiIpOwp2YXIgSmZlO0pmZT1bImFlcCIsKDEwNykudG9TdHJpbmcoKV07Xy5LZmU9bmV3IE1hcChbSmZlLFsiaW1nbiIsIjEiXV0pO18uTGZlPW5ldyBNYXAoW0pmZSxbImRyIiwiMSJdXSk7Xy5NZmU9bmV3IE1hcChbSmZlLFsicmMiLCIxIl1dKTtfLk5mZT1uZXcgTWFwKFtKZmVdKTsKXy52KCk7Cn1jYXRjaChlKXtfLl9EdW1wRXhjZXB0aW9uKGUpfQp0cnl7Cl8uSHU9ZnVuY3Rpb24oYSxiKXtyZXR1cm4gXy5TYihhLF8uRXAsMTUsYil9Owp9Y2F0Y2goZSl7Xy5fRHVtcEV4Y2VwdGlvbihlKX0KdHJ5ewpfLkJOYj1jbGFzcyBleHRlbmRzIF8ubHtjb25zdHJ1Y3RvcihhKXtzdXBlcihhKX19O18uQ05iPVswLFswLF8uR10sWzAsXy5HLC0yXSxbMCxfLkcsLTFdLFswLF8uR10sWzAsXy5HXV07Cn1jYXRjaChlKXtfLl9EdW1wRXhjZXB0aW9uKGUpfQp0cnl7CnZhciB4T2IsYU9iO18uWE5iPWZ1bmN0aW9uKGEsYixjLGQpe2M9ZD9jOmVuY29kZVVSSUNvbXBvbmVudChjKTtkPW5ldyBSZWdFeHAoIihbIz8mXSIrYSsiPSlbXiYjXSoiKTtyZXR1cm4gYj1kLnRlc3QoYik/Yi5yZXBsYWNlKGQsYFwkMSR7Y31gKTpiK2AmJHthfT0ke2N9YH07Xy5ZTmI9ZnVuY3Rpb24oYSxiKXt2YXIgYz1fLkpxYSgpLGQ9Yy5oc3N8fHt9O2Q9T2JqZWN0LmFzc2lnbih7fSxkKTtkW2FdPWI7Yy5oc3M9ZDtfLktxYShfLndnLGMsITApfTtfLkR2PWZ1bmN0aW9uKGEse3pjOmIsVG06Yyx1c2VyQWN0aW9uOmQsZGF0YTplLERCYTpmLHBhdGg6Z309e30pe3JldHVybiBaTmIoe3pjOmIsVG06Yyx1c2VyQWN0aW9uOmQscmlhOmEsZGF0YTplLERCYTpmLHBhdGg6Z30pfTtfLkV2PWZ1bmN0aW9uKGEse1RtOmIsdXNlckFjdGlvbjpjLGRhdGE6ZCxEQmE6ZSxwYXRoOmZ9PXt9KXtyZXR1cm4gWk5iKHt6YzphLFRtOmIsdXNlckFjdGlvbjpjLGRhdGE6ZCxEQmE6ZSxwYXRoOmZ9KX07CnhPYj1hc3luYyBmdW5jdGlvbih7emM6YSxUbTpiLHVzZXJBY3Rpb246YyxyaWE6ZCxkYXRhOmV9KXt2YXIgZj0oMCxfLk1mKSgpLGc9ZigpO2Y9ZigxKTt0cnl7JE5ifHwoJE5iPWYoYXdhaXQgZyhfLiRmKF8uZnIsXy5oYygpLmthKSkpKTtsZXQgaz0kTmIua2EoKTthJiYoaz1fLk5wKGssYSxjKSk7aWYoYnx8ZSl7bGV0IG09bmV3IF8uSHA7YiYmXy5HcChtLGIpO2lmKGUpe2FPYihlKTtsZXQgbj1uZXcgXy5SZSgiIik7Zm9yKGxldCB4IGluIGUpbi5zZWFyY2hQYXJhbXMuc2V0KHgsZVt4XSk7dmFyIGg9bjtsZXQgcD1uZXcgYk9iLHI7cj1uZXcgXy5DdihoLnNlYXJjaFBhcmFtcyxwKTtfLnd2KHIsImN0IixwLlloYyxwLk56KTtfLnd2KHIsImNhZCIscC5PaGMscC5RQ2EpO18ud3YociwidXJsIixwLndkLHAucmIpO18ud3YociwibWlkIixwLkljLHAuUGEpO18ud3YociwiZnVuIixwLklkYyxwLkpzKTtfLnh2KHIsImFsdGltYWdlc3NlZW4iLHAuc2djLHAuTGQpO18ueHYociwiYXV0b3N3aXBlcyIsCnAuY2pjLHAuemcpO18ud3YociwicHJlZGljYXRlIixwLk1nYyxwLnpVYyk7Xy53dihyLCJmaWx0ZXJ0ZXh0IixwLlhiLHAuTmEpO18ud3YociwiY3NoaWQiLHAuU2pjLHAuVmcpO18ueXYociwiY2xkIixwLkFrYyxwLncwKTtfLnl2KHIsImZsYiIscC5Fa2MscC5BMCk7Xy54dihyLCJqbCIscC5KcWMscC5WTCk7Xy54dihyLCJsZ2QiLHAuUGhjLHAuRE5hKTtfLnh2KHIsIm1sdCIscC5JeWMscC5XTCk7Xy54dihyLCJsdGQiLHAuQWhjLHAubDJhKTtfLnl2KHIsImx2YyIscC5DQ2MscC5pUSk7Xy55dihyLCJwb3oiLHAudkRjLHAualEpO18ueXYociwicW9wIixwLktHYyxwLmtRKTtfLnl2KHIsIm10bCIscC5vS2MscC5sVik7Xy54dihyLCJ6bGQiLHAuWmhjLHAuRU5hKTtfLnd2KHIsImFnc2FjIixwLkVmYyxwLm9FKTtfLnZ2KHIsInBudHN0IixwLkxnYyxjT2IscC5OQ2EpO18ueHYociwicG50ZmMiLHAudWdjLHAuRENhKTtfLnd2KHIsInBudGUiLHAucGdjLHAucENhKTtfLnd2KHIsInNmYyIsCnAucmtjLHAua2hiKTtfLnh2KHIsImlxaWR4IixwLmxmYyxwLkJ0KTtfLnd2KHIsInNlZ21lbnRfdGV4dCIscC5paGMscC5TRik7Xy53dihyLCJjcnVzdCIscC5Ea2MscC5yayk7Xy55dihyLCJzY2FzIixwLlVqYyxwLlpnYik7Xy53dihyLCJkc3EiLHAuVmpjLHAucGZjKTtfLnd2KHIsImRkcSIscC5GamMscC5rZmMpO18ud3YociwicHJvdiIscC5naWMscC5VRik7Xy53dihyLCJzZXJ2IixwLkdpYyxwLkNTKTtfLnd2KHIsInRyIixwLmRqYyxwLkRTKTtfLnd2KHIsIndlYnAiLHAuRGpjLHAuRlMpO18udnYociwiZnBjIixwLmhjLGRPYixwLk9hKTtfLnh2KHIsInNpZHgiLHAuZmpjLHAuWmVjKTtfLnh2KHIsImJpZHgiLHAuYWljLHAuWGRjKTtfLnh2KHIsImlkeCIscC5qaWMscC5yZWMpO18ueHYociwic3RtdCIscC5JaWMscC5FZWMpO18ud3YociwiaXRlbSIscC5EdWMscC5layk7Xy52dihyLCJhY3Rpb24iLHAuSHljLGVPYixwLlVqKTtfLnd2KHIsImhsIixwLk9iLHAuRWEpO18udnYociwKImFmdGVyIixwLkNVYyxmT2IscC5CamMpO18ueHYociwiY3N0IixwLmFlYyxwLnNrYyk7Xy52dihyLCJpbnRlcmFjdGlvbiIscC55ZGMsZ09iLHAuY2tjKTtfLnd2KHIsImxhbmciLHAuTEdjLHAuRGljKTtfLnd2KHIsInNsIixwLktkYyxwLm9rYyk7Xy53dihyLCJ0bCIscC5zZXRUcmFuc2xhdGlvblRhcmdldExhbmd1YWdlLHAuY2xlYXJUcmFuc2xhdGlvblRhcmdldExhbmd1YWdlKTtfLnZ2KHIsInN0cCIscC5wS2MsaE9iLHAuYmpjKTtfLnh2KHIsInFsIixwLkhVYyxwLlJqYyk7Xy52dihyLCJldmVudCIscC5IZWMsaU9iLHAuQ2tjKTtfLnZ2KHIsInNwa3IiLHAuY2ZjLGpPYixwLnZ5Yyk7Xy54dihyLCJ0ZXh0bGVuIixwLm5mYyxwLkdHYyk7Xy54dihyLCJ0aW1lIixwLnVlYyxwLnlrYyk7Xy52dihyLCJ2b2ljZSIscC5zZmMsa09iLHAubUtjKTtfLnd2KHIsImxlaSIscC5la2MscC5qVik7Xy53dihyLCJjaWQiLHAudGVjLHAua2phKTtfLnd2KHIsIm9pZCIscC5tZmMscC54emEpOwpfLnl2KHIsInN1YnNjcmliZWQiLHAucmZjLHAuWEJhKTtfLnh2KHIsImNhdGVnb3J5aWQiLHAuR2VjLHAub2phKTtfLnZ2KHIsIm1va2FzIixwLmJmYyxsT2IscC5TeWEpO18uUk5iKHIsInRvcFByb2R1Y3RJZHMiLHAuR2ZjLF8ua0phLCEwKTtfLnd2KHIsImFxaWQiLHAuQWIscC5vYSk7Xy54dihyLCJhcmZwaSIscC55aGMscC5aZCk7Xy54dihyLCJhcmZzaWkiLHAuTmhjLHAuQmUpO18ueXYociwiYXJmYmFjIixwLmhoYyxwLnFlKTtfLnh2KHIsImF1dGh1c2VyIixwLkpiLHAuQmEpO18ueXYociwiaXNOYXRpb25hbE1hcCIscC50Z2MscC5DRSk7Xy54dihyLCJyYWRpdXMiLHAuemtjLHAuTWkpO18ud3Yociwic2FianRpIixwLkZlYyxwLldxKTtfLnZ2KHIsInZ3ZCIscC5CaGMsbU9iLHAudWRjKTtfLnZ2KHIsInZwcCIscC5raGMsbk9iLHAuSVVjKTtfLnZ2KHIsInN0bCIscC5rZCxvT2IscC5aYSk7Xy52dihyLCJwcm51aWQiLHAuamhjLHBPYixwLk9DYSk7Xy55dihyLCJqYmRfcGRhX3MiLApwLktnYyxwLnVIKTtfLnd2KHIsImV2ZW50ZGF0ZSIscC5RYixwLklhKTtfLnd2KHIsImV2ZW50bmFtZSIscC5QYixwLkthKTtfLnh2KHIsImNkb3QiLHAucGtjLHAuUUwpO18ud3YociwibXNrYiIscC5aVGMscC5tVik7Xy53dihyLCJzaGRlYiIscC56aGMscC5OQik7Xy52dihyLCJtZmwiLHAucWtjLHFPYixwLnQwKTtfLlNOYihyLCJyYmlzZHAiLHAuaGljKTtfLnZ2KHIsImxwbCIscC5UamMsck9iLHAuSlMpO18ueXYociwiaWxzX2h1aSIscC5ZZGMscC5qdSk7Xy54dihyLCJpbHNfbm9pIixwLkJVYyxwLkIwKTtfLnd2KHIsImlsc19vZGwiLHAuTFVjLHAublYpO18ud3YociwiaWxzX3NyY2wiLHAudmtjLHAubGdjKTtfLnd2KHIsImlsc190cmd0bCIscC5Ga2MscC5IZ2MpO18ud3YociwiaWxzY19jZGwiLHAuanNjLHAua2opO18ueXYociwiaWxzY19odWkiLHAuc2VjLHAua3UpO18ueHYociwiaWxzY19ub2kiLHAuR1VjLHAuQzApO18ud3YociwiaWxzY19vZGwiLHAud2RjLHAub1YpOwpfLnd2KHIsInNvdXJjZSIscC5TeSxwLm5iKTtfLnh2KHIsInVkbSIscC5VYyxwLlNhKTtfLnZ2KHIsIm1ydCIscC51a2Msc09iLHAudTApO18ueXYociwiaXNBbHRQcmZsIixwLnFmYyxwLlB3KTtfLnl2KHIsImFsdFByZmxUeXBlIixwLkZmYyxwLlJ3KTtfLnl2KHIsImlzQWx0UHJmbE9iZCIscC5uZ2MscC5QRCk7Xy54dihyLCJhbHRQcmZsU3QiLHAuRmIscC53YSk7Xy54dihyLCJhcEVsZ09iZFN0IixwLm1nYyxwLkZkKTtfLnh2KHIsInNjdXRyZXEiLHAuRENjLHAuZGljKTtfLnh2KHIsInNjdWZyZXEiLHAuQVVjLHAubG4pO18ud3Yociwic2N1bGFuZyIscC5LVWMscC53byk7Xy55dihyLCJzY3VjcHRuIixwLmRrYyxwLldoKTtfLnh2KHIsInNjdXRjbCIscC5KeWMscC5XaGMpO18ueHYociwic2N1Y2NsIixwLnRrYyxwLlJMKTtfLnh2KHIsInNjdWJhbGwiLHAuQ2pjLHAuQ2cpO18ueHYociwic2N1Y250IixwLmFmYyxwLkNzKTtfLnh2KHIsInNjdXBhdXNlIixwLlpkYyxwLnQkKTsKXy54dihyLCJzY3VhZGUiLHAubktjLHAueG0pO18ueHYociwic2N1YXJlcSIscC5McWMscC5NaGMpO18ueHYociwic2N1YWZyZXEiLHAuYlNjLHAuc2JhKTtfLnl2KHIsInNjdWFmcyIscC5maWMscC5IZik7Xy55dihyLCJzY3VhZmYiLHAuWGhjLHAuUWUpO18ud3YociwiYXBwIixwLkliLHAuQWEpO18udnYociwiYWlzIixwLklnYyx0T2IscC5RZCk7Xy52dihyLCJwbGYiLHAuUGMsdU9iLHAuUmEpO18ud3YociwicGhldHMiLHAuSmRjLHAuTzkpO18ueHYociwidGFzdCIscC5JbGMscC5zaGMpO18ueHYociwidGFzZCIscC5FaWMscC5QZik7Xy54dihyLCJ0YWQiLHAucWdjLHAuYVNjKTtfLnh2KHIsInRsdCIscC52Z2MscC5SVGMpO18ueHYociwidGFkc2UiLHAuSGZjLHAuSVFjKTtfLnd2KHIsInNsZmVlZCIscC52ZGMscC55cSk7Xy53dihyLCJzbHJlcSIscC5lamMscC5JTmEpO18ud3Yociwic2xzaWciLHAuZmtjLHAuZGhiKTtfLnd2KHIsInNsdHJpcCIscC5IaWMscC5GTmEpO18ud3YociwKInNscmVzcCIscC5FamMscC5LTmEpO18ud3Yociwic2xmc3EiLHAuQmtjLHAucmdjKTtfLnd2KHIsImRiamsiLHAuQkNjLHAuSmspO18ueHYociwidmRhZHRzIixwLlFoYyxwLkhkYyk7Xy5IdShtLChuZXcgXy5FcCkua2Eodk9iLHApKX1rPV8uUnAoayxtKX1pZihkKWZvcihsZXQgbSBvZiBkKWs9Xy5QcChrLG0uZWxlbWVudCx3T2JbbS50eXBlXSk7ay5sb2coKX1maW5hbGx5e2coKX19O2FPYj1mdW5jdGlvbihhKXt2YXIgYj1bXTtmb3IobGV0IGMgaW4gYSl5T2IuaGFzKGMpfHxiLnB1c2goYyk7Yi5sZW5ndGg+MCYmXy5WZShFcnJvcigiR2ZgIitiKSl9O18uek9iPWZ1bmN0aW9uKGEsYil7dmFyIGM9W107Zm9yKGxldCBkPTA7ZDxhLnNpemUoKTtkKyspe2xldCBlPWEuZXEoZCk7Yi5jYWxsKHZvaWQgMCxlLGQpJiZjLnB1c2goYS5rYVtkXSl9cmV0dXJuIG5ldyBfLndvKGMpfTt2YXIgQU9iPWNsYXNzIGV4dGVuZHMgXy5se2NvbnN0cnVjdG9yKGEpe3N1cGVyKGEpfXdaKCl7cmV0dXJuIF8uRGUodGhpcywyKX19O3ZhciBCT2I9Y2xhc3MgZXh0ZW5kcyBfLmx7Y29uc3RydWN0b3IoYSl7c3VwZXIoYSl9fTt2YXIgQ09iPVswLF8uRixbMCxfLmdsLC0xLF8uWWtdXTt2YXIgRE9iPWNsYXNzIGV4dGVuZHMgXy5se2NvbnN0cnVjdG9yKGEpe3N1cGVyKGEpfX07dmFyIEVPYj1bMCxfLlRsXTt2YXIgRk9iPVswLF8uRywtMSxfLmlsLC0yLF8uYWxdO18uR09iPWNsYXNzIGV4dGVuZHMgXy5se2NvbnN0cnVjdG9yKGEpe3N1cGVyKGEpfWdldFBsYXllclR5cGUoKXtyZXR1cm4gXy5Paih0aGlzLDUpfVlCKCl7cmV0dXJuIF8udCh0aGlzLDYpfWdldFZpZGVvVXJsKCl7cmV0dXJuIF8udCh0aGlzLDcpfXVkYSgpe3JldHVybiBfLnBoKHRoaXMsNyl9fTt2YXIgSE9iPVswLFswLF8ucGwsLTgsXy5HLF8ucGxdLFswLEZPYixfLkcsXy5GLEZPYl0sWzAsXy5HLDEsXy5EXSxfLmlsLF8uRyxfLkUsLTEsMSxbMCxbMCxfLkcsLTEsXy5EXSxbMCxfLmlsLC0xLF8uRF0sXy5GLFswLF8uRyxfLnBsLF8uRF1dLFswLDEsXy5HLF8uRV0sXy5HLF8uRCxfLkUsXy5ELC0xXTtfLkdPYi5wcm90b3R5cGUub2E9Xy4kYihIT2IpO3ZhciBJT2I9Y2xhc3MgZXh0ZW5kcyBfLmx7Y29uc3RydWN0b3IoYSl7c3VwZXIoYSl9fTtfLkpPYj1jbGFzcyBleHRlbmRzIF8ubHtjb25zdHJ1Y3RvcihhKXtzdXBlcihhKX19O3ZhciBLT2I9Y2xhc3MgZXh0ZW5kcyBfLmx7Y29uc3RydWN0b3IoYSl7c3VwZXIoYSl9S3coKXtyZXR1cm4gXy50KHRoaXMsMyl9c2V0UmVzcG9uc2VUeXBlKGEpe3JldHVybiBfLlpoKHRoaXMsNCxhKX1nZXRRdWVyeSgpe3JldHVybiBfLnQodGhpcyw1KX1zZXRRdWVyeShhKXtyZXR1cm4gXy5maCh0aGlzLDUsYSl9fTt2YXIgTE9iPWNsYXNzIGV4dGVuZHMgXy5se2NvbnN0cnVjdG9yKGEpe3N1cGVyKGEpfXhkKCl7cmV0dXJuIF8udCh0aGlzLDIpfX07Xy5NT2I9Y2xhc3MgZXh0ZW5kcyBfLmx7Y29uc3RydWN0b3IoYSl7c3VwZXIoYSl9fTtfLk5PYj1bMSwyLDNdO3ZhciBiT2I9Y2xhc3MgZXh0ZW5kcyBfLmx7Y29uc3RydWN0b3IoYSl7c3VwZXIoYSl9WWhjKGEpe3JldHVybiBfLmZoKHRoaXMsMSxhKX1Oeigpe3JldHVybiBfLkdlKHRoaXMsMSl9T2hjKGEpe3JldHVybiBfLmZoKHRoaXMsMixhKX1RQ2EoKXtyZXR1cm4gXy5HZSh0aGlzLDIpfWdldFVybCgpe3JldHVybiBfLnQodGhpcywzKX13ZChhKXtyZXR1cm4gXy5maCh0aGlzLDMsYSl9cmIoKXtyZXR1cm4gXy5HZSh0aGlzLDMpfUVjKCl7cmV0dXJuIF8ucGgodGhpcywzKX14ZCgpe3JldHVybiBfLnQodGhpcyw0KX1JYyhhKXtyZXR1cm4gXy5maCh0aGlzLDQsYSl9UGEoKXtyZXR1cm4gXy5HZSh0aGlzLDQpfUlkYyhhKXtyZXR1cm4gXy5maCh0aGlzLDUsYSl9SnMoKXtyZXR1cm4gXy5HZSh0aGlzLDUpfXNnYyhhKXtyZXR1cm4gXy5sayh0aGlzLDYsYSl9TGQoKXtyZXR1cm4gXy5HZSh0aGlzLDYpfWNqYyhhKXtyZXR1cm4gXy5sayh0aGlzLDcsYSl9emcoKXtyZXR1cm4gXy5HZSh0aGlzLAo3KX1NZ2MoYSl7cmV0dXJuIF8uZmgodGhpcyw4LGEpfXpVYygpe3JldHVybiBfLkdlKHRoaXMsOCl9WGIoYSl7cmV0dXJuIF8uZmgodGhpcyw5LGEpfU5hKCl7cmV0dXJuIF8uR2UodGhpcyw5KX1TamMoYSl7cmV0dXJuIF8uZmgodGhpcywxMCxhKX1WZygpe3JldHVybiBfLkdlKHRoaXMsMTApfUFrYyhhKXtyZXR1cm4gXy4kaCh0aGlzLDExLGEpfXcwKCl7cmV0dXJuIF8uR2UodGhpcywxMSl9RWtjKGEpe3JldHVybiBfLiRoKHRoaXMsMTIsYSl9QTAoKXtyZXR1cm4gXy5HZSh0aGlzLDEyKX1KcWMoYSl7cmV0dXJuIF8ud2godGhpcywxMyxhKX1WTCgpe3JldHVybiBfLkdlKHRoaXMsMTMpfVBoYyhhKXtyZXR1cm4gXy53aCh0aGlzLDE0LGEpfUROYSgpe3JldHVybiBfLkdlKHRoaXMsMTQpfUl5YyhhKXtyZXR1cm4gXy53aCh0aGlzLDE1LGEpfVdMKCl7cmV0dXJuIF8uR2UodGhpcywxNSl9QWhjKGEpe3JldHVybiBfLndoKHRoaXMsMTYsYSl9bDJhKCl7cmV0dXJuIF8uR2UodGhpcywKMTYpfUNDYyhhKXtyZXR1cm4gXy4kaCh0aGlzLDE3LGEpfWlRKCl7cmV0dXJuIF8uR2UodGhpcywxNyl9dkRjKGEpe3JldHVybiBfLiRoKHRoaXMsMTgsYSl9alEoKXtyZXR1cm4gXy5HZSh0aGlzLDE4KX1LR2MoYSl7cmV0dXJuIF8uJGgodGhpcywxOSxhKX1rUSgpe3JldHVybiBfLkdlKHRoaXMsMTkpfW9LYyhhKXtyZXR1cm4gXy4kaCh0aGlzLDIwLGEpfWxWKCl7cmV0dXJuIF8uR2UodGhpcywyMCl9WmhjKGEpe3JldHVybiBfLmxrKHRoaXMsMjEsYSl9RU5hKCl7cmV0dXJuIF8uR2UodGhpcywyMSl9RWZjKGEpe3JldHVybiBfLmZoKHRoaXMsMjIsYSl9b0UoKXtyZXR1cm4gXy5HZSh0aGlzLDIyKX1MZ2MoYSl7cmV0dXJuIF8uWmgodGhpcywyMyxhKX1OQ2EoKXtyZXR1cm4gXy5HZSh0aGlzLDIzKX11Z2MoYSl7cmV0dXJuIF8ubGsodGhpcywyNCxhKX1EQ2EoKXtyZXR1cm4gXy5HZSh0aGlzLDI0KX1wZ2MoYSl7cmV0dXJuIF8uZmgodGhpcywyNSxhKX1wQ2EoKXtyZXR1cm4gXy5HZSh0aGlzLAoyNSl9cmtjKGEpe3JldHVybiBfLmZoKHRoaXMsMjYsYSl9a2hiKCl7cmV0dXJuIF8uR2UodGhpcywyNil9bGZjKGEpe3JldHVybiBfLmxrKHRoaXMsMjcsYSl9QnQoKXtyZXR1cm4gXy5HZSh0aGlzLDI3KX1paGMoYSl7cmV0dXJuIF8uZmgodGhpcywyOCxhKX1TRigpe3JldHVybiBfLkdlKHRoaXMsMjgpfURrYyhhKXtyZXR1cm4gXy5maCh0aGlzLDI5LGEpfXJrKCl7cmV0dXJuIF8uR2UodGhpcywyOSl9VWpjKGEpe3JldHVybiBfLiRoKHRoaXMsMzAsYSl9WmdiKCl7cmV0dXJuIF8uR2UodGhpcywzMCl9VmpjKGEpe3JldHVybiBfLmZoKHRoaXMsMzEsYSl9cGZjKCl7cmV0dXJuIF8uR2UodGhpcywzMSl9RmpjKGEpe3JldHVybiBfLmZoKHRoaXMsMzIsYSl9a2ZjKCl7cmV0dXJuIF8uR2UodGhpcywzMil9Z2ljKGEpe3JldHVybiBfLmZoKHRoaXMsMzMsYSl9VUYoKXtyZXR1cm4gXy5HZSh0aGlzLDMzKX1HaWMoYSl7cmV0dXJuIF8uZmgodGhpcywzNCxhKX1DUygpe3JldHVybiBfLkdlKHRoaXMsCjM0KX1kamMoYSl7cmV0dXJuIF8uZmgodGhpcywzNSxhKX1EUygpe3JldHVybiBfLkdlKHRoaXMsMzUpfURqYyhhKXtyZXR1cm4gXy5maCh0aGlzLDM2LGEpfUZTKCl7cmV0dXJuIF8uR2UodGhpcywzNil9aGMoYSl7cmV0dXJuIF8uWmgodGhpcywzNyxhKX1PYSgpe3JldHVybiBfLkdlKHRoaXMsMzcpfWZqYyhhKXtyZXR1cm4gXy5sayh0aGlzLDM4LGEpfVplYygpe3JldHVybiBfLkdlKHRoaXMsMzgpfWFpYyhhKXtyZXR1cm4gXy5sayh0aGlzLDM5LGEpfVhkYygpe3JldHVybiBfLkdlKHRoaXMsMzkpfWppYyhhKXtyZXR1cm4gXy5sayh0aGlzLDQwLGEpfXJlYygpe3JldHVybiBfLkdlKHRoaXMsNDApfUlpYyhhKXtyZXR1cm4gXy5sayh0aGlzLDQxLGEpfUVlYygpe3JldHVybiBfLkdlKHRoaXMsNDEpfUR1YyhhKXtyZXR1cm4gXy5maCh0aGlzLDQyLGEpfWVrKCl7cmV0dXJuIF8uR2UodGhpcyw0Mil9SHljKGEpe3JldHVybiBfLlpoKHRoaXMsNDMsYSl9VWooKXtyZXR1cm4gXy5HZSh0aGlzLAo0Myl9T2IoYSl7cmV0dXJuIF8uZmgodGhpcyw0NCxhKX1FYSgpe3JldHVybiBfLkdlKHRoaXMsNDQpfUNVYyhhKXtyZXR1cm4gXy5aaCh0aGlzLDQ1LGEpfUJqYygpe3JldHVybiBfLkdlKHRoaXMsNDUpfWFlYyhhKXtyZXR1cm4gXy5sayh0aGlzLDQ2LGEpfXNrYygpe3JldHVybiBfLkdlKHRoaXMsNDYpfXlkYyhhKXtyZXR1cm4gXy5aaCh0aGlzLDQ3LGEpfWNrYygpe3JldHVybiBfLkdlKHRoaXMsNDcpfUxHYyhhKXtyZXR1cm4gXy5maCh0aGlzLDQ4LGEpfURpYygpe3JldHVybiBfLkdlKHRoaXMsNDgpfUtkYyhhKXtyZXR1cm4gXy5maCh0aGlzLDQ5LGEpfW9rYygpe3JldHVybiBfLkdlKHRoaXMsNDkpfXNldFRyYW5zbGF0aW9uVGFyZ2V0TGFuZ3VhZ2UoYSl7cmV0dXJuIF8uZmgodGhpcyw1MCxhKX1jbGVhclRyYW5zbGF0aW9uVGFyZ2V0TGFuZ3VhZ2UoKXtyZXR1cm4gXy5HZSh0aGlzLDUwKX1wS2MoYSl7cmV0dXJuIF8uWmgodGhpcyw1MSxhKX1iamMoKXtyZXR1cm4gXy5HZSh0aGlzLAo1MSl9SFVjKGEpe3JldHVybiBfLmxrKHRoaXMsNTIsYSl9UmpjKCl7cmV0dXJuIF8uR2UodGhpcyw1Mil9SGVjKGEpe3JldHVybiBfLlpoKHRoaXMsNTMsYSl9Q2tjKCl7cmV0dXJuIF8uR2UodGhpcyw1Myl9Y2ZjKGEpe3JldHVybiBfLlpoKHRoaXMsNTQsYSl9dnljKCl7cmV0dXJuIF8uR2UodGhpcyw1NCl9bmZjKGEpe3JldHVybiBfLmxrKHRoaXMsNTUsYSl9R0djKCl7cmV0dXJuIF8uR2UodGhpcyw1NSl9dWVjKGEpe3JldHVybiBfLmxrKHRoaXMsNTYsYSl9eWtjKCl7cmV0dXJuIF8uR2UodGhpcyw1Nil9c2ZjKGEpe3JldHVybiBfLlpoKHRoaXMsNTcsYSl9bUtjKCl7cmV0dXJuIF8uR2UodGhpcyw1Nyl9ZWtjKGEpe3JldHVybiBfLmZoKHRoaXMsNTgsYSl9alYoKXtyZXR1cm4gXy5HZSh0aGlzLDU4KX10ZWMoYSl7cmV0dXJuIF8udGsodGhpcyw1OSxhKX1ramEoKXtyZXR1cm4gXy5HZSh0aGlzLDU5KX1tZmMoYSl7cmV0dXJuIF8udGsodGhpcyw2MCxhKX14emEoKXtyZXR1cm4gXy5HZSh0aGlzLAo2MCl9cmZjKGEpe3JldHVybiBfLiRoKHRoaXMsNjEsYSl9WEJhKCl7cmV0dXJuIF8uR2UodGhpcyw2MSl9R2VjKGEpe3JldHVybiBfLmxrKHRoaXMsNjIsYSl9b2phKCl7cmV0dXJuIF8uR2UodGhpcyw2Mil9YmZjKGEpe3JldHVybiBfLlNiKHRoaXMsQk9iLDYzLGEpfVN5YSgpe3JldHVybiBfLkdlKHRoaXMsNjMpfUdmYyhhKXtyZXR1cm4gXy56Yih0aGlzLDY0LGEsXy5ZY2EpfUFiKGEpe3JldHVybiBfLmZoKHRoaXMsNjUsYSl9b2EoKXtyZXR1cm4gXy5HZSh0aGlzLDY1KX15aGMoYSl7cmV0dXJuIF8ubGsodGhpcyw2NixhKX1aZCgpe3JldHVybiBfLkdlKHRoaXMsNjYpfU5oYyhhKXtyZXR1cm4gXy5sayh0aGlzLDY3LGEpfUJlKCl7cmV0dXJuIF8uR2UodGhpcyw2Nyl9aGhjKGEpe3JldHVybiBfLiRoKHRoaXMsODAsYSl9cWUoKXtyZXR1cm4gXy5HZSh0aGlzLDgwKX1KYihhKXtyZXR1cm4gXy5sayh0aGlzLDY4LGEpfUJhKCl7cmV0dXJuIF8uR2UodGhpcyw2OCl9dGdjKGEpe3JldHVybiBfLiRoKHRoaXMsCjY5LGEpfUNFKCl7cmV0dXJuIF8uR2UodGhpcyw2OSl9emtjKGEpe3JldHVybiBfLmxrKHRoaXMsNzAsYSl9TWkoKXtyZXR1cm4gXy5HZSh0aGlzLDcwKX1GZWMoYSl7cmV0dXJuIF8uZmgodGhpcyw3MSxhKX1XcSgpe3JldHVybiBfLkdlKHRoaXMsNzEpfUJoYyhhKXtyZXR1cm4gXy5TYih0aGlzLF8uR09iLDcyLGEpfXVkYygpe3JldHVybiBfLkdlKHRoaXMsNzIpfWtoYyhhKXtyZXR1cm4gXy5TYih0aGlzLF8uTU9iLDczLGEpfUlVYygpe3JldHVybiBfLkdlKHRoaXMsNzMpfWtkKGEpe3JldHVybiBfLlNiKHRoaXMsSU9iLDc0LGEpfVphKCl7cmV0dXJuIF8uR2UodGhpcyw3NCl9amhjKGEpe3JldHVybiBfLlNiKHRoaXMsRE9iLDc1LGEpfU9DYSgpe3JldHVybiBfLkdlKHRoaXMsNzUpfUtnYyhhKXtyZXR1cm4gXy4kaCh0aGlzLDc2LGEpfXVIKCl7cmV0dXJuIF8uR2UodGhpcyw3Nil9UWIoYSl7cmV0dXJuIF8uZmgodGhpcyw3NyxhKX1JYSgpe3JldHVybiBfLkdlKHRoaXMsNzcpfVBiKGEpe3JldHVybiBfLmZoKHRoaXMsCjc4LGEpfUthKCl7cmV0dXJuIF8uR2UodGhpcyw3OCl9cGtjKGEpe3JldHVybiBfLmxrKHRoaXMsNzksYSl9UUwoKXtyZXR1cm4gXy5HZSh0aGlzLDc5KX1aVGMoYSl7cmV0dXJuIF8uZmgodGhpcyw4MSxhKX1tVigpe3JldHVybiBfLkdlKHRoaXMsODEpfXpoYyhhKXtyZXR1cm4gXy5maCh0aGlzLDgyLGEpfU5CKCl7cmV0dXJuIF8uR2UodGhpcyw4Mil9cWtjKGEpe3JldHVybiBfLlNiKHRoaXMsS09iLDgzLGEpfXQwKCl7cmV0dXJuIF8uR2UodGhpcyw4Myl9aGljKGEpe3JldHVybiBfLnprKHRoaXMsODQsYSl9VGpjKGEpe3JldHVybiBfLlNiKHRoaXMsXy5KT2IsODUsYSl9SlMoKXtyZXR1cm4gXy5HZSh0aGlzLDg1KX1ZZGMoYSl7cmV0dXJuIF8uJGgodGhpcyw4NixhKX1qdSgpe3JldHVybiBfLkdlKHRoaXMsODYpfUJVYyhhKXtyZXR1cm4gXy5sayh0aGlzLDg3LGEpfUIwKCl7cmV0dXJuIF8uR2UodGhpcyw4Nyl9TFVjKGEpe3JldHVybiBfLmZoKHRoaXMsODgsYSl9blYoKXtyZXR1cm4gXy5HZSh0aGlzLAo4OCl9dmtjKGEpe3JldHVybiBfLmZoKHRoaXMsODksYSl9bGdjKCl7cmV0dXJuIF8uR2UodGhpcyw4OSl9RmtjKGEpe3JldHVybiBfLmZoKHRoaXMsOTAsYSl9SGdjKCl7cmV0dXJuIF8uR2UodGhpcyw5MCl9anNjKGEpe3JldHVybiBfLmZoKHRoaXMsOTEsYSl9a2ooKXtyZXR1cm4gXy5HZSh0aGlzLDkxKX1zZWMoYSl7cmV0dXJuIF8uJGgodGhpcyw5MixhKX1rdSgpe3JldHVybiBfLkdlKHRoaXMsOTIpfUdVYyhhKXtyZXR1cm4gXy5sayh0aGlzLDkzLGEpfUMwKCl7cmV0dXJuIF8uR2UodGhpcyw5Myl9d2RjKGEpe3JldHVybiBfLmZoKHRoaXMsOTQsYSl9b1YoKXtyZXR1cm4gXy5HZSh0aGlzLDk0KX1MZigpe3JldHVybiBfLnQodGhpcyw5NSl9U3koYSl7cmV0dXJuIF8uZmgodGhpcyw5NSxhKX1uYigpe3JldHVybiBfLkdlKHRoaXMsOTUpfVVvKCl7cmV0dXJuIF8uTGoodGhpcyw5NSl9VWMoYSl7cmV0dXJuIF8ubGsodGhpcyw5NixhKX1TYSgpe3JldHVybiBfLkdlKHRoaXMsOTYpfXVrYyhhKXtyZXR1cm4gXy5TYih0aGlzLApMT2IsOTcsYSl9dTAoKXtyZXR1cm4gXy5HZSh0aGlzLDk3KX1xZmMoYSl7cmV0dXJuIF8uJGgodGhpcyw5OCxhKX1Qdygpe3JldHVybiBfLkdlKHRoaXMsOTgpfUZmYyhhKXtyZXR1cm4gXy4kaCh0aGlzLDk5LGEpfVJ3KCl7cmV0dXJuIF8uR2UodGhpcyw5OSl9bmdjKGEpe3JldHVybiBfLiRoKHRoaXMsMTAwLGEpfVBEKCl7cmV0dXJuIF8uR2UodGhpcywxMDApfUZiKGEpe3JldHVybiBfLmxrKHRoaXMsMTAxLGEpfXdhKCl7cmV0dXJuIF8uR2UodGhpcywxMDEpfW1nYyhhKXtyZXR1cm4gXy5sayh0aGlzLDEwMixhKX1GZCgpe3JldHVybiBfLkdlKHRoaXMsMTAyKX1EQ2MoYSl7cmV0dXJuIF8ubGsodGhpcywxMDMsYSl9ZGljKCl7cmV0dXJuIF8uR2UodGhpcywxMDMpfUFVYyhhKXtyZXR1cm4gXy5sayh0aGlzLDEwNCxhKX1sbigpe3JldHVybiBfLkdlKHRoaXMsMTA0KX1LVWMoYSl7cmV0dXJuIF8uZmgodGhpcywxMDUsYSl9d28oKXtyZXR1cm4gXy5HZSh0aGlzLDEwNSl9ZGtjKGEpe3JldHVybiBfLiRoKHRoaXMsCjEwNixhKX1XaCgpe3JldHVybiBfLkdlKHRoaXMsMTA2KX1KeWMoYSl7cmV0dXJuIF8ubGsodGhpcywxMDcsYSl9V2hjKCl7cmV0dXJuIF8uR2UodGhpcywxMDcpfXRrYyhhKXtyZXR1cm4gXy5sayh0aGlzLDEwOCxhKX1STCgpe3JldHVybiBfLkdlKHRoaXMsMTA4KX1DamMoYSl7cmV0dXJuIF8ubGsodGhpcywxMDksYSl9Q2coKXtyZXR1cm4gXy5HZSh0aGlzLDEwOSl9YWZjKGEpe3JldHVybiBfLmxrKHRoaXMsMTEwLGEpfUNzKCl7cmV0dXJuIF8uR2UodGhpcywxMTApfVpkYyhhKXtyZXR1cm4gXy5sayh0aGlzLDExMSxhKX10JCgpe3JldHVybiBfLkdlKHRoaXMsMTExKX1uS2MoYSl7cmV0dXJuIF8ubGsodGhpcywxMTYsYSl9eG0oKXtyZXR1cm4gXy5HZSh0aGlzLDExNil9THFjKGEpe3JldHVybiBfLmxrKHRoaXMsMTE3LGEpfU1oYygpe3JldHVybiBfLkdlKHRoaXMsMTE3KX1iU2MoYSl7cmV0dXJuIF8ubGsodGhpcywxMTgsYSl9c2JhKCl7cmV0dXJuIF8uR2UodGhpcywxMTgpfWZpYyhhKXtyZXR1cm4gXy4kaCh0aGlzLAoxMTksYSl9SGYoKXtyZXR1cm4gXy5HZSh0aGlzLDExOSl9WGhjKGEpe3JldHVybiBfLiRoKHRoaXMsMTIwLGEpfVFlKCl7cmV0dXJuIF8uR2UodGhpcywxMjApfUliKGEpe3JldHVybiBfLmZoKHRoaXMsMTEyLGEpfUFhKCl7cmV0dXJuIF8uR2UodGhpcywxMTIpfUlnYyhhKXtyZXR1cm4gXy5aaCh0aGlzLDExMyxhKX1RZCgpe3JldHVybiBfLkdlKHRoaXMsMTEzKX1QYyhhKXtyZXR1cm4gXy5aaCh0aGlzLDExNCxhKX1SYSgpe3JldHVybiBfLkdlKHRoaXMsMTE0KX1KZGMoYSl7cmV0dXJuIF8uZmgodGhpcywxMTUsYSl9TzkoKXtyZXR1cm4gXy5HZSh0aGlzLDExNSl9SWxjKGEpe3JldHVybiBfLmxrKHRoaXMsMTIxLGEpfXNoYygpe3JldHVybiBfLkdlKHRoaXMsMTIxKX1FaWMoYSl7cmV0dXJuIF8ubGsodGhpcywxMjIsYSl9UGYoKXtyZXR1cm4gXy5HZSh0aGlzLDEyMil9cWdjKGEpe3JldHVybiBfLndoKHRoaXMsMTIzLGEpfWFTYygpe3JldHVybiBfLkdlKHRoaXMsMTIzKX12Z2MoYSl7cmV0dXJuIF8ud2godGhpcywKMTMyLGEpfVJUYygpe3JldHVybiBfLkdlKHRoaXMsMTMyKX1IZmMoYSl7cmV0dXJuIF8ud2godGhpcywxMzMsYSl9SVFjKCl7cmV0dXJuIF8uR2UodGhpcywxMzMpfXZkYyhhKXtyZXR1cm4gXy5zayh0aGlzLDEyNCxhKX15cSgpe3JldHVybiBfLkdlKHRoaXMsMTI0KX1lamMoYSl7cmV0dXJuIF8uc2sodGhpcywxMjUsYSl9SU5hKCl7cmV0dXJuIF8uR2UodGhpcywxMjUpfWZrYyhhKXtyZXR1cm4gXy5zayh0aGlzLDEyNixhKX1kaGIoKXtyZXR1cm4gXy5HZSh0aGlzLDEyNil9SGljKGEpe3JldHVybiBfLnNrKHRoaXMsMTI3LGEpfUZOYSgpe3JldHVybiBfLkdlKHRoaXMsMTI3KX1FamMoYSl7cmV0dXJuIF8uc2sodGhpcywxMjgsYSl9S05hKCl7cmV0dXJuIF8uR2UodGhpcywxMjgpfUJrYyhhKXtyZXR1cm4gXy5zayh0aGlzLDEyOSxhKX1yZ2MoKXtyZXR1cm4gXy5HZSh0aGlzLDEyOSl9QkNjKGEpe3JldHVybiBfLmZoKHRoaXMsMTMwLGEpfUprKCl7cmV0dXJuIF8uR2UodGhpcywxMzApfVFoYyhhKXtyZXR1cm4gXy5sayh0aGlzLAoxMzEsYSl9SGRjKCl7cmV0dXJuIF8uR2UodGhpcywxMzEpfX07dmFyIE9PYj1bMCxfLkNdO3ZhciBQT2I9WzAsXy5HLDIsWzAsWzIsMyw3XSxfLkUsXy5JbCxbMCxfLmlsLF8uRyxfLkQsLTNdLF8ubWwsMyxfLldsXSwxLF8uRV07dmFyIFFPYj1bMCxbMSwyXSxfLkdsLF8uSWwsWzAsWzMsNCw1LDYsNyw4LDksMTAsMTEsMTIsMTMsMTQsMTVdLF8uRSwtMSxfLm1sLC0zLF8uR2wsXy5JbCxbMCxfLmpsXSxfLklsLFswLF8uamxdLF8uV2wsLTEsXy4kayxfLkdsLF8uJGssXy53bF1dO3ZhciBST2I9WzAsXy5GLFswLFBPYixfLkYsWzAsXy5HLDEsXy5hbCwtMSxRT2JdXV07dmFyIFNPYj1bMCxQT2IsXy5HLF8uamxdO3ZhciBUT2I9WzAsXy5GLFswLF8uRSxST2IsT09iLF8uRixTT2JdXTt2YXIgVU9iPVswLFswLFswLFRPYixfLkYsWzAsXy5FLC0xXV0sWzAsVE9iLFswLF8uRixbMCxbMSwyLDMsNCw1LDYsNyw4LDksMTBdLF8uSWwsWzAsXy5HLFBPYixRT2IsXy5HXSxfLklsLFswLFBPYixRT2JdLF8uSWwsWzAsUE9iXSxfLklsLFswXSxfLklsLFswLFBPYixRT2IsXy5HXSxfLklsLFswLFBPYixfLkddLF8uSWwsWzAsU09iXSxfLklsLFswXSxfLklsLFswLFsxLDJdLF8uSWwsWzAsXy5GLFBPYl0sXy5JbCxbMCxST2JdXSxfLklsLFswXV0sMSxbMCxPT2JdXSxfLllrLF8uRV1dXTt2YXIgVk9iPVswLF8uRyxfLkQsXy5HLC0xLF8uTmwsLTEsXy5HLF8uRCwtMSxfLkcsXy5MciwtMSxfLkUsXy5HLF8uQ05iLF8uRF07Xy5KT2IucHJvdG90eXBlLm9hPV8uJGIoVk9iKTt2YXIgV09iPVswLF8uRyxfLkUsLTEsXy5HLF8uRSxfLlNsLF8uRixbMCxfLkUsXy5HXSxfLkVsLF8uRSxfLlNsLC0yLF8uRyxfLkUsXy5HXTt2YXIgWE9iPVswLF8uRSwtMV07dmFyIFlPYj1bMCxfLk5PYixfLklsLFswLF8uQyxfLmlsLC0xXSxfLklsLFswLF8uRyxfLmlsLF8uQ10sXy5EbF07Xy5NT2IucHJvdG90eXBlLm9hPV8uJGIoWU9iKTt2YXIgWk9iPV8uWGIoRE9iLEVPYiksdk9iPV8uVWIoMTE5LF8uRXAsYk9iKTtfLkZwWzExOV09WzAsXy5FLC00LF8uQywtMSxfLkUsLTIsXy5ELC0xLF8uYWwsLTMsXy5ELC0zLF8uQyxfLkUsXy5HLF8uQyxfLkUsLTEsXy5DLF8uRSwtMSxfLkQsXy5FLC01LF8uRyxfLkMsLTMsXy5FLF8uRyxfLkUsXy5HLF8uQyxfLkcsXy5FLC0yLF8uRyxfLkMsXy5HLC0xLF8uQywtMSxfLkcsXy5FLF8ubmwsLTEsXy5ELF8uQyxDT2IsXy5iRWEsXy5FLF8uQywtMixfLkQsXy5DLF8uRSxIT2IsWU9iLFVPYixFT2IsXy5ELF8uRSwtMSxfLkMsXy5ELF8uRSwtMSxXT2IsXy51bCxWT2IsXy5ELF8uQyxfLkUsLTMsXy5ELF8uQyxfLkUsLTEsXy5DLFhPYixfLkQsLTIsXy5DLC0zLF8uRSxfLkQsXy5DLC00LF8uRSxfLkcsLTEsXy5FLF8uQywtMixfLkQsLTEsXy5DLC0xLF8uYWwsXy5nbCwtNSxfLkUsXy5DLF8uYWwsLTFdO3ZhciBlT2I9ZnVuY3Rpb24oYSl7cmV0dXJue3NlbGVjdDoxLGRlc2VsZWN0OjJ9W2FdfTt2YXIgZE9iPWZ1bmN0aW9uKGEpe3JldHVybnt3ZWJocDoxfVthXX07dmFyIHRPYj1mdW5jdGlvbihhKXtyZXR1cm57MToxLDI6Mn1bYV19O3ZhciB1T2I9ZnVuY3Rpb24oYSl7cmV0dXJuezE6MSwyOjJ9W2FdfTt2YXIgY09iPWZ1bmN0aW9uKGEpe3JldHVybntzdWNjZXNzOjEsZXJyb3I6Mn1bYV19O3ZhciBmT2I9ZnVuY3Rpb24oYSl7cmV0dXJue2luaXQ6MSx0dHNfb246MixmZW1fdHRzX29uOjMsbWFzX3R0c19vbjo0LHNyY190dHNfb246NSx0dHNfb2ZmOjYsZmVtX3R0c19vZmY6NyxtYXNfdHRzX29mZjo4LHNyY190dHNfb2ZmOjksY2xlYXJfc291cmNlOjEwLHRvb19sb25nOjExLGVycm9yOjEyLGNvcHlfdGFyZ2V0OjEzLHN3YXA6MTQsbGFuZ19jaGFuZ2U6MTUsc3VnZ2VzdDoxNixpZ25vcmVTcGVsbGluZzoxNyxzb3VyY2VfZWRpdDoxOCx2b2ljZV9vbjoxOSx2b2ljZV9vZmY6MjAsbGVuc19vcGVuOjIxLGxlbnNfZmFpbDoyMixlZGl0OjIzLGVkaXRfY2FuY2VsOjI0LHBpY2tfYmlsaW5ndWFsOjI1LGFzc2lzdGFudF9jaGlwOjI2fVthXX07dmFyIGhPYj1mdW5jdGlvbihhKXtyZXR1cm57cmdscjoxLHJjbnQ6MixzcmNoOjN9W2FdfTt2YXIgZ09iPWZ1bmN0aW9uKGEpe3JldHVybntlZGl0OjEsdm9pY2U6Mn1bYV19O3ZhciBqT2I9ZnVuY3Rpb24oYSl7cmV0dXJue3RndDoxLHRndF9mZW06Mix0Z3RfbWFzOjMsc3JjOjR9W2FdfTt2YXIgaU9iPWZ1bmN0aW9uKGEpe3JldHVybnt0dHNzdGFydDoxLHR0c3N0b3A6Mix0dHNwbGF5c3RhcnQ6M31bYV19O3ZhciBrT2I9ZnVuY3Rpb24oYSl7cmV0dXJue3N0YXJ0OjEsc3RvcDoyLG9uc3RhcnQ6Myxub2lucHV0OjQsb25zcGVlY2hzdGFydDo1LGFib3J0OjZ9W2FdfTt2YXIgJE9iPV8uWGIoXy5KT2IsVk9iKTt2YXIgck9iPWZ1bmN0aW9uKGEpe3JldHVybiAkT2IoYSl9O3ZhciBhUGI9Xy5YYihLT2IsV09iKTt2YXIgcU9iPWZ1bmN0aW9uKGEpe3JldHVybiBhUGIoYSl9O3ZhciBiUGI9Xy5YYihMT2IsWE9iKTt2YXIgc09iPWZ1bmN0aW9uKGEpe3JldHVybiBiUGIoYSl9O3ZhciBsT2I9ZnVuY3Rpb24oYSl7dmFyIGI9Xy5PTmIua2EoYSk7YT1bXTtmb3IobGV0IGY9MDtmPGIubGVuZ3RoO2YrPTMpe3ZhciBjPWEsZD1jLnB1c2g7dmFyIGU9bmV3IEFPYjtlPV8uc2soZSwxLGJbZl0pO2U9Xy5zayhlLDIsYltmKzFdKTtlPV8ud2goZSwzLE51bWJlcihiW2YrMl0pKTtkLmNhbGwoYyxlKX1iPW5ldyBCT2I7cmV0dXJuIF8uSGooYiwxLGEpfTt2YXIgcE9iPWZ1bmN0aW9uKGEpe3JldHVybiBaT2IoYSl9O3ZhciBjUGI9Xy5YYihJT2IsVU9iKTt2YXIgb09iPWZ1bmN0aW9uKGEpe3JldHVybiBjUGIoYSl9O3ZhciBkUGI9Xy5YYihfLk1PYixZT2IpO3ZhciBuT2I9ZnVuY3Rpb24oYSl7cmV0dXJuIGRQYihhKX07dmFyIGVQYj1fLlhiKF8uR09iLEhPYik7dmFyIG1PYj1mdW5jdGlvbihhKXtyZXR1cm4gZVBiKGEpfTt2YXIgWk5iPXhPYixmUGI9eE9iLCROYix3T2I9e3Nob3c6MSxoaWRlOjIsaW5zZXJ0OjMsWyJkZWR1cGUtaW5zZXJ0Il06NCxjb3B5OjV9LHlPYj1uZXcgU2V0KCJjdCBjYWQgdXJsIG1pZCBmdW4gYWx0aW1hZ2Vzc2VlbiBhdXRvc3dpcGVzIHByZWRpY2F0ZSBmaWx0ZXJ0ZXh0IGNzaGlkIGNsZCBmbGIgamwgbGdkIG1sdCBsdGQgbHZjIHBveiBxb3AgbXRsIHpsZCBhZ3NhYyBwbnRzdCBwbnRmYyBwbnRlIHNmYyBpcWlkeCBzZWdtZW50X3RleHQgY3J1c3Qgc2NhcyBkc3EgZGRxIHByb3Ygc2VydiB0ciB3ZWJwIGZwYyBzaWR4IGJpZHggaWR4IHN0bXQgaXRlbSBhY3Rpb24gaGwgYWZ0ZXIgY3N0IGludGVyYWN0aW9uIGxhbmcgc2wgdGwgc3RwIHFsIGV2ZW50IHNwa3IgdGV4dGxlbiB0aW1lIHZvaWNlIGxlaSBjaWQgb2lkIHN1YnNjcmliZWQgY2F0ZWdvcnlpZCBtb2thcyB0b3BQcm9kdWN0SWRzIGFxaWQgYXJmcGkgYXJmc2lpIGFyZmJhYyBhdXRodXNlciBpc05hdGlvbmFsTWFwIHJhZGl1cyBzYWJqdGkgdndkIHZwcCBzdGwgcHJudWlkIGpiZF9wZGFfcyBldmVudGRhdGUgZXZlbnRuYW1lIGNkb3QgbXNrYiBzaGRlYiBtZmwgcmJpc2RwIGxwbCBpbHNfaHVpIGlsc19ub2kgaWxzX29kbCBpbHNfc3JjbCBpbHNfdHJndGwgaWxzY19jZGwgaWxzY19odWkgaWxzY19ub2kgaWxzY19vZGwgc291cmNlIHVkbSBtcnQgaXNBbHRQcmZsIGFsdFByZmxUeXBlIGlzQWx0UHJmbE9iZCBhbHRQcmZsU3QgYXBFbGdPYmRTdCBzY3V0cmVxIHNjdWZyZXEgc2N1bGFuZyBzY3VjcHRuIHNjdXRjbCBzY3VjY2wgc2N1YmFsbCBzY3VjbnQgc2N1cGF1c2Ugc2N1YWRlIHNjdWFyZXEgc2N1YWZyZXEgc2N1YWZzIHNjdWFmZiBhcHAgYWlzIHBsZiBwaGV0cyB0YXN0IHRhc2QgdGFkIHRsdCB0YWRzZSBzbGZlZWQgc2xyZXEgc2xzaWcgc2x0cmlwIHNscmVzcCBzbGZzcSBkYmprIHZkYWR0cyIuc3BsaXQoIiAiKSk7Xy5tbmE9KGEsYik9PmI/Xy5jbyhhLG5ldyBfLmJvKHtwYXRoOmJ9KSk6Xy5jbyhhKTtaTmI9ZnVuY3Rpb24oYSl7aWYoYS5EQmEpcmV0dXJuIGZQYihhKTthLmRhdGEmJmFPYihhLmRhdGEpO3JldHVybiBfLmluYShhKX07Cn1jYXRjaChlKXtfLl9EdW1wRXhjZXB0aW9uKGUpfQp0cnl7Cl8uZXo9ZnVuY3Rpb24oKXtyZXR1cm4gXy5jZShkb2N1bWVudC5ib2R5fHxkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQpfTtfLnhqYz1mdW5jdGlvbihhKXt2YXIgYj1wYXJzZUZsb2F0KF8ua24oYSwiaGVpZ2h0IikpO2lmKChpc05hTihiKXx8Yj09PTApJiZhLm9mZnNldEhlaWdodCl7Yj1fLnZJYShhKTtsZXQgYz1fLmxJYShhKTtiPWEub2Zmc2V0SGVpZ2h0LWIudG9wLWIuYm90dG9tLWMudG9wLWMuYm90dG9tfXJldHVybiBpc05hTihiKXx8YjwwPzA6Yn07Xy55amM9ZnVuY3Rpb24oYSl7dmFyIGI9cGFyc2VGbG9hdChfLmtuKGEsIndpZHRoIikpO2lmKChpc05hTihiKXx8Yj09PTApJiZhLm9mZnNldFdpZHRoKXtiPV8udklhKGEpO2xldCBjPV8ubElhKGEpO2I9YS5vZmZzZXRXaWR0aC1iLmxlZnQtYi5yaWdodC1jLmxlZnQtYy5yaWdodH1yZXR1cm4gaXNOYU4oYil8fGI8MD8wOmJ9OwpfLnpqYz1mdW5jdGlvbihhKXthIT1udWxsJiZfLnduKGEpJiZfLk5kJiYoYS5zdHlsZS5kaXNwbGF5PSJub25lIixfLlppKGEub2Zmc2V0SGVpZ2h0KSxhLnN0eWxlLmRpc3BsYXk9IiIpfTsKfWNhdGNoKGUpe18uX0R1bXBFeGNlcHRpb24oZSl9CnRyeXsKdmFyIFdmZSxVZmUsVmZlLFlmZSxYZmUsYWdlLFpmZSwkZmU7Xy5UZmU9ZnVuY3Rpb24oYSxiKXtyZXR1cm4gbmV3IF8uU2ZlKGEsYiwwLCgpPT4hMCwhMCl9OwpXZmU9ZnVuY3Rpb24oYSl7YS5BYT0oKT0+e1VmZShhKX07YS5rYT0oKT0+e1ZmZShhKX07Xy5oZShhLnRhcmdldEVsZW1lbnQsIm1vdXNlb3ZlciIsYS5BYSk7Xy5oZShhLnRhcmdldEVsZW1lbnQsIm1vdXNlb3V0IixhLmthKTtfLmhlKGEudGFyZ2V0RWxlbWVudCwiZm9jdXMiLGEuQWEpO18uaGUoYS50YXJnZXRFbGVtZW50LCJmb2N1c2luIixhLkFhKTtfLmhlKGEudGFyZ2V0RWxlbWVudCwiYmx1ciIsYS5rYSk7Xy5oZShhLnRhcmdldEVsZW1lbnQsImZvY3Vzb3V0IixhLmthKTtfLmhlKGEudGFyZ2V0RWxlbWVudCwibW91c2Vkb3duIixhLmthKTtfLmhlKGEudGFyZ2V0RWxlbWVudCwiY2xpY2siLGEua2EpO18uaGUoYS50YXJnZXRFbGVtZW50LCJrZXlkb3duIixhLmthKTtfLmhlKGEudGFyZ2V0RWxlbWVudCwiY29udGV4dG1lbnUiLGEua2EpfTsKVWZlPWZ1bmN0aW9uKGEpe2EuSWEmJmEuSWEoKSYmYS5CYT09bnVsbCYmKHdpbmRvdy5jbGVhclRpbWVvdXQoYS53YSksYS53YT1udWxsLGEuQmE9d2luZG93LnNldFRpbWVvdXQoKCk9PlhmZShhKSwxMzApKX07VmZlPWZ1bmN0aW9uKGEpe2Eud2E9PW51bGwmJih3aW5kb3cuY2xlYXJUaW1lb3V0KGEuQmEpLGEuQmE9bnVsbCxhLndhPXdpbmRvdy5zZXRUaW1lb3V0KCgpPT5ZZmUoYSksMTMwKSl9O1lmZT1mdW5jdGlvbihhKXthLm9hJiYoYS5OYSYmKGEuR2EmJihfLnpuKGEub2EsIm1vdXNlb3ZlciIsYS5HYSksYS5HYT1udWxsKSxhLkVhJiYoXy56bihhLm9hLCJtb3VzZW91dCIsYS5FYSksYS5FYT1udWxsKSksXy5ZbShhLm9hKSxhLm9hPW51bGwsYS5LYT1udWxsLGEud2E9bnVsbCxfLiRnKGRvY3VtZW50LGEudGFyZ2V0RWxlbWVudCl8fGEuZGVzdHJveSgpKX07ClhmZT1mdW5jdGlvbihhKXtpZighXy4kZyhkb2N1bWVudCxhLnRhcmdldEVsZW1lbnQpKWEuZGVzdHJveSgpO2Vsc2UgaWYoIWEub2Epe3ZhciBiPVpmZShhKTthLm9hPWI7dmFyIGM9JGZlKGEpOyhhLkthPWMpJiZiLmFwcGVuZENoaWxkKGMpO2RvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoYik7YWdlKGEsYS50YXJnZXRFbGVtZW50KTtiLnN0eWxlLnZpc2liaWxpdHk9InZpc2libGUiO2EuQmE9bnVsbDthLk5hJiYoYS5HYT0oKT0+e3dpbmRvdy5jbGVhclRpbWVvdXQoYS53YSk7YS53YT1udWxsfSxhLkVhPSgpPT57VmZlKGEpfSxfLmhlKGIsIm1vdXNlb3ZlciIsYS5HYSksXy5oZShiLCJtb3VzZW91dCIsYS5FYSkpfX07CmFnZT1mdW5jdGlvbihhLGIpe3ZhciBjPV8ubW4oYiksZD1iLm9mZnNldFdpZHRoLGU9Yy54LGY9YS5vYS5vZmZzZXRXaWR0aCxnPXtsZWZ0OjAsdG9wOjAsR1FjOmMueCxoSGQ6Yy55fTtpZihhLmFsaWdubWVudD09PTApe2cubGVmdD1kLzItZi8yK2U7dmFyIGg9Xy5nSygxLCEwKTtnLmxlZnQrZj5oP2cubGVmdD1lK2QtZisxOmcubGVmdDwwJiYoZy5sZWZ0PWUtMSl9ZWxzZSBoPV8uZXooKSxnLmxlZnQ9YS5hbGlnbm1lbnQ9PT0zfHxhLmFsaWdubWVudD09PTEmJmg/ZStkLWYrMTplLTE7Zy50b3A9Yy55K2Iub2Zmc2V0SGVpZ2h0KzU7ZD1hLm9hO2Quc3R5bGUubGVmdD1nLmxlZnQrInB4IjtkLnN0eWxlLnRvcD1nLnRvcCsicHgiO2M9YS5LYTthLmFsaWdubWVudD09PTA/Yy5zdHlsZS5sZWZ0PWcuR1FjK2Iub2Zmc2V0V2lkdGgvMi1kLm9mZnNldExlZnQtMS02KyJweCI6KGI9Xy5leigpLGEuYWxpZ25tZW50PT09M3x8YS5hbGlnbm1lbnQ9PT0xJiZiP2Muc3R5bGUucmlnaHQ9IjE4cHgiOgpjLnN0eWxlLmxlZnQ9IjE4cHgiKX07ClpmZT1mdW5jdGlvbihhKXt2YXIgYj1fLlJtKCJESVYiLHZvaWQgMCxhLlBhKTthPSJiYWNrZ3JvdW5kOiIrYS50aSgpKyI7Ym9yZGVyOjFweCBzb2xpZDtib3JkZXItY29sb3I6IisoYS5veD8iIzNjNDA0MyI6IiNmZmYiKSsiO2JveC1zaGFkb3c6MXB4IDJweCA0cHggcmdiYSgwLDAsMCwwLjIpO2JveC1zaXppbmc6Ym9yZGVyLWJveDtjb2xvcjoiKyhhLm94PyIjYmRjMWM2IjoiI2ZmZiIpKyI7ZGlzcGxheTpibG9jaztmb250LXNpemU6MTFweDtmb250LXdlaWdodDpib2xkO2hlaWdodDoyOXB4O2xlZnQ6MDtsaW5lLWhlaWdodDoyOXB4O3BhZGRpbmc6MCAxMHB4O3Bvc2l0aW9uOmFic29sdXRlO3RleHQtYWxpZ246Y2VudGVyO3RvcDowO3RyYW5zaXRpb246b3BhY2l0eSAwLjEzczt3aGl0ZS1zcGFjZTpub3dyYXA7dmlzaWJpbGl0eTpoaWRkZW47ei1pbmRleDoyMDAwOyI7Xy5nYmEoKT9hKz0iLXdlYmtpdC1ib3gtc2hhZG93OjBweCAxcHggNHB4IHJnYmEoMCwwLDAsMC4yKTstd2Via2l0LWJveC1zaXppbmc6Ym9yZGVyLWJveDstd2Via2l0LXRyYW5zaXRpb246b3BhY2l0eSAwLjEzczsiOl8uaGJhKCk/CmErPSItbW96LWJveC1zaGFkb3c6MHB4IDFweCA0cHggcmdiYSgwLDAsMCwwLjIpOy1tb3otYm94LXNpemluZzpib3JkZXItYm94Oy1tb3otdHJhbnNpdGlvbjpvcGFjaXR5IDAuMTNzOyI6Xy5xYSgiUHJlc3RvIikmJihhKz0iLW8tdHJhbnNpdGlvbjpvcGFjaXR5IDAuMTNzOyIpO2Iuc3R5bGUuY3NzVGV4dD1hO3JldHVybiBifTsKJGZlPWZ1bmN0aW9uKGEpe3ZhciBiPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpO2Iuc3R5bGUuY3NzVGV4dD0iYm9yZGVyOjZweCBzb2xpZDtib3JkZXItY29sb3I6IisoYS5veD8iIzNjNDA0MyI6IiNmZmYiKSsiIHRyYW5zcGFyZW50O2JvcmRlci10b3Atd2lkdGg6MDtjb250ZW50OicnO2Rpc3BsYXk6YmxvY2s7Zm9udC1zaXplOjBweDtoZWlnaHQ6MDtsaW5lLWhlaWdodDowO3Bvc2l0aW9uOmFic29sdXRlO3RvcDotNnB4O3dpZHRoOjA7Ijt2YXIgYz1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTtjLnN0eWxlLmNzc1RleHQ9Yi5zdHlsZS5jc3NUZXh0O2Muc3R5bGUudG9wPSIxcHgiO2Muc3R5bGUubGVmdD0iLTZweCI7Yy5zdHlsZS5ib3JkZXJDb2xvcj1hLnRpKCkrIiB0cmFuc3BhcmVudCI7Yi5hcHBlbmRDaGlsZChjKTtyZXR1cm4gYn07Cl8uU2ZlPWNsYXNze2NvbnN0cnVjdG9yKGEsYixjPTAsZD0oKT0+ITAsZT0hMSl7dGhpcy5QYT1iO3RoaXMuYWxpZ25tZW50PWM7dGhpcy5OYT1lO3RoaXMud2E9dGhpcy5CYT10aGlzLkthPXRoaXMub2E9dGhpcy5FYT10aGlzLkdhPXRoaXMua2E9dGhpcy5BYT1udWxsO3RoaXMuT2E9ITE7dGhpcy50YXJnZXRFbGVtZW50PWE7dGhpcy5JYT1kO3RoaXMub3g9Xy5uaShfLkVvKGRvY3VtZW50LmJvZHkpLmdldERhdGEoImR0IiksITEpO2EuZ2V0QXR0cmlidXRlKCJhcmlhLWxhYmVsIik9PW51bGwmJmEuc2V0QXR0cmlidXRlKCJhcmlhLWxhYmVsIixiKTtXZmUodGhpcyl9ZGVzdHJveSgpe3RoaXMuT2F8fCh0aGlzLk9hPSEwLHdpbmRvdy5jbGVhclRpbWVvdXQodGhpcy5CYSksd2luZG93LmNsZWFyVGltZW91dCh0aGlzLndhKSxZZmUodGhpcyksXy56bih0aGlzLnRhcmdldEVsZW1lbnQsIm1vdXNlb3ZlciIsdGhpcy5BYSksXy56bih0aGlzLnRhcmdldEVsZW1lbnQsIm1vdXNlb3V0IiwKdGhpcy5rYSksXy56bih0aGlzLnRhcmdldEVsZW1lbnQsImZvY3VzIix0aGlzLkFhKSxfLnpuKHRoaXMudGFyZ2V0RWxlbWVudCwiZm9jdXNpbiIsdGhpcy5BYSksXy56bih0aGlzLnRhcmdldEVsZW1lbnQsImJsdXIiLHRoaXMua2EpLF8uem4odGhpcy50YXJnZXRFbGVtZW50LCJmb2N1c291dCIsdGhpcy5rYSksXy56bih0aGlzLnRhcmdldEVsZW1lbnQsIm1vdXNlZG93biIsdGhpcy5rYSksXy56bih0aGlzLnRhcmdldEVsZW1lbnQsImNsaWNrIix0aGlzLmthKSxfLnpuKHRoaXMudGFyZ2V0RWxlbWVudCwia2V5ZG93biIsdGhpcy5rYSksXy56bih0aGlzLnRhcmdldEVsZW1lbnQsImNvbnRleHRtZW51Iix0aGlzLmthKSx0aGlzLklhPXRoaXMua2E9dGhpcy5BYT10aGlzLnRhcmdldEVsZW1lbnQ9bnVsbCl9Z2V0TWVzc2FnZSgpe3JldHVybiB0aGlzLlBhfXRpKCl7cmV0dXJuIHRoaXMub3g/IiMyMDIxMjQiOiIjMmQyZDJkIn19Owp9Y2F0Y2goZSl7Xy5fRHVtcEV4Y2VwdGlvbihlKX0KdHJ5ewpfLmJnZT1fLmtjKCJQeW1DQ2UiLFtdKTsKfWNhdGNoKGUpe18uX0R1bXBFeGNlcHRpb24oZSl9CnRyeXsKXy51KCJQeW1DQ2UiKTsKXy5jZ2U9Y2xhc3MgZXh0ZW5kcyBfLmhze2NvbnN0cnVjdG9yKCl7c3VwZXIoKTt0aGlzLmthPXRoaXMuVmEoInBramFzYiIpO3RoaXMuc2VwYXJhdG9yPXRoaXMuVmEoInMxVmFSZSIpO3ZhciBhPXRoaXMua2EueWMoImFyaWEtbGFiZWwiKTtpZihhKXt2YXIgYj10aGlzLmthLmVsKCk7YiYmKF8uc0xifHxfLlRmZShiLGEpKX19b2EoYSl7Xy5FdihhLm9iLmVsKCkpO3RoaXMudHJpZ2dlcigiQWdoc2YiKX19O18uY2dlLnByb3RvdHlwZS4kd2EkQVZzbmxiPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMub2F9O18uanMoXy5iZ2UsXy5jZ2UpOwpfLnYoKTsKfWNhdGNoKGUpe18uX0R1bXBFeGNlcHRpb24oZSl9CnRyeXsKXy51KCJEVFJOSGQiKTsKXy5kZ2U9bmV3IFNldDsKXy52KCk7Cn1jYXRjaChlKXtfLl9EdW1wRXhjZXB0aW9uKGUpfQp0cnl7CnZhciBlZ2U9Xy5GaSgiRFRSTkhkIixbXSk7Xy5mZ2U9Xy5rYygiV25lQ2tlIixbZWdlXSk7Cn1jYXRjaChlKXtfLl9EdW1wRXhjZXB0aW9uKGUpfQp0cnl7Cl8udSgiV25lQ2tlIik7CnZhciBpZ2UsaGdlO18uZ2dlPWZ1bmN0aW9uKGEsYixjLGQpe3ZhciBlPSgpPT57dmFyIGY9YS5pbmRleE9mKGIpO2Y+LTEmJihhLnNwbGljZShmLDEpLGEubGVuZ3RoPT09MCYmYyYmYygpKX07ZCYmZC5hZGRPbkRpc3Bvc2VDYWxsYmFjayhlKTtyZXR1cm4gZX07CmlnZT1jbGFzcyBleHRlbmRzIF8uRWl7Y29uc3RydWN0b3IoKXt2YXIgYT1oZ2U7c3VwZXIoKTt0aGlzLkJhPVtdO3RoaXMud2E9bmV3IE1hcDt0aGlzLm9hPWE7dGhpcy5JYT10aGlzLkVhKGEpO3RoaXMua2E9T2JqZWN0LmFzc2lnbih7fSx0aGlzLm9hLHRoaXMuSWEpfW9uU3RhdGVDaGFuZ2UoYSxiKXt0aGlzLkJhLnB1c2goYSk7YSh0aGlzLmthLHRoaXMua2EpO3JldHVybiBfLmdnZSh0aGlzLkJhLGEsdm9pZCAwLGIpfWdldCBzdGF0ZSgpe3JldHVybiB0aGlzLmthfXNldCBzdGF0ZShhKXtpZihfLmRnZS5oYXModGhpcykpdGhyb3cgRXJyb3IoImVsIik7dmFyIGI9dGhpcy5rYTt0aGlzLm9hPWE7dGhpcy5JYT10aGlzLkVhKGEpO2E9dGhpcy5rYT1PYmplY3QuYXNzaWduKHt9LHRoaXMub2EsdGhpcy5JYSk7Xy5kZ2UuYWRkKHRoaXMpO3RyeXtmb3IodmFyIGMgb2ZbLi4udGhpcy5CYV0pYyhhLGIpO2ZvcihsZXQgW2QsZV1vZiB0aGlzLndhLmVudHJpZXMoKSl7Yz1kO2xldCBmPQplLGc9YyhhKSxoPWMoYik7aWYoZyE9PWgpZm9yKGxldCBrIG9mWy4uLmZdKWsoZyxoKX19ZmluYWxseXtfLmRnZS5kZWxldGUodGhpcyl9fU1mKGEpe3RoaXMuc3RhdGU9T2JqZWN0LmFzc2lnbih7fSx0aGlzLm9hLGEpfUVhKCl7cmV0dXJue319fTtoZ2U9e3F1ZXJ5OiIiLG11bHRpbGluZTohMSxYYmM6ITF9O18uamdlPWNsYXNzIGV4dGVuZHMgaWdle0thKGEsYixjPSEwKXtjP3RoaXMuTWYoe3F1ZXJ5OmEsbXVsdGlsaW5lOmIsWGJjOmJ9KTp0aGlzLk1mKHtxdWVyeTphLG11bHRpbGluZTpifSl9c2V0UXVlcnkoYSl7dGhpcy5NZih7cXVlcnk6YX0pfUVhKGEpe3JldHVybntpc0VtcHR5OmEucXVlcnkubGVuZ3RoPT09MH19fTtfLlZyKF8uZmdlLF8uamdlKTsKXy52KCk7Cn1jYXRjaChlKXtfLl9EdW1wRXhjZXB0aW9uKGUpfQp0cnl7Cl8ua2dlPV8ua2MoIkV0Q3g4YiIsW18uRVphLF8uZEtdKTsKfWNhdGNoKGUpe18uX0R1bXBFeGNlcHRpb24oZSl9CnRyeXsKXy51KCJFdEN4OGIiKTsKdmFyIGxnZT17clljOjAsU2lkOjgsbWtkOjE5LG5rZDoyMCwwOiJDQVRFR09SWV9VTlNQRUNJRklFRCIsODoiUFJFVklPVVNfU0VBUkNIX1JFTEFURURfRU5USVRZX0NISVBTIiwxOToiUklDSF9BTlNXRVIiLDIwOiJSSUNIX0VOVElUWV9QUkVWSUVXIn0sbWdlPWNsYXNze2NvbnN0cnVjdG9yKGEpe3RoaXMub2E9YTt0aGlzLmthPUFycmF5LmZyb20oe2xlbmd0aDp0aGlzLm9hLmxlbmd0aCsxfSkuZmlsbCgwKTt0aGlzLndhPXRoaXMub2FbdGhpcy5vYS5sZW5ndGgtMV19YWRkKGEpe2lmKGE+PXRoaXMud2EpdGhpcy5rYVt0aGlzLmthLmxlbmd0aC0xXSsrO2Vsc2V7bGV0IGI9MDtmb3IoO2I8dGhpcy5rYS5sZW5ndGgtMSYmYT49dGhpcy5vYVtiXTspYisrO3RoaXMua2FbYl0rK319RmMoKXt2YXIgYT1bXSxiPTA7Zm9yKGxldCBbYyxkXW9mIHRoaXMua2EuZW50cmllcygpKXtsZXQgZT1jLGY9ZDtmPT09MD9iKys6KGI9PT0wP2EucHVzaChTdHJpbmcoZikpOmI9PT0xPyhhLnB1c2goIjAiKSwKYS5wdXNoKFN0cmluZyhmKSkpOmEucHVzaChgJHtlfS0ke2Z9YCksYj0wKX1yZXR1cm4gYS5qb2luKCIuIil9fTt2YXIgbmdlPVsxMDAsMjAwLDMwMCw0MDAsNTAwLDcwMCwxRTMsMTUwMCwyRTNdLG9nZT1bMTAwLDIwMCwzMDAsNDAwLDYwMCw4MDAsMTEwMCwyMTAwLDMxMDBdLHBnZT1bMSwzLDgsMTksNDIsOTMsMjA2LDQ1NCwxRTNdLHFnZSxyZ2Usc2dlO18ubnlhKCk7cWdlPWZ1bmN0aW9uKGEpe18uSmRlKCgpPT5hLkliKCkpfTtyZ2U9ZnVuY3Rpb24oYSxiKXt2YXIgYyxkO3JldHVybigoYz1hLkxrKT09bnVsbD8wOmMua2EoKSk/KGQ9YS5Mayk9PW51bGw/dm9pZCAwOmQuS2EoKTpifTsKc2dlPWZ1bmN0aW9uKGEsYixjKXthLklhPWIubWFwKGQ9Pnt2YXIgZT1fLnVlZShkKTt2YXIgZj1wYXJzZUludChjLmthW2VdJiZjLmthW2VdWzNdLDEwKXx8MDtlPV8uTGVlKGMsZSk7aWYoZiE9PTB8fGUhPT0wKXt2YXIgZz1gJHtsZ2V9LSR7ZX1gO2lmKCFhLlNhLmhhcyhnKSl7dmFyIGg9YS5ncm91cHMubGVuZ3RoKzE7YS5TYS5zZXQoZyxoKTtoPV8uT2VlKGgpO2UhPT0wJiZfLm9rKGgsMixlKTtmIT09MCYmXy5vayhoLDMsZik7YS5ncm91cHMucHVzaChoKX1mPWEuU2EuZ2V0KGcpfWVsc2UgZj12b2lkIDA7ZD1fLkNlZShfLmplZSgobmV3IF8uYkspLkFjKGQuZ2V0VHlwZSgpKSxkLmthKCkpLGYpO2Y9Xy5PYSgoMCxfLnNlZSkoZCkpO2EuemVhLmhhcyhmKXx8YS56ZWEuc2V0KGYsZCk7cmV0dXJuIGR9KTtmb3IobGV0IFtkLGVdb2YgYS5RZC5lbnRyaWVzKCkpe2I9ZTtsZXQgZj1hLklhW2RdO2YmJl8uamVlKGYsWy4uLmYuclcoKSwuLi5iXSl9YS5RZC5jbGVhcigpfTsKXy50Z2U9Y2xhc3MgZXh0ZW5kcyBfLkVpe3N0YXRpYyBRYSgpe3JldHVybnttb2RlbDp7Vm86Xy5ZJGQsR3I6Xy5lS30sTGw6e2RTYTpfLlllZX19fWNvbnN0cnVjdG9yKGEpe3N1cGVyKCk7dGhpcy5KYj10aGlzLkVhPS0xO3RoaXMuQXVhPW51bGw7dGhpcy5QYj10aGlzLlhiPXRoaXMuRmQ9dGhpcy5SYT0wO3RoaXMuWmQ9bmV3IG1nZShuZ2UpO3RoaXMua2E9dGhpcy5yYj0wO3RoaXMubnhhPW5ldyBTZXQ7dGhpcy5aYT1uZXcgU2V0O3RoaXMuS2E9dGhpcy5QYT10aGlzLkZiPXRoaXMuVWM9dGhpcy5rZD10aGlzLk9hPTA7dGhpcy5DYz1bXTt0aGlzLnplYT1uZXcgTWFwO3RoaXMuSWE9W107dGhpcy5TYT1uZXcgTWFwO3RoaXMuZ3JvdXBzPVtdO3RoaXMuUGM9dGhpcy5BYj1udWxsO3RoaXMuUWQ9bmV3IE1hcDt0aGlzLnFlPXRoaXMuTmE9dGhpcy5oYz10aGlzLlFiPXRoaXMuT2I9MDt0aGlzLkxkPW5ldyBtZ2Uob2dlKTt0aGlzLlFlPW5ldyBtZ2Uob2dlKTt0aGlzLkljPW5ldyBtZ2UocGdlKTsKdGhpcy5CYT1bXTt0aGlzLm5iPTA7dGhpcy5zTD1udWxsO3RoaXMuQ2c9MDt0aGlzLlZvPWEubW9kZWwuVm87dGhpcy5oTT1hLm1vZGVsLkdyO3RoaXMuTGs9YS5MbC5kU2E7dGhpcy5oTS5rYShfLk9kZSx0aGlzKTtxZ2UodGhpcyl9SWIoKXt0aGlzLkpiPXRoaXMuRWE9LTE7dGhpcy5BdWE9bnVsbDt0aGlzLmthPXRoaXMucmI9dGhpcy5YYj10aGlzLkZkPXRoaXMuUmE9MDt0aGlzLm54YS5jbGVhcigpO3RoaXMuS2E9dGhpcy5GYj10aGlzLlBhPXRoaXMuVWM9dGhpcy5rZD10aGlzLk9hPTA7dGhpcy5DYz1bXTt0aGlzLkFiPW51bGw7dGhpcy5aYS5jbGVhcigpO3RoaXMuSWE9W107dGhpcy56ZWEuY2xlYXIoKTt0aGlzLmdyb3Vwcz1bXTt0aGlzLlNhLmNsZWFyKCk7dGhpcy5OYT10aGlzLmhjPXRoaXMuUWI9MDt0aGlzLlpkPW5ldyBtZ2UobmdlKTt0aGlzLkxkPW5ldyBtZ2Uob2dlKTt0aGlzLlFlPW5ldyBtZ2Uob2dlKTt0aGlzLkljPW5ldyBtZ2UocGdlKTt0aGlzLlBiPXRoaXMucWU9CnRoaXMuT2I9MDt0aGlzLkJhPVtdO3RoaXMubmI9MH1lb2EoYSl7dmFyIGI9dGhpcy5Wby5WQigpLGM9dGhpcy53YShhKTtjPV8uT2EoKDAsXy5yZWUpKGMpLDQpO2I9cmdlKHRoaXMsYi5BYSgpKTthPW5ldyBNYXAoW1sib3EiLGFdLFsiZ3NfbHAiLGNdLFsic2NsaWVudCIsYl1dKTt0aGlzLnNMPT09MTgmJmEuc2V0KCJnc19pdnMiLCIxIik7cmV0dXJuIGF9d2EoYSl7dmFyIGI9dGhpcy5Wby5WQigpO2E9Xy5tZWUoXy5HZWUoXy5GZWUoXy5FZWUoXy5xZWUoXy5IZWUoXy5JZWUoXy5KZWUoXy5uZWUoXy5wZWUoXy5vZWUoKG5ldyBfLmhlZSkuYlEoYSkudUwodGhpcy5zTCksdGhpcy5vYSh0aGlzLlJhKSksdGhpcy5vYSh0aGlzLkZkKSksdGhpcy5rYT09PTA/MDpwZXJmb3JtYW5jZS5ub3coKS10aGlzLmthKSx0aGlzLlpkLkZjKCkpLHRoaXMuWGIpLHRoaXMucmIpLHRoaXMuT2EpLHRoaXMua2QpLHRoaXMuVWMpLHRoaXMuRmIpLEFycmF5LmZyb20odGhpcy5ueGEudmFsdWVzKCkpKTsKdGhpcy5FYSE9PS0xJiZfLm9rKGEsMzcsdGhpcy5FYSk7dGhpcy5KYiE9PS0xJiZfLm9rKGEsOTgsdGhpcy5KYik7aWYodGhpcy5LYSE9PTApe3ZhciBjPW5ldyBfLlFlZTtjPV8ubGsoYywzLHRoaXMuS2EpO18uU2IoYSxfLlFlZSwzLGMpfXRoaXMuWmEuc2l6ZT4wJiYoYz1BcnJheS5mcm9tKHRoaXMuWmEudmFsdWVzKCkpLF8uemIoYSw5NCxjLF8uWWNhKSk7Yz1fLkhqKGEsMTAzLHRoaXMuZ3JvdXBzKTtfLkhqKGMsNix0aGlzLklhKTtfLkFMYiYmXy5EZWUoXy5IaihhLDU3LHRoaXMuQmEpLHRoaXMub2EodGhpcy5uYikpO3RoaXMuQXVhIT09bnVsbCYmKGM9bmV3IF8uYkssYz1fLmxrKGMsMSx0aGlzLkF1YSksdGhpcy5QYyYmXy5qZWUoYyxfLlFqKHRoaXMuUGMsNCxfLm9oKCkpKSxfLlNiKGEsXy5iSyw1LGMpKTtmb3IodmFyIGQgb2YgdGhpcy5JYSljPV8uT2EoKDAsXy5zZWUpKGQpKSx0aGlzLnplYS5oYXMoYykmJnRoaXMuemVhLmRlbGV0ZShjKTtkPUFycmF5LmZyb20odGhpcy56ZWEudmFsdWVzKCkpOwpfLkhqKGEsNDAsZCk7dGhpcy5BYiYmXy5aaChhLDk3LHRoaXMuQWIpO2Q9cmdlKHRoaXMsYi5BYSgpKTtfLmtlZShhLGQpO18ucGgoYiwyKSYmXy50KGIsMikhPT0iIiYmXy5sZWUoYSxfLnQoYiwyKSk7ZD1fLm9rKGEsMzYsdGhpcy5RYik7ZD1fLm9rKGQsNTEsdGhpcy5PYik7Yz10aGlzLkxkLkZjKCk7ZD1fLmZoKGQsMTE0LGMpO2Q9Xy5vayhkLDM1LHRoaXMucWUpO2Q9Xy5vayhkLDExNix0aGlzLlBiKTtkPV8uSGooZCw2MCx0aGlzLkNjKTtkPV8ub2soZCwxMTksdGhpcy5oYyk7Yz10aGlzLlFlLkZjKCk7ZD1fLmZoKGQsMTE4LGMpO2Q9Xy5vayhkLDEyMSx0aGlzLk5hKTtjPXRoaXMuSWMuRmMoKTtfLmZoKGQsMTIwLGMpO2I9Xy5BKGIsNzApO18uJGgoYSwxMjgsYik7dGhpcy5oTS5SYShhKTtyZXR1cm4gYX16ZyhhLGIpe3ZhciBjPWIua2EoKSxkPWMubGVuZ3RoO2EuZ2V0UXVlcnkoKS50cmltKCl8fCh0aGlzLkVhPWQsdGhpcy5PYj09PTAmJih0aGlzLk9iPXBlcmZvcm1hbmNlLm5vdygpLQphLklhKSk7aWYoZD4wKXt2YXIgZT1wZXJmb3JtYW5jZS5ub3coKS1hLklhO2xldCBmPXBlcmZvcm1hbmNlLm5vdygpLXRoaXMuQ2c7dGhpcy5MZC5hZGQoZSk7dGhpcy5RYis9ZTsrK3RoaXMucWU7Yi5PZGEoKSYmYS5xSCE9PTEmJih0aGlzLlFlLmFkZChlKSx0aGlzLmhjKz1lKTt0aGlzLkljLmFkZChmKTt0aGlzLk5hKz1mfWlmKGU9ZD4wKWU9Y1swXSxlPWUua2EoKS5pbmNsdWRlcyg0MzIpfHxlLmthKCkuaW5jbHVkZXMoNzEpO2UmJih0aGlzLkpiPWQpOyhkPWIub2EoImF2IiwiIikpJiZ0aGlzLlphLmFkZChkKTtzZ2UodGhpcyxjLGIud2EoKSk7dGhpcy5oTS5MamEoYSxiKX12Q2IoYSl7dGhpcy5BdWE9YX1iN2IoYSl7dGhpcy5QYz1hfWs3YihhLGIpe2Iuc2l6ZSE9PTAmJnRoaXMuUWQuc2V0KGEsYil9VmcoKXt2YXIgYT1wZXJmb3JtYW5jZS5ub3coKTt0aGlzLlJhPT09MCYmKHRoaXMuUmE9YSk7dGhpcy5GZD1hfW9hKGEpe3JldHVybiB0aGlzLmthPT09MD8wOk1hdGgubWF4KGEtCnRoaXMua2EsMCl9V2goYSl7YS5vYSgiZSIsITEpPyh0aGlzLkthPXRoaXMuUGE+MD8zOjEsdGhpcy5QYSsrKTp0aGlzLkthPXRoaXMuUGE+MD8yOjB9Z21hKGEpe3RoaXMubnhhLmFkZChhKX1yX2EoYSxiKXthPV8uemVlKG5ldyBfLlBlZSxhKTt0eXBlb2YgYj09PSJudW1iZXIiP18uQmVlKGEsYik6Xy5BZWUoYSxiKTt0aGlzLkNjLnB1c2goYSl9dUwoYSl7dGhpcy5zTD1hfWZqYihhKXt0aGlzLkJhLnB1c2goYSk7dGhpcy5CYS5sZW5ndGg+MyYmdGhpcy5CYS5zaGlmdCgpO3RoaXMubmI9cGVyZm9ybWFuY2Uubm93KCl9SGYoKXt0aGlzLkJhPVtdO3RoaXMubmI9MH19O18uVnIoXy5rZ2UsXy50Z2UpOwpfLnYoKTsKfWNhdGNoKGUpe18uX0R1bXBFeGNlcHRpb24oZSl9CnRyeXsKXy51Z2U9Xy5rYygieE1jbGdkIixbXy5rZ2UsXy5BeV0pOwp9Y2F0Y2goZSl7Xy5fRHVtcEV4Y2VwdGlvbihlKX0KdHJ5ewp2YXIgdmdlLHlnZSx6Z2UsQWdlO3ZnZT1mdW5jdGlvbihhLGIsYyxkKXtfLiRkLmNhbGwodGhpcyxkKTt0aGlzLnR5cGU9ImtleSI7dGhpcy5rZXlDb2RlPWE7dGhpcy5jaGFyQ29kZT1iO3RoaXMucmVwZWF0PWN9O18ud2dlPWZ1bmN0aW9uKGEsYil7Xy5iZS5jYWxsKHRoaXMpO2EmJnRoaXMuYXR0YWNoKGEsYil9O18ueGdlPWZ1bmN0aW9uKGEsYixjKXtjPWM/bnVsbDphLmdldEVsZW1lbnRzQnlUYWdOYW1lKCIqIik7aWYoXy50SWEmJihiPWI/Im5vbmUiOiIiLGEuc3R5bGUmJihhLnN0eWxlW18udElhXT1iKSxjKSlmb3IobGV0IGQ9MDthPWNbZF07ZCsrKWEuc3R5bGUmJihhLnN0eWxlW18udElhXT1iKX07eWdlPWZ1bmN0aW9uKGEpe3N3aXRjaChhKXtjYXNlIDYxOnJldHVybiAxODc7Y2FzZSA1OTpyZXR1cm4gMTg2O2Nhc2UgMTczOnJldHVybiAxODk7Y2FzZSAyMjQ6cmV0dXJuIDkxO2Nhc2UgMDpyZXR1cm4gMjI0O2RlZmF1bHQ6cmV0dXJuIGF9fTsKemdlPWZ1bmN0aW9uKGEpe2lmKF8uT2QpYT15Z2UoYSk7ZWxzZSBpZihfLmFqJiZfLk5kKWE6c3dpdGNoKGEpe2Nhc2UgOTM6YT05MTticmVhayBhfXJldHVybiBhfTsKQWdlPWZ1bmN0aW9uKGEsYixjLGQsZSxmKXtpZihfLmFqJiZlKXJldHVybiBfLlJJYShhKTtpZihlJiYhZClyZXR1cm4hMTtpZighXy5PZCl7dHlwZW9mIGI9PT0ibnVtYmVyIiYmKGI9emdlKGIpKTtsZXQgZz1iPT0xN3x8Yj09MTh8fF8uYWomJmI9PTkxO2lmKCghY3x8Xy5haikmJmd8fF8uYWomJmI9PTE2JiYoZHx8ZikpcmV0dXJuITF9aWYoXy5OZCYmZCYmYylzd2l0Y2goYSl7Y2FzZSAyMjA6Y2FzZSAyMTk6Y2FzZSAyMjE6Y2FzZSAxOTI6Y2FzZSAxODY6Y2FzZSAxODk6Y2FzZSAxODc6Y2FzZSAxODg6Y2FzZSAxOTA6Y2FzZSAxOTE6Y2FzZSAxOTI6Y2FzZSAyMjI6cmV0dXJuITF9c3dpdGNoKGEpe2Nhc2UgMTM6cmV0dXJuIF8uT2Q/Znx8ZT8hMTohKGMmJmQpOiEwO2Nhc2UgMjc6cmV0dXJuIV8uTmQmJiFfLk9kfXJldHVybiBfLk9kJiYoZHx8ZXx8Zik/ITE6Xy5SSWEoYSl9O18uVWkodmdlLF8uJGQpO18uVWkoXy53Z2UsXy5iZSk7Xy5hYT1fLndnZS5wcm90b3R5cGU7Xy5hYS5RYz1udWxsO18uYWEuaSRhPW51bGw7Xy5hYS5FdmI9bnVsbDtfLmFhLmokYT1udWxsO18uYWEuZ189LTE7Xy5hYS5DcGE9LTE7Xy5hYS5IamI9ITE7CnZhciBCZ2U9ezM6MTMsMTI6MTQ0LDYzMjMyOjM4LDYzMjMzOjQwLDYzMjM0OjM3LDYzMjM1OjM5LDYzMjM2OjExMiw2MzIzNzoxMTMsNjMyMzg6MTE0LDYzMjM5OjExNSw2MzI0MDoxMTYsNjMyNDE6MTE3LDYzMjQyOjExOCw2MzI0MzoxMTksNjMyNDQ6MTIwLDYzMjQ1OjEyMSw2MzI0NjoxMjIsNjMyNDc6MTIzLDYzMjQ4OjQ0LDYzMjcyOjQ2LDYzMjczOjM2LDYzMjc1OjM1LDYzMjc2OjMzLDYzMjc3OjM0LDYzMjg5OjE0NCw2MzMwMjo0NX0sQ2dlPXtVcDozOCxEb3duOjQwLExlZnQ6MzcsUmlnaHQ6MzksRW50ZXI6MTMsRjE6MTEyLEYyOjExMyxGMzoxMTQsRjQ6MTE1LEY1OjExNixGNjoxMTcsRjc6MTE4LEY4OjExOSxGOToxMjAsRjEwOjEyMSxGMTE6MTIyLEYxMjoxMjMsIlUrMDA3RiI6NDYsSG9tZTozNixFbmQ6MzUsUGFnZVVwOjMzLFBhZ2VEb3duOjM0LEluc2VydDo0NX0sRGdlPV8uYWomJl8uT2Q7Xy5hYT1fLndnZS5wcm90b3R5cGU7Cl8uYWEuT2ZjPWZ1bmN0aW9uKGEpe18uTmQmJih0aGlzLmdfPT0xNyYmIWEuY3RybEtleXx8dGhpcy5nXz09MTgmJiFhLmFsdEtleXx8Xy5haiYmdGhpcy5nXz09OTEmJiFhLm1ldGFLZXkpJiYodGhpcy5DcGE9dGhpcy5nXz0tMSk7dGhpcy5nXz09LTEmJihhLmN0cmxLZXkmJmEua2V5Q29kZSE9MTc/dGhpcy5nXz0xNzphLmFsdEtleSYmYS5rZXlDb2RlIT0xOD90aGlzLmdfPTE4OmEubWV0YUtleSYmYS5rZXlDb2RlIT05MSYmKHRoaXMuZ189OTEpKTtBZ2UoYS5rZXlDb2RlLHRoaXMuZ18sYS5zaGlmdEtleSxhLmN0cmxLZXksYS5hbHRLZXksYS5tZXRhS2V5KT8odGhpcy5DcGE9emdlKGEua2V5Q29kZSksRGdlJiYodGhpcy5IamI9YS5hbHRLZXkpKTp0aGlzLmhhbmRsZUV2ZW50KGEpfTtfLmFhLnN4Yz1mdW5jdGlvbihhKXt0aGlzLkNwYT10aGlzLmdfPS0xO3RoaXMuSGpiPWEuYWx0S2V5fTsKXy5hYS5oYW5kbGVFdmVudD1mdW5jdGlvbihhKXt2YXIgYj1hLmpnLGM9Yi5hbHRLZXk7aWYoXy5OZCYmYS50eXBlPT0ia2V5cHJlc3MiKXt2YXIgZD10aGlzLkNwYTt2YXIgZT1iLmNoYXJDb2RlPj0wJiZiLmNoYXJDb2RlPDYzMjMyJiZfLlJJYShkKT9iLmNoYXJDb2RlOjB9ZWxzZSBhLnR5cGU9PSJrZXlwcmVzcyI/KERnZSYmKGM9dGhpcy5IamIpLGIua2V5Q29kZT09Yi5jaGFyQ29kZT9iLmtleUNvZGU8MzI/KGQ9Yi5rZXlDb2RlLGU9MCk6KGQ9dGhpcy5DcGEsZT1iLmNoYXJDb2RlKTooZD1iLmtleUNvZGV8fHRoaXMuQ3BhLGU9Yi5jaGFyQ29kZXx8MCkpOihkPWIua2V5Q29kZXx8dGhpcy5DcGEsZT1iLmNoYXJDb2RlfHwwKSxfLmFqJiZlPT02MyYmZD09MjI0JiYoZD0xOTEpO3ZhciBmPWQ9emdlKGQpO2Q/ZD49NjMyMzImJmQgaW4gQmdlP2Y9QmdlW2RdOmQ9PTI1JiZhLnNoaWZ0S2V5JiYoZj05KTpiLmtleUlkZW50aWZpZXImJmIua2V5SWRlbnRpZmllciBpbiBDZ2UmJihmPQpDZ2VbYi5rZXlJZGVudGlmaWVyXSk7aWYoIV8uT2R8fGEudHlwZSE9ImtleXByZXNzInx8QWdlKGYsdGhpcy5nXyxhLnNoaWZ0S2V5LGEuY3RybEtleSxjLGEubWV0YUtleSkpYT1mPT10aGlzLmdfLHRoaXMuZ189ZixiPW5ldyB2Z2UoZixlLGEsYiksYi5hbHRLZXk9Yyx0aGlzLmRpc3BhdGNoRXZlbnQoYil9O18uYWEuSmE9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5RY307Xy5hYS5hdHRhY2g9ZnVuY3Rpb24oYSxiKXt0aGlzLmokYSYmdGhpcy5kZXRhY2goKTt0aGlzLlFjPWE7dGhpcy5pJGE9Xy5oZSh0aGlzLlFjLCJrZXlwcmVzcyIsdGhpcyxiKTt0aGlzLkV2Yj1fLmhlKHRoaXMuUWMsImtleWRvd24iLHRoaXMuT2ZjLGIsdGhpcyk7dGhpcy5qJGE9Xy5oZSh0aGlzLlFjLCJrZXl1cCIsdGhpcy5zeGMsYix0aGlzKX07Cl8uYWEuZGV0YWNoPWZ1bmN0aW9uKCl7dGhpcy5pJGEmJihfLkFuKHRoaXMuaSRhKSxfLkFuKHRoaXMuRXZiKSxfLkFuKHRoaXMuaiRhKSx0aGlzLmokYT10aGlzLkV2Yj10aGlzLmkkYT1udWxsKTt0aGlzLlFjPW51bGw7dGhpcy5DcGE9dGhpcy5nXz0tMX07Xy5hYS5xYz1mdW5jdGlvbigpe18ud2dlLlJkLnFjLmNhbGwodGhpcyk7dGhpcy5kZXRhY2goKX07Cn1jYXRjaChlKXtfLl9EdW1wRXhjZXB0aW9uKGUpfQp0cnl7Cl8udSgieE1jbGdkIik7Cl8uRWdlPWNsYXNzIGV4dGVuZHMgXy5oc3tzdGF0aWMgUWEoKXtyZXR1cm57bW9kZWw6e1pjOl8udGdlfSxjb250cm9sbGVyczp7c25hY2tiYXI6e2pzbmFtZToibkg5MWhlIixjdG9yOl8uQ3l9fX19Y29uc3RydWN0b3IoYSl7c3VwZXIoKTt0aGlzLkhnPW51bGw7dGhpcy5rYT0hMTt0aGlzLlpjPWEubW9kZWwuWmM7dGhpcy5Xcz1hLmNvbnRyb2xsZXJzLnNuYWNrYmFyWzBdfHxudWxsfX07Xy5qcyhfLnVnZSxfLkVnZSk7Cl8udigpOwp9Y2F0Y2goZSl7Xy5fRHVtcEV4Y2VwdGlvbihlKX0KdHJ5ewpfLkZnZT1fLmtjKCJMTTd3eCIsW18uQ2RlXSk7Cn1jYXRjaChlKXtfLl9EdW1wRXhjZXB0aW9uKGUpfQp0cnl7Cl8udSgiTE03d3giKTsKXy5HZ2U9ZnVuY3Rpb24oYSxiKXthLmthJiYoYiYmYS5ldmVudHMuUHgoOCksYS5rYT0hMSxfLkFuKGEud2EpLGEud2E9bnVsbCl9O18uSGdlPWNsYXNzIGV4dGVuZHMgXy5FaXtzdGF0aWMgUWEoKXtyZXR1cm57bW9kZWw6e2V2ZW50czpfLkRkZX19fWNvbnN0cnVjdG9yKGEpe3N1cGVyKCk7dGhpcy5vYT10aGlzLmthPSExO3RoaXMud2E9bnVsbDt0aGlzLmV2ZW50cz1hLm1vZGVsLmV2ZW50czthPSgpPT57Xy5HZ2UodGhpcywhMSl9O3RoaXMuZXZlbnRzLmJIKDEsYSk7dGhpcy5ldmVudHMuYkgoMyxhKX19O18uVnIoXy5GZ2UsXy5IZ2UpOwpfLnYoKTsKfWNhdGNoKGUpe18uX0R1bXBFeGNlcHRpb24oZSl9CnRyeXsKXy5HTGI9ISEoXy5PaVs2Nl0+PjE0JjEpOwp9Y2F0Y2goZSl7Xy5fRHVtcEV4Y2VwdGlvbihlKX0KdHJ5ewpfLklnZT1fLmtjKCJ2WnIycmIiLFtfLkZnZSxfLmRLLF8ua2dlLF8uWiRkLF8ubmZlLF8udWdlXSk7Cn1jYXRjaChlKXtfLl9EdW1wRXhjZXB0aW9uKGUpfQp0cnl7Cl8udSgidlpyMnJiIik7CnZhciBKZ2U9ZnVuY3Rpb24oKXt2YXIgYT1kb2N1bWVudC5hY3RpdmVFbGVtZW50O3JldHVybiBhP2Eubm9kZU5hbWU9PT0iSU5QVVQiPyhhPWEudHlwZSxhPT09InRleHQifHxhPT09Im51bWJlciIpOmEubm9kZU5hbWU9PT0iVEVYVEFSRUEiOiExfSxLZ2U9ZnVuY3Rpb24oYSxiKXthLkhnPWI7Xy5oZShuZXcgXy53Z2UoZG9jdW1lbnQpLCJrZXkiLGM9PnthOmlmKCFKZ2UoKSl7Zm9yKHZhciBkPWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJyY250Iik7ZCYmZCE9PWRvY3VtZW50LmJvZHk7KXtpZihfLlZkKGQsImhpZGRlbiIpKWJyZWFrIGE7ZD1kLnBhcmVudEVsZW1lbnR9aWYoKGMua2V5JiZjLmtleS5sZW5ndGg9PT0xP2Mua2V5OmMuY2hhckNvZGU/U3RyaW5nLmZyb21DaGFyQ29kZShjLmNoYXJDb2RlKTpfLlJJYShjLmtleUNvZGUpP1N0cmluZy5mcm9tQ2hhckNvZGUoYy5rZXlDb2RlKTpudWxsKSE9PSIvInx8Yy5jdHJsS2V5fHxjLmFsdEtleXx8Yy5tZXRhS2V5KXtpZihkPQohYS5rYSl7ZD1jLmtleUNvZGU9PT00Nnx8Yy5rZXlDb2RlPT09ODtsZXQgZT1jLmN0cmxLZXl8fGMuYWx0S2V5fHxjLm1ldGFLZXk7ZD0oYy5rZXlDb2RlIT09MzImJl8uUklhKGMua2V5Q29kZSl8fGQpJiYhZX1kJiZhLldzJiYoYS5rYT0hMCxhLldzLnNob3coKSl9ZWxzZSBjLnByZXZlbnREZWZhdWx0KCksYz1hLkhnLlBuKCkubGVuZ3RoLGEuSGcuenQuc2V0U2VsZWN0aW9uUmFuZ2UoYyxjKSxhLkhnLmZvY3VzKCksYS50cmlnZ2VyKCJJUU9hdmQiLDApLGEuSGcuenQuc2Nyb2xsVG9wPWEuSGcuenQuc2Nyb2xsSGVpZ2h0LGEuWmMucl9hKDQxLCIxIil9fSl9LExnZT1bImJlZm9yZXVubG9hZCIsInBhZ2VoaWRlIl0sTWdlPWZ1bmN0aW9uKGEpe2Eud2E9Xy5oZSh3aW5kb3csTGdlLCgpPT57YS5vYXx8KF8uR2dlKGEsITApLGEub2E9ITAsc2V0VGltZW91dCgoKT0+e2Eub2E9ITF9LDFFMykpfSl9O3ZhciBOZ2UsUGdlLFFnZSxSZ2UsT2dlO05nZT0vPHNlPiguKj8pPFwvc2U+L2c7UGdlPWZ1bmN0aW9uKGEpe3ZhciBiPWY9PntPZ2UoYSxmKX0sYz1fLmhlKGRvY3VtZW50LCJkcmFnZW50ZXIiLGIsITApLGQ9Xy5oZShkb2N1bWVudCwiZHJhZ292ZXIiLGIsITApLGU9Xy5oZShkb2N1bWVudCwiZHJvcCIsZj0+e2lmKGY9T2dlKGEsZikpe2xldCBnO2lmKChmPShnPWYuZGF0YVRyYW5zZmVyKT09bnVsbD92b2lkIDA6Zy5maWxlcykmJmYubGVuZ3RoPjApe2xldCBoLGs7aWYoKGs9KGg9YS5saik9PW51bGw/dm9pZCAwOmguY04oKSk9PW51bGx8fCFrKXtsZXQgbTsobT1hLmxqKT09bnVsbHx8bS5kSyghMCl9YS50cmlnZ2VyKCJDdWRYUGQiLEFycmF5LmZyb20oZikpfX19LCEwKTthLmFkZE9uRGlzcG9zZUNhbGxiYWNrKCgpPT57Xy5BbihjKTtfLkFuKGQpO18uQW4oZSl9KX07ClFnZT1mdW5jdGlvbihhKXt2YXIgYj1NYXRoLmFicyhhLnp0LnNjcm9sbEhlaWdodC1hLnp0LmNsaWVudEhlaWdodC1hLnp0LnNjcm9sbFRvcCk+MTA7YS5nZXRSb290KCkudG9nZ2xlQ2xhc3MoIklBd2ZmZiIsYil9O1JnZT1mdW5jdGlvbihhLGI9ITAsYz0hMCxkPSExKXtpZihhLkJhIT09YS5QbigpfHxkKWEub2EoKSxhLmthYShjKSxkPWEuYzNhLGQua2F8fChkLmthPSEwLE1nZShkKSksYS5CV2EuZ21hKDEpLGImJmEuQldhLlZnKCksYyYmKGEuQmE9YS5QbigpLGEuQWE9ITApLGEudHJpZ2dlcigiRGtwTTBiIil9O18uU2dlPWZ1bmN0aW9uKGEsYil7aWYoYS5JYT1iKWI9Yi5yZXBsYWNlKE5nZSwiPHNwYW4+JDE8L3NwYW4+IiksXy5lZChhLlBhLF8uS2MoYikpfTsKT2dlPWZ1bmN0aW9uKGEsYil7dmFyIGM9YiBpbnN0YW5jZW9mIF8uJGQ/Yi5qZzpiLGQ7dmFyIGU9KGQ9Yy5kYXRhVHJhbnNmZXIpPT1udWxsP3ZvaWQgMDpkLml0ZW1zO2Q9ITE7aWYoZSlmb3IoYz0wO2M8ZS5sZW5ndGg7YysrKXtpZihlW2NdLmtpbmQ9PT0iZmlsZSJ8fF8ud2FlLmhhcyhlW2NdLnR5cGUpfHxlW2NdLnR5cGU9PT0iYXBwbGljYXRpb24vcGRmIil7ZD0hMDticmVha319ZWxzZXtsZXQgaDsoKGg9Yy5kYXRhVHJhbnNmZXIpPT1udWxsPzA6aC5maWxlcykmJmMuZGF0YVRyYW5zZmVyLmZpbGVzLmxlbmd0aD4wJiYoZD0hMCl9aWYoZCl7dmFyIGYsZztjPShnPShmPWEubGopPT1udWxsP3ZvaWQgMDpmLmNOKCkpIT1udWxsP2c6ITE7YT1hLlBuKCkudHJpbSgpLmxlbmd0aD4wO2Y9ITE7aWYoZSlmb3IoZz0wO2c8ZS5sZW5ndGg7ZysrKWlmKGVbZ10udHlwZT09PSJhcHBsaWNhdGlvbi9wZGYiKXtmPSEwO2JyZWFrfWU9Y3x8YXx8Zn1lbHNlIGU9ITE7cmV0dXJuIGU/KGI9CmIgaW5zdGFuY2VvZiBfLiRkP2Iuamc6YixiLnN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbigpLGIucHJldmVudERlZmF1bHQoKSxiKTpudWxsfTsKXy5oSz1jbGFzcyBleHRlbmRzIF8uaHN7c3RhdGljIFFhKCl7cmV0dXJue21vZGVsOntjM2E6Xy5IZ2UsaE06Xy5lSyxCV2E6Xy50Z2UsdGFhOl8uY2FlLGxqOl8uRWZlfSxMbDp7WFQ6Xy5mZ2V9LE9jOntNQ2M6e2pzbmFtZToiYUp5R1IiLGN0b3I6Xy5FZ2V9fX19Y29uc3RydWN0b3IoYSl7c3VwZXIoKTt0aGlzLk5hPW51bGw7dGhpcy56dD10aGlzLkphKCJ5WmlKYmUiKS5lbCgpO3RoaXMuQmE9dGhpcy5QbigpO3RoaXMuS2E9dGhpcy5QbigpO3RoaXMuQWE9ITE7dGhpcy5JYT1udWxsO3RoaXMuUGE9dGhpcy5KYSgidmRMc3ciKS5lbCgpO3RoaXMua2E9bnVsbDt0aGlzLm1heExpbmVzPV8uQ2QodGhpcy5nZXREYXRhKCJtbnIiKSw1KTt0aGlzLm5iPV8uQ2QodGhpcy5nZXREYXRhKCJtbnJTaCIpLDQpO3RoaXMubGluZUhlaWdodD1wYXJzZUludChnZXRDb21wdXRlZFN0eWxlKHRoaXMuenQpLmxpbmVIZWlnaHQsMTApO3RoaXMuU2E9dGhpcy56dC5wbGFjZWhvbGRlcjt0aGlzLmMzYT0KYS5tb2RlbC5jM2E7dGhpcy5CV2E9YS5tb2RlbC5CV2E7dGhpcy5YVD1hLkxsLlhUO18uYmFlKGEubW9kZWwudGFhKTt0aGlzLk9mPWEubW9kZWwudGFhLlZCKCk7dGhpcy5saj1hLm1vZGVsLmxqO3ZhciBiOyhiPWEuT2MuTUNjKT09bnVsbHx8S2dlKGIsdGhpcyk7Xy5GZmUmJlBnZSh0aGlzKTtfLmxMYiYmKHRoaXMua2E9dGhpcy5KYSgiWDNMWkliIikuaGIoKSk7YS5tb2RlbC5oTS5rYShfLldkZSx0aGlzKTthLm1vZGVsLmhNLmthKF8uWGRlLHRoaXMpO18uR0xiJiYodGhpcy5OYT10aGlzLmdldFJvb3QoKS5jbG9zZXN0KF8udW8oImpzbmFtZSIsIlBjOGhKZiIpKSk7Xy5KZGUoKCk9Pnt0aGlzLk9hKCl9KTt0aGlzLnp0LnZhbHVlfHx0aGlzLlFqYSgiIik7Xy52c2EoImdvb2dsZS5zYi5zcSIsYz0+e3RoaXMuUWphKGMsITAsITEsITApfSk7Xy5tTGImJl8uaGUodGhpcy56dCwic2Nyb2xsIiwoKT0+e1FnZSh0aGlzKX0pfVRiKCl7Xy5MaSgiZ29vZ2xlLnNiLnNxIixudWxsKX1vbkNsaWNrKCl7dGhpcy5FYSgpfW9uTW91c2VEb3duKGEpe2E9CmEuZXZlbnQ7dmFyIGI7aWYoYj1fLkNMYil7Yj1wYXJzZUludChnZXRDb21wdXRlZFN0eWxlKHRoaXMuenQpLnBhZGRpbmdUb3AsMTApO2xldCBjPXRoaXMuenQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7Yj1hLmNsaWVudFktYy50b3A8Yn1iJiYoYS5wcmV2ZW50RGVmYXVsdCgpLGE9dGhpcy5QbigpLmxlbmd0aCx0aGlzLnp0LnNldFNlbGVjdGlvblJhbmdlKGEsYSksdGhpcy56dC5mb2N1cygpKX1vbklucHV0KCl7UmdlKHRoaXMpfW9uQmx1cigpe18uQm4od2luZG93LCJhdHRuX3Jlc3VtZSIsbnVsbCk7dGhpcy56dC5zY3JvbGxUb3A9MDtfLkdMYnx8Xy5pTGJ8fHRoaXMudHJpZ2dlcigiWHpaWlBlIil9b25QYXN0ZShhKXt0aGlzLkJXYS5nbWEoMik7aWYoXy50Y2UmJihhPWEuZXZlbnQsYS5jbGlwYm9hcmREYXRhJiYhYS5jbGlwYm9hcmREYXRhLnR5cGVzLmluY2x1ZGVzKCJ0ZXh0L2h0bWwiKSkpe3ZhciBiPWEuY2xpcGJvYXJkRGF0YS5maWxlcztpZihiPT1udWxsPzA6Yi5sZW5ndGgpYS5wcmV2ZW50RGVmYXVsdCgpLAp0aGlzLnRyaWdnZXIoIkN1ZFhQZCIsQXJyYXkuZnJvbShiKSl9fVFqYShhLGI9ITEsYz0hMCxkPSEwKXt2YXIgZT1hIT09dGhpcy5QbigpO2ImJih0aGlzLkJhPT09YSYmdGhpcy5JYT9fLlNnZSh0aGlzLHRoaXMuSWEpOnRoaXMub2EoKSk7dGhpcy56dC52YWx1ZT1hOyFkfHwhYiYmZXx8KHRoaXMuQmE9YSk7ZCYmZSYmKHRoaXMuQWE9ITApO2I/dGhpcy5rYWEoZCk6KHRoaXMuZm9jdXMoKSxlJiZSZ2UodGhpcyxjLGQsZSkpO2J8fGV8fCFkfHx0aGlzLm9hKCl9a2FhKGE9ITApe3ZhciBiLGMsZD0oYz0oYj10aGlzLk5hKT09bnVsbD92b2lkIDA6Yi5oYXNDbGFzcygid2hlUnllIikpIT1udWxsJiZjP3RoaXMubmI6dGhpcy5tYXhMaW5lczt0aGlzLnp0LnN0eWxlLmhlaWdodD0iMCI7Yj1NYXRoLmZsb29yKHRoaXMuenQuc2Nyb2xsSGVpZ2h0L3RoaXMubGluZUhlaWdodCk7Yz1NYXRoLm1pbihNYXRoLm1heCgxLGIpLGQpO3RoaXMuenQucm93cyE9PWMmJih0aGlzLnp0LnJvd3M9YywKdGhpcy50cmlnZ2VyKCJIOW11VmQiLGM+MSksXy5tTGImJnRoaXMuZ2V0Um9vdCgpLnRvZ2dsZUNsYXNzKCJHMXNZNGQiLGM+MSkpO3ZhciBlOyhlPXRoaXMuWFQpPT1udWxsfHxlLkthKHRoaXMuUG4oKSxjPjEsYSk7dGhpcy56dC5zdHlsZS5oZWlnaHQ9IiI7Xy5tTGImJihhPWI+ZCx0aGlzLmdldFJvb3QoKS50b2dnbGVDbGFzcygiZGlUVlpiIixhKSxhP1FnZSh0aGlzKTp0aGlzLmdldFJvb3QoKS50b2dnbGVDbGFzcygiSUF3ZmZmIiwhMSkpfUVhKCl7Xy5Fdih0aGlzLnp0KTtfLkJuKHdpbmRvdywiYXR0bl9wYXVzZSIsbnVsbCk7dGhpcy50cmlnZ2VyKCJJUU9hdmQiLDApO3ZhciBhPXRoaXMuYzNhO2Eua2F8fChhLmthPSEwLE1nZShhKSl9b2EoKXt0aGlzLlBhLnRleHRDb250ZW50PSIiO3RoaXMuSWE9bnVsbH1aYSgpe3JldHVybiB0aGlzLkFhfVJhKCl7cmV0dXJuIHRoaXMuenR9ek4oYSl7dGhpcy56dC5wbGFjZWhvbGRlcj1hfUdhKCl7dGhpcy56dC5wbGFjZWhvbGRlcj10aGlzLlNhfUdoYSgpe3JldHVybiB0aGlzLnp0LnNlbGVjdGlvbkVuZH1Qbigpe3JldHVybiB0aGlzLnp0LnZhbHVlfXdhKCl7cmV0dXJuIHRoaXMuQmF9T2koKXtyZXR1cm4gdGhpcy56dD09PQpkb2N1bWVudC5hY3RpdmVFbGVtZW50fWZvY3VzKCl7dmFyIGE9Xy5BKHRoaXMuT2YsNzYpO3RoaXMuenQuZm9jdXMoe3ByZXZlbnRTY3JvbGw6YX0pfWJsdXIoKXt0aGlzLnp0LmJsdXIoKX1PYSgpe3RoaXMuUWphKHRoaXMuS2EsITAsITEsITApO3RoaXMuQWE9ITF9fTtfLmhLLnByb3RvdHlwZS4kd2EkZ0gySGplPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuT2F9O18uaEsucHJvdG90eXBlLiR3YSRPMjJwM2U9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5ibHVyfTtfLmhLLnByb3RvdHlwZS4kd2EkQUhtdXdlPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZm9jdXN9O18uaEsucHJvdG90eXBlLiR3YSR1M2JXNGU9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5PaX07Xy5oSy5wcm90b3R5cGUuJHdhJGNYcGZqPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMud2F9O18uaEsucHJvdG90eXBlLiR3YSRXQk1DRz1mdW5jdGlvbigpe3JldHVybiB0aGlzLlBufTtfLmhLLnByb3RvdHlwZS4kd2EkalRDMnZkPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuR2hhfTsKXy5oSy5wcm90b3R5cGUuJHdhJFJzVFZOZT1mdW5jdGlvbigpe3JldHVybiB0aGlzLkdhfTtfLmhLLnByb3RvdHlwZS4kd2EkYkFEeGk9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5SYX07Xy5oSy5wcm90b3R5cGUuJHdhJGV4SkJNYz1mdW5jdGlvbigpe3JldHVybiB0aGlzLlphfTtfLmhLLnByb3RvdHlwZS4kd2EkbWQydW1lPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMub2F9O18uaEsucHJvdG90eXBlLiR3YSRtaFpVRWY9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5FYX07Xy5oSy5wcm90b3R5cGUuJHdhJFY2NGlTYz1mdW5jdGlvbigpe3JldHVybiB0aGlzLm9uUGFzdGV9O18uaEsucHJvdG90eXBlLiR3YSRmcGZURWU9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5vbkJsdXJ9O18uaEsucHJvdG90eXBlLiR3YSRMZzVTVj1mdW5jdGlvbigpe3JldHVybiB0aGlzLm9uSW5wdXR9O18uaEsucHJvdG90eXBlLiR3YSRMaHZVMmU9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5vbk1vdXNlRG93bn07Cl8uaEsucHJvdG90eXBlLiR3YSRLanNxUGQ9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5vbkNsaWNrfTtfLmhLLnByb3RvdHlwZS4kd2EkazRJc2ViPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuVGJ9O18uanMoXy5JZ2UsXy5oSyk7Cl8udigpOwp9Y2F0Y2goZSl7Xy5fRHVtcEV4Y2VwdGlvbihlKX0KdHJ5ewpfLlZnZT1fLmtjKCJIcjVhaCIsW18uUHEsXy5kS10pOwp9Y2F0Y2goZSl7Xy5fRHVtcEV4Y2VwdGlvbihlKX0KdHJ5ewpfLmlLPWZ1bmN0aW9uKGEsLi4uYil7Zm9yKGxldCBjIG9mIGEuY2FsbGJhY2tzKWMuYXBwbHkoYSxiKX07Xy5qSz1jbGFzc3tjb25zdHJ1Y3Rvcigpe3RoaXMuY2FsbGJhY2tzPVtdfXJlZ2lzdGVyKGEpe3RoaXMuY2FsbGJhY2tzLnB1c2goYSk7cmV0dXJuKCk9Pnt2YXIgYj10aGlzLmNhbGxiYWNrcy5pbmRleE9mKGEpO2I+PTAmJnRoaXMuY2FsbGJhY2tzLnNwbGljZShiLDEpfX19Owp9Y2F0Y2goZSl7Xy5fRHVtcEV4Y2VwdGlvbihlKX0KdHJ5ewpfLldnZT17a2luZDoiZml0In07Cn1jYXRjaChlKXtfLl9EdW1wRXhjZXB0aW9uKGUpfQp0cnl7Cl8uWGdlPWZ1bmN0aW9uKGEpe3ZhciBiPW5ldyBVUkxTZWFyY2hQYXJhbXMoYSk7YT1iLmdldCgidWRtIik7Yj1iLmdldCgicSIpO3JldHVybiBhP2I/MjowOjF9Owp9Y2F0Y2goZSl7Xy5fRHVtcEV4Y2VwdGlvbihlKX0KdHJ5ewpfLnUoIkhyNWFoIik7Cl8uWWdlPWNsYXNzIGV4dGVuZHMgXy5FaXtzdGF0aWMgUWEoKXtyZXR1cm57c2VydmljZTp7U2I6Xy5wdn0sbW9kZWw6e0dyOl8uZUt9fX1jb25zdHJ1Y3RvcihhKXtzdXBlcigpO3RoaXMud2E9KCk9Pnt9O3RoaXMuZUw9dm9pZCAwO3RoaXMub2E9bmV3IF8uaks7dGhpcy5TYj1hLnNlcnZpY2UuU2I7YS5tb2RlbC5Hci5rYShfLlZkZSx0aGlzKTt0aGlzLmxpc3Rlbigib2NEU3ZkIixiPT57dmFyIGM7dGhpcy5rYT1iPXRoaXMuTFNhKChjPV8ua2QoNixiLmRhdGEudXJsKSkhPW51bGw/Yzp2b2lkIDApO18uaUsodGhpcy5vYSxiKX0pO3RoaXMua2E9dGhpcy5MU2EoKX1BVWIoKXtyZXR1cm4gdGhpcy53YSgpfWhGKCl7cmV0dXJuIHRoaXMuZUx9TFNhKGEpe3JldHVybiBfLlhnZShhIT1udWxsP2E6Xy5vdih0aGlzLlNiKSl9fTtfLlZyKF8uVmdlLF8uWWdlKTsKXy52KCk7Cn1jYXRjaChlKXtfLl9EdW1wRXhjZXB0aW9uKGUpfQp0cnl7Cl8uJGdlPWZ1bmN0aW9uKGEpe3JldHVybiBuZXcgXy5SZChhLmxlZnQsYS50b3AsYS53aWR0aCxhLmhlaWdodCl9O18uYWhlPWZ1bmN0aW9uKGEsYil7cmV0dXJuIG5ldyBfLlJkKGEueC1iLndpZHRoLzIsYS55LWIuaGVpZ2h0LzIsYi53aWR0aCxiLmhlaWdodCl9O18uYmhlPWZ1bmN0aW9uKGEpe3ZhciBiPUluZmluaXR5LGM9LUluZmluaXR5LGQ9SW5maW5pdHksZT0tSW5maW5pdHk7Zm9yKGxldCB7eDpmLHk6Z31vZiBhKWI9TWF0aC5taW4oYixmKSxjPU1hdGgubWF4KGMsZiksZD1NYXRoLm1pbihkLGcpLGU9TWF0aC5tYXgoZSxnKTtyZXR1cm4gbmV3IF8uUmQoYixkLGMtYixlLWQpfTtfLmNoZT1uZXcgXy5SZCgwLDAsMSwxKTsKfWNhdGNoKGUpe18uX0R1bXBFeGNlcHRpb24oZSl9CnRyeXsKXy5kaGU9WzEsMl07Xy5laGU9WzEsMyw0XTsKfWNhdGNoKGUpe18uX0R1bXBFeGNlcHRpb24oZSl9CnRyeXsKXy5maGU9ZnVuY3Rpb24oYSxiKXtyZXR1cm4gXy5sayhhLDIsYil9O18uZ2hlPWZ1bmN0aW9uKGEsYil7cmV0dXJuIF8ubGsoYSw0LGIpfTtfLmhoZT1jbGFzcyBleHRlbmRzIF8ubHtjb25zdHJ1Y3RvcihhKXtzdXBlcihhKX11ZSgpe3JldHVybiBfLnhlKHRoaXMsMSl9SnYoYSl7cmV0dXJuIF8ubGsodGhpcywxLGEpfUl5KCl7cmV0dXJuIF8ud2UodGhpcywxKX1JZSgpe3JldHVybiBfLnhlKHRoaXMsMil9aXkoKXtyZXR1cm4gXy53ZSh0aGlzLDIpfWdldEhlaWdodCgpe3JldHVybiBfLnhlKHRoaXMsMyl9c2V0SGVpZ2h0KGEpe3JldHVybiBfLmxrKHRoaXMsMyxhKX1xZygpe3JldHVybiBfLndlKHRoaXMsMyl9Z2V0V2lkdGgoKXtyZXR1cm4gXy54ZSh0aGlzLDQpfVZpKCl7cmV0dXJuIF8ud2UodGhpcyw0KX19O18uaWhlPWNsYXNzIGV4dGVuZHMgXy5se2NvbnN0cnVjdG9yKGEpe3N1cGVyKGEpfX07Xy5qaGU9Y2xhc3MgZXh0ZW5kcyBfLmx7Y29uc3RydWN0b3IoYSl7c3VwZXIoYSl9fTsKXy5qaGUucHJvdG90eXBlLlhhPSJmWDNxMWQiOwp9Y2F0Y2goZSl7Xy5fRHVtcEV4Y2VwdGlvbihlKX0KdHJ5ewp2YXIga2hlO18ubGhlPWZ1bmN0aW9uKGEpe3RyeXtyZXR1cm4gXy5naGUoXy5maGUoKG5ldyBfLmhoZSkuSnYoa2hlKGEubGVmdCkpLGtoZShhLnRvcCkpLnNldEhlaWdodChraGUoYS5oZWlnaHQpKSxraGUoYS53aWR0aCkpfWNhdGNoKGIpe3JldHVybiBfLmZhKGIpLF8uZ2hlKF8uZmhlKChuZXcgXy5oaGUpLkp2KDApLDApLnNldEhlaWdodCgxRTUpLDFFNSl9fTtraGU9ZnVuY3Rpb24oYSl7cmV0dXJuIF8uRmQoTWF0aC5yb3VuZChhKjFFNSksMCwxRTUpfTtfLm1oZT1jbGFzcyBleHRlbmRzIF8ubHtjb25zdHJ1Y3RvcihhKXtzdXBlcihhKX19O18ubmhlPWNsYXNzIGV4dGVuZHMgXy5se2NvbnN0cnVjdG9yKGEpe3N1cGVyKGEpfXNldFNlbGVjdGlvblJhbmdlKGEpe3JldHVybiBfLkdqKHRoaXMsMixfLmRoZSxhKX19O18ub2hlPWNsYXNzIGV4dGVuZHMgXy5se2NvbnN0cnVjdG9yKGEpe3N1cGVyKGEpfX07Cl8ucGhlPWNsYXNzIGV4dGVuZHMgXy5se2NvbnN0cnVjdG9yKGEpe3N1cGVyKGEpfXNldFgoYSl7cmV0dXJuIF8ubGsodGhpcywxLGEpfXNldFkoYSl7cmV0dXJuIF8ubGsodGhpcywyLGEpfX07Cn1jYXRjaChlKXtfLl9EdW1wRXhjZXB0aW9uKGUpfQp0cnl7Cl8ucWhlPV8ua2MoIkhuSUQ0YiIsW10pOwp9Y2F0Y2goZSl7Xy5fRHVtcEV4Y2VwdGlvbihlKX0KdHJ5ewpfLnUoIkhuSUQ0YiIpOwp2YXIgdGhlO18ucmhlPWZ1bmN0aW9uKGEpe3JldHVybihhPT1udWxsPzA6YS5JeSgpKSYmKGE9PW51bGw/MDphLml5KCkpJiYoYT09bnVsbD8wOmEucWcoKSkmJihhPT1udWxsPzA6YS5WaSgpKT9uZXcgXy5SZChhLnVlKCkvMUU1LGEuSWUoKS8xRTUsYS5nZXRXaWR0aCgpLzFFNSxhLmdldEhlaWdodCgpLzFFNSk6bnVsbH07Xy5zaGU9ZnVuY3Rpb24oYSl7dmFyIGI7cmV0dXJuKGI9Xy5ZSGEoYSxfLmNoZSkpIT1udWxsP2I6YX07Xy51aGU9ZnVuY3Rpb24oYSl7cmV0dXJuIHRoZShhLmxlZnQpfHx0aGUoYS50b3ApfHx0aGUoYS53aWR0aCl8fHRoZShhLmhlaWdodCk/KF8uZmEoRXJyb3IoImdsYCIrYS50b1N0cmluZygpKSksXy5jaGUpOmF9O3RoZT1mdW5jdGlvbihhKXtyZXR1cm4haXNGaW5pdGUoYSl8fGlzTmFOKGEpfTtfLnZoZT1mdW5jdGlvbihhLGIpe3ZhciBjPV8udWhlKGIuVVIpO2Eua2E9e1VSOmMsc3RhdHVzOjB9O18uaUsoYS5QYSxPYmplY3QuYXNzaWduKHt9LGIse1VSOmN9KSl9OwpfLndoZT1jbGFzcyBleHRlbmRzIF8uRWl7Y29uc3RydWN0b3IoKXtzdXBlcigpO3RoaXMuUGE9bmV3IF8uaks7dGhpcy5LYT1uZXcgXy5qSzt0aGlzLk9hPW5ldyBfLmpLO3RoaXMubGlzdGVuKCJKdHphbWIiLCgpPT57dGhpcy53YSgpJiZ0aGlzLklhKCl9KX1JYSgpe3RoaXMua2E9dm9pZCAwO18uaUsodGhpcy5PYSl9b2EoKXt2YXIgYTtyZXR1cm4oYT10aGlzLmthKT09bnVsbD92b2lkIDA6YS5VUn1SYSgpe3ZhciBhO3JldHVybigoYT10aGlzLmthKT09bnVsbD92b2lkIDA6YS5zdGF0dXMpPT09MD90aGlzLmthLlVSOnZvaWQgMH13YSgpe3JldHVybiEhdGhpcy5rYX1FYShhKXtyZXR1cm4gdGhpcy5QYS5yZWdpc3RlcihhKX1CYShhKXtyZXR1cm4gdGhpcy5LYS5yZWdpc3RlcihhKX1OYShhKXtyZXR1cm4gdGhpcy5PYS5yZWdpc3RlcihhKX1FX2IoYSl7dGhpcy53YSgpJiZ0aGlzLklhKCk7dmFyIGI7YT0oYj1fLnEoYSxfLmloZSwxNCkpPT1udWxsP3ZvaWQgMDpfLlNoKGIsXy5oaGUsCjMsXy5laGUpO2lmKGI9Xy5yaGUoYSkpcmV0dXJuIF8udmhlKHRoaXMse1VSOmJ9KSx7a2luZDoicnMiLFVSOmJ9fX07Xy5WcihfLnFoZSxfLndoZSk7Cl8udigpOwp9Y2F0Y2goZSl7Xy5fRHVtcEV4Y2VwdGlvbihlKX0KdHJ5ewpfLnlsYz1mdW5jdGlvbihhKXt2YXIgYj1hLmV2ZW50LmRldGFpbDtyZXR1cm4gYiYmYi50eXBlP2IudHlwZT09PSJtZW51X2l0ZW1fc2VsZWN0ZWQiOlN0cmluZyhhLnR5cGUpPT09Im1NZjYxZSJ9Owp9Y2F0Y2goZSl7Xy5fRHVtcEV4Y2VwdGlvbihlKX0KdHJ5ewpfLlpZYj17TWdiOnsxRTM6e290aGVyOiIwSyJ9LDFFNDp7b3RoZXI6IjAwSyJ9LDFFNTp7b3RoZXI6IjAwMEsifSwxRTY6e290aGVyOiIwTSJ9LDFFNzp7b3RoZXI6IjAwTSJ9LDFFODp7b3RoZXI6IjAwME0ifSwxRTk6e290aGVyOiIwQiJ9LDFFMTA6e290aGVyOiIwMEIifSwxRTExOntvdGhlcjoiMDAwQiJ9LDFFMTI6e290aGVyOiIwVCJ9LDFFMTM6e290aGVyOiIwMFQifSwxRTE0OntvdGhlcjoiMDAwVCJ9fSxnSWI6ezFFMzp7b3RoZXI6IjAgdGhvdXNhbmQifSwxRTQ6e290aGVyOiIwMCB0aG91c2FuZCJ9LDFFNTp7b3RoZXI6IjAwMCB0aG91c2FuZCJ9LDFFNjp7b3RoZXI6IjAgbWlsbGlvbiJ9LDFFNzp7b3RoZXI6IjAwIG1pbGxpb24ifSwxRTg6e290aGVyOiIwMDAgbWlsbGlvbiJ9LDFFOTp7b3RoZXI6IjAgYmlsbGlvbiJ9LDFFMTA6e290aGVyOiIwMCBiaWxsaW9uIn0sMUUxMTp7b3RoZXI6IjAwMCBiaWxsaW9uIn0sMUUxMjp7b3RoZXI6IjAgdHJpbGxpb24ifSwxRTEzOntvdGhlcjoiMDAgdHJpbGxpb24ifSwKMUUxNDp7b3RoZXI6IjAwMCB0cmlsbGlvbiJ9fX07Cl8uWlliPXtNZ2I6ezFFMzp7b3RoZXI6IjBrIn0sMUU0OntvdGhlcjoiMDBrIn0sMUU1OntvdGhlcjoiMDAwayJ9LDFFNjp7b3RoZXI6IjBcdTAwYTBtaWxsLiJ9LDFFNzp7b3RoZXI6IjAwXHUwMGEwbWlsbC4ifSwxRTg6e290aGVyOiIwMDBcdTAwYTBtaWxsLiJ9LDFFOTp7b3RoZXI6IjBcdTAwYTBtcmQuIn0sMUUxMDp7b3RoZXI6IjAwXHUwMGEwbXJkLiJ9LDFFMTE6e290aGVyOiIwMDBcdTAwYTBtcmQuIn0sMUUxMjp7b3RoZXI6IjBcdTAwYTBiaWxsLiJ9LDFFMTM6e290aGVyOiIwMFx1MDBhMGJpbGwuIn0sMUUxNDp7b3RoZXI6IjAwMFx1MDBhMGJpbGwuIn19LGdJYjp7MUUzOntvdGhlcjoiMCB0dXNlbiJ9LDFFNDp7b3RoZXI6IjAwIHR1c2VuIn0sMUU1OntvdGhlcjoiMDAwIHR1c2VuIn0sMUU2OntvdGhlcjoiMCBtaWxsaW9uZXIifSwxRTc6e290aGVyOiIwMCBtaWxsaW9uZXIifSwxRTg6e290aGVyOiIwMDAgbWlsbGlvbmVyIn0sMUU5OntvdGhlcjoiMCBtaWxsaWFyZGVyIn0sCjFFMTA6e290aGVyOiIwMCBtaWxsaWFyZGVyIn0sMUUxMTp7b3RoZXI6IjAwMCBtaWxsaWFyZGVyIn0sMUUxMjp7b3RoZXI6IjAgYmlsbGlvbmVyIn0sMUUxMzp7b3RoZXI6IjAwIGJpbGxpb25lciJ9LDFFMTQ6e290aGVyOiIwMDAgYmlsbGlvbmVyIn19fTtfLmFaYj1mdW5jdGlvbihhKXtyZXR1cm4gYSBpbiBfLiRZYj9fLiRZYlthXVsxXTphfTsKXy4kWWI9e0FFRDpbMiwiZGgiLCJcdTA2MmYuXHUwNjI1LiJdLEFMTDpbMCwiTGVrIiwiTGVrIl0sQVVEOlsyLCIkIiwiQVUkIl0sQkRUOlsyLCJcdTA5ZjMiLCJUayJdLEJHTjpbMiwibGV2IiwibGV2Il0sQlJMOlsyLCJSJCIsIlIkIl0sQ0FEOlsyLCIkIiwiQyQiXSxDREY6WzIsIkZyQ0QiLCJDREYiXSxDSEY6WzIsIkNIRiIsIkNIRiJdLENMUDpbMCwiJCIsIkNMJCJdLENOWTpbMiwiXHUwMGE1IiwiUk1CXHUwMGE1Il0sQ09QOlszMiwiJCIsIkNPTCQiXSxDUkM6WzAsIlx1MjBhMSIsIkNSXHUyMGExIl0sQ1pLOls1MCwiS1x1MDEwZCIsIktcdTAxMGQiXSxES0s6WzUwLCJrci4iLCJrci4iXSxET1A6WzIsIlJEJCIsIlJEJCJdLEVHUDpbMiwiXHUwMGEzIiwiTEUiXSxFVEI6WzIsIkJpcnIiLCJCaXJyIl0sRVVSOlsyLCJcdTIwYWMiLCJcdTIwYWMiXSxHQlA6WzIsIlx1MDBhMyIsIkdCXHUwMGEzIl0sSEtEOlsyLCIkIiwiSEskIl0sSFJLOlsyLCJrbiIsImtuIl0sSFVGOlszNCwiRnQiLAoiRnQiXSxJRFI6WzAsIlJwIiwiUnAiXSxJTFM6WzM0LCJcdTIwYWEiLCJJTFx1MjBhYSJdLElOUjpbMiwiXHUyMGI5IiwiUnMiXSxJUlI6WzAsIlJpYWwiLCJJUlIiXSxJU0s6WzAsImtyIiwia3IiXSxKTUQ6WzIsIiQiLCJKQSQiXSxKUFk6WzAsIlx1MDBhNSIsIkpQXHUwMGE1Il0sS1JXOlswLCJcdTIwYTkiLCJLUlx1MjBhOSJdLExLUjpbMiwiUnMiLCJTTFJzIl0sTFRMOlsyLCJMdCIsIkx0Il0sTU5UOlswLCJcdTIwYWUiLCJNTlx1MjBhZSJdLE1WUjpbMiwiUmYiLCJNVlIiXSxNWE46WzIsIiQiLCJNZXgkIl0sTVlSOlsyLCJSTSIsIlJNIl0sTk9LOls1MCwia3IiLCJOT2tyIl0sUEFCOlsyLCJCLy4iLCJCLy4iXSxQRU46WzIsIlMvLiIsIlMvLiJdLFBIUDpbMiwiXHUyMGIxIiwiUEhQIl0sUEtSOlswLCJScyIsIlBLUnMuIl0sUExOOls1MCwielx1MDE0MiIsInpcdTAxNDIiXSxST046WzIsIlJPTiIsIlJPTiJdLFJTRDpbMCwiZGluIiwiUlNEIl0sUlVCOls1MCwiXHUyMGJkIiwKIlJVQiJdLFNBUjpbMiwiU0FSIiwiU0FSIl0sU0VLOls1MCwia3IiLCJrciJdLFNHRDpbMiwiJCIsIlMkIl0sVEhCOlsyLCJcdTBlM2YiLCJUSEIiXSxUUlk6WzIsIlx1MjBiYSIsIlRSWSJdLFRXRDpbMiwiJCIsIk5UJCJdLFRaUzpbMCwiVFNoIiwiVFNoIl0sVUFIOlsyLCJcdTA0MzNcdTA0NDBcdTA0M2QuIiwiVUFIIl0sVVNEOlsyLCIkIiwiVVMkIl0sVVlVOlsyLCIkIiwiJFUiXSxWTkQ6WzQ4LCJcdTIwYWIiLCJWTlx1MjBhYiJdLFlFUjpbMCwiUmlhbCIsIlJpYWwiXSxaQVI6WzIsIlIiLCJaQVIiXX07Xy5Ldz17REVDSU1BTF9TRVA6Ii4iLEdST1VQX1NFUDoiLCIsWWhiOiIlIixYMmE6IjAiLENKYjoiKyIsUGhiOiItIixVZ2I6IkUiLFpoYjoiXHUyMDMwIix4MmE6Ilx1MjIxZSIsdkpiOiJOYU4iLERFQ0lNQUxfUEFUVEVSTjoiIywjIzAuIyMjIixHSmI6IiNFMCIsQkpiOiIjLCMjMCUiLE5nYjoiXHUwMGE0IywjIzAuMDAiLFVsYToiVVNEIn07Xy5Ldz17REVDSU1BTF9TRVA6IiwiLEdST1VQX1NFUDoiXHUwMGEwIixZaGI6IiUiLFgyYToiMCIsQ0piOiIrIixQaGI6Ilx1MjIxMiIsVWdiOiJFIixaaGI6Ilx1MjAzMCIseDJhOiJcdTIyMWUiLHZKYjoiTmFOIixERUNJTUFMX1BBVFRFUk46IiMsIyMwLiMjIyIsR0piOiIjRTAiLEJKYjoiIywjIzBcdTAwYTAlIixOZ2I6IiMsIyMwLjAwXHUwMGEwXHUwMGE0Oy0jLCMjMC4wMFx1MDBhMFx1MDBhNCIsVWxhOiJOT0sifTt2YXIgYlpiLGNaYjsKXy5Mdz1mdW5jdGlvbihhLGIsYyl7dmFyIGQ7aWYoZD1iKXthOmlmKGImJmIubGVuZ3RoPT09Myl7Zm9yKGQ9MDtkPDM7ZCsrKXtsZXQgZT1iW2RdO2lmKGU8IkEifHxlPiJaIiYmZTwiYSJ8fGU+InoiKXtkPSExO2JyZWFrIGF9fWQ9ITB9ZWxzZSBkPSExO2Q9IWR9aWYoZCl0aHJvdyBuZXcgVHlwZUVycm9yKCJuZyIpO3RoaXMubmI9dGhpcy5PYj0hMTt0aGlzLlBhPWI/Yi50b1VwcGVyQ2FzZSgpOm51bGw7dGhpcy5KYj1jfHwwO3RoaXMuUmE9NDA7dGhpcy5BYT0xO3RoaXMuTmE9MDt0aGlzLmthPTM7dGhpcy5aYT10aGlzLndhPTA7dGhpcy5GYj0hMTt0aGlzLlNhPXRoaXMuSWE9IiI7dGhpcy5CYT1fLkt3LlBoYjt0aGlzLkthPSIiO3RoaXMub2E9MTt0aGlzLkdhPSExO3RoaXMuRWE9W107dGhpcy5yYj10aGlzLkFiPSExO3RoaXMuT2E9MDt0aGlzLkliPXR5cGVvZiBhPT09InN0cmluZyI/YToiIjtpZih0eXBlb2YgYT09PSJudW1iZXIiKXN3aXRjaChhKXtjYXNlIDE6YlpiKHRoaXMsXy5Ldy5ERUNJTUFMX1BBVFRFUk4pOwpicmVhaztjYXNlIDI6YlpiKHRoaXMsXy5Ldy5HSmIpO2JyZWFrO2Nhc2UgMzpiWmIodGhpcyxfLkt3LkJKYik7YnJlYWs7Y2FzZSA0OmE9Xy5Ldy5OZ2I7Yj1bIjAiXTtpZihjPV8uJFliW3RoaXMuUGF8fF8uS3cuVWxhXSl7Yz1jWzBdJjc7aWYoYz4wKWZvcihiLnB1c2goIi4iKSxkPTA7ZDxjO2QrKyliLnB1c2goIjAiKTthPWEucmVwbGFjZSgvMC4wMC9nLGIuam9pbigiIikpfWJaYih0aGlzLGEpO2JyZWFrO2Nhc2UgNTpjWmIodGhpcywxKTticmVhaztjYXNlIDY6Y1piKHRoaXMsMik7YnJlYWs7ZGVmYXVsdDp0aHJvdyBFcnJvcigicWciKTt9ZWxzZSBiWmIodGhpcyxhKX07Xy5Ndz1mdW5jdGlvbihhLGIpe2lmKGEuTmE+MCYmYj4wKXRocm93IEVycm9yKCJvZyIpO2EubmI9YS5uYnx8YiE9YS53YTthLndhPWI7cmV0dXJuIGF9O18uTnc9ZnVuY3Rpb24oYSxiKXtpZihiPjMwOCl0aHJvdyBFcnJvcigicGdgIitiKTthLm5iPWEubmJ8fGIhPWEua2E7YS5rYT1ifTsKXy5kWmI9ZnVuY3Rpb24oYSxiKXtpZihhLndhPjAmJmI+PTApdGhyb3cgRXJyb3IoIm9nIik7YS5PYj1iIT09YS5OYTthLk5hPWJ9OwpiWmI9ZnVuY3Rpb24oYSxiKXthLkliPWIucmVwbGFjZSgvIC9nLCJcdTAwYTAiKTt2YXIgYz1bMF07YS5JYT1lWmIoYSxiLGMpO3ZhciBkPWNbMF0sZT0tMSxmPTAsZz0wLGg9MCxrPS0xLG09Yi5sZW5ndGg7Zm9yKGxldCBuPSEwO2NbMF08bSYmbjtjWzBdKyspc3dpdGNoKGIuY2hhckF0KGNbMF0pKXtjYXNlICIjIjpnPjA/aCsrOmYrKztrPj0wJiZlPDAmJmsrKzticmVhaztjYXNlICIwIjppZihoPjApdGhyb3cgRXJyb3IoInlnYCIrYik7ZysrO2s+PTAmJmU8MCYmaysrO2JyZWFrO2Nhc2UgIiwiOms+MCYmYS5FYS5wdXNoKGspO2s9MDticmVhaztjYXNlICIuIjppZihlPj0wKXRocm93IEVycm9yKCJ6Z2AiK2IpO2U9ZitnK2g7YnJlYWs7Y2FzZSAiRSI6aWYoYS5yYil0aHJvdyBFcnJvcigiQWdgIitiKTthLnJiPSEwO2EuWmE9MDtjWzBdKzE8bSYmYi5jaGFyQXQoY1swXSsxKT09IisiJiYoY1swXSsrLGEuRmI9ITApO2Zvcig7Y1swXSsxPG0mJmIuY2hhckF0KGNbMF0rMSk9PSIwIjspY1swXSsrLAphLlphKys7aWYoZitnPDF8fGEuWmE8MSl0aHJvdyBFcnJvcigiQmdgIitiKTtuPSExO2JyZWFrO2RlZmF1bHQ6Y1swXS0tLG49ITF9Zz09MCYmZj4wJiZlPj0wJiYoZz1lLGc9PTAmJmcrKyxoPWYtZyxmPWctMSxnPTEpO2lmKGU8MCYmaD4wfHxlPj0wJiYoZTxmfHxlPmYrZyl8fGs9PTApdGhyb3cgRXJyb3IoIkNnYCIrYik7aD1mK2craDthLmthPWU+PTA/aC1lOjA7ZT49MCYmKGEud2E9ZitnLWUsYS53YTwwJiYoYS53YT0wKSk7YS5BYT0oZT49MD9lOmgpLWY7YS5yYiYmKGEuUmE9ZithLkFhLGEua2E9PTAmJmEuQWE9PTAmJihhLkFhPTEpKTthLkVhLnB1c2goTWF0aC5tYXgoMCxrKSk7YS5BYj1lPT0wfHxlPT1oO2Q9Y1swXS1kO2EuU2E9ZVpiKGEsYixjKTtjWzBdPGIubGVuZ3RoJiZiLmNoYXJBdChjWzBdKT09IjsiPyhjWzBdKyssYS5vYSE9MSYmKGEuR2E9ITApLGEuQmE9ZVpiKGEsYixjKSxjWzBdKz1kLGEuS2E9ZVpiKGEsYixjKSk6KGEuQmErPWEuSWEsYS5LYSs9YS5TYSl9OwpjWmI9ZnVuY3Rpb24oYSxiKXthLk9hPWI7YlpiKGEsXy5Ldy5ERUNJTUFMX1BBVFRFUk4pO18uTXcoYSwwKTtfLk53KGEsMik7Xy5kWmIoYSwyKX07Cl8uTHcucHJvdG90eXBlLnBhcnNlPWZ1bmN0aW9uKGEsYil7Yj1ifHxbMF07aWYodGhpcy5PYSE9PTApdGhyb3cgRXJyb3IoInJnIik7YT1hLnJlcGxhY2UoLyB8XHUyMDJmL2csIlx1MDBhMCIpO3ZhciBjPWEuaW5kZXhPZih0aGlzLklhLGJbMF0pPT1iWzBdLGQ9YS5pbmRleE9mKHRoaXMuQmEsYlswXSk9PWJbMF07YyYmZCYmKHRoaXMuSWEubGVuZ3RoPnRoaXMuQmEubGVuZ3RoP2Q9ITE6dGhpcy5JYS5sZW5ndGg8dGhpcy5CYS5sZW5ndGgmJihjPSExKSk7Yz9iWzBdKz10aGlzLklhLmxlbmd0aDpkJiYoYlswXSs9dGhpcy5CYS5sZW5ndGgpO2lmKGEuaW5kZXhPZihfLkt3LngyYSxiWzBdKT09YlswXSl7YlswXSs9Xy5Ldy54MmEubGVuZ3RoO3ZhciBlPUluZmluaXR5fWVsc2V7ZT1hO2xldCBmPSExLGc9ITEsaD0hMSxrPS0xLG09MSxuPV8uS3cuREVDSU1BTF9TRVAscD1fLkt3LkdST1VQX1NFUCxyPV8uS3cuVWdiO2lmKHRoaXMuT2EhPTApdGhyb3cgRXJyb3IoInNnIik7cD1wLnJlcGxhY2UoL1x1MjAyZi9nLAoiXHUwMGEwIik7bGV0IHg9IiI7Zm9yKDtiWzBdPGUubGVuZ3RoO2JbMF0rKyl7bGV0IHo9ZS5jaGFyQXQoYlswXSksQj1mWmIoeik7aWYoQj49MCYmQjw9OSl4Kz1CLGg9ITA7ZWxzZSBpZih6PT1uLmNoYXJBdCgwKSl7aWYoZnx8ZylicmVhazt4Kz0iLiI7Zj0hMH1lbHNlIGlmKHo9PXAuY2hhckF0KDApJiYoIlx1MDBhMCIhPXAuY2hhckF0KDApfHxiWzBdKzE8ZS5sZW5ndGgmJmZaYihlLmNoYXJBdChiWzBdKzEpKT49MCkpe2lmKGZ8fGcpYnJlYWt9ZWxzZSBpZih6PT1yLmNoYXJBdCgwKSl7aWYoZylicmVhazt4Kz0iRSI7Zz0hMDtrPWJbMF19ZWxzZSBpZih6PT0iKyJ8fHo9PSItIil7aWYoaCYmayE9YlswXS0xKWJyZWFrO3grPXp9ZWxzZSBpZih0aGlzLm9hPT0xJiZ6PT1fLkt3LlloYi5jaGFyQXQoMCkpe2lmKG0hPTEpYnJlYWs7bT0xMDA7aWYoaCl7YlswXSsrO2JyZWFrfX1lbHNlIGlmKHRoaXMub2E9PTEmJno9PV8uS3cuWmhiLmNoYXJBdCgwKSl7aWYobSE9MSlicmVhazsKbT0xRTM7aWYoaCl7YlswXSsrO2JyZWFrfX1lbHNlIGJyZWFrfXRoaXMub2EhPTEmJihtPXRoaXMub2EpO2U9cGFyc2VGbG9hdCh4KS9tfWlmKGMpe2lmKGEuaW5kZXhPZih0aGlzLlNhLGJbMF0pIT1iWzBdKXJldHVybiBOYU47YlswXSs9dGhpcy5TYS5sZW5ndGh9ZWxzZSBpZihkKXtpZihhLmluZGV4T2YodGhpcy5LYSxiWzBdKSE9YlswXSlyZXR1cm4gTmFOO2JbMF0rPXRoaXMuS2EubGVuZ3RofXJldHVybiBkPy1lOmV9OwpfLkx3LnByb3RvdHlwZS5mb3JtYXQ9ZnVuY3Rpb24oYSl7aWYodGhpcy53YT50aGlzLmthKXRocm93IEVycm9yKCJ2ZyIpO2lmKGlzTmFOKGEpKXJldHVybiBfLkt3LnZKYjt2YXIgYj1bXTt2YXIgYz1hO2lmKHRoaXMuT2E9PTApYz1nWmI7ZWxzZXtjPU1hdGguYWJzKGMpO3ZhciBkPWhaYih0aGlzLGM8PTE/MDppWmIoYykpLkFuYjtjPWhaYih0aGlzLGQraVpiKGpaYih0aGlzLE93KGMsLWQpKS5xWGIpKX1hPU93KGEsLWMuQW5iKTsoZD1hPDB8fGE9PTAmJjEvYTwwKT9jLmF5Yj9iLnB1c2goYy5heWIpOihiLnB1c2goYy5wcmVmaXgpLGIucHVzaCh0aGlzLkJhKSk6KGIucHVzaChjLnByZWZpeCksYi5wdXNoKHRoaXMuSWEpKTtpZihpc0Zpbml0ZShhKSlpZihhKj1kPy0xOjEsYSo9dGhpcy5vYSx0aGlzLnJiKXt2YXIgZT1hO2lmKGU9PTApa1piKHRoaXMsZSx0aGlzLkFhLGIpLGxaYih0aGlzLDAsYik7ZWxzZXt2YXIgZj1NYXRoLmZsb29yKE1hdGgubG9nKGUpL01hdGgubG9nKDEwKSsKMkUtMTUpO2U9T3coZSwtZik7dmFyIGc9dGhpcy5BYTt0aGlzLlJhPjEmJnRoaXMuUmE+dGhpcy5BYT8oZz1mJXRoaXMuUmEsZzwwJiYoZz10aGlzLlJhK2cpLGU9T3coZSxnKSxmLT1nLGc9MSk6dGhpcy5BYTwxPyhmKyssZT1PdyhlLC0xKSk6KGYtPXRoaXMuQWEtMSxlPU93KGUsdGhpcy5BYS0xKSk7a1piKHRoaXMsZSxnLGIpO2xaYih0aGlzLGYsYil9fWVsc2Uga1piKHRoaXMsYSx0aGlzLkFhLGIpO2Vsc2UgYi5wdXNoKF8uS3cueDJhKTtkP2MuYnliP2IucHVzaChjLmJ5Yik6KGlzRmluaXRlKGEpJiZiLnB1c2goYy5zdWZmaXgpLGIucHVzaCh0aGlzLkthKSk6KGlzRmluaXRlKGEpJiZiLnB1c2goYy5zdWZmaXgpLGIucHVzaCh0aGlzLlNhKSk7cmV0dXJuIGIuam9pbigiIil9Owp2YXIgalpiPWZ1bmN0aW9uKGEsYil7dmFyIGM9T3coYixhLmthKTthLk5hPjAmJihjPW1aYihjLGEuTmEsYS5rYSkpO2M9TWF0aC5yb3VuZChjKTtpZihpc0Zpbml0ZShjKSl7dmFyIGQ9TWF0aC5mbG9vcihPdyhjLC1hLmthKSk7Yz1NYXRoLmZsb29yKGMtT3coZCxhLmthKSk7aWYoYzwwfHxjPj1PdygxLGEua2EpKWQ9TWF0aC5yb3VuZChiKSxjPTB9ZWxzZSBkPWIsYz0wO3JldHVybntxWGI6ZCx0dmM6Y319LGtaYj1mdW5jdGlvbihhLGIsYyxkKXtpZihhLndhPmEua2EpdGhyb3cgRXJyb3IoInZnIik7ZHx8KGQ9W10pO2I9alpiKGEsYik7dmFyIGU9Yi5xWGIsZj1iLnR2YyxnPWEud2E+MHx8Zj4wfHwhMTtiPWEud2E7ZyYmKGI9YS53YSk7Zm9yKHZhciBoPSIiLGs9ZTtrPjFFMjA7KWg9IjAiK2gsaz1NYXRoLnJvdW5kKE93KGssLTEpKTtoPWsraDt2YXIgbT1fLkt3LkRFQ0lNQUxfU0VQO2s9Xy5Ldy5YMmEuY29kZVBvaW50QXQoMCk7dmFyIG49aC5sZW5ndGgscD0wO2lmKGU+MHx8CmM+MCl7Zm9yKGU9bjtlPGM7ZSsrKWQucHVzaChTdHJpbmcuZnJvbUNvZGVQb2ludChrKSk7aWYoYS5FYS5sZW5ndGg+PTIpZm9yKGM9MTtjPGEuRWEubGVuZ3RoO2MrKylwKz1hLkVhW2NdO2M9bi1wO2lmKGM+MCl7ZT1hLkVhO3A9bj0wO3ZhciByPV8uS3cuR1JPVVBfU0VQLHg9aC5sZW5ndGg7Zm9yKGxldCBCPTA7Qjx4O0IrKylpZihkLnB1c2goU3RyaW5nLmZyb21Db2RlUG9pbnQoaytOdW1iZXIoaC5jaGFyQXQoQikpKSkseC1CPjEpe3ZhciB6PWVbcF07aWYoQjxjKXtsZXQgSD1jLUI7KHo9PT0xfHx6PjAmJkglej09PTEpJiZkLnB1c2gocil9ZWxzZSBwPGUubGVuZ3RoJiYoQj09PWM/cCs9MTp6PT09Qi1jLW4rMSYmKGQucHVzaChyKSxuKz16LHArPTEpKX19ZWxzZXtjPWg7aD1hLkVhO2U9Xy5Ldy5HUk9VUF9TRVA7ej1jLmxlbmd0aDtyPVtdO2ZvcihuPWgubGVuZ3RoLTE7bj49MCYmej4wO24tLSl7cD1oW25dO2Zvcih4PTA7eDxwJiZ6LXgtMT49MDt4Kyspci5wdXNoKFN0cmluZy5mcm9tQ29kZVBvaW50KGsrCk51bWJlcihjLmNoYXJBdCh6LXgtMSkpKSk7ei09cDt6PjAmJnIucHVzaChlKX1kLnB1c2guYXBwbHkoZCxyLnJldmVyc2UoKSl9fWVsc2UgZ3x8ZC5wdXNoKFN0cmluZy5mcm9tQ29kZVBvaW50KGspKTsoYS5BYnx8ZykmJmQucHVzaChtKTtmPVN0cmluZyhmKTtnPWYuc3BsaXQoImUrIik7Zy5sZW5ndGg9PTImJihmPVN0cmluZyhtWmIocGFyc2VGbG9hdChnWzBdKSxhLk5hLDEpKSxmPWYucmVwbGFjZSgiLiIsIiIpLGYrPSIwIi5yZXBlYXQocGFyc2VJbnQoZ1sxXSwxMCktZi5sZW5ndGgrMSkpO2Eua2ErMT5mLmxlbmd0aCYmKGY9IjEiKyIwIi5yZXBlYXQoYS5rYS1mLmxlbmd0aCkrZik7Zm9yKGE9Zi5sZW5ndGg7Zi5jaGFyQXQoYS0xKT09IjAiJiZhPmIrMTspYS0tO2ZvcihiPTE7YjxhO2IrKylkLnB1c2goU3RyaW5nLmZyb21Db2RlUG9pbnQoaytOdW1iZXIoZi5jaGFyQXQoYikpKSl9LGxaYj1mdW5jdGlvbihhLGIsYyl7Yy5wdXNoKF8uS3cuVWdiKTtiPDA/KGI9LWIsYy5wdXNoKF8uS3cuUGhiKSk6CmEuRmImJmMucHVzaChfLkt3LkNKYik7Yj0iIitiO3ZhciBkPV8uS3cuWDJhO2ZvcihsZXQgZT1iLmxlbmd0aDtlPGEuWmE7ZSsrKWMucHVzaChkKTthPWQuY29kZVBvaW50QXQoMCktblpiO2ZvcihkPTA7ZDxiLmxlbmd0aDtkKyspYy5wdXNoKFN0cmluZy5mcm9tQ29kZVBvaW50KGErYi5jb2RlUG9pbnRBdChkKSkpfSxmWmI9ZnVuY3Rpb24oYSl7YT1hLmNvZGVQb2ludEF0KDApO2lmKDQ4PD1hJiZhPDU4KXJldHVybiBhLTQ4O3ZhciBiPV8uS3cuWDJhLmNvZGVQb2ludEF0KDApO3JldHVybiBiPD1hJiZhPGIrMTA/YS1iOi0xfSxuWmI9IjAiLmNvZGVQb2ludEF0KDApLGVaYj1mdW5jdGlvbihhLGIsYyl7Zm9yKHZhciBkPSIiLGU9ITEsZj1iLmxlbmd0aDtjWzBdPGY7Y1swXSsrKXt2YXIgZz1iLmNoYXJBdChjWzBdKTtpZihnPT0iJyIpY1swXSsxPGYmJmIuY2hhckF0KGNbMF0rMSk9PSInIj8oY1swXSsrLGQrPSInIik6ZT0hZTtlbHNlIGlmKGUpZCs9ZztlbHNlIHN3aXRjaChnKXtjYXNlICIjIjpjYXNlICIwIjpjYXNlICIsIjpjYXNlICIuIjpjYXNlICI7IjpyZXR1cm4gZDsKY2FzZSAiXHUwMGE0IjppZihjWzBdKzE8ZiYmYi5jaGFyQXQoY1swXSsxKT09Ilx1MDBhNCIpY1swXSsrLGQrPWEuUGF8fF8uS3cuVWxhO2Vsc2Ugc3dpdGNoKGEuSmIpe2Nhc2UgMDpkKz1fLmFaYihhLlBhfHxfLkt3LlVsYSk7YnJlYWs7Y2FzZSAyOmc9YS5QYXx8Xy5Ldy5VbGE7bGV0IGg9Xy4kWWJbZ107ZCs9aD9nPT1oWzFdP2c6ZysiICIraFsxXTpnO2JyZWFrO2Nhc2UgMTpnPWEuUGF8fF8uS3cuVWxhLGQrPWcgaW4gXy4kWWI/Xy4kWWJbZ11bMl06Z31icmVhaztjYXNlICIlIjppZighYS5HYSYmYS5vYSE9MSl0aHJvdyBFcnJvcigid2ciKTtpZihhLkdhJiZhLm9hIT0xMDApdGhyb3cgRXJyb3IoInhnIik7YS5vYT0xMDA7YS5HYT0hMTtkKz1fLkt3LlloYjticmVhaztjYXNlICJcdTIwMzAiOmlmKCFhLkdhJiZhLm9hIT0xKXRocm93IEVycm9yKCJ3ZyIpO2lmKGEuR2EmJmEub2EhPTFFMyl0aHJvdyBFcnJvcigieGciKTthLm9hPTFFMzthLkdhPSExO2QrPV8uS3cuWmhiO2JyZWFrOwpkZWZhdWx0OmQrPWd9fXJldHVybiBkfSxnWmI9e0FuYjowLGF5YjoiIixieWI6IiIscHJlZml4OiIiLHN1ZmZpeDoiIn0saFpiPWZ1bmN0aW9uKGEsYil7YT1hLk9hPT0xP18uWlliLk1nYjpfLlpZYi5nSWI7YT09bnVsbCYmKGE9Xy5aWWIuTWdiKTtpZihiPDMpcmV0dXJuIGdaYjtiPU1hdGgubWluKDE0LGIpO3ZhciBjPWFbT3coMSxiKV07Zm9yKC0tYjshYyYmYj49MzspYz1hW093KDEsYildLGItLTtpZighYylyZXR1cm4gZ1piO2M9Yy5vdGhlcjt2YXIgZD1hPSIiLGU9Yy5pbmRleE9mKCI7Iik7ZT49MCYmKGM9Yy5zdWJzdHJpbmcoMCxlKSxlPWMuc3Vic3RyaW5nKGUrMSkpJiYoZD0vKFteMF0qKSgwKykoLiopLy5leGVjKGUpLGE9ZFsxXSxkPWRbM10pO3JldHVybiBjJiZjIT0iMCI/KGM9LyhbXjBdKikoMCspKC4qKS8uZXhlYyhjKSk/e0FuYjpiKzEtKGNbMl0ubGVuZ3RoLTEpLGF5YjphLGJ5YjpkLHByZWZpeDpjWzFdLHN1ZmZpeDpjWzNdfTpnWmI6Z1pifSxpWmI9ZnVuY3Rpb24oYSl7aWYoIWlzRmluaXRlKGEpKXJldHVybiBhPgowP2E6MDtmb3IodmFyIGI9MDsoYS89MTApPj0xOyliKys7cmV0dXJuIGJ9LE93PWZ1bmN0aW9uKGEsYil7aWYoIWF8fCFpc0Zpbml0ZShhKXx8Yj09MClyZXR1cm4gYTthPVN0cmluZyhhKS5zcGxpdCgiZSIpO3JldHVybiBwYXJzZUZsb2F0KGFbMF0rImUiKyhwYXJzZUludChhWzFdfHwwLDEwKStiKSl9LG9aYj1mdW5jdGlvbihhLGIpe3JldHVybiBhJiZpc0Zpbml0ZShhKT9PdyhNYXRoLnJvdW5kKE93KGEsYikpLC1iKTphfSxtWmI9ZnVuY3Rpb24oYSxiLGMpe2lmKCFhKXJldHVybiBhO2I9Yi1pWmIoYSktMTtyZXR1cm4gYjwtYz9vWmIoYSwtYyk6b1piKGEsYil9Owp9Y2F0Y2goZSl7Xy5fRHVtcEV4Y2VwdGlvbihlKX0KdHJ5ewp2YXIgcVpiO18ucFpiPWZ1bmN0aW9uKGEsYixjKXtjPV8uSmEoYSxiLGMpO2M8MCYmXy5ZYWEoYSwtKGMrMSksMCxiKX07Xy5Qdz1mdW5jdGlvbihhKXtyZXR1cm4gXy50KGEsMTcpfTtfLlF3PWZ1bmN0aW9uKGEpe3JldHVybiBfLnQoYSw3Nil9O3FaYj1mdW5jdGlvbihhLGIpe3ZhciBjPWF8MDtpZih2b2lkIDA9PT1iKXtiPU1hdGg7dmFyIGQ9Yi5taW47bGV0IGU9YSsiIixmPWUuaW5kZXhPZigiLiIpO2I9ZC5jYWxsKGIsZj09PS0xPzA6ZS5sZW5ndGgtZi0xLDMpfWQ9TWF0aC5wb3coMTAsYik7YT17djpiLGY6KGEqZHwwKSVkfTtyZXR1cm4gYz09MSYmYS52PT0wPyJvbmUiOiJvdGhlciJ9O18uUnc9cVpiPWZ1bmN0aW9uKGEpe3JldHVybiBhPT0xPyJvbmUiOiJvdGhlciJ9Owp9Y2F0Y2goZSl7Xy5fRHVtcEV4Y2VwdGlvbihlKX0KdHJ5ewp2YXIgJHFjOyRxYz1mdW5jdGlvbihhKXtyZXR1cm4gYSUxMD09MSYmYSUxMDAhPTExPyJvbmUiOmElMTA9PTImJmElMTAwIT0xMj8idHdvIjphJTEwPT0zJiZhJTEwMCE9MTM/ImZldyI6Im90aGVyIn07dmFyIGFyYz0kcWM9ZnVuY3Rpb24oKXtyZXR1cm4ib3RoZXIifTt2YXIgYnJjLGNyYyxkcmMsZXJjLGZyYyxncmMsanJjLGtyYyxocmMsbHJjLG1yYyxucmMsb3JjLGlyYyxwcmMscXJjLHJyYztfLkZ6PWZ1bmN0aW9uKGEpe3RoaXMud2E9YTt0aGlzLm9hPXRoaXMua2E9dGhpcy5CYT1udWxsO2E9Xy5Ldzt2YXIgYj1fLlpZYjtpZihicmMhPT1hfHxjcmMhPT1iKWJyYz1hLGNyYz1iLGRyYz1uZXcgXy5MdygxKTt0aGlzLkVhPWRyY307YnJjPW51bGw7Y3JjPW51bGw7ZHJjPW51bGw7ZXJjPVJlZ0V4cCgiJyhbe30jXS4qPyknIiwiZyIpO2ZyYz1SZWdFeHAoIicnIiwiZyIpO18uRnoucHJvdG90eXBlLmZvcm1hdD1mdW5jdGlvbihhKXtyZXR1cm4gZ3JjKHRoaXMsYSwhMSl9O18uR3o9ZnVuY3Rpb24oYSxiKXtyZXR1cm4gZ3JjKGEsYiwhMCl9OwpncmM9ZnVuY3Rpb24oYSxiLGMpe2lmKGEud2Epe2EuQmE9W107dmFyIGQ9aHJjKGEsYS53YSk7YS5vYT1pcmMoYSxkKTthLndhPW51bGx9aWYoIWEub2F8fGEub2EubGVuZ3RoPT0wKXJldHVybiIiO2Eua2E9Xy5HYShhLkJhKTtkPVtdO2pyYyhhLGEub2EsYixjLGQpO2ZvcihiPWQuam9pbigiIik7YS5rYS5sZW5ndGg+MDspYj1iLnJlcGxhY2UoYS5BYShhLmthKSxTdHJpbmcoYS5rYS5wb3AoKSkucmVwbGFjZSgiJCIsIiQkJCQiKSk7cmV0dXJuIGJ9OwpqcmM9ZnVuY3Rpb24oYSxiLGMsZCxlKXtmb3IobGV0IHA9MDtwPGIubGVuZ3RoO3ArKyl7dmFyIGY9dm9pZCAwO3N3aXRjaChiW3BdLnR5cGUpe2Nhc2UgNDplLnB1c2goYltwXS52YWx1ZSk7YnJlYWs7Y2FzZSAzOmY9YltwXS52YWx1ZTt2YXIgZz1hLGg9ZSxrPWNbZl07az09PXZvaWQgMD9oLnB1c2goIlVuZGVmaW5lZCBwYXJhbWV0ZXIgLSAiK2YpOihnLmthLnB1c2goayksaC5wdXNoKGcuQWEoZy5rYSkpKTticmVhaztjYXNlIDI6Zj1iW3BdLnZhbHVlO2c9YTtoPWM7az1kO3ZhciBtPWUsbj1mLnczYTtoW25dPT09dm9pZCAwP20ucHVzaCgiVW5kZWZpbmVkIHBhcmFtZXRlciAtICIrbik6KG49ZltoW25dXSxuPT09dm9pZCAwJiYobj1mLm90aGVyKSxqcmMoZyxuLGgsayxtKSk7YnJlYWs7Y2FzZSAwOmY9YltwXS52YWx1ZTtrcmMoYSxmLGMsXy5SdyxkLGUpO2JyZWFrO2Nhc2UgMTpmPWJbcF0udmFsdWUsa3JjKGEsZixjLGFyYyxkLGUpfX19OwprcmM9ZnVuY3Rpb24oYSxiLGMsZCxlLGYpe3ZhciBnPWIudzNhLGg9Yi5yTGIsaz0rY1tnXTtpc05hTihrKT9mLnB1c2goIlVuZGVmaW5lZCBvciBpbnZhbGlkIHBhcmFtZXRlciAtICIrZyk6KGg9ay1oLGc9YltjW2ddXSxnPT09dm9pZCAwJiYoZD1kKE1hdGguYWJzKGgpKSxnPWJbZF0sZz09PXZvaWQgMCYmKGc9Yi5vdGhlcikpLGI9W10sanJjKGEsZyxjLGUsYiksYz1iLmpvaW4oIiIpLGU/Zi5wdXNoKGMpOihhPWEuRWEuZm9ybWF0KGgpLGYucHVzaChjLnJlcGxhY2UoLyMvZyxhKSkpKX07aHJjPWZ1bmN0aW9uKGEsYil7dmFyIGM9YS5CYSxkPWEuQWEuYmluZChhKTtiPWIucmVwbGFjZShmcmMsZnVuY3Rpb24oKXtjLnB1c2goIiciKTtyZXR1cm4gZChjKX0pO3JldHVybiBiPWIucmVwbGFjZShlcmMsZnVuY3Rpb24oZSxmKXtjLnB1c2goZik7cmV0dXJuIGQoYyl9KX07CmxyYz1mdW5jdGlvbihhKXt2YXIgYj0wLGM9W10sZD1bXSxlPS9be31dL2c7ZS5sYXN0SW5kZXg9MDtmb3IodmFyIGY7Zj1lLmV4ZWMoYSk7KXtsZXQgZz1mLmluZGV4O2ZbMF09PSJ9Ij8oYy5wb3AoKSxjLmxlbmd0aD09MCYmKGY9e3R5cGU6MX0sZi52YWx1ZT1hLnN1YnN0cmluZyhiLGcpLGQucHVzaChmKSxiPWcrMSkpOihjLmxlbmd0aD09MCYmKGI9YS5zdWJzdHJpbmcoYixnKSxiIT0iIiYmZC5wdXNoKHt0eXBlOjAsdmFsdWU6Yn0pLGI9ZysxKSxjLnB1c2goInsiKSl9YT1hLnN1YnN0cmluZyhiKTthIT0iIiYmZC5wdXNoKHt0eXBlOjAsdmFsdWU6YX0pO3JldHVybiBkfTttcmM9L15ccyooXHcrKVxzKixccypwbHVyYWxccyosKD86XHMqb2Zmc2V0OihcZCspKT8vO25yYz0vXlxzKihcdyspXHMqLFxzKnNlbGVjdG9yZGluYWxccyosLztvcmM9L15ccyooXHcrKVxzKixccypzZWxlY3RccyosLzsKaXJjPWZ1bmN0aW9uKGEsYil7dmFyIGM9W107Yj1scmMoYik7Zm9yKGxldCBlPTA7ZTxiLmxlbmd0aDtlKyspe2xldCBmPXt9O2lmKDA9PWJbZV0udHlwZSlmLnR5cGU9NCxmLnZhbHVlPWJbZV0udmFsdWU7ZWxzZSBpZigxPT1iW2VdLnR5cGUpe3ZhciBkPWJbZV0udmFsdWU7c3dpdGNoKG1yYy50ZXN0KGQpPzA6bnJjLnRlc3QoZCk/MTpvcmMudGVzdChkKT8yOi9eXHMqXHcrXHMqLy50ZXN0KGQpPzM6NSl7Y2FzZSAyOmYudHlwZT0yO2YudmFsdWU9cHJjKGEsYltlXS52YWx1ZSk7YnJlYWs7Y2FzZSAwOmYudHlwZT0wO2YudmFsdWU9cXJjKGEsYltlXS52YWx1ZSk7YnJlYWs7Y2FzZSAxOmYudHlwZT0xO2YudmFsdWU9cnJjKGEsYltlXS52YWx1ZSk7YnJlYWs7Y2FzZSAzOmYudHlwZT0zLGYudmFsdWU9YltlXS52YWx1ZX19Yy5wdXNoKGYpfXJldHVybiBjfTsKcHJjPWZ1bmN0aW9uKGEsYil7dmFyIGM9IiI7Yj1iLnJlcGxhY2Uob3JjLGZ1bmN0aW9uKGYsZyl7Yz1nO3JldHVybiIifSk7dmFyIGQ9e307ZC53M2E9YztiPWxyYyhiKTtmb3IodmFyIGU9MDtlPGIubGVuZ3RoOyl7bGV0IGY9YltlXS52YWx1ZTtlKys7bGV0IGc7MT09YltlXS50eXBlJiYoZz1pcmMoYSxiW2VdLnZhbHVlKSk7ZFtmLnJlcGxhY2UoL1xzL2csIiIpXT1nO2UrK31yZXR1cm4gZH07cXJjPWZ1bmN0aW9uKGEsYil7dmFyIGM9IiIsZD0wO2I9Yi5yZXBsYWNlKG1yYyxmdW5jdGlvbihnLGgsayl7Yz1oO2smJihkPXBhcnNlSW50KGssMTApKTtyZXR1cm4iIn0pO3ZhciBlPXt9O2UudzNhPWM7ZS5yTGI9ZDtiPWxyYyhiKTtmb3IodmFyIGY9MDtmPGIubGVuZ3RoOyl7bGV0IGc9YltmXS52YWx1ZTtmKys7bGV0IGg7MT09YltmXS50eXBlJiYoaD1pcmMoYSxiW2ZdLnZhbHVlKSk7ZVtnLnJlcGxhY2UoL1xzKig/Oj0pPyhcdyspXHMqLywiJDEiKV09aDtmKyt9cmV0dXJuIGV9OwpycmM9ZnVuY3Rpb24oYSxiKXt2YXIgYz0iIjtiPWIucmVwbGFjZShucmMsZnVuY3Rpb24oZixnKXtjPWc7cmV0dXJuIiJ9KTt2YXIgZD17fTtkLnczYT1jO2QuckxiPTA7Yj1scmMoYik7Zm9yKHZhciBlPTA7ZTxiLmxlbmd0aDspe2xldCBmPWJbZV0udmFsdWU7ZSsrO2xldCBnOzE9PWJbZV0udHlwZSYmKGc9aXJjKGEsYltlXS52YWx1ZSkpO2RbZi5yZXBsYWNlKC9ccyooPzo9KT8oXHcrKVxzKi8sIiQxIildPWc7ZSsrfXJldHVybiBkfTtfLkZ6LnByb3RvdHlwZS5BYT1mdW5jdGlvbihhKXtyZXR1cm4iXHVmZGRmXyIrKGEubGVuZ3RoLTEpLnRvU3RyaW5nKDEwKSsiXyJ9Owp9Y2F0Y2goZSl7Xy5fRHVtcEV4Y2VwdGlvbihlKX0KdHJ5ewpuZXcgXy5GeigiRHUgaGFyIHNcdTAwZjhrdCBldHRlciBkZXR0ZSBmXHUwMGY4ci4gSHZpcyBkdSBzbGV0dGVyIDxiPntxdWVyeX08L2I+IGZyYSBsb2dnZW4sIGZqZXJuZXMgc1x1MDBmOGtldCBwZXJtYW5lbnQgZnJhIGtvbnRvZW4gZGluIHBcdTAwZTUgYWxsZSBlbmhldGVuZSBkaW5lLiIpO25ldyBfLkZ6KCJEdSBoYXIgc1x1MDBmOGt0IGV0dGVyIGRldHRlIGZcdTAwZjhyLiBIdmlzIGR1IHNsZXR0ZXIgPGI+e3F1ZXJ5fTwvYj4gZnJhIGxvZ2dlbiwgZmplcm5lcyBkZXQgcGVybWFuZW50IGZyYSBlbmhldGVuIGRpbi4iKTsobmV3IF8uRnooJzxhIGhyZWY9Int1cmx9IiB0YXJnZXQ9Il9ibGFuayI+RmlubiB1dCBtZXI8L2E+JykpLmZvcm1hdCh7dXJsOiJodHRwczovL3N1cHBvcnQuZ29vZ2xlLmNvbS93ZWJzZWFyY2gvYW5zd2VyLzEwNjIzMCJ9KTtfLnhoZT1uZXcgXy5GeigiU2xldHQge3N1Z2dlc3Rpb25UZXh0fSBmcmEgc1x1MDBmOGtlbG9nZ2VuIik7Cn1jYXRjaChlKXtfLl9EdW1wRXhjZXB0aW9uKGUpfQp0cnl7Cl8ua0s9ZnVuY3Rpb24oYSxiKXtyZXR1cm4gXy5sayhhLDEsYil9O18ueWhlPWZ1bmN0aW9uKGEsYil7cmV0dXJuIF8ubGsoYSwzLGIpfTtfLmxLPWNsYXNzIGV4dGVuZHMgXy5se2NvbnN0cnVjdG9yKGEpe3N1cGVyKGEpfUFhKCl7cmV0dXJuIF8uY2kodGhpcywxKX13YSgpe3JldHVybiBfLkxqKHRoaXMsMil9b2EoKXtyZXR1cm4gXy5jaSh0aGlzLDMpfX07Cn1jYXRjaChlKXtfLl9EdW1wRXhjZXB0aW9uKGUpfQp0cnl7Cl8uemhlPWZ1bmN0aW9uKGEpe2E9YS5jbG9uZU5vZGUoITApO2EucmVtb3ZlQXR0cmlidXRlKCJpZCIpO3JldHVybiBhfTsKfWNhdGNoKGUpe18uX0R1bXBFeGNlcHRpb24oZSl9CnRyeXsKXy5BaGU9ZnVuY3Rpb24oYSl7cmV0dXJuIGEuZ2V0VHlwZSgpPT09MTc5JiZhLmthKCkuaW5jbHVkZXMoNTE3KX07Cn1jYXRjaChlKXtfLl9EdW1wRXhjZXB0aW9uKGUpfQp0cnl7Cl8uQmhlPWZ1bmN0aW9uKGEpe2Euc3RvcFByb3BhZ2F0aW9uKCk7YS5zdG9wSW1tZWRpYXRlUHJvcGFnYXRpb24mJmEuc3RvcEltbWVkaWF0ZVByb3BhZ2F0aW9uKCk7YS5wcmV2ZW50RGVmYXVsdCgpfTtfLkNoZT1mdW5jdGlvbihhLGIsYyl7YS5vYVtiXT1jO3JldHVybiBhfTtfLkRoZT1jbGFzc3tjb25zdHJ1Y3RvcihhLGIsYyxkKXt0aGlzLmVsPWE7dGhpcy53bT1iO3RoaXMuaW5kZXg9Yzt0aGlzLlpjPWQ7Xy5HcmEodGhpcy5lbCk7Xy5UZyh0aGlzLmVsLCJjbGljayIsdGhpcy5YYyx0aGlzKX1YYyhhKXthPWEuZXZlbnQ7dGhpcy5aYyYmdGhpcy5aYy52Q2IodGhpcy5pbmRleCk7dmFyIGI9Xy5ZSih0aGlzLndtLCJ6byIsIiIpPyJpSGQ5VSI6ImY1aEVIZSI7dmFyIGM9Xy5HZGUoXy5FZGUobmV3IF8uSGRlLHRoaXMud20pLnVMKGEua2V5Q29kZT09PTEzPzM6MSksdGhpcy5pbmRleCk7dmFyIGQ9dGhpcy5lbDtjPWMuYnVpbGQoKTtfLlhnKGQsYixjKTtfLkJoZShhKX19O3ZhciBFaGU9Y2xhc3N7WEdhKCl7cmV0dXJuITF9fTtfLkZoZT1jbGFzc3tuZXh0KCl7cmV0dXJuITB9cHJldmlvdXMoKXtyZXR1cm4hMH11cCgpe3JldHVybiEwfWtjYSgpe3JldHVybiEwfWVudGVyKCl7fWV4aXQoKXt9fTtfLkdoZT1jbGFzc3tjb25zdHJ1Y3RvcihhLGI9bmV3IF8uRmhlLGM9KCk9Pnt9LGQ9bmV3IEVoZSl7dGhpcy5IWT1hO3RoaXMua2E9Yjt0aGlzLmNsZWFyPWM7dGhpcy5vYT1kfX07Cn1jYXRjaChlKXtfLl9EdW1wRXhjZXB0aW9uKGUpfQp0cnl7CnZhciB2aWUsQmllLHdpZTt2aWU9ZnVuY3Rpb24oYSxiKXtmb3IobGV0IGMgb2YgYilpZighYS5pbmNsdWRlcyhjKSlhOntiPWE7Zm9yKGxldCBbZCxlXW9mIGIuZW50cmllcygpKWlmKGMudnooKT5lLnZ6KCkpe2Iuc3BsaWNlKGQsMCxjKTticmVhayBhfWIucHVzaChjKX19O18ueGllPWZ1bmN0aW9uKCl7dmFyIGE9Xy5NaSgiZ29vZ2xlLnBtYy5zYl93aXoub25mIik7cmV0dXJuIGE/d2llKF8uUWEoYSkpOm51bGx9O18ueWllPWZ1bmN0aW9uKGEsLi4uYil7dmllKGEub2EsYil9O18uemllPWZ1bmN0aW9uKGEsLi4uYil7dmllKGEuR2EsYik7cmV0dXJuIGF9O18uQWllPWZ1bmN0aW9uKGEsLi4uYil7dmllKGEud2EsYik7cmV0dXJuIGF9O0JpZT1mdW5jdGlvbihhLC4uLmIpe18uTGRlKGEuU2EsYil9O18uQ2llPWZ1bmN0aW9uKGEsLi4uYil7dmllKGEuTmEsYik7cmV0dXJuIGF9O18uRGllPWZ1bmN0aW9uKGEsLi4uYil7dmllKGEuT2EsYik7cmV0dXJuIGF9OwpfLkVpZT1mdW5jdGlvbihhLC4uLmIpe2ZvcihsZXQgYyBvZiBiKXtmb3IobGV0IHthNWE6ZCxNUWE6ZX1vZiBjLmVGKCkpXy5MZGUoYS5QYSxbe2E1YTpkLE1RYTplfV0pO18uJEooYSwuLi5jLlJhKTtfLmFlZShhLC4uLmMua2EpO18ueWllKGEsLi4uYy5vYSk7Xy5hSyhhLC4uLmMuQWEpO18uemllKGEsLi4uYy5HYSk7Xy5BaWUoYSwuLi5jLndhKTtCaWUoYSwuLi5jLlNhKTtmb3IobGV0IFtkLGVdb2YgYy5JYSliPWEsYi5JYS5oYXMoZCl8fGIuSWEuc2V0KGQsZSk7Zm9yKGxldCBbZCxlXW9mIGMuS2EpXy5iZWUoYSxkLGUpO18uQ2llKGEsLi4uYy5OYSk7Xy5EaWUoYSwuLi5jLk9hKX1yZXR1cm4gYX07Xy5GaWU9Y2xhc3MgZXh0ZW5kcyBfLmx7Y29uc3RydWN0b3IoYSl7c3VwZXIoYSl9fTtfLkdpZT1jbGFzcyBleHRlbmRzIF8ubHtjb25zdHJ1Y3RvcihhKXtzdXBlcihhKX19OwpfLkhpZT1bMCxfLnFsLF8uRCxfLmFFYSxfLkUsXy5FbCxfLkYsWzAsXy5GLFswLF8uRSwtMl0sXy5ObF0sWzAsXy5FLF8uRixbMCxfLkUsWzAsXy5hbCwtMV1dLF8uRixbMCxfLkVdLF8uRixbMCxfLkYsWzAsXy5FLF8uRixbMCxfLkUsLTEsWzAsXy5hbCxfLmlsLF8uYWwsLTEsXy5FXV0sXy5DXSxfLkNdLFswLF8uRSwtMV0sXy5FLF8uRixbMCxfLkUsXy5HLF8uYWwsLTFdXSwyLFswLF8uRixbMCxfLkUsMSxfLkcsXy5UbCxbMCxfLkUsLTEsWzAsXy56bCxfLkMsLTIsWzAsXy5FXV0sXy5FXV1dXTt3aWU9Xy5YYihfLkdpZSxfLkhpZSk7Xy5uSz1uZXcgXy5jZWU7CnZhciBKaWU9ZnVuY3Rpb24oYSl7dmFyIGI9YS53YSgpO2Iua2FbNDAwMjFdWzFdPSgtMikudG9TdHJpbmcoKTtyZXR1cm4gSWllKGEsYil9LExpZT1mdW5jdGlvbihhLGIpe3JldHVybiBuZXcgS2llKGEsYil9LE1pZT1mdW5jdGlvbihhLGIpe3ZhciBjPVsiTnlsaWdlIHNcdTAwZjhrIl07Y1syXT0oMCkudG9TdHJpbmcoKTtjWzNdPSgwKS50b1N0cmluZygpO2NbMV09KDApLnRvU3RyaW5nKCk7YS5rYVtwYXJzZUludChiLDEwKV09Y30sSWllPWZ1bmN0aW9uKGEsYil7dmFyIGM9bmV3IE1hcChhLkFhKTtjLnNldCgiYWciLHthOmIua2F9KTtyZXR1cm4gbmV3IF8uY0soYS5FYSxjLGEuQmEsYS5HYSx7c0NiOiExLE9kYTphLklhfSl9LE5pZT0hIShfLk9pWzk5XT4+MTcmMSk7dmFyIE9pZTtPaWU9ISEoXy5PaVs4Ml0+PjE3JjEpO18uUGllPSEhKF8uT2lbOTldJjY0KTt2YXIgUWllPVszMDgsNjddLFJpZT1bMzA4LDQzOV0sU2llPWZ1bmN0aW9uKGEpe3ZhciBiPVtdLGM9W10sZD1bXTtmb3IobGV0IGUgb2YgYSllLmthKCkuaW5jbHVkZXMoMzkpP2IucHVzaChlKTplLmdldFR5cGUoKT09PTQxP2MucHVzaChlKTpkLnB1c2goZSk7cmV0dXJue3BJYzpiLElxYzpjLGlJYzpkfX0sVGllPWZ1bmN0aW9uKGEsYixjLGQpe2E9YS5tYXAoZj0+Xy5DaGUoXy5NY2UoZiksInpsIixkKS5idWlsZCgpKTt2YXIgZT1jLndhKCk7TWllKGUsZCk7cmV0dXJuIElpZShfLnllZShjLGIuY29uY2F0KGEpKSxlKX0sVmllPWZ1bmN0aW9uKGEsYil7YS5zdG9yYWdlLmlzQXZhaWxhYmxlKCkmJihVaWUoYSkmJmIhPT0iIiYmKGEuc3RvcmFnZS5zZXQoInNiX3dpei5wcSIsYiksYS5zdG9yYWdlLnNldCgic2Jfd2l6LnBxX3RtX2hwIixEYXRlLm5vdygpLnRvU3RyaW5nKCkpKSxhLkFhPjAmJihhLlNhPURhdGUubm93KCkpLGEuUmEmJmEuc3RvcmFnZS5zZXQoInNiX3dpei5wcV90bV9zcnAiLApEYXRlLm5vdygpLnRvU3RyaW5nKCkpKX0sVWllPWZ1bmN0aW9uKGEpe3JldHVybihhLkJhfHxhLlBhKSYmKGEuRWF8fGEuR2EpfSxYaWU9ZnVuY3Rpb24oYSl7aWYoIWEuc3RvcmFnZS5pc0F2YWlsYWJsZSgpKXJldHVybiEwO3ZhciBiPVdpZShhLCEwKTtyZXR1cm4gYj09PW51bGx8fGI+YS50aW1lVG9MaXZlfSxXaWU9ZnVuY3Rpb24oYSxiKXtyZXR1cm4gYS5zdG9yYWdlLmlzQXZhaWxhYmxlKCk/KGE9Yj9hLnN0b3JhZ2UuZ2V0KCJzYl93aXoucHFfdG1faHAiKTphLnN0b3JhZ2UuZ2V0KCJzYl93aXoucHFfdG1fc3JwIikpP0RhdGUubm93KCktTnVtYmVyKGEpOm51bGw6bnVsbH0sWWllPWZ1bmN0aW9uKGEpe3JldHVybiBhLmthKCkuc29tZShiPT57dmFyIGM9Yi5rYSgpO2ZvcihsZXQgZCBvZltSaWUsUWllXSlpZihkLmV2ZXJ5KGU9PmMuaW5jbHVkZXMoZSkpKXJldHVybiEwO3JldHVybiExfSl9LFppZT1mdW5jdGlvbihhKXtyZXR1cm4gYS5rYT9fLk1pKCJnb29nbGUucG1jLnNiX3dpei56cHMiKToKYS5zdG9yYWdlLmlzQXZhaWxhYmxlKCk/YS5zdG9yYWdlLmdldCgic2Jfd2l6LnNyX2RpIil8fCIiOiIifSwkaWU9Y2xhc3N7Y29uc3RydWN0b3IoKXt0aGlzLm5iPXRoaXMuS2E9bnVsbDt0aGlzLnN0b3JhZ2U9bmV3IF8uaGY7dGhpcy5PRWE9IiI7dGhpcy50aW1lVG9MaXZlPTA7dGhpcy5aYT0hMTt0aGlzLk5hPTA7dGhpcy5SYT10aGlzLklhPXRoaXMub2E9dGhpcy5HYT10aGlzLkVhPSExO3RoaXMua2E9bnVsbDt0aGlzLlBhPXRoaXMuQmE9ITE7dGhpcy5TYT10aGlzLkFhPTA7dGhpcy5PYT1hPT57VmllKHRoaXMsYS5xdWVyeSl9fWNvbmZpZ3VyZShhKXt0aGlzLk9FYT1hLkJhKCk7dGhpcy50aW1lVG9MaXZlPWEuT2IoKTt0aGlzLlphPWEuUGEoKTt0aGlzLk5hPWEuUGMoKTt0aGlzLkVhPWEuQWIoKTt0aGlzLkdhPWEuRmIoKTt0aGlzLm9hPWEuWGIoKTt0aGlzLklhPWEuUGIoKTt0aGlzLlJhPWEuU2EoKTt0aGlzLkJhPWEuWmEoKTt0aGlzLlBhPWEuUmEoKTt0aGlzLkFhPWEuSWMoKTsKdGhpcy5rYT1hLndhKCk7dGhpcy5zdG9yYWdlLmlzQXZhaWxhYmxlKCkmJnRoaXMua2EmJihWaWUodGhpcyx0aGlzLmthKSxVaWUodGhpcykmJih0aGlzLklhJiZ0aGlzLnN0b3JhZ2Uuc2V0KCJzYl93aXouc3JfZGkiLFppZSh0aGlzKSksdGhpcy5zdG9yYWdlLnNldCgic2Jfd2l6LnNjX3BxIix0aGlzLm9hP18uTWkoImdvb2dsZS5wbWMuc2Jfd2l6LnNjcSIpOiIiKSkpOyF0aGlzLnN0b3JhZ2UuaXNBdmFpbGFibGUoKXx8VWllKHRoaXMpJiZ0aGlzLnRpbWVUb0xpdmUhPT0wJiYhWGllKHRoaXMpfHwodGhpcy5zdG9yYWdlLnJlbW92ZSgic2Jfd2l6LnBxIiksdGhpcy5zdG9yYWdlLnJlbW92ZSgic2Jfd2l6LnBxX3RtX2hwIiksdGhpcy5vYSYmdGhpcy5zdG9yYWdlLnJlbW92ZSgic2Jfd2l6LnNjX3BxIiksdGhpcy5JYSYmdGhpcy5zdG9yYWdlLnJlbW92ZSgic2Jfd2l6LnNyX2RpIikpfVZtKGEpe3RoaXMuS2E9YS5nZXQoXy5RZGUpO3RoaXMubmI9YS5nZXQoXy5QZGUpO2lmKGE9CmEuZ2V0KF8uTmRlKSlhLmJIKDMsdGhpcy5PYSksYS5iSCgxLHRoaXMuT2EpfXdhKGEsYil7aWYodGhpcy5BYT4wJiZ0aGlzLmthJiYhYiYmWWllKGEpKXtpZihEYXRlLm5vdygpLU51bWJlcih0aGlzLlNhKT50aGlzLkFhKXJldHVybiBhO2I9YS5rYSgpO2xldCB7cEljOmQsSXFjOmUsaUljOmZ9PVNpZShiKTtyZXR1cm4gZC5sZW5ndGg+MD9UaWUoZCxmLGEsNSk6ZS5sZW5ndGg+MD9UaWUoZSxmLGEsNDAwMjYpOmF9aWYodGhpcy5aYSYmIWImJnRoaXMuTmEhPT0tMSYmWWllKGEpKXt2YXIgYz1hLmthKCk7Yj1jLmZpbHRlcihkPT5kLmdldFR5cGUoKT09PTQxKTtjPWMuc2xpY2UoYi5sZW5ndGgpO3JldHVybiBuZXcgXy5jSyhiLnNsaWNlKDAsdGhpcy5OYSkuY29uY2F0KGMpLF8ueGVlKGEpLCEwLCExLHtPZGE6YS5PZGEoKX0pfXJldHVybiFiJiZ0aGlzLkJhJiZhLkdhJiZhLm9hKCJlIiwhMSkmJlhpZSh0aGlzKT9uZXcgXy5jSyhhLmthKCksXy54ZWUoYSkuc2V0KCJlIiwhMSksITAsCiExLHtPZGE6YS5PZGEoKX0pOmF9T21hKCl7dGhpcy5uYi5PbWEoKX19O3ZhciBhamU9Y2xhc3N7Y29uc3RydWN0b3IoKXt0aGlzLmthPTB9ZUdhKCl7dmFyIGE9W107aWYodGhpcy5rYT4wKXt2YXIgYj1hLnB1c2g7dmFyIGM9Xy5rSyhuZXcgXy5sSyw2NCk7Yz1fLmZoKGMsMix0aGlzLmthLnRvU3RyaW5nKCkpO2IuY2FsbChhLGMpfXJldHVybiBhfUxqYSgpe31yZXNldCgpe3RoaXMua2E9MH19O3ZhciBiamU9ZnVuY3Rpb24oYSxiKXthLkVhJiYoYT1XaWUoYS5rYSwhYS5vYSkpJiZiLmthKCJwcV9zZWMiLE1hdGgucm91bmQoYS8xRTMpKX0sY2plPWZ1bmN0aW9uKGEsYil7IWIuZ2V0UXVlcnkoKSYmYS5JYSYmKGE9WmllKGEua2EpKSYmYi5rYSgib2ZwIixhKX0sZGplPWNsYXNze2NvbnN0cnVjdG9yKGEsYil7dGhpcy5rYT1hO3RoaXMuR2E9Yjt0aGlzLm9hPW51bGw7dGhpcy5FYT10aGlzLndhPXRoaXMuSWE9dGhpcy5CYT10aGlzLkFhPSExfWNvbmZpZ3VyZShhKXt0aGlzLm9hPWEud2EoKTt0aGlzLkJhPWEuUmEoKTt0aGlzLklhPWEuUWIoKTt0aGlzLndhPWEuWmEoKTt0aGlzLkVhPWEuU2EoKX1iUihhKXtpZihVaWUodGhpcy5rYSkmJiF0aGlzLm9hKWlmKFhpZSh0aGlzLmthKSl7aWYodGhpcy5BYSl7dGhpcy5BYT0hMTt2YXIgYj10aGlzLmthO3ZhciBjPWIuS2EuZ2V0KGIuT0VhKTtjIT1udWxsJiZZaWUoYykmJmIuS2EuY2xlYXIoYi5PRWEpO3RoaXMua2EuT21hKCl9fWVsc2V7Yz0KdGhpcy5rYTtiPSExO3ZhciBkPSIiO2Muc3RvcmFnZS5pc0F2YWlsYWJsZSgpJiYoZD1jLnN0b3JhZ2UuZ2V0KCJzYl93aXoucHEiKXx8IiIsYy5vYSYmKChjPWMuc3RvcmFnZS5nZXQoInNiX3dpei5zY19wcSIpfHwiIikmJihiPSEwKSxkPWN8fGQpKTtjPWQ7YiYmKHRoaXMuR2Eua2E9MSk7Yj1hLmdldFF1ZXJ5KCk7YyYmKCFiJiZ0aGlzLndhfHxiJiZ0aGlzLkJhKSYmKGEua2EoInBxIixjKSxiamUodGhpcyxhKSk7dGhpcy5BYT0hMDtjamUodGhpcyxhKX1pZih0aGlzLm9hKWlmKGI9YS5nZXRRdWVyeSgpLChiPSF0aGlzLndhfHxiKXx8KGI9dGhpcy5rYSxiPWIuRWF8fGIuR2EpLGIpe2lmKGI9dGhpcy5rYS5vYT9fLk1pKCJnb29nbGUucG1jLnNiX3dpei5zY3EiKToiIil0aGlzLkdhLmthPTEsYS5rYSgicHEiLGIpO2NqZSh0aGlzLGEpO2JqZSh0aGlzLGEpfWVsc2UgYj1uZXcgXy5IZShhLkVhKCkpLGIub2EucmVtb3ZlKCJwcSIpLGEuQmEoYik7cmV0dXJuIDF9fTt2YXIgZWplPWNsYXNze2NvbnN0cnVjdG9yKGEpe3RoaXMua2E9YX12eigpe3JldHVybiA1MH1PVihhLGIpe3JldHVybiB0aGlzLmthLndhKGEsYi5nZXRRdWVyeSgpKX19O2lmKF8uT2lbOTldJjQpe2xldCBhPW5ldyBhamUsYj1uZXcgJGllO18uYWVlKF8ubkssYSk7Xy4kSihfLm5LLGIpO18uYUsoXy5uSyxuZXcgZGplKGIsYSkpO18uemllKF8ubkssbmV3IGVqZShiKSl9O3ZhciBoamU9Y2xhc3N7Y29uc3RydWN0b3IoKXt2YXIgYT1MaWU7dGhpcy5CYT1mamU7dGhpcy5BYT0iLkUyU2hPZCI7dGhpcy53YT1hO3RoaXMua2E9W107dGhpcy5vYT10aGlzLlpjPW51bGx9Y29uZmlndXJlKGEpe3RoaXMub2E9YTt0aGlzLmthLmZvckVhY2goYj0+dm9pZCBiLmNvbmZpZ3VyZShhKSl9Vm0oYSl7dGhpcy5aYz1hLmdldChfLk9kZSl9cVFhKGEsYil7dmFyIGM9YS53YSgpLm9hKGIpO2lmKCFjKXJldHVybltdO2E9Xy56aGUodGhpcy5CYSgpKTtiPWEucXVlcnlTZWxlY3Rvcih0aGlzLkFhKTtpZighYilyZXR1cm5bXTtjPV8uS2MoYyk7Xy5lZChiLGMpO2I9dGhpcy53YSh0aGlzLlpjLGEpO2IuY29uZmlndXJlKHRoaXMub2EpO2dqZShiKTt0aGlzLmthLnB1c2goYik7cmV0dXJuW2FdfX07dmFyIGlqZT1mdW5jdGlvbihhKXtyZXR1cm4gYS5pc1ZhbGlkKCk/YS5zdG9yYWdlLmdldChgc2JfaWNjLiR7YS5rYX0uc3B5d19pY2NgKT09PSIxIjohMX0samplPWNsYXNze2NvbnN0cnVjdG9yKCl7dGhpcy5zdG9yYWdlPW5ldyBfLmhmO3RoaXMua2E9IiJ9Y29uZmlndXJlKGEpe3RoaXMua2E9YS5PYSgpfWlzVmFsaWQoKXtyZXR1cm4gdGhpcy5zdG9yYWdlLmlzQXZhaWxhYmxlKCkmJnRoaXMua2EhPT0iIj8hMDohMX19O3ZhciBnamU9ZnVuY3Rpb24oYSl7Xy5UZyhhLmVsLCJtTWY2MWUiLGEub2EsYSk7Xy5UZyhhLmVsLCJLeVBhMGUiLGEud2EsYSl9LEtpZT1jbGFzc3tjb25zdHJ1Y3RvcihhLGIpe3RoaXMuWmM9YTt0aGlzLmVsPWI7dGhpcy5BYT1fLkFoZTt0aGlzLmthPW5ldyBqamU7dGhpcy50VT10aGlzLlMwPSIifWNvbmZpZ3VyZShhKXt0aGlzLmthLmNvbmZpZ3VyZShhKTt0aGlzLlMwPWEuQWEoKTt0aGlzLnRVPWEuS2EoKX1vYSgpe3ZhciBhPXRoaXMua2E7YS5pc1ZhbGlkKCkmJmEuc3RvcmFnZS5zZXQoYHNiX2ljYy4ke2Eua2F9LnNweXdfaWNjYCwiMSIpO3RoaXMuWmMucl9hKDc2LDEpO18uWmcodGhpcy5lbCwiQTA1eEJkIik7Xy5YZyh0aGlzLmVsLCJsZHlJeWUiLHtuUWM6dGhpcy5BYX0pO18uSWNlKG5ldyBNYXAoW1siY2xpZW50Iix0aGlzLlMwXSxbImljY19kYyIsInN5Il1dKSx0aGlzLnRVKX13YSgpe3RoaXMuWmMucl9hKDc1LDEpO18uSWNlKG5ldyBNYXAoW1siY2xpZW50Iix0aGlzLlMwXSwKWyJpY2NfZGkiLCJzeSJdXSksdGhpcy50VSl9fTt2YXIga2plPWNsYXNze2NvbnN0cnVjdG9yKCl7dGhpcy5rYT1uZXcgamplfWNvbmZpZ3VyZShhKXt0aGlzLmthLmNvbmZpZ3VyZShhKX12eigpe3JldHVybiAyNX1PVihhKXtpZihpamUodGhpcy5rYSkpe2xldCBiPWEua2EoKS5maWx0ZXIoYz0+IV8uQWhlKGMpKTtyZXR1cm4gXy55ZWUoYSxiKX1yZXR1cm4gYS5rYSgpLnNvbWUoXy5BaGUpP0ppZShhKTphfX07dmFyIG1qZT1jbGFzc3tjb25zdHJ1Y3RvcihhLGIsYyl7dGhpcy50ZW1wbGF0ZT1hO3RoaXMuRWE9Yjt0aGlzLkJhPWM7dGhpcy5vYT1uZXcgTWFwO3RoaXMuQWE9bnVsbDt0aGlzLnRVPSIiO3RoaXMuWmM9bnVsbH1jb25maWd1cmUoYSl7dGhpcy5vYS5mb3JFYWNoKGI9PnZvaWQgYi5jb25maWd1cmUoYSkpO3RoaXMuQWE9YTt0aGlzLnRVPWEuS2EoKX1WbShhKXt0aGlzLlpjPWEuZ2V0KF8uT2RlKX1OYSgpe3ZhciBhPV8uemhlKHRoaXMudGVtcGxhdGUoKSksYj10aGlzLkJhKHRoaXMuWmMsYSk7Yi5jb25maWd1cmUodGhpcy5BYSk7dGhpcy5vYS5zZXQoYSxiKTtyZXR1cm4gYX13YSgpe3JldHVybiA3fXJlbmRlcihhLGIsYyl7dmFyIGQ9YS5xdWVyeVNlbGVjdG9yKHRoaXMuRWEpO2lmKGQpe2xldCBlPV8uaWphLkVGKF8uTWRlKGIpKTtfLmVkKGQsZSl9Yj1uZXcgbGplKGEsYixjLHRoaXMuWmMsdGhpcy5BYS5BYSgpLCh0aGlzLm9hLmdldChhKSwic3kiKSx0aGlzLnRVKTtnamUodGhpcy5vYS5nZXQoYSkpOwpyZXR1cm4gbmV3IF8uR2hlKGIpfX0sbGplPWNsYXNzIGV4dGVuZHMgXy5EaGV7Y29uc3RydWN0b3IoYSxiLGMsZCxlLGYsZyl7c3VwZXIoYSxiLGMsZCk7dGhpcy5TMD1lO3RoaXMua2E9Zjt0aGlzLnRVPWd9WGMoYSl7Xy5JY2UobmV3IE1hcChbWyJjbGllbnQiLHRoaXMuUzBdLFsiaWNjX3NjIix0aGlzLmthXV0pLHRoaXMudFUpO3N1cGVyLlhjKGEpfX07dmFyIG5qZT1jbGFzcyBleHRlbmRzIG1qZXtrYShhKXtyZXR1cm4gXy5BaGUoYSl9dnooKXtyZXR1cm4gMTAwfX07aWYoTmllKXt2YXIgb2plPV8uRm4oKCk9PmRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJkaDIxNWMiKSksZmplPV8uRm4oKCk9PmRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJUV255bGYiKSk7bGV0IGE9bmV3IF8uY2VlO18uemllKGEsbmV3IGtqZSk7Xy5EaWUoYSxuZXcgbmplKG9qZSwiLkpxUExsYiIsTGllKSk7Xy5iZWUoYSw0MDAyMSxuZXcgaGplKTtfLkVpZShfLm5LLGEpfTt2YXIgcGplPWZ1bmN0aW9uKGEpe2lmKGEub2EuZ2V0Um9vdCgpLlplKCl8fCFhLmthKXJldHVybiExO2EuQWE9ITA7YS5rYS50cmlnZ2VyKCJJUU9hdmQiKTtyZXR1cm4hMH0scWplPWZ1bmN0aW9uKGEsYil7YS5BYSYmYS5rYSYmKGEuQWE9ITEsYi5zdG9wUHJvcGFnYXRpb24oKSxiLnByZXZlbnREZWZhdWx0KCksYS5rYS5mb2N1cygpKX0scmplPWZ1bmN0aW9uKGEpe2Eud2E9YS5rYSYmYS5rYS56dDtpZihhLm9hJiZhLndhKXt2YXIgYj1fLkxnKGEud2EpO18uaGUoYiwidG91Y2hzdGFydCIsKCk9PnBqZShhKSx7Y2FwdHVyZTohMH0pO18uaGUoYiwidG91Y2hlbmQiLGM9PnFqZShhLGMpLHtjYXB0dXJlOiEwfSk7Yj1kb2N1bWVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCJzZWFyY2hfYnV0dG9uX3N1Z2dlc3QiKTtiLmxlbmd0aCYmKGI9YlswXSxfLmhlKGIsInRvdWNoc3RhcnQiLCgpPT5wamUoYSkpLF8uaGUoYiwidG91Y2hlbmQiLGM9PnFqZShhLGMpKSk7Yj1kb2N1bWVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCJSUDB4b2IiKTsKaWYoYi5sZW5ndGgpe2xldCBjPWJbMF07Xy5oZShjLCJ0b3VjaHN0YXJ0IiwoKT0+e3BqZShhKSYmc2V0VGltZW91dCgoKT0+Yy5jbGljaygpKX0pO18uaGUoYywidG91Y2hlbmQiLGQ9PnFqZShhLGQpKX19fSxzamU9Y2xhc3N7Y29uc3RydWN0b3IoKXt0aGlzLkFhPSExO3RoaXMub2E9dGhpcy53YT10aGlzLmthPW51bGx9Vm0oYSl7dGhpcy5rYT1hLmdldChfLldkZSk7dGhpcy5vYT1hLmdldChfLllkZSk7c2V0VGltZW91dCgoKT0+cmplKHRoaXMpLDApfX07T2llJiZfLiRKKF8ubkssbmV3IHNqZSk7Cn1jYXRjaChlKXtfLl9EdW1wRXhjZXB0aW9uKGUpfQp0cnl7Cl8udSgicm5aVmZkIik7CnZhciBua2UscGtlLHFrZTtfLm1rZT1mdW5jdGlvbihhLGIpe3JldHVybiBhLm9hLnJlZ2lzdGVyKGIpfTtua2U9bmV3IF8uUmQoMCwwLDEsMSk7cGtlPWZ1bmN0aW9uKGEsYil7aWYoIWEuTmEpe3ZhciBjO2Eua2E9KGM9Xy5ZSGEoYixua2UpKSE9bnVsbD9jOm5rZTtiPV8ub2tlKGEsYS5TYS5oZWlnaHQsYS5TYS53aWR0aCk7YS5KYSgiSlVDczdlIikuc2V0U3R5bGUoe3dpZHRoOmAke2Iud2lkdGh9cHhgLGhlaWdodDpgJHtiLmhlaWdodH1weGAsbGVmdDpgJHtiLmxlZnR9cHhgLHRvcDpgJHtiLnRvcH1weGB9KX19O18ucmtlPWZ1bmN0aW9uKGEsYil7c3dpdGNoKGIpe2Nhc2UgMTpxa2UoYSwyKTticmVhaztjYXNlIDA6Y2FzZSAyOnFrZShhLDApO2JyZWFrO2RlZmF1bHQ6Xy5lYihiLHZvaWQgMCl9fTsKcWtlPWZ1bmN0aW9uKGEsYil7YS5vYT1iO3N3aXRjaChhLm9hKXtjYXNlIDA6YS5nZXRSb290KCkudG9nZ2xlKCEwKTthLlphKCk7YnJlYWs7Y2FzZSAxOmEuZ2V0Um9vdCgpLnRvZ2dsZSghMCk7YS5aYSgpO2JyZWFrO2Nhc2UgMjphLmdldFJvb3QoKS50b2dnbGUoITEpO2JyZWFrO2RlZmF1bHQ6Xy5lYihhLm9hLHZvaWQgMCl9fTsKXy5va2U9ZnVuY3Rpb24oYSxiLGMpe3ZhciBkPWEuaW1nLm5hdHVyYWxXaWR0aCxlPWEuaW1nLm5hdHVyYWxIZWlnaHQ7aWYoZD09PTB8fGU9PT0wfHxjPT09MHx8Yj09PTB8fCFhLmltZy5zcmMpcmV0dXJue3dpZHRoOjAsaGVpZ2h0OjAsbGVmdDowLHRvcDowLHNyYzoiIn07aWYoYS5rYS53aWR0aCpkLyhhLmthLmhlaWdodCplKTxjL2Ipe3ZhciBmPWMvYS5rYS53aWR0aDt2YXIgZz1mKmUvZDtkPS0oYS5rYS5sZWZ0KmYpO2EuaXNSdGwmJihkPWYrZC1jKTtiPS0oYS5rYS50b3AqZysoYS5rYS5oZWlnaHQqZy1iKS8yKX1lbHNlIGc9Yi9hLmthLmhlaWdodCxmPWcqZC9lLGQ9LShhLmthLmxlZnQqZisoYS5rYS53aWR0aCpmLWMpLzIpLGEuaXNSdGwmJihkPWYrZC1jKSxiPS0oYS5rYS50b3AqZyk7cmV0dXJue2hlaWdodDpnLHdpZHRoOmYsbGVmdDpkLHRvcDpiLHNyYzphLmltZy5zcmN9fTsKXy5za2U9Y2xhc3MgZXh0ZW5kcyBfLmhze3N0YXRpYyBRYSgpe3JldHVybnttb2RlbDp7R3I6Xy5lSyxkU2E6Xy5oZmUsbF9iOl8uWWdlLFFQOl8ud2hlfX19Y29uc3RydWN0b3IoYSl7c3VwZXIoKTt0aGlzLmthPW5ldyBfLlJkKDAsMCwxLDEpO3RoaXMub2E9MDt0aGlzLk5hPSExO3RoaXMuQmE9bnVsbDthLm1vZGVsLkdyLmthKF8uJGRlLHRoaXMpO18uJEooXy5uSyx0aGlzKTt0aGlzLmltZz10aGlzLkphKCJKVUNzN2UiKS5lbCgpO3RoaXMuaXNSdGw9Xy5jZSh0aGlzLmdldFJvb3QoKS5lbCgpKTt0aGlzLlNhPXt3aWR0aDozNixoZWlnaHQ6MzJ9O2EubW9kZWwuUVAuQmEoYj0+e2Iuc3RhdHVzPT09MCYmcGtlKHRoaXMsYi5VUil9KTthLm1vZGVsLlFQLkVhKGI9Pntwa2UodGhpcyxiLlVSKX0pO2lmKHRoaXMuaW1nLmNvbXBsZXRlKXBrZSh0aGlzLG5ldyBfLlJkKDAsMCwxLDEpKTtlbHNle2xldCBiPSgpPT57dGhpcy5pbWcucmVtb3ZlRXZlbnRMaXN0ZW5lcigibG9hZCIsYik7CnBrZSh0aGlzLG5ldyBfLlJkKDAsMCwxLDEpKX07dGhpcy5pbWcuYWRkRXZlbnRMaXN0ZW5lcigibG9hZCIsYil9dGhpcy5hZGRPbkRpc3Bvc2VDYWxsYmFjayhfLm1rZShhLm1vZGVsLmxfYixiPT57Xy5ya2UodGhpcyxiKX0pKTt0aGlzLkpHPWEubW9kZWwubF9iO3RoaXMuTGs9YS5tb2RlbC5kU2F9Vm0oYSl7dGhpcy5CYT1hLmdldChfLldkZSl9QWEoKXtzd2l0Y2godGhpcy5vYSl7Y2FzZSAwOnFrZSh0aGlzLDEpO2JyZWFrO2Nhc2UgMTp0aGlzLkVhKCk7dGhpcy50cmlnZ2VyKCJEa3BNMGIiKTtsZXQgYTsoYT10aGlzLkJhKT09bnVsbHx8YS5mb2N1cygpO2JyZWFrO2Nhc2UgMjpicmVhaztkZWZhdWx0Ol8uZWIodGhpcy5vYSx2b2lkIDApfX1FYSgpe3ZhciBhPXRoaXMuSkc7YS5rYT0xO18uaUsoYS5vYSwxKTtfLmZmZSh0aGlzLkxrLG51bGwpfU9hKCl7dGhpcy5OYT0hMDt0aGlzLmltZy5zcmM9Imh0dHBzOi8vZm9udHMuZ3N0YXRpYy5jb20vcy9pL3Nob3J0LXRlcm0vcmVsZWFzZS9nb29nbGVzeW1ib2xzL2hpZGVfaW1hZ2UvZGVmYXVsdC8yNHB4LnN2ZyI7Cl8uRG8odGhpcy5KYSgiSlVDczdlIiksInN0eWxlIil9UGEoKXt0aGlzLm9hPT09MSYmcWtlKHRoaXMsMCl9fTtfLnNrZS5wcm90b3R5cGUuJHdhJExPU3hoZD1mdW5jdGlvbigpe3JldHVybiB0aGlzLlBhfTtfLnNrZS5wcm90b3R5cGUuJHdhJHhpY3hGPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuT2F9O18uc2tlLnByb3RvdHlwZS4kd2EkQmExbFBkPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuRWF9O18uc2tlLnByb3RvdHlwZS4kd2EkejJUQnNjPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuQWF9OwoKXy52KCk7Cn1jYXRjaChlKXtfLl9EdW1wRXhjZXB0aW9uKGUpfQp0cnl7Cl8udWtlPWZ1bmN0aW9uKGEpe3JldHVybiBfLk9hKGEsNCl9O18udmtlPWZ1bmN0aW9uKGEsYil7dHJ5e3JldHVybiBhKF8uUWEoYikpfWNhdGNoKGMpe319Owp9Y2F0Y2goZSl7Xy5fRHVtcEV4Y2VwdGlvbihlKX0KdHJ5ewpfLndrZT1fLmtjKCJuYjUwbiIsW18uUHFdKTsKfWNhdGNoKGUpe18uX0R1bXBFeGNlcHRpb24oZSl9CnRyeXsKXy51KCJuYjUwbiIpOwpfLnhrZT1jbGFzcyBleHRlbmRzIF8uc297c3RhdGljIFFhKCl7cmV0dXJue3NlcnZpY2U6e2xvY2F0aW9uOl8ucHZ9fX1jb25zdHJ1Y3RvcihhKXtzdXBlcigpO2E9KGE9KG5ldyBVUkxTZWFyY2hQYXJhbXMoXy5vdihhLnNlcnZpY2UubG9jYXRpb24pKSkuZ2V0KCJ2c3JpZCIpKT9fLnZrZShfLnVhZSxhKTp2b2lkIDA7dGhpcy5XOT1hPT1udWxsP3ZvaWQgMDpfLk1qKGEsMSk7dGhpcy5BYT1hPT1udWxsP3ZvaWQgMDpfLmlqKGEsNyx2b2lkIDAsdm9pZCAwLF8ubGIpO3ZhciBiO3RoaXMud2E9YT09bnVsbD92b2lkIDA6KGI9Xy51aihhLDQpKT09bnVsbD92b2lkIDA6Xy5iaihiKTt2YXIgYzt0aGlzLmthPShjPWE9PW51bGw/dm9pZCAwOl8ueGUoYSwyKSkhPW51bGw/YzoxO3ZhciBkO3RoaXMub2E9KGQ9YT09bnVsbD92b2lkIDA6Xy54ZShhLDMpKSE9bnVsbD9kOjE7dGhpcy5RZWE9KGE9PW51bGw/MDpfLmtqKGEsXy5zYWUsNikpP18ucShhLF8uc2FlLDYpOnZvaWQgMH19OwpfLmFnKF8ud2tlLF8ueGtlKTsKXy52KCk7Cn1jYXRjaChlKXtfLl9EdW1wRXhjZXB0aW9uKGUpfQp0cnl7Cl8ueWtlPV8ua2MoImg1a2toYyIsW18ud2tlLF8uUHFdKTsKfWNhdGNoKGUpe18uX0R1bXBFeGNlcHRpb24oZSl9CnRyeXsKdmFyIEJrZSxEa2UsRWtlLEZrZSxHa2U7Xy5wSz1mdW5jdGlvbihhLGIsYyxkLGUsZil7aWYoYXJndW1lbnRzLmxlbmd0aD09NilfLnprZSh0aGlzLGEsYixjLGQsZSxmKTtlbHNle2lmKGFyZ3VtZW50cy5sZW5ndGghPTApdGhyb3cgRXJyb3IoImhsIik7dGhpcy5rYT10aGlzLm9hPTE7dGhpcy5BYT10aGlzLndhPXRoaXMuQmE9dGhpcy5FYT0wfX07Xy5Ba2U9ZnVuY3Rpb24oYSl7cmV0dXJuIE1hdGguaHlwb3QoYS5rYSxhLndhKX07QmtlPWZ1bmN0aW9uKGEse3g6Yix5OmN9KXt2YXIgZD1bXTthLnRyYW5zZm9ybShbYixjXSwwLGQsMCwxKTtyZXR1cm57eDpkWzBdLHk6ZFsxXX19O0RrZT1mdW5jdGlvbihhKXtyZXR1cm4gYS5yZWR1Y2UoKGIsYyk9PkNrZShiLGMua2EoKSksbmV3IF8ucEspfTsKRWtlPWZ1bmN0aW9uKFthLGJdKXtmb3IodmFyIGM9YS5sZW5ndGgtMSxkPWIubGVuZ3RoLTE7Yz49MCYmZD49MCYmYVtjXT09PWJbZF07KWMtLSxkLS07cmV0dXJuW2Euc2xpY2UoMCxjKzEpLGIuc2xpY2UoMCxkKzEpXX07Xy5wSy5wcm90b3R5cGUuaXNJZGVudGl0eT1mdW5jdGlvbigpe3JldHVybiB0aGlzLmthPT0xJiZ0aGlzLkFhPT0wJiZ0aGlzLndhPT0wJiZ0aGlzLm9hPT0xJiZ0aGlzLkJhPT0wJiZ0aGlzLkVhPT0wfTtfLnBLLnByb3RvdHlwZS5jbG9uZT1mdW5jdGlvbigpe3JldHVybiBuZXcgXy5wSyh0aGlzLmthLHRoaXMuQWEsdGhpcy53YSx0aGlzLm9hLHRoaXMuQmEsdGhpcy5FYSl9OwpfLnprZT1mdW5jdGlvbihhLGIsYyxkLGUsZixnKXtpZih0eXBlb2YgYiE9PSJudW1iZXIifHx0eXBlb2YgYyE9PSJudW1iZXIifHx0eXBlb2YgZCE9PSJudW1iZXIifHx0eXBlb2YgZSE9PSJudW1iZXIifHx0eXBlb2YgZiE9PSJudW1iZXIifHx0eXBlb2YgZyE9PSJudW1iZXIiKXRocm93IEVycm9yKCJpbCIpO2Eua2E9YjthLkFhPWM7YS53YT1kO2Eub2E9ZTthLkJhPWY7YS5FYT1nO3JldHVybiBhfTtfLnBLLnByb3RvdHlwZS5zY2FsZT1mdW5jdGlvbihhLGIpe3RoaXMua2EqPWE7dGhpcy5BYSo9YTt0aGlzLndhKj1iO3RoaXMub2EqPWI7cmV0dXJuIHRoaXN9O18ucEsucHJvdG90eXBlLnRyYW5zbGF0ZT1mdW5jdGlvbihhLGIpe3RoaXMuQmErPWEqdGhpcy5rYStiKnRoaXMud2E7dGhpcy5FYSs9YSp0aGlzLkFhK2IqdGhpcy5vYTtyZXR1cm4gdGhpc307Cl8ucEsucHJvdG90eXBlLnJvdGF0ZT1mdW5jdGlvbihhLGIsYyl7dmFyIGQ9bmV3IF8ucEssZT1NYXRoLmNvcyhhKTthPU1hdGguc2luKGEpO2I9Xy56a2UoZCxlLGEsLWEsZSxiLWIqZStjKmEsYy1iKmEtYyplKTtjPXRoaXMua2E7ZD10aGlzLndhO3RoaXMua2E9Yi5rYSpjK2IuQWEqZDt0aGlzLndhPWIud2EqYytiLm9hKmQ7dGhpcy5CYSs9Yi5CYSpjK2IuRWEqZDtjPXRoaXMuQWE7ZD10aGlzLm9hO3RoaXMuQWE9Yi5rYSpjK2IuQWEqZDt0aGlzLm9hPWIud2EqYytiLm9hKmQ7dGhpcy5FYSs9Yi5CYSpjK2IuRWEqZDtyZXR1cm4gdGhpc307Xy5wSy5wcm90b3R5cGUudG9TdHJpbmc9ZnVuY3Rpb24oKXtyZXR1cm4ibWF0cml4KCIrW3RoaXMua2EsdGhpcy5BYSx0aGlzLndhLHRoaXMub2EsdGhpcy5CYSx0aGlzLkVhXS5qb2luKCkrIikifTsKdmFyIENrZT1mdW5jdGlvbihhLGIpe3ZhciBjPWEua2EsZD1hLkFhO2Eua2E9Yi5rYSpjK2Iud2EqZDthLkFhPWIuQWEqYytiLm9hKmQ7Yz1hLndhO2Q9YS5vYTthLndhPWIua2EqYytiLndhKmQ7YS5vYT1iLkFhKmMrYi5vYSpkO2M9YS5CYTtkPWEuRWE7YS5CYT1iLmthKmMrYi53YSpkK2IuQmE7YS5FYT1iLkFhKmMrYi5vYSpkK2IuRWE7cmV0dXJuIGF9O18ucEsucHJvdG90eXBlLnRyYW5zZm9ybT1mdW5jdGlvbihhLGIsYyxkLGUpe3ZhciBmPWI7Zm9yKGIrPTIqZTtmPGI7KXtlPWFbZisrXTtsZXQgZz1hW2YrK107Y1tkKytdPWUqdGhpcy5rYStnKnRoaXMud2ErdGhpcy5CYTtjW2QrK109ZSp0aGlzLkFhK2cqdGhpcy5vYSt0aGlzLkVhfX07Cl8ucEsucHJvdG90eXBlLmVxdWFscz1mdW5jdGlvbihhKXtyZXR1cm4gdGhpcz09PWE/ITA6YT90aGlzLmthPT1hLmthJiZ0aGlzLndhPT1hLndhJiZ0aGlzLkJhPT1hLkJhJiZ0aGlzLkFhPT1hLkFhJiZ0aGlzLm9hPT1hLm9hJiZ0aGlzLkVhPT1hLkVhOiExfTtGa2U9ZnVuY3Rpb24oYSxiKXtiLnBhcmVudCE9PWEmJihiLnBhcmVudCYmXy5EYShiLnBhcmVudC5jaGlsZHJlbixiKSxhLmNoaWxkcmVuLnB1c2goYiksYi5wYXJlbnQ9YSl9O18uSGtlPWZ1bmN0aW9uKGEsYil7dmFyIFtjLGRdPUVrZShbR2tlKGEpLEdrZShiKV0pO2E9RGtlKGMpO2I9RGtlKGQpO3ZhciBlPWIua2EqYi5vYS1iLndhKmIuQWE7Yj1uZXcgXy5wSyhiLm9hL2UsLWIuQWEvZSwtYi53YS9lLGIua2EvZSwoYi53YSpiLkVhLWIub2EqYi5CYSkvZSwoYi5BYSpiLkJhLWIua2EqYi5FYSkvZSk7cmV0dXJuIENrZShhLGIpfTsKR2tlPWZ1bmN0aW9uKGEpe2Zvcih2YXIgYj1bXTthIT09dm9pZCAwOyliLnB1c2goYSksYT1hLmdldFBhcmVudCgpO3JldHVybiBifTtfLklrZT1jbGFzc3tjb25zdHJ1Y3RvcihhKXt0aGlzLmNoaWxkcmVuPVtdO2EmJkZrZShhLHRoaXMpfWdldFBhcmVudCgpe3JldHVybiB0aGlzLnBhcmVudH1zZXRQYXJlbnQoYSl7dGhpcy5wYXJlbnQhPT1hJiYoYT9Ga2UoYSx0aGlzKTp0aGlzLnBhcmVudCYmdGhpcy5wYXJlbnQucmVtb3ZlQ2hpbGQodGhpcykpfWdldENoaWxkcmVuKCl7cmV0dXJuIHRoaXMuY2hpbGRyZW59cmVtb3ZlQ2hpbGQoYSl7YS5wYXJlbnQ9PT10aGlzJiYoXy5EYSh0aGlzLmNoaWxkcmVuLGEpLGEucGFyZW50PXZvaWQgMCl9RUdhKCl7cmV0dXJuIF8uQWtlKHRoaXMua2EoKSl9R0JhKGEsYil7cmV0dXJuIEJrZShfLkhrZSh0aGlzLGEpLGIpfX07Xy5Ka2U9Y2xhc3MgZXh0ZW5kcyBfLklrZXtjb25zdHJ1Y3RvcihhLGIpe3N1cGVyKGIpO3RoaXMub2E9YX1jbG9uZSgpe3JldHVybiBuZXcgXy5Ka2UodGhpcy5vYS5jbG9uZSgpLHRoaXMuZ2V0UGFyZW50KCkpfWthKCl7cmV0dXJuIHRoaXMub2F9fTsKfWNhdGNoKGUpe18uX0R1bXBFeGNlcHRpb24oZSl9CnRyeXsKXy5La2U9Y2xhc3MgZXh0ZW5kcyBfLklrZXtjb25zdHJ1Y3RvcihhLGIpe3N1cGVyKGIpO3RoaXMuZWxlbWVudD1hfWthKCl7dmFyIGE9dGhpcy5lbGVtZW50LmNsaWVudFdpZHRoLGI9dGhpcy5lbGVtZW50LmNsaWVudEhlaWdodCxjPW5ldyBfLnBLO3JldHVybiBfLnprZShjLGEsMCwwLGIsMCwwKX19O18uTGtlPWNsYXNzIGV4dGVuZHMgXy5Ja2V7Y29uc3RydWN0b3IoYSl7c3VwZXIoKTt0aGlzLmVsZW1lbnQ9YX1rYSgpe3ZhciB7bGVmdDphLHRvcDpifT10aGlzLmVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCksYz1uZXcgXy5wSztyZXR1cm4gXy56a2UoYywxLDAsMCwxLGEsYil9fTsKfWNhdGNoKGUpe18uX0R1bXBFeGNlcHRpb24oZSl9CnRyeXsKXy51KCJoNWtraGMiKTsKdmFyIE1rZSxOa2UsUGtlO01rZT1mdW5jdGlvbihhLGIpe3ZhciBjPXZvaWQgMDtiKCJWZHFPY2MiLGQ9PntjPWQudGFyZ2V0RWxlbWVudC5lbCgpfSk7YSgiVmRxT2NjIik7cmV0dXJuIGN9O05rZT1mdW5jdGlvbihhLGIpe3JldHVybiBhLnF1ZXJ5U2VsZWN0b3IoYFtqc25hbWU9IiR7Yn0iXWApfTtfLk9rZT1mdW5jdGlvbihhLHtXOTpiLGtPOmN9KXtyZXR1cm4gXy50YWUoXy5xYWUoXy5yYWUoXy5wYWUoXy5vYWUoXy5uYWUobmV3IF8ubnosYiksYS5rYSksYS5vYSksYS5BYSksYyksYS5RZWEpfTtQa2U9e2p2ZDowLGl2ZDoxLGx2ZDoyLGt2ZDozLG12ZDo0fTt2YXIgUWtlPWNsYXNzIGV4dGVuZHMgXy5Ja2V7Y29uc3RydWN0b3IoYSxiKXtzdXBlcihiKTt0aGlzLmVsZW1lbnQ9YX1rYSgpe3ZhciBhPXRoaXMuZWxlbWVudC5jbGllbnRIZWlnaHQsYj10aGlzLmVsZW1lbnQuY2xpZW50SGVpZ2h0LGM9bmV3IF8ucEs7cmV0dXJuIF8uemtlKGMsYSwwLDAsYiwwLDApfX07Xy5Sa2U9ZnVuY3Rpb24oYSxiKXthLk5zYSE9PWImJihhLkVhLmluY2x1ZGVzKGIpJiYoTmtlKGEua2EsImk4QjhPZCIpIT09bnVsbHx8YS5ub3RpZnkoIlh1Z1hlZiIpKSxhLk5zYT1iLF8uaUsoYS5CYSxiKSk7cmV0dXJuIGJ9O18uU2tlPWZ1bmN0aW9uKGEpe3JldHVybiBhLk5zYT09PXZvaWQgMD8hMTphLkVhLmluY2x1ZGVzKGEuTnNhKX07Xy5Ua2U9ZnVuY3Rpb24oYSxiKXtyZXR1cm4gYS5CYS5yZWdpc3RlcihiKX07Cl8uVWtlPWNsYXNzIGV4dGVuZHMgXy5FaXtzdGF0aWMgUWEoKXtyZXR1cm57c2VydmljZTp7cmVxdWVzdElkOl8ueGtlLGxvY2F0aW9uOl8ucHZ9fX1jb25zdHJ1Y3RvcihhKXtzdXBlcigpO3RoaXMuQmE9bmV3IF8uaks7dGhpcy53YT1uZXcgXy5qSzt0aGlzLkVhPVsyLDRdO3RoaXMub2E9MDt0aGlzLnVyYj1fLkZuKCgpPT57dmFyIGU9TmtlKHRoaXMua2EsImJ5bTdTYiIpLGY9bmV3IF8uTGtlKGUpO3JldHVybntjbGllbnQ6bmV3IF8uSmtlKG5ldyBfLnBLKSxyZW5kZXI6ZixFc2I6bmV3IFFrZShlLGYpLGxOOm5ldyBfLktrZShlLGYpfX0pO3ZhciBiPU1rZShlPT52b2lkIHRoaXMubm90aWZ5KGUpLChlLGYpPT52b2lkIHRoaXMubGlzdGVuT25jZShlLGYpKSxjO3RoaXMua2E9KGM9TmtlKGIsImRPWlVDYyIpKSE9bnVsbD9jOk5rZShiLCJtTnh4eWMiKTt2YXIgZDt0aGlzLklhPShkPU5rZSh0aGlzLmthLCJwRElWSWIiKSkhPW51bGw/ZDp0aGlzLmthO3RoaXMuTnNhPV8uUmtlKHRoaXMsCl8uRW8odGhpcy5rYSkuZ2V0RGF0YSgidmZzIikuVGcoUGtlLDApKTt0aGlzLndKPShuZXcgVVJMU2VhcmNoUGFyYW1zKF8ub3YoYS5zZXJ2aWNlLmxvY2F0aW9uKSkpLmdldCgibHNlc3Npb25pZCIpfHwiIjt0aGlzLlc5PWEuc2VydmljZS5yZXF1ZXN0SWQuVzl8fF8uWWEoMCl9enFiKCl7cmV0dXJuIF8uJGdlKHRoaXMuSWEuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkpfXFpYSgpe3JldHVybiB0aGlzLk5zYX19O18uVnIoXy55a2UsXy5Va2UpOwpfLnYoKTsKfWNhdGNoKGUpe18uX0R1bXBFeGNlcHRpb24oZSl9CnRyeXsKdmFyIFZrZT1fLkZpKCJyblpWZmQiLFtfLmRLLF8uWWVlLF8uVmdlLF8ucWhlXSk7Xy5Xa2U9Xy5rYygieW9pcDdlIixbXy55a2UsVmtlXSk7Cn1jYXRjaChlKXtfLl9EdW1wRXhjZXB0aW9uKGUpfQp0cnl7Cl8uWGtlPWFzeW5jIGZ1bmN0aW9uKGEpe3ZhciBiPSgwLF8uTWYpKCksYz1iKCk7Yj1iKDEpO3RyeXtpZihhLmNvbXBsZXRlKXtpZihhLm5hdHVyYWxXaWR0aD09PTApdGhyb3cgRXJyb3IoImpsIik7fWVsc2V7dmFyIGQ9bmV3IF8uTXEsZT0oKT0+dm9pZCBkLnJlc29sdmUoKSxmPWc9PnZvaWQgZC5yZWplY3QoZyBpbnN0YW5jZW9mIEVycm9yP2c6RXJyb3IoYCR7Z31gKSk7YS5hZGRFdmVudExpc3RlbmVyKCJsb2FkIixlKTthLmFkZEV2ZW50TGlzdGVuZXIoImVycm9yIixmKTt0cnl7Yihhd2FpdCBjKGQucHJvbWlzZSkpfWZpbmFsbHl7YigpLGEucmVtb3ZlRXZlbnRMaXN0ZW5lcigibG9hZCIsZSksYS5yZW1vdmVFdmVudExpc3RlbmVyKCJlcnJvciIsZil9fX1maW5hbGx5e2MoKX19Owp9Y2F0Y2goZSl7Xy5fRHVtcEV4Y2VwdGlvbihlKX0KdHJ5ewpfLnUoInlvaXA3ZSIpOwp2YXIgWWtlOwpZa2U9ZnVuY3Rpb24oYSl7YS53YT1hLm9hPT09MT8wOmEuS2E/MjpfLlNrZShhLlB5KXx8YS5QeS5xaWEoKT09PTM/MzoxO3ZhciBiPSgoKT0+e3N3aXRjaChhLndhKXtjYXNlIDA6cmV0dXJue3NtYjoiZGVsZXRlIixSdWI6ITAsWWk6IlNsZXR0IGRldCB2aXN1ZWxsZSBzXHUwMGY4a2V0In07Y2FzZSAyOnJldHVybntPcGM6Im5vdC1hbGxvd2VkIixZaToiVXRsXHUwMGY4cHQgdmlzdWVsdCBzXHUwMGY4ayJ9O2Nhc2UgMzpyZXR1cm57fTtjYXNlIDE6cmV0dXJue3NtYjoiZWRpdCIsUnViOiEwLFlpOiJFbmRyZSBkZXQgdmlzdWVsbGUgc1x1MDBmOGtldCJ9O2RlZmF1bHQ6Xy5lYihhLndhLHZvaWQgMCl9fSkoKTtiLnNtYj09PSJlZGl0Ij9hLklhLmNsYXNzTGlzdC5yZW1vdmUoIkI5eEwwIik6YS5JYS5jbGFzc0xpc3QuYWRkKCJCOXhMMCIpO2Iuc21iPT09ImRlbGV0ZSI/YS5HYS5jbGFzc0xpc3QuYWRkKCJGSTdDV2MiKTphLkdhLmNsYXNzTGlzdC5yZW1vdmUoIkZJN0NXYyIpO2EuUmEuYXJpYURpc2FibGVkPQpiLlJ1Yj8iZmFsc2UiOiJ0cnVlIjt2YXIgYzthLlJhLnN0eWxlLmN1cnNvcj0oYz1iLk9wYykhPW51bGw/YzpiLlJ1Yj8icG9pbnRlciI6IiI7dmFyIGQ7KGQ9YS50b29sdGlwKT09bnVsbHx8ZC5kZXN0cm95KCk7Yz1hLmdldFJvb3QoKS5lbCgpO2MucmVtb3ZlQXR0cmlidXRlKCJhcmlhLWxhYmVsIik7YS50b29sdGlwPWIuWWk/Xy5UZmUoYyxiLllpKTpudWxsO3JldHVybiBhLndhfTsKXy5aa2U9Y2xhc3MgZXh0ZW5kcyBfLnNrZXtzdGF0aWMgUWEoKXtyZXR1cm57bW9kZWw6e1d4YTpfLlVrZX19fWNvbnN0cnVjdG9yKGEpe3N1cGVyKGEuR2IpO3RoaXMuS2E9ITE7dGhpcy50b29sdGlwPW51bGw7dGhpcy5JYT10aGlzLkphKCJMU0s0V2MiKS5oYigpO3RoaXMuR2E9dGhpcy5KYSgiVUgybUxkIikuaGIoKTt0aGlzLlJhPXRoaXMuZ2V0Um9vdCgpLmhiKCk7dGhpcy5QeT1hLm1vZGVsLld4YTtfLnJrZSh0aGlzLHRoaXMuSkcuTFNhKCkpO18uWGtlKHRoaXMuSmEoIkpVQ3M3ZSIpLmVsKCkpLmNhdGNoKCgpPT57dGhpcy5LYT0hMDtfLndPYSh0aGlzLkphKCJKVUNzN2UiKSwibWU3b0VmIik7dGhpcy5KYSgiUURTVU5iIikuYWRkQ2xhc3MoIkpLNGNjYiIpO3RoaXMuT2EoKTtZa2UodGhpcyl9KTt0aGlzLndhPVlrZSh0aGlzKTt0aGlzLmFkZE9uRGlzcG9zZUNhbGxiYWNrKF8uVGtlKHRoaXMuUHksKCk9PntZa2UodGhpcyl9KSl9bmIoKXtyZXR1cm57d2lkdGg6MzYsaGVpZ2h0OjMyfX1YYygpe18uRXYodGhpcy5nZXRSb290KCkuZWwoKSwKe3VzZXJBY3Rpb246M30pO3N3aXRjaCh0aGlzLndhKXtjYXNlIDA6dGhpcy5BYSgpO2JyZWFrO2Nhc2UgMTpfLlpnKGRvY3VtZW50LmJvZHksIlEzdldQZCIpO2JyZWFrO2Nhc2UgMjpjYXNlIDM6YnJlYWs7ZGVmYXVsdDpfLmViKHRoaXMud2Esdm9pZCAwKX19WmEoKXtZa2UodGhpcyl9fTtfLlprZS5wcm90b3R5cGUuJHdhJGg1TTEyZT1mdW5jdGlvbigpe3JldHVybiB0aGlzLlhjfTtfLlprZS5wcm90b3R5cGUuJHdhJHFJMENsYj1mdW5jdGlvbigpe3JldHVybiB0aGlzLm5ifTtfLmpzKF8uV2tlLF8uWmtlKTsKXy52KCk7Cn1jYXRjaChlKXtfLl9EdW1wRXhjZXB0aW9uKGUpfQp0cnl7Cl8ucGdiPWZ1bmN0aW9uKGEpe3JldHVybiBfLk55YSgpJiZ0eXBlb2YgQXN5bmNDb250ZXh0IT09InVuZGVmaW5lZCI/QXN5bmNDb250ZXh0LlNuYXBzaG90LndyYXAoYSk6YX07dmFyIHFnYjtxZ2I9YT0+e2lmKCFhKXJldHVybiBhO3RyeXthPW5ldyBVUkwodHlwZW9mIGE9PT0ib2JqZWN0Ij9hLmhyZWY6YSl9Y2F0Y2goYil7cmV0dXJuIHR5cGVvZiBhPT09Im9iamVjdCI/YS5ocmVmOmF9aWYoYS5wcm90b2NvbCE9PSJodHRwOiImJmEucHJvdG9jb2whPT0iaHR0cHM6IilyZXR1cm4gYS5wcm90b2NvbC5zbGljZSgwLC0xKTthLnVzZXJuYW1lPSIiO2EucGFzc3dvcmQ9IiI7YS5oYXNoPSIiO3JldHVybiBhLmhyZWZ9O3ZhciB0Z2I7Xy5Ecj1mdW5jdGlvbihhLGIpe3ZhciBjPXJnYjtpZihiIGluc3RhbmNlb2YgT2JqZWN0JiYhT2JqZWN0LmlzRnJvemVuKGIpKXtsZXQgZD1xZ2IoYi5maWxlTmFtZXx8Yi5maWxlbmFtZXx8Yi5zb3VyY2VVUkx8fF8uZWEuJGdvb2dEZWJ1Z0ZuYW1lfHxsb2NhdGlvbi5ocmVmKTt0cnl7Yi5maWxlTmFtZT1kfWNhdGNoKGUpe319aWYoYy5vYT49Myl0aHJvdyBFcnJvcigiRGVgIithKTtjLm9hKys7dHJ5e2MuaXNEaXNwb3NlZCgpfHxiIGluc3RhbmNlb2YgXy51TGF8fGIgaW5zdGFuY2VvZiBfLldlfHxfLmxvYShiKXx8Yy5rYSYmYy5rYS5sZW5ndGg8MTAmJmMua2EucHVzaChuZXcgc2diKGEsYikpfWZpbmFsbHl7Yy5vYS0tfX07dGdiPWNsYXNzIGV4dGVuZHMgXy5FZHtjb25zdHJ1Y3Rvcigpe3N1cGVyKCk7dGhpcy5vYT0wO3RoaXMua2E9bnVsbH1pbml0KCl7dGhpcy5rYT1bXX19O3RnYi5wcm90b3R5cGUuV2k9bnVsbDsKdmFyIHJnYj1uZXcgdGdiLHNnYj1jbGFzc3tjb25zdHJ1Y3RvcihhLGIpe3RoaXMubXNnPWE7dGhpcy5lPWI7dGhpcy5zZXZlcml0eT0idW5rbm93biJ9fTsKfWNhdGNoKGUpe18uX0R1bXBFeGNlcHRpb24oZSl9CnRyeXsKXy5rZSgpOwp9Y2F0Y2goZSl7Xy5fRHVtcEV4Y2VwdGlvbihlKX0KdHJ5ewpfLmFvYz1TeW1ib2woImZpIik7Xy5ib2M9e3hzYzohMCxIc2M6ITEsS3NjOl8uRkJhLExzYzpfLkZCYSxMemQ6ITEsZ3hkOiExLERzYzohMCx6cGI6ITEseSRhOiExfTtfLnF6PU9iamVjdC5hc3NpZ24oe30se2F0dHJpYnV0ZXM6e30saGFuZGxlRXJyb3IoYSl7dGhyb3cgYTt9fSxfLmJvYyk7Cn1jYXRjaChlKXtfLl9EdW1wRXhjZXB0aW9uKGUpfQp0cnl7Cl8uZGllPWZ1bmN0aW9uKGEpe3JldHVybiBfLmFoKGBzdWdnZXN0aW9uJHthfWlubmVyVGV4dENvbnRhaW5lcmApfTtfLm1LPWNsYXNze2NvbnN0cnVjdG9yKGEsYixjPTEsZD0iIixlPSIiLGY9ITEpe3RoaXMuaW5kZXg9YTt0aGlzLndtPWI7dGhpcy5vYT1jO3RoaXMuQWE9ZDt0aGlzLndhPWU7dGhpcy5rYT1mfWdldEluZGV4KCl7cmV0dXJuIHRoaXMuaW5kZXh9RWEoKXtyZXR1cm4gdGhpcy5BYT90aGlzLkFhOnRoaXMuaW5kZXghPT0tMT9fLmRpZSh0aGlzLmluZGV4KToiIn1CYSgpe3JldHVybiB0aGlzLmthP3RoaXMud2F8fCIiOiIifX07Cn1jYXRjaChlKXtfLl9EdW1wRXhjZXB0aW9uKGUpfQp0cnl7Cl8uJGtlPV8ua2MoIkR2bjdmZSIsW18uZEssXy5DZGUsXy5rZ2UsXy5aJGRdKTsKfWNhdGNoKGUpe18uX0R1bXBFeGNlcHRpb24oZSl9CnRyeXsKXy51KCJEdm43ZmUiKTsKdmFyIGNsZSxkbGU7Xy5hbGU9ZnVuY3Rpb24oYSxiKXtyZXR1cm4gXy5MZWUoYS53YSgpLF8udWVlKGIpKT09PTF9O18uYmxlPWZ1bmN0aW9uKGEsYil7cmV0dXJuIHBhcnNlSW50KGEua2FbYl0mJmEua2FbYl1bMV0sMTApfHwwfTtjbGU9WzM1LDMwLDMzLDQxXTtkbGU9WzM5LDEwLDIxLDYwNCw4NDIsODU3LDg5M107dmFyIGVsZSxrbGUsbGxlLGdsZSxvbGUsbWxlLGhsZSxmbGUsbmxlO18uamxlPWZ1bmN0aW9uKGEsYj0hMSl7aWYoYS5BYSgpKXt2YXIgYzsoYz1hLkVhW2Eub2FdLmthKT09bnVsbHx8Yy5leGl0KCk7aWYoYz1hLk5hLmdldChhLm9hKSkoMCxfLmtvKShjKSxhLk5hLmRlbGV0ZShhLm9hKTsoMCxfLmpvKSgoKT0+e3ZhciBkPWEueVNhKCk7IWQua2EoKS5sZW5ndGh8fGEuQWEoKSYmYS5rYVthLm9hXSYmIWVsZShhLmthW2Eub2FdKXx8ZmxlKGEua2EsZC5rYSgpKXx8KGEua2E9ZC5rYSgpLGdsZShhLGEucmIsZCxhLmthLCExLCEwKSl9LDMwMCl9aGxlKGEsYS5vYSwhMSk7YS5vYT0tMTtpZihjPWEuZ2V0Um9vdCgpLnBhcmVudCgpLmVsKCkpIWImJmEua2EubGVuZ3RoPjAmJmVsZShhLmthWzBdKT8oXy5pbGUoYSwwKSxfLllnKGMsImhCRUlWYiIsbmV3IF8ubUsoMCxhLmthWzBdLDApKSk6Xy5ZZyhjLCJoQkVJVmIiLG5ldyBfLm1LKC0xLHZvaWQgMCwyKSl9OwplbGU9ZnVuY3Rpb24oYSl7cmV0dXJuISFfLmpMYiYmIShhPT1udWxsfHwhYS5rYSgpLmluY2x1ZGVzKDM4MSkpfTtrbGU9ZnVuY3Rpb24oYSxiLGM9ITEpe2M9ISFiJiYhYzthLnJvb3QudG9nZ2xlQ2xhc3MoIlMzbkZuZCIsYyk7YS50cmlnZ2VyKCJSMmM1TyIsYyk7YS5BYi5oaWRkZW49IWM7YS5JYiYmKGEuSWIuaGlkZGVuPWMpO2EuSmIudG9nZ2xlKCFjKTthLnckYS50b2dnbGUoIWMpO2I/KGM9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2IiksYy5zdHlsZS5wb3NpdGlvbj0iYWJzb2x1dGUiLGMuc3R5bGUud2hpdGVTcGFjZT0icHJlIixjLnN0eWxlLmZvbnQ9IjE2cHggYXJpYWwsc2Fucy1zZXJpZiIsYj1fLktjKGIpLF8uZWQoYyxiKSxkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGMpLGI9TWF0aC5yb3VuZChjLm9mZnNldFdpZHRoKSxkb2N1bWVudC5ib2R5LnJlbW92ZUNoaWxkKGMpKTpiPTA7YS5BYi5zdHlsZS53aWR0aD1gJHtifXB4YH07CmxsZT1mdW5jdGlvbihhLGIpe2ZvcihsZXQgYz1iLnhEYS5sZW5ndGgtMTtjPj1iLnp0YTtjLS0pe2xldCBkPWIueERhW2NdLGU9ZC5rYSgpO2EubmIuZ2V0KGUpfHxhLm5iLnNldChlLFtdKTthLm5iLmdldChlKS5wdXNoKGQpO2IueERhLnNwbGljZShjLDEpO18uWW0oZC5yb290RWxlbWVudCl9Yi56dGE9MH07Xy5pbGU9ZnVuY3Rpb24oYSxiKXttbGUoYSxiKTthLkFhKCkmJmEuRWFbYS5vYV0ua2EuZXhpdCgpO2hsZShhLGEub2EsITEpO2Eub2E9YjtiIT09LTEmJmEud2EmJihfLmFsZShhLndhLGEua2FbYl0pPyhhLlJhPTEsYS5JYT1iKTooYS5SYT0wLGEuU2E9YiksaGxlKGEsYiwhMCkpfTsKZ2xlPWZ1bmN0aW9uKGEsYixjLGQsZT0hMSxmPSExKXthLlpjLkNnPXBlcmZvcm1hbmNlLm5vdygpO2Eua2EubGVuZ3RoPWQubGVuZ3RoO2EuQmEubGVuZ3RoPWQubGVuZ3RoO2EuRWEubGVuZ3RoPWQubGVuZ3RoO2EuSWE9LTE7YS5SYT0wO3ZhciBnPSExLGg9bnVsbDtmb3IobGV0IFtKLE5db2YgZC5lbnRyaWVzKCkpe3ZhciBrPUosbT1OLG49Xy5hbGUoYyxtKTtuJiYhZyYmKGc9ITAsYS50cmlnZ2VyKCJuVHpmcGYiLCEwKSk7bnx8KGEuT2E9ayk7bGV0IFtRLFpdPW4/W2EuVWMsYS5RYl06W2EuUGMsYS5PYl07aWYobnx8IWUpe249YTt2YXIgcD1jLHI9Xy51ZWUobSk7aWYoaCYmaC5ncm91cElkPT09cilwPWg7ZWxzZXtoJiZoLnRLKCk7aD1uLkdyLkVhKHIpLnFRYShwLHIpO3ZhciB4PW4uR3IuQmEocikucVFhKHAsciksej1fLmJsZShwLndhKCkscik7cD1uO3ZhciBCPVoueERhW1ouenRhXTtCJiZCLmthKCk9PT16fHwoQj0oQj1wLm5iLmdldCh6KSkmJkIubGVuZ3RoP0IucG9wKCk6CnAuR3IuWmEoeikuRDRhKHIsaCx4KSxaLnhEYS5zcGxpY2UoWi56dGEsMCxCKSxfLlhtKFEsQi5yb290RWxlbWVudCxaLnp0YSkpO1ouenRhKys7Qi5pbml0aWFsaXplKHIsaCx4KTtwPUJ9aD1uLkdyLlhIKG0pO2xldCB7dmlldzpZLHNYYjpkYX09cC5LYShoLG0sayk7bi5rYVtrXT1tO24uQmFba109WTtuLkVhW2tdPWRhO2g9cH19aCYmaC50SygpO2V8fGxsZShhLGEuT2IpO2xsZShhLGEuUWIpO2Eud2E9YztlPWMub2EoImFwIiwiIik7az1lbGUoZFswXSk7ZT1lJiZrP2EuQWIuc3R5bGUud2lkdGg6IiI7Zm9yKGxldCBbSixOXW9mIGQuZW50cmllcygpKWs9SixuPU4sbT1hLkJhW2tdLG0gaW5zdGFuY2VvZiBIVE1MRWxlbWVudCYmKG49bi5nZXRUeXBlKCk9PT0zM3x8bi5rYSgpLmluY2x1ZGVzKDIxKSxtLnN0eWxlLnBhZGRpbmdMZWZ0PWs+MCYmZSYmbj9lOiIiKTtjPV8ueWVlKGMsZCxmKTthLlpjLldoKGMpO2d8fGEudHJpZ2dlcigiblR6ZnBmIiwhMSk7YS5ldmVudHMuUHgoOSwKe3Jlc3BvbnNlOmMscmVxdWVzdDpifSk7Zz1iLmdldFF1ZXJ5KCk7Zj1kPSExO2ZvcihlPTA7ZTxhLmthLmxlbmd0aCYmZTxhLkJhLmxlbmd0aDtlKyspe2s9YS5rYVtlXTttPW5ldyBfLnpvKGEuQmFbZV0pO2E6e2lmKGNsZS5pbmNsdWRlcyhrLmdldFR5cGUoKSkpe249ITE7YnJlYWsgYX1uPWsua2EoKTtmb3IodmFyIEggb2YgZGxlKWlmKG4uaW5jbHVkZXMoSCkpe249ITE7YnJlYWsgYX1uPSEwfWR8fChkPW4pO3A9bmxlKGEsayxnKTtpZihtLmhhc0NsYXNzKCJQWlBabGYiKSE9PW58fF8ubm0obS5nZXREYXRhKCJlbnRpdHluYW1lIikpIT09Xy5NZGUoayl8fF8ubm0obS5nZXREYXRhKCJwc2QiKSkhPT1wKWY9ITA7bS50b2dnbGVDbGFzcygiUFpQWmxmIixuKTttLnNldERhdGEoImVudGl0eW5hbWUiLF8uTWRlKGspKTttLnNldERhdGEoInBzZCIscCl9YS5KYi50b2dnbGUoZCk7ZiYmYS5yb290Lmhhc0NsYXNzKCJpMWVXcGIiKSYmXy5aZyhkb2N1bWVudCwidzhmMWZjIik7YS5vYT09PQotMSYmYS5rYS5sZW5ndGg+MCYmZWxlKGEua2FbMF0pJiYoXy5pbGUoYSwwKSwoSD1hLmdldFJvb3QoKS5wYXJlbnQoKS5lbCgpKSYmXy5YZyhILCJoQkVJVmIiLG5ldyBfLm1LKDAsYS5rYVswXSwwKSkpO2EuWmMuemcoYixjKX07b2xlPWZ1bmN0aW9uKGEsYil7dmFyIGM9Yi5rYSgpO2lmKCFjLmxlbmd0aHx8IWVsZShjWzBdKXx8Yy5zb21lKGU9Pl8uYWxlKGIsZSkpKXJldHVybiBiO3ZhciBkPWMuZmluZChlPT4hZWxlKGUpJiYhZS5rYSgpLmluY2x1ZGVzKDY2MykpO3JldHVybiBkPyhhPWEuR3Iuc3dhKGQpKT9fLnllZShiLFsuLi5jLGFdKTpiOmJ9OwptbGU9ZnVuY3Rpb24oYSxiKXtpZihiIT09YS5vYSYmYiE9PS0xKXt2YXIgYz1hLmthW2JdO2lmKGVsZShjKSl7dmFyIGQ9YS5rYS5maW5kKGU9PiFlbGUoZSkmJiFlLmthKCkuaW5jbHVkZXMoNjYzKSk7aWYoIWQpcmV0dXJuO2M9ZH1kPWEueVNhKCkub2EoImJ0IiwhMSk7Yy5rYSgpLmluY2x1ZGVzKDY2Myl8fGR8fGEuTmEuc2V0KGIsKDAsXy5qbykoKCk9PnthLk5hLmRlbGV0ZShiKTt2YXIgZT1hLmthLmZpbmRJbmRleChnPT5nLmthKCkuaW5jbHVkZXMoNjYzKSk7aWYoZSE9PWIpe3ZhciBmPWEuR3Iuc3dhKGMpO2YmJihlPi0xP2Eua2FbZV09ZjphLmthLnB1c2goZikpOyhmfHxlIT09LTEpJiZnbGUoYSxhLnJiLGEueVNhKCksZj9hLmthOmEua2Euc2xpY2UoMCxhLmthLmxlbmd0aC0xKSwhMCwhMCl9fSwzMDApKX19O2hsZT1mdW5jdGlvbihhLGIsYyl7YjwwfHxiPj1hLkJhLmxlbmd0aHx8KG5ldyBfLnpvKGEuQmFbYl0pKS50b2dnbGVDbGFzcygic2JobCIsYyl9OwpmbGU9ZnVuY3Rpb24oYSxiKXtyZXR1cm4gYS5sZW5ndGg9PT1iLmxlbmd0aCYmYS5ldmVyeSgoYyxkKT0+Yz09PWJbZF0pfTtubGU9ZnVuY3Rpb24oYSxiLGMpe2E9e3NjdXRpX3VpX3ZlcnNpb246IjIiLHF1ZXJ5OmMscHE6YS5PZi53YSgpLGNob2ljZXNfc2M6Xy5YSihiKSwic3VnZ2VzdGlvbi10eXBlX3NjIjpiLmdldFR5cGUoKS50b1N0cmluZygpLCJzdWdnZXN0aW9uLXN1YnR5cGVzX3NjIjpiLmthKCkuam9pbigiICIpfTtyZXR1cm4gT2JqZWN0LmVudHJpZXMoYSkubWFwKChbZCxlXSk9PmAke2R9fjomJHtlfWApLmpvaW4oIn47JiIpfTsKXy5xSz1jbGFzcyBleHRlbmRzIF8uaHN7c3RhdGljIFFhKCl7cmV0dXJue21vZGVsOntHcjpfLmVLLGV2ZW50czpfLkRkZSxaYzpfLnRnZSx0YWE6Xy5jYWV9fX1jb25zdHJ1Y3RvcihhKXtzdXBlcigpO3RoaXMucm9vdD10aGlzLmdldFJvb3QoKTt0aGlzLlBjPXRoaXMuSmEoImVya3ZRZSIpLmhiKCk7dGhpcy5VYz10aGlzLkphKCJ0b3ZFaWIiKS5oYigpO3RoaXMuQWI9dGhpcy5KYSgiUmpQdVZiIikuaGIoKTt0aGlzLkliPXRoaXMuVmEoIlZsY0xBZSIpLmhiKCk7dGhpcy5KYj10aGlzLkhiKCJKVXlwViIpO3RoaXMudyRhPXRoaXMuSGIoImxoODdrZSIpO3RoaXMuR2c9ITE7dGhpcy53YT10aGlzLnJiPXRoaXMuUGE9bnVsbDt0aGlzLmthPVtdO3RoaXMuQmE9W107dGhpcy5FYT1bXTt0aGlzLklhPXRoaXMuU2E9dGhpcy5vYT0tMTt0aGlzLlJhPTA7dGhpcy5LYT10aGlzLk9hPS0xO3RoaXMubmI9bmV3IE1hcDt0aGlzLk9iPXt4RGE6W10senRhOjB9O3RoaXMuUWI9e3hEYTpbXSx6dGE6MH07CnRoaXMuTmE9bmV3IE1hcDt0aGlzLkZiPSExO3RoaXMuR3I9YS5tb2RlbC5Hcjt0aGlzLmV2ZW50cz1hLm1vZGVsLmV2ZW50czt0aGlzLlpjPWEubW9kZWwuWmM7Xy5iYWUoYS5tb2RlbC50YWEpO3RoaXMuT2Y9YS5tb2RlbC50YWEuVkIoKTt0aGlzLkdyLmthKF8uWWRlLHRoaXMpO3RoaXMucm9vdC5lbCgpLmFkZEV2ZW50TGlzdGVuZXIoIm1vdXNlbW92ZSIsKCk9Pnt0aGlzLkZiPSExfSk7dGhpcy5yb290LmVsKCkuYWRkRXZlbnRMaXN0ZW5lcigibW91c2Vkb3duIixiPT57Xy5oTGImJmIucHJldmVudERlZmF1bHQoKX0pfXJlbmRlcihhLGIpe18uamxlKHRoaXMsITApO3RoaXMuWmEoKTt2YXIgYz1iLmthKCk7Yz1lbGUoY1swXSk7a2xlKHRoaXMsYi5vYSgiYXAiLCIiKSxjKTt0aGlzLlNhPS0xO2I9b2xlKHRoaXMsYik7Z2xlKHRoaXMsYSxiLGIua2EoKSk7dGhpcy5NeighIXRoaXMua2EubGVuZ3RoKTt0aGlzLnJiPWF9TXooYSl7YSE9PXRoaXMuR2cmJnRoaXMudHJpZ2dlcigidm14VWIiLAphKTt0aGlzLlBhJiYoKDAsXy5rbykodGhpcy5QYSksdGhpcy5QYT1udWxsKTtpZighYSl7Zm9yKGxldCBiIG9mIHRoaXMuTmEudmFsdWVzKCkpKDAsXy5rbykoYik7dGhpcy5OYS5jbGVhcigpfXRoaXMuR2c9YTt0aGlzLmdldFJvb3QoKS50b2dnbGUoYSl9WmUoKXtyZXR1cm4gdGhpcy5HZ31HYSgpe3JldHVybiB0aGlzLkthIT09LTF9UGIoKXt0aGlzLkZiPSEwO3RoaXMuUGF8fCh0aGlzLlBhPSgwLF8uam8pKCgpPT57dGhpcy5NeighMSl9LDVFMykpfVhiKGEpe2E9YS5kYXRhO2lmKGEub2E9PT0wJiZ0aGlzLkZiKXJldHVybiEwO2E9YS5nZXRJbmRleCgpO3RoaXMub2EhPT1hJiZfLmlsZSh0aGlzLGEpO3JldHVybiEwfUNjKCl7Xy5qbGUodGhpcyl9aGMoKXtfLmpsZSh0aGlzKX15U2EoKXtyZXR1cm4gdGhpcy53YXx8bmV3IF8uY0t9WmEoKXt0aGlzLkthPS0xfUFhKCl7cmV0dXJuIHRoaXMub2EhPT0tMX1JYyhhKXt2YXIgYj10aGlzLndhLmthKCkuZmlsdGVyKChlLGYpPT4hYS5kYXRhLm5RYyhlLApmKSksYz1uZXcgXy50ZWUoIiIsMCksZD1uZXcgXy5jSyhiLF8ueGVlKHRoaXMud2EpKTsoMCxfLmpvKSgoKT0+dGhpcy5yZW5kZXIoYyxkKSwwKX19O18ucUsucHJvdG90eXBlLiR3YSRDbVZPZ2M9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5JY307Xy5xSy5wcm90b3R5cGUuJHdhJFM2cHdEPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuQWF9O18ucUsucHJvdG90eXBlLiR3YSRCbkpscmM9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5aYX07Xy5xSy5wcm90b3R5cGUuJHdhJFpoRUdUZD1mdW5jdGlvbigpe3JldHVybiB0aGlzLnlTYX07Xy5xSy5wcm90b3R5cGUuJHdhJE1XZmlrYj1mdW5jdGlvbigpe3JldHVybiB0aGlzLmhjfTtfLnFLLnByb3RvdHlwZS4kd2EkSXR6RENkPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuQ2N9O18ucUsucHJvdG90eXBlLiR3YSRuVVo5bGU9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5YYn07Xy5xSy5wcm90b3R5cGUuJHdhJFVmVVFFZT1mdW5jdGlvbigpe3JldHVybiB0aGlzLlBifTsKXy5xSy5wcm90b3R5cGUuJHdhJER5MGxJZj1mdW5jdGlvbigpe3JldHVybiB0aGlzLkdhfTtfLnFLLnByb3RvdHlwZS4kd2EkRlZLekFiPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuWmV9O18uanMoXy4ka2UsXy5xSyk7Cl8udigpOwp9Y2F0Y2goZSl7Xy5fRHVtcEV4Y2VwdGlvbihlKX0KdHJ5ewpfLnI5Yj1uZXcgXy5hbzsKfWNhdGNoKGUpe18uX0R1bXBFeGNlcHRpb24oZSl9CnRyeXsKXy5zOWI9Y2xhc3N7Z2V0Q2hpbGRyZW4oKXtyZXR1cm5bXX19Owp9Y2F0Y2goZSl7Xy5fRHVtcEV4Y2VwdGlvbihlKX0KdHJ5ewp2YXIgdTliLHY5YjtfLnQ5Yj1mdW5jdGlvbihhLGIpe2lmKCJ0b2tlbiJpbiBhKXtsZXQgZTtyZXR1cm57ZHVyYXRpb246YS50b2tlbi5kdXJhdGlvbixkZWxheTooZT1hLmRlbGF5KSE9bnVsbD9lOmIuZGVsYXksZWFzaW5nOmEudG9rZW4uZWFzaW5nfX12YXIgYyxkO3JldHVybntkdXJhdGlvbjphLmR1cmF0aW9uLGRlbGF5OihjPWEuZGVsYXkpIT1udWxsP2M6Yi5kZWxheSxlYXNpbmc6KGQ9YS5lYXNpbmcpIT1udWxsP2Q6Yi5lYXNpbmd9fTt1OWI9Y2xhc3N7Y29uc3RydWN0b3IoKXt0aGlzLmthPV8uWW4oXy5yOWIpfWluaXQoYSxiLGMpe18uVEthKHRoaXMua2EsZD0+e2QuaW5pdChhLGIsYyl9KX1wbGF5KGEsYixjLGQpe3JldHVybiBfLlRLYSh0aGlzLmthLGU9PmUucGxheShhLGIsYyxkKSl8fF8uRGcobnVsbCl9ZmluaXNoKGEsYil7Xy5US2EodGhpcy5rYSxjPT57Yy5maW5pc2goYSxiKX0pfX07CnY5Yj1jbGFzc3tjb25zdHJ1Y3Rvcigpe3RoaXMub3BhY2l0eT1udWxsO3RoaXMub3JpZ2luPSIiO3RoaXMuQWE9dGhpcy5zY2FsZT10aGlzLnRyYW5zbGF0ZT1udWxsfXdhKCl7cmV0dXJuIHRoaXMudHJhbnNsYXRlIT09bnVsbH1vYSgpe3JldHVybiB0aGlzLnNjYWxlIT09bnVsbH1JYSgpe3JldHVybiB0aGlzLndhKCl8fHRoaXMub2EoKXx8dGhpcy5BYSE9PW51bGx9a2EoKXtyZXR1cm4gdGhpcy5vcGFjaXR5IT09bnVsbH1HYSgpe3ZhciBhPVtdO3RoaXMud2EoKSYmYS5wdXNoKCJ0cmFuc2xhdGUzZCgiK3RoaXMudHJhbnNsYXRlWzBdKyJweCwiK3RoaXMudHJhbnNsYXRlWzFdKyJweCwiK3RoaXMudHJhbnNsYXRlWzJdKyJweCkiKTt0aGlzLm9hKCkmJmEucHVzaCgic2NhbGUzZCgiK3RoaXMuc2NhbGUuam9pbigiLCIpKyIpIik7dGhpcy5BYSE9PW51bGwmJmEucHVzaCgicm90YXRlWigiK3RoaXMuQWErImRlZykiKTtyZXR1cm4gYS5qb2luKCIgIil9RWEoKXtyZXR1cm4iIit0aGlzLm9wYWNpdHl9QmEoKXt2YXIgYT0Ke307dGhpcy5vcmlnaW4mJihhLnRyYW5zZm9ybU9yaWdpbj10aGlzLm9yaWdpbik7dGhpcy5JYSgpJiYoYS50cmFuc2Zvcm09dGhpcy5HYSgpKTt0aGlzLmthKCkmJihhLm9wYWNpdHk9dGhpcy5FYSgpKTtyZXR1cm4gYX19O3ZhciB3OWI9e2RlbGF5OjAsZWFzaW5nOiJsaW5lYXIifSx4OWI9ZnVuY3Rpb24oYSl7cmV0dXJuIGEuZHVyYXRpb24rIm1zICIrYS5lYXNpbmcrIiAiK2EuZGVsYXkrIm1zIn0seTliPWNsYXNze2NvbnN0cnVjdG9yKGEpe3RoaXMub3BhY2l0eT1fLnQ5YihhLHc5Yik7dGhpcy50cmFuc2Zvcm09Xy50OWIoYSx3OWIpfW9hKCl7cmV0dXJuIHg5Yih0aGlzLm9wYWNpdHkpfXdhKCl7cmV0dXJuIHg5Yih0aGlzLnRyYW5zZm9ybSl9a2EoKXtyZXR1cm4gTWF0aC5tYXgodGhpcy5vcGFjaXR5LmR1cmF0aW9uK3RoaXMub3BhY2l0eS5kZWxheSx0aGlzLnRyYW5zZm9ybS5kdXJhdGlvbit0aGlzLnRyYW5zZm9ybS5kZWxheSl9fTtfLld4PWZ1bmN0aW9uKGEsYil7YS5sSi5vcGFjaXR5PWJ8fC4wMDE7cmV0dXJuIGF9O18uejliPWZ1bmN0aW9uKGEsYil7YS5rYS5vcGFjaXR5PWJ8fC4wMDE7YS5sSi5rYSgpfHwoYS5sSi5vcGFjaXR5PTEpO3JldHVybiBhfTtfLlh4PWZ1bmN0aW9uKGEsYixjLGQpe2EubEoudHJhbnNsYXRlPVtiLGMsZF07cmV0dXJuIGF9O18uWXg9ZnVuY3Rpb24oYSxiLGMsZCl7YS5rYS50cmFuc2xhdGU9W2IsYyxkXTthLmxKLndhKCl8fChhLmxKLnRyYW5zbGF0ZT1bMCwwLDBdKTtyZXR1cm4gYX07Xy4keD1mdW5jdGlvbihhLGIsYyxkKXthLmxKLnNjYWxlPVtiLGMsZF07cmV0dXJuIGF9O18uQTliPWZ1bmN0aW9uKGEsYixjLGQpe2Eua2Euc2NhbGU9W2IsYyxkXTthLmxKLm9hKCl8fChhLmxKLnNjYWxlPVsxLDEsMV0pO3JldHVybiBhfTtfLkI5Yj1mdW5jdGlvbihhLGIpe2EubEouQWE9YjtyZXR1cm4gYX07Cl8uQzliPWZ1bmN0aW9uKGEsYil7dmFyIGM9YS50aW1pbmc7Yy50cmFuc2Zvcm09Xy50OWIoYixjLnRyYW5zZm9ybSk7cmV0dXJuIGF9OwpfLmF5PWNsYXNzIGV4dGVuZHMgXy5zOWJ7Y29uc3RydWN0b3IoYSxiKXtzdXBlcigpO3RoaXMuZWxlbWVudD1hO3RoaXMuR2k9bmV3IHU5Yjt0aGlzLmthPW5ldyB2OWI7dGhpcy5sSj1uZXcgdjliO3RoaXMudGltaW5nPW5ldyB5OWIoYil9b3BhY2l0eShhLGIpe3JldHVybiBfLld4KF8uejliKHRoaXMsYSksYil9dHJhbnNsYXRlKGEsYixjLGQsZSxmKXtyZXR1cm4gXy5YeChfLll4KHRoaXMsYSxiLGMpLGQsZSxmKX1zY2FsZShhLGIsYyxkLGUsZil7cmV0dXJuIF8uJHgoXy5BOWIodGhpcyxhLGIsYyksZCxlLGYpfW9yaWdpbihhKXt0aGlzLmxKLm9yaWdpbj1hO3JldHVybiB0aGlzfWluaXQoYSl7dGhpcy5HaS5pbml0KHRoaXMuZWxlbWVudCx0aGlzLmthLGEpfXBsYXkoKXtyZXR1cm4gdGhpcy5HaS5wbGF5KHRoaXMuZWxlbWVudCx0aGlzLmthLHRoaXMubEosdGhpcy50aW1pbmcpfWZpbmlzaCgpe3RoaXMuR2kuZmluaXNoKHRoaXMuZWxlbWVudCx0aGlzLmxKKX1Oaigpe3JldHVybiB0aGlzLnRpbWluZy5rYSgpKgoyfX07Cn1jYXRjaChlKXtfLl9EdW1wRXhjZXB0aW9uKGUpfQp0cnl7Cl8ucmxlPV8ua2MoImpOWkRMIixbXy5mZ2UsXy5XcV0pOwp9Y2F0Y2goZSl7Xy5fRHVtcEV4Y2VwdGlvbihlKX0KdHJ5ewpfLnNsZT1mdW5jdGlvbigpe3JldHVybiB3aW5kb3cubWF0Y2hNZWRpYSYmKHdpbmRvdy5tYXRjaE1lZGlhKCIocHJlZmVycy1yZWR1Y2VkLW1vdGlvbikiKS5tYXRjaGVzfHx3aW5kb3cubWF0Y2hNZWRpYSgiKHByZWZlcnMtcmVkdWNlZC1tb3Rpb246IHJlZHVjZSkiKS5tYXRjaGVzKX07Cn1jYXRjaChlKXtfLl9EdW1wRXhjZXB0aW9uKGUpfQp0cnl7CnZhciB0bGUsdmxlLHVsZTt0bGU9ZnVuY3Rpb24oYSxiLGMsZCxlPTcsZj0xLjUpe2EuU2E9MTgwL01hdGguUEkqTWF0aC5hdGFuMigoYy0oZC50b3ArZC5oZWlnaHQvMikpL2YsKGItKGQubGVmdCtkLndpZHRoLzIpKS9lKX07dmxlPWZ1bmN0aW9uKGEpe2lmKGEuT2Epe3ZhciBiPShhLlNhLWEud2EpJTM2MDthLm9hKz0oMipiJTM2MC1iKSouMDU7YS5vYSo9Ljc1O2Eud2ErPWEub2E7Yj0oYS53YS1hLkthKSUzNjA7YS5LYT11bGUoYS5LYSxhLndhLE1hdGgucG93KE1hdGgubWluKE1hdGguYWJzKDIqYiUzNjAtYikvOTAsMSksMykpO2Eua2EmJihhLmthLnN0eWxlLnNldFByb3BlcnR5KGAtLSR7Xy5haCgiYXVyb3JhLW1hc2stYW5nbGUiKX1gLGAke2Eud2ErLTE2N31kZWdgKSxhLmthLnN0eWxlLnNldFByb3BlcnR5KGAtLSR7Xy5haCgiYXVyb3JhLWdyYWRpZW50LWFuZ2xlIil9YCxgJHthLkthKy0xNDJ9ZGVnYCkpO2EuRWE9cmVxdWVzdEFuaW1hdGlvbkZyYW1lKCgpPT57dmxlKGEpfSl9fTsKXy53bGU9ZnVuY3Rpb24oYSxiLGM9NyxkPTEuNSl7aWYoYS5rYSl7YS5ySGE9YjthLkVJPWM7YS5IST1kO2EuSWE9Yi5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTthLk9hPSEwO2Eub2E9MDthLmNhbmNlbCgpO3ZhciBlOyhlPWEuTmEpPT1udWxsfHxlLmNhbmNlbCgpO2EuTmE9YS5rYS5hbmltYXRlKFt7b3BhY2l0eToxfV0se2R1cmF0aW9uOjM1MCxmaWxsOiJmb3J3YXJkcyJ9KTtiLmFkZEV2ZW50TGlzdGVuZXIoIm1vdXNlbW92ZSIsYS5SYSk7YS5FYXx8dmxlKGEpfX07Cl8ueGxlPWZ1bmN0aW9uKGEpe2lmKGEua2Epe2EuT2E9ITE7YS5vYT0wO3ZhciBiOyhiPWEuTmEpPT1udWxsfHxiLmNhbmNlbCgpO2EuTmE9YS5rYS5hbmltYXRlKFt7b3BhY2l0eToxfSx7b3BhY2l0eTowfV0se2R1cmF0aW9uOjM1MCxmaWxsOiJmb3J3YXJkcyJ9KTthLnJIYSYmKGEuckhhLnJlbW92ZUV2ZW50TGlzdGVuZXIoIm1vdXNlbW92ZSIsYS5SYSksYS5ySGE9bnVsbCk7YS5JYT1udWxsO2EuRWEmJihjYW5jZWxBbmltYXRpb25GcmFtZShhLkVhKSxhLkVhPTApfX07dWxlPWZ1bmN0aW9uKGEsYixjKXtiPShiLWEpJTM2MDtyZXR1cm4gYSsoMipiJTM2MC1iKSpjfTsKXy55bGU9Y2xhc3N7Y29uc3RydWN0b3IoYSxiLGMsZCxlPSExKXt0aGlzLkFhPWE7dGhpcy5rYT1iO3RoaXMuUGE9Yzt0aGlzLmJwPWQ7dGhpcy5uYj1lO3RoaXMuR2E9W107dGhpcy5CYT1udWxsO3RoaXMuWmE9ITE7dGhpcy5LYT10aGlzLndhPXRoaXMuU2E9MDt0aGlzLk9hPSExO3RoaXMuTmE9bnVsbDt0aGlzLm9hPXRoaXMuRWE9MDt0aGlzLnJIYT1udWxsO3RoaXMuRUk9Nzt0aGlzLkhJPTEuNTt0aGlzLklhPW51bGw7dGhpcy5SYT1mPT57dGhpcy5JYSYmdGxlKHRoaXMsZi5jbGllbnRYLGYuY2xpZW50WSx0aGlzLklhLHRoaXMuRUksdGhpcy5ISSl9fWFuaW1hdGUoYSxiPTY1MCl7aWYodGhpcy5BYSYmIV8uc2xlKCkpe3ZhciBjPSF0aGlzLlphJiZhO3RoaXMuWmE9YTtpZihjKXt0aGlzLmNhbmNlbCgpO2lmKHR5cGVvZiBDU1MhPT0idW5kZWZpbmVkIiYmQ1NTLnJlZ2lzdGVyUHJvcGVydHkpdHJ5e0NTUy5yZWdpc3RlclByb3BlcnR5KHtuYW1lOmAtLSR7Xy5haCgiYXVyb3JhLWdyYWRpZW50LWFuZ2xlIil9YCwKc3ludGF4OiI8YW5nbGU+Iixpbmhlcml0czohMCxpbml0aWFsVmFsdWU6IjBkZWcifSksQ1NTLnJlZ2lzdGVyUHJvcGVydHkoe25hbWU6YC0tJHtfLmFoKCJhdXJvcmEtbWFzay1hbmdsZSIpfWAsc3ludGF4OiI8YW5nbGU+Iixpbmhlcml0czohMCxpbml0aWFsVmFsdWU6IjBkZWcifSl9Y2F0Y2goZCl7fWlmKHRoaXMua2EmJnRoaXMuUGEmJmEpe2E9dGhpcy5rYS5hbmltYXRlKFt7b3BhY2l0eTowLGVhc2luZzoiY3ViaWMtYmV6aWVyKDAsIDAsIDAsIDEpIixvZmZzZXQ6MH0se29wYWNpdHk6MSxvZmZzZXQ6LjI1fSx7b3BhY2l0eToxLGVhc2luZzoiY3ViaWMtYmV6aWVyKDAuMzAsIDAuMDAsIDAuODAsIDAuMTUpIixvZmZzZXQ6LjV9LHtvcGFjaXR5OjAsb2Zmc2V0OjF9XSx7ZHVyYXRpb246YixmaWxsOiJib3RoIn0pO2M9dGhpcy5QYS5hbmltYXRlKHRoaXMubmI/W3tmaWx0ZXI6ImJsdXIoMXB4KSJ9LHtmaWx0ZXI6ImJsdXIoNXB4KSIsb2Zmc2V0Oi4xNX0se2ZpbHRlcjoiYmx1cigzcHgpIiwKb2Zmc2V0Oi4yNX0se2ZpbHRlcjoiYmx1cig1cHgpIixvZmZzZXQ6LjQ1fSx7ZmlsdGVyOiJibHVyKDFweCkifV06W3tmaWx0ZXI6ImJsdXIoMXB4KSJ9LHtmaWx0ZXI6ImJsdXIoMjBweCkiLG9mZnNldDouMTV9LHtmaWx0ZXI6ImJsdXIoNXB4KSIsb2Zmc2V0Oi4yNX0se2ZpbHRlcjoiYmx1cig3cHgpIixvZmZzZXQ6LjQ1fSx7ZmlsdGVyOiJibHVyKDFweCkifV0se2R1cmF0aW9uOmIsZmlsbDoiYm90aCIsZWFzaW5nOiJsaW5lYXIifSk7Yj10aGlzLmthLmFuaW1hdGUoW3tbYC0tJHtfLmFoKCJhdXJvcmEtZ3JhZGllbnQtYW5nbGUiKX1gXToiMTcwZGVnIixbYC0tJHtfLmFoKCJhdXJvcmEtbWFzay1hbmdsZSIpfWBdOiItOTBkZWciLGVhc2luZzoiY3ViaWMtYmV6aWVyKDAsIDAsIDAsIDEpIn0se1tgLS0ke18uYWgoImF1cm9yYS1ncmFkaWVudC1hbmdsZSIpfWBdOiIyMjVkZWciLFtgLS0ke18uYWgoImF1cm9yYS1tYXNrLWFuZ2xlIil9YF06IjIwMGRlZyJ9XSx7ZHVyYXRpb246YiwKZmlsbDoiYm90aCJ9KTt0aGlzLkdhLnB1c2goYSxjLGIpO2ZvcihsZXQgZCBvZiB0aGlzLkdhKWQucGxheWJhY2tSYXRlPTEsZC5wbGF5KCl9fWVsc2UgYXx8dGhpcy5jYW5jZWwoKX19Y2FuY2VsKCl7Zm9yKGxldCBhIG9mIHRoaXMuR2EpYS5jYW5jZWwoKTt0aGlzLkdhLmxlbmd0aD0wfX07Cn1jYXRjaChlKXtfLl9EdW1wRXhjZXB0aW9uKGUpfQp0cnl7CgpfLlpuKF8ucjliLGNsYXNze2luaXQoKXt9cGxheShhLGIsYyl7dGhpcy5zZXRTdHlsZShhLGMpO3JldHVybiBfLkRnKG51bGwpfWZpbmlzaChhLGIpe3RoaXMuc2V0U3R5bGUoYSxiKTtfLkRnKG51bGwpfXNldFN0eWxlKGEsYil7Xy5obihhLGIuQmEoKSl9fSk7Cn1jYXRjaChlKXtfLl9EdW1wRXhjZXB0aW9uKGUpfQp0cnl7Cl8udSgiak5aREwiKTsKXy56bGU9ZnVuY3Rpb24oYSxiLGMsZCl7dmFyIGU9YS53YS5nZXQoYik7ZXx8KGU9W10sYS53YS5zZXQoYixlKSk7ZS5wdXNoKGMpO3ZhciBmPWIoYS5rYSk7YyhmLGYpO18uZ2dlKGUsYywoKT0+e2UubGVuZ3RoPT09MCYmYS53YS5kZWxldGUoYil9LGQpfTtfLkFsZT0hIShfLk9pWzU2XT4+MjEmMSk7dmFyIHJLLEJsZSxEbGUsQ2xlLEdsZSxFbGUsRmxlLEhsZTtySz17eHFjOl8uZkxiLFBRYTpfLmlMYixBcWM6Xy5nTGIsajViOl8uQkxiLHdxYzohIShfLk9pWzU2XT4+MTkmMSksTG1iOl8uancsdnNjOl8ubkxiLEk1YTpfLm9MYn07CkJsZT1mdW5jdGlvbihhKXthLm9hPW5ldyBfLnlsZShhLlZhKCJJVm1GMWUiKS5oYigpLGEuVmEoIkhRajBBIikuaGIoKSxhLlZhKCJKb0VmemMiKS5oYigpLHZvaWQgMCwhMCk7dmFyIGI9YS5WYSgiSVZtRjFlIikuaGIoKTtiJiYoYi5zdHlsZS5zZXRQcm9wZXJ0eShgLS0ke18uYWgoImF1cm9yYS1ib3JkZXItcmFkaXVzIil9YCwiMTAwcHgiKSxiLnN0eWxlLnNldFByb3BlcnR5KGAtLSR7Xy5haCgiYXVyb3JhLWJsdXIiKX1gLCI0cHgiKSxiLnN0eWxlLnNldFByb3BlcnR5KGAtLSR7Xy5haCgiYXVyb3JhLWluc2V0Iil9YCwiLTFweCIpLGIuc3R5bGUuc2V0UHJvcGVydHkoYC0tJHtfLmFoKCJhdXJvcmEtc2NhbGUteCIpfWAsIjQiKSxiLnN0eWxlLnNldFByb3BlcnR5KGAtLSR7Xy5haCgiYXVyb3JhLXNjYWxlLXkiKX1gLCIxLjUiKSk7dmFyIGM7KGM9YS5vYSk9PW51bGx8fGMuYW5pbWF0ZSghMCwxRTMpO2Euak8uY2xhc3NMaXN0LmFkZCgiSFljSHEiKTt2YXIgZD13aW5kb3cuc2V0VGltZW91dCgoKT0+CnthLmpPLmNsYXNzTGlzdC5yZW1vdmUoIkhZY0hxIil9LDFFMyk7YS5hZGRPbkRpc3Bvc2VDYWxsYmFjaygoKT0+e3dpbmRvdy5jbGVhclRpbWVvdXQoZCk7dmFyIGU7KGU9YS5vYSk9PW51bGx8fF8ueGxlKGUpfSl9O0RsZT1mdW5jdGlvbihhKXtfLnpsZShhLlhULGI9PmIuaXNFbXB0eSwoKT0+e2EuQWEmJkNsZShhKX0sYSk7Xy56bGUoYS5YVCxiPT5iLm11bHRpbGluZSxiPT57YS5nZXRSb290KCkudG9nZ2xlQ2xhc3MoImxrSjNrZSIsYil9LGEpfTtDbGU9ZnVuY3Rpb24oYSl7dmFyIHtRVWE6YixFdWI6YyxPdWI6ZH09RWxlKGEpLGU9Ynx8cksuSTVhJiZjJiZkO2EuZ2V0Um9vdCgpLnRvZ2dsZUNsYXNzKCJWelVQRmUiLGUpO2lmKCFySy5QUWEpe3ZhciB7UVVhOmYsRXViOmcsT3ViOmh9PUVsZShhKTthLmdldFJvb3QoKS50b2dnbGVDbGFzcygiU3c0Q1NjIixoKTtySy5JNWEmJihhLmpPLnN0eWxlLndpZHRoPShmfHxnKSYmaD8iNDhweCI6YS53YSl9RmxlKGEpfTsKR2xlPWZ1bmN0aW9uKGEpe3ZhciBiLGM7cmV0dXJuIGEuWFQuc3RhdGUucXVlcnkhPT0iInx8KChjPShiPWEuUG0pPT1udWxsP3ZvaWQgMDpiLm5VKCkpIT1udWxsP2M6MCk+MH07RWxlPWZ1bmN0aW9uKGEpe3ZhciBiLGMsZCxlO3JldHVybntRVWE6KGQ9KGI9YS5saik9PW51bGw/dm9pZCAwOmIub2EpIT1udWxsP2Q6ITEsRXViOihlPShjPWEubGopPT1udWxsP3ZvaWQgMDpjLmthKCkpIT1udWxsP2U6ITEsT3ViOkdsZShhKX19OwpGbGU9ZnVuY3Rpb24oYSl7dmFyIHtRVWE6YixFdWI6YyxPdWI6ZH09RWxlKGEpLGU9Ynx8cksuSTVhJiZjJiZkO2lmKGUmJiFkKXtlPWEua2E7YS5rYT0hMTtpZihlKXt2YXIgZjsoZj1hLm9hKT09bnVsbHx8Xy54bGUoZil9YS5nZXRSb290KCkuYWRkQ2xhc3MoIlBIakZ5ZSIpfWVsc2UgZSYmZD8oZj0hcksudnNjLGEua2E9ZixhLmdldFJvb3QoKS50b2dnbGVDbGFzcygiUEhqRnllIiwhZikpOmEuZ2V0Um9vdCgpLmhiKCkubWF0Y2hlcygiOmhvdmVyIil8fChhLmthPSEwLGEuZ2V0Um9vdCgpLnJlbW92ZUNsYXNzKCJQSGpGeWUiKSl9OwpIbGU9ZnVuY3Rpb24oYSl7dmFyIGI9YS5YVC5zdGF0ZS5xdWVyeSxjPWEuRWEoKTtzd2l0Y2goYyl7Y2FzZSAwOmEuQmEoYS52ZWQsYik7YnJlYWs7Y2FzZSAyOmEuQmEoYS52ZWQsYiwyKTticmVhaztjYXNlIDE6aWYocksuajViKWEubGomJihfLkV2KGEuak8se1RtOjF9KSxhLmxqLmRLKCFhLmxqLm9hLCExKSk7ZWxzZXtsZXQgZDsoZD1hLmxqKT09bnVsbHx8ZC5aUCg5KX1icmVhaztkZWZhdWx0Ol8uZWIoYyx2b2lkIDApfX07Cl8uSWxlPWNsYXNzIGV4dGVuZHMgXy5oc3tnZXQgQWEoKXtyZXR1cm4gcksueHFjfHxySy5QUWF9c3RhdGljIFFhKCl7cmV0dXJue21vZGVsOntYVDpfLmpnZX0sTGw6e2xqOl8ubmZlLFBtOl8uRlphfSxzZXJ2aWNlOntGZzpfLm95fX19Y29uc3RydWN0b3IoYSl7c3VwZXIoKTt0aGlzLmpPPXRoaXMuZ2V0Um9vdCgpLmhiKCk7dGhpcy52ZWQ9Xy55ZSh0aGlzLmpPKTt0aGlzLm9hPW51bGw7dGhpcy5rYT0hMDt0aGlzLndhPSIiO3RoaXMuQmE9KGIsYyxkKT0+e2I9bmV3IE1hcChbWyJhZXAiLCgyMikudG9TdHJpbmcoKV0sWyJ1ZG0iLCI1MCJdLFsidmVkIixiXSxbImNzIixySy5MbWI/IjEiOiIwIl1dKTtkJiYoYi5zZXQoImljdHgiLGQudG9TdHJpbmcoKSksZD09PTImJmIuc2V0KCJ6cyIsIjEiKSk7ZD10aGlzLnRyaWdnZXI7Yz0obmV3IF8uSGRlKS5zZXRRdWVyeShjKTtjLnEzYT0hMDtkLmNhbGwodGhpcywiZjVoRUhlIixfLkZkZShjKS5zZXRQYXJhbWV0ZXJzKGIpLnVMKDEpLmJ1aWxkKCkpfTsKdGhpcy5GZz1hLnNlcnZpY2UuRmc7dGhpcy5YVD1hLm1vZGVsLlhUO3RoaXMubGo9YS5MbC5sajt0aGlzLlBtPWEuTGwuUG07cksuUFFhfHxCbGUodGhpcyk7RGxlKHRoaXMpO3JLLkk1YSYmKHRoaXMud2E9YCR7dGhpcy5qTy5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS53aWR0aH1weGAsdGhpcy5qTy5zdHlsZS53aWR0aD10aGlzLndhKTt0aGlzLmpPLmFkZEV2ZW50TGlzdGVuZXIoIm1vdXNlZG93biIsYj0+e3JLLkFxYyYmYi5wcmV2ZW50RGVmYXVsdCgpfSl9SWEoKXtDbGUodGhpcyk7dmFyIGE7KGE9dGhpcy5saik9PW51bGx8fGEuZEsoITAsITApfUthKCl7dmFyIGEsYjtpZighKCgoYj0oYT10aGlzLlBtKT09bnVsbD92b2lkIDA6YS5uVSgpKSE9bnVsbD9iOjApPjApKXtDbGUodGhpcyk7dmFyIGM7KGM9dGhpcy5saik9PW51bGx8fGMuZEsoITEsITApfX1HYSgpe0NsZSh0aGlzKX1OYSgpe0NsZSh0aGlzKX1FYSgpe3JldHVybiBHbGUodGhpcyk/MDp0aGlzLkFhJiYhcksud3FjPwoxOjJ9T2EoKXtIbGUodGhpcyl9UmEoKXtpZih0aGlzLmthKXtsZXQgYTsoYT10aGlzLm9hKT09bnVsbHx8Xy53bGUoYSx0aGlzLmpPLDQsMS41KX19U2EoKXtpZih0aGlzLmthKXtsZXQgYTsoYT10aGlzLm9hKT09bnVsbHx8Xy54bGUoYSl9RmxlKHRoaXMpfVBhKCl7SGxlKHRoaXMpfX07Xy5JbGUucHJvdG90eXBlLiR3YSR3ZXpmRGQ9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5QYX07Xy5JbGUucHJvdG90eXBlLiR3YSROUzVYbD1mdW5jdGlvbigpe3JldHVybiB0aGlzLlNhfTtfLklsZS5wcm90b3R5cGUuJHdhJHZHNjB1Zj1mdW5jdGlvbigpe3JldHVybiB0aGlzLlJhfTtfLklsZS5wcm90b3R5cGUuJHdhJGJ1aktJZj1mdW5jdGlvbigpe3JldHVybiB0aGlzLk9hfTtfLklsZS5wcm90b3R5cGUuJHdhJGJpcWFmYz1mdW5jdGlvbigpe3JldHVybiB0aGlzLkVhfTtfLklsZS5wcm90b3R5cGUuJHdhJFZIM1hCYj1mdW5jdGlvbigpe3JldHVybiB0aGlzLk5hfTsKXy5JbGUucHJvdG90eXBlLiR3YSRiZnZrcGQ9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5HYX07Xy5JbGUucHJvdG90eXBlLiR3YSRmSXRpMWI9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5LYX07Xy5JbGUucHJvdG90eXBlLiR3YSRKc2N4c2M9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5JYX07Xy5qcyhfLnJsZSxfLklsZSk7CgpfLnYoKTsKfWNhdGNoKGUpe18uX0R1bXBFeGNlcHRpb24oZSl9CnRyeXsKXy5sdj1mdW5jdGlvbihhKXtyZXR1cm4gXy50KGEsMjQpfTtfLkZMYj1mdW5jdGlvbihhKXtyZXR1cm4gXy50KGEsMzUpfTtfLm12PSEhKF8uT2lbNjldJjEwMjQpO18ubnY9ISEoXy5PaVs2OV0mMjA0OCk7Cn1jYXRjaChlKXtfLl9EdW1wRXhjZXB0aW9uKGUpfQp0cnl7Cl8uSmxlPV8ua2MoIm13MDZhZSIsW18uRlphLF8uWWVlXSk7Cn1jYXRjaChlKXtfLl9EdW1wRXhjZXB0aW9uKGUpfQp0cnl7Cl8udSgibXcwNmFlIik7CnZhciBLbGU9Xy5tdj8iL2ltYWdlcy9zZWFyY2hib3gvaWNvbnMvZHJpdmVfcGRmX2RhcmtANDBkcC5wbmciOiIvaW1hZ2VzL3NlYXJjaGJveC9pY29ucy9kcml2ZV9wZGZfbGlnaHRANDBkcC5wbmciO3ZhciBMbGUsTWxlO0xsZT1mdW5jdGlvbihhLGIpe3ZhciBjPWEuZ2V0Um9vdCgpLmhhc0NsYXNzKCJ3ZmcwUWMiKTtjJiYhYj8oXy5EdihbbmV3IF8uZm8oYS5vYSwiaGlkZSIpXSksXy5McSgpKTohYyYmYiYmKGEub2Euc2V0QXR0cmlidXRlKCJkZWNvZGUtZGF0YS12ZWQiLCIxIiksXy5EdihbbmV3IF8uZm8oYS5vYSwic2hvdyIpXSksXy5McSgpKTthLmdldFJvb3QoKS50b2dnbGVDbGFzcygid2ZnMFFjIixiKX07TWxlPWZ1bmN0aW9uKGEpe2EuZmlsZT9fLldKKGEuZmlsZSk9PT0iYXBwbGljYXRpb24vcGRmIj9hLmVELnNyYz1LbGU6Xy53YWUuaGFzKF8uV0ooYS5maWxlKSk/YS5maWxlLmFycmF5QnVmZmVyKCkudGhlbihiPT5uZXcgVWludDhBcnJheShiKSkudGhlbihfLk9hKS50aGVuKGI9PnthLmVELnNyYz1gZGF0YToke18uV0ooYS5maWxlKX07YmFzZTY0LCR7Yn1gfSk6YS5lRC5zcmM9YS5JYTphLmVELnNyYz1hLklhfTsKXy5ObGU9ZnVuY3Rpb24oYSxiKXthLmthPWI7TWxlKGEpO2EuWjMoKTthLk1mKCl9OwpfLk9sZT1jbGFzcyBleHRlbmRzIF8uaHN7c3RhdGljIFFhKCl7cmV0dXJue21vZGVsOntQbTpfLkJkZSxkU2E6Xy5oZmV9fX1jb25zdHJ1Y3RvcihhKXtzdXBlcigpO3RoaXMuT2k9dGhpcy53YT0hMTt0aGlzLmZpbGU9bnVsbDt0aGlzLlBtPWEubW9kZWwuUG07dGhpcy5Maz1hLm1vZGVsLmRTYTt0aGlzLkttPXRoaXMuZ2V0Um9vdCgpLmVsKCk7dGhpcy5vYT10aGlzLkphKCJhWjJ3RWUiKS5lbCgpO3RoaXMuR2E9dGhpcy5KYSgid1JrR0xlIikuZWwoKTt0aGlzLmVEPXRoaXMuSmEoInRYSldYYyIpLmVsKCk7dGhpcy5JYT10aGlzLmVELnNyYzt0aGlzLmthPXRoaXMuS20uaGlkZGVuPzQ6MX1NZigpe3N3aXRjaCh0aGlzLmthKXtjYXNlIDE6dGhpcy5LbS5oaWRkZW49ITE7dGhpcy5LbS5oYXNBdHRyaWJ1dGUoImRhdGEtdmVkIikmJl8uRHYoW25ldyBfLmZvKHRoaXMuS20sInNob3ciKV0pO3RoaXMuZ2V0Um9vdCgpLmhhc0NsYXNzKCJ3ZmcwUWMiKSYmXy5EdihbbmV3IF8uZm8odGhpcy5vYSwKImhpZGUiKV0pO0xsZSh0aGlzLCExKTt0aGlzLmdldFJvb3QoKS5yZW1vdmVDbGFzcygiT1diRE5kIik7YnJlYWs7Y2FzZSAwOnRoaXMuS20uaGlkZGVuPSExO3RoaXMuZ2V0Um9vdCgpLmhhc0NsYXNzKCJ3ZmcwUWMiKXx8Xy5EdihbbmV3IF8uZm8odGhpcy5vYSwic2hvdyIpXSk7TGxlKHRoaXMsITApO3RoaXMuZ2V0Um9vdCgpLnJlbW92ZUNsYXNzKCJPV2JETmQiKTticmVhaztjYXNlIDM6TGxlKHRoaXMsITApO3RoaXMuZ2V0Um9vdCgpLmFkZENsYXNzKCJPV2JETmQiKTticmVhaztjYXNlIDI6TGxlKHRoaXMsITEpO3RoaXMuZ2V0Um9vdCgpLmFkZENsYXNzKCJPV2JETmQiKTticmVhaztjYXNlIDQ6dGhpcy5LbS5oaWRkZW49ITA7dGhpcy5LbS5oYXNBdHRyaWJ1dGUoImRhdGEtdmVkIikmJl8uRHYoW25ldyBfLmZvKHRoaXMuS20sImhpZGUiKV0pO2JyZWFrO2RlZmF1bHQ6Xy5lYih0aGlzLmthLHZvaWQgMCl9fUJhKCl7c3dpdGNoKHRoaXMua2Epe2Nhc2UgMTpjYXNlIDA6dGhpcy5oaWdobGlnaHQoKTsKYnJlYWs7Y2FzZSAyOmNhc2UgMzp0aGlzLmZpbGUmJnRoaXMuUG0ucmVtb3ZlRmlsZSh0aGlzLmZpbGUpO2JyZWFrO2Nhc2UgNDpicmVhaztkZWZhdWx0Ol8uZWIodGhpcy5rYSx2b2lkIDApfX1BYSgpe3RoaXMua2E9PT0yJiZfLk5sZSh0aGlzLDEpO3RoaXMua2E9PT0zJiZfLk5sZSh0aGlzLDApfWhpZ2hsaWdodCgpe3RoaXMua2E9PT0wJiZfLk5sZSh0aGlzLDMpO3RoaXMua2E9PT0xJiZfLk5sZSh0aGlzLDIpfU5hKGEpe2EuZGF0YSYmYS5kYXRhIT09dGhpcy5maWxlfHwodGhpcy5maWxlPW51bGwsXy5ObGUodGhpcyw0KSxfLmZmZSh0aGlzLkxrLG51bGwpLHRoaXMudHJpZ2dlcigiRGtwTTBiIikpfUthKGEpe3RoaXMuR2EudGV4dENvbnRlbnQ9YS5kYXRhLm5hbWU7dGhpcy5maWxlPWEuZGF0YTtfLk5sZSh0aGlzLDEpfUVhKCl7dGhpcy5maWxlJiZ0aGlzLlBtLnJlbW92ZUZpbGUodGhpcy5maWxlKTt0aGlzLkttLmhhc0F0dHJpYnV0ZSgiZGF0YS12ZWQiKSYmXy5Fdih0aGlzLkttKX1PYShhKXt2YXIgYj0KYS5ldmVudDtpZihiLmtleT09PSJFbnRlciJ8fGIua2V5PT09IiAiKXRoaXMuRWEoYSksYi5wcmV2ZW50RGVmYXVsdCgpfVJhKGEpe3ZhciBiO2E9KGI9YS5ldmVudCk9PW51bGw/dm9pZCAwOmIudHlwZTtpZihhPT09Im1vdXNlZW50ZXIifHxhPT09Im1vdXNlb3ZlciIpdGhpcy53YT0hMDtlbHNlIGlmKGE9PT0iZm9jdXMifHxhPT09ImZvY3VzaW4iKXRoaXMuT2k9ITA7dGhpcy5oaWdobGlnaHQoKX1QYShhKXt2YXIgYjthPShiPWEuZXZlbnQpPT1udWxsP3ZvaWQgMDpiLnR5cGU7aWYoYT09PSJtb3VzZWxlYXZlInx8YT09PSJtb3VzZW91dCIpdGhpcy53YT0hMTtlbHNlIGlmKGE9PT0iYmx1ciJ8fGE9PT0iZm9jdXNvdXQiKXRoaXMuT2k9ITE7dGhpcy53YXx8dGhpcy5PaXx8dGhpcy5BYSgpfVozKCl7dmFyIGE9ITEsYj0hMTt0aGlzLmZpbGUmJl8uV0oodGhpcy5maWxlKT09PSJhcHBsaWNhdGlvbi9wZGYiJiYoYj1hPSEwKTt0aGlzLmdldFJvb3QoKS50b2dnbGVDbGFzcygidUgxRnliIiwKYSk7dGhpcy5nZXRSb290KCkudG9nZ2xlQ2xhc3MoIndhVFE5YiIsYil9aG8oKXtyZXR1cm4gdGhpcy5rYT09PTB8fHRoaXMua2E9PT0zfX07Xy5PbGUucHJvdG90eXBlLiR3YSRKcFk2RmQ9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5ob307Xy5PbGUucHJvdG90eXBlLiR3YSRoNXF3WWI9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5QYX07Xy5PbGUucHJvdG90eXBlLiR3YSRaMnkzRWI9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5SYX07Xy5PbGUucHJvdG90eXBlLiR3YSRkdUFTWmM9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5PYX07Xy5PbGUucHJvdG90eXBlLiR3YSRsTUd4VGQ9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5FYX07Xy5PbGUucHJvdG90eXBlLiR3YSROZ29uUWM9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5LYX07Xy5PbGUucHJvdG90eXBlLiR3YSRhR0FEN2U9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5OYX07Xy5PbGUucHJvdG90eXBlLiR3YSRlUXNRQj1mdW5jdGlvbigpe3JldHVybiB0aGlzLkFhfTsKXy5PbGUucHJvdG90eXBlLiR3YSR6MlRCc2M9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5CYX07Xy5qcyhfLkpsZSxfLk9sZSk7Cl8udigpOwp9Y2F0Y2goZSl7Xy5fRHVtcEV4Y2VwdGlvbihlKX0KdHJ5ewpfLlBsZT1fLmtjKCJSVHZESSIsW18ubmZlLF8uRlphLF8uZmdlLF8uQ2RlXSk7Cn1jYXRjaChlKXtfLl9EdW1wRXhjZXB0aW9uKGUpfQp0cnl7CnZhciBRbGU7UWxlPVsxLDJdO18uUmxlPWZ1bmN0aW9uKGEpe3JldHVybiBfLlRqKGEsMixfLm9oKCkpfTtfLlNsZT1mdW5jdGlvbihhKXtyZXR1cm4gXy5BKGEsNCl9O18uVGxlPWZ1bmN0aW9uKGEpe3JldHVybiBfLkEoYSw1KX07Xy5VbGU9Y2xhc3MgZXh0ZW5kcyBfLmx7Y29uc3RydWN0b3IoYSl7c3VwZXIoYSl9TmhhKCl7cmV0dXJuIF8udCh0aGlzLDkpfXA5KCl7cmV0dXJuIF8uT2oodGhpcywxMCl9fTtfLlVsZS5wcm90b3R5cGUuWGE9Ikk4d3NvYiI7Xy5WbGU9Y2xhc3MgZXh0ZW5kcyBfLmx7Y29uc3RydWN0b3IoYSl7c3VwZXIoYSl9fTtfLldsZT1jbGFzcyBleHRlbmRzIF8ubHtjb25zdHJ1Y3RvcihhKXtzdXBlcihhKX11bigpe3JldHVybiBfLk9qKHRoaXMsMSl9fTsKXy5YbGU9Y2xhc3MgZXh0ZW5kcyBfLmx7Y29uc3RydWN0b3IoYSl7c3VwZXIoYSl9dW4oKXtyZXR1cm4gXy5Paih0aGlzLDEpfU5oYSgpe3JldHVybiBfLnQodGhpcywzKX1nZXRJY29uKCl7cmV0dXJuIF8ucSh0aGlzLF8uVSRkLDYpfXNldEljb24oYSl7cmV0dXJuIF8uU2IodGhpcyxfLlUkZCw2LGEpfVBqKCl7cmV0dXJuIF8ua2oodGhpcyxfLlUkZCw2KX19O18uWWxlPWZ1bmN0aW9uKGEpe3JldHVybiBfLm1oKGEsXy5YbGUsNixfLm9oKCkpfTtfLnNLPWNsYXNzIGV4dGVuZHMgXy5se2NvbnN0cnVjdG9yKGEpe3N1cGVyKGEpfXY1KCl7cmV0dXJuIF8uV2oodGhpcywxLFFsZSl9Qm0oKXtyZXR1cm4gXy5TaCh0aGlzLF8ub3AsMixRbGUpfWhhc1ZlKCl7cmV0dXJuIF8ubWoodGhpcyxfLm9wLDIsUWxlKX19OwpfLlpsZT1jbGFzcyBleHRlbmRzIF8ubHtjb25zdHJ1Y3RvcihhKXtzdXBlcihhKX1OaGEoKXtyZXR1cm4gXy50KHRoaXMsNSl9Z2V0SWNvbigpe3JldHVybiBfLnEodGhpcyxfLlUkZCw5KX1zZXRJY29uKGEpe3JldHVybiBfLlNiKHRoaXMsXy5VJGQsOSxhKX1Qaigpe3JldHVybiBfLmtqKHRoaXMsXy5VJGQsOSl9cVNhKCl7cmV0dXJuIF8ucSh0aGlzLF8uc0ssMTIpfX07Xy4kbGU9ZnVuY3Rpb24oYSl7cmV0dXJuIF8ubWgoYSxfLlpsZSw1LF8ub2goKSl9Owp9Y2F0Y2goZSl7Xy5fRHVtcEV4Y2VwdGlvbihlKX0KdHJ5ewpfLnUoIlJUdkRJIik7CnZhciBlbWUsYW1lLGJtZSxjbWU7Xy5kbWU9ZnVuY3Rpb24oYSxiPSExKXt2YXIgYz1hLk9hKCk7YyE9PWEuQWEmJigoYS5BYT1jKT9fLlplZT9hLndhLmFuaW1hdGUoYW1lKGEpLGJtZShhKSwoKT0+e2NtZShhLCEwKX0sYik6Y21lKGEsITApOmNtZShhLCExKSxfLkR2KFtuZXcgXy5mbyhhLmdldFJvb3QoKS5oYigpLGM/InNob3ciOiJoaWRlIildKSl9O2VtZT1mdW5jdGlvbihhLGIpe3ZhciBjPWEua2EuVUFhLGQ9YS5rYS5idSxlPWEua2Euak87Yi5KTWEuYXBwZW5kKGEua2EuSk1hKTtiLlVBYS5hcHBlbmQoYyxlKTtkJiZiLlVBYS5hcHBlbmQoZCl9O2FtZT1mdW5jdGlvbihhKXt2YXIgYj1bXTthLmthJiYoYi5wdXNoKGEua2EuSk1hKSxiLnB1c2goYS5rYS5qTyksYi5wdXNoKGEua2EuVUFhKSk7cmV0dXJuIGJ9OwpibWU9ZnVuY3Rpb24oYSl7dmFyIGI9W10sYyxkPShjPWEub2EpPT1udWxsP3ZvaWQgMDpjLmhiKCk7aWYoZCl7Yi5wdXNoKGQpO2xldCBlOygoZT1hLmthKT09bnVsbD8wOmUuYnUpJiZiLnB1c2goYS5rYS5idSl9cmV0dXJuIGJ9O2NtZT1mdW5jdGlvbihhLGIpe2I/KGEud2EuTyRiKCEwKSxlbWUoYSxhLk5hKSxhLlhULnN0YXRlLmlzRW1wdHl8fGEud2Eua2FhKCkpOihhLndhLk8kYighMSksZW1lKGEsYS5LYSkpfTsKXy5mbWU9Y2xhc3MgZXh0ZW5kcyBfLmhze3N0YXRpYyBRYSgpe3JldHVybnttb2RlbDp7bGo6Xy5FZmUsUG06Xy5CZGUsWFQ6Xy5qZ2UsZXZlbnRzOl8uRGRlfSxqc2RhdGE6e2htYTpfLlVsZX19fWNvbnN0cnVjdG9yKGEpe3N1cGVyKCk7dGhpcy5vYT1udWxsO3RoaXMuR2E9dGhpcy5CYT10aGlzLmlzSW5pdGlhbGl6ZWQ9dGhpcy5tQj10aGlzLkFhPSExO3RoaXMubGo9YS5tb2RlbC5sajt0aGlzLlBtPWEubW9kZWwuUG07dGhpcy5FYT1fLk9qKGEuanNkYXRhLmhtYSwyKTt0aGlzLlhUPWEubW9kZWwuWFQ7dmFyIGI9YS5tb2RlbC5ldmVudHMsYzthPShjPWEuanNkYXRhLmhtYS5wOSgpKSE9bnVsbD9jOjA7dGhpcy5sai5LYT1hO18uSmRlKCgpPT57Xy5yTGJ8fHRoaXMubGoucmVzZXQoKX0pO18uWmVlfHwoYi5iSCg1LCgpPT57dGhpcy5tQnx8KHRoaXMubUI9ITAsdGhpcy5BYSYmZW1lKHRoaXMsdGhpcy5OYSkpfSksYi5iSCg2LCgpPT57dGhpcy5tQiYmKHRoaXMubUI9ITEsdGhpcy5BYSYmCmVtZSh0aGlzLHRoaXMuS2EpKX0pKX1JYSgpe3RoaXMuaXNJbml0aWFsaXplZD8odGhpcy5vYSYmdGhpcy5vYSYmKHRoaXMub2EucmVtb3ZlQ2xhc3MoIlJLM0hQYyIpLHRoaXMub2E9bnVsbCksdGhpcy5sai5rYSgpJiYodGhpcy5vYT10aGlzLmdldFJvb3QoKS5maW5kKGBbZGF0YS10b29sPSIke3RoaXMubGoua1ooKX0iXWApLHRoaXMub2EuYWRkQ2xhc3MoIlJLM0hQYyIpKSxfLmRtZSh0aGlzKSk6dGhpcy5CYT0hMH1TYShhKXthPWEub2IuZWwoKTthLmhhc0F0dHJpYnV0ZSgiZGlzYWJsZWQiKXx8KGEuaGFzQXR0cmlidXRlKCJkYXRhLXZlZCIpJiZfLkV2KGEpLHRoaXMubGouWlAoMCkpfVBhKCl7Xy5kbWUodGhpcyl9UmEoKXtfLmRtZSh0aGlzKX1PYSgpe3ZhciBhO3JldHVybiB0aGlzLmxqLmthKCl8fHRoaXMuR2F8fCgoYT10aGlzLlBtLm5VKCkpIT1udWxsP2E6MCk+MH19O18uZm1lLnByb3RvdHlwZS4kd2EkYnRnUk1iPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuT2F9OwpfLmZtZS5wcm90b3R5cGUuJHdhJGZJdGkxYj1mdW5jdGlvbigpe3JldHVybiB0aGlzLlJhfTtfLmZtZS5wcm90b3R5cGUuJHdhJEpzY3hzYz1mdW5jdGlvbigpe3JldHVybiB0aGlzLlBhfTtfLmZtZS5wcm90b3R5cGUuJHdhJEt6aUtvZD1mdW5jdGlvbigpe3JldHVybiB0aGlzLlNhfTtfLmZtZS5wcm90b3R5cGUuJHdhJFZIM1hCYj1mdW5jdGlvbigpe3JldHVybiB0aGlzLklhfTtfLmpzKF8uUGxlLF8uZm1lKTsKXy52KCk7Cn1jYXRjaChlKXtfLl9EdW1wRXhjZXB0aW9uKGUpfQp0cnl7Cl8udSgiQVRMTVRlIik7CgpfLnYoKTsKfWNhdGNoKGUpe18uX0R1bXBFeGNlcHRpb24oZSl9CnRyeXsKXy5sbmU9Xy5rYygiTDk3bXVkIixbXy5kSyxfLkVaYV0pOwp9Y2F0Y2goZSl7Xy5fRHVtcEV4Y2VwdGlvbihlKX0KdHJ5ewpfLnUoIkw5N211ZCIpOwp2YXIgbW5lLG9uZSxwbmUscW5lLG5uZTttbmU9WyIiLCJpIiwic2giXTtvbmU9ZnVuY3Rpb24oYSl7aWYoYS5pc0VuYWJsZWQpe3ZhciBiPW51bGw7dHJ5e2I9YS5zdG9yYWdlLmdldCgic2Jfd2l6LnVlaCIpfWNhdGNoKGQpe312YXIgYz1hLk9mLk9hKCk7aWYoYiE9PWMpaWYoXy5BKGEuT2YsNDMpKW5uZShhLDEpO2Vsc2UgZm9yKGxldCBkIG9mIG1uZSlhLmNsZWFyKGQpO3RyeXtjP2Euc3RvcmFnZS5zZXQoInNiX3dpei51ZWgiLGMpOmImJmEuc3RvcmFnZS5yZW1vdmUoInNiX3dpei51ZWgiKX1jYXRjaChkKXt9fX07cG5lPWZ1bmN0aW9uKGEpe3JldHVybiBfLkEoYS5PZiw0MSkmJmEuT2YuQmEoKT09PSIiJiZhLk9mLndhKCkhPT0iIn07cW5lPWZ1bmN0aW9uKGEsYil7cmV0dXJuIGEuTGshPT1udWxsJiZhLkxrLmthKCk/InNiX3dpei56cGMuIithLkxrLkthKCkrIi4iK2EuTGsud2EoKTpfLkEoYS5PZiw0Myk/InNiX3dpei56cGMuIithLk9mLkFhKCkrIi4iK2I6YHNiX3dpei56cGMuJHtifWB9OwpubmU9ZnVuY3Rpb24oYSxiLGM9IiIpe3ZhciBkPVtdO2ZvcihsZXQgZSBvZiBhLnN0b3JhZ2Upc3dpdGNoKGIpe2Nhc2UgMDpsZXQgZj1hLkxrIT09bnVsbCYmYS5May5rYSgpP2EuTGsud2EoKTpjO2Uuc3RhcnRzV2l0aCgic2Jfd2l6LnpwYy4iKSYmZS5lbmRzV2l0aCgiLiIrZikmJmQucHVzaChlKTticmVhaztjYXNlIDE6ZS5pbmNsdWRlcygic2Jfd2l6LnpwYyIpJiZkLnB1c2goZSk7YnJlYWs7ZGVmYXVsdDpfLmViKGIsdm9pZCAwKX1mb3IobGV0IGUgb2YgZClhLnN0b3JhZ2UucmVtb3ZlKGUpfTsKXy5ybmU9Y2xhc3MgZXh0ZW5kcyBfLkVpe3N0YXRpYyBRYSgpe3JldHVybnttb2RlbDp7R3I6Xy5lSyxWbzpfLlkkZH19fWNvbnN0cnVjdG9yKGEpe3N1cGVyKCk7dGhpcy5Maz10aGlzLmthPW51bGw7dGhpcy5zdG9yYWdlPW5ldyBfLmhmO3RoaXMuVm89YS5tb2RlbC5Wbzt0aGlzLk9mPXRoaXMuVm8uVkIoKTt0aGlzLmlzRW5hYmxlZD10aGlzLnN0b3JhZ2UuaXNBdmFpbGFibGUoKSYmXy5BKHRoaXMuT2YsNTUsITApO18uWCRkKHRoaXMuVm8sKCk9Pnt0aGlzLk9mPXRoaXMuVm8uVkIoKTtvbmUodGhpcyk7Xy5DaCh0aGlzLHttb2RlbDp7TGs6Xy5ZZWV9fSkudGhlbihiPT57dGhpcy5Maz1iLm1vZGVsLkxrfSkuY2F0Y2goKCk9Pnt9KTt0aGlzLmlzRW5hYmxlZCYmKHRoaXMuaXNFbmFibGVkPV8uQSh0aGlzLk9mLDU1LCEwKSl9KTthLm1vZGVsLkdyLmthKF8uUWRlLHRoaXMpfWdldChhKXtpZihwbmUodGhpcykpcmV0dXJuIHRoaXMua2E7aWYodGhpcy5pc0VuYWJsZWQpe2E9cW5lKHRoaXMsCmEpO2xldCBiPW51bGw7dHJ5e2I9dGhpcy5zdG9yYWdlLmdldChhKX1jYXRjaChjKXtyZXR1cm4gbnVsbH1pZihhPWI/Xy5nYWIoYik6bnVsbClyZXR1cm4gXy53ZWUoYSwhMCwhMCl9cmV0dXJuIG51bGx9cHV0KGEsYil7aWYodGhpcy5pc0VuYWJsZWQpaWYocG5lKHRoaXMpKXRoaXMua2E9Xy53ZWUoYiwhMCwhMCk7ZWxzZXthPXFuZSh0aGlzLGEpO3RyeXt0aGlzLnN0b3JhZ2Uuc2V0KGEsXy5mYWIoYikpfWNhdGNoKGMpe319fWNsZWFyKGEpe2lmKHRoaXMuaXNFbmFibGVkKWlmKF8uQSh0aGlzLk9mLDQzKSlubmUodGhpcywwLGEpO2Vsc2V7YT1xbmUodGhpcyxhKTt0cnl7dGhpcy5zdG9yYWdlLnJlbW92ZShhKX1jYXRjaChiKXt9fX1pc0F2YWlsYWJsZSgpe3JldHVybiB0aGlzLmlzRW5hYmxlZH19O18uVnIoXy5sbmUsXy5ybmUpOwpfLnYoKTsKfWNhdGNoKGUpe18uX0R1bXBFeGNlcHRpb24oZSl9CnRyeXsKXy5zbmU9Xy5rYygiSXAzRXJjIixbXy5QcSxfLmRLLF8uQ2RlLF8uRVphLF8ua2dlLF8ubG5lXSk7Cn1jYXRjaChlKXtfLl9EdW1wRXhjZXB0aW9uKGUpfQp0cnl7CnZhciB1bmU7Xy50bmU9ZnVuY3Rpb24oYSl7cmV0dXJuIF8uQWNlKGEpPT09IiJ9O3VuZT1mdW5jdGlvbihhKXthLmthPW5ldyBfLmFlKGEpO2Eua2EubGlzdGVuKGEuU2ksInJlYWR5c3RhdGVjaGFuZ2UiLGI9PntpZihhLlNpPT09Yi50YXJnZXQpe2xldCBjPWEuU2kueVQoKTtpZighKGM8Mykpe2I9bnVsbDt0cnl7Yj1fLnRyKGEuU2ksIildfSciKX1jYXRjaChkKXt9aWYoYyE9PTN8fGIpYiYmIWEub2EmJihhLm9hPSEwLGEud2EoKSksYz09PTQmJihhLm9hfHxhLndhKCksYS5jbGVhcigpKX19fSl9O18udm5lPWNsYXNze2NvbnN0cnVjdG9yKGEsYil7dGhpcy5TaT1hO3RoaXMud2E9Yjt0aGlzLm9hPSExO3RoaXMua2E9bnVsbDt1bmUodGhpcyl9Y2xlYXIoKXt0aGlzLmthLnJlbW92ZUFsbCgpO2lmKHRoaXMuU2kpe2xldCBhPXRoaXMuU2k7dGhpcy5TaT1udWxsO2EuYWJvcnQoKTthLmRpc3Bvc2UoKX19fTsKfWNhdGNoKGUpe18uX0R1bXBFeGNlcHRpb24oZSl9CnRyeXsKXy51KCJJcDNFcmMiKTsKdmFyIHduZSx6bmUseG5lLHluZSxBbmU7d25lPWZ1bmN0aW9uKGEpe2EuT2Y9YS5Wby5WQigpOyFhLkJhJiZhLk9mLkFhKCkmJihhLkJhPSEwLGEuc2Vzc2lvbklkPWAke18udChhLk9mLDExKX0uJHtEYXRlLm5vdygpfWAsYS5PZi5FYSgpfHxhLlJsYS5jbGVhcihhLk9mLkJhKCkpKX07em5lPWZ1bmN0aW9uKGEsYixjLGQpe2Zvcig7YS5vYS5sZW5ndGg+PTQ7KWEub2Euc2hpZnQoKS5jbGVhcigpO2EuRWEoYikudGhlbihlPT57aWYoYi5xSCE9PTEpe3ZhciBmPWEuWmM7bGV0IGc9cGVyZm9ybWFuY2Uubm93KCktYi5JYTtmLlpkLmFkZChnKTtmLlhiKz1nO2YucmI9TWF0aC5tYXgoZi5yYixnKX0oZj14bmUoYSxjKSl8fGEuWmMuRmIrKzt0cnl7ZiYmeW5lKGEsYixlLGQsITEpLGEuaE0uUGEoZSxiKX1jYXRjaChnKXt9fSkuY2F0Y2goZT0+e3huZShhLGMpfHxhLlpjLkZiKys7ZS5tZXNzYWdlPT09ImNvbm5lY3Rpb25SZWplY3RlZCImJmEuWmMuVWMrK30pfTsKeG5lPWZ1bmN0aW9uKGEsYil7aWYoYj09PS0yKXJldHVybiEwO2lmKGI8YS5JYSlyZXR1cm4hMTthLklhPWI7cmV0dXJuITB9O3luZT1mdW5jdGlvbihhLGIsYyxkLGU9ITEpe3ZhciBmPWN8fG5ldyBfLmNLO2lmKCFlJiZmLkJhKXt2YXIgZz0hYi5vYSYmIWIud2EmJiFiLkthO2cmJmEuT2YuRWEoKT9hLlJsYS5wdXQoYS5PZi5CYSgpLF8uTWVlKGYpKTpnfHxhLlF6YS5zZXQoXy5LZWUoYiksbmV3IF8uY0soZi5rYSgpLF8ueGVlKGYpLCEwLCEwKSl9aWYoYi5BYSlyZXR1cm4hMDtmPWEud2EoYixmKTtyZXR1cm4gYi5vYXx8IWV8fGN8fCFhLk9mLkVhKCk/KGQoYixmKSxiLkFhPSEwKTohMX07QW5lPWZ1bmN0aW9uKGEpe3ZhciBiPW5ldyBNYXA7Xy5BKGEuT2YsNzApJiZfLnQoYS5PZiw3NykubGVuZ3RoPjAmJmIuc2V0KCJYLVNlcnZlci1Ub2tlbiIsXy50KGEuT2YsNzcpKTtyZXR1cm4gYn07Cl8uQm5lPWNsYXNzIGV4dGVuZHMgXy5FaXtzdGF0aWMgUWEoKXtyZXR1cm57c2VydmljZTp7bG9jYXRpb246Xy5wdn0sbW9kZWw6e0dyOl8uZUssZXZlbnRzOl8uRGRlLFZvOl8uWSRkLFpjOl8udGdlLFJsYTpfLnJuZX19fWNvbnN0cnVjdG9yKGEpe3N1cGVyKCk7dGhpcy5Maz12b2lkIDA7dGhpcy5CYT0hMTt0aGlzLk5hPTA7dGhpcy5JYT0tMTt0aGlzLnNlc3Npb25JZD0iIjt0aGlzLmthPVtdO3RoaXMub2E9W107dGhpcy5RemE9bmV3IE1hcDt0aGlzLkVhPXRoaXMuT2E7dGhpcy5TYj1hLnNlcnZpY2UubG9jYXRpb247dGhpcy5oTT1hLm1vZGVsLkdyO3RoaXMuZXZlbnRzPWEubW9kZWwuZXZlbnRzO3RoaXMuVm89YS5tb2RlbC5Wbzt0aGlzLlpjPWEubW9kZWwuWmM7dGhpcy5SbGE9YS5tb2RlbC5SbGE7dGhpcy5PZj10aGlzLlZvLlZCKCk7d25lKHRoaXMpO18uWCRkKHRoaXMuVm8sKCk9Pnt3bmUodGhpcyk7Xy5yZyhfLkNoKHRoaXMse21vZGVsOntMazpfLlllZX19KS50aGVuKGI9Pgp7dGhpcy5Maz1iLm1vZGVsLkxrfSkuY2F0Y2goKCk9Pnt0aGlzLkxrPW51bGx9KSwoKT0+e2ZvcihsZXQge3JlcXVlc3Q6YixoYW5kbGVyOmN9b2YgdGhpcy5rYSl0aGlzLk9IKGIsYyk7dGhpcy5rYS5sZW5ndGg9MH0pfSk7YS5tb2RlbC5Hci5rYShfLlBkZSx0aGlzKX1pbml0aWFsaXplKGEpe3RoaXMuRWE9YX1PSChhLGIpe2lmKGEucUg9PT0wKXt2YXIgYz10aGlzLlpjO2Mua2E9PT0wJiYoYy5rYT1wZXJmb3JtYW5jZS5ub3coKSl9aWYodGhpcy5CYSYmdGhpcy5MayE9PXZvaWQgMCl7Yz10aGlzLk9mO3ZhciBkPV8uQShjLDcsITApP2Eub2E6YS5nZXRRdWVyeSgpLGU9Xy5BKGMsNywhMCk/YS5OYTphLkdoYSgpO2xldCBmPV8uQShjLDcwKT8iL2NvbXBsZXRlL3MiOiIvY29tcGxldGUvc2VhcmNoIixnPV8uV24oYS51cmksImdzX3BjcnQiKSxoPW5ldyBfLkhlKF8udChjLDE0KSk7YS5CYShfLkxlKF8uS2UoXy5KZShfLkllKG5ldyBfLkhlLGgua2EpLGguQW8oKSksaC5BYSksZikpOwphLmthKCJxIixkLCEwKTthLmthKCJjcCIsZSwhMCk7dGhpcy5MayYmdGhpcy5May5rYSgpP2Eua2EoImNsaWVudCIsdGhpcy5May5LYSgpLCEwKTphLmthKCJjbGllbnQiLGMuQWEoKSk7YS5rYSgieHNzaSIsInQiKTtjLk5hKCkmJmEua2EoImdzX3BjcnQiLGcpO3RoaXMuTGsmJnRoaXMuTGsua2EoKT8oZD10aGlzLkxrLk9hKCkpJiZhLmthKCJnc19yaSIsZCwhMCk6KGQ9Xy50KGMsMikpJiZhLmthKCJnc19yaSIsZCk7dGhpcy5MayYmdGhpcy5May5rYSgpPyhkPXRoaXMuTGsud2EoKSkmJmEua2EoImRzIixkLCEwKTooZD1jLkJhKCkpJiZhLmthKCJkcyIsZCwhMCk7Xy50KGMsMTMpJiZhLmthKCJobCIsXy50KGMsMTMpKTtfLndlKGMsMTIpJiZhLmthKCJhdXRodXNlciIsXy54ZShjLDEyKSk7Yy53YSgpJiZhLmthKCJwcSIsYy53YSgpLCEwKTt0aGlzLnNlc3Npb25JZCYmYS5rYSgicHNpIix0aGlzLnNlc3Npb25JZCk7Yz1uZXcgVVJMU2VhcmNoUGFyYW1zKF8ub3YodGhpcy5TYikpOwpjLmhhcygiZXNyY2giKSYmYS5rYSgiZXNyY2giLGMuZ2V0KCJlc3JjaCIpKTtpZih0aGlzLmhNLkthKGEpPT09MilfLnRuZShhLmdldFF1ZXJ5KCkpJiZhLnFIPT09MCYmYihhLG5ldyBfLmNLKTtlbHNlIGlmKGM9YS5nZXRRdWVyeSgpLGQ9dGhpcy5PZixjLnRyaW0oKXx8YS5xSCE9PTB8fChlPXRoaXMuWmMsZS5FYT1NYXRoLm1heChlLkVhLDApKSxlPWQud2EoKSwhXy50bmUoZSkmJl8uS2RlKGMsZSxkLklhKCksdGhpcy5Maz90aGlzLkxrLk1fOm51bGwpJiZhLnFIPT09MCYmKHRoaXMuWmMuQWI9MSksYz1hLnFIPT09MT8tMjp0aGlzLk5hKyssYS5vYXx8YS5xSD09PTF8fCF4bmUodGhpcyxjKXx8YS53YT9kPSExOihkPXRoaXMuT2YuRWEoKT90aGlzLlJsYS5nZXQodGhpcy5PZi5CYSgpKTpudWxsLChlPXluZSh0aGlzLGEsZCxiLCEwKSkmJmQmJnRoaXMuWmMuT2ErKyxkPWUpLCFkfHxhLmZvcmNlZCl7aWYoIWQmJihkPSEhYS5vYXx8IXRoaXMuUmxhLmlzQXZhaWxhYmxlKCl8fGEuS2EsCmU9Xy5LZWUoYSksZCYmdGhpcy5RemEuaGFzKGUpJiZ4bmUodGhpcyxjKT8odGhpcy5aYy5PYSsrLHluZSh0aGlzLGEsdGhpcy5RemEuZ2V0KGUpLGIsITApLGQ9ITApOmQ9ITEsZCYmIWEuZm9yY2VkKXx8IWQmJigoZD10aGlzLmhNLk9hKGEpKSYmKGQua2EoKS5sZW5ndGg+MHx8ZC5LYSk/KHRoaXMuWmMua2QrKyx5bmUodGhpcyxhLGQsYiwhMSksZD0hMCk6ZD0hMSxkJiYhYS5mb3JjZWQpKXJldHVybjt6bmUodGhpcyxhLGMsYil9fWVsc2UgdGhpcy5rYS5wdXNoKHtyZXF1ZXN0OmEsaGFuZGxlcjpifSl9T2EoYSl7cmV0dXJuIG5ldyBQcm9taXNlKChiLGMpPT57dmFyIGQ9bmV3IF8ucHI7ZC5zZXRXaXRoQ3JlZGVudGlhbHMoITApO3ZhciBlPW5ldyBfLnZuZShkLCgpPT57aWYoXy5zcihkKSl0cnl7bGV0IGg9Xy50cihkLCIpXX0nIil8fHt9LGs9Xy53ZWUoaCwhMCwhMSwhMCk7aWYoYS5xSCE9PTEpe3ZhciBmPXRoaXMuWmMsZz0obmV3IEJsb2IoW2QuS3coKV0pKS5zaXplO2YuUGIrPQpnfWIoayl9Y2F0Y2goaCl7YyhoKX1lbHNlIGMoRXJyb3IoIm9sIikpfSk7dGhpcy5vYS5wdXNoKGUpO2U9QW5lKHRoaXMpO2Quc2VuZChhLkVhKCksIkdFVCIsIiIsZSl9KX13YShhLGIpe2E9dGhpcy5oTS53YShiLGEpO3JldHVybiBhLm9hKCJidCIsITEpP2E6dGhpcy5oTS5OYShhKX1LYShhLGIsYyl7aWYoYS5nZXRUeXBlKCk9PT00MSl0aGlzLmV2ZW50cy5QeCgyLF8uWEooYSkpLHRoaXMuT21hKCksYyghMCk7ZWxzZXt2YXIgZD1fLllKKGEsImR1Iik7aWYoZCl7aWYoXy50KHRoaXMuT2YsMjApKXtkPV8uWUooYSwiZHUiKTt2YXIgZT1fLkEodGhpcy5PZiw3MCk/Ii9jb21wbGV0ZS9kPyI6Ii9jb21wbGV0ZS9kZWxldGVpdGVtcz8iO2lmKGQuaW5kZXhPZihlKT09PTApe2U9ZC5zbGljZShlLmxlbmd0aCkuc3BsaXQoIiYiKTtmb3IobGV0IGc9MDtnPGUubGVuZ3RoO2crKylpZihlW2ddLmluZGV4T2YoImRlbHRvaz0iKT09PTApe2Q9ZGVjb2RlVVJJQ29tcG9uZW50KGVbZ10uc2xpY2UoNykpOwpicmVha319ZD1fLnQodGhpcy5PZiwyMCkucmVwbGFjZSgiJENMSUVOVCIsZW5jb2RlVVJJQ29tcG9uZW50KHRoaXMuT2YuQWEoKSkpLnJlcGxhY2UoIiRERUxRVUVSWSIsZW5jb2RlVVJJQ29tcG9uZW50KF8uWEooYSkpKS5yZXBsYWNlKCIkREVMVE9LIixlbmNvZGVVUklDb21wb25lbnQoZCkpLnJlcGxhY2UoIiRHU19SSSIsZW5jb2RlVVJJQ29tcG9uZW50KF8udCh0aGlzLk9mLDIpKSk7Xy54ZSh0aGlzLk9mLDEyKT4wJiYoZCs9YCZhdXRodXNlcj0ke18ueGUodGhpcy5PZiwxMil9YCl9dmFyIGY9bmV3IF8ucHI7Zi5zZXRXaXRoQ3JlZGVudGlhbHMoITApO25ldyBfLnZuZShmLCgpPT57ZiYmXy5zcihmKT8odGhpcy5ldmVudHMuUHgoMixfLlhKKGEpKSx0aGlzLk9tYSgpLHRoaXMuUmxhLmNsZWFyKGIpLGMoITApKTpjKCExKX0pO2U9QW5lKHRoaXMpO2Yuc2VuZChkLCJHRVQiLCIiLGUpfWVsc2UgYyghMSl9fU9tYSgpe3RoaXMuUXphLmNsZWFyKCl9fTtfLlZyKF8uc25lLF8uQm5lKTsKXy52KCk7Cn1jYXRjaChlKXtfLl9EdW1wRXhjZXB0aW9uKGUpfQp0cnl7CnZhciBDbmU7Cl8uRG5lPWZ1bmN0aW9uKGEsYil7dmFyIGM9bmV3IE1hcDtpZihiLmtsYil7dmFyIGQ9YSxlPWIuR29iLGY9bmV3IE1hcDtmb3IodmFyIGcgb2YgZClmLnNldChnLm5hbWUsKGYuZ2V0KGcubmFtZSl8fDApKzEpO2c9bmV3IE1hcDtmb3IodmFyIGggb2YgZCllLmhhcyhoLm5hbWUpP2cuc2V0KGgubmFtZSwyKTooZi5nZXQoaC5uYW1lKXx8MCk+MSYmZy5zZXQoaC5uYW1lLDMpO2E9Q25lKGEsYyxnKX1mPWE7ZD1uZXcgTWFwO2U9MDtmb3IodmFyIGsgb2YgZilmPWsuc2l6ZT5iLmNhYixoPWIuVTFhLnNpemU+MCYmIWIuVTFhLmhhcyhfLldKKGspKSwoZj0oIWZ8fGIuTVdhLlFsYikmJighaHx8Yi5NV2EuUmxiKSkmJmUrKyxmJiZlPmIuTVdhLmNvdW50JiZkLnNldChrLm5hbWUsMSk7az1hPUNuZShhLGMsZCk7ZD1iLmNhYjtlPW5ldyBNYXA7Zm9yKHZhciBtIG9mIGspbS5zaXplPmQmJmUuc2V0KG0ubmFtZSw1KTttPWE9Q25lKGEsYyxlKTtiPWIuVTFhO2s9bmV3IE1hcDtmb3IobGV0IG4gb2YgbSliLnNpemU+CjAmJiFiLmhhcyhfLldKKG4pKSYmay5zZXQobi5uYW1lLDQpO0NuZShhLGMsayk7cmV0dXJuIGN9O0NuZT1mdW5jdGlvbihhLGIsYyl7Zm9yKGxldCBbZCxlXW9mIGMpe2M9ZDtsZXQgZj1lO2IuaGFzKGMpfHxiLnNldChjLGYpfXJldHVybiBhLmZpbHRlcihkPT4hYi5oYXMoZC5uYW1lKSl9Owp9Y2F0Y2goZSl7Xy5fRHVtcEV4Y2VwdGlvbihlKX0KdHJ5ewpfLnUoIlAwYUphYyIpOwoKXy52KCk7Cn1jYXRjaChlKXtfLl9EdW1wRXhjZXB0aW9uKGUpfQp0cnl7Cl8uRExiPSEhKF8uT2lbNTRdJjUxMik7Xy5FTGI9ISEoXy5PaVs1NF0mMTAyNCk7Cn1jYXRjaChlKXtfLl9EdW1wRXhjZXB0aW9uKGUpfQp0cnl7Cl8uYnk9Y2xhc3MgZXh0ZW5kcyBfLnM5Yntjb25zdHJ1Y3RvcihhKXtzdXBlcigpO3RoaXMudTg9MTAwO3RoaXMuZnVuYz1hfXBsYXkoKXtyZXR1cm4gdGhpcy5NMCgpfHxfLkRnKCl9ZmluaXNoKCl7dGhpcy5NMCgpfU5qKCl7cmV0dXJuIHRoaXMudTh9TTAoKXtpZih0aGlzLmZ1bmMpe2xldCBhPXRoaXMuZnVuYygpO3RoaXMuZnVuYz1udWxsO3JldHVybiBhfX19Owp9Y2F0Y2goZSl7Xy5fRHVtcEV4Y2VwdGlvbihlKX0KdHJ5ewpfLkQ5Yj1jbGFzc3tjb25zdHJ1Y3Rvcigpe3RoaXMuY2hpbGRyZW49W119YWRkKGEpe3R5cGVvZiBhPT09ImZ1bmN0aW9uIj90aGlzLmNoaWxkcmVuLnB1c2gobmV3IF8uYnkoYSkpOmEmJnRoaXMuY2hpbGRyZW4ucHVzaChhKTtyZXR1cm4gdGhpc31idWlsZCgpe3ZhciBhPV8uWGkodGhpcy5jaGlsZHJlbixiPT5iIGluc3RhbmNlb2YgXy5EOWI/Yi5idWlsZCgpOmIpO3JldHVybiB0aGlzLmNyZWF0ZShhKX19Owp9Y2F0Y2goZSl7Xy5fRHVtcEV4Y2VwdGlvbihlKX0KdHJ5ewp2YXIgSDliLEk5YjtfLkc5Yj1mdW5jdGlvbihhKXthLmFuaW1hdGlvbnx8YS5HYXx8KGEubWVhc3VyZSgpLGEuYW5pbWF0aW9uPWEud2EoKSl9O0g5Yj1mdW5jdGlvbihhKXt2YXIgYj1hLk5qKCk7YS5FYT09PS0xJiYoYS5FYT13aW5kb3cuc2V0VGltZW91dCgoKT0+e2EuRWE9LTE7YS5hbmltYXRpb24uZmluaXNoKCl9LGIpKX07STliPWZ1bmN0aW9uKGEpe2EuRWEhPT0tMSYmKHdpbmRvdy5jbGVhclRpbWVvdXQoYS5FYSksYS5FYT0tMSl9OwpfLmV5PWNsYXNzIGV4dGVuZHMgXy5zOWJ7Y29uc3RydWN0b3IoKXtzdXBlcigpO3RoaXMuYW5pbWF0aW9uPW51bGw7dGhpcy5FYT0tMTt0aGlzLkFiPXRoaXMuT2I9dGhpcy5HYT0hMTt0aGlzLmZ4YT0hMDt0aGlzLkZoPV8ubGYoKTt0aGlzLnhjPW51bGx9Z2V0Q2hpbGRyZW4oKXtyZXR1cm4gdGhpcy5hbmltYXRpb24/W3RoaXMuYW5pbWF0aW9uXTpbXX1wbGF5KCl7Xy5HOWIodGhpcyk7dGhpcy5TYSgpO3RoaXMuUWIoKTtyZXR1cm4gdGhpcy5GaC5wcm9taXNlfWZpbmlzaCgpe3RoaXMuR2F8fChfLkc5Yih0aGlzKSx0aGlzLlNhKCksdGhpcy5hbmltYXRpb24uZmluaXNoKCksdGhpcy5SYSgpLHRoaXMuRmgucmVzb2x2ZShudWxsKSl9U2EoKXt0aGlzLk9ifHx0aGlzLkdhfHwodGhpcy5PYj0hMCx0aGlzLndjKCkpfVFiKGE9ITEpe3RoaXMuQWJ8fHRoaXMuR2F8fCh0aGlzLkFiPSEwLEg5Yih0aGlzKSx0aGlzLmFuaW1hdGlvbi5wbGF5KCkudGhlbihiPT57STliKHRoaXMpO2F8fHRoaXMuUmEoKTsKdGhpcy5GaC5yZXNvbHZlKGIpfSkpO3JldHVybiB0aGlzLkZoLnByb21pc2V9UmEoKXt0aGlzLkdhfHwodGhpcy5HYT0hMCxJOWIodGhpcyksdGhpcy5jbGVhbnVwKCkpfWNsZWFudXAoKXt9fTsKfWNhdGNoKGUpe18uX0R1bXBFeGNlcHRpb24oZSl9CnRyeXsKdmFyIEs5YjtfLko5Yj1mdW5jdGlvbihhLGIpe3ZhciBjPWEudGltaW5nO2Mub3BhY2l0eT1fLnQ5YihiLGMub3BhY2l0eSk7cmV0dXJuIGF9O18uZnk9ZnVuY3Rpb24oKXtyZXR1cm4gbmV3IEs5Yn07Cl8uZ3k9Y2xhc3MgZXh0ZW5kcyBfLnM5Yntjb25zdHJ1Y3RvcihhKXtzdXBlcigpO3RoaXMuY2hpbGRyZW49YS5maWx0ZXIoYj0+YiE9bnVsbCk7dGhpcy5kb25lPUFycmF5KHRoaXMuY2hpbGRyZW4ubGVuZ3RoKX1wbGF5KCl7dmFyIGE9W10sYj1bXSxjPVtdLGQ9W107Zm9yKGxldCBlIG9mIHRoaXMuY2hpbGRyZW4pZSBpbnN0YW5jZW9mIF8uZXk/KF8uRzliKGUpLGMucHVzaChlLlNhLmJpbmQoZSkpLGQucHVzaChlLlJhLmJpbmQoZSkpLGIucHVzaChlLlFiLmJpbmQoZSwhMCkpKTooZSBpbnN0YW5jZW9mIF8uYXkmJmEucHVzaChlLmluaXQuYmluZChlKSksYi5wdXNoKGUucGxheS5iaW5kKGUpKSk7Zm9yKGxldCBlIG9mIGMpZSgpO2ZvcihjPTA7YzxhLmxlbmd0aDtjKyspKDAsYVtjXSkoYz09PWEubGVuZ3RoLTEpO2E9Yi5tYXAoKGUsZik9PmUoKS50aGVuKGc9Pnt0aGlzLmRvbmVbZl09ITA7cmV0dXJuIGd9KSk7YT1fLkloKGEpO2EudGhlbigoKT0+e2ZvcihsZXQgZSBvZiBkKWUoKX0pOwpyZXR1cm4gYX1maW5pc2goKXt2YXIgYT10aGlzLmNoaWxkcmVuLm1hcCgoYixjKT0+dGhpcy5kb25lW2NdPygpPT57fTooYiBpbnN0YW5jZW9mIF8uZXkmJl8uRzliKGIpLGIuZmluaXNoLmJpbmQoYikpKTtmb3IobGV0IGIgb2YgYSliKCl9TmooKXt2YXIgYT0wO2ZvcihsZXQgYiBvZiB0aGlzLmNoaWxkcmVuKWIuTmooKT5hJiYoYT1iLk5qKCkpO3JldHVybiBhfWdldENoaWxkcmVuKCl7cmV0dXJuIHRoaXMuY2hpbGRyZW59fTtLOWI9Y2xhc3MgZXh0ZW5kcyBfLkQ5YntjcmVhdGUoYSl7cmV0dXJuIG5ldyBfLmd5KGEpfX07Cn1jYXRjaChlKXtfLl9EdW1wRXhjZXB0aW9uKGUpfQp0cnl7CnZhciBMOWIsTjliLE85YixNOWI7TDliPXdpbmRvdy5yZXF1ZXN0QW5pbWF0aW9uRnJhbWU/YT0+e3dpbmRvdy5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUoYSl9OmE9PntzZXRUaW1lb3V0KGEsMCl9OwpOOWI9ZnVuY3Rpb24oYSxiKXt2YXIgYz0wO2ZvcihiPWIuc2xpY2UoKTtiLmxlbmd0aDspe2xldCBkPWIuc2hpZnQoKTtpZihkIGluc3RhbmNlb2YgXy5leSl7bGV0IGU9TTliKGQpO2EuRWEucHVzaChlLndjKTthLmthLnB1c2goZS5jbGVhbnVwKTthLkthLnB1c2goZS50aW1lb3V0KTtlLnU4PmMmJihjPWUudTgpO2IucHVzaCguLi5lLmRHYyl9ZWxzZSBkIGluc3RhbmNlb2YgXy5heT8oYS5BYS5wdXNoKGU9PmQuaW5pdChlKSksYS5CYS5wdXNoKCgpPT5kLnBsYXkoKSksYS53YS5wdXNoKCgpPT5kLmZpbmlzaCgpKSk6ZCBpbnN0YW5jZW9mIF8uZ3l8fGQgaW5zdGFuY2VvZiBfLmh5P2IucHVzaCguLi5kLmdldENoaWxkcmVuKCkpOihhLkJhLnB1c2goKCk9PmQucGxheSgpKSxhLndhLnB1c2goKCk9PmQuZmluaXNoKCkpKX1hLklhPWM7cmV0dXJue3U4OmN9fTsKTzliPWZ1bmN0aW9uKGEsYil7YS5vYT1zZXRUaW1lb3V0KCgpPT57Zm9yKGxldCBjIG9mIGEuS2EpYygpO2ZvcihsZXQgYyBvZiBhLmthKWMoKX0sYil9O005Yj1mdW5jdGlvbihhKXtfLkc5YihhKTt2YXIgYj1hLmdldENoaWxkcmVuKCkmJmEuZ2V0Q2hpbGRyZW4oKS5sZW5ndGg/YS5nZXRDaGlsZHJlbigpWzBdOm51bGwsYz1iP1tiXTpbXTtiIGluc3RhbmNlb2YgXy5neSYmKGM9Yi5nZXRDaGlsZHJlbigpKTtyZXR1cm57d2M6KCk9PmEuU2EoKSxjbGVhbnVwOigpPT5hLlJhKCksdGltZW91dDooKT0+e2EuRWE9LTE7YS5hbmltYXRpb24uZmluaXNoKCl9LHU4OmEuTmooKXx8MCxkR2M6Y319OwpfLmh5PWNsYXNzIGV4dGVuZHMgXy5zOWJ7Y29uc3RydWN0b3IoYSl7c3VwZXIoKTt0aGlzLm9hPS0xO3RoaXMuQWE9W107dGhpcy5CYT1bXTt0aGlzLkVhPVtdO3RoaXMua2E9W107dGhpcy53YT1bXTt0aGlzLkthPVtdO3RoaXMuSWE9bnVsbDt0aGlzLkdhPSExO3RoaXMuY2hpbGRyZW49YS5maWx0ZXIoYj0+YiE9bnVsbCk7dGhpcy5kb25lPUFycmF5KHRoaXMuY2hpbGRyZW4ubGVuZ3RoKTt0aGlzLkZoPV8ubGYoKX1wbGF5KCl7dmFyIGE9TjliKHRoaXMsdGhpcy5jaGlsZHJlbik7Zm9yKHZhciBiIG9mIHRoaXMuRWEpYigpO2I9dGhpcy5BYS5sZW5ndGg7Zm9yKGxldCBjPTA7YzxiO2MrKykoMCx0aGlzLkFhW2NdKShjPT09Yi0xKTtMOWIoKCk9Pnt2YXIgYz10aGlzLkJhLm1hcCgoZSxmKT0+ZSgpLnRoZW4oZz0+e3RoaXMuZG9uZVtmXT0hMDtyZXR1cm4gZ30pKTtPOWIodGhpcyxhLnU4KTt2YXIgZD1fLkloKGMpO2QudGhlbigoKT0+e2lmKCF0aGlzLkdhKXtjbGVhclRpbWVvdXQodGhpcy5vYSk7CmZvcihsZXQgZSBvZiB0aGlzLmthKWUoKX10aGlzLkZoLnJlc29sdmUoZCl9KX0pO3JldHVybiB0aGlzLkZoLnByb21pc2V9ZmluaXNoKCl7dGhpcy5HYT0hMDtjbGVhclRpbWVvdXQodGhpcy5vYSk7dGhpcy53YS5mb3JFYWNoKChhLGIpPT57dGhpcy5kb25lW2JdfHxhKCl9KTtmb3IobGV0IGEgb2YgdGhpcy5rYSlhKCl9TmooKXt2YXIgYT0wO2ZvcihsZXQgYiBvZiB0aGlzLmNoaWxkcmVuKWIuTmooKT5hJiYoYT1iLk5qKCkpO3JldHVybiB0aGlzLklhfHxhfWdldENoaWxkcmVuKCl7cmV0dXJuIHRoaXMuY2hpbGRyZW59fTtfLlA5Yj1jbGFzcyBleHRlbmRzIF8uRDlie2NyZWF0ZShhKXtyZXR1cm4gbmV3IF8uaHkoYSl9fTsKfWNhdGNoKGUpe18uX0R1bXBFeGNlcHRpb24oZSl9CnRyeXsKXy5IaGU9ISEoXy5PaVs1N10mNjQpO18uSWhlPSEhKF8uT2lbNTddJjEyOCk7Xy5KaGU9ISEoXy5PaVs1N10mMjU2KTtfLktoZT0hIShfLk9pWzU3XSY1MTIpO18uTGhlPSEhKF8uT2lbNTddJjEwMjQpO18uTWhlPSEhKF8uT2lbNTddJjIwNDgpO18uTmhlPSEhKF8uT2lbNTddJjQwOTYpO18uT2hlPSEhKF8uT2lbNTddJjgxOTIpO18uUGhlPSEhKF8uT2lbNTddPj4xNCYxKTtfLlFoZT0hIShfLk9pWzU3XT4+MTUmMSk7Xy5SaGU9ISEoXy5PaVs1N10+PjE2JjEpO18uU2hlPSEhKF8uT2lbNTddPj4xNyYxKTtfLlRoZT0hIShfLk9pWzU3XT4+MTgmMSk7Xy5VaGU9ISEoXy5PaVs1N10+PjE5JjEpO18uVmhlPSEhKF8uT2lbNTddPj4yMCYxKTtfLldoZT0hIShfLk9pWzU3XT4+MjEmMSk7Xy5YaGU9ISEoXy5PaVs1N10+PjIyJjEpO18uWWhlPSEhKF8uT2lbNTddPj4yMyYxKTtfLlpoZT0hIShfLk9pWzU3XT4+MjUmMSk7Xy4kaGU9ISEoXy5PaVs1N10+PjI2JjEpOwpfLmFpZT0hIShfLk9pWzU3XT4+MjcmMSk7Xy5iaWU9ISEoXy5PaVs1N10+PjI4JjEpO18uY2llPSEhKF8uT2lbNTddPj4yOSYxKTsKfWNhdGNoKGUpe18uX0R1bXBFeGNlcHRpb24oZSl9CnRyeXsKXy5laWU9ZnVuY3Rpb24oYSl7cmV0dXJuIGEuZ2V0VHlwZSgpPT09NDYmJmEua2EoKS5pbmNsdWRlcygxOTkpfTsKfWNhdGNoKGUpe18uX0R1bXBFeGNlcHRpb24oZSl9CnRyeXsKdmFyIGZpZSxnaWU7Xy5oaWU9ZnVuY3Rpb24oYSxiKXtiPT09NTM/YS5zdHlsZS53aWR0aD0iMCI6KGI9ZmllW2JdLChhLmZpcnN0RWxlbWVudENoaWxkfHxhLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCJwYXRoIikpKS5zZXRBdHRyaWJ1dGUoImQiLGJ8fGdpZSksYS5zdHlsZS53aWR0aD0iIil9OwpmaWU9e1s3XToiTTQ4MC04MHEtODMgMC0xNTYtMzEuNVQxOTctMTk3cS01NC01NC04NS41LTEyN1Q4MC00ODBxMC04MyAzMS41LTE1NlQxOTctNzYzcTU0LTU0IDEyNy04NS41VDQ4MC04ODBxODMgMCAxNTYgMzEuNVQ3NjMtNzYzcTU0IDU0IDg1LjUgMTI3VDg4MC00ODBxMCA4My0zMS41IDE1NlQ3NjMtMTk3cS01NCA1NC0xMjcgODUuNVQ0ODAtODBabS00MC04MnYtNzhxLTMzIDAtNTYuNS0yMy41VDM2MC0zMjB2LTQwTDE2OC01NTJxLTMgMTgtNS41IDM2dC0yLjUgMzZxMCAxMjEgNzkuNSAyMTJUNDQwLTE2MlptMjc2LTEwMnE0MS00NSA2Mi41LTEwMC41VDgwMC00ODBxMC05OC01NC41LTE3OVQ2MDAtNzc2djE2cTAgMzMtMjMuNSA1Ni41VDUyMC02ODBoLTgwdjgwcTAgMTctMTEuNSAyOC41VDQwMC01NjBoLTgwdjgwaDI0MHExNyAwIDI4LjUgMTEuNVQ2MDAtNDQwdjEyMGg0MHEyNiAwIDQ3IDE1LjV0MjkgNDAuNVoiLFsyN106Im02MTQtMzEwIDUxLTUxLTE0OS0xNDl2LTIxMGgtNzJ2MjQwbDE3MCAxNzBaTTQ4MC05NnEtNzkgMC0xNDktMzB0LTEyMi04Mi04My0xMjNxLTMwLTcwLTMwLTE0OSAwLTgwIDMwLTE1MHQ4My0xMjJxNTItNTIgMTIyLTgydDE0OS0zMHE4MCAwIDE1MCAzMHQxMjIgODJxNTIgNTIgODIgMTIydDMwIDE1MHEwIDc5LTMwIDE0OXQtODIgMTIzLTEyMiA4MnEtNzAgMzAtMTUwIDMwWm0wLTM4NFptMCAzMTJxMTMwIDAgMjIxLTkxdDkxLTIyMXEwLTEzMC05MS0yMjF0LTIyMS05MXEtMTI5IDAtMjIwIDkxdC05MiAyMjFxMCAxMjkgOTIgMjIxdDIyMCA5MVoiLApbMzNdOiJtMTQ3LTIwOS01MS01MSAyODEtMjgxIDE1MiAxNTIgMjEyLTIxMUg2MjR2LTcyaDI0MHYyNDBoLTcydi0xMTdMNTI5LTI4NyAzNzctNDM5IDE0Ny0yMDlaIixbNDNdOiJNNzY1LTE0NCA1MjYtMzgzcS0zMCAyMi02NS43OSAzNC41LTM1Ljc5IDEyLjUtNzYuMTggMTIuNVEyODQtMzM2IDIxNC00MDZ0LTcwLTE3MHEwLTEwMCA3MC0xNzB0MTcwLTcwcTEwMCAwIDE3MCA3MHQ3MCAxNzAuMDNxMCA0MC4zOS0xMi41IDc2LjE4UTU5OS00NjQgNTc3LTQzNGwyMzkgMjM5LTUxIDUxWk0zODQtNDA4cTcwIDAgMTE5LTQ5dDQ5LTExOXEwLTcwLTQ5LTExOXQtMTE5LTQ5cS03MCAwLTExOSA0OXQtNDkgMTE5cTAgNzAgNDkgMTE5dDExOSA0OVoiLFs4Nl06Ik03ODQtMTIwIDUzMi0zNzJxLTMwIDI0LTY5IDM4dC04MyAxNHEtMTA5IDAtMTg0LjUtNzUuNVQxMjAtNTgwcTAtMTA5IDc1LjUtMTg0LjVUMzgwLTg0MHEzMSAwIDYwIDYuNXQ1NSAxOS41bC02MiA2MnEtMTMtNC0yNi02dC0yNy0ycS03NSAwLTEyNy41IDUyLjVUMjAwLTU4MHEwIDc1IDUyLjUgMTI3LjVUMzgwLTQwMHE3MCAwIDEyMC41LTQ1LjVUNTU5LTU2MGg4MHEtMyAzOC0xNi41IDcyVDU4OC00MjhsMjUyIDI1Mi01NiA1NlptLTg0LTM2MHEwLTkyLTY0LTE1NnQtMTU2LTY0cTkyIDAgMTU2LTY0dDY0LTE1NnEwIDkyIDY0IDE1NnQxNTYgNjRxLTkyIDAtMTU2IDY0dC02NCAxNTZaIiwKWzg3XToiTTIwMC03NjB2MTYwcTAgNTAgMzUgODV0ODUgMzVoMzY3TDU0My02MjRsNTctNTYgMjQwIDI0MC0yNDAgMjQwLTU3LTU2IDE0NC0xNDRIMzIwcS04MyAwLTE0MS41LTU4LjVUMTIwLTYwMHYtMTYweiIsWzg4XToiTTI0MC0yMDBoNTdsMzkxLTM5MS01Ny01Ny0zOTEgMzkxdjU3Wm0tODAgODB2LTE3MGw1MjgtNTI3cTEyLTExIDI2LjUtMTd0MzAuNS02cTE2IDAgMzEgNnQyNiAxOGw1NSA1NnExMiAxMSAxNy41IDI2dDUuNSAzMHEwIDE2LTUuNSAzMC41VDg1Ny02NDdMMzMwLTEyMEgxNjBabTY0MC01ODQtNTYtNTYgNTYgNTZabS0xNDEgODUtMjgtMjkgNTcgNTctMjktMjhabS00MzkgNTlxMC03NSA1Mi41LTEyNy41VDQwMC03NDBxLTc1IDAtMTI3LjUtNTIuNVQyMjAtOTIwcTAgNzUtNTIuNSAxMjcuNVQ0MC03NDBxNzUgMCAxMjcuNSA1Mi41VDIyMC01NjBaIixbOThdOiJNMjQwLTI4MGg0ODBMNTcwLTQ4MCA0NTAtMzIwbC05MC0xMjAtMTIwIDE2MFptLTQwIDE2MHEtMzMgMC01Ni41LTIzLjVUMTIwLTIwMHYtNTYwcTAtMzMgMjMuNS01Ni41VDIwMC04NDBoMjgxdjgwSDIwMHY1NjBoNTYwdi0yODFoODB2MjgxcTAgMzMtMjMuNSA1Ni41VDc2MC0xMjBIMjAwWm01NDAtNDQwcS02IDAtOC02LTE2LTYxLTYwLjUtMTA1LjVUNTY2LTczMnEtNi0yLTYtOCAwLTcgNi04IDYxLTE2IDEwNS41LTYwLjVUNzMyLTkxNHEyLTYgOC02IDcgMCA4IDYgMTcgNjEgNjEgMTA1LjVUOTE0LTc0OHE2IDEgNiA4IDAgNi02IDgtNjEgMTYtMTA1LjUgNjAuNVQ3NDgtNTY2cS0xIDYtOCA2Wm0tMjYwIDgwWiJ9OwpnaWU9ZmllWzQzXTsKfWNhdGNoKGUpe18uX0R1bXBFeGNlcHRpb24oZSl9CnRyeXsKdmFyIGlpZT1mdW5jdGlvbihhKXtyZXR1cm4gYS5nZXRUeXBlKCk9PTM1fHxhLmdldFR5cGUoKT09NDF8fGEua2EoKS5pbmNsdWRlcygzOSl9O3ZhciBqaWU9Y2xhc3N7Y29uc3RydWN0b3IoKXt0aGlzLlpjPW51bGw7dGhpcy50ZW1wbGF0ZT1fLkZuKCgpPT5kb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0aGlzLkFhKCkpKX1WbShhKXt0aGlzLlpjPWEuZ2V0KF8uT2RlKX1rYSgpe3JldHVybiEwfU5hKCl7cmV0dXJuIF8uemhlKHRoaXMudGVtcGxhdGUoKSl9QWEoKXtyZXR1cm4iIn19O3ZhciBsaWUsa2llLG1pZSxuaWU7bGllPWZ1bmN0aW9uKGEpe3ZhciBiPWEuZWwuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgiQVFaOVZkIilbMF07YiYmKF8uR3JhKGIpLGEuR2EoYS53bSkhPT0wJiZfLkVvKGIpLlplKCkmJihfLlRnKGIsImNsaWNrIixjPT57Xy5CaGUoYy5ldmVudCk7a2llKGEpfSxhKSxfLlRnKGIsImNvbnRleHRtZW51IixjPT57Yy5ldmVudCYmXy5CaGUoYy5ldmVudCl9KSxiLnNldEF0dHJpYnV0ZSgiaWQiLF8uYWgoYHN1Z2dlc3Rpb24ke2EuaW5kZXh9YWN0aW9uQnRuJHthLkFhLmxlbmd0aH1gKSksYS5BYS5wdXNoKHtlbGVtZW50OmIsSFk6KCk9PntraWUoYSl9fSkpKX07a2llPWZ1bmN0aW9uKGEpe3ZhciBiPXt3bTphLndtLFQ1YjphLkdhKGEud20pLHhFYjpfLkVvKGEuZWwpfTtfLlhnKGEuZWwsIk5PZzlMIixiLCExKX07Cm1pZT1mdW5jdGlvbihhKXthLndhIT09LTEmJmEuQWFbYS53YV0uZWxlbWVudC5jbGFzc0xpc3QucmVtb3ZlKCJMdnF6UiIpO2Eud2E9LTF9O25pZT1mdW5jdGlvbihhLGIpe21pZShhKTthLndhPWI7Yj1hLkFhW2JdLmVsZW1lbnQ7Yi5jbGFzc0xpc3QuYWRkKCJMdnF6UiIpO18uWGcoYS5lbCwiaEJFSVZiIixuZXcgXy5tSyhhLmluZGV4LGEud20sMSxiLmlkKSl9OwpfLm9pZT1jbGFzcyBleHRlbmRzIF8uRGhle2NvbnN0cnVjdG9yKGEsYixjLGQpe3N1cGVyKGEsYixjLGQpO3RoaXMud2E9LTE7dGhpcy5BYT1bXTtfLlRnKHRoaXMuZWwsIm1vdXNlb3ZlciIsdGhpcy5CYSx0aGlzKTtfLktoZSYmXy5UZyh0aGlzLmVsLCJwb2ludGVyZG93biIsdGhpcy5vblBvaW50ZXJEb3duLHRoaXMpO2xpZSh0aGlzKX1vblBvaW50ZXJEb3duKGEpe2lmKCFfLmNpZXx8IXRoaXMuQWEuc29tZShjPT5jLmVsZW1lbnQuY29udGFpbnMoYS50YXJnZXRFbGVtZW50LmVsKCkpKSl7dmFyIGI9YS5ldmVudDshYi5pc1ByaW1hcnl8fGIuYnV0dG9uIT09MHx8Yi5hbHRLZXl8fGIuY3RybEtleXx8Yi5tZXRhS2V5fHxiLnNoaWZ0S2V5fHxfLlhnKHRoaXMuZWwsImFjYjdxYiIsdGhpcy53bSwhMCl9fUdhKGEpe3JldHVybiBpaWUoYSk/MTowfWVudGVyKCl7dGhpcy5lbC5zY3JvbGxJbnRvVmlldyghMSk7Xy5YZyh0aGlzLmVsLCJoQkVJVmIiLG5ldyBfLm1LKHRoaXMuaW5kZXgsCnRoaXMud20pKX1leGl0KCl7bWllKHRoaXMpfW5leHQoKXtpZih0aGlzLndhKzE+PXRoaXMuQWEubGVuZ3RoKXJldHVybiBtaWUodGhpcyksITA7bmllKHRoaXMsdGhpcy53YSsxKTtyZXR1cm4hMX1wcmV2aW91cygpe2lmKHRoaXMud2E9PT0tMSlyZXR1cm4hMDt0aGlzLndhPT09MD8obWllKHRoaXMpLF8uWGcodGhpcy5lbCwiaEJFSVZiIixuZXcgXy5tSyh0aGlzLmluZGV4LHRoaXMud20pKSk6bmllKHRoaXMsdGhpcy53YS0xKTtyZXR1cm4hMX11cCgpe3JldHVybiEwfWtjYSgpe3JldHVybiEwfUJhKCl7Xy5YZyh0aGlzLmVsLCJoQkVJVmIiLG5ldyBfLm1LKHRoaXMuaW5kZXgsdGhpcy53bSwwKSl9WGMoYSl7dGhpcy53YSE9PS0xJiZhLmV2ZW50LmtleUNvZGU9PT0xMz8odGhpcy5BYVt0aGlzLndhXS5IWSgpLF8uWGcodGhpcy5lbCwiaEJFSVZiIixuZXcgXy5tSygtMSkpKTpzdXBlci5YYyhhKX19O18ucGllPWNsYXNzIGV4dGVuZHMgamlle3dhKCl7cmV0dXJuIDF9QWEoKXtyZXR1cm4iWU1YZSJ9cmVuZGVyKGEsYixjKXt2YXIgZD1fLkVvKGEpLGU9Xy5BbyhfLkFvKGQsIi5wY1RrU2MiKSwiLndNNlc3ZCIpLGY9dGhpcy5JYShiKSxnPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoIlNQQU4iLnRvU3RyaW5nKCkpO2UuZW1wdHkoKS5hcHBlbmQoZyk7Zj1mP18uS2MoZik6Xy4kbDtfLmVkKGcsZik7ZS50b2dnbGVDbGFzcygiV2dnUUdkIixpaWUoYikpO2QucmVtb3ZlQ2xhc3MoInRLaExMYiIpO2U9Xy5BbyhkLCIuc2JpYyIpO3RoaXMuUGEoZSxiKTtlPV8uQW8oZCwiLkNsSjlZYiIpO2UuZWwoKSYmKChmPXRoaXMuS2EoYikpPyhnPV8uQW8oZSwiLmRLVTdzYyIpLGcuZW1wdHkoKSxmPWY/Xy5LYyhmKTpfLiRsLF8uZWQoZy5lbCgpLGYpLGcucmVtb3ZlQ2xhc3MoImJ3cXlLZSIpLGcucmVtb3ZlQ2xhc3MoInBxTnR3ZiIpLF8uZWllKGIpP2cuYWRkQ2xhc3MoImJ3cXlLZSIpOmcuYWRkQ2xhc3MoInBxTnR3ZiIpLAplLnNob3coKSxfLkFvKGQsIi5DbEo5WWIgLnpqS1NzYiIpLnRvZ2dsZShfLllKKGIsInphbiIsITEpKSk6ZS5oaWRlKCkpO2QudG9nZ2xlQ2xhc3MoInNicmUiLHRoaXMuRTlhKGIpKTtkLnRvZ2dsZUNsYXNzKCJOTVY2cyIsYi5rYSgpLmluY2x1ZGVzKDM4MSkpO3RoaXMuT2EoZCxiKTsoZT1hLnF1ZXJ5U2VsZWN0b3IoIi5nSmgxOGIiKSkmJnRoaXMuUmEoZSk7ZC50b2dnbGVDbGFzcygieU1BRWNmIixiLmthKCkuaW5jbHVkZXMoMzU2KXx8Yi5rYSgpLmluY2x1ZGVzKDUxNikpO2U9Xy5BbyhfLkFvKGQsIi5wY1RrU2MiKSwiLndNNlc3ZCIpLmVsKCk7Zz1fLkFvKF8uQW8oZCwiLnBjVGtTYyIpLCIuQ2xKOVliIikuZWwoKTtpZihkPV8uQW8oZCwiLmxublZTZSIpLmVsKCkpZC5zZXRBdHRyaWJ1dGUoImlkIixfLmRpZShjKSksZC5zZXRBdHRyaWJ1dGUoImFyaWEtbGFiZWwiLF8uWEooYikpLGQuc2V0QXR0cmlidXRlKCJhcmlhLWRlc2NyaXB0aW9uIixfLkpjZShiKSk7ZSYmXy5TZChlLAoicHJlc2VudGF0aW9uIik7ZyYmXy5TZChnLCJwcmVzZW50YXRpb24iKTtyZXR1cm4gdGhpcy5vYShhLGIsYyl9b2EoYSxiLGMpe2E9bmV3IF8ub2llKGEsYixjLHRoaXMuWmMpO3JldHVybiBuZXcgXy5HaGUoYSxhKX1QYShhLGIpe3ZhciBjLGQ9Xy5rTGI/KGM9YS5lbCgpKT09bnVsbD92b2lkIDA6Yy5xdWVyeVNlbGVjdG9yKCJzdmciKTpudWxsO18ud09hKGEsInNiaWMiKTt2YXIgZT1fLllKKGIsInpmIiw0MyksZj10aGlzLkJhKGIpO2Y/KGEuZWwoKS5zZXRBdHRyaWJ1dGUoImRhdGEtc3JjIixmKSxiPW5ldyBJbWFnZSxhLmFkZENsYXNzKCJ2WU9rYmUiKSxkJiZfLmhpZShkLDUzKSxfLmhlKGIsImxvYWQiLCgpPT57YS55YygiZGF0YS1zcmMiKT09PWYmJmEuc2V0U3R5bGUoImJhY2tncm91bmQtaW1hZ2UiLGB1cmwoJHtmfSlgKX0pLF8uaGUoYiwiZXJyb3IiLCgpPT57YS55YygiZGF0YS1zcmMiKT09PWYmJihhLnNldFN0eWxlKCJiYWNrZ3JvdW5kIiwiIiksYS5zZXRTdHlsZSgiYmFja2dyb3VuZC1pbWFnZSIsCiIiKSxkJiZfLmhpZShkLGUpLGEuYWRkQ2xhc3MoYHNiJHtlfWApKX0pLGIuc3JjPWYpOihfLkRvKGEsImRhdGEtc3JjIiksYS5zZXRTdHlsZSgiYmFja2dyb3VuZCIsIiIpLGEuc2V0U3R5bGUoImJhY2tncm91bmQtaW1hZ2UiLCIiKSxkJiZfLmhpZShkLGUpLGEuYWRkQ2xhc3MoYHNiJHtlfWApKX1FOWEoYSl7cmV0dXJuIGEuZ2V0VHlwZSgpPT09NDZ9UmEoYSl7YS5oaWRkZW49ITA7Xy5VbShhKX12eigpe3JldHVybiAwfU9hKGEsYil7YT1fLkFvKGEsIi5BUVo5VmQiKTthLnRvZ2dsZShpaWUoYikpO2lpZShiKSYmKF8uQW8oYSwiLnNiYWkiKS5lbCgpLmNsYXNzTmFtZT0ic2JhaSBKQ0hwY2IiLGI9Xy5YSihiKSxiPV8ueGhlLmZvcm1hdCh7c3VnZ2VzdGlvblRleHQ6Yn0pLGEuZWwoKS5zZXRBdHRyaWJ1dGUoImFyaWEtbGFiZWwiLGIpKX1CYShhKXtyZXR1cm4gXy5LY2UoYSl9SWEoYSl7cmV0dXJuIF8uTWRlKGEpfUthKGEpe3JldHVybiBfLkpjZShhKX19O18ucWllPWNsYXNzIGV4dGVuZHMgXy5vaWV7R2EoKXtyZXR1cm4gMH19Owp9Y2F0Y2goZSl7Xy5fRHVtcEV4Y2VwdGlvbihlKX0KdHJ5ewpfLnJpZT0hIShfLk9pWzE5XSYyMDQ4KTtfLnNpZT0hIShfLk9pWzE5XSY0MDk2KTtfLnRpZT0hIShfLk9pWzE5XT4+MTUmMSk7Cn1jYXRjaChlKXtfLl9EdW1wRXhjZXB0aW9uKGUpfQp0cnl7Cl8ucGxlPV8ua2MoIkh2cmV1ZSIsW18uZEtdKTsKfWNhdGNoKGUpe18uX0R1bXBFeGNlcHRpb24oZSl9CnRyeXsKXy5nbWU9Xy5rYygiVUVTaHdjIixbXy5QcV0pOwp9Y2F0Y2goZSl7Xy5fRHVtcEV4Y2VwdGlvbihlKX0KdHJ5ewpfLnptZT1fLmtjKCJZSG5VQmMiLFtfLmdtZSxfLlBxXSk7Cn1jYXRjaChlKXtfLl9EdW1wRXhjZXB0aW9uKGUpfQp0cnl7Cl8uSW1lPV8ua2MoInptcHRIZiIsW18uUHFdKTsKfWNhdGNoKGUpe18uX0R1bXBFeGNlcHRpb24oZSl9CnRyeXsKXy5yc2U9Xy5rYygiY25qRUNmIixbXy5QcSxfLmp2LF8uWnEsXy5kSyxfLkNkZSxfLlllZSxfLmtnZSxfLnNuZSxfLlokZCxfLklnZSxfLnJsZSxfLldrZSxfLkpsZSxfLkF5LF8uYmdlLF8uUGxlXSk7Cn1jYXRjaChlKXtfLl9EdW1wRXhjZXB0aW9uKGUpfQp0cnl7CnZhciBzc2U7c3NlPWZ1bmN0aW9uKGEsYil7Zm9yKHZhciBjOyEoYz1hLm5leHQoKSkuZG9uZTspYihjLnZhbHVlKX07Xy50c2U9ZnVuY3Rpb24oYSxiKXt2YXIgYz1uZXcgU2V0KGEpO3NzZShiW1N5bWJvbC5pdGVyYXRvcl0oKSxkPT5jLmRlbGV0ZShkKSk7cmV0dXJuIGN9Owp9Y2F0Y2goZSl7Xy5fRHVtcEV4Y2VwdGlvbihlKX0KdHJ5ewpfLnVzZT1uZXcgXy5jZWU7CnZhciB2c2U9WzQ2XSx3c2U9InphYiB6cCB6aCB6aSB6cyBsbSIuc3BsaXQoIiAiKSx4c2U9Y2xhc3N7Y29uc3RydWN0b3IoKXt0aGlzLmthPW5ldyBNYXB9aGFzKGEpe3JldHVybiB0aGlzLmthLmhhcyhhKX1nZXQoYSl7cmV0dXJuIHRoaXMua2EuZ2V0KGEpfWhyYSgpe3RoaXMua2EuY2xlYXIoKX19LHlzZT1uZXcgeHNlO3ZhciB6c2U9ZnVuY3Rpb24oYSxiKXtyZXR1cm4gXy5sayhhLDQsYil9LEFzZT1mdW5jdGlvbihhLGIpe18udGgoYSw1LGIpfSxCc2U9Y2xhc3MgZXh0ZW5kcyBfLmx7Y29uc3RydWN0b3IoYSl7c3VwZXIoYSl9Z2V0UXVlcnkoKXtyZXR1cm4gXy50KHRoaXMsMSl9c2V0UXVlcnkoYSl7cmV0dXJuIF8uZmgodGhpcywxLGEpfXJXKGEpe3JldHVybiBfLndiKHRoaXMsMixfLmliLF8ub2goYSkpfXppKCl7cmV0dXJuIF8ueGUodGhpcyw0KX19O3ZhciBDc2U9ZnVuY3Rpb24oYSl7cmV0dXJuIF8ubWgoYSxCc2UsMSxfLm9oKCkpfSxEc2U9Y2xhc3MgZXh0ZW5kcyBfLmx7Y29uc3RydWN0b3IoYSl7c3VwZXIoYSl9fTt2YXIgRXNlPVswLF8uRixbMCxfLkUsXy5RbCxfLldrLF8uWWwsXy5DLF8uaWxdXTt2YXIgRnNlPV8uWGIoRHNlLEVzZSksR3NlPV8uWWIoRXNlKTt2YXIgSnNlPWZ1bmN0aW9uKGEsYil7aWYoYiYmYS5pc0F2YWlsYWJsZSl7dmFyIGM9Xy5BY2UoYik7dHJ5e2xldCBkPUhzZShhKSxlPUNzZShkKS5zbGljZSgpLGY9ZS5maW5kSW5kZXgoZz0+Zy5nZXRRdWVyeSgpPT09Yyk7ZjwwfHwoYS54Yy5rYSsrLGUuc3BsaWNlKGYsMSksXy5IaihkLDEsZSksSXNlKGEsZCkpfWNhdGNoKGQpe319fSxMc2U9ZnVuY3Rpb24oYSl7Xy5XbihuZXcgXy5IZSh3aW5kb3cubG9jYXRpb24uaHJlZiksImdzX3NzIikhPT0iMSImJktzZShhLGEuQWEpfSxLc2U9ZnVuY3Rpb24oYSxiLGM9W10sZD17fSl7aWYoYS5rYSYmYS5pc0F2YWlsYWJsZSYmKGI9Xy5BY2UoYikudHJpbSgpKSl0cnl7bGV0IGU9SHNlKGEpLGY9Q3NlKGUpLGc9W10saD1bXTtmb3IobGV0IHIgb2YgZilyLmdldFF1ZXJ5KCk9PT1iP2cucHVzaChyKTpoLnB1c2gocik7bGV0IGs9RGF0ZS5ub3coKSxtPWcubGVuZ3RoPjA/Z1tnLmxlbmd0aC0xXTpuZXcgQnNlO0FzZSh6c2UobS5zZXRRdWVyeShiKSwKbS56aSgpKzEpLGspO01zZShtLGQpO2MubGVuZ3RoPjAmJl8uemIobSwyLGMsXy5oYik7bGV0IG49YS5FSyhtLnppKCksMCkscD1oLmZpbmRJbmRleChyPT57cj1hLkVLKHIuemkoKSxrLV8udGUoXy5EZShyLDUpKSk7cmV0dXJuIG4+PXJ9KTtoLnNwbGljZShwLDAsbSk7Xy5IaihlLDEsaCk7SXNlKGEsZSl9Y2F0Y2goZSl7fX0sSHNlPWZ1bmN0aW9uKGEpe3JldHVybihhPWEuc3RvcmFnZS5nZXQoTnNlKGEpKSk/RnNlKF8uUWEoYSkpOm5ldyBEc2V9LE1zZT1mdW5jdGlvbihhLGIpe2lmKGImJk9iamVjdC5lbnRyaWVzKGIpLmxlbmd0aD4wKXthPV8uVWsoYSwzKTtmb3IobGV0IFtjLGRdb2YgT2JqZWN0LmVudHJpZXMoYikpe2I9YztsZXQgZT1kO2UmJmEuc2V0KGIsXy5mYWIoZSkpfX19LElzZT1mdW5jdGlvbihhLGIpe3ZhciBjPUNzZShiKS5zbGljZSgpO2Muc3BsaWNlKDEwMCk7Xy5IaihiLDEsYyk7YS5zdG9yYWdlLnNldChOc2UoYSksXy5PYShHc2UoYiksNCkpfSxPc2U9ZnVuY3Rpb24oYSwKYixjPVtdLGQ9e30pe3ZhciBlPW5ldyBfLkxjZTtmb3IobGV0IFtmLGddb2YgT2JqZWN0LmVudHJpZXMoZCkpXy5DaGUoZSxmLGcpO2E9Xy5OY2UoZS5CYyhiLCEwLGEpLkFjKDQxKSwuLi5jKTtyZXR1cm4gXy5DaGUoYSwiemYiLDI3KS5idWlsZCgpfSxOc2U9ZnVuY3Rpb24oYSl7dmFyIGIsYz0oYj1hLkxrKT09bnVsbD92b2lkIDA6Yi5NXztyZXR1cm4gYz9gc2Jfd2l6LmRocC4ke2MudG9TdHJpbmcoKX1gOmBzYl93aXouZGhwLiR7YS5kYXRhc2V0fWB9LFBzZT1jbGFzc3tjb25zdHJ1Y3RvcihhKXt0aGlzLnhjPWE7dGhpcy5kYXRhc2V0PSIiO3RoaXMuRWE9dGhpcy5CYT0wO3RoaXMuc3RvcmFnZT1uZXcgXy5oZjt0aGlzLmlzQXZhaWxhYmxlPXRoaXMuc3RvcmFnZS5pc0F2YWlsYWJsZSgpO3RoaXMuQWE9IiI7dGhpcy5rYT0hMDt0aGlzLkxrPW51bGw7dGhpcy5vYT1iPT57aWYodGhpcy5rYSl7dmFyIGM9Yi53bTtpZihjKXtpZighXy5ZSihjLCJ6byIsIiIpKXt2YXIgZD1Lc2U7CmI9Yi5xdWVyeTt2YXIgZT1jLmthKCk7bGV0IGY9e307aWYodnNlLmluY2x1ZGVzKGMuZ2V0VHlwZSgpKSlmb3IobGV0IGcgb2Ygd3NlKWZbZ109Xy5ZSihjLGcpO2QodGhpcyxiLGUsZil9fWVsc2UgS3NlKHRoaXMsYi5xdWVyeSl9fTt0aGlzLkdhPWI9PntKc2UodGhpcyxiKX07dGhpcy5JYT1iPT57dGhpcy5rYT1iO3RoaXMua2F8fCh0aGlzLnhjLm9hKyssdGhpcy5zdG9yYWdlLmNsZWFyKCkpfX1jb25maWd1cmUoYSl7dGhpcy5kYXRhc2V0PWEuQmEoKTt0aGlzLkJhPWEuSWIoKTt0aGlzLkVhPWEuSmIoKTt0aGlzLkFhPWEud2EoKTtfLkpkZSgoKT0+e0xzZSh0aGlzKX0pfVZtKGEpe3ZhciBiPWEuZ2V0KF8uTmRlKTtiJiYoYi5iSCgxLHRoaXMub2EpLGIuYkgoMyx0aGlzLm9hKSxiLmJIKDIsdGhpcy5HYSksYi5iSCgxMSx0aGlzLklhKSk7dGhpcy5Maz1hLmdldChfLlVkZSk7THNlKHRoaXMpfXdhKGEsYil7aWYoIXRoaXMua2EpcmV0dXJuIGE7dmFyIGM9dGhpcy5zZWFyY2goYiwKYj90aGlzLkJhOnRoaXMuRWEpLGQ9YS5rYSgpO2ZvcihsZXQgZz1jLmxlbmd0aC0xO2c+PTA7LS1nKXtmb3IobGV0IGg9MDtoPGQubGVuZ3RoOysraCl7dmFyIGU9ZFtoXTtpZihfLlhKKGUpPT09Xy5YSihjW2ddKSl7ZC5zcGxpY2UoaCwxKTtlLmdldFR5cGUoKSE9PTQ2fHxfLllKKGNbZ10sInphYiIpJiYhXy5ZSihlLCJ6YWIiKXx8KGNbZ109T3NlKGIsXy5YSihjW2ddKSxlLmthKCkse3poOl8uWUooZSwiemgiKSx6aTpfLllKKGUsInppIiksenM6Xy5ZSihlLCJ6cyIpLHpwOl8uWUooZSwienAiKSx6YWI6Xy5ZSihlLCJ6YWIiKX0pKTticmVha31lbHNle3ZhciBmPWNbZ107Xy5EY2UoXy5NZGUoZSkpPT09Xy5EY2UoXy5NZGUoZikpJiZfLkRjZShfLkpjZShlKSk9PT1fLkRjZShfLkpjZShmKSkmJl8uS2NlKGUpPT09Xy5LY2UoZikmJmQuc3BsaWNlKGgsMSl9fWQudW5zaGlmdChjW2ddKX1yZXR1cm4gXy55ZWUoYSxkKX1zZWFyY2goYSxiKXtpZighdGhpcy5pc0F2YWlsYWJsZXx8CiF0aGlzLmthKXJldHVybltdO3RyeXtsZXQgYz1fLkFjZShhKSxkPUNzZShIc2UodGhpcykpO2E9W107bGV0IGU9RGF0ZS5ub3coKSxmPW5ldyBTZXQ7Zm9yKGxldCBbZyxoXW9mIGQuZW50cmllcygpKXtsZXQgaz1nLG09aDtpZighbS5nZXRRdWVyeSgpLnN0YXJ0c1dpdGgoYykpY29udGludWU7aWYobS5nZXRRdWVyeSgpPT09Yyljb250aW51ZTtsZXQgbj1fLlVrKG0sMyk7aWYobi5zaXplPjApe2xldCByPUpTT04uc3RyaW5naWZ5KFsuLi5uXSk7aWYoZi5oYXMocikpY29udGludWU7Zi5hZGQocil9bGV0IHA9ZS1fLnRlKF8uRGUobSw1KSk7YS5wdXNoKHtpbmRleDprLFQ2OnRoaXMuRUsobS56aSgpLHApfSl9YS5zb3J0KChnLGgpPT5oLlQ2LWcuVDYpO2Euc3BsaWNlKGIpO3JldHVybiBhLm1hcCgoe2luZGV4Omd9KT0+e2c9ZFtnXTt2YXIgaD17fTtmb3IobGV0IFtrLG1db2YgXy5VayhnLDMpKWhba109Xy5nYWIobSk7cmV0dXJuIE9zZShjLGcuZ2V0UXVlcnkoKSxnLnJXKCksaCl9KX1jYXRjaChjKXtyZXR1cm5bXX19RUsoYSwKYil7cmV0dXJuIE1hdGgucG93KGEsMS4xNSkqNkU0LyhiKzZFNCl9fTt2YXIgUXNlPWNsYXNze2NvbnN0cnVjdG9yKCl7dGhpcy5vYT10aGlzLmthPTB9ZUdhKCl7dmFyIGE9W107aWYodGhpcy5rYT4wKXt2YXIgYj1uZXcgXy5sSztfLmtLKGIsMTkpO18uZmgoYiwyLHRoaXMua2EudG9TdHJpbmcoKSk7YS5wdXNoKGIpfXRoaXMub2E+MCYmKGI9bmV3IF8ubEssXy5rSyhiLDYxKSxfLmZoKGIsMix0aGlzLm9hLnRvU3RyaW5nKCkpLGEucHVzaChiKSk7cmV0dXJuIGF9TGphKCl7fXJlc2V0KCl7dGhpcy5vYT10aGlzLmthPTB9fTt2YXIgUnNlPWNsYXNze2NvbnN0cnVjdG9yKGEpe3RoaXMua2E9YX12eigpe3JldHVybiA2MH1PVihhLGIpe3JldHVybiB0aGlzLmthLndhKGEsYi5nZXRRdWVyeSgpKX19O2lmKF8uUGllKXtsZXQgYT1uZXcgUXNlLGI9bmV3IFBzZShhKSxjPV8uYWVlKF8uemllKF8uJEoobmV3IF8uY2VlLGIpLG5ldyBSc2UoYikpLGEpO18uRWllKF8udXNlLGMpO2lmKHlzZS5rYS5oYXMoIndpelByb3RvRGV2aWNlSGlzdG9yeU1vZCIpKXRocm93IEVycm9yKCJJbGB3aXpQcm90b0RldmljZUhpc3RvcnlNb2QiKTt5c2Uua2Euc2V0KCJ3aXpQcm90b0RldmljZUhpc3RvcnlNb2QiLGMpfTsKXy5hZWUoXy51c2UsbmV3IGNsYXNze2NvbnN0cnVjdG9yKCl7dGhpcy5rYT1uZXcgTWFwfWVHYSgpe3ZhciBhPVtdO2ZvcihsZXQgWyxiXW9mIHRoaXMua2EpYS5wdXNoKGIpO3JldHVybiBhfUxqYShhLGIpe2E9Yi5vYSgiYXQiLFtdKTtmb3IobGV0IGQgb2YgYSl7YT1kWyI0Il07aWYoZFsiMiJdKWlmKGI9ZFsiMiJdLHRoaXMua2EuaGFzKGEpKWI9dGhpcy5rYS5nZXQoYSksXy5naChiLDIpO2Vsc2V7dmFyIGM9bmV3IF8ubEs7Xy5rSyhjLGEpO18uZmgoYywyLGIucmVwbGFjZSgvOi9naSwiLCIpKTt0aGlzLmthLnNldChhLGMpfWRbIjMiXSYmKGI9ZFsiMyJdLHRoaXMua2EuaGFzKGEpPyhhPXRoaXMua2EuZ2V0KGEpLF8uZGsoYSwzKSk6KGM9bmV3IF8ubEssXy5rSyhjLGEpLF8ueWhlKGMsYiksdGhpcy5rYS5zZXQoYSxjKSkpfX1yZXNldCgpe3RoaXMua2EuY2xlYXIoKX19KTsKdmFyIFlzZT1jbGFzc3tjb25zdHJ1Y3Rvcigpe3RoaXMua2E9WHNlfWJSKGEpe3ZhciBiPXRoaXMua2E7aWYoYi5rYS5pc0F2YWlsYWJsZSgpKXt2YXIgYz1OdW1iZXIoYi5rYS5nZXQoInNiX3dpei5xYyIpKTtjPWlzTmFOKGMpPzA6Y31lbHNlIGM9MDsoYzxiLm9hfHxiLm9hPT09LTEpJiZhLmdldFF1ZXJ5KCkubGVuZ3RoPT09MCYmYS5rYSgibm9sc2J0IiwiMSIpO3JldHVybiAxfX07dmFyIFhzZT1uZXcgY2xhc3N7Y29uc3RydWN0b3IoKXt0aGlzLmthPW5ldyBfLmhmO3RoaXMub2E9MDt0aGlzLndhPSgpPT57aWYodGhpcy5rYS5pc0F2YWlsYWJsZSgpKXtsZXQgYT1OdW1iZXIodGhpcy5rYS5nZXQoInNiX3dpei5xYyIpKTt0aGlzLmthLnNldCgic2Jfd2l6LnFjIixpc05hTihhKT8iMSI6U3RyaW5nKGErMSkpfX19Y29uZmlndXJlKGEpe3RoaXMub2E9Xy54ZShhLDE5KX1WbShhKXtpZihhPWEuZ2V0KF8uTmRlKSlhLmJIKDMsdGhpcy53YSksYS5iSCgxLHRoaXMud2EpfX07Xy4kSihfLnVzZSxYc2UpO18uYUsoXy51c2UsbmV3IFlzZSk7Cn1jYXRjaChlKXtfLl9EdW1wRXhjZXB0aW9uKGUpfQp0cnl7Cl8uTE1iPSEhKF8uT2lbMTFdJjEpO18uTU1iPSEhKF8uT2lbMTFdJjIpO18uTk1iPSEhKF8uT2lbMTFdJjE2KTtfLk9NYj0hIShfLk9pWzExXSYzMik7Xy5QTWI9ISEoXy5PaVsxMV0mNjQpO18uUU1iPSEhKF8uT2lbMTFdJjEyOCk7Xy5STWI9ISEoXy5PaVsxMV0mNDA5Nik7Xy5TTWI9ISEoXy5PaVsxMV0mODE5Mik7Xy5ydj0hIShfLk9pWzExXT4+MTQmMSk7Xy5zdj0hIShfLk9pWzExXT4+MTYmMSk7Xy5UTWI9ISEoXy5PaVsxMV0+PjE3JjEpO18uVU1iPSEhKF8uT2lbMTFdPj4xOCYxKTtfLlZNYj0hIShfLk9pWzExXT4+MTkmMSk7Xy5XTWI9ISEoXy5PaVsxMV0+PjIwJjEpO18uWE1iPSEhKF8uT2lbMTFdPj4yMyYxKTtfLllNYj0hIShfLk9pWzExXT4+MjQmMSk7Xy5aTWI9ISEoXy5PaVsxMV0+PjI1JjEpO18uJE1iPSEhKF8uT2lbMTFdPj4yOCYxKTtfLmFOYj0hIShfLk9pWzEyXSYxKTsKfWNhdGNoKGUpe18uX0R1bXBFeGNlcHRpb24oZSl9CnRyeXsKXy5jeGU9YXN5bmMoKT0+UHJvbWlzZS5yZXNvbHZlKG51bGwpOwp9Y2F0Y2goZSl7Xy5fRHVtcEV4Y2VwdGlvbihlKX0KdHJ5ewoKdmFyIEt5ZT1mdW5jdGlvbigpe3ZhciBhPW5hdmlnYXRvci51c2VyQWdlbnQ7cmV0dXJuL2Nocm9tZS9pLnRlc3QoYSkmJi9hbmRyb2lkL2kudGVzdChhKX0sTHllPWFzeW5jIGZ1bmN0aW9uKCl7dmFyIGE9KDAsXy5NZikoKSxiPWEoKTthPWEoMSk7dHJ5e2xldCBjLGQ7cmV0dXJuKGQ9YShhd2FpdCBiKChjPW5hdmlnYXRvci5wZXJtaXNzaW9ucyk9PW51bGw/dm9pZCAwOmMucXVlcnkoe25hbWU6Im1pY3JvcGhvbmUifSkpKSk9PW51bGw/dm9pZCAwOmQuc3RhdGV9ZmluYWxseXtiKCl9fSxNeWU9ZnVuY3Rpb24oYSxiKXt2YXIgYz0hYXx8YS50cmltKCk9PT0iIixkPSFifHxiLnRyaW0oKT09PSIiO2lmKGMmJmQpcmV0dXJuIiI7aWYoYylyZXR1cm4gYjtpZihkKXJldHVybiBhO2M9YS5lbmRzV2l0aCgiICIpO2Q9Yi5zdGFydHNXaXRoKCIgIik7cmV0dXJuIGMmJmQ/YStiLnRyaW1TdGFydCgpOmN8fGQ/YStiOmErIiAiK2J9O18uY3hlPWFzeW5jIGZ1bmN0aW9uKHtkTWE6YSxESmE6Yix5bmE6Yyxtc2E6ZCxvTWE6ZSxpZWI6ZixvZWI6ZyxuZWI6aCx0UmE6ayxsYW5ndWFnZUNvZGU6bSxuMWE6bn0pe3ZhciBwPSgwLF8uTWYpKCkscj1wKCk7cD1wKDEpO3RyeXtpZighd2luZG93LndlYmtpdFNwZWVjaFJlY29nbml0aW9uKXJldHVybiBudWxsO2lmKCFfLkxNYiYmcChhd2FpdCByKEx5ZSgpKSk9PT0iZGVuaWVkIilyZXR1cm4gYigpLG51bGw7bGV0IHg9a3x8MTUwMCx6PSFLeWUoKSxCLEg9bnVsbCxKPSExLE49ITEsUT0iIixaPSIiLFk9bnVsbCxkYT1uZXcgd2luZG93LndlYmtpdFNwZWVjaFJlY29nbml0aW9uO2RhLmNvbnRpbnVvdXM9ITA7ZGEuaW50ZXJpbVJlc3VsdHM9ITA7aWYobSlkYS5sYW5nPW07ZWxzZXtsZXQgY2E7aWYoKGNhPWRvY3VtZW50LmRvY3VtZW50RWxlbWVudCk9PW51bGw/MDpjYS5sYW5nKXtsZXQgaGE9ZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50Lmxhbmc7ZGEubGFuZz1oYS5zcGxpdCgiLSIpLmxlbmd0aD09PQoxP2Ake2hhfS1VU2A6aGF9ZWxzZSBkYS5sYW5nPSJlbi1VUyJ9ZGEubWF4QWx0ZXJuYXRpdmVzPTE7ZGEub25lcnJvcj1jYT0+e2NhLmVycm9yPT09ImFib3J0ZWQifHxfLmFOYiYmTnx8KGNhLmVycm9yPT09Im5vdC1hbGxvd2VkInx8Y2EuZXJyb3I9PT0ic2VydmljZS1ub3QtYWxsb3dlZCI/YigpOmMoKSxOPSEwKX07ZGEub25lbmQ9KCk9PntCJiZjbGVhclRpbWVvdXQoQik7Snx8Tnx8KFk/KEo9ITAsbj09bnVsbHx8bihZLFopKTpfLmFOYiYmKFo/KEo9ITAsZShaKSk6KGMoKSxOPSEwKSkpfTtkYS5vbnN0YXJ0PSgpPT57Tnx8YSgpfTtkYS5vbnNvdW5kc3RhcnQ9KCk9PntmPT1udWxsfHxmKCl9O2RhLm9uc3BlZWNoc3RhcnQ9KCk9PntnPT1udWxsfHxnKCl9O2RhLm9uc3BlZWNoZW5kPSgpPT57aD09bnVsbHx8aCgpfTtkYS5vbnJlc3VsdD1jYT0+e2lmKCFKJiYhTil7QiYmY2xlYXJUaW1lb3V0KEIpO3ZhciBoYT0iIjtmb3IobGV0IGthPWNhLnJlc3VsdEluZGV4O2thPGNhLnJlc3VsdHMubGVuZ3RoO2thKyspe2xldCB0YT0KY2EucmVzdWx0c1trYV0seWEsWGEsRWE9KFhhPSh5YT10YVswXSk9PW51bGw/dm9pZCAwOnlhLnRyYW5zY3JpcHQpIT1udWxsP1hhOiIiO3omJnRhLmlzRmluYWw/UT1NeWUoUSxFYSk6aGE9TXllKGhhLEVhKX1aPU15ZShRLGhhKTtCPXNldFRpbWVvdXQoKCk9PntKfHwoSj0hMCxkYS5hYm9ydCgpLGUoWikpfSx4KTtZfHxkKFopfX07ZGEuc3RhcnQoKTtyZXR1cm57YWJvcnQ6KCk9PntkYS5hYm9ydCgpO0ImJmNsZWFyVGltZW91dChCKTtIJiYoY2xlYXJUaW1lb3V0KEgpLEg9bnVsbCk7WT1udWxsfSxMYWE6Y2E9PntZPWNhO0ImJmNsZWFyVGltZW91dChCKTtIPXNldFRpbWVvdXQoKCk9PntkYS5zdG9wKCk7SD1udWxsfSw1MDApfX19ZmluYWxseXtyKCl9fTsKfWNhdGNoKGUpe18uX0R1bXBFeGNlcHRpb24oZSl9CnRyeXsKXy51KCJjbmpFQ2YiKTsKdmFyIEtHZSxNR2UsTkdlLFBHZSxRR2UsVEdlLFVHZSxWR2UsV0dlLHRIZSx2SGUsd0hlLHhIZSx5SGUsekhlLEFIZSxCSGUsQ0hlLERIZSxGSGUsR0hlLEhIZSxJSGUsSkhlLEtIZSxPR2UsTEhlLE1IZSxOSGUsT0hlLEpHZSxJR2UsUEhlLFFIZSxSSGUsU0hlLFRIZSxSR2UsU0dlLFVIZTtLR2U9ZnVuY3Rpb24oYSxiKXtmb3IodmFyIGM9W10sZCxlPTA7ZD1fLmx4YyhhLnN1YnN0cmluZyhlKSk7KWMucHVzaChkKSxlPWEuaW5kZXhPZihkLGUpK2QubGVuZ3RoO2E9W107Zm9yKGxldCBmIG9mIGMuc2xpY2UoMCxiKSliPV8uVGFlKF8uZGRlKDUpLDEpLGEucHVzaChfLnhMYj9uZXcgSUdlKGIsZik6bmV3IEpHZShiLGYpKTtyZXR1cm4gYX07TUdlPWZ1bmN0aW9uKCl7dmFyIGE9bmV3IFNldChfLndhZSk7TEdlJiZhLmFkZCgiYXBwbGljYXRpb24vcGRmIik7cmV0dXJuIGF9OwpOR2U9ZnVuY3Rpb24oYSxiKXtpZihhLnN0YXJ0c1dpdGgoYikpcmV0dXJuIGE9YS5sZW5ndGg9PT1iLmxlbmd0aD8iIjoiPGI+IitfLmJtKGEuc3Vic3RyaW5nKGIubGVuZ3RoKSkrIjwvYj4iLF8uYm0oYikrYTtiPWIuc3BsaXQoIiAiKTthPWEuc3BsaXQoIiAiKTt2YXIgYz0iIixkPSEwLGU9ITE7Zm9yKGxldCBmIG9mIGEpZHx8KGMrPSIgIiksYi5maW5kKGc9Pmc9PT1mKT9lJiYoYys9IjwvYj4iLGU9ITEpOmV8fChjKz0iPGI+IixlPSEwKSxjKz1fLmJtKGYpLGQ9ITE7ZSYmKGMrPSI8L2I+Iik7cmV0dXJuIGN9O1BHZT1mdW5jdGlvbihhKXt2YXIgYj1fLnhpZSgpO3JldHVybiBiPyhiPV8ubWgoYixfLkZpZSw2LF8ub2goKSkuZmluZChjPT5fLkVlKGMsMik9PT03MSkpP18ubWgoYixPR2UsMSxfLm9oKCkpLm1hcChjPT5OR2UoXy50KGMsMSksYSkpOltdOl8uTWkoImdvb2dsZS5wbWMuc2Jfd2l6LnJmcyIpfHxbXX07ClFHZT1mdW5jdGlvbihhKXtyZXR1cm4oYT1hLmdldEF0dHJpYnV0ZSgiZGF0YS12aWV3LXR5cGUiKSkmJk51bWJlcihhKT9OdW1iZXIoYSk6MH07ClRHZT1mdW5jdGlvbihhLGIsYyxkLGUpe2lmKHR5cGVvZiBhLmFuaW1hdGUhPT0iZnVuY3Rpb24ifHxfLnNsZSgpKWQoKTtlbHNle3ZhciBmPW5ldyBNYXA7Zm9yKHZhciBnIG9mIGIpZi5zZXQoZyxnLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpKTtnPWEub2Zmc2V0SGVpZ2h0fHwwO2QoKTtkPWEub2Zmc2V0SGVpZ2h0fHwwO3ZhciBoPVtdO2ZvcihsZXQgbiBvZiBiKXt2YXIgaz1mLmdldChuKTtpZihrKXtsZXQgcD1uLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO2I9ay5sZWZ0LXAubGVmdDtrPWsudG9wLXAudG9wO2I9PT0wJiZrPT09MHx8aC5wdXNoKHtlbGVtZW50Om4sZHg6YixkeTprfSl9fWEuc3R5bGUuc2V0UHJvcGVydHkoIm92ZXJmbG93IiwiaGlkZGVuIik7ZT1lP1JHZTpTR2U7dmFyIG09YS5hbmltYXRlKFt7aGVpZ2h0OmAke2d9cHhgfSx7aGVpZ2h0OmAke2R9cHhgfV0se2R1cmF0aW9uOmUuZHVyYXRpb24sZWFzaW5nOmUuZWFzaW5nLGZpbGw6ImZvcndhcmRzIn0pO20ub25maW5pc2g9CigpPT57bS5jYW5jZWwoKTthLnN0eWxlLnJlbW92ZVByb3BlcnR5KCJvdmVyZmxvdyIpfTtmb3IobGV0IHtlbGVtZW50Om4sZHg6cCxkeTpyfW9mIGgpe2xldCB4PW4uYW5pbWF0ZShbe3RyYW5zZm9ybTpgdHJhbnNsYXRlKCR7cH1weCwgJHtyfXB4KWB9LHt0cmFuc2Zvcm06Im5vbmUifV0se2R1cmF0aW9uOmUuZHVyYXRpb24sZWFzaW5nOmUuZWFzaW5nLGZpbGw6ImJvdGgifSk7eC5vbmZpbmlzaD0oKT0+e3guY2FuY2VsKCl9fWY9ZS5kdXJhdGlvbi8zO2U9ZS5kdXJhdGlvbi1mO2ZvcihsZXQgbiBvZiBjKXtsZXQgcD1uLmFuaW1hdGUoW3tvcGFjaXR5OjB9LHtvcGFjaXR5OjF9XSx7ZHVyYXRpb246ZSxkZWxheTpmLGVhc2luZzoibGluZWFyIixmaWxsOiJib3RoIn0pO3Aub25maW5pc2g9KCk9PntwLmNhbmNlbCgpfX19fTsKVUdlPWZ1bmN0aW9uKGEsYil7c3dpdGNoKGEpe2Nhc2UgNDpyZXR1cm4iS2FuIGlra2UgbGFzdGUgb3BwLiBCcnVrIGVuIGZpbCBpIGV0IGF2IGRpc3NlIGZvcm1hdGVuZTogLmF2aWYsIC5ibXAsIC5qcGVnLCAucGRmLCAucG5nLCAud2VicCI7Y2FzZSA1OnJldHVybiJGaWxlbiBlciBzdFx1MDBmOHJyZSBlbm4gMTAwXHUwMGEwTUIiO2Nhc2UgMjpyZXR1cm4gYj9hPSJEdSBoYXIgYWxsZXJlZGUgbGFzdGV0IG9wcCBlbiBmaWwgbWVkIG5hdm5ldCAiK2IrIi4iOihfLlZlKEVycm9yKCJrbCIpLHtsZXZlbDowfSksYT12b2lkIDApLGE7Y2FzZSAzOnJldHVybiBiP2E9IkR1IHByXHUwMGY4dmVyIFx1MDBlNSBsYXN0ZSBvcHAgZmxlcmUgZmlsZXIgbWVkIG5hdm5ldCAiK2IrIi4gR2kgZGVtIG55ZSBuYXZuIGZvciBcdTAwZTUgZm9ydHNldHRlLiI6KF8uVmUoRXJyb3IoImxsIikse2xldmVsOjB9KSxhPXZvaWQgMCksYTtjYXNlIDE6cmV0dXJuIk5vZW4gYXYgZmlsZW5lIGt1bm5lIGlra2UgbGFzdGVzIG9wcCwgZm9yZGkgZHUgaWtrZSBrYW4gbGFzdGUgb3BwIGZsZXJlIGVubiAxMFx1MDBhMHZlZGxlZ2cgc2FtdGlkaWcuIjsKZGVmYXVsdDpfLlZlKEVycm9yKCJubGAiK2EpLHtsZXZlbDowfSl9fTtWR2U9ZnVuY3Rpb24oYSxiKXtmb3IobGV0IGMgb2YgYS52YWx1ZXMoKSlpZihjPT09YilyZXR1cm4hMDtyZXR1cm4hMX07V0dlPWZ1bmN0aW9uKGEsYixjLGQ9ITEpe2I9Xy5EbmUoYSxiKTtmb3IobGV0IFtlLGZdb2YgYi5lbnRyaWVzKCkpe2xldCBnPWUsaD1mO2ghPT0zJiZoIT09Mnx8YyhoLGcpfVZHZShiLDEpJiZjKDEpO1ZHZShiLDQpJiZjKDQpO2QmJlZHZShiLDUpJiZjKDUpO2M9W107Zm9yKGxldCBlIG9mIGEpKGE9Yi5nZXQoZS5uYW1lKSk/ZHx8YSE9PTV8fGMucHVzaCh7ZmlsZTplLGVycm9yOjV9KTpjLnB1c2goe2ZpbGU6ZX0pO3JldHVybiBjfTsKdEhlPWZ1bmN0aW9uKGEpe3ZhciBiPV8uYmVlKF8uQ2llKF8uRGllKF8uQWllKF8uemllKF8uYUsoXy5FaWUoXy5FaWUobmV3IF8uY2VlLC4uLlhHZSksXy4kSihuZXcgXy5jZWUsbmV3IFlHZSkpLG5ldyBaR2UsbmV3ICRHZSxuZXcgYUhlKSxuZXcgYkhlKSxuZXcgY0hlKSxuZXcgXy5waWUsbmV3IGRIZSksbmV3IGVIZSxuZXcgZkhlLG5ldyBnSGUpLC0xLG5ldyBoSGUoKCk9Pl8uemhlKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ5blJyaWMiKSkpKTthLm5iKCkmJl8uJEooYixuZXcgaUhlKTtfLnpMYiYmXy5EaWUoYixuZXcgakhlKTtfLnlMYiYmKGE9bmV3IGtIZSxfLmFlZShiLGEpLF8uTGRlKGIuUGEsW3thNWE6bEhlLE1RYTphfV0pKTtfLnZMYiYmXy5DaWUoYixuZXcgbUhlKTtfLmVMYiYmIV8uaUxiJiZfLmFLKGIsbmV3IG5IZSk7Xy53Y2UmJl8uQWllKF8uYUsoYixuZXcgb0hlKSxuZXcgcEhlKTtfLnJpZSYmXy56aWUoYixuZXcgcUhlKTtfLmFMYiYmXy5EaWUoXy5hSyhiLApuZXcgckhlKSxuZXcgc0hlKTtyZXR1cm4gYn07dkhlPWZ1bmN0aW9uKGEpe3ZhciBiO3JldHVybihiPXVIZS5nZXQoYSkpIT1udWxsP2I6IiJ9O3dIZT1mdW5jdGlvbihhLGIpe2ZvcihsZXQgW2UsZl1vZiBiLmVudHJpZXMoKSl7Yj1lO2xldCBnPWY7dmFyIGM9YS5xdWVyeVNlbGVjdG9yKGBpbnB1dFtuYW1lPSIke2J9Il1gKTtpZihjKWMudmFsdWU9ZztlbHNle2M9YTt2YXIgZD1jLmFwcGVuZENoaWxkO2xldCBoPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImlucHV0Iik7aC50eXBlPSJoaWRkZW4iO2gubmFtZT1iO2gudmFsdWU9ZztkLmNhbGwoYyxoKX19fTt4SGU9ZnVuY3Rpb24oYSl7cmV0dXJuIGEuWHouc29tZShiPT5iLmdldFN0YXR1cygpPT09MSl9O3lIZT1mdW5jdGlvbihhKXt2YXIgYj1uZXcgU2V0O2ZvcihsZXQgYyBvZiBhLlh6KXtsZXQgZDsoKGQ9Yy5nZXRGaWxlKCkpPT1udWxsPzA6ZC5uYW1lKSYmYi5hZGQoYy5nZXRGaWxlKCkubmFtZSl9cmV0dXJuIGJ9Owp6SGU9ZnVuY3Rpb24oYSxiKXthLmthLnRvZ2dsZUNsYXNzKCJNMnZWMyIsYik7YS5zZXBhcmF0b3IudG9nZ2xlQ2xhc3MoIk0ydlYzIixiKX07QUhlPWZ1bmN0aW9uKGEsYil7YS5LYT1ifTtCSGU9ZnVuY3Rpb24oYSxiKXt2YXIgYz0zLGQsZT0oZD1hLmhGKCkpPT1udWxsP3ZvaWQgMDpkLmdldCgib3EiKTtiPT09MSYmZSE9PXZvaWQgMCYmKGM9ZT09PSIiPzQ0OjQ1KTthLnVuKF8ubDFhKS50aGVuKGY9PnZvaWQgZi5tZmEoYykuVmRhKHtraW5kOiJtdGkifSkpfTtDSGU9ZnVuY3Rpb24oYSxiKXtpZihbMTcsMTgsMTksMjBdLmluY2x1ZGVzKGIuc0wpKXtsZXQgYz1uZXcgXy5NcSxkPWY9PntmIT09InZzbyImJmMucmVzb2x2ZSgpfTtfLnpnKCJmcHN0YXRlIixkKTtsZXQgZT0oMCxfLmpvKShjLnJlc29sdmUsMTAwKTtjLnByb21pc2UudGhlbigoKT0+e18uVmtiKGQpOygwLF8ua28pKGUpO0JIZShhLGIuc0wpfSl9ZWxzZSBCSGUoYSxiLnNMKX07CkRIZT1mdW5jdGlvbihhLGIpe2Eud2E9Yn07Xy5FSGU9ZnVuY3Rpb24oYSl7cmV0dXJuIGEua2E9PT0wfHxhLmthPT09Mn07RkhlPWZ1bmN0aW9uKGEsYil7YS53YS5yZWdpc3RlcihiKX07R0hlPWZ1bmN0aW9uKGEsYixjKXthLkdnJiYoYjwtMT9iPWEuQmEubGVuZ3RoLTE6Yj49YS5CYS5sZW5ndGgmJihiPS0xKSxiIT09LTEmJl8uQWhlKGEua2FbYl0pJiYoYis9Yi1hLm9hPjA/MTotMSksYS5LYT1iLF8uaWxlKGEsYiksYS5BYSgpfHwoYj1hLmdldFJvb3QoKS5wYXJlbnQoKS5lbCgpKSYmXy5YZyhiLCJoQkVJVmIiLG5ldyBfLm1LKC0xKSksYS5BYSgpJiZhLkVhW2Eub2FdLmthLmVudGVyKGMpKX07CkhIZT1mdW5jdGlvbihhLGIpe2lmKGEud2EhPT1udWxsJiZhLkFhKCkpe3ZhciBjPWEuRWFbYS5vYV0ua2E7aWYoYj9jLm5leHQoKTpjLnByZXZpb3VzKCkpe3ZhciBkPWEud2E7Yz1fLnVlZShhLmthW2Eub2FdKTt2YXIgZT1fLmJsZShkLndhKCksYyk7aWYoYz09PS0xfHxlIT09MSYmZSE9PTIpYz1bLTEsLTFdO2Vsc2V7dmFyIGY9ZT0tMTtmb3IobGV0IFtrLG1db2YgZC5rYSgpLmVudHJpZXMoKSlkPWssXy51ZWUobSk9PT1jJiYoZj1kLGU9PT0tMSYmKGU9ZCkpO2M9W2UsZl19dmFyIFtnLGhdPWM7aWYoZyE9PS0xJiZoIT09LTEpe2lmKGImJmEub2E8aCl7R0hlKGEsYS5vYSsxKTtyZXR1cm59aWYoIWImJmEub2E+Zyl7R0hlKGEsYS5vYS0xKTtyZXR1cm59fV8uYWxlKGEud2EsYS5rYVthLm9hXSk/R0hlKGEsYS5TYSk6R0hlKGEsYS5JYT09PS0xP2EuT2ErMTphLklhKX19fTsKSUhlPWZ1bmN0aW9uKGEsYixjKXthLmJwJiYhYS5CYSYmYS5BYSYmKGEuQmE9YS5icC5rYShuZXcgXy53byhbYixjXSksKCk9PnthLkFhJiYoYS5BYS5zdHlsZS5oZWlnaHQ9YCR7KGMub2Zmc2V0SGVpZ2h0fHwwKSsoYi5vZmZzZXRIZWlnaHR8fDApfXB4YCl9KSl9O0pIZT1mdW5jdGlvbihhKXtpZihhLkJhKXtsZXQgYjsoYj1hLmJwKT09bnVsbHx8Yi5vYShhLkJhKTthLkJhPW51bGx9YS5BYSYmKGEuQWEuc3R5bGUuaGVpZ2h0PSIiKX07S0hlPWZ1bmN0aW9uKGEsYil7YS5maWxlPWI7YS5HYS50ZXh0Q29udGVudD1iLm5hbWU7Xy5ObGUoYSwwKX07T0dlPWNsYXNzIGV4dGVuZHMgXy5se2NvbnN0cnVjdG9yKGEpe3N1cGVyKGEpfWM3YSgpe3JldHVybiBfLnQodGhpcywzKX1zOGEoKXtyZXR1cm4gXy5waCh0aGlzLDMpfX07CkxIZT1jbGFzcyBleHRlbmRzIF8ubHtjb25zdHJ1Y3RvcihhKXtzdXBlcihhKX1yVyhhKXtyZXR1cm4gXy53Yih0aGlzLDEsXy5pYixfLm9oKGEpKX1nZXRJbmRleCgpe3JldHVybiBfLnhlKHRoaXMsMywtMSl9Z2V0VHlwZSgpe3JldHVybiBfLkVlKHRoaXMsNCl9QWMoYSl7cmV0dXJuIF8ub2sodGhpcyw0LGEpfXRlKCl7cmV0dXJuIF8uVWgodGhpcyw0KX19O01IZT1mdW5jdGlvbihhKXt2YXIgYj1uZXcgTWFwO2lmKGEuWHoubGVuZ3RoPT09MClyZXR1cm4gYjtpZihhLlh6Lmxlbmd0aD09PTEpe3ZhciBjPWEuWHpbMF0sZD1fLk9hKCgwLF8udmFlKShjLnJlcXVlc3RJZCksNCk7Yi5zZXQoInZzcmlkIixkKTtiLnNldCgidml0IixjLk5UKCkpfWVsc2V7Yz1uZXcgXy5RY2U7Zm9yKGQgb2YgYS5YeilhPW5ldyBfLlBjZSxhPV8uU2IoYSxfLm56LDEsZC5yZXF1ZXN0SWQpLF8udWgoYywxLF8uUGNlLGEpO2Iuc2V0KCJjaW5wdHMiLF8uT2EoKDAsXy5TY2UpKGMpLDQpKX1yZXR1cm4gYn07Ck5IZT1jbGFzc3tjb25zdHJ1Y3RvcihhKXt0aGlzLmZpbGU9YTt0aGlzLnJlcXVlc3RJZD1uZXcgXy5uen1nZXRTdGF0dXMoKXtyZXR1cm4gM31OVCgpe3JldHVybiIifWdldEZpbGUoKXtyZXR1cm4gdGhpcy5maWxlfWFzeW5jIHVwbG9hZCgpe3Rocm93IEVycm9yKCJaayIpO319O09IZT1mdW5jdGlvbihhLGIpe2IuY1liJiYoIV8uQWRlJiZhLnZpYSgpJiYoYS5Yej1bXSksYS5Yei5wdXNoKG5ldyBOSGUoYi5maWxlKSkpO2Eubm90aWZ5KCJVMWM4bGMiLGIpfTsKSkdlPWNsYXNze2NvbnN0cnVjdG9yKGEsYil7dGhpcy5yZXF1ZXN0SWQ9YTt0aGlzLnVybD1iO3RoaXMuc3RhdHVzPTF9Z2V0U3RhdHVzKCl7cmV0dXJuIHRoaXMuc3RhdHVzfU5UKCl7cmV0dXJuInVybCJ9Z2V0RmlsZSgpe31hc3luYyB1cGxvYWQoYSxiLGMsZCxlKXtkPSgwLF8uTWYpKCk7Yj1kKCk7ZD1kKDEpO3RyeXthJiZfLnRhZSh0aGlzLnJlcXVlc3RJZCxhKTt2YXIgZj1fLmFjZShuZXcgXy5jY2UsXy5PYmUoXy5OYmUobmV3IF8uUGJlLHRoaXMucmVxdWVzdElkKSxjKSksZz1uZXcgXy5aYmUsaD1nLnNldENvbnRlbnQsaz1uZXcgXy5ZYmU7dmFyIG09Xy5maChrLDEsdGhpcy51cmwpO2xldCBuPV8uZWNlKF8uYmNlKGYsaC5jYWxsKGcsbSkpKTt0cnl7bGV0IHA9ZChhd2FpdCBiKF8uYmRlKG4sbnVsbCwidXJsX3VwbG9hZF9sYXRlbmN5X3RhZyIsZSx0aGlzLk5UKCksITApKSk7dGhpcy5zdGF0dXM9MjtyZXR1cm4gcH1jYXRjaChwKXt0aHJvdyBkKCksdGhpcy5zdGF0dXM9CjMscDt9fWZpbmFsbHl7YigpfX19O0lHZT1jbGFzcyBleHRlbmRzIF8ueWRle2NvbnN0cnVjdG9yKGEsYil7c3VwZXIoYSk7dGhpcy51cmw9Yjt0aGlzLnN0YXR1cz0xfW9hKCl7cmV0dXJue2tpbmQ6InVybCIsdXJsOnRoaXMudXJsfX1rYSgpe3JldHVybiJ1cmxfdXBsb2FkX2xhdGVuY3lfdGFnIn1OVCgpe3JldHVybiJ1cmwifX07UEhlPWZ1bmN0aW9uKGEsYixjKXtiPUtHZShiLGMpO2EuWHoucHVzaCguLi5iKTtiPWIubWFwKGQ9PmQudXBsb2FkKG51bGwsYS5laWQsYS5SMCxhLldJYSxhLnRVKSk7UHJvbWlzZS5hbGwoYil9O1FIZT1mdW5jdGlvbihhKXtfLnpsZShhLlhULGI9PmIuWGJjLGI9PntiJiYoYS5HYT0hMCxyZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCk9PntfLmRtZShhLCEwKX0pKX0sYSk7Xy56bGUoYS5YVCxiPT5iLmlzRW1wdHksYj0+e2ImJihhLkdhPSExLF8uZG1lKGEsITApKX0sYSl9OwpSSGU9ZnVuY3Rpb24oYSxiLGMpe2Eua2E9YjthLndhPWM7YS5LYT17Sk1hOmIuSk1hLnBhcmVudEVsZW1lbnQsVUFhOmIuVUFhLnBhcmVudEVsZW1lbnR9O2EuTmE9e0pNYTphLkphKCJGUHljUGMiKS5oYigpLFVBYTphLkphKCJCNzYzVGMiKS5oYigpfTthLkVhPT09OT9hLmxqLmRLKCEwKTphLkVhIT09MCYmYS5sai5aUChhLkVhKTtRSGUoYSk7YS5pc0luaXRpYWxpemVkPSEwO2EuQmEmJihhLkJhPSExLGEuSWEoKSl9O1NIZT17TG1iOl8uancsT0FjOl8uR2ZlfTtUSGU9Y2xhc3N7Y29uc3RydWN0b3IoYSl7dGhpcy53YT1hO3RoaXMub2E9bmV3IE1hcDt0aGlzLmthPTB9cmVzZXQoKXt0aGlzLmthPTB9fTtSR2U9e2R1cmF0aW9uOjE1MCxlYXNpbmc6ImN1YmljLWJlemllcigwLjMxLCAwLjk0LCAwLjM0LCAxKSJ9O1NHZT17ZHVyYXRpb246MzAwLGVhc2luZzoiY3ViaWMtYmV6aWVyKDAuMzQsIDAuODgsIDAuMzQsIDEpIn07VUhlPSEhKF8uT2lbMjZdPj4xOCYxKTt2YXIgV0hlPWZ1bmN0aW9uKGEsYil7dmFyIGM9YS5PUy5xTGE7aWYoYz09PW51bGwpcmV0dXJuIDE7YT1hLmthLmtaKCk7aWYoYz09PTUmJmE9PT00KXJldHVybiAyO2lmKGM9PT01P2EhPT00OmEhPT0wKXJldHVybiBiLndhPSEwLDE7VkhlKGIsYyk7cmV0dXJuIDF9LFZIZT1mdW5jdGlvbihhLGIpe3ZhciBjPWIhPT1udWxsJiZiIT09MDthLmthKCJjbGllbnQiLGM/Imd3cy13aXotZGVza3RvcC1haW0iOiJnd3Mtd2l6LWhwLWFpLXN0YXJ0ZXJzIiwhMCk7YyYmYS5rYSgiYXppIixTdHJpbmcoYiksITApO2Eud2E9ITA7YS5LYT0hMH0sckhlPWNsYXNze2NvbnN0cnVjdG9yKCl7dGhpcy5rYT10aGlzLk9TPW51bGx9Vm0oYSl7dGhpcy5PUz1hLmdldChfLlJkZSk7dGhpcy5rYT1hLmdldChfLlNkZSl9YlIoYSl7aWYoYS5vYSE9PSIiKWE9MTtlbHNlIGlmKHRoaXMuT1MuSXhjKCkpe3tsZXQgYj10aGlzLk9TLnR3YyhhKTtiIT09dm9pZCAwPyhWSGUoYSxiKSxhPTEpOmE9Mn19ZWxzZSBhPQpXSGUodGhpcyxhKTtyZXR1cm4gYX19O3ZhciBYSGU9Y2xhc3N7Y29uc3RydWN0b3IoKXt0aGlzLnhJPSIiO3RoaXMuZW5hYmxlZD0hMDt0aGlzLndhPSgpPT57dGhpcy5lbmFibGVkPSExfTt0aGlzLmthPSExO3RoaXMuTGs9bnVsbH1jb25maWd1cmUoYSl7dGhpcy54ST1hLndhKCk7dGhpcy5lbmFibGVkPV8uQShhLDIzKSYmXy5BKGEsMjkpO3RoaXMua2E9YS5JYSgpfVZtKGEpe3ZhciBiPWEuZ2V0KF8uTmRlKTtiJiZiLmJIKDIsdGhpcy53YSk7dGhpcy5Maz1hLmdldChfLlVkZSl9dnooKXtyZXR1cm4gMX1nZXQoYSl7YT1hLmdldFF1ZXJ5KCk7cmV0dXJuIHRoaXMuZW5hYmxlZCYmXy5LZGUoYSx0aGlzLnhJLHRoaXMua2EsdGhpcy5Maz90aGlzLkxrLk1fOm51bGwpJiYoYT1QR2UoYSksYS5sZW5ndGg+MCk/KGE9YS5tYXAoYj0+Xy5OY2UoKG5ldyBfLkxjZSkuQmMoYiwhMSxiKS5BYygwKSw3MSkuYnVpbGQoKSksbmV3IF8uY0soYSxuZXcgTWFwLCExLCExKSk6bnVsbH11cGRhdGUoYSxiKXthJiZiLnFIIT09MSYmKHRoaXMuZW5hYmxlZD0KITEpfX07dmFyIGNIZT1jbGFzcyBleHRlbmRzIFhIZXtjb25zdHJ1Y3Rvcigpe3N1cGVyKC4uLmFyZ3VtZW50cyk7dGhpcy5vYT1udWxsfVZtKGEpe3N1cGVyLlZtKGEpO3RoaXMub2E9YS5nZXQoXy5TZGUpfWdldChhKXt2YXIgYjtyZXR1cm4oKGI9dGhpcy5vYSk9PW51bGw/MDpiLmNOKCkpP251bGw6c3VwZXIuZ2V0KGEpfX07dmFyIFhHZT1bXTt2YXIgb0hlPWNsYXNze2NvbnN0cnVjdG9yKCl7dGhpcy5rYT1udWxsfVZtKGEpe3RoaXMua2E9YS5nZXQoXy5UZGUpfWJSKGEpe3ZhciBiLGM7aWYoKChjPShiPXRoaXMua2EpPT1udWxsP3ZvaWQgMDpiLm5VKCkpIT1udWxsP2M6MCk9PT0wKXJldHVybiAxO2lmKCF4SGUodGhpcy5rYSkmJl8uemNlJiZhLm9hLmxlbmd0aD09PTApe2I9dGhpcy5rYTtpZihiLlh6Lmxlbmd0aD09PTApYj1uZXcgTWFwO2Vsc2V7Yz1uZXcgTWFwKFtbImdzZXNzaW9uaWQiLGIuaVNhXSxbImNsaWVudCIsImd3cy13aXotZnVzZWJveC1jb250ZXh0dWFsIl1dKTtmb3IobGV0IFtkLGVdb2YgTUhlKGIpKWMuc2V0KGQsZSk7Xy55Y2UmJmMuc2V0KCJzdGF0aWMiLCIiKTtiPWN9Zm9yKGxldCBbZCxlXW9mIGIpYS5rYShkLGUsITApfWVsc2UgYS5rYSgiZXIiLCIwIiwhMCk7YS53YT0hMDtyZXR1cm4gMX19O3ZhciBsSGU9bmV3IF8uWko7dmFyIFlIZT1mdW5jdGlvbihhKXt2YXIgYj1fLkZjZShhLndtKSxjPU51bWJlcihiLmdldCgiemF6IikpO2I9Yi5nZXQoInpiYSIpO3ZhciBkOyhkPWEua2EpPT1udWxsfHxkLmRLKCEwKTtpZihjPT09MyYmYiE9PXZvaWQgMCYmYiE9PW51bGwmJk51bWJlcihiKT09PTQpe2xldCBlOyhlPWEua2EpPT1udWxsfHxlLlpQKDQpfX0sWkhlPWNsYXNzIGV4dGVuZHMgXy5vaWV7Y29uc3RydWN0b3IoYSxiLGMsZCxlLGYsZyl7c3VwZXIoYSxiLGMsZCk7dGhpcy5vYT1lO3RoaXMuSGc9Zjt0aGlzLmthPWd9WGMoYSl7dmFyIGI9Xy5GY2UodGhpcy53bSk7TnVtYmVyKGIuZ2V0KCJ6YXoiKSk9PT0zPyhhLnR5cGU9PT0ia2V5ZG93biImJihhPWEuZXZlbnQsYS5wcmV2ZW50RGVmYXVsdCgpLGEuc3RvcFByb3BhZ2F0aW9uKCkpLChhPXRoaXMub2EpIT1udWxsJiYoYS5FcGE9Xy5FY2UodGhpcy53bSksYS5JMmErKyxhLlNZYT0wKSx0aGlzLkhnLlFqYShfLlhKKHRoaXMud20pKyIgIiwhMSwhMCwhMCksCl8uQUxiJiYoYT0obmV3IExIZSkuQWModGhpcy53bS5nZXRUeXBlKCkpLGI9Wy4uLnRoaXMud20ua2EoKV0sYT1fLnpiKGEsMSxiLF8uaGIpLGE9Xy5aaChhLDUsMiksYT1fLmxrKGEsMyx0aGlzLmluZGV4KS5UYygpLHRoaXMuWmMuZmpiKGEpKSx0aGlzLlpjLmdtYSg1KSx0aGlzLkhnLmZvY3VzKCksWUhlKHRoaXMpKTooWUhlKHRoaXMpLHN1cGVyLlhjKGEpKX19LCRIZT1jbGFzcyBleHRlbmRzIF8uRmhle2NvbnN0cnVjdG9yKGEsYixjKXtzdXBlcigpO3RoaXMuZWw9YTt0aGlzLndtPWI7dGhpcy5pbmRleD1jfWVudGVyKCl7dGhpcy5lbC5zY3JvbGxJbnRvVmlldyghMSk7dmFyIGE9dGhpcy5lbCxiPW5ldyBfLm1LKHRoaXMuaW5kZXgsdGhpcy53bSwxLCIiLF8uWEoodGhpcy53bSkpO18uWGcoYSwiaEJFSVZiIixiKX19LGFJZT1jbGFzc3tjb25zdHJ1Y3RvcihhKXt0aGlzLkhZPWF9WEdhKGEpe3ZhciBiPWEuZXZlbnQ7Yi5wcmV2ZW50RGVmYXVsdCgpO2Iuc3RvcFByb3BhZ2F0aW9uKCk7CnRoaXMuSFkuWGMoYSk7cmV0dXJuITB9fSxzSGU9Y2xhc3MgZXh0ZW5kcyBfLnBpZXtjb25zdHJ1Y3Rvcigpe3N1cGVyKC4uLmFyZ3VtZW50cyk7dGhpcy5FYT10aGlzLkhnPXRoaXMuR2E9bnVsbH1WbShhKXtzdXBlci5WbShhKTt0aGlzLkdhPWEuZ2V0KGxIZSk7dGhpcy5IZz1hLmdldChfLldkZSk7dGhpcy5FYT1hLmdldChfLlNkZSl9b2EoYSxiLGMpe3ZhciBkPV8uRmNlKGIpLGU9TnVtYmVyKGQuZ2V0KCJ6YXoiKSk7aWYoZT09PTN8fGU9PT0xKXtkPW5ldyBaSGUoYSxiLGMsdGhpcy5aYyx0aGlzLkdhLHRoaXMuSGcsdGhpcy5FYSk7aWYoZT09PTMpcmV0dXJuIG5ldyBfLkdoZShkLG5ldyAkSGUoYSxiLGMpLHZvaWQgMCxuZXcgYUllKGQpKTthPXN1cGVyLm9hKGEsYixjKTtyZXR1cm4gbmV3IF8uR2hlKGQsYS5rYSxhLmNsZWFyLGEub2EpfXJldHVybiBzdXBlci5vYShhLGIsYyl9dnooKXtyZXR1cm4gMTA1fWthKGEpe2E9YS5rYSgpO3JldHVybiBhLmluY2x1ZGVzKDkxOCl8fAphLmluY2x1ZGVzKDkxOSl8fGEuaW5jbHVkZXMoOTIwKX19O3ZhciBkSGU9Y2xhc3MgZXh0ZW5kcyBfLnBpZXtjb25zdHJ1Y3Rvcigpe3RyeXtzdXBlcigpfWNhdGNoKGEpe319b2EoYSxiLGMpe2E9bmV3IF8ucWllKGEsYixjLHRoaXMuWmMpO3JldHVybiBuZXcgXy5HaGUoYSxhKX12eigpe3JldHVybiAxNn1rYShhKXtyZXR1cm4gYS5rYSgpLmluY2x1ZGVzKDQ1Nil8fGEuZ2V0VHlwZSgpPT09MTc0fXdhKCl7cmV0dXJuIDZ9QWEoKXtyZXR1cm4iVE40ckZmIn1PYSgpe319O3ZhciBiSWU9e3VqYzpfLmxMYix3amM6Xy5BTGJ9LGNJZT1jbGFzcyBleHRlbmRzIF8ub2lle2NvbnN0cnVjdG9yKGEsYixjLGQsZSxmKXtzdXBlcihhLGIsYyxkKTt0aGlzLmthPWU7dGhpcy5IZz1mfVhjKGEpe2EudHlwZT09PSJrZXlkb3duIiYmKGE9YS5ldmVudCxhLnByZXZlbnREZWZhdWx0KCksYS5zdG9wUHJvcGFnYXRpb24oKSk7KGE9dGhpcy5rYSkhPW51bGwmJihhLkVwYT1fLkVjZSh0aGlzLndtKSxhLkkyYSsrLGEuU1lhPTApO3RoaXMuSGcuUWphKF8uWEoodGhpcy53bSkrIiAiLCExLCEwLCEwKTtpZihiSWUud2pjKXthPShuZXcgTEhlKS5BYyh0aGlzLndtLmdldFR5cGUoKSk7dmFyIGI9Wy4uLnRoaXMud20ua2EoKV07YT1fLnpiKGEsMSxiLF8uaGIpO2E9Xy5aaChhLDUsMik7YT1fLmxrKGEsMyx0aGlzLmluZGV4KS5UYygpO3RoaXMuWmMuZmpiKGEpfXRoaXMuWmMuZ21hKDUpO3RoaXMuSGcuZm9jdXMoKX19LGRJZT1jbGFzcyBleHRlbmRzIF8uRmhle2NvbnN0cnVjdG9yKGEsCmIsYyl7c3VwZXIoKTt0aGlzLmVsPWE7dGhpcy53bT1iO3RoaXMuaW5kZXg9Y31lbnRlcigpe3ZhciBhPWJJZS51amM7dGhpcy5lbC5zY3JvbGxJbnRvVmlldyghMSk7dmFyIGI9dGhpcy5lbDthPW5ldyBfLm1LKHRoaXMuaW5kZXgsdGhpcy53bSwxLCIiLGE/Xy5YSih0aGlzLndtKTpfLkRjZShfLk1kZSh0aGlzLndtKSksYSk7Xy5YZyhiLCJoQkVJVmIiLGEpfX0sZUllPWNsYXNze2NvbnN0cnVjdG9yKGEpe3RoaXMuSFk9YX1YR2EoYSl7dmFyIGI9YS5ldmVudDtiLnByZXZlbnREZWZhdWx0KCk7Yi5zdG9wUHJvcGFnYXRpb24oKTt0aGlzLkhZLlhjKGEpO3JldHVybiEwfX0sakhlPWNsYXNzIGV4dGVuZHMgXy5waWV7Y29uc3RydWN0b3IoKXtzdXBlciguLi5hcmd1bWVudHMpO3RoaXMuSGc9dGhpcy5FYT1udWxsfVZtKGEpe3N1cGVyLlZtKGEpO3RoaXMuRWE9YS5nZXQobEhlKTt0aGlzLkhnPWEuZ2V0KF8uV2RlKX1BYSgpe3JldHVybiJuWlFtNCJ9d2EoKXtyZXR1cm4gMTF9b2EoYSwKYixjKXt2YXIgZD1uZXcgY0llKGEsYixjLHRoaXMuWmMsdGhpcy5FYSx0aGlzLkhnKTtyZXR1cm4gbmV3IF8uR2hlKGQsbmV3IGRJZShhLGIsYyksdm9pZCAwLG5ldyBlSWUoZCkpfXZ6KCl7cmV0dXJuIDEwNX1rYShhKXthPWEua2EoKTtyZXR1cm4gYS5pbmNsdWRlcyg4NjEpfHxhLmluY2x1ZGVzKDg2Nil9UGEoYSxiKXt2YXIgYzsoYT0oYz1hLmVsKCkpPT1udWxsP3ZvaWQgMDpjLnF1ZXJ5U2VsZWN0b3IoInN2ZyIpKSYmXy5oaWUoYSxfLllKKGIsInpmIiw0MykpfX07dmFyIGZJZT17dmpjOl8ucExiLHNqYzpfLndjZX0sZ0llPWZ1bmN0aW9uKGEsYixjKXtiLmthKCJjbGllbnQiLCJnd3Mtd2l6LWRlc2t0b3AtYWltIiwhMCk7aWYoYyl7bGV0IGQsZTsoYz0oZD1hLmthKT09bnVsbD92b2lkIDA6KGU9ZC5wOSk9PW51bGw/dm9pZCAwOmUuY2FsbChkKSkmJmIua2EoImF6aSIsYywhMCl9c3dpdGNoKGEua2Eua1ooKSl7Y2FzZSAxOmIua2EoImF6bSIsMSwhMCk7YnJlYWs7Y2FzZSA0OmIua2EoImF6bSIsNCwhMCk7YnJlYWs7Y2FzZSAyOmIua2EoImF6bSIsMiwhMCl9fSxuSGU9Y2xhc3N7Y29uc3RydWN0b3IoKXt0aGlzLm9hPXRoaXMua2E9bnVsbH1WbShhKXt0aGlzLmthPWEuZ2V0KF8uU2RlKTtmSWUuc2pjJiYodGhpcy5vYT1hLmdldChfLlRkZSkpfWJSKGEpe3ZhciBiO2lmKChiPXRoaXMua2EpPT1udWxsfHwhYi5jTigpKXJldHVybiAxO3ZhciBjLGQ7aWYoYS5vYT09PSIiJiYoKGQ9KGM9dGhpcy5vYSk9PW51bGw/dm9pZCAwOmMublUoKSkhPW51bGw/CmQ6MCk9PT0wKXJldHVybiBnSWUodGhpcyxhLCEwKSxhLndhPSEwLDE7aWYoIXRoaXMuUVVhKCkpcmV0dXJuIGEua2EoImVyIiwiMCIsITApLDE7dmFyIGUsZjtpZigoKGY9KGU9dGhpcy5vYSk9PW51bGw/dm9pZCAwOmUublUoKSkhPW51bGw/ZjowKT4wKXJldHVybiAxO2ZJZS52amM/KGdJZSh0aGlzLGEsITEpLGEud2E9ITApOmEua2EoImVyIiwiMCIsITApO3JldHVybiAxfVFVYSgpe3ZhciBhPXRoaXMua2Eua1ooKTtyZXR1cm4gdGhpcy5rYS5jTigpJiYoYT09PTl8fGE9PT0wKX19O3ZhciAkR2U9Y2xhc3N7YlIoYSl7YS5rYSgiZHByIixfLlRIYSgpKTtyZXR1cm4gMX19O3ZhciBhSGU9Y2xhc3N7Y29uc3RydWN0b3IoKXt0aGlzLnh3PW51bGx9Vm0oYSl7dGhpcy54dz1hLmdldChfLllkZSl9YlIoYSl7aWYoIXRoaXMueHcpcmV0dXJuIDE7dmFyIGI9dGhpcy54dy55U2EoKS5vYSgiaSIsIiIpO2ImJmEua2EoImdzX21zcyIsYik7cmV0dXJuIDF9fTt2YXIgWkdlPWNsYXNze2NvbnN0cnVjdG9yKCl7dGhpcy5rYT0hMX1jb25maWd1cmUoYSl7dGhpcy5rYT1hLkVhKCl8fGEuUGEoKX1iUihhKXtyZXR1cm4gYS5vYS5sZW5ndGghPT0wfHx0aGlzLmthPzE6Mn19O3ZhciBoSGU9Y2xhc3N7Y29uc3RydWN0b3IoYSl7dGhpcy5Yaj1hfXFRYShhLGIpe2E9YS53YSgpLm9hKGIpO2lmKCFhKXJldHVybltdO3RyeXt2YXIgYz10aGlzLlhqKCl9Y2F0Y2goZCl7cmV0dXJuW119aWYoIWMpcmV0dXJuW107YT1fLktjKGEpO18uZWQoYyxhKTtyZXR1cm5bY119fTt2YXIgaEllPWZ1bmN0aW9uKGEsYil7Zm9yKGxldCBjIG9mIGIpXy5YbShhLnJvb3RFbGVtZW50LGMsYS5BYSsrKSxhLndhLnB1c2goYyl9LGlJZT1jbGFzc3tjb25zdHJ1Y3RvcihhLGIsYyxkKXt0aGlzLmdyb3VwSWQ9YTt0aGlzLmhlYWRlcnM9Yjt0aGlzLkdhPWM7dGhpcy5OYT1kO3RoaXMuQWE9dGhpcy5JYT0wO3RoaXMud2E9W107dGhpcy5CYT1bXTt0aGlzLnJvb3RFbGVtZW50PXRoaXMub2EoKTt0aGlzLkVhPW5ldyBUSGUodGhpcy5yb290RWxlbWVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCJHNDNmN2UiKVswXSl9b2EoKXt2YXIgYT10aGlzLk5hLmNsb25lTm9kZSghMCk7YS5yZW1vdmVBdHRyaWJ1dGUoImpzbmFtZSIpO2EucmVtb3ZlQXR0cmlidXRlKCJpZCIpO3JldHVybiBhfUthKGEsYixjKXt7dmFyIGQ9dGhpcy5FYTt2YXIgZT10aGlzLklhKyssZj1hLndhKCk7bGV0IGg9ZC53YS5jaGlsZHJlbltkLmthXTtpZihoJiZRR2UoaCk9PT1mKWQua2ErKyxkPWg7ZWxzZXt2YXIgZzsKZj0oZz1kLm9hLmdldChmKSk9PW51bGw/dm9pZCAwOmcucG9wKCk7Zz1mIT09dm9pZCAwP2Y6YS5OYSgpO18uWG0oZC53YSxnLGUpO2Qua2ErKztkPWd9fWE9YS5yZW5kZXIoZCxiLGMpO2I9e3dtOmIsdmlldzpkLHNYYjphfTt0aGlzLkJhLnB1c2goYik7cmV0dXJuIGJ9aW5pdGlhbGl6ZShhLGIsYyl7dGhpcy5BYT10aGlzLklhPTA7dGhpcy5FYS5yZXNldCgpO3RoaXMuZ3JvdXBJZD1hO3RoaXMuaGVhZGVycz1iO3RoaXMuR2E9Yztmb3IobGV0IGQgb2YgdGhpcy53YSlkLnJlbW92ZSgpO3RoaXMud2EubGVuZ3RoPTA7Zm9yKGxldCB7c1hiOmR9b2YgdGhpcy5CYSlkLmNsZWFyKCk7dGhpcy5CYS5sZW5ndGg9MDtoSWUodGhpcyx0aGlzLmhlYWRlcnMpfXRLKCl7dGhpcy5BYSsrO2hJZSh0aGlzLHRoaXMuR2EpO3ZhciBhPXRoaXMuRWEsYj1hLndhLmNoaWxkcmVuO2ZvcihsZXQgYz1iLmxlbmd0aC0xO2M+PWEua2E7Yy0tKXtsZXQgZD1iW2NdLGU9UUdlKGQpO2Eub2EuZ2V0KGUpfHxhLm9hLnNldChlLApbXSk7YS5vYS5nZXQoZSkucHVzaChkKTtfLlltKGQpfX19O3ZhciBqSWU9Y2xhc3MgZXh0ZW5kcyBpSWV7a2EoKXtyZXR1cm4gMn1vYSgpe3ZhciBhPXN1cGVyLm9hKCk7YS5jbGFzc0xpc3QuYWRkKCJJNGdyNmMiKTtyZXR1cm4gYX19O3ZhciBtSGU9Y2xhc3N7Y29uc3RydWN0b3IoKXt0aGlzLmthPW51bGx9Vm0oYSl7dGhpcy5rYT1hLmdldChfLllkZSl9RDRhKGEsYixjKXt2YXIgZD10aGlzLmthLkhiKCJFODBlOWUiKS5oYigpO3JldHVybiBuZXcgakllKGEsYixjLGQpfUQwYShhKXtyZXR1cm4gYT09PTJ9dnooKXtyZXR1cm4gNDB9fTt2YXIga0llPWNsYXNzIGV4dGVuZHMgaUlle29hKCl7dmFyIGE9c3VwZXIub2EoKTthLmdldEVsZW1lbnRzQnlDbGFzc05hbWUoIkc0M2Y3ZSIpWzBdLmNsYXNzTGlzdC5hZGQoIlllNGpmYyIpO3JldHVybiBhfWthKCl7cmV0dXJuIDF9fTt2YXIgZkhlPWNsYXNze2NvbnN0cnVjdG9yKCl7dGhpcy5rYT1udWxsfVZtKGEpe3RoaXMua2E9YS5nZXQoXy5ZZGUpfUQ0YShhLGIsYyl7dmFyIGQ9dGhpcy5rYS5IYigiRTgwZTllIikuaGIoKTtyZXR1cm4gbmV3IGtJZShhLGIsYyxkKX1EMGEoYSl7cmV0dXJuIGE9PT0xfXZ6KCl7cmV0dXJuIDEwfX07dmFyIGxJZT1jbGFzcyBleHRlbmRzIGlJZXtrYSgpe3JldHVybi0yfX07dmFyIGdIZT1jbGFzc3tjb25zdHJ1Y3Rvcigpe3RoaXMua2E9bnVsbH1WbShhKXt0aGlzLmthPWEuZ2V0KF8uWWRlKX1ENGEoYSxiLGMpe3ZhciBkPXRoaXMua2EuSGIoIkU4MGU5ZSIpLmhiKCk7cmV0dXJuIG5ldyBsSWUoYSxiLGMsZCl9RDBhKGEpe3JldHVybiBhPT09LTJ9dnooKXtyZXR1cm4gMjB9fTt2YXIgbUllPWNsYXNzIGV4dGVuZHMgaUlle2thKCl7cmV0dXJuIDB9fTt2YXIgZUhlPWNsYXNze2NvbnN0cnVjdG9yKCl7dGhpcy5rYT1udWxsfVZtKGEpe3RoaXMua2E9YS5nZXQoXy5ZZGUpfUQ0YShhLGIsYyl7dmFyIGQ9dGhpcy5rYS5IYigiRTgwZTllIikuaGIoKTtyZXR1cm4gbmV3IG1JZShhLGIsYyxkKX1EMGEoYSl7cmV0dXJuIGE9PT0wfXZ6KCl7cmV0dXJuIDB9fTt2YXIgWUdlPWNsYXNze2NvbnN0cnVjdG9yKCl7dGhpcy5ldmVudElkPW51bGw7dGhpcy50VT0iIjt0aGlzLmo2YT10aGlzLkhnPXRoaXMuWmM9bnVsbDt0aGlzLmthPSgpPT57dGhpcy5aYy51TCgyMik7dmFyIGE9dGhpcy5IZy5QbigpLnJlcGxhY2UoLy4vZywiKiIpO2E9dGhpcy5aYy5lb2EoYSk7YS5zZXQoImVpIix0aGlzLmV2ZW50SWQpO18uSWNlKGEsdGhpcy50VSl9fWNvbmZpZ3VyZShhKXt0aGlzLmV2ZW50SWQ9Xy50KGEsMTEpO3RoaXMudFU9YS5LYSgpfVZtKGEpe3RoaXMuWmM9YS5nZXQoXy5PZGUpO3RoaXMuSGc9YS5nZXQoXy5XZGUpO3RoaXMuajZhPWEuZ2V0KF8uTmRlKTt0aGlzLmo2YS5iSCg4LHRoaXMua2EpfX07dmFyIGJIZT1jbGFzc3t2eigpe3JldHVybiAxRTN9T1YoYSl7dmFyIGI9YS5rYSgpLm1hcChjPT57aWYoXy5ZSihjLCJ6YW4iLCExKSl7bGV0IHtUeGQ6ZCxmczplfT1fLllKKGMsInphciIpO2lmKERhdGUubm93KCk+ZClyZXR1cm4gbmV3IF8uR2NlKGUpfXJldHVybiBjfSk7cmV0dXJuIF8ueWVlKGEsYil9fTt2YXIgcEhlPWNsYXNze3Z6KCl7cmV0dXJuIDEwfWdldChhKXthPV8uV24oYS51cmksImVyIik7cmV0dXJuIGE9PT12b2lkIDA/bnVsbDpuZXcgXy5jSyhbXSxuZXcgTWFwLGE9PT0iMSIsITEse3NDYjohMCxPZGE6ITF9KX11cGRhdGUoKXt9fTt2YXIgbkllPWZ1bmN0aW9uKGEpe3JldHVybiBhPT09IiI/bmV3IFNldDpuZXcgU2V0KF8uRGNlKGEpLnRyaW0oKS5zcGxpdCgvXHMrLykpfSxrSGU9Y2xhc3N7Y29uc3RydWN0b3IoKXt0aGlzLlNZYT10aGlzLkkyYT10aGlzLmthPTA7dGhpcy5FcGE9dGhpcy5vYT0iIn1WbShhKXthLmdldChfLk5kZSkuYkgoMTIsYj0+e3RoaXMub25JbnB1dENoYW5nZWQoYil9KX1lR2EoKXt2YXIgYT1bXSxiPW5JZSh0aGlzLkVwYSksYz1uSWUodGhpcy5vYSksZD1fLnRzZShiLGMpLnNpemU7Yz1fLnRzZShjLGIpLnNpemU7dmFyIHtFR2M6ZSxDR2M6ZixER2M6Z309e0VHYzpkLENHYzpjLERHYzpiLnNpemUtZH07YS5wdXNoKF8ueWhlKF8ua0sobmV3IF8ubEssOTMpLHRoaXMua2E+MD8xOjApLF8ueWhlKF8ua0sobmV3IF8ubEssOTQpLHRoaXMua2EpLF8ueWhlKF8ua0sobmV3IF8ubEssOTUpLHRoaXMuSTJhKSxfLnloZShfLmtLKG5ldyBfLmxLLDk2KSx0aGlzLkVwYSE9PSIiJiZlPT09MCYmZj09PQowPzE6MCksXy55aGUoXy5rSyhuZXcgXy5sSyw5NyksdGhpcy5FcGEhPT0iIiYmKGU+MHx8Zj4wKT8xOjApLF8ueWhlKF8ua0sobmV3IF8ubEssOTgpLHRoaXMuU1lhKSk7dGhpcy5FcGEhPT0iIiYmKGU+MHx8Zj4wKSYmYS5wdXNoKF8ueWhlKF8ua0sobmV3IF8ubEssOTkpLGcpLF8ueWhlKF8ua0sobmV3IF8ubEssMTAwKSxmKSxfLnloZShfLmtLKG5ldyBfLmxLLDEwMSksZSkpO3JldHVybiBhfXdhKGEpe3JldHVybiBhLmthKCkuaW5jbHVkZXMoODYxKXx8YS5rYSgpLmluY2x1ZGVzKDg2Nil9TGphKGEsYil7Yi5rYSgpLnNvbWUodGhpcy53YSkmJnRoaXMua2ErK31vbklucHV0Q2hhbmdlZChhKXt0aGlzLm9hPWE7dGhpcy5FcGEhPT0iIiYmYT09PSIiJiYodGhpcy5TWWE9MSl9cmVzZXQoKXt0aGlzLlNZYT10aGlzLkkyYT10aGlzLmthPTA7dGhpcy5FcGE9dGhpcy5vYT0iIn19O3ZhciBxSGU9Y2xhc3N7dnooKXtyZXR1cm4gMjd9T1YoYSl7dmFyIGI9d2luZG93LmlubmVyV2lkdGg+PTExNjQmJiFhLm9hKCJidCIsITEpLGM9YS5rYSgpLmZpbHRlcihkPT4hXy5hbGUoYSxkKXx8Yik7cmV0dXJuIF8ueWVlKGEsYyl9fTt2YXIgaUhlPWNsYXNze2NvbnN0cnVjdG9yKCl7dGhpcy55TD10aGlzLk9mPW51bGw7dGhpcy5rYT0hMTt0aGlzLm9hPSgpPT57dGhpcy5PZi5FYSgpJiZ0aGlzLk9IKCl9fWNvbmZpZ3VyZShhKXt0aGlzLk9mPWE7dGhpcy5rYT1hLk5hKCl9Vm0oYSl7dGhpcy55TD1hLmdldChfLlBkZSk7YS5nZXQoXy5OZGUpLmJIKDEwLHRoaXMub2EpfU9IKCl7dmFyIGE9bmV3IF8udGVlKCIiLDAsMSk7dGhpcy5rYSYmYS5rYSgiZ3NfcGNydCIsMik7YS5mb3JjZWQ9ITA7YS5BYT0hMDt0aGlzLnlMLk9IKGEsKCk9Pnt9KX19O3ZhciB1SGU9bmV3IE1hcChbWzQsIkJlc2tyaXYgYmlsZGV0Il0sWzEsIlV0Zm9yc2sgaHZhIHNvbSBoZWxzdCJdLFsyLCJMYWcgaHZhIHNvbSBoZWxzdCJdLFs5LCJTcFx1MDBmOHIgR29vZ2xlIl1dKTt2YXIgb0llPWZ1bmN0aW9uKGEpe3JldHVybiBuZXcgXy5ieSgoKT0+e2EuQWEhPT1udWxsJiZfLmhuKGEub2EsImhlaWdodCIsIjBweCIpfSl9LHBJZT1mdW5jdGlvbihhKXtyZXR1cm4gbmV3IF8uYnkoKCk9PntfLmhuKGEua2EsImJhY2tncm91bmQtY29sb3IiLCJ0cmFuc3BhcmVudCIpfSl9LHFJZT1jbGFzcyBleHRlbmRzIF8uZXl7Y29uc3RydWN0b3IoYSxiLGMsZCl7c3VwZXIoKTt0aGlzLm9hPWE7dGhpcy5rYT1iO3RoaXMuTmE9Yzt0aGlzLklhPWQ7dGhpcy5LYT10aGlzLkJhPXRoaXMuQWE9bnVsbH1tZWFzdXJlKCl7dGhpcy5BYT10aGlzLm9hLm9mZnNldEhlaWdodDt0aGlzLkJhPXRoaXMua2Euc3R5bGUudHJhbnNpdGlvbjt0aGlzLkthPXRoaXMua2Euc3R5bGUuYmFja2dyb3VuZENvbG9yfXdjKCl7Xy5obih0aGlzLklhLHtvcGFjaXR5OjB9KTtfLmhuKHRoaXMub2EsInRyYW5zaXRpb24iLCJoZWlnaHQgMzAwbXMgZWFzZS1vdXQiKTtfLmhuKHRoaXMub2EsImhlaWdodCIsCmAke3RoaXMuQWF9cHhgKTtfLmhuKHRoaXMua2EsInRyYW5zaXRpb24iLCJiYWNrZ3JvdW5kLWNvbG9yIDIwMG1zIGVhc2Utb3V0Iil9d2EoKXt2YXIgYT0obmV3IF8uUDliKS5hZGQob0llKHRoaXMpKSxiPWEuYWRkO3ZhciBjPXRoaXMua2EuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7dmFyIGQ9dGhpcy5OYS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtjPV8uV3goXy4keChfLlh4KChuZXcgXy5heSh0aGlzLmthLHtkdXJhdGlvbjozMDAsZWFzaW5nOiJlYXNlLW91dCJ9KSkub3JpZ2luKCJ0b3AgbGVmdCIpLGQubGVmdC1jLmxlZnQsZC50b3AtYy50b3AsMCksZC53aWR0aC9jLndpZHRoLGQuaGVpZ2h0L2MuaGVpZ2h0LDEpLDApO3JldHVybiBiLmNhbGwoYSxjKS5hZGQocEllKHRoaXMpKS5idWlsZCgpfU5qKCl7cmV0dXJuIDJFM31jbGVhbnVwKCl7Xy5obih0aGlzLm9hLHt0cmFuc2l0aW9uOiIiLGhlaWdodDoiIn0pO3ZhciBhO18uaG4odGhpcy5rYSx7dHJhbnNmb3JtOiIiLHRyYW5zaXRpb246KGE9CnRoaXMuQmEpIT1udWxsP2E6IiIsb3BhY2l0eToxLGJhY2tncm91bmRDb2xvcjp0aGlzLkthfSk7Xy5obih0aGlzLklhLHtvcGFjaXR5OjF9KX19O3ZhciBySWUsc0llO3JJZT1bImdOTzg5YiIsIlRnN0xaZCJdO3NJZT1uZXcgU2V0KCJwcm1kIHEgc3RpY2sgdGJhcyBybHN0IGh0cyIuc3BsaXQoIiAiKSk7Xy50SWU9W107Xy51SWU9W107Xy5ueWEoKTsKdmFyIHZJZT1mdW5jdGlvbihhKXt2YXIgYixjPShiPWEuU0xhKT09bnVsbD92b2lkIDA6Yi5rYSgpO2MmJihfLmhlKGMsImNsaWNrIixkPT57aWYoKGQ9ZC50YXJnZXQpJiZkLmNsb3Nlc3QoIi5ObmZwRmUiKSl7bGV0IGU7KGU9YS5TTGEpPT1udWxsfHxlLmRpc21pc3MoKX19KSxfLmhlKGMsImtleWRvd24iLGQ9Pnt2YXIgZT1kLnRhcmdldDtpZihlJiZlLmNsb3Nlc3QoIi5ObmZwRmUiKSYmKGQua2V5Q29kZT09PTEzfHxkLmtleUNvZGU9PT0zMikpe2xldCBmOyhmPWEuU0xhKT09bnVsbHx8Zi5kaXNtaXNzKCk7ZC5wcmV2ZW50RGVmYXVsdCgpfX0pKX0seEllPWZ1bmN0aW9uKGEpe3ZhciBiLGM9KGI9YS5QeSk9PW51bGw/dm9pZCAwOmIub2E7YS5nZXRSb290KCkuaGFzQ2xhc3MoIkJnUFByYyIpJiYhYS5FYSYmYyYmd0llKGMrOCszMil9LHpJZT1mdW5jdGlvbihhKXthLlBtJiYoXy50SWUucHVzaChfLiRKKG5ldyBfLmNlZSxhLlBtKSksYS5Hci5rYShfLlRkZSxhLlBtKSk7dmFyIGI9Cl8uRWllKHRIZShhLk9mKSwuLi5fLnRJZSxfLm5LLF8udXNlKTt5SWUmJl8uYUsoYixuZXcgbkhlKTthLkdyLmthKF8uWmRlLGEpO2EuR3IuaW5pdGlhbGl6ZShiLGEuT2YpfSxBSWU9ZnVuY3Rpb24oYSxiKXtpZighYXx8IWIpcmV0dXJuITE7Zm9yKDthJiZhIT09ZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50Oyl7aWYoYT09PWIpcmV0dXJuITA7bGV0IGM7YT0oYz1hLl9fb3duZXIpIT1udWxsP2M6YS5wYXJlbnRFbGVtZW50fXJldHVybiExfSxDSWU9ZnVuY3Rpb24oYSxiKXtpZihhLndhIT09Yil7dmFyIGM7aWYoYiE9PTJ8fCgoYz1hLlB5KT09bnVsbD92b2lkIDA6Yy5xaWEoKSkhPT0zKXN3aXRjaChhLndhPWIsYil7Y2FzZSAxOmEuZ2V0Um9vdCgpLmFkZENsYXNzKCJlbWNhdiIpO0JJZShhKTthLnh3Lk16KCEwKTt3SWUoMCk7YnJlYWs7Y2FzZSAyOmEuZ2V0Um9vdCgpLnJlbW92ZUNsYXNzKCJlbWNhdiIpO2EuZ2V0Um9vdCgpLmFkZENsYXNzKCJCZ1BQcmMiKTthLnh3Lk16KCExKTsKbGV0IGQ7KGQ9YS5QeSk9PW51bGx8fF8uUmtlKGQsMik7YnJlYWs7Y2FzZSAwOmEuZ2V0Um9vdCgpLnJlbW92ZUNsYXNzKCJlbWNhdiIpO2EueHcuTXooITEpO3dJZSgwKTtCSWUoYSwhMCk7YnJlYWs7ZGVmYXVsdDpfLmViKGIsdm9pZCAwKX19fSxESWU9ZnVuY3Rpb24oYSl7dmFyIGI9YS5vYSYmYS5yUj9hLkphKCJxMDBXQ2MiKS5oYigpOm51bGw7YiYmKGEuR2EucHVzaChiKSxhLklifHwoYT1iLmdldEF0dHJpYnV0ZSgiYXJpYS1sYWJlbCIpKSYmXy5UZmUoYixhKSk7cmV0dXJuIGJ9LEVJZT1mdW5jdGlvbihhKXtpZihhLm9mYil7bGV0IGI9YS5nZXRSb290KCkuZWwoKS5xdWVyeVNlbGVjdG9yKCIuUk5OWGdiIiksYz17Sk1hOmEuVmEoImFBSmdaIikuaGIoKSxVQWE6YS5PYixqTzphLmpPfTthLmJ1JiYoYy5idT1hLmJ1KTtSSGUoYS5vZmIsYyx7YW5pbWF0ZTooZCxlLGYsZyk9Pnt2YXIgaD1hLkhnLmdldFJvb3QoKS5oYigpO2lmKGImJmgpe3ZhciBrLG09KGs9YS5MbWEpPT1udWxsPwp2b2lkIDA6ay5nZXRSb290KCkuaGIoKTttJiZlLnB1c2gobSk7VEdlKGIsWy4uLmQsaF0sZSxmLGcpfWVsc2UgZigpfSxPJGI6ZD0+e2EuZ2V0Um9vdCgpLnRvZ2dsZUNsYXNzKCJQTTZYNGQiLGQpfSxrYWE6KCk9PnthLkhnLmthYSgpfX0pfX0sR0llPWZ1bmN0aW9uKGEsYixjKXt2YXIgZD1hLkhnLlBuKCk7Xy5CaGUoYik7Yj1uZXcgTWFwKFtbInZlZCIsXy55ZShjKV1dKTthLk5hJiZiLnNldCgidWFjdCIsIjUiKTt3SGUoYS5mb3JtLGIpO0ZJZShhLChuZXcgXy5IZGUpLnVMKGEuTmE/MzoxMikuc2V0UXVlcnkoZCkuYnVpbGQoKSl9LEhJZT1mdW5jdGlvbihhKXthLlphPSEwO3RyeXthLkhnLmZvY3VzKCl9ZmluYWxseXthLlphPSExfWEuQWIoKX0sSUllPWZ1bmN0aW9uKGEsYil7aWYoYS5vYSlyZXR1cm4hIWI7dmFyIGMsZCxlO3JldHVybiEhYnx8ISgoYz1hLkpHKT09bnVsbHx8IV8uRUhlKGMpKXx8KChlPShkPWEuUG0pPT1udWxsP3ZvaWQgMDpkLm5VKCkpIT1udWxsP2U6MCk+CjB9LFBJZT1mdW5jdGlvbihhLGI9ITEpe2lmKEpJZSl7Yj1LSWUoYSxiKTt2YXIgYz0hYjthLk9iLnN0eWxlLmRpc3BsYXk9Yz8iIjoibm9uZSI7YS5nZXRSb290KCkudG9nZ2xlQ2xhc3MoIm15NU1ZZSIsIWMpO0xJZShhLGIpO3ZhciBkOygoZD1hLlBtKT09bnVsbD8wOnhIZShkKSk/TUllKGEsITEpOk1JZShhLCEwKTsoeUllfHxOSWUpJiZPSWUoYSxiKX19LFFJZT1mdW5jdGlvbihhLGIsYz0hMSxkPSEwLGU9ITApe2EuSGcuUWphKGIsYyxkLGUpO3ZhciBmOyhmPWEuTG1hKT09bnVsbHx8ekhlKGYsSUllKGEsYikpfSx3SWU9ZnVuY3Rpb24oYT0wKXt2YXIgYj1kb2N1bWVudC5nZXRFbGVtZW50QnlJZCgic2ZjbnQiKTtiJiYoYi5zdHlsZS5wYWRkaW5nQm90dG9tPWAke2F9cHhgKX0sUkllPWZ1bmN0aW9uKGEsYil7Yj1hLmVvYShiKTt2YXIgYzsoYz1hLkpHKSE9bnVsbCYmKGMuZUw9Yik7d0hlKGEuZm9ybSxiKX0sVEllPWZ1bmN0aW9uKGEsYj0wKXt2YXIgYz1hLkhnLlBuKCk7YS5PSChjLApiKTt2YXIgZDsoZD1hLloyKT09bnVsbHx8ZC5TJChjKTthLkFhJiZhLkhnLlBuKCkmJmEuQWEuUGEoKTthLkV2YSYmYS5IZy5QbigpJiZhLkhnLkdoYSgpIT09MCYmYS5FdmEuQWEoKTshYS5uYiYmYS5IZy56dCYmYS5IZy5QbigpJiYoXy5FdihhLkhnLnp0KSxhLm5iPSEwKTt2YXIgZTsoZT1hLkxtYSk9PW51bGx8fHpIZShlLElJZShhLGMpKTthLmthJiZhLkhnLmthYSgpO3ZhciBmLGc7KChnPShmPWEuUG0pPT1udWxsP3ZvaWQgMDpmLm5VKCkpIT1udWxsP2c6MCk+MCYmYS5IZy5mb2N1cygpO1NJZSYmYS5ldmVudHMuUHgoMTIsYyl9LEZJZT1mdW5jdGlvbihhLGIpe3ZhciBjLGQ9ISgoYz1hLkpHKT09bnVsbHx8IV8uRUhlKGMpKSxlLGY7Yz0oKGY9KGU9YS5QbSk9PW51bGw/dm9pZCAwOmUublUoKSkhPW51bGw/ZjowKT4wO2lmKCFfLnRuZShiLnF1ZXJ5KXx8ZHx8Y3x8Yi5xM2Epe3ZhciBnO2lmKChnPWEuUG0pPT1udWxsfHwheEhlKGcpKXthLk9hPSEwO2U9YS5ldmVudHM7Yi5zTD09PQoxP2UuUHgoMyxiKTplLlB4KDEsYik7UkllKGEsYi5zTCk7dmFyIGgsaztlPShrPShoPWEubGopPT1udWxsP3ZvaWQgMDpoLmNOKCkpIT1udWxsP2s6ITE7dmFyIG07aD0oKG09Yi5wYXJhbWV0ZXJzKT09bnVsbD92b2lkIDA6bS5nZXQoInVkbSIpKT09PSg1MCkudG9TdHJpbmcoKTtpZigoY3x8ZXx8aCkmJlVJZSl7dmFyIG4scDttPShWSWU/MTA6MSktKChwPShuPWEuUG0pPT1udWxsP3ZvaWQgMDpuLm5VKCkpIT1udWxsP3A6MCk7dmFyIHI7KHI9YS5QbSk9PW51bGx8fFBIZShyLGIucXVlcnl8fGEuSGcuUG4oKSxtKX1pZihhLlBtKXtuPWEuZm9ybTtwPWEuUG07aWYocC5Yei5sZW5ndGg9PT0wKXZhciB4PW5ldyBNYXA7ZWxzZXtyPW5ldyBNYXAoW1siZ3Nlc3Npb25pZCIscC5pU2FdLFsibG5zX21vZGUiLCJjdnN0Il0sWyJsc2Vzc2lvbmlkIixwLldJYV1dKTtfLndjZSYmKHIuc2V0KCJ1ZG0iLCI1MCIpLHIuc2V0KCJhZXAiLCIxMDciKSk7cC5Yei5sZW5ndGg9PT0xJiYobT1wLlh6WzBdLnJlcXVlc3RJZCwKXy5vYWUobSxfLnhlKG0sMikrMSkpO2Zvcih2YXIgeiBvZiBwLlh6KW09bmV3IFVpbnQ4QXJyYXkoMTYpLGNyeXB0by5nZXRSYW5kb21WYWx1ZXMobSksXy5xYWUoei5yZXF1ZXN0SWQsbSk7Zm9yKGxldCBbWSxkYV1vZiBNSGUocCkpci5zZXQoWSxkYSk7ej1uZXcgXy5VYmQ7Zm9yKHggb2YgcC5YeikoeCBpbnN0YW5jZW9mIF8uaGRlfHx4IGluc3RhbmNlb2YgXy5lZGUpJiZfLlVjZSh6LHguQWEoKSk7Xy5WY2UoeikubGVuZ3RoPjAmJnIuc2V0KCJhYWkiLF8uT2EoKDAsXy5XY2UpKHopLDQpKTt4PXJ9d0hlKG4seCl9dmFyIEI7cD1hLmxqO3I9YS5QbTt6PWIuc0w7bj1iLndtO3ZhciBIO3g9bnVsbDtzd2l0Y2goKEg9cD09bnVsbD92b2lkIDA6cC5rWigpKSE9bnVsbD9IOjApe2Nhc2UgNDp4PW5ldyBNYXAoXy5LZmUpO2JyZWFrO2Nhc2UgMTp4PW5ldyBNYXAoXy5MZmUpO2JyZWFrO2Nhc2UgMjp4PW5ldyBNYXAoXy5NZmUpO2JyZWFrO2Nhc2UgOTp4PW5ldyBNYXAoXy5OZmUpfXZhciBKOwpIPShKPXA9PW51bGw/dm9pZCAwOnAub2EpIT1udWxsP0o6ITE7dmFyIE47Sj0oKE49cj09bnVsbD92b2lkIDA6ci5uVSgpKSE9bnVsbD9OOjApPjA7eHx8IUgmJiFKfHwoeD1uZXcgTWFwKF8uTmZlKSk7dmFyIFE7Tj0oUT1wPT1udWxsP3ZvaWQgMDpfLkRmZShwKSkhPW51bGw/UTowO3gmJihOPT09NCYmeC5zZXQoImFydiIsIjEiKSx4LnNldCgiY3MiLFNIZS5MbWI/IjEiOiIwIikpO1E9KHA9PW51bGw/dm9pZCAwOnAucDkoKSk9PT0yfHwocD09bnVsbD92b2lkIDA6cC5wOSgpKT09PTM7aWYoej09PTEmJihuPT1udWxsPzA6bi5rYSgpLmluY2x1ZGVzKDkwOCkpJiZRKXt2YXIgWjsoWj14KT09bnVsbHx8Wi5zZXQoImFlcCIsKDEzNSkudG9TdHJpbmcoKSl9U0hlLk9BYyYmKFo9KG5ldyBVUkwod2luZG93LmxvY2F0aW9uLmhyZWYpKS5zZWFyY2hQYXJhbXMuZ2V0KCJhdHZtIikpJiYoeHx8KHg9bmV3IE1hcCksKEI9eCk9PW51bGx8fEIuc2V0KCJhdHZtIixaKSk7KEI9eCkmJndIZShhLmZvcm0sCkIpO2lmKGQpUUllKGEsYi5xdWVyeSwhMCwhMCwhMSksQ0hlKGEuSkcsYiksYS5IZy5ibHVyKCksYS54dy5NeighMSk7ZWxzZXtsZXQgWTsoZD0oWT1hLloyKT09bnVsbD92b2lkIDA6WS5IdWMoYi5xdWVyeSkpJiZRSWUoYSxkLCEwLCExLCExKTthLmZvcm0uc3VibWl0KCl9YS5BSCgpfX1lbHNlIFJJZShhLGIuc0wpfSxCSWU9ZnVuY3Rpb24oYSxiPSExKXtpZihhLkpHJiZhLmdldFJvb3QoKS5oYXNDbGFzcygiQmdQUHJjIikpe3ZhciBjOyhjPWEuUHkpPT1udWxsfHxfLlJrZShjLDEpO2I/V0llKGEpOmEuZ2V0Um9vdCgpLnJlbW92ZUNsYXNzKCJCZ1BQcmMiKX19LFdJZT1mdW5jdGlvbihhKXthLkVhPSEwO3ZhciBiPW5ldyBxSWUoYS5KYSgiWlpaaWhlIikuaGIoKSxhLkphKCJtTnh4eWMiKS5oYigpLGEuSmEoIng1UUVnZSIpLmVsKCksYS5KYSgiVktpY3dmIikuZWwoKSk7KDAsXy5pbykoYikudGhlbigoKT0+e2EuZ2V0Um9vdCgpLnJlbW92ZUNsYXNzKCJCZ1BQcmMiKTthLkVhPQohMTtiLmNsZWFudXAoKX0sKCk9PnthLmdldFJvb3QoKS5yZW1vdmVDbGFzcygiQmdQUHJjIik7YS5FYT0hMTtiLmNsZWFudXAoKX0pfSxZSWU9ZnVuY3Rpb24oYSxiKXtpZihhLkhnLk9pKCkpe2lmKGIuZGVmYXVsdFByZXZlbnRlZClyZXR1cm47YS54dy5NeighMSl9WEllJiYoMCxfLm1mKSgoKT0+e0FJZShkb2N1bWVudC5hY3RpdmVFbGVtZW50LGEuZ2V0Um9vdCgpLmVsKCkpfHxhLlBhKCl9KX0sWkllPWZ1bmN0aW9uKGEsYil7WEllPyhhPWEuZ2V0Um9vdCgpLmVsKCksXy5YZyhhLCJrcnM3U2MiLGIpKTphLmdldFJvb3QoKS50b2dnbGVDbGFzcygiZkgydFYiLGIpfSxLSWU9ZnVuY3Rpb24oYSxiPSExKXt2YXIgYz1hLkhnLkFhLGQ9YS5IZy5QbigpLmxlbmd0aD4wLGUsZjthPSgoZj0oZT1hLlBtKT09bnVsbD92b2lkIDA6ZS5uVSgpKSE9bnVsbD9mOjApPjA7cmV0dXJuIGJ8fGF8fGMmJmR9LExJZT1mdW5jdGlvbihhLGIpe2lmKGEuYnUpaWYoTkllKWEuYnUuc3R5bGUuZGlzcGxheT0KIm5vbmUiO2Vsc2V7dmFyIGMsZCxlPShkPShjPWEubGopPT1udWxsP3ZvaWQgMDpjLmthKCkpIT1udWxsP2Q6ITE7YS5idS5zdHlsZS5kaXNwbGF5PWUmJmI/IiI6Im5vbmUifX0sTUllPWZ1bmN0aW9uKGEsYil7Zm9yKGxldCBjIG9mIGEuU2EpYj8oYy5yZW1vdmVBdHRyaWJ1dGUoImRpc2FibGVkIiksYy5yZW1vdmVBdHRyaWJ1dGUoImFyaWEtZGlzYWJsZWQiKSk6KGMuc2V0QXR0cmlidXRlKCJkaXNhYmxlZCIsInRydWUiKSxjLnNldEF0dHJpYnV0ZSgiYXJpYS1kaXNhYmxlZCIsInRydWUiKSl9LE9JZT1mdW5jdGlvbihhLGIpe2lmKGEuak8mJmEub2Epe3ZhciBjLGQsZT0oZD0oYz1hLmxqKT09bnVsbD92b2lkIDA6Yy5rYSgpKSE9bnVsbD9kOiExO2lmKE5JZSliPSFlfHxlJiZiO2Vsc2UgaWYoYS5yUiliPSFlO2Vsc2V7dmFyIGY7bGV0IGc7Yz0oZz0oZj1hLmxqKT09bnVsbD92b2lkIDA6Zi5vYSkhPW51bGw/ZzohMTtmPWEuSGcuUG4oKS5sZW5ndGg+MDtiPWJ8fGN8fGUmJmZ9YS5qTy5zdHlsZS5kaXNwbGF5PQpiPyIiOiJub25lIn19LGNKZT1mdW5jdGlvbihhKXt2YXIgYixjLGQ9KGM9KGI9YS5saik9PW51bGw/dm9pZCAwOmIub2EpIT1udWxsP2M6ITEsZSxmO2I9KGY9KGU9YS5saik9PW51bGw/dm9pZCAwOmUua2EoKSkhPW51bGw/ZjohMTt2YXIgZyxoO2U9KGg9KGc9YS5saik9PW51bGw/dm9pZCAwOmcuY04oKSkhPW51bGw/aDohMTtnPSFkJiYhYjskSWUmJmEuZ2V0Um9vdCgpLnRvZ2dsZUNsYXNzKCJJZ2dwaCIsZSk7YS5yUiYmWkllKGEsZSk7aWYoYS5yUiYmYUplKXt2YXIgaztoPSEoKGs9YS5saik9PW51bGw/MDprLmNOKCkpO2s9YS5IZy5QbigpLmxlbmd0aD09PTA7dmFyIG0sbjtmPSEoKG09YS5saik9PW51bGx8fCFtLm9hKSYmISgobj1hLmxqKT09bnVsbD8wOm4uRWEpO3ZhciBwO209ISgocD1hLmxqKT09bnVsbHx8IXAua2EoKSk7cD1rJiYoZnx8bSk7aWYoaHx8cCl7dmFyIHI7KHI9ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoIkxTOE9KIikpPT1udWxsfHxyLmNsYXNzTGlzdC50b2dnbGUoIndmMEhtYiIsCnApfX1pZihiKWQ9YS5sai5rWigpLGEuSGcuek4odkhlKGQpKTtlbHNle2xldCBILEo7ZHx8KChKPShIPWEuUG0pPT1udWxsP3ZvaWQgMDpILm5VKCkpIT1udWxsP0o6MCk+MD9hLkhnLnpOKHZIZSg5KSk6YS5IZy5HYSgpfWc/YS54dy5NeighMSk6SEllKGEpO2lmKGJKZSl7dmFyIHg7KHg9YS5CYSk9PW51bGx8fHguYW5pbWF0ZShlKTtpZihlKXt4PWEueHcuZ2V0Um9vdCgpLmVsKCk7dmFyIHo9YS5KYSgiUk5OWGdiIikuaGIoKSxCOyhCPWEuQmEpPT1udWxsfHxJSGUoQix4LHopfWVsc2Uoej1hLkJhKT09bnVsbHx8SkhlKHopfUI9S0llKGEpO0xJZShhLEIpO09JZShhLEIpfSxETD1jbGFzcyBleHRlbmRzIF8uaHN7Z2V0IG9hKCl7cmV0dXJuIHRoaXMuclI/ZEplOnlJZX1zdGF0aWMgUWEoKXtyZXR1cm57c2VydmljZTp7U2I6Xy5wdixicDpfLmt2LFdiOl8uaXd9LEFQYjp7eHc6e2pzbmFtZToiVVViVDkiLGN0b3I6Xy5xS319LG1vZGVsOntHcjpfLmVLLGV2ZW50czpfLkRkZSxMazpfLmhmZSwKWmM6Xy50Z2UseUw6Xy5CbmUsdGFhOl8uY2FlfSxMbDp7Skc6Xy5WZ2UsUHk6Xy55a2UsWjI6Xy5JbWUsUG06Xy5GWmEsbGo6Xy5uZmUsVnhhOl8uem1lLE9TOl8ucGxlfSxjb250cm9sbGVyOntIZzp7anNuYW1lOiJnTEZ5ZiIsY3RvcjpfLmhLfX0sT2M6e2F4ZDp7anNuYW1lOiJCNnJnYWQiLGN0b3I6Xy5JbGV9LHFEYzp7anNuYW1lOiJSNW1neSIsY3RvcjpfLnpofSxwRGM6e2pzbmFtZToieDVRRWdlIixjdG9yOl8uWmtlfSxFdmE6e2pzbmFtZToiVWZiNVljIixjdG9yOl8uT2xlfSxTTGE6e2pzbmFtZToiUVdHdk5iIixjdG9yOl8uQ3l9LExtYTp7anNuYW1lOiJSUDB4b2IiLGN0b3I6Xy5jZ2V9LG9mYjp7anNuYW1lOiJ5ZGpyRWYiLGN0b3I6Xy5mbWV9fX19Y29uc3RydWN0b3IoYSl7c3VwZXIoKTt0aGlzLmZvcm09dGhpcy5nZXRSb290KCkuY2xvc2VzdChfLkhLYigiZm9ybSIpKS5oYigpO3RoaXMuSWE9ZG9jdW1lbnQucXVlcnlTZWxlY3RvcigiI3RvcGhmIik7dGhpcy5aYT10aGlzLm5iPQp0aGlzLk9hPXRoaXMuTmE9ITE7dGhpcy5rZD1fLm5pKHRoaXMuZ2V0RGF0YSgiYmlib2UiKSwhMSk7dGhpcy5JYj1fLm5pKHRoaXMuZ2V0RGF0YSgiYWx0IiksITEpO3RoaXMuclI9Xy5uaSh0aGlzLmdldERhdGEoImhwIiksITEpO3RoaXMuSmI9ITE7dGhpcy5TYT1bXTt0aGlzLkVhPXRoaXMua2E9ITE7dGhpcy5GYj1fLmhpKCkuc2Nyb2xsWTt0aGlzLlJhPSEwO3RoaXMuR3I9YS5tb2RlbC5Hcjt0aGlzLmV2ZW50cz1hLm1vZGVsLmV2ZW50czt0aGlzLkxrPWEubW9kZWwuTGs7dGhpcy5aYz1hLm1vZGVsLlpjO3RoaXMueUw9YS5tb2RlbC55TDt0aGlzLlZ4YT1hLkxsLlZ4YTt2YXIgYj1hLnNlcnZpY2UuYnA7dGhpcy5CYT1iSmUmJiF5SWU/bmV3IF8ueWxlKHRoaXMuVmEoIklWbUYxZSIpLmhiKCksdGhpcy5WYSgiSFFqMEEiKS5oYigpLHRoaXMuVmEoIkpvRWZ6YyIpLmhiKCksYik6bnVsbDtfLmJhZShhLm1vZGVsLnRhYSk7dGhpcy5PZj1hLm1vZGVsLnRhYS5WQigpO3RoaXMuTGsuTmEuYWRkKHRoaXMpOwp0aGlzLlNMYT1hLk9jLlNMYTt2SWUodGhpcyk7dGhpcy5BYT1hLk9jLnBEYzt0aGlzLlBtPWEuTGwuUG07dGhpcy5saj1hLkxsLmxqO3RoaXMuRXZhPWEuT2MuRXZhO3RoaXMuSkc9YS5MbC5KRzt0aGlzLlB5PWEuTGwuUHk7dGhpcy5aMj1hLkxsLloyO3RoaXMuSkcmJnRoaXMuZ2V0Um9vdCgpLmhhc0NsYXNzKCJCZ1BQcmMiKT90aGlzLndhPTI6dGhpcy53YT0wO3RoaXMuSGc9YS5jb250cm9sbGVyLkhnO3RoaXMuTG1hPWEuT2MuTG1hO3RoaXMueHc9YS5BUGIueHc7dGhpcy5PYj10aGlzLkphKCJVZGZWWGMiKS5oYigpO3RoaXMuak89dGhpcy5WYSgiQjZyZ2FkIikuaGIoKTt2YXIgYz0oKT0+e3ZhciBrOygoaz10aGlzLkpHKT09bnVsbD8wOl8uRUhlKGspKT90aGlzLkhnLkdhKCk6dGhpcy5IZy56TigiIil9O3RoaXMuSkcmJihjKCksXy5ta2UodGhpcy5KRywoKT0+dm9pZCBjKCkpKTt2YXIgZDsoZD10aGlzLlB5KT09bnVsbHx8RkhlKGQsKCk9PnsoTnVtYmVyKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJzZmNudCIpLnN0eWxlLnBhZGRpbmdCb3R0b20ucmVwbGFjZSgicHgiLAoiIikpfHwwKSE9PTAmJnhJZSh0aGlzKX0pO3pJZSh0aGlzKTt0aGlzLmZvcm0ucmVtb3ZlRXZlbnRMaXN0ZW5lcigia2V5ZG93biIsXy5lYS5zYm1saGYpO18uaGUoZG9jdW1lbnQsImNsaWNrIixrPT57dmFyIG09ZUplP2RvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJ1tqc25hbWU9IkxOSXRWYiJdJyk6bnVsbDtBSWUoay50YXJnZXQsdGhpcy5nZXRSb290KCkuZWwoKSl8fEFJZShrLnRhcmdldCxtKXx8KHRoaXMueHcuTXooITEpLHRoaXMueHcuQWEoKSYmXy5qbGUodGhpcy54dyksdGhpcy54dy5aYSgpLENJZSh0aGlzLDApLChYSWV8fHlJZSkmJnRoaXMuUGEoKSl9LCEwKTtfLmhlKGRvY3VtZW50LCJrZXlkb3duIixrPT57dmFyIG09ay5qZztpZihrLmtleUNvZGUhPT0xM3x8dGhpcy5IZy5PaSgpKXt2YXIgbj10aGlzLnh3O2lmKG4ua2EubGVuZ3RoKXN3aXRjaChtLmtleUNvZGUpe2Nhc2UgMzg6bi53YSE9PW51bGwmJihuLkFhKCk/bi5FYVtuLm9hXS5rYS51cCgpJiYoXy5hbGUobi53YSwKbi5rYVtuLm9hXSk/R0hlKG4sbi5JYS0xPT09bi5PYT8tMTpuLklhLTEsMzgpOkdIZShuLG4ub2EtMSwzOCkpOkdIZShuLG4uUmE9PT0wP24uT2E6bi5rYS5sZW5ndGgtMSwzOCkpO2JyZWFrO2Nhc2UgNDA6bi53YSE9PW51bGwmJihuLkFhKCk/bi5FYVtuLm9hXS5rYS5rY2EoKSYmKF8uYWxlKG4ud2Esbi5rYVtuLm9hXSk/R0hlKG4sbi5JYSsxLDQwKTpHSGUobixuLlNhPT09bi5PYT8tMTpuLlNhKzEsNDApKTpHSGUobixuLlJhPT09MD9uLm9hKzE6bi5PYSsxLDQwKSk7YnJlYWs7Y2FzZSAzNzpuLkdhKCkmJihISGUobiwhMSksbS5wcmV2ZW50RGVmYXVsdCgpKTticmVhaztjYXNlIDM5Om4uR2EoKSYmKEhIZShuLCEwKSxtLnByZXZlbnREZWZhdWx0KCkpO2JyZWFrO2Nhc2UgMjc6Xy5qbGUobik7bi5aYSgpO2JyZWFrO2Nhc2UgOTpuLkdhKCkmJm4uRWFbbi5LYV0ub2EuWEdhKG5ldyBfLmtyYShtLG4uZ2V0Um9vdCgpLG4uZ2V0Um9vdCgpKSk7YnJlYWs7Y2FzZSAxMw=="}},"time_used":38,"timings":{"blocked":-1,"dns":0,"connect":0,"send":0,"wait":11,"receive":27,"ssl":0},"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"fonts.gstatic.com/s/googlesans/v29/4UaGrENHsxJlGDuGo1OIlL3Owp4.woff2","fqdn":"fonts.gstatic.com","domain":"gstatic.com","tld":"com"},"ip":{"addr":"142.250.178.67","port":443,"asn":15169,"as":"GOOGLE","country":"United States","country_code":"US"},"is_navigation_request":false,"resource_type":"font","requested_by":"https://www.google.com/","date":"2026-07-27T15:33:56.315Z","timestamp":1785166436315,"http_version":"HTTP/3","security_state":"secure","security_info":{"cipher_suite":"TLS_AES_128_GCM_SHA256","key_group_name":"mlkem768x25519","signature_name":"ECDSA-P256-SHA256","protocol":"TLSv1.3","cert":{"subject":{"commonName":"*.gstatic.com","organization":""},"issuer":{"commonName":"WE2","organization":"Google Trust Services"},"validity":{"start":"Mon, 29 Jun 2026 08:39:25 GMT","end":"Mon, 21 Sep 2026 08:39:24 GMT"},"fingerprint":{"sha1":"4E:F2:73:C6:27:16:58:35:FE:55:D5:30:6B:E8:6D:2B:DA:B0:E8:7B","sha256":"82:EF:6A:61:96:A5:23:D6:2C:2C:9D:77:67:04:D8:7B:3B:6A:50:DA:3C:6C:6A:5F:4E:2D:55:F3:FC:DA:0B:EE"}}},"request":{"raw":"GET /s/googlesans/v29/4UaGrENHsxJlGDuGo1OIlL3Owp4.woff2 HTTP/1.1\r\nHost: fonts.gstatic.com\r\nUser-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:134.0) Gecko/20100101 Firefox/134.0\r\nAccept: application/font-woff2;q=1.0,application/font-woff;q=0.9,*/*;q=0.8\r\nAccept-Language: en-US,en;q=0.9\r\nAccept-Encoding: identity\r\nReferer: https://www.google.com/\r\nOrigin: https://www.google.com\r\nSec-GPC: 1\r\nConnection: keep-alive\r\nSec-Fetch-Dest: font\r\nSec-Fetch-Mode: cors\r\nSec-Fetch-Site: cross-site\r\nPragma: no-cache\r\nCache-Control: no-cache\r\n\r\n","headers":null,"cookies":null,"method":"GET"},"response":{"raw":"HTTP/3 200 \r\naccept-ranges: bytes\r\naccess-control-allow-origin: *\r\ncontent-security-policy-report-only: require-trusted-types-for 'script'; report-uri https://csp.withgoogle.com/csp/apps-themes\r\ncross-origin-resource-policy: cross-origin\r\ncross-origin-opener-policy: same-origin; report-to=\"apps-themes\"\r\nreport-to: {\"group\":\"apps-themes\",\"max_age\":2592000,\"endpoints\":[{\"url\":\"https://csp.withgoogle.com/csp/report-to/apps-themes\"}]}\r\ntiming-allow-origin: *\r\ncontent-length: 39516\r\nx-content-type-options: nosniff\r\nserver: sffe\r\nx-xss-protection: 0\r\ndate: Wed, 22 Jul 2026 13:10:11 GMT\r\nexpires: Thu, 22 Jul 2027 13:10:11 GMT\r\ncache-control: public, max-age=31536000\r\nlast-modified: Tue, 23 Feb 2021 01:47:39 GMT\r\ncontent-type: font/woff2\r\nage: 440625\r\nalt-svc: h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000\r\n\r\n","headers":null,"cookies":null,"status_code":"200","status_text":"","fingerprints":null,"data":{"size":39516,"size_decoded":40329,"mime_type":"font/woff2","magic":"Web Open Font Format (Version 2), TrueType, length 39516, version 1.0","md5":"9436affc97843765a966b3568fa7e5ec","sha1":"7bfda74bb30589c75d718fbc997f18c6d5cc4a0b","sha256":"7165713d3e1a610399471a5e93d5677508f62ef072c1151e72273bf4bd54f916","sha512":"473ec3a843c33e18d6d194651fe11353fcd03a7959225faeabf8c77484155ea6a7bccb72dbaf2093ed53c408faa3be9f6fc907f7a5ddf8223375f9d09b504456","ssdeep":"768:eUEh2+iKBVQbBhu8vjenqz2Ez6Y/AxHLEaP72sV9qKYbDblXqhP8qwFSE3uk:eUEEoBVQDjeQaLnP2pfZTqgSEB","tlshash":"1703f112148f7fa1c244f224a4efe416acc3f565aba15e6980b8b7c7010e3c657a46fa","first_seen":"2023-04-17T12:01:39Z","last_seen":"2026-08-16T23:21:35.734848Z","times_seen":83873,"resource_available":false,"data":"d09GMgABAAAAAJpcABQAAAABcyAAAJnmAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGoUFG4GeLhyVND9IVkFSig8GYD9TVEFUgRQnKACFFi+BABEICoGtUIGLTAuFKgAwgsNeATYCJAOKTAQgBYU0B5A8DAdbFl5xAT1tB55c522rRUB65cSK6eZO5LbB73ucV1DMFezYK4DzkKDws7+a/f9/UlIZQ9O6JS0AIE79QUcRESCoLLUgGUk1dkRyzFZnqcTIhUTGyUS0ndglWjflKsRvGdFom6C5pzNRL7d1Nw8mOC7i6eYK0dSWCu+iG/O8EjNK5IwY+sV6sWv96/SqJzS5g0cn3Z3yuClLh/g3JG1BVITsu0NQQVerD4r54XbHgX6Qk7jvs+3qPVOk3a8wTWI17N6LFmRozmElNEYamfXtw98YGJa2euSXsOfN2xKiS7qkQ8swsvr0/n88uTqw0M37idtdB9gt+BcTaWmGxRzLk4d4u/o/VT3bsxD6m87sUE5/TqRyRGZv7xHN+T+7p7nESQIPQgjmQTQUKqhUBTxQvMYrECpGP1Bzo6JQcSr/FS81zfD83HrCVEoR6cFYZP7/t7/8678NGFWSKiFgYwVWnxdp5qU2xpXVl9bdeVHqz+vKfw9fljS05PUD/sBBrpOmS1Na0tif+haAE8PCgKRL8TXGW8/bHxd2UVFkfMqHhUIuTyQ03UkUQuBSfL+Pdz3nnvdXmdjVR5jI7KApz+4REqEorMMiPMKC5Q/mtJJkGSjGUB1wHO5MoCnxtIOAmx4A/49f93oT/Jag7QQcR/r5ef9nVGgvJKcfzTzwckKCP/j/2GbP/6FGoUhISNAAwUpLfdoRe+qbndhfLIdL/3vrzTeTa1L5yc36ZyMwQyAQiO7uSbJyljP9W7fzCGda/l5r00q06v6gTkspQo5xe+Rh/XFq6j4t6w8jc4ECdWIkSZZkwNBSTkuy43RPyhy2vATpAkNxIPEU4Zj8db4FepZTWmA+zGXfl2S7u5MM0QLT5bbHw0j2wH48n5cgjzPpDrRJ4gL/v7n+v96nKNTppC/gB0SF6qsBMnr0M3qWH2FG2KcGgC9hwlV1Djz1a73ffWlm7+4+xA4A2SiR6BiXM/NAxmkqD0gfcTFBAAIH50ocG0GkwE34WSIl/+xmD7FA+FTgpCXe/ba/HV2wC9pNQbopmC3PKlsLkg/C+OOLP74Y0UVsEZsqskFsEGvEGlmKamQVdOojj9gChMmY+0u7r6dX/8+mVVpfZXna3r07yXugY99FiKEHONoLUg7C6qpqV1d/tVtSD4j8ZqRha8CwYFjoUtv3ZNkD9qLhANlehvA4BIw5uuiyyy+lIEmZov0etXmMrIq0NZU2vATC7/Lx5agTsS3UeVG/b2rSmyuNHWRNTjqqiMbtfaDbtIoTAsLWXzOSV6tVWiUkAOBg4DXLIdMAFvj//l6f72wMrXSwaBxb2al4Ek+nPIxL6RxA/QTwffpK1a7/gWD0KdkpNOSl5czSTMLJZ9ZWPMtVgsKsp9mW25zmOqePblJAowmx0aAUoiGVgSYVN0DZboByDIGKQ5qUh6RoZ5GzbPspewMgnSaYBVxUluhNS7ZFM7d1W06XOR7nmMzhfhz752q6f2fPoY5LswgHv2HXtYdg4XrPw15AaRbgEqQQpiE2tSQwX8J3ZQd1vNQ9PO/7G/t934Gb7kfvdMdpnZZ1iQgR4aREhPR5/08dIrt9fW7itv0q2HfsfMxeMoiIiIQQJIiIiF1IGLpMWjqc9/KCo3Q6jjG1YNZ4OodZyxpD1SDRE4+T2PaPscyKMfu8ttnvy+2aX2GAUUZEQGKvW25iEnqdEJPWl+Uh+d8AgSADtgRxLYjHYBREBwk1CVKpAY7oHFCkFIC4kfPXKl26SOlyVVjuqFatGj3S6rv/I8ZLB2s/XhBIRPRDo8H1INFkXJpCVKqsZEhJXnAWAcxMidpzGn3JVh6h4X0R8CPW26HuG6PQm2IpE3AV7U2FcPAAASnT+EBA6JANQMMp/vg0MNtcgsALNxjgQDgazocr4AZ4ePinMOI1eVMAu9otxfZAmjpUgoOV6g7hv6kgC7K4rSUPzbdz3AvovP0fwEruMdbGd/Hhyf/c/afnf/Hy7737K2BLAGB63NW3B/bhM6PpB4N5887xCb5ndsfPdon6HZnzd6Lj98Lj7z1/U/Zf/PTZj588VX4AGgKFcWbP7+aR/5olVhOtGLnnl7c/ML8xqaPgfTcj6cDh4ZiBgzcSUAqEWV80FVQX/NpxkG+pasBuIrJV9MdTYVsi0hvGwrhKDUkUDixbbKPTLmupb4v6PMRRTMv0zZK3F188D2b17Ez2wD447z7AlJOG/540QCZ+ndrMkbGJqZm5haUVFO/Kaedc9LVv3HbXfQ898p3v/eyJ37zIIRbxkBBZA9ZdBMDSrUt4l/u4Ai670i2ZyIvOUfFJipcpvUKv+RJhensh7gDcCbgLcHdF9+BewH1A99MD9DQ9g2cBzwFeYhW+7pKuGlpT7ljNKjW8QMlFpYztNNEZolEuQ/n0+rFi3QURbgTjaOEG3+IOinuA7qUH8LSEfkYv3nJzOVWtvUSMhE4IkVyOhKuuQvmMlPtK9mV30ZhiKFYjSXcZ8zQpo0JKV3Q3PY3n6ERGX4GN5ijJXO6vCFwh9JrXJApjpKRCiprRrk5ggyWQ3lxQIUx16F48V/BQyha7UPAY4ASbvVVB+gAwZL2yD1UdGidhtMjCaK9bbXIY0QIeYAAuK3wcNrrUR+KpWA0SQGmclWcBQdPNQiM70GuAUSUbyQLEqDtTeGizdFlo/OyxJ7xTVwxg9NpW0ARGY4wmMYAYgmyaRAWUKpF2TzPOIVNdGvOvSW8opUuEDskIJUIXZBwWpHnY2xaQU0EwcP5xcW/n0Ka/AcY0i5FaA4Dtb4CTAN2xdjAQ1a6R0hTUA/wRwkM48GDnzQvsxroHW5hjpR/e7qhHc004mYJTpwUWHBfYfaUZs5Nnas+scxhf+NrK17MTLvX2w8LalXvFLTVu9ygo9e2QChMuCScbJ7C+Ezeu4ftMCzgqSkl2sbrR958bDnNXn8kITOrQk8HAmxON1/qHabu7v3OjufPfvXvX87Do7u/9vocKwax/lfMeFj6sfNj4CPxtYWYQNbDIg5qWjrtQ0YLEShVuiKESDJctSa5JhqtkoDfNdIVmmqXYHHOVqtWg3HLLVVhpjX/dcku1O5oZvNNmpm7d5ujxi4UxiIF5mZSlNuto/ldUdvUYsbsT1I37OAlbt/BO/fl3K5X07UXLus36sH5NWBdwgIA+ceCt39hcYZoUPPrLnRBPeVcMBSC/GZIA4p3E6XtFuPQlILOkUUK1fghaTTcxUtCA7N/JgVN851E1h9SghfsTgUShMdiHeqYKT4uf/ljeILCgRAWjy664xrD1JhFeE6cKhIStUb22KofaLZOMvgQLqJJRRhIToDDNRgin79roL2AvuJeM+w/BIY3WPuLxndF8Kh3l2daJM2i1WhQHlP8dc9MASEUOeLnQOM7YDfmfUnwk76EHUoGQLlEVJ5DcFR4bCCwNSN7qWmVEnRo18ADHlJ0F/YbWkwbFk4fvLkq2g4QX9AZGTwehRAzuo8tW9IdSGJU8kLgDKkKriVPmCvRR8gCndRwylRMnIFMk6YSqRMnmvj7WVl+T+GsoAs4jqDktgp+PRn4iUcfVxzJtikCi0BjshqyBp6tV3yS6nBmBn3ECoEiVU7Zndsieg1jYOLh4hFcJ3ZyU+mRATkGZqtIPdddOTw2bpicmU+LMyAICQ1jZstOfAzhzZZH7zIMwXj7+QrkUBriIqJi4MuVVhFUJqlSrUatOvaaaM9JaW4zaUYfxJjQR6vSt60vdoMekppmmP80w04BZZptjrnnmW2ChRRa3JHZLwWDMrQcNI4Jfw4hAotAY7KnlG6Iyv4e/FETcWd98dQWWAt/YJwmXRo3/J8GTgi079hw4cuLMhftoi0kaERElzjbsXLYDKn4ll69KN9b4fwko2LJjz4EjJ85clvtG/DFphkjPO5cqIiLyUAI/vbtfOaSl9+OpxsLmEcOSw08EEoXGYE8eHzc8RfXa8vkmB6+Di59Q4JRscUG0dJVahn0aOQwnNw+Ml0+FSlWq1ahVJ4xMORfyP8n1IBf/hHCwdNL7XR8Dr/iyJfUhI7+24RoH83W6l9XQK8Qc+0RGDP8oL4yPj4wVfNexRHziFwU3wqvB+N5aymM+orlCDfM7LchjbJU5v0ZZem4AaxQsPiry4n53CxJ//lVFsb3l9L9tfJSL2y/JrVIXHi4HfkQq3I5M8I/vM5orlKS1kX0cy+9w63gPShJw6+xI1Q/HoeYGYbiuD6PqRxpf4xdbpTZ4/f8AiOZ/S8FpBznbqnWTQBLjcVKJULLS2vtyur/71cxoPdyv46PUOH34qJlu8isgrw+uBQNJWff6ML0O12cAerNB1Wx7EpcN+r/+bAr4AD9jeZUnUqvMK/wQEkngphAtpcG5Ma01716rxuYO9vWyoHX22rjVlGrWY+P+sYZ9gOqh8BvfG9ThC4wcUVy1sbd05vKkHm1azTSulIcskBacT7hBeTNZa6R1UbIbvsuMQDwyNHPs5zJKnPYd4KjR8AETMh2ZT+11kq5Lm2vI+Gly+PKlqcI2aoSI54x/5WvBSeJIcRzf1QdXP5GUD6iXxzlSydsz/HxIx3FFX+/6/hvU4mMdWq1spytqrLAyxlrPKCdvy3nWA2/jiw6ePqlnQTO04XOAcszY4CrWcww3Kkjfr0ubGXSgnS1ab30WqV9cajNi5WrbGZ+vAOwec/HUCNtMaCtCuYybPbSdl2/NPDcQKWEnLaxqurIHpPVsRU+1plfFWLVgizuf3MFNs5TKa5RG0RvR93OqnS5yWXfA6AwsIOd9XRL5qJDbKNcLB4vYev5dp6bhZRCVAinax9G3hp7QdvSznIii4x8wPs52/LlokF8V+l2hVr0Dxq4n/JDxca3hqNUYz7R5hDFzAuj54ryNiJofSj89wJ0qlLe5UW40XC2A/kW3SLP84akxxsw8YZWN7K2D5WMO0A9CoAWYD0Qad/paFd+g1tfQB7Hvoh8FUG3hYVsxxxNXOkq5piVvaCfy4LP9UF1tB6FrdLWmaD3UIE6soIWpfdvV/+zgPikgPKCHCR4FFRkNF+bcubPnyY+DAMHchYrgJUq0IHEy6eTKM0i+YkOUmmiUKlXSGTTI0Oiqcm/8Z6JWbSp06DBVly6VZZapCtYPwiLx8FD4BASERByJmaAoKFhRMsUxY86MBQscFRVrGjY4tpwhLlxQ3LlDPHkyoaX1Dy9+RAIEEAsUSCNIMKlQ4WgRIhCiRBOKk4SQLJmFFCnMpUrFkyaNQn/9MQYYxNJggykMMYTEUEMpDTOMynAj8YySAcuUiZArl6k8eeTy5ZMpUIyvVCm1MmXslJuIVaWKBQMDnho1FKaZRmK66ZRmmEFlpplkZpmFZ7bZFOaYQ2KuuZTmmUelVi2Z+f7HQp06MvXqWWjQQKbRVTbe+I+tVm3sdejgoEsXhzLLxIfFMiIHYxay2D8siIlv4GDLBSZbWCLxg+N/G7n5PEcg0xDSwVZCCkoksowoMRDxQmIlFyNVImoD+BiYbFfDMJQnYpcJySJS2TByjOiXLCT0MMOCTIJWAttwIaUsgmcSfrdXqRZrvjqEeg1MLLCQ9qcCdt3EtzWd/ufnAWHt5g1nt9Fowt0LHLXg6LUdiZd5WGqH7egPtU5gpwu1bjy8x1MPIh/qxT56QdrIKriXWSUt6wKXmLE4xU5V3tD6elD9j1jzMXGaBVGJN0mX6MTlCQpvjv8tHEycjyVZBBN8lcTrNpUdod9V3BUaTj/S7U/FkA8aTJODH3xPPegcEIIcP2CcmWD4pRy/PwL9II1GHk4DOpYsPOSu+VQcVr79mbrWfesXhhME/AXc1JHnFqUNJsVUvrZlOw/Ly2ZAt7LkmiZsn9uorbiidZB6kq615N2heeiMrwXO7tGpvpWo78S55Wl5Dk+NOq0HP1oCUtvjqhmbKVYKDkMcRFN+izZd5NuGT6ceaH2TOZWUq9oA87HGsogUtnaloOMP031upO+sg451lmO+LWDk91ytgsNseL0Ko9u3HtGgBRvqGigqhDO4CQCWyVbcMbY1L5CxtW4lTTIu1N96pM16iS/0RrHcMM+grrLV7dUycoOOLyTG918/m3oW1kfZMp+DTSLrpZBgQxgDeSxOIe7wexsoE+gDviRu83wT5F4TuMEtkS2/Ww8AjTSRxqiewqfaTUN/69LrwZRzFT+8D59q9xaLQnub/7iNEso4IWvj5XbdC/MkRkvlvoJthnZGPKS2lo3apaczd6vmX1nP0ALxrQthUR3sTb2e6j1r+22tpuN6+rEtLb2PT8APGfs4TyLXIpeZkQrsJ8G/6ucRf0eEeC44cpbUXHnwpxMpRhY591yvxCSVqq0HdazrHG+6rcmeVtuO1mm393r8yjL+8GcjwfYdZo/7Q0aOCTWIKzweYP6Y00GIhBKDXBZC2VByENFjoQSJSbAqoVRDWYzUKot3zrSuQbQEIkPhueG8hPMKTjuMThjdKL3HVA85PjjXS6P89kJeu2RA4bW/Pz1QogsBm7kTIXiGiMzJDXTfbC1PgTJX4JcQbojdv3vagfJC9L+4mnrTtZPX/nIsEdAN7fH+bwd2LnuiHdiGSDQGD4cNFMId00yq/Inzz/iRDhB+k9cM4v8HTlYEqQ9RGUPhQz4yKH9YpxQqPu0ODE+5JrOel3cc5r8oOXqDhpcrJT8un2zYAsES6INtnx8WR0BEQkZOyYw5EDRAUAMBSJsK1hnqTOzTkfXSVhwlK9Yw7fN3Tx0zgy9SUYyFOEpedCwNbenY/Wbn7X65m29t9sGln5e5XX+38q71HvOUaOA5EO7kQg5BRYHQUTL3SnsbiAREXSBZwRPoEf4xTPA10ERLHfXA58YkCK2ySQ22uZPd6W1fJwmbDWdUY0Xgtz9XtZFB5BurUoqU9Mxxj4YjkS7LtfdCrW7IlHY+bnW0raNht2TL8NqFUGsHZBFNXRe3SaVsLSRL2LYvqTUBsoiWHhjOMqNhEfHNmPo31NJBFtHQmqjlNS2kER5F141QiwZkSjmvOxjYS0PdoipVL4WaB5BFFE+eRdUGEjpblclaD3nbp77bhxYj68HwAhYDlVWHM3urDBCDglOIqL2RVlgVcK0xMu84UktsZCUSKwsJbSZWuhbUqqPjbdKmVblYzGXpMhazmyI1Gx0HfaxUc3UIxy6HY1YhZaR2YSoi9DedUkfqGh2NjETQE+pIPYd6o8ID0l7XkfquVaNDAGk4W0cYeKutn0ZqBX1lHWnodZuxzoNeXkcaeX078SwHPbGONPb6DTiFoNvV+oR/dzx/ZUQGtZJBZgrm6FrbAI5ZnBJtOYzhBpGXmFFiCQcmhnALPOML/9JVJ3nn8he4779YNGsHHXLYEUcdc9wJJ53y0COPPfHUj4YhjAhEIgrRSFFOueWVH7GCCiNVlAjGs9ga4B1Xce7dBJEvful+BWCwJCQGZRlJpC5LZBXj6Wiy3lmL5VhKwYZ6nVueWpqH0IzNoUIIDTNKilGOtPGh8hXIFZch5ztFdv7ENJxoBeotWrLBRkqXq1C5CgbVCMkiGcjWVDVb00zbOsT0rUPN2DrMzEK+SnhAqIK1WZOQaraQZo4wxFxhqHnCMLVaPhqxPFpSJJlRONFYnl8c4rOpmOzZ/Cvb0qkcRUNC6X/kecnmw1iHcCxGE6jnaMNIhKUQlzHFGObyRuzE/n61/KmV/0yZX5d7vvjP/1565XVAnYiHOMRHAiREIiRG0rJiwGgHnQI+9RTnh3+kB0I0SMquiDIPRCPle9KOJuMg0Dyr7YVp0ULQ3k1ZRIXJ/X4kjg1fkaH4AYhKl4ZgRe0VlHn7Cgvt/yUbT+VTu3WNXgQKZImTa1TJmgn7plQQ2vOywLxcMJQ4TqVF/iS5tJEpyCVgDvKkOSB8LBd+jgZwfQ72zDMI1kgjl1A5B5saN4SpCSK6QMFCOfPny5U7T1jZEILx5SaY6IqrP++p7/dojT13fU0wCMxDBCYiyYLe3QEH6Fupl0OegxBmUdgTx+JCcvmzx42/oXVbb2NUs5z0mdrUWazuH35sDGgx+Mur2oU/Dqvl2rbOCBeDgg4qX+KfF8PP+f93BAq6vnnxm1v0t58Ov7vN//rN0Y+W3/ubR9bfPtd+MTz5/ejxfz0y//wR+38/1v7fC/j/PjhX2M9l7vOF+Iti8sVk9WUitJoxX01+9PrD49ufkdZjsT0G20tGt6F/GLU/LOLu/sJ3fP/Lff/r9scRxh8zP0WlXpbrZaUgLwdziWPu8/5XMUnyZNY6zVmn3SWNgX7OwQZBSQ4VWDRE0BBkHJZJcsxVDsdYnLJ72R4eaeOja/h6l7UhWxA5FOHCDBeRuFlrsLvAx1w5TYUoCZoojGJhjBEjRNzJS5IgyUjSkTTakvWcJjKKR5RSoOwlakFQi4FazOl104iT0BCjuayWX9dDHT1+0pNno/xkQs50Dubyp6RxttsnO36ynY6dPtnVg11/bddPduNlOHmMpEbR9CmGSGzwP9zGIZ781+D0Rzx2yyendO7sZsg1Dq6nuIMf3CUqpiMPES9/8oYUb/S5dyrIJaNx0C2570q1Q2nbenVOrQ0eJ2Kf1ibt7LShiSFLXzwYDlfLN1vn5vgrrnqO1Z//xcGBSkDgrRtqdqLhD8ob9PohJ0rARTs1lxXkIr4NgcOFTVADyAj4Fb7uMHzCnDXsxO65eBzCaijT4HFR2AmRGHvQBhquPbIr7ShlJaXIIRw5IuuKEXgBO+d1inhcwz3jtPFoUQwecgyMTyE+cNL+BjUg5TAH4WraXsGbFQ3EG8+WjJeRzJowJ6FkE/MAlMk3ZZotZ5dM5cdvR79y1ZxrGD7IoYKPlz9BA7JboSYA+Y5iQS3arICbv/lE0/YtKxGv7MzNI9kT9TJ6vSCLaGQHThTKqtW449CtBbtwFycsIHNoWEYu2toB8vJY/ZPdY/t3cOs3cqeiyVywlWQjW7q1G476u1u1se08gLwF/RLQg9+avEt3/Np3OuXzd9zW7ayd9QQHROjC9P2S+edHQN7wfmgJUr89i233Lme0Xt+AFSIzsUEUyDtnMHBAy8TJ+iebTGa1ySdsn4ufj3CWsNA59b8JoHVCjNcAvQqI1RkCFsmgB9i1j6KBDeFLfus3YQy45k41CMmA/kpQ50XIhAlo+Oot3mAYyJCSAcPgum3cfKcYJiW12j5lQHBwqI49CKIHfRZ68UmrguUTbwaA503E4r2n1bHHrltt4FR5EnBnCagVyDT812xnGiQ1IU9BpjLGZoXm2FyeJ/PsdVLuKY+U5+6Am3I9t+AOu1PusqZUs1PYZH4oFqQyL0z/PAnQR0Mr2Nq8Cuo+4JkbcxPfeMOd/C/0n4GzAWUFrH5dyq671qpO9FDvAOC7v1o2tnzTv2+ZarcD2Jd/vKx98U2NGxII2BE4VguIH9T+rse9Nfzo/M95H33lT1nRfHLbC3dj4Yo3LmvS6GoiJEBCuJk1hMMnJCanoGRKxZKahjVbrtx58KTlxV+AQEF0Xmn2Opl3BQkVKUrMw2I2Vdpvr41hY0cYJUvOLyTgWShQ8n+rMuUmeZmrliS+GvLLa1MAbRgjTUwLdCf1NodMcUqHM84WXGZ0twtz2kLvXXTBJbfQMBKLwuARMCEhJWPBzD/MidhwZMeeM4dSwIkfbz58BXOj11eY3sL10U+EaEniJUg02AADDRJrpHFGGyPD2FIhXbHxChWZINtELjJ16tKqXYc2CBiEYXI0QSJRkO413GRFZ1JZgwDU6D8kuhAnU0XJHoZ/23oFyJfQlxySo799CAPBoU+8gIpoAXEkIF8AcRKYvAuweAug9TOofgVIuGxSnmBNnyTSpxpIqAdqd7ODLCWSl/pKDMNrb+oYqnZkIhuuGm8TpnXKxMQDPaKIJ8EwMmobqSBF4lWhIPCONGYTqzJtPUuGFeW9YHgDiz+NIE392U8lieqaGyM4Ud8F4aanNS/PdU3Rvwr/bLNLnIAFlyHDyHQ3F9AQwhyJKlnCS4AA0dwmxTibDbaf5aJgWBEgy2BsyuuqCyNlsYh1KMWHb4ZmHsJhMcmemW9qOBw0NdOiM1MLvWQMBsumlNFK3xst6Uw3jpd20ytPJtQ7filIax1fejvzxefuaxJwzUnz0Kkf9tNc5Ee5210jZkMVhNGazo/OqEP2wQ950W2j+ywM8CaRsByacnK06n1sCK/cR0rzufcIWYvCGHNdHtuwRzfbBfpyGN5vZH3rIYocS9C5X7ktlPu9erpmask3iQsIOTpeh3fqPQwOkuFLoeMPxfVvlYUx0WT4y5SmM9zOrVSlSVYYI1R7aExhwF7llD4JoS6tT5EYEBRiELxFiY0cERCD5hFhTFp2aS3fEin4HgK2QvT+T3hHmlPFWQyEF0T4uVgbttcUBp3m3uGrSpj8A4U5B1kwHuwOlE6UmR6+mgzz/BMDnPGN22du//JgbfdIIypIyd6Ism91H632Q57dw5yu8DMAA7E3HcVmOyiW7Cu5UTzcj4ZQOIR0C7DHjnA5Qm7MoRdphv0ZEhiQPS6uCzGmDRW22vQegy47/4OeBW6+wwwJ3zTCB09sy5VcbWy0oQqqImWy3Mp6BN1WmU7Jyex5p18UvhnL34csaj91ggsQz+zieOv4qGeL5LjIFXdnK3hht1qg3AEw1olPTPkmWWd01MbMb0fkD20OUF5v+Fnj3OgPxzcPxy/OGOQv950np84TCm9uQeCxTUPwtYVJ7BEKoEhPPtdO0ByvryequFKxqeYWfqUW8FO5XbOCqhbS24oH1ufk5uqcSJJPCeF26g5j+yPU0hYBkwpPydiQa76urUh3897yet1YZOerS3pBqXyXN/SOt1hrtXdOqLwEex/qK4vI4ksP4iw7cS684ZflIZXi89OVetVUV013Hw71M2Mb88fXKA7Q2V0Ps3+tXvQJnxzZNVfTEXkMkvVi40mNNrhOMvvU0NOXzCBdo/1GreLPyJETnfbYfwHycph6u3xvkHipuYTbzDuJVnnifX4Rfa1bIi9IhVuXs2CoUJhCBaAUK881i9pDZ2aRi3gcQe39CFbzdxKa3GDvWs0uO1Whg4Gb6jbE6gp+ejmiF8nGwaGXRY8jC5791ZN4BTT54pnslycPs8tgsWWVXVJDGtkpBYULUuWfGQRcyT5Bebz9WEJ+vfadjbv2M8P69YF4T+UxxJxHkbjcJ7CKocrw64yOWaEWTZjaR94RN8P97lP/EG57ctWZvKH0awXEk82HlfxO4/UcycRXTDXapGz7tWdIZijyAVFHXFdl5IF5Q+TJgRhnyJdW7n87uiyaA/29CnOTehGXvs/ZRraSZcjHxJqaFRqWSdIox7KKA0W3wHw71DLgPTKqZcbmDEUa1BkfGmTBEHk1qzVf387L+wsfpIo1aqy6b/riwzLqqxP78ZqOqqUrKKwTxYYXd/xLGRyNJPdNlsEV5ijxOnDe4Vco+Woy2IecPyzcNtq/tnHbOc1nWTRwuiyKUdP8Lckb3ywBU0kCMjRzuajq/nibmpHflEkgLYVVkL8bIU/Yhoc3uwGMmF6gkx9x6Jrt9Q3WwpYGRcQBwX5J7e9+U/NI5HGLjhKWpvXTRgqyqIhzgCfgyA9jgEVaHnkf2CZauTzf0lXlJq4BV/0MbtKKXciFAykXzZqbtGr2ifRaz5XHzv/8Y9cqoPc5rJ5LY+tR/qTyfHoMxPDI2JPacIQxcN9+fLtiOpzGQNjBlSZmeia+ZH+EeIf16tU1RAFOoUnA3s0K/RcN7tpi0LORAmPYzM55COrYpZV7FpqN7EHdSlz/EBCTWekkl5RdWD5eZfdAWzRqoqqvzEJV2oyvfknpj++IOJt+h1PfJTvQ4NrfeiC+PmT7S3Jr0H9vK8C3wmoyfY012X2JwvbNrFA4djrHXqejnRVrpizlnrWEG5Y18wL8deue3G05dix582Y6p5t1wWpa7vHV+1Z0/a6picwO7NooMtiwXXhioc+55jYxev8hBv+dwaCb+TYpNKzzi4d+GOs9skhodK0BmpFWhAlxiVPa5x5fqZBMl895z068O50srpju1pzCvLjzV8huf+nv//E4C2Lb42e7rWF0zPAOCOJx7LJhBoPwaUcivtsE7e+v3JAG0c0rv7A1xRalwxUdfdrPnvDl5gtcXKMj13E4VGJvCE/qegzmybcczrkZntUM95YvXHV53xI1gmLYpq5tUUS1kmn89S5WT23T0SZPbF20+drNXFceZasyqB+pDEv7vjXxai6zP/lsxkeGhFzzM6LlJFQx1+hrEm+uuBpiULdvAj5qlBqAunY4Hn1zmhYRWfhrx0c9SMWpZHqpxhdzs6UwPtNzhJHTd8E9skUmW39ROfgAstJtyEz1URMbMouLWF4kySKj7Wydq7nCm+R1blrvaYlgRtvbo27oaXXPKQ/ew/tU0V3AD+wvvo4LD3F9GFMudqGctCdV8jaC7AO398igkFMNYhBuQSVA4RUI2+SESjZDaMHJIwc7pGg5nbFxMmpRwKL8BRw9cn64nIZrc0oqU+RasbL4OUHOWuvdyrZzfMDcvAyjPY6YsvJxIbsrclia1iSmQsmYuN24sMzRXGy5sS4mRV+RebF5s9G+8f6TrxHk/mMfhTuiZp/1ZhK5qsjk62VKA3UoYPGVGJ92GAh3PoQTvOWAiZPm8NunISCedbisWaDm3iMqGxIuJvus9vEBw4k2zNk7ZG/zE2ufMC47etMzs/V2m8971Jdd8tNOXZqobvVfuXR0TRxfjvVYh7VQH0T6gn2uhhr3ChIF1Ifx0uGYQiqXDOkrwyVDEafYAh5XjzEUjrX7r400SVXUfqqBHFP7Uw3WvYHrWzUu5+sFNbQrTbvf+D7W1Lc2vU5VHhlFEaWHtHGBI3ZcmM8d2kGh6G0ge60iMFLco9ZJQKcSs0aeJG6OPv6maVxr3Dm1xVwh6ZFFVuPf7d1sR+kNWq/lAVNkVK23s88gopRBUSSGyc1gVDXooWmdoM6lE5Ds2MjRwrLVI5XSeuI9+V4FrMRgUpUTlqG5iyXIyB6e1PPiQ0Q87Pg5kTnbxpqk3KartSv6LtSIk7HU4sxPR6Tjcx5qLUeRRVbcQedwXm8vlufAfZ35QIHASmx9azmhMjiqXHb8OPTNr7/98nP7j0aNr64ZA3ZFt3u2Co1buWrWhHtGWPFrHvzvptpDI2tGPFop+uFW/3aPqtqwrEbDCqiMSqoPBFnKeWTNtzpc7bYve0tFVcdyqeffF/QlXoDBH/yQz61H1ShABaLsQnqdPhvqar5L/8MgW2rV/rsfuuY8fHETnfMbldwCarsZEqYkjeV2UuWrHPNBHnDTwjc2IW3jWBd2EyuNqh+WW6IPPsXPkH8HpU0aUYkIpIvPV4LAnSk7kVPgIbAnctQnCn2FXsC7gvR4ZyFp+2OS+xwnFX7y+HTWR1lZH2ZlHskvzFHBeY0LdOSe85cDzqdcP/epM7D5ZFLXibezrtcTPgP+oWHquEQT0SqV2F6CxRo1GPQlVXLtYf8nrM5rpKIfBjhHA9tYwS8KCvbKmLvAlnTfHE1trXqez6+eS15W6FOXF/jkv5974yyaycNm2LGZJcXYAH6OR1u0gzcfRbSNlB6fPNUtas5H2VjdmKzejLF9WalJDXtpcaXfsiyJGeax5wH/0LWOrSXRrU1N0Te2lnbM9A+E+y1IfyxmnO88PABaYQ/qscq/3oB/1lPPejGEDgH/0OZZ6f0Cf1wAKrAq3T1TXV2nnuv3a+bW1s1SY74Fms+PcccJja7pdu/MkmLPwBS7w91hgMYNs/7tc04J1BE6p5uBfwhXdijxh4V2oKAPfagY8XVOzmtl7qt8zbPcnOdtjNzZ0F3wZ+ntwvN8Pkom7JKJDLYg/Cf+3KNqqlRpNe8lQJNaCXv++KrizyqNhbGZsMfs1+LM9T90Ee4e/UPh04lzCT950RQnPLXTX9ZsrNcSEufvwodi3WF4nwcb0n2ztdX1qjler3HnZS5f18vr9051umdFou4Bil5smtOIRsDR1+/r1anmBmu+qXNr6t6hqbUrv36+qndL8SWuO6BvS8D1lOfnPXUFtvSC2z/Pr3T8mv6hXw11SkO52WSo8MYbGV2beQdSKZTUA7zNnpi98dBjffDvZMtTT/pn1GDh/tGQYP8YKoxN+xj+zVC7PrkwjGn/GXuWQaj9nN7BmLiW+Ws/e4z/XXM1RR0fw8l+yqjikIUDF87lMKg2FvXSjYuCO3yFGq+SW5ASiQJe6KWGC5fw6ectFKFdfuL5vzB5Gd0hV/O8NmkwBzyccjbwfeBMP7Cle7tQeGroC/y0hh3zyvR6n4wd05zGvwiZpnahIO3P9fJdI3JRQh56aERrjqSuw9evXx9Zre6VljXCwUvVFnJvEo48mwxewn4j3SoDX/41/s23zAMRcm+X8TzdD1/6+TfkFy6ADviQ+sMbyL0Xx3Wdx4HDcdUWP6kTAt/sfeYEwHkxvso8oQNageOZOy8t4eXzLGSvV1otREzjhL6AoNlkIifnmTD5qxRDPUW28rSO3jIOLyPOLbZGF+rAb8eR1Zbx4y2rIxFycvpHwgu1ge4ei7Hc2o5A461Wxtu3/92Od5el2e9tnafg5nZXH9zbAO6LtThf4pFqtJ4qll6OZaeQdQFEz3MwLK+NRz25/Mau1jIk4CRIcZXMJXDw+U5BuzWT60T0At6LvsTzueGfBnb6/QnuAoG9UrnkabnS7GmBdZ2ekaMIK/lyr4fF1dgVEQftp3Z32N2KnmFY6kw6w18msOUITonzjzrtOSTUGIMeAKUbS9UwwR0Ywr9ORAnIosKIttrMvT6fcffyegQekSiqN4giSROUTnHEYBB7Aqbm7kShPswL9cLHHWnztnrIIpdEKfSIo5xeJ47i50ChCpMK3eQF7QHFWxLKmQdzNVsbOi4/m6lYHSIkol/jQwE3Ibh4osLjYsxdQS+OflIZmrXDBnXaXEhHq9mssLHuwamkpGnqTTHWx6uuFNhJYZa2VrAJIVkt8M6GgGlyu83pFzn4PK9cbtzHCoROPh9TsGaAqrkm2Cy9Xqehv83lDkCg60J+m2CzpxVZIKFG5pCxohpIinu5fI1DEbHTrre7Qd/ucqxcLeOjLqaAlLMvdIKYTy4UiAawgd2g6D0oztNAuzHKPx6Nxo/HQ1pCZ7HMALcg5kk+n7gM2FCvuIvgDPyMW9rbVChP6BYIcINJEHbzhUUSho1GoSUA5kCeRxtBWaJQV5V1ROy4zuUyyHmQmOnmFgL7K/wVrzRfnk+U5RNpxHw6F/2ww6+aO3I6eYnbM9vYbzQY/Wp0aGZgYncK5T0miqNKGnIvcaJpAGXEpp+D559aCKXxTf9vG3bkiobAf5SHgJkE3ARbVCHTBlQF66NqYyneWmwP61zH1OwhmoNPwbWu4yr2BZqTX3RklaJEqSovbylxuhXUoOG9oju5ZMDVsC473OfxGPc4Voijzc1XbpFfKI0YjeI6IBIFKMc0j38fuJ7eFiRXnPis1zhnB5zyUyOChnjqRHsPoe3wv/8WwXYU+7V/qWPiXTUGMaD7+5WAJ8109Cp8oxJtt9/OuuJ+ivR/fxu/kogQQiVavI4HsQW5C3FEcfHkw9uJtmtjblPavDGewJV/stJFCcSX1EHCxp/PFOWufDv+lz2TeZ1h45HAL6U2wljyjZtqdEkFQpTJzN2crbmrfdHIFSmhKE0m8OQNPnRSmS9ZHAuDQhE7nWNdY90ulURpK2UCMZ/y5QP/r5+lcF542KxFCJ3D9haYYEghd+ilBshpJEQIJkllucZqjEuVuMYoQ4OEBHvUZtZV1alBAmPBXAi/GCsexAenYFNyOKmsjMPvhk5+D/4qy8tbKyBc4bFZFEJIRHdyKPirgIsgL1GCb2++LN20LmHLuuJLLwH51svYpOXDpi+PTl82bNKyyNsvIwOrwczVYNSBhJ3/Vs48BqYeq93z7/6EmoEvwMwvQOvVfNW3vu/PZOVn3LEO7j8YH119P5TmvfPNn/FN85IAc7uggYEtephKbMZ8AwRhRCIbfa8quiwwmg+xthekqABQNHeXzdrj8iFdHbBVjtFwTtfxymUcX1Twl79Y/83qCOdS+uOqtV56kYXKt4KswFImMdgf1HJn8eN0yO31sAhsB10sLWHb7ZwKtcZOwe4oYUvFDjqLwG+7UWXtHa/Whzk/Mu0icZL/xOHAXLZdLPKHOYAndCaBIs3ZY7V3e7Ak9iBOJ/cU5imO1dHAQd7l+7jERITN4XB1SMQWBxy5OSA4MrCCkZKlEvgCVi5xlUfdP96IRFI6MaKU+8XUF+C0Fr7Ej18zTqaQNOIE4e1Js3DUj7uB+d4YY8nY91mphb+cDz6MgmiL66f5lNzFjhli9AQ/Xl1Ct3BhHZ+NGJqbZWKk0DS+KpQe18fwfHo+kbZ4Lnzk/qjQ8sDEOSmUNcx/Dt5K+IB9y/FMzeuxTEs/lal/tp8+e4FPqH/r92h00+nE+s55+disRk9KypvV7bE/DuKDk7HJKex8cCD07ZVzLLrU2e9mK1ZoquJ7wvewOVgwNcqYl2dn3OdmTr2Jze8fF49nvLtNcil7CvziNzJE6naOTVKZNEODwJq1pumX3YvZxf+x5/n4WWE+wzLM5KVxt6cvLsyJnauJGXOycvb7wbB9g134HT5IXyEWM79XvWAuigVuuhAWSBUWnCIjJWOrxiitKiHLOdpOS8B1LmWMqwgYRnhhAsUpYtlol/tYGZvv0CzLWcy9YJjYUqPXNEKwpsETFiY1wJCm0cfsZHzPRkVitu17BuPPyRCL5sSft8lPBq6R3+SSZKiS6WdnhlsYV8ipzLdDy+VjLIMfEfbv2MkQXblDkNwGUHq4twJ+s6YW3upiONxXYdTW1ByVIb8u5BRMwbzmCjl0uqADhhfDF31BJ/jSrwfnWz5fqNoGhIdBw20beol+319EJn0zg8+pugN7isIPRI4iCVShUsQUQppPCs+b/+yDiBwAJAAIYk4x1ekiecjJbrOCbaE0MRmTIApH71OqXEal1KFRsArP1WKUTVJLUKg3lotVYRXrg/f6CQ9suMloLG9Qgq4VDov5WvxszB9boXvwA0YAGZqwjOUMvHbxfzGXDgkHYCgYRhi/GHAmP1YdKCRelEz8ka+v0RrqYIuhsckAcjQlzn7+nBLgGxRNmQIkNlsAI6KDWp/GfzojZVsh201+zPBLDObGRrPZz4VZbJjL5UAQORyExQuvOb3A2nQ3S1HZ9Om4T/MZAxWBQ1GuO7gusDa4FmRqcKNSH9caIfxPQkSBCdUKvExmNMZlaFktlGMRwvcwbtQa4g1KyM+xkJtYrAbIOByI3MBiNd1TtkdhNcgVqEYmRzUKuc0A/igR0WmNX+s7mPHvMWwbMJoamswWRYj57PU0JDDKG+kCODY7LYMLOxjisSGDyzHuOs9xT3AQlyFqWlQsoUUgymRWtSgR06ILECklaYWFaSUU8ur/3qC9jKjzVXk1bSDvtAasw3uGMp6fzMn6Ly/H0H5om03Kp/SKqXnOT4/Oe5ZRD7bqwUZc6BZ9cWDGxlxiOzG/lJg7FmhAEZf/OCfn7+zC4+VzvjgmUsI6Uf4sbFEyiYl8BE6NcG0T7PzL+ESqkbrenVE/nwA2RDhe7uVTxS0FhbFCUqQw8/W98rxjlzTrUvFattyBaBnaXWAjzvxMSyPP0b+jdL1NK323FP5qJL06iUJz7taRHAVEB4nkIBZoQIV386C8UlG5ZZv+bzUvEN0KNuK0c9V04oWlxJ4cKqWXTG6iULPnpWw5TqRXn0vJ3ZmftzM3f3N+/pa8d7NTsrOe5ObfyspJBnMxWumBUvjBSNqEJArd8RmduVtDJ8/Rv610Dd9E0hALNKQim76ArwUnlBneb283vDehPBg0zmiJv792B3x4ZNO8eUri9IseYIt+PFMAJe9XDQFXDNy23nY+8znjLSpV5rBbeSetk7yUN1XuMoUVrVOoSrUSZlht+/Co7OnaMAAVAcDWeGU0jy/D4iU/DqIqDkJfzGZtsNG4Rr9a47WoFR6zilExus5L2SGz4hKjuUqmjml4xw5uIGTaI1aLqapJDaZtDpmxZ8V34v74ZtvT38oIgKuJK7luPN3iKfo/GDCIUA4bFQlYqJUrZltonghDMK4lwCy8K5n1j8hYrzM1ooipudUMBJo6xvn1PhUX6Lk1NqmzdgXOjFV83RAyhH+injtOY3upL1lhmdnS0gzDfp6Ny7Xz+VybjXc1UB6jJW5ff3LAoXQnW13Xer71nKoOTAgMxXj+yBuRLfgbgK9Zm7WGSp3ZVpJL6FZ7ZWpFSYXKYilXsWW1TOWdQ8hFS8w6Y+U4LeLnIrRFbM6iPMTlWuchDnsRqjlxpQNSqhzmQlOV5QFBbBX/pA8bQtczzl6kcjBsosXS3HIjJc54nsGIiU+jMiWXb+VxUZ5AlpXLdzyFCmoOH9AzAv7yAAK6hxdYC4j3UIGVWAFGjnHdrK292cDAbngG4vzDk/cPzv9O9SeDf5U0/EX/F8nDydfUfqKeqy+SsqDkrBfcuh4fS3DmnoSe0PZk1EqO+LyGQbrdjVF2SJGAWG8skcjCKh4NupMO772az+MZaiOaw97JOnDleu+++v+LvTZipiWW//9yIUd8U80cdbveO8QzaLtGqvz4K7LoAZn8QGSJora1IjCnZ527PredmQO3sgI99h6ojXXgyzvD9tSvc9WPBP1FFyan2vqzFk1JsU0uPOEmnViy3Ts5ZU9uCumCO44v4RAnc8nsWgISHp/3ngfBrU9J6fyNF55336xpuMn6bt37+txg9UAnme/TNuKt2jBmi788nRqYr95eU6veFlgw5eYydIC3xu837i+7DATmdo2bU0LeYdTWdPLuMwkSp3gixc6d/HUUlLKOv9MViXly0GxmgnCnJKeAUJAt3SlMYGajoOhlA6wO6fCOERLCiueM0ZhL+oCMkj/wdkaKPcDXv/IsOjlpMglDaavOrgRGEzWiRdstkpS49rmU5U+47PRfphi4PK4z98zv9LVbiPTGhwxoUZK2fBgn1aXgs+7b2O1bZgLZzgOQDjg6EEuny43WOmCHNsRa8shDFtqkSo5TKAyq1Yn7meAoXTKBi/xoM84qC25Dt4GueMbhFC+N7k0+kvH+CiiHyUC9Fe9nfJBiotNMKR/wQ7kMJuQrppNYVxgQhzNyhcX6fndhfg/SxKJqNhZ46Sb9FfXojEGNhvzvsvKlb1jZYANDLAuWy2A4KiQvdJFDSf08tUMlFCDq02n0qFzp1FiRSAMnGOpEO8HRdFuvrLRMPhAIoLV42SSZjY1lP2Qjn+hJlvEGW188nrgvCdEvfcJy0ENZ535DN6IbtuwvAMDazpIERcw7LSRUpJAVl6qMep9AbNmMkQf7lGxoH4l9p+Quh0fx35Ed5pRvsBXuWnaTJ//bLrCDP7/4CP0IZytTD1OrFv6QR0ia90PVAWo/+h7+XnoxfgDewrPDp7eAMGjFi1t70D3/7UcfYWD8yOmwPtu8/hZ6tmUDP8TXI/oygWr/01+7ukikid2fepPiCGB4gX6MHj8+ucB7XsYcQi71Tj1oAvvVBw7Ry5xDGA+e1G46gB7YhIL53+KRWux7TPzr/xOyzPw3MxEur41UaMl5eXTscvOeRB+wtfFSM7ozG6QuOyJF1ErxjLuE6XfBdTp4bDXyBUeMiQQpanzriMUekVBRch96yt9cv3c38fnbxaIdn+894l6A+hHwsdXyRQ9YjzAmC3vIYn2BsZjYieH0P/Ex0OTf/N1qVaxZGVudTKxOaSf2dy227Ix8wL6yc3Ts2PFjSzvdu/95Gks69+4cg3lY2vzpnJzgud9NDp7zw9za6bS0uTUJajVIY3wpt6hlrPm/TrSzxcqoXF5qMChKcW+RA1MmEyTI8PxLFPJrvpWMSCZGIxNPccQ4qXRiv7TbCv3l8R1kLF36F3Upn8fjL6VSt+CLIa5gCxgprrjUdo4sFDoxvgjCnK8crACSRGSksjK/3l73db7Y0QlZx9ul7Jjd/iJ90BlXy8S+gECusEv75RBUo1ox8GNwEcwG9L8DwUy91FgOwcayeqmB8rY3VBwCWe9J41w0/MpL/tcV0DOP+sgMqoM5HQAQLYjgMF/mG1HNGkP5OJf9yUMAwJ5quc5vNkHhWl4AdrD+YVvIKr8hnA8AWO6Vsq0CrshbooC1YZEcWYyRw/8V0VWQhs56/ggAsLVapvOZqSVxkCQ2NxqNjWazOGaa2RnTtVErvqfIEKuM3PXL4w2Tc0jnqdTzpJzPNiX//oRukYek0pBMLg0iJZchHpx4zTlNU/N5qnxG8tEHFaRD5NwvbBn6cIJMHSbiU8SjzKNSx46WgHttDwzmtxLucsMDXl9BAvJO0acqoaDv4yM2zl4OfAS8eZjxpo7O0G1lMJbxGHTecl1hcSEpVlg4iVTYC6C5Enq5iw58PYPY4KHhRmyj5/lkbDJIq0nbCBlrErK63Oc/okdf5RqiQ71nkrL9/SeNp+kinh3jKmQ29rr1UMG2ESIxxKUJznbmCRISMxISEkD2vez0EXFUdu7TZ3h+9DuKvd6rs/WWyXvB+jq5E9SlvTy8rtN9/xN0eLAiyQfOjKUO2hm2vEeFxEd5VgZ7OjgT98PBrYOEvKyZyQe1KWMyxqIcclZu9oSUd53JVMbipzudAAxfQbIR8M6THy/YCr0x8vv6R4Fu1fD3mj1bmxqU/4dUhL+vr2Nc9NYxfmdjD5AEtW1J98xR19Vp5/r9Nvd5afX4Fqg/P8ZtEhg19QMXj6gZQTTXXN9q/OWyixvIXnOyL1bIGa1nTs94MaACpa0LlMHfnuYv4o3M9DdA28tN29hfdppKeiWuhKH86hZEXvYqXPTH+fn9bezrtSY/Pz7V39f/V+PV+fxtH8R13xY9ufpjfEtfEkhwAMMAgJEIBksB9VYw1yNggbeAhR4CM/s2MM/SX0YguKIQpEQspYSCyBX4iCD7CW23ouZIuATPIQsF1RY2FHT897eIR8BVbwHXPAQu9W3g20JqAHNiKWbE0mImrDCFvWct7rAJpgcpwkRmErFZJCpR6Kg0wC3SuMiiIo5R4kNYpHtEtp2Sd1BGZTkqRDpOZHUirhdJGZU1aBNpRGQBEQcpcaJbpPBEbAqSAdjkD21VFaGd/Pr36dPtYPXXeEe8M94V77Y99kuxty72QbwfB6407DAxYyd2BbtrDq0fngJYx/l4ANrWdwoUkPY3po93xWNwlZf1LvtvrqwbljMguoGei/xp6r4/mQf/gIR0o0H4RoF0HVnzDRwJMLCt4qDTjNtZdQHaleyiPZf0OEM/0A+V2i9L3b//zvw5A5A2zoKmSg2L/F5gFVvK6+YsuvmqboGkW+jVLfJDsciSvmisE9dBTXQmaKfT7Qm1QL2oN/WlftSfBITZVq08M0ypn/WkV9I74UNAr8oTQ0+5uk5evzBKSIc9ZxMKEmuEATFuNy7UXFIQiDbOHPinJPTV87sv7Bpi3RGPMPyL7v8O6HrG1xBfvYn37z4BVzH9F2iMa95pAQyAvO9Mb9tVdVM1kq34vRnMqoKc75F/eg6oQew/q9LzzdxYI688A9x3z0lNzUi7KsJIwqzxNiPJ6RKT3hOujd5Xt6YF2jzrPuFYpN6wy006m5HgGTkeBXyDridPrwIY8oglbG/8rwsSkzigqN1DdFa/NaPBLXKGLd+cRHjFZ8JAa3y+eYX9fU7MfFaHCtZ9byi/WAEUYpDaLaAQCyu2cwBboURtKgY/lA5IU3V7wNsX6Yp9K/zpSY4nfTGNa4GugsZq94+5ME3Q8c5DPAm4WcD+OQMmCYgAR6oxsO5yZaLvXu2NyZxRfDRkZEm5mxkmtMz6K+a4lyYvB7qbZ/XfDnPj9bfj30+10uGlXz+QY7NNqBGTPyLRvXL4jNFXVHoMBrH+iFy3nSbaKyE6w6NCZ9x7KhHRf10Xkd8BzEGCU8NH5+gF9rj/CI8ApyuC/nImEU3Vt3lNn53ittmMws+EzPg8kI+dep/mnhUdCRCMANeZ9iQ9BaynpdZ5qNfMLnXOiN4mpQLYcWXnOdONXanwac22Ah3IDcFI6YxZSSiy3Hqlofwz4IsOD5f23CsaapJ+vaptbtECpVFR+5QYGen/uUeiXAwBiQD5yu/nQj74IauPTrwRClSqi0Xm+ft6ok7mKT17z9PTvYiUL3ude3rb1tiL3WoqU9uoanOO+kavjGFV9AK72Skd1xmcjxnLvGQ+si/8I55X+CjH3I78Gt8s8ZMpBfjp/HnhgYAW+Ga7IPftx7CQECoLtxiKTzhWWCYaJXos7tX+LSmTqqQN1kbriHXNeG56ye5bdiZJJiNM8kwmmRwlOvtM1tgsd1Z11u1sXrYx+73sI9kXsu9lv8hpyunPhXKP5enyDuYn5K8hUomNxP3EM8SbxGcFwwqYBVUFqwp+LnhZOKZQXTht9SUUSUQ6XvQeuZaSTrlNnUEj0D6hw/TdDIixnfEXcworhUViSVi72Wr2VxwzZwe3gGviXuC18N7m5/N38p8K3hVCwqCwRtgpnC1cJXxXeFB4Rnhd+LMoKuoXvRDPFR+XMCRbJd9Iu6XPZSkytmy73CHvlD9TDCiOKdtUw1XZKqZKqbKq/Ko6VZ9qieoT1U01QS1SQ+pZ6t0avea85pbmd61Ju0t7SntL+7eOp9Pq7LoWXb/uZ91/elg/V//CUGOYYlhj2GH42PCt4YnhT2OykWpUGO3GWuNM4yrj+8bzxiemJBM5XS42mX8w7DNLzdctFZZ/IByqhSZCM+ERcDbcAU+HN8J74a/h/5ECBEKakJXIM+sIK8uqtL6wJdgybBSb2GayYba4rdnWh3JRDWq3G+z37a+cKc45zpcu2LXY9b7rqOuy62k62/+5i9xad8g9xX3QM8rT6un33PU88fyDjcAyMQomxHSYHYtgdVgnNoCtwN5Md2KP1+Kt8nZ753s3ej/x/uIb5lP6an09vgUVdIGL/m8YNRB/pH5YFS4EkQWwAYmIhB272JOa4QEvdIkLlJQAYFkHtPAYrlAWY9JVRgIIAwMRv5ZG4Rfbw6dD17+e3X7YwQiDf3hy8g9wJ/C/cdYAdMqkZzDSbwdgs13w4CkSd5MGuOZxCi1hhDPlt8HuUVwHh575noX2KbCgO9ADmi/r3HgSIiMJIgq9KFmKScvT9dt1WkOimiJGtzio4kXH63pkxxKHlJj6h9+c8BywttyXkIhFkJiQsPjF0g2WgbcLRkgQxyDaj/gXo5+55Z3NCwh+SThkIFvg6nRVCGnai4REKugffHcmJiBPwETlpVYlFByxC1RTb+BiFJTL5HwnNlCNJpD+8Sm1DVUas7vCRSYiZ/rO4N2BvfeERRpSe/+z3ePjwtHyR7ePwd8IRundb9rX3f/wX1g2LsTBkw/Lft15x1QU2Nyfq3BUXaaXSLxXDg7gIPa5y0GuOfctBZyHniyKvd6V6/lxL0WX+VKUuC+vHiTZ5TYXH8UGpzy0wqTcrfCIRGYp3UpH2XhCdJ2UY6mcTOqJrOR0O3JzLOdt+out6V+8adv+BZTZBVbGkldirGTaFxluJH86km2mf/TLJwNlc5kJSRbW+liaikIE2oZY0QECMj8KiNkFLTPfXl5pX6cJH5KCkJZsRJHeA4Ct2IptrtxDAVaNljrfyh1/0f4okOrQkeKJ9qb+5Dv7PEo/BjJq55jAZRvM8VevfvzN3RXroFutPPvwS46c/dooEyISqzof0u9ppa0rLnxaBRpMN+6SsIBIDwBF+hYI/3/WhpEjWG1f1hyn3YWGdR6DMz7HLjZ55frSYcG73UhVQynnqt6JRQAeaokIKLMthPL9SwMRKwPpINdwtiRF48to4iu3dJ5HR+B7vOCgpMnPlKIM+S2q2yzsANA2dUM3VwzeYo6ZlKJg/FTy3JuaQ+5P4fHABfE0CM7BvwuSYhcOeReCE3PO6TPw3LYUaS1rm+IUfvZm1SPRQARkOBWsB0KW2TSd0XbiWcs9MaO9ZrS3nTyJvW1SAQFWFAiIUkmqDIjxTDIbpAl7KKOKojsa5AnpHixrNkHvBneOp6bXfg96ZifWQycPMidIihdTottIpMhEFG6ZdZ7KZMW2kO04ikDZ5Pw7BD590fZHjROi38ZobVguG79DhTXDtd8Ajh0Ce8CaRAJyLzCCITprqKfTiYlPaf8k63ZcvrV7Z6fdhrIbve4W+uZplbLfaNYGW1Gqcqos7iTxustP0yzlly6RXi9q416mufSny80ICxyikluX/wfI0WXmR6wwsjJdTC78lAy3f7xTPksLaJ5WFdDzDVhYpkFsbMQ6KkK0X3+791ZiKhu9s0hFzejT2/DZpk/8m+v/8cKy/IPSZ80GiQeCpnzPJrjVFAa7LjJNs8TWD1s/brKzQmaFDbSQDZR+UHa9y6q6t6YmqPzpFngN8m4FItvfvkXozRuEoEjXwvo0CS2G+OH4l//raP813xtPjJ20JVkk62vj+fWtfP/S8VOPPz916izn99ZzOI8LURsrgo488M+//EvfFaPQQ2uiu0YQtihPeX/sTFRdT8y6Uf4DE2lb8qmPmXn6gJdmqEOv1hHX8Cy9sADcOIn0717bgxJrr83Dw95fLz1dEzYcQ71rmTVdatyNK9dNU3wdNx9RLgLXbC9YsUFEEOgBFUjPZn6EngkQqFgD1zTbuW4uaQDoMpqAPNBRfC+ErIgcU8Ym9BcvvvLip8UT7ACnuG2wMYQB0359CBBXJgoSpMCq+N4Q/cUWxnh6FxGBOR4oNKxBCJcwJgCY6ZWIGKhnNGeYdksNkB3j3yMjS5AH/xAXhs/8C1Pik5sFcm5x3Cs1ZqRIfwHtO7tk95ndrvG3XXNsPSZ4xDORN5VoPqRwmOtmkiJodlM5JtTIPo8Qvs5zrHLEOZMXGAG8kZh6Fxs+O8UC4VMmAoTy7ow7zzBserJYh7pWET9XUqv7GvJVz5BAAfXOXc+XfEhX69HS89o6oJ1vrViX98Ci7NXBWzSzoQlFVdQRuEibemCZ1yP9NwjbuiA1PRI9B35dyS931PWh0diXHuyJ21uwzN+5LVtmkGNAsPT3BdlXRIjoYkR0Yt5DfzUyHDSo0NVNSrjg2eoIYyvNdFb8ePmMiXTi0G1jQnmBM1l8hD+GWvgFGLy0h4gs8jRjNawgfO/3rushZL6pCR/So+I9Mpu4wlcN0V+am/99IP6fJuMjGD50cQHZ9cpvhAfoR8+fK6n48ZCnQNGEuZoEIp9LcZ7aHjgfRK4akkjqMR8lI3SAH/S8R9JzERGOFDxkXxL99XM3TU3xv19ebDb7Muh7hAbox/bgLAARIrGfVu+VYg/BoAL+www+nED2UgVScrtFwnZX/gvMqEE2+ytH7x3/xx73dEc9/z97rjoGbdXHa3CA2pAK2FIGq72Bn9B2UWmXeiljOmVo1pIqdOyu+oozvJYFxaembdL8njp+fHFB0NNYAAIVqPxAf/PHdnL3C5DPxmrIlC02a2SyHTZiaQuP6ei+PlUHYdQqYegjW8tIoAIPQgyEregVgXJ7AMJH4CDsoRIyCE+vRM/Pen4e8QQH6HbYPbsMuXH0L8c5YmWiSAjYh32nvCm3ZQ2gD6dxnG5LeKLLg1oAR+lCFlLAQMk/kvM2vjCfgRgCQIrbt/nmLN7DC5IwLMRxLKYlmRCRxk4cyd/Gr8E8yJtSnMQ5nJxZh2aI3/8fQ9dj2jAeuZ/5Pq+fM00RGVTYGDm+fSmN1HmH0uzVIKAsTFRx+sdJrzesnWb85T4ZsN18pVKE491mbG9/YQR6RkF6BA60t1g0A0On+W3HA9mV6bB23qaRksBy27K9WqkiIJfEzjJWerqBLZ6/hQimA2KQy0iYe+5uFEMwhwIyuEcdw6jn4kGeQEISkF74Sch54dkDl13l7DzSXBR675HVrXsxJyoXUYodMf0vvMZu07quuCOeu4lhuXUtUdAsyoflRnZ2yTxXNzFIjFaVCDB4TbKXiOwqYGUWJeB8FEOSF9Wj44YJNPYZY3qokZWTA9z1DjjagK8uSJ5KkxOsuwq+On8nKzhWZHoHOtR3JUwS6PmFwhMMHYB/rWncL7cNsbJtjw1iU2CFBXk+u1tmjBC1Hid0NFKMkCO8HjPdBqQ87/XQdhcjF0Mh03iDfP5w9unpfATE1POrr5qTzvkuyqZlFCeMmSQj8K5eoI5Z1EtTQa6FCCXjUSS79u1e9r0iRVI8DESNjlqAAP9bQoUiv9gn2olxyRH1xc3tavWhsdwj0p1zfGdH6r4++CXUGpa2L84CcFWMUd1R68m4faLtKDbyzjLbnONaMpOfra9dIQlMBgEgrf8lQPCrcnCT3grXG47NDWuXOjVcJWWWzX3EuRE3E6/pbFwWInAtRc3mq6ScVgVfaJxDERXbUZmGkcu39FyRBKCEg4nXF6i+KNJpfcFaShWwpexvrxVh/MLMtfp3V5gJlifYBDk0G8bc51No2l2PuyyKwjRPAjs1XRsctCMXbrJZd0HkZR0ZPkuIPnPfxbT31AtOSyVll3JJ3pz3ynsk7K+L1kTCyKiS5LXuynGCIC6iJwMojkK2VB0lvJyAQkVYjqUvQO7g3a1xDUQyGM3zplJfiJAWNVGWBYlEoFLLoLrFcatD7yS3CvB4aTQgJJYKb+Se+DcgNG5E7U0aREDk5ZqooYaKFR2NiotnOkpLuoD5ESCJ0hTQUAjZPh8ayhJg9C+NerrxZmd6s7++WoqXX8kid9LkCFvQdy0R2LGfCsQD40gXkSArYSlWyXocUF28QoKp/Q+vIBlOoCwI8PRK9Lzv+RCxRRhhhM+C3FUQ1Fq8q9CZnoVIXgSBt2c9nkh/eQmjM+K3ESRaZIVVTFZGgDUCZrxAhVYE5Vai/2s85ZxG4ti2pUi2Q7gxLeEf9ECcijVL80kcpgHen3ND/umbamrb/3+2fPvERtYSSvQsXTF2bEU1U5GeXlHDbP/1zHZq5AMoJiBis5jUNJcYzTljUNgh0fmT9izoJSCKDKKemj800I5HnF+H6Vwo+JQXCNyXOHb/RRLvfv0l08cv8S+BMBJo8JV58yv1p/6qR6oqxi1TtlgZAvuXpGwbccQR3yb/G/Xp3qI8wDUJxCBRDzIEEfh0xn/+w/Uaag0h+smDm9ZCGhAj7awUmLNkogGPM2EmFlO2cqixSxMwEUrGYgdLrwAbO6aaEszmtbMYCPoY/qHx4WeZZe8Lfwjah1pPkYdneUo7Owr2Ts1xHudwzqmlUDoY3SBIp/zRYJA28lQ2nRmZGTK1u+JEem0q0fS73LOQcphulS6jg1YYHP8TzmU/RpsqoIBITSkc7TE9oYzbmQAwS47rAXuC+eYKHZSL6SqEly7fSx/q5+yE9WY3t6cLKbQRoCErJJ/o1Ue2iyfQznweTXWBIjhYxLB29NS0aNon7TZhgIocO7Uj8kx54/hDC9GnLFKcTMw+WTtNt1bHgYw2SsUtPy0fiBFR46xwwLmaSgsCVDHn+vlULzmcQyQc4FGhBHl6JXp+3vOL4H97sHnL7XbmFIaf4pf46RxpRNRJic5y9rEtLXCt2TneHxUZz+CkW04yirNoGLnoUH7qElEFVwbg0A1WOpXputzlKLYt1uNG3NG8DzKSWmvDTJSipz073l8FWNeS9lQTiowLqH90Yx12gaQpewGuoIMQIgJ95huTv7G1xhQjt0ugh/rpCmrRZjfXPjd32d9ISlBtLwFhTAjT5A/jDFTR8sIYSubmNCvUPBkfHZDObGf9Tax37SE99Mi8tuxPmfUvsam50e6Sm0l9Kt2rsHIc1znHXbkvQh9jGvStM6TklcIc2vZ92l9URnRrx/ECJ+zWNVBrp5C8JFAL108RovWoGbTiIgNr8jo2xmtre7URpxpGi7mV2IOtTtGJDwgxBsYrS82MMCn4DBhXm7AKriBGiYlM8fE9tW1sTetkrzjm5EvHZLrn5/NdgIQG8CbEjNETe+Un82UtffKW88QPwjD4/+JJWtepzRscFsOrpvF9BFa59+OuEt1/fwaoqTKgyNCYaOrNqGMUayTIQgOTAB8bubMjY0K2mTHwK0ABAqgQ2KOoEfjFPJ0TTNrp/4vaREXFzk9JadZguAoIBB+dRwKFNqx8y2H+NGlOG7MMT9WyKTfqnjLHw1y5GLbu/zLVbN2p6sw25OV4nShOli5ydw+1w/+3ujBqAsWW2edWUGkaSAmNOSn7oDSJ6ZBrrbSR3JnAokIEVHo7tg4RsQfUTFwa9wgv6JPw6BbM8ODIVFAcVJRqquFhR23mWWsY6I5lfEet/y5uEzq1m0Qt0fsLivRARKG0G9rTLaUEYcJ8LWhe2dgGf1RnKrHhiMih2BnMI8smMdpItZjonYbtfAzSN6XR0nSjOBMi68ldnli22K8iLvhYkifknC+kQmrKBVRz4Q1zKY5gsYD67HiWY9um9/cN/E9uozS+WYm6bJjtANLfwDRRhTUMCbr36BvwPB/j463u/IzrstQX5dLlTyyisOekado+v4enRl+dd5WNz0KxI+OSVicljlQIVZYAv4sqpbxx8o0Cj8qcwaWB1YRqRGBvkdp6MgMECm0G13ED152R/1xEvjc5phBiTBNdXCHmlEI2Uq319LOF4NboQZC4cewiQlIpHFVxiKw2waoZVnEZbipkrUO/XKua4ZCE/J8FJ6wLCyRjRoQx1tNBY4K6KW9N7NgEGVOrRia2xxWhw7tj3N6PngNmoveHEWWvSvD0dl+p/mPB9axUwk3e3lQMCe53lhpVEQyJCduRyyrrQ5zeA5mKLFfuwPra6lxs6QgLtKXUDL3NSO5ndHoVksRJsAubsb3AdwpY7i/9KuTt74VzTRlUrD77oo6L02p03QvlfEeQdMciRhW68q1RSoZBbWO9PS2jDGdc0+4siidj9ezVskoXlhN/MG5mPoUX2IAYz+fRelk7T3btmnDSbVI7tsRAmnCoRYmaarzrC7XiggC1eZJdBSpNAKPiqzIZcupwFkKc0EqIKRTLs2cfYbscChsSEKuH3ZMX7AC7H2EBueXXJXp+EzzetMQ4xlDODgxYZiM1Jd+AjUQYIcQSmE3qKglftlklmw1FbYLDMYbdYyTTRUbnCxxGYpKltVEUag4eCf+htOiIDq0HfotlJLc1TewF703r2jUVkvpMIZ4MI0LfDCADiwAqjBSfxFVcw9Xqkb5mUuOp+UeRkq+NMbzU5BYy275geYm7nBDsLMkVZtOTznU44ie2ge1de1WfOJYLoRMLjDtTbNe4FULMlJqxLjx009cKTzveyjMIMmEe9hVX/+KlcvRInhpyP+/K2uaqXFKndMGhb0gvXKFDVDmk2iyVgKd/RUjTrNYqjByvSP/xI56VWGW3GW/bmzG64LFkAgVTIeZUHiqFiIqzuMDjfiCV+cJslGBxH5W9nHxARuBdscQnaRojCO1YqeYqVUqqhJG6MIwaBu1YjoGJFliISsWcD41AJeUf31NCLCDyjdsb3X1tl+5nwC8s6+V6kqeFyTvpzjYYL5U0pzc/Okp+hN645t9dNZRdbw9F+oI77klxlbIJjZC8J97HSIsA7LuBYintg+qGLDWsOfZIWBgBOu6gIcZuhzwTEdvrdOWZwhC78FfRj+sJ5/K87EXOaCRPIkhI2AOAB7RQhBMoogDw9WdYob3ZxjDUebq3mWjalv7VgSSpc6ZeHpxmQYpyqGid+gokzFXCzzweT9PvQxg6iBZqZisjL7wp4hff373Un6xuVxvZthu8Yvth2bJ3CxIyOqNnQVpKLxeOxL39MhqeV3uoVDsbuBtJYOvkXIc4mCelcwdCgegJiQqpYE9A6g0/OMuPIbXIdBEXW4eI2jtXCK1bvcCr+2veqfCacntEIOrBonBj08Qir5UXWbgWYoZHwm7vmqoIYHXhIYOULqFuqIbQF4+GbydqKbiP7wnpy70Gy/K8Opjc5fHHm5sHDJzZ7WCMHjerGwyqp4tl0aslLOkYe1tUWE+AeTzaVwt3BodWdVQxiBASDPdlFMMGZlLY4hdX0FDW3wuCAuzHbmzVi1Xz8jOm6YhcvduBdCVRtyEh1M6qaCMh/2HLCrkuRTozJe543LhnHcvP5ReT5+L+CPiZJlNZT8dFGos4NXkt6bUjJuSTtdv45KEmEv3zFAZSgQck7F1/3nW5ZBotN7zXorbYltfKilrIub0mIngE6Tk1MMExkfoO0piqJSAN2I0tbGSgWPFpYJj+kqxSfz/LcaYvPQRtbtg4JCzJBMZYkbLG7cpolHG+n3I0sqnL0hB8+dklryjllw3ow5LtDNsCzp3QIilVk9SgWXxPAh1JCClNmXIPsOEMCpdqELFEF2DeyfRQmSlONExMQJTjzGSZsli9mqE3GkX7ltJMjBz7RPQ+tWZoGunIucHJRvPT6SEhJ4pulznqSyp99bOo0q+Z3uTLnDzVIgoBCZXvzV+ed7sKeCjIEw4TEKs7DTtlGqTtocHZkiIqQCAyiBBAkyhATnXEp+Y67KG/PMLGNEv0/KLnl8H/bcqwiy7BzjnzML9C76VCvfN4CJg1VyPwx243lYUplCuAByuP4H38bO//57oChU3NU4bT8PjlN++pq/MdD8rYOQZSDIMqwuTNiYJvm0e3Cq2k5I5G9ry1LEBFGuGPwM7Zn6CJd/ByYB6K6rIuywihaxUelNqqBS1ZwffX60XLWsWTOzqOuXojhAH4AO1g0mk7m8MJ+LxN8qXaVmxJ6PcmiPcp0nCfKqGFMq0ZK62W/MAePoyuKgzDPAei1ER6eQHDdNzky+Y5QX/G961ErSAwKiJofHtpdaUPZYzq1Fv2hwRe3p8asEpGJUoM5dbZpe2lCj0uVrompmZjU5vfDEr1tPEcs1271CaWFpI0BRLi7dwNmWvbFlhKeXtINA2eYjeFIZ8rh9520pYp1wHUYd6+J7BtaKQpMDmZ47mbdma5iBZkYdpg7EoDx8CQQoVMsMuQ5mXkMaWrbRQ9GCVM57vKWcwjnRjAGZBCN2ooZ+YyizrAXLx64jIxxQAWA3FyQng7zSXb5xnhPiQR4SDGgV8tGec8UQr3VUTQZ+zDPuzIl9olw8SoRlM3Zaoxi+p5YhqvZPmnyAgQKX587/IcMVvHRP284izx/XCMkadUMiudpa6PR5iiK7usHpNRSNKHqnZPRnudybAss540jWC1bdYicx8VJyee4/VdMhxz8sLLiXFgcL2fnjFHeHwVpow/aH+jpaMahQj3KD5T52ZKvYfYM/tsnL0BYrYdmsVUDZrIjtb/i4/jBvsyBjHwGWZ0Xj76TUbw6XqfqQPlbeArLGg8N6zHHwLhFG86OQQh1DYQrehCxBG6LxHUsBFlPWKv5UEWytH7aILJCSZ13vMYkWNhamMO2Y63766MRX0Yu95s5pMiuyAjnlw2gYdM5B8DiaxqGBdWZLKgJSkRVdiT4VA+xMIEHcfqUhM8zuAsTlbWcjGKLU8x3tCtIwQNuSmxxc50nJNDIqppcYWtGjR6Ti46fjhnfCht9uZzUxrddJbjXFwpbi7EQ8Ozb19ov62HhPjpMbN6r2CncpKiN2/1ZesF0fu6WzkrpCLkUewdUHBRAOM6qPBwjMQnv0y+IidbA+u0N81wqAstWFr0vN9i4gaYlBBVrEErV6Hl1aw0wQd16okIF2OfFgyk/UUxOYJvAyoWUqw4VerFFxV1IOZiRLAhfE5T9FLYn2+0siHl3HoUXDIa7H6NpZjwE/50Y9ThCpotRHkmAbXQNzGRr8pv+SADi6H99QPqFImxUU4Wxr1trj3SuZe4WydLIjGuXds+7xRFMY0fiUOafiZfZ0LT0/0N2Ral+4vBx9jNDA2FbSDCKLSUwix7ylO1mYAnhbhUtkBVPkMoZPwKCDeoxDkRSlQn1+akcQFsgqkw4pswOzejJvMQuKC0YtiA3H5tBCYT9vUGvKk5cbtQJC4l0pmKkco82M7hMDzQXlSvslbqqp6uVpUPIyhX/G+VT/I4dL+Y6SEW6x7txehriapmeRXh/vbMAcMbkB5FOaihgspINKbYK844rZ16naJOOTWza3Mvs5UcDUc15GsZtPWj3CFSlxhj5f+pRofwLIo29a78aIZ3HoYt9cEPqYsMkau5IRtz0HGq/y+rwjlCRPVuJKOW/AwrYMMOCoICcXolet71vA9ebUoRhgGjqfjvVg75Nqjg1iRTIXevwT7LYGo5G/yL6njTul9752Q1oDHzNjb0bz8aTZYjjwwyazE6WzmkY2hZ/Z5pE1LA37yQQdktzmGDtbUfM3y0kPT/wotPv7rrvePtYIIev3LMwC/tA/iTL4exAqRmrvE+mogYyPvSeh0YcUoqIwMHzn/MWoomziUvvjiHECK5pEMD69CwxyLv0yjSL1n4/qfb9YfP0GsYYocv1Xv8TXuvRAU4QlaumgQYdqh4j8HXwgiGz1Js0CrRCalrdvLd/BTJCGyoBIPRQkB0FekOMjfdOYz1FVrV9V+eyTx46+lMlSOxTF9aNA1HCpiMS0ButloJv5ufiPXPr7hrhCXt4Iw0P9/O+p2FGcHYno93Qr6PdAJgZoHRqgER2iCEpHXTwmqbYaWoql/2QMIItMMWQAQRhKZXIiJK5iTjMToh2wCdObpLjZwm9GLmz5PyLfwPXLt13J73P1Afrih0auXQjQF2r0MGIQbBscKq1PU1CN6WhmVhex1/EYmsMq5rIRmKpFmjmAb79qLuqq7qzXZ7Mc3LOifKPKkqrnP0l75IVjF0VkzIRzSsn0Mk2ZOQbTudPMNxKO3nRFGdGI+HaLQnX7cKNRygkOOmfQHVjF8RpkQf52smyn1ab5ik9EvAg2GBu2SiMRyXcH2NhGaihx4erufnphedOl9f3X3s6Krj1jY4j+Kxb/ICdQPTd4vZuij/Ls0pXdTpwmg9liyuvBcJsBul9upien/FHGgB2d7F3n/HrlxbO4UT51Su79tIhAwRHJZlCAO5eSECWwzzY9/njB84zAuLHnNctizrAmls8mftilAR2Ocowi8lKWkVnA14DkSQ4IArD2qunO1BaaKrUgTFrtWTNVGJzrmSED0S5ZdcR1++5bWa61tee+PYYRgDwXq7EM8wou1EcR3GTJZivhDX24s7Y7uNfMpn94EsuA1yP4b792DKYPeEgDcqi48n/TqNV9yC2CGHUQtj+pJwYC2TINCbQQRl3Pcz2UpNiokH/wcb8RssHJ5/3cpRmxjulGLKgL7CBLfW4Rx90MZC5uJyLwzFhXtFZ0/o54zgiZrNKMCx6ajTjd59ZcebDik5W99jLBYxrat6etwd0EPhDV9/0+2y60d3V9cwV7sqwSpjutXq8cuvhKkOWtxOpYZjxbIzGZ7PK6Sy9G0icE768Dz3Rk2ZEI8OxwxXKBMJxIxAzOMKREUBl8fnLlOwJXwg0vA2tdKbmb6L3JoGYCq0zNMoO+93kfnx++s38p0np02jI7JV1kynKSouuG+q2UnrzEOvnINut93dFxELBMns5UhViHthUZFq9wN49CdGHeV/f/1CcTRVoGRpNJW5NOLXbHo5fLZIYp9qPIGAO1oIoItCdSGojSI1E/xnivA8/hIySQdHSvgKdKsWvID66+3GNPMJcQwjpufMzHZcJb+Mrg+BMdfX8y25GR+5hHjFbHkPh1QKs7iruTP17vGbqzYBzPCo9x7HSH4ASFLcPpQ4sc55SUKj/Xq1mkZ+TJnDKQWJhUJakesCFiWpN/hfQfmbQQjjMlYX66dger1QQIKP+4GwCCFYuyCq5iH9/83z0uAm8AtpMkr5ARBxF6VrZV6tqyTJimkaoUjnrLdCX84Na+DeT0yHKMKZmQRk4sS8qZbFCrG5vCBqbs5uLRH7q6aqyCtklYC+VMnnbPoQQaAWaIG7EF8um0o3NgPMGyGdpSzylOGQ0LDlQC0cqRDoz2K3V6840UwlCOHG6XEwLV5TmXldGJWvJ5i/Zw8eCJBGjckWBvnY0NdNgYhX8MMGiWzB6uuo1+vFzc1mSh6bmxQjTB+drbT+BWlAFI6C/boSAYT8Wghvs44D2u428QtALa4tqGIgiqcFwebcE8vmihgonEZvXs76CgDQD1+Cxi9guYJEi8xnC+Pb50pdT5NGWXBjOy7nGGLMpp8fnKp4wLsyT5YbOfsw942dlevmz5ETdToxDNWAwLCWbN0izNCZexfm+UKLZm/iuOBUwGflCpgRq3m+asy8XyE9K8AHDkeAzaFGseYaRLGcpOyTeP3waOZOgHAAgnI4Ub7erTtdV6I3ki42d1G/IwQp5mbUuSuWzfyFhuMxHhXvwwt8x6/4wEGyGbptZ3KIZQH7wbCoTS4JWky18KWxXY5fYixVwJiNTd50Lt39YhHolJ38oqVdNxhNkcd1teY4uWCbENLB962C13gRyDQ23n8ftkxMW25wC6I8NH1dAmpWn6MahaBPHAJeh6EWkif/by/9yPMQIiwgekOZK6vzMnebKm/WAcbVP/ZYAbTHhPhf2KkmsYnE7hahDAxl12Y9BYWYCoJfFQ3CHFDYArr3F6GQYLcGmTBpFZeb98RCzOCmbndqyjp1+gT4kcZ/LZ/jZ2a+uGBJzWo6heI7HhPhieBroX6ShOOx8JANxZguRSEapC3VmKiThQjWJhlyuOjZNAtlLRLgk8M3qrzB2HbvMAGZVQNLETx9BiVwHBxWim+CTLO+ySSn8lRATocQNkmUAV+lL4XxmNPVULy9veN+7nfXVw8PuzFAwyZVx9Nyp7c6a0W1jyPOY5GKummZVBM/G4xtFPgt7o69Bb2jXaiAk+Bt2ENBUVKbBxFlIaMF8bmVaYwPUM0TT6ebs4lcDbvS2Ox2G17g6nM77YFQBo9FK3MlJTE+pDW/6LS79lyoa6jbajknDTe1uZLIhJCjzv8xMbA269S8Od4ExGJjhz0SYHpGQUO6BWxsiQ7c0ZScrDA4BI4LEkFiABiEL/1YQ2ecwKUu63sOOlT9KYN0NpYZ7YmOIJANT7ofTyblak1me3X5mdzNTfRQYuEOpmUZC8F9UCYVYsM7XMegcLSu4XWiIXHkRiFuyvO9DGOek/Y8B/p/DE4wbNuSgd28POaxzLY73csB0ioFeyC4LxlyH/nHMy3MJU0cFMlCuta8v8plBj8LIWepI1FpCrGXk3tACGRdVcSJYq3dZre9vd3kua1gQJA0eV/w62eb1fv7UjSS9U8c6hSpOI5qnIfxs5BEpwb3tUTDlPr/FgqPWT5piAmUGtJejPo/UDWgxroQVGh4rKH62djFb9j65ukaj7ZV5IwWEUSjNlVOVBVQmT800HSqYbAUBbKHbjzfa8Ox60ae6mVhOxPjITFjGteRFi162f21iGt31+jmG0SpNYWk2TzC0rcX8NKFguzUnbLLdyN+lDphGvc6AoD9pjQoU35z5RUx2o0oaMaXOIataSTdhXmurGzbXXttRm7WdQxDRy/IPq1Q/xR2lTUXloaYLgpxDzekwNAHoHMiwkhnNbCT42ox1KJUHwJtDqKJWxFcuIllLGMxlHELNwNEm1SmNXJamc7RLGpXAkOYGy0VifW/iRojeDiHrQxGy/QoS/3Z1FGQOC7kzoZBWuDDxKQmdEFmBwhsPAlYBd0I4QsuX4XWO4VF3Byyhaw9C8b8qkehMWOGRDud3KoJICqRwWoBFCFdW+O5oYQKJuyJ7NiLrWl7shULEzRgjtQV7uSKUkve20iKuWm4e5vI2u4At/qOnx/r6wqTmKNziH/dq0mSvJ5OU2vUBseL9vrequCDAuw5vny7nlnGjbb3L1ez/HLdZ+cmXKOHTzqdv/IOxh6ElLCN/L5tIoFJeJRH2d5CSu8zxa8WtqzxHtXhg9hSIlN4sRlLapCl24Zytqxsk0gpZueootKtiLOnQRzdU6FjPKGSM6QwUNEl63AhBHfGUO3bTYn1qUe7zSsy25FUaWnh+kaDl9Pmo8Wi5E8N+kC5rtvnb6sPfzPz07cgQxpP1K55hFwi0bUfDPsoim4HIhwFGXFBkqYMruBxD+jbYMGAXiJ0yj/nT9vLDibJU+pHSbL31i4lZ23o6EQ/7w9fqz2LoKLlAXopFrxwjJ4Ox2ptLNzHdxdc9cIsJaLOxHCupMR0Ujc3uuxuq3joiWSv30bdZvjdh6YRbeJtLixLqfTH6S5K/MqM4cH9peKNHli/WDvKYylR5xXr/SloOn9cTwAVuUPUD8MwzSP39vsWMN1+6HCTOKRI3ZNpXhYiJEqN04fNedADt+SGhxEgEMIpffqr9RFOmu5ro6nJ0UfsjodTYcShI9klDCfZwJdr0fvB38JqMkxdXYrcOGfmc1A3V2ulaxYw2RjF5nZQ511w+NMP/02IuLiMS7i0oBPe3FZtwKV1GrLSOAR/w8hOeyvYeDbzsrEGVMXKdHONyitbicMhWWjRMRzRZp5gi4QcH4tk7VEsPGoTgg1vtL+xqwDUL9aRq9uCSGzztI15cf3Ti6iazXuWN06YfM1GWYlk3oWALLpnU7jJFjC5rfLdFWmKJ/9OWLPuBxUNRMK9wUwyy/P1CBwINenC8iGOHQV3TuRYcyzV+2nFQhaJeifMjBm80XKi06XM6jBEZTBDEEV4+hNtT7H0wXvsjJmEhfegRJe0SeAZ5EOd4AHpl/zJv2r45cg2r5aXLo/vjDzagdTAccrdGsOdevWVJFu/nr6k/PEKhH8EVy5/D3MLSOwBNqYm5N0TvMtNGSb674sxtmEHtp4D0b0Zh13S2uoQFSFQkNNYmdGgkYGJ96jbQb7FZ86ddCyyLAi8JBHCI7yFkJlJ9utVIID7xx467Fl6fG+Tlcf0wo1FIbjvMrwphihaAUFfqBBZ/+6DWh5r+vhPdT0Hj6cToMPaBsO6uaU0ii/RYJnMvDYSg7iCKv4goZWHwgkiHiuMkDI6ZCI5dyJZdOA4ifM4eyq1dF59apj/aEr5w9PFj198/8Mv/y823ch5q3fGH1tN9TRARMfZ2iturq5317U/7M7n+/vaLshJ1ktE0GGoIxDQsF0GQqcFTg7nL+TLm8fPG+ooCh2KbWkR5K8dQzYN2qy9oBBBL4LZxU2QB5r8OdUr1zY27W06Izy3i+u6jA716aQrT8ftVsU2OqLc0uBmSqr7ui4hLb4oliTmlDT5UgkDazcFYnQxRReXhapyfO91TrlQi9YjxDhEEkYSEUIW8ifkkIN3Cvo5f8Ffn3nemJblL6fRT2HVjKr/zJ6MBUqMdaZSpo/V0515eafLDbzxwyhJIUGy2+qb/5zzfEv+KLmsbLPuLj+KsSXrEE+YAqHF5XzlerT0grDCKjQ88ym10hkdhNIgoQgTBUKpSjklzExjC3BlGJiEpEoMMa6nRUsBImErby6sLNmcx0k8Tgn7dS3FGQ9zBjey2XkSwwGBaow4vvBY3yGofbCWSvkaI1Uua9Ysyi2NZ7MyY4SPtRoYPlt75SJfuFh27mQdTHR+QsihOZAQaEOz1OFIhDRXgEOE0u6EqJAH7wXZZFIh1Lnfyzraz3TXPhhZMPAKwXMoxRS1gO41cEPTnHLUlg/piI62imIUdwUtqBR5GdfnhIqIMFzK5v+qpG2gSGNtHc4Y5Xww5QwY72ixzNqxYosLOI8LzWr/3/nwe1UBv7uoOxVhzkhzG9qy7O1qZffMJKsmwuKHCCKX7RVKvhiLQRRdLBIPk4BcQh/56cvhYZJlSWmtIuRJu917t+yVQU9EZSrit+4YuiD0KDI8ancavr5iIpUvitlSOYMIVXiszaOPk8Jac6mNDHMfQgpHR7aTzwRW57ySCSuSqldBu/3LtwsEySW4EnXBTjluD9MGG2g6QLrRL5V4QSPqV2Bzme9keBu8mzKNpDw2wZXvDttGDHpEcnyFEZHH2T1WG6zfCmRAUStUDAp0mGpicBV4ZtdtsA7Uu/bBJLCKlLahYEG2OceDhduKzZDOW60+kB0/qwerQLnrMZgF8keJYsP2ZNayypmLwTGMC0rsGCYFVBgES/Ct+QAStnVHWrc2RCunkaRa2RWqT+JgsnC6hmnfbnaQkCuCsWfK208XUm7atsnh4H164AaBi+yzKASoVWB/hOryLhZqIKMzK8SFlCri7RVmiNtmUugJhIox6FUrcQhs7CXnoZOvmRIkhf/DhgGjIDTCr5bZOGhwS/vFHtre56nB+H4GeRIdOcVr34fJKm8K2tEBnzqlE7uSO/Dmdr6Z3kYopFcsgW+zT6pya6g4w2vbaK6ylI4SGITWNfJ4obphGmTgIV8ntuCa03plGqgmx0P0s50OY1+WmtpR2sXL7rmgFPXYpZ2EHNq1heGN4+o1B1TROS03uCCyRljmbttsPJrdwpqS5Bmqak7DIpA+lm3wUlHOFbzRTESAKwKGlq1THXIssehQkgPiVZyjp8IJr1pcRLyiOmGbAc7aMt4m4sVeMrUsw2Kq7RwIzFon9BCdLg8+txSZLWOeg8214DljWf2mZ18nSnhFNU8H9XMaONcvuEhBabvxkZpYGokbC5mJcujcukcUylpXqFJzYCsu1R+zWeD4dRmmHuTN1hBQAS2PLY3mkJbENHNcmjGOypIxmUqlJyn/ri4gyJeQuWfiRQ1ZLBl/UWGawCKZUhjbEwkcchGf8JzNdpcSjLNNzwdxekYZkeZnyuMZxOtD+iMCS8XEZdjNciI1I20nhJ4aHNiEOcw0cNMJTOnUnKpiMRtnBNG35h0TKIxbp/AxO8Q5Yomn1up9F4k3icG7/owmwg1WWASXodbSCshpTLnN0aSmDER2MfmC8zKeZ4rR0u2UED0CCA9ppKDOIDCuTcC4odBCqkst1wAEFMpRzdV6jVWTf2aMIydRuLAvuRPPnyxY/W1i5JvD+Z8nfP3ADOLHqjhZJiRaeRBYn+urdbxaT/SHK6KdGsN8dMuaeUyEN9xKiBIBKs9ie80aHvbzZS+aKd6/YUQ/VxnvZXF8tlP7FEe2ulfQUxERjPGzYgsK0Ud98Vzq2ZUcjE0A54QUvUoSRbV6tyChrXCJIYnkU9PcUC1nbxrD0loc7IsG7VFHkIJzZtSzCl8tXV9zPjwDHVG/AtfG97itj8X6hNktChsSK3WtaFI5jlaJ79k5K33hUwkBpaaECKNJPIxhPmBD/MUN3MSZ4mgkUk5NVaOcpDL+FIImHgVU1f0UatsEKfYq8zERk/w198tudGCmkBjqj4kf7kqHSKwGxrGI/S0jrTxQVmwj9VFocpSCU7wXlaYLUdUaRdGyPccjkOkzUcwAtYLY8wICEMZjFajGFIFuziKhkx1OmU5VGZUbb4EOlKUq3xUFKyiukUQEOBjkxepHAj/NAJTXJ1ADQkGMFZLKRIOPxFJJADXIANgAtsQgQ4yPLdhTp9B5UH9ZtzYOOdYbZmIJbQVywMRjWlmJXwwkDJ/ariTPrHz8gThePrr45+9Dt0UMqAhAhm4LoEdCyahJHE+6G51HFsnt/PgYQlqC6IX6zJcLQBeUajJGgqoz0hqe/aM5WPmoQJG0qQW27Yy6sZhWg/i8QKCQdl4vUap8wlKOMrCF5HHR4vAw5hJdX7EHqbhA82ZeZ5i1gGu3UnH1aIpk2kUeqH0bXpxqsP43RlIo9ipjUKAFVJuOmlKJS3czfPBze+TUn7iXSJvop938tUpzAlBHRb4XA+AAPRIOenMD/szFOjf7Mz5ljkAGeK/zPUHZkVVKp9heF4GKvVyvk60If/y40z2TCWvj5zWNfTSyQdFU/aXU06v7q1+cnI+6CWu+1UR8/GG79oNXa6yozCPbeBi72XzbTS9jah/34AHD3XNaLnhWZNJICQ+jkHMhjAmWCynm/gRArfAEfdpEr9rGOJcUMzesrvz4I7WdGcxiMRs16JBKTPkKD/xiTcg0JrUvpGLTeR7TBQW6wan2y95D7v/8TGhO2hlZxlw7RWIpE1Usz9ySd/RKJ1HJiIyVeWmpQOdQBLT/mgeiwuf/SvTgYdFUmLkHrF/D6xtCb7pDPNoQqfBin5K/MfDJRTtKX6yZlUuZbms3CBzNw4+6b5xswymMIAre3ZINcY4HudomjDUNEVLLNBLNau3313jnsH4DO0ot1eKInJW151bV/IwZ25l3WcIaUThAe92fEU4W0KDTGCIWVYWHlGN7DNUGzEexELEB1RUhQtMGc+Lp8wMftoe4xNPDa+hO/Gn3pP3/pYfbTpj/H1z61QaEPoONaz8p+VpS3Q3vX7/CIo/hnu4KO7xz8RC7dqOTKgSIQqwpp5eMKh0MPHucyKh1UuIFOAqgUiwqzzn1EWgxLqoWginu15LmI7lOetV9LLIGg467NftfvJY7iyLUC5EmVj5qDQTdhMkVo8FytG2F+Q6gsa5RvFQrGDJ3dEwxNr3msWIOGSg5X2XrkmTRLNh2o9YjsDEXbY5O9H3eE5eLpeRKhyZO4yxOuSt6WEPu3PRwo49+4fzPN598++2v/ze829MiCUL/IQtw5ae3yqMu0nYbLhe71Rx/PJRX+99+/S/GCpkD3lNxTporq9IUXBkuQz+lBfxbPIXn4Xh9dXs9cRjSAowC/G+vMn6p0pPiZIPRqBeZuPF+JbwhvPfL8KTNLplszgTSOBqfrjTnYd1kdbusYzaroabdmpy1zKM6SVyVXKEiTCSgq5BR54FydbRdmuSOfpvJHldlprhXZqQDHR1qLifJl+DCQ/rTxF0opv6DUJee/94tf9e66j/ofIuIvaBZjcI42nl1dOR+P17uNe3Kpm2y26N7iPij1JI/KR4rvXcP9d7qU+i059rDypjkfHnXPQxsmpUqiriLJ7jtND+YVUJSMxeyjiFytHKt9EcXWIG9aAZVLyZK2gtOourJSXsVYVsNTGoJ4YLRIBjHJUm+gIk8VoFfrWcAlwEZ0l2fojTfYJoziUCVUVrZthkYr9C5lBmvhGQ+l7whrH8kplCuMsaoAZSukImUweG4YFgEqFYAGVvYI4pJxqc6bUVFSC86qQyKdtOmtQb36TKLBRlI2lrErKQMVwTpWdUIyJBnk6PLIPQHFdT3DBS6iaFWIpHg6yFBHFOL7xoZ6FuKYCiNOOdXuUXufK/E5YSyzzmLImOgu62tnnmyo06VcKQoEMq21MWlr+wT8+b2G245juWCQFp0PFTXpum0OwfnZ/5lW3cx2WBsiq5s28vpb83B6cG///c9SJMQQmFqc8khBH8Wm9cLCcZJaHuRLMzkMZV7pH+YXRLLoyejeZiHUnJK0/te+SXBBjMIU5c2F6K9fDEOse2wN7auFTlD/obkrQxwZxxjLkxGEmAD5NPKuZX7fRjSQt1CLChYq2O2XOTc0BTHSYRgFKOWXjYXC7DMNbQisXMNrUjsXEMrEjswtHb/qZHbZWeP+AwseDjxKi8ECBCWwP37LWR4IvIMg5clxS3IU8z0ELC/7WG51YLiN/gB5MA/WJPXJ8hFfYIqrdRQG0jQmCGRVXOKPtTSCNJgU1KTdJmXrLOog1sPWYvtu0uxeuInFgvRFHPOZIveMhXaz4n0lsq2bwAbJw8OIQFAte0BeRLZwrsC/212GNucbXS90cLLS9QAFqGDRpRoLSltitE0KdMlwZ3ebQnmvi0ap37fW7DfCmC7ehfgp2EHbFYGDXmiU+GFHXPXk4zrf2uFrKvwQYoDZduS1UDZviTMHr87vR5sFtB+3MaK2RZKTOLiCrYd2EHbojlDEWXepAEX+wKpfs17LTRNtyBgAFABEnOA43qd6yWqP1ov9+8w5f0C8tsag5VwnW90+ModNph0OkE1DAToKENT1p/hwl2L2ycKD8Aaiv7Ceu2aiNheiSUnK6BOyv6mKBLoPNSD2PL9Qe9wcykbu+4lBAOWaXAOB/Sa5iUVm5QoKUinM0zTUyvl29F2agiRrx9sJAPoaARUovn0cdoHbULC4IB0qfSSkGE++kzuXyZ50eyZlNudB1PUeVZUISQfxW3nj319cKifsjGm1OTHdzynIDteTmoIwqxjIGDK8H7jy0uxYFQ4xn4OAlHBjCz6zhKwiZ2xIn2jmSc7BUCwfHxvemYhGQSaEPcC5AUNkwv1/9VinMFhu5qdk2kZSTnRlDIlWc9nujsf1NpW4bGvw9IynEGkCK6tdB6EuQexEmjzVOtDTRDJLKu9UulG0uOcqyNfkpIoFHPvUJMpxc8EDtb4HrHJu/SUKDjoeRAtIbA6xnMFE4JRxCc3U95mHniq1EOdn87IOqhwQmMtgUiVd/0kolD2t/IpkPMXhYDoCxFSAlAXhczYM+GCVgS91B7kNUg8Cb6NDWweeh04r2NihhaKCEbMMqEAVvlq/YRgaHPbuM2Ou07LtJL/b75ZG+dVAFFFFYVx4VZeWaO04objRMqYB3i41pVCtBs02YPytuW+3ZBmVEGceysSYT6Z5JhgyH8o+x+7xnhGdMgIPd45Yh/rOqeN8JNklgpsEigQ+ByBPagN1GcwuoU742qndSPiqP9UxTTPJ2mWpSklYOOI3TKUSG1nfDmdJDdR4Y1hrBLw6dlvz/qkbI5gevXzoosfjmM/rZIgL6T6uSjuw4C4JHe/PML/RzaaHkUcf/GSTw1jqzKoxp5PfVqeuAHqUiLupXn3LsuRc4xMxIlz644BhpeOkWkC5PqcVGrsfmzBexAhUlEq2cEzdoJNnt476YdrqDJ0KhqCKWbjDT+pzv0i/2jFzR1zppAa4R+IyZGgv0lhEpivfeyhqlzP5A5xpEmiqTOAik7JfqKoBsLzbpiPmxjEEqAiKyP5Rf5KDD7ejm/AN2a+PHn4LhWA1CEjOUL47Jc/Fi3mTlu417vAwMAloNUPcBphJ08IIJTICWcAJBASAU1u6pQrCByBG+9IGU9l7H63fKncJNyOHHywEDBdCAG+gAGbzcPG/1BPRlNh+Xrpf10pzgK+Evv86lSNLMKqdB+9DlMvcn8LPLjwh3D1rZY/oY3Vq/mp0wdzboBb+mJcb9r76XRsVR8EvtcsfLckftfWEPGbteE7p4l4wtrq1B9lAmsiuK93djp/phrLDAFbGSHmaI/KxJmDFOxRa9KyyG3ssQ6kGV8SFiC19doqNgO05xFzjQhAEah8NZusMCeZmrSShFH6KIrg/S9kBHoidD+yFVa5jT0aIG5gwAYBWSv4r+etA+xIIFds5abJt7FH1clhGsUQGCVoqDUdZT0DMEaP1wvN7+CYeVFfR9wNcQ+Co+ODGa0GhYvvR6P6QHgMiFErSLS4hKsiAoyLRezEdD7fbFZAxmrISB9OAoVogQzdhAlQ/DQKuJonsP45G4N+zwr8+maT46PtovD0UKrSpRNmE9mz8XjGjCyctAQxNKTbc7jBl20V/5Tb8V/tbcJFRVrklJ9FJeY+LbEFW2UzmggBNzKCAlRBtZngNx+CPoSyCL9I8QX1YoSW1vSrXgosFSbJfFpiz9br2YM5nX/QxsZacbgtmMCu0OmAqjmCjc9ZGXR7duDTqw1w9kfsMF5u62MzUthcCYya6XBW4RoQI42fxTtiH4osGtX9wRRZ2W7obxpxa/8PzmWrPN+IuIjYqZRUL41OaqEq2yN6VqQC3pzl5WXRffyIU6mvWIGUR+4DxFdVmkEmAlXpa4pC79l3ROhLu/X6Cf/6tCEwPQM2s0eSGCSj8sQjcYDXjkgf/dVuDbQJWDAIW1SrIgRW47ZpjifCS7dz+Z/gk+eqbMJgBDaxe0v4WFb02FfesW328bwVj8WFILyAwdv/DHccqILWrr0Cnw1prfAK8HIiZvC/tZ8ERZcw3UtvwfExDWOi5+Hw+PLsEcpAO/F/TUsT4cfgYvhNOCv04G+mGZKqREOod89KVuZ/TMfzztosN7uptdflelEAlbnWRuGTaqGLQ0KkyDZiSl7Tzh2vv7t8/kFcNKJZPapdeeqdD29CNbwDc0IG0s00A0yYmq48Pxra6k7BAGYGm8Dv3RLLR+sSipgGlv9Ath+NHTJWVZsFSEAXBgxoOb6Z1i5bwQAyL6N87/alR3XT8pLmFFp390YEfDtqFGYgtwfBppYRaREmwDFyHPFijEHEFyTV3yD+t1X8y3/GvBL3//nRIGD3tXz3QNe3TenXid78JdxOFbPX7X8A4+8xT0ICIrC34xv4YVWBhlLN0hgwOXmCumqQT4oVxqDlCRznaovYSCsdjCU/3M1tdktRtCwauwmtD67tKTUaDshC8Wb3a6fLKsx9qqGl8zE/NWOY6QGCCMoigHqiuLobFcYrIJ1P1+agbuW3CbC2r9SnHEkmAr1r1UIbIGfNDnW1NEhYEULQfmi5ZFAC5ZqS/ju8Petg9U0bR3CLFmxk1FHHY4+PN4oEZJPdnuRdA3DB++U1ls1N9PWkt8JURLeyz8OtFQEMiAhoVEzeSGxXSBc7yyS5+dS2nh5GJte+fZJuPDDBII5bUwRSS946GUbauWOuDIjmbJB6jX36HKdD6F5buj1UQTLN25hDnsY0HiktSEyYzl4MDQkAAlDxwLa24h9Nns9n0xEvh7cMrsqETCsgpVv7aKl++GKKDPDrfbWMy8x965xqtd4swSSntAog6tarZFexrQybrGw9PwgdpK8Ohkg06vf/f3aDSPP2XNejHqej4nq09/72liKCnxQ+G7y2jM/SpE3Zx3KzC6L4Y+Ftez2BsbV4lUT+3JPdjQ8pdKJ8fppVmKHqV77ZMs0uUj9BLXvflGXBYlPKYwtaDF6+lm4RUDnJcZGjZHE+gsUcrGSOnGKdWoVYiEfblREp56PvjEimLRMGr+hJ3MkBrSlfx6GdKDxvALR4agghFWZQtrRxGIdwIFv2YvO5oTfhj77k1l66PQWn6hrfTGb3D+OBXbAbb9i0blhc54k0QVL+rzx7l8ki1J2l26fmn2cChxu2PalVBuoDlFeUhXJZESefUz93MDXTLSUSviscExIXlpZUIKiuMZa/X/BmxBBc3jmtns16vWvv5DunrD97u7iQd+dd45xbO67zNEbRH//pNrpO8b6epRoUsbBCLSOCDjT40ReUKhqHEoiL8gjK7wQqCS4HTtiN4EJYjxPqI0Q8ETu2ywi136a1wNaCqouEK1vy/ikHHt23OsJelb4kCZTDndvKp6ySOIpCH8mj6PjMGz0/DdNeA844zIJYtZzHhjkvvUoX6UShMo2b5vVsONf0wmVIZd7aCtAa8ic4HnquRCzDgmq+MqGwkljy5Oz0dJzxD2Xr0vP0jH3or1lj4h9YfMjtLmBESSafrFq1tO0mibG+O9JDC1w0Yz8tep+7RDKIjRLD4L3PNbuRZIMI6cf8B9Ghk4ZJjD6dOU51VxoKz6wMHzzUd0a5CswrY+e8Yz6Eu3LeSUY5XQy9FGVmmfimuWnyx8a/MJM87v57THV5d1drDZZO7u/ySrxzX04bfkmIunEPbuM0Luh7qRZSmFW09LUBQ5iywSlbkG80ArNuy5dXnpQPx9mn5hCgg59iAj7HuGvCv3e6xUEcwH67eK/v0oZ8lndCO1zyD/HjC5VW1B/Vnh8EFd9M67lyM4sLSxFk8nQHdjEdTstoedo7yqBjekCgtAmpTwYoSzkTerM+JvVbpQ1JZUdDRiBnI1MQwbtjuqxFIR7X9Tr2HbFZKc7M8Zv0bQKq5dvgstN5gO+ixV2MpoNxjD9zY0xkMt0p/Xn4BEy7VHfLbs4HgzLY++pifNPkyHooLbqe39natufV5tsOigHIzJr4ztA++GXKpSiszRiZZTig6ycPp1a/A68iTK0iXe59t8j9V6Qrr5fun/9n7ZtShW+L79T2+zzYkhLF9XyoarkvnpIU369m33Z7BRXsPfxjCtgmMgnoucbNEFP7oSNPlAphwK3CjmubZzTuLqJdHxWVOeJV//QkulncUzf/a09OlqhvOzCHcjLp71emq16+DID65CGsO/EBuovQdec66N3+X/NfatctjHpRTYkhAttiA/ZS4miQ8eF0yIA/UWXDh/Bw/7920r+/Tf+by4QVgA2GuJdEWe5bTTASQmJNMXO/K3oqZQa/ZFvS94yuhP85szy/EQSDmnrwFBSk2hyiLOJcAzpZgsTL/L26/4obrI0Hq6vxlSUWjXeA2CXqapa7A06vL/CSw0M0xiVLdSEmz69s5lNwqv7TGyLoKIr0Qqci+DXhjWEd9lY+5BWPRVlKuDTtBcM6VUrpczwJIMmyWeeZjFWShoCbolC7YuO0GPW09nu5ek8imYVdAxCqn38jxChgTSbmSm/FEQmnLTdpD86rll7UeH5QH4ylP1xtPttTvTdLtQJ5aiE2W6Zlghgvk9ef33Rv3SU0GPCP/N5oe2YszBoCnnvD2Y5oz1c6SNUJeIWXeFg127r79GaowiX1qWSpJJ+Lnl1svfVclvZC9S4tYsqRntSX8yDHgfvVjQfbtogv0PAF4RPLLnW/FfebiiZGsdJmxrfFKlkfN/1V2DzYwy7dyozDDbBLhYnJHd+J1faiyjKHGErZxAk4EwNHeRBPLstrq4RkzuS+cLC2rY+BMDc8vV2H1f/wysaw3P75Iq3dUtwGCFnjOmS9Cl45qn28FQYUoHwYiSTbiYjCoWpoe/sxpOD0Me56MarthglpCF6ZALpyuzmVfdKRRmA6Qfxif47vLiZtuS9GxW7KHrPdJJwj10qCl/QYPD98Ov3/5Bn09ekx3J9Zme8VqjrIJGOqS1pgfF+hhP5GBCVs+4mIRs1/jWkig22J87hsQGzLm37GFnhP91txvxluVwcgN/cL6sltWJU57xa4wdDcufsVpbbclwKIp3Hl4nwbTv2GDPUIrKpomlAr7Ox6rj4eV9dHv/ezbv20bnELhA8CpLQ1Y2Um0odxCITI1rGrI3Kjv05t9rmAQWRUxRoRXZR+H2CeyDmyFgIIFTXUanNI1VbMAGavCd4Qtq+wGEh/9aNAAOi3/5fl5nWWPcE4KbW8SzQ7ztndyHFin/KBP+GX+IkrO1pScPQmfxXje8tg3RvHq+U1tYwYoj3fs0p5+ZAfMDNqjvxj076/e3y8ChQvQ9A+jNRpG4PL6f9tGCPo1srCvWN6PCc2l8QUApV8R/QJ+FDmYlN2LE5xjwSC5WC7/uX/osmNXaZYwDXi+lU56MbUo6X+FIiVlcU2oBdxQGFMBQkdptw6QbAk2exGJvPcWdz4sR93TQs5byw8nOONA4MLatuLMlNA5bVoDI0U5PFfpGLsL63aJ7A66nm68mW0EEBj5ToB7wss2vYQOkvwRiUk00FrhSqKWXsqwpqfIhSfcwxa8sIoEuDMJAltZhN8olI/YlL+k5Y30x7GrTkfY47emQoRiQJCiZlfG0bWJgOB9RvAPSo/GKI5hdobIBCSgWMOaBkEdCAGWq+ILXA5t5RTk5o7nm6/aLq82ozTcOi+yr78R9ZBjC+XWGt/YISaVefYdvfSya5gBlv9Jg/zKoO0/86EBxPCjXSmt2L7znYc26UOexdW1mv1Htj49EsDoeRt9gbT3vKkieTby1I+RTkfKg0dufhErNnoNDD1FB9h7fJj9y5kSebEwVEgWzh+PV0WYytPI8inmpkgVgUX/hTWba62zS9iEgIzk5nj4qbcKSYC0qj09bykKqqayybRYru0WPInmxsjkKB+EjttQSPxwYh15cxrrtjL3Yubf29F29Eo9n3L09cjHvxYicDXj3JVBxKiAaFxQ0QbeffMO0TXrOv+DBridO893cOxrCdmO+G3+Av+3FJT20VclB6dDah1NEpg2k0jJObcF5vNe+v+v+W+Ro8tiQVu2wfv0YKK1/LnwcW1tB+r5DOxmMckrutCrXCkXMpiLesDQs5xfMgUAQprbXEtqYIJg0nictKEYWQEj266n+zT362lA8ILuyKqnSfLgk56WCozOy/NbSbjNNl9VlUETBR4R7e2ul2rp4X0sJdvkMPj+E2gbX46R5ZE5fbufh55hx6k0ft5a9tgzBmOiYZvriGOlqmEhuTVbSrgcva4qFlCMmidhnO69V2fsNvWc+F2mArlK2gKKoUJ7YJh2bw2U859Mi47wKGvvL/xk2JEp+R0FOZgOs465H5EQ7bEbBw+bEt/TgpZSyb6wei8hkzGE0qqJgVosykTUKMy45bl+RYGbRRjTkHVxnx0ThouqSQB+nRVm/fHX0TiYApqypUjQy43bU5GSbejMOE2Zsls7v1UEn19JuzTituMLLel7xluGxhr+xDzrUlCHILNrW3ubq1dR8TxzBzye+n/VNDMIwtcJV0IAak86ryuiR+ej5Gq0M2wOQnh0yAhZRQiFM0KESB8iGhwQE2U01AJM3xMI1BZ56XnDFUQjQlZJ2qWA7eO2TlpgRVkF1h4eYdLm9+Jk7J3fayNernJb4/6PJbz7UVsDxFb5hM1dj7HdlEae7Zvv6InD1rn6ZZGt9HIAmGCOcPGBOg7mNQdPigo6/3TIGt1fxhWRc9Mu9fM4Y0BaOU5+/ZPg5xScB7CylWv97gIVLn9RAJyPCqBilLfUEIm8e/Uq8sMa7f3T3Bn5BKDEZRtGGWJ8RCU8zNHCOgqwVurBzoDE00AnmpKmwW4rp4uuAkTfZUGpOnAXDKF/ipJNkzNYmfITc56UJv08MkwmCxTBHqU2dsfpRAsJ0y4HTpue4EHgRlbpGcOp6lsVgPs7frDkYCmIB8EOxZ1RRllTHcIWQbSwPGeANSSANZSQghBrGZj3qhgkiDlohmbfy7ylshfyV/fQZ9igOtf0yIBHXjSgN2EH5CShMm/z+ViwTZvK/Fzc6ip765a0KSMoW6WzACEwLItr57w8nKTzd63yMDLNPpxLMYCwQ53kOAR6bwSgqIyqUtHDQA9EnpGDp/J/Ozi4fwic5XfBzOlEBX6/WzX0aK8p4hAgeLVpD7JyKtPKvM2utv7F1Wra+MvcW7pTIpkMYAMJSAfRBf2c3x5XH8Qvk7CKQ4NxBCjljWB/0ZDaUg9dH22WoxjfVSacMAn7OzLj49E8GmLbTRmcG6kaW80MRI+YxHARS4yZ1r+RQkrNJveFYcRrFeKY7nv87yqskT9zM65355OQ0S8anSK9Xnn9AjJDwnsGPTT/apxcQSpev+CfWUwKt31OovEoz24aORqm7ipn5J1Ok3FjIImCKz0K93rMPGCgGCE0qCHptY5LkpQ5843BAR04XiOkXZt20zErQK5W+y0rmCrCPO5IuAv6PUWWDX3S2yLLuYjmuRox+NuntTdpFOCKUylBvJWFqeiJFevk8vESqwxLjfjYou6ns14x3UpCxA9lxE+iIeLVlvXW0pkt8wglMr2W73dmZUvK0vrqejZEa/WeSxqE/jgqRSl0/rpA2sWr05InWNlxpwqMqlfKJ5RFcS2CvZpfPlEmBHyCAskinAmgWQABTTh0CES1kfS6nlsQ6cFcy6jl2NGgkxlkhkfkBB48MrYj6uO7szrrDRWuZudwOTWQKeYz3iWc6i0bEU/6gWgO5D7ygsAFVWhjlUoYOoeVV2/f5RxdCnnTjbBliQiHzPiXbf1q1v2yZbZLdvashqSGHifdbAJmytd1jABNmC5vRuJ7Mi9KADVC2IbGjwFvBz4LPAKMSrDaZzEwWL1O5QShap+vIVFOGhOCEnOzYbu2hfb52dHh75/wIvtCxP0UUobJQbyOByc8zBXiMQEhFiq5FKZSEyfKh/LysOV5Lct1fJts36xtFaeToPfNDL9qw91cSDNckyZG/jSJDB+4VLnQSj/6Zf2rQzy5Umbi1zjoV1mLRfBRwKsXclTaBs+wlw7CI8i9VYMKadNvmvWNZoy8ur6jOqQRFHUcDOWuOivZuCEj669EcWRUQp2sQIl5/V92ORDVZ+7yhLv7KLZYqsF1Bld19pt8cg/Ecd3WwLoKneIlnapIfMuhUd4zOMXIVZQxeHEwdRoipHEPHDBssSXd2Hnd8ebCvAS8zaBA4nlR3C6i/EngIgQ22V1W4bf++KMCh1essjltFr060qhwujhPx1JFkSQTNea1Plnu2M6AUSRRTTNJ4roMJK994u50l+ckXAtVttdh37RcRGT5W9ABfuw3eXdILZyf/Ah5BbSa65tmo26PBUOEJ/F0D59jKo2YwZF6qOMdWKn0fo5HE6NZsSzLa/n5AFSWWLxF8FjeSPP43QpqDCOrVtFHGbJLvpxKYcfHOrlAXhz5sAvy/BuxtuS5NDxIQHvTt2fbSFoP0An7kP67vCfHgcwuZzDHAk+rKAxOMm3Ibs4l7Zi7QasWbJFkhMbxe+EA3BwQ6iTszCZ3gw74s8iBFQunfjwavs+w39sItEK+Pjt4WMB+PKTqy1ZvdTk5tUANQwQ4L965Ut8g84fnhfCfwbH4WOVNJuJE20aVmcxOVLyfMd9pX1SnFush+03TUhmamXH5Mg+X4DusUOCOz1lzGcCBnsJdFVfNCe+46Xh3q9t6cHi1Fh62iy8wFUhox4i82nPHdaU9hBVe0l9VDYhYviVFMJhlXFbP0qbTDYrutZcaUqEDY0dShwPj5HjJqGkfqrBy0IKYV7z9UYUGNurO3alMZ4x+xHFm0RX88Uj/SaF2aXWY3aP0E1UyG9tu3qEdZ356CXVRjVSOpASgKl4XyveESYf2Gh9vuwbL2wSwGJUlE5wGZhyfU01h6gOpYPq4EeqtQR4wXbM1Z6AbNs8wSgwHm5tF6Qnwg64HfOTtJdq3l9hNzhPItjPBLqZzavJ3Gd0KuRynAAg14RARj8bajSelQ6mCQDLQ4ZZpGEKdlILN4dKfmJciCGIQB+4IRQhiE6EkZs042HXDp0RoJ1bpEu7TbcAnW3J13Qe76pE7G+CPrbcFIl9xHFmUCeAQRCDt+YBbSDgi0GjzhPDqWcQYdDleDk6rTJJvr99h4VGEQpds34C3QK+49h8uEjLlmF06opzZHUhfBx8mLYAP+JOYjA2bDeUI+ymRvgUUc9kljMKHMZAnIP1s9cHEKNvwnIaw+khtNFo61oUAaPRq1/poau7Th77MbrdlwQhzy8Dp7FkWpMcQZGQ1APS0P/+grjAUVqd/Ka+29QzHRrtjGW78umFpAinaay+nUpX6JLc4IAI8lhx4O6gnQ48jO2T+3WxhJ2G9m1eTFtMW0ybm2p5iS+JaEtpK6ajX1w6/A03Hyt5rKZuPs3n2Sb9qGlbA57N2K/kQwC2+KlDII7UiJOJzrNLVUhgRDsCavGEk3tZF6I0sgsTKe0iBDN0kRyc7KKYe/1Amp3fD4NYMIvSxQNBBM7gzKUQn+3hXQJgI1kTfvpYe6xLBMo6usQga44midvXdknRsbdLho3DZ8eEIE7rZ7xCkxTLkSVbKQ1vWl78aEQF2ngJehnd48Xrx0Prs4J+ILWDXpLQMryQoVh5fn7pPLo6acYoCNUmhSxl9HWmmA807a27D50oSXpUEOsU0+ZwF6cz8FwaXR+4mEKJHOOjGZqpjn34QpJCpWNi0OPENwslevLsDjK1bUzY6CvmKJOvr/E2dP81TjzIJrIqMjsoUF2bTplMY3LHUDWtxCit4k1C7P6myqn686JgvcbVMFwx1q7uH/Vudew5SOeojZMMja65zpkLV25uuOmW29x58CzxjRiZydsdd/P9Nam3x14+uvjyO0nyrTe7L9sDQYLp/tw/il4REAXhcuTRy1Ug31oRIo0XpV20wmdz60VixIoT76FS5tN/PmUSJEqSLMVEqSaZosJk6/xrnzTd+htgoNkGGWyqKtUqT6r8tXc6bkQjEMOuvJbsPu7YMstihP8aVlmdFZOTMzunTv5PZUEVJWq06DFixoodJ268+AkSJkqcJGmy5ClSpkqdJm269BkyZsqcJchJn/3hTxnELKntQNrAxnoXzCREkwkLDsmaLTR7jpz4BEYaLVRvklz2O6Cviy6x/X9f22x32hkULuIQjLz/X5Avv2lOYSLFdItLLVQ4vEjRYkTe63GIhjUrC4yxUZ+KsTG00uKVVV5FlVVVXU211bHFM8sMc80xT02ZNRilteyaGldzLbXWVnsdjW+C+fqp9chzjz3xopI666q7nibVW1/9TW5KU5vW9KozVNO0pjfj5l/YJ+nyKZffsnpQH3khG2qPXJU9rnT7KvoFzfeopdtBaV2TijAxq1Dsl3BoRRHFlFCaH6RQS1lLWUtZS9mTNLeTVoxl9rIrMti6hUEbOTrK4VufE1Umj7c+a915Nc+dhcNchQHxE6bu+cRQmalF0NT90j1aBDa2pi0QrzVtt81NEd1FOuQC2hmcaIKDErMeKMdzwbDYZHTjEBEFRJMSlIguKAs1KHUW6v/CXb4EBtRHt2fUJuUe+3uiyv43XBQjcF8MzEtFnwzimQxK4CsveU5cTp8lakUyqXL8zTnu9DlDFTt7XMwamNvy/kQl92UJA9qNnJjv4G5bQKXqm3lVxPJJLobu9kpkyeTR13ohrBN0xcbq4u2PTC+Bp2Gsa3PAogyLlayBvS5fDS/nFa/UD3lHES9z6vqOs81nn2VSJXOOEC6ftcsk/AGLLxliMHmtubxMXIsun7mD265NT0Mkl6+Tt+9v6zuXDFzm9SC5TZezyJwWbxr1PDaGxzHEzap47mbVS83ls3EfrnvvTG7mO8/kveUSTTIxvPYbx1lixGm3CJxiX+YlVTnIGFtAs8oOxaBMnTrQGVFN3DiDiQQfUIm+NWg0SqjQEVUDSViT/Ltw8d5l8K39uId/rm9f7//2Us2Y1yGawlwcectZQvHXjS3iyOq+YWeeoF3DUGlWs4Y0u6lB8yUNfc0mDLLezejtwrTeWCGjd0/M5u/dm6GcQ6tvOPpQxvWEWgAA"}},"time_used":63,"timings":{"blocked":-1,"dns":3,"connect":32,"send":0,"wait":16,"receive":12,"ssl":0},"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"ogads-pa.clients6.google.com/$rpc/google.internal.onegoogle.asyncdata.v1.AsyncDataService/GetAsyncData","fqdn":"ogads-pa.clients6.google.com","domain":"google.com","tld":"com"},"ip":{"addr":"142.250.178.74","port":443,"asn":15169,"as":"GOOGLE","country":"United States","country_code":"US"},"is_navigation_request":false,"resource_type":"xhr","requested_by":"https://www.google.com/","date":"2026-07-27T15:33:56.513Z","timestamp":1785166436513,"http_version":"HTTP/2","security_state":"secure","security_info":{"cipher_suite":"TLS_AES_256_GCM_SHA384","key_group_name":"mlkem768x25519","signature_name":"ECDSA-P256-SHA256","protocol":"TLSv1.3","cert":{"subject":{"commonName":"*.googleapis.com","organization":""},"issuer":{"commonName":"WE2","organization":"Google Trust Services"},"validity":{"start":"Mon, 29 Jun 2026 08:39:24 GMT","end":"Mon, 21 Sep 2026 08:39:23 GMT"},"fingerprint":{"sha1":"30:E6:39:92:AE:61:8A:6C:B3:F5:6A:F8:DF:8B:23:84:F8:CC:EB:43","sha256":"69:CA:DB:12:F8:75:2D:F3:A2:80:F1:10:A7:08:29:0C:48:94:DC:02:3A:3F:B1:0F:F9:6F:79:A9:7D:5E:34:D3"}}},"request":{"raw":"OPTIONS /$rpc/google.internal.onegoogle.asyncdata.v1.AsyncDataService/GetAsyncData HTTP/1.1\r\nHost: ogads-pa.clients6.google.com\r\nUser-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:134.0) Gecko/20100101 Firefox/134.0\r\nAccept: */*\r\nAccept-Language: en-US,en;q=0.9\r\nAccept-Encoding: gzip, deflate, br, zstd\r\nAccess-Control-Request-Method: POST\r\nAccess-Control-Request-Headers: content-type,x-goog-api-key,x-user-agent\r\nReferer: https://www.google.com/\r\nOrigin: https://www.google.com\r\nSec-GPC: 1\r\nConnection: keep-alive\r\nSec-Fetch-Dest: empty\r\nSec-Fetch-Mode: cors\r\nSec-Fetch-Site: same-site\r\nPriority: u=4\r\nPragma: no-cache\r\nCache-Control: no-cache\r\n\r\n","headers":null,"cookies":null,"method":"OPTIONS"},"response":{"raw":"HTTP/2 200 \r\naccess-control-allow-origin: https://www.google.com\r\nvary: origin, referer, x-origin\r\naccess-control-allow-credentials: true\r\naccess-control-allow-methods: DELETE,GET,HEAD,OPTIONS,PATCH,POST,PUT\r\naccess-control-allow-headers: content-type,x-goog-api-key,x-user-agent\r\naccess-control-max-age: 3600\r\ndate: Mon, 27 Jul 2026 15:33:56 GMT\r\ncontent-type: text/html\r\nserver: ESF\r\ncontent-length: 0\r\nx-xss-protection: 0\r\nx-frame-options: SAMEORIGIN\r\nx-content-type-options: nosniff\r\nserver-timing: gfet4t7; dur=15\r\nalt-svc: h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000\r\nX-Firefox-Spdy: h2\r\n\r\n","headers":null,"cookies":null,"status_code":"200","status_text":"","fingerprints":null,"data":{"size":0,"size_decoded":599,"mime_type":"text/html","magic":"","md5":"d41d8cd98f00b204e9800998ecf8427e","sha1":"da39a3ee5e6b4b0d3255bfef95601890afd80709","sha256":"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855","sha512":"cf83e1357eefb8bdf1542850d66d8007d620e4050b5715dc83f4a921d36ce9ce47d0d13c5d85f2b0ff8318d2877eec2f63b931bd47417a81a538327af927da3e","ssdeep":"","tlshash":"","first_seen":"0001-01-01T00:00:00Z","last_seen":"2026-08-16T23:46:43.370624Z","times_seen":17926730,"resource_available":true,"data":""}},"time_used":77,"timings":{"blocked":0,"dns":0,"connect":15,"send":0,"wait":31,"receive":0,"ssl":30},"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"www.google.com/xjs/_/js/k=xjs.hd.no.ZJX-0yQnO-M.2019.O/ck=xjs.hd.h9GHjaAphl0.L.F4.O/am=AAAEQAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAABAAAAIECAAAZAAAgQAAgAADBAAAAAAIAAAAAABAeAAgAMAAAAAAAAAAAAAAAAIAAQQAAIAAAAAAAAAAAEAAAAAAABAIAiAAAYAAAAQABFAAAQAMAAAAAAAAACAAAAAAAAAAAiBAAAABCAADwBwZYAwAAAAAAAAASYTAQAAAAABAGFgAAIAEAAAAEQAAAAAAAAABAJEACACAAABAAAAgAAAAAAAQBhBAEAAEKIAAAABAAAAKABQAAAACgAxAEAQAAAABAAAAACAAEgRBAAAAAgAAAChAACAAIAgAAAGAEBQBAogYCAECgAwAAACADAAAAAAQAAAAAAAAAAAAAiAAAQIAAAACQAAADBAQACAAAAEAHQOABhhQUAAAAAAAAAAAAAAAAAAAAAAAAAAACLIBdSAEBEAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAyAkAAAAAAICF/d=0/dg=0/br=1/ujg=1/rs=ACT90oHlSnCzx5mAdYXy8e1Zh-GxJ0al8Q/m=syxy,HGv0mf,UEShwc,sy22h,sy16r,YHnUBc,sy2dp,VtMfj,syq3,sy2an,sy2am,n8YO7e,sy2ap,sy1uw,sy1ux,sy1cb,sy1gr,sy1j2,sy1j3,sy1h7,sy1eg,sy1ce,sy1cd,sy99,sy1cc,sy1c9,sy1bj,sycd,sygw,sy1h6,sy1j5,sy1hm,sy1hn,sy1hr,sy1hb,sy1h4,sy1h5,sy1gq,sy1h3,sy1gy,sy1ea,sy1gx,sy1gs,sy1h8,sy1gp,sy1h2,sy1gm,sy1gz,sy1gl,sy1gw,sy1gu,sy1gt,sy1go,sy1ex,syz1,sy1h1,sylg,syik,syin,syil,jywEkf,ZgGg9b,dIoSBb,sy30q,sy30y,sy10o,sy34o,sy34n,b6knsb,sy34k,sy34j,syyk,sy2fg,syrq,syqd,syo5,sy16p,sy30x,sy2cx,sy16n,syg7,syeg,syee,syax,syei,JKoKVe,pXdRYb,sy3go,syay,syav,sy9k,O1Gjze,TtcOte,wR5FRb,syg5,syg2,syfy,syfx,syck,syd9,syc7,syfw,sye9,syfv,syfu,syft,syfs,syfr,syfq,syfo,syfn,syfm,syce,sycf,syfk,sybv,sybx,sybt,sybs,sybq,sybu,sybf,sybi,sybg,sybr,sybo,sybc,syb5,syb3,syfl,syfj,syfh,sye4,sye0,syc4,syc3,syc0,syc2,syc9,syd1,sydn,syc6,sycq,sycp,syci,syco,sycn,sycb,sycl,sycm,sydk,syfg,syff,syf4,syfd,syeu,sye7,sydo,sydp,sydj,sydh,sydc,syd6,sycu,sycv,syd5,syd2,syda,syct,syd7,sycg,sycc,sycw,sych,syds,syc1,syca,syel,syem,syfc,sye2,sydx,sydw,syde,sydd,sydz,sydu,sydv,sye3,syd0,syf2,syfb,syep,syd8,syeq,syf9,syeo,syf8,sye5,sye6?cb=121509378\u0026xjs=s3","fqdn":"www.google.com","domain":"google.com","tld":"com"},"ip":{"addr":"142.251.157.119","port":443,"asn":15169,"as":"GOOGLE","country":"United States","country_code":"US"},"is_navigation_request":false,"resource_type":"script","requested_by":"https://www.google.com/","date":"2026-07-27T15:33:56.764Z","timestamp":1785166436764,"http_version":"HTTP/3","security_state":"secure","security_info":{"cipher_suite":"TLS_AES_128_GCM_SHA256","key_group_name":"mlkem768x25519","signature_name":"ECDSA-P256-SHA256","protocol":"TLSv1.3","cert":{"subject":{"commonName":"*.google.com","organization":""},"issuer":{"commonName":"WR2","organization":"Google Trust Services"},"validity":{"start":"Mon, 29 Jun 2026 08:37:25 GMT","end":"Mon, 21 Sep 2026 08:37:24 GMT"},"fingerprint":{"sha1":"D9:DA:81:30:78:3E:9C:6B:5F:9D:18:52:0E:BE:6D:52:2F:FB:33:E0","sha256":"EA:E2:2D:87:EC:9C:D6:51:9D:59:E4:13:35:3B:97:14:E3:DA:58:2D:1C:69:19:41:54:94:25:C3:94:17:F3:0C"}}},"request":{"raw":"GET /xjs/_/js/k=xjs.hd.no.ZJX-0yQnO-M.2019.O/ck=xjs.hd.h9GHjaAphl0.L.F4.O/am=AAAEQAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAABAAAAIECAAAZAAAgQAAgAADBAAAAAAIAAAAAABAeAAgAMAAAAAAAAAAAAAAAAIAAQQAAIAAAAAAAAAAAEAAAAAAABAIAiAAAYAAAAQABFAAAQAMAAAAAAAAACAAAAAAAAAAAiBAAAABCAADwBwZYAwAAAAAAAAASYTAQAAAAABAGFgAAIAEAAAAEQAAAAAAAAABAJEACACAAABAAAAgAAAAAAAQBhBAEAAEKIAAAABAAAAKABQAAAACgAxAEAQAAAABAAAAACAAEgRBAAAAAgAAAChAACAAIAgAAAGAEBQBAogYCAECgAwAAACADAAAAAAQAAAAAAAAAAAAAiAAAQIAAAACQAAADBAQACAAAAEAHQOABhhQUAAAAAAAAAAAAAAAAAAAAAAAAAAACLIBdSAEBEAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAyAkAAAAAAICF/d=0/dg=0/br=1/ujg=1/rs=ACT90oHlSnCzx5mAdYXy8e1Zh-GxJ0al8Q/m=syxy,HGv0mf,UEShwc,sy22h,sy16r,YHnUBc,sy2dp,VtMfj,syq3,sy2an,sy2am,n8YO7e,sy2ap,sy1uw,sy1ux,sy1cb,sy1gr,sy1j2,sy1j3,sy1h7,sy1eg,sy1ce,sy1cd,sy99,sy1cc,sy1c9,sy1bj,sycd,sygw,sy1h6,sy1j5,sy1hm,sy1hn,sy1hr,sy1hb,sy1h4,sy1h5,sy1gq,sy1h3,sy1gy,sy1ea,sy1gx,sy1gs,sy1h8,sy1gp,sy1h2,sy1gm,sy1gz,sy1gl,sy1gw,sy1gu,sy1gt,sy1go,sy1ex,syz1,sy1h1,sylg,syik,syin,syil,jywEkf,ZgGg9b,dIoSBb,sy30q,sy30y,sy10o,sy34o,sy34n,b6knsb,sy34k,sy34j,syyk,sy2fg,syrq,syqd,syo5,sy16p,sy30x,sy2cx,sy16n,syg7,syeg,syee,syax,syei,JKoKVe,pXdRYb,sy3go,syay,syav,sy9k,O1Gjze,TtcOte,wR5FRb,syg5,syg2,syfy,syfx,syck,syd9,syc7,syfw,sye9,syfv,syfu,syft,syfs,syfr,syfq,syfo,syfn,syfm,syce,sycf,syfk,sybv,sybx,sybt,sybs,sybq,sybu,sybf,sybi,sybg,sybr,sybo,sybc,syb5,syb3,syfl,syfj,syfh,sye4,sye0,syc4,syc3,syc0,syc2,syc9,syd1,sydn,syc6,sycq,sycp,syci,syco,sycn,sycb,sycl,sycm,sydk,syfg,syff,syf4,syfd,syeu,sye7,sydo,sydp,sydj,sydh,sydc,syd6,sycu,sycv,syd5,syd2,syda,syct,syd7,sycg,sycc,sycw,sych,syds,syc1,syca,syel,syem,syfc,sye2,sydx,sydw,syde,sydd,sydz,sydu,sydv,sye3,syd0,syf2,syfb,syep,syd8,syeq,syf9,syeo,syf8,sye5,sye6?cb=121509378\u0026xjs=s3 HTTP/1.1\r\nHost: www.google.com\r\nUser-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:134.0) Gecko/20100101 Firefox/134.0\r\nAccept: */*\r\nAccept-Language: en-US,en;q=0.9\r\nAccept-Encoding: gzip, deflate, br, zstd\r\nReferer: https://www.google.com/\r\nSec-GPC: 1\r\nConnection: keep-alive\r\nCookie: AEC=AdJVEauUsWHpfGAsUyeilL8EI9I2Tr9FfEzOqXuEJToXYpKe1KUK4km-Sg; __Secure-ENID=35.SE=Uz4O9fexpqtcg27rsCzqB3loBSC8a70Mqp_d18c3cjeU9uMWe4FHcPW1svFlK9taJqOPsqN9ZTMvrbcif3fGSVkGFj_PZtB1iqcUHQQ3k4McoRQh3TFmXwFvuBZDiuJbZsEWkIiLh9oQZqCS02Kcsd8T8KoXlZsObsNcGy15dXCeCexC1uy7XgZprqFrMQQA8uTOFbrZoEzmrPkKmCFOh5B5Jnu68ljyS8KtzuKzT_-dPSCoq1OOlqfaBgM\r\nSec-Fetch-Dest: script\r\nSec-Fetch-Mode: no-cors\r\nSec-Fetch-Site: same-origin\r\nPriority: u=2\r\nPragma: no-cache\r\nCache-Control: no-cache\r\n\r\n","headers":null,"cookies":null,"method":"GET"},"response":{"raw":"HTTP/3 200 \r\naccept-ranges: bytes\r\ncontent-encoding: br\r\ncontent-security-policy-report-only: require-trusted-types-for 'script'; report-uri https://csp.withgoogle.com/csp/gws-team\r\ncross-origin-resource-policy: cross-origin\r\ncross-origin-opener-policy: same-origin; report-to=\"gws-team\"\r\nreport-to: {\"group\":\"gws-team\",\"max_age\":2592000,\"endpoints\":[{\"url\":\"https://csp.withgoogle.com/csp/report-to/gws-team\"}]}\r\ncontent-length: 44728\r\nx-content-type-options: nosniff\r\nserver: sffe\r\nx-xss-protection: 0\r\ndate: Sat, 25 Jul 2026 03:42:49 GMT\r\nexpires: Sun, 25 Jul 2027 03:42:49 GMT\r\ncache-control: public, immutable, max-age=31536000\r\nlast-modified: Fri, 24 Jul 2026 22:53:47 GMT\r\ncontent-type: text/javascript; charset=UTF-8\r\nvary: Accept-Encoding, Origin\r\nage: 215467\r\nalt-svc: h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000\r\n\r\n","headers":null,"cookies":null,"status_code":"200","status_text":"","fingerprints":null,"data":{"size":159268,"size_decoded":45557,"mime_type":"text/javascript; charset=UTF-8","magic":"JavaScript source, ASCII text, with very long lines (3951)","md5":"57a932c66ffc9f681477aa564f69403a","sha1":"108ce36974233da7a3b5b48cbe7e73798e6b7e27","sha256":"8c13c7cdd6ff54e43260c8cb75b0f401be098302ca833d0e5036e34faca68e8a","sha512":"fb1e0d8dd610310c7e7a9600507e5238b3094925a2410f72aba7f33a6a3f635ab0d40deaf3fd42bb4c8a58d9fe13ea72590641442cb2e78d74fc251e4d29a374","ssdeep":"1536:ZTUnZQFbgrA6zN0XUSl5f8pADKQ9Rkx5ZOB+UBFZHff0a0GCGpHn/IMD0K1PtcNu:YQFyz2Ea50CDLRgz+pHQMDu59N6","tlshash":"e6f386e87263e2933352ba9050a70147f3ba75e5f588846ca9f8c5f1fef045502f276a","first_seen":"2026-07-25T01:07:04.022007Z","last_seen":"2026-07-27T20:08:12.376498Z","times_seen":175,"resource_available":true,"data":"X0ZfaW5zdGFsbENzcygiLnFraXpLZntwb3NpdGlvbjphYnNvbHV0ZTt3aWR0aDotbW96LW1heC1jb250ZW50O3dpZHRoOm1heC1jb250ZW50O3doaXRlLXNwYWNlOm5vcm1hbDt6LWluZGV4OjE7cG9pbnRlci1ldmVudHM6YXV0b30udTE2U3N7b3BhY2l0eTowO3RyYW5zaXRpb246b3BhY2l0eSAxMDBtcyBjdWJpYy1iZXppZXIoMCwwLDEsMSkgNjUwbXM7cG9zaXRpb246YWJzb2x1dGU7dG9wOjA7bGVmdDowO3JpZ2h0OjA7Ym90dG9tOjA7ei1pbmRleDoxO3BvaW50ZXItZXZlbnRzOm5vbmV9LnUxNlNzLnFWU3drY3t0cmFuc2l0aW9uOm9wYWNpdHkgNTBtcyBjdWJpYy1iZXppZXIoMCwwLDEsMSkgNTAwbXM7b3BhY2l0eToxfS5GdEs4NmN7b3ZlcmZsb3c6aGlkZGVufS5GdEs4NmN7dHJhbnNpdGlvbjpoZWlnaHQgMzUwbXMgY3ViaWMtYmV6aWVyKDAuMiwwLDAsMSkgNjAwbXM7fS5xVlN3a2MgLkZ0Szg2Y3t0cmFuc2l0aW9uOmhlaWdodCAzNTBtcyBjdWJpYy1iZXppZXIoMC4wNSwwLjcsMC4xLDEpIDUwMG1zO31Ac3VwcG9ydHMgKGludGVycG9sYXRlLXNpemU6YWxsb3cta2V5d29yZHMpey5GdEs4NmN7aGVpZ2h0OjA7aW50ZXJwb2xhdGUtc2l6ZTphbGxvdy1rZXl3b3Jkc30ucVZTd2tjIC5GdEs4NmN7aGVpZ2h0OmF1dG99fS5raloxSGN7dHJhbnNpdGlvbjpvcGFjaXR5IDUwbXMgY3ViaWMtYmV6aWVyKDAsMCwxLDEpIDYwMG1zLHRyYW5zZm9ybSAzNTBtcyBjdWJpYy1iZXppZXIoMC4yLDAsMCwxKSA2MDBtczt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMjVweCk7b3BhY2l0eTowfS5JZDd2amIgLmtqWjFIY3t0cmFuc2Zvcm06dHJhbnNsYXRlWSgyNXB4KX0ucVZTd2tjLnFWU3drYy5xVlN3a2MgLmtqWjFIY3t0cmFuc2l0aW9uOm9wYWNpdHkgMjAwbXMgY3ViaWMtYmV6aWVyKDAsMCwxLDEpIDUwMG1zLHRyYW5zZm9ybSAzNTBtcyBjdWJpYy1iZXppZXIoMC4wNSwwLjcsMC4xLDEpIDUwMG1zO3RyYW5zZm9ybTpub25lO29wYWNpdHk6MX0uSTA3UFNkIC5raloxSGMsLnUxNlNzLkkwN1BTZHtvcGFjaXR5Oi4wMDF9LkNzWUhRYiAuRnRLODZjLC5JMDdQU2QgLkZ0Szg2YywuSTA3UFNkIC5raloxSGMsLnUxNlNzLkNzWUhRYnt0cmFuc2l0aW9uLWRlbGF5OjBzLDBzfS51MTZTcy5JMDdQU2R7dHJhbnNpdGlvbi1kZWxheTo1MG1zfS5Dc1lIUWIuQ3NZSFFiLkNzWUhRYi5Dc1lIUWIuQ3NZSFFiIC5raloxSGN7dHJhbnNpdGlvbi1kZWxheTowcywwczt9Lm9ydTZFZSAua0w2UWdke21hcmdpbjowIDRweCAwIDB9XG4uZmw1dHZmIC5rTDZRZ2R7bWFyZ2luOjAgMCAwIDRweH0uRDQzU1dkIC5rTDZRZ2R7bWFyZ2luOjAgMCA0cHh9LlJFQ2RtZCAua0w2UWdke21hcmdpbjo0cHggMCAwfS5BcEh5VGJ7Zm9udC1mYW1pbHk6dmFyKC0tWWZpS2YpO2ZvbnQtc2l6ZTp2YXIoLS1nT3M2QmYpO2xpbmUtaGVpZ2h0OnZhcigtLXB1blpsYyk7bGV0dGVyLXNwYWNpbmc6MH0uT05OWWVle2JvcmRlcjowO2JveC1zaGFkb3c6MHB4IDRweCAxMnB4IHJnYmEoNjAsNjQsNjcsMC4yNCl9LkZKQ0pmZHtib3JkZXI6bm9uZTtib3gtc2hhZG93OjBweCAxcHggM3B4IHJnYmEoNjAsNjQsNjcsMC4yNCl9LngzU0FZZHtwb3NpdGlvbjpyZWxhdGl2ZX0ueTF5YWRme3Bvc2l0aW9uOnJlbGF0aXZlO2Rpc3BsYXk6aW5saW5lLWJsb2NrfS5LTWtBY3t3aWR0aDoxOHB4O2hlaWdodDoxOHB4O21hcmdpbi10b3A6LTNweDt2ZXJ0aWNhbC1hbGlnbjptaWRkbGV9Lm9ydTZFZSAuYlNpMWZle2xlZnQ6LTExcHh9LmZsNXR2ZiAuYlNpMWZle3JpZ2h0Oi0xMXB4fS5mbDV0dmYgLmJTaTFmZSwub3J1NkVlIC5iU2kxZmV7cG9zaXRpb246YWJzb2x1dGU7d2lkdGg6N3B4O2hlaWdodDoxNHB4O3otaW5kZXg6Mn0ubHdVNkRke2Rpc3BsYXk6LW1vei1ib3g7ZGlzcGxheTpmbGV4O2hlaWdodDoxMDAlOy1tb3otYm94LWFsaWduOmNlbnRlcjthbGlnbi1pdGVtczpjZW50ZXI7dG9wOjB9LmdiSG9PZXtwb3NpdGlvbjpyZWxhdGl2ZX0uRDQzU1dkIC5iU2kxZmV7dG9wOi0xMXB4fS5SRUNkbWQgLmJTaTFmZXtib3R0b206LTExcHh9LkQ0M1NXZCAuYlNpMWZlLC5SRUNkbWQgLmJTaTFmZXtwb3NpdGlvbjphYnNvbHV0ZTt3aWR0aDoxNHB4O2hlaWdodDo3cHg7ei1pbmRleDoyfS5sR1BHMmIubEdQRzJie2Rpc3BsYXk6LW1vei1ib3g7ZGlzcGxheTpmbGV4O3dpZHRoOjEwMCU7LW1vei1ib3gtb3JpZW50OnZlcnRpY2FsOy1tb3otYm94LWRpcmVjdGlvbjpub3JtYWw7ZmxleC1kaXJlY3Rpb246Y29sdW1uOy1tb3otYm94LWFsaWduOmNlbnRlcjthbGlnbi1pdGVtczpjZW50ZXJ9LktpTEhMe3Bvc2l0aW9uOnJlbGF0aXZlO3dpZHRoOi1tb3otbWF4LWNvbnRlbnQ7d2lkdGg6bWF4LWNvbnRlbnR9LmtMNlFnZHt0ZXh0LWFsaWduOmNlbnRlcjtiYWNrZ3JvdW5kOiMxZjFmMWY7Ym9yZGVyLXJhZGl1czo0cHg7bWluLXdpZHRoOm1pbig4MHZ3LDQwcHgpO21heC13aWR0aDptaW4oODB2dywyMDBweCk7Y29sb3I6dmFyKC0tWlhpYUdmKTt9LkJNV0k3ZHtwYWRkaW5nOjRweCA4cHh9QG1lZGlhIChmb3JjZWQtY29sb3JzOmFjdGl2ZSksKHByZWZlcnMtY29udHJhc3Q6bW9yZSl7LmtMNlFnZHtib3JkZXI6MXB4IHNvbGlkIHZhcigtLVpYaWFHZil9fS5iU2kxZmV7ZmlsbDp2YXIoLS1Oc20wY2UpfS5jbTVhM2J7dGV4dC1hbGlnbjpsZWZ0O2JhY2tncm91bmQ6dmFyKC0tTnNtMGNlKTtwYWRkaW5nOjhweCA0MHB4IDhweCAxNnB4O2JvcmRlci1yYWRpdXM6OHB4O21hcmdpbjo2cHg7bWF4LXdpZHRoOmNhbGMoNDV2dyAtIDU2cHgpO2NvbG9yOnZhcigtLUVwRk5XKX1AbWVkaWEgKGZvcmNlZC1jb2xvcnM6YWN0aXZlKSwocHJlZmVycy1jb250cmFzdDptb3JlKXsuYlNpMWZle2ZpbGw6IzFmMWYxZn0uRkpDSmZkLmNtNWEzYntiYWNrZ3JvdW5kOiMxZjFmMWY7Ym9yZGVyOjFweCBzb2xpZCAjZmZmO2NvbG9yOiNmZmY7Ym94LXNoYWRvdzpub25lfX0uaXdFUUZje2N1cnNvcjpwb2ludGVyO3Bvc2l0aW9uOmFic29sdXRlO3BhZGRpbmc6MDtib3JkZXI6bm9uZTtjb2xvcjppbmhlcml0O2JhY2tncm91bmQ6bm9uZTtwYWRkaW5nOjE1cHg7dG9wOi02cHg7cmlnaHQ6LTZweDtsaW5lLWhlaWdodDppbmhlcml0fS5FcjlIc2V7dGV4dC1hbGlnbjpsZWZ0O2JhY2tncm91bmQ6dmFyKC0tWEtNRHhjKTtib3JkZXItcmFkaXVzOjEycHg7cGFkZGluZzoxMnB4IDE2cHggMTJweCAwO21heC13aWR0aDpjYWxjKG1pbigzNXZ3LDQwMHB4KSAtIDE2cHgpO2NvbG9yOnZhcigtLWJiUXhBYik7bWFyZ2luOjEwcHggMCAwfS5ENDNTV2QgLkVyOUhzZXttYXJnaW46MCAwIDEwcHh9LkQ0M1NXZCAuRXI5SHNlIC5iU2kxZmV7dHJhbnNmb3JtOnNjYWxlWSgtMSl9LkVyOUhzZSAua2paMUhje3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xMDBweCl9LnFWU3drYy5xVlN3a2MucVZTd2tjIC5FcjlIc2UgLmtqWjFIY3t0cmFuc2l0aW9uLWRlbGF5OjU1MG1zLDUwMG1zO30uRXI5SHNlLkQ0M1NXZCAua2paMUhje3RyYW5zZm9ybTp0cmFuc2xhdGVZKDEwMHB4KX0uRTRFTWV7cGFkZGluZzowIDAgNHB4IDE2cHh9LmZhWUxrY3tkaXNwbGF5OmlubGluZS1ibG9jazttYXJnaW46MTJweCAwIDAgMTJweH0uZmFZTGtjLm9PRXF0ZXttYXJnaW4tbGVmdDoxNnB4fUBtZWRpYSAoZm9yY2VkLWNvbG9yczphY3RpdmUpLChwcmVmZXJzLWNvbnRyYXN0Om1vcmUpey5FcjlIc2UuRXI5SHNle2JhY2tncm91bmQ6IzFmMWYxZjtib3JkZXI6MXB4IHNvbGlkICNmZmY7Y29sb3I6I2ZmZn19LnIzeEEyZHtib3R0b206MDtoZWlnaHQ6YXV0bztsZWZ0OjA7cG9zaXRpb246Zml4ZWQhaW1wb3J0YW50O3JpZ2h0OjA7dG9wOjA7d2lkdGg6YXV0bzt6LWluZGV4OjEyN30uZkNqVmxiOm5vdCguT0xLVDhkKXtkaXNwbGF5Om5vbmUhaW1wb3J0YW50fS5RaloxU2QgLmNhMU1FZXtkaXNwbGF5OmJsb2NrO21pbi1oZWlnaHQ6MTAwdmh9bGkuY2ExTUVle2xpc3Qtc3R5bGU6bm9uZX1zZW50aW5lbHt9Iik7CnRoaXMuX2hkPXRoaXMuX2hkfHx7fTsoZnVuY3Rpb24oXyl7dmFyIHdpbmRvdz10aGlzOwp0cnl7Cl8uSExiPV8ua2MoIkhHdjBtZiIsW10pOwp9Y2F0Y2goZSl7Xy5fRHVtcEV4Y2VwdGlvbihlKX0KdHJ5ewpfLnUoIkhHdjBtZiIpOwp2YXIgSUxiPV8uT2lbNzBdJjg/NTA6Xy53TGI/NDY6NDQ7dmFyIEtMYj1mdW5jdGlvbihhKXsoMCxfLm1mKSgoKT0+e3ZhciBiPUpMYiYmYS5rYSE9PW51bGwmJmEua2EuY2xhc3NMaXN0LmNvbnRhaW5zKCJ3aGVSeWUiKTthLndhIT09YiYmKGEud2E9YixhLndhPyhhLklhfHwoYS5JYT0hMCxfLmNoKCkuR2MoImhwX3NiX3N0IiwidHJ1ZSIpLmxvZygpKSxhLkJhJiZhLkJhLmFwcGVuZChhLkthKSxhLm5vdGlmeSgiUzhweEtlIiwhMCkpOihhLkFhJiZhLkFhLmFwcGVuZChhLkthKSxhLm5vdGlmeSgiUzhweEtlIiwhMSkpKX0pfSxMTGI9ZnVuY3Rpb24oYSxiKXthPV8uRW8oYS5BaSgpLmRvY3VtZW50RWxlbWVudCkuZmluZChgW3JvbGU9IiR7Yn0iXWApO2EuZmlyc3QoKSYmKGE9YS5maXJzdCgpLmVsKCkucXVlcnlTZWxlY3RvckFsbCgnYnV0dG9uLCBbaHJlZl0sIGlucHV0LCBzZWxlY3QsIHRleHRhcmVhLCBbdGFiaW5kZXhdOm5vdChbdGFiaW5kZXg9Ii0xIl0pJylbMF18fG51bGwpJiZhLmZvY3VzKCl9LE1MYj1mdW5jdGlvbihhKXtpZighKCFhLm9hfHwKYS5yb290RWxlbWVudC5jbGFzc0xpc3QuY29udGFpbnMoIm1pbmlkaXYiKXx8SkxiJiZhLmthIT09bnVsbCYmYS5rYS5jbGFzc0xpc3QuY29udGFpbnMoIndoZVJ5ZSIpfHxhLm9hLmNsYXNzTGlzdC5jb250YWlucygiY2VFM1IiKSkpe2Eub2EuY2xhc3NMaXN0LmFkZCgiY2VFM1IiKTtsZXQgYj13aW5kb3cuc2Nyb2xsWTthLk5hPWI7ZG9jdW1lbnQuYm9keS5zdHlsZS50b3A9YC0ke2J9cHhgO2RvY3VtZW50LmJvZHkuY2xhc3NMaXN0LmFkZCgiVUs2YlNkIik7YS5ub3RpZnkoIk95cGN4YyIsITApO18uQm4od2luZG93LCJ2d19hdHhfc2VhcmNoX2JveF9mb2N1cyIsbnVsbCl9fSxOTGI9Y2xhc3MgZXh0ZW5kcyBfLmhze2NvbnN0cnVjdG9yKCl7c3VwZXIoKTt0aGlzLnJvb3RFbGVtZW50PXRoaXMuZ2V0Um9vdCgpLmVsKCk7dGhpcy5PYT1fLk9tKCJSTk5YZ2IiLHRoaXMucm9vdEVsZW1lbnQpO3RoaXMuS2E9Xy5PbSgibjF4SmNmIix0aGlzLnJvb3RFbGVtZW50KTt0aGlzLm9hPXRoaXMuVmEoImNnc0tsYiIpLmhiKCk7CnRoaXMuRWE9dGhpcy5CYT10aGlzLkFhPXRoaXMua2E9bnVsbDt0aGlzLklhPXRoaXMud2E9ITE7dGhpcy5OYT0wO3RoaXMuSmI9SUxiKzI7SkxiJiYodGhpcy5rYT10aGlzLkphKCJQYzhoSmYiKS5oYigpLHRoaXMuQWE9Xy5PbSgiS1p2VG5lIix0aGlzLnJvb3RFbGVtZW50KSx0aGlzLkJhPV8uT20oIld6dlI0ZCIsdGhpcy5yb290RWxlbWVudCksdGhpcy5FYT1fLk9tKCJGUGRvTGMiLHRoaXMucm9vdEVsZW1lbnQpLF8uWUtiKG5ldyBfLlpLYix0aGlzLk9hLF8uR24odGhpcy5QYSw1MCx0aGlzKSkpO3ZhciBhPV8uaGUod2luZG93LCJzY3JvbGwiLCgpPT57dGhpcy5HYSgpfSk7dGhpcy5hZGRPbkRpc3Bvc2VDYWxsYmFjaygoKT0+e18uQW4oYSl9KTt0aGlzLk00KCl9R2EoKXt0aGlzLmthJiZLTGIodGhpcyl9cmIoKXtMTGIodGhpcywibWFpbiIpfUFiKCl7TExiKHRoaXMsImNvbXBsZW1lbnRhcnkiKX1uYigpe0xMYih0aGlzLCJjb250ZW50aW5mbyIpfUZiKGEpe2EuZGF0YSYmTUxiKHRoaXMpfVphKCl7TUxiKHRoaXMpfVNhKCl7dGhpcy5vYSYmCnRoaXMub2EuY2xhc3NMaXN0LmNvbnRhaW5zKCJjZUUzUiIpJiYodGhpcy5vYS5jbGFzc0xpc3QucmVtb3ZlKCJjZUUzUiIpLHRoaXMuTEgoKSx0aGlzLm5vdGlmeSgiT3lwY3hjIiwhMSkpfUxIKCl7ZG9jdW1lbnQuYm9keS5zdHlsZS5yZW1vdmVQcm9wZXJ0eSgidG9wIik7ZG9jdW1lbnQuYm9keS5jbGFzc0xpc3QucmVtb3ZlKCJVSzZiU2QiKTt3aW5kb3cuc2Nyb2xsVG8oMCx0aGlzLk5hKX1JYihhKXt0aGlzLkVhJiZ0aGlzLkVhLmNsYXNzTGlzdC50b2dnbGUoIlFwcWd6ZSIsYS5kYXRhKX1SYShhKXthPWEuZGF0YTt0aGlzLnJvb3RFbGVtZW50LnNldEF0dHJpYnV0ZSgiZGF0YS1oYWxlIixhPyIxIjoiMCIpO3RoaXMucm9vdEVsZW1lbnQuY2xhc3NMaXN0LnRvZ2dsZSgiZkxDM3VmIixhKX1QYShhKXthLmZvckVhY2goYj0+e3RoaXMua2EmJih0aGlzLmthLnN0eWxlLnBhZGRpbmdCb3R0b209YCR7TWF0aC5tYXgoMCxiLnRhcmdldC5vZmZzZXRIZWlnaHQtdGhpcy5KYil9cHhgKX0pfU00KCl7fX07Ck5MYi5wcm90b3R5cGUuJHdhJG5wQVl0Zj1mdW5jdGlvbigpe3JldHVybiB0aGlzLk00fTtOTGIucHJvdG90eXBlLiR3YSRLbG96aWY9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5SYX07TkxiLnByb3RvdHlwZS4kd2EkeWVvaVZjPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuSWJ9O05MYi5wcm90b3R5cGUuJHdhJHk0UGhjPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuU2F9O05MYi5wcm90b3R5cGUuJHdhJERmTFlDYz1mdW5jdGlvbigpe3JldHVybiB0aGlzLlphfTtOTGIucHJvdG90eXBlLiR3YSRnWUs0ZGQ9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5GYn07TkxiLnByb3RvdHlwZS4kd2EkY0xaaE5lPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMubmJ9O05MYi5wcm90b3R5cGUuJHdhJHVnWllRZD1mdW5jdGlvbigpe3JldHVybiB0aGlzLkFifTtOTGIucHJvdG90eXBlLiR3YSR6ZG5hdmQ9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5yYn07TkxiLnByb3RvdHlwZS4kd2Ekdm83STJlPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuR2F9Owp2YXIgSkxiPV8uR0xiO18uanMoXy5ITGIsTkxiKTsKXy52KCk7Cn1jYXRjaChlKXtfLl9EdW1wRXhjZXB0aW9uKGUpfQp0cnl7Cl8udSgiVUVTaHdjIik7CnZhciBrbWU9ZnVuY3Rpb24oYSl7dmFyIGIsYyxkPV8uTGUobmV3IF8uSGUoKGM9KGI9YS5MaWEpPT1udWxsP3ZvaWQgMDpiLmJhc2VVcmwpIT1udWxsP2M6Imh0dHBzOi8vbGVucy5nb29nbGUuY29tIiksIi92My91cGxvYWQiKTthLmltYWdlJiYoYj1hLmltYWdlLGIuRHJhJiYoXy5UbihkLCJ0Ym5pZCIsYi5EcmEudm5hKSxiLkRyYS5CUmImJl8uVG4oZCwicmZyZG9jaWQiLGIuRHJhLkJSYikpLGIuaW1hZ2VVcmwmJl8uVG4oZCwidXJsIixiLmltYWdlVXJsKSk7Yj1hLmNvbnRleHQ7Xy5UbihkLCJlcCIsaG1lW2IuZW50cnlQb2ludF0pO3ZhciBlO18uVG4oZCwic3QiLCgoZT1iLnN0YXJ0VGltZSkhPW51bGw/ZTpEYXRlLm5vdygpKS50b1N0cmluZygpKTtiLkpJJiZfLlRuKGQsImxuc19zZWwiLGIuSkkudG9TdHJpbmcoKSk7Yi5hdXRoVXNlciYmXy5UbihkLCJhdXRodXNlciIsYi5hdXRoVXNlci50b1N0cmluZygpKTtiLnZlZCYmXy5UbihkLCJsbnNfdmVkIixiLnZlZCk7Yi5UbSE9PQp2b2lkIDAmJl8uVG4oZCwiaWN0eCIsYi5UbS50b1N0cmluZygpKTtiLk9sJiZfLlRuKGQsInMiLGIuT2wudG9TdHJpbmcoKSk7dmFyIGY7KChmPWIuZXhwZXJpbWVudElkcyk9PW51bGw/MDpmLmxlbmd0aCkmJl8uVG4oZCwiZSIsYi5leHBlcmltZW50SWRzLmpvaW4oIiwiKSk7Yi5QR2ImJl8uVG4oZCwiaGwiLGIuUEdiKTt2YXIgZzsoKGc9Yi5aeWIpPT1udWxsPzA6Zy5sZW5ndGgpJiZfLlRuKGQsImR1dWwiLGIuWnliKTthLmswYSYmKGU9YS5rMGEsZS5rYyYmXy5UbihkLCJ2cHMiLF8udWtlKGltZShlLmtjKSkpLGUuekphJiZfLlRuKGQsInEiLGUuekphKSxlLk5zYSYmXy5UbihkLCJsbnNfdmZzIixqbWVbZS5Oc2FdKSxlLmxhbmd1YWdlQ29kZSYmXy5UbihkLCJobCIsZS5sYW5ndWFnZUNvZGUpKTt2YXIgaDsoKGg9YS5MaWEpPT1udWxsP3ZvaWQgMDpoLnNlYik9PT0yJiZfLlRuKGQsInJqciIsIjEiKTt2YXIgazsoKGs9YS5MaWEpPT1udWxsPzA6ay5zNGIpJiZfLlRuKGQsInBwcyIsCmEuTGlhLnM0Yik7Xy5UbihkLCJ2cHciLHdpbmRvdy5pbm5lcldpZHRoLnRvU3RyaW5nKCkpO18uVG4oZCwidnBoIix3aW5kb3cuaW5uZXJIZWlnaHQudG9TdHJpbmcoKSk7cmV0dXJuIGQudG9TdHJpbmcoKX0sbm1lPWZ1bmN0aW9uKHtpbWFnZTphLGNvbnRleHQ6YixrMGE6YyxMaWE6ZH0pe2I9bmV3IF8uSGUoa21lKHtpbWFnZTphLGNvbnRleHQ6YixrMGE6YyxMaWE6ZH0pKTt2YXIgZT1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJmb3JtIik7ZS5zdHlsZS5kaXNwbGF5PSJub25lIjt2YXIgZjtlLmVuY3R5cGU9KChmPWEuemRhKT09bnVsbD8wOmYuZmlsZSk/Im11bHRpcGFydC9mb3JtLWRhdGEiOiJhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQiO2Y9YS5pbWFnZVVybD8iR0VUIjoiUE9TVCI7ZS5tZXRob2Q9ZjsoZD09bnVsbD92b2lkIDA6ZC5zZWIpPT09MSYmKGUudGFyZ2V0PSJfYmxhbmsiKTt2YXIgZzsoKGc9YS56ZGEpPT1udWxsPzA6Zy5maWxlKSYmZS5hcHBlbmRDaGlsZChsbWUoYS56ZGEuZmlsZSkpOwp2YXIgaCxrLG07KGQ9KG09KGg9YS5EcmEpPT1udWxsP3ZvaWQgMDpoLlU5KSE9bnVsbD9tOihrPWEuemRhKT09bnVsbD92b2lkIDA6ay5VOSkmJmUuYXBwZW5kQ2hpbGQobW1lKCJwcm9jZXNzZWRfaW1hZ2VfZGltZW5zaW9ucyIsYCR7ZC53aWR0aH0sJHtkLmhlaWdodH1gKSk7Zj09PSJHRVQiJiYoYi53dCgpLmZvckVhY2goKG4scCk9PntlLmFwcGVuZENoaWxkKG1tZShwLG4pKX0pLGIud3QoKS5jbGVhcigpKTtfLnpqYShlLF8uRGMoYi50b1N0cmluZygpKSk7cmV0dXJuIGV9LGxtZT1mdW5jdGlvbihhKXt2YXIgYj1uZXcgQ2xpcGJvYXJkRXZlbnQoIiIpO2I9Yi5jbGlwYm9hcmREYXRhP2IuY2xpcGJvYXJkRGF0YTpuZXcgRGF0YVRyYW5zZmVyO2IuaXRlbXMuYWRkKGEpO2E9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiaW5wdXQiKTthLm5hbWU9ImVuY29kZWRfaW1hZ2UiO2EudHlwZT0iZmlsZSI7YS5hY2NlcHQ9Xy5vbWUuam9pbigiLCIpO2EuZmlsZXM9Yi5maWxlcztyZXR1cm4gYX0sCm1tZT1mdW5jdGlvbihhLGIpe3ZhciBjPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImlucHV0Iik7Yy5uYW1lPWE7Yy52YWx1ZT1iO2MudHlwZT0iaGlkZGVuIjtyZXR1cm4gY30sdG1lPWFzeW5jIGZ1bmN0aW9uKGEpe3ZhciBiPSgwLF8uTWYpKCksYz1iKCk7Yj1iKDEpO3RyeXtsZXQgZDsoZD1wbWUpPT1udWxsfHxkLnJlbW92ZSgpO2xldCBlO2lmKChlPWEuaW1hZ2UuRHJhKT09bnVsbD8wOmUub2JiKXFtZVthLmltYWdlLkRyYS52bmFdPWEuaW1hZ2UuRHJhLm9iYixfLnVnKCJsIixybWUpLnNldCgibG5zX3Ribl9rIixKU09OLnN0cmluZ2lmeShxbWUpKTtsZXQgZj1iKGF3YWl0IGMoc21lKGEuaW1hZ2UpKSk7cG1lPWRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQobm1lKE9iamVjdC5hc3NpZ24oe30sYSx7aW1hZ2U6Zn0pKSk7bGV0IGc7aWYoKChnPWEuTGlhKT09bnVsbD92b2lkIDA6Zy5zZWIpPT09Mil0cnl7bGV0IGg9Yihhd2FpdCBjKGZldGNoKHBtZS5hY3Rpb24se21ldGhvZDoiUE9TVCIsCmNyZWRlbnRpYWxzOiJpbmNsdWRlIixib2R5Om5ldyBGb3JtRGF0YShwbWUpfSkpKSxrPWIoYXdhaXQgYyhoLnRleHQoKSkpO3JldHVybiBKU09OLnBhcnNlKGsuc3Vic3RyaW5nKDUpKS5yZWRpcmVjdF91cmx9Y2F0Y2goaCl7YigpLF8uZmEoaCl9cG1lLnN1Ym1pdCgpfWZpbmFsbHl7YygpfX0sc21lPWFzeW5jIGZ1bmN0aW9uKGEpe3ZhciBiPSgwLF8uTWYpKCksYz1iKCk7Yj1iKDEpO3RyeXtpZighYS56ZGEpcmV0dXJuIGE7bGV0IGQ9Yihhd2FpdCBjKF8uRmFlKGEuemRhLmZpbGUpKSk7cmV0dXJuIGQua2luZD09PSJmYWlsIj9hOk9iamVjdC5hc3NpZ24oe30sYSx7emRhOntmaWxlOmQuZmlsZSxVOTpkLlU5fX0pfWZpbmFsbHl7YygpfX0scm1lPXtuYW1lOiJsd3MifSx1bWU9WzAsXy5DLC0xXSxpbWU9Xy5ZYihbMCwxMSxfLkcsWzAsXy5FLC0xXSxbMCxfLmVoZSxfLklsLFswXSwxLF8uSWwsWzAsXy5DLC0zXSxfLklsLFswLF8uZGhlLF8uSWwsdW1lLF8uSWwsWzAsdW1lLC0xXV1dXSk7dmFyIGhtZT17Wzc0XToidXAiLFs1OF06InZpYXBpIixbNDddOiJiaWEiLFs0OF06Im1lbnUiLFs1M106ImZpbmQiLFs3MF06Imh3YWMiLFs1MF06ImN0eGkiLFs1MV06Im9iaWMiLFs2OV06Im9iY3MiLFs2OF06Im9icGEiLFs0OV06ImN0eHAiLFs3NV06ImN0eHQiLFs1Ml06InRiaWMiLFs3Nl06ImN0eHYiLFs4Ml06InJiIixbODFdOiJvYmljIixbOTBdOiJjY3B0IixbNzldOiJjY3QiLFsyMl06ImNudHB1YmIiLFsyM106ImNudHB1YnUiLFs0Nl06ImNvYnNpaSIsWzYzXToiY3Jvc2wiLFs2NF06ImNyb3NycyIsWzQ0XToiY3ZmcyIsWzcyXToiZmNtIixbODVdOiJmbnRwdWJiIixbODZdOiJmbnRwdWJ1IixbODRdOiJmdWJiIixbMTddOiJnaXNidWJiIixbMTZdOiJnaXNidWJ1IixbNTRdOiJnaXNpdiIsWzNdOiJnaXNpdmxpIixbNTZdOiJnaXNpdm1zIixbNDJdOiJnaXNpdnRjIixbNjZdOiJnc3BpdiIsWzE1XToiZ3NidWJiIixbMTRdOiJnc2J1YnUiLFs4OV06ImdzbHBocCIsWzI3XToiaW9zYmFpbHAiLApbMThdOiJpb3NiY20iLFsxOV06Imlvc2Joc3ciLFsyNl06Imlvc2Jpc20iLFs0M106Imlvc2JzaSIsWzIwXToiaW9zYmsiLFs1OV06Imlvc2JsY2UiLFsyMV06Imlvc2JudHAiLFsyNV06Imlvc2JvcGMiLFszMl06Imlvc2JwYiIsWzI0XToiaW9zYnMiLFszOV06Imlvc2J0byIsWzQwXToiaW9zYndpc2IiLFszM106Imlvc2J3c2IiLFs0MV06Imlvc2J3bnByb21vIixbMjhdOiJpc2lhcyIsWzVdOiJ1a24iLFszNF06InN1YmIiLFs3M106Im9jbSIsWzg3XToib250cHViYiIsWzg4XToib250cHVidSIsWzgzXToic2d1IixbNjBdOiJnc3ZtciIsWzc4XToiYW1waCIsWzY3XToicXVpbWJ5IixbNDVdOiJ3aWwifTt2YXIgam1lPXtbMF06IiIsWzFdOiJjIixbMl06ImUiLFszXToiZCIsWzRdOiJmcyJ9O18ub21lPSJpbWFnZS9ibXAgaW1hZ2UvaGVpYyBpbWFnZS9oZWlmIGltYWdlL2pwZWcgaW1hZ2UvcG5nIGltYWdlL3RpZmYgaW1hZ2Uvd2VicCBpbWFnZS94LWljb24iLnNwbGl0KCIgIik7dmFyIHBtZSxxbWU9e307Xy52bWU9Y2xhc3MgZXh0ZW5kcyBfLnNve3N0YXRpYyBRYSgpe3JldHVybntzZXJ2aWNlOntTYjpfLnB2fX19Y29uc3RydWN0b3IoYSl7c3VwZXIoKTt0aGlzLnJlc3BvbnNlPWF9YXN5bmMga2EoYSl7dmFyIGI9bmV3IFVSTFNlYXJjaFBhcmFtcyhfLm92KHRoaXMucmVzcG9uc2Uuc2VydmljZS5TYikpO2IuaGFzKCJkdXVsIikmJiFhLmNvbnRleHQuWnliJiYoYS5jb250ZXh0Llp5Yj1iLmdldCgiZHV1bCIpKTtiLmhhcygiaGwiKSYmIWEuY29udGV4dC5QR2ImJihhLmNvbnRleHQuUEdiPWIuZ2V0KCJobCIpKTtyZXR1cm4gdG1lKGEpfX07Xy5hZyhfLmdtZSxfLnZtZSk7Cl8udigpOwp9Y2F0Y2goZSl7Xy5fRHVtcEV4Y2VwdGlvbihlKX0KdHJ5ewpfLndtZT0hIShfLk9pWzM1XSYyNTYpO18ueG1lPSEhKF8uT2lbMzVdJjEwMjQpO18ueW1lPSEhKF8uT2lbMzVdJjIwNDgpOwp9Y2F0Y2goZSl7Xy5fRHVtcEV4Y2VwdGlvbihlKX0KdHJ5ewpfLml6PWZ1bmN0aW9uKCl7aWYod2luZG93Lmdvb2dsZSYmd2luZG93Lmdvb2dsZS5rSEwpcmV0dXJuIGdvb2dsZS5rSEw7dmFyIGE9Xy5CZCgiR1dzZEtlIik7cmV0dXJuIGEuTGIoKT9fLnBtKGEsIiIpOiIifTtfLmp6PWZ1bmN0aW9uKCl7dmFyIGE9Xy5CZCgiR1dzZEtlIik7cmV0dXJuIGEuTGIoKT9fLnBtKGEsIiIpLnNwbGl0KCItIiwyKVsxXXx8IiI6IiJ9Owp9Y2F0Y2goZSl7Xy5fRHVtcEV4Y2VwdGlvbihlKX0KdHJ5ewpfLnUoIllIblVCYyIpOwp2YXIgQW1lO0FtZT1mdW5jdGlvbihhLGIpe2lmKCFfLm5tKGEpKXJldHVybltdO2E9Xy5lSGEoYSkubWFwKGM9Pnt0cnl7cmV0dXJuIF8uc20oYyl9Y2F0Y2goZCl7cmV0dXJuIG51bGx9fSkuZmlsdGVyKGM9PmMhPT1udWxsKTtpZihhLmxlbmd0aD09PTApe2xldCBjO3JldHVybigoYz0obmV3IFVSTFNlYXJjaFBhcmFtcyhiKSkuZ2V0KCJleHAiKSkhPW51bGw/YzoiIikuc3BsaXQoIiwiKS5tYXAoZD0+TnVtYmVyKGQpKS5maWx0ZXIoZD0+IWlzTmFOKGQpKX1yZXR1cm4gYX07Cl8uQm1lPWNsYXNzIGV4dGVuZHMgXy5FaXtzdGF0aWMgUWEoKXtyZXR1cm57c2VydmljZTp7Z3hjOl8udm1lLFNiOl8ucHZ9fX1jb25zdHJ1Y3RvcihhKXtzdXBlcigpO3RoaXMub2E9YS5zZXJ2aWNlLmd4Yzt0aGlzLlNiPWEuc2VydmljZS5TYjt0aGlzLndhPUFtZSh0aGlzLmdldERhdGEoImV4cGlkcyIpLF8ub3YodGhpcy5TYikpO3RoaXMuYXVhPV8ucG0odGhpcy5nZXREYXRhKCJibHUiKSwiaHR0cHM6Ly9sZW5zLmdvb2dsZS5jb20iKX1hc3luYyBrYShhLGIpe3ZhciBjPSgwLF8uTWYpKCksZD1jKCk7Yz1jKDEpO3RyeXtjKGF3YWl0IGQodGhpcy5vYS5rYSh7aW1hZ2U6YSxjb250ZXh0OnthdXRoVXNlcjpfLmZwKCksZW50cnlQb2ludDpiLmVudHJ5UG9pbnQsZXhwZXJpbWVudElkczp0aGlzLndhLHN0YXJ0VGltZTpiLnN0YXJ0VGltZX0sazBhOntsYW5ndWFnZUNvZGU6Xy5peigpfSxMaWE6e2Jhc2VVcmw6dGhpcy5hdWEsczRiOl8ud21lPyhuZXcgVVJMU2VhcmNoUGFyYW1zKF8ub3YodGhpcy5TYikpKS50b1N0cmluZygpOgp2b2lkIDB9fSkpKX1maW5hbGx5e2QoKX19fTtfLlZyKF8uem1lLF8uQm1lKTsKXy52KCk7Cn1jYXRjaChlKXtfLl9EdW1wRXhjZXB0aW9uKGUpfQp0cnl7Cl8uWjNlPV8ua2MoIlZ0TWZqIixbXy5uZmVdKTsKfWNhdGNoKGUpe18uX0R1bXBFeGNlcHRpb24oZSl9CnRyeXsKXy51KCJWdE1maiIpOwp2YXIgJDNlPWZ1bmN0aW9uKGEpe3JldHVybiBfLkJmZShhKSYmIV8uQ2ZlKGEpfSxhNGU9Y2xhc3MgZXh0ZW5kcyBfLmx7Y29uc3RydWN0b3IoYSl7c3VwZXIoYSl9fTt2YXIgYjRlPXtGdGE6bnVsbCxHdGE6bnVsbCxnZ2E6bnVsbH0sYzRlPXtQUWE6Xy5pTGIsWHNjOl8udmNlLGFvYjpfLnNMYixyUjpfLlplZX0sZDRlPWZ1bmN0aW9uKGEsYil7cmV0dXJuIGE9PT1udWxsP2I6Yj09PW51bGw/YTpuZXcgU2V0KFsuLi5hXS5maWx0ZXIoYz0+Yi5oYXMoYykpKX0sZTRlPWZ1bmN0aW9uKGEpe2Eud3IoKSYmYS5BYS5jbGFzc0xpc3QucmVtb3ZlKCJLV1VZQWUiKX0sazRlPWZ1bmN0aW9uKGEpe3ZhciBiPWEubGoua1ooKSxjPV8uRGZlKGEubGopLGQ9ZjRlKGEpLGU9ZC5GdGEsZj1kLmdnYSxnPWQuR3RhO2Q9aD0+e2U9ZDRlKGUsaC5GdGEpO2c9ZDRlKGcsaC5HdGEpO2Y9ZDRlKGYsaC5nZ2EpfTtiIT09MD9kKGc0ZShhLGIpKTphLmxqLm9hJiZkKGc0ZShhLDkpKTtjIT09MCYmZChoNGUoYSxjKSk7Zm9yKGxldCBbaCxrXW9mIGEucmIpaTRlKGssIShlPT09bnVsbHx8ZS5oYXMoaCkpKTtmb3IobGV0IFtoLGtdb2YgYS5PYSliPWgsYz1rLGIhPT05JiZpNGUoYywKIShmPT09bnVsbHx8Zi5oYXMoYikpKTtmb3IobGV0IFtoLGtdb2YgYS5CYSliPWgsYz1rLGIhPT0wJiZpNGUoYywhKGc9PT1udWxsfHxnLmhhcyhiKSkpO2o0ZShhKX0sbDRlPWZ1bmN0aW9uKGEpe3ZhciBiPShhLm1lbnVJdGVtcy5pbmRleE9mKGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQpKzEpJWEubWVudUl0ZW1zLmxlbmd0aDtmb3IobGV0IGM9MDtjPGEubWVudUl0ZW1zLmxlbmd0aDtjKyspe2xldCBkPWEubWVudUl0ZW1zW2JdO2lmKGQgaW5zdGFuY2VvZiBIVE1MQnV0dG9uRWxlbWVudCYmIWQuZGlzYWJsZWQpe2QuZm9jdXMoKTticmVha31iPShiKzEpJWEubWVudUl0ZW1zLmxlbmd0aH19LG00ZT1mdW5jdGlvbihhKXt2YXIgYj1hLm1lbnVJdGVtcy5pbmRleE9mKGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQpO2I9KGEubWVudUl0ZW1zLmxlbmd0aCtiLTEpJWEubWVudUl0ZW1zLmxlbmd0aDtmb3IobGV0IGM9MDtjPGEubWVudUl0ZW1zLmxlbmd0aDtjKyspe2xldCBkPWEubWVudUl0ZW1zW2JdOwppZihkIGluc3RhbmNlb2YgSFRNTEJ1dHRvbkVsZW1lbnQmJiFkLmRpc2FibGVkKXtkLmZvY3VzKCk7YnJlYWt9Yj0oYS5tZW51SXRlbXMubGVuZ3RoK2ItMSklYS5tZW51SXRlbXMubGVuZ3RofX0sZjRlPWZ1bmN0aW9uKGEpe3ZhciBiPV8uQ2ZlKGEubGopLGM9JDNlKGEubGopLGQ9bnVsbCxlPW51bGwsZj1udWxsLGc9aD0+e2Q9ZDRlKGQsaC5GdGEpO2U9ZDRlKGUsaC5HdGEpO2Y9ZDRlKGYsaC5nZ2EpfTtiJiZnKG40ZShhLDIpKTtjJiZnKG40ZShhLDEpKTtyZXR1cm57RnRhOmQsR3RhOmUsZ2dhOmZ9fSxpNGU9ZnVuY3Rpb24oYSxiKXthLmlzRW1wdHkoKXx8KGEuZWwoKS5kaXNhYmxlZD1iKX0sZzRlPWZ1bmN0aW9uKGEsYil7YT1fLiRsZShhLmhtYSk7Zm9yKHZhciBjIG9mIGEpaWYoXy5PaihjLDEpPT09Yil7dmFyIGQ9dm9pZCAwO2M9KGQ9Xy5xKGMsXy5WbGUsNikpIT1udWxsP2Q6bnVsbDtpZighYylicmVhaztkPV8uQShjLDMpP251bGw6bmV3IFNldChfLlRqKGMsMixfLm9oKCkpKTsKXy5BKGMsNSk/Yj1udWxsOihiPVNldCxjPV8uVGooYyw0LF8ub2goKSksYj1uZXcgYihjKSk7cmV0dXJue0Z0YTpkLEd0YTpiLGdnYTpudWxsfX1yZXR1cm4gYjRlfSxoNGU9ZnVuY3Rpb24oYSxiKXthPV8uWWxlKGEuaG1hKTtmb3IobGV0IGMgb2YgYSlpZihjLnVuKCk9PT1iKXtsZXQgZDtiPShkPV8ucShjLF8uV2xlLDQpKSE9bnVsbD9kOm51bGw7aWYoIWIpYnJlYWs7cmV0dXJue0Z0YTpfLlRsZShiKT9udWxsOm5ldyBTZXQoXy5UaihiLDMsXy5vaCgpKSksR3RhOm51bGwsZ2dhOl8uU2xlKGIpP251bGw6bmV3IFNldChfLlJsZShiKSl9fXJldHVybiBiNGV9LGo0ZT1mdW5jdGlvbihhKXt2YXIgYj1hLmxqLmtaKCk7Zm9yKGxldCBbZCxlXW9mIGEuT2Epe3ZhciBjPWQ7bGV0IGY9ZSxnPWYuZWwoKTtjPT09Yj8oZi5hZGRDbGFzcygiRkpjY0dkIiksZz09bnVsbHx8Zy5zZXRBdHRyaWJ1dGUoImFyaWEtY2hlY2tlZCIsInRydWUiKSk6KGYucmVtb3ZlQ2xhc3MoIkZKY2NHZCIpLGc9PQpudWxsfHxnLnNldEF0dHJpYnV0ZSgiYXJpYS1jaGVja2VkIiwiZmFsc2UiKSl9Yj1fLkRmZShhLmxqKTtmb3IobGV0IGQgb2YgYS5CYS52YWx1ZXMoKSljPWQuZWwoKSxkLnJlbW92ZUNsYXNzKCJGSmNjR2QiKSxjPT1udWxsfHxjLnNldEF0dHJpYnV0ZSgiYXJpYS1jaGVja2VkIiwiZmFsc2UiKTtpZihhLmxqLmNOKCkmJihhPWEuQmEuZ2V0KGIpKSl7YS5hZGRDbGFzcygiRkpjY0dkIik7bGV0IGQ7KGQ9YS5lbCgpKT09bnVsbHx8ZC5zZXRBdHRyaWJ1dGUoImFyaWEtY2hlY2tlZCIsInRydWUiKX19LG40ZT1mdW5jdGlvbihhLGIpe2E9Xy5taChhLmhtYSxfLlYkZCw0LF8ub2goKSk7Zm9yKHZhciBjIG9mIGEpaWYoXy5PaihjLDEpPT09Yil7dmFyIGQ9dm9pZCAwO2I9KGQ9Xy5xKGMsYTRlLDMpKSE9bnVsbD9kOm51bGw7aWYoIWIpYnJlYWs7Xy5BKGIsOCk/ZD1udWxsOihkPVNldCxjPV8uVGooYiw3LF8ub2goKSksZD1uZXcgZChjKSk7Xy5BKGIsNik/Yj1udWxsOihjPVNldCxiPV8uVGooYiwKNSxfLm9oKCkpLGI9bmV3IGMoYikpO3JldHVybntGdGE6bnVsbCxHdGE6ZCxnZ2E6Yn19cmV0dXJuIGI0ZX0sQU09Y2xhc3MgZXh0ZW5kcyBfLmhze2dldCBtZW51SXRlbXMoKXtyZXR1cm4gdGhpcy5nZXRSb290KCkuZmluZCgnW3JvbGU9Im1lbnVpdGVtIl0sIFtyb2xlPSJtZW51aXRlbXJhZGlvIl0nKS50b0FycmF5KCkubWFwKGE9PmEpfXN0YXRpYyBRYSgpe3JldHVybnttb2RlbDp7bGo6Xy5FZmV9LExsOntQbTpfLkZaYX0sanNkYXRhOntobWE6Xy5VbGV9fX1jb25zdHJ1Y3RvcihhKXtzdXBlcigpO3RoaXMueGM9bnVsbDt0aGlzLkVhPXRoaXMuVmEoIkVCWEZvYiIpO3RoaXMuTmE9dGhpcy5WYSgiaDBURDMiKTt0aGlzLkFhPXRoaXMuZ2V0Um9vdCgpLmhiKCk7dGhpcy53YT10aGlzLkphKCJrbzBaeWUiKS5oYigpO3RoaXMubGo9YS5tb2RlbC5sajt0aGlzLmhtYT1hLmpzZGF0YS5obWE7dGhpcy5QbT1hLkxsLlBtO3RoaXMub2E9dGhpcy5KYSgid2NhV2RjIik7dGhpcy5rYT10aGlzLlZhKCJ2aGZIeGQiKTsKYzRlLlhzYyYmKHRoaXMub2EuZWwoKS5tdWx0aXBsZT0hMCxhPXRoaXMua2EuZWwoKSkmJihhLm11bHRpcGxlPSEwKTt0aGlzLnJiPW5ldyBNYXAoW1syLHRoaXMuTmFdLFsxLHRoaXMuRWFdXSk7YT10aGlzLlZhKCJ0MWVRNmQiKTt2YXIgYj10aGlzLlZhKCJ3V0I2VGIiKSxjPXRoaXMuVmEoIkdLY2I4ZCIpO3RoaXMuQmE9bmV3IE1hcChbWzMsYV0sWzEsYl0sWzQsY11dKTt0aGlzLk9hPW5ldyBNYXAoW1s5LHRoaXMuVmEoImhHREpSIildLFs0LHRoaXMuVmEoIkVuM1VwYiIpXSxbMSx0aGlzLlZhKCJLNWxHN2QiKV0sWzIsdGhpcy5WYSgieFV3TlZiIildXSk7KGE9dGhpcy53YS5nZXRBdHRyaWJ1dGUoImFyaWEtbGFiZWwiKSkmJiFjNGUuYW9iP18uVGZlKHRoaXMud2EsYSk6YzRlLmFvYiYmdGhpcy53YS5hZGRFdmVudExpc3RlbmVyKCJtb3VzZWVudGVyIiwoKT0+e3RoaXMuS2EoKX0pO18uSmRlKCgpPT57dGhpcy5yZXNldCgpfSl9cmVzZXQoKXtlNGUodGhpcyk7Xy5kcyh0aGlzLm9hLAoiIik7Xy5kcyh0aGlzLmthLCIiKTtrNGUodGhpcyl9QWIoKXtfLkV2KHRoaXMud2EpO3RoaXMud3IoKT9lNGUodGhpcyk6KHRoaXMuUkooKSxjNGUuYW9iJiZ0aGlzLndhLmRpc3BhdGNoRXZlbnQobmV3IE1vdXNlRXZlbnQoIm1vdXNlb3V0Iix7YnViYmxlczohMCxyZWxhdGVkVGFyZ2V0OmRvY3VtZW50LmJvZHl9KSkpfUdhKCl7dGhpcy5rYS5pc0VtcHR5KCl8fHRoaXMua2EuY2xpY2soKX1JYSgpe3RoaXMub2EuY2xpY2soKX1KYihhKXthPWEudGFyZ2V0RWxlbWVudC5lbCgpO2E9PT10aGlzLm9hLmVsKCk/dGhpcy5rYS5pc0VtcHR5KCl8fF8uZHModGhpcy5rYSwiIik6Xy5kcyh0aGlzLm9hLCIiKTt2YXIgYj1hLmZpbGVzO2ImJmIubGVuZ3RoPjAmJnRoaXMudHJpZ2dlcigiQ3VkWFBkIixBcnJheS5mcm9tKGIpKTthLnZhbHVlPSIifVBhKCl7azRlKHRoaXMpfVJhKCl7dmFyIGE7KGE9dGhpcy5QbSkhPW51bGwmJmEudmlhKCl8fChfLmRzKHRoaXMub2EsIiIpLHRoaXMua2EuaXNFbXB0eSgpfHwKXy5kcyh0aGlzLmthLCIiKSk7azRlKHRoaXMpfUliKGEpe2EuZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCl9S2EoKXt0aGlzLnRyaWdnZXIoInJQVENiIil9T2IoYSl7c3dpdGNoKGEuZXZlbnQua2V5KXtjYXNlICJFc2NhcGUiOmU0ZSh0aGlzKTthLmV2ZW50LnByZXZlbnREZWZhdWx0KCk7YnJlYWs7Y2FzZSAiQXJyb3dEb3duIjpsNGUodGhpcyk7YS5ldmVudC5wcmV2ZW50RGVmYXVsdCgpO2JyZWFrO2Nhc2UgIkFycm93VXAiOm00ZSh0aGlzKTthLmV2ZW50LnByZXZlbnREZWZhdWx0KCk7YnJlYWs7Y2FzZSAiICI6Y2FzZSAiRW50ZXIiOnRoaXMuUkooKSx0aGlzLm1lbnVJdGVtc1swXS5mb2N1cygpLGEuZXZlbnQucHJldmVudERlZmF1bHQoKX19UWIoYSl7c3dpdGNoKGEuZXZlbnQua2V5KXtjYXNlICJFc2NhcGUiOmU0ZSh0aGlzKTt0aGlzLndhLmZvY3VzKCk7YS5ldmVudC5wcmV2ZW50RGVmYXVsdCgpO2JyZWFrO2Nhc2UgIkFycm93RG93biI6bDRlKHRoaXMpO2EuZXZlbnQucHJldmVudERlZmF1bHQoKTsKYnJlYWs7Y2FzZSAiQXJyb3dVcCI6bTRlKHRoaXMpLGEuZXZlbnQucHJldmVudERlZmF1bHQoKX19WmEoKXtlNGUodGhpcyk7azRlKHRoaXMpfVNhKCl7azRlKHRoaXMpfW5iKGEpe2E9YS5ldmVudDthLnJlbGF0ZWRUYXJnZXQmJnRoaXMuQWEuY29udGFpbnMoYS5yZWxhdGVkVGFyZ2V0KXx8ZTRlKHRoaXMpfVBiKGEpe3ZhciBiPWEub2I7aWYoIWIuZWwoKS5oYXNBdHRyaWJ1dGUoImRpc2FibGVkIikpe2IuZWwoKS5oYXNBdHRyaWJ1dGUoImRhdGEtdmVkIikmJl8uRXYoYi5lbCgpKTthPWIuZWwoKT09PXRoaXMuTmEuZWwoKTt2YXIgYz1iLmVsKCk9PT10aGlzLkVhLmVsKCksZD1fLkNkKGIuZ2V0RGF0YSgibW9kZWwiKSwtMSksZT1kIT09LTE7Yj1fLkNkKGIuZ2V0RGF0YSgidG9vbCIpLC0xKTtjP3RoaXMuSWEoKTphP3RoaXMuR2EoKTplPyhfLnpmZSh0aGlzLmxqLGQpLGU0ZSh0aGlzKSk6YiE9PS0xJiYoYT10aGlzLmxqLmtaKCkhPT1iLHRoaXMubGouWlAoYT9iOjApKX19RmIoYSl7dmFyIGI9CmEuZGF0YS5ybGE7YiE9PTAmJih0aGlzLmxqLkthPWEuZGF0YS5rUWMsdGhpcy5QbSYmdGhpcy5QbS52aWEoKSYmKGE9ZjRlKHRoaXMpLGEuZ2dhPT09bnVsbHx8YS5nZ2EuaGFzKGIpfHx0aGlzLlBtLmhaYSgpKSxhPWI9PT05LHRoaXMubGoua2EoKT9hPyh0aGlzLmxqLmRLKCEwKSx0aGlzLmxqLlpQKDApKTp0aGlzLmxqLlpQKGIpOmE/dGhpcy5sai5kSyghMCk6dGhpcy5sai5aUChiKSl9UkooKXt0aGlzLndyKCl8fChjNGUuUFFhJiYhYzRlLnJSfHx0aGlzLnRyaWdnZXIoInFpQ2tKZCIsITEpLHRoaXMuQWEuY2xhc3NMaXN0LmFkZCgiS1dVWUFlIiksazRlKHRoaXMpKX13cigpe3JldHVybiB0aGlzLkFhLmNsYXNzTGlzdC5jb250YWlucygiS1dVWUFlIil9fTtBTS5wcm90b3R5cGUuJHdhJHlNTHZVZD1mdW5jdGlvbigpe3JldHVybiB0aGlzLkZifTtBTS5wcm90b3R5cGUuJHdhJHExM1RHZj1mdW5jdGlvbigpe3JldHVybiB0aGlzLlBifTsKQU0ucHJvdG90eXBlLiR3YSRkT09MbmU9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5uYn07QU0ucHJvdG90eXBlLiR3YSRiZnZrcGQ9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5TYX07QU0ucHJvdG90eXBlLiR3YSRWSDNYQmI9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5aYX07QU0ucHJvdG90eXBlLiR3YSRuQjRlQmI9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5RYn07QU0ucHJvdG90eXBlLiR3YSRZUjhzSWQ9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5PYn07QU0ucHJvdG90eXBlLiR3YSRRZ1ZMbmY9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5LYX07QU0ucHJvdG90eXBlLiR3YSRySGpQcGM9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5JYn07QU0ucHJvdG90eXBlLiR3YSRhR0FEN2U9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5SYX07QU0ucHJvdG90eXBlLiR3YSROZ29uUWM9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5QYX07QU0ucHJvdG90eXBlLiR3YSRmajB2MGI9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5KYn07CkFNLnByb3RvdHlwZS4kd2EkVmp4cVBkPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuSWF9O0FNLnByb3RvdHlwZS4kd2EkVWVYakNmPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuR2F9O0FNLnByb3RvdHlwZS4kd2EkQU80bUo9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5BYn07QU0ucHJvdG90eXBlLiR3YSRTOWdVcmY9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5yZXNldH07Xy5qcyhfLlozZSxBTSk7Cl8udigpOwp9Y2F0Y2goZSl7Xy5fRHVtcEV4Y2VwdGlvbihlKX0KdHJ5ewpfLnlVZT1fLmtjKCJuOFlPN2UiLFtfLmZyLF8uV3FdKTsKfWNhdGNoKGUpe18uX0R1bXBFeGNlcHRpb24oZSl9CnRyeXsKXy51KCJuOFlPN2UiKTsKdmFyIHpVZSxBVWUsQlVlLERVZSxFVWUsQ1VlLEdVZSxIVWUsSVVlLEpVZSxGVWU7elVlPXt0b3A6IlJFQ2RtZCIsYm90dG9tOiJENDNTV2QiLGxlZnQ6ImZsNXR2ZiIscmlnaHQ6Im9ydTZFZSJ9O0FVZT17dG9wOiJib3R0b20iLGJvdHRvbToidG9wIixsZWZ0OiJyaWdodCIscmlnaHQ6ImxlZnQifTtEVWU9ZnVuY3Rpb24oYSl7QlVlPT09YSYmKEJVZT12b2lkIDApO2Eua2EuYWRkQ2xhc3MoIkkwN1BTZCIpO2EuR2cmJkNVZShhKX07RVVlPWZ1bmN0aW9uKGEsYil7cmV0dXJuIGIgaW5zdGFuY2VvZiBOb2RlJiYoXy4kZyhhLmdldFJvb3QoKS5lbCgpLGIpfHwhIWEub2EmJl8uJGcoYS5vYS5lbCgpLGIpKX07CkNVZT1mdW5jdGlvbihhKXthLkdnPSExO2NhbmNlbEFuaW1hdGlvbkZyYW1lKGEuUGEpO2Eua2EucmVtb3ZlQ2xhc3MoInFWU3drYyIpLnJlbW92ZUNsYXNzKCJDc1lIUWIiKTthLkFhJiZhLmthLmFkZENsYXNzKCJJMDdQU2QiKTthLkFhPSEwO18uJGcoYS5rYS5lbCgpLF8uZ24oZG9jdW1lbnQpKSYmKGEuR2E9ITAsYS5JYSgpLmZvY3VzKCkpO2Eua2EuZWwoKS5zZXRBdHRyaWJ1dGUoImluZXJ0IiwiIik7YS5CYSYmKGEuQmEuZGlzY29ubmVjdCgpLGEuQmE9dm9pZCAwLEZVZShhKSk7Xy5OVGEoYS5OYi5rYSgpLGEua2EuZWwoKSkubG9nKCl9O0dVZT1mdW5jdGlvbihhKXthLmthLmFkZENsYXNzKCJxVlN3a2MiKTthLkFhJiZhLmthLmFkZENsYXNzKCJDc1lIUWIiKTthLkFhPSEwfTsKSFVlPWZ1bmN0aW9uKGEsYil7YS5vYXx8KGEub2E9bmV3IF8uem8oZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2IikpLGEub2Euc2V0U3R5bGUoInBvc2l0aW9uIiwiYWJzb2x1dGUiKS5zZXRTdHlsZSgicG9pbnRlci1ldmVudHMiLCJub25lIiksYS5nZXRSb290KCkuYXBwZW5kKGEub2EpLGEud2Euc2V0U3R5bGUoInBvaW50ZXItZXZlbnRzIiwiaW5pdGlhbCIpLF8uUG8oYSxhLm9hKSxhLm9hLmFwcGVuZChhLmthKSk7YS5vYS5zZXRTdHlsZSgibGVmdCIsYCR7Yi5sZWZ0K3dpbmRvdy5zY3JvbGxYfXB4YCkuc2V0U3R5bGUoInRvcCIsYCR7Yi50b3Ard2luZG93LnNjcm9sbFl9cHhgKS5zZXRTdHlsZSgid2lkdGgiLGAke2Iud2lkdGh9cHhgKS5zZXRTdHlsZSgiaGVpZ2h0IixgJHtiLmhlaWdodH1weGApO2I9Xy51eShfLnR5KF8ueXkoXy52eShfLnN5KF8ucnkobmV3IF8uenksMiksKCk9PnthLkdnJiZDVWUoYSk7YS5BYSYmRlVlKGEpO3JldHVybiEwfSksITApLDQpLFtdKSxuZXcgXy5GY2MoYS5vYS5oYigpKSk7CmEuRmcub3BlbihhLm9hLmhiKCksYil9O0lVZT1mdW5jdGlvbihhLGIsYyxkKXt2YXIgZT0wO2Q9PT0iYm90dG9tInx8ZD09PSJ0b3AiP2IudG9wPGMudG9wP2U9Yy50b3AtYi50b3A6Yi5ib3R0b20+Yy5ib3R0b20mJihlPWMuYm90dG9tLWIuYm90dG9tKTpiLmxlZnQ8Yy5sZWZ0P2U9Yy5sZWZ0LWIubGVmdDpiLnJpZ2h0PmMucmlnaHQmJihlPWMucmlnaHQtYi5yaWdodCk7aWYoTWF0aC5hYnMoZSk+PTEpe2lmKGQ9PT0iYm90dG9tInx8ZD09PSJyaWdodCIpZSo9LTE7YS53YS5zZXRTdHlsZShkLGEuT2E/YGNhbGMoJHthLk9hfSArICR7ZX1weClgOmAke2V9cHhgKX19OwpKVWU9ZnVuY3Rpb24oYSxiLGMsZCxlKXtzd2l0Y2goZCl7Y2FzZSAiYm90dG9tIjpiPWIudG9wPGMudG9wO2JyZWFrO2Nhc2UgInRvcCI6Yj1hLnFSKCkmJmEuRmcuaXNTY3JvbGxEaXNhYmxlZCgpP2IuYm90dG9tPmMuYm90dG9tOmIuYm90dG9tLWIuaGVpZ2h0LzI+Yy5ib3R0b207YnJlYWs7Y2FzZSAicmlnaHQiOmI9Yi5sZWZ0PGMubGVmdDticmVhaztkZWZhdWx0OmI9Yi5yaWdodD5jLnJpZ2h0fWImJihhLmthLnJlbW92ZUNsYXNzKHpVZVtkXSkuYWRkQ2xhc3MoelVlW2VdKSxiPWEud2EuZ2V0U3R5bGUoZCksYS53YS5zZXRTdHlsZShkLCIiKS5zZXRTdHlsZShlLGIpKX07RlVlPWZ1bmN0aW9uKGEpe0JVZT09PWEmJihCVWU9dm9pZCAwKTthLk5hJiYoXy5VZyhhLk5hKSxhLk5hPXZvaWQgMCk7YS5LYSYmKF8uVWcoYS5LYSksYS5LYT12b2lkIDApO2EuQWE9ITE7YS5vYSYmYS5GZy5jbG9zZShhLm9hLmhiKCkpO2Eua2EuaGlkZSgpLnJlbW92ZUNsYXNzKCJJMDdQU2QiKX07Cl8uYk09Y2xhc3MgZXh0ZW5kcyBfLmhze3N0YXRpYyBRYSgpe3JldHVybntzZXJ2aWNlOntOYjpfLkx1LG92ZXJsYXk6Xy5veX19fWNvbnN0cnVjdG9yKGEpe3N1cGVyKCk7dGhpcy5HZz0hMTt0aGlzLlBhPTA7dGhpcy5HYT10aGlzLkFhPSExO3RoaXMuRmc9YS5zZXJ2aWNlLm92ZXJsYXk7dGhpcy5OYj1hLnNlcnZpY2UuTmJ9aU8oKXt0aGlzLmthPXRoaXMuSmEoIkVGZXhJZiIpO3RoaXMud2E9dGhpcy5KYSgieXM2Vm9lIik7dmFyIGE9dGhpcy5WYSgicmxPQjVkIik7dGhpcy5FYT1hLmlzRW1wdHkoKT90aGlzLndhOm5ldyBfLnpvKGEpO2E9Xy5ubSh0aGlzLndhLmdldERhdGEoInBlciIpKTt0aGlzLk9hPXRoaXMud2EuZ2V0U3R5bGUoYSk7c3VwZXIuaU8oKX1UYigpe0JVZT09PXRoaXMmJihCVWU9dm9pZCAwKTtzdXBlci5UYigpfVplKCl7cmV0dXJuIHRoaXMuR2d9aGlkZSgpe3RoaXMuR2cmJkRVZSh0aGlzKX1aYShhKXtFVWUodGhpcyxhLmV2ZW50LnJlbGF0ZWRUYXJnZXQpfHwKKHRoaXMuR2E9ITEsdGhpcy5HZyYmRFVlKHRoaXMpKX1uYihhKXt0aGlzLkdnJiYhRVVlKHRoaXMsYS5ldmVudC5yZWxhdGVkVGFyZ2V0KSYmQ1VlKHRoaXMpfXFSKCl7cmV0dXJuIHRoaXMuZ2V0Um9vdCgpLmdldERhdGEoImgiKS5MYigpfUlhKCl7dmFyIGE9dGhpcy5KYSgiYk45N1BjIiksYj1fLk1IYShhLmVsKCksYz0+Xy5ibihjKSYmKCEoYyBpbnN0YW5jZW9mIEhUTUxFbGVtZW50KXx8Yy5vZmZzZXRXaWR0aCE9PTB8fGMub2Zmc2V0SGVpZ2h0IT09MCkpO3JldHVybiBfLkVvKGJ8fGEuZWwoKSl9cmIoYSl7dGhpcy5HYSYmdGhpcy5zaG93KGEpfUFiKGEpe3RoaXMuR2F8fHRoaXMuc2hvdyhhKX1zaG93KGEpe2lmKCF0aGlzLkdnKXt0aGlzLkdnPSEwO3RoaXMuR2E9ITE7dGhpcy5rYS5lbCgpLnJlbW92ZUF0dHJpYnV0ZSgiaW5lcnQiKTtjYW5jZWxBbmltYXRpb25GcmFtZSh0aGlzLlBhKTtCVWUmJkJVZSE9PXRoaXM/KHRoaXMua2EuYWRkQ2xhc3MoIkNzWUhRYiIpLERVZShCVWUpKToKYS50eXBlIT09ImZvY3VzaW4iJiZhLnR5cGUhPT0iY2xpY2sifHx0aGlzLmthLmFkZENsYXNzKCJDc1lIUWIiKTt0aGlzLmthLnJlbW92ZUNsYXNzKCJJMDdQU2QiKTtCVWU9dGhpcztpZih0aGlzLmthLlplKCkpR1VlKHRoaXMpO2Vsc2V7bGV0IGI9Xy5ubSh0aGlzLndhLmdldERhdGEoInBhciIpKSxjPV8ubm0odGhpcy53YS5nZXREYXRhKCJwZXIiKSksZD1BVWVbYl07dGhpcy5rYS5zaG93KCkucmVtb3ZlQ2xhc3MoelVlW2RdKS5hZGRDbGFzcyh6VWVbYl0pO3RoaXMud2Euc2V0U3R5bGUoYyx0aGlzLk9hKS5zZXRTdHlsZShBVWVbY10sIiIpO3RoaXMuRWEuc2V0U3R5bGUoImhlaWdodCIsImluaXRpYWwiKS5zZXRTdHlsZSgidHJhbnNpdGlvbiIsIm5vbmUiKTtsZXQgZT10aGlzLndhLmdldFN0eWxlKGQpO2UmJnRoaXMud2Euc2V0U3R5bGUoZCwiIikuc2V0U3R5bGUoYixlKTshdGhpcy5xUigpfHx0aGlzLm9hJiZ0aGlzLkZnLmlzT3Blbih0aGlzLm9hLmhiKCkpfHxIVWUodGhpcywKdGhpcy5nZXRSb290KCkuaGIoKS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSk7dHJ5e3RoaXMuQmE9bmV3IEludGVyc2VjdGlvbk9ic2VydmVyKGY9Pnt0aGlzLkJhLmRpc2Nvbm5lY3QoKTt0aGlzLkJhPXZvaWQgMDt0aGlzLkVhLnNldFN0eWxlKCJoZWlnaHQiLCIiKTt0aGlzLlBhPXJlcXVlc3RBbmltYXRpb25GcmFtZSgoKT0+e3RoaXMuRWEuc2V0U3R5bGUoInRyYW5zaXRpb24iLCIiKTtHVWUodGhpcyl9KTt2YXIgZz1mWzBdO2Y9Zy5ib3VuZGluZ0NsaWVudFJlY3Q7Zz1nLnJvb3RCb3VuZHM7ZiYmZyYmKElVZSh0aGlzLGYsZyxjKSxKVWUodGhpcyxmLGcsYixkKSl9LHtyb290TWFyZ2luOiItOHB4Iixyb290OmRvY3VtZW50fSksdGhpcy5CYS5vYnNlcnZlKHRoaXMuRWEuZWwoKSl9Y2F0Y2goZil7dGhpcy5FYS5zZXRTdHlsZSgiaGVpZ2h0IiwiIikuc2V0U3R5bGUoInRyYW5zaXRpb24iLCIiKSxHVWUodGhpcyl9fXRoaXMuS2F8fGEudHlwZT09PSJmb2N1c2luInx8KHRoaXMuS2E9Cl8uVGcoZG9jdW1lbnQuYm9keSwiY2xpY2siLHRoaXMuUmEsdGhpcykpO3RoaXMuTmF8fCh0aGlzLk5hPV8uVGcoZG9jdW1lbnQuYm9keSwia2V5ZG93biIsdGhpcy5TYSx0aGlzKSk7YT1hLnR5cGU9PT0ibW91c2VlbnRlciI/OTp2b2lkIDA7Xy5RcChfLk5wKHRoaXMuTmIua2EoKSx0aGlzLklhKCkuZWwoKSxhKSx0aGlzLmthLmVsKCkpLmxvZygpfX1jbGVhbnVwKGEpe2EudGFyZ2V0RWxlbWVudC5lcXVhbHModGhpcy5rYSkmJih0aGlzLkFhPSExLHRoaXMuR2d8fEZVZSh0aGlzKSl9UmEoYSl7YT1hLnRhcmdldEVsZW1lbnQmJmEudGFyZ2V0RWxlbWVudC5lbCgpO18uJGcodGhpcy5nZXRSb290KCkuZWwoKSxhKXx8Xy4kZyh0aGlzLmthLmVsKCksYSl8fERVZSh0aGlzKTtyZXR1cm4hMH1TYShhKXthLmV2ZW50LmtleT09PSJFc2NhcGUiJiZEVWUodGhpcyk7cmV0dXJuITB9fTtfLmJNLnByb3RvdHlwZS4kd2Ekbjl2NXllPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuY2xlYW51cH07Cl8uYk0ucHJvdG90eXBlLiR3YSR0aTZoR2M9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5zaG93fTtfLmJNLnByb3RvdHlwZS4kd2EkRzVXQlljPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuQWJ9O18uYk0ucHJvdG90eXBlLiR3YSRVMDA1bj1mdW5jdGlvbigpe3JldHVybiB0aGlzLnJifTtfLmJNLnByb3RvdHlwZS4kd2EkWXVWR0xjPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuSWF9O18uYk0ucHJvdG90eXBlLiR3YSRpQUpXSD1mdW5jdGlvbigpe3JldHVybiB0aGlzLm5ifTtfLmJNLnByb3RvdHlwZS4kd2Ekcm5hRE9kPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuWmF9O18uYk0ucHJvdG90eXBlLiR3YSRaWUlmRmQ9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5oaWRlfTtfLmJNLnByb3RvdHlwZS4kd2EkRlZLekFiPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuWmV9O18uYk0ucHJvdG90eXBlLiR3YSRrNElzZWI9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5UYn07Cl8uYk0ucHJvdG90eXBlLiR3YSRTZnBOVz1mdW5jdGlvbigpe3JldHVybiB0aGlzLmlPfTtfLmpzKF8ueVVlLF8uYk0pOwpfLnYoKTsKfWNhdGNoKGUpe18uX0R1bXBFeGNlcHRpb24oZSl9CnRyeXsKXy5LVWU9Xy5rYygianl3RWtmIixbXy54aSxfLnlVZV0pOwp9Y2F0Y2goZSl7Xy5fRHVtcEV4Y2VwdGlvbihlKX0KdHJ5ewpfLnlHPWZ1bmN0aW9uKGEpe3ZhciBiPW5ldyBfLnhHO3JldHVybiBfLlpoKGIsMyxhKX07Xy54Rz1jbGFzcyBleHRlbmRzIF8ubHtjb25zdHJ1Y3RvcihhKXtzdXBlcihhKX19Owp9Y2F0Y2goZSl7Xy5fRHVtcEV4Y2VwdGlvbihlKX0KdHJ5ewpfLnpHPV8uVWIoNzQ1LF8ubXAsXy54Ryk7Xy5ucFs3NDVdPVswLF8uRyxfLlNsLF8uRywtMV07Cn1jYXRjaChlKXtfLl9EdW1wRXhjZXB0aW9uKGUpfQp0cnl7Cl8uRkZjPWZ1bmN0aW9uKGEpe3ZhciBiPVtdO2ZvcihsZXQgW2MsZF1vZiBhLmVudHJpZXMoKSliLnB1c2goe2tleTpjLHZhbHVlOmR9KTtyZXR1cm4gYn07Xy5IQz1mdW5jdGlvbihhKXtyZXR1cm4gXy5WayhhLG5ldyBhLmNvbnN0cnVjdG9yKX07Cn1jYXRjaChlKXtfLl9EdW1wRXhjZXB0aW9uKGUpfQp0cnl7Cl8uQXljPWZ1bmN0aW9uKGEpe2lmKGEhPT0iIiYmIShhIGluc3RhbmNlb2YgXy5EVWEpKXRocm93IEVycm9yKCJGaWAiK18uV0VhKGEpKTthPV8uV2phKGE/YS5nZXRDb250ZW50KCk6IiIse2p1c3RpZmljYXRpb246ImZyb20gU295IFNhbml0aXplZFRydXN0ZWRSZXNvdXJjZVVyaSBvYmplY3QifSk7cmV0dXJuIF8udXNhKGEpfTtfLk9BPWZ1bmN0aW9uKGEpe2lmKCEoYT09PSIifHxhIGluc3RhbmNlb2YgXy5DVWF8fGEgaW5zdGFuY2VvZiBfLkhlKSl0aHJvdyBFcnJvcigiR2lgIitfLldFYShhKSk7aWYoYSBpbnN0YW5jZW9mIF8uSGUpcmV0dXJuIF8uaWgoXy5BYyhhP2EudG9TdHJpbmcoKToiIikpO2E9YT9hLmdldENvbnRlbnQoKToiIjtyZXR1cm4gXy5paChfLkFjKGEpKX07Xy5QQT1mdW5jdGlvbihhKXtyZXR1cm4gYSBpbnN0YW5jZW9mIF8uZWg/KGE9KGE9Xy5yc2EoYSkpP18ucWMoYSkudG9TdHJpbmcoKToiIiwoMCxfLiRwKShhKSk6YT09bnVsbD9hOm51bGx9OwpfLlFBPWZ1bmN0aW9uKGEpe3JldHVybiBhIGluc3RhbmNlb2YgXy5oaD8oYT0oYT1fLmpoKGEpKT9fLkJjKGEpOiIiLCgwLF8uY3EpKGEpKTphPT1udWxsP2E6bnVsbH07Xy5SQT1mdW5jdGlvbihhKXtyZXR1cm4gYSBpbnN0YW5jZW9mIF8ua2g/KGE9KGE9Xy5saChhKSk/Xy56YyhhKS50b1N0cmluZygpOiIiLCgwLF8ubVZhKShhKSk6YT09bnVsbD9hOm51bGx9O18uQnljPWZ1bmN0aW9uKGEpe2lmKGE9PW51bGwpcmV0dXJuIGE7aWYoYSBpbnN0YW5jZW9mIF8uU2EpcmV0dXJuIF8ucWIoYSk7dGhyb3cgRXJyb3IoIkhpYCIrYSk7fTsKfWNhdGNoKGUpe18uX0R1bXBFeGNlcHRpb24oZSl9CnRyeXsKdmFyIHN4YztfLkRBPWZ1bmN0aW9uKGEpe3RoaXMua2E9dm9pZCAwO3RoaXMuZko9e307aWYoYSl7bGV0IGI9Xy5wS2EoYSk7YT1fLm9LYShhKTtmb3IobGV0IGM9MDtjPGIubGVuZ3RoO2MrKyl0aGlzLnNldChiW2NdLGFbY10pfX07Xy5EQS5wcm90b3R5cGUuc2V0PWZ1bmN0aW9uKGEsYil7c3hjKHRoaXMsYSxiLCExKX07Xy5EQS5wcm90b3R5cGUuc2V0VmFsdWU9ZnVuY3Rpb24oYSl7dGhpcy5rYT1hfTtfLkRBLnByb3RvdHlwZS5hZGQ9ZnVuY3Rpb24oYSxiKXtzeGModGhpcyxhLGIsITApfTtzeGM9ZnVuY3Rpb24oYSxiLGMsZCl7Zm9yKGxldCBlPTA7ZTxiLmxlbmd0aDtlKyspe2xldCBmPWIuY2hhckF0KGUpO2EuZkpbZl18fChhLmZKW2ZdPW5ldyBfLkRBKTthPWEuZkpbZl19aWYoZCYmYS5rYSE9PXZvaWQgMCl0aHJvdyBFcnJvcigiRGlgIitiKTthLmthPWN9OwpfLnR4Yz1mdW5jdGlvbihhLGIpe2ZvcihsZXQgYz0wO2M8Yi5sZW5ndGg7YysrKWlmKGE9YS5mSltiLmNoYXJBdChjKV0sIWEpcmV0dXJuO3JldHVybiBhfTtfLkRBLnByb3RvdHlwZS5nZXQ9ZnVuY3Rpb24oYSl7cmV0dXJuKGE9Xy50eGModGhpcyxhKSk/YS5rYTp2b2lkIDB9O18uREEucHJvdG90eXBlLnl6PWZ1bmN0aW9uKCl7dmFyIGE9W107dXhjKHRoaXMsYSk7cmV0dXJuIGF9O3ZhciB1eGM9ZnVuY3Rpb24oYSxiKXthLmthIT09dm9pZCAwJiZiLnB1c2goYS5rYSk7Zm9yKGxldCBjIGluIGEuZkopdXhjKGEuZkpbY10sYil9O18uREEucHJvdG90eXBlLmdldEtleXM9ZnVuY3Rpb24oYSl7dmFyIGI9W107aWYoYSl7bGV0IGM9dGhpcztmb3IobGV0IGQ9MDtkPGEubGVuZ3RoO2QrKyl7bGV0IGU9YS5jaGFyQXQoZCk7aWYoIWMuZkpbZV0pcmV0dXJuW107Yz1jLmZKW2VdfXZ4YyhjLGEsYil9ZWxzZSB2eGModGhpcywiIixiKTtyZXR1cm4gYn07CnZhciB2eGM9ZnVuY3Rpb24oYSxiLGMpe2Eua2EhPT12b2lkIDAmJmMucHVzaChiKTtmb3IobGV0IGQgaW4gYS5mSil2eGMoYS5mSltkXSxiK2QsYyl9O18uYWE9Xy5EQS5wcm90b3R5cGU7Xy5hYS5jbGVhcj1mdW5jdGlvbigpe3RoaXMuZko9e307dGhpcy5rYT12b2lkIDB9O18uYWEucmVtb3ZlPWZ1bmN0aW9uKGEpe3ZhciBiPXRoaXMsYz1bXTtmb3IodmFyIGQ9MDtkPGEubGVuZ3RoO2QrKyl7bGV0IGU9YS5jaGFyQXQoZCk7aWYoIWIuZkpbZV0pdGhyb3cgRXJyb3IoIkVpYCIrYSk7Yy5wdXNoKFtiLGVdKTtiPWIuZkpbZV19YT1iLmthO2ZvcihkZWxldGUgYi5rYTtjLmxlbmd0aD4wOylpZihkPWMucG9wKCksYj1kWzBdLGQ9ZFsxXSxiLmZKW2RdLmlzRW1wdHkoKSlkZWxldGUgYi5mSltkXTtlbHNlIGJyZWFrO3JldHVybiBhfTtfLmFhLmNsb25lPWZ1bmN0aW9uKCl7cmV0dXJuIG5ldyBfLkRBKHRoaXMpfTsKXy5hYS56aT1mdW5jdGlvbigpe3ZhciBhPXRoaXMueXooKTtyZXR1cm4gYS56aSYmdHlwZW9mIGEuemk9PSJmdW5jdGlvbiI/YS56aSgpOl8uSGEoYSl8fHR5cGVvZiBhPT09InN0cmluZyI/YS5sZW5ndGg6Xy5vamEoYSl9O18uYWEuaXNFbXB0eT1mdW5jdGlvbigpe3JldHVybiB0aGlzLmthPT09dm9pZCAwJiZfLlVjKHRoaXMuZkopfTsKfWNhdGNoKGUpe18uX0R1bXBFeGNlcHRpb24oZSl9CnRyeXsKXy5FQT1mdW5jdGlvbihhLGIpe3JldHVybiBfLmxrKGEsMTIsYil9O18ud3hjPWZ1bmN0aW9uKGEsYil7cmV0dXJuIF8uJGgoYSwxOSxiKX07Xy54eGM9ZnVuY3Rpb24oYSxiKXtyZXR1cm4gXy5sayhhLDE1LGIpfTtfLnl4Yz1mdW5jdGlvbihhLGIpe3JldHVybiBfLiRoKGEsMTcsYil9O18uenhjPWZ1bmN0aW9uKGEsYil7cmV0dXJuIF8uJGgoYSwzNSxiKX07Xy5BeGM9ZnVuY3Rpb24oYSxiKXtyZXR1cm4gXy4kaChhLDM3LGIpfTtfLkJ4Yz1mdW5jdGlvbihhLGIpe3JldHVybiBfLmxrKGEsNjIsYil9OwpfLkZBPWNsYXNzIGV4dGVuZHMgXy5se2NvbnN0cnVjdG9yKGEpe3N1cGVyKGEpfWdldFNpemUoKXtyZXR1cm4gXy5kayh0aGlzLDEpfXNldFNpemUoYSl7cmV0dXJuIF8ubGsodGhpcywxLGEpfWhFKCl7cmV0dXJuIF8ud2UodGhpcywxKX1nZXRXaWR0aCgpe3JldHVybiBfLmRrKHRoaXMsMTIpfVZpKCl7cmV0dXJuIF8ud2UodGhpcywxMil9Z2V0SGVpZ2h0KCl7cmV0dXJuIF8uZGsodGhpcywxMyl9c2V0SGVpZ2h0KGEpe3JldHVybiBfLmxrKHRoaXMsMTMsYSl9cWcoKXtyZXR1cm4gXy53ZSh0aGlzLDEzKX1zZXRDZW50ZXJDcm9wKGEpe3JldHVybiBfLiRoKHRoaXMsMjAsYSl9ZlcoKXtyZXR1cm4gXy5BKHRoaXMsNCl9RW9hKCl7cmV0dXJuIF8uSGsodGhpcyw0KX1nZXRUb2tlbigpe3JldHVybiBfLmdoKHRoaXMsMjQpfXNldFRva2VuKGEpe3JldHVybiBfLmZoKHRoaXMsMjQsYSl9UkIoKXtyZXR1cm4gXy5jayh0aGlzLDI3KX1FTygpe3JldHVybiBfLmRrKHRoaXMsODYpfXVpYSgpe3JldHVybiBfLndlKHRoaXMsCjg2KX10aSgpe3JldHVybiBfLmRrKHRoaXMsODcpfWJJKCl7cmV0dXJuIF8ud2UodGhpcyw4Nyl9Z3FiKCl7cmV0dXJuIF8uY2kodGhpcyw4NSl9Z2V0U3Rvcnlib2FyZExldmVsKCl7cmV0dXJuIF8uZGsodGhpcywxMDkpfX07dmFyIEN4YztfLkV4Yz1mdW5jdGlvbigpe2lmKCFDeGMpe3ZhciBhPUN4Yz1uZXcgXy5EQSxiO2ZvcihiIGluIER4YylhLmFkZChiLER4Y1tiXSl9fTtfLkV4Yy5wcm90b3R5cGUuV2k9bnVsbDsKdmFyIEdBPWZ1bmN0aW9uKGEsYil7dGhpcy50eXBlcz1hO3RoaXMua2E9Yn0sRHhjPXthOm5ldyBHQShbMywwXSxbZnVuY3Rpb24oYSxiKXtfLiRoKGEsMjEsYil9LGZ1bmN0aW9uKGEsYil7Xy5sayhhLDU2LGIpfV0pLGFsOm5ldyBHQShbM10sW2Z1bmN0aW9uKGEsYil7Xy4kaChhLDc0LGIpfV0pLGI6bmV3IEdBKFszLDBdLFtmdW5jdGlvbihhLGIpe18uJGgoYSwyMyxiKX0sZnVuY3Rpb24oYSxiKXtfLmxrKGEsMzgsYil9XSksYmE6bmV3IEdBKFswXSxbZnVuY3Rpb24oYSxiKXtfLmxrKGEsODUsYil9XSksYmM6bmV3IEdBKFswXSxbZnVuY3Rpb24oYSxiKXtfLmxrKGEsODcsYil9XSksYnI6bmV3IEdBKFswXSxbZnVuY3Rpb24oYSxiKXtfLmxrKGEsODYsYil9XSksYzpuZXcgR0EoWzMsMF0sW2Z1bmN0aW9uKGEsYil7Xy4kaChhLDIsYil9LGZ1bmN0aW9uKGEsYil7Xy5sayhhLDM5LGIpfV0pLGNjOm5ldyBHQShbM10sW2Z1bmN0aW9uKGEsYil7Xy4kaChhLDUxLGIpfV0pLGNpOm5ldyBHQShbM10sCltmdW5jdGlvbihhLGIpe18uJGgoYSwzMixiKX1dKSxja206bmV3IEdBKFszXSxbZnVuY3Rpb24oYSxiKXtfLiRoKGEsMTA0LGIpfV0pLGNwOm5ldyBHQShbMF0sW2Z1bmN0aW9uKGEsYil7Xy5sayhhLDkyLGIpfV0pLGNyOm5ldyBHQShbM10sW2Z1bmN0aW9uKGEsYil7Xy4kaChhLDEwOCxiKX1dKSxjdjpuZXcgR0EoWzBdLFtmdW5jdGlvbihhLGIpe18ubGsoYSw5NCxiKX1dKSxkOm5ldyBHQShbM10sW2Z1bmN0aW9uKGEsYil7Xy4kaChhLDMsYil9XSksZGM6bmV3IEdBKFs1XSxbZnVuY3Rpb24oYSxiKXtfLmZoKGEsOTksYil9XSksZGY6bmV3IEdBKFszXSxbZnVuY3Rpb24oYSxiKXtfLiRoKGEsODAsYil9XSksZHY6bmV3IEdBKFszXSxbZnVuY3Rpb24oYSxiKXtfLiRoKGEsOTAsYil9XSksZTpuZXcgR0EoWzBdLFtmdW5jdGlvbihhLGIpe18ueHhjKGEsYil9XSksZW06bmV3IEdBKFswXSxbZnVuY3Rpb24oYSxiKXtfLmxrKGEsMTA3LGIpfV0pLGY6bmV3IEdBKFs0XSxbZnVuY3Rpb24oYSwKYil7Xy5maChhLDE2LGIpfV0pLGZnOm5ldyBHQShbM10sW2Z1bmN0aW9uKGEsYil7Xy4kaChhLDM0LGIpfV0pLGZoOm5ldyBHQShbM10sW2Z1bmN0aW9uKGEsYil7Xy4kaChhLDMwLGIpfV0pLGZtOm5ldyBHQShbM10sW2Z1bmN0aW9uKGEsYil7Xy4kaChhLDg0LGIpfV0pLGZvOm5ldyBHQShbMl0sW2Z1bmN0aW9uKGEsYil7Xy53aChhLDc5LGIpfV0pLGZ0Om5ldyBHQShbM10sW2Z1bmN0aW9uKGEsYil7Xy4kaChhLDUwLGIpfV0pLGZ2Om5ldyBHQShbM10sW2Z1bmN0aW9uKGEsYil7Xy4kaChhLDMxLGIpfV0pLGc6bmV3IEdBKFszXSxbZnVuY3Rpb24oYSxiKXtfLiRoKGEsMTQsYil9XSksZ2NlOm5ldyBHQShbNF0sW2Z1bmN0aW9uKGEsYil7Xy5maChhLDExMixiKX1dKSxnZDpuZXcgR0EoWzNdLFtmdW5jdGlvbihhLGIpe18uJGgoYSw4MyxiKX1dKSxnbTpuZXcgR0EoWzNdLFtmdW5jdGlvbihhLGIpe18uJGgoYSwxMDUsYil9XSksaDpuZXcgR0EoWzMsMF0sW2Z1bmN0aW9uKGEsYil7Xy4kaChhLAo0LGIpfSxmdW5jdGlvbihhLGIpe2Euc2V0SGVpZ2h0KGIpfV0pLGk6bmV3IEdBKFszXSxbZnVuY3Rpb24oYSxiKXtfLiRoKGEsMjIsYil9XSksaWM6bmV3IEdBKFswXSxbZnVuY3Rpb24oYSxiKXtfLmxrKGEsNzEsYil9XSksaWQ6bmV3IEdBKFszXSxbZnVuY3Rpb24oYSxiKXtfLiRoKGEsNzAsYil9XSksaWw6bmV3IEdBKFszXSxbZnVuY3Rpb24oYSxiKXtfLiRoKGEsOTYsYil9XSksaXA6bmV3IEdBKFszXSxbZnVuY3Rpb24oYSxiKXtfLiRoKGEsNTQsYil9XSksaXY6bmV3IEdBKFswXSxbZnVuY3Rpb24oYSxiKXtfLnRoKGEsNzUsYil9XSksajpuZXcgR0EoWzFdLFtmdW5jdGlvbihhLGIpe18ucWsoYSwyOSxiKX1dKSxrOm5ldyBHQShbMywwXSxbZnVuY3Rpb24oYSxiKXtfLnl4YyhhLGIpfSxmdW5jdGlvbihhLGIpe18ubGsoYSw0MixiKX1dKSxsOm5ldyBHQShbMF0sW2Z1bmN0aW9uKGEsYil7Xy5sayhhLDQ0LGIpfV0pLGxmOm5ldyBHQShbM10sW2Z1bmN0aW9uKGEsYil7Xy4kaChhLAo2NSxiKX1dKSxsbzpuZXcgR0EoWzNdLFtmdW5jdGlvbihhLGIpe18uJGgoYSw5NyxiKX1dKSxscDpuZXcgR0EoWzRdLFtmdW5jdGlvbihhLGIpe18uZmgoYSwxMTYsYil9XSksbTpuZXcgR0EoWzBdLFtmdW5jdGlvbihhLGIpe18ubGsoYSw2MyxiKX1dKSxtZDpuZXcgR0EoWzNdLFtmdW5jdGlvbihhLGIpe18uJGgoYSw5MSxiKX1dKSxtbTpuZXcgR0EoWzRdLFtmdW5jdGlvbihhLGIpe18uZmgoYSw4MSxiKX1dKSxtbzpuZXcgR0EoWzNdLFtmdW5jdGlvbihhLGIpe18uJGgoYSw3MyxiKX1dKSxtcDpuZXcgR0EoWzBdLFtmdW5jdGlvbihhLGIpe18ubGsoYSwxMTUsYil9XSksbXY6bmV3IEdBKFszXSxbZnVuY3Rpb24oYSxiKXtfLiRoKGEsNjYsYil9XSksbjpuZXcgR0EoWzNdLFtmdW5jdGlvbihhLGIpe2Euc2V0Q2VudGVyQ3JvcChiKX1dKSxuYzpuZXcgR0EoWzNdLFtmdW5jdGlvbihhLGIpe18uJGgoYSw1NSxiKX1dKSxuZDpuZXcgR0EoWzNdLFtmdW5jdGlvbihhLGIpe18uJGgoYSwKNTMsYil9XSksbmc6bmV3IEdBKFszXSxbZnVuY3Rpb24oYSxiKXtfLiRoKGEsOTUsYil9XSksbmdtOm5ldyBHQShbM10sW2Z1bmN0aW9uKGEsYil7Xy4kaChhLDEwNixiKX1dKSxubzpuZXcgR0EoWzNdLFtmdW5jdGlvbihhLGIpe18uQXhjKGEsYil9XSksbnM6bmV3IEdBKFszXSxbZnVuY3Rpb24oYSxiKXtfLiRoKGEsNDAsYil9XSksbnQwOm5ldyBHQShbNF0sW2Z1bmN0aW9uKGEsYil7Xy5maChhLDM2LGIpfV0pLG50bTpuZXcgR0EoWzNdLFtmdW5jdGlvbihhLGIpe18uJGgoYSwxMTQsYil9XSksbnU6bmV3IEdBKFszXSxbZnVuY3Rpb24oYSxiKXtfLiRoKGEsNDYsYil9XSksbnc6bmV3IEdBKFszXSxbZnVuY3Rpb24oYSxiKXtfLiRoKGEsNDgsYil9XSksbzpuZXcgR0EoWzEsM10sW2Z1bmN0aW9uKGEsYil7Xy5xayhhLDcsYil9LGZ1bmN0aW9uKGEsYil7Xy4kaChhLDI3LGIpfV0pLHA6bmV3IEdBKFszLDBdLFtmdW5jdGlvbihhLGIpe18ud3hjKGEsYil9LGZ1bmN0aW9uKGEsYil7Xy5sayhhLAo0MyxiKX1dKSxwYTpuZXcgR0EoWzNdLFtmdW5jdGlvbihhLGIpe18uJGgoYSw2MSxiKX1dKSxwYzpuZXcgR0EoWzBdLFtmdW5jdGlvbihhLGIpe18ubGsoYSw4OCxiKX1dKSxwZDpuZXcgR0EoWzNdLFtmdW5jdGlvbihhLGIpe18uJGgoYSw2MCxiKX1dKSxwZjpuZXcgR0EoWzNdLFtmdW5jdGlvbihhLGIpe18uJGgoYSw2NyxiKX1dKSxwZzpuZXcgR0EoWzNdLFtmdW5jdGlvbihhLGIpe18uJGgoYSw3MixiKX1dKSxwaTpuZXcgR0EoWzJdLFtmdW5jdGlvbihhLGIpe18ud2goYSw3NixiKX1dKSxwcDpuZXcgR0EoWzNdLFtmdW5jdGlvbihhLGIpe18uJGgoYSw1MixiKX1dKSxwdDpuZXcgR0EoWzRdLFtmdW5jdGlvbihhLGIpe18uZmgoYSwxMTEsYil9XSkscTpuZXcgR0EoWzRdLFtmdW5jdGlvbihhLGIpe18uZmgoYSwyOCxiKX1dKSxyOm5ldyBHQShbMywwXSxbZnVuY3Rpb24oYSxiKXtfLiRoKGEsNixiKX0sZnVuY3Rpb24oYSxiKXtfLmxrKGEsMjYsYil9XSkscmE6bmV3IEdBKFszXSwKW2Z1bmN0aW9uKGEsYil7Xy4kaChhLDEwMyxiKX1dKSxyZjpuZXcgR0EoWzNdLFtmdW5jdGlvbihhLGIpe18uJGgoYSwxMDAsYil9XSkscmc6bmV3IEdBKFszXSxbZnVuY3Rpb24oYSxiKXtfLiRoKGEsNTksYil9XSkscmg6bmV3IEdBKFszXSxbZnVuY3Rpb24oYSxiKXtfLiRoKGEsNDksYil9XSkscmo6bmV3IEdBKFszXSxbZnVuY3Rpb24oYSxiKXtfLiRoKGEsNTcsYil9XSkscm86bmV3IEdBKFsyXSxbZnVuY3Rpb24oYSxiKXtfLndoKGEsNzgsYil9XSkscnA6bmV3IEdBKFszXSxbZnVuY3Rpb24oYSxiKXtfLiRoKGEsNTgsYil9XSkscnc6bmV3IEdBKFszXSxbZnVuY3Rpb24oYSxiKXtfLnp4YyhhLGIpfV0pLHJ3YTpuZXcgR0EoWzNdLFtmdW5jdGlvbihhLGIpe18uJGgoYSw2NCxiKX1dKSxyd3U6bmV3IEdBKFszXSxbZnVuY3Rpb24oYSxiKXtfLiRoKGEsNDEsYil9XSksczpuZXcgR0EoWzMsMF0sW2Z1bmN0aW9uKGEsYil7Xy4kaChhLDMzLGIpfSxmdW5jdGlvbihhLGIpe2Euc2V0U2l6ZShiKX1dKSwKc2I6bmV3IEdBKFswXSxbZnVuY3Rpb24oYSxiKXtfLmxrKGEsMTEwLGIpfV0pLHNjOm5ldyBHQShbMF0sW2Z1bmN0aW9uKGEsYil7Xy5sayhhLDg5LGIpfV0pLHNnOm5ldyBHQShbM10sW2Z1bmN0aW9uKGEsYil7Xy4kaChhLDgyLGIpfV0pLHNsOm5ldyBHQShbMF0sW2Z1bmN0aW9uKGEsYil7Xy5sayhhLDEwOSxiKX1dKSxzbTpuZXcgR0EoWzNdLFtmdW5jdGlvbihhLGIpe18uJGgoYSw5MyxiKX1dKSx0Om5ldyBHQShbNF0sW2Z1bmN0aW9uKGEsYil7YS5zZXRUb2tlbihiKX1dKSx0bTpuZXcgR0EoWzNdLFtmdW5jdGlvbihhLGIpe18uJGgoYSwxMTMsYil9XSksdTpuZXcgR0EoWzNdLFtmdW5jdGlvbihhLGIpe18uJGgoYSwxOCxiKX1dKSx1dDpuZXcgR0EoWzNdLFtmdW5jdGlvbihhLGIpe18uJGgoYSw0NSxiKX1dKSx2Om5ldyBHQShbMF0sW2Z1bmN0aW9uKGEsYil7Xy5CeGMoYSxiKX1dKSx2YjpuZXcgR0EoWzBdLFtmdW5jdGlvbihhLGIpe18udGgoYSw2OCxiKX1dKSx2ZjpuZXcgR0EoWzRdLApbZnVuY3Rpb24oYSxiKXtfLmZoKGEsMTAyLGIpfV0pLHZsOm5ldyBHQShbMF0sW2Z1bmN0aW9uKGEsYil7Xy50aChhLDY5LGIpfV0pLHZtOm5ldyBHQShbM10sW2Z1bmN0aW9uKGEsYil7Xy4kaChhLDk4LGIpfV0pLHc6bmV3IEdBKFswXSxbZnVuY3Rpb24oYSxiKXtfLkVBKGEsYil9XSkseDpuZXcgR0EoWzBdLFtmdW5jdGlvbihhLGIpe18ubGsoYSw5LGIpfV0pLHk6bmV3IEdBKFswXSxbZnVuY3Rpb24oYSxiKXtfLmxrKGEsMTAsYil9XSkseWE6bmV3IEdBKFsyXSxbZnVuY3Rpb24oYSxiKXtfLndoKGEsNzcsYil9XSksejpuZXcgR0EoWzBdLFtmdW5jdGlvbihhLGIpe18ubGsoYSwxMSxiKX1dKX07Cl8uRXhjLnByb3RvdHlwZS5wYXJzZT1mdW5jdGlvbihhKXt2YXIgYj1uZXcgXy5GQSxjPW5ldyBfLkZBO2lmKGE9PSIiKWE9ITA7ZWxzZXthPWEuc3BsaXQoIi0iKTtmb3IodmFyIGQ9ITAsZT0wO2U8YS5sZW5ndGg7ZSsrKXt2YXIgZj1hW2VdO2lmKGYubGVuZ3RoPT0wKWQ9ITE7ZWxzZXt2YXIgZz1mLGg9ITEsaz1nO3ZhciBtPWcuY2hhckF0KDApO3ZhciBuPW0udG9Mb3dlckNhc2UoKTttIT1uJiYoaD0hMCxrPWcuY2hhckF0KDApLnRvTG93ZXJDYXNlKCkrZy5zdWJzdHJpbmcoMSkpO249Q3hjO2ZvcihtPTE7bTw9ay5sZW5ndGg7KyttKXt2YXIgcD1uLHI9ay5zdWJzdHJpbmcoMCxtKTtpZihyLmxlbmd0aD09MD9wLmlzRW1wdHkoKTohXy50eGMocCxyKSlicmVha31tPW09PTE/bnVsbDooaz1uLmdldChrLnN1YnN0cmluZygwLG0tMSkpKT97b3B0aW9uOmcuc3Vic3RyaW5nKDAsbS0xKSx2YWx1ZTpnLnN1YnN0cmluZyhtLTEpLHpPYzpoLGF0dHJpYnV0ZXM6a306bnVsbDtpZihtKXtnPQpbXTtoPVtdO2s9ITE7Zm9yKG49MDtuPG0uYXR0cmlidXRlcy50eXBlcy5sZW5ndGg7bisrKXtwPW0uYXR0cmlidXRlcy50eXBlc1tuXTt2YXIgeD1tLnZhbHVlO3I9ZTtpZihtLnpPYyYmcD09MSlmb3IodmFyIHo9eC5sZW5ndGg7ejwxMiYmcjxhLmxlbmd0aC0xOyl4Kz0iLSIrYVtyKzFdLHo9eC5sZW5ndGgsKytyO2Vsc2UgaWYocD09Milmb3IoO3I8YS5sZW5ndGgtMSYmYVtyKzFdLm1hdGNoKC9eW1xkXC5dLyk7KXgrPSItIithW3IrMV0sKytyO3o9bS5hdHRyaWJ1dGVzLmthW25dO3g9RnhjKHRoaXMscCkobS5vcHRpb24seCxiLGMseik7aWYoeD09PW51bGwpe2s9ITA7ZT1yO2JyZWFrfWVsc2UgZy5wdXNoKHApLGgucHVzaCh4KX1pZighaylmb3IobT0wO208aC5sZW5ndGg7bSsrKW49Z1ttXSx4PWhbbV0sR3hjKHRoaXMsbikoZix4KTtkPWQmJmt9ZWxzZSBkPSExfX1hPWR9cmV0dXJuIG5ldyBIeGMoYixjLGEpfTsKdmFyIEl4Yz1mdW5jdGlvbihhLGIsYyxkLGUsZil7ZShjLGIpO2E9YS5jaGFyQXQoMCk7Zj1mKGE9PWEudG9VcHBlckNhc2UoKSk7ZShkLGYpfTtfLmFhPV8uRXhjLnByb3RvdHlwZTtfLmFhLkFJYz1mdW5jdGlvbihhLGIsYyxkLGUpe2lmKGI9PSIiKXJldHVybiAwO2I9Xy5kRmEoYik7aWYoaXNOYU4oYikpcmV0dXJuIDE7SXhjKGEsYixjLGQsZSxOdW1iZXIpO3JldHVybiBudWxsfTtfLmFhLmVFYz1mdW5jdGlvbigpe307Xy5hYS56SWM9ZnVuY3Rpb24oYSxiLGMsZCxlKXtpZihiPT0iIilyZXR1cm4gMDtiPV8uZm0oYik7aWYoaXNOYU4oYikpcmV0dXJuIDE7SXhjKGEsYixjLGQsZSxOdW1iZXIpO3JldHVybiBudWxsfTtfLmFhLmRFYz1mdW5jdGlvbigpe307Xy5hYS55SWM9ZnVuY3Rpb24oYSxiLGMsZCxlKXtpZihiIT0iIilyZXR1cm4gMjtJeGMoYSwhMCxjLGQsZSxCb29sZWFuKTtyZXR1cm4gbnVsbH07Xy5hYS5iRWM9ZnVuY3Rpb24oKXt9OwpfLmFhLkJJYz1mdW5jdGlvbihhLGIsYyxkLGUpe2lmKGI9PSIiKXJldHVybiAwO0l4YyhhLGIsYyxkLGUsZj0+Zj8iMSI6IiIpO3JldHVybiBudWxsfTtfLmFhLmlFYz1mdW5jdGlvbigpe307Xy5hYS5DSWM9ZnVuY3Rpb24oYSxiLGMsZCxlKXtpZihiPT0iIilyZXR1cm4gMDtJeGMoYSxiLGMsZCxlLGY9PmY/MTowKTtyZXR1cm4gbnVsbH07CnZhciBGeGM9ZnVuY3Rpb24oYSxiKXtzd2l0Y2goYil7Y2FzZSAwOnJldHVybigwLF8uaWUpKGEuQUljLGEpO2Nhc2UgMjpyZXR1cm4oMCxfLmllKShhLnpJYyxhKTtjYXNlIDM6cmV0dXJuKDAsXy5pZSkoYS55SWMsYSk7Y2FzZSA0OnJldHVybigwLF8uaWUpKGEuQkljLGEpO2Nhc2UgMTpyZXR1cm4oMCxfLmllKShhLkNJYyxhKTtkZWZhdWx0OnJldHVybiBmdW5jdGlvbigpe319fSxHeGM9ZnVuY3Rpb24oYSxiKXtzd2l0Y2goYil7Y2FzZSAwOnJldHVybigwLF8uaWUpKGEuZUVjLGEpO2Nhc2UgMjpyZXR1cm4oMCxfLmllKShhLmRFYyxhKTtjYXNlIDM6cmV0dXJuKDAsXy5pZSkoYS5iRWMsYSk7Y2FzZSA0OmNhc2UgMTpyZXR1cm4oMCxfLmllKShhLmlFYyxhKTtkZWZhdWx0OnJldHVybiBmdW5jdGlvbigpe319fSxIeGM9ZnVuY3Rpb24oYSxiLGMpe3RoaXMua2E9YTt0aGlzLm9hPWI7dGhpcy53YT1jfTtIeGMucHJvdG90eXBlLmlzVmFsaWQ9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy53YX07dmFyIEp4Yz0vXlteXC9dKlwvXC8vLEt4Yz1mdW5jdGlvbihhLGI9ITEpe3RoaXMub2E9YTt0aGlzLkFhPSIiOyhhPXRoaXMub2EubWF0Y2goSnhjKSkmJmFbMF0/KHRoaXMuQWE9YVswXSxhPXRoaXMuQWEubWF0Y2goL1x3Ky8pP3RoaXMub2E6Imh0dHA6Ly8iK3RoaXMub2Euc3Vic3RyaW5nKHRoaXMuQWEubGVuZ3RoKSk6YT0iaHR0cDovLyIrdGhpcy5vYTt0aGlzLkJhPV8uT2goYSwhMCk7dGhpcy5QYT1iO3RoaXMuRWE9ITA7dGhpcy5aYT0hMX0sTHhjPWZ1bmN0aW9uKGEsYil7YS53YT1hLndhP2Eud2ErKCIvIitiKTpifSxNeGM9ZnVuY3Rpb24oYSl7aWYoYS5rYT09dm9pZCAwKXt2YXIgYj1hLkJhLmdldFBhdGgoKS5zdWJzdHJpbmcoMSk7YS53YT1udWxsO2lmKGEuUGEpe2Eua2E9W107aWYoKGIubWF0Y2goLz0vZyl8fFtdKS5sZW5ndGg+MSlyZXR1cm4gYS5FYT0hMSxhLmthO3ZhciBjPWIuaW5kZXhPZigiPSIpO2MhPS0xPyhhLmthLnB1c2goYi5zdWJzdHIoMCxjKSksYS5rYS5wdXNoKGIuc3Vic3RyKGMrCjEpKSk6YS5rYS5wdXNoKGIpO3JldHVybiBhLmthfWEua2E9Yi5zcGxpdCgiLyIpO2I9YS5rYS5sZW5ndGg7Yj4yJiZhLmthWzBdPT0idSImJihMeGMoYSxhLmthWzBdKyIvIithLmthWzFdKSxhLmthLnNoaWZ0KCksYS5rYS5zaGlmdCgpLGItPTIpO2lmKGI9PTB8fGI9PTR8fGI+NylyZXR1cm4gYS5FYT0hMSxhLmthO2lmKGI9PTIpTHhjKGEsYS5rYVswXSk7ZWxzZSBpZihhLmthWzBdPT0iaW1hZ2UiKUx4YyhhLGEua2FbMF0pO2Vsc2UgaWYoYj09N3x8Yj09MylyZXR1cm4gYS5FYT0hMSxhLmthO2lmKGI8PTMpe2EuWmE9ITA7Yj09MyYmKEx4YyhhLGEua2FbMV0pLGEua2Euc2hpZnQoKSwtLWIpOy0tYjtjPWEua2FbYl07bGV0IGQ9Yy5pbmRleE9mKCI9Iik7ZCE9LTEmJihhLmthW2JdPWMuc3Vic3RyKDAsZCksYS5rYS5wdXNoKGMuc3Vic3RyKGQrMSkpKX19cmV0dXJuIGEua2F9LFJ4YztLeGMucHJvdG90eXBlLmlzVmFsaWQ9ZnVuY3Rpb24oKXtNeGModGhpcyk7cmV0dXJuIHRoaXMuRWF9OwpfLk54Yz1mdW5jdGlvbihhKXtNeGMoYSk7cmV0dXJuIGEuWmF9O18uT3hjPWZ1bmN0aW9uKGEpe014YyhhKTtyZXR1cm4gYS5QYX07S3hjLnByb3RvdHlwZS5Bbz1mdW5jdGlvbigpe3ZhciBhPXRoaXMuQmEuQWE7cmV0dXJuIHRoaXMuQmEuQW8oKSsoYT8iOiIrYToiIil9O0t4Yy5wcm90b3R5cGUuZ2V0UXVlcnk9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5CYS5vYS50b1N0cmluZygpfTtfLlB4Yz1mdW5jdGlvbihhKXtNeGMoYSk7YS53YT09dm9pZCAwJiYoYS53YT1udWxsKTtyZXR1cm4gYS53YX07Xy5ReGM9ZnVuY3Rpb24oYSl7c3dpdGNoKE14YyhhKS5sZW5ndGgpe2Nhc2UgNzpyZXR1cm4hMDtjYXNlIDY6cmV0dXJuIF8uUHhjKGEpPT1udWxsO2Nhc2UgNTpyZXR1cm4hMTtjYXNlIDM6cmV0dXJuITA7Y2FzZSAyOnJldHVybiBfLlB4YyhhKT09bnVsbDtjYXNlIDE6cmV0dXJuITE7ZGVmYXVsdDpyZXR1cm4hMX19OwpSeGM9ZnVuY3Rpb24oYSxiKXtpZihfLk94YyhhKSlhOntzd2l0Y2goYil7Y2FzZSA3OmI9MDticmVhaztjYXNlIDQ6aWYoIV8uUXhjKGEpKXthPW51bGw7YnJlYWsgYX1iPTE7YnJlYWs7ZGVmYXVsdDphPW51bGw7YnJlYWsgYX1hPU14YyhhKVtiXX1lbHNlIGlmKF8uTnhjKGEpKWE6e3ZhciBjPV8uUHhjKGEpIT1udWxsPzE6MDtzd2l0Y2goYil7Y2FzZSA2OmI9YzticmVhaztjYXNlIDQ6aWYoIV8uUXhjKGEpKXthPW51bGw7YnJlYWsgYX1iPTErYzticmVhaztkZWZhdWx0OmE9bnVsbDticmVhayBhfWE9TXhjKGEpW2JdfWVsc2UgYTp7Yz1fLlB4YyhhKSE9bnVsbD8xOjA7c3dpdGNoKGIpe2Nhc2UgMDpiPWM7YnJlYWs7Y2FzZSAxOmI9MStjO2JyZWFrO2Nhc2UgMjpiPTIrYzticmVhaztjYXNlIDM6Yj0zK2M7YnJlYWs7Y2FzZSA0OmlmKCFfLlF4YyhhKSl7YT1udWxsO2JyZWFrIGF9Yj00K2M7YnJlYWs7Y2FzZSA1OmI9Xy5ReGMoYSk/MTowO2I9NCtjK2I7YnJlYWs7ZGVmYXVsdDphPQpudWxsO2JyZWFrIGF9YT1NeGMoYSlbYl19cmV0dXJuIGF9O18uU3hjPWZ1bmN0aW9uKGEpe2EuUmE9PXZvaWQgMCYmKGEuUmE9UnhjKGEsNikpO3JldHVybiBhLlJhfTtfLlR4Yz1mdW5jdGlvbihhKXthLlNhPT12b2lkIDAmJihhLlNhPVJ4YyhhLDApKTtyZXR1cm4gYS5TYX07Xy5VeGM9ZnVuY3Rpb24oYSl7YS5uYj09dm9pZCAwJiYoYS5uYj1SeGMoYSwxKSk7cmV0dXJuIGEubmJ9O18uVnhjPWZ1bmN0aW9uKGEpe2EuT2E9PXZvaWQgMCYmKGEuT2E9UnhjKGEsMikpO3JldHVybiBhLk9hfTtfLld4Yz1mdW5jdGlvbihhKXthLnJiPT12b2lkIDAmJihhLnJiPVJ4YyhhLDMpKTtyZXR1cm4gYS5yYn07S3hjLnByb3RvdHlwZS5nZXRPcHRpb25zPWZ1bmN0aW9uKCl7dGhpcy5HYT09dm9pZCAwJiYodGhpcy5HYT1SeGModGhpcyw0KSk7cmV0dXJuIHRoaXMuR2F9O18uWHhjPWZ1bmN0aW9uKGEpe2EuS2E9PXZvaWQgMCYmKGEuS2E9UnhjKGEsNSkpO3JldHVybiBhLkthfTsKXy5ZeGM9ZnVuY3Rpb24oYSl7YS5OYT09PXZvaWQgMCYmKGEuTmE9UnhjKGEsNykpO3JldHVybiBhLk5hfTtfLiR4Yz1jbGFzc3twYXJzZShhLGI9ITEpe3JldHVybiBuZXcgXy5aeGMoYSxiKX19O18uYXljPWZ1bmN0aW9uKGEpe2lmKGEuSWE9PXZvaWQgMCl7bGV0IGI9YS5nZXRPcHRpb25zKCk7Ynx8KGI9IiIpO2EuSWE9KG5ldyBfLkV4YykucGFyc2UoYil9cmV0dXJuIGEuSWF9O18uWnhjPWNsYXNzIGV4dGVuZHMgS3hje2NvbnN0cnVjdG9yKGEsYj0hMSl7c3VwZXIoYSxiKX19O18uYnljPWZ1bmN0aW9uKGEsYil7YS5rYT17c2l6ZTpfLmRrKGIsMSksd2lkdGg6Xy5kayhiLDEyKSxoZWlnaHQ6Xy5kayhiLDEzKSxxODpfLkEoYiwyKSxkNGE6Xy5BKGIsMjApLHBhZDpfLmNrKGIsNjApLGV4cGlyYXRpb25UaW1lOl8uZGsoYiwxNSksWjhhOl8uZ2goYiwxNiksWkFiOl8uQShiLDEwMyksZEJiOl8uQShiLDM1KSxlQmI6Xy5BKGIsNDEpLFlBYjpfLkEoYiw2NCksYkJiOl8uY2soYiw1NyksY0JiOl8uY2soYiw1OCksSXZiOl8uY2soYiwxNyksenRiOl8uZGkoYiw1NCksVFhhOl8uZGsoYiw4OCksVXNiOl8uY2soYiwzMCksYUhiOl8uY2soYiwzMSksb2xiOl8uY2soYiw1MSksRURiOl8uQShiLDE5KSxjbmI6Xy5jayhiLDgwKSxXWWE6Xy5kayhiLDQ0KSxWWWE6Xy5kayhiLDYyKSxib3JkZXJDb2xvcjpfLmRrKGIsMzkpLEdRYTpfLmdoKGIsOTkpLEtwYjpfLmNrKGIsODQpLGE5YTpfLlZsYShfLkpqKGIsNzUpKSxmR2I6Xy5kaShiLDE4KSxqeWI6Xy5kaShiLDM3KSxseWI6Xy5kaShiLAo0NiksT3diOl8uZGkoYiw5NyksYmFkZ2U6Xy5kayhiLDg1KSxib3JkZXJSYWRpdXM6Xy5kayhiLDg2KSxMeGI6Xy5jayhiLDczKX19OwpfLmN5Yz1jbGFzc3tjb25zdHJ1Y3RvcihhKXt0aGlzLm9hPW5ldyBLeGMoYSwhMSk7dGhpcy5rYT17fX1XcGEoYSl7dmFyIGIsYyxkLGUsZixnO3RoaXMua2E9e3NpemU6Xy5kayhhLDEpIT09dm9pZCAwP18uZGsoYSwxKTp0aGlzLmthLnNpemUsd2lkdGg6Xy5kayhhLDEyKSE9PXZvaWQgMD9fLmRrKGEsMTIpOnRoaXMua2Eud2lkdGgsaGVpZ2h0Ol8uZGsoYSwxMykhPT12b2lkIDA/Xy5kayhhLDEzKTp0aGlzLmthLmhlaWdodCxxODpfLkEoYSwyKXx8dGhpcy5rYS5xOCxkNGE6Xy5BKGEsMjApfHx0aGlzLmthLmQ0YSxwYWQ6Xy5jayhhLDYwKXx8dGhpcy5rYS5wYWQsZXhwaXJhdGlvblRpbWU6Xy5kayhhLDE1KSE9PXZvaWQgMD9fLmRrKGEsMTUpOnRoaXMua2EuZXhwaXJhdGlvblRpbWUsWjhhOl8uZ2goYSwxNikhPT12b2lkIDA/Xy5naChhLDE2KTp0aGlzLmthLlo4YSxaQWI6Xy5BKGEsMTAzKXx8dGhpcy5rYS5aQWIsZEJiOl8uQShhLDM1KXx8dGhpcy5rYS5kQmIsZUJiOl8uQShhLAo0MSl8fHRoaXMua2EuZUJiLFlBYjpfLkEoYSw2NCl8fHRoaXMua2EuWUFiLGJCYjpfLmNrKGEsNTcpfHx0aGlzLmthLmJCYixjQmI6Xy5jayhhLDU4KXx8dGhpcy5rYS5jQmIsSXZiOl8uY2soYSwxNyl8fHRoaXMua2EuSXZiLHp0YjooYj1fLmRpKGEsNTQpKSE9bnVsbD9iOnRoaXMua2EuenRiLFRYYTpfLmRrKGEsODgpIT09dm9pZCAwP18uZGsoYSw4OCk6dGhpcy5rYS5UWGEsVXNiOl8uY2soYSwzMCl8fHRoaXMua2EuVXNiLGFIYjpfLmNrKGEsMzEpfHx0aGlzLmthLmFIYixvbGI6Xy5jayhhLDUxKXx8dGhpcy5rYS5vbGIsRURiOl8uQShhLDE5KXx8dGhpcy5rYS5FRGIsY25iOl8uY2soYSw4MCl8fHRoaXMua2EuY25iLFdZYTpfLmRrKGEsNDQpIT09dm9pZCAwP18uZGsoYSw0NCk6dGhpcy5rYS5XWWEsVllhOl8uZGsoYSw2MikhPT12b2lkIDA/Xy5kayhhLDYyKTp0aGlzLmthLlZZYSxib3JkZXJDb2xvcjpfLmRrKGEsMzkpIT09dm9pZCAwP18uZGsoYSwzOSk6dGhpcy5rYS5ib3JkZXJDb2xvciwKYm9yZGVyUmFkaXVzOl8uZGsoYSw4NikhPT12b2lkIDA/Xy5kayhhLDg2KTp0aGlzLmthLmJvcmRlclJhZGl1cyxHUWE6Xy5naChhLDk5KSE9PXZvaWQgMD9fLmdoKGEsOTkpOnRoaXMua2EuR1FhLEx4YjpfLmNrKGEsNzMpfHx0aGlzLmthLkx4YixLcGI6Xy5jayhhLDg0KXx8dGhpcy5rYS5LcGIsYTlhOihjPV8uVmxhKF8uSmooYSw3NSkpKSE9bnVsbD9jOnRoaXMua2EuYTlhLGZHYjooZD1fLmRpKGEsMTgpKSE9bnVsbD9kOnRoaXMua2EuZkdiLGp5YjooZT1fLmRpKGEsMzcpKSE9bnVsbD9lOnRoaXMua2EuanliLGx5YjooZj1fLmRpKGEsNDYpKSE9bnVsbD9mOnRoaXMua2EubHliLE93YjooZz1fLmRpKGEsOTcpKSE9bnVsbD9nOnRoaXMua2EuT3diLGJhZGdlOl8uZGsoYSw4NSkhPT12b2lkIDA/Xy5kayhhLDg1KTp0aGlzLmthLmJhZGdlfX1zZXRTaXplKGEpe3RoaXMua2Euc2l6ZT1hfXNldEhlaWdodChhKXt0aGlzLmthLmhlaWdodD1hfXNldENlbnRlckNyb3AoKXt0aGlzLmthLmQ0YT0KITB9YnVpbGQoKXtpZighdGhpcy5vYS5pc1ZhbGlkKCkpcmV0dXJuIHRoaXMub2Eub2E7dmFyIGE9W107Xy5QeGModGhpcy5vYSkhPW51bGwmJmEucHVzaChfLlB4Yyh0aGlzLm9hKSk7dmFyIGI9W107dGhpcy5rYS5zaXplJiZiLnB1c2goInMiK3RoaXMua2Euc2l6ZS50b1N0cmluZygpKTt0aGlzLmthLndpZHRoJiZiLnB1c2goInciK3RoaXMua2Eud2lkdGgudG9TdHJpbmcoKSk7dGhpcy5rYS5oZWlnaHQmJmIucHVzaCgiaCIrdGhpcy5rYS5oZWlnaHQudG9TdHJpbmcoKSk7dGhpcy5rYS5xOCYmYi5wdXNoKCJjIik7dGhpcy5rYS5kNGEmJmIucHVzaCgibiIpO3RoaXMua2EucGFkJiZiLnB1c2goInBkIik7dGhpcy5rYS5leHBpcmF0aW9uVGltZSE9PXZvaWQgMCYmdGhpcy5rYS5leHBpcmF0aW9uVGltZSE9PW51bGwmJmIucHVzaCgiZSIrdGhpcy5rYS5leHBpcmF0aW9uVGltZS50b1N0cmluZygpKTt0aGlzLmthLlo4YSYmYi5wdXNoKCJmIit0aGlzLmthLlo4YSk7dGhpcy5rYS5aQWImJgpiLnB1c2goInJhIik7dGhpcy5rYS5kQmImJmIucHVzaCgicnciKTt0aGlzLmthLmVCYiYmYi5wdXNoKCJyd3UiKTt0aGlzLmthLllBYiYmYi5wdXNoKCJyd2EiKTt0aGlzLmthLmJCYiYmYi5wdXNoKCJyaiIpO3RoaXMua2EuY0JiJiZiLnB1c2goInJwIik7dGhpcy5rYS5JdmImJmIucHVzaCgiayIpO3RoaXMua2EuenRiJiZiLnB1c2goImlwIik7dGhpcy5rYS5UWGEhPT12b2lkIDAmJnRoaXMua2EuVFhhIT09bnVsbCYmYi5wdXNoKCJwYzB4Iit0aGlzLmthLlRYYS50b1N0cmluZygxNikpO3RoaXMua2EuVXNiJiZiLnB1c2goImZoIik7dGhpcy5rYS5hSGImJmIucHVzaCgiZnYiKTt0aGlzLmthLm9sYiYmYi5wdXNoKCJjYyIpO3RoaXMua2EuRURiJiZiLnB1c2goInAiKTt0aGlzLmthLmNuYiYmYi5wdXNoKCJkZiIpO3RoaXMua2EuV1lhIT09dm9pZCAwJiZ0aGlzLmthLldZYSE9PW51bGwmJmIucHVzaCgibCIrdGhpcy5rYS5XWWEudG9TdHJpbmcoKSk7dGhpcy5rYS5WWWEhPT12b2lkIDAmJgp0aGlzLmthLlZZYSE9PW51bGwmJmIucHVzaCgidiIrdGhpcy5rYS5WWWEudG9TdHJpbmcoKSk7dGhpcy5rYS5seWImJmIucHVzaCgibnUiKTt0aGlzLmthLmJvcmRlckNvbG9yIT09dm9pZCAwJiZ0aGlzLmthLmJvcmRlckNvbG9yIT09bnVsbCYmYi5wdXNoKCJjMHgiK3RoaXMua2EuYm9yZGVyQ29sb3IudG9TdHJpbmcoMTYpKTt0aGlzLmthLmJvcmRlclJhZGl1cyE9PXZvaWQgMCYmdGhpcy5rYS5ib3JkZXJSYWRpdXMhPT1udWxsJiZiLnB1c2goImJyIit0aGlzLmthLmJvcmRlclJhZGl1cy50b1N0cmluZygpKTt0aGlzLmthLkdRYSE9PXZvaWQgMCYmdGhpcy5rYS5HUWEhPT1udWxsJiZiLnB1c2goImRjIitfLlBhKHRoaXMua2EuR1FhLDQpLnJlcGxhY2VBbGwoIi0iLCJ+IikpO3RoaXMua2EuTHhiJiZiLnB1c2goIm1vIik7dGhpcy5rYS5LcGImJmIucHVzaCgiZm0iKTt0aGlzLmthLmE5YSYmYi5wdXNoKCJpdiIrdGhpcy5rYS5hOWEudG9TdHJpbmcoKSk7dGhpcy5rYS5mR2ImJmIucHVzaCgiVSIpOwp0aGlzLmthLmp5YiYmYi5wdXNoKCJubyIpO3RoaXMua2EuT3diJiZiLnB1c2goImxvIik7dGhpcy5rYS5iYWRnZSE9PXZvaWQgMCYmdGhpcy5rYS5iYWRnZSE9PW51bGwmJmIucHVzaCgiYmEiK3RoaXMua2EuYmFkZ2UudG9TdHJpbmcoKSk7dmFyIGM9Yi5qb2luKCItIik7Yj1fLk94Yyh0aGlzLm9hKTtfLk54Yyh0aGlzLm9hKT8oYz1fLlN4Yyh0aGlzLm9hKSsoYz8iPSIrYzoiIiksYS5wdXNoKGMpKTpiPyhhLnB1c2goXy5ZeGModGhpcy5vYSkpLGMmJmEucHVzaChjKSk6KGEucHVzaChfLlR4Yyh0aGlzLm9hKSksYS5wdXNoKF8uVXhjKHRoaXMub2EpKSxhLnB1c2goXy5WeGModGhpcy5vYSkpLGEucHVzaChfLld4Yyh0aGlzLm9hKSksYyYmYS5wdXNoKGMpLGEucHVzaChfLlh4Yyh0aGlzLm9hKSkpO2E9Yj9hLmpvaW4oIj0iKTphLmpvaW4oIi8iKTtiPXRoaXMub2EuZ2V0UXVlcnkoKTthPXRoaXMub2EuQWErdGhpcy5vYS5BbygpKyIvIithKyhiPyI/IitiOiIiKTthPV8uT2goYSkudG9TdHJpbmcoKTsKYS5zdGFydHNXaXRoKCIlM2EvLyIpJiYoYT1hLnJlcGxhY2UoIiUzYS8vIiwiOi8vIikpO3JldHVybiBhfX07Cn1jYXRjaChlKXtfLl9EdW1wRXhjZXB0aW9uKGUpfQp0cnl7Cl8uR3I9ZnVuY3Rpb24oYSxiKXthIT1udWxsJiZ0aGlzLmFwcGVuZC5hcHBseSh0aGlzLGFyZ3VtZW50cyl9O18uYWE9Xy5Hci5wcm90b3R5cGU7Xy5hYS5YbGE9IiI7Xy5hYS5zZXQ9ZnVuY3Rpb24oYSl7dGhpcy5YbGE9IiIrYX07Xy5hYS5hcHBlbmQ9ZnVuY3Rpb24oYSxiLGMpe3RoaXMuWGxhKz1TdHJpbmcoYSk7aWYoYiE9bnVsbClmb3IobGV0IGQ9MTtkPGFyZ3VtZW50cy5sZW5ndGg7ZCsrKXRoaXMuWGxhKz1hcmd1bWVudHNbZF07cmV0dXJuIHRoaXN9O18uYWEuY2xlYXI9ZnVuY3Rpb24oKXt0aGlzLlhsYT0iIn07Xy5hYS5nZXRMZW5ndGg9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5YbGEubGVuZ3RofTtfLmFhLnRvU3RyaW5nPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuWGxhfTsKfWNhdGNoKGUpe18uX0R1bXBFeGNlcHRpb24oZSl9CnRyeXsKdmFyIElBLGZ5YyxneWMsaHljLGl5YztJQT1mdW5jdGlvbihhKXtIQS5jYWxsKHRoaXMsYSl9O18uZXljPWZ1bmN0aW9uKGEsYj0hMSl7dGhpcy5rYT1udWxsO2EgaW5zdGFuY2VvZiBfLlp4Y3x8KGR5Yz09dm9pZCAwJiYoZHljPW5ldyBfLiR4YyksYT1keWMucGFyc2UoYS50b1N0cmluZygpLGIpKTt0aGlzLmthPWE7YT1fLmF5Yyh0aGlzLmthKTtIQS5jYWxsKHRoaXMsYSk7dGhpcy5FYT10aGlzLmthLkFhO3RoaXMuQmE9dGhpcy5rYS5BbygpO3RoaXMuQWE9dGhpcy5rYS5nZXRRdWVyeSgpfTsKZnljPVJlZ0V4cCgiXigoaHR0cChzKT8pOik/XFwvXFwvKCgoKGxoWzMtNl0oLXR0fC1kW2EtZyx5LHpdfC10ZXN0b25seSk/XFwuKChnZ3BodCl8KGdvb2dsZXVzZXJjb250ZW50KXwoZ29vZ2xlKXwoc2FuZGJveFxcLmdvb2dsZSkpKXwobGg3XFwtKGV1fHVzfHF3fHJ0fHh4KVxcLigoZ29vZ2xldXNlcmNvbnRlbnQpfChnb29nbGUpKSl8KChwaG90b3N8dGVzdG9ubHl8d29yaylcXC5maWZlXFwudXNlcmNvbnRlbnRcXC5nb29nbGUpfChbXFx3XFwtXStcXC5maWZlXFwudXNlcmNvbnRlbnRcXC5nb29nbGUpfCgoWzEtNF1cXC5icFxcLmJsb2dzcG90KXwoYnBbMC0zXVxcLmJsb2dnZXIpKXwoY2NwLWxoXFwuZ29vZ2xldXNlcmNvbnRlbnQpfCgoKChjcHxjaXxncClbMy02XSl8KGFwWzEtMl0pKVxcLihnZ3BodHxnb29nbGV1c2VyY29udGVudCkpfChnbVsxLTRdXFwuZ2dwaHQpfChwbGF5LSh0aS0pP2xoXFwuZ29vZ2xldXNlcmNvbnRlbnQpfChnelswLTFdXFwuZ29vZ2xldXNlcmNvbnRlbnQpfChsaDNcXC1nbVxcLmdvb2dsZSl8KCgoeXRbMy00XSl8KHNwWzEtM10pKVxcLihnZ3BodHxnb29nbGV1c2VyY29udGVudCkpKVxcLmNvbSl8KGRyaXZlXFwuZ29vZ2xlXFwuY29tXFwvZHJpdmVcXC0odXNlcmNvbnRlbnR8dmlld2VyKSl8KGRwWzMtNl1cXC5nb29nbGV1c2VyY29udGVudFxcLmNuKXwobGhbMy02XVxcLihnb29nbGVhZHNzZXJ2aW5nXFwuY258eG4tLTlrcjdsXFwuY29tKSl8KChwaG90b3N8ZHJpdmV8Y29udHJpYnV0aW9uKVxcLWltYWdlXFwtKGRldnxxYSkoLXVzfC1ldSk/KC1hdXRofC1jb29raWUpP1xcLmNvcnBcXC5nb29nbGVcXC5jb20pfChwaG90b3NcXC1pbWFnZVxcLWRldlxcLWRsXFwtKGF1dGh8ZXV8dXMpXFwuY29ycFxcLmdvb2dsZVxcLmNvbSl8KChkZXZ8ZGV2MnxkZXYzfHFhfHFhMnxxYTN8cWEtcmVkfHFhLWJsdWV8Y2FuYXJ5KVstLl1saWdodGhvdXNlXFwuc2FuZGJveFxcLmdvb2dsZVxcLmNvbVxcL2ltYWdlKXwoaW1hZ2VcXC0oZGV2fHFhKVxcLWxpZ2h0aG91c2UoLWF1dGgpP1xcLnNhbmRib3hcXC5nb29nbGVcXC5jb20oXFwvaW1hZ2UpPyl8KGRyaXZlXFwtcWFcXC5jb3JwXFwuZ29vZ2xlXFwuY29tXFwvZHJpdmVcXC0odXNlcmNvbnRlbnR8dmlld2VyKSl8KGRvY3MoXFwtKGRldnxxYSlcXC5jb3JwKT9cXC5nb29nbGVcXC5jb21cXC8odVxcL1swLTldK1xcLyk/KGRvY3N8c2hlZXRzfHNsaWRlc3xkcmF3aW5nc3xmb3Jtc3x2aWRlb3N8cGljdHVyZXMpXFwtaW1hZ2VzXFwtKHJ0fHF3fHh4KSl8KGRvY3NcXC5zYW5kYm94XFwuZ29vZ2xlXFwuY29tXFwvKHVcXC9bMC05XStcXC8pPyhkb2NzfHNoZWV0c3xzbGlkZXN8ZHJhd2luZ3N8Zm9ybXN8dmlkZW9zfHBpY3R1cmVzKVxcLWltYWdlcyl8KHNpdGVzXFwuZ29vZ2xlXFwuY29tXFwvKHVcXC9bMC05XStcXC8pP3NpdGVzKHYpP1xcLWltYWdlc1xcLShydHxxdykpfChhdGFyaS1ncmVlbi10ZXN0XFwuY29ycFxcLmdvb2dsZVxcLmNvbVxcLyh1XFwvWzAtOV0rXFwvKT9zaXRlcyh2KT9cXC1pbWFnZXNcXC0ocnR8cXcpKXwoc2l0ZXNcXC5zYW5kYm94XFwuZ29vZ2xlXFwuY29tXFwvKHVcXC9bMC05XStcXC8pP3NpdGVzKHYpP1xcLWltYWdlcykpXFwvIiwiaSIpOwpneWM9L14oaHR0cHM/Oik/XC9cL3NwWzEtNF1cLigoZ2dwaHQpfChnb29nbGV1c2VyY29udGVudCkpXC5jb21cLy9pO2h5Yz0vXihodHRwcz86KT9cL1wvKHFhKC1yZWR8LWJsdWUpP3xkZXYyP3xpbWFnZS1kZXYpKC18XC4pbGlnaHRob3VzZSgtYXV0aCk/XC5zYW5kYm94XC5nb29nbGVcLmNvbVwvL2k7aXljPS9eKGh0dHBzPzopP1wvXC9saWdodGhvdXNlLShxYSgtcmVkfC1ibHVlKT98ZGV2MilcLmNvcnBcLmdvb2dsZVwuY29tXC8vaTtfLmp5Yz1mdW5jdGlvbihhKXtyZXR1cm4gZnljLnRlc3QoYSl8fGd5Yy50ZXN0KGEpfHxoeWMudGVzdChhKXx8aXljLnRlc3QoYSl9O3ZhciBIQSxreWMsbXljLGx5YztIQT1mdW5jdGlvbihhKXt0aGlzLndhPW51bGw7dGhpcy5vYT1bXTt0aGlzLmZ6PW51bGw7dGhpcy5XaT1reWM7bHljKHRoaXMsYSl9O2t5Yz1udWxsO215Yz1mdW5jdGlvbihhKXthLndhPT1udWxsJiYoYS53YT1uZXcgXy5FeGMpO3JldHVybiBhLndhfTtseWM9ZnVuY3Rpb24oYSxiKXthLmZ6PWI/dHlwZW9mIGI9PT0ic3RyaW5nIj9teWMoYSkucGFyc2UoYik6YjpteWMoYSkucGFyc2UoIiIpfTtfLkpBPWZ1bmN0aW9uKGEsYil7cmV0dXJuIGE9PWI/ITE6ITB9O0hBLnByb3RvdHlwZS5GMmE9ZnVuY3Rpb24oYSl7YT1hfHx2b2lkIDA7dmFyIGI9dGhpcy5meixjPWIua2E7Xy5KQShhLF8uQShjLDIpLF8uQShiLm9hLDIpKSYmXy4kaChjLDIsYSk7cmV0dXJuIHRoaXN9OwpIQS5wcm90b3R5cGUuRTJhPWZ1bmN0aW9uKGEpe2E9YXx8dm9pZCAwO3ZhciBiPXRoaXMuZnosYz1iLmthO18uSkEoYSxfLmNrKGMsNTEpLF8uY2soYi5vYSw1MSkpJiZfLiRoKGMsNTEsYSk7cmV0dXJuIHRoaXN9O0hBLnByb3RvdHlwZS5xaGI9ZnVuY3Rpb24oYSl7YT1hfHx2b2lkIDA7dmFyIGI9dGhpcy5meixjPWIua2E7Xy5KQShhLF8uY2soYywzMiksXy5jayhiLm9hLDMyKSkmJl8uJGgoYywzMixhKTtyZXR1cm4gdGhpc307Xy5ueWM9ZnVuY3Rpb24oYSl7dmFyIGI9YS5meixjPWIua2E7Xy5KQSghMCxfLkEoYywzKSxfLkEoYi5vYSwzKSkmJl8uJGgoYywzLCEwKTtyZXR1cm4gYX07SEEucHJvdG90eXBlLnJoYj1mdW5jdGlvbihhKXthPWF8fHZvaWQgMDt2YXIgYj10aGlzLmZ6LGM9Yi5rYTtfLkpBKGEsXy5naChjLDE2KSxfLmdoKGIub2EsMTYpKSYmXy5maChjLDE2LGEpO3JldHVybiB0aGlzfTsKSEEucHJvdG90eXBlLnNldEhlaWdodD1mdW5jdGlvbihhKXt2YXIgYj10aGlzLmZ6LGM9Yi5rYTtfLkpBKGEsYy5nZXRIZWlnaHQoKSxiLm9hLmdldEhlaWdodCgpKSYmYy5zZXRIZWlnaHQoYSk7cmV0dXJuIHRoaXN9O0hBLnByb3RvdHlwZS5zZXRDZW50ZXJDcm9wPWZ1bmN0aW9uKGEpe2E9YXx8dm9pZCAwO3ZhciBiPXRoaXMuZnosYz1iLmthO18uSkEoYSxfLkEoYywyMCksXy5BKGIub2EsMjApKSYmYy5zZXRDZW50ZXJDcm9wKGEpO3JldHVybiB0aGlzfTtfLm95Yz1mdW5jdGlvbihhLGIpe2I9Ynx8dm9pZCAwO3ZhciBjPWEuZnosZD1jLmthO18uSkEoYixfLkEoZCwzNyksXy5BKGMub2EsMzcpKSYmXy5BeGMoZCxiKTtyZXR1cm4gYX07SEEucHJvdG90eXBlLkgyYT1mdW5jdGlvbihhKXthPWF8fHZvaWQgMDt2YXIgYj10aGlzLmZ6LGM9Yi5rYTtfLkpBKGEsXy5BKGMsMTkpLF8uQShiLm9hLDE5KSkmJl8ud3hjKGMsYSk7cmV0dXJuIHRoaXN9OwpIQS5wcm90b3R5cGUuRzJhPWZ1bmN0aW9uKGEpe2E9YXx8dm9pZCAwO3ZhciBiPXRoaXMuZnosYz1iLmthO18uSkEoYSxfLmNrKGMsNjApLF8uY2soYi5vYSw2MCkpJiZfLiRoKGMsNjAsYSk7cmV0dXJuIHRoaXN9O0hBLnByb3RvdHlwZS50aGI9ZnVuY3Rpb24oYSl7YT1hfHx2b2lkIDA7dmFyIGI9dGhpcy5meixjPWIua2E7Xy5KQShhLF8uQShjLDY3KSxfLkEoYi5vYSw2NykpJiZfLiRoKGMsNjcsYSk7cmV0dXJuIHRoaXN9O0hBLnByb3RvdHlwZS5zaGI9ZnVuY3Rpb24oYSl7YT1hfHx2b2lkIDA7dmFyIGI9dGhpcy5meixjPWIua2E7Xy5KQShhLF8uQShjLDUyKSxfLkEoYi5vYSw1MikpJiZfLiRoKGMsNTIsYSk7cmV0dXJuIHRoaXN9O18ucHljPWZ1bmN0aW9uKGEsYil7Yj1ifHx2b2lkIDA7dmFyIGM9YS5meixkPWMua2E7Xy5KQShiLF8uY2soZCw1OCksXy5jayhjLm9hLDU4KSkmJl8uJGgoZCw1OCxiKTtyZXR1cm4gYX07Xy5hYT1IQS5wcm90b3R5cGU7Cl8uYWEuc2V0U2l6ZT1mdW5jdGlvbihhKXt2YXIgYj10aGlzLmZ6LGM9Yi5rYTtfLkpBKGEsYy5nZXRTaXplKCksYi5vYS5nZXRTaXplKCkpJiZjLnNldFNpemUoYSk7cmV0dXJuIHRoaXN9O18uYWEuc2V0VG9rZW49ZnVuY3Rpb24oYSl7YT1hfHx2b2lkIDA7dmFyIGI9dGhpcy5meixjPWIua2E7Xy5KQShhLGMuZ2V0VG9rZW4oKSxiLm9hLmdldFRva2VuKCkpJiZjLnNldFRva2VuKGEpO3JldHVybiB0aGlzfTtfLmFhLlRmYT1mdW5jdGlvbihhKXt2YXIgYj10aGlzLmZ6LGM9Yi5rYTtfLkpBKGEsYy5nZXRXaWR0aCgpLGIub2EuZ2V0V2lkdGgoKSkmJl8uRUEoYyxhKTtyZXR1cm4gdGhpc307Xy5hYS5zZXRPcHRpb25zPWZ1bmN0aW9uKGEpe2x5Yyh0aGlzLGEpO3JldHVybiB0aGlzfTsKXy5hYS5idWlsZD1mdW5jdGlvbigpe3RoaXMub2EubGVuZ3RoPTA7dmFyIGE9dGhpcy5meixiPWEua2E7YT1hLm9hO0tBKHRoaXMsInMiLGIuZ2V0U2l6ZSgpLGEuZ2V0U2l6ZSgpKTtLQSh0aGlzLCJ3IixiLmdldFdpZHRoKCksYS5nZXRXaWR0aCgpKTtMQSh0aGlzLCJjIixfLkEoYiwyKSxfLkEoYSwyKSk7TEEodGhpcywiZCIsXy5BKGIsMyksXy5BKGEsMykpO0tBKHRoaXMsImgiLGIuZ2V0SGVpZ2h0KCksYS5nZXRIZWlnaHQoKSk7TEEodGhpcywicyIsXy5jayhiLDMzKSxfLmNrKGEsMzMpKTtMQSh0aGlzLCJoIixiLmZXKCksYS5mVygpKTtMQSh0aGlzLCJwIixfLkEoYiwxOSksXy5BKGEsMTkpKTtMQSh0aGlzLCJwcCIsXy5BKGIsNTIpLF8uQShhLDUyKSk7TEEodGhpcywicGYiLF8uQShiLDY3KSxfLkEoYSw2NykpO0xBKHRoaXMsIm4iLF8uQShiLDIwKSxfLkEoYSwyMCkpO0tBKHRoaXMsInIiLF8uZGsoYiwyNiksXy5kayhhLDI2KSk7TEEodGhpcywiciIsXy5BKGIsNiksXy5BKGEsCjYpKTtMQSh0aGlzLCJvIixiLlJCKCksYS5SQigpKTt2YXIgYz1fLmdrKGIsNyk7TUEodGhpcywibyIsYyxfLmdrKGEsNykpO2M9Xy5nayhiLDI5KTtNQSh0aGlzLCJqIixjLF8uZ2soYSwyOSkpO0tBKHRoaXMsIngiLF8uZGsoYiw5KSxfLmRrKGEsOSkpO0tBKHRoaXMsInkiLF8uZGsoYiwxMCksXy5kayhhLDEwKSk7S0EodGhpcywieiIsXy5kayhiLDExKSxfLmRrKGEsMTEpKTtMQSh0aGlzLCJnIixfLkEoYiwxNCksXy5BKGEsMTQpKTtLQSh0aGlzLCJlIixfLmRrKGIsMTUpLF8uZGsoYSwxNSkpO01BKHRoaXMsImYiLF8uZ2goYiwxNiksXy5naChhLDE2KSk7TEEodGhpcywiayIsXy5jayhiLDE3KSxfLmNrKGEsMTcpKTtMQSh0aGlzLCJ1IixfLmNrKGIsMTgpLCEwKTtMQSh0aGlzLCJ1dCIsXy5jayhiLDQ1KSwhMCk7TEEodGhpcywiaSIsXy5jayhiLDIyKSwhMCk7TEEodGhpcywiYSIsXy5jayhiLDIxKSxfLmNrKGEsMjEpKTtMQSh0aGlzLCJiIixfLkEoYiwyMyksXy5BKGEsMjMpKTsKS0EodGhpcywiYiIsXy5kayhiLDM4KSxfLmRrKGEsMzgpKTtLQSh0aGlzLCJjIixfLmRrKGIsMzkpLF8uZGsoYSwzOSksMTYsOCk7TUEodGhpcywicSIsXy5naChiLDI4KSxfLmdoKGEsMjgpKTtMQSh0aGlzLCJmaCIsXy5jayhiLDMwKSxfLmNrKGEsMzApKTtMQSh0aGlzLCJmdiIsXy5jayhiLDMxKSxfLmNrKGEsMzEpKTtMQSh0aGlzLCJmZyIsXy5BKGIsMzQpLF8uQShhLDM0KSk7TEEodGhpcywiY2kiLF8uY2soYiwzMiksXy5jayhhLDMyKSk7TUEodGhpcywidCIsYi5nZXRUb2tlbigpLGEuZ2V0VG9rZW4oKSk7TUEodGhpcywibnQwIixfLmdoKGIsMzYpLF8uZ2goYSwzNikpO0xBKHRoaXMsInJ3IixfLkEoYiwzNSksXy5BKGEsMzUpKTtMQSh0aGlzLCJyd3UiLF8uQShiLDQxKSxfLkEoYSw0MSkpO0xBKHRoaXMsInJ3YSIsXy5BKGIsNjQpLF8uQShhLDY0KSk7TEEodGhpcywibnciLF8uQShiLDQ4KSxfLkEoYSw0OCkpO0xBKHRoaXMsInJoIixfLkEoYiw0OSksXy5BKGEsNDkpKTtMQSh0aGlzLAoibm8iLF8uQShiLDM3KSxfLkEoYSwzNykpO0xBKHRoaXMsIm5zIixfLmNrKGIsNDApLF8uY2soYSw0MCkpO0tBKHRoaXMsImsiLF8uZGsoYiw0MiksXy5kayhhLDQyKSk7S0EodGhpcywicCIsXy5kayhiLDQzKSxfLmRrKGEsNDMpKTtLQSh0aGlzLCJsIixfLmRrKGIsNDQpLF8uZGsoYSw0NCkpO0tBKHRoaXMsInYiLF8uZGsoYiw2MiksXy5kayhhLDYyKSk7TEEodGhpcywibnUiLF8uY2soYiw0NiksXy5jayhhLDQ2KSk7TEEodGhpcywiZnQiLF8uY2soYiw1MCksXy5jayhhLDUwKSk7TEEodGhpcywiY2MiLF8uY2soYiw1MSksXy5jayhhLDUxKSk7TEEodGhpcywibmQiLF8uY2soYiw1MyksXy5jayhhLDUzKSk7TEEodGhpcywiaXAiLF8uY2soYiw1NCksXy5jayhhLDU0KSk7TEEodGhpcywibmMiLF8uY2soYiw1NSksXy5jayhhLDU1KSk7S0EodGhpcywiYSIsXy5kayhiLDU2KSxfLmRrKGEsNTYpKTtMQSh0aGlzLCJyaiIsXy5jayhiLDU3KSxfLmNrKGEsNTcpKTtMQSh0aGlzLCJycCIsCl8uY2soYiw1OCksXy5jayhhLDU4KSk7TEEodGhpcywicmciLF8uY2soYiw1OSksXy5jayhhLDU5KSk7TEEodGhpcywicGQiLF8uY2soYiw2MCksXy5jayhhLDYwKSk7TEEodGhpcywicGEiLF8uY2soYiw2MSksXy5jayhhLDYxKSk7S0EodGhpcywibSIsXy5kayhiLDYzKSxfLmRrKGEsNjMpKTtLQSh0aGlzLCJ2YiIsXy5mayhiLDY4KSxfLmZrKGEsNjgpKTtLQSh0aGlzLCJ2bCIsXy5mayhiLDY5KSxfLmZrKGEsNjkpKTtMQSh0aGlzLCJsZiIsXy5jayhiLDY1KSxfLmNrKGEsNjUpKTtMQSh0aGlzLCJtdiIsXy5jayhiLDY2KSxfLmNrKGEsNjYpKTtMQSh0aGlzLCJpZCIsXy5jayhiLDcwKSxfLmNrKGEsNzApKTtLQSh0aGlzLCJpYyIsXy5kayhiLDcxKSwhMCk7TEEodGhpcywicGciLF8uQShiLDcyKSxfLkEoYSw3MikpO0xBKHRoaXMsIm1vIixfLmNrKGIsNzMpLF8uY2soYSw3MykpO0xBKHRoaXMsImFsIixfLmNrKGIsNzQpLF8uY2soYSw3NCkpO0tBKHRoaXMsIml2IixfLmZrKGIsNzUpLApfLmZrKGEsNzUpKTtLQSh0aGlzLCJwaSIsXy5oayhiLDc2KSxfLmhrKGEsNzYpKTtLQSh0aGlzLCJ5YSIsXy5oayhiLDc3KSxfLmhrKGEsNzcpKTtLQSh0aGlzLCJybyIsXy5oayhiLDc4KSxfLmhrKGEsNzgpKTtLQSh0aGlzLCJmbyIsXy5oayhiLDc5KSxfLmhrKGEsNzkpKTtMQSh0aGlzLCJkZiIsXy5jayhiLDgwKSxfLmNrKGEsODApKTtNQSh0aGlzLCJtbSIsXy5naChiLDgxKSxfLmdoKGEsODEpKTtMQSh0aGlzLCJzZyIsXy5jayhiLDgyKSxfLmNrKGEsODIpKTtMQSh0aGlzLCJnZCIsXy5jayhiLDgzKSxfLmNrKGEsODMpKTtMQSh0aGlzLCJmbSIsXy5jayhiLDg0KSxfLmNrKGEsODQpKTtLQSh0aGlzLCJiYSIsXy5kayhiLDg1KSxfLmRrKGEsODUpKTtLQSh0aGlzLCJiciIsYi5FTygpLGEuRU8oKSk7S0EodGhpcywiYmMiLGIudGkoKSxhLnRpKCksMTYsOCk7S0EodGhpcywicGMiLF8uZGsoYiw4OCksXy5kayhhLDg4KSwxNiw4KTtLQSh0aGlzLCJzYyIsXy5kayhiLDg5KSxfLmRrKGEsCjg5KSwxNiw4KTtMQSh0aGlzLCJkdiIsXy5jayhiLDkwKSxfLmNrKGEsOTApKTtMQSh0aGlzLCJtZCIsXy5jayhiLDkxKSxfLmNrKGEsOTEpKTtLQSh0aGlzLCJjcCIsXy5kayhiLDkyKSxfLmRrKGEsOTIpKTtMQSh0aGlzLCJzbSIsXy5jayhiLDkzKSxfLmNrKGEsOTMpKTtLQSh0aGlzLCJjdiIsXy5kayhiLDk0KSxfLmRrKGEsOTQpKTtMQSh0aGlzLCJuZyIsXy5jayhiLDk1KSxfLmNrKGEsOTUpKTtMQSh0aGlzLCJpbCIsXy5jayhiLDk2KSxfLmNrKGEsOTYpKTtMQSh0aGlzLCJsbyIsXy5jayhiLDk3KSxfLmNrKGEsOTcpKTtMQSh0aGlzLCJ2bSIsXy5jayhiLDk4KSxfLmNrKGEsOTgpKTtNQSh0aGlzLCJkYyIsXy5naChiLDk5KSxfLmdoKGEsOTkpKTtMQSh0aGlzLCJyZiIsXy5jayhiLDEwMCksXy5jayhhLDEwMCkpO01BKHRoaXMsInZmIixfLmdoKGIsMTAyKSxfLmdoKGEsMTAyKSk7TEEodGhpcywicmEiLF8uQShiLDEwMyksXy5BKGEsMTAzKSk7TEEodGhpcywiY2ttIixfLmNrKGIsCjEwNCksXy5jayhhLDEwNCkpO0xBKHRoaXMsImdtIixfLmNrKGIsMTA1KSxfLmNrKGEsMTA1KSk7TEEodGhpcywibmdtIixfLmNrKGIsMTA2KSxfLmNrKGEsMTA2KSk7S0EodGhpcywiZW0iLF8uZGsoYiwxMDcpLF8uZGsoYSwxMDcpKTtMQSh0aGlzLCJjciIsXy5jayhiLDEwOCksXy5jayhhLDEwOCkpO0tBKHRoaXMsInNsIixiLmdldFN0b3J5Ym9hcmRMZXZlbCgpLGEuZ2V0U3Rvcnlib2FyZExldmVsKCkpO0tBKHRoaXMsInNiIixfLmRrKGIsMTEwKSxfLmRrKGEsMTEwKSk7TUEodGhpcywicHQiLF8uZ2goYiwxMTEpLF8uZ2goYSwxMTEpKTtNQSh0aGlzLCJnY2UiLF8uZ2goYiwxMTIpLF8uZ2goYSwxMTIpKTtMQSh0aGlzLCJ0bSIsXy5jayhiLDExMyksXy5jayhhLDExMykpO0xBKHRoaXMsIm50bSIsXy5jayhiLDExNCksXy5jayhhLDExNCkpO0tBKHRoaXMsIm1wIixfLmRrKGIsMTE1KSxfLmRrKGEsMTE1KSk7TUEodGhpcywibHAiLF8uZ2goYiwxMTYpLCEwKTtyZXR1cm4gdGhpcy5vYS5qb2luKCItIil9Owp2YXIgS0E9ZnVuY3Rpb24oYSxiLGMsZCxlLGYpe2lmKGMhPW51bGwpe3ZhciBnPWU9PXZvaWQgMHx8ZSE9MTAmJmUhPTE2PzEwOmU7Yz1OdW1iZXIoYykudG9TdHJpbmcoZyk7ZT1uZXcgXy5HcjtlLmFwcGVuZChnPT0xNj8iMHgiOiIiKTtnPWUuYXBwZW5kO2lmKGY9PXZvaWQgMCl2YXIgaD0iIjtlbHNlIGYtPWMubGVuZ3RoLGY8PTA/aD0iIjpoPSIwIi5yZXBlYXQoZik7Zy5jYWxsKGUsaCk7ZS5hcHBlbmQoYyk7cXljKGEsYixlLnRvU3RyaW5nKCksISFOdW1iZXIoZCkpfX0sTEE9ZnVuY3Rpb24oYSxiLGMsZCl7YyYmcXljKGEsYiwiIiwhIWQpfSxNQT1mdW5jdGlvbihhLGIsYyxkKXtjJiZxeWMoYSxiLFN0cmluZyhjKSwhIU51bWJlcihkKSl9LHF5Yz1mdW5jdGlvbihhLGIsYyxkKXtkJiYoYj1iLmNoYXJBdCgwKS50b1VwcGVyQ2FzZSgpK2Iuc3Vic3RyaW5nKDEpKTthLm9hLnB1c2goYitjKX07Xy5VaShJQSxIQSk7Xy5hYT1JQS5wcm90b3R5cGU7Xy5hYS5GMmE9ZnVuY3Rpb24oYSl7YSYmcnljKHRoaXMpO3JldHVybiBJQS5SZC5GMmEuY2FsbCh0aGlzLGEpfTtfLmFhLnNldEhlaWdodD1mdW5jdGlvbihhKXthPWE9PW51bGx8fGE8MD92b2lkIDA6YTthIT1udWxsJiZ0aGlzLnNldFNpemUoKTtyZXR1cm4gSUEuUmQuc2V0SGVpZ2h0LmNhbGwodGhpcyxhKX07Xy5hYS5yaGI9ZnVuY3Rpb24oYSl7YSYmKGE9YS5yZXBsYWNlKCI7IiwiOiIpKTtyZXR1cm4gSUEuUmQucmhiLmNhbGwodGhpcyxhKX07Xy5hYS5xaGI9ZnVuY3Rpb24oYSl7YSYmcnljKHRoaXMpO3JldHVybiBJQS5SZC5xaGIuY2FsbCh0aGlzLGEpfTtfLmFhLkUyYT1mdW5jdGlvbihhKXthJiZyeWModGhpcyk7cmV0dXJuIElBLlJkLkUyYS5jYWxsKHRoaXMsYSl9OwpfLmFhLnNldFNpemU9ZnVuY3Rpb24oYSl7Xy5wZyhhKSYmKGE9TWF0aC5tYXgoYS53aWR0aCxhLmhlaWdodCkpO2E9YT09bnVsbHx8YTwwP3ZvaWQgMDphO2EhPW51bGwmJih0aGlzLlRmYSgpLHRoaXMuc2V0SGVpZ2h0KCkpO3JldHVybiBJQS5SZC5zZXRTaXplLmNhbGwodGhpcyxhKX07Xy5hYS5IMmE9ZnVuY3Rpb24oYSl7YSYmcnljKHRoaXMpO3JldHVybiBJQS5SZC5IMmEuY2FsbCh0aGlzLGEpfTtfLmFhLnNoYj1mdW5jdGlvbihhKXthJiZyeWModGhpcyk7cmV0dXJuIElBLlJkLnNoYi5jYWxsKHRoaXMsYSl9O18uYWEudGhiPWZ1bmN0aW9uKGEpe2EmJnJ5Yyh0aGlzKTtyZXR1cm4gSUEuUmQudGhiLmNhbGwodGhpcyxhKX07Xy5hYS5zZXRDZW50ZXJDcm9wPWZ1bmN0aW9uKGEpe2EmJnJ5Yyh0aGlzKTtyZXR1cm4gSUEuUmQuc2V0Q2VudGVyQ3JvcC5jYWxsKHRoaXMsYSl9OwpfLmFhLkcyYT1mdW5jdGlvbihhKXthJiZyeWModGhpcyk7cmV0dXJuIElBLlJkLkcyYS5jYWxsKHRoaXMsYSl9O18uYWEuVGZhPWZ1bmN0aW9uKGEpe2E9YT09bnVsbHx8YTwwP3ZvaWQgMDphO2EhPW51bGwmJnRoaXMuc2V0U2l6ZSgpO3JldHVybiBJQS5SZC5UZmEuY2FsbCh0aGlzLGEpfTt2YXIgcnljPWZ1bmN0aW9uKGEpe2Euc2V0Q2VudGVyQ3JvcCgpO2EuRTJhKCk7YS5GMmEoKTthLnFoYigpO2EuRzJhKCk7YS5IMmEoKTthLnNoYigpO2EudGhiKCl9O0lBLnByb3RvdHlwZS5idWlsZD1mdW5jdGlvbigpe3ZhciBhPXRoaXMuZnoua2E7Xy5jayhhLDE4KXx8Xy5jayhhLDQ1KT9hLmdldFNpemUoKXx8dGhpcy5zZXRTaXplKDApOihhPXRoaXMuZnoua2EsYS5nZXRTaXplKCl8fGEuZ2V0V2lkdGgoKXx8YS5nZXRIZWlnaHQoKXx8KHRoaXMuc2V0U2l6ZSgpLHRoaXMuc2V0SGVpZ2h0KCksdGhpcy5UZmEoKSxyeWModGhpcykpKTtyZXR1cm4gSUEuUmQuYnVpbGQuY2FsbCh0aGlzKX07Xy5VaShfLmV5YyxJQSk7dmFyIGR5YztfLmV5Yy5wcm90b3R5cGUuaXNWYWxpZD1mdW5jdGlvbigpe3JldHVybiB0aGlzLmthLmlzVmFsaWQoKX07Cl8uZXljLnByb3RvdHlwZS5idWlsZD1mdW5jdGlvbigpe2lmKCF0aGlzLmthLmlzVmFsaWQoKSlyZXR1cm4gdGhpcy5rYS5vYTt2YXIgYT1fLmV5Yy5SZC5idWlsZC5jYWxsKHRoaXMpLGI9W107Xy5QeGModGhpcy5rYSkhPW51bGwmJmIucHVzaChfLlB4Yyh0aGlzLmthKSk7dmFyIGM9Xy5PeGModGhpcy5rYSk7Xy5OeGModGhpcy5rYSk/KGE9Xy5TeGModGhpcy5rYSkrKGE/Ij0iK2E6IiIpLGIucHVzaChhKSk6Yz8oYi5wdXNoKF8uWXhjKHRoaXMua2EpKSxhJiZiLnB1c2goYSkpOihiLnB1c2goXy5UeGModGhpcy5rYSkpLGIucHVzaChfLlV4Yyh0aGlzLmthKSksYi5wdXNoKF8uVnhjKHRoaXMua2EpKSxiLnB1c2goXy5XeGModGhpcy5rYSkpLGEmJmIucHVzaChhKSxiLnB1c2goXy5YeGModGhpcy5rYSkpKTtiPWM/Yi5qb2luKCI9Iik6Yi5qb2luKCIvIik7Yj1fLk9oKHRoaXMuRWErdGhpcy5CYSsiLyIrYisodGhpcy5BYT8iPyIrdGhpcy5BYToiIikpLnRvU3RyaW5nKCk7Yi5zdGFydHNXaXRoKCIlM2EvLyIpJiYKKGI9Yi5yZXBsYWNlKCIlM2EvLyIsIjovLyIpKTtyZXR1cm4gYn07Xy5zeWM9L1wvXC9saFszLTZdXC4vO18uTkE9ZnVuY3Rpb24oYSxiLGMpe2lmKCFhKXJldHVybiIiO2E9U3RyaW5nKGEpO2lmKCFfLmp5YyhhKSlyZXR1cm4gYTt2YXIgZD1hLnJlcGxhY2UoXy5zeWMsIi8vbGgzLiIpO2Q9bmV3IF8uY3ljKGQpO2lmKGMmJl8uUXhjKGQub2EpKXJldHVybiBjPV8uYXljKChuZXcgXy4keGMpLnBhcnNlKGEpKS5rYSxfLmJ5YyhkLGMpLGQuV3BhKGIpLGQuYnVpbGQoKTtfLmJ5YyhkLGIpO3JldHVybiBkLmJ1aWxkKCl9Owp9Y2F0Y2goZSl7Xy5fRHVtcEV4Y2VwdGlvbihlKX0KdHJ5ewp2YXIgbXhjLG54YyxveGMscHhjLHF4YztfLnlBPWZ1bmN0aW9uKGEsYixjKXt2YXIgZD0hMSxlPSIiO3R5cGVvZiBjPT09ImJvb2xlYW4iP2Q9Yzp0eXBlb2YgYz09PSJzdHJpbmciJiYoZT1jKTtpZighZCYmYj09PSIwIiYmIWUpcmV0dXJuIGE7Yz1hIGluc3RhbmNlb2YgXy50Yz9hLnRvU3RyaW5nKCk6YSBpbnN0YW5jZW9mIF8uRFVhP2EuZ2V0Q29udGVudCgpOlN0cmluZyhhKTtjPV8udGQoYywiYXV0aHVzZXIiLGIpO2UmJihjPV8udGQoYywicGFnZUlkIixlKSk7cmV0dXJuIGEgaW5zdGFuY2VvZiBfLnRjfHxhIGluc3RhbmNlb2YgXy5EVWE/Xy54YyhjKTpjfTsKbXhjPXsiXHgwMCI6IlxceDAwIiwiXGIiOiJcXHgwOCIsIlx0IjoiXFx0IiwiXG4iOiJcXG4iLCJcdiI6IlxceDBiIiwiXGYiOiJcXGYiLCJcciI6IlxcciIsJyInOiJcXHgyMiIsJDoiXFx4MjQiLCImIjoiXFx4MjYiLCInIjoiXFx4MjciLCIoIjoiXFx4MjgiLCIpIjoiXFx4MjkiLCIqIjoiXFx4MmEiLCIrIjoiXFx4MmIiLCIsIjoiXFx4MmMiLCItIjoiXFx4MmQiLCIuIjoiXFx4MmUiLCIvIjoiXFwvIiwiOiI6IlxceDNhIiwiPCI6IlxceDNjIiwiPSI6IlxceDNkIiwiPiI6IlxceDNlIiwiPyI6IlxceDNmIiwiWyI6IlxceDViIiwiXFwiOiJcXFxcIiwiXSI6IlxceDVkIiwiXiI6IlxceDVlIiwieyI6IlxceDdiIiwifCI6IlxceDdjIiwifSI6IlxceDdkIiwiXHUwMDg1IjoiXFx4ODUiLCJcdTIwMjgiOiJcXHUyMDI4IiwiXHUyMDI5IjoiXFx1MjAyOSJ9O254Yz1mdW5jdGlvbihhKXtyZXR1cm4gbXhjW2FdfTtveGM9L1tceDAwXHgwOC1ceDBkXHgyMlx4MjZceDI3XC9ceDNjLVx4M2VceDViLVx4NWRceDdiXHg3ZFx4ODVcdTIwMjhcdTIwMjldL2c7Cl8uekE9ZnVuY3Rpb24oYSl7cmV0dXJuIFN0cmluZyhhKS5yZXBsYWNlKG94YyxueGMpfTtweGM9MDtfLkFBPWZ1bmN0aW9uKGEpe2lmKCFhKXJldHVybiIiO3ZhciBiPSIkIitweGMrKztiPShhLlhhP18uYnAoYSkuVTg6Ijt1bnN1cHBvcnRlZCIpKyI7IitiO18uc1NhW2JdfHxfLnRTYSsrO18uc1NhW2JdPWE7cmV0dXJuIGJ9O3F4Yz17YjohMCxicjohMCxlbTohMCxpOiEwLHM6ITAsc3Ryb25nOiEwLHN1YjohMCxzdXA6ITAsdTohMH07Xy5yeGM9ZnVuY3Rpb24oYSl7cmV0dXJuIF8uWnAoYSxfLnlVYSk/YS5nZXRDb250ZW50KCk6YSBpbnN0YW5jZW9mIF8udGM/Xy56YyhhKS50b1N0cmluZygpOiJhYm91dDppbnZhbGlkI3pTb3l6In07Cl8uQkE9ZnVuY3Rpb24oYSxiKXtpZihfLlpwKGEsXy5UcCkpcmV0dXJuIGE7Yj8oYj1PYmplY3QuZnJvbUVudHJpZXMoYi5tYXAoYz0+W2MsITBdKSksT2JqZWN0LmFzc2lnbihiLHF4YykpOmI9cXhjO3JldHVybigwLF8uJHApKF8uelZhKGEsYiksXy5pVmEoYSkpfTtfLkNBPWZ1bmN0aW9uKGEpe2lmKGE9PW51bGwpcmV0dXJuIiBudWxsICI7aWYoXy5acChhLF8ud1VhKSlyZXR1cm4gYS5nZXRDb250ZW50KCk7aWYoYSBpbnN0YW5jZW9mIF8uemlhKXJldHVybiBfLkljKGEpLnRvU3RyaW5nKCk7c3dpdGNoKHR5cGVvZiBhKXtjYXNlICJib29sZWFuIjpjYXNlICJudW1iZXIiOnJldHVybiIgIithKyIgIjtkZWZhdWx0OnJldHVybiInIitfLnpBKFN0cmluZyhhKSkrIicifX07Cn1jYXRjaChlKXtfLl9EdW1wRXhjZXB0aW9uKGUpfQp0cnl7CnZhciB2d2M7Xy5qQT1mdW5jdGlvbigpe3JldHVybmBjJHt2d2MrK31gfTtfLnd3Yz1mdW5jdGlvbihhKXtyZXR1cm4gXy5acChhLF8uVHApP18ucXEoYS5nZXRDb250ZW50KCkpOlN0cmluZyhhKS5yZXBsYWNlKF8ualZhLF8ua1ZhKX07Xy5rQT1mdW5jdGlvbihhKXtpZihhPT1udWxsKXRocm93IEVycm9yKCJ6ZCIpO3JldHVybiBhfTt2d2M9MDsKfWNhdGNoKGUpe18uX0R1bXBFeGNlcHRpb24oZSl9CnRyeXsKXy5udD1jbGFzcyBleHRlbmRzIF8ubHtjb25zdHJ1Y3RvcihhKXtzdXBlcihhKX1MZygpe3JldHVybiBfLnQodGhpcywxKX19O18ubnQucHJvdG90eXBlLlhhPSJUeUZmUWIiOwp9Y2F0Y2goZSl7Xy5fRHVtcEV4Y2VwdGlvbihlKX0KdHJ5ewpfLkhGYj1mdW5jdGlvbihhKXtyZXR1cm4gXy5xKGEsXy5oaCwyKX07Cn1jYXRjaChlKXtfLl9EdW1wRXhjZXB0aW9uKGUpfQp0cnl7Cl8uR0ZjPWZ1bmN0aW9uKGEsYixjLGQsZSxmLGcsaCl7aD1oPT09dm9pZCAwPyExOmg7dmFyIGs9az09PXZvaWQgMD8hMTprO3ZhciBtPV8uUCgpO2U9IjxhIisoZj8nIGNsYXNzPSInK18uSyhmKSsnIic6IiIpKyhlPycgYXJpYS1sYWJlbD0iJytfLksoZSkrJyInOiIiKSsoXy5pcShnKT9fLnVxKF8udHEoZykpOiIiKTtrP2E9JyBkYXRhLXZlZD0iIicrXy5MaCgiRG56MWpiIixbXSwiZGF0YS12ZWQiKSsnIGhyZWY9IiInK18uTGgoInROSlJpZSIsW2NdLCJocmVmIikrJyBqc2NvbnRyb2xsZXI9IicrXy5LKCJZZFlkeSIpKyciIGpzYWN0aW9uPSJvbmNsaWNrOicrXy5LKCJiQ3Q1a2YiKSsnIic6KGs9Xy5ucSgicCIpKHtsaW5rOmN9LGEpLGs9Xy51cShrKSxhPV8ubnEoInIiKSh7bGluazpjfSxhKSxhPWsrXy51cShhKSk7Xy5NKF8uTyhfLk0obSxlK2ErXy5LaChkLGgpKyI+IiksXy5hcShiKSksIjwvYT4iKTtyZXR1cm4gbX07Cl8ubXEoIm8iLCIiLDAsZnVuY3Rpb24oYSl7cmV0dXJuKDAsXy5kcSkoJ2hyZWY9IicrXy5LKF8ueHEoYS5saW5rKSkrJyInKX0pO18ubXEoInAiLCIiLDAsZnVuY3Rpb24oYSxiKXthPV8ubnEoIm8iKSh7bGluazphLmxpbmt9LGIpO3JldHVybigwLF8uZHEpKGEpfSk7Xy5tcSgicSIsIiIsMCxmdW5jdGlvbihhKXt2YXIgYj1hLkR0YTtyZXR1cm4oMCxfLmRxKSgncGluZz0iIicrXy5MaCgiQU5JMnhjIixbYS5saW5rLGIhPW51bGw/YjpuZXcgTWFwXSwicGluZyIpKX0pO18ubXEoInIiLCIiLDAsZnVuY3Rpb24oYSxiKXthPV8ubnEoInEiKSh7bGluazphLmxpbmt9LGIpO3JldHVybigwLF8uZHEpKGEpfSk7Cn1jYXRjaChlKXtfLl9EdW1wRXhjZXB0aW9uKGUpfQp0cnl7CgpfLm1xKCJvIiwiIiwxLGZ1bmN0aW9uKGEpe3JldHVybigwLF8uZHEpKCdocmVmPSInK18uSyhfLnhxKGEubGluaykpKyciIGpzY29udHJvbGxlcj0iJytfLksoInBVODZIZCIpKyciIGpzYWN0aW9uPSInK18uSygiZWJxM0tkIikrIjsgY2xpY2tvbmx5OiIrXy5LKCJlYnEzS2QiKSsnOyInKX0pO18ubXEoInEiLCIiLDEsZnVuY3Rpb24oKXtyZXR1cm4oMCxfLmRxKSgnZGF0YS12ZWQ9IiInK18uTGgoIkRuejFqYiIsW10sImRhdGEtdmVkIikpfSk7Cn1jYXRjaChlKXtfLl9EdW1wRXhjZXB0aW9uKGUpfQp0cnl7Cl8uUkM9ZnVuY3Rpb24oYSl7YT1fLm5xKCJ0IikobnVsbCxhKTtyZXR1cm4oMCxfLmRxKShhKX07Cn1jYXRjaChlKXtfLl9EdW1wRXhjZXB0aW9uKGUpfQp0cnl7Cl8uckM9ZnVuY3Rpb24oYSl7cmV0dXJuIF8udChhLDMzKX07Xy5zQz1mdW5jdGlvbihhKXtyZXR1cm4gXy50KGEsMyl9O18udEM9ZnVuY3Rpb24oYSl7cmV0dXJuIF8udChhLDUpfTtfLnVDPWZ1bmN0aW9uKGEpe3JldHVybiBfLnQoYSw4KX07Xy52Qz1mdW5jdGlvbihhKXtyZXR1cm4gXy54ZShhLDEsLTEpfTtfLndDPWZ1bmN0aW9uKGEsYil7cmV0dXJuIF8ubGsoYSwxLGIpfTtfLnhDPWZ1bmN0aW9uKGEsYil7cmV0dXJuIF8uJGgoYSwyLGIpfTtfLnlDPWZ1bmN0aW9uKGEsYil7cmV0dXJuIF8uJGgoYSwzLGIpfTtfLnpDPWZ1bmN0aW9uKGEsYil7cmV0dXJuIF8uJGgoYSw0LGIpfTtfLkFDPWZ1bmN0aW9uKGEsYil7cmV0dXJuIF8uWmgoYSw3LGIpfTtfLkJDPWZ1bmN0aW9uKGEsYil7cmV0dXJuIF8uJGgoYSwxOCxiKX07Xy5DQz1mdW5jdGlvbihhLGIpe3JldHVybiBfLlNiKGEsXy5vcCwxMyxiKX07Cn1jYXRjaChlKXtfLl9EdW1wRXhjZXB0aW9uKGUpfQp0cnl7Cl8uREM9ZnVuY3Rpb24oYSxiKXtyZXR1cm4gXy5sayhhLDE0LGIpfTtfLkVDPWZ1bmN0aW9uKGEpe3JldHVybiBfLnplKGEsXy5vcCwxMyl9O18uRUZjPV8uV2IoXy5vcCk7Xy5GQz1mdW5jdGlvbihhKXtpZighYSlyZXR1cm4oMCxfLkVGYykoKTt2YXIgYj1fLndDKG5ldyBfLm9wLGEuZ2V0SWQoKSk7dmFyIGM9YS5nZXRNZXRhZGF0YSgpLkxjKF8uUGgpO2I9Xy5aaChiLDMsYyk7YS5nZXRNZXRhZGF0YSgpLkxjKF8uclVhKSYmXy4kaChiLDUsITApO3JldHVybiBifTtfLkdDPWZ1bmN0aW9uKGEpe2lmKCFhKXRocm93IEVycm9yKCJSaSIpO2lmKF8udkMoYSk8MClhPW5ldyBfLmVwKC0yLHZvaWQgMCwiU2VhcmNoVW5kZWZpbmVkVmUiKTtlbHNle2xldCBiPShuZXcgXy5jcCkua2EoXy5QaCxfLmlrKGEsMykpO18uQShhLDUpJiZiLmthKF8uclVhLCEwKTthPW5ldyBfLmVwKF8udkMoYSksYil9cmV0dXJuIGF9Owp9Y2F0Y2goZSl7Xy5fRHVtcEV4Y2VwdGlvbihlKX0KdHJ5ewpfLnFDPW5ldyBfLmVwKC0yKTsKfWNhdGNoKGUpe18uX0R1bXBFeGNlcHRpb24oZSl9CnRyeXsKXy5YQj1mdW5jdGlvbihhLGIpe3JldHVybiBfLldCKGEsYil9O18uV0I9ZnVuY3Rpb24oYSxiKXtyZXR1cm4gYS5rYT09PWIuZ2V0SWQoKX07Xy5ZQj1mdW5jdGlvbihhLGIpe3JldHVybiBfLiRoKGEsMSxiKX07Xy5aQj1mdW5jdGlvbihhKXtyZXR1cm4gXy5kaShhLDEpfTtfLmNDPWZ1bmN0aW9uKGEsYil7cmV0dXJuIF8uJGgoYSwyLGIpfTtfLmRDPWZ1bmN0aW9uKGEpe3JldHVybiBfLmRpKGEsMil9O18uZUM9ZnVuY3Rpb24oYSxiKXtyZXR1cm4gXy4kaChhLDMsYil9O18uZkM9ZnVuY3Rpb24oYSl7cmV0dXJuIF8uZGkoYSwzKX07Xy5nQz1mdW5jdGlvbihhKXtyZXR1cm4gXy5MaihhLDcpfTtfLmhDPWZ1bmN0aW9uKGEpe3JldHVybiBfLnplKGEsXy5vcCw4KX07Xy5pQz1mdW5jdGlvbihhLGIpe3JldHVybiBfLlNiKGEsXy5vcCw4LGIpfTtfLmpDPWZ1bmN0aW9uKGEpe3JldHVybiBfLmtqKGEsXy5vcCw4KX07Xy5rQz1mdW5jdGlvbihhLGIpe3JldHVybiBfLiRoKGEsMTAsYil9OwpfLmxDPWZ1bmN0aW9uKGEpe3JldHVybiBfLnplKGEsXy56cCwxMSl9O18ubUM9ZnVuY3Rpb24oYSxiKXtyZXR1cm4gXy5TYihhLF8uenAsMTEsYil9O18ubkM9Y2xhc3MgZXh0ZW5kcyBfLmx7Y29uc3RydWN0b3IoYSl7c3VwZXIoYSl9WGUoKXtyZXR1cm4gXy50KHRoaXMsNyl9b2EoYSl7cmV0dXJuIF8uZmgodGhpcyw3LGEpfXdiKCl7cmV0dXJuIF8uQSh0aGlzLDEwKX19Owp9Y2F0Y2goZSl7Xy5fRHVtcEV4Y2VwdGlvbihlKX0KdHJ5ewp2YXIgWXljO18uWnljPWZ1bmN0aW9uKGEsYj0hMCl7dmFyIGM9W107U3RyaW5nKGEpLnJlcGxhY2UoWXljLChkLGUsZixnLGgpPT57ZD1mfHxnfHxofHwiIjtkPWI/Xy5jbShkKTpkO2MucHVzaChbZSxkXSk7cmV0dXJuIiAifSk7cmV0dXJuIGN9O18uJHljPWZ1bmN0aW9uKGEsYil7Yj1NYXRoLnBvdygxMCxiKTtyZXR1cm4gTWF0aC5yb3VuZChhKmIpL2J9O18uYXpjPWZ1bmN0aW9uKGEsYil7YT1fLndhKGEuc2xpY2UoMCksYz0+Yj09PWMpO3JldHVybiBhPT09LTE/LTE6YX07Xy5VQT1mdW5jdGlvbihhLGIpe3JldHVybiBfLmF6YyhhLGIpPj0wfTtZeWM9LyhbXlx0XG5cZlxyIC8+PV0rKVtcdFxuXGZcciBdKig/Oj1bXHRcblxmXHIgXSooPzoiKFteIl0qKSI/fCcoW14nXSopJz98KFteXHRcblxmXHIgPl0qKSkpPy9nOwp9Y2F0Y2goZSl7Xy5fRHVtcEV4Y2VwdGlvbihlKX0KdHJ5ewp2YXIgdkZjLHdGYzsKXy5JQj1mdW5jdGlvbihhLGIpe2lmKCFhJiYhYilyZXR1cm4gXy50RmMobmV3IE1hcCk7aWYoIWEpcmV0dXJuIGI7aWYoIWIpcmV0dXJuIGE7Yj1fLnVGYyhiLmdldENvbnRlbnQoKSk7YT1fLnVGYyhhLmdldENvbnRlbnQoKSk7Zm9yKGxldCBkIG9mIGIua2V5cygpKWlmKGQ9PSJjbGFzcyIpe3ZhciBjPW5ldyBTZXQ7dkZjKGEuZ2V0KCJjbGFzcyIpLGMpO3ZGYyhiLmdldCgiY2xhc3MiKSxjKTthLnNldCgiY2xhc3MiLEFycmF5LmZyb20oYykuam9pbigiICIpKX1lbHNlIGlmKGQ9PSJzdHlsZSIpe2M9bmV3IE1hcDt3RmMoYS5nZXQoInN0eWxlIiksYyk7d0ZjKGIuZ2V0KCJzdHlsZSIpLGMpO2xldCBlPVtdO2ZvcihsZXQgZiBvZiBjLmtleXMoKSllLnB1c2goYCR7Zn06JHtjLmdldChmKX1gKTthLnNldCgic3R5bGUiLGUuam9pbigiOyIpKX1lbHNlIGQ9PSJqc2FjdGlvbiJ8fGQ9PSJqc2RhdGEifHxkPT0ianNtb2RlbCI/YS5nZXQoZCk/YS5zZXQoZCxhLmdldChkKSsiOyIrYi5nZXQoZCkpOgphLnNldChkLGIuZ2V0KGQpKTphLmhhcyhkKXx8YS5zZXQoZCxiLmdldChkKSk7cmV0dXJuIF8udEZjKGEpfTt2RmM9ZnVuY3Rpb24oYSxiKXthJiZhLnNwbGl0KC9ccysvKS5mb3JFYWNoKGM9PntjLnRyaW0oKSYmYi5hZGQoYy50cmltKCkpfSl9O3dGYz1mdW5jdGlvbihhLGIpe2EmJmEudHJpbSgpLnNwbGl0KCI7IikuZm9yRWFjaChjPT57Yz1jLnRyaW0oKS5zcGxpdCgiOiIpO2lmKGMubGVuZ3RoPT0yKXtsZXQgZD1jWzBdLnRyaW0oKS50b0xvd2VyQ2FzZSgpO2IuZ2V0KGQpfHxiLnNldChkLGNbMV0udHJpbSgpKX19KX07Xy50RmM9ZnVuY3Rpb24oYSl7dmFyIGI9W107Zm9yKGxldCBjIG9mIGEua2V5cygpKWEuZ2V0KGMpP2IucHVzaChgJHtjfT0iJHtfLmJtKGEuZ2V0KGMpKX0iYCk6Yi5wdXNoKGMpO3JldHVybigwLF8uZHEpKGIuam9pbigiICIpKX07Cl8udUZjPWZ1bmN0aW9uKGEpe3ZhciBiPW5ldyBNYXA7YT1fLlp5YyhhLCEwKTtmb3IobGV0IGMgb2YgYSl7YT1jWzBdO2xldCBkPWNbMV07YSYmYi5zZXQoYS50b0xvd2VyQ2FzZSgpLGQpfXJldHVybiBifTsKfWNhdGNoKGUpe18uX0R1bXBFeGNlcHRpb24oZSl9CnRyeXsKXy54RmM9ZnVuY3Rpb24oLi4uYSl7dmFyIGIsYz0oYj1hWzFdKSE9bnVsbD9iOmFbMF07cmV0dXJuIF8ud3dhKGFbMV0/YVswXToiIixjLkJtKCkuZ2V0TWV0YWRhdGEoKSl9O18uSkI9ZnVuY3Rpb24oYSxiKXtyZXR1cm4gXy55cChhP2EuY2xvbmUoKTpuZXcgXy56cCxfLmloKF8uRmMoYikpKX07Xy55RmM9ZnVuY3Rpb24oYSl7aWYoIWEpcmV0dXJuIF8udEZjKG5ldyBNYXApO2E9Xy51RmMoYS5nZXRDb250ZW50KCkpO2EuZGVsZXRlKCJocmVmIik7cmV0dXJuIF8udEZjKGEpfTtfLktCPWZ1bmN0aW9uKGEpe2lmKCFhKXJldHVybiBudWxsO2E9Xy51RmMoYS5nZXRDb250ZW50KCkpO3JldHVybiBhLmhhcygiaHJlZiIpP2EuZ2V0KCJocmVmIik6bnVsbH07Cn1jYXRjaChlKXtfLl9EdW1wRXhjZXB0aW9uKGUpfQp0cnl7CnZhciBIRmM7Xy5JQz1mdW5jdGlvbihhLGIsYyxkLGUsZil7Yz1jPT09dm9pZCAwP25ldyBfLnpwOmM7cmV0dXJuKDAsXy5kcSkoSEZjKGEsITEsYyxiLHZvaWQgMCxkLGUsZikrXy51cShIRmMoYSwhMCxjLGIsdm9pZCAwLGQsZSxmKSkpfTsKSEZjPWZ1bmN0aW9uKGEsYixjLGQsZSxmLGcsaCl7dmFyIGs9IiI7aWYoZCE9bnVsbCYmKCIiK2QpLmxlbmd0aD4wKWlmKGd8fChlPT1udWxsPzA6Xy5BKGUsMykpfHwoYz09bnVsbD8wOl8ucHAoYykpKXtjPShlPT1udWxsPzA6Xy5qQyhlKSk/Xy5HQyhfLmhDKGUpKTpfLkdDKGM9PW51bGw/dm9pZCAwOl8uRUMoYykpO2g9Xy5XQihjLF8ucUMpP2ghPW51bGw/aDpudWxsOm5ldyBfLkkoYyk7Yz1fLnhxKGQpO2M9KDAsXy5jcSkoYyk7aWYoaCYmIV8ueEZjKGMsaCkpYT1mPT1udWxsfHxmP2I/J2hyZWY9IiInK18uTGgoIlBWMXI5IixbZF0sImhyZWYiKToiIjpiPyIiOidocmVmPSInK18uSyhfLnhxKGQpKSsnIic7ZWxzZXt2YXIgbTtmPT1udWxsfHxmP209Yj9fLm5xKCJyIikoe2xpbms6ZH0sYSk6Xy5ucSgicCIpKHtsaW5rOmR9LGEpOm09Yj8iIjonaHJlZj0iJytfLksoXy54cShkKSkrJyInO2E9bX1rKz1hfWVsc2Ugays9Yj8iIjonaHJlZj0iJytfLksoXy54cShkKSkrJyInO3JldHVybigwLF8uZHEpKGspfTsKXy5KQz1mdW5jdGlvbihhLGIsYyxkLGUsZixnKXtkPWQ9PT12b2lkIDA/bmV3IF8uenA6ZDt2YXIgaD0iIixrPSIiK0hGYyhhLCExLGQsXy5LQihiKSxjLGUsZixnKTtrPSgwLF8uZHEpKGspO2grPV8udHEoXy5JQihrLF8ueUZjKGIpKSkrXy51cShIRmMoYSwhMCxkLF8uS0IoYiksYyxlLGYsZykpO3JldHVybigwLF8uZHEpKGgpfTsKfWNhdGNoKGUpe18uX0R1bXBFeGNlcHRpb24oZSl9CnRyeXsKXy5wQz1uZXcgXy5lcCgtMSk7Cn1jYXRjaChlKXtfLl9EdW1wRXhjZXB0aW9uKGUpfQp0cnl7Cl8ub0M9ZnVuY3Rpb24oYSxiKXthPWF8fHt9O3JldHVybiBfLnpGYyhiIT1udWxsP2I6e30sYS5MYSxhLldhKX07Cl8uekZjPWZ1bmN0aW9uKGEsYixjKXt2YXIgZD1hJiZhLmNzcF9ub25jZTthPWEmJmEucjg7Yj1jPT09ImJhc2UiPyI8YmFzZSIrKGIhPW51bGwmJigiIitiKS5sZW5ndGg+MD9fLnVxKF8udHEoYikpOiIiKSsiPiI6Yz09PSJpZnJhbWUiPyI8aWZyYW1lIisoYiE9bnVsbCYmKCIiK2IpLmxlbmd0aD4wP18udXEoXy50cShiKSk6IiIpKyI+PC9pZnJhbWU+IjpjPT09ImxpbmsiPyI8bGluayIrKGIhPW51bGwmJigiIitiKS5sZW5ndGg+MD9fLnVxKF8udHEoYikpOiIiKSsiPiI6Yz09PSJubyI/IjxubyIrKGIhPW51bGwmJigiIitiKS5sZW5ndGg+MD9fLnVxKF8udHEoYikpOiIiKSsiPjwvbm8+IjpjPT09InNjcmlwdCI/IjxzY3JpcHQiKyhkPycgbm9uY2U9IicrXy5LKF8uRnEoZCkpKyciJzoiIikrIj5ceDNjL3NjcmlwdD4iOmM9PT0ic3R5bGUiPyI8c3R5bGUiKyhiIT1udWxsJiYoIiIrYikubGVuZ3RoPjA/Xy51cShfLnRxKGIpKToiIikrKGE/JyBub25jZT0iJytfLksoXy5GcShhKSkrCiciJzoiIikrIj48L3N0eWxlPiI6Yz09PSJ0ZXh0YXJlYSI/Ijx0ZXh0YXJlYSIrKGIhPW51bGwmJigiIitiKS5sZW5ndGg+MD9fLnVxKF8udHEoYikpOiIiKSsiPjwvdGV4dGFyZWE+IjpjPT09InRpdGxlIj8iPHRpdGxlIisoYiE9bnVsbCYmKCIiK2IpLmxlbmd0aD4wP18udXEoXy50cShiKSk6IiIpKyI+PC90aXRsZT4iOmM9PT0ieG1wIj8iPHhtcCIrKGIhPW51bGwmJigiIitiKS5sZW5ndGg+MD9fLnVxKF8udHEoYikpOiIiKSsiPjwveG1wPiI6YyE9PSJqc2wiPyI8IitfLkVxKGMhPW51bGw/YzpudWxsKSsoYiE9bnVsbCYmKCIiK2IpLmxlbmd0aD4wP18udXEoXy50cShiKSk6IiIpKyI+PC8iK18uRXEoYyE9bnVsbD9jOm51bGwpKyI+IjoiIjtyZXR1cm4oMCxfLiRwKShiKX07Cn1jYXRjaChlKXtfLl9EdW1wRXhjZXB0aW9uKGUpfQp0cnl7Cl8uVkI9ZnVuY3Rpb24oYSxiLGMpe2E9YSYmYS5yODtiPWIhPW51bGw/IjxzdHlsZSIrKF8uaXEoYyk/Xy51cShfLnRxKGMpKToiIikrKGE/JyBub25jZT0iJytfLksoXy5GcShhKSkrJyInOiIiKSsiPiIrXy5MKGIpKyI8L3N0eWxlPiI6IiI7cmV0dXJuKDAsXy4kcCkoYil9Owp9Y2F0Y2goZSl7Xy5fRHVtcEV4Y2VwdGlvbihlKX0KdHJ5ewpfLk5CPWZ1bmN0aW9uKGEpe3JldHVybiBfLnQoYSwyMCl9O18uT0I9ZnVuY3Rpb24oYSl7cmV0dXJuIF8udChhLDYpfTtfLlFCPWZ1bmN0aW9uKGEpe3JldHVybiBfLnQoYSw2MCl9O18uUkI9ZnVuY3Rpb24oYSl7cmV0dXJuIF8udChhLDQ1KX07Xy5TQj1mdW5jdGlvbihhKXtyZXR1cm4gXy50KGEsNjgpfTtfLlRCPWZ1bmN0aW9uKGEpe3JldHVybiBfLnQoYSw3MSl9O18uVUI9ISEoXy5PaVsxMl0+PjIwJjEpOwp9Y2F0Y2goZSl7Xy5fRHVtcEV4Y2VwdGlvbihlKX0KdHJ5ewpfLkxCPSEhKF8uT2lbMTJdPj4yMSYxKTtfLk1CPSEhKF8uT2lbMzJdPj4yNyYxKTsKfWNhdGNoKGUpe18uX0R1bXBFeGNlcHRpb24oZSl9CnRyeXsKdmFyIGpCYztqQmM9ZnVuY3Rpb24oKXtyZXR1cm4ielNveVRlbXBsYXRleiJ9O18ubUI9ZnVuY3Rpb24oYSxiKXtfLmZlYShhLlBrLGIuSnQpO18uZGVhKGEsYi5KdCxiLmtXYSk7cmV0dXJuIGIuWVc/Xy5FaihhLGIuY3RvcixiLkp0LGIuRlopOl8uemUoYSxiLmN0b3IsYi5KdCxiLkZaKX07Xy5uQj1mdW5jdGlvbihhKXthLnRvU3RyaW5nPWpCYztyZXR1cm4gYX07Xy5vQj1mdW5jdGlvbihhLGIpe3JldHVybiBfLm5CKGZ1bmN0aW9uKGMsZCl7cmV0dXJuIGEoYz09bnVsbD9iOk9iamVjdC5hc3NpZ24oe30sYixjKSxkKX0pfTtfLnBCPWZ1bmN0aW9uKGEsYil7dmFyIGM9ZnVuY3Rpb24oZCxlLGYpe2EoZCxlPT1udWxsP2I6T2JqZWN0LmFzc2lnbih7fSxiLGUpLGYpfTtjLkNiPWEuQ2I7cmV0dXJuIF8ubkIoYyl9Owp9Y2F0Y2goZSl7Xy5fRHVtcEV4Y2VwdGlvbihlKX0KdHJ5ewpfLm93PWZ1bmN0aW9uKGEpe3JldHVybiBfLnQoYSw1MCl9O18ucHc9ZnVuY3Rpb24oYSl7cmV0dXJuIF8udChhLDUpfTtfLnF3PWZ1bmN0aW9uKGEpe3JldHVybiBfLnQoYSwyKX07Xy5ydz1mdW5jdGlvbihhKXtyZXR1cm4gXy50KGEsMSl9O18ueXc9ZnVuY3Rpb24oYSl7cmV0dXJuIF8udChhLDM0KX07Xy56dz1mdW5jdGlvbihhKXtyZXR1cm4gXy50KGEsMzYpfTtfLkF3PWZ1bmN0aW9uKGEpe3JldHVybiBfLnQoYSwxKX07Xy5Cdz1mdW5jdGlvbihhKXtyZXR1cm4gXy50KGEsMSl9O18uQ3c9ZnVuY3Rpb24oYSl7cmV0dXJuIF8udChhLDIpfTtfLkR3PWZ1bmN0aW9uKGEpe3JldHVybiBfLnQoYSw0KX07Xy5Fdz1mdW5jdGlvbihhKXtyZXR1cm4gXy50KGEsMTApfTtfLkZ3PWZ1bmN0aW9uKGEpe3JldHVybiBfLnQoYSwzOSl9O18uR3c9ZnVuY3Rpb24oYSl7cmV0dXJuIF8udChhLDQwKX07Cn1jYXRjaChlKXtfLl9EdW1wRXhjZXB0aW9uKGUpfQp0cnl7Cl8uQUZjPWZ1bmN0aW9uKGEsYixjLGQsZSl7ZD1kPT09dm9pZCAwP251bGw6ZDt2YXIgZj1lPT09dm9pZCAwP251bGw6ZTtlPV8uUCgpO3ZhciBnPSdjbGFzcz0iJysoXy5MQj9fLksoInoxYXNDZSIpKyIgIjoiIikrKF8uTEI/Xy5LKCJ3dVhtcWMiKSsiICI6IiIpKyhfLkxCPyIiOl8uSygiV3FRZXFjIikrIiAiKSsoXy5MQj8iIjpfLksoIkZBZ2tiYyIpKSsnIic7Zz0oMCxfLmRxKShnKTtfLk8oXy5PKF8uTShlLCI8c3BhbiIrXy51cShfLnRxKF8uSUIoYixnKSkpKygoYz09bnVsbD8wOl8uWkIoYykpPycgZGF0YS1odmVpZD0iIicrXy5MaCgibWsxdUFmIixbXSwiZGF0YS1odmVpZCIpOiIiKSsoKGM9PW51bGw/MDpfLmRDKGMpKT8nIGRhdGEtdmVkPSIiJytfLkxoKCJEbnoxamIiLFtdLCJkYXRhLXZlZCIpOiIiKSsiPiIpLGQ/KGQhPW51bGw/ZDpfLm5CKF8ub0MpKSh7TGE6bnVsbCxNYTpudWxsfSxhKToiIiksZj8oZiE9bnVsbD9mOl8ubkIoXy5vQykpKHtMYTpudWxsLE1hOm51bGx9LAphKToiIik7Xy5MQj9fLk0oZSxfLlVCPyc8c3ZnIGZvY3VzYWJsZT0iZmFsc2UiIGFyaWEtaGlkZGVuPSJ0cnVlIiB2aWV3Qm94PSIwIDAgMjQgMjQiPjxwYXRoIGQ9Ik0xOSA2LjQxTDE3LjU5IDUgMTIgMTAuNTkgNi40MSA1IDUgNi40MSAxMC41OSAxMiA1IDE3LjU5IDYuNDEgMTkgMTIgMTMuNDEgMTcuNTkgMTkgMTkgMTcuNTkgMTMuNDEgMTJ6Ij48L3BhdGg+PC9zdmc+JzonPHN2ZyBmb2N1c2FibGU9ImZhbHNlIiBhcmlhLWhpZGRlbj0idHJ1ZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB2aWV3Qm94PSIwIDAgMjQgMjQiPjxwYXRoIGQ9Ik0xOSA2LjQxTDE3LjU5IDUgMTIgMTAuNTkgNi40MSA1IDUgNi40MSAxMC41OSAxMiA1IDE3LjU5IDYuNDEgMTkgMTIgMTMuNDEgMTcuNTkgMTkgMTkgMTcuNTkgMTMuNDEgMTJ6Ij48L3BhdGg+PC9zdmc+Jyk6KGI9KF8uTUI/Ii4iK18uTCgiRkFna2JjIikrIiBzcGFuey13ZWJraXQtbWFzay1pbWFnZTp1cmwoZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFEQUFBQUF3Q0FRQUFBRDlDekVNQUFBQWswbEVRVlI0QWUyVzF3M0RRQXpGSG5CRDNvQ3BPNmE0RDhDRDhGekZiNGxNM0pXY21DUXB1cXVLVW9mcDBxWi9xOU5YRmVxLzZ2UnVTZHpWcVFPSlJiOU0zNWw4V1FJSlBNa1g0M3ErelBVOEVkY2pTVndQUkVBZlNBQjlKQkhVZzBSSUR4SWUvWkl3NkwwQi95SHluMlQvWmVxLzBmaWp3dit3OHordS9TOGMveXZULzlMM2Y3YjRQN3o4bjQ1SmtweVFIb1oxQytDQWNoOFdBQUFBQUVsRlRrU3VRbUNDKX0iOgoiIikrKF8uTUI/IiI6Ii4iK18uTCgiRkFna2JjIikrIiBzcGFue2JhY2tncm91bmQtaW1hZ2U6dXJsKGRhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBREFBQUFBd0NBUUFBQUQ5Q3pFTUFBQUFrMGxFUVZSNEFlMlcxdzNEUUF6RkhuQkQzb0NwTzZhNEQ4Q0Q4RnpGYjRsTTNKV2NtQ1FwdXF1S1VvZnAwcVovcTlOWEZlcS82dlJ1U2R6VnFRT0pSYjlNMzVsOFdRSUpQTWtYNDNxK3pQVThFZGNqU1Z3UFJFQWZTQUI5SkJIVWcwUklEeEllL1pJdzZMMEIveUh5bjJUL1plcS8wZmlqd3Yrdzh6K3UvUzhjL3l2VC85TDNmN2I0UDd6OG40NUprcHlRSG9aMUMrQ0FjaDhXQUFBQUFFbEZUa1N1UW1DQyl9IiksYj0oMCxfLmVxKShiKSxfLk0oXy5PKGUsXy5WQihhLGIpKSwiPHNwYW4+PC9zcGFuPiIpKTtfLk0oZSwiPC9zcGFuPiIpO3JldHVybiBlfTsKXy5CRmM9ZnVuY3Rpb24oYSxiLGMsZCl7dmFyIGU9ZT09PXZvaWQgMD9udWxsOmU7dmFyIGY9Zj09PXZvaWQgMD9udWxsOmY7dmFyIGc9Xy5QKCksaD1iIT0yNDtiPSdzdHlsZT0iJysoaD8iaGVpZ2h0OiIrKF8uSyhfLkwoYikpKyJweDsiKToiIikrKGg/ImxpbmUtaGVpZ2h0OiIrKF8uSyhfLkwoYikpKyJweDsiKToiIikrKGg/IndpZHRoOiIrKF8uSyhfLkwoYikpKyJweCIpOiIiKSsnIic7Yj0oMCxfLmRxKShiKTtfLk8oZyxfLkFGYyhhLF8uSUIoYyxiKSxkLGUsZikpO3JldHVybiBnfTsKXy5DRmM9ZnVuY3Rpb24oYSxiKXt2YXIgYz0iIixkPSdjbGFzcz0iJytfLksoInoxYXNDZSIpKyciJztkPSgwLF8uZHEpKGQpO2MrPSI8c3BhbiIrXy51cShfLnRxKF8uSUIoYSxkKSkpKygoYj09bnVsbD8wOl8uWkIoYikpPycgZGF0YS1odmVpZD0iIicrXy5MaCgibWsxdUFmIixbXSwiZGF0YS1odmVpZCIpOiIiKSsoKGI9PW51bGw/MDpfLmRDKGIpKT8nIGRhdGEtdmVkPSIiJytfLkxoKCJEbnoxamIiLFtdLCJkYXRhLXZlZCIpOiIiKSsiPiIrKF8uVUI/JzxzdmcgZm9jdXNhYmxlPSJmYWxzZSIgYXJpYS1oaWRkZW49InRydWUiIHZpZXdCb3g9IjAgMCAyNCAyNCI+PHBhdGggZD0iTTE5IDYuNDFMMTcuNTkgNSAxMiAxMC41OSA2LjQxIDUgNSA2LjQxIDEwLjU5IDEyIDUgMTcuNTkgNi40MSAxOSAxMiAxMy40MSAxNy41OSAxOSAxOSAxNy41OSAxMy40MSAxMnoiPjwvcGF0aD48L3N2Zz4nOic8c3ZnIGZvY3VzYWJsZT0iZmFsc2UiIGFyaWEtaGlkZGVuPSJ0cnVlIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNCAyNCI+PHBhdGggZD0iTTE5IDYuNDFMMTcuNTkgNSAxMiAxMC41OSA2LjQxIDUgNSA2LjQxIDEwLjU5IDEyIDUgMTcuNTkgNi40MSAxOSAxMiAxMy40MSAxNy41OSAxOSAxOSAxNy41OSAxMy40MSAxMnoiPjwvcGF0aD48L3N2Zz4nKSsKIjwvc3Bhbj4iO3JldHVybigwLF8uJHApKGMpfTtfLkRGYz1mdW5jdGlvbihhLGIsYyl7dmFyIGQ9Xy5QKCksZT1hIT0yNDthPSdzdHlsZT0iJysoZT8iaGVpZ2h0OiIrKF8uSyhfLkwoYSkpKyJweDsiKToiIikrKGU/ImxpbmUtaGVpZ2h0OiIrKF8uSyhfLkwoYSkpKyJweDsiKToiIikrKGU/IndpZHRoOiIrKF8uSyhfLkwoYSkpKyJweCIpOiIiKSsnIic7YT0oMCxfLmRxKShhKTtfLk8oZCxfLkNGYyhfLklCKGIsYSksYykpO3JldHVybiBkfTsKfWNhdGNoKGUpe18uX0R1bXBFeGNlcHRpb24oZSl9CnRyeXsKXy51KCJqeXdFa2YiKTsKdmFyIExVZT1uZXcgXy5lcCgzMTk3NjYpLE5VZT1mdW5jdGlvbihhLGIpe2E9YXx8e307dmFyIGM9YS5XYSxkPWEucG9zaXRpb24sZT1hLkxhLGY9YS5NYTtjPWM9PT12b2lkIDA/ImpzbCI6Yzt2YXIgZz1kPT09dm9pZCAwPzU6ZDtkPV8uUCgpO2M9Yz09PXZvaWQgMD8ianNsIjpjO2E9Xy5QKCk7dmFyIGg7Xy5NKGEsIjx2ZWxvZyIrXy5LaCgoZj09bnVsbD8wOl8uakMoZikpP25ldyBfLkkoXy5HQyhfLmhDKGYpKSxfLkpCKF8ubEMoZiksXy5LQihlKSkpOm5ldyBfLkkoXy5wQyksKGg9Zj09bnVsbD92b2lkIDA6Zi53YigpKSE9bnVsbD9oOiExKSsiPiIpO18uTShhLGMhPSJqc2wiPyI8IitfLkVxKGMpK18udXEoXy5KQyhiLGUsZix2b2lkIDAsdm9pZCAwLHZvaWQgMCxuZXcgXy5JKChmPT1udWxsPzA6Xy5qQyhmKSk/Xy5HQyhfLmhDKGYpKTpfLnBDKSkpKygoZj09bnVsbD8wOl8uWkIoZikpPycgZGF0YS1odmVpZD0iIicrXy5MaCgibWsxdUFmIixbXSwiZGF0YS1odmVpZCIpOiIiKSsKKChmPT1udWxsPzA6Xy5kQyhmKSk/JyBkYXRhLXZlZD0iIicrXy5MaCgiRG56MWpiIixbXSwiZGF0YS12ZWQiKToiIikrIj4iOiIiKTtoPWc9PTEwfHxnPT0xMnx8Zz09MTE7ZT1nPT0xM3x8Zz09MTV8fGc9PTE0O2Y9Zz09Nnx8Zz09Mzt2YXIgaz1nPT03fHxnPT00LG09Zz09OHx8Zz09MSxuPWc9PTl8fGc9PTIscD1nPT0wfHxnPT0zfHxnPT00fHxnPT0xfHxnPT0yLHI9Zz09NXx8Zz09Nnx8Zz09N3x8Zz09OHx8Zz09OSx4PWY7Zj1nPT01fHxnPT0wO3ZhciB6PW4sQj1ofHxlLEg9aCxKPWUsTj1nPT0xMHx8Zz09MTM7bj1nPT0xMnx8Zz09MTU7dmFyIFE9Zz09MTF8fGc9PTE0O2c9W107ZT1fLlAoKTtfLk0oZSwiPHZlbG9nIitfLktoKG5ldyBfLkkoXy5wQyksITEpKyI+Iik7Xy5NKGUsIiIpO3ZhciBaPTA7Xy5NKGUsJzxkaXYganNuYW1lPSInK18uSygiRUZleElmIikrJyIgY2xhc3M9IicrXy5LKCJ1MTZTcyIpKyIgIisocHx8UT9fLksoIklkN3ZqYiIpKyIgIjoiIikrKHA/Xy5LKCJENDNTV2QiKSsKIiAiOiIiKSsocj9fLksoIlJFQ2RtZCIpKyIgIjoiIikrKEg/Xy5LKCJvcnU2RWUiKSsiICI6IiIpKyhKP18uSygiZmw1dHZmIikrIiAiOiIiKSsnIiBhcmlhLWhpZGRlbj0idHJ1ZSIgc3R5bGU9ImRpc3BsYXk6bm9uZSIganNhY3Rpb249InRyYW5zaXRpb25lbmQ6JytfLksoIm45djV5ZSIpKyciJytfLnVxKF8uUkMoYikpKycgZGF0YS1odmVpZD0iIicrXy5MaCgibWsxdUFmIixbXSwiZGF0YS1odmVpZCIpKycgZGF0YS12ZWQ9IiInK18uTGgoIkRuejFqYiIsW10sImRhdGEtdmVkIikrXy5LaChuZXcgXy5JKExVZSxfLnhwKF8udXAobmV3IF8uenAsMSksKG5ldyBfLm1wKS5rYShfLnpHLF8ueUcoMTkpKSkpLCExKSsiPiIpO2g9Znx8bjt2YXIgWT1mPyI1MCUiOnh8fGs/ImNhbGMoNTAlIC0gIitNYXRoLmZsb29yKFovMikrInB4KSI6IjBweCIsZGE9ImNhbGMoMTAwJSArIDBweCkiO18uTShlLCI8ZGl2Iik7Wj0nY2xhc3M9IicrXy5LKCJxa2l6S2YiKSsiICIrKGY/Xy5LKCJsR1BHMmIiKSsKIiAiOiIiKSsobj9fLksoImx3VTZEZCIpKyIgIjoiIikrXy5LKCJBcEh5VGIiKSsnIiBkYXRhLXBhcj0iJysoKEg/InJpZ2h0IjpKPyJsZWZ0IjpyPyJ0b3AiOiJib3R0b20iKSsnIiBkYXRhLXBlcj0iJysoenx8az8icmlnaHQiOkI/UT8iYm90dG9tIjoidG9wIjoibGVmdCIpKyciIGpzbmFtZT0iJytfLksoInlzNlZvZSIpKyciJyk7dmFyIGNhPUI/ZGE6WTtCPUI/WTpkYTtaKz0nIHN0eWxlPSInKyh6fHxrfHxIPyJyaWdodDoiK18uSyhfLkwoY2EpKSsiOyI6IiIpKyhtfHx4fHxKPyJsZWZ0OiIrXy5LKF8uTChjYSkpKyI7IjoiIikrKHJ8fE4/InRvcDoiK18uSyhfLkwoQikpKyI7IjoiIikrKHB8fFE/ImJvdHRvbToiK18uSyhfLkwoQikpOiIiKSsnIic7cD0oMCxfLmRxKShaKTtyPSIiK01VZShoKTtyPSgwLF8uZHEpKHIpO18uTShlLF8udXEoXy50cShfLklCKHAscikpKSsiPiIpO2gmJihfLk0oZSwiPGRpdiIpLGY9J2NsYXNzPSInKyhmP18uSygiS2lMSEwiKSsiICI6IiIpKyhuPwpfLksoImdiSG9PZSIpOiIiKSsnIiBqc25hbWU9IicrKF8uSygicmxPQjVkIikrJyInKSxmPSgwLF8uZHEpKGYpLHA9IiIrTVVlKCExKSxwPSgwLF8uZHEpKHApLF8uTShlLF8udXEoXy50cShfLklCKGYscCkpKSsiPiIpKTtfLk0oXy5PKF8uTShfLk8oXy5NKGUsJzxkaXYgY2xhc3M9IicrXy5LKCJraloxSGMiKSsnIj48ZGl2IGNsYXNzPSInKyhfLksoIkJNV0k3ZCIpKycgIiBqc25hbWU9IicrKF8uSygicTlpclFkIikrJyI+JykpKSwiIiksIiIpLCIiKSwiPC9kaXY+Iik7Zj1NYXRoLm1heCgwLE1hdGguY2VpbChnLmxlbmd0aCkpO2ZvcihwPTA7cDxmO3ArKylyPXAsXy5NKF8uTyhfLk0oZSwnPGRpdiBjbGFzcz0iJytfLksoImZhWUxrYyIpKyIgIisocj09MD9fLksoIm9PRXF0ZSIpOiIiKSsnIj4nKSxnW3JdKHtMYTpudWxsLFdhOiJkaXYiLE1hOm51bGx9LGIpKSwiPC9kaXY+Iik7Xy5NKGUsIjwvZGl2PiIpO18uTShlLChoPyI8L2Rpdj4iOiIiKSsiPC9kaXY+PC9kaXY+Iik7Xy5NKGUsCiIiKTtfLk0oZSwiPC92ZWxvZz4iKTtfLk0oXy5PKGEsZSksYyE9ImpzbCI/IjwvIitfLkVxKGMpKyI+IjoiIik7Xy5NKGEsIjwvdmVsb2c+Iik7cmV0dXJuIF8uTyhkLGEpfSxNVWU9ZnVuY3Rpb24oYSl7cmV0dXJuKDAsXy5kcSkoJ2NsYXNzPSInKyhhPyIiOl8uSygiRnRLODZjIikrIiAiKSsoYT8iIjpfLksoImtMNlFnZCIpKyIgIikrJyInKX07dmFyIE9VZT1jbGFzcyBleHRlbmRzIF8uYk17c3RhdGljIFFhKCl7cmV0dXJue3JjOntzb3k6Xy5ZcH19fWNvbnN0cnVjdG9yKGEpe3N1cGVyKGEuR2IpO3RoaXMuWmI9YS5yYy5zb3l9aU8oKXt2YXIgYT10aGlzLlpiLklkKE5VZSx7cG9zaXRpb246Xy50bSh0aGlzLmdldERhdGEoInBvcyIpKX0pO3RoaXMuZ2V0Um9vdCgpLmVsKCkuYXBwZW5kQ2hpbGQoYSk7c3VwZXIuaU8oKX1zaG93KGEpe2lmKCF0aGlzLkdnKXtsZXQgYj10aGlzLkphKCJxOWlyUWQiKSxjPXRoaXMuSWEoKTtiLkJjKGMueWMoImFyaWEtbGFiZWwiKXx8Yy5lbCgpLnRleHRDb250ZW50fHwiIil9c3VwZXIuc2hvdyhhKX19O09VZS5wcm90b3R5cGUuJHdhJHRpNmhHYz1mdW5jdGlvbigpe3JldHVybiB0aGlzLnNob3d9O09VZS5wcm90b3R5cGUuJHdhJFNmcE5XPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuaU99O18uanMoXy5LVWUsT1VlKTsKCgpfLnYoKTsKfWNhdGNoKGUpe18uX0R1bXBFeGNlcHRpb24oZSl9CnRyeXsKXy51KCJaZ0dnOWIiKTsKXy5ncGI9Y2xhc3MgZXh0ZW5kcyBfLnNve2ZldGNoKGEsYixjLGQsZSxmKXtyZXR1cm4gXy5VS2EoXy5ZbihfLmZwYiksZz0+Zy5mZXRjaChhLGIsYyxkLGUsdGhpcy5TbCgpLGYpKX1vYSgpe18uRGcoKX19O18uZnBiPW5ldyBfLmFvO18uYWcoXy5vWmEsXy5ncGIpOwpfLnYoKTsKfWNhdGNoKGUpe18uX0R1bXBFeGNlcHRpb24oZSl9CnRyeXsKXy51KCJkSW9TQmIiKTsKXy5jcGI9bmV3IF8uVGYoXy5PWWEpOwpfLnYoKTsKfWNhdGNoKGUpe18uX0R1bXBFeGNlcHRpb24oZSl9CnRyeXsKXy5TcGc9ISEoXy5PaVs2NV0mMjU2KTtfLlRwZz0hIShfLk9pWzY1XSY1MTIpO18uVXBnPSEhKF8uT2lbNjVdJjEwMjQpO18uVnBnPSEhKF8uT2lbNjVdJjIwNDgpO18uV3BnPSEhKF8uT2lbNjVdJjQwOTYpO18uWHBnPSEhKF8uT2lbNjVdJjgxOTIpO18uWXBnPSEhKF8uT2lbNjVdPj4xNCYxKTtfLlpwZz0hIShfLk9pWzY1XT4+MTUmMSk7Xy4kcGc9ISEoXy5PaVs2NV0+PjE2JjEpO18uYXFnPSEhKF8uT2lbNjVdPj4xOSYxKTtfLmJxZz17a1djOiJhcHBiYXIiLGgzYzoiZWUiLGRlZDoibW9kZSIsdzVjOiJmYiIsbGtkOiJyaHMiLEZhZDoibGhzIix1bmQ6InNnZSIsS1djOiJhdHZjYXAiLEttZDoic3RiIixibmQ6ImRhcmsiLEhzZDoidWliIixPZ2Q6Im9zcnBfc3RfdGFicyIsWjFjOiJkdGhtIixMY2Q6Im1ncSIscjFjOiJjdG9yIixkcmQ6InRhdyIsUVpjOiJjcSIsemVjOiJlbWIiLEczYzoiZW1iX2NiIix4OWM6ImltbHQiLE9oZDoicGZmX21hcCIsVlZjOiJhaWMiLGNxZDoic3NwIixPYWQ6ImxiIn07Xy5jcWc9T2JqZWN0LnZhbHVlcyhfLmJxZyk7Cn1jYXRjaChlKXtfLl9EdW1wRXhjZXB0aW9uKGUpfQp0cnl7Cl8ueXFnPU9iamVjdC52YWx1ZXMoXy5icWcpOwp9Y2F0Y2goZSl7Xy5fRHVtcEV4Y2VwdGlvbihlKX0KdHJ5ewpfLmg0Yj13aW5kb3cuZ29vZ2xlJiZ3aW5kb3cuZ29vZ2xlLmVyZCYmd2luZG93Lmdvb2dsZS5lcmQuYnZ8fCIiO18uaTRiPW5ldyBNYXA7Xy5jdGEoInNrZXciLGZ1bmN0aW9uKCl7dmFyIGE9IiIsYj0hMDtmb3IobGV0IFtjLGRdb2YgXy5pNGIuZW50cmllcygpKWErPWAke2I/IiI6IiwifSR7Y30uJHtkfWAsYj0hMTtyZXR1cm4gYX0pOwp9Y2F0Y2goZSl7Xy5fRHVtcEV4Y2VwdGlvbihlKX0KdHJ5ewp2YXIgWUxnLFhMZyxXTGcsVkxnO1lMZz1mdW5jdGlvbihhKXt2YXIgYj1bYS5nZXQoInEiKSxhLmdldCgidnNpbnQiKV0sYz1WTGcmJmEuZ2V0KCJ1ZG0iKT09PSg0OSkudG9TdHJpbmcoKTtpZihiLmV2ZXJ5KGQ9PiFkKSYmIWMpcmV0dXJuIiI7Yj1bLi4uYl07Yz1hLmdldCgic2kiKXx8YS5nZXQoInNpZGViIil8fGEuZ2V0KCJzdGljayIpfHwiIjtiLnB1c2goYyk7Zm9yKGxldCBkIG9mIFdMZyliLnB1c2goYS5nZXQoZCkpO2IucHVzaCghIWRvY3VtZW50LmJvZHkuZGF0YXNldC5kdCk7Yi5wdXNoKFhMZy5YdmMoKSk7cmV0dXJuInN0YXBpLSIrU3RyaW5nKF8uZW0oYi5qb2luKCJ8IikpKX07Xy5aTGc9ZnVuY3Rpb24oYSl7YT0obmV3IF8uanUoYSkpLnNlYXJjaFBhcmFtcztyZXR1cm4gWUxnKG5ldyBNYXAoYSkpfTtYTGc9e1h2YzpmdW5jdGlvbigpe3JldHVybiBfLmg0Yn19O1dMZz0ia2dtaWQgdWRzIHNob3BycyB1ZG0gdWRmIGVsaWQgc3RjYiB0YnMgZnogZmxsIGZzcG4gc2xsIHNzcG4gbXN0ayBzaG9wdmwiLnNwbGl0KCIgIik7ClZMZz1fLlhwZzsKfWNhdGNoKGUpe18uX0R1bXBFeGNlcHRpb24oZSl9CnRyeXsKdmFyIEdMZyxPTGcsRExnLEVMZyxKTGcsUUxnLEtMZyxGTGcsTkxnLFBMZyxUTGcsSExnLElMZyxMTGcsTUxnLFJMZztHTGc9ZnVuY3Rpb24oKXtETGcoRUxnKCksITEpO0ZMZyghMSl9O09MZz1mdW5jdGlvbihhKXtpZihITGcpSUxnLmFkZChhKTtlbHNle2E9RUxnKG5ldyBTZXQoW2FdKSk7bGV0IHtrZXk6Yix2YWx1ZTpjfT1KTGcoKTtjPUtMZyhhLGMsITApO0xMZz1kPT57ZD1FTGcoZCk7Yy5jdXJyZW50LnJyYT1PYmplY3QuYXNzaWduKGMuY3VycmVudC5ycmEsZCk7TUxnLnNldChiLGMsImgiKX07SExnPSgwLF8uam8pKE5MZywxMDApO0RMZyhhLCEwKX19O0RMZz1mdW5jdGlvbihhLGIpe3ZhciB7a2V5OmMsdmFsdWU6ZH09SkxnKCk7ZD1LTGcoYSxkLGIpO01MZy5zZXQoYyxkKX07CkVMZz1mdW5jdGlvbihhKXt2YXIgYj17fTtpZihhKXtmb3IobGV0IGMgb2YgYSkoYT1QTGcuZ2V0KGMpKSYmKGJbY109YSgpKTtyZXR1cm4gYn1mb3IobGV0IFtjLGRdb2YgUExnKWJbY109ZCgpO3JldHVybiBifTtKTGc9ZnVuY3Rpb24oKXt2YXIge21ldGFkYXRhOmEsdXJsOmJ9PV8ucWcoKSxjPWE/U3RyaW5nKGEucHVzaElkKTpiLGQ9TUxnLmdldChjKTtkPT09bnVsbCYmKGQ9TUxnLmdldChiKSk7ZD1fLnBnKGQpP2Q6e307cmV0dXJue2tleTpjLHZhbHVlOntjdXJyZW50OlFMZyhkLmN1cnJlbnQpLGxhc3Q6UUxnKGQubGFzdCl9fX07UUxnPWZ1bmN0aW9uKGEpe3JldHVybiBhJiZ0eXBlb2YgYT09PSJvYmplY3QiJiZ0eXBlb2YgYS5ycmE9PT0ib2JqZWN0IiYmdHlwZW9mIGEud2JiPT09Im51bWJlciI/YTp7cnJhOnt9LHdiYjotMX19OwpLTGc9ZnVuY3Rpb24oYSxiLGMpe2IuY3VycmVudC53YmIhPT1STGcmJihiLmxhc3Q9Yi5jdXJyZW50LGIuY3VycmVudD17cnJhOnt9LHdiYjpSTGd9KTtiLmN1cnJlbnQucnJhPWM/T2JqZWN0LmFzc2lnbihiLmN1cnJlbnQucnJhLGEpOmE7cmV0dXJuIGJ9O0ZMZz1mdW5jdGlvbihhPSEwKXtSTGcrKzsoMCxfLmtvKShITGcpO05MZyhhKX07TkxnPWZ1bmN0aW9uKGE9ITApe2EmJkxMZyYmSUxnLnNpemUmJkxMZyhJTGcpO0xMZz1udWxsO0lMZy5jbGVhcigpO0hMZz1udWxsfTtfLlNMZz1mdW5jdGlvbigpe3RyeXtyZXR1cm4gXy5QbSgpLnl9Y2F0Y2goYSl7cmV0dXJuIDB9fTtQTGc9bmV3IE1hcDtUTGc9bmV3IE1hcDtITGc9bnVsbDtJTGc9bmV3IFNldDtMTGc9bnVsbDtNTGc9Xy51ZygicyIse25hbWU6InNyIn0pO1JMZz1fLk1pKCJwZXJmb3JtYW5jZS50aW1pbmcubmF2aWdhdGlvblN0YXJ0IixfLmhpKCkpfHxfLmtlKCk7Cl8uaHFhLnNldCgicHMiLHtnZXRTdGF0ZTpmdW5jdGlvbihhLGIsYyxkKXtkfHxHTGcoKX0sbGlzdGVuZXI6KCk9PkZMZygpfSk7Xy5oZShfLmhpKCksInBhZ2VoaWRlIixHTGcpO18uVUxnPWZ1bmN0aW9uKGEsYixjKXtiPV8uaGUoYiwic2Nyb2xsIiwoKT0+e09MZyhhKX0pO1RMZy5zZXQoYSxiKTtQTGcuc2V0KGEsYyk7cmV0dXJuKCk9Pnt2YXIge3ZhbHVlOmR9PUpMZygpO2Q9KGQuY3VycmVudC53YmI9PT1STGc/ZC5sYXN0LnJyYTpkLmN1cnJlbnQucnJhKVthXTtyZXR1cm4gZCE9PXZvaWQgMD9kOm51bGx9fSgiZCIsZG9jdW1lbnQsXy5TTGcpOwp9Y2F0Y2goZSl7Xy5fRHVtcEV4Y2VwdGlvbihlKX0KdHJ5ewpfLnUoImI2a25zYiIpOwp2YXIgWEtnLFlLZztfLlpLZz1mdW5jdGlvbigpe1hLZ3x8KFhLZz1uZXcgWUtnKTtyZXR1cm4gWEtnfTtZS2c9Y2xhc3N7Y29uc3RydWN0b3IoKXt0aGlzLnNlcnZpY2VzPW51bGw7dGhpcy5jYWxsYmFja3M9W119Vm0oYSl7dGhpcy5zZXJ2aWNlcz1hO2ZvcihsZXQgYiBvZiB0aGlzLmNhbGxiYWNrcyl0cnl7YihhKX1jYXRjaChjKXtfLlZlKEVycm9yKCJ4cWAiK2MpKX10aGlzLmNhbGxiYWNrcz1bXX1lRigpe3RoaXMuc2VydmljZXN8fF8uVmUoRXJyb3IoInlxIikpO3JldHVybiB0aGlzLnNlcnZpY2VzfX07Cl8udigpOwp9Y2F0Y2goZSl7Xy5fRHVtcEV4Y2VwdGlvbihlKX0KdHJ5ewpfLk5LZz1jbGFzc3tjb25zdHJ1Y3RvcihhKXt0aGlzLktrPWI9Pl8uYmMoYSxKU09OLnN0cmluZ2lmeShiKSl9UWwoYSl7cmV0dXJuIF8ucmVhKGEpfX07Cn1jYXRjaChlKXtfLl9EdW1wRXhjZXB0aW9uKGUpfQp0cnl7Cl8uT0tnPWNsYXNzIGV4dGVuZHMgXy5se2NvbnN0cnVjdG9yKGEpe3N1cGVyKGEpfX07Xy5QS2c9Y2xhc3MgZXh0ZW5kcyBfLmx7Y29uc3RydWN0b3IoYSl7c3VwZXIoYSl9d2EoKXtyZXR1cm4gXy5xKHRoaXMsXy5PS2csMyl9QmEoYSl7cmV0dXJuIF8uU2IodGhpcyxfLk9LZywzLGEpfUlhKCl7cmV0dXJuIF8uR2UodGhpcywzKX1vYSgpe3JldHVybiBfLnEodGhpcyxfLk9LZyw0KX1BYShhKXtyZXR1cm4gXy5TYih0aGlzLF8uT0tnLDQsYSl9RWEoKXtyZXR1cm4gXy5HZSh0aGlzLDQpfX07Xy5QS2cucHJvdG90eXBlLlhhPSJsTTlsZGIiO3ZhciBRS2c7UUtnPW5ldyBfLk5LZyhfLk9LZyk7Xy5SS2c9e2tleXMoKXtyZXR1cm5bInByZXZpb3VzVHJhbnNpdGlvbiIsIm5leHRUcmFuc2l0aW9uIl19LEtrKGEsYil7YT1uZXcgXy5tZmUoYSxiKTtfLmxmZShhLCJwcmV2aW91c1RyYW5zaXRpb24iLGIuQmEsYi5JYSxRS2cuS2spO18ubGZlKGEsIm5leHRUcmFuc2l0aW9uIixiLkFhLGIuRWEsUUtnLktrKX0sUWwoYSxiKXtiPW5ldyBfLm1mZShiLGEpO18uamZlKGIsInByZXZpb3VzVHJhbnNpdGlvbiIsYS53YSxRS2cuUWwpO18uamZlKGIsIm5leHRUcmFuc2l0aW9uIixhLm9hLFFLZy5RbCl9fTsKfWNhdGNoKGUpe18uX0R1bXBFeGNlcHRpb24oZSl9CnRyeXsKdmFyIExQYixKUGIsS1BiOwpfLk1QYj1mdW5jdGlvbigpe3ZhciBhPV8uWUJhP18uRm0oImNlbnRlcl9jb2wiKTpfLkZtKCJyY250Iik7aWYoYT09PW51bGwpcmV0dXJuW107dmFyIGI9bmV3IFNldDtmb3IodmFyIGMgb2YgSlBiKXt2YXIgZD1BcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhLnF1ZXJ5U2VsZWN0b3JBbGwoY1swXSksMCk7Zm9yKHZhciBlIG9mIGQpaWYoYy5sZW5ndGg9PT0yJiZjWzFdPT09IlBBUkVOVCIpZD1lLnBhcmVudEVsZW1lbnQsZCE9PW51bGwmJmIuYWRkKGQpO2Vsc2UgaWYoYy5sZW5ndGg9PT0yJiZjWzFdPT09IkRFU0NFTkRBTlRTIil7aWYoZD1lLmNoaWxkTm9kZXMsZCE9PW51bGwpZm9yKHZhciBmIG9mIGQpYi5hZGQoZil9ZWxzZSBiLmFkZChlKX1hPUFycmF5LmZyb20oYik7Yj1bXTtmb3IoYz0wO2M8YS5sZW5ndGg7YysrKXtpZighKGFbY11pbnN0YW5jZW9mIEhUTUxFbGVtZW50KSljb250aW51ZTtlPWFbY107Zj0hMDtkPWUuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7aWYoZS5vZmZzZXRQYXJlbnQ9PT0KbnVsbHx8ZC53aWR0aD09PTB8fGQuaGVpZ2h0PT09MClmPSExO2lmKGYpZm9yKGQ9MDtkPGEubGVuZ3RoO2QrKylpZihjIT09ZCYmXy4kZyhhW2RdLGUpKXtmPSExO2JyZWFrfWlmKGYpZm9yKGxldCBnIG9mIEtQYil7aWYoZy5sZW5ndGg9PT0yJiZnWzFdPT09IkFOQ0VTVE9SUyIpZS5xdWVyeVNlbGVjdG9yKGdbMF0pIT09bnVsbCYmKGY9ITEpO2Vsc2UgaWYoZy5sZW5ndGg9PT0yJiZnWzFdPT09IkRFU0NFTkRBTlRTIilmb3IoZD1lLnBhcmVudEVsZW1lbnQ7ZDspe2lmKGQubWF0Y2hlcyhnWzBdKSl7Zj0hMTticmVha31kPWQucGFyZW50RWxlbWVudH1lbHNlIGlmKGcubGVuZ3RoPT09MiYmZ1sxXT09PSJQQVJFTlQiKXtpZihkPWUuY2hpbGROb2RlcyxkIT09bnVsbClmb3IobGV0IGggb2YgZClpZihoLm1hdGNoZXMoZ1swXSkpe2Y9ITE7YnJlYWt9fWVsc2UgaWYoZS5tYXRjaGVzKGdbMF0pKXtmPSExO2JyZWFrfWlmKCFmKWJyZWFrfWYmJmIucHVzaChlKX1yZXR1cm4gTFBiKGIpfTsKTFBiPWZ1bmN0aW9uKGEpe3ZhciBiPVsuLi5fLkttKCIqIildO3JldHVybiBhLnNvcnQoKGMsZCk9PmIuaW5kZXhPZihjKS1iLmluZGV4T2YoZCkpfTsKSlBiPVtbIiNyc28gPiBkaXY6bm90KC5VTFN4eWYpOm5vdChbanNuYW1lPSdUbEVCcWQnXSk6bm90KC5NampZdWQpOm5vdCguaGxjdzBjKVtjbGFzc10iXSxbIiNyc28gZGl2LlVMU3h5Zjpub3QoOm9ubHktb2YtdHlwZSk6bm90KDpsYXN0LW9mLXR5cGUpIl0sWyIjcnNvIGRpdi5NampZdWQ6bm90KDpvbmx5LW9mLXR5cGUpOm5vdCg6bGFzdC1vZi10eXBlKTpub3QoOmhhcyhkaXYuZ3J2WHFiKSkiXSxbIiNyc28gZGl2LmhsY3cwYzpub3QoOm9ubHktb2YtdHlwZSk6bm90KDpsYXN0LW9mLXR5cGUpIl0sWyIjcnNvIGRpdi5VTFN4eWY6bm90KDpvbmx5LW9mLXR5cGUpOmxhc3Qtb2YtdHlwZTpub3QoOm50aC1vZi10eXBlKDIpKSJdLFsiI3JzbyBkaXYuTWpqWXVkOm5vdCg6b25seS1vZi10eXBlKTpsYXN0LW9mLXR5cGU6bm90KDpudGgtb2YtdHlwZSgyKSk6bm90KDpoYXMoZGl2LmdydlhxYikpIl0sWyIjcnNvIGRpdi5obGN3MGM6bm90KDpvbmx5LW9mLXR5cGUpOmxhc3Qtb2YtdHlwZTpub3QoOm50aC1vZi10eXBlKDIpKSJdLApbIiNicmVzIl0sWyJbanNuYW1lPSd4UWpSTSddIl0sWyIuZy1ibGsiXSxbIltqc25hbWU9J0dEUHdrZSddIGRpdi5NampZdWQiXSxbIi5lNmhMN2QiLCJERVNDRU5EQU5UUyJdLFsiLmtrQ1hUIl0sWyIuY3UtY29udGFpbmVyIl0sWyIjdHZjYXAiXSxbIiNib3R0b21hZHMiXSxbIltqc25hbWU9J1lwa3diJ10iXSxbIi55Q1lhaGMiXV07S1BiPVtdOwp9Y2F0Y2goZSl7Xy5fRHVtcEV4Y2VwdGlvbihlKX0KdHJ5ewpfLndtZj1mdW5jdGlvbigpe3JldHVybiBfLnJIYSgicmNudCIpfTtfLnhtZj1mdW5jdGlvbigpe3JldHVybiBfLndtZigpfHxfLkptKCJjZW50ZXJfY29sIil9Owp9Y2F0Y2goZSl7Xy5fRHVtcEV4Y2VwdGlvbihlKX0KdHJ5ewpfLnpxZz1mdW5jdGlvbihhLGI9IjEiKXthPT09bnVsbD9fLlZlKEVycm9yKCJTYyIpKTooXy5aZyhhLCJMWWpOZWMiLGEpLGEuZGF0YXNldC5nd3NJbmFjdGl2ZVJvb3Q9Yik7Xy5OdWEoKX07Xy5BcWc9ZnVuY3Rpb24oKXtyZXR1cm4gXy5GbSgiY250Iil9O18uQnFnPWZ1bmN0aW9uKGE9ITApe3ZhciBiPXR5cGVvZiBhPT09ImZ1bmN0aW9uIj9hOigpPT5hO2ZvcihsZXQgYyBvZiBkb2N1bWVudC5ib2R5LmNoaWxkcmVuKWMudGFnTmFtZT09PSJTQ1JJUFQiLnRvU3RyaW5nKCl8fGMudGFnTmFtZT09PSJTVFlMRSIudG9TdHJpbmcoKXx8Xy54bShjLCJyM3hBMmQiKXx8Xy5DbShjLCJmQ2pWbGIiLCFiKGMpKX07Xy5DcWc9ZnVuY3Rpb24oYSl7cmV0dXJuIEFycmF5LmZyb20oYS5xdWVyeVNlbGVjdG9yQWxsKCJbanNuYW1lPUJSVGtuZF0iKSl9O18uRHFnPWZ1bmN0aW9uKGEpe18uenFnKGEuZWwoKSl9Owp9Y2F0Y2goZSl7Xy5fRHVtcEV4Y2VwdGlvbihlKX0KdHJ5ewpfLmsxZT1mdW5jdGlvbigpe3JldHVybiBnb29nbGUud3BzaCYmZ29vZ2xlLndwc2guZ2V0RlJIUj9nb29nbGUud3BzaC5nZXRGUkhSKCk6ITF9O18ubDFlPWZ1bmN0aW9uKGEpe2dvb2dsZS53cHNoJiZnb29nbGUud3BzaC5zZXRGUkhSJiZnb29nbGUud3BzaC5zZXRGUkhSKGEpfTsKfWNhdGNoKGUpe18uX0R1bXBFeGNlcHRpb24oZSl9CnRyeXsKdmFyIHFrYztfLm9rYz1mdW5jdGlvbigpe3JldHVybiBfLm5rYy5nZXQoXy5sdSgpLnRvU3RyaW5nKCEwKSl9O18ucGtjPWZ1bmN0aW9uKCl7dmFyIGE9Xy5va2MoKTthJiZfLmZ6LmZpeGVkVWlTY3JvbGxUbyhhLngsYS55KX07Xy5ya2M9ZnVuY3Rpb24oKXtxa2N8fChxa2M9Xy5oZShkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQsInRvdWNobW92ZSIsXy54SWEpKTtkb2N1bWVudC5ib2R5LnN0eWxlLm92ZXJmbG93PSJoaWRkZW4ifTtfLnNrYz1mdW5jdGlvbigpe3FrYyYmKF8uQW4ocWtjKSxxa2M9bnVsbCk7ZG9jdW1lbnQuYm9keS5zdHlsZS5vdmVyZmxvdz0iIn07Xy50a2M9ZnVuY3Rpb24oYSl7YSYmXy5mei5BYSgwLGEpfTtfLm5rYz1fLnVnKCJzIixfLnRNYSk7cWtjPW51bGw7Xy5oZSh3aW5kb3csInBvcHN0YXRlIixmdW5jdGlvbigpe30pOwp9Y2F0Y2goZSl7Xy5fRHVtcEV4Y2VwdGlvbihlKX0KdHJ5ewpfLldDYj1jbGFzc3tjb25zdHJ1Y3RvcihhLGIpe3RoaXMudHlwZT1hO3RoaXMudmlldz1ifHxudWxsO3RoaXMuQ2ZhPXRoaXMua2E9bnVsbH19Owp9Y2F0Y2goZSl7Xy5fRHVtcEV4Y2VwdGlvbihlKX0KdHJ5ewpfLnJ5Yj1fLmtjKCJhb2FVNyIsW18uWHJdKTsKfWNhdGNoKGUpe18uX0R1bXBFeGNlcHRpb24oZSl9CnRyeXsKdmFyIHR5Yj1jbGFzcyBleHRlbmRzIF8ubHtjb25zdHJ1Y3RvcihhKXtzdXBlcihhKX19O3R5Yi5wcm90b3R5cGUuWGE9IktRcDFPZSI7Xy51eWI9Xy5tdSh7VWs6ITEsbmFtZToiRkdoWjZlIixJazpfLnJ5YixwYXJhbXM6e2N0b3I6dHlifSxNbDpbXSxkYXRhOnt9LEtsOigpPT4oe3ZhcmlhbnQ6bnVsbCxxazpbXSx6azp7fX0pLEhsOnt9LGNoaWxkcmVuOnt9fSk7Cn1jYXRjaChlKXtfLl9EdW1wRXhjZXB0aW9uKGUpfQp0cnl7CnZhciBtb2Isbm9iLHBvYjtfLm9vYj1mdW5jdGlvbihhLGIpe3RoaXMub2E9YS5BMTt0aGlzLmthPWEuUVphO3RoaXMuTmE9YS5yUWE7dGhpcy5LYT1hLm5JZDt0aGlzLndhPWEuVnBjP25ldyBtb2IoYS5WcGMpOm51bGw7dGhpcy5BYT1hLkFUYjt0aGlzLkJhPWEubWV0YWRhdGF8fCgoYS5XQmF8fFtdKS5sZW5ndGg/e306dm9pZCAwKTt0aGlzLkVhPWEuWiRhP25ldyBTZXQoYS5aJGEpOm51bGw7dGhpcy5HYT0hIWEueVlhO3RoaXMuSWE9Xy5kYmEoYS5XQmF8fFtdLGM9PmMuaWQpO2EuV0JhJiZhLldCYS5sZW5ndGgmJk9iamVjdC5hc3NpZ24odGhpcy5CYSwuLi5hLldCYS5tYXAoYz0+Yy5pbnN0YW5jZSkpO2ImJm5vYih0aGlzKX07bW9iPWZ1bmN0aW9uKGEpe3RoaXMua2E9YS5oYW5kbGVyO3RoaXMub2E9YS5zdG9wUHJvcGFnYXRpb259Owpub2I9ZnVuY3Rpb24oYSl7aWYoYS5rYSl7bGV0IGI9YS5rYS5rYTtwb2IuYWRkKGIpO2EuS2EmJmIuZUYoKS5wdXNoKGEuS2EpfWEuQWE/Xy5xb2IucHVzaChhKTpfLnJvYi5wdXNoKGEpfTtfLm9vYi5wcm90b3R5cGUuT2E9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5OYXx8KCgpPT57fSl9O18ub29iLnByb3RvdHlwZS5BVGI9ZnVuY3Rpb24oYSl7cmV0dXJuIHRoaXMuQWEoYSl9O18ub29iLnByb3RvdHlwZS5XQmE9ZnVuY3Rpb24oYSl7cmV0dXJuIHRoaXMuSWFbYV0/dGhpcy5JYVthXS5pbnN0YW5jZTpudWxsfTtfLm9vYi5wcm90b3R5cGUuZ2V0TWV0YWRhdGE9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5CYX07Xy5zb2I9ZnVuY3Rpb24oYSxiKXtyZXR1cm4gYS5FYT9hLkVhLmhhcyhiKTpfLnJaYS5od2MoKS5oYXMoYil9O18ub29iLnByb3RvdHlwZS50b1N0cmluZz1mdW5jdGlvbigpe3JldHVybiJWaWV3SWQ8Iit0aGlzLm9hKyI+In07Cm1vYi5wcm90b3R5cGUuc3RvcFByb3BhZ2F0aW9uPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMub2F9O18ucm9iPVtdO3BvYj1uZXcgU2V0O18ucW9iPVtdOwp9Y2F0Y2goZSl7Xy5fRHVtcEV4Y2VwdGlvbihlKX0KdHJ5ewpfLnZ5Yj1uZXcgXy5vb2Ioe0ExOiIvc2VhcmNoIC9zaG9wcGluZyAvc2hvcHBpbmcvc2VhcmNoIC9zaG9wcGluZy9kZWFscyAvc2hvcHBpbmcvZ3VpZGVkIC9zd2Evd2l6Y29tcG9uZW50c3BsYXlncm91bmQiLnNwbGl0KCIgIiksWiRhOlsxXSx5WWE6ITAsUVphOl8udXlifSwhMCk7Cn1jYXRjaChlKXtfLl9EdW1wRXhjZXB0aW9uKGUpfQp0cnl7Cl8udSgiSktvS1ZlIik7CnZhciBhTWcsZU1nO18uJExnPWZ1bmN0aW9uKGEpe3RyeXtsZXQgYz0obmV3IF8uanUoYSkpLmthLmdldCgidmlldyIpO3ZhciBiPWM/Yy5pbmRleE9mKCIvc2VhcmNoLyIpPT09MD9jLnJlcGxhY2UoIi9zZWFyY2gvIiwiIik6bnVsbDpudWxsfWNhdGNoKGMpe2I9bnVsbH1yZXR1cm4gYnx8Xy5zZChhLCJxIil8fCIifTthTWc9ZnVuY3Rpb24oYSl7aWYoIWEpcmV0dXJuIiI7YT1hLlZ1KCk7cmV0dXJuIF8uWkxnKGEpfTtlTWc9ZnVuY3Rpb24oYSl7Yk1nfHwoYk1nPSEwLF8uY3RhKCJ0c3MiLCgpPT5gJHtjTWd9XyR7ZE1nfWApKTtfLmZhKGEpfTt2YXIgYk1nLGNNZyxkTWcsZ01nLGhNZyxpTWcsak1nLG1NZyxsTWcsa01nLG5NZyxvTWcscE1nO2JNZz0hMTtjTWc9MDtkTWc9MDtfLmZNZz1uZXcgXy5hbztnTWc9ZnVuY3Rpb24oYSl7aWYoYT09PW51bGwpe2xldCBiPW5ldyBfLnRnKCJiLzI2ODI1NzE3OTogTnVsbCB2aWV3IGZvdW5kIGR1cmluZyB0cmFuc2l0aW9uLiIpOygwLF8uam8pKCgpPT57dGhyb3cgYjt9LDApfX07aE1nPWZ1bmN0aW9uKGEsYil7aWYoIV8uWktnKCkuc2VydmljZXN8fCFiLnVzZXJEYXRhKXJldHVybiExO3ZhciBjPW5ldyBfLlBLZztfLlJLZy5LayhiLnVzZXJEYXRhLGMpO2lmKCFfLmtqKGMsXy5PS2csNCkpcmV0dXJuITE7Yz1hTWcoYS5wemEpPT09YU1nKGIpOyhiPWEueHUoKS5vYS5rYT09PV8udnliJiZiLm1hdGNoLnZpZXdJZD09PV8udnliKSYmIShiPSFjKSYmKGMmJihjPSEoXy5ZbihfLmZNZykubGVuZ3RoJiZhLmdldFF1ZXJ5KGEucHphKT09PWEuZ2V0UXVlcnkoYS5BYSkpKSxiPWMpO3JldHVybiBifTsKaU1nPWZ1bmN0aW9uKGEsYil7dmFyIGM9NTtoTWcoYSxiKT9jPTQ6YS54dSgpLm9hLmthPT09Xy52eWI/Yz0yOmIudmlld0lkPT09Xy52eWImJihjPTMpO3JldHVybiBjfTtqTWc9ZnVuY3Rpb24oYSxiKXthLnB6YT1hLkFhO2EuQWE9Yn07bU1nPWZ1bmN0aW9uKGEsYixjKXt2YXIgZD1rTWcoYSxiLGMpLnRoZW4oKCk9PntfLnlpKCk7aWYoIV8uWW4oXy5mTWcpLmxlbmd0aHx8IWhNZyhhLGEua2EpKXt2YXIgZT13aW5kb3cuc2Nyb2xsWCxmPSgwLF8uVUxnKSgpfHwwO18uZnouZml4ZWRVaVNjcm9sbFRvKGUsZil9YS56UT1iPT09M3x8Yj09PTQ/YS5vYT1sTWcoYSxhLmthLF8uQXFnKCl8fF8uU20oImRpdiIpKTpsTWcoYSxhLmthLGMpO2EuQmE9ITA7Z01nKGEuelEpO2Eua2E9bnVsbDtyZXR1cm4gYS54dSgpfSk7cmV0dXJuIF8uRGcoZCl9O2xNZz1mdW5jdGlvbihhLGIsYyl7cmV0dXJuIGIuQWEoYyxhLkVhKX07CmtNZz1mdW5jdGlvbihhLGIsYyl7c3dpdGNoKGIpe2Nhc2UgMTpyZXR1cm4gbk1nKGEsYykudGhlbigoKT0+e3ZhciBkOygoZD1nb29nbGUpPT1udWxsPzA6ZC51aCk/Z29vZ2xlLnVoKCJ2aWV3Iik6Xy51bihkb2N1bWVudC5ib2R5LCIiKX0pO2Nhc2UgNDpicmVhaztjYXNlIDI6cmV0dXJuIG5NZyhhLGMpLnRoZW4oKCk9PntfLnVuKGRvY3VtZW50LmJvZHksIiIpfSk7Y2FzZSAzOnJldHVybiBhLk5NYSgpO2Nhc2UgNTpfLkRIYShjLGEueHUoKS5nZXRSb290KCkuZWwoKSk7YnJlYWs7ZGVmYXVsdDp0aHJvdyBFcnJvcigiQ3FgIitiKTt9cmV0dXJuIFByb21pc2UucmVzb2x2ZSgpfTtuTWc9ZnVuY3Rpb24oYSxiKXtyZXR1cm4gb01nKGEsITEpLnRoZW4oKCk9PnthLndhLmNsZWFyKCk7Zm9yKGxldCBjIG9mIGRvY3VtZW50LmJvZHkuY2hpbGRyZW4pe2xldCBkPSFfLnhtKGMsImZDalZsYiIpO2Eud2Euc2V0KGMsZCl9Xy5CcWcoITEpO2RvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoYil9KX07Cm9NZz1mdW5jdGlvbihhLGIpe2lmKCFhLkppLmlzQXZhaWxhYmxlKCkpcmV0dXJuIFByb21pc2UucmVzb2x2ZSgpO18ubDFlKCFiKTtyZXR1cm4gYj9hLkppLnJlc3RvcmVUb1ByZXZpb3VzU3RhdGUoMTQpOmEuSmkuZW50ZXJCYXNpY01vZGUoMTQpfTtwTWc9ZnVuY3Rpb24oYSl7Xy5CcWcoYj0+e3ZhciBjO3JldHVybihjPWEud2EuZ2V0KGIpKSE9bnVsbD9jOiEwfSk7YS53YS5jbGVhcigpfTsKXy5hZyhfLm01YSxjbGFzcyBleHRlbmRzIF8uc297c3RhdGljIFFhKCl7cmV0dXJue3NlcnZpY2U6e3VDYTpfLmdwYixqZjpfLlJ1fX19Y29uc3RydWN0b3IoYSl7c3VwZXIoKTt0aGlzLkFhPXRoaXMucHphPXRoaXMua2E9dGhpcy5vYT10aGlzLnpRPW51bGw7dGhpcy5CYT10aGlzLklhPSExO3RoaXMud2E9bmV3IE1hcDt0aGlzLkVhPWRvY3VtZW50LnRpdGxlfHwiIjt0aGlzLnVDYT1hLnNlcnZpY2UudUNhO3RoaXMuSmk9YS5zZXJ2aWNlLmpmfXh1KCl7Z01nKHRoaXMuelEpO3JldHVybiB0aGlzLnpRfWdldFF1ZXJ5KGEpe3JldHVybiBhP18uJExnKGEuVnUoKSk6IiJ9R2EoYSl7dGhpcy5JYT0hMDtqTWcodGhpcyxhKTtpZihfLnNvYihhLnZpZXdJZCwyKSlyZXR1cm4gdGhpcy5rYT1hLHRoaXMudUNhLmZldGNoKGEudmlld0lkLGEubWF0Y2guTWZhLGEuVnUoKSx2b2lkIDAsdm9pZCAwLGEua2EpLnRoZW4oYj0+bU1nKHRoaXMsMSxiLnJlbmRlcigpKSk7dGhpcy56UT10aGlzLm9hPQpsTWcodGhpcyxhLF8uQXFnKCl8fF8uU20oImRpdiIpKTt0aGlzLkJhPSEwO2dNZyh0aGlzLnpRKTtyZXR1cm4gXy5EZyh0aGlzLm9hKX1zdGFydChhKXtqTWcodGhpcyxhKTt0aGlzLmthPWE7dmFyIGI9ISFfLlluKF8uZk1nKS5sZW5ndGgmJmhNZyh0aGlzLGEpO2ImJl8uVEthKF8uWW4oXy5mTWcpLGM9PmMuc3RhcnQoYSkpO2lmKGJ8fGEubWF0Y2gudmlld0lkIT09Xy52eWIpcmV0dXJuIG5ldyBfLldDYigxLG51bGwpO2I9Xy5BcWcoKXx8Xy5TbSgiZGl2Iik7dGhpcy5vYT1sTWcodGhpcyxhLGIpO3RoaXMuSWE/dGhpcy5CYXx8KGRNZysrLGVNZyhuZXcgXy50ZygiYi8yODAwNDY3MjM6IGN1cnJlbnRWaWV3IG5vdCBzZXQgYmVmb3JlIHRyYW5zaXRpb24gc3RhcnQuIikpKTooY01nKyssZU1nKG5ldyBfLnRnKCJiLzI4MDA0NjcyMzogZmlyc3RWaWV3KCkgbm90IGNhbGxlZCBiZWZvcmUgdHJhbnNpdGlvbiBzdGFydC4iKSkpO3RoaXMueHUoKS5vYS5rYT09PV8udnliP3RoaXMuelE9CnRoaXMub2E6bU1nKHRoaXMsMyxiKTtyZXR1cm4gbmV3IF8uV0NiKDAsdGhpcy5vYSl9Y2FuY2VsKGEpe3RoaXMua2EmJl8uWW4oXy5mTWcpLmxlbmd0aCYmaE1nKHRoaXMsdGhpcy5rYSkmJl8uVEthKF8uWW4oXy5mTWcpLGI9PntiLmNhbmNlbChhKX0pO3RoaXMua2E9bnVsbH1yZW5kZXIoYSl7Xy5ZbihfLmZNZykubGVuZ3RoJiZoTWcodGhpcyx0aGlzLmthKSYmKHRoaXMuRWE9dGhpcy5nZXRRdWVyeSh0aGlzLmthKSxfLlRLYShfLlluKF8uZk1nKSxiPT5iLnJlbmRlcihhLHRoaXMua2EpKSk7cmV0dXJuIG1NZyh0aGlzLGlNZyh0aGlzLHRoaXMua2EpLGEucmVuZGVyKCkpfUthKCl7fU5NYSgpe3JldHVybiBvTWcodGhpcywhMCkudGhlbigoKT0+e3RoaXMueHUoKS5nZXRSb290KCkucmVtb3ZlKCk7cE1nKHRoaXMpfSl9fSk7Cl8udigpOwp9Y2F0Y2goZSl7Xy5fRHVtcEV4Y2VwdGlvbihlKX0KdHJ5ewpfLnUoInBYZFJZYiIpOwpfLnpvYj1uZXcgXy5UZihfLk1ZYSk7Cl8udigpOwp9Y2F0Y2goZSl7Xy5fRHVtcEV4Y2VwdGlvbihlKX0KdHJ5ewpfLllDaD1fLmtjKCJPMUdqemUiKTsKfWNhdGNoKGUpe18uX0R1bXBFeGNlcHRpb24oZSl9CnRyeXsKdmFyIHRvYix2b2IsdW9iLHdvYix4b2I7dG9iPWZ1bmN0aW9uKGEsYil7aWYoYS5lbGVtZW50cy5sZW5ndGghPWIuZWxlbWVudHMubGVuZ3RoKXJldHVybiBiLmVsZW1lbnRzLmxlbmd0aC1hLmVsZW1lbnRzLmxlbmd0aDtmb3IobGV0IGM9MDtjPGEuZWxlbWVudHMubGVuZ3RoO2MrKylpZihhLmVsZW1lbnRzW2NdLnR5cGUhPWIuZWxlbWVudHNbY10udHlwZSl7aWYoYS5lbGVtZW50c1tjXS50eXBlPT0iSnQ1Y0siKXJldHVybi0xO2lmKGIuZWxlbWVudHNbY10udHlwZT09Ikp0NWNLInx8YS5lbGVtZW50c1tjXS50eXBlPT0iaUo0eUIiKXJldHVybiAxO2lmKGIuZWxlbWVudHNbY10udHlwZT09ImlKNHlCIilyZXR1cm4tMX1yZXR1cm4gMH07CnZvYj1mdW5jdGlvbihhKXthLndhfHwoYS53YT1bXSxhLm9hLmxlbmd0aD09MCYmYS5vYS5wdXNoKCIiKSxfLkxhKGEuQmEsZnVuY3Rpb24oYil7Xy5MYShiLm9hLGZ1bmN0aW9uKGMpe18uTGEodGhpcy5vYSxmdW5jdGlvbihkKXt0aGlzLndhLnB1c2godW9iKHRoaXMsYixkLGMpKX0sdGhpcyl9LHRoaXMpfSxhKSxhLmthJiYoXy5MYShhLm9hLGZ1bmN0aW9uKGIpe3RoaXMua2Eub2EucHVzaChiKX0sYSksdm9iKGEua2EpKSl9O3VvYj1mdW5jdGlvbihhLGIsYyxkKXtjPXdvYihhLCEwLGMpO2MucHVzaC5hcHBseShjLHdvYihhLCExLGQpKTthPSJeIisoYy5sZW5ndGg9PTA/IiI6Ii8iK18uWGkoYyxlPT5lLnJlZ2V4KS5qb2luKCIvIikpKyIkIjtyZXR1cm4gbmV3IHhvYihiLG5ldyBSZWdFeHAoYSksYyxkKX07CndvYj1mdW5jdGlvbihhLGIsYyl7dmFyIGQ9Yy5zcGxpdCgiLyIpO2Quc2hpZnQoKTtyZXR1cm4gXy5YaShkLGZ1bmN0aW9uKGUpe3ZhciBmPXtlRGQ6ZSxwYXR0ZXJuOmMsaUJjOmIsdHlwZTp2b2lkIDAscHJlZml4OnZvaWQgMCxoMmE6dm9pZCAwLHJlZ2V4OnZvaWQgMH07aWYoZT09IioiKWYudHlwZT0iaUo0eUIiLGYucmVnZXg9IiguKykiO2Vsc2V7bGV0IGc9L14oW146XSopOihbYS16QS1aMC05X10rKSQvLmV4ZWMoZSk7Zz8oZi50eXBlPSJUNkdRa2QiLGYucHJlZml4PWdbMV0sZi5oMmE9Z1syXSxlPSJbXi9dKyIsdGhpcy5BYVtmLmgyYV0mJihlPXRoaXMuQWFbZi5oMmFdLGRlbGV0ZSB0aGlzLkFhW2YuaDJhXSksZi5yZWdleD1fLmJGYShmLnByZWZpeCkrIigiK2UrIikiKTooZi50eXBlPSJKdDVjSyIsZi5yZWdleD0iKCIrXy5iRmEoZSkrIikiKX1yZXR1cm4gZn0sYSl9OwpfLnlvYj1jbGFzc3tjb25zdHJ1Y3RvcihhKXt0aGlzLkJhPWE7dGhpcy5vYT1bXTt0aGlzLndhPW51bGw7dGhpcy5BYT17fTt0aGlzLmthPW51bGx9bWF0Y2goYSxiKXt2b2IodGhpcyk7aWYodGhpcy5rYSYmdGhpcy5rYS5tYXRjaChhKSlyZXR1cm4gbnVsbDthPWEucmVwbGFjZSgvO1teL10qLywiIik7dmFyIGM9W107Zm9yKGxldCBkPTA7ZDx0aGlzLndhLmxlbmd0aDtkKyspe2xldCBlPXRoaXMud2FbZF0ubWF0Y2goYSk7IWV8fGImJiFiKGUpfHxjLnB1c2goZSl9cmV0dXJuIGMuc29ydCh0b2IpWzBdfHxudWxsfX07CnhvYj1jbGFzc3tjb25zdHJ1Y3RvcihhLGIsYyxkKXt0aGlzLndhPWE7dGhpcy5HQWI9Yjt0aGlzLmthPWM7dGhpcy5vYT1kfW1hdGNoKGEpe3ZhciBiPXRoaXMuR0FiLmV4ZWMoYSk7aWYoIWIpcmV0dXJuIG51bGw7Yi5zaGlmdCgpO2E9e3ZpZXdJZDp0aGlzLndhLGpLYzp2b2lkIDAscGF0aDphLHBhdHRlcm46dGhpcy5vYSxwcmVmaXg6IiIsTWZhOnt9LHN1ZmZpeDp2b2lkIDAsZWxlbWVudHM6dGhpcy5rYSxHQWI6dGhpcy5HQWJ9O3ZhciBjPVtdO2ZvcihsZXQgZD0wO2Q8Yi5sZW5ndGg7ZCsrKXtsZXQgZT10aGlzLmthW2RdLGY9ZS50eXBlO2UuaUJjJiZjLnB1c2goYltkXSk7Zj09IlQ2R1FrZCI/YS5NZmFbZS5oMmFdPWJbZF06Zj09ImlKNHlCIiYmKGEuc3VmZml4PWJbZF0sYS5NZmFbIioiXT1iW2RdKX1jLmxlbmd0aD4wJiYoYS5wcmVmaXg9Ii8iK2Muam9pbigiLyIpKTtyZXR1cm4gYX1ub3JtYWxpemUoYSl7cmV0dXJuIF8uWGkodGhpcy5rYSxiPT57aWYoYi50eXBlPT0iSnQ1Y0siKXJldHVybiBiLnJlZ2V4Owp2YXIgYz0iIjtiLnByZWZpeCE9bnVsbCYmYSYmKGM9Yi5wcmVmaXgpO3JldHVybiBjK2IudHlwZX0sdGhpcykuam9pbigiLyIpfX07Cn1jYXRjaChlKXtfLl9EdW1wRXhjZXB0aW9uKGUpfQp0cnl7Cl8ubmYoXy5MWWEpOwp9Y2F0Y2goZSl7Xy5fRHVtcEV4Y2VwdGlvbihlKX0KdHJ5ewpfLlNuWzEwNjYyNzE2M109WyJhZi5kZXAiLF8uQyxbWzEsImFmLmRlIl0se31dXTsKfWNhdGNoKGUpe18uX0R1bXBFeGNlcHRpb24oZSl9CnRyeXsKXy51KCJPMUdqemUiKTsKXy5hZyhfLllDaCxjbGFzcyBleHRlbmRzIF8uc297aGFuZGxlRXJyb3IoYSxiKXsiZnVuY3Rpb24iPT10eXBlb2YgXy5Ca2ImJmIgaW5zdGFuY2VvZiBfLkJrYnx8dGhpcy50aHJvd0V4Y2VwdGlvbihiKTtfLkluKGZ1bmN0aW9uKCl7Xy5nZCh3aW5kb3cubG9jYXRpb24sYS5WdSgpKX0sMTAwLHRoaXMpO3JldHVybiEwfXRocm93RXhjZXB0aW9uKGEpe18uZmEoYSl9fSk7Cl8udigpOwp9Y2F0Y2goZSl7Xy5fRHVtcEV4Y2VwdGlvbihlKX0KdHJ5ewpfLnUoIlR0Y090ZSIpOwpfLmFnKF8ublphLGNsYXNzIGV4dGVuZHMgXy5zb3toYW5kbGVFcnJvcihhLGIpe2IgaW5zdGFuY2VvZiBFcnJvciYmXy5WZShiKTtfLmNmKGEuVnUoKSk7cmV0dXJuITB9fSk7Cl8udigpOwp9Y2F0Y2goZSl7Xy5fRHVtcEV4Y2VwdGlvbihlKX0KdHJ5ewpfLnUoIndSNUZSYiIpOwpfLmxvYj1uZXcgXy5UZihfLkxZYSk7Cl8udigpOwp9Y2F0Y2goZSl7Xy5fRHVtcEV4Y2VwdGlvbihlKX0KdHJ5ewpfLm5mKF8uSllhKTsKfWNhdGNoKGUpe18uX0R1bXBFeGNlcHRpb24oZSl9CnRyeXsKXy5VQ2I9WzAsXy5DLC0xLF8uRCxfLkMsXy5HLF8uRCxfLkMsLTIsXy5UbCxfLkddOwp9Y2F0Y2goZSl7Xy5fRHVtcEV4Y2VwdGlvbihlKX0KdHJ5ewpfLlJDYj1mdW5jdGlvbihhKXtyZXR1cm4gXy5BKGEsOCl9O18uU0NiPWZ1bmN0aW9uKGEpe3JldHVybiBfLkEoYSwxMCl9O18uVENiPWNsYXNzIGV4dGVuZHMgXy5se2NvbnN0cnVjdG9yKGEpe3N1cGVyKGEpfX07Cn1jYXRjaChlKXtfLl9EdW1wRXhjZXB0aW9uKGUpfQp0cnl7Cl8uUUNiPV8ua2MoInR3SmpvYyIsW18uWHJdKTsKfWNhdGNoKGUpe18uX0R1bXBFeGNlcHRpb24oZSl9CnRyeXsKXy5Xcz1mdW5jdGlvbihhLGIpe3JldHVybiBfLmZoKGEsMSxiKX07Xy5rdWI9ZnVuY3Rpb24oYSl7cmV0dXJuIF8udChhLDIpfTtfLlhzPWZ1bmN0aW9uKGEpe3JldHVybiBfLnQoYSw0KX07Xy5sdWI9ZnVuY3Rpb24oYSxiKXtyZXR1cm4gXy5maChhLDQsYil9O18ubXViPWZ1bmN0aW9uKGEpe3JldHVybiBfLnQoYSw1KX07Xy5Zcz1jbGFzcyBleHRlbmRzIF8ubHtjb25zdHJ1Y3RvcihhKXtzdXBlcihhKX1OYygpe3JldHVybiBfLnQodGhpcywxKX19O18uWXMucHJvdG90eXBlLlhhPSJkaEhrVmMiO18uWnM9WzAsXy5FLC0xLF8uSmwsXy5FLC00XTsKfWNhdGNoKGUpe18uX0R1bXBFeGNlcHRpb24oZSl9CnRyeXsKbmV3IF8uQ2koXy5Zcyk7Cn1jYXRjaChlKXtfLl9EdW1wRXhjZXB0aW9uKGUpfQp0cnl7Cl8uanViPWNsYXNzIGV4dGVuZHMgXy5se2NvbnN0cnVjdG9yKGEpe3N1cGVyKGEpfWdldElkKCl7cmV0dXJuIF8udCh0aGlzLDIpfU1jKGEpe3JldHVybiBfLmZoKHRoaXMsMixhKX1ZZygpe3JldHVybiBfLnBoKHRoaXMsMil9fTtfLlRzPVswLF8uRyxfLkVdOwp9Y2F0Y2goZSl7Xy5fRHVtcEV4Y2VwdGlvbihlKX0KdHJ5ewpfLlZDYj1fLm11KHtVazohMSxuYW1lOiJGNW40Z2UiLElrOl8uUUNiLHBhcmFtczp7Y3RvcjpfLlRDYn0sTWw6W10sZGF0YTp7bWVudTpmdW5jdGlvbigpe30sYVM6ZnVuY3Rpb24oKXt9fSxLbDooKT0+KHt2YXJpYW50Om51bGwscWs6W10sems6e319KSxIbDp7fSxjaGlsZHJlbjp7fX0pOwp9Y2F0Y2goZSl7Xy5fRHVtcEV4Y2VwdGlvbihlKX0KdHJ5ewpfLmN5Yj1fLmtjKCJpanVDbmQiLFtdKTsKfWNhdGNoKGUpe18uX0R1bXBFeGNlcHRpb24oZSl9CnRyeXsKXy5QQ2I9Xy5rYygiUFVyb2dkIixbXy5jeWJdKTsKfWNhdGNoKGUpe18uX0R1bXBFeGNlcHRpb24oZSl9CnRyeXsKXy5PQ2I9Xy5rYygieGIzZ2FkIixbXy5QcV0pOwp9Y2F0Y2goZSl7Xy5fRHVtcEV4Y2VwdGlvbihlKX0KdHJ5ewpfLk5DYj1fLmtjKCJxMkp0dWYiLFtfLmhyXSk7Cn1jYXRjaChlKXtfLl9EdW1wRXhjZXB0aW9uKGUpfQp0cnl7Cl8uTUNiPXtjdmQ6MCxkdmQ6NSxidWQ6NyxJdWQ6MTAsUXRkOjkscHVkOjExLE10ZDoxMyxGdGQ6MTQsUnRkOjE1LHp1ZDoxNixidmQ6MTcsTHVkOjE4LEp0ZDoxOSxJdGQ6MjUsSHVkOjM2LGN1ZDoyMCxZdWQ6MjEsT3VkOjIyLFh0ZDoyMyxOdGQ6MjQsQ3VkOjI2LER1ZDo1NCxLdWQ6MjcsTXVkOjI4LFB1ZDoyOSxZdGQ6MzEsVnVkOjMyLGl1ZDozMyxYdWQ6MzQsQnVkOjM1LGF1ZDozNyx1dWQ6MUU1LHF1ZDoxMDAwMDEscnVkOjEwMDAwMixzdWQ6MTAwMDAzLHZ1ZDoxMDAwMDQsdHVkOjEwMDAwNSxVdWQ6MzAsVXRkOjc2LE51ZDozOCxndmQ6MzksWnRkOjQwLEp1ZDo0MSxTdGQ6NDIsbXVkOjQzLG51ZDo1OSxrdWQ6NDQsZ3VkOjQ1LGh1ZDo0NixBdGQ6NDcsVHRkOjQ4LFd1ZDo0OSxHdWQ6NTAsZnVkOjUxLFJ1ZDo1MixCdGQ6NTMsUHRkOjU1LGV2ZDo1NixEdGQ6NTcsZnZkOjY5LGp1ZDo1OCxMdGQ6NjAsb3VkOjYxLGx1ZDo2MixXdGQ6NjMsZXVkOjY0LFN1ZDo2NSxFdGQ6NjYsZHVkOjY3LApFdWQ6NjgsWnVkOjcwLHl1ZDo3MSxIdGQ6NzIsT3RkOjczLEN0ZDo3NCx4dWQ6NzUsYXZkOjc3LEd0ZDo3OCxGdWQ6NzksQXVkOjgwLFR1ZDo4MSxWdGQ6ODIsS3RkOjgzLFF1ZDo4NH07Cn1jYXRjaChlKXtfLl9EdW1wRXhjZXB0aW9uKGUpfQp0cnl7Cl8ud0JiPWZ1bmN0aW9uKGEsYixjKXtpZihhLmthIT09MCYmYS5rYSE9PTIpcmV0dXJuITE7Yj1fLk9iKGIsYyk7YS5rYT09Mj9fLlVnYShhLF8uSENhLGIpOmIucHVzaChfLkhDYShhLm9hKSk7cmV0dXJuITB9O18ueEJiPV8uR2IoXy53QmIsZnVuY3Rpb24oYSxiLGMpe2I9Xy5EYihfLnhjYSxiLCEwKTtpZihiIT1udWxsKWZvcihsZXQgZz0wO2c8Yi5sZW5ndGg7ZysrKXt2YXIgZD1hLGU9YyxmPWJbZ107ZiE9bnVsbCYmKF8uS2IoZCxlLDApLGQua2Eua2EucHVzaChmPzE6MCkpfX0sXy5pRGEpO18udXU9Y2xhc3MgZXh0ZW5kcyBfLmx7Y29uc3RydWN0b3IoYSl7c3VwZXIoYSl9WW4oKXtyZXR1cm4gXy54ZSh0aGlzLDEpfWYyKCl7cmV0dXJuIF8ud2UodGhpcywxKX1nZXRNZXNzYWdlKCl7cmV0dXJuIF8udCh0aGlzLDMpfX07Xy52dT1bMCxfLkMsXy5FLC0xLDEsXy5KcSxfLkNdOwp9Y2F0Y2goZSl7Xy5fRHVtcEV4Y2VwdGlvbihlKX0KdHJ5ewpfLnZCYj1bMCxfLkNdOwp9Y2F0Y2goZSl7Xy5fRHVtcEV4Y2VwdGlvbihlKX0KdHJ5ewpfLnVCYj1bMCxfLkMsXy50bF07Cn1jYXRjaChlKXtfLl9EdW1wRXhjZXB0aW9uKGUpfQp0cnl7Cl8udEJiPVswLF8uRywtMV07Cn1jYXRjaChlKXtfLl9EdW1wRXhjZXB0aW9uKGUpfQp0cnl7Cl8uc0JiPXt9Owp9Y2F0Y2goZSl7Xy5fRHVtcEV4Y2VwdGlvbihlKX0KdHJ5ewpfLlpwYj1bMCxfLmVsXTsKfWNhdGNoKGUpe18uX0R1bXBFeGNlcHRpb24oZSl9CnRyeXsKXy4kcGI9Xy5FYihmdW5jdGlvbihhLGIsYyl7cmV0dXJuIF8uaGhhKGEsYixjKX0sXy52Z2EsXy5laik7Xy5hcWI9Y2xhc3MgZXh0ZW5kcyBfLmx7Y29uc3RydWN0b3IoYSl7c3VwZXIoYSl9Z2V0VmFsdWUoKXtyZXR1cm4gXy5Oaih0aGlzLDEpfXNldFZhbHVlKGEpe3JldHVybiBfLnVrKHRoaXMsMSxhKX1jbGVhclZhbHVlKCl7cmV0dXJuIF8uR2UodGhpcywxKX19O18uSHM9Y2xhc3MgZXh0ZW5kcyBfLmx7Y29uc3RydWN0b3IoYSl7c3VwZXIoYSl9Y2xlYXJBbHBoYSgpe3JldHVybiBfLkdlKHRoaXMsNCl9fTtfLmJxYj1bMCxfLmVsLC0yLF8uWnBiXTsKfWNhdGNoKGUpe18uX0R1bXBFeGNlcHRpb24oZSl9CnRyeXsKXy5YcGI9WzAsXy5FXTtfLllwYj1bMCxfLkYsWzAsMSxfLkddLF8uYWwsWzAsXy5GLFswLF8uRSxfLmFsLF8uRV0sWzAsXy5TbCxfLmFsLF8uWHBiXV1dOwp9Y2F0Y2goZSl7Xy5fRHVtcEV4Y2VwdGlvbihlKX0KdHJ5ewpfLnlzPVswLDE0LFswLFswLF8uRyxfLkVdLF8uRF1dOwp9Y2F0Y2goZSl7Xy5fRHVtcEV4Y2VwdGlvbihlKX0KdHJ5ewpfLlNwYj1bMCxfLkcsXy5ELF8uRywyLFswLF8uQywtMyxfLkcsXy5DLF8uRywtMSxfLkNdLC0xXTtfLlRwYj1bMCxfLkhsLFswLDEsXy5DLC0xXSwyLF8uQ107dmFyIFVwYj1bLTUwMCxfLlRwYiw0OTgsXy55c107Xy5WcGI9WzAsVXBiLF8uRixbLTUwMCxfLlNwYixVcGIsNDk3LF8ueXNdXTsKfWNhdGNoKGUpe18uX0R1bXBFeGNlcHRpb24oZSl9CnRyeXsKXy5ScGI9Wy01MDAsXy5FLDQ5OCxfLnlzXTsKfWNhdGNoKGUpe18uX0R1bXBFeGNlcHRpb24oZSl9CnRyeXsKXy5RcGI9WzAsXy5nbCwtMl07Cn1jYXRjaChlKXtfLl9EdW1wRXhjZXB0aW9uKGUpfQp0cnl7Cl8uUHBiPVswLF8uRV07Cn1jYXRjaChlKXtfLl9EdW1wRXhjZXB0aW9uKGUpfQp0cnl7Cl8uSnBiPWZ1bmN0aW9uKGEsYil7cmV0dXJuIF8udGsoYSwxLGIpfTtfLktwYj1mdW5jdGlvbihhLGIpe3JldHVybiBfLnRrKGEsMixiKX07Xy5Ecz1jbGFzcyBleHRlbmRzIF8ubHtjb25zdHJ1Y3RvcihhKXtzdXBlcihhKX13YSgpe3JldHVybiBfLk1qKHRoaXMsMSl9QWEoKXtyZXR1cm4gXy5Nayh0aGlzLDIpfW9hKCl7cmV0dXJuIF8uaWoodGhpcywyLHZvaWQgMCx2b2lkIDAsXy5sYil9fTtfLkRzLnByb3RvdHlwZS5YYT0iakN2c01kIjtfLkVzPVswLF8ueGwsLTEsXy5KcV07Cn1jYXRjaChlKXtfLl9EdW1wRXhjZXB0aW9uKGUpfQp0cnl7CnZhciBwcGI7Xy5vcGI9WyEwLF8uQyxfLkVdO3BwYj1jbGFzcyBleHRlbmRzIF8ubHtjb25zdHJ1Y3RvcihhKXtzdXBlcihhKX19O18ucXBiPWZ1bmN0aW9uKGEpe3JldHVybiBfLkVlKGEsMSl9O18ucnBiPWZ1bmN0aW9uKGEsYil7cmV0dXJuIF8ub2soYSwxLGIpfTtfLnNwYj1mdW5jdGlvbihhKXtyZXR1cm4gXy5FZShhLDIpfTtfLnRwYj1mdW5jdGlvbihhLGIpe3JldHVybiBfLm9rKGEsMixiKX07Xy56cz1jbGFzcyBleHRlbmRzIF8ubHtjb25zdHJ1Y3RvcihhKXtzdXBlcihhLDUwMCl9Z2V0TWV0YWRhdGEoKXtyZXR1cm4gXy5xKHRoaXMscHBiLDUwMCl9T2ooKXtyZXR1cm4gXy56ZSh0aGlzLHBwYiw1MDApfX07Xy56cy5wcm90b3R5cGUuWGE9IldlOUt6YyI7Xy5Bcz1bLTUwMCxfLkJsLC0xLDEyLF8uSnEsNDg0LF8ueXNdOwp9Y2F0Y2goZSl7Xy5fRHVtcEV4Y2VwdGlvbihlKX0KdHJ5ewpfLkJzPV8udmZhKGZ1bmN0aW9uKGEsYixjLGQsZSl7aWYoYS5rYSE9PTMpcmV0dXJuITE7Xy5TQ2EoYSxjLF8uQURhKGIsZCxjKSxlKTtyZXR1cm4hMH0sXy5NZ2EsXy5oRGEpO18udXBiPVstNTAwLF8uRSwtMSxfLlNsLDEsXy5FLC0xLDgsXy5KcSw0ODQsXy55c107Xy5Dcz1bMCxfLkFzLC0xXTsKfWNhdGNoKGUpe18uX0R1bXBFeGNlcHRpb24oZSl9CnRyeXsKXy5McGI9Xy5HYihfLnhoYSxmdW5jdGlvbihhLGIsYyl7Yj1fLkRiKF8uaWIsYiwhMCk7aWYoYiE9bnVsbClmb3IobGV0IGQ9MDtkPGIubGVuZ3RoO2QrKylfLkhnYShhLGMsYltkXSl9LF8ubkRhKTtfLk1wYj1bLTUwMCwxLF8uYWwsXy5BcywtMSxfLkQsLTEsMSxfLkcsXy5BcyxfLkVzLF8uQyxfLlNsLF8uRXMsNDg2LF8ueXNdO18uTnBiPVstNTAwLF8uRyxfLkMsXy5hbCwtMSwxLF8uRixfLkVzLF8uRXMsNDkyLF8ueXMsLTFdO18uT3BiPVstNTAwLF8uRyxfLkVzLF8uQyxfLkUsXy5hbCxfLkYsXy51cGIsXy5ELF8uRSw3LF8uSnEsNDgzLF8ueXNdOwp9Y2F0Y2goZSl7Xy5fRHVtcEV4Y2VwdGlvbihlKX0KdHJ5ewpfLnZwYj17fTsKfWNhdGNoKGUpe18uX0R1bXBFeGNlcHRpb24oZSl9CnRyeXsKXy53cGI9WzAsXy5DLF8ucGwsXy5FLF8uRCxfLkUsXy5HLF8uRSxfLkNdO3ZhciB4cGI9Wy0zLHt9LF8uRSwtMV07Xy55cGI9WzAsXy5hbCwtMV07Xy56cGI9WzAsXy5FLC0xXTtfLkFwYj1bMCxfLkQsXy5FbCxfLnBsLF8uRCxfLkVsXTtfLkJwYj1bMCxfLkVsLF8uVWxdO18uQ3BiPVswLF8uRixfLkJwYiwyLF8uRixfLkJwYixfLmptLC0xLF8uRyw5LFswLF8uQnBiLF8uam0sLTFdLFswLF8uRCwtNCxfLkJwYiwtMSxfLkVsLF8ua2xdLF8udWwsWzAsMSxfLmtsXSxbMCxfLk5sXSxbMCxfLkRdXTtfLkRwYj1bMCxbMSwyLDNdLF8uSWwsWzBdLF8uSWwsWzAsXy5wbF0sXy5JbCxbMCxfLkVsLF8uaWxdXTtfLkVwYj1bLTIzLHt9LF8uRSwtNCxfLlNsLF8uSmwsXy5pbCwtMSxfLlNsLF8uamwsXy5KcSxfLkQsXy5HLDEsXy5ELF8uRSxfLkRwYixfLkFwYixfLkMsXy5DcGIsXy56cGJdO3ZhciBIcGI7Xy5HcGI9Wy0zLHt9LHhwYixfLkYsKCk9Pl8uRnBiXTtfLklwYj1bLTI0LF8udnBiLF8ucGwsXy5HLHhwYixfLkUsXy5ELF8uaWwsXy5ZayxfLkUsKCk9Pl8uR3BiLF8uRSwtMixfLkpsLF8uRSxfLkYsXy5FcGIsXy55cGIsWzAsXy5hbCxfLkYsWzAsXy5FLF8uQyx4cGJdXSxfLmlsLFswLF8uRSwtNCxfLkRdLDEsXy5xbCxfLkYsXy5FcGIsKCk9PkhwYl07Xy5GcGI9WzAseHBiLF8uRiwoKT0+Xy5JcGIsXy5pbCxfLkddO0hwYj1bLTIse30sXy5GLCgpPT5fLkZwYl07Cn1jYXRjaChlKXtfLl9EdW1wRXhjZXB0aW9uKGUpfQp0cnl7CnZhciBucGI7Xy54cz1bMCxfLldrLF8uWGsoXy5FLCgpPT5fLm1wYildO18ubXBiPVswLFsxLDIsMyw0LDUsNl0sXy5XbCxfLiRrLF8uR2wsXy5EbCxfLklsLCgpPT5fLnhzLF8uSWwsKCk9Pm5wYl07bnBiPVswLF8uRiwoKT0+Xy5tcGJdOwp9Y2F0Y2goZSl7Xy5fRHVtcEV4Y2VwdGlvbihlKX0KdHJ5ewpfLnFzPWZ1bmN0aW9uKGEpe3JldHVybiBhPT1udWxsP3ZvaWQgMDpTdHJpbmcoYSl9O18uaXBiPWZ1bmN0aW9uKGEpe3ZhciBiPW5ldyBfLmhwYjtyZXR1cm4gXy5EayhiLDEsYSl9O18uaHBiPWNsYXNzIGV4dGVuZHMgXy5se2NvbnN0cnVjdG9yKGEpe3N1cGVyKGEpfX07Cn1jYXRjaChlKXtfLl9EdW1wRXhjZXB0aW9uKGUpfQp0cnl7CnZhciBmcWIsZ3FiLGhxYixpcWIsanFiLGtxYixucWIscXFiO18uZHFiPV8uR2IoXy5UZ2EsZnVuY3Rpb24oYSxiLGMpe2I9Xy5EYihfLnRjYSxiLCEwKTtpZihiIT1udWxsKWZvcihsZXQgZz0wO2c8Yi5sZW5ndGg7ZysrKXt2YXIgZD1hLGU9YyxmPWJbZ107ZiE9bnVsbCYmKF8uS2IoZCxlLDEpLF8uaGdhKGQua2EsZikpfX0sXy5zRGEpO18uZXFiPVswLF8uRWxdO2ZxYj1bMCxfLkUsXy5DLF8uRSwtMSxfLkcsXy5FLC0zLF8uRCxfLmlsLF8uRCxfLkUsLTIsWzAsXy5GLFswLF8uRSwtMV1dXTtncWI9WzAsXy5FLC0xXTtocWI9WzAsXy5hbCwtM107CmlxYj1bMCxbMSwyLDMsNCw1LDcsOCw5LDEwLDExXSxfLklsLGZxYixfLklsLGdxYixfLklsLFswLF8uRSwtMixbMCxfLkUsLTEsaHFiLC0xLF8uRyxocWIsXy5FXV0sXy5JbCxbMCxfLkUsXy5ELF8uRV0sXy5JbCxbMCxfLkUsLTJdLF8uRSxfLklsLFswLF8uR10sXy5JbCxbMCxfLkUsLTEsWzAsXy5FLF8uaWwsXy5FXSxfLkVdLF8uSWwsWzAsXy5FLC0yXSxfLklsLFswLF8uRSwtMV0sXy5JbCxbMCxfLkUsLTFdLF8uRV07Xy5Jcz1bMCxfLkUsLTQsWzAsXy5FLC0xXSxfLkUsLTZdO2pxYj1bMCxfLkYsWzAsXy5GLF8uU3BiLF8uR11dO2txYj1bMCxfLkcsMSxfLkYsXy51cGIsXy5DLF8uRXMsWzAsXy50bCxfLmJsLF8uRCxfLkUsLTEsOSxfLkpxXSxfLkMsXy5GLFswLF8uRSwtMl0sNixfLkpxXTtfLmxxYj1bLTUwMCwxLF8uRixrcWIsMixfLkYsa3FiLF8uRixbMCxfLkVsLF8uRV0sMSxfLkpxLDEsXy5FLCgpPT5fLmxxYixfLkQsNDg3LF8ueXNdOwpfLm1xYj1bMCxfLkMsXy5FLC0xLF8uRWwsXy5FXTtucWI9WzAsXy5ZaywtMSxfLkUsXy5HXTtfLm9xYj1bLTUwMCxfLkYsXy5BcywxMyxfLkpxLDQ4NCxfLnlzXTtfLnBxYj1bLTUwMCxfLkYsXy5vcWIsXy5hbCwtMSxfLm5sLF8uSmwsXy5ELDgsXy5KcSw0ODQsXy55c107cXFiPVswLF8uRmwsWzAsXy5GbCxfLkYsWzAsXy52bCwtMV1dLF8uVWwsXy54c107Xy5ycWI9WzAsXy5DLF8uRSxfLkNdO18uc3FiPVswLF8uRixbMCxfLkUsXy5HLF8uaWwsXy5FLF8uRCxfLkUsXy5hbCxfLkVdLF8uR107Xy50cWI9WzAsXy5ycWIsLTMsXy5DLFswLF8uQyxfLkVdLC0xXTt2YXIgdXFiPVswLDEsXy5HXTt2YXIgdnFiPVswLF8uaWwsXy5DXTt2YXIgd3FiPVswLF8uRCxfLkUsXy5HLC0xLF8uRCxfLkUsXy5EXTt2YXIgeHFiPVswLFsyLDNdLF8uRyxfLklsLFswLF8uaWwsLTFdLF8uSWwsWzAsXy5FbF1dO3ZhciB5cWI9WzAsXy5FLC0xLF8uRWxdO3ZhciB6cWI9WzAsXy5FLC0yLF8uRCxfLkcsXy5ELF8uRV07dmFyIEFxYj1bMCxfLkMsLTJdO3ZhciBCcWI9WzAsXy5FXTt2YXIgQ3FiPVswLEFxYixbMCxfLkMsLTNdLEJxYl07Xy5EcWI9Wy0yNix7fSxfLkUsQ3FiLC0xLF8uRSwtMyxfLkcsXy5FLC0xLF8uRyxfLkUsXy5DLC0xLF8uRix6cWIsenFiLC0xLF8uRCxfLkcsXy5ELC0yLF8uRixbMCxfLkUsLTMsXy5TbCxfLkUsLTEsaXFiLF8uR10sXy5GLFswLF8uRSwtMSxbMCxfLkUsLTQsXy5ZaywtMV1dLF8uRV07Xy5FcWI9Wy0xLHt9XTt2YXIgRnFiPVswLF8uaWwsXy5DXTtfLkdxYj1bMCxfLklzLF8uaWxdO3ZhciBIcWI9Wy0xMyx7fSxfLkUsLTEsXy5DLC0xLF8uSmwsXy5FLF8uRyxfLkUsXy5HLCgpPT5IcWIsXy5FLC0xXTt2YXIgSXFiPVswLF8uRSwtMSxfLkRdO18uSnFiPVswLF8uQyxfLkUsLTEsXy5pbCxfLkMsXy5HLF8uRSxfLkQsXy5FLC0xLF8uRCxfLkUsLTEsXy5GLFswLF8uam0sSXFiLF8uRSwtMixfLkMsLTEsXy5Mcl0sSXFiLF8uRSwtMixfLkpsLF8uQ107dmFyIEtxYj1bMCxfLlNsLF8uRixbMCxfLnBsLF8uam1dXTt2YXIgTHFiPVswLF8uRSwtMixfLmlsLC0xLF8uRCxLcWIsXy5HLFswLF8uRSwtMyxfLkddLDEsXy5GLFswLF8uRyxfLkYsWzAsXy5HLF8uRV1dLFswLF8uRCwtMSxbMCxfLkUsLTRdLF8uRV1dO3ZhciBNcWI9WzAsXy5HLF8uWWssXy5FLF8uRyxfLkUsMSxbMCxbMCxfLkQsXy5Za10sWzAsXy5EXSxfLllrLF8uRyxfLkYsWzAsXy5FXV1dO3ZhciBOcWI9WzAsXy5GLFswLF8uRyxbMCxfLkQsWzAsXy5FLC0yXSxfLkQsWzAsWzAsXy5FLF8uRyxfLkVdLFswLF8uRSwtMV1dXV0sXy5TbCwtMV07dmFyIEpzPVswLF8uRCxfLkcsXy5ELC0xLF8uZ2wsXy5HLF8uRCxfLmdsLF8uRSxfLkYsTXFiLE5xYixfLkQsXy5GLFswLF8uRSxfLkcsXy5ELFswLF8uRV1dLF8uRixbMCxfLkYsWzAsXy5DLC0xXSxfLkVdLF8uRywzLFswLF8uRixMcWJdLF8uRixbMCxfLkcsXy5FXSxfLkQsMixfLkYsWzAsXy5HXSwyLF8uU2wsXy5qbSwxLF8uRixOcWIsMSxOcWJdO3ZhciBPcWI9WzAsSnMsXy5FLC0xNCxbMCxfLkYsWzAsXy5FLC0xLF8uRyxfLkUsXy5HLF8uRSwtMV1dLDIsWzAsXy5HXSxfLkVdO3ZhciBQcWI9WzAsXy5FXTt2YXIgUXFiPVstNTAwLF8uRSxfLkcsNDk3LF8ueXNdO3ZhciBScWI9WzAsWzFdLF8uR2xdO3ZhciBTcWI9WzAsXy5ZayxfLkddO3ZhciBUcWI9Wy01MDAsXy5FLC0xLDIsXy5DLDQ5NCxfLnlzXTt2YXIgVXFiPVswLF8uRixbMCxfLkcsWzAsXy5hbCxfLkddLF8uR10sXy5ELF8uRixbMCxfLkcsWzAsXy5hbCxfLkddXSwtMyxfLkYsWzAsXy5HLF8uQ10sLTEsXy5UbCwtM107dmFyIFZxYj1bMCxbMyw0LDUsN10sXy5HLC0xLF8uSWwsanFiLF8uSWwsVXFiLF8uSWwsWzAsXy5DLC0xXSxfLkYsKCk9PlZxYixfLldsXTt2YXIgV3FiPVswLF8uRSwtMV07dmFyIFhxYj1bMCxfLkUsLTNdO3ZhciBZcWI9WzAsWzJdLF8uRyxfLklsLFRxYl07dmFyIFpxYj1bMCxfLkUsWzAsXy5DLC0xXSxfLkcsXy5FXTt2YXIgJHFiPVswLF8uRixUcWJdO3ZhciBhcmI9WzAsMSxfLnVsXTt2YXIgYnJiPVswLF8uRixbMCxfLkYsYXJiLF8uQyxfLkYsWzAsXy5DXV1dO3ZhciBjcmI9WzAsXy5FLFswLFswLF8uWWssWzAsXy5ZaywtMl0sWzAsXy5ZaywtMl1dLF8udWwsMSxfLkYsWzAsXy5HLF8uRixbMCxbMyw0LDVdLDEsXy5FLF8uSWwsYXJiLF8uSWwsYnJiLF8uSWwsWzAsXy5GLGJyYl0sXy5GLFswLF8uR11dLF8uRSwxLFswLFswLFswLF8uYWwsLTJdLFswLF8uYWwsLTJdLFswLF8uWWssLTJdXV1dLFswLF8uRixbMCwxLF8uRSxbMCxfLmFsLC0yXSxfLmFsLC0xLF8uRF1dXSxfLkpsXTt2YXIgZHJiPVswLFsyLDMsNCw1XSxfLkcsXy5HbCxfLnNsLF8uR2wsLTFdO3ZhciBlcmI9WzAsXy5HXTt2YXIgZnJiPVswLF8uRyxfLmFsLC0xLGVyYiwtMSxfLlNsLF8uRV07dmFyIGdyYj1bMCxbMCxfLkYsZnJiXSxbMCxfLkcsLTEsXy5GLGVyYixmcmJdLFswLF8uU2xdXTt2YXIgaHJiPVswLF8uQyxfLllrLC01XTt2YXIgaXJiPVstNTAwLFs1LDE2XSxfLkYsXy5FcyxfLkcsXy5TbCxfLkcsXy5JbCxqcWIsXy5KcSxfLkVzLF8uRyxfLkVzLFVxYixfLlNsLF8uRSxfLm5sLFZxYixfLkQsXy5XbCw0ODMsXy55c107dmFyIGpyYj1bMCxbMSw4LDldLF8uSWwsXy5FcyxfLkcsXy5ZaywtMyxfLkUsXy5XbCxfLklsLGdyYiwxLF8ubmxdO3ZhciBrcmI9WzAsXy5DLF8uRixocmJdO3ZhciBscmI9WzAsa3JiLFswLF8uRixbMCxbMiwzXSxfLmFsLF8uZmwsXy5XbF1dXTt2YXIgbXJiPVswLFsyLDNdLF8uRyxfLklsLFswLF8uRixbMCxfLllrLC0xXV0sXy5JbCxbMCxfLllrXV07dmFyIG5yYj1bMCxfLmFsLF8uR107Xy5vcmI9WzAsXy5FcyxfLkNzLF8uYWwsXy5GLF8udXBiLF8uRixfLmxxYixfLkYsXy5BcyxfLkYsXy5vcWIsXy5GLF8ucHFiLF8uRixfLkVzLF8uQXMsMSxfLkYsWzAsXy5FcyxfLkYsWzAsXy5FLC0xXSxfLkUsXy5DLF8uRSwtMixfLmdsLC0xLFNxYixfLkpxLF8uRixUcWIsMSxbMCxfLkpsLF8uRSwtMSwyLF8uQ10sLTEsXy5FXSxfLkYsXy5PcGIsXy5GLF8uRXMsXy5HLF8uRCxfLkYsXy5NcGIsMSxfLkVzLF8uWWssMyxbMCwxMixfLkYsWy01MDAsXy5HLF8uYWwsMSxfLmFsLF8uRSw0OTQsXy55c10sMixfLkddLF8uSnEsWzAsXy5hRWFdLC0xLF8uRixbMCxfLkcsXy5GLFdxYl0sMSxbMCxfLkNdLFstNTAwLF8uRXMsXy5GLF8uRXMsXy5HLF8uRXMsXy5GLGlyYixfLkYsWy01MDAsXy5DLF8uRCxfLkcsLTEsXy5hbCwtMSxfLkYsaXJiLF8uRixbMCxfLkVzLF8uQyxscmIsXy5GLGpyYixfLkUsbXJiLF8uRCwtMSxfLm5sLC0xXSxfLmFsLC0xLF8uRyxscmIsXy5GLF8uRXMsXy5GLGpyYiwKXy5HLF8uRSxfLm5sLF8uRixbMCxfLkddLDEsXy5GLFswLFsxLDJdLF8uSWwsWzBdLF8uSWwsWzBdXSwxLF8uRCxfLkcsNDc2LF8ueXNdLDEsXy5ELF8uYWwsLTEsMSxfLkcsLTMsXy5ELF8uRixfLkVzLF8uRixbMCxfLkMsLTFdLF8uRCwxLF8uRyxfLmJsLF8uRyxTcWIsLTEsXy5HLC0zLF8uRCxfLkcsXy5GLFstNTAwLF8uRXMsXy5HLC0xLDQ5NixfLnlzXSwxLF8uRixbMCxfLkVzLF8uQyxfLlNsXSxfLmFsLF8uRCxbMCxfLkcsXy5GLGlyYixfLmFsLC0xLF8uRCxfLllrXSxfLmFsLF8uRixbMCxfLnBxYixfLkVzLG1yYiwxMixfLkVdLF8uRixfLkVzLF8uRixbMCxbMCxbNSw2LDddLDIsXy5HLF8uRixbMCxqcWIsXy5TbCwxLFVxYl0sXy5JbCxucmIsXy5JbCxbMCxucmJdLF8uSWwsWzBdLF8uR10sXy5HXSwtMixfLmFsLC0xLF8uRixbMCxfLmFsLC0xXSxbMCxfLkddLDEsXy5GLFswLF8uYWwsLTEsXy5HXSxfLkYsXy5FcywtMSxfLkYsWzAsXy5ubCxfLkcsXy5ZaywtMSxfLkRdLC0xLApfLkYsXy5FcyxfLkYsWzAsXy5HLF8uWWssLTFdLF8uRixbLTUwMCxfLkcsNDk4LF8ueXNdLDQzLFswLF8uRixpcmIsXy5GLFswLF8uRXMsXy5DLC0xLF8ubmwsLTFdLC0xXSwzOTksXy55cywtNSwxLF8ueXMsLTNdLFswLF8uRixfLkVzLC0xLF8uRXMsMSxfLkVzXSxbMCxfLkUsLTEsXy5DLFNxYiwxLF8uRixbMCxfLkUsLTIsXy5HXSxfLkcsXy5FLC01LF8uRixUcWIsXy5FXSxbMCxfLmdsLF8uRXMsXy5ZayxfLmFsLF8uRixfLkVzXSw3LFswLF8uRixfLkVzLDEsXy5HLF8uQmwsLTEsMSxfLkYsXy5Fc10sXy5OcGIsWzAsXy5DLF8uRyxfLkVzLC0xLF8uRixbMCxfLkcsXy5FXSxfLkYsXy5Fc10sWzAsXy5GLF8uRXNdLFswLF8uR10sMSxbMCxfLkddLFswLDEsXy5ELC0xLF8uRyxfLkYsWzAsVnFiXSxfLkYsV3FiXSwxLFswLF8uRyxfLkYsWy01MDAsXy5tcWIsXy5HLF8uRixfLnVwYixfLkVsLF8uRCwxLF8uU2wsXy5GLG5xYixfLndwYixfLkcsXy5GLF8uRXMsNDg4LF8ueXNdLDQsanFiLAoxLFswLF8uZ2xdLFswLF8uRiwkcWIsXy5GLFswLF8uRixYcWIsJHFiLGpxYixfLkYsWzAsXy5GLFhxYixfLlNsLF8uRixbMCxfLkYsWHFiLF8uRixbMCxfLkYsWHFiLG5xYixfLkMsXy5HLF8uU2wsLTIsWzAsWzAsXy5DLC0xLF8uR10sWzAsXy5ZaywtMSxfLkddLC00XSxfLkYsWzAsMSxfLkYsWHFiXSxfLkMsXy5TbCxfLkYsWnFiLFswLF8uQyxfLkYsWHFiXV1dLF8uRixbMCxbNl0sXy5GLFhxYixfLkYsWnFiLG5xYixZcWIsXy5HLF8uSWwsWzAsXy5FLF8uRixbMCxfLkUsLTJdLF8uTHIsXy5FXSxfLkcsXy5hbF0sXy5GLFpxYixZcWIsXy5FXSxfLlNsLF8ucGxdLFswLF8uRF1dLDIsXy5WcGIsWzAsXy5GLF8uRXNdLF8uRXNdLFswLF8uRixbMCxfLkMsLTEsMSxfLnVwYiwxLF8uRXMsXy5DLF8uRywtMV1dLFswLF8uRixbMCxfLkUsXy5hbCxfLkQsXy5hbCwtMV0sXy5FXSwxLFswLDYsXy5GLFswLF8uQXMsXy5hbF0sXy50bF0sWzAsXy5DLC0xLF8uRCwtMSxfLkMsXy5KcV0sMixfLkNzLApbMCxfLkYsXy5FcyxfLkcsXy5GLF8uRXMsXy5Fc10sWzAsXy5ZaywxLFswLF8uWWtdXSxbMCxfLkddLFswLF8uR10sWzAsXy5HLC0xXSwxLF8uRixbLTUwMCxbMCxfLkUsLTEsXy5HXSwtMixfLkcsXy5FLF8uQyxfLllrLF8uRCxfLkpxLDEsXy5GLFswLF8uRSwzLF8uRV0sLTEsXy5KcSxfLmdsLF8uYWwsMixfLkJsLF8uRSw0ODAsXy55c10sWzAsXy5ELC0xLF8uRywxLF8uRyxTcWIsLTEsMyxTcWIsXy5EXSxbMCxfLmFsLF8uRixfLkVzXSxfLkYsVHFiLFswLF8uRixbMCxRcWIsXy5HLF8uRSxfLkQsLTFdXSxbMCwzLFswLFswLF8uR11dLDcsWzAsXy5GLFswLF8uQyxfLkUsXy5HLGRyYl1dLF8uRSwtM10sMSxfLkYsWzAsXy5KcSxfLkUsXy5ubCwtMSxfLkVdLF8uUXBiLF8uUHBiLFstNTAwLF8uRSxfLkVzLDQ5NyxfLnlzXSwyLF8uRixfLkZwYixbLTUwMCxfLkYsXy5FcyxfLkYsWzAsMSxfLkcsMTEsVnFiXSxfLkYsXy5FcyxfLkQsNDk1LF8ueXNdLDEsWzAsXy5GLF8uRXMsXy5WcGIsCl8uRixbMCxqcWIsXy5TbCxfLkcsXy5TbF0sXy5ELF8uRixbMCxfLkcsLTEsXy5GLFdxYixfLkYsXy5HcGIsXy5ELF8uRixbMCxfLkYsWzAsXy5DLC0xLF8uRCxfLkYsXy5HcGIsXy5DXSxqcWIsLTEsXy5EXSxfLlNsXSxfLkYsWzAsXy5FcyxfLkRdXSxfLnBxYixfLkYsWzAsZHJiLF8uR10sXy5GLF8uUnBiLF8uRixbMCxfLkVzXSxbMCxfLkYsWzAsXy5FcywxLF8uQ10sXy5Fc10sXy5GLF8uRXMsXy5GLGtyYixocmIsWzAsXy5GLFswLFFxYixfLkRdXSxbMCxfLkFzXSxfLkVzLC0xLF8uRixfLkVzLFswLF8uRixfLkVzXSxncmIsWzAsXy5hbF0sWzAsXy5GLGlyYixfLlNsXSxfLkYsXy5FcyxbMCwyLF8uRixfLkVzLFswLF8uRixfLkVzLC0xXV0sWzAsXy5GLF8uRXNdLFswLF8uRixbMCxbMSwzXSxbMiw0XSxfLklsLFNxYiwtM11dLFBxYixbMCw4LF8uRixbMCxfLkVzLF8uRV1dLFswLF8uRixfLkVzLF8uRyxfLkVsXSxfLkYsUHFiLF8ucHFiLFswLF8ucHFiLC0xXSxjcmIsLTIsWzAsXy5FLApfLkYsXy5Fc10sWzAsXy5GLFswLF8uRSxfLnVwYixfLkRdLF8uRSxfLkYsWzAsXy5FLF8uRixfLkVzLC0xXSxfLkYsWzAsXy5FLF8ucHFiLC0xXV0sXy5GLF8uRXMsY3JiLFswLFswLF8uRixbMCxfLkMsXy5Fc11dXSxfLkYsXy5tbSxbMCxbMCxbMSw0LDEwXSxfLklsLF8uRXMsMixfLkdsLDUsXy5XbF0sanFiLFswLF8uRyxTcWJdLC0xLFNxYiwtMSxfLkYsWzAsXy5FcyxfLllrLC0xXSxfLkYsWzAsXy5GLF8uRXMsLTEsXy5Fc10sU3FiLDIsXy5TbCxVcWIsNixbMCxfLkddXSxbMCwxLF8uRXMsXy5GLF8uRXMsXy5HLDEsXy5GLFswLF8uRSxfLkddLF8uRixbMCxfLkUsLTJdLF8uRixbMCxfLkUsLTJdXSxbMCxbMCxfLkYsWzAsXy5DLF8uRXMsXy5ZaywtMV1dXSxbMCxfLkYsWzAsXy5FLC0xXSxfLkUsXy5GLFswLDEsXy5HLF8uWWssLTJdLF8uRXNdLF8uRixScWIsWzAsXy5HXSxbMCxfLkVzLF8uRCxfLkYsWzAsXy5ubCxfLkcsWzAsXy5DLC0xXSxfLkQsXy5FXV0sXy5GLFswLFJxYiwKU3FiLC0xXSwxNzMsWzAsXy5KbCxbMCxfLmdsLC0yXSxfLkcsWzAsXy5FcywtMixbMCwyLF8uRixfLkVzXSxfLkYsXy5Fc10sXy5KbCxbLTIse30sXy5GLFswLF8uRixbMCxfLkYsWzAsXy5DLF8uRV1dLFswLF8uRyxfLkVdXV0sWzAsXy5GLF8uRXMsLTFdXV07dmFyIHByYj1bMCxfLmFsXTt2YXIgcXJiPVswLF8uRWxdO3ZhciBycmI9WzAsXy5DLC0yLF8uR107dmFyIHNyYj1bMCxfLkcsXy5FXTt2YXIgdHJiPVstNDUse30sXy5FLC0xLF8uaWwsXy5FLC0xLF8uSGwsWzAsNixfLkUsXy5DXSwyLF8uSGwsWzAsOSxfLkUsXy5HLF8uQywyMixfLkMsMixfLllrXSwzLF8uSGwsWzAsMTMsXy5FLF8uQywxNCxfLkMsNSxfLkMsNCxfLkMsMyxfLkpsXSwyLF8uRixzcmIsMSxfLkhsLFswLDE4LF8uRSxfLmlsLF8uRSwyLF8uRCxfLkMsMixzcmIsMixzcmIsMSxfLkMsOSxfLmFsXSw0LF8uSnEsNSxfLkcsMixfLkYsWzAsXy5FLF8uQyxfLkUsXy5pbCxfLllrLF8uRCxfLkcsXy5DXSwxLF8uQywyLF8uRywxLF8uRSxfLkcsMSxfLkpsLDEsXy5kbF07dmFyIHVyYj1bLTE2LHt9LF8uRSxfLkMsLTIsXy5FLC0yLF8uRyxfLkQsXy5FLF8uSnEsXy5ObCxfLmFsLFswLF8uVGxdLF8uRV07Xy52cmI9Wy0zNix7fSxfLkUsLTIsXy5DLF8uRSxfLkVsLDEsXy5FLF8uRix1cmIsXy5GLFstMTUse30sXy5FLC0xLF8uZHFiLDEsXy5DLF8uRixbLTExLHt9LHJyYiwyLF8uRywtMSxfLkpxLF8uWWssXy5HLFswLF8uRyx0cmJdLF8uR10sdHJiLDEsXy5HLF8uQyxfLkpxLF8uWWssWzAsXy5HLF8uRix1cmIscnJiLF8uWWssXy5KcSxfLkcsXy5Za10sXy5GLFswLF8uRSxfLkcsXy5hbCxfLkpxLF8uQ11dLF8uRWwsXy5GLFstOCx7fSxfLkcscnJiLF8uRSwtMSxfLllrLC0xLF8uSnFdLF8uRiwoKT0+Xy52cmIsXy5KcSxfLkMsXy5ELF8uSmwsXy5GLFswLF8uQywtMSxfLkUsMSxzcmIsXy5GLFswLF8uQywtMSxycmIsXy5KcSxfLkVsXSxfLkpxLF8uQyxfLkcsXy5hbF0sXy5pbCwtNCxfLkYsWzAsXy5FLF8uYWxdLDEsXy5GLFswLHJyYixfLkpxXSxfLkQsXy5GLFstNCx7fSxfLkUsXy50bCxycmJdLF8udGwsXy5GLFswLF8uRyxfLkUsLTEsNCxfLkYsWzAsMyxfLkUsLTEsXy5DLF8uSnEsCjgsXy5EXSxycmIsXy5DLC0yLF8uSnEsXy5FLF8uRCwxLF8uYWxdLF8uQyxfLkQsLTEsXy5GLFswLF8uRSwtMSxfLkMsLTEscnJiXSxfLldrLF8uWGsoXy5FLFswLF8uRixbLTgse30sXy5DLC0zLF8uRSxfLmFsLF8uV2ssXy5sRWFdXSldO3ZhciB3cmI9Wy01OSx7fSxfLkVsLC0xLF8uRSxbMCxfLkUsLTEsXy5HLC0yXSxfLkUsLTEsXy54cyxfLkQsLTEsXy5FLC0xLF8uRWwsXy5TbCxfLmlsLF8uRWwsXy52cmIsXy5XayxbITAsXy5FLF8uaWxdLF8uRCxfLkYsWzAsXy5FXSxfLnZyYixbMCxfLkVdLF8uRixbMCxfLkUsLTFdLFswLF8uRCwtM10sXy5XayxbITAsXy5FLHFyYl0sWzAsWzAsXy5TbF1dLF8uRyxfLldrLF8uWGsoXy5FLFswLF8uRixbMCxbMSwyXSxfLklsLFswLF8ubW0sXy5GLFswLFsxLDJdLF8uSWwsWzAsXy5FXSxfLklsLFswLF8uQyxfLkQsXy5HLF8ubW1dXSxfLkcsLTEsXy5FLC0yLF8uRCxfLm1tLF8uRCxfLm1tXSxfLklsLFswLF8uR11dXSksXy5ELC0xLF8uRSxbMCxfLkdzLF8uRV0sXy5FLF8uRixbMCxfLkUsXy5EXSxfLkUsXy5ELF8uRSxfLldrLF8uWGsoXy5FLFswLF8uRixbMCxfLlVsLF8udWwsXy5GbCwtMl1dKSxfLkUsWzAsXy5HLF8uRF0sXy5UbCxfLmptLF8uRWwsWzAsXy5DLC0xLF8uRV0sXy5HLApbMCxfLkUsXy5FbCxfLmptLFswLFswLF8uS2wsXy5DXSxfLkUsWzAsXy5FLF8uQ11dLF8uV2ssWyEwLF8uRSxxcmJdXSw1LF8uRixbMCxbMl0sMSxfLklsLFswLDEsXy5HLC0xXV0sMSxfLmptLDMsWzAsMSxfLkUsXy5HLC0xLDEsXy5FLF8uRywtMixfLkQsXy5GLFswLF8uRywtMV0sXy5HLF8uRCxfLkcsXy5FbCxfLkQsLTEsXy5HXSxfLldrLF8uWGsoXy5FLFswLF8uRWwsXy5XayxfLlhrKF8uRSxbMCxfLk9sXSldKV07dmFyIHhyYj1bMCxfLkUsXy5HLC0yLF8uSXMsXy5TbF07dmFyIHlyYj1bMCx4cmIsXy50bF07dmFyIHpyYj1bMCxfLkZsLC03LDIsXy5GbF07dmFyIEFyYj1bMCxfLkUsMSxfLkcsXy5ELF8uRix4cmIsXy5DLF8uRyxbMCxfLkQsLTFdLF8uRSxfLkcsXy5FLF8uRyxfLkQsXy5HLF8uRSx6cmIsXy5FLFswLF8uRywtMV0sXy5FLC0xXTt2YXIgQnJiPVswLEFyYiwtMSxfLkVdO3ZhciBDcmI9WzAsXy50bCwtMixBcmIsXy5GLFswLF8uQyxfLkUsXy50bF0sXy5GLEFyYl07dmFyIERyYj1bMCxBcmIsXy5ELF8uTmwsXy5HLF8uRV07dmFyIEVyYj1bMCxfLkcsXy5FLC0xLF8uRix6cmJdO3ZhciBGcmI9WzAsXy5HLF8uRSwtMSxfLkMsXy5FbF07dmFyIEdyYj1bLTIzLHt9LDEsWzAsRnJiLDEsRXJiLF8uRixFcmIsXy5GLEZyYixfLkYsWzAsXy5HLF8uRSwtMSxfLkVsXSxbMCxfLkVsLC0xLF8uRV1dLFswLFsxLDIsMyw2LDcsOV0sXy5JbCxBcmIsXy5JbCxDcmIsXy5XbCxbMCxfLkcsLTEsXy5TbF0sQ3JiLF8uSWwsWzAsQXJiLC0xXSxfLklsLFswLF8uRixBcmIsXy5HLC0xXSxfLkUsXy5XbCxfLkYsWzAsXy5HLF8uQywtMV1dLDEsRHJiLEFyYixCcmIsWzAsXy5GLHlyYix5cmJdLF8uRyxfLkYsWzAsXy5HXSxfLkYsWzAsMyxfLkcsXy5DXSwzLF8uRixCcmIsMSxbMCxfLkQsXy5GLERyYixEcmIsXy5GLERyYl0sWzAsXy5DLEFyYixfLkYsQXJiLF8uQywtNyxfLmlsLC0xXSxfLkVsLFswLEJyYixfLkYsQnJiXSwoKT0+R3JiLFswLF8uRixBcmJdXTtfLkhyYj1bMCxfLkUsXy5FbCxfLkUsd3JiLF8uRixbMCxfLkUsXy5FbCxfLkUsd3JiXSxHcmIsWzAsXy5FLC0zXSxbMCxfLkddXTtfLklyYj1bMCxfLkVdO3ZhciBKcmI9WzAsXy5FLF8uZ2xdO3ZhciBLcmI9WzAsWzIsMyw0LDUsNiw3XSwxLF8uSWwsWzBdLF8uSWwsWzAsMSxfLmptXSxfLklsLFswLF8uam0sXy5GbCxfLmptXSxfLklsLFswLF8uRmwsXy5qbSwtM10sXy5JbCxbMCxfLkZsLF8uam0sLTJdLF8uSWwsWzAsXy5qbSwtMl1dO3ZhciBMcmI9WzAsXy5qbSwtMV07Xy5NcmI9WzEsMiwzLDQsNSw2XTtfLk5yYj1bMiwzLDQsNSw2LDcsOCw5LDExLDEyLDEzLDE0LDE1LDE2LDE3LDE4LDE5LDIwLDIxLDIyLDIzLDI0LDI1LDI2LDI3LDI4LDI5LDMwLDMxLDMyLDM0LDM1LDM2LDM3LDM4LDM5LDQwLDQxXTtfLk9yYj1bNCw3XTt2YXIgUHJiPVswLF8uRSxfLmlsXTtfLlFyYj1bMCxfLkUsXy5pbF07dmFyIFJyYj1bLTE4LHt9LF8uRyxfLmFsLF8uRSwxLF8uYWwsLTcsXy5ELDEsXy5GLCgpPT5ScmIsXy5hbCwtMV07Xy5TcmI9Wy05LHt9LF8uRSxfLkMsMSxfLkYsKCk9Pl8uU3JiLF8uRixScmIsXy5hbCwtMl07Xy5Mcz1bLTQse30sXy5GLF8uU3JiLFstNix7fSxfLmFsLF8uRixbLTEwLHt9LF8uRyxfLmFsLC03XSxfLkcsXy5hbCwtMV0sXy5HXTt2YXIgVHJiPVswLF8uRSxfLkddO18uVXJiPVswLF8uTXJiLF8uR2wsXy5tbCxfLiRrLF8uRGwsXy5HbCxfLklsLFRyYl07Xy5Ncz1bMCxfLkMsLTMsXy5GLCgpPT5fLk1zXTt2YXIgVnJiPVswLF8uRixbMCxfLkUsXy5hbCxfLkcsXy5GLFswLF8uRSxfLkddLF8uRSxfLk1zLF8uRWwsLTFdLF8uYWxdO3ZhciBXcmI9WzAsXy5GLF8uRnBiLF8uRyxbMCxfLnBsLF8uR11dO3ZhciBYcmI9WzBdO3ZhciBZcmI9WzAsWzEsMiw1LDYsNyw5LDEwXSxfLklsLFswLFszXSwxLF8uRixfLk1zLF8uSWwsWHJiXSxfLklsLFswLFsxLDJdLF8uSWwsWzBdLF8uSWwsWzAsXy5DXSxfLkUsLTEsXy5FbCxfLkYsXy5Nc10sMixfLklsLFswLF8ubmwsWzAsWzAsXy5FLC0xXSxbMCxfLkVdLF8uam0sXy5JcyxbMCxfLmlsLF8uRV0sMSxbMCxfLkddLFswLFsxLDIsM10sXy5JbCxbMF0sXy5JbCxbMF0sXy5JbCxbMF1dLF8uRywtMSxfLmFsLF8uT25dXSxfLklsLFswLFs2XSxfLk9uLF8uRixfLk1zLF8uRyxfLkYsXy5NcyxbMCxfLkUsLTFdLF8uSWwsWHJiXSxfLklsLFswLF8uT24sXy5DLC0xLF8uRV0sWzAsMSxfLkYsXy5Nc10sXy5JbCxbMF0sXy5JbCxbMF1dO3ZhciBOcz1bMCxfLlRsXTt2YXIgT3M9WzAsXy5GLFswLF8uZ2wsXy5EXV07dmFyIFpyYj1bMCxbMCxfLllrLF8uRF0sLTFdO3ZhciAkcmI9WzAsXy5TbCxfLkQsT3MsWnJiLE5zXTt2YXIgYXNiPVswLF8uRSwtMSxfLkYsWzAsXy5DLF8uRWxdLF8uRiwoKT0+YXNiXTtfLmJzYj1bMCxfLkUsXy5hbCxfLkUsXy5GLFswLF8uRyxfLmFsXV07dmFyIGNzYj1bLTE1LHt9LF8uRCwtMSxfLllrLDEsXy5ZaywtMSxfLkcsXy5ZaywtMyxfLkcsLTEsWzAsXy5DXV07Xy5kc2I9WzAsXy50bCxfLmtsLF8uemwsXy5GLFswLF8uaWwsXy5Za10sXy5xbCxfLmtsLC0xXTtfLmVzYj1bMCxfLkcsLTEsXy5ELC0xXTtfLmZzYj1bMCxfLkUsLTJdO18uZ3NiPVswLF8uRSwtMSxfLkQsLTMsXy5FLC0xXTt2YXIgaHNiPVswLF8uRywtNl07Xy5pc2I9WzAsXy5DLFswLF8uRixbMCxoc2IsXy5FLDMsXy5FXSxoc2JdLF8uYWxdO3ZhciBqc2I9WzAsXy5HLF8uYWxdO3ZhciBrc2I9WzAsXy5DLF8uRCwtMSxfLkVsXTt2YXIgbHNiPVswLF8uRSxfLkcsLTQsXy5EXTt2YXIgbXNiPVswLF8uRCwtMSxfLkUsLTFdO3ZhciBuc2I9WzAsXy5ELC0xXTt2YXIgb3NiPVswLF8uRF07dmFyIHBzYj1bMCxfLkQsLTNdO3ZhciBxc2I9WzAsWzAsXy5pbCxfLkUsXy5ELC0xXSxbMCxfLmlsLF8uRV0sXy5TbF07Xy5yc2I9Wy01LHt9LFswLFsxLDIsNV0sXy5JbCxbMCxuc2IscHNiLFswLFsxLDJdLF8uRGwsXy5JbCxtc2IsXy5ELC0xXSxbMCxfLkUsXy5HXSxvc2JdLF8uSWwsWzAsbnNiLHBzYixtc2Isb3NiXSwyLF8uSWwsWzAsbnNiLHBzYixvc2JdLFswLFsyLDMsNCw2LDcsOSwxMF0sXy5HLF8uSWwsWzAsXy5ELC0xXSxfLklsLFswLF8uRSxfLkRdLF8uSWwsWzAsXy5EXSxfLkQsXy5JbCxbMCwxLF8uR10sXy5JbCxbMF0sXy5GLHFzYixfLklsLFswXSxfLklsLFswXV0sXy5EXSxfLlNsLF8uRyxfLkYscXNiXTt2YXIgc3NiPVswLF8uRixbMCwyLF8uRSxfLkcsLTEsXy5FLF8uT24sXy5FLDEsWzAsWzJdLF8uRyxfLklsLFswLF8uRSwtMV1dLF8uU2wsXy5yc2JdXTt2YXIgdHNiPVswLF8uYWwsXy5FLF8uRWwsXy5GLCgpPT50c2IsXy5hbF07Xy51c2I9WzAsXy5HLF8uQyxfLmFsLC0xLF8uRSwtMSxfLnBsLF8uRixbMCxfLkUsXy5ELF8uR11dO3ZhciB2c2I9WzAsMSxfLkQsXy5HLF8uRSxfLkcsWzAsXy5HLFswLF8uTmwsLTVdLFswLF8uYWxdXSxfLkcsLTEsXy5FXTtfLndzYj1bMCxfLkcsXy5DXTtfLnhzYj1bMCxfLkcsMSxfLkUsXy5pbCxfLkUsXy5HLF8uSXMsXy53c2JdO3ZhciB5c2I9WzAsXy5HLF8uWWtdO18uenNiPVswLFs5LDE1XSxfLkYsWzAsXy5FLF8uRixbLTIxLHt9LF8uRSxfLlNsLC0yLF8uRWwsXy5FLF8uRWwsLTEsXy5GLFswLF8uRyxfLkYsWzAsXy5ZayxfLkVdXSwyLF8uWWssWzAsXy5nbCwtMV0sXy5HLFswLF8uRSwtMV0sXy5ELF8uRSxfLlRsLF8uRWwsXy5Za10sXy5FLC0yXSxfLkUsLTEsXy5HLFswLHlzYixbMCxfLllrLC0xXSxfLllrXSxbMCxfLkUsLTEsXy5FbCwtMV0sXy5GLEhxYixfLkcsXy5JbCxbMCxfLmlsLC0zXSxbMCxfLnBsLF8uRSxGcWIsXy5HXSxbMCxfLkUsLTNdLFswLF8uaWwsMSxfLk5sXSxfLkcsLTEsXy5JbCxbMCxfLkcsXy5pbF0sXy5FXTt2YXIgQXNiPVswLF8uRixfLnpzYl07Xy5Cc2I9WzAsXy5HLF8uQywtMyxfLnBsLF8uQ107Xy5Qcz1bLTQxLHt9LF8uRSxfLllrLF8uRSxfLkYsWzAsXy5FLF8uWWtdLF8uQywtMSwxLF8uRXMsXy5BcyxfLnBsLF8uRSwtMSxfLkVsLF8ucWwsXy5FbCxfLnFsLF8uRWwsXy5GLGxzYixfLkYsWzAsXy5DLF8uWWtdLDEsXy5GLCgpPT5fLlBzLC0xLF8uRixbMCxfLkUsXy5FbCxfLllrXSxfLkpxLDEsXy5ZayxfLkYsa3NiLF8uRCxfLmFsLF8uRCxzc2IsXy5GLCgpPT5fLlBzLF8uRSxfLmFsLF8uRCxfLkVsLF8uRCxfLkYsXy5Cc2IsWzAsXy5TbF0sXy5DXTt2YXIgQ3NiPVswLF8uWWssXy5HLC0xLF8uRiwoKT0+Q3NiLF8uTXNdO18uRHNiPVswLF8uRywtMSxbMCxfLkcsLTFdLF8uR107dmFyIEVzYj1bMCxfLlNsLF8uRywtNCxfLkRzYixfLkddO3ZhciBGc2I9WzAsXy5DLC0xLF8uRV07dmFyIEhzYixLc2IsSnNiLExzYixNc2IsR3NiLE5zYixJc2I7SHNiPVswLF8uRywoKT0+R3NiLF8uR107S3NiPVswLF8uRiwoKT0+SXNiLF8uRiwoKT0+SnNiLF8uTmwsXy5HLF8uRiwoKT0+R3NiLCgpPT5Kc2IsXy5DLF8uRyxfLk5sLF8uRiwoKT0+Xy5RcywoKT0+R3NiLDEsQ3NiLEVzYiwoKT0+Xy5RcyxfLkYsKCk9Pl8uUXNdO18uUXM9Wy0xMix7fSxfLkYsKCk9PkpzYixfLkYsKCk9PklzYiwoKT0+S3NiLEZzYixfLk1zLCgpPT5Ic2IsXy5ELC0xLCgpPT5Hc2IsKCk9Pl8uUXMsXy5HXTtKc2I9Wy0xNCx7fSwoKT0+SXNiLC0xLF8uRywoKT0+SHNiLF8uRyxfLkQsKCk9PkdzYiwtMSxfLkcsQ3NiLCgpPT5fLlFzLC0xLF8uR107THNiPVswLF8udGwsXy5ObCxFc2IsKCk9PkpzYiwoKT0+SHNiLF8uRywtMl07TXNiPVswLENzYixfLkQsKCk9PklzYiwoKT0+SHNiLF8uRywtMV07R3NiPVswLCgpPT5Nc2IsKCk9PkxzYixfLkcsLTFdOwpOc2I9WzAsXy5HLC0yLCgpPT5Hc2IsXy5HLF8uU2wsXy5ELC0xLF8uRywtMSxzc2IsXy5ZcGJdO0lzYj1bMCxfLkMsXy5HLF8uQyxfLkQsXy5DLC0yLF8uWWssXy5HLF8uRSxfLkcsKCk9Pk5zYixfLkcsLTIsWzAsXy5HXSxbMCxbMyw0LDVdLF8uQywtMSxfLldsLC0yXSxfLkcsXy5ELF8uRywtMV07dmFyIE9zYj1bMCxfLkUsLTFdO18uUHNiPVswLFswLF8uUHMsXy5FLF8uTXMsXy5ELC0yLEFzYixfLkQsMSxfLkRdLFswLF8uUHMsXy5FLF8uTXMsXy5ELEFzYiwxLF8uRCwtMV0sWzAsXy5QcyxfLkUsXy5NcyxfLkQsLTEsQXNiLDEsXy5ELDEsXy5ELC0xXSxbMCxfLlBzLF8uRSxfLk1zLEFzYiwxLF8uRF0sWzAsXy5QcyxfLkUsXy5NcyxBc2IsXy5ELDEseXNiLF8uRCwxLF8uRF0sWzAsXy5FLF8uTXMsXy5FLF8uRCxfLkcsXy5ELEFzYixfLlBzXSxbMCxfLlBzLF8uRSxfLk1zLF8uRCwxLF8uRixPc2IsQXNiLF8uRF0sWzAsXy5QcyxfLkUsXy5NcyxfLkQsQXNiLF8uRF0sWzAsXy5QcyxfLkUsXy5NcyxfLkUsXy5EXSxbMCxfLkUsXy5Nc10sXy5ELF8uRixbMCxfLkUsXy5DLC0xLFswLF8uRSxfLk1zXSxfLlFzLF8uTXNdLFswLF8uUHMsXy5FLF8uTXMsXy5EXSxbMCxfLlBzLF8uRSxfLk1zLDEsXy5GLE9zYixBc2IsXy5EXSxfLkcsXy5TbCxbMCxfLkUsXy5HLF8uTXMsQXNiLF8uRF0sWzAsXy5FLF8uQyxfLk1zLF8uQ10sClswLF8uUHMsXy5FLF8uTXMsQXNiXSxfLkUsXy5Rc107dmFyIFFzYj1bMCxfLnRzLF8udXMsWzAsXy5VbCwtMV0sXy5scGJdO3ZhciBTc2IsVHNiO1NzYj1bMCwyLF8uRiwoKT0+Xy5Sc2JdO1RzYj1bMCwxLF8uV2ssXy5YayhfLkUsKCk9Pl8uUnNiKV07Xy5Sc2I9WzAsWzEsMiwzXSxfLklsLFswLF8uRixbMCxbMSwyLDNdLF8uR2wsXy5JbCxRc2IsXy5JbCxbMCxbMSwyLDMsNF0sXy5HbCxfLklsLFFzYixfLiRrLF8uRGxdXV0sXy5JbCwoKT0+VHNiLF8uSWwsKCk9PlNzYixfLkZsLF8udmwsLTEsXy5GbCwtMV07Xy5Vc2I9WzAsXy5GLFswLF8uRSwtMSxfLmFsLF8uRyxfLkYsWzAsXy5hbCxfLmlsLF8uRyxfLkQsWzAsXy5VbCwtMSwxLF8uQ2wsLTEsXy5VbF0sWzAsXy5FLC0xXSxbMCxfLkQsLTFdXSxfLkUsXy5FbCxbMCxfLkcsXy5hbF0sXy5FXV07Xy5Wc2I9WzAsQ3NiLF8uRyxfLk1zLEZzYl07Xy5Xc2I9WzAsXy5FXTt2YXIgWHNiPVswLF8uRCwtMTMsXy5FbCxfLkQsLTMsMSxfLkQsMixfLkQsLTksXy5TbCxfLkQsLTEsXy5FLF8uRCwtNF07dmFyIFlzYj1bMCxfLkVzLF8uRSxfLkFzLF8uRSxfLkNzXTt2YXIgWnNiPVswLF8uQyxfLkUsXy5NcyxfLkUsXy5EXTt2YXIgJHNiPVswLFpzYixfLkYsWnNiLC0xLF8uQywoKT0+JHNiLF8uTXNdO3ZhciBhdGI9WzAsXy5GbF07dmFyIGJ0Yj1bMCxfLkZsLF8uRixhdGJdO18uY3RiPVswLF8uVWwsLTEsXy5lbCxfLkZsLF8uQ2wsXy5VbCxfLnZsLF8uQ2wsXy52bCwtMSxfLkNsLDEsXy52bCxfLlVsLF8uZWwsYnRiLF8uRixidGIsXy5DbCxfLkZsLF8udWwsLTIsWzAsXy5GLFswLF8uRixhdGJdXSxfLkYsWzAsXy5VbCxfLmVsXSxfLkVsLFswLF8ubGwsXy5GbCxfLkNsXSxbMCxfLkddLF8uQ2wsXy5GbCxfLkNsXTt2YXIgZHRiPVswLF8uR107dmFyIGV0Yj1bMCxbMSwyLDNdLF8uR2wsLTJdO3ZhciBmdGI9WzAsWzEsMiwzXSxfLklsLFswLF8uRSwtMSxfLkcsXy5FXSxfLklsLFswXSxfLklsLFswXV07dmFyIGd0Yj1bMF07dmFyIGh0Yj1bMF07dmFyIGl0Yj1bMCxmdGJdO3ZhciBqdGI9WzAsWzFdLF8uSWwsWzAsXy5DLC0yLF8uR11dO3ZhciBrdGI9WzAsWzEsMl0sXy5JbCxbMCxfLnRsLF8uRF0sXy5JbCxbMCxfLkcsXy5DXV07dmFyIGx0Yj1bMCxfLkUsXy5HLFswLF8uRV0sWzAsWzMsNCw1XSxbNiw3LDgsOSwxMF0sXy5DLF8uY3FiLF8uSWwsWzBdLF8uSWwsXy5jcWIsXy53bCxfLklsLFswLF8udHNdLF8uSWwsWzBdLF8uSWwsWzAsXy5TbF0sXy5JbCxrdGIsXy5JbCxbMCxrdGIsXy5TbF1dLF8uRixbMCxfLkMsXy51c10sMSxfLnRzLF8uR107dmFyIG10Yj1bMCxbMyw0LDUsNl0sXy5HLF8uam0sXy5JbCxbMCxfLkVdLF8uSWwsWzAsXy5pbCwyLF8uRV0sXy5JbCxbMCxfLkVdLF8uSWwsWzAsXy5pbCxfLkVdXTt2YXIgbnRiPVswLEpzLF8uRSwtMixfLkYsWzAsXy5HLF8uRSxfLkRdLF8uRSxfLkYsWzAsSnMsWzAsXy5nbCxfLkddLF8uRV0sWzAsXy5ELC0xLFswLF8uRyxfLkYsWzAsXy5HLC0xXV0sXy5EXSxfLkcsWzAsXy5EXSwyLFswLF8uQyxfLmptXV07dmFyIG90Yj1bMCxfLmdsLC0xXTt2YXIgcHRiPVswLEpzLF8uRSxfLkQsXy5FLF8uRWwsXy5FLF8uRCxfLkUsNyxfLkUsLTEsMixfLkYsWzAsXy5FLFswLFswLF8uYWwsLTFdLFswLF8uYWwsLTFdXV0sWzAsXy5GbCxfLmxsXV07dmFyIHF0Yj1bMCxfLkUsXy5FbCxfLkVdO3ZhciBydGI9WzAsXy5FLFswLF8uRCxfLldwYiwtMSxfLkUsXy5HLF8uV3BiLF8uRCxfLkVsLC0xLF8uU2wsLTEsXy5ELF8uU2wsXy5HLF8uRWwsXy5nbCxfLkYsTXFiLDEsXy5FbCxbMCxfLmdsLC0xXSxvdGIsWzAsXy5FbCwtMSxfLkYsWzAsXy5HLF8uRSxfLkQsXy5pbCxfLkUsXy5HLF8uam1dXSxfLkcsWzAsXy5FLC0xLF8uR10sXy5HLDIsXy5GLFswLFswLF8uRSxfLmlsXSxfLkYsTHFiLF8uRSxfLkQsS3FiLF8uam1dLFswLF8uWWssXy5GLFswLF8uRSwtMV1dXSxfLkYsT3FiLF8uRixwdGIsXy5GLFswLEpzLF8uRV0sXy5GLFswLEpzLF8uRSxfLkcsXy5Hb10sXy5GLFswLEpzLF8uRSwtMixfLkYsWzAsXy5HXV0sXy5GLFswLEpzLF8uZ2wsXy5pbCxfLkUsXy50cyxfLkcsWzAsXy50cyxfLmptLC0xLF8uRywxLFswLF8uRSxfLmlsLC0xXV0sMSxbMCxfLkddLGx0YixqdGJdLF8uRixbMCxKcyxfLkUsLTNdLF8uRixudGIsXy5GLFswLEpzLF8uRSxfLkddLF8uRixbMCxKcyxfLkUsLTMsClswLFswLFswLF8uRSxbMCxfLkUsLTEsXy5DLF8uRSxfLkQsXy5HXV0sWzAsXy5FLC0xXSxfLkUsLTFdXSxfLkUsWzAsXy5HXV0sXy5GLFswLEpzLF8uRSwtNyxfLkcsXy5nbCwtMSxfLkQsXy5pbCwtMSxfLkUsLTIsMyxfLkMsXy5hbCxfLkYsWzAsXy5FLC0xXSxfLkUsXy5GLFswLF8uRSwtNF0sXy50cywtMV0sXy5GLFswLEpzLF8uRSxfLkQsXy5FLC00LDIsXy5HLF8uam0sXy5FXSxfLkYsWzAsSnMsXy5FLC0xMSxbMCxfLkFzLF8uRyxfLkNzXV0sXy5GLFswLEpzLF8uRSwtMV0sXy5GLFswLEpzLF8uRSwtMiwyLFswLF8uRSwtM10sXy5FXSxfLkYsWzAsSnMsXy5FLC00XSxfLkYsWzAsSnMsXy5nbCxfLkUsLTEsXy50cyxsdGIsanRiXSxfLkYsWzAsSnMsXy5FLC0xXSxfLkUsXy5HLF8uRiwoKT0+cnRiLDEsWzAsXy5FLC0xLF8uRixNcWIsXy5FLC0yXSxfLkUsXy5GLFswLEpzLF8uRV0sXy5GLFswLEpzLF8uRV0sXy5GLFswLEpzLF8uRV0sXy5GLFswLEpzLF8uRSwtMV0sXy5GLFswLApfLkUsLTEsXy5DLC0xLF8uRCxKcyxfLkRdLF8uRixbMCxbMiwzXSxKcyxfLkdsLC0xLF8uR10sXy5GLCgpPT5ydGIsXy5GLFswLEpzLDIsXy5HLF8uRF0sXy5GLFswLEpzLF8uRV0sXy5GLFswLEpzLF8uRywtMSxbMCxfLkcsXy5FXV0sXy5GLFswLEpzLF8uRSwtMl0sWzAsXy5FbCxbMCxfLkQsLTIsMSxfLkcsLTIsXy5EXSxbMCxbMCxfLmlsLF8uQyxfLmlsLF8uQyxfLkcsXy5DLC0xXSxbMCxfLkddLFswLF8uRWxdLFswLFswLF8uYWwsLTJdLF8uRSwtMSxfLkQsXy5KbCxfLkQsXy5FXV0sXy5ELFswLF8uRyxfLmlsLF8uRSxfLkcsXy5FLC0xLF8uRyxbMCxbMSwyXSxfLklsLFswXSxfLklsLFswLFswLF8uRV1dXSxbMCxfLkYsWzAsXy5DLF8uRywtMV1dLF8uRCxbMCxfLkddLF8uRixbMCxfLkUsLTFdLF8uRyxfLkRdLF8uRCxbMCxfLkRdLFswLF8uRyxfLkRdLFswLFswLF8uR11dLFswLFswLF8uRixbMCxMcmIsS3JiLFswLFswLDEsWzAsWzEsMiwzXSxfLklsLFswXSxfLklsLFswLDEsCl8uRmwsXy5HcyxfLkZsXSxfLklsLFswLF8uRmwsLTNdXV0sWzAsTHJiXSxbMCxfLkZsXSxbMCxfLmptLEtyYl1dXSxfLmptLFswLF8uRixbMCxfLnZsLC0yXV1dXSxbMCxfLkUsLTFdLFswLF8uRSwtMSxfLmlsLF8uQyxfLkYsWzAsXy5FLC0xLF8uYWxdLF8uRyxfLmlsLGR0Yl0sWzAsXy5FLC0xLF8uaWwsXy5FbCxfLkUsZHRiLF8uaWwsXy5DLF8uaWxdLDEsWzAsMyxfLkYsWzAsXy5FLF8uaWwsXy5FLF8uaWwsLTEsXy5nbCxfLkUsXy5ELF8uRSwtMV0sZHRiXSxbMCxfLkcsLTEsXy5GLGV0Yl0sWzAsXy5FLC0xLGR0Yl0sWzAsXy5HLC0xLF8uRixldGIsXy5HLC0xXV0sXy5GLFswLEpzLF8uRV0sXy5GLFswLEpzLF8uRSwtMixfLkddLF8uRixbMCxKcyxfLkUsLTJdLF8uRixbMCxKcyxfLkVdLF8uRixbMCxKcyxfLkUsLTJdLF8uRixbMCxKcyxfLkUsLTJdLF8uRixbMCxKcyxbMCxfLkQsXy5GLFswLFswLF8uTmwsXy5FXSwtMV0sXy5FbF0sWzAsXy5ZaywtMV0sXy5FLDEsXy5FXSxfLkYsClswLEpzLF8uU2wsXy5HLF8uRSxfLkYsWzAsXy5HLF8uQyxfLkVdLF8uRixbMCxfLkpsLF8uR11dLF8uRixbMCxKcyxfLlNsXSxfLkYsWzAsSnMsXy5FLF8uU2wsXy5HLC0xLF8uU2wsLTEsXy5ELG90YiwxLFswLF8uRV0sMSxbMCxfLkVsLC0xXSwyLFswLF8uaWwsXy5FLC0xXSw1LF8uRixudGIsNCxbMCxfLkQsXy5FXSwxLF8uR10sXy5GLFswLEpzLF8uRV0sXy5GLFswLEpzLF8uRyxfLkMsMixfLkddLF8uRixbMCxKcyxfLkUsLTEsXy5HLF8uRSwtMyxfLkQsXy5FXSwxLF8uRixbMCxKcyxfLkVdLF8uRixbMCxKcyxfLkcsXy5FXSw5LF8uRixbMCxKcyxfLkddLDQsXy5GLFswLEpzLF8uRywyLF8uaWxdLDMsXy5GLFswLEpzLF8uRSxfLm5sLC0xLF8uRSwtMyxfLmlsLF8uRywtMSxfLkUsXy5HLF8uRV0sMjYsWzAsXy5FXSxfLkYsWzAsSnMsXy5GLFswLF8uRSwtMV0sXy5HXSxfLkYsWzAsSnMsMSxfLkUsLTEsXy5qbV0sXy5GLFswLEpzLF8uRV0sXy5GLFswLFszLDVdLEpzLF8uRSxfLldsLApbMCxbMCxfLkVdXSxfLldsXSwyLF8uRixbMCxKcywxLF8uam1dLDIsXy5GLFswLEpzLF8uRV0sMyxfLkYsWzAsSnMsXy5FLF8uRixbMCxfLkcsXy5KbF0sWzAsXy5FLC0xXV0sXy5GLFswLDEsXy5HLF8uRSxKc10sXy5GLFswLEpzLFswLFsyXSxfLlVsLF8uSWwsWzAsbXRiXV1dLF8uRixbMCxKc10sMixfLkYsWzAsSnMsWzAsMixfLkUsXy5FbCxfLkYsWzAsXy5HLF8uRV0sXy5GLHF0YixfLkYsWzAscXRiLF8udHMsLTFdLF8uRixbMCxxdGIsXy5GLHF0YixfLnRzLC0xXSxfLkYsWzAscXRiLF8uRyxfLkxyLF8udHMsLTEsWzAsXy5ZaywtMl1dLF8uRixxdGIsXy5FbCwtMSxfLkUsWzAsXy5FLC0xLF8uRixbMCxfLmptLC0xLF8uR10sXy5FXSxbMCxfLkUsXy5HXV1dLDQsXy5GLFswLEpzLFswLFs2LDcsOCw5XSxbMCxbMCxbMSwyXSxfLklsLFswLFswLFsxLDIsMyw0XSxfLkRsLC0xLF8ud2wsXy5EbCxfLkddLC0xXSxfLklsLFswLFsxLDIsNCw1LDYsN10sXy5EbCwtMSxfLkcsXy5EbCwKLTNdLF8uRV0sMSxfLkVdLFswLF8uR10sMSxfLmptLF8uRyxfLldsLF8uRGwsLTJdXSw3LF8uRixbMCxKcyxbMCxfLmlsLC0xXSxfLkYsWzAsXy5FLF8uR11dLDEsXy5GLFswLEpzLFswLF8uRixbMCxfLkUsXy5HLF8uRV1dXSxfLkYsWzAsWzldLEpzLF8uRSw1LF8uRSxfLkdsXSwxLF8uRixbMCxKcyxfLkYsbHRiXSxfLkYsWzAsSnMsWzAsbXRiXV0sXy5GLFswLEpzLFswLG10Yl1dLF8uRixbMCxKcyxbMCwxLF8uRywtMV1dLF8uRixbMCxKcyxbMCxfLkddXSxfLkYsWzAsSnMsXy5DLC0xLF8uam1dLDEsXy5GLFswLEpzLFswLFswLFsxXSxfLklsLFswLF8uYWwsLTJdXSxbMCxfLmJxYixfLmFsLC0xLF8uQywtMSxfLmFsXV1dLDEsXy5GLHB0YixfLkYsWzAsWzMsNCw1XSxKcyxmdGIsXy5JbCxpdGIsXy5JbCxodGIsXy5JbCxndGIsXy5FLFswLFsxLDIsM10sXy5JbCxodGIsXy5JbCxndGIsXy5JbCxpdGIsXy5FXV0sNTMsXy5GLFswLEpzLF8uRSxfLkddXTtfLnN0Yj1bMCxfLkUsXy5ELF8uRSxfLlNsLF8uRixbMCxfLkcsMSxfLmlsLF8uRSwtMiw0LF8uRSxfLkQsXy5HLHJ0YixfLkQsXy5hbCxfLkYsWzAsXy5FLFswLFsxLDIsNF0sXy5obCxfLklsLFswLEpyYixfLmdsXSxbMCxbMSwzXSxfLm9sLF8uRixbMCwxLF8uTmwsXy5HXSxfLkdsXSxfLmhsLFswLF8uRixbMCxKcmIsXy5pbF1dXV0sXy5FLF8uRCxfLlBzLF8uRyxfLkQsXy5HLF8uYWwsXy5pbCwxLF8uWHBiLF8uRSxxc2IsXy5jdGIsXy5ELF8uRixfLm1tLF8uWWsscHJiLF8uR10sXy5FLF8uRWwsXy5NcyxfLkQsXy5QcyxfLkYsWzAsXy5FLF8uRyxwcmJdXTt2YXIgdHRiPVswLFswLDEsXy5ELF8uRyxfLkUsXy5NcyxbMCxfLkUsLTJdLF8uRywtMSxfLnN0YixfLkMsLTEsXy5EcWIsXy5FcWJdLFswLF8uRSxfLk1zLF8uRSwtMSxfLkRdXTt2YXIgdXRiPVswLF8uRCxfLkYsWzAsXy5FLF8uYWxdLF8uYWwsXy5FbF07Xy52dGI9Wy01MDAsXy5BcyxbMCxfLkcsXy5ubF0sXy5FcyxfLkUsLTIsXy5HLF8uRCxfLk5sLF8uemwsNSxfLmlsLF8uRCw5MDgxLF8uV29dO18ud3RiPVswLF8uR107dmFyIHl0Yix6dGI7eXRiPVswLFswLF8uRyxfLkUsXy5ZayxfLkUsXy5EXSwoKT0+Xy54dGIsXy5FXTsKXy54dGI9Wy0xNCx7fSxbMCxfLkYsWzAsXy5HLC0yLF8uUHMsWy01LHt9LFswLF8uRSwtMSxfLllrXSxbMCxfLkUsLTFdLC0xLFswLF8uRSwtMl1dLDEsXy5FLF8uQywtMiwyLFhzYix0dGIsXy5GLF8udnRiLF8uRiwkc2IsXy5ELFlzYixfLkcsMSx1dGIsWzAsXy5ELC0xMV0sWzAsXy5ELC00Nl0sWzAsXy5QcyxfLkYsXy5Qc10sXy5FXV0sKCk9Pnp0YiwoKT0+eXRiLF8uRSxfLkMsLTEsdHRiLDEsXy5GLFswLF8uRSxfLkMsLTEsWzAsMTMsXy5TbF0sWzAsXy5ZaywtMSxfLkUsXy5ELC0zXSxbMCxbMCxfLkQsLTExXSxfLkQsLTIsXy5HLC0xXSxfLkQsLTIsWzAsXy5FXSxbMCxfLkVdLFswLF8uR10sWzAsXy5FXSwxLF8uRCxbMCxfLk5sLF8uWWtdLF8ud3RiLHV0YixbMCxfLkVsXSxfLkcsWzAsXy5HXSxbMCxfLkVdLFswLF8uR10sWzAsXy5HXSxbMCxfLkVdXSwxLFswLDEsXy5FLF8uRWwsXy5FLF8ucGwsXy5ELDEsWXNiLDEsWzAsXy5TbF0sMixYc2IsWzAsXy5FLC0xLFswLF8uRixbMCwKXy5FLF8uRWwsXy5HXV0sWzAsXy5FLF8uRCwtMV1dLDMsWzAsXy5FLC0zLFswLF8uRmwsLTEsXy52bCwtMSxxcWJdLF8uRSxbMCxxcWIsLTFdLF8uRCwxLF8uRixbMCxfLkcsXy50cyxfLkYsWzAsXy51cywtMV1dLF8uQyxfLkQsXy5FLC0xLDEsXy50cWIsXy5HLF8uc3FiXSxfLkUsMixfLkUsLTUsXy5ELC0yLF8uRywtMl0sWzAsXy5FcyxfLkdzLF8uRSwtMl0sXy5EXTt6dGI9WzAsKCk9Pl8ueHRiLFswLF8uRyxfLkUsXy5DLC0zXSwoKT0+Xy54dGJdO18uQXRiPVswLF8uRSxbMCxfLkYsWzAsXy5DLF8uRSxfLllrLF8uRWwsXy5FXV0sXy5Nc107Xy5CdGI9WzAsXy5GLFswLF8uRyxbMCxfLkUsXy5Nc11dXTtfLkN0Yj1bLTEwLHt9LF8uRWwsLTMsXy5HLC0xLF8uRSxfLkcsLTFdO3ZhciBEdGI9WzAsXy50bCxfLkQsXy5HLF8uQyxfLkRdO18uRXRiPVswLFsyLDEwXSxfLkcsXy53bCxbMCxfLkN0YixfLmlsXSxbMCxfLkN0YixfLmlsLF8uQyxfLkQsXy5DdGJdLFswLF8uQ3RiLC0xXSxbMCxfLlNsLF8uRywtMV0sRHRiLFswLER0YixfLlNsXSxfLlFzLF8ud2wsXy5Nc107Xy5GdGI9WzAsXy5rbCxfLkZsLC0xLF8ubGwsXy5NcyxfLkYsWzAsXy5sbCxfLkNsLC0yXV07dmFyIEd0Yj1bMCxfLkcsXy5FLF8uRywtMixfLkUsLTFdO18uSHRiPVswLFsxLDJdLF8uSWwsR3RiLF8uSWwsWzAsMSxHdGIsLTIsXy5DXSxfLkQsXy5HLF8uTXMsXy5FLC0xLF8uR107Xy5JdGI9WzAsXy5IdGIsWzAsXy5FXV07Xy5KdGI9WzAsXy5nRWEsXy5GbCwtMSxbMCxbMCxfLkZsLC0xXSwtNF0sXy5JdGIsLTFdO18uS3RiPVswLF8uY0VhLF8uRmwsXy54dGJdO18uTHRiPVswLF8uZ0VhLF8uSnRiLF8uRnRiLF8uSXRiLF8uS3RiXTtfLk10Yj1bMCxfLkYsWzAsWzEsMiwzLDRdLF8uSWwsWzAsXy5GbCxfLkp0Yl0sXy5JbCxfLkx0YixfLklsLFswLF8uRmwsLTFdLF8uSWwsWzAsXy5GbF1dLF8uVWwsLTEsXy5NcyxbMCxfLkZsLC0xXSxbMCxfLkNsLDEsXy5lbCwtMl1dO3ZhciBOdGI9WzAsXy5HLF8uRV07dmFyIE90Yj1bMCxfLkYsWzAsXy5FLC0xXV07Xy5QdGI9WzAsXy5FLF8uUHMsNSxbMCxfLkUsLTEsT3RiLC0xLF8uRyxPdGIsXy5HLF8uRSxPdGIsLTEsXy5FbCwxLF8uRixbMCxfLkUsXy5GLE50Yl0sXy5DLF8uRSwyLF8uRSxfLkQsMSxPdGIsXy5GLFswLF8uRSxfLkYsTnRiXSwyLE90YiwtMixbMCxfLkUsXy5HLC0xLF8uaWwsXy5HXV0sNixfLk1zXTt2YXIgUXRiPVswLF8uRV07Xy5SdGI9WzAsWzMwLDMxXSxfLkUsLTEsMixbMCxfLkUsXy5HLF8uWWssLTEsXy5FLF8uRXMsWzAsXy5FcyxfLkUsLTFdLFswLDEsXy5FLF8uR10sXy5HLF8uRSxzc2JdLFswLFswLFs3LDhdLF8udWwsLTMsXy5DLEFxYixfLklsLEFxYixfLndsLF8uRixbMCxDcWIsLTFdXSxfLkUsLTJdLF8uRCxDcWIsXy5ELHNzYixbMCxfLkUsXy5pbCxfLkUsLTJdLC0xLF8uRyxfLkUsQ3FiLFswLF8udmwsXy5sbF0sXy5FLF8uRixbMCxfLkcsUXRiLF8uRixbMCxfLkUsUXRiXSxfLkVdLENxYixfLkcsXy5FLDEsWzAsXy5FLF8uRF0sXy5qbSwtMSxbMCxfLkddLF8uRixbMCxbNCw1XSxfLkUsMSxfLlRsLF8uSWwsWzAsXy5FLFswLF8uRSwtMV1dLF8uSWwsWzAsXy5FLC0xXV0sXy5FLF8uam0sXy5JbCxbMF0sXy5JbCxbMF0sXy5FLF8uRCxfLmptLENxYl07Xy5TdGI9WzAsWzQsNV0sXy5FLGlxYixfLkcsXy5tbCwtMSxfLmlsLF8uRSxfLkQsWzAsXy5FbCx2cWJdLFswLF8uRSxfLkcsXy5FLFswLF8uRWwsLTJdLF8uRyxbMCxfLkQsXy5pbCwtMV0sWzAsXy5FXSxbMCwxLF8uRWwsXy5FLC0xLF8uSmwsLTEsXy5FLF8uRWxdLFswLF8uRCxfLkVdLFswLF8uRyxfLkUsXy5KbF1dLF8uVnNiLC0xLF8uUXMsWzAsXy5JcyxfLkUsWzAsXy5JcyxbMCxfLkcsLTEsWzAsXy5DLF8uWWssXy5DLC01XSxfLkcsLTFdLFswLF8uRywtMV0sWzAsXy5TbCxbMCxfLkMsLTRdLFswLF8uR10sXy5ELF8uRyxfLlNsLF8uRyxbMCxfLk5sLC0xXSxfLkQsXy5hbF0sWzAsXy5ELF8uSXMsXy5ELC0yLFswLF8uRCxfLkYsZ3FiXSxfLkVsLF8uR10sWzAsXy5GLFswLF8uRSxfLkMsWzAsXy5FLF8uSmxdLFswLF8uRCwtMV1dLFswLDEsWzAsXy5ELC01LF8uRWwsXy5EXSxfLkQsLTEsXy5HLDEsXy5ELF8uRyxfLkQsLTEwLF8uSmwsXy5ELC0zLFswLF8uRyxfLkRdLDEsXy5ELApfLkcsWzAsXy5ELC0yLF8uRyxfLkQsMSxfLkQsMixfLkYsWzAsXy5HLF8uRCwtMl0sXy5ELC0yLFswLF8uRF0sXy5ELC0yXSxfLkQsWzAsXy5HXSxbMCxfLkRdLFswLF8uRF0sXy5ELC01LFswLF8uU2xdLF8uRCwtMyxbMCxfLkddLF8uRCwtNixbMCxfLkcsXy5EXSxfLkQsLTEsWzAsXy5EXSxfLkQsWzAsXy5ELC0xXSxfLkQsXy5HLF8uRCwtMyxfLkcsXy5ELC0xLFswLF8uRCxfLkcsXy5DLF8uam1dLF8uRCxbMCxfLkYsWzAsXy5HLF8uQ11dXSxbMCxfLkYsWzAsXy5FLF8uQ11dLF8uRixbMCxpcWIsXy5ELC01LDEsXy5ELHVxYixfLkRdLFswLF8uRCxfLkUsXy5EXSxbMCxfLkcsXy5ELFswLF8uRCwtMl0sXy5EXSxbMCxfLkMsXy5EXSxbMCxfLkUsWzAsXy5GLFswLF8uRV0sWzAsXy5FbCxfLkQsXy5GLFswLF8uRSxfLldrLFshMCxfLkUseHFiXSx3cWIsXy5GLFswLFsyLDNdLF8uV2ssWyEwLF8uRSx4cWJdLF8uR2wsLTFdLFswLDEsXy5HXSxfLkVsXSx3cWIsXy5HLF8uRixbLTIse30sCl8uRV0sXy5HLFswLF8uR10sWzAsWzAsXy5DLF8uRCwtMl0sWzAsXy5DLHZxYiwtMSxfLkRdLFswLF8uQywtM10sWzAsWzAsWzAsXy5TbCxfLkQsLTJdXSxbMCxbMCxfLkRdXSxbMF0sWzBdLFswXSxbMF0sWzBdLFswXSxbMF0sWzBdLFswXSxbMF0sWzBdLFswXSxbMF0sWzBdLFswXSxbMF0sWzBdXSxfLkQsLTEsWzAsXy5EXV1dXSxbMCxfLkYseXFiXSxfLnhzLF8uRSxfLmlsLDkzLFswLF8uRCwtMSxfLkVsLHlxYixbMCxfLkddLF8uRSxfLkQsLTRdXSxbMCxfLkQsLTEsWzAsXy5ELC0xXV0sMSxbMCxfLlNsXSxbMCxfLkRdLFswLF8uRCwtNF0sWzAsMyxbMCxfLnZsLF8uVWwsWzAsXy5VbCwyLF8uVWwsMixfLnZsLF8uVWxdLFswLFsxMSwxMl0sWzAsXy5GLFswLFs0LDVdLF8uRmwsXy5VbCxfLkxyLF8uSWwsXy5McixfLklsLF8uam0sXy5GbF0sXy5VbF0sWzAsXy5GLFswLFszLDRdLF8uRmwsXy51cyxfLklsLF8udHMsXy5JbCxbMCxfLlRsXSxfLlVsLF8uam0sXy5GbCxfLkddLF8uVWwsCl8uTHJdLF8ubHBiLDEsWzAsXy5GLFswLF8uRmwsXy5VbCwtMSxfLmptLF8uTHJdXSxfLmptLF8uTGwsXy5DbCwxLF8uVGwsXy5JbCxbMCxfLkYsaXFiXSxfLk1sXSxfLnZsLFswLDIsWzAsXy52bCwtMSxfLmVsLF8uVWxdLF8uZWxdLF8uQ2wsXy5MbCwxLFswLDMsXy5GbCw0LFswLF8uTGwsXy5lcWJdLFswLF8uRSxfLkddXV0sXy5Jc10sXy5GLFswLFswLFsxXSxfLklsLFswLGZxYixfLkcsXy5qbV0sXy5FLC0xXSx1cWJdLFswLF8uQywtMSx2cWIsLTEsXy5ELGlxYl0sWzAsXy5EXSwxLFswLF8uRCxbMCxfLkQsLTJdLF8uRF0sXy5GLFswLF8uRSxfLkcsaXFiXSxbMCxfLkYsWzAsXy5FLF8uRyxfLkYsWzAsXy5FLC0yLF8uRWwsXy5FLC0xXV1dLF8uV2ssWyEwLF8uRSx1cWJdLF8uRyxbMCxfLkQsLTFdLFswLF8uRF0sMSxbMCxfLkVsLC0xLFswLFsxLDIsMyw0XSxfLklsLFswLF8udWxdLF8uSWwsWzBdLF8uSWwsWzBdLF8uSWwsWzBdXSxfLkQsLTEsXy5HLF8uU2wsWzAsXy5ELC0xXSwKXy5EXV0sWzAsXy5HLC0yLFswLF8uRCxfLkcsLTNdLF8uRyxbMCxfLkddLDEsXy5HLDEsXy5HXSxbMCxfLkUsLTYsWzAsXy5HLF8uRV0sXy5FLC0xLF8uRyxfLkUsXy5pbCwxLF8uRF0sXy5FLDEsWzAsXy5ELC0xXSxbMCxfLkRdLF8uRyxbMCxfLklzLF8uRSxbMCxfLkMsLTFdLF8uRywtMSxfLkRdLDEsXy5HLFswLF8uRyxfLkYsWzAsXy5HLF8uRF0sXy5GLFswLF8uQyxfLkQsXy5HXV0sXy5ELF8uRWwsWzAsXy5ELC0xXSxbMCxbMCxfLkYsWzAsXy5HLC0xXSxfLkYsWzAsXy5HLC0xXV1dLFswLF8uRCwtNF0sWzAsXy5TbCwtMixfLkQsXy5UbCxfLkRdLFswLF8uRCwtMyxbMCxbMCxfLkVsXSxbMCxfLkRdLFswXSxbMF0sWzBdLFswXV1dLFswLF8uR10sWzAsXy5HXSxbMCw0LF8uVGwsXy5ELC0xXSxbMCxfLkRdLFswLF8uRixbMCxfLkUsXy5FbF1dLFswLF8uR10sXy5HLF8uVGwsXy5HLFswLF8uRF0sXy5HLFswLF8uRF1dLF8uRyxbMCxfLllrLC0yXSxfLkUsLTEsWzAsWzFdLF8uSWwsClswLFswLFswLF8uVWwsXy5GbCwtMixbMCxfLkZsLF8uVWxdLF8uTGxdXSxbMCxfLkxsLF8ubGxdXV0sXy5pbCxfLkQsXy5vcmIsXy5FLF8uRCxbMCxfLkddLFswLF8uRCxfLmlsXSxbMCxfLkUsLTFdLF8uRixfLklzLDEsWzAsXy5qbSxfLkVdLF8uSXMsLTEsMSxbMCxfLkcsXy5ELC01LF8uRSxfLkQsXy5HLF8uRCxfLkcsXy5ELF8uRyxfLkNdLF8uRSwtNCxbMCxfLkVsLF8ueHMsXy5ELF8uRSwtMixfLkRdLF8uRCxfLkMsXy5FLFswLFswLF8uRyxfLkQsLTJdLFswLF8uRF0sWzAsXy5HLF8uRF1dLF8uRCxfLkcsXy5FbCxfLkQsXy5HLFswLF8uRCxGcWIsLTEsXy5HLF8uRWwsLTEsXy5FLEZxYixfLkQsXy5pbCxGcWIsLTEsXy5FLFswLF8uRSwtMSwyLF8uRSxfLldrLF8uWWxdLFswLF8uRixbMCxfLkcsRnFiLC0xLF8uRSwtMSxfLkQsLTEsXy5FXSxfLkYsWzAsXy5FLC0yXSxfLkQsLTFdLF8uRF0sWzAsWzAsXy5TbCxfLkQsWzAsWzAsXy5HLC0xLF8uU2wsLTFdLFswLF8uRywtMSxfLlNsLAotMSxfLkddLFswLF8uR10sWzAsXy5HXSxbMCxfLkddLFswLF8uR10sWzAsXy5HXSxbMCxfLkcsXy5EXV1dLFswLDEsXy5GLFswLF8uRSxbMCxfLkQsXy5GLFswLF8uRCxfLkcsXy51cywtMV1dXSxfLlNsXV0sXy5HLFswLF8uRF0sXy5TbCxfLkUsWzAsXy5EXSxbMCxfLkQsXy5FXSxfLkYsWzAsXy5pbCxfLkUsXy5GLE9xYixfLmptXSxfLkcsWzAsXy5EXSxbMCw4LF8uR10sQnFiLDEsWzAsXy5pbCxfLmptXSxbMCxfLkQsRnFiLC0xXSxbMCxfLkQsLTNdLF8uRCxfLkcsWzAsXy5XayxfLlhrKF8uQyxbMCwyLF8uam0sLTEsXy5EXSldLF8uam0sWzAsMSxfLkVdLDEsXy5ELFswLF8uRywtMl0sXy5FLFswLF8uSXNdLFswLF8uRCxfLkNdLF8uam0sXy5ELDIsXy5qbSxfLkRdLEZxYixbMCxfLkUsLTFdLEZxYl07Xy5UdGI9WzAsXy5FLF8uRixbMCxfLkUsLTFdLF8uR107Xy5VdGI9WzAsWzEsMiwzLDRdLF8uSWwsWzBdLF8uSWwsWzAsXy5zdGJdLF8uSWwsWzAsXy5FXSxfLklsLFstMSx7fV1dO18uVnRiPVswLF8uQyxfLkUsLTFdO3ZhciBYdGIsWXRiLFd0YjtYdGI9WzAsXy5KbCw5OSwoKT0+V3RiXTsKWXRiPVstNDEse30sXy5FLF8uRCwxLF8uRywxLFstNyx7fSxfLkcsXy5ZaywxLF8ubmwsXy5hbCwtMV0sXy5GLCgpPT5fLlJzLF8uRCxfLkYsWXJiLF8uRWwsXy5FLC0yLF8uRixfLnVzYixfLkYsWzAsXy5FXSxfLkUsMSxfLmRzYixfLkcsWzAsXy5GLFswLF8uRWwsXy5Mc10sXy5hbF0sXy5ELFswLF8uRyxfLkRdLGNzYixfLlNsLF8uRCxfLmFsLFswLF8uWWssMSxfLllrLC01LF8uRCxfLllrLC0xLDksXy5hbCwtMSxfLkUsNixfLmFsLF8uQyxfLkcsMSxfLllrLDIsXy5ELC01LF8uQywxLF8uRCxfLkMsXy5HLC0xLDEsXy5ELC0yLDIsXy5ELC0xLFswLF8uRSxfLkQsLTEsXy5GLFswLF8uRSwtMSxfLkVsLF8uRCwtMSxfLmFsXV0sXy5ELC0yLF8uRyxfLkQsWzAsXy5FLF8ucGxdLF8uRCwtNSxfLmFsLF8uWWssXy5ELC04LFswLF8uRyxfLkQsLTIsWzAsXy5HLC0xLF8uRCxfLkcsLTEsNixfLkVdLF8uRCwtNyxfLkcsXy5FbF0sXy5HLF8uRCwtMixfLkMsXy5ELC0xLF8uRywtMSxfLkQsCl8uWWssXy5ELF8uRyxfLkQsLTIsXy5hbCxfLkQsLTksXy5HLF8uRCwtNl0sXy5GLFswLF8uRSxfLmFsXSxfLkVsLF8uRCxqc2IsXy5ELF8uRyxfLkQsV3JiLF8uRCwxLFswLF8uQ10sXy5ELC0xXTtfLlJzPVstMjEse30sXy5FLF8uRiwoKT0+Xy5adGIsXy5GLFZyYiwoKT0+WXRiLF8uRixWcmIsMSx2c2IsMSxfLnJzYixfLlFyYiwxLFswLFsxLDIsMyw0XSxfLklsLFswLF8uRWwsUHJiXSxfLklsLFswXSxfLklsLFswXSxfLklsLFswXV0sXy5GLF8ucnNiLDIsXy5pbCwxLFswLF8ua2xdLDEsWzAsWzAsXy5wbCxfLkVdXV07Cld0Yj1bMCxfLk5yYiwxLF8uSWwsKCk9Pl8uUnMsXy5JbCxfLlVyYixfLklsLF8uUXMsXy5JbCxfLnh0YixfLklsLF8uSHRiLF8uSWwsXy5JdGIsXy5JbCxfLlZzYixfLklsLF8uc3RiLDEsXy5JbCxfLlN0YixfLklsLF8uUnRiLF8uSWwsXy5Xc2IsXy5JbCxfLkhyYixfLklsLF8uVXNiLF8uSWwsXy5MdGIsXy5JbCxfLkp0YixfLklsLF8uRnRiLF8uSWwsXy5LdGIsXy5JbCxfLkV0YixfLklsLF8ueHNiLF8uSWwsXy56c2IsXy5JbCxfLkRxYixfLklsLF8uTXRiLF8uSWwsXy5Qc2IsXy5JbCxfLlV0YixfLklsLF8uSXJiLF8uSWwsXy5CdGIsXy5JbCxfLklzLF8uSWwsXy5UdGIsXy5JbCxfLkdxYixfLklsLF8uQXRiLF8uRixfLnJzYixfLklsLCgpPT5YdGIsXy5JbCxfLkpxYixfLklsLF8uVnRiLF8uSWwsXy5Sc2IsXy5JbCxbMCxbMCwyLF8uRixbMCxfLkUsXy5DXV1dLF8uSWwsXy5QdGIsXy5JbCxfLkVxYixfLklsLFswLFsxXSxfLiRrLF8uR11dOwpfLlp0Yj1bLTgse30sXy5PcmIsXy5FLCgpPT5XdGIsWy02Nyx7fSx0c2IsXy5GLF8uYnNiLF8ucGwsXy5BcyxfLkVzLF8uQyxfLkUsLTEsXy5ELF8uRWwsLTEsXy5lc2IsXy5hbCxfLkYsWzAsXy5FLC0xLF8uYWwsXy5NcyxfLkQsXy5kc2JdLF8uRixsc2IsXy5ELFswLF8uRWwsXy5ELC0xXSxbMCxfLmFsLF8ucGxdLFswLF8uRWwsLTFdLF8uRixfLmZzYixfLkYsWXJiLF8uRCwtMiwxLF8uRixfLnVzYixfLkYsYXNiLF8uRCwtMiwxLF8uRCxbMCxfLkddLDEsXy5kc2IsWzAsWzEsMyw0LDUsNiw3LDhdLF8uSWwsWzAsXy5FLC0xLF8uWWssMSxfLkYsWzAsXy5FLF8uWWtdXSwxLF8uSWwsWzAsXy5ZaywtMV0sXy5JbCxbMF0sXy5JbCxbMF0sXy5JbCxbMCxfLldrLF8uWWxdLF8uSWwsWzAsXy5FLF8uRWwsXy5HXSxfLklsLFswXV0sWzAsWzAsXy5FbCwtMSxfLkQsXy5FbCwxLF8uRixUcmIsXy5ELE9zLE5zXSxbMCxfLkQsT3MsTnNdLCRyYixbMCxfLkVsLE9zLE5zXSxbMCxfLkQsLTEyLE9zLApfLkcsTnNdLFswLF8uRWwsT3MsTnNdLDEsWzAsXy5FbCxfLkUsT3MsTnNdLDEsWzAsWzBdLFswXSxbMF0sWzBdLFswXSxbMF0sWzBdLFswXSxbMF0sWzBdLFswXSxbMF0sWzBdLFswXSxbMF0sWzBdLFswXSxbMF0sWzBdLFswXSxbMF0sWzBdLFswXSxbMF0sWzBdLFswXSxbMF0sWzBdLFswXSxPcyxOc10sWzAsT3MsWnJiLE5zXSxbMCxPcyxOc10sMSxbMCxPcyxOc10sWzAsXy5FbCxfLkQsMixPcyxfLkYsWzAsXy5FLE9zXSxfLkQsTnMsXy5GLFswLF8uRSxOc11dLFswLE9zLE5zXSxbMCxPcyxOc10sWzAsT3MsTnNdLFswLF8uRyxPcyxOc10sWzAsT3MsTnNdLFswLE9zLE5zXSxbMCxPcyxOc10sWzAsWzEsMiwzLDVdLF8uSWwsWzAsXy5FXSxfLklsLFstMix7fSxfLkVsXSxfLklsLFstMix7fSxfLkVsXSxPcyxfLklsLFstMix7fSxfLkVsXSxOc10sXy5HLF8uRiwkcmJdLF8uRCxfLkcsXy5ELC0xLFswLF8uRSwtMV0sXy5GLF8uaXNiLF8uTmwsXy5HLF8uRixfLmdzYiwxLGNzYixfLkYsCmtzYiwxLF8uRCxfLkUsWzAsXy5FXSxfLkVsLF8uQyxqc2IsV3JiLF8uRyxfLllrLF8uRywtMSxfLmFsLC0xLHNzYixbMCxfLkUsLTJdLFswLF8uRV1dLF8uSWwsXy5Ncyx2c2IsUHJiLF8uSWwsXy5Nc107Cn1jYXRjaChlKXtfLl9EdW1wRXhjZXB0aW9uKGUpfQp0cnl7Cl8uckJiPVswLFsyLDMsNF0sXy5HLF8uR2wsXy5zbCxfLklsLF8uUnNdOwp9Y2F0Y2goZSl7Xy5fRHVtcEV4Y2VwdGlvbihlKX0KdHJ5ewpfLnlCYj1bMyw0XTtfLnpCYj1bMCxfLkVdO3ZhciBBQmI9Wy0xLF8uc0JiXTt2YXIgQ0JiPVswLF8uRSxfLkYsKCk9PkJCYixBQmIsXy5GLF8uckJiLFstMSx7fV1dLERCYj1bMCxbMSwzLDQsNSw2LDcsOCw5LDExLDEyLDEzLDE0LDE1LDE2LDE3LDE4LDE5LDIwLDIxLDIyLDIzLDI0LDI1LDI2LDI3LDI4LDI5LDMwLDMxLDMyLDM0LDM1LDM2LDM3LDM4LDM5XSxfLklsLCgpPT5DQmIsMSxfLklsLF8uVXJiLF8uSWwsXy5RcyxfLklsLF8ueHRiLF8uSWwsXy5IdGIsXy5JbCxfLkl0YixfLklsLF8uVnNiLF8uSWwsXy5zdGIsMSxfLklsLF8uU3RiLF8uSWwsXy5SdGIsXy5JbCxfLldzYixfLklsLF8uSHJiLF8uSWwsXy5Vc2IsXy5JbCxfLkx0YixfLklsLF8uSnRiLF8uSWwsXy5GdGIsXy5JbCxfLkt0YixfLklsLF8uRXRiLF8uSWwsXy54c2IsXy5JbCxfLnpzYixfLklsLF8uRHFiLF8uSWwsXy5NdGIsXy5JbCxfLlBzYixfLklsLF8uVXRiLF8uSWwsXy5JcmIsXy5JbCxfLkJ0YixfLklsLF8uSXMsXy5JbCxfLlR0YixfLklsLF8uR3FiLF8uSWwsXy5BdGIsXy5GLF8ucnNiLApfLklsLF8uUnMsXy5JbCxfLkpxYixfLklsLF8uVnRiLF8uSWwsXy5Sc2IsXy5JbCxfLlB0YixfLklsLF8uRXFiXSxCQmI9WzAsXy5FLCgpPT5EQmJdO3ZhciBFQmI9WzAsXy55QmIsMixfLklsLENCYixfLklsLEFCYl07dmFyIEZCYj1bMCxfLmlsLF8uRyxfLmlsXTt2YXIgR0JiPVswLF8uQywtMSxfLkRdO3ZhciBIQmI9WzAsXy5ZayxfLkcsXy5GLEdCYl07dmFyIElCYj1bMCxbMCxfLnRsLFswLF8uU2wsXy5HLC00LF8uRHNiXV0sWzAsSEJiLF8uRF1dO3ZhciBKQmI9WzAsXy5DLF8uRyxfLkMsXy5ELF8uQywtMixfLllrLF8uRyxfLkUsMSxbMCxfLkMsSUJiLF8uRyxfLlNsLF8uRCwtMV1dO3ZhciBLQmI9WzAsSUJiXTt2YXIgTEJiPVswLF8uRixbMCxKQmIsLTEsXy5HLEtCYl0sXy5GLEpCYixLQmIsWzAsXy5ObCxfLkddLDUsKCk9PkxCYixfLkddO3ZhciBNQmI9WzAsXy5ubF07dmFyIE5CYj1bMCwxLF8uRCxfLkcsXy5FLF8uRywtMl07dmFyIFBCYj1bMCxbMCxfLkcsXy5FLF8uWWssXy5FLF8uRF0sKCk9Pk9CYl0sUUJiPVswLCgpPT5PQmIsWzAsXy5HLF8uRV0sKCk9Pk9CYl0sT0JiPVswLFsxLDIsNF0sXy5JbCxbMCxfLkYsWzAsXy5HLC0xLF8uRSwtMSxfLkcsXy5GLEdCYixbMCxfLkVsXSxbMCxfLkQsLTIzLF8uRWwsXy5FLF8uRCwtNl0sWzAsXy5GLFswLF8uRV0sXy5GLFswLF8uRyxfLkMsLTMsXy5wbF1dXV0sXy5JbCwoKT0+UUJiLF8uRixbMCxfLkUsWzAsXy5FXV0sXy5JbCwoKT0+UEJiLF8uRV07dmFyIFJCYj1bMCxfLnRsLF8uQywtMV07dmFyIFNCYj1bMCxfLkcsXy5DLC0xXTt2YXIgVEJiPVstNTAwLF8uRixbMCxbMSwyXSxfLldsLF8uR2wsXy5GLFswLFs0MSw0Ml0sWzIsMyw0LDUsNiw3LDgsOSwxMCwxMSwxNCwxNywxOCwxOSwyMCwyMSwyMiwyMywyNSwyNiwyOSwzMCwzMiwzOSw0Myw0NF0sXy5FLF8uR2wsLTEsXy5JbCxbMCxfLkMsLTUsXy5nbF0sXy5EbCxfLndsLF8uR2wsLTIsXy5mbCxfLndsLF8uRCxfLkYsR0JiLF8uSWwsTEJiLE5CYixfLkYsWzAsXy5HLF8ueGwsMSxfLkMsLTEsWzBdLF8uQyxfLkUsLTEsXy5FbF0sXy5JbCxbMCwxLF8uRSwxLF8uRixbMCwxLF8uRCwtMl0sXy5FXSxfLkdsLF8uSWwsWzAsXy5GLFswLFsxLDIsMyw0XSxfLklsLFswLF8uRSxbMCxfLnhsLF8uRV1dLF8uSWwsWzAsXy54bF0sXy5JbCxbMCxfLkUsLTFdLF8uSWwsWzAsXy5FXV0sXy5HLC0xLFswLF8uRSwtMV1dLF8uR2wsXy5JbCxPQmIsXy5JbCxbMCxfLkYsWzAsXy5FLC0xLF8uRixbMCxfLmFsLF8uaWwsXy5HLF8uRCwxLFswLF8uRSwtMV0sWzAsXy5ELC0xXV0sXy5FXV0sCl8uSWwsWzAsSEJiLF8uRywxLF8uRixIQmJdLF8uRCxfLldsLF8uSWwsWzAsXy5FLF8uR10sTUJiLFswLF8uRywtMSwxLF8uYWwsXy5GLFstNCx7fSxfLkUsXy5FbCxfLkVdXSxfLklsLFswLF8uRixfLmN0YixfLkNsLF8udmwsXy5UbCwtMV0sXy5JbCxbMCxfLkMsLTEsWzAsXy50bF0sUkJiLFswLFJCYixfLnRsXV0sXy5ELF8uSWwsWzAsXy5FLFswLF8uRSxfLllrLF8uRWxdXSxfLkVsLF8uRCxfLkYsXy5nc2IsXy5GLF8uaXNiLF8uTmwsWzAsXy5ELC0xXSxfLklsLFswLF8uRSxfLkYsWzAsXy5DLF8uWWtdXSwxLF8uSWwsWzAsXy5FLC0xXSxfLklsLFswLF8uWWssLTFdLF8uSWwsWzAsNCxfLkYsWzAsXy5FXV0sXy5JbCxbMCxfLkcsLTIsXy53c2JdLF8uRywxLF8uVGwsMSxfLkcsLTFdLF8uRixHQmIsTkJiLFswLF8ubmxdLFswLF8uRSxNQmJdLFswLFsxLDIsMyw0XSxfLklsLFswLF8uRWwsTUJiXSxfLklsLFswXSxfLklsLFswXSxfLklsLFswXV0sMSxbMCxfLmtsXSxfLkYsWzAsWzAsCl8uRSwtM10sMSxfLkcsWzAsXy5HLC0zXSxbMCw0LF8uamwsXy5FXV0sWzAsWzAsXy5jRWFdXV0sWzAsWzAsXy5HLC0xLF8uRCxfLkVsLF8uRCxfLkcsWzAsXy5GLFswLFswLF8uRSwtMV0sXy5HLDIsWzAsXy5HLC0xLF8uRV0sXy5HXV1dLF8uRyxbMCxfLllrLF8uRyxfLkUsXy5ZayxbMCxbMCxfLkUsXy5DLF8uRSwtMSxfLnVsXSxfLllrLF8uRV0sXy5ZayxfLkMsWzAsWzAsXy5GLFswLF8uRSxbMCxfLkUsLTEsXy51bF0sXy5hbCwtMV0sXy5FLF8uYWwsXy51bCxfLkVsXV0sXy5FLFswXSxfLkMsXy5GLFNCYixbMCxfLkddLFswLF8uRixbMCxfLkUsLTEsXy5ZayxfLnVsXV1dLFswLF8uRixbMCxbMSwyLDMsNCw1XSxfLklsLFswXSxfLklsLFswXSxfLklsLFswXSxfLklsLFswXSxfLklsLFswXV0sMSxfLkQsLTFdLF8uRixbMCxfLkUsXy5ZayxfLkRdLF8uRixbMCxfLkcsLTEsXy5GLFswLF8uRSxfLkVsXV0sWzAsXy5UbCxfLkYsWzAsXy5GLFswLF8uRV1dLF8uRyxfLkQsLTJdLFswLApbMCxfLllrLC03LF8uRCxfLllrLC0zLF8uYWwsLTgsXy5FLF8uRCxfLmFsLC00LF8uQyxfLkcsXy5ELF8uWWssXy5hbCxfLkQsLTUsXy5DLF8uRyxfLkQsXy5DLF8uRywtMSxfLmFsLDEsXy5ELC0yLF8uRywtMSxfLkQsLTQsXy5HLF8uRCwtMywxLF8uRCxfLmFsLF8uWWssXy5ELC0xMSxbMCxfLkcsXy5ELC04LF8uRyxfLkVsXSxfLkcsXy5ELC0yLF8uQyxfLkQsLTEsXy5HLC0xLF8uRCxfLllrLF8uRCwtMyxfLmFsLF8uRCwtOSxfLkcsXy5ELC02XSxfLmFsLF8uRF0sWzAsXy5HLF8uTmwsXy5EXSxfLkYsU0JiLFswLF8uRSwtMV1dLF8uZ2wsXy5GLFswLF8uRSxfLkYsXy50QmJdLDkwOTQsXy5Xb107Xy5VQmI9Wy0xOCx7fSxfLkcsMSxfLkcsLTEsXy5GLFswLFRCYixfLkVdLFswLFsxLDJdLF8uR2wsXy5JbCxbMCxfLkYsWzAsXy5FLC0xXSxfLkVdXSxfLnVCYiwxLF8uRSwxLFstNCx7fSwxLFswLFRCYixfLlNsLF8uR10sWzAsXy5HLC0xLF8uRCxfLkVsLF8uRF1dLFstMjYse30sMSxbMCxbMV0sXy5JbCxbMCxfLkUsXy5GLFswLFsyLDMsNCw1XSxfLkUsXy5HbCwtMSxfLkRsLF8ud2xdXV0sWzAsXy5HLF8uU2xdLDIxLFswLF8uRixbMCxfLkUsXy5GLFswLFsyLDNdLF8uRSxfLkdsLC0xLF8uRixbMCxfLkUsLTFdLF8uRF1dLF8uRF1dLFswLF8uR10sWzAsNSxfLnZCYl0sMixbMCxfLkUsXy5TbF1dO18uVkJiPVswLFs3LDhdLDEsXy5FLF8uRywyLF8uRixbMCxbMV0sXy5HbF0sXy5HbCxfLmhFYV07dmFyIFdCYj1bMCxfLkddO3ZhciBYQmI9WzAsWzAsWzAsRkJiLEVCYiwxLF8uQyxXQmIsWzAsXy5FLF8uRixbMCxfLkUsLTFdXSxfLkcsXy5FLC0xLDEsXy5XayxfLllsLF8uaWxdLF8uRixbMCxfLkUsXy52dV1dLF8uRiwoKT0+WEJiLF8uRF07dmFyIFpCYjtaQmI9WzAsXy5FLCgpPT5fLllCYl07Xy5ZQmI9WzAsNSxbMCxfLkMsRUJiLFswLDEsXy5VQmIsRkJiLDEsWzAsXy5GLFhCYl0sXy5wbCw0LFswLF8uVkJiLEZCYiwxLF8uQyxfLkUsXy5pbCxfLkQsXy5wbCwtMV1dLDMsV0JiLF8ucGwsXy5HLF8ucGwsMSxfLkYsWzAsXy5FbF0sXy5HLC0xLFswLF8uRSxfLnZCYixfLnpCYixbMCxfLkNdXSwxLF8uRWwsWzAsWzAsXy5DXSxfLkUsWzAsXy5FXSxfLlNsLF8uRF1dLF8uRiwoKT0+WkJiLF8ucGxdOwp9Y2F0Y2goZSl7Xy5fRHVtcEV4Y2VwdGlvbihlKX0KdHJ5ewpfLnd1PWNsYXNzIGV4dGVuZHMgXy5se2NvbnN0cnVjdG9yKGEpe3N1cGVyKGEsMil9fTtfLiRCYj17fTtfLnh1PWNsYXNzIGV4dGVuZHMgXy5se2NvbnN0cnVjdG9yKGEpe3N1cGVyKGEpfWdldFZpZXdlclR5cGUoKXtyZXR1cm4gXy5Paih0aGlzLDEpfUZzKGEpe3JldHVybiBfLlpoKHRoaXMsMSxhKX19O18ueHUucHJvdG90eXBlLlhhPSJlMnpFQmMiO18uYUNiPVswLF8uRSxfLkNdO18uYkNiPVswLF8uRyxfLllCYiwtMSxbLTIsXy4kQmIsXy5UbF0sXy5hQ2JdOwp9Y2F0Y2goZSl7Xy5fRHVtcEV4Y2VwdGlvbihlKX0KdHJ5ewpfLmN1PWNsYXNzIGV4dGVuZHMgXy5se2NvbnN0cnVjdG9yKGEpe3N1cGVyKGEsMSl9fTtfLkp4Yj17fTsKfWNhdGNoKGUpe18uX0R1bXBFeGNlcHRpb24oZSl9CnRyeXsKXy5xeGI9Y2xhc3MgZXh0ZW5kcyBfLmx7Y29uc3RydWN0b3IoYSl7c3VwZXIoYSl9fTsKfWNhdGNoKGUpe18uX0R1bXBFeGNlcHRpb24oZSl9CnRyeXsKXy5hdWI9WzAsXy5DLC0xXTsKfWNhdGNoKGUpe18uX0R1bXBFeGNlcHRpb24oZSl9CnRyeXsKXy5Tcz1bMCxfLkUsLTFdOwp9Y2F0Y2goZSl7Xy5fRHVtcEV4Y2VwdGlvbihlKX0KdHJ5ewpfLiR0Yj1bMCxfLkUsLTJdOwp9Y2F0Y2goZSl7Xy5fRHVtcEV4Y2VwdGlvbihlKX0KdHJ5ewp2YXIgYnViO2J1Yj1jbGFzcyBleHRlbmRzIF8ubHtjb25zdHJ1Y3RvcihhKXtzdXBlcihhKX1WYigpe3JldHVybiBfLnQodGhpcywxKX1CYyhhKXtyZXR1cm4gXy5maCh0aGlzLDEsYSl9VGUoKXtyZXR1cm4gXy5waCh0aGlzLDEpfX07Xy5jdWI9Y2xhc3MgZXh0ZW5kcyBfLmx7Y29uc3RydWN0b3IoYSl7c3VwZXIoYSl9Z2V0SGVpZ2h0KCl7cmV0dXJuIF8ueGUodGhpcywxKX1zZXRIZWlnaHQoYSl7cmV0dXJuIF8ubGsodGhpcywxLGEpfXFnKCl7cmV0dXJuIF8ud2UodGhpcywxKX1nZXRXaWR0aCgpe3JldHVybiBfLnhlKHRoaXMsMil9VmkoKXtyZXR1cm4gXy53ZSh0aGlzLDIpfX07dmFyIGR1Yj1jbGFzcyBleHRlbmRzIF8ubHtjb25zdHJ1Y3RvcihhKXtzdXBlcihhKX1nZXROYW1lKCl7cmV0dXJuIF8ucSh0aGlzLGJ1YiwxKX1FZShhKXtyZXR1cm4gXy5TYih0aGlzLGJ1YiwxLGEpfWRoKCl7cmV0dXJuIF8ua2oodGhpcyxidWIsMSl9Z2V0VXJsKCl7cmV0dXJuIF8udCh0aGlzLDIpfUVjKCl7cmV0dXJuIF8ucGgodGhpcywyKX15aCgpe3JldHVybiBfLnQodGhpcywzKX1Qcigpe3JldHVybiBfLnBoKHRoaXMsMyl9bDkoKXtyZXR1cm4gXy5Maih0aGlzLDYpfX07Xy5ldWI9Y2xhc3MgZXh0ZW5kcyBfLmx7Y29uc3RydWN0b3IoYSl7c3VwZXIoYSl9b2EoKXtyZXR1cm4gXy5taCh0aGlzLGR1Yiw1LF8ub2goKSl9fTtfLmZ1Yj1jbGFzcyBleHRlbmRzIF8ubHtjb25zdHJ1Y3RvcihhKXtzdXBlcihhKX1nZXRUaXRsZSgpe3JldHVybiBfLnEodGhpcyxidWIsMSl9c2V0VGl0bGUoYSl7cmV0dXJuIF8uU2IodGhpcyxidWIsMSxhKX1sZCgpe3JldHVybiBfLmtqKHRoaXMsYnViLDEpfX07Xy5ndWI9Y2xhc3MgZXh0ZW5kcyBfLmx7Y29uc3RydWN0b3IoYSl7c3VwZXIoYSl9RWhhKCl7cmV0dXJuIF8uT2oodGhpcywxKX19O18uaHViPVswLDIsXy5ZaywtMSxfLkddO18uaXViPVswLF8uaWwsXy5GLFswLF8uQywtMixfLkUsXy5HLC0xXSxfLllrLF8uRSwtMl07Cn1jYXRjaChlKXtfLl9EdW1wRXhjZXB0aW9uKGUpfQp0cnl7CnZhciB6dmIsQnZiO3p2Yj1jbGFzcyBleHRlbmRzIF8ubHtjb25zdHJ1Y3RvcihhKXtzdXBlcihhKX1vWigpe3JldHVybiBfLkRlKHRoaXMsMSl9RTkoKXtyZXR1cm4gXy5GZSh0aGlzLDEpfX07Xy5BdmI9Y2xhc3MgZXh0ZW5kcyBfLmx7Y29uc3RydWN0b3IoYSl7c3VwZXIoYSl9Z2V0VmlkZW8oKXtyZXR1cm4gXy5xKHRoaXMsenZiLDExKX1jbGVhclZpZGVvKCl7cmV0dXJuIF8uR2UodGhpcywxMSl9fTtCdmI9WzAsXy5odWIsMSxfLllrXTtfLkN2Yj1bMCxfLkcsLTEsXy5hdWIsWzAsXy5GLFswLF8uYXViXSxfLmF1YixfLkddLFswLF8uYXViLC0xXSwyLFswLF8uRyxfLkYsWzAsXy5HXSxfLkYsWzAsWzEsMl0sXy5JbCxbMCxfLkVdLF8uSWwsWzAsMyxbMCxCdmIsLTEsXy5hbCxbMCxCdmIsXy5FLC0xLF8uRF1dLF8uRyxfLmFsXV1dLFswLF8uRV0sXy5FLF8uaXViLFswLF8uR11dOwp9Y2F0Y2goZSl7Xy5fRHVtcEV4Y2VwdGlvbihlKX0KdHJ5ewpfLnJ4Yj1jbGFzcyBleHRlbmRzIF8ubHtjb25zdHJ1Y3RvcihhKXtzdXBlcihhKX1nZXROYW1lKCl7cmV0dXJuIF8udCh0aGlzLDEpfUVlKGEpe3JldHVybiBfLmZoKHRoaXMsMSxhKX1kaCgpe3JldHVybiBfLnBoKHRoaXMsMSl9eWgoKXtyZXR1cm4gXy5xKHRoaXMsXy5oaCwyKX1Qcigpe3JldHVybiBfLmtqKHRoaXMsXy5oaCwyKX1nZXRVcmwoKXtyZXR1cm4gXy5xKHRoaXMsXy5oaCwzKX1FYygpe3JldHVybiBfLmtqKHRoaXMsXy5oaCwzKX19O18uc3hiPWNsYXNzIGV4dGVuZHMgXy5se2NvbnN0cnVjdG9yKGEpe3N1cGVyKGEpfXFHKCl7cmV0dXJuIF8udCh0aGlzLDEpfX07Xy50eGI9Y2xhc3MgZXh0ZW5kcyBfLmx7Y29uc3RydWN0b3IoYSl7c3VwZXIoYSl9fTtfLll0PWNsYXNzIGV4dGVuZHMgXy5se2NvbnN0cnVjdG9yKGEpe3N1cGVyKGEpfX07Xy5ZdC5wcm90b3R5cGUuWGE9InFkTEE4IjsKfWNhdGNoKGUpe18uX0R1bXBFeGNlcHRpb24oZSl9CnRyeXsKXy5GdD1jbGFzcyBleHRlbmRzIF8ubHtjb25zdHJ1Y3RvcihhKXtzdXBlcihhKX19O18uJHZiPVswLDIsWzAsWzAsXy5FXSxbMCxfLkVdXSxbMCxfLkVdXTsKfWNhdGNoKGUpe18uX0R1bXBFeGNlcHRpb24oZSl9CnRyeXsKXy54dmI9WzAsXy5HLF8uRCxfLkcsLTJdO18ueXZiPVswLF8uRixfLnh2YixfLkQsXy5hdWIsXy5ELC0xXTsKfWNhdGNoKGUpe18uX0R1bXBFeGNlcHRpb24oZSl9CnRyeXsKXy5zdWI9WzAsXy5hbCwtMl07Cn1jYXRjaChlKXtfLl9EdW1wRXhjZXB0aW9uKGUpfQp0cnl7Cl8uY3Q9Y2xhc3MgZXh0ZW5kcyBfLmx7Y29uc3RydWN0b3IoYSl7c3VwZXIoYSl9fTsKfWNhdGNoKGUpe18uX0R1bXBFeGNlcHRpb24oZSl9CnRyeXsKXy5Vcz1jbGFzcyBleHRlbmRzIF8ubHtjb25zdHJ1Y3RvcihhKXtzdXBlcihhKX1nZXRVcmwoKXtyZXR1cm4gXy50KHRoaXMsMSl9RWMoKXtyZXR1cm4gXy5waCh0aGlzLDEpfX07Xy5Wcz1bMCxfLkUsMixfLkUsMSxfLkUsXy5HLFswLF8uRSwtMV0sXy5DLDEsXy5FLF8uVGxdOwp9Y2F0Y2goZSl7Xy5fRHVtcEV4Y2VwdGlvbihlKX0KdHJ5ewp2YXIgcHViPWNsYXNzIGV4dGVuZHMgXy5se2NvbnN0cnVjdG9yKGEpe3N1cGVyKGEpfX07dmFyIHF1Yj1jbGFzcyBleHRlbmRzIF8ubHtjb25zdHJ1Y3RvcihhKXtzdXBlcihhKX1WYigpe3JldHVybiBfLnQodGhpcywxKX1CYyhhKXtyZXR1cm4gXy5maCh0aGlzLDEsYSl9VGUoKXtyZXR1cm4gXy5waCh0aGlzLDEpfWdldE1ldGFkYXRhKCl7cmV0dXJuIF8ucSh0aGlzLHB1Yiw2KX1Paigpe3JldHVybiBfLnplKHRoaXMscHViLDYpfX07Xy5ydWI9Y2xhc3MgZXh0ZW5kcyBfLmx7Y29uc3RydWN0b3IoYSl7c3VwZXIoYSl9bDkoKXtyZXR1cm4gXy5Maih0aGlzLDQpfXFHKCl7cmV0dXJuIF8ucSh0aGlzLHF1YiwxMSl9fTsKfWNhdGNoKGUpe18uX0R1bXBFeGNlcHRpb24oZSl9CnRyeXsKXy5vdWI9WzIsM107Cn1jYXRjaChlKXtfLl9EdW1wRXhjZXB0aW9uKGUpfQp0cnl7Cl8ubnViPVswLF8uRyxfLkVdOwp9Y2F0Y2goZSl7Xy5fRHVtcEV4Y2VwdGlvbihlKX0KdHJ5ewpfLiRzPWNsYXNzIGV4dGVuZHMgXy5se2NvbnN0cnVjdG9yKGEpe3N1cGVyKGEpfWdldEhlaWdodCgpe3JldHVybiBfLnhlKHRoaXMsMSl9c2V0SGVpZ2h0KGEpe3JldHVybiBfLmxrKHRoaXMsMSxhKX1xZygpe3JldHVybiBfLndlKHRoaXMsMSl9Z2V0V2lkdGgoKXtyZXR1cm4gXy54ZSh0aGlzLDIpfVZpKCl7cmV0dXJuIF8ud2UodGhpcywyKX19O18uYXQ9ZnVuY3Rpb24oYSl7cmV0dXJuIF8udChhLDcpfTtfLmJ0PWNsYXNzIGV4dGVuZHMgXy5se2NvbnN0cnVjdG9yKGEpe3N1cGVyKGEpfWdldFVybCgpe3JldHVybiBfLnQodGhpcywxKX1FYygpe3JldHVybiBfLnBoKHRoaXMsMSl9Z2V0VGl0bGUoKXtyZXR1cm4gXy50KHRoaXMsMTEpfXNldFRpdGxlKGEpe3JldHVybiBfLmZoKHRoaXMsMTEsYSl9bGQoKXtyZXR1cm4gXy5waCh0aGlzLDExKX19O18uYnQucHJvdG90eXBlLlhhPSJoWkpjamYiOwp9Y2F0Y2goZSl7Xy5fRHVtcEV4Y2VwdGlvbihlKX0KdHJ5ewp2YXIgeXViLHp1YixBdWIsQnViLEN1YjtfLnR1Yj1jbGFzcyBleHRlbmRzIF8ubHtjb25zdHJ1Y3RvcihhKXtzdXBlcihhKX19O18udXViPVswLF8uRV07Xy52dWI9WzAsXy5vdWIsXy5HLF8uR2wsXy53bF07Xy53dWI9WzAsXy5FLC0xLF8uVnMsXy5FLDEsXy5DLC0xLDEsWzAsXy5ELF8uQyxfLkRdLF8uQyxbMCxfLkUsWzAsWzEsMiwzXSxfLkdsLC0xLF8uZkVhXSxfLkUsMixbMCxfLkMsXy5FXV1dO18ueHViPVswLF8uWWssLTFdO3l1Yj1bMCxfLkcsXy5GLFswLF8uRyxfLkNdXTt6dWI9WzAsXy5FLF8uVnMsXy5DLHl1Yl07QXViPVswLFswLF8uRyxfLkUsLTJdLFswLF8uaWwsXy5FXSxfLkcsXy5FXTtCdWI9WzAsXy5ELC0xXTtDdWI9WzAsXy5GLFswLF8uRyxfLkVdXTt2YXIgRHViPWNsYXNzIGV4dGVuZHMgXy5se2NvbnN0cnVjdG9yKGEpe3N1cGVyKGEpfU5jKCl7cmV0dXJuIF8udCh0aGlzLDIpfXNldE9yaWVudGF0aW9uKGEpe3JldHVybiBfLlNiKHRoaXMsXy50dWIsNCxhKX19O3ZhciBFdWI9Y2xhc3MgZXh0ZW5kcyBfLmx7Y29uc3RydWN0b3IoYSl7c3VwZXIoYSl9Z2V0TmFtZSgpe3JldHVybiBfLnQodGhpcywxKX1FZShhKXtyZXR1cm4gXy5maCh0aGlzLDEsYSl9ZGgoKXtyZXR1cm4gXy5waCh0aGlzLDEpfXhkKCl7cmV0dXJuIF8udCh0aGlzLDIpfUxmKCl7cmV0dXJuIF8uT2oodGhpcywzKX1Vbygpe3JldHVybiBfLmVpKHRoaXMsMyl9fTtfLkZ1Yj1jbGFzcyBleHRlbmRzIF8ubHtjb25zdHJ1Y3RvcihhKXtzdXBlcihhKX1xRygpe3JldHVybiBfLnQodGhpcywxKX19O18uZnQ9Y2xhc3MgZXh0ZW5kcyBfLmx7Y29uc3RydWN0b3IoYSl7c3VwZXIoYSl9Z2V0RGVzY3JpcHRpb24oKXtyZXR1cm4gXy5xKHRoaXMsXy5GdWIsMSl9UGcoKXtyZXR1cm4gXy5Daih0aGlzLF8uRnViLDEpfXNldExhYmVsKGEsYil7cmV0dXJuIF8ucmoodGhpcyw3LEV1YixhLGIpfUVoYSgpe3JldHVybiBfLk9qKHRoaXMsOCl9Z2V0TG9jYXRpb24oKXtyZXR1cm4gXy5xKHRoaXMsRHViLDE3KX1VeShhKXtyZXR1cm4gXy5TYih0aGlzLER1YiwxNyxhKX19O18uZnQucHJvdG90eXBlLlhhPSJEV2g3NmUiO3ZhciBHdWI9WzAsXy5FLF8uaWwsXy52dWJdO18uSHViPVswLFswLF8uRSwtMV0sWzAsXy53dWIsXy5FLDcsWzAsMyxfLlNsLDEsXy5DXV0sWzAsR3ViLF8uRSxfLmlsLEd1YixfLkYsWzAsXy5HLF8uRixbMCxfLkJsXV1dLHp1YixbMCxfLkYsWzAsXy5FXSxfLmFsLFswLF8uYWwsLTRdXSxBdWIsXy5GLFswLF8uRSwtMSxfLkcsXy5FXSxfLkcsMSxfLkYsWzAsXy5HLF8uRSxfLkYsWzAsXy5FXV0sMSxfLkUseXViLEN1YixfLkYsWzAsXy5HXSxfLlRsLFswLF8ueHViLF8uRSwtMSxfLnN1YiwtMV0sXy51dWIsWzAsMSxfLkVdLEJ1Yl07Cn1jYXRjaChlKXtfLl9EdW1wRXhjZXB0aW9uKGUpfQp0cnl7Cl8uVnZiPWNsYXNzIGV4dGVuZHMgXy5se2NvbnN0cnVjdG9yKGEpe3N1cGVyKGEpfX07Xy5CdD1jbGFzcyBleHRlbmRzIF8ubHtjb25zdHJ1Y3RvcihhKXtzdXBlcihhKX1OYygpe3JldHVybiBfLnQodGhpcywxMCl9fTtfLkN0PWNsYXNzIGV4dGVuZHMgXy5se2NvbnN0cnVjdG9yKGEpe3N1cGVyKGEpfUJvYSgpe3JldHVybiBfLnBoKHRoaXMsMSl9fTtfLld2Yj1jbGFzcyBleHRlbmRzIF8ubHtjb25zdHJ1Y3RvcihhKXtzdXBlcihhKX14ZCgpe3JldHVybiBfLnQodGhpcywyKX1OYygpe3JldHVybiBfLnQodGhpcywzKX19O18uRHQ9Y2xhc3MgZXh0ZW5kcyBfLmx7Y29uc3RydWN0b3IoYSl7c3VwZXIoYSl9Z2V0SW1hZ2VVcmwoKXtyZXR1cm4gXy50KHRoaXMsMil9b2EoKXtyZXR1cm4gXy5Maih0aGlzLDIpfWdldE1ldGFkYXRhKCl7cmV0dXJuIF8ucSh0aGlzLF8uZnQsNSl9T2ooKXtyZXR1cm4gXy56ZSh0aGlzLF8uZnQsNSl9Z2V0SW5kZXgoKXtyZXR1cm4gXy54ZSh0aGlzLDYpfX07Xy5FdD1jbGFzcyBleHRlbmRzIF8ubHtjb25zdHJ1Y3RvcihhKXtzdXBlcihhKX19O18uRXQucHJvdG90eXBlLlhhPSJJQ3NvMmMiO18uWHZiPVswLDYsWzAsXy55dmIsMSxfLkQsLTFdLDEsXy5FLC0yLF8uRCxbMCxfLkQsLTEsMSxfLkRdLFswLF8uRCwtMV1dO3ZhciBZdmI9WzAsXy5udWIsXy5FLF8uRyxbMCxfLlh2YixfLkUsLTEsWzAsXy5FLF8uc3QsXy5FLF8uRyxfLkUsLTFdXSxfLkh1YixfLkMsMSxbMCxfLkQsLTcsMSxfLkQsMSxfLkRdLF8uRSwtMV07Xy5admI9WzAsXy5GLFl2YixfLkMsWXZiLF8uQ107Cn1jYXRjaChlKXtfLl9EdW1wRXhjZXB0aW9uKGUpfQp0cnl7Cl8uY0NiPWZ1bmN0aW9uKGEsYil7cmV0dXJuIF8uWmgoYSwxLGIpfTtfLmRDYj1mdW5jdGlvbihhLGIpe3JldHVybiBfLmxrKGEsNixiKX07Xy5lQ2I9ZnVuY3Rpb24oYSxiKXtyZXR1cm4gXy5sayhhLDIsYil9O18uZkNiPWNsYXNzIGV4dGVuZHMgXy5se2NvbnN0cnVjdG9yKGEpe3N1cGVyKGEpfX07Xy5CdT1mdW5jdGlvbihhKXtyZXR1cm4gXy5xKGEsXy50eGIsNCl9O18uQ3U9ZnVuY3Rpb24oYSl7cmV0dXJuIF8ucShhLF8uc3hiLDYpfTtfLmdDYj1mdW5jdGlvbihhLGIpe3JldHVybiBfLlNiKGEsXy5EdCwzLGIpfTtfLmhDYj1mdW5jdGlvbihhLGIpe3JldHVybiBfLnVoKGEsMSxfLkR0LGIpfTtfLkR1PWZ1bmN0aW9uKGEpe3JldHVybiBfLm1oKGEsXy5EdCwxLF8ub2goKSl9OwpfLmlDYj1jbGFzcyBleHRlbmRzIF8ubHtjb25zdHJ1Y3RvcihhKXtzdXBlcihhKX1nZXRVcmwoKXtyZXR1cm4gXy5xKHRoaXMsXy5oaCwxKX1FYygpe3JldHVybiBfLmtqKHRoaXMsXy5oaCwxKX1nZXRMYWJlbCgpe3JldHVybiBfLnQodGhpcyw2KX1zZXRMYWJlbChhKXtyZXR1cm4gXy5maCh0aGlzLDYsYSl9fTtfLkV1PWZ1bmN0aW9uKGEpe3JldHVybiBfLm1oKGEsXy5pQ2IsMSxfLm9oKCkpfTtfLkZ1PWZ1bmN0aW9uKGEpe3JldHVybiBfLnEoYSxfLkV0LDYsXy5kYil9O18uR3U9Y2xhc3MgZXh0ZW5kcyBfLmx7Y29uc3RydWN0b3IoYSl7c3VwZXIoYSwwLF8uR3UubWVzc2FnZUlkKX1OYygpe3JldHVybiBfLnQodGhpcywxLHZvaWQgMCxfLmRiKX1vYSgpe3JldHVybiBfLnplKHRoaXMsXy5ZdCwxNCxfLmRiKX1iVWIoYSl7cmV0dXJuIF8uQmoodGhpcyxfLll0LDE0LGEsXy5kYil9bDkoKXtyZXR1cm4gXy5Maih0aGlzLDE4LF8uZGIpfX07Xy5HdS5tZXNzYWdlSWQ9InB2cCI7Cn1jYXRjaChlKXtfLl9EdW1wRXhjZXB0aW9uKGUpfQp0cnl7Cl8ucUJiPV8ua2MoIk5ob0ZLZiIsW18uWHJdKTsKfWNhdGNoKGUpe18uX0R1bXBFeGNlcHRpb24oZSl9CnRyeXsKXy5WemI9Xy5rYygiRjNOM0xjIixbXy5Ycl0pOwp9Y2F0Y2goZSl7Xy5fRHVtcEV4Y2VwdGlvbihlKX0KdHJ5ewpfLk96Yj1fLmtjKCJaUHczSWIiLFtfLlhyXSk7Cn1jYXRjaChlKXtfLl9EdW1wRXhjZXB0aW9uKGUpfQp0cnl7Cl8ub3U9ZnVuY3Rpb24oYSl7cmV0dXJuKGIsYyxkKT0+e2I9YShiLGMsZCk7aWYoIWIpcmV0dXJuIGI7Yi5tZXRhZGF0YS5CTGM9ITA7cmV0dXJuIGJ9fTtfLnB1PWNsYXNze2NvbnN0cnVjdG9yKCl7dGhpcy5rYT1udWxsfW5vdGlmeSgpe3RoaXMua2F8fCh0aGlzLmthPW5ldyBfLk1xKTt0aGlzLmthLnJlc29sdmUoKX19Owp9Y2F0Y2goZSl7Xy5fRHVtcEV4Y2VwdGlvbihlKX0KdHJ5ewpfLm14Yj1mdW5jdGlvbigpe3ZhciBhPV8uendhKCk7cmV0dXJuIF8udChhLDEpfTtfLlZ0PWNsYXNzIGV4dGVuZHMgXy54eGF7Y29uc3RydWN0b3IoYSxiLGMsZCl7c3VwZXIoYSxiLGMsZCk7dGhpc1tfLmZXYV09InVuYXJ5In19Owp9Y2F0Y2goZSl7Xy5fRHVtcEV4Y2VwdGlvbihlKX0KdHJ5ewpfLmd3Yj1bMCxfLkVdO18uaHdiPVswLF8uRV07Xy5pd2I9WzAsXy5FXTsKfWNhdGNoKGUpe18uX0R1bXBFeGNlcHRpb24oZSl9CnRyeXsKXy5id2I9WzAsXy5kRWEsLTFdO18uY3diPVswLF8uWGwsLTFdO18uZHdiPVswLF8uY3diLC0xXTtfLmV3Yj1bMCwzLF8uQywtMSw0LF8uS2xdO18uZndiPVswLF8uRywtMSxfLmlsLF8uRSxfLmN3YiwtMSxfLmFsLF8uQyxfLkcsXy5id2IsXy5FLF8uRywtMSxfLmR3YixfLkMsXy5wbCxfLmJ3YixfLmFsLFswLDEsXy5DLC00LF8uWWssWzAsXy5hbCwtMSxfLkNdLF8uRSxfLmFsLF8uRixbMCxfLkcsXy5DXSxfLkMsLTEsXy5HLC0yLF8uYWwsLTEsXy5HLF8uYWwsXy5HLF8uQyxfLmV3YixfLllrLF8uTmwsWzAsXy5HLC0xLF8uRV0sXy5EXSxfLkUsXy5TbCxfLkYsWzAsXy5id2IsXy5GLFswLF8uRSxfLkddLF8uYWwsXy5HLC0xXSwxLF8uRixbMCxfLnBsLC0xLF8uTmxdLF8uRyxfLmJ3Yl07Cn1jYXRjaChlKXtfLl9EdW1wRXhjZXB0aW9uKGUpfQp0cnl7Cl8uR3Q9Y2xhc3MgZXh0ZW5kcyBfLmx7Y29uc3RydWN0b3IoYSl7c3VwZXIoYSl9fTtfLkd0LnByb3RvdHlwZS5YYT0iTnNPSkJjIjsKfWNhdGNoKGUpe18uX0R1bXBFeGNlcHRpb24oZSl9CnRyeXsKXy5hd2I9Y2xhc3MgZXh0ZW5kcyBfLmx7Y29uc3RydWN0b3IoYSl7c3VwZXIoYSl9fTsKfWNhdGNoKGUpe18uX0R1bXBFeGNlcHRpb24oZSl9CnRyeXsKXy5SdmI9Y2xhc3MgZXh0ZW5kcyBfLmx7Y29uc3RydWN0b3IoYSl7c3VwZXIoYSl9fTtfLkF0PWNsYXNzIGV4dGVuZHMgXy5se2NvbnN0cnVjdG9yKGEpe3N1cGVyKGEpfUVmKCl7cmV0dXJuIF8uTmoodGhpcywxKX13cChhKXtyZXR1cm4gXy53aCh0aGlzLDEsYSl9c1QoKXtyZXR1cm4gXy54ZSh0aGlzLDMpfUI3YSgpe3JldHVybiBfLnEodGhpcyxfLlJ2YiwyKX12OGEoKXtyZXR1cm4gXy5raih0aGlzLF8uUnZiLDIpfX07Xy5TdmI9WzAsXy5hbCxbMCxfLkMsLTRdLF8uQ107Cn1jYXRjaChlKXtfLl9EdW1wRXhjZXB0aW9uKGUpfQp0cnl7Cl8uUHZiPWNsYXNzIGV4dGVuZHMgXy5se2NvbnN0cnVjdG9yKGEpe3N1cGVyKGEpfX07Xy5RdmI9WzAsXy5FLF8uRixbMCxfLkUsXy5HXSxfLkUsLTIsXy5Wc107Cn1jYXRjaChlKXtfLl9EdW1wRXhjZXB0aW9uKGUpfQp0cnl7Cl8uTXViPVswLF8uQmwsLTFdOwp9Y2F0Y2goZSl7Xy5fRHVtcEV4Y2VwdGlvbihlKX0KdHJ5ewpfLmd0PWNsYXNzIGV4dGVuZHMgXy5se2NvbnN0cnVjdG9yKGEpe3N1cGVyKGEpfXJsKCl7cmV0dXJuIF8udCh0aGlzLDEpfX07Xy5odD1bMCxfLkUsXy5GLFswLF8uQywtMSxbMCxbMCxfLkddLF8uTXViLF8uRCxbMCxfLmFsXSxfLkRdLF8uVnNdXTsKfWNhdGNoKGUpe18uX0R1bXBFeGNlcHRpb24oZSl9CnRyeXsKXy5LdmI9WzAsXy5FLC0xLF8uR107Xy5MdmI9WzAsXy5FLF8uRyxfLnRzLF8uRixbMCxfLkUsWzAsXy51cywtMV1dLF8uRCxfLkcsXy5LdmJdO3ZhciBNdmI9WzAsXy5MdmIsXy5DLF8uRywtMSxfLmh0LC0xLDEsXy51cyxfLmh0XTtfLk52Yj1jbGFzcyBleHRlbmRzIF8ubHtjb25zdHJ1Y3RvcihhKXtzdXBlcihhKX19O18uTnZiLnByb3RvdHlwZS5YYT0iR2tIbG9kIjtfLk92Yj1bMCxfLkYsXy5MdmIsTXZiLF8uRywxLF8uRSxfLmh0LF8uR107Cn1jYXRjaChlKXtfLl9EdW1wRXhjZXB0aW9uKGUpfQp0cnl7Cl8uSHZiPWNsYXNzIGV4dGVuZHMgXy5se2NvbnN0cnVjdG9yKGEpe3N1cGVyKGEpfWdldFR5cGUoKXtyZXR1cm4gXy5Paih0aGlzLDEpfUFjKGEpe3JldHVybiBfLlpoKHRoaXMsMSxhKX10ZSgpe3JldHVybiBfLmVpKHRoaXMsMSl9ZXFiKCl7cmV0dXJuIF8ubWgodGhpcyxfLmd0LDIsXy5vaCgpKX19O18uSXZiPVswLF8uRyxfLkYsXy5odF07Xy5KdmI9WzAsXy5GLF8uSXZiLFswLF8uRSwtNixbMCxfLkVdXSxbMCxfLkUsXy5odCwtMSxfLkddXTsKfWNhdGNoKGUpe18uX0R1bXBFeGNlcHRpb24oZSl9CnRyeXsKXy5UdmI9Y2xhc3MgZXh0ZW5kcyBfLmx7Y29uc3RydWN0b3IoYSl7c3VwZXIoYSl9fTtfLlV2Yj1jbGFzcyBleHRlbmRzIF8ubHtjb25zdHJ1Y3RvcihhKXtzdXBlcihhKX1VeCgpe3JldHVybiBfLnEodGhpcyxfLllzLDEpfWdldFRpdGxlKCl7cmV0dXJuIF8udCh0aGlzLDIpfXNldFRpdGxlKGEpe3JldHVybiBfLmZoKHRoaXMsMixhKX1sZCgpe3JldHVybiBfLnBoKHRoaXMsMil9VmwoKXtyZXR1cm4gXy5xKHRoaXMsXy5BdCw1KX1SQygpe3JldHVybiBfLnEodGhpcyxfLlR2YiwxMCl9WE8oKXtyZXR1cm4gXy5xKHRoaXMsXy5QdmIsMTUpfX07Xy5VdmIucHJvdG90eXBlLlhhPSJjQ0h0NWQiOwp9Y2F0Y2goZSl7Xy5fRHVtcEV4Y2VwdGlvbihlKX0KdHJ5ewpfLkl1Yj1jbGFzcyBleHRlbmRzIF8ubHtjb25zdHJ1Y3RvcihhKXtzdXBlcihhKX19O18uSnViPVswLF8uQywtMV07Xy5LdWI9WzAsXy5FLF8ubnViLF8udXViLF8uRyxfLkp1YixfLkUsLTIsWzAsXy5pbCxfLkYsWzAsXy5DLC0yLF8uRSxfLkddXSxfLkcsXy5FLF8uRCxfLkddO18uTHViPVswLF8uS3ViLF8uSHViLF8uRSwtMl07Cn1jYXRjaChlKXtfLl9EdW1wRXhjZXB0aW9uKGUpfQp0cnl7Cl8udXQ9ZnVuY3Rpb24oYSl7cmV0dXJuIF8uT2ooYSw0KX07Xy5EdmI9Y2xhc3MgZXh0ZW5kcyBfLmx7Y29uc3RydWN0b3IoYSl7c3VwZXIoYSl9fTtfLnZ0PWNsYXNzIGV4dGVuZHMgXy5se2NvbnN0cnVjdG9yKGEpe3N1cGVyKGEpfWdldE1ldGFkYXRhKCl7cmV0dXJuIF8ucSh0aGlzLF8uZnQsMil9T2ooKXtyZXR1cm4gXy56ZSh0aGlzLF8uZnQsMil9ek0oKXtyZXR1cm4gXy50KHRoaXMsMyl9fTtfLnZ0LnByb3RvdHlwZS5YYT0ibTlsS2FmIjtfLnd0PWZ1bmN0aW9uKGEpe3JldHVybiBfLnplKGEsXy5idCwxKX07Xy54dD1mdW5jdGlvbihhKXtyZXR1cm4gXy5xKGEsXy5idCwxKX07Xy5FdmI9Y2xhc3MgZXh0ZW5kcyBfLmx7Y29uc3RydWN0b3IoYSl7c3VwZXIoYSl9b1ooKXtyZXR1cm4gXy5EZSh0aGlzLDEpfUU5KCl7cmV0dXJuIF8uRmUodGhpcywxKX19O18uenQ9ZnVuY3Rpb24oYSl7cmV0dXJuIF8ucShhLF8uJHMsNSl9O18uRnZiPWNsYXNzIGV4dGVuZHMgXy5se2NvbnN0cnVjdG9yKGEpe3N1cGVyKGEpfX07Cl8uRnZiLnByb3RvdHlwZS5YYT0iWmN2MkMiO18uR3ZiPVswLF8uRixfLkx1Yl07Cn1jYXRjaChlKXtfLl9EdW1wRXhjZXB0aW9uKGUpfQp0cnl7CnZhciBVdWI7Xy5vdD1bMCxfLkZsLF8uSG9dO1V1Yj1jbGFzcyBleHRlbmRzIF8ubHtjb25zdHJ1Y3RvcihhKXtzdXBlcihhKX19O18uVnViPWNsYXNzIGV4dGVuZHMgXy5se2NvbnN0cnVjdG9yKGEpe3N1cGVyKGEpfWdldERhdGEoKXtyZXR1cm4gXy5xKHRoaXMsVXViLDEpfXNldERhdGEoYSl7cmV0dXJuIF8uU2IodGhpcyxVdWIsMSxhKX1nZXRVcmwoKXtyZXR1cm4gXy5xKHRoaXMsXy5udCwyKX1FYygpe3JldHVybiBfLmtqKHRoaXMsXy5udCwyKX1nZXRXaWR0aCgpe3JldHVybiBfLnhlKHRoaXMsMyl9Z2V0SGVpZ2h0KCl7cmV0dXJuIF8ueGUodGhpcyw0KX1zZXRIZWlnaHQoYSl7cmV0dXJuIF8ubWsodGhpcyw0LGEpfXRpKCl7cmV0dXJuIF8ucSh0aGlzLF8uSHMsNSl9YkkoKXtyZXR1cm4gXy5raih0aGlzLF8uSHMsNSl9fTtfLld1Yj1bMCxbMCxfLkxsLF8uVWxdLF8ub3QsXy52bCwtMSxfLmJxYixfLkZsXTsKfWNhdGNoKGUpe18uX0R1bXBFeGNlcHRpb24oZSl9CnRyeXsKXy5wdD1bLTEzLHt9LFswLF8uRmwsXy5udWJdLFswLF8uRixfLld1YixbMCxfLkZsLF8ub3RdXSxfLm90LF8uRSxfLkQsWzAsXy5vdF0sXy5HLF8uRCwxLFswLF8uRSwtMSwxLF8uRixbMCxfLkUsLTFdXSxfLkUsXy5hbF07Cn1jYXRjaChlKXtfLl9EdW1wRXhjZXB0aW9uKGUpfQp0cnl7Cl8uanQ9Y2xhc3MgZXh0ZW5kcyBfLmx7Y29uc3RydWN0b3IoYSl7c3VwZXIoYSl9Z2V0QXR0cmlidXRlVHlwZSgpe3JldHVybiBfLk9qKHRoaXMsMSl9fTtfLmp0LnByb3RvdHlwZS5YYT0iTmZwNkZlIjsKfWNhdGNoKGUpe18uX0R1bXBFeGNlcHRpb24oZSl9CnRyeXsKdmFyIFl1YixjdmIsZXZiLGZ2YixpdmI7WXViPWNsYXNzIGV4dGVuZHMgXy5se2NvbnN0cnVjdG9yKGEpe3N1cGVyKGEpfX07Xy5adWI9Y2xhc3MgZXh0ZW5kcyBfLmx7Y29uc3RydWN0b3IoYSl7c3VwZXIoYSwxMyl9Z2V0SWQoKXtyZXR1cm4gXy5xKHRoaXMsWXViLDEpfU1jKGEpe3JldHVybiBfLlNiKHRoaXMsWXViLDEsYSl9WWcoKXtyZXR1cm4gXy5raih0aGlzLFl1YiwxKX1FSygpe3JldHVybiBfLk5qKHRoaXMsMTIpfX07Cl8uJHViPV8uRWIoXy5qaGEsZnVuY3Rpb24oYSxiLGMpe2I9Xy5jZGEoYik7aWYoYiE9bnVsbCYmYiE9bnVsbClzd2l0Y2goXy5LYihhLGMsMCksYT1hLmthLF8ueGRhKGIpLHR5cGVvZiBiKXtjYXNlICJudW1iZXIiOmI8MD8oYz1fLmJEYShfLiRDYSgtYikpLF8uTGIoYSxjLmxvLGMuaGkpKTpfLnhnYShhLGIpO2JyZWFrO2Nhc2UgImJpZ2ludCI6Yz1iPEJpZ0ludCgwKT9fLmJEYShfLnlnYSgtYikpOl8ueWdhKGIpO18uTGIoYSxjLmxvLGMuaGkpO2JyZWFrO2RlZmF1bHQ6Yz1iLmxlbmd0aCYmYlswXT09PSItIj9fLmJEYShfLnZkYShiLnN1YnN0cmluZygxKSkpOl8udmRhKGIpLF8uTGIoYSxjLmxvLGMuaGkpfX0sXy5laik7Xy5hdmI9WzAsXy5HLF8uRCwtMV07Xy5idmI9WzMsNCw1XTtjdmI9WzAsXy5idmIsXy5HLF8uRSxfLklsLFswLF8uRSxfLlZzXSxfLklsLFswLF8uRV0sXy5JbCxbMCxfLkVdLF8uRSxbMCxbMCxfLkUsLTFdLF8uR11dO18uZHZiPVswLF8uRSxfLkMsXy5ac107CmV2Yj1bMCxfLm5sLC0xLDEsWzAsXy5FLC0xXV07ZnZiPVswLF8uRSwtMSxfLkMsXy5FLF8uRyxfLkYsKCk9PmZ2YixfLmFsXTtfLmd2Yj1bMCxbMCxfLmFsLF8uQ10sWzAsXy5hbCwtMSxfLkMsXy5ELC0xXSxfLkYsZnZiLF8uRCxfLllrXTtfLmh2Yj1bMCxfLkddO2l2Yj1bMCxbNCw1XSxfLkcsXy5FLFswLF8uRSwtMl0sXy5JbCxldmIsXy5JbCxbMCxldmIsXy5DXSxfLkMsXy5FLC0xLF8uRCxfLkUsWzAsXy5pbCwtMV0sMSxfLkUsY3ZiLFswLF8uRSwtMSxfLkQsXy5GLFswLF8uRSwtMV0sXy5FLC0yXSxfLmh2YixfLkcsXy5GLF8uZ3ZiLF8uQyxfLmh0LC0xLF8uRCxfLkUsLTEsXy5GLF8uTHViLF8uRCxfLmR2YixfLmh0LF8uRV07Xy5qdmI9WzAsXy5FLF8uRixfLmF2YiwtMSxfLkYsWzAsXy5FLFswLF8uRSwtMl0sXy5FLC0xLF8uQyxfLkUsXy5GLFswLF8uRV1dXTtfLmt2Yj1bMCxfLkddO3ZhciBsdmI9WzAsXy5wdCxbMCxfLm90LF8ucHQsXy5McixfLkNsLF8uRmwsLTFdXTtfLm12Yj1jbGFzcyBleHRlbmRzIF8ubHtjb25zdHJ1Y3RvcihhKXtzdXBlcihhKX1HZSgpe3JldHVybiBfLnEodGhpcyxfLnJ0LDYpfUFsKCl7cmV0dXJuIF8ua2oodGhpcyxfLnJ0LDYpfWdldE5hbWUoKXtyZXR1cm4gXy50KHRoaXMsOSl9RWUoYSl7cmV0dXJuIF8uZmgodGhpcyw5LGEpfWRoKCl7cmV0dXJuIF8ucGgodGhpcyw5KX1nZXREZXNjcmlwdGlvbigpe3JldHVybiBfLnQodGhpcywxMyl9UGcoKXtyZXR1cm4gXy5Maih0aGlzLDEzKX19O18ubnZiPVsxMiwxNV07Xy5tdmIucHJvdG90eXBlLlhhPSJRZENhR2IiO3ZhciBvdmI9WzAsXy5udmIsXy5FLF8uQywtMixfLkYsbHZiLF8uc3QsXy5DLC0xLF8uRSxfLlpzLGN2YixfLklsLGl2YixfLkUsXy5GLF8ua3ZiLF8uSWwsXy5qdmIsXy5zdCwtMV07dmFyIHB2Yj1bMCxfLkMsXy5ELC0xLFswLF8uQ11dO18ucXZiPWNsYXNzIGV4dGVuZHMgXy5se2NvbnN0cnVjdG9yKGEpe3N1cGVyKGEpfWdldFR5cGUoKXtyZXR1cm4gXy5Paih0aGlzLDEpfUFjKGEpe3JldHVybiBfLlpoKHRoaXMsMSxhKX10ZSgpe3JldHVybiBfLmVpKHRoaXMsMSl9am9hKCl7cmV0dXJuIF8ubWgodGhpcyxfLm12YiwyLF8ub2goKSl9fTtfLnF2Yi5wcm90b3R5cGUuWGE9Inc4QVhoIjtfLnJ2Yj1bMCxfLkcsXy5GLG92YixwdmJdOwp9Y2F0Y2goZSl7Xy5fRHVtcEV4Y2VwdGlvbihlKX0KdHJ5ewpfLk51Yj1jbGFzcyBleHRlbmRzIF8ubHtjb25zdHJ1Y3RvcihhKXtzdXBlcihhKX1nZXRWYWx1ZSgpe3JldHVybiBfLk9qKHRoaXMsMSl9c2V0VmFsdWUoYSl7cmV0dXJuIF8uWmgodGhpcywxLGEpfWNsZWFyVmFsdWUoKXtyZXR1cm4gXy5HZSh0aGlzLDEpfX07Xy5PdWI9Y2xhc3MgZXh0ZW5kcyBfLmx7Y29uc3RydWN0b3IoYSl7c3VwZXIoYSl9Z2V0VmFsdWUoKXtyZXR1cm4gXy5Paih0aGlzLDEpfXNldFZhbHVlKGEpe3JldHVybiBfLlpoKHRoaXMsMSxhKX1jbGVhclZhbHVlKCl7cmV0dXJuIF8uR2UodGhpcywxKX19O18uUHViPWZ1bmN0aW9uKGEpe3JldHVybiBfLkEoYSw3KX07Xy5RdWI9Y2xhc3MgZXh0ZW5kcyBfLmx7Y29uc3RydWN0b3IoYSl7c3VwZXIoYSwxMil9b2ooKXtyZXR1cm4gXy5xKHRoaXMsXy5IcywyKX1jbGVhckNvbG9yKCl7cmV0dXJuIF8uR2UodGhpcywyKX10aSgpe3JldHVybiBfLnQodGhpcywxMSl9YkkoKXtyZXR1cm4gXy5waCh0aGlzLDExKX19OwpfLlJ1Yj17fTtfLlN1Yj1jbGFzcyBleHRlbmRzIF8ubHtjb25zdHJ1Y3RvcihhKXtzdXBlcihhKX1vYSgpe3JldHVybiBfLnhlKHRoaXMsMSl9d2EoKXtyZXR1cm4gXy54ZSh0aGlzLDIpfWdldFN0eWxlKCl7cmV0dXJuIF8ucSh0aGlzLF8uUXViLDMpfXNldFN0eWxlKGEpe3JldHVybiBfLlNiKHRoaXMsXy5RdWIsMyxhKX1oeSgpe3JldHVybiBfLmtqKHRoaXMsXy5RdWIsMyl9fTtfLlR1Yj1bLTEyLF8uUnViLFswLF8uR10sXy5icWIsXy5HLC0xLFswLF8uQyxfLkddLFswLF8uR10sXy5ELC0yLDEsXy5FXTtfLmt0PWZ1bmN0aW9uKGEpe3JldHVybiBfLm1oKGEsXy5TdWIsMixfLm9oKCkpfTtfLmx0PWNsYXNzIGV4dGVuZHMgXy5se2NvbnN0cnVjdG9yKGEpe3N1cGVyKGEpfXJsKCl7cmV0dXJuIF8udCh0aGlzLDEpfX07Xy5tdD1bMCxfLkZsLF8uRixbMCxfLnZsLC0xLF8uVHViXV07Cn1jYXRjaChlKXtfLl9EdW1wRXhjZXB0aW9uKGUpfQp0cnl7CnZhciBzdmI7c3ZiPWNsYXNzIGV4dGVuZHMgXy5se2NvbnN0cnVjdG9yKGEpe3N1cGVyKGEpfX07Xy50dmI9ZnVuY3Rpb24oYSl7cmV0dXJuIF8ucShhLHN2YiwyKX07Xy51dmI9ZnVuY3Rpb24oYSl7cmV0dXJuIF8ubWgoYSxfLlZ1YiwxLF8ub2goKSl9O18udnZiPWNsYXNzIGV4dGVuZHMgXy5se2NvbnN0cnVjdG9yKGEpe3N1cGVyKGEpfVpoYSgpe3JldHVybiBfLnEodGhpcyxfLnF2YiwyKX19O18udnZiLnByb3RvdHlwZS5YYT0iUE1nN3BjIjtfLnd2Yj1jbGFzcyBleHRlbmRzIF8ubHtjb25zdHJ1Y3RvcihhKXtzdXBlcihhKX1WUSgpe3JldHVybiBfLnEodGhpcyxfLlJuLDMpfX07Xy53dmIucHJvdG90eXBlLlhhPSJ3emZiWWMiOwp9Y2F0Y2goZSl7Xy5fRHVtcEV4Y2VwdGlvbihlKX0KdHJ5ewp2YXIgc3diLHV3Yix6d2IsSHdiLEx3YixNd2IsU3diLCR3YixheGI7Xy5IdD1mdW5jdGlvbihhKXtyZXR1cm4gXy5PaihhLDEpfTtfLmp3Yj1mdW5jdGlvbihhLGIpe3JldHVybiBfLmZoKGEsMSxiKX07Xy5JdD1mdW5jdGlvbihhKXtyZXR1cm4gXy50KGEsMil9O18ua3diPVsyLDNdO18ubHdiPVsyMSwyM107Xy5KdD1mdW5jdGlvbihhKXtyZXR1cm4gXy50KGEsMTEpfTtfLm13Yj1mdW5jdGlvbihhKXtyZXR1cm4gXy5BKGEsMyl9O18ubndiPWZ1bmN0aW9uKGEsYil7cmV0dXJuIF8uZmgoYSwyLGIpfTtfLm93Yj1mdW5jdGlvbihhLGIpe3JldHVybiBfLlpoKGEsMyxiKX07Xy5LdD1mdW5jdGlvbihhKXtyZXR1cm4gXy5xKGEsXy5XdmIsNCl9O18ucHdiPWZ1bmN0aW9uKGEpe3JldHVybiBfLnEoYSxfLkN0LDQpfTtfLnF3Yj1jbGFzcyBleHRlbmRzIF8ubHtjb25zdHJ1Y3RvcihhKXtzdXBlcihhKX19O18ucndiPWZ1bmN0aW9uKGEpe3JldHVybiBfLnEoYSxfLnF3Yiw4KX07c3diPWNsYXNzIGV4dGVuZHMgXy5se2NvbnN0cnVjdG9yKGEpe3N1cGVyKGEpfX07Cl8uTHQ9Y2xhc3MgZXh0ZW5kcyBfLmx7Y29uc3RydWN0b3IoYSl7c3VwZXIoYSl9Z2V0VHlwZSgpe3JldHVybiBfLk9qKHRoaXMsMTApfUFjKGEpe3JldHVybiBfLlpoKHRoaXMsMTAsYSl9dGUoKXtyZXR1cm4gXy5laSh0aGlzLDEwKX1nZXROYW1lKCl7cmV0dXJuIF8udCh0aGlzLDIpfUVlKGEpe3JldHVybiBfLmZoKHRoaXMsMixhKX1kaCgpe3JldHVybiBfLnBoKHRoaXMsMil9Z2V0RGVzY3JpcHRpb24oKXtyZXR1cm4gXy50KHRoaXMsNCl9UGcoKXtyZXR1cm4gXy5Maih0aGlzLDQpfUdlKCl7cmV0dXJuIF8ucSh0aGlzLF8ucnQsNSl9QWwoKXtyZXR1cm4gXy5raih0aGlzLF8ucnQsNSl9fTtfLkx0LnByb3RvdHlwZS5YYT0iVU15a1hiIjtfLnR3Yj1mdW5jdGlvbihhKXtyZXR1cm4gXy5xKGEsXy5MdCwxKX07CnV3Yj1jbGFzcyBleHRlbmRzIF8ubHtjb25zdHJ1Y3RvcihhKXtzdXBlcihhKX1nZXRUeXBlKCl7cmV0dXJuIF8uT2oodGhpcywxKX1BYyhhKXtyZXR1cm4gXy5aaCh0aGlzLDEsYSl9dGUoKXtyZXR1cm4gXy5laSh0aGlzLDEpfWpvYSgpe3JldHVybiBfLm1oKHRoaXMsXy5MdCwyLF8ub2goKSl9fTtfLnZ3Yj1jbGFzcyBleHRlbmRzIF8ubHtjb25zdHJ1Y3RvcihhKXtzdXBlcihhKX1aaGEoKXtyZXR1cm4gXy5xKHRoaXMsdXdiLDYpfX07Xy52d2IucHJvdG90eXBlLlhhPSJ5WjJLYiI7Xy53d2I9ZnVuY3Rpb24oYSl7cmV0dXJuIF8ucShhLF8udndiLDEpfTtfLnh3Yj1jbGFzcyBleHRlbmRzIF8ubHtjb25zdHJ1Y3RvcihhKXtzdXBlcihhKX1jOSgpe3JldHVybiBfLnQodGhpcywyKX1WVWIoKXtyZXR1cm4gXy5waCh0aGlzLDIpfX07Xy55d2I9ZnVuY3Rpb24oYSl7cmV0dXJuIF8ucShhLF8uRHZiLDMpfTt6d2I9Y2xhc3MgZXh0ZW5kcyBfLmx7Y29uc3RydWN0b3IoYSl7c3VwZXIoYSl9fTsKXy5Bd2I9ZnVuY3Rpb24oYSl7cmV0dXJuIF8ubWgoYSx6d2IsMTAsXy5vaCgpKX07Xy5Cd2I9Y2xhc3MgZXh0ZW5kcyBfLmx7Y29uc3RydWN0b3IoYSl7c3VwZXIoYSl9fTtfLkN3Yj1jbGFzcyBleHRlbmRzIF8ubHtjb25zdHJ1Y3RvcihhKXtzdXBlcihhKX19O18uRHdiPWNsYXNzIGV4dGVuZHMgXy5se2NvbnN0cnVjdG9yKGEpe3N1cGVyKGEpfX07Xy5Fd2I9Y2xhc3MgZXh0ZW5kcyBfLmx7Y29uc3RydWN0b3IoYSl7c3VwZXIoYSl9Qm8oYSl7cmV0dXJuIF8ubWgodGhpcyxfLnZ0LDMsXy5vaChhKSl9THQoKXtyZXR1cm4gXy5BKHRoaXMsNSl9fTtfLkV3Yi5wcm90b3R5cGUuWGE9Im14QklUZSI7CnZhciBGd2I9Y2xhc3MgZXh0ZW5kcyBfLmx7Y29uc3RydWN0b3IoYSl7c3VwZXIoYSl9Z2V0VHlwZSgpe3JldHVybiBfLk9qKHRoaXMsMSl9QWMoYSl7cmV0dXJuIF8uWmgodGhpcywxLGEpfXRlKCl7cmV0dXJuIF8uZWkodGhpcywxKX1kQigpe3JldHVybiBfLnhlKHRoaXMsMTkpfWdldE5hbWUoKXtyZXR1cm4gXy50KHRoaXMsMjMpfUVlKGEpe3JldHVybiBfLmZoKHRoaXMsMjMsYSl9ZGgoKXtyZXR1cm4gXy5waCh0aGlzLDIzKX1HbSgpe3JldHVybiBfLnQodGhpcywyKX1nZXREZXNjcmlwdGlvbigpe3JldHVybiBfLnQodGhpcywyNCl9UGcoKXtyZXR1cm4gXy5Maih0aGlzLDI0KX1ZRCgpe3JldHVybiBfLnEodGhpcyxzd2IsMyl9ckcoKXtyZXR1cm4gXy50KHRoaXMsMTMpfUQ5KCl7cmV0dXJuIF8ucGgodGhpcywxMyl9Qm8oYSl7cmV0dXJuIF8ubWgodGhpcyxfLnZ0LDI1LF8ub2goYSkpfX07RndiLnByb3RvdHlwZS5YYT0iVzlGY3RlIjsKXy5NdD1jbGFzcyBleHRlbmRzIF8ubHtjb25zdHJ1Y3RvcihhKXtzdXBlcihhKX1pVygpe3JldHVybiBfLnEodGhpcyxfLmJ0LDEpfX07Xy5NdC5wcm90b3R5cGUuWGE9IlAyaXl4ZSI7Xy5Hd2I9ZnVuY3Rpb24oYSl7cmV0dXJuIF8ubWgoYSxfLk10LDEsXy5vaCgpKX07SHdiPWNsYXNzIGV4dGVuZHMgXy5se2NvbnN0cnVjdG9yKGEpe3N1cGVyKGEpfWdldFVybCgpe3JldHVybiBfLnQodGhpcyw0KX1FYygpe3JldHVybiBfLnBoKHRoaXMsNCl9fTtfLkl3Yj1mdW5jdGlvbihhKXtyZXR1cm4gXy5taChhLEh3YiwyLF8ub2goKSl9O18uTnQ9Y2xhc3MgZXh0ZW5kcyBfLmx7Y29uc3RydWN0b3IoYSl7c3VwZXIoYSl9Z2V0SWQoKXtyZXR1cm4gXy50KHRoaXMsMil9TWMoYSl7cmV0dXJuIF8uZmgodGhpcywyLGEpfVlnKCl7cmV0dXJuIF8ucGgodGhpcywyKX19O18uTnQucHJvdG90eXBlLlhhPSJEemRkRmYiO18uTnQucHJvdG90eXBlLm9hPV8uJGIoXy5udWIpOwpfLkp3Yj1mdW5jdGlvbihhLGIpe3JldHVybiBfLlNiKGEsXy5OdCwxLGIpfTtfLkt3Yj1mdW5jdGlvbihhKXtyZXR1cm4gXy5xKGEsXy5OdCwyKX07Xy5PdD1mdW5jdGlvbihhKXtyZXR1cm4gXy56ZShhLF8uTnQsMil9O18uUXQ9ZnVuY3Rpb24oYSl7cmV0dXJuIF8ucShhLF8uTnQsMil9O0x3Yj1jbGFzcyBleHRlbmRzIF8ubHtjb25zdHJ1Y3RvcihhKXtzdXBlcihhKX1nZXRVcmwoKXtyZXR1cm4gXy5xKHRoaXMsXy5udCwxKX1FYygpe3JldHVybiBfLmtqKHRoaXMsXy5udCwxKX1TYygpe3JldHVybiBfLnEodGhpcyxfLlp1YiwyKX1Paygpe3JldHVybiBfLmtqKHRoaXMsXy5adWIsMil9Z2V0RHVyYXRpb24oKXtyZXR1cm4gXy5xKHRoaXMsXy5LciwzKX1kNSgpe3JldHVybiBfLkNqKHRoaXMsXy5LciwzKX1nZXRUaXRsZSgpe3JldHVybiBfLnQodGhpcyw2KX1zZXRUaXRsZShhKXtyZXR1cm4gXy5WYih0aGlzLDYsYSl9fTsKTXdiPWNsYXNzIGV4dGVuZHMgXy5se2NvbnN0cnVjdG9yKGEpe3N1cGVyKGEpfVNjKCl7cmV0dXJuIF8ucSh0aGlzLF8uWnViLDEpfU9rKCl7cmV0dXJuIF8ua2oodGhpcyxfLlp1YiwxKX1nZXRWaWRlbygpe3JldHVybiBfLnEodGhpcyxMd2IsMil9Y2xlYXJWaWRlbygpe3JldHVybiBfLkdlKHRoaXMsMil9fTtfLk53Yj1mdW5jdGlvbihhKXtyZXR1cm4gXy5taChhLE13Yiw1LF8ub2goKSl9O18uT3diPVswLF8uRixbMCxfLlNzLF8uRSwtMSxfLkcsXy5ELF8uRSxbMCxfLkMsLTJdLF8uRV0sLTRdO18uUHdiPVswLF8uQyxfLk5sLC0zLDEsXy5ObCxfLmFsLF8uU3NdO18uUXdiPVswLF8uU3MsMSxfLkYsXy5TcyxfLlNzLC01XTtfLlJ3Yj1bMCxfLkcsLTIsXy5TbCxfLkcsWzAsMixfLkUsXy5TbCxfLlNzLF8uQ10sXy5HLF8uUHdiLC0xLF8uRixbMCxfLkcsXy5RbF1dO1N3Yj1bMCxfLmFsLC0yXTtfLlR3Yj1bMCxfLmFsLC0yXTsKXy5Vd2I9WzAsXy5odWIsU3diLF8uVHdiLFswLF8uJHViLF8uYWwsXy5TcywtMV0sXy5FXTtfLlZ3Yj1bMCxfLlBwYixfLkVzLFswLF8uRV0sXy4kdWIsMixfLiR0Yl07Xy5Xd2I9WzAsXy5FLF8uR107Xy5Yd2I9WzAsXy5FLF8uYXViLF8uRSxfLmFsXTtfLll3Yj1bMCxfLmFsLC0zLFswLF8uR10sXy5HXTtfLlp3Yj1bMCwyLF8ueHZiLF8uYWwsXy5GLF8uWHdiLF8uRixfLlV3YiwxLF8uYXViLF8uUXdiLF8uRCwyLF8uVHMsXy5Sd2IsXy5KcSxfLll3YixfLlZ3YixfLk93YixfLld3YixfLlNsLF8uRSxfLkQsXy54bCxfLkYsWzAsXy5HLF8uQywtMV0sMSxfLkUsWzAsXy5FbCwtMV0sXy5pdWIsXy5FLF8uRixbLTUse30sXy5FLF8uRyxfLkUsXy5hbF0sXy5FLC0xLF8uYWwsXy5KbCxbMCxfLmh1YixTd2IsXy5Ud2IsXy5DLF8uYWxdLF8uJHRiLF8uSmwsWzAsWzMsNF0sXy5HLF8udWwsXy5JbCxbMCxfLnVsXSxfLk1sXV07CiR3Yj1jbGFzcyBleHRlbmRzIF8ubHtjb25zdHJ1Y3RvcihhKXtzdXBlcihhKX1nZXRNZXRhZGF0YSgpe3JldHVybiBfLnEodGhpcyxfLmZ0LDIpfU9qKCl7cmV0dXJuIF8uemUodGhpcyxfLmZ0LDIpfX07YXhiPWNsYXNzIGV4dGVuZHMgXy5se2NvbnN0cnVjdG9yKGEpe3N1cGVyKGEpfX07YXhiLnByb3RvdHlwZS5YYT0iQ1F2ZjgiOwp2YXIgYnhiPVswLF8ubHdiLDEsXy5FLF8uRixbMCxfLmt3YiwxLF8uSWwsXy5ad2IsXy5JbCxbMCxfLkcsXy5FLF8uVHMsXy5FXV0sXy5FLF8uc3QsNCxfLkcsMixfLkUsXy5DLC0xLDIsXy5FLC0xLF8uYWwsXy5JbCxbMCxfLkcsWzAsXy5qbSwtMSxfLkQsLTFdLF8uRWwsXy5FLF8uVnBiLF8uY3FiLF8uRSwtMSxfLkMsXy5FLF8uRCxfLkUsLTIsXy5odmIsXy5FLC0xLF8uRixfLmd2YixfLm10LF8uRCxfLkUsXy5ELC0xLFswLF8uRixbMCxfLkUsLTJdXSxfLkQsXy5kdmIsXy5FLFswLF8uVWwsLTEsXy5GbCwtMSxfLkNsLF8uRmxdLFswLF8uRSxbMCxfLkUsXy5HLFswLF8uRCxfLnN0LDEsXy5FLF8uRixbMCxfLnN0LF8uR11dXV1dLF8uRixfLmt2YixfLklsLF8uanZiLF8uc3QsLTEsXy5FXSxjeGI9WzAsYnhiLDMsXy5HLFswLF8uRyxfLkYsYnhiLDEsWzAsXy5DLF8uRCwtMV1dXTtuZXcgXy5DaShfLk50KTtfLlpvLkR6ZGRGZj1mdW5jdGlvbihhKXtyZXR1cm4gXy4kbyhfLmFwKF8uZWkoYSwxKSkpKyIsIitfLiRvKF8uYXAoXy5MaihhLDIpKSl9O25ldyBfLkNpKF8uYnQpO18uWm8uaFpKY2pmPWZ1bmN0aW9uKGEpe3JldHVybiBfLiRvKF8uYXAoXy5RdChhKSkpfTtfLk5xKF8uYnQsXy5OdCxmdW5jdGlvbihhKXthPV8uUXQoYSk7cmV0dXJuIGEhPW51bGw/W2FdOltdfSk7Xy5keGI9bmV3IF8uQ2koXy52dCk7Xy5aby5tOWxLYWY9Xy5ZbztfLk5xKF8udnQsXy5idCxmdW5jdGlvbihhKXthPV8ueHQoYSk7cmV0dXJuIGEhPW51bGw/W2FdOltdfSk7bmV3IF8uQ2koRndiKTtfLlpvLlc5RmN0ZT1mdW5jdGlvbihhKXtyZXR1cm4gXy4kbyhfLmFwKF8uTGooYSwxMCkpKX07Xy5OcShGd2IsXy52dCxmdW5jdGlvbihhKXtyZXR1cm4gYS5CbygpfSk7bmV3IF8uQ2koXy5tdmIpO18uWm8uUWRDYUdiPV8uWW87Xy5OcShfLm12YixGd2IsZnVuY3Rpb24oYSl7YT1fLlNoKGEsRndiLDEyLF8ubnZiKTtyZXR1cm4gYSE9bnVsbD9bYV06W119KTtuZXcgXy5DaShfLnF2Yik7Xy5aby53OEFYaD1fLllvO18uTnEoXy5xdmIsXy5tdmIsZnVuY3Rpb24oYSl7cmV0dXJuIGEuam9hKCl9KTtuZXcgXy5DaShfLkZ2Yik7Xy5aby5aY3YyQz1fLllvO18uTnEoXy5GdmIsXy52dCxmdW5jdGlvbihhKXtyZXR1cm4gXy5taChhLF8udnQsMSxfLm9oKCkpfSk7Xy5leGI9Y2xhc3MgZXh0ZW5kcyBfLmx7Y29uc3RydWN0b3IoYSl7c3VwZXIoYSl9TmMoKXtyZXR1cm4gXy50KHRoaXMsMil9fTtfLmV4Yi5wcm90b3R5cGUuWGE9ImV4R2FwZSI7Xy5meGI9Y2xhc3MgZXh0ZW5kcyBfLmx7Y29uc3RydWN0b3IoYSl7c3VwZXIoYSl9TmMoKXtyZXR1cm4gXy50KHRoaXMsMil9fTtfLmZ4Yi5wcm90b3R5cGUuWGE9IlFzcVBsYiI7Xy5neGI9Y2xhc3MgZXh0ZW5kcyBfLmx7Y29uc3RydWN0b3IoYSl7c3VwZXIoYSl9TmMoKXtyZXR1cm4gXy50KHRoaXMsMSl9fTtfLmd4Yi5wcm90b3R5cGUuWGE9ImNWbG8wZCI7Xy5SdD1jbGFzcyBleHRlbmRzIF8ubHtjb25zdHJ1Y3RvcihhKXtzdXBlcihhKX19O18uU3Q9WzEsMiwzLDQsNSw2LDksMTBdO18uUnQucHJvdG90eXBlLlhhPSJkTlJkT2UiO18uVHQ9Y2xhc3MgZXh0ZW5kcyBfLmx7Y29uc3RydWN0b3IoYSl7c3VwZXIoYSl9Z2V0Q29udGV4dCgpe3JldHVybiBfLnEodGhpcyxfLkd0LDEpfWdldFF1ZXJ5KCl7cmV0dXJuIF8ucSh0aGlzLF8uUnQsMil9c2V0UXVlcnkoYSl7cmV0dXJuIF8uU2IodGhpcyxfLlJ0LDIsYSl9fTtfLlR0LnByb3RvdHlwZS5YYT0iQllQOE1jIjtuZXcgXy5DaShfLlR0KTtfLlpvLkJZUDhNYz1fLllvO18uTnEoXy5UdCxfLlJ0LGZ1bmN0aW9uKGEpe2E9YS5nZXRRdWVyeSgpO3JldHVybiBhIT1udWxsP1thXTpbXX0pO25ldyBfLkNpKF8uUnQpO18uWm8uZE5SZE9lPV8uWW87Xy5OcShfLlJ0LF8uZ3hiLGZ1bmN0aW9uKGEpe2E9Xy5TaChhLF8uZ3hiLDIsXy5TdCk7cmV0dXJuIGEhPW51bGw/W2FdOltdfSk7Xy5OcShfLlJ0LF8uZXhiLGZ1bmN0aW9uKGEpe2E9Xy5TaChhLF8uZXhiLDMsXy5TdCk7cmV0dXJuIGEhPW51bGw/W2FdOltdfSk7Xy5OcShfLlJ0LF8uZnhiLGZ1bmN0aW9uKGEpe2E9Xy5TaChhLF8uZnhiLDQsXy5TdCk7cmV0dXJuIGEhPW51bGw/W2FdOltdfSk7bmV3IF8uQ2koXy5MdCk7Xy5aby5VTXlrWGI9ZnVuY3Rpb24oYSl7cmV0dXJuIF8uJG8oXy5hcChfLkxqKGEsMTMpKSl9O3ZhciBoeGI9Xy5VYigxMzc2ODU3NjcsXy5SbixfLnZ3Yik7Xy5TblsxMzc2ODU3NjddPWN4YjsobmV3IF8uQ2koXy52d2IpKS5aYT1oeGI7Xy5aby55WjJLYj1mdW5jdGlvbihhKXtyZXR1cm4gXy4kbyhfLmFwKF8udHdiKGEpKSl9O18uTnEoXy52d2IsXy5MdCxmdW5jdGlvbihhKXthPV8udHdiKGEpO3JldHVybiBhIT1udWxsP1thXTpbXX0pO25ldyBfLkNpKF8udnZiKTtfLlpvLlBNZzdwYz1mdW5jdGlvbihhKXtyZXR1cm4gXy4kbyhfLmFwKF8ud3diKGEpKSl9O18uTnEoXy52dmIsXy52d2IsZnVuY3Rpb24oYSl7YT1fLnd3YihhKTtyZXR1cm4gYSE9bnVsbD9bYV06W119KTtfLk5xKF8udnZiLF8ucXZiLGZ1bmN0aW9uKGEpe2E9YS5aaGEoKTtyZXR1cm4gYSE9bnVsbD9bYV06W119KTtfLml4Yj1mdW5jdGlvbihhKXtyZXR1cm4gXy5xKGEsXy5MdCwzKX07Xy5VdD1jbGFzcyBleHRlbmRzIF8ubHtjb25zdHJ1Y3RvcihhKXtzdXBlcihhKX19O18uVXQucHJvdG90eXBlLlhhPSJycEhMYmQiO18uanhiPWNsYXNzIGV4dGVuZHMgXy5se2NvbnN0cnVjdG9yKGEpe3N1cGVyKGEpfX07Xy5qeGIucHJvdG90eXBlLlhhPSJzR3ZkZmUiOyhuZXcgXy5DaShfLmp4YikpLmthPW5ldyBfLkNpKF8uVXQpO18uWm8uc0d2ZGZlPV8uWW87Xy5OcShfLmp4YixfLlV0LGZ1bmN0aW9uKGEpe3JldHVybiBfLm1oKGEsXy5VdCwxLF8ub2goKSl9KTtfLlpvLnJwSExiZD1fLllvO18uTnEoXy5VdCxfLkx0LGZ1bmN0aW9uKGEpe2E9Xy5peGIoYSk7cmV0dXJuIGEhPW51bGw/W2FdOltdfSk7Xy5OcShfLlV0LF8uVXZiLGZ1bmN0aW9uKGEpe2E9Xy5xKGEsXy5VdmIsNCk7cmV0dXJuIGEhPW51bGw/W2FdOltdfSk7Xy5reGI9Y2xhc3MgZXh0ZW5kcyBfLmx7Y29uc3RydWN0b3IoYSl7c3VwZXIoYSl9fTtfLmt4Yi5wcm90b3R5cGUuWGE9IkZEc0RCZSI7bmV3IF8uQ2koXy5Fd2IpO18uWm8ubXhCSVRlPV8uWW87Xy5OcShfLkV3YixfLnZ0LGZ1bmN0aW9uKGEpe3JldHVybiBhLkJvKCl9KTtuZXcgXy5DaShfLk10KTtfLlpvLlAyaXl4ZT1fLllvO18uTnEoXy5NdCxfLmJ0LGZ1bmN0aW9uKGEpe2E9YS5pVygpO3JldHVybiBhIT1udWxsP1thXTpbXX0pO25ldyBfLkNpKF8uZXhiKTtfLlpvLmV4R2FwZT1fLllvO18uTnEoXy5leGIsXy5OdCxmdW5jdGlvbihhKXthPV8ucShhLF8uTnQsMSk7cmV0dXJuIGEhPW51bGw/W2FdOltdfSk7bmV3IF8uQ2koXy53dmIpO18uWm8ud3pmYlljPV8uWW87Xy5OcShfLnd2YixfLk10LGZ1bmN0aW9uKGEpe3JldHVybiBfLkd3YihhKX0pO25ldyBfLkNpKF8uZnhiKTtfLlpvLlFzcVBsYj1fLllvO18uTnEoXy5meGIsXy5OdCxmdW5jdGlvbihhKXthPV8ucShhLF8uTnQsMSk7cmV0dXJuIGEhPW51bGw/W2FdOltdfSk7dmFyIGx4Yj1uZXcgXy5DaShheGIpOyR3Yi5wcm90b3R5cGUuWGE9IlJtUDVVZCI7bHhiLk5hPW5ldyBfLkNpKCR3Yik7Xy5aby5DUXZmOD1fLllvO18uTnEoYXhiLCR3YixmdW5jdGlvbihhKXtyZXR1cm4gXy5taChhLCR3YiwyLF8ub2goKSl9KTtfLlpvLlJtUDVVZD1fLllvO18uTnEoJHdiLF8uTnQsZnVuY3Rpb24oYSl7YT1fLnEoYSxfLk50LDEpO3JldHVybiBhIT1udWxsP1thXTpbXX0pO25ldyBfLkNpKF8ua3hiKTtfLlpvLkZEc0RCZT1fLllvO18uTnEoXy5reGIsXy5OdCxmdW5jdGlvbihhKXthPV8ucShhLF8uTnQsMSk7cmV0dXJuIGEhPW51bGw/W2FdOltdfSk7bmV3IF8uQ2koXy5neGIpO18uWm8uY1ZsbzBkPV8uWW87Xy5OcShfLmd4YixfLkV0LGZ1bmN0aW9uKGEpe2E9Xy5xKGEsXy5FdCw2KTtyZXR1cm4gYSE9bnVsbD9bYV06W119KTsKfWNhdGNoKGUpe18uX0R1bXBFeGNlcHRpb24oZSl9CnRyeXsKbmV3IF8uQ2koXy5MdCk7Xy5aby5VTXlrWGI9ZnVuY3Rpb24oYSl7cmV0dXJuIF8uJG8oXy5hcChfLkxqKGEsMTMpKSl9Owp9Y2F0Y2goZSl7Xy5fRHVtcEV4Y2VwdGlvbihlKX0KdHJ5ewp2YXIgUXpiO18uUHpiPWNsYXNzIGV4dGVuZHMgXy5se2NvbnN0cnVjdG9yKGEpe3N1cGVyKGEpfUx0KCl7cmV0dXJuIF8uQSh0aGlzLDIpfW9hKCl7cmV0dXJuIF8uZGkodGhpcywyKX19O1F6Yj1jbGFzcyBleHRlbmRzIF8ubHtjb25zdHJ1Y3RvcihhKXtzdXBlcihhKX19O1F6Yi5wcm90b3R5cGUuWGE9IkRkdEVPIjtuZXcgXy5DaShRemIpO25ldyBfLkNpKFF6Yik7KG5ldyBfLkNpKF8uanhiKSkua2E9bmV3IF8uQ2koXy5VdCk7Xy5aby5zR3ZkZmU9Xy5ZbztfLk5xKF8uanhiLF8uVXQsZnVuY3Rpb24oYSl7cmV0dXJuIF8ubWgoYSxfLlV0LDEsXy5vaCgpKX0pO18uWm8ucnBITGJkPV8uWW87Xy5OcShfLlV0LF8uTHQsZnVuY3Rpb24oYSl7YT1fLml4YihhKTtyZXR1cm4gYSE9bnVsbD9bYV06W119KTtfLk5xKF8uVXQsXy5VdmIsZnVuY3Rpb24oYSl7YT1fLnEoYSxfLlV2Yiw0KTtyZXR1cm4gYSE9bnVsbD9bYV06W119KTt2YXIgUnpiPW5ldyBfLlZ0KCJySVhvUCIsXy5qeGIsUXpiLFtfLm1pLCEwLF8ubGksIi9Mb2NhbE9mZmVyaW5nc1NlcnZpY2UuR2V0U2ltaWxhckRpc2hlcyJdKTtfLlN6Yj0oKT0+KHt2YXJpYW50Om51bGwscWs6W10sems6e319KTt2YXIgVHpiO1R6Yj1mdW5jdGlvbihhLGIsYyl7Yj1jfHx7fTtjPWIuSWl8fCJycGMiO3ZhciBkPW5ldyBRemI7Xy5waChhLDEpJiYoYT1fLnQoYSwxKSxfLmZoKGQsMSxhKSk7YT17ZmF0YWw6ITEsVnA6W3trZXk6Xy5Qcix2YWx1ZTpuZXcgXy5wdX0se2tleTpfLlFyLHZhbHVlOm5ldyBfLnB1fV19O2Zvcih2YXIgZSBpbiBiKWFbZV09YltlXTtyZXR1cm57Wms6UnpiLElpOmMsTG86ZCxtZXRhZGF0YTphfX07Xy5VemI9Xy5tdSh7VWs6ITEsbmFtZToiUE44TUZmIixJazpfLk96YixwYXJhbXM6e2N0b3I6Xy5QemJ9LE1sOltdLGRhdGE6e0dPYzpUemIsT0dkOl8ub3UoVHpiKX0sS2w6Xy5TemIsSGw6e30sY2hpbGRyZW46e319KTsKfWNhdGNoKGUpe18uX0R1bXBFeGNlcHRpb24oZSl9CnRyeXsKXy5JemI9Xy5rYygiZzhubllkIixbXy5Ycl0pOwp9Y2F0Y2goZSl7Xy5fRHVtcEV4Y2VwdGlvbihlKX0KdHJ5ewpfLkR4Yj1jbGFzcyBleHRlbmRzIF8ubHtjb25zdHJ1Y3RvcihhKXtzdXBlcihhKX19Owp9Y2F0Y2goZSl7Xy5fRHVtcEV4Y2VwdGlvbihlKX0KdHJ5ewpfLlp0PWNsYXNzIGV4dGVuZHMgXy5se2NvbnN0cnVjdG9yKGEpe3N1cGVyKGEpfXdhKCl7cmV0dXJuIF8ueGUodGhpcywxKX1vYSgpe3JldHVybiBfLnQodGhpcywyKX1nZXRWZXJzaW9uKCl7cmV0dXJuIF8uT2oodGhpcyw0KX1nZXRWaWV3ZXJUeXBlKCl7cmV0dXJuIF8ueGUodGhpcyw1KX1GcyhhKXtyZXR1cm4gXy5sayh0aGlzLDUsYSl9fTtfLlp0LnByb3RvdHlwZS5YYT0iV2hwbHlmIjtfLiR0PVswLF8uQyxfLkUsMSxfLkcsXy5DXTsKfWNhdGNoKGUpe18uX0R1bXBFeGNlcHRpb24oZSl9CnRyeXsKXy5hdT1mdW5jdGlvbihhKXtyZXR1cm4gXy50KGEsMSl9O18uenhiPWZ1bmN0aW9uKGEpe3JldHVybiBfLnQoYSwzKX07dmFyIEF4Yj1jbGFzcyBleHRlbmRzIF8ubHtjb25zdHJ1Y3RvcihhKXtzdXBlcihhKX1nZXRTdHlsZSgpe3JldHVybiBfLk9qKHRoaXMsMil9c2V0U3R5bGUoYSl7cmV0dXJuIF8uWmgodGhpcywyLGEpfWh5KCl7cmV0dXJuIF8uUWsodGhpcywyKX19O18uQnhiPWNsYXNzIGV4dGVuZHMgXy5se2NvbnN0cnVjdG9yKGEpe3N1cGVyKGEpfWdldE5hbWUoKXtyZXR1cm4gXy50KHRoaXMsMSl9RWUoYSl7cmV0dXJuIF8uZmgodGhpcywxLGEpfWRoKCl7cmV0dXJuIF8ucGgodGhpcywxKX19O18uQnhiLnByb3RvdHlwZS5YYT0iQ0FmMVVkIjtfLmJ1PWNsYXNzIGV4dGVuZHMgXy5se2NvbnN0cnVjdG9yKGEpe3N1cGVyKGEpfVZsKCl7cmV0dXJuIF8ueGUodGhpcywyKX1CR2EoKXtyZXR1cm4gXy5xKHRoaXMsQXhiLDMpfW9hKCl7cmV0dXJuIF8uemUodGhpcyxBeGIsMyl9QmooKXtyZXR1cm4gXy50KHRoaXMsMTMpfUEzKGEpe3JldHVybiBfLmZoKHRoaXMsMzMsYSl9TGYoKXtyZXR1cm4gXy5xKHRoaXMsXy5CeGIsNDUpfVVvKCl7cmV0dXJuIF8uQ2oodGhpcyxfLkJ4Yiw0NSl9fTtfLmJ1LnByb3RvdHlwZS5YYT0iYVFpYzliIjsKfWNhdGNoKGUpe18uX0R1bXBFeGNlcHRpb24oZSl9CnRyeXsKdmFyIHV4Yj1jbGFzcyBleHRlbmRzIF8ubHtjb25zdHJ1Y3RvcihhKXtzdXBlcihhKX19O18udnhiPWNsYXNzIGV4dGVuZHMgXy5se2NvbnN0cnVjdG9yKGEpe3N1cGVyKGEpfVZiKCl7cmV0dXJuIF8udCh0aGlzLDEpfUJjKGEpe3JldHVybiBfLmZoKHRoaXMsMSxhKX1UZSgpe3JldHVybiBfLnBoKHRoaXMsMSl9bkdhKCl7cmV0dXJuIF8ubWgodGhpcyx1eGIsMixfLm9oKCkpfX07Cn1jYXRjaChlKXtfLl9EdW1wRXhjZXB0aW9uKGUpfQp0cnl7Cl8ud3hiPWNsYXNzIGV4dGVuZHMgXy5se2NvbnN0cnVjdG9yKGEpe3N1cGVyKGEpfVZiKCl7cmV0dXJuIF8ucSh0aGlzLF8udnhiLDEpfUJjKGEpe3JldHVybiBfLlNiKHRoaXMsXy52eGIsMSxhKX1UZSgpe3JldHVybiBfLmtqKHRoaXMsXy52eGIsMSl9fTsKfWNhdGNoKGUpe18uX0R1bXBFeGNlcHRpb24oZSl9CnRyeXsKXy5DeGI9Y2xhc3MgZXh0ZW5kcyBfLmx7Y29uc3RydWN0b3IoYSl7c3VwZXIoYSl9ZEUoKXtyZXR1cm4gXy50KHRoaXMsNyl9fTtfLkN4Yi5wcm90b3R5cGUuWGE9IkJDR3JJZSI7Cn1jYXRjaChlKXtfLl9EdW1wRXhjZXB0aW9uKGUpfQp0cnl7Cl8ueHhiPXt9O18ueXhiPXt9Owp9Y2F0Y2goZSl7Xy5fRHVtcEV4Y2VwdGlvbihlKX0KdHJ5ewpfLkV4Yj1jbGFzcyBleHRlbmRzIF8ubHtjb25zdHJ1Y3RvcihhKXtzdXBlcihhKX1nZXRUeXBlKCl7cmV0dXJuIF8uT2oodGhpcywxKX1BYyhhKXtyZXR1cm4gXy5aaCh0aGlzLDEsYSl9dGUoKXtyZXR1cm4gXy5laSh0aGlzLDEpfX07Xy5HeGI9Y2xhc3MgZXh0ZW5kcyBfLmx7Y29uc3RydWN0b3IoYSl7c3VwZXIoYSl9b2EoKXtyZXR1cm4gXy5Gaih0aGlzLF8uWXQsMyxfLkZ4Yil9YlViKGEpe3JldHVybiBfLkpyKHRoaXMsXy5ZdCwzLF8uRnhiLGEpfVg3YSgpe3JldHVybiBfLlNoKHRoaXMsXy53dmIsNCxfLkZ4Yil9VTEoKXtyZXR1cm4gXy5TaCh0aGlzLF8udnZiLDcsXy5GeGIpfX07Xy5GeGI9WzIsMyw0LDUsNiw3LDEwLDExXTtfLkd4Yi5wcm90b3R5cGUuWGE9InJHOVdhYiI7Xy5IeGI9Y2xhc3MgZXh0ZW5kcyBfLmx7Y29uc3RydWN0b3IoYSl7c3VwZXIoYSl9QksoKXtyZXR1cm4gXy5xKHRoaXMsXy5HeGIsMil9fTtfLkh4Yi5wcm90b3R5cGUuWGE9IlFkS0JRZCI7bmV3IF8uQ2koXy5IeGIpO18uWm8uUWRLQlFkPV8uWW87Xy5OcShfLkh4YixfLkd4YixmdW5jdGlvbihhKXthPWEuQksoKTtyZXR1cm4gYSE9bnVsbD9bYV06W119KTsKfWNhdGNoKGUpe18uX0R1bXBFeGNlcHRpb24oZSl9CnRyeXsKbmV3IF8uQ2koXy5UdCk7Xy5aby5CWVA4TWM9Xy5ZbztfLk5xKF8uVHQsXy5SdCxmdW5jdGlvbihhKXthPWEuZ2V0UXVlcnkoKTtyZXR1cm4gYSE9bnVsbD9bYV06W119KTtuZXcgXy5DaShfLkh4Yik7Xy5aby5RZEtCUWQ9Xy5ZbztfLk5xKF8uSHhiLF8uR3hiLGZ1bmN0aW9uKGEpe2E9YS5CSygpO3JldHVybiBhIT1udWxsP1thXTpbXX0pO18uSXhiPW5ldyBfLlZ0KCJkRDBNRmQiLF8uSHhiLF8uVHQsW18ubWksITAsXy5saSwiL1ByaXZhdGVMb2NhbFNlYXJjaFVpRGF0YVNlcnZpY2UuR2V0TG9jYWxCb3FQcm94eSJdKTsKfWNhdGNoKGUpe18uX0R1bXBFeGNlcHRpb24oZSl9CnRyeXsKXy5XdD1jbGFzcyBleHRlbmRzIF8ubHtjb25zdHJ1Y3RvcihhKXtzdXBlcihhKX14ZCgpe3JldHVybiBfLnQodGhpcywyKX1OYygpe3JldHVybiBfLnQodGhpcywzKX19O18uV3QucHJvdG90eXBlLlhhPSJxTllGdGYiO18uWHQ9ZnVuY3Rpb24oYSxiKXtfLlNiKGEsXy5CdCwxLGIpfTtfLm54Yj1jbGFzcyBleHRlbmRzIF8ubHtjb25zdHJ1Y3RvcihhKXtzdXBlcihhKX1zZXRBdHRyaWJ1dGUoYSxiKXtyZXR1cm4gXy5yaih0aGlzLDIsXy5qdCxhLGIpfXJlbW92ZUF0dHJpYnV0ZShhKXtyZXR1cm4gXy5DRGEodGhpcywyLF8uanQsYSl9fTtfLm94Yj1mdW5jdGlvbihhKXtyZXR1cm4gXy5taChhLF8uanQsMixfLm9oKCkpfTtuZXcgXy5DaShfLnF2Yik7Xy5aby53OEFYaD1fLllvO18uTnEoXy5xdmIsXy5tdmIsZnVuY3Rpb24oYSl7cmV0dXJuIGEuam9hKCl9KTtuZXcgXy5DaShfLld0KTtuZXcgXy5DaShfLld0KTtuZXcgXy5DaShfLnZ3Yik7Xy5aby55WjJLYj1mdW5jdGlvbihhKXtyZXR1cm4gXy4kbyhfLmFwKF8udHdiKGEpKSl9O18uTnEoXy52d2IsXy5MdCxmdW5jdGlvbihhKXthPV8udHdiKGEpO3JldHVybiBhIT1udWxsP1thXTpbXX0pO25ldyBfLkNpKF8udnZiKTtfLlpvLlBNZzdwYz1mdW5jdGlvbihhKXtyZXR1cm4gXy4kbyhfLmFwKF8ud3diKGEpKSl9O18uTnEoXy52dmIsXy52d2IsZnVuY3Rpb24oYSl7YT1fLnd3YihhKTtyZXR1cm4gYSE9bnVsbD9bYV06W119KTtfLk5xKF8udnZiLF8ucXZiLGZ1bmN0aW9uKGEpe2E9YS5aaGEoKTtyZXR1cm4gYSE9bnVsbD9bYV06W119KTtfLnB4Yj1uZXcgXy5WdCgiUnVrUjVkIixfLnZ2YixfLld0LFtfLm1pLCEwLF8ubGksIi9Mb2NhbE9mZmVyaW5nc1NlcnZpY2UuR2V0T2ZmZXJpbmciXSk7Cn1jYXRjaChlKXtfLl9EdW1wRXhjZXB0aW9uKGUpfQp0cnl7Cl8uSnpiPSgpPT4oe3ZhcmlhbnQ6bnVsbCxxazpbXSx6azp7fX0pO18uS3piPWNsYXNzIGV4dGVuZHMgXy5se2NvbnN0cnVjdG9yKGEpe3N1cGVyKGEpfXhkKCl7cmV0dXJuIF8udCh0aGlzLDIpfU5jKCl7cmV0dXJuIF8udCh0aGlzLDMpfX07dmFyIEx6YixNemI7THpiPWZ1bmN0aW9uKGEsYixjKXtpZihfLkEoYSw0KSYmKF8ua2ooYSxfLkJ0LDEpJiZfLkp0KF8uemUoYSxfLkJ0LDEpKSkhPSIiKXtiPWN8fHt9O2M9Yi5JaXx8InJwYyI7dmFyIGQ9bmV3IF8uVHQsZT1kLnNldFF1ZXJ5LGY9bmV3IF8uUnQsZz1uZXcgXy5XdDtpZihfLnBoKGEsMykpe3ZhciBoPWEuTmMoKTtfLmZoKGcsMyxoKX1fLnBoKGEsMikmJihoPWEueGQoKSxfLmZoKGcsMixoKSk7Xy5raihhLF8uQnQsMSkmJl8uWHQoZyxhLkpmKCk/Xy5CaihhLF8uQnQsMSxfLm51KTpfLkNqKGEsXy5CdCwxKSk7Xy5HaihmLDYsXy5TdCxnKTtlLmNhbGwoZCxmKTthPXtmYXRhbDohMSxWcDpbe2tleTpfLlByLHZhbHVlOm5ldyBfLnB1fSx7a2V5Ol8uUXIsdmFsdWU6bmV3IF8ucHV9XX07bGV0IGs7Zm9yKGsgaW4gYilhW2tdPWJba107cmV0dXJue1prOl8uSXhiLElpOmMsTG86ZCxtZXRhZGF0YTphfX19OwpNemI9ZnVuY3Rpb24oYSxiLGMpe2lmKCFfLkEoYSw0KSYmKF8ua2ooYSxfLkJ0LDEpJiZfLkp0KF8uemUoYSxfLkJ0LDEpKSkhPSIiKXtiPWN8fHt9O2M9Yi5JaXx8InJwYyI7dmFyIGQ9bmV3IF8uV3Q7aWYoXy5waChhLDMpKXt2YXIgZT1hLk5jKCk7Xy5maChkLDMsZSl9Xy5waChhLDIpJiYoZT1hLnhkKCksXy5maChkLDIsZSkpO18ua2ooYSxfLkJ0LDEpJiZfLlh0KGQsYS5KZigpP18uQmooYSxfLkJ0LDEsXy5udSk6Xy5DaihhLF8uQnQsMSkpO2E9e2ZhdGFsOiExLFZwOlt7a2V5Ol8uUHIsdmFsdWU6bmV3IF8ucHV9LHtrZXk6Xy5Rcix2YWx1ZTpuZXcgXy5wdX1dfTtsZXQgZjtmb3IoZiBpbiBiKWFbZl09YltmXTtyZXR1cm57Wms6Xy5weGIsSWk6YyxMbzpkLG1ldGFkYXRhOmF9fX07Cl8uTnpiPV8ubXUoe1VrOiExLG5hbWU6Ing2R1ByYyIsSWs6Xy5JemIscGFyYW1zOntjdG9yOl8uS3pifSxNbDpbXSxkYXRhOntmQzpMemIsdldhOl8ub3UoTHpiKSxtRTpNemIsd1dhOl8ub3UoTXpiKX0sS2w6Xy5KemIsSGw6e30sY2hpbGRyZW46e319KTsKfWNhdGNoKGUpe18uX0R1bXBFeGNlcHRpb24oZSl9CnRyeXsKXy5CemI9Xy5rYygiUG12TUNiIixbXy5Ycl0pOwp9Y2F0Y2goZSl7Xy5fRHVtcEV4Y2VwdGlvbihlKX0KdHJ5ewpfLkF6Yj1jbGFzcyBleHRlbmRzIF8ubHtjb25zdHJ1Y3RvcihhKXtzdXBlcihhKX19O18uQXpiLnByb3RvdHlwZS5YYT0iajQ5RnJlIjtuZXcgXy5DaShfLkF6Yik7Cn1jYXRjaChlKXtfLl9EdW1wRXhjZXB0aW9uKGUpfQp0cnl7Cm5ldyBfLkNpKF8uTnQpO18uWm8uRHpkZEZmPWZ1bmN0aW9uKGEpe3JldHVybiBfLiRvKF8uYXAoXy5laShhLDEpKSkrIiwiK18uJG8oXy5hcChfLkxqKGEsMikpKX07Cn1jYXRjaChlKXtfLl9EdW1wRXhjZXB0aW9uKGUpfQp0cnl7Cl8uQ3piPWNsYXNzIGV4dGVuZHMgXy5se2NvbnN0cnVjdG9yKGEpe3N1cGVyKGEpfU5jKCl7cmV0dXJuIF8udCh0aGlzLDEpfX07bmV3IF8uQ2koXy5meGIpO18uWm8uUXNxUGxiPV8uWW87Xy5OcShfLmZ4YixfLk50LGZ1bmN0aW9uKGEpe2E9Xy5xKGEsXy5OdCwxKTtyZXR1cm4gYSE9bnVsbD9bYV06W119KTtuZXcgXy5DaShfLkF6Yik7dmFyIER6Yj1uZXcgXy5WdCgiSkxXV2dmIixfLkF6YixfLmZ4YixbXy5taSwhMCxfLmxpLCIvTG9jYWxQaG90b3NGdWxmaWxsZXJTZXJ2aWNlLkdldFJlbGF0ZWRSZXZpZXdzIl0pO18uRXpiPSgpPT4oe3ZhcmlhbnQ6bnVsbCxxazpbXSx6azp7fX0pO3ZhciBGemIsR3piO0Z6Yj1mdW5jdGlvbihhLGIsYyl7aWYoXy5BKGEsMykpe2I9Y3x8e307Yz1iLklpfHwicnBjIjt2YXIgZD1uZXcgXy5UdCxlPWQuc2V0UXVlcnksZj1uZXcgXy5SdCxnPW5ldyBfLmZ4YjtpZihfLkhrKGEsNSkpe3ZhciBoPV8uQShhLDUpO18uJGgoZyw0LGgpfV8uSGsoYSw2KSYmKGg9Xy5BKGEsNiksXy4kaChnLDUsaCkpO18ucGgoYSwxKSYmKGg9YS5OYygpLF8uZmgoZywyLGgpKTtfLmtqKGEsXy5OdCwyKSYmKGg9YS5KZigpP18uQmooYSxfLk50LDIsXy5udSk6Xy5DaihhLF8uTnQsMiksXy5TYihnLF8uTnQsMSxoKSk7Xy5waChhLDQpJiYoYT1fLnQoYSw0KSxfLmZoKGcsMyxhKSk7Xy5HaihmLDQsXy5TdCxnKTtlLmNhbGwoZCxmKTthPXtmYXRhbDohMSxWcDpbe2tleTpfLlByLHZhbHVlOm5ldyBfLnB1fSx7a2V5Ol8uUXIsdmFsdWU6bmV3IF8ucHV9XX07bGV0IGs7Zm9yKGsgaW4gYilhW2tdPWJba107cmV0dXJue1prOl8uSXhiLElpOmMsTG86ZCxtZXRhZGF0YTphfX19OwpHemI9ZnVuY3Rpb24oYSxiLGMpe2lmKCFfLkEoYSwzKSl7Yj1jfHx7fTtjPWIuSWl8fCJycGMiO3ZhciBkPW5ldyBfLmZ4YjtpZihfLnBoKGEsMSkpe3ZhciBlPWEuTmMoKTtfLmZoKGQsMixlKX1fLmtqKGEsXy5OdCwyKSYmKGU9YS5KZigpP18uQmooYSxfLk50LDIsXy5udSk6Xy5DaihhLF8uTnQsMiksXy5TYihkLF8uTnQsMSxlKSk7Xy5waChhLDQpJiYoYT1fLnQoYSw0KSxfLmZoKGQsMyxhKSk7YT17ZmF0YWw6ITEsVnA6W3trZXk6Xy5Qcix2YWx1ZTpuZXcgXy5wdX0se2tleTpfLlFyLHZhbHVlOm5ldyBfLnB1fV19O2xldCBmO2ZvcihmIGluIGIpYVtmXT1iW2ZdO3JldHVybntaazpEemIsSWk6YyxMbzpkLG1ldGFkYXRhOmF9fX07Xy5IemI9Xy5tdSh7VWs6ITEsbmFtZToiQmxjQ0NiIixJazpfLkJ6YixwYXJhbXM6e2N0b3I6Xy5DemJ9LE1sOltdLGRhdGE6e2ZDOkZ6Yix2V2E6Xy5vdShGemIpLG1FOkd6Yix3V2E6Xy5vdShHemIpfSxLbDpfLkV6YixIbDp7fSxjaGlsZHJlbjp7fX0pOwp9Y2F0Y2goZSl7Xy5fRHVtcEV4Y2VwdGlvbihlKX0KdHJ5ewpfLnR6Yj1fLmtjKCJNQ25uT2QiLFtfLlhyXSk7Cn1jYXRjaChlKXtfLl9EdW1wRXhjZXB0aW9uKGUpfQp0cnl7Cl8udXpiPWNsYXNzIGV4dGVuZHMgXy5se2NvbnN0cnVjdG9yKGEpe3N1cGVyKGEpfU5jKCl7cmV0dXJuIF8udCh0aGlzLDEpfX07bmV3IF8uQ2koXy5leGIpO18uWm8uZXhHYXBlPV8uWW87Xy5OcShfLmV4YixfLk50LGZ1bmN0aW9uKGEpe2E9Xy5xKGEsXy5OdCwxKTtyZXR1cm4gYSE9bnVsbD9bYV06W119KTtuZXcgXy5DaShfLnd2Yik7Xy5aby53emZiWWM9Xy5ZbztfLk5xKF8ud3ZiLF8uTXQsZnVuY3Rpb24oYSl7cmV0dXJuIF8uR3diKGEpfSk7dmFyIHZ6Yj1uZXcgXy5WdCgibE16QUVjIixfLnd2YixfLmV4YixbXy5taSwhMCxfLmxpLCIvTG9jYWxQaG90b3NGdWxmaWxsZXJTZXJ2aWNlLkdldFJlbGF0ZWRQaG90b3MiXSk7Xy53emI9KCk9Pih7dmFyaWFudDpudWxsLHFrOltdLHprOnt9fSk7dmFyIHh6Yix5emI7eHpiPWZ1bmN0aW9uKGEsYixjKXtpZihfLkEoYSwzKSl7Yj1jfHx7fTtjPWIuSWl8fCJycGMiO3ZhciBkPW5ldyBfLlR0LGU9ZC5zZXRRdWVyeSxmPW5ldyBfLlJ0LGc9bmV3IF8uZXhiO2lmKF8ucGgoYSwxKSl7dmFyIGg9YS5OYygpO18uZmgoZywyLGgpfV8ua2ooYSxfLk50LDIpJiYoYT1hLkpmKCk/Xy5CaihhLF8uTnQsMixfLm51KTpfLkNqKGEsXy5OdCwyKSxfLlNiKGcsXy5OdCwxLGEpKTtfLiRoKGcsNiwhMCk7Xy5HaihmLDMsXy5TdCxnKTtlLmNhbGwoZCxmKTthPXtmYXRhbDohMSxWcDpbe2tleTpfLlByLHZhbHVlOm5ldyBfLnB1fSx7a2V5Ol8uUXIsdmFsdWU6bmV3IF8ucHV9XX07bGV0IGs7Zm9yKGsgaW4gYilhW2tdPWJba107cmV0dXJue1prOl8uSXhiLElpOmMsTG86ZCxtZXRhZGF0YTphfX19Owp5emI9ZnVuY3Rpb24oYSxiLGMpe2lmKCFfLkEoYSwzKSl7Yj1jfHx7fTtjPWIuSWl8fCJycGMiO3ZhciBkPW5ldyBfLmV4YjtpZihfLnBoKGEsMSkpe3ZhciBlPWEuTmMoKTtfLmZoKGQsMixlKX1fLmtqKGEsXy5OdCwyKSYmKGE9YS5KZigpP18uQmooYSxfLk50LDIsXy5udSk6Xy5DaihhLF8uTnQsMiksXy5TYihkLF8uTnQsMSxhKSk7Xy4kaChkLDYsITApO2E9e2ZhdGFsOiExLFZwOlt7a2V5Ol8uUHIsdmFsdWU6bmV3IF8ucHV9LHtrZXk6Xy5Rcix2YWx1ZTpuZXcgXy5wdX1dfTtsZXQgZjtmb3IoZiBpbiBiKWFbZl09YltmXTtyZXR1cm57Wms6dnpiLElpOmMsTG86ZCxtZXRhZGF0YTphfX19O18uenpiPV8ubXUoe1VrOiExLG5hbWU6InpTYmFDYyIsSWs6Xy50emIscGFyYW1zOntjdG9yOl8udXpifSxNbDpbXSxkYXRhOntmQzp4emIsdldhOl8ub3UoeHpiKSxtRTp5emIsd1dhOl8ub3UoeXpiKX0sS2w6Xy53emIsSGw6e30sY2hpbGRyZW46e319KTsKfWNhdGNoKGUpe18uX0R1bXBFeGNlcHRpb24oZSl9CnRyeXsKXy5qemI9Xy5rYygicTRub09lIixbXy5Ycl0pOwp9Y2F0Y2goZSl7Xy5fRHVtcEV4Y2VwdGlvbihlKX0KdHJ5ewpfLmR1PWNsYXNzIGV4dGVuZHMgXy5se2NvbnN0cnVjdG9yKGEpe3N1cGVyKGEpfX07Xy5LeGI9ZnVuY3Rpb24oYSxiKXtyZXR1cm4gXy5maChhLDEsYil9O18uZXU9Y2xhc3MgZXh0ZW5kcyBfLmx7Y29uc3RydWN0b3IoYSl7c3VwZXIoYSl9fTtfLkx4Yj1jbGFzcyBleHRlbmRzIF8ubHtjb25zdHJ1Y3RvcihhKXtzdXBlcihhKX1zZXRBdHRyaWJ1dGUoYSxiKXtyZXR1cm4gXy5yaih0aGlzLDIsXy5kdSxhLGIpfXJlbW92ZUF0dHJpYnV0ZShhKXtyZXR1cm4gXy5DRGEodGhpcywyLF8uZHUsYSl9fTtuZXcgXy5DaShfLkx4Yik7Cn1jYXRjaChlKXtfLl9EdW1wRXhjZXB0aW9uKGUpfQp0cnl7Cl8uZnU9ZnVuY3Rpb24oYSxiKXtyZXR1cm4gXy5aaChhLDEsYil9O18uTXhiPWZ1bmN0aW9uKGEsYil7Xy5IaihhLDEsYil9O18uTnhiPWZ1bmN0aW9uKGEsYil7Xy5IaihhLDIsYil9O18uT3hiPWZ1bmN0aW9uKGEsYil7cmV0dXJuIF8uU2IoYSxfLmV1LDMsYil9O18uZ3U9ZnVuY3Rpb24oYSxiKXtfLlNiKGEsXy5jdSwyLGIpfTtfLlB4Yj1mdW5jdGlvbihhLGIpe18uU2IoYSxfLkZ0LDQsYil9O18uUXhiPWZ1bmN0aW9uKGEsYil7cmV0dXJuIF8uU2IoYSxfLkx4YiwyLGIpfTtfLlJ4Yj1jbGFzcyBleHRlbmRzIF8ubHtjb25zdHJ1Y3RvcihhKXtzdXBlcihhKX1nZXRDb250ZXh0KCl7cmV0dXJuIF8ucSh0aGlzLF8uR3QsMSl9fTtfLmh1PWNsYXNzIGV4dGVuZHMgXy5se2NvbnN0cnVjdG9yKGEpe3N1cGVyKGEsMSl9fTt2YXIgU3hiO18uaXU9ZnVuY3Rpb24oYSl7cmV0dXJuIF8ucShhLF8uaHUsMil9O1N4Yj1jbGFzcyBleHRlbmRzIF8ubHtjb25zdHJ1Y3RvcihhKXtzdXBlcihhKX19O3ZhciBVeGI7Xy5UeGI9ZnVuY3Rpb24oYSl7cmV0dXJuIF8ubWgoYSxTeGIsMixfLm9oKCkpfTtVeGI9Y2xhc3MgZXh0ZW5kcyBfLmx7Y29uc3RydWN0b3IoYSl7c3VwZXIoYSl9VXgoKXtyZXR1cm4gXy5xKHRoaXMsXy5ZcywxKX19O18uVnhiPWZ1bmN0aW9uKGEpe3JldHVybiBfLm1oKGEsVXhiLDIsXy5vaCgpKX07Xy5XeGI9Y2xhc3MgZXh0ZW5kcyBfLmx7Y29uc3RydWN0b3IoYSl7c3VwZXIoYSl9fTtfLld4Yi5wcm90b3R5cGUuWGE9ImszeTk4YiI7dmFyIFl4YjtfLlh4Yj1mdW5jdGlvbihhKXtyZXR1cm4gXy5xKGEsXy5XeGIsMil9O1l4Yj1jbGFzcyBleHRlbmRzIF8ubHtjb25zdHJ1Y3RvcihhKXtzdXBlcihhKX19O1l4Yi5wcm90b3R5cGUuWGE9IlpFM3RMZCI7bmV3IF8uQ2koWXhiKTtfLk5xKFl4YixfLld4YixmdW5jdGlvbihhKXthPV8uWHhiKGEpO3JldHVybiBhIT1udWxsP1thXTpbXX0pO18uWnhiPW5ldyBfLlZ0KCJhaFd1WGQiLFl4YixfLlJ4YixbXy5taSwhMCxfLmxpLCIvUHJpdmF0ZUxvY2FsU2VhcmNoVWlEYXRhU2VydmljZS5HZXRQbGFjZUF0dHJpYnV0ZVNlcnZpY2VCb3FQcm94eSJdKTtuZXcgXy5DaShfLld4Yik7Cn1jYXRjaChlKXtfLl9EdW1wRXhjZXB0aW9uKGUpfQp9KSh0aGlzLl9oZCk7Ci8vIEdvb2dsZSBJbmMuCg=="}},"time_used":11,"timings":{"blocked":0,"dns":0,"connect":0,"send":0,"wait":10,"receive":1,"ssl":0},"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"www.google.com/xjs/_/js/k=xjs.hd.no.ZJX-0yQnO-M.2019.O/ck=xjs.hd.h9GHjaAphl0.L.F4.O/am=AAAEQAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAABAAAAIECAAAZAAAgQAAgAADBAAAAAAIAAAAAABAeAAgAMAAAAAAAAAAAAAAAAIAAQQAAIAAAAAAAAAAAEAAAAAAABAIAiAAAYAAAAQABFAAAQAMAAAAAAAAACAAAAAAAAAAAiBAAAABCAADwBwZYAwAAAAAAAAASYTAQAAAAABAGFgAAIAEAAAAEQAAAAAAAAABAJEACACAAABAAAAgAAAAAAAQBhBAEAAEKIAAAABAAAAKABQAAAACgAxAEAQAAAABAAAAACAAEgRBAAAAAgAAAChAACAAIAgAAAGAEBQBAogYCAECgAwAAACADAAAAAAQAAAAAAAAAAAAAiAAAQIAAAACQAAADBAQACAAAAEAHQOABhhQUAAAAAAAAAAAAAAAAAAAAAAAAAAACLIBdSAEBEAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAyAkAAAAAAICF/d=0/dg=0/br=1/ujg=1/rs=ACT90oHlSnCzx5mAdYXy8e1Zh-GxJ0al8Q/m=syer,syej,syf1,syf6,syf0,syf5,syez,syey,syen,syew,syev,syet,syes,syf3,syek,syed,sye8,syb2,sy8u,zbML3c,gskBEc,sy2ah,s980lf,U9EYge,sy128,loL8vb,sy12b,sy12a,sy119,sy117,sy11a,sy10n,sy10f,sy10i,sy11c,sy11f,syh9,syh8,syh7,sy11b,sy11e,sy11g,sy11h,sy11d,sy10m,sy10v,sy10r,sy10q,sy10p,sy10c,sy116,sy10x,sy112,sy10y,sy10u,sy10t,sy10s,sy10e,sy109,syz3,syz2,sy10g,ms4mZb,syxp,B2qlPe,sy16j,NzU6V,sy171,sy9i,WlNQGd,sy108,sy106,sy105,DPreE,sy173,sy172,nabPbb,abd,sy4eh,TDFkye?cb=121509378\u0026xjs=s3","fqdn":"www.google.com","domain":"google.com","tld":"com"},"ip":{"addr":"142.251.157.119","port":443,"asn":15169,"as":"GOOGLE","country":"United States","country_code":"US"},"is_navigation_request":false,"resource_type":"script","requested_by":"https://www.google.com/","date":"2026-07-27T15:33:56.768Z","timestamp":1785166436768,"http_version":"HTTP/3","security_state":"secure","security_info":{"cipher_suite":"TLS_AES_128_GCM_SHA256","key_group_name":"mlkem768x25519","signature_name":"ECDSA-P256-SHA256","protocol":"TLSv1.3","cert":{"subject":{"commonName":"*.google.com","organization":""},"issuer":{"commonName":"WR2","organization":"Google Trust Services"},"validity":{"start":"Mon, 29 Jun 2026 08:37:25 GMT","end":"Mon, 21 Sep 2026 08:37:24 GMT"},"fingerprint":{"sha1":"D9:DA:81:30:78:3E:9C:6B:5F:9D:18:52:0E:BE:6D:52:2F:FB:33:E0","sha256":"EA:E2:2D:87:EC:9C:D6:51:9D:59:E4:13:35:3B:97:14:E3:DA:58:2D:1C:69:19:41:54:94:25:C3:94:17:F3:0C"}}},"request":{"raw":"GET /xjs/_/js/k=xjs.hd.no.ZJX-0yQnO-M.2019.O/ck=xjs.hd.h9GHjaAphl0.L.F4.O/am=AAAEQAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAABAAAAIECAAAZAAAgQAAgAADBAAAAAAIAAAAAABAeAAgAMAAAAAAAAAAAAAAAAIAAQQAAIAAAAAAAAAAAEAAAAAAABAIAiAAAYAAAAQABFAAAQAMAAAAAAAAACAAAAAAAAAAAiBAAAABCAADwBwZYAwAAAAAAAAASYTAQAAAAABAGFgAAIAEAAAAEQAAAAAAAAABAJEACACAAABAAAAgAAAAAAAQBhBAEAAEKIAAAABAAAAKABQAAAACgAxAEAQAAAABAAAAACAAEgRBAAAAAgAAAChAACAAIAgAAAGAEBQBAogYCAECgAwAAACADAAAAAAQAAAAAAAAAAAAAiAAAQIAAAACQAAADBAQACAAAAEAHQOABhhQUAAAAAAAAAAAAAAAAAAAAAAAAAAACLIBdSAEBEAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAyAkAAAAAAICF/d=0/dg=0/br=1/ujg=1/rs=ACT90oHlSnCzx5mAdYXy8e1Zh-GxJ0al8Q/m=syer,syej,syf1,syf6,syf0,syf5,syez,syey,syen,syew,syev,syet,syes,syf3,syek,syed,sye8,syb2,sy8u,zbML3c,gskBEc,sy2ah,s980lf,U9EYge,sy128,loL8vb,sy12b,sy12a,sy119,sy117,sy11a,sy10n,sy10f,sy10i,sy11c,sy11f,syh9,syh8,syh7,sy11b,sy11e,sy11g,sy11h,sy11d,sy10m,sy10v,sy10r,sy10q,sy10p,sy10c,sy116,sy10x,sy112,sy10y,sy10u,sy10t,sy10s,sy10e,sy109,syz3,syz2,sy10g,ms4mZb,syxp,B2qlPe,sy16j,NzU6V,sy171,sy9i,WlNQGd,sy108,sy106,sy105,DPreE,sy173,sy172,nabPbb,abd,sy4eh,TDFkye?cb=121509378\u0026xjs=s3 HTTP/1.1\r\nHost: www.google.com\r\nUser-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:134.0) Gecko/20100101 Firefox/134.0\r\nAccept: */*\r\nAccept-Language: en-US,en;q=0.9\r\nAccept-Encoding: gzip, deflate, br, zstd\r\nReferer: https://www.google.com/\r\nSec-GPC: 1\r\nConnection: keep-alive\r\nCookie: AEC=AdJVEauUsWHpfGAsUyeilL8EI9I2Tr9FfEzOqXuEJToXYpKe1KUK4km-Sg; __Secure-ENID=35.SE=Uz4O9fexpqtcg27rsCzqB3loBSC8a70Mqp_d18c3cjeU9uMWe4FHcPW1svFlK9taJqOPsqN9ZTMvrbcif3fGSVkGFj_PZtB1iqcUHQQ3k4McoRQh3TFmXwFvuBZDiuJbZsEWkIiLh9oQZqCS02Kcsd8T8KoXlZsObsNcGy15dXCeCexC1uy7XgZprqFrMQQA8uTOFbrZoEzmrPkKmCFOh5B5Jnu68ljyS8KtzuKzT_-dPSCoq1OOlqfaBgM\r\nSec-Fetch-Dest: script\r\nSec-Fetch-Mode: no-cors\r\nSec-Fetch-Site: same-origin\r\nPriority: u=1\r\nPragma: no-cache\r\nCache-Control: no-cache\r\n\r\n","headers":null,"cookies":null,"method":"GET"},"response":{"raw":"HTTP/3 200 \r\naccept-ranges: bytes\r\ncontent-encoding: br\r\ncontent-security-policy-report-only: require-trusted-types-for 'script'; report-uri https://csp.withgoogle.com/csp/gws-team\r\ncross-origin-resource-policy: cross-origin\r\ncross-origin-opener-policy: same-origin; report-to=\"gws-team\"\r\nreport-to: {\"group\":\"gws-team\",\"max_age\":2592000,\"endpoints\":[{\"url\":\"https://csp.withgoogle.com/csp/report-to/gws-team\"}]}\r\ncontent-length: 50432\r\nx-content-type-options: nosniff\r\nserver: sffe\r\nx-xss-protection: 0\r\ndate: Sat, 25 Jul 2026 03:42:49 GMT\r\nexpires: Sun, 25 Jul 2027 03:42:49 GMT\r\ncache-control: public, immutable, max-age=31536000\r\nlast-modified: Fri, 24 Jul 2026 22:53:47 GMT\r\ncontent-type: text/javascript; charset=UTF-8\r\nvary: Accept-Encoding, Origin\r\nage: 215467\r\nalt-svc: h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000\r\n\r\n","headers":null,"cookies":null,"status_code":"200","status_text":"","fingerprints":null,"data":{"size":164124,"size_decoded":51261,"mime_type":"text/javascript; charset=UTF-8","magic":"JavaScript source, ASCII text, with very long lines (1731)","md5":"bd684f14fe0175bcff5029ebfd27b141","sha1":"7d87871086ed47b7d4cf4f6d9642d58db6c1722a","sha256":"0af38f7453786e36ff60d815577d08d9b8d2d9400161d04f48a56ac3e2574d94","sha512":"778318864aae1a5e632066f01d5b54ecf62a24016f70157e5a0aea429cfab784e7511074a480eb26ace07721a5ce02850dc7525c22988e75c85b7a98a58066d4","ssdeep":"3072:l0EFHWoi7xtW0RKyNvEyXM0fFJON+QuTrPbWgix+i:SE5W1xsutN5fFJcGT/Wgix+i","tlshash":"90f30978739576735e61b4949b6b824a72ede84370c8c85cf7a4d8d22dec84341f2f2a","first_seen":"2026-07-25T01:07:04.024482Z","last_seen":"2026-07-27T20:08:12.372165Z","times_seen":175,"resource_available":true,"data":"dGhpcy5faGQ9dGhpcy5faGR8fHt9OyhmdW5jdGlvbihfKXt2YXIgd2luZG93PXRoaXM7CnRyeXsKbmV3IF8uQ2koXy5XeGIpO18uUHliPW5ldyBfLlZ0KCJYRUtKUGQiLF8uV3hiLF8uTHhiLFtfLm1pLCEwLF8ubGksIi9QbGFjZUF0dHJpYnV0ZVNlcnZpY2UuR2V0UGxhY2VBdHRyaWJ1dGVzIl0pOwp9Y2F0Y2goZSl7Xy5fRHVtcEV4Y2VwdGlvbihlKX0KdHJ5ewpuZXcgXy5DaShfLll0KTsKfWNhdGNoKGUpe18uX0R1bXBFeGNlcHRpb24oZSl9CnRyeXsKXy5remI9KCk9Pih7dmFyaWFudDpudWxsLHFrOltdLHprOnt9fSk7Xy5semI9Y2xhc3MgZXh0ZW5kcyBfLmx7Y29uc3RydWN0b3IoYSl7c3VwZXIoYSl9TmMoKXtyZXR1cm4gXy50KHRoaXMsMSl9eGQoKXtyZXR1cm4gXy50KHRoaXMsMTIpfX07dmFyIG16YixuemIscHpiLG96YixyemIscXpiO216Yj1mdW5jdGlvbihhLGIsYyl7aWYoXy5BKGEsMikmJihfLmtqKGEsXy5CdCwxMSkmJl8uSnQoXy56ZShhLF8uQnQsMTEpKSkhPSIiKXtiPWN8fHt9O2M9Yi5JaXx8InJwYyI7dmFyIGQ9bmV3IF8uVHQsZT1kLnNldFF1ZXJ5LGY9bmV3IF8uUnQsZz1uZXcgXy5XdDtpZihfLnBoKGEsMSkpe3ZhciBoPWEuTmMoKTtfLmZoKGcsMyxoKX1fLnBoKGEsMTIpJiYoaD1hLnhkKCksXy5maChnLDIsaCkpO18ua2ooYSxfLkJ0LDExKSYmXy5YdChnLGEuSmYoKT9fLkJqKGEsXy5CdCwxMSxfLm51KTpfLkNqKGEsXy5CdCwxMSkpO18uR2ooZiw2LF8uU3QsZyk7ZS5jYWxsKGQsZik7YT17ZmF0YWw6ITEsVnA6W3trZXk6Xy5Qcix2YWx1ZTpuZXcgXy5wdX0se2tleTpfLlFyLHZhbHVlOm5ldyBfLnB1fV19O2xldCBrO2ZvcihrIGluIGIpYVtrXT1iW2tdO3JldHVybntaazpfLkl4YixJaTpjLExvOmQsbWV0YWRhdGE6YX19fTsKbnpiPWZ1bmN0aW9uKGEsYixjKXtpZighXy5BKGEsMikmJihfLmtqKGEsXy5CdCwxMSkmJl8uSnQoXy56ZShhLF8uQnQsMTEpKSkhPSIiKXtiPWN8fHt9O2M9Yi5JaXx8InJwYyI7dmFyIGQ9bmV3IF8uV3Q7aWYoXy5waChhLDEpKXt2YXIgZT1hLk5jKCk7Xy5maChkLDMsZSl9Xy5waChhLDEyKSYmKGU9YS54ZCgpLF8uZmgoZCwyLGUpKTtfLmtqKGEsXy5CdCwxMSkmJl8uWHQoZCxhLkpmKCk/Xy5CaihhLF8uQnQsMTEsXy5udSk6Xy5DaihhLF8uQnQsMTEpKTthPXtmYXRhbDohMSxWcDpbe2tleTpfLlByLHZhbHVlOm5ldyBfLnB1fSx7a2V5Ol8uUXIsdmFsdWU6bmV3IF8ucHV9XX07bGV0IGY7Zm9yKGYgaW4gYilhW2ZdPWJbZl07cmV0dXJue1prOl8ucHhiLElpOmMsTG86ZCxtZXRhZGF0YTphfX19OwpwemI9ZnVuY3Rpb24oYSxiLGMpe2lmKF8uQShhLDIpKXtiPWN8fHt9O2M9Yi5JaXx8InJwYyI7YT1vemIoYSk7dmFyIGQ9e2ZhdGFsOiExLFZwOlt7a2V5Ol8uUHIsdmFsdWU6bmV3IF8ucHV9LHtrZXk6Xy5Rcix2YWx1ZTpuZXcgXy5wdX1dfTtsZXQgZTtmb3IoZSBpbiBiKWRbZV09YltlXTtyZXR1cm57Wms6Xy5aeGIsSWk6YyxMbzphLG1ldGFkYXRhOmR9fX07Cm96Yj1mdW5jdGlvbihhKXt2YXIgYj1uZXcgXy5SeGI7Xy5ReGIoYixmdW5jdGlvbigpe3ZhciBjPW5ldyBfLkx4YjtfLk54YihjLFtmdW5jdGlvbigpe3ZhciBkPW5ldyBfLmR1O18uZnUoZCw0KTtyZXR1cm4gZH0oKSxmdW5jdGlvbigpe3ZhciBkPW5ldyBfLmR1O18uZnUoZCwxNyk7cmV0dXJuIGR9KCksZnVuY3Rpb24oKXt2YXIgZD1uZXcgXy5kdTtfLmZ1KGQsMTQpO3JldHVybiBkfSgpLGZ1bmN0aW9uKCl7dmFyIGQ9bmV3IF8uZHU7Xy5mdShkLDgpO3JldHVybiBkfSgpLGZ1bmN0aW9uKCl7dmFyIGQ9bmV3IF8uZHU7Xy5mdShkLDEwKTtyZXR1cm4gZH0oKSxmdW5jdGlvbigpe3ZhciBkPW5ldyBfLmR1O18uZnUoZCw0NSk7Xy5raihhLF8uY3UsOCkmJl8uZ3UoZCxhLkpmKCk/Xy5CaihhLF8uY3UsOCxfLm51KTpfLkNqKGEsXy5jdSw4KSk7cmV0dXJuIGR9KCksZnVuY3Rpb24oKXt2YXIgZD1uZXcgXy5kdTtfLmZ1KGQsMjgpO18ua2ooYSxfLmN1LDEwKSYmXy5ndShkLGEuSmYoKT8KXy5CaihhLF8uY3UsMTAsXy5udSk6Xy5DaihhLF8uY3UsMTApKTtyZXR1cm4gZH0oKSxmdW5jdGlvbigpe3ZhciBkPW5ldyBfLmR1O18uZnUoZCwxMSk7Xy5raihhLF8uY3UsMTMpJiZfLmd1KGQsYS5KZigpP18uQmooYSxfLmN1LDEzLF8ubnUpOl8uQ2ooYSxfLmN1LDEzKSk7cmV0dXJuIGR9KCldKTtfLk94YihjLGZ1bmN0aW9uKCl7dmFyIGQ9bmV3IF8uZXU7Xy5LeGIoZCwiZGlzaC1waG90by12aWV3ZXIiKTtyZXR1cm4gZH0oKSk7Xy5NeGIoYyxbZnVuY3Rpb24oKXt2YXIgZD1uZXcgXy5ZcztfLnBoKGEsMSkmJl8uV3MoZCxhLk5jKCkpO3JldHVybiBkfSgpXSk7Xy5raihhLF8uRnQsMykmJl8uUHhiKGMsYS5KZigpP18uQmooYSxfLkZ0LDMsXy5udSk6Xy5DaihhLF8uRnQsMykpO3JldHVybiBjfSgpKTtyZXR1cm4gYn07CnJ6Yj1mdW5jdGlvbihhLGIsYyl7aWYoIV8uQShhLDIpKXtiPWN8fHt9O2M9Yi5JaXx8InJwYyI7YT1xemIoYSk7dmFyIGQ9e2ZhdGFsOiExLFZwOlt7a2V5Ol8uUHIsdmFsdWU6bmV3IF8ucHV9LHtrZXk6Xy5Rcix2YWx1ZTpuZXcgXy5wdX1dfTtsZXQgZTtmb3IoZSBpbiBiKWRbZV09YltlXTtyZXR1cm57Wms6Xy5QeWIsSWk6YyxMbzphLG1ldGFkYXRhOmR9fX07CnF6Yj1mdW5jdGlvbihhKXt2YXIgYj1uZXcgXy5MeGI7Xy5OeGIoYixbZnVuY3Rpb24oKXt2YXIgYz1uZXcgXy5kdTtfLmZ1KGMsNCk7cmV0dXJuIGN9KCksZnVuY3Rpb24oKXt2YXIgYz1uZXcgXy5kdTtfLmZ1KGMsMTcpO3JldHVybiBjfSgpLGZ1bmN0aW9uKCl7dmFyIGM9bmV3IF8uZHU7Xy5mdShjLDE0KTtyZXR1cm4gY30oKSxmdW5jdGlvbigpe3ZhciBjPW5ldyBfLmR1O18uZnUoYyw4KTtyZXR1cm4gY30oKSxmdW5jdGlvbigpe3ZhciBjPW5ldyBfLmR1O18uZnUoYywxMCk7cmV0dXJuIGN9KCksZnVuY3Rpb24oKXt2YXIgYz1uZXcgXy5kdTtfLmZ1KGMsNDUpO18ua2ooYSxfLmN1LDgpJiZfLmd1KGMsYS5KZigpP18uQmooYSxfLmN1LDgsXy5udSk6Xy5DaihhLF8uY3UsOCkpO3JldHVybiBjfSgpLGZ1bmN0aW9uKCl7dmFyIGM9bmV3IF8uZHU7Xy5mdShjLDI4KTtfLmtqKGEsXy5jdSwxMCkmJl8uZ3UoYyxhLkpmKCk/Xy5CaihhLF8uY3UsMTAsXy5udSk6Xy5DaihhLF8uY3UsMTApKTsKcmV0dXJuIGN9KCksZnVuY3Rpb24oKXt2YXIgYz1uZXcgXy5kdTtfLmZ1KGMsMTEpO18ua2ooYSxfLmN1LDEzKSYmXy5ndShjLGEuSmYoKT9fLkJqKGEsXy5jdSwxMyxfLm51KTpfLkNqKGEsXy5jdSwxMykpO3JldHVybiBjfSgpXSk7Xy5PeGIoYixmdW5jdGlvbigpe3ZhciBjPW5ldyBfLmV1O18uS3hiKGMsImRpc2gtcGhvdG8tdmlld2VyIik7cmV0dXJuIGN9KCkpO18uTXhiKGIsW2Z1bmN0aW9uKCl7dmFyIGM9bmV3IF8uWXM7Xy5waChhLDEpJiZfLldzKGMsYS5OYygpKTtyZXR1cm4gY30oKV0pO18ua2ooYSxfLkZ0LDMpJiZfLlB4YihiLGEuSmYoKT9fLkJqKGEsXy5GdCwzLF8ubnUpOl8uQ2ooYSxfLkZ0LDMpKTtyZXR1cm4gYn07Cl8uc3piPV8ubXUoe1VrOiExLG5hbWU6IktHRkZyYyIsSWs6Xy5qemIscGFyYW1zOntjdG9yOl8ubHpifSxNbDpbXSxkYXRhOnthcmI6bXpiLEN3YzpfLm91KG16YiksVTE6bnpiLER3YzpfLm91KG56YiksVm86ZnVuY3Rpb24oKXt9LGxZYTpwemIsdDNiOl8ub3UocHpiKSxtWWE6cnpiLHUzYjpfLm91KHJ6YiksdU46ZnVuY3Rpb24oKXt9fSxLbDpfLmt6YixIbDp7fSxjaGlsZHJlbjp7fX0pOwp9Y2F0Y2goZSl7Xy5fRHVtcEV4Y2VwdGlvbihlKX0KdHJ5ewpfLiR5Yj1fLmtjKCJLUkxFNWMiLFtfLlhyXSk7Cn1jYXRjaChlKXtfLl9EdW1wRXhjZXB0aW9uKGUpfQp0cnl7Cl8uYXpiPWNsYXNzIGV4dGVuZHMgXy5se2NvbnN0cnVjdG9yKGEpe3N1cGVyKGEpfU5jKCl7cmV0dXJuIF8udCh0aGlzLDEpfXhkKCl7cmV0dXJuIF8udCh0aGlzLDkpfX07Xy5iemI9KCk9Pih7dmFyaWFudDpudWxsLHFrOltdLHprOnt9fSk7dmFyIGN6YixkemIsZnpiLGV6YixoemIsZ3piO2N6Yj1mdW5jdGlvbihhLGIsYyl7aWYoXy5BKGEsMikmJihfLmtqKGEsXy5CdCw4KSYmXy5KdChfLnplKGEsXy5CdCw4KSkpIT0iIil7Yj1jfHx7fTtjPWIuSWl8fCJycGMiO3ZhciBkPW5ldyBfLlR0LGU9ZC5zZXRRdWVyeSxmPW5ldyBfLlJ0LGc9bmV3IF8uV3Q7aWYoXy5waChhLDEpKXt2YXIgaD1hLk5jKCk7Xy5maChnLDMsaCl9Xy5waChhLDkpJiYoaD1hLnhkKCksXy5maChnLDIsaCkpO18ua2ooYSxfLkJ0LDgpJiZfLlh0KGcsYS5KZigpP18uQmooYSxfLkJ0LDgsXy5udSk6Xy5DaihhLF8uQnQsOCkpO18uR2ooZiw2LF8uU3QsZyk7ZS5jYWxsKGQsZik7YT17ZmF0YWw6ITEsVnA6W3trZXk6Xy5Qcix2YWx1ZTpuZXcgXy5wdX0se2tleTpfLlFyLHZhbHVlOm5ldyBfLnB1fV19O2xldCBrO2ZvcihrIGluIGIpYVtrXT1iW2tdO3JldHVybntaazpfLkl4YixJaTpjLExvOmQsbWV0YWRhdGE6YX19fTsKZHpiPWZ1bmN0aW9uKGEsYixjKXtpZighXy5BKGEsMikmJihfLmtqKGEsXy5CdCw4KSYmXy5KdChfLnplKGEsXy5CdCw4KSkpIT0iIil7Yj1jfHx7fTtjPWIuSWl8fCJycGMiO3ZhciBkPW5ldyBfLld0O2lmKF8ucGgoYSwxKSl7dmFyIGU9YS5OYygpO18uZmgoZCwzLGUpfV8ucGgoYSw5KSYmKGU9YS54ZCgpLF8uZmgoZCwyLGUpKTtfLmtqKGEsXy5CdCw4KSYmXy5YdChkLGEuSmYoKT9fLkJqKGEsXy5CdCw4LF8ubnUpOl8uQ2ooYSxfLkJ0LDgpKTthPXtmYXRhbDohMSxWcDpbe2tleTpfLlByLHZhbHVlOm5ldyBfLnB1fSx7a2V5Ol8uUXIsdmFsdWU6bmV3IF8ucHV9XX07bGV0IGY7Zm9yKGYgaW4gYilhW2ZdPWJbZl07cmV0dXJue1prOl8ucHhiLElpOmMsTG86ZCxtZXRhZGF0YTphfX19OwpmemI9ZnVuY3Rpb24oYSxiLGMpe2lmKF8uQShhLDIpKXtiPWN8fHt9O2M9Yi5JaXx8InJwYyI7YT1lemIoYSk7dmFyIGQ9e2ZhdGFsOiExLFZwOlt7a2V5Ol8uUHIsdmFsdWU6bmV3IF8ucHV9LHtrZXk6Xy5Rcix2YWx1ZTpuZXcgXy5wdX1dfTtsZXQgZTtmb3IoZSBpbiBiKWRbZV09YltlXTtyZXR1cm57Wms6Xy5aeGIsSWk6YyxMbzphLG1ldGFkYXRhOmR9fX07CmV6Yj1mdW5jdGlvbihhKXt2YXIgYj1uZXcgXy5SeGI7Xy5ReGIoYixmdW5jdGlvbigpe3ZhciBjPW5ldyBfLkx4YjtfLk54YihjLFtmdW5jdGlvbigpe3ZhciBkPW5ldyBfLmR1O18uZnUoZCw0KTtyZXR1cm4gZH0oKSxmdW5jdGlvbigpe3ZhciBkPW5ldyBfLmR1O18uZnUoZCwxNyk7cmV0dXJuIGR9KCksZnVuY3Rpb24oKXt2YXIgZD1uZXcgXy5kdTtfLmZ1KGQsMTQpO3JldHVybiBkfSgpLGZ1bmN0aW9uKCl7dmFyIGQ9bmV3IF8uZHU7Xy5mdShkLDgpO3JldHVybiBkfSgpLGZ1bmN0aW9uKCl7dmFyIGQ9bmV3IF8uZHU7Xy5mdShkLDEwKTtyZXR1cm4gZH0oKSxmdW5jdGlvbigpe3ZhciBkPW5ldyBfLmR1O18uZnUoZCw0NSk7Xy5raihhLF8uY3UsNSkmJl8uZ3UoZCxhLkpmKCk/Xy5CaihhLF8uY3UsNSxfLm51KTpfLkNqKGEsXy5jdSw1KSk7cmV0dXJuIGR9KCksZnVuY3Rpb24oKXt2YXIgZD1uZXcgXy5kdTtfLmZ1KGQsMjgpO18ua2ooYSxfLmN1LDcpJiZfLmd1KGQsYS5KZigpPwpfLkJqKGEsXy5jdSw3LF8ubnUpOl8uQ2ooYSxfLmN1LDcpKTtyZXR1cm4gZH0oKSxmdW5jdGlvbigpe3ZhciBkPW5ldyBfLmR1O18uZnUoZCwxMSk7Xy5raihhLF8uY3UsMTApJiZfLmd1KGQsYS5KZigpP18uQmooYSxfLmN1LDEwLF8ubnUpOl8uQ2ooYSxfLmN1LDEwKSk7cmV0dXJuIGR9KCldKTtfLk94YihjLGZ1bmN0aW9uKCl7dmFyIGQ9bmV3IF8uZXU7Xy5LeGIoZCwiZGlzaC1waG90by12aWV3ZXIiKTtyZXR1cm4gZH0oKSk7Xy5NeGIoYyxbZnVuY3Rpb24oKXt2YXIgZD1uZXcgXy5ZcztfLnBoKGEsMSkmJl8uV3MoZCxhLk5jKCkpO3JldHVybiBkfSgpXSk7Xy5raihhLF8uRnQsMykmJl8uUHhiKGMsYS5KZigpP18uQmooYSxfLkZ0LDMsXy5udSk6Xy5DaihhLF8uRnQsMykpO3JldHVybiBjfSgpKTtyZXR1cm4gYn07Cmh6Yj1mdW5jdGlvbihhLGIsYyl7aWYoIV8uQShhLDIpKXtiPWN8fHt9O2M9Yi5JaXx8InJwYyI7YT1nemIoYSk7dmFyIGQ9e2ZhdGFsOiExLFZwOlt7a2V5Ol8uUHIsdmFsdWU6bmV3IF8ucHV9LHtrZXk6Xy5Rcix2YWx1ZTpuZXcgXy5wdX1dfTtsZXQgZTtmb3IoZSBpbiBiKWRbZV09YltlXTtyZXR1cm57Wms6Xy5QeWIsSWk6YyxMbzphLG1ldGFkYXRhOmR9fX07Cmd6Yj1mdW5jdGlvbihhKXt2YXIgYj1uZXcgXy5MeGI7Xy5OeGIoYixbZnVuY3Rpb24oKXt2YXIgYz1uZXcgXy5kdTtfLmZ1KGMsNCk7cmV0dXJuIGN9KCksZnVuY3Rpb24oKXt2YXIgYz1uZXcgXy5kdTtfLmZ1KGMsMTcpO3JldHVybiBjfSgpLGZ1bmN0aW9uKCl7dmFyIGM9bmV3IF8uZHU7Xy5mdShjLDE0KTtyZXR1cm4gY30oKSxmdW5jdGlvbigpe3ZhciBjPW5ldyBfLmR1O18uZnUoYyw4KTtyZXR1cm4gY30oKSxmdW5jdGlvbigpe3ZhciBjPW5ldyBfLmR1O18uZnUoYywxMCk7cmV0dXJuIGN9KCksZnVuY3Rpb24oKXt2YXIgYz1uZXcgXy5kdTtfLmZ1KGMsNDUpO18ua2ooYSxfLmN1LDUpJiZfLmd1KGMsYS5KZigpP18uQmooYSxfLmN1LDUsXy5udSk6Xy5DaihhLF8uY3UsNSkpO3JldHVybiBjfSgpLGZ1bmN0aW9uKCl7dmFyIGM9bmV3IF8uZHU7Xy5mdShjLDI4KTtfLmtqKGEsXy5jdSw3KSYmXy5ndShjLGEuSmYoKT9fLkJqKGEsXy5jdSw3LF8ubnUpOl8uQ2ooYSxfLmN1LDcpKTsKcmV0dXJuIGN9KCksZnVuY3Rpb24oKXt2YXIgYz1uZXcgXy5kdTtfLmZ1KGMsMTEpO18ua2ooYSxfLmN1LDEwKSYmXy5ndShjLGEuSmYoKT9fLkJqKGEsXy5jdSwxMCxfLm51KTpfLkNqKGEsXy5jdSwxMCkpO3JldHVybiBjfSgpXSk7Xy5PeGIoYixmdW5jdGlvbigpe3ZhciBjPW5ldyBfLmV1O18uS3hiKGMsImRpc2gtcGhvdG8tdmlld2VyIik7cmV0dXJuIGN9KCkpO18uTXhiKGIsW2Z1bmN0aW9uKCl7dmFyIGM9bmV3IF8uWXM7Xy5waChhLDEpJiZfLldzKGMsYS5OYygpKTtyZXR1cm4gY30oKV0pO18ua2ooYSxfLkZ0LDMpJiZfLlB4YihiLGEuSmYoKT9fLkJqKGEsXy5GdCwzLF8ubnUpOl8uQ2ooYSxfLkZ0LDMpKTtyZXR1cm4gYn07Cl8uaXpiPV8ubXUoe1VrOiExLG5hbWU6Ik5aRHQyZSIsSWs6Xy4keWIscGFyYW1zOntjdG9yOl8uYXpifSxNbDpbXSxkYXRhOnthcmI6Y3piLEN3YzpfLm91KGN6YiksVTE6ZHpiLER3YzpfLm91KGR6YiksVm86ZnVuY3Rpb24oKXt9LGxZYTpmemIsdDNiOl8ub3UoZnpiKSxtWWE6aHpiLHUzYjpfLm91KGh6YiksdU46ZnVuY3Rpb24oKXt9fSxLbDpfLmJ6YixIbDp7fSxjaGlsZHJlbjp7fX0pOwp9Y2F0Y2goZSl7Xy5fRHVtcEV4Y2VwdGlvbihlKX0KdHJ5ewpfLlF5Yj1fLmtjKCJTM3pSNmMiLFtfLlhyXSk7Cn1jYXRjaChlKXtfLl9EdW1wRXhjZXB0aW9uKGUpfQp0cnl7Cl8uUnliPSgpPT4oe3ZhcmlhbnQ6bnVsbCxxazpbXSx6azp7fX0pO18uU3liPWNsYXNzIGV4dGVuZHMgXy5se2NvbnN0cnVjdG9yKGEpe3N1cGVyKGEpfXhkKCl7cmV0dXJuIF8udCh0aGlzLDIpfU5jKCl7cmV0dXJuIF8udCh0aGlzLDMpfX07dmFyIFR5YixVeWIsV3liLFZ5YixZeWIsWHliO1R5Yj1mdW5jdGlvbihhLGIsYyl7aWYoXy5BKGEsNCkmJihfLmtqKGEsXy5CdCwxKSYmXy5KdChfLnplKGEsXy5CdCwxKSkpIT0iIil7Yj1jfHx7fTtjPWIuSWl8fCJycGMiO3ZhciBkPW5ldyBfLlR0LGU9ZC5zZXRRdWVyeSxmPW5ldyBfLlJ0LGc9bmV3IF8uV3Q7aWYoXy5waChhLDMpKXt2YXIgaD1hLk5jKCk7Xy5maChnLDMsaCl9Xy5waChhLDIpJiYoaD1hLnhkKCksXy5maChnLDIsaCkpO18ua2ooYSxfLkJ0LDEpJiZfLlh0KGcsYS5KZigpP18uQmooYSxfLkJ0LDEsXy5udSk6Xy5DaihhLF8uQnQsMSkpO18uR2ooZiw2LF8uU3QsZyk7ZS5jYWxsKGQsZik7YT17ZmF0YWw6ITEsVnA6W3trZXk6Xy5Qcix2YWx1ZTpuZXcgXy5wdX0se2tleTpfLlFyLHZhbHVlOm5ldyBfLnB1fV19O2xldCBrO2ZvcihrIGluIGIpYVtrXT1iW2tdO3JldHVybntaazpfLkl4YixJaTpjLExvOmQsbWV0YWRhdGE6YX19fTsKVXliPWZ1bmN0aW9uKGEsYixjKXtpZighXy5BKGEsNCkmJihfLmtqKGEsXy5CdCwxKSYmXy5KdChfLnplKGEsXy5CdCwxKSkpIT0iIil7Yj1jfHx7fTtjPWIuSWl8fCJycGMiO3ZhciBkPW5ldyBfLld0O2lmKF8ucGgoYSwzKSl7dmFyIGU9YS5OYygpO18uZmgoZCwzLGUpfV8ucGgoYSwyKSYmKGU9YS54ZCgpLF8uZmgoZCwyLGUpKTtfLmtqKGEsXy5CdCwxKSYmXy5YdChkLGEuSmYoKT9fLkJqKGEsXy5CdCwxLF8ubnUpOl8uQ2ooYSxfLkJ0LDEpKTthPXtmYXRhbDohMSxWcDpbe2tleTpfLlByLHZhbHVlOm5ldyBfLnB1fSx7a2V5Ol8uUXIsdmFsdWU6bmV3IF8ucHV9XX07bGV0IGY7Zm9yKGYgaW4gYilhW2ZdPWJbZl07cmV0dXJue1prOl8ucHhiLElpOmMsTG86ZCxtZXRhZGF0YTphfX19OwpXeWI9ZnVuY3Rpb24oYSxiLGMpe2lmKF8uQShhLDQpKXtiPWN8fHt9O2M9Yi5JaXx8InJwYyI7YT1WeWIoYSk7dmFyIGQ9e2ZhdGFsOiExLFZwOlt7a2V5Ol8uUHIsdmFsdWU6bmV3IF8ucHV9LHtrZXk6Xy5Rcix2YWx1ZTpuZXcgXy5wdX1dfTtsZXQgZTtmb3IoZSBpbiBiKWRbZV09YltlXTtyZXR1cm57Wms6Xy5aeGIsSWk6YyxMbzphLG1ldGFkYXRhOmR9fX07ClZ5Yj1mdW5jdGlvbihhKXt2YXIgYj1uZXcgXy5SeGI7Xy5ReGIoYixmdW5jdGlvbigpe3ZhciBjPW5ldyBfLkx4YjtfLk54YihjLFtmdW5jdGlvbigpe3ZhciBkPW5ldyBfLmR1O18uZnUoZCw0KTtyZXR1cm4gZH0oKSxmdW5jdGlvbigpe3ZhciBkPW5ldyBfLmR1O18uZnUoZCwxNyk7cmV0dXJuIGR9KCksZnVuY3Rpb24oKXt2YXIgZD1uZXcgXy5kdTtfLmZ1KGQsMTQpO3JldHVybiBkfSgpLGZ1bmN0aW9uKCl7dmFyIGQ9bmV3IF8uZHU7Xy5mdShkLDgpO3JldHVybiBkfSgpLGZ1bmN0aW9uKCl7dmFyIGQ9bmV3IF8uZHU7Xy5mdShkLDEwKTtyZXR1cm4gZH0oKSxmdW5jdGlvbigpe3ZhciBkPW5ldyBfLmR1O18uZnUoZCw0NSk7Xy5raihhLF8uY3UsNykmJl8uZ3UoZCxhLkpmKCk/Xy5CaihhLF8uY3UsNyxfLm51KTpfLkNqKGEsXy5jdSw3KSk7cmV0dXJuIGR9KCksZnVuY3Rpb24oKXt2YXIgZD1uZXcgXy5kdTtfLmZ1KGQsMjgpO18ua2ooYSxfLmN1LDgpJiZfLmd1KGQsYS5KZigpPwpfLkJqKGEsXy5jdSw4LF8ubnUpOl8uQ2ooYSxfLmN1LDgpKTtyZXR1cm4gZH0oKSxmdW5jdGlvbigpe3ZhciBkPW5ldyBfLmR1O18uZnUoZCwxMSk7aWYoXy5raihhLF8uY3UsMTApKXt2YXIgZTthLkpmKCk/ZT1fLkJqKGEsXy5jdSwxMCxfLm51KTplPV8uQ2ooYSxfLmN1LDEwKTtfLmd1KGQsZSl9cmV0dXJuIGR9KCldKTtfLk94YihjLGZ1bmN0aW9uKCl7dmFyIGQ9bmV3IF8uZXU7Xy5LeGIoZCwiZGlzaC1waG90by12aWV3ZXIiKTtyZXR1cm4gZH0oKSk7Xy5NeGIoYyxbZnVuY3Rpb24oKXt2YXIgZD1uZXcgXy5ZcztfLnBoKGEsMykmJl8uV3MoZCxhLk5jKCkpO3JldHVybiBkfSgpXSk7Xy5raihhLF8uRnQsNikmJl8uUHhiKGMsYS5KZigpP18uQmooYSxfLkZ0LDYsXy5udSk6Xy5DaihhLF8uRnQsNikpO3JldHVybiBjfSgpKTtyZXR1cm4gYn07Cll5Yj1mdW5jdGlvbihhLGIsYyl7aWYoIV8uQShhLDQpKXtiPWN8fHt9O2M9Yi5JaXx8InJwYyI7YT1YeWIoYSk7dmFyIGQ9e2ZhdGFsOiExLFZwOlt7a2V5Ol8uUHIsdmFsdWU6bmV3IF8ucHV9LHtrZXk6Xy5Rcix2YWx1ZTpuZXcgXy5wdX1dfTtsZXQgZTtmb3IoZSBpbiBiKWRbZV09YltlXTtyZXR1cm57Wms6Xy5QeWIsSWk6YyxMbzphLG1ldGFkYXRhOmR9fX07Clh5Yj1mdW5jdGlvbihhKXt2YXIgYj1uZXcgXy5MeGI7Xy5OeGIoYixbZnVuY3Rpb24oKXt2YXIgYz1uZXcgXy5kdTtfLmZ1KGMsNCk7cmV0dXJuIGN9KCksZnVuY3Rpb24oKXt2YXIgYz1uZXcgXy5kdTtfLmZ1KGMsMTcpO3JldHVybiBjfSgpLGZ1bmN0aW9uKCl7dmFyIGM9bmV3IF8uZHU7Xy5mdShjLDE0KTtyZXR1cm4gY30oKSxmdW5jdGlvbigpe3ZhciBjPW5ldyBfLmR1O18uZnUoYyw4KTtyZXR1cm4gY30oKSxmdW5jdGlvbigpe3ZhciBjPW5ldyBfLmR1O18uZnUoYywxMCk7cmV0dXJuIGN9KCksZnVuY3Rpb24oKXt2YXIgYz1uZXcgXy5kdTtfLmZ1KGMsNDUpO18ua2ooYSxfLmN1LDcpJiZfLmd1KGMsYS5KZigpP18uQmooYSxfLmN1LDcsXy5udSk6Xy5DaihhLF8uY3UsNykpO3JldHVybiBjfSgpLGZ1bmN0aW9uKCl7dmFyIGM9bmV3IF8uZHU7Xy5mdShjLDI4KTtfLmtqKGEsXy5jdSw4KSYmXy5ndShjLGEuSmYoKT9fLkJqKGEsXy5jdSw4LF8ubnUpOl8uQ2ooYSxfLmN1LDgpKTsKcmV0dXJuIGN9KCldKTtfLk94YihiLGZ1bmN0aW9uKCl7dmFyIGM9bmV3IF8uZXU7Xy5LeGIoYywiZGlzaC1waG90by12aWV3ZXIiKTtyZXR1cm4gY30oKSk7Xy5NeGIoYixbZnVuY3Rpb24oKXt2YXIgYz1uZXcgXy5ZcztfLnBoKGEsMykmJl8uV3MoYyxhLk5jKCkpO3JldHVybiBjfSgpXSk7Xy5raihhLF8uRnQsNikmJl8uUHhiKGIsYS5KZigpP18uQmooYSxfLkZ0LDYsXy5udSk6Xy5DaihhLF8uRnQsNikpO3JldHVybiBifTtfLlp5Yj1fLm11KHtVazohMSxuYW1lOiJlenF0d2YiLElrOl8uUXliLHBhcmFtczp7Y3RvcjpfLlN5Yn0sTWw6W10sZGF0YTp7ZkM6VHliLHZXYTpfLm91KFR5YiksbUU6VXliLHdXYTpfLm91KFV5YiksbFlhOld5Yix0M2I6Xy5vdShXeWIpLG1ZYTpZeWIsdTNiOl8ub3UoWXliKX0sS2w6Xy5SeWIsSGw6e30sY2hpbGRyZW46e319KTsKfWNhdGNoKGUpe18uX0R1bXBFeGNlcHRpb24oZSl9CnRyeXsKXy5JeWI9Xy5rYygiS0RnWjFlIixbXy5Ycl0pOwp9Y2F0Y2goZSl7Xy5fRHVtcEV4Y2VwdGlvbihlKX0KdHJ5ewpuZXcgXy5DaShfLmt4Yik7Xy5aby5GRHNEQmU9Xy5ZbztfLk5xKF8ua3hiLF8uTnQsZnVuY3Rpb24oYSl7YT1fLnEoYSxfLk50LDEpO3JldHVybiBhIT1udWxsP1thXTpbXX0pO3ZhciBKeWI9Y2xhc3MgZXh0ZW5kcyBfLmx7Y29uc3RydWN0b3IoYSl7c3VwZXIoYSl9Z2V0VGl0bGUoKXtyZXR1cm4gXy50KHRoaXMsMSl9c2V0VGl0bGUoYSl7cmV0dXJuIF8uZmgodGhpcywxLGEpfWxkKCl7cmV0dXJuIF8ucGgodGhpcywxKX19O0p5Yi5wcm90b3R5cGUuWGE9IlB2UjV3ZSI7bmV3IF8uQ2koSnliKTtuZXcgXy5DaShKeWIpO3ZhciBLeWI9bmV3IF8uVnQoIlROS3A5YiIsSnliLF8ua3hiLFtfLm1pLCEwLF8ubGksIi9Mb2NhbFBob3Rvc0Z1bGZpbGxlclNlcnZpY2UuR2V0TG9jYWxTaG9wcGluZ1pvb21PdXQiXSk7Xy5MeWI9KCk9Pih7dmFyaWFudDpudWxsLHFrOltdLHprOnt9fSk7Xy5NeWI9Y2xhc3MgZXh0ZW5kcyBfLmx7Y29uc3RydWN0b3IoYSl7c3VwZXIoYSl9fTt2YXIgTnliO055Yj1mdW5jdGlvbihhLGIsYyl7Yj1jfHx7fTtjPWIuSWl8fCJycGMiO3ZhciBkPW5ldyBfLmt4YjtfLmtqKGEsXy5OdCwyKSYmKGE9YS5KZigpP18uQmooYSxfLk50LDIsXy5udSk6Xy5DaihhLF8uTnQsMiksXy5TYihkLF8uTnQsMSxhKSk7YT17ZmF0YWw6ITEsVnA6W3trZXk6Xy5Qcix2YWx1ZTpuZXcgXy5wdX0se2tleTpfLlFyLHZhbHVlOm5ldyBfLnB1fV19O2Zvcih2YXIgZSBpbiBiKWFbZV09YltlXTtyZXR1cm57Wms6S3liLElpOmMsTG86ZCxtZXRhZGF0YTphfX07Xy5PeWI9Xy5tdSh7VWs6ITEsbmFtZToiZkFCdVJjIixJazpfLkl5YixwYXJhbXM6e2N0b3I6Xy5NeWJ9LE1sOltdLGRhdGE6e1lEYzpOeWIsb0RkOl8ub3UoTnliKX0sS2w6Xy5MeWIsSGw6e30sY2hpbGRyZW46e319KTsKfWNhdGNoKGUpe18uX0R1bXBFeGNlcHRpb24oZSl9CnRyeXsKXy5DeWI9Xy5rYygiRk9PYUdkIixbXy5Ycl0pOwp9Y2F0Y2goZSl7Xy5fRHVtcEV4Y2VwdGlvbihlKX0KdHJ5ewpfLkR5Yj1jbGFzcyBleHRlbmRzIF8ubHtjb25zdHJ1Y3RvcihhKXtzdXBlcihhKX14ZCgpe3JldHVybiBfLnQodGhpcywyKX1OYygpe3JldHVybiBfLnQodGhpcywzKX1vYSgpe3JldHVybiBfLnEodGhpcyxfLkN0LDUpfUJhKCl7cmV0dXJuIF8uQSh0aGlzLDkpfUVhKCl7cmV0dXJuIF8uQSh0aGlzLDEwKX13YSgpe3JldHVybiBfLkEodGhpcywxMSl9QWEoKXtyZXR1cm4gXy5BKHRoaXMsMTIpfX07Xy5FeWI9KCk9Pih7dmFyaWFudDpudWxsLHFrOltdLHprOnt9fSk7dmFyIEZ5YixHeWI7RnliPWZ1bmN0aW9uKGEsYixjKXtpZihfLkEoYSw0KSYmKF8ua2ooYSxfLkJ0LDEpJiZfLkp0KF8uemUoYSxfLkJ0LDEpKSkhPSIiKXtiPWN8fHt9O2M9Yi5JaXx8InJwYyI7dmFyIGQ9bmV3IF8uVHQsZT1kLnNldFF1ZXJ5LGY9bmV3IF8uUnQsZz1uZXcgXy5XdDtpZihfLnBoKGEsMykpe3ZhciBoPWEuTmMoKTtfLmZoKGcsMyxoKX1fLnBoKGEsMikmJihoPWEueGQoKSxfLmZoKGcsMixoKSk7Xy5raihhLF8uQnQsMSkmJl8uWHQoZyxhLkpmKCk/Xy5CaihhLF8uQnQsMSxfLm51KTpfLkNqKGEsXy5CdCwxKSk7Xy5HaihmLDYsXy5TdCxnKTtlLmNhbGwoZCxmKTthPXtmYXRhbDohMSxWcDpbe2tleTpfLlByLHZhbHVlOm5ldyBfLnB1fSx7a2V5Ol8uUXIsdmFsdWU6bmV3IF8ucHV9XX07bGV0IGs7Zm9yKGsgaW4gYilhW2tdPWJba107cmV0dXJue1prOl8uSXhiLElpOmMsTG86ZCxtZXRhZGF0YTphfX19OwpHeWI9ZnVuY3Rpb24oYSxiLGMpe2lmKCFfLkEoYSw0KSYmKF8ua2ooYSxfLkJ0LDEpJiZfLkp0KF8uemUoYSxfLkJ0LDEpKSkhPSIiKXtiPWN8fHt9O2M9Yi5JaXx8InJwYyI7dmFyIGQ9bmV3IF8uV3Q7aWYoXy5waChhLDMpKXt2YXIgZT1hLk5jKCk7Xy5maChkLDMsZSl9Xy5waChhLDIpJiYoZT1hLnhkKCksXy5maChkLDIsZSkpO18ua2ooYSxfLkJ0LDEpJiZfLlh0KGQsYS5KZigpP18uQmooYSxfLkJ0LDEsXy5udSk6Xy5DaihhLF8uQnQsMSkpO2E9e2ZhdGFsOiExLFZwOlt7a2V5Ol8uUHIsdmFsdWU6bmV3IF8ucHV9LHtrZXk6Xy5Rcix2YWx1ZTpuZXcgXy5wdX1dfTtsZXQgZjtmb3IoZiBpbiBiKWFbZl09YltmXTtyZXR1cm57Wms6Xy5weGIsSWk6YyxMbzpkLG1ldGFkYXRhOmF9fX07Cl8uSHliPV8ubXUoe1VrOiExLG5hbWU6IkFrYWlyYyIsSWs6Xy5DeWIscGFyYW1zOntjdG9yOl8uRHlifSxNbDpbXSxkYXRhOntWbzpmdW5jdGlvbigpe30sZkM6RnliLHZXYTpfLm91KEZ5YiksbUU6R3liLHdXYTpfLm91KEd5YiksdU46ZnVuY3Rpb24oKXt9fSxLbDpfLkV5YixIbDp7fSxjaGlsZHJlbjp7fX0pOwp9Y2F0Y2goZSl7Xy5fRHVtcEV4Y2VwdGlvbihlKX0KdHJ5ewpfLnd5Yj1fLmtjKCJHaG9uZiIsW18uWHJdKTsKfWNhdGNoKGUpe18uX0R1bXBFeGNlcHRpb24oZSl9CnRyeXsKXy54eWI9KCk9Pih7dmFyaWFudDpudWxsLHFrOltdLHprOnt9fSk7Xy55eWI9Y2xhc3MgZXh0ZW5kcyBfLmx7Y29uc3RydWN0b3IoYSl7c3VwZXIoYSl9TmMoKXtyZXR1cm4gXy50KHRoaXMsMSl9eGQoKXtyZXR1cm4gXy50KHRoaXMsMyl9fTt2YXIgenliLEF5Yjt6eWI9ZnVuY3Rpb24oYSxiLGMpe2lmKF8uQShhLDIpJiYoXy5raihhLF8uQnQsNCkmJl8uSnQoXy56ZShhLF8uQnQsNCkpKSE9IiIpe2I9Y3x8e307Yz1iLklpfHwicnBjIjt2YXIgZD1uZXcgXy5UdCxlPWQuc2V0UXVlcnksZj1uZXcgXy5SdCxnPW5ldyBfLld0O2lmKF8ucGgoYSwxKSl7dmFyIGg9YS5OYygpO18uZmgoZywzLGgpfV8ucGgoYSwzKSYmKGg9YS54ZCgpLF8uZmgoZywyLGgpKTtfLmtqKGEsXy5CdCw0KSYmXy5YdChnLGEuSmYoKT9fLkJqKGEsXy5CdCw0LF8ubnUpOl8uQ2ooYSxfLkJ0LDQpKTtfLkdqKGYsNixfLlN0LGcpO2UuY2FsbChkLGYpO2E9e2ZhdGFsOiExLFZwOlt7a2V5Ol8uUHIsdmFsdWU6bmV3IF8ucHV9LHtrZXk6Xy5Rcix2YWx1ZTpuZXcgXy5wdX1dfTtsZXQgaztmb3IoayBpbiBiKWFba109YltrXTtyZXR1cm57Wms6Xy5JeGIsSWk6YyxMbzpkLG1ldGFkYXRhOmF9fX07CkF5Yj1mdW5jdGlvbihhLGIsYyl7aWYoIV8uQShhLDIpJiYoXy5raihhLF8uQnQsNCkmJl8uSnQoXy56ZShhLF8uQnQsNCkpKSE9IiIpe2I9Y3x8e307Yz1iLklpfHwicnBjIjt2YXIgZD1uZXcgXy5XdDtpZihfLnBoKGEsMSkpe3ZhciBlPWEuTmMoKTtfLmZoKGQsMyxlKX1fLnBoKGEsMykmJihlPWEueGQoKSxfLmZoKGQsMixlKSk7Xy5raihhLF8uQnQsNCkmJl8uWHQoZCxhLkpmKCk/Xy5CaihhLF8uQnQsNCxfLm51KTpfLkNqKGEsXy5CdCw0KSk7YT17ZmF0YWw6ITEsVnA6W3trZXk6Xy5Qcix2YWx1ZTpuZXcgXy5wdX0se2tleTpfLlFyLHZhbHVlOm5ldyBfLnB1fV19O2xldCBmO2ZvcihmIGluIGIpYVtmXT1iW2ZdO3JldHVybntaazpfLnB4YixJaTpjLExvOmQsbWV0YWRhdGE6YX19fTsKXy5CeWI9Xy5tdSh7VWs6ITEsbmFtZToiZHEzYXNlIixJazpfLnd5YixwYXJhbXM6e2N0b3I6Xy55eWJ9LE1sOltdLGRhdGE6e1ZvOmZ1bmN0aW9uKCl7fSxmQzp6eWIsdldhOl8ub3UoenliKSxtRTpBeWIsd1dhOl8ub3UoQXliKSx1TjpmdW5jdGlvbigpe319LEtsOl8ueHliLEhsOnt9LGNoaWxkcmVuOnt9fSk7Cn1jYXRjaChlKXtfLl9EdW1wRXhjZXB0aW9uKGUpfQp0cnl7CnZhciBXemIsWHpiLFl6YixaemIsJHpiLGFBYixiQWIsY0FiLGRBYixlQWIsZkFiLGdBYixoQWIsaUFiLGpBYixrQWIsbEFiLG1BYixuQWIsb0FiLHBBYixxQWIsckFiLHNBYix0QWIsdUFiLHZBYix3QWIseEFiLHlBYix6QWIsQUFiLEJBYixDQWIsREFiLEVBYixGQWIsR0FiLEhBYixJQWIsSkFiLEtBYixxdSxMQWIsTUFiLE5BYixPQWIscnUsUEFiLFFBYixSQWIsU0FiLFRBYixVQWIsVkFiLFdBYixZQWI7V3piPWZ1bmN0aW9uKGEpe3JldHVybiBfLkEoYSwxKX07WHpiPWZ1bmN0aW9uKGEpe3JldHVybiBfLkhrKGEsMSl9O1l6Yj1mdW5jdGlvbihhKXtyZXR1cm4gXy5BKGEsMil9O1p6Yj1mdW5jdGlvbihhKXtyZXR1cm4gXy5IayhhLDIpfTskemI9ZnVuY3Rpb24oYSl7cmV0dXJuIF8uQShhLDUpfTthQWI9ZnVuY3Rpb24oYSl7cmV0dXJuIF8uQShhLDcpfTtiQWI9ZnVuY3Rpb24oYSl7cmV0dXJuIF8uQShhLDgpfTtjQWI9ZnVuY3Rpb24oYSl7cmV0dXJuIF8uT2ooYSw0KX07CmRBYj1mdW5jdGlvbihhKXtyZXR1cm4gXy5RayhhLDQpfTtlQWI9ZnVuY3Rpb24oYSl7cmV0dXJuIF8udChhLDUpfTtmQWI9ZnVuY3Rpb24oYSl7cmV0dXJuIF8ucGgoYSw1KX07Z0FiPWZ1bmN0aW9uKGEpe3JldHVybiBfLnQoYSw2KX07aEFiPWZ1bmN0aW9uKGEpe3JldHVybiBfLnBoKGEsNil9O2lBYj1mdW5jdGlvbihhKXtyZXR1cm4gXy5waChhLDIpfTtqQWI9ZnVuY3Rpb24oYSl7cmV0dXJuIF8ucGgoYSwzKX07a0FiPWZ1bmN0aW9uKGEsYil7Xy5maChhLDEsYil9O2xBYj1mdW5jdGlvbihhLGIpe18uJGgoYSwyLGIpfTttQWI9ZnVuY3Rpb24oYSxiKXtfLmZoKGEsMyxiKX07bkFiPWZ1bmN0aW9uKGEsYil7Xy5maChhLDIsYil9O29BYj1mdW5jdGlvbihhLGIpe18uZmgoYSwzLGIpfTtwQWI9ZnVuY3Rpb24oYSxiKXtfLiRoKGEsNCxiKX07cUFiPWZ1bmN0aW9uKGEsYil7Xy4kaChhLDksYil9O3JBYj1mdW5jdGlvbihhLGIpe18uJGgoYSwxMCxiKX07CnNBYj1mdW5jdGlvbihhLGIpe18uJGgoYSwxMSxiKX07dEFiPWZ1bmN0aW9uKGEsYil7Xy4kaChhLDEyLGIpfTt1QWI9ZnVuY3Rpb24oYSxiKXtfLmZoKGEsMSxiKX07dkFiPWZ1bmN0aW9uKGEsYil7Xy4kaChhLDIsYil9O3dBYj1mdW5jdGlvbihhLGIpe18uZmgoYSw5LGIpfTt4QWI9ZnVuY3Rpb24oYSxiKXtfLmZoKGEsMSxiKX07eUFiPWZ1bmN0aW9uKGEsYil7Xy4kaChhLDIsYil9O3pBYj1mdW5jdGlvbihhLGIpe18uWmgoYSw0LGIpfTtBQWI9ZnVuY3Rpb24oYSxiKXtfLmZoKGEsNSxiKX07QkFiPWZ1bmN0aW9uKGEsYil7Xy5maChhLDYsYil9O0NBYj1mdW5jdGlvbihhLGIpe18uU2IoYSxfLmN1LDEzLGIpfTtEQWI9ZnVuY3Rpb24oYSxiKXtfLlNiKGEsXy5jdSwxMCxiKX07RUFiPWZ1bmN0aW9uKGEsYil7Xy5TYihhLF8uY3UsOCxiKX07RkFiPWZ1bmN0aW9uKGEsYil7Xy5TYihhLF8uY3UsMTAsYil9O0dBYj1mdW5jdGlvbihhLGIpe18uU2IoYSxfLmN1LDcsYil9OwpIQWI9ZnVuY3Rpb24oYSxiKXtfLlNiKGEsXy5jdSw1LGIpfTtJQWI9ZnVuY3Rpb24oYSxiKXtfLlNiKGEsXy5GdCwzLGIpfTtKQWI9ZnVuY3Rpb24oYSxiKXtfLlNiKGEsXy5GdCwzLGIpfTtLQWI9ZnVuY3Rpb24oYSl7cmV0dXJuIF8uQmooYSxfLld2Yiw0LF8ubnUpfTtxdT1mdW5jdGlvbihhKXtyZXR1cm4gXy56ZShhLF8uV3ZiLDQpfTtMQWI9ZnVuY3Rpb24oYSxiKXtfLlNiKGEsXy5DdCw1LGIpfTtNQWI9ZnVuY3Rpb24oYSl7cmV0dXJuIF8uQ2ooYSxfLkN0LDQpfTtOQWI9ZnVuY3Rpb24oYSl7cmV0dXJuIF8ua2ooYSxfLkN0LDQpfTtPQWI9ZnVuY3Rpb24oYSl7cmV0dXJuIF8uemUoYSxfLkN0LDQpfTtydT1mdW5jdGlvbihhKXtyZXR1cm4gXy56ZShhLF8ucXdiLDgpfTtQQWI9ZnVuY3Rpb24oYSxiKXtfLlNiKGEsXy5CdCw4LGIpfTtRQWI9ZnVuY3Rpb24oYSxiKXtfLlNiKGEsXy5CdCwxLGIpfTtSQWI9ZnVuY3Rpb24oYSxiKXtfLlNiKGEsXy5CdCw0LGIpfTsKU0FiPWZ1bmN0aW9uKGEpe3JldHVybiBfLkNqKGEsXy5CdCwxKX07VEFiPWZ1bmN0aW9uKGEpe3JldHVybiBfLmtqKGEsXy5CdCwxKX07VUFiPWZ1bmN0aW9uKGEpe3JldHVybiBfLkJqKGEsXy5CdCwxLF8ubnUpfTtWQWI9ZnVuY3Rpb24oYSl7cmV0dXJuIF8uemUoYSxfLkJ0LDEpfTtXQWI9ZnVuY3Rpb24oYSl7cmV0dXJuIF8uQ2ooYSxfLk50LDEpfTtfLlhBYj1mdW5jdGlvbihhKXtyZXR1cm4gXy5raihhLF8uTnQsMSl9O1lBYj17bjVhOntWbzphPT5hJiZhLlZvfHx2b2lkIDAsdU46YT0+YSYmYS51Tnx8dm9pZCAwfSxvNWE6e1ZvOmE9PmEmJmEuVm98fHZvaWQgMCx1TjphPT5hJiZhLnVOfHx2b2lkIDB9LEV3Yjp7fSxwemI6e30sbllhOntWbzphPT5hJiZhLlZvfHx2b2lkIDAsdU46YT0+YSYmYS51Tnx8dm9pZCAwfSxGYmI6e1ZvOmE9PmEmJmEuVm98fHZvaWQgMCx1TjphPT5hJiZhLnVOfHx2b2lkIDB9LHVjYjp7fSx2Y2I6e30scUNiOnt9LHFEYjp7fX07Cl8uWkFiPSgpPT4oe3ZhcmlhbnQ6bnVsbCxxazpbXSx6azp7bjVhOl8ueHliLG81YTpfLkV5YixFd2I6Xy5MeWIscHpiOl8uUnliLG5ZYTpfLmJ6YixGYmI6Xy5remIsdWNiOl8ud3piLHZjYjpfLkV6YixxQ2I6Xy5KemIscURiOl8uU3pifX0pO3ZhciBzdTtzdT1mdW5jdGlvbihhKXtyZXR1cm4gXy56ZShhLF8uRHQsMSl9O18uJEFiPWZ1bmN0aW9uKGEpe3JldHVybiBfLkJqKGEsXy5EdCwxLF8ubnUpfTtfLmFCYj1mdW5jdGlvbihhLGIpe3JldHVybiBfLlNiKGEsXy5EdCwxLGIpfTtfLmJCYj1mdW5jdGlvbihhLGIpe3JldHVybiBfLmZoKGEsMyxiKX07Xy5jQmI9ZnVuY3Rpb24oYSxiKXtyZXR1cm4gXy4kaChhLDQsYil9O18uZEJiPWZ1bmN0aW9uKGEsYil7cmV0dXJuIF8uJGgoYSw1LGIpfTtfLmVCYj1mdW5jdGlvbihhLGIpe3JldHVybiBfLiRoKGEsNixiKX07Xy5mQmI9ZnVuY3Rpb24oYSxiKXtyZXR1cm4gXy4kaChhLDcsYil9O18uZ0JiPWZ1bmN0aW9uKGEsYil7cmV0dXJuIF8uJGgoYSw5LGIpfTtfLmhCYj1mdW5jdGlvbihhLGIpe3JldHVybiBfLiRoKGEsOCxiKX07Xy5pQmI9ZnVuY3Rpb24oYSxiKXtyZXR1cm4gXy4kaChhLDEwLGIpfTtfLmpCYj1mdW5jdGlvbihhLGIpe3JldHVybiBfLlNiKGEsXy5jdSwyMCxiKX07Cl8ua0JiPWZ1bmN0aW9uKGEsYil7cmV0dXJuIF8uU2IoYSxfLmN1LDIyLGIpfTtfLmxCYj1mdW5jdGlvbihhLGIpe3JldHVybiBfLlNiKGEsXy5jdSwyNyxiKX07Xy5tQmI9ZnVuY3Rpb24oYSxiKXtyZXR1cm4gXy5TYihhLF8uRnQsMTcsYil9O18ubkJiPWZ1bmN0aW9uKGEsYil7cmV0dXJuIF8uJGgoYSwxMSxiKX07Xy5vQmI9ZnVuY3Rpb24oYSxiKXtyZXR1cm4gXy4kaChhLDIzLGIpfTtfLnR1PWNsYXNzIGV4dGVuZHMgXy5se2NvbnN0cnVjdG9yKGEpe3N1cGVyKGEpfU5jKCl7cmV0dXJuIF8udCh0aGlzLDMpfX07Xy5wQmI9Xy5tdSh7VWs6ITEsbmFtZToiV0U3dGtkIixJazpfLlZ6YixwYXJhbXM6e2N0b3I6Xy50dX0sTWw6W10sZGF0YTp7Vm86ZnVuY3Rpb24oKXt9LHVOOmZ1bmN0aW9uKCl7fX0sS2w6Xy5aQWIsSGw6WUFiLGNoaWxkcmVuOntuNWE6KCgpPT57dmFyIGE9WUFiLm41YTtyZXR1cm57aWQ6Xy5CeWIsbmFtZToiZVo1NlhlIixxdzphLEZ2OmZ1bmN0aW9uKGIsYyxkKXtjPW5ldyBfLnl5YjtfLnBoKGIsMykmJmtBYihjLGIuTmMoKSk7aUFiKHF1KHN1KGIpKSkmJm1BYihjLHF1KHN1KGIpKS54ZCgpKTtpZihUQWIocXUoc3UoYikpKSl7bGV0IGUsZjtSQWIoYyxiLkpmKCk/KGU9Xy4kQWIoYikpPT1udWxsP3ZvaWQgMDooZj1LQWIoZSkpPT1udWxsP3ZvaWQgMDpVQWIoZik6U0FiKHF1KHN1KGIpKSkpfV8uSGsoYiw0KSYmbEFiKGMsXy5BKGIsNCkpO3JldHVybntLZTpjLGlkOl8uQnliLG5hbWU6ImVaNTZYZSIscXc6YSxwTjpmdW5jdGlvbigpe3JldHVybiBkLnRoZW4oZnVuY3Rpb24oZSl7dmFyIGY9Cnt9O2ZvcihsZXQgZyBpbiBhKWZbZ109YVtnXShlKTtyZXR1cm4gZn0pfSxSVDohKCFfLkEoYiwxNikmJiEkemIocnUoc3UoYikpKSl9fX19KSgpLG81YTooKCk9Pnt2YXIgYT1ZQWIubzVhO3JldHVybntpZDpfLkh5YixuYW1lOiJtN0RMQ2UiLHF3OmEsRnY6ZnVuY3Rpb24oYixjLGQpe2M9bmV3IF8uRHliO2lmKE5BYihxdShzdShiKSkpKXtsZXQgZSxmO0xBYihjLGIuSmYoKT8oZT1fLiRBYihiKSk9PW51bGw/dm9pZCAwOihmPUtBYihlKSk9PW51bGw/dm9pZCAwOl8uQmooZixfLkN0LDQsXy5udSk6TUFiKHF1KHN1KGIpKSkpfWpBYihxdShzdShiKSkpJiZvQWIoYyxxdShzdShiKSkuTmMoKSk7aUFiKHF1KHN1KGIpKSkmJm5BYihjLHF1KHN1KGIpKS54ZCgpKTtpZihUQWIocXUoc3UoYikpKSl7bGV0IGUsZjtRQWIoYyxiLkpmKCk/KGU9Xy4kQWIoYikpPT1udWxsP3ZvaWQgMDooZj1LQWIoZSkpPT1udWxsP3ZvaWQgMDpVQWIoZik6U0FiKHF1KHN1KGIpKSkpfV8uSGsoYiw1KSYmc0FiKGMsCl8uQShiLDUpKTtYemIocnUoc3UoYikpKSYmdEFiKGMsV3piKHJ1KHN1KGIpKSkpO18uSGsoYiw2KSYmcUFiKGMsXy5BKGIsNikpO1p6YihydShzdShiKSkpJiZyQWIoYyxZemIocnUoc3UoYikpKSk7Xy5IayhiLDQpJiZwQWIoYyxfLkEoYiw0KSk7cmV0dXJue0tlOmMsaWQ6Xy5IeWIsbmFtZToibTdETENlIixxdzphLHBOOmZ1bmN0aW9uKCl7cmV0dXJuIGQudGhlbihmdW5jdGlvbihlKXt2YXIgZj17fTtmb3IobGV0IGcgaW4gYSlmW2ddPWFbZ10oZSk7cmV0dXJuIGZ9KX0sUlQ6ISghXy5BKGIsNykmJiFfLm13YihydShzdShiKSkpKX19fX0pKCksRXdiOntpZDpfLk95YixuYW1lOiJTb0h1N2QiLEZ2OmZ1bmN0aW9uKGEpe3ZhciBiPW5ldyBfLk15YjtpZihfLlhBYihzdShhKSkpe2xldCBkO3ZhciBjPWEuSmYoKT8oZD1fLiRBYihhKSk9PW51bGw/dm9pZCAwOl8uQmooZCxfLk50LDEsXy5udSk6V0FiKHN1KGEpKTtfLlNiKGIsXy5OdCwyLGMpfXJldHVybntLZTpiLGlkOl8uT3liLApuYW1lOiJTb0h1N2QiLFJUOiEhXy5BKGEsMjYpfX19LHB6Yjp7aWQ6Xy5aeWIsbmFtZToib1NKZEtkIixGdjpmdW5jdGlvbihhKXt2YXIgYj1uZXcgXy5TeWI7aWYoXy5raihhLF8uY3UsMjcpKXt2YXIgYz1hLkpmKCk/Xy5CaihhLF8uY3UsMjcsXy5udSk6Xy5DaihhLF8uY3UsMjcpO18uU2IoYixfLmN1LDEwLGMpfV8ua2ooYSxfLmN1LDIyKSYmKGM9YS5KZigpP18uQmooYSxfLmN1LDIyLF8ubnUpOl8uQ2ooYSxfLmN1LDIyKSxfLlNiKGIsXy5jdSw4LGMpKTtfLkhrKGEsMjQpJiYoYz1fLkEoYSwyNCksXy4kaChiLDksYykpO2pBYihxdShzdShhKSkpJiYoYz1xdShzdShhKSkuTmMoKSxfLmZoKGIsMyxjKSk7aUFiKHF1KHN1KGEpKSkmJihjPXF1KHN1KGEpKS54ZCgpLF8uZmgoYiwyLGMpKTtfLmtqKGEsXy5jdSwyMCkmJihjPWEuSmYoKT9fLkJqKGEsXy5jdSwyMCxfLm51KTpfLkNqKGEsXy5jdSwyMCksXy5TYihiLF8uY3UsNyxjKSk7Yz1zdShhKTtfLndlKGMsNikmJihjPXN1KGEpLmdldEluZGV4KCksCl8ubGsoYiw1LGMpKTtfLmtqKGEsXy5GdCwxNykmJihjPWEuSmYoKT9fLkJqKGEsXy5GdCwxNyxfLm51KTpfLkNqKGEsXy5GdCwxNyksXy5TYihiLF8uRnQsNixjKSk7aWYoVEFiKHF1KHN1KGEpKSkpe3ZhciBkO2xldCBlO2M9YS5KZigpPyhkPV8uJEFiKGEpKT09bnVsbD92b2lkIDA6KGU9S0FiKGQpKT09bnVsbD92b2lkIDA6VUFiKGUpOlNBYihxdShzdShhKSkpO18uU2IoYixfLkJ0LDEsYyl9Xy5IayhhLDQpJiYoZD1fLkEoYSw0KSxfLiRoKGIsNCxkKSk7aWYoZD0hXy5BKGEsOCkpYT1ydShzdShhKSksZD0hXy5BKGEsNik7cmV0dXJue0tlOmIsaWQ6Xy5aeWIsbmFtZToib1NKZEtkIixSVDohZH19fSxuWWE6KCgpPT57dmFyIGE9WUFiLm5ZYTtyZXR1cm57aWQ6Xy5pemIsbmFtZToidEhaNkxlIixxdzphLEZ2OmZ1bmN0aW9uKGIsYyxkKXtjPW5ldyBfLmF6YjtfLmtqKGIsXy5jdSwyNykmJkZBYihjLGIuSmYoKT9fLkJqKGIsXy5jdSwyNyxfLm51KTpfLkNqKGIsXy5jdSwyNykpOwpfLmtqKGIsXy5jdSwyMikmJkdBYihjLGIuSmYoKT9fLkJqKGIsXy5jdSwyMixfLm51KTpfLkNqKGIsXy5jdSwyMikpO18ucGgoYiwzKSYmdUFiKGMsYi5OYygpKTtpQWIocXUoc3UoYikpKSYmd0FiKGMscXUoc3UoYikpLnhkKCkpO18ua2ooYixfLmN1LDIwKSYmSEFiKGMsYi5KZigpP18uQmooYixfLmN1LDIwLF8ubnUpOl8uQ2ooYixfLmN1LDIwKSk7Xy5raihiLF8uRnQsMTcpJiZKQWIoYyxiLkpmKCk/Xy5CaihiLF8uRnQsMTcsXy5udSk6Xy5DaihiLF8uRnQsMTcpKTtpZihUQWIocXUoc3UoYikpKSl7bGV0IGUsZjtQQWIoYyxiLkpmKCk/KGU9Xy4kQWIoYikpPT1udWxsP3ZvaWQgMDooZj1LQWIoZSkpPT1udWxsP3ZvaWQgMDpVQWIoZik6U0FiKHF1KHN1KGIpKSkpfV8uSGsoYiw0KSYmdkFiKGMsXy5BKGIsNCkpO3JldHVybntLZTpjLGlkOl8uaXpiLG5hbWU6InRIWjZMZSIscXc6YSxwTjpmdW5jdGlvbigpe3JldHVybiBkLnRoZW4oZnVuY3Rpb24oZSl7dmFyIGY9e307Zm9yKGxldCBnIGluIGEpZltnXT0KYVtnXShlKTtyZXR1cm4gZn0pfSxSVDohKCFfLkEoYiwxMCkmJiFhQWIocnUoc3UoYikpKSl9fX19KSgpLEZiYjooKCk9Pnt2YXIgYT1ZQWIuRmJiO3JldHVybntpZDpfLnN6YixuYW1lOiJWYU9NVmUiLHF3OmEsRnY6ZnVuY3Rpb24oYixjLGQpe2M9bmV3IF8ubHpiO18ua2ooYixfLmN1LDI3KSYmQ0FiKGMsYi5KZigpP18uQmooYixfLmN1LDI3LF8ubnUpOl8uQ2ooYixfLmN1LDI3KSk7Xy5raihiLF8uY3UsMjIpJiZEQWIoYyxiLkpmKCk/Xy5CaihiLF8uY3UsMjIsXy5udSk6Xy5DaihiLF8uY3UsMjIpKTtqQWIocXUoc3UoYikpKSYmeEFiKGMscXUoc3UoYikpLk5jKCkpO2ZBYihPQWIocXUoc3UoYikpKSkmJkFBYihjLGVBYihPQWIocXUoc3UoYikpKSkpO18ua2ooYixfLmN1LDIwKSYmRUFiKGMsYi5KZigpP18uQmooYixfLmN1LDIwLF8ubnUpOl8uQ2ooYixfLmN1LDIwKSk7Xy5raihiLF8uRnQsMTcpJiZJQWIoYyxiLkpmKCk/Xy5CaihiLF8uRnQsMTcsXy5udSk6Xy5DaihiLF8uRnQsCjE3KSk7aEFiKE9BYihxdShzdShiKSkpKSYmQkFiKGMsZ0FiKE9BYihxdShzdShiKSkpKSk7ZEFiKE9BYihxdShzdShiKSkpKSYmekFiKGMsY0FiKE9BYihxdShzdShiKSkpKSk7Xy5IayhiLDQpJiZ5QWIoYyxfLkEoYiw0KSk7cmV0dXJue0tlOmMsaWQ6Xy5zemIsbmFtZToiVmFPTVZlIixxdzphLHBOOmZ1bmN0aW9uKCl7cmV0dXJuIGQudGhlbihmdW5jdGlvbihlKXt2YXIgZj17fTtmb3IobGV0IGcgaW4gYSlmW2ddPWFbZ10oZSk7cmV0dXJuIGZ9KX0sUlQ6ISghXy5BKGIsMTIpJiYhYkFiKHJ1KHN1KGIpKSkpfX19fSkoKSx1Y2I6e2lkOl8uenpiLG5hbWU6IlI4ZE1LYiIsRnY6ZnVuY3Rpb24oYSl7dmFyIGI9bmV3IF8udXpiO2lmKF8ucGgoYSwzKSl7dmFyIGM9YS5OYygpO18uZmgoYiwxLGMpfWlmKF8uWEFiKHN1KGEpKSl7dmFyIGQ7Yz1hLkpmKCk/KGQ9Xy4kQWIoYSkpPT1udWxsP3ZvaWQgMDpfLkJqKGQsXy5OdCwxLF8ubnUpOldBYihzdShhKSk7Xy5TYihiLF8uTnQsMixjKX1fLkhrKGEsCjQpJiYoZD1fLkEoYSw0KSxfLiRoKGIsMyxkKSk7cmV0dXJue0tlOmIsaWQ6Xy56emIsbmFtZToiUjhkTUtiIixSVDohKCFfLkEoYSw1KSYmIVd6YihydShzdShhKSkpKX19fSx2Y2I6e2lkOl8uSHpiLG5hbWU6Im5JcGZyYyIsRnY6ZnVuY3Rpb24oYSl7dmFyIGI9bmV3IF8uQ3piO2lmKF8uSGsoYSw3KSl7dmFyIGM9Xy5BKGEsNyk7Xy4kaChiLDUsYyl9Yz1ydShzdShhKSk7Xy5IayhjLDMpJiYoYz1fLm13YihydShzdShhKSkpLF8uJGgoYiw2LGMpKTtfLnBoKGEsMykmJihjPWEuTmMoKSxfLmZoKGIsMSxjKSk7aWYoXy5YQWIoc3UoYSkpKXt2YXIgZDtjPWEuSmYoKT8oZD1fLiRBYihhKSk9PW51bGw/dm9pZCAwOl8uQmooZCxfLk50LDEsXy5udSk6V0FiKHN1KGEpKTtfLlNiKGIsXy5OdCwyLGMpfU9BYihxdShzdShhKSkpLkJvYSgpJiYoZD1PQWIocXUoc3UoYSkpKSxkPV8udChkLDEpLF8uZmgoYiw0LGQpKTtfLkhrKGEsNCkmJihkPV8uQShhLDQpLF8uJGgoYiwzLGQpKTtyZXR1cm57S2U6YiwKaWQ6Xy5IemIsbmFtZToibklwZnJjIixSVDohKCFfLkEoYSw2KSYmIVl6YihydShzdShhKSkpKX19fSxxQ2I6e2lkOl8uTnpiLG5hbWU6ImhDVlRsZSIsRnY6ZnVuY3Rpb24oYSl7dmFyIGI9bmV3IF8uS3piO2lmKGpBYihxdShzdShhKSkpKXt2YXIgYz1xdShzdShhKSkuTmMoKTtfLmZoKGIsMyxjKX1pQWIocXUoc3UoYSkpKSYmKGM9cXUoc3UoYSkpLnhkKCksXy5maChiLDIsYykpO2lmKFRBYihxdShzdShhKSkpKXt2YXIgZDtsZXQgZTtjPWEuSmYoKT8oZD1fLiRBYihhKSk9PW51bGw/dm9pZCAwOihlPUtBYihkKSk9PW51bGw/dm9pZCAwOlVBYihlKTpTQWIocXUoc3UoYSkpKTtfLlNiKGIsXy5CdCwxLGMpfV8uSGsoYSw0KSYmKGQ9Xy5BKGEsNCksXy4kaChiLDQsZCkpO2lmKGQ9IV8uQShhLDIzKSlhPXJ1KHN1KGEpKSxkPSFfLkEoYSwxMik7cmV0dXJue0tlOmIsaWQ6Xy5OemIsbmFtZToiaENWVGxlIixSVDohZH19fSxxRGI6e2lkOl8uVXpiLG5hbWU6IlpkbmpwZCIsRnY6ZnVuY3Rpb24oYSl7dmFyIGI9Cm5ldyBfLlB6YixjPVZBYihxdShzdShhKSkpO18ucGgoYywxMSkmJihjPV8uSnQoVkFiKHF1KHN1KGEpKSkpLF8uZmgoYiwxLGMpKTtfLkhrKGEsMTUpJiYoYz1fLkEoYSwxNSksXy4kaChiLDIsYykpO2lmKGM9IV8uQShhLDExKSlhPXJ1KHN1KGEpKSxjPSFfLkEoYSwxMCk7cmV0dXJue0tlOmIsaWQ6Xy5VemIsbmFtZToiWmRuanBkIixSVDohY319fX19KTsKfWNhdGNoKGUpe18uX0R1bXBFeGNlcHRpb24oZSl9CnRyeXsKdmFyIGxDYixGQ2IsR0NiLEhDYixJQ2I7Xy5qQ2I9ZnVuY3Rpb24oYSxiKXtyZXR1cm4gXy5IaihhLDEsYil9O18ua0NiPWZ1bmN0aW9uKGEsYil7cmV0dXJuIF8uJGgoYSwxNixiKX07bENiPWZ1bmN0aW9uKGEsYil7Xy4kaChhLDI0LGIpfTtfLm1DYj1mdW5jdGlvbihhLGIpe3JldHVybiBfLiRoKGEsMTIsYil9O18ubkNiPWZ1bmN0aW9uKGEsYil7cmV0dXJuIF8uJGgoYSwxNSxiKX07Xy5vQ2I9ZnVuY3Rpb24oYSxiKXtfLiRoKGEsMjYsYil9O18ucENiPWZ1bmN0aW9uKGEsYil7cmV0dXJuIF8uZmgoYSwxLGIsXy5kYil9O18ucUNiPWZ1bmN0aW9uKGEsYil7cmV0dXJuIF8uJGgoYSw3LGIsXy5kYil9O18uckNiPWZ1bmN0aW9uKGEsYil7cmV0dXJuIF8uWmgoYSwxMyxiLF8uZGIpfTtfLnNDYj1mdW5jdGlvbihhLGIpe3JldHVybiBfLiRoKGEsOCxiLF8uZGIpfTtfLnRDYj1mdW5jdGlvbihhLGIpe3JldHVybiBfLiRoKGEsMTAsYixfLmRiKX07Cl8udUNiPWZ1bmN0aW9uKGEsYil7cmV0dXJuIF8uJGgoYSwxMSxiLF8uZGIpfTtfLnZDYj1mdW5jdGlvbihhLGIpe3JldHVybiBfLiRoKGEsMTIsYixfLmRiKX07Xy53Q2I9ZnVuY3Rpb24oYSxiKXtyZXR1cm4gXy4kaChhLDI4LGIsXy5kYil9O18ueENiPWZ1bmN0aW9uKGEsYil7cmV0dXJuIF8uJGgoYSwyMCxiLF8uZGIpfTtfLnlDYj1mdW5jdGlvbihhLGIpe3JldHVybiBfLiRoKGEsMjIsYixfLmRiKX07Xy56Q2I9ZnVuY3Rpb24oYSl7cmV0dXJuIF8uQShhLDQxLHZvaWQgMCxfLmRiKX07Xy5BQ2I9ZnVuY3Rpb24oYSl7cmV0dXJuIF8uQShhLDQ0LHZvaWQgMCxfLmRiKX07Xy5CQ2I9ZnVuY3Rpb24oYSxiKXtyZXR1cm4gXy4kaChhLDQ0LGIsXy5kYil9O18uQ0NiPWZ1bmN0aW9uKGEpe3JldHVybiBfLlNoKGEsXy5ZdCwzLF8uRnhiKX07Xy5EQ2I9ZnVuY3Rpb24oYSxiKXtyZXR1cm4gXy5TYihhLF8uRnQsMjksYixfLmRiKX07Cl8uRUNiPWZ1bmN0aW9uKGEsYil7cmV0dXJuIF8uU2IoYSxfLkV0LDYsYixfLmRiKX07RkNiPWZ1bmN0aW9uKGEpe3JldHVybiBfLkJqKGEsXy5FdCw2LF8ubnUsXy5kYil9O0dDYj1mdW5jdGlvbihhLGIpe18uU2IoYSxfLkV0LDIsYil9O0hDYj1mdW5jdGlvbihhKXtyZXR1cm4gXy5DaihhLF8uRHQsMyl9O0lDYj1mdW5jdGlvbihhKXtyZXR1cm4gXy5raihhLF8uRHQsMyl9O25ldyBfLkNpKF8uZ3hiKTtfLlpvLmNWbG8wZD1fLllvO18uTnEoXy5neGIsXy5FdCxmdW5jdGlvbihhKXthPV8ucShhLF8uRXQsNik7cmV0dXJuIGEhPW51bGw/W2FdOltdfSk7bmV3IF8uQ2koXy5ZdCk7dmFyIEpDYj1uZXcgXy5WdCgiYzlFNTIiLF8uWXQsXy5neGIsW18ubWksITAsXy5saSwiL0xvY2FsSW1tZXJzaXZlU2VydmljZS5HZXRQaG90b1ZpZXdlciJdKTt2YXIgS0NiPXtkcWE6e1ZvOmE9PmEmJmEubUUmJihhLm1FLkpmKCk/Xy5CaihhLm1FLF8uZkNiLDcsXy5udSk6Xy5DaihhLm1FLF8uZkNiLDcpKXx8dm9pZCAwLHVOOmE9Pnt2YXIgYixjO2lmKGM9YSYmYS5mQylhLmZDLkpmKCk/KGE9Xy5CaihhLmZDLF8uR3hiLDIsXy5udSksYT1hPT1udWxsP3ZvaWQgMDooYj1hLmJVYihfLm51KSk9PW51bGw/dm9pZCAwOl8uQmooYixfLmZDYiw3LF8ubnUpKTooYj1fLnplKGEuZkMsXy5HeGIsMikub2EoKSxhPV8uQ2ooYixfLmZDYiw3KSksYz1hO3JldHVybiBjfHx2b2lkIDB9fX07Xy5MQ2I9Xy5tdSh7VWs6ITEsbmFtZToidTlzdXplIixJazpfLnFCYixwYXJhbXM6e2N0b3I6Xy5HdX0sTWw6W10sZGF0YTp7ZkM6ZnVuY3Rpb24oYSxiLGMpe2lmKF8uT2ooYSwxMywxLF8uZGIpPT0xKXtiPWN8fHt9O2M9Yi5JaXx8InJwYyI7dmFyIGQ9bmV3IF8uVHQsZT1kLnNldFF1ZXJ5LGY9bmV3IF8uUnQsZz1uZXcgXy5neGI7aWYoXy5waChhLDEsXy5kYikpe3ZhciBoPWEuTmMoKTtfLmZoKGcsMSxoKX1fLmtqKGEsXy5FdCw2LF8uZGIpJiYoaD1hLkpmKCk/RkNiKGEpOl8uQ2ooYSxfLkV0LDYsXy5kYiksXy5TYihnLF8uRXQsNixoKSk7Xy5raihhLF8uRnQsMjksXy5kYikmJihoPWEuSmYoKT9fLkJqKGEsXy5GdCwyOSxfLm51LF8uZGIpOl8uQ2ooYSxfLkZ0LDI5LF8uZGIpLF8uU2IoZyxfLkZ0LDEwLGgpKTtfLkhrKGEsNDQsXy5kYikmJihhPV8uQUNiKGEpLF8uJGgoZyw5LGEpKTtfLkdqKGYsMixfLlN0LGcpO2UuY2FsbChkLGYpO2E9e2ZhdGFsOiEwLFZwOlt7a2V5Ol8uUHIsCnZhbHVlOm5ldyBfLnB1fSx7a2V5Ol8uUXIsdmFsdWU6bmV3IF8ucHV9XX07bGV0IGs7Zm9yKGsgaW4gYilhW2tdPWJba107cmV0dXJue1prOl8uSXhiLElpOmMsTG86ZCxtZXRhZGF0YTphfX19LG1FOmZ1bmN0aW9uKGEsYixjKXtpZihfLk9qKGEsMTMsMSxfLmRiKT09Mil7Yj1jfHx7fTtjPWIuSWl8fCJycGMiO3ZhciBkPW5ldyBfLmd4YjtpZihfLnBoKGEsMSxfLmRiKSl7dmFyIGU9YS5OYygpO18uZmgoZCwxLGUpfV8ua2ooYSxfLkV0LDYsXy5kYikmJihlPWEuSmYoKT9GQ2IoYSk6Xy5DaihhLF8uRXQsNixfLmRiKSxfLlNiKGQsXy5FdCw2LGUpKTtfLmtqKGEsXy5ZcywzNixfLmRiKSYmKGU9YS5KZigpP18uQmooYSxfLllzLDM2LF8ubnUsXy5kYik6Xy5DaihhLF8uWXMsMzYsXy5kYiksXy5TYihkLF8uWXMsOCxlKSk7Xy5raihhLF8uRnQsMjksXy5kYikmJihlPWEuSmYoKT9fLkJqKGEsXy5GdCwyOSxfLm51LF8uZGIpOl8uQ2ooYSxfLkZ0LDI5LF8uZGIpLF8uU2IoZCxfLkZ0LAoxMCxlKSk7Xy5IayhhLDQ0LF8uZGIpJiYoYT1fLkFDYihhKSxfLiRoKGQsOSxhKSk7YT17ZmF0YWw6ITAsVnA6W3trZXk6Xy5Qcix2YWx1ZTpuZXcgXy5wdX0se2tleTpfLlFyLHZhbHVlOm5ldyBfLnB1fV19O2xldCBmO2ZvcihmIGluIGIpYVtmXT1iW2ZdO3JldHVybntaazpKQ2IsSWk6YyxMbzpkLG1ldGFkYXRhOmF9fX19LEtsOigpPT4oe3ZhcmlhbnQ6bnVsbCxxazpbXSx6azp7ZHFhOl8uWkFifX0pLEhsOktDYixjaGlsZHJlbjp7ZHFhOigoKT0+e3ZhciBhPUtDYi5kcWE7cmV0dXJue2lkOl8ucEJiLG5hbWU6IlV5YVBVYyIscXc6YSxGdjpmdW5jdGlvbihiLGMsZCl7Yz1uZXcgXy50dTtfLmtqKGIsXy5jdSw0OSxfLmRiKSYmXy5sQmIoYyxiLkpmKCk/Xy5CaihiLF8uY3UsNDksXy5udSxfLmRiKTpfLkNqKGIsXy5jdSw0OSxfLmRiKSk7aWYoSUNiKF8uemUoYixfLkV0LDYsXy5kYikpKXtsZXQgZTtfLmFCYihjLGIuSmYoKT8oZT1GQ2IoYikpPT1udWxsP3ZvaWQgMDpfLkJqKGUsCl8uRHQsMyxfLm51KTpIQ2IoXy56ZShiLF8uRXQsNixfLmRiKSkpfV8ua2ooYixfLmN1LDM3LF8uZGIpJiZfLmtCYihjLGIuSmYoKT9fLkJqKGIsXy5jdSwzNyxfLm51LF8uZGIpOl8uQ2ooYixfLmN1LDM3LF8uZGIpKTtfLkhrKGIsNDAsXy5kYikmJmxDYihjLF8uQShiLDQwLHZvaWQgMCxfLmRiKSk7Xy5waChiLDEsXy5kYikmJl8uYkJiKGMsYi5OYygpKTtfLmtqKGIsXy5jdSwzNCxfLmRiKSYmXy5qQmIoYyxiLkpmKCk/Xy5CaihiLF8uY3UsMzQsXy5udSxfLmRiKTpfLkNqKGIsXy5jdSwzNCxfLmRiKSk7Xy5raihiLF8uRXQsNixfLmRiKSYmR0NiKGMsYi5KZigpP0ZDYihiKTpfLkNqKGIsXy5FdCw2LF8uZGIpKTtfLmtqKGIsXy5GdCwyOSxfLmRiKSYmXy5tQmIoYyxiLkpmKCk/Xy5CaihiLF8uRnQsMjksXy5udSxfLmRiKTpfLkNqKGIsXy5GdCwyOSxfLmRiKSk7Xy5IayhiLDI4LF8uZGIpJiZfLmtDYihjLF8uQShiLDI4LHZvaWQgMCxfLmRiKSk7Xy5IayhiLDIxLF8uZGIpJiZfLmdCYihjLApfLkEoYiwyMSx2b2lkIDAsXy5kYikpO18uSGsoYiwyNCxfLmRiKSYmXy5tQ2IoYyxfLkEoYiwyNCx2b2lkIDAsXy5kYikpO18uSGsoYiw0NCxfLmRiKSYmXy5vQ2IoYyxfLkFDYihiKSk7Xy5IayhiLDIwLF8uZGIpJiZfLmhCYihjLF8uQShiLDIwLHZvaWQgMCxfLmRiKSk7Xy5IayhiLDIyLF8uZGIpJiZfLmlCYihjLF8uQShiLDIyLHZvaWQgMCxfLmRiKSk7Xy5IayhiLDgsXy5kYikmJl8uZEJiKGMsXy5BKGIsOCx2b2lkIDAsXy5kYikpO18uSGsoYiwxMSxfLmRiKSYmXy5lQmIoYyxfLkEoYiwxMSx2b2lkIDAsXy5kYikpO18uSGsoYiwzOCxfLmRiKSYmXy5vQmIoYyxfLkEoYiwzOCx2b2lkIDAsXy5kYikpO18uSGsoYiwxMixfLmRiKSYmXy5mQmIoYyxfLkEoYiwxMix2b2lkIDAsXy5kYikpO18uSGsoYiwyMyxfLmRiKSYmXy5uQmIoYyxfLkEoYiwyMyx2b2lkIDAsXy5kYikpO18uSGsoYiwyNyxfLmRiKSYmXy5uQ2IoYyxfLkEoYiwyNyx2b2lkIDAsXy5kYikpO18uY0JiKGMsXy5BKGIsCjcsITAsXy5kYikpO3JldHVybntLZTpjLGlkOl8ucEJiLG5hbWU6IlV5YVBVYyIscXc6YSxwTjpmdW5jdGlvbigpe3JldHVybiBkLnRoZW4oZnVuY3Rpb24oZSl7dmFyIGY9e307Zm9yKGxldCBnIGluIGEpZltnXT1hW2ddKGUpO3JldHVybiBmfSl9fX19fSkoKX19KTsKfWNhdGNoKGUpe18uX0R1bXBFeGNlcHRpb24oZSl9CnRyeXsKdmFyIHB5YjtweWI9ZnVuY3Rpb24oYSxiKXthPShuZXcgXy56byhhKSkuY2xvc2VzdChjPT5fLm5TYShjLGIpKTtyZXR1cm4gYS5zaXplKCk+MD9hLmVsKCk6bnVsbH07Xy5xeWI9ZnVuY3Rpb24oYSxiKXt2YXIgYz1weWIoYSxiKTtyZXR1cm4gYz8oYT1fLmhjKCkua2EsXy4kZihfLmN5YSxhKS50aGVuKGQ9PmQucmVzb2x2ZShjLGIpKSk6UHJvbWlzZS5yZXNvbHZlKG51bGwpfTsKfWNhdGNoKGUpe18uX0R1bXBFeGNlcHRpb24oZSl9CnRyeXsKXy4keGI9ISEoXy5PaVsyOV0+PjIzJjEpO18uYXliPSEhKF8uT2lbMjldPj4yNCYxKTtfLmJ5Yj0hIShfLk9pWzI5XT4+MjkmMSk7Cn1jYXRjaChlKXtfLl9EdW1wRXhjZXB0aW9uKGUpfQp0cnl7Cl8ubmYoXy5PWWEpOwp9Y2F0Y2goZSl7Xy5fRHVtcEV4Y2VwdGlvbihlKX0KdHJ5ewpfLkVmYj1mdW5jdGlvbihhLGIpe2I9Yi5kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJhIik7Xy5YYyhiLF8uRGMoYSl8fF8uRWMpO3JldHVybiBiLmhyZWZ9O18uRmZiPWZ1bmN0aW9uKGEpe3RyeXtyZXR1cm4gXy5sZChhKX1jYXRjaChiKXtyZXR1cm4gXy5mYShiKSxudWxsfX07Cn1jYXRjaChlKXtfLl9EdW1wRXhjZXB0aW9uKGUpfQp0cnl7Cl8udSgiemJNTDNjIik7CnZhciBYQ2IsWkNiLCRDYixhRGIsYkRiLGNEYixkRGIsZURiLGZEYixnRGIsaERiLGlEYjtYQ2I9ZnVuY3Rpb24oYSl7dGhpcy5hUmM9YX07Xy5ZQ2I9ZnVuY3Rpb24oYSxiPXt9KXt2YXIgYz1fLmhjKCkua2E7cmV0dXJuIF8uR3VhKGEsbmV3IF8uSHVhKHtMcThES2U6Yn0pLGMpfTtaQ2I9ZnVuY3Rpb24oYSl7cmV0dXJuYC9zZWFyY2h2aWV3ZXIvJHthfWB9OyRDYj1mdW5jdGlvbihhLGIsYyl7cmV0dXJue2luc3RhbmNlSWQ6YSxuZ2I6Yix2aWV3SWQ6Y319O2FEYj1mdW5jdGlvbihhLGIsYyl7aWYoXy5ma2EoYSkhPV8uZmthKGIpKXJldHVybiExO2lmKCFfLnJaYS53VmIoKSlyZXR1cm4hMDthPWMubWF0Y2goYSk7Yj1jLm1hdGNoKGIpO3JldHVybiBhIT09bnVsbCYmYiE9PW51bGwmJmEudmlld0lkPT09Yi52aWV3SWQmJmEucGF0aD09PWIucGF0aH07YkRiPWZ1bmN0aW9uKGEsYil7Yj1uZXcgXy5vb2Ioe0ExOmJ9KTthLmthPW5ldyBfLnlvYihbYl0pfTsKY0RiPWZ1bmN0aW9uKGEsYil7dmFyIGM9L1xkK3xcRCsvZztpZihhPT1iKXJldHVybiAwO2lmKCFhKXJldHVybi0xO2lmKCFiKXJldHVybiAxO3ZhciBkPWEudG9Mb3dlckNhc2UoKS5tYXRjaChjKSxlPWIudG9Mb3dlckNhc2UoKS5tYXRjaChjKSxmPU1hdGgubWluKGQubGVuZ3RoLGUubGVuZ3RoKTtmb3IobGV0IGc9MDtnPGY7ZysrKXtjPWRbZ107bGV0IGg9ZVtnXTtpZihjIT1oKXJldHVybiBhPXBhcnNlSW50KGMsMTApLCFpc05hTihhKSYmKGI9cGFyc2VJbnQoaCwxMCksIWlzTmFOKGIpJiZhLWIpP2EtYjpjPGg/LTE6MX1yZXR1cm4gZC5sZW5ndGghPWUubGVuZ3RoP2QubGVuZ3RoLWUubGVuZ3RoOmE8Yj8tMToxfTsKXy5ab2I9Y2xhc3N7Y29uc3RydWN0b3IoYSl7KHRoaXMub2E9YSl8fF8uZmEoRXJyb3IoInFmIikpfVZ1KCl7cmV0dXJuIHRoaXMub2EuVnUoKX1nZXRVc2VyRGF0YSgpe3JldHVybiB0aGlzLm9hLmdldFVzZXJEYXRhKCl9Z2V0Um9vdCgpe3JldHVybiB0aGlzLm9hLmdldFJvb3QoKX1nZXRUaXRsZSgpe3JldHVybiB0aGlzLm9hLmdldFRpdGxlKCl9c2V0VGl0bGUoYSl7dGhpcy5vYS5zZXRUaXRsZShhKX1pc0FjdGl2ZSgpe3JldHVybiB0aGlzLm9hLmlzQWN0aXZlKCl9bWF0Y2hlcyhhKXtyZXR1cm4gdGhpcy5vYS5tYXRjaGVzKGEpfW5vdGlmeShhLGIpe3RoaXMub2Eubm90aWZ5KGEsYil9dG9TdHJpbmcoKXtyZXR1cm4gdGhpcy5vYS50b1N0cmluZygpfX07ZERiPWZ1bmN0aW9uKGEsYil7YS5HYT1iO2EuZ2V0Um9vdCgpLnRyaWdnZXIoIlRTcFdhZiIsYS5CYSl9OwplRGI9Y2xhc3N7Y29uc3RydWN0b3IoYSxiLGM9IiIsZD0hMSl7dGhpcy5rYT1hLnZpZXdJZDt0aGlzLm9hPWEuaW5zdGFuY2VJZDt0aGlzLkdhPWEuVnUoKTt0aGlzLklhPWEudXNlckRhdGF8fHt9O3RoaXMuQWE9Yjt0aGlzLkVhPWM7dGhpcy5LYT1kO3RoaXMud2E9ITE7dGhpcy5CYT1uZXcgXy5ab2IodGhpcyk7dGhpcy5XaT1udWxsfVZ1KCl7cmV0dXJuIHRoaXMuR2F9Z2V0VXNlckRhdGEoKXtyZXR1cm4gdGhpcy5JYX1nZXRSb290KCl7cmV0dXJuIHRoaXMuQWF9Z2V0VGl0bGUoKXtyZXR1cm4gdGhpcy5FYX1zZXRUaXRsZShhKXt0aGlzLndhJiYoXy5XZCh0aGlzLkFhLmVsKCkpLnRpdGxlPWEpO3RoaXMuRWE9YX1pc0FjdGl2ZSgpe3JldHVybiB0aGlzLndhfW1hdGNoZXMoYSl7cmV0dXJuIHRoaXMua2E9PWEudmlld0lkJiZ0aGlzLm9hPT1hLmluc3RhbmNlSWR9cmVzdW1lKCl7dGhpcy53YT0hMDt0aGlzLm5vdGlmeSgiSUJCMDNiIix0aGlzLkJhKTtfLldkKHRoaXMuQWEuZWwoKSkudGl0bGU9CnRoaXMuRWF9cGF1c2UoKXt0aGlzLndhPSExO3RoaXMubm90aWZ5KCJKWkNzd2MiLHRoaXMuQmEpfW5vdGlmeShhLGIpe18uWmcodGhpcy5BYS5lbCgpLGEsYil9dG9TdHJpbmcoKXtyZXR1cm4iVmlldzwiK3RoaXMua2ErIiwiK3RoaXMub2ErIiwiK3RoaXMuR2ErIj4ifX07Cl8uWW9iPWNsYXNze2NvbnN0cnVjdG9yKGEsYixjLGQsZSxmLGcsaD0hMSxrPSExLG0pe3RoaXMudmlld0lkPWEudmlld0lkO3RoaXMuaW5zdGFuY2VJZD1iO3RoaXMud2E9Yzt0aGlzLnVzZXJEYXRhPWQ7dGhpcy5tYXRjaD1hO3RoaXMubVA9ZTt0aGlzLmthPWY7dGhpcy50MT1nO3RoaXMub2E9aDt0aGlzLkJhPWs7dGhpcy5ldmVudD1tfUFhKGEsYil7aWYoIWIpe2xldCBjPShuZXcgXy56byhhKSkuZmluZCgidmlldy1oZWFkZXIgdGl0bGUiKS5WYigpO2MmJihiPWMpfXJldHVybihuZXcgZURiKHRoaXMsXy5FbyhhKSxiLHRoaXMuQmEpKS5CYX1WdSgpe3JldHVybiB0aGlzLndhfVhaKCl7cmV0dXJuIHRoaXMua2EgaW5zdGFuY2VvZiBfLmpmYn19O2ZEYj1fLmRjKF8uR3UpO2dEYj1fLmRjKF8uVENiKTsKaERiPWNsYXNzIGV4dGVuZHMgXy5vb2J7Y29uc3RydWN0b3IoKXsoe0ExOmMscmVuZGVyZXI6YixTNDphfT17QTE6WyIvc2hvcHBpbmcvb2ZmZXJzIl0scmVuZGVyZXI6Xy5QQ2IsUzQ6Xy5PQ2J9KTt2YXIgYSxiLGM7c3VwZXIoe0ExOmMseVlhOiEwfSwhMCk7dGhpcy5yZW5kZXJlcj1iO3RoaXMuUzQ9YX19O2lEYj1jbGFzc3tmZXRjaChhLGIsYyxkLGUpe3JldHVybiBhIGluc3RhbmNlb2YgaERiP2EuUzQ/KGQ9Xy5oYygpLmthLF8uJGYoYS5TNCxkKS50aGVuKGY9Pnt2YXIgZz1uZXcgXy5IdWEoYiksaD1mLlRnYShnLGMsZSk7Zj1mLmdldFN0YXRlKGcsYyk7cmV0dXJuIF8uWUNiKGEucmVuZGVyZXIse1RnYTpoLHN0YXRlOmYsZXZlbnQ6ZX0pfSkpOl8uWUNiKGEucmVuZGVyZXIse2V2ZW50OmV9KTpudWxsfX07Xy4kbihfLmZwYixuZXcgaURiKTt2YXIgakRiPVtaQ2IoNyksWkNiKDQ3KSxaQ2IoNDkpLFpDYigxMCksWkNiKDc3KSxaQ2IoNTApXTtfLiR4YiYmakRiLnB1c2goIi9pbWdyZXMiKTtuZXcgXy5vb2Ioe0ExOmpEYixaJGE6WzFdLHlZYTohMH0sITApO3ZhciBrRGI9Y2xhc3MgZXh0ZW5kcyBfLm9vYntjb25zdHJ1Y3Rvcih7QTE6YSxRWmE6YixyUWE6YyxXQmE6ZH0pe3N1cGVyKHtBMTphLHlZYTohMCxRWmE6YixXQmE6ZH0sITApO3RoaXMuclFhPWN9fSxsRGI9Y2xhc3N7ZmV0Y2goYSxiLGMsZCxlLGYpe2lmKCEoYSBpbnN0YW5jZW9mIGtEYikpcmV0dXJuIG51bGw7Yj1uZXcgXy5IdWEoYik7dmFyIGc9YS5yUWEoYik7cmV0dXJuIF8uJGYoXy5HcSxmKS50aGVuKGg9PmguWkQoYS5rYSxnKS5BYShkKS5mZXRjaCgpKS50aGVuKGg9PntoPXtyZW5kZXJlcjpofTt2YXIgaz1lJiZlLnRhcmdldDtrJiYoaC5ieGM9ayk7cmV0dXJuIF8uR3VhKF8uTkNiLG5ldyBfLkh1YSh7ZjNzTVBlOmh9LHZvaWQgMCx2b2lkIDAsZiksZikudGhlbigpfSl9fTtfLiRuKF8uZnBiLG5ldyBsRGIpO25ldyBrRGIoe0ExOlsiL2xvY2FsL3BsYWNlL2ZpZC86aWQvcGhvdG92aWV3ZXIiXSxRWmE6Xy5MQ2IsclFhKCl7cmV0dXJuIGZEYigobmV3IF8ua3UoXy5sdSgpLnRvU3RyaW5nKCkpKS5zZWFyY2hQYXJhbXMuZ2V0KCJwdnNwIil8fCIiKX19KTtuZXcgaERiO25ldyBrRGIoe0ExOlsiL2xvY2FsL3BsYWNlL21lbnUiXSxRWmE6Xy5WQ2IsclFhKCl7cmV0dXJuIGdEYigobmV3IF8ua3UoXy5sdSgpLnRvU3RyaW5nKCkpKS5zZWFyY2hQYXJhbXMuZ2V0KCJtZ3NwIil8fCIiKX19KTt2YXIgbURiPWNsYXNzIGV4dGVuZHMgXy5aZHtjb25zdHJ1Y3RvcihhLGIpe3N1cGVyKGEpO3RoaXMucmVxdWVzdD1iO3ZhciBjO3RoaXMudmlld0lkPShjPWI9PW51bGw/dm9pZCAwOmIudmlld0lkKSE9bnVsbD9jOmI7dmFyIGQsZTt0aGlzLkNmYT0oZT1iPT1udWxsP3ZvaWQgMDooZD1iLlZ1KT09bnVsbD92b2lkIDA6ZC5jYWxsKGIpKSE9bnVsbD9lOnZvaWQgMDt2YXIgZjt0aGlzLnVzZXJEYXRhPShmPWI9PW51bGw/dm9pZCAwOmIudXNlckRhdGEpIT1udWxsP2Y6dm9pZCAwO3ZhciBnO3RoaXMubVA9KGc9Yj09bnVsbD92b2lkIDA6Yi5tUCkhPW51bGw/Zzp2b2lkIDA7dmFyIGg7dGhpcy5qZz0oaD1iPT1udWxsP3ZvaWQgMDpiLmV2ZW50KSE9bnVsbD9oOnZvaWQgMH1wcmV2ZW50RGVmYXVsdCgpe3N1cGVyLnByZXZlbnREZWZhdWx0KCk7dGhpcy5qZyYmdGhpcy5qZy5wcmV2ZW50RGVmYXVsdCgpfX0sbkRiPW5ldyBfLllkKCJORFV4amQiKSxvRGI9bmV3IF8uWWQoIm1hRXljIiksCnBEYj1uZXcgXy5ZZCgiWE9rM2FiIik7Xy5uZihfLk1ZYSk7dmFyIHFEYj1mdW5jdGlvbihhLGIpe2I9Yls3XTtpZighYilyZXR1cm4gbnVsbDthOntpZighYS5rYSl7bGV0IGM9Xy5yWmEuTFRiKCk7aWYoIWMpe2E9bnVsbDticmVhayBhfWEua2E9bmV3IFJlZ0V4cCgiKCZ8XikiK2MrIj0oW14mXSopIil9YT1hLmthfXJldHVybiBhPyhiPWIubWF0Y2goYSkpP2JbMl06bnVsbDpudWxsfSxyRGI9Y2xhc3N7Y29uc3RydWN0b3IoYSl7dGhpcy5vYT1hO3RoaXMua2E9dm9pZCAwfW1hdGNoKGEpe2E9Xy5qZChhKTt2YXIgYj1xRGIodGhpcyxhKTtyZXR1cm4gYj90aGlzLm9hLm1hdGNoKGIsYz0+Xy5zb2IoYy52aWV3SWQsMikpOnRoaXMub2EubWF0Y2goYVs1XXx8IiIsYz0+Xy5zb2IoYy52aWV3SWQsMSkpfX07dmFyIHdEYix4RGIsRURiLHlEYixBRGIsQkRiLHREYix1RGIsdkRiLEdEYixORGIsT0RiLFBEYixNRGIsSERiLEZEYixKRGIsS0RiLFNEYixURGIsVkRiLENEYixXRGIsSURiLEREYixYRGIsVURiLFpEYiwkRGIsYUViLFFEYixZRGIsUkRiO18uc0RiPSExO3dEYj1mdW5jdGlvbihhLGIsYyxkLGUsZil7aWYoZClmb3IobGV0IHtpZDpnLEVlYTpofW9mIGQpYS5PYS5oYXMoZyl8fGEuT2Euc2V0KGcsaCksdERiKGEsZyk7YS5JYS5oYXMoYi5pZCkmJihkPWEuSWEuZ2V0KGIuaWQpLHVEYihhLGIuaWQsZC51cmwsZC5zb3VyY2UpKTtjJiYoKGI9dkRiKGEsZSxmKSk/Yi50aGVuKCgpPT57YS5HYS5kaXNwYXRjaEV2ZW50KCJGV2tjZWMiKX0pOmEuR2EuZGlzcGF0Y2hFdmVudCgiRldrY2VjIikpfTt4RGI9ZnVuY3Rpb24oYSxiKXthPWBWJHthLlphKyt9YDtiPV8ub2QoYik7cmV0dXJuICRDYihhLGIpfTsKRURiPWZ1bmN0aW9uKGEpe3ZhciBiPXlEYihhLCgpPT4hMCksYz1fLnpEYihhLGIpLGQ9QURiKGEsYy5uZ2IpO2lmKCFkKXJldHVybiBudWxsO2Mudmlld0lkPWQudmlld0lkO3ZhciBlPW5ldyBfLllvYihkLGMuaW5zdGFuY2VJZCxjLm5nYixiLnVzZXJEYXRhLCExLGEuQmEsdm9pZCAwLCEwLCEwKTtiPV8ueXJhKCJbYy13aXpdW3ZpZXddIixhLkFhKS50aGVuKCgpPT5hLlJhLkdhKGUpKS50aGVuKGc9PntnJiYoQkRiKGEsZyksYS5TYS5vYShnKSk7cmV0dXJuIGd9LGc9PntnLm1lc3NhZ2U9RXJyb3IoInJmYCIrZykubWVzc2FnZTtDRGIoZyk7cmV0dXJuIG51bGx9KTt2YXIgZj1uZXcgRERiKGUsYixhLkthKTthLndhPWY7Yz0oKT0+e2Eud2E9PWYmJihhLndhPW51bGwpfTtiLnRoZW4oYyxjKTtmLnJ1bigpO3JldHVybiBmLmZpbmlzaGVkKCl9O18uekRiPWZ1bmN0aW9uKGEsYil7cmV0dXJuIGEuTmEuZ2V0KGIucHVzaElkKXx8bnVsbH07CnlEYj1mdW5jdGlvbihhLGIpe3JldHVybiBhLm9hLmZpbmQoYz0+e2M9Xy56RGIoYSxjKTtyZXR1cm4hIWMmJmIoYyl9KX07QURiPWZ1bmN0aW9uKGEsYil7dmFyIGM9Yjt2YXIgZD1fLmVrYShjKTtkPT0iIj9jPSEwOihfLmtkKDEsYyk9PW51bGwmJihkPWEub2EuZ2V0Q3VycmVudFVybCgpLGQ9Xy5rZCgxLGQpLGQ9Xy5la2EoZCtjKSksYz1kPT1fLmVrYShhLm9hLmdldEN1cnJlbnRVcmwoKSkpO2lmKCFjKXJldHVybiBudWxsO2I9Xy5vZChfLkVmYihiLGEuQWEpKTsoYT1hLkthLm1hdGNoKGIpKSYmYS52aWV3SWQuQWEmJihhLmpLYz1hLnZpZXdJZCxhLnZpZXdJZD1hLnZpZXdJZC5BVGIoYikpO3JldHVybiBhfTtCRGI9ZnVuY3Rpb24oYSxiKXt2YXIgYz1hLmthO2Eua2E9YjtjJiZjLm9hLnBhdXNlKCk7Yi5vYS5yZXN1bWUoKTtfLlpnKGEuQWEuZG9jdW1lbnQsInFha280ZSIsbmV3IFhDYihiKSl9Owp0RGI9ZnVuY3Rpb24oYSxiKXtpZihhLk9hLmhhcyhiKSYmYS5FYS5oYXMoYikpe2xldCBjPWEuRWEuZ2V0KGIpO18uamUoKCk9PntjKGEuT2EuZ2V0KGIpKX0pO2EuRWEuZGVsZXRlKGIpfX07dURiPWZ1bmN0aW9uKGEsYixjLGQpe2lmKGIhPT1hLm9hLmdldFN0YXRlKCkuaWQpYS5JYS5zZXQoYix7dXJsOmMsc291cmNlOmR9KTtlbHNle3ZhciBlPWEuRWEuZ2V0KGIpO2EuRWEuZGVsZXRlKGIpO2Eub2Eub2EoYyxhLm9hLmdldFN0YXRlKCkudXNlckRhdGEsZHx8YS5CYSkudGhlbihmPT57YS5JYS5kZWxldGUoYik7ZSYmYS5FYS5zZXQoZi5pZCxlKTt0RGIoYSxmLmlkKX0sKCk9PnthLkVhLnNldChiLGUpfSl9fTsKdkRiPWZ1bmN0aW9uKGEsYixjKXt2YXIgZD1hLm9hLmdldEN1cnJlbnRVcmwoKSxlPV8ub2QoZCksZj1hLmthP2Eua2EuVnUoKTpudWxsO2lmKGU9PWZ8fGEud2EmJmEud2Eua2E9PWUpYS53YSYmYS53YS5rYSE9ZSYmRkRiKGEpO2Vsc2V7RkRiKGEpO2xldCBnPUFEYihhLGUpO2lmKGY9eURiKGEsaD0+e3ZhciBrPWchPW51bGwmJmcudmlld0lkLkdhJiZnLnZpZXdJZD09PWgudmlld0lkO3JldHVybiBoLm5nYj09PWV8fGt9KSl7bGV0IGg9Xy56RGIoYSxmKTtyZXR1cm4gR0RiKGEsZCxmLnVzZXJEYXRhLGguaW5zdGFuY2VJZCx2b2lkIDAsITAsdm9pZCAwLGIsYyl9Zj1hLm9hLmdldFN0YXRlKCl8fHt9O3JldHVybiBHRGIoYSxkLGYudXNlckRhdGEsdm9pZCAwLHZvaWQgMCwhMCx2b2lkIDAsYixjKX1yZXR1cm4gbnVsbH07CkdEYj1mdW5jdGlvbihhLGIsYyxkLGUsZj0hMSxnLGgsayl7dmFyIG09aCBpbnN0YW5jZW9mIF8uamZiO2IuaW5kZXhPZigiIyIpPT0wJiZhLmthJiYoYj1fLmZrYShhLmthLlZ1KCkpK2IpO3ZhciBuPUFEYihhLGIpO2lmKCFuKXJldHVybiBudWxsO2I9Xy5vZChfLkVmYihiLGEuQWEpKTtrPT09dm9pZCAwJiYoaz0hZHx8Y0RiKGQsYS5rYS5vYS5vYSk+MCk7dmFyIHA9SERiKGEsYik7ZD1wP2Eua2Eub2Eub2E6ZHx8YFYke2EuWmErK31gO2I9bmV3IF8uWW9iKG4sZCxiLGMsayxofHxhLkJhLGUsZix2b2lkIDAsZyk7aWYoYS53YSYmSURiKGEud2EsYikpcmV0dXJuIGEud2EuZmluaXNoZWQoKTtGRGIoYSk7cmV0dXJuIGEuR2EuZGlzcGF0Y2hFdmVudChuZXcgbURiKG5EYixiKSk/cD9KRGIoYSxiLG0pOm18fGEua2EmJmEua2Eub2Eua2EuR2F8fCEocD15RGIoYSwoKT0+ITApKXx8cC5pZD09YS5vYS5nZXRTdGF0ZSgpLmlkP0tEYihhLGIsbSk6S0RiKGEsYixtLHApOm51bGx9OwpfLkxEYj1mdW5jdGlvbihhLGIsYyl7dmFyIGQ9YS5BYS5sb2NhdGlvbjthPV8uRWZiKGIsYS5BYSk7Yz9fLmhkKGQsXy5GYyhhKSk6Xy5nZChkLF8uRmMoYSkpfTtORGI9ZnVuY3Rpb24oYSxiLGMsZD1hLkJhKXtpZihiKXtjPV8uekRiKGEsYik7bGV0IGU9Yi51c2VyRGF0YSx7aW5zdGFuY2VJZDpmfT1jfHx7fSxnPU1EYihhLGIpO3JldHVybiBfLkRnKGEub2EuQWEoYi5pZCxkKSkudGhlbigoKT0+R0RiKGEsZyxlLGYsdm9pZCAwLCExLHZvaWQgMCxkKSxoPT57Q0RiKGgpO3JldHVybiBHRGIoYSxnLGUsZix2b2lkIDAsITEsdm9pZCAwLGQpfSl9cmV0dXJuIGM/R0RiKGEsYyx2b2lkIDAsdm9pZCAwLHZvaWQgMCwhMCx2b2lkIDAsZCk6bnVsbH07Ck9EYj1mdW5jdGlvbihhLGIpe2lmKF8uc0RiKXt2YXIgYz1udWxsO2lmKGEua2EmJiFhLmthLm9hLkthKXtsZXQgZj0hIXlEYihhLGg9PmguaW5zdGFuY2VJZD09YS5rYS5vYS5vYSksZz0hMTtjPWEub2EuZmluZChoPT57aWYoIWZ8fGcpcmV0dXJuITA7Xy56RGIoYSxoKSYmKGc9ITApO3JldHVybiExfSl9cmV0dXJuIE5EYihhLGMsYix2b2lkIDApfXZhciBkPSEoIWEua2F8fCF5RGIoYSxmPT5mLmluc3RhbmNlSWQ9PWEua2Eub2Eub2EpKSxlPSExO2M9eURiKGEsZj0+ZCYmIWU/KGU9Zi5pbnN0YW5jZUlkPT1hLmthLm9hLm9hLCExKTohMCk7cmV0dXJuIE5EYihhLGMsYix2b2lkIDApfTsKUERiPWZ1bmN0aW9uKGEsYil7dmFyIGM9Xy5vZChfLkVmYihiLGEuQWEpKSxkPSEoIWEua2F8fCF5RGIoYSxnPT5nLmluc3RhbmNlSWQ9PWEua2Eub2Eub2EpKSxlPSExLGY9eURiKGEsZz0+ZCYmIWU/KGU9Zy5pbnN0YW5jZUlkPT1hLmthLm9hLm9hLCExKTpjPT1nLm5nYik7cmV0dXJuIE5EYihhLGYsYix2b2lkIDApfTtNRGI9ZnVuY3Rpb24oYSxiKXtyZXR1cm4gYS5JYS5oYXMoYi5pZCk/YS5JYS5nZXQoYi5pZCkudXJsOmIudXJsfTtIRGI9ZnVuY3Rpb24oYSxiKXtyZXR1cm4gYS5rYT9iPT09YS5rYS5WdSgpP18ubGQoYikhPT1udWxsJiYhXy5yWmEud1ZiKCk6YURiKGIsYS5rYS5WdSgpLGEuS2EpOiExfTtGRGI9ZnVuY3Rpb24oYSl7YS53YSYmYS53YS5jYW5jZWwoKX07CkpEYj1mdW5jdGlvbihhLGIsYyl7dmFyIGQ9KCk9PnthLlJhLkthKGIpO2REYihhLmthLm9hLGIuVnUoKSk7cmV0dXJuIGEua2F9O2lmKGN8fCFiLm1QKXJldHVybiBfLkRnKGQoKSk7Yz0kQ2IoYi5pbnN0YW5jZUlkLF8ub2QoYi5WdSgpKSxiLnZpZXdJZCk7Yz1uZXcgUURiKGIuVnUoKSxiLnVzZXJEYXRhLGIub2EsYi5rYSxhLm9hLHZvaWQgMCx2b2lkIDAsYS5OYSxjKTtjLnJ1bigpO3JldHVybiBjLmZpbmlzaGVkKCkudGhlbigoKT0+ZCgpKX07CktEYj1mdW5jdGlvbihhLGIsYyxkKXtGRGIoYSk7dmFyIGU9bmV3IFJEYihiLGMsYS5vYSxhLk5hLGQpO2Eud2E/Xy5yZyhhLndhLmZpbmlzaGVkKCksKCk9PntlLnJ1bigpfSk6ZS5ydW4oKTt0cnl7dmFyIGY9YS5SYS5zdGFydChiKX1jYXRjaChoKXtyZXR1cm4gU0RiKGEsYixoKSxfLkhoKGgpfWM9ZT9lLmZpbmlzaGVkKCk6Xy5EZygpO2lmKGYudHlwZT09Mil7Xy5MRGIoYSxmLkNmYSxiLm9hKTtsZXQgaD1uZXcgZURiKGIsXy5FbyhfLlNtKCJESVYiKSkpO3JldHVybiBjLnRoZW4oKCk9Pm5ldyBfLlpvYihoKSl9aWYoZi50eXBlPT0wKXtsZXQgaD1mLnZpZXc7Zj1fLkloKFtmLmthLGUuZmluaXNoZWQoKV0pLnRoZW4oKCk9PnthLkdhLmRpc3BhdGNoRXZlbnQobmV3IG1EYihvRGIsYikpO1REYihhLGgpO2EuR2EuZGlzcGF0Y2hFdmVudChuZXcgbURiKHBEYixiKSk7cmV0dXJuIGh9KTt2YXIgZz1uZXcgRERiKGIsZixhLkthKX1lbHNlKGM9Zi5rYSkmJmYua2EudGhlbihoPT57QkRiKGEsCmgpfSksZz1uZXcgVURiKGIsZSxjLGEuU2EsYS5SYSxhLkdhLGEubmIsaD0+VERiKGEsaCksaD0+e1NEYihhLGIsaCl9LGEuS2EpO2cucnVuKCk7Zj1nLmZpbmlzaGVkKCk7Xy5yZyhmLCgpPT57YS53YT09ZyYmKGEud2E9bnVsbCl9KTthLndhPWc7cmV0dXJuIGZ9O1NEYj1mdW5jdGlvbihhLGIsYyl7YS5yYi5oYW5kbGVFcnJvcihiLGMpfHxDRGIoYyl9O1REYj1mdW5jdGlvbihhLGIpe2lmKGIhPWEua2Epe0JEYihhLGIpO2xldCBjPWEuQWEuZG9jdW1lbnQucXVlcnlTZWxlY3RvcigibGlua1tyZWw9Y2Fub25pY2FsXSIpO2MmJl8uWW0oYyk7YT1hLkFhLmRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoImxpbmtbcmVsPWFsdGVybmF0ZV0iKTtmb3IobGV0IGQgb2YgYSlfLlltKGQpfXJldHVybiBifTsKVkRiPWNsYXNze2NvbnN0cnVjdG9yKGEsYixjLGQsZSxmLGcsaCl7dGhpcy5LYT1hO3RoaXMuU2E9Yjt0aGlzLlJhPWQ7dGhpcy5yYj1nO3RoaXMub2E9Yzt0aGlzLkFhPWU7dGhpcy5CYT1mO3RoaXMubmI9aDt0aGlzLkdhPW5ldyBfLmJlO3RoaXMuWmE9MDt0aGlzLmthPXRoaXMud2E9bnVsbDt0aGlzLk5hPW5ldyBNYXA7dGhpcy5FYT1uZXcgTWFwO3RoaXMuT2E9bmV3IE1hcDt0aGlzLklhPW5ldyBNYXA7dGhpcy5QYT1fLkRnKCk7dGhpcy5vYS5hZGRMaXN0ZW5lcigoayxtLHt1c2VySW5pdGlhdGVkOm4sd1U6cCxzb3VyY2U6cixtUDp4fSk9Pnt3RGIodGhpcyxrLG4scCxyLHgpfSk7YT10aGlzLm9hLmdldFN0YXRlKCk7Yz1jLmdldEN1cnJlbnRVcmwoKTsoe3VzZXJEYXRhOmJ9PWF8fHt9KTtkPXhEYih0aGlzLGMpO2E/dGhpcy5OYS5zZXQoYS5wdXNoSWQsZCk6KGM9bmV3IFFEYihjLGIsITAsdGhpcy5CYSx0aGlzLm9hLHZvaWQgMCx2b2lkIDAsdGhpcy5OYSxkKSxjLnJ1bigpLAp0aGlzLlBhPWMuZmluaXNoZWQoKSk7dGhpcy5QYT10aGlzLlBhLnRoZW4oKCk9PkVEYih0aGlzKSl9cmVhZHkoKXtyZXR1cm4gdGhpcy5QYX15UChhLGIsYyxkLGUsZil7cmV0dXJuIEdEYih0aGlzLGEsYix2b2lkIDAsYyxkLGUsZil9cHVzaEFzeW5jKGEsYixjLGQsZSl7Yj17dXNlckRhdGE6Yixzb3VyY2U6ZX07ZCYmKGIuaGlzdG9yeT0icmVwbGFjZSIpOyh7Y29tbWl0dGVkOmF9PXRoaXMubmF2aWdhdGUoYSxiKSk7YS50aGVuKGY9PntjJiYodGhpcy5FYS5zZXQoZixjKSx0RGIodGhpcyxmKSl9KTtyZXR1cm4gYX1uYXZpZ2F0ZShhLGIpe2I9YiE9bnVsbD9iOnt9O2Iuc291cmNlfHwoYi5zb3VyY2U9dGhpcy5CYSk7dmFyIHtjb21taXR0ZWQ6YyxmaW5pc2hlZDpkfT10aGlzLm9hLm5hdmlnYXRlKGEsYik7Yi5oaXN0b3J5IT09InJlcGxhY2UifHwhYXx8dGhpcy53YSYmdGhpcy53YS51cGRhdGVVcmwoYSl8fCF0aGlzLmthfHwoZERiKHRoaXMua2Eub2EsXy5vZCh0aGlzLm9hLmdldEN1cnJlbnRVcmwoKSkpLAooYT1BRGIodGhpcyxhKSkmJmEudmlld0lkPT09dGhpcy5rYS5vYS5rYSYmKHRoaXMua2Eub2Eua2E9YS52aWV3SWQpKTtyZXR1cm57Y29tbWl0dGVkOmMudGhlbihlPT5lLmlkKSxmaW5pc2hlZDpkPT1udWxsP3ZvaWQgMDpkLnRoZW4oZT0+ZS5pZCl9fXBvcChhLGI9ITEsYz10aGlzLkJhKXtyZXR1cm4gXy5EZyhiP3RoaXMub2EuQWEoYSxjKTp0aGlzLm9hLnBvcChhLGMpKX14dSgpe3JldHVybiB0aGlzLmthfWdldEV2ZW50VGFyZ2V0KCl7cmV0dXJuIHRoaXMuR2F9ZmV0Y2goYSl7dmFyIGI9QURiKHRoaXMsYSk7cmV0dXJuIHRoaXMuU2EuZmV0Y2goYi52aWV3SWQsYi5NZmEsYSl9Z2V0Q3VycmVudFVybCgpe3JldHVybiB0aGlzLm9hLmdldEN1cnJlbnRVcmwoKX1nZXRTdGF0ZSgpe3JldHVybiB0aGlzLm9hLmdldFN0YXRlKCl9fTtDRGI9Xy5mYTsKV0RiPWNsYXNze2NvbnN0cnVjdG9yKCl7dGhpcy5rcmE9dGhpcy5OYT0hMTt0aGlzLndhPV8ubGYoKTt0aGlzLndhLnByb21pc2UuY2FuY2VsPSgpPT57dGhpcy5jYW5jZWwoKX19cnVuKCl7dGhpcy5OYXx8KHRoaXMuTmE9ITAsdGhpcy5HYSgpLnRoZW4oYT0+e3RoaXMuVFAoKTt0aGlzLndhLnJlc29sdmUoYSl9LGE9Pnt0aGlzLmtyYXx8KHRoaXMuVFAoKSx0aGlzLndhLnJlc29sdmUodGhpcy5oYW5kbGVFcnJvcihhKS50aGVuKCgpPT57dGhyb3cgbmV3IF8uV2UoXy5wZyhhKSYmYS5tZXNzYWdlP2EubWVzc2FnZToiVW5rbm93biB2aWV3IHRyYW5zaXRpb24gZXJyb3IiKTt9KSkpfSkpfWZpbmlzaGVkKCl7cmV0dXJuIHRoaXMud2EucHJvbWlzZX1UUCgpe3RoaXMua3JhPSEwfWNhbmNlbCgpe2lmKCF0aGlzLmtyYSl7dGhpcy5UUCgpO3RoaXMuSWEoKTt2YXIgYT1uZXcgXy5XZSgidGYiKTt0aGlzLndhLnJlc29sdmUodGhpcy5oYW5kbGVFcnJvcihhKS50aGVuKCgpPT57dGhyb3cgYTsKfSkpfX1JYSgpe31oYW5kbGVFcnJvcigpe3JldHVybiBfLkRnKCl9fTtJRGI9ZnVuY3Rpb24oYSxiKXt2YXIgYz1iLlZ1KCk7aWYoYz09YS5rYSlhPSEwO2Vsc2V7dmFyIGQ7aWYoZD1hRGIoYyxhLmthLGEuT2EpKWQ9YS5rYSxkPV8uRmZiKGMpIT1fLkZmYihkKTthPWQ/YS51cGRhdGVVcmwoYi5WdSgpKTohMX1yZXR1cm4gYX07RERiPWNsYXNzIGV4dGVuZHMgV0Rie2NvbnN0cnVjdG9yKGEsYixjKXtzdXBlcigpO3RoaXMucmVxdWVzdD1hO3RoaXMua2E9YS5WdSgpO3RoaXMubmI9Yjt0aGlzLk9hPWN9R2EoKXtyZXR1cm4gdGhpcy5uYn11cGRhdGVVcmwoYSl7aWYodGhpcy5rcmEpcmV0dXJuITE7dGhpcy5rYT1hO3RoaXMucmVxdWVzdC53YT1hO3JldHVybiEwfX07ClhEYj1mdW5jdGlvbihhLGIsYyl7aWYoYyBpbnN0YW5jZW9mIF8uV2UpdGhyb3cgYzt2YXIgZD1hLnJlcXVlc3Qudmlld0lkOygiZnVuY3Rpb24iPT10eXBlb2YgXy5Ca2ImJmMgaW5zdGFuY2VvZiBfLkJrYnx8YyBpbnN0YW5jZW9mIF8ucWkpJiZkLndhP18uJGYoZC53YS5rYSxhLlBhKS50aGVuKGU9PntlLmhhbmRsZUVycm9yKGIsYyl8fGQud2Euc3RvcFByb3BhZ2F0aW9uKCl8fGEuRWEoYyl9KTphLkVhKGMpO3Rocm93IGM7fTsKVURiPWNsYXNzIGV4dGVuZHMgRERie2NvbnN0cnVjdG9yKGEsYixjLGQsZSxmLGcsaCxrLG0pe3ZhciBuPWIuZmluaXNoZWQoKS50aGVuKCgpPT5kLmZldGNoKGEudmlld0lkLGEubWF0Y2guTWZhLGEuVnUoKSxhLnQxLGEuZXZlbnQsYS5rYSkpLHA9bi50aGVuKHg9Pnt0aGlzLkFhLmRpc3BhdGNoRXZlbnQobmV3IG1EYihvRGIsdGhpcy5yZXF1ZXN0KSk7cmV0dXJuIHRoaXMuQmEucmVuZGVyKHgpfSkscj0oYz9jLnRoZW4oKCk9PnApOnApLnRoZW4oeD0+e3RoaXMuUmEoeCk7dGhpcy5BYS5kaXNwYXRjaEV2ZW50KG5ldyBtRGIocERiLHRoaXMucmVxdWVzdCkpO3JldHVybiB4fSkuSHgoeD0+WERiKHRoaXMsYSx4KSk7c3VwZXIoYSxyLG0pO3RoaXMub2E9Yjt0aGlzLkthPWM7dGhpcy5CYT1lO3RoaXMuQWE9Zjt0aGlzLlBhPWc7dGhpcy5SYT1oO3RoaXMuRWE9azt0aGlzLlNhPW47dGhpcy5aYT1wfUlhKCl7c3VwZXIuSWEoKTt0aGlzLlphLmNhbmNlbCgiUmVuZGVyIHZpZXcgbmF2aWdhdGlvbiBjYW5jZWxsZWQiKTsKdGhpcy5TYS5jYW5jZWwoIlJlbmRlciB2aWV3IG5hdmlnYXRpb24gY2FuY2VsbGVkIik7dGhpcy5LYSBpbnN0YW5jZW9mIF8uU2cmJnRoaXMuS2EuY2FuY2VsKCJSZW5kZXIgdmlldyBuYXZpZ2F0aW9uIGNhbmNlbGxlZCIpO3RoaXMub2EuY2FuY2VsKCl9aGFuZGxlRXJyb3IoYSl7dGhpcy5CYS5jYW5jZWwoYSk7dmFyIGI9WURiKHRoaXMub2EpO3JldHVybiBiPyhhPSgpPT57Yi5ydW4oKTtyZXR1cm4gYi5maW5pc2hlZCgpfSx0aGlzLm9hLmZpbmlzaGVkKCkudGhlbihhLGEpKTpzdXBlci5oYW5kbGVFcnJvcihhKX19O1pEYj1mdW5jdGlvbihhKXt2YXIgYj1hLm9hLmdldFN0YXRlKCk7Yj1iJiZhLkFhPT09Yi5pZD9fLkRnKGIpOl8uRGcoYS5vYS5BYShhLkFhLGEuRWEpKTthLkJhJiZhLmthJiYoYj1iLnRoZW4oYz0+e2EuQmEuZGVsZXRlKGEua2EpO3JldHVybiBjfSkpO3JldHVybiBifTsKJERiPWNsYXNzIGV4dGVuZHMgV0Rie2NvbnN0cnVjdG9yKGEsYixjLGQpe3N1cGVyKCk7dGhpcy5BYT1hO3RoaXMuRWE9Yjt0aGlzLm9hPWM7dGhpcy5CYT1kO3RoaXMua2E9dm9pZCAwfUdhKCl7cmV0dXJuIFpEYih0aGlzKS5IeCgoKT0+bnVsbCl9fTthRWI9ZnVuY3Rpb24oYSl7aWYoYS5SYXx8YS5TYSYmYS5FYSYmXy5vZChhLkVhKT09Xy5vZChhLmthLmdldEN1cnJlbnRVcmwoKSkpe3ZhciBiPWEua2EuZ2V0U3RhdGUoKTtiJiYoYS5BYT1uZXcgUURiKGIudXJsLGIudXNlckRhdGEsITAsYS5CYSxhLmthLCEwLHZvaWQgMCxhLm9hKSk7cmV0dXJuIGEua2Eub2EoYS5FYSxhLkthLGEuQmEpfWlmKGI9KGI9YS5rYS5nZXRTdGF0ZSgpKT9iLmlkOm51bGwpYS5BYT1uZXcgJERiKGIsYS5CYSxhLmthLGEub2EpO3ZhciBjPWEua2EucHVzaEFzeW5jKGEuRWEsYS5LYSxhLkJhKTtiJiYoYz1jLnRoZW4oZD0+e2EuQWEua2E9ZC5wdXNoSWQ7cmV0dXJuIGR9KSk7cmV0dXJuIGN9OwpRRGI9Y2xhc3MgZXh0ZW5kcyBXRGJ7Y29uc3RydWN0b3IoYSxiLGMsZCxlLGY9ITEsZz0hMSxoLGspe3N1cGVyKCk7dGhpcy5FYT1hO3RoaXMuS2E9Yjt0aGlzLlJhPWM7dGhpcy5CYT1kO3RoaXMua2E9ZTt0aGlzLlBhPWY7dGhpcy5TYT1nO3RoaXMub2E9aDt0aGlzLk9hPWs7dGhpcy5BYT1udWxsfUdhKCl7dmFyIGE9YUViKHRoaXMpO3RoaXMub2EmJihhPWEudGhlbihiPT57dGhpcy5PYT90aGlzLm9hLnNldChiLnB1c2hJZCx0aGlzLk9hKTp0aGlzLm9hLmRlbGV0ZShiLnB1c2hJZCk7cmV0dXJuIGJ9KSk7cmV0dXJuIF8uRGcoYSkuSHgoKCk9Pm51bGwpfX07WURiPWZ1bmN0aW9uKGEpe2Eua2E/KGE9YS5rYSxhPSFhLlBhJiZhLkFhP2EuQWE6bnVsbCk6YT1udWxsO3JldHVybiBhfTsKUkRiPWNsYXNzIGV4dGVuZHMgV0Rie2NvbnN0cnVjdG9yKGEsYixjLGQsZSl7c3VwZXIoKTt0aGlzLmthPXRoaXMub2E9bnVsbDtlJiYodGhpcy5vYT1uZXcgJERiKGUuaWQsYS5rYSxjKSk7aWYoYS5tUCl7ZT1hLlZ1KCk7bGV0IGY9JENiKGEuaW5zdGFuY2VJZCxfLm9kKGUpLGEudmlld0lkKTt0aGlzLmthPW5ldyBRRGIoZSxhLnVzZXJEYXRhLGEub2F8fGIsYS5rYSxjLGIsITAsZCxmKX19R2EoKXtyZXR1cm4gdGhpcy5vYT8odGhpcy5vYS5ydW4oKSx0aGlzLmthPyh0aGlzLm9hLmZpbmlzaGVkKCkudGhlbigoKT0+e3RoaXMua2EucnVuKCl9KSx0aGlzLmthLmZpbmlzaGVkKCkpOnRoaXMub2EuZmluaXNoZWQoKSk6dGhpcy5rYT8odGhpcy5rYS5ydW4oKSx0aGlzLmthLmZpbmlzaGVkKCkpOl8uRGcoKX1JYSgpe3RoaXMub2EmJnRoaXMub2EuY2FuY2VsKCk7dGhpcy5rYSYmdGhpcy5rYS5jYW5jZWwoKX19O3ZhciBiRWIsY0ViO2JFYj1mdW5jdGlvbihhKXt2YXIgYj1fLkJkKCJFUDF5a2QiKTtiRGIoYSxfLmVIYShiKS5tYXAoYz0+Xy5vbShjKSkpfTtfLmVFYj1mdW5jdGlvbihhLGIsYyxkLGUsZixnLGgpe2lmKGIuaW5kZXhPZigiIyIpPT0wJiZhLnh1KCkpcmV0dXJuIGEua2EueVAoYixkLGUsZixnLGgpO2lmKEFEYihhLmthLGIpPT1udWxsKXJldHVybiBjP2NFYihhLGIsZixnKTpnPT1udWxsfHwobmV3IF8uem8oZy50YXJnZXQpKS5jbG9zZXN0KCJhIikuZmlsdGVyKG09PiEhbS5ocmVmKS5zaXplKCksbnVsbDt2YXIgaz1hLmthLmdldEN1cnJlbnRVcmwoKTtpZihfLllpKGEuR2EsbT0+Xy5yZChiLG0pJiZfLnNkKGIsbSkhPV8uc2QoayxtKSxhKSlyZXR1cm4gY0ViKGEsYixmLGcpLG51bGw7ZD1hLmthLnlQKF8uZEViKGEsYiksZCxlLGYsZyxoKTshZCYmYyYmY0ViKGEsYixmLGcpO3JldHVybiBkfTsKXy5kRWI9ZnVuY3Rpb24oYSxiKXtyZXR1cm4gYj09PW51bGx8fGI9PT12b2lkIDA/YjpfLlRCYShhLkJhLChjLGQpPT5kKGMpLGIpfTtjRWI9ZnVuY3Rpb24oYSxiLGMsZCl7ZCYmIWQuZGVmYXVsdFByZXZlbnRlZCYmZC5wcmV2ZW50RGVmYXVsdCgpO18uTERiKGEua2EsXy5kRWIoYSxiKSxjKX07Xy5mRWI9ZnVuY3Rpb24oYSl7cmV0dXJuIE9EYihhLmthLF8uZEViKGEpKX07Cl8uZ0ViPWNsYXNzIGV4dGVuZHMgXy5zb3tzdGF0aWMgUWEoKXtyZXR1cm57c2VydmljZTp7d2ZhOl8uem9iLFoxYTpfLmNwYixpbmM6Xy5oZmIsZXJyb3JIYW5kbGVyOl8ubG9iLHdpbmRvdzpfLnFvfX19Y29uc3RydWN0b3IoYSl7c3VwZXIoKTt0aGlzLldpPW51bGw7dGhpcy5vYT1hLnNlcnZpY2Uud2ZhO3RoaXMuSWE9ImUganNtb2RlIGpzZmVhdCBkZWIgb3B0IHJvdXRlIGhsIGdsIGRlYnVnU295VGVtcGxhdGVJbmZvIGF1dGh1c2VyIi5zcGxpdCgiICIpO3RoaXMuR2E9ImUgbW9kcyBqc21vZGUganNmZWF0IGhsIGdsIHBhZ2VJZCBkZWJ1Z1NveVRlbXBsYXRlSW5mbyBhdXRodXNlciIuc3BsaXQoIiAiKTt0aGlzLkJhPVt0aGlzLkVhLmJpbmQodGhpcyldO3RoaXMud2E9YS5zZXJ2aWNlLndpbmRvdy5nZXQoKTt0aGlzLmdldFdpbmRvdygpO3ZhciBiPW5ldyBfLnlvYihfLkZhKF8ucm9iLF8ucW9iKSksYz13aW5kb3cuZG9jdW1lbnQucXVlcnlTZWxlY3RvcigiYmFzZSIpO2MmJgpjLmhyZWYmJihjPV8uY2thKGMuaHJlZikpJiZjIT0iLyImJmIub2EucHVzaChjLnJlcGxhY2UoL1wvJC8sIiIpKTtiRWIoYik7dGhpcy5rYT1uZXcgVkRiKG5ldyByRGIoYiksYS5zZXJ2aWNlLloxYSxhLnNlcnZpY2UuaW5jLHRoaXMub2EsdGhpcy5nZXRXaW5kb3coKSx0aGlzLGEuc2VydmljZS5lcnJvckhhbmRsZXIsdGhpcy5TbCgpKTt0aGlzLm90KHRoaXMua2EucmVhZHkoKSxfLnJvKX15UChhLGIsYyxkLGUsZil7cmV0dXJuIF8uZUViKHRoaXMsYSwhMSxiLGMsZCxlLGYpfUFhKGEpe3JldHVybiBQRGIodGhpcy5rYSxfLmRFYih0aGlzLGEpKX1wdXNoQXN5bmMoYSxiLGMsZCxlKXtyZXR1cm4gdGhpcy5rYS5wdXNoQXN5bmMoXy5kRWIodGhpcyxhKSxiLGMsZCxlKX1uYXZpZ2F0ZShhLGIpe3JldHVybiB0aGlzLmthLm5hdmlnYXRlKF8uZEViKHRoaXMsYSksYil9cG9wKGEsYj0hMSxjKXtyZXR1cm4gdGhpcy5rYS5wb3AoYSxiLGMpfWZldGNoKGEpe3JldHVybiB0aGlzLmthLmZldGNoKGEpfWdldFdpbmRvdygpe3JldHVybiB0aGlzLndhfXh1KCl7cmV0dXJuIHRoaXMua2EueHUoKX1nZXRDdXJyZW50VXJsKCl7cmV0dXJuIHRoaXMua2EuZ2V0Q3VycmVudFVybCgpfWdldFN0YXRlKCl7cmV0dXJuIHRoaXMua2EuZ2V0U3RhdGUoKX1nZXRFdmVudFRhcmdldCgpe3JldHVybiB0aGlzLmthLmdldEV2ZW50VGFyZ2V0KCl9RWEoYSl7dmFyIGI9CnRoaXMua2EuZ2V0Q3VycmVudFVybCgpO2lmKF8uZWthKGEpIT1fLmVrYShiKSYmXy5vZChhKSE9YSlyZXR1cm4gYTtfLkxhKHRoaXMuSWEsYz0+e3ZhciBkPV8uWGtiKGIsYykuZmlsdGVyKGU9PiFfLmphKGUpKTtkLmxlbmd0aCYmIV8ucmQoYSxjKSYmKGE9Xy5va2EoYSxjLGQpKX0sdGhpcyk7cmV0dXJuIGF9fTtfLmFnKF8uUFlhLF8uZ0ViKTt2YXIgaEViPV8uaGMoKS5rYTtfLkloKFtfLiRmKF8ueDZhLGhFYiksXy4kZihfLlBZYSxoRWIpXSkudGhlbihhPT57YVswXS53YShhWzFdKX0pOwpfLnNEYj0hMDsKXy52KCk7Cn1jYXRjaChlKXtfLl9EdW1wRXhjZXB0aW9uKGUpfQp0cnl7Cl8udSgiZ3NrQkVjIik7CnZhciBOdmM9ZnVuY3Rpb24oYSxiPW5ldyBfLm12Yyl7dmFyIGM9Yi5rYS5nZXQoXy5udmMpfHx7fTtjLm5ZPWE7Yi5rYS5zZXQoXy5udmMsYyk7cmV0dXJuIGJ9LE92Yz1jbGFzcyBleHRlbmRzIF8ubHtjb25zdHJ1Y3RvcihhKXtzdXBlcihhKX1BYSgpe3JldHVybiBfLnQodGhpcywxKX13YShhKXtyZXR1cm4gXy5maCh0aGlzLDEsYSl9b2EoKXtyZXR1cm4gXy5HZSh0aGlzLDEpfUJhKCl7cmV0dXJuIF8ucGgodGhpcywxKX19O092Yy5wcm90b3R5cGUuWGE9IlFJS0NXZCI7dmFyIFB2Yz17S3koKXtyZXR1cm5bInZpZXciXX0sS2soYSxiKXtfLnd2KG5ldyBfLkN2KGEua2EsYiksInZpZXciLGIud2EsYi5vYSl9LFFsKGEsYil7Xy56dihuZXcgXy5DdihiLmthLGEpLGEuQmEsYS5BYSwidmlldyIpfX07dmFyIFF2Yz1udWxsLFJ2Yz1jbGFzcyBleHRlbmRzIF8uWnp7Y29uc3RydWN0b3IoYSxiKXtzdXBlcihhKTtuZXcgXy4keih0aGlzKTtfLlh6KGIsdGhpcyxuZXcgXy5XeihQdmMpKX1zdGF0aWMgeW4oKXtyZXR1cm4gT3ZjfXN0YXRpYyBWbihhKXtyZXR1cm4gUXZjP1F2YzpRdmM9Xy5WeigpLnRoZW4oYj0+e2I9bmV3IFJ2YyhPdmMsYik7Yi5pbml0aWFsaXplKGEpO3JldHVybiBifSl9fTtfLlpvLlFJS0NXZD1fLllvO3ZhciBTdmM7U3ZjPWZ1bmN0aW9uKGEsYil7cmV0dXJuIGEuV2YudHJhbnNpdGlvbihjPT57Yj09PSIvc2VhcmNoIj9jLm9hKCk6Yy53YShiKTtyZXR1cm4gY30pfTtfLmNBPWNsYXNzIGV4dGVuZHMgXy5zb3tzdGF0aWMgUWEoKXtyZXR1cm57c2VydmljZTp7U2I6Xy5wdixXYjpfLml3LHhOYTpfLmdFYn0sb2U6e01sYTpSdmN9fX1jb25zdHJ1Y3RvcihhKXtzdXBlcigpO3RoaXMuU2I9YS5zZXJ2aWNlLlNiO3RoaXMuV2I9YS5zZXJ2aWNlLldiO3RoaXMueE5hPWEuc2VydmljZS54TmE7dGhpcy5XZj1hLm9lLk1sYX1wcmVmZXRjaChhKXtyZXR1cm4gdGhpcy54TmEuZmV0Y2goYSl9bmF2aWdhdGUoYSx7dHJhbnNpdGlvbjpiLHJzYTpjPXt9LG5ZOmQ9e319PXt9KXthPVN2Yyh0aGlzLGEpO2ImJihhPWEuY29tcG9zZShiKSk7cmV0dXJuIGEucnVuKF8uYkEoYykuYW5kKE52YyxkKSl9eHUoKXtyZXR1cm4gdGhpcy54TmEueHUoKX19O18uYWcoXy5hcixfLmNBKTsKXy52KCk7Cn1jYXRjaChlKXtfLl9EdW1wRXhjZXB0aW9uKGUpfQp0cnl7Cl8ubFVlPV8ua2MoInM5ODBsZiIsW18uYXJdKTsKfWNhdGNoKGUpe18uX0R1bXBFeGNlcHRpb24oZSl9CnRyeXsKXy51KCJzOTgwbGYiKTsKdmFyIG1VZT1jbGFzcyBleHRlbmRzIF8uaHN7c3RhdGljIFFhKCl7cmV0dXJue3NlcnZpY2U6e2tDOl8uY0F9fX1jb25zdHJ1Y3RvcihhKXtzdXBlcigpO3RoaXMua0M9YS5zZXJ2aWNlLmtDfWthKGEpe2E9YS5vYi5FaygpO2EuZm9ybS5xLnZhbHVlPyhhLmNoZWNrZWQ9ITAsKGE9YS5mb3JtLmlmbHNpZykmJmEudmFsdWUmJihhLmRpc2FibGVkPSExKSk6dGhpcy5rQy5uYXZpZ2F0ZSgiL2Rvb2RsZXMvIil9fTttVWUucHJvdG90eXBlLiR3YSRRSVdsaD1mdW5jdGlvbigpe3JldHVybiB0aGlzLmthfTtfLmpzKF8ubFVlLG1VZSk7Cl8udigpOwp9Y2F0Y2goZSl7Xy5fRHVtcEV4Y2VwdGlvbihlKX0KdHJ5ewpfLnUoIlU5RVlnZSIpOwpfLlQzYj1uZXcgTWFwOwpfLnYoKTsKfWNhdGNoKGUpe18uX0R1bXBFeGNlcHRpb24oZSl9CnRyeXsKXy5YJGI9Xy5rYygibG9MOHZiIixbXy5wb10pOwp9Y2F0Y2goZSl7Xy5fRHVtcEV4Y2VwdGlvbihlKX0KdHJ5ewpfLnUoImxvTDh2YiIpOwpfLlkkYj1jbGFzcyBleHRlbmRzIF8uc297c3RhdGljIFFhKCl7cmV0dXJue3NlcnZpY2U6e3dpbmRvdzpfLnFvfX19Y29uc3RydWN0b3IoYSl7c3VwZXIoKTt0aGlzLmRvY3VtZW50PWEuc2VydmljZS53aW5kb3cuZ2V0RG9jdW1lbnQoKX19O18uYWcoXy5YJGIsXy5ZJGIpOwpfLnYoKTsKfWNhdGNoKGUpe18uX0R1bXBFeGNlcHRpb24oZSl9CnRyeXsKXy5kYWM9Xy5rYygibXM0bVpiIixbXy5YJGIsXy5QcV0pOwp9Y2F0Y2goZSl7Xy5fRHVtcEV4Y2VwdGlvbihlKX0KdHJ5ewp2YXIgWiRiPVt7bmFtZToicGJydCIsc3RhcnRUaWNrOiJzdGFydCIscU06InBicnQifSx7bmFtZToicGNydCIsc3RhcnRUaWNrOiJzdGFydCIscU06InBjcnQifSx7bmFtZToicHRydCIsc3RhcnRUaWNrOiJzdGFydCIscU06InB0cnQifSx7bmFtZToiY3BpdCIsc3RhcnRUaWNrOiJzdGFydCIscU06ImNwaXQifSx7bmFtZToiY3BwY3QiLHN0YXJ0VGljazoiY3BwaXQiLHFNOiJjcHBjdCJ9LHtuYW1lOiJjcHJ0IixzdGFydFRpY2s6ImNwaXQiLHFNOiJjcHJ0In0se25hbWU6ImNwaXN0IixzdGFydFRpY2s6ImNwaXQiLHFNOiJjcGlzdCJ9LHtuYW1lOiJjcHJ0aWYiLHN0YXJ0VGljazoiY3Bpc3QiLHFNOiJjcHJ0aWYifSx7bmFtZToiY3BpY3QiLHN0YXJ0VGljazoiY3BydGlmIixxTToiY3BydCJ9LHtuYW1lOiJjcGR0IixzdGFydFRpY2s6ImNwcnQiLHFNOiJjcGR0In0se25hbWU6ImNwamN0IixzdGFydFRpY2s6ImNwZHQiLHFNOiJjcGpjdCJ9LHtuYW1lOiJocGJhcyIsc3RhcnRUaWNrOiJzdGFydCIsCnFNOiJocGJhcyJ9LHtuYW1lOiJocGJhcnIiLHN0YXJ0VGljazoiaHBiYXMiLHFNOiJocGJhcnIifSx7bmFtZToiYXBidHJ0IixzdGFydFRpY2s6InN0YXJ0IixxTToiYXBidHJ0In0se25hbWU6InB1cHJ0IixzdGFydFRpY2s6InN0YXJ0IixxTToicHVwcnQifSx7bmFtZToiY3NzdCIsc3RhcnRUaWNrOiJzdGFydCIscU06ImNzc3QifSx7bmFtZToiY3NydCIsc3RhcnRUaWNrOiJjc3N0IixxTToiY3NydCJ9LHtuYW1lOiJjc2R0IixzdGFydFRpY2s6ImNwaWN0IixxTToiY3NkdCJ9XTt2YXIgJCRiPWNsYXNze2dldFRpbWVyKCl7cmV0dXJuIGdvb2dsZS50aW1lcnMucHJvbW99cmVjb3JkQ2hlY2twb2ludChhLGIpe3RoaXMua2EuaGFzKGEpfHwodGhpcy5rYS5hZGQoYSksZ29vZ2xlLnRpY2soInByb21vIixhLGIpKX1jb25zdHJ1Y3Rvcigpe3RoaXMua2E9bmV3IFNldDt2YXIgYT1nb29nbGUsYj1hLnN0YXJ0VGljayxjLGQsZT0oKGQ9KGM9cGVyZm9ybWFuY2UpLmdldEVudHJpZXNCeVR5cGUpPT1udWxsP3ZvaWQgMDpkLmNhbGwoYywibmF2aWdhdGlvbiIpKXx8W107Yi5jYWxsKGEsInByb21vIixlLmxlbmd0aD4wP2VbMF0ucmVzcG9uc2VTdGFydCtwZXJmb3JtYW5jZS50aW1lT3JpZ2luOi0xKX19LGFhYzt2YXIgYmFjO2JhYz1mdW5jdGlvbihhLGIpe3ZhciBjPW5ldyBNYXA7YT1hLnQ7aWYoIWEpcmV0dXJuIGM7Zm9yKGxldCBkIG9mIGIpe2lmKCEoZC5zdGFydFRpY2sgaW4gYSYmZC5xTSBpbiBhKSljb250aW51ZTtiPWFbZC5zdGFydFRpY2tdO2IhPT0tMSYmYy5zZXQoZC5uYW1lLE1hdGgucm91bmQoTWF0aC5hYnMoYi1hW2QucU1dKSkpfXJldHVybiBjfTsKXy5teT1mdW5jdGlvbihhLGIsYyxkLGUsZil7ZD1kfHxaJGI7dmFyIGc9YmFjKGEua2EuZ2V0VGltZXIoKSxkKTthLnJlY29yZENoZWNrcG9pbnQoYixjKTtiPWJhYyhhLmthLmdldFRpbWVyKCksZCk7aWYoZy5zaXplIT09Yi5zaXplJiYoZz1iLGEua2EpKXtlPWV8fG5ldyBfLlJvKCJwcm9tbyIsImNzaSIsbmV3IF8uYm8pO2lmKGYpZm9yKGxldCBbaCxrXW9mIGYuZW50cmllcygpKWUuR2MoaCxrKTtkPWR8fFokYjthPWc9Z3x8YmFjKGEua2EuZ2V0VGltZXIoKSxkKTtpZihhLnNpemUhPT0wKXtmb3IobGV0IFtoLGtdb2YgYSllLlpzKGgsayk7ZS5sb2coKX19fTsKXy5jYWM9Y2xhc3N7Y29uc3RydWN0b3IoKXthOntpZighYWFjKXtsZXQge3Jlc3VsdDpiLHJlYXNvbjpjfT1nb29nbGUudGljaz9nb29nbGUudGltZXJzP3tyZXN1bHQ6ITB9OntyZXN1bHQ6ITEscmVhc29uOiJnb29nbGUudGltZXJzIGlzIHVuaW5pdGlhbGl6ZWQuIn06e3Jlc3VsdDohMSxyZWFzb246Imdvb2dsZS50aWNrIGlzIHVuaW5pdGlhbGl6ZWQuIn07aWYoIWIpe18uVmUoRXJyb3IoInpoYCIrYykpO3ZhciBhPW51bGw7YnJlYWsgYX1hYWM9bmV3ICQkYn1hPWFhY310aGlzLmthPWF9cmVjb3JkQ2hlY2twb2ludChhLGIpe3RoaXMua2EmJnRoaXMua2EucmVjb3JkQ2hlY2twb2ludChhLGIpfX07Cn1jYXRjaChlKXtfLl9EdW1wRXhjZXB0aW9uKGUpfQp0cnl7CnZhciBVNmIsVzZiO1U2Yj1mdW5jdGlvbihhLGIsLi4uYyl7dmFyIGQ9Xy55UGEoYSwuLi5jKTtkP2QucHVzaChuZXcgXy52UGEoYikpOl8uelBhKGEsYiwuLi5jKX07Xy5IUGE9Y2xhc3MgZXh0ZW5kcyBfLkJQYXtjb25zdHJ1Y3RvcihhLGIpe3N1cGVyKGEsMixiKX1LbyhhLC4uLmIpe1U2Yih0aGlzLGEsLi4uYil9fTtfLlY2Yj1mdW5jdGlvbihhLGIsLi4uYyl7YS5BYS5oYXMoYil8fGEuQWEuc2V0KGIsbmV3IF8uSFBhKGIsYykpfTtfLlg2Yj1mdW5jdGlvbihhKXthLm5ldHdvcms9bmV3IFc2YjtyZXR1cm4gYX07VzZiPWNsYXNze3NlbmQoYSxiPSgpPT57fSxjPSgpPT57fSl7Xy5xcihhLnVybCxkPT57ZD1kLnRhcmdldDtfLnNyKGQpP2IoZC5LdygpKTpjKGQuZ2V0U3RhdHVzKCkpfSxhLnJlcXVlc3RUeXBlLGEuYm9keSxhLnJlcXVlc3RIZWFkZXJzLGEudGltZW91dE1pbGxpcyxhLndpdGhDcmVkZW50aWFscyl9ZzhhKCl7cmV0dXJuIDF9fTsKfWNhdGNoKGUpe18uX0R1bXBFeGNlcHRpb24oZSl9CnRyeXsKdmFyIFo2YixhN2IsYjdiLGM3YixqN2IsaDdiLGk3YjtaNmI9ZnVuY3Rpb24oYSl7cmV0dXJue0NuOjIsbHBiOmF9fTthN2I9ZnVuY3Rpb24oYSl7dmFyIGI9W107Xy5taChhLCQ2Yiw2LF8ub2goKSkuZm9yRWFjaChjPT57Xy54ZShjLDIpPD01MyYmYi5wdXNoKF8ueGUoYywxKSl9KTtyZXR1cm4gYn07YjdiPWZ1bmN0aW9uKGEpe3ZhciBiPVtdO18ubWgoYSwkNmIsNixfLm9oKCkpLmZvckVhY2goYz0+e18ueGUoYywyKT41MyYmYi5wdXNoKF8ueGUoYywxKSl9KTtyZXR1cm4gYn07CmM3Yj1mdW5jdGlvbihhLGIsYyxkKXthPV8udTZhKF8uWDZiKF8uczZhKG5ldyBfLmxyKDE4MjgsIjAiKSxhKSkpLm9uYigpO2IubGVuZ3RoJiZfLm9FYihhLF8ucEViKG5ldyBfLnFFYixiKSk7ZCE9PXZvaWQgMCYmXy5yNmEoYSxkKTt2YXIgZT1uZXcgXy53NmEoMTgyOCwiIiwiIiwhMSwiIixhLmJ1aWxkKCkpO18uRGkoZSxhKTt2YXIgZj1uZXcgXy5JUGEoe2ZsdXNoKGcpe3RyeXtlLmZsdXNoKGcpfWNhdGNoKGgpe2MoaCl9fX0pO2YuYWRkT25EaXNwb3NlQ2FsbGJhY2soKCk9PntzZXRUaW1lb3V0KCgpPT57dHJ5e2Yub2EoKX1maW5hbGx5e2UuZGlzcG9zZSgpfX0pfSk7Zi5HYT0xRTU7Zi5CYT0zRTQ7Zi53YS5zZXRJbnRlcnZhbCgzRTQpO3JldHVybiBmfTtfLmQ3Yj1mdW5jdGlvbigpe3ZhciBhLGIsYztyZXR1cm4oYz0oYT1nbG9iYWxUaGlzLnBlcmZvcm1hbmNlKT09bnVsbD92b2lkIDA6KGI9YS5ub3cpPT1udWxsP3ZvaWQgMDpiLmNhbGwoYSkpIT1udWxsP2M6RGF0ZS5ub3coKX07Cl8uZzdiPWZ1bmN0aW9uKGEsYil7aWYoYS5kaXNhYmxlKXJldHVybiBuZXcgZTdiO2I9Yj9hN2IoYik6W107cmV0dXJuIGY3Yih7ZjY6YS5mNixWb2I6YS5qQWQsR3diOmEuSkRkLGpHOmEuakcsV2FiOmEuV2FiLHUwYTphLnUwYX0sYil9O2o3Yj1mdW5jdGlvbihhLGIpe3JldHVybiBiP2g3YihiKTphP2k3YihhKTpQcm9taXNlLnJlc29sdmUoKX07aDdiPWZ1bmN0aW9uKGEpe3JldHVybiBuZXcgUHJvbWlzZSgoYixjKT0+e3ZhciBkPV8uU20oIlNDUklQVCIpLGU9Xy5saChhKTtfLmRkKGQsZSk7ZC5vbmxvYWQ9KCk9PntfLlltKGQpO2IoKX07ZC5vbmVycm9yPSgpPT57Xy5ZbShkKTtjKEVycm9yKCJvaCIpKX07KF8uS20oIkhFQUQiKVswXXx8ZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50KS5hcHBlbmRDaGlsZChkKX0pfTsKaTdiPWZ1bmN0aW9uKGEpe3JldHVybiBuZXcgUHJvbWlzZShiPT57dmFyIGM9Xy5TbSgiU0NSSVBUIik7Xy5JamEoYyxfLnNzYShhKSk7KF8uS20oIkhFQUQiKVswXXx8ZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50KS5hcHBlbmRDaGlsZChjKTtfLlltKGMpO2IoKX0pfTt2YXIgazdiPWNsYXNzIGV4dGVuZHMgXy5FZHtjb25zdHJ1Y3Rvcigpe3N1cGVyKC4uLmFyZ3VtZW50cyk7dGhpcy5LYT0xfXNoYXJlKCl7aWYodGhpcy5pc0Rpc3Bvc2VkKCkpdGhyb3cgRXJyb3IoImtoIik7dGhpcy5LYSsrO3JldHVybiB0aGlzfWRpc3Bvc2UoKXstLXRoaXMuS2F8fHN1cGVyLmRpc3Bvc2UoKX19O3ZhciBsN2I9Y2xhc3N7Y29uc3RydWN0b3IoYSl7dGhpcy5vYT1hO18uVjZiKGEsIi9jbGllbnRfc3RyZWFtei9iZy9mcnMiLF8uZWMoIm1rIikpfUtvKGEsYil7dGhpcy5vYS5LbygiL2NsaWVudF9zdHJlYW16L2JnL2ZycyIsYSxiKX1rYSgpe3JldHVybiB0aGlzLm9hLmthKCIvY2xpZW50X3N0cmVhbXovYmcvZnJzIil9fSxtN2I9Y2xhc3N7Y29uc3RydWN0b3IoYSl7dGhpcy5vYT1hO18uVjZiKGEsIi9jbGllbnRfc3RyZWFtei9iZy93cmwiLF8uZWMoIm1uIiksWjZiKCJhYyIpLFo2Yigic2MiKSxfLmVjKCJyayIpLF8uZWMoIm1rIikpfUtvKGEsYixjLGQsZSxmKXt0aGlzLm9hLktvKCIvY2xpZW50X3N0cmVhbXovYmcvd3JsIixhLGIsYyxkLGUsZil9a2EoKXtyZXR1cm4gdGhpcy5vYS5rYSgiL2NsaWVudF9zdHJlYW16L2JnL3dybCIpfX0sbjdiPWNsYXNze2NvbnN0cnVjdG9yKGEpe3RoaXMub2E9YTtfLkpvKGEsIi9jbGllbnRfc3RyZWFtei9iZy9lYyIsXy5lYygiZW4iKSxfLmVjKCJtayIpKX1pbmNyZW1lbnQoYSwKYil7Xy5Lbyh0aGlzLm9hLCIvY2xpZW50X3N0cmVhbXovYmcvZWMiLGEsYil9a2EoKXtyZXR1cm4gdGhpcy5vYS5rYSgiL2NsaWVudF9zdHJlYW16L2JnL2VjIil9fSxvN2I9Y2xhc3N7Y29uc3RydWN0b3IoYSl7dGhpcy5vYT1hO18uVjZiKGEsIi9jbGllbnRfc3RyZWFtei9iZy9lbCIsXy5lYygiZW4iKSxfLmVjKCJtayIpKX1LbyhhLGIsYyl7dGhpcy5vYS5LbygiL2NsaWVudF9zdHJlYW16L2JnL2VsIixhLGIsYyl9a2EoKXtyZXR1cm4gdGhpcy5vYS5rYSgiL2NsaWVudF9zdHJlYW16L2JnL2VsIil9fSxwN2I9Y2xhc3N7Y29uc3RydWN0b3IoYSl7dGhpcy5vYT1hO18uSm8oYSwiL2NsaWVudF9zdHJlYW16L2JnL2NlYyIsWjZiKCJlYyIpLF8uZWMoIm1rIikpfWluY3JlbWVudChhLGIpe18uS28odGhpcy5vYSwiL2NsaWVudF9zdHJlYW16L2JnL2NlYyIsYSxiKX1rYSgpe3JldHVybiB0aGlzLm9hLmthKCIvY2xpZW50X3N0cmVhbXovYmcvY2VjIil9fSxxN2I9Y2xhc3N7Y29uc3RydWN0b3IoYSl7dGhpcy5vYT0KYTtfLkpvKGEsIi9jbGllbnRfc3RyZWFtei9iZy9wby9jc2MiLFo2YigiY3MiKSxfLmVjKCJtayIpKX1pbmNyZW1lbnQoYSxiKXtfLktvKHRoaXMub2EsIi9jbGllbnRfc3RyZWFtei9iZy9wby9jc2MiLGEsYil9a2EoKXtyZXR1cm4gdGhpcy5vYS5rYSgiL2NsaWVudF9zdHJlYW16L2JnL3BvL2NzYyIpfX0scjdiPWNsYXNze2NvbnN0cnVjdG9yKGEpe3RoaXMub2E9YTtfLkpvKGEsIi9jbGllbnRfc3RyZWFtei9iZy9wby9jdGF2IixfLmVjKCJhdiIpLF8uZWMoIm1rIikpfWluY3JlbWVudChhLGIpe18uS28odGhpcy5vYSwiL2NsaWVudF9zdHJlYW16L2JnL3BvL2N0YXYiLGEsYil9a2EoKXtyZXR1cm4gdGhpcy5vYS5rYSgiL2NsaWVudF9zdHJlYW16L2JnL3BvL2N0YXYiKX19LHM3Yj1jbGFzc3tjb25zdHJ1Y3RvcihhKXt0aGlzLm9hPWE7Xy5KbyhhLCIvY2xpZW50X3N0cmVhbXovYmcvcG8vY3dzYyIsXy5lYygic3UiKSxfLmVjKCJtayIpKX1pbmNyZW1lbnQoYSxiKXtfLktvKHRoaXMub2EsCiIvY2xpZW50X3N0cmVhbXovYmcvcG8vY3dzYyIsYSxiKX1rYSgpe3JldHVybiB0aGlzLm9hLmthKCIvY2xpZW50X3N0cmVhbXovYmcvcG8vY3dzYyIpfX0sdDdiPWNsYXNze2NvbnN0cnVjdG9yKGEpe3RoaXMub2E9YTtfLlY2YihhLCIvY2xpZW50X3N0cmVhbXovYmcvb2QvcCIsXy5lYygibWsiKSl9S28oYSxiKXt0aGlzLm9hLktvKCIvY2xpZW50X3N0cmVhbXovYmcvb2QvcCIsYSxiKX1rYSgpe3JldHVybiB0aGlzLm9hLmthKCIvY2xpZW50X3N0cmVhbXovYmcvb2QvcCIpfX0sdTdiPWNsYXNze2NvbnN0cnVjdG9yKGEpe3RoaXMub2E9YTtfLlY2YihhLCIvY2xpZW50X3N0cmVhbXovYmcvb2QvbiIsXy5lYygiZXQiKSxfLmVjKCJtayIpKX1LbyhhLGIsYyl7dGhpcy5vYS5LbygiL2NsaWVudF9zdHJlYW16L2JnL29kL24iLGEsYixjKX1rYSgpe3JldHVybiB0aGlzLm9hLmthKCIvY2xpZW50X3N0cmVhbXovYmcvb2QvbiIpfX07dmFyIHY3YixlN2IseDdiLHk3Yix6N2IsZjdiLEE3Yjt2N2I9Y2xhc3N7Y29uc3RydWN0b3IoYSxiKXt0aGlzLnhjPWE7dGhpcy5ldmVudD1iO3RoaXMuc3RhcnRUaW1lPV8uZDdiKCl9ZG9uZSgpe3RoaXMueGMub2EodGhpcy5ldmVudCxfLmQ3YigpLXRoaXMuc3RhcnRUaW1lKX19O18udzdiPWNsYXNzIGV4dGVuZHMgazdie2NvbnN0cnVjdG9yKCl7c3VwZXIoLi4uYXJndW1lbnRzKX19O2U3Yj1jbGFzcyBleHRlbmRzIF8udzdie0JhKCl7fWthKCl7fW9hKCl7fXl4KCl7fUdhKCl7fUVhKCl7fUFhKCl7fX07eDdiPWZ1bmN0aW9uKGEpe2lmKGEudGltZXI9PT12b2lkIDApe2xldCBiPU1hdGgubWF4KDAsYS5rYSthLm9hLV8uZDdiKCkpO2EudGltZXI9c2V0VGltZW91dCgoKT0+e3RyeXthLmNhbGxiYWNrKCl9ZmluYWxseXthLmthPV8uZDdiKCksYS50aW1lcj12b2lkIDB9fSxiKX19Owp5N2I9Y2xhc3MgZXh0ZW5kcyBfLkVke2NvbnN0cnVjdG9yKGEsYil7c3VwZXIoKTt0aGlzLmNhbGxiYWNrPWE7dGhpcy5vYT1iO3RoaXMua2E9LWI7dGhpcy5hZGRPbkRpc3Bvc2VDYWxsYmFjaygoKT0+dm9pZCBjbGVhclRpbWVvdXQodGhpcy50aW1lcikpfX07ejdiPWNsYXNzIGV4dGVuZHMgXy53N2J7Y29uc3RydWN0b3IoYSxiKXtzdXBlcigpO3RoaXMud2E9YTt0aGlzLmY2PWJ9QmEoYSl7dGhpcy53YS5qUGMuS28oYSx0aGlzLmY2KX1rYShhKXt0aGlzLndhLlR0Yy5pbmNyZW1lbnQoYSx0aGlzLmY2KX1vYShhLGIpe3RoaXMud2EuVXRjLktvKGIsYSx0aGlzLmY2KX15eChhKXt0aGlzLndhLlJ0Yy5pbmNyZW1lbnQoYSx0aGlzLmY2KX1HYShhKXt0aGlzLndhLkdJYy5LbyhhLHRoaXMuZjYpfUVhKGEsYil7dGhpcy53YS5CR2MuS28oYixhLHRoaXMuZjYpfX07ZjdiPWZ1bmN0aW9uKGEsYj1bXSl7cmV0dXJuIG5ldyBBN2IoYSxiKX07CkE3Yj1jbGFzcyBleHRlbmRzIHo3Yntjb25zdHJ1Y3RvcihhLGI9W10pe3ZhciBjPXtmNjphLmY2fHwiXyIsVm9iOmEuVm9ifHxbXSxHd2I6YS5Hd2J8MCxqRzphLmpHLFdhYjphLldhYnx8KCgpPT57fSksdTBhOmEudTBhfHwoKGUsZik9PmM3YihlLGYsYy5XYWIsYy5qRykpfSxkPWMudTBhKCI1MyIsYy5Wb2IuY29uY2F0KGIpKTtzdXBlcih7alBjOm5ldyBsN2IoZCksUnRjOm5ldyBwN2IoZCksVHRjOm5ldyBuN2IoZCksVXRjOm5ldyBvN2IoZCksdklkOm5ldyBtN2IoZCkseklkOm5ldyBxN2IoZCksR3hkOm5ldyByN2IoZCkseUlkOm5ldyBzN2IoZCksR0ljOm5ldyB0N2IoZCksQkdjOm5ldyB1N2IoZCl9LGMuZjYpO3RoaXMub3B0aW9ucz1jO3RoaXMuc2VydmljZT1kO3RoaXMuTmE9IWEudTBhO3RoaXMuSWE9bmV3IHk3YigoKT0+dm9pZCB0aGlzLnNlcnZpY2Uub2EoKSxjLkd3Yik7dGhpcy5hZGRPbkRpc3Bvc2VDYWxsYmFjaygoKT0+e3RoaXMuSWEuZGlzcG9zZSgpO3RoaXMuTmEmJgp0aGlzLnNlcnZpY2UuZGlzcG9zZSgpfSk7Xy5iYmEoYi5zbGljZSgpKX1BYSgpe3g3Yih0aGlzLklhKX19O3ZhciBDN2I7Xy5CN2I9Y2xhc3MgZXh0ZW5kcyBfLmx7Y29uc3RydWN0b3IoYSl7c3VwZXIoYSwwLF8uQjdiLm1lc3NhZ2VJZCl9fTtDN2I9Xy5hYyhfLkI3Yik7Xy5CN2IubWVzc2FnZUlkPSJiZmtqIjt2YXIgJDZiPWNsYXNzIGV4dGVuZHMgXy5se2NvbnN0cnVjdG9yKGEpe3N1cGVyKGEpfX07dmFyIEQ3Yj1jbGFzcyBleHRlbmRzIF8ubHtjb25zdHJ1Y3RvcihhKXtzdXBlcihhKX19LEU3Yj1fLmRjKEQ3Yik7Xy5GN2I9Y2xhc3MgZXh0ZW5kcyBfLkVke2NvbnN0cnVjdG9yKGEpe3N1cGVyKCk7dGhpcy5vYT1NYXRoLmZsb29yKE1hdGgucmFuZG9tKCkqMjAwKTt0aGlzLmthPW5ldyBEN2I7aWYoImNoYWxsZW5nZSJpbiBhJiZDN2IoYS5jaGFsbGVuZ2UpKXt2YXIgYj1fLnQoYS5jaGFsbGVuZ2UsNCx2b2lkIDAsXy5kYik7dmFyIGM9Xy50KGEuY2hhbGxlbmdlLDUsdm9pZCAwLF8uZGIpO18udChhLmNoYWxsZW5nZSw3LHZvaWQgMCxfLmRiKSYmKHRoaXMua2E9RTdiKF8udChhLmNoYWxsZW5nZSw3LHZvaWQgMCxfLmRiKSkpfWVsc2Uoe3Byb2dyYW06YixrQmQ6Y309YSk7dGhpcy5hZGRPbkRpc3Bvc2VDYWxsYmFjayhhc3luYygpPT57dmFyIG49KDAsXy5NZikoKSxwPW4oKTtuPW4oMSk7dHJ5e2xldCB7dk9jOnJ9PW4oYXdhaXQgcCh0aGlzLndhKSk7cj09bnVsbHx8cigpfWZpbmFsbHl7cCgpfX0pO3RoaXMueGM9Xy5nN2IoYS5mYWJ8fHt9LHRoaXMua2EpO18uRGkodGhpcyx0aGlzLnhjKTt2YXIgZD0KbmV3IF8uTXE7dGhpcy53YT1kLnByb21pc2U7dGhpcy54Yy5rYSgidCIpO3ZhciBlPXRoaXMueGMuc2hhcmUoKSxmPW5ldyB2N2IoZSwidCIpLGc9KG4scCxyLHgpPT57aWYoIXRoaXMueGMuaXNEaXNwb3NlZCgpKXt2YXIgej0iayI7cD96PSJoIjpyJiYoej0idSIpO3ohPT0iayI/eCE9PTAmJih0aGlzLnhjLmthKHopLHRoaXMueGMub2EoeixuKSk6dGhpcy5vYTw9MD8odGhpcy54Yy5rYSh6KSx0aGlzLnhjLm9hKHosbiksdGhpcy5vYT1NYXRoLmZsb29yKE1hdGgucmFuZG9tKCkqMjAwKSk6dGhpcy5vYS0tfX0saD0obixwLHIseCk9PntQcm9taXNlLnJlc29sdmUoKS50aGVuKCgpPT57Zi5kb25lKCk7ZS5BYSgpO2UuZGlzcG9zZSgpO2QucmVzb2x2ZSh7b21jOm4sdk9jOnAsRUVkOnIsVnhkOnh9KX0pfSxrPVsobixwKT0+e3RoaXMueGMub2EobixwKX0sbj0+e3RoaXMueGMueXgobil9LG49Pnt0aGlzLnhjLkdhKG4pfSwobixwKT0+e3RoaXMueGMuRWEobixwKX1dO2lmKCFfLmVhW2NdKXRocm93IHRoaXMueGMueXgoMjUpLApFcnJvcigibGgiKTtpZighXy5lYVtjXS5hKXRocm93IHRoaXMueGMueXgoMjYpLEVycm9yKCJtaCIpO3RyeXtsZXQgbj1fLmVhW2NdLmE7Yz1bXTtsZXQgcD1bXTt2YXIgbT1hN2IodGhpcy5rYSk7Zm9yKGxldCB6PTA7ejxtLmxlbmd0aDt6KyspYy5wdXNoKG1bel0pLHAucHVzaCgxKTtsZXQgcj1iN2IodGhpcy5rYSk7Zm9yKG09MDttPHIubGVuZ3RoO20rKyljLnB1c2goclttXSkscC5wdXNoKDIpO2xldCBbeF09bihiLGgsITAsYS5ZYmMsZyxbYyxwXSxfLnQodGhpcy5rYSw1KSwhMSxrKTt0aGlzLkFhPXg7dGhpcy5zN2I9ZC5wcm9taXNlLnRoZW4oKCk9Pnt9KX1jYXRjaChuKXt0aHJvdyB0aGlzLnhjLnl4KDI4KSxuO319WlgoYSl7aWYodGhpcy5pc0Rpc3Bvc2VkKCkpdGhyb3cgRXJyb3IoIm5oIik7dGhpcy54Yy5rYSgibiIpO3ZhciBiPXRoaXMueGMuc2hhcmUoKTtyZXR1cm4gdGhpcy53YS50aGVuKCh7b21jOmN9KT0+bmV3IFByb21pc2UoZD0+e3ZhciBlPW5ldyB2N2IoYiwKIm4iKTtjKGY9PntlLmRvbmUoKTtiLkJhKGYubGVuZ3RoKTtiLkFhKCk7Yi5kaXNwb3NlKCk7ZChmKX0sW2Euck9iLGEuQU9jLGEuVVRjLGEuU09jXSl9KSl9QTdiKCl7cmV0dXJuIHRoaXMueGMuc2hhcmUoKX19O3ZhciBJN2IsRzdiO18uSDdiPWZ1bmN0aW9uKCl7RzdiLmluc3RhbmNlfHwoRzdiLmluc3RhbmNlPW5ldyBHN2IpO3JldHVybiBHN2IuaW5zdGFuY2V9O0k3Yj1mdW5jdGlvbihhLGIsYyxkKXtpZighYiYmIWMpcmV0dXJuIFByb21pc2UucmVzb2x2ZSgpO2lmKCFkKXJldHVybiBqN2IoYixjKTt2YXIgZTsoZT1hLmthKVtkXXx8KGVbZF09bmV3IFByb21pc2UoKGYsZyk9PntqN2IoYixjKS50aGVuKCgpPT57YS5vYT1kO2YoKX0saD0+e2RlbGV0ZSBhLmthW2RdO2coaCl9KX0pKTtyZXR1cm4gYS5rYVtkXX07Xy5KN2I9ZnVuY3Rpb24oYSxiKXtyZXR1cm4gSTdiKGEsXy5xKGIsXy5abCwxLF8uZGIpLF8ucShiLF8ua2gsMixfLmRiKSxfLnQoYiwzLHZvaWQgMCxfLmRiKSl9O0c3Yj1jbGFzc3tjb25zdHJ1Y3Rvcigpe3RoaXMua2E9e307dGhpcy5vYT1udWxsfX07Cn1jYXRjaChlKXtfLl9EdW1wRXhjZXB0aW9uKGUpfQp0cnl7Cl8uWTZiPWNsYXNzIGV4dGVuZHMgXy5se2NvbnN0cnVjdG9yKGEpe3N1cGVyKGEpfX07Cn1jYXRjaChlKXtfLl9EdW1wRXhjZXB0aW9uKGUpfQp0cnl7Cl8uUng9Y2xhc3N7Y29uc3RydWN0b3IoYSx7cHJpb3JpdHk6Yn09e30pe3RoaXMuY2FjaGVLZXk9YTt0aGlzLnByaW9yaXR5PWJ9fTsKfWNhdGNoKGUpe18uX0R1bXBFeGNlcHRpb24oZSl9CnRyeXsKXy5ReD1mdW5jdGlvbihhKXtyZXR1cm4gXy5oZyhhLCJhc3luY0ZjIik/e09ROl8uZ2coYSwiYXN5bmNGYyIpLGpUOl8uZ2coYSwiYXN5bmNPbnMiKSxQUTpfLmdnKGEsImFzeW5jRmN2Iil9Om51bGx9Owp9Y2F0Y2goZSl7Xy5fRHVtcEV4Y2VwdGlvbihlKX0KdHJ5ewp2YXIgczRiLHU0YjtfLmo0Yj1mdW5jdGlvbihhKXtyZXR1cm4gXy5oZyhhLCJhc3luY0VscmMiKT97eV9iOl8uZ2coYSwiYXN5bmNFbHJjIil9Om51bGx9O18uazRiPWZ1bmN0aW9uKGEsYixjKXtyZXR1cm4gYT8iY2FsbGJhY2s6IithLmpUOmI/ImZvbGlmIjpfLmdnKGMsImFzeW5jVHlwZSIpfTtfLmw0Yj1mdW5jdGlvbihhKXt2YXIgYj1fLlF4KGEpLGM9Xy5qNGIoYSk7cmV0dXJuIF8uazRiKGIsYyxhKX07Xy5tNGI9ZnVuY3Rpb24oYSl7cmV0dXJuIGEgaW5zdGFuY2VvZiBFcnJvcj9hOkVycm9yKFN0cmluZyhhKSl9OwpzNGI9ZnVuY3Rpb24oYSl7dmFyIGI9Xy5uNGIoXy5vNGIsYSk7aWYoIWIpcmV0dXJuIG51bGw7aWYoInN2ImluIGIpcmV0dXJuIF8ucDRiKGIuc3YpO2lmKCJzaSJpbiBiKXtsZXQgYz1fLnE0Yi5nZXQoYi5zaSk7cmV0dXJuIG5ldyBfLnI0YigoZCxlKT0+e2ZvcihsZXQgZiBvZiBjLnZhbHVlcylkKGYpO2MudzRiLnB1c2goZCk7Yy55bGIucHVzaChlKX0pfXRocm93IEVycm9yKCJSZ2AiK2EpO307Xy5uNGI9ZnVuY3Rpb24oYSxiKXtyZXR1cm4oYT1hLmdldChiKSk/YTpudWxsfTt1NGI9ZnVuY3Rpb24oYSl7cmV0dXJue21ldGFkYXRhOnQ0YihhWzBdKSxib2R5OmFbMV19fTtfLnY0Yj1mdW5jdGlvbihhLGIsYyl7dmFyIGQ9YjtjJiYoZD1gJHtifS0ke2N9YCk7cmV0dXJuIGEucnRbZF19O3ZhciB3NGI7Xy5wNGI9ZnVuY3Rpb24oYSl7cmV0dXJuIG5ldyBfLnI0YigoYixjKT0+e2ZvcihsZXQgZCBvZiBhKWIoZCk7YygpfSl9O3c0Yj1mdW5jdGlvbihhLGI9bnVsbCl7aWYoIWEuY2xvc2VkKXthLmNsb3NlZD0hMDthLndhPWI7Zm9yKGxldCB7cmVzb2x2ZTpjLHJlamVjdDpkfW9mIGEua2EpYj9kKGIpOmMoe3ZhbHVlOnZvaWQgMCxkb25lOiEwfSk7YS5rYS5sZW5ndGg9MH19OwpfLnI0Yj1jbGFzc3tjb25zdHJ1Y3RvcihhKXt0aGlzLm9hPVtdO3RoaXMua2E9W107dGhpcy5jbG9zZWQ9ITE7dGhpcy53YT1udWxsO3RyeXthKGI9PntpZih0aGlzLmNsb3NlZCl0aHJvdyBFcnJvcigiUGciKTtpZih0aGlzLmthLmxlbmd0aCl7bGV0IGM9dGhpcy5rYS5zaGlmdCgpLnJlc29sdmU7Yyh7dmFsdWU6Yixkb25lOiExfSl9ZWxzZSB0aGlzLm9hLnB1c2goYil9LGI9Pnt3NGIodGhpcyxiKX0pfWNhdGNoKGIpe3c0Yih0aGlzLF8ubTRiKGIpKX19bmV4dCgpe2lmKHRoaXMub2EubGVuZ3RoKXtsZXQgYT10aGlzLm9hLnNoaWZ0KCk7cmV0dXJuIFByb21pc2UucmVzb2x2ZSh7dmFsdWU6YSxkb25lOiExfSl9cmV0dXJuIHRoaXMuY2xvc2VkP3RoaXMud2E/UHJvbWlzZS5yZWplY3QodGhpcy53YSk6UHJvbWlzZS5yZXNvbHZlKHt2YWx1ZTp2b2lkIDAsZG9uZTohMH0pOm5ldyBQcm9taXNlKChhLGIpPT57dGhpcy5rYS5wdXNoKHtyZXNvbHZlOmEscmVqZWN0OmJ9KX0pfWFzeW5jIGZvckVhY2goYSl7dmFyIGI9CigwLF8uTWYpKCksYz1iKCk7Yj1iKDEpO3RyeXtmb3IoOzspe2xldCB7dmFsdWU6ZCxkb25lOmV9PWIoYXdhaXQgYyh0aGlzLm5leHQoKSkpO2lmKGUpYnJlYWs7Yihhd2FpdCBjKGEoZCkpKX19ZmluYWxseXtjKCl9fW1hcChhKXtyZXR1cm4gbmV3IF8ucjRiKChiLGMpPT57dGhpcy5mb3JFYWNoKGQ9PntiKGEoZCkpfSkudGhlbigoKT0+e2MoKX0sZD0+e2MoXy5tNGIoZCkpfSl9KX1jYXRjaChhKXtyZXR1cm4gbmV3IF8ucjRiKChiLGMpPT57dGhpcy5mb3JFYWNoKGQ9PntiKGQpfSkudGhlbigoKT0+e2MoKX0sZD0+e3RyeXthKF8ubTRiKGQpKSxjKCl9Y2F0Y2goZSl7YyhfLm00YihlKSl9fSl9KX19O18ucTRiPW5ldyBNYXA7dmFyIHQ0YjtfLng0Yj1jbGFzcyBleHRlbmRzIF8ubHtjb25zdHJ1Y3RvcihhKXtzdXBlcihhKX1nZXRUeXBlKCl7cmV0dXJuIF8uT2oodGhpcywxKX1BYyhhKXtyZXR1cm4gXy5aaCh0aGlzLDEsYSl9dGUoKXtyZXR1cm4gXy5laSh0aGlzLDEpfX07dDRiPV8uZGMoXy54NGIpO3ZhciB6NGI7Xy55NGI9Y2xhc3MgZXh0ZW5kcyBfLmx7Y29uc3RydWN0b3IoYSl7c3VwZXIoYSl9fTt6NGI9Xy5kYyhfLnk0Yik7dmFyIEE0YixCNGI7Xy5vNGI9Xy51ZyhfLmVhLlhKYj8ibiI6InMiLF8uck1hKTtBNGI9bmV3IE1hcDtfLkM0Yj1mdW5jdGlvbihhLGIpe3ZhciBjPWIgaW5zdGFuY2VvZiBfLlJ4P2I6dm9pZCAwO2E9YCR7YX1fXyR7Yz9jLmNhY2hlS2V5OmJ9YDtiPUE0Yi5nZXQoYSk7Ynx8KGI9bmV3IEI0YihhLGMpLEE0Yi5zZXQoYSxiKSk7cmV0dXJuIGJ9O18uRDRiPWZ1bmN0aW9uKGEpe18ubzRiLnJlbW92ZShhLm9hKTt2YXIgYj1hLndhLGM9Xy5vNGIsZD1fLm40YihjLGIpO2QmJigic2kiaW4gZCYmXy5xNGIuZGVsZXRlKGQuc2kpLGMucmVtb3ZlKGIpKTt2YXIgZTsoZT1hLkFhKT09bnVsbHx8ZS5jYWxsKGEpO2Eua2E9bnVsbDthLkFhPW51bGx9OwpCNGI9Y2xhc3N7Y29uc3RydWN0b3IoYSxiKXt0aGlzLmthPW51bGw7dGhpcy5vYT1hKyJfX2giO3RoaXMud2E9YSsiX19yIjt0aGlzLnByaW9yaXR5PWImJmIucHJpb3JpdHl9YXN5bmMgUHMoKXt2YXIgYT0oMCxfLk1mKSgpLGI9YSgpO2E9YSgxKTt0cnl7YShhd2FpdCBiKHRoaXMua2EpKTtsZXQgYz1fLm80Yi5nZXQodGhpcy5vYSksZD1zNGIodGhpcy53YSk7aWYoIWN8fCFkKXJldHVybiBudWxsO2xldCBlPXo0YihjKSxmPWQubWFwKHU0Yik7cmV0dXJue2hlYWRlcjplLHJlc291cmNlczpmfX1maW5hbGx5e2IoKX19b3Blbigpe2lmKHRoaXMua2EpcmV0dXJuITE7dGhpcy5rYT1uZXcgUHJvbWlzZShhPT57dGhpcy5BYT1hfSk7cmV0dXJuITB9fTsKfWNhdGNoKGUpe18uX0R1bXBFeGNlcHRpb24oZSl9CnRyeXsKXy5UNmI9ZnVuY3Rpb24oYSxiKXthPV8uUzZiKGEsYik7cmV0dXJuISFhLmthfHxfLm80Yi5oYXMoYS5vYSkmJl8ubzRiLmhhcyhhLndhKX07Xy5TNmI9ZnVuY3Rpb24oYSxiKXthPXR5cGVvZiBhPT09InN0cmluZyI/YTpfLmw0YihhKTtyZXR1cm4gXy5DNGIoYSxiIGluc3RhbmNlb2YgXy5SeD9iLmNhY2hlS2V5OmIpfTsKfWNhdGNoKGUpe18uX0R1bXBFeGNlcHRpb24oZSl9CnRyeXsKXy5GNmI9ZnVuY3Rpb24oYSxiKXtyZXR1cm4gXy5maChhLDEsYil9O18uRzZiPWNsYXNzIGV4dGVuZHMgXy5se2NvbnN0cnVjdG9yKGEpe3N1cGVyKGEpfX07Xy5INmI9ZnVuY3Rpb24oYSxiKXtyZXR1cm4gXy5TYihhLF8uRzZiLDksYil9Owp9Y2F0Y2goZSl7Xy5fRHVtcEV4Y2VwdGlvbihlKX0KdHJ5ewp2YXIgT0diO18uTkdiPWZ1bmN0aW9uKGEpe3JldHVybiBfLk1HYigiR0VUIixhLG51bGwpLnRoZW4oZnVuY3Rpb24oYil7cmV0dXJuIGIucmVzcG9uc2VUZXh0fSl9OwpfLk1HYj1mdW5jdGlvbihhLGIsYyxkKXt2YXIgZT1kfHx7fSxmPWUuZ2RjP2UuZ2RjLlZuKCk6Xy5qYWIoKTtyZXR1cm4obmV3IF8uU2coZnVuY3Rpb24oZyxoKXt2YXIgazt0cnl7Zi5vcGVuKGEsYiwhMCl9Y2F0Y2gocCl7aChuZXcgT0diKCJFcnJvciBvcGVuaW5nIFhIUjogIitwLm1lc3NhZ2UsYixmKSl9Zi5vbnJlYWR5c3RhdGVjaGFuZ2U9ZnVuY3Rpb24oKXtpZihmLnJlYWR5U3RhdGU9PTQpe18uZWEuY2xlYXJUaW1lb3V0KGspO3ZhciBwOyEocD1fLmlhYihmLnN0YXR1cykpJiYocD1mLnN0YXR1cz09PTApJiYocD1fLmFrYShiKSxwPSEocD09Imh0dHAifHxwPT0iaHR0cHMifHxwPT0iIikpO3A/ZyhmKTpoKG5ldyBfLlBHYihmLnN0YXR1cyxiLGYpKX19O2Yub25lcnJvcj1mdW5jdGlvbigpe2gobmV3IE9HYigiTmV0d29yayBlcnJvciIsYixmKSl9O2lmKGUuaGVhZGVycyl7Zm9yKHZhciBtIGluIGUuaGVhZGVycyl7dmFyIG49ZS5oZWFkZXJzW21dO24hPW51bGwmJmYuc2V0UmVxdWVzdEhlYWRlcihtLApuKX1uPWUuaGVhZGVyc1siQ29udGVudC1UeXBlIl19bT1fLmVhLkZvcm1EYXRhJiZjIGluc3RhbmNlb2YgXy5lYS5Gb3JtRGF0YTthIT0iUE9TVCJ8fG4hPT12b2lkIDB8fG18fGYuc2V0UmVxdWVzdEhlYWRlcigiQ29udGVudC1UeXBlIiwiYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkO2NoYXJzZXQ9dXRmLTgiKTtlLndpdGhDcmVkZW50aWFscyYmKGYud2l0aENyZWRlbnRpYWxzPWUud2l0aENyZWRlbnRpYWxzKTtlLnJlc3BvbnNlVHlwZSYmKGYucmVzcG9uc2VUeXBlPWUucmVzcG9uc2VUeXBlKTtlLm1pbWVUeXBlJiZmLm92ZXJyaWRlTWltZVR5cGUoZS5taW1lVHlwZSk7ZS50ZmE+MCYmKGs9Xy5lYS5zZXRUaW1lb3V0KGZ1bmN0aW9uKCl7Zi5vbnJlYWR5c3RhdGVjaGFuZ2U9KCk9Pnt9O2YuYWJvcnQoKTtoKG5ldyBRR2IoYixmKSl9LGUudGZhKSk7dHJ5e2Yuc2VuZChjKX1jYXRjaChwKXtmLm9ucmVhZHlzdGF0ZWNoYW5nZT0oKT0+e30sXy5lYS5jbGVhclRpbWVvdXQoayksCmgobmV3IE9HYigiRXJyb3Igc2VuZGluZyBYSFI6ICIrcC5tZXNzYWdlLGIsZikpfX0pKS5IeChmdW5jdGlvbihnKXtnIGluc3RhbmNlb2YgXy5XZSYmZi5hYm9ydCgpO3Rocm93IGc7fSl9O09HYj1mdW5jdGlvbihhLGIsYyl7Xy5iYS5jYWxsKHRoaXMsYSsiLCB1cmw9IitiKTt0aGlzLnVybD1iO3RoaXMuRWk9Y307Xy5VaShPR2IsXy5iYSk7T0diLnByb3RvdHlwZS5uYW1lPSJYaHJFcnJvciI7Xy5QR2I9ZnVuY3Rpb24oYSxiLGMpe09HYi5jYWxsKHRoaXMsIlJlcXVlc3QgRmFpbGVkLCBzdGF0dXM9IithLGIsYyk7dGhpcy5zdGF0dXM9YX07Xy5VaShfLlBHYixPR2IpO18uUEdiLnByb3RvdHlwZS5uYW1lPSJYaHJIdHRwRXJyb3IiO3ZhciBRR2I9ZnVuY3Rpb24oYSxiKXtPR2IuY2FsbCh0aGlzLCJSZXF1ZXN0IHRpbWVkIG91dCIsYSxiKX07Xy5VaShRR2IsT0diKTtRR2IucHJvdG90eXBlLm5hbWU9IlhoclRpbWVvdXRFcnJvciI7Cn1jYXRjaChlKXtfLl9EdW1wRXhjZXB0aW9uKGUpfQp0cnl7CnZhciBLR2I7S0diPWZ1bmN0aW9uKGEpe2ZvcihsZXQgW2IsY11vZiBfLmt5Yil7bGV0IGQ9YixlPWM7Xy5DTWEuaGFzKGQpJiZhLnNldChkLGUpfX07Xy5MR2I9ZnVuY3Rpb24oYSl7dmFyIGI9Xy5sdSgpO18ueU1hLmZvckVhY2goYz0+e3ZhciBkPWIuZ2V0KGMpO2QmJmEuc2V0KGMsZCl9KTtLR2IoYSl9Owp9Y2F0Y2goZSl7Xy5fRHVtcEV4Y2VwdGlvbihlKX0KdHJ5ewp2YXIgVHUsWkdiLFdHYixYR2IsUkdiLFNHYjtUdT1mdW5jdGlvbihhLGIsYz0hMSl7UkdiLnNldChhLGIpO2MmJlNHYi5hZGQoYSl9OwpfLllHYj1mdW5jdGlvbihhLGIpe3ZhciBjPWEuVWwoKSxkPWMudG9TdHJpbmcoKTtpZighUkdiLmhhcyhkKSlyZXR1cm4gYz1FcnJvcigidWZgIitkKSxfLkNtYShjLHtpZDpkfSksXy5IaChjKTt2YXIgZT1TR2IuaGFzKGQpO2E9YS5lQigpLkZjKCk7dmFyIGY9Xy5UR2IoKSxnPVJHYi5nZXQoZCk7Zj1uZXcgXy5SZShgJHtmfS9odHRwc2VydmljZS8ke2d9YCk7Xy5MR2IoZi5zZWFyY2hQYXJhbXMpO18uVUdiKGYuc2VhcmNoUGFyYW1zKTtpZihlKXtmLnNlYXJjaFBhcmFtcy5zZXQoImZtdCIsImpzcGIiKTtnPWdvb2dsZS54c3JmP2dvb2dsZS54c3JmW2RdOnZvaWQgMDtpZighZylyZXR1cm4gYz1FcnJvcigidmZgIitkKSxfLkNtYShjLHtpZDpkfSksXy5IaChjKTtmLnNlYXJjaFBhcmFtcy5zZXQoInhzcmYiLGcpfWVsc2UgZi5zZWFyY2hQYXJhbXMuc2V0KCJyZXFwbGQiLGEpO2Yuc2VhcmNoUGFyYW1zLnNldCgibXNjIixiKTtfLkZtYShmLnNlYXJjaFBhcmFtcywhMSwhMSk7ZD0KZi50b1N0cmluZygpO2I9e0JOYToiKV19J1xuXG4iLHdpdGhDcmVkZW50aWFsczpfLlZHYigpLGhlYWRlcnM6e319O2Q9ZT9XR2IoZCxhLGIpOlhHYihkLGIpO3ZhciBoPWMub29hKCk7cmV0dXJuIGQudGhlbihrPT5uZXcgaChrKSl9O1pHYj1mdW5jdGlvbihhLGIpe2ImJmIuQk5hJiYoYj1iLkJOYSxfLmlhKGEsYikmJihhPWEuc3Vic3RyaW5nKGIubGVuZ3RoKSkpO3JldHVybiBKU09OLnBhcnNlKGEpfTtXR2I9ZnVuY3Rpb24oYSxiLGMpe3JldHVybiBfLk1HYigiUE9TVCIsYSxiLGMpLnRoZW4oZnVuY3Rpb24oZCl7cmV0dXJuIFpHYihkLnJlc3BvbnNlVGV4dCxjKX0pfTtYR2I9ZnVuY3Rpb24oYSxiKXtyZXR1cm4gXy5NR2IoIkdFVCIsYSxudWxsLGIpLnRoZW4oZnVuY3Rpb24oYyl7cmV0dXJuIFpHYihjLnJlc3BvbnNlVGV4dCxiKX0pfTtSR2I9bmV3IE1hcDtTR2I9bmV3IFNldDtfLlVHYj0oKT0+e307Xy5UR2I9KCk9PiIiO18uVkdiPSgpPT4hMTtUdSgiRVh0bWdkIiwid2ViL0FkQmxvY2tpbmdTZXJ2aWNlL0Jsb2NrQWRzIiwhMCk7VHUoIldXa1R0ZCIsIndlYi9BZEJsb2NraW5nU2VydmljZS9CbG9ja0Fkc1VuZG8iLCEwKTtUdSgiR1RLR3FlIiwicmV0cnkvQWRzRW1iZWRkZWRSZXBvcnRTZXJ2aWNlL1VwZGF0ZVNlYXJjaFRlcm1TdGF0dXMiLCEwKTtUdSgic3Q1aUlmIiwicmV0cnkvQWRzRW1iZWRkZWRSZXBvcnRTZXJ2aWNlL1VwZGF0ZUNhbXBhaWduQnVkZ2V0IiwhMCk7VHUoImpOeGpLYyIsInJldHJ5L0Fkc0VtYmVkZGVkUmVwb3J0U2VydmljZS9VcGRhdGVDYW1wYWlnblN0YXR1cyIsITApO1R1KCJRVmhTSWIiLCJyZXRyeS9BZHNFbWJlZGRlZFJlcG9ydFNlcnZpY2UvTXV0YXRlQ3JlYXRpdmUiLCEwKTtUdSgicTF5a3BkIiwicmV0cnkvQWRzRW1iZWRkZWRSZXBvcnRTZXJ2aWNlL1ZhbGlkYXRlQ3JlYXRpdmUiKTtUdSgid3dmYzRjIiwicmV0cnkvQWRzRW1iZWRkZWRSZXBvcnRTZXJ2aWNlL011dGF0ZUtleXdvcmRUaGVtZSIsITApO1R1KCJ6cE5LdSIsInJldHJ5L0Fkc0VtYmVkZGVkUmVwb3J0U2VydmljZS9Mb2dnaW5nQWN0aXZpdGllcyIpO1R1KCJBRHRDRGMiLCJyZXRyeS9BZHNFbWJlZGRlZFJlcG9ydFNlcnZpY2UvR2V0QnVkZ2V0U3VnZ2VzdGlvbiIpOwpUdSgiVDlIWnYiLCJyZXRyeS9BZHNFbWJlZGRlZFJlcG9ydFNlcnZpY2UvR2V0RXN0aW1hdGVkUmVhY2giKTtUdSgiV2xIdkdjIiwicmV0cnkvQWRzRW1iZWRkZWRSZXBvcnRTZXJ2aWNlL0dldExvY2F0aW9uUmVwb3J0SW5mbyIpO1R1KCJPRFNNcGMiLCJyZXRyeS9BZHNFbWJlZGRlZFJlcG9ydFNlcnZpY2UvR2V0UGVyZm9ybWFuY2VSZXBvcnQiKTtUdSgicmhYU0UiLCJyZXRyeS9BZHNFbWJlZGRlZFJlcG9ydFNlcnZpY2UvR2V0Q2FtcGFpZ25EZXRhaWxzIik7VHUoIk1PNHAyYyIsInJldHJ5L0Fkc0VtYmVkZGVkUmVwb3J0U2VydmljZS9HZXRLZXl3b3JkUmVwb3J0Iik7VHUoInZvaHU2IiwicmV0cnkvQWRzRW1iZWRkZWRSZXBvcnRTZXJ2aWNlL0dldEtleXdvcmRTdWdnZXN0aW9ucyIpO1R1KCJkU0hUSGUiLCJyZXRyeS9BZHNFbWJlZGRlZFJlcG9ydFNlcnZpY2UvR2V0U2VhcmNoZXNSZXBvcnQiKTtUdSgiak1uVnZiIiwicmV0cnkvQWRzRW1iZWRkZWRSZXBvcnRTZXJ2aWNlL0dldE15QWRzRGF0YSIpO1R1KCJDUjhKS2MiLCJ3ZWIvQWltVGhyZWFkc1NlcnZpY2UvTGlzdFRocmVhZHMiKTtUdSgiU1JBT3hlIiwid2ViL0FpbVRocmVhZHNTZXJ2aWNlL0luaXRpYXRlSGFuZG92ZXIiLCEwKTtUdSgiUDZESjRiIiwid2ViL0FpbVRocmVhZHNTZXJ2aWNlL0RlbGV0ZVRocmVhZHMiLCEwKTtUdSgiaUw0aW9jIiwid2ViL0FpbVRocmVhZHNTZXJ2aWNlL0xpc3RTaGFyZWRUaHJlYWRzIik7VHUoIm5IdGxQYiIsIndlYi9BaW1UaHJlYWRzU2VydmljZS9EZWxldGVTaGFyZWRUaHJlYWRzIiwhMCk7VHUoInNZTU1iYiIsIndlYi9BaW1UaHJlYWRzU2VydmljZS9Jbml0aWF0ZVNoYXJlIiwhMCk7VHUoIlA5N1dqZCIsIndlYi9BaW1UaHJlYWRzU2VydmljZS9EZWxldGVBZ2VudGljVXBkYXRlcyIsITApO1R1KCJMbU53b2YiLCJ3ZWIvQWltVGhyZWFkc1NlcnZpY2UvUmVmcmVzaERhdEZvckFnZW50aWNVcGRhdGVzIiwhMCk7ClR1KCJhaHhLbWYiLCJ3ZWIvQWltVGhyZWFkc1NlcnZpY2UvRXhwb3J0VGhyZWFkIiwhMCk7VHUoImY1Y0RGZSIsIndlYi9BaW1UaHJlYWRzU2VydmljZS9TZWFyY2hUaHJlYWRzIik7VHUoIlZlbFVlZSIsIndlYi9BaW1UaHJlYWRzU2VydmljZS9HZXRUaHJlYWRDb250ZXh0Iik7VHUoInQ3UjZzZiIsIndlYi9BaW1UaHJlYWRzU2VydmljZS9HZXRKb3VybmV5Iik7VHUoImFFNTByZiIsIndlYi9BaW1UaHJlYWRzU2VydmljZS9HZW5lcmF0ZUpvdXJuZXlBdHRyaWJ1dGVzIik7VHUoInlSQU95ZCIsIndlYi9BaW1UaHJlYWRzU2VydmljZS9HZXRKb3VybmV5QXR0cmlidXRlcyIpO1R1KCJ5a3YwTmIiLCJ3ZWIvQWltVGhyZWFkc1NlcnZpY2UvQ3JlYXRlSm91cm5leSIsITApO1R1KCJRdWtRM2IiLCJ3ZWIvQWltVGhyZWFkc1NlcnZpY2UvRGVsZXRlSm91cm5leXMiLCEwKTtUdSgiU21lYjRkIiwid2ViL0FpbVRocmVhZHNTZXJ2aWNlL1VwZGF0ZUpvdXJuZXlzIiwhMCk7ClR1KCJEYUJpVWQiLCJ3ZWIvQWltVGhyZWFkc1NlcnZpY2UvVXBkYXRlVGhyZWFkcyIsITApO1R1KCJIb1F5WmQiLCJ3ZWIvQWltVGhyZWFkc1NlcnZpY2UvTGlzdEpvdXJuZXlzIik7VHUoInhUZGRXZSIsIndlYi9Bc3Npc3RhbnRDb250ZXh0dWFsQWN0aW9uc1NlcnZpY2UvR2V0UmVtaW5kZXIiKTtUdSgibWpsNkVkIiwid2ViL0Fzc2lzdGFudENvbnRleHR1YWxBY3Rpb25zU2VydmljZS9TZXRSZW1pbmRlciIsITApO1R1KCJQNGFGOWIiLCJyZXRyeS9CYXRjaEFzeW5jVGFza1RyaWdnZXJTZXJ2aWNlL0NoZWNrVHJpZ2dlclN0YXR1cyIpO1R1KCJXeHlpVWQiLCJyZXRyeS9DYW1lb3NTZXJ2aWNlL1JlY29yZFZpZXciLCEwKTtUdSgic0ZSOXdkIiwicmV0cnkvQ2FtZW9zU2VydmljZS9HZXRXYXRjaFZpZXciKTtUdSgiRndzN0lmIiwicmV0cnkvUmVzcG9uc2VTZXJ2aWNlL1dyaXRlIiwhMCk7VHUoImdQZndLZiIsInJldHJ5L1Jlc3BvbnNlU2VydmljZS9Db3VudCIsITApO1R1KCJOTkN5UyIsInJldHJ5L0NvbnRyaWJ1dGlvbnNTZXJ2aWNlL0RlbGV0ZVJldmlldyIsITApO1R1KCJnQkl6c2IiLCJyZXRyeS9Db250cmlidXRpb25zU2VydmljZS9Xcml0ZUhlbHBmdWxWb3RlIiwhMCk7VHUoIlRUUDRkYyIsInJldHJ5L0NvbnRyaWJ1dGlvbnNTZXJ2aWNlL1dyaXRlUmVhY3Rpb24iLCEwKTtUdSgiaXhMMmFlIiwicmV0cnkvQ29udHJpYnV0aW9uc1NlcnZpY2UvV3JpdGVSZWFjdGlvbnMiLCEwKTtUdSgiT2xLQ1MiLCJyZXRyeS9Db250cmlidXRpb25zU2VydmljZS9Xcml0ZVJldmlldyIsITApO1R1KCJHMU5LZWIiLCJyZXRyeS9EZWxpZ2h0Q291bnRlclNlcnZpY2UvSW5jcmVtZW50Q291bnRlciIsITApO1R1KCJuS2lkeGUiLCJyZXRyeS9EZWxpZ2h0Q291bnRlclNlcnZpY2UvR2V0Q291bnQiKTtUdSgiUXdINWsiLCJyZXRyeS9EZWxpZ2h0Q291bnRlclNlcnZpY2UvRGVsZXRlQ291bnQiLCEwKTtUdSgicEJ0UThlIiwicmV0cnkvRGVsaWdodENvdW50ZXJTZXJ2aWNlL0dldFVuaXF1ZUlkcyIpO1R1KCJlZHFYMWQiLCJ3ZWIvRmJzVXBkYXRlU2VydmljZS9TZXRGYnNTY3JvbGxQb3NpdGlvbiIpO1R1KCJBb3VUZWYiLCJyZXRyeS9GZWVkYmFja1NlcnZpY2UvU3VibWl0RmVlZGJhY2siLCEwKTtUdSgiZkFUZVBlIiwid2ViL0dlb0Z1bGZpbGxtZW50U2VydmljZS9HZXRCYXRjaExvY2FsUG9zdHMiKTtUdSgic3lHemRjIiwid2ViL0dlb0Z1bGZpbGxtZW50U2VydmljZS9HZXRMb2NhbFBvc3RzIik7VHUoInI3MzhvZiIsIndlYi9HZW9GdWxmaWxsbWVudFNlcnZpY2UvR2V0UGxhY2VzaGVldCIpO1R1KCJmSDdqNCIsIndlYi9HZW9GdWxmaWxsbWVudFNlcnZpY2UvR2V0U2luZ2xlTG9jYWxQb3N0Iik7VHUoIkRlbGhoYyIsIndlYi9Ib3RlbEFwaVNlcnZpY2UvR2V0Rm9ybWF0dGVkSG90ZWxSZXN1bHRzIik7VHUoIks0UG9jZSIsIndlYi9Ib3RlbEFwaVNlcnZpY2UvR2V0SG90ZWxEZWVwRGl2ZXMiKTtUdSgiQTlKVUFmIiwid2ViL0hvdGVsQXBpU2VydmljZS9HZXRIb3RlbEVudGl0eSIpO1R1KCJkTlRiQWIiLCJ3ZWIvSG90ZWxBcGlTZXJ2aWNlL0dldEhvdGVsUHJpY2VEYXRhIik7VHUoIk5wNjNtYyIsIndlYi9Ib3RlbEFwaVNlcnZpY2UvR2V0SG90ZWxSZXN1bHRzIik7VHUoIkxpeG9JYyIsIndlYi9Ib3RlbEFwaVNlcnZpY2UvR2V0SG90ZWxTZXJ2aWNlRGF0YSIpO1R1KCJVUGd3bWMiLCJyZXRyeS9SZWNvcmRVc2VyU2V0dGluZ3NTZXJ2aWNlL1JlY29yZFVzZXJTZXR0aW5ncyIsITApO1R1KCJRWHlrVSIsIndlYi9HZW9SZXNvbHV0aW9uU2VydmljZS9HZXRHZW9SZXNvbHV0aW9uIik7VHUoIkdNVDl1YiIsIm5vcmV0cnkvUHJpdmF0ZUxvY2FsU2VhcmNoVWlEYXRhU2VydmljZS9HZXRCdXNpbmVzc0NhbGxzVHJhY2tpbmdEYXRhIik7VHUoIndORXdNZCIsIndlYi9Qcml2YXRlTG9jYWxTZWFyY2hVaURhdGFTZXJ2aWNlL0dldEV2aWRlbmNlQm9xUHJveHkiKTtUdSgiVE9pbXgiLCJ3ZWIvUHJpdmF0ZUxvY2FsU2VhcmNoVWlEYXRhU2VydmljZS9HZXRGbGFnT2ZmZXJpbmdDb250ZW50Qm9xUHJveHkiLCEwKTtUdSgiZEQwTUZkIiwid2ViL1ByaXZhdGVMb2NhbFNlYXJjaFVpRGF0YVNlcnZpY2UvR2V0TG9jYWxCb3FQcm94eSIpO1R1KCJhaFd1WGQiLCJ3ZWIvUHJpdmF0ZUxvY2FsU2VhcmNoVWlEYXRhU2VydmljZS9HZXRQbGFjZUF0dHJpYnV0ZVNlcnZpY2VCb3FQcm94eSIpO1R1KCJHQ2g1amUiLCJ3ZWIvUHJpdmF0ZUxvY2FsU2VhcmNoVWlEYXRhU2VydmljZS9HZXRQbGFjZVRpbGVUaXAiKTtUdSgiQ2JxZ2JlIiwid2ViL1ByaXZhdGVMb2NhbFNlYXJjaFVpRGF0YVNlcnZpY2UvR2V0V2ViUmVzdWx0cyIpOwpUdSgicFVKRWsiLCJ3ZWIvUHJpdmF0ZUxvY2FsU2VhcmNoVWlEYXRhU2VydmljZS9HZXRXcml0ZUVkaXRCb3FQcm94eSIsITApO1R1KCJ0eDN0SmYiLCJub3JldHJ5L1ByaXZhdGVMb2NhbFNlYXJjaFVpRGF0YVNlcnZpY2UvU3luY2hyb25pemVCdXNpbmVzc0NhbGxzU2lnbmFsIik7VHUoImlnc0swYyIsIndlYi9Qcml2YXRlTG9jYWxTZWFyY2hVaURhdGFTZXJ2aWNlL1N5bmNocm9uaXplTG9jYWxCb3FQcm94eSIsITApO1R1KCJiM3dKUmMiLCJyZXRyeS9NYXBzQWN0aXZpdHlTZXJ2aWNlL01hcHNBY3Rpdml0eVBsYWNlSGlzdG9yeUVkaXQiLCEwKTtUdSgiTlF1elNiIiwicmV0cnkvTWFwc0FjdGl2aXR5U2VydmljZS9NYXBzQWN0aXZpdHlQaG90b0RlbGV0ZSIsITApO1R1KCJ4alRwN2UiLCJyZXRyeS9NYXBzRW50aXR5TGlzdFNlcnZpY2UvQ3JlYXRlTGlzdCIsITApO1R1KCJRMUlRM2QiLCJyZXRyeS9NYXBzRW50aXR5TGlzdFNlcnZpY2UvQ3JlYXRlTGlzdEl0ZW0iLCEwKTtUdSgiYjF0NGFmIiwicmV0cnkvTWFwc0VudGl0eUxpc3RTZXJ2aWNlL0RlbGV0ZUxpc3RJdGVtIiwhMCk7VHUoIkttUUxJIiwicmV0cnkvTWFwc0VudGl0eUxpc3RTZXJ2aWNlL1VwZGF0ZUxpc3RWaXNpYmlsaXR5IiwhMCk7VHUoIlBnTnVxYiIsInJldHJ5L01hcHNMb2NhbFBvc3RQcm94eVNlcnZpY2UvRGVsZXRlTG9jYWxQb3N0IiwhMCk7VHUoIk5uV3NOYiIsIndlYi9NYXBzUmlkZGxlclNlcnZpY2UvV3JpdGVSaWRkbGVyQW5zd2VyIiwhMCk7VHUoInFlUHlUYyIsIndlYi9NYXBzVGFza0Fuc3dlclNlcnZpY2UvV3JpdGVNdWx0aXBsZUNob2ljZUFuc3dlciIsITApO1R1KCJPM2ZkeWIiLCJ3ZWIvTWFwc1Rhc2tBbnN3ZXJTZXJ2aWNlL0JhdGNoRGVsZXRlQW5zd2VycyIsITApO1R1KCJwdDBZcGYiLCJyZXRyeS9NYXBzRmUvV3JpdGVMb2NhbEFjdGlvbiIsITApO1R1KCJFZnlxc2IiLCJ3ZWIvTWVkaWFTZXJ2aWNlL0dldE9uYm9hcmRpbmciKTtUdSgicmFKeXRiIiwicmV0cnkvTWVkaWFTZXJ2aWNlL0dldFN1Z2dlc3Rpb25zIik7VHUoIlhVTEQwZCIsInJldHJ5L01lcmNoYW50UHJvZmlsZVNlcnZpY2UvR2V0VW5sb2NrRGlzcGxheSIpO1R1KCJqYjAxRSIsInJldHJ5L01lcmNoYW50UHJvZmlsZVNlcnZpY2UvR2V0UHJpdmF0ZVByb2ZpbGVQcmV2aWV3Iik7VHUoInBDaHozYyIsInJldHJ5L01lcmNoYW50UHJvZmlsZVNlcnZpY2UvRGlzbWlzc1JlY29tbWVuZGF0aW9uIiwhMCk7VHUoIlFkdmtVYyIsInJldHJ5L01lcmNoYW50UHJvZmlsZVNlcnZpY2UvUmVwb3J0UmVjb21tZW5kYXRpb25DbGljayIsITApO1R1KCJCTVZlWGUiLCJyZXRyeS9NZXJjaGFudFByb2ZpbGVTZXJ2aWNlL0RldGVybWluZUZsb3dFbGlnaWJpbGl0eSIpO1R1KCJrTE9RZSIsInJldHJ5L01lcmNoYW50UHJvZmlsZVNlcnZpY2UvTGlzdE5vdGlmaWNhdGlvbk92ZXJsYXlzIik7VHUoIlhlNGN4ZSIsInJldHJ5L01lcmNoYW50UHJvZmlsZVNlcnZpY2UvUmVwb3J0Tm90aWZpY2F0aW9uT3ZlcmxheUNsaWNrIiwhMCk7VHUoIk1NYmpvZiIsInJldHJ5L01lcmNoYW50UHJvZmlsZVNlcnZpY2UvR2V0RnR1eEVsaWdpYmlsaXR5Iik7ClR1KCJLbFZxQmQiLCJyZXRyeS9NZXJjaGFudFByb2ZpbGVTZXJ2aWNlL0dldExpc3RpbmdEYXRhIik7VHUoInVab0VHIiwicmV0cnkvTWVyY2hhbnRQcm9maWxlU2VydmljZS9HZXRBY3Rpb25Hcm91cCIpO1R1KCJlRHM5M2QiLCJyZXRyeS9NZXJjaGFudFByb2ZpbGVTZXJ2aWNlL0dldE1lcmNoYW50Q2VudGVyTGFzdEFjY2Vzc2VkQWNjb3VudCIpO1R1KCJabjNiY2MiLCJyZXRyeS9NZXJjaGFudFByb2ZpbGVTZXJ2aWNlL1ZhbGlkYXRlQXV0aG9yaXR5Iik7VHUoInNGaGRhYyIsInJldHJ5L01lcmNoYW50UHJvZmlsZVNlcnZpY2UvR2V0TWNPdmVybGF5RWxpZ2liaWxpdHkiKTtUdSgib2g3ejMiLCJyZXRyeS9NZXJjaGFudFByb2ZpbGVTZXJ2aWNlL01hcmtNY092ZXJsYXlBc1NlZW4iLCEwKTtUdSgiejZQSWFlIiwicmV0cnkvTWluZHNlYXJjaEZyb250ZW5kU2VydmljZS9HZXRBbnN3ZXJzIik7VHUoIk94a0pnYyIsInJldHJ5L01pbmRzZWFyY2hGcm9udGVuZFNlcnZpY2UvU3VibWl0QW5zd2VyIiwhMCk7VHUoIkZCcEZwZiIsInJldHJ5L01pbmRzZWFyY2hGcm9udGVuZFNlcnZpY2UvU3VibWl0UXVlc3Rpb24iLCEwKTtUdSgiaXFnVTllIiwid2ViL1ByaXZhdGVNZWRpYVN1YnNTZXJ2aWNlL0dldEJ1eUZsb3dQYXJhbXMiKTtUdSgicG1wMEhmIiwid2ViL1ByaXZhdGVNZWRpYVN1YnNTZXJ2aWNlL0dldEVsaWdpYmlsaXR5Iik7VHUoIkZ3QmVhZiIsIndlYi9Qcml2YXRlTWVkaWFTdWJzU2VydmljZS9HZXRTa3UiKTtUdSgieGJ1WjRkIiwid2ViL1ByaXZhdGVNZWRpYVN1YnNTZXJ2aWNlL0dldFVzZXJDb25zZW50Iik7VHUoInF3ZENLZCIsIndlYi9Qcml2YXRlTWVkaWFTdWJzU2VydmljZS9HZXRVc2VyUHJvdmlkZXJJbmZvIik7VHUoInd6VFVrIiwid2ViL1ByaXZhdGVNZWRpYVN1YnNTZXJ2aWNlL1N5bmNocm9uaXplQ3JlYXRlT3JMaW5rQWNjb3VudCIpO1R1KCJmZjhTV2IiLCJyZXRyeS9Qcm9tb1Rocm90dGxlclNlcnZpY2UvUmVjb3JkUHJvbW9TdGF0ZSIsITApO1R1KCJPNUVXMGQiLCJyZXRyeS9TZWFyY2hBcGlTZXJ2aWNlL0dldENvbnZlcnNpb25Gb3JtdWxhIik7VHUoIm9sU1VtYiIsIndlYi9TZWFyY2hBcGlTZXJ2aWNlL0dldERpcmVjdG9yeVNlYXJjaFJlc3VsdCIpO1R1KCJYQ21ESGIiLCJ3ZWIvU2VhcmNoQXBpU2VydmljZS9HZXRGb3JtUXVlcnlEdXBsZXgiKTtUdSgiSW9YOUliIiwid2ViL1NlYXJjaEFwaVNlcnZpY2UvR2V0R2VvRW50aXR5Iik7VHUoIkpuNGZrZSIsIndlYi9TZWFyY2hBcGlTZXJ2aWNlL0dldEdlb1Jlc3VsdCIpO1R1KCJMTHJTOWUiLCJ3ZWIvU2VhcmNoQXBpU2VydmljZS9HZXRQYXJ0aWFsR2VvRW50aXR5Iik7VHUoIkx0YXNvYiIsInJldHJ5L1NlYXJjaEFwaVNlcnZpY2UvR2V0UmVzb2x2ZVNob3J0TGlua1Jlc3BvbnNlIik7VHUoInVZS1NvZiIsInJldHJ5L1NlYXJjaEFwaVNlcnZpY2UvR2V0U2hvcnRlbmVkS3BTaGFyaW5nVXJsIik7VHUoIkNUb2E4ZSIsInJldHJ5L1NlYXJjaEFwaVNlcnZpY2UvR2V0VHJhbnNsYXRpb24iKTtUdSgiZGE1cGNmIiwid2ViL1NpbW9uU2VydmljZS9SZWdpc3RlclNpbW9uQWN0aW9uIiwhMCk7VHUoInpXNE5RZCIsIndlYi9TdHlsZUlkZWFzU2VydmljZS9HZXRTdHlsZUlkZWFzIik7VHUoIlFsREE4ZSIsInJldHJ5L1JlY29yZFN1YnNjcmlwdGlvbnNTZXJ2aWNlL1JlY29yZFN1YnNjcmlwdGlvbnMiLCEwKTtUdSgiT1d6aG9mIiwicmV0cnkvU3VnY1Jldmlld1NlcnZpY2UvQ3JlYXRlU3VnY01lcmNoYW50UmV2aWV3IiwhMCk7VHUoIlI2ZklaYiIsInJldHJ5L1N1Z2NSZXZpZXdTZXJ2aWNlL0NyZWF0ZVN1Z2NNZXJjaGFudFJldmlld05vVm90ZSIsITApO1R1KCJxRVphMWIiLCJyZXRyeS9TdWdjUmV2aWV3U2VydmljZS9DcmVhdGVTdWdjUHJvZHVjdFJldmlldyIsITApO1R1KCJucktFVmIiLCJyZXRyeS9TdWdjUmV2aWV3U2VydmljZS9EZWxldGVTdWdjUHJvZHVjdFJldmlldyIsITApO1R1KCJYVW10eSIsInJldHJ5L1N1Z2NSZXZpZXdTZXJ2aWNlL1NldE9wdE91dFN0YXR1cyIsITApO1R1KCJja1Z6aSIsIm5vcmV0cnkvRWRpdFNlcnZpY2UvU3VibWl0RWRpdCIsITApO1R1KCJuRWRQcmIiLCJub3JldHJ5L0VkaXRTZXJ2aWNlL0RlbGV0ZUVkaXQiLCEwKTtUdSgidzNjUm1iIiwid2ViL1RyYXZlbEFkdmlzb3J5U2VydmljZS9TdWJzY3JpYmUiLCEwKTtUdSgiREJ5eUJkIiwid2ViL1RyYXZlbEFkdmlzb3J5U2VydmljZS9VbnN1YnNjcmliZSIsITApO1R1KCJ2MWxvM2MiLCJ3ZWIvVHJhdmVsU2F2ZXNTZXJ2aWNlL1RyYWNrRmxpZ2h0IiwhMCk7VHUoIkZtYTF5ZCIsIndlYi9UcmF2ZWxTYXZlc1NlcnZpY2UvVW50cmFja0ZsaWdodCIsITApO1R1KCJ4N3Zva2IiLCJ3ZWIvVWRzRW5jcnlwdGlvblNlcnZpY2UvR2V0RW5jcnlwdGVkVWRzIik7VHUoImN0eGZ6IiwicmV0cnkvVW5pdmVyc2FsTWVyY2hhbnRWaWV3ZXJQcm94eVNlcnZpY2UvR2V0UmF0aW5nQW5kQnVzaW5lc3NJbmZvcm1hdGlvbiIpO1R1KCJVd2FnUWMiLCJyZXRyeS9Vbml2ZXJzYWxNZXJjaGFudFZpZXdlclByb3h5U2VydmljZS9HZXRNZXJjaGFudFF1YWxpdHkiKTtUdSgiRmRCc2ZjIiwicmV0cnkvVW5pdmVyc2FsTWVyY2hhbnRWaWV3ZXJQcm94eVNlcnZpY2UvR2V0RGVsaXZlcnlBbmRSZXR1cm5zIik7VHUoIlo2QXFOZCIsInJldHJ5L1VuaXZlcnNhbE1lcmNoYW50Vmlld2VyUHJveHlTZXJ2aWNlL0dldENvbnRhY3QiKTtUdSgiWDdCSDBlIiwicmV0cnkvVW5pdmVyc2FsTWVyY2hhbnRWaWV3ZXJQcm94eVNlcnZpY2UvR2V0UmV2aWV3SGlzdG9ncmFtIik7VHUoIlpKdUtzZiIsInJldHJ5L1VuaXZlcnNhbE1lcmNoYW50Vmlld2VyUHJveHlTZXJ2aWNlL1NlYXJjaE1lcmNoYW50UmV2aWV3Iik7VHUoImk4UmtUYiIsInJldHJ5L1JlY29yZFVzZXJBY3Rpb25zU2VydmljZS9SZWNvcmRVc2VyQWN0aW9ucyIsITApO1R1KCJrTkhkMGUiLCJyZXRyeS9Vc2VyRmVlZGJhY2tTZXJ2aWNlL1VwZGF0ZVVzZXJGZWVkYmFjayIsITApOwp9Y2F0Y2goZSl7Xy5fRHVtcEV4Y2VwdGlvbihlKX0KdHJ5ewp2YXIgSzdiLFA3YixRN2IsUjdiO0s3Yj1mdW5jdGlvbihhKXtyZXR1cm4gXy5ZR2IoYSwiZ3dzY2xpZW50Iil9OwpfLk83Yj1hc3luYyBmdW5jdGlvbihhLGIsYyxkLGUpe3ZhciBmPUw3YixnPSgwLF8uTWYpKCksaD1nKCk7Zz1nKDEpO3RyeXtjLmhlYWRlcnN8fChjLmhlYWRlcnM9bmV3IE1hcCk7Yy5oZWFkZXJzLnNldCgieC1zZy1lIiwiMSIpO2xldCBtPW5ldyBNN2IoZiksbj1tLm5vdygpO3RyeXtpZihiPT09MCl7Yy5HdCYmXy5ENGIoXy5TNmIoYy5qdCxjLkd0KSk7bGV0IHA9Zyhhd2FpdCBoKE43YihtKSkpO2lmKGUpe2xldCByPWMudXJsLmluY2x1ZGVzKCI/Iik/IiYiOiI/IjtjLnVybD1gJHtjLnVybH0ke3J9c2VpPSR7ZX1gfWVsc2UgXy5WZShFcnJvcigicGgiKSx7RGY6e2FzeW5jVHlwZTpjLmp0fSxsZXZlbDoyfSk7Yy5oZWFkZXJzLnNldCgiWC1TZy1TcyIscCk7cmV0dXJuIGQoYyl9Yj09PTEmJihtLmthPSEwLG0uc2V0dXAoKSk7cmV0dXJuIFByb21pc2UucmVzb2x2ZShhKX1maW5hbGx5e2coKTtsZXQgcD1tLm5vdygpLW47aWYoZi53c2MmJmMueWcmJmIhPT0yKXthOnN3aXRjaChiKXtjYXNlIDA6dmFyIGs9CiJTWU5DIjticmVhayBhO2Nhc2UgMTprPSJBU1lOQyI7YnJlYWsgYTtkZWZhdWx0Oms9Ik5PTkUifWMueWcuWnMoYj09PTA/InNnYWxmc2MiOiJzZ2FsZmFjIixwLGspfX19ZmluYWxseXtoKCl9fTtQN2I9ZnVuY3Rpb24oYSxiKXt2YXIgYz1fLmQ3YigpO2I9YigpO2Eub2EoIm4iLF8uZDdiKCktYyk7cmV0dXJuIGJ9O1E3Yj1mdW5jdGlvbihhKXt2YXIgYj17fTtpZihhLmlzRGlzcG9zZWQoKSl0aHJvdyBFcnJvcigibmgiKTthLnhjLmthKCJuIik7dmFyIGM9UDdiKGEueGMsKCk9PmEuQWEoW2Iuck9iLGIuQU9jLGIuVVRjLGIuU09jXSkpO2EueGMuQmEoYy5sZW5ndGgpO2EueGMuQWEoKTtyZXR1cm4gY307UjdiPV8uZGMoXy5CN2IpO3ZhciBUN2I9ZnVuY3Rpb24oYSxiKXtyZXR1cm4gXy52ayhhLDEsUzdiLGIpfSxVN2I9ZnVuY3Rpb24oYSxiKXtfLnhqKGEsMyxTN2IsXy5nY2EoYiwhMSwhMCkpfSxWN2I9ZnVuY3Rpb24oYSxiKXtyZXR1cm4gXy5TYihhLF8uR3QsMixiKX0sVzdiPWNsYXNzIGV4dGVuZHMgXy5se2NvbnN0cnVjdG9yKGEpe3N1cGVyKGEpfUxmKCl7cmV0dXJuIF8uT2oodGhpcyw0KX1Vbygpe3JldHVybiBfLmVpKHRoaXMsNCl9fSxTN2I9WzEsM107dmFyIFg3Yj1uZXcgXy5WdCgicWhCNmliIixjbGFzcyBleHRlbmRzIF8ubHtjb25zdHJ1Y3RvcihhKXtzdXBlcihhKX1Qcygpe3JldHVybiBfLnQodGhpcywxKX19LFc3YixbXy5taSwhMCxfLmxpLCIvVmFsaWRhdGlvbkFzeW5jU2VydmljZS5WYWxpZGF0ZSJdKTt2YXIgWTdiLFo3YiwkN2IsYThiLGI4YixjOGIsZDhiLGU4YixmOGIsaDhiLGk4YixrOGIsbDhiLG04YjtZN2I9ISEoXy5PaVs1OV0+PjE3JjEpO1o3Yj0hIShfLk9pWzU5XT4+MTgmMSk7JDdiPSEhKF8uT2lbNTldPj4xOSYxKTthOGI9ISEoXy5PaVs1OV0+PjIwJjEpO2I4Yj0hIShfLk9pWzU5XT4+MjEmMSk7YzhiPSEhKF8uT2lbNTldPj4yMiYxKTtkOGI9ISEoXy5PaVs1OV0+PjIzJjEpO2U4Yj0hIShfLk9pWzU5XT4+MjQmMSk7ZjhiPSEhKF8uT2lbNTldPj4yNSYxKTtfLmc4Yj0hIShfLk9pWzU5XT4+MjYmMSk7aDhiPSEhKF8uT2lbNTldPj4yNyYxKTtpOGI9ISEoXy5PaVs1OV0+PjI4JjEpO18uajhiPSEhKF8uT2lbNTldPj4yOSYxKTtrOGI9ISEoXy5PaVs2MF0mMSk7bDhiPSEhKF8uT2lbNjBdJjIpO204Yj0hIShfLk9pWzYwXSY0KTt2YXIgbjhiPURhdGUubm93KCksTjdiPWFzeW5jIGZ1bmN0aW9uKGEpe3ZhciBiPSgwLF8uTWYpKCksYz1iKCk7Yj1iKDEpO3RyeXtpZighYihhd2FpdCBjKG84YihhLCEwKSkpKXJldHVybiIiO2Eud2E9ITA7Yihhd2FpdCBjKHA4YihhLCEwKSkpO2lmKCFhLm9hKXJldHVybiIiO3E4YihhLCEwKTtyZXR1cm4gYS5vYX1maW5hbGx5e2MoKX19LHI4Yj1mdW5jdGlvbihhLGIpe2Eub0gucnVjJiZhLnNlbmRCZWFjb24oYil9LHU4Yj1mdW5jdGlvbihhLGIpe3ZhciBjPVQ3YihuZXcgVzdiLGEub2EpO2M9Xy5aaChjLDQsMyk7Yz1WN2IoYyxfLkg2YihuZXcgXy5HdCxfLkY2YihuZXcgXy5HNmIsYS5laSkpKTthLm9ILldPY3x8KGEub0gucW1jPyhjPWAvc2d2YWxpZD9zZ19zcz0ke2MuRmMoKX0mZWk9JHthLmVpfWAsczhiKGMpKTp0OGIoYykpO3E4YihhLGIpfSxvOGI9YXN5bmMgZnVuY3Rpb24oYSxiKXt2YXIgYz0oMCxfLk1mKSgpLGQ9YygpO2M9YygxKTt0cnl7dHJ5e2xldCBmPWMoYXdhaXQgZCh2OGIoYSwKYikpKTtyOGIoYSxgL2dlbl8yMDQ/Y2FkPXNnX2EmZWk9JHthLmVpfSZtPWZldGNoJnQ9JHthLm5vdygpfWApO2EuTmE9Xy50KGYsNCx2b2lkIDAsXy5kYikubGVuZ3RoO2EuWmE9YS5ub3coKTtjKGF3YWl0IGQodzhiKGYpKSk7YS5yYj1hLm5vdygpO3ZhciBlPW5ldyBfLkY3Yih7Y2hhbGxlbmdlOmYsZmFiOntmNjpiPyJ1eTVGIjphLmthPyIyTXh4IjoiOHZFYSJ9fSk7YS5LYT1lO2EuUGE9YS5ub3coKTtyZXR1cm4hMH1jYXRjaChmKXtjKCk7bGV0IGc9YD9jYWQ9c2dfYSZlaT0ke2EuZWl9Jm09ZXJyb3ImdD0ke2Eubm93KCl9JmVycm9yPSR7Zn1gO3I4YihhLGAvZ2VuXzIwNCR7Z31gKTtyOGIoYSxgL2h0dHBzZXJ2aWNlL3JldHJ5L2pzZXJyb3Ike2d9YCk7cmV0dXJuITF9fWZpbmFsbHl7ZCgpfX0seDhiPWFzeW5jIGZ1bmN0aW9uKGEsYj0hMSl7dmFyIGM9KDAsXy5NZikoKSxkPWMoKTtjPWMoMSk7dHJ5e2lmKGMoYXdhaXQgZChwOGIoYSxiKSkpLGEub0guSUZjKWEuR2E9ITA7CmVsc2V7bGV0IGU9YS5vSC5KRmM/MUUzOjA7ZT09PTA/dThiKGEsYik6KDAsXy5qbykoKCk9Pnt1OGIoYSxiKX0sZSl9fWZpbmFsbHl7ZCgpfX0sejhiPWFzeW5jIGZ1bmN0aW9uKGEpe3ZhciBiPSgwLF8uTWYpKCksYz1iKCk7Yj1iKDEpO3RyeXtsZXQgZCxlPWIoYXdhaXQgYygoZD15OGIuSEZkKT09bnVsbD92b2lkIDA6ZC5jYWxsKHk4Yix2b2lkIDApKSk7aWYoZSl7bGV0IGY9VjdiKG5ldyBXN2IsXy5INmIobmV3IF8uR3QsXy5GNmIobmV3IF8uRzZiLGEuZWkpKSk7ZS5BYSgpP1U3YihmLGUub2EoKSk6VDdiKGYsZS53YSgpKTtsZXQgZz1lLkxmKCk7Zz09PTE/Xy5aaChmLDQsMSk6Zz09PTImJl8uWmgoZiw0LDIpO0s3YihYN2IuZ2V0SW5zdGFuY2UoZikuQ3coXy5PcSkpLmNhdGNoKCgpPT57fSk7cmV0dXJuITB9cmV0dXJuITF9ZmluYWxseXtjKCl9fSxBOGI9ZnVuY3Rpb24oYSl7dmFyIGI9KCk9PnthLkFhPWRvY3VtZW50LmhpZGRlbjthLm9ILmlQYyYmYS5BYSYmKHg4YihhLAohMCksYS51bmxpc3RlbigpKX07YS5FYT1fLmhlKHdpbmRvdywicGFnZWhpZGUiLGIpO2EuSWE9Xy5oZShkb2N1bWVudCwidmlzaWJpbGl0eWNoYW5nZSIsYil9LEI4Yj1hc3luYyBmdW5jdGlvbihhKXt2YXIgYj0oMCxfLk1mKSgpLGM9YigpO2I9YigxKTt0cnl7Yihhd2FpdCBjKG84YihhLCExKSkpJiYoYS53YT0hMCxhLmthJiYoYihhd2FpdCBjKGEud2FpdCgxRTQpKSksYihhd2FpdCBjKHg4YihhKSkpKSl9ZmluYWxseXtjKCl9fSxwOGI9YXN5bmMgZnVuY3Rpb24oYSxiKXt2YXIgYz0oMCxfLk1mKSgpLGQ9YygpO2M9YygxKTt0cnl7aWYoYS53YSE9PSExKXthLndhPSExO2EubmI9YS5ub3coKTtpZighYS5vSC5VT2MpaWYoYil7bGV0IGU7YS5vYT0oZT1hLkthKT09bnVsbD92b2lkIDA6UTdiKGUpfWVsc2V7bGV0IGU7YS5vYT1jKGF3YWl0IGQoKGU9YS5LYSk9PW51bGw/dm9pZCAwOmUuWlgoe30pKSl9YS5PYT1hLm5vdygpfX1maW5hbGx5e2QoKX19LHE4Yj1mdW5jdGlvbihhLGIpe2lmKCFhLm9ILlFPYyl7bGV0IGM9CmAvZ2VuXzIwND9jYWQ9c2dfYV9zcyZlaT0ke2EuZWl9JnNpdD0ke2EuU2F9JnNmdD0ke2EuUmF9JnNsdD0ke2EuWmF9JnN2dD0ke2EucmJ9JmV2dD0ke2EuUGF9JnNzdD0ke2EubmJ9JmVzdD0ke2EuT2F9JmJ0PSR7YS5ub3coKX0mcGg9JHthLkFhfSZicms9JHtifSZjbD0ke2EuTmF9Jml3PTEmc3c9MTAmY2M9JHthLkJhfWA7YiYmKGMrPWAmc2NzPSR7YHNnX3NzPSR7YS5vYX1gLmxlbmd0aH1gKTthLnNlbmRCZWFjb24oYyl9fSx2OGI9YXN5bmMgZnVuY3Rpb24oYSxiKXt2YXIgYz1hLmNYYjtpZihjKXJldHVybiBhLmNYYj12b2lkIDAsYzthLlJhPWEubm93KCk7cmV0dXJuIEM4YihhLGIpfSx3OGI9YXN5bmMgZnVuY3Rpb24oYSl7dmFyIGI9KDAsXy5NZikoKSxjPWIoKTtiPWIoMSk7dHJ5e2IoYXdhaXQgYyhfLko3YihfLkg3YigpLGEpKSl9ZmluYWxseXtjKCl9fSxDOGI9YXN5bmMgZnVuY3Rpb24oYSxiKXt2YXIgYz0oMCxfLk1mKSgpLGQ9YygpO2M9YygxKTt0cnl7bGV0IGc9Yyhhd2FpdCBkKGEuZnBiKGAvc2dhc3luYz9laT0ke2EuZWl9JnNnX2NrPSR7Yj8KIk9ONCI6YS5rYT8iUXlFIjoiQk1XIn1gLHtjYWNoZToibm8tc3RvcmUifSkpKSxoPWMoYXdhaXQgZChnLmFycmF5QnVmZmVyKCkpKTt2YXIgZT1uZXcgVWludDhBcnJheShoKTtsZXQgaz1uZXcgVWludDhBcnJheShlLmxlbmd0aCk7Zm9yKGE9MDthPGUubGVuZ3RoO2ErKylrW2FdPWVbYV0rOTc7aWYoXy5lYS5UZXh0RGVjb2Rlcil2YXIgZj0obmV3IFRleHREZWNvZGVyKS5kZWNvZGUoayk7ZWxzZSBpZihrLmxlbmd0aDw9ODE5MilmPVN0cmluZy5mcm9tQ2hhckNvZGUuYXBwbHkobnVsbCxrKTtlbHNle2U9IiI7Zm9yKGE9MDthPGsubGVuZ3RoO2ErPTgxOTIpe2xldCBtPUFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGssYSxhKzgxOTIpO2UrPVN0cmluZy5mcm9tQ2hhckNvZGUuYXBwbHkobnVsbCxtKX1mPWV9cmV0dXJuIFI3YihmKX1maW5hbGx5e2QoKX19LHQ4Yj1mdW5jdGlvbihhKXtLN2IoWDdiLmdldEluc3RhbmNlKGEpLkN3KF8uT3EpKS5jYXRjaCgoKT0+e30pfSxzOGI9CmFzeW5jIGZ1bmN0aW9uKGEpe2ZldGNoKGEse2NhY2hlOiJuby1zdG9yZSIsa2VlcGFsaXZlOiEwfSl9LE03Yj1jbGFzcyBleHRlbmRzIF8uRWR7Y29uc3RydWN0b3IoYSl7c3VwZXIoKTt0aGlzLm9IPWE7dGhpcy5rYT0hMTt0aGlzLkJhPTA7dGhpcy5HYT10aGlzLkFhPXRoaXMud2E9ITE7dGhpcy54Yz1udWxsO3RoaXMuZWk9KDAsXy52bS5peCkoKTtyOGIodGhpcyxgL2dlbl8yMDQ/Y2FkPXNnX2EmZWk9JHt0aGlzLmVpfSZtPWN0ciZ0PSR7dGhpcy5ub3coKX1gKTtkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCJET01Db250ZW50TG9hZGVkIiwoKT0+e3RoaXMuR2EmJih0aGlzLkdhPSExLHU4Yih0aGlzLHRoaXMub0gubk1iKSl9LCExKX1hc3luYyBzZXR1cCgpe3ZhciBhPSgwLF8uTWYpKCksYj1hKCk7YT1hKDEpO3RyeXtpZih0aGlzLmthfHx0aGlzLm9ILkZMYilyOGIodGhpcyxgL2dlbl8yMDQ/Y2FkPXNnX2EmZWk9JHt0aGlzLmVpfSZtPXNldHVwJnQ9JHt0aGlzLm5vdygpfWApLAp0aGlzLm9ILm5NYj9hKGF3YWl0IGIobzhiKHRoaXMsITApKSkmJih0aGlzLndhPSEwLGEoYXdhaXQgYih4OGIodGhpcywhMCkpKSx0aGlzLmRpc3Bvc2UoKSk6KGEoYXdhaXQgYih0aGlzLndhaXQoMUUzKSkpLHRoaXMuU2E9dGhpcy5ub3coKSxyOGIodGhpcyxgL2dlbl8yMDQ/Y2FkPXNnX2EmZWk9JHt0aGlzLmVpfSZtPWlkbGUmdD0ke3RoaXMubm93KCl9YCksKDAsXy5WTGEpKGFzeW5jKCk9Pnt2YXIgYz0oMCxfLk1mKSgpLGQ9YygpO2M9YygxKTt0cnl7cjhiKHRoaXMsYC9nZW5fMjA0P2NhZD1zZ19hJmVpPSR7dGhpcy5laX0mbT1zdGFydCZ0PSR7dGhpcy5ub3coKX1gKTt0cnl7aWYoYyhhd2FpdCBkKHo4Yih0aGlzKSkpKXt0aGlzLmRpc3Bvc2UoKTtyZXR1cm59fWNhdGNoKGUpe2MoKX10aGlzLkFhPWRvY3VtZW50LmhpZGRlbjtmb3IoQThiKHRoaXMpO3RoaXMuQmE8MTspdGhpcy5CYSsrLGMoYXdhaXQgZChCOGIodGhpcykpKTt0aGlzLmRpc3Bvc2UoKX1maW5hbGx5e2QoKX19KSl9ZmluYWxseXtiKCl9fWFzeW5jIHdhaXQoYSl7cmV0dXJuIG5ldyBQcm9taXNlKGI9Pgp7KDAsXy5qbykoKCk9PnZvaWQgYigpLGEpfSl9bm93KCl7dmFyIGE9InBlcmZvcm1hbmNlImluIHdpbmRvdz9wZXJmb3JtYW5jZS5ub3coKTpEYXRlLm5vdygpLW44YjtyZXR1cm4gTWF0aC5yb3VuZChhKjEwKS8xMH1hc3luYyBmcGIoYSxiKXtyZXR1cm4gZmV0Y2goYSxiKX11bmxpc3Rlbigpe3RoaXMuSWEmJihfLkFuKHRoaXMuSWEpLHRoaXMuSWE9dm9pZCAwKTt0aGlzLkVhJiYoXy5Bbih0aGlzLkVhKSx0aGlzLkVhPXZvaWQgMCl9cWMoKXtpZighdGhpcy5vSC5QT2Mpe3RoaXMudW5saXN0ZW4oKTtpZighdGhpcy5vSC5GTGIpe2xldCBhOyhhPXRoaXMuS2EpPT1udWxsfHxhLmRpc3Bvc2UoKX1zdXBlci5xYygpfX1zZW5kQmVhY29uKGEpe3ZhciBiOygoYj1uYXZpZ2F0b3IpPT1udWxsP3ZvaWQgMDpiLnNlbmRCZWFjb24pIT09dm9pZCAwP25hdmlnYXRvci5zZW5kQmVhY29uKGEsIiIpOihuZXcgSW1hZ2UpLnNyYz1hfX0seThiPXt9O3ZhciBMN2I9e2lQYzplOGIsUE9jOmE4YixRT2M6YjhiLFdPYzpjOGIsVU9jOmQ4YixuTWI6ZjhiLHJ1YzokN2IscW1jOlo3YixGTGI6WTdiLElGYzpsOGIsSkZjOm04Yix3c2M6aDhiLE96ZDppOGIsVkJkOms4Yn07Cn1jYXRjaChlKXtfLl9EdW1wRXhjZXB0aW9uKGUpfQp0cnl7Cl8uUjZiPWNsYXNzIGV4dGVuZHMgXy5IS2F7Y29uc3RydWN0b3IoYSxiLGMsZCl7c3VwZXIoIkhUVFAgZXJyb3IiKTt0aGlzLmRldGFpbHM9e3M6YSxydXJsOmIsaXNyOmMscnRleHQ6ZH19fTsKfWNhdGNoKGUpe18uX0R1bXBFeGNlcHRpb24oZSl9CnRyeXsKXy5WeD1mdW5jdGlvbihhKXtfLkVkLmNhbGwodGhpcyk7dGhpcy5FYT0xO3RoaXMuQWE9W107dGhpcy5CYT0wO3RoaXMub2E9W107dGhpcy53YT17fTt0aGlzLkdhPSEhYX07Xy5VaShfLlZ4LF8uRWQpO18uVngucHJvdG90eXBlLnN1YnNjcmliZT1mdW5jdGlvbihhLGIsYyl7dmFyIGQ9dGhpcy53YVthXTtkfHwoZD10aGlzLndhW2FdPVtdKTt2YXIgZT10aGlzLkVhO3RoaXMub2FbZV09YTt0aGlzLm9hW2UrMV09Yjt0aGlzLm9hW2UrMl09Yzt0aGlzLkVhPWUrMztkLnB1c2goZSk7cmV0dXJuIGV9O18uVngucHJvdG90eXBlLnVuc3Vic2NyaWJlPWZ1bmN0aW9uKGEsYixjKXtpZihhPXRoaXMud2FbYV0pe2xldCBkPXRoaXMub2E7aWYoYT1hLmZpbmQoZnVuY3Rpb24oZSl7cmV0dXJuIGRbZSsxXT09YiYmZFtlKzJdPT1jfSkpcmV0dXJuIHRoaXMuY1YoYSl9cmV0dXJuITF9OwpfLlZ4LnByb3RvdHlwZS5jVj1mdW5jdGlvbihhKXt2YXIgYj10aGlzLm9hW2FdO2lmKGIpe2xldCBjPXRoaXMud2FbYl07dGhpcy5CYSE9MD8odGhpcy5BYS5wdXNoKGEpLHRoaXMub2FbYSsxXT0oKT0+e30pOihjJiZfLkRhKGMsYSksZGVsZXRlIHRoaXMub2FbYV0sZGVsZXRlIHRoaXMub2FbYSsxXSxkZWxldGUgdGhpcy5vYVthKzJdKX1yZXR1cm4hIWJ9OwpfLlZ4LnByb3RvdHlwZS5rYT1mdW5jdGlvbihhLGIpe3ZhciBjPXRoaXMud2FbYV07aWYoYyl7bGV0IGU9QXJyYXkoYXJndW1lbnRzLmxlbmd0aC0xKTt2YXIgZD1hcmd1bWVudHMubGVuZ3RoO2xldCBmO2ZvcihmPTE7ZjxkO2YrKyllW2YtMV09YXJndW1lbnRzW2ZdO2lmKHRoaXMuR2EpZm9yKGY9MDtmPGMubGVuZ3RoO2YrKylkPWNbZl0sUTZiKHRoaXMub2FbZCsxXSx0aGlzLm9hW2QrMl0sZSk7ZWxzZXt0aGlzLkJhKys7dHJ5e2ZvcihmPTAsZD1jLmxlbmd0aDtmPGQmJiF0aGlzLmlzRGlzcG9zZWQoKTtmKyspe2xldCBnPWNbZl07dGhpcy5vYVtnKzFdLmFwcGx5KHRoaXMub2FbZysyXSxlKX19ZmluYWxseXtpZih0aGlzLkJhLS0sdGhpcy5BYS5sZW5ndGg+MCYmdGhpcy5CYT09MClmb3IoO2M9dGhpcy5BYS5wb3AoKTspdGhpcy5jVihjKX19fX07dmFyIFE2Yj1mdW5jdGlvbihhLGIsYyl7Xy5FbihmdW5jdGlvbigpe2EuYXBwbHkoYixjKX0pfTsKXy5WeC5wcm90b3R5cGUuY2xlYXI9ZnVuY3Rpb24oYSl7aWYoYSl7bGV0IGI9dGhpcy53YVthXTtiJiYoYi5mb3JFYWNoKHRoaXMuY1YsdGhpcyksZGVsZXRlIHRoaXMud2FbYV0pfWVsc2UgdGhpcy5vYS5sZW5ndGg9MCx0aGlzLndhPXt9fTtfLlZ4LnByb3RvdHlwZS56aT1mdW5jdGlvbihhKXtpZihhKXt2YXIgYj10aGlzLndhW2FdO3JldHVybiBiP2IubGVuZ3RoOjB9YT0wO2ZvcihiIGluIHRoaXMud2EpYSs9dGhpcy56aShiKTtyZXR1cm4gYX07Xy5WeC5wcm90b3R5cGUucWM9ZnVuY3Rpb24oKXtfLlZ4LlJkLnFjLmNhbGwodGhpcyk7dGhpcy5jbGVhcigpO3RoaXMuQWEubGVuZ3RoPTB9Owp9Y2F0Y2goZSl7Xy5fRHVtcEV4Y2VwdGlvbihlKX0KdHJ5ewpfLlA2Yj1mdW5jdGlvbigpe3ZhciBhO3ZhciBiPShhPWdvb2dsZS54anMpPT1udWxsP3ZvaWQgMDphLmJhc2Vqczt2YXIgYzthPShjPWdvb2dsZS54anMpPT1udWxsP3ZvaWQgMDpjLmJhc2Vjc3M7dmFyIGQ7Yz0oZD1nb29nbGUueGpzKT09bnVsbD92b2lkIDA6ZC5iYXNlY29tYjtiPV8ubWphKHtfYmFzZWpzOmIsX2Jhc2Vjc3M6YSxfYmFzZWNvbWI6Y30sQm9vbGVhbik7cmV0dXJuIG5ldyBNYXAoT2JqZWN0LmVudHJpZXMoYikpfTsKfWNhdGNoKGUpe18uX0R1bXBFeGNlcHRpb24oZSl9CnRyeXsKdmFyIEo2YixLNmIsTDZiLE02YixJNmI7SjZiPWFzeW5jIGZ1bmN0aW9uKGEsYixjKXt2YXIgZD1fLm80YixlPSgwLF8uTWYpKCksZj1lKCk7ZT1lKDEpO3RyeXtsZXQgZz1JNmIrKztkLnNldChhLHtzaTpnfSwieCIpO2xldCBoPXt2YWx1ZXM6W10sdzRiOltdLHlsYjpbXX07Xy5xNGIuc2V0KGcsaCk7dHJ5e2UoYXdhaXQgZihiLmZvckVhY2goaz0+e2gudmFsdWVzLnB1c2goayk7Zm9yKGxldCBtIG9mIGgudzRiKW0oayl9KSkpO18ucTRiLmhhcyhnKSYmZC5zZXQoYSx7c3Y6aC52YWx1ZXN9LGMpO2ZvcihsZXQgayBvZiBoLnlsYilrKCl9Y2F0Y2goayl7ZSgpO2QucmVtb3ZlKGEpO2ZvcihsZXQgbSBvZiBoLnlsYiltKGspfWZpbmFsbHl7Xy5xNGIuZGVsZXRlKGcpfX1maW5hbGx5e2YoKX19O0s2Yj1mdW5jdGlvbihhKXtyZXR1cm5bYS5tZXRhZGF0YS5GYygpLGEuYm9keV19OwpMNmI9ZnVuY3Rpb24oKXt2YXIgYSxiO3JldHVybntzdHJlYW06bmV3IF8ucjRiKChjLGQpPT57YT1jO2I9ZH0pLHB1c2g6YSxjbG9zZTpifX07TTZiPWZ1bmN0aW9uKGEpe3ZhciBiPVtdLGM9W10sZD1bXTtmb3IobGV0IGU9MDtlPDI7ZSsrKXtsZXQge3N0cmVhbTpmLHB1c2g6ZyxjbG9zZTpofT1MNmIoKTtiLnB1c2goZik7Yy5wdXNoKGcpO2QucHVzaChoKX1hLmZvckVhY2goZT0+e2ZvcihsZXQgZiBvZiBjKWYoZSl9KS50aGVuKCgpPT57Zm9yKGxldCBlIG9mIGQpZSgpfSxlPT57Zm9yKGxldCBmIG9mIGQpZihfLm00YihlKSl9KTtyZXR1cm4gYn07STZiPTA7Cl8uTjZiPWZ1bmN0aW9uKGEse2hlYWRlcjpiLHJlc291cmNlczpjfSxkPSExKXtpZighYS5BYSlyZXR1cm57aGVhZGVyOmIscmVzb3VyY2VzOmN9O3ZhciBlPWEucHJpb3JpdHk7Xy50KGIsMikhPT1TdHJpbmcoXy5oNGIpJiYhZCYmKGU9IngiKTt2YXIgW2YsZ109TTZiKGMpO18ubzRiLnNldChhLm9hLGIuRmMoKSxlKTtKNmIoYS53YSxmLm1hcChLNmIpLGUpO2EuQWEoKTthLmthPW51bGw7YS5BYT1udWxsO3JldHVybntoZWFkZXI6YixyZXNvdXJjZXM6Z319O18uTzZiPWFzeW5jIGZ1bmN0aW9uKGEsYixjLGQpe3ZhciBlPSgwLF8uTWYpKCksZj1lKCksZz1lKDEpO3RyeXtlPW51bGw7bGV0IGs9YT9fLkM0YihiLGEpOm51bGw7aWYoayYmKChlPWcoYXdhaXQgZihrLlBzKCkpKSl8fGsub3BlbigpfHwoZT1nKGF3YWl0IGYoay5QcygpKSkpLGUmJiFjJiZiPT09ImxjbF9ha3AiKSl7YT1lO3ZhciBoPWQmJmQuaGFzKCJ2ZWQiKT9kLmdldCgidmVkIik6IiI7bGV0IG09Xy50KGEuaGVhZGVyLDEpLG49Xy5jbyhtKS5HYygic3FpIiwiMTciKTtoJiZuLkdjKCJyZWZ2IixoKTtuLmxvZygpfXJldHVybntRemE6ayxOTWI6ZX19ZmluYWxseXtmKCl9fTsKfWNhdGNoKGUpe18uX0R1bXBFeGNlcHRpb24oZSl9CnRyeXsKXy5yNWI9bmV3IF8uYW87Xy5yNWIub2E9ITA7Xy5zNWI9ITE7Cn1jYXRjaChlKXtfLl9EdW1wRXhjZXB0aW9uKGUpfQp0cnl7Cl8uJDRiPWZ1bmN0aW9uKGEsYixjKXt0cnl7dmFyIGQ9SlNPTi5wYXJzZShhKX1jYXRjaChlKXtjKCksZD12b2lkIDB9cmV0dXJuIG5ldyBiKGQpfTsKfWNhdGNoKGUpe18uX0R1bXBFeGNlcHRpb24oZSl9CnRyeXsKXy5HNGI9ZnVuY3Rpb24oKXt2YXIgYT1uZXcgTWFwLGI9Xy5CZCgiZWpNTENkIik7Yi5MYigpJiZhLnNldCgiWC1HZW8iLF8ub20oYikpO2I9Xy5CZCgiUFlGdURjIik7Yi5MYigpJiZhLnNldCgiWC1DbGllbnQtRGF0YSIsXy5vbShiKSk7Yj1fLkJkKCJKSEhLdWIiKTtiLkxiKCkmJmEuc2V0KCJYLUNsaWVudC1QY3R4IixfLm9tKGIpKTtiPV8uQmQoInFmSTBaYyIpO2IuTGIoKSYmYS5zZXQoIlgtU2VhcmNoLUNpLUZpIixfLm9tKGIpKTtiPV8uQmQoIkFVZjdxYyIpO2IuTGIoKSYmYS5zZXQoIlgtU2lsay1DYXBhYmlsaXRpZXMiLF8ub20oYikpO2I9Xy5CZCgic3ZIaFZiIik7Yi5MYigpJiZhLnNldCgiWC1MZW5zLUNhcGFiaWxpdGllcyIsXy5vbShiKSk7cmV0dXJuIGF9Owp9Y2F0Y2goZSl7Xy5fRHVtcEV4Y2VwdGlvbihlKX0KdHJ5ewpfLkU0Yj0oKT0+IiI7Xy5GNGI9ITE7Cn1jYXRjaChlKXtfLl9EdW1wRXhjZXB0aW9uKGUpfQp0cnl7CnZhciBINGIsSzRiLEo0YjtINGI9ZnVuY3Rpb24oYSl7dmFyIGI9W107Zm9yKGxldCBbYyxkXW9mIGEpYT1kLGIucHVzaChlbmNvZGVVUklDb21wb25lbnQoU3RyaW5nKGMpKSsiOiIrZW5jb2RlVVJJQ29tcG9uZW50KFN0cmluZyhhKSkpO3JldHVybiBiLmpvaW4oIiwiKX07Xy5JNGI9ZnVuY3Rpb24oYSxiLGMsZCxlKXtiPW5ldyBfLmt1KGIrYyk7Zm9yKGxldCBbZixnXW9mIGQpYi5zZWFyY2hQYXJhbXMuc2V0KGYsIiIrZyk7aWYoYT09PSJQT1NUIilyZXR1cm4oZT1lLmdldCgiX2ZtdCIpfHxkLmdldCgiX2ZtdCIpKSYmYi5zZWFyY2hQYXJhbXMuc2V0KCJfZm10IixTdHJpbmcoZSkpLGIudG9TdHJpbmcoKTthPWIudG9TdHJpbmcoKTsoZT1INGIoZSkpJiYoYT1gJHthfSZhc3luYz0ke2V9YCk7cmV0dXJuIGF9OwpfLk40Yj1mdW5jdGlvbihhLGIsYyxkLHtjb250ZXh0OmU9bmV3IE1hcCx1cmxQYXJhbXM6Zj1uZXcgTWFwLEd0OmcsaG5iOmgsQmNhOmssdFY6bSxLMmI6bixhYWI6cH0scix4PSExKXtlPW5ldyBNYXAoWy4uLmVdKTshZS5oYXMoIl9mbXQiKSYmZi5oYXMoIl9mbXQiKT8oZS5zZXQoIl9mbXQiLGYuZ2V0KCJfZm10IikpLGYuZGVsZXRlKCJfZm10IikpOmUuaGFzKCJfZm10Iil8fGUuc2V0KCJfZm10IiwicHJvZyIpOyFlLmhhcygiX21hZG8iKSYmZi5oYXMoIl9tYWRvIikmJihlLnNldCgiX21hZG8iLGYuZ2V0KCJfbWFkbyIpKSxmLmRlbGV0ZSgiX21hZG8iKSk7ciYmZS5zZXQoIl9pZCIscik7aWYocj1hLnBiYSllLnNldCgiX3hzcmYiLHIpO2Vsc2UgaWYoYS5qdD09PSJmb2xpZiJ8fGEuanQ9PT0iZm9sd3IiKXt2YXIgejtsZXQgSDtpZihyPWEuanQ9PT0iZm9saWYiPyh6PWdvb2dsZS54c3JmKT09bnVsbD92b2lkIDA6ei5oMkJTN2U6KEg9Z29vZ2xlLnhzcmYpPT1udWxsP3ZvaWQgMDoKSC5IcU54b2UpZS5zZXQoIl94c3JmIixyKTtlbHNlIGlmKChjPT1udWxsPzA6Yy55X2IpJiZhLmp0PT09ImZvbGlmIil7ej1kb2N1bWVudC5xdWVyeVNlbGVjdG9yKCJbZGF0YS1hc3luYy1mb2xpZi14c3JmLXRva2VuXSIpO3ZhciBCO3omJigoQj16LmRhdGFzZXQpPT1udWxsPzA6Qi5hc3luY0ZvbGlmWHNyZlRva2VuKSYmZS5zZXQoIl94c3JmIix6LmRhdGFzZXQuYXN5bmNGb2xpZlhzcmZUb2tlbil9fWY9bmV3IE1hcChmKTtoJiZmLnNldCgiZGRpaSIsIjEiKTtoPWEuanQ7Qj1hLktlYTthPWEuZ3JhO2I9SjRiKGgsZixCLChkPT1udWxsP3ZvaWQgMDpkLmxCYSl8fCIiLChkPT1udWxsP3ZvaWQgMDpkLkZRYyl8fCIiLChkPT1udWxsP3ZvaWQgMDpkLnRyaWdnZXJWZWQpfHwiIiwoZD09bnVsbD92b2lkIDA6ZC5OUmMpfHwiIix4LGQ9PW51bGw/dm9pZCAwOmQuR0ssYj09bnVsbD92b2lkIDA6Yi5PUSxiPT1udWxsP3ZvaWQgMDpiLlBRLGM9PW51bGw/dm9pZCAwOmMueV9iLHApO2M9Cks0YihoLEIpO2Q9Xy5FNGIoYik7cD1fLkk0YihhLGQsYyxiLGUpO2Y9Xy5MNGIoYSxoLGUpO3JldHVybnttZXRob2Q6YSx1cmw6cCxVemI6Zixob3N0bmFtZTpkLHBhdGg6Yyx1cmxQYXJhbXM6YixXdzplLGp0OmgsR3Q6ZyxoZWFkZXJzOl8uTTRiKCksbVZhOngsQmNhOmssdFY6bSxLMmI6bn19O0s0Yj1mdW5jdGlvbihhLGIpe2lmKGI9PT0iIilhPWAvYXN5bmMvJHthfWA7ZWxzZSBpZihiPT09ImZlZWRfYXBpIilhPWAvZmVlZC1hcGkvYXN5bmMvJHthfWA7ZWxzZSBpZihiPT09InNlYXJjaCIpYT1gLyR7Yn1gO2Vsc2UgdGhyb3cgRXJyb3IoIlNnYCIrYik7aWYoIU80Yi50ZXN0KGEpKXRocm93IEVycm9yKCJUZ2AiK2EpO3JldHVybiBhfTtfLlA0Yj1mdW5jdGlvbihhLGIsYyxkLGU9IiIsZj0iIixnPSIiLGg9IiIsaz0iIixtLG4scCl7Yz1KNGIoYSxjLGUsZixnLGgsaywhMSxtLG4scCk7YT1LNGIoYSxlKTtlPV8uRTRiKGMpO3JldHVybiBfLkk0YihkLGUsYSxjLGIpfTsKXy5MNGI9ZnVuY3Rpb24oYSxiLGMpe2lmKGE9PT0iUE9TVCIpe2E9bmV3IE1hcDsoYz1INGIoYykpJiZhLnNldCgiYXN5bmMiLGAke2J9LCR7Y31gKTt2YXIgZD1bXTthLmZvckVhY2goKGUsZik9PnZvaWQgZC5wdXNoKGAke2Z9PSR7ZX1gKSk7cmV0dXJuIGQuam9pbigiJiIpfX07Cko0Yj1mdW5jdGlvbihhLGIsYyxkLGUsZixnLGgsayxtLG4scCxyKXt2YXIgeD1uZXcgTWFwO2gmJnguc2V0KCJwZiIsInkiKTttJiYoeC5zZXQoImZjIixtKSxuJiZ4LnNldCgiZmN2IixuKSk7cCYmeC5zZXQoImVscmMiLHApO2QmJmsmJihoPW5ldyBfLmVmLF8ua25hKGgsayxkKSwoZD1fLmZmKGgpKSYmeC5zZXQoInZldCIsZCkpO2Y/KHguc2V0KCJ2ZWQiLGYpLGdvb2dsZS5rQkwmJnguc2V0KCJibCIsZ29vZ2xlLmtCTCksZ29vZ2xlLnNuJiZ4LnNldCgicyIsZ29vZ2xlLnNuKSk6eC5zZXQoImVpIixlfHwoMCxfLnZtLml4KSgpKTtnJiZ4LnNldCgibGVpIixnKTtfLkZtYSh4LCExLCEwKTtnb29nbGUudWRtJiZ4LnNldCgidWRtIixnb29nbGUudWRtKTtfLkxHYih4KTt4LnNldCgieXYiLCIzIik7Yi5mb3JFYWNoKCh6LEIpPT57ej09PW51bGw/eC5kZWxldGUoQik6eC5zZXQoQix6KX0pO18uUTRiKHgpO2dvb2dsZS5zeHNyZiYmeC5zZXQoInN4c3JmIixnb29nbGUuc3hzcmYpOwpjPT09InNlYXJjaCImJnguc2V0KCJhc2VhcmNoIixhKTt4LnNldCgiY3MiLGRvY3VtZW50LmJvZHkuZGF0YXNldC5kdD8iMSI6IjAiKTtpZihyKXN3aXRjaChyKXtjYXNlIDI6eC5zZXQoIm1tIiwiYyIpO2JyZWFrO2Nhc2UgMzp4LnNldCgibW0iLCJzIik7YnJlYWs7ZGVmYXVsdDp4LnNldCgibW0iLCJjcyIpfV8uUjRiKHgpO3JldHVybiB4fTtfLk00Yj1mdW5jdGlvbigpe3ZhciBhPV8uRzRiKCk7UzRiJiZhLnNldCgiWC1Eb1MtQmVoYXZpb3IiLCJFbWJlZCIpO3JldHVybiBhfTt2YXIgTzRiLFM0YjtPNGI9L15bYS16MC05LV8vXSsoY2FsbGJhY2s6XGQrKT8kL2k7Xy5RNGI9KCk9Pnt9O18uUjRiPSgpPT57fTtTNGI9Xy5ERmE7Cn1jYXRjaChlKXtfLl9EdW1wRXhjZXB0aW9uKGUpfQp0cnl7Cl8uVzNiPWNsYXNzIGV4dGVuZHMgXy5HS2F7Y29uc3RydWN0b3IoYSxiLGM9e30sZD0yKXtzdXBlcihhLGQpO3RoaXMuZGV0YWlscz1jO3RoaXMuZGV0YWlscy50PWJ9fTsKfWNhdGNoKGUpe18uX0R1bXBFeGNlcHRpb24oZSl9CnRyeXsKCnZhciBIOGI9ZnVuY3Rpb24oYSxiLHtib2R5OmMsY29udGVudFR5cGU6ZCxMUmI6ZSx3aXRoQ3JlZGVudGlhbHM6ZixCTmE6ZyxoZWFkZXJzOmh9KXtyZXR1cm4gbmV3IF8ucjRiKChrLG0pPT57dmFyIG49bmV3IFhNTEh0dHBSZXF1ZXN0O24ub3BlbihhLGIpO24ud2l0aENyZWRlbnRpYWxzPSEhZjtjIT09dm9pZCAwJiZuLnNldFJlcXVlc3RIZWFkZXIoIkNvbnRlbnQtVHlwZSIsZHx8ImFwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZDtjaGFyc2V0PXV0Zi04Iik7aWYoaCE9PXZvaWQgMClmb3IobGV0IFt4LHpdb2YgaCluLnNldFJlcXVlc3RIZWFkZXIoeCx6KTt2YXIgcD1nP2cubGVuZ3RoOjAscj0hMTtuLm9ucmVhZHlzdGF0ZWNoYW5nZT0oKT0+e2lmKCEobi5yZWFkeVN0YXRlPFhNTEh0dHBSZXF1ZXN0LkhFQURFUlNfUkVDRUlWRUQpKXtpZihuLnJlYWR5U3RhdGU9PT1YTUxIdHRwUmVxdWVzdC5IRUFERVJTX1JFQ0VJVkVEKXt2YXIgeDtpZih4PW4ucmVzcG9uc2VVUkwpeD0Kbi5yZXNwb25zZVVSTCx4PShfLm1kKGIpfHxsb2NhdGlvbi5vcmlnaW4pIT09KF8ubWQoeCl8fGxvY2F0aW9uLm9yaWdpbik7aWYoeCl7bShuZXcgRDhiKGIsbi5yZXNwb25zZVVSTCkpO24uYWJvcnQoKTtyZXR1cm59ZSYmZS5rYSgiWU5RckNmIik7bi5nZXRSZXNwb25zZUhlYWRlcigiWC1Tb3JyeS1SZWRpcmVjdCIpJiYocj0hMCl9aWYoXy5pYWIobi5zdGF0dXMpKXtpZihwPG4ucmVzcG9uc2VUZXh0Lmxlbmd0aCl7aWYocil7bShuZXcgXy5SNmIobi5zdGF0dXMsdm9pZCAwLCEwLG4ucmVzcG9uc2VUZXh0KSk7bi5hYm9ydCgpO3JldHVybn1rKG4ucmVzcG9uc2VUZXh0LnN1YnN0cmluZyhwKSk7cD1uLnJlc3BvbnNlVGV4dC5sZW5ndGh9bi5yZWFkeVN0YXRlPT09WE1MSHR0cFJlcXVlc3QuRE9ORSYmKEU4YigpLG0oKSl9ZWxzZSBpZihuLnN0YXR1c3x8IUY4YiliLmluY2x1ZGVzKCIvYXN5bmNDb250ZXh0dWFsVGFzayIpP20oKTptKG5ldyBfLlI2YihuLnN0YXR1cyxuLnJlc3BvbnNlVVJMKSksCm4uYWJvcnQoKX19O0c4YigpO24uc2VuZChjKX0pfSxJOGI9ZnVuY3Rpb24oYSxiKXsoe0xSYjpkLEJOYTpjfT17Qk5hOiIpXX0nXG4ifSk7dmFyIGMsZDtyZXR1cm4gbmV3IF8ucjRiKChlLGYpPT57dmFyIGc9Yz9jLmxlbmd0aDowLGg9WE1MSHR0cFJlcXVlc3QuVU5TRU5ULGs9ITEsbT0oKT0+e2lmKGEucmVhZHlTdGF0ZTxoKXRocm93IEVycm9yKCJxaCIpO2EucmVhZHlTdGF0ZT49WE1MSHR0cFJlcXVlc3QuT1BFTkVEJiZoPFhNTEh0dHBSZXF1ZXN0Lk9QRU5FRCYmKGg9WE1MSHR0cFJlcXVlc3QuT1BFTkVELGEucmVhZHlTdGF0ZTxYTUxIdHRwUmVxdWVzdC5ET05FJiYoRzhiKCksaz0hMCkpO2lmKCEoYS5yZWFkeVN0YXRlPFhNTEh0dHBSZXF1ZXN0LkhFQURFUlNfUkVDRUlWRUQpKXtpZihhLnJlYWR5U3RhdGU+PVhNTEh0dHBSZXF1ZXN0LkhFQURFUlNfUkVDRUlWRUQmJmg8WE1MSHR0cFJlcXVlc3QuSEVBREVSU19SRUNFSVZFRCl7aD1YTUxIdHRwUmVxdWVzdC5IRUFERVJTX1JFQ0VJVkVEOwp2YXIgbjtpZihuPWEucmVzcG9uc2VVUkwpbj1hLnJlc3BvbnNlVVJMLG49KF8ubWQoYil8fGxvY2F0aW9uLm9yaWdpbikhPT0oXy5tZChuKXx8bG9jYXRpb24ub3JpZ2luKTtpZihuKXtmKG5ldyBEOGIoYixhLnJlc3BvbnNlVVJMKSk7YS5hYm9ydCgpO3JldHVybn1kJiZkLmthKCJZTlFyQ2YiKX1pZihfLmlhYihhLnN0YXR1cykpZzxhLnJlc3BvbnNlVGV4dC5sZW5ndGgmJihlKGEucmVzcG9uc2VUZXh0LnN1YnN0cmluZyhnKSksZz1hLnJlc3BvbnNlVGV4dC5sZW5ndGgpLGEucmVhZHlTdGF0ZT09PVhNTEh0dHBSZXF1ZXN0LkRPTkUmJmghPT1YTUxIdHRwUmVxdWVzdC5ET05FJiYoayYmRThiKCksZigpKSxoPWEucmVhZHlTdGF0ZTtlbHNlIGlmKGEuc3RhdHVzfHwhRjhiKWYobmV3IF8uUjZiKGEuc3RhdHVzLGEucmVzcG9uc2VVUkwpKSxhLmFib3J0KCl9fTthLnJlYWR5U3RhdGUhPT1YTUxIdHRwUmVxdWVzdC5ET05FJiZhLmFkZEV2ZW50TGlzdGVuZXIoInJlYWR5c3RhdGVjaGFuZ2UiLAptKTthLnJlYWR5U3RhdGU+PVhNTEh0dHBSZXF1ZXN0LlVOU0VOVCYmbSgpfSl9LEc4Yj1mdW5jdGlvbigpeysrSjhiPT09MSYmd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoImJlZm9yZXVubG9hZCIsSzhiKX0sRThiPWZ1bmN0aW9uKCl7LS1KOGI9PT0wJiZ3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcigiYmVmb3JldW5sb2FkIixLOGIpfSxLOGI9ZnVuY3Rpb24oKXtGOGI9ITB9LEw4Yj1mdW5jdGlvbihhKXtmdW5jdGlvbiBiKGYpe18uQ21hKGYse2J1ZjpjLmxlbmd0aD4yMD9gJHtjLnN1YnN0cmluZygwLDIwKX0uLi5gOmN9KTtyZXR1cm4gZn12YXIgYz0iIixkPTAsZT0wO3JldHVybiBuZXcgXy5yNGIoKGYsZyk9PnthLmZvckVhY2goaD0+e2ZvcihjPWM/YytoOmg7Yzspe2lmKCFkKXtkPTErYy5pbmRleE9mKCI7Iik7aWYoIWQpYnJlYWs7aWYoIS9eWzAtOUEtRmEtZl0rOy8udGVzdChjKSl0aHJvdyBiKEVycm9yKCJyaCIpKTtlPWQrcGFyc2VJbnQoYywxNil9aWYoYy5sZW5ndGg8CmUpYnJlYWs7ZihjLnN1YnN0cmluZyhkLGUpKTtjPWMuc3Vic3RyaW5nKGUpO2Q9MH19KS50aGVuKCgpPT57aWYoYyl0aHJvdyBiKEVycm9yKCJzaCIpKTtnKCl9KS5jYXRjaChoPT5nKGggaW5zdGFuY2VvZiBFcnJvcj9oOkVycm9yKFN0cmluZyhoKSkpKX0pfSxPOGI9YXN5bmMgZnVuY3Rpb24oYSl7dmFyIGI9KDAsXy5NZikoKSxjPWIoKTtiPWIoMSk7dHJ5e2EuaGVhZGVyc3x8KGEuaGVhZGVycz1uZXcgTWFwKTthLmhlYWRlcnMuc2V0KCJ4LXNnLWUiLCIxIik7bGV0IGQ9Yihhd2FpdCBjKE04YihhKSkpLGU9ZC5oZWFkZXIsZjtiPTI7c3dpdGNoKChmPV8ucShlLE44Yiw0KSk9PW51bGw/dm9pZCAwOl8uT2ooZiwxKSl7Y2FzZSAzOmI9MDticmVhaztjYXNlIDQ6Yj0xO2JyZWFrO2Nhc2UgODpiPTE7YnJlYWs7Y2FzZSA2Ol8uVmUoRXJyb3IoInRoIikse0RmOnthc3luY1R5cGU6YS5qdH0sbGV2ZWw6MH0pfXJldHVybiBfLk83YihkLGIsYSxnPT5NOGIoZyksYj09PTA/Xy50KGUsMSk6CnZvaWQgMCl9ZmluYWxseXtjKCl9fSxNOGI9YXN5bmMgZnVuY3Rpb24oYSl7cmV0dXJuIFA4YihhLGZ1bmN0aW9uKCl7dmFyIGI9YS5tZXRob2QsYz1hLnVybCxkPWEuVXpiLGU9YS55ZyxmPWEuaGVhZGVycyxnPWEuQmNhLGg9bmV3IF8uVngoITApO1E4YihoLCgpPT57ZSYmXy5RbyhlLCJ0dGZiIik7ZyYmZygpfSk7cmV0dXJuIEg4YihiLGMse2JvZHk6ZCxMUmI6aCx3aXRoQ3JlZGVudGlhbHM6Xy5GNGIsQk5hOiIpXX0nXG4iLGhlYWRlcnM6Zn0pfSl9LFA4Yj1hc3luYyBmdW5jdGlvbih7dXJsOmEsdXJsUGFyYW1zOmIseWc6YyxqdDpkLEd0OmUsbVZhOmYsdFY6ZyxLMmI6aH0sayxtKXt2YXIgbj0oMCxfLk1mKSgpLHA9bigpO249bigxKTt0cnl7bGV0IHtRemE6cixOTWI6eH09bihhd2FpdCBwKF8uTzZiKGUsZCxmLGIpKSk7aWYoeClyZXR1cm4gYyYmXy5RbyhjLCJ0dGNoIiksbSYmbSgpLHg7bGV0IHo9aygpO3RyeXtsZXQgQj1uKGF3YWl0IHAoUjhiKHosZCkpKTtoJiZfLkEoQi5oZWFkZXIsCjMpJiZoKCk7Xy5LTGEoYSk7cmV0dXJuIHI/Xy5ONmIocixCLGcpOkJ9Y2F0Y2goQil7bigpO3ImJnIua2EmJl8uRDRiKHIpO2lmKEIgaW5zdGFuY2VvZiBfLlI2Yil7aWYoQi5kZXRhaWxzLmlzcil0aHJvdyBuZXcgXy5XM2IoIkFzeW5jIHJlZGlyZWN0IGVycm9yIixkLHtpc3I6ITAscnRleHQ6Qi5kZXRhaWxzLnJ0ZXh0fSk7bGV0IEg9Qi5kZXRhaWxzLnMsSj1CLmRldGFpbHMucnVybDtpZihIKXRocm93IG5ldyBfLlczYigiQXN5bmMgcmVxdWVzdCBlcnJvciIsZCx7czpILHJ1cmw6Sn0pO3Rocm93IG5ldyBfLlczYigiQXN5bmMgbmV0d29yayBlcnJvciIsZCx7fSwzKTt9dGhyb3cgQjt9fWZpbmFsbHl7cCgpfX0sUjhiPWFzeW5jIGZ1bmN0aW9uKGEsYil7dmFyIGM9KDAsXy5NZikoKSxkPWMoKTtjPWMoMSk7dHJ5e2xldCBlPUw4YihhKS5jYXRjaChoPT57Xy5DbWEoaCx7dDpifSk7dGhyb3cgaDt9KSxmPVM4YihlKS50aGVuKGg9Pl8uJDRiKGgsXy55NGIsKCk9PntfLlZlKEVycm9yKCJ1aGAiKwpoLnN1YnN0cigwLDEwMCkpLHtEZjp7bDpTdHJpbmcoaC5sZW5ndGgpLHQ6Yn19KX0pKSxnPVQ4YihlLGIpO3JldHVybntoZWFkZXI6Yyhhd2FpdCBkKGYpKSxyZXNvdXJjZXM6Z319ZmluYWxseXtkKCl9fSxUOGI9ZnVuY3Rpb24oYSxiKXtyZXR1cm4gbmV3IF8ucjRiKGFzeW5jKGMsZCk9Pnt2YXIgZT0oMCxfLk1mKSgpLGY9ZSgpO2U9ZSgxKTt0cnl7bGV0IGc9bnVsbCxoPW51bGw7ZShhd2FpdCBmKGEuZm9yRWFjaChrPT57aWYoIWgpaWYoZyl7bGV0IG09e21ldGFkYXRhOmcsYm9keTprfTtfLmlrKG0ubWV0YWRhdGEsMSk9PT0xP2g9VThiKG0sYik6Xy5payhtLm1ldGFkYXRhLDEpPT09MTA/Z29vZ2xlLnN4c3JmPW0uYm9keTpjKG0pO2c9bnVsbH1lbHNlIGc9Xy4kNGIoayxfLng0YiwoKT0+e18uVmUoRXJyb3IoInZoYCIray5zdWJzdHIoMCwxMDApKSx7RGY6e2w6U3RyaW5nKGsubGVuZ3RoKX19KX0pfSkpKTtoP2QoaCk6Zz9kKEVycm9yKCJ3aCIpKTpkKCl9ZmluYWxseXtmKCl9fSl9LApVOGI9ZnVuY3Rpb24oYSxiKXt2YXIgYz1fLiQ0YihhLmJvZHksVjhiLCgpPT57Xy5WZShFcnJvcigieGhgIithLmJvZHkuc3Vic3RyKDAsMTAwKSkse0RmOntsOlN0cmluZyhhLmJvZHkubGVuZ3RoKX19KX0pLGQ9e2M6Xy5PaihjLDEsMil9OyhjPV8udChjLDIpKSYmKGQuZT1KU09OLnBhcnNlKGMpKTtyZXR1cm4gbmV3IF8uVzNiKCJBc3luYyBzZXJ2ZXIgZXJyb3IiLGIsZCl9LFc4Yj1mdW5jdGlvbihhLGIpe3ZhciBjPWEucmVxO3JldHVybiBQOGIoYiwoKT0+SThiKGMsYS51cmwpLCgpPT52b2lkIGMuYWJvcnQoKSl9LFM4Yj1hc3luYyBmdW5jdGlvbihhKXt2YXIgYj0oMCxfLk1mKSgpLGM9YigpO2I9YigxKTt0cnl7bGV0IHt2YWx1ZTpkLGRvbmU6ZX09Yihhd2FpdCBjKGEubmV4dCgpKSk7aWYoZSl0aHJvdyBFcnJvcigiUWciKTtyZXR1cm4gZH1maW5hbGx5e2MoKX19LFE4Yj1mdW5jdGlvbihhLGIpe3ZhciBjPSExLGQ9YS5zdWJzY3JpYmUoIllOUXJDZiIsZnVuY3Rpb24oZSl7Y3x8CihjPSEwLHRoaXMuY1YoZCksYi5hcHBseSh2b2lkIDAsYXJndW1lbnRzKSl9LGEpfSxOOGI9Y2xhc3MgZXh0ZW5kcyBfLmx7Y29uc3RydWN0b3IoYSl7c3VwZXIoYSl9fSxYOGI9WyIqIiwiaCIsIm0iLCJ3IiwieCJdO3ZhciBEOGI9Y2xhc3MgZXh0ZW5kcyBFcnJvcntjb25zdHJ1Y3RvcihhLGIpe3N1cGVyKCJIVFRQIHJlZGlyZWN0IGVycm9yIik7dGhpcy5kZXRhaWxzPXtyZXE6YSxyZXM6Yn19fTt2YXIgRjhiPSExLEo4Yj0wO3ZhciBWOGI9Y2xhc3MgZXh0ZW5kcyBfLmx7Y29uc3RydWN0b3IoYSl7c3VwZXIoYSl9fTtfLnM1Yj0hMDtfLiRuKF8ucjViLHtPbzp7ZmV0Y2g6ZnVuY3Rpb24oYSl7cmV0dXJuIF8uajhiP084YihhKTpNOGIoYSl9fSxUS2E6e2J1aWxkKGEsYixjLGQsZSxmLGcpe2UuY29udGV4dD1uZXcgTWFwKGUuY29udGV4dCk7Xy5ubWEoZS5jb250ZXh0LF8uUDZiKCkpO3JldHVybiBfLk40YihhLGIsYyxkLGUsZixnKX19LHFBYzp7dUhhKGEpe3ZhciBiPWEuY3A7Yj1iJiZYOGIuaW5jbHVkZXMoYik/Yjp2b2lkIDA7cmV0dXJuIFc4YihhLHttZXRob2Q6IkdFVCIsdXJsOmEudXJsLGp0OmEuYXN0eXAsR3Q6bmV3IF8uUngoYS5jayx7cHJpb3JpdHk6Yn0pfSl9fX0pO3ZhciBZOGI7KFk4Yj1fLnQ1Yik9PW51bGx8fFk4Yi5yZXNvbHZlKF8ucjViLkdpKCkpOwp9Y2F0Y2goZSl7Xy5fRHVtcEV4Y2VwdGlvbihlKX0KdHJ5ewp2YXIgYzViLGQ1YixlNWIsZjViLGc1YixoNWIsaTViLGs1YixqNWI7YzViPWZ1bmN0aW9uKC4uLmEpe3JldHVybiBhLnJlZHVjZSgoYixjKT0+Yj4wJiZjPjA/TWF0aC5taW4oYixjKTpjPjA/YzpiLDApfTtkNWI9ZnVuY3Rpb24oYSxiLGMsZCl7Yj1jNWIoYnx8TWF0aC5tYXgoZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmNsaWVudEhlaWdodCx3aW5kb3cuaW5uZXJIZWlnaHQpLGQsYyk7cmV0dXJue3NyYzpfLnRkKGEsImgiLGIpLGhlaWdodDpifX07ZTViPWZ1bmN0aW9uKGEsYixjLGQpe2I9YzViKGJ8fE1hdGgubWF4KGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5jbGllbnRXaWR0aCx3aW5kb3cuaW5uZXJXaWR0aCksZCxjKTtyZXR1cm57c3JjOl8udGQoYSwidyIsYiksd2lkdGg6Yn19O2Y1Yj1mdW5jdGlvbihhKXt2YXIgYj1fLlRIYSgpfHwxO3JldHVybiBiPjE/Xy50ZChhLCJzY2FsZSIsTWF0aC5taW4oMixiKSk6YX07Cmc1Yj1mdW5jdGlvbihhLGIpe2lmKF8ucnVhKGEpJiYhYS5zcmMuc3RhcnRzV2l0aCgiZGF0YToiKSl7dmFyIGM9ZTViKGEuc3JjLDAsYixhLnBhcmVudEVsZW1lbnQmJmEucGFyZW50RWxlbWVudC5jbGllbnRXaWR0aHx8MCk7YS5zcmMhPT1jLnNyYyYmKGEub25sb2FkPSgpPT57YS53aWR0aD1jLndpZHRoO2Eub25sb2FkPW51bGx9LGEuc3JjPWMuc3JjLGEuY29tcGxldGUmJihhLndpZHRoPWMud2lkdGgpKX19O2g1Yj1mdW5jdGlvbihhKXtyZXR1cm4gYT09PSIwIj8iIjphKyJweCJ9O2k1Yj1mdW5jdGlvbihhKXtyZXR1cm4gYT9hKyJweCI6IiJ9OwprNWI9ZnVuY3Rpb24oYSxiKXthLmdldEF0dHJpYnV0ZSgiZGF0YS1kZWZlcnJlZCIpPT09IjEiJiZhLnNldEF0dHJpYnV0ZSgiZGF0YS1kZWZlcnJlZCIsIjIiKTthLnNyYz1iO2o1YiYmIWEuaGFzQXR0cmlidXRlKCJkYXRhLWF0ZiIpJiZhLnJlbW92ZUF0dHJpYnV0ZSgiZGF0YS1kZWZlcnJlZCIpO3ZhciBjLGQ7KChjPWdvb2dsZSk9PW51bGw/MDpjLnNpYikmJigoZD1nb29nbGUpPT1udWxsPzA6ZC5saWJhKSYmYS5zZXRBdHRyaWJ1dGUoImRhdGEtaW1zIixTdHJpbmcoRGF0ZS5ub3coKSkpfTsKXy5sNWI9ZnVuY3Rpb24oYSxiKXt2YXIgYz0wLGQ9MDtpZihhLmhhc0F0dHJpYnV0ZSgiZGF0YS1zcCIpKXtsZXQgZj1hLnBhcmVudEVsZW1lbnQmJmEucGFyZW50RWxlbWVudC5jbGllbnRIZWlnaHR8fDA7dmFyIGU9YS5wYXJlbnRFbGVtZW50JiZhLnBhcmVudEVsZW1lbnQuY2xpZW50V2lkdGh8fDA7bGV0IFtnLGgsayxtXT1hLmdldEF0dHJpYnV0ZSgiZGF0YS1zcCIpLnNwbGl0KCIsIikubWFwKG49Pk1hdGgubWF4KDAsTnVtYmVyKG4pKSk7Yj1kNWIoYixnLGssZik7ZD1iLmhlaWdodDtlPWU1YihiLnNyYyxoLG0sZSk7Yz1lLndpZHRoO2I9ZjViKGUuc3JjKTt3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigicmVzaXplIixfLkduKCgpPT57ZzViKGEsbSl9LDEwMCkpfWlmKGEuc3JjIT09YilpZihhLmhhc0F0dHJpYnV0ZSgiZGF0YS1kIikpe2xldCBmPW5ldyBJbWFnZTtfLnluKGYsImxvYWQiLCgpPT57azViKGEsZi5zcmMpO3ZhciBnPWEuZ2V0QXR0cmlidXRlKCJkYXRhLWQiKTtnPwooZz1nLnNwbGl0KCIsIiksZy5sZW5ndGg9PT02PyhhLmhlaWdodD1kfHxOdW1iZXIoZ1swXSksYS53aWR0aD1jfHxOdW1iZXIoZ1sxXSksYS5zdHlsZS5tYXJnaW5Ub3A9aDViKGdbMl0pLGEuc3R5bGUubWFyZ2luUmlnaHQ9aDViKGdbM10pLGEuc3R5bGUubWFyZ2luQm90dG9tPWg1YihnWzRdKSxhLnN0eWxlLm1hcmdpbkxlZnQ9aDViKGdbNV0pKTpnLmxlbmd0aD09PTQmJihhLnN0eWxlLmhlaWdodD1pNWIoZ1swXSksYS5zdHlsZS53aWR0aD1pNWIoZ1sxXSksYS5zdHlsZS5tYXJnaW5Ub3A9aTViKGdbMl0pLGEuc3R5bGUubWFyZ2luTGVmdD1pNWIoZ1szXSkpLGEucmVtb3ZlQXR0cmlidXRlKCJkYXRhLWQiKSk6Xy5WZShFcnJvcigiVWciKSl9KTtmLnNyYz1ifWVsc2UgazViKGEsYil9O2o1Yj1fLlBGYTsKfWNhdGNoKGUpe18uX0R1bXBFeGNlcHRpb24oZSl9CnRyeXsKdmFyIFk0Yj1jbGFzcyBleHRlbmRzIF8ubHtjb25zdHJ1Y3RvcihhKXtzdXBlcihhKX1vYSgpe3JldHVybiBfLnQodGhpcywxKX1mVygpe3JldHVybiBfLnEodGhpcyxfLmVoLDMpfUVvYSgpe3JldHVybiBfLmtqKHRoaXMsXy5laCwzKX19O18uWjRiPWNsYXNzIGV4dGVuZHMgXy5se2NvbnN0cnVjdG9yKGEpe3N1cGVyKGEpfWdldElkKCl7cmV0dXJuIF8udCh0aGlzLDEpfU1jKGEpe3JldHVybiBfLmZoKHRoaXMsMSxhKX1ZZygpe3JldHVybiBfLnBoKHRoaXMsMSl9SmooKXtyZXR1cm4gXy5xKHRoaXMsWTRiLDIpfXh0KCl7cmV0dXJuIF8uemUodGhpcyxZNGIsMil9WXcoYSl7cmV0dXJuIF8uQmoodGhpcyxZNGIsMixhKX19O18uWjRiLnByb3RvdHlwZS5YYT0ic29hdVllIjsKfWNhdGNoKGUpe18uX0R1bXBFeGNlcHRpb24oZSl9CnRyeXsKXy5YNGI9Y2xhc3MgZXh0ZW5kcyBfLmx7Y29uc3RydWN0b3IoYSl7c3VwZXIoYSl9Z2V0SWQoKXtyZXR1cm4gXy50KHRoaXMsMSl9TWMoYSl7cmV0dXJuIF8uZmgodGhpcywxLGEpfVlnKCl7cmV0dXJuIF8ucGgodGhpcywxKX1vYSgpe3JldHVybiBfLnQodGhpcywyKX19Owp9Y2F0Y2goZSl7Xy5fRHVtcEV4Y2VwdGlvbihlKX0KdHJ5ewpfLlc0Yj1mdW5jdGlvbihhKXtyZXR1cm4gXy5Qa2EoYSl9Owp9Y2F0Y2goZSl7Xy5fRHVtcEV4Y2VwdGlvbihlKX0KdHJ5ewpfLlQ0Yj1mdW5jdGlvbihhLGIsYyxkLGU9MjUsZil7ZnVuY3Rpb24gZyhyKXtyZXR1cm4oKT0+e2lmKCEocj5uKSl7dmFyIHg9RGF0ZS5ub3coKTt4PU1hdGgubWluKCh4LXApL2ssMSk7dmFyIHo9aCsoYS1oKSptKHgpO2Y/Zi5zY3JvbGxUb3A9ejp3aW5kb3cuc2Nyb2xsVG8oMCx6KTt4PDEmJndpbmRvdy5zZXRUaW1lb3V0KGcocisxKSxlKX19fXZhciBoPWY/Zi5zY3JvbGxUb3A6d2luZG93LnBhZ2VZT2Zmc2V0O2lmKCEoYTwwKSl7YSs9Ynx8MDt2YXIgaz1jfHwyMDAsbT1kfHwocj0+ciksbj1rL2UscD1EYXRlLm5vdygpO3dpbmRvdy5zZXRUaW1lb3V0KGcoMSksZSl9fTtfLlR4PWZ1bmN0aW9uKGEsYixjKXt2YXIgZD1fLldkKGEpO2QmJl8uR3BhKGQpJiZfLlhnKGEsYixjKX07Xy5VNGI9ZnVuY3Rpb24oYSxiLGMpe3ZhciBkPV8uV2QoYSk7ZCYmXy5HcGEoZCkmJl8uWmcoYSxiLGMpfTsKXy5WNGI9ZnVuY3Rpb24oYSxiKXtmb3IodmFyIGM9YS5zcGxpdCgiJXMiKSxkPSIiLGU9QXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzLDEpO2UubGVuZ3RoJiZjLmxlbmd0aD4xOylkKz1jLnNoaWZ0KCkrZS5zaGlmdCgpO3JldHVybiBkK2Muam9pbigiJXMiKX07Cn1jYXRjaChlKXtfLl9EdW1wRXhjZXB0aW9uKGUpfQp0cnl7Cl8uU3g9bmV3IE1hcDtfLlN4LnNldCgiYWJ1c2VfZHJvcGRvd24iLCJGTHN5OCIpO18uU3guc2V0KCJhY19hciIsImJhR1RaYyIpO18uU3guc2V0KCJhY19iYyIsImJoM1puIik7Xy5TeC5zZXQoImFjX2JlIiwiTTNNbHUiKTtfLlN4LnNldCgiYWNfYnQiLCJqbnZuYWYiKTtfLlN4LnNldCgiYWNfY3MiLCJzUUZZc2MiKTtfLlN4LnNldCgiYWNfZmMiLCJia0w1ZGMiKTtfLlN4LnNldCgiYWNfZmUiLCJUOTczbGIiKTtfLlN4LnNldCgiYWNfaXIiLCJ1d29FRGUiKTtfLlN4LnNldCgiYWNfbHZzIiwibGdyQTRjIik7Xy5TeC5zZXQoImFjX3JjIiwidTE2ZFplIik7Xy5TeC5zZXQoImFjY2VwdCIsIlpjWlQ3Iik7Xy5TeC5zZXQoImFjZXgiLCJRUm9yeiIpO18uU3guc2V0KCJhY3RuX2xjaCIsIlhzZlpoYyIpO18uU3guc2V0KCJhY3RuX2xjbCIsIkhSbHNFIik7Xy5TeC5zZXQoImFjdG5fcmRwIiwiZXVxWUllIik7Xy5TeC5zZXQoImFjdG5fc2NoIiwiVm90TzVlIik7Cl8uU3guc2V0KCJhY3RuX3NjbCIsIkNYSVdmZCIpO18uU3guc2V0KCJhY3RuX3NydCIsIkZyZTlnYyIpO18uU3guc2V0KCJhZGRfcmVsYXRlZF9wcm9kdWN0X2NsaWNrIiwieG9rMTJjIik7Xy5TeC5zZXQoImFkZF90b19ob21lX3NjcmVlbl9hY3Rpb24iLCJEa2tjVWMiKTtfLlN4LnNldCgiYWRkcGhvdG8iLCJnbVd4dGIiKTtfLlN4LnNldCgiYWRkdmlkZW8iLCJBU0xUR2MiKTtfLlN4LnNldCgiYWpfYmNrIiwiejcwVkRkIik7Xy5TeC5zZXQoImFqX2RjcCIsIkg1Y0FHIik7Xy5TeC5zZXQoImFqX2VjcCIsIk1URGJWYyIpO18uU3guc2V0KCJhal9maWNsayIsImxId1lHIik7Xy5TeC5zZXQoImFqX21iY2xrIiwiTklyRGViIik7Xy5TeC5zZXQoImFqX3FsaWNsayIsImE2MUZCZSIpO18uU3guc2V0KCJhal9yY2NsayIsIktxcXNiYiIpO18uU3guc2V0KCJhal9zYmNsayIsIk52dDRDZiIpO18uU3guc2V0KCJhal92Y2NsayIsInBMTnUwYyIpO18uU3guc2V0KCJhal93dmNsIiwiTFJWMnhlIik7Cl8uU3guc2V0KCJhbXBjbG9zZWQiLCJpbUF6MmMiKTtfLlN4LnNldCgiYW1wdmlldyIsIlQ2eDZ4ZiIpO18uU3guc2V0KCJhbXB2aXMiLCJ4ZkJQZCIpO18uU3guc2V0KCJhbnN3ZXIiLCJ4SnI4RmYiKTtfLlN4LnNldCgiYW5zd2VyTGlzdENsb3NlIiwiRlRvVkRmIik7Xy5TeC5zZXQoImFuc3dlcl9idXR0b25fY2xpY2tlZCIsIlhxcnFBYiIpO18uU3guc2V0KCJhcHBfZGwiLCJHU1J0d2IiKTtfLlN4LnNldCgiYXBwbHkiLCJyS1JxQmMiKTtfLlN4LnNldCgiYXBwbHlfZmVlZGJhY2tfc3R5bGUiLCJSUG5LQWIiKTtfLlN4LnNldCgiYXN5bmNDb21wbGV0ZSIsIkY3bWpWYiIpO18uU3guc2V0KCJhc3luY0Vycm9yIiwieEJhUzJjIik7Xy5TeC5zZXQoImFzeW5jRmlsbGVkIiwid1VWS0VmIik7Xy5TeC5zZXQoImFzeW5jTG9hZGluZyIsInNXNzdKZiIpO18uU3guc2V0KCJhc3luY1Jlc2V0IiwicG9iNHFjIik7Xy5TeC5zZXQoImF0dHJpYnV0aW9uQ2xpY2tlZCIsInpWeTJaZCIpOwpfLlN4LnNldCgiYXVkZ191cGdyYWRlIiwiR0lhYXNjIik7Xy5TeC5zZXQoImF1dG9fZXhwYW5kIiwiU1RORk1kIik7Xy5TeC5zZXQoImJfY3MiLCJ1NkpxRyIpO18uU3guc2V0KCJiYV9lbCIsInBPS2JjIik7Xy5TeC5zZXQoImJhX2xzIiwiWFV2b3hmIik7Xy5TeC5zZXQoImJhY2tfYWN0aW9uIiwidzNZRUVjIik7Xy5TeC5zZXQoImJkX2NhbmNlbF9idXNpbmVzcyIsImhEOURKYiIpO18uU3guc2V0KCJiZF9yZWRpcmVjdF90b19HTUIiLCJRYzFvUSIpO18uU3guc2V0KCJiZWZvcmVfY29sbGFwc2UiLCJTYW4xaGIiKTtfLlN4LnNldCgiYmVmb3JlX2V4cGFuZCIsIkp5eFcyZCIpO18uU3guc2V0KCJibGFuayIsIklWVUFWZCIpO18uU3guc2V0KCJic19jbG9zZSIsIk9vVTZKZSIpO18uU3guc2V0KCJic19jbG9zZWQiLCJ1M0NDR2UiKTtfLlN4LnNldCgiYnNfb3BlbiIsIndvbVFuZSIpO18uU3guc2V0KCJic19vcGVuZWQiLCJSSkhXIik7Xy5TeC5zZXQoImJ1dHRvbkNsaWNrIiwiTjhwNWJlIik7Cl8uU3guc2V0KCJjYWxfZW50ZXJfZGF5IiwiU0l6MkUiKTtfLlN4LnNldCgiY2FsX2xlYXZlX2RheSIsIkVzMURhZCIpO18uU3guc2V0KCJjYWxfc2VsZWN0X2RheSIsImNPN2VJIik7Xy5TeC5zZXQoImNhbGN1bGF0b3Jfc3dpdGNoX3RvX2hvbWVfYnVkZ2V0IiwiVGZxMUZkIik7Xy5TeC5zZXQoImNhbGN1bGF0b3Jfc3dpdGNoX3RvX21vbnRobHlfcGF5bWVudCIsIkZ0cmh6Iik7Xy5TeC5zZXQoImNhbmNlbCIsIkRmaWRnIik7Xy5TeC5zZXQoImNhbmNlbFF1ZXN0aW9uIiwiTGVZR0hkIik7Xy5TeC5zZXQoImNhbmNlbF9kaXNjYXJkIiwiZWxWTlZjIik7Xy5TeC5zZXQoImNhbmNlbF9mb3JtIiwibUNQTUlmIik7Xy5TeC5zZXQoImNhbnZhc19jaGFuZ2UiLCJJMG95RGYiKTtfLlN4LnNldCgiY2Fyb3VzZWxfc2Nyb2xsZWQiLCJzc0dqTGQiKTtfLlN4LnNldCgiY2F0ZWdvcnlTZWxlY3QiLCJjbjY5eGYiKTtfLlN4LnNldCgiY2NfaW5wdXRfdmFsdWVfY2hhbmdlIiwiV3RxeHFlIik7Cl8uU3guc2V0KCJjY19zZWxlY3RlZF92YWx1ZV9jaGFuZ2UiLCJlb3lzSGYiKTtfLlN4LnNldCgiY2Nfc3dhcCIsImhLZ2tlYyIpO18uU3guc2V0KCJjaGFuZ2VfYWN0aXZlX2luZGV4IiwiSjlDTTJkIik7Xy5TeC5zZXQoImNoYW5nZV9hc3NvY2lhdGVkX3RvcGljIiwiUlFrUDZiIik7Xy5TeC5zZXQoImNoYW5nZV9sb2MiLCJTSktlNmIiKTtfLlN4LnNldCgiY2hhbmdlX3NvcnQiLCJXM1dUMGMiKTtfLlN4LnNldCgiY2hhbmdlX3NvdXJjZSIsInRSTUx2ZSIpO18uU3guc2V0KCJjaGFydF90b3VjaCIsIk0yRHREZCIpO18uU3guc2V0KCJjaGVja2luIiwiQUtJd2RlIik7Xy5TeC5zZXQoImNoZWNrb3V0IiwibkNZdm9lIik7Xy5TeC5zZXQoImNoaXAiLCJaWHpPSmQiKTtfLlN4LnNldCgiY2hpcF9zZWxlY3RlZCIsIlF4Q0NOYyIpO18uU3guc2V0KCJjaSIsIlBGeThzZiIpO18uU3guc2V0KCJjaV9pZiIsIlpBUHFsZSIpO18uU3guc2V0KCJjaV9waSIsIllJUUkwYyIpOwpfLlN4LnNldCgiY2wiLCJScmRmaiIpO18uU3guc2V0KCJjbF9taSIsInd4TG0iKTtfLlN4LnNldCgiY2xlYXJUZXh0IiwicjdyMzEiKTtfLlN4LnNldCgiY2xlYXJfZmlsIiwiQ3BsamNiIik7Xy5TeC5zZXQoImNsZWFyX2ZpbHRlciIsIlRiWTlMYyIpO18uU3guc2V0KCJjbGVhcl9maWx0ZXJzIiwieGlHbHMiKTtfLlN4LnNldCgiY2xlYXJfbWVudV9pdGVtIiwiaG1iNlllIik7Xy5TeC5zZXQoIkNsaWNrIiwiUlBlU0djIik7Xy5TeC5zZXQoImNsaWNrQ2hpcCIsIndqZFhzZSIpO18uU3guc2V0KCJjbGlja0ZvbGxvdyIsIkRVYUZzZSIpO18uU3guc2V0KCJjbGlja01pYyIsImpxRkNsZiIpO18uU3guc2V0KCJjbGlja01vYmlsZU92ZXJ2aWV3VGlsZSIsInh2ZHB2ZCIpO18uU3guc2V0KCJjbGlja051bUFuc3dlcnMiLCJOTmdYeSIpO18uU3guc2V0KCJjbGlja092ZXJ2aWV3Q2F0ZWdvcnkiLCJCazZPZmQiKTtfLlN4LnNldCgiY2xpY2tPdmVydmlld1RpbGUiLCJyTkl5ZWUiKTsKXy5TeC5zZXQoImNsaWNrUG9zdCIsImRmWjg2YiIpO18uU3guc2V0KCJjbGlja1JlcGxhY2UiLCJmSFZVY2IiKTtfLlN4LnNldCgiY2xpY2tUaGFua1lvdVBhZ2UiLCJ1MjlhR2QiKTtfLlN4LnNldCgiY2xpY2tVbmRvIiwiU2NOc0ciKTtfLlN4LnNldCgiY2xpY2tWaWV3QWxsIiwiUVR5OTciKTtfLlN4LnNldCgiY2xpY2tfYW5zd2VyIiwiRFdUWjdjIik7Xy5TeC5zZXQoImNsaWNrX2Fuc3dlcl9idXR0b24iLCJZUmNmS2YiKTtfLlN4LnNldCgiY2xpY2tfY2hhbmdlX2ZhY3QiLCJJdjV4amQiKTtfLlN4LnNldCgiY2xpY2tfY2xvc2VfYnV0dG9uIiwia2hudjllIik7Xy5TeC5zZXQoImNsaWNrX2ZvbGxvd19kZWVwbGluayIsIm5yU05sZiIpO18uU3guc2V0KCJjbGlja19taXNzaW5nX2ZhY3QiLCJjSTVGR2QiKTtfLlN4LnNldCgiY2xpY2tfbW9yZV9idXR0b24iLCJUaWxDQ2QiKTtfLlN4LnNldCgiY2xpY2tfcXVlc3Rpb24iLCJrWDdPOWMiKTsKXy5TeC5zZXQoImNsaWNrX3JlYWN0aW9uIiwiZ01TVHFiIik7Xy5TeC5zZXQoImNsaWNrX3JvdyIsIk1XS1pKZCIpO18uU3guc2V0KCJjbGlja19zaGFyZV9idXR0b24iLCJrTHVybSIpO18uU3guc2V0KCJjbGlja19zdWdnZXN0ZWRfZmFjdCIsIlNJalNmZSIpO18uU3guc2V0KCJjbGlja192aWV3X2FsbF9xdWVzdGlvbnMiLCJyaFZFbiIpO18uU3guc2V0KCJjbGlja192aWV3X2Fuc3dlciIsIk9uMGpIYiIpO18uU3guc2V0KCJjbGlja192b3RlX2J1dHRvbiIsImx4WHR5ZCIpO18uU3guc2V0KCJjbG9zZUNvbXBJbW1lcnNpdmUiLCJTZGpqZWMiKTtfLlN4LnNldCgiY2xvc2VEaWFsb2ciLCJDcDVBQSIpO18uU3guc2V0KCJjbG9zZUZwU3RhdGUiLCJXRktZN2MiKTtfLlN4LnNldCgiY2xvc2VHaWZTZWxlY3RvciIsIkNUUHVCZSIpO18uU3guc2V0KCJjbG9zZUlWIiwiVldJREdjIik7Xy5TeC5zZXQoImNsb3NlTW9kYWwiLCJiSGxMVyIpO18uU3guc2V0KCJjbG9zZVBhZ2UiLCJHUjJJWmIiKTsKXy5TeC5zZXQoImNsb3NlUHJlc3RvIiwidURoR2VlIik7Xy5TeC5zZXQoImNsb3NlUklWIiwiRm8wWm1kIik7Xy5TeC5zZXQoImNsb3NlVGlja2V0c0RpYWxvZyIsIkxDUFkwZCIpO18uU3guc2V0KCJjbG9zZVRyeU9uIiwiRWtHOUtjIik7Xy5TeC5zZXQoImNsb3NlX2J1dHRvbl9hY3Rpb24iLCJJNkhrNSIpO18uU3guc2V0KCJjbG9zZV9idXR0b25fY2xpY2tlZCIsIm1MSjRUYiIpO18uU3guc2V0KCJjbG9zZV9jbGljayIsInlPMVhoZSIpO18uU3guc2V0KCJjbG9zZV9jbGlja2VkIiwiQzduYjljIik7Xy5TeC5zZXQoImNsb3NlX2RpYWxvZyIsIk9GQU9lYiIpO18uU3guc2V0KCJjbG9zZV9leHBhbmRhYmxlX2NvbnRlbnQiLCJKRW14aiIpO18uU3guc2V0KCJjbG9zZV9mZWVkYmFjayIsIm1UcUQyIik7Xy5TeC5zZXQoImNsb3NlX2ZlZWRiYWNrX3N0YXJ0ZXJfZGlhbG9nIiwibzJXOEVjIik7Xy5TeC5zZXQoImNsb3NlX2ZwdiIsIm9qV0pXIik7Cl8uU3guc2V0KCJjbG9zZV9mdWxscGFnZSIsInNCbmhsZSIpO18uU3guc2V0KCJjbG9zZV9pbW1lcnNpdmUiLCJUUGhoVWIiKTtfLlN4LnNldCgiY2xvc2VfbGFuZ3VhZ2VfcGlja2VyIiwiQTJsanVmIik7Xy5TeC5zZXQoImNsb3NlX2xpZ2h0Ym94IiwiekpycjhlIik7Xy5TeC5zZXQoImNsb3NlX29uYm9hcmRpbmdCYW5uZXIiLCJFMkRQR2UiKTtfLlN4LnNldCgiY2xvc2VfcG9wdXAiLCJqNmVsa2YiKTtfLlN4LnNldCgiY2xvc2VfcHJvbW8iLCJTRGhvbGMiKTtfLlN4LnNldCgiY2xvc2VfcmV2aWV3c19kaWFsb2ciLCJXZkN3TWMiKTtfLlN4LnNldCgiY2xvc2VfdGhhbmtfeW91X2RpYWxvZyIsIlIzV3ZFZiIpO18uU3guc2V0KCJjbG9zZV92aWV3IiwieGg3RUtiIik7Xy5TeC5zZXQoImNsb3NlX3doeV90aGlzX3Jlc3VsdF9kaWFsb2ciLCJoTVRMMWQiKTtfLlN4LnNldCgiY2xvc2VkIiwiSjR4NVpiIik7Xy5TeC5zZXQoImNsb3NpbmdfY3Jvc3NfY2xpY2siLCJBR1AzRCIpOwpfLlN4LnNldCgiY2xzX2RnIiwiQUpuaHpmIik7Xy5TeC5zZXQoImNvIiwiS3NQRjhjIik7Xy5TeC5zZXQoImNvbXBhcmVfZmlsdGVyX3VwZGF0ZSIsIkU3V1FvZSIpO18uU3guc2V0KCJjb21wbGV4X2NsaWNrIiwiUHFwTjBlIik7Xy5TeC5zZXQoImNvbXBsZXhfZXhpdCIsIlBBZ3ZZZCIpO18uU3guc2V0KCJjb21wb3NlX3F1ZXN0aW9uIiwidmQ4aHRlIik7Xy5TeC5zZXQoImNvbXBvc2VyX2NhbmNlbCIsInZ2amlnZiIpO18uU3guc2V0KCJjb25mX3NsIiwiSGFZY0NjIik7Xy5TeC5zZXQoImNvbmZpcm1fZGlzY2FyZCIsImlUMWdvZSIpO18uU3guc2V0KCJjb250ZXN0YW50X2NsaWNrIiwiU29HYzJjIik7Xy5TeC5zZXQoImNvbnRlc3RhbnRfc2NvcmVfY2hhbmdlIiwiZkgzYTVjIik7Xy5TeC5zZXQoImNvbnRpbnVlX3RvX3NpdGUiLCJ2M2duZWQiKTtfLlN4LnNldCgiY29weV9jb2RlIiwiZ1d0c2JkIik7Xy5TeC5zZXQoImNyZWF0ZVNpdGUiLCJ1SnF5ZmYiKTsKXy5TeC5zZXQoImNzb2ZmIiwiU2pZTDlkIik7Xy5TeC5zZXQoImNzb24iLCJIM2NmT2MiKTtfLlN4LnNldCgiY3RfaWEiLCJFb3JtQmMiKTtfLlN4LnNldCgiY3RfaWMiLCJnRUtRRGIiKTtfLlN4LnNldCgiY3Vfb3Blbl9kaWFsb2ciLCJkT3dydmMiKTtfLlN4LnNldCgiY3VzdG9tX2RpYWxvZ19zZW5kIiwiYkM4eFNjIik7Xy5TeC5zZXQoImN1c3RvbV9kaWFsb2dfc2hvdyIsIkZxWjkzIik7Xy5TeC5zZXQoImQzYm5fdXAiLCJoUVhxd2QiKTtfLlN4LnNldCgiZGF0ZV9zdGVwIiwiSlJ4OG9lIik7Xy5TeC5zZXQoImRhdGVzX2NoYW5nZWQiLCJMcHA1QWIiKTtfLlN4LnNldCgiZGN1IiwiSW9DWjIiKTtfLlN4LnNldCgiZGRfY2FuY2VsX2RlbGV0ZSIsInFPSVdJZCIpO18uU3guc2V0KCJkZF9jb25maXJtX2RlbGV0ZSIsIm0zenFLZSIpO18uU3guc2V0KCJkZF9kaXNtaXNzZWQiLCJKUFowUGUiKTtfLlN4LnNldCgiZGRfb2siLCJFUkJwRCIpOwpfLlN4LnNldCgiZGVidWdEb2NCdXR0b25QcmVzcyIsIlo4SjJPYiIpO18uU3guc2V0KCJkZWMiLCJ0UGFrMWIiKTtfLlN4LnNldCgiZGVsZXRlX2NoaXAiLCJMalZFSmQiKTtfLlN4LnNldCgiZGVzY2xpbmsiLCJTS0FhTWUiKTtfLlN4LnNldCgiZGVzY3JpcHRpb24xX2lucHV0X2NoYW5nZSIsIkE4bko2YiIpO18uU3guc2V0KCJkZXNjcmlwdGlvbjJfaW5wdXRfY2hhbmdlIiwic2N6Q2hiIik7Xy5TeC5zZXQoImRlc3RpbmF0aW9uX292ZXJsYXlfY2xpY2tlZCIsIkFzbkJtYiIpO18uU3guc2V0KCJkZXN0aW5hdGlvbl9vdmVybGF5X21vdXNlZW50ZXIiLCJrWFRLb2UiKTtfLlN4LnNldCgiZGVzdGluYXRpb25fb3ZlcmxheV9tb3VzZWxlYXZlIiwiRXZiejQiKTtfLlN4LnNldCgiZGVzdGluYXRpb25fc2VsZWN0ZWQiLCJFV3V6NWQiKTtfLlN4LnNldCgiZGdfZGlzcGxheV9jb250ZW50IiwidGc5RzVjIik7Xy5TeC5zZXQoImRpYWxvZ19jYW5jZWwiLCJvckhxU2QiKTsKXy5TeC5zZXQoImRpYWxvZ19jYW5jZWxfYnV0dG9uX2NsaWNrZWQiLCJSUE5iQmQiKTtfLlN4LnNldCgiZGlhbG9nX2Nsb3NlZCIsIlZraWE3YiIpO18uU3guc2V0KCJkaWFsb2dfb2tfYnV0dG9uX2NsaWNrZWQiLCJWV2ZWamMiKTtfLlN4LnNldCgiZGlhbG9nX3JhdGVzX3VwZGF0ZSIsImFmdFFtZiIpO18uU3guc2V0KCJkaXJlY3Rpb25zX3N0YXRlX3B1c2giLCJ1VjVTaGUiKTtfLlN4LnNldCgiZGlzYWJsZV9zZW5kX2J1dHRvbiIsInZRVkRyZiIpO18uU3guc2V0KCJkaXNtaXNzIiwialFBbmQiKTtfLlN4LnNldCgiZGlzbWlzc19mb3JtIiwicW16aDBkIik7Xy5TeC5zZXQoImRpc21pc3Nfd2FybXVwIiwiTmlVM2VlIik7Xy5TeC5zZXQoImRpc21pc3NlZCIsIlRnTU02Iik7Xy5TeC5zZXQoImRpc3BsYXlDbGVhckJ1dHRvbiIsImx2Tnk0YiIpO18uU3guc2V0KCJka3AiLCJEeHRIMmIiKTtfLlN4LnNldCgiZGx0X21kIiwiSnhlaFJiIik7Cl8uU3guc2V0KCJkbXBfZXhwYW5kX21vcmVfaXRlbSIsIkFBODBLZSIpO18uU3guc2V0KCJkb25lIiwiQ3J4c0liIik7Xy5TeC5zZXQoImRwX21lbnVfcmVnX2NhcHRpb24iLCJrTk9QOWMiKTtfLlN4LnNldCgiZHBfcmVzb2x2ZSIsIlY0aExsZSIpO18uU3guc2V0KCJkc3RfY2xvc2Vfa3AiLCJTQ1E0SGQiKTtfLlN4LnNldCgiZHQ1X2Rpc21pc3MiLCJMM1h6RmMiKTtfLlN4LnNldCgiZHQ1X21vcmVfaW5mbyIsInVUSklrIik7Xy5TeC5zZXQoImR1Zl9lZWtwIiwiWUN5eUNmIik7Xy5TeC5zZXQoImR1Zl9pbml0IiwiQ3BJdGFlIik7Xy5TeC5zZXQoImR1Zl9zZWtwIiwiWXVoWGVmIik7Xy5TeC5zZXQoImR1ZmZ5Q2xvc2UiLCJObUUweGYiKTtfLlN4LnNldCgiZHVmZnlSZWFkeSIsIlAxMlVmIik7Xy5TeC5zZXQoImR1bTEiLCJ3ZWxYSGMiKTtfLlN4LnNldCgiZHVtMiIsIlJHem16YyIpO18uU3guc2V0KCJkdW0zIiwiZFJ5eHFlIik7Xy5TeC5zZXQoImR1bTQiLCJuOW93T2IiKTsKXy5TeC5zZXQoImVkX0FsbEV2ZW50cyIsIlhxTFU0YiIpO18uU3guc2V0KCJlZF9Qcm9ncmVzc2JhciIsImtFSEVnYiIpO18uU3guc2V0KCJlZF9SZXN1bHRzUGFnZSIsImpqTlpuYiIpO18uU3guc2V0KCJlZF9TYXZlZFBhZ2UiLCJYWGFaS2QiKTtfLlN4LnNldCgiZWRfZmlsbGVkIiwiaDIxRTdiIik7Xy5TeC5zZXQoImVkX2xvYWRpbmciLCJ3WW1qbmYiKTtfLlN4LnNldCgiZWRfbWVudUNsaWNrIiwib1ZIYVljIik7Xy5TeC5zZXQoImVkaXQiLCJSYmoySiIpO18uU3guc2V0KCJlZGl0X2Fycml2YWwiLCJJdTl1cmIiKTtfLlN4LnNldCgiZWRpdF9kYXRlIiwicW02TEciKTtfLlN4LnNldCgiZWRpdF9kZXBhcnR1cmUiLCJOU0pwVmQiKTtfLlN4LnNldCgiZWR1X2IiLCJrcFB5c2YiKTtfLlN4LnNldCgiZWR1X3UiLCJDMGpJcGMiKTtfLlN4LnNldCgiZWhfcmV0cnkiLCJQUTFPVSIpO18uU3guc2V0KCJlbWFpbF9pbnB1dF92YWxpZGF0ZWQiLCJJR3VlZmMiKTsKXy5TeC5zZXQoImVuYWJsZV9zZW5kX2J1dHRvbiIsIllWd0dDYyIpO18uU3guc2V0KCJlbmRlZCIsImE4cm9YIik7Xy5TeC5zZXQoImVudGVyX2dhbGxlcnlfdmlldyIsIm9DVmFpYiIpO18uU3guc2V0KCJlbnRlcl9pbW1lcnNpdmUiLCJYd1QwbCIpO18uU3guc2V0KCJlbnRlcl9pbW1lcnNpdmVfdmlldyIsIkZ2QWc2ZSIpO18uU3guc2V0KCJlb2Jfc2JfcmEiLCJUMGNMUiIpO18uU3guc2V0KCJlcF9jbG9zZSIsIkFFV1hMYyIpO18uU3guc2V0KCJlcF9pZGJhY2siLCJ5Vk9aN2QiKTtfLlN4LnNldCgiZXBfaWRvcGVuIiwiWlcwbmUiKTtfLlN4LnNldCgiZXBfbyIsIlZtdnV1YyIpO18uU3guc2V0KCJlcmNzX2hpZGUiLCJreGhPeSIpO18uU3guc2V0KCJlcmNzX3Nob3ciLCJPYVhVbGMiKTtfLlN4LnNldCgiZXJyb3JSZXRyeSIsIkFLWEkzZSIpO18uU3guc2V0KCJlc2JfYXMiLCJDOW9Dc2UiKTtfLlN4LnNldCgiZXhpdF92aWV3IiwieEthZzVkIik7Cl8uU3guc2V0KCJleHBhbmQiLCJPWEQ2dGMiKTtfLlN4LnNldCgiZXhwYW5kX2NsaWNrIiwiRjJ3VUZjIik7Xy5TeC5zZXQoImZfZiIsInUwTXZ0ZSIpO18uU3guc2V0KCJmX21pcyIsInpDQmlkYyIpO18uU3guc2V0KCJmY19mdG4iLCJHWk9pT2IiKTtfLlN4LnNldCgiZmNfZnRwIiwicUo1MDhlIik7Xy5TeC5zZXQoImZjX2htYyIsIlhRRk95YyIpO18uU3guc2V0KCJmY19pZiIsIkVLWE9GZSIpO18uU3guc2V0KCJmY19zbSIsIkVFWk9yYiIpO18uU3guc2V0KCJmY2RfY2xzIiwiV2xWdDEiKTtfLlN4LnNldCgiZmNlIiwiSzU1ZWNjIik7Xy5TeC5zZXQoImZlZWRiYWNrIiwialV5cnRjIik7Xy5TeC5zZXQoImZldGNoX29mZmVycyIsIlFPZ0tiIik7Xy5TeC5zZXQoImZldmVyX29wZW4iLCJqSVZzeGYiKTtfLlN4LnNldCgiZmlsdGVyX2J1dHRvbl9yZWdpc3RlciIsInRGVkFWIik7Xy5TeC5zZXQoImZpbHRlcl9idXR0b25zX2NoYW5nZSIsIkVjdElSYyIpOwpfLlN4LnNldCgiZmluLWF0dyIsIlZqQnBoYiIpO18uU3guc2V0KCJmbF9hcCIsIkRQemY4Iik7Xy5TeC5zZXQoImZsaWdodHNfZmlsbGVkIiwiZE1lVk9kIik7Xy5TeC5zZXQoImZscF9zYnNic19jbHJzIiwidGN0SUpmIik7Xy5TeC5zZXQoImZsdF9mb191cGRhdGVkIiwiRkNpck0iKTtfLlN4LnNldCgiZm9jdXMiLCJLeTZSa2QiKTtfLlN4LnNldCgiZm9jdXNEZXN0aW5hdGlvbiIsImYyb205Iik7Xy5TeC5zZXQoImZvY3VzTW9yZUJ1dHRvbiIsImdxY0J6YiIpO18uU3guc2V0KCJmb2N1c09uTmV4dENhcmQiLCJBVmpobWIiKTtfLlN4LnNldCgiZm9jdXNPblJlYWN0QnV0dG9uIiwiY0o2ZGZjIik7Xy5TeC5zZXQoImZvY3VzT3JpZ2luIiwiU1F2VlpjIik7Xy5TeC5zZXQoImZvY3VzX2JlZ2luX3NlbnRpbmVsIiwiemg1U0lkIik7Xy5TeC5zZXQoImZvY3VzX2VuZF9zZW50aW5lbCIsIkQ2czlMYiIpO18uU3guc2V0KCJmb2xsb3ciLCJpZTdDZmQiKTtfLlN4LnNldCgiZnBfcyIsInQzTDVEZCIpOwpfLlN4LnNldCgiZnBtbF9vcGVuIiwiR2xXazdlIik7Xy5TeC5zZXQoImZwdl9hYyIsInNwVGR6ZCIpO18uU3guc2V0KCJmcHZfYmFjayIsImtHVHppIik7Xy5TeC5zZXQoImZwdl9jbG9zZSIsIkdLOGFqYiIpO18uU3guc2V0KCJmcHZfZmciLCJSbGh1SWMiKTtfLlN4LnNldCgiZnB2X2ZsIiwiQjIwNlZlIik7Xy5TeC5zZXQoImZwdl9vcGVuIiwiWm16bmZmIik7Xy5TeC5zZXQoImZwdl9zdCIsIk1zNUxkZCIpO18uU3guc2V0KCJmcHZfdGMiLCJBZ0FXbWMiKTtfLlN4LnNldCgiZnVsbF9yZXZpZXdfc25pcHBldCIsIm5OUnpaYiIpO18uU3guc2V0KCJmdWxsc2NyZWVuX2V4cGFuZGVyX2NsaWNrIiwiQ3lzdHMiKTtfLlN4LnNldCgiZndfYXR3X2NsIiwiS0pnNHYiKTtfLlN4LnNldCgiZndfYXR3X29wZW4iLCJnQkJhemMiKTtfLlN4LnNldCgiZndfY2hhbmdlX3RhYiIsIkx1R2s1Iik7Xy5TeC5zZXQoImZ3X2NoYXJ0X2ZpbGxlZCIsInhERXp5ZiIpOwpfLlN4LnNldCgiZndfY2hhcnRfdXBkYXRlX2Vycm9yIiwidkFmUmdlIik7Xy5TeC5zZXQoImZ3X2NsZWFyX2NvbXBhcmlzb24iLCJ1a1lFQSIpO18uU3guc2V0KCJmd19jbG9zZV9zZWFyY2hib3giLCJ6aXd6RmIiKTtfLlN4LnNldCgiZndfY29tcGFyZSIsInd3TFhKZSIpO18uU3guc2V0KCJmd19jdGFwIiwidkxVOWZiIik7Xy5TeC5zZXQoImZ3X2Zsd19jbGsiLCJaRWtVU2UiKTtfLlN4LnNldCgiZndfZm9yY2VkX3JldHJ5IiwiekpoRWFiIik7Xy5TeC5zZXQoImZ3X3BlcmlvZCIsIkJMYjc5ZSIpO18uU3guc2V0KCJmd19wdnUiLCJiSEpjQWYiKTtfLlN4LnNldCgiZndfcmV0cnkiLCJZYjl6ZiIpO18uU3guc2V0KCJmd191bmZsd19jbGsiLCJuRHFINmIiKTtfLlN4LnNldCgiZndfdmN1IiwiWVA2OUVlIik7Xy5TeC5zZXQoImdfZHJvcGRvd25faGlkZSIsImF5SHpNZCIpO18uU3guc2V0KCJnX2Ryb3Bkb3duX3Nob3ciLCJrMkI1QWUiKTtfLlN4LnNldCgiZ2NpX2hpZGRlbiIsIlFOVmRDYyIpOwpfLlN4LnNldCgiZ2NpX3Nob3duIiwiSkRoVmViIik7Xy5TeC5zZXQoImdldFNlbGVjdGVkRGF0ZVRpbWUiLCJLZmswYWUiKTtfLlN4LnNldCgiZ2V0VGlja2V0cyIsInlRZUJCYiIpO18uU3guc2V0KCJnZXRfc3RhcnRlZF9jbGljayIsInJmWGZ2YiIpO18uU3guc2V0KCJnaHNfb3Blbl9wcm9maWxlIiwiaDZwR3oiKTtfLlN4LnNldCgiZ2hzX3Byb2ZpbGVfcmVuZGVyX3Jldmlld3MiLCJEVGRzVGIiKTtfLlN4LnNldCgiZ2xhc3NfcGFuZV9jbGlja2VkIiwiZ25WZ0oiKTtfLlN4LnNldCgiZ28iLCJnQk1Zb2YiKTtfLlN4LnNldCgiZ29fYmFjayIsIm1veVljZCIpO18uU3guc2V0KCJnb19iYWNrX2NsaWNrIiwieW1ERWNkIik7Xy5TeC5zZXQoImdvX25leHQiLCJJb1hVcmIiKTtfLlN4LnNldCgiZ29fcHJldmlvdXMiLCJxQUVmdCIpO18uU3guc2V0KCJnd3NfdHJhdmVsX2hlYWRlcl9kYXRlX2NoYW5nZSIsIklldDYwYiIpOwpfLlN4LnNldCgiZ3dzX3RyYXZlbF9oZWFkZXJfZGF0ZV9zZWxlY3Rvcl9pbml0IiwicGUyU0JmIik7Xy5TeC5zZXQoImd3c190cmF2ZWxfaGVhZGVyX2Rlc3RpbmF0aW9uX2NoYW5nZSIsIkxsQ0xPYyIpO18uU3guc2V0KCJnd3NfdHJhdmVsX2hlYWRlcl9kZXN0aW5hdGlvbl9zZWxlY3Rvcl9pbml0IiwiUlJqOWdiIik7Xy5TeC5zZXQoImd3c190cmF2ZWxfaGVhZGVyX29yaWdpbl9jaGFuZ2UiLCJncGpKYyIpO18uU3guc2V0KCJnd3NfdHJhdmVsX2hlYWRlcl9vcmlnaW5fc2VsZWN0b3JfaW5pdCIsIlV2dUZ2YiIpO18uU3guc2V0KCJnd3NfdHJhdmVsX3JhZGlvX2l0ZW1fc2VsZWN0ZWQiLCJsYVlrZyIpO18uU3guc2V0KCJoYW5kbGVEZXBhcnR1cmVUaW1lQW5jaG9yIiwiTUIwZ3MiKTtfLlN4LnNldCgiaGFuZGxlR3JpZEFzeW5jIiwiWnhkTmdlIik7Xy5TeC5zZXQoImhhbmRsZUhlbHBMaW5rQ2xpY2siLCJsZHdXb2MiKTtfLlN4LnNldCgiaGFuZGxlX3JldHJ5IiwiVGVuS2FlIik7Cl8uU3guc2V0KCJoYW5kbGVsb2ciLCJ3OWpZd2YiKTtfLlN4LnNldCgiaGMiLCJRQTdNMGUiKTtfLlN4LnNldCgiaGN1IiwiSEZtVHMiKTtfLlN4LnNldCgiaGVhZGVyQmFja0NsaWNrIiwiYXg4a21kIik7Xy5TeC5zZXQoImhlYWRlckJ1dHRvbkNsaWNrIiwibUdtQ00iKTtfLlN4LnNldCgiaGVhZGxpbmUxX2lucHV0X2NoYW5nZSIsIlQ1aUozZCIpO18uU3guc2V0KCJoZWFkbGluZTJfaW5wdXRfY2hhbmdlIiwiTDZROXRjIik7Xy5TeC5zZXQoImhlYWRsaW5lM19pbnB1dF9jaGFuZ2UiLCJqVzNZciIpO18uU3guc2V0KCJoZXJvX2Nhcm91c2VsX2NhbGxfdG9fYWN0aW9uX2NhcmRfaGlkZGVuIiwiTFVobUlkIik7Xy5TeC5zZXQoImhlcm9fY2Fyb3VzZWxfY2FsbF90b19hY3Rpb25fY2FyZF9zaG93biIsIkwyVlAyZCIpO18uU3guc2V0KCJoaWRlIiwiZkxXaGlmIik7Xy5TeC5zZXQoImhpZGVQb3N0c0NvbnRhaW5lciIsImV4eEhuYyIpOwpfLlN4LnNldCgiaGlkZV9mZWVkYmFja19zdHlsZSIsImNBZFJmZiIpO18uU3guc2V0KCJoaWRlX3BvcHVwIiwiWnZSTzRiIik7Xy5TeC5zZXQoImhpZGVfcHJvZ3Jlc3NfYmFyIiwiREhtUmdkIik7Xy5TeC5zZXQoImhpZ2hsaWdodF9kaWZmZXJlbmNlc19jbGljayIsInE4eERxZCIpO18uU3guc2V0KCJobGNyZWciLCJNczdaTCIpO18uU3guc2V0KCJobHRodW1ibG9hZGVkIiwibkcxY2FiIik7Xy5TeC5zZXQoImhsdGh1bWJyZWciLCJCWDY1WSIpO18uU3guc2V0KCJocmtjX2ZpbGxlZCIsImhDRnp3YiIpO18uU3guc2V0KCJoc2VsIiwiQ2NSU2UiKTtfLlN4LnNldCgiaHliaGRfbm8iLCJ0b3B2emYiKTtfLlN4LnNldCgiaHliaGRfeWVzIiwieFVVbGZiIik7Xy5TeC5zZXQoImh6X3NhdmUiLCJpNGc0MSIpO18uU3guc2V0KCJoel9zYXZlX2Rlc2t0b3AiLCJRdlNuQWIiKTtfLlN4LnNldCgiaWNhX2JjIiwidGFGeE1iIik7Xy5TeC5zZXQoImlrcF9rcGhlaWdodGNoYW5nZSIsIk44cHV2ZCIpOwpfLlN4LnNldCgiaWtwZF9yZXNldEFsbEZpbHRlcnMiLCJvNnROMmUiKTtfLlN4LnNldCgiaW1fY2xvc2UiLCJpODhRb2IiKTtfLlN4LnNldCgiaW1fZ290b19icm93c2UiLCJjZHFRcGIiKTtfLlN4LnNldCgiaW1fc2V0aG9tZSIsIm5zVTIxYyIpO18uU3guc2V0KCJpbV91cGRhdGVfcHAiLCJmbTBHamIiKTtfLlN4LnNldCgiaW5jIiwibTBKVG1jIik7Xy5TeC5zZXQoImluaXRVc2VyQW5zd2VyIiwiQ0dhN1oiKTtfLlN4LnNldCgiaW5pdF9zZWxlY3Rpb25fbWVudSIsIkZlT3hNZCIpO18uU3guc2V0KCJpbnB1dF91cmxfY2hhbmdlZF9ldmVudCIsIkQzQnFpZSIpO18uU3guc2V0KCJpcV9jbGljayIsIkR2M2NoZSIpO18uU3guc2V0KCJpcV9vcGVuIiwic1lkMzJiIik7Xy5TeC5zZXQoImlxY2kiLCJUcVlOVmUiKTtfLlN4LnNldCgiaXFjbyIsIlV3TkxkYiIpO18uU3guc2V0KCJpcWkiLCJsa25PemMiKTtfLlN4LnNldCgiaXFvIiwiRUF6YUVmIik7Cl8uU3guc2V0KCJpc3N1ZVF1ZXJ5IiwicUM2TUxjIik7Xy5TeC5zZXQoImlzc3VlUXVlcnlPbkVudGVyIiwieXU1SUNmIik7Xy5TeC5zZXQoIml0ZW1faW1wcmVzc2lvbiIsInU5R1N5ZCIpO18uU3guc2V0KCJpdGVtX3NlbGVjdGlvbiIsIk82eEN1ZCIpO18uU3guc2V0KCJpdmdfbyIsIlBkV1NYZSIpO18uU3guc2V0KCJpdmxieF9jIiwiRmNaeHhkIik7Xy5TeC5zZXQoImphY2twb3RDb2xsYXBzZSIsIkwyYkVVZCIpO18uU3guc2V0KCJqb2luX2NsaWNrIiwiS3FkUnhlIik7Xy5TeC5zZXQoImtlZXBfc3Vic2NyaXB0aW9uc19idXR0b25fYWN0aW9uIiwiYnZmVnAiKTtfLlN4LnNldCgia2VyY3NfaGlkZSIsIkpqNFI1ZSIpO18uU3guc2V0KCJrZXJjc19zaG93IiwickNOV0FkIik7Xy5TeC5zZXQoImtleXdvcmRfY2hhbmdlIiwiTWRENzJlIik7Xy5TeC5zZXQoImtub19zaHJfY2xvc2VfYnV0dG9uX2NsaWNrZWQiLCJBVnJ3VSIpO18uU3guc2V0KCJrcF9kaXNwbGF5IiwiZzJDR1NkIik7Cl8uU3guc2V0KCJrcF9leHBhbmQiLCJ2QVdPMSIpO18uU3guc2V0KCJreF9jIiwicTk5M2ZmIik7Xy5TeC5zZXQoImt4X2UiLCJHWHlRdmYiKTtfLlN4LnNldCgia3hfbHVtX3RjIiwiQVAwYXhlIik7Xy5TeC5zZXQoImt4X3QiLCJBblAzMGQiKTtfLlN4LnNldCgibGNtX2Nsb3NlX2xpZ2h0Ym94IiwiS2JGNTdlIik7Xy5TeC5zZXQoImxjbV9saWdodGJveF9jbG9zZWQiLCJZSk1aVWIiKTtfLlN4LnNldCgibGNtX2xvYWRfY2xvc2VfbGlnaHRib3giLCJRRlIzZGUiKTtfLlN4LnNldCgibGNtX2xvYWRfbGlnaHRib3giLCJrbGxsZmQiKTtfLlN4LnNldCgibGNtX29wZW5fbGlnaHRib3giLCJwRDlLNmUiKTtfLlN4LnNldCgibGhkX2Nsb3NlIiwiWjRIRmllIik7Xy5TeC5zZXQoImxoZF9vcGVuX3RpbWVsaW5lIiwiYlhWOWRmIik7Xy5TeC5zZXQoImxoZF9yZW1vdmUiLCJKbWQzcGQiKTtfLlN4LnNldCgibGlnaHRib3hfYmFja19hcnJvd19jbGljayIsImhJMFc1ZCIpOwpfLlN4LnNldCgibGlnaHRib3hfY2xvc2VkIiwianZwMWpkIik7Xy5TeC5zZXQoImxpZ2h0Ym94X3JlbmRlcmVkIiwiQk9COVgiKTtfLlN4LnNldCgibGlzdF9jb2xsYXBzZSIsIkNFWW11YiIpO18uU3guc2V0KCJsaXN0X2V4cGFuZCIsInhaeHJEYyIpO18uU3guc2V0KCJsb2FkX2Fuc3dlcnMiLCJZZDlsaGMiKTtfLlN4LnNldCgibG9hZF9taW5pX2FwcF9ldnQiLCJubHNyQWYiKTtfLlN4LnNldCgibG9jYXRpb25fY2hhbmdlZCIsIlVUcTNpYiIpO18uU3guc2V0KCJsb2dJbnRlcmFjdGlvbiIsIkRKM3RIIik7Xy5TeC5zZXQoImxvZ19pbnRlcmFjdGlvbiIsInY5dThlYiIpO18uU3guc2V0KCJscGlfaGlkZSIsInA1NGRjZSIpO18uU3guc2V0KCJscGlfc2hvdyIsImdWbVdQZSIpO18uU3guc2V0KCJscHZ0X2EiLCJZTmRJSGQiKTtfLlN4LnNldCgibHB2dF9vZnAiLCJzV2lhMWQiKTtfLlN4LnNldCgibHJfbWxfcmwiLCJqQjhOM2IiKTtfLlN4LnNldCgibHJsX2ZsdCIsImZVVE05YyIpOwpfLlN4LnNldCgibHJsX2xmcGZwIiwiY3ZFQ1ViIik7Xy5TeC5zZXQoImxybF9tbGRjIiwic1E4U1llIik7Xy5TeC5zZXQoImxybF9tbHdvIiwiY2xJbmVjIik7Xy5TeC5zZXQoImxybF91YiIsImJlV2NzIik7Xy5TeC5zZXQoImxybF91ZnAiLCJxZmZpTCIpO18uU3guc2V0KCJscmxfdW1hcCIsIm1Ia3lsZSIpO18uU3guc2V0KCJscmxoX21sdCIsImdQQ0dPZSIpO18uU3guc2V0KCJsdGNfY3QiLCJxbFh2a2QiKTtfLlN4LnNldCgibHRjX2hmIiwiaXhCTlJiIik7Xy5TeC5zZXQoImx0Y19obmYiLCJOR1FTWGIiKTtfLlN4LnNldCgibHRjX3VtaCIsIlNHSUdPIik7Xy5TeC5zZXQoImx0ZF9kdHNfbyIsIk9YTkxrZCIpO18uU3guc2V0KCJsdGRfZHRzX3NlbGVjdCIsImI4YUZJYyIpO18uU3guc2V0KCJsdGRsX28iLCJFQWMzIik7Xy5TeC5zZXQoImx0ZGxfdSIsIkRFSTVnZCIpO18uU3guc2V0KCJsdHNzYyIsIktEZm94Iik7Xy5TeC5zZXQoImx1ZF9ocCIsIlNaalRTIik7Cl8uU3guc2V0KCJsdWRfc3AiLCJmRmJjbiIpO18uU3guc2V0KCJsdWhfbmV3X2RhdGVzIiwiREd5MkFlIik7Xy5TeC5zZXQoImx1aF9uZXdfb2NjdXBhbmN5IiwiTGo2b0pmIik7Xy5TeC5zZXQoImx1cHFhX3JjIiwiVWtiVWJjIik7Xy5TeC5zZXQoImx1cl9hYyIsImt3TTM3YyIpO18uU3guc2V0KCJsdXJfZGMiLCJsYTRDUmUiKTtfLlN4LnNldCgibHVyX2hiaCIsIlVsZFlyZSIpO18uU3guc2V0KCJsdXJfaHQiLCJSTFZOd2MiKTtfLlN4LnNldCgibHVyX2lwYyIsIlFaaU5PYiIpO18uU3guc2V0KCJsdXJfbWNhIiwiZ1laMG1jIik7Xy5TeC5zZXQoImx1cl9tY2FfbW8iLCJjS25lVWIiKTtfLlN4LnNldCgibHVyX21vX3JlZGlyZWN0IiwiUlA0TXhiIik7Xy5TeC5zZXQoImx1cl9tb19zaG93IiwiQmFmQUNjIik7Xy5TeC5zZXQoImx1cl9tb19za2lwIiwiTHpXRGciKTtfLlN4LnNldCgibHVyX21vYSIsImI2R0F1ZCIpO18uU3guc2V0KCJsdXJfbW9iIiwieklva3NlIik7Cl8uU3guc2V0KCJsdXJfbW9yZSIsImNrYlZFZiIpO18uU3guc2V0KCJsdXJfcGNhIiwidE9uOHNjIik7Xy5TeC5zZXQoImx1cl9wY3AiLCJrVTJzaCIpO18uU3guc2V0KCJsdXJfcWwiLCJLMU5maWUiKTtfLlN4LnNldCgibHVyX3JvYSIsImhUVnhoIik7Xy5TeC5zZXQoIm1hbmFnZVBob3RvcyIsIlozV3UzYiIpO18uU3guc2V0KCJtYXBSZXN1bHRDbGlja2VkIiwiRGVTQzVkIik7Xy5TeC5zZXQoIm1hcFJlc3VsdEZvY3VzZWQiLCJsZk9JYmQiKTtfLlN4LnNldCgibWFwUmVzdWx0VW5mb2N1c2VkIiwiTGQxRHAiKTtfLlN4LnNldCgibWFwX21lYXNsZV9jbGlja2VkIiwidER3cDFiIik7Xy5TeC5zZXQoIm1hcHNsaXRlX2NvbGxhcHNlIiwiUUZGM21jIik7Xy5TeC5zZXQoIm1hcHNsaXRlX2V4cGFuZCIsIkxmdkhYYyIpO18uU3guc2V0KCJtYXliZV9jbG9zZV9kaWFsb2ciLCJCcGFVZ2IiKTtfLlN4LnNldCgibWVudV9pdGVtX2hvdmVyIiwicXNGZ29jIik7Cl8uU3guc2V0KCJtZW51X2l0ZW1fc2VsZWN0IiwiRDhMYjliIik7Xy5TeC5zZXQoIm1pY19jIiwiaG9JOUhmIik7Xy5TeC5zZXQoIm1pY19xIiwiVHNJUVEiKTtfLlN4LnNldCgibWluZXN3ZWVwZXJfY2xvc2VkIiwibjNHRWRlIik7Xy5TeC5zZXQoIm1pbmVzd2VlcGVyX2Nsb3NlZF9yZWFsbHkiLCJTUW54U2IiKTtfLlN4LnNldCgibWlzc2luZ0ZhY3RzX3N1Ym1pdCIsIkZETFRCIik7Xy5TeC5zZXQoIm1semNfaW4iLCJEbWRzRWIiKTtfLlN4LnNldCgibWx6Y19vdXQiLCJLNEJhWCIpO18uU3guc2V0KCJtb3JlX2RldGFpbHNfZXhwYW5kIiwidld5bktkIik7Xy5TeC5zZXQoIm1vcmVfZWRpdG9yaWFsX3Jldmlld3NfZXhwYW5kIiwiZnA2WXpjIik7Xy5TeC5zZXQoIm1vcmVfcmV2aWV3c19leHBhbmQiLCJNUzB6YWQiKTtfLlN4LnNldCgibW9yZV9zZWxsZXJzX2V4cGFuZCIsInp5T0hBZSIpO18uU3guc2V0KCJtb3J0Z2FnZV9qb3VybmV5X3N3aXRjaF9jYXJkX3ZhcmlhbnQiLCJvRTlHeWIiKTsKXy5TeC5zZXQoIm10bF9ubyIsIlk4VGZZYiIpO18uU3guc2V0KCJtdGxfb3Blbl90aW1lbGluZSIsInQyTFh5YyIpO18uU3guc2V0KCJtdGxfb3Blbl92aXNpdF9pbl90aW1lbGluZSIsIkxWRDRmYiIpO18uU3guc2V0KCJtdGxfeWVzIiwiZHVCUmtjIik7Xy5TeC5zZXQoIm5hdmlnYXRlVG9MaXN0IiwibmhrV0FjIik7Xy5TeC5zZXQoIm5lYXJieV9kYXRhX2NhbmNlbGxlZCIsIlZCQ1Y1YiIpO18uU3guc2V0KCJuZWFyYnlfZGF0YV9jaGFuZ2VkIiwidDZVbG4iKTtfLlN4LnNldCgibmVhcmJ5X2ZvY3VzX2NoYW5nZWQiLCJheXlKemMiKTtfLlN4LnNldCgibmVhcmJ5X3Jlc2V0IiwicUNER0FjIik7Xy5TeC5zZXQoIm5lYXJieV9zZWxlY3Rpb25fY2hhbmdlZCIsIlY1Q1RkZSIpO18uU3guc2V0KCJuZWFyYnlfdmlzaWJsZSIsIms0SldrYiIpO18uU3guc2V0KCJuZXdMaXN0Q2xpY2siLCJiYnp2OGMiKTtfLlN4LnNldCgibmV3X2xpc3RfbmFtZV9pbnB1dCIsInBwcjlMZSIpOwpfLlN4LnNldCgibmV3X3NoZWV0X25hbWVfaW5wdXQiLCJmaDc2MGUiKTtfLlN4LnNldCgibmV3c2xpc2JvbmFtcHZpcyIsIkI3YkNiZiIpO18uU3guc2V0KCJuZXh0X3JvdW5kX2J1dHRvbl9hY3Rpb24iLCJGU3RyYmUiKTtfLlN4LnNldCgibmhoX2hoIiwieDNzVUxjIik7Xy5TeC5zZXQoIm5oaF9zaCIsIkR2OVVQZSIpO18uU3guc2V0KCJubyIsIkpSajdiIik7Xy5TeC5zZXQoIm5vX3ZvdGUiLCJDNUs3aWQiKTtfLlN4LnNldCgibm90X3N1cmVfdm90ZSIsInNZQVJVYiIpO18uU3guc2V0KCJub3RoaW5nIiwiSWZtWUtjIik7Xy5TeC5zZXQoIm9hZSIsInpmR2JYIik7Xy5TeC5zZXQoIm9jY3VwYW5jeUl0ZW1TZWxlY3QiLCJ0cVZuWmQiKTtfLlN4LnNldCgib2NjdXBhbmN5VGlwU2VsZWN0IiwiWVdkRVNjIik7Xy5TeC5zZXQoIm9sX3NjZSIsIkpyRm51Iik7Xy5TeC5zZXQoIm9saV9pc2UiLCJOUG05b2YiKTtfLlN4LnNldCgib25EZXBhcnR1cmVDaGFuZ2UiLCJvc0Y2U2IiKTsKXy5TeC5zZXQoIm9uRGVwYXJ0dXJlQ2xpY2siLCJ1YUkzRmMiKTtfLlN4LnNldCgib25EZXBhcnR1cmVLZXlkb3duIiwiTm5JZnBiIik7Xy5TeC5zZXQoIm9uS2V5dXAiLCJ0djFva2IiKTtfLlN4LnNldCgib25SZXR1cm5DaGFuZ2UiLCJsN2FCMyIpO18uU3guc2V0KCJvblJldHVybkNsaWNrIiwiZlNUZmpiIik7Xy5TeC5zZXQoIm9uUmV0dXJuS2V5ZG93biIsIkNSbGVmIik7Xy5TeC5zZXQoIm9uU3VibWl0IiwiYnFZenplIik7Xy5TeC5zZXQoIm9uVGV4dEFyZWFCbHVyIiwiV2VYNUEiKTtfLlN4LnNldCgib25UZXh0QXJlYUZvY3VzIiwiY0M1MWZkIik7Xy5TeC5zZXQoIm9uVW5kb0RlbGV0ZSIsInVka3Y5YyIpO18uU3guc2V0KCJvblVuZG9Qb3N0IiwiSk5kRmFiIik7Xy5TeC5zZXQoIm9uX2NsaWNrIiwieDZDTjlkIik7Xy5TeC5zZXQoIm9wZW5BZ2VuY3lGdWxsUGFnZVZpZXciLCJxV005UGIiKTtfLlN4LnNldCgib3BlbkFzeW5jSVYiLCJaRWo2RmMiKTsKXy5TeC5zZXQoIm9wZW5CaWxsaW5nIiwibmpoTWtlIik7Xy5TeC5zZXQoIm9wZW5Db21wSW1tZXJzaXZlIiwiZDNwd2YiKTtfLlN4LnNldCgib3BlbkVkaXRQYWdlSWZyYW1lIiwidzhMdUdiIik7Xy5TeC5zZXQoIm9wZW5FeGlzdGVuY2VQYWdlSWZyYW1lIiwiaTRmYkFlIik7Xy5TeC5zZXQoIm9wZW5GcFN0YXRlIiwiTTJwNFVkIik7Xy5TeC5zZXQoIm9wZW5JViIsImcxV3BFZiIpO18uU3guc2V0KCJvcGVuTG9jYXRpb25FcnJvckxlYXJuTW9yZSIsInFHa3VUYyIpO18uU3guc2V0KCJvcGVuTW9kYWxPbkVudGVyIiwiQ0FZbEEiKTtfLlN4LnNldCgib3Blbk9wZW5pbmdEYXRlUGFnZUlmcmFtZSIsInpwblg4Iik7Xy5TeC5zZXQoIm9wZW5SSVYiLCJxb1QyaGQiKTtfLlN4LnNldCgib3BlblJldmlld3MiLCJTZnRYUWIiKTtfLlN4LnNldCgib3BlblJldmlld3NQYWdlIiwiYWF4ZkZjIik7Xy5TeC5zZXQoIm9wZW5fYnJvd3NlIiwiaHpJY3ljIik7Cl8uU3guc2V0KCJvcGVuX2NvbnRlc3RhbnRfZGlhbG9nIiwiVGFzOTEiKTtfLlN4LnNldCgib3Blbl9jb3VudHJ5X21lbnUiLCJHMDVPUWIiKTtfLlN4LnNldCgib3Blbl9jdXJyZW5jeV9tZW51IiwiR012UjkiKTtfLlN4LnNldCgib3Blbl9kaWFsb2ciLCJCRXlKMGIiKTtfLlN4LnNldCgib3Blbl9lcCIsIkU0RnQ1ZSIpO18uU3guc2V0KCJvcGVuX2ZlZWRiYWNrIiwicWxkR0pkIik7Xy5TeC5zZXQoIm9wZW5fZm9jdXNfc3RhdGUiLCJuQU94dmMiKTtfLlN4LnNldCgib3Blbl9pbW1lcnNpdmVfZnJvbV9mb290ZXIiLCJLWDZDcGIiKTtfLlN4LnNldCgib3Blbl9pbW1lcnNpdmVfZnJvbV9zZWVfbW9yZSIsInpOSjJXYyIpO18uU3guc2V0KCJvcGVuX2ltbWVyc2l2ZV9mcm9tX3ZpZXdfbW9yZV9mb290ZXIiLCJDVUJOWGQiKTtfLlN4LnNldCgib3Blbl9pbW1lcnNpdmVfbGlzdCIsInpMSWJlZCIpO18uU3guc2V0KCJvcGVuX2xhbmd1YWdlX21lbnUiLCJ3MjRmTGQiKTsKXy5TeC5zZXQoIm9wZW5fbGluayIsIkQyYzBqZSIpO18uU3guc2V0KCJvcGVuX2xveWFsdHlfY2FyZF9kaWFsb2ciLCJWQXNGOWMiKTtfLlN4LnNldCgib3Blbl9wcmljZV9maW5kZXJfYWlycG9ydHNfdGFiIiwiT0RSZ2wiKTtfLlN4LnNldCgib3Blbl9wcmljZV9maW5kZXJfZGF0ZXNfdGFiIiwiTENSa0kiKTtfLlN4LnNldCgib3Blbl9wcmljZV9maW5kZXJfdHJlbmRzX3RhYiIsIllncnpsZSIpO18uU3guc2V0KCJvcGVuX3NoYXJpbmciLCJkZ3Z6UmQiKTtfLlN4LnNldCgib3Blbl93aHlfdGhpc19yZXN1bHRfZGlhbG9nIiwibDZuSGdmIik7Xy5TeC5zZXQoIm9wZW5lZCIsIlVyVVdCZSIpO18uU3guc2V0KCJvcGVudmlkZW8iLCJ1b3VuamIiKTtfLlN4LnNldCgib3J0IiwieThjbTYiKTtfLlN4LnNldCgicGFnZV9jbG9zZSIsIkE2U0RRZSIpO18uU3guc2V0KCJwYWdpbmF0aW9uIiwianJHQ1RlIik7Xy5TeC5zZXQoInBhZ2luYXRpb25fY2xpY2siLCJuZTVRamMiKTsKXy5TeC5zZXQoInBhdGh3YXlzX2NkIiwiZllUTjYiKTtfLlN4LnNldCgicGF0aHdheXNfbWoiLCJtdUJwVmIiKTtfLlN4LnNldCgicGF1c2UiLCJOZDBGVSIpO18uU3guc2V0KCJwZ19hcyIsImxxck9hYiIpO18uU3guc2V0KCJwZ19pbml0IiwiWDF0a3AiKTtfLlN4LnNldCgicGdfcmVzZXQiLCJkYWxzbSIpO18uU3guc2V0KCJwZ19yZXNpemUiLCJTYkt0bWUiKTtfLlN4LnNldCgicGdfcnMiLCJNVDgyN2UiKTtfLlN4LnNldCgicGdfc2Nyb2xsX2J5IiwiclI2ek5jIik7Xy5TeC5zZXQoInBnX3NlbGVjdCIsImN4QnJGZCIpO18uU3guc2V0KCJwZ192aXNpYmxlIiwiYWhSSDVkIik7Xy5TeC5zZXQoInBnX3dkIiwiWDdtcUdmIik7Xy5TeC5zZXQoInBob25lX251bWJlcl9pbnB1dF9jaGFuZ2UiLCJtdXdkY2IiKTtfLlN4LnNldCgicGxhYl9maWxsZWQiLCJrSkN4YWMiKTtfLlN4LnNldCgicGxhY2VfaW1wcmVzc2lvbiIsIlBwak9RYiIpOwpfLlN4LnNldCgicGxhY2VfbGlzdF9pbXByZXNzaW9uIiwiQ1hjU2JmIik7Xy5TeC5zZXQoInBsYWNlX2xpc3Rfc2VsZWN0aW9uIiwiUTNNM3AiKTtfLlN4LnNldCgicGxhY2Vfc2VsZWN0aW9uIiwiQk5JMHRlIik7Xy5TeC5zZXQoInBsYXkiLCJQWEVpa2YiKTtfLlN4LnNldCgicG9zdCIsIlhWU1ZKIik7Xy5TeC5zZXQoInBvc3RRdWVzdGlvbiIsInIzQjlvZCIpO18uU3guc2V0KCJwb3N0X3JldmlldyIsInM3aDdLYiIpO18uU3guc2V0KCJwcF9hcHBseSIsIkd6dVJPZCIpO18uU3guc2V0KCJwcF9jciIsImlHSmlHYyIpO18uU3guc2V0KCJwcF90cmFuc2l0IiwicXNVVldiIik7Xy5TeC5zZXQoInBwbF9uZXdfbGlzdF9zYXZlIiwiRU9xSXFjIik7Xy5TeC5zZXQoInBwbGRjX2NhbmNlbCIsInhwZzJ0ZCIpO18uU3guc2V0KCJwcGxkY19zdWJtaXQiLCJnUTNJbmIiKTtfLlN4LnNldCgicHBsaV92YWxpZGl0eV9jaGFuZ2UiLCJFNU9JUGIiKTtfLlN4LnNldCgicHFhX3JlZnIiLCJVaWdZWmMiKTsKXy5TeC5zZXQoInBxYV9ybGQiLCJNQzJRdWIiKTtfLlN4LnNldCgicHFhcHEiLCJmMWRMVGQiKTtfLlN4LnNldCgicHJldnJlZyIsIkh5Z3NLZiIpO18uU3guc2V0KCJwcml2YWN5X3JlbWluZGVyX2FjayIsIlphbjB4YiIpO18uU3guc2V0KCJwcm9kdWN0X3ZpZXdlcl9jbG9zZSIsInB3N2xyYyIpO18uU3guc2V0KCJwcm9tb19oaWRkZW4iLCJWVjJ3M2UiKTtfLlN4LnNldCgicHJzX2J0biIsIlNBOFE3ZCIpO18uU3guc2V0KCJwcnNfZGx0YiIsIkVPWmRJZiIpO18uU3guc2V0KCJwcnNfZHJjIiwicWhBeWRlIik7Xy5TeC5zZXQoInByc19lcWIiLCJpNW85eGQiKTtfLlN4LnNldCgicHJzX2ludmIiLCJlVUNZZCIpO18uU3guc2V0KCJwdF92aXNpYmxlIiwiWVFvUmVkIik7Xy5TeC5zZXQoInB0X3dkIiwid013MnpjIik7Xy5TeC5zZXQoInB2X29wZW4iLCJvTE1SWWIiKTtfLlN4LnNldCgicHdfY2xvc2VfaGVscF9idWJibGUiLCJCWFBJZmMiKTsKXy5TeC5zZXQoInB3X2V4cGFuZF9saXN0IiwibHJhOVNkIik7Xy5TeC5zZXQoInFfZmx0ciIsIlFNQ1FzYiIpO18uU3guc2V0KCJxbXBfYWNjZXB0ZWQiLCJxMlNPdWMiKTtfLlN4LnNldCgicW1wX2Nsb3NlZF9leHRlcm5hbF9pbnRlcmFjdGlvbiIsIkdsVkJYZCIpO18uU3guc2V0KCJxbXBfZGlzbWlzc2VkIiwiQ3l1eGciKTtfLlN4LnNldCgicW1wX2ltcHJlc3Npb24iLCJTQ2F4SGUiKTtfLlN4LnNldCgicl9kcm9wZG93biIsImJGeUhRYyIpO18uU3guc2V0KCJyX2ZldGNoIiwiTUNYbVhlIik7Xy5TeC5zZXQoInJfbGVzcyIsImxRc1JNZSIpO18uU3guc2V0KCJyX21vcmUiLCJNN1ZQIik7Xy5TeC5zZXQoInJhZGlvX2J1dHRvbl9zZWxlY3QiLCJvWXI2bWIiKTtfLlN4LnNldCgicmF0ZXNfdGFiX2RhdGVfdXBkYXRlZCIsImxoRjJoZiIpO18uU3guc2V0KCJyYl9zZWwiLCJEeUplV2UiKTtfLlN4LnNldCgicmVkaXJlY3QiLCJQb1h3T2UiKTsKXy5TeC5zZXQoInJlZmluZW1lbnRfY2xpY2siLCJQUVVmQWMiKTtfLlN4LnNldCgicmVmcmVzaCIsIm41U1FyZCIpO18uU3guc2V0KCJyZWxvYWQiLCJTOWd3MyIpO18uU3guc2V0KCJyZWxvYWRCZWdpbiIsInBGYU9JIik7Xy5TeC5zZXQoInJlbG9hZENvbXBsZXRlIiwib2tkRkVmIik7Xy5TeC5zZXQoInJlbW92ZVZhbHVlIiwicklJQlNlIik7Xy5TeC5zZXQoInJlbW92ZV9jYXRlZ29yeSIsIkVkSU1oYiIpO18uU3guc2V0KCJyZW1vdmVfcmVsYXRlZF9wcm9kdWN0X2NsaWNrIiwiQTdpcGRmIik7Xy5TeC5zZXQoInJlbW92ZV9zbGljZSIsInIxdU94YyIpO18uU3guc2V0KCJyZW5kZXJlZCIsIllhbmEyYiIpO18uU3guc2V0KCJyZXBlYXRMYXN0VG9nZ2xlIiwiWHhRUW1lIik7Xy5TeC5zZXQoInJlcG9ydEFidXNlIiwiSnl0WEJkIik7Xy5TeC5zZXQoInJlcG9ydEFidXNlQ2xvc2VkIiwibGxQRzZiIik7Xy5TeC5zZXQoInJlcG9ydEFidXNlQ29tcGxldGVkIiwiQzBKVW1iIik7Cl8uU3guc2V0KCJyZXNldCIsImxXblFFZCIpO18uU3guc2V0KCJyZXNldEFuc3dlckVsdFZpc2liaWxpdHkiLCJ3ekZnYmQiKTtfLlN4LnNldCgicmVzZXRfZmlsdGVyIiwiVVU3blhjIik7Xy5TeC5zZXQoInJlc2V0X2ZpbHRlcnMiLCJQSVA4Z2UiKTtfLlN4LnNldCgicmVzZXRfcHJlZnMiLCJyVlBzWWMiKTtfLlN4LnNldCgicmVzaXplRGlhbG9nIiwiVjJkNGljIik7Xy5TeC5zZXQoInJldHJ5IiwiRTNCdmJjIik7Xy5TeC5zZXQoInJldHJ5Q3JlYXRlIiwiQkNudXBiIik7Xy5TeC5zZXQoInJldmlld19jaGFuZ2UiLCJmR3VEaGYiKTtfLlN4LnNldCgicmZ0ZF9jYW5jZWwiLCJMckZUQiIpO18uU3guc2V0KCJyZnRkX2NvbmZpcm0iLCJvNU14SSIpO18uU3guc2V0KCJyaSIsImpTZ0NTYiIpO18uU3guc2V0KCJyaXZSZXBvcnQiLCJiNHl4WGIiKTtfLlN4LnNldCgicml2UmVwb3J0Q2xvc2UiLCJyQ0w3TWQiKTtfLlN4LnNldCgicnJlX2ZpbGxlZCIsIktFYjB5ZCIpOwpfLlN4LnNldCgicnJlX2xvYWRpbmciLCJLc3lma2MiKTtfLlN4LnNldCgicnNfY2hhbmdlIiwiRlhFZlVlIik7Xy5TeC5zZXQoInJzX2RyYWciLCJGY0pINmUiKTtfLlN4LnNldCgicnZjX2xvYWRlZCIsIlc2U0lIZCIpO18uU3guc2V0KCJzX21pcyIsIkNkQjl3YyIpO18uU3guc2V0KCJzYWVfYXR0cmlidXRlX3ZhbHVlX2NoYW5nZWQiLCJUckxuN2QiKTtfLlN4LnNldCgic2FlX2VudW1fZW50cnlwb2ludF9jbGlja2VkIiwiZTVaQWhmIik7Xy5TeC5zZXQoInNhZV9lbnVtX3ZhbHVlX2NoYW5nZWQiLCJnUlRudmYiKTtfLlN4LnNldCgic2FlX2ZpbmlzaGVkIiwiUVJ6ODNjIik7Xy5TeC5zZXQoInNhZV9zZW5kIiwiUVBaYm9kIik7Xy5TeC5zZXQoInNhdmVBbmRDbG9zZURpYWxvZyIsInkzVmRqYyIpO18uU3guc2V0KCJzYXZlQW5kQ2xvc2VQYWdlIiwiWHhvRDljIik7Xy5TeC5zZXQoInNhdmVfZmlsIiwiZldkb0hjIik7Xy5TeC5zZXQoInNhdmVfbG9jIiwiRWJZcmgiKTsKXy5TeC5zZXQoInNiX2FwcGx5X25ld19xdWVyeSIsInNqSTBiZCIpO18uU3guc2V0KCJzYl9jbGVhcl9xdWVyeSIsIm9QTWdxZSIpO18uU3guc2V0KCJzYl9kaXNtaXNzX3NiX3Byb21vIiwidzBuRk5lIik7Xy5TeC5zZXQoInNiX29wZW5PdmVybGF5IiwiVFB2bGRjIik7Xy5TeC5zZXQoInNiY19pbml0Iiwia0JCdGxmIik7Xy5TeC5zZXQoInNiY19yYiIsIkVNVmd0ZCIpO18uU3guc2V0KCJzYmNfcnIiLCJ5OTJKZyIpO18uU3guc2V0KCJzYmNfcnMiLCJheXdyRGYiKTtfLlN4LnNldCgic2JjX3J5IiwiVDRRWUliIik7Xy5TeC5zZXQoInNiY19zYyIsIkdweVdkIik7Xy5TeC5zZXQoInNiY19zdSIsImdrQW5tYiIpO18uU3guc2V0KCJzYyIsIkw1anlzZCIpO18uU3guc2V0KCJzY19kbSIsInFWTjBSYyIpO18uU3guc2V0KCJzY19lbSIsIk9hQW1kZCIpO18uU3guc2V0KCJzY19mIiwiSjVTZ2pkIik7Xy5TeC5zZXQoInNjX25mIiwic0VaMG5iIik7Xy5TeC5zZXQoInNjX3JmaXIiLCJKbkd6QWMiKTsKXy5TeC5zZXQoInNjX3NjIiwiT1c5UjNlIik7Xy5TeC5zZXQoInNjY19pciIsIkE4RjJ3YyIpO18uU3guc2V0KCJzY2NfaXUiLCJOZE5LSWMiKTtfLlN4LnNldCgic2NjX291IiwiblVRb3NjIik7Xy5TeC5zZXQoInNjc19jaGFuZ2UiLCJJdENZeWYiKTtfLlN4LnNldCgic2NzX2NoYW5nZWQiLCJRYU1zZWMiKTtfLlN4LnNldCgic2VhcmNoUmVzdWx0U2VsZWN0IiwiYUZnZW8iKTtfLlN4LnNldCgic2VhdGluZ19jbGFzc19zZWxlY3RlZCIsIlZUb25DYyIpO18uU3guc2V0KCJzZWVfZnVsbF9kZWZpbml0aW9uIiwiTGVzbmFlIik7Xy5TeC5zZXQoInNlbGVjdCIsIkNMZFZqZCIpO18uU3guc2V0KCJzZWxlY3REYXRlIiwiRFVBVlFkIik7Xy5TeC5zZXQoInNlbGVjdF9kYXRlIiwiaDRhS05jIik7Xy5TeC5zZXQoInNlbGVjdF9maWx0ZXIiLCJuRFJldmUiKTtfLlN4LnNldCgic2VsZWN0X2ljb24iLCJNZHdndGUiKTtfLlN4LnNldCgic2VsZWN0X3RhYiIsIkRielo4ZSIpOwpfLlN4LnNldCgic2VsZWN0X3RpbWUiLCJpZm9raGIiKTtfLlN4LnNldCgic2VsZWN0X3ZhcmlhbnQiLCJ5MjU1U2QiKTtfLlN4LnNldCgic2VsZWN0ZWRfZGF5X21vcmVfaW5mbyIsIldybUh3Iik7Xy5TeC5zZXQoInNlbmRfYnV0dG9uIiwibDVWUW9kIik7Xy5TeC5zZXQoInNlbmlvcml0eV9jaGVja2JveF9jaGFuZ2UiLCJZSzB6RWIiKTtfLlN4LnNldCgic2V0X2FjdGl2ZV9pbmRleCIsIldhUUFxZiIpO18uU3guc2V0KCJzZXRfdmFsdWUiLCJYbmhTTmMiKTtfLlN4LnNldCgic2ZvZCIsIldEOEZiZCIpO18uU3guc2V0KCJzZnNkIiwiRmNGWkJjIik7Xy5TeC5zZXQoInNnX2Rlc3Ryb3kiLCJ1a0MweGYiKTtfLlN4LnNldCgic2dfZW50ZXIiLCJ5eUljV2UiKTtfLlN4LnNldCgic2dfZm9yY2VfcmVuZGVyIiwiTzRZamdjIik7Xy5TeC5zZXQoInNnX2luaXQiLCJRWFhUQmMiKTtfLlN4LnNldCgic2dfbGVhdmUiLCJ3bFNYMWIiKTtfLlN4LnNldCgic2dfcmVuZGVyIiwibE9aYmZiIik7Cl8uU3guc2V0KCJzZ19yZXF1ZXN0X3Njcm9sbCIsInF2ZUl0Iik7Xy5TeC5zZXQoInNnX3Jlc2V0IiwiVU5nYmtlIik7Xy5TeC5zZXQoInNnX3Jlc2l6ZSIsIklEbVVIYyIpO18uU3guc2V0KCJzZ19zY3JvbGwiLCJUWWN3TmUiKTtfLlN4LnNldCgic2dfc2Nyb2xsX2VuZCIsIk9rZGZDIik7Xy5TeC5zZXQoInNnX3Njcm9sbF90byIsIm5ITmxKZCIpO18uU3guc2V0KCJzZ19zZWxlY3QiLCJ4UFlyaGYiKTtfLlN4LnNldCgic2hvcnRfcmV2aWV3X3NuaXBwZXQiLCJqS2tkNWIiKTtfLlN4LnNldCgic2hvdyIsImlwSnpVZSIpO18uU3guc2V0KCJzaG93UG9zdHNDb250YWluZXIiLCJ6R0Jyd2YiKTtfLlN4LnNldCgic2hvd1ByaWNlVHJhY2tlckNhbGxvdXQiLCJMYUlDaWUiKTtfLlN4LnNldCgic2hvd1F1ZXN0aW9ucyIsImVDUTdMYyIpO18uU3guc2V0KCJzaG93UmVwb3J0QWJ1c2UiLCJDbWF0Z2UiKTtfLlN4LnNldCgic2hvd1NpbmdsZVF1ZXN0aW9uIiwieGZpdXVlIik7Cl8uU3guc2V0KCJzaG93V2hlcmVUb1dhdGNoQ29udGVudCIsImZpNlFGYyIpO18uU3guc2V0KCJzaG93V3JpdGVBbnN3ZXIiLCJ1dTZEZWYiKTtfLlN4LnNldCgic2hvd1dyaXRlUXVlc3Rpb24iLCJDMjFxb2QiKTtfLlN4LnNldCgic2hvd19hbmRfZm9jdXMiLCJmSWZLTGQiKTtfLlN4LnNldCgic2hvd19jYXRlZ29yeSIsInhXTkFtYiIpO18uU3guc2V0KCJzaG93X2RhdGVfcGlja2VyIiwid3B5VkZkIik7Xy5TeC5zZXQoInNob3dfZGVmYXVsdF9wcmljZV9saW5rIiwibmgyVjZiIik7Xy5TeC5zZXQoInNob3dfZmlyc3RfcGFnZSIsIlJBbmZRZCIpO18uU3guc2V0KCJzaG93X2Z1bGxwYWdlIiwiQk45MHBiIik7Xy5TeC5zZXQoInNob3dfbW9yZV9jb3Vyc2VzX2NsaWNrIiwiTThwamdlIik7Xy5TeC5zZXQoInNob3dfcHJvZ3Jlc3NfYmFyIiwiQXBBZWlkIik7Xy5TeC5zZXQoInNob3dfc3Bpbm5lciIsIlpseTF0ZSIpO18uU3guc2V0KCJzaHRfZCIsImQ5VmFLYiIpOwpfLlN4LnNldCgic2lnbl9pbl9idXR0b25fY2xpY2tlZCIsImQ0RkRwYyIpO18uU3guc2V0KCJza2lwX2FjdGlvbiIsImZ6QzlPYyIpO18uU3guc2V0KCJzbGlkZXJfYyIsIk1GSDFSZSIpO18uU3guc2V0KCJzbGlkZXJfY2hhbmdlIiwidDJ3YTFiIik7Xy5TeC5zZXQoInNsaWRlcl9mIiwiSmk4eGFlIik7Xy5TeC5zZXQoInNsaWRlcl9zIiwiZXRJT0RiIik7Xy5TeC5zZXQoInNtYXJ0YW5zd2Vyc0lmcmFtZUxvYWRlZCIsIk9PNUwwIik7Xy5TeC5zZXQoInNtcl9jbG9zZSIsIkp5Wmp3YyIpO18uU3guc2V0KCJzbXJfbGVzcyIsImVGemVPZCIpO18uU3guc2V0KCJzbXJfbW9yZSIsInhlV3VMYyIpO18uU3guc2V0KCJzbmFja2Jhcl9hY3Rpb24iLCJhZjRLc2UiKTtfLlN4LnNldCgic25ha2VfY2xvc2VkIiwicGhyNnlkIik7Xy5TeC5zZXQoInNuYWtlX2Nsb3NlZF9yZWFsbHkiLCJzeUtQa2UiKTtfLlN4LnNldCgic25md29zIiwiTHllemdlIik7Xy5TeC5zZXQoInNuZ3RwIiwic2VNN1FlIik7Cl8uU3guc2V0KCJzcF9pciIsInN2TzFIYyIpO18uU3guc2V0KCJzcG9uc29yZWRfY2xpY2siLCJFb2N2T2IiKTtfLlN4LnNldCgic3JwX2hkIiwiaGNZNjkiKTtfLlN4LnNldCgic3JwX3VoZCIsIkFCdWFmYyIpO18uU3guc2V0KCJzc2F3IiwiTUxrMW1jIik7Xy5TeC5zZXQoInNzZGMiLCJFU0lIZGQiKTtfLlN4LnNldCgic3NkbyIsIlhiYUw3YyIpO18uU3guc2V0KCJzc3hfYXN5bmMiLCJjeXQ1Z2QiKTtfLlN4LnNldCgic3RhcnRfZmVlZGJhY2tfZGlhbG9nIiwiS0JtVGZlIik7Xy5TeC5zZXQoInN0b3BQcm9wYWdhdGlvbiIsInlBS0RmYiIpO18uU3guc2V0KCJzdHJlYW1fY2xvc2Vfc2lnbmluX2J1YmJsZSIsIlcySWtGZCIpO18uU3guc2V0KCJzdHJlYW1fY3JlYXRlX2FjY291bnQiLCJUVDYzRWYiKTtfLlN4LnNldCgic3RyZWFtX2ZpbHRlcl9jbGljayIsIm13R2txIik7Xy5TeC5zZXQoInN0cmVhbV9zaWduaW4iLCJCRml4MGQiKTtfLlN4LnNldCgic3VibWl0X2Zvcm0iLCJ6MWpvZ2QiKTsKXy5TeC5zZXQoInN1Ym1pdF92b3RlcyIsIm41ZXAyIik7Xy5TeC5zZXQoInN1YnNjcmlwdGlvbl9kaWFsb2dfb2siLCJ0MDdqRSIpO18uU3guc2V0KCJzdWJzY3JpcHRpb25fc3VjY2VzcyIsIkVPck83YiIpO18uU3guc2V0KCJzdWJzY3JpcHRpb25fdW5kbyIsImwxWGNYZSIpO18uU3guc2V0KCJzdl9kaXNtaXNzX2VmeV9wcm9tbyIsIkVKQkVDYyIpO18uU3guc2V0KCJzdl9kaXNtaXNzX3llX3Byb21vIiwiZEhXZGZlIik7Xy5TeC5zZXQoInN3aXRjaF90b19saXN0IiwiY1hQbTZkIik7Xy5TeC5zZXQoInN3aXRjaF90b19tYXAiLCJMUnJyR2YiKTtfLlN4LnNldCgidGFfaXMiLCJqZVp3RmQiKTtfLlN4LnNldCgidGFfaXNjIiwiZmRnbWlkIik7Xy5TeC5zZXQoInRhX3JjIiwid0dBUGZjIik7Xy5TeC5zZXQoInRhX3N1aHMiLCJWQzA0c2YiKTtfLlN4LnNldCgidGFfdGNoIiwicms0WUQiKTtfLlN4LnNldCgidGFfdGkiLCJTT054bWUiKTtfLlN4LnNldCgidGFfdHMiLCJEdUdjeiIpOwpfLlN4LnNldCgidGFfdHNyIiwid2plRUZlIik7Xy5TeC5zZXQoInRhZnRfdSIsIkhqYU14Iik7Xy5TeC5zZXQoInRhZ19jbGljayIsImJCdXJ2YiIpO18uU3guc2V0KCJ0Yl9ocyIsIlFNR1J2ZCIpO18uU3guc2V0KCJ0Yl90cyIsIkQyd0l2YiIpO18uU3guc2V0KCJ0YmhfYiIsIndTalNFZiIpO18uU3guc2V0KCJ0YmhfYnAiLCJPYW9kWiIpO18uU3guc2V0KCJ0YmhfYnIiLCJEUlFNaGUiKTtfLlN4LnNldCgidGJoX2RsIiwiRUNKZU4iKTtfLlN4LnNldCgidGJoX2ZiIiwia2JVSnBkIik7Xy5TeC5zZXQoInRiaF9oYXJkUmVsb2FkIiwieHg3R3dmIik7Xy5TeC5zZXQoInRiaF9uYXZQYXkiLCJXRlFvMGUiKTtfLlN4LnNldCgidGJoX3NjIiwicFRVbU5jIik7Xy5TeC5zZXQoInRiaF9zb2Z0UmVsb2FkIiwiSTZ5QVpkIik7Xy5TeC5zZXQoInRiaF9zciIsInh1d2VPZSIpO18uU3guc2V0KCJ0YmhfdGUiLCJ3a2NvNGMiKTtfLlN4LnNldCgidGMiLCJZREltT2IiKTsKXy5TeC5zZXQoInRjX2dyIiwiTXBIM2xjIik7Xy5TeC5zZXQoInRjX2lzIiwiUlFNdFIiKTtfLlN4LnNldCgidGNfbHpic2EiLCJPalJNZWIiKTtfLlN4LnNldCgidGNfdG1mIiwiUEhyaWZkIik7Xy5TeC5zZXQoInRlc3RfdXJsX2V2ZW50IiwiUlJuSGlkIik7Xy5TeC5zZXQoInRleHRfdXBkYXRlZCIsImloQWFIIik7Xy5TeC5zZXQoInRleHRhcmVhSW5wdXQiLCJLbm83bGIiKTtfLlN4LnNldCgidGV4dGFyZWFfY2hhbmdlIiwiU3U1dXEiKTtfLlN4LnNldCgidGV4dGFyZWFfY2xpY2siLCJxVTR3eWIiKTtfLlN4LnNldCgidGhfY3IiLCJpbHlJeWIiKTtfLlN4LnNldCgidGhhbmtfeW91X2Nsb3NlZCIsIkR5Y1hGIik7Xy5TeC5zZXQoInRoYW5rX3lvdV9nb3RfaXQiLCJ2YTRiQ2IiKTtfLlN4LnNldCgidGhhbmtfeW91X2dvdF9pdF9pbnRlcm5hbCIsInpFOWo4YiIpO18uU3guc2V0KCJ0aWNrZXRfdHlwZV9zZWxlY3RlZCIsImsxdXVkIik7Cl8uU3guc2V0KCJ0bF9MaXN0Vmlld1VwIiwicjR1RzVjIik7Xy5TeC5zZXQoInRsX2FsZXJ0RGVsZXRlRmFpbHVyZSIsIlg0MTJEYiIpO18uU3guc2V0KCJ0bF9hbGVydF9oZWFkZXJfY2xpY2siLCJKMmpCQWUiKTtfLlN4LnNldCgidGxfYXBfZGlyZWN0X2NsayIsIkdvSmdLYyIpO18uU3guc2V0KCJ0bF9hcHBseUZhY2V0Q2hhbmdlRmlsdGVyIiwieTB1aVdlIik7Xy5TeC5zZXQoInRsX2FwcGx5ZmlsdGVyIiwicU1Gd1ZkIik7Xy5TeC5zZXQoInRsX2NoaXBDaGFuZ2VzIiwiYkNFRWxmIik7Xy5TeC5zZXQoInRsX2NsZWFyRmlsdGVycyIsIm9sQjhMYiIpO18uU3guc2V0KCJ0bF9jbG9zZUZpbHRlcnMiLCJFU0Jia2IiKTtfLlN4LnNldCgidGxfY2xvc2VfZGlhbG9nIiwiem1VRlNkIik7Xy5TeC5zZXQoInRsX2NyZWF0ZV9hY2NvdW50IiwiUUhhY0hkIik7Xy5TeC5zZXQoInRsX2RldGFpbFNldEhvbWUiLCJPOGNnS2IiKTsKXy5TeC5zZXQoInRsX2RldGFpbFNldEhvbWVFeHRlcm5hbCIsImV6WXhaZSIpO18uU3guc2V0KCJ0bF9kZXRhaWxTZXRIb21lSW50ZXJuYWwiLCJsaVRyN2UiKTtfLlN4LnNldCgidGxfZGV0YWlsX3BhZ2Vfc2VsZWN0ZWQiLCJDYnlueGQiKTtfLlN4LnNldCgidGxfZG9XZWJTZWFyY2giLCJrUll4NmQiKTtfLlN4LnNldCgidGxfZWRpdF9hbGVydCIsInpHSUJTYyIpO18uU3guc2V0KCJ0bF9ldmVudHNGZWVkYmFjayIsIlhNMnAzZSIpO18uU3guc2V0KCJ0bF9leHBsb3JlT25CYWNrVXAiLCJZeFRaN2IiKTtfLlN4LnNldCgidGxfZmlsZUludGVybmFsQnVnIiwiVnVBenMiKTtfLlN4LnNldCgidGxfZnVsbGxpc3QiLCJEWTFxWGIiKTtfLlN4LnNldCgidGxfaGlkZUZpbHRlcnMiLCJZMzFIWmMiKTtfLlN4LnNldCgidGxfaGlkZV9uZXdfYWxlcnRfYnViYmxlIiwiTEpWS0ZkIik7Xy5TeC5zZXQoInRsX2hpZGVfc2lnbl9pbl9idWJibGUiLCJ6NzViaGYiKTsKXy5TeC5zZXQoInRsX2lkX2IiLCJkb2lHRCIpO18uU3guc2V0KCJ0bF9pZF9zIiwiTXBobXVmIik7Xy5TeC5zZXQoInRsX2l0ZW1EZXRhaWxVcCIsIld1Ym83YiIpO18uU3guc2V0KCJ0bF9saXN0U2Nyb2xsIiwid0szRFMiKTtfLlN4LnNldCgidGxfbmV3X3F1ZXJ5X2Zyb21fc3BlbGxpbmciLCJPdmtJZWYiKTtfLlN4LnNldCgidGxfb3Blbl9pYnBfZGV0YWlsX3BhZ2UiLCJBUUdQV2UiKTtfLlN4LnNldCgidGxfb3Blbl9teV9ldmVudHMiLCJ2WEtSY2YiKTtfLlN4LnNldCgidGxfb3Blbl9yZW1vdmVfYWxlcnRfZGlhbG9nIiwieDBObGVlIik7Xy5TeC5zZXQoInRsX29wZW5pbSIsIkFYYUVqZCIpO18uU3guc2V0KCJ0bF9vcGVuaW1fZXZlbnRzIiwiZU9qMUYiKTtfLlN4LnNldCgidGxfb3BlbmltX29uX3Bpdm90X3BpbGwiLCJTa00zY2QiKTtfLlN4LnNldCgidGxfcmVjb21tZW5kYXRpb25DbGljayIsImRoYjlOIik7Xy5TeC5zZXQoInRsX3JlZGlyZWN0X3RvX3BhdGh3YXlzIiwidk9CMkQiKTsKXy5TeC5zZXQoInRsX3JlZnJlc2giLCJtZXRNdGUiKTtfLlN4LnNldCgidGxfcmVmcmVzaEZpbHRlcnMiLCJlVmRjYWMiKTtfLlN4LnNldCgidGxfcmVsb2FkUGFnZSIsIml0WUFoZSIpO18uU3guc2V0KCJ0bF9yZW1vdmVfYWxlcnQiLCJpUzdMNGQiKTtfLlN4LnNldCgidGxfc2F2ZV9jaGFuZ2UiLCJSYlYzcGQiKTtfLlN4LnNldCgidGxfc2F2ZV9mcF9vcGVuIiwiTzVPamxmIik7Xy5TeC5zZXQoInRsX3NibG9naW4iLCJVNHQwZWYiKTtfLlN4LnNldCgidGxfc2VhcmNoSm9ic05lYXJNZSIsImt2NEJpIik7Xy5TeC5zZXQoInRsX3NlYXJjaE92ZXJsYXlVcCIsImhMaFA0ZCIpO18uU3guc2V0KCJ0bF9zaWduX2luIiwiaDRKSGsiKTtfLlN4LnNldCgidGxfdGFiX2NoYW5nZSIsInhJRHZHIik7Xy5TeC5zZXQoInRsX3Vuc2F2ZSIsImg3cVZwZCIpO18uU3guc2V0KCJ0bHNwbF9hZG1pc3Npb25zVGFiTGluayIsIk5jakgyYiIpO18uU3guc2V0KCJ0bHNwbF9jb3N0VGFiTGluayIsIk1oU0RqZiIpOwpfLlN4LnNldCgidGxzcGxfbWFqb3JzVGFiTGluayIsIkZQaUlUYiIpO18uU3guc2V0KCJ0bHNwbF9vdXRjb21lc1RhYkxpbmsiLCJrSGFHdGQiKTtfLlN4LnNldCgidGxzcGxfcmFua2luZ3NUYWJMaW5rIiwiTFdySUJmIik7Xy5TeC5zZXQoInRsc3BsX3N0dWRlbnRzVGFiTGluayIsInFxalA5YyIpO18uU3guc2V0KCJ0b2dnbGUiLCJ4NlVyNmMiKTtfLlN4LnNldCgidG9nZ2xlUmVwb3J0IiwiQ0RBQmtmIik7Xy5TeC5zZXQoInRvZ2dsZV9kaWFsb2ciLCJBQUVPVmMiKTtfLlN4LnNldCgidG9nZ2xlX2ZpbHRlcnMiLCJRNkU2cGQiKTtfLlN4LnNldCgidG9nZ2xlX3Jlc3VsdCIsIlZoRDNKZSIpO18uU3guc2V0KCJ0b29sdGlwX2NsaWNrZWQiLCJldU52bGYiKTtfLlN4LnNldCgidG9vbHRpcF9jbGsiLCJWVHdPamYiKTtfLlN4LnNldCgidHBfYnRuIiwiSWlnb2VlIik7Xy5TeC5zZXQoInRyX3VwZGF0ZV9zb3VyY2VfbGFuZ3VhZ2UiLCJ1UXhoVGQiKTsKXy5TeC5zZXQoInRyX3VwZGF0ZV90YXJnZXRfbGFuZ3VhZ2UiLCJsV1VCcWIiKTtfLlN4LnNldCgidHJhY2tfcHJpY2VfdGFiX3NlbGVjdGVkIiwiVmtpdzhiIik7Xy5TeC5zZXQoInRyaF9tZCIsIkFxUHZ5ZiIpO18uU3guc2V0KCJ0cmhfcmwiLCJOTzFtUGUiKTtfLlN4LnNldCgidHJoX3RyIiwidFNxUDdkIik7Xy5TeC5zZXQoInRyaWdnZXJfcmV2aWV3IiwiZTNwQjVlIik7Xy5TeC5zZXQoInRyaXZpYV9sb2FkX25ld19xdWVzdGlvbnMiLCJaV2k5OSIpO18uU3guc2V0KCJ0cnlfdXBkYXRlX2Jvb2tpbmdfbW9kdWxlX2FnYWluIiwicFJjWnRkIik7Xy5TeC5zZXQoInRzcF9hZiIsInZRc29uZCIpO18uU3guc2V0KCJ0c3BfY2FmIiwiZFV0cEFiIik7Xy5TeC5zZXQoInRzcF90YWYiLCJOd2hnQ2QiKTtfLlN4LnNldCgidHRfaXRlbV9jbGlja2VkIiwicHUzN00iKTtfLlN4LnNldCgidHRzIiwiRTlpWHIiKTtfLlN4LnNldCgidWRjX29zIiwiV3Q2RlpiIik7Cl8uU3guc2V0KCJ1Z2NwZV9oaWRlIiwidmFueXYiKTtfLlN4LnNldCgidWdjcGVfc2hvdyIsIkMzNXZyIik7Xy5TeC5zZXQoInVnY3Blc19oaWRlIiwiQmpqcEliIik7Xy5TeC5zZXQoInVnY3Blc19zaG93IiwiclIxeGRmIik7Xy5TeC5zZXQoInVnY3VtX2N1cnJlbnQiLCJQaFA2SGIiKTtfLlN4LnNldCgidWdjdW1fc3VnZ2VzdGVkIiwiT1hJa3giKTtfLlN4LnNldCgidW5kb0ZvbGxvdyIsIktJV3FtZCIpO18uU3guc2V0KCJ1bmRvTGVzcyIsIlpnaUpNZSIpO18uU3guc2V0KCJ1bmRvTW9yZSIsInAxVFJvZSIpO18uU3guc2V0KCJ1bmRvVW5mb2xsb3ciLCJ3Z0Jrd2UiKTtfLlN4LnNldCgidW5kb19yZW1vdmUiLCJxZDl3OGIiKTtfLlN4LnNldCgidW5mb2xsb3ciLCJoV09DVWMiKTtfLlN4LnNldCgidW5zdWJzY3JpcHRpb25fZGlhbG9nX29rIiwiUkZ2R1liIik7Xy5TeC5zZXQoInVuc3Vic2NyaXB0aW9uX3N1Y2Nlc3MiLCJwcG5hTSIpOwpfLlN4LnNldCgidXBkYXRlRGF0ZXRpbWVwaWNrZXJVSSIsInBXZXdoYiIpO18uU3guc2V0KCJ1cGRhdGVfZGF0ZXMiLCJZS1MxbGYiKTtfLlN4LnNldCgidXBkYXRlX2ZpbHRlcnMiLCJXa0xJM2QiKTtfLlN4LnNldCgidXBkYXRlX3JlZmluZW1lbnRzIiwiQUxKT0dkIik7Xy5TeC5zZXQoInVwZGF0ZV91aSIsImV0ajhXYiIpO18uU3guc2V0KCJ2YV9jaF9hYyIsIlZKTFYxYiIpO18uU3guc2V0KCJ2YV9jcF9wcyIsIlAxUWtSZCIpO18uU3guc2V0KCJ2aF9hZGQiLCJPUHpXYyIpO18uU3guc2V0KCJ2aF9oYyIsIk5kTHU3ZSIpO18uU3guc2V0KCJ2aF9yZW1vdmUiLCJvSDZZdSIpO18uU3guc2V0KCJ2aWV3X3NlbGVjdGVkX2Rlc3RpbmF0aW9uX2ZsaWdodHMiLCJXME5KcWYiKTtfLlN4LnNldCgidmlzaWJsZSIsInowdHgzIik7Xy5TeC5zZXQoInZpc2l0X2ZlZWQiLCJ0VVNZY2QiKTtfLlN4LnNldCgidmlzaXRfc2V0dGluZ3MiLCJCY2Z2eWMiKTtfLlN4LnNldCgidmxiX2MiLCJ6SGJ3NWUiKTsKXy5TeC5zZXQoInZvdGVfY3VycmVudCIsInFFYTYzYyIpO18uU3guc2V0KCJ2b3RlX2RvbnRfa25vdyIsInpSOFlIIik7Xy5TeC5zZXQoInZvdGVfbm9uZSIsInFINlptZCIpO18uU3guc2V0KCJ2b3RlX3N1Z2dlc3RlZCIsImxXMmRkZCIpO18uU3guc2V0KCJ2cGxfYyIsImxBTjlBZCIpO18uU3guc2V0KCJ3Y2NfaWEiLCJnbWVuYiIpO18uU3guc2V0KCJ3Y2NfeCIsIkdmbGZLIik7Xy5TeC5zZXQoIndjcl9laSIsImo2UHVpYyIpO18uU3guc2V0KCJ3ZWJzaXRlX2lucHV0X2NoYW5nZSIsImlKWERtYyIpO18uU3guc2V0KCJ3aHlfdGhlc2VfcmVzdWx0c19leHBhbmQiLCJmU3JCdmMiKTtfLlN4LnNldCgid29fbW92ZV90YWIiLCJJT1dlQmMiKTtfLlN4LnNldCgid29fcmV0dXJuX2ZvY3VzIiwiUVJCMnRmIik7Xy5TeC5zZXQoIngiLCJlQmRzR2QiKTtfLlN4LnNldCgieHBkX2EiLCJDN3hvdyIpO18uU3guc2V0KCJ4cGRfYyIsIlY1Szc0ZSIpO18uU3guc2V0KCJ4cGRfZSIsInMzemI1ZSIpOwpfLlN4LnNldCgieHBkX3IiLCJ4TnBRdGQiKTtfLlN4LnNldCgieHBkX3JtIiwiRXAyTWdjIik7Xy5TeC5zZXQoInhwZF9ydCIsIlU2VkNxZSIpO18uU3guc2V0KCJ4cGRfdCIsIllVTmx6ZiIpO18uU3guc2V0KCJ4cGwiLCJRSmZ4aWIiKTtfLlN4LnNldCgieWVzIiwiWVdXVUxkIik7Xy5TeC5zZXQoInllc192b3RlIiwiZHpSSUlmIik7Cn1jYXRjaChlKXtfLl9EdW1wRXhjZXB0aW9uKGUpfQp0cnl7CnZhciBZM2IsYzRiO1kzYj1mdW5jdGlvbihhKXtfLlgzYj1fLmxmKCk7Xy5aZyhkb2N1bWVudCwiemJXMkNmIixhKTtyZXR1cm4gbmV3IF8uU2coYj0+e3dpbmRvdy5hZGRFdmVudExpc3RlbmVyKCJtZXNzYWdlIixmdW5jdGlvbiBlKGQpe2QuZGF0YS50eXBlPT09ImRvc0Nvb2tpZSImJih3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcigibWVzc2FnZSIsZSksXy5aZyhkb2N1bWVudCwiT1ozTTdlIiksYihkZWNvZGVVUklDb21wb25lbnQoZC5kYXRhLmV4ZW1wdGlvbkNvb2tpZSkpKX0pfSl9O18uWjNiPWZ1bmN0aW9uKCl7dmFyIGE7KGE9Xy5YM2IpPT1udWxsfHxhLnJlc29sdmUoKTtfLlgzYj1udWxsfTsKXy4kM2I9ZnVuY3Rpb24oYSl7aWYoIWEuZGV0YWlscylyZXR1cm4hMTtpZihhLmRldGFpbHMuZSlyZXR1cm4gXy4kM2IoYS5kZXRhaWxzLmUpO3ZhciBiPWEuZGV0YWlscy5ydGV4dDtyZXR1cm4gYS5kZXRhaWxzLmlzciYmKDAsXy5VYSkoYikmJmIuaW5kZXhPZigiZG9zQ29va2llIik+PTB9O18uYTRiPWZ1bmN0aW9uKGEpe2lmKGEuZGV0YWlscy5lKXJldHVybiBfLmE0YihhLmRldGFpbHMuZSk7YT1hLmRldGFpbHMucnRleHQ7aWYoISgwLF8uVWEpKGEpfHxhLmluZGV4T2YoImV4ZW1wdGlvbkNvb2tpZToiKTwwKXJldHVybiIiO3ZhciBiPWEubWF0Y2goL2V4ZW1wdGlvbkNvb2tpZTonKFteJ10rKS8pO2lmKCFiKXRocm93IGI9RXJyb3IoIk5nIiksXy5DbWEoYix7cnRleHQ6YS5sZW5ndGg+MjAwP2Ake2Euc3Vic3RyaW5nKDAsMjAwKX0uLi5gOmF9KSxiO3JldHVybiBkZWNvZGVVUklDb21wb25lbnQoYlsxXSl9OwpfLmI0Yj1mdW5jdGlvbihhKXtpZihhLmRldGFpbHMpe2lmKGEuZGV0YWlscy5zPT09NDI5KXtsZXQgYj1hLmRldGFpbHMucnVybDtpZigoMCxfLlVhKShiKSYmYi5pbmRleE9mKCIvc29ycnkvaW5kZXg/Iik+LTEpcmV0dXJuIGJ9aWYoYS5kZXRhaWxzLmUpcmV0dXJuIF8uYjRiKGEuZGV0YWlscy5lKX19O18uZDRiPWZ1bmN0aW9uKGEsYil7YzRiKys7YzRiPT09MSYmXy5jdGEoImRvcyIsKCk9PmAke2M0Yn1gKTtfLmNoKCkuR2MoImRvcyIsYHNzcmMuJHtjNGJ9LHRhcmdldC4ke2J9YCkubG9nKCl9O18uZTRiPWZ1bmN0aW9uKGEsYil7Xy5jaCgpLkdjKCJkb3MiLGBzb2x2ZWQsdGFyZ2V0LiR7Yn1gKS5sb2coKX07YzRiPTA7Xy5YM2I9bnVsbDtfLmY0Yj1ZM2I7Xy5nNGI9ITE7Cn1jYXRjaChlKXtfLl9EdW1wRXhjZXB0aW9uKGUpfQp0cnl7Cl8uUjNiPV8ua2MoImx0czNSZSIsW10pOwp9Y2F0Y2goZSl7Xy5fRHVtcEV4Y2VwdGlvbihlKX0KdHJ5ewpfLkh3PWZ1bmN0aW9uKGEpe3JldHVybiBfLnQoYSwzMCl9O18uSXc9ZnVuY3Rpb24oYSl7cmV0dXJuIF8udChhLDYxKX07Xy5Kdz1mdW5jdGlvbihhKXtyZXR1cm4gXy50KGEsNyl9Owp9Y2F0Y2goZSl7Xy5fRHVtcEV4Y2VwdGlvbihlKX0KdHJ5ewp2YXIgUlliO18uUVliPWNsYXNzIGV4dGVuZHMgXy5se2NvbnN0cnVjdG9yKGEpe3N1cGVyKGEpfWdldE5hbWUoKXtyZXR1cm4gXy50KHRoaXMsMSl9RWUoYSl7cmV0dXJuIF8uZmgodGhpcywxLGEpfWRoKCl7cmV0dXJuIF8ucGgodGhpcywxKX19O1JZYj1fLmRjKGNsYXNzIGV4dGVuZHMgXy5se2NvbnN0cnVjdG9yKGEpe3N1cGVyKGEpfWFkZFJ1bGUoYSxiKXtyZXR1cm4gXy51aCh0aGlzLDEsXy5RWWIsYSxiKX19KTtfLlRZYj1jbGFzcyBleHRlbmRzIF8ubHtjb25zdHJ1Y3RvcihhKXtzdXBlcihhKX1jbGVhclZhbHVlKCl7cmV0dXJuIF8ud2oodGhpcyxfLlNZYil9fTtfLlNZYj1bMiwzLDQsNSw2XTtfLlVZYj1jbGFzcyBleHRlbmRzIF8ubHtjb25zdHJ1Y3RvcihhKXtzdXBlcihhKX19O18uVVliLnByb3RvdHlwZS5YYT0idHE3UHhiIjt2YXIgWFliO18uVlliPXt9O18uV1liPW51bGw7Xy5ZWWI9ZnVuY3Rpb24oYSl7Xy5MYShfLm1oKGEsXy5UWWIsMSxfLm9oKCkpLGZ1bmN0aW9uKGIpe18uZ2goYiwxKT09PSJwdG5ZR2QiPyhiPVJZYihfLllqKGIsMyxfLlNZYikpLFhZYihiKSk6Xy5WWWJbXy50KGIsMSldPWJ9KX07WFliPWZ1bmN0aW9uKGEpe2lmKF8uV1liKXt2YXIgYj1fLm1oKF8uV1liLF8uUVliLDEsXy5vaCgpKTtiPW5ldyBTZXQoYi5tYXAoYz0+Xy5naChjLDEpKSk7Zm9yKGxldCBjIG9mIF8ubWgoYSxfLlFZYiwxLF8ub2goKSkpYi5oYXMoXy5naChjLDEpKXx8Xy5XWWIuYWRkUnVsZShjKX1lbHNlIF8uV1liPWF9Owp9Y2F0Y2goZSl7Xy5fRHVtcEV4Y2VwdGlvbihlKX0KdHJ5ewp2YXIgQzViLEI1Yix6NWIsSTViLEo1YixONWIsTzViLFI1YixhNmIsWDViLGM2YixkNmIsZjZiLGc2YixoNmIsaTZiLGs2Yix2NWI7Xy51NWI9ZnVuY3Rpb24oYSl7aWYoYS5CbmEpe2EudXJsUGFyYW1zfHwoYS51cmxQYXJhbXM9bmV3IE1hcCk7bGV0IGIsYzsoYz1hLnVybFBhcmFtcyk9PW51bGx8fGMuc2V0KCJmY3EiLF8uUGEoKGI9YS5CbmEpPT1udWxsP3ZvaWQgMDpiLkZjKCksMikpfXJldHVybiBhfTtfLnc1Yj1mdW5jdGlvbigpe3Y1Ynx8KF8uczViP3Y1Yj1Qcm9taXNlLnJlc29sdmUoXy5yNWIuR2koKSk6KF8udDViPW5ldyBfLk1xLHY1Yj1fLnQ1Yi5wcm9taXNlKSk7cmV0dXJuIHY1Yn07Xy54NWI9ZnVuY3Rpb24oYSl7cmV0dXJuKGE9YT9nb29nbGUuaWEmJmdvb2dsZS5pYS5yW2FdOnZvaWQgMCkmJmEubT09PTA/YTp2b2lkIDB9OwpfLnk1Yj1mdW5jdGlvbihhLGIsYyl7dmFyIGQ9Xy55ZShhKSxlPV8uUGthKGEpO2M/YT1udWxsOihhPV8uZ2coYSwiZ3JhZnRUeXBlIiksYT1hPT09Im5vbmUiP251bGw6YXx8Imluc2VydCIpO2M9Yj9fLnllKGIpOnZvaWQgMDtiPWImJl8uUWthKGIpfHx2b2lkIDA7cmV0dXJue2xCYTpkLEZRYzplLEdLOmEsdHJpZ2dlclZlZDpjLE5SYzpifX07QzViPWFzeW5jIGZ1bmN0aW9uKGEsYixjLGQsZT1fLkRGYSl7dmFyIGY9KDAsXy5NZikoKSxnPWYoKTtmPWYoMSk7dHJ5e2lmKF8uJDNiKGEpKXtsZXQgaz1fLmE0YihhKTt6NWIoayxkKTtyZXR1cm4gYy5mZXRjaChkKX1sZXQgaD1fLmI0YihhKTtpZihoJiYoQTViKGgsYiksZSkpe2lmKCFfLlgzYilyZXR1cm4gQjViKGgsYixjLGQpO2lmKF8uZzRiKXJldHVybiBmKGF3YWl0IGcoXy5YM2IucHJvbWlzZSkpLGMuZmV0Y2goZCl9dGhyb3cgYTt9ZmluYWxseXtnKCl9fTsKQjViPWFzeW5jIGZ1bmN0aW9uKGEsYixjLGQpe3ZhciBlPSgwLF8uTWYpKCksZj1lKCk7ZT1lKDEpO3RyeXtsZXQgZz1lKGF3YWl0IGYoKDAsXy5mNGIpKGEpKSk7dHJ5e3JldHVybiBENWIoYSxiKSx6NWIoZyxkKSxlKGF3YWl0IGYoYy5mZXRjaChkKSkpfWZpbmFsbHl7ZSgpLF8uWjNiKCl9fWZpbmFsbHl7ZigpfX07ejViPWZ1bmN0aW9uKGEsYil7dmFyIGM9bmV3IE1hcChiLnVybFBhcmFtcyk7Yy5zZXQoImdvb2dsZV9hYnVzZSIsYSk7Yi51cmw9Xy5JNGIoYi5tZXRob2QsYi5ob3N0bmFtZSxiLnBhdGgsYyxiLld3KTtiLnVybFBhcmFtcz1jfTtfLkU1Yj1mdW5jdGlvbihhKXt2YXIgYj1fLmdnKGEsImFzeW5jUmNsYXNzIil8fCIiLGM9Xy5nZyhhLCJhc3luY1Rva2VuIiksZD1fLlF4KGEpLGU9Xy5qNGIoYSk7ZD1fLms0YihkLGUsYSk7YT1jfHxfLmdnKGEsImFzeW5jTWV0aG9kIik9PT0ic3RhdGVmdWwiPyJQT1NUIjoiR0VUIjtyZXR1cm57cGJhOmMsanQ6ZCxLZWE6YixncmE6YX19OwpfLkY1Yj1mdW5jdGlvbihhLGI9Z29vZ2xlLmNyKXt2YXIgYz1bXSxkPVtdO2Zvcih2YXIgZT0wO2U8YS5sZW5ndGg7ZSsrKWIuaGFzKGFbZV0ubW9kdWxlX2lkKXx8KGMucHVzaChhW2VdKSxkLnB1c2goYVtlXS5tb2R1bGVfaWQpKTtpZihkLmxlbmd0aCE9PTApe2E9W107Zm9yKGU9MDtlPGMubGVuZ3RoO2UrKyl7dmFyIGY9Y1tlXS5zdHlsZV9zaGVldC5wcml2YXRlX2RvX25vdF9hY2Nlc3Nfb3JfZWxzZV9zYWZlX3N0eWxlX3NoZWV0X3dyYXBwZWRfdmFsdWU7aWYoZj09PXZvaWQgMHx8Zj09PW51bGwpdGhyb3cgRXJyb3IoIlZnIik7Zj1fLmppYShmKTtmIT09bnVsbCYmYS5wdXNoKGYpfWE9Xy5uaWEoYSk7Yz1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJzdHlsZSIpO18uTmlhKGMsYSk7Yy5zZXRBdHRyaWJ1dGUoImRhdGEtbXNzLXN0eWxlcyIsZC5qb2luKCIsIikpO2E9ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImhlYWQiKVswXTtpZighYSl0aHJvdyBFcnJvcigiV2ciKTsKYS5hcHBlbmRDaGlsZChjKTtmb3IoYz0wO2M8ZC5sZW5ndGg7YysrKWIuYWRkKGRbY10pfX07Cl8uRzViPWZ1bmN0aW9uKGEse2Vycm9ySGFuZGxlcjpiLERmOmN9PXt9KXt2YXIgZD1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJzY3JpcHQiKTtmb3IodmFyIGUgaW4gYS5kYXRhc2V0KWEuZGF0YXNldC5oYXNPd25Qcm9wZXJ0eShlKSYmKGQuZGF0YXNldFtlXT1hLmRhdGFzZXRbZV0pO2U9YS5oYXNBdHRyaWJ1dGUoImRhdGEtc3BlY3VsYXRpb24tcnVsZXMiKT8ic3BlY3VsYXRpb25ydWxlcyI6YS50eXBlO3ZhciBmPWU9PT0ic3BlY3VsYXRpb25ydWxlcyJ8fGU9PT0iYXBwbGljYXRpb24vanNvbiI7Yz1jJiZhLnRleHQmJiFmJiZlIT09Im1vZHVsZSI/YHRyeXske2EudGV4dH19Y2F0Y2goZSl7Z29vZ2xlLm1sKGUsMCwke0pTT04uc3RyaW5naWZ5KGMpfSl9YDphLnRleHQ7Yz1fLkFpYShjKTtfLklqYShkLGMpO2EuaWQmJihkLmlkPWEuaWQpO2UmJihkLnR5cGU9ZSk7ZC5vbmVycm9yPWEub25lcnJvcjtmfHwoZC5hc3luYz1hLmFzeW5jLGQuZGVmZXI9YS5kZWZlcixkLmNyb3NzT3JpZ2luPQphLmNyb3NzT3JpZ2luLGQubm9Nb2R1bGU9YS5ub01vZHVsZSk7YiYmZC5hZGRFdmVudExpc3RlbmVyKCJlcnJvciIsYik7YS5zcmMmJl8uZGQoZCxfLnhjKGEuc3JjKSk7ZC5kYXRhc2V0LmFzeW5jRXhlY3V0ZWQ9InRydWUiO2EucmVwbGFjZVdpdGgoZCk7cmV0dXJuIGR9O0k1Yj1hc3luYyBmdW5jdGlvbihhLGIsYyx7eWc6ZCxQSmE6ZSxJZWE6Zix2QWE6Zz0hMSxhemE6aCxsTGE6az17fSxzb3VyY2U6bSx6YzpufT17fSl7dmFyIHA9KDAsXy5NZikoKSxyPXAoKTtwPXAoMSk7dHJ5e3AoYXdhaXQgcigobmV3IEg1YihhLGMse3lnOmQsUEphOmUsSWVhOmYsdkFhOmcsYXphOmgsbExhOmssc291cmNlOm0semM6bn0pKS5hcHBseShiKSkpfWZpbmFsbHl7cigpfX07Cko1Yj1mdW5jdGlvbihhLGIpe2E9YHRyeXske2F9fWNhdGNoKGUpe2dvb2dsZS5kbChlLDAsJHtKU09OLnN0cmluZ2lmeSh7YXN5bmNFcnI6InNjcmlwdCJ9KX0pO31gO2E9Xy5ydGEoYSk7dmFyIGM9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic2NyaXB0Iik7Xy5JamEoYyxhKTtnb29nbGUuYXNjPWI7ZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChjKTtnb29nbGUuYXNjPXZvaWQgMH07Xy5MNWI9ZnVuY3Rpb24oYSxiKXt2YXIgYz1fLiQ0YihhLF8uSzViLCgpPT57Xy5WZShFcnJvcigiZmhgIithLnN1YnN0cmluZygwLDEwMCkpLHtEZjp7bDphLmxlbmd0aC50b1N0cmluZygpLHQ6Yn19KX0pO18uZWEuV19qZHx8KF8uZWEuV19qZD17fSk7Zm9yKGxldCBkIG9mIF8ubWgoYyxfLlg0YiwxLF8ub2goKSkpXy5lYS5XX2pkW2QuZ2V0SWQoKV09SlNPTi5wYXJzZShkLm9hKCkpO18ua2ooYyxfLlVZYiwzKSYmXy5ZWWIoXy5xKGMsXy5VWWIsMykpfTsKTjViPWZ1bmN0aW9uKGEsYil7aWYoIU01Yi50ZXN0KGEpKXRocm93IGI9RXJyb3IoImdoYCIrYiksYi5kZXRhaWxzPXtpZDphfSxiO307Xy5VeD1mdW5jdGlvbihhLGI9e30sYyl7Yj1fLnU1YihiKTtyZXR1cm4gXy5EZyhPNWIobmV3IF8uUDViKGEpLF8uRTViKGEpLF8uUXgoYSksXy5qNGIoYSksYixjKSl9O18uUTViPWZ1bmN0aW9uKGEsYj17fSl7dmFyIGM9bmV3IF8uUDViKGEpO3JldHVybiFfLnhtKGMuZWxlbWVudCwieXAiKXx8Xy54bShjLmVsZW1lbnQsInlsIik/Xy5EZyghMSk6Xy5EZyhPNWIoYyxfLkU1YihhKSxfLlF4KGEpLF8uajRiKGEpLGIpKX07Xy5TNWI9ZnVuY3Rpb24oYSxiPXt9KXt2YXIgYz1uZXcgXy5QNWIoYSk7YT1SNWIoYyxfLkU1YihhKSxfLlF4KGEpLF8uajRiKGEpLGIsITAsbnVsbCk7cmV0dXJuIF8uRGcoYS50aGVuKCgpPT57fSkpfTsKXy5UNWI9YXN5bmMgZnVuY3Rpb24oYSxiPXt9KXt2YXIgYz0oMCxfLk1mKSgpLGQ9YygpO2M9YygxKTt0cnl7bGV0IGU9bmV3IF8uUDViKGEpLGY9Xy5FNWIoYSksZz1fLlF4KGEpLGg9Xy5qNGIoYSksaz1jKGF3YWl0IGQoUjViKGUsZixnLGgsYiwhMSxudWxsKSkpO3JldHVybntyZW5kZXI6KCk9Pk81YihlLGYsZyxoLGIsdm9pZCAwLGspfX1maW5hbGx5e2QoKX19OwpPNWI9YXN5bmMgZnVuY3Rpb24oYSxiLGMsZCxlLGYsZyl7dmFyIGg9KDAsXy5NZikoKSxrPWgoKTtoPWgoMSk7dHJ5e2xldCBuPWEuc3RhcnRVcGRhdGUoKSxwPW5ldyBfLlJvKCJhc3luYyIsImNzaSIsdm9pZCAwLHtId2I6ITF9KSxyPW5ldyBfLlU1YihwLGUudW1hLGEpO3Auc3RhcnQoKTtwLkdjKCJhc3R5cCIsYS5qdCk7bGV0IHg9cC5rYS5oZix6LEIsSCxKLE49KHo9Z29vZ2xlKT09bnVsbD92b2lkIDA6KEI9ei50aW1lcnMpPT1udWxsP3ZvaWQgMDooSD1CLmFzeW5jKT09bnVsbD92b2lkIDA6KEo9SC50KT09bnVsbD92b2lkIDA6Si5hdGl0O3gmJk4mJnAuWnMoInRjZHQiLHgtTik7Xy5CbShhLmVsZW1lbnQsVjViKTtfLnltKGEuZWxlbWVudCwieWwiKTtfLlR4KGEuZWxlbWVudCxXNWIueWwpO3RyeXtnfHwoZz1oKGF3YWl0IGsoUjViKGEsYixjLGQsZSwhMSxwKSkpKTtpZihnLmhlYWRlcil7bGV0IFE9Xy50KGcuaGVhZGVyLDIpO1EmJlEhPT1TdHJpbmcoXy5oNGIpJiZfLmk0Yi5zZXQoUSwKKF8uaTRiLmdldChRKXx8MCkrMSl9aWYoaChhd2FpdCBrKFg1YihlLm9uUmVhZHkpKSkpcmV0dXJuIGEuc2V0U3RhdGUoInlwIiksITE7aChhd2FpdCBrKEk1YihuLGcsYSx7eWc6cCxQSmE6ZS5zcWEsSWVhOnIsdkFhOmUudU8sYXphOmUuYXphLGxMYTplLmxMYSxzb3VyY2U6Zix6YzplLnRyaWdnZXJ9KSkpO2lmKG4hPT1hLmVsZW1lbnQuX195dXApcmV0dXJuITE7YS5zZXRTdGF0ZSgieWYiKTtfLlk1YihyLGEuZWxlbWVudCk7cmV0dXJuITB9Y2F0Y2goUSl7aCgpO2I9cDt2YXIgbT1lLnVtYTtfLlFvKGIsImZ0Iik7bSYmbShiKTtiLmxvZygpO2lmKG4hPT1hLmVsZW1lbnQuX195dXApcmV0dXJuITE7Xy5CbShhLmVsZW1lbnQsVjViKTtfLnltKGEuZWxlbWVudCwieWUiKTtfLlR4KGEuZWxlbWVudCxXNWIueWUpO3Rocm93IFE7fX1maW5hbGx5e2soKX19OwpSNWI9YXN5bmMgZnVuY3Rpb24oYSxiLGMsZCxlLGYsZyl7dmFyIGg9KDAsXy5NZikoKSxrPWgoKTtoPWgoMSk7dHJ5e2xldCBtPVo1Yj9oKGF3YWl0IGsoXy53NWIoKSkpOl8ucjViLkdpKCksbj1tLlRLYS5idWlsZChiLGMsZCxfLnk1YihhLmVsZW1lbnQsZS50cmlnZ2VyLGUudXpkKSxlLGEuZWxlbWVudC5pZCxmKTtnJiYobi55Zz1nKTtsZXQgcD1tLk9vO3JldHVybiBwLmZldGNoKG4pLmNhdGNoKGFzeW5jIHI9PkM1YihyLGEuZWxlbWVudC5pZCxwLG4sJDViKSl9ZmluYWxseXtrKCl9fTthNmI9ZnVuY3Rpb24oYSl7cmV0dXJuIGI9Pnt2YXIgYz1fLmI0YihiKTtjJiZfLmQ0YihjLGEpO3Rocm93IGI7fX07WDViPWFzeW5jIGZ1bmN0aW9uKGEpe3ZhciBiPSgwLF8uTWYpKCksYz1iKCk7Yj1iKDEpO3RyeXtpZihhKXtsZXQgZD1iKGF3YWl0IGMoYS5jYWxsKG51bGwpKSk7cmV0dXJuIGQhPT12b2lkIDAmJiFkfXJldHVybiExfWZpbmFsbHl7YygpfX07Xy5iNmI9ZnVuY3Rpb24oYSl7KG5ldyBfLlA1YihhKSkucmVzZXQoKX07CmM2Yj1hc3luYyBmdW5jdGlvbigpe3ZhciBhPSgwLF8uTWYpKCksYj1hKCk7YT1hKDEpO3RyeXtsZXQgYz13aW5kb3cuZ29vZ2xlLmlhLnBmLGQ9YShhd2FpdCBiKF8udzViKCkpKS5xQWM7Zm9yKGxldCBlIG9mIGMpZC51SGEoZSkuY2F0Y2goYTZiKGUuaWQpKTt3aW5kb3cuZ29vZ2xlLmlhLnBmPXtwdXNoOmU9PntkLnVIYShlKS5jYXRjaChhNmIoZS5pZCkpfX19ZmluYWxseXtiKCl9fTtkNmI9ZnVuY3Rpb24oYSl7YSYmYS5tZCYmXy5MNWIoYS5tZCxhLmFzdHlwKTtpZihhJiZhLmNiKXtsZXQgYj0hMSxjPSgpPT57Ynx8KGI9ITAsYS5jYigpKX07KDAsXy5qbykoYyw0MDApOygwLF8uam8pKCgpPT57Z29vZ2xlLmNhZnQoYyl9LDUwKX19OwpmNmI9ZnVuY3Rpb24oKXtpZihBcnJheS5pc0FycmF5KGdvb2dsZS5pYS5kcSkpe2ZvcihsZXQgYSBvZiBnb29nbGUuaWEuZHEpdHJ5e2Q2YihhKX1jYXRjaChiKXtsZXQgYz0hIWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoIltqc25hbWU9Wkx4c3FmXSIpO18uVmUoRXJyb3IoImhoYCIrYi5tZXNzYWdlKSx7bGV2ZWw6Yz8wOjIsRGY6e21hOlN0cmluZyhjKX19KX1nb29nbGUuaWEuZHE9e3B1c2g6ZDZifX1BcnJheS5pc0FycmF5KGdvb2dsZS5pYS5wZikmJihlNmI9YzZiKCkpfTtnNmI9e0djZDoibWFkIixIY2Q6Im1kZyIsSmNkOiJtZmMiLEtjZDoibWZsIixOY2Q6Im1zcSIsT2NkOiJtdWwiLEljZDoiZGZhIixNY2Q6Im1zYyIsZm9kOiJzaHJiIixnb2Q6InNocnAiLGhvZDoic2hydCIsU1ZjOiJhaW1jIixPVmM6ImFpbWZsIixQVmM6ImFpbWZwIixNVmM6ImFpbWJhIixRVmM6ImFpbW0iLENrZDoic2J4YyIsV3ZkOiJ3Z3AiLFV2ZDoid2dmYyIsWHZkOiJ3Z3JnIixWdmQ6IndnZnIifTsKaDZiPWZ1bmN0aW9uKGEsYil7YS5BYT0hMDtfLlFvKGEueWcsImFhZnQiKTtpZihhLnRhcmdldCl7dmFyIGM9YS50YXJnZXQuZWxlbWVudC5xdWVyeVNlbGVjdG9yQWxsKCJbZGF0YS1zdWJ0cmVlXSIpO2ZvcihsZXQgZCBvZiBjKXtpZighKGQgaW5zdGFuY2VvZiBIVE1MRWxlbWVudCkpY29udGludWU7aWYoYz1kLmRhdGFzZXQuc3VidHJlZSlmb3IobGV0IGUgb2YgYy5zcGxpdCgiLCIpKWUmJihPYmplY3QudmFsdWVzKGc2YikuaW5jbHVkZXMoZSksZC5jb250YWlucyhiKXx8Yi5jb250YWlucyhkKSkmJihfLlFvKGEueWcsInNhZnQiLGUpLF8uUW8oYS55Zywic2FydCIsZSkpfX19OwpfLmo2Yj1mdW5jdGlvbihhLGIpe18ucDViKGIsITEsbnVsbCx3aW5kb3cucGFnZVhPZmZzZXQsd2luZG93LnBhZ2VZT2Zmc2V0KSYxJiZoNmIoYSxiKTtiPWIuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImltZyIpO2ZvcihsZXQgZCBvZiBiKXsrK2Eud2E7dmFyIGM9dHlwZW9mIGQuc3JjIT09InN0cmluZyJ8fCFkLnNyYztiPSEhZC5nZXRBdHRyaWJ1dGUoImRhdGEtYnNyYyIpO2M9KGN8fGQuY29tcGxldGUpJiYhZC5nZXRBdHRyaWJ1dGUoImRhdGEtZGVmZXJyZWQiKSYmIWI7ZC5yZW1vdmVBdHRyaWJ1dGUoImRhdGEtZGVmZXJyZWQiKTtsZXQgZT1kLmhhc0F0dHJpYnV0ZSgiZGF0YS1ub2FmdCIpLGY9ISEoXy5wNWIoZCxiLG51bGwsd2luZG93LnBhZ2VYT2Zmc2V0LHdpbmRvdy5wYWdlWU9mZnNldCkmMSk7IWUmJmYmJisrYS5CYTtpZihjfHxlKSsrYS5rYTtlbHNle2xldCB7cmVzb2x2ZTpnLHByb21pc2U6aH09Xy5sZigpLGs9Xy5oZShkLCJsb2FkIixnKSxtPV8uaGUoZCwiZXJyb3IiLApnKTtoLnRoZW4obj0+e18uQW4oayk7Xy5BbihtKTtuPW4udGFyZ2V0OysrYS5rYTtmJiZoNmIoYSxuKTthLm9hJiZpNmIoYSl9KX19fTtpNmI9YXN5bmMgZnVuY3Rpb24oYSl7dmFyIGI9KDAsXy5NZikoKSxjPWIoKTtiPWIoMSk7dHJ5e2lmKGEua2E9PT1hLndhKXthLnlnLkdjKCJpbWEiLFN0cmluZyhhLkJhKSk7YS55Zy5HYygiaW1uIixTdHJpbmcoYS5rYSkpO2ZvcihsZXQgZCBvZiBPYmplY3Qua2V5cyhfLnE1YikpYS55Zy5HYyhkLF8ucTViW2RdKCkpO18uUW8oYS55ZywiYXJ0Iik7YS51bWEmJmIoYXdhaXQgYyhhLnVtYShhLnlnKSkpO01hdGgucmFuZG9tKCk8LjA1JiZhLnlnLmxvZygpfX1maW5hbGx5e2MoKX19O18uWTViPWZ1bmN0aW9uKGEsYil7YS5vYT0hMDthLkFhfHxoNmIoYSxiKTtfLlFvKGEueWcsImFjcnQiKTtpNmIoYSl9OwprNmI9ZnVuY3Rpb24oYSxiKXtpZihhLnRhcmdldCl7dmFyIGM9YS50YXJnZXQuZWxlbWVudC5xdWVyeVNlbGVjdG9yQWxsKCJbZGF0YS1zdWJ0cmVlXSIpO2ZvcihsZXQgZCBvZiBjKXtpZighKGQgaW5zdGFuY2VvZiBIVE1MRWxlbWVudCkpY29udGludWU7aWYoYz1kLmRhdGFzZXQuc3VidHJlZSlmb3IobGV0IGUgb2YgYy5zcGxpdCgiLCIpKWlmKGUpaWYoT2JqZWN0LnZhbHVlcyhnNmIpLmluY2x1ZGVzKGUpLGIuY29udGFpbnMoZCkpe2M9YS55ZztsZXQgZj1fLnY0YihjLCJzaXJ0IixlKTtmfHxmPT09MHx8Yy5acygic2lydCIsXy5SdWEoYy5rYS5lbGFwc2VkVGltZSgpKSxlKTtfLlFvKGEueWcsInNhcnQiLGUpO18uUW8oYS55Zywic2NydCIsZSl9ZWxzZSBkLmNvbnRhaW5zKGIpJiYoXy5RbyhhLnlnLCJzYXJ0IixlKSxfLlFvKGEueWcsInNjcnQiLGUpKX19fTsKXy5VNWI9Y2xhc3N7Y29uc3RydWN0b3IoYSxiLGMpe3RoaXMueWc9YTt0aGlzLnVtYT1iO3RoaXMudGFyZ2V0PWM7dGhpcy5rYT10aGlzLndhPXRoaXMuQmE9MDt0aGlzLkFhPXRoaXMub2E9ITF9fTt2YXIgQTViPV8uZDRiLEQ1Yj1fLmU0Yjt2YXIgbDZiLG02YixWNWIsVzViO2w2Yj0wOwpfLlA1Yj1jbGFzc3tjb25zdHJ1Y3RvcihhKXt0aGlzLmVsZW1lbnQ9YTt0aGlzLnoxPV8uUXgoYSk7dGhpcy5rYT1fLmo0YihhKTt0aGlzLmp0PV8uazRiKHRoaXMuejEsdGhpcy5rYSxhKTt0aGlzLktlYT1fLmdnKGEsImFzeW5jUmNsYXNzIil8fCIiO3RoaXMubWV0aG9kPSh0aGlzLnBiYT1fLmdnKGEsImFzeW5jVG9rZW4iKSl8fF8uZ2coYSwiYXN5bmNNZXRob2QiKT09PSJzdGF0ZWZ1bCI/IlBPU1QiOiJHRVQifXN0YXJ0VXBkYXRlKCl7bDZiKys7cmV0dXJuIHRoaXMuZWxlbWVudC5fX3l1cD1sNmJ9cmVzZXQoKXt0aGlzLmVsZW1lbnQudGV4dENvbnRlbnQ9IiI7dGhpcy5lbGVtZW50LnJlbW92ZUF0dHJpYnV0ZSgiZWlkIik7dGhpcy5zZXRTdGF0ZSgieXAiKTtkZWxldGUgdGhpcy5lbGVtZW50Ll9feXVwO18ueWkoKX1zZXRTdGF0ZShhKXtfLkJtKHRoaXMuZWxlbWVudCxtNmIpO18uQm0odGhpcy5lbGVtZW50LFY1Yik7Xy55bSh0aGlzLmVsZW1lbnQsYSk7Xy5UeCh0aGlzLmVsZW1lbnQsClc1YlthXSl9fTttNmI9WyJ5cCIsInlmIiwieWkiXTtWNWI9WyJ5bCIsInllIl07VzViPXt5cDoicG9iNHFjIix5Zjoid1VWS0VmIix5bDoic1c3N0pmIix5ZToieEJhUzJjIn07Xy5LNWI9Y2xhc3MgZXh0ZW5kcyBfLmx7Y29uc3RydWN0b3IoYSl7c3VwZXIoYSl9fTt2YXIgTTViPS9eW1x3LS46XSokLyxwNmI9YXN5bmMgZnVuY3Rpb24oYSl7dmFyIGI9KDAsXy5NZikoKSxjPWIoKTtiPWIoMSk7dHJ5e2xldCBkPWEud2Euc2hpZnQoKTtpZihkKXtsZXQgZT1iKGF3YWl0IGMobjZiKGEpKSk7Yihhd2FpdCBjKFByb21pc2UuYWxsKGEud2EubWFwKGY9Pm5ldyBQcm9taXNlKChnLGgpPT57ZS5rYShmKS50aGVuKGs9PntpZihrKXt2YXIgbT1mLmdldElkKCk7Xy5UM2Iuc2V0KG0sayk7ZygpfWVsc2UgaCgpfSl9KSkpKSk7Yihhd2FpdCBjKG82YihhLGQpKSl9fWZpbmFsbHl7YygpfX0scjZiPWZ1bmN0aW9uKGEsYil7c3dpdGNoKF8uaWsoYi5tZXRhZGF0YSwxKSl7Y2FzZSAxOmJyZWFrO2Nhc2UgMjp2YXIgYz1hLkphKF8udChiLm1ldGFkYXRhLDIpLF8uRm0pO18uZWQoYyxfLnNoKGIuYm9keSkpO2xldCBkPVtdO2ZvcihsZXQgZiBvZiBjLnF1ZXJ5U2VsZWN0b3JBbGwoInNjcmlwdCIpKXtsZXQgZz1mLmdldEF0dHJpYnV0ZSgidHlwZSIpO2cmJmchPT0KInRleHQvamF2YXNjcmlwdCJ8fChmLnNyYz9fLkc1YihmKTphLnZBYSYmZC5wdXNoKGYpKX1hLkllYSYmazZiKGEuSWVhLGMpO2ZvcihsZXQgZiBvZiBkKV8uRzViKGYpO2JyZWFrO2Nhc2UgNjpjPWEuSmEoXy50KGIubWV0YWRhdGEsMiksZj0+YS50YXJnZXQuZWxlbWVudC5xdWVyeVNlbGVjdG9yKGBbZGF0YS1hc3luYy1waD0iJHtmfSJdYCkpO3E2YihhLF8uc2goYi5ib2R5KSxjLGEuSWVhKTticmVhaztjYXNlIDM6Yz1fLnQoYi5tZXRhZGF0YSwyKTtONWIoYyxhLnRhcmdldC5qdCk7bGV0IGU9Xy5GbShjKXx8YS50YXJnZXQuZWxlbWVudC5xdWVyeVNlbGVjdG9yKGBpbWdbZGF0YS1paWQ9IiR7Y30iXWApO2lmKCFlKXtfLlZlKEVycm9yKCJjaGAiK2MpLHtEZjp7aWQ6YyxhdDphLnRhcmdldC5qdH19KTticmVha31pZighZSl7aWYoYS50YXJnZXQuanQ9PT0iZm9sc3JjaCImJiFhLkFhLmluY2x1ZGVzKGIpKXthLkFhLnB1c2goYik7YnJlYWt9Xy5WZShFcnJvcigiZGgiKSx7RGY6e2lkOmMsCmF0OmEudGFyZ2V0Lmp0fX0pO2JyZWFrfWUuS3hjP3JlcXVlc3RBbmltYXRpb25GcmFtZSgoKT0+e18ubDViKGUsYi5ib2R5KX0pOihfLmw1YihlLGIuYm9keSksZS5LeGM9ITApO2JyZWFrO2Nhc2UgNDpKNWIoYi5ib2R5LGEubExhKTticmVhaztjYXNlIDc6Yz1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJzdHlsZSIpO2MuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoYi5ib2R5KSk7YS50YXJnZXQuZWxlbWVudC5hcHBlbmRDaGlsZChjKTticmVhaztjYXNlIDU6Xy5MNWIoYi5ib2R5LGEudGFyZ2V0Lmp0KTticmVhaztjYXNlIDEzOmM9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7Xy5lZChjLF8uc2goYi5ib2R5KSk7YS50YXJnZXQuZWxlbWVudC5hcHBlbmRDaGlsZChjKTticmVhaztjYXNlIDg6Yz1KU09OLnBhcnNlKGIuYm9keSk7Z29vZ2xlLnhzcmY9T2JqZWN0LmFzc2lnbihnb29nbGUueHNyZnx8e30sYyk7YnJlYWs7Y2FzZSA5OmEuUEphJiZhLlBKYS5jYWxsKG51bGwsCmIuYm9keSk7YnJlYWs7ZGVmYXVsdDpfLlZlKEVycm9yKCJlaGAiK18uaWsoYi5tZXRhZGF0YSwxKSkpLF8uaWsoYi5tZXRhZGF0YSwxKX19LHM2Yj1mdW5jdGlvbihhKXtyZXR1cm4gXy4kNGIoYSxfLlo0YiwoKT0+e18uVmUoRXJyb3IoImFoIikse2xldmVsOjAsRGY6e3A6YCR7YS5zdWJzdHJpbmcoMCwxMDApfWAsdDoicmVuZGVyX25vZGUifX0pfSl9LHU2Yj1mdW5jdGlvbihhKXt2YXIgYj1hLnRhcmdldC5lbGVtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoIltkYXRhLWFzeW5jLXBoXSIpO2ZvcihsZXQgYyBvZiBiKXtiPV8uZ2coYywiYXN5bmNQaCIpO2xldCBkPWEuQmEuZ2V0KGIpO2R8fChkPW5ldyB0NmIsYS5CYS5zZXQoYixkKSk7ZC5yZXNvbHZlKGMpfX0sbjZiPWFzeW5jIGZ1bmN0aW9uKGEpe3ZhciBiPSgwLF8uTWYpKCksYz1iKCk7Yj1iKDEpO3RyeXtyZXR1cm4gYihhd2FpdCBjKF8uQ2goYS5zb3VyY2Use3NlcnZpY2U6e3JlbmRlcmVyOl8uUjNifX0pKSkuc2VydmljZS5yZW5kZXJlcn1maW5hbGx5e2MoKX19LApvNmI9YXN5bmMgZnVuY3Rpb24oYSxiKXt2YXIgYz0oMCxfLk1mKSgpLGQ9YygpO2M9YygxKTt0cnl7dHJ5e2xldCBlPWMoYXdhaXQgZChhLkdjYihiKSkpLGY9U3RyaW5nKF8ucWMoZSkpO3Y2YihhLGUsZi5sZW5ndGgpfWNhdGNoKGUpe2MoKSxfLlZlKGUse2xldmVsOjAsRGY6e3A6YCR7Yi5GYygpLnN1YnN0cmluZygwLDEwMCl9YCx0OiJyZW5kZXJfbm9kZSJ9fSl9dTZiKGEpfWZpbmFsbHl7ZCgpfX0sdjZiPWZ1bmN0aW9uKGEsYixjKXthLnlnJiYoYS55Zy5HYygiZWkiLGEuZWkpLF8uUW8oYS55Zywic3QiKSxhLnlnLlpzKCJicyIsYykpO18uZWQoYS50YXJnZXQuZWxlbWVudCxiKTtmb3IobGV0IGQgb2YgYS50YXJnZXQuZWxlbWVudC5xdWVyeVNlbGVjdG9yQWxsKCJzY3JpcHQiKSkoYj1kLmdldEF0dHJpYnV0ZSgidHlwZSIpKSYmYiE9PSJ0ZXh0L2phdmFzY3JpcHQifHwoZC5zcmN8fGEudkFhKSYmXy5HNWIoZCk7YS50YXJnZXQuZWxlbWVudC5zZXRBdHRyaWJ1dGUoImVpZCIsCmEuZWkpO18uRkZhJiZfLmE1YihhLnRhcmdldC5lbGVtZW50LCJlaWQtIithLmVpKTthLkllYSYmKGs2YihhLkllYSxhLnRhcmdldC5lbGVtZW50KSxfLmo2YihhLkllYSxhLnRhcmdldC5lbGVtZW50KSl9LHE2Yj1mdW5jdGlvbihhLGIsYyxkKXt2YXIgZT1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTtfLmVkKGUsYik7Zm9yKHZhciBmPWRvY3VtZW50LmNyZWF0ZURvY3VtZW50RnJhZ21lbnQoKTtlLmZpcnN0Q2hpbGQ7KWYuYXBwZW5kQ2hpbGQoZS5maXJzdENoaWxkKTthLmF6YSYmKGY9YS5hemEoZixjKSk7ZT1kP0FycmF5LmZyb20oZi5jaGlsZHJlbik6dm9pZCAwO3ZhciBnPWYucXVlcnlTZWxlY3RvckFsbCgic2NyaXB0Iik7Yj1jLnBhcmVudEVsZW1lbnQ7Yi5yZXBsYWNlQ2hpbGQoZixjKTtjPVtdO2ZvcihsZXQgaCBvZiBnKShmPWguZ2V0QXR0cmlidXRlKCJ0eXBlIikpJiZmIT09InRleHQvamF2YXNjcmlwdCJ8fChoLnNyYz9fLkc1YihoKTphLnZBYSYmYy5wdXNoKGgpKTsKZm9yKGxldCBoIG9mIGMpXy5HNWIoaCk7aWYoZCl7azZiKGQsYik7Zm9yKGxldCBoIG9mIGUpXy5qNmIoZCxoKX19LEg1Yj1jbGFzc3tjb25zdHJ1Y3RvcihhLGIse3lnOmMsUEphOmQsSWVhOmUsdkFhOmY9ITEsYXphOmcsbExhOmg9e30sc291cmNlOmssemM6bX09e30pe3RoaXMuRWE9YTt0aGlzLnRhcmdldD1iO3RoaXMub2E9W107dGhpcy5CYT1uZXcgTWFwO3RoaXMud2E9W107dGhpcy5rYT0hMTt0aGlzLmVpPSIiO3RoaXMuQWE9W107dGhpcy55Zz1jO3RoaXMuUEphPWQ7dGhpcy5JZWE9ZTt0aGlzLnZBYT1mO3RoaXMuYXphPWc7dGhpcy5sTGE9aDt0aGlzLnNvdXJjZT1rO3RoaXMuemM9bX1hc3luYyBhcHBseShhKXt2YXIgYj0oMCxfLk1mKSgpLGM9YigpO2I9YigxKTt0cnl7dGhpcy5laT1fLnQoYS5oZWFkZXIsMSl8fCIiO3RyeXtiKGF3YWl0IGMoYS5yZXNvdXJjZXMuZm9yRWFjaChkPT57dGhpcy5vYS5wdXNoKGQpO2dvb2dsZS5qc2xtPTk7Z29vZ2xlLmpzbGE9dGhpcy50YXJnZXQuanQ7CmlmKHRoaXMuaXNBY3RpdmUoKSl7Zm9yKDt0aGlzLm9hLmxlbmd0aDspe2Q9dGhpcy5vYS5zaGlmdCgpO2xldCBlPWQubWV0YWRhdGEuZ2V0VHlwZSgpO2lmKGU9PT0xMSlkPXM2YihkLmJvZHkpLHRoaXMud2EucHVzaChkKSx0aGlzLmthPXRoaXMua2F8fCFkLllnKCk7ZWxzZSBpZihlIT09Mnx8Xy5waChkLm1ldGFkYXRhLDIpKWlmKGU9PT0xMil0cnl7bGV0IGY9SlNPTi5wYXJzZShkLmJvZHkpO18uRjViKGYuY3NzX21vZHVsZXMsXy5qc2EoKSl9Y2F0Y2goZil7Xy5WZShFcnJvcigiJGciKSx7bGV2ZWw6MCxEZjp7bDpgJHtkLmJvZHkubGVuZ3RofWB9fSl9ZWxzZXtpZighdGhpcy5rYSYmZSE9PTQpdGhyb3cgRXJyb3IoIllnYCIrdGhpcy50YXJnZXQuanQpO3I2Yih0aGlzLGQpfWVsc2V7aWYodGhpcy5rYSl0aHJvdyBFcnJvcigiWmdgIit0aGlzLnRhcmdldC5qdCk7djZiKHRoaXMsXy5zaChkLmJvZHkpLGQuYm9keS5sZW5ndGgpO3RoaXMua2E9ITB9fXU2Yih0aGlzKX1nb29nbGUuanNsbT0KMTA7Z29vZ2xlLmpzbGE9dm9pZCAwfSkpKX1maW5hbGx5e2IoKTtiKGF3YWl0IGMocDZiKHRoaXMpKSk7Zm9yKGxldCBkIG9mIHRoaXMuQWEpcjZiKHRoaXMsZCl9aWYoIXRoaXMua2EmJnRoaXMuaXNBY3RpdmUoKSl0aHJvdyBFcnJvcigiWGciKTtfLnlpKCl9ZmluYWxseXtjKCl9fWlzQWN0aXZlKCl7cmV0dXJuIHRoaXMuRWE9PT10aGlzLnRhcmdldC5lbGVtZW50Ll9feXVwfWFzeW5jIEdjYihhKXt2YXIgYj0oMCxfLk1mKSgpLGM9YigpO2I9YigxKTt0cnl7dmFyIGQ9Yihhd2FpdCBjKG42Yih0aGlzKSkpLGU9ZC5HY2I7e2xldCB7bEJhOmcsdHJpZ2dlclZlZDpofT1fLnk1Yih0aGlzLnRhcmdldC5lbGVtZW50LHRoaXMuemMpO3ZhciBmPWc/e1RCZDpnLE1lOmg/e3ZlZDpofTp2b2lkIDB9OnZvaWQgMH1yZXR1cm4gYihhd2FpdCBjKGUuY2FsbChkLGEsZikpKX1maW5hbGx5e2MoKX19SmEoYSxiKXthPWF8fCIiO041YihhLHRoaXMudGFyZ2V0Lmp0KTtiPWIoYSk7aWYoIWIpdGhyb3cgYj0KRXJyb3IoImJoYCIrdGhpcy50YXJnZXQuanQpLGIuZGV0YWlscz17aWQ6YX0sYjtyZXR1cm4gYn19LHQ2Yj1jbGFzc3tjb25zdHJ1Y3Rvcigpe3ZhciBhO3RoaXMucHJvbWlzZT1uZXcgUHJvbWlzZShiPT57YT1ifSk7dGhpcy5yZXNvbHZlPWF9fTt2YXIgZTZiLHc2Yix4NmIsJDViLFo1YjsoKHc2Yj1nb29nbGUpPT1udWxsPzA6dzZiLmlhKT9mNmIoKTpnb29nbGUmJihnb29nbGUuaWF4PWY2Yik7Xy55NmI9KHg2Yj1lNmIpIT1udWxsP3g2YjpQcm9taXNlLnJlc29sdmUoKTskNWI9Xy5ERmE7WjViPV8uR0ZhOwp9Y2F0Y2goZSl7Xy5fRHVtcEV4Y2VwdGlvbihlKX0KdHJ5ewpfLnUoIm1zNG1aYiIpOwp2YXIgZWFjPSEhKF8uT2lbNTFdPj4yMSYxKSxmYWM9Y2xhc3MgZXh0ZW5kcyBfLmhze2NvbnN0cnVjdG9yKGEpe3N1cGVyKCk7dGhpcy5zcmE9YS5zZXJ2aWNlLnNyYTthPWEuc2VydmljZS5TYjt0aGlzLmthPW5ldyBfLmNhYzt0aGlzLm9hPWEuWGUoKX1hc3luYyBOZCgpe3ZhciBhPSgwLF8uTWYpKCksYj1hKCk7YT1hKDEpO3RyeXt0cnl7Xy5teSh0aGlzLmthLCJocGJhcyIpO2xldCBjPV8ubmkodGhpcy5nZXREYXRhKCJ0b2MiKSwhMSksZD1fLm5pKHRoaXMuZ2V0RGF0YSgiaXNpbWdocCIpLCExKSxlPV8ubmkodGhpcy5nZXREYXRhKCJpc3R3ZWVkIiksITEpLGY9Xy5wbSh0aGlzLmdldERhdGEoImVuZHBvaW50IiksU3RyaW5nKE51bWJlcigxKSkpLGc9Xy5uaSh0aGlzLmdldERhdGEoImVvYWlwIiksITEpLGg9Xy5XbihfLk9oKHRoaXMub2EpLCJzdGljayIpfHwiIixrPW5ldyBNYXA7ay5zZXQoInNwX2ltZ2hwIixkLnRvU3RyaW5nKCkpO2suc2V0KCJzcF9ocHRlIixlPzE6MCk7CmVhYyYmZG9jdW1lbnQucmVmZXJyZXImJmsuc2V0KCJzcF9ocmgiLGRvY3VtZW50LnJlZmVycmVyKTtrLnNldCgiZWkiLF8udm09PW51bGw/dm9pZCAwOl8udm0uaXgoKSk7ay5zZXQoInNwX2hwZXAiLGYpO2suc2V0KCJzdGljayIsaCk7aWYoZj09PVN0cmluZyhOdW1iZXIoMSkpJiZnKXtsZXQgbT10aGlzLmdldFJvb3QoKS5lbCgpLG49Xy54NWIobS5pZCk7YShhd2FpdCBiKF8ueTZiKSk7bGV0IHAscj0ocD1uPT1udWxsP3ZvaWQgMDpuLmNrKSE9bnVsbD9wOiJvdmVybGF5aHBwIjthKGF3YWl0IGIoXy5VeCh0aGlzLmdldFJvb3QoKS5lbCgpLHt1cmxQYXJhbXM6ayx1TzohMCxHdDpuZXcgXy5SeChyLHtwcmlvcml0eToieCJ9KX0pKSl9ZWxzZSBmIT09U3RyaW5nKE51bWJlcigyKSkmJihjP2EoYXdhaXQgYihfLlV4KHRoaXMuZ2V0Um9vdCgpLmVsKCkse3VybFBhcmFtczprLHVPOiEwLEd0Om5ldyBfLlJ4KCJob21lcG9ydF9wcm9tb19iYW5uZXIiLHtwcmlvcml0eToieCJ9KX0pKSk6CmEoYXdhaXQgYihfLlV4KHRoaXMuZ2V0Um9vdCgpLmVsKCkse3VybFBhcmFtczprLHVPOiEwfSkpKSk7Xy5teSh0aGlzLmthLCJocGJhcnIiKTtmIT09U3RyaW5nKE51bWJlcigxKSl8fHRoaXMuVmEoIk5sbDBuZSIpLmlzRW1wdHkoKXx8Xy5aZyh0aGlzLnNyYS5kb2N1bWVudCwiZHBMYk1iIil9Y2F0Y2goYyl7YSgpLF8uWmcodGhpcy5zcmEuZG9jdW1lbnQsImRwTGJNYiIpfX1maW5hbGx5e2IoKX19c3RhdGljIFFhKCl7cmV0dXJue3NlcnZpY2U6e3NyYTpfLlkkYixTYjpfLnB2fX19fTtmYWMucHJvdG90eXBlLiR3YSRucFQybWQ9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5OZH07Xy5qcyhfLmRhYyxmYWMpOwoKXy52KCk7Cn1jYXRjaChlKXtfLl9EdW1wRXhjZXB0aW9uKGUpfQp0cnl7Cl8uSUtiPV8ua2MoIkIycWxQZSIsW10pOwp9Y2F0Y2goZSl7Xy5fRHVtcEV4Y2VwdGlvbihlKX0KdHJ5ewpfLnUoIkIycWxQZSIpOwp2YXIgSktiPWNsYXNzIGV4dGVuZHMgXy5oc3tOZCgpe3ZhciBhPV8udWcoInMiLF8uck1hKTtmb3IobGV0IGIgb2YgYSliLmtleS5pbmNsdWRlcygiVHdkSUZDIikmJiFiLmtleS5pbmNsdWRlcygoMCxfLnZtLml4KSgpKSYmYS5yZW1vdmUoYi5rZXkpfX07SktiLnByb3RvdHlwZS4kd2EkbnBUMm1kPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuTmR9O18uanMoXy5JS2IsSktiKTsKXy52KCk7Cn1jYXRjaChlKXtfLl9EdW1wRXhjZXB0aW9uKGUpfQp0cnl7Cl8uQWpjPV8ua2MoIk56VTZWIixbXSk7Cn1jYXRjaChlKXtfLl9EdW1wRXhjZXB0aW9uKGUpfQp0cnl7Cl8udSgiTnpVNlYiKTsKdmFyIEJqYz1mdW5jdGlvbihhKXtfLnlqYyhhLmdldFJvb3QoKS5lbCgpKTxhLmthP2EuZ2V0Um9vdCgpLmFkZENsYXNzKCJ3YUxlR2QiKTphLmdldFJvb3QoKS5yZW1vdmVDbGFzcygid2FMZUdkIil9OwpfLmpzKF8uQWpjLGNsYXNzIGV4dGVuZHMgXy5oc3tjb25zdHJ1Y3Rvcigpe3N1cGVyKCk7dmFyIGE9Xy5uaSh0aGlzLmdldERhdGEoInNmZSIpLCExKSxiPV8uQ2QodGhpcy5nZXREYXRhKCJzZnN3IiksMCksYz0xMCxkPSExLGU9WyJwSGlPaCIsImF5enFPYyJdO18ubmkodGhpcy5nZXREYXRhKCJvZnQiKSwhMSkmJmUucHVzaCgidGVzdC1pdGVtIik7aWYoYSl7Xy5MYShlLGc9Pl8uTGEoXy5ObShnLHRoaXMuZ2V0Um9vdCgpLmVsKCkpLGg9Pnt2YXIgaz1fLndJYShoKTtjKz1oLm9mZnNldFdpZHRoK2subGVmdCtrLnJpZ2h0fSkpO2E9Xy53SWEodGhpcy5nZXRSb290KCkuZWwoKSk7ZT1fLnZJYSh0aGlzLmdldFJvb3QoKS5lbCgpKTtsZXQgZj1fLmxJYSh0aGlzLmdldFJvb3QoKS5lbCgpKTtjK2EubGVmdCthLnJpZ2h0K2UubGVmdCtlLnJpZ2h0K2YubGVmdCtmLnJpZ2h0PmImJihkPSEwKX10aGlzLmthPWQ/YzowO2QmJihfLmhlKF8uaGkoKSwicmVzaXplIiwoKT0+QmpjKHRoaXMpKSwKQmpjKHRoaXMpKX19KTsKXy52KCk7Cn1jYXRjaChlKXtfLl9EdW1wRXhjZXB0aW9uKGUpfQp0cnl7Cl8uemxjPV8ua2MoIldsTlFHZCIsW10pOwp9Y2F0Y2goZSl7Xy5fRHVtcEV4Y2VwdGlvbihlKX0KdHJ5ewpfLklyPWZ1bmN0aW9uKGEsYixjKXtfLkVkLmNhbGwodGhpcyk7dGhpcy5NSj1hO3RoaXMuQWE9Ynx8MDt0aGlzLm9hPWM7dGhpcy53YT0oMCxfLmllKSh0aGlzLkJhLHRoaXMpfTtfLlVpKF8uSXIsXy5FZCk7Xy5Jci5wcm90b3R5cGUua2E9MDtfLklyLnByb3RvdHlwZS5xYz1mdW5jdGlvbigpe18uSXIuUmQucWMuY2FsbCh0aGlzKTt0aGlzLnN0b3AoKTtkZWxldGUgdGhpcy5NSjtkZWxldGUgdGhpcy5vYX07Xy5Jci5wcm90b3R5cGUuc3RhcnQ9ZnVuY3Rpb24oYSl7dGhpcy5zdG9wKCk7dGhpcy5rYT1fLkluKHRoaXMud2EsYSE9PXZvaWQgMD9hOnRoaXMuQWEpfTtfLlVpYj1mdW5jdGlvbihhKXthLmlzQWN0aXZlKCl8fGEuc3RhcnQodm9pZCAwKX07Xy5Jci5wcm90b3R5cGUuc3RvcD1mdW5jdGlvbigpe3RoaXMuaXNBY3RpdmUoKSYmXy5Kbih0aGlzLmthKTt0aGlzLmthPTB9O18uSXIucHJvdG90eXBlLmlzQWN0aXZlPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMua2EhPTB9OwpfLklyLnByb3RvdHlwZS5CYT1mdW5jdGlvbigpe3RoaXMua2E9MDt0aGlzLk1KJiZ0aGlzLk1KLmNhbGwodGhpcy5vYSl9Owp9Y2F0Y2goZSl7Xy5fRHVtcEV4Y2VwdGlvbihlKX0KdHJ5ewpfLnUoIldsTlFHZCIpOwp2YXIgQWxjLENsYyxCbGMsRGxjLEVsYyxHbGMsRmxjLEhsYyxKbGMsSWxjO0FsYz1jbGFzc3tjb25zdHJ1Y3RvcihhLGIsYyl7dGhpcy50cmlnZ2VyPWE7dGhpcy5qQWE9Yjt0aGlzLndEPWN9fTtDbGM9ZnVuY3Rpb24oYSl7dmFyIGI9YS5vYSgpO18uTGEoYixjPT57dmFyIGQ9Xy5seihhLGMpO2lmKGQuaXNTZWxlY3RlZCgpJiZkLmlzRW5hYmxlZCgpKXN3aXRjaChkLmdldFR5cGUoKSl7Y2FzZSAyOkJsYyhhKTtkLlNqKCEwKTthLndhPWM7YnJlYWs7Y2FzZSAzOmQuU2ooITApO2EuRWEucHVzaChjKTticmVhaztkZWZhdWx0OmQuU2ooITEpfWVsc2UgZC5TaighMSl9LGEpO2I9YlswXTtfLmx6KGEsYikua2EoKSYmYi5zZXRBdHRyaWJ1dGUoInRhYmluZGV4IiwiMCIpfTtfLmx6PWZ1bmN0aW9uKGEsYil7cmV0dXJuIGEueXlhLmZpbmQoYz0+Yy5nZXRSb290KCkuZWwoKT09PWIpfTtCbGM9ZnVuY3Rpb24oYSl7YS53YSYmKF8ubHooYSxhLndhKS5TaighMSksYS53YT1udWxsKX07CkRsYz1mdW5jdGlvbihhLGIsYz0hMSl7aWYoYil7bGV0IGQ9Xy5seihhLGIpO2lmKCFkLmlzRW5hYmxlZCgpJiZjKXJldHVybjtkLm9hKCEwKTtkLmthKCkmJmIuc2V0QXR0cmlidXRlKCJ0YWJpbmRleCIsIjAiKX1lbHNlIGEubWVudS5zZXRBdHRyaWJ1dGUoInRhYmluZGV4IiwiMCIpLGEubWVudS5mb2N1cygpO2Eua2EhPT1iJiZhLmthJiYoYz1fLmx6KGEsYS5rYSksYy5rYSgpJiZhLmthLnNldEF0dHJpYnV0ZSgidGFiaW5kZXgiLCItMSIpLGMub2EoITEpKTthLmthPWJ9O0VsYz1mdW5jdGlvbihhLGIpe3JldHVybiEhYS5vYSgpLmZpbmQoYz0+Yz09PWIpfTsKR2xjPWZ1bmN0aW9uKGEsYixjKXt2YXIgZD1fLmx6KGEsYik7aWYoZC5pc0VuYWJsZWQoKSl7RGxjKGEsYik7c3dpdGNoKGQuZ2V0VHlwZSgpKXtjYXNlIDI6dmFyIGU9YS53YSE9PWI7ZSYmKEJsYyhhKSxhLndhPWIsZC5TaighMCkpO0ZsYyhhLGQsZSxjKTticmVhaztjYXNlIDM6ZT0hZC5pc1NlbGVjdGVkKCk7ZC5TaihlKTtlP2EuRWEucHVzaChiKTpfLkRhKGEuRWEsYik7RmxjKGEsZCwhMCxjKTticmVhaztjYXNlIDU6YT1hLmdldFJvb3QoKS5lbCgpO18uWGcoYSwiTHlXTkVmIik7YnJlYWs7Y2FzZSAxMTpjPWEuZ2V0Um9vdCgpLmVsKCk7YT17dHJpZ2dlcjpiLE9sYzphLm9hKCl9O18uWGcoYywicGpxS25kIixhKTticmVhaztkZWZhdWx0OkZsYyhhLGQsITEsYyl9ZC5pc1NlbGVjdGVkKCl9fTtGbGM9ZnVuY3Rpb24oYSxiLGMsZCl7YT1hLmdldFJvb3QoKS5lbCgpO18uWGcoYSwibU1mNjFlIixuZXcgQWxjKGIsYyxkKSl9OwpIbGM9ZnVuY3Rpb24oYSl7YT1hLnRhcmdldEVsZW1lbnQ7Zm9yKHZhciBiLGM7YS5lbCgpIT1udWxsJiYoKGI9YS5lbCgpKT09bnVsbD92b2lkIDA6Yi50YWdOYW1lKSE9PSJHLU1FTlUtSVRFTSImJigoYz1hLmVsKCkpPT1udWxsP3ZvaWQgMDpjLnRhZ05hbWUpIT09IkctTUVOVSI7KWE9YS5wYXJlbnQoKTt2YXIgZDtyZXR1cm4oKGQ9YS5lbCgpKT09bnVsbD92b2lkIDA6ZC50YWdOYW1lKT09PSJHLU1FTlUtSVRFTSI/YS5lbCgpOm51bGx9O0psYz1mdW5jdGlvbihhLGIpe3JldHVybihiP0lsYyhhLCEwKTphLm9hKCkpLmZpbmQoYz0+Xy5seihhLGMpLmlzRW5hYmxlZCgpPyhjPV8ubHooYSxjKS5nZXRDb250ZW50KCksXy5sYWEoYyxhLnByZWZpeCkpOiExKX07CklsYz1mdW5jdGlvbihhLGIpe3ZhciBjPWEua2EsZD1hLm9hKCkuZmlsdGVyKGU9Pl8ud24oZSkpO2M9PT1udWxsJiYoYS5tZW51LmdldEF0dHJpYnV0ZSgidGFiaW5kZXgiKT09PSIwInx8ZC5sZW5ndGg+MCYmZFswXS5nZXRBdHRyaWJ1dGUoInRhYmluZGV4Iik9PT0iMCIpJiYoYz1iP18udmEoZCk6ZFswXSk7YyYmKGE9ZC5maW5kSW5kZXgoZT0+Yz09PWUpLGQ9Xy5PbmIoZCxiPy1hLTE6LWEpLGE9ZC5maW5kSW5kZXgoZT0+Yz09PWUpKTtyZXR1cm4gZH07Cl8ubXo9Y2xhc3MgZXh0ZW5kcyBfLmhze3N0YXRpYyBRYSgpe3JldHVybntjb250cm9sbGVyczp7eXlhOntqc25hbWU6Ik5OSkx1ZCIsY3RvcjpfLnpofSxRTWM6e2pzbmFtZToiaGdEVXdlIixjdG9yOl8uemh9LHJvYzp7anNuYW1lOiJ0cXA3dWQiLGN0b3I6Xy56aH19fX1jb25zdHJ1Y3RvcihhKXtzdXBlcigpO3RoaXMud2E9bnVsbDt0aGlzLkVhPVtdO3RoaXMua2E9bnVsbDt0aGlzLnByZWZpeD0iIjt0aGlzLnl5YT1bLi4uYS5jb250cm9sbGVycy55eWEsLi4uYS5jb250cm9sbGVycy5RTWMsLi4uYS5jb250cm9sbGVycy5yb2NdO3RoaXMubWVudT10aGlzLmdldFJvb3QoKS5lbCgpO3RoaXMuUGE9Xy5kbGEodGhpcy5tZW51KT09PSJsaXN0Ym94Ijt0aGlzLkthPW5ldyBfLklyKHRoaXMucmIsMUUzLHRoaXMpO18uRGkodGhpcyx0aGlzLkthKTtDbGModGhpcyl9RmIoKXtyZXR1cm4gdGhpcy5rYX1vYSgpe3ZhciBhPVsuLi50aGlzLkhiKCJOTkpMdWQiKS50b0FycmF5KCldLmZpbHRlcihjPT4KIV8ubHoodGhpcyxjKS5xVmEoKSksYj10aGlzLlZhKCJ0cXA3dWQiKS5lbCgpO2ImJmEucHVzaChiKTtyZXR1cm4gYX1KYigpe3JldHVybiB0aGlzLnl5YX1yYigpe3RoaXMucHJlZml4PSIifUlhKCl7Zm9yKGxldCBhIG9mIHRoaXMub2EoKSl7bGV0IGI9Xy5seih0aGlzLGEpO2lmKGIuaXNTZWxlY3RlZCgpJiZiLmlzRW5hYmxlZCgpKXN3aXRjaChiLmdldFR5cGUoKSl7Y2FzZSAyOkJsYyh0aGlzKTticmVhaztjYXNlIDM6dGhpcy5FYS5wb3AoKTticmVhaztjYXNlIDE6Y2FzZSA3OmNhc2UgNjpjYXNlIDQ6Y2FzZSA1OmNhc2UgMTA6YnJlYWs7ZGVmYXVsdDpiLmdldFR5cGUoKX1iLlNqKCExKX1EbGModGhpcyxudWxsKX1BYShhLGI9ITEpe0VsYyh0aGlzLGEpJiZHbGModGhpcyxhLGIpfXpzKCl7cmV0dXJuIHRoaXMud2F9T2IoKXtyZXR1cm4gdGhpcy5FYX1BYigpe3JldHVybiB0aGlzLmthfU9hKCl7dmFyIGE9dGhpcy56cygpO3JldHVybiBhP18ubHoodGhpcyxhKS5nZXRDb250ZW50KCk6CiIifU5hKCl7dmFyIGE9dGhpcy5vYSgpWzBdO3JldHVybiBhP3RoaXMuZ2V0RWxlbWVudFRvRm9jdXMoYSk6bnVsbH1JYihhPSExKXt2YXIgYj10aGlzLnpzKCk7YiYmdGhpcy5QYT9hPWI6YT9hPShhPV8udmEodGhpcy5vYSgpKSk/dGhpcy5nZXRFbGVtZW50VG9Gb2N1cyhhKTpudWxsOmE9dGhpcy5OYSgpO3JldHVybiBhfWdldEVsZW1lbnRUb0ZvY3VzKGEpe3ZhciBiPV8ubHoodGhpcyxhKTtpZihiLmdldFR5cGUoKSE9PTYmJmIuZ2V0VHlwZSgpIT09MTApcmV0dXJuIGE7Yj0obmV3IF8ud28oW2FdKSkuZmluZCgiKiIpLnRvQXJyYXkoKTtyZXR1cm4oYT1bYV0uY29uY2F0KGIpLmZpbmQoYz0+Xy5SZyhjKSYmXy53bihjKSYmKGMuZ2V0QXR0cmlidXRlKCJyb2xlIik9PT0ibWVudWl0ZW0iJiZjLmhhc0F0dHJpYnV0ZSgidGFiaW5kZXgiKXx8Xy5ibihjKSkpKT9hOm51bGx9QmEoYSl7YSYmIUVsYyh0aGlzLGEpfHxEbGModGhpcyxhKX1RYihhKXt2YXIgYj1IbGMoYSk7aWYoYil7dmFyIGM9CmEuZXZlbnQ7KGM9Yz9jLndoaWNofHxjLmtleUNvZGU6bnVsbCkmJmM9PT0zMj90aGlzLnhpKGEpOkdsYyh0aGlzLGIsITApfX1TYSgpe3RoaXMua2E9PT1udWxsJiZEbGModGhpcyx0aGlzLm9hKClbMF0pfVphKCl7dmFyIGE9dGhpcy5nZXRSb290KCkuZWwoKTtfLlhnKGEsIk9WWTFrZCIpfW5iKCl7dmFyIGE9dGhpcy5nZXRSb290KCkuZWwoKTtfLlhnKGEsIm51blhaIik7RGxjKHRoaXMsbnVsbCl9UGIoYSl7KGE9SGxjKGEpKSYmRGxjKHRoaXMsYSwhMCl9eGkoYSl7dmFyIGI9YS5ldmVudDtpZighYnx8Yi5jdHJsS2V5fHxiLm1ldGFLZXl8fGIuc2hpZnRLZXl8fGIuYWx0S2V5KXJldHVybiExO3ZhciBjPWIud2hpY2h8fGIua2V5Q29kZSxkPSExO2lmKGM9PT0yNylyZXR1cm4hMDtpZihjPT09NDB8fGM9PT0zOCl7dmFyIGU9dGhpcy5rYTtsZXQgZz10aGlzLm9hKCk7ZT1jPT09Mzg/ZT09PWdbMF06ZT09PWcucG9wKCk7aWYoIXRoaXMuUGF8fCFlKXtjPTQwPT09YztlPUlsYyh0aGlzLApjKTt2YXIgZjtjPShmPWM/ZS5zaGlmdCgpOmUucG9wKCkpIT1udWxsP2Y6bnVsbDtEbGModGhpcyxjKTt0aGlzLkdhKHRoaXMua2EpfX1lbHNlIGlmKGM9PT0xM3x8Yz09PTMyJiYhdGhpcy5wcmVmaXgpdGhpcy5rYSYmKGQ9Xy5seih0aGlzLHRoaXMua2EpLmdldFR5cGUoKT09PTZ8fF8ubHoodGhpcyx0aGlzLmthKS5nZXRUeXBlKCk9PT0xMCxHbGModGhpcyx0aGlzLmthLCEwKSk7ZWxzZSBpZihfLlJJYShjKSl0aGlzLkthLnN0YXJ0KCksZj1TdHJpbmcuZnJvbUNoYXJDb2RlKGMpLHRoaXMucHJlZml4PT09Zj9mPUpsYyh0aGlzLCEwKToodGhpcy5wcmVmaXgrPWYsZj1KbGModGhpcywhMSkpLGYmJihEbGModGhpcyxmKSx0aGlzLkdhKHRoaXMua2EpKTtlbHNlIHJldHVybiExO2lmKGEub2IuZWwoKS5jb250YWlucyhiLnRhcmdldCkpe2xldCBnOyhnPWIuc3RvcFByb3BhZ2F0aW9uKT09bnVsbHx8Zy5jYWxsKGIpO2lmKCFkKXtsZXQgaDsoaD1iLnByZXZlbnREZWZhdWx0KT09bnVsbHx8CmguY2FsbChiKX19cmV0dXJuITF9R2EoYSl7YSYmKHRoaXMuUmEoYSksKGE9dGhpcy5nZXRFbGVtZW50VG9Gb2N1cyhhKSkmJmEuZm9jdXMoKSl9UmEoYSxiKXtpZihhKXt2YXIgYz1fLnNuKHRoaXMubWVudSk7aWYoYy5oZWlnaHQ8dGhpcy5tZW51LnNjcm9sbEhlaWdodCl7dmFyIGQ9dGhpcy5tZW51LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLnRvcDtsZXQgZT1fLnNuKGEpO2Q9YS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS50b3AtZDtsZXQgZj1lLmhlaWdodC8yO2Q8Zj90aGlzLm1lbnUuc2Nyb2xsVG9wKz1kLWY6ZCtlLmhlaWdodD5jLmhlaWdodC1mJiYodGhpcy5tZW51LnNjcm9sbFRvcCs9ZCtlLmhlaWdodC1jLmhlaWdodCtmKTtiJiYodGhpcy5tZW51LnNjcm9sbFRvcCs9YS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS50b3AtdGhpcy5tZW51LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLnRvcC1NYXRoLmZsb29yKChjLmhlaWdodC1lLmhlaWdodCkvMikpfX19fTsKXy5tei5wcm90b3R5cGUuJHdhJHVZVDJWYj1mdW5jdGlvbigpe3JldHVybiB0aGlzLnhpfTtfLm16LnByb3RvdHlwZS4kd2EkSWdKbDljPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuUGJ9O18ubXoucHJvdG90eXBlLiR3YSRUeDVSYj1mdW5jdGlvbigpe3JldHVybiB0aGlzLm5ifTtfLm16LnByb3RvdHlwZS4kd2EkV09RcVliPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuWmF9O18ubXoucHJvdG90eXBlLiR3YSRoMDZSOD1mdW5jdGlvbigpe3JldHVybiB0aGlzLlNhfTtfLm16LnByb3RvdHlwZS4kd2EkUFNsMjhjPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuUWJ9O18ubXoucHJvdG90eXBlLiR3YSR4cFJzTmU9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5OYX07Xy5tei5wcm90b3R5cGUuJHdhJE9HMnFxYz1mdW5jdGlvbigpe3JldHVybiB0aGlzLk9hfTtfLm16LnByb3RvdHlwZS4kd2Eka3ZtMjhkPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuQWJ9OwpfLm16LnByb3RvdHlwZS4kd2EkbUZzMlNjPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuT2J9O18ubXoucHJvdG90eXBlLiR3YSRVcnd3a2Y9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy56c307Xy5tei5wcm90b3R5cGUuJHdhJEoyaFBUZT1mdW5jdGlvbigpe3JldHVybiB0aGlzLklhfTtfLm16LnByb3RvdHlwZS4kd2EkZ1NtS1BjPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuSmJ9O18ubXoucHJvdG90eXBlLiR3YSRsU3BSbGI9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5vYX07Xy5tei5wcm90b3R5cGUuJHdhJG1KNjBqYj1mdW5jdGlvbigpe3JldHVybiB0aGlzLkZifTtfLmpzKF8uemxjLF8ubXopOwpfLnYoKTsKfWNhdGNoKGUpe18uX0R1bXBFeGNlcHRpb24oZSl9CnRyeXsKXy5PeD1mdW5jdGlvbihhLGIsYyxkLGUsZixnLGgsayl7dmFyIG09Xy5KM2IoYyksbj1fLnRuKGEpLHA9Xy5rSWEoYSk7cCYmbi5pbnRlcnNlY3Rpb24oXy5XSGEocCkpO3A9Xy5vZShhKTt2YXIgcj1fLm9lKGMpO2lmKHAuZ2V0RG9jdW1lbnQoKSE9ci5nZXREb2N1bWVudCgpKXtwPXAuZ2V0RG9jdW1lbnQoKS5ib2R5O3t2YXIgeD1wO3I9ci5nZXRXaW5kb3coKTtsZXQgSD1uZXcgXy5LZCgwLDApLEo9Xy5oaShfLldkKHgpKTtiOnt0cnl7Xy5aaShKLnBhcmVudCk7dmFyIHo9ITA7YnJlYWsgYn1jYXRjaChOKXt9ej0hMX1pZih6KXt6PXg7ZG8geD1KPT1yP18ubW4oeik6Xy5wSWEoeiksSC54Kz14LngsSC55Kz14Lnk7d2hpbGUoSiYmSiE9ciYmSiE9Si5wYXJlbnQmJih6PUouZnJhbWVFbGVtZW50KSYmKEo9Si5wYXJlbnQpKX16PUh9cD1fLm1IYSh6LF8ubW4ocCkpO24ubGVmdCs9cC54O24udG9wKz1wLnl9YT1fLkszYihhLGIpO2I9bi5sZWZ0O2EmND9iKz1uLndpZHRoOmEmMiYmCihiKz1uLndpZHRoLzIpO249bmV3IF8uS2QoYixuLnRvcCsoYSYxP24uaGVpZ2h0OjApKTtuPV8ubUhhKG4sbSk7ZSYmKG4ueCs9KGEmND8tMToxKSplLngsbi55Kz0oYSYxPy0xOjEpKmUueSk7aWYoZylpZihrKXZhciBCPWs7ZWxzZSBpZihCPV8ua0lhKGMpKUIudG9wLT1tLnksQi5yaWdodC09bS54LEIuYm90dG9tLT1tLnksQi5sZWZ0LT1tLng7cmV0dXJuIF8uTDNiKG4sYyxkLGYsQixnLGgpfTtfLkozYj1mdW5jdGlvbihhKXtpZihhPWEub2Zmc2V0UGFyZW50KXtsZXQgYz1hLnRhZ05hbWU9PSJIVE1MInx8YS50YWdOYW1lPT0iQk9EWSI7aWYoIWN8fF8ub2xhKGEpIT0ic3RhdGljIil7dmFyIGI9Xy5tbihhKTtjfHwoYj1fLm1IYShiLG5ldyBfLktkKF8uZGUoYSksYS5zY3JvbGxUb3ApKSl9fXJldHVybiBifHxuZXcgXy5LZH07Cl8uTDNiPWZ1bmN0aW9uKGEsYixjLGQsZSxmLGcpe2E9YS5jbG9uZSgpO3ZhciBoPV8uSzNiKGIsYyk7Yz1fLnNuKGIpO2c9Zz9nLmNsb25lKCk6Yy5jbG9uZSgpO2E9Xy5NM2IoYSxnLGgsZCxlLGYpO2lmKGEuc3RhdHVzJjQ5NilyZXR1cm4gYS5zdGF0dXM7Xy5sbihiLGEucmVjdC55digpKTtnPWEucmVjdC5nZXRTaXplKCk7Xy5uSGEoYyxnKXx8KGQ9ZyxiPWIuc3R5bGUsXy5PZD9iLk1vekJveFNpemluZz0iYm9yZGVyLWJveCI6Xy5OZD9iLldlYmtpdEJveFNpemluZz0iYm9yZGVyLWJveCI6Yi5ib3hTaXppbmc9ImJvcmRlci1ib3giLGIud2lkdGg9TWF0aC5tYXgoZC53aWR0aCwwKSsicHgiLGIuaGVpZ2h0PU1hdGgubWF4KGQuaGVpZ2h0LDApKyJweCIpO3JldHVybiBhLnN0YXR1c307Cl8uTTNiPWZ1bmN0aW9uKGEsYixjLGQsZSxmKXthPWEuY2xvbmUoKTtiPWIuY2xvbmUoKTt2YXIgZz0wO2lmKGR8fGMhPTApYyY0P2EueC09Yi53aWR0aCsoZD9kLnJpZ2h0OjApOmMmMj9hLngtPWIud2lkdGgvMjpkJiYoYS54Kz1kLmxlZnQpLGMmMT9hLnktPWIuaGVpZ2h0KyhkP2QuYm90dG9tOjApOmQmJihhLnkrPWQudG9wKTtpZihmKXtpZihlKXtnPWE7Yz1iO2Q9MDsoZiY2NSk9PTY1JiYoZy54PGUubGVmdHx8Zy54Pj1lLnJpZ2h0KSYmKGYmPS0yKTsoZiYxMzIpPT0xMzImJihnLnk8ZS50b3B8fGcueT49ZS5ib3R0b20pJiYoZiY9LTUpO2cueDxlLmxlZnQmJmYmMSYmKGcueD1lLmxlZnQsZHw9MSk7aWYoZiYxNil7dmFyIGg9Zy54O2cueDxlLmxlZnQmJihnLng9ZS5sZWZ0LGR8PTQpO2cueCtjLndpZHRoPmUucmlnaHQmJihjLndpZHRoPU1hdGgubWluKGUucmlnaHQtZy54LGgrYy53aWR0aC1lLmxlZnQpLGMud2lkdGg9TWF0aC5tYXgoYy53aWR0aCwwKSxkfD00KX1nLngrYy53aWR0aD4KZS5yaWdodCYmZiYxJiYoZy54PU1hdGgubWF4KGUucmlnaHQtYy53aWR0aCxlLmxlZnQpLGR8PTEpO2YmMiYmKGR8PShnLng8ZS5sZWZ0PzE2OjApfChnLngrYy53aWR0aD5lLnJpZ2h0PzMyOjApKTtnLnk8ZS50b3AmJmYmNCYmKGcueT1lLnRvcCxkfD0yKTtmJjMyJiYoaD1nLnksZy55PGUudG9wJiYoZy55PWUudG9wLGR8PTgpLGcueStjLmhlaWdodD5lLmJvdHRvbSYmKGMuaGVpZ2h0PU1hdGgubWluKGUuYm90dG9tLWcueSxoK2MuaGVpZ2h0LWUudG9wKSxjLmhlaWdodD1NYXRoLm1heChjLmhlaWdodCwwKSxkfD04KSk7Zy55K2MuaGVpZ2h0PmUuYm90dG9tJiZmJjQmJihnLnk9TWF0aC5tYXgoZS5ib3R0b20tYy5oZWlnaHQsZS50b3ApLGR8PTIpO2YmOCYmKGR8PShnLnk8ZS50b3A/NjQ6MCl8KGcueStjLmhlaWdodD5lLmJvdHRvbT8xMjg6MCkpO2U9ZH1lbHNlIGU9MjU2O2c9ZX1lPW5ldyBfLlJkKDAsMCwwLDApO2UubGVmdD1hLng7ZS50b3A9YS55O2Uud2lkdGg9Yi53aWR0aDsKZS5oZWlnaHQ9Yi5oZWlnaHQ7cmV0dXJue3JlY3Q6ZSxzdGF0dXM6Z319O18uSzNiPWZ1bmN0aW9uKGEsYil7cmV0dXJuKGImOCYmXy5jZShhKT9iXjQ6YikmLTl9Owp9Y2F0Y2goZSl7Xy5fRHVtcEV4Y2VwdGlvbihlKX0KdHJ5ewpfLnYzYj1mdW5jdGlvbihhKXt2YXIgYj1uZXcgXy51M2I7cmV0dXJuIF8uWmgoYiwxLGEpfTtfLnczYj1mdW5jdGlvbihhLGIpe3JldHVybiBfLlpoKGEsMixiKX07Xy54M2I9ZnVuY3Rpb24oYSxiKXtyZXR1cm4gXy4kaChhLDUsYil9O18ueTNiPWZ1bmN0aW9uKGEsYil7cmV0dXJuIF8uJGgoYSw2LGIpfTtfLnozYj1mdW5jdGlvbihhLGIpe3JldHVybiBfLiRoKGEsNyxiKX07Xy5BM2I9ZnVuY3Rpb24oYSxiKXtyZXR1cm4gXy4kaChhLDgsYil9O18uQjNiPWZ1bmN0aW9uKGEsYil7cmV0dXJuIF8uJGgoYSw5LGIpfTtfLkMzYj1mdW5jdGlvbihhLGIpe3JldHVybiBfLiRoKGEsMTAsYil9O18uRDNiPWZ1bmN0aW9uKGEsYil7cmV0dXJuIF8uJGgoYSwxMSxiKX07Xy5FM2I9ZnVuY3Rpb24oYSxiKXtyZXR1cm4gXy4kaChhLDEyLGIpfTtfLkYzYj1mdW5jdGlvbihhLGIpe3JldHVybiBfLiRoKGEsMTMsYil9O18uRzNiPWZ1bmN0aW9uKGEsYil7cmV0dXJuIF8uJGgoYSwxNCxiKX07Cl8uSDNiPWZ1bmN0aW9uKGEsYil7cmV0dXJuIF8uJGgoYSwxNSxiKX07Xy5JM2I9ZnVuY3Rpb24oYSxiKXtyZXR1cm4gXy4kaChhLDE2LGIpfTtfLnUzYj1jbGFzcyBleHRlbmRzIF8ubHtjb25zdHJ1Y3RvcihhKXtzdXBlcihhKX19O18udTNiLnByb3RvdHlwZS5YYT0ibVZqQWpmIjsKfWNhdGNoKGUpe18uX0R1bXBFeGNlcHRpb24oZSl9CnRyeXsKXy5OeD1fLmtjKCJEUHJlRSIsW18uWHEsXy4kWWFdKTsKfWNhdGNoKGUpe18uX0R1bXBFeGNlcHRpb24oZSl9CnRyeXsKXy51KCJEUHJlRSIpOwp2YXIgTjNiO04zYj1mdW5jdGlvbihhKXt2YXIgYj04O3N3aXRjaChhKXtjYXNlIDI6Yj0yO2JyZWFrO2Nhc2UgMTpiPTg7YnJlYWs7Y2FzZSAzOmI9MTI7YnJlYWs7Y2FzZSA1OmI9MzticmVhaztjYXNlIDQ6Yj05O2JyZWFrO2Nhc2UgNjpiPTEzfXJldHVybiBifTsKXy5QeD1jbGFzcyBleHRlbmRzIF8uaHN7c3RhdGljIFFhKCl7cmV0dXJue2pzZGF0YTp7UHZjOl8udTNifSxzZXJ2aWNlOntkaXNtaXNzOl8uSngsUHA6Xy5zM2J9fX1jb25zdHJ1Y3RvcihhKXtzdXBlcigpO3RoaXMuS2M9Xy5CZCgiTFZJWFhiIikuVGcoXy5WbywxKT09PTE7dGhpcy5vYT0xO3RoaXMub2Zmc2V0WT10aGlzLm9mZnNldFg9MDt0aGlzLk5hPXRoaXMuT2E9dGhpcy5JYT0hMTt0aGlzLmRhdGE9YS5qc2RhdGEuUHZjO3RoaXMud2E9YS5zZXJ2aWNlLmRpc21pc3M7dGhpcy5QcD1hLnNlcnZpY2UuUHA7dGhpcy5yb290PXRoaXMuZ2V0Um9vdCgpLmVsKCk7dGhpcy5wb3B1cD10aGlzLkphKCJWNjhiZGUiKS5oYigpO18uUG8odGhpcyx0aGlzLnBvcHVwKTt0aGlzLkthPSgpPT57dGhpcy5yZXBvc2l0aW9uKCl9O18uaGUod2luZG93LCJyZXNpemUiLHRoaXMuS2EpO3RoaXMuU2E9dGhpcy5rYSgpLmhhc0F0dHJpYnV0ZSgicm9sZSIpO3RoaXMuT2E9Xy5BKHRoaXMuZGF0YSwxMyk7CnRoaXMuTmE9Xy5BKHRoaXMuZGF0YSwxNCk7dGhpcy5HYSgpfVRiKCl7dGhpcy5CYSgpJiZ0aGlzLmlzVmlzaWJsZSgpP3RoaXMud2EuZGlzbWlzcyh0aGlzLnBvcHVwKTp0aGlzLndhLnVubGlzdGVuKHRoaXMucG9wdXApO18uem4od2luZG93LCJyZXNpemUiLHRoaXMuS2EpO18uJGcodGhpcy5yb290LHRoaXMucG9wdXApfHx0aGlzLnJvb3QuYXBwZW5kQ2hpbGQodGhpcy5wb3B1cCk7c3VwZXIuVGIoKX1vbkRpc21pc3MoYSxiLGM9bnVsbCl7aWYoYyYmXy5wZyhjKSYmYy5ub2RlVHlwZT4wJiZfLiRnKHRoaXMua2EoKSxjKXx8YS5zb21lKGQ9Pl8uJGcoZCxjKSkpcmV0dXJuITE7aWYoXy5BKHRoaXMuZGF0YSwxMikpcmV0dXJuIHRoaXMudHJpZ2dlcigiYWw1RjNlIix7dHlwZTpiLEd3OmN9KSwhMDt0aGlzLnNldFZpc2libGUoITEpO18uWmcoZG9jdW1lbnQsImFsNUYzZSIpO2lmKGI9PT0yfHxfLkEodGhpcy5kYXRhLDE2KSlhPXRoaXMua2EoKSxhLmhhc0F0dHJpYnV0ZSgidGFiaW5kZXgiKXx8CihhPWEuZmlyc3RFbGVtZW50Q2hpbGQpLGEuZm9jdXMoKTt0aGlzLm9hPTE7cmV0dXJuITB9eGkoYSl7dmFyIGI9YS5ldmVudDtpZighYilyZXR1cm4hMTtiPWIud2hpY2h8fGIua2V5Q29kZTtiIT09NDAmJmIhPT0zOHx8IXRoaXMuZ2V0UG9wdXAoKS5xdWVyeVNlbGVjdG9yKCJnLW1lbnUiKXx8KHRoaXMuUHAuZGlzYWJsZSgpLHRoaXMuRWEoYSksKDAsXy5qbykoKCk9Pnt0aGlzLlBwLmVuYWJsZSgpfSwwKSk7cmV0dXJuIHRoaXMuTmF9UmEoYSl7dmFyIGI9dGhpcy5IYigiWFB0T3liIikudG9BcnJheSgpO2E9YS5ldmVudDtpZighYSlyZXR1cm4hMTt2YXIgYz1hLmtleTtpZihjPT09IkFycm93UmlnaHQifHxjPT09IkFycm93RG93biIpe2EucHJldmVudERlZmF1bHQoKTt2YXIgZD1iLmZpbmQoZj0+TnVtYmVyKGYuZ2V0QXR0cmlidXRlKCJkYXRhLWNoaXAtaW5kZXgiKSk9PT10aGlzLm9hKzEpO3RoaXMub2E8Yi5sZW5ndGgmJnRoaXMub2ErKztsZXQgZTtkPT1udWxsfHwoZT1kLmNoaWxkcmVuWzBdKT09Cm51bGx8fGUuZm9jdXMoKTtyZXR1cm4hMX1pZihjPT09IkFycm93TGVmdCJ8fGM9PT0iQXJyb3dVcCIpcmV0dXJuIGEucHJldmVudERlZmF1bHQoKSxiPWIuZmluZChlPT5OdW1iZXIoZS5nZXRBdHRyaWJ1dGUoImRhdGEtY2hpcC1pbmRleCIpKT09PXRoaXMub2EtMSksdGhpcy5vYT4xJiZ0aGlzLm9hLS0sYj09bnVsbHx8KGQ9Yi5jaGlsZHJlblswXSk9PW51bGx8fGQuZm9jdXMoKSwhMTtjPT09IlRhYiImJmEucHJldmVudERlZmF1bHQoKTtyZXR1cm4hMX1FYShhKXt2YXIgYj1hLmV2ZW50fHx2b2lkIDAsYz1hLm9iLmVsKCk7Yy5mb2N1cygpO18ueWUoYykmJl8uRXYoYyk7YT1hLmRhdGEmJmEuZGF0YS5ub25EaXNtaXNzaW5nRWxlbWVudHN8fFtdO3RoaXMuc2V0VmlzaWJsZSghdGhpcy5pc1Zpc2libGUoKSxiLHRoaXMua2EoKS5maXJzdEVsZW1lbnRDaGlsZCxhKTtiJiYoYj1fLm1yYShiKSkmJmIucHJldmVudERlZmF1bHQoKX1yZXBvc2l0aW9uKCl7aWYodGhpcy5pc1Zpc2libGUoKSl7dmFyIGE9CnRoaXMuZ2V0UG9wdXAoKSxiPXRoaXMua2EoKSxjPW5ldyBfLktkKHRoaXMub2Zmc2V0WCx0aGlzLm9mZnNldFkpLGQ9Xy5payh0aGlzLmRhdGEsMSksZT1fLmlrKHRoaXMuZGF0YSwyKTtkPU4zYihkKTtlPU4zYihlKTtpZihiLm9mZnNldFBhcmVudD09PW51bGwmJmIuc3R5bGUucG9zaXRpb24hPT0iZml4ZWQiKXRoaXMuZGlzbWlzcygpO2Vsc2V7aWYoXy5BKHRoaXMuZGF0YSw3KSl7dmFyIGY9Xy5zbihiKS53aWR0aDtpZihfLkEodGhpcy5kYXRhLDkpKXtfLnFuKGEsIiIpO3ZhciBnPV8uc24oYSkud2lkdGg7Zz5mJiYoZj1nKX1fLnFuKGEsZil9Zj0oXy5BKHRoaXMuZGF0YSw1KT8xOjApfChfLkEodGhpcy5kYXRhLDYpPzQ6MCk7e2xldCBoPXdpbmRvdy52aXN1YWxWaWV3cG9ydDtoJiZoLnNjYWxlIT09MT8oZz1fLkozYih0aGlzLmdldFBvcHVwKCkpLGc9bmV3IF8uUGQoaC5wYWdlVG9wLWcueSxoLnBhZ2VMZWZ0K2gud2lkdGgtZy54LGgucGFnZVRvcCtoLmhlaWdodC1nLnksaC5wYWdlTGVmdC0KZy54KSk6Zz12b2lkIDB9Xy5PeChiLGQsYSxlLGMsdm9pZCAwLGYsdm9pZCAwLGcpfX19aXNWaXNpYmxlKCl7cmV0dXJuIF8ud24odGhpcy5nZXRQb3B1cCgpKX1kaXNtaXNzKCl7dGhpcy5pc1Zpc2libGUoKSYmdGhpcy53YS5kaXNtaXNzKHRoaXMucG9wdXApfXNldFZpc2libGUoYSxiLGMsZD1bXSl7dmFyIGU9dGhpcy5nZXRQb3B1cCgpLGY9YSE9PXRoaXMuaXNWaXNpYmxlKCksZz1hPyJLeVBhMGUiOiJ3ak9HN2UiO18udm4oZSxhKTthJiZfLiRnKHRoaXMucm9vdCxlKT9fLkEodGhpcy5kYXRhLDgpfHxfLk14KCkuYXBwZW5kQ2hpbGQoZSk6YXx8Xy4kZyh0aGlzLnJvb3QsZSl8fHRoaXMucm9vdC5hcHBlbmRDaGlsZChlKTthJiYoXy5BKHRoaXMuZGF0YSwxNSkmJl8uWmYodGhpcyx7c2VydmljZTp7Zm9jdXM6Xy52cn19KS50aGVuKGg9PntoLnNlcnZpY2UuZm9jdXMuUEMobmV3IF8uem8oZSkpfSksdGhpcy50cmlnZ2VyKCJZcmFPdmUiLHtwb3B1cDp0aGlzfSksdGhpcy5yZXBvc2l0aW9uKCkpOwpmJiYodGhpcy5TYSYmdGhpcy5rYSgpLnNldEF0dHJpYnV0ZSgiYXJpYS1leHBhbmRlZCIsYT8idHJ1ZSI6ImZhbHNlIiksYT8odGhpcy5PYSYmXy5EdihbbmV3IF8uZm8odGhpcy5wb3B1cCwic2hvdyIpXSksdGhpcy5JYXx8KHRoaXMuSWE9ITAsXy5aZyhlLCJCVVl3VmIiKSxfLlpnKGUsZykpLHRoaXMuQmEoKT90aGlzLndhLmxpc3Rlbih0aGlzLnBvcHVwLChoLGspPT50aGlzLm9uRGlzbWlzcyhkLGgsayksWy4uLk8zYiw0XSx0aGlzLktjLCEwLCExLCgpPT57dGhpcy5zZXRWaXNpYmxlKGEsYixjLGQpfSx0aGlzLmdldERhdGEoImJiZW5hIikuc3RyaW5nKCl8fHRoaXMucm9vdC5nZXRBdHRyaWJ1dGUoImpzbmFtZSIpKTooZj1fLkEodGhpcy5kYXRhLDEwKT9QM2I6Xy5BKHRoaXMuZGF0YSwxMSk/UTNiOk8zYix0aGlzLndhLmxpc3Rlbih0aGlzLnBvcHVwLChoLGspPT50aGlzLm9uRGlzbWlzcyhkLGgsayksZix0aGlzLktjLCEwKSkpOnRoaXMud2EudW5saXN0ZW4odGhpcy5wb3B1cCksCnRoaXMudHJpZ2dlcihnLHt6YzpjfHxudWxsLEdGYTooYj9iLndoaWNofHxiLmtleUNvZGU6bnVsbCk9PT0zOD8hMDohMSxxbzpifSkpfWthKCl7cmV0dXJuIHRoaXMuSmEoIm9ZeHRRZCIpLmVsKCl9Z2V0UG9wdXAoKXtyZXR1cm4gdGhpcy5wb3B1cH1QYSgpe3JldHVybiB0aGlzLm9hfUFhKGEsYil7dGhpcy5vZmZzZXRYPWE7dGhpcy5vZmZzZXRZPWJ9QmEoKXt2YXIgYT10aGlzLmdldERhdGEoImJiZW5hIiksYj1hLnN0cmluZygiIil8fHRoaXMucm9vdC5nZXRBdHRyaWJ1dGUoImpzbmFtZSIpO3JldHVybiEoIWEuTGIoKXx8IWIpfUdhKCl7dGhpcy5CYSgpJiZ0aGlzLndhLm5iKCgpPT57dGhpcy5zZXRWaXNpYmxlKCEwKX0sdGhpcy5nZXREYXRhKCJiYmVuYSIpLnN0cmluZygpfHx0aGlzLnJvb3QuZ2V0QXR0cmlidXRlKCJqc25hbWUiKSl9fTtfLlB4LnByb3RvdHlwZS4kd2EkTmpDb2VjPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuR2F9OwpfLlB4LnByb3RvdHlwZS4kd2EkT09ZNTZjPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuQmF9O18uUHgucHJvdG90eXBlLiR3YSRydU5DRD1mdW5jdGlvbigpe3JldHVybiB0aGlzLlBhfTtfLlB4LnByb3RvdHlwZS4kd2EkcGNBa0tlPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZ2V0UG9wdXB9O18uUHgucHJvdG90eXBlLiR3YSR2QkFDNT1mdW5jdGlvbigpe3JldHVybiB0aGlzLmthfTtfLlB4LnByb3RvdHlwZS4kd2EkSVl0QnliPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZGlzbWlzc307Xy5QeC5wcm90b3R5cGUuJHdhJGVPMlpmZD1mdW5jdGlvbigpe3JldHVybiB0aGlzLmlzVmlzaWJsZX07Xy5QeC5wcm90b3R5cGUuJHdhJHhLcUYyYz1mdW5jdGlvbigpe3JldHVybiB0aGlzLnJlcG9zaXRpb259O18uUHgucHJvdG90eXBlLiR3YSRXRnJSRmI9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5FYX07Xy5QeC5wcm90b3R5cGUuJHdhJFdKV0VhZT1mdW5jdGlvbigpe3JldHVybiB0aGlzLlJhfTsKXy5QeC5wcm90b3R5cGUuJHdhJHVZVDJWYj1mdW5jdGlvbigpe3JldHVybiB0aGlzLnhpfTtfLlB4LnByb3RvdHlwZS4kd2EkazRJc2ViPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuVGJ9O18uanMoXy5OeCxfLlB4KTt2YXIgTzNiPVsxLDIsM10sUDNiPVsxLDNdLFEzYj1bMSwyXTsKXy52KCk7Cn1jYXRjaChlKXtfLl9EdW1wRXhjZXB0aW9uKGUpfQp0cnl7Cl8uUmxjPV8ua2MoIm5hYlBiYiIsW18uTnhdKTsKfWNhdGNoKGUpe18uX0R1bXBFeGNlcHRpb24oZSl9CnRyeXsKXy5LbGM9ISEoXy5PaVszOF0+PjE5JjEpO18uTGxjPSEhKF8uT2lbMzhdPj4yMCYxKTtfLk1sYz0hIShfLk9pWzM4XT4+MjImMSk7Xy5ObGM9ISEoXy5PaVszOF0+PjIzJjEpO18uT2xjPSEhKF8uT2lbMzhdPj4yNCYxKTtfLlBsYz0hIShfLk9pWzM4XT4+MjUmMSk7Xy5RbGM9ISEoXy5PaVszOF0+PjI5JjEpOwp9Y2F0Y2goZSl7Xy5fRHVtcEV4Y2VwdGlvbihlKX0KdHJ5ewpfLnUoIm5hYlBiYiIpOwp2YXIgU2xjPSEhKF8uT2lbMTNdPj4xNSYxKTt2YXIgVGxjPWNsYXNzIGV4dGVuZHMgXy5oc3tzdGF0aWMgUWEoKXtyZXR1cm57Y29udHJvbGxlcjp7Zm46e2pzbmFtZToiVjY4YmRlIixjdG9yOl8uUHh9fX19Y29uc3RydWN0b3IoYSl7c3VwZXIoKTt0aGlzLlNuPWEuY29udHJvbGxlci5mbi5KYSgieGwwN09iIikuZWwoKTt0aGlzLm1lbnU9Xy5PbyhhLmNvbnRyb2xsZXIuZm4sInhsMDdPYiIpO3RoaXMuYnV0dG9uPWEuY29udHJvbGxlci5mbi5WYSgiTGdic1NlIik7dGhpcy5wb3B1cD1hLmNvbnRyb2xsZXIuZm47dGhpcy5rYT1fLm5pKHRoaXMuZ2V0RGF0YSgiZmZwIiksITEpfXdhKGEpe3ZhciBiPVtdO18ueWUodGhpcy5TbikmJmIucHVzaChuZXcgXy5mbyh0aGlzLlNuLCJzaG93IikpO3ZhciBjPWEuZGF0YSYmYS5kYXRhLnpjO2MmJl8ueWUoYyl8fChjPW51bGwpOyhjfHxiLmxlbmd0aCkmJl8uRHYoYix7emM6Y3x8dm9pZCAwfSk7Yj1fLkZtKCJzZWFyY2hmb3JtIik7Yz10aGlzLnBvcHVwLmdldFBvcHVwKCk7dmFyIGQ9ZG9jdW1lbnQuYm9keS5xdWVyeVNlbGVjdG9yKCdbanNuYW1lPSJvRVEzeCJdJyk7ClNsYyYmXy5PbGMmJihkfHxiKT8oYT0wLGI/YT1iLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLmhlaWdodC0xNjpkJiYoYT1kLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLmhlaWdodC0xNiksXy5obihjLCJwb3NpdGlvbiIsImZpeGVkIiksXy5obihjLCJib3R0b20iLCIiKSxhJiZfLmhuKGMsInRvcCIsYCR7YX1weGApKTpiJiZiLmNvbnRhaW5zKGEudGFyZ2V0RWxlbWVudC5lbCgpKSYmYi5jbGFzc0xpc3QuY29udGFpbnMoIm1pbmlkaXYiKT8oXy5obihiLCJ6LWluZGV4IiwxRTMpLF8uaG4oYywicG9zaXRpb24iLCJmaXhlZCIpLHRoaXMucG9wdXAuQWEoMCxfLmhpKCkuc2Nyb2xsWSksdGhpcy5wb3B1cC5yZXBvc2l0aW9uKCkpOnRoaXMua2EmJihfLmhuKF8uTXgoKSwiei1pbmRleCIsMjAwMSksXy5obihjLCJwb3NpdGlvbiIsImZpeGVkIiksXy5obihjLCJib3R0b20iLGAke3RoaXMucG9wdXAua2EoKS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS5oZWlnaHR9cHhgKSxfLmhuKGMsInRvcCIsCiIiKSk7dGhpcy5tZW51LnRoZW4oZT0+e2lmKGUpe2UuZ2V0Um9vdCgpLmhiKCkuZm9jdXMoKTtmb3IobGV0IGYgb2YgZS55eWEpe2xldCBnPWYud24oKTtpZihmLmlzRW5hYmxlZCgpJiZfLnduKGcpKXtlLkJhKGcpO2UuR2EoZyk7YnJlYWt9fX19KX1vYShhKXt2YXIgYj1fLkZtKCJzZWFyY2hmb3JtIiksYz10aGlzLnBvcHVwLmdldFBvcHVwKCk7U2xjJiZfLk9sYz8oXy5obihjLCJwb3NpdGlvbiIsIiIpLF8uaG4oYywidG9wIiwiIikpOmImJmIuY29udGFpbnMoYS50YXJnZXRFbGVtZW50LmVsKCkpPyhfLmhuKGIsInotaW5kZXgiLCIiKSxfLmhuKGMsInBvc2l0aW9uIiwiIiksdGhpcy5wb3B1cC5BYSgwLDApKTp0aGlzLmthJiYoXy5obihfLk14KCksInotaW5kZXgiLCIiKSxfLmhuKGMsInBvc2l0aW9uIiwiIiksXy5obihjLCJib3R0b20iLCIiKSl9fTtUbGMucHJvdG90eXBlLiR3YSRnRGtmNGM9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5vYX07ClRsYy5wcm90b3R5cGUuJHdhJFkweTRjPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMud2F9O18uanMoXy5SbGMsVGxjKTsKXy52KCk7Cn1jYXRjaChlKXtfLl9EdW1wRXhjZXB0aW9uKGUpfQp0cnl7Cl8udSgiYWJkIik7CnZhciBzRms9ZnVuY3Rpb24oYSl7dmFyIGI9IiIsYz0yMTtmb3IobGV0IGQ9MDtkPGEubGVuZ3RoO2QrKylkJTQhPTMmJihiKz1TdHJpbmcuZnJvbUNoYXJDb2RlKGFbZF1eYyksYysrKTtyZXR1cm4gYn07Xy50Rms9c0ZrKFs5NywxMTksMTE1LDExMSwxMDddKTtfLnVGaz1zRmsoWzk3LDExOSwxMTUsMTExLDEwNywxMjNdKTtfLnZGaz1zRmsoWzExOCwxMTUsMTIxLDEwNywxMDgsMTI0LDEwNCwxMTksNjgsMTI3LDExNCwxMDUsMTE0XSk7Xy53Rms9c0ZrKFsxMDEsMTI2LDExOCwxMDIsMTE4LDEyNSwxMTgsMTA5LDEyNl0pO18ueEZrPXNGayhbMTE2LDExNiwxMTUsMTA4XSk7Xy55Rms9c0ZrKFsxMTMsMTE1LDk5LDEwN10pO18uekZrPXNGayhbMTEzLDExNSwxMTcsMTA3XSk7Xy5BRms9c0ZrKFs1OCwxMjcsMTIyLDEwMywxMjEsMTI2LDEyNyw5OCwxMDQsNTEsMTA5LDEyNCwxMTgsMTIzLDE1LDc2LDgxLDkwLDEzLDk1LDY3LDc2LDY0LDExOF0pOwpfLnYoKTsKfWNhdGNoKGUpe18uX0R1bXBFeGNlcHRpb24oZSl9CnRyeXsKXy5yRms9Xy5rYygiVERGa3llIixbXSk7Cn1jYXRjaChlKXtfLl9EdW1wRXhjZXB0aW9uKGUpfQp0cnl7Cl8udSgiVERGa3llIik7CnZhciBCRms9ZnVuY3Rpb24oYSl7dHlwZW9mIGE9PT0ic3RyaW5nIiYmKGE9Xy5GbShhKSk7aWYoYSlyZXR1cm4gXy5rbihhLCJkaXNwbGF5IikhPT0ibm9uZSImJl8ua24oYSwidmlzaWJpbGl0eSIpIT09ImhpZGRlbiImJmEub2Zmc2V0SGVpZ2h0PjB9LENGaz1mdW5jdGlvbihhKXt2YXIgYj0wO2ZvcihsZXQgYyBpbiBhKWlmKGFbY10uZSlpZihhW2NdLmIpYisrO2Vsc2UgcmV0dXJuITE7cmV0dXJuIGI+MH0sREZrPWZ1bmN0aW9uKGE9e30pe3ZhciBiPXt9O2JbXy55RmtdPXtlOiEhYVtfLnlGa10sYjohQkZrKF8udEZrKX07YltfLnpGa109e2U6ISFhW18uekZrXSxiOiFCRmsoXy51RmspfTtyZXR1cm4gYn0sRUZrPWZ1bmN0aW9uKGEpe3ZhciBiPVtdO2ZvcihsZXQgYyBpbiBhKWFbY10uZSYmYi5wdXNoKGAke2N9OmArKGFbY10uYj8iMSI6IjAiKSk7cmV0dXJuIGIuam9pbigiLCIpfSxGRms9ZnVuY3Rpb24oYSxiKXthPVN0cmluZyhhKTtiJiYoYSs9YCwke2J9YCk7Z29vZ2xlLmxvZyhfLndGaywKYSl9LEdGaz1mdW5jdGlvbihhLGIsYz0yKXtpZihjPDEpRkZrKDcsYik7ZWxzZXt2YXIgZD1uZXcgSW1hZ2U7ZC5vbmVycm9yPSgpPT57R0ZrKGEsYixjLTEpfTtkLnNyYz1hfX0sSEZrPWZ1bmN0aW9uKGE9e30pe2lmKGFbXy54RmtdJiZCRmsoXy52RmspKXthPURGayhhKTt2YXIgYj1FRmsoYSk7Q0ZrKGEpP0ZGaygxLCIwLCIrYik6RkZrKDAsYik7KDAsXy5tZikoKCk9PntHRmsoXy5BRmssImFhIil9KX19O18uanMoXy5yRmssY2xhc3MgZXh0ZW5kcyBfLmhze2NvbnN0cnVjdG9yKCl7c3VwZXIoKTtIRmsoZ29vZ2xlLnBtYy5hYmQpfX0pOwpfLnYoKTsKfWNhdGNoKGUpe18uX0R1bXBFeGNlcHRpb24oZSl9Cn0pKHRoaXMuX2hkKTsKLy8gR29vZ2xlIEluYy4K"}},"time_used":11,"timings":{"blocked":-1,"dns":0,"connect":0,"send":0,"wait":10,"receive":1,"ssl":0},"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"www.google.com/gen_204?atyp=csi\u0026ei=Y3pnarTELeimwPAPo6StkA4\u0026s=promo\u0026rt=hpbas.1073,hpbarr.1\u0026zx=1785166436899\u0026opi=89978449","fqdn":"www.google.com","domain":"google.com","tld":"com"},"ip":{"addr":"142.251.157.119","port":443,"asn":15169,"as":"GOOGLE","country":"United States","country_code":"US"},"is_navigation_request":false,"resource_type":"beacon","requested_by":"https://www.google.com/","date":"2026-07-27T15:33:56.903Z","timestamp":1785166436903,"http_version":"HTTP/3","security_state":"secure","security_info":{"cipher_suite":"TLS_AES_128_GCM_SHA256","key_group_name":"mlkem768x25519","signature_name":"ECDSA-P256-SHA256","protocol":"TLSv1.3","cert":{"subject":{"commonName":"*.google.com","organization":""},"issuer":{"commonName":"WR2","organization":"Google Trust Services"},"validity":{"start":"Mon, 29 Jun 2026 08:37:25 GMT","end":"Mon, 21 Sep 2026 08:37:24 GMT"},"fingerprint":{"sha1":"D9:DA:81:30:78:3E:9C:6B:5F:9D:18:52:0E:BE:6D:52:2F:FB:33:E0","sha256":"EA:E2:2D:87:EC:9C:D6:51:9D:59:E4:13:35:3B:97:14:E3:DA:58:2D:1C:69:19:41:54:94:25:C3:94:17:F3:0C"}}},"request":{"raw":"POST /gen_204?atyp=csi\u0026ei=Y3pnarTELeimwPAPo6StkA4\u0026s=promo\u0026rt=hpbas.1073,hpbarr.1\u0026zx=1785166436899\u0026opi=89978449 HTTP/1.1\r\nHost: www.google.com\r\nUser-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:134.0) Gecko/20100101 Firefox/134.0\r\nAccept: */*\r\nAccept-Language: en-US,en;q=0.9\r\nAccept-Encoding: gzip, deflate, br, zstd\r\nReferer: https://www.google.com/\r\nOrigin: https://www.google.com\r\nSec-GPC: 1\r\nConnection: keep-alive\r\nCookie: AEC=AdJVEauUsWHpfGAsUyeilL8EI9I2Tr9FfEzOqXuEJToXYpKe1KUK4km-Sg; __Secure-ENID=35.SE=Uz4O9fexpqtcg27rsCzqB3loBSC8a70Mqp_d18c3cjeU9uMWe4FHcPW1svFlK9taJqOPsqN9ZTMvrbcif3fGSVkGFj_PZtB1iqcUHQQ3k4McoRQh3TFmXwFvuBZDiuJbZsEWkIiLh9oQZqCS02Kcsd8T8KoXlZsObsNcGy15dXCeCexC1uy7XgZprqFrMQQA8uTOFbrZoEzmrPkKmCFOh5B5Jnu68ljyS8KtzuKzT_-dPSCoq1OOlqfaBgM\r\nSec-Fetch-Dest: empty\r\nSec-Fetch-Mode: no-cors\r\nSec-Fetch-Site: same-origin\r\nPriority: u=6\r\nContent-Length: 0\r\n\r\n","headers":null,"cookies":null,"method":"POST"},"response":{"raw":"HTTP/3 204 \r\ncontent-type: text/html; charset=UTF-8\r\ncontent-security-policy: object-src 'none';base-uri 'self';script-src 'nonce-yx5PNwV28_g0AsSX3FlXGw' 'strict-dynamic' 'report-sample' 'unsafe-eval' 'unsafe-inline' https: http:;report-uri https://csp.withgoogle.com/csp/gws/other\r\ncross-origin-opener-policy: same-origin-allow-popups; report-to=\"gws\"\r\nreport-to: {\"group\":\"gws\",\"max_age\":2592000,\"endpoints\":[{\"url\":\"https://csp.withgoogle.com/csp/report-to/gws/other\"}]}\r\ndate: Mon, 27 Jul 2026 15:33:56 GMT\r\nserver: gws\r\ncontent-length: 0\r\nx-xss-protection: 0\r\nx-frame-options: SAMEORIGIN\r\nalt-svc: h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000\r\n\r\n","headers":null,"cookies":null,"status_code":"204","status_text":"","fingerprints":[{"name":"Google Web Server","description":"","website":"https://en.wikipedia.org/wiki/Google_Web_Server","common_platform_enumeration":"cpe:2.3:a:google:web_server:*:*:*:*:*:*:*:*","icon":"Google.svg","categories":["Web servers"]}],"data":{"size":0,"size_decoded":653,"mime_type":"text/html; charset=UTF-8","magic":"","md5":"d41d8cd98f00b204e9800998ecf8427e","sha1":"da39a3ee5e6b4b0d3255bfef95601890afd80709","sha256":"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855","sha512":"cf83e1357eefb8bdf1542850d66d8007d620e4050b5715dc83f4a921d36ce9ce47d0d13c5d85f2b0ff8318d2877eec2f63b931bd47417a81a538327af927da3e","ssdeep":"","tlshash":"","first_seen":"0001-01-01T00:00:00Z","last_seen":"2026-08-16T23:46:43.370624Z","times_seen":17926730,"resource_available":true,"data":""}},"time_used":19,"timings":{"blocked":0,"dns":0,"connect":0,"send":0,"wait":19,"receive":0,"ssl":0},"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"www.google.com/xjs/_/js/k=xjs.hd.no.ZJX-0yQnO-M.2019.O/am=AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgQAAAAABBAAAAAAAAAAAAAAAYAAgAAAAAAAAAAAAAAAAAAIAAAQAAIAAAAAAAAAAAEAAAAAAABAAACAAAYAAAAQABBAAAAAMAAAAAAAAAAAAAAAAAAAAAgBAAAABCAADwBwZYAQAAAAAAAAASADAAAAAAAAAAFgAAIAEAAAAEQAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAABgAAAAAAKAAAAABAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAgAAACgAACAAAAgAAAAAAAAAAAAAAAACgAwAAAAAAAAAAAAAAAAAAAAAAAAAACAAAQIAAAAAAAAAAAAQACAAAAEAHQOABhhQUAAAAAAAAAAAAAAAAAAAAAAAAAAACLIBdSAEBEAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAyAkAAAAAAICF/d=0/dg=0/br=1/rs=ACT90oG_sTN876pKLsn8EAIC7HPAt8yW8Q/m=sy2f3,sy2f2,sy2f1,sy2f0,sy2ez,sy23b,sy23c,sy2ey,sy14w,sy2ex,sy1sn,sy2ew,sy1tk,sy1t1,sy2eu,syxo,r8E4Ze,sy2dr,sy2dq,nNxkYd,syyz,syz0,syyy,sy2ei,sy2eh,sy2eg,sy2ed,sy1y8,sy1x4,sy1x5,sy1up,sy1uj,sy1uf,sy2ef,sy2ee,sy1yy,sy1ub,sy1vc,sy1ue,sy1tz,sy1tw,sy1ty,sy1ua,syzg,syz8,nTNfhe,sy2dm,P10Owf,sy18a,gSZvdb,sy16z,sy16x,symk,sypn,CnSW2d,sy16t,sy16q,sy16l,sy16s,nRwWne,sy16w,fXO0xe?cb=121509378\u0026xjs=s4","fqdn":"www.google.com","domain":"google.com","tld":"com"},"ip":{"addr":"142.251.157.119","port":443,"asn":15169,"as":"GOOGLE","country":"United States","country_code":"US"},"is_navigation_request":false,"resource_type":"script","requested_by":"https://www.google.com/","date":"2026-07-27T15:33:57.189Z","timestamp":1785166437189,"http_version":"HTTP/3","security_state":"secure","security_info":{"cipher_suite":"TLS_AES_128_GCM_SHA256","key_group_name":"mlkem768x25519","signature_name":"ECDSA-P256-SHA256","protocol":"TLSv1.3","cert":{"subject":{"commonName":"*.google.com","organization":""},"issuer":{"commonName":"WR2","organization":"Google Trust Services"},"validity":{"start":"Mon, 29 Jun 2026 08:37:25 GMT","end":"Mon, 21 Sep 2026 08:37:24 GMT"},"fingerprint":{"sha1":"D9:DA:81:30:78:3E:9C:6B:5F:9D:18:52:0E:BE:6D:52:2F:FB:33:E0","sha256":"EA:E2:2D:87:EC:9C:D6:51:9D:59:E4:13:35:3B:97:14:E3:DA:58:2D:1C:69:19:41:54:94:25:C3:94:17:F3:0C"}}},"request":{"raw":"GET /xjs/_/js/k=xjs.hd.no.ZJX-0yQnO-M.2019.O/am=AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgQAAAAABBAAAAAAAAAAAAAAAYAAgAAAAAAAAAAAAAAAAAAIAAAQAAIAAAAAAAAAAAEAAAAAAABAAACAAAYAAAAQABBAAAAAMAAAAAAAAAAAAAAAAAAAAAgBAAAABCAADwBwZYAQAAAAAAAAASADAAAAAAAAAAFgAAIAEAAAAEQAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAABgAAAAAAKAAAAABAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAgAAACgAACAAAAgAAAAAAAAAAAAAAAACgAwAAAAAAAAAAAAAAAAAAAAAAAAAACAAAQIAAAAAAAAAAAAQACAAAAEAHQOABhhQUAAAAAAAAAAAAAAAAAAAAAAAAAAACLIBdSAEBEAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAyAkAAAAAAICF/d=0/dg=0/br=1/rs=ACT90oG_sTN876pKLsn8EAIC7HPAt8yW8Q/m=sy2f3,sy2f2,sy2f1,sy2f0,sy2ez,sy23b,sy23c,sy2ey,sy14w,sy2ex,sy1sn,sy2ew,sy1tk,sy1t1,sy2eu,syxo,r8E4Ze,sy2dr,sy2dq,nNxkYd,syyz,syz0,syyy,sy2ei,sy2eh,sy2eg,sy2ed,sy1y8,sy1x4,sy1x5,sy1up,sy1uj,sy1uf,sy2ef,sy2ee,sy1yy,sy1ub,sy1vc,sy1ue,sy1tz,sy1tw,sy1ty,sy1ua,syzg,syz8,nTNfhe,sy2dm,P10Owf,sy18a,gSZvdb,sy16z,sy16x,symk,sypn,CnSW2d,sy16t,sy16q,sy16l,sy16s,nRwWne,sy16w,fXO0xe?cb=121509378\u0026xjs=s4 HTTP/1.1\r\nHost: www.google.com\r\nUser-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:134.0) Gecko/20100101 Firefox/134.0\r\nAccept: */*\r\nAccept-Language: en-US,en;q=0.9\r\nAccept-Encoding: gzip, deflate, br, zstd\r\nReferer: https://www.google.com/\r\nSec-GPC: 1\r\nConnection: keep-alive\r\nCookie: AEC=AdJVEauUsWHpfGAsUyeilL8EI9I2Tr9FfEzOqXuEJToXYpKe1KUK4km-Sg; __Secure-ENID=35.SE=Y_fs7GGaQFs5VFS1Srk0O5HomBGnVvSvp_o-rK3Am89F7jST0q2gQCa-M2gCxRk_RBjJksMh8YwWZDFw6RfcbCeBYtqlTvos6MvDyL0vbheeaZHlJlF3BR2G5kruhoHre_VO9emvjcRgOiD0eMH_wgHEfSKU-zQvglvx9fcoejE2yypfhg2tPUPVvlmUpN-CV5a7002cW6ZslC01vtYrwve2XCNHFFzwCEs876fojdvGEQOKEx9xE4f1ASBTSBOWDkt2Ow\r\nSec-Fetch-Dest: script\r\nSec-Fetch-Mode: no-cors\r\nSec-Fetch-Site: same-origin\r\nPriority: u=1\r\nPragma: no-cache\r\nCache-Control: no-cache\r\n\r\n","headers":null,"cookies":null,"method":"GET"},"response":{"raw":"HTTP/3 200 \r\naccept-ranges: bytes\r\ncontent-encoding: br\r\ncontent-security-policy-report-only: require-trusted-types-for 'script'; report-uri https://csp.withgoogle.com/csp/gws-team\r\ncross-origin-resource-policy: cross-origin\r\ncross-origin-opener-policy: same-origin; report-to=\"gws-team\"\r\nreport-to: {\"group\":\"gws-team\",\"max_age\":2592000,\"endpoints\":[{\"url\":\"https://csp.withgoogle.com/csp/report-to/gws-team\"}]}\r\ncontent-length: 73121\r\nx-content-type-options: nosniff\r\nserver: sffe\r\nx-xss-protection: 0\r\ndate: Sat, 25 Jul 2026 02:37:12 GMT\r\nexpires: Sun, 25 Jul 2027 02:37:12 GMT\r\ncache-control: public, immutable, max-age=31536000\r\nlast-modified: Sat, 25 Jul 2026 01:57:35 GMT\r\ncontent-type: text/javascript; charset=UTF-8\r\nvary: Accept-Encoding, Origin\r\nage: 219405\r\nalt-svc: h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000\r\n\r\n","headers":null,"cookies":null,"status_code":"200","status_text":"","fingerprints":null,"data":{"size":197149,"size_decoded":73950,"mime_type":"text/javascript; charset=UTF-8","magic":"JavaScript source, ASCII text, with very long lines (4075)","md5":"1c5d6b947bd4133ed3ed2e11910422ef","sha1":"ed9c103e12225bdcd6345b216e0c73854883ecf4","sha256":"0db255b243179e89fa538395e203c9ccaf27db32cfb8ae8eda58b61f7bd3442c","sha512":"89f4713a107f302d331fee3dc06c6822d73e2cdb267815a3350a04db18b6456e5377c0b372567e6468ec4a43b507de035d0cc26a490a0e21dbf8ef7308f6db5e","ssdeep":"6144:F/6MI/kk1JyqtKrlC7LmQhIJFMS/4y/PIwnpjSsMUP/j:cGQhsh/4y/gsdjM+/j","tlshash":"e3146bdd75a371226503f5a4847f024ab069e7a4f04a402cfed8daf5e8b598805f3f7a","first_seen":"2026-07-25T06:38:25.962406Z","last_seen":"2026-07-27T15:34:29.325888Z","times_seen":6,"resource_available":true,"data":"dGhpcy5faGQ9dGhpcy5faGR8fHt9OyhmdW5jdGlvbihfKXt2YXIgd2luZG93PXRoaXM7CnRyeXsKXy5KbGY9ZnVuY3Rpb24oYSxiKXtyZXR1cm4gXy5maChhLDEsYil9O18uS2xmPWZ1bmN0aW9uKGEsYil7cmV0dXJuIF8uZmgoYSwyLGIpfTtfLkxsZj1jbGFzcyBleHRlbmRzIF8ubHtjb25zdHJ1Y3RvcihhKXtzdXBlcihhKX1Kaigpe3JldHVybiBfLnQodGhpcywxKX19O18uTWxmPV8uWWIoWzAsXy5FLC0xXSk7Cn1jYXRjaChlKXtfLl9EdW1wRXhjZXB0aW9uKGUpfQp0cnl7Cl8uSWxmPVswLF8uRSwtMSxfLkcsXy5ELDEsXy5ELC0xLF8uVGwsXy5EXTsKfWNhdGNoKGUpe18uX0R1bXBFeGNlcHRpb24oZSl9CnRyeXsKXy5IbGY9Xy5rYygicjhFNFplIixbXy5DWmFdKTsKfWNhdGNoKGUpe18uX0R1bXBFeGNlcHRpb24oZSl9CnRyeXsKXy5za2Y9ZnVuY3Rpb24oKXtyZXR1cm57b25DaHVua1dyaXR0ZW4oYSxiKXtpZihhLm9uQ2h1bmtXcml0dGVuKWEub25DaHVua1dyaXR0ZW4oYil9LG9uTmV3U3VidHJlZXMoYSxiKXtpZihhLm9uTmV3U3VidHJlZXMpYS5vbk5ld1N1YnRyZWVzKGIpfSxvdXRwdXQoKXt9fX07dmFyIHRrZjsKdGtmPWFzeW5jIGZ1bmN0aW9uKGEsYixjKXt2YXIgZD0oMCxfLk1mKSgpLGU9ZCgpO2Q9ZCgxKTt0cnl7aWYoYiBpbnN0YW5jZW9mIFJlYWRhYmxlU3RyZWFtKXZhciBmPWI7ZWxzZXt2YXIgZyxoLGs7aWYoKChnPWIuaGVhZGVycy5nZXQoIkNvbnRlbnQtVHlwZSIpKT09bnVsbD92b2lkIDA6KGg9Zy5zcGxpdCgiOyIsMikpPT1udWxsP3ZvaWQgMDooaz1oWzBdKT09bnVsbD92b2lkIDA6ay50b0xvd2VyQ2FzZSgpKSE9PSJ0ZXh0L2h0bWwiKXRocm93IEVycm9yKCJLbmAiK2IudXJsKTtpZihiLnVybCYmKG5ldyBVUkwoYi51cmwpKS5vcmlnaW4hPT1sb2NhdGlvbi5vcmlnaW4pdGhyb3cgRXJyb3IoIkxuYCIrYi51cmwpO2Y9Yi5ib2R5LnBpcGVUaHJvdWdoKG5ldyBUZXh0RGVjb2RlclN0cmVhbSl9Zm9yKGEucmVhZGVyPWYuZ2V0UmVhZGVyKCk7Oyl7bGV0IHt2YWx1ZTptLGRvbmU6bn09ZChhd2FpdCBlKGEucmVhZGVyLnJlYWQoKSkpO2lmKG58fGEuY2FuY2VsZWQpYnJlYWs7aWYobSBpbnN0YW5jZW9mCl8ucGMpe2MobSk7Y29udGludWV9bGV0IHA9Xy55KG0pO2MocCl9fWZpbmFsbHl7ZSgpfX07Cl8udWtmPWNsYXNze2NvbnN0cnVjdG9yKGE9W10pe3RoaXMucGx1Z2lucz1hO3RoaXMuZmluaXNoZWQ9dGhpcy5jYW5jZWxlZD0hMTt0aGlzLmthPV8uc2tmKCk7dGhpcy5wbHVnaW5zPWF9YXN5bmMgcmVuZGVyKGEpe3ZhciBiPSgwLF8uTWYpKCksYz1iKCk7Yj1iKDEpO3RyeXtsZXQgZD1kb2N1bWVudC5pbXBsZW1lbnRhdGlvbi5jcmVhdGVIVE1MRG9jdW1lbnQoIiIpO2ZvcihsZXQgZSBvZiB0aGlzLnBsdWdpbnMpaWYoZS5vblJlbmRlclN0YXJ0ZWQpZS5vblJlbmRlclN0YXJ0ZWQoZCk7ZC5vcGVuKCk7Zm9yKGxldCBlIG9mIHRoaXMucGx1Z2lucyl7bGV0IGYsZzsoZz0oZj1lKS5vbkRvY3VtZW50T3Blbik9PW51bGx8fGcuY2FsbChmLGQpfWIoYXdhaXQgYyh0a2YodGhpcyxhLGU9PntpZighdGhpcy5jYW5jZWxlZCl7Zm9yKGxldCBmIG9mIHRoaXMucGx1Z2lucyl0cnl7bGV0IGcsaDsoaD0oZz1mKS5vbkZpcnN0Qnl0ZSk9PW51bGx8fGguY2FsbChnLGQpO2Yub25GaXJzdEJ5dGU9CnZvaWQgMH1jYXRjaChnKXt9Xy5RamEoZCxlKTtmb3IobGV0IGYgb2YgdGhpcy5wbHVnaW5zKXRyeXt0aGlzLmthLm9uQ2h1bmtXcml0dGVuKGYsZCl9Y2F0Y2goZyl7fX19KSkpO2QuY2xvc2UoKTtpZighdGhpcy5jYW5jZWxlZCl7dGhpcy5maW5pc2hlZD0hMDtmb3IobGV0IGUgb2YgdGhpcy5wbHVnaW5zKXRyeXtsZXQgZixnOyhnPShmPWUpLm9uUmVuZGVyRmluaXNoZWQpPT1udWxsfHxnLmNhbGwoZixkKX1jYXRjaChmKXt9dGhpcy5rYS5vdXRwdXQoKX19ZmluYWxseXtjKCl9fWNhbmNlbCgpe2lmKCF0aGlzLmZpbmlzaGVkKXt0aGlzLmNhbmNlbGVkPSEwO3ZhciBhOyhhPXRoaXMucmVhZGVyKT09bnVsbHx8YS5jYW5jZWwoKS5jYXRjaCgoKT0+e30pO2ZvcihhPTA7YTx0aGlzLnBsdWdpbnMubGVuZ3RoO2ErKyl7bGV0IGIsYzsoYz0oYj10aGlzLnBsdWdpbnNbYV0pLm9uU3RyZWFtQ2FuY2VsZWQpPT1udWxsfHxjLmNhbGwoYil9fX19Owp9Y2F0Y2goZSl7Xy5fRHVtcEV4Y2VwdGlvbihlKX0KdHJ5ewpfLnJrZj1TeW1ib2woIkpuIik7Cn1jYXRjaChlKXtfLl9EdW1wRXhjZXB0aW9uKGUpfQp0cnl7CnZhciBFcWUsRnFlO0VxZT1mdW5jdGlvbigpe3ZhciBhPWRvY3VtZW50O18udnphKGEpO3JldHVybiBhLl9fZ3dicH07Xy5IcWU9ZnVuY3Rpb24oKXtGcWV8fChGcWU9RXFlKCkudGhlbihhPT5fLkdxZT1hKSk7cmV0dXJuIEZxZX07Xy5IcWUoKTsKfWNhdGNoKGUpe18uX0R1bXBFeGNlcHRpb24oZSl9CnRyeXsKdmFyIElxZT1FdmVudDtfLkpxZT1jbGFzcyBleHRlbmRzIElxZXtjb25zdHJ1Y3RvcihhKXtzdXBlcihhLHtidWJibGVzOiEwfSk7Xy5HcWUuYWRkRXZlbnQoYSl9fTsKfWNhdGNoKGUpe18uX0R1bXBFeGNlcHRpb24oZSl9CnRyeXsKdmFyIHZrZix3a2YsemtmLEFrZixCa2YsQ2tmLEZrZixFa2YsR2tmLEhrZixMa2YsTWtmLE9rZixQa2YsVGtmLFVrZiwka2YsWGtmLFZrZixXa2YsU2tmLGFsZixibGYsUmtmLHlrZixjbGYseGtmO3ZrZj1mdW5jdGlvbihhKXtpZighKGEgaW5zdGFuY2VvZiBIVE1MU2NyaXB0RWxlbWVudCl8fGEuZGF0YXNldC5hc3luY0V4ZWN1dGVkKXJldHVybiExO3ZhciBiPWEudHlwZTtyZXR1cm4hYnx8Yj09PSJ0ZXh0L2phdmFzY3JpcHQifHxiPT09Im1vZHVsZSJ8fGEuaGFzQXR0cmlidXRlKCJkYXRhLXNwZWN1bGF0aW9uLXJ1bGVzIil9O3drZj1mdW5jdGlvbihhKXtyZXR1cm4gYj0+e3ZhciBjPVtdO2ZvcihsZXQgZD0wO2Q8YS5sZW5ndGg7ZCsrKXtsZXQgZT1hW2RdO3RyeXtsZXQgZj1lKGIpO2YmJmMucHVzaChmKX1jYXRjaChmKXt9fXJldHVybiBjWzBdfHxudWxsfX07CnprZj1mdW5jdGlvbihhLGIpe3ZhciBjPXdrZihhKSxkPW51bGw7cmV0dXJue29uRG9jdW1lbnRPcGVuKGUpe2Q9bmV3IHhrZihlLGMsYil9LG9uQ2h1bmtXcml0dGVuKCl7dmFyIGU7KGU9ZCk9PW51bGx8fHlrZihlKX0sb25SZW5kZXJGaW5pc2hlZCgpe3ZhciBlOyhlPWQpIT1udWxsJiYoZS5jbG9zZWQ9ITAseWtmKGUpKX19fTtBa2Y9ZnVuY3Rpb24oYSxiKXt2YXIgYz1uZXcgTWFwO3JldHVybntvbkRvY3VtZW50T3BlbihkKXtjLnNldChkLG5ldyB4a2YoZCxhLGIpKX0sb25DaHVua1dyaXR0ZW4oZCl7dmFyIGU7KGU9Yy5nZXQoZCkpPT1udWxsfHx5a2YoZSl9LG9uUmVuZGVyRmluaXNoZWQoKXtjLmZvckVhY2goZD0+e2QuY2xvc2VkPSEwO3lrZihkKX0pfX19OwpCa2Y9ZnVuY3Rpb24oYSl7YT1hLmhlYWRlcnMuZ2V0KCJYLU1hZGwiKTtpZighYSl0aHJvdyBFcnJvcigiTm4iKTt2YXIgYjthPShiPWEubWF0Y2goLyg/Ol58LFxzKillaWQ9KFteXHMsXSspLykpPT1udWxsP3ZvaWQgMDpiWzFdO2lmKCFhKXRocm93IEVycm9yKCJPbiIpO3JldHVybiBhfTtDa2Y9YXN5bmMgZnVuY3Rpb24oYSxiPSgpPT4oe30pKXt2YXIgYz0oMCxfLk1mKSgpLGQ9YygpO2M9YygxKTt0cnl7bGV0IHt2YWx1ZTplLGRvbmU6Zn09Yyhhd2FpdCBkKGEucmVzb3VyY2VzLm5leHQoKSkpLHtkb25lOmd9PWMoYXdhaXQgZChhLnJlc291cmNlcy5uZXh0KCkpKTtyZXR1cm4hZiYmZSYmZz9uZXcgUmVzcG9uc2UoZS5ib2R5LHtoZWFkZXJzOmIoYSl9KTpudWxsfWZpbmFsbHl7ZCgpfX07CkZrZj1mdW5jdGlvbihhLGIpe2lmKCEoYS5vayYmYS5ib2R5JiZEa2YuaW5jbHVkZXMoRWtmKGEpKSkpcmV0dXJuIGIua2EmJl8uRDRiKGIpLGE7dmFyIFtjLGRdPWEuYm9keS50ZWUoKTsoYXN5bmMgZnVuY3Rpb24oZSl7dmFyIGY9KDAsXy5NZikoKSxnPWYoKTtmPWYoMSk7dHJ5e2xldCBrO3RyeXtrPWYoYXdhaXQgZygobmV3IFJlc3BvbnNlKGUpKS50ZXh0KCkpKX1jYXRjaChtKXtmKCk7Yi5rYSYmXy5ENGIoYik7cmV0dXJufWlmKGsuaW5kZXhPZignanNuYW1lPSJNVU5nemYiJykhPT0tMSliLmthJiZfLkQ0YihiKTtlbHNle2xldCBtPW5ldyBfLnk0YjthOnt0cnl7dmFyIGg9QmtmKGEpO2JyZWFrIGF9Y2F0Y2gobil7fWg9dm9pZCAwfShlPWgpJiZfLmZoKG0sMSxlKTtfLk42YihiLHtoZWFkZXI6bSxyZXNvdXJjZXM6Xy5wNGIoW3ttZXRhZGF0YToobmV3IF8ueDRiKS5BYygyKSxib2R5Omt9XSl9KX19ZmluYWxseXtnKCl9fSkoZCk7cmV0dXJuIG5ldyBSZXNwb25zZShjLGEpfTsKRWtmPWZ1bmN0aW9uKGEpe3ZhciBiLGMsZDtyZXR1cm4oKGI9YS5oZWFkZXJzLmdldCgiQ29udGVudC1UeXBlIikpPT1udWxsP3ZvaWQgMDooYz1iLnNwbGl0KCI7IiwyKSk9PW51bGw/dm9pZCAwOihkPWNbMF0pPT1udWxsP3ZvaWQgMDpkLnRvTG93ZXJDYXNlKCkpfHwiIn07R2tmPWZ1bmN0aW9uKGEpe3ZhciBiLGMsZD0oYj13aW5kb3cuZ29vZ2xlKT09bnVsbD92b2lkIDA6KGM9Yi50aW1lcnMpPT1udWxsP3ZvaWQgMDpjLmxvYWQ7ZCYmKGI9ZC5lLmZvbHIsZ29vZ2xlLmMuZSgibG9hZCIsImZvbHIiLGI/YCR7Yn0sJHthfWA6YSkpfTsKSGtmPWZ1bmN0aW9uKGEsYil7aWYoKHdpbmRvdy5fY3NjIT09ImFnc2EifHwhd2luZG93Ll9jc2hpZCkmJl8udG1hKCkpe2xldCBjLGQsZT0oYz13aW5kb3cuZ29vZ2xlKT09bnVsbD92b2lkIDA6KGQ9Yy50aW1lcnMpPT1udWxsP3ZvaWQgMDpkLmxvYWQ7aWYoKGU9PW51bGw/dm9pZCAwOmUucXR0KSE9PTImJigoYj1iJiYoZT09bnVsbD92b2lkIDA6ZS5xc3VidHMpKXx8KGI9KGE9YS5tYXRjaChSZWdFeHAoIls/Jl1xc3VidHM9KFxcZCspIikpKSYmTnVtYmVyKGFbMV0pKSxhPWIsYT4wKSlyZXR1cm4gYX19O18uS2tmPWZ1bmN0aW9uKGEpe3JldHVybiBuZXcgSWtmKE9iamVjdC5hc3NpZ24oe30sYSx7aWQ6dm9pZCAwLGNidmk6W10sY2JmZDpbXSxjYnJuczpKa2YsdWxsY2I6KCk9Pnt9fSkpfTtMa2Y9ZnVuY3Rpb24oYSl7cmV0dXJue29uTmV3U3VidHJlZXMoYil7Zm9yKGxldCBjIG9mIGIpYS5NamEoYyl9fX07Ck1rZj1mdW5jdGlvbihhKXt2YXIgYj17fSxjPSJSQyI7cmV0dXJuIGQ9Pnt2YXIgZT1kLmVsZW1lbnQsZj1lLm1hdGNoZXMoImhlYWQ+Kixib2R5PioiKTtpZihlLnRhZ05hbWU9PT0iU1RZTEUiKXJldHVybntjTzpkb2N1bWVudC5oZWFkLG9wZXJhdGlvbjoiQUMifTtpZihlLnRhZ05hbWU9PT0iU0NSSVBUIilyZXR1cm4gZnx8ZC5RZGE/e29wZXJhdGlvbjoiUyIsY086YSxCMzohIWIubXhkfTpudWxsO2E6e2xldCBrPWUuZ2V0QXR0cmlidXRlKCJkYXRhLXRhcmdldC1jb250YWluZXItaWQiKTtlLnJlbW92ZUF0dHJpYnV0ZSgiZGF0YS10YXJnZXQtY29udGFpbmVyLWlkIik7aWYoayl7ZD1lLmdldEF0dHJpYnV0ZSgiZGF0YS10YXJnZXQtc2NvcGUtaWQiKTtlLnJlbW92ZUF0dHJpYnV0ZSgiZGF0YS10YXJnZXQtc2NvcGUtaWQiKTt2YXIgZz1hO2QmJihnPWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoYFtkYXRhLXNjb3BlLWlkPSIke2R9Il1gKSxnPWdbZy5sZW5ndGgtMV0pO2lmKGcpe3ZhciBoPQpgW2RhdGEtY29udGFpbmVyLWlkPSIke2t9Il1gO2c9Zy5tYXRjaGVzKGgpP2c6Zy5xdWVyeVNlbGVjdG9yKGgpfWVsc2UgZz1udWxsO2lmKCFnKXtpZihrPT09ZS5nZXRBdHRyaWJ1dGUoImRhdGEtY29udGFpbmVyLWlkIikpe2Q9ZTticmVhayBhfXRocm93IEVycm9yKCJRbmAiK2srImAiKyhkP2Agd2l0aGluIHNjb3BlICR7ZH0uYDoiLiIpKTt9Z1tfLnJrZl09bnVsbDtkPWd9ZWxzZSBkPWFbXy5ya2ZdPW51bGx9aWYoZCYmZCE9PWUpc3dpdGNoKGY9ZS5nZXRBdHRyaWJ1dGUoImRhdGEtc24tb3AiKXx8IjAiLGUucmVtb3ZlQXR0cmlidXRlKCJkYXRhLXNuLW9wIiksZil7Y2FzZSAiMCI6cmV0dXJue2NPOmQsb3BlcmF0aW9uOiJBQyIsQjM6ITB9O2Nhc2UgIjIiOnJldHVybntjTzpkLG9wZXJhdGlvbjoiQVUiLEIzOiEwfTtkZWZhdWx0OnJldHVybntjTzpkLG9wZXJhdGlvbjoiUkMiLEIzOiEwfX1yZXR1cm4gZj8oZT1jLGM9IkFDIix7Y086YSxvcGVyYXRpb246ZSxCMzohMH0pOm51bGx9fTsKT2tmPWZ1bmN0aW9uKCl7YXN5bmMgZnVuY3Rpb24gYSgpe3ZhciBnPSgwLF8uTWYpKCksaD1nKCk7Zz1nKDEpO3RyeXtlfHwoZT0hMCxnKGF3YWl0IGgoXy5IcWUoKSkpLGY9bmV3IE5rZixyZXF1ZXN0QW5pbWF0aW9uRnJhbWUoYikpfWZpbmFsbHl7aCgpfX1mdW5jdGlvbiBiKCl7ZT0hMTtmLmRldGFpbD1kO3ZhciBnPWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoIltkYXRhLXN0cmVhbS1jb250YWluZXJdIik7Zm9yKGxldCBoIG9mIGcpaC5kaXNwYXRjaEV2ZW50KGYpfWZ1bmN0aW9uIGMoKXtkPSEwO2EoKX12YXIgZD0hMSxlPSExLGY7cmV0dXJue29uQ2h1bmtXcml0dGVuOmEsb25SZW5kZXJGaW5pc2hlZDpjLG9uU3RyZWFtQ2FuY2VsZWQ6Y319OwpfLlFrZj1mdW5jdGlvbihhLGIsYz17fSl7Yz1PYmplY3QuYXNzaWduKHt9LHtERGE6MSxXbmI6ITF9LGMpO3ZhciBkPW5ldyBfLlA1YihhKSxlPV8uRTViKGEpLGY9Xy5ReChhKTthPV8uajRiKGEpO2I9Xy51NWIoYik7Yi51cmxQYXJhbXN8fChiLnVybFBhcmFtcz1uZXcgTWFwKTtpZighYi51cmxQYXJhbXMuZ2V0KCJfZm10Iikpe3ZhciBnPWIudXJsUGFyYW1zLGg9Zy5zZXQ7YTp7dmFyIGs9Yy5ERGE7c3dpdGNoKGspe2Nhc2UgMTprPSJhZGwiO2JyZWFrIGE7Y2FzZSAyOms9Im1hZGwiO2JyZWFrIGE7Y2FzZSAzOms9Im1hZGwiO2JyZWFrIGE7ZGVmYXVsdDpfLmViKGssIlVuc3VwcG9ydGVkIEFETCBtb2RlIil9az12b2lkIDB9aC5jYWxsKGcsIl9mbXQiLGspfWE6e2c9Yy5ERGE7c3dpdGNoKGcpe2Nhc2UgMTpnPW51bGw7YnJlYWsgYTtjYXNlIDI6Zz0ic2VwIjticmVhayBhO2Nhc2UgMzpnPSJlZCI7YnJlYWsgYTtkZWZhdWx0Ol8uZWIoZywiVW5zdXBwb3J0ZWQgQURMIG1vZGUiKX1nPQp2b2lkIDB9ZyYmYi51cmxQYXJhbXMuc2V0KCJfbWFkbyIsZyk7cmV0dXJuIF8uRGcoUGtmKGQsZSxmLGEsYixjKSl9OwpQa2Y9YXN5bmMgZnVuY3Rpb24oYSxiLGMsZCxlLGYpe3ZhciBnPSgwLF8uTWYpKCksaD1nKCk7Zz1nKDEpO3RyeXtsZXQgSj1uZXcgXy5SbygiYXN5bmMiLCJjc2kiLHZvaWQgMCx7SHdiOiExfSksTj0oXy5HRmE/Zyhhd2FpdCBoKF8udzViKCkpKTpfLnI1Yi5HaSgpKS5US2EuYnVpbGQoYixjLGQsXy55NWIoYS5lbGVtZW50LGUudHJpZ2dlciksZSxhLmVsZW1lbnQuaWQsITEpLFE9Xy5La2Yoe2FzdHlwOmIuanQsdDphLmVsZW1lbnR9KTt2YXIgaztpZihrPWUuR3Qpe3ZhciBtPWUuR3Qsbj1uZXcgUmtmO24uY2FjaGVLZXk9bS5jYWNoZUtleTt2YXIgcD1uLnNldFByaW9yaXR5KG0ucHJpb3JpdHkpO3ZhciByPWUuR3QuY2FjaGVLZXk7YTp7dmFyIHg9Zi5ERGE7c3dpdGNoKHgpe2Nhc2UgMTp2YXIgej0iIjticmVhayBhO2Nhc2UgMjp6PSJfc2VwIjticmVhayBhO2Nhc2UgMzp6PSJfZWQiO2JyZWFrIGE7ZGVmYXVsdDpfLmViKHgsIlVuc3VwcG9ydGVkIEFETCBtb2RlIil9ej12b2lkIDB9cC5jYWNoZUtleT0Kcit6O2s9cC5idWlsZCgpfWI9azt0cnl7dmFyIEI9RGF0ZS5ub3coKTtUTShRLCJpcGYiLEIpO2xldCBaPWcoYXdhaXQgaChTa2YoTixiLFEsZikpKTtnKGF3YWl0IGgoVGtmKFosYSxRLGYpKSl9Y2F0Y2goWil7ZygpO2E9Sjt2YXIgSD1lLnVtYTtfLlFvKGEsImZ0Iik7SCYmSChhKTthLmxvZygpO3Rocm93IFo7fXJldHVybiEwfWZpbmFsbHl7aCgpfX07VGtmPWFzeW5jIGZ1bmN0aW9uKGEsYixjLGQpe3ZhciBlPSgwLF8uTWYpKCksZj1lKCk7ZT1lKDEpO3RyeXtpZighYS5vayl0aHJvdyBFcnJvcigiYm9gIithLnN0YXR1cysiYCIrYS5zdGF0dXNUZXh0KTt2YXIgZz1kLkREYTtpZihnPT09Mnx8Zz09PTMpe2xldCBrPUJrZihhKTtiLmVsZW1lbnQuc2V0QXR0cmlidXRlKCJlaWQiLGspfWxldCBoPVVrZihiLGMsZCk7ZShhd2FpdCBmKGgucmVuZGVyKGEpKSl9ZmluYWxseXtmKCl9fTsKVWtmPWZ1bmN0aW9uKGEsYix7RERhOmMsV25iOmR9KXt2YXIgZT1hLmVsZW1lbnQsZj1Wa2YoYS5qdCksZz1Na2YoZSksaD1wPT5mKHApfHxnKHApLGs9KCk9PkFrZihoLHtNamE6cD0+e2IuTWphKHApfX0pLG09KCk9PnprZihbaF0se01qYTpwPT57dmFyIHIseD1wLmdldEF0dHJpYnV0ZSgiZWlkIil8fCgocj1wLnF1ZXJ5U2VsZWN0b3IoIltlaWRdIikpPT1udWxsP3ZvaWQgMDpyLmdldEF0dHJpYnV0ZSgiZWlkIikpO3gmJmUuc2V0QXR0cmlidXRlKCJlaWQiLHgpO2IuTWphKHApfX0pO2Q9Wy4uLihkP1tXa2YoZSldOltdKV07dmFyIG49W1hrZigpLE9rZigpLGJdO3N3aXRjaChjKXtjYXNlIDE6cmV0dXJuIG5ldyBfLnVrZihbbSgpXS5jb25jYXQoWy4uLm4sLi4uZF0pKTtjYXNlIDI6cmV0dXJuIG5ldyBZa2YoW2soKV0uY29uY2F0KFsuLi5uLC4uLmRdKSk7Y2FzZSAzOnJldHVybiBuZXcgWmtmKFsuLi5uLExrZihiKV0sZSxhLmp0KTtkZWZhdWx0Ol8uZWIoYywiVW5zdXBwb3J0ZWQgQURMIG1vZGUiKX19Owoka2Y9ZnVuY3Rpb24oYSxiKXtfLlZlKGEse0RmOmJ9KX07WGtmPWZ1bmN0aW9uKCl7cmV0dXJue29uUmVuZGVyRmluaXNoZWQoKXtfLm50YSghMSl9fX07VmtmPWZ1bmN0aW9uKGEpe3JldHVybiBiPT57dmFyIGM9Yi5lbGVtZW50LmRhdGFzZXQubW9kZWxEYXRhO2lmKCFjKXJldHVybiBudWxsO18uTDViKGMsYSk7cmV0dXJue2NPOmIuekNhLmJvZHksb3BlcmF0aW9uOiJYIn19fTtXa2Y9ZnVuY3Rpb24oYSl7dmFyIGI9ITEsYz0oKT0+eyFiJiZhLnF1ZXJ5U2VsZWN0b3IoIltqc25hbWU9Y29GU3hlXSIpJiYoXy5ZeGEoYSxkPT5kLmhhc0F0dHJpYnV0ZSgiZGF0YS1ob3N0LXdpei1jb250cmFjdC1uYW1lIikpLGI9ITApfTtyZXR1cm57b25DaHVua1dyaXR0ZW46YyxvblJlbmRlckZpbmlzaGVkOmN9fTsKU2tmPWFzeW5jIGZ1bmN0aW9uKHt1cmw6YSxqdDpiLG1WYTpjLHVybFBhcmFtczpkfSxlLGYse0REYTpnfSl7dmFyIGg9KDAsXy5NZikoKSxrPWgoKTtoPWgoMSk7dHJ5e2lmKCFfLkJGYXx8ZT09bnVsbHx8IWUuY2FjaGVLZXkpcmV0dXJuIGF3YWl0IGZldGNoKGEpO2xldCB7UXphOm4sTk1iOnB9PWgoYXdhaXQgayhfLk82YihlLGIsYyxkKSkpO2lmKCFuKXJldHVybiBhd2FpdCBmZXRjaChhKTtpZihwKXthOntzd2l0Y2goZyl7Y2FzZSAxOnZhciBtPWFsZjticmVhayBhO2Nhc2UgMjptPWJsZjticmVhayBhO2Nhc2UgMzptPWJsZjticmVhayBhO2RlZmF1bHQ6Xy5lYihnLCJVbnN1cHBvcnRlZCBBREwgbW9kZSIpfW09dm9pZCAwfWxldCByPWgoYXdhaXQgayhDa2YocCxtKSkpO2lmKHIpcmV0dXJuIGYuU2FhLmlwZnJ8fChUTShmLCJpcGZyIixEYXRlLm5vdygpKSxUTShmLCJ0dGNoIixEYXRlLm5vdygpKSkscn10cnl7bGV0IHI9aChhd2FpdCBrKGZldGNoKGEpKSk7cmV0dXJuIEZrZihyLApuKX1jYXRjaChyKXt0aHJvdyBoKCksbi5rYSYmXy5ENGIobikscjt9fWZpbmFsbHl7aygpfX07YWxmPWZ1bmN0aW9uKCl7cmV0dXJueyJjb250ZW50LXR5cGUiOiJ0ZXh0L2h0bWwifX07YmxmPWZ1bmN0aW9uKGEpe3JldHVybnsiY29udGVudC10eXBlIjoidGV4dC9wbGFpbiIsIlgtTWFkbCI6YGVpZD0ke18udChhLmhlYWRlciwxKX1gfX07UmtmPWNsYXNze3NldFByaW9yaXR5KGEpe3RoaXMucHJpb3JpdHk9YTtyZXR1cm4gdGhpc31idWlsZCgpe2lmKCF0aGlzLmNhY2hlS2V5KXRocm93IEVycm9yKCJPZyIpO3JldHVybiBuZXcgXy5SeCh0aGlzLmNhY2hlS2V5LHtwcmlvcml0eTp0aGlzLnByaW9yaXR5fSl9fTsKeWtmPWZ1bmN0aW9uKGEpe3ZhciBiOyhiPWEub2EpPT1udWxsfHx5a2YoYik7ZG97bGV0IGs7aWYoKGs9YS5rYSk9PW51bGw/MDprLkIzKWlmKGI9ISghYS5pdGVyYXRvci5uZXh0Tm9kZSgpfHwhYS5pdGVyYXRvci5wcmV2aW91c05vZGUoKSksYS5jbG9zZWR8fGIpYS51WGEoKTtlbHNlIGJyZWFrO2lmKCFhLmthKXtiPWEuaXRlcmF0b3IubmV4dE5vZGUoKTtpZighYilicmVhaztpZihiLm5vZGVUeXBlIT09MSl7bGV0IG07KG09YS53YSk9PW51bGx8fG0uYXBwZW5kQ2hpbGQoYik7Y29udGludWV9dmFyIGM9YS5CYSh7ekNhOmRvY3VtZW50LFFkYTphLlFkYSxlbGVtZW50OmJ9KTtpZihjKXtsZXQgbTsobT1jLlphYik9PW51bGx8fG0uY2FsbChjKTtsZXQgbixwOyhwPShuPWEub3B0aW9ucykuWmFiKT09bnVsbHx8cC5jYWxsKG4sYixjKTthLmthPWM7YS5BYT1ifWVsc2V7YS53YSYmKGEud2EuYXBwZW5kQ2hpbGQoYiksY2xmKGEsYixudWxsKSk7aWYoYS5RZGEpe2xldCBtLG47KG49CihtPWEub3B0aW9ucykuTWphKT09bnVsbHx8bi5jYWxsKG0sYil9Y29udGludWV9fWI9YS5BYTtpZighKGM9YS5jbG9zZWQpKWE6e2ZvcihjPWI7YyYmYy5fX3NkZF9zcGxpY2VkIT09ITA7KXtpZihjLm5leHRFbGVtZW50U2libGluZyl7Yz0hMDticmVhayBhfWM9Yy5wYXJlbnRFbGVtZW50fWM9ITF9dmFyIGQ9IWMmJiEhYS5rYS5CMztpZihjfHxkKXt2YXIgZT12b2lkIDAsZj12b2lkIDA7ZD1iO3ZhciBnPWEua2E7ZC5fX3NkZF9zcGxpY2VkPSEwO3ZhciBoPWcuY087Zz1nLm9wZXJhdGlvbjtzd2l0Y2goZyl7Y2FzZSAiUiI6aC5iZWZvcmUoZCk7aC5yZW1vdmUoKTticmVhaztjYXNlICJSQyI6ZT1oLnF1ZXJ5U2VsZWN0b3JBbGwoInN0eWxlIik7aC5yZXBsYWNlQ2hpbGRyZW4oLi4uZSxkKTticmVhaztjYXNlICJCIjpoLmJlZm9yZShkKTticmVhaztjYXNlICJBIjpoLmFmdGVyKGQpO2JyZWFrO2Nhc2UgIlAiOmgucHJlcGVuZChkKTticmVhaztjYXNlICJBQyI6aC5hcHBlbmRDaGlsZChkKTsKYnJlYWs7Y2FzZSAiQVUiOmJyZWFrO2Nhc2UgIlgiOmQucmVtb3ZlKCk7YnJlYWs7Y2FzZSAiUyI6ZC50YWdOYW1lPT09IlNDUklQVCJ8fChlPShmPWdvb2dsZSkubWwpIT1udWxsJiZlLmNhbGwoZixFcnJvcigiTW4iKSwhMSk7dmtmKGQpJiZkIGluc3RhbmNlb2YgSFRNTFNjcmlwdEVsZW1lbnQmJnZrZihkKSYmKGg9ZCxkb2N1bWVudC5jb250YWlucyhkKXx8KGg9ZC5jbG9uZU5vZGUoITApLGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoaCkpLGY9ZC5wYXJlbnRFbGVtZW50LGU9e3NkZEVycm9yOiJwcyJ9LGYmJihmPWYuY2xvc2VzdCgiW2pzY29udHJvbGxlcl0sW2lkXSIpKSYmKChnPWYuZ2V0QXR0cmlidXRlKCJqc2NvbnRyb2xsZXIiKSk/ZS5jdHJsPWc6ZS5pZD1TdHJpbmcoZi5nZXRBdHRyaWJ1dGUoImlkIikpKSxoPV8uRzViKGgse0RmOmV9KSxkLmRhdGFzZXQuYXN5bmNFeGVjdXRlZD0idHJ1ZSIsaC50eXBlIT09InNwZWN1bGF0aW9ucnVsZXMiJiZoLnJlbW92ZSgpKTticmVhazsKZGVmYXVsdDpfLmViKGcsdm9pZCAwKX1sZXQgbSxuOyhuPShtPWEub3B0aW9ucykub25Nb3ZlKT09bnVsbHx8bi5jYWxsKG0sYixhLmthKTtsZXQgcCxyOyhyPShwPWEua2EpLm9uTW92ZSk9PW51bGx8fHIuY2FsbChwKTtpZihkb2N1bWVudC5jb250YWlucyhiKSl7bGV0IHgsejsoej0oeD1hLm9wdGlvbnMpLk1qYSk9PW51bGx8fHouY2FsbCh4LGIpfWNsZihhLGIsYS5rYS5vcGVyYXRpb249PT0iQVUiP2Eua2EuY086bnVsbCk7YyYmYS51WGEoKX1lbHNlIGJyZWFrfXdoaWxlKDEpfTtjbGY9ZnVuY3Rpb24oYSxiLGMpe3ZhciBkPWIudGFnTmFtZTtkIT09IklNRyImJmQhPT0iU0NSSVBUIiYmZCE9PSJTVFlMRSImJihhLm9hPW5ldyB4a2YoYixhLkJhLGEub3B0aW9ucyxjKSx5a2YoYS5vYSkpfTsKeGtmPWNsYXNze2NvbnN0cnVjdG9yKGEsYixjPXt9LGQ9bnVsbCl7dGhpcy5CYT1iO3RoaXMub3B0aW9ucz1jO3RoaXMud2E9ZDt0aGlzLmNsb3NlZD0hMTt0aGlzLlFkYT1kb2N1bWVudC5jb250YWlucyhkfHxhKTt0aGlzLml0ZXJhdG9yPWRvY3VtZW50LmNyZWF0ZU5vZGVJdGVyYXRvcihhLDEzMyk7dGhpcy5pdGVyYXRvci5uZXh0Tm9kZSgpIT09YSYmdGhpcy5pdGVyYXRvci5wcmV2aW91c05vZGUoKX11WGEoKXt2YXIgYTsoYT10aGlzLm9hKSE9bnVsbCYmKGEuY2xvc2VkPSEwLHlrZihhKSk7dGhpcy5vYT12b2lkIDA7dmFyIGIsYzsoYj10aGlzLmthKT09bnVsbHx8KGM9Yi51WGEpPT1udWxsfHxjLmNhbGwoYik7dGhpcy5BYT10aGlzLmthPXZvaWQgMH19O3ZhciBEa2Y9WyJ0ZXh0L2h0bWwiLCJ0ZXh0L3BsYWluIl07dmFyIEprZj17cHVzaDphPT52b2lkIGEoKX07dmFyIGRsZixlbGYsZ2xmLGhsZixqbGYsa2xmLG5sZixsbGYsVE0sZmxmLHFsZixvbGYscGxmLGlsZixybGYsc2xmLHRsZix1bGY7ZGxmPW5ldyBTZXQoImFhZnQgYWFmaXQgYWFmY3QgaXJsaSBzYXJ0IHNjcnQgc2FmdCBzY2F0Ii5zcGxpdCgiICIpKTtlbGY9ZnVuY3Rpb24oYSxiPSExKXt2YXIgYz1hLkJhO2Eub2E9ITA7YS5BYS5mb3JFYWNoKGQ9PntkKCl9KTthLkFhPVtdO2ImJihhLlNhPSEwLGEua2EmJihhLkJhPWMpKX07CmdsZj1mdW5jdGlvbihhLGIsYyl7dmFyIGQ9QXJyYXkuZnJvbShiLnF1ZXJ5U2VsZWN0b3JBbGwoIltkYXRhLXN1YnRyZWVdIikpO2IuaGFzQXR0cmlidXRlKCJkYXRhLXN1YnRyZWUiKSYmZC5wdXNoKGIpO2ZvcihsZXQgZSBvZiBkKXtiPShiPWUuZGF0YXNldC5zdWJ0cmVlKT9iLnNwbGl0KCIsIik6W107Zm9yKGxldCBmIG9mIGIpYS5FYVtmXXx8KGI9YSxkPWBzaXJ0LSR7Zn1gLFRNKGIsZCxjKSwoZj09PSJtZmwifHxmPT09ImFpbWZsIiYmYi5Lby5hc3R5cC5pbmNsdWRlcygiYWltIikpJiZmbGYoYixkKSxhLkVhW2ZdPXtub2RlOmUsZkFjOmN9KX19OwpobGY9ZnVuY3Rpb24oYSxiLGMsZD0hMSxlPSExKXtpZihhLklhJiYhYS5vYSl7YS5BYS5wdXNoKCgpPT57aGxmKGEsYixjLGQsZSl9KTtpZighYS5rYSlyZXR1cm47YS53YT0hMH1mb3IobGV0IFtoLGtdb2YgT2JqZWN0LmVudHJpZXMoYS5FYSkpe3ZhciBmPWgsZz1rO2xldCBtPWcubm9kZSxuPWBzY3J0LSR7Zn1gLHA9YHNhZnQtJHtmfWA7Zj1gc2FydC0ke2Z9YDtsZXQgcj1tLmNvbnRhaW5zKGIpO2c9Yz09PWcuZkFjJiZiLmNvbnRhaW5zKG0pO2lmKHJ8fGcpVE0oYSxmLGMpLGR8fFRNKGEsbixjKSxlJiYocnx8Z29vZ2xlLmN2KG0sYS5Lby50KSYxKSYmVE0oYSxwLGMpfWEud2E9ITF9OwpqbGY9ZnVuY3Rpb24oYSxiLGM9RGF0ZS5ub3coKSl7Yj1iLmdldEVsZW1lbnRzQnlUYWdOYW1lKCJpbWciKTtmb3IobGV0IGU9MDtlPGIubGVuZ3RoO2UrKyl7bGV0IGY9YltlXTtpZihmLmRhdGFzZXQuaW1nbG9nZ2VkKWNvbnRpbnVlO2YuZGF0YXNldC5pbWdsb2dnZWQ9InRydWUiOysrYS5PYTt2YXIgZD1mLmNvbXBsZXRlJiYhZi5nZXRBdHRyaWJ1dGUoImRhdGEtZGVmZXJyZWQiKTtsZXQgZz1mLmhhc0F0dHJpYnV0ZSgiZGF0YS1ub2FmdCIpO2lmKGR8fGcpeysrYS5CYTtjb250aW51ZX1kPWdvb2dsZS5jdihmLGEuS28udCk7Zi5zZXRBdHRyaWJ1dGUoImRhdGEtYWF0ZiIsU3RyaW5nKGQpKTtsZXQgaD0hIShkJjEpO2lmKGgpKythLkdhLEFycmF5LmlzQXJyYXkoYS5Lby5jYnZpKXx8KGEuS28uY2J2aT1bXSk7ZWxzZSBpZihmLmxvYWRpbmc9PT0ibGF6eSIpeysrYS5CYTtjb250aW51ZX1mLmdldEF0dHJpYnV0ZSgiZGF0YS1pbWdwcm9jZXNzZWQiKT8rK2EuQmE6KGdvb2dsZS5ybGwoZiwKITAsKCk9PntpbGYoYSxmLGgpfSksYS5TYWEuaXJmaXx8VE0oYSwiaXJmaSIsYyksVE0oYSwiaXJsaSIsYykpfX07a2xmPWZ1bmN0aW9uKGEsYixjPURhdGUubm93KCksZCl7aWYoYS5JYSYmIWEub2Epe2EuQWEucHVzaCgoKT0+e2tsZihhLGIsYyxkKX0pO2lmKCFhLmthKXJldHVybjthLndhPSEwfXZhciBlPWdvb2dsZS5jdihiLGEuS28udCksZj0hIShlJjEpO2YmJihkJiYoYS5QYT1kKSxUTShhLCJhYWZ0IixjKSxUTShhLCJhYWZjdCIsYyksaGxmKGEsYixjLCExLGYpKTtlJjQmJihhLm5iPSEwLGEuR2E9PT1hLk5hJiZsbGYoYSkpO2Eud2E9ITF9O18ubWxmPWZ1bmN0aW9uKGEsYil7dmFyIGM9RGF0ZS5ub3coKTtnbGYoYSxiLGMpO2hsZihhLGIsYyk7amxmKGEsYixjKTtrbGYoYSxiLGMpfTtubGY9ZnVuY3Rpb24oYSl7aWYoQXJyYXkuaXNBcnJheShhKSlmb3IobGV0IGIgb2YgYSliKCl9O2xsZj1mdW5jdGlvbihhKXtubGYoYS5Lby5jYnZpKTthLktvLmNidmk9SmtmfTsKVE09ZnVuY3Rpb24oYSxiLGMpe2lmKGEua2Epe2lmKCFhLm9hfHxhLlNhKWlmKGEuU2FhW2JdPU1hdGgubWF4KGEuU2FhW2JdfHwwLGMpLGEud2EpcmV0dXJuO2EuS2FbYl09TWF0aC5tYXgoYS5LYVtiXXx8MCxjKX1lbHNlIGEuU2FhW2JdPU1hdGgubWF4KGEuU2FhW2JdfHwwLGMpfTsKZmxmPWZ1bmN0aW9uKGEsYj0iYWxsIixjPWEuU2FhLGQ9ITEpe3ZhciBlPWI9PT0iYWxsIixmPXt9O2lmKGUpbGxmKGEpLG9sZihhKSxmPWM7ZWxzZSBmb3IobGV0IHAgb2YgT2JqZWN0LmtleXMoYykpZGxmLmhhcyhwLnNwbGl0KCItIilbMF0pfHwoZltwXT1jW3BdKTt2YXIgZyxoLGs7KGM9KChnPWdvb2dsZS5zdHZzYyk9PW51bGw/dm9pZCAwOmcubnMpfHwoKGg9d2luZG93LnBlcmZvcm1hbmNlKT09bnVsbD92b2lkIDA6KGs9aC50aW1pbmcpPT1udWxsP3ZvaWQgMDprLm5hdmlnYXRpb25TdGFydCkpJiYoZi5ucz1jKTsoZz1Ia2YoYS51cmwsYS5ER2IpKSYmKGYuZ3NhbnM9Zyk7dmFyIG07KGc9KG09Z29vZ2xlLnRpbWVycy5sb2FkKT09bnVsbD92b2lkIDA6bS50LnBycykmJihmLnBycz1nKTttPWEuS28udC5nZXRBdHRyaWJ1dGUoImVpZCIpO2c9W107Zm9yKHZhciBuIG9mIE9iamVjdC5rZXlzKGYpKWcucHVzaChgJHtufS4ke2Zbbl0tYS5SYX1gKTtmPUhrZihhLnVybCwhMCk7Cm49SGtmKGEudXJsKTtmIT1udWxsJiZuIT1udWxsJiZnLnB1c2goYHFkLiR7Zi1ufWApO2I9YC9nZW5fMjA0P3M9YXN5bmMmYXN0eXA9JHthLktvLmFzdHlwfSZ0PSR7ZD9gJHtifTJgOmJ9JmF0eXA9Y3NpJmVpPSR7bX0mcnQ9JHtnLmpvaW4oIiwiKX1gO2lmKGUpe2EuRUZiJiYoYis9YCZ0d3Q9JHtNYXRoLnJvdW5kKGEuRUZiKX0mbXd0PTBgKTthLlBhJiYoYis9YCZsdmhyPSR7YS5QYX1gKTtiKz1gJmltbj0ke2EuT2F9YDtiKz1gJmltYT0ke2EuR2F9YDtkPVtdO2ZvcihsZXQgW3Ascl1vZiBPYmplY3QuZW50cmllcyhhLkVhKSlkLnB1c2goYCR7cH0uJHtyLnZpc2liaWxpdHl9YCk7Yis9YCZzdj0ke2Quam9pbigiLCIpfWA7YS5Lby51cmwmJihkPXBlcmZvcm1hbmNlLmdldEVudHJpZXNCeVR5cGUoInJlc291cmNlIikuZmlsdGVyKHA9PnAubmFtZS5pbmNsdWRlcyhhLktvLnVybCkpLnBvcCgpKSYmKHR5cGVvZiBkLmVuY29kZWRCb2R5U2l6ZT09PSJudW1iZXIiJiYoYis9YCZjYj0ke2QuZW5jb2RlZEJvZHlTaXplfWApLAp0eXBlb2YgZC5kZWNvZGVkQm9keVNpemU9PT0ibnVtYmVyIiYmKGIrPWAmdWNiPSR7ZC5kZWNvZGVkQm9keVNpemV9YCkpfWIrPWAmZm9saWQ9JHthLktvLmlkfWA7Xy5Na2EoYik7YyYmYS5aYSYmcGxmKGEsYyxlKX07cWxmPWZ1bmN0aW9uKGEpe2EuT2EhPT1hLkJhfHxhLldrY3x8KFRNKGEsImFydCIsRGF0ZS5ub3coKSksZmxmKGEpLGEua2EmJihlbGYoYSksZmxmKGEsImFsbCIsYS5LYSwhMCkpKX07b2xmPWZ1bmN0aW9uKGEpe2ZvcihsZXQgYiBvZiBPYmplY3Qua2V5cyhhLkVhKSl7bGV0IGM9YS5FYVtiXTtjLnZpc2liaWxpdHk9Z29vZ2xlLmN2KGMubm9kZSxhLktvLnQsITApfX07CnBsZj1mdW5jdGlvbihhLGIsYyl7dmFyIGQ9KGUsZik9PntpZihmPWEuU2FhW2ZdKWYtPWIsZj49MCYmcGVyZm9ybWFuY2UubWFyayhlLHtzdGFydFRpbWU6Zn0pfTtjP2QoIlNlYXJjaEFJT1ZpZXdwb3J0RW5kVGltZSIsImFhZnQiKTooZCgiU2VhcmNoQUlPQXN5bmNTdGFydCIsImlwZiIpLGQoIlNlYXJjaEFJT0luaXRpYWxDb250ZW50VGltZSIsInNpcnQtbWZsIikpfTtpbGY9ZnVuY3Rpb24oYSxiLGMsZD0hMSl7Yi5nZXRBdHRyaWJ1dGUoImRhdGEtZGVmZXJyZWQiKT09PSIxIj9nb29nbGUucmxsKGIsITAsKCk9PntpbGYoYSxiLGMsZCl9KTpkfHwoYi5nZXRBdHRyaWJ1dGUoImRhdGEtZGVmZXJyZWQiKT09PSIyIiYmYi5zZXRBdHRyaWJ1dGUoImRhdGEtZGVmZXJyZWQiLCIzIiksZD0hMCxybGYoYSxiLGMpKX07CnJsZj1mdW5jdGlvbihhLGIsYyxkPURhdGUubm93KCkpe2EuU2FhLmlyZmllfHxUTShhLCJpcmZpZSIsZCk7aWYoYS5JYSYmIWMmJiFhLm9hKXthLkFhLnB1c2goKCk9PntybGYoYSxiLGMsZCl9KTtpZighYS5rYSlyZXR1cm47YS53YT0hMH0rK2EuQmE7YyYmKCsrYS5OYSxUTShhLCJhYWZ0IixkKSxUTShhLCJhYWZpdCIsZCkpO2hsZihhLGIsZCwhMCxjKTthLm5iJiZhLkdhPT09YS5OYSYmbGxmKGEpOyFhLlNJYnx8YS5vYSYmYS5BYS5sZW5ndGghPT0wfHwoc2xmKGEpLHFsZihhKSk7YS53YT0hMX07c2xmPWZ1bmN0aW9uKGEpe2Eua2F8fGEuU0liJiZhLk5hPT09YS5HYSYmZWxmKGEpfTsKdGxmPWZ1bmN0aW9uKGEsYil7aWYoYS5JYSYmIWEub2Epe2EuQWEucHVzaCgoKT0+e3RsZihhLGIpfSk7aWYoIWEua2EpcmV0dXJuO2Eud2E9ITB9VE0oYSwiaXBmcmwiLGIpO1RNKGEsImFjcnQiLGIpOyhhLmthJiZhLm9hP2EuS2EuYWFmdDphLlNhYS5hYWZ0KXx8VE0oYSwiYWFmdCIsYik7YS53YT0hMX07CnVsZj1jbGFzc3tjb25zdHJ1Y3RvcihhLGI9RGF0ZS5ub3coKSxjPXt0S2M6dHlwZW9mIGNzaV9vX3F1bGwhPT0idW5kZWZpbmVkIiYmY3NpX29fcXVsbCxacmM6dHlwZW9mIGNzaV9vX2RsZSE9PSJ1bmRlZmluZWQiJiZjc2lfb19kbGUmJnR5cGVvZiBjc2lfb19xdWxsIT09InVuZGVmaW5lZCImJmNzaV9vX3F1bGwsREdiOnR5cGVvZiBjc2lfdXNxIT09InVuZGVmaW5lZCImJmNzaV91c3F9KXt0aGlzLktvPWE7dGhpcy5SYT1iO3RoaXMuU2FhPXt9O3RoaXMuS2E9e307dGhpcy53YT0hMTt0aGlzLkVhPXt9O3RoaXMuQWE9W107dGhpcy5OYT10aGlzLkdhPXRoaXMuRUZiPXRoaXMuQmE9dGhpcy5PYT10aGlzLlBhPTA7dGhpcy5aYT0hMTt0aGlzLm9hPSEwO3RoaXMuU2E9ITE7dGhpcy51cmw9d2luZG93LmxvY2F0aW9uLnNlYXJjaDt0aGlzLklhPWMudEtjO3RoaXMua2E9Yy5acmM7dGhpcy5ER2I9Yy5ER2I7dGhpcy5Lby50JiZ0aGlzLktvLmlkJiZnb29nbGUuY3YodGhpcy5Lby50KSYKMSYmKEdrZih0aGlzLktvLmlkKSx0aGlzLlphPSEwKTt0aGlzLktvLnVsbGNiPSgpPT57ZWxmKHRoaXMsITApfTt0aGlzLktvLnQmJihnbGYodGhpcyx0aGlzLktvLnQsdGhpcy5SYSksaGxmKHRoaXMsdGhpcy5Lby50LHRoaXMuUmEpKTt0aGlzLm9hPSExfWxrYSgpe319O3ZhciB2bGY9ZnVuY3Rpb24oYSl7YT1hIGluc3RhbmNlb2YgRXJyb3I/YTpFcnJvcigiUG4iKTtnb29nbGUubWwmJmdvb2dsZS5tbChhLCExKX0sSWtmPWNsYXNzIGV4dGVuZHMgdWxme29uUmVuZGVyU3RhcnRlZCgpe3RyeXt0aGlzLlNhYS5pcGZyfHwoVE0odGhpcywiaXBmciIsRGF0ZS5ub3coKSksVE0odGhpcywidHRmYiIsRGF0ZS5ub3coKSkpfWNhdGNoKGEpe3ZsZihhKX19b25GaXJzdEJ5dGUoKXt0aGlzLktvLmNicm5zPVtdO3RyeXt2YXIgYT1EYXRlLm5vdygpO1RNKHRoaXMsInN0IixhKX1jYXRjaChiKXt2bGYoYil9fU1qYShhKXt0cnl7Xy5tbGYodGhpcyxhKX1jYXRjaChiKXt2bGYoYil9fW9uUmVuZGVyRmluaXNoZWQoKXt0cnl7dGxmKHRoaXMsRGF0ZS5ub3coKSksdGhpcy5TSWI9ITAsc2xmKHRoaXMpLHFsZih0aGlzKX1jYXRjaChhKXt2bGYoYSl9bmxmKHRoaXMuS28uY2JmZCk7dGhpcy5Lby5jYmZkPUprZjtubGYodGhpcy5Lby5jYnJucyk7dGhpcy5Lby5jYnJucz0KSmtmfW9uU3RyZWFtQ2FuY2VsZWQoKXt0cnl7dGhpcy5Xa2M9ITAsVE0odGhpcywiZnQiLERhdGUubm93KCkpLHRoaXMuRUZiPTB9Y2F0Y2goYSl7dmxmKGEpfX19O3ZhciBOa2Y9Y2xhc3MgZXh0ZW5kcyBfLkpxZXtjb25zdHJ1Y3Rvcigpe3N1cGVyKCJzdHJlYW1TdGF0ZVVwZGF0ZUV2ZW50Iik7dGhpcy5kZXRhaWw9ITF9fTt2YXIgd2xmPWZ1bmN0aW9uKGEsYil7Zm9yKDtiJiZiIT09YS53YTspe2lmKGIubmV4dEVsZW1lbnRTaWJsaW5nKXJldHVybiBiLm5leHRFbGVtZW50U2libGluZztiPWIucGFyZW50RWxlbWVudH1yZXR1cm4gbnVsbH0seGxmPWZ1bmN0aW9uKGEpe2Zvcih2YXIgYj1hLmthIT09YS5vYSYmYS5rYS5maXJzdEVsZW1lbnRDaGlsZHx8d2xmKGEsYS5rYSksYz1bXSxkPW51bGw7YjspZD1iLGMucHVzaChiKSxiPXdsZihhLGIpO2lmKGQpe2ZvcihiPWQ7Yi5sYXN0RWxlbWVudENoaWxkOyliPWIubGFzdEVsZW1lbnRDaGlsZDthLmthPWJ9cmV0dXJuIGN9LHlsZj1mdW5jdGlvbihhKXtmb3IodmFyIGI9YS5rYTtiJiZiIT09YS53YTspYj1iLnBhcmVudEVsZW1lbnQ7cmV0dXJuIGI9PT1udWxsfSx6bGY9Y2xhc3N7Y29uc3RydWN0b3IoYSl7dGhpcy53YT1hO3RoaXMub2E9bnVsbDt0aGlzLmthPWF9fTt2YXIgQmxmPWZ1bmN0aW9uKGEpe3ZhciBiPU1hdGgucmFuZG9tKCkudG9TdHJpbmcoMzYpLnN1YnN0cmluZygyKTtpZighL15bYS16MC05XSskLy50ZXN0KGIpKXt2YXIgYz1FcnJvcigiVG5gIitiKTthLm9hKGMse2lkOmJ9KTt0aHJvdyBjO31jPV8ueShgPHNwYW4gaWQ9IiR7Yn0iIHN0eWxlPSJkaXNwbGF5OiBub25lIj48L3NwYW4+YCk7QWxmKGEsYyk7Yz1kb2N1bWVudC5nZXRFbGVtZW50QnlJZChiKTtpZighYyl0aHJvdyBjPUVycm9yKCJTbiIpLGEub2EoYyx7cmlkOmJ9KSxjO2E9YS5rYTthLmthPWM7YS5vYT1jfSxBbGY9ZnVuY3Rpb24oYSxiKXt2YXIgYz1hLmdldERvY3VtZW50KCk7Xy5RamEoYyxiKTt2YXIgZDsoZD1hLkhmYSk9PW51bGx8fGQud3JpdGUoYi50b1N0cmluZygpKTtiPWMuaGVhZDtjPWMuYm9keTtmb3IodmFyIGU7KGU9Yik9PW51bGw/MDplLmZpcnN0Q2hpbGQ7KWEucm9vdC5hcHBlbmRDaGlsZChiLmZpcnN0Q2hpbGQpO2Zvcih2YXIgZjsoZj1jKT09bnVsbD8KMDpmLmZpcnN0Q2hpbGQ7KWEucm9vdC5hcHBlbmRDaGlsZChjLmZpcnN0Q2hpbGQpfSxDbGY9Y2xhc3N7Y29uc3RydWN0b3IoYSxiKXt0aGlzLnJvb3Q9YTt0aGlzLm9hPWI7dGhpcy5IZmE9dGhpcy5kb2N1bWVudD1udWxsO3RoaXMua2E9bmV3IHpsZih0aGlzLnJvb3QpO3RoaXMucm9vdC5zZXRBdHRyaWJ1dGUoImRhdGEtc3RyZWFtaW5nLWNvbnRhaW5lciIsIiIpfWNsb3NlKCl7dmFyIGE7KGE9dGhpcy5kb2N1bWVudCk9PW51bGx8fGEuY2xvc2UoKX1nZXREb2N1bWVudCgpe3RoaXMuZG9jdW1lbnR8fCh0aGlzLmRvY3VtZW50PWRvY3VtZW50LmltcGxlbWVudGF0aW9uLmNyZWF0ZUhUTUxEb2N1bWVudCgpLHRoaXMuSGZhPXZvaWQgMCk7cmV0dXJuIHRoaXMuZG9jdW1lbnR9fTt2YXIgRGxmPWFzeW5jIGZ1bmN0aW9uKGEsYixjKXt2YXIgZD0oMCxfLk1mKSgpLGU9ZCgpO2Q9ZCgxKTt0cnl7ZnVuY3Rpb24gbigpe3ZhciByPWYuaW5kZXhPZigiOyIsaCk7aWYocj09PS0xKXJldHVybiBudWxsO3ZhciB4PXBhcnNlSW50KGYuc3Vic3RyaW5nKGgsciksMTYpO2lmKGlzTmFOKHgpKXRocm93IHI9RXJyb3IoIlZuIiksayhyLHtCOmAke2YubGVuZ3RofWAsQzpgJHtnfWB9KSxyO2lmKGYubGVuZ3RoPHIreCsxKXJldHVybiBudWxsO2g9cit4KzE7cmV0dXJuIGYuc3Vic3RyaW5nKHIrMSxoKX1mdW5jdGlvbiBwKHIpe2YrPXI7aD1nO2ZvcihyPVtdOzspe2xldCB4PW4oKTtpZih4PT09bnVsbClicmVhaztsZXQgej1uKCk7aWYoej09PW51bGwpYnJlYWs7Zz1oO3IucHVzaCh7dHlwZTp4fHwibWVzc2FnZSIsZGF0YTp6fSl9ci5sZW5ndGg+MCYmYyhyKX1pZighYS5jYW5jZWxlZCl7Zm9yKHZhciBmPSIiLGc9MCxoPTAsaz1hLnl4LG09Yi5ib2R5LnBpcGVUaHJvdWdoKG5ldyBUZXh0RGVjb2RlclN0cmVhbSkuZ2V0UmVhZGVyKCk7Oyl7bGV0IHt2YWx1ZTpyLApkb25lOnh9PWQoYXdhaXQgZShtLnJlYWQoKSkpO2lmKHh8fGEuY2FuY2VsZWQpYnJlYWs7cChyKX1pZighYS5jYW5jZWxlZCYmKGEuY2xvc2UoKSxmLmxlbmd0aD5nKSl7bGV0IHI9RXJyb3IoIlduIik7YS55eChyLHtCOmAke2YubGVuZ3RofWAsQzpgJHtnfWB9KTt0aHJvdyByO319fWZpbmFsbHl7ZSgpfX0sWmtmPWNsYXNze2NvbnN0cnVjdG9yKGEsYixjKXt2YXIgZD1fLkw1YixlPSRrZjt0aGlzLnBsdWdpbnM9YTt0aGlzLlBlYj1iO3RoaXMuanQ9Yzt0aGlzLndhPWQ7dGhpcy55eD1lO3RoaXMua2E9bmV3IE1hcDt0aGlzLmZpbmlzaGVkPXRoaXMuY2FuY2VsZWQ9ITE7dGhpcy5vYT1fLnNrZigpfWNyZWF0ZURvY3VtZW50KGEsYil7Yj1uZXcgQ2xmKGIsdGhpcy55eCk7dGhpcy5rYS5zZXQoYSxiKTtyZXR1cm4gYn1nZXREb2N1bWVudChhKXt2YXIgYj10aGlzLmthLmdldChhKTtpZighYil0aHJvdyBiPUVycm9yKCJVbiIpLHRoaXMueXgoYix7aWQ6YX0pLGI7cmV0dXJuIGJ9YXN5bmMgcmVuZGVyKGEpe3ZhciBiPQooMCxfLk1mKSgpLGM9YigpO2I9YigxKTt0cnl7aWYoIWEub2spe2xldCBrPUVycm9yKCJYbmAiK2Euc3RhdHVzKTt0aGlzLnl4KGsse3N0OmEuc3RhdHVzVGV4dH0pO3Rocm93IGs7fWxldCBkLGUsZixnPShkPWEuaGVhZGVycy5nZXQoIkNvbnRlbnQtVHlwZSIpKT09bnVsbD92b2lkIDA6KGU9ZC5zcGxpdCgiOyIsMikpPT1udWxsP3ZvaWQgMDooZj1lWzBdKT09bnVsbD92b2lkIDA6Zi50b0xvd2VyQ2FzZSgpO2lmKGchPT0idGV4dC9wbGFpbiImJmchPT0idGV4dC9odG1sIil7bGV0IGs9RXJyb3IoIlluIik7dGhpcy55eChrLHt1OmEudXJsfSk7dGhyb3cgazt9aWYoYS51cmwmJihuZXcgVVJMKGEudXJsKSkub3JpZ2luIT09bG9jYXRpb24ub3JpZ2luKXtsZXQgaz1FcnJvcigiWm4iKTt0aGlzLnl4KGsse3U6YS51cmx9KTt0aHJvdyBrO31mb3IobGV0IGsgb2YgdGhpcy5wbHVnaW5zKXtsZXQgbSxuOyhuPShtPWspLm9uUmVuZGVyU3RhcnRlZCk9PW51bGx8fG4uY2FsbChtKX10aGlzLlBlYi5yZXBsYWNlQ2hpbGRyZW4oKTsKbGV0IGg9dGhpcy5jcmVhdGVEb2N1bWVudCgiZGVmYXVsdCIsdGhpcy5QZWIpO2IoYXdhaXQgYyhEbGYodGhpcyxhLGs9PntpZighdGhpcy5jYW5jZWxlZCl7Zm9yKHZhciBtIG9mIHRoaXMucGx1Z2lucyl0cnl7dmFyIG49dm9pZCAwLHA9dm9pZCAwOyhwPShuPW0pLm9uRmlyc3RCeXRlKT09bnVsbHx8cC5jYWxsKG4pO20ub25GaXJzdEJ5dGU9dm9pZCAwfWNhdGNoKEIpe31uPSExO209W107Zm9yKGxldCB7dHlwZTpCLGRhdGE6SH1vZiBrKXN3aXRjaChCKXtjYXNlICJ3cml0ZV90b190YXJnZXRfZG9jdW1lbnQiOmg9dGhpcy5nZXREb2N1bWVudChIKTticmVhaztjYXNlICJwbGFjZWhvbGRlciI6cD1rPWg7dmFyIHI9Xy55KCc8ZGl2IHN0eWxlPSJkaXNwbGF5OiBjb250ZW50cyI+PC9kaXY+Jyk7eWxmKHAua2EpJiZCbGYocCk7QWxmKHAscik7W3BdPXhsZihrLmthKTtpZighcCl7dmFyIHg9RXJyb3IoIlJuIik7ay5vYSh4LHtpZDpIfSk7dGhyb3cgeDt9az1rLmthO3I9cDtrLmthPQpyO2sub2E9cjt0aGlzLmNyZWF0ZURvY3VtZW50KEgscCk7YnJlYWs7Y2FzZSAibWQiOnRoaXMud2EoSCx0aGlzLmp0KTtuPSEwO2JyZWFrO2Nhc2UgIm1lc3NhZ2UiOm49bTtrPW4ucHVzaDtwPWg7dmFyIHo9Xy55KEgpO3I9cDt5bGYoci5rYSkmJkJsZihyKTtBbGYocix6KTtyPXAucm9vdC5xdWVyeVNlbGVjdG9yQWxsKCJzY3JpcHQiKTtmb3IoeCBvZiByKXZrZih4KSYmXy5HNWIoeCx7RGY6e3NkZEVycm9yOiJtcmUifX0pO3A9eGxmKHAua2EpO2suY2FsbChuLC4uLnApO249ITB9aWYobS5sZW5ndGg+MCl0aGlzLm9uTmV3U3VidHJlZXMobSk7aWYobil0aGlzLm9uQ2h1bmtXcml0dGVuKCl9fSkpKTtpZighdGhpcy5jYW5jZWxlZCl7dGhpcy5maW5pc2hlZD0hMDtmb3IobGV0IGsgb2YgdGhpcy5wbHVnaW5zKXRyeXtsZXQgbSxuOyhuPShtPWspLm9uUmVuZGVyRmluaXNoZWQpPT1udWxsfHxuLmNhbGwobSl9Y2F0Y2gobSl7fXRoaXMub2Eub3V0cHV0KCl9fWZpbmFsbHl7YygpfX1jbG9zZSgpe3RoaXMua2EuZm9yRWFjaChhPT4Ke2EuY2xvc2UoKX0pfWNhbmNlbCgpe2lmKCF0aGlzLmZpbmlzaGVkKXt0aGlzLmNhbmNlbGVkPSEwO3RoaXMuY2xvc2UoKTtmb3IobGV0IGEgb2YgdGhpcy5wbHVnaW5zKXtsZXQgYixjOyhjPShiPWEpLm9uU3RyZWFtQ2FuY2VsZWQpPT1udWxsfHxjLmNhbGwoYil9fX1vbk5ld1N1YnRyZWVzKGEpe2ZvcihsZXQgYiBvZiB0aGlzLnBsdWdpbnMpdHJ5e3RoaXMub2Eub25OZXdTdWJ0cmVlcyhiLGEpfWNhdGNoKGMpe319b25DaHVua1dyaXR0ZW4oKXtmb3IobGV0IGEgb2YgdGhpcy5wbHVnaW5zKXRyeXt0aGlzLm9hLm9uQ2h1bmtXcml0dGVuKGEpfWNhdGNoKGIpe319fTt2YXIgRWxmPWZ1bmN0aW9uKGEsYil7cmV0dXJuIGEua2EuZ2V0KGIpfHxhLmNyZWF0ZURvY3VtZW50KGIpfSxGbGY9YXN5bmMgZnVuY3Rpb24oYSxiLGMpe3ZhciBkPSgwLF8uTWYpKCksZT1kKCk7ZD1kKDEpO3RyeXtmdW5jdGlvbiBtKCl7dmFyIHA9Zi5pbmRleE9mKCI7IixoKTtpZihwPT09LTEpcmV0dXJuIG51bGw7dmFyIHI9cGFyc2VJbnQoZi5zdWJzdHJpbmcoaCxwKSwxNik7aWYoaXNOYU4ocikpdGhyb3cgRXJyb3IoIiRuYCIrZi5sZW5ndGgrImAiK2cpO2lmKGYubGVuZ3RoPHArcisxKXJldHVybiBudWxsO2g9cCtyKzE7cmV0dXJuIGYuc3Vic3RyaW5nKHArMSxoKX1mdW5jdGlvbiBuKHApe2YrPXA7aD1nO2ZvcihwPVtdOzspe2xldCByPW0oKTtpZihyPT09bnVsbClicmVhaztsZXQgeD1tKCk7aWYoeD09PW51bGwpYnJlYWs7Zz1oO3AucHVzaCh7dHlwZTpyfHwibWVzc2FnZSIsZGF0YTp4fSl9cC5sZW5ndGg+MCYmYyhwKX1pZighYS5jYW5jZWxlZCl7Zm9yKHZhciBmPSIiLApnPTAsaD0wLGs9Yi5ib2R5LnBpcGVUaHJvdWdoKG5ldyBUZXh0RGVjb2RlclN0cmVhbSkuZ2V0UmVhZGVyKCk7Oyl7bGV0IHt2YWx1ZTpwLGRvbmU6cn09ZChhd2FpdCBlKGsucmVhZCgpKSk7aWYocnx8YS5jYW5jZWxlZClicmVhaztuKHApfWlmKCFhLmNhbmNlbGVkJiYoYS5jbG9zZSgpLGYubGVuZ3RoPmcpKXRocm93IEVycm9yKCJhb2AiK2YubGVuZ3RoKyJgIitnKTt9fWZpbmFsbHl7ZSgpfX0sWWtmPWNsYXNze2NvbnN0cnVjdG9yKGEpe3RoaXMucGx1Z2lucz1hO3RoaXMua2E9bmV3IE1hcDt0aGlzLmZpbmlzaGVkPXRoaXMuY2FuY2VsZWQ9ITE7dGhpcy5vYT1fLnNrZigpfWNyZWF0ZURvY3VtZW50KGEpe3ZhciBiPWRvY3VtZW50LmltcGxlbWVudGF0aW9uLmNyZWF0ZUhUTUxEb2N1bWVudCgiIik7dGhpcy5rYS5zZXQoYSxiKTtiLm9wZW4oKTtmb3IobGV0IGMgb2YgdGhpcy5wbHVnaW5zKXtsZXQgZCxlOyhlPShkPWMpLm9uRG9jdW1lbnRPcGVuKT09bnVsbHx8ZS5jYWxsKGQsCmIpfXJldHVybiBifWFzeW5jIHJlbmRlcihhKXt2YXIgYj0oMCxfLk1mKSgpLGM9YigpO2I9YigxKTt0cnl7aWYoIWEub2spdGhyb3cgRXJyb3IoImJvYCIrYS5zdGF0dXMrImAiK2Euc3RhdHVzVGV4dCk7bGV0IGQsZSxmLGc9KGQ9YS5oZWFkZXJzLmdldCgiQ29udGVudC1UeXBlIikpPT1udWxsP3ZvaWQgMDooZT1kLnNwbGl0KCI7IiwyKSk9PW51bGw/dm9pZCAwOihmPWVbMF0pPT1udWxsP3ZvaWQgMDpmLnRvTG93ZXJDYXNlKCk7aWYoZyE9PSJ0ZXh0L3BsYWluIiYmZyE9PSJ0ZXh0L2h0bWwiKXRocm93IEVycm9yKCJjb2AiK2EudXJsKTtpZihhLnVybCYmKG5ldyBVUkwoYS51cmwpKS5vcmlnaW4hPT1sb2NhdGlvbi5vcmlnaW4pdGhyb3cgRXJyb3IoIkxuYCIrYS51cmwpO2ZvcihsZXQgayBvZiB0aGlzLnBsdWdpbnMpe2xldCBtLG47KG49KG09aykub25SZW5kZXJTdGFydGVkKT09bnVsbHx8bi5jYWxsKG0pfWxldCBoPUVsZih0aGlzLCJkZWZhdWx0Iik7Yihhd2FpdCBjKEZsZih0aGlzLAphLGs9PntpZighdGhpcy5jYW5jZWxlZCl7Zm9yKHZhciBtIG9mIHRoaXMucGx1Z2lucyl0cnl7bGV0IG4scDsocD0obj1tKS5vbkZpcnN0Qnl0ZSk9PW51bGx8fHAuY2FsbChuKTttLm9uRmlyc3RCeXRlPXZvaWQgMH1jYXRjaChuKXt9bT1bXTtmb3IobGV0IHt0eXBlOm4sZGF0YTpwfW9mIGspe2lmKG49PT0id3JpdGVfdG9fdGFyZ2V0X2RvY3VtZW50Iil7aD1FbGYodGhpcyxwKTtjb250aW51ZX1pZihuIT09Im1lc3NhZ2UiKWNvbnRpbnVlO2s9Xy55KHApO18uUWphKGgsayk7aWYoR2xmKXRoaXMub25DaHVua1dyaXR0ZW4oaCk7ZWxzZSBtLmluY2x1ZGVzKGgpfHxtLnB1c2goaCl9Zm9yKGxldCBuIG9mIG0pdGhpcy5vbkNodW5rV3JpdHRlbihuKX19KSkpO2lmKCF0aGlzLmNhbmNlbGVkKXt0aGlzLmZpbmlzaGVkPSEwO2ZvcihsZXQgayBvZiB0aGlzLnBsdWdpbnMpdHJ5e2xldCBtLG47KG49KG09aykub25SZW5kZXJGaW5pc2hlZCk9PW51bGx8fG4uY2FsbChtKX1jYXRjaChtKXt9dGhpcy5vYS5vdXRwdXQoKX19ZmluYWxseXtjKCl9fW9uQ2h1bmtXcml0dGVuKGEpe2ZvcihsZXQgYiBvZiB0aGlzLnBsdWdpbnMpdHJ5e3RoaXMub2Eub25DaHVua1dyaXR0ZW4oYiwKYSl9Y2F0Y2goYyl7fX1jbG9zZSgpe3RoaXMua2EuZm9yRWFjaChhPT57YS5jbG9zZSgpfSl9Y2FuY2VsKCl7aWYoIXRoaXMuZmluaXNoZWQpe3RoaXMuY2FuY2VsZWQ9ITA7dGhpcy5jbG9zZSgpO2ZvcihsZXQgYSBvZiB0aGlzLnBsdWdpbnMpe2xldCBiLGM7KGM9KGI9YSkub25TdHJlYW1DYW5jZWxlZCk9PW51bGx8fGMuY2FsbChiKX19fX0sR2xmPSEhKF8uT2lbMTJdPj4yOCYxKTsKfWNhdGNoKGUpe18uX0R1bXBFeGNlcHRpb24oZSl9CnRyeXsKXy5aZWM9WzAsXy5sbF07Cn1jYXRjaChlKXtfLl9EdW1wRXhjZXB0aW9uKGUpfQp0cnl7CnZhciBMamY9WzAsXy5FLC0xLF8uSmwsXy5FXTt2YXIgTWpmPVswLF8uRyxfLkVdO3ZhciBOamY9WzAsXy5qbSxbMCxfLkdzLF8uZWwsXy5GbCwtMSxfLkxyLF8uRmwsXy5VbF0sXy52bCwtMixbMCxfLlVsXSxbMCxfLlVsXSxfLkxyLF8uJGtiLC0xLF8uWnBiLFswLF8uRmwsLTJdLF8uRmxdO18uT2pmPVswLF8uTGwsTmpmLF8uQ2xdO3ZhciBQamY9WzAsXy5DbCxfLmxsLF8uQ2xdO18uUWpmPVswLFsxLDIsMyw0LDUsMTQsMTcsMTksMjAsMjFdLF8uSWwsXy5PamYsXy5JbCxbMCxfLkZsLF8uTHJdLF8uSWwsWzAsWzEsMl0sXy5HbCwtMSxfLlplYyxOamYsXy5DbF0sXy5JbCxbMCxbMV0sXy5JbCxbMCxfLkZsLFswLF8uU2xdLF8uRV1dLF8uSWwsWzAsXy5GbCxOamYsXy5DbF0sWzAsXy5FXSxfLkpsLF8uRSxbMCxfLkYsWzAsXy5DLF8uWWssLTEsXy5FbCxfLkpsLF8uS2wsXy5GLE1qZixfLkQsLTJdLFswLFswLF8uRSxfLnBsXSxfLkYsTWpmXSxfLkMsXy5FLFswLF8uRyxfLkMsLTEsMixfLkMsLTEsMSxfLkYsWzAsXy5DLF8uWWtdLF8uQywtMixfLkQsLTUsWzAsXy5UbF0sXy5FXV0sXy5HLC0xLF8uRSxQamYsXy5JbCxbMCxfLkZsLF8uRixbMCxfLlVsLF8uTGwsXy5HLFBqZl0sXy5VbCxfLkZsLFswLF8uQ11dLFswLF8uRSwtMSwxLF8uQyxfLkUsTGpmXSxbMCxfLkZsXSxfLklsLFswLF8uRV0sMSxfLklsLExqZixfLklsLFswLF8uRmwsLTFdLF8uSWwsWzAsXy5GbF0sClswLF8uQ2wsLTJdXTsKfWNhdGNoKGUpe18uX0R1bXBFeGNlcHRpb24oZSl9CnRyeXsKXy5hY2Q9WzAsXy5DLF8uSmxdOwp9Y2F0Y2goZSl7Xy5fRHVtcEV4Y2VwdGlvbihlKX0KdHJ5ewpfLktqZj1bMCxfLkcsXy5DLC0yLF8uemwsLTEsMSxfLmFjZCxfLkUsXy5DLC0xLDEsXy5FLDEsXy5pbF07Cn1jYXRjaChlKXtfLl9EdW1wRXhjZXB0aW9uKGUpfQp0cnl7Cl8ucmNkPVswLDEsXy5ELC0xLF8uRSwtMSwxLF8uRCxfLkUsMSxfLkpxLF8uSGwsWzAsMTEsXy5DLF8uRSwxLF8uaWwsMixfLkpxXSwyLF8ucGwsNCxfLkQsLTIsXy5pbCxfLkQsLTQsXy5FLF8uaWwsXy5ELC0xLDEsXy5ELDEsXy5HLF8uRCwtMixbMCxfLldrLF8ua0VhLF8uRCxbMCxfLnBsXSxfLkFGYV0sXy5ELC0xXTsKfWNhdGNoKGUpe18uX0R1bXBFeGNlcHRpb24oZSl9CnRyeXsKdmFyIGtjZD1bMCxfLkUsXy5TbCxfLkddO3ZhciBsY2Q9Wy0yMCx7fSxfLkYsWzAsXy5KbCwtMV0sMSxfLkMsXy5hbCwxLF8uYWwsLTEsWzAsWzAsXy5DLC0yXSwtMixfLkNdLF8uRyxfLkUsLTIsXy5hbCxfLkUsWzAsXy5HLC0yLF8uaWwsXy5ELF8uR10sXy5ELF8uRSwtMl07dmFyIG1jZD1bMCxfLmFsLF8uQnMsWzAsMixfLlhsLC0xXSwyLF8uQnMsWzAsNSxfLlhsLC0zXSw0LF8uSGwsWzAsMTAsXy5FcyxfLkcsXy5GLF8udXBiLF8uSnEsNSxfLkcsMyxfLmFsLF8uQnMsWzAsMjUsXy5YbCwtM10sNSxfLkJzLFswLDMxLF8uWGwsLTFdLDIsXy5hbCxfLlBwYiwyLF8uYWwsXy5TbCxfLkYsa2NkXSw3LF8uYWwsLTEsMTAsbGNkXTt2YXIgbmNkPVswLDMsXy5DLC0yLDQsXy5EXTt2YXIgb2NkPVswLF8uRyxfLkVdO3ZhciBwY2Q9WzAsXy5GLFswLF8uQyxfLmR3Yl1dO18ucWNkPVswLF8uRixbMCxfLmZ3YixfLkYsb2NkLF8uRCwtMSxbMCxfLkYsbWNkLDIsXy5GLFswLG1jZCxfLkUsXy5IbCxuY2RdXSxfLkpxLF8uRyxfLkYsWzAsXy5FLF8uRixvY2QsXy5HLHBjZCxfLkddLHBjZCxfLkYsWzAsXy5FcyxfLmFsLF8uU2wsXy5GLGtjZF0sXy5HLFswLFswLF8uRSxfLkYsbmNkXSxsY2QsXy5ELF8uRWwsLTFdLFswLF8uQyxfLlNsXSxfLkYsWzAsXy5HLF8uVGwscGNkLF8uR10sXy5HXSxfLkQsXy5HLC0xLF8uRCxbMCxfLkQsLTUsMSxfLkRdLF8uRCxfLkpxLF8uRixbMCxfLkVzLF8uRyxfLkYsXy51cGIsXy5KcSxfLkcsXy5DcyxfLkFzLF8uYWwsLTEsXy5QcGJdLFswLF8uRyxfLlNsLC0xXSxfLkYsWzAsXy5HLC0xXSxfLkcsMSxfLkRdOwp9Y2F0Y2goZSl7Xy5fRHVtcEV4Y2VwdGlvbihlKX0KdHJ5ewp2YXIgUmpmPVswLF8uRXMsXy5FXTt2YXIgU2pmPVswLDEsXy5ELC0yXTt2YXIgVGpmPVswLDEsXy5HLF8uRCwtMyxfLkMsLTIsWzAsXy5UbCxfLkNsXV07dmFyIFVqZj1bMCxfLnZsLC0xLF8uTHIsLTFdO3ZhciBWamY9WzAsWzEsMl0sWzMsOCw5XSxfLklsLFswLF8udmxdLF8uSWwsWzAsXy52bF0sXy5tbCw0LF8uSWwsWzAsXy52bCwtMV0sLTFdO3ZhciBXamY9WzAsXy5ZaywtMixWamYsVWpmLF8uTHIsLTIsXy5DLF8uWmssXy5GbCwyLF8uRCxbMCxfLnZsLF8uTHJdLF8uRCwtMSxbMCxbMCxfLkZsLC0zLF8uQ11dXTt2YXIgWGpmPVswLF8uQ2xdO3ZhciBZamY9WzAsWzAsWzAsXy5DLDEsWzAsXy5DLC0xXSwxLF8uR10sWzAsWzAsXy5DLF8uRyxfLkMsXy5EXSxXamYsWzAsWzAsWzEsMl0sXy5JbCxbMCxfLkQsLTIsXy5DXSxfLklsLFswXSxYamYsXy5DbCwxLF8uQ2xdLFswLFhqZixfLkNsXSxfLkNsXSxbMCxfLkNsLC02LF8uVWwsXy5FbF0sWzAsMSxfLkNsLF8uRixbMCxfLkZsLC0xXSxfLlVsXV0sV2pmLFVqZixWamZdLFswLFRqZixbMCxfLkNsXSxTamYsWzAsMixUamYsXy5DLFNqZl0sMyxfLkVdLF8uRWwsXy5GLF8ua21jLC0xLFswLFswLF8uV2ssXy5vcGJdXSxfLkZsLF8uVWwsXy5FLF8uQ2xdO3ZhciBaamY9WzAsWWpmLFswLF8uRixfLm1tXSxfLm1tYyxZamZdO3ZhciAkamY9WzAsXy5VbCxfLkZsLC0xLF8uQ2wsXy5FbCwoKT0+JGpmLF8uV2ssXy5YayhfLkUsKCk9PiRqZiksXy5FbCxfLmxsLC0xLF8uWWssLTEsXy5sbCwtMSxfLkZsLF8ubXBiLF8uRiwoKT0+JGpmLC0yLCgpPT4kamYsXy5sbCwtMSxfLkVsLF8uRmwsXy5tcGJdO3ZhciBha2Y9WzAsXy5MbCxfLkZsLC0xLF8uQ2wsMSxfLnhzXTt2YXIgYmtmPVswLGFrZixfLnhzXTt2YXIgY2tmPVswLF8uRixfLm5tYyxfLkZsXTt2YXIgZGtmPVswLF8uRSxfLnVsLF8uRyxfLkYsWzAsXy5FXSxfLkYsWzAsWzMsNCw1LDYsNyw4XSxfLkMsLTEsXy5EbCwtMSxfLklsLFswLF8uRV0sXy5JbCxbMCxfLkVdLF8uRGwsLTFdXTt2YXIgZmtmPVswLF8uRiwoKT0+ZWtmXSxna2Y9WzAsXy5GLCgpPT5ma2ZdLGhrZj1bMCwoKT0+Z2tmLF8uRiwoKT0+Z2tmXSxpa2Y9WzAsXy5GLCgpPT5la2ZdLGVrZj1bLTkse30sWzEsMiwzLDQsNSw2LDhdLF8uSWwsZGtmLF8uSWwsKCk9PmlrZixfLklsLCgpPT5qa2YsXy5JbCwoKT0+aGtmLF8uRGwsXy5JbCxbMF0sXy5FLF8uSWwsWzAsXy5FLGRrZixfLkYsZGtmLF8uRV1dLGprZj1bMCxfLkYsKCk9PmVrZiwyLF8uRSxfLkQsLTFdO18ua2tmPWNsYXNzIGV4dGVuZHMgXy5se2NvbnN0cnVjdG9yKGEpe3N1cGVyKGEpfX07dmFyIGxrZj1bMCxbMSwyLDQsN10sXy5JbCxfLlFqZixfLk1sLDEsXy5JbCxfLm9tYyxfLkUsXy5DLF8uTWxdO3ZhciBta2Y9WzAsXy56bCxfLnJsLF8uRSwxLF8uRixbMCxfLnpsLF8uQWwsXy5hbCwtMV0sXy5HLF8uRm1jLFswLF8uYWwsLTNdLF8uRCwtMSxfLkVsLF8uRF07Xy5ua2Y9WzAsXy5DLC0zXTt2YXIgb2tmPVswLFsyLDddLF8uRmwsXy5NbCxfLkZsLFswLF8uRixfLm1tLDEsXy5GbCwtMSxfLnZsLFswLF8uQ2xdLF8uRmwsXy5qbSxfLkZsLF8uRWwsXy5GbCxfLkxsXSxfLkZsLFswLF8uRmwsXy51bCxfLktsLF8uRWwsXy5kbCxfLkZsLF8uTGwsXy52bCwtMSxbMCxfLkZsLF8uTGwsXy51bF0sLTFdLF8uR2xdO3ZhciBwa2Y9WzAsMixfLkYsWzAsWzAsXy5DLDEsWy00LHt9LF8uRSwxLF8uRV0sXy5FLC0xXSxfLkYsWzAsWzFdLF8uSWwsWy0xMCx7fSwyLF8uRSwtMSwyLFswLFswLF8uRixla2YsXy5GLFswLF8uRSwtMyxfLkYsWzAsXy5wbCxfLkYsXy5LamYsXy5FXSxfLkMsXy5HLF8uRV0sXy5FXSxfLkYsWzAsWzUsNiw3XSxfLkUsLTEsXy5ELF8uRSxfLkRsLC0yXSxbMCxfLkcsLTEsXy5FLF8uR11dLF8uRixfLmptYyxbMCxfLkVsXV1dLF8uRSwtMSxbMCxbMCxfLkYsWy0yOSx7fSxbMywxM10sbWtmLF8ub3osXy5NbCxfLnltYyxfLm9tYywxLF8uRSwtMSxfLkcsXy5GLG1rZiwxLF8uRCxfLklsLFswLFswLF8uSmwsXy5FXSxfLkVdLF8uRSxfLkQsMSxfLm5rZixfLkUsXy5HLF8uRCxfLkMsWzAsWzIsM10sXy5HLF8uSWwsWzAsXy5HXSxfLklsLFswLF8uR11dLF8uRG1jLFswLF8uRSxfLkcsLTEsXy5FLC0xXSxfLkYsXy5ua2YsXy5KbCxfLkQsXy5HXSxfLkYsWzAsXy5GLGxrZixfLkYsWzAsXy5FLApfLkYsbGtmXSxfLkUsXy5ELFswLF8ub21jLF8uRV0sXy5ELC0xLF8uRSxfLm96LF8uQyxfLkQsWzAsXy5HXV0sMSxfLkYsWzAsXy5GLFswLG9rZl0sXy5FXSxfLkUsWzAsWzAsXy5HLF8uQ10sXy5FLC0xLF8uRWxdLF8uRixbMCxfLkYsWzAsWzIsMyw0LDUsNiw3LDksMTAsMTUsMTcsMTgsMjIsMjQsMjUsMjYsMjcsMzQsMzddLFsxNF0sMSxfLkdsLF8uSWwsWzAsXy5GbCxfLkxsLDEsXy5DbCxaamYsXy5GbF0sXy5JbCxbMCxfLkZsLF8ueHMsXy5GbCxfLldrLFshMCxfLkUsXy5tbV0sXy5GLFswLFsyLDMsNCw1XSxfLkZsLF8uV2wsXy4kayxfLkdsLF8uRGwsXy5DbF0sXy5DbCxfLlVsLDIsXy5FbCxfLkYsWzAsWzEsMl0sXy5JbCxbMCxfLkZsLF8uTGwsXy5GbF0sXy5JbCxbMCxfLkZsLC0yXV1dLF8uSWwsWzAsXy5GbCxfLnhzLF8uRmwsXy5DbCxfLkcsMixfLkYsWzAsWzEsMiw1LDZdLF8uSWwsWzAsXy5GbCxfLkxsLF8uRmwsWmpmLGJrZl0sXy5JbCxbMCxfLkZsLC0yLFpqZl0sMiwKXy5JbCxbMCxja2YsXy5GbCxia2ZdLF8uSWwsWzAsYWtmLF8ueHMsXy5GbF1dLF8ubW0sXy5FbCxfLlVsXSxfLklsLFswLF8uRmwsLTEsMSxfLkNsLFpqZixfLkZsXSxfLklsLF8ueHMsXy54cyxfLklsLFswLF8uVWwsXy5GbCwtMV0sXy5JbCxbMCxfLlVsLF8uRmwsLTFdLF8uQ2wsMSxfLkxsLF8uSWwsWzAsXy5MciwtMSxfLlprLDIsXy52bF0sXy5JbCxja2YsMSxfLklsLFswLF8uVWxdLF8uSWwsWzAsXy5VbF0sXy5DbCxfLmttYyxfLkUsXy5JbCxha2YsWzAsXy5GbCwtMSxfLkYsWzAsXy5GbCxfLkxyLC0xXV0sXy5JbCxbMCxbMCxfLnZsLC0yLF8uRmxdLF8udWwsXy5kbCxfLkVsLF8uRyxfLnVsXSxfLklsLFswLF8uRmwsLTEsJGpmLC0xLF8uVWwsXy5tcGIsLTEsXy5GbCwxLF8uRWwsXy5DbCxbMCxfLkZsLF8uQ2wsLTMsWzAsWzAsXy5VbF0sXy5GLFswLF8uVWwsXy5Mcl0sWzAsWzMsNCw1XSxfLlVsLDEsXy5JbCxbMCxfLkZsXSxfLklsLFswLF8uVWxdLF8uSWwsWzBdXSxbMCxfLlVsLApfLkZsXSwtMSxfLkNsLC0xLF8uVGxdXSxfLkZsXSxfLklsLFswLF8uVWwsXy54cyxfLkZsXSxfLklsLFswLF8uVWwsXy54cyxfLkZsXSxfLkQsXy5GLFswLF8uRixbMCxbMyw0LDVdLF8uZWwsMSxfLklsLFswLF8uRmwsXy52bCwtMixfLkZsXSxfLklsLFswLF8udmwsLTJdLF8uSWwsWzAsXy52bCxfLlVsXV0sMSxfLnZsLC0xXSxfLkxyLGFrZixfLkVsLF8uRixbMCxbMSwyLDMsNCw4LDldLF8uSWwsWzAsXy5FLC0xLFswLF8udmwsLTJdLF8uRmwsLTJdLF8uSWwsWzAsXy5FLC0zLF8uRixbMCxbMiwzLDRdLF8uRmwsXy5HbCxfLklsLFswLF8uRWxdLF8uZmxdLF8uQyxfLkVdLF8uSWwsWzAsXy5FLC0zLFswLF8uRixbMCxfLkUsLTJdXSxbMCxfLkMsXy5McixfLkVdXSxfLklsLFswLF8uRmwsWzAsWzMsNCw1LDYsN10sXy5GbCwtMSxfLklsLFswLF8uRixbMCxfLmVsLC0zLF8udmxdXSxfLklsLFswLF8uTHIsLTFdLF8uR2wsXy5JbCxbMCxfLkZsXSxfLkdsXV0sXy5HLF8uRSwtMSxfLklsLApbMCxfLkZsLC0zXSxfLklsLFswLF8uRmxdLFswLFswLF8uRmwsLTIsWzAsXy5GbCxfLmptLF8uRmwsXy5VbCxbMCxfLkZsLC0xXV0sWzAsXy5GbCxbMCxfLkZsLC0yXV0sWzAsXy5GbCwtMV0sWzAsXy52bCxfLkZsXSxbMCxfLkZsXSxbMCxfLkNsLC0xXSxbMCxfLkZsLC0xLF8uam1dXV1dLF8uSWwsWzAsWzAsXy5GLFswLF8uTGwsXy5Mcl0sXy5FXSxbMCxfLkxsLF8uRV0sXy5GbF0sWzAsXy5DbCxfLkZsLC0xXSxfLkxsLF8uSWwsWzAsXy5MbF0sXy5obWMsXy5GbF0sXy5GbCxfLkNsXSxfLkYsWzAsXy5FLF8uQyxfLkYsWzAsXy5DLF8uRV0sXy5DLF8uRV1dLFswLF8uRSw3LG9rZl0sWzAsXy5GLFswLFsxLDIsMyw0XSxfLklsLFJqZixfLklsLFswLF8uRSxfLkYsUmpmXSxfLklsLFswLF8uSmxdLF8uSWwsWzAsXy5FXV1dLFswLF8uRSwzLF8uRixbMCxfLkUsMyxfLkUsLTFdLF8uRV1dLF8uam0sXy5FLF8uRCxfLkYsWzAsXy5FLF8uR10sXy5DXV07Xy5xa2Y9WzAsNCxbMCxfLkUsWzAsXy5FLC0xLDIsXy5FLC0xXSxfLkUsXy5yY2QsXy5FLC0yLDEsXy5xY2QsXy5EXSwxLFswLHBrZiwxLF8uRCxfLkVsLHBrZixbMCxfLkUsLTEsWzAsXy5qbSxfLkVdLF8uam0sXy5ELFswLF8uRSxfLkQsXy5FbCxbMCxfLkYsWzAsXy5FLC0xLF8uam0sXy5FLC0yXSxfLkcsXy5FXV0sXy5FLF8uam1dLF8uRixfLm96LF8uRSxfLldrLF8uWGsoXy5FLFswLF8uRSxfLkpsLDIsWzAsXy5FLC0xLFstMSx7fV0sMSxfLkVdXSksWzAsXy5FLC0xLFswLF8uT24sXy5GLFswLF8uT25dLFswLF8uT24sXy5DLF8uRV0sXy5FLF8uRyxbMCxfLk9uLF8uQ10sXy5Pbl0sXy5FXSxfLkUsWzAsXy5ELC0xLF8uRV0sXy5ELF8uV2ssXy5ZbCxfLkQsWzAsXy5FbCxfLkYsWzAsXy5FLDEsXy5pbF1dLF8uRV0sWzAsXy5tbSwzLF8ubW1dLFstMSx7fV0sWzAsXy5FXSxfLkdtYyxbLTEse31dLF8uR107Cn1jYXRjaChlKXtfLl9EdW1wRXhjZXB0aW9uKGUpfQp0cnl7Cl8udSgicjhFNFplIik7CnZhciBObGY9Y2xhc3MgZXh0ZW5kcyBfLmx7Y29uc3RydWN0b3IoYSl7c3VwZXIoYSl9Z2V0Q29udGV4dCgpe3JldHVybiBfLnEodGhpcyxfLmtrZiwxKX19O3ZhciBPbGY9Xy5ZYihbMCxfLnFrZixfLklsZl0pO3ZhciBQbGY9YXN5bmMgZnVuY3Rpb24oYSl7dmFyIGI9KDAsXy5NZikoKSxjPWIoKTtiPWIoMSk7dHJ5e2xldCBrPWEuZ2V0Um9vdCgpLmhiKCkucXVlcnlTZWxlY3RvcignW2pzbmFtZT0iV1Y2M1RlIl0nKTtpZihrIGluc3RhbmNlb2YgSFRNTEVsZW1lbnQpe3ZhciBkPW5ldyBNYXAsZT1kLnNldCxmPW5ldyBObGY7bGV0IG09Xy5LbGYoXy5KbGYobmV3IF8uTGxmLF8uT2EoT2xmKGYpLDQpKSwiVHJFdUFjIik7dmFyIGc9Xy5PYSgoMCxfLk1sZikobSksNCk7ZS5jYWxsKGQsInVscmMiLGcpO3ZhciBoPShuZXcgVVJMU2VhcmNoUGFyYW1zKHdpbmRvdy5sb2NhdGlvbi5zZWFyY2gpKS5nZXQoImF0dm0iKTtoJiZkLnNldCgiYXR2bSIsaCk7ZD17dXJsUGFyYW1zOmR9O2U9e1duYjohMCx0cmlnZ2VyOmt9O3RyeXthLmthPSEwLGIoYXdhaXQgYyhfLlFrZihrLGQsZSkpKSxhLlZhKCJsejJ4TGIiKS5yZW1vdmUoKX1jYXRjaChuKXt0aHJvdyBiKCksYS5rYT0hMSxhLmdldFJvb3QoKS5lbCgpLmNsYXNzTGlzdC50b2dnbGUoIk8xd1RtZiIsCiExKSxrLnRleHRDb250ZW50PSIiLG47fWZpbmFsbHl7YS56Y2E9bnVsbH19fWZpbmFsbHl7YygpfX0sUmxmPWNsYXNzIGV4dGVuZHMgXy5oc3tzdGF0aWMgUWEoKXtyZXR1cm57c2VydmljZTp7S25hOl8uZGFlfX19Y29uc3RydWN0b3IoYSl7c3VwZXIoKTt0aGlzLndhPXRoaXMua2E9ITE7dGhpcy5LbmE9dGhpcy5vYT10aGlzLnZpZXdwb3J0PXRoaXMuemNhPW51bGw7dGhpcy5BYT1kPT57ZC5wcmV2ZW50RGVmYXVsdCgpO3ZhciBlOyhlPXRoaXMuS25hKT09bnVsbHx8ZS5yZXNldCgpO3ZhciBmOyhmPXRoaXMuS25hKT09bnVsbHx8Zi5zZXRBaW1TdGF0ZUFjdGl2ZSghMSl9O3RoaXMudmlld3BvcnQ9ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgiTDNlVWdiIikuaXRlbSgwKTt2YXIgYixjO3RoaXMuS25hPShjPShiPWEuc2VydmljZSk9PW51bGw/dm9pZCAwOmIuS25hKSE9bnVsbD9jOm51bGw7dGhpcy5vYT1kb2N1bWVudC5xdWVyeVNlbGVjdG9yKCdbanNuYW1lPSJEUGdQamYiXScpfWFzeW5jIE5kKCl7dmFyIGE9CigwLF8uTWYpKCksYj1hKCk7YT1hKDEpO3RyeXtRbGYmJmEoYXdhaXQgYihQbGYodGhpcykpKTtsZXQgYzsoYz10aGlzLm9hKT09bnVsbHx8Yy5hZGRFdmVudExpc3RlbmVyKCJjbGljayIsdGhpcy5BYSl9ZmluYWxseXtiKCl9fWFzeW5jIGRpc3Bvc2UoKXt2YXIgYTsoYT10aGlzLm9hKT09bnVsbHx8YS5yZW1vdmVFdmVudExpc3RlbmVyKCJjbGljayIsdGhpcy5BYSk7c3VwZXIuZGlzcG9zZSgpfWFzeW5jIEdhKGEpe3ZhciBiPSgwLF8uTWYpKCksYz1iKCk7Yj1iKDEpO3RyeXtsZXQgZT1hLmRhdGE7KHRoaXMud2E9ZSkmJiF0aGlzLmthJiYodGhpcy56Y2F8fCh0aGlzLnpjYT1QbGYodGhpcykpLGIoYXdhaXQgYyh0aGlzLnpjYSkpKTt2YXIgZD10aGlzLndhO3RoaXMuZ2V0Um9vdCgpLmVsKCkuY2xhc3NMaXN0LnRvZ2dsZSgiTzF3VG1mIixkKX1maW5hbGx5e2MoKX19QmEoYSl7aWYoUWxmKXthPWEuZGF0YTtsZXQgYjsoYj10aGlzLnZpZXdwb3J0KT09bnVsbHx8Yi5jbGFzc0xpc3QudG9nZ2xlKCJDMnVtR2MiLAphKTtsZXQgYzsoYz10aGlzLnZpZXdwb3J0KT09bnVsbHx8Yy5jbGFzc0xpc3QudG9nZ2xlKCJZeXg5TGIiLCFhKX19RWEoYSl7aWYoUWxmKXtsZXQgYjsoYj10aGlzLktuYSk9PW51bGx8fGIuc2V0TGhzUGFuZWxTdGF0ZShhLmRhdGEpfX19O1JsZi5wcm90b3R5cGUuJHdhJEswYldHZT1mdW5jdGlvbigpe3JldHVybiB0aGlzLkVhfTtSbGYucHJvdG90eXBlLiR3YSRvb1ZmUGQ9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5CYX07UmxmLnByb3RvdHlwZS4kd2EkT3pyMEhiPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuR2F9O1JsZi5wcm90b3R5cGUuJHdhJEE1R1NJYj1mdW5jdGlvbigpe3JldHVybiB0aGlzLmRpc3Bvc2V9O1JsZi5wcm90b3R5cGUuJHdhJG5wVDJtZD1mdW5jdGlvbigpe3JldHVybiB0aGlzLk5kfTt2YXIgUWxmPV8uR2ZlO18uanMoXy5IbGYsUmxmKTsKCl8udigpOwp9Y2F0Y2goZSl7Xy5fRHVtcEV4Y2VwdGlvbihlKX0KdHJ5ewpfLm80ZT1fLmtjKCJuTnhrWWQiLFtdKTsKfWNhdGNoKGUpe18uX0R1bXBFeGNlcHRpb24oZSl9CnRyeXsKXy51KCJuTnhrWWQiKTsKdmFyIHA0ZT1jbGFzcyBleHRlbmRzIF8uaHN7Y29uc3RydWN0b3IoKXtzdXBlcigpO3RoaXMub2E9MDt0aGlzLm9uQ2xvc2U9KCk9Pnt9O3RoaXMuS209dGhpcy5nZXRSb290KCkuZWwoKTt2YXIgYT10aGlzLkttLmdldEF0dHJpYnV0ZSgiYXJpYS1sYWJlbCIpO2EmJiFfLnNMYiYmXy5UZmUodGhpcy5LbSxhKX1zZXRTdGF0ZShhKXt0aGlzLm9hPWE7dGhpcy5NZigpO3JldHVybiB0aGlzfU1mKCl7dGhpcy5LbS5jbGFzc0xpc3QudG9nZ2xlKCJNSVRMVSIsdGhpcy5vYT09PTEpO3RoaXMuS20uaGFzQXR0cmlidXRlKCJkYXRhLXZlZCIpJiZfLkR2KFtuZXcgXy5mbyh0aGlzLkttLCJzaG93IildKX1rYSgpe3RoaXMub25DbG9zZSgpfXdhKGEpe3ZhciBiPWEuZXZlbnQ7aWYoYi5rZXk9PT0iRW50ZXIifHxiLmtleT09PSIgIil0aGlzLmthKGEpLGIucHJldmVudERlZmF1bHQoKX1OaCgpe31HZygpe31oaWRkZW4oKXt9fTtwNGUucHJvdG90eXBlLiR3YSRMNmNUY2U9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5oaWRkZW59OwpwNGUucHJvdG90eXBlLiR3YSRUU1pkZD1mdW5jdGlvbigpe3JldHVybiB0aGlzLkdnfTtwNGUucHJvdG90eXBlLiR3YSRBd2RFcWQ9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5OaH07cDRlLnByb3RvdHlwZS4kd2EkZHVBU1pjPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMud2F9O3A0ZS5wcm90b3R5cGUuJHdhJGxNR3hUZD1mdW5jdGlvbigpe3JldHVybiB0aGlzLmthfTtfLmpzKF8ubzRlLHA0ZSk7Cl8udigpOwp9Y2F0Y2goZSl7Xy5fRHVtcEV4Y2VwdGlvbihlKX0KdHJ5ewpfLm53PWZ1bmN0aW9uKGEpe2lmKGEhPW51bGwpe3ZhciBiPU51bWJlcihhKTtyZXR1cm4gTnVtYmVyLmlzU2FmZUludGVnZXIoYik/YjpTdHJpbmcoYSl9fTsKfWNhdGNoKGUpe18uX0R1bXBFeGNlcHRpb24oZSl9CnRyeXsKXy5rdz1mdW5jdGlvbigpe3JldHVybiBfLkxZYigpPyJydGwiOiJsdHIifTtfLk1ZYj1mdW5jdGlvbigpe307Xy5NWWIucHJvdG90eXBlLmluaXRpYWxpemU9ZnVuY3Rpb24oYSl7dGhpcy5rYT1hfHx7fX07Xy5sdz1mdW5jdGlvbihhLGIsYyl7YT1hLmthW2JdO3JldHVybiBhIT1udWxsP2E6Y307dmFyIE5ZYj1mdW5jdGlvbihhKXt0aGlzLmluaXRpYWxpemUoYSl9LFBZYjtfLlVpKE5ZYixfLk1ZYik7Xy5MWWI9ZnVuY3Rpb24oKXt2YXIgYT1fLm13KCk7cmV0dXJuISFfLmx3KGEsImlzX3J0bCIpfTtQWWI9ZnVuY3Rpb24oYSl7T1liLmthLmNzczNfcHJlZml4PWF9O3ZhciBPWWI7Xy5tdz1mdW5jdGlvbigpe09ZYnx8KE9ZYj1uZXcgTlliLF8uZ2JhKCk/UFliKCItd2Via2l0LSIpOl8uTmEuWkhhKCk/UFliKCItbW96LSIpOl8uTmEuYnBhKCk/UFliKCItbXMtIik6Xy5OYS5EdWIoKSYmUFliKCItby0iKSxPWWIua2EuaXNfcnRsPSExLE9ZYi5rYS5sYW5ndWFnZT0ibm8iKTtyZXR1cm4gT1lifTtPWWI9bnVsbDsKfWNhdGNoKGUpe18uX0R1bXBFeGNlcHRpb24oZSl9CnRyeXsKdmFyIHpaYixDWmIsRFpiLE1aYix5WmIsT1piLFFaYixSWmIsc1piLHZaYix0WmIsdVpiLHdaYix4WmI7Xy5yWmI9ZnVuY3Rpb24oYSxiKXthW2JdfHwoYVtiXT1bXSk7cmV0dXJuIGFbYl19O18uU3c9ZnVuY3Rpb24oYSxiKXtpZihzWmIudGVzdChiKSlyZXR1cm4gYjtiPWIuaW5kZXhPZigibGVmdCIpPj0wP2IucmVwbGFjZSh0WmIsInJpZ2h0Iik6Yi5yZXBsYWNlKHVaYiwibGVmdCIpO18uQWEodlpiLGEpJiYoYT1iLnNwbGl0KHdaYiksYS5sZW5ndGg+PTQmJihiPVthWzBdLGFbM10sYVsyXSxhWzFdXS5qb2luKCIgIikpKTtyZXR1cm4gYn07elpiPWZ1bmN0aW9uKGEsYil7dmFyIGM9YSsiOzsiK3haYisrO18ucVhhLnNldChjLGIpO18uclhhLmhhcyhhKXx8KHlaYihhLCgpPT4iIiksXy5yWGEuYWRkKGEpKTtyZXR1cm4gY307Cl8uVHc9ZnVuY3Rpb24oYSl7YT1fLkZjKGEpLnRvU3RyaW5nKCk7cmV0dXJuIGE9PT1fLkVjLnRvU3RyaW5nKCk/ImFib3V0OmludmFsaWQjempzbGF5b3V0eiI6YX07Xy5Vdz1mdW5jdGlvbihhKXtpZihBWmIudGVzdChhKSlyZXR1cm4gYTthPV8uRmMoYSkudG9TdHJpbmcoKTtyZXR1cm4gYT09PV8uRWMudG9TdHJpbmcoKT8iYWJvdXQ6aW52YWxpZCN6anNsYXlvdXR6IjphfTtfLlZ3PWZ1bmN0aW9uKGEpe2lmKGE9PW51bGwpcmV0dXJuIG51bGw7aWYoIUJaYi50ZXN0KGEpfHxDWmIoYSwwKSE9MClyZXR1cm4iempzbGF5b3V0emludmFsaWQiO2Zvcih2YXIgYj1SZWdFeHAoIihbLV9hLXpBLVowLTldKylcXCgiLCJnIiksYzsoYz1iLmV4ZWMoYSkpIT09bnVsbDspaWYoRFpiKGNbMV0sITEpPT09bnVsbClyZXR1cm4iempzbGF5b3V0emludmFsaWQiO3JldHVybiBhfTsKQ1piPWZ1bmN0aW9uKGEsYil7aWYoYjwwKXJldHVybi0xO2ZvcihsZXQgYz0wO2M8YS5sZW5ndGg7YysrKXtsZXQgZD1hLmNoYXJBdChjKTtpZihkPT0iKCIpYisrO2Vsc2UgaWYoZD09IikiKWlmKGI+MCliLS07ZWxzZSByZXR1cm4tMX1yZXR1cm4gYn07Cl8uV3c9ZnVuY3Rpb24oYSl7aWYoYT09bnVsbClyZXR1cm4gbnVsbDtmb3IodmFyIGI9UmVnRXhwKCIoWy1fYS16QS1aMC05XSspXFwoIiwiZyIpLGM9UmVnRXhwKCJbIFx0XSooKD86XCIoPzpbXlxceDAwXCJcXFxcXFxuXFxyXFxmXFx1MDA4NVxcdTAwMGJcXHUyMDI4XFx1MjAyOV0qKVwifCcoPzpbXlxceDAwJ1xcXFxcXG5cXHJcXGZcXHUwMDg1XFx1MDAwYlxcdTIwMjhcXHUyMDI5XSopJyl8KD86Wz8mLzo9XXxbK1xcLS4sISMlX2EtekEtWjAtOVx0XSkqKVsgXHRdKiIsImciKSxkPSEwLGU9MCxmPSIiO2Q7KXtiLmxhc3RJbmRleD0wO3ZhciBnPWIuZXhlYyhhKTtkPWchPT1udWxsO3ZhciBoPWE7bGV0IG07aWYoZCl7aWYoZ1sxXT09PXZvaWQgMClyZXR1cm4iempzbGF5b3V0emludmFsaWQiO209RFpiKGdbMV0sITApO2lmKG09PT1udWxsKXJldHVybiJ6anNsYXlvdXR6aW52YWxpZCI7aD1hLnN1YnN0cmluZygwLGIubGFzdEluZGV4KTthPWEuc3Vic3RyaW5nKGIubGFzdEluZGV4KX1lPQpDWmIoaCxlKTtpZihlPDB8fCFCWmIudGVzdChoKSlyZXR1cm4iempzbGF5b3V0emludmFsaWQiO2YrPWg7aWYoZCYmbT09InVybCIpe2MubGFzdEluZGV4PTA7Zz1jLmV4ZWMoYSk7aWYoZz09PW51bGx8fGcuaW5kZXghPTApcmV0dXJuInpqc2xheW91dHppbnZhbGlkIjt2YXIgaz1nWzFdO2lmKGs9PT12b2lkIDApcmV0dXJuInpqc2xheW91dHppbnZhbGlkIjtnPWsubGVuZ3RoPT0wPzA6Yy5sYXN0SW5kZXg7aWYoYS5jaGFyQXQoZykhPSIpIilyZXR1cm4iempzbGF5b3V0emludmFsaWQiO2g9IiI7ay5sZW5ndGg+MSYmKF8uaWEoaywnIicpJiZfLmphYShrLCciJyk/KGs9ay5zdWJzdHJpbmcoMSxrLmxlbmd0aC0xKSxoPSciJyk6Xy5pYShrLCInIikmJl8uamFhKGssIiciKSYmKGs9ay5zdWJzdHJpbmcoMSxrLmxlbmd0aC0xKSxoPSInIikpO2s9Xy5VdyhrKTtpZihrPT0iYWJvdXQ6aW52YWxpZCN6anNsYXlvdXR6IilyZXR1cm4iempzbGF5b3V0emludmFsaWQiO2YrPWgraytoO2E9CmEuc3Vic3RyaW5nKGcpfX1yZXR1cm4gZSE9MD8iempzbGF5b3V0emludmFsaWQiOmZ9O0RaYj1mdW5jdGlvbihhLGIpe3ZhciBjPWEudG9Mb3dlckNhc2UoKTthPUVaYi5leGVjKGEpO2lmKGEhPT1udWxsKXtpZihhWzFdPT09dm9pZCAwKXJldHVybiBudWxsO2M9YVsxXX1yZXR1cm4gYiYmYz09InVybCJ8fGMgaW4gRlpiP2M6bnVsbH07Xy5SPWZ1bmN0aW9uKGEpe2lmKGE9PW51bGwpcmV0dXJuIiI7aWYoIUdaYi50ZXN0KGEpKXJldHVybiBhO2EuaW5kZXhPZigiJiIpIT0tMSYmKGE9YS5yZXBsYWNlKEhaYiwiJmFtcDsiKSk7YS5pbmRleE9mKCI8IikhPS0xJiYoYT1hLnJlcGxhY2UoSVpiLCImbHQ7IikpO2EuaW5kZXhPZigiPiIpIT0tMSYmKGE9YS5yZXBsYWNlKEpaYiwiJmd0OyIpKTthLmluZGV4T2YoJyInKSE9LTEmJihhPWEucmVwbGFjZShLWmIsIiZxdW90OyIpKTtyZXR1cm4gYX07Cl8uWHc9ZnVuY3Rpb24oYSl7aWYoYT09bnVsbClyZXR1cm4iIjthLmluZGV4T2YoJyInKSE9LTEmJihhPWEucmVwbGFjZShLWmIsIiZxdW90OyIpKTtyZXR1cm4gYX07Xy5Zdz1mdW5jdGlvbihhKXtyZXR1cm4gXy55KGEpfTtfLkxaYj1mdW5jdGlvbihhKXtyZXR1cm4gYSE9bnVsbCYmdHlwZW9mIGE9PSJvYmplY3QiJiZ0eXBlb2YgYS5sZW5ndGg9PSJudW1iZXIiJiZ0eXBlb2YgYS5wcm9wZXJ0eUlzRW51bWVyYWJsZSE9InVuZGVmaW5lZCImJiFhLnByb3BlcnR5SXNFbnVtZXJhYmxlKCJsZW5ndGgiKX07TVpiPWZ1bmN0aW9uKGEpe3JldHVybiBhIT1udWxsJiZ0eXBlb2YgYT09PSJvYmplY3QiJiZhLmNvbnN0cnVjdG9yPT09T2JqZWN0fTsKXy5adz1mdW5jdGlvbihhKXtyZXR1cm4gdHlwZW9mIGE9PT0ic3RyaW5nIj9gJyR7U3RyaW5nKGEpfSdgOnR5cGVvZiBhIT09Im9iamVjdCJ8fGE9PT1udWxsP1N0cmluZyhhKTpBcnJheS5pc0FycmF5KGEpP2BbJHthLm1hcChfLlp3KS5qb2luKCIsIil9XWA6YHske09iamVjdC5rZXlzKGEpLm1hcChiPT57dmFyIGM9Xy5adyhhW2JdKTtyZXR1cm5gJHtifToke2N9YH0pLmpvaW4oIiwiKX19YH07eVpiPWZ1bmN0aW9uKGEsYil7Xy5ab1thXT1ifTtfLk5aYj1mdW5jdGlvbihhLGIpe3ZhciBjPXt9O18uclpiKGEua2EsYikucHVzaChjKTtyZXR1cm4gY307T1piPWZ1bmN0aW9uKGEpe3RoaXMuaW5pdGlhbGl6ZShhKX07Xy5VaShPWmIsXy5NWWIpO09aYi5wcm90b3R5cGUuZGg9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5rYS5uYW1lIT1udWxsfTtPWmIucHJvdG90eXBlLmdldE5hbWU9ZnVuY3Rpb24oKXtyZXR1cm4gXy5sdyh0aGlzLCJuYW1lIiwiIil9OwpPWmIucHJvdG90eXBlLkVlPWZ1bmN0aW9uKGEpe3RoaXMua2EubmFtZT1hfTtfLlBaYj1mdW5jdGlvbihhLGIpe3JldHVybiBhLmthW2JdP2Eua2FbYl0ubGVuZ3RoOjB9O1FaYj1mdW5jdGlvbihhKXt2YXIgYj1PWmIsYz1bXTtmb3IobGV0IGc9MDtnPF8uUFpiKGEsInJ1bGUiKTtnKyspe3ZhciBkPWMsZT1kLnB1c2g7dmFyIGY9ZztmPV8uclpiKGEua2EsInJ1bGUiKVtmXTtlLmNhbGwoZCxuZXcgYihmKSl9cmV0dXJuIGN9O1JaYj1mdW5jdGlvbihhKXt0aGlzLmluaXRpYWxpemUoYSl9O18uVWkoUlpiLF8uTVliKTtSWmIucHJvdG90eXBlLmFkZFJ1bGU9ZnVuY3Rpb24oKXtyZXR1cm4gbmV3IE9aYihfLk5aYih0aGlzLCJydWxlIikpfTtzWmI9L1snIlwoXS87dlpiPVsiYm9yZGVyLWNvbG9yIiwiYm9yZGVyLXN0eWxlIiwiYm9yZGVyLXdpZHRoIiwibWFyZ2luIiwicGFkZGluZyJdO3RaYj0vbGVmdC9nO3VaYj0vcmlnaHQvZzt3WmI9L1xzKy87Cl8uJHc9ZnVuY3Rpb24oYSl7cmV0dXJuIF8uQkhhKGRvY3VtZW50LGEpfTt4WmI9MTtfLlNaYj1mdW5jdGlvbigpe3dpbmRvdy5XX2pkJiZ3aW5kb3cuV19qZC50cTdQeGImJihfLllZYihuZXcgXy5VWWIod2luZG93LldfamQudHE3UHhiKSksZGVsZXRlIHdpbmRvdy5XX2pkLnRxN1B4Yil9O18uVFpiPWZ1bmN0aW9uKGEpe18uU1piKCk7cmV0dXJuIF8uVlliW2FdP18uVlliW2FdOm5ldyBfLlRZYn07Xy5heD1mdW5jdGlvbihhKXthPV8uVFpiKGEpO3JldHVybiBfLk9rKGEsNSxfLlNZYik/Xy5YaihhLDUsXy5TWWIpfHwwOl8uU0RhKGEsNCxfLlNZYik/Xy50ZShfLkRlKGEsXy5saihhLF8uU1liLDQpKSl8fDA6MH07Xy5ieD1mdW5jdGlvbihhKXthPV8uVFpiKGEpO3JldHVybiBfLllqKGEsMyxfLlNZYil8fCIifTt2YXIgQVpiLEZaYixCWmIsRVpiO0FaYj1SZWdFeHAoIl5kYXRhOmltYWdlLyg/OmJtcHxnaWZ8anBlZ3xqcGd8cG5nfHRpZmZ8d2VicHx4LWljb24pO2Jhc2U2NCxbLSsvX2EtejAtOV0rKD86PXwlM2QpKiQiLCJpIik7Xy5VWmI9UmVnRXhwKCJeKD86WzAtOV0rKShbIF0qO1sgXSp1cmw9KT8oLiopJCIpOwpGWmI9e2JsdXI6ITAsYnJpZ2h0bmVzczohMCxjYWxjOiEwLGNpcmNsZTohMCxjbGFtcDohMCwiY29uaWMtZ3JhZGllbnQiOiEwLGNvbnRyYXN0OiEwLGNvdW50ZXI6ITAsY291bnRlcnM6ITAsImN1YmljLWJlemllciI6ITAsImRyb3Atc2hhZG93IjohMCxlbGxpcHNlOiEwLGdyYXlzY2FsZTohMCxoc2w6ITAsaHNsYTohMCwiaHVlLXJvdGF0ZSI6ITAsaW5zZXQ6ITAsaW52ZXJ0OiEwLG9wYWNpdHk6ITAsImxpbmVhci1ncmFkaWVudCI6ITAsbWF0cml4OiEwLG1hdHJpeDNkOiEwLG1heDohMCxtaW46ITAsbWlubWF4OiEwLHBvbHlnb246ITAsInJhZGlhbC1ncmFkaWVudCI6ITAscmdiOiEwLHJnYmE6ITAscmVjdDohMCxyZXBlYXQ6ITAscm90YXRlOiEwLHJvdGF0ZTNkOiEwLHJvdGF0ZXg6ITAscm90YXRleTohMCxyb3RhdGV6OiEwLHNhdHVyYXRlOiEwLHNlcGlhOiEwLHNjYWxlOiEwLHNjYWxlM2Q6ITAsc2NhbGV4OiEwLHNjYWxleTohMCxzY2FsZXo6ITAsc3RlcHM6ITAsc2tldzohMCwKc2tld3g6ITAsc2tld3k6ITAsdHJhbnNsYXRlOiEwLHRyYW5zbGF0ZTNkOiEwLHRyYW5zbGF0ZXg6ITAsdHJhbnNsYXRleTohMCx0cmFuc2xhdGV6OiEwLCJ2YXIiOiEwfTtCWmI9UmVnRXhwKCJeKD86WyovXT8oPzooPzpbK1xcLS4sISMlX2EtekEtWjAtOVx0XXwgKXxcXCl8W2EtekEtWjAtOV1cXCh8JCkpKiQiKTtfLlZaYj1SZWdFeHAoIl4oPzpbKi9dPyg/Oig/OlwiKD86W15cXHgwMFwiXFxcXFxcblxcclxcZlxcdTAwODVcXHUwMDBiXFx1MjAyOFxcdTIwMjldfFxcXFwoPzpbXFx4MjEtXFx4MmZcXHgzYS1cXHg0MFxceDQ3LVxceDYwXFx4NjctXFx4N2VdfFswLTlhLWZBLUZdezEsNn1bIFx0XT8pKSpcInwnKD86W15cXHgwMCdcXFxcXFxuXFxyXFxmXFx1MDA4NVxcdTAwMGJcXHUyMDI4XFx1MjAyOV18XFxcXCg/OltcXHgyMS1cXHgyZlxceDNhLVxceDQwXFx4NDctXFx4NjBcXHg2Ny1cXHg3ZV18WzAtOWEtZkEtRl17MSw2fVsgXHRdPykpKicpfCg/OlsrXFwtLiwhIyVfYS16QS1aMC05XHRdfCApfCQpKSokIik7CkVaYj1SZWdFeHAoIl4tKD86bW96fG1zfG98d2Via2l0fGNzczMpLSguKikkIik7Xy5XWmI9Y2xhc3N7Y29uc3RydWN0b3IoYSxiKXt0aGlzLm9hPSIiO3RoaXMua2E9Ynx8e307aWYodHlwZW9mIGE9PT0ic3RyaW5nIil0aGlzLm9hPWE7ZWxzZXtiPWEua2E7dGhpcy5vYT1hLmdldEtleSgpO2ZvcihsZXQgYyBpbiBiKXRoaXMua2FbY109PW51bGwmJih0aGlzLmthW2NdPWJbY10pfX1nZXRLZXkoKXtyZXR1cm4gdGhpcy5vYX19O18uWFpiPV8udWphKHsiZm9yIjoiaHRtbEZvciIsImNsYXNzIjoiY2xhc3NOYW1lIn0pO3ZhciBIWmIsSVpiLEpaYixLWmIsR1piO18uWVpiPVJlZ0V4cCgiXjwvPyhifHV8aXxlbXxicnxzdWJ8c3VwfHdicnxzcGFuKSggZGlyPShydGx8bHRyfCdsdHInfCdydGwnfFwibHRyXCJ8XCJydGxcIikpPz4iKTtfLlpaYj1SZWdFeHAoIl4mKFthLXpBLVpdK3wjWzAtOV0rfCN4WzAtOWEtZkEtRl0rKTsiKTtIWmI9LyYvZztJWmI9LzwvZztKWmI9Lz4vZztLWmI9LyIvZztHWmI9L1smPD4iXS87Xy4kWmI9ZnVuY3Rpb24oYSl7dmFyIGI9YVsxXT1fLmpkKGFbMF0pO2lmKGJbNl0pe2xldCBjPWJbNl0uc3BsaXQoIiYiKSxkPXt9O2ZvcihsZXQgZT0wLGY9Yy5sZW5ndGg7ZTxmOysrZSl7bGV0IGc9Y1tlXS5zcGxpdCgiPSIpO2lmKGcubGVuZ3RoPT0yKXtsZXQgaD1nWzFdLnJlcGxhY2UoLywvZ2ksIiUyQyIpLnJlcGxhY2UoL1srXS9nLCIlMjAiKS5yZXBsYWNlKC86L2csIiUzQSIpO3RyeXtkW2RlY29kZVVSSUNvbXBvbmVudChnWzBdKV09ZGVjb2RlVVJJQ29tcG9uZW50KGgpfWNhdGNoKGspe319fWJbNl09ZH1hWzBdPW51bGx9OwpfLmFfYj1mdW5jdGlvbihhKXtpZihhWzZdKXt2YXIgYj1hWzZdO3ZhciBjPVtdO2ZvcihsZXQgZCBpbiBiKXtsZXQgZT1iW2RdO2UhPW51bGwmJmMucHVzaChlbmNvZGVVUklDb21wb25lbnQoZCkrIj0iK2VuY29kZVVSSUNvbXBvbmVudChlKS5yZXBsYWNlKC8lM0EvZ2ksIjoiKS5yZXBsYWNlKC8lMjAvZywiKyIpLnJlcGxhY2UoLyUyQy9naSwiLCIpLnJlcGxhY2UoLyU3Qy9naSwifCIpKX1iPWMuam9pbigiJiIpO2FbNl09Yn1hWzFdPT0iaHR0cCImJmFbNF09PSI4MCImJihhWzRdPW51bGwpO2FbMV09PSJodHRwcyImJmFbNF09PSI0NDMiJiYoYVs0XT1udWxsKTtiPWFbM107LzpbMC05XSskLy50ZXN0KGIpJiYoYz1iLmxhc3RJbmRleE9mKCI6IiksYVszXT1iLnN1YnN0cigwLGMpLGFbNF09Yi5zdWJzdHIoYysxKSk7Yj1hWzVdO2FbM10mJmImJiFiLnN0YXJ0c1dpdGgoIi8iKSYmKGFbNV09Ii8iK2IpO3JldHVybiBfLllqYShhWzFdLGFbMl0sYVszXSxhWzRdLGFbNV0sYVs2XSwKYVs3XSl9O18uYl9iPWZ1bmN0aW9uKGEsYil7dmFyIGM9W107YiYmKGI9W2JdLF8uJFpiKGIpLGM9YlsxXSk7YS5zY2hlbWU/Y1sxXT1hLnNjaGVtZTphLnNjaGVtZT09PW51bGwmJihjWzFdPXZvaWQgMCk7YS5kb21haW4mJihjWzNdPWEuZG9tYWluKTthLnBvcnQ/Y1s0XT1hLnBvcnQ6YS5wb3J0PT09bnVsbCYmKGNbNF09dm9pZCAwKTthLnBhdGgmJihjWzVdPWEucGF0aCk7YS5mcmFnbWVudD9jWzddPWEuZnJhZ21lbnQ6YS5mcmFnbWVudD09PW51bGwmJihjWzddPXZvaWQgMCk7aWYoYS5ZcWEpe2xldCBkPWNbNl18fHt9O09iamVjdC5lbnRyaWVzKGEuWXFhKS5mb3JFYWNoKChbZSxmXSk9PntmIT09dm9pZCAwP2RbZV09ZjpmPT09bnVsbCYmZGVsZXRlIGRbZV19KTtjWzZdPWR9cmV0dXJuIF8uYV9iKGMpfTtfLmN4PWZ1bmN0aW9uKGEpe3JldHVybiBhfHwiIyJ9O18uZHg9ZnVuY3Rpb24oYSl7cmV0dXJuIGF8fCIvaW1hZ2VzL2NsZWFyZG90LmdpZiJ9O3ZhciBjX2I7Y19iPW51bGw7Xy5leD1mdW5jdGlvbihhLGIpe3JldHVybiBfLlN3KGEsYil9O18uUz1mdW5jdGlvbihhLGIpe3JldHVybiBhPT1udWxsP251bGw6bmV3IF8uV1piKGEsYil9O18uZng9ZnVuY3Rpb24oYSxiLGMpe2ZvcihsZXQgZj0yO2Y8YXJndW1lbnRzLmxlbmd0aDsrK2Ype2lmKGE9PW51bGx8fGFyZ3VtZW50c1tmXT09bnVsbClyZXR1cm4gYjt2YXIgZD1hLGU9YXJndW1lbnRzW2ZdO2lmKHR5cGVvZiBlPT0ibnVtYmVyIiYmZTwwKXtsZXQgZz1kLmxlbmd0aDtnPT1udWxsP2E9ZFstZV06KGU9LWUtMSxlPGcmJihlIT09Zy0xfHwhTVpiKGRbZy0xXSkpP2U9ZFtlXTooZD1kW2QubGVuZ3RoLTFdLGU9TVpiKGQpP2RbZSsxXXx8bnVsbDpudWxsKSxhPWUpfWVsc2UgYT1kW2VdfXJldHVybiBhPT1udWxsP2I6YX07Cl8uVD1mdW5jdGlvbihhLGIsLi4uYyl7Zm9yKGxldCBkIG9mIGMpe2lmKCFhKXJldHVybiBiO2E9ZChhKX1yZXR1cm4gYT09bnVsbHx8YT09dm9pZCAwP2I6YX07Xy5qeD1mdW5jdGlvbihhLC4uLmIpe2ZvcihsZXQgYyBvZiBiKXtpZighYSlyZXR1cm4gMDthPWMoYSl9cmV0dXJuIGE9PW51bGx8fGE9PXZvaWQgMD8wOl8uTFpiKGEpP2EubGVuZ3RoOi0xfTtfLlU9ZnVuY3Rpb24oYSwuLi5iKXtmb3IobGV0IGMgb2YgYil7aWYoIWEpcmV0dXJuITE7YT1jKGEpfXJldHVybiBhfTtfLmt4PWZ1bmN0aW9uKGEpe2NfYnx8KGNfYj1uZXcgXy5MdygxKSk7cmV0dXJuIGNfYi5mb3JtYXQoYSl9OwpfLmx4PWZ1bmN0aW9uKGEsYil7aWYoYT09bnVsbClyZXR1cm5bXTt2YXIgYz1hLmxlbmd0aCE9bnVsbDtpZihjJiZiIT0zMiYmYiE9OClyZXR1cm4gYTt2YXIgZD1hLl9qc2xBcnJheUNhY2hlO2R8fChkPVtdLGEuX2pzbEFycmF5Q2FjaGU9ZCk7dmFyIGU9Yz9hLmxlbmd0aDphLnNpemUoKTtkLmxlbmd0aD1lO3ZhciBmPWEuZ2V0QXRJbmRleD8iZ2V0QXRJbmRleCI6ImdldCI7Zm9yKGxldCBnPTA7ZzxlO2crKyl7bGV0IGg9Yz9hW2ddOmFbZl0oZyk7Yj09MzImJmg9PW51bGwmJihoPSIiKTtkW2ddPWh9cmV0dXJuIGR9OwpfLm14PWZ1bmN0aW9uKGEsYil7dmFyIGM9Xy5tdygpO2M9bmV3IFJaYihjLmthLmNzczNfcHJlZml4X3J1bGVzKTtmb3IobGV0IGQgb2YgUVpiKGMpLnNsaWNlKCkudmFsdWVzKCkpaWYoZC5nZXROYW1lKCk9PT1hJiZfLmx3KGQsInJvbGUiLDApPT09MHx8Xy5sdyhkLCJyb2xlIiwwKT09PWIpcmV0dXJuIF8ubHcoZCwicHJlZml4ZWRfbmFtZSIsIiIpO18uU1piKCk7aWYoYz1fLldZYilmb3IobGV0IGQgb2YgXy5taChjLF8uUVliLDEsXy5vaCgpKSlpZihfLmdoKGQsMSk9PT1hJiZfLk9qKGQsMyk9PT0wfHxfLk9qKGQsMyk9PT1iKXJldHVybiBfLnQoZCwyKTtiPV8ubXcoKTtyZXR1cm4gXy5sdyhiLCJjc3MzX3ByZWZpeCIsIiIpK2F9O18ubng9ZnVuY3Rpb24oYSxiLGMpe2M9fn4oY3x8MCk7Yz09MCYmKGM9MSk7dmFyIGQ9W107aWYoYz4wKWZvcihhPX5+YTthPGI7YSs9YylkLnB1c2goYSk7ZWxzZSBmb3IoYT1+fmE7YT5iO2ErPWMpZC5wdXNoKGEpO3JldHVybiBkfTsKXy5veD1mdW5jdGlvbihhLGIpe3JldHVybiB6WmIoYSxifHxbXSl9O18uVj1mdW5jdGlvbihhKXt2YXIgYj1hLm1hdGNoKC9cYmhyZWY9Ii9nKTtpZighYnx8Yi5sZW5ndGg8PTEpcmV0dXJuIGE7dmFyIGM9bmV3IF8uSGU7YT1hLnJlcGxhY2UoL1xiaHJlZj0iKC4qPykiL2csZnVuY3Rpb24oZCxlKXtkPV8uT2goZSk7Yy5rYXx8Xy5JZShjLGQua2EpO2MuQmF8fF8uSmUoYyxkLkFvKCkpO2MuSWF8fF8uTGUoYyxkLmdldFBhdGgoKSk7Yy53YXx8Xy5NZShjLGQud2EpO2ZvcihsZXQgZiBvZiBkLnd0KCkuZ2V0S2V5cygpKV8uRkthKGMud3QoKSxmKXx8Xy55S2EoYy53dCgpLGYsZC53dCgpLnl6KGYpKTtyZXR1cm4iIn0pO2E9YS5yZXBsYWNlKC9cc1xzKy9nLCIgIikucmVwbGFjZSgvXHMrJC9nLCIiKTtyZXR1cm5gJHthfSBocmVmPSIke2MudG9TdHJpbmcoKX0iYH07Cl8uVz1mdW5jdGlvbihhKXtyZXR1cm4gYT09PSIiPyIiOmAgY2xhc3M9IiR7YS5jaGFyQXQoYS5sZW5ndGgtMSk9PT0iICI/YS5zbGljZSgwLC0xKTphfSJgfTtfLlg9ZnVuY3Rpb24oYSl7cmV0dXJuIGEhPT0iIj9gIHN0eWxlPSIke2F9ImA6IiJ9O18ucHg9ZnVuY3Rpb24oYSxiKXtyZXR1cm4gYiYmdHlwZW9mIGI9PT0ib2JqZWN0IiYmIUFycmF5LmlzQXJyYXkoYik/YjpuZXcgYShiKX07Cn1jYXRjaChlKXtfLl9EdW1wRXhjZXB0aW9uKGUpfQp0cnl7CnZhciBhOGUsYjhlLGM4ZSxkOGUsZThlLGc4ZSxoOGUsaThlO2E4ZT1mdW5jdGlvbigpe3JldHVybiIifTtiOGU9ZnVuY3Rpb24oKXtyZXR1cm4iIn07YzhlPWZ1bmN0aW9uKCl7cmV0dXJuIiJ9O2Q4ZT1mdW5jdGlvbigpe3JldHVybiEwfTtlOGU9ZnVuY3Rpb24oKXtyZXR1cm4hMX07ZzhlPWZ1bmN0aW9uKGEpe18uZjhlKGEpO3JldHVybiIifTtoOGU9ZnVuY3Rpb24oYSl7Xy5mOGUoYSk7cmV0dXJuIF8ueSgiIil9O18uZjhlPWZ1bmN0aW9uKGEpe2Eua2EoaThlKXx8YS5vYShpOGUse30sZzhlLGg4ZSxkOGUsZThlLCIiLGE4ZSwiIixiOGUsIiIsYzhlKX07aThlPSJ0LVhJdUt5Y0NIWlF3IjsKfWNhdGNoKGUpe18uX0R1bXBFeGNlcHRpb24oZSl9CnRyeXsKdmFyIFM3ZSxUN2UsVTdlLFY3ZSxXN2UsWTdlLFo3ZSwkN2U7UzdlPWZ1bmN0aW9uKCl7cmV0dXJuIiJ9O1Q3ZT1mdW5jdGlvbigpe3JldHVybiIifTtVN2U9ZnVuY3Rpb24oKXtyZXR1cm4iIn07VjdlPWZ1bmN0aW9uKCl7cmV0dXJuITB9O1c3ZT1mdW5jdGlvbigpe3JldHVybiExfTtZN2U9ZnVuY3Rpb24oYSl7Xy5YN2UoYSk7cmV0dXJuIiJ9O1o3ZT1mdW5jdGlvbihhKXtfLlg3ZShhKTtyZXR1cm4gXy55KCIiKX07Xy5YN2U9ZnVuY3Rpb24oYSl7YS5rYSgkN2UpfHxhLm9hKCQ3ZSx7fSxZN2UsWjdlLFY3ZSxXN2UsIiIsUzdlLCIiLFQ3ZSwiIixVN2UpfTskN2U9InQtXzMxR2dvaEFXbVUiOwp9Y2F0Y2goZSl7Xy5fRHVtcEV4Y2VwdGlvbihlKX0KdHJ5ewp2YXIgSjdlLEs3ZSxMN2UsTTdlLE43ZSxQN2UsUTdlLFI3ZTtKN2U9ZnVuY3Rpb24oKXtyZXR1cm4iIn07SzdlPWZ1bmN0aW9uKCl7cmV0dXJuIiJ9O0w3ZT1mdW5jdGlvbigpe3JldHVybiIifTtNN2U9ZnVuY3Rpb24oKXtyZXR1cm4hMH07TjdlPWZ1bmN0aW9uKCl7cmV0dXJuITF9O1A3ZT1mdW5jdGlvbihhKXtfLk83ZShhKTtyZXR1cm4iIn07UTdlPWZ1bmN0aW9uKGEpe18uTzdlKGEpO3JldHVybiBfLnkoIiIpfTtfLk83ZT1mdW5jdGlvbihhKXthLmthKFI3ZSl8fGEub2EoUjdlLHt9LFA3ZSxRN2UsTTdlLE43ZSwiIixKN2UsIiIsSzdlLCIiLEw3ZSl9O1I3ZT0idC1YWXpPaHZ3N0ZxTSI7Cn1jYXRjaChlKXtfLl9EdW1wRXhjZXB0aW9uKGUpfQp0cnl7Cl8uSDdlPSEhKF8uT2lbNzBdJjEpO18uSk09ISEoXy5PaVs3MF0mMik7Cn1jYXRjaChlKXtfLl9EdW1wRXhjZXB0aW9uKGUpfQp0cnl7Cl8uUUg9ISEoXy5PaVs0MF0+PjE0JjEpOwp9Y2F0Y2goZSl7Xy5fRHVtcEV4Y2VwdGlvbihlKX0KdHJ5ewp2YXIgd3ZkLHh2ZCx5dmQsenZkLEF2ZCxDdmQsRHZkLEV2ZDt3dmQ9ZnVuY3Rpb24oKXtyZXR1cm4iIn07Xy5CSD1mdW5jdGlvbigpe3JldHVybiJ6MWFzQ2UgIn07eHZkPWZ1bmN0aW9uKCl7cmV0dXJuIiJ9O3l2ZD1mdW5jdGlvbigpe3JldHVybiIifTt6dmQ9ZnVuY3Rpb24oKXtyZXR1cm4hMH07QXZkPWZ1bmN0aW9uKCl7cmV0dXJuITF9O0N2ZD1mdW5jdGlvbihhKXtfLkJ2ZChhKTtyZXR1cm4gXy5DSCgpfTtEdmQ9ZnVuY3Rpb24oYSl7Xy5CdmQoYSk7YT0iPHNwYW4iK18uVygiIitfLkJIKCkpK18uWCgiIikrXy5WKCIiKSsiPiI7dmFyIGI9Xy5DSCgpO3JldHVybiBfLnkoYSsoYisiPC9zcGFuPiIpKX07Cl8uQ0g9ZnVuY3Rpb24oKXtyZXR1cm4oXy5VQj09MD8iPHN2ZyIrXy5XKCIiKStfLlgoIiIpK18uVignIGZvY3VzYWJsZT0iZmFsc2UiIGFyaWEtaGlkZGVuPSJ0cnVlIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNCAyNCInKSsiPjxwYXRoIitfLlcoIiIpK18uWCgiIikrXy5WKCcgZD0iTTE5IDYuNDFMMTcuNTkgNSAxMiAxMC41OSA2LjQxIDUgNSA2LjQxIDEwLjU5IDEyIDUgMTcuNTkgNi40MSAxOSAxMiAxMy40MSAxNy41OSAxOSAxOSAxNy41OSAxMy40MSAxMnoiJykrIj48L3BhdGg+PC9zdmc+IjoiIikrKF8uVUI9PTE/IjxzdmciK18uVygiIikrXy5YKCIiKStfLlYoJyBmb2N1c2FibGU9ImZhbHNlIiBhcmlhLWhpZGRlbj0idHJ1ZSIgdmlld0JveD0iMCAwIDI0IDI0IicpKyI+PHBhdGgiK18uVygiIikrXy5YKCIiKStfLlYoJyBkPSJNMTkgNi40MUwxNy41OSA1IDEyIDEwLjU5IDYuNDEgNSA1IDYuNDEgMTAuNTkgMTIgNSAxNy41OSA2LjQxIDE5IDEyIDEzLjQxIDE3LjU5IDE5IDE5IDE3LjU5IDEzLjQxIDEyeiInKSsKIj48L3BhdGg+PC9zdmc+IjoiIil9O18uQnZkPWZ1bmN0aW9uKGEpe2Eua2EoRXZkKXx8YS5vYShFdmQse30sQ3ZkLER2ZCx6dmQsQXZkLCIiLHd2ZCxfLkJIKCkseHZkLCIiLHl2ZCl9O0V2ZD0idC1CdzZtdGRUQmVWRSI7Cn1jYXRjaChlKXtfLl9EdW1wRXhjZXB0aW9uKGUpfQp0cnl7CnZhciBGdmQsR3ZkLEh2ZCxJdmQsSnZkLEt2ZCxMdmQ7RnZkPWZ1bmN0aW9uKCl7cmV0dXJuIiJ9O18uREg9ZnVuY3Rpb24oKXtyZXR1cm4iIitfLkJIKCl9O0d2ZD1mdW5jdGlvbigpe3JldHVybiIifTtfLkVIPWZ1bmN0aW9uKGEsYil7dmFyIGM9YiE9MjQ7cmV0dXJuKGM/ImhlaWdodDoiK18uUihfLlZ3KGEuaXNSdGwoKT9fLlN3KCJoZWlnaHQiLFN0cmluZyhiKSsicHgiKTpTdHJpbmcoYikrInB4IikpKyI7IjoiIikrKGM/ImxpbmUtaGVpZ2h0OiIrXy5SKF8uVncoYS5pc1J0bCgpP18uU3coImxpbmUtaGVpZ2h0IixTdHJpbmcoYikrInB4Iik6U3RyaW5nKGIpKyJweCIpKSsiOyI6IiIpKyhjPyJ3aWR0aDoiK18uUihfLlZ3KGEuaXNSdGwoKT9fLlN3KCJ3aWR0aCIsU3RyaW5nKGIpKyJweCIpOlN0cmluZyhiKSsicHgiKSkrIjsiOiIiKX07SHZkPWZ1bmN0aW9uKCl7cmV0dXJuITB9O0l2ZD1mdW5jdGlvbigpe3JldHVybiExfTtKdmQ9ZnVuY3Rpb24oYSl7Xy5GSChhKTtyZXR1cm4gXy5DSCgpfTsKS3ZkPWZ1bmN0aW9uKGEsYil7Xy5GSChhKTt2YXIgYz1iLnNpemU7Yj0iIjthPSI8c3BhbiIrXy5XKCIiK18uREgoKSkrXy5YKF8uRUgoYSxjKSsiIikrXy5WKCIiKSsiPiI7Yz1fLkNIKCk7Yis9YSsoYysiPC9zcGFuPiIpO3JldHVybiBfLnkoYil9O18uRkg9ZnVuY3Rpb24oYSl7YS5rYShMdmQpfHwoYS5vYShMdmQse3NpemU6MH0sSnZkLEt2ZCxIdmQsSXZkLCIiLEZ2ZCxfLkRIKCksR3ZkLCIiLF8uRUgpLF8uQnZkKGEpKX07THZkPSJ0LUw1WDVBS281TE00IjsKfWNhdGNoKGUpe18uX0R1bXBFeGNlcHRpb24oZSl9CnRyeXsKdmFyIGFlZDtfLkxGPWZ1bmN0aW9uKGEsYil7cmV0dXJuIGI/YS5QYShiLmdldEtleSgpKS5aNWJ8fCIiOiIifTtfLk1GPWZ1bmN0aW9uKGEsYil7cmV0dXJuIGI/YS5QYShiLmdldEtleSgpKS5hNmJ8fCIiOiIifTtfLk5GPWZ1bmN0aW9uKGEsYil7cmV0dXJuIGI/YS5QYShiLmdldEtleSgpKS5iNmJ8fCIiOiIifTthZWQ9ZnVuY3Rpb24oYSxiKXtyZXR1cm4gXy5YaShhLGZ1bmN0aW9uKGMpe3JldHVybiBiW2NdfSl9O18uT0Y9ZnVuY3Rpb24oYSxiKXtpZighYilyZXR1cm4iIjt2YXIgYz1hLlBhKGIuZ2V0S2V5KCkpLGQ9Yy5VNWI7aWYoIWQpcmV0dXJuIiI7Yj1hZWQoYy5hcmdzLGIua2EpO3JldHVybiBiLmxlbmd0aD09MD9kKGEpOmQoYSwuLi5iKX07Xy5QRj1mdW5jdGlvbihhLGIpe2lmKCFiKXJldHVybiIiO3ZhciBjPWEuUGEoYi5nZXRLZXkoKSksZD1jLlY1YjtpZighZClyZXR1cm4iIjtiPWFlZChjLmFyZ3MsYi5rYSk7cmV0dXJuIGIubGVuZ3RoPT0wP2QoYSk6ZChhLC4uLmIpfTsKXy5RRj1mdW5jdGlvbihhLGIpe2lmKCFiKXJldHVybiIiO3ZhciBjPWEuUGEoYi5nZXRLZXkoKSksZD1jLlc1YjtpZighZClyZXR1cm4iIjtiPWFlZChjLmFyZ3MsYi5rYSk7cmV0dXJuIGIubGVuZ3RoPT0wP2QoYSk6ZChhLC4uLmIpfTtfLlJGPWZ1bmN0aW9uKGEsYil7aWYoIWIpcmV0dXJuITA7dmFyIGM9YS5QYShiLmdldEtleSgpKSxkPWMuWDViO2lmKCFkKXJldHVybiEwO2I9YWVkKGMuYXJncyxiLmthKTtyZXR1cm4gYi5sZW5ndGg9PTA/ZChhKTpkKGEsLi4uYil9O18uU0Y9ZnVuY3Rpb24oYSxiKXtpZighYilyZXR1cm4hMTt2YXIgYz1hLlBhKGIuZ2V0S2V5KCkpLGQ9Yy5nRWM7aWYoIWQpcmV0dXJuITE7Yj1hZWQoYy5hcmdzLGIua2EpO3JldHVybiBkKGEsLi4uYil9O18uVEY9ZnVuY3Rpb24oYSxiKXtpZighYilyZXR1cm4iIjt2YXIgYz1hLlBhKGIuZ2V0S2V5KCkpLk5VYTtyZXR1cm4gYz9jKGEsYi5rYSk6IiJ9OwpfLlVGPWZ1bmN0aW9uKGEsYil7YT1fLkxGKGEsYikrXy5PRihhLGIpO2ZvcihsZXQgYyBvZiBhLnNwbGl0KCIgIikpaWYoYy5zdGFydHNXaXRoKCdocmVmPSInKSlyZXR1cm4gYy5zdWJzdHJpbmcoYy5pbmRleE9mKCciJykrMSxjLmxhc3RJbmRleE9mKCciJykpO3JldHVybiIifTtfLlZGPWZ1bmN0aW9uKGEpe3JldHVybiBfLnQoYSw2KX07Cn1jYXRjaChlKXtfLl9EdW1wRXhjZXB0aW9uKGUpfQp0cnl7Cl8ueEY9ZnVuY3Rpb24oKXtyZXR1cm4gXy5tdygpLmthfTtfLnlGPWZ1bmN0aW9uKGEsYil7cmV0dXJuIGEuTmEud2EoYil9O18uekY9ZnVuY3Rpb24oYSl7YS5OYS5vYSgpO3JldHVybiIifTsKfWNhdGNoKGUpe18uX0R1bXBFeGNlcHRpb24oZSl9CnRyeXsKXy5wRj1mdW5jdGlvbihhKXtpZighYSlyZXR1cm4gbnVsbDt0eXBlb2YgYT09PSJmdW5jdGlvbiImJihhPWEoKSk7cmV0dXJuIGF9O18ucUY9ZnVuY3Rpb24oYSl7cmV0dXJuIF8udChhLDM4KX07Xy5yRj1mdW5jdGlvbihhKXtyZXR1cm4gXy50KGEsNzApfTsKfWNhdGNoKGUpe18uX0R1bXBFeGNlcHRpb24oZSl9CnRyeXsKdmFyIGs4ZT1mdW5jdGlvbihhKXtqOGUoYSk7cmV0dXJuIlRvb2x0aXAifSxsOGU9ZnVuY3Rpb24oYSl7ajhlKGEpO3JldHVybiBfLnkoIlRvb2x0aXAiKX0sajhlPWZ1bmN0aW9uKGEpe2Eua2EobThlKXx8YS5vYShtOGUse30sazhlLGw4ZSl9LG04ZT0idC1qdnhQTVdkaG9qNCI7dmFyIHA4ZT1mdW5jdGlvbihhKXtuOGUoYSk7cmV0dXJuIG84ZShhKX0scThlPWZ1bmN0aW9uKGEpe244ZShhKTthPW84ZShhKTtyZXR1cm4gXy55KGEpfSxvOGU9ZnVuY3Rpb24oYSl7YS53YSgiLngzU0FZZHtwb3NpdGlvbjpyZWxhdGl2ZX0iKTtyZXR1cm4iIn0sbjhlPWZ1bmN0aW9uKGEpe2Eua2EocjhlKXx8YS5vYShyOGUse30scDhlLHE4ZSl9LHI4ZT0idC1uQVlNVVNFaWw1WSI7dmFyIHU4ZT1mdW5jdGlvbihhKXtzOGUoYSk7cmV0dXJuIHQ4ZShhKX0sdjhlPWZ1bmN0aW9uKGEpe3M4ZShhKTthPXQ4ZShhKTtyZXR1cm4gXy55KGEpfSx0OGU9ZnVuY3Rpb24oYSl7YS53YSgiLnkxeWFkZntwb3NpdGlvbjpyZWxhdGl2ZTtkaXNwbGF5OmlubGluZS1ibG9ja30iKTtyZXR1cm4iIn0sczhlPWZ1bmN0aW9uKGEpe2Eua2EodzhlKXx8YS5vYSh3OGUse30sdThlLHY4ZSl9LHc4ZT0idC1USnAtajdMdDZGNCI7dmFyIHg4ZT1mdW5jdGlvbihhLGIsYyxkKXtyZXR1cm4oYT8iIjoiRnRLODZjICIpKyghYSYmYj8iY201YTNiICI6IiIpKyghYSYmZD8iRXI5SHNlICI6IiIpKyhhfHxifHxkPyIiOiJrTDZRZ2QgIikrKCFhJiZiPyJGSkNKZmQgIjoiIikrKCFhJiZjJiZkPyJPTk5ZZWUgIjoiIil9LHo4ZT1mdW5jdGlvbihhKXt5OGUoYSk7cmV0dXJuIiJ9LEE4ZT1mdW5jdGlvbihhLGIpe3k4ZShhKTthPSI8ZGl2IitfLlcoeDhlKGIuZGlzYWJsZWQsYi5MSixiLkZ6LGIud3gpKyIiKStfLlgoIiIpK18uVigiIikrIj4iO3JldHVybiBfLnkoYSsiPC9kaXY+Iil9LHk4ZT1mdW5jdGlvbihhKXthLmthKEI4ZSl8fGEub2EoQjhlLHtkaXNhYmxlZDowLExKOjEsRno6Mix3eDozfSx6OGUsQThlKX0sQjhlPSJ0LWxQTjhnTnlfSGo0Ijt2YXIgRThlPWZ1bmN0aW9uKGEpe0M4ZShhKTtyZXR1cm4gRDhlKGEpfSxGOGU9ZnVuY3Rpb24oYSl7QzhlKGEpO2E9RDhlKGEpO3JldHVybiBfLnkoYSl9LEQ4ZT1mdW5jdGlvbihhKXt2YXIgYj1fLnBGKF8uc2koKS5GbSksYz1fLlQoYiwiIixIPT5fLnQoSCw5OSkpLGQ9Xy5UKGIsIiIsSD0+Xy50KEgsMTAxKSksZT1fLlQoYiwiIixIPT5fLnQoSCwxMDYpKSxmPV8uVChiLCIiLEg9Pl8udChILDEwOSkpLGc9Xy5UKGIsIiIsSD0+Xy50KEgsMTA3KSksaD1fLlQoYiwiIixIPT5fLnQoSCwxMDYpKSxrPV8uVChiLCIiLEg9Pl8udChILDEwNykpLG09Xy5UKGIsIiIsSD0+Xy50KEgsMTA0KSksbj1fLlQoYiwiIixIPT5fLnQoSCwxMDQpKSxwPV8uVChiLCIiLEg9Pl8udChILDk5KSkscj1fLlQoYiwiIixIPT5fLnQoSCwxMTQpKSx4PV8uVChiLCIiLEg9Pl8udChILDE2NykpLHo9Xy5UKGIsIiIsSD0+Xy50KEgsMTE5KSksQj1fLlQoYiwiIixIPT5fLnQoSCwxNjkpKTthLndhKCIucWtpektme3Bvc2l0aW9uOmFic29sdXRlO3dpZHRoOm1heC1jb250ZW50O3doaXRlLXNwYWNlOm5vcm1hbDt6LWluZGV4OjE7cG9pbnRlci1ldmVudHM6aW5pdGlhbH0iKTsKYS53YSgiLnUxNlNze29wYWNpdHk6MDt0cmFuc2l0aW9uOm9wYWNpdHkgIisoZysiICIrXy5UKGIsIiIsSD0+Xy50KEgsNTUpKSsiIGNhbGMoIitkKyIgKyAiK2UrIik7cG9zaXRpb246YWJzb2x1dGU7dG9wOjA7bGVmdDowO3JpZ2h0OjA7Ym90dG9tOjA7ei1pbmRleDoxO3BvaW50ZXItZXZlbnRzOm5vbmV9IikpO2Eud2EoIi51MTZTcy5xVlN3a2N7IisoXy5FeT8idHJhbnNpdGlvbjpvcGFjaXR5ICIraCsiICIrXy5UKGIsIiIsSD0+Xy50KEgsNTUpKSsiICIrYysiOyI6IiIpKyhfLkV5PyIiOiJ0cmFuc2l0aW9uOm9wYWNpdHkgIitrKyIgIitfLlQoYiwiIixIPT5fLnQoSCw1NSkpKyIgIitjKyI7IikrIm9wYWNpdHk6MX0iKTthLndhKCIuRnRLODZje292ZXJmbG93OmhpZGRlbn0iKTthLndhKCIuRnRLODZjeyIrKF8uRXk/InRyYW5zaXRpb246aGVpZ2h0ICIrbSsiICIreisiICIrZCsiOyI6IiIpKyhfLkV5PyIiOiJ0cmFuc2l0aW9uOmhlaWdodCAiK20rIiAiK0IrIiAiK2QpKyJ9Iik7CmEud2EoIi5xVlN3a2MgLkZ0Szg2Y3siKyhfLkV5PyJ0cmFuc2l0aW9uOmhlaWdodCAiK24rIiAiK3IrIiAiK2MrIjsiOiIiKSsoXy5FeT8iIjoidHJhbnNpdGlvbjpoZWlnaHQgIitwKyIgIit4KyIgIitjKSsifSIpO2Eud2EoIkBzdXBwb3J0cyAoaW50ZXJwb2xhdGUtc2l6ZTogYWxsb3cta2V5d29yZHMpIHsuRnRLODZje2hlaWdodDowO2ludGVycG9sYXRlLXNpemU6YWxsb3cta2V5d29yZHN9LnFWU3drYyAuRnRLODZje2hlaWdodDppbml0aWFsfX0iKTthLndhKCIua2paMUhjeyIrKF8uRXk/InRyYW5zaXRpb246b3BhY2l0eSAiK2UrIiAiK18uVChiLCIiLEg9Pl8udChILDU1KSkrIiAiK2QrIix0cmFuc2Zvcm0gIittKyIgIit6KyIgIitkKyI7IjoiIikrKF8uRXk/IiI6InRyYW5zaXRpb246b3BhY2l0eSAiK2UrIiAiK18uVChiLCIiLEg9Pl8udChILDU1KSkrIiAiK2QrIix0cmFuc2Zvcm0gIittKyIgIitCKyIgIitkKyI7IikrInRyYW5zZm9ybTp0cmFuc2xhdGVZKC0yNXB4KTtvcGFjaXR5OjB9Iik7CmEud2EoIi5JZDd2amIgLmtqWjFIY3t0cmFuc2Zvcm06dHJhbnNsYXRlWSgyNXB4KX0iKTthLndhKCIucVZTd2tjLnFWU3drYy5xVlN3a2MgLmtqWjFIY3siKyhfLkV5PyJ0cmFuc2l0aW9uOm9wYWNpdHkgIitmKyIgIitfLlQoYiwiIixIPT5fLnQoSCw1NSkpKyIgIitjKyIsdHJhbnNmb3JtICIrbisiICIrcisiICIrYysiOyI6IiIpKyhfLkV5PyIiOiJ0cmFuc2l0aW9uOm9wYWNpdHkgIitmKyIgIitfLlQoYiwiIixIPT5fLnQoSCw1NSkpKyIgIitjKyIsdHJhbnNmb3JtICIrcCsiICIreCsiICIrYysiOyIpKyJ0cmFuc2Zvcm06bm9uZTtvcGFjaXR5OjF9Iik7YS53YSgiLnUxNlNzLkkwN1BTZCwuSTA3UFNkIC5raloxSGN7b3BhY2l0eTowLjAwMX0iKTthLndhKCIudTE2U3MuQ3NZSFFiLC5Dc1lIUWIgLkZ0Szg2YywuSTA3UFNkIC5GdEs4NmMsLkkwN1BTZCAua2paMUhje3RyYW5zaXRpb24tZGVsYXk6MHMsMHN9Iik7YS53YSgiLnUxNlNzLkkwN1BTZHt0cmFuc2l0aW9uLWRlbGF5OiIrCmUrIn0iKTthLndhKCIuQ3NZSFFiLkNzWUhRYi5Dc1lIUWIuQ3NZSFFiLkNzWUhRYiAua2paMUhjeyIrKF8uRXk/InRyYW5zaXRpb24tZGVsYXk6MHMsMHM7IjoiIikrKF8uRXk/IiI6InRyYW5zaXRpb24tZGVsYXk6MHMsMHMiKSsifSIpO3JldHVybiIifSxDOGU9ZnVuY3Rpb24oYSl7YS5rYShHOGUpfHxhLm9hKEc4ZSx7fSxFOGUsRjhlKX0sRzhlPSJ0LXBWQ3NXRTVTZk0wIjt2YXIgSDhlPWZ1bmN0aW9uKCl7cmV0dXJuIiJ9LEk4ZT1mdW5jdGlvbigpe3JldHVybiIifSxKOGU9ZnVuY3Rpb24oKXtyZXR1cm4iIn0sSzhlPWZ1bmN0aW9uKCl7cmV0dXJuITB9LEw4ZT1mdW5jdGlvbigpe3JldHVybiExfSxPOGU9ZnVuY3Rpb24oYSl7TThlKGEpO3JldHVybiBOOGUoKX0sUDhlPWZ1bmN0aW9uKGEpe004ZShhKTtyZXR1cm4gXy55KE44ZSgpKX0sTjhlPWZ1bmN0aW9uKCl7cmV0dXJuIkx1a2sifSxNOGU9ZnVuY3Rpb24oYSl7YS5rYShROGUpfHxhLm9hKFE4ZSx7fSxPOGUsUDhlLEs4ZSxMOGUsIiIsSDhlLCIiLEk4ZSwiIixKOGUpfSxROGU9InQtUUtuVk9JamprWjgiO3ZhciBUOGU9ZnVuY3Rpb24oYSl7UjhlKGEpO3JldHVybiBTOGUoYSl9LFU4ZT1mdW5jdGlvbihhKXtSOGUoYSk7YT1TOGUoYSk7cmV0dXJuIF8ueShhKX0sUzhlPWZ1bmN0aW9uKGEpe2Eud2EoIi5LTWtBY3t3aWR0aDoxOHB4O2hlaWdodDoxOHB4O21hcmdpbi10b3A6LTNweDt2ZXJ0aWNhbC1hbGlnbjptaWRkbGV9Iik7cmV0dXJuIiJ9LFI4ZT1mdW5jdGlvbihhKXthLmthKFY4ZSl8fGEub2EoVjhlLHt9LFQ4ZSxVOGUpfSxWOGU9InQtLU5EOXJyZU5VVHciO3ZhciBZOGU9ZnVuY3Rpb24oYSl7VzhlKGEpO3JldHVybiBYOGUoYSl9LFo4ZT1mdW5jdGlvbihhKXtXOGUoYSk7YT1YOGUoYSk7cmV0dXJuIF8ueShhKX0sWDhlPWZ1bmN0aW9uKGEpe2Eud2EoXy5RSD8iLm9ydTZFZSAuYlNpMWZle3JpZ2h0Oi0xMXB4fSI6IiIpO2Eud2EoXy5RSD8iIjoiLm9ydTZFZSAuYlNpMWZle2xlZnQ6LTExcHh9Iik7cmV0dXJuIiJ9LFc4ZT1mdW5jdGlvbihhKXthLmthKCQ4ZSl8fGEub2EoJDhlLHt9LFk4ZSxaOGUpfSwkOGU9InQtUnU4RDMwckhXRHciO3ZhciBjOWU9ZnVuY3Rpb24oYSl7YTllKGEpO3JldHVybiBiOWUoYSl9LGQ5ZT1mdW5jdGlvbihhKXthOWUoYSk7YT1iOWUoYSk7cmV0dXJuIF8ueShhKX0sYjllPWZ1bmN0aW9uKGEpe2Eud2EoXy5RSD8iLmZsNXR2ZiAuYlNpMWZle2xlZnQ6LTExcHh9IjoiIik7YS53YShfLlFIPyIiOiIuZmw1dHZmIC5iU2kxZmV7cmlnaHQ6LTExcHh9Iik7cmV0dXJuIiJ9LGE5ZT1mdW5jdGlvbihhKXthLmthKGU5ZSl8fGEub2EoZTllLHt9LGM5ZSxkOWUpfSxlOWU9InQtWmx4elNMYXJMaVEiO3ZhciBoOWU9ZnVuY3Rpb24oYSl7ZjllKGEpO3JldHVybiBnOWUoYSl9LGk5ZT1mdW5jdGlvbihhKXtmOWUoYSk7YT1nOWUoYSk7cmV0dXJuIF8ueShhKX0sZzllPWZ1bmN0aW9uKGEpe2Eud2EoIi5vcnU2RWUgLmJTaTFmZSwuZmw1dHZmIC5iU2kxZmV7cG9zaXRpb246YWJzb2x1dGU7d2lkdGg6N3B4O2hlaWdodDoxNHB4O3otaW5kZXg6Mn0iKTtyZXR1cm4iIn0sZjllPWZ1bmN0aW9uKGEpe2Eua2EoajllKXx8YS5vYShqOWUse30saDllLGk5ZSl9LGo5ZT0idC10SG1NTExNNV9qQSI7dmFyIG05ZT1mdW5jdGlvbihhKXtrOWUoYSk7cmV0dXJuIGw5ZShhKX0sbjllPWZ1bmN0aW9uKGEpe2s5ZShhKTthPWw5ZShhKTtyZXR1cm4gXy55KGEpfSxsOWU9ZnVuY3Rpb24oYSl7YS53YSgiLmx3VTZEZHtkaXNwbGF5OmZsZXg7aGVpZ2h0OjEwMCU7YWxpZ24taXRlbXM6Y2VudGVyO3RvcDowfSIpO2Eud2EoIi5nYkhvT2V7cG9zaXRpb246cmVsYXRpdmV9Iik7cmV0dXJuIiJ9LGs5ZT1mdW5jdGlvbihhKXthLmthKG85ZSl8fGEub2EobzllLHt9LG05ZSxuOWUpfSxvOWU9InQtaHh5SG1rTVh0MlkiO3ZhciByOWU9ZnVuY3Rpb24oYSl7cDllKGEpO3JldHVybiBxOWUoYSl9LHM5ZT1mdW5jdGlvbihhKXtwOWUoYSk7YT1xOWUoYSk7cmV0dXJuIF8ueShhKX0scTllPWZ1bmN0aW9uKGEpe2Eud2EoIi5ENDNTV2QgLmJTaTFmZXt0b3A6LTExcHh9Iik7cmV0dXJuIiJ9LHA5ZT1mdW5jdGlvbihhKXthLmthKHQ5ZSl8fGEub2EodDllLHt9LHI5ZSxzOWUpfSx0OWU9InQtRW5pZXZ6anFFb3ciO3ZhciB3OWU9ZnVuY3Rpb24oYSl7dTllKGEpO3JldHVybiB2OWUoYSl9LHg5ZT1mdW5jdGlvbihhKXt1OWUoYSk7YT12OWUoYSk7cmV0dXJuIF8ueShhKX0sdjllPWZ1bmN0aW9uKGEpe2Eud2EoIi5SRUNkbWQgLmJTaTFmZXtib3R0b206LTExcHh9Iik7cmV0dXJuIiJ9LHU5ZT1mdW5jdGlvbihhKXthLmthKHk5ZSl8fGEub2EoeTllLHt9LHc5ZSx4OWUpfSx5OWU9InQtLVU2dThJemFINk0iO3ZhciBCOWU9ZnVuY3Rpb24oYSl7ejllKGEpO3JldHVybiBBOWUoYSl9LEM5ZT1mdW5jdGlvbihhKXt6OWUoYSk7YT1BOWUoYSk7cmV0dXJuIF8ueShhKX0sQTllPWZ1bmN0aW9uKGEpe2Eud2EoIi5ENDNTV2QgLmJTaTFmZSwuUkVDZG1kIC5iU2kxZmV7cG9zaXRpb246YWJzb2x1dGU7d2lkdGg6MTRweDtoZWlnaHQ6N3B4O3otaW5kZXg6Mn0iKTtyZXR1cm4iIn0sejllPWZ1bmN0aW9uKGEpe2Eua2EoRDllKXx8YS5vYShEOWUse30sQjllLEM5ZSl9LEQ5ZT0idC1aWVZveEVzQnRnayI7dmFyIEc5ZT1mdW5jdGlvbihhKXtFOWUoYSk7cmV0dXJuIEY5ZShhKX0sSDllPWZ1bmN0aW9uKGEpe0U5ZShhKTthPUY5ZShhKTtyZXR1cm4gXy55KGEpfSxGOWU9ZnVuY3Rpb24oYSl7YS53YSgiLmxHUEcyYi5sR1BHMmJ7ZGlzcGxheTpmbGV4O3dpZHRoOjEwMCU7ZmxleC1kaXJlY3Rpb246Y29sdW1uO2FsaWduLWl0ZW1zOmNlbnRlcn0iKTthLndhKCIuS2lMSEx7cG9zaXRpb246cmVsYXRpdmU7d2lkdGg6bWF4LWNvbnRlbnR9Iik7cmV0dXJuIiJ9LEU5ZT1mdW5jdGlvbihhKXthLmthKEk5ZSl8fGEub2EoSTllLHt9LEc5ZSxIOWUpfSxJOWU9InQtZ0d6clAySWtaOFEiO3ZhciBMOWU9ZnVuY3Rpb24oYSl7SjllKGEpO3JldHVybiBLOWUoYSl9LE05ZT1mdW5jdGlvbihhKXtKOWUoYSk7YT1LOWUoYSk7cmV0dXJuIF8ueShhKX0sSzllPWZ1bmN0aW9uKGEpe2Eud2EoXy5RSD8iLm9ydTZFZSAua0w2UWdke21hcmdpbjowIDAgMCA0cHh9LmZsNXR2ZiAua0w2UWdke21hcmdpbjowIDRweCAwIDB9IjoiIik7YS53YShfLlFIPyIiOiIub3J1NkVlIC5rTDZRZ2R7bWFyZ2luOjAgNHB4IDAgMH0uZmw1dHZmIC5rTDZRZ2R7bWFyZ2luOjAgMCAwIDRweH0iKTtyZXR1cm4iIn0sSjllPWZ1bmN0aW9uKGEpe2Eua2EoTjllKXx8YS5vYShOOWUse30sTDllLE05ZSl9LE45ZT0idC0tcU5nRnh5c1d4ayI7dmFyIFE5ZT1mdW5jdGlvbihhKXtPOWUoYSk7cmV0dXJuIFA5ZShhKX0sUjllPWZ1bmN0aW9uKGEpe085ZShhKTthPVA5ZShhKTtyZXR1cm4gXy55KGEpfSxQOWU9ZnVuY3Rpb24oYSl7YS53YSgiLkQ0M1NXZCAua0w2UWdke21hcmdpbjowIDAgNHB4fSIpO2Eud2EoIi5SRUNkbWQgLmtMNlFnZHttYXJnaW46NHB4IDAgMH0iKTtyZXR1cm4iIn0sTzllPWZ1bmN0aW9uKGEpe2Eua2EoUzllKXx8YS5vYShTOWUse30sUTllLFI5ZSl9LFM5ZT0idC1tUkhUX1gtb1E0OCI7dmFyIFY5ZT1mdW5jdGlvbihhKXtUOWUoYSk7cmV0dXJuIFU5ZShhKX0sVzllPWZ1bmN0aW9uKGEpe1Q5ZShhKTthPVU5ZShhKTtyZXR1cm4gXy55KGEpfSxVOWU9ZnVuY3Rpb24oYSl7dmFyIGI9Xy5wRihfLnNpKCkuQmIpLGM9Xy5wRihfLnNpKCkuQmwpLGQ9Xy5wRihfLnNpKCkuaVMpLGU9Xy5wRihfLnNpKCkuWWQpO2Eud2EoIiIpO2Eud2EoIi5rTDZRZ2R7dGV4dC1hbGlnbjpjZW50ZXI7YmFja2dyb3VuZDoiK18uVChiLCIiLGY9Pl8udChmLDExMSkpKyI7Ym9yZGVyLXJhZGl1czoiK18uVChjLCIiLGY9Pl8udChmLDEyKSkrIjttaW4td2lkdGg6bWluKDgwdncsNDBweCk7bWF4LXdpZHRoOm1pbig4MHZ3LDIwMHB4KTtjb2xvcjoiK18uVChiLCIiLGY9Pl8udChmLDIxKSkrIjsiKyhfLm12PyJib3JkZXI6IitfLlQoZCwiIixmPT5fLnQoZiwxNCkpKyI7Ym94LXNoYWRvdzoiK18uVChkLCIiLGY9Pl8udChmLDgpKToiIikrIn0iKTthLndhKCIuQk1XSTdke3BhZGRpbmc6IitfLlQoZSwKIiIsZj0+Xy50QyhmKSkrIiAiK18uVChlLCIiLGY9Pl8uRHcoZikpKyJ9Iik7YS53YSgiQG1lZGlhIChwcmVmZXJzLWNvbnRyYXN0Om1vcmUpLChmb3JjZWQtY29sb3JzOmFjdGl2ZSl7LmtMNlFnZHtib3JkZXI6MXB4IHNvbGlkICIrXy5UKGIsIiIsZj0+Xy50KGYsMjEpKSsifX0iKTtyZXR1cm4iIn0sVDllPWZ1bmN0aW9uKGEpe2Eua2EoWDllKXx8KGEub2EoWDllLHt9LFY5ZSxXOWUpLF8uTzdlKGEpKX0sWDllPSJ0LUI3NTB1XzZKTFF3Ijt2YXIgJDllPWZ1bmN0aW9uKGEpe1k5ZShhKTtyZXR1cm4gWjllKGEpfSxhJGU9ZnVuY3Rpb24oYSl7WTllKGEpO2E9WjllKGEpO3JldHVybiBfLnkoYSl9LFo5ZT1mdW5jdGlvbihhKXt2YXIgYj1fLnBGKF8uc2koKS5CYiksYz1fLnBGKF8uc2koKS5CbCksZD1fLlQoYiwiIixlPT5lLlZ4KCkpO2Eud2EoIiIpO2Eud2EoIiIpO2Eud2EoIi5iU2kxZmV7ZmlsbDoiK2QrIn0iKTthLndhKCIuY201YTNie3RleHQtYWxpZ246bGVmdDtiYWNrZ3JvdW5kOiIrKGQrIjtwYWRkaW5nOjhweCA0MHB4IDhweCAxNnB4O2JvcmRlci1yYWRpdXM6IitfLlQoYywiIixlPT5fLkV3KGUpKSsiO21hcmdpbjo2cHg7IisoXy5FeT8ibWF4LXdpZHRoOmNhbGMoNDV2dyAtIDU2cHgpOyI6IiIpKyhfLkV5PyIiOiJtYXgtd2lkdGg6Y2FsYyg2NXZ3IC0gNTZweCk7IikrImNvbG9yOiIrXy5UKGIsIiIsZT0+ZS5mQSgpKSsifSIpKTthLndhKCJAbWVkaWEgKHByZWZlcnMtY29udHJhc3Q6bW9yZSksKGZvcmNlZC1jb2xvcnM6YWN0aXZlKXsuYlNpMWZle2ZpbGw6IisKXy5UKGIsIiIsZT0+Xy50KGUsMTkpKSsifS5GSkNKZmQuY201YTNie2JhY2tncm91bmQ6IitfLlQoYiwiIixlPT5fLnQoZSwxOSkpKyI7Ym9yZGVyOjFweCBzb2xpZCAiK18uVChiLCIiLGU9Pl8uTkIoZSkpKyI7Y29sb3I6IitfLlQoYiwiIixlPT5fLk5CKGUpKSsiO2JveC1zaGFkb3c6bm9uZX19Iik7YS53YSgiLml3RVFGY3tjdXJzb3I6cG9pbnRlcjtwb3NpdGlvbjphYnNvbHV0ZTtwYWRkaW5nOjA7Ym9yZGVyOm5vbmU7Y29sb3I6aW5oZXJpdDtiYWNrZ3JvdW5kOm5vbmU7cGFkZGluZzoxNXB4O3RvcDotNnB4O3JpZ2h0Oi02cHg7bGluZS1oZWlnaHQ6aW5oZXJpdH0iKTtyZXR1cm4iIn0sWTllPWZ1bmN0aW9uKGEpe2Eua2EoYiRlKXx8KGEub2EoYiRlLHt9LCQ5ZSxhJGUpLF8uWDdlKGEpLF8uZjhlKGEpKX0sYiRlPSJ0LVVqYlpJamNHQi1RIjt2YXIgYyRlPWZ1bmN0aW9uKCl7cmV0dXJuIiJ9LGQkZT1mdW5jdGlvbigpe3JldHVybiIifSxlJGU9ZnVuY3Rpb24oKXtyZXR1cm4iIn0sZiRlPWZ1bmN0aW9uKCl7cmV0dXJuITB9LGckZT1mdW5jdGlvbigpe3JldHVybiExfSxpJGU9ZnVuY3Rpb24oYSl7aCRlKGEpO3JldHVybiIifSxqJGU9ZnVuY3Rpb24oYSl7aCRlKGEpO3JldHVybiBfLnkoIiIpfSxoJGU9ZnVuY3Rpb24oYSl7YS5rYShrJGUpfHxhLm9hKGskZSx7fSxpJGUsaiRlLGYkZSxnJGUsIiIsYyRlLCIiLGQkZSwiIixlJGUpfSxrJGU9InQtcXduY1BISlRhUnciO3ZhciBuJGU9ZnVuY3Rpb24oYSl7bCRlKGEpO3JldHVybiBtJGUoYSl9LG8kZT1mdW5jdGlvbihhKXtsJGUoYSk7YT1tJGUoYSk7cmV0dXJuIF8ueShhKX0sbSRlPWZ1bmN0aW9uKGEpe3ZhciBiPV8ucEYoXy5zaSgpLkJiKSxjPV8ucEYoXy5zaSgpLkJsKSxkPV8ucEYoXy5zaSgpLllkKSxlPV8ucEYoXy5zaSgpLkZtKSxmPV8uVChiLCIiLGs9Pl8uUUIoaykpLGc9Xy5UKGUsIiIsaz0+Xy50KGssOTkpKSxoPV8uVChlLCIiLGs9Pl8udChrLDEwNikpO2U9Xy5UKGUsIiIsaz0+Xy50KGssMTA3KSk7YS53YSgiIik7YS53YSgiIik7YS53YSgiLkVyOUhzZXt0ZXh0LWFsaWduOmxlZnQ7YmFja2dyb3VuZDoiKyhmKyI7Ym9yZGVyLXJhZGl1czoiK18uVChjLCIiLGs9Pl8uTkZjKGspKSsiOyIrKF8uRXk/InBhZGRpbmc6IitfLlQoZCwiIixrPT5fLkN3KGspKSsiICIrXy5UKGQsIiIsaz0+Xy5CdyhrKSkrIiAiK18uVChkLCIiLGs9Pl8uQ3coaykpKyIgMDttYXgtd2lkdGg6Y2FsYyhtaW4oMzV2dyw0MDBweCkgLSAiKwpfLlQoZCwiIixrPT5fLkJ3KGspKSsiKTsiOiIiKSsoXy5FeT8iIjoicGFkZGluZzoiK18uVChkLCIiLGs9Pl8uQ3coaykpKyIgY2FsYygyNHB4ICsgIitfLlQoZCwiIixrPT5fLkJ3KGspKSsiKSAiK18uVChkLCIiLGs9Pl8uQ3coaykpKyIgMDttYXgtd2lkdGg6Y2FsYyhtaW4oOTB2dywzMjBweCkgLSAyNHB4IC0gIitfLlQoZCwiIixrPT5fLkJ3KGspKSsiKTsiKSsiY29sb3I6IitfLlQoYiwiIixrPT5fLnF3KGspKSsiO21hcmdpbjoxMHB4IDAgMH0iKSk7YS53YSgiLkQ0M1NXZCAuRXI5SHNle21hcmdpbjowIDAgMTBweH0iKTthLndhKCIuRDQzU1dkIC5FcjlIc2UgLmJTaTFmZXt0cmFuc2Zvcm06c2NhbGVZKC0xKX0iKTthLndhKCIuRXI5SHNlIC5raloxSGN7dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEwMHB4KX0iKTthLndhKCIucVZTd2tjLnFWU3drYy5xVlN3a2MgLkVyOUhzZSAua2paMUhjeyIrKF8uRXk/InRyYW5zaXRpb24tZGVsYXk6Y2FsYygiK2crIiArICIraCsiKSwiK2crCiI7IjoiIikrKF8uRXk/IiI6InRyYW5zaXRpb24tZGVsYXk6Y2FsYygiK2crIiArICIrZSsiKSwiK2cpKyJ9Iik7YS53YSgiLkVyOUhzZS5ENDNTV2QgLmtqWjFIY3t0cmFuc2Zvcm06dHJhbnNsYXRlWSgxMDBweCl9Iik7YS53YSgiLkU0RU1le3BhZGRpbmc6MCAwICIrKF8uVChkLCIiLGs9Pl8udEMoaykpKyIgIitfLlQoZCwiIixrPT5fLkJ3KGspKSsifSIpKTthLndhKF8uRXk/IiI6Ii5xNloyentjdXJzb3I6cG9pbnRlcjtwb3NpdGlvbjphYnNvbHV0ZTtwYWRkaW5nOjA7Ym9yZGVyOm5vbmU7Y29sb3I6aW5oZXJpdDtiYWNrZ3JvdW5kOm5vbmU7cGFkZGluZzoxNXB4O21hcmdpbjotNnB4O3RvcDowO3JpZ2h0OjA7d2lkdGg6NDhweDtoZWlnaHQ6NDhweDtsaW5lLWhlaWdodDppbmhlcml0fSIpO2Eud2EoIi5mYVlMa2N7ZGlzcGxheTppbmxpbmUtYmxvY2s7bWFyZ2luOiIrKF8uVChkLCIiLGs9Pl8uQ3coaykpKyIgMCAwICIrXy5UKGQsIiIsaz0+Xy5DdyhrKSkrIn0iKSk7YS53YSgiLmZhWUxrYy5vT0VxdGV7bWFyZ2luLWxlZnQ6IisKKF8uVChkLCIiLGs9Pl8uQncoaykpKyJ9IikpO2Eud2EoIkBtZWRpYSAocHJlZmVycy1jb250cmFzdDptb3JlKSwoZm9yY2VkLWNvbG9yczphY3RpdmUpey5FcjlIc2UuRXI5SHNle2JhY2tncm91bmQ6IitfLlQoYiwiIixrPT5fLnQoaywxOSkpKyI7Ym9yZGVyOjFweCBzb2xpZCAiK18uVChiLCIiLGs9Pl8uTkIoaykpKyI7Y29sb3I6IitfLlQoYiwiIixrPT5fLk5CKGspKSsifX0iKTtyZXR1cm4iIn0sbCRlPWZ1bmN0aW9uKGEpe2Eua2EocCRlKXx8KGEub2EocCRlLHt9LG4kZSxvJGUpLGgkZShhKSxfLmY4ZShhKSl9LHAkZT0idC13RWV2ZzdlRVBJRSI7dmFyIHEkZT1mdW5jdGlvbigpe3JldHVybiIifSxyJGU9ZnVuY3Rpb24oKXtyZXR1cm4iIn0scyRlPWZ1bmN0aW9uKCl7cmV0dXJuIiJ9LHQkZT1mdW5jdGlvbigpe3JldHVybiEwfSx1JGU9ZnVuY3Rpb24oKXtyZXR1cm4hMX0seCRlPWZ1bmN0aW9uKGEsYil7diRlKGEpO3JldHVybiB3JGUoYSxiLk50YSxiLmxtYSxiLmtnYSxiLk90YSxiLkZiYSxiLmpnYSxiLnM0LGIubE8sYi5xNCxiLnI0LGIuTHRhLGIuTXRhLGIua21hLGIuaWNvbixiLk9FLGIualAsYi5MRixiLnRvb2x0aXAsYi5GeixiLnd4LGIua00sYi5mUyxiLmVKLGIubU8pfSx5JGU9ZnVuY3Rpb24oYSxiKXt2JGUoYSk7YT13JGUoYSxiLk50YSxiLmxtYSxiLmtnYSxiLk90YSxiLkZiYSxiLmpnYSxiLnM0LGIubE8sYi5xNCxiLnI0LGIuTHRhLGIuTXRhLGIua21hLGIuaWNvbixiLk9FLGIualAsYi5MRixiLnRvb2x0aXAsYi5GeixiLnd4LGIua00sYi5mUyxiLmVKLGIubU8pO3JldHVybiBfLnkoYSl9LHckZT1mdW5jdGlvbihhLApiLGMsZCxlLGYsZyxoLGssbSxuLHAscix4LHosQixILEosTixRLFosWSxkYSxjYSxoYSl7dmFyIGthPSFRLHRhPVEmJiFaLHlhPWthPzc6MCxYYT15YSoyLEVhPWthPzE2OjAsVmE9az95YTpYYSxmYj1rP1hhOnlhLHNiPWthPzY6MDt5YT1lfHxyO3ZhciB2Yj1lPyI1MCUiOmR8fGY/ImNhbGMoNTAlIC0gIitTdHJpbmcoRWErc2IrWGEvMikrInB4KSI6U3RyaW5nKC1zYikrInB4IixGYj0iY2FsYygxMDAlICsgIitTdHJpbmcoKGthP2thfHxaPzEwOjQ6MCktc2IpKyJweCkiO3NiPWs/RmI6dmI7dmI9az92YjpGYjtFYT1nfHxofHxwfHx4P1N0cmluZyhFYSkrInB4IjoiY2FsYyg1MCUgLSAiK1N0cmluZyhYYS8yKSsicHgpIjtYYT0iIjtGYj1EOGUoYSk7WGErPUZiO2thJiYoRmI9WjllKGEpLFhhKz1GYik7dGEmJihGYj1VOWUoYSksWGErPUZiKTtaJiYoRmI9bSRlKGEpLFhhKz1GYik7ayYma2EmJihGYj1nOWUoYSksWGErPUZiKTshayYma2EmJihGYj1BOWUoYSksWGErPUZiKTtyJiYKKEZiPWw5ZShhKSxYYSs9RmIpO2UmJihGYj1GOWUoYSksWGErPUZiKTsoY3x8IWsmJiFrYSkmJmthJiYoRmI9djllKGEpLFhhKz1GYik7KGJ8fCFrJiYha2EpJiZrYSYmKEZiPXE5ZShhKSxYYSs9RmIpOyhufHxrJiYha2EpJiZrYSYmKEZiPWI5ZShhKSxYYSs9RmIpOyhtfHxrJiYha2EpJiZrYSYmKEZiPVg4ZShhKSxYYSs9RmIpO3RhJiZrJiYoRmI9SzllKGEpLFhhKz1GYik7dGEmJiFrJiYodGE9UDllKGEpLFhhKz10YSk7eiE9bnVsbCYmKHRhPVM4ZShhKSxYYSs9dGEpO1hhKz0iPGRpdiIrXy55RihhLHtVYTpfLlQoSiwtMSxJYj0+Xy52QyhJYikpLHRyYWNrOls0LDNdLHZpc2liaWxpdHk6SD8iaGlkZGVuIjoidmlzaWJsZSIsUmM6W3tEYzpfLlViKDc0NSxfLmpwLF8ueEcpLHZhbHVlOl8ueUcoMTkpfV19KS5hdHRyaWJ1dGVzK18uVygidTE2U3MgIisoYnx8eD8iSWQ3dmpiICI6IiIpKyhiPyJENDNTV2QgIjoiIikrKGM/IlJFQ2RtZCAiOiIiKSsobT8ib3J1NkVlICI6IiIpKyhuPwoiZmw1dHZmICI6IiIpKyhIPyIiOiJxVlN3a2MgIikpK18uWChIPyJkaXNwbGF5OiIrXy5SKGEuaXNSdGwoKT9fLlN3KCJkaXNwbGF5Iiwibm9uZSIpOiJub25lIikrIjsiOiIiKStfLlYoJyBqc25hbWU9IicrXy5SKCJFRmV4SWYiKSsnIicrKFEmJiFaPycgYXJpYS1oaWRkZW49IicrXy5SKCJ0cnVlIikrJyInOiIiKSsoaGEhPSIiPycgYXJpYS1sYWJlbGxlZGJ5PSInK18uUihoYSkrJyInOiIiKSsoWSE9IiI/JyBpZD0iJytfLlIoWSkrJyInOiIiKSsoWj8nIHJvbGU9IicrXy5SKFkhPSIiPyJ0b29sdGlwIjoiZGlhbG9nIikrJyInOiIiKSsoWj8nIHRhYmluZGV4PSInK18uUigiLTEiKSsnIic6IiIpKycganNhY3Rpb249IicrXy5SKGthPyJJOW93QjtrZXlkb3duOnVZVDJWYjt0cmFuc2l0aW9uZW5kOkExdjQ0ZCI6InRyYW5zaXRpb25lbmQ6bjl2NXllIikrJyInKSsiPiIrKGthPyI8c3ZnIitfLlcoImJTaTFmZSAiKStfLlgoKGh8fGs/IiI6ImxlZnQ6IitfLlIoXy5WdyhFYSkpKyI7IikrCihoPyJyaWdodDoiK18uUihfLlZ3KEVhKSkrIjsiOiIiKSsocHx8cj8idG9wOiIrXy5SKF8uVncoYS5pc1J0bCgpP18uU3coInRvcCIsRWEpOkVhKSkrIjsiOiIiKSsoeD8iYm90dG9tOiIrXy5SKF8uVncoYS5pc1J0bCgpP18uU3coImJvdHRvbSIsRWEpOkVhKSkrIjsiOiIiKSkrXy5WKCcgdmlld0JveD0iJytfLlIoIjAgMCAiK1N0cmluZyhWYSkrIiAiK1N0cmluZyhmYikpKyciIGFyaWEtaGlkZGVuPSJ0cnVlIiBmb2N1c2FibGU9ImZhbHNlIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciJykrIj4iKyhiPyI8cGF0aCIrXy5XKCIiKStfLlgoIiIpK18uVignIGQ9Ik0wLDAgMTQsMCA3LjcsNi4zIEEgMSwxIDAgMCAxIDcsNi42IDEsMSAwIDAgMSA2LjMsNi4zIicpKyI+PC9wYXRoPiI6IiIpKyhjPyI8cGF0aCIrXy5XKCIiKStfLlgoIiIpK18uVignIGQ9Ik0wLDcgMTQsNyA3LjcsLjcgYSAxLC0xIDAgMCAwIC0uNywtLjMgMSwtMSAwIDAgMCAtLjcsLjMiJykrIj48L3BhdGg+IjoKIiIpKyhtPyI8cGF0aCIrXy5XKCIiKStfLlgoIiIpK18uVignIGQ9Ik0gMCwwIFYgMTQgTCA2LjMsNy43IEEgMSwxIDAgMCAwIDYuNiw3IDEsMSAwIDAgMCA2LjMsNi4zIicpKyI+PC9wYXRoPiI6IiIpKyhuPyI8cGF0aCIrXy5XKCIiKStfLlgoIiIpK18uVignIGQ9Ik0gNywwIFYgMTQgTCAwLjcsNy43IEEgMSwxIDAgMCAxIDAuNCw3IDEsMSAwIDAgMSAwLjcsNi4zIicpKyI+PC9wYXRoPiI6IiIpKyI8L3N2Zz4iOiIiKSsiPGRpdiIrXy5XKCJxa2l6S2YgIisoZT8ibEdQRzJiICI6IiIpKyhyPyJsd1U2RGQgIjoiIikrKGthfHxaPyJ3SFlsVGQgIjoiIikrKFEmJiFaPyJBcEh5VGIgIjoiIikreDhlKHlhLGthLFEsWikpK18uWCgoaHx8Znx8bT8icmlnaHQ6IitfLlIoXy5WdyhzYikpKyI7IjoiIikrKGd8fGR8fG4/ImxlZnQ6IitfLlIoXy5WdyhzYikpKyI7IjoiIikrKGN8fHA/InRvcDoiK18uUihfLlZ3KGEuaXNSdGwoKT9fLlN3KCJ0b3AiLHZiKTp2YikpKyI7IjoiIikrKGJ8fHg/CiJib3R0b206IitfLlIoXy5WdyhhLmlzUnRsKCk/Xy5TdygiYm90dG9tIix2Yik6dmIpKSsiOyI6IiIpKStfLlYoKGRhPycgZGF0YS1wYXI9IicrXy5SKG0/InJpZ2h0IjpuPyJsZWZ0IjpjPyJ0b3AiOiJib3R0b20iKSsnIic6IiIpKyhkYT8nIGRhdGEtcGVyPSInK18uUihofHxmPyJyaWdodCI6az94PyJib3R0b20iOiJ0b3AiOiJsZWZ0IikrJyInOiIiKSsoZGE/JyBqc25hbWU9IicrXy5SKCJ5czZWb2UiKSsnIic6IiIpKSsiPiIrKHlhPyI8ZGl2IitfLlcoKGU/IktpTEhMICI6IiIpKyhyPyJnYkhvT2UgIjoiIikreDhlKCExLGthLFEsWikpK18uWCgiIikrXy5WKGRhPycganNuYW1lPSInK18uUigicmxPQjVkIikrJyInOiIiKSsiPiI6IiIpKyI8ZGl2IitfLlcoImtqWjFIYyAiKStfLlgoIiIpK18uVigiIikrIj4iKyhRPyI8ZGl2IitfLlcoKFo/IiI6IkJNV0k3ZCAiKSsoWj8iRTRFTWUgIjoiIikpK18uWCgiIikrXy5WKFo/IiI6JyBqc25hbWU9IicrXy5SKCJxOWlyUWQiKSsnIicpKwoiPiI6IiIpKyhRPyIiOiI8c3BhbiIrXy5XKCIiKStfLlgoIiIpK18uVignIGpzbmFtZT0iJytfLlIoInE5aXJRZCIpKyciIGFyaWEtbGV2ZWw9IicrXy5SKFN0cmluZyhCKSkrJyIgcm9sZT0iaGVhZGluZyInKSsiPiIpO3ohPW51bGwmJihfLlJGKGEseikmJihiPSI8c3BhbiIrXy5XKCJLTWtBYyAiK18uUEYoYSx6KStfLk1GKGEseikpK18uWChfLlFGKGEseikrXy5ORihhLHopKStfLlYoXy5PRihhLHopK18uTEYoYSx6KSkrIj4iK18uVEYoYSx6KSsiPC9zcGFuPiIsWGErPV8uU0YoYSx6KT8iIjpiKSxYYSs9IiAiKTtYYSs9Wj8iPGRpdiIrXy5XKCIiKStfLlgoIiIpK18uVigiIikrIj4iOiIiO04hPW51bGwmJl8uUkYoYSxOKSYmKHo9Xy5URihhLE4pLFhhKz1fLlNGKGEsTik/IiI6eik7WGErPShaPyI8L2Rpdj4iOiIiKSsoUT8iIjoiPC9zcGFuPiIpKyhRPyI8L2Rpdj4iOiIiKStfLm54KDAsY2EubGVuZ3RoKS5yZWR1Y2UoZnVuY3Rpb24oSWIsSmIpe3ZhciBzYz1fLmZ4KGNhLG51bGwsCkpiKTtJYis9IjxkaXYiK18uVygiZmFZTGtjICIrKEpiPT0wPyJvT0VxdGUgIjoiIikpK18uWCgiIikrXy5WKCIiKSsiPiI7Xy5SRihhLHNjKSYmKEpiPSI8ZGl2IitfLlcoXy5QRihhLHNjKStfLk1GKGEsc2MpKStfLlgoXy5RRihhLHNjKStfLk5GKGEsc2MpKStfLlYoXy5PRihhLHNjKStfLkxGKGEsc2MpKSsiPiIrXy5URihhLHNjKSsiPC9kaXY+IixJYis9Xy5TRihhLHNjKT8iIjpKYik7cmV0dXJuIEliKyI8L2Rpdj4ifSwiIikrIjwvZGl2PiI7aWYoa2F8fFomJiFfLkV5KVhhKz0iPGJ1dHRvbiIrXy5XKChrYT8iaXdFUUZjICI6IiIpKyhaPyJxNloyeiAiOiIiKSkrXy5YKCIiKStfLlYoKFo/IiI6JyBqc25hbWU9IicrXy5SKCJ0cXA3dWQiKSsnIicpKyhaPycganNhY3Rpb249IicrXy5SKCJaWUlmRmQiKSsnIic6IiIpKycgYXJpYS1sYWJlbD0iJytfLlh3KE44ZSgpKSsnIicpKyI+IixOPSI8c3BhbiIrXy5XKCIiK18uREgoKSkrXy5YKF8uRUgoYSwxOCkrIiIpK18uVigiIikrIj4iKwpfLkNIKCkrIjwvc3Bhbj4iLFhhPVhhK04rIjwvYnV0dG9uPiI7cmV0dXJuIFhhKz0oeWE/IjwvZGl2PiI6IiIpKyI8L2Rpdj4iK18uekYoYSkrIjwvZGl2PiJ9LHYkZT1mdW5jdGlvbihhKXthLmthKHokZSl8fChhLm9hKHokZSx7TnRhOjAsbG1hOjEsa2dhOjIsT3RhOjMsRmJhOjQsamdhOjUsczQ6NixsTzo3LHE0OjgscjQ6OSxMdGE6MTAsTXRhOjExLGttYToxMixpY29uOjEzLFZ0OjE0LE9FOjE1LGpQOjE2LExGOjE3LHRvb2x0aXA6MTgsRno6MTksd3g6MjAsa006MjEsZlM6MjIsZUo6MjMsbU86MjR9LHgkZSx5JGUsdCRlLHUkZSwiIixxJGUsIiIsciRlLCIiLHMkZSksXy5GSChhKSx5OGUoYSksQzhlKGEpLE04ZShhKSxSOGUoYSksVzhlKGEpLGE5ZShhKSxmOWUoYSksazllKGEpLHA5ZShhKSx1OWUoYSksejllKGEpLEU5ZShhKSxKOWUoYSksTzllKGEpLFQ5ZShhKSxZOWUoYSksbCRlKGEpKX0seiRlPSJ0LXlpTmY0RFBQUDdVIjt2YXIgQSRlPWZ1bmN0aW9uKCl7Xy5rdygpO3JldHVybiIifSxCJGU9ZnVuY3Rpb24oKXtfLmt3KCk7cmV0dXJuIiJ9LEMkZT1mdW5jdGlvbigpe18ua3coKTtyZXR1cm4iIn0sRCRlPWZ1bmN0aW9uKCl7Xy5rdygpO3JldHVybiEwfSxFJGU9ZnVuY3Rpb24oKXtfLmt3KCk7cmV0dXJuITF9LEgkZT1mdW5jdGlvbihhLGIpe0YkZShhKTtyZXR1cm4gRyRlKGEsYi5wb3NpdGlvbixiLmljb24sYi5MRixiLk9FLGIudG9vbHRpcCxiLmpQLGIuRnosYi53eCxiLmtNLGIuZlMsYi5lSixiLm1PKX0sSSRlPWZ1bmN0aW9uKGEsYil7RiRlKGEpO3ZhciBjPWIucG9zaXRpb24sZD1iLmljb24sZT1iLkxGLGY9Yi5PRSxnPWIudG9vbHRpcCxoPWIualAsaz1iLkZ6LG09Yi53eCxuPWIua00scD1iLmZTLHI9Yi5lSjtiPWIubU87Xy5rdygpO2E9RyRlKGEsYyxkLGUsZixnLGgsayxtLG4scCxyLGIpO3JldHVybiBfLnkoYSl9LEckZT1mdW5jdGlvbihhLGIsYyxkLGUsZixnLGgsayxtLG4scCxyKXt2YXIgeD0KXy5rdygpPT0icnRsIix6PWI9PTEwfHxiPT0xMnx8Yj09MTEsQj1iPT0xM3x8Yj09MTV8fGI9PTE0LEg9Yj09Nnx8Yj09MyxKPWI9PTd8fGI9PTQsTj1iPT04fHxiPT0xLFE9Yj09OXx8Yj09MjtyZXR1cm4gdyRlKGEsYj09MHx8Yj09M3x8Yj09NHx8Yj09MXx8Yj09MixiPT01fHxiPT02fHxiPT03fHxiPT04fHxiPT05LHg/SjpILGI9PTV8fGI9PTAseD9IOkoseD9ROk4seD9OOlEsenx8Qix4P0I6eix4P3o6QixiPT0xMHx8Yj09MTMsYj09MTJ8fGI9PTE1LGI9PTExfHxiPT0xNCxjLGUsZyxkLGYsaCxrLG0sbixwLHIpfSxGJGU9ZnVuY3Rpb24oYSl7YS5rYShKJGUpfHwoYS5vYShKJGUse3Bvc2l0aW9uOjAsaWNvbjoxLExGOjIsT0U6Myx0b29sdGlwOjQsVnQ6NSxqUDo2LEZ6Ojcsd3g6OCxrTTo5LGZTOjEwLGVKOjExLG1POjEyfSxIJGUsSSRlLEQkZSxFJGUsIiIsQSRlLCIiLEIkZSwiIixDJGUpLHYkZShhKSl9LEokZT0idC1wa1pMZkZvUTFySSI7dmFyIE4kZSxPJGUsUiRlLFMkZSxUJGU7Xy5LJGU9ZnVuY3Rpb24oYSxiKXtyZXR1cm4gYj8iIjonIGpzc2hhZG93PSInK18uUigiIikrJyInfTtfLkwkZT1mdW5jdGlvbihhLGIsYyxkLGUsZil7cmV0dXJuKGY/IiI6InkxeWFkZiAiKSsoZj8ieDNTQVlkICI6IiIpfTtfLk0kZT1mdW5jdGlvbihhLGIsYyxkLGUpe3JldHVybiBlIT0wPyJ6LWluZGV4OiIrXy5SKF8uVncoYS5pc1J0bCgpP18uU3coInotaW5kZXgiLFN0cmluZyhlKSk6U3RyaW5nKGUpKSkrIjsiOiIifTtOJGU9ZnVuY3Rpb24oKXtyZXR1cm4hMH07TyRlPWZ1bmN0aW9uKCl7cmV0dXJuITF9O1IkZT1mdW5jdGlvbihhLGIpe18uUCRlKGEpO3JldHVybiBfLlEkZShhLGIuZGlzYWJsZWQsYi5wb3NpdGlvbixiLmljb24sYi5ITCxiLlZ0LGIuT0UsYi5qUCxiLkxGLGIuTzQsYi5jb250ZW50LGIudG9vbHRpcCxiLkZ6LGIud3gsYi5rTSxiLmZTLGIud0thLGIucHosYi5lSixiLm1PLGIucFphKX07ClMkZT1mdW5jdGlvbihhLGIpe18uUCRlKGEpO3ZhciBjPWIuZGlzYWJsZWQsZD1iLnBvc2l0aW9uLGU9Yi5pY29uLGY9Yi5lTyxnPWIuSEwsaD1iLlZ0LGs9Yi5PRSxtPWIualAsbj1iLkxGLHA9Yi5PNCxyPWIuY29udGVudCx4PWIudG9vbHRpcCx6PWIuRnosQj1iLnd4LEg9Yi5rTSxKPWIuZlMsTj1iLndLYSxRPWIucHosWj1iLmVKLFk9Yi5tTztiPWIucFphO2Y9IjxkaXYiK18uVyhfLkwkZShhLGMsZCxlLGYsZyxoLGssbSxuLHAscix4LHosQixILEosTixRLFosWSxiKSsiIikrXy5YKF8uTSRlKGEsYyxkLGUsZixnLGgsayxtLG4scCxyLHgseixCLEgsSixOLFEsWixZLGIpKyIiKStfLlYoXy5LJGUoYSxjLGQsZSxmLGcsaCxrLG0sbixwLHIseCx6LEIsSCxKLE4sUSxaLFksYikrIiIpKyI+IjthPV8uUSRlKGEsYyxkLGUsZyxoLGssbSxuLHAscix4LHosQixILEosTixRLFosWSxiKTtyZXR1cm4gXy55KGYrKGErIjwvZGl2PiIpKX07Cl8uUSRlPWZ1bmN0aW9uKGEsYixjLGQsZSxmLGcsaCxrLG0sbixwLHIseCx6LEIsSCxKLE4sUSxaKXt2YXIgWT0iIjtpZihlPT0xKXt2YXIgZGE9bzhlKGEpO1krPWRhfWU9PTAmJihlPXQ4ZShhKSxZKz1lKTtiPT0xJiZfLlJGKGEsbikmJihlPV8uVEYoYSxuKSxZKz1fLlNGKGEsbik/IiI6ZSk7Yj09MCYmKHImJihZKz0iPHNwYW4iK18ueUYoYSx7VWE6Xy5UKG0sLTEsY2E9Pl8udkMoY2EpKSx0cmFjazpbNCwzXX0pLmF0dHJpYnV0ZXMrXy5XKCIiKStfLlgoIiIpK18uVignIGpzbmFtZT0iJytfLlIoImJOOTdQYyIpKyciJysoSiE9IiI/JyBpZD0iJytfLlIoSikrJyInOiIiKSsnIGpzc2xvdD0iIicpKyI+IixfLlJGKGEsbikmJihiPV8uVEYoYSxuKSxZKz1fLlNGKGEsbik/IiI6YiksWSs9Xy56RihhKSsiPC9zcGFuPiIpLEghPW51bGwmJl8uUkYoYSxIKSYmKGI9Xy5URihhLEgpLFkrPV8uU0YoYSxIKT8iIjpiKSxaJiZEJGUoYSxjLGQsayxnLHAsZixoLHIseCx6LEIsTixRKSYmKEg9CkckZShhLGMsZCxrLGcscCxoLHIseCx6LEIsTixRKSxZKz1FJGUoYSxjLGQsayxnLHAsZixoLHIseCx6LEIsTixRKT8iIjpIKSxyfHwoWSs9IjxzcGFuIitfLnlGKGEse1VhOl8uVChtLC0xLGNhPT5fLnZDKGNhKSksdHJhY2s6WzQsM119KS5hdHRyaWJ1dGVzK18uVygiIikrXy5YKCIiKStfLlYoJyBqc25hbWU9IicrXy5SKCJiTjk3UGMiKSsnIicrKEohPSIiPycgaWQ9IicrXy5SKEopKyciJzoiIikrJyBqc3Nsb3Q9IiInKSsiPiIsXy5SRihhLG4pJiYoYz1fLlRGKGEsbiksWSs9Xy5TRihhLG4pPyIiOmMpLFkrPV8uekYoYSkrIjwvc3Bhbj4iKSk7cmV0dXJuIFl9OwpfLlAkZT1mdW5jdGlvbihhKXthLmthKFQkZSl8fChhLm9hKFQkZSx7ZGlzYWJsZWQ6MCxwb3NpdGlvbjoxLGljb246MixlTzozLEhMOjQsVnQ6NSxPRTo2LGpQOjcsTEY6OCxPNDo5LGNvbnRlbnQ6MTAsdG9vbHRpcDoxMSxGejoxMix3eDoxMyxrTToxNCxmUzoxNSx3S2E6MTYscHo6MTcsZUo6MTgsbU86MTkscFphOjIwfSxSJGUsUyRlLE4kZSxPJGUsIiIsXy5LJGUsIiIsXy5MJGUsIiIsXy5NJGUpLG44ZShhKSxzOGUoYSksRiRlKGEpKX07VCRlPSJ0LTdHUi02Ni1FTWtRIjt2YXIgYWFmLGJhZixjYWY7Xy5VJGU9ZnVuY3Rpb24oYSxiLGMsZCxlLGYsZyl7dmFyIGg9IiI7Yz1jPT1udWxsPzU6Yzt2YXIgaz1fLndDKG5ldyBfLm9wLDMxOTc2NiksbT1fLndDKG5ldyBfLm9wLDMxOTc2Nyksbj1fLkpNP18uUygidC1qdnhQTVdkaG9qNCIpOm51bGw7ZD1lPzA6ZDt2YXIgcD0hXy5KTTtyZXR1cm4gaCs9KGI/IiI6JyBqc2NvbnRyb2xsZXI9IicrXy5SKCJqeXdFa2YiKSsnIicpKyhlPycgZGF0YS1oPSInK18uUigiMSIpKyciJzoiIikrJyBkYXRhLXBvcz0iJytfLlIoU3RyaW5nKE1hdGguZmxvb3IoYykpKSsnIicrKGI/IiI6JyBqc2FjdGlvbj0iJytfLlIoImZvY3VzaW46RzVXQlljO2ZvY3Vzb3V0OnJuYURPZCIrKF8uRXk/Ijttb3VzZWVudGVyOnRpNmhHYzttb3VzZWxlYXZlOmlBSldIOyI6IiIpKSsnIicpK18uSyRlKGEsYixjLG51bGwsZCxmLDAsLTEscCxrLG0sZyxuLCEwLCExLCIiLCEwLG51bGwsIiIsW10sIiIsITEpfTsKXy5WJGU9ZnVuY3Rpb24oYSxiLGMsZCxlLGYsZyl7dmFyIGg9IiI7Yz1jPT1udWxsPzU6Yzt2YXIgaz1fLndDKG5ldyBfLm9wLDMxOTc2NiksbT1fLndDKG5ldyBfLm9wLDMxOTc2Nyksbj1fLkpNP18uUygidC1qdnhQTVdkaG9qNCIpOm51bGw7cmV0dXJuIGgrPV8uTCRlKGEsYixjLG51bGwsZT8wOmQsZiwwLC0xLCFfLkpNLGssbSxnLG4sITAsITEsIiIsITAsbnVsbCwiIixbXSwiIiwhMSl9O18uVyRlPWZ1bmN0aW9uKGEsYixjLGQsZSxmLGcpe3ZhciBoPSIiO2M9Yz09bnVsbD81OmM7dmFyIGs9Xy53QyhuZXcgXy5vcCwzMTk3NjYpLG09Xy53QyhuZXcgXy5vcCwzMTk3NjcpLG49Xy5KTT9fLlMoInQtanZ4UE1XZGhvajQiKTpudWxsO3JldHVybiBoKz1fLk0kZShhLGIsYyxudWxsLGU/MDpkLGYsMCwtMSwhXy5KTSxrLG0sZyxuLCEwLCExLCIiLCEwLG51bGwsIiIsW10sIiIsITEpfTsKXy5YJGU9ZnVuY3Rpb24oKXtfLndDKG5ldyBfLm9wLDMxOTc2Nik7Xy53QyhuZXcgXy5vcCwzMTk3NjcpO18uSk0mJl8uUygidC1qdnhQTVdkaG9qNCIpO3JldHVybiEwfTtfLlkkZT1mdW5jdGlvbigpe18ud0MobmV3IF8ub3AsMzE5NzY2KTtfLndDKG5ldyBfLm9wLDMxOTc2Nyk7Xy5KTSYmXy5TKCJ0LWp2eFBNV2Rob2o0Iik7cmV0dXJuITF9O2FhZj1mdW5jdGlvbihhLGIpe18uWiRlKGEpO3JldHVybiBfLiQkZShhLGIuZGlzYWJsZWQsYi5wb3NpdGlvbixiLkhMLGIuY29udGVudCl9OwpiYWY9ZnVuY3Rpb24oYSxiKXtfLlokZShhKTt2YXIgYz1iLmRpc2FibGVkLGQ9Yi5wb3NpdGlvbixlPWIuZU8sZj1iLlNzYixnPWIuSEwsaD1iLmNvbnRlbnQ7Yj0iIjtfLlgkZShhLGMsZCxlLGYsZyxoKSYmKF8ud0MobmV3IF8ub3AsMzE5NzY2KSxfLndDKG5ldyBfLm9wLDMxOTc2NyksXy5KTSYmXy5TKCJ0LWp2eFBNV2Rob2o0IiksZT0iPGRpdiIrXy5XKF8uViRlKGEsYyxkLGUsZixnLGgpKyIiKStfLlgoXy5XJGUoYSxjLGQsZSxmLGcsaCkrIiIpK18uVihfLlUkZShhLGMsZCxlLGYsZyxoKSsiIikrIj4iLGE9Xy4kJGUoYSxjLGQsZyxoKSxlKz1hKyI8L2Rpdj4iLGIrPWUpO3JldHVybiBfLnkoYil9OwpfLiQkZT1mdW5jdGlvbihhLGIsYyxkLGUpe2M9Yz09bnVsbD81OmM7dmFyIGY9Xy53QyhuZXcgXy5vcCwzMTk3NjYpLGc9Xy53QyhuZXcgXy5vcCwzMTk3NjcpLGg9Xy5KTT9fLlMoInQtanZ4UE1XZGhvajQiKTpudWxsO3JldHVybiBfLlEkZShhLGIsYyxudWxsLGQsMCwtMSwhXy5KTSxmLGcsZSxoLCEwLCExLCIiLCEwLG51bGwsIiIsW10sIiIsITEpfTtfLlokZT1mdW5jdGlvbihhKXthLmthKGNhZil8fChhLm9hKGNhZix7ZGlzYWJsZWQ6MCxwb3NpdGlvbjoxLGVPOjIsU3NiOjMsSEw6NCxjb250ZW50OjV9LGFhZixiYWYsXy5YJGUsXy5ZJGUsIiIsXy5VJGUsIiIsXy5WJGUsIiIsXy5XJGUpLGo4ZShhKSxfLlAkZShhKSl9O2NhZj0idC1mTko0SXp0OWVnbyI7Cn1jYXRjaChlKXtfLl9EdW1wRXhjZXB0aW9uKGUpfQp0cnl7Cl8uSTdlPV8ua2MoIm5UTmZoZSIsW18uRlphLF8uQk1dKTsKfWNhdGNoKGUpe18uX0R1bXBFeGNlcHRpb24oZSl9CnRyeXsKdmFyIGdNZCxpTWQsak1kLGtNZCxuTWQsb01kLHBNZDtnTWQ9ZnVuY3Rpb24oKXtyZXR1cm4iIn07Xy5oTWQ9ZnVuY3Rpb24oKXtyZXR1cm4oXy5MQj8iejFhc0NlICI6IiIpKyhfLkxCPyJ3dVhtcWMgIjoiIikrKF8uTEI/IiI6IldxUWVxYyAiKSsoXy5MQj8iIjoiRkFna2JjICIpfTtpTWQ9ZnVuY3Rpb24oKXtyZXR1cm4iIn07ak1kPWZ1bmN0aW9uKCl7cmV0dXJuITB9O2tNZD1mdW5jdGlvbigpe3JldHVybiExfTtuTWQ9ZnVuY3Rpb24oYSxiKXtfLmxNZChhKTtyZXR1cm4gXy5tTWQoYSxiLkRiLGIuRWIpfTtvTWQ9ZnVuY3Rpb24oYSxiKXtfLmxNZChhKTt2YXIgYz1iLkRiLGQ9Yi5FYjtiPSI8c3BhbiIrXy5XKF8uaE1kKGEsYyxkKSsiIikrXy5YKCIiKStfLlYoIiIpKyI+IjthPV8ubU1kKGEsYyxkKTtyZXR1cm4gXy55KGIrKGErIjwvc3Bhbj4iKSl9OwpfLm1NZD1mdW5jdGlvbihhLGIsYyl7Yj1iPT1udWxsP251bGw6YjtjPWM9PW51bGw/bnVsbDpjO2M9KGIhPW51bGw/Xy5URihhLGIpOiIiKSsoYyE9bnVsbD9fLlRGKGEsYyk6IiIpKyhfLkxCPyhfLlVCPT0wPyI8c3ZnIitfLlcoIiIpK18uWCgiIikrXy5WKCcgZm9jdXNhYmxlPSJmYWxzZSIgYXJpYS1oaWRkZW49InRydWUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgdmlld0JveD0iMCAwIDI0IDI0IicpKyI+PHBhdGgiK18uVygiIikrXy5YKCIiKStfLlYoJyBkPSJNMTkgNi40MUwxNy41OSA1IDEyIDEwLjU5IDYuNDEgNSA1IDYuNDEgMTAuNTkgMTIgNSAxNy41OSA2LjQxIDE5IDEyIDEzLjQxIDE3LjU5IDE5IDE5IDE3LjU5IDEzLjQxIDEyeiInKSsiPjwvcGF0aD48L3N2Zz4iOiIiKSsoXy5VQj09MT8iPHN2ZyIrXy5XKCIiKStfLlgoIiIpK18uVignIGZvY3VzYWJsZT0iZmFsc2UiIGFyaWEtaGlkZGVuPSJ0cnVlIiB2aWV3Qm94PSIwIDAgMjQgMjQiJykrIj48cGF0aCIrCl8uVygiIikrXy5YKCIiKStfLlYoJyBkPSJNMTkgNi40MUwxNy41OSA1IDEyIDEwLjU5IDYuNDEgNSA1IDYuNDEgMTAuNTkgMTIgNSAxNy41OSA2LjQxIDE5IDEyIDEzLjQxIDE3LjU5IDE5IDE5IDE3LjU5IDEzLjQxIDEyeiInKSsiPjwvcGF0aD48L3N2Zz4iOiIiKToiIik7Xy5MQnx8KGEud2EoXy5NQj8iLkZBZ2tiYyBzcGFuey13ZWJraXQtbWFzay1pbWFnZTp1cmwoZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFEQUFBQUF3Q0FRQUFBRDlDekVNQUFBQWswbEVRVlI0QWUyVzF3M0RRQXpGSG5CRDNvQ3BPNmE0RDhDRDhGekZiNGxNM0pXY21DUXB1cXVLVW9mcDBxWi9xOU5YRmVxLzZ2UnVTZHpWcVFPSlJiOU0zNWw4V1FJSlBNa1g0M3ErelBVOEVkY2pTVndQUkVBZlNBQjlKQkhVZzBSSUR4SWUvWkl3NkwwQi95SHluMlQvWmVxLzBmaWp3dit3OHordS9TOGMveXZULzlMM2Y3YjRQN3o4bjQ1SmtweVFIb1oxQytDQWNoOFdBQUFBQUVsRlRrU3VRbUNDKX0iOgoiIiksYS53YShfLk1CPyIiOiIuRkFna2JjIHNwYW57YmFja2dyb3VuZC1pbWFnZTp1cmwoZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFEQUFBQUF3Q0FRQUFBRDlDekVNQUFBQWswbEVRVlI0QWUyVzF3M0RRQXpGSG5CRDNvQ3BPNmE0RDhDRDhGekZiNGxNM0pXY21DUXB1cXVLVW9mcDBxWi9xOU5YRmVxLzZ2UnVTZHpWcVFPSlJiOU0zNWw4V1FJSlBNa1g0M3ErelBVOEVkY2pTVndQUkVBZlNBQjlKQkhVZzBSSUR4SWUvWkl3NkwwQi95SHluMlQvWmVxLzBmaWp3dit3OHordS9TOGMveXZULzlMM2Y3YjRQN3o4bjQ1SmtweVFIb1oxQytDQWNoOFdBQUFBQUVsRlRrU3VRbUNDKX0iKSxjKz0iPHNwYW4iK18uVygiIikrXy5YKCIiKStfLlYoIiIpKyI+PC9zcGFuPiIpO3JldHVybiBjfTtfLmxNZD1mdW5jdGlvbihhKXthLmthKHBNZCl8fGEub2EocE1kLHtEYjowLEViOjF9LG5NZCxvTWQsak1kLGtNZCwiIixnTWQsIiIsXy5oTWQsIiIsaU1kKX07CnBNZD0idC1kamR5Wm1HNk15QSI7Cn1jYXRjaChlKXtfLl9EdW1wRXhjZXB0aW9uKGUpfQp0cnl7Cl8ubWRkPWZ1bmN0aW9uKGEpe3ZhciBiO3JldHVybigoYj0vZ29vZ2xlXC4oW146Lz8jXSopLy5leGVjKGEpKT09bnVsbD92b2lkIDA6YlsxXSl8fCJjb20ifTsKfWNhdGNoKGUpe18uX0R1bXBFeGNlcHRpb24oZSl9CnRyeXsKCnZhciB6bGQ9ZnVuY3Rpb24oYSl7dmFyIGI9Xy5OaCh4bGQpO2E9YS5zcGxpdCgiIikucmV2ZXJzZSgpLmpvaW4oIiIpO3ZhciBjPXlsZChiLm9hLGEpLGQ9eWxkKGIud2EsYSk7ZC5sZW5ndGg+MCYmKGQ9ZC5zdWJzdHIoMCxkLmxhc3RJbmRleE9mKCIuIikpLGQubGVuZ3RoPmMubGVuZ3RoJiYoYz1kKSk7Yj15bGQoYi5rYSxhKTtiLmxlbmd0aD4wJiZhLmxlbmd0aD5iLmxlbmd0aCYmYi5sZW5ndGghPWQubGVuZ3RoJiYoYT1hLnN1YnN0cihiLmxlbmd0aCsxKSxiKz0iLiIrYS5zcGxpdCgiLiIpWzBdLGIubGVuZ3RoPmMubGVuZ3RoJiYoYz1iKSk7cmV0dXJuIGMuc3BsaXQoIiIpLnJldmVyc2UoKS5qb2luKCIiKXx8ImNvbSJ9O3ZhciBCbGQ9ZnVuY3Rpb24oYSl7dmFyIGI9bmV3IF8uREE7QWxkKDAsYSxiKTtyZXR1cm4gYn0seWxkPWZ1bmN0aW9uKGEsYil7dmFyIGM9LTEsZD17fSxlPTA7YS5rYSE9PXZvaWQgMCYmKGRbZV09YS5rYSk7Zm9yKDtlPGIubGVuZ3RoO2UrKyl7bGV0IGc9Yi5jaGFyQXQoZSk7aWYoIShnIGluIGEuZkopKWJyZWFrO2E9YS5mSltnXTthLmthIT09dm9pZCAwJiYoZFtlXT1hLmthKX1mb3IodmFyIGYgaW4gZClhPXBhcnNlSW50KGYsMTApLChhKzE9PWIubGVuZ3RofHxiLmNoYXJBdChhKzEpPT0iLiIpJiZhPmMmJihjPWEpO3JldHVybiBiLnN1YnN0cigwLGMrMSl9LEFsZD1mdW5jdGlvbihhLGIsYyl7Zm9yKHZhciBkO2E8Yi5sZW5ndGg7YSsrKXtkPWIuY2hhckF0KGEpO2lmKGQ9PSIhInx8ZD09Ij8iKXtjLnNldFZhbHVlKCEwKTticmVha31lbHNlIGlmKGQ9PSI6Inx8ZD09IiwiKXtjLnNldFZhbHVlKCExKTticmVha31lbHNlIGlmKGQ9PSImIilicmVhazt2YXIgZT1kO2MuZkpbZV18fAooYy5mSltlXT1uZXcgXy5EQSk7Yz1jLmZKW2VdfWErKztpZihkPT0iPyJ8fGQ9PSIsIilyZXR1cm4gYTtkbyBhPUFsZChhLGIsYyksZD1iLmNoYXJBdChhKTt3aGlsZShkIT0iPyImJmQhPSIsIik7cmV0dXJuIGErMX0seGxkPWNsYXNze2NvbnN0cnVjdG9yKCl7dGhpcy5vYT1CbGQoIiZhJjAmMHRyazktLW54PzI3cWpmLS1ueD9lOWViZ24tLW54P25iYjBjN2FiZ20tLW54Pz8xJjJvYTA4LS1ueD9hcGc2cXBjYmdtLS1ueD9oYmJnbS0tbng/cmRjZXFhMDgtLW54Pz8yJjh1Z2JnbS0tbng/ZXloM2xhMmNreC0tbng/cWJkOS0tbng/PzMmMndxcTEtLW54PzYwYTB5OC0tbng/PzR4MWQ3N3hyY2stLW54PzYmMWY0YTNhYmdtLS1ueD8yeXF5bi0tbng/NWIwNnQtLW54P2F4cS0tbng/ZWM3cS0tbng/bGJndy0tbng/Pzg4M3hubi0tbng/OWQyYzI0LS1ueD9hJmE/aXQ/P2IhLiZncm8/bGltP21vYz9zcix0ZW4/dWRlP3ZvZz95bGRuZXJiLnBvaHMsP2FiaWxhP2M/aWhzb3Q/bT9uPz9jIS4mYiZhP20/bj8/YyZiP2c/cT8/ZGlubyxlcD9mbj9rJnM/eT8/bG4/bm8/b2MscCZpLW9uLG9oc2RhZXJwc3ltLD9zbj90bj91bj94b2IseXNyYWIsP2kmbWE/ciZlbWFycD9mYT8/c3JvYz8/P2QmYXRzP24mZWl0P29oPz9vbT9zYT90bD8/ZWc/ZiZjP29iPz9nIWVtbz9uYXJpcGk/b3k/P2hza2locz9pJmRlbSEucmVtYXJmLD9ocz9rIW9uPz9zYSEuJm5vbWVhZCxzbmR1b2xjLHhpZCw/Pz9qbmluP2smYXNvP2Rvdj9lZGU/dXN0bz8/bCEuJmdybz9tb2M/b2ZuaT9yJmVwP25iLD90JmVuP25pPz91ZGU/dm9nPz9pcmduYWhzP2xlJm5pc2l1Yz9yYm11ZGVyPz8/bSEuJmNhP2dybz9vYz9zc2VycD90ZW4/dm9nPz9haG9rb3k/ZTAwc2Y3dnFuLS1ueD9tPz9uIS4mZ3JvP21vYz9vYz90JmVuP2xhPz92b2c/P2F2P2lzP29sZWNyYWI/dGVhPz9wIS4mYm9nP2NhP2QmZW0/bHM/P2cmbmk/cm8/P21vJmM/bj8/b2JhP3Rlbj91ZGU/P2M/ZzdoeWFiZ20tLW54P3JhIS4mNDYxZT82cGk/ZW1vaD9pcnU/bnJ1P3JkZGEtbmk/c2lyaT8/P3M/P3EhLiZlbWFuP2dybz9oY3M/bGltP21vYz90ZW4/dWRlP3ZvZz8/P3ImYXo/ZW1hYz9mNGEzYWJnbS0tbng/biFkNXVoZjhsZTU4cjR3LS1ueD8/dWthcz8/cyEuJmJ1cD9kZW0/Z3JvP2hjcz9tb2M/dGVuP3VkZT92b2c/P2FjIS51YmFuLml1LD9pdj8/dCZhZD9lbGh0YT9sZWQ/b3lvdD8/dSEuJmEmY2lubml2P2VtaXJjP2kmaHpoemlyb3Bhej9zdHlubml2P3R0YXByYWthej8/cyZlZG8/c2Vkbz8/dGxheT92YXRsb3A/P2JzP2NjLGQmYXJnb3ZvcmlrP28hcm8mZ2h6dT9oaHp1Pz8/dGwsP2UmaHpoemlyb3Bhej9udmlyP3Q/P2YmaT9uaSw/ZyZsP3JvPz9oaz9pJnN0dmlucmVoYz95a3N0eW4mbGVtaGs/dnlwb3JrPz8/ayZjP20/cyZuYSZndWw/aHVsPz90JmVub2Q/dWw/P3YmaWtuYXJmLW9uYXZpP29ydGVwb3JwJmVuZD9pbmQ/Pz8/P2wmaXBvbnJldD9vcG90c2EmYmVzP3Zlcz8/cD8/bSZrP29jP3M/eXJrPz9uJmM/ZD9pP29zcmVoaz92P3lsb3Y/P28mYyxudm9yPz9wJmQ/cCx6Pz9yJmM/aW1vdGloej9rP3ltb3R5aHo/P3NrP3QmZW4/bD96Pz91ZGU/djpjP2UmYWxva2luP2lrPz9pJmFsb2t5bT9oaW5yZWhjP2tyYWhrP3ZsP3lrPz9rP2w/byZnIWlucmVoYz8/a3JhaGs/P3I/LHhjLHkmaWtzdGlubGVtaGs/bXVzP3MmYWtyZWhjP3Nha3JlaGM/dHZvbnJlaGM/Pz96JmliLHU/Pz8/diFhaj9iYj9ldD9pdj8/d2FuaWtvP3gmYT9pYWNhbD8/eW9nYW4/eiYuJmJldz9jJmE/aSZuP3JnYT8/P2dybz9sJmltP29vaGNzPz9tJm9uP3Q/P28mYz9nbj8/cmFkbm9yZz9zaW4/dCZlbj9sYT8/dWRlP3ZvZz93YWw/P3ppcCEua29yZ24sPz8/YiYwMGF2ZTVhOWlhYmdtLS1ueD8xJjI1cWh4LS1ueD82OHF1di0tbng/ZTJrYzEtLW54Pz8yeHRiZ20tLW54PzMmYjJrY2MtLW54P2pjYTFkLS1ueD8/NCY2JjFyZnotLW54P3FpZi0tbng/Pzk2cnpjLS1ueD8/ODh1dm9yLS1ueD9hJjBkYzR4YmdtLS1ueD9jP2hlcj9uP3JhP3Q/P2IhLiZlcm90cz9ncm8/bW9jP28mYz9mbmk/P3Rlbj91ZGU/diZvZz90Pz96aWI/P2E/P2Mmaj9zPz9kJmhlc2EwOC0tbng/bWk/P2c/bCEuJmdybz9tb2M/dGVuP3VkZT92b2c/P20/P3MhLiZncm8/bW9jP3Rlbj91ZGU/dm9nPz8/dGMtcmV0YXJlYnNuZWdtcmV2LS1ueD91JmxjIS4mZWxlaixzbmR1b2xjLHlzcmFiLD9zbWFzPz9wIS55c3JhYiw/P3dwLWdudXRhcmVic25lZ21yZXYtLW54Pz9jJjEmMXE1NC0tbng/aGJndy0tbng/PzJlOWMyY3pmLS1ueD80JjR1YjFrbS0tbng/YTFlLS1ueD9ieWo5cS0tbng/ZXJkNWE5YjFrY2ItLW54Pz84JjR4eDJnLS1ueD9jOWpyYjJoLS1ueD8/OWpyJmImMmgtLW54PzU0LS1ueD85cy0tbng/P2MmZWctLW54P2gzLS1ueD9zMi0tbng/Pz9hIS4mZ3JvP2tjYWJkZWVmLGxpbT9tb2M/cnJkLHNtcm9mLHRlbj91ZGU/dm9nPz8zYTA5LS1ueCEuJmNhMW8tLW54P2d2YTFjLS1ueD9oJmNhMW8tLW54P3phMDktLW54Pz90YTFkLS1ueD91YTA4LS1ueD8/Pz9iJmE/Yj9jaT9mNzZhMGM3eWxxYmdtLS1ueD9zaD8/YyEuJmNlLGUmdWdhZWx5c2F0bmFmLHp5cnMsP2duaXBwYXJjcyxrdSxsaWFtd3QsbndhcHMuc2VjbmF0c25pLHBpLWR1b2xjLHJldnJlcy1lbWFnLHMmbmR1b2xjLG90b2hweW0scHBhcmV2ZWxjLHNlY2NhcHRmLHUsP3UmZSxnLHdjYyw/eHNjLD8wYXRmN2I0NS0tbng/YTFsLS1ueD8/ZSEuJjIxaz9hcGM/YiZvZz91cD8/YyZpc3A/b2Q/P2RlbT9lJnNhYix1Yz95Zz8/ZiZlaGM/b3JwPz9nJmJhP25lP3JvP3RrbT8/aGNldD9qb2w/bCZhJmc/aWNpZmZvLHM/P2ltP3V0Pz9tJmRhP29jP3NlPz9uJmdkP2lmP28mbT9yZ2E/Pz9vJmNzaWQ/Zm5pP2kmcj91Pz9ycD8/cHBycj9xaXNwP3ImYWI/Ymk/dG4/dXQ/P3QmYWw/ZSZuP3Y/P24mZWQ/byZjP2RvPz8/b2Y/cXJhP3JhPz91ZGU/dm9nP3h4eD8/YmV1cT9uP3Ntb2M/P2ZkaD9pJmxvaHRhYz9uJmFncm8/aWxjP29zYW5hcD8/c3VtP3RpYz8/bCEuJmdybz9tb2M/b2M/dGVuP3VkZT92b2c/eW8sP2w/P20hLiZtdD9vc3NhPz9wMWFrY3EtLW54Pz9uIS4mbW9uP29zc2E/P2k/cD8/cmVsY2VsP3MhLiZncm8/bW9jP3Rlbj91ZGU/dm9nPz8/dCFzP3c/P3YhLiZncm8/bGltP21vYz9zbmR5bSx0ZW4/dWRlP3YmZzouZCwsb2c/Pz8/d3A/eW4/P2QmMnVyemMtLW54PzMmMXdycGstLW54P2MmNGIxMS0tbng/OWpyY3BmLS1ueD8/PzV4cTU1LS1ueD82OTd1dG8tLW54Pzc1eXJway0tbng/OWN0ZHZrY2UtLW54P2EhZD9lcj9vbG53b2Q/P2IhLiZjYT9kaT9ncm8/aGNzP2lhP2xpbT9tb2M/byZjP2ZuaT8/dCZlbj9pPz91ZGU/diZvZz90Pz8/MmJhYmdtLS1ueD8/YyEuJmNjLHZvZz8/ZzlhMmcyYjBhZTBjaGNsYy0tbng/P2UmbSFidWxjPz9yIWs/P3NvcHhlP3RpbWlsP3c/P2ZjP2chLiZ1ZGU/dm9nPz8/aCZkM3RiZ20tLW54P3A/dD8/aSEuJmFzZWQ/YmV3P2NhP2U6bm96LCxoY3M/aWE/bGltP28mYz9nPz9wb2s/cm8/c2Vwbm9wP3Rlbj95JmtmdDktLW54P20/P3ppYj9cdTFiMzZcdTFiMmVcdTFiMjk/P2I/b3JkbmE/cD9yZGFtPz9sJml1YiEuJjB2LGZydXNkbml3LHlhZG90cGlocyw/P29nP3Jvdz8/bSEucmksP24mYSZiP2whcmFhcz8/P29iP3VmPz9vJm9mP3JwPz9yJmEmYyZ0aWRlcmM/eWFsY3JhYj8/dWduYXY/P2VmNTA2dzRiLS1ueD9rIS4mb2MsdWRlLD9qaDNhMWhhYmdtLS1ueD8/b2Y/P3MhLiZkZW0/Z3JvP21vYz9vZm5pP3Rlbj91ZGU/diZvZz90Pz8/bSFrY3JlbT8/P3QhZXhjd2tjYy0tbng/bD8/dW9sYyEuJjJrLiYzcyxicHMtdXIuJjNzLGJsLGV0aXNiZXcsP2NpdHNhbGUsZXRpc2Jldyxrc20tdXIuJjNzLGJsLGV0aXNiZXcsPz9hJmJ1cmEtdm5lai4mMXRpLGFidXJhLnJ1ZS4xdGksP3RjZXBzcmVwLHhvOi4ma3UsbnQsPyw/YiZhbHRhbSxkbmV2YXIsZXdpbGVrOi5zYywsP2NpdHNhbGVqLnBpdixkcmF5a25pbCxlJmxlaixtb2hzbmQsdG9qLD9nbml0c29oZG5lcnQuJmVkLGhjLD9sZSZ0ZW1pcnA6Lmt1LCx2YXJhbCw/bSZlZGFpZCxpYWxjZXIuJmFjLGt1LHN1LD8/biZldnVlbHVrLHdvcnUsP3BheixxaGVsYmF2cmVzYm8sciZlcG9scm9vdixndHNoLG8mcGF2LHRuZW1lbGUsPz9zZWNpdnJlcy1ub3NpbnUsdCZlbnJheGEuMS1zZSxpa2NhdHNuby5zbnVyLGxvYmV2cmVzLG5lZ3JlbWUsc2lub2dhdG5hLD91bHVsZXRvaix3Y3MuJmduaWxlYmFsdHJhbXMsa29vYmVsYWNzLGxhdGVtZXJhYi4mMS0mcmFwLXJmLHNtYS1sbiw/Mi1yYXAtcmYsP3JhcC1yZi4mM3MsYmQmZ20sciw/Y25mOi5zbm9pdGNudWYsLGV0aXNiZXctM3MsaHd0ZCxrZmFrLGwmYmNzLGRkLD9taHcscmZpLHM4azouc2Vkb24sLHRpcGtjb2MsP3MmOGssZWNuYXRzbmkuJmJ1cCx2aXJwLD9tYS1sbi4mM3MsYmQmZ20sciw/ZXRpc2Jldy0zcyxod3RkLGtmYWssbCZiY3MsZGQsP21odyxyZmksczhrOi5zZWRvbiwsdGlwa2NvYyw/P3dhdy1scC4mM3MsYmQmZ20sciw/ZXRpc2Jldy0zcyxod3RkLGtmYWssbCZiY3MsZGQsP3JmaSxzOGs6LnNlZG9uLCx0aXBrY29jLD8/eGUmbHBjaWZmYXJ0LHZub2M6LjEtdHMmYWUtc3UsZXctdWUsPyw/eWF3b2NuZS51ZSw/P3phNWNiZ24tLW54Pz9lJjEmNTN3bGYtLW54PzdhMWhiYmdtLS1ueD90YTNrZy0tbng/PzJhNmExYjZiMWktLW54PzNtYTBlMWN2ci0tbng/NDE4dHhoLS1ueD83MDdiMGUzLS1ueD9hIS4mY2E/Z3JvP2hjcz9saW0/b2M/dGVuP3ZvZz8/MDktLW54Pz9iIS4mY2E/ZXRpc2JldzMyMSxnbml0c29oYmV3LG5ldnVlbHVrLnl4b3JwemUscG9oc2RhZXJwc3ltLHNuJmR1b2xjLG9pdHVsb3N0c29ocmV0bmkuZHVvbGMsP3ltLD9vcnRhbD91dCF1b3k/Pz9jJjBrcmJkNC0tbnghLiZhMnFiZDgtLW54P2I4YWRiZWgtLW54P2M2eXRkZ2JkNC0tbng/ZDhsaGJkNS0tbng/Pz9hJmxwIS5vYyw/cHMhLiZmaDouY2l0YXRzLCxsbGE0c3gscmVidSxzb25vaS1wcGEsdCZjZWpvcnAsbmVnYXlvbHBlZCxzJmFmeW0sb2hlYml2LD8/dXlpZWgsP2FydHhlPz9zbGE/P2khZmZvPz9uJmEmZD9pbGVyP25pZj9ydXNuaSFlZmlsP3NyZWxldmFydD8/P2VpY3M/P3JvZnJpYT8/ZCEuJjFzbmRueWQsNDJwaS1ueWQsN2VyYXVxcyxhbWlsNCxiJm93LW5yZWZlaWxnaXRzbmctLW54LHJiLW5pLHVyLHZ6LW5lbGxldHNlYmdpdHNuZy0tbngsP2Nlc3NuZCZkLG55ZCw/ZGVjYWxwYixlJmRhcmVndG11ZWFydCxsdWhjc3ZyZXNpLG1vaHNuZCxuaWhjYW15ZWssdGllc2JldzMyMSw/Z2lmbm9jZWNhcHNiZXcsaGNpZXJlYnNub2lzc3Vrc2lkLGsmY29kbHVoY3MsZWVnbmlldHNpLD9sc2QtbmksbSZvYyxyb2Z0dGFscGx1aGNzLHVoY29iLWludS1yaHVyOi5jb24ub2ksLD9uJi1pLWctby1sLGUmbGxldHNlYmdpdHNuXHUwMGZjZyxzZ251dGllbCw/aSZlbXRzaSxscmViLW4maSx5ZCw/P25vcmJsaWVoLXNoLnRpLiZoY3JhZXNlci1zZWdhcCxzZWdhcCw/cHYtbmkscmVmZWlsZ2l0c25cdTAwZmNnLD9vJmMscnAteXRpbnVtbW9jLD9wJmgyMSxpb2c6b2wsLG9oc2RhZXJwc3ltLD9yZSZudHJhcGRlZXBzLnJlbW90c3VjLHN1Ji1sYXV0cml2LGxhdXRyaXYsP3QmYWRwdXNuZCx0dWItbmksdW9yLXltLD92cmVzJi1lJmJ1Y2wsbW9oeW0sP2Jldy1lbW9oOi5ueWQsLGx1aGNzLD8/cyZuZCYtJm51ZmlhdCxzZWhjc2ltYW55ZCx0ZW5yZXRuaSw/aXNvYy5ueWQsbWllaCxwcyx2cnMsP29wZXItJm52cyx0aWcsP3NuZGQ6LiZueWQsc25kbnlkLD8sP3ZyZXNpLSZuaWVtLHRzZXQsP3hpMix5JmF3ZXRhZy0mbGxhd2VyaWYseW0sP20sc3JhYix0aWMtYW1pbCw/enRlbiZtaXRiZWwsc2FkdHJldHRldWYsPz9hcnQ/aSZzZG9vdz91Zz8/b24tLW54Pz9lIS4mYmlsP2RlbT9laWY/Z3JvP2lycD9raWlyP21vYz9waWE/dWRlP3ZvZz8/ZWk/ZmZvYz9nZz9yJmY/Z2VkPz8/ZiZhJmM/cz8/aWw/P2chLiZncm8/bG9vaGNzP21vYz90JmVuP3ZwPz91ZGU/dm9nPz9hJmY/Z3Ryb20/cCEuJmdyZWJlZG9jLGtzZWxwLG1lYSxzJm5kcCxydWVsZnh1ZWQsP3Rzb2hjaXRhdHMsd29sZnllaCx4JmxoLG9ieW0sP3kmY3ZycCxrY29yLD8/P3JvdHM/eW92Pz9lbGxvYz9uYSZoY3hlP3JvIS5oY2V0LD8/cm9lZz91Zz8/aSEuJnBvaHNkYWVycHN5bSx2b2c/P3RpbG9wP3YmYmJhP29tPz8/aiEuJmZvLGdybz9vYz90ZW4/Pz9rIS4mYyZhP3M/P2UmbT9uPz9pYm9tP28mYz9mbmk/Zz8/cm8/P2kmYj9sP24/Pz9sJmEmZG1yaWY/cyFyb2Y/Pz9iJmE/aSZiP2R1YT8/P2MmYXJvP3JpYz8/ZG5paz9nIW9vZz8/aSZib20/bXM/P2wmYXNhbD9lcmF1cWE/P3BwYSEudG5pLD91aGNzP3l0cyFlZmlsPz8/bSEuJjQmMzJpLHAmY3Qsdiw/PzY2YyxhaWxpc2FyYixjJmE/b29oLnhvcnBlcyw/ZHVvbGNzZCxnJnJvP3MtcmFlZ2VsaWYsP2tjYXRzZWdkZSxub2l0YXRza3NpZCxvJmM/dCZuaWdvbCxwb2gsPz9wJmkmb24sc25hcnQuZXRpcyw/b2hiZXcsP3ImYWVnZWxpZixpZGNtLG9mc25kLD9zJmR5bSxuZGQsdGk/dW1ob2wsP3QmZW4/ZmFyYyxzJmFjZG51b3Msb2hvbiw/P3VkZT92JmlycD9vZz8/eG9ieW0seSZnb2xvbnlzLHNyYWIsPz9hJmc/biEuJmNpdGVuZWVrLHJlJmdhbmFtcHNpLGgudG9ncm9mLD9zaWgudG9ncm9mLD8/P2VtP2lycD9vcmhjP3c/P24hZ29sb2M/aSZsbm8hLiZlZ2F0cy1vcmVlLGtvb2IsbGxlY3BhZWwsb3JlZSxyZWRsaXViZXRpc2JldyxzbmRtaWVoLHlzcmFiLD8/dz8/byEuZSZjaXZyZXMsdGlzYmV3LD9ocD9sYXRpcGFjP3RzZSZnZGlyYj9yaWY/P3ohLiZhbWlsLHNwb3Jlei0xZ3JwLHRpa2NhdHMsPz8/cnVvYmxlbT8/b20/cCEuJmJvZz9ncm8/bGltP21vJmM/bj8/dGVuP3VkZT8/aXJnP3lrcz8/ciEuJmJpbHRlbixtb2M/bmFjLG9zc2E/P2EmYyFodGxhZWg/P3Btb2M/d3Rmb3M/P2JjP2VoP2lmP290cyEuJmUmcmF3cG9ocyxzYWJlcm90cyw/eSZmbGxlcyxzcmFiLD8/P3RhZWh0P3UmY2VzP3NuaT90JmlucnVmP25lY2NhPz96YT8/P3MhLiZhIWRpc25pbTMyMSw/YiFpYm5hbD9yb2Ztb2s/P2MhYT8/ZCFiP24mYXJiP3Vicm9mbGFudW1tb2s/Pz9lP2Y/ZyFybz8/aCFmPz9pIXRyYXA/P2shc2hmPz9sP20hb2MsdD8/biFteWdza3VyYnJ1dGFuPz9vP3Ahb2hzZGFlcnBzeW0scD8/ciFvd2ViZGx1b2N0aSw/cyFzZXJwP3lzcG9pLD90P3U/dmhmP3c/eCF1dm1vaz8/eT96Pz9hJmMhLnZhcyw/ZWw/aGM/P2kmZXI/dXJjPz9uZXNlbW9oP3JvaD91b2g/P3QmYSZkP3RzJmUhbGFlcj8/bGxhPz8/aXMhLiZhJm1naWYsdm5hYy55bSw/YmV3d3VvaixkZXJhdXFzcHcsZSZsZWosbmkmZWZmYWMsbG5pZ29sLD9yJmF1cXMsb2Nldm9uLD93aW5tbyw/bCZhaWNvc25lcG8sZW5hcGMsb3MsP24mZXliLG8maXRvbix5Yyw/P29jLHJldHVwLHMmaWh0ZWRhbSxwdnRzYWYsP3QmZmFyY2VjcnVvcyxocnMscGd0YWhjLHJvcHB1cyw/dm9nLWFtZ2lmLHcmZWl2ZXJwLG9sZnllaCw/eCZldm5vYzouMS10cyZhZS1zdSxldy11ZSw/LG9iZWlwLD95c3JhYiw/YmV3IS5yZW1hcmYsPz9vdj9yYT90JmlvbGVkP29sPz91dGl0c25pPz91JmxiP3FpJm5pbGM/dHVvYj8/P3YhLiYyMWU/YWk/YiZldz9pYj9vZz8/Y2Umcj90Pz9lJmRuZXJwbWU/cm90cz8/Z3JvP2xpbT9tJm8mYz9uPz9yaWY/P28mYz9mbmk/P3Jhcj9zdHJhP3QmZW4/bmk/P3VkZT92b2c/P2FzP2UzZ2VyYjJoLS1ueD9pJmwhLiZtZWEseGxoLD8/cmQ/c3NlcmdvcnA/P29sPz93JmtjdC0tbng/cj8/eHVsP3khLiZncm8/bGltP21vYz90ZW4/dWRlP3ZvZz8/Pz9mJjBmM3JrY2ctLW54PzE5OHhpbS0tbng/MjgweGltLS1ueD83dnFuLS1ueD9hIS4mZ3JvP21vYz90ZW4/dWRlP3ZvZz8/P2IhLnZvZz93YTliZ20tLW54Pz9jIWExcC0tbnghLiZhMTQtLW54LGI4bGVhMWotLW54LGMmYXZjMGFhYTA4LS1ueCxtYTA5LS1ueCw/ZiZhMWEwOS0tbngsZWExai0tbngsP2d2YTFjLS1ueCxuaGExaC0tbngscGRhMWotLW54LHppbGExaC0tbngsPz9ucz8/ZWExai0tbng/Zz9pYW0/bCZhMWQtLW54P29nPz9uIS4mYmV3P2Nlcj9lcm90cz9tJm9jP3JpZj8/b2ZuaT9yZSZodG8/cD8/c3RyYT90ZW4/Pz9vcnA/cCEuJmdybz9tb2M/dWRlPz8/cnVzP3QhLmhjcyx3IS5zbmRkLD8/dyEuJmhjcyx6aWIsPz8/ZyYyJjR3cTU1LS1ueD84enJmNi0tbng/PzMmNDRzZDMtLW54PzkxdzZqLS1ueCEuJmE1d3FtZy0tbng/ZCYyMnN2Y3ctLW54PzV4cTU1LS1ueD8/Z2xhMGRvLS1ueD9tMXF0eG0tLW54P3Z0YTBjdS0tbng/Pz8/NDU1c2VzLS1ueD81bXp0NS0tbng/Njl2cWhyLS1ueD83JjhhNGQ1YTRwcmViZ20tLW54P3JiMmMtLW54Pz9hIS4mZ3JvP2pibyxtbyZjP24/P29jP3Rlbj8/dmQ/P2IhLiYwPzE/Mj8zPzQ/NT82Pzc/OD85P2E/Yj9jP2Q/ZT9mP2c/aD9pP2o/az9sP20/bj9vP3A/cT9yP3M/dD91P3Y/dz94P3khc3JhYiw/ej8/P2MhYj96YTlhMGNiZ20tLW54Pz9lIS4mY2E/ZW0hYW4/P2dybz9pY3M/bGltP21vYz9udWU/b2ZuaT90JmVuP3JvcHM/P3VkZT92Jm9nP3Q/Pz9hPz9nIS4mZ3JvP2hzYWR0b2IsbGVuYXA6Lm5vbWVhZCwsb2M/c2Fhayx0JmVuP2lrY2F0cyw/eWxwLjZkLD8/aSZhP3Y/P2shLiZlYSxncm8/bGltP21vYz9zdSx0ZW4/dWRlP3ZvZz94eCw/P20hLiZkcnA/Z3JvP2xpbT9tbyZjP24/P29jP3VkZT92b2c/P3BrPz9uIS4mY2xwLGR0bCxlbWFuP2dybz9oY3M/aSFib20/P2wmaW0/b2MsP20mb2M/cmlmLD9uZWcsb2duLHRlbj91ZGU/dm9nP3ppYjouJmdsLGxkLG5vLG8mYyxnLD8/LD9hdz9pIWIhbXVscD8/Y2FyP2QmYXJ0P2Rldz8/aCZzaWY/dG9sYz8/ayZpdj9vbyZiP2M/Pz9scz9uJmFlbGM/aWFydD8/cCFwb2hzPz9yZSZlbmlnbmU/dGFjPz90JmFkP2VrcmFtP2hnaWw/bHVzbm9jP25lZz9vdj9zb2ghLnRmYXJjbmVwbyw/P3ZpJmc/bD8/P28hcz8/dSZyZWhjaXNyZXY/c21hcz90YXJlYnNuZWdcdTAwZjZtcmV2Pz8/byZkP2xiP29nIS4mZHVvbGMsZXRhbHNuYXJ0LD8/P3ImMm4wODRxbGotLW54P2VibW9vbGI/byEuJjc3bmRjLmM6c3IsLGEmcmVtYWN5dGlydWNlc3ltLHQmbmVpbWlwLHNpdnJldGxhLD94b3Iseiw/YmV3LWxsYW1zLGNpbWFueWQtcGksZCZhYi15cmV2LXNpLGUmc3Vmbm9jc2ltLHZhcy1zaSw/bnVvZi1zaSxvb2cteXJldi1zaSx1b2xjJmFyZm5pYXJvZGVmLGVodGduaXR1b3IsbXc6LmF0ZWIsLD8/ZSZhLGNpbi15cmV2LXNpLGdyb2YmbG9vdCxwZWgsP2wmYXMtNC1mZnV0cyxwb2VwYXJvZGVmLD9tJi1tb3JmLGFnZXZyZXMsb2hydW95c2xsZXMsP25vemRvcCxyJmVod29uZ25pb2d5bGRsb2IsaXd5bSx1Y2VzLTc3bmRjLm5pZ2lyby5sc3MsP3QmYWRpZG5hYy1hLXNpLGlzJi15YmJvaCxnb2xiLD8/P2ZlaGMtYS1zaSxnb2xieW1kYWVyLGsmZWVnLWEmLXNpLHNpLD9oLG51dCw/bCZhY29sLXNpLGkmYW13dCx2ZS15cmV2LXNpLD9sYXdlcmlmJi15bSx5bSw/c2QtbmksP20mYWNzc2VjY2EsZWRvbS1lbGJhYyw/biZhZiZibG0sY2Z1LGVnZWxsb2MsbGZuLHMmY2l0bGVjLWEtc2ksbml1cmItYS1zaSx0YXAtYS1zaSw/eG9zLWEtc2ksP2licHR0aCxvcnZpb3AscCZqLHYtbmksPz9vJmpvZHNuZCx0cCZheixvaCw/P3AmaSYtb24sZmxlcyw/byZoYmV3LHRrc2VkZWVyZiw/dGYmZSZtb2gsdnJlcyw/eW0sPz9yJmUmZ2F0b3AscHBlcHRlZXdzLHN1LXh1bmlsLWEtc2ksP3ZkbWFjLD9zJmEmaWxhJm55ZCxzbmQsP255bXNkLD9iJmFsZm13LGJldnJlcyw/ZCZpa2NldC4zcyx5bGltYWYsP2UmZ2Fwc2YsaXJmb3RhdG9waGN1b2MsP2osa29vYi1kYWVyLGx0YnVwLG5kJi13b24sZGVlcmYsZW1vaCxnb2xiLGtjdWQsbW9vZCxueWQ6LiZlbW9oLG9nLD8scCZkLHMsP3J2ZCx0b2csdW9sYyw/cyZhLXNrY2lrLG5kZCw/dG5lbWhjYXR0YW9tYix1LD90JmNlJmpvcnBhcm9kZWYuJmR1b2xjLGd0cy5zby5wcGEsc28ucHBhLD9yaWRlcmJldyw/ZSZld3MteXJldi1zaSxucmV0bmkmZWh0Zm9kbmUsZm9kbmUsPz9oZ2luay1hLXNpLHMmaXhldG4mb2Qsc2VvZCw/byZoLWVtYWcsbC1zaSw/cmlmeWFtLD8/dWU6LiZhYyxkYyxlJmIsZCxlLGksbSxzLD9nJmIsbiw/aGMsaSZmLHMsP2smZCxtLHMsdSw/bCZhLGksbixwLD9uJmMsaSw/byZuLHIsc3NhLD9waixyJmYsZyxoLGssdCw/cyZlLGksdSw/dCZhLGVuLGksbCxtLG5pLHAsP3UmYSxkZSxoLGwsciw/dmwseSZjLG0sP3omYyxuLD8/LHZyZXNueWQseCZpbnVlbW9oLHVuaWxlbW9oLD95JmxpbWFmeHV0LHJhaWRhbmV0YWgsc3JhYiw/Pz91YiZtYWg/b2o/Pz9zIS4mZGVsYWNzbmUsZ3JvP21vYz90ZW4/dWRlP3ZvZz8/Z2I2MzlqNDN1czUtLW54Pz90P3UhLiZjJmE/cz8/ZW4/Z3JvP2xpbT9tb2M/byZjP2c/P3JvP3N1P3VkZT92b2c/Pz92IS51ZGU/YTFjLS1ueD8/d3NhMDgtLW54Pz9oJjBlZTVhM2xkMmNreC0tbng/NHdjM28tLW54IS4mYSYyeHljM28tLW54PzNqMGhjM20tLW54P3ZlNGIzYzBvYzIxLS1ueD8/aWQxa3p1YzNoLS1ueD9sOGJ4aThpZmMyMS0tbng/cmIwZWYxYzIxLS1ueD8/PzgmOHl2ZmUtLW54P2E3bWFhYmdtLS1ueD8/YiEuJmdybz9tb2M/dGVuP3VkZT92b2c/P21nPz9jIS4mN2VyYXVxcyxhbWlsNCxkdW9sYy1kcmF5a25pbCxlJmdhcm90c3RjZWpiby4mYW1yLGdwbCw/bGFjc2R1b2xjLiZhbXIuc3RjZWpibyxncGwuc3RjZWpibyx0c3VjLD90aXNiZXczMjEsP2duaWtzbmQscCZoMjEsb2hzZGFlcnBzeW0sP3NuZCZ0b2csdW9sYyw/d29sZi5lJmEuMXBsYSxuaWduZXBwYSw/eGkyLHl0aWMtYW1pbCw/YW9jP2V0IS5zcHBhcmV2ZWxjLD9pciFldXo/P3ImYWVzP3VoYz8/c29iP3RhdyFzPz8/ZDBzYmdwLS1ueD9mJjJscGJnbS0tbng/az8/ZyEuJmdybz9saW0/bW9jP3Rlbj91ZGU/dm9nP3ppYj8/P2shLiZncm8/bW9jP3Rlbj91ZGU/dm9nPz8/bSFhMWotLW54Pz9vY2lyP3AhLiZncm8/aT9saW0/bW9jP29nbj9zbmR1b2xjLHRlbj91ZGU/dm9nPz8/cyEuJmFkdG9iLGVsYmF2b2wsZyZuYWJoc2FoLHJvPz9saW0/bSZvYz9yb2Z0YWxwLiZzdSx0bmUsdWUsPz90JmVuP3JvcGVsZXQsP3ZvZz93b24sP2EmYz9ub20/P2kmZD9mP3JpPz8/dCEuJmNhP2VuaWxubyxpbT9uaT9vJmM/Zz8/cG9ocyxybz90ZW4/P2lhZj9sYWVoIS5hcmgsP29yeGVyP3JhZT8/dm8hLmxvcGRyZW4sP3piPz9pJjN0dXBrLS1ueD83YTBvaS0tbng/YSEuJmZmbz9ncm8/bW9jP3JlbWFyZixzcHBhb2xpayx0ZW4/dXd1LD8xcC0tbng/YnVkP2RudXloP3RuaWhjPz9iIS4mZ3JvP21vYz9vYz9ybz91ZGU/P2FoZHViYT9vIW0hLiZkdW9sY3NkLHlzcmFiLD8/P3M/P2MhLiZheWItdHJvcG9yYS0tbng/Y2E/ZGU/Z3JvP21vYz9vJmM/Zz9zc2E/P3JvP3N1LHQmZW4/bmk/cm9wb3JcdTAwZTlhPz91ZGU/dnVvZz8/Y3VnP3Q/P2QmZGs/dWE/P2UmYmhmLS1ueD9waWF0Pz9mIS4mYXc1LW5lbmlra2gtLW54LGRuYWxhP2kma2ksc3Bhayw/bXJvZnRhbHBkdW9sYy5pZixuZW5pa2tcdTAwZTRoLHBvaHNkYWVycHN5bSxyZXRuZWNhdGFkLiZvbWVkLHNhYXAsP3V2aXNpdG9rMzIxLHlkLD9vbmFzPz9nIS4mZCZvbT90bD8/Z3JvP21vYz91ZGU/dm9nPz8/aCZjJmF0aWg/cmE/P3MmYWJvZG95P2lidXN0aW0/Pz9qdW9ocz9rIS4mZ3JvP21vYz9vZm5pP3Rlbj91ZGU/dm9nP3ppYj8/YjRnYy0tbng/aXchLnJlbWFyZiw/bmlzbGVoP3M/dXp1cz8/bCFkcmFoY2lyP2lhbXNpPz9tYWltP24hLiZiJmV3P29nPz9jYT9ncm8/bGltP21vJmM/bj8/bmk/byZjP2ZuaT8/cHA/dCZlbj9uaT8/dWRlP3ppYj8/YWlycGljP2kmaGdyb2JtYWw/bT8/cmU/P29tP3JhcnJlZj9zIS4mNWYsZWdhcHRpZyxwcGF0aWcsP2VkPz90JmkmYz9uaWZuaT8/cmFoYj8/dXQ/diEuJjIxaz9ncm8/bW9jP29jP3Rlbj8/P3dpaz94YSZycD90Pz95Zj8/aiY2cHFnemE5aWFiZ20tLW54PzhkYTF0YWJiZ2wtLW54P2IhLiZhY2lyZmE/ZXRvP2dybz9tJm9jP3NpcnVvdD8/byZjIWU/P2ZuaT9ub2NlP3JnYT90c2VyPz9ydXNzYT9zJmV0Y2V0aWhjcmE/cmlzaW9sP3RhY292YT8/dCZlbj9uYXJ1YXRzZXI/P3VkZT92aW51P3llbm9tPz8/ZD9mIS4mY2E/ZGk/ZW1hbj9ncm8/bGltP21vYz9vJmZuaT9ycD8/dGVuP3VkZT92b2c/emliPz8/bmo/cz90IS4mYmV3P2MmYT9pbj8/ZW1hbj9ncm8/bGltP21vYz9vJmM/Zz8/dCZlbj9uaT9zZXQ/P3VkZT92b2c/emliPz8/eXF4OTRxaXQtLW54Pz9rJjh1eHAzLS1ueD85MjR0Y2YtLW54P2FyZmVsP2MmYSZiZGVlZj9sYj8/ZWJkbnVsP2lsYz9yZW0hZT8/P2QhLiZlJmRpc2VtbWVqaDMyMSxyb3RzLD9nZXIsbXJpZixvYyxwb2hzZGFlcnBzeW0semliLD90Pz9lJmVzP3NhbWV0Pz9oIS4mYSY0eWEwY3UtLW54PzV3cW1nLS1ueD8/YjNxYTBkby0tbng/Y25pLGQmMiYyc3Zjdy0tbng/M3J2Y2wtLW54Pz81eHE1NS0tbng/dGwsP2cmYTBudC0tbng/bGEwZG8tLW54P3JvPz9pJjA1MHFtZy0tbng/N2Ewb2ktLW54P3hhMGttLS1ueD8/bSYxcXR4bS0tbng/b2M/P25wcWljLS1ueD90ZW4/dWRlP3YmZGk/b2c/dGEwY3UtLW54Pz94dmEwZnotLW54P1x1NGViYSZcdTRlMmE/XHU1MDBiP1x1N2I4Nz8/XHU1M2Y4XHU1MTZjP1x1NWU5Y1x1NjUzZj9cdTdkNjEmXHU3ZGIyP1x1N2Y1MT8/XHU3ZTU0Jlx1N2Q0ND9cdTdlYzQ/P1x1N2VjNyZcdTdkNDQ/XHU3ZWM0Pz9cdTdlZGMmXHU3ZGIyP1x1N2Y1MT8/XHU4MGIyJlx1NjU0ZT9cdTY1NTk/Pz9uPz9pJnRzb2I/dmRuYXM/P2whLiZiZXc/YyZhP29zPz9kdGw/Z3JvP2hjcz9sZXRvaD9tb2M/bnNzYT9vZ24/cHJnP3QmZW4/bmk/P3VkZT92b2c/P2F0P2NkP2lzPz9tIS4mZW1hbj9mbmk/Z3JvP21vYz90ZW4/dWRlP3ZvZz8/P24mYWIhY2ZkaD9ldGF0cz9tbW9jP3QmZW4/Zm9zPz91Pz9pIWwhLiZhJmhjYXJvdHMuc2ZwaSx2bmFjLD9jJml0ZW5lZWssbW5pb2osP2VnYXJvdHN0Zm4uc2ZwaSxub3ljLHBlcHltLHMzdy5zZnBpLHp0aXJmeW0sPz9wPz8/b29iP3AhLiZiJmV3P29nPz9jYT9nJm9nP3JvPz9rb2c/bSZhZj9vYz8/cCZrZz9vZz8/c29nP3Rlbj91ZGU/dm9nP3ppYj8/P3JvdyEuJnJldHVwLHl4b3JwLWVuaWdhbWksP3RlbiEuJmV0aXJ3cHBhLGh0dW1pemEsbWVhLG5vbHQsbyZjLHZyYSw/Pz8/cyEuZ3JvPz90P3UhLiZjJmE/bHA/P2R0bD9lJmNpbG9wP20/dGlzbWluLD9ncm8hLiZndWw6Zywsc2d1bCx5ciZldHRvbHkmbGtlZXcsdGluaWZmYSw/dG5lZWxmZmFyLD8/P2xlbmFwLXRuZWRuZXBlZG5pLG4mbm9jLG9pc3NpbW1vYy0mbGF5b3IsdG5lZG5lcGVkbmksPz9vJmMhLiZidW5zb3J0ZXIudHN1Yyxlbmlsbm95c3JhYixrcmFtZXR5Yi4maGQsbXYsP29taWRhLHAmaS1vbixvaHNkYWVycHN5bSw/dGZpaHNyZXlhbC5qLHZyZXMtaG4seXNyYWIsPz9ycG9jLD9wc29oLHNobj90JmVuP25teXAsc2V1cW5pLXRuZWRuZXBlZG5pLD92b2chLiZlY2l2cmVzLGlwYSxuZ2lhcG1hYyw/P3dlaXZlci10bmVkbmVwZWRuaSx5JnJpdXFuaS0mY2lsYnVwLHRuZWRuZXBlZG5pLD9zcmFiLD8/Pz9sJjA0c3I0dy0tbng/YSEuJmdybz9saW0/bW9jP3Rlbj91ZGU/dm9nPz9ib2xnIS5ldGlyd3BwYSw/Yz9lZD9nIWVsPz9pJmMmbmFuaWYhLm9jLGxwbD8/b3M/P3JvbWVtP3RuZWR1cnA/P24maWY/b2l0YW5yZXRuaT8/dCZpJmdpZD9wJmFjP3NvaD8/P25lZD9vdD8/P2MhLiZib2c/bGltP29jP3NuZHVvbGMsdm9nPz8/ZGlsP2UmZGF0aWM/biZhaGM/bmFoYyFyZWh0YWV3Pz8/dCFvaD9yaWE/dGFtPz92YXJ0Pz9mJjhmJnBiZ28tLW54P3RiZ20tLW54Pz9hP24/P2chLiZncm8/bW9jP29jP3Rlbj91ZGU/Pz9oJmQ/b3A/P2khLiYyMWs/Y2E/ZmRpP2dybz9pbnVtP29jIS4mZWdhcHZhcixyZWRyb3RpYmF0LHRpYmF0eW0sPz90ZW4/dm9nPz9hJmY/bSZlIS4maGN1b3RuaSxrd2F0LnAsb3Rrd2F0LnAsPz9nP3RvaD8/P20/cj8/bCZhJmImZXNhYj90JmVrc2FiIS4mc3VhLHpuLD8/b29mPz8/Yz9tdD8/ZSZkP2hzPz9paG1haWxsaXc/aj8/bSEuJmNhP2Vzc2VycD9ncm8/bW9jP28mZm5pP3NzYT8/cnA/dCZlbj9yYT9zbmk/P3VkZT92Jm9nP3VvZz8/Pz9uIS4mZXRpc2JldzMyMSxubyZtZWQscnRzaWMsP29jLHBvaHNkYWVycHN5bSxyZXRzdWxjLWduaXRzb2gsdm9nLHlhbHBoayw/bz8/byZhP2J0dWY/bCEuZ21vLD9vJmMhLiZlZCxyb3RuZW1lbGUsPz9oY3M/P3JpdD91Pz9wIS4mMnVveSxhJmNpbiZkaXdzP2dlbD8/ZCZnLG9ydHNvP3VyYXdvbj8/aSZkZW0/bXJhdz9ueWRnLD9rJmVsbyZndWxkP3J0c28/P3Nsb3BvbGFtP3RzdT95dHN5cnV0Pz9sJmlwP28ma3pzP3cmLWF3b2xhdHM/b2tzbm9rPz8/P21yaWZkLG4mZXJhcG9ocyxpbWc/emNlbCw/cm9nJi1haSZiYWI/bmVsZWo/P2o/ej8/c3luP3RzYWltP3cmYSZsJmVpYj9pP28/P3pzcmF3Pz9vJm5hbWlsP3RhaW5vcCw/P3omZWl3b2xhaWI/bW9sPz8/YyZlJml3JmFsc2Vsb2I/byZuc29zP3J0c28/Pz9sZSZpbT96cm9nej8/P29ydyxwPz9kJmVtLGlhP3JhZ3JhdHM/dW9sYyZpbnUsc2RzLD8/ZSZjJmkmbHJvZz9uYWliYXAsdyZlaW5yZWlrcyxpbGcsbyZoYyZhcmF0cz9vcnA/P2tsb3A/dGFrPz8/P3l6cmVpYm9rPz9pJmNzanVvbml3cz9rc3JvbW9wP3NhbGRvcD8/bCZhaGRvcD9vcG8/P25hcG9rYXosdCZhdHNlbGFlcj9pc2VscG1pcyw/eiZyb21vcD9zd296YW0/Pz9nJmFsYmxlP2V6cmJvJmxvaz9ucmF0Pz9ybz8/aGN5enJibGF3P2kmY3NvbW9oY3VyZWluP2dyYXQ/a2xhd3VzPz9rJmNvbHAsZSZydXQ/d2FsY29sdz8/aW4mYnlyP2Rpd3Msc2Fyayw/bGU/byZuYXM/dHN5bGFpYj8/cm9iJmVsP2xhbT8/cyZhbHM/amF6ZWw/bmFkZyxwdWxzP3Jvd2V6cnA/Pz9sJmNvbHc/ZSZyP3ZhcnQ/P2kmYW0/bT8/P20mbyZjP2Rhcj9uP3R5Yj8/cyZnP2lydW90Pz90IWE/Pz9uJmEmZ2F6P256b3AsP2kmYnVsP2NlemN6cz9sYnVsLG1vbG93P25vaz96ZCZlYj9vYmVpd3M/Pz91JmxlaXc/cm90LD95JnR6c2xvP3omcnRlaz9zZWljPz8/P28mYyxmbmk/ayZjZWxvP3NsZWliLHpkb2xrPz9sa2FuP24mbGVpbT9wZWs/dCZ1az95emN6cz8/eiZjb3BvP2Vpbmc/cm93YWo/Pz9yZ2E/dCZub2tkLHVhPz93JmVqYXJnP29nYXJtPz8/cCZlJmViLGxrcyFlbW9oLD8/a2x3d29ydHNvP29ocyEtZWNyZW1tb2NlLGRhZXJwc3ltLD8/cm9tb3BoY2F6P3Mma2xvZmMsb3M/P3QmYWl3b3A/ZW4/b3BvcyxyYSxzZXpjPz91ZGU/diZpcnA/b2chLiZhJmlvP3A/cyF3Pz8/Ym5pJnA/dz8/Y2k/ZHRpdz9lJmtvP3NzJnA/dz8/P2Zpdz9nJmltdT91Pz9oaWl3P20maWd1P3Jpbz91IW8/Pz9uZHMhaXB6Pz9vJmtzP3AhcHU/P3M/d3Rzb3JhdHM/P3AmYT9zcCFtaz9waz93az8/dSZtP3A/P3drP3o/P3ImaGNzbz9rc3c/cD9zPz9zJmk/b2l3P3U/enU/P3RhbHVzbm9rP3cmZ3pyP2kmcD9yZz93Pz9tP28mbz9wdT8/dSFpbXp3Pz8/eiZrdz9vdXc/Pz8/P3cmYSZsJmNvcnc/c2l6ZG93Pz93Pz9vJmdvbGc/ayZhcmssdWw/enN1cnA/P3ImYXo/Z2V3Pz90JnJhYnVsLHN1Z3VhPz96JmNva3M/c2V6cj8/Pz94ZXM/eSZidXpzYWs/ZCZhemN6c2VpYj9pa3NlYj8/aGN5dD9uJmplcz9sb2QtenJlaW1pemFrPz9wYWw/ciZvZ3Q/dXphbT8/d2FsdXA/enV0cmFrPz96JmFtLWF3YXI/YyZhcHJhaz9pd29sP3pzb2dkeWI/P2QmYSZsZXpjP3JlaXMsP29sLD9pYj9yZWlneixzJmkmbGFrP3A/P3VrbG8/Pz8/bD8/ciZhcz9mP3M/P3MhLiZncm8/bW9jP3Rlbj91ZGU/dm9nPz8/dCEudm9nPz91Ym5hdHNpP3gzYjY4OXFxNi0tbng/eWM1cmI1NC0tbng/P20mMDB0c2IzLS1ueD8xcXR4bS0tbng/OTgxcnZqLS1ueD9hIS4mZW51bW1vYz9ncm8/bW9jP28mYz9pZGFyLD90ZW4/P2MhYmV3Pz9kcmV0c21hP2UmcnRzP3QhLiZjaXRzYWxlaixlc3J1b2NzaWQsPz8/Zm1hP3hxLS1ueD8/YiEuJmdybz9tb2M/dGVuP3VkZT92b2c/P2k/P2MhLiZtb2M/b2M/dGVuP3ZvZz8/P2QhLiZncm8/bW9jP29jP3Rlbj91ZGU/dm9nPz8/ZiEuJmdybz9tb2M/b2lkYXIsdGVuP3VkZT8/aT8/ZyF2dTk2ZDhzeXpmLS1ueD8/aD9pIS4mY2E/Z3JvP21vYz9vYyEuJmNscD9kdGw/Pz90JmVuP3Q/P3Z0Pz9rP3JiZzQtLW54Pz9rIS4mZHJwP2UmcmlhbmlyZXRldj9zc2VycD8/Z3JvP2xpbT9tJm8mYz9uPz90Pz9uaWNlZGVtP29zc2E/cG9vYz9zJmVyaWF0b24/bmVpY2FtcmFocD9zYT8/dWRlP3Ymb2c/dW9nPz8/P2wmaWY/b2hrY290cz8/byEuJmRlbT9ncm8/bSZvYz91ZXN1bT8/byZjP3JwPz90ZW4/dWRlP3ZvZz8/Yj9jIS4mMHgsMSYyMXNlc2FpbGEsZG5hMS1zcHBhLD8yYXEsM3BtZXZyZXMsYSZjJi1tb3JmLGlyJmJhZm5vLGZhLD8/ZyYtbW9yZixveS1zZWhjYWV0LD9pLW1vcmYsbSYtbW9yZixhbGwmLWEtc2ksYW1haSw/P3AmLW1vcmYsYy1hLXNpLD9yZW1hY3l0aXJ1Y2VzeW0scyx0JmFkdHN1ZGduaWh0LGVtdGEsP3YtbW9yZix3LW1vcmYseiw/YiZldyYtc25kbnlkLGFydWthcyxkcmFpdy5zZWdhcCxvdHRhZCw/aWxkdHMuaXBhLD9jJmFteXRpcnVjZXNlbW9oLGQtbW9yZixlc3lyY3MsaXRzYWxlai5vbWVkLG4mLW1vcmYsdnltLD9wJmtyb3dlaHQseXRpcnVjZXNlbW9oLD9yaWV2cmVzLHMtbW9yZiw/ZCZhZXJvdGZmdXRzLGUmYm1lLWRldHNvaC1hdm5hYyxjYWxwYixpZml0cmVjLSZzaSx0b24tc2ksP3Jld29wZW5pZ25lcHc6LnNqLCx0c29oJi1zY29kZWh0ZGFlciwyYSxlY2Fwc3BwYSw/P2kmLW1vcmYscGFycGMscmdldmlzc2FtLnNhYXAsP20tbW9yZixuJi1tb3JmLGFiZWh0LWh0aXctc2ksP29ycG5vbmR1b2xjd20scy1tb3JmLHVvbGMmLW5vaXRhdHN5YWxwLGVodGduaXR1b3IsaHIsaWFmYXcuZCZlaix5ciw/bWVhZWJvZGEsbmV2aWEscGFucXltOi0mYWhwbGEsdmVkLD8scyZhbnltLG1ldHN5c3R1byw/dmVkJmoscHcsPz92cmVzZXIsd2V0b21lciw/ZSZidXR1b3lodGl3LGMmYXBzeWxvcCxpJmZmby1zbmRueWQsdmVkbG9vdHgsPz9kOi1tb3JmLG8mYyZhdm5hYyxlbGdvb2csP24maWwuc3JlYm1lbSxuZXZlLiYxLSZzdSx1ZSw/Mi0mc3UsdWUsPzMtJnN1LHVlLD80LSZzdSx1ZSw/Pz8/LGVyZiYtc25kbnlkLHNuZGQsP2ZpbGZsYWhldnJlcyxnJmFyb3RzLTc3bmRjLGRlLXlsdHNhZixuYWhjeGVldnJlcyxyb2Ytbm8sP2kmaGNldC1hLXNpLHAtc2VraWwsP2smYXVxZXZyZXMsaXJ0c3JldG51b2NldnJlcyw/bCZiaXRwYS1ubyxnb29naHRpdyw/bSZhZ2V2cmVzLGluYS1vdG5pLXNpLG9oLSZzbmRueWQsdGEtc25kbnlkLD8/biYtbW9yZixpbG5veXNyYWIsb2ctc2ksP3BhY3NsZWRvbSxyJmFsZmR1b2xjeXJ0LGVod3luYW5vaHR5cDoudWUsLGloY2VjLD9zcnVuLWEtc2ksdCZpJm51YXJlcG8scyYteWJib2gsYWxveSxiZXctZXZpbCxlbHBtaXMscm9kYWJldyx0aXBvaHMseGl3LD8/b21lci1zbmRueWQseXNnb2xiLD92JmFscy1lbGNpYnVjLWEtc2ksaXRhdnJlc25vYy1hLXNpLD96JmFta2NhcixlZWxnLGlpZyw/P2ZlaGMtYS1zaSxnJm5pJmdhdHMtJnJhZWdodHVhLHN3ZW5ud290LD9rc25kZCxyb2JzaWtyb3csdHNvaCYtYnQuZXRpcyxlZGFsYmRlcml3LG92aXAsdW55ZCw/P28mZmdwLGxiJi1zbmRueWQsYW5ldGFoLHNpaHRzZXRpcncsPz8/aCZuLW1vcmYsby1tb3JmLD9pJmZpd2VodG5vLGgtbW9yZixraXctc25kbnlkLG0tbW9yZixwJmFlcm9jbmUsZGV0c29oLD9yLW1vcmYsdy1tb3JmLHomaWhjcHBhLG5pbHBwYSw/P2puLW1vcmYsayZhJi1tb3JmLGVyZm9jc2ljLD9jaWxzLXNpLGVlZyYtYSYtc2ksc2ksP3NuZGQsP2gsbGF0c25hZWJjaXRzYWxlOi4mMS0maHQmcm9uLXVlLHVvcy0mZW0sZmEscGEsdWUsPz9sYXJ0bmVjLSZhYyxlbSxsaSx1ZSw/dHMmYWUmLSZhcyxwYSxzdSx2b2ctc3UsP2h0JnJvbi1wYSx1b3MtcGEsPz9ldy0mc3UsdWUsdm9nLXN1LD8/PzItJmh0dW9zLXVlLHRzJmFlJi1zdSxodCZyb24tcGEsdW9zLXBhLD8/ZXctJnN1LHVlLD8/PzMtdHMmYWVodCZyb24tcGEsdW9zLXBhLD9ldy11ZSw/NS10c2FlaHR1b3MtcGEsNy10c2FlaHR1b3MtcGEsPyxuaWwta2FlcnRzLG8tbW9yZixyJmFkaHRpd3RsaXViLG93Ji0mc25kbnlkLHRhLXNuZG55ZCw/dGVuLW9yZWhrY2F0cyw/P3NlZGFsLHUsP2wmYSYtbW9yZixjb2xvdHRhZCxyZWJpbC1hLXNpLD9mLW1vcmYsaSYtbW9yZixhbSYtc25kbnlkLGRldHNvaHB3LD8/bGVjZWxmZmF3LHJ1LSZlbHBtaXMsdGFlbiw/P20mbi1tb3JmLHJvZiZlJnB5dC5vcnAscmVyYWMtaHRsYWVoLD90YWxwLWV2aXJkLD9zYWNyYXNldnJlcyx1aXJhcnJldC15bHRzYWYsP24mYSZjaWxidXBlci1hLXNpLGYmLXNsbHViLWEtc2kscmFjc2FuLWEtc2ksP2kmY2lzdW0tYS1zaSxyYXRyZWJpbC1hLXNpLD90YXJ1a2FzLD9jLGRjJmhzdW1zLHVtcHcsP2VlcmctYS1zaSxpJi1tb3JmLGpvZCw/bS1tb3JmLG8mZWh0bmFwdG9nLGlzYW0tYWwtYS10c2UscnRhcC1lbC10c2UscyZpYW0tYWwtYS10c2UscmVwbGF1c3VudSw/P3BqLHQtbW9yZiw/byZjLGhjZS1uYW10c29wLGlkdXRzeGl3LGpvZHNuZCxtJi1tb3JmLGVkLWJhbHRsb3csP25pbG94aXAsdCZpbmdvY25vemFtYS4mMS0maHQmcm9uLXVlLmh0dWEsdW9zLSZlbS5odHVhLGZhLmh0dWEscGEuaHR1YSx1ZS5odHVhLD8/bGFydG5lYy0mYWMuaHR1YSxlbS5odHVhLGxpLmh0dWEsdWUuaHR1YSx4bS5odHVhLD90cyZhZSYtJmFzLmh0dWEscGEuaHR1YSxzdS4maHR1YSxzcGlmLWh0dWEsP3ZvZy1zdS5zcGlmLWh0dWEsP2h0JnJvbi1wYS5odHVhLHVvcy1wYS5odHVhLD8/ZXctJmFjLmh0dWEsc3UuJmh0dWEsc3BpZi1odHVhLD91ZS5odHVhLHZvZy1zdS5zcGlmLWh0dWEsPz8/Mi0maHR1b3MtJnBhLmh0dWEsdWUuaHR1YSw/bGFydG5lYy11ZS5odHVhLHRzJmFlJi1zdS4maHR1YSxzcGlmLWh0dWEsP2h0JnJvbi1wYS5odHVhLHVvcy1wYS5odHVhLD8/ZXctJnN1LiZodHVhLHNwaWYtaHR1YSw/dWUuaHR1YSw/Pz8zLXRzJmFlaHQmcm9uLXBhLmh0dWEsdW9zLXBhLmh0dWEsP2V3LXVlLmh0dWEsPzQtdHNhZWh0dW9zLXBhLmh0dWEsNS10c2FlaHR1b3MtcGEuaHR1YSw3LXRzYWVodHVvcy1wYS5odHVhLD90YWR5bSw/P3AmMnBldnJlcyxhZWx1dHltLGkmLXNuZG55ZCxmbGVzLG9nb2wscnVveSZlc29sLGhjdGlkLD95bSZlZXJmLHRlZyw/P21pcmhzZWxibXViLG9ocyZkYWVycHN5bSx1bmV2aXYsP3BhJi0mZW1hcyxzZWx1Y3JlaCw/YW5pczpwaXYsLGVzYWJlcmlmLGlwYXJ0czouYWlkZW0sLGsxLG51c3B1LG9pZmlsYXVxLHJvZXRlbToudWUsLHNucmV0dGFwY2lnYW0sdGlsbWFlcnRzLHVrb3JlaCx5ZmlscG1hLD90JmZldnJlcyx0aGV2cmVzLD8/ciYwODEsYSYtbW9yZix0c2tjb3ItYS1zaSw/Yjphc25kLCxlJmQmaXYmZXJwLXliLWRldHNvaC5zYWFwLG9ycG53byw/bmVyJi5wcGEsbm8sPz9lJmJldnJlcyxuaWduZS1uYS1zaSw/Z2dvbGItYS1zaSxoJmNhZXQtYS1zaSxwYXJnb3RvaHAtYS1zaSw/a3Jvdy1kcmFoLWEtc2ksbiZnaXNlZC1hLXNpLGlhJnJ0bGFub3NyZXAtYS1zaSx0cmV0bmUtbmEtc2ksPz9wJmFjc2RuYWwtYS1zaSxlZWtrb29iLWEtc2ksP3JldGFjLWEtc2ksc3VicSx0biZlY3lzcmFiLGlhcC1hLXNpLHVoLWEtc2ksP3ZyZXMmLSZraS4mY3BqLXJldi1kdW9sY2osZHVvbGNqLD9zJm5kbnlkLHB2dHNhZiw/P2JkeW0saW5pbSxubWFkLHBjLHNhayw/eSZhbHAtYS1zaSx3YWwtYS1zaSw/emlsaWJvbWRlZXBzZWdhcCw/ZyxpdHVvYixtZ3JwLm5leCxvJi1tb3JmLHBhdi1ubyxzaXZkYWxhaWNuYW5pZi1hLXNpLHQmYXJlbGVjY2FsYWJvbGdzd2EsYyZhLW5hLXNpLG9kLWEtc2ksP3N1c2F5bSw/P3AtbW9yZix1JmFzLW8tbnlkLGUmdHNvaC4mZHVvbGMtZ2FyLGhjLWR1b2xjLWdhciw/dWdvbGItbm9tLXRzZSw/b211aGV2cmVzLD8/cyZhJmFwb2QsaWxhJm55ZCxzbmQsP24mZHVvbGN5bSx5bXNkLD92bmFjJi1zdWVkLHJlbWFyZiw/P2ImYWwtZWNpcixiZXZyZXMsP2MmZHVvbGNhYmFiaWxhLGkmcCYtc25kbnlkLGV2cmVzLD90Y2F0eXRpcnVjZXMsPz9keWxpbWFmLGUmY2l2ZWQtYW5lbGFiLGl0aWxpdHUzLGxhaHctZWh0LXNldmFzLG1hZy1vdG5pLXNpLHQmaSZpaXMsc3JvLD95c2tjaXVxLD91Z2FlbHlhanlhcmcsP2ZwaS0mZXJhbGZkdW9sYyxmYyw/aSZodDJ0bmlvcCxtdXJ1ZCxwYSZlbGdvb2csdG5lbHRuZWcsPz9qZmFjLGsmLW1vcmYsYWVyZi10ZW4sY29sYiZlZ3JvZixwb2hzeW0sP25pbGthZXJ0cyw/bS1tb3JmLG4mZCYtcG1ldCxkJi1waSx1bnlkLHlhcmQsP2dvbGIsaHRpd3NzZW0sbG9vYzEsbW9vZCxyYmEsdG9nLD9rc2VscCxueWQsb290cmFjLW90bmktc2ksP28mLXhvYmVlcmYseG9iZWVyZiw/cHBhJi1hdm5hYyxyYWVnaHR1YSxzd2EsdG5lZyw/ciZhYy1vdG5pLXNpLGUmbnRyYXAtcGFlbHV0LHRzb2htYWVyZCw/P3MmZSZsLXJvZi1zbGxlcyxydGNhLW5hLXNpLD9pYm9keW0sP3RzYWViLWNpaHR5bS4mYSZsbGljbm8sem5vLD9pbGF5LGxhY2FyYWMscmUmZ2l0bmVmLG1vdHN1Yyw/c3YsdG9sZWNvLHg6biZpaHBzLHlsLD8sP3Usd2Fub3phbWEuJjEtJjNzLGh0JnJvbi11ZSYtM3MsLiYzcyw5ZHVvbGMmLXN3YS5zdGVzc2Etd2VpdmJldywucyZmdix0ZXNzYS13ZWl2YmV3LD8/YWRibWFsLXRjZWpiby0zcyxkb3JwLSZpdXBwYXJtZSxvaWR1dHNybWUsc2tvb2JldG9ucm1lLD9ldGlzYmV3LTNzLGlwYS1ldHVjZXhlLGtjYXRzbGF1ZC4mM3MsdG5pb3Bzc2VjY2EtM3MsP3RuaW9wc3NlY2NhLTNzLD8/dW9zLSZlbSYtM3MsLiYzcyw5ZHVvbGMmLXN3YS5zdGVzc2Etd2VpdmJldywucyZmdix0ZXNzYS13ZWl2YmV3LD8/YWRibWFsLXRjZWpiby0zcyxkb3JwLSZpdXBwYXJtZSxvaWR1dHNybWUsc2tvb2JldG9ucm1lLD9ldGlzYmV3LTNzLGlwYS1ldHVjZXhlLGtjYXRzbGF1ZC4mM3MsdG5pb3Bzc2VjY2EtM3MsP3RuaW9wc3NlY2NhLTNzLD8/ZmEuJjNzLDlkdW9sYyYtc3dhLnN0ZXNzYS13ZWl2YmV3LC5zJmZ2LHRlc3NhLXdlaXZiZXcsPz9hZGJtYWwtdGNlamJvLTNzLGRvcnAtJml1cHBhcm1lLG9pZHV0c3JtZSxza29vYmV0b25ybWUsP2V0aXNiZXctM3MsaXBhLWV0dWNleGUsa2NhdHNsYXVkLiYzcyxldGlzYmV3LTNzLHRuaW9wc3NlY2NhLTNzLD90bmlvcHNzZWNjYS0zcyw/cGEmLTNzLC4mM3MsOWR1b2xjJi1zd2Euc3Rlc3NhLXdlaXZiZXcsLnMmZnYsdGVzc2Etd2VpdmJldyw/P2FkYm1hbC10Y2VqYm8tM3MsZG9ycC0maXVwcGFybWUsb2lkdXRzcm1lLHNrb29iZXRvbnJtZSw/ZXRpc2Jldy0zcyxpcGEtZXR1Y2V4ZSxrY2F0c2xhdWQuJjNzLGV0aXNiZXctM3MsdG5pb3Bzc2VjY2EtM3MsP3RuaW9wc3NlY2NhLTNzLHlhd2V0YWctc2NpdHlsYW5hLD8/dWUuJjNzLDlkdW9sYyYtc3dhLnN0ZXNzYS13ZWl2YmV3LC5zJmZ2LHRlc3NhLXdlaXZiZXcsPz9hZGJtYWwtdGNlamJvLTNzLGRvcnAtJml1cHBhcm1lLG9pZHV0c3JtZSxza29vYmV0b25ybWUsP2V0aXNiZXctM3MsaXBhLWV0dWNleGUsa2NhdHNsYXVkLiYzcyxldGlzYmV3LTNzLHRuaW9wc3NlY2NhLTNzLD90bmlvcHNzZWNjYS0zcyw/Pz9sYSZucmV0eGUtM3MscnRuZWMtJmFjJi0zcywuJjNzLDlkdW9sYyYtc3dhLnN0ZXNzYS13ZWl2YmV3LC5zJmZ2LHRlc3NhLXdlaXZiZXcsPz9hZGJtYWwtdGNlamJvLTNzLGRvcnAtJml1cHBhcm1lLG9pZHV0c3JtZSxza29vYmV0b25ybWUsP2V0aXNiZXctM3MsaXBhLWV0dWNleGUsa2NhdHNsYXVkLiYzcyxldGlzYmV3LTNzLHNwaWYtJjNzLHRuaW9wc3NlY2NhLTNzLD90bmlvcHNzZWNjYS0zcyw/c3BpZi0mM3MsdG5pb3Bzc2VjY2EtM3MsP3RuaW9wc3NlY2NhLTNzLD8/ZW0uJjNzLGFkYm1hbC10Y2VqYm8tM3MsZG9ycC0maXVwcGFybWUsb2lkdXRzcm1lLHNrb29iZXRvbnJtZSw/ZXRpc2Jldy0zcyxpcGEtZXR1Y2V4ZSxrY2F0c2xhdWQuJjNzLGV0aXNiZXctM3MsdG5pb3Bzc2VjY2EtM3MsP3RuaW9wc3NlY2NhLTNzLD9saS4mM3MsOWR1b2xjJi1zd2Euc3Rlc3NhLXdlaXZiZXcsLnNmdiw/YWRibWFsLXRjZWpiby0zcyxkb3JwLSZpdXBwYXJtZSxvaWR1dHNybWUsc2tvb2JldG9ucm1lLD9ldGlzYmV3LTNzLGlwYS1ldHVjZXhlLGtjYXRzbGF1ZC4mM3MsZXRpc2Jldy0zcyx0bmlvcHNzZWNjYS0zcyw/dG5pb3Bzc2VjY2EtM3MsP3VlJi0zcywuJjNzLDlkdW9sYyYtc3dhLnN0ZXNzYS13ZWl2YmV3LC5zJmZ2LHRlc3NhLXdlaXZiZXcsPz9hZGJtYWwtdGNlamJvLTNzLGRvcnAtJml1cHBhcm1lLG9pZHV0c3JtZSxza29vYmV0b25ybWUsP2V0aXNiZXctM3MsaXBhLWV0dWNleGUsa2NhdHNsYXVkLiYzcyxldGlzYmV3LTNzLHRuaW9wc3NlY2NhLTNzLD90bmlvcHNzZWNjYS0zcyx5YXdldGFnLXNjaXR5bGFuYSw/Pz8/dHMmYWUmLSZhcyYtJjNzLGV0aXNiZXctM3MsPy4mM3MsOWR1b2xjJi1zd2Euc3Rlc3NhLXdlaXZiZXcsLnMmZnYsdGVzc2Etd2VpdmJldyw/P2FkYm1hbC10Y2VqYm8tM3MsZG9ycC0maXVwcGFybWUsb2lkdXRzcm1lLHNrb29iZXRvbnJtZSw/ZXRpc2Jldy0zcyxpcGEtZXR1Y2V4ZSxrY2F0c2xhdWQuJjNzLGV0aXNiZXctM3MsdG5pb3Bzc2VjY2EtM3MsP3RuaW9wc3NlY2NhLTNzLD8/cGEmLTNzLC4mM3MsOWR1b2xjJi1zd2Euc3Rlc3NhLXdlaXZiZXcsLnMmZnYsdGVzc2Etd2VpdmJldyw/P2FkYm1hbC10Y2VqYm8tM3MsZG9ycC0maXVwcGFybWUsb2lkdXRzcm1lLHNrb29iZXRvbnJtZSw/ZXRpc2Jldy0zcyxpcGEtZXR1Y2V4ZSxrY2F0c2xhdWQuJjNzLHRuaW9wc3NlY2NhLTNzLD90bmlvcHNzZWNjYS0zcyw/P3N1Oi1ldGlzYmV3LTNzLC4mM3MsOWR1b2xjJi1zd2Euc3Rlc3NhLXdlaXZiZXcsLnMmZnYsdGVzc2Etd2VpdmJldyw/P2FkYm1hbC10Y2VqYm8tM3MsZCZldGFjZXJwZWQtM3Msb3JwLSZpdXBwYXJtZSxvaWR1dHNybWUsc2tvb2JldG9ucm1lLD8/ZXRpc2Jldy0zcyxpcGEtZXR1Y2V4ZSxrY2F0c2xhdWQuJjNzLGV0aXNiZXctM3Msc3BpZi0mM3MsdG5pb3Bzc2VjY2EtM3MsP3RuaW9wc3NlY2NhLTNzLD9zcGlmLSYzcyx0bmlvcHNzZWNjYS0zcyw/dG5pb3Bzc2VjY2EtM3MseWF3ZXRhZy1zY2l0eWxhbmEsPyx2b2ctc3UmLSYzcyxzcGlmLTNzLD8uJjNzLGFkYm1hbC10Y2VqYm8tM3MsZG9ycC0maXVwcGFybWUsb2lkdXRzcm1lLHNrb29iZXRvbnJtZSw/ZXRpc2Jldy0zcyxpcGEtZXR1Y2V4ZSxrY2F0c2xhdWQuJjNzLGV0aXNiZXctM3Msc3BpZi0mM3MsdG5pb3Bzc2VjY2EtM3MsP3RuaW9wc3NlY2NhLTNzLD9zcGlmLSYzcyx0bmlvcHNzZWNjYS0zcyw/dG5pb3Bzc2VjY2EtM3MsPz8/aHQmcm9uLXBhJi0mM3MsZXRpc2Jldy0zcyw/LiYzcyw5ZHVvbGMmLXN3YS5zdGVzc2Etd2VpdmJldywucyZmdix0ZXNzYS13ZWl2YmV3LD8/YWRibWFsLXRjZWpiby0zcyxkb3JwLSZpdXBwYXJtZSxvaWR1dHNybWUsc2tvb2JldG9ucm1lLD9ldGlzYmV3LTNzLGlwYS1ldHVjZXhlLGtjYXRzbGF1ZC4mM3MsZXRpc2Jldy0zcyx0bmlvcHNzZWNjYS0zcyw/dG5pb3Bzc2VjY2EtM3MseWF3ZXRhZy1zY2l0eWxhbmEsPz91b3MtcGEmLSYzcyxldGlzYmV3LTNzLD8uJjNzLDlkdW9sYyYtc3dhLnN0ZXNzYS13ZWl2YmV3LC5zJmZ2LHRlc3NhLXdlaXZiZXcsPz9hZGJtYWwtdGNlamJvLTNzLGRvcnAtJml1cHBhcm1lLG9pZHV0c3JtZSxza29vYmV0b25ybWUsP2V0aXNiZXctM3MsaXBhLWV0dWNleGUsa2NhdHNsYXVkLiYzcyxldGlzYmV3LTNzLHRuaW9wc3NlY2NhLTNzLD90bmlvcHNzZWNjYS0zcyx5YXdldGFnLXNjaXR5bGFuYSw/Pz8/ZXctJmFjLiYzcyxhZGJtYWwtdGNlamJvLTNzLGRvcnAtJml1cHBhcm1lLG9pZHV0c3JtZSxza29vYmV0b25ybWUsP2V0aXNiZXctM3MsaXBhLWV0dWNleGUsa2NhdHNsYXVkLiYzcyxldGlzYmV3LTNzLHNwaWYtJjNzLHRuaW9wc3NlY2NhLTNzLD90bmlvcHNzZWNjYS0zcyw/c3BpZi0mM3MsdG5pb3Bzc2VjY2EtM3MsP3RuaW9wc3NlY2NhLTNzLD9zdSYtJjNzLGV0aXNiZXctM3MsPy4mM3MsOWR1b2xjJi1zd2Euc3Rlc3NhLXdlaXZiZXcsLnMmZnYsdGVzc2Etd2VpdmJldyw/P2FkYm1hbC10Y2VqYm8tM3MsZG9ycC0maXVwcGFybWUsb2lkdXRzcm1lLHNrb29iZXRvbnJtZSw/ZXRpc2Jldy0zcyxpcGEtZXR1Y2V4ZSxrY2F0c2xhdWQuJjNzLGV0aXNiZXctM3Msc3BpZi0mM3MsdG5pb3Bzc2VjY2EtM3MsP3RuaW9wc3NlY2NhLTNzLD9zcGlmLSYzcyx0bmlvcHNzZWNjYS0zcyw/dG5pb3Bzc2VjY2EtM3MsPz91ZSYtJjNzLGV0aXNiZXctM3MsPy4mM3MsOWR1b2xjJi1zd2Euc3Rlc3NhLXdlaXZiZXcsLnMmZnYsdGVzc2Etd2VpdmJldyw/P2FkYm1hbC10Y2VqYm8tM3MsZCZldGFjZXJwZWQtM3Msb3JwLSZpdXBwYXJtZSxvaWR1dHNybWUsc2tvb2JldG9ucm1lLD8/ZXRpc2Jldy0zcyxpcGEtZXR1Y2V4ZSxrY2F0c2xhdWQuJjNzLGV0aXNiZXctM3MsdG5pb3Bzc2VjY2EtM3MsP3RuaW9wc3NlY2NhLTNzLHlhd2V0YWctc2NpdHlsYW5hLD8/dm9nLXN1Ji0mM3MsZXRpc2Jldy0zcyxzcGlmLTNzLD8uJjNzLGFkYm1hbC10Y2VqYm8tM3MsZG9ycC0maXVwcGFybWUsb2lkdXRzcm1lLHNrb29iZXRvbnJtZSw/ZXRpc2Jldy0zcyxpcGEtZXR1Y2V4ZSxrY2F0c2xhdWQuJjNzLGV0aXNiZXctM3Msc3BpZi0mM3MsdG5pb3Bzc2VjY2EtM3MsP3RuaW9wc3NlY2NhLTNzLD9zcGlmLSYzcyx0bmlvcHNzZWNjYS0zcyw/dG5pb3Bzc2VjY2EtM3MsPz8/Pz8yLSZodHVvcy0mcGEuJjNzLGFkYm1hbC10Y2VqYm8tM3MsZG9ycC0maXVwcGFybWUsb2lkdXRzcm1lLHNrb29iZXRvbnJtZSw/ZXRpc2Jldy0zcyxpcGEtZXR1Y2V4ZSxrY2F0c2xhdWQuJjNzLGV0aXNiZXctM3MsdG5pb3Bzc2VjY2EtM3MsP3RuaW9wc3NlY2NhLTNzLD91ZS4mM3MsYWRibWFsLXRjZWpiby0zcyxkb3JwLSZpdXBwYXJtZSxvaWR1dHNybWUsc2tvb2JldG9ucm1lLD9ldGlzYmV3LTNzLGlwYS1ldHVjZXhlLGtjYXRzbGF1ZC4mM3MsZXRpc2Jldy0zcyx0bmlvcHNzZWNjYS0zcyw/dG5pb3Bzc2VjY2EtM3MsPz9sYXJ0bmVjLXVlLiYzcyxhZGJtYWwtdGNlamJvLTNzLGRvcnAtJml1cHBhcm1lLG9pZHV0c3JtZSxza29vYmV0b25ybWUsP2V0aXNiZXctM3MsaXBhLWV0dWNleGUsa2NhdHNsYXVkLiYzcyxldGlzYmV3LTNzLHRuaW9wc3NlY2NhLTNzLD90bmlvcHNzZWNjYS0zcyw/dHMmYWUmLXN1Ji0zcywuJjNzLDlkdW9sYyYtc3dhLnN0ZXNzYS13ZWl2YmV3LC5zJmZ2LHRlc3NhLXdlaXZiZXcsPz9hZGJtYWwtdGNlamJvLTNzLGQmZXRhY2VycGVkLTNzLG9ycC0maXVwcGFybWUsb2lkdXRzcm1lLHNrb29iZXRvbnJtZSw/P2V0aXNiZXctM3MsaXBhLWV0dWNleGUsa2NhdHNsYXVkLiYzcyxldGlzYmV3LTNzLHNwaWYtJjNzLHRuaW9wc3NlY2NhLTNzLD90bmlvcHNzZWNjYS0zcyw/c3BpZi0mM3MsdG5pb3Bzc2VjY2EtM3MsP3RuaW9wc3NlY2NhLTNzLHlhd2V0YWctc2NpdHlsYW5hLD8/aHQmcm9uLXBhJi0zcywuJjNzLDlkdW9sYyYtc3dhLnN0ZXNzYS13ZWl2YmV3LC5zJmZ2LHRlc3NhLXdlaXZiZXcsPz9hZGJtYWwtdGNlamJvLTNzLGRvcnAtJml1cHBhcm1lLG9pZHV0c3JtZSxza29vYmV0b25ybWUsP2V0aXNiZXctM3MsaXBhLWV0dWNleGUsa2NhdHNsYXVkLiYzcyxldGlzYmV3LTNzLHRuaW9wc3NlY2NhLTNzLD90bmlvcHNzZWNjYS0zcyx5YXdldGFnLXNjaXR5bGFuYSw/P3Vvcy1wYSYtJjNzLGV0aXNiZXctM3MsPy4mM3MsOWR1b2xjJi1zd2Euc3Rlc3NhLXdlaXZiZXcsLnMmZnYsdGVzc2Etd2VpdmJldyw/P2FkYm1hbC10Y2VqYm8tM3MsZG9ycC0maXVwcGFybWUsb2lkdXRzcm1lLHNrb29iZXRvbnJtZSw/ZXRpc2Jldy0zcyxpcGEtZXR1Y2V4ZSxrY2F0c2xhdWQuJjNzLGV0aXNiZXctM3MsdG5pb3Bzc2VjY2EtM3MsP3RuaW9wc3NlY2NhLTNzLHlhd2V0YWctc2NpdHlsYW5hLD8/Pz9ldy0mc3UmLSYzcyxldGlzYmV3LTNzLD8uJjNzLDlkdW9sYyYtc3dhLnN0ZXNzYS13ZWl2YmV3LC5zJmZ2LHRlc3NhLXdlaXZiZXcsPz9hZGJtYWwtdGNlamJvLTNzLGQmZXRhY2VycGVkLTNzLG9ycC0maXVwcGFybWUsb2lkdXRzcm1lLHNrb29iZXRvbnJtZSw/P2V0aXNiZXctM3MsaXBhLWV0dWNleGUsa2NhdHNsYXVkLiYzcyxldGlzYmV3LTNzLHNwaWYtJjNzLHRuaW9wc3NlY2NhLTNzLD90bmlvcHNzZWNjYS0zcyw/c3BpZi0mM3MsdG5pb3Bzc2VjY2EtM3MsP3RuaW9wc3NlY2NhLTNzLHlhd2V0YWctc2NpdHlsYW5hLD8/dWUmLTNzLC4mM3MsOWR1b2xjJi1zd2Euc3Rlc3NhLXdlaXZiZXcsLnMmZnYsdGVzc2Etd2VpdmJldyw/P2FkYm1hbC10Y2VqYm8tM3MsZG9ycC0maXVwcGFybWUsb2lkdXRzcm1lLHNrb29iZXRvbnJtZSw/ZXRpc2Jldy0zcyxpcGEtZXR1Y2V4ZSxrY2F0c2xhdWQuJjNzLHRuaW9wc3NlY2NhLTNzLD90bmlvcHNzZWNjYS0zcyw/Pz8/PzMmLXRzJmFlaHQmcm9uLXBhJi0zcywuJjNzLDlkdW9sYyYtc3dhLnN0ZXNzYS13ZWl2YmV3LC5zJmZ2LHRlc3NhLXdlaXZiZXcsPz9hZGJtYWwtdGNlamJvLTNzLGRvcnAtJml1cHBhcm1lLG9pZHV0c3JtZSxza29vYmV0b25ybWUsP2V0aXNiZXctM3MsaXBhLWV0dWNleGUsa2NhdHNsYXVkLiYzcyxldGlzYmV3LTNzLHRuaW9wc3NlY2NhLTNzLD90bmlvcHNzZWNjYS0zcyw/P3Vvcy1wYS4mM3MsYWRibWFsLXRjZWpiby0zcyxkb3JwLSZpdXBwYXJtZSxvaWR1dHNybWUsc2tvb2JldG9ucm1lLD9ldGlzYmV3LTNzLGlwYS1ldHVjZXhlLGtjYXRzbGF1ZC4mM3MsZXRpc2Jldy0zcyx0bmlvcHNzZWNjYS0zcyw/dG5pb3Bzc2VjY2EtM3MsPz9ldy11ZSYtM3MsLiYzcyw5ZHVvbGMmLXN3YS5zdGVzc2Etd2VpdmJldywucyZmdix0ZXNzYS13ZWl2YmV3LD8/YWRibWFsLXRjZWpiby0zcyxkb3JwLSZpdXBwYXJtZSxvaWR1dHNybWUsc2tvb2JldG9ucm1lLD9ldGlzYmV3LTNzLGlwYS1ldHVjZXhlLGtjYXRzbGF1ZC4mM3MsZXRpc2Jldy0zcyx0bmlvcHNzZWNjYS0zcyw/dG5pb3Bzc2VjY2EtM3MsPz8/cyw/NC10c2FlaHR1b3MtcGEuJjNzLGFkYm1hbC10Y2VqYm8tM3MsZG9ycC0maXVwcGFybWUsb2lkdXRzcm1lLHNrb29iZXRvbnJtZSw/ZXRpc2Jldy0zcyxpcGEtZXR1Y2V4ZSxrY2F0c2xhdWQuJjNzLGV0aXNiZXctM3MsdG5pb3Bzc2VjY2EtM3MsP3RuaW9wc3NlY2NhLTNzLD81LXRzYWVodHVvcy1wYS4mM3MsYWRibWFsLXRjZWpiby0zcyxkZXRhY2VycGVkLTNzLGV0aXNiZXctM3MsaXBhLWV0dWNleGUsa2NhdHNsYXVkLiYzcyxldGlzYmV3LTNzLHRuaW9wc3NlY2NhLTNzLD90bmlvcHNzZWNjYS0zcyw/bGFib2xnLTNzLnRuaW9wc3NlY2NhLnBhcm0sP3lhc2Ryb2NzaWQsP3QmYXJjb21lZC1hLXNpLGMmLW1vcmYsZSZqb3JwZWxiYXZvbCx0ZWRhdGFkLiZlY25hdHNuaSxvbWVkLD8/P2UmZWwmLXNpLHJlYnUtc2ksP25vdGxhY29sLD9oZ2lsZmh0aXdsZXRvaCxpOmJhdHltLG5lbHAtMSZhbCxzdSx1ZSw/LG0tbW9yZixuJmF0bnVvY2NhLW5hLXNpLGUmZHV0cy1hLXNpLGdhJnRuZWdyZW1lLndlaXZlcnAseW9scGVkLD9yLW90LWVjYXBzLHRub2NyZXN1JmFoY29tLGJ1aHRpZyxlJmNhcHNwcGEsZG9uaWwucGksbGJhdnJlc2JvLmNpdGF0cyx2YXQsP2thZXJ0cyxwbCw/Pz9vcHMmZWRvYyxnb2xiLHBwYSw/cyZpJmhjcmFuYS0mYS1zaSxuYS1zaSw/bGFpY29zLWEtc2kscGFyZWh0LWEtc2ksdHJhLW5hLXNpLHhldG4mb2Qsc2VvZCw/P29oJi1lY2Fwc2JldyxwaXltLHNmbiw/P3UmLW1vcmYsbnlla2NvaC1hc2ksP3YtbW9yZiw/dSYtcm9mLXNsbGVzLDQsZSxveW5haHRyZXRyYW1zc2kscjp1ZyYtYS1zaSxzbmRkLD8sP3YmZWQtc2VsdWNyZWgsbi1tb3JmLHJkbGYsdy1tb3JmLD93JmVpdmVycC1lbWFzLG8mbHB3b25zLXlydCx6b2ssPz94JmJzYmYuc3BwYSxlbSxpbnVlbW9oLG9iZG5hcy00NGVzYWIsdC1tb3JmLHVuaWxlbW9oLD95JmEmYm54Oi4mMnUsbGFjb2wtMnUsPyxsZXJvdHRhZCxwLWNzYnVzLHdldGFnLWxsYXdlcmlmLD9kJm5hY3Nla2lsLHV0cy10Y2Vqb3JwLnZlZCw/Zmlwb2hzeW0sayYtbW9yZixuaWtzaXNuZCw/ciZhaWRhbmV0YWgsb3RjZXJpZGV2aXRjYXltLD91Z29vLHctbW9yZix4JmFsYWdrZWVnLG9ycG1hcHNvbi5kdW9sYzouNTYzbywsPz96JmVzZHJvY3NpZCx0aWxiY2l0YXRzLSZwcm9jLXcsc3NlbGxhaXRuZWRlcmMtdyx3LD8/P2ludT8/bT9vcj90c2xhPz9wIS4mZW1hbixud28sPz9yYWYhLmpyb3RzLGV0YXRzPz9zP3QhLiZncm8/bGltP21vJmM/bj8/b2M/dGVuP3VkZT92b2c/Pz91JmVzdW0/cm9mPz96IS4mY2E/Z3JvP2hjcz9saW0/bW9jP28mYz9mbmk/P3Rlbj91ZGU/dm9nP3ppYj8/Pz9uJjMxNXJtaS0tbng/YSZicnVkP2NpbGJ1cGVyP2YhLm1rbSw/Z3JvbXBqP2hrYWdhP20/b2w/c3Npbj91JmhpeD9xbmE/P3ZhcmFjP3lhbG8/P2IhLiZncm8/bW9jP29jLHRlbj91ZGU/dm9nPz9jPz9jIS4mYWg/Ymg/YyZhP3M/P2QmNXhxNTUtLW54P2c/cz91b2xjcGFucXltLD9lJmg/dGlzYXZuYWMueW0sP2cmbGEwZG8tLW54P3JvPz9oJmE/cT9zIS5zYSw/P2kmN2Ewb2ktLW54P2g/P2omYj9mP3Noayx0P3g/ej8/a2g/bCZoP2ltP2o/P20mbj9vYyEuJnJla2FtZWdhcy4xLSZodHJvbi1uYy4ma29vYmV0b24sb2lkdXRzLD90c2V3aHRyb24tbmMuJmtvb2JldG9uLG9pZHV0cyw/P3MmZWNpdnJlc2Jld25vemFtYS5uby4xLSZodHJvbi1uYy5wcGFiZXctcmVmc25hcnQsdHNld2h0cm9uLW5jLnBwYWJldy1yZWZzbmFydCw/d2Fub3phbWEuJjEtJmh0cm9uLW5jLiYzcyxhZGJtYWwtdGNlamJvLTNzLGQmZXRhY2VycGVkLTNzLG9ycC0maXVwcGFybWUsb2lkdXRzcm1lLHNrb29iZXRvbnJtZSw/P2V0aXNiZXctM3MsaXBhLWV0dWNleGUsa2NhdHNsYXVkLiYzcyxldGlzYmV3LTNzLHRuaW9wc3NlY2NhLTNzLD90bmlvcHNzZWNjYS0zcyw/dHNld2h0cm9uLW5jLiYzcyxhZGJtYWwtdGNlamJvLTNzLGRvcnAtJml1cHBhcm1lLG9pZHV0c3JtZSxza29vYmV0b25ybWUsP2V0aXNiZXctM3MsaXBhLWV0dWNleGUsa2NhdHNsYXVkLiYzcyx0bmlvcHNzZWNjYS0zcyw/dG5pb3Bzc2VjY2EtM3MsPz9iZS4xLSZodHJvbi1uYyx0c2V3aHRyb24tbmMsPz8/Pz8/biZoP2w/cz95Pz9vbT9xYz9zJmc/aj9wcGEtYXZuYWMsP3QmY2Vubm9ja2NpdXEudGNlcmlkLGVuPz91ZGU/dm9nP3d0P3gmZz9qP24/cz8/eiZnP3g/P1x1NTNmOFx1NTE2Yz9cdTdkNjFcdTdkYjI/XHU3ZWRjXHU3ZjUxPz9iPz9kJmchLnlwbmMsP2thPz9lJmRyYWc/ZXJnP2Z1YWs/aGN0aWs/aSZsaWJvbW1pP3c/P20/cG8/ciFlZG5hYWx2Pz9zaWVyP3Zlcz8/ZyEuJmNhP2dybz9tb2M/dGVuP3VkZT92b2c/P2lzJmVkIS4mY2locGFyZyxzc2IsPz9pcmV2Pz8/aCEuJmJvZz9ncm8/bGltP21vYz90ZW4/dWRlPz8/aSEuJmFjP2JldyxjJmE/aW4/P2RuaT9lJm0/c2FiYXB1cyw/ZyY1PzY/cD9ybz8/aSZhP2hsZWQ/P2smbmFiP3U/P2wmZXZhcnQ/aW0/P20mYT9vYz9yaWY/P24mYz9lZz9pZj8/byZjP2ZuaT9pP3JwPz9wJm9vYz91Pz9yJmFoaWI/ZD9lPz9zJmM/ZXI/bmR1b2xjLHNlbmlzdWI/dT92ZWRuaSw/dCZhcmFqdWc/ZW4hcmV0bmk/P25pP3NvcD8/dWRlP3Ymb2c/dD8/eXNyYWIsemliPz9lbGtuaXZsYWM/Z3Jpdj9rcz9scmViIS5zbmRkLD9wP3Y/dz94Pz9rIS4mZ3JvP3Rlbj91ZGU/dm9nPz8/bCZlb2s/b2NuaWw/P20hLiZjeW4sZ3JvP3VkZT92b2c/Pz9vJmRub2w/aSZoc2FmP24mbz91dGlkZXJjPz9zaXYhb3J1ZT8/dCZhJmN1ZGUhLm9jLD9kbnVvZj90c3lhbHA/P2MmZXRvcnA/dSZhP3J0c25vYz8/Pz8/a2luP2xhcz9tcm9tP25hYz9wJnE/dW9jPz9zJmlhbT9wZT9zY2lyZT8/dCZyb24/c29iPz96YW1hPz9wIS4mZ3JvP29jP3Rlbj91ZGU/dm9nPz9rPz9yJmUmYz95YWI/P29wPz9zIS4mZ3JvP21vYz90cmE/dWRlP3YmaW51P3VvZz8/Pz90IS4mZCZuaT91b2xjZWduYXJvLD9ncm8/bHRuaT9tJm9jIW5pbT8/c2lydW90Pz9uaWY/byZmbmk/c3JlcD8/c25lP3QmYW4/ZW4/P3ZvZz8/bT8/dSZmIS4mcGNpJnYseSx6LD9zbSw/P3IhLiZhJnJhaWw6Lm5hcmksLHZuYWMsP2JkbmV2YXIsZWwmYmF2b2wsZGVlbiw/bCZhdjouYmV3LCxlY3JldixwZXIsP3JldHJvcG5vLHQmaWtjYXRzLG5lbXBvbGV2ZWQsP3hpdyw/P3N0YWQ/eGFtYXk/eT8/diEuJmEmbG5vcz9vaGhuYWgmaz90Pz8/YyZhP291aHBobmliP3VocGhuaXY/P2RpP2UmbWFuP3J0bmViP3VoIW5laWh0YXVodD8/P2cmbiZhJmJvYWM/aWcmYWg/Y2FiP24mYT9laSZrP3Q/Pz91YWg/P25hZD9ydGNvcz91cW5leXV0Pz9vJmRtYWw/aHBpYWg/bGhuaXY/bmthZD91ZCZobmliP2lhaD8/Pz9ybz8/aCZuaSZiJmFvaD9nbmF1cT9obmluP2lhaHQ/P2QmaG5pYj9tYW4/P21paGNvaG9ocGhuYWh0P24mY2FiP2duYXVxP3lhdD8/dGFoP3ZhcnQ/P3RsYWVoPz9pJmEhYm5leT9jb2FsP2duZ25hdXE/bGFpZz9uZ25vZD8/b25haD9ydGduYXVxPz9rYWxrYWQ/bSZhbiZhaD9nbmF1cT8/b2M/dXRub2s/P24mYSZlaGduP2dub2w/a2NhYj91aHRobmkmYj9uPz8/ZSZpYm5laWQ/eSZnbnVoP3UmZ25pYWh0P2hwPz8/P29zZ25hbD8/byZmbmk/aHQmbmFjP3VocD8/aT9ycD8/cGFodGdub2Q/dCZlbj9uaT8/dSZhJmhjaWFsP21hYz90Z251di1haXJhYj8/ZGU/ZWlsY2FiPz92b2c/emliPz8/d28mcmM/dCFlcGFjPz8/P28mNzZpNG9yZnktLW54P2EhLiZicD9kZT9nJm8/cm8/P29jP3RpP3VkZT92Jmc/b2c/Pz9ib2F0Pz9iIS4mYSZjaSZzdW0/dGlsb3A/P2kmYyZhcmNvbWVkP25laWM/P2dvbG8mY2U/bmNldD8/bSZlZGFjYT9vbm9jZT8/cnQmYXA/c3Vkbmk/P3ZpbG9iPz9uJmVnaWRuaT9pY2lkZW0/P3NlcnBtZT90c2l2ZXI/dml0YXJlcG9vYz8/YiZldz9vZz8/ZHVsYXM/ZSZyYm1vbj90ciZhP29wJmVkP3NuYXJ0Pz8/P2cmb2xiP3JvPz9pa2l3P2wmYSZub2kmY2FuaXJ1bHA/c2Vmb3JwPz9ydXRhbj8/aW0/P21vYz9vJmZuaT9sYmV1cD9yZ2E/dG5laW1pdm9tPz9zYWljaXRvbj90JmFza3Q/ZW4/bmk/P3VkZT92dD8/aD9pZXc/b2xnPz9jIS4mZHImYyxyYWMsP2VzYWJhcHVzOi5lJmdhcm90cyxtaXRsYWVyLD8sZ3JvP2lweW0sbCZpbT9wZXI6LmRpLCw/bW8mYz9uPz9vc211LHMmZWdhcCZkYWVsLGwsP25kaWgsP3QmZW4/aWxwZXJkZWxsYXdlcmlmOi5kaSwsP3VkZT92b2c/P2E/ZT9pbj9tYXJhP3MmZWRhcmI/aWM/Pz9kIS4mYiZldz9vZz8/ZGxzP2dybz9saW0/bW9jP3QmZW4/cmE/P3VkZT92b2c/P2Fnb2JhP2lmP3pkN2FjYmdtLS1ueD8/ZSZjP2QmaXY/b3I/Pz9mIW5pIS4mZGxhd3R0aW0sZSZnJmRlbHdvbmstZm8tbCZlcnJhYixsZXJyYWIsP2VsbG9jZXZvbGksP2h0LXNrb3JnLHJvbS1yb2YtZXJlaCx0YWRwdXNuOmQsLD9sbGF0aXN3b25rLG1hY3J2ZCxvZm5pLXYscCZpJi1vbixmbGVzLD9vaGJldyw/ciZldnJlcyYzb3B5dCxkbGF3dHRpbSw/dW8tcm9mLD9zJmlodC1za29yZyxuZCYtY2ltYW55ZCxueWQsdW9sYyw/P3RzcmlmeWFtLHlzcmFiLHptdXJvZiw/Pz9nJmVsP24hYW0/aWI/Pz9od3NvaHc/aSEuJjBwY2ksMXBjaSw4MzAyLGEmbWluaWZlZCx0YWQtYiw/YiZhbHRpZyx1aHRpZyw/YyZpdGVuZWVrLHpoLD9kJmV0cHlyY3MudG5laWxjLHJhb2JlbGdhZWIsdW9sY3JvcGF2LD9lJmNpdmVkbmlzZXIsZG9uJnBwYWQuc25kbnlkLHJlcHloLD9lZ2lwYSxsJmJidWIubmRjLGVqLD9uaWxuaWdvbCxzdWZ4b2IsdCZpJmJldWxiLHNub2VodG5hcCw/bmV3dHUseWJlZWIuc2FhcCw/dmFyYiw/ZyZuJmFsa3JhZCxpJmdhdHNuaXNlci5zZWNpdmVkLHRzb2gmLWJyLmV0aXMseXRzb2gsPz8/cm8/P2smY29yZWdyb2YuZGksbyZvYnRpZyxyZ246LiZhcyxuaSxwJmEsaiw/c3UsdSZhLGUsPz8sP3JhbXl0ZWZhc3Jlc3dvcmIsP2xpbT9tJm8mYz9uPz9yb2Z0YWxwLWV2aXJkLD9uJmFpY2lzdW0sbXRzcDoua2NvbSwseWRlZCw/byZjP2lkdXRzeGl3LHRvcSw/cCZvcGlsb2wscGEmLWFydXNhaCxldHliZWViLjFka2VzLD8/ciZkZGF5bSxlJnRzbmV1bS1oZix2cmVzJmNpc2FiLGxhdXRyaXYsPz9pYWwuc3BwYSw/cyZjb2RlaHRkYWVyLGduaWh0YmV3LG5lbWVpcy1vbSxwcGEmZWxiYnViLG9saWsscmV2ZWxjLD90JmFjZG5hcyxla2NpdCw/P3QmZSZrY3VidGliLG4hb3RvcnAsPz9pJmJlbGV0LGd1ZGUsP25ldG5vY3Jlc3VzZWViZHVvbGMscmFlZG9uLmVnYXRzLHMmZXR3b2xmYmV3LHVkZ25paHQuJmNlcnNpZC4mZHZyZXNlcix0c3VjLD9kb3JwLnRzdWMsZ25pdHNldC4mZHZyZXNlcix0c3VjLD92ZWQuJmR2cmVzZXIsdHN1Yyw/Pz8/dWRlP3YmZ2liLjBrdSxvZz8/d29sZmJldyx4JmJkcnltLGNxLHJvdGlkZSw/eXNyYWIsenpxLD9iP2QmYXI/dSZhP3RzPz8/aj9yP3N5aHA/P2ohLiZkaHA/ZyZuZT9ybz8/aGNzP2kmYT9yZ2E/P2xpbT9tJmY/b2M/P3JlcD90ZW4/dWRlP3Ymb2c/dD8/Pz9sbCZhZz9vPz9tIS4mZ3JvP21vYz90ZW4/dWRlP3ZvZz8/Zz9pbD9taT9vcnA/P24hLiZhJjAmYi1la2hnbmFyay0tbng/Yy1pZWhzcmdldi0tbng/Zy1sa3NlZGxpZy0tbng/ay1uZWduYW52ay0tbng/PzEmcC1uZWRyYWd5LS1ueD9xLSZhc2llcnJzLS1ueD9ncmVic250LS1ueD9sYWRvLXJzLS1ueD9uJmVnbmlkbC0tbng/b3JmLXJzLS1ueD8/cmVnbmF5aC0tbng/c3NvZmVuaC0tbng/P3ItZGF0c2dydC0tbng/cy1sYWRyanRzLS1ueD92LXkmc2VubmVyLS1ueD92cmVqa3MtLW54Pz8/M2ctZGF0c29iZWdoLS1ueD80JjUtJmRuYWxlcHJqLS1ueD9nb2tzbmVybC0tbng/dGVkbmFseWgtLW54Pz82LW5lbGFkbmptLS1ueD9zLSZhbnRvdXZhY2hiLS1ueD9pbXBvdXZ0YWxtLS1ueD8/eS0mYWdyam5ldnZhZC0tbng/aWtodmxhcmFlYi0tbng/Pz83ay1hbnRvdXZhY2NoYi0tbng/OCZrLXJla2llLWVydi0tbng/bC1sYWRydWEtcnMtLW54P20tZGFyZWhzZHJrLS1ueD8/YSEuc2c/P2JjdC1laW1ldXZlanNlbW4tLW54P2QmZG8/aWlzZXZ2YWQ/bG92P25hcnRzP3Vhcz8/ZiYxLSZsLS1ueD9zLS1ueD8/Mi1oLS1ueD8/ZyYxMGFxMC1pbmV2ZS0tbng/YXY/ZXY/bG90P3ImYWpuJmV2dmFkP3U/P1x1MDBlMWpuJmV2dmFkP3U/Pz8/aD9pei1sZi0tbng/aiZkZGFkYWI/c2VsPz9rJmVsP2hvaiZzYXJhaz9cdTAxNjFcdTAwZTFyXHUwMGUxaz8/aWl2JmFnJm5hJmVsP2c/P1x1MDE0YiZhZWw/XHUwMGUxZz8/P3Jhbj8/P2wmZj9sYWhyZXZvP28mbXM/cz8/c2VubmV2P3QtJmlsbS0tbng/dG9tLS1ueD8/dSYtZWRyLS1ueD9zPz9cdTAwZjhtcz8/bXVhcj9uJjAtdHNyLS1ueD8yLWRvYi0tbng/NS0mYXNpci0tbng/dGFscy0tbng/P2EmciEtaS1vbT9mP3Q/P3Q/P2RvdXZzYXR2aWQ/a2l2P20mb3M/XHUwMGY4cz8/biZvZD9cdTAwZjhkPz9yYT9zZW4/dCZhb3V2YXRoZWlnP291diZhJmMmY2gmYWI/XHUwMGUxYj8/aCZhYj9cdTAwZTFiPz8/bj8/aSZhZz9cdTAwZTFnPz9zYSZtbz90dHZpZD8/XHUwMGUxbj8/P3otcmV5LS1ueD9cdTAwZTZyJmY/dD8/P28mcC0mbGFkci0tbng/c2Vucy0tbng/P3EtbmFndi0tbng/ci1hc25zLS1ueD9zLWtqa3MtLW54P3YtbXVyYi0tbng/dy0mYW5yJmYtLW54P3QtLW54Pz91YmxrLS1ueD8/P3Bwb2w/cSYwLXQmYmFvbC0tbng/c291bS0tbng/dmVpYi0tbng/P3gtJmlwcGhsLS1ueD9yJmVtYmgtLW54P2ltcGgtLW54Pz8/eS10aW5rcy0tbng/P3ImZi1hdHNyLS1ueD9nLSZhbiZtcy0tbng/bmQtLW54Pz9lJmRyZi0tbng/bmdzLS1ueD8/bXVycy0tbng/bmV0bC0tbng/b2xtYi0tbng/c29yci0tbng/P2gtJmEmbG1zLS1ueD95cmYtLW54Pz9lbWp0LS1ueD8/aSYtJmxib2gtLW54P3JzaXItLW54P3kmZCZhci0tbng/bmEtLW54Pz9rc2EtLW54P2xlbS0tbng/ciZ1bC0tbng/eWQtLW54Pz8/P3N0dT8/ai0mZHJhdi0tbng/cm9sZi0tbng/c2Rhdi0tbng/P2t1YT9sLSZkcm9qZi0tbng/bGFyZXMtLW54Pz9tLXRsb2hyLS1ueD9uLWVzYW5zLS1ueD9vbGY/cC1zZG5pbC0tbng/cy1sYWRybC0tbng/dGloP3YtcnZzeXQtLW54Pz9zJmEmbnM/b25zPz9pJmFyP2VyJmRyb24/ciZvcz9cdTAwZjhzPz8/XHUwMGUxcj8/bGEmZz9oPz9tb3IhdD8/c2lyP3VmP1x1MDBlNW5zPz90JmtvdWxvJm5rYT9cdTAxNGJrXHUwMGUxPz9sYT9wLXJhZGRqYi0tbng/ci1hZ3JqbnUtLW54P3MmYWVmciZhbW1haD9cdTAwZTFtbVx1MDBlMWg/P29yZj9yJm8/XHUwMGY4Pz8/dS12cmVpa3MtLW54Pz91JmgtZG51c2VsLS1ueD9pLSZkcm9qZmstLW54P3ZsZXNsbS0tbng/P2otZWtlcm9tLS1ueD9rLXJla3JlbS0tbng/dS0mZG5hbHItLW54P2dva3NyLS1ueD9zZW5zay0tbng/P3YtbmVreXItLW54P3ctJmsmYWJyZC0tbng/aXZqZy0tbng/P29yeXNvLS1ueD8/eS15JmRuYXMtLW54P21yYWstLW54P24mYXJ0LS1ueD9uaWYtLW54Pz9yZXZhLS1ueD8/ei1zbW9ydC0tbng/P3YhLnNnP2xlZGF0c2tvcms/cmVpa3M/P3doLWFudG91dm4tLW54P3gmOS1kbG9mdHMtLW54LmFvcS1yZWx2LS1ueD9kLW5tYWhlcmstLW54P2YtZG5hbG5rcy0tbng/aC1uZWx0bG9oLS1ueD9pLWRyZ2VwcG8tLW54P2otZ3ZlJmduYWwtLW54P2xyZWItLW54Pz9tLW5lZ25pbHItLW54P24tZHJvamZ2ay0tbng/P3kmNy11amRhZWhhbC0tbng/OC1hbnRvdXZpZy0tbng/Yi0mZGxvZnJzLS1ueD9nb2tzbXItLW54P2tpdnJ5ci0tbng/cmV0c2xqLS1ueD8/ZS1uZWpzb20tLW54P2YteSZyZSZkbmktLW54P3Rzby0tbng/P3N0aXZrLS1ueD8/Zy1yZWdhcmstLW54P29yZj9cdTAwZjhyZj8/ejktZHJvamZzdGItLW54Pz9iJjI1LWFraWl2YWdhZWwtLW54PzUzYXk3LW9sb3VzZWNoLS1ueD9hJml5LWd2LS1ueD9sZS10bCZiLS1ueD9zLS1ueD8/bjAteWRyLS1ueD8/YyYwLWRuYWwtZXJkbnMtLW54P3otbmV0b3QtZXJ0cy0tbng/P2cmZy1yZWduYXJhdi1ycy0tbng/by1uZWpzc2VuZG5hcy0tbng/P2p1LWVyZGlscy1lcnRzeS0tbng/bmotZG5hbGgtZ29rc3J1YS0tbng/cSZxLWxhZHNtb3ItZ28tZXJtLS1ueC4mYXJpLXlyZWgtLW54P2VkbmFzPz9zLW5lc2xhaHNsYWRyanRzLS1ueD8/P2NhJjRzLWF0c2FlZnJtbWgtLW54PzhtLWRudXN5bm5yYi0tbng/aWwtdGwtLW54P2xlLXNsZy0tbng/bjUtcmRpYi0tbng/b3AtZHJnbC0tbng/dXcteW5ucmItLW54Pz9kJmEmcXgtdGdncnYtLW54P3JlaCFubml2az9zZCZvcms/XHUwMGY4cms/P3Vhcz8/dHMmZSZiaT9ra2FyP2xseWg/bm5hbj8/ZyZvcnQ/XHUwMGY4cnQ/P2smYWxmP2lyZGVyZj8/bGV2ZXY/bWlyZz9vYmVnJmFoP1x1MDBlNmg/P3ImYWg/ZWpnPz8/P2Jhcm0tamRkZGItLW54P2llIXJhaD9zJmV0aXZrP2xhZG1hbj8/P2xvZiZyJm9zP1x1MDBmOHM/P3RzJmV2LmVkbmFzP28ucmVsYXY/XHUwMGY4LnJlbFx1MDBlNXY/Pz9uJmEmbCYtZXJkJm4mb3M/XHUwMGY4cz8/cm9uPz9hZHJvaC5zbz9kcm9uLiZhJmc1LWItLW54P3JpLXlyZWgtLW54Pz9vYj95Jm9yZWg/XHUwMGY4cmVoPz9cdTAwZjhiPz9lJm0hbGVqaD8/cHImb2o/XHUwMGY4aj8/dmk/P2d5Yj9uJmFrcz9cdTAwZTVrcz8/byZoLWdva3NydWE/cmY/P3Imbz91YT9cdTAwZjg/P3Ryb3M/XHUwMGY4aC1nb2tzcnVhPz9ydHMhZSZkZXZ0P2xhYj9tbG9oPz8/cyZlbGxpbD9uYWl0c2lyaz9yb2Y/Pz91Jmwhb3M/P3MhZCZpbT9sZWp0Pz9lJmd1YWg/bCZhP1x1MDBlNT8/P2trb2g/bGF2az9uYWl0c2lyaz9yJmFmP2VnJmU/aWU/Pz90ZWY/eSZvbm5vcmI/XHUwMGY4bm5cdTAwZjhyYj8/Pz8/ciZhJmJsYXZzIS5zZz8/ZyZlcHBvP2xhPz8/byZqJmYmYSFkbml2P2s/dms/P2RpZT9lJmRuYXM/a2tlbGY/P2xsaW5zP3ImaWVsP290cz8/cyZsYWI/dCZhYj9cdTAwZTViPz95dD8/XHUwMGU1IWs/P1x1MDBlNnZrPz9sZXM/P3RzPz9cdTAwZTVnJmVwcG8/bFx1MDBlNT8/P3VyZWtzdWIuc2VuPz9lJmF5Yi15cmV0dG4tLW54P2QmYXI/aXNlbW1lamgzMjEsbG9tP3Imb2Y/XHUwMGY4Zj8/XHUwMGU1cj8/ZyZneXI/bmF0cz8/aSZtZXV2JmVqc2VtJmFhbj9cdTAwZTVcdTAwZTVuPz9zZWthYWw/P3JqZWE/P2omZCZlZj9va3M/P2xlcz8/ayZlciZhb20/XHUwMGU1b20/P2hnbmEmYXJrP1x1MDBlNXJrPz9pcmVnbmlyP2tvdCFzPz9zJmlnP3VhZj8/P2wmYm1hYj9reWI/bCZhdj9laHRhdHM/P29oPz9tJml0P29qdD9cdTAwZjhqdD8/biZhcmc/ZyZvcz9cdTAwZjhzPz9tZWg/cmVpbD90ZT91bW1vaz95cmI/P3ImZGlscy1lcnRzJmV2P3kmbz9cdTAwZjg/Pz91YT92b2Q/P3NhJmFucz9cdTAwZTVucz8/dCZyb2JyYWE/c3BhYXY/P3VyZz8/ZiY2MmF0cy11Z3Nyb3AtLW54P2EmMTAtdWp2cmVra2hyLS1ueD83ay10YWpqcnYtYXR0bS0tbng/P28hLnNnP2g/P3MhLnNnPz92IS5zZz8/P2cmNWFseS15ciZuLS1ueD92LS1ueD8/YSZsbG9yP3ZlJmduYWw/bHJlYj8/P24mYXYhc25lbGx1Pz9vcmc/P29rcyZkaWU/bSZvcj9cdTAwZjhyPz9uZXImb2w/XHUwMGY4bD8/ciZvP1x1MDBmOD8/P3ImZWIhYWRuYXI/ZWR5cHM/cyZkaWU/ZWxmP2dub2s/biZvdD9cdTAwZjh0Pz8/P29ic3ByYXM/P3VhaGF0c2xhP1x1MDBlNXZlJmduYWw/bHJlYj8/P2gmMGFsdS15c20tLW54PzcmNGF5OC1ha2lpdmFnZy0tbng/NWF5Ny1hdGtvdWxvay0tbng/P2EhLnNnPz8/aSZlJmhzciZhZ2V2P1x1MDBlNWdldj8/cmY/P2smaCZhdmxhcmFlYj9cdTAwZTF2bGFyYWViPz9zPz9sbSZhP1x1MDBlNT8/bXBvdXZ0YWwmYW0/XHUwMGUxbT8/cHBoJmFsP1x1MDBlMWw/P3Jyb3VuYWRkbGVpZD9zc2FuZXZlP1x1MDE2MVx1MDE2MVx1MDBlMW5ldmU/P2omMGFvcS15c2d2LS1ueD85NGJhd2gtYWtob2pyay0tbng/P2smYSZiJm9yZD9cdTAwZjhyZD8/amtzP2xsZWlzPz9pdiFha2xlanBzP2wmYW0/ZXZzP3U/P21hZz9uZWw/b2pnP3ImYSZsP24/P2Vwb2s/aWVsP3kmb3I/XHUwMGY4cj8/P3MmYWg/a2VsPz9cdTAwZjhqZz8/a2FiZW5lP29qc2FyYWs/cmFtJmRlaC4mYW9xLXJlbHYtLW54P3JlbCZhdj9cdTAwZTV2Pz9zbz8/ZSZsZXQuJmFnNS1iLS1ueD9vYj9cdTAwZjhiPz9yYT8/P1x1MDBlNWprcz8/bCZhIWQmYW5ydXM/ZCZudW11cmI/cm9uPz9lJmduYXJkP250ZT9zJm1laD9zaW4/P3R0aW4/P2cmaXM/bnlsPz9rcm8/bCZlbT9sJmVqZnR0YWg/b2Y/P3UmYWctZXJ0ZGltP3M/Pz9uJmFtP2VyYT9nb3M/aSZiP25yb2g/cj8/a29zP251cz9vaj8/by0mZHJvbj9yJm9zP1x1MDBmOHM/Pz9wcG8/ciZhIWw/bnJhbT8/ZSZnbmU/bD92Pz9pcz9vJmp0cz90cz8/dSZhLSZkcm9uP3Imb3M/XHUwMGY4cz8/P2g/P1x1MDBlNT9cdTAwZTZsP1x1MDBmOGp0cz8/cyZlJmpnP25pdms/cnlmPz9rYXY/bW9yLWdvLWVyJm9tLiZlZG5hcz95b3JlaD8/XHUwMGY4bS4mZWRuYXM/eVx1MDBmOHJlaD8/P3VhZz8/dCZsYXM/cmFqaD9zdWFuPz92JmwmYT9lLXJvdHM/P3UtZ28tZXJvbj8/eXQ/P2tzZWRsaWc/cmVzJmE/XHUwMGU1Pz8/YmliJmVrbG9mP3Nla2x5Zj8/ZXMhZGFoPz9oIS5zZz8/aSZtP3N5cnQ/P2wmZWpmP292JmV0c3VhP2duaXQ/a3NhP3NkaWU/Pz9uIS5zZz8/byEuc2c/Ym9oP2c/aD8/ciEuc2c/P1x1MDBlNSFrc2VkbGlnPz9cdTAwZjhib2g/P20mYSZyYWg/dms/P2YhLnNnPz9oIS5zZz8/aSZlJmgmZG5vcnQ/cnRzdWE/c3Nlaj8/cmtyZWpiPz9rc2E/P29sP3QhLnNnPz91JmRvbT9lc3VtP3ImYWI/ZHJlamc/ZXZsZT9vcz91aD9cdTAwZTZiP1x1MDBmOHM/P3R0YWxzPz8/biZhJmcmYXY/b2tzc21hbj9cdTAwZTV2Pz9qbGlzP29yP3ImZz9yZXY/Pz9lJmQmZG8mc2VuP3Rvbj8/bGFoP3ImYWd5Jm8/XHUwMGY4Pz9vamZzYW0/Pz9nJmlldHM/biZhJmwmYXM/bGFiPz9uJmF2az9cdTAwZTZ2az8/dCZhcmc/ZGRvc2VuPz92JmFsP2Vzc292Pz8/aSZkJm9sP1x1MDBmOGw/P2wmYXI/XHUwMGU2cj8/P3lsPz9yZWI/P2lrcz9rJnNyb3Q/eSZvcj9cdTAwZjhyPz8/bCZhJmQmZ25vcz9uJmVyP29qbT9cdTAwZjhqbT8/b20/P3Rsb2g/P3VnP1x1MDBlNXRsb2g/P21tYXJkP29qcyZvbT9zZW5kbmFzPz9wcG9sZz9zJmxhaHNsYWRyJm9qdHM/XHUwMGY4anRzPz9vPz90Jm8mbD90LWVydHMmZXY/bz9cdTAwZjg/Pz9yb2g/XHUwMGY4bD8/dmx5JmtreXM/bmF2Pz95YW0tbmFqIS5zZz8/XHUwMGY4anMmb20/c2VuZG5hcz8/P2cmb3JmP3VqYj8/aSZkbmFvcnQ/dm5hcmc/P2tvYj9sYWRlbmR1YT9tYWhlcmsmYT9cdTAwZTU/P24maXQ/dXJnc3JvcD8/b3JmLSZkcm9uP3Imb3M/XHUwMGY4cz8/P3ImYWllYj9ldmF0cz8/c2Zldj91YWtzP3lydHM/P28mNmF4aS15Z3Z0c2V2LS1ueD9jLGQmb2I/cmF2Pz9pZXZzP2tzc291Zj9sJm0mb2I/XHUwMGY4Yj8/b3VzJmFkbmE/ZWNoJmFjP1x1MDBlMVx1MDEwZD8/P3NvIS5zZz8/P21zZGVrcz9uaWVrb3R1YWs/ciZlZ2Fyaz9vbGY/eSZvc28/XHUwMGY4c28/Pz9zJmRhdj9tb3J0Pz8/cCZlZD9vaHNkYWVycHN5bSxwJmFrZHJvbj9lbGs/Pz9yJmEmZCZkaiZhYj9cdTAwZTFiPz9pYWI/P2p0aWY/bHVhZz9tYWg/dnN5dD8/ZSZnbiZhJmsmaWVsP3JvPz9tZXJiP24mYXQ/bWFzPz9yYXYtciZvcz9cdTAwZjhzPz9zcm9wP3RhbGY/diZhdHM/ZWw/P3kmb2g/XHUwMGY4aD8/P2l2c2dub2s/P2lsP2prbmlldHM/ayZhJm52ZWo/cmVtP3MmZ25pcj9uZWxsdT8/P2llLWVyJmRlbj92Jm8/XHUwMGY4Pz8/cmFtP3NhP1x1MDBlNXJlbT8/bGEmamY/dmg/P20mYiZhaD9cdTAwZTFoPz9tYWhlbGxpbD8/bm51bD90cyZsJm9qP1x1MDBmOGo/P3VsPz95Jm8/XHUwMGY4Pz8/aW1wJmFoP1x1MDBlMWg/P20hLnNnPz9vc2lyP3QhLnNnPz9cdTAwZTFkaVx1MDBlMWI/XHUwMGU2dnN5dD9cdTAwZjhzaXI/P3MmYWRuaWw/ZW4mZG5hcz9lJmRnYT9rJnJpJmI/az8/c29tPz92ZT8/bWUmaD9qZz8/bnJvaC1nby1lanZlP3MmYT9lZG5pbD9rJm8/XHUwMGY4Pz9vZj95dD9cdTAwZTU/P3RzZXY/P2d2P2hmP2lnYXZhbD9vJnImb3I/XHUwMGY4cj8/c21hbj8/c28mZmVuJm9oP1x1MDBmOGg/P20/dj8/dWgmbGVtP3NyZWthLnNlbj8/XHUwMGU1IWRuaWw/Pz90JmEmYmFvbD9nJmFvdj9ncmF2Pz9qanImYXYtYXR0YW0/XHUwMGUxdi1hdHRcdTAwZTFtPz9sJmEmYj9zPz9cdTAwZTFzPz9zb3VtP3RzP3YmZWliP291cj8/P2UmZG5hbHkmb2g/XHUwMGY4aD8/Zj9zJm55dD9yb2tvbXNkZWtzP3Nlbj8/dnRwaWtzPz9pbiZha3M/XHUwMGUxa3M/P2xvaCZhcj9cdTAwZTVyPz9uIS5zZz8/b20mYT9cdTAwZTU/P3MhLnNnP2VmcmVtbWFoP29yP1x1MDBmOHI/P3RlcmRpP1x1MDBlMSZiYW9sP2dnclx1MDBlMXY/bFx1MDBlMSZiP3M/P3NvdW0/dmVpYj8/P3UmYiEuc2c/YWxrP2UmZG5hP2duaXI/bm5lcj8/bGVzP1x1MDBlNmxrPz9kcmEmYj9lYj8/ZyZuYXNyb3A/dmk/XHUwMTRiXHUwMGUxc3JvcD8/aiZkYWVoYWwmYT9cdTAwZTE/P2plZHViP3YmYXJla2toYXI/XHUwMGUxcmVra2hcdTAwZTFyPz8/a3Npb3VmP24mZGlhZWdhZHZvdWc/dGFlZD8/P3YmaXJwP2xlc2wmYW0/XHUwMGU1bT8/P3kmYiZlc3Nlbj9uYXJ0P3NlYmVsP3RzZXY/P28mZCZhcj9uYSFzPz9vcj8/Z2F2dHNldj9rc2E/bGVtP21yYWs/biZhcnQ/biZpZj9vcmI/Pz9yJmEmbWFoP24/dj8/ZSZkbmk/dCZzbz90b24/P3ZhPz91bD95ZD8/cyZhbT9lbm5lcj9nYXY/bHJhaz90aXZrPz92cmVqa3M/P1x1MDBmOCZkJmFyP25hIXM/P1x1MDBmOHI/P2dcdTAwZTV2dHNldj9rc2E/bGVtP21yYWs/biZhcnQ/biZpZj9cdTAwZjhyYj8/P3ImZSZkbmk/dCZzbz90XHUwMGY4bj8/dmE/P3VsP3lkP1x1MDBlNiZuP3Y/Pz9zJmVubmVyP2dcdTAwZTV2P3Rpdms/XHUwMGU1bT8/dnJlamtzPz8/XHUwMGUxJnNsXHUwMGUxZz90bFx1MDBlMT92cmVpa3M/P1x1MDBlNSZnXHUwMGU1dj9oP2pkZFx1MDBlNWRcdTAwZTViP2xmPz9cdTAwZjgmZCZvYj9yYXY/P3ImZWdhcms/b2xmPz9zJmRhdj9tb3J0Pz8/P2FraT9pJnNhYz90YWw/P3U/P28mYj9mP2hheT9vP3R0YXQ/P3IhLiZjZXI/ZXJvdHM/Z3JvP20mbyZjP24/P3JpZj90Pz9vJmMsZm5pPz9wb2hzLHN0cmE/dG4/d3d3P3lzcmFiLD9lJmEhLiZhJmFjP2NnZD9pZGVtPz9idWxjIW9yZWE/P2NpJmZmYXJ0cmlhP3RhYm9yZWE/P2UmYyZhbHB0ZWtyYW0/biZhJmwmbGlldnJ1cy1yaWE/dWJtYT8/bmV0bmlhbT9ydXNuaT8/ZXJlZm5vYz8/P2duYWhjeGU/bW9yZG9yZWE/bmkmZ25lP2xyaWE/emFnYW0/P3Jhd3Rmb3M/P2duaSZkJmFydD9pbGchYXJhcD9nbmFoPz8/bCZkbmFoZG51b3JnP2xlZG9tPz9ub29sbGFiP3JldGFjP3NhZWw/dCZsdXNub2M/dWhjYXJhcD8/dmlkeWtzPz9oY3JhZXNlcj9peGF0P2wmYW5ydW9qP2V1Zj9pY251b2M/b3J0bm9jIS1jaWZmYXJ0LXJpYT8/P24mZ2lzZWQ/b2kmbnU/dCZhJmNpZml0cmVjP2VyY2VyP2dpJnRzZXZuaS10bmVkaWNjYT92YW4/P2kmY29zc2EhLXJlZ25lc3NhcD8/dmFsaXZpYz8/cmVkZWY/P2N1ZG9ycD9uZXZlcnAtdG5lZGljY2E/Pz8/b2dyYWM/cCZpaHNub2lwbWFoYz91b3JnIWduaWtyb3c/Pz9yJmUmZGFydD9lbmlnbmU/a29yYj9uaWFydD90cmFoYz8/byZodHVhP3RhY3VkZT8/P3MmY2l0c2lnb2w/ZSZjaXZyZXM/cj8/a3Jvdz9zZXJwIXhlPz90bmVnYT8/dCZmYXJjciZpYT9vdG9yPz9oZ2kmZXJmP2wmZj9vcmNpbT8/P2xpdWJlbW9oP24mYXRsdXNub2M/ZSZkdXRzP20mbiZpYXRyZXRuZT9yZXZvZz8/cGl1cWU/Pz8/b2xpcD9yb3ByaWE/c2kmbGFucnVvaj90bmVpY3M/Pz93JmVyYz9vaHM/P3kmY25lZ3JlbWU/ZG9icGVyP3RlZmFzPz8/P3JyZWY/ej8/cCEuJmEmYWE/Y2E/cGM/P2NpdGVuZWVrLGRlbT9nbmU/a29yZ24sciZhYj91aj8/c25kdW9sYyx0JmFjb3ZhP2NjYT9oY2VyPz93YWw/eXNyYWIsPz8/cyEuJmVtP2dybz9tb2M/c3lldnJ1cyx0ZW4/dWRlP3ZvZz8/P3QhLiYweCwxMTYsYXlvLGdybz9saW0/bW9jP3N1bHBucHYsdCZjZW5ub2NrY2l1cS50Y2VyaWQsZW4/dGVuLD91ZGU/dm9nPz9vJmhwP20/dj95az8/dG9sP3VhPz92Jml2P2xvdj8/eGFzP3lrb3Q/P3AmYSZlaGM/Zz9tP3M/P2Vlaj9nIS4mZ3JvP2lib20/bW9jP29zc2E/dGVuP3VkZT8/P2kmciEubmFsYyw/diEuc25kaWgsP3o/P2ohLiYwJmcwLGowLG8wbyx0MCw/YSYzJjV4cTZmLS1ueD94cWkwb3N0bi0tbng/PzV3dGI2LS1ueD84NXV3dXUtLW54Pzl4dGxrLS1ueD9hZCxiJmF0cyxpaGMhLiZhJmJpaGNpYWtveT9kb24/bWEmaGltP3llJnJhZ2FuP3RhdD8/P3ImYSZib20/Z2FuP2hpaGNpPz91JmFnZWRvcz9rYXM/dXN0YWs/Pz9zJm9zP3Vmb21paHM/P3QmYW1paGNheT9pcmFuPz93JmEmZyZpbSZhbmFoP28/P29tYWs/P2tpaGNpP3p1c3R1bT8/aWhzYWs/P3kmYWdhbWFrP2ltb25paGNpPz8/ZSZha2FzP25hZ290Pz9pJmF6bmk/ZXNvaGM/aCZhc2E/cyZhYmFudWY/b2hjPz8/a2EmdG8/em9rPz9tdXNpP29yaWhzP3ImYWtpaGFiaWhzb2tveT9vJmRpbT90YWs/P3VrdWp1az8/dXNpaHM/P25hbm8maGM/eWs/P28mZCZpYWt1c3RveT91c3RhbT8/aHNvbmhvdD9rJmEmcmlocz90Pz9pYmE/P25paHNhcmFuP3NvYmltYW5pbT90YXMmYXJpaHNpbWFvP2ltb3Q/P3VoYz95aWhjYXk/P3Uma3Vqbm8/cyZheWFydT90JmltaWs/dHVmPz8/emFyYXNpaz8/Pz8/YyZjYWgsZWQsP2cmYXMhLiZhJmdhcz9tJmEmdGFtYWg/eWlrPz9paHNhaz8/cmF0P3QmYSZnYXRpaz9oYXRpaz8/aXJhIWloc2luPz8/P2Uma2FpcmE/bmltaW1haz8/aSZha25lZz9nJmFydXlrP28/P2gmYyZhbW8/dW8/P3Npb3JpaHM/P2them5haz9tb2R1a3VmP3JhJmdvbmloc295P21pPz8/bmV6aWg/dSZrJmF0P29odW9rPz9zJm90P3RhcmFrPz8/Pz9paHMhLiZhJmtvaz9tJmEmaGFnYW4/eWlyb20/P2loc2FrYXQ/P3JhYmlhbT93YWdvdG9uPz9lJm1paGFyb3Q/bm9raWg/P2hvdXlyP2kmYXphaWhzaW4/ZXNvaz9rdXN0YWthdD9tb2loc2FnaWg/P25hJm1paGNhaGltbz9ub2s/P28maHNpYT9tYWc/dCZhc295b3Q/b2s/dGlyPz8/dXMmYXk/dCZhc3VrP28/Pz8/Pz9rJmFzbyEuJmEmZCZhd2loc2lrP2VraT8/ayZhJm5veW90P3MmYWthYXlhaGloYz9vaWhzYWdpaD8/P29hZGF0P3V6aWFrPz9tJmF5YXMhYWthc28/P29kYWs/P3ImYSZidXN0YW0/d2loc2FrPz9lZGlpanVmPz90JmFrYXJpaD9pJms/dXM/Pz93YWcmYXllbj9vZG95aWhzYWdpaD8/P2Umc29uP3Rhd2Fub2ppaHM/P2hvbmltP2kmYWthcz9oJmN1Z2lyb20/cyZheWFiYWRub3Q/aSZhJmthdD90Pz9uPz9veWltdXNpaHNhZ2loPz8/ayZhJnJhYmk/c2ltPz91c3Rha2F0Pz9tdXppP3ImaWphdD9vdGFtdWs/Pz9uYW4mYWs/biZhaD9lcz8/P28mYXk/biZhJmdhbmloY2F3YWs/c2ltdXppP3Rhaz8/ZWJhP2lraWJhaD9veW90Pz90JmFuaW0/aWFkP29tYW1paHM/P3VoYz8/dXN0Jm9pbXV6aT90ZXM/Pz8/b3Uma3VmIS4mYSZkJmFtYXk/ZW9zPz9nJm5vP29rP3VzYWs/P2hpa3U/ayZhd2F5aW0/dXppaT8/bWEma2FuP3kmYXNpaD9pbT8/P3Jhd2FrP3QmYSZnb24/a2EmaD9udW0/dD8/P3Vtbz8/d2EmZyZhJmthbj9uYXk/dD8/aWFzPz9rbyFyaWg/Pz95Jmloc2E/dXNhaz8/P2UmbSZheT91cnVrPz90YXJ1az91cz8/aSZhJm5vaHM/cmFpaGNhdD8/Z29ydWs/aCZjdWt1Zj9zJmEmZ2loP2h1a3V5Pz9pbj8/P2smYSZnYWtvP211emltPz9pdXN0P28/dXN0YW5pPz9tJmFuaW0/b3RpaHNveW5paHM/dT8/ciZvZ28/dWdhc2FzPz91c3U/P25lJnNpZWs/enUmYj9raWhjPz8/byZndWtpaGM/aCZhaz9vdD91a2loYz8/aiZvbm8/dWtpaGM/P2theWltP25paHN1a2loYz90bz91aGM/P3UmZmlhemFkP2duaWhzP3N0b3lvdD8/Pz96aWhzIS4mYSZibWV0b2c/ZCZhbWlocz9laWp1Zj9paHNveT9vbWlocz8/a291emlocz9taWhzaW0/cmEmYmlhaD9ob25pa2FtPz90YXdpP3dhJmcmZWthaz91a2lrPz9raWp1Zj8/eWltb25panVmPz9pJmEmcmE/c29rPz9oY2FtaXJvbT9qdWY/a2F6JmVhbW8/dXN0YW0/P21hJm5uYWs/dGE/P251a29udXppP29ydWt1Zj8/bm9oZW5hd2FrP28mbm9zdXM/dGk/P3Umc3RhbWFtYWg/eiZhJm11bj93YWs/P2khYXk/aSZocyZhZ2loP2luPz9tYW5pbT8/bWlocz8/Pz8/Pz8/bSZhJnRpYXMhLiZhJmQmaWhzb3k/b3Q/dXNhaD8/ayZhJmRpaD9zYT8/byZhcmlocz9zPz8/bSZhJnRpYXM/eSZhcz9vJnJvbT90YWg/P3VzdGFtaWhzYWdpaD8/P2kmaHNhZ3VydXN0P2phd2FrPz91cmk/P25pP3dhJmcmZSZrbz9tYW4/P2lrb3Q/bz8/ayZhcmE/aSZoc295P21haz8/P3J1P3pvcm9rb3Q/P3kmYSZnJmFtdWs/aWhzb2s/b3RhaD8/a3VmPz9pbW8/P3ppaW4/P2UmYmFrdXNhaz9vZ2F3YWs/c29nbz90dGFzP3pva295Pz9pJmJhcmF3P2gmY3VnYXdhaz9zJm95aW0/dWJ1c3RhbT8/P2lyb3k/ayZhdG8/aWhzP3Umaz9zdGF3aT8/P20mYWtveXI/aSZoc295P2p1Zj8/dXppaW1haz8/P25hem5hcj9vJmRha2FzP2loc2F5P2pub2g/biZhJmdvP25pbT8/aW1panVmP25haD9veT8/ciZpaHNheWltP290YWdhbj8/dCZhc2ltIWFrPz9pZ3VzP29tYXRpaz8/emFrPz91JmJpaGNpaGMhaWhzYWdpaD8/c29udW9rP3luYWg/Pz8/eSZhayZhdyEuJmEmZCZpcmE/bm90aW1haz8/a2FkaWg/bWEmaCZhcmlocz9pbT8/eSZhJmthdz90aWs/P29kdWs/Pz9ydSZ1c3Rha2loY2FuP3k/P3NhdXk/d2EmZyZhJmRpcmE/em9rPz9vcmloPz9rb25paz8/eW9rP3pvaz8/ZSZiYW5hdD9kYXdpPz9pJmdhcnVzdGFrP2ppYXQ/bWFuaT8/bmFuaWFrP28mYm9nP25pbWlrP3QmYXNpbT9vbWlocyZhaD91az8/Pz91Z25paHM/Pz9vIS4mYSZqb3M/a29hc2FrP20mYXkmYWtvP3VzdD8/aWhzYXlhaD8/ciZhYmk/dWthd2FpaHNpbj8/d2kmYWthP25hbT8/P2UmZ2FrYXk/a2F3Pz9pJmdhbj9oJmN1Jmthc2E/b3Rlcz8/c2FoYWthdD8/ayZhc2ltP2loc2FydWs/P21paW4/P24mYW5lbXVrP2V6aWI/P28maHNvdGFzP2puaWhzP24mYW1hdD9pbWFnYWs/P29ocz91aGNpYmlrPz8/Pz9vdCEuJmEmZGFtYXk/Z290P2tvYWthdD9tYXkmZXRhdD9vdD8/bmFob2o/cmlhdD93YWtpJmluYWthbj9yZW1hbj8/P2ViJmF5bz9vcnVrPz9pJmgmYXNhP2NpaW1haz9zYWhhbnVmPz9rdXphbnU/bSZhbiZpP290Pz9paD8/P25lenV5bj9vdG5hbj91JmhjdWY/c3RpbXVrdWY/eiZpbWk/b3U/Pz8/Pz8/aWhzJm8mZ2FrIS4mYSZtJmF5dW9rP2loc29nYWs/P3NpP3lvbmFrPz9lJmJhbmF3YWs/biZhdCZha2FuP2ltYW5pbT8/dWthPz90b21vb25paHNpbj8/aSZhZG5lc2FtdXN0YXM/ayZhemFydWthbT9vaWg/P20mYW1hP3V6aT8/dXN1eT8/bmVzaT9vJmtuaWs/b3M/dG9tdXN0YW0/P3V6aW11cmF0Pz8/cmloIS4mYSZrYSZuP3M/P20mYXl1a3VmP2kmaHNvcmloaWhzYWdpaD9qJmF0ZT9pbWFraWthc28/Pz8/ciZhJmJvaHM/aCZla2F0P2ltPz8/ZXM/P3RpYWs/d2lhZD8/ZSZrYXRvP3J1az8/aSZoJmNpJmFrdXN0YWg/bW9ubz9uaWhzPz9zJmluYXJlcz9veWltPz8/bWFuaW1hc2E/dWs/P25lZ29raWtlc25paj9vJmdub2g/bmFtdWs/P3VoY3VmPz8/P3VrJm90IS4mYSZiaWhjaT9taSZoc3Uma290P3N0YW1vaz8/bT8/d2FnYWthbj8/ZWdpaHN1c3RhbT9pJmd1bT9oJmNvZ2FuYXM/c295aW0/P2tpamF3P20mYW5pbT91emlhPz91a2loc2locz8/bmFuJmE/aWFrPz9vJm5hdGk/dHVyYW4/Pz8/dWYhLiZhJmJhdHVmP20mYSZ0bz95JmVuYWs/aXJvaz8/P2locyZpbT91a3VmPz9vcz91a28/P3ImYWJvaWhzYXRpaz91Z2FuYXQ/P3RhJmthdGlrP21hd2FrP3JpaD8/dyZhJmcmYWt1cz9lbWFzP3V5Pz9rJmEmbWF0P3JpaHM/c2E/P2loc2k/P25haD8/b2hzPz8/ZSZnbmFidXppYT9pbWFuP3RhJmQ/dGlpPz8/aSZhZG5hYj9lbmV0P2hzJmFnaWg/aWltYWdhaz8/ayZhJndpP3ppbXV6aT8/dWJheT8/bWludWs/ciZvb2s/dXN0YW1heT8/P25paHNpYXQ/byZnJmV0b21vP2loc2luP25hbj9vbWlocz8/bm8hZHVydWY/cmloPz9yaWhzYXdhbmk/dGEmbWF5P3NpbXV6aWE/Pz91JnJhaGltP3N0YW1ha2F3dXppYT96aWEmaWhzaW4/bmF5Pz8/Pz8/P251ZyEuJmEmYmF3YWs/ZG95aWhjP2smYW5uYT9vaSZoc295P2p1Zj9tb3Q/Pz9tJmF5YWthdD91c3RhZ2FpaHNhZ2loPz9uJmloc2F0YWs/bmFrPz9yJmFob25hZ2FuP25haz9vP3Uma2F0aT9tYW1hdD8/P3QmYW11bj9pbm9taWhzP28/P3cmYWt1Ymlocz9pZW0/b2hzPz8/aSZoc2EmYmVhbT95YWJldGF0Pz9rYXMmYWthdD9lc2k/P20mYWthbmltP3V6aW8/P29nYW11c3Q/cm9kaW0/P28mam9uYWthbj9uJmV1P295aWt1c3Q/P3RuaWhzPz91JmtvbW5hbj9zdGFzdWs/eXJpaz8/Pz9yZXAsP24maWJtYWIsbm9nLG9iLD9wcGFjaWhjLHJhJm4hLiZhJmJpaHNhaz9kJmFrYXRvdGFtYXk/dSFvPz8/Z3VyYWtpP20mYXkmYXRpayZpbWFrP29taWhzPz9pcm9rb3RhbWF5Pz9va2k/P3JhJmhpaHNhaz9uPz93YSZnZXNvbj9rbmV0Pz8/ZSZrYXlpbT9vemFtYXk/c29nP3VzdGltPz9pJmEmcnVrYXM/d2FrPz9nYXJ1c3Rhaz9oJmNpb21paHM/c2luYXdhaz8/am8/a2EmbW5haz90b3J1az8/bWFrYXdhaz9ub3M/ciZuZXQ/b3Rha2F0P3VnZWg/Pz9vJmQmbmE/b3lvPz9nbmFzP2puaWhzP25paHNveSFpaHNhZ2loPz90b21hcmF3YXQ/eXJvaz8/Pz9yaWtpayw/dCZhZyZhbWF5IS4mYSZkaWhzaW8/ayZhdGFyaWhzP291cnVzdD8/bWF5JmEma2FuP3J1bT8/ZW5haz9vbmltYWs/P3J1a2hvP3RhJmdhJm1heT9udWY/P2hha2F0P2thcz8/d2EmZyZla2FzP29ydW1hbT8/a2kmaHNpbj9tPz96JmFuYWJvP2Vub3k/b3Q/Pz96dXk/P2UmYWdhcz9ib25hbWF5P2RpaT9uaWhzYWdpaD9vPz9pJmEmZ2FuP25vaHM/P2gmYXNhP3NpbmF3YWs/P251Z28/P28mZG5ldD9qbmlocz95bmFuPz91a29oYWs/Pz9paW4hLiZhJmdhP2smaXVtP29hZ2FuPz9tdW5vdSFpbWFuaW0/P3QmYSZiaWhzP2dpaW4/P2lveT8/dyZhJmdpb3RpP2tpa2VzP3p1eT8/aXJhaz8/eWlqbz8/ZSZrdXN0aW0/bWFidXN0Pz9pJmFuaWF0P2hjYW1ha290P2theiZhd2loc2FrP29tdXppPz9tJmEmZ2F0P2thcnVtPz9vPz8/biZhbnVzdD9lc29nPz9vJmRhcz9paGNvdD9qbmFzP2smaWhheT9veW0/P21haz9uYWdhP3JpZXM/P3Umb3JpZXM/c3Rlb2o/Pz8/P2kmayZhIS4mYSZnbz9rJmFzb2s/b2ltYWs/P3QmYWdvIXJpaGNhaD8/aWthIWF0aWs/Pz93JmFraT9veWs/Pz9lJm1vam9nP25hdGltP3N1cmFuaWhzYWdpaD90JmFkbz9va295Pz8/aSZoc295aXJvbT9tYWdhdGFrP25hb2tpbWFrPz9uZXNpYWQ/byZoYWtpbj9qbm9oIWlydXk/P251emFrP3JpaHNvbj90YXNpJmp1Zj9tPz95am5vaD8/dSZrb2JtZXM/b3BwYWg/Pz8/aW4sP28hLiZhJmRha2F0b2dudWI/bSZhc2FoP2loc2VtaWg/P3N1P3QmZWthdD9pJmg/bz8/Pz9lJm9ub2tvaz91c3RpbWFrPz9pJmppaD9rJmFzaW51az9pYXM/dXN1Pz9tdWt1c3Q/P29ub29nbnViP3UmZnV5P2p1az9wcGViP3N1az8/Pz8/bmF5biw/d2EmZ2EmayEuJmEmbWloc29hbj9yaWhvdG9rP3dhZ2Ema2loc2FnaWg/eWE/Pz9lbWFndXJhbT9pJmombm9uYWs/dXN0bmV6Pz9rdW5hcz9tb25paGN1Pz9vJmhzb25vdD9ubmFtP3lvdGltPz91JnN0JmFtYWthdD9vZGF0Pz96YXR1Pz8/P25hayEuJmEmZHVzdGFtP2t1cyZva295P3RhcmloPz9tYXo/bmliZT9yJmEmZ2loc2FpbWFuaW0/aCZlc2k/aW1hZ2FzPz93YSZkbz9ndXk/Pz91JmltP2thbWFrPz8/dGlrYW1heT93YSZrJmlhP295aWs/dW1hcz8/c2lqdWY/P3lpbW9uaW4/P2Umbm9rYWg/c2F5YT8/aSZha2FuP2VzaWFrP2d1c3RhP2hzdXo/a2FzYWdpaGM/bz91a3VzdD8/byZuYWRhaD9zaW8/dGFtYXk/Pz8/P2tpaHNpIS4mYSZkYW5paGN1P2dhaz9raWhzP21pamF3P3QmYWJ1c3Q/aWthd2FrPz93YXphbmFrPz9pJmd1cnVzdD9oY2lvbm9uP21vbj91a2FoPz9uYXN1a2FoP28mYW5hbj90b24hYWthbj8/P3Uma29oYWs/c3RhbW9rP3omaW1hbmE/dXM/Pz8/P25pa28hLiZhJmhhbj9tJmFyYXQ/aWplbXVrP3VydT8/biZlJmRhaz96aT8/bm8/P3JhJmhpaHNpbj9yaWg/P3dhJmtpaHNpP25pa28/P3llaGk/em9uaWc/P2Umb3NhcnU/c2VheT8/aSZoc2FnaWg/am9taWhzP2smYSZnaWhzaT9ub3Q/P2loc2Frb3Q/P20mYSZnaW51az9raWhzdWc/bWF6Pz9pZ28/b3Rla2F0Pz9udWdhIW5veT8/P24mYSZtb3RpP3RpbW95P3dvbmlnPz9pJmppa2FuP2s/Pz9vJmdhbj9qbmFuP3RpYWQmYXRpaz9pbWFuaW0/Pz91JmJvdG9tP2t1c3VnJmFrYW4hYXRpaz8/aW1vdD8/cmFiJmFub3k/ZWFoPz8/Pz8/eXAsem9taW0sP2J1cyxjJjIwNHVndi0tbng/NDYyYTB0Ny0tbng/Njc4ejd2cTVkLS1ueD85NHB0cjUtLW54P2E/bXBvcGlsb2wsP2QmLTIsMTdzcWwxLS1ueD8zdGhyLS1ueD81JjIweGJ6LS1ueD80MHNqNS0tbng/PzcmODd0bGstLW54P3B0bGstLW54Pz84NjF0aTQtLW54P2E/ZSF0ZmFyY2RuYWgsP24mZWlyZiZscmlnLHlvYiw/b20sP29vZnRhYyw/ZSYxNnRoci0tbng/NSYxYTRtMi0tbng/OW55N2stLW54Pz9kYW15ZGFlcixld2VlcCxnYXJvdHNhcnVrYXMuJjEwa3NpLjNzLDIwa3NpLjNzLD9pJmJtb3osbSEuJmEmYm90P2smYXN1c3RhbT91enVzPz9tJmEmaGltP3kmZW1haz9pbT8/P2locz8/bmF3dWs/d2kmZW0/az8/P2UmYmFuaT9vZ2F3YWs/c2khaW1hbmltPz8/aSZhcmF0YXc/Z3VzaW0/aCZhc2E/Y2lha2tveT8/ayZhJm1hdD9zb3Npaz90Pz9pYXQ/P3JhYmFuPz9vJmRhdD9oaWs/biZhbXVrP2loc2VydT9vJmR1P21vaz8/Pz91c3Q/Pz8/a2lsYmV3LGxhc3JlcHVzLG1paGUhLiZhJm0mYSZoJmF0YXdheT9paW4/P3l1c3RhbT8/aWomYXd1P2ltYWs/Pz90YWtpIW1hbj8/P2Vib3Q/aSZhbm9oP2thc2FtP3JhYmFtaT8/biZhbmlhP2Vnb2thbXVrP29vdD8/byZqaWFzP2tpaGN1P251c3RhbT91aGN1a29raWhzP3lpIWVzPz8/dSZrb2hpaz96bz8/Pz9uIS4mYXJ1a2FzLGxhcG8sbiZlcnVrb20scmloZWcsP29tb211cyxzdG5pbSx0ZW5pZXNhLnJlc3UseG9iLWxpYW0seXJvdmksemFwb3QsP2FtaWhzIS4mYSZkJmFtYWg/aG8/dXNhbT8/a3VzdGF5P20mYT9paHNvbmkmaHNpbj9rbz8/P3dha2loPz9lJm5hbWlocz91c3RhbT8/aSZnJmFrYT91c2F5Pz9rb25pa2FrP21pa2loPz9uYW5udT9vJm11JmtheT96aSFpaHNhZ2loP3Vrbz8/P25hd3VzdD90YXNpbT8/dSZzdG9nP3lhbWF0Pz8/P25lcCw/cm90c25vaWhzYWYsc3Jldix0JmF3aSEuJmEmYmFoYXk/ZCZhbWF5P29uPz9rb2lyb20/dCZhJmhvbmF0P2thdG5lenVraXI/P2ltdXM/P3cmYXMmaWp1Zj91emltPz9paHM/Pz9lJmhvbiZpJmhjaT9uPz91az8/dGF3aT8/aSZhJmR1Zj9tdXJhaz93YWs/P2gmY3VzdG8/c2kmYW1haz91a3V6aWhzPz8/aiZvYm9qP3VrPz9rJmEmbSZhbmFoP3V6dWs/P3NhZ2VuYWs/P2Vzb25paGNpPz9tJmFrYXRpaz91emlhJnJpaD93aT8/Pz9vJmtheWltP25vJnJpaD90Pz90YW51Zm8/P3Voc28/Pz9pc2FyYXAsc2FtYW4sdG9jb2MsP3VsYnliYWIsP2cmM3pzaXUtLW54PzcxcXN0bi0tbng/ancsbD9vbGImYW5ldGFoLGxvb2MsPz9oJjAzcHYyMy0tbng/MTN5bnItLW54PzIydHNpdS0tbng/NjFxcWxlLS1ueD9vLWh1LHN1bGIsP2kmNTR1cmttLS1ueD9hem9zYmV3LGNlZCxnJmF5aW0hLiZhJmR1a2FrP20mYSZnb2locz9raWhzPz9paHN1c3RhbSFpaHNhZ2loPz91bmF3aT8/ciZhd2Fnbz9paG8/P3RhJmJpaHM/cnVtPz93JmEmZ2Fubz9rdXJ1Zj8/aWF0Pz95Jmltb3Q/dWthdz8/P2UmbW90P25pbWVzPz9pJmhzaW9yaWhzP2thJm1vbmloc2k/cyZhd2FrP28/Pz9tYWs/ciZhdGF3P28mbXVyYW0/dGFuPz8/P28mYXo/amFnYXQ/dCZhc2ltP29tYW1heT8/P3UmZmlyP2smaXJuYXNpbWFuaW0/dWhzYWtpaGNpaHM/Pz8/P2loY290IS4mYSZnJmEmaD9raWhzYT8/dXN0Pz9rb20/bSZheSZvP3VzYXJhaz8/dW5haz8/ciZhJmJvaWhzdXNhbj93YXRobz8/aWhvP3VrYXM/P3QmYWtpaHNpbj9pYXk/P3dhJmtvbmltYWs/emVuYWthdD8/eSZpbW9udXN0dT9vaWhzPz8/ZSZpaWp1P2t1c3RvbWlocz9udWZhd2k/P2kmYWtpaGNpP2cmZXRvbT9paGNvdD9vbj8/P28mayZpaHNhbT9raW4/P25hcz9zaW9ydWs/dGFiPz91JmJpbT9zYW4/Pz8/P2gmYyZpYSEuJmEmZG5haD9tJmEhaCZha2F0P2ltPz95dW5pPz9paHMmaWJvdD91c3Q/Pz9yJmEmaGF0P3RpaHM/P2lrP3UmaWhzYWdpaD9rYXdpPz8/dCZpaGM/byZrP3lvdD8/P3dhJmtveW90P3phbmk/P3lpJm1vbmloY2k/cmFrPz8/ZSZpbmFrP2smYW95b3Q/dXNhPz9tYW5va290P25veW90Pz9pJmEmZ3VzYWs/a290P3NpYT8/ZW90P2gmYXNhaXJhd28/Y3Vnbz9zJmFob3lvdD9veWltPz8/ayZhJm1vaz96YWtvPz9paHNzaT8/bW90YXk/cm9nYW1hZz8/biZhbiZpa2VoP29rPz9paHNzaW4/P28mZ290P2loc2luP2puYT9yaWhzbmlocz9zdWY/dGVzPz91JmJvP3JhaG8/cyZveWlrP3Rha2locz8/eXJpaGM/emFoPz8/P29rIS4mYSZkdXNheT9rYWRpaD9tYXlvdG9tP3ImYWgmaW0/dXN1eT8/dW1ha2FuPz9zb3QhaWhzaW4/P3dhJmcmYXRpaz9vZG95aW4/P2smYXM/bz8/Pz9pJmVzaWVnP2hjbyFrPz9qYW11P2smYSFzdXM/P3VzdG8/P21hJmdhaz9rPz9yYWhhbj8/byZtdWt1cz9uJmk/dXN0IWloc2FnaWg/Pz90b3J1bT95b3Qhbz8/P3Uma29rbmFuP3ppbWloc2Fzb3Q/Pz8/dWdhbWF5IS4mYSZtJmF5dWtvdD9paHNvPz90b3lvdD8/ZSZidT9zdWJhdD8/aSZnYWg/a2Vzb25vbWlocz9udWthd2k/cmFraWg/P25hbnVocz9vdGFnYW4/dSZiYT9mb2g/b3RpbT9zdGFtYWR1az91eT8/Pz8/cyZhbmFtYXkhLiZhJmRpaHNveWlqdWY/bWF5YWJhdD9yJmFob25ldT91c3Rha2loc2luPz93JmEmayZheWFoP2lqdWY/P3N1cmFuPz9vaHM/Pz9lZ3Vzb2s/aSZhaz9oJmNpbWFrYW4/cyZhbmFtYXk/b2Q/Pz9rJmFzYXJpbj91JmZldWY/c3RvPz8/P28mayZha2FuYW1heT9paGN1Z2F3YWtpanVmPz9uaWhzbz90JmFzaW1hd2FraWhjaT91a29oPz91aGM/P3NwbGEtaW1hbmltP3UmYiZuYW4/b25pbT8/Zm9rP2hzb2s/cnVzdD8/Pz91Ym9uLD8/aXgsa2EmcmFiaSEuJmEmYnVrdXN0P2dvaz9rYW4haWhjYXRpaD8/bSZhJnNhaz90aW1vP3dpPz9paHNhaz91c3RvbWlocz8/bmk/ciZhJmhpaGN1P3dheT8/dSZhZ2ltdXNhaz9paGN1c3Q/Pz90JmFnJmFtYXk/ZW1hbj8/b2loY2F0aWg/P3cmYWcmYXJ1a2FzP28/P29zPz95aSZtb2loY2F0aWg/cm9tPz8/ZSZib21vdD9kaXJvdD9ub3Q/dGFkb21paHM/P2kmYSZrJmFzP290Pz9yYW8/P2VzdWtpaGM/Z2FoYWthdD9oJmFzYT9jYXRpaD8/ayZhJnJhYmk/c2FndXlyPz9paHNhbmk/dXk/P21hP3J1a3VzdGFtYXQ/P28mZG5hYj9naWFkP2hpbT9rYXRpP3JpaHNpanVmP3Nvaj90JmFzb3JpaHM/aW0/P3lpaGNheT8/dSZmaXVzP2tpaHN1P3NpbWFrPz8/P3NhZ2FuIS4mYSZtJmFibz9paHN1c3Q/P25hdGF3YWs/ciZhYmFtaWhzP3UmbW8/dXN0YW0/Pz93aWppaGM/eWFoYXNpPz9pJmFraWFzP2hpZXM/ayZhc2FnYW4/aT8/bWFzYWg/P25lem51P28mYmVzYXM/ZGFyaWg/dCZlc28/b2chaW1ha25paHM/Pz8/dXN0Jmlnb3Q/b25paGN1az91Zj8/Pz96YXlpbSEuJmEmYmlpaHM/Z3V5aD9rJm9lYm9uP3VzdG9yb20/P21paHN1az9yJmVtaWhzaW4/dWF0aWs/P3RhJmthdGlrP21pbT8/d2FnJmF0aWs/b2Rhaz8/eWE/P2UmYmFuYWthdD9zYWtvZz8/aSZoc2F5YWJvaz9rYXphJmthdD95aW0/P20mYW5pbWF3YWs/b3QmaW51az9uaWhzPz8/P25hbmloY2luP28maiZpaz9vbm9rYXlpbT8/biZpYmU/dXN0Pz90aWFzPz91cmFoYWthdD8/Pz9ybyZjZXAsbW9hIS4mYSZkYXdvdD90dXJ1c3Q/d2FzaW0/P2UmaG9uJmloYyZhaD9paHM/P25hcz9vZz91a29yPz9zYXJpbz8/aSZhbmFyaWg/Z2FuYXlhdGk/aHNpb3J1az9qZWhvbj9rYXNvcmloP21ha2loc2FoP25hd28/ciZhbW9kYWthbj9vbW9hPz8/byZnbmlocz9ra2F0Pz91JnJhZ3VzdD9zdHVtPz8/P3R0b3QhLiZhJnImYWhhd2FrP3VvdG9rPz9zYSZrYXc/c2ltPz8/ZWdvaz9pcm90dG90P25hbmloY2luP28mZ2Fub3k/bmloP3RhbmltaWFrYXM/P3UmYm5hbj96JmF5P2loYz8/Pz8/P3VrdWYhLiZhJmRla2k/Z3VydXN0P21hJmJvP2gmYWthdD9pbT8/eXVzdGFrPz9zYWthdz8/ZWFiYXM/aSZha2FzP2hvP2ppZWhpZT91a3VmPz9uZXppaGNlIWltYW5pbT8/b25vPz8/P2smMjZydGw4LS1ueD80JjNxdHI1LS1ueD95dGpkLS1ueD8/NTIydGluLS1ueD83OTd0aTQtLW54P2NpJmdpZCxodCxzZXZvbCw/ZWUsbGlteWJhYixuJmF0LHVwYXRpbG9sLD8/bCYzM3Vzc3AtLW54P2UmY2NhYmV3LiZyZXN1LHNyLD9sbGFyYXAsP2xpayxvb2YscmlnZXR1Yyw/bSYxMXRxcXEtLW54PzQxczNjLS1ueD9hMCxlZixzaW9nZSw/biYzMHNxbDEtLW54PzY1enFoZS0tbng/YSZlYnlsbGVqLGkmbG9nbm9tLHZpdiw/P2lhbSxuN3A3cXJ0MC0tbng/byZvJmxhcyxtZmxhaCw/cnVrLHN0YXcsPz9vJjEzMXJvdC0tbng/N3FyYmstLW54P2FpYyxjP2QmaWFra29oIS4mYSZkZWtpP2dha2loc2V0P2hjZWJpaHM/ayZhZGloP3UmZmliP25hcmlocz8/P20mYXlpcnVrP2hvdD9paHMmb3JpaGF0aWs/dWt1Zj8/b3Jhcz91c3RhPz9yJmliJmEha2E/P28/dXJ1Zj8/b3pvP3UmZ2FraWhzYWdpaD9veW90Pz8/c2FraW0/dGEmZ2lrdXN0P211bj8/dyZhJmdhJmsmYW4/dWY/P251cyFpbWFrPz8/ayZhcnU/aSZoJmFzYT9zYWdpaD8/a2F0P21haz8/b21paHM/dW0/P3ppbWF3aT8/aW5lP295az8/eW90Pz9lJmEmbXVzdGFtP25hbj8/YiZhJmtpaHM/eWFrPz9vJm5vcm9oP3RvPz8/aWFuP2smaWhzYW0/dWZvdG8/P25ha2FtaT9wcG9rbyFpaHNpbj8/c290aWhjP3RhZCFva2FoPz91b25pa2F0Pz9pJmEmYmliP21va2Ftb3Q/biZhJmsma2F3P29yb2g/P3dpPz9lb21haz9paHNhdHU/b2tpaz91c3RhJm1vcnVrP3Nha2FuPz8/P2VpYj9oJmMmaW95P3UmYm1laz9pcmlocz8/P3MmYXNlP2Vra2E/b2tuYXI/dWVzb20/Pz9qdWZpcmloc2lyP2smYW1hbWlocz9pJmF0P24/Pz9tJmF0aWs/b3RveW90Pz9vYSZraWhzP3JpaHM/P3ImYSZocz9raWhzaT9tb3Q/P2locyZhYmE/aXI/P290YXJpYj8/P24mYSZoY3R1az9yb3J1bT9zZT90b2thaHM/P3ViZXI/P28ma2F5b3Q/bSZpcmU/dWtheT8/bmFydWYhaW1hJms/bmltPz8/b3JpaD9yJmloJmlibz9zdWs/P28mYmFoP2gmaSZiP2hzaW1haz8/c2E/P3BuYW4/eWFuPz91bWVuPz90JmFzb3lpaz9la28/dWtvaD8/P3UmYmFzc2E/a290bmlocz9tJmFzc2F3P3VvPz9wcCZha2lpbj9lbiZpb3RvP251az8/aXA/P3JhdG8/cyZha2F0P3QmZWImZT9pJmE/aHMhYT8/cm9ib24/P20mZT9vJm0/dGFrYW4/Pz9ubyZoP3RhbWFoPz9vJm1paz9zP3Q/P3Uma2lyP3BwaWhjP3N0Pz8/b25paHNuaWhzP3VmdXJhcz8/dWFydT8/eXJ1IWtvaD8/emltaWhzIW9rPz8/Pz9udSw/ZyFpdGksb3loIS4mYSZibWF0P2RuYXM/Z3VzYWs/ayZhdD9vJm95b3Q/eT8/dXphcmFrYXQ/P20mYXlhc2FzP2lyYWg/P3dhJmcmYW5pP29rYWs/P2smaSZoY2k/bWFrPz9veT8/P3lpJmhzYT9tb25paHNpbj8/P2kmYXNhaz9ocyZha2E/aSZhdD9uYXdhaz8/P2omYXdhIWltYW5pbT8/ZW1paD8/ayZhJmdvYT9zJmFnYW1hP3VrdWY/P3dpaHNpbj8/aSZoc29nP20/Pz9tYXRpP29pYT9yb2dpbWFrPz9uJmFubmFzP2Vzbm9uaWhzPz9vJmdhc2Eha2F0Pz9rYT9uJmlrYXQ/bz91c3RhdD8/cmloc2F5P3NpaHM/dG9tdXM/eWFzPz91JmJheT9nbmlocz8/Pz8/aGloLGtvbmlwLGwmYiZldGFoLHMsP2lrLD9tb2wsbmFnYW4hLiZhJmJ1a2FoP2QmYSZ3P3lpbT8/ZSZraT91Pz9paT8/ayZhJnMmYXk/dWtpPz96dXM/P2loc29vP291c2F5Pz9tJmF5JmFrYXQ/aWk/P2kmaHN1a3Vmb3Npaz9qaWk/P3VraWhjPz9uJmkhaHNldGF0Pz91emlpPz9yJmFoP3Vnb3Q/P3NhaW0/dCZhZ2FtYXk/b3lpbT8/dyZhJmcmYSZrYW4/bj8/bz8/a3VzdGFtP3ppdXJhaz8/b25pbSFpbWFuaW0/P3Uma29vP3Mhb21paHM/Pz8/eWEma28/cmloPz8/ZSZha2FzP25hZ2Ftb2s/c3Vibz8/aSZnYWthdD9oJmFzYT9jJmEhbW8hbmFuaWhzPz8/dW9uYW1heT8/c3VrYWdvdD8/ayZhJmthcz9taW1hbmltP3RvPz9pYSZhdGlrP2ltYW5pbT8/b2E/dXppaGNvbT8/bSZha2F3YWs/aWp1Zj9vIXQ/Pz9yJmF0bz9pam9paHM/b21ha2F0Pz8/biZhbmE/ZXNub2F3YXpvbj8/byZodWthcz9uJmEmZ2FuP2thbj8/aSZoYz9tdXphPz91c3RhdD8/cm9tb2s/c2kmZ2FuP2s/P3RvbXVzdGFtPz91JmsmYXM/b2h1a2loYz8/c3RhbWVnYT8/Pz9vJmIsbSxwYWMsP3RvJm1hbXVrIS4mYSZnYW1heT9yYWhpaHNpbj9zdWthbWEhaW1haz8/dGFtYW5pbT8/ZW51ZmltP2kmaGN1a2lrP2smaWhzYW0/dT8/bnVnbyFpbWFuaW0/P3JvbWFrYXQ/P28mYXJhP3JpaHN1c3RheT9zYT90JmFtYXk/b20mYW11az91cz8/dSFrb3lnPz8/eW9oYz8/dSZzYWdhbj96bz8/Pz95ayEuJmEmYm1hdG95az9rJmllcz9vZW1haz91emF3Pz9tYXlpJmgmY3VrdWY/c2FnaWg/P211az8/bmloc2FtYXk/cmF3YXRpanU/dCZhd2F5P2lrPz8/ZSZiYSZuYXQhb3lrPz95YT8/ZGk/bmk/P2kmanU/a2F6YW1heW8/bWFuaW0/P25hdG5hbj9vJmduYXRveWs/a3VtP21haz9yaWhzYW1heWltYW5pbT95Jmdha2FuP2thJmtvYWdhbj9zPz9vaj8/P3UmcnV6aWFtP3omYXlpbT9paz8/Pz8/P3d0YzEtLW54P3lrb3QhLiZhJmQmaSZoY2FtP211cz8/b3lpaGM/P2smYXRpbT9paHN1c3Rhaz8/bSZhJnQhdWtvPz95YXJ1bWloc2EmZ2loP3N1bT8/P2kmaHMmYWdvYT9pa2E/byF0Pz91enVvaz8/cmVuPz8/ciZhJmhvbmloP3dhc2Fnbz8/aWFkb2s/dW1haD8/c3N1Zj90JmlrP28/P3dhJmcmYW5paHM/b2RlPz9rJmFyYT9paGNhdD8/P3kmYWdhdGVzP3ViaWhzPz8/ZSZhbW9rP2RvbmloP20mbz91cnVraWhzYWdpaD8/c295aWs/P2kmZW5hZ29rP2dhbmk/aCZjYSZkYT90aW51az8/c2FiYXRpPz9qJm51YnVrb2s/b2loY2FoPz9tYW5pZ3VzPz9vJmh1emltP2ppaGNhaD9uJmFrYW4/aWghc2FzdW0/P3VyaWthPz9ydWdlbT90JmEmbWF5aWhzYWdpaD9uaW0/P2lhdD9vaz8/dWhjP3lrbnViPz91JmZvaGM/aGN1Zj9rdWpuaWhzPz8/Pz9wJmEmZWhjLHJjLD9vJmhzJmVodCxpaWF3YWsseXViLD9sZixwJmV2b2wseWRuYWMsP3JkJmtjYWIsbmlhciw/Pz9yJjJ4cm82LS1ueD9hdHNlbHR0aWwsZSZkJm51LHdvaGMsP2gsaWxmLHBwJmVwLGlydHMsdSw/dCZhZXJnLHRpYiw/P2chciw/a3MsbyFvbiw/dWZla2FmLD9zJjludmZlLS1ueD9kb20sbmR5bSxwJmloYyxvbyw/cmVtYWd0ZW4sc2lraGNuZXJmLHUmYmxvb2hjcyxydWNpLHNyZXYsP3h2cDQtLW54Pz90JmEmY3lzc3VwLG9iZ2lwLD9lJnJjZXMsdmxldiw/aGdpbnlhZCxuZXRub2NyZXN1LHNpZGFzLHUmYixvbGxpaGMsPz91JjRydnA4LS1ueD9maWchLiZhJmQmZWtpP2loPz9raW1vdD9tJmF5YWthdD9paHNhaD8/bmU/cmFoYSZnaSZrZXM/bWFrYWs/P3Nhaz8/dGFnYSZtYXk/dGlrPz93YSZnJmliaT91c3Rha2FuPz9rYXJpaHMhaWhzYWdpaD8/Pz9lJmthdGltP3Vhd2FrPz9pJmdvaGFrYXM/aGMmYXBuYT91b25hdz8/ayZhZ28/ZXM/b3Q/P20mYW51emltP2lqYXQ/P25haz91cmF0Pz9uYW5pZz9vJmRvZz9qdWc/bWFrb25pbT9uaW0/cm95P3NpaGNpaD8/dSZmaWc/cyZvdG9tP3QmYW1hc2FrP29heT8/Pz8/P2hjLHB1cCxzdG9rbm90LHludXAsP3cmZ3Asb25zZXRpaHcsP3gmNXl0bGstLW54P2lydGFtLD95JmFkeW5udXMsZHIsa25hcmMsbCZvaCxyaWcsP21vb2xnLG9iLHBwJmloLG9sZiw/ciZhaWRhbmV0YWgsZ24mYSx1aCw/P3U2ZDI3c3JqZC0tbng/dmFlaCw/eiY3MnRoci0tbng/ZSZlaixsdXIsPz9cdTRlOTVcdTc5OGY/XHU0ZWFjXHU2NzcxP1x1NTIwNlx1NTkyNz9cdTUzZDZcdTljZTU/XHU1M2UzXHU1YzcxP1x1NTdjZSZcdTViYWU/XHU4MzI4Pz9cdTVhOWJcdTYxMWI/XHU1YzcxJlx1NWJjYz9cdTVjYTE/XHU2YjRjXHU1NDhjPz9cdTVjYTEmXHU3OThmP1x1OTc1OT8/XHU1Y2Y2Jlx1NTE1MFx1OWU3Zj9cdTVlODM/XHU1ZmIzP1x1Nzk4Zj8/XHU1ZDBlJlx1NWJhZT9cdTk1Nzc/P1x1NWRkZCZcdTU5NDhcdTc5NWU/XHU3N2YzP1x1OTk5OT8/XHU1ZWFiXHU1MTc1P1x1NWY2Mlx1NWM3MT9cdTYyNGJcdTVjYTk/XHU2NzI4XHU2ODAzP1x1NjcyY1x1NzE4YT9cdTY4MzlcdTVjZjY/XHU2OGE4XHU1YzcxP1x1NjhlZVx1OTc1Mj9cdTZmNWZcdTY1YjA/XHU3Mzg5XHU1N2ZjP1x1NzUzMFx1NzljYj9cdTc3ZTUmXHU2MTFiP1x1OWFkOD8/XHU3ZTA0XHU2Yzk2P1x1ODI2Zlx1NTk0OD9cdTg0NDlcdTUzNDM/XHU4Y2MwJlx1NGY1MD9cdTZlY2I/P1x1OTA1M1x1NmQ3N1x1NTMxNz9cdTkwZmRcdTRlYWM/XHU5MWNkXHU0ZTA5P1x1OTFjZVx1OTU3Nz9cdTk2MWNcdTVjOTA/XHU5NjJhXHU1OTI3P1x1OTlhY1x1N2ZhND8/P2shLiZhcnQ/Z3JvP21vYz9wZXI/dWRlP3ZvZz8/P2wmZWg/bD8/bSEudWosYWMhLmZtZS50YSw/aj8/bmQ/byZnP2gmcGloP3MhLiZlJm5pbG5veXNyYWIscmF3cG9ocyxzYWIsP3hpbHBvaCx5c3JhYiw/Pz9vYz90IS5sbGR0biw/P3BhIS4mNDRlc2FiLGEmaGNvbSxydXNhaCx0ZWQsP2ImMmUsZXcsc2M6LndlaXZlcnAsLHUmaHRpZyxsY2tjYWgsPz9kZWVwc2Vyb2MsZSZkdWFsYyxlcmYta29yZ24sZ2F0c2tyZWxjLGxiYSZ0cGFkYSx2b2wsP25pbG5pZ29sLHJhbGZkdW9sYyxzYWJud2Fwcyx0dXBtb2NlZ2RlLHZhcmIsP2ZydXNkbml3LGhzYWR0b2IsaSZscmVzc2VtLG5heXVsLD9rJmVlbGYtbm8sb3JnbixyZWxjLD9sJmF3LGUmY3JldixuYXB5c2FlLD9sZWNwYWVsLD9tYWVyZGVweXQsbiZhZWNvbGF0aWdpZG5vLGUmcmltLHZpYSw/P29weGU6LiZnbmlnYXRzOi5ubywsbm8sPyxwb29uLHImY25lOi5kbmV0bm9yZiwsZSZtJmFyZixzYXcsP3R1cCw/dWJhZXosP3MmZSZsdWNyZWhubyx0aXJwcyw/amFzdWRlbSxucmV0dGFwY2lnYW0sP3QmYXluLGVnZGFnLGkmYmVsZXQsbCZtYWVydHMscGVyOi5kaSwsPz9sdWF2cmV2ZS55YWxlcix4ZW53LD93b2xmcmV0dHVsZix4JmV2bm9jLGxwcCw/eSZhJmRvdHBpaHMsd2xpYXIucHUsP2ZpbHRlbiw/Pz9yYSZhP2hzPz91JmVrYW0/bGxhZz9vcmchLmVzcnVvY3NpZCxjdHM/a291az9uYXlhbG8/Pz92c3I/eGVjZTRpYmdtLS1ueD8/cSZhITNhOXktLW54Pz9nP2khLiZncm8/bGltP21vYz90ZW4/dWRlP3ZvZz8/P20/c2U/P3ImYSEuJmEmY2lzdW0/c2FuZXM/P2JvZz9nJmVzP3JvPz9sJmF1dHVtP2ltPz9tb2M/cG9vYz9ydXQ/dCZlJmI/bj8/bmk/P3VkZT92b2c/PzRkNWE0cHJlYmdtLS1ueD9iIS5ldmxvc2VyLD9jP2V5ZG9vZz9sb3M/dCZhdD9zIXVlbj8/P3VnYWo/P2IhLiYyMWc/YSZiJmEmY29yb3M/aXVjPz9pdGlydWM/P2Nub2dvYXM/ZGljZXJhcGE/Z25pcmFtP2khbmFpb2c/cmFtYXRuYXM/P24mZXJvbT9pcmRub2w/P29wP3AmYWNhbT9pcm9sZj9tYSZqP3M/Pz9yaWVmP3RzaXZhb2I/P2IhYWo/aWI/bWk/c2I/P2MmYmE/ZSZyP3Q/P2pzP3NwP3QhZT8/P2QmZW0/bWI/biZmP2k/P3J0Pz9lJmRuYXJnYW5pcG1hYz9maWNlcj9oJmN0LHQ/P2xsaXZuaW9qP3JkbmFvdG5hcz8/ZiZkaj9lZD9nZz9uJmU/aT8/P2cmZSZsIS4mYSZiLG0scCw/YnAsYyZhLHMsP2UmYyxwLHMsP2ZkLGdtLGlwLGpyLGxhLG1hLG5yLG8mZyxyLHQsP3AmYSxzLD9yJnAsciw/cyZlLG0sciw/dG0sPz9zPz9sJnM/ej8/biZjP2U/bz8/b2whYj9mP3Y/P3BwP3JvPz9odnA/aSZkdT9raXc/bmFuYT9vcmV0aW4/cGE/ciZjP2V1cmFiPz9zcD90ZT94YXQ/P2wmYSZpY29zP3QmYW4/cm9mPz8/ZWw/aW0/c3E/P20mYT9kYT9lJmdhdG5vYz9sZWI/P2Y/aWM/b2MhLmV0aXNlbHBtaXMsPz9uY2U/byZhJmxpZWw/cmllYmlyPz9jJmU/bmFyYm9pcj9zYXNvPz9kJm8/cmFucmVib2FzPz9lJmc/dD8/aSZiP2Rhcj9lY2FtP3I/P3JwP3QmYT9lcnBvaXI/Pz9wJmVyP20hZT90Pz9vb2M/cGE/c2U/P3FyYT9yJmFmP2dhP28mZGF2bGFzP2o/P3RuP3V0Pz9zJmEmaXhhYz9tbGFwP25pcG1hYz8/ZWQ/dSZhbmFtP2o/bT8/P3QmYW0/ZSZiP2Q/bj92Pz9uYz9vJmY/bj8/cmE/c2Y/P3UmY2F1Zzk/ZGU/amE/cmc/P3YmZGE/ZWQ/b2chLiZhJmI/bT9wPz9icD9jJmE/cz8/ZSZjP3A/cz8/ZmQ/Z20/aXA/anI/bGE/bWE/bnI/byZnP3I/dD8/cCZhP3M/P3ImcD9yPz9zJmU/bT9yPz90bT8/P3JzP3Q/P3hpdj96JmhiP2xzP28mYz9mPz95eD8/Pz9jIS4mYXM/Y2E/ZGU/aWY/byZjP2c/P3JvPz8/ZSZiZXc/Y2Nvcz9lJmI/biZpZ25lP29pcD8/cmFjPz9nbmkmYXJnP3JoZW9iPz9oJnNvaz90JmFldz9vcmI/Pz9pdG5vcmY/ayZjb2w/byZwP3JiPz8/bCZhZWQ/ZmZlYWhjcz8/bWFsP25lcz9waW51aj90JmEmZWh0P3JlYnNuZWdcdTAwZjZtcmV2Pz9sYXc/bmVjP3Mmbm9tP3Via2NvbGI/P3VwbW9jPz92Jm8mY3NpZD9yZG5hbD8/cmVzYm8/P3d1bGtzcmV0bG93P3l3YWw/emlmcD8/ZiEuJmF0ZXJnP2JldyYtbm8sZXRpczMyMSw/ZHJwP2UmYyZpdHN1ai1yZWlzc2l1aD9uYXJmLW5lLXNldHNpdG5lZC1zbmVpZ3J1cmloYyw/bGlwdW9nLHJpYW5pcmV0ZXYsP2hueSxpJmNjP3JnYWJtYWhjLD9tJm8mYz9uPz90Pz9uJmVpY2FtcmFocCxpY2VkZW0sP29zc2E/cG9oc2RhZXJwc3ltLHMmZSZsYmF0cG1vYy1zdHJlcHhlLHJpYXRvbix0c2l0bmVkLXNuZWlncnVyaWhjLHVvdmE/P25kayxvJi14JmJmLG9iZWVyZiw/eCZiZixvYmVlcmYsPz8/dCZhY292YSxyb3A6b3JlYSwsP3Z1b2c/eG9iaWRlZCw/YXZjN3lscWJnbS0tbng/cz8/ZyEuJmV0aXNlbHBtaXMsZ3JvP21vYz90ZW4/dWRlP3ZvZz95c3JhYiw/P2ghLiZlbWFuP21vJmM/cmY/P3lsZG5lcmIucG9ocyx6aT8/dXI/P2khLiZhJjYxZjRhM2FiZ20tLW54P3JmNGEzYWJnbS0tbng/P2NhP2RpP2VnZGVuYXZyYSxnJm9sYmF0c2l2LHJvPz9oY3M/b2M/dGVuP3ZvZz9cdTA2NDZcdTA2MjdcdTA2MzEmXHUwNjRhXHUwNjI3P1x1MDZjY1x1MDYyNz8/P2EmaD9wZXI/P2V3P2xmPz9rIS4mMTBjLGMmYT9zPz9lJm0/bj9wP3I/P2drP2kmYT9nZ25vZXlnP2t2LHBhLXZpbGUsP2t1YiZnbiZvZXlnP3VoYz8/bm9laj8/bCZpbT91b2VzPz9tYW4mZ24mb2V5Zz91aGM/P25vZWo/P24mYXMmbHU/dWI/P2RjLXZpbGUsbyZlJmhjbmk/amVhZD8/d2duYWc/Pz9vJmM/Zz9pPz9ybz9zJmU/aD9tP25kLXZpbGUsP3RpP3UmZ2VhZD9qJmVqP2duYXdnPz8/dm1tLD9jaWxmPz9sIS4mZ3JvP21vYz90ZW4/dWRlP3ZvZz8/P20hLnZvZz8/biEuJmdybz9tb2M/b2ZuaT90ZW4/dWRlP3ZvZz96aWI/Pz9vJmh0dWE/dCZjJmE/b2Q/P2xhZXI/Pz9wIS4mYWxzaT9jYT9lbWFuP2ZvcnA/Z3JvP21vYz9vJmZuaT9ycD8/dCZlbj9zZT8/dWRlP3ZvZz96aWI/Pz9zP3QhLiYyMWs/YmV3P2NuIS52b2c/P2VtYW4/Z3JvP2tzdD9sJmUmYj90Pz9pbT9vcD8/bW9jP25lZz9vZm5pP3Blaz9yZD9zYmI/dGVuP3VkZT92JmE/b2c/dD8/emliPz9mP20/P3ZkPz9zJjhzcWlmLS1ueD85enFpZi0tbng/YSEudm9nP2JpcmFwcG5iP2dldj9sbGl2P210c2lyaGM/cz8/YiEuJmV3LGdybz9tb2M/dGVuP3VkZT92b2c/P29qP3M/dT8/YyZpJmhwYXJnP3A/dHlsYW5hPz9vZD8/ZCZhP2Q/aWs/bD9uJml3cmlhZj9vbWFpZD8/b29nZW1vaD9yYWM/P2UhLiZiJmV3aW0zMjEsb2c/P2dybz9tbyZjP24/P3BvaHNkYWVycHN5bSx1ZGU/P2NpdnJlcyEuZW5pbG5pZ29sLD9kJmQyYmdtLS1ueD9vYz8/aCZjdGF3P2d1aD8/aSZscHB1cz9ydHN1ZG5pP3RyZXBvcnAheXJyZWs/Pz9qYWl2P2wmYXc/Y3ljcm90b20/Z25pcz9wYXRzPz9tJmFnIS55JmVscCx6ZWVocyw/P29oP3JlaD8/bnV0P29ocz9waWNlcj9yJml0P3V0JmNpcCEuNzMzMSw/bmV2Pz8/cyZpJnJwcmV0bmU/dXJjPz9ydW9jPz90YWljb3NzYT92aWc/P2chbmlkbG9oPz9oNWM4MjJxaWYtLW54P2khYTA5LS1ueD9ubmV0P3JhcD90YXJnPz9rJmMmb3IhLiZlY2Fwc2JldyxzbmRkeW0sdGlrY2F0cyx5dGljLWFtaWwsPz91cz8/aHhkYTA4LS1ueD9yb3c/P2whLiZjJmE/cz8/Z3JvP28mYz9mbmk/P3Rlbj91ZGU/dm9nP3ppYj8/YSZlZD90bmVyPz9lJnNzdXJiP3RvaCF5cnJlaz8/P2xhaHNyYW0/bT9vb3QhLnJkZGEmLm55ZCx5bSw/Pz9tIS4mZXRpc2luaW0sZ3JvP21vYz90ZW4/dWRlP3ZvZz8/Yj9ldHN5cyEuJm5lcmltLHRuaW9wdGhnaW5rLD8/aWFsYz8/biZhJmY/Z29yZj9vbD8/aSZhJmdyYWI/bW9kPz9naXJvPz9vJml0JmFjYXY/Y3Vkb3JwP3Vsb3M/P3B1b2M/Pz9vJmRub2M/Z2V1aj9wcGF6P3Qmb2hwIS5yZW1hcmYsP3VhPz8/cCEuJmNlcz9ncm8/bW9jP29scD90ZW4/dWRlP3ZvZz8/aSZoc3JhbG9oY3M/bGlocD90Pz91Pz9yIS4mY2E/Z3JvP25pP29jP3VkZT92b2c/eG8seSZsZG5lcmIucG9ocyxzcmFiLD8/YSZjP3A/dGl1Zz8/Yz9lJmRsaXViIS5ldGlzZHVvbGMsP2VyYWM/Z29yP2xldmFydD9tcmFmP24mbml3P3RyYXA/P3dvbGY/P290JmNhcnRub2M/b21hdGF0Pz9waj91b3Q/P3MhLiZlbT9ncm8/aGNzP21vYz9vYz90ZW4/dWRlP3ZvZz96aWI/P2FsZz9lJm4maXN1YiEub2MsP3RpZj8/cnAheGUhbmFjaXJlbWE/Pz94bmFsPz9pd3M/P3QmYSZlYj9vYj8/ZWsmY2l0P3JhbT8/ZmlnP2gmY2F5P2dpbGY/P24mYXRudW9jY2E/ZSZtdCZyYXBhP3Nldm5pPz92ZSEuJm5pYm9vayxvYyw/Pz8/cmFwPz91IS4mYSZjIS4mMjFrP2JpbD9jYz8/P2chLiYyMWs/YmlsP2NjPz8/aSEuJjIxaz9iaWw/Y2M/Pz9sIS4mMjFrP2JpbD9jYz8/P20hLiYyMWshLiZoY29yYXA/cnRoYz90dnA/Pz9iaWw/Y2M/Pz9wIS4mMjFrP2JpbD9jYz8/P3NpP3YhLiYyMWs/YmlsP2NjPz8/dyEuJjIxaz9hJmVzLGkmbGFydG5lYyxwbXlsbyw/P2JpbD9jYz9kJm4mZXNud290LXRyb3Asb21kZXIsP3JhaGNyby10cm9wLD9lJmwmYWRyZXZsaXMsdHRhZXMsP3V2ZWxsZWIsP2xzaS1lZ2RpcmJuaWFiLG0mYWl1cW9oLGl1cWVzLD9uJmVlZHJlYmEsb3QmbGVocyxuZXIscmVtZXJiLHNnbmlrLD8/b2JzbHVvcCxyb2JyYWgtZ2lnLHMmZWxlZ25hLXRyb3AsaWxhaGVoYyxrcm9mLD90Jm5pb3Atd29ycmF5LHJvcHllayw/d29sZHVsLXRyb3AsPz8/YyZkIS4mMjFrP2JpbD9jYz8/P24hLiYyMWs/YmlsP2NjPz8/cyEuJjIxaz9iaWw/Y2M/Pz8/ZCZlbGFjc25lLnhocCxpIS4mMjFrP2JpbD9jYz8/P20hLiYyMWs/YmlsP2NjPz8/bj9zIS4mYmlsP2NjPz8/dW9sY3JpbSw/ZSZkIS5jYz8/bGFzLTQtJmRuYWwsZmZ1dHMsP20hLiYyMWs/YmlsP2NjPz9hbnJldnJlcyw/biEuJjIxaz9iaWw/Y2M/Pz8/aCZuIS4mMjFrP2JpbD9jYz8/P28hLiYyMWs/YmlsP2NjPz8/P2kmaCEuJmJpbD9jYz8/P20hLiYyMWs/YmlsP2MmYz9ldD8/Z29jP24mZWc/b3RhZT8/cm9icmEtbm5hP3N1bT90c2Q/d2FuZXRoc2F3Pz8/bmQ/cGEtZXJ1emEsciEuJmJpbD9jYz8/P3YhLiYyMWs/YmlsP2NjPz8/dyEuJjIxaz9iaWw/Y2M/Pz8/am4hLiYyMWs/YmlsP2NjPz8/ayZhIS4mMjFrP2JpbD9jYz8/P28hLiYyMWs/YmlsP2NjPz8/P2wmYSEuJjIxaz9iaWw/Y2M/Pz9mIS4mMjFrP2JpbD9jYz8/P2khLiYyMWs/YmlsP2NjPz8/P21uIS4mMjFrP2JpbD9jYz8/P24mYWZmbG9nLGkhLiYyMWs/YmlsP2NjPz8/bSEuJjIxaz9iaWw/Y2M/Pz9zbj90IS4mMjFrP2JpbD9jYz8/Pz9vJmMhLiYyMWs/YmlsP2NjPz8/Z24sbSEuJjIxaz9iaWw/Y2M/Pz90dG5pb3AsP3Bpb24sciZhIS4mMjFrP2JpbD9jYz8/P28hLiYyMWs/YmlsP2NjPz8/cCEuJjIxaz9iaWw/Y2M/Pz8/cyZhIS4mMjFrP2JpbD9jYz8/P2V0aXNiZXdlcnV6YSxrIS4mMjFrP2JpbD9jYz8/P20hLiYyMWs/Y2M/Pz9uZCZkZWVyZix1b2xjLD8/dCZjIS4mMjFrP2JpbD9jYz8/P20hLiYyMWs/YmlsP2NjPz8/c29ob2lsZWgsdSEuJjIxaz9iaWw/Y2M/Pz92IS4mMjFrP2JpbD9jYz8/Pz91ZyEuJjIxaz9iaWw/Y2M/Pz92Jm4hLiYyMWs/YmlsP2NjPz8/cnM6LiZoZyxsZyw/LHchLmNjPz8/eHQhLiYyMWs/YmlsP2NjPz8/eSZiLXNpLGshLiYyMWs/YmlsP2NjPz8/biEuJjIxaz9iaWw/Y2M/Pz93IS4mMjFrP2JpbD9jYz8/Pz96YSEuJjIxaz9iaWw/Y2M/Pz8/YWghdWFiPz9icmlhP2NvbD9lIS55dHJhcC5yZXN1LD9pbmVzZXJmP2xwIS50aXlhbHA6Lmh0aXcsLD94ZSZsP24/Pz92dD93IS4mNjZkdW9sYyxncm8/bW9jP3MmbmRueWQsdGVweW0sP3Rlbj91ZGU/dm9nPz9hIS4mbm8uJjEtJmh0JnJvbi11ZS4mbHJ1LWFkYm1hbCxwcGFiZXctcmVmc25hcnQsP3Vvcy0mZW0uJmxydS1hZGJtYWwscHBhYmV3LXJlZnNuYXJ0LD9mYS4mbHJ1LWFkYm1hbCxwcGFiZXctcmVmc25hcnQsP3BhLiZscnUtYWRibWFsLHBwYWJldy1yZWZzbmFydCw/dWUuJmxydS1hZGJtYWwscHBhYmV3LXJlZnNuYXJ0LD8/P2xhcnRuZWMtJmFjLiZscnUtYWRibWFsLHBwYWJldy1yZWZzbmFydCw/ZW0ucHBhYmV3LXJlZnNuYXJ0LGxpLnBwYWJldy1yZWZzbmFydCx1ZS4mbHJ1LWFkYm1hbCxwcGFiZXctcmVmc25hcnQsP3htLnBwYWJldy1yZWZzbmFydCw/dHMmYWUmLSZhcy4mbHJ1LWFkYm1hbCxwcGFiZXctcmVmc25hcnQsP3BhLiZscnUtYWRibWFsLHBwYWJldy1yZWZzbmFydCw/c3UuJmxydS1hZGJtYWwscHBhYmV3LXJlZnNuYXJ0LD92b2ctc3UuJnBwYWJldy1yZWZzbmFydCxzcGlmLXBwYWJldy1yZWZzbmFydCw/P2h0JnJvbi1wYS4mbHJ1LWFkYm1hbCxwcGFiZXctcmVmc25hcnQsP3Vvcy1wYS4mbHJ1LWFkYm1hbCxwcGFiZXctcmVmc25hcnQsPz8/ZXctJmFjLnBwYWJldy1yZWZzbmFydCxzdS4mbHJ1LWFkYm1hbCxwcGFiZXctcmVmc25hcnQsP3VlLiZscnUtYWRibWFsLHBwYWJldy1yZWZzbmFydCw/dm9nLXN1LiZwcGFiZXctcmVmc25hcnQsc3BpZi1wcGFiZXctcmVmc25hcnQsPz8/PzItJmh0dW9zLSZwYS5wcGFiZXctcmVmc25hcnQsdWUucHBhYmV3LXJlZnNuYXJ0LD9sYXJ0bmVjLXVlLnBwYWJldy1yZWZzbmFydCx0cyZhZSYtc3UuJmxydS1hZGJtYWwscHBhYmV3LXJlZnNuYXJ0LD9odCZyb24tcGEuJmxydS1hZGJtYWwscHBhYmV3LXJlZnNuYXJ0LD91b3MtcGEuJmxydS1hZGJtYWwscHBhYmV3LXJlZnNuYXJ0LD8/P2V3LSZzdS4mbHJ1LWFkYm1hbCxwcGFiZXctcmVmc25hcnQsP3VlLiZscnUtYWRibWFsLHBwYWJldy1yZWZzbmFydCw/Pz8/My10cyZhZWh0JnJvbi1wYS4mbHJ1LWFkYm1hbCxwcGFiZXctcmVmc25hcnQsP3Vvcy1wYS4mbHJ1LWFkYm1hbCxwcGFiZXctcmVmc25hcnQsPz9ldy11ZS4mbHJ1LWFkYm1hbCxwcGFiZXctcmVmc25hcnQsPz80LXRzYWVodHVvcy1wYS5wcGFiZXctcmVmc25hcnQsNS10c2FlaHR1b3MtcGEucHBhYmV3LXJlZnNuYXJ0LDctdHNhZWh0dW9zLXBhLnBwYWJldy1yZWZzbmFydCw/cmVrYW1lZ2FzLiYxLSZodCZyb24tdWUuJmtvb2JldG9uLG9pZHV0cyw/dW9zLSZlbS4ma29vYmV0b24sb2lkdXRzLD9mYS4ma29vYmV0b24sb2lkdXRzLD9wYS4mZ25pbGViYWwsa29vYmV0b24sb2lkdXRzLD91ZS4ma29vYmV0b24sb2lkdXRzLD8/P2xhcnRuZWMtJmFjLiZnbmlsZWJhbCxrb29iZXRvbixvaWR1dHMsc3BpZi1rb29iZXRvbiw/ZW0uJmtvb2JldG9uLG9pZHV0cyw/bGkuJmtvb2JldG9uLG9pZHV0cyw/dWUuJmduaWxlYmFsLGtvb2JldG9uLG9pZHV0cyw/P3RzJmFlJi0mYXMuJmtvb2JldG9uLG9pZHV0cyw/cGEuJmtvb2JldG9uLG9pZHV0cyw/c3UuJmduaWxlYmFsLGtvb2JldG9uLG9pZHV0cyxzcGlmLWtvb2JldG9uLD92b2ctc3UuJmtvb2JldG9uLG9pZHV0cyxzcGlmLSZrb29iZXRvbixvaWR1dHMsPz8/aHQmcm9uLXBhLiZnbmlsZWJhbCxrb29iZXRvbixvaWR1dHMsP3Vvcy1wYS4mZ25pbGViYWwsa29vYmV0b24sb2lkdXRzLD8/P2V3LSZhYy4ma29vYmV0b24sc3BpZi1rb29iZXRvbiw/c3UuJmtvb2JldG9uLG9pZHV0cyxzcGlmLWtvb2JldG9uLD91ZS4mZ25pbGViYWwsa29vYmV0b24sb2lkdXRzLD92b2ctc3UuJmtvb2JldG9uLG9pZHV0cyxzcGlmLSZrb29iZXRvbixvaWR1dHMsPz8/Pz8yLSZodHVvcy0mcGEua29vYmV0b24sdWUuJmtvb2JldG9uLG9pZHV0cyw/P2xhcnRuZWMtdWUuJmtvb2JldG9uLG9pZHV0cyw/dHMmYWUmLXN1LiZnbmlsZWJhbCxrb29iZXRvbixvaWR1dHMsc3BpZi1rb29iZXRvbiw/aHQmcm9uLXBhLiZnbmlsZWJhbCxrb29iZXRvbixvaWR1dHMsP3Vvcy1wYS4mZ25pbGViYWwsa29vYmV0b24sb2lkdXRzLD8/P2V3LSZzdS4mZ25pbGViYWwsa29vYmV0b24sb2lkdXRzLHNwaWYta29vYmV0b24sP3VlLiZnbmlsZWJhbCxrb29iZXRvbixvaWR1dHMsPz8/PzMtdHMmYWVodCZyb24tcGEuJmtvb2JldG9uLG9pZHV0cyw/dW9zLXBhLiZrb29iZXRvbixvaWR1dHMsPz9ldy11ZS4ma29vYmV0b24sb2lkdXRzLD8/NC10c2FlaHR1b3MtcGEua29vYmV0b24sPz8/ZSZpdmVyIS5tZWEsP24hLmVsYmFlY2l0b24sPz9vZG5pdz8/eSZhbGNyYWI/b3Q/Pz90JjBzcnpjLS1ueD9hIS4mNCxhbWlsNCxjYSEuaHRzPz9lJm1vaHNuZCx0aWVzYmV3MzIxLD9nbmkmbGlhbWVydXR1Zix0c29oZXJ1dHVmLD9vJmM/Zm5pLD9wJmgyMSxvaHNkYWVycHN5bSw/ciZldWVma251Zi5uZWl3LG8/P3YmZz9pcnAsP3hpMix5Jm0sdGljLWFtaWwsP3ppYiw/Yz9lIXM/P2hjP2w/bWFtaT9yY29tZWQ/P2IhLiZncm8/bW9jP3Rlbj91ZGU/dm9nPz9iP2dsPz9jJmF0bm9jP2UmbGVzP3JpZCEucDJwYmlsLHR4ZW4/Pz8/ZGltaGNzP2UhLiZlbWFuP2dybz9tb2M/b2ZuaT90ZW4/dWRlP3ZvZz96aWI/P2I/ZW0/Z3JhdD9pZD9rJmNpcmM/cmFtPz9uIS4mMWRuYTEtc3BwYSw1JmVkLGludSw/NnZueWQsNyY3bmRjLnIsZXJhdXFzLD9hJmwmLW1vcmYsbW9vYiw/bWluaWZlZCxyZW1hY3l0aXJ1Y2VzeW0sdGFkc3lhd2xhLHosP2ImYm9pLGV3ZGFyeW0sZyxseWx0c2FmOi5wYW0sLD9jJmJheixpJm1hbnlkLXNuZCxuYWdyby1nbml0YWUsdGF0cy1vaWVib2RhLD9wYWlkZW15bSw/ZCZlJmNhbHBiLHppYW1ha2EsP2ZlcnV6YSxoaWFtYWthLGlyZ2V2aXNzYW0uc2FhcC4mMS0mZ3Msbm9sLHJmLHluLD8yLSZub2wseW4sPz9uYWItZWh0LW5pLHVvbGMmLXNuZCxlaHRnbml0dW9yLGZ0YyxtZWFlYm9kYSxuaWV2YXMuYyZkaS1ldHNlZHJvbixpdHNhbGVqLD94ZWRuYXk6LmUmZ2Fyb3RzLHRpc2Jldyw/LD8/ZSZjJm5hcnVzbmlodGxhZWhleml0YXZpcnAscm9mZWxhY3Muaiw/Z2RlJmVydXphLGlhbWFrYSw/aHQtbm8tZWNpZmZvLGwmYWNzbm9vbSxpYm9tLWVydXphLG9tbGVubnV0LD9tJmFudGVueW0ubnMsZWNudW9iLGl0bnVyb2llYm9kYSxvaHRhbnlkLHRjZXJpZGVyLD9uJmlsbm8tZXZyZXNlcixvemRvcCw/ciZhbGZkdW9sYzoubmRjLCxlaHVyaHQsP3M6YWJhcHVzLCx0aSZzLXJlcHBhcmNzLHVzZWdkZSw/emFtJmF5bSxrY2FyLD8/ZiZhZWxldGlzLGNycy4mY29zLHJlc3UsP2VoYy1hLXNpLGZnZyw/ZyZuaSZnYXRzLSZkJmV6aWFtYWthLGhpYW1ha2EsP2UmZ2RlaWFtYWthLHRpdXNlZ2RlLD9pYW1ha2EsbmlnaXJvaWFtYWthLHlla2VnZGUsP3JlZXNuZXMsc2lya2NpbGMsP29sYmV2cmVzLD9oc2FkdG9iLGkmYW1ha2EsbmF5dWwscGEmLWVydXphLGR1b2xjdm9nc3UuJmVyb2MuJmImZXcsb2xiLD9lbGlmLD9zdWJlY2l2cmVzLD8/P2smZWVnLWEmLXNpLHNpLD9pcG8sdSw/bCZhJmJvbGdlcmFsZmR1b2xjLm5kYyxjb2xvdHRhZCw/aWFtd3QsbWV0ZWgscyZkLW5pLHMtNzduZGMsPz9tJmFjJmFzYWMsaWgsP3Vyb2ZuaWVtLD9uJmEmZiZhZ3AsbGhuLD9pJmJlZCxsbGVyayw/P2NlcmFsZmR1b2xjLm5kYyxkY2R1YWJrY2FsYixpOmdpcm9pYW1ha2EsLG8tJmRyb3d5ZWssZXZpbCxyZXZyZXMsP3B2LW5pLD9vJmMtbW9yZixkdXBwYSxqb2RzbmQsbGVmYW0sbiZlZDoueG9iZG5hcywscmVmbmlubyw/cnAteXRpbnVtbW9jLHR0YWR5bSw/cCZpJi0mZXRzZWYsb24sc25kZCw/ZW1vaCxmbGVzLG53byw/aixtYWMtZG5hYi10YSxvJi1vaWRhci1tYWgsaCZiZXcsc2RhZXJwc3ltLD8/cGFkdW9sYzp2b2dzdSwsdGZlJm1vaCx2cmVzLD91c25kLD9yJmUmZ2FuYW1jaWZmYXJ0OnZvZ3N1LCx0c3VsY3lkdW9sYyx2cmVzLXhuayw/dmRzbGVubmFoYzoudSwsP3MmYSZpbGEmbnlkLHNuZCw/bnltc2QsP2JiZXZyZXMsZHlsaW1hZixlJmdkZS1uZGMscmF1cXMsc3VvaHN5dWIsdCZpc2Jld2VydXphLHlzLD8/a2Vrb2tvaGNzLG4mZCYtd29uLGFrYSxkOnVueWQsLGdvbGIsbnB2LD9vaXRjbnVmZHVvbGMsP3BwYWNpdGF0c2VydXphOi4mMSwyOnN1dHMmYWUsZXcsPywzLDQsNSw2LDcsYWlzYXRzYWUsZXBvcnVldHNldyxzdWxhcnRuZWMsPyxzJmEtc2tjaWssZWNjYSYtY2l0YXRzLGR1b2xjLD8/dCx3b2RuaXcuJmVyb2MuJmImZXcsb2xiLD9lbGlmLD9zdWJlY2l2cmVzLD8/dCZhZGllcyxjZSZmZmV5bSxqb3Jwcm90Oi5zZWdhcCwsbGVzcG9ocyw/ZSZucmV0bmlmb2RuZSxzbWVtLD9mYXJjZW5pbWV2cmVzLGktJmVrb3JiLHMmZW9kLGxsZXMsdGVnLD8/biZlJnNzaWR5bSx0bm9jcmVzdXYsP29yZmR1b2xjLD9yZWNsYWNvbCxzJmFjeW5hZXJhbGZkdW9sYy5uZGMsaXhldG5vZCxvaCYtc3B2Oi5jaXRzYWxlai4mY2lyLGx0YSxzam4sPyxnbmlrLD8/eXJwcyw/dSZoLG55ZCxyLD92ZWQtJmFuYWZhcmcsbmFpc3NhbHRhLmRvcnAubmRjLD94JmludWVtb2gsc3B5bSx0c2FsZS4mMW90cy1zbGosMm90cy1zbGosM290cy1zbGosP3VuaWxlbW9oLD95JmEmcC1jc2J1cyx3ZXRhZy1sbGF3ZXJpZiw/ZWtlZ2RlLGZmaWpkdW9sYzouJmVkLTFhcmYsc3UtMXRzZXcsPyxnb2xvbnlzeW0sbHRzYWYuJmRvcnAuJmEsbGFib2xnLD9sc3MuJmEsYixsYWJvbGcsP3BhbSxzbHRlZXJmLD9uJi1tb3JmLG9maXBpLD9zcmFiLD96JmEtbW9yZix0aXJmeW0sPz8/cD90Y2lwP3Y/P2YmaWc/b3NvcmNpbT8/ZyEuJmJvZz9kbmk/Z3JvP2xpbT9tb2M/dGVuP3VkZT8/P2ghLiZkZW0/Z3JvP2wmZXI/b3A/P20mb2M/cmlmPz9vJmZuaT9ycD9zJnJlcD9zYT8/P3BvJmhzP29jPz90JmVuP2x1ZGE/cjphPyw/dWRlP3Z1b2c/Pz9pIS4mYSYybi1sb3JpdGRzLS1ueD83ZS1ldHNvYWVsbGF2LS1ueD84JmMtYW5lc2VjbHJvZi0tbng/aS1scm9mYW5lc2VjLS1ueD8/YXQ/Yj9jIWN1bD8/ZHY/aSZibG8mLW9pcG1ldD9vaXBtZXQ/P2NzZXJiP2RyYWJtb2w/ZyZnb2Y/dXJlcD8/bCZndXA/aSZjaXM/bWUmLW9pZ2dlcj9vaWdnZXI/Pz91aWcmLSZhaXplbmV2Ji1pbHVpcmY/aWx1aXJmPz9ldiYtaWx1aXJmP2lsdWlyZj8/diYtaWx1aXJmP2lsdWlyZj8/P2FpemVuZXYmLWlsdWlyZj9pbHVpcmY/P2V2Ji1pbHVpcmY/aWx1aXJmPz92Ji1pbHVpcmY/aWx1aXJmPz8/P24mYSZicmV2P2N1bD9wbWFjP3RhYz8/aWRyYXM/b2JyYWMmLXNhaXNlbGdpP3NhaXNlbGdpPz9yZXNpPz9vdHNpcD9yJmImYWxhYyEtb2lnZ2VyP29pZ2dlcj8/bXU/P2RuYSYtJmF0dGVscmFiLWluYXJ0P2luYXJ0LWF0dGVscmFiPz9hdHRlbHJhYmluYXJ0P2luYXJ0YXR0ZWxyYWI/c3NlbGE/P2VwbWk/dWdpbD8/dG5lbGF2Ji1vYml2P29iaXY/P3ZhcD96JmUmbmV2P3BzJi1hbD9hbD8/P2lyb2c/Pz9sJml1cWEhbD8/bGVpYj8/bSZvcj9yYXA/P24hYWNzb3Q/ZSZkb20/aXM/c2VjJi0maWxyb2Y/XHUwMGVjbHJvZj8/aWxyb2Y/XHUwMGVjbHJvZj8/P2cmYW1vciYtYWlsaW1lP2FpbGltZT8/ZWRyYXM/b2xvYj8/aSZzc2VtP3RhbD8/bmUhdmFyPz9vJmNuYT9tZXJjP3Jldj92YXM/Pz9vbmVnP3A/ciFhJmNzZXA/cnImYWMmLWFzc2FtP2Fzc2FtPz9lZj8/dm9uPz9ldGFtP3RzYWlsZ28hLWxsZWQ/bGxlZD8/P3MhaXA/c2FtJi1hcmFycmFjP2FyYXJyYWM/P3UmY2FyaXM/Z2FyPz8/dCFhJmNpbGlzYWI/cmVjYW0/P3Jlc2FjP3NvYSEtJmQmLSZlbGxhdj9sYXY/P2VsbGF2P2xhdj8/ZWxsYXY/P2QmLSZlbGxhdj9sYXY/P2VsbGF2P2xhdj8/ZWxsYXY/P3RlJmxyYWImLSZhaXJkbmEtaW5hcnQ/aW5hcnQtYWlyZG5hPz9haXJkbmFpbmFydD9pbmFydGFpcmRuYT8/c3NpbmF0bGFjPz8/dWRhcD92IW8mZGFwP25lZz90bmFtPz8/em4mYWlyYiYtYSZsbGVkLWUtYXpub20/em5vbT8/YSZsbGVkZWF6bm9tP3pub20/P2Vhem5vbT8/ZSZjJmFpcD9pdj8/c29jP3RvcD8/b20/Pz9iJi0mMjMsNDYsNjEsPzNjLWxvcml0LWRzLW9uaXRuZXJ0LS1ueD9iZS1ldHNvYSYtZWxsYXYtLW54P2RlbGxhdi0tbng/P2MhZi1hbmVzZWMtbHJvZi0tbng/bS1scm9mLWFuZXNlYy0tbng/P2hlLWV0c29hLWQtZWxsYXYtLW54P20hdT8/bzItbG9yaXRkcy1uZXpvYi0tbng/c24tbG9yaXRkcyYtbmFzbCZhYi0tbng/dWItLW54Pz9uaXRuZXJ0LS1ueD8/diE2LWxvcml0LWRzbml0bmVydC0tbng/Ny1sb3JpdGRzJi1uaXRuZXJ0LS1ueD9vbml0bmVydC0tbng/Pz96JnItbG9yaXQtZHMmLW5pdG5lcnQtLW54P29uaXRuZXJ0LS1ueD8/cy1sb3JpdGRzLW9uaXRuZXJ0LS1ueD8/P2MmZj9pcz9sP20/cD9yP3Y/P2QmcD91IW9sY255cyw/P2UmYyFjZWw/aW5ldj9uZXJvbGY/P2Y/ZyFhcGVtb2gzMjEsaWRhJi0mYSYtb25pdG5lcnQ/b25pdG5lcnQ/P290bGEhLW9uaXRuZXJ0P29uaXRuZXJ0Pz8/YSYtb25pdG5lcnQ/b25pdG5lcnQ/P290bGEhLW9uJmF6bG9iP2l0bmVydD8/b25pdG5lcnQ/Pz8/aGNyYW0/bD9tIW8maHNuZCxyPz8/biZpZHU/byZuJmVkcm9wP2lzb3JmPz90b3JjPz8/cD9yP3MmZXJhdj9pbG9tPz90IW5vbWVpcD9zJmVpcnQ/b2EhLSZkLWUmZWxsYXY/XHUwMGU5bGxhdj8/ZSZlbGxhdj9cdTAwZTlsbGF2Pz8/ZGUmZWxsYXY/XHUwMGU5bGxhdj8/ZSZlbGxhdj9cdTAwZTlsbGF2Pz8/Pz92P3puZXJpZj8/ZyZhP2I/Zj9pbD9vP3A/cj91cD92Zj8/aGM/aSZiP2M/ZG9sP2Y/bCFsZWNyZXY/b3Bhbj9yb2YmLWFuZXNlYz9hbmVzZWM/Pz9tP24mYSZwYXJ0P3J0Ji1hdHRlbHJhYi1haXJkbmE/YXR0ZWxyYWJhaXJkbmE/Pz9pbWlyP3JldD8/cD9yIWEmYj9pbGdhYz9zc2FzPz8/cyFpZG5pcmI/P3QmZWkmaGM/cj8/c2E/P3Y/P2wmYSFjPz9iP2M/byZtP3JpdCYtJmQmZXVzJi0mbml0bmVydD9vbml0bmVydD8/bml0bmVydD9vbml0bmVydD8/dXMmLSZuaXRuZXJ0P29uaXRuZXJ0Pz9uaXRuZXJ0P29uaXRuZXJ0Pz9cdTAwZmNzJi0mbml0bmVydD9vbml0bmVydD8/bml0bmVydD9vbml0bmVydD8/P3MmLW9uaXRuZXJ0P29uaXRuZXJ0Pz8/ZCZldXMhLSZuJmFzbCZhYj91Yj8/ZXpvYj9pdG5lcnQ/P29uaXRuZXJ0Pz9uaXRuZXJ0P29uaXRuZXJ0Pz91cyYtJm4mYXNsJmFiP3ViPz9lem9iP2l0bmVydD8/b25pdG5lcnQ/P25pdG5lcnQ/b25pdG5lcnQ/P1x1MDBmY3MhLSZuJmFzbCZhYj91Yj8/ZXpvYj9pdG5lcnQ/P29uaXRuZXJ0Pz9uaXRuZXJ0P29uaXRuZXJ0Pz8/cyYtb25pdG5lcnQ/b25pdG5lcnQ/Pz8/P20mYWM/Zj9pP29sP3I/P24mYSFsaW0/c2wmYWI/dWI/Pz9iP2M/ZSFlbi5jaix2P3pvYj8/aXJ1dD9tIXA/P3A/cj90Pz9vJmEhdj8/YiFyZXRpdj8/YyFjZWw/P2VudWM/ZyFpdm9yPz9pJmRlbSYtb25hZGlwbWFjP29uYWRpcG1hYz8/cG1ldCYtYWlibG8/YWlibG8/P3Jkbm9zP3phbD8/bD9tIWEmZ3JlYj9yZXQ/P29jP3JlJmY/bGFwPz8/biFhJmRpcG1hYyYtb2lkZW0/b2lkZW0/P2xpbT90c2lybz96bG9iPz9lY2lwJi1pbG9jc2E/aWxvY3NhPz9pJmJydSYtb3Jhc2VwP29yYXNlcD8/bGxldmE/cm90P3RuZXJ0Pz9yJmVsYXM/b3ZpbD8/dWxsZWI/P3A/ciFhJnNlcCYtb25pYnJ1P29uaWJydT8/em5hdGFjPz9vdW4/P3MhaXZlcnQ/c2Fib3BtYWM/P3QhYXJwP2UmbmV2P3Nzb3JnPz9uJmFyYXQ/ZSZnaXJnYT9ydD92ZW5lYj8/Pz96eiZlcmE/dXJiYT8/P3AmYT9vaHNkYWVycHN5bSxzP3Q/P3FhP3ImYSFtP3M/P2IhYT8/Yz9mP2c/az9tZT9vP3A/cz90P3Y/P3MmYSZiP2lzZWxnaSYtYWlub2JyYWM/YWlub2JyYWM/Pz9iP2M/ZWxwYW4/aT9tP28mdD94JmJpLG9iZGFpbGksPz9zP3Q/dj8/dCZhP2I/Yz9sP20/bm9tZGVpcD9vP3A/dj8/dSZkZT9sP24/cD8/diZhP29nP3A/cz90P3Y/P3kmZHJhYm1vbD9lbGxhdiYtYXRzb2E/YXRzb2E/P2xpY2lzP25hY3N1dD8/eiZhbD9iP2M/cD8/XHUwMGVjbHJvZiYtYW5lc2VjP2FuZXNlYz8/P2RlcmM/ZXI/Zj9tP3V0bmk/P2plM2EzYWJnbS0tbng/a2g/bCEudm9nP3VkYT8/bSEuJmdybz9tb2M/dGVuP3VkZT8/P24mYSZtb3JvY2tpdmRuYXM/cnVhdHNlcj90bnVvY2NhPz9lJmc/bSZlZ2FuYW0/cGl1cWU/P3I/P2khLnVlP20/b3BkbG9nPz9vcHVkP3VvY3NpZD8/byZiP2NzIS4mZW0sZ3JvLG9jLHZvZzouZWNpdnJlcywsPz9kP2c/aD9qP29mZXJhYj9wJmVkZW1vaD9zPz8/cCEuJmJld2FuaWdhcDMyMSxlbW9uP2dybz9sYnVwP21vYz90JmVuP25pPz91ZGU/dm9nPz8/ciZhIW0mbGF3P3M/Pz9lcHhlP29wJmVyP3B1cyEueXNyYWIsP3M/Pz9zIS4mYSZkYXhpYWJtZT9yYXJpayw/ZSZtb3RvYXM/cGljbmlycD9yb3RzPz9ncm8/bGltP21vYz9vJmM/ZGFsdXNub2M/aG8maWxlaCxuLD8/dGVuP3VkZT8/YWY/ZSZiP3I/dXE/P2khcm9sZj90bmVkPz9vJmghLiYycHcsZHVvbGNyaW0sZSZsZWosdGlzZWVyZiw/ZmxhaCxsJmVuYXB5c2FlLHJ1cG1ldCw/cyZwdnRzYWYsc2VjY2FkdW9sYyw/dCZlZ2RhZyxsb2IsbmVncmVtZSxzYWZ5bSw/diZlZHVtcHcscmVzaSw/Pz9wIXN1YT8/P3VydD8/dCEuJmVtYW4/Z3JvP2xpbT9tb2M/byZjP2ZuaT9ycD8/dGVuP3VkZT92b2c/emliPz9heWg/bj9vIWJiYT9pcnJhbT8/P3VvZ25haD94ZW4/eSEuZ3JvLD96dGVqPz91JjImNXRlOS0tbng/eXNzcC0tbng/P2EhLiZhJnM/dz8/Y2l2P2QmaT9scT8/Zm5vYz9ncm8/bW9jIS4mcG9oc2RhZXJwc3ltLHN0ZWxkdW9sYy5sZW0sPz9ucyZhP3JoLnNwdiw/c2F0P3QmY2E/ZW4/bj8/dWRlIS4mYSZzP3c/P2NpJmxvaHRhYz92Pz9kbHE/c2F0P3QmY2E/bj8/d3NuPz8/dm9nIS4mYSZzP3c/P2Npdj9kbHE/c2F0Pz8/d3NuP3pvPz90aT8/YyEuJmJvZz9mbmk/Z3JvP21vYz90JmFuP2VuPz91ZGU/P2k/P2QmZSEudGlyLnNlZ2FwLXRpZyw/aWFiPz9lIS4mZW1vaHNuZCxvZGFnb2QuY2l0c2FsZWoscHd0Y2VyaWQscyZlY2l2cmVzYmV3bm96YW1hLm5vLjEtdHNhZS1lZC1jc3VlLnBkaS1vdGluZ29jLmh0dWEsbmQmcHMsdW9sYyw/cnVlbGZ4dWVkLD93dnJwLHlzcmFiLD8/ZyEuJmJldz9ncm8/bSZhdWc/b2M/P29mbmk/dGVuP3VkZT92b2c/Pz9oIS4mMDAwMj9hJmNpdG9yZT9pZGVtP2tpdG9yZT8/ZWRzem90P2dybz9pbHVzP2xldG9oP20mYWxrZXI/bGlmP3Q/dXJvZj8/bmFsdGFnbmk/byZjP2VkaXY/Zm5pP2xldnlub2s/bmlzYWM/P3BvaHM/cmFyZ2E/cyZhJmthbD96YXR1Pz9lbWFnP3dlbj8/dCZsb2I/cm9wcz8/dmlycD94ZSZzP3pzPz95dGljP3pzYWdvaj8/b3M/c3V0Pz9sIS5ldGlzYmV3MzIxLD9tIS4mY2E/Z3JvP21vYz9vYz9ybz90ZW4/dm9nPz8/biEuJmR1b2xjZXNpcnByZXRuZSxlbmkmZXNyZW0sbSw/dGVua2NhaHMsP2VtIS4mZW5pbG5veXNyYWIseXNyYWIsPz8/byZnZ25hdz95IWM/Pz9yIS4mYSZpJmt5bWxhayxyaWtoc2FiLHZvZHJvbSw/eWVneWRhLD9icHMsY2EsZHVvbGNyaW0sZSZuaXJhbSxycGNtLD9nJmJjLHJvLD9pYW5hdHN1ayxrJmloY2xhbixzJm0scm9naXRheXAsPz9saSZhbWRsYy5iaCxtLD9tb2MsbmF0c2VnYWQsb25panltLHBwLHJpJmIsZCZjbTouc3B2LCxvcnVlLD9taWRhbHYsP3MmYXIsaXR5bSw/dCZlbixuaSw/dSY0YW4sZGUsP3ZvJmcsbiw/eW56b3JnLHpha3Zha2lkYWx2LD9teWM/cD91Zz8/cyEuJmEmZCZnb2xvdixuYWdhcmFrLD9ndWxhayxpJmdyb2VnLGt5bWxhayxsZXJhayxuZW1yYSxyaWtoc2FiLHNzYWthaGssdm9kcm9tLHphaGtiYSw/bHV0LHJhaGt1Yix2dXQseWVneWRhLHpuZXAsP2JwcyxkYSZiYWdoc2EscmdvbmlsZXN0LD9ndW5lbCxpJmFuYXRzdWssaGNvcyxvdmFuLHR0YWlsZ290LD9rJmFsaHN5Z25hbSxpaGNsYW4scyZsZWduYWhrcmEsbSxuJmEmbXJ1bSx5cmIsP2kmYnV5dGthLG5ibyw/P3Rpb3J0LHZvcmtvcCw/P2wmb2NhcmFrLHlibWFqLD9uYSZncnVrLGppYWJyZXphLHRzJmVnYWQsaGthemFrLSZodHJvbix0c2FlLD8/P292b25hdmksciZhZG9uc2FyayxpbWlkYWx2LD90JmVueGUsbmVrJmhzYXQsbWloYyw/P3ZvJmhzYWxhYixuLD95bnpvcmcseiZha3Zha2lkYWx2LGVtcmV0LD8/dCZhbW9rP2kmanVmP21hc2loPz8/P3YhLiZncm8/bW9jP3Rlbj91ZGU/Pz95a3V5cj8/diZiP2MhLiZkaT9lbW9uP2dybz9sYnVwP21vYz90JmVuP25pPz91ZGU/Pz9lZCEuJjJyLGEmLSZzaSx0b24tc2ksP3RlZCw/Y29kZWJlcmcsZCZhb2x5YXAsb29nLWEtc2ksP2UmZXJmLWtvcmduLGdhcm90cy4zdCxuaWxuaWdvbCx2YXJiLD9nJm5pZ2F0cy1vbmVkLG9sYnJhZWIsP2gmY2V0YWlkZW0sc2FkdG9iLD9pcGFlZ2Fyb3RzLjN0LGsmY2F0c2xsdWYtYS1zaSxvcmduLD9sJmUmY3JldixuYXAsP2xlY3BhZWwsb29jLXNpLD9uc3JoLG9uZWQscCZsOi4maXBhLHN0Y2VqYm8sPyxvaHN1bmV2aXYscGEtcmV0dGFscCxyZTouYmV3LCw/ciZkZGF5bSxleWFscGxhY29sLD9zJmVnYXAscmUma3JvdyxuaWF0bm9jbnVyLD8/dCZpJmxwZXI6LiZhcmlrLGQmZWVyLGkscmFjaXAsP2Uma2lwLHNhZWxlcmVycCw/ZnJvdyxnbmlnYXRzLGsmY29wcyxyaWssP2xhYm9sZyxtaWssbyZkbyxrc2lzLD9yZSZoY3JhLGsmYyZhaCx1dCw/aXIsPz9zJmVub2IsaXJhcCxtYWV0LD90aXByYXQsdWx1cyx5JmF3ZW5haixlbHNldyxyYW5hYyw/PyxteCw/bHVhdnJldmUueWFsZXIsP3ZyZXNpLHdlaXZlcnBidWh0aWcseCZkb20sb2JkbmFzLWFoY29tLD95JmxmLHNyYWIsPz8/aWg/bCEuJmRpP2Zub2M/Z3JvP2xpbT9tb2M/bnNhP3Rlbj91ZGU/dm9nPz8/bSEuJmVtYW4/Z3JvP2xpbT9tJm9jP3Vlc3VtPz9vJmZuaT9yJmVhP3A/Pz9wb29jP3QmZW4/bmk/P3VkZT92b2c/emliPz8/byZnP20/P3J0P3MhLiZib2c/ZGVyP2dybz9tb2M/dWRlPz8/dCEuJmFydWthcyxiZXctZWh0LW5vLG1vcmYsbmFodC0mZXNyb3cscmV0dGViLD9zbmRueWQsP2Q/aT93b24/P3VxaHYtLW54Pz93JmEhLm1vYz9sPz9iIS4mY2E/Z3JvP29jP3Rlbj92b2c/Pz9jIS4mZ3JvP21vYz90ZW4/dWRlPz9jcD8/ZSZpdmVyP24/cz8/ZyEueG4sP2shLiZibWU/ZG5pP2dybz9tb2M/dGVuP3VkZT92b2c/Pz9tIS4mY2E/Z3JvP21vYz9vYz9wb29jP3QmZW4/bmk/P3VkZT92b2c/emliPz9iPz9vJmNzb20/aCFzIS5zbSw/P24hLm55ZCw/dz8/cCEuJjM0NHgsc25kdW9sYyx2b2c/Pz9yIS4mY2E/Z3JvP2xpbT9vYz9wb29jP3Rlbj92b2c/P24/P3QhLiZidWxjP2VtYWc/Z3JvP2wmaW0/cnUsP21vYyEucmVsaWFteW0sP3NuZHltLHRlbj91ZGU/diZkaT9vZz8/emliZT8/P3ohLiZjYT9ncm8/bGltP29jP3ZvZz8/Pz94JmEhdD8/YyEuJmRlaGNyYWVzZXIsaHRhLG9mbmkscyZlenppdXEsbGVubnVmLG5kdW9sYyxyb3RhbHVjbGFjLHQmbmVtc3Nlc3NhLHNldCw/P3ZvZz93b255YXAsPz9lJmQmZWY/bmF5Pz9tYSFuYWI/P3JvZj9zPz9pbGZ0ZW4/anQ/bSEuJmJvZz9ncm8/bW9jP3Rlbj91ZGU/P2c/bWEyaWJneS0tbng/P28mYiF4Pz9mP3JleD8/cmJnbi0tbng/cyEudm9nPz94JmFtJmp0P2t0Pz94Pz8/eSY0cHVudS0tbng/N3JyMDMtLW54P2EmZCFpJmxvaD9yZmtjYWxiPz9vdCEuZW15ZmlsYXVxZXJwLD8/ZyEuc2VnYXAsP2xwP3AhaWxhPz9yb3Q/c3Npbj93ZGFvcmI/P2IhLiZmbz9oY2V0YWlkZW0sbGltP21vYz92b2c/P2FiP2d1cj8/YyEuJmNhP2R0bD9ncm8/bGltP20mb2MhLmVjcm9mZWxhY3Muaiw/dD8/b3JwP3MmZWdvbGtlP3NlcnA/P3Rlbj92b2c/emliPz9hbXJhaHA/bmVnYT8/ZCZkYWRvZz91dHM/P2Uma2NvaD9uJmR5cz9vbT9yb3R0YT8/c25pa2NtPz9nIS4mZ3JvP21vYz9vYz90ZW4/dWRlP3ZvZz8/b2xvbmhjZXQhLm9jLD9yZW5lPz9ocGFyZ290b2hwP2lkIS5lJm5pZ2FtaSxzcnVvY3NpZCw/P2shLiZncm8/bW9jP3Rlbj91ZGU/P3M/P2whLiZjbHA/ZCZlbT9pPz9ncm8/aGNzP21vYz90ZW4/dWRlP3ZvZz8/Zj9pbWFmIW5hY2lyZW1hPz9sJmE/aWw/P3BwdXM/P20hLiZlbWFuP2dybz9saW0/bW9jP3Rlbj91ZGU/dm9nP3ppYj8/ZWRhY2EhLmxhaWNpZmZvLD9yYT8/biZhcG1vYyEueG9ieW0sP29zPz9vJmo/cz8/cCEuJmdybz9saW0/bW9jP3Bvb2M/dGVuP3VkZT92b2c/Pz9yJmUmY29yZz9ncnVzP2xsYWc/dmlsZWQ/P2xld2VqP290Y2VyaWQ/dG51b2M/dXh1bD8/cyEuJmdybz9saW0/bW9jP3Rlbj91ZGU/dm9nPz8/dCZlZmFzP2kmYz9sZWRpZj9udW1tb2MhLiZiZG5ldmFyLGdvbixtdXJvZnltLD8/ciZhaGM/dWNlcz8/c3JldmludT8/bGFlcj9yJmFwP2Vwb3JwPz91YWViPz91IS4mYnVnP2dybz9saW0/bW9jP3Rlbj91ZGU/dmcsP2IhdHNlYj8/P3Zhbj94ZXM/P3omYSEuJmVtYW4/Z3JvP2xpbT9tb2M/byZjP2ZuaT9ycD8/cHA/dCZlbj9uaT8/dWRlP3ZvZz96aWI/Pz9iIS4mYXosZ3JvP2pzZyxtb2M/b2M/c25keW0sdGVuP3VkZT92b2c/Pz9jIS4mNGUsOXl4b3JwdG5ldG5vYy5jc3IsaW51bS5kdW9sYy4mcnN1LHRsZiw/bSZsYWVyLHVydG5lY2F0ZW0ubW90c3VjLD9vYyx2b2c/Pz9kIS4mY29zP2dybz9sb3A/bSZvYz90Pz9vc3NhP3QmZW4/cmE/P3VkZT92b2c/Pz9pYiEuJmR1b2xjc2QsZSZodC1yb2YsbW9zLXJvZixyb20tcm9mLD9pem9qLGxpYXJ0ZXZpdGNhLG5hZmFtbSxwJmkmLSZkdW9sYyxvbiw/Zmxlcyw/b2hiZXcsdGZ5bSw/cmV0dGViLXJvZixzbmQmbnlkLHVvbGMsP3hybyw/Zz8/ayEuJmR1b2xjaixncm8/bGltP21vYz90ZW4/dWRlP3ZvZz8/P20hLiZjYT9ncm8/bGltP29jP3Rlbj91ZGU/diZkYT9vZz8/Pz9uIS4mYXNxLWlyb20tLW54P2NhP2dybz9odGxhZWg/aSZyJmM/byZhbT9cdTAxMDFtPz8/d2khaz8/P2tlZWc/bCZpbT9vb2hjcz8/bmVnP29jP3NuZHVvbGMsdCZlbj9uZW1haWxyYXA/dm9nPz8/YSFuaWZsbGE/Pz9yYXdoY3M/cyEuJmNhP2dybz9vYz8/P3QhLiZjJmE/cz8/ZSZtP24/P2lib20/bCZldG9oP2ltPz9vJmM/Zm5pP2c/P3JvP3Z0Pz8/dSEuJmdybz9tb2M/b2M/dGVuPz9yd29uPz95eCEuJmUmbmllZmZhYyx4ZSw/aHNhZHRvYixsZW5udXRuZXBvLD8/enViPz9cdTAzYmJcdTAzYjU/XHUwM2M1XHUwM2I1P1x1MDQzMFx1MDQzMlx1MDQzYVx1MDQ0MVx1MDQzZVx1MDQzYz9cdTA0MzFcdTA0NDBcdTA0NDEhLiZcdTA0MzNcdTA0NDBcdTA0M2U/XHUwNDM0XHUwNDNlP1x1MDQzYVx1MDQzMD9cdTA0NDAmXHUwNDMxXHUwNDNlP1x1MDQzZiFcdTA0NDM/Pz8/P1x1MDQzMyZcdTA0MzE/XHUwNDQwXHUwNDNlPz9cdTA0MzRcdTA0M2FcdTA0M2M/XHUwNDM3XHUwNDMwXHUwNDliP1x1MDQzOFx1MDQ0Mlx1MDQzNVx1MDQzND9cdTA0M2FcdTA0MzhcdTA0M2JcdTA0M2VcdTA0NDJcdTA0MzBcdTA0M2E/XHUwNDNiXHUwNDM1XHUwNDMxP1x1MDQzY1x1MDQzZVx1MDQzYT9cdTA0M2QmXHUwNDM5XHUwNDMwXHUwNDNiXHUwNDNkXHUwNDNlP1x1MDQzZVx1MDQzYz8/XHUwNDQwXHUwNDNhXHUwNDQzP1x1MDQ0MVx1MDQ0M1x1MDQ0MCEuJlx1MDQzMFx1MDQ0MFx1MDQzMFx1MDQzY1x1MDQzMFx1MDQ0MSxcdTA0MzFcdTA0M2ZcdTA0NDEsXHUwNDMzXHUwNDQwXHUwNDNlLFx1MDQzN1x1MDQzOFx1MDQzMSxcdTA0MzhcdTA0NDdcdTA0M2VcdTA0NDEsXHUwNDNhXHUwNDQxXHUwNDNjLFx1MDQzYyZcdTA0M2VcdTA0M2EsXHUwNDRiXHUwNDQwXHUwNDNhLD9cdTA0NDBcdTA0MzhcdTA0M2MsXHUwNDRmLD8/XHUwNDQyXHUwNDM5XHUwNDMwXHUwNDQxP1x1MDQ0NFx1MDQ0MD9cdTA0NGVcdTA0MzU/XHUwNTc1XHUwNTYxXHUwNTcwP1x1MDVkY1x1MDVkMFx1MDVlOFx1MDVlOVx1MDVkOSEuJlx1MDVkMVx1MDVkNVx1MDVlOVx1MDVkOT9cdTA1ZDRcdTA1ZDlcdTA1ZGVcdTA1ZDNcdTA1ZTdcdTA1ZDA/XHUwNWRjJlx1MDVkNFx1MDVlNj9cdTA1ZTlcdTA1ZGVcdTA1ZGU/Pz8/XHUwNWRkXHUwNWQ1XHUwNWU3P1x1MDYyN1x1MDY0YSZcdTA2MzFcdTA2NDhcdTA2MzM/XHUwNjMzXHUwNjRhXHUwNjQ0XHUwNjQ1P1x1MDY0Nlx1MDYyN1x1MDYyYVx1MDY0YVx1MDYzMVx1MDY0OFx1MDY0NT8/XHUwNjI4XHUwNjMxJlx1MDYzOT9cdTA2M2FcdTA2NDVcdTA2NDRcdTA2Mjc/P1x1MDYyOSZcdTA2NDNcdTA2MjhcdTA2MzQ/XHUwNjRhJlx1MDYyZlx1MDY0OFx1MDYzOVx1MDYzM1x1MDY0NFx1MDYyNz9cdTA2MzFcdTA2NDhcdTA2MzM/P1x1MDZjY1x1MDYyZlx1MDY0OFx1MDYzOVx1MDYzM1x1MDY0NFx1MDYyNz8/XHUwNjJhJlx1MDYyN1x1MDYzMVx1MDYyN1x1MDY0NVx1MDYyNz9cdTA2MzFcdTA2MjcmXHUwNjI4P1x1MDY4MD9cdTA2YmVcdTA2Mjg/Pz9cdTA2MzEmXHUwNjI2XHUwNjI3XHUwNjMyXHUwNjJjXHUwNjQ0XHUwNjI3P1x1MDYyN1x1MDYzMlx1MDYyN1x1MDYyOD9cdTA2MzVcdTA2NDU/XHUwNjM3XHUwNjQyPz9cdTA2MzNcdTA2NDZcdTA2NDhcdTA2MmE/XHUwNjM5XHUwNjQyXHUwNjQ4XHUwNjQ1P1x1MDY0Mlx1MDYyN1x1MDYzMVx1MDYzOT9cdTA2NDMmXHUwNjJhXHUwNjRhXHUwNjI4P1x1MDY0YVx1MDY0NFx1MDY0OFx1MDYyYlx1MDYyN1x1MDY0Mz8/XHUwNjQ1XHUwNjQ4XHUwNjQzP1x1MDY0NiZcdTA2MjcmXHUwNjJhXHUwNjMzJlx1MDY0M1x1MDYyN1x1MDY3ZT9cdTA2YTlcdTA2MjdcdTA2N2U/P1x1MDYyZlx1MDY0OFx1MDYzMz9cdTA2MzEmXHUwNjRhXHUwNjI3P1x1MDZjY1x1MDYyNz8/XHUwNjQ1XHUwNjM5P1x1MDY0YVx1MDY0NFx1MDYzOVx1MDY0NFx1MDYyNz8/XHUwNjJmXHUwNjMxXHUwNjI3XHUwNjQ0XHUwNjI3P1x1MDY0NVx1MDY0YVx1MDY0NFx1MDYyNz9cdTA2NGEmXHUwNjMxXHUwNjJkXHUwNjI4XHUwNjQ0XHUwNjI3P1x1MDYzN1x1MDYzM1x1MDY0NFx1MDY0MT8/P1x1MDY0NyZcdTA2MjdcdTA2MzFcdTA2NDVcdTA2NDc/XHUwNjRhXHUwNjJmXHUwNjQ4XHUwNjM5XHUwNjMzXHUwNjQ0XHUwNjI3Pz9cdTA2NDhcdTA2NDNcdTA2NDVcdTA2MjdcdTA2MzFcdTA2Mjc/XHUwNjRhXHUwNjI4XHUwNjM4XHUwNjQ4XHUwNjI4XHUwNjI3P1x1MDZjM1x1MDZjY1x1MDYyZlx1MDY0OFx1MDYzOVx1MDYzM1x1MDY0NFx1MDYyNz9cdTA5MWZcdTA5NDdcdTA5Mjg/XHUwOTI0Jlx1MDkzMFx1MDkzZVx1MDkyZD9cdTA5NGJcdTA5MzBcdTA5M2VcdTA5MmQ/P1x1MDkyOFx1MDkyMFx1MDkxN1x1MDkwMlx1MDkzOD9cdTA5MmVcdTA5NDlcdTA5MTU/XHUwOTRkXHUwOTJlXHUwOTI0XHUwOTMwXHUwOTNlXHUwOTJkP1x1MDlhNCZcdTA5YjBcdTA5YmVcdTA5YWQ/XHUwOWYwXHUwOWJlXHUwOWFkPz9cdTA5YmVcdTA5YjJcdTA5ODJcdTA5YmVcdTA5YWM/XHUwYTI0XHUwYTMwXHUwYTNlXHUwYTJkP1x1MGFhNFx1MGFiMFx1MGFiZVx1MGFhZD9cdTBiMjRcdTBiMzBcdTBiM2VcdTBiMmQ/XHUwYmJlXHUwYmFmXHUwYmJmXHUwYmE0XHUwYmNkXHUwYmE4XHUwYjg3P1x1MGJjOFx1MGI5NVx1MGJjZFx1MGI5OVx1MGJiMlx1MGI4Nz9cdTBiY2RcdTBiYjBcdTBiYzJcdTBiYWFcdTBiY2RcdTBiYWFcdTBiOTVcdTBiY2RcdTBiOTlcdTBiYmZcdTBiOWE/XHUwYzRkXHUwYzI0XHUwYzMwXHUwYzNlXHUwYzJkP1x1MGNhNFx1MGNiMFx1MGNiZVx1MGNhZD9cdTBkMDJcdTBkMjRcdTBkMzBcdTBkM2VcdTBkMmQ/XHUwZGNmXHUwZDlhXHUwZDgyXHUwZGJkP1x1MGUyMVx1MGUyZFx1MGUwND9cdTBlMjJcdTBlMTdcdTBlNDQhLiZcdTBlMDhcdTBlMzRcdTBlMDFcdTBlMjNcdTBlMzhcdTBlMTg/XHUwZTE1XHUwZTQ3XHUwZTE5XHUwZTQwP1x1MGUyMyZcdTBlMDFcdTBlNGNcdTBlMDRcdTBlMDdcdTBlMmQ/XHUwZTMyXHUwZTJiXHUwZTE3Pz9cdTBlMjVcdTBlMzJcdTBlMWFcdTBlMTBcdTBlMzFcdTBlMjM/XHUwZTMyXHUwZTI5XHUwZTAxXHUwZTM2XHUwZTI4Pz8/XHUwZWE3XHUwZWIyXHUwZWE1P1x1MTBkNFx1MTBkMj9cdTMwNmFcdTMwOTNcdTMwN2Y/XHUzMGEyXHUzMGM4XHUzMGI5P1x1MzBjOFx1MzBmM1x1MzBhNFx1MzBkZD9cdTMwYzlcdTMwYTZcdTMwZTlcdTMwYWY/XHUzMGUwXHUzMGIzP1x1MzBlYiZcdTMwYjBcdTMwZmNcdTMwYjA/XHUzMGZjXHUzMGJiPz9cdTMwZjMmXHUzMGJlXHUzMGRlXHUzMGEyP1x1MzBlN1x1MzBiN1x1MzBjM1x1MzBhMVx1MzBkNT8/XHU0ZTFhXHU0ZjAxP1x1NGUxY1x1NWU3Zj9cdTRlNTBcdTVhMzE/XHU0ZjYwXHU3MjMxXHU2MjExP1x1NGZlMVx1NGUyZD9cdTUyYTFcdTY1M2Y/XHU1MmE4XHU3OWZiP1x1NTM1YVx1NWZhZT9cdTUzNjZcdTUxNmI/XHU1Mzg1XHU5OTEwP1x1NTNmOFx1NTE2Yz9cdTU0YzFcdTk4ZGY/XHU1NTg0XHU2MTQ4P1x1NTZlMlx1OTZjNj9cdTU2ZmRcdTRlMmQ/XHU1NzBiXHU0ZTJkP1x1NTc0MFx1N2Y1MT9cdTU3NjFcdTUyYTBcdTY1YjA/XHU1N2NlXHU1NTQ2P1x1NWMxYVx1NjVmNj9cdTVjNzFcdTRmNWI/XHU1ZTk3Jlx1NTU0Nj9cdTdmNTE/XHU5MTUyXHU1OTI3XHU5MWNjXHU1NjA5Pz9cdTVlOWNcdTY1M2Y/XHU1ZWI3XHU1MDY1P1x1NjA2Zlx1NGZlMT9cdTYyMGZcdTZlMzg/XHU2MmM5XHU5MWNjXHU2ODNjXHU5OTk5P1x1NjJmZlx1NTkyNz9cdTY1NTlcdTRlM2JcdTU5Mjk/XHU2NzNhXHU2MjRiP1x1Njc4NFx1NjczYSFcdTdlYzdcdTdlYzQ/P1x1NjgwN1x1NTU0Nj9cdTZiNGNcdThjMzc/XHU2ZDY2XHU1MjI5XHU5OGRlP1x1NmUyZlx1OTk5OSEuJlx1NGViYVx1NTAwYj9cdTUzZjhcdTUxNmM/XHU1ZTljXHU2NTNmP1x1N2Q2MVx1N2RiMj9cdTdlNTRcdTdkNDQ/XHU4MGIyXHU2NTU5Pz8/XHU2ZTdlXHU1M2YwP1x1NzA2MyZcdTUzZjA/XHU4MWZhPz9cdTcyNjlcdThkMmQ/XHU3NTRjXHU0ZTE2P1x1NzZjYVx1NTE2Yz9cdTc3MGJcdTcwYjk/XHU3OWQxXHU3NmM4XHU4YTBhXHU5NmZiP1x1N2FkOVx1N2Y1MT9cdTdjNGRcdTY2Zjg/XHU3ZWJmXHU1NzI4P1x1N2VkY1x1N2Y1MT9cdTdmNTFcdTY1ODdcdTRlMmQ/XHU4MDU4XHU2MmRiP1x1OGNhOVx1OTAxYT9cdTkwMGFcdTlhNmNcdTRlOWE/XHU5MDFhXHU4MDU0P1x1OTFjY1x1NTYwOT9cdTk1MjFcdTlhNmNcdTZkZTE/XHU5NTgwXHU2ZmIzP1x1OTVlOFx1NmZiMz9cdTk1ZmJcdTY1YjA/XHU5NmZiXHU1YmI2P1x1YWQ2ZFx1ZDU1Yz9cdWIxMzdcdWIyZjc/XHVjMTMxXHVjMGJjP1x1Y2VmNFx1YjJmNz8/Iik7CnRoaXMud2E9QmxkKCIma2Mud3d3P3BqLiZhJm1haG9rb3kueXRpYz95b2dhbi55dGljPz9lYm9rLnl0aWM/aSZhZG5lcy55dGljP2thc2F3YWsueXRpYz8/b3JvcHBhcy55dGljP3Voc3V5a2F0aWsueXRpYz8/PyIpO3RoaXMua2E9QmxkKCImYWMudmVkd2EsYnVwLiZkaSxuaWssP2N2LmUwLGR1b2xjLiZldGlzb3RuZWdhbSxuZGN0ZWdlYixyZWhjbmFyLW5vLHNjaXRhdHMsP2UmYi5scnVzbmFydCxkLiZlY25hdHNuaS1zby1kdW9sY3diLHRjZW5ub2Nub25leCx5a3N1cmYsP2xwcGEudG5pLmR1b2xjOi5yOi4mMS0maHQmcm9uLSZwYSx1ZSw/dW9zLXBhLD9sYXJ0bmVjLSZzdSx1ZSw/dHMmYWUtc3UsZXctc3UsPz8yLSZodHVvcy1wYSxsYXJ0bmVjLXN1LHRzJmFlLXN1LGV3LXN1LD8/My10c2V3LXN1LD8sLG5vJi5uaWssei4mbm90aXJ0LHNwb3Jleiw/P3QmYXRzZS5ldHVwbW9jLGlzLiZhcmVkdW9sYyxoc21yb2Z0YWxwLHRzdCw/P3ZpbC5wd2UsP2cmZy55bHAudGEsb29nLnRuZXRub2NyZXN1LHA/P2hjLnRlbmVyaWY6LmN2cywsayZjP2Y/bmlsLiZiZXdkLHJlc3dvcmJuaSw/cm93dGVuLnNlY2xhLHUuJmhjcz9zcHBhZHVvbGN2b2dlbGNhcm8sPz9sbi5scnVzbmFydCxtJmYucmVzdSxqP20/b2MuJmQmb20tdm9nLXN1LXAzLW5haXNzYWx0YSx1b2xjJi1yZXZlbGMuc2VjaXZyZXMsbWVhZWJvZGEudmVkLD8/ZSZjcm9mc2VsYXMubXJvZnRhbHAuZ3RzLXJlZGxpdWItZWRvYy50c2V0LjEwMCxkbyZjLnJlZGxpdWI6LSZndHMsdmVkLD8sbmlsLnJlY25hbGFiZWRvbiw/P2ljby1yZW1vdHN1YzouJmljbyxwY28sc2NvLD8sbCZhdHJvcHFoeWxhdXEscmlod3lhcCw/bW1lMCxwMy0mZGV0YWxvc2ktbmFpc3NhbHRhLG5haXNzYWx0YSw/cmVuJm51cnBwYXN3YSx0cmFwcWh5bGF1cSw/cyZlY2Fwc25hZWNvbGF0aWdpZCxwcGEmZHVvbGMmZWxjYXJvLHZvZ2VsY2Fybyw/bml2ZWQsP3QmY2VqYm8mZWRvbmlsLHJ0bHV2LD9uZW1lbGVwaXVxLD93YW5vemFtYS4mMS1ldHVwbW9jLGJsZSxldHVwbW9jLHNkci4mMS0maHR1b3MtJmVtLGZhLHBhLD9sYXJ0bmVjLSZhYyxlbSxsaSx1ZSx4bSw/dHMmYWUmLSZhcyxwYSxzdSx2b2ctc3UsP2h0JnJvbi0mcGEsc3UsP3Vvcy1wYSw/P2V3LSZhYyxzdSx1ZSx2b2ctc3UsPz8/Mi0maHR1b3MtcGEsbGFydG5lYy11ZSx0cyZhZSYtJnBhLHN1LD9odCZyb24tcGEsdW9zLXBhLD8/ZXctJnN1LHVlLD8/PzMtdHMmYWVodCZyb24tcGEsdW9zLXBhLD9ldy11ZSw/NC10c2FlaHR1b3MtcGEsNS10c2FlaHR1b3MtcGEsNi10c2FlaHR1b3MtcGEsNy10c2FlaHR1b3MtcGEsP3dvbGZyaWEuJjEtJmh0JnJvbi11ZSx1b3MtJmVtLGZhLHBhLHVlLD8/bGFydG5lYy0mYWMsZW0sbGksdWUsP3RzJmFlJi0mYXMscGEsc3UsP2h0JnJvbi1wYSx1b3MtcGEsPz9ldy0mYWMsc3UsdWUsPz8/Mi0maHR1b3MtJnBhLHVlLD9sYXJ0bmVjLXVlLHRzJmFlJi1zdSxodCZyb24tcGEsdW9zLXBhLD8/ZXctJnN1LHVlLD8/PzMtdHMmYWVodCZyb24tcGEsdW9zLXBhLD9ldy11ZSw/NC10c2FlaHR1b3MtcGEsNS10c2FlaHR1b3MtcGEsNy10c2FlaHR1b3MtcGEsPz8/dCZuZXRub2NyZXN1JmFydHVsLGkmYSZhdGVtLG8sP3VhLD8/b3BzcHBhLnIsPz8/biZjLm1vYy5zJmVjaXZyZXNiZXdub3phbWEubm8uMS0maHRyb24tbmMud29sZnJpYSx0c2V3aHRyb24tbmMud29sZnJpYSw/d2Fub3phbWEuJjEtJmh0cm9uLW5jLnNkcix0c2V3aHRyb24tbmMuc2RyLD9ibGUsZXR1cG1vYyx3b2xmcmlhLjEtJmh0cm9uLW5jLHRzZXdodHJvbi1uYyw/Pz91ci4mZGxpdWIsZSZkb2Msc2FiYXRhZCx0aXJ3cHBhLD9ub2l0YXJnaW0sPz9vJmMuJmFwZHIucyZyZXRzdWxjLHNlbHJ2cnMsP3BhdG8sdGlteCw/aS4mMHBjaS53YXIsMXBjaS53YXIsZSZsYWNzbm9vbSx2YXJiLnMsP25yb2NhLW5vLG9pci1ubyxyZW5pYXRub2NlcnV6YSxzJjNrLW5vLG9sb3RzLD94Y3Euc3lzLD8/cCZqLiZhJm1haG9rb3k/eW9nYW4/P2Vib2s/aSZhZG5lcz9rYXNhd2FrPz9vcm9wcGFzP3Voc3V5a2F0aWs/P24/b3QubGRhdyxwYS4mZGV0c29oLGUma2FsZndvbnM6LmtuaWxldGF2aXJwLCx2YXJiLnMsP2tuYWxmaHRyb24sbnUmcjouc2x0bSwsc3B1LD9yZXBvbGV2ZWQsc3BvcmV6LHRlZ2ViLD8/ciZiLm1vbj9lPz9zJmVkb2Mub3dvLHVscC50aXlhbHAudGEsdyYucm9zaXZkYSxhLiZuby4mMS0maHQmcm9uLXVlLndvbGZyaWEsdW9zLSZlbS53b2xmcmlhLGZhLndvbGZyaWEscGEud29sZnJpYSx1ZS53b2xmcmlhLD8/bGFydG5lYy0mYWMud29sZnJpYSxlbS53b2xmcmlhLGxpLndvbGZyaWEsdWUud29sZnJpYSw/dHMmYWUmLSZhcy53b2xmcmlhLHBhLndvbGZyaWEsc3Uud29sZnJpYSw/aHQmcm9uLXBhLndvbGZyaWEsdW9zLXBhLndvbGZyaWEsPz9ldy0mYWMud29sZnJpYSxzdS53b2xmcmlhLHVlLndvbGZyaWEsPz8/Mi0maHR1b3MtJnBhLndvbGZyaWEsdWUud29sZnJpYSw/bGFydG5lYy11ZS53b2xmcmlhLHRzJmFlJi1zdS53b2xmcmlhLGh0JnJvbi1wYS53b2xmcmlhLHVvcy1wYS53b2xmcmlhLD8/ZXctJnN1LndvbGZyaWEsdWUud29sZnJpYSw/Pz8zLXRzJmFlaHQmcm9uLXBhLndvbGZyaWEsdW9zLXBhLndvbGZyaWEsP2V3LXVlLndvbGZyaWEsPzQtdHNhZWh0dW9zLXBhLndvbGZyaWEsNS10c2FlaHR1b3MtcGEud29sZnJpYSw/cmVrYW1lZ2FzLnN0bmVtaXJlcHhlLHRzb3Blci5ldGF2aXJwLD8/P3QmYS4mb2ZuaXN0cm8uJm5lZG51ayx4ZSw/c21jZXJ1dHVmOi4mbmkseGUsPyw/ZW4uJmNpbW9ub3RweXJjLGh2by4mZ25pdHNvaCxzYWFwYmV3LD9vdGxhY29sLHBjaSxzdC5jLD9zLm5jLD91JmUuJmF4bixscnVzbmFydCw/ci5vbmlqeW0uJmduaSZkbmFsLHRzb2gsP211cnRjZXBzLHNwdiw/P3ZlZC4mZSZnYXRzJmd0cyxsY2wsP3JhaGJldyx2YXJiLnMsP2d0cyxsY2wsbXJjLiZhJmEscCx3LD9iJmEscCx3LD9jJmEscCx3LD9kOmEscCx3LCxlJmEscCx3LD9mJmEscCx3LD9pYyx3LD9yZXN3b3JibmksdHJlY2xhY29sLnJlc3UseWF3ZXRhZyw/eiZjLm11cnRuZWNhdGVtLmR1b2xjLHl4LnRpYmVsZXQsPz8iKX19O18ubWRkPXpsZDsKfWNhdGNoKGUpe18uX0R1bXBFeGNlcHRpb24oZSl9CnRyeXsKXy5uZGQ9ZnVuY3Rpb24oYSxiKXthPV8uWDZiKG5ldyBfLmxyKGEsYikpO2I9Xy5Xa2EoKTtiIT1udWxsJiZhLnNldFByb2R1Y3RJRChiKTtyZXR1cm4gYX07Cn1jYXRjaChlKXtfLl9EdW1wRXhjZXB0aW9uKGUpfQp0cnl7Cl8uT2NkPWZ1bmN0aW9uKGEpe2E9YXx8d2luZG93LmV2ZW50OyJzdG9wUHJvcGFnYXRpb24iaW4gYT9hLnN0b3BQcm9wYWdhdGlvbigpOmEuY2FuY2VsQnViYmxlPSEwfTsKfWNhdGNoKGUpe18uX0R1bXBFeGNlcHRpb24oZSl9CnRyeXsKXy5IY2Q9ISEoXy5PaVsxN10mNjQpO18uSWNkPSEhKF8uT2lbMTddJjEyOCk7Xy5KY2Q9ISEoXy5PaVsxN10mMjU2KTtfLktjZD0hIShfLk9pWzE3XSY1MTIpO18uTGNkPSEhKF8uT2lbODhdPj4yNSYxKTsKfWNhdGNoKGUpe18uX0R1bXBFeGNlcHRpb24oZSl9CnRyeXsKdmFyIFBjZCxUY2Q7UGNkPWZ1bmN0aW9uKGEsYixjKXtiPWJ8fF8uamcoYSk7Impyd3QiaW4gYnx8KHdpbmRvdy5yd3QoYSxiLmNkfHwiIixiLnVzZ3x8IiIsIiIsYi52ZWR8fCIiLE51bWJlcihiLmF1KXx8bnVsbCxiLnBzaWd8fCIiLGMpLF8uZmcoYSwianJ3dCIsIjEiKSk7cmV0dXJuITF9OwpfLlNjZD1mdW5jdGlvbihhLGIsYyxkLGUsZixnLGgsayxtLG4scCl7dmFyIHI9bmV3IF8uUmUoYCR7UWNkJiZ3aW5kb3cubG9jYXRpb24uaG9zdG5hbWUhPT0iZW5jcnlwdGVkLmdvb2dsZS5jb20iJiYhYS5zdGFydHNXaXRoKCJodHRwczoiKT9gaHR0cDovLyR7d2luZG93LmxvY2F0aW9uLmhvc3RuYW1lfSR7Z29vZ2xlLmtQVFA/YDoke2dvb2dsZS5rUFRQfWA6IiJ9YDoiIn0vdXJsYCx7ejZiOl8uSkthfSkseD1yLnNlYXJjaFBhcmFtczt4LnNldCgic2EiLGU/ImkiOiJ0Iik7KGN8fFFjZCkmJnguc2V0KCJyY3QiLCJqIik7aWYoYil4LnNldCgicSIsZnx8IiIpO2Vsc2UgaWYoY3x8UWNkKXguc2V0KCJxIiwiIikseC5zZXQoImVzcmMiLCJzIik7UWNkJiZSY2QmJnguc2V0KCJmcm0iLCIxIik7eC5zZXQoInNvdXJjZSIsZ29vZ2xlLnNuKTt4LnNldCgiY2QiLGcpO2QmJmQuYnV0dG9uJiZkLmJ1dHRvbj09PTImJih4LnNldCgiY2FkIiwicmphIikseC5zZXQoInVhY3QiLCI4IikpO3guc2V0KCJ2ZWQiLApoKTt4LnNldCgidXJsIixhKTtrJiZ4LnNldCgiYXV0aHVzZXIiLGsudG9TdHJpbmcoKSk7bSYmeC5zZXQoInVzZyIsbSk7biYmeC5zZXQoInNpZzIiLG4pO2lmKGUpe2xldCBbeixCXT1lLnNwbGl0KCImdXN0PSIpO3guc2V0KCJwc2lnIix6fHwiIik7eC5zZXQoInVzdCIsQnx8IiIpfV8uRm1hKHgsITEsITApO2lmKHApZm9yKGxldCBbeixCXW9mIE9iamVjdC5lbnRyaWVzKHApKXguYXBwZW5kKHosYCR7Qn1gKTtyZXR1cm4gci50b1N0cmluZygpfTtUY2Q9ZnVuY3Rpb24oYSxiKXt3aW5kb3cuZXZlbnQmJnR5cGVvZiB3aW5kb3cuZXZlbnQuYnV0dG9uPT09Im51bWJlciImJl8uZmcoYiwiY3RidG4iLFN0cmluZyh3aW5kb3cuZXZlbnQuYnV0dG9uKSk7Xy5mZyhiLCJjdGhyZWYiLGEpfTt2YXIgUmNkPSExLFVjZD0hMSxRY2Q9ITEsVmNkPSEwO18uaGUoZG9jdW1lbnQsImNsaWNrIixmdW5jdGlvbihhKXthPWF8fHdpbmRvdy5ldmVudDtpZighYS5kZWZhdWx0UHJldmVudGVkKXt2YXIgYj1fLk1nKGEudGFyZ2V0fHxhLnNyY0VsZW1lbnQsZT0+Xy5SZyhlKSYmXy5oZyhlLCJjdGhyZWYiKSwhMCk7aWYoYil7dmFyIGM9Xy5nZyhiLCJjdGhyZWYiKSxkO18uaGcoYiwiY3RidG4iKSYmKGQ9TnVtYmVyKF8uZ2coYiwiY3RidG4iKSkpO2EuYWx0S2V5fHxhLmN0cmxLZXl8fGEuc2hpZnRLZXl8fGEubWV0YUtleXx8YS5idXR0b24mJmEuYnV0dG9uIT09MHx8TnVtYmVyKGQpPjF8fGIudGFyZ2V0fHwoXy5jZihjKSxfLk9jZChhKSxhLnByZXZlbnREZWZhdWx0JiZhLnByZXZlbnREZWZhdWx0KCksYS5yZXR1cm5WYWx1ZT0hMSl9fX0pOwpfLktzYSgiY3IiLHtpbml0OmZ1bmN0aW9uKGEpe2EmJk9iamVjdC5rZXlzKGEpLmxlbmd0aCYmKFJjZD1hLnVmZixVY2Q9YS5yY3RqLFFjZD1hLnJlZixWY2Q9YS5xaXIpfX0pOwpfLkxpKCJyd3QiLGZ1bmN0aW9uKGEsYixjLGQsZSxmLGcsaCxrPXt9KXt0cnl7aWYoYT09PXdpbmRvdylmb3IoYT1hLmV2ZW50LnNyY0VsZW1lbnQ7YSYmIWEuaHJlZjspYT1hLnBhcmVudE5vZGU7bGV0IG09Xy5HZygicSIpLG49VmNkJiYoVWNkfHxRY2QpLHA9YS5nZXRBdHRyaWJ1dGUoImhyZWYiKTtfLmdnKGEsImdjamVpZCIpJiYoay5nY2plaWQ9Xy5nZyhhLCJnY2plaWQiKSk7bGV0IHI9Xy5TY2QocCxuLFVjZCxoLGcsbSxiLGUsZixjLGQsaykseD1lbmNvZGVVUklDb21wb25lbnQobSk7aWYoci5sZW5ndGg+MjAzOClpZihuJiZyLmxlbmd0aC14Lmxlbmd0aDw9MjAzOClyPXIucmVwbGFjZSh4LHguc3Vic3RyaW5nKDAseC5sZW5ndGgtKHIubGVuZ3RoLTIwMzgpKSk7ZWxzZSByZXR1cm4gXy5QZSgidXhsIiwiJmVpPSIrKDAsXy52bS5peCkoKSksITA7Xy5YYyhhLF8uRGMocikpOyhVY2R8fFFjZCkmJlRjZChyLGEpO2Eub25tb3VzZWRvd249KCk9Pnt9fWNhdGNoKG0pe31yZXR1cm4hMH0pOwpfLkxjZCYmXy5MaSgianNhcnd0IixQY2QpOwp9Y2F0Y2goZSl7Xy5fRHVtcEV4Y2VwdGlvbihlKX0KdHJ5ewp2YXIgcWRkLG9kZCxwZGQscmRkLHlkZDtxZGQ9ZnVuY3Rpb24oe2V2ZW50SWQ6YSxHY2M6YixNZTpjLFJlOmQsQnE6ZSxjWWE6Zn0pe3ZhciBnPV8uU1RhKG5ldyBfLlNwLDExKTthPW9kZChhLGIsYyxlKTtfLldUYShnLGEuRmMoKSk7YT1uZXcgXy5MVGE7Yj1uZXcgXy5KVGE7ZCYmXy5JVGEoYiwiMSIrZC52ZWQrIi4uIitwZGQoZC5HSykpO2MmJl8uZmgoYiwxLGMudmVkKTtfLlNiKGEsXy5KVGEsMixiKTtmJiZfLmZoKGEsOCxmKTtfLlVUYShnLGEuRmMoKSk7cmV0dXJuIGd9O29kZD1mdW5jdGlvbihhLGIsYyxkPW5ldyBfLkhwKXthPShuZXcgXy5iVWEpLm9hKF8uSndhKGEpKTtiPV8uSGooYSwyLGIpO2MmJih0eXBlb2YgYy5UbT09PSJudW1iZXIiJiZfLkdwKGQsYy5UbSksYy51c2VyQWN0aW9uJiZfLkNUYShkLGMudXNlckFjdGlvbikpO18uYVVhKGIsZCk7cmV0dXJuIGJ9OwpwZGQ9ZnVuY3Rpb24oYSl7c3dpdGNoKGEpe2Nhc2UgMzpyZXR1cm4iaSI7Y2FzZSAxOnJldHVybiJzIjtjYXNlIDI6cmV0dXJuImgiO2RlZmF1bHQ6cmV0dXJuIiJ9fTtyZGQ9ZnVuY3Rpb24oKXt2YXIgYT1fLkZrYSgpO2lmKGEuaW5kZXhPZigidmVpbC5nb29nIikhPT0tMSl7dmFyIGI9Xy5CZCgiekNoSm9kIik7Yj1iLkxiKCk/Xy51bShiLF8uaUViKTp2b2lkIDA7Yj1iIT09dm9pZCAwJiZfLnBoKGIsMik/Xy50KGIsMik6dm9pZCAwO2lmKGIpcmV0dXJuIGJ9cmV0dXJuImh0dHBzOi8vd3d3Lmdvb2dsZS4iKygoMCxfLm1kZCkoYSl8fCJjb20iKSsiL2xvZz9mb3JtYXQ9anNvbiZoYXNmYXN0PXRydWUifTsKXy5uRj1mdW5jdGlvbih7T2U6YSxpbnRlcmFjdGlvblZlZDpiLHZoYTpjPSExLGNZYTpkfSl7dmFyIGU9bmV3IGNsYXNze2NyZWF0ZShmLGcpe3JldHVybiBxZGQoe2V2ZW50SWQ6ZixSZTphP25ldyBzZGQoYSk6dm9pZCAwLE1lOmI/bmV3IHRkZChiKTp2b2lkIDAsR2NjOmcsY1lhOmR9KX19O3JldHVybiBuZXcgXy51ZGQoKDAsXy52ZGQpKCksZSxjKX07Xy54ZGQ9ZnVuY3Rpb24oKXt2YXIgYT1uZXcgd2RkO3JldHVybntXZGE6YSxSdTooe09lOmIsaW50ZXJhY3Rpb25WZWQ6Yyx2aGE6ZD0hMSxCcTplLGNZYTpmfSk9Pnt2YXIgZz1hLmthLmJ1aWxkKCk7Zy5sZW5ndGgmJihiPXFkZCh7ZXZlbnRJZDphLmthLmV2ZW50SWQsR2NjOmcsTWU6Yz9uZXcgdGRkKGMpOnZvaWQgMCxSZTpiP25ldyBzZGQoYik6dm9pZCAwLEJxOmUsY1lhOmZ9KSxjPSgwLF8udmRkKSgpLGMuZGlzcGF0Y2goYiksZCYmYy5mbHVzaCgpKX19fTsKeWRkPWZ1bmN0aW9uKGEpe3ZhciBiPV8uWDZiKF8ubmRkKDU5NixTdHJpbmcoXy5DZChfLkJkKCJRcnR4SyIpLDApKSkpO2IuU3ZhPWE7cmV0dXJuIGJ9O3ZhciB6ZGQ9bmV3IF8uUmIoMjYwLF8uanAsbnVsbCwxLF8uUmosXy5Eayk7Xy5rcFsyNjBdPV8uRWw7dmFyIEFkZD17dmlzaWJsZTowLGhpZGRlbjoxLGNoaWxkcmVuX2hpZGRlbjozLHJlcHJlc3NlZF9jb3VudGVyZmFjdHVhbDoyLHJlcHJlc3NlZF9wcml2YWN5OjR9LEJkZD1mdW5jdGlvbihhLGIpe3JldHVybiBiLkJuYnx8YS5vYS5zb21lKGM9PmMuQm5iKX0sQ2RkPWZ1bmN0aW9uKGEpe3ZhciBiPW5ldyBfLlBuLGM9YS5rYS5sZW5ndGgtMTtpZihjPDApcmV0dXJuIiI7dmFyIGQ9YS5rYVtjXTtfLm5LYShiLF8uY2koZCwxKSk7Xy5sayhiLDEsYyk7Xy53ZShkLDMpJiYoYz1fLnhlKGQsMywtMSksXy5sayhiLDUsYykpO2E9Xy5Kd2EoYS5ldmVudElkKTtfLlNiKGIsXy5BZSwxMyxhKTtyZXR1cm4gXy5lVGEobmV3IF8uZlRhKGIpKX0sRGRkPWNsYXNze2NvbnN0cnVjdG9yKCl7dGhpcy5ldmVudElkPV8uYlRhKys7dGhpcy5rYT1bXTt0aGlzLm9hPVtdO3RoaXMud2E9W119YnVpbGQoKXtyZXR1cm4gXy5HYSh0aGlzLmthKX19O3ZhciBFZGQsd2RkO18udWRkPWNsYXNze2NvbnN0cnVjdG9yKGEsYixjPSExKXt0aGlzLnRyYW5zcG9ydD1hO3RoaXMua2E9Yjt0aGlzLnZoYT1jO3RoaXMuV2RhPW5ldyB3ZGR9d2EoYSl7cmV0dXJuIHRoaXMuV2RhLndhKGEpfW9hKCl7dGhpcy5XZGEub2EoKX1kaXNwYXRjaCgpe3ZhciBhPXRoaXMuV2RhLmthLmJ1aWxkKCk7YS5sZW5ndGgmJihhPXRoaXMua2EuY3JlYXRlKHRoaXMuV2RhLmthLmV2ZW50SWQsYSksdGhpcy50cmFuc3BvcnQuZGlzcGF0Y2goYSksdGhpcy52aGEmJnRoaXMudHJhbnNwb3J0LmZsdXNoKCksdGhpcy5XZGE9bmV3IHdkZCl9fTtFZGQ9ZnVuY3Rpb24oYSxiLGMpe3ZhciBkPV8uQ2QoXy5CZCgiUXJ0eEsiKSwwKTtyZXR1cm4gXy5TY2QoYiwhMSwhMSxudWxsLGMsIiIsIiIsQ2RkKGEua2EpLGQsIiIsIiIpfTsKd2RkPWNsYXNze2NvbnN0cnVjdG9yKCl7dGhpcy5rYT1uZXcgRGRkfXdhKGEpe3ZhciBiPXRoaXMua2E7Yi53YS5wdXNoKGEuVWEpO2lmKCEoYS5VYTwwKSl7dmFyIGM9YS5xQ2E/KDAsXy5WU2EpKGEucUNhLkZjKCkpOm5ldyBfLmpwO18uVUViKGMsYS5VYSk7YS52aXNpYmlsaXR5JiZjLnNldFZpc2libGUoQWRkW2EudmlzaWJpbGl0eV0pO3ZhciBkPUJkZChiLGEpO2EuaGomJiFkJiZfLmZoKGMsNSxhLmhqKTtkJiZfLiRoKGMsMTMwLGQpO2EubWlkJiZjLmthKHpkZCxbYS5taWRdKTtpZihhLlJjKWZvcih2YXIgZSBvZiBhLlJjKWMua2EoZS5EYyxlLnZhbHVlKTtpZihhLnRyYWNrJiZhLlVhPj0wKWZvcih2YXIgZiBvZiBhLnRyYWNrKXN3aXRjaChmKXtjYXNlIDQ6ZT1jO3ZhciBnPWUua2E7dmFyIGg9bmV3IF8uUFNhO2g9Xy4kaChoLDEsITApO2cuY2FsbChlLF8uV1NhLGgpfWEuTlJhJiZfLlNiKGMsXy5ncCwxMSxhLk5SYSk7YS5hamImJl8ubGsoYywxNDksYS5hamIpO2lmKGIub2EubGVuZ3RoPgowKWlmKGY9Xy52YShiLm9hKSxfLkFrKGYubzAsNCxiLmthLmxlbmd0aCksYS5Zaj09PTMmJmEuT1chPW51bGwpXy5sayhjLDMsYS5PVyksZi5yMWIrKztlbHNle2lmKGEuWWo9PT0yfHxmLlEwJiZhLllqIT09MSlmPWYucjFiKyssXy5sayhjLDMsZil9ZWxzZSBhLllqPT09MyYmYS5PVyE9bnVsbCYmXy5sayhjLDMsYS5PVyk7Yi5vYS5wdXNoKHtvMDpjLFEwOiEhYS5RMCxyMWI6MCxCbmI6ZH0pO2Iua2EucHVzaChjKX1pZihhLkdoKWE9e2F0dHJpYnV0ZXM6IiJ9O2Vsc2V7Yj17YXR0cmlidXRlczoiIn07aWYoYS50cmFjayYmYS5VYT49MClmb3IobGV0IGsgb2YgYS50cmFjaylzd2l0Y2goayl7Y2FzZSAwOmU9dm9pZCAwO2M9YjtkPWE7aWYoZC5ocmVmKXN3aXRjaChmPV8uY20oZC5ocmVmKSxkLkxlKXtjYXNlIDE6YTp7dHJ5e2U9Xy50ZChmLCJ2ZWQiLENkZCh0aGlzLmthKSk7YnJlYWsgYX1jYXRjaChtKXt9ZT1mfWQ9Xy5ibShlKTtjLmF0dHJpYnV0ZXMrPWAgaHJlZj0iJHtkfSJgOwpjLmhyZWY9ZDticmVhaztkZWZhdWx0OmlmKGc9Z29vZ2xlLmNzY3Qpe2U9Zy5wcztoPWcucnc7bGV0IG09Zy5waSxuPWcuc2I7Zy5yZD8oZD1fLmJtKEVkZCh0aGlzLGYsZSkpLGMuYXR0cmlidXRlcys9YCBocmVmPSIke2R9ImAsYy5ocmVmPWQpOmg/KGMuaHJlZj1kLmhyZWYsYy5hdHRyaWJ1dGVzKz1gIGhyZWY9IiR7ZC5ocmVmfSJgLGQ9Xy5DZChfLkJkKCJRcnR4SyIpLDApLGMuYXR0cmlidXRlcys9YCBkYXRhLWpzYXJ3dD0nMScgZGF0YS12ZWQ9JyR7Q2RkKHRoaXMua2EpfScgZGF0YS1wc2lnPScke2V9JyBkYXRhLWF1PScke2R9J2ApOm0/KGY9Xy5ibShFZGQodGhpcyxmLGUpKSxjLmF0dHJpYnV0ZXMrPWAgaHJlZj0iJHtkLmhyZWZ9IiBwaW5nPSIke2Z9ImAsYy5ocmVmPWQuaHJlZixjLnBpbmc9Zik6biYmKGY9Xy5ibShFZGQodGhpcyxmLGUpKSxjLmF0dHJpYnV0ZXMrPWAgaHJlZj0iJHtkLmhyZWZ9IiBkYXRhLXNiPSIke2Z9ImApfX1icmVhaztjYXNlIDM6Yz1DZGQodGhpcy5rYSk7CmIuYXR0cmlidXRlcys9YCBkYXRhLXZlZD0iJHtjfSJgO2IuRVE9YzticmVhaztjYXNlIDQ6Yz1TdHJpbmcodGhpcy5rYS5rYS5sZW5ndGgtMSksYi5hdHRyaWJ1dGVzKz1gIGRhdGEtaHZlaWQ9IiR7Y30iYCxiLk1FYT1TdHJpbmcoYyl9YS5ocmVmJiYhYi5ocmVmJiYoYi5hdHRyaWJ1dGVzKz1gIGhyZWY9IiR7YS5ocmVmfSJgLGIuaHJlZj1hLmhyZWYpO2E9Yn1yZXR1cm4gYX1vYSgpe3ZhciBhPXRoaXMua2E7YS53YS5wb3AoKTwwfHxhLm9hLnBvcCgpfWRpc3BhdGNoKCl7fX07dmFyIHRkZD1jbGFzc3tjb25zdHJ1Y3RvcihhKXt0aGlzLnZlZD1hO3RoaXMuVG09dGhpcy51c2VyQWN0aW9uPXZvaWQgMH19LHNkZD1jbGFzc3tjb25zdHJ1Y3RvcihhKXt0aGlzLnZlZD1hO3RoaXMuR0s9M319O18udmRkPV8uRm4oKCk9Pnt2YXIgYT15ZGQoKCk9Pm51bGwpLGI9cmRkKCk7YiYmXy5yNmEoYSxiKTtyZXR1cm4gYS5idWlsZCgpfSk7Cn1jYXRjaChlKXtfLl9EdW1wRXhjZXB0aW9uKGUpfQp0cnl7Cl8ueng9ZnVuY3Rpb24oYSxiLGMpe18uRWQuY2FsbCh0aGlzKTt0aGlzLk1KPWMhPW51bGw/KDAsXy5pZSkoYSxjKTphO3RoaXMuR2E9Yjt0aGlzLkVhPSgwLF8uaWUpKHRoaXMuS2ZjLHRoaXMpO3RoaXMub2E9ITE7dGhpcy53YT0wO3RoaXMuQWE9dGhpcy5rYT1udWxsO3RoaXMuQmE9W119O18uVWkoXy56eCxfLkVkKTtfLmFhPV8uengucHJvdG90eXBlO18uYWEuSEE9ZnVuY3Rpb24oYSl7dGhpcy5CYT1hcmd1bWVudHM7dGhpcy5vYT0hMTt0aGlzLmthP3RoaXMuQWE9Xy5rZSgpK3RoaXMuR2E6dGhpcy5rYT1fLkluKHRoaXMuRWEsdGhpcy5HYSl9O18uYWEuc3RvcD1mdW5jdGlvbigpe3RoaXMua2EmJihfLkpuKHRoaXMua2EpLHRoaXMua2E9bnVsbCk7dGhpcy5BYT1udWxsO3RoaXMub2E9ITE7dGhpcy5CYT1bXX07Xy5hYS5wYXVzZT1mdW5jdGlvbigpeysrdGhpcy53YX07Cl8uYWEucmVzdW1lPWZ1bmN0aW9uKCl7dGhpcy53YSYmKC0tdGhpcy53YSwhdGhpcy53YSYmdGhpcy5vYSYmKHRoaXMub2E9ITEsdGhpcy5NSi5hcHBseShudWxsLHRoaXMuQmEpKSl9O18uYWEucWM9ZnVuY3Rpb24oKXt0aGlzLnN0b3AoKTtfLnp4LlJkLnFjLmNhbGwodGhpcyl9O18uYWEuS2ZjPWZ1bmN0aW9uKCl7dGhpcy5rYSYmKF8uSm4odGhpcy5rYSksdGhpcy5rYT1udWxsKTt0aGlzLkFhPyh0aGlzLmthPV8uSW4odGhpcy5FYSx0aGlzLkFhLV8ua2UoKSksdGhpcy5BYT1udWxsKTp0aGlzLndhP3RoaXMub2E9ITA6KHRoaXMub2E9ITEsdGhpcy5NSi5hcHBseShudWxsLHRoaXMuQmEpKX07Cn1jYXRjaChlKXtfLl9EdW1wRXhjZXB0aW9uKGUpfQp0cnl7Cl8uZF9iPWZ1bmN0aW9uKGEpe2E9ZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKS5jcmVhdGVDb250ZXh0dWFsRnJhZ21lbnQoXy5xYyhhKSk7cmV0dXJuIGEuY2hpbGROb2Rlcy5sZW5ndGg9PT0xP2EuY2hpbGROb2Rlc1swXTphfTtfLmVfYj1mdW5jdGlvbihhKXtpZighYSlyZXR1cm4gXy5rdygpO2ZvcihhPWEucGFyZW50Tm9kZTtfLlJnKGEpO2E9YS5wYXJlbnROb2RlKXtsZXQgYj1hLmdldEF0dHJpYnV0ZSgiZGlyIik7aWYoYiYmKGI9Yi50b0xvd2VyQ2FzZSgpLGI9PSJsdHIifHxiPT0icnRsIikpcmV0dXJuIGJ9cmV0dXJuIF8ua3coKX07Xy5xeD1mdW5jdGlvbihhKXtyZXR1cm4gXy50KGEsMil9O18uZl9iPWNsYXNze2NvbnN0cnVjdG9yKCl7dGhpcy5rYT17fX1hZGQoYSxiKXt0aGlzLmthW2FdPWI7cmV0dXJuITF9fTt2YXIgZ19iO2dfYj1mdW5jdGlvbihhKXt2YXIgYj1hLmthLmNyZWF0ZUVsZW1lbnQoIlNUWUxFIik7YS5rYS5oZWFkP2Eua2EuaGVhZC5hcHBlbmRDaGlsZChiKTphLmthLmJvZHkuYXBwZW5kQ2hpbGQoYik7cmV0dXJuIGJ9O18uaF9iPWNsYXNze2NvbnN0cnVjdG9yKGE9ZG9jdW1lbnQsYj0hMSl7dGhpcy5rYT1hO3RoaXMud2E9bnVsbDt0aGlzLkJhPXt9O3RoaXMub2E9W107dGhpcy5FYT1iJiZ0aGlzLmthP18uWGkodGhpcy5rYS5nZXRFbGVtZW50c0J5VGFnTmFtZSgic3R5bGUiKSxmdW5jdGlvbihjKXtyZXR1cm4gYy5pbm5lckhUTUx9KS5qb2luKCk6IiI7dGhpcy5BYT0hMX1kb2N1bWVudCgpe3JldHVybiB0aGlzLmthfX07Xy5pX2I9ZnVuY3Rpb24oYSl7aWYoQXJyYXkuaXNBcnJheShhKSlyZXR1cm4gYTt2YXIgYj1bXTtmb3IobGV0IGMgaW4gYSliW2FbY11dPWM7cmV0dXJuIGJ9O18ual9iPWZ1bmN0aW9uKGEsYil7YS5OYT1ifTsKXy5yeD1jbGFzc3tjb25zdHJ1Y3RvcihhPWRvY3VtZW50LGI9bmV3IF8uZl9iLGM9bmV3IF8uaF9iKGEpKXt0aGlzLkFiPWE7dGhpcy5uYj1jO3RoaXMuT2E9Yjt0aGlzLkFhPW5ldyBjbGFzc3trYShkKXtyZXR1cm4gYi5rYVtkXX19O3RoaXMuU2E9e307dGhpcy5yYj1bXy5MWWIoKV19d2EoYSl7dmFyIGI9dGhpcy5uYjthIGluIGIuQmF8fChiLkJhW2FdPSEwLGIuRWEuaW5kZXhPZihhKT09LTEmJmIub2EucHVzaChhKSl9ZG9jdW1lbnQoKXtyZXR1cm4gdGhpcy5BYn1JYSgpe3RoaXMubmIuQWE9ITB9QmEoKXt2YXIgYT10aGlzLm5iO2lmKGEua2EmJmEub2EubGVuZ3RoIT0wKXt2YXIgYj1hLm9hLmpvaW4oIiIpO2lmKGEuQWEpYT1iO2Vsc2V7aWYoXy4kaSl7YS53YXx8KGEud2E9Z19iKGEpKTt2YXIgYz1hLndhfWVsc2UgYz1nX2IoYSk7Yy5zdHlsZVNoZWV0JiYhYy5zaGVldD9jLnN0eWxlU2hlZXQuY3NzVGV4dCs9YjpjLnRleHRDb250ZW50Kz1iO2Eub2EubGVuZ3RoPTA7YT0iIn19ZWxzZSBhPQoiIjtyZXR1cm4gYX1vYShhLGIsYyxkLGU9bnVsbCxmPW51bGwsZz0iIixoPW51bGwsaz0iIixtPW51bGwsbj0iIixwPW51bGwpe3RoaXMuU2FbYV09e2FyZ3M6Xy5pX2IoYiksTlVhOmMsQUFjOmQsWDViOmUsZ0VjOmYsWjViOmcsVTViOmgsYTZiOmssVjViOm0sYjZiOm4sVzViOnAsbGlnaHQ6ITB9fUdhKGEsYixjLGQsZSxmLGcpe2E9dGhpcy5TYVthXTthLlg1Yj1iO2EuWjViPWM7YS5VNWI9ZDthLmE2Yj1lO2EuVjViPWY7YS5iNmI9IiI7YS5XNWI9Z31rYShhKXtyZXR1cm4gYSBpbiB0aGlzLlNhfVBhKGEpe3JldHVybiB0aGlzLlNhW2FdfHxudWxsfWlzUnRsKCl7cmV0dXJuIF8udmEodGhpcy5yYil9S2EoYSl7dGhpcy5yYlswXT0icnRsIj09Xy5lX2IoYSl9RWEoKXt0aGlzLk5hJiZ0aGlzLk5hLmRpc3BhdGNoKCl9fTsKfWNhdGNoKGUpe18uX0R1bXBFeGNlcHRpb24oZSl9CnRyeXsKXy51KCJuVE5maGUiKTsKdmFyIGRhZj1mdW5jdGlvbihhKXtpZighYSlyZXR1cm4hMTthPV8uV0ooYSk7cmV0dXJuIGE9PT0iaW1hZ2UvaGVpZiJ8fGE9PT0iaW1hZ2UvaGVpYyJ9LGVhZj1mdW5jdGlvbihhLGIpe2Eub25DbG9zZT1ifSxoYWY9ZnVuY3Rpb24oYSl7ZmFmKGEpO3JldHVybiBnYWYoKX0saWFmPWZ1bmN0aW9uKGEpe2ZhZihhKTtyZXR1cm4gXy55KGdhZigpKX0sZ2FmPWZ1bmN0aW9uKCl7cmV0dXJuIk1pbmlhdHlyYmlsZGUgZm9yIGZpbHZlZGxlZ2cifSxmYWY9ZnVuY3Rpb24oYSl7YS5rYShqYWYpfHxhLm9hKGphZix7fSxoYWYsaWFmKX0samFmPSJ0LXI4OU9KdDdTYkRvIjt2YXIgbWFmPWZ1bmN0aW9uKGEpe2thZihhKTtyZXR1cm4gbGFmKCl9LG5hZj1mdW5jdGlvbihhKXtrYWYoYSk7cmV0dXJuIF8ueShsYWYoKSl9LGxhZj1mdW5jdGlvbigpe3JldHVybiJGamVybiBmaWx2ZWRsZWdnZXQifSxrYWY9ZnVuY3Rpb24oYSl7YS5rYShvYWYpfHxhLm9hKG9hZix7fSxtYWYsbmFmKX0sb2FmPSJ0LWxjSi1rM0ZxQkI4Ijt2YXIgcmFmPWZ1bmN0aW9uKGEpe3BhZihhKTtyZXR1cm4gcWFmKCl9LHNhZj1mdW5jdGlvbihhKXtwYWYoYSk7YT0iPGRpdiIrXy5XKCIiKStfLlgoIiIpK18uVigiIikrIj4iO3ZhciBiPXFhZigpO3JldHVybiBfLnkoYSsoYisiPC9kaXY+IikpfSxxYWY9ZnVuY3Rpb24oKXtyZXR1cm4iPHN2ZyIrXy5XKCIiKStfLlgoIiIpK18uVignIGFyaWEtaGlkZGVuPSJ0cnVlIiBoZWlnaHQ9IjEwMCUiIHZlcnNpb249IjEwMCUiIHZpZXdCb3g9IjAgMCAyOCAyOCIgd2lkdGg9IjE2IiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIicpKyI+PGciK18uVygiWVlVQU1jICIpK18uWCgiIikrXy5WKCIiKSsiPjxwYXRoIitfLlcoImVWandRICIpK18uWCgiIikrXy5WKCcgZD0iTSAxNCwxLjUgQSAxMi41LDEyLjUgMCAxIDEgMS41LDE0IiBmaWxsPSJub25lIiBzdHJva2U9ImN1cnJlbnRDb2xvciIgc3Ryb2tlLWxpbmVjYXA9InNxdWFyZSIgc3Ryb2tlLXdpZHRoPSIzIicpKwoiPjwvcGF0aD48L2c+PC9zdmc+In0scGFmPWZ1bmN0aW9uKGEpe2Eua2EodGFmKXx8YS5vYSh0YWYse30scmFmLHNhZil9LHRhZj0idC1xZjc1Y3BVUm9wSSI7dmFyIHVhZj1mdW5jdGlvbigpe3JldHVybiIifSx2YWY9ZnVuY3Rpb24oKXtyZXR1cm4iIn0sd2FmPWZ1bmN0aW9uKCl7cmV0dXJuIiJ9LHhhZj1mdW5jdGlvbigpe3JldHVybiEwfSx5YWY9ZnVuY3Rpb24oKXtyZXR1cm4hMX0sQmFmPWZ1bmN0aW9uKGEpe3phZihhKTtyZXR1cm4gQWFmKCl9LENhZj1mdW5jdGlvbihhKXt6YWYoYSk7YT0iPHNwYW4iK18uVygiejFhc0NlICIpK18uWCgiIikrXy5WKCIiKSsiPiI7dmFyIGI9QWFmKCk7cmV0dXJuIF8ueShhKyhiKyI8L3NwYW4+IikpfSxBYWY9ZnVuY3Rpb24oKXtyZXR1cm4oXy5VQj09MD8iPHN2ZyIrXy5XKCIiKStfLlgoIiIpK18uVignIGZvY3VzYWJsZT0iZmFsc2UiIGFyaWEtaGlkZGVuPSJ0cnVlIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNCAyNCInKSsiPjxwYXRoIitfLlcoIiIpK18uWCgiIikrXy5WKCcgZD0iTTIxIDE5VjVjMC0xLjEtLjktMi0yLTJINWMtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmgxNGMxLjEgMCAyLS45IDItMnpNOC41IDEzLjVsMi41IDMuMDFMMTQuNSAxMmw0LjUgNkg1bDMuNS00LjV6IicpKwoiPjwvcGF0aD48L3N2Zz4iOiIiKSsoXy5VQj09MT8iPHN2ZyIrXy5XKCIiKStfLlgoIiIpK18uVignIGZvY3VzYWJsZT0iZmFsc2UiIGFyaWEtaGlkZGVuPSJ0cnVlIiB2aWV3Qm94PSIwIDAgMjQgMjQiJykrIj48cGF0aCIrXy5XKCIiKStfLlgoIiIpK18uVignIGQ9Ik0yMSAxOVY1YzAtMS4xLS45LTItMi0ySDVjLTEuMSAwLTIgLjktMiAydjE0YzAgMS4xLjkgMiAyIDJoMTRjMS4xIDAgMi0uOSAyLTJ6TTguNSAxMy41bDIuNSAzLjAxTDE0LjUgMTJsNC41IDZINWwzLjUtNC41eiInKSsiPjwvcGF0aD48L3N2Zz4iOiIiKX0semFmPWZ1bmN0aW9uKGEpe2Eua2EoRGFmKXx8YS5vYShEYWYse30sQmFmLENhZix4YWYseWFmLCIiLHVhZiwiejFhc0NlICIsdmFmLCIiLHdhZil9LERhZj0idC1lNkszSU9MMkZfWSI7dmFyIEVhZj1mdW5jdGlvbigpe3JldHVybiIifSxGYWY9ZnVuY3Rpb24oKXtyZXR1cm4iIn0sR2FmPWZ1bmN0aW9uKCl7cmV0dXJuIiJ9LEhhZj1mdW5jdGlvbigpe3JldHVybiEwfSxJYWY9ZnVuY3Rpb24oKXtyZXR1cm4hMX0sTGFmPWZ1bmN0aW9uKGEpe0phZihhKTtyZXR1cm4gS2FmKCl9LE1hZj1mdW5jdGlvbihhKXtKYWYoYSk7YT0iPHNwYW4iK18uVygiejFhc0NlICIpK18uWCgiIikrXy5WKCIiKSsiPiI7dmFyIGI9S2FmKCk7cmV0dXJuIF8ueShhKyhiKyI8L3NwYW4+IikpfSxLYWY9ZnVuY3Rpb24oKXtyZXR1cm4oXy5VQj09MD8iPHN2ZyIrXy5XKCIiKStfLlgoIiIpK18uVignIGZvY3VzYWJsZT0iZmFsc2UiIGFyaWEtaGlkZGVuPSJ0cnVlIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNCAyNCInKSsiPjxwYXRoIitfLlcoIiIpK18uWCgiIikrXy5WKCcgZD0iTTExIDE1aDJ2MmgtMnptMC04aDJ2NmgtMnptLjk5LTVDNi40NyAyIDIgNi40OCAyIDEyczQuNDcgMTAgOS45OSAxMEMxNy41MiAyMiAyMiAxNy41MiAyMiAxMlMxNy41MiAyIDExLjk5IDJ6TTEyIDIwYy00LjQyIDAtOC0zLjU4LTgtOHMzLjU4LTggOC04IDggMy41OCA4IDgtMy41OCA4LTggOHoiJykrCiI+PC9wYXRoPjwvc3ZnPiI6IiIpKyhfLlVCPT0xPyI8c3ZnIitfLlcoIiIpK18uWCgiIikrXy5WKCcgZm9jdXNhYmxlPSJmYWxzZSIgYXJpYS1oaWRkZW49InRydWUiIHZpZXdCb3g9IjAgMCAyNCAyNCInKSsiPjxwYXRoIitfLlcoIiIpK18uWCgiIikrXy5WKCcgZD0iTTExIDE1aDJ2MmgtMnptMC04aDJ2NmgtMnptLjk5LTVDNi40NyAyIDIgNi40OCAyIDEyczQuNDcgMTAgOS45OSAxMEMxNy41MiAyMiAyMiAxNy41MiAyMiAxMlMxNy41MiAyIDExLjk5IDJ6TTEyIDIwYy00LjQyIDAtOC0zLjU4LTgtOHMzLjU4LTggOC04IDggMy41OCA4IDgtMy41OCA4LTggOHoiJykrIj48L3BhdGg+PC9zdmc+IjoiIil9LEphZj1mdW5jdGlvbihhKXthLmthKE5hZil8fGEub2EoTmFmLHt9LExhZixNYWYsSGFmLElhZiwiIixFYWYsInoxYXNDZSAiLEZhZiwiIixHYWYpfSxOYWY9InQtNkUxZnJ1ZVdlQ1kiO3ZhciBPYWY9ZnVuY3Rpb24oKXtyZXR1cm4iIn0sUGFmPWZ1bmN0aW9uKCl7cmV0dXJuIiJ9LFFhZj1mdW5jdGlvbigpe3JldHVybiIifSxSYWY9ZnVuY3Rpb24oKXtyZXR1cm4hMH0sU2FmPWZ1bmN0aW9uKCl7cmV0dXJuITF9LFZhZj1mdW5jdGlvbihhKXtUYWYoYSk7cmV0dXJuIFVhZigpfSxXYWY9ZnVuY3Rpb24oYSl7VGFmKGEpO2E9IjxzcGFuIitfLlcoInoxYXNDZSAiKStfLlgoIiIpK18uVigiIikrIj4iO3ZhciBiPVVhZigpO3JldHVybiBfLnkoYSsoYisiPC9zcGFuPiIpKX0sVWFmPWZ1bmN0aW9uKCl7cmV0dXJuKF8uVUI9PTA/IjxzdmciK18uVygiIikrXy5YKCIiKStfLlYoJyBmb2N1c2FibGU9ImZhbHNlIiBhcmlhLWhpZGRlbj0idHJ1ZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB2aWV3Qm94PSIwIC05NjAgOTYwIDk2MCIgaGVpZ2h0PSIyNCIgd2lkdGg9IjI0IicpKyI+PHBhdGgiK18uVygiIikrXy5YKCIiKStfLlYoJyBkPSJNNzIwLTMzMHEwLDEwNC03MywxNzdUNDcwLTgwVDI5My0xNTNUMjIwLTMzMFYtNzAwcTAtNzUgNTIuNS0xMjcuNVQ0MDAtODgwdDEyNy41LDUyLjVUNTgwLTcwMHYzNTBxMCw0Ni0zMiw3OHQtNzgsMzJ0LTc4LTMydC0zMi03OFYtNzIwaDgwdjM3MHEwLDEzIDguNSwyMS41VDQ3MC0zMjB0MjEuNS04LjVUNTAwLTM1MFYtNzAwcS0xLTQyLTI5LjUtNzFUNDAwLTgwMHQtNzEsMjl0LTI5LDcxdjM3MHEtMSw3MSA0OSwxMjAuNVQ0NzAtMTYwcTcwLDAgMTE5LTQ5LjVUNjQwLTMzMFYtNzIwaDgwdjM5MFoiJykrCiI+PC9wYXRoPjwvc3ZnPiI6IiIpKyhfLlVCPT0xPyI8c3ZnIitfLlcoIiIpK18uWCgiIikrXy5WKCcgZm9jdXNhYmxlPSJmYWxzZSIgYXJpYS1oaWRkZW49InRydWUiIHZpZXdCb3g9IjAgLTk2MCA5NjAgOTYwIiBoZWlnaHQ9IjI0IiB3aWR0aD0iMjQiJykrIj48cGF0aCIrXy5XKCIiKStfLlgoIiIpK18uVignIGQ9Ik03MjAtMzMwcTAsMTA0LTczLDE3N1Q0NzAtODBUMjkzLTE1M1QyMjAtMzMwVi03MDBxMC03NSA1Mi41LTEyNy41VDQwMC04ODB0MTI3LjUsNTIuNVQ1ODAtNzAwdjM1MHEwLDQ2LTMyLDc4dC03OCwzMnQtNzgtMzJ0LTMyLTc4Vi03MjBoODB2MzcwcTAsMTMgOC41LDIxLjVUNDcwLTMyMHQyMS41LTguNVQ1MDAtMzUwVi03MDBxLTEtNDItMjkuNS03MVQ0MDAtODAwdC03MSwyOXQtMjksNzF2MzcwcS0xLDcxIDQ5LDEyMC41VDQ3MC0xNjBxNzAsMCAxMTktNDkuNVQ2NDAtMzMwVi03MjBoODB2MzkwWiInKSsiPjwvcGF0aD48L3N2Zz4iOiIiKX0sVGFmPWZ1bmN0aW9uKGEpe2Eua2EoWGFmKXx8CmEub2EoWGFmLHt9LFZhZixXYWYsUmFmLFNhZiwiIixPYWYsInoxYXNDZSAiLFBhZiwiIixRYWYpfSxYYWY9InQtSDZxNnpCczUtd1UiO3ZhciBZYWY9ZnVuY3Rpb24oKXtyZXR1cm4iIn0sWmFmPWZ1bmN0aW9uKCl7cmV0dXJuIiJ9LCRhZj1mdW5jdGlvbigpe3JldHVybiIifSxhYmY9ZnVuY3Rpb24oKXtyZXR1cm4hMH0sYmJmPWZ1bmN0aW9uKCl7cmV0dXJuITF9LGViZj1mdW5jdGlvbihhKXtjYmYoYSk7cmV0dXJuIGRiZigpfSxmYmY9ZnVuY3Rpb24oYSl7Y2JmKGEpO2E9IjxzcGFuIitfLlcoInoxYXNDZSAiKStfLlgoIiIpK18uVigiIikrIj4iO3ZhciBiPWRiZigpO3JldHVybiBfLnkoYSsoYisiPC9zcGFuPiIpKX0sZGJmPWZ1bmN0aW9uKCl7cmV0dXJuKF8uVUI9PTA/IjxzdmciK18uVygiIikrXy5YKCIiKStfLlYoJyBmb2N1c2FibGU9ImZhbHNlIiBhcmlhLWhpZGRlbj0idHJ1ZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB2aWV3Qm94PSIwIC05NjAgOTYwIDk2MCIgaGVpZ2h0PSIyNCIgd2lkdGg9IjI0IicpKyI+PHBhdGgiK18uVygiIikrXy5YKCIiKStfLlYoJyBkPSJNNjIwLTM2MGg2MHYtODBoNjB2LTYwSDY4MHYtNDBoNjB2LTYwSDYyMHYyNDBabS00MDAsMGg2MHYtODBoNjBxMTcsMCAyOC41LTExLjVUMzgwLTQ4MHYtODBxMC0xNy0xMS41LTI4LjVUMzQwLTYwMEgyMjB2MjQwWm02MC0xNDB2LTQwaDQwdjQwSDI4MFpNNDE2LTM2MEg1MzZxMTcsMCAyOC41LTExLjVUNTc2LTQwMFYtNTYwcTAtMTctMTEuNS0yOC41VDUzNi02MDBINDE2djI0MFptNjAtNjBWLTU0MGg0MHYxMjBINDc2Wk0yMDAtMTIwcS0zMywwLTU2LjUtMjMuNVQxMjAtMjAwVi03NjBxMC0zMyAyMy41LTU2LjVUMjAwLTg0MEg3NjBxMzMsMCA1Ni41LDIzLjVUODQwLTc2MHY1NjBxMCwzMy0yMy41LDU2LjVUNzYwLTEyMEgyMDBabTAtODBINzYwVi03NjBIMjAwdjU2MFptMC01NjB2NTYwVi03NjBaIicpKwoiPjwvcGF0aD48L3N2Zz4iOiIiKSsoXy5VQj09MT8iPHN2ZyIrXy5XKCIiKStfLlgoIiIpK18uVignIGZvY3VzYWJsZT0iZmFsc2UiIGFyaWEtaGlkZGVuPSJ0cnVlIiB2aWV3Qm94PSIwIC05NjAgOTYwIDk2MCIgaGVpZ2h0PSIyNCIgd2lkdGg9IjI0IicpKyI+PHBhdGgiK18uVygiIikrXy5YKCIiKStfLlYoJyBkPSJNNjIwLTM2MGg2MHYtODBoNjB2LTYwSDY4MHYtNDBoNjB2LTYwSDYyMHYyNDBabS00MDAsMGg2MHYtODBoNjBxMTcsMCAyOC41LTExLjVUMzgwLTQ4MHYtODBxMC0xNy0xMS41LTI4LjVUMzQwLTYwMEgyMjB2MjQwWm02MC0xNDB2LTQwaDQwdjQwSDI4MFpNNDE2LTM2MEg1MzZxMTcsMCAyOC41LTExLjVUNTc2LTQwMFYtNTYwcTAtMTctMTEuNS0yOC41VDUzNi02MDBINDE2djI0MFptNjAtNjBWLTU0MGg0MHYxMjBINDc2Wk0yMDAtMTIwcS0zMywwLTU2LjUtMjMuNVQxMjAtMjAwVi03NjBxMC0zMyAyMy41LTU2LjVUMjAwLTg0MEg3NjBxMzMsMCA1Ni41LDIzLjVUODQwLTc2MHY1NjBxMCwzMy0yMy41LDU2LjVUNzYwLTEyMEgyMDBabTAtODBINzYwVi03NjBIMjAwdjU2MFptMC01NjB2NTYwVi03NjBaIicpKwoiPjwvcGF0aD48L3N2Zz4iOiIiKX0sY2JmPWZ1bmN0aW9uKGEpe2Eua2EoZ2JmKXx8YS5vYShnYmYse30sZWJmLGZiZixhYmYsYmJmLCIiLFlhZiwiejFhc0NlICIsWmFmLCIiLCRhZil9LGdiZj0idC1fdUR5RnpxRWlDZyI7dmFyIGpiZj1mdW5jdGlvbihhLGIpe2hiZihhKTtyZXR1cm4gaWJmKGEsYi5RMyxiLlAzLGIuc3VidGl0bGUsYi5VVCxiLlBqLGIuRTMsYi5OMyl9LGtiZj1mdW5jdGlvbihhLGIpe2hiZihhKTthPWliZihhLGIuUTMsYi5QMyxiLnN1YnRpdGxlLGIuVVQsYi5QaixiLkUzLGIuTjMpO3JldHVybiBfLnkoYSl9LGliZj1mdW5jdGlvbihhLGIsYyxkLGUsZixnLGgpe2U9IjxkaXYiK18ueUYoYSx7VWE6Mjk4MzAyLHRyYWNrOlszXX0pLmF0dHJpYnV0ZXMrXy5XKCJmMVlOdSAiKyhnPyJjTEtjTmQgIjoiIikrKGY/Imhsa0t4ZCAiOiIiKSkrXy5YKCIiKStfLlYoJyBqc2NvbnRyb2xsZXI9IicrXy5SKCJuTnhrWWQiKSsnIiBqc25hbWU9IicrXy5SKCJLaVRjQWQiKSsnIiBhcmlhLWxhYmVsPSInK18uUihiK2MpKyciIGhpZGRlbj0iIiByb2xlPSJncm91cCInKSsiPjxidXR0b24iK18uVygickJRbUllICIpK18uWCgiIikrXy5WKCcgYXJpYS1sYWJlbD0iJytfLlIoYitjKSsnIiBhcmlhLWxhYmVsbGVkYnk9IlIwS0NyYyIgdGFiaW5kZXg9IjAiIHR5cGU9ImJ1dHRvbiIganNhY3Rpb249IicrCl8uUigibE1HeFRkO2tleWRvd246ZHVBU1pjIikrJyInKSsiPiIrKGg9PSJpbWFnZSI/IjxpbWciK18uVygia1d2NVRlICIpK18uWCgiIikrXy5WKCcganNuYW1lPSInK18uUigiaE5QSldlIikrJyIgc3JjPSInK18uZHgoXy5SKF8uVXcoZSkpKSsnIiBhbHQ9IicrXy5YdyhnYWYoKSkrJyInKSsiPiIrKF8uZkxiPyI8ZGl2IitfLlcoIllObENqZiAiKStfLlgoIiIpK18uVigiIikrIj48L2Rpdj4iOiIiKToiIik7aD09ImhlaWYiJiYoZj0iPHNwYW4iK18uVygiYlBOSzdlIHoxYXNDZSAiKStfLlgoIiIpK18uVignIGpzbmFtZT0iJytfLlIoIlpGTmJ6YiIpKyciJykrIj4iK0FhZigpKyI8L3NwYW4+IixlKz1mKTtoPT0icGRmIiYmKGY9IjxzcGFuIitfLlcoImJQTks3ZSB6MWFzQ2UgIikrXy5YKCIiKStfLlYoJyBqc25hbWU9IicrXy5SKCJLSjY3SmYiKSsnIicpKyI+IitkYmYoKSsiPC9zcGFuPiIsZSs9Zik7aD09ImVycm9yIiYmKGY9IjxzcGFuIitfLlcoImJQTks3ZSB4UDA2V2QgejFhc0NlICIpKwpfLlgoIiIpK18uVignIGpzbmFtZT0iJytfLlIoIkZUSXhYYiIpKyciJykrIj4iK0thZigpKyI8L3NwYW4+IixlKz1mKTtoPT0iZGVmYXVsdCImJihoPSI8c3BhbiIrXy5XKCJiUE5LN2UgejFhc0NlICIpK18uWCgiIikrXy5WKCcganNuYW1lPSInK18uUigiWVVjZUJkIikrJyInKSsiPiIrVWFmKCkrIjwvc3Bhbj4iLGUrPWgpO2g9IjxkaXYiK18uVygiWFUyWGtjICIpK18uWCgiIikrXy5WKCcganNuYW1lPSInK18uUigiYVoyd0VlIikrJyIgbG9nPSInK18uUigiU2VhcmNoYm94TXVsdGltb2RhbExvYWRpbmdJY29uOyB0cmFjazp2ZWQiKSsnIicpKyI+IitxYWYoKSsiPC9kaXY+IjtlPWUraCsoIjxkaXYiK18uVygibVpLRWdkICIpK18uWCgiIikrXy5WKCcganNuYW1lPSInK18uUigibkpDOVZjIikrJyInKSsiPiIpO2g9IjxzcGFuIitfLlcoIlQyV2VzZiAiK18uaE1kKGEsbnVsbCxudWxsKSkrXy5YKCIiKStfLlYoIiIpKyI+IitfLm1NZChhLG51bGwsbnVsbCkrIjwvc3Bhbj4iO2UrPQpoO2UrPSI8L2Rpdj48L2J1dHRvbj48ZGl2IitfLlcoIkxlUVpsYiAiKStfLlgoIiIpK18uVigiIikrIj48c3BhbiIrXy5XKCJsU3k0c2YgIisoYz8idDlHU0pjICI6IiIpKStfLlgoIiIpK18uVignIGpzbmFtZT0iJytfLlIoIm9aVVZaYiIpKyciIGFyaWEtaGlkZGVuPSJ0cnVlIicpKyI+IisoYj8iPHNwYW4iK18uVygiSlN4YmIgIikrXy5YKCIiKStfLlYoIiIpKyI+IitfLlIoYikrIjwvc3Bhbj4iOiIiKSsoYz8iPHNwYW4iK18uVygiUVVzQzBjICIpK18uWCgiIikrXy5WKCIiKSsiPiIrXy5SKGMpKyI8L3NwYW4+IjoiIikrIjwvc3Bhbj48c3BhbiIrXy5XKCJTelRiSmUgIikrXy5YKCIiKStfLlYoJyBqc25hbWU9IicrXy5SKCJpaVBLbyIpKyciJykrIj4iK18uUihkKSsiPC9zcGFuPjwvZGl2PjxzcGFuIitfLlcoIlFORWFkYyAiKStfLlgoIiIpK18uVignIGlkPSJSMEtDcmMiJykrIj4iO2UrPWxhZigpO3JldHVybiBlKz0iPC9zcGFuPiIrXy56RihhKSsiPC9kaXY+In0saGJmPWZ1bmN0aW9uKGEpe2Eua2EobGJmKXx8CihhLm9hKGxiZix7UTM6MCxQMzoxLHN1YnRpdGxlOjIsVVQ6MyxQajo0LEUzOjUsTjM6Nn0samJmLGtiZiksZmFmKGEpLGthZihhKSxwYWYoYSksXy5sTWQoYSksemFmKGEpLEphZihhKSxUYWYoYSksY2JmKGEpKX0sbGJmPSJ0LVdNckRQVUhOZHM4Ijt2YXIgbWJmPWZ1bmN0aW9uKCl7cmV0dXJuIiJ9LG5iZj1mdW5jdGlvbigpe3JldHVybiIifSxvYmY9ZnVuY3Rpb24oKXtyZXR1cm4iIn0scGJmPWZ1bmN0aW9uKCl7cmV0dXJuITB9LHFiZj1mdW5jdGlvbigpe3JldHVybiExfSx0YmY9ZnVuY3Rpb24oYSxiKXtyYmYoYSk7cmV0dXJuIGliZihhLGIuUTMsYi5QMyxiLnN1YnRpdGxlLGIuVVQsYi5QaixiLkUzLGIuTjMpfSx1YmY9ZnVuY3Rpb24oYSxiKXtyYmYoYSk7dmFyIGM9IiI7YT1pYmYoYSxiLlEzLGIuUDMsYi5zdWJ0aXRsZSxiLlVULGIuUGosYi5FMyxiLk4zKTtjKz1hO3JldHVybiBfLnkoYyl9LHJiZj1mdW5jdGlvbihhKXthLmthKHZiZil8fChhLm9hKHZiZix7UGo6MCxVVDoxLEUzOjIsc3VidGl0bGU6MyxOMzo0LFAzOjUsUTM6Nn0sdGJmLHViZixwYmYscWJmLCIiLG1iZiwiIixuYmYsIiIsb2JmKSxoYmYoYSkpfSx2YmY9InQtVExma2QxNjFzeVkiO3ZhciB3YmY9ZnVuY3Rpb24oKXtyZXR1cm4iIn0seGJmPWZ1bmN0aW9uKCl7cmV0dXJuIiJ9LHliZj1mdW5jdGlvbigpe3JldHVybiIifSx6YmY9ZnVuY3Rpb24oKXtyZXR1cm4hMH0sQWJmPWZ1bmN0aW9uKCl7cmV0dXJuITF9LERiZj1mdW5jdGlvbihhLGIpe0JiZihhKTtyZXR1cm4gQ2JmKGEsYi5RMyxiLlAzLGIuc3VidGl0bGUsYi5VVCxiLlBqLGIuRTMsYi5OMyl9LEViZj1mdW5jdGlvbihhLGIpe0JiZihhKTt2YXIgYz1iLlEzLGQ9Yi5QMyxlPWIuc3VidGl0bGUsZj1iLlVULGc9Yi5QaixoPWIuRTMsaz1iLk4zO2I9IjxkaXYiK18uVygienFvb1diICIpK18uWCgiIikrXy5WKCIiKSsiPiI7YT1DYmYoYSxjLGQsZSxmLGcsaCxrKTtyZXR1cm4gXy55KGIrKGErIjwvZGl2PiIpKX0sQ2JmPWZ1bmN0aW9uKGEsYixjLGQsZSxmLGcsaCl7dmFyIGs9Xy5TKCJ0LVRMZmtkMTYxc3lZIix7UGo6ZixVVDplLEUzOmcsc3VidGl0bGU6ZCxOMzpoLFAzOmMsUTM6Yn0pLG09IiI7aWYoXy5zTGImJgpfLlgkZShhLCExLG51bGwsMSwhMCwhMSxrKSl7dmFyIG49IjxkaXYiK18uVyhfLlYkZShhLCExLG51bGwsMSwhMCwhMSxrKSsiIikrXy5YKF8uVyRlKGEsITEsbnVsbCwxLCEwLCExLGspKyIiKStfLlYoXy5VJGUoYSwhMSxudWxsLDEsITAsITEsaykrIiIpKyI+IitfLiQkZShhLCExLG51bGwsITEsaykrIjwvZGl2PiI7bSs9Xy5ZJGUoYSwhMSxudWxsLDEsITAsITEsayk/IiI6bn1fLnNMYnx8KGE9aWJmKGEsYixjLGQsZSxmLGcsaCksbSs9YSk7cmV0dXJuIG19LEJiZj1mdW5jdGlvbihhKXthLmthKEZiZil8fChhLm9hKEZiZix7UTM6MCxQMzoxLHN1YnRpdGxlOjIsVVQ6MyxQajo0LEUzOjUsTjM6Nn0sRGJmLEViZix6YmYsQWJmLCIiLHdiZiwienFvb1diICIseGJmLCIiLHliZiksaGJmKGEpLHJiZihhKSxfLlokZShhKSl9LEZiZj0idC1mZE91b2pYeVlNOCI7dmFyIEdiZj1hc3luYyBmdW5jdGlvbihhLGIpe3ZhciBjPSgwLF8uTWYpKCksZD1jKCk7Yz1jKDEpO3RyeXt2YXIgZT1hLm5hbWU7aWYoZSl7dmFyIGY9LTE7Zm9yKGxldCBwPWUubGVuZ3RoLTE7cD49MDstLXApaWYoZS5jaGFyQXQocCk9PT0iLiIpe2Y9cDticmVha312YXIgZz1mPjA/ZS5zdWJzdHJpbmcoMCxmKTplO2lmKGcubGVuZ3RoPD00KXZhciBoPXtzdGFydDplLGVuZDoiIn07ZWxzZXt2YXIgaz1nLnN1YnN0cmluZygwLGcubGVuZ3RoLTQpLG09Zy5zdWJzdHJpbmcoZy5sZW5ndGgtNCkrKGY+MD9lLnN1YnN0cmluZyhmKToiIik7ay5jaGFyQXQoay5sZW5ndGgtMSk9PT0iICImJihrPWsuc3Vic3RyaW5nKDAsay5sZW5ndGgtMSkrIlx1MDBhMCIpO20uY2hhckF0KDApPT09IiAiJiYobT0iXHUwMGEwIittLnN1YnN0cmluZygxKSk7aD17c3RhcnQ6ayxlbmQ6bX19fWVsc2UgaD17c3RhcnQ6IiIsZW5kOiIifTtpZihiKXtsZXQgcDthOntzd2l0Y2goYil7Y2FzZSA1OnZhciBuPQoiT3ZlcnNrcmlkZXIgMTAwXHUwMGEwTUIiO2JyZWFrIGF9bj12b2lkIDB9cmV0dXJue1EzOmguc3RhcnQsUDM6aC5lbmQsc3VidGl0bGU6KHA9bikhPW51bGw/cDoiIixVVDoiIixQajohMCxFMzohMCxOMzoiZXJyb3IifX1pZihfLndhZS5oYXMoXy5XSihhKSkmJiFkYWYoYSkpe2xldCBwPWMoYXdhaXQgZChhLmFycmF5QnVmZmVyKCkpKSxyPW5ldyBVaW50OEFycmF5KHApLHg9Xy5PYShyKTtyZXR1cm57UTM6aC5zdGFydCxQMzpoLmVuZCxzdWJ0aXRsZToiIixVVDpgZGF0YToke18uV0ooYSl9O2Jhc2U2NCwke3h9YCxQajohMSxFMzohMSxOMzoiaW1hZ2UifX1iPSJkZWZhdWx0IjtfLldKKGEpLnN0YXJ0c1dpdGgoImFwcGxpY2F0aW9uL3BkZiIpP2I9InBkZiI6ZGFmKGEpJiYoYj0iaGVpZiIpO3JldHVybntRMzpoLnN0YXJ0LFAzOmguZW5kLHN1YnRpdGxlOiIiLFVUOiIiLFBqOiEwLEUzOiEwLE4zOmJ9fWZpbmFsbHl7ZCgpfX0sSWJmPWZ1bmN0aW9uKGEpe2ZvcihsZXQgYiBvZiBBcnJheS5mcm9tKGEudmsua2V5cygpKSlIYmYoYSwKYil9LEtiZj1hc3luYyBmdW5jdGlvbihhLGIpe3ZhciBjPSgwLF8uTWYpKCksZD1jKCk7Yz1jKDEpO3RyeXt2YXIgZT1hLndhLGY9Yi5RMyxnPWIuUDMsaD1iLnN1YnRpdGxlLGs9Yi5VVCxtPWIuUGosbj1iLkUzLHA9Yi5OMztCYmYoZSk7bGV0IHI7cj0iPGRpdiIrXy5XKCJ6cW9vV2IgIikrXy5YKCIiKStfLlYoIiIpKyI+IjtsZXQgeD1DYmYoZSxmLGcsaCxrLG0sbixwKSx6PWUuQmEoKTt6IT09IiImJihyKz0iIDxzdHlsZT4iK3orIjwvc3R5bGU+Iik7cis9eCsiPC9kaXY+IjtlLkVhKCk7bGV0IEI9Xy55KHIpLEg9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7Xy5lZChILEIpO2xldCBKPUguZmlyc3RFbGVtZW50Q2hpbGQ7YS5vYS5hcHBlbmRDaGlsZChKKTtsZXQgTj1fLm5zKGEsSiwiS2lUY0FkIikuZWwoKSxRPWMoYXdhaXQgZChfLlhmKGEuUngoTikpKSk7YS5Bai5wRShRLEopO2MoYXdhaXQgZChKYmYoYSkpKTtyZXR1cm4gUX1maW5hbGx5e2QoKX19LEhiZj1mdW5jdGlvbihhLApiKXt2YXIgYz1hLnZrLmdldChiKTtpZihjKXtmb3IoYz1jLmdldFJvb3QoKS5lbCgpO2MmJmMucGFyZW50RWxlbWVudCE9PWEub2E7KWM9Yy5wYXJlbnRFbGVtZW50O2MmJmMucmVtb3ZlKCk7YS52ay5kZWxldGUoYil9fSxKYmY9YXN5bmMgZnVuY3Rpb24oYSl7dmFyIGI9bmV3IF8uengoYXN5bmMoKT0+e3ZhciBjPWEub2EubGFzdEVsZW1lbnRDaGlsZDtjJiZhLkFqLkFhKGMsITAsITEpfSwyMDApO2IuSEEoKTtfLkRpKGEsYil9LExiZj1jbGFzcyBleHRlbmRzIF8uaHN7c3RhdGljIFFhKCl7cmV0dXJue21vZGVsOntQbTpfLkJkZX0sY29udHJvbGxlcjp7QWo6e2pzbmFtZToiSzlhNFJlIixjdG9yOl8uSU19fX19Y29uc3RydWN0b3IoYSl7c3VwZXIoKTt0aGlzLnZrPW5ldyBNYXA7dGhpcy5Baj1hLmNvbnRyb2xsZXIuQWo7dmFyIGI9dGhpcy53YT1uZXcgXy5yeChkb2N1bWVudCksYz1fLm5GKHtPZTpfLmZhZSh0aGlzLmdldFJvb3QoKS5lbCgpKX0pO2IuTmE9Yzt0aGlzLlBtPWEubW9kZWwuUG07CnRoaXMub2E9dGhpcy5KYSgiWVpDSmlmIikuZWwoKX1hc3luYyBFYShhKXt2YXIgYj0oMCxfLk1mKSgpLGM9YigpO2I9YigxKTt0cnl7bGV0IGQ9YS5kYXRhLGU9Yihhd2FpdCBjKEdiZihkKSkpO18uQWRlfHxJYmYodGhpcyk7bGV0IGY9Yihhd2FpdCBjKEtiZih0aGlzLGUpKSk7dGhpcy52ay5zZXQoZCxmKTtlYWYoZiwoKT0+e3RoaXMua2EoZCl9KTtmLnNldFN0YXRlKDEpfWZpbmFsbHl7YygpfX1hc3luYyBBYShhKXt2YXIgYj0oMCxfLk1mKSgpLGM9YigpO2I9YigxKTt0cnl7bGV0IGQ9YS5kYXRhLGU9Yihhd2FpdCBjKHRoaXMudmsuZ2V0KGQpKSk7ZSYmKGVhZihlLCgpPT57dGhpcy5rYShkKX0pLGUuc2V0U3RhdGUoMCkpfWZpbmFsbHl7YygpfX1rYShhKXtIYmYodGhpcyxhKTt0aGlzLlBtLnJlbW92ZUZpbGUoYSl9QmEoYSl7SGJmKHRoaXMsYS5kYXRhKX1hc3luYyBHYShhKXt2YXIgYj0oMCxfLk1mKSgpLGM9YigpO2I9YigxKTt0cnl7bGV0IGY9YS5kYXRhLmZpbGU7aWYoYS5kYXRhLmNZYil7dmFyIGQ9CmIoYXdhaXQgYyhHYmYoZixhLmRhdGEuQ29iKSkpO18uQWRlfHxJYmYodGhpcyk7dmFyIGU9Yihhd2FpdCBjKEtiZih0aGlzLGQpKSk7dGhpcy52ay5zZXQoZixlKTtlYWYoZSwoKT0+e3RoaXMua2EoZil9KX19ZmluYWxseXtjKCl9fX07TGJmLnByb3RvdHlwZS4kd2EkRlk3QWhjPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuR2F9O0xiZi5wcm90b3R5cGUuJHdhJGFHQUQ3ZT1mdW5jdGlvbigpe3JldHVybiB0aGlzLkJhfTtMYmYucHJvdG90eXBlLiR3YSRhZ051eGQ9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5rYX07TGJmLnByb3RvdHlwZS4kd2EkTmdvblFjPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuQWF9O0xiZi5wcm90b3R5cGUuJHdhJGZjRnFDYz1mdW5jdGlvbigpe3JldHVybiB0aGlzLkVhfTtfLmpzKF8uSTdlLExiZik7CgpfLnYoKTsKfWNhdGNoKGUpe18uX0R1bXBFeGNlcHRpb24oZSl9CnRyeXsKXy5wM2U9Xy5rYygiUDEwT3dmIixbXy5mcl0pOwp9Y2F0Y2goZSl7Xy5fRHVtcEV4Y2VwdGlvbihlKX0KdHJ5ewpfLnUoIlAxME93ZiIpOwp2YXIgcTNlPWZ1bmN0aW9uKGEsYil7dmFyIGM7aWYoISgoYj09bnVsbD8wOmIub2EoKSkmJigoYz1hLmRhdGEpPT1udWxsPzA6Yy5vYSgpKSYmKGI9PW51bGw/dm9pZCAwOmIub2EoKSkhPT1hLmRhdGEub2EoKSkmJmEub2EmJihfLlBwKGEuTmIua2EoKSxhLmdldFJvb3QoKS5lbCgpLDIpLmxvZyghMCksYS5rYSkpe3ZhciBkPWEua2E7Xy50bWQoZCwtMSl8fChkPV8ueG1kKGQse3RocmVzaG9sZDotMSx3cmFwOiExfSkpOygwLF8ubWYpKCgpPT57dmFyIGU7cmV0dXJuIHZvaWQoKGU9ZCk9PW51bGw/dm9pZCAwOmUuZm9jdXMoe3ByZXZlbnRTY3JvbGw6ITB9KSl9KTthLm9hPSExO2Eua2E9dm9pZCAwfX0scjNlPWNsYXNzIGV4dGVuZHMgXy5oc3tzdGF0aWMgUWEoKXtyZXR1cm57c2VydmljZTp7TmI6Xy5MdX0sZmY6e3BEOl8ucnp9fX1jb25zdHJ1Y3RvcihhKXtzdXBlcigpO3RoaXMud2E9dGhpcy5nZXREYXRhKCJjbWVwIikuTGIoKTt0aGlzLmthPXZvaWQgMDt0aGlzLm9hPSExO3RoaXMuTmI9CmEuc2VydmljZS5OYjt0aGlzLmRhdGE9YS5mZi5wRH1FYSgpe3RoaXMub2E9ITA7dGhpcy5rYT10aGlzLkFpKCkuYWN0aXZlRWxlbWVudDtfLlBwKHRoaXMuTmIua2EoKSx0aGlzLmdldFJvb3QoKS5lbCgpLDEpLmxvZyghMCk7dmFyIGE9KCk9Pnt2YXIgYj10aGlzLmdldFJvb3QoKS5lbCgpLnF1ZXJ5U2VsZWN0b3IoJ1tqc25hbWU9InRxcDd1ZCJdJyk7YiYmYi5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS53aWR0aD4wP2IuZm9jdXMoKTpyZXF1ZXN0QW5pbWF0aW9uRnJhbWUoYSl9O3JlcXVlc3RBbmltYXRpb25GcmFtZShhKX1CYShhKXthPWEuZGF0YT9fLmJjKF8ucnosYS5kYXRhKTpuZXcgXy5yejtxM2UodGhpcyxhKX1BYShhKXtxM2UodGhpcyxhLmRhdGEpfUlhKGEpe18uTnAodGhpcy5OYi5rYSgpLGEub2IuZWwoKSkubG9nKCEwKTtfLlpnKGRvY3VtZW50LCJjdXYycWIiKX1HYShhKXtfLk5wKHRoaXMuTmIua2EoKSxhLm9iLmVsKCkpLmxvZyghMCk7aWYodGhpcy53YSl7bGV0IGI7Cl8uWmcoZG9jdW1lbnQsImtxMnd4ZiIsKGI9dGhpcy5kYXRhKT09bnVsbD92b2lkIDA6Yi5GYygpKX1lbHNlIF8uWmcoZG9jdW1lbnQsInc4ZjFmYyIsdGhpcy5kYXRhKX19O3IzZS5wcm90b3R5cGUuJHdhJGtFT2s0ZD1mdW5jdGlvbigpe3JldHVybiB0aGlzLkdhfTtyM2UucHJvdG90eXBlLiR3YSRmVDNZYmI9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5JYX07cjNlLnByb3RvdHlwZS4kd2EkaFJ3U2diPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuQWF9O3IzZS5wcm90b3R5cGUuJHdhJHM1Q1VpZj1mdW5jdGlvbigpe3JldHVybiB0aGlzLkJhfTtyM2UucHJvdG90eXBlLiR3YSRNbFAyamU9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5FYX07Xy5qcyhfLnAzZSxyM2UpOwpfLnYoKTsKfWNhdGNoKGUpe18uX0R1bXBFeGNlcHRpb24oZSl9CnRyeXsKXy5ub2M9Xy5rYygiZ1NadmRiIixbXSk7Cn1jYXRjaChlKXtfLl9EdW1wRXhjZXB0aW9uKGUpfQp0cnl7Cl8udSgiZ1NadmRiIik7CnZhciBvb2M9ZnVuY3Rpb24oYSl7Xy5FdihhLmdldFJvb3QoKS5lbCgpKTtfLiRuYygiZnMiKTthLm9hP18uWmcoZG9jdW1lbnQsInFqTHhSYyIsYS5kYXRhLkZjKCkpOl8uWmcoZG9jdW1lbnQsImtQekVPIixhLmRhdGEpO2EudHJpZ2dlcigiRXRmMTJkIixhLmRhdGEpO18uWmcod2luZG93LmRvY3VtZW50LmJvZHksIndqT0c3ZSIpO2EudHJpZ2dlcigiWnZSTzRiIik7YS50cmlnZ2VyKCJyNEZBbiIpfSxwb2M9Y2xhc3MgZXh0ZW5kcyBfLmhze3N0YXRpYyBRYSgpe3JldHVybntqc2RhdGE6e3BEOl8ucnp9fX1jb25zdHJ1Y3RvcihhKXtzdXBlcigpO3RoaXMub2E9dGhpcy5nZXREYXRhKCJjbWVwIikuTGIoKTt0aGlzLmRhdGE9YS5qc2RhdGEucEQ7dGhpcy5BYT10aGlzLmdldFJvb3QoKS5lbCgpLmdldEF0dHJpYnV0ZSgiZGF0YS1kY2NsIik9PT0idHJ1ZSJ9a2EoKXtpZih0aGlzLkFhKXJldHVybiEwO29vYyh0aGlzKTtyZXR1cm4hMX13YShhKXtfLmxvYyh0aGlzLmRhdGEsYS5kYXRhKTsKb29jKHRoaXMpfX07cG9jLnByb3RvdHlwZS4kd2EkeU0xWUplPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMud2F9O3BvYy5wcm90b3R5cGUuJHdhJGk1S0NVPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMua2F9O18uanMoXy5ub2MscG9jKTsKXy52KCk7Cn1jYXRjaChlKXtfLl9EdW1wRXhjZXB0aW9uKGUpfQp0cnl7Cl8udmxjPWZ1bmN0aW9uKGEsYil7cmV0dXJuIF8uJGgoYSwzLGIpfTtfLndsYz1jbGFzcyBleHRlbmRzIF8ubHtjb25zdHJ1Y3RvcihhKXtzdXBlcihhKX1nZXRWYWx1ZSgpe3JldHVybiBfLnQodGhpcywxKX1zZXRWYWx1ZShhKXtyZXR1cm4gXy5maCh0aGlzLDEsYSl9Y2xlYXJWYWx1ZSgpe3JldHVybiBfLkdlKHRoaXMsMSl9Z2V0VHlwZSgpe3JldHVybiBfLk9qKHRoaXMsMiwxKX1BYyhhKXtyZXR1cm4gXy5aaCh0aGlzLDIsYSl9dGUoKXtyZXR1cm4gXy5laSh0aGlzLDIpfX07Xy53bGMucHJvdG90eXBlLlhhPSJ6UFh6aWUiOwp9Y2F0Y2goZSl7Xy5fRHVtcEV4Y2VwdGlvbihlKX0KdHJ5ewpfLnVsYz1fLmtjKCJDblNXMmQiLFtdKTsKfWNhdGNoKGUpe18uX0R1bXBFeGNlcHRpb24oZSl9CnRyeXsKXy51KCJDblNXMmQiKTsKdmFyIGt6PWNsYXNzIGV4dGVuZHMgXy5oc3tzdGF0aWMgUWEoKXtyZXR1cm57anNkYXRhOntPdmM6Xy53bGN9fX1jb25zdHJ1Y3RvcihhKXtzdXBlcigpO3RoaXMuZGF0YT1hLmpzZGF0YS5PdmM7dGhpcy5yb290PXRoaXMuZ2V0Um9vdCgpLmVsKCk7dGhpcy5yb290LmdldEF0dHJpYnV0ZSgiZGlzYWJsZWQiKSYmdGhpcy5zZXRFbmFibGVkKCExKX1FYSgpe3JldHVybiB0aGlzLnJvb3R9d24oKXtyZXR1cm4gdGhpcy5yb290fWdldFR5cGUoKXtyZXR1cm4gdGhpcy5kYXRhLmdldFR5cGUoKX13YSgpe3ZhciBhPXRoaXMuZGF0YS5nZXRUeXBlKCk7cmV0dXJuIHhsYy5pbmNsdWRlcyhhKX1pc0VuYWJsZWQoKXtyZXR1cm4hdGhpcy5yb290LmdldEF0dHJpYnV0ZSgiZGlzYWJsZWQiKX1CYSgpe3JldHVybiBfLkEodGhpcy5kYXRhLDMpfXFWYSgpe3JldHVybiB0aGlzLmRhdGEuZ2V0VHlwZSgpPT09NH1rYSgpe3JldHVybiB0aGlzLmRhdGEuZ2V0VHlwZSgpIT09NCYmdGhpcy5kYXRhLmdldFR5cGUoKSE9PQo2JiZ0aGlzLmRhdGEuZ2V0VHlwZSgpIT09MTB9c2V0RW5hYmxlZChhKXthP3RoaXMucm9vdC5yZW1vdmVBdHRyaWJ1dGUoImRpc2FibGVkIik6dGhpcy5yb290LnNldEF0dHJpYnV0ZSgiZGlzYWJsZWQiLCJ0cnVlIik7Xy5UZCh0aGlzLnJvb3QsImRpc2FibGVkIiwhYSl9aXNTZWxlY3RlZCgpe3JldHVybiBfLnhtKHRoaXMucm9vdCwiQ0I4bkRlIil9U2ooYSl7aWYodGhpcy53YSgpKXt2YXIgYj10aGlzLkJhKCk/InNlbGVjdGVkIjoiY2hlY2tlZCI7YT90aGlzLmlzRW5hYmxlZCgpJiYoXy5UZCh0aGlzLnJvb3QsYiwidHJ1ZSIpLF8ueW0odGhpcy5yb290LCJDQjhuRGUiKSk6KF8uVGQodGhpcy5yb290LGIsImZhbHNlIiksXy5BbSh0aGlzLnJvb3QsIkNCOG5EZSIpKX19b2EoYSl7YT90aGlzLmlzRW5hYmxlZCgpJiZfLnltKHRoaXMucm9vdCwiQ2ppWnZiIik6Xy5BbSh0aGlzLnJvb3QsIkNqaVp2YiIpfWdldENvbnRlbnQoKXtyZXR1cm4gXy5kbih0aGlzLlZhKCJpYm5DNmIiKS5lbCgpKX1BYSgpe3JldHVybiBfLmdnKHRoaXMucm9vdCwKInNob3J0TGFiZWwiKX1nZXRWYWx1ZSgpe3JldHVybiB0aGlzLmRhdGEuZ2V0VmFsdWUoKX19O2t6LnByb3RvdHlwZS4kd2EkSHZuSzJiPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZ2V0VmFsdWV9O2t6LnByb3RvdHlwZS4kd2EkVElOd1piPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuQWF9O2t6LnByb3RvdHlwZS4kd2EkYURHczRkPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZ2V0Q29udGVudH07a3oucHJvdG90eXBlLiR3YSRLS2p2WGI9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5pc1NlbGVjdGVkfTtrei5wcm90b3R5cGUuJHdhJGV6eDgxZT1mdW5jdGlvbigpe3JldHVybiB0aGlzLmthfTtrei5wcm90b3R5cGUuJHdhJEJuS2RRPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucVZhfTtrei5wcm90b3R5cGUuJHdhJEk5Rk5rZT1mdW5jdGlvbigpe3JldHVybiB0aGlzLkJhfTtrei5wcm90b3R5cGUuJHdhJHlYZ21SZT1mdW5jdGlvbigpe3JldHVybiB0aGlzLmlzRW5hYmxlZH07Cmt6LnByb3RvdHlwZS4kd2EkcHhhVVRiPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMud2F9O2t6LnByb3RvdHlwZS4kd2EkU2JodENmPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZ2V0VHlwZX07a3oucHJvdG90eXBlLiR3YSR0NGFMTGQ9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy53bn07a3oucHJvdG90eXBlLiR3YSR4ZHk4MD1mdW5jdGlvbigpe3JldHVybiB0aGlzLkVhfTtfLmpzKF8udWxjLGt6KTt2YXIgeGxjPVsyLDNdOwpfLnYoKTsKfWNhdGNoKGUpe18uX0R1bXBFeGNlcHRpb24oZSl9CnRyeXsKXy5kbGM9Xy5rYygiblJ3V25lIixbXSk7Cn1jYXRjaChlKXtfLl9EdW1wRXhjZXB0aW9uKGUpfQp0cnl7CnZhciB6a2MsRmtjLE5rYyx5a2MsU2tjLFVrYyxPa2MsWWtjLCRrYyxNa2MsV2tjLGFsYyx3a2MseGtjLFRrYyxWa2MsZ3osR2tjLFhrYyxIa2MsdmtjLExrYyxRa2MsWmtjLERrYztfLnVrYz1mdW5jdGlvbihhLGIsYyl7Xy5ua2Muc2V0KF8ubHUoKS50b1N0cmluZyghMCksXy5QbSgpKTtiPWJ8fHt9O2IuZnBzdGF0ZT1hO18uQWcoYixjKX07Cl8uQ2tjPWZ1bmN0aW9uKGEsYil7dmtjKys7aWYod2luZG93LmdldFNlbGVjdGlvbil7bGV0IGY9d2luZG93LmdldFNlbGVjdGlvbigpO2YmJmYucmVtb3ZlQWxsUmFuZ2VzKCl9dmFyIGM9ITEsZD0hMTtfLkxhKGEsZj0+e2lmKGY9PT0xKV8uR2coInRyZXgiKT9kPSEwOmM9ITA7ZWxzZXt2YXIgZz1fLkxnKGYpO2lmKGchPT1kb2N1bWVudC5ib2R5KXt2YXIgaD1mWyJmcC1zIl07aHx8KGg9Xy5TbSgiRElWIiksZlsiZnAtcyJdPWgpO2c/Xy5XbShoLGYpOihnPV8uTGcoaCkpJiZnLnJlbW92ZUNoaWxkKGgpO18uYjViKGYsZik7ZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChmKX1fLmhuKGYseyJtYXJnaW4tdG9wIjotXy5mei5nZXRIZWFkZXJQYWRkaW5nSGVpZ2h0KCkrInB4IiwibWFyZ2luLWJvdHRvbSI6LV8uZnouZ2V0Rm9vdGVyUGFkZGluZ0hlaWdodCgpKyJweCJ9KTtmWyJmcC1pIl09dmtjO18uQW0oZiwiZkNqVmxiIik7Xy5VNGIoZiwidDNMNURkIil9fSk7Xy5MYShkb2N1bWVudC5ib2R5LmNoaWxkcmVuLApmPT57aWYoISh3a2MuaGFzKGYudGFnTmFtZSl8fHhrYy50ZXN0KGYuaWQpfHxmLmlkPT09ImxiInx8ZlsiZnAtaSJdPT09dmtjfHxmLmhhc0F0dHJpYnV0ZSgiZGF0YS1pbWlnIikpKWlmKF8uQW0oZiwicjN4QTJkIiksZiYmZlsiZnAtaSJdPjApe3lrYyhmKTtsZXQgZz1mWyJmcC1zIl07ZyYmZiYmZlsiZnAtaSJdPjAmJihnLnBhcmVudE5vZGU/KF8uV20oZixnKSxfLlltKGcpKTpfLlltKGYpKTtmLnBhcmVudE5vZGUhPT1kb2N1bWVudC5ib2R5fHxfLnltKGYsImZDalZsYiIpfWVsc2UgXy5DbShmLCJmQ2pWbGIiLCFjKSxmJiZmLmlkLnN0YXJ0c1dpdGgoInRyZXhfIikmJl8uQ20oZiwiZkNqVmxiIiwhZCl9KTt2YXIgZTsoKGU9Z29vZ2xlKT09bnVsbD8wOmUudWgpP2dvb2dsZS51aCgiZnBzdGF0ZSIpOl8udW4oZG9jdW1lbnQuYm9keSwiIik7YiE9PSExJiYoYyYmIXprYygpP18uQWtjKCk6Xy5Ca2MoKSl9Owp6a2M9ZnVuY3Rpb24oKXt2YXIgYT1fLnhtKGRvY3VtZW50LmJvZHksInFzLWkiKSxiPSEhXy5HZygiaXN0YXRlIiksYz0hIV8uR2coInRyZXgiKSxkPV8uR2coIm9zaG9wIik9PT0iYXB2IjtyZXR1cm4gYXx8Y3x8Ynx8ZH07RmtjPWZ1bmN0aW9uKGEpe2lmKGE9PT1neilyZXR1cm4gRGtjO3ZhciBiPV8uRWtjW2d6KyJcbiIrYV07cmV0dXJuIGI/Yjpnej09PSImIj9Ea2M6KGI9Xy5Fa2NbIipcbiIrYV0pP2I6KGI9Xy5Fa2NbZ3orIlxuKiJdKT9iOkRrY307Ck5rYz1mdW5jdGlvbihhKXt2YXIgYj1Ha2M7Yj1iPT09MT9iOmI7aWYoSGtjIT09MSl7dmFyIGM9SGtjO2Muc3R5bGUudG9wPSIiO18uQW0oYywiY2ExTUVlIil9Xy5Da2MoW2JdLCExKTsoYz1fLklrYy5nZXQoZ3opKSYmYy5yVSYmYy5yVS5jYWxsKG51bGwpO2lmKGM9Yj09PTE/bnVsbDpiKV8ueW0oZG9jdW1lbnQuYm9keSwiUWpaMVNkIiksXy55bShjLCJjYTFNRWUiKSxfLkFtKGMsInIzeEEyZCIpLGMuZm9jdXMoKTtpZihfLkprYyl7bGV0IGY9Xy5Ka2M7dmFyIGQ9Zi54LGU9Zi55K18uZnouZ2V0U2Nyb2xsVG9wKCk7Xy5mei5maXhlZFVpU2Nyb2xsVG8oZCxlKTtjJiYoZi54JiYoYy5zdHlsZS5sZWZ0PSIiKSxmLnkmJihjLnN0eWxlLnRvcD0iIikpfWVsc2UgXy5La2MhPT0xJiYoYz1fLmZ6LmdldFNjcm9sbFRvcCgpLF8uZnouZml4ZWRVaVNjcm9sbFRvKDAsYykpO18uSmtjPW51bGw7YiE9PTF8fHprYygpP18ubGtjfHxfLkhrYXx8Xy5Ha2F8fF8uQmtjKCk6Xy5Ba2MoKTtnej0KYTtIa2M9YjtHa2M9bnVsbDtMa2MmJihfLkFuKExrYyksTGtjPW51bGwpO18uc2tjKCk7TWtjKCk7KGE9Xy5Ja2MuZ2V0KGEpKSYmYS5VSmEmJmEuVUphLmNhbGwobnVsbCl9O18uQWtjPWZ1bmN0aW9uKCl7aWYoXy56ZClfLmZ6LmthKDEpO2Vsc2V7bGV0IGE9Xy5kZyhkb2N1bWVudCk7Xy4kZihfLlJ1LGEuU2woKSkudGhlbihiPT57YiYmYi5pc0F2YWlsYWJsZSgpJiZiLmV4aXRCYXNpY01vZGUoMTIpfSl9fTtfLkJrYz1mdW5jdGlvbigpe2lmKF8uemQpXy5mei5rYSgzKTtlbHNle2xldCBhPV8uZGcoZG9jdW1lbnQpO18uJGYoXy5SdSxhLlNsKCkpLnRoZW4oYj0+e2ImJmIuaXNBdmFpbGFibGUoKSYmYi5lbnRlckJhc2ljTW9kZSgxMil9KX19O3lrYz1mdW5jdGlvbihhKXtfLmhuKGEseyJtYXJnaW4tdG9wIjoiIiwibWFyZ2luLWJvdHRvbSI6IiJ9KX07ClNrYz1mdW5jdGlvbihhKXtpZihhPT09IiIpe18uR2coImlzdGF0ZSIpJiZfLkNnKCJpc3RhdGUiLF8uR2coImlzdGF0ZSIpLCEwKTt2YXIgYj1fLmx1KCkucGF0aG5hbWUoKTtiIT09Ii9zZWFyY2giJiYoYj1Pa2MoYikpJiYoYj1fLlBrYy5nZXQoYikpJiYoYT1iLnN0YXRlKX1hIT09Xy5oeiYmKF8uaHo9YSxhPT09IiJ8fF8uSWtjLmhhcyhhKSkmJihRa2M/KGI9KCk9PnZvaWQgXy5Sa2MoYSksUWtjLnByb21pc2UudGhlbihiLGIpKTpfLlJrYyhhKSl9O1VrYz1mdW5jdGlvbihhKXtyZXR1cm4gYSYmKGE9VGtjLmV4ZWMoYSkpJiZhWzFdP2RlY29kZVVSSUNvbXBvbmVudChhWzFdLnJlcGxhY2UoL1wrL2csIiAiKSk6IiJ9O09rYz1mdW5jdGlvbihhKXtyZXR1cm4oYT1Wa2MuZXhlYyhhKSkmJmFbMV0/ZGVjb2RlVVJJQ29tcG9uZW50KGFbMV0ucmVwbGFjZSgvXCsvZywiICIpKToiIn07CllrYz1mdW5jdGlvbihhKXthPWEuamc7dmFyIGI9VWtjKGEubmV3VVJMKTtpZihiPT09Xy5oeil7bGV0IGM9VWtjKGEub2xkVVJMKTsvIyguKiYpP3RyZXg9Ly50ZXN0KGEub2xkVVJMKXx8Yz09PWJ8fFdrYygpfHwhWGtjfHwoYT1Ya2MsXy5mei5maXhlZFVpU2Nyb2xsVG8oYS54LGEueSkpfX07Xy5Sa2M9ZnVuY3Rpb24oYSl7aWYoZ3o9PT0iJiImJmE9PT0iIilnej1hO2Vsc2UgaWYoKDAsXy5pbykobmV3IFprYyksYT09PSIiKSRrYyhhLDEpLF8uVTRiKGRvY3VtZW50LmJvZHksIkFCdWFmYyIpO2Vsc2V7Z3o9PT0iIiYmXy5VNGIoZG9jdW1lbnQuYm9keSwiaGNZNjkiKTt2YXIgYj1fLklrYy5nZXQoYSk7aWYoYiYmKGI9Yi5tTi5jYWxsKG51bGwsZ3opKSl7Xy5SZyhiKT8ka2MoYSxiKTpiLnRoZW4oYz0+eyRrYyhhLGMpfSwoKT0+e01rYygpfSk7cmV0dXJufU1rYygpfX07CiRrYz1mdW5jdGlvbihhLGIpe3ZhciBjPUZrYyhhKSxkPXR5cGVvZiBjLnRyYW5zaXRpb25UeXBlPT09ImZ1bmN0aW9uIj9jLnRyYW5zaXRpb25UeXBlKGd6LGEsYy5ORmIpOmMudHJhbnNpdGlvblR5cGUsZT1iPT09MSxmPWQhPT0xfHxIa2M9PT0xP251bGw6SGtjLGc9ZCE9PTB8fGI9PT0xP251bGw6YjtHa2M9YjtfLktrYz1kO1hrYz1fLlBtKCk7aWYoZil7bGV0IGs9WGtjO18uQ2tjKFtmLGJdLCExKTt5a2MoZik7Xy55bShmLCJyM3hBMmQiKTtmLnN0eWxlLnRvcD1fLmZ6LmdldFNjcm9sbFRvcCgpLWsueSsicHgifWcmJihfLkNrYyhbZyxIa2NdLCExKSx5a2MoZyksXy55bShnLCJyM3hBMmQiKSk7ZSYmXy5BbShkb2N1bWVudC5ib2R5LCJRaloxU2QiKTshZSYmKF8ubGtjfHxfLkhrYXx8Xy5Ha2EpJiZfLkJrYygpO0xrY3x8KExrYz1fLmhlKGRvY3VtZW50LmRvY3VtZW50RWxlbWVudCwidG91Y2hzdGFydCIsXy54SWEpKTtfLnJrYygpO2lmKChlPV8uSWtjLmdldChhKSkmJmUub25SZWFkeSl0cnl7ZS5vblJlYWR5LmNhbGwobnVsbCl9Y2F0Y2goayl7YWxjKGspOwpyZXR1cm59ZD09PTE/Xy5wa2MoKTpkPT09MCYmYSE9PSIiJiZneiE9PSIiJiYoXy5Ka2M9Xy5va2MoKSxYa2M9bnVsbCk7dHJ5e3ZhciBoPWMuTkZiLmNhbGwobnVsbCxIa2MsYil9Y2F0Y2goayl7fWg/KGgudGhlbigoKT0+e05rYyhhKX0saz0+e05rYyhhKTt0aHJvdyBrO30pLGcmJl8uSmtjJiYoYj1fLkprYyxiLngmJihnLnN0eWxlLmxlZnQ9LWIueCsicHgiKSxiLnkmJihnLnN0eWxlLnRvcD0tYi55KyJweCIpKSk6TmtjKGEpfTtNa2M9ZnVuY3Rpb24oKXtRa2MmJihRa2MucmVzb2x2ZSgpLFFrYz1udWxsKX07V2tjPWZ1bmN0aW9uKCl7aWYoXy5La2MhPW51bGwpe3ZhciBhPV8uS2tjPT09MTtpZihfLkprYyl7aWYoYXx8R2tjPT09MSl7dmFyIGI9Xy5Ka2M7YT1iLng7Yj1iLnkrXy5mei5nZXRTY3JvbGxUb3AoKTtfLmZ6LmZpeGVkVWlTY3JvbGxUbyhhLGIpO3JldHVybiEwfX1lbHNlIGlmKGEpcmV0dXJuITB9cmV0dXJuITF9OwphbGM9ZnVuY3Rpb24oYSl7Xy5La2M9R2tjPW51bGw7Xy5Da2MoW0hrY10pO0xrYyYmKF8uQW4oTGtjKSxMa2M9bnVsbCk7Xy5za2MoKTtNa2MoKTt0aHJvdyBhO307d2tjPW5ldyBTZXQoWyJTQ1JJUFQiLCJTVFlMRSJdKTt4a2M9UmVnRXhwKCJeKGFiYmx8YWJibHR8Z2JibC1cXGQrfGdiYmx0LVxcZCt8c25iY3xkdWYzYykkIik7VGtjPS8jKD86LiomKT9mcHN0YXRlPShbXiZdKikvO1ZrYz0vXlwvPyhbXlwvXSopLztfLklrYz1uZXcgTWFwO18uUGtjPW5ldyBNYXA7Z3o9IiYiO18uaHo9IiYiO0drYz1udWxsO1hrYz1udWxsO18uSmtjPW51bGw7Xy5Fa2M9e307Xy5La2M9bnVsbDtIa2M9MTt2a2M9MDtMa2M9bnVsbDtRa2M9bnVsbDtaa2M9Y2xhc3N7Y29uc3RydWN0b3IoKXt0aGlzLmZ4YT12b2lkIDA7UWtjPV8ubGYoKX1wbGF5KCl7cmV0dXJuIFFrYz9Ra2MucHJvbWlzZTpQcm9taXNlLnJlc29sdmUoKX1maW5pc2goKXtNa2MoKX1Oaigpe3JldHVybiAyRTN9fTsKRGtjPXtORmI6ZnVuY3Rpb24oKXtyZXR1cm4gXy5EZygpfSx0cmFuc2l0aW9uVHlwZTowfTtfLmVvYSgoKT0+e18uemcoImZwc3RhdGUiLFNrYyk7Xy5oZSh3aW5kb3csImhhc2hjaGFuZ2UiLFlrYyl9KTsKfWNhdGNoKGUpe18uX0R1bXBFeGNlcHRpb24oZSl9CnRyeXsKdmFyIERqYz1mdW5jdGlvbihhKXtyZXR1cm4gQ2pjLnNvbWUoYj0+Yi50ZXN0KGEpKX0sRmpjPWZ1bmN0aW9uKGEsYil7dmFyIGM7dmFyIGQ9KGM9YS5mb3JtQ29udGVudCk9PW51bGw/dm9pZCAwOmMubG9jYWxlO2M9ZD09bnVsbD92b2lkIDA6ZC5zcGxpdCgiLSIpWzBdO2Q9ZCYmRWpjLmluY2x1ZGVzKGQpP2Q6YyYmRWpjLmluY2x1ZGVzKGMpP2M6dm9pZCAwO2Q9KGQhPW51bGw/ZDoiZW4iKS5yZXBsYWNlQWxsKCItIiwiXyIpLnRvTG93ZXJDYXNlKCk7dmFyIGU7YT0oKGU9YS5pbml0aWFsaXphdGlvbkRhdGEpPT1udWxsPzA6ZS51c2VOaWdodGx5UmVsZWFzZSk/Im5pZ2h0bHkiOiJsaXZlIjt2YXIgZjtyZXR1cm4oYj09bnVsbD8wOihmPWIuZ2V0RW5hYmxlQWxvaGFCaW5hcnlTcGxpdCk9PW51bGw/MDpmLmNhbGwoYikpPygwLF8uTGMpYGh0dHBzOi8vd3d3LmdzdGF0aWMuY29tL3VzZXJ2b2ljZS9mZWVkYmFjay9jbGllbnQvd2ViLyR7YX0vbWFpbl9saWdodF9iaW5hcnkuanNgOgooMCxfLkxjKWBodHRwczovL3d3dy5nc3RhdGljLmNvbS91c2Vydm9pY2UvZmVlZGJhY2svY2xpZW50L3dlYi8ke2F9L21haW5fYmluYXJ5X18ke2R9LmpzYH0sSWpjPWZ1bmN0aW9uKGEsYixjLGQpe2lmKEdqYyYmSGpjPT09YilyZXR1cm4gR2pjO0hqYz1iO3ZhciBlPUZqYyhhLGQpO3JldHVybiBHamM9Yi5mZWVkYmFja1YyR2xvYmFsT2JqZWN0P1Byb21pc2UucmVzb2x2ZShiLmZlZWRiYWNrVjJHbG9iYWxPYmplY3QpOm5ldyBQcm9taXNlKChmLGcpPT57dmFyIGg9Xy5TbSgiU0NSSVBUIik7Xy5kZChoLGUpO2gub25sb2FkPSgpPT57Yi5mZWVkYmFja1YyR2xvYmFsT2JqZWN0P2YoYi5mZWVkYmFja1YyR2xvYmFsT2JqZWN0KTpnKEVycm9yKCJiaSIpKX07aC5vbmVycm9yPSgpPT57ZyhFcnJvcigiY2lgIitlLnRvU3RyaW5nKCkpKX07Yy5ib2R5LmFwcGVuZENoaWxkKGgpfSl9LExqYz1mdW5jdGlvbihhLGIsYyxkKXtpZihKamMmJktqYz09PWIpcmV0dXJuIEpqYztLamM9Yjt2YXIgZT0KRmpjKGEsZCk7cmV0dXJuIEpqYz1iLmZlZWRiYWNrVjJHbG9iYWxPYmplY3Q/UHJvbWlzZS5yZXNvbHZlKGIuZmVlZGJhY2tWMkdsb2JhbE9iamVjdCk6bmV3IFByb21pc2UoKGYsZyk9Pnt2YXIgaD1fLlNtKCJTQ1JJUFQiKTtfLmRkKGgsZSk7aC5vbmxvYWQ9KCk9PntiLmZlZWRiYWNrVjJHbG9iYWxPYmplY3Q/ZihiLmZlZWRiYWNrVjJHbG9iYWxPYmplY3QpOmcoRXJyb3IoImJpIikpfTtoLm9uZXJyb3I9KCk9PntnKEVycm9yKCJjaWAiK2UudG9TdHJpbmcoKSkpfTtjLmJvZHkuYXBwZW5kQ2hpbGQoaCl9KX0sTWpjPWFzeW5jIGZ1bmN0aW9uKGEsYixjLGQpe3ZhciBlPSgwLF8uTWYpKCksZj1lKCk7ZT1lKDEpO3RyeXtsZXQgZz1EYXRlLm5vdygpLGg9ZShhd2FpdCBmKElqYyhhLGMsZCxiKSkpLGs7az1lKGF3YWl0IGYoaC5pbml0aWFsaXplRmVlZGJhY2tDbGllbnRBc3luYyhhLGcsYikpKTtrLmluaXRpYXRlQWxvaGEoKTtyZXR1cm4ga31maW5hbGx5e2YoKX19LE5qYz1hc3luYyBmdW5jdGlvbihhLApiLGMsZCl7dmFyIGU9KDAsXy5NZikoKSxmPWUoKTtlPWUoMSk7dHJ5e2xldCBnPURhdGUubm93KCksaD1lKGF3YWl0IGYoTGpjKGEsYyxkLmRvY3VtZW50LGIpKSksaztrPWUoYXdhaXQgZihoLmluaXRpYWxpemVGZWVkYmFja0NsaWVudEFzeW5jKGEsZyxiLGQpKSk7ay5pbml0aWF0ZUFsb2hhKCk7cmV0dXJuIGt9ZmluYWxseXtmKCl9fSxQamM9YXN5bmMgZnVuY3Rpb24oYSxiLGMpe3ZhciBkPWN8fF8uZWEsZTtpZihiPT1udWxsPzA6KGU9Yi5nZXRFbmFibGVBbG9oYUJpbmFyeVNwbGl0KT09bnVsbD8wOmUuY2FsbChiKSl7aWYoZC5pc0Zvcm1PcGVuZWQpdGhyb3cgbmV3IE9qYztkLmlzRm9ybU9wZW5lZD0hMDthLmNhbGxiYWNrcz1hLmNhbGxiYWNrc3x8e307bGV0IGY9YS5jYWxsYmFja3Mub25DbG9zZXx8KCgpPT57fSk7YS5jYWxsYmFja3Mub25DbG9zZT1nPT57ZC5pc0Zvcm1PcGVuZWQ9ITE7ZihnKX07dHJ5e3JldHVybiBOamMoYSxiLGQsZCl9Y2F0Y2goZyl7dGhyb3cgZC5pc0Zvcm1PcGVuZWQ9CiExLGc7fX1lbHNle2lmKGQuaXNGb3JtT3BlbmVkKXRocm93IG5ldyBPamM7ZC5pc0Zvcm1PcGVuZWQ9ITA7YS5jYWxsYmFja3M9YS5jYWxsYmFja3N8fHt9O2xldCBmPWEuY2FsbGJhY2tzLm9uQ2xvc2V8fCgoKT0+e30pO2EuY2FsbGJhY2tzLm9uQ2xvc2U9Zz0+e2QuaXNGb3JtT3BlbmVkPSExO2YoZyl9O3RyeXtyZXR1cm4gTWpjKGEsYixkLGQuZG9jdW1lbnQpfWNhdGNoKGcpe3Rocm93IGQuaXNGb3JtT3BlbmVkPSExLGc7fX19LFVqYz1hc3luYyBmdW5jdGlvbihhLGIpe3JldHVybiBuZXcgUHJvbWlzZSgoYyxkKT0+e051bWJlci5pc0ludGVnZXIoTnVtYmVyKGEpKSYmTnVtYmVyKGEpPjA/KGQ9UWpjKGIhPW51bGw/YjoiIikrIi9hbG9oYV9mb3JtX3Byb3BlcnRpZXM/cHJvZHVjdElkPSIrYSxfLnFyKGQsZT0+e2U9ZS50YXJnZXQ7dmFyIGY9bnVsbDt0cnl7Zj1fLmJjKFJqYyxKU09OLnN0cmluZ2lmeShfLnRyKGUsIildfSdcbiIpKSl9Y2F0Y2goZyl7ZT1uZXcgUmpjLGY9U2pjKCksCmY9Xy5qayhmLDI1LCExKSxmPV8uamsoZiwyNiwhMSksZj1fLlNiKGUsVGpjLDEsZil9YyhmKX0sIkdFVCIsIiIse30sMkUzLCEwKSk6ZChFcnJvcigiZGlgIithKSl9KX0sUWpjPWZ1bmN0aW9uKGEpe3JldHVybiBEamMoYSk/YToiaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS90b29scy9mZWVkYmFjayJ9O3ZhciBXamM9ZnVuY3Rpb24oKXt2YXIgYT1WamMoKTtyZXR1cm4gXy5qayhhLDcsITApfSxWamM9ZnVuY3Rpb24oKXt2YXIgYT1uZXcgVGpjO2E9Xy5qayhhLDUsITApO2E9Xy5qayhhLDIsITApO2E9Xy5qayhhLDQsITEpO2E9Xy5qayhhLDgsITApO3JldHVybiBfLmprKGEsOSwhMCl9LFhqYz1mdW5jdGlvbigpe3ZhciBhPVdqYygpO3JldHVybiBfLmprKGEsMTAsITApfSxZamM9ZnVuY3Rpb24oKXt2YXIgYT1YamMoKTtyZXR1cm4gXy5qayhhLDEyLCEwKX0sWmpjPWZ1bmN0aW9uKCl7dmFyIGE9WWpjKCk7cmV0dXJuIF8uamsoYSwxMywhMSl9LCRqYz1mdW5jdGlvbigpe3ZhciBhPVpqYygpO3JldHVybiBfLmprKGEsMTQsITApfSxha2M9ZnVuY3Rpb24oKXt2YXIgYT0kamMoKTtyZXR1cm4gXy5qayhhLDE1LCEwKX0sU2pjPWZ1bmN0aW9uKCl7dmFyIGE9YWtjKCk7cmV0dXJuIF8uamsoYSwyMCwhMSl9LFRqYz1jbGFzcyBleHRlbmRzIF8ubHtjb25zdHJ1Y3RvcihhKXtzdXBlcihhKX1nZXRFbmFibGVTc0VuZ2luZSgpe3JldHVybiBfLkEodGhpcywKMil9Z2V0RW5hYmxlQXdyKCl7cmV0dXJuIF8uQSh0aGlzLDMpfWdldEFsb2hhQXV0b0dhUm9sbG91dCgpe3JldHVybiBfLkEodGhpcyw1KX1nZXRFbmFibGVDb25maWd1cmF0b3IoKXtyZXR1cm4gXy5BKHRoaXMsNil9Z2V0RW5hYmxlTXdlYigpe3JldHVybiBfLkEodGhpcyw3KX1nZXRFbmFibGVDdGxDb25zZW50Q2hlY2tib3goKXtyZXR1cm4gXy5BKHRoaXMsOCl9Z2V0RW5hYmxlSWZyYW1lKCl7cmV0dXJuIF8uQSh0aGlzLDkpfWdldEVuYWJsZVNjcmVlbnNob3ROdWRnZSgpe3JldHVybiBfLkEodGhpcywxMCl9Z2V0RW5hYmxlV2ViU3RhcnR1cENvbmZpZ0VuZHBvaW50KCl7cmV0dXJuIF8uQSh0aGlzLDExKX1nZXRFbmFibGVKdW5rTnVkZ2UoKXtyZXR1cm4gXy5BKHRoaXMsMTIpfWdldEVuYWJsZUNvbmZpZ3VyYXRvckxvY2FsZSgpe3JldHVybiBfLkEodGhpcywxMyl9Z2V0RW5hYmxlVGlueU5vUG9pbnRlcigpe3JldHVybiBfLkEodGhpcywxNCl9Z2V0RW5hYmxlU3VwcG9ydFNlc3Npb25Mb2dnaW5nKCl7cmV0dXJuIF8uQSh0aGlzLAoxNSl9Z2V0RW5hYmxlRmlsZVVwbG9hZEZvclNjcmVlbnNob3QoKXtyZXR1cm4gXy5BKHRoaXMsMTYpfWdldEVuYWJsZURpcmVjdERlZmxlY3Rpb25Gb3JTaW5nbGVDYXRlZ29yeSgpe3JldHVybiBfLkEodGhpcywxNyl9Z2V0RW5hYmxlSW1hZ2VTYW5pdGl6YXRpb24oKXtyZXR1cm4gXy5BKHRoaXMsMTgpfWdldEVuYWJsZUFsb2hhQmluYXJ5U3BsaXQoKXtyZXR1cm4gXy5BKHRoaXMsMTkpfWdldEVuYWJsZURiRmVlZGJhY2tJbnRlbnRzKCl7cmV0dXJuIF8uQSh0aGlzLDIwKX1nZXRFbmFibGVNYXJrTWFuZGF0b3J5RmllbGRzV2l0aFJlcXVpcmVkKCl7cmV0dXJuIF8uQSh0aGlzLDIxKX1nZXRFbmFibGVGZWVkYmFja0NhdGVnb3J5Q3VzdG9tVWkoKXtyZXR1cm4gXy5BKHRoaXMsMjIpfWdldEVuYWJsZVJlYWx0aW1lQ3RsKCl7cmV0dXJuIF8uQSh0aGlzLDIzKX1nZXRFbmFibGVBbG9oYUhlYWRsZXNzKCl7cmV0dXJuIF8uQSh0aGlzLDI0KX1nZXRVcGRhdGVGZWVkYmFja0NvbmZpcm1hdGlvbkNsYXJpdHkoKXtyZXR1cm4gXy5BKHRoaXMsCjI1KX1nZXRFbmFibGVWaWV3RmVlZGJhY2tSZXBvcnRzTGluaygpe3JldHVybiBfLkEodGhpcywyNil9fTt2YXIgUmpjPWNsYXNzIGV4dGVuZHMgXy5se2NvbnN0cnVjdG9yKGEpe3N1cGVyKGEpfX07dmFyIENqYz1bL2h0dHBzOlwvXC9zYW5kYm94XC5nb29nbGVcLmNvbVwvdG9vbHNcL2ZlZWRiYWNrLywvaHR0cHM6XC9cL2ZlZWRiYWNrLWZyb250ZW5kLXF1YWxbYS16MC05Ll0qXC5nb29nbGVcLmNvbVwvaW5hcHAvLC9odHRwczpcL1wvZmVlZGJhY2stZnJvbnRlbmQtcXVhbFthLXowLTkuXSpcLmdvb2dsZVwuY29tXC90b29sc1wvZmVlZGJhY2svLC9odHRwczpcL1wvLipcLmdvb2dsZXVzZXJjb250ZW50XC5jb21cL2luYXBwL107dmFyIEVqYz0iYWYgYW0gYXItRUcgYXItSk8gYXItTUEgYXItU0EgYXItWEIgYXIgYXogYmUgYmcgYm4gYnMgY2EgY3MgY3kgZGEgZGUtQVQgZGUtQ0ggZGUgZWwgZW4gZW4tR0IgZW4tQVUgZW4tQ0EgZW4tSUUgZW4tSU4gZW4tTlogZW4tU0cgZW4tWEEgZW4tWEMgZW4tWkEgZXMgZXMtNDE5IGVzLUFSIGVzLUJPIGVzLUNMIGVzLUNPIGVzLUNSIGVzLURPIGVzLUVDIGVzLUdUIGVzLUhOIGVzLU1YIGVzLU5JIGVzLVBBIGVzLVBFIGVzLVBSIGVzLVBZIGVzLVNWIGVzLVVTIGVzLVVZIGVzLVZFIGV0IGV1IGZhIGZpIGZpbCBmci1DQSBmci1DSCBmciBnbCBnc3cgZ3UgaGUgaGkgaHIgaHUgaHkgaWQgaW4gaXMgaXQgaXcgamEga2Ega2sga20ga24ga28ga3kgbG4gbG8gbHQgbHYgbWsgbWwgbW4gbW8gbXIgbXMgbXkgbmIgbmUgbmwgbm8gcGEgcGwgcHQgcHQtQlIgcHQtUFQgcm8gcnUgc2kgc2sgc2wgc3Egc3ItTGF0biBzciBzdiBzdyB0YSB0ZSB0aCB0bCB0ciB1ayB1ciB1eiB2aSB6aCB6aC1DTiB6aC1ISyB6aC1UVyB6dSIuc3BsaXQoIiAiKTt2YXIgT2pjPWNsYXNzIGV4dGVuZHMgRXJyb3J7Y29uc3RydWN0b3IoKXtzdXBlcigiRm9ybSBpcyBlaXRoZXIgbG9hZGluZyBvciBhbHJlYWR5IG9wZW5lZCIpO3RoaXMubmFtZT0iRHVwbGljYXRlRm9ybUVycm9yIn19LEdqYyxKamMsSGpjLEtqYzt2YXIgYmtjLGRrYyxja2M7Xy5MaSgidXNlcmZlZWRiYWNrLkNvbG9yU2NoZW1lcyIse05hZDoxLHcxYzoyfSk7CmJrYz1mdW5jdGlvbihhLGIsYyxkKXthLnRpbWVPZlN0YXJ0Q2FsbD0obmV3IERhdGUpLmdldFRpbWUoKTt2YXIgZT1jfHxfLmVhLGY9ZS5kb2N1bWVudCxnPWEubm9uY2V8fF8uRmphKGUuZG9jdW1lbnQpO2cmJiFhLm5vbmNlJiYoYS5ub25jZT1nKTtpZihhLmZsb3c9PSJoZWxwIil7dmFyIGg9Xy5NaSgiZG9jdW1lbnQubG9jYXRpb24uaHJlZiIsZSk7IWEuaGVscENlbnRlckNvbnRleHQmJmgmJihhLmhlbHBDZW50ZXJDb250ZXh0PWguc3Vic3RyaW5nKDAsMTIwMCkpO2g9ITA7aWYoYiYmSlNPTiYmSlNPTi5zdHJpbmdpZnkpe2xldCBrPUpTT04uc3RyaW5naWZ5KGIpOyhoPWsubGVuZ3RoPD0xMjAwKSYmKGEucHNkSnNvbj1rKX1ofHwoYj17aW52YWxpZFBzZDohMH0pfWI9W2EsYixjLGRdO2UuR09PR0xFX0ZFRURCQUNLX1NUQVJUX0FSR1VNRU5UUz1iO2M9YS5mZWVkYmFja1NlcnZlclVyaXx8Ii8vd3d3Lmdvb2dsZS5jb20vdG9vbHMvZmVlZGJhY2siO2lmKGQ9ZS5HT09HTEVfRkVFREJBQ0tfU1RBUlQpZC5hcHBseShlLApiKTtlbHNle2U9YysiL2xvYWQuanM/Ijtmb3IobGV0IGsgaW4gYSliPWFba10sYj09bnVsbHx8Xy5wZyhiKXx8KGUrPWVuY29kZVVSSUNvbXBvbmVudChrKSsiPSIrZW5jb2RlVVJJQ29tcG9uZW50KGIpKyImIik7YT1fLm9lKGYpLmNyZWF0ZUVsZW1lbnQoIlNDUklQVCIpO2cmJmEuc2V0QXR0cmlidXRlKCJub25jZSIsZyk7Xy5kZChhLF8ueGMoZSkpO2YuYm9keS5hcHBlbmRDaGlsZChhKX19Owpka2M9YXN5bmMgZnVuY3Rpb24oYSxiLGMsZCl7dmFyIGU9KDAsXy5NZikoKSxmPWUoKTtlPWUoMSk7dHJ5e2xldCByPWEuZmxvdz09PSJzdWJtaXQiLHg9ISFfLllCYSx6PXR5cGVvZiB3aW5kb3chPT0idW5kZWZpbmVkIiYmISEod2luZG93Ll9fa2FybWFfX3x8d2luZG93Lmphc21pbmV8fHdpbmRvdy5tb2NoYXx8d2luZG93Lmplc3QpO2lmKHImJnopYmtjKGEsYixjLGQpO2Vsc2V7dmFyIGcsaD0oZz1lKGF3YWl0IGYoVWpjKGEucHJvZHVjdElkLGEuZmVlZGJhY2tTZXJ2ZXJVcmkpKSkpPT1udWxsP3ZvaWQgMDpfLnEoZyxUamMsMSksaz0heHx8KGg9PW51bGw/dm9pZCAwOmguZ2V0RW5hYmxlTXdlYigpKSxtPSFhLnRpbnlOb1BvaW50ZXJ8fChoPT1udWxsP3ZvaWQgMDpoLmdldEVuYWJsZVRpbnlOb1BvaW50ZXIoKSksbj0hciYmKCFofHxoLmdldEFsb2hhQXV0b0dhUm9sbG91dCgpJiZrJiZtKSxwPXImJihoPT1udWxsP3ZvaWQgMDpoLmdldEVuYWJsZUFsb2hhSGVhZGxlc3MoKSkmJgphLnJlcG9ydDtufHxwP2UoYXdhaXQgZihja2MoYSxiLGMsaCxkKSkpOmJrYyhhLGIsYyxkKX19ZmluYWxseXtmKCl9fTsKY2tjPWFzeW5jIGZ1bmN0aW9uKGEsYixjLGQsZSl7dmFyIGY9KDAsXy5NZikoKSxnPWYoKTtmPWYoMSk7dHJ5e2xldCBoPWN8fF8uZWEsaz1hLnNlcnZlckVudmlyb25tZW50PT09IkRFViI7Yz1jfHxfLmVhO2xldCBtPWEubm9uY2V8fF8uRmphKGMuZG9jdW1lbnQpLG49e2ludGVncmF0aW9uS2V5czp7cHJvZHVjdElkOmEucHJvZHVjdElkLGZlZWRiYWNrQnVja2V0OmEuYnVja2V0LHRyaWdnZXJJZDphLnRyaWdnZXJJZCxtaWNyb2ZlZWRiYWNrU2NvcmU6YS5taWNyb2ZlZWRiYWNrU2NvcmV9LGNhbGxiYWNrczp7b25DbG9zZTphLmNhbGxiYWNrLG9uTG9hZDphLm9uTG9hZENhbGxiYWNrfSxmb3JtQ29udGVudDp7bG9jYWxlOmEubG9jYWxlLGRpc2FibGVTY3JlZW5zaG90OmEuZGlzYWJsZVNjcmVlbnNob3R0aW5nLHByb2R1Y3REaXNwbGF5TmFtZTp2b2lkIDAsYW5ub3VuY2VtZW50OnZvaWQgMCxpc3N1ZUNhdGVnb3JpZXM6dm9pZCAwLGluY2x1ZGVTZXZlcml0eVNlbGVjdGlvbjp2b2lkIDAsCmN1c3RvbUltYWdlU3JjOnZvaWQgMCx0aGFua1lvdU1lc3NhZ2U6dm9pZCAwLGRiYTp2b2lkIDAsZGVmYXVsdEZvcm1JbnB1dFZhbHVlczp2b2lkIDAsZGVmYXVsdEZvcm1JbnB1dFZhbHVlc1N0cmluZzp2b2lkIDAsYWJ1c2VMaW5rOmEuYWJ1c2VMaW5rLGFkZGl0aW9uYWxEYXRhQ29uc2VudDphLmFkZGl0aW9uYWxEYXRhQ29uc2VudH0saW5pdGlhbGl6YXRpb25EYXRhOntpc0xvY2FsU2VydmVyOmssbm9uY2U6bSx1c2VOaWdodGx5UmVsZWFzZTprLGZlZWRiYWNrSnNVcmw6dm9pZCAwLGZlZWRiYWNrQ3NzVXJsOnZvaWQgMCxmZWVkYmFja0pzVXJsU2VyaWFsaXplZDp2b2lkIDAsZmVlZGJhY2tDc3NVcmxTZXJpYWxpemVkOnZvaWQgMCxzdWJtaXNzaW9uU2VydmVyVXJpOmEuZmVlZGJhY2tTZXJ2ZXJVcmksY29sb3JTY2hlbWU6YS5jb2xvclNjaGVtZX0sZXh0cmFEYXRhOntwcm9kdWN0VmVyc2lvbjphLnByb2R1Y3RWZXJzaW9uLGF1dGhVc2VyOmEuYXV0aHVzZXIsY29uZmlndXJhdG9ySWQ6YS5jb25maWd1cmF0b3JJZCwKY3VzdG9tWkluZGV4OmEuY3VzdG9tWkluZGV4LHRpbnlOb1BvaW50ZXI6YS50aW55Tm9Qb2ludGVyLGFsbG93Tm9uTG9nZ2VkSW5GZWVkYmFjazphLmFsbG93Tm9uTG9nZ2VkSW5GZWVkYmFjayxlbmFibGVBbm9ueW1vdXNGZWVkYmFjazphLmVuYWJsZUFub255bW91c0ZlZWRiYWNrfX07YS5yZXBvcnQmJihuLmhlYWRsZXNzUmVwb3J0PWEucmVwb3J0KTtpZihiKXtsZXQgcD1uZXcgTWFwKE9iamVjdC5lbnRyaWVzKGIpKTtuLmV4dHJhRGF0YS5wcm9kdWN0U3BlY2lmaWNEYXRhPXB9aWYoZSl7bGV0IHA9bmV3IE1hcChPYmplY3QuZW50cmllcyhlKSk7bi5leHRyYURhdGEucHJvZHVjdFNwZWNpZmljQmluYXJ5RGF0YT1wfWYoYXdhaXQgZyhQamMobixkLGgpKSl9ZmluYWxseXtnKCl9fTsKXy5la2M9ZnVuY3Rpb24oYSxiLGMsZCl7dHJ5e2lmKGEuZmxvdz09PSJoZWxwIil7bGV0IGU9YS5oZWxwQ2VudGVyUGF0aC5yZXBsYWNlKC9eXC8vLCIiKTtfLiRjKGN8fHdpbmRvdyxgaHR0cHM6Ly9zdXBwb3J0Lmdvb2dsZS5jb20vJHtlfWApfWVsc2UgZGtjKGEsYixjLGQpLmNhdGNoKGU9PnshZXx8ZSBpbnN0YW5jZW9mIE9qY3x8YmtjKGEsYixjLGQpfSl9Y2F0Y2goZSl7Y2tjKGEsYixjLG51bGwsZCkuY2F0Y2goZj0+eyFmfHxmIGluc3RhbmNlb2YgT2pjfHxia2MoYSxiLGMsZCl9KX19O18uTGkoInVzZXJmZWVkYmFjay5hcGkuc3RhcnRGZWVkYmFjayIsXy5la2MpOwp9Y2F0Y2goZSl7Xy5fRHVtcEV4Y2VwdGlvbihlKX0KdHJ5ewp2YXIgYmxjO2JsYz1mdW5jdGlvbihhKXtyZXR1cm4oYT1fLmdnKGEsInZlZCIpKT9gdmVkOiR7YX1gOiIifTsKXy5jbGM9Y2xhc3N7Y29uc3RydWN0b3IoYSxiLGM9IjE5NiIsZCl7dGhpcy5wcm9kdWN0SWQ9Yzt0aGlzLndhPWE7dGhpcy5vYT1iO3RoaXMua2E9ZHx8bnVsbH1zZW5kKGEsYj0hMSxjPSEwKXt2YXIgZD1fLmpnKGEpLGU9ZC5idWNrZXQsZj1kLnByZXNlcnZldXNlcmlkZW50aXR5PT09InRydWUiLGc9ZC5wcm9kdWN0aWR8fHRoaXMucHJvZHVjdElkLGg9ZC50cmlnZ2VyaWQ7YyYmKChjPWQudmVkKT9nb29nbGUubG9nKCJnZiIsIiZ2ZWQ9IitlbmNvZGVVUklDb21wb25lbnQoYykpOmdvb2dsZS5sb2coImdmIiwiIikpO2Y9e3Byb2R1Y3RJZDpnLGF1dGh1c2VyOl8uQ2QoXy5CZCgiUXJ0eEsiKSwwKSxodHRwczpkb2N1bWVudC5sb2NhdGlvbi5wcm90b2NvbD09PSJodHRwczoiLGVuYWJsZUFub255bW91c0ZlZWRiYWNrOiFmLGV4dHJhY3RNZXRhZGF0YUZ1bmN0aW9uOmJsYyxzZXJ2ZXJVcmk6dGhpcy5rYXx8bnVsbCxjYWxsYmFjazooKT0+e18uWGcoYSwiWllJZkZkIik7Xy5Ba2MoKX0sCm9uTG9hZENhbGxiYWNrOigpPT57Xy5Ca2MoKX0sbG9jYWxlOl8uaXooKX07dmFyIGs9e2VpOmdvb2dsZS5rRUksc2k6dGhpcy53YSxpbnRlcm5hbDp0aGlzLm9hfTtlJiYoZi5idWNrZXQ9ZSk7aCYmKGYudHJpZ2dlcklkPWgpO2lmKGdvb2dsZS5rRVhQSSlpZihnb29nbGUua0VYUEkuc3RhcnRzV2l0aCgiMCwiKSl7ZT1nb29nbGUua0VYUEkuc3BsaXQoIiwiKS5tYXAoTj0+TnVtYmVyKE4pKTtoPSIiO2c9MDtjPSEwO2ZvcihsZXQgTj0xO048ZS5sZW5ndGg7TisrKWlmKGVbTl0pZys9ZVtOXSxoKz1gJHtnfSxgO2Vsc2V7Yz0hMTticmVha31rLmV4cGk9Yz9oOmdvb2dsZS5rRVhQSX1lbHNlIGsuZXhwaT1nb29nbGUua0VYUEk7Yj8oay5xPV8uR2coInEiKSxrLnRpZXI9MSxmLmVuYWJsZVJhdGluZz0hMCk6ay5xdWVyeT1fLkdnKCJxIik7dmFyIG07dHlwZW9mKChtPXdpbmRvdy5nb29nbGUpPT1udWxsP3ZvaWQgMDptLnNzcykhPT0idW5kZWZpbmVkIiYmKGsuc2FmZV9zZWFyY2hfc3RhdGU9CndpbmRvdy5nb29nbGUuc3NzKTt2YXIgbjt0eXBlb2YoKG49d2luZG93Lmdvb2dsZSk9PW51bGw/dm9pZCAwOm4uc3NvKSE9PSJ1bmRlZmluZWQiJiYoay5pc19zYWZlX3NlYXJjaF9vdmVycmlkZGVuPVN0cmluZyh3aW5kb3cuZ29vZ2xlLnNzbykpO3ZhciBwO3R5cGVvZigocD13aW5kb3cuZ29vZ2xlKT09bnVsbD92b2lkIDA6cC5zc29yKSE9PSJ1bmRlZmluZWQiJiYoay5zYWZlX3NlYXJjaF9vdmVycmlkZV9yZWFzb249U3RyaW5nKHdpbmRvdy5nb29nbGUuc3NvcikpO3ZhciByO3R5cGVvZigocj13aW5kb3cuZ29vZ2xlKT09bnVsbD92b2lkIDA6ci5sZW4pIT09InVuZGVmaW5lZCImJihrLmxlbj1TdHJpbmcod2luZG93Lmdvb2dsZS5sZW4pKTt2YXIgeDt0eXBlb2YoKHg9d2luZG93Lmdvb2dsZSk9PW51bGw/dm9pZCAwOngubXJzKSE9PSJ1bmRlZmluZWQiJiYoay5tcnM9U3RyaW5nKHdpbmRvdy5nb29nbGUubXJzKSk7dmFyIHo7dHlwZW9mKCh6PXdpbmRvdy5nb29nbGUpPT1udWxsPwp2b2lkIDA6ei5kdnMpIT09InVuZGVmaW5lZCImJihrLmR2cz1TdHJpbmcod2luZG93Lmdvb2dsZS5kdnMpKTt2YXIgQjt0eXBlb2YoKEI9d2luZG93Lmdvb2dsZSk9PW51bGw/dm9pZCAwOkIuZG1kKSE9PSJ1bmRlZmluZWQiJiYoay5kbWQ9U3RyaW5nKHdpbmRvdy5nb29nbGUuZG1kKSk7dmFyIEg7dHlwZW9mKChIPXdpbmRvdy5nb29nbGUpPT1udWxsP3ZvaWQgMDpILmR2dCkhPT0idW5kZWZpbmVkIiYmKGsuZHZ0PVN0cmluZyh3aW5kb3cuZ29vZ2xlLmR2dCkpO3ZhciBKO3R5cGVvZigoSj13aW5kb3cuZ29vZ2xlKT09bnVsbD92b2lkIDA6Si5pc2NzYykhPT0idW5kZWZpbmVkIiYmKGsuaXNjc2M9U3RyaW5nKHdpbmRvdy5nb29nbGUuaXNjc2MpKTtPYmplY3Qua2V5cyhkKS5mb3JFYWNoKE49PntpZihOLnN0YXJ0c1dpdGgoInBzZCIpKXtsZXQgUT1OLmNoYXJBdCgzKS50b0xvd2VyQ2FzZSgpK04uc3Vic3RyKDQpO1EmJihrW1FdPWRbTl0pfX0pO18uZWtjKGYsayl9fTsKfWNhdGNoKGUpe18uX0R1bXBFeGNlcHRpb24oZSl9CnRyeXsKXy51KCJuUndXbmUiKTsKdmFyIG9sYz0hIShfLk9pWzIzXT4+MjUmMSk7dmFyIHJsYztfLnBsYz1fLk9pWzIzXT4+MjcmMT8iMTA4OTcwIjpvbGM/Ijc3MjQ3IjoiMTk2IjtfLnFsYz0hIShfLk9pWzIzXT4+MjYmMSk7cmxjPWNsYXNzIGV4dGVuZHMgXy5oc3trYShhKXt2YXIgYj1uZXcgXy5jbGMoXy5xbGMsXy56Z2IsXy5wbGMsIiIpO2E9YS5vYi5lbCgpO2Iuc2VuZChhKX19O3JsYy5wcm90b3R5cGUuJHdhJElldllBZD1mdW5jdGlvbigpe3JldHVybiB0aGlzLmthfTtfLmpzKF8uZGxjLHJsYyk7Cl8udigpOwp9Y2F0Y2goZSl7Xy5fRHVtcEV4Y2VwdGlvbihlKX0KdHJ5ewpfLnNsYz1fLmtjKCJmWE8weGUiLFtfLlBxLF8uWnFdKTsKfWNhdGNoKGUpe18uX0R1bXBFeGNlcHRpb24oZSl9CnRyeXsKXy51KCJmWE8weGUiKTsKdmFyIHRsYz1jbGFzcyBleHRlbmRzIF8uaHN7c3RhdGljIFFhKCl7cmV0dXJue3NlcnZpY2U6e2xvY2F0aW9uOl8ucHYsbmF2aWdhdGlvbjpfLml3fX19Y29uc3RydWN0b3IoYSl7c3VwZXIoKTt0aGlzLnJvb3RFbGVtZW50PXRoaXMuZ2V0Um9vdCgpLmVsKCk7dGhpcy5vYT1fLnJtKHRoaXMuZ2V0RGF0YSgic3B0IikpO3RoaXMuU2I9YS5zZXJ2aWNlLmxvY2F0aW9uO3RoaXMuV2I9YS5zZXJ2aWNlLm5hdmlnYXRpb259a2EoKXt2YXIgYT1kb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiWVVJRERiIik7dGhpcy5vYSYmYT8oXy5Fdih0aGlzLnJvb3RFbGVtZW50LHtUbToxfSksYT1uZXcgXy5IZShhLmdldEF0dHJpYnV0ZSgiZGF0YS1zcGwiKSksdGhpcy5XYi5rYShhLnRvU3RyaW5nKCkpKTooXy5Fdih0aGlzLnJvb3RFbGVtZW50KSxhPV8uV24obmV3IF8uSGUodGhpcy5TYi5YZSgpKSwiaGwiKXx8IiIsYT1fLk1lKF8uVG4oXy5UbihuZXcgXy5IZSgiL3ByZWZlcmVuY2VzIiksInByZXYiLAp0aGlzLlNiLlhlKCkpLCJobCIsYSksImFwcGVhcmFuY2UiKSx0aGlzLldiLmthKGEudG9TdHJpbmcoKSkpfX07dGxjLnByb3RvdHlwZS4kd2Ekb2s1Z0ZjPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMua2F9O18uanMoXy5zbGMsdGxjKTsKXy52KCk7Cn1jYXRjaChlKXtfLl9EdW1wRXhjZXB0aW9uKGUpfQp9KSh0aGlzLl9oZCk7Ci8vIEdvb2dsZSBJbmMuCg=="}},"time_used":12,"timings":{"blocked":-1,"dns":0,"connect":0,"send":0,"wait":11,"receive":1,"ssl":0},"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"fonts.gstatic.com/s/i/productlogos/googleg/v6/24px.svg","fqdn":"fonts.gstatic.com","domain":"gstatic.com","tld":"com"},"ip":{"addr":"142.250.178.67","port":443,"asn":15169,"as":"GOOGLE","country":"United States","country_code":"US"},"is_navigation_request":false,"resource_type":"img","requested_by":"https://www.google.com/","date":"2026-07-27T15:33:56.324Z","timestamp":1785166436324,"http_version":"HTTP/3","security_state":"secure","security_info":{"cipher_suite":"TLS_AES_128_GCM_SHA256","key_group_name":"mlkem768x25519","signature_name":"ECDSA-P256-SHA256","protocol":"TLSv1.3","cert":{"subject":{"commonName":"*.gstatic.com","organization":""},"issuer":{"commonName":"WE2","organization":"Google Trust Services"},"validity":{"start":"Mon, 29 Jun 2026 08:39:25 GMT","end":"Mon, 21 Sep 2026 08:39:24 GMT"},"fingerprint":{"sha1":"4E:F2:73:C6:27:16:58:35:FE:55:D5:30:6B:E8:6D:2B:DA:B0:E8:7B","sha256":"82:EF:6A:61:96:A5:23:D6:2C:2C:9D:77:67:04:D8:7B:3B:6A:50:DA:3C:6C:6A:5F:4E:2D:55:F3:FC:DA:0B:EE"}}},"request":{"raw":"GET /s/i/productlogos/googleg/v6/24px.svg HTTP/1.1\r\nHost: fonts.gstatic.com\r\nUser-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:134.0) Gecko/20100101 Firefox/134.0\r\nAccept: image/avif,image/webp,image/png,image/svg+xml,image/*;q=0.8,*/*;q=0.5\r\nAccept-Language: en-US,en;q=0.9\r\nAccept-Encoding: gzip, deflate, br, zstd\r\nReferer: https://www.google.com/\r\nSec-Fetch-Storage-Access: none\r\nSec-GPC: 1\r\nConnection: keep-alive\r\nSec-Fetch-Dest: image\r\nSec-Fetch-Mode: no-cors\r\nSec-Fetch-Site: cross-site\r\nPriority: u=5, i\r\nPragma: no-cache\r\nCache-Control: no-cache\r\n\r\n","headers":null,"cookies":null,"method":"GET"},"response":{"raw":"HTTP/3 200 \r\naccept-ranges: bytes\r\ncontent-encoding: gzip\r\naccess-control-allow-origin: *\r\ncontent-security-policy-report-only: require-trusted-types-for 'script'; report-uri https://csp.withgoogle.com/csp/apps-themes\r\ncross-origin-resource-policy: cross-origin\r\ncross-origin-opener-policy: same-origin; report-to=\"apps-themes\"\r\nreport-to: {\"group\":\"apps-themes\",\"max_age\":2592000,\"endpoints\":[{\"url\":\"https://csp.withgoogle.com/csp/report-to/apps-themes\"}]}\r\ncontent-length: 438\r\nx-content-type-options: nosniff\r\nserver: sffe\r\nx-xss-protection: 0\r\ndate: Thu, 23 Jul 2026 02:43:35 GMT\r\nexpires: Fri, 23 Jul 2027 02:43:35 GMT\r\ncache-control: public, max-age=31536000\r\nage: 391821\r\nlast-modified: Wed, 20 Apr 2022 17:17:30 GMT\r\ncontent-type: image/svg+xml\r\nvary: Accept-Encoding\r\nalt-svc: h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000\r\n\r\n","headers":null,"cookies":null,"status_code":"200","status_text":"","fingerprints":null,"data":{"size":742,"size_decoded":1275,"mime_type":"image/svg+xml","magic":"SVG Scalable Vector Graphics image","md5":"edd0e34f60d7ca4a2f4ece79cff21ae3","sha1":"2cc789a02534557380d92124e2f8b9483d198fb3","sha256":"ed9087d76cdc6d1c53698f6068f79872e77e87c8d012c0cfdad13b05b6ccb37c","sha512":"ce9d50913cad41d11c7b3963c90788301b63ee1fffff73108e9f8709ca0a9fcc6170853a65a820fbf020628b403813c9e3cd262389feb7d17a6c73c2f724394f","ssdeep":"","tlshash":"ea0110d75c2e60049a564390eebd1830403f60ea2e0e92ec64148732f348ff9d864e69","first_seen":"2023-04-06T15:34:19Z","last_seen":"2026-08-16T23:21:35.747311Z","times_seen":12866,"resource_available":false,"data":"PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGhlaWdodD0iMjQiIHZpZXdCb3g9IjAgMCAyNCAyNCIgd2lkdGg9IjI0Ij48cGF0aCBkPSJNMjIuNTYgMTIuMjVjMC0uNzgtLjA3LTEuNTMtLjItMi4yNUgxMnY0LjI2aDUuOTJjLS4yNiAxLjM3LTEuMDQgMi41My0yLjIxIDMuMzF2Mi43N2gzLjU3YzIuMDgtMS45MiAzLjI4LTQuNzQgMy4yOC04LjA5eiIgZmlsbD0iIzQyODVGNCIvPjxwYXRoIGQ9Ik0xMiAyM2MyLjk3IDAgNS40Ni0uOTggNy4yOC0yLjY2bC0zLjU3LTIuNzdjLS45OC42Ni0yLjIzIDEuMDYtMy43MSAxLjA2LTIuODYgMC01LjI5LTEuOTMtNi4xNi00LjUzSDIuMTh2Mi44NEMzLjk5IDIwLjUzIDcuNyAyMyAxMiAyM3oiIGZpbGw9IiMzNEE4NTMiLz48cGF0aCBkPSJNNS44NCAxNC4wOWMtLjIyLS42Ni0uMzUtMS4zNi0uMzUtMi4wOXMuMTMtMS40My4zNS0yLjA5VjcuMDdIMi4xOEMxLjQzIDguNTUgMSAxMC4yMiAxIDEycy40MyAzLjQ1IDEuMTggNC45M2wyLjg1LTIuMjIuODEtLjYyeiIgZmlsbD0iI0ZCQkMwNSIvPjxwYXRoIGQ9Ik0xMiA1LjM4YzEuNjIgMCAzLjA2LjU2IDQuMjEgMS42NGwzLjE1LTMuMTVDMTcuNDUgMi4wOSAxNC45NyAxIDEyIDEgNy43IDEgMy45OSAzLjQ3IDIuMTggNy4wN2wzLjY2IDIuODRjLjg3LTIuNiAzLjMtNC41MyA2LjE2LTQuNTN6IiBmaWxsPSIjRUE0MzM1Ii8+PHBhdGggZD0iTTEgMWgyMnYyMkgxeiIgZmlsbD0ibm9uZSIvPjwvc3ZnPg=="}},"time_used":47,"timings":{"blocked":-1,"dns":0,"connect":30,"send":0,"wait":17,"receive":0,"ssl":0},"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"csp.withgoogle.com/csp/gws/other-hp","fqdn":"csp.withgoogle.com","domain":"csp.withgoogle.com","tld":"withgoogle.com"},"ip":{"addr":"142.250.178.81","port":443,"asn":15169,"as":"GOOGLE","country":"United States","country_code":"US"},"is_navigation_request":false,"resource_type":"csp","requested_by":"https://www.google.com/","date":"2026-07-27T15:33:56.349Z","timestamp":1785166436349,"http_version":"HTTP/2","security_state":"","security_info":null,"request":{"raw":"POST /csp/gws/other-hp HTTP/1.1\r\nHost: csp.withgoogle.com\r\nUser-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:134.0) Gecko/20100101 Firefox/134.0\r\nAccept: */*\r\nAccept-Language: en-US,en;q=0.9\r\nAccept-Encoding: gzip, deflate, br, zstd\r\nContent-Type: application/csp-report\r\nContent-Length: 531\r\nSec-Fetch-Storage-Access: none\r\nOrigin: https://www.google.com\r\nSec-GPC: 1\r\nConnection: keep-alive\r\nSec-Fetch-Dest: report\r\nSec-Fetch-Mode: no-cors\r\nSec-Fetch-Site: cross-site\r\nPriority: u=4\r\nPragma: no-cache\r\nCache-Control: no-cache\r\n\r\n","headers":null,"cookies":null,"method":"POST","post_data":{"size":531,"data":"{\"csp-report\":{\"blocked-uri\":\"inline\",\"column-number\":1,\"disposition\":\"report\",\"document-uri\":\"https://www.google.com/\",\"effective-directive\":\"script-src-attr\",\"original-policy\":\"object-src 'none'; base-uri 'self'; script-src 'nonce-YOyHH3ltOmD9Boy_ZByAlQ' 'strict-dynamic' 'report-sample' 'unsafe-eval' 'unsafe-inline' https: http:; report-uri https://csp.withgoogle.com/csp/gws/other-hp\",\"referrer\":\"\",\"script-sample\":\"_rtf(this)\",\"source-file\":\"https://www.google.com/\",\"status-code\":200,\"violated-directive\":\"script-src-attr\"}}"}},"response":{"raw":"HTTP/2 204 \r\ncontent-type: text/html; charset=utf-8\r\nvary: Sec-Fetch-Dest, Sec-Fetch-Mode, Sec-Fetch-Site\r\ncache-control: no-cache, no-store, max-age=0, must-revalidate\r\npragma: no-cache\r\nexpires: Mon, 01 Jan 1990 00:00:00 GMT\r\ndate: Mon, 27 Jul 2026 15:33:56 GMT\r\ncross-origin-opener-policy: same-origin\r\ncross-origin-resource-policy: cross-origin\r\ncontent-security-policy: script-src 'nonce-yoCxUo9J-w7yIXcpHOws_g' 'unsafe-inline';object-src 'none';base-uri 'self';report-uri /csp/_/CspCollectorHttp/cspreport;worker-src 'self', script-src 'unsafe-inline' 'unsafe-eval' blob: data: 'self' https://apis.google.com https://ssl.gstatic.com https://www.google.com https://www.googletagmanager.com https://www.gstatic.com https://www.google-analytics.com;report-uri /csp/_/CspCollectorHttp/cspreport/allowlist, require-trusted-types-for 'script';report-uri /csp/_/CspCollectorHttp/cspreport\r\naccept-ch: Sec-CH-UA-Arch, Sec-CH-UA-Bitness, Sec-CH-UA-Full-Version, Sec-CH-UA-Full-Version-List, Sec-CH-UA-Model, Sec-CH-UA-WoW64, Sec-CH-UA-Form-Factors, Sec-CH-UA-Platform, Sec-CH-UA-Platform-Version\r\npermissions-policy: ch-ua-arch=*, ch-ua-bitness=*, ch-ua-full-version=*, ch-ua-full-version-list=*, ch-ua-model=*, ch-ua-wow64=*, ch-ua-form-factors=*, ch-ua-platform=*, ch-ua-platform-version=*\r\nreporting-endpoints: default=\"/csp/_/CspCollectorHttp/web-reports?context=eJzj4tDikmJw0JBiEOLhePJl7mU2gQ_T_x5lVNJLyi-ML05NLi3KLKnUTS4u0E3Oz8lJTS7JL9LNKCkpiDcyMDIzMDcy1DMwjC8wAABbwRfv\"\r\nserver: ESF\r\ncontent-length: 0\r\nx-xss-protection: 0\r\nx-frame-options: SAMEORIGIN\r\nx-content-type-options: nosniff\r\nalt-svc: h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000\r\nX-Firefox-Spdy: h2\r\n\r\n","headers":null,"cookies":null,"status_code":"204","status_text":"","fingerprints":null,"data":{"size":0,"size_decoded":0,"mime_type":"text/html; charset=utf-8","magic":"","md5":"d41d8cd98f00b204e9800998ecf8427e","sha1":"da39a3ee5e6b4b0d3255bfef95601890afd80709","sha256":"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855","sha512":"cf83e1357eefb8bdf1542850d66d8007d620e4050b5715dc83f4a921d36ce9ce47d0d13c5d85f2b0ff8318d2877eec2f63b931bd47417a81a538327af927da3e","ssdeep":"","tlshash":"","first_seen":"0001-01-01T00:00:00Z","last_seen":"2026-08-16T23:46:43.370624Z","times_seen":17926730,"resource_available":true,"data":null}},"time_used":0,"timings":{"blocked":0,"dns":0,"connect":0,"send":0,"wait":0,"receive":0,"ssl":0},"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"www.google.com/gen_204?s=webhp\u0026t=aft\u0026atyp=csi\u0026ei=Y3pnarTELeimwPAPo6StkA4\u0026rt=wsrt.750,hst.228,prt.579,afti.610,aft.610\u0026folr=_Y3pnarTELeimwPAPo6StkA4_10\u0026imn=9\u0026dtc=202\u0026stc=46\u0026ima=1\u0026imad=0\u0026imac=1\u0026wh=1024\u0026nt=navigate\u0026ts=82377\u0026nhp=h3\u0026ant=push\u0026opi=89978449","fqdn":"www.google.com","domain":"google.com","tld":"com"},"ip":{"addr":"142.251.157.119","port":443,"asn":15169,"as":"GOOGLE","country":"United States","country_code":"US"},"is_navigation_request":false,"resource_type":"beacon","requested_by":"https://www.google.com/","date":"2026-07-27T15:33:56.462Z","timestamp":1785166436462,"http_version":"HTTP/3","security_state":"secure","security_info":{"cipher_suite":"TLS_AES_128_GCM_SHA256","key_group_name":"mlkem768x25519","signature_name":"ECDSA-P256-SHA256","protocol":"TLSv1.3","cert":{"subject":{"commonName":"*.google.com","organization":""},"issuer":{"commonName":"WR2","organization":"Google Trust Services"},"validity":{"start":"Mon, 29 Jun 2026 08:37:25 GMT","end":"Mon, 21 Sep 2026 08:37:24 GMT"},"fingerprint":{"sha1":"D9:DA:81:30:78:3E:9C:6B:5F:9D:18:52:0E:BE:6D:52:2F:FB:33:E0","sha256":"EA:E2:2D:87:EC:9C:D6:51:9D:59:E4:13:35:3B:97:14:E3:DA:58:2D:1C:69:19:41:54:94:25:C3:94:17:F3:0C"}}},"request":{"raw":"POST /gen_204?s=webhp\u0026t=aft\u0026atyp=csi\u0026ei=Y3pnarTELeimwPAPo6StkA4\u0026rt=wsrt.750,hst.228,prt.579,afti.610,aft.610\u0026folr=_Y3pnarTELeimwPAPo6StkA4_10\u0026imn=9\u0026dtc=202\u0026stc=46\u0026ima=1\u0026imad=0\u0026imac=1\u0026wh=1024\u0026nt=navigate\u0026ts=82377\u0026nhp=h3\u0026ant=push\u0026opi=89978449 HTTP/1.1\r\nHost: www.google.com\r\nUser-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:134.0) Gecko/20100101 Firefox/134.0\r\nAccept: */*\r\nAccept-Language: en-US,en;q=0.9\r\nAccept-Encoding: gzip, deflate, br, zstd\r\nReferer: https://www.google.com/\r\nContent-Type: text/plain;charset=UTF-8\r\nContent-Length: 0\r\nOrigin: https://www.google.com\r\nSec-GPC: 1\r\nConnection: keep-alive\r\nCookie: AEC=AdJVEauUsWHpfGAsUyeilL8EI9I2Tr9FfEzOqXuEJToXYpKe1KUK4km-Sg; __Secure-ENID=35.SE=Uz4O9fexpqtcg27rsCzqB3loBSC8a70Mqp_d18c3cjeU9uMWe4FHcPW1svFlK9taJqOPsqN9ZTMvrbcif3fGSVkGFj_PZtB1iqcUHQQ3k4McoRQh3TFmXwFvuBZDiuJbZsEWkIiLh9oQZqCS02Kcsd8T8KoXlZsObsNcGy15dXCeCexC1uy7XgZprqFrMQQA8uTOFbrZoEzmrPkKmCFOh5B5Jnu68ljyS8KtzuKzT_-dPSCoq1OOlqfaBgM\r\nSec-Fetch-Dest: empty\r\nSec-Fetch-Mode: no-cors\r\nSec-Fetch-Site: same-origin\r\nPriority: u=6\r\n\r\n","headers":null,"cookies":null,"method":"POST"},"response":{"raw":"HTTP/3 204 \r\ncontent-type: text/html; charset=UTF-8\r\ncontent-security-policy: object-src 'none';base-uri 'self';script-src 'nonce-6Fn3USnhi5Q2u6fhELSFbA' 'strict-dynamic' 'report-sample' 'unsafe-eval' 'unsafe-inline' https: http:;report-uri https://csp.withgoogle.com/csp/gws/other\r\ncross-origin-opener-policy: same-origin-allow-popups; report-to=\"gws\"\r\nreport-to: {\"group\":\"gws\",\"max_age\":2592000,\"endpoints\":[{\"url\":\"https://csp.withgoogle.com/csp/report-to/gws/other\"}]}\r\ndate: Mon, 27 Jul 2026 15:33:56 GMT\r\nserver: gws\r\ncontent-length: 0\r\nx-xss-protection: 0\r\nx-frame-options: SAMEORIGIN\r\nalt-svc: h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000\r\n\r\n","headers":null,"cookies":null,"status_code":"204","status_text":"","fingerprints":[{"name":"Google Web Server","description":"","website":"https://en.wikipedia.org/wiki/Google_Web_Server","common_platform_enumeration":"cpe:2.3:a:google:web_server:*:*:*:*:*:*:*:*","icon":"Google.svg","categories":["Web servers"]}],"data":{"size":0,"size_decoded":653,"mime_type":"text/html; charset=UTF-8","magic":"","md5":"d41d8cd98f00b204e9800998ecf8427e","sha1":"da39a3ee5e6b4b0d3255bfef95601890afd80709","sha256":"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855","sha512":"cf83e1357eefb8bdf1542850d66d8007d620e4050b5715dc83f4a921d36ce9ce47d0d13c5d85f2b0ff8318d2877eec2f63b931bd47417a81a538327af927da3e","ssdeep":"","tlshash":"","first_seen":"0001-01-01T00:00:00Z","last_seen":"2026-08-16T23:46:43.370624Z","times_seen":17926730,"resource_available":true,"data":""}},"time_used":19,"timings":{"blocked":-1,"dns":0,"connect":0,"send":0,"wait":19,"receive":0,"ssl":0},"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"www.google.com/gen_204?atyp=csi\u0026ei=Y3pnarTELeimwPAPo6StkA4\u0026s=promo\u0026rt=hpbas.1073\u0026zx=1785166436898\u0026opi=89978449","fqdn":"www.google.com","domain":"google.com","tld":"com"},"ip":{"addr":"142.251.157.119","port":443,"asn":15169,"as":"GOOGLE","country":"United States","country_code":"US"},"is_navigation_request":false,"resource_type":"beacon","requested_by":"https://www.google.com/","date":"2026-07-27T15:33:56.900Z","timestamp":1785166436900,"http_version":"HTTP/3","security_state":"secure","security_info":{"cipher_suite":"TLS_AES_128_GCM_SHA256","key_group_name":"mlkem768x25519","signature_name":"ECDSA-P256-SHA256","protocol":"TLSv1.3","cert":{"subject":{"commonName":"*.google.com","organization":""},"issuer":{"commonName":"WR2","organization":"Google Trust Services"},"validity":{"start":"Mon, 29 Jun 2026 08:37:25 GMT","end":"Mon, 21 Sep 2026 08:37:24 GMT"},"fingerprint":{"sha1":"D9:DA:81:30:78:3E:9C:6B:5F:9D:18:52:0E:BE:6D:52:2F:FB:33:E0","sha256":"EA:E2:2D:87:EC:9C:D6:51:9D:59:E4:13:35:3B:97:14:E3:DA:58:2D:1C:69:19:41:54:94:25:C3:94:17:F3:0C"}}},"request":{"raw":"POST /gen_204?atyp=csi\u0026ei=Y3pnarTELeimwPAPo6StkA4\u0026s=promo\u0026rt=hpbas.1073\u0026zx=1785166436898\u0026opi=89978449 HTTP/1.1\r\nHost: www.google.com\r\nUser-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:134.0) Gecko/20100101 Firefox/134.0\r\nAccept: */*\r\nAccept-Language: en-US,en;q=0.9\r\nAccept-Encoding: gzip, deflate, br, zstd\r\nReferer: https://www.google.com/\r\nOrigin: https://www.google.com\r\nSec-GPC: 1\r\nConnection: keep-alive\r\nCookie: AEC=AdJVEauUsWHpfGAsUyeilL8EI9I2Tr9FfEzOqXuEJToXYpKe1KUK4km-Sg; __Secure-ENID=35.SE=Uz4O9fexpqtcg27rsCzqB3loBSC8a70Mqp_d18c3cjeU9uMWe4FHcPW1svFlK9taJqOPsqN9ZTMvrbcif3fGSVkGFj_PZtB1iqcUHQQ3k4McoRQh3TFmXwFvuBZDiuJbZsEWkIiLh9oQZqCS02Kcsd8T8KoXlZsObsNcGy15dXCeCexC1uy7XgZprqFrMQQA8uTOFbrZoEzmrPkKmCFOh5B5Jnu68ljyS8KtzuKzT_-dPSCoq1OOlqfaBgM\r\nSec-Fetch-Dest: empty\r\nSec-Fetch-Mode: no-cors\r\nSec-Fetch-Site: same-origin\r\nPriority: u=6\r\nContent-Length: 0\r\n\r\n","headers":null,"cookies":null,"method":"POST"},"response":{"raw":"HTTP/3 204 \r\ncontent-type: text/html; charset=UTF-8\r\ncontent-security-policy: object-src 'none';base-uri 'self';script-src 'nonce-Xu9TNHgZoGPmHRe3imGZSg' 'strict-dynamic' 'report-sample' 'unsafe-eval' 'unsafe-inline' https: http:;report-uri https://csp.withgoogle.com/csp/gws/other\r\ncross-origin-opener-policy: same-origin-allow-popups; report-to=\"gws\"\r\nreport-to: {\"group\":\"gws\",\"max_age\":2592000,\"endpoints\":[{\"url\":\"https://csp.withgoogle.com/csp/report-to/gws/other\"}]}\r\ndate: Mon, 27 Jul 2026 15:33:56 GMT\r\nserver: gws\r\ncontent-length: 0\r\nx-xss-protection: 0\r\nx-frame-options: SAMEORIGIN\r\nalt-svc: h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000\r\n\r\n","headers":null,"cookies":null,"status_code":"204","status_text":"","fingerprints":[{"name":"Google Web Server","description":"","website":"https://en.wikipedia.org/wiki/Google_Web_Server","common_platform_enumeration":"cpe:2.3:a:google:web_server:*:*:*:*:*:*:*:*","icon":"Google.svg","categories":["Web servers"]}],"data":{"size":0,"size_decoded":653,"mime_type":"text/html; charset=UTF-8","magic":"","md5":"d41d8cd98f00b204e9800998ecf8427e","sha1":"da39a3ee5e6b4b0d3255bfef95601890afd80709","sha256":"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855","sha512":"cf83e1357eefb8bdf1542850d66d8007d620e4050b5715dc83f4a921d36ce9ce47d0d13c5d85f2b0ff8318d2877eec2f63b931bd47417a81a538327af927da3e","ssdeep":"","tlshash":"","first_seen":"0001-01-01T00:00:00Z","last_seen":"2026-08-16T23:46:43.370624Z","times_seen":17926730,"resource_available":true,"data":""}},"time_used":21,"timings":{"blocked":0,"dns":0,"connect":0,"send":0,"wait":21,"receive":0,"ssl":0},"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"www.google.com/xjs/_/ss/k=xjs.hd.h9GHjaAphl0.L.F4.O/am=AAAEQAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAABAAAAIECAAAZAAAAAAAgAACAAAAAAAIAAAAAABAeAAAAMAAAAAAAAAAAAAAAAAAAQAAAIAAAAAAAAAAAEAAAAAAAAAIAiAAAAAAAAQABFAAAQAAAAAAAAAAACAAAAAAAAAAACBAAAAAAAAAAAABAAgAAAAAAAAAAYTAQAAAAABAGAAAAAAAAAAAAAAAAAAAAAABAJEACACAAAAAAAAgAAAAAAAQBhBAEAAEKIAAAAAAAAAKABQAAAACgAxAEAQAAAAAAAAAACAAEgRBAAAAAgAAAABAACAAIAAAAAGAEBQBAogYCAECgAwAAACADAAAAAAQAAAAAAAAAAAAAiAAAAAAAAACQAAADBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAE/d=0/br=1/rs=ACT90oGbAV3hgWIqz8I-ppdbYy_xG58I7g/m=syxo,sy2dq,symk,sypn?cb=121509378\u0026xjs=s4","fqdn":"www.google.com","domain":"google.com","tld":"com"},"ip":{"addr":"142.251.157.119","port":443,"asn":15169,"as":"GOOGLE","country":"United States","country_code":"US"},"is_navigation_request":false,"resource_type":"fetch","requested_by":"https://www.google.com/","date":"2026-07-27T15:33:57.185Z","timestamp":1785166437185,"http_version":"HTTP/3","security_state":"secure","security_info":{"cipher_suite":"TLS_AES_128_GCM_SHA256","key_group_name":"mlkem768x25519","signature_name":"ECDSA-P256-SHA256","protocol":"TLSv1.3","cert":{"subject":{"commonName":"*.google.com","organization":""},"issuer":{"commonName":"WR2","organization":"Google Trust Services"},"validity":{"start":"Mon, 29 Jun 2026 08:37:25 GMT","end":"Mon, 21 Sep 2026 08:37:24 GMT"},"fingerprint":{"sha1":"D9:DA:81:30:78:3E:9C:6B:5F:9D:18:52:0E:BE:6D:52:2F:FB:33:E0","sha256":"EA:E2:2D:87:EC:9C:D6:51:9D:59:E4:13:35:3B:97:14:E3:DA:58:2D:1C:69:19:41:54:94:25:C3:94:17:F3:0C"}}},"request":{"raw":"GET /xjs/_/ss/k=xjs.hd.h9GHjaAphl0.L.F4.O/am=AAAEQAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAABAAAAIECAAAZAAAAAAAgAACAAAAAAAIAAAAAABAeAAAAMAAAAAAAAAAAAAAAAAAAQAAAIAAAAAAAAAAAEAAAAAAAAAIAiAAAAAAAAQABFAAAQAAAAAAAAAAACAAAAAAAAAAACBAAAAAAAAAAAABAAgAAAAAAAAAAYTAQAAAAABAGAAAAAAAAAAAAAAAAAAAAAABAJEACACAAAAAAAAgAAAAAAAQBhBAEAAEKIAAAAAAAAAKABQAAAACgAxAEAQAAAAAAAAAACAAEgRBAAAAAgAAAABAACAAIAAAAAGAEBQBAogYCAECgAwAAACADAAAAAAQAAAAAAAAAAAAAiAAAAAAAAACQAAADBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAE/d=0/br=1/rs=ACT90oGbAV3hgWIqz8I-ppdbYy_xG58I7g/m=syxo,sy2dq,symk,sypn?cb=121509378\u0026xjs=s4 HTTP/1.1\r\nHost: www.google.com\r\nUser-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:134.0) Gecko/20100101 Firefox/134.0\r\nAccept: */*\r\nAccept-Language: en-US,en;q=0.9\r\nAccept-Encoding: gzip, deflate, br, zstd\r\nReferer: https://www.google.com/\r\nSec-GPC: 1\r\nConnection: keep-alive\r\nCookie: AEC=AdJVEauUsWHpfGAsUyeilL8EI9I2Tr9FfEzOqXuEJToXYpKe1KUK4km-Sg; __Secure-ENID=35.SE=Y_fs7GGaQFs5VFS1Srk0O5HomBGnVvSvp_o-rK3Am89F7jST0q2gQCa-M2gCxRk_RBjJksMh8YwWZDFw6RfcbCeBYtqlTvos6MvDyL0vbheeaZHlJlF3BR2G5kruhoHre_VO9emvjcRgOiD0eMH_wgHEfSKU-zQvglvx9fcoejE2yypfhg2tPUPVvlmUpN-CV5a7002cW6ZslC01vtYrwve2XCNHFFzwCEs876fojdvGEQOKEx9xE4f1ASBTSBOWDkt2Ow\r\nSec-Fetch-Dest: empty\r\nSec-Fetch-Mode: cors\r\nSec-Fetch-Site: same-origin\r\nPragma: no-cache\r\nCache-Control: no-cache\r\n\r\n","headers":null,"cookies":null,"method":"GET"},"response":{"raw":"HTTP/3 200 \r\naccept-ranges: bytes\r\ncontent-encoding: br\r\ncontent-security-policy-report-only: require-trusted-types-for 'script'; report-uri https://csp.withgoogle.com/csp/gws-team\r\ncross-origin-resource-policy: cross-origin\r\ncross-origin-opener-policy: same-origin; report-to=\"gws-team\"\r\nreport-to: {\"group\":\"gws-team\",\"max_age\":2592000,\"endpoints\":[{\"url\":\"https://csp.withgoogle.com/csp/report-to/gws-team\"}]}\r\ncontent-length: 2587\r\nx-content-type-options: nosniff\r\nserver: sffe\r\nx-xss-protection: 0\r\ndate: Fri, 24 Jul 2026 23:48:37 GMT\r\nexpires: Sat, 24 Jul 2027 23:48:37 GMT\r\ncache-control: public, immutable, max-age=31536000\r\nlast-modified: Fri, 24 Jul 2026 22:53:47 GMT\r\ncontent-type: text/css; charset=UTF-8\r\nvary: Accept-Encoding, Origin\r\nage: 229520\r\nalt-svc: h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000\r\n\r\n","headers":null,"cookies":null,"status_code":"200","status_text":"","fingerprints":null,"data":{"size":7732,"size_decoded":3408,"mime_type":"text/css; charset=UTF-8","magic":"ASCII text, with very long lines (7732), with no line terminators","md5":"7b2747d67557ab557f51b81c82775e53","sha1":"ff9331e630815f5fb53b18e8119f63f0f2e4c547","sha256":"da5b849ba9cd16b4ed940378f9f97c3a2f0e933930592057113710625565587c","sha512":"723f6764713358343bf0823630cd1d0d3bdbfbb6c159caa854842b27eabdc21704edbbb3cf1df29361c1a94b40f5060a8446be31903bb30b8412d1bd6730b222","ssdeep":"96:Te7Pdf9kSDWTH3qIqdMKRH9NlIqH1RBBBnUofxYBYURzB6B10Beqq/BU:Te7PdSj3oB9Nxn3nPsYSqAOU","tlshash":"e9f1a358c771e17b6f039231e6fe691d7020c416c97a23ac606744adb2c7bd612fa3ad","first_seen":"2026-07-27T15:34:29.32784Z","last_seen":"2026-07-27T15:34:29.32784Z","times_seen":1,"resource_available":false,"data":"LkRwZ21LLC5FbmI5cGUsLkZBb0VsZSwuTHdEVWRjLC5NVElhS2IsLlJsVENQZCwuUm9PVm1mLC5WM0V6biwuVm5vYjRiLC5ZS1VoZmIsLmFWc1pwZiwuYmJ4VEJiLC5jYU52ZmQsLmRJZnZRZCwuaVFNdHFlLC5rSlNCOCwubVl1b2FmLC50VXI0S2MsLnVObnZiLC53UE5mamJ7LS1ZaTROYjp2YXIoLS1tWFprcWMpOy0tcEVhMEJjOnZhcigtLWJiUXhBYik7LS1rbG9HMzp2YXIoLS1tWFprcWMpOy0tWWFJZU1iOnZhcigtLVhLTUR4Yyk7LS1QYThXbGI6dmFyKC0tTnNtMGNlKTstLWl6R3NxYjp2YXIoLS1Oc20wY2UpOy0tdG9kTU5jbDp2YXIoLS1FcEZOVyk7LS1wOUo5Yzp2YXIoLS1Oc20wY2UpfTpyb290ey0tS0laUG5lOiNhM2M5ZmY7LS14UHBpTTojMDAxZDM1Oy0tRWhoNG1mOnZhcigtLU5zbTBjZSl9OnJvb3R7LS1wRWEwQmM6IzQ3NDc0NzstLVBhOFdsYjojMzM2ZWYzOy0tWWFJZU1iOiNmN2Y4Zjk7LS1ZaTROYjojZDJkMmQyOy0tbmdQWFRiOnZhcigtLXJySkpVYyk7LS1od0Vxb2Q6dmFyKC0taklOdTZjKTstLWtsb0czOiNkMmQyZDI7LS1sdjZ5VTojMGI1N2QwOy0tV213YWQ6IzBiNTdkMDstLXZXcTFpZjp2YXIoLS1qSU51NmMpOy0tSWpjMnRmOiNlYmYxZmY7LS1WZUx5TGM6IzAwMWQzNTstLWZ1dmtzYzojMGI1N2QwOy0tZ0pqSms6IzBiNTdkMDstLUxNRkhVZDp2YXIoLS1qSU51NmMpOy0tWmlhNm5mOnZhcigtLUJSTHdFKTstLXkwMW91OiMwMDFkMzU7LS1wOUo5YzojMGI1N2QwOy0tTW9hSHNlOiMwYjU3ZDA7LS1DUk1OWmQ6dmFyKC0taklOdTZjKTstLWl6R3NxYjojMzM2ZWYzOy0tdG9kTU5jOiNmZmZmZmY7LS1Ob2FRVzojMDkwZjI4Oy0tcWRIWkY6cmdiYSgwLDAsMCwuNik7LS1WOXlzcWY6dmFyKC0tRW9LT2JlKTstLVBCeE9LZTojMWYxZjFmOy0tTVYyc0c6I2YxZjNmNDstLWJjeGQzYjp2YXIoLS1ZTE5OSGMpOy0tRDlhTmk6cmdiYSgzMSwzMSwzMSwwLjA4KX0uRXBQWUxke2Rpc3BsYXk6YmxvY2s7cG9zaXRpb246cmVsYXRpdmV9LllwY0RuZntwYWRkaW5nOjAgMTZweDt2ZXJ0aWNhbC1hbGlnbjptaWRkbGV9Lld0VjVuZCAuWXBjRG5me3BhZGRpbmctbGVmdDoyOHB4fS5FcFBZTGQ6aG92ZXJ7Y3Vyc29yOnBvaW50ZXJ9LkNCOG5EZTpob3ZlciwuRXBQWUxke2N1cnNvcjpkZWZhdWx0fS5FcFBZTGRbZGlzYWJsZWRdLC5MR2lsdWN7cG9pbnRlci1ldmVudHM6bm9uZTtjdXJzb3I6ZGVmYXVsdH1AbWVkaWEgKGZvcmNlZC1jb2xvcnM6YWN0aXZlKXsuRXBQWUxkW2Rpc2FibGVkXXtjb2xvcjpHcmF5VGV4dH19LkxHaWx1Y3tib3JkZXItdG9wOjFweCBzb2xpZDtoZWlnaHQ6MDttYXJnaW46NXB4IDB9LlgxcExDey0tREVlU3RmOiNmMGYyZjU7LS1UU1daSWI6I2U5ZWJmMDstLUJSTHdFOiNlMWUzZTg7LS14aFVHd2M6I2ZmZmZmZjstLVhLTUR4YzojZjBmMmY1Oy0tYVluMlM6I2U5ZWJmMDstLUxtNTcwYjojZTFlM2U4Oy0tQ3dRN0o6I2ZmZjstLWpJTnU2YzojMGEwYTBhOy0tdUx6MzdjOiM1NjU5NWU7LS1ZTE5OSGM6IzBhMGEwYTstLUlYb3hVZTojNTY1OTVlOy0tYmJReEFiOiMwYTBhMGE7LS1UTVlTOTojMGEwYTBhOy0tbVhaa3FjOiNkY2RmZTU7LS1nUzVqWGI6I2RjZGZlNTstLWFtblB3ZTojNTY1OTVlOy0tTnNtMGNlOiMwYjUwZDA7LS1FcEZOVzojZmZmOy0tandGQzJlOiNkM2UzZmQ7LS1YUENraGI6IzA0NmUwMDstLWJhSmtRYzojYzAxNTFkfS5YMXBMQ3stLU5zbTBjZTojMzM2ZWYzfS5YMXBMQ3stLVlpNE5iOiNkMmQyZDI7LS1QYThXbGI6dmFyKC0tTnNtMGNlKTstLW5nUFhUYjojMGI1N2QwOy0tSWpjMnRmOiNlNWVkZmY7LS1WZUx5TGM6IzAwMWQzNTstLWJjeGQzYjojMWYxZjFmfS5YMXBMQ3stLW5rbVFPZTpHb29nbGUgU2FucyxBcmlhbCxzYW5zLXNlcmlmOy0tYTlYMEpjOjI0cHg7LS16M0JGSWU6MTZweDstLVhXbGl3Yzo0MDA7LS1MSTRCbzpHb29nbGUgU2FucyxBcmlhbCxzYW5zLXNlcmlmOy0tWFd2MWlmOjIycHg7LS1NaHM3ZGU6MTRweDstLW9md1VCYzo0MDA7LS1ZZmlLZjpHb29nbGUgU2FucyxBcmlhbCxzYW5zLXNlcmlmOy0tcHVuWmxjOjE2cHg7LS1nT3M2QmY6MTJweDstLU16S0JwZDo0MDA7LS1JVDd5M2M6R29vZ2xlIFNhbnMsQXJpYWwsc2Fucy1zZXJpZjstLWhQRE1GZjozMnB4Oy0tSWE3MFhkOjI0cHg7LS1WeWk4eWM6NTAwOy0tQW9oOVhlOkdvb2dsZSBTYW5zLEFyaWFsLHNhbnMtc2VyaWY7LS1xWUdYdzoyOHB4Oy0tcXBkRnA6MjBweDstLUpUNElQYzo2MDA7LS1yVGswRTpHb29nbGUgU2FucyxBcmlhbCxzYW5zLXNlcmlmOy0tT2szaXJmOjI0cHg7LS11QmRnVGU6MTZweDstLVpmOVhuZDo3MDA7LS1xUjhYMDpHb29nbGUgU2FucyxBcmlhbCxzYW5zLXNlcmlmOy0tQ2JkbUU6MjBweDstLWhibW5qZToxNHB4Oy0tT3ljanQ6NTAwOy0tcUJ3eXFiOkdvb2dsZSBTYW5zLEFyaWFsLHNhbnMtc2VyaWY7LS1uVU9xRWM6MTZweDstLWNNVHZqZjoxMnB4Oy0tQ1VTMTVlOjUwMDstLUVvdThZYzpHb29nbGUgU2FucyxBcmlhbCxzYW5zLXNlcmlmOy0tcVdaWUVjOjI2cHg7LS1HaVRvSmY6MjBweDstLXAyTHF4ZTo0MDA7LS16dFRxUGU6R29vZ2xlIFNhbnMsQXJpYWwsc2Fucy1zZXJpZjstLVlvYTZxZDo1MDA7LS1sSTFUcmM6R29vZ2xlIFNhbnMsQXJpYWwsc2Fucy1zZXJpZjstLUhJeUVLYzoxNnB4Oy0tWk5nODg6MTJweDstLXFqVlUzZDo1MDB9LlgxcExDey0tT3ljanQ6NDAwfS5YMXBMQ3stLUM3NHgyZToxOHB4Oy0tZ3l1NUw6MTRweH0uWDFwTEN7LS1DNzR4MmU6MThweH0uWDFwTEN7bGVmdDowO3RvcDowO3dpZHRoOjcycHg7aGVpZ2h0OjEwMHZoO3Bvc2l0aW9uOmZpeGVkO3RyYW5zZm9ybTp0cmFuc2xhdGVYKC0yNjBweCk7dmlzaWJpbGl0eTpoaWRkZW47dHJhbnNpdGlvbjp0cmFuc2Zvcm0gLjNzIGVhc2UtaW4tb3V0LHZpc2liaWxpdHkgMHMgLjNzO3otaW5kZXg6MTAwMH0uTzF3VG1me3RyYW5zZm9ybTp0cmFuc2xhdGVYKDApO3Zpc2liaWxpdHk6dmlzaWJsZTt0cmFuc2l0aW9uOnRyYW5zZm9ybSAuM3MgZWFzZS1pbi1vdXQsdmlzaWJpbGl0eSAwcyAwc30uSHhYQ1hje3RyYW5zaXRpb246bWFyZ2luIC40NXMgY3ViaWMtYmV6aWVyKC4yLDAsMCwxKX0uaVpLYlBley0tREVlU3RmOiNmMGYyZjU7LS1UU1daSWI6I2U5ZWJmMDstLUJSTHdFOiNlMWUzZTg7LS14aFVHd2M6I2ZmZmZmZjstLVhLTUR4YzojZjBmMmY1Oy0tYVluMlM6I2U5ZWJmMDstLUxtNTcwYjojZTFlM2U4Oy0tQ3dRN0o6I2ZmZjstLWpJTnU2YzojMGEwYTBhOy0tdUx6MzdjOiM1NjU5NWU7LS1ZTE5OSGM6IzBhMGEwYTstLUlYb3hVZTojNTY1OTVlOy0tYmJReEFiOiMwYTBhMGE7LS1UTVlTOTojMGEwYTBhOy0tbVhaa3FjOiNkY2RmZTU7LS1nUzVqWGI6I2RjZGZlNTstLWFtblB3ZTojNTY1OTVlOy0tTnNtMGNlOiMwYjUwZDA7LS1FcEZOVzojZmZmOy0tandGQzJlOiNkM2UzZmQ7LS1YUENraGI6IzA0NmUwMDstLWJhSmtRYzojYzAxNTFkfS5pWktiUGV7LS1Oc20wY2U6IzMzNmVmM30uaVpLYlBley0tWWk0TmI6I2QyZDJkMjstLVBhOFdsYjp2YXIoLS1Oc20wY2UpOy0tbmdQWFRiOiMwYjU3ZDA7LS1JamMydGY6I2U1ZWRmZjstLVZlTHlMYzojMDAxZDM1Oy0tYmN4ZDNiOiMxZjFmMWZ9LmlaS2JQZXstLW5rbVFPZTpHb29nbGUgU2FucyxBcmlhbCxzYW5zLXNlcmlmOy0tYTlYMEpjOjI0cHg7LS16M0JGSWU6MTZweDstLVhXbGl3Yzo0MDA7LS1MSTRCbzpHb29nbGUgU2FucyxBcmlhbCxzYW5zLXNlcmlmOy0tWFd2MWlmOjIycHg7LS1NaHM3ZGU6MTRweDstLW9md1VCYzo0MDA7LS1ZZmlLZjpHb29nbGUgU2FucyxBcmlhbCxzYW5zLXNlcmlmOy0tcHVuWmxjOjE2cHg7LS1nT3M2QmY6MTJweDstLU16S0JwZDo0MDA7LS1JVDd5M2M6R29vZ2xlIFNhbnMsQXJpYWwsc2Fucy1zZXJpZjstLWhQRE1GZjozMnB4Oy0tSWE3MFhkOjI0cHg7LS1WeWk4eWM6NTAwOy0tQW9oOVhlOkdvb2dsZSBTYW5zLEFyaWFsLHNhbnMtc2VyaWY7LS1xWUdYdzoyOHB4Oy0tcXBkRnA6MjBweDstLUpUNElQYzo2MDA7LS1yVGswRTpHb29nbGUgU2FucyxBcmlhbCxzYW5zLXNlcmlmOy0tT2szaXJmOjI0cHg7LS11QmRnVGU6MTZweDstLVpmOVhuZDo3MDA7LS1xUjhYMDpHb29nbGUgU2FucyxBcmlhbCxzYW5zLXNlcmlmOy0tQ2JkbUU6MjBweDstLWhibW5qZToxNHB4Oy0tT3ljanQ6NTAwOy0tcUJ3eXFiOkdvb2dsZSBTYW5zLEFyaWFsLHNhbnMtc2VyaWY7LS1uVU9xRWM6MTZweDstLWNNVHZqZjoxMnB4Oy0tQ1VTMTVlOjUwMDstLUVvdThZYzpHb29nbGUgU2FucyxBcmlhbCxzYW5zLXNlcmlmOy0tcVdaWUVjOjI2cHg7LS1HaVRvSmY6MjBweDstLXAyTHF4ZTo0MDA7LS16dFRxUGU6R29vZ2xlIFNhbnMsQXJpYWwsc2Fucy1zZXJpZjstLUM3NHgyZToxOHB4Oy0tZ3l1NUw6MTRweDstLVlvYTZxZDo1MDA7LS1sSTFUcmM6R29vZ2xlIFNhbnMsQXJpYWwsc2Fucy1zZXJpZjstLUhJeUVLYzoxNnB4Oy0tWk5nODg6MTJweDstLXFqVlUzZDo1MDB9LmlaS2JQZXstLU95Y2p0OjQwMH0uZjFZTnV7LW1vei1ib3gtYWxpZ246Y2VudGVyO2FsaWduLWl0ZW1zOmNlbnRlcjtwb3NpdGlvbjpyZWxhdGl2ZTtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLVhLTUR4Yyk7ZGlzcGxheTotbW96LWJveDtkaXNwbGF5OmZsZXg7b3ZlcmZsb3c6aGlkZGVuO2JvcmRlci1yYWRpdXM6OHB4fS56cW9vV2J7ZGlzcGxheTotbW96LWJveDtkaXNwbGF5OmZsZXg7LW1vei1ib3gtYWxpZ246Y2VudGVyO2FsaWduLWl0ZW1zOmNlbnRlcjtwb3NpdGlvbjpyZWxhdGl2ZX0ua1d2NVRle29iamVjdC1maXQ6Y292ZXI7aGVpZ2h0OmluaGVyaXQ7d2lkdGg6aW5oZXJpdH0uTUlUTFUgLmtXdjVUZXtkaXNwbGF5Om5vbmV9LllObENqZntwb3NpdGlvbjphYnNvbHV0ZTt0b3A6MDtsZWZ0OjA7aGVpZ2h0OjEwMCU7d2lkdGg6MTAwJTtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMCwwLDAsMC4wMyl9Lk1JVExVIC5ZTmxDamYsLmhsa0t4ZCAuWU5sQ2pme2Rpc3BsYXk6bm9uZX0uckJRbUlle2N1cnNvcjpwb2ludGVyO2JhY2tncm91bmQ6dHJhbnNwYXJlbnQ7ZmxleC1zaHJpbms6MDtvdmVyZmxvdzpoaWRkZW47cG9zaXRpb246cmVsYXRpdmU7aGVpZ2h0OjUycHg7d2lkdGg6NTJweH0uaGxrS3hkIC5yQlFtSWV7aGVpZ2h0OjM2cHg7d2lkdGg6MzZweDtib3JkZXItcmFkaXVzOjRweH0uaGxrS3hkIC5iUE5LN2UsLmhsa0t4ZCAua1d2NVRle2hlaWdodDoyNHB4O3dpZHRoOjI0cHg7bWFyZ2luOjZweH0uYlBOSzdle2NvbG9yOnZhcigtLWFtblB3ZSl9Lmhsa0t4ZCAueFAwNldke2NvbG9yOiNiMzI2MWV9LkxlUVpsYntkaXNwbGF5Om5vbmU7LW1vei1ib3gtb3JpZW50OnZlcnRpY2FsOy1tb3otYm94LWRpcmVjdGlvbjpub3JtYWw7ZmxleC1kaXJlY3Rpb246Y29sdW1uO21heC13aWR0aDoxMTJweDttaW4td2lkdGg6NjJweH0uU3pUYkplLC5sU3k0c2Z7ZGlzcGxheTpibG9jaztvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpczt3aGl0ZS1zcGFjZTpub3dyYXA7dGV4dC1hbGlnbjpzdGFydH0udDlHU0pje2Rpc3BsYXk6LW1vei1ib3g7ZGlzcGxheTpmbGV4fS5KU3hiYntmbGV4LXNocmluazoxO21pbi1pbmxpbmUtc2l6ZTowO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzfS5RVXNDMGN7ZmxleC1zaHJpbms6MH0ubFN5NHNme2NvbG9yOnZhcigtLVlMTk5IYyk7Zm9udC1mYW1pbHk6dmFyKC0tcVI4WDApO2ZvbnQtc2l6ZTp2YXIoLS1oYm1uamUpO2xpbmUtaGVpZ2h0OnZhcigtLUNiZG1FKTtmb250LXdlaWdodDp2YXIoLS1PeWNqdCl9LlN6VGJKZXtjb2xvcjp2YXIoLS1JWG94VWUpO2ZvbnQtZmFtaWx5OnZhcigtLVlmaUtmKTtmb250LXNpemU6dmFyKC0tZ09zNkJmKTtsaW5lLWhlaWdodDp2YXIoLS1wdW5abGMpO2ZvbnQtd2VpZ2h0OnZhcigtLU16S0JwZCk7bGV0dGVyLXNwYWNpbmc6MH0uTUlUTFUgLmxTeTRzZntjb2xvcjp2YXIoLS1JWG94VWUpfS5YVTJYa2N7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1YS01EeGMpO2NvbG9yOnZhcigtLXJySkpVYyk7ZGlzcGxheTpub25lO3Bvc2l0aW9uOmFic29sdXRlO3RvcDowO2hlaWdodDppbmhlcml0O3dpZHRoOmluaGVyaXQ7LW1vei1ib3gtcGFjazpjZW50ZXI7anVzdGlmeS1jb250ZW50OmNlbnRlcn0uTUlUTFUgLlhVMlhrY3tkaXNwbGF5Oi1tb3otYm94O2Rpc3BsYXk6ZmxleH0ubVpLRWdke3Bvc2l0aW9uOmFic29sdXRlO2JvcmRlcjowO3BhZGRpbmc6MDtjdXJzb3I6cG9pbnRlcjtkaXNwbGF5Om5vbmU7bGVmdDowO2hlaWdodDppbmhlcml0O3dpZHRoOmluaGVyaXR9Lm1aS0VnZCAuVDJXZXNme2Rpc3BsYXk6LW1vei1ib3g7ZGlzcGxheTpmbGV4O2JhY2tncm91bmQtY29sb3I6dmFyKC0tZ1ZVS2NkKTtjb2xvcjp2YXIoLS1Fb0tPYmUpO2hlaWdodDppbmhlcml0O3dpZHRoOmluaGVyaXQ7LW1vei1ib3gtcGFjazpjZW50ZXI7anVzdGlmeS1jb250ZW50OmNlbnRlcjstbW96LWJveC1hbGlnbjpjZW50ZXI7YWxpZ24taXRlbXM6Y2VudGVyfS5tWktFZ2QgLlQyV2VzZiBzdmd7aGVpZ2h0OjI0cHg7d2lkdGg6MjRweDttYXJnaW46MnB4fS5mMVlOdTpmb2N1cy13aXRoaW4gLm1aS0VnZCwuZjFZTnU6aG92ZXIgLm1aS0VnZHtkaXNwbGF5OmluaXRpYWx9LmYxWU51IC5RTkVhZGN7cG9zaXRpb246YWJzb2x1dGU7d2lkdGg6MXB4O2hlaWdodDoxcHg7b3ZlcmZsb3c6aGlkZGVuO2NsaXA6cmVjdCgwLDAsMCwwKTt3aGl0ZS1zcGFjZTpub3dyYXB9LllZVUFNY3t3aWR0aDoyOHB4O2hlaWdodDoyOHB4fS5lVmp3UXtzdHJva2UtZGFzaGFycmF5OjU4Ljk7c3Ryb2tlLWRhc2hvZmZzZXQ6NTguOX0uWVlVQU1jLC5lVmp3UXt0cmFuc2Zvcm0tb3JpZ2luOjUwJSA1MCV9QGtleWZyYW1lcyByb3RhdGV7MCV7dHJhbnNmb3JtOnJvdGF0ZSgwZGVnKX10b3t0cmFuc2Zvcm06cm90YXRlKDF0dXJuKX19LllZVUFNY3thbmltYXRpb24tZHVyYXRpb246MTU2OC42M21zO2FuaW1hdGlvbi1pdGVyYXRpb24tY291bnQ6aW5maW5pdGU7YW5pbWF0aW9uLW5hbWU6cm90YXRlO2FuaW1hdGlvbi10aW1pbmctZnVuY3Rpb246bGluZWFyfUBrZXlmcmFtZXMgZmlsbHVuZmlsbHswJXtzdHJva2UtZGFzaG9mZnNldDo1OC44fTUwJXtzdHJva2UtZGFzaG9mZnNldDowfXRve3N0cm9rZS1kYXNob2Zmc2V0Oi01OC40fX1Aa2V5ZnJhbWVzIHJvdHswJXt0cmFuc2Zvcm06cm90YXRlKDBkZWcpfXRve3RyYW5zZm9ybTpyb3RhdGUoLTF0dXJuKX19LmVWandRe2FuaW1hdGlvbi1kdXJhdGlvbjoxMzMzbXMsNTMzMm1zO2FuaW1hdGlvbi1maWxsLW1vZGU6Zm9yd2FyZHM7YW5pbWF0aW9uLWl0ZXJhdGlvbi1jb3VudDppbmZpbml0ZSxpbmZpbml0ZTthbmltYXRpb24tbmFtZTpmaWxsdW5maWxsLHJvdDthbmltYXRpb24tcGxheS1zdGF0ZTpydW5uaW5nLHJ1bm5pbmc7YW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjpjdWJpYy1iZXppZXIoLjQsMCwuMiwxKSxzdGVwcyg0KX0uenFvb1die21hcmdpbjowIDRweH0uenFvb1diOmZpcnN0LWNoaWxke21hcmdpbi1sZWZ0OjE4cHh9Lnpxb29XYjpsYXN0LWNoaWxke21hcmdpbi1yaWdodDoxOHB4fS5obGtLeGQgLnJCUW1JZXtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLXhoVUd3Yyl9LmNMS2NOZHtwYWRkaW5nOjhweDtiYWNrZ3JvdW5kLWNsaXA6dW5zZXR9LmNMS2NOZCAuTGVRWmxie2Rpc3BsYXk6LW1vei1ib3g7ZGlzcGxheTpmbGV4O21hcmdpbjowIDhweH0uY0xLY05kIC5UMldlc2Z7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS14aFVHd2MpO2NvbG9yOnZhcigtLVlMTk5IYyl9c2VudGluZWx7fQ=="}},"time_used":15,"timings":{"blocked":-1,"dns":0,"connect":0,"send":0,"wait":15,"receive":0,"ssl":0},"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"play.google.com/log?format=json\u0026hasfast=true","fqdn":"play.google.com","domain":"google.com","tld":"com"},"ip":{"addr":"142.250.178.78","port":443,"asn":15169,"as":"GOOGLE","country":"United States","country_code":"US"},"is_navigation_request":false,"resource_type":"xhr","requested_by":"https://www.google.com/","date":"2026-07-27T15:33:57.502Z","timestamp":1785166437502,"http_version":"HTTP/3","security_state":"secure","security_info":{"cipher_suite":"TLS_AES_128_GCM_SHA256","key_group_name":"mlkem768x25519","signature_name":"ECDSA-P256-SHA256","protocol":"TLSv1.3","cert":{"subject":{"commonName":"*.google.com","organization":""},"issuer":{"commonName":"WE2","organization":"Google Trust Services"},"validity":{"start":"Mon, 29 Jun 2026 08:37:35 GMT","end":"Mon, 21 Sep 2026 08:37:34 GMT"},"fingerprint":{"sha1":"2F:20:3B:91:88:65:20:CD:06:9D:0C:58:4D:17:6F:FC:9D:EC:41:83","sha256":"0C:7B:D3:23:E9:5B:D6:6B:F2:5C:71:91:4D:41:CE:E6:D7:1F:A2:F2:63:BA:25:70:1D:00:F3:C0:72:21:51:6D"}}},"request":{"raw":"POST /log?format=json\u0026hasfast=true HTTP/1.1\r\nHost: play.google.com\r\nUser-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:134.0) Gecko/20100101 Firefox/134.0\r\nAccept: */*\r\nAccept-Language: en-US,en;q=0.9\r\nAccept-Encoding: gzip, deflate, br, zstd\r\nReferer: https://www.google.com/\r\nContent-Encoding: gzip\r\nContent-Type: application/binary\r\nContent-Length: 281\r\nOrigin: https://www.google.com\r\nSec-GPC: 1\r\nConnection: keep-alive\r\nCookie: AEC=AdJVEauUsWHpfGAsUyeilL8EI9I2Tr9FfEzOqXuEJToXYpKe1KUK4km-Sg; __Secure-ENID=35.SE=Y_fs7GGaQFs5VFS1Srk0O5HomBGnVvSvp_o-rK3Am89F7jST0q2gQCa-M2gCxRk_RBjJksMh8YwWZDFw6RfcbCeBYtqlTvos6MvDyL0vbheeaZHlJlF3BR2G5kruhoHre_VO9emvjcRgOiD0eMH_wgHEfSKU-zQvglvx9fcoejE2yypfhg2tPUPVvlmUpN-CV5a7002cW6ZslC01vtYrwve2XCNHFFzwCEs876fojdvGEQOKEx9xE4f1ASBTSBOWDkt2Ow\r\nSec-Fetch-Dest: empty\r\nSec-Fetch-Mode: cors\r\nSec-Fetch-Site: same-site\r\nPragma: no-cache\r\nCache-Control: no-cache\r\n\r\n","headers":null,"cookies":null,"method":"POST","post_data":{"size":421,"data":"\u001f\b\u0000\u0000\u0000\u0000\u0000\u0000\u0003ÍTMkÃ0\fý/\u003eÛC¶ä\u000f\u001d\u000b;¶ì6\u001c\u001fÜí\u0012ÒíïO¬¥%%\u001dë \u0018d[¬'ëY9[Ý\u000f]w±ÈSJÕoÕ´µÕPJÑ\u0018Qçlcò6\u0004Â@fâ(q% \u0000íñ`Û(ö\u0016=wÐ(Ù?á[_ßïýÃÎl\u003e×õ°úÀçE3ÂÒ\bÀoåêQfÐµ%ûSq0Û¾\u001a@¬B2¡MÑ\u0010¶lÒÆU\u0003Õ¶±Z|q¡#\\Qü² ?\u0004Qd§½$Ø\rÝc\\æòQýÕ\"c\u0004`·µÁ\u0011Kõ+,E\u000bªOÁæðÏÔHÃ-RÃ]ýÆ[gæqdG$æ¿§÷\u0026\u001bÙÅÔ9\u000f\u003e°\u0017x\\Ê\u0017^_YÄF\u0005\u0000\u0000"}},"response":{"raw":"HTTP/3 200 \r\naccess-control-allow-origin: https://www.google.com\r\ncross-origin-resource-policy: cross-origin\r\naccess-control-allow-credentials: true\r\naccess-control-allow-headers: X-Playlog-Web\r\ncontent-type: text/plain; charset=UTF-8\r\ncontent-encoding: gzip\r\ndate: Mon, 27 Jul 2026 15:33:57 GMT\r\nserver: Playlog\r\ncontent-length: 131\r\nx-xss-protection: 0\r\nx-frame-options: SAMEORIGIN\r\nalt-svc: h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000\r\n\r\n","headers":null,"cookies":null,"status_code":"200","status_text":"","fingerprints":null,"data":{"size":131,"size_decoded":575,"mime_type":"text/plain; charset=UTF-8","magic":"JSON text data","md5":"ca0b7e866005f6774d284b9f438ebfd2","sha1":"53644f5ee3640189bdb223473ba6a2d46606c556","sha256":"502e9680cfa78fa8be779cbf4f1947c8eaa3d43bf8c7464800ec772b2ddea358","sha512":"939c4526c623db033ad40bfdc6c8848a1dcd0ca797f17fbbd89fbec1b49dededc16e89084b3759e62fa0ffc8fe896980b10a1ff8daee22736a70b08f1ee13e2f","ssdeep":"","tlshash":"58c08c50330469e1080e82c8c0026858228c903b46708cf10bbd68125d3234a1004854","first_seen":"2023-04-05T03:14:56Z","last_seen":"2026-08-16T23:37:24.936646Z","times_seen":588730,"resource_available":false,"data":"WyItMSIsbnVsbCxbW1siQU5EUk9JRF9CQUNLVVAiLDBdLFsiQkFUVEVSWV9TVEFUUyIsMF0sWyJTTUFSVF9TRVRVUCIsMF0sWyJUUk9OIiwwXV0sLTMzMzQ3Mzc1OTQwMjQ5NzEyMjVdLFtdLHsiMTc1MjM3Mzc1IjpbMTAwMDBdfV0="}},"time_used":83,"timings":{"blocked":0,"dns":1,"connect":16,"send":0,"wait":36,"receive":0,"ssl":29},"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"www.gstatic.com/og/_/js/k=og.asy.en_US.M_7ghikQAkA.2019.O/rt=j/m=_ac,_awd,ada,lldp,qads,abld/exm=/d=1/ed=1/rs=AA2YrTtJT2GPlx0nJ84RzsS-D9uX1TzAyQ","fqdn":"www.gstatic.com","domain":"gstatic.com","tld":"com"},"ip":{"addr":"142.250.178.67","port":443,"asn":15169,"as":"GOOGLE","country":"United States","country_code":"US"},"is_navigation_request":false,"resource_type":"script","requested_by":"https://www.google.com/","date":"2026-07-27T15:33:56.308Z","timestamp":1785166436308,"http_version":"HTTP/3","security_state":"secure","security_info":{"cipher_suite":"TLS_AES_128_GCM_SHA256","key_group_name":"mlkem768x25519","signature_name":"ECDSA-P256-SHA256","protocol":"TLSv1.3","cert":{"subject":{"commonName":"*.gstatic.com","organization":""},"issuer":{"commonName":"WE2","organization":"Google Trust Services"},"validity":{"start":"Mon, 29 Jun 2026 08:39:25 GMT","end":"Mon, 21 Sep 2026 08:39:24 GMT"},"fingerprint":{"sha1":"4E:F2:73:C6:27:16:58:35:FE:55:D5:30:6B:E8:6D:2B:DA:B0:E8:7B","sha256":"82:EF:6A:61:96:A5:23:D6:2C:2C:9D:77:67:04:D8:7B:3B:6A:50:DA:3C:6C:6A:5F:4E:2D:55:F3:FC:DA:0B:EE"}}},"request":{"raw":"GET /og/_/js/k=og.asy.en_US.M_7ghikQAkA.2019.O/rt=j/m=_ac,_awd,ada,lldp,qads,abld/exm=/d=1/ed=1/rs=AA2YrTtJT2GPlx0nJ84RzsS-D9uX1TzAyQ HTTP/1.1\r\nHost: www.gstatic.com\r\nUser-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:134.0) Gecko/20100101 Firefox/134.0\r\nAccept: */*\r\nAccept-Language: en-US,en;q=0.9\r\nAccept-Encoding: gzip, deflate, br, zstd\r\nReferer: https://www.google.com/\r\nSec-Fetch-Storage-Access: none\r\nSec-GPC: 1\r\nConnection: keep-alive\r\nSec-Fetch-Dest: script\r\nSec-Fetch-Mode: no-cors\r\nSec-Fetch-Site: cross-site\r\nPragma: no-cache\r\nCache-Control: no-cache\r\n\r\n","headers":null,"cookies":null,"method":"GET"},"response":{"raw":"HTTP/3 200 \r\naccept-ranges: bytes\r\ncontent-encoding: gzip\r\ncontent-security-policy-report-only: require-trusted-types-for 'script'; report-uri https://csp.withgoogle.com/csp/one-google-eng\r\ncross-origin-resource-policy: cross-origin\r\ncross-origin-opener-policy: same-origin; report-to=\"one-google-eng\"\r\nreport-to: {\"group\":\"one-google-eng\",\"max_age\":2592000,\"endpoints\":[{\"url\":\"https://csp.withgoogle.com/csp/report-to/one-google-eng\"}]}\r\ncontent-length: 85207\r\nx-content-type-options: nosniff\r\nserver: sffe\r\nx-xss-protection: 0\r\ndate: Tue, 21 Jul 2026 12:01:21 GMT\r\nexpires: Wed, 21 Jul 2027 12:01:21 GMT\r\ncache-control: public, max-age=31536000\r\nlast-modified: Tue, 21 Jul 2026 09:33:04 GMT\r\ncontent-type: text/javascript; charset=UTF-8\r\nvary: Accept-Encoding, Origin\r\nage: 531155\r\nalt-svc: h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000\r\n\r\n","headers":null,"cookies":null,"status_code":"200","status_text":"","fingerprints":null,"data":{"size":232976,"size_decoded":86051,"mime_type":"text/javascript; charset=UTF-8","magic":"JavaScript source, ASCII text, with very long lines (2281)","md5":"aabc07d128eca7e97add035e0b1502f7","sha1":"b55680acd801602ad5cb18921cf498d9336eb56c","sha256":"4d509a235e8bf85b228b162b6c2098b8bc85d3b4f77976fb54e3a92cf3213505","sha512":"88faafb2f7bf5c01d6eb3007998813956b709244cd386e7f0526b6e531f1c165f15bb682b082b2c3549d580e89632b032d73a75d76e5c57b7cf66821bc12db42","ssdeep":"3072:kq2bOhO5+s7mThkZDfn748OnlsfMFGjPRSngRSxONBRBiE654uT:fRs7mThkFxOnlsfMqpupxYeT","tlshash":"d834199873a2706392a6f4d6402f0047b26ab466f44c4c6cb68cdde2aef4d4551fbf78","first_seen":"2026-07-21T12:28:20.15301Z","last_seen":"2026-07-28T08:20:26.548597Z","times_seen":500,"resource_available":true,"data":"dGhpcy5nYmFyXz10aGlzLmdiYXJffHx7fTsoZnVuY3Rpb24oXyl7dmFyIHdpbmRvdz10aGlzOwp0cnl7Cl8uX0ZfdG9nZ2xlc19pbml0aWFsaXplPWZ1bmN0aW9uKGEpeyh0eXBlb2YgZ2xvYmFsVGhpcyE9PSJ1bmRlZmluZWQiP2dsb2JhbFRoaXM6dHlwZW9mIHNlbGYhPT0idW5kZWZpbmVkIj9zZWxmOnRoaXMpLl9GX3RvZ2dsZXNfZ2Jhcl89YXx8W119OygwLF8uX0ZfdG9nZ2xlc19pbml0aWFsaXplKShbXSk7Ci8qCgogQ29weXJpZ2h0IFRoZSBDbG9zdXJlIExpYnJhcnkgQXV0aG9ycy4KIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wCiovCi8qCgogQ29weXJpZ2h0IEdvb2dsZSBMTEMKIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wCiovCi8qCgpNYXRoLnV1aWQuanMgKHYxLjQpCmh0dHA6Ly93d3cuYnJvb2ZhLmNvbQptYWlsdG86cm9iZXJ0QGJyb29mYS5jb20KQ29weXJpZ2h0IChjKSAyMDEwIFJvYmVydCBLaWVmZmVyCkR1YWwgbGljZW5zZWQgdW5kZXIgdGhlIE1JVCBhbmQgR1BMIGxpY2Vuc2VzLgoqLwp2YXIgYmEsaWEsaGEsZWEsbGEsbWEscWEsc2EsdGEsdWEsdmEsQWEsU2EsVmEsWmEsWWEsV2EsYmIsc2IsdWIsb2IscGIscWIseGIsQWIsQmIsSGIsS2IsTWIsUmIsTmIsVGIsWmIsWWIsYWMsZGMsWGIsa2MsZmMsaWMscWMsc2MsdWMsQWMsRmMsSWMsS2MsVGMsWGMsYWQsYmQsZ2QsbGQsbWQsbmQsc2QsdWQsdmQsemQsQWQsQmQsQ2QsRGQ7Xy5hYT1mdW5jdGlvbihhLGIpe2lmKEVycm9yLmNhcHR1cmVTdGFja1RyYWNlKUVycm9yLmNhcHR1cmVTdGFja1RyYWNlKHRoaXMsXy5hYSk7ZWxzZXtsZXQgYz1FcnJvcigpLnN0YWNrO2MmJih0aGlzLnN0YWNrPWMpfWEmJih0aGlzLm1lc3NhZ2U9U3RyaW5nKGEpKTtiIT09dm9pZCAwJiYodGhpcy5jYXVzZT1iKX07YmE9ZnVuY3Rpb24oYSl7Xy51LnNldFRpbWVvdXQoKCk9Pnt0aHJvdyBhO30sMCl9O18uY2E9ZnVuY3Rpb24oYSxiKXtyZXR1cm4gYS5sYXN0SW5kZXhPZihiLDApPT0wfTtfLmRhPWZ1bmN0aW9uKGEpe3JldHVybi9eW1xzXHhhMF0qJC8udGVzdChhKX07Cl8uZmE9ZnVuY3Rpb24oKXtyZXR1cm4gZWEoKS50b0xvd2VyQ2FzZSgpLmluZGV4T2YoIndlYmtpdCIpIT0tMX07CmlhPWZ1bmN0aW9uKGEsYil7dmFyIGM9MDthPVN0cmluZyhhKS50cmltKCkuc3BsaXQoIi4iKTtiPVN0cmluZyhiKS50cmltKCkuc3BsaXQoIi4iKTt2YXIgZD1NYXRoLm1heChhLmxlbmd0aCxiLmxlbmd0aCk7Zm9yKGxldCBnPTA7Yz09MCYmZzxkO2crKyl7dmFyIGU9YVtnXXx8IiIsZj1iW2ddfHwiIjtkb3tlPS8oXGQqKShcRCopKC4qKS8uZXhlYyhlKXx8WyIiLCIiLCIiLCIiXTtmPS8oXGQqKShcRCopKC4qKS8uZXhlYyhmKXx8WyIiLCIiLCIiLCIiXTtpZihlWzBdLmxlbmd0aD09MCYmZlswXS5sZW5ndGg9PTApYnJlYWs7Yz1oYShlWzFdLmxlbmd0aD09MD8wOnBhcnNlSW50KGVbMV0sMTApLGZbMV0ubGVuZ3RoPT0wPzA6cGFyc2VJbnQoZlsxXSwxMCkpfHxoYShlWzJdLmxlbmd0aD09MCxmWzJdLmxlbmd0aD09MCl8fGhhKGVbMl0sZlsyXSk7ZT1lWzNdO2Y9ZlszXX13aGlsZShjPT0wKX1yZXR1cm4gY307aGE9ZnVuY3Rpb24oYSxiKXtyZXR1cm4gYTxiPy0xOmE+Yj8xOjB9OwplYT1mdW5jdGlvbigpe3ZhciBhPV8udS5uYXZpZ2F0b3I7cmV0dXJuIGEmJihhPWEudXNlckFnZW50KT9hOiIifTtsYT1mdW5jdGlvbihhKXtpZighamF8fCFrYSlyZXR1cm4hMTtmb3IobGV0IGI9MDtiPGthLmJyYW5kcy5sZW5ndGg7YisrKXtsZXQge2JyYW5kOmN9PWthLmJyYW5kc1tiXTtpZihjJiZjLmluZGV4T2YoYSkhPS0xKXJldHVybiEwfXJldHVybiExfTtfLnY9ZnVuY3Rpb24oYSl7cmV0dXJuIGVhKCkuaW5kZXhPZihhKSE9LTF9O21hPWZ1bmN0aW9uKCl7cmV0dXJuIGphPyEha2EmJmthLmJyYW5kcy5sZW5ndGg+MDohMX07Xy5uYT1mdW5jdGlvbigpe3JldHVybiBtYSgpPyExOl8udigiT3BlcmEiKX07Xy5vYT1mdW5jdGlvbigpe3JldHVybiBtYSgpPyExOl8udigiVHJpZGVudCIpfHxfLnYoIk1TSUUiKX07Xy5wYT1mdW5jdGlvbigpe3JldHVybiBfLnYoIkZpcmVmb3giKXx8Xy52KCJGeGlPUyIpfTsKXy5yYT1mdW5jdGlvbigpe3JldHVybiBfLnYoIlNhZmFyaSIpJiYhKHFhKCl8fChtYSgpPzA6Xy52KCJDb2FzdCIpKXx8Xy5uYSgpfHwobWEoKT8wOl8udigiRWRnZSIpKXx8KG1hKCk/bGEoIk1pY3Jvc29mdCBFZGdlIik6Xy52KCJFZGcvIikpfHwobWEoKT9sYSgiT3BlcmEiKTpfLnYoIk9QUiIpKXx8Xy5wYSgpfHxfLnYoIlNpbGsiKXx8Xy52KCJBbmRyb2lkIikpfTtxYT1mdW5jdGlvbigpe3JldHVybiBtYSgpP2xhKCJDaHJvbWl1bSIpOihfLnYoIkNocm9tZSIpfHxfLnYoIkNyaU9TIikpJiYhKG1hKCk/MDpfLnYoIkVkZ2UiKSl8fF8udigiU2lsayIpfTtzYT1mdW5jdGlvbigpe3JldHVybiBqYT8hIWthJiYhIWthLnBsYXRmb3JtOiExfTt0YT1mdW5jdGlvbigpe3JldHVybiBfLnYoImlQaG9uZSIpJiYhXy52KCJpUG9kIikmJiFfLnYoImlQYWQiKX07dWE9ZnVuY3Rpb24oKXtyZXR1cm4gdGEoKXx8Xy52KCJpUGFkIil8fF8udigiaVBvZCIpfTsKdmE9ZnVuY3Rpb24oKXtyZXR1cm4gc2EoKT9rYS5wbGF0Zm9ybT09PSJtYWNPUyI6Xy52KCJNYWNpbnRvc2giKX07Xy54YT1mdW5jdGlvbihhLGIpe3JldHVybiBfLndhKGEsYik+PTB9O18ueWE9ZnVuY3Rpb24oYSxiKXtiPV8ud2EoYSxiKTt2YXIgYzsoYz1iPj0wKSYmQXJyYXkucHJvdG90eXBlLnNwbGljZS5jYWxsKGEsYiwxKTtyZXR1cm4gY307Xy56YT1mdW5jdGlvbihhKXt2YXIgYj1hLmxlbmd0aDtpZihiPjApe2xldCBjPUFycmF5KGIpO2ZvcihsZXQgZD0wO2Q8YjtkKyspY1tkXT1hW2RdO3JldHVybiBjfXJldHVybltdfTtBYT1mdW5jdGlvbihhLGIpe2EuX19jbG9zdXJlX19lcnJvcl9fY29udGV4dF9fOTg0MzgyfHwoYS5fX2Nsb3N1cmVfX2Vycm9yX19jb250ZXh0X185ODQzODI9e30pO2EuX19jbG9zdXJlX19lcnJvcl9fY29udGV4dF9fOTg0MzgyLnNldmVyaXR5PWJ9O18uQmE9ZnVuY3Rpb24oYSl7YT1FcnJvcihhKTtBYShhLCJ3YXJuaW5nIik7cmV0dXJuIGF9OwpfLkRhPWZ1bmN0aW9uKGEsYil7aWYoYSE9bnVsbCl7dmFyIGM7dmFyIGQ9KGM9Q2EpIT1udWxsP2M6Q2E9e307Yz1kW2FdfHwwO2M+PWJ8fChkW2FdPWMrMSxhPUVycm9yKCksQWEoYSwiaW5jaWRlbnQiKSxiYShhKSl9fTtfLkVhPWZ1bmN0aW9uKCl7cmV0dXJuIHR5cGVvZiBCaWdJbnQ9PT0iZnVuY3Rpb24ifTtfLkZhPWZ1bmN0aW9uKGEsYj0hMSl7cmV0dXJuIGImJlN5bWJvbC5mb3ImJmE/U3ltYm9sLmZvcihhKTphIT1udWxsP1N5bWJvbChhKTpTeW1ib2woKX07Xy5HYT1mdW5jdGlvbihhKXtpZig0JmEpcmV0dXJuIDUxMiZhPzUxMjoxMDI0JmE/MTAyNDowfTtfLkphPWZ1bmN0aW9uKGEpe3JldHVybiBhW0hhXT09PUlhfTtfLkxhPWZ1bmN0aW9uKGEsYil7cmV0dXJuIGI9PT12b2lkIDA/YS5qIT09S2EmJiEhKDImKGEuZGFbXy53XXwwKSk6ISEoMiZiKSYmYS5qIT09S2F9O18uTWE9ZnVuY3Rpb24oYSl7YS5YbD0hMDtyZXR1cm4gYX07Cl8uUmE9ZnVuY3Rpb24oYSl7dmFyIGI9YTtpZihOYShiKSl7aWYoIS9eXHMqKD86LT9bMS05XVxkKnwwKT9ccyokLy50ZXN0KGIpKXRocm93IEVycm9yKFN0cmluZyhiKSk7fWVsc2UgaWYoT2EoYikmJiFOdW1iZXIuaXNTYWZlSW50ZWdlcihiKSl0aHJvdyBFcnJvcihTdHJpbmcoYikpO3JldHVybiBQYT9CaWdJbnQoYSk6YT1RYShhKT9hPyIxIjoiMCI6TmEoYSk/YS50cmltKCl8fCIwIjpTdHJpbmcoYSl9O1NhPWZ1bmN0aW9uKGEsYil7aWYoYS5sZW5ndGg+Yi5sZW5ndGgpcmV0dXJuITE7aWYoYS5sZW5ndGg8Yi5sZW5ndGh8fGE9PT1iKXJldHVybiEwO2ZvcihsZXQgYz0wO2M8YS5sZW5ndGg7YysrKXtsZXQgZD1hW2NdLGU9YltjXTtpZihkPmUpcmV0dXJuITE7aWYoZDxlKXJldHVybiEwfX07VmE9ZnVuY3Rpb24oYSl7dmFyIGI9YT4+PjA7Xy5UYT1iO18uVWE9KGEtYikvNDI5NDk2NzI5Nj4+PjB9OwpfLlhhPWZ1bmN0aW9uKGEpe2lmKGE8MCl7VmEoLWEpO2xldCBbYixjXT1XYShfLlRhLF8uVWEpO18uVGE9Yj4+PjA7Xy5VYT1jPj4+MH1lbHNlIFZhKGEpfTtaYT1mdW5jdGlvbihhLGIpe2I+Pj49MDthPj4+PTA7aWYoYjw9MjA5NzE1MSl2YXIgYz0iIisoNDI5NDk2NzI5NipiK2EpO2Vsc2UgXy5FYSgpP2M9IiIrKEJpZ0ludChiKTw8QmlnSW50KDMyKXxCaWdJbnQoYSkpOihjPShhPj4+MjR8Yjw8OCkmMTY3NzcyMTUsYj1iPj4xNiY2NTUzNSxhPShhJjE2Nzc3MjE1KStjKjY3NzcyMTYrYio2NzEwNjU2LGMrPWIqODE0NzQ5NyxiKj0yLGE+PTFFNyYmKGMrPWEvMUU3Pj4+MCxhJT0xRTcpLGM+PTFFNyYmKGIrPWMvMUU3Pj4+MCxjJT0xRTcpLGM9YitZYShjKStZYShhKSk7cmV0dXJuIGN9O1lhPWZ1bmN0aW9uKGEpe2E9U3RyaW5nKGEpO3JldHVybiIwMDAwMDAwIi5zbGljZShhLmxlbmd0aCkrYX07Cl8uJGE9ZnVuY3Rpb24oYSxiKXtpZihiJjIxNDc0ODM2NDgpaWYoXy5FYSgpKWE9IiIrKEJpZ0ludChifDApPDxCaWdJbnQoMzIpfEJpZ0ludChhPj4+MCkpO2Vsc2V7bGV0IFtjLGRdPVdhKGEsYik7YT0iLSIrWmEoYyxkKX1lbHNlIGE9WmEoYSxiKTtyZXR1cm4gYX07Cl8uYWI9ZnVuY3Rpb24oYSl7aWYoYS5sZW5ndGg8MTYpXy5YYShOdW1iZXIoYSkpO2Vsc2UgaWYoXy5FYSgpKWE9QmlnSW50KGEpLF8uVGE9TnVtYmVyKGEmQmlnSW50KDQyOTQ5NjcyOTUpKT4+PjAsXy5VYT1OdW1iZXIoYT4+QmlnSW50KDMyKSZCaWdJbnQoNDI5NDk2NzI5NSkpO2Vsc2V7bGV0IGI9KyhhWzBdPT09Ii0iKTtfLlVhPV8uVGE9MDtsZXQgYz1hLmxlbmd0aDtmb3IobGV0IGQ9YixlPShjLWIpJTYrYjtlPD1jO2Q9ZSxlKz02KXtsZXQgZj1OdW1iZXIoYS5zbGljZShkLGUpKTtfLlVhKj0xRTY7Xy5UYT1fLlRhKjFFNitmO18uVGE+PTQyOTQ5NjcyOTYmJihfLlVhKz1NYXRoLnRydW5jKF8uVGEvNDI5NDk2NzI5NiksXy5VYT4+Pj0wLF8uVGE+Pj49MCl9aWYoYil7bGV0IFtkLGVdPVdhKF8uVGEsXy5VYSk7Xy5UYT1kO18uVWE9ZX19fTtXYT1mdW5jdGlvbihhLGIpe2I9fmI7YT9hPX5hKzE6Yis9MTtyZXR1cm5bYSxiXX07CmJiPWZ1bmN0aW9uKGEsYj1gdW5leHBlY3RlZCB2YWx1ZSAke2F9IWApe3Rocm93IEVycm9yKGIpO307Xy5kYj1mdW5jdGlvbihhKXtpZih0eXBlb2YgYSE9PSJib29sZWFuIil0aHJvdyBFcnJvcigia2AiK18uY2IoYSkrImAiK2EpO3JldHVybiBhfTtfLmViPWZ1bmN0aW9uKGEpe2lmKGE9PW51bGx8fHR5cGVvZiBhPT09ImJvb2xlYW4iKXJldHVybiBhO2lmKHR5cGVvZiBhPT09Im51bWJlciIpcmV0dXJuISFhfTtfLmhiPWZ1bmN0aW9uKGEpe3N3aXRjaCh0eXBlb2YgYSl7Y2FzZSAiYmlnaW50IjpyZXR1cm4hMDtjYXNlICJudW1iZXIiOnJldHVybigwLF8uZmIpKGEpO2Nhc2UgInN0cmluZyI6cmV0dXJuIGdiLnRlc3QoYSk7ZGVmYXVsdDpyZXR1cm4hMX19O18uaWI9ZnVuY3Rpb24oYSl7aWYoISgwLF8uZmIpKGEpKXRocm93IF8uQmEoImVudW0iKTtyZXR1cm4gYXwwfTtfLmpiPWZ1bmN0aW9uKGEpe3JldHVybiBhPT1udWxsP2E6KDAsXy5mYikoYSk/YXwwOnZvaWQgMH07Cl8ua2I9ZnVuY3Rpb24oYSl7aWYodHlwZW9mIGEhPT0ibnVtYmVyIil0aHJvdyBfLkJhKCJpbnQzMiIpO2lmKCEoMCxfLmZiKShhKSl0aHJvdyBfLkJhKCJpbnQzMiIpO3JldHVybiBhfDB9O18ubGI9ZnVuY3Rpb24oYSl7aWYoYT09bnVsbClyZXR1cm4gYTtpZih0eXBlb2YgYT09PSJzdHJpbmciJiZhKWE9K2E7ZWxzZSBpZih0eXBlb2YgYSE9PSJudW1iZXIiKXJldHVybjtyZXR1cm4oMCxfLmZiKShhKT9hfDA6dm9pZCAwfTsKc2I9ZnVuY3Rpb24oYSl7dmFyIGI9dm9pZCAwO2IhPW51bGx8fChiPTEwMjQpO2lmKCFfLmhiKGEpKXRocm93IF8uQmEoImludDY0Iik7dmFyIGM9dHlwZW9mIGE7c3dpdGNoKGIpe2Nhc2UgNTEyOnN3aXRjaChjKXtjYXNlICJzdHJpbmciOnJldHVybiBfLm1iKGEpO2Nhc2UgImJpZ2ludCI6cmV0dXJuIFN0cmluZygoMCxfLm5iKSg2NCxhKSk7ZGVmYXVsdDpyZXR1cm4gb2IoYSl9Y2FzZSAxMDI0OnN3aXRjaChjKXtjYXNlICJzdHJpbmciOnJldHVybiBwYihhKTtjYXNlICJiaWdpbnQiOnJldHVybiBfLlJhKCgwLF8ubmIpKDY0LGEpKTtkZWZhdWx0OnJldHVybiBxYihhKX1jYXNlIDA6c3dpdGNoKGMpe2Nhc2UgInN0cmluZyI6cmV0dXJuIF8ubWIoYSk7Y2FzZSAiYmlnaW50IjpyZXR1cm4gXy5SYSgoMCxfLm5iKSg2NCxhKSk7ZGVmYXVsdDpyZXR1cm4gXy5yYihhKX1kZWZhdWx0OnJldHVybiBiYihiLCJVbmtub3duIGZvcm1hdCByZXF1ZXN0ZWQgdHlwZSBmb3IgaW50NjQiKX19OwpfLnRiPWZ1bmN0aW9uKGEpe3JldHVybiBhPT1udWxsP2E6c2IoYSl9O3ViPWZ1bmN0aW9uKGEpe3ZhciBiPWEubGVuZ3RoO2lmKGFbMF09PT0iLSI/YjwyMHx8Yj09PTIwJiZhPD0iLTkyMjMzNzIwMzY4NTQ3NzU4MDgiOmI8MTl8fGI9PT0xOSYmYTw9IjkyMjMzNzIwMzY4NTQ3NzU4MDciKXJldHVybiBhO18uYWIoYSk7cmV0dXJuIF8uJGEoXy5UYSxfLlVhKX07Xy5yYj1mdW5jdGlvbihhKXthPXZiKGEpO2lmKCF3YihhKSl7Xy5YYShhKTt2YXIgYj1fLlRhLGM9Xy5VYTtpZihhPWMmMjE0NzQ4MzY0OCliPX5iKzE+Pj4wLGM9fmM+Pj4wLGI9PTAmJihjPWMrMT4+PjApO2xldCBkPWMqNDI5NDk2NzI5NisoYj4+PjApO2I9TnVtYmVyLmlzU2FmZUludGVnZXIoZCk/ZDpaYShiLGMpO2E9dHlwZW9mIGI9PT0ibnVtYmVyIj9hPy1iOmI6YT8iLSIrYjpifXJldHVybiBhfTsKb2I9ZnVuY3Rpb24oYSl7YT12YihhKTt3YihhKT9hPVN0cmluZyhhKTooXy5YYShhKSxhPV8uJGEoXy5UYSxfLlVhKSk7cmV0dXJuIGF9O18ubWI9ZnVuY3Rpb24oYSl7dmFyIGI9dmIoTnVtYmVyKGEpKTtpZih3YihiKSlyZXR1cm4gU3RyaW5nKGIpO2I9YS5pbmRleE9mKCIuIik7YiE9PS0xJiYoYT1hLnN1YnN0cmluZygwLGIpKTtyZXR1cm4gdWIoYSl9O3BiPWZ1bmN0aW9uKGEpe3ZhciBiPXZiKE51bWJlcihhKSk7aWYod2IoYikpcmV0dXJuIF8uUmEoYik7Yj1hLmluZGV4T2YoIi4iKTtiIT09LTEmJihhPWEuc3Vic3RyaW5nKDAsYikpO3JldHVybiBfLkVhKCk/Xy5SYSgoMCxfLm5iKSg2NCxCaWdJbnQoYSkpKTpfLlJhKHViKGEpKX07cWI9ZnVuY3Rpb24oYSl7cmV0dXJuIHdiKGEpP18uUmEoXy5yYihhKSk6Xy5SYShvYihhKSl9Owp4Yj1mdW5jdGlvbihhKXt2YXIgYj10eXBlb2YgYTtpZihhPT1udWxsKXJldHVybiBhO2lmKGI9PT0iYmlnaW50IilyZXR1cm4gXy5SYSgoMCxfLm5iKSg2NCxhKSk7aWYoXy5oYihhKSlyZXR1cm4gYj09PSJzdHJpbmciP3BiKGEpOnFiKGEpfTtfLnliPWZ1bmN0aW9uKGEpe2lmKGEhPW51bGwmJnR5cGVvZiBhIT09InN0cmluZyIpdGhyb3cgRXJyb3IoKTtyZXR1cm4gYX07Xy56Yj1mdW5jdGlvbihhKXtyZXR1cm4gYT09bnVsbHx8dHlwZW9mIGE9PT0ic3RyaW5nIj9hOnZvaWQgMH07QWI9ZnVuY3Rpb24oYSxiLGMpe2lmKGEhPW51bGwmJl8uSmEoYSkpcmV0dXJuIGE7aWYoQXJyYXkuaXNBcnJheShhKSl7dmFyIGQ9YVtfLnddfDA7Yz1kfGMmMzJ8YyYyO2MhPT1kJiYoYVtfLnddPWMpO3JldHVybiBuZXcgYihhKX19O0JiPWZ1bmN0aW9uKGEpe3JldHVybiBhfTtfLkZiPWZ1bmN0aW9uKGEpe3ZhciBiPV8uRGIoXy5FYik7cmV0dXJuIGI/YVtiXTp2b2lkIDB9OwpIYj1mdW5jdGlvbihhLGIpe2I8MTAwfHxfLkRhKEdiLDEpfTsKS2I9ZnVuY3Rpb24oYSxiLGMsZCl7dmFyIGU9ZCE9PXZvaWQgMDtkPSEhZDt2YXIgZj1fLkRiKF8uRWIpLGc7IWUmJmYmJihnPWFbZl0pJiZnLnpjKEhiKTtmPVtdO3ZhciBoPWEubGVuZ3RoO2c9NDI5NDk2NzI5NTt2YXIgaz0hMSxsPSEhKGImNjQpLG09bD9iJjEyOD8wOi0xOnZvaWQgMDtpZighKGImMSkpe3ZhciBuPWgmJmFbaC0xXTtuIT1udWxsJiZ0eXBlb2Ygbj09PSJvYmplY3QiJiZuLmNvbnN0cnVjdG9yPT09T2JqZWN0PyhoLS0sZz1oKTpuPXZvaWQgMDtpZihsJiYhKGImMTI4KSYmIWUpe2s9ITA7dmFyIHI7Zz0oKHI9SWIpIT1udWxsP3I6QmIpKGctbSxtLGEsbix2b2lkIDApK219fWI9dm9pZCAwO2ZvcihyPTA7cjxoO3IrKyl7bGV0IHQ9YVtyXTtpZih0IT1udWxsJiYodD1jKHQsZCkpIT1udWxsKWlmKGwmJnI+PWcpe2xldCBCPXItbTt2YXIgcT12b2lkIDA7KChxPWIpIT1udWxsP3E6Yj17fSlbQl09dH1lbHNlIGZbcl09dH1pZihuKWZvcihsZXQgdCBpbiBuKXtxPW5bdF07CmlmKHE9PW51bGx8fChxPWMocSxkKSk9PW51bGwpY29udGludWU7aD0rdDtsZXQgQjtpZihsJiYhTnVtYmVyLmlzTmFOKGgpJiYoQj1oK20pPGcpZltCXT1xO2Vsc2V7bGV0IEM7KChDPWIpIT1udWxsP0M6Yj17fSlbdF09cX19YiYmKGs/Zi5wdXNoKGIpOmZbZ109Yik7ZSYmXy5EYihfLkViKSYmKGE9Xy5GYihhKSkmJiJmdW5jdGlvbiI9PXR5cGVvZiBfLkpiJiZhIGluc3RhbmNlb2YgXy5KYiYmKGZbXy5FYl09YS5pKCkpO3JldHVybiBmfTsKTWI9ZnVuY3Rpb24oYSl7c3dpdGNoKHR5cGVvZiBhKXtjYXNlICJudW1iZXIiOnJldHVybiBOdW1iZXIuaXNGaW5pdGUoYSk/YToiIithO2Nhc2UgImJpZ2ludCI6cmV0dXJuIExiKGEpP051bWJlcihhKToiIithO2Nhc2UgImJvb2xlYW4iOnJldHVybiBhPzE6MDtjYXNlICJvYmplY3QiOmlmKEFycmF5LmlzQXJyYXkoYSkpe3ZhciBiPWFbXy53XXwwO3JldHVybiBhLmxlbmd0aD09PTAmJmImMT92b2lkIDA6S2IoYSxiLE1iKX1pZihhIT1udWxsJiZfLkphKGEpKXJldHVybiBOYihhKTtpZigiZnVuY3Rpb24iPT10eXBlb2YgXy5PYiYmYSBpbnN0YW5jZW9mIF8uT2Ipe2I9YS5pO2lmKGI9PW51bGwpYT0iIjtlbHNlIGlmKHR5cGVvZiBiPT09InN0cmluZyIpYT1iO2Vsc2V7bGV0IGM9IiIsZD0wLGU9Yi5sZW5ndGgtMTAyNDA7Zm9yKDtkPGU7KWMrPVN0cmluZy5mcm9tQ2hhckNvZGUuYXBwbHkobnVsbCxiLnN1YmFycmF5KGQsZCs9MTAyNDApKTtjKz1TdHJpbmcuZnJvbUNoYXJDb2RlLmFwcGx5KG51bGwsCmQ/Yi5zdWJhcnJheShkKTpiKTtiPWJ0b2EoYyk7YT1hLmk9Yn1yZXR1cm4gYX1yZXR1cm59cmV0dXJuIGF9O1JiPWZ1bmN0aW9uKGEsYil7aWYoYil7SWI9Yj09bnVsbHx8Yj09PUJifHxiW1BiXSE9PVFiP0JiOmI7dHJ5e3JldHVybiBOYihhKX1maW5hbGx5e0liPXZvaWQgMH19cmV0dXJuIE5iKGEpfTtOYj1mdW5jdGlvbihhKXthPWEuZGE7cmV0dXJuIEtiKGEsYVtfLnddfDAsTWIpfTsKXy5VYj1mdW5jdGlvbihhLGIsYyxkPTApe2lmKGE9PW51bGwpe3ZhciBlPTMyO2M/KGE9W2NdLGV8PTEyOCk6YT1bXTtiJiYoZT1lJi0xNjc2MDgzM3woYiYxMDIzKTw8MTQpfWVsc2V7aWYoIUFycmF5LmlzQXJyYXkoYSkpdGhyb3cgRXJyb3IoImwiKTtlPWFbXy53XXwwO2lmKFNiJiYxJmUpdGhyb3cgRXJyb3IoIm0iKTsyMDQ4JmUmJiEoMiZlKSYmVGIoKTtpZihlJjI1Nil0aHJvdyBFcnJvcigibiIpO2lmKGUmNjQpcmV0dXJuKGV8ZCkhPT1lJiYoYVtfLnddPWV8ZCksYTtpZihjJiYoZXw9MTI4LGMhPT1hWzBdKSl0aHJvdyBFcnJvcigibyIpO2E6e2M9YTtlfD02NDt2YXIgZj1jLmxlbmd0aDtpZihmKXt2YXIgZz1mLTE7bGV0IGs9Y1tnXTtpZihrIT1udWxsJiZ0eXBlb2Ygaz09PSJvYmplY3QiJiZrLmNvbnN0cnVjdG9yPT09T2JqZWN0KXtiPWUmMTI4PzA6LTE7Zy09YjtpZihnPj0xMDI0KXRocm93IEVycm9yKCJxIik7Zm9yKHZhciBoIGluIGspaWYoZj0raCxmPGcpY1tmK2JdPQprW2hdLGRlbGV0ZSBrW2hdO2Vsc2UgYnJlYWs7ZT1lJi0xNjc2MDgzM3woZyYxMDIzKTw8MTQ7YnJlYWsgYX19aWYoYil7aD1NYXRoLm1heChiLGYtKGUmMTI4PzA6LTEpKTtpZihoPjEwMjQpdGhyb3cgRXJyb3IoInIiKTtlPWUmLTE2NzYwODMzfChoJjEwMjMpPDwxNH19fWFbXy53XT1lfDY0fGQ7cmV0dXJuIGF9O1RiPWZ1bmN0aW9uKCl7aWYoU2IpdGhyb3cgRXJyb3IoInAiKTtfLkRhKFZiLDUpfTsKWmI9ZnVuY3Rpb24oYSxiKXtpZih0eXBlb2YgYSE9PSJvYmplY3QiKXJldHVybiBhO2lmKEFycmF5LmlzQXJyYXkoYSkpe3ZhciBjPWFbXy53XXwwO2EubGVuZ3RoPT09MCYmYyYxP2E9dm9pZCAwOmMmMnx8KCFifHw0MDk2JmN8fDE2JmM/YT1fLldiKGEsYywhMSxiJiYhKGMmMTYpKTooYVtfLnddfD0zNCxjJjQmJk9iamVjdC5mcmVlemUoYSkpKTtyZXR1cm4gYX1pZihhIT1udWxsJiZfLkphKGEpKXJldHVybiBiPWEuZGEsYz1iW18ud118MCxfLkxhKGEsYyk/YTpYYihhLGIsYyk/WWIoYSxiKTpfLldiKGIsYyk7aWYoImZ1bmN0aW9uIj09dHlwZW9mIF8uT2ImJmEgaW5zdGFuY2VvZiBfLk9iKXJldHVybiBhfTtZYj1mdW5jdGlvbihhLGIsYyl7YT1uZXcgYS5jb25zdHJ1Y3RvcihiKTtjJiYoYS5qPUthKTthLnY9S2E7cmV0dXJuIGF9OwpfLiRiPWZ1bmN0aW9uKGEpe3ZhciBiPWEuZGEsYz1iW18ud118MDtyZXR1cm4gWGIoYSxiLGMpP1liKGEsYiwhMCk6bmV3IGEuY29uc3RydWN0b3IoXy5XYihiLGMsITEpKX07Xy5XYj1mdW5jdGlvbihhLGIsYyxkKXtkIT1udWxsfHwoZD0hISgzNCZiKSk7YT1LYihhLGIsWmIsZCk7ZD0zMjtjJiYoZHw9Mik7Yj1iJjE2NzY5MjE3fGQ7YVtfLnddPWI7cmV0dXJuIGF9O2FjPWZ1bmN0aW9uKGEpe3ZhciBiPWEuZGEsYz1iW18ud118MDtyZXR1cm4gXy5MYShhLGMpP1hiKGEsYixjKT9ZYihhLGIsITApOm5ldyBhLmNvbnN0cnVjdG9yKF8uV2IoYixjLCExKSk6YX07Xy5iYz1mdW5jdGlvbihhKXtpZihhLmohPT1LYSlyZXR1cm4hMTt2YXIgYj1hLmRhO2I9Xy5XYihiLGJbXy53XXwwKTtiW18ud118PTIwNDg7YS5kYT1iO2Euaj12b2lkIDA7YS52PXZvaWQgMDtyZXR1cm4hMH07Cl8uY2M9ZnVuY3Rpb24oYSl7aWYoIV8uYmMoYSkmJl8uTGEoYSxhLmRhW18ud118MCkpdGhyb3cgRXJyb3IoKTt9O2RjPWZ1bmN0aW9uKGEsYil7Yj09PXZvaWQgMCYmKGI9YVtfLnddfDApO2ImMzImJiEoYiY0MDk2KSYmKGFbXy53XT1ifDQwOTYpfTtYYj1mdW5jdGlvbihhLGIsYyl7cmV0dXJuIGMmMj8hMDpjJjMyJiYhKGMmNDA5Nik/KGJbXy53XT1jfDIsYS5qPUthLCEwKTohMX07Cl8uZWM9ZnVuY3Rpb24oYSxiLGMsZCxlKXt2YXIgZj1jKyhlPzA6LTEpLGc9YS5sZW5ndGgtMTtpZihnPj0xKyhlPzA6LTEpJiZmPj1nKXtsZXQgaD1hW2ddO2lmKGghPW51bGwmJnR5cGVvZiBoPT09Im9iamVjdCImJmguY29uc3RydWN0b3I9PT1PYmplY3QpcmV0dXJuIGhbY109ZCxifWlmKGY8PWcpcmV0dXJuIGFbZl09ZCxiO2lmKGQhPT12b2lkIDApe2xldCBoO2c9KChoPWIpIT1udWxsP2g6Yj1hW18ud118MCk+PjE0JjEwMjN8fDUzNjg3MDkxMjtjPj1nP2QhPW51bGwmJihhW2crKGU/MDotMSldPXtbY106ZH0pOmFbZl09ZH1yZXR1cm4gYn07Cl8ubGM9ZnVuY3Rpb24oYSxiLGMsZCxlLGYpe3ZhciBnPWEuZGEsaD1nW18ud118MDtkPV8uTGEoYSxoKT8xOmQ7ZT0hIWV8fGQ9PT0zO2Q9PT0yJiZfLmJjKGEpJiYoZz1hLmRhLGg9Z1tfLnddfDApO2E9ZmMoZyxiLGYpO3ZhciBrPWE9PT1fLmhjPzc6YVtfLnddfDAsbD1pYyhrLGgpO3ZhciBtPTQmbD8hMTohMDtpZihtKXs0JmwmJihhPVsuLi5hXSxrPTAsbD1fLmpjKGwsaCksaD1fLmVjKGcsaCxiLGEsZikpO2xldCBuPTAscj0wO2Zvcig7bjxhLmxlbmd0aDtuKyspe2xldCBxPWMoYVtuXSk7cSE9bnVsbCYmKGFbcisrXT1xKX1yPG4mJihhLmxlbmd0aD1yKTtjPShsfDQpJi01MTM7bD1jJj0tMTAyNTtsJj0tNDA5N31sIT09ayYmKGFbXy53XT1sLDImbCYmT2JqZWN0LmZyZWV6ZShhKSk7cmV0dXJuIGE9a2MoYSxsLGcsaCxiLGYsZCxtLGUpfTsKa2M9ZnVuY3Rpb24oYSxiLGMsZCxlLGYsZyxoLGspe3ZhciBsPWI7Zz09PTF8fChnIT09ND8wOjImYnx8ISgxNiZiKSYmMzImZCk/Xy5tYyhiKXx8KGJ8PSFhLmxlbmd0aHx8aCYmISg0MDk2JmIpfHwzMiZkJiYhKDQwOTYmYnx8MTYmYik/MjoyNTYsYiE9PWwmJihhW18ud109YiksT2JqZWN0LmZyZWV6ZShhKSk6KGc9PT0yJiZfLm1jKGIpJiYoYT1bLi4uYV0sbD0wLGI9Xy5qYyhiLGQpLGQ9Xy5lYyhjLGQsZSxhLGYpKSxfLm1jKGIpfHwoa3x8KGJ8PTE2KSxiIT09bCYmKGFbXy53XT1iKSkpOzImYnx8ISg0MDk2JmJ8fDE2JmIpfHxkYyhjLGQpO3JldHVybiBhfTtmYz1mdW5jdGlvbihhLGIsYyl7YT1fLm5jKGEsYixjKTtyZXR1cm4gQXJyYXkuaXNBcnJheShhKT9hOl8uaGN9O2ljPWZ1bmN0aW9uKGEsYil7MiZiJiYoYXw9Mik7cmV0dXJuIGF8MX07Xy5tYz1mdW5jdGlvbihhKXtyZXR1cm4hISgyJmEpJiYhISg0JmEpfHwhISgyNTYmYSl9OwpfLm9jPWZ1bmN0aW9uKGEsYixjLGQsZSl7dmFyIGY9ITE7ZD1fLm5jKGEsZCxlLGc9Pnt2YXIgaD1BYihnLGMsYik7Zj1oIT09ZyYmaCE9bnVsbDtyZXR1cm4gaH0pO2lmKGQhPW51bGwpcmV0dXJuIGYmJiFfLkxhKGQpJiZkYyhhLGIpLGR9O18uamM9ZnVuY3Rpb24oYSxiKXtyZXR1cm4gYT0oMiZiP2F8MjphJi0zKSYtMjczfTtfLnBjPWZ1bmN0aW9uKGEsYixjLGQsZSxmLGcsaCl7Xy5jYyhhKTtiPV8ubGMoYSxiLGUsMiwhMCxmKTt2YXIgaztlPShrPV8uR2EoYj09PV8uaGM/NzpiW18ud118MCkpIT1udWxsP2s6MTAyNDtpZihoKWlmKEFycmF5LmlzQXJyYXkoZCkpZm9yKGc9ZC5sZW5ndGgsaD0wO2g8ZztoKyspYi5wdXNoKGMoZFtoXSxlKSk7ZWxzZSBmb3IobGV0IGwgb2YgZCliLnB1c2goYyhsLGUpKTtlbHNle2lmKGcpdGhyb3cgRXJyb3IoKTtiLnB1c2goYyhkLGUpKX1yZXR1cm4gYX07CnFjPWZ1bmN0aW9uKCl7dmFyIGE9Y2xhc3N7Y29uc3RydWN0b3IoKXt0aHJvdyBFcnJvcigpO319O09iamVjdC5zZXRQcm90b3R5cGVPZihhLGEucHJvdG90eXBlKTtyZXR1cm4gYX07Xy5yYz1mdW5jdGlvbihhKXtyZXR1cm4gYj0+e2lmKGI9PW51bGx8fGI9PSIiKWI9bmV3IGE7ZWxzZXtiPUpTT04ucGFyc2UoYik7aWYoIUFycmF5LmlzQXJyYXkoYikpdGhyb3cgRXJyb3IoInQiKTtiW18ud118PTMyO2I9bmV3IGEoYil9cmV0dXJuIGJ9fTsKc2M9ZnVuY3Rpb24oKXtmdW5jdGlvbiBhKCl7ZVswXT0xNzMyNTg0MTkzO2VbMV09NDAyMzIzMzQxNztlWzJdPTI1NjIzODMxMDI7ZVszXT0yNzE3MzM4Nzg7ZVs0XT0zMjg1Mzc3NTIwO209bD0wfWZ1bmN0aW9uIGIobil7Zm9yKHZhciByPWcscT0wO3E8NjQ7cSs9NClyW3EvNF09bltxXTw8MjR8bltxKzFdPDwxNnxuW3ErMl08PDh8bltxKzNdO2ZvcihxPTE2O3E8ODA7cSsrKW49cltxLTNdXnJbcS04XV5yW3EtMTRdXnJbcS0xNl0scltxXT0objw8MXxuPj4+MzEpJjQyOTQ5NjcyOTU7bj1lWzBdO3ZhciB0PWVbMV0sQj1lWzJdLEM9ZVszXSxFPWVbNF07Zm9yKHE9MDtxPDgwO3ErKyl7aWYocTw0MClpZihxPDIwKXt2YXIgQT1DXnQmKEJeQyk7dmFyIFI9MTUxODUwMDI0OX1lbHNlIEE9dF5CXkMsUj0xODU5Nzc1MzkzO2Vsc2UgcTw2MD8oQT10JkJ8QyYodHxCKSxSPTI0MDA5NTk3MDgpOihBPXReQl5DLFI9MzM5NTQ2OTc4Mik7QT0oKG48PDV8bj4+PjI3KSY0Mjk0OTY3Mjk1KStBKwpFK1IrcltxXSY0Mjk0OTY3Mjk1O0U9QztDPUI7Qj0odDw8MzB8dD4+PjIpJjQyOTQ5NjcyOTU7dD1uO249QX1lWzBdPWVbMF0rbiY0Mjk0OTY3Mjk1O2VbMV09ZVsxXSt0JjQyOTQ5NjcyOTU7ZVsyXT1lWzJdK0ImNDI5NDk2NzI5NTtlWzNdPWVbM10rQyY0Mjk0OTY3Mjk1O2VbNF09ZVs0XStFJjQyOTQ5NjcyOTV9ZnVuY3Rpb24gYyhuLHIpe2lmKHR5cGVvZiBuPT09InN0cmluZyIpe249dW5lc2NhcGUoZW5jb2RlVVJJQ29tcG9uZW50KG4pKTtmb3IodmFyIHE9W10sdD0wLEI9bi5sZW5ndGg7dDxCOysrdClxLnB1c2gobi5jaGFyQ29kZUF0KHQpKTtuPXF9cnx8KHI9bi5sZW5ndGgpO3E9MDtpZihsPT0wKWZvcig7cSs2NDxyOyliKG4uc2xpY2UocSxxKzY0KSkscSs9NjQsbSs9NjQ7Zm9yKDtxPHI7KWlmKGZbbCsrXT1uW3ErK10sbSsrLGw9PTY0KWZvcihsPTAsYihmKTtxKzY0PHI7KWIobi5zbGljZShxLHErNjQpKSxxKz02NCxtKz02NH1mdW5jdGlvbiBkKCl7dmFyIG49W10scj0KbSo4O2w8NTY/YyhoLDU2LWwpOmMoaCw2NC0obC01NikpO2Zvcih2YXIgcT02MztxPj01NjtxLS0pZltxXT1yJjI1NSxyPj4+PTg7YihmKTtmb3IocT1yPTA7cTw1O3ErKylmb3IodmFyIHQ9MjQ7dD49MDt0LT04KW5bcisrXT1lW3FdPj50JjI1NTtyZXR1cm4gbn1mb3IodmFyIGU9W10sZj1bXSxnPVtdLGg9WzEyOF0saz0xO2s8NjQ7KytrKWhba109MDt2YXIgbCxtO2EoKTtyZXR1cm57cmVzZXQ6YSx1cGRhdGU6YyxkaWdlc3Q6ZCxHZzpmdW5jdGlvbigpe2Zvcih2YXIgbj1kKCkscj0iIixxPTA7cTxuLmxlbmd0aDtxKyspcis9IjAxMjM0NTY3ODlBQkNERUYiLmNoYXJBdChNYXRoLmZsb29yKG5bcV0vMTYpKSsiMDEyMzQ1Njc4OUFCQ0RFRiIuY2hhckF0KG5bcV0lMTYpO3JldHVybiByfX19Owp1Yz1mdW5jdGlvbigpe3ZhciBhPW51bGw7aWYoIXRjKXJldHVybiBhO3RyeXtsZXQgYj1jPT5jO2E9dGMuY3JlYXRlUG9saWN5KCJvZ2ItYXN5I2h0bWwiLHtjcmVhdGVIVE1MOmIsY3JlYXRlU2NyaXB0OmIsY3JlYXRlU2NyaXB0VVJMOmJ9KX1jYXRjaChiKXt9cmV0dXJuIGF9O18ud2M9ZnVuY3Rpb24oKXt2Yz09PXZvaWQgMCYmKHZjPXVjKCkpO3JldHVybiB2Y307Xy55Yz1mdW5jdGlvbihhKXtpZihhIGluc3RhbmNlb2YgXy54YylyZXR1cm4gYS5pO3Rocm93IEVycm9yKCJ3Iik7fTtBYz1mdW5jdGlvbihhKXtyZXR1cm4gbmV3IF8uemMoYj0+Yi5zdWJzdHIoMCxhLmxlbmd0aCsxKS50b0xvd2VyQ2FzZSgpPT09YSsiOiIpfTtfLkNjPWZ1bmN0aW9uKGEpe2lmKEJjLnRlc3QoYSkpcmV0dXJuIGF9O18uRGM9ZnVuY3Rpb24oYSl7cmV0dXJuIGEgaW5zdGFuY2VvZiBfLnhjP18ueWMoYSk6Xy5DYyhhKX07Cl8uRWM9ZnVuY3Rpb24oYSxiPWRvY3VtZW50KXt2YXIgYyxkPShjPWIucXVlcnlTZWxlY3Rvcik9PW51bGw/dm9pZCAwOmMuY2FsbChiLGAke2F9W25vbmNlXWApO3JldHVybiBkPT1udWxsPyIiOmQubm9uY2V8fGQuZ2V0QXR0cmlidXRlKCJub25jZSIpfHwiIn07RmM9ZnVuY3Rpb24oYSl7dGhpcy5pPWF8fHtjb29raWU6IiJ9fTtfLkdjPWZ1bmN0aW9uKGEpe2EmJnR5cGVvZiBhLmRpc3Bvc2U9PSJmdW5jdGlvbiImJmEuZGlzcG9zZSgpfTtfLng9ZnVuY3Rpb24oKXt0aGlzLks9dGhpcy5LO3RoaXMuWD10aGlzLlh9O18uSGM9ZnVuY3Rpb24oYSxiKXt0aGlzLng9YSE9PXZvaWQgMD9hOjA7dGhpcy55PWIhPT12b2lkIDA/YjowfTtJYz1mdW5jdGlvbihhLGIpe3RoaXMud2lkdGg9YTt0aGlzLmhlaWdodD1ifTtfLkpjPWZ1bmN0aW9uKGEsYixjKXtmb3IobGV0IGQgaW4gYSliLmNhbGwoYyxhW2RdLGQsYSl9OwpLYz1mdW5jdGlvbihhLGIpe2ZvcihsZXQgYyBpbiBhKWlmKGIuY2FsbCh2b2lkIDAsYVtjXSxjLGEpKXJldHVybiEwO3JldHVybiExfTtfLkxjPWZ1bmN0aW9uKGEpe2ZvcihsZXQgYiBpbiBhKXJldHVybiExO3JldHVybiEwfTtfLk5jPWZ1bmN0aW9uKGEsYil7Zm9yKGxldCBlPTE7ZTxhcmd1bWVudHMubGVuZ3RoO2UrKyl7dmFyIGM9YXJndW1lbnRzW2VdO2ZvcihkIGluIGMpYVtkXT1jW2RdO2ZvcihsZXQgZj0wO2Y8TWMubGVuZ3RoO2YrKyl7dmFyIGQ9TWNbZl07T2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGMsZCkmJihhW2RdPWNbZF0pfX19OwpUYz1mdW5jdGlvbihhLGI9T2Mpe2lmKCFQYyl7bGV0IGQ7YT0oZD1hLm5hdmlnYXRvcik9PW51bGw/dm9pZCAwOmQudXNlckFnZW50RGF0YTtpZighYXx8dHlwZW9mIGEuZ2V0SGlnaEVudHJvcHlWYWx1ZXMhPT0iZnVuY3Rpb24ifHxhLmJyYW5kcyYmdHlwZW9mIGEuYnJhbmRzLm1hcCE9PSJmdW5jdGlvbiIpcmV0dXJuIFByb21pc2UucmVqZWN0KEVycm9yKCJHIikpO1FjKChhLmJyYW5kc3x8W10pLm1hcChlPT57dmFyIGY9bmV3IFJjO2Y9Xy55KGYsMSxlLmJyYW5kKTtyZXR1cm4gXy55KGYsMixlLnZlcnNpb24pfSkpO3R5cGVvZiBhLm1vYmlsZT09PSJib29sZWFuIiYmXy56KFNjLDIsYS5tb2JpbGUpO1BjPWEuZ2V0SGlnaEVudHJvcHlWYWx1ZXMoYil9dmFyIGM9bmV3IFNldChiKTtyZXR1cm4gUGMudGhlbihkPT57dmFyIGU9Xy4kYihTYyk7Yy5oYXMoInBsYXRmb3JtIikmJl8ueShlLDMsZC5wbGF0Zm9ybSk7Yy5oYXMoInBsYXRmb3JtVmVyc2lvbiIpJiZfLnkoZSw0LGQucGxhdGZvcm1WZXJzaW9uKTsKYy5oYXMoImFyY2hpdGVjdHVyZSIpJiZfLnkoZSw1LGQuYXJjaGl0ZWN0dXJlKTtjLmhhcygibW9kZWwiKSYmXy55KGUsNixkLm1vZGVsKTtjLmhhcygidWFGdWxsVmVyc2lvbiIpJiZfLnkoZSw3LGQudWFGdWxsVmVyc2lvbik7cmV0dXJuIGUubGEoKX0pLmNhdGNoKCgpPT5TYy5sYSgpKX07Xy5VYz1mdW5jdGlvbihhLGIsYyxkKXt0aGlzLnY9YTt0aGlzLkE9Yjt0aGlzLmo9dGhpcy5pPWE7dGhpcy5CPWN8fDA7dGhpcy5DPWR8fDJ9O18uVmM9ZnVuY3Rpb24oYSxiKXtiPT12b2lkIDAmJihiPSIiKTtyZXR1cm4gYSE9bnVsbD9hOmJ9O18uV2M9ZnVuY3Rpb24oYSxiKXtiPT12b2lkIDAmJihiPTApO3JldHVybiBhIT1udWxsP2E6Yn07WGM9ZnVuY3Rpb24oKXtyZXR1cm4ieHh4eHh4eHgteHh4eC00eHh4LXl4eHgteHh4eHh4eHh4eHh4Ii5yZXBsYWNlKC9beHldL2csZnVuY3Rpb24oYSl7dmFyIGI9TWF0aC5yYW5kb20oKSoxNnwwO3JldHVybihhPT0ieCI/YjpiJjN8OCkudG9TdHJpbmcoMTYpfSl9OwpfLlpjPWZ1bmN0aW9uKGEsYil7Xy5ZYy5jYWxsKHRoaXMsYT9hLnR5cGU6IiIpO3RoaXMucmVsYXRlZFRhcmdldD10aGlzLmk9dGhpcy50YXJnZXQ9bnVsbDt0aGlzLmJ1dHRvbj10aGlzLnNjcmVlblk9dGhpcy5zY3JlZW5YPXRoaXMuY2xpZW50WT10aGlzLmNsaWVudFg9MDt0aGlzLmtleT0iIjt0aGlzLmo9dGhpcy5rZXlDb2RlPTA7dGhpcy5tZXRhS2V5PXRoaXMuc2hpZnRLZXk9dGhpcy5hbHRLZXk9dGhpcy5jdHJsS2V5PSExO3RoaXMuc3RhdGU9bnVsbDt0aGlzLnBvaW50ZXJJZD0wO3RoaXMucG9pbnRlclR5cGU9IiI7dGhpcy50aW1lU3RhbXA9MDt0aGlzLllhPW51bGw7YSYmdGhpcy5pbml0KGEsYil9O2FkPWZ1bmN0aW9uKGEsYixjLGQsZSl7dGhpcy5saXN0ZW5lcj1hO3RoaXMucHJveHk9bnVsbDt0aGlzLnNyYz1iO3RoaXMudHlwZT1jO3RoaXMuY2FwdHVyZT0hIWQ7dGhpcy5IYz1lO3RoaXMua2V5PSsrJGM7dGhpcy5uYz10aGlzLnhjPSExfTsKYmQ9ZnVuY3Rpb24oYSl7dGhpcy5zcmM9YTt0aGlzLmk9e307dGhpcy5qPTB9O18uRD1mdW5jdGlvbigpe18ueC5jYWxsKHRoaXMpO3RoaXMuQ2E9bmV3IGJkKHRoaXMpO3RoaXMuaGc9dGhpczt0aGlzLlBjPW51bGx9O18uY2Q9ZnVuY3Rpb24oKXt9O18uZWQ9ZnVuY3Rpb24oYSl7YT1hLm1hdGNoKF8uZGQpWzFdfHxudWxsOyFhJiZfLnUuc2VsZiYmXy51LnNlbGYubG9jYXRpb24mJihhPV8udS5zZWxmLmxvY2F0aW9uLnByb3RvY29sLnNsaWNlKDAsLTEpKTtyZXR1cm4gYT9hLnRvTG93ZXJDYXNlKCk6IiJ9O18uZmQ9ZnVuY3Rpb24oYSxiLGMsZCl7dGhpcy50b3A9YTt0aGlzLnJpZ2h0PWI7dGhpcy5ib3R0b209Yzt0aGlzLmxlZnQ9ZH07Z2Q9ZnVuY3Rpb24oYSxiLGMsZCl7dGhpcy5sZWZ0PWE7dGhpcy50b3A9Yjt0aGlzLndpZHRoPWM7dGhpcy5oZWlnaHQ9ZH07Xy5qZD1mdW5jdGlvbigpe3JldHVybiBfLmhkPyJXZWJraXQiOl8uaWQ/Ik1veiI6bnVsbH07Cl8ua2Q9ZnVuY3Rpb24oYSl7Xy5ELmNhbGwodGhpcyk7dGhpcy5pPWE7dGhpcy5qPV8uRih0aGlzLmksImZvY3VzIix0aGlzLCEwKTt0aGlzLnY9Xy5GKHRoaXMuaSwiYmx1ciIsdGhpcywhMCl9O2xkPWZ1bmN0aW9uKCl7fTttZD1mdW5jdGlvbihhLGIsYyl7dGhpcy5qPWE7dGhpcy52PWI7dGhpcy5BPWN9O25kPWZ1bmN0aW9uKGEsYil7dGhpcy5qPWEgaW5zdGFuY2VvZiBfLkhjP2E6bmV3IF8uSGMoYSxiKX07c2Q9ZnVuY3Rpb24oKXtmb3IodmFyIGE7YT1vZCgpOyl7dHJ5e2Euai5jYWxsKGEuaSl9Y2F0Y2goYil7YmEoYil9cGQocWQsYSl9cmQ9ITF9O18udGQ9ZnVuY3Rpb24oYSl7Xy54LmNhbGwodGhpcyk7dGhpcy52PWE7dGhpcy5qPXt9fTt1ZD1mdW5jdGlvbihhLGIpe18uRC5jYWxsKHRoaXMpO3RoaXMuQT1uZXcgXy50ZCh0aGlzKTt0aGlzLlJjKGF8fG51bGwpO2ImJih0aGlzLlRiPWIpfTsKdmQ9ZnVuY3Rpb24oYSxiKXt0aGlzLm9hPTg7dGhpcy5TPWJ8fHZvaWQgMDt1ZC5jYWxsKHRoaXMsYSl9O3pkPWZ1bmN0aW9uKGEsYixjKXt0aGlzLkM9Y3x8KGE/Xy53ZChfLnhkKGRvY3VtZW50LGEpKTpfLndkKCkpO3ZkLmNhbGwodGhpcyx0aGlzLkMuSGEoIkRJViIse3N0eWxlOiJwb3NpdGlvbjphYnNvbHV0ZTtkaXNwbGF5Om5vbmU7In0pKTt0aGlzLk89bmV3IF8uSGMoMSwxKTt0aGlzLkI9bmV3IFNldDt0aGlzLnY9bnVsbDthJiYoYT1fLnhkKGRvY3VtZW50LGEpLHRoaXMuQi5hZGQoYSksXy5GKGEsIm1vdXNlb3ZlciIsdGhpcy5WLCExLHRoaXMpLF8uRihhLCJtb3VzZW91dCIsdGhpcy5MLCExLHRoaXMpLF8uRihhLCJtb3VzZW1vdmUiLHRoaXMuWiwhMSx0aGlzKSxfLkYoYSwiZm9jdXMiLHRoaXMuUiwhMSx0aGlzKSxfLkYoYSwiYmx1ciIsdGhpcy5MLCExLHRoaXMpKTtiIT1udWxsJiZfLnlkKHRoaXMuSigpLGIpfTtBZD1PYmplY3QuZGVmaW5lUHJvcGVydHk7CkJkPWZ1bmN0aW9uKGEpe2E9WyJvYmplY3QiPT10eXBlb2YgZ2xvYmFsVGhpcyYmZ2xvYmFsVGhpcyxhLCJvYmplY3QiPT10eXBlb2Ygd2luZG93JiZ3aW5kb3csIm9iamVjdCI9PXR5cGVvZiBzZWxmJiZzZWxmLCJvYmplY3QiPT10eXBlb2YgZ2xvYmFsJiZnbG9iYWxdO2Zvcih2YXIgYj0wO2I8YS5sZW5ndGg7KytiKXt2YXIgYz1hW2JdO2lmKGMmJmMuTWF0aD09TWF0aClyZXR1cm4gY310aHJvdyBFcnJvcigiYSIpO307Q2Q9QmQodGhpcyk7RGQ9ZnVuY3Rpb24oYSxiKXtpZihiKWE6e3ZhciBjPUNkO2E9YS5zcGxpdCgiLiIpO2Zvcih2YXIgZD0wO2Q8YS5sZW5ndGgtMTtkKyspe3ZhciBlPWFbZF07aWYoIShlIGluIGMpKWJyZWFrIGE7Yz1jW2VdfWE9YVthLmxlbmd0aC0xXTtkPWNbYV07Yj1iKGQpO2IhPWQmJmIhPW51bGwmJkFkKGMsYSx7Y29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwLHZhbHVlOmJ9KX19O0RkKCJnbG9iYWxUaGlzIixmdW5jdGlvbihhKXtyZXR1cm4gYXx8Q2R9KTsKRGQoIlN5bWJvbC5kaXNwb3NlIixmdW5jdGlvbihhKXtyZXR1cm4gYT9hOlN5bWJvbCgiYiIpfSk7dmFyIEVkLEdkLEhkLExkLE1kO0VkPUVkfHx7fTtfLnU9dGhpc3x8c2VsZjtHZD1mdW5jdGlvbihhLGIpe3ZhciBjPV8uRmQoIldJWl9nbG9iYWxfZGF0YS5veE4zbmIiKTthPWMmJmNbYV07cmV0dXJuIGEhPW51bGw/YTpifTtIZD1fLnUuX0ZfdG9nZ2xlc19nYmFyX3x8W107Xy5GZD1mdW5jdGlvbihhLGIpe2E9YS5zcGxpdCgiLiIpO2I9Ynx8Xy51O2Zvcih2YXIgYz0wO2M8YS5sZW5ndGg7YysrKWlmKGI9YlthW2NdXSxiPT1udWxsKXJldHVybiBudWxsO3JldHVybiBifTtfLmNiPWZ1bmN0aW9uKGEpe3ZhciBiPXR5cGVvZiBhO3JldHVybiBiIT0ib2JqZWN0Ij9iOmE/QXJyYXkuaXNBcnJheShhKT8iYXJyYXkiOmI6Im51bGwifTtfLklkPWZ1bmN0aW9uKGEpe3ZhciBiPV8uY2IoYSk7cmV0dXJuIGI9PSJhcnJheSJ8fGI9PSJvYmplY3QiJiZ0eXBlb2YgYS5sZW5ndGg9PSJudW1iZXIifTsKXy5KZD1mdW5jdGlvbihhKXt2YXIgYj10eXBlb2YgYTtyZXR1cm4gYj09Im9iamVjdCImJmEhPW51bGx8fGI9PSJmdW5jdGlvbiJ9O18uS2Q9ImNsb3N1cmVfdWlkXyIrKE1hdGgucmFuZG9tKCkqMUU5Pj4+MCk7TGQ9ZnVuY3Rpb24oYSxiLGMpe3JldHVybiBhLmNhbGwuYXBwbHkoYS5iaW5kLGFyZ3VtZW50cyl9O18uRz1mdW5jdGlvbihhLGIsYyl7Xy5HPUxkO3JldHVybiBfLkcuYXBwbHkobnVsbCxhcmd1bWVudHMpfTtNZD1mdW5jdGlvbihhLGIpe3ZhciBjPUFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cywxKTtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgZD1jLnNsaWNlKCk7ZC5wdXNoLmFwcGx5KGQsYXJndW1lbnRzKTtyZXR1cm4gYS5hcHBseSh0aGlzLGQpfX07Cl8uTmQ9ZnVuY3Rpb24oYSxiKXthPWEuc3BsaXQoIi4iKTtmb3IodmFyIGM9Xy51LGQ7YS5sZW5ndGgmJihkPWEuc2hpZnQoKSk7KWEubGVuZ3RofHxiPT09dm9pZCAwP2NbZF0mJmNbZF0hPT1PYmplY3QucHJvdG90eXBlW2RdP2M9Y1tkXTpjPWNbZF09e306Y1tkXT1ifTtfLkRiPWZ1bmN0aW9uKGEpe3JldHVybiBhfTtfLkg9ZnVuY3Rpb24oYSxiKXtmdW5jdGlvbiBjKCl7fWMucHJvdG90eXBlPWIucHJvdG90eXBlO2EuVz1iLnByb3RvdHlwZTthLnByb3RvdHlwZT1uZXcgYzthLnByb3RvdHlwZS5jb25zdHJ1Y3Rvcj1hO2EuUGw9ZnVuY3Rpb24oZCxlLGYpe2Zvcih2YXIgZz1BcnJheShhcmd1bWVudHMubGVuZ3RoLTIpLGg9MjtoPGFyZ3VtZW50cy5sZW5ndGg7aCsrKWdbaC0yXT1hcmd1bWVudHNbaF07cmV0dXJuIGIucHJvdG90eXBlW2VdLmFwcGx5KGQsZyl9fTtfLkgoXy5hYSxFcnJvcik7Xy5hYS5wcm90b3R5cGUubmFtZT0iQ3VzdG9tRXJyb3IiO3ZhciBPZDtfLlBkPXR5cGVvZiBUZXh0RGVjb2RlciE9PSJ1bmRlZmluZWQiO18uUWQ9dHlwZW9mIFRleHRFbmNvZGVyIT09InVuZGVmaW5lZCI7dmFyIFJkPSEhKEhkWzBdPj4yNSYxKSxTZD0hIShIZFswXT4+MjAmMSksVGQ9ISEoSGRbMF0+PjI3JjEpLFVkPSEhKEhkWzBdJjgxOTIpO3ZhciBqYT1SZD9UZDpHZCg2MTA0MDEzMDEsITEpLFNiPVJkP1NkfHwhVWQ6R2QoNzQ4NDAyMTQ3LCEwKTt2YXIga2EsVmQ9Xy51Lm5hdmlnYXRvcjtrYT1WZD9WZC51c2VyQWdlbnREYXRhfHxudWxsOm51bGw7Xy53YT1mdW5jdGlvbihhLGIpe3JldHVybiBBcnJheS5wcm90b3R5cGUuaW5kZXhPZi5jYWxsKGEsYix2b2lkIDApfTtfLldkPWZ1bmN0aW9uKGEsYixjKXtBcnJheS5wcm90b3R5cGUuZm9yRWFjaC5jYWxsKGEsYixjKX07Xy5YZD1mdW5jdGlvbihhLGIpe3JldHVybiBBcnJheS5wcm90b3R5cGUuc29tZS5jYWxsKGEsYix2b2lkIDApfTt2YXIgWWQ9ZnVuY3Rpb24oYSl7WWRbIiAiXShhKTtyZXR1cm4gYX07WWRbIiAiXT1mdW5jdGlvbigpe307Xy5aZD1mdW5jdGlvbihhLGIpe3RyeXtyZXR1cm4gWWQoYVtiXSksITB9Y2F0Y2goYyl7fXJldHVybiExfTt2YXIgJGQsYmUsZGUsZWUsZmUsZ2UsaGUsaWUsamU7JGQ9Xy5uYSgpO18uYWU9Xy5vYSgpO2JlPV8udigiRWRnZSIpO18uaWQ9Xy52KCJHZWNrbyIpJiYhKF8uZmEoKSYmIV8udigiRWRnZSIpKSYmIShfLnYoIlRyaWRlbnQiKXx8Xy52KCJNU0lFIikpJiYhXy52KCJFZGdlIik7Xy5oZD1fLmZhKCkmJiFfLnYoIkVkZ2UiKTtfLmNlPXZhKCk7ZGU9c2EoKT9rYS5wbGF0Zm9ybT09PSJXaW5kb3dzIjpfLnYoIldpbmRvd3MiKTtlZT1zYSgpP2thLnBsYXRmb3JtPT09IkFuZHJvaWQiOl8udigiQW5kcm9pZCIpO2ZlPXRhKCk7Z2U9Xy52KCJpUGFkIik7aGU9Xy52KCJpUG9kIik7aWU9dWEoKTsKYTp7bGV0IGE9IiIsYj1mdW5jdGlvbigpe3ZhciBjPWVhKCk7aWYoXy5pZClyZXR1cm4vcnY6KFteXCk7XSspKFwpfDspLy5leGVjKGMpO2lmKGJlKXJldHVybi9FZGdlXC8oW1xkXC5dKykvLmV4ZWMoYyk7aWYoXy5hZSlyZXR1cm4vXGIoPzpNU0lFfHJ2KVs6IF0oW15cKTtdKykoXCl8OykvLmV4ZWMoYyk7aWYoXy5oZClyZXR1cm4vV2ViS2l0XC8oXFMrKS8uZXhlYyhjKTtpZigkZClyZXR1cm4vKD86VmVyc2lvbilbIFwvXT8oXFMrKS8uZXhlYyhjKX0oKTtiJiYoYT1iP2JbMV06IiIpO2lmKF8uYWUpe3ZhciBrZTtsZXQgYz1fLnUuZG9jdW1lbnQ7a2U9Yz9jLmRvY3VtZW50TW9kZTp2b2lkIDA7aWYoa2UhPW51bGwmJmtlPnBhcnNlRmxvYXQoYSkpe2plPVN0cmluZyhrZSk7YnJlYWsgYX19amU9YX12YXIgbGU9amU7dmFyIG1lLG5lLG9lLHBlLHJlO21lPV8ucGEoKTtuZT10YSgpfHxfLnYoImlQb2QiKTtvZT1fLnYoImlQYWQiKTtwZT1fLnYoIkFuZHJvaWQiKSYmIShxYSgpfHxfLnBhKCl8fF8ubmEoKXx8Xy52KCJTaWxrIikpO18ucWU9cWEoKTtyZT1fLnJhKCkmJiF1YSgpO3ZhciBzZT17fSx0ZT1udWxsO3ZhciBDYT12b2lkIDA7dmFyIHVlLEdiLFZiLEhhLFBiLHdlO18uRWI9Xy5GYSgpO3VlPV8uRmEoKTtHYj1fLkZhKCk7Xy52ZT1fLkZhKCk7VmI9Xy5GYSgpO0hhPV8uRmEoIm1fbSIsITApO1BiPV8uRmEoKTt3ZT1fLkZhKCk7dmFyIHhlO18udz1fLkZhKCJqYXMiLCEwKTt4ZT1bXTt4ZVtfLnddPTc7Xy5oYz1PYmplY3QuZnJlZXplKHhlKTt2YXIgSWEsS2E7SWE9e307S2E9e307Xy55ZT1PYmplY3QuZnJlZXplKHt9KTtfLkk9e307Xy56ZT1fLk1hKGE9PmEhPT1udWxsJiZhIT09dm9pZCAwKTt2YXIgT2E9Xy5NYShhPT50eXBlb2YgYT09PSJudW1iZXIiKSxOYT1fLk1hKGE9PnR5cGVvZiBhPT09InN0cmluZyIpLFFhPV8uTWEoYT0+dHlwZW9mIGE9PT0iYm9vbGVhbiIpO3ZhciBQYT10eXBlb2YgXy51LkJpZ0ludD09PSJmdW5jdGlvbiImJnR5cGVvZiBfLnUuQmlnSW50KDApPT09ImJpZ2ludCI7dmFyIExiPV8uTWEoYT0+UGE/YT49QWUmJmE8PUJlOmFbMF09PT0iLSI/U2EoYSxDZSk6U2EoYSxEZSkpLENlPU51bWJlci5NSU5fU0FGRV9JTlRFR0VSLnRvU3RyaW5nKCksQWU9UGE/QmlnSW50KE51bWJlci5NSU5fU0FGRV9JTlRFR0VSKTp2b2lkIDAsRGU9TnVtYmVyLk1BWF9TQUZFX0lOVEVHRVIudG9TdHJpbmcoKSxCZT1QYT9CaWdJbnQoTnVtYmVyLk1BWF9TQUZFX0lOVEVHRVIpOnZvaWQgMDtfLlRhPTA7Xy5VYT0wO3ZhciB3Yix2YixnYjtfLm5iPXR5cGVvZiBCaWdJbnQ9PT0iZnVuY3Rpb24iP0JpZ0ludC5hc0ludE46dm9pZCAwO3diPU51bWJlci5pc1NhZmVJbnRlZ2VyO18uZmI9TnVtYmVyLmlzRmluaXRlO3ZiPU1hdGgudHJ1bmM7Z2I9L14tPyhbMS05XVswLTldKnwwKShcLlswLTldKyk/JC87dmFyIFFiPXt9O3ZhciBFZT17Vmg6ITB9O3ZhciBJYjt2YXIgRmUsR2UsTmU7RmU9Xy5SYSgwKTtHZT17fTtfLkhlPWZ1bmN0aW9uKGEsYixjLGQsZSl7Yj1fLm5jKGEuZGEsYixjLGUpO2lmKGIhPT1udWxsfHxkJiZhLnYhPT1LYSlyZXR1cm4gYn07Xy5uYz1mdW5jdGlvbihhLGIsYyxkKXtpZihiPT09LTEpcmV0dXJuIG51bGw7dmFyIGU9YisoYz8wOi0xKSxmPWEubGVuZ3RoLTE7aWYoIShmPDErKGM/MDotMSkpKXtpZihlPj1mKXt2YXIgZz1hW2ZdO2lmKGchPW51bGwmJnR5cGVvZiBnPT09Im9iamVjdCImJmcuY29uc3RydWN0b3I9PT1PYmplY3Qpe2M9Z1tiXTt2YXIgaD0hMH1lbHNlIGlmKGU9PT1mKWM9ZztlbHNlIHJldHVybn1lbHNlIGM9YVtlXTtpZihkJiZjIT1udWxsKXtkPWQoYyk7aWYoZD09bnVsbClyZXR1cm4gZDtpZighT2JqZWN0LmlzKGQsYykpcmV0dXJuIGg/Z1tiXT1kOmFbZV09ZCxkfXJldHVybiBjfX07Cl8uSWU9ZnVuY3Rpb24oYSxiLGMsZCl7Xy5jYyhhKTt2YXIgZT1hLmRhO18uZWMoZSxlW18ud118MCxiLGMsZCk7cmV0dXJuIGF9O18uSmU9ZnVuY3Rpb24oYSl7cmV0dXJuIGE9PT1fLnllPzI6NH07Xy5KPWZ1bmN0aW9uKGEsYixjLGQpe3ZhciBlPWEuZGEsZj1lW18ud118MDtiPV8ub2MoZSxmLGIsYyxkKTtpZihiPT1udWxsKXJldHVybiBiO2Y9ZVtfLnddfDA7aWYoIV8uTGEoYSxmKSl7bGV0IGc9YWMoYik7ZyE9PWImJihfLmJjKGEpJiYoZT1hLmRhLGY9ZVtfLnddfDApLGI9ZyxmPV8uZWMoZSxmLGMsYixkKSxkYyhlLGYpKX1yZXR1cm4gYn07Cl8uS2U9ZnVuY3Rpb24oYSxiLGMsZCl7dmFyIGU9YS5kYSxmPWU7ZT1lW18ud118MDt2YXIgZz1fLkxhKGEsZSksaD1nPzE6ZDtkPWg9PT0zO3ZhciBrPSFnOyhoPT09Mnx8aykmJl8uYmMoYSkmJihmPWEuZGEsZT1mW18ud118MCk7YT1mYyhmLGMpO3ZhciBsPWE9PT1fLmhjPzc6YVtfLnddfDAsbT1pYyhsLGUpO2lmKGc9ISg0Jm0pKXt2YXIgbj1hLHI9ZTtsZXQgcT0hISgyJm0pO3EmJihyfD0yKTtsZXQgdD0hcSxCPSEwLEM9MCxFPTA7Zm9yKDtDPG4ubGVuZ3RoO0MrKyl7bGV0IEE9QWIobltDXSxiLHIpO2lmKEEgaW5zdGFuY2VvZiBiKXtpZighcSl7bGV0IFI9Xy5MYShBKTt0JiYodD0hUik7QiYmKEI9Uil9bltFKytdPUF9fUU8QyYmKG4ubGVuZ3RoPUUpO218PTQ7bT1CP20mLTQwOTc6bXw0MDk2O209dD9tfDg6bSYtOX1tIT09bCYmKGFbXy53XT1tLDImbSYmT2JqZWN0LmZyZWV6ZShhKSk7aWYoayYmISg4Jm18fCFhLmxlbmd0aCYmKGg9PT0xfHwoaCE9PTQ/MDoyJm18fCEoMTYmCm0pJiYzMiZlKSkpKXtfLm1jKG0pJiYoYT1bLi4uYV0sbT1fLmpjKG0sZSksZT1fLmVjKGYsZSxjLGEpKTtiPWE7az1tO2ZvcihsPTA7bDxiLmxlbmd0aDtsKyspbj1iW2xdLG09YWMobiksbiE9PW0mJihiW2xdPW0pO2t8PTg7bT1rPWIubGVuZ3RoP2t8NDA5NjprJi00MDk3O2FbXy53XT1tfXJldHVybiBhPWtjKGEsbSxmLGUsYyx2b2lkIDAsaCxnLGQpfTtfLks9ZnVuY3Rpb24oYSxiLGMpe2M9PW51bGwmJihjPXZvaWQgMCk7Xy5JZShhLGIsYyk7YyYmIV8uTGEoYykmJmRjKGEuZGEpO3JldHVybiBhfTsKXy5MZT1mdW5jdGlvbihhLGIsYyl7Xy5jYyhhKTt2YXIgZD1hLmRhLGU9ZFtfLnddfDA7aWYoYz09bnVsbClyZXR1cm4gXy5lYyhkLGUsYiksYTt2YXIgZj1jPT09Xy5oYz83OmNbXy53XXwwLGc9ZixoPV8ubWMoZiksaz1ofHxPYmplY3QuaXNGcm96ZW4oYyksbD0hMCxtPSEwO2ZvcihsZXQgcj0wO3I8Yy5sZW5ndGg7cisrKXt2YXIgbj1jW3JdO2h8fChuPV8uTGEobiksbCYmKGw9IW4pLG0mJihtPW4pKX1ofHwoZj1sPzEzOjUsZj1tP2YmLTQwOTc6Znw0MDk2KTtrJiZmPT09Z3x8KGM9Wy4uLmNdLGc9MCxmPV8uamMoZixlKSk7ZiE9PWcmJihjW18ud109Zik7ZT1fLmVjKGQsZSxiLGMpOzImZnx8ISg0MDk2JmZ8fDE2JmYpfHxkYyhkLGUpO3JldHVybiBhfTtfLk1lPWZ1bmN0aW9uKGEsYixjLGQpe3JldHVybiBfLmpiKF8uSGUoYSxiLGMsZCkpfTtfLkw9ZnVuY3Rpb24oYSxiLGM9ITEsZCl7dmFyIGU7cmV0dXJuKGU9Xy5lYihfLkhlKGEsYixkKSkpIT1udWxsP2U6Y307Cl8uTT1mdW5jdGlvbihhLGIsYz0wKXt2YXIgZDtyZXR1cm4oZD1fLmxiKF8uSGUoYSxiKSkpIT1udWxsP2Q6Y307TmU9ZnVuY3Rpb24oYSxiLGM9RmUpe2E9Xy5IZShhLGIsdm9pZCAwLHZvaWQgMCx4Yik7cmV0dXJuIGEhPW51bGw/YTpjfTtfLk49ZnVuY3Rpb24oYSxiLGM9IiIsZCl7dmFyIGU7cmV0dXJuKGU9Xy56YihfLkhlKGEsYixkKSkpIT1udWxsP2U6Y307Xy5PPWZ1bmN0aW9uKGEsYixjPTApe3ZhciBkO3JldHVybihkPV8uTWUoYSxiKSkhPW51bGw/ZDpjfTtfLk9lPWZ1bmN0aW9uKGEsYil7cmV0dXJuIF8uZWIoXy5IZShhLGIsdm9pZCAwLEdlKSl9O18uUGU9ZnVuY3Rpb24oYSxiKXtyZXR1cm4gXy5sYihfLkhlKGEsYix2b2lkIDAsR2UpKX07Xy5QPWZ1bmN0aW9uKGEsYil7cmV0dXJuIF8uemIoXy5IZShhLGIsdm9pZCAwLEdlKSl9O18uUT1mdW5jdGlvbihhLGIpe3JldHVybiBfLk1lKGEsYix2b2lkIDAsR2UpfTsKXy56PWZ1bmN0aW9uKGEsYixjLGQpe3JldHVybiBfLkllKGEsYixjPT1udWxsP2M6Xy5kYihjKSxkKX07Xy5TPWZ1bmN0aW9uKGEsYixjKXtyZXR1cm4gXy5JZShhLGIsYz09bnVsbD9jOl8ua2IoYykpfTtfLlFlPWZ1bmN0aW9uKGEsYixjKXtyZXR1cm4gXy5JZShhLGIsXy50YihjKSl9O18ueT1mdW5jdGlvbihhLGIsYyxkKXtyZXR1cm4gXy5JZShhLGIsXy55YihjKSxkKX07Xy5UPWZ1bmN0aW9uKGEsYixjLGQpe3JldHVybiBfLkllKGEsYixjPT1udWxsP2M6Xy5pYihjKSxkKX07Xy5SZT1xYygpO18uU2U9cWMoKTtfLlRlPXFjKCk7Xy5VZT1xYygpO18uVT1jbGFzc3tjb25zdHJ1Y3RvcihhLGIsYyl7dGhpcy5kYT1fLlViKGEsYixjLDIwNDgpfXRvSlNPTigpe3JldHVybiBSYih0aGlzKX1sYShhKXtyZXR1cm4gSlNPTi5zdHJpbmdpZnkoUmIodGhpcyxhKSl9fTtfLlUucHJvdG90eXBlW0hhXT1JYTtfLlUucHJvdG90eXBlLnRvU3RyaW5nPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZGEudG9TdHJpbmcoKX07Xy5WZT1TeW1ib2woKTt2YXIgWGU9Y2xhc3N7Y29uc3RydWN0b3IoYSl7dmFyIGI9V2U7dGhpcy5pPTE3NTIzNzM3NTt0aGlzLmo9YTt0aGlzLnY9Xy5KO3RoaXMuZGVmYXVsdFZhbHVlPXZvaWQgMDt0aGlzLkE9Yi5DYiE9bnVsbD9fLkk6dm9pZCAwfXJlZ2lzdGVyKCl7WWQodGhpcyl9fTtfLlllPWNsYXNzIGV4dGVuZHMgXy5Ve2NvbnN0cnVjdG9yKGEpe3N1cGVyKGEpfX07dmFyIFplPWNsYXNzIGV4dGVuZHMgXy5Ve2NvbnN0cnVjdG9yKGEpe3N1cGVyKGEpfX07dmFyICRlPWZ1bmN0aW9uKGEpe2lmKCFhKXJldHVybiIiO2lmKC9eYWJvdXQ6KD86Ymxhbmt8c3JjZG9jKSQvLnRlc3QoYSkpcmV0dXJuIHdpbmRvdy5vcmlnaW58fCIiO2EuaW5kZXhPZigiYmxvYjoiKT09PTAmJihhPWEuc3Vic3RyaW5nKDUpKTthPWEuc3BsaXQoIiMiKVswXS5zcGxpdCgiPyIpWzBdO2E9YS50b0xvd2VyQ2FzZSgpO2EuaW5kZXhPZigiLy8iKT09MCYmKGE9d2luZG93LmxvY2F0aW9uLnByb3RvY29sK2EpOy9eW1x3XC1dKjpcL1wvLy50ZXN0KGEpfHwoYT13aW5kb3cubG9jYXRpb24uaHJlZik7dmFyIGI9YS5zdWJzdHJpbmcoYS5pbmRleE9mKCI6Ly8iKSszKSxjPWIuaW5kZXhPZigiLyIpO2MhPS0xJiYoYj1iLnN1YnN0cmluZygwLGMpKTtjPWEuc3Vic3RyaW5nKDAsYS5pbmRleE9mKCI6Ly8iKSk7aWYoIWMpdGhyb3cgRXJyb3IoInVgIithKTtpZihjIT09Imh0dHAiJiZjIT09Imh0dHBzIiYmYyE9PSJjaHJvbWUtZXh0ZW5zaW9uIiYmYyE9PSJtb3otZXh0ZW5zaW9uIiYmCmMhPT0iZmlsZSImJmMhPT0iYW5kcm9pZC1hcHAiJiZjIT09ImNocm9tZS1zZWFyY2giJiZjIT09ImNocm9tZS11bnRydXN0ZWQiJiZjIT09ImNocm9tZSImJmMhPT0iYXBwIiYmYyE9PSJkZXZ0b29scyIpdGhyb3cgRXJyb3IoInZgIitjKTthPSIiO3ZhciBkPWIuaW5kZXhPZigiOiIpO2lmKGQhPS0xKXt2YXIgZT1iLnN1YnN0cmluZyhkKzEpO2I9Yi5zdWJzdHJpbmcoMCxkKTtpZihjPT09Imh0dHAiJiZlIT09IjgwInx8Yz09PSJodHRwcyImJmUhPT0iNDQzIilhPSI6IitlfXJldHVybiBjKyI6Ly8iK2IrYX07dmFyIGJmPWZ1bmN0aW9uKGEsYixjKXt2YXIgZD1TdHJpbmcoXy51LmxvY2F0aW9uLmhyZWYpO3JldHVybiBkJiZhJiZiP1tiLGFmKCRlKGQpLGEsY3x8bnVsbCldLmpvaW4oIiAiKTpudWxsfSxhZj1mdW5jdGlvbihhLGIsYyl7dmFyIGQ9W10sZT1bXTtpZigoQXJyYXkuaXNBcnJheShjKT8yOjEpPT0xKXJldHVybiBlPVtiLGFdLF8uV2QoZCxmdW5jdGlvbihoKXtlLnB1c2goaCl9KSxjZihlLmpvaW4oIiAiKSk7dmFyIGY9W10sZz1bXTtfLldkKGMsZnVuY3Rpb24oaCl7Zy5wdXNoKGgua2V5KTtmLnB1c2goaC52YWx1ZSl9KTtjPU1hdGguZmxvb3IoKG5ldyBEYXRlKS5nZXRUaW1lKCkvMUUzKTtlPWYubGVuZ3RoPT0wP1tjLGIsYV06W2Yuam9pbigiOiIpLGMsYixhXTtfLldkKGQsZnVuY3Rpb24oaCl7ZS5wdXNoKGgpfSk7YT1jZihlLmpvaW4oIiAiKSk7YT1bYyxhXTtnLmxlbmd0aD09MHx8YS5wdXNoKGcuam9pbigiIikpO3JldHVybiBhLmpvaW4oIl8iKX0sY2Y9ZnVuY3Rpb24oYSl7dmFyIGI9CnNjKCk7Yi51cGRhdGUoYSk7cmV0dXJuIGIuR2coKS50b0xvd2VyQ2FzZSgpfTt2YXIgZGY9Z2xvYmFsVGhpcy50cnVzdGVkVHlwZXMsdGM9ZGYsdmM7Xy54Yz1jbGFzc3tjb25zdHJ1Y3RvcihhKXt0aGlzLmk9YX10b1N0cmluZygpe3JldHVybiB0aGlzLml9fTtfLmVmPW5ldyBfLnhjKCJhYm91dDppbnZhbGlkI3pDbG9zdXJleiIpO3ZhciBCYztfLnpjPWNsYXNze2NvbnN0cnVjdG9yKGEpe3RoaXMubWg9YX19O18uZmY9W0FjKCJkYXRhIiksQWMoImh0dHAiKSxBYygiaHR0cHMiKSxBYygibWFpbHRvIiksQWMoImZ0cCIpLG5ldyBfLnpjKGE9Pi9eW146XSooWy8/I118JCkvLnRlc3QoYSkpXTtCYz0vXlxzKig/IWphdmFzY3JpcHQ6KSg/OltcdysuLV0rOnxbXjovPyNdKig/OlsvPyNdfCQpKS9pO18uZ2Y9Y2xhc3N7Y29uc3RydWN0b3IoYSl7dGhpcy5pPWF9dG9TdHJpbmcoKXtyZXR1cm4gdGhpcy5pKyIifX07Xy5oZj1uZXcgXy5nZihkZj9kZi5lbXB0eUhUTUw6IiIpO3ZhciBqZjtqZj1mdW5jdGlvbihhKXtyZXR1cm4gU3RyaW5nKGEpLnJlcGxhY2UoL1wtKFthLXpdKS9nLGZ1bmN0aW9uKGIsYyl7cmV0dXJuIGMudG9VcHBlckNhc2UoKX0pfTtfLmtmPWZ1bmN0aW9uKGEpe3JldHVybiBhLnJlcGxhY2UoUmVnRXhwKCIoXnxbXFxzXSspKFthLXpdKSIsImciKSxmdW5jdGlvbihiLGMsZCl7cmV0dXJuIGMrZC50b1VwcGVyQ2FzZSgpfSl9O3ZhciBtZjtGYy5wcm90b3R5cGUuc2V0PWZ1bmN0aW9uKGEsYixjKXt2YXIgZD0hMTtpZih0eXBlb2YgYz09PSJvYmplY3QiKXt2YXIgZT1jLnNhbWVTaXRlO2Q9Yy5zZWN1cmV8fCExO3ZhciBmPWMuZG9tYWlufHx2b2lkIDA7dmFyIGc9Yy5wYXRofHx2b2lkIDA7dmFyIGg9Yy5NY31pZigvWzs9XHNdLy50ZXN0KGEpKXRocm93IEVycm9yKCJEYCIrYSk7aWYoL1s7XHJcbl0vLnRlc3QoYikpdGhyb3cgRXJyb3IoIkVgIitiKTtoPT09dm9pZCAwJiYoaD0tMSk7dGhpcy5pLmNvb2tpZT1hKyI9IitiKyhmPyI7ZG9tYWluPSIrZjoiIikrKGc/IjtwYXRoPSIrZzoiIikrKGg8MD8iIjpoPT0wPyI7ZXhwaXJlcz0iKyhuZXcgRGF0ZSgxOTcwLDEsMSkpLnRvVVRDU3RyaW5nKCk6IjtleHBpcmVzPSIrKG5ldyBEYXRlKERhdGUubm93KCkraCoxRTMpKS50b1VUQ1N0cmluZygpKSsoZD8iO3NlY3VyZSI6IiIpKyhlIT1udWxsPyI7c2FtZXNpdGU9IitlOiIiKX07CkZjLnByb3RvdHlwZS5nZXQ9ZnVuY3Rpb24oYSxiKXt2YXIgYz1hKyI9IixkPSh0aGlzLmkuY29va2llfHwiIikuc3BsaXQoIjsiKTtmb3IobGV0IGU9MCxmO2U8ZC5sZW5ndGg7ZSsrKXtmPWRbZV0udHJpbSgpO2lmKGYubGFzdEluZGV4T2YoYywwKT09MClyZXR1cm4gZi5zbGljZShjLmxlbmd0aCk7aWYoZj09YSlyZXR1cm4iIn1yZXR1cm4gYn07Xy5sZj1mdW5jdGlvbihhLGIpe2EuZ2V0KGIpO2Euc2V0KGIsIiIse01jOjAscGF0aDp2b2lkIDAsZG9tYWluOnZvaWQgMH0pfTtGYy5wcm90b3R5cGUucmI9ZnVuY3Rpb24oKXtyZXR1cm4gbWYodGhpcykua2V5c307RmMucHJvdG90eXBlLlBhPWZ1bmN0aW9uKCl7cmV0dXJuIG1mKHRoaXMpLnZhbHVlc307RmMucHJvdG90eXBlLnpiPWZ1bmN0aW9uKCl7cmV0dXJuIXRoaXMuaS5jb29raWV9OwpGYy5wcm90b3R5cGUuY2xlYXI9ZnVuY3Rpb24oKXt2YXIgYT1tZih0aGlzKS5rZXlzO2ZvcihsZXQgYj1hLmxlbmd0aC0xO2I+PTA7Yi0tKV8ubGYodGhpcyxhW2JdKX07bWY9ZnVuY3Rpb24oYSl7YT0oYS5pLmNvb2tpZXx8IiIpLnNwbGl0KCI7Iik7dmFyIGI9W10sYz1bXTtmb3IobGV0IGY9MDtmPGEubGVuZ3RoO2YrKyl7dmFyIGQ9YVtmXS50cmltKCk7dmFyIGU9ZC5pbmRleE9mKCI9Iik7ZT09LTE/KGIucHVzaCgiIiksYy5wdXNoKGQpKTooYi5wdXNoKGQuc3Vic3RyaW5nKDAsZSkpLGMucHVzaChkLnN1YnN0cmluZyhlKzEpKSl9cmV0dXJue2tleXM6Yix2YWx1ZXM6Y319O18ubmY9bmV3IEZjKHR5cGVvZiBkb2N1bWVudD09InVuZGVmaW5lZCI/bnVsbDpkb2N1bWVudCk7dmFyIG9mO29mPWZ1bmN0aW9uKGEsYixjLGQpeyhhPV8udVthXSl8fHR5cGVvZiBkb2N1bWVudD09PSJ1bmRlZmluZWQifHwoYT0obmV3IEZjKGRvY3VtZW50KSkuZ2V0KGIpKTtyZXR1cm4gYT9iZihhLGMsZCk6bnVsbH07Cl8ucGY9ZnVuY3Rpb24oYSl7dmFyIGI9JGUoXy51PT1udWxsP3ZvaWQgMDpfLnUubG9jYXRpb24uaHJlZiksYz1bXSxkOyhkPV8udS5fX1NBUElTSUR8fF8udS5fX0FQSVNJRHx8Xy51Ll9fM1BTQVBJU0lEfHxfLnUuX18xUFNBUElTSUR8fF8udS5fX09WRVJSSURFX1NJRCk/ZD0hMDoodHlwZW9mIGRvY3VtZW50IT09InVuZGVmaW5lZCImJihkPW5ldyBGYyhkb2N1bWVudCksZD1kLmdldCgiU0FQSVNJRCIpfHxkLmdldCgiQVBJU0lEIil8fGQuZ2V0KCJfX1NlY3VyZS0zUEFQSVNJRCIpfHxkLmdldCgiX19TZWN1cmUtMVBBUElTSUQiKSksZD0hIWQpO2lmKGQpe3ZhciBlPShkPWI9Yi5pbmRleE9mKCJodHRwczoiKT09MHx8Yi5pbmRleE9mKCJjaHJvbWUtZXh0ZW5zaW9uOiIpPT0wfHxiLmluZGV4T2YoImNocm9tZS11bnRydXN0ZWQ6Ly9uZXctdGFiLXBhZ2UiKT09MHx8Yi5pbmRleE9mKCJtb3otZXh0ZW5zaW9uOiIpPT0wKT9fLnUuX19TQVBJU0lEOl8udS5fX0FQSVNJRDtlfHx0eXBlb2YgZG9jdW1lbnQ9PT0KInVuZGVmaW5lZCJ8fChlPW5ldyBGYyhkb2N1bWVudCksZT1lLmdldChkPyJTQVBJU0lEIjoiQVBJU0lEIil8fGUuZ2V0KCJfX1NlY3VyZS0zUEFQSVNJRCIpKTsoZD1lP2JmKGUsZD8iU0FQSVNJREhBU0giOiJBUElTSURIQVNIIixhKTpudWxsKSYmYy5wdXNoKGQpO2ImJigoYj1vZigiX18xUFNBUElTSUQiLCJfX1NlY3VyZS0xUEFQSVNJRCIsIlNBUElTSUQxUEhBU0giLGEpKSYmYy5wdXNoKGIpLChhPW9mKCJfXzNQU0FQSVNJRCIsIl9fU2VjdXJlLTNQQVBJU0lEIiwiU0FQSVNJRDNQSEFTSCIsYSkpJiZjLnB1c2goYSkpfXJldHVybiBjLmxlbmd0aD09MD9udWxsOmMuam9pbigiICIpfTtfLnFmPXR5cGVvZiBBc3luY0NvbnRleHQhPT0idW5kZWZpbmVkIiYmdHlwZW9mIEFzeW5jQ29udGV4dC5TbmFwc2hvdD09PSJmdW5jdGlvbiI/YT0+YSYmQXN5bmNDb250ZXh0LlNuYXBzaG90LndyYXAoYSk6YT0+YTt2YXIgcmY9ZnVuY3Rpb24oYSxiKXthLnY9YjthLmkmJmEuaj8oYS5zdG9wKCksYS5zdGFydCgpKTphLmkmJmEuc3RvcCgpfSxzZj1jbGFzc3tjb25zdHJ1Y3RvcihhLGIpe3RoaXMudj1hO3RoaXMuQz1iO3RoaXMuaj0hMTt0aGlzLkE9KCk9PkRhdGUubm93KCk7dGhpcy5CPXRoaXMuQSgpfXN0YXJ0KCl7dGhpcy5qPSEwO3RoaXMuaXx8KHRoaXMuaT1zZXRUaW1lb3V0KCgpPT57dGhpcy50aWNrKCl9LHRoaXMudiksdGhpcy5CPXRoaXMuQSgpKX1zdG9wKCl7dGhpcy5qPSExO3RoaXMuaSYmKGNsZWFyVGltZW91dCh0aGlzLmkpLHRoaXMuaT12b2lkIDApfXRpY2soKXtpZih0aGlzLmope2xldCBhPU1hdGgubWF4KHRoaXMuQSgpLXRoaXMuQiwwKTthPHRoaXMudiouOD90aGlzLmk9c2V0VGltZW91dCgoKT0+e3RoaXMudGljaygpfSx0aGlzLnYtYSk6KHRoaXMuaSYmKGNsZWFyVGltZW91dCh0aGlzLmkpLHRoaXMuaT12b2lkIDApLHRoaXMuQygpLHRoaXMuaiYmKHRoaXMuc3RvcCgpLHRoaXMuc3RhcnQoKSkpfWVsc2UgdGhpcy5pPQp2b2lkIDB9fTt2YXIgdGY9YXN5bmMgZnVuY3Rpb24oYSl7dmFyIGI9bmV3IENvbXByZXNzaW9uU3RyZWFtKCJnemlwIiksYz0obmV3IFJlc3BvbnNlKGIucmVhZGFibGUpKS5hcnJheUJ1ZmZlcigpO2I9Yi53cml0YWJsZS5nZXRXcml0ZXIoKTthd2FpdCBiLndyaXRlKChuZXcgVGV4dEVuY29kZXIpLmVuY29kZShhKSk7YXdhaXQgYi5jbG9zZSgpO3JldHVybiBuZXcgVWludDhBcnJheShhd2FpdCBjKX0sdWY9Y2xhc3N7SmMoYSl7cmV0dXJuIGE8MTAyND8hMTp0eXBlb2YgQ29tcHJlc3Npb25TdHJlYW0hPT0idW5kZWZpbmVkIn19O18ueC5wcm90b3R5cGUuSz0hMTtfLngucHJvdG90eXBlLmRpc3Bvc2U9ZnVuY3Rpb24oKXt0aGlzLkt8fCh0aGlzLks9ITAsdGhpcy5UKCkpfTtfLngucHJvdG90eXBlW1N5bWJvbC5kaXNwb3NlXT1mdW5jdGlvbigpe3RoaXMuZGlzcG9zZSgpfTtfLndmPWZ1bmN0aW9uKGEsYil7Xy52ZihhLE1kKF8uR2MsYikpfTtfLnZmPWZ1bmN0aW9uKGEsYil7YS5LP2IoKTooYS5YfHwoYS5YPVtdKSxhLlgucHVzaChiKSl9O18ueC5wcm90b3R5cGUuVD1mdW5jdGlvbigpe2lmKHRoaXMuWClmb3IoO3RoaXMuWC5sZW5ndGg7KXRoaXMuWC5zaGlmdCgpKCl9O3ZhciB4Zj1jbGFzcyBleHRlbmRzIF8uVXtjb25zdHJ1Y3RvcihhKXtzdXBlcihhKX19O3ZhciB5Zj1jbGFzcyBleHRlbmRzIF8uVXtjb25zdHJ1Y3RvcihhKXtzdXBlcihhKX19O3ZhciB6Zj1mdW5jdGlvbihhKXtyZXR1cm4gbmV3IF8uSGMoYS54LGEueSl9O18uSGMucHJvdG90eXBlLmVxdWFscz1mdW5jdGlvbihhKXtyZXR1cm4gYSBpbnN0YW5jZW9mIF8uSGMmJih0aGlzPT1hPyEwOnRoaXMmJmE/dGhpcy54PT1hLngmJnRoaXMueT09YS55OiExKX07dmFyIEFmPWZ1bmN0aW9uKGEsYil7cmV0dXJuIG5ldyBfLkhjKGEueC1iLngsYS55LWIueSl9O18uSGMucHJvdG90eXBlLmNlaWw9ZnVuY3Rpb24oKXt0aGlzLng9TWF0aC5jZWlsKHRoaXMueCk7dGhpcy55PU1hdGguY2VpbCh0aGlzLnkpO3JldHVybiB0aGlzfTtfLkhjLnByb3RvdHlwZS5mbG9vcj1mdW5jdGlvbigpe3RoaXMueD1NYXRoLmZsb29yKHRoaXMueCk7dGhpcy55PU1hdGguZmxvb3IodGhpcy55KTtyZXR1cm4gdGhpc307Xy5IYy5wcm90b3R5cGUucm91bmQ9ZnVuY3Rpb24oKXt0aGlzLng9TWF0aC5yb3VuZCh0aGlzLngpO3RoaXMueT1NYXRoLnJvdW5kKHRoaXMueSk7cmV0dXJuIHRoaXN9O18ucD1JYy5wcm90b3R5cGU7Xy5wLmFzcGVjdFJhdGlvPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMud2lkdGgvdGhpcy5oZWlnaHR9O18ucC56Yj1mdW5jdGlvbigpe3JldHVybiEodGhpcy53aWR0aCp0aGlzLmhlaWdodCl9O18ucC5jZWlsPWZ1bmN0aW9uKCl7dGhpcy53aWR0aD1NYXRoLmNlaWwodGhpcy53aWR0aCk7dGhpcy5oZWlnaHQ9TWF0aC5jZWlsKHRoaXMuaGVpZ2h0KTtyZXR1cm4gdGhpc307Xy5wLmZsb29yPWZ1bmN0aW9uKCl7dGhpcy53aWR0aD1NYXRoLmZsb29yKHRoaXMud2lkdGgpO3RoaXMuaGVpZ2h0PU1hdGguZmxvb3IodGhpcy5oZWlnaHQpO3JldHVybiB0aGlzfTtfLnAucm91bmQ9ZnVuY3Rpb24oKXt0aGlzLndpZHRoPU1hdGgucm91bmQodGhpcy53aWR0aCk7dGhpcy5oZWlnaHQ9TWF0aC5yb3VuZCh0aGlzLmhlaWdodCk7cmV0dXJuIHRoaXN9O3ZhciBNYz0iY29uc3RydWN0b3IgaGFzT3duUHJvcGVydHkgaXNQcm90b3R5cGVPZiBwcm9wZXJ0eUlzRW51bWVyYWJsZSB0b0xvY2FsZVN0cmluZyB0b1N0cmluZyB2YWx1ZU9mIi5zcGxpdCgiICIpO3ZhciBHZixJZixLZixOZixCZjtfLndkPWZ1bmN0aW9uKGEpe3JldHVybiBhP25ldyBCZihfLkNmKGEpKTpPZHx8KE9kPW5ldyBCZil9O18ueGQ9ZnVuY3Rpb24oYSxiKXtyZXR1cm4gdHlwZW9mIGI9PT0ic3RyaW5nIj9hLmdldEVsZW1lbnRCeUlkKGIpOmJ9O18uRGY9ZnVuY3Rpb24oKXtyZXR1cm4gXy54ZChkb2N1bWVudCwiZ2IiKX07Xy5GZj1mdW5jdGlvbihhLGIpe3ZhciBjPWJ8fGRvY3VtZW50O2MuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZT9hPWMuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZShhKVswXTooYz1kb2N1bWVudCxhPWE/KGJ8fGMpLnF1ZXJ5U2VsZWN0b3IoYT8iLiIrYToiIik6Xy5FZihjLCIqIixhLGIpWzBdfHxudWxsKTtyZXR1cm4gYXx8bnVsbH07Xy5FZj1mdW5jdGlvbihhLGIsYyxkKXthPWR8fGE7cmV0dXJuKGI9YiYmYiE9IioiP1N0cmluZyhiKS50b1VwcGVyQ2FzZSgpOiIiKXx8Yz9hLnF1ZXJ5U2VsZWN0b3JBbGwoYisoYz8iLiIrYzoiIikpOmEuZ2V0RWxlbWVudHNCeVRhZ05hbWUoIioiKX07Cl8uSGY9ZnVuY3Rpb24oYSxiKXtfLkpjKGIsZnVuY3Rpb24oYyxkKXtkPT0ic3R5bGUiP2Euc3R5bGUuY3NzVGV4dD1jOmQ9PSJjbGFzcyI/YS5jbGFzc05hbWU9YzpkPT0iZm9yIj9hLmh0bWxGb3I9YzpHZi5oYXNPd25Qcm9wZXJ0eShkKT9hLnNldEF0dHJpYnV0ZShHZltkXSxjKTpfLmNhKGQsImFyaWEtIil8fF8uY2EoZCwiZGF0YS0iKT9hLnNldEF0dHJpYnV0ZShkLGMpOmFbZF09Y30pfTtHZj17Y2VsbHBhZGRpbmc6ImNlbGxQYWRkaW5nIixjZWxsc3BhY2luZzoiY2VsbFNwYWNpbmciLGNvbHNwYW46ImNvbFNwYW4iLGZyYW1lYm9yZGVyOiJmcmFtZUJvcmRlciIsaGVpZ2h0OiJoZWlnaHQiLG1heGxlbmd0aDoibWF4TGVuZ3RoIixub25jZToibm9uY2UiLHJvbGU6InJvbGUiLHJvd3NwYW46InJvd1NwYW4iLHR5cGU6InR5cGUiLHVzZW1hcDoidXNlTWFwIix2YWxpZ246InZBbGlnbiIsd2lkdGg6IndpZHRoIn07CklmPWZ1bmN0aW9uKGEpe2E9YS5kb2N1bWVudDthPWEuY29tcGF0TW9kZT09IkNTUzFDb21wYXQiP2EuZG9jdW1lbnRFbGVtZW50OmEuYm9keTtyZXR1cm4gbmV3IEljKGEuY2xpZW50V2lkdGgsYS5jbGllbnRIZWlnaHQpfTtLZj1mdW5jdGlvbihhKXt2YXIgYj1fLkpmKGEpO2E9YS5kZWZhdWx0VmlldztyZXR1cm4gbmV3IF8uSGMoKGE9PW51bGw/dm9pZCAwOmEucGFnZVhPZmZzZXQpfHxiLnNjcm9sbExlZnQsKGE9PW51bGw/dm9pZCAwOmEucGFnZVlPZmZzZXQpfHxiLnNjcm9sbFRvcCl9O18uSmY9ZnVuY3Rpb24oYSl7cmV0dXJuIGEuc2Nyb2xsaW5nRWxlbWVudD9hLnNjcm9sbGluZ0VsZW1lbnQ6Xy5oZHx8YS5jb21wYXRNb2RlIT0iQ1NTMUNvbXBhdCI/YS5ib2R5fHxhLmRvY3VtZW50RWxlbWVudDphLmRvY3VtZW50RWxlbWVudH07Xy5MZj1mdW5jdGlvbihhKXtyZXR1cm4gYT9hLmRlZmF1bHRWaWV3OndpbmRvd307Cl8uT2Y9ZnVuY3Rpb24oYSxiKXt2YXIgYz1iWzFdLGQ9Xy5NZihhLFN0cmluZyhiWzBdKSk7YyYmKHR5cGVvZiBjPT09InN0cmluZyI/ZC5jbGFzc05hbWU9YzpBcnJheS5pc0FycmF5KGMpP2QuY2xhc3NOYW1lPWMuam9pbigiICIpOl8uSGYoZCxjKSk7Yi5sZW5ndGg+MiYmTmYoYSxkLGIpO3JldHVybiBkfTtOZj1mdW5jdGlvbihhLGIsYyl7ZnVuY3Rpb24gZChlKXtlJiZiLmFwcGVuZENoaWxkKHR5cGVvZiBlPT09InN0cmluZyI/YS5jcmVhdGVUZXh0Tm9kZShlKTplKX1mb3IobGV0IGU9MjtlPGMubGVuZ3RoO2UrKyl7bGV0IGY9Y1tlXTshXy5JZChmKXx8Xy5KZChmKSYmZi5ub2RlVHlwZT4wP2QoZik6Xy5XZChmJiZ0eXBlb2YgZi5sZW5ndGg9PSJudW1iZXIiJiZ0eXBlb2YgZi5pdGVtPT0iZnVuY3Rpb24iP18uemEoZik6ZixkKX19O18uUGY9ZnVuY3Rpb24oYSl7cmV0dXJuIF8uTWYoZG9jdW1lbnQsYSl9OwpfLk1mPWZ1bmN0aW9uKGEsYil7Yj1TdHJpbmcoYik7YS5jb250ZW50VHlwZT09PSJhcHBsaWNhdGlvbi94aHRtbCt4bWwiJiYoYj1iLnRvTG93ZXJDYXNlKCkpO3JldHVybiBhLmNyZWF0ZUVsZW1lbnQoYil9O18uUWY9ZnVuY3Rpb24oYSl7Zm9yKHZhciBiO2I9YS5maXJzdENoaWxkOylhLnJlbW92ZUNoaWxkKGIpfTtfLlJmPWZ1bmN0aW9uKGEpe3JldHVybiBhJiZhLnBhcmVudE5vZGU/YS5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKGEpOm51bGx9O18uU2Y9ZnVuY3Rpb24oYSl7cmV0dXJuIF8uSmQoYSkmJmEubm9kZVR5cGU9PTF9O18uVGY9ZnVuY3Rpb24oYSxiKXtyZXR1cm4gYSYmYj9hPT1ifHxhLmNvbnRhaW5zKGIpOiExfTtfLkNmPWZ1bmN0aW9uKGEpe3JldHVybiBhLm5vZGVUeXBlPT05P2E6YS5vd25lckRvY3VtZW50fHxhLmRvY3VtZW50fTsKXy55ZD1mdW5jdGlvbihhLGIpe2lmKCJ0ZXh0Q29udGVudCJpbiBhKWEudGV4dENvbnRlbnQ9YjtlbHNlIGlmKGEubm9kZVR5cGU9PTMpYS5kYXRhPVN0cmluZyhiKTtlbHNlIGlmKGEuZmlyc3RDaGlsZCYmYS5maXJzdENoaWxkLm5vZGVUeXBlPT0zKXtmb3IoO2EubGFzdENoaWxkIT1hLmZpcnN0Q2hpbGQ7KWEucmVtb3ZlQ2hpbGQoYS5sYXN0Q2hpbGQpO2EuZmlyc3RDaGlsZC5kYXRhPVN0cmluZyhiKX1lbHNlIF8uUWYoYSksYS5hcHBlbmRDaGlsZChfLkNmKGEpLmNyZWF0ZVRleHROb2RlKFN0cmluZyhiKSkpfTtfLlVmPWZ1bmN0aW9uKGEpe3RyeXtsZXQgYj1hJiZhLmFjdGl2ZUVsZW1lbnQ7cmV0dXJuIGImJmIubm9kZU5hbWU/YjpudWxsfWNhdGNoKGIpe3JldHVybiBudWxsfX07QmY9ZnVuY3Rpb24oYSl7dGhpcy5pPWF8fF8udS5kb2N1bWVudHx8ZG9jdW1lbnR9O18ucD1CZi5wcm90b3R5cGU7Xy5wLko9ZnVuY3Rpb24oYSl7cmV0dXJuIF8ueGQodGhpcy5pLGEpfTsKXy5wLkhhPWZ1bmN0aW9uKGEsYixjKXtyZXR1cm4gXy5PZih0aGlzLmksYXJndW1lbnRzKX07Xy5wLmFwcGVuZENoaWxkPWZ1bmN0aW9uKGEsYil7YS5hcHBlbmRDaGlsZChiKX07Xy5wLmJlPV8uUWY7Xy5wLkdmPV8uUmY7Xy5wLkZmPV8uVGY7dmFyIFZmPWNsYXNzIGV4dGVuZHMgXy5Ve2NvbnN0cnVjdG9yKGEpe3N1cGVyKGEpfUdjKCl7cmV0dXJuIF8uTyh0aGlzLDEpfX07dmFyIFJjPWNsYXNzIGV4dGVuZHMgXy5Ve2NvbnN0cnVjdG9yKGEpe3N1cGVyKGEpfX07dmFyIFFjPWZ1bmN0aW9uKGEpe18uTGUoU2MsMSxhKX0sV2Y9Y2xhc3MgZXh0ZW5kcyBfLlV7Y29uc3RydWN0b3IoYSl7c3VwZXIoYSl9fSxYZj1fLnJjKFdmKTt2YXIgWWY9Y2xhc3MgZXh0ZW5kcyBfLlV7Y29uc3RydWN0b3IoYSl7c3VwZXIoYSl9fTt2YXIgT2M9WyJwbGF0Zm9ybSIsInBsYXRmb3JtVmVyc2lvbiIsImFyY2hpdGVjdHVyZSIsIm1vZGVsIiwidWFGdWxsVmVyc2lvbiJdLFNjPW5ldyBXZixQYz1udWxsO3ZhciBaZj1mdW5jdGlvbihhKXtyZXR1cm4gXy5UKGEsMSwxKX0sJGY9Y2xhc3MgZXh0ZW5kcyBfLlV7Y29uc3RydWN0b3IoYSl7c3VwZXIoYSl9fTt2YXIgYWc9Y2xhc3MgZXh0ZW5kcyBfLlV7Y29uc3RydWN0b3IoYSl7c3VwZXIoYSw0KX19O18uYmc9ZnVuY3Rpb24oYSxiKXtyZXR1cm4gXy5JZShhLDEsXy50YihiKSl9O18uY2c9ZnVuY3Rpb24oYSxiKXtyZXR1cm4gXy55KGEsOCxiKX07Xy5kZz1jbGFzcyBleHRlbmRzIF8uVXtjb25zdHJ1Y3RvcihhKXtzdXBlcihhLDM3KX19O3ZhciBlZz1jbGFzcyBleHRlbmRzIF8uVXtjb25zdHJ1Y3RvcihhKXtzdXBlcihhLDE5KX1vYyhhKXtyZXR1cm4gXy5UKHRoaXMsMixhKX19O3ZhciBnZz1mdW5jdGlvbihhLGIpe18uSyhhLmosMSxiKTtfLk8oYiwxKXx8WmYoYik7YS5XYXx8KGI9ZmcoYSksXy5OKGIsNSl8fF8ueShiLDUsYS5sb2NhbGUpKTthLnYmJihiPWZnKGEpLF8uSihiLFdmLDkpfHxfLksoYiw5LGEudikpfSxmZz1mdW5jdGlvbihhKXt2YXIgYj1fLkooYS5qLCRmLDEpO2J8fChiPW5ldyAkZixnZyhhLGIpKTthPWI7Yj1fLkooYSxZZiwxMSk7Ynx8KGI9bmV3IFlmLF8uSyhhLDExLGIpKTtyZXR1cm4gYn0saGc9ZnVuY3Rpb24oYSxiKXthLmk9Yn0saWc9ZnVuY3Rpb24oYSxiKXt2YXIgYz1hLldhP3ZvaWQgMDpfLkxmKCk7Yz9iKGMsT2MpLnRoZW4oZD0+e2Eudj1YZihkIT1udWxsP2Q6IltdIik7ZD1mZyhhKTtfLksoZCw5LGEudik7cmV0dXJuITB9KS5jYXRjaCgoKT0+ITEpOlByb21pc2UucmVzb2x2ZSghMSl9LGpnPWZ1bmN0aW9uKGEsYixjPTAsZD0wLGU9bnVsbCxmPTAsZz0wKXtpZighYS5XYSl7dmFyIGg9ZmcoYSk7dmFyIGs9bmV3IFZmO2s9Xy5UKGssCjEsYS5pKTtrPV8ueihrLDIsYS5BKTtkPV8uUyhrLDMsZD4wP2Q6dm9pZCAwKTtmPV8uUyhkLDQsZj4wP2Y6dm9pZCAwKTtnPV8uUyhmLDUsZz4wP2c6dm9pZCAwKTtmPWcuZGE7ZD1mW18ud118MDtnPV8uTGEoZyxkKT9nOlhiKGcsZixkKT9ZYihnLGYpOm5ldyBnLmNvbnN0cnVjdG9yKF8uV2IoZixkLCEwKSk7Xy5LKGgsMTAsZyl9YT1fLiRiKGEuaik7YT1fLkllKGEsNCxfLnRiKERhdGUubm93KCkudG9TdHJpbmcoKSkpO2I9Xy5MZShhLDMsYi5zbGljZSgpKTtlJiYoYT1uZXcgeGYsZT1fLlMoYSwxMyxlKSxhPW5ldyB5ZixlPV8uSyhhLDIsZSksYT1uZXcgYWcsZT1fLksoYSwxLGUpLGU9Xy5UKGUsMiw5KSxfLksoYiwxOCxlKSk7YyYmXy5RZShiLDE0LGMpO3JldHVybiBifSxrZz1jbGFzc3tjb25zdHJ1Y3RvcihhLGI9ITEpe3RoaXMuV2E9Yjt0aGlzLnY9dGhpcy5sb2NhbGU9bnVsbDt0aGlzLmk9MDt0aGlzLkE9ITE7dGhpcy5qPW5ldyBlZztOdW1iZXIuaXNJbnRlZ2VyKGEpJiYKdGhpcy5qLm9jKGEpO2J8fCh0aGlzLmxvY2FsZT1kb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuZ2V0QXR0cmlidXRlKCJsYW5nIikpO2dnKHRoaXMsbmV3ICRmKX1vYyhhKXt0aGlzLmoub2MoYSk7cmV0dXJuIHRoaXN9fTtfLlVjLnByb3RvdHlwZS5yZXNldD1mdW5jdGlvbigpe3RoaXMuaj10aGlzLmk9dGhpcy52fTtfLmxnPWZ1bmN0aW9uKGEpe2Euaj1NYXRoLm1pbihhLkEsYS5qKmEuQyk7YS5pPU1hdGgubWluKGEuQSxhLmorKGEuQj9NYXRoLnJvdW5kKGEuQiooTWF0aC5yYW5kb20oKS0uNSkqMiphLmopOjApKX07dmFyIFdlPWNsYXNzIGV4dGVuZHMgXy5Ve2NvbnN0cnVjdG9yKGEpe3N1cGVyKGEsOCl9fSxtZz1fLnJjKFdlKTt2YXIgbmc7bmc9bmV3IFhlKGNsYXNzIGV4dGVuZHMgXy5Ve2NvbnN0cnVjdG9yKGEpe3N1cGVyKGEpfX0pO3ZhciBvZyxwZyxzZyx0Zyx1Zyx3ZyxxZyx5ZyxyZyx4Zyx6ZztvZz1mdW5jdGlvbigpe3JldHVybiJodHRwczovL3BsYXkuZ29vZ2xlLmNvbS9sb2c/Zm9ybWF0PWpzb24maGFzZmFzdD10cnVlIn07cGc9ZnVuY3Rpb24oYSxiKXtpZighYS5lYSlyZXR1cm4oKT0+e307dmFyIGM9KCk9PnthLmZsdXNoKCl9O3JldHVybiBiPygpPT57YigpLnRoZW4oYyl9OmN9O3NnPWZ1bmN0aW9uKGEpe2EuTnx8KGEuai5BPSEwLGEuWiYmKGEuai5pPTMscWcoYSkpLGEuVSYmKGEuai5pPTIscmcoYSkpLGEuZmx1c2goKSxhLmouQT0hMSl9O3RnPWZ1bmN0aW9uKGEpe2EuRnx8KGEuRj1vZygpKTt0cnl7cmV0dXJuKG5ldyBVUkwoYS5GKSkudG9TdHJpbmcoKX1jYXRjaChiKXtyZXR1cm4obmV3IFVSTChhLkYsXy5MZigpLmxvY2F0aW9uLm9yaWdpbikpLnRvU3RyaW5nKCl9fTt1Zz1mdW5jdGlvbihhLGIsYyl7YS5IJiZhLkgueGIoYixjKX07Cl8udmc9ZnVuY3Rpb24oYSxiKXtpZihiIGluc3RhbmNlb2YgXy5kZylhLmxvZyhiKTtlbHNlIHRyeXt2YXIgYz1fLmNnKG5ldyBfLmRnLGIubGEoKSk7YS5sb2coYyl9Y2F0Y2goZCl7dWcoYSw0LDEpfX07d2c9ZnVuY3Rpb24oYSxiKXthLkM9bmV3IF8uVWMoYjwxPzE6YiwzRTUsLjEpO3JmKGEudixhLkMuaSl9O3FnPWZ1bmN0aW9uKGEpe3hnKGEsMzIsMTAsKGIsYyk9PntiPW5ldyBVUkwoYik7Yi5zZWFyY2hQYXJhbXMuc2V0KCJmb3JtYXQiLCJqc29uIik7dmFyIGQ9ITE7dHJ5e2Q9Xy5MZigpLm5hdmlnYXRvci5zZW5kQmVhY29uKGIudG9TdHJpbmcoKSxjLmxhKCkpfWNhdGNoKGUpe31kfHwoYS5HPSExKTtyZXR1cm4gZH0pfTsKeWc9ZnVuY3Rpb24oYSxiLGM9bnVsbCxkPWEud2l0aENyZWRlbnRpYWxzKXt2YXIgZT17fSxmPW5ldyBVUkwodGcoYSkpO2MmJihlLkF1dGhvcml6YXRpb249Yyk7YS5RYSYmKGVbIlgtR29vZy1BdXRoVXNlciJdPWEuUWEsZi5zZWFyY2hQYXJhbXMuc2V0KCJhdXRodXNlciIsYS5RYSkpO3JldHVybnt1cmw6Zi50b1N0cmluZygpLGJvZHk6YixuZzoxLFFjOmUsRGQ6IlBPU1QiLHdpdGhDcmVkZW50aWFsczpkLFNiOmEuU2J9fTsKcmc9ZnVuY3Rpb24oYSl7eGcoYSw2LDUsKGIsYyk9PntiPW5ldyBVUkwoYik7Yi5zZWFyY2hQYXJhbXMuc2V0KCJmb3JtYXQiLCJiYXNlNjRqc29uIik7dmFyIGQ9Yi5zZWFyY2hQYXJhbXMsZT1kLnNldCxmPWMubGEoKTtjPVtdO3ZhciBnPTA7Zm9yKHZhciBoPTA7aDxmLmxlbmd0aDtoKyspe3ZhciBrPWYuY2hhckNvZGVBdChoKTtrPjI1NSYmKGNbZysrXT1rJjI1NSxrPj49OCk7Y1tnKytdPWt9Zj0zO2Y9PT12b2lkIDAmJihmPTApO2lmKCF0ZSlmb3IodGU9e30sZz0iQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVphYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ejAxMjM0NTY3ODkiLnNwbGl0KCIiKSxoPVsiKy89IiwiKy8iLCItXz0iLCItXy4iLCItXyJdLGs9MDtrPDU7aysrKXt2YXIgbD1nLmNvbmNhdChoW2tdLnNwbGl0KCIiKSk7c2Vba109bDtmb3IodmFyIG09MDttPGwubGVuZ3RoO20rKyl7dmFyIG49bFttXTt0ZVtuXT09PXZvaWQgMCYmKHRlW25dPW0pfX1mPXNlW2ZdO2c9CkFycmF5KE1hdGguZmxvb3IoYy5sZW5ndGgvMykpO2g9Zls2NF18fCIiO2ZvcihrPWw9MDtsPGMubGVuZ3RoLTI7bCs9Myl7dmFyIHI9Y1tsXSxxPWNbbCsxXTtuPWNbbCsyXTttPWZbcj4+Ml07cj1mWyhyJjMpPDw0fHE+PjRdO3E9ZlsocSYxNSk8PDJ8bj4+Nl07bj1mW24mNjNdO2dbaysrXT1tK3IrcStufW09MDtuPWg7c3dpdGNoKGMubGVuZ3RoLWwpe2Nhc2UgMjptPWNbbCsxXSxuPWZbKG0mMTUpPDwyXXx8aDtjYXNlIDE6Yz1jW2xdLGdba109ZltjPj4yXStmWyhjJjMpPDw0fG0+PjRdK24raH1lLmNhbGwoZCwicCIsZy5qb2luKCIiKSk7Yj1iLnRvU3RyaW5nKCk7aWYoYi5sZW5ndGg+MTUzNjApcmV0dXJuITE7KG5ldyBJbWFnZSkuc3JjPWI7cmV0dXJuITB9KX07CnhnPWZ1bmN0aW9uKGEsYixjLGQpe2lmKGEuaS5sZW5ndGghPT0wKXt2YXIgZT1uZXcgVVJMKHRnKGEpKTtlLnNlYXJjaFBhcmFtcy5kZWxldGUoImZvcm1hdCIpO3ZhciBmPWEuS2IoKTtmJiZlLnNlYXJjaFBhcmFtcy5zZXQoImF1dGgiLGYpO2Uuc2VhcmNoUGFyYW1zLnNldCgiYXV0aHVzZXIiLGEuUWF8fCIwIik7Zm9yKGY9MDtmPGMmJmEuaS5sZW5ndGg7KytmKXtsZXQgZz1hLmkuc2xpY2UoMCxiKSxoPWpnKGEuaixnLGEuQSxhLkQsYS5mYixhLlAsYS5PKTtpZighZChlLnRvU3RyaW5nKCksaCkpeysrYS5EO2JyZWFrfWEuQT0wO2EuRD0wO2EuUD0wO2EuTz0wO2EuaT1hLmkuc2xpY2UoZy5sZW5ndGgpfWEudi5qJiZhLnYuc3RvcCgpfX07CnpnPWNsYXNzIGV4dGVuZHMgXy54e2NvbnN0cnVjdG9yKGEpe3N1cGVyKCk7dGhpcy5MPSIiO3RoaXMuaT1bXTt0aGlzLmdhPSIiO3RoaXMuVT10aGlzLlo9dGhpcy5OPSExO3RoaXMubmE9dGhpcy5TPS0xO3RoaXMuY2E9ITE7dGhpcy5NPXRoaXMuQj1udWxsO3RoaXMuRD10aGlzLkE9MDt0aGlzLkg9bnVsbDt0aGlzLk89dGhpcy5QPTA7dGhpcy5oYT0xO3RoaXMuU2I9MDt0aGlzLlI9ITE7dGhpcy5CYj1hLkJiO3RoaXMuS2I9YS5LYnx8KCgpPT57fSk7dGhpcy5qPW5ldyBrZyhhLkJiLGEuV2EpO3RoaXMuQmE9YS5CYXx8bnVsbDt0aGlzLmZiPWEuZmJ8fG51bGw7dGhpcy5GPWEua2l8fG51bGw7dGhpcy5RYT1hLlFhfHxudWxsO3RoaXMuWGI9YS5YYnx8ITE7dGhpcy53aXRoQ3JlZGVudGlhbHM9IWEuY2Q7dGhpcy5XYT1hLldhfHwhMTt0aGlzLkc9IXRoaXMuV2EmJiEhXy5MZigpJiYhIV8uTGYoKS5uYXZpZ2F0b3ImJl8uTGYoKS5uYXZpZ2F0b3Iuc2VuZEJlYWNvbiE9PXZvaWQgMDsKdGhpcy5lYT10eXBlb2YgVVJMU2VhcmNoUGFyYW1zIT09InVuZGVmaW5lZCImJiEhKG5ldyBVUkwob2coKSkpLnNlYXJjaFBhcmFtcyYmISEobmV3IFVSTChvZygpKSkuc2VhcmNoUGFyYW1zLnNldDt2YXIgYj1aZihuZXcgJGYpO2dnKHRoaXMuaixiKTt0aGlzLkM9bmV3IF8uVWMoMUU0LDNFNSwuMSk7YT1wZyh0aGlzLGEuemUpO3RoaXMudj1uZXcgc2YodGhpcy5DLmksYSk7dGhpcy5WPW5ldyBzZig2RTUsYSk7dGhpcy5YYnx8dGhpcy5WLnN0YXJ0KCk7dGhpcy5XYXx8KGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoInZpc2liaWxpdHljaGFuZ2UiLCgpPT57aWYoZG9jdW1lbnQudmlzaWJpbGl0eVN0YXRlPT09ImhpZGRlbiIpe3NnKHRoaXMpO2xldCBjOyhjPXRoaXMuSCk9PW51bGx8fGMuZmx1c2goKX19KSxkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCJwYWdlaGlkZSIsKCk9PntzZyh0aGlzKTt2YXIgYzsoYz10aGlzLkgpPT1udWxsfHxjLmZsdXNoKCl9KSl9VCgpe3NnKHRoaXMpOwp0aGlzLnYuc3RvcCgpO3RoaXMuVi5zdG9wKCk7c3VwZXIuVCgpfWxvZyhhKXt1Zyh0aGlzLDIsMSk7aWYodGhpcy5lYSl7YT1fLiRiKGEpO3ZhciBiPXRoaXMuaGErKzthPV8uUWUoYSwyMSxiKTt0aGlzLkwmJl8ueShhLDI2LHRoaXMuTCk7Yj1hO3t2YXIgYz1fLkhlKGIsMSk7bGV0IGQ9dHlwZW9mIGM7Yz1jPT1udWxsP2M6ZD09PSJiaWdpbnQiP1N0cmluZygoMCxfLm5iKSg2NCxjKSk6Xy5oYihjKT9kPT09InN0cmluZyI/Xy5tYihjKTpfLnJiKGMpOnZvaWQgMH1jPT1udWxsJiYoYz1EYXRlLm5vdygpLF8uYmcoYixOdW1iZXIuaXNGaW5pdGUoYyk/Yy50b1N0cmluZygpOiIwIikpO2M9Xy5IZShiLDE1LHZvaWQgMCx2b2lkIDAseGIpO2MhPW51bGwmJih0eXBlb2YgYz09PSJiaWdpbnQiP0xiKGMpP2M9TnVtYmVyKGMpOihjPSgwLF8ubmIpKDY0LGMpLGM9TGIoYyk/TnVtYmVyKGMpOlN0cmluZyhjKSk6Yz1fLmhiKGMpP3R5cGVvZiBjPT09Im51bWJlciI/Xy5yYihjKTpfLm1iKGMpOgp2b2lkIDApO2MhPW51bGx8fF8uUWUoYiwxNSwobmV3IERhdGUpLmdldFRpbWV6b25lT2Zmc2V0KCkqNjApO3RoaXMuQiYmKGM9Xy4kYih0aGlzLkIpLF8uSyhiLDE2LGMpKTt1Zyh0aGlzLDEsMSk7Yj10aGlzLmkubGVuZ3RoLTFFMysxO2I+MCYmKHRoaXMuaS5zcGxpY2UoMCxiKSx0aGlzLkErPWIsdWcodGhpcywzLGIpKTt0aGlzLmkucHVzaChhKTt0aGlzLlhifHx0aGlzLnYuanx8dGhpcy52LnN0YXJ0KCl9fWZsdXNoKGEsYil7aWYodGhpcy5pLmxlbmd0aD09PTApYSYmYSgpO2Vsc2UgaWYodGhpcy5SJiZ0aGlzLkcpdGhpcy5qLmk9MyxxZyh0aGlzKTtlbHNle3ZhciBjPURhdGUubm93KCk7aWYodGhpcy5uYT5jJiZ0aGlzLlM8YyliJiZiKCJ0aHJvdHRsZWQiKTtlbHNle3RoaXMuQmEmJih0eXBlb2YgdGhpcy5CYS5HYz09PSJmdW5jdGlvbiI/aGcodGhpcy5qLHRoaXMuQmEuR2MoKSk6dGhpcy5qLmk9MCk7dmFyIGQ9dGhpcy5pLmxlbmd0aCxlPWpnKHRoaXMuaix0aGlzLmksdGhpcy5BLAp0aGlzLkQsdGhpcy5mYix0aGlzLlAsdGhpcy5PKSxmPXRoaXMuS2IoKTtpZihmJiZ0aGlzLmdhPT09ZiliJiZiKCJzdGFsZS1hdXRoLXRva2VuIik7ZWxzZSBpZih0aGlzLmk9W10sdGhpcy52LmomJnRoaXMudi5zdG9wKCksdGhpcy5BPTAsdGhpcy5OKWEmJmEoKTtlbHNle2M9ZS5sYSgpO2xldCBnO3RoaXMuTSYmdGhpcy5NLkpjKGMubGVuZ3RoKSYmKGc9dGYoYykpO2xldCBoPXlnKHRoaXMsYyxmKSxrPW49Pnt0aGlzLkMucmVzZXQoKTtyZih0aGlzLnYsdGhpcy5DLmkpO2lmKG4pe3ZhciByPW51bGw7dHJ5e3ZhciBxPUpTT04uc3RyaW5naWZ5KEpTT04ucGFyc2Uobi5yZXBsYWNlKCIpXX0nXG4iLCIiKSkpO3I9bWcocSl9Y2F0Y2goQil7fWlmKHIpe249TnVtYmVyKE5lKHIsMSxfLlJhKCItMSIpKSk7bj4wJiYodGhpcy5TPURhdGUubm93KCksdGhpcy5uYT10aGlzLlMrbik7bj1uZy5pO3E9Xy5EYihfLkViKTt2YXIgdDtxJiYoKHQ9ci5kYVtxXSk9PW51bGw/dm9pZCAwOnRbbl0pIT0KbnVsbCYmXy5EYSh1ZSwzKTt0PW5nLmk7aWYoXy5EYih3ZSkmJl8uRGIoXy5FYikmJnZvaWQgMD09PXdlJiYobj1yLmRhLHE9bltfLkViXSkmJihxPXEuRmQpKXRyeXtxKG4sdCxFZSl9Y2F0Y2goQil7YmEoQil9cj1uZy5qP25nLnYocixuZy5qLG5nLmksbmcuQSk6bmcudihyLG5nLmksbnVsbCxuZy5BKTtpZihyPXI9PT1udWxsP3ZvaWQgMDpyKXI9Xy5NKHIsMSwtMSksciE9PS0xJiYodGhpcy5jYXx8d2codGhpcyxyKSl9fWEmJmEoKTt0aGlzLkQ9MH0sbD0obixyKT0+e3ZhciBxPV8uS2UoZSxfLmRnLDMsXy5KZSgpKTt2YXIgdD1OdW1iZXIoTmUoZSwxNCkpO18ubGcodGhpcy5DKTtyZih0aGlzLnYsdGhpcy5DLmkpO249PT00MDEmJmYmJih0aGlzLmdhPWYpO3QmJih0aGlzLkErPXQpO3I9PT12b2lkIDAmJihyPTUwMDw9biYmbjw2MDB8fG49PT00MDF8fG49PT0wKTtyJiYodGhpcy5pPXEuY29uY2F0KHRoaXMuaSksdGhpcy5YYnx8dGhpcy52Lmp8fHRoaXMudi5zdGFydCgpKTt1Zyh0aGlzLAo3LDEpO2ImJmIoIm5ldC1zZW5kLWZhaWxlZCIsbik7Kyt0aGlzLkR9LG09KCk9Pnt0aGlzLkJhJiZ0aGlzLkJhLnNlbmQoaCxrLGwpfTtnP2cudGhlbihuPT57dWcodGhpcyw1LGQpO2guUWNbIkNvbnRlbnQtRW5jb2RpbmciXT0iZ3ppcCI7aC5RY1siQ29udGVudC1UeXBlIl09ImFwcGxpY2F0aW9uL2JpbmFyeSI7aC5ib2R5PW47aC5uZz0yO20oKX0sKCk9Pnt1Zyh0aGlzLDYsZCk7bSgpfSk6bSgpfX19fX07dmFyIEFnPWNsYXNze2NvbnN0cnVjdG9yKCl7dGhpcy5nZz10eXBlb2YgQWJvcnRDb250cm9sbGVyIT09InVuZGVmaW5lZCJ9YXN5bmMgc2VuZChhLGIsYyl7dmFyIGQ9dGhpcy5nZz9uZXcgQWJvcnRDb250cm9sbGVyOnZvaWQgMCxlPWQmJmEuU2I+MD9zZXRUaW1lb3V0KCgpPT57ZC5hYm9ydCgpfSxhLlNiKTp2b2lkIDA7dHJ5e2xldCBmPU9iamVjdC5hc3NpZ24oe30se21ldGhvZDphLkRkLGhlYWRlcnM6T2JqZWN0LmFzc2lnbih7fSxhLlFjKX0sYS5ib2R5JiZ7Ym9keTphLmJvZHl9LGEud2l0aENyZWRlbnRpYWxzJiZ7Y3JlZGVudGlhbHM6ImluY2x1ZGUifSx7c2lnbmFsOmEuU2ImJmQ/ZC5zaWduYWw6bnVsbH0pLGc9YXdhaXQgZmV0Y2goYS51cmwsZik7Zy5zdGF0dXM9PT0yMDA/Yj09bnVsbHx8Yihhd2FpdCBnLnRleHQoKSk6Yz09bnVsbHx8YyhnLnN0YXR1cyl9Y2F0Y2goZil7c3dpdGNoKGY9PW51bGw/dm9pZCAwOmYubmFtZSl7Y2FzZSAiQWJvcnRFcnJvciI6Yz09bnVsbHx8CmMoNDA4KTticmVhaztkZWZhdWx0OmM9PW51bGx8fGMoNDAwKX19ZmluYWxseXtjbGVhclRpbWVvdXQoZSl9fUdjKCl7cmV0dXJuIDR9fTtfLkNnPWZ1bmN0aW9uKGEpe2EuQmE9bmV3IEJnO3JldHVybiBhfTsKXy5EZz1mdW5jdGlvbihhKXthLkJhfHwoYS5CYT1uZXcgQWcpO3ZhciBiPW5ldyB6Zyh7QmI6YS5CYixLYjphLktiP2EuS2I6Xy5wZixRYTphLlFhLGtpOmEucGIsV2E6ITEsWGI6ITEsY2Q6YS5ILHplOmEuemUsQmE6YS5CYX0pO18ud2YoYSxiKTthLkd8fChiLk49ITApO2lmKGEudil7dmFyIGM9YS52LGQ9ZmcoYi5qKTtfLnkoZCw3LGMpfWIuTT1uZXcgdWY7YS5qJiYoYi5MPWEuaik7YS5mYiYmKGIuZmI9YS5mYik7YS5pJiYoKGQ9YS5pKT8oYi5CfHwoYi5CPW5ldyBaZSksYz1iLkIsZD1kLmxhKCksXy55KGMsNCxkKSk6Yi5CJiZfLkllKGIuQiw0KSk7YS5DJiYoYi5aPWEuQyYmYi5HKTthLkImJihiLlU9YS5CKTthLkEmJihjPWEuQSxiLmNhPSEwLHdnKGIsYykpO2EuRiYmKGIuUj1iLkcpO2lnKGIuaixUYyk7YS5EJiZpZyhiLmosYS5EKTthLkJhLm9jJiZhLkJhLm9jKGEuQmIpO2EuQmEuWWgmJmEuQmEuWWgoYik7cmV0dXJuIGJ9OwpfLkVnPWNsYXNzIGV4dGVuZHMgXy54e2NvbnN0cnVjdG9yKGEsYj0iMCIpe3N1cGVyKCk7dGhpcy5CYj1hO3RoaXMuUWE9Yjt0aGlzLnBiPSJodHRwczovL3BsYXkuZ29vZ2xlLmNvbS9sb2c/Zm9ybWF0PWpzb24maGFzZmFzdD10cnVlIjt0aGlzLkc9ITA7dGhpcy5CYT10aGlzLnY9bnVsbDt0aGlzLmo9IiI7dGhpcy5pPXRoaXMuZmI9bnVsbDt0aGlzLkI9dGhpcy5DPSExO3RoaXMuQT1udWxsO3RoaXMuRj0hMTt0aGlzLkQ9bnVsbH1jZCgpe3RoaXMuSD0hMDtyZXR1cm4gdGhpc319O3ZhciBGZztfLkdnPWZ1bmN0aW9uKGEpe3ZhciBiPW5ldyBGZztyZXR1cm4gXy5UKGIsMSxhKX07Xy5IZz1mdW5jdGlvbihhLGIpe3JldHVybiBfLlQoYSwyLGIpfTtGZz1jbGFzcyBleHRlbmRzIF8uVXtjb25zdHJ1Y3RvcihhKXtzdXBlcihhKX19O3ZhciBJZz1jbGFzcyBleHRlbmRzIF8uVXtjb25zdHJ1Y3RvcihhKXtzdXBlcihhKX19O3ZhciBKZz1jbGFzcyBleHRlbmRzIF8uVXtjb25zdHJ1Y3RvcihhKXtzdXBlcihhKX19O18uS2c9ZnVuY3Rpb24oYSxiKXtyZXR1cm4gXy56KGEsMzYsYil9O18uTGc9ZnVuY3Rpb24oYSxiKXtyZXR1cm4gXy5LKGEsNzMsYil9O18uVj1jbGFzcyBleHRlbmRzIF8uVXtjb25zdHJ1Y3RvcihhKXtzdXBlcihhKX1EKGEpe3JldHVybiBfLlModGhpcywzLGEpfX07Xy5NZz1jbGFzcyBleHRlbmRzIF8uVXtjb25zdHJ1Y3RvcihhKXtzdXBlcihhKX1oYihhKXtyZXR1cm4gXy55KHRoaXMsNSxhKX19O3ZhciBOZz1mdW5jdGlvbihhKXtyZXR1cm4gYj0+e2I9SlNPTi5wYXJzZShiKTtpZighQXJyYXkuaXNBcnJheShiKSl0aHJvdyBFcnJvcigic2AiK18uY2IoYikrImAiK2IpO2JbXy53XXw9MzQ7cmV0dXJuIG5ldyBhKGIpfX0oY2xhc3MgZXh0ZW5kcyBfLlV7Y29uc3RydWN0b3IoYSl7c3VwZXIoYSl9fSk7dmFyIE9nO3ZhciBQZz1jbGFzcyBleHRlbmRzIF8uVXtjb25zdHJ1Y3RvcihhKXtzdXBlcihhKX1oYihhKXtyZXR1cm4gXy55KHRoaXMsMjQsYSl9fTtfLlFnPWZ1bmN0aW9uKGEpe3JldHVybiBfLk9lKGEsMSl9O18uUmc9Y2xhc3MgZXh0ZW5kcyBfLlV7Y29uc3RydWN0b3IoYSl7c3VwZXIoYSl9fTt2YXIgU2c9Y2xhc3MgZXh0ZW5kcyBfLlV7Y29uc3RydWN0b3IoYSl7c3VwZXIoYSl9fTt2YXIgVGc9Y2xhc3MgZXh0ZW5kcyBfLlV7Y29uc3RydWN0b3IoYSl7c3VwZXIoYSl9fTt2YXIgVWc9Y2xhc3MgZXh0ZW5kcyBfLlV7Y29uc3RydWN0b3IoYSl7c3VwZXIoYSl9fTtfLlljPWZ1bmN0aW9uKGEsYil7dGhpcy50eXBlPSJmdW5jdGlvbiI9PXR5cGVvZiBfLlZnJiZhIGluc3RhbmNlb2YgXy5WZz9TdHJpbmcoYSk6YTt0aGlzLmk9dGhpcy50YXJnZXQ9Yjt0aGlzLmRlZmF1bHRQcmV2ZW50ZWQ9dGhpcy52PSExfTtfLlljLnByb3RvdHlwZS5zdG9wUHJvcGFnYXRpb249ZnVuY3Rpb24oKXt0aGlzLnY9ITB9O18uWWMucHJvdG90eXBlLnByZXZlbnREZWZhdWx0PWZ1bmN0aW9uKCl7dGhpcy5kZWZhdWx0UHJldmVudGVkPSEwfTtfLkgoXy5aYyxfLlljKTsKXy5aYy5wcm90b3R5cGUuaW5pdD1mdW5jdGlvbihhLGIpe3ZhciBjPXRoaXMudHlwZT1hLnR5cGUsZD1hLmNoYW5nZWRUb3VjaGVzJiZhLmNoYW5nZWRUb3VjaGVzLmxlbmd0aD9hLmNoYW5nZWRUb3VjaGVzWzBdOm51bGw7dGhpcy50YXJnZXQ9YS50YXJnZXR8fGEuc3JjRWxlbWVudDt0aGlzLmk9YjtiPWEucmVsYXRlZFRhcmdldDtifHwoYz09Im1vdXNlb3ZlciI/Yj1hLmZyb21FbGVtZW50OmM9PSJtb3VzZW91dCImJihiPWEudG9FbGVtZW50KSk7dGhpcy5yZWxhdGVkVGFyZ2V0PWI7ZD8odGhpcy5jbGllbnRYPWQuY2xpZW50WCE9PXZvaWQgMD9kLmNsaWVudFg6ZC5wYWdlWCx0aGlzLmNsaWVudFk9ZC5jbGllbnRZIT09dm9pZCAwP2QuY2xpZW50WTpkLnBhZ2VZLHRoaXMuc2NyZWVuWD1kLnNjcmVlblh8fDAsdGhpcy5zY3JlZW5ZPWQuc2NyZWVuWXx8MCk6KHRoaXMuY2xpZW50WD1hLmNsaWVudFghPT12b2lkIDA/YS5jbGllbnRYOmEucGFnZVgsdGhpcy5jbGllbnRZPWEuY2xpZW50WSE9PQp2b2lkIDA/YS5jbGllbnRZOmEucGFnZVksdGhpcy5zY3JlZW5YPWEuc2NyZWVuWHx8MCx0aGlzLnNjcmVlblk9YS5zY3JlZW5ZfHwwKTt0aGlzLmJ1dHRvbj1hLmJ1dHRvbjt0aGlzLmtleUNvZGU9YS5rZXlDb2RlfHwwO3RoaXMua2V5PWEua2V5fHwiIjt0aGlzLmo9YS5jaGFyQ29kZXx8KGM9PSJrZXlwcmVzcyI/YS5rZXlDb2RlOjApO3RoaXMuY3RybEtleT1hLmN0cmxLZXk7dGhpcy5hbHRLZXk9YS5hbHRLZXk7dGhpcy5zaGlmdEtleT1hLnNoaWZ0S2V5O3RoaXMubWV0YUtleT1hLm1ldGFLZXk7dGhpcy5wb2ludGVySWQ9YS5wb2ludGVySWR8fDA7dGhpcy5wb2ludGVyVHlwZT1hLnBvaW50ZXJUeXBlO3RoaXMuc3RhdGU9YS5zdGF0ZTt0aGlzLnRpbWVTdGFtcD1hLnRpbWVTdGFtcDt0aGlzLllhPWE7YS5kZWZhdWx0UHJldmVudGVkJiZfLlpjLlcucHJldmVudERlZmF1bHQuY2FsbCh0aGlzKX07Cl8uWmMucHJvdG90eXBlLnN0b3BQcm9wYWdhdGlvbj1mdW5jdGlvbigpe18uWmMuVy5zdG9wUHJvcGFnYXRpb24uY2FsbCh0aGlzKTt0aGlzLllhLnN0b3BQcm9wYWdhdGlvbj90aGlzLllhLnN0b3BQcm9wYWdhdGlvbigpOnRoaXMuWWEuY2FuY2VsQnViYmxlPSEwfTtfLlpjLnByb3RvdHlwZS5wcmV2ZW50RGVmYXVsdD1mdW5jdGlvbigpe18uWmMuVy5wcmV2ZW50RGVmYXVsdC5jYWxsKHRoaXMpO3ZhciBhPXRoaXMuWWE7YS5wcmV2ZW50RGVmYXVsdD9hLnByZXZlbnREZWZhdWx0KCk6YS5yZXR1cm5WYWx1ZT0hMX07Xy5aYy5wcm90b3R5cGUuYWI9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5ZYX07dmFyIFdnO1dnPSJjbG9zdXJlX2xpc3RlbmFibGVfIisoTWF0aC5yYW5kb20oKSoxRTZ8MCk7Xy5YZz1mdW5jdGlvbihhKXtyZXR1cm4hKCFhfHwhYVtXZ10pfTt2YXIgJGM9MDt2YXIgWWc9ZnVuY3Rpb24oYSl7YS5uYz0hMDthLmxpc3RlbmVyPW51bGw7YS5wcm94eT1udWxsO2Euc3JjPW51bGw7YS5IYz1udWxsfTtiZC5wcm90b3R5cGUuYWRkPWZ1bmN0aW9uKGEsYixjLGQsZSl7dmFyIGY9YS50b1N0cmluZygpO2E9dGhpcy5pW2ZdO2F8fChhPXRoaXMuaVtmXT1bXSx0aGlzLmorKyk7dmFyIGc9WmcoYSxiLGQsZSk7Zz4tMT8oYj1hW2ddLGN8fChiLnhjPSExKSk6KGI9bmV3IGFkKGIsdGhpcy5zcmMsZiwhIWQsZSksYi54Yz1jLGEucHVzaChiKSk7cmV0dXJuIGJ9O18uJGc9ZnVuY3Rpb24oYSxiKXt2YXIgYz1iLnR5cGU7aWYoIShjIGluIGEuaSkpcmV0dXJuITE7dmFyIGQ9Xy55YShhLmlbY10sYik7ZCYmKFlnKGIpLGEuaVtjXS5sZW5ndGg9PTAmJihkZWxldGUgYS5pW2NdLGEuai0tKSk7cmV0dXJuIGR9O18uYWg9ZnVuY3Rpb24oYSl7dmFyIGI9MDtmb3IobGV0IGMgaW4gYS5pKXtsZXQgZD1hLmlbY107Zm9yKGxldCBlPTA7ZTxkLmxlbmd0aDtlKyspKytiLFlnKGRbZV0pO2RlbGV0ZSBhLmlbY107YS5qLS19fTsKYmQucHJvdG90eXBlLkRjPWZ1bmN0aW9uKGEsYil7YT10aGlzLmlbYS50b1N0cmluZygpXTt2YXIgYz1bXTtpZihhKWZvcihsZXQgZD0wO2Q8YS5sZW5ndGg7KytkKXtsZXQgZT1hW2RdO2UuY2FwdHVyZT09YiYmYy5wdXNoKGUpfXJldHVybiBjfTtiZC5wcm90b3R5cGUuWmI9ZnVuY3Rpb24oYSxiLGMsZCl7YT10aGlzLmlbYS50b1N0cmluZygpXTt2YXIgZT0tMTthJiYoZT1aZyhhLGIsYyxkKSk7cmV0dXJuIGU+LTE/YVtlXTpudWxsfTtiZC5wcm90b3R5cGUuaGFzTGlzdGVuZXI9ZnVuY3Rpb24oYSxiKXt2YXIgYz1hIT09dm9pZCAwLGQ9Yz9hLnRvU3RyaW5nKCk6IiIsZT1iIT09dm9pZCAwO3JldHVybiBLYyh0aGlzLmksZnVuY3Rpb24oZil7Zm9yKGxldCBnPTA7ZzxmLmxlbmd0aDsrK2cpaWYoIShjJiZmW2ddLnR5cGUhPWR8fGUmJmZbZ10uY2FwdHVyZSE9YikpcmV0dXJuITA7cmV0dXJuITF9KX07CnZhciBaZz1mdW5jdGlvbihhLGIsYyxkKXtmb3IobGV0IGU9MDtlPGEubGVuZ3RoOysrZSl7bGV0IGY9YVtlXTtpZighZi5uYyYmZi5saXN0ZW5lcj09YiYmZi5jYXB0dXJlPT0hIWMmJmYuSGM9PWQpcmV0dXJuIGV9cmV0dXJuLTF9O3ZhciBiaCxjaCxkaCxnaCxpaCxlaCxqaCxraCxwaCxmaDtiaD0iY2xvc3VyZV9sbV8iKyhNYXRoLnJhbmRvbSgpKjFFNnwwKTtjaD17fTtkaD0wO18uRj1mdW5jdGlvbihhLGIsYyxkLGUpe2lmKGQmJmQub25jZSlyZXR1cm4gZWgoYSxiLGMsZCxlKTtpZihBcnJheS5pc0FycmF5KGIpKXtmb3IobGV0IGY9MDtmPGIubGVuZ3RoO2YrKylfLkYoYSxiW2ZdLGMsZCxlKTtyZXR1cm4gbnVsbH1jPWZoKGMpO3JldHVybiBfLlhnKGEpP2EuSShiLGMsXy5KZChkKT8hIWQuY2FwdHVyZTohIWQsZSk6Z2goYSxiLGMsITEsZCxlKX07CmdoPWZ1bmN0aW9uKGEsYixjLGQsZSxmKXtpZighYil0aHJvdyBFcnJvcigiSCIpO3ZhciBnPV8uSmQoZSk/ISFlLmNhcHR1cmU6ISFlLGg9Xy5oaChhKTtofHwoYVtiaF09aD1uZXcgYmQoYSkpO2M9aC5hZGQoYixjLGQsZyxmKTtpZihjLnByb3h5KXJldHVybiBjO2Q9aWgoKTtjLnByb3h5PWQ7ZC5zcmM9YTtkLmxpc3RlbmVyPWM7aWYoYS5hZGRFdmVudExpc3RlbmVyKWU9PT12b2lkIDAmJihlPSExKSxhLmFkZEV2ZW50TGlzdGVuZXIoYi50b1N0cmluZygpLGQsZSk7ZWxzZSBpZihhLmF0dGFjaEV2ZW50KWEuYXR0YWNoRXZlbnQoamgoYi50b1N0cmluZygpKSxkKTtlbHNlIGlmKGEuYWRkTGlzdGVuZXImJmEucmVtb3ZlTGlzdGVuZXIpYS5hZGRMaXN0ZW5lcihkKTtlbHNlIHRocm93IEVycm9yKCJJIik7ZGgrKztyZXR1cm4gY307aWg9ZnVuY3Rpb24oKXt2YXIgYT1raCxiPWZ1bmN0aW9uKGMpe3JldHVybiBhLmNhbGwoYi5zcmMsYi5saXN0ZW5lcixjKX07cmV0dXJuIGJ9OwplaD1mdW5jdGlvbihhLGIsYyxkLGUpe2lmKEFycmF5LmlzQXJyYXkoYikpe2ZvcihsZXQgZj0wO2Y8Yi5sZW5ndGg7ZisrKWVoKGEsYltmXSxjLGQsZSk7cmV0dXJuIG51bGx9Yz1maChjKTtyZXR1cm4gXy5YZyhhKT9hLnZhKGIsYyxfLkpkKGQpPyEhZC5jYXB0dXJlOiEhZCxlKTpnaChhLGIsYywhMCxkLGUpfTtfLm1oPWZ1bmN0aW9uKGEsYil7Xy5saC5JKGEsYix2b2lkIDAsdm9pZCAwKX07Xy5uaD1mdW5jdGlvbihhLGIsYyxkLGUpe2lmKEFycmF5LmlzQXJyYXkoYikpZm9yKGxldCBmPTA7ZjxiLmxlbmd0aDtmKyspXy5uaChhLGJbZl0sYyxkLGUpO2Vsc2UgZD1fLkpkKGQpPyEhZC5jYXB0dXJlOiEhZCxjPWZoKGMpLF8uWGcoYSk/YS5HYShiLGMsZCxlKTphJiYoYT1fLmhoKGEpKSYmKGI9YS5aYihiLGMsZCxlKSkmJl8ub2goYil9OwpfLm9oPWZ1bmN0aW9uKGEpe2lmKHR5cGVvZiBhPT09Im51bWJlciJ8fCFhfHxhLm5jKXJldHVybiExO3ZhciBiPWEuc3JjO2lmKF8uWGcoYikpcmV0dXJuIF8uJGcoYi5DYSxhKTt2YXIgYz1hLnR5cGUsZD1hLnByb3h5O2IucmVtb3ZlRXZlbnRMaXN0ZW5lcj9iLnJlbW92ZUV2ZW50TGlzdGVuZXIoYyxkLGEuY2FwdHVyZSk6Yi5kZXRhY2hFdmVudD9iLmRldGFjaEV2ZW50KGpoKGMpLGQpOmIuYWRkTGlzdGVuZXImJmIucmVtb3ZlTGlzdGVuZXImJmIucmVtb3ZlTGlzdGVuZXIoZCk7ZGgtLTsoYz1fLmhoKGIpKT8oXy4kZyhjLGEpLGMuaj09MCYmKGMuc3JjPW51bGwsYltiaF09bnVsbCkpOllnKGEpO3JldHVybiEwfTtqaD1mdW5jdGlvbihhKXtyZXR1cm4gYSBpbiBjaD9jaFthXTpjaFthXT0ib24iK2F9OwpraD1mdW5jdGlvbihhLGIpe2lmKGEubmMpYT0hMDtlbHNle2I9bmV3IF8uWmMoYix0aGlzKTtsZXQgYz1hLmxpc3RlbmVyLGQ9YS5IY3x8YS5zcmM7YS54YyYmXy5vaChhKTthPWMuY2FsbChkLGIpfXJldHVybiBhfTtfLmhoPWZ1bmN0aW9uKGEpe2E9YVtiaF07cmV0dXJuIGEgaW5zdGFuY2VvZiBiZD9hOm51bGx9O3BoPSJfX2Nsb3N1cmVfZXZlbnRzX2ZuXyIrKE1hdGgucmFuZG9tKCkqMUU5Pj4+MCk7Zmg9ZnVuY3Rpb24oYSl7aWYodHlwZW9mIGE9PT0iZnVuY3Rpb24iKXJldHVybiBhO2FbcGhdfHwoYVtwaF09ZnVuY3Rpb24oYil7cmV0dXJuIGEuaGFuZGxlRXZlbnQoYil9KTtyZXR1cm4gYVtwaF19O18uSChfLkQsXy54KTtfLkQucHJvdG90eXBlW1dnXT0hMDtfLnA9Xy5ELnByb3RvdHlwZTtfLnAuSGQ9ZnVuY3Rpb24oYSl7dGhpcy5QYz1hfTtfLnAuYWRkRXZlbnRMaXN0ZW5lcj1mdW5jdGlvbihhLGIsYyxkKXtfLkYodGhpcyxhLGIsYyxkKX07Xy5wLnJlbW92ZUV2ZW50TGlzdGVuZXI9ZnVuY3Rpb24oYSxiLGMsZCl7Xy5uaCh0aGlzLGEsYixjLGQpfTsKXy5wLmRpc3BhdGNoRXZlbnQ9ZnVuY3Rpb24oYSl7dmFyIGIsYz10aGlzLlBjO2lmKGMpZm9yKGI9W107YztjPWMuUGMpYi5wdXNoKGMpO2M9dGhpcy5oZzt2YXIgZD1hLnR5cGV8fGE7aWYodHlwZW9mIGE9PT0ic3RyaW5nIilhPW5ldyBfLlljKGEsYyk7ZWxzZSBpZihhIGluc3RhbmNlb2YgXy5ZYylhLnRhcmdldD1hLnRhcmdldHx8YztlbHNle3ZhciBlPWE7YT1uZXcgXy5ZYyhkLGMpO18uTmMoYSxlKX1lPSEwO3ZhciBmO2lmKGIpZm9yKGY9Yi5sZW5ndGgtMTshYS52JiZmPj0wO2YtLSl7dmFyIGc9YS5pPWJbZl07ZT1xaChnLGQsITAsYSkmJmV9YS52fHwoZz1hLmk9YyxlPXFoKGcsZCwhMCxhKSYmZSxhLnZ8fChlPXFoKGcsZCwhMSxhKSYmZSkpO2lmKGIpZm9yKGY9MDshYS52JiZmPGIubGVuZ3RoO2YrKylnPWEuaT1iW2ZdLGU9cWgoZyxkLCExLGEpJiZlO3JldHVybiBlfTsKXy5wLlQ9ZnVuY3Rpb24oKXtfLkQuVy5ULmNhbGwodGhpcyk7dGhpcy5DYSYmXy5haCh0aGlzLkNhKTt0aGlzLlBjPW51bGx9O18ucC5JPWZ1bmN0aW9uKGEsYixjLGQpe3JldHVybiB0aGlzLkNhLmFkZChTdHJpbmcoYSksYiwhMSxjLGQpfTtfLnAudmE9ZnVuY3Rpb24oYSxiLGMsZCl7cmV0dXJuIHRoaXMuQ2EuYWRkKFN0cmluZyhhKSxiLCEwLGMsZCl9O18ucC5HYT1mdW5jdGlvbihhLGIsYyxkKXt7dmFyIGU9dGhpcy5DYTtsZXQgZj1TdHJpbmcoYSkudG9TdHJpbmcoKTtmIGluIGUuaSYmKGE9ZS5pW2ZdLGI9WmcoYSxiLGMsZCksYj4tMSYmKFlnKGFbYl0pLEFycmF5LnByb3RvdHlwZS5zcGxpY2UuY2FsbChhLGIsMSksYS5sZW5ndGg9PTAmJihkZWxldGUgZS5pW2ZdLGUuai0tKSkpfX07CnZhciBxaD1mdW5jdGlvbihhLGIsYyxkKXtiPWEuQ2EuaVtTdHJpbmcoYildO2lmKCFiKXJldHVybiEwO2I9Yi5jb25jYXQoKTt2YXIgZT0hMDtmb3IobGV0IGY9MDtmPGIubGVuZ3RoOysrZil7bGV0IGc9YltmXTtpZihnJiYhZy5uYyYmZy5jYXB0dXJlPT1jKXtsZXQgaD1nLmxpc3RlbmVyLGs9Zy5IY3x8Zy5zcmM7Zy54YyYmXy4kZyhhLkNhLGcpO2U9aC5jYWxsKGssZCkhPT0hMSYmZX19cmV0dXJuIGUmJiFkLmRlZmF1bHRQcmV2ZW50ZWR9O18uRC5wcm90b3R5cGUuRGM9ZnVuY3Rpb24oYSxiKXtyZXR1cm4gdGhpcy5DYS5EYyhTdHJpbmcoYSksYil9O18uRC5wcm90b3R5cGUuWmI9ZnVuY3Rpb24oYSxiLGMsZCl7cmV0dXJuIHRoaXMuQ2EuWmIoU3RyaW5nKGEpLGIsYyxkKX07Xy5ELnByb3RvdHlwZS5oYXNMaXN0ZW5lcj1mdW5jdGlvbihhLGIpe3JldHVybiB0aGlzLkNhLmhhc0xpc3RlbmVyKGEhPT12b2lkIDA/U3RyaW5nKGEpOnZvaWQgMCxiKX07Xy5yaD1mdW5jdGlvbihhKXtzd2l0Y2goYSl7Y2FzZSAyMDA6Y2FzZSAyMDE6Y2FzZSAyMDI6Y2FzZSAyMDQ6Y2FzZSAyMDY6Y2FzZSAzMDQ6Y2FzZSAxMjIzOnJldHVybiEwO2RlZmF1bHQ6cmV0dXJuITF9fTt2YXIgdGg7dGg9ZnVuY3Rpb24oKXt9O18uSCh0aCxfLmNkKTt0aC5wcm90b3R5cGUuaT1mdW5jdGlvbigpe3JldHVybiBuZXcgWE1MSHR0cFJlcXVlc3R9O18uc2g9bmV3IHRoO18uZGQ9UmVnRXhwKCJeKD86KFteOi8/Iy5dKyk6KT8oPzovLyg/OihbXlxcXFwvPyNdKilAKT8oW15cXFxcLz8jXSo/KSg/OjooWzAtOV0rKSk/KD89W1xcXFwvPyNdfCQpKT8oW14/I10rKT8oPzpcXD8oW14jXSopKT8oPzojKFtcXHNcXFNdKikpPyQiKTt2YXIgdmgsd2gseGg7Xy51aD1mdW5jdGlvbihhKXtfLkQuY2FsbCh0aGlzKTt0aGlzLmhlYWRlcnM9bmV3IE1hcDt0aGlzLlA9YXx8bnVsbDt0aGlzLmo9ITE7dGhpcy5pPW51bGw7dGhpcy5EPSIiO3RoaXMudj0wO3RoaXMuQj0iIjt0aGlzLkE9dGhpcy5NPXRoaXMuRj10aGlzLkw9ITE7dGhpcy5HPTA7dGhpcy5DPW51bGw7dGhpcy5PPSIiO3RoaXMuSD0hMX07Xy5IKF8udWgsXy5EKTt2aD0vXmh0dHBzPyQvaTt3aD1bIlBPU1QiLCJQVVQiXTt4aD1bXTtfLnloPWZ1bmN0aW9uKGEsYixjLGQsZSxmLGcpe3ZhciBoPW5ldyBfLnVoO3hoLnB1c2goaCk7YiYmaC5JKCJjb21wbGV0ZSIsYik7aC52YSgicmVhZHkiLGguUyk7ZiYmKGguRz1NYXRoLm1heCgwLGYpKTtnJiYoaC5IPWcpO2guc2VuZChhLGMsZCxlKX07Xy51aC5wcm90b3R5cGUuUz1mdW5jdGlvbigpe3RoaXMuZGlzcG9zZSgpO18ueWEoeGgsdGhpcyl9OwpfLnVoLnByb3RvdHlwZS5zZW5kPWZ1bmN0aW9uKGEsYixjLGQpe2lmKHRoaXMuaSl0aHJvdyBFcnJvcigiSmAiK3RoaXMuRCsiYCIrYSk7Yj1iP2IudG9VcHBlckNhc2UoKToiR0VUIjt0aGlzLkQ9YTt0aGlzLkI9IiI7dGhpcy52PTA7dGhpcy5MPSExO3RoaXMuaj0hMDt0aGlzLmk9dGhpcy5QP3RoaXMuUC5pKCk6Xy5zaC5pKCk7dGhpcy5pLm9ucmVhZHlzdGF0ZWNoYW5nZT0oMCxfLnFmKSgoMCxfLkcpKHRoaXMuTix0aGlzKSk7dHJ5e3RoaXMuTT0hMCx0aGlzLmkub3BlbihiLFN0cmluZyhhKSwhMCksdGhpcy5NPSExfWNhdGNoKGYpe3poKHRoaXMsZik7cmV0dXJufWE9Y3x8IiI7Yz1uZXcgTWFwKHRoaXMuaGVhZGVycyk7aWYoZClpZihPYmplY3QuZ2V0UHJvdG90eXBlT2YoZCk9PT1PYmplY3QucHJvdG90eXBlKWZvcih2YXIgZSBpbiBkKWMuc2V0KGUsZFtlXSk7ZWxzZSBpZih0eXBlb2YgZC5rZXlzPT09ImZ1bmN0aW9uIiYmdHlwZW9mIGQuZ2V0PT09ImZ1bmN0aW9uIilmb3IobGV0IGYgb2YgZC5rZXlzKCkpYy5zZXQoZiwKZC5nZXQoZikpO2Vsc2UgdGhyb3cgRXJyb3IoIktgIitTdHJpbmcoZCkpO2Q9QXJyYXkuZnJvbShjLmtleXMoKSkuZmluZChmPT4iY29udGVudC10eXBlIj09Zi50b0xvd2VyQ2FzZSgpKTtlPV8udS5Gb3JtRGF0YSYmYSBpbnN0YW5jZW9mIF8udS5Gb3JtRGF0YTshXy54YSh3aCxiKXx8ZHx8ZXx8Yy5zZXQoIkNvbnRlbnQtVHlwZSIsImFwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZDtjaGFyc2V0PXV0Zi04Iik7Zm9yKGxldCBbZixnXW9mIGMpdGhpcy5pLnNldFJlcXVlc3RIZWFkZXIoZixnKTt0aGlzLk8mJih0aGlzLmkucmVzcG9uc2VUeXBlPXRoaXMuTyk7IndpdGhDcmVkZW50aWFscyJpbiB0aGlzLmkmJnRoaXMuaS53aXRoQ3JlZGVudGlhbHMhPT10aGlzLkgmJih0aGlzLmkud2l0aENyZWRlbnRpYWxzPXRoaXMuSCk7dHJ5e3RoaXMuQyYmKGNsZWFyVGltZW91dCh0aGlzLkMpLHRoaXMuQz1udWxsKSx0aGlzLkc+MCYmKHRoaXMuQz1zZXRUaW1lb3V0KHRoaXMuVS5iaW5kKHRoaXMpLAp0aGlzLkcpKSx0aGlzLkY9ITAsdGhpcy5pLnNlbmQoYSksdGhpcy5GPSExfWNhdGNoKGYpe3poKHRoaXMsZil9fTtfLnVoLnByb3RvdHlwZS5VPWZ1bmN0aW9uKCl7dHlwZW9mIEVkIT0idW5kZWZpbmVkIiYmdGhpcy5pJiYodGhpcy5CPSJUaW1lZCBvdXQgYWZ0ZXIgIit0aGlzLkcrIm1zLCBhYm9ydGluZyIsdGhpcy52PTgsdGhpcy5kaXNwYXRjaEV2ZW50KCJ0aW1lb3V0IiksdGhpcy5hYm9ydCg4KSl9O3ZhciB6aD1mdW5jdGlvbihhLGIpe2Euaj0hMTthLmkmJihhLkE9ITAsYS5pLmFib3J0KCksYS5BPSExKTthLkI9YjthLnY9NTtBaChhKTtCaChhKX0sQWg9ZnVuY3Rpb24oYSl7YS5MfHwoYS5MPSEwLGEuZGlzcGF0Y2hFdmVudCgiY29tcGxldGUiKSxhLmRpc3BhdGNoRXZlbnQoImVycm9yIikpfTsKXy51aC5wcm90b3R5cGUuYWJvcnQ9ZnVuY3Rpb24oYSl7dGhpcy5pJiZ0aGlzLmomJih0aGlzLmo9ITEsdGhpcy5BPSEwLHRoaXMuaS5hYm9ydCgpLHRoaXMuQT0hMSx0aGlzLnY9YXx8Nyx0aGlzLmRpc3BhdGNoRXZlbnQoImNvbXBsZXRlIiksdGhpcy5kaXNwYXRjaEV2ZW50KCJhYm9ydCIpLEJoKHRoaXMpKX07Xy51aC5wcm90b3R5cGUuVD1mdW5jdGlvbigpe3RoaXMuaSYmKHRoaXMuaiYmKHRoaXMuaj0hMSx0aGlzLkE9ITAsdGhpcy5pLmFib3J0KCksdGhpcy5BPSExKSxCaCh0aGlzLCEwKSk7Xy51aC5XLlQuY2FsbCh0aGlzKX07Xy51aC5wcm90b3R5cGUuTj1mdW5jdGlvbigpe3RoaXMuS3x8KHRoaXMuTXx8dGhpcy5GfHx0aGlzLkE/Q2godGhpcyk6dGhpcy5SKCkpfTtfLnVoLnByb3RvdHlwZS5SPWZ1bmN0aW9uKCl7Q2godGhpcyl9Owp2YXIgQ2g9ZnVuY3Rpb24oYSl7aWYoYS5qJiZ0eXBlb2YgRWQhPSJ1bmRlZmluZWQiKWlmKGEuRiYmXy5EaChhKT09NClzZXRUaW1lb3V0KGEuTi5iaW5kKGEpLDApO2Vsc2UgaWYoYS5kaXNwYXRjaEV2ZW50KCJyZWFkeXN0YXRlY2hhbmdlIiksXy5EaChhKT09NCl7YS5qPSExO3RyeXtpZihhLk9iKCkpYS5kaXNwYXRjaEV2ZW50KCJjb21wbGV0ZSIpLGEuZGlzcGF0Y2hFdmVudCgic3VjY2VzcyIpO2Vsc2V7YS52PTY7dHJ5e3ZhciBiPV8uRGgoYSk+Mj9hLmkuc3RhdHVzVGV4dDoiIn1jYXRjaChjKXtiPSIifWEuQj1iKyIgWyIrYS5zYigpKyJdIjtBaChhKX19ZmluYWxseXtCaChhKX19fSxCaD1mdW5jdGlvbihhLGIpe2lmKGEuaSl7YS5DJiYoY2xlYXJUaW1lb3V0KGEuQyksYS5DPW51bGwpO2xldCBjPWEuaTthLmk9bnVsbDtifHxhLmRpc3BhdGNoRXZlbnQoInJlYWR5Iik7dHJ5e2Mub25yZWFkeXN0YXRlY2hhbmdlPW51bGx9Y2F0Y2goZCl7fX19OwpfLnVoLnByb3RvdHlwZS5pc0FjdGl2ZT1mdW5jdGlvbigpe3JldHVybiEhdGhpcy5pfTtfLnVoLnByb3RvdHlwZS5PYj1mdW5jdGlvbigpe3ZhciBhPXRoaXMuc2IoKSxiO2lmKCEoYj1fLnJoKGEpKSl7aWYoYT1hPT09MClhPV8uZWQoU3RyaW5nKHRoaXMuRCkpLGE9IXZoLnRlc3QoYSk7Yj1hfXJldHVybiBifTtfLkRoPWZ1bmN0aW9uKGEpe3JldHVybiBhLmk/YS5pLnJlYWR5U3RhdGU6MH07Xy51aC5wcm90b3R5cGUuc2I9ZnVuY3Rpb24oKXt0cnl7cmV0dXJuIF8uRGgodGhpcyk+Mj90aGlzLmkuc3RhdHVzOi0xfWNhdGNoKGEpe3JldHVybi0xfX07Xy51aC5wcm90b3R5cGUuRWM9ZnVuY3Rpb24oKXt0cnl7cmV0dXJuIHRoaXMuaT90aGlzLmkucmVzcG9uc2VUZXh0OiIifWNhdGNoKGEpe3JldHVybiIifX07dmFyIEJnPWNsYXNze3NlbmQoYSxiPSgpPT57fSxjPSgpPT57fSl7Xy55aChhLnVybCxkPT57ZD1kLnRhcmdldDtkLk9iKCk/YihkLkVjKCkpOmMoZC5zYigpKX0sYS5EZCxhLmJvZHksYS5RYyxhLlNiLGEud2l0aENyZWRlbnRpYWxzKX1HYygpe3JldHVybiAxfX07dmFyIEVoPWNsYXNzIGV4dGVuZHMgXy54e2NvbnN0cnVjdG9yKGEsYil7c3VwZXIoKTt0aGlzLmk9Yjt0aGlzLlM9MDt0aGlzLmNhPV8uVmMoXy5QKGEsMjEpLCIiKTt0aGlzLmdhPV8uV2MoXy5RKGEsMjYpLDApO3RoaXMuZWE9Xy5XYyhfLlEoYSwyNyksMCk7dGhpcy5WPV8uVmMoXy5QKGEsMjgpLCIiKTt0aGlzLm5hPV8uV2MoXy5QZShhLDI5KSwtMSk7dGhpcy5vYT1fLldjKF8uUGUoYSw0KSwwKTt0aGlzLlo9Xy5XYyhfLlBlKGEsNSksLTEpO3RoaXMuSD1fLlZjKF8uUChhLDcpLCIiKTt0aGlzLk89Xy5WYyhfLlAoYSw2KSwiIik7dGhpcy5OPV8uVmMoXy5QKGEsOCksIiIpO3RoaXMuTT1fLlEoYSw5KTt0aGlzLmhhPSEhXy5MKGEsMTEpO3RoaXMuUD0hIV8uTChhLDEyKTt0aGlzLmo9Xy5PZShhLDIyKTt0aGlzLkE9Xy5PZShhLDI0KTt0aGlzLlU9Xy5PZShhLDIzKTt0aGlzLnY9Xy56YihfLkhlKGEsMTcpKSE9bnVsbD9fLk4oYSwxNykuc3BsaXQoIiwiKTpbXTt2YXIgYz1fLk9lKGEsCjEpO3RoaXMuRj1jIT1udWxsPyEhYzohMTtfLkwoYSwzNyk7dGhpcy5MPSEhXy5MKGEsMzApO3RoaXMuQj0ib2ctIitYYygpO3RoaXMuRD0hIV8uTChhLDMxKTt0aGlzLkM9ISFfLkwoYSwzNik7dGhpcy5SPSEhXy5MKGEsMzQpO2lmKHRoaXMuRil7YT1fLlZjKF8uUChiLDUpKTthPW5ldyBfLkVnKDM3MyxhKTthLkE9MUUzO2E9Xy5DZyhhKTthLkM9ITA7dGhpcy5MJiZ0aGlzLmomJihhLkI9ITApO2EuRD1UYzthLmZiPTEyMjUwNTY5NTtpZih0aGlzLnYubGVuZ3RoIT0wKXtiPW5ldyBfLlllO2ZvcihjPTA7Yzx0aGlzLnYubGVuZ3RoO2MrKyl7bGV0IGQ9TnVtYmVyKHRoaXMudltjXSk7aXNOYU4oZCl8fGQ9PTB8fF8ucGMoYiwzLF8ua2IsZCxfLmxiKX1hLmk9Yn1fLndmKHRoaXMsYSk7dGhpcy5HPV8uRGcoYSl9fWxvZyhhLGI9bnVsbCl7dmFyIGM9dGhpcy5GO2I9Ynx8bmV3IF8uVjtfLlQoYiwxLGEpO3ZhciBkPSsrdGhpcy5TO18uUyhiLDM4LGQpO18uUyhiLDIsdGhpcy5vYSk7Xy55KGIsCjYsdGhpcy5jYSk7ZD1fLkooYixKZyw1Nyl8fG5ldyBKZztfLlQoZCwxLHRoaXMuZ2EpO18uVChkLDIsdGhpcy5lYSk7Xy55KGQsMyx0aGlzLlYpO18uUyhkLDQsdGhpcy5uYSk7Xy5LKGIsNTcsZCk7Yi5EKHRoaXMuWik7dGhpcy5VJiZfLnooYiw1MiwhMCk7Xy55KGIsMTEsdGhpcy5PKTtfLnkoYiwxMCx0aGlzLkgpO18ueShiLDUsdGhpcy5OKTt3aW5kb3cucGVyZm9ybWFuY2UmJndpbmRvdy5wZXJmb3JtYW5jZS50aW1pbmcmJl8uUWUoYiwxNCx3aW5kb3cucGVyZm9ybWFuY2Uubm93KCkpO18uVChiLDEzLHRoaXMuTSk7Xy56KGIsMTYsdGhpcy5oYSk7Xy56KGIsMTcsdGhpcy5QKTtfLnkoYiwxOSx0aGlzLkIpO2Q9MDtfLlFnKHRoaXMuaSkmJihkfD0xKTtfLk9lKHRoaXMuaSwzKSYmKGR8PTQpO18uUCh0aGlzLmksNykmJihkfD04KTtfLk9lKHRoaXMuaSw5KSYmKGR8PTE2KTtfLk9lKHRoaXMuaSwxMCkmJihkfD0zMik7Xy5PZSh0aGlzLmksMTEpJiYoZHw9NjQpO18uUyhiLDEyLApkKTt0aGlzLkQmJl8ueihiLDU5LHRoaXMuRCk7dGhpcy5DJiZ0aGlzLmomJl8ueihiLDY0LHRoaXMuQyk7aWYoYT09PTF8fGE9PT02NSlfLnooYiw1MSx0aGlzLmopLHRoaXMuQSYmXy56KGIsNTYsdGhpcy5BKTtfLnooYiw2Mix0aGlzLlIpO18ueihiLDU1LHNlbGYhPXRvcCk7YT1uZXcgXy5kZztfLmNnKGEsYi5sYSgpKTtjJiZfLnZnKHRoaXMuRyxhKX19O3ZhciBHaDtfLkZoPWZ1bmN0aW9uKGEsYixjPTk4LGQ9bmV3IF8uVil7aWYoYS5pKXtsZXQgZT1uZXcgSWc7Xy55KGUsMSxiLm1lc3NhZ2UpO18ueShlLDIsYi5zdGFjayk7Xy5TKGUsMyxiLmxpbmVOdW1iZXIpO18uVChlLDUsMSk7Xy5LKGQsNDAsZSk7YS5pLmxvZyhjLGQpfX07R2g9Y2xhc3N7Y29uc3RydWN0b3IoYSl7dGhpcy5pPW51bGw7Xy5MKGEsNCwhMCl9bG9nKGEsYj1uZXcgXy5WKXtfLkZoKHRoaXMsYSw5OCxiKX19O3ZhciBIaDtIaD1mdW5jdGlvbihhKXtyZXR1cm4gdHlwZW9mIGEuY2xhc3NOYW1lPT0ic3RyaW5nIj9hLmNsYXNzTmFtZTphLmdldEF0dHJpYnV0ZSYmYS5nZXRBdHRyaWJ1dGUoImNsYXNzIil8fCIifTtfLkloPWZ1bmN0aW9uKGEpe3JldHVybiBhLmNsYXNzTGlzdD9hLmNsYXNzTGlzdDpIaChhKS5tYXRjaCgvXFMrL2cpfHxbXX07Xy5KaD1mdW5jdGlvbihhLGIpe3R5cGVvZiBhLmNsYXNzTmFtZT09InN0cmluZyI/YS5jbGFzc05hbWU9YjphLnNldEF0dHJpYnV0ZSYmYS5zZXRBdHRyaWJ1dGUoImNsYXNzIixiKX07Xy5LaD1mdW5jdGlvbihhLGIpe3JldHVybiBhLmNsYXNzTGlzdD9hLmNsYXNzTGlzdC5jb250YWlucyhiKTpfLnhhKF8uSWgoYSksYil9O18uTGg9ZnVuY3Rpb24oYSxiKXtpZihhLmNsYXNzTGlzdClhLmNsYXNzTGlzdC5hZGQoYik7ZWxzZSBpZighXy5LaChhLGIpKXtsZXQgYz1IaChhKTtfLkpoKGEsYysoYy5sZW5ndGg+MD8iICIrYjpiKSl9fTsKXy5NaD1mdW5jdGlvbihhLGIpe2EuY2xhc3NMaXN0P2EuY2xhc3NMaXN0LnJlbW92ZShiKTpfLktoKGEsYikmJl8uSmgoYSxBcnJheS5wcm90b3R5cGUuZmlsdGVyLmNhbGwoXy5JaChhKSxmdW5jdGlvbihjKXtyZXR1cm4gYyE9Yn0pLmpvaW4oIiAiKSl9O3ZhciBOaD1jbGFzc3tjb25zdHJ1Y3Rvcigpe3ZhciBhO3dpbmRvdy5nYmFyXyYmd2luZG93LmdiYXJfLkNPTkZJRz9hPXdpbmRvdy5nYmFyXy5DT05GSUdbMF18fHt9OmE9W107dGhpcy5qPW5ldyBVZyhhKTthPU9nfHwoT2c9TmcoJ1tbbnVsbCxudWxsLG51bGwsIjAiXV0nKSk7YWMoYSk7YT1fLkoodGhpcy5qLFNnLDMpfHxuZXcgU2c7dGhpcy5CPV8uSih0aGlzLmosXy5SZyw0KXx8bmV3IF8uUmc7dGhpcy5DPW5ldyBFaChhLHRoaXMuQik7dGhpcy5BPV8uSih0aGlzLmosUGcsMSl8fG5ldyBQZzthPV8uSih0aGlzLmosVGcsNil8fG5ldyBUZzt0aGlzLnY9bmV3IEdoKGEpO3RoaXMudi5pPXRoaXMuQ31pKCl7cmV0dXJuIHRoaXMuQ319O3ZhciBQaCxRaCxSaDtQaD1mdW5jdGlvbihhKXt2YXIgYj1uZXcgXy5PaDtiLnJlamVjdChhKTtyZXR1cm4gYn07UWg9ZnVuY3Rpb24oYSl7aWYoYS52Lmxlbmd0aD4wKXt2YXIgYj1hLmkhPT12b2lkIDAsYz1hLmohPT12b2lkIDA7aWYoYnx8Yyl7Yj1iP2EuQTphLkI7Yz1hLnY7YS52PVtdO3RyeXtfLldkKGMsYixhKX1jYXRjaChkKXtjb25zb2xlLmVycm9yKGQpfX19fTsKXy5PaD1jbGFzc3tjb25zdHJ1Y3RvcihhKXt0aGlzLmk9YTt0aGlzLmo9dm9pZCAwO3RoaXMudj1bXX10aGVuKGEsYixjKXt0aGlzLnYucHVzaChuZXcgUmgoYSxiLGMpKTtRaCh0aGlzKX1yZXNvbHZlKGEpe2lmKHRoaXMuaSE9PXZvaWQgMHx8dGhpcy5qIT09dm9pZCAwKXRocm93IEVycm9yKCJMIik7dGhpcy5pPWE7UWgodGhpcyl9cmVqZWN0KGEpe2lmKHRoaXMuaSE9PXZvaWQgMHx8dGhpcy5qIT09dm9pZCAwKXRocm93IEVycm9yKCJMIik7dGhpcy5qPWE7UWgodGhpcyl9QShhKXthLmomJmEuai5jYWxsKGEuaSx0aGlzLmkpfUIoYSl7YS52JiZhLnYuY2FsbChhLmksdGhpcy5qKX19O1JoPWNsYXNze2NvbnN0cnVjdG9yKGEsYixjKXt0aGlzLmo9YTt0aGlzLnY9Yjt0aGlzLmk9Y319O18uU2g9YT0+e3ZhciBiPSJ5YiI7aWYoYS55YiYmYS5oYXNPd25Qcm9wZXJ0eShiKSlyZXR1cm4gYS55YjtiPW5ldyBhO3JldHVybiBhLnliPWJ9O18uVz1jbGFzc3tjb25zdHJ1Y3Rvcigpe3RoaXMuaT1uZXcgXy5PaDt0aGlzLmo9bmV3IF8uT2g7dGhpcy5CPW5ldyBfLk9oO3RoaXMudj1uZXcgXy5PaDt0aGlzLkE9bmV3IF8uT2h9RCgpe3JldHVybiB0aGlzLkJ9SCgpe3JldHVybiBQaChFcnJvcigiTSIpKX1NKCl7cmV0dXJuIFBoKEVycm9yKCJOIikpfUcoKXtyZXR1cm4gUGgoRXJyb3IoIk8iKSl9WCgpe3JldHVybiBQaChFcnJvcigiUCIpKX1GKCl7cmV0dXJuIG5ldyBfLk9oKCExKX1LKCl7cmV0dXJuIHRoaXMuan1DKCl7cmV0dXJuIHRoaXMuaX1MKCl7cmV0dXJuIHRoaXMudn1OKCl7cmV0dXJuIHRoaXMuQX1zdGF0aWMgaSgpe3JldHVybiBfLlNoKF8uVyl9fTtfLmZkLnByb3RvdHlwZS5leHBhbmQ9ZnVuY3Rpb24oYSxiLGMsZCl7Xy5KZChhKT8odGhpcy50b3AtPWEudG9wLHRoaXMucmlnaHQrPWEucmlnaHQsdGhpcy5ib3R0b20rPWEuYm90dG9tLHRoaXMubGVmdC09YS5sZWZ0KToodGhpcy50b3AtPWEsdGhpcy5yaWdodCs9TnVtYmVyKGIpLHRoaXMuYm90dG9tKz1OdW1iZXIoYyksdGhpcy5sZWZ0LT1OdW1iZXIoZCkpO3JldHVybiB0aGlzfTtfLmZkLnByb3RvdHlwZS5jZWlsPWZ1bmN0aW9uKCl7dGhpcy50b3A9TWF0aC5jZWlsKHRoaXMudG9wKTt0aGlzLnJpZ2h0PU1hdGguY2VpbCh0aGlzLnJpZ2h0KTt0aGlzLmJvdHRvbT1NYXRoLmNlaWwodGhpcy5ib3R0b20pO3RoaXMubGVmdD1NYXRoLmNlaWwodGhpcy5sZWZ0KTtyZXR1cm4gdGhpc307Cl8uZmQucHJvdG90eXBlLmZsb29yPWZ1bmN0aW9uKCl7dGhpcy50b3A9TWF0aC5mbG9vcih0aGlzLnRvcCk7dGhpcy5yaWdodD1NYXRoLmZsb29yKHRoaXMucmlnaHQpO3RoaXMuYm90dG9tPU1hdGguZmxvb3IodGhpcy5ib3R0b20pO3RoaXMubGVmdD1NYXRoLmZsb29yKHRoaXMubGVmdCk7cmV0dXJuIHRoaXN9O18uZmQucHJvdG90eXBlLnJvdW5kPWZ1bmN0aW9uKCl7dGhpcy50b3A9TWF0aC5yb3VuZCh0aGlzLnRvcCk7dGhpcy5yaWdodD1NYXRoLnJvdW5kKHRoaXMucmlnaHQpO3RoaXMuYm90dG9tPU1hdGgucm91bmQodGhpcy5ib3R0b20pO3RoaXMubGVmdD1NYXRoLnJvdW5kKHRoaXMubGVmdCk7cmV0dXJuIHRoaXN9O2dkLnByb3RvdHlwZS5jZWlsPWZ1bmN0aW9uKCl7dGhpcy5sZWZ0PU1hdGguY2VpbCh0aGlzLmxlZnQpO3RoaXMudG9wPU1hdGguY2VpbCh0aGlzLnRvcCk7dGhpcy53aWR0aD1NYXRoLmNlaWwodGhpcy53aWR0aCk7dGhpcy5oZWlnaHQ9TWF0aC5jZWlsKHRoaXMuaGVpZ2h0KTtyZXR1cm4gdGhpc307Z2QucHJvdG90eXBlLmZsb29yPWZ1bmN0aW9uKCl7dGhpcy5sZWZ0PU1hdGguZmxvb3IodGhpcy5sZWZ0KTt0aGlzLnRvcD1NYXRoLmZsb29yKHRoaXMudG9wKTt0aGlzLndpZHRoPU1hdGguZmxvb3IodGhpcy53aWR0aCk7dGhpcy5oZWlnaHQ9TWF0aC5mbG9vcih0aGlzLmhlaWdodCk7cmV0dXJuIHRoaXN9OwpnZC5wcm90b3R5cGUucm91bmQ9ZnVuY3Rpb24oKXt0aGlzLmxlZnQ9TWF0aC5yb3VuZCh0aGlzLmxlZnQpO3RoaXMudG9wPU1hdGgucm91bmQodGhpcy50b3ApO3RoaXMud2lkdGg9TWF0aC5yb3VuZCh0aGlzLndpZHRoKTt0aGlzLmhlaWdodD1NYXRoLnJvdW5kKHRoaXMuaGVpZ2h0KTtyZXR1cm4gdGhpc307dmFyIFZoLFRoLFhoLFdoLCRoLGFpLGJpLGRpLGVpLGdpO18uVWg9ZnVuY3Rpb24oYSxiLGMpe2lmKHR5cGVvZiBiPT09InN0cmluZyIpVGgoYSxjLGIpO2Vsc2UgZm9yKGxldCBkIGluIGIpVGgoYSxiW2RdLGQpfTtWaD0vXi0tLisvO1RoPWZ1bmN0aW9uKGEsYixjKXsoYz1XaChhLGMpKSYmKFZoLnRlc3QoYyk/YS5zdHlsZS5zZXRQcm9wZXJ0eShjLGIpOmEuc3R5bGVbY109Yil9O1hoPXt9O1doPWZ1bmN0aW9uKGEsYil7dmFyIGM9WGhbYl07aWYoIWMpe3ZhciBkPWpmKGIpO2M9ZDthLnN0eWxlW2RdPT09dm9pZCAwJiYoZD1fLmpkKCkrXy5rZihkKSxhLnN0eWxlW2RdIT09dm9pZCAwJiYoYz1kKSk7WGhbYl09Y31yZXR1cm4gY307Xy5ZaD1mdW5jdGlvbihhLGIpe3ZhciBjPWEuc3R5bGVbamYoYildO3JldHVybiB0eXBlb2YgYyE9PSJ1bmRlZmluZWQiP2M6YS5zdHlsZVtXaChhLGIpXXx8IiJ9OwpfLlpoPWZ1bmN0aW9uKGEsYil7dmFyIGM9Xy5DZihhKTtyZXR1cm4gYy5kZWZhdWx0VmlldyYmYy5kZWZhdWx0Vmlldy5nZXRDb21wdXRlZFN0eWxlJiYoYT1jLmRlZmF1bHRWaWV3LmdldENvbXB1dGVkU3R5bGUoYSxudWxsKSk/YVtiXXx8YS5nZXRQcm9wZXJ0eVZhbHVlKGIpfHwiIjoiIn07JGg9ZnVuY3Rpb24oYSxiKXtyZXR1cm4gXy5aaChhLGIpfHwoYS5jdXJyZW50U3R5bGU/YS5jdXJyZW50U3R5bGVbYl06bnVsbCl8fGEuc3R5bGUmJmEuc3R5bGVbYl19O2FpPWZ1bmN0aW9uKGEpe3RyeXtyZXR1cm4gYS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKX1jYXRjaChiKXtyZXR1cm57bGVmdDowLHRvcDowLHJpZ2h0OjAsYm90dG9tOjB9fX07CmJpPWZ1bmN0aW9uKGEpe3ZhciBiPV8uQ2YoYSksYz0kaChhLCJwb3NpdGlvbiIpLGQ9Yz09ImZpeGVkInx8Yz09ImFic29sdXRlIjtmb3IoYT1hLnBhcmVudE5vZGU7YSYmYSE9YjthPWEucGFyZW50Tm9kZSlpZihhLm5vZGVUeXBlPT0xMSYmYS5ob3N0JiYoYT1hLmhvc3QpLGM9JGgoYSwicG9zaXRpb24iKSxkPWQmJmM9PSJzdGF0aWMiJiZhIT1iLmRvY3VtZW50RWxlbWVudCYmYSE9Yi5ib2R5LCFkJiYoYS5zY3JvbGxXaWR0aD5hLmNsaWVudFdpZHRofHxhLnNjcm9sbEhlaWdodD5hLmNsaWVudEhlaWdodHx8Yz09ImZpeGVkInx8Yz09ImFic29sdXRlInx8Yz09InJlbGF0aXZlIikpcmV0dXJuIGE7cmV0dXJuIG51bGx9OwpkaT1mdW5jdGlvbihhKXtmb3IodmFyIGI9bmV3IF8uZmQoMCxJbmZpbml0eSxJbmZpbml0eSwwKSxjPV8ud2QoYSksZD1jLmkuYm9keSxlPWMuaS5kb2N1bWVudEVsZW1lbnQsZj1fLkpmKGMuaSk7YT1iaShhKTspaWYoKCFfLmhkfHxhLmNsaWVudEhlaWdodCE9MHx8YSE9ZCkmJmEhPWQmJmEhPWUmJiRoKGEsIm92ZXJmbG93IikhPSJ2aXNpYmxlIil7bGV0IGc9Xy5jaShhKSxoPW5ldyBfLkhjKGEuY2xpZW50TGVmdCxhLmNsaWVudFRvcCk7Zy54Kz1oLng7Zy55Kz1oLnk7Yi50b3A9TWF0aC5tYXgoYi50b3AsZy55KTtiLnJpZ2h0PU1hdGgubWluKGIucmlnaHQsZy54K2EuY2xpZW50V2lkdGgpO2IuYm90dG9tPU1hdGgubWluKGIuYm90dG9tLGcueSthLmNsaWVudEhlaWdodCk7Yi5sZWZ0PU1hdGgubWF4KGIubGVmdCxnLngpfWQ9Zi5zY3JvbGxMZWZ0O2Y9Zi5zY3JvbGxUb3A7Yi5sZWZ0PU1hdGgubWF4KGIubGVmdCxkKTtiLnRvcD1NYXRoLm1heChiLnRvcCxmKTtjPUlmKGMuaS5kZWZhdWx0Vmlld3x8CndpbmRvdyk7Yi5yaWdodD1NYXRoLm1pbihiLnJpZ2h0LGQrYy53aWR0aCk7Yi5ib3R0b209TWF0aC5taW4oYi5ib3R0b20sZitjLmhlaWdodCk7cmV0dXJuIGIudG9wPj0wJiZiLmxlZnQ+PTAmJmIuYm90dG9tPmIudG9wJiZiLnJpZ2h0PmIubGVmdD9iOm51bGx9O18uY2k9ZnVuY3Rpb24oYSl7dmFyIGI9Xy5DZihhKSxjPW5ldyBfLkhjKDAsMCk7aWYoYT09KGI/Xy5DZihiKTpkb2N1bWVudCkuZG9jdW1lbnRFbGVtZW50KXJldHVybiBjO2E9YWkoYSk7Yj1fLndkKGIpO2I9S2YoYi5pKTtjLng9YS5sZWZ0K2IueDtjLnk9YS50b3ArYi55O3JldHVybiBjfTtlaT1mdW5jdGlvbihhKXt0eXBlb2YgYT09Im51bWJlciImJihhKz0icHgiKTtyZXR1cm4gYX07CmdpPWZ1bmN0aW9uKGEpe3ZhciBiPV8uZmk7aWYoJGgoYSwiZGlzcGxheSIpIT0ibm9uZSIpcmV0dXJuIGIoYSk7dmFyIGM9YS5zdHlsZSxkPWMuZGlzcGxheSxlPWMudmlzaWJpbGl0eSxmPWMucG9zaXRpb247Yy52aXNpYmlsaXR5PSJoaWRkZW4iO2MucG9zaXRpb249ImFic29sdXRlIjtjLmRpc3BsYXk9ImlubGluZSI7YT1iKGEpO2MuZGlzcGxheT1kO2MucG9zaXRpb249ZjtjLnZpc2liaWxpdHk9ZTtyZXR1cm4gYX07Xy5maT1mdW5jdGlvbihhKXt2YXIgYj1hLm9mZnNldFdpZHRoLGM9YS5vZmZzZXRIZWlnaHQsZD1fLmhkJiYhYiYmIWM7cmV0dXJuKGI9PT12b2lkIDB8fGQpJiZhLmdldEJvdW5kaW5nQ2xpZW50UmVjdD8oYT1haShhKSxuZXcgSWMoYS5yaWdodC1hLmxlZnQsYS5ib3R0b20tYS50b3ApKTpuZXcgSWMoYixjKX07Xy5oaT1mdW5jdGlvbihhLGIpe2Euc3R5bGUuZGlzcGxheT1iPyIiOiJub25lIn07Xy5paT1mdW5jdGlvbihhKXtyZXR1cm4icnRsIj09JGgoYSwiZGlyZWN0aW9uIil9OwpfLmppPV8uaWQ/Ik1velVzZXJTZWxlY3QiOl8uaGR8fGJlPyJXZWJraXRVc2VyU2VsZWN0IjpudWxsO3ZhciBraT1mdW5jdGlvbigpe2lmKGRlKXt2YXIgYT0vV2luZG93cyBOVCAoWzAtOS5dKykvO3JldHVybihhPWEuZXhlYyhlYSgpKSk/YVsxXToiMCJ9cmV0dXJuIF8uY2U/KGE9LzFbMHwxXVtfLl1bMC05Xy5dKy8sKGE9YS5leGVjKGVhKCkpKT9hWzBdLnJlcGxhY2UoL18vZywiLiIpOiIxMCIpOmVlPyhhPS9BbmRyb2lkXHMrKFteXCk7XSspKFwpfDspLywoYT1hLmV4ZWMoZWEoKSkpP2FbMV06IiIpOmZlfHxnZXx8aGU/KGE9Lyg/OmlQaG9uZXxDUFUpXHMrT1NccysoXFMrKS8sKGE9YS5leGVjKGVhKCkpKT9hWzFdLnJlcGxhY2UoL18vZywiLiIpOiIiKToiIn0oKTt2YXIgbGk9ZnVuY3Rpb24oYSl7cmV0dXJuKGE9YS5leGVjKGVhKCkpKT9hWzFdOiIifSxtaT1mdW5jdGlvbigpe2lmKG1lKXJldHVybiBsaSgvRmlyZWZveFwvKFswLTkuXSspLyk7aWYoXy5hZXx8YmV8fCRkKXJldHVybiBsZTtpZihfLnFlKXtpZih1YSgpfHx2YSgpKXt2YXIgYT1saSgvQ3JpT1NcLyhbMC05Ll0rKS8pO2lmKGEpcmV0dXJuIGF9cmV0dXJuIGxpKC9DaHJvbWVcLyhbMC05Ll0rKS8pfWlmKHJlJiYhdWEoKSlyZXR1cm4gbGkoL1ZlcnNpb25cLyhbMC05Ll0rKS8pO2lmKG5lfHxvZSl7aWYoYT0vVmVyc2lvblwvKFxTKykuKk1vYmlsZVwvKFxTKykvLmV4ZWMoZWEoKSkpcmV0dXJuIGFbMV0rIi4iK2FbMl19ZWxzZSBpZihwZSlyZXR1cm4oYT1saSgvQW5kcm9pZFxzKyhbMC05Ll0rKS8pKT9hOmxpKC9WZXJzaW9uXC8oWzAtOS5dKykvKTtyZXR1cm4iIn0oKTt2YXIgb2ksbmk7Cl8ucGk9ZnVuY3Rpb24oYSxiLGMsZCxlLGYsZyxoLGspe3ZhciBsO2lmKGw9Yy5vZmZzZXRQYXJlbnQpe3ZhciBtPWwudGFnTmFtZT09IkhUTUwifHxsLnRhZ05hbWU9PSJCT0RZIjtpZighbXx8JGgobCwicG9zaXRpb24iKSE9InN0YXRpYyIpe3ZhciBuPV8uY2kobCk7aWYoIW0pe209Xy5paShsKTt2YXIgcjtpZihyPW0pe3ZhciBxPXJlJiZpYShtaSwxMCk+PTA7aWYocj1pZSlyPWlhKGtpLDEwKT49MDt2YXIgdD1fLnFlJiZpYShtaSw4NSk+PTA7cj1fLmlkfHxxfHxyfHx0fW09cj8tbC5zY3JvbGxMZWZ0Om0mJiRoKGwsIm92ZXJmbG93WCIpIT0idmlzaWJsZSI/bC5zY3JvbGxXaWR0aC1sLmNsaWVudFdpZHRoLWwuc2Nyb2xsTGVmdDpsLnNjcm9sbExlZnQ7bj1BZihuLG5ldyBfLkhjKG0sbC5zY3JvbGxUb3ApKX19fWw9bnx8bmV3IF8uSGM7bj1fLmNpKGEpO209Z2koYSk7bj1uZXcgZ2Qobi54LG4ueSxtLndpZHRoLG0uaGVpZ2h0KTtpZihtPWRpKGEpKXQ9bmV3IGdkKG0ubGVmdCxtLnRvcCwKbS5yaWdodC1tLmxlZnQsbS5ib3R0b20tbS50b3ApLG09TWF0aC5tYXgobi5sZWZ0LHQubGVmdCkscj1NYXRoLm1pbihuLmxlZnQrbi53aWR0aCx0LmxlZnQrdC53aWR0aCksbTw9ciYmKHE9TWF0aC5tYXgobi50b3AsdC50b3ApLHQ9TWF0aC5taW4obi50b3Arbi5oZWlnaHQsdC50b3ArdC5oZWlnaHQpLHE8PXQmJihuLmxlZnQ9bSxuLnRvcD1xLG4ud2lkdGg9ci1tLG4uaGVpZ2h0PXQtcSkpO209Xy53ZChhKTtyPV8ud2QoYyk7aWYobS5pIT1yLmkpe209bS5pLmJvZHk7dmFyIEI9bTtyPXIuaS5kZWZhdWx0VmlldztxPW5ldyBfLkhjKDAsMCk7dD1fLkxmKF8uQ2YoQikpO2lmKF8uWmQodCwicGFyZW50Iikpe2Rve2lmKHQ9PXIpdmFyIEM9Xy5jaShCKTtlbHNlIEM9YWkoQiksQz1uZXcgXy5IYyhDLmxlZnQsQy50b3ApO3EueCs9Qy54O3EueSs9Qy55fXdoaWxlKHQmJnQhPXImJnQhPXQucGFyZW50JiYoQj10LmZyYW1lRWxlbWVudCkmJih0PXQucGFyZW50KSl9cj1xO209QWYocixfLmNpKG0pKTsKbi5sZWZ0Kz1tLng7bi50b3ArPW0ueX1hPW5pKGEsYik7Yj1uLmxlZnQ7YSY0P2IrPW4ud2lkdGg6YSYyJiYoYis9bi53aWR0aC8yKTtiPW5ldyBfLkhjKGIsbi50b3ArKGEmMT9uLmhlaWdodDowKSk7Yj1BZihiLGwpO2UmJihiLngrPShhJjQ/LTE6MSkqZS54LGIueSs9KGEmMT8tMToxKSplLnkpO2lmKGcpaWYoayl2YXIgRT1rO2Vsc2UgaWYoRT1kaShjKSlFLnRvcC09bC55LEUucmlnaHQtPWwueCxFLmJvdHRvbS09bC55LEUubGVmdC09bC54O3JldHVybiBvaShiLGMsZCxmLEUsZyxoKX07Cm9pPWZ1bmN0aW9uKGEsYixjLGQsZSxmLGcpe2E9emYoYSk7dmFyIGg9bmkoYixjKTtjPWdpKGIpO2c9Zz9uZXcgSWMoZy53aWR0aCxnLmhlaWdodCk6bmV3IEljKGMud2lkdGgsYy5oZWlnaHQpO2E9emYoYSk7Zz1uZXcgSWMoZy53aWR0aCxnLmhlaWdodCk7dmFyIGs9MDtpZihkfHxoIT0wKWgmND9hLngtPWcud2lkdGgrKGQ/ZC5yaWdodDowKTpoJjI/YS54LT1nLndpZHRoLzI6ZCYmKGEueCs9ZC5sZWZ0KSxoJjE/YS55LT1nLmhlaWdodCsoZD9kLmJvdHRvbTowKTpkJiYoYS55Kz1kLnRvcCk7ZiYmKGU/KGQ9ZyxoPTAsKGYmNjUpPT02NSYmKGEueDxlLmxlZnR8fGEueD49ZS5yaWdodCkmJihmJj0tMiksKGYmMTMyKT09MTMyJiYoYS55PGUudG9wfHxhLnk+PWUuYm90dG9tKSYmKGYmPS01KSxhLng8ZS5sZWZ0JiZmJjEmJihhLng9ZS5sZWZ0LGh8PTEpLGYmMTYmJihrPWEueCxhLng8ZS5sZWZ0JiYoYS54PWUubGVmdCxofD00KSxhLngrZC53aWR0aD5lLnJpZ2h0JiYoZC53aWR0aD0KTWF0aC5taW4oZS5yaWdodC1hLngsaytkLndpZHRoLWUubGVmdCksZC53aWR0aD1NYXRoLm1heChkLndpZHRoLDApLGh8PTQpKSxhLngrZC53aWR0aD5lLnJpZ2h0JiZmJjEmJihhLng9TWF0aC5tYXgoZS5yaWdodC1kLndpZHRoLGUubGVmdCksaHw9MSksZiYyJiYoaHw9KGEueDxlLmxlZnQ/MTY6MCl8KGEueCtkLndpZHRoPmUucmlnaHQ/MzI6MCkpLGEueTxlLnRvcCYmZiY0JiYoYS55PWUudG9wLGh8PTIpLGYmMzImJihrPWEueSxhLnk8ZS50b3AmJihhLnk9ZS50b3AsaHw9OCksYS55K2QuaGVpZ2h0PmUuYm90dG9tJiYoZC5oZWlnaHQ9TWF0aC5taW4oZS5ib3R0b20tYS55LGsrZC5oZWlnaHQtZS50b3ApLGQuaGVpZ2h0PU1hdGgubWF4KGQuaGVpZ2h0LDApLGh8PTgpKSxhLnkrZC5oZWlnaHQ+ZS5ib3R0b20mJmYmNCYmKGEueT1NYXRoLm1heChlLmJvdHRvbS1kLmhlaWdodCxlLnRvcCksaHw9MiksZiY4JiYoaHw9KGEueTxlLnRvcD82NDowKXwoYS55K2QuaGVpZ2h0PmUuYm90dG9tPwoxMjg6MCkpLGU9aCk6ZT0yNTYsaz1lKTtmPW5ldyBnZCgwLDAsMCwwKTtmLmxlZnQ9YS54O2YudG9wPWEueTtmLndpZHRoPWcud2lkdGg7Zi5oZWlnaHQ9Zy5oZWlnaHQ7ZT1rO2lmKGUmNDk2KXJldHVybiBlO2E9bmV3IF8uSGMoZi5sZWZ0LGYudG9wKTthIGluc3RhbmNlb2YgXy5IYz8oZz1hLngsYT1hLnkpOihnPWEsYT12b2lkIDApO2Iuc3R5bGUubGVmdD1laShnKTtiLnN0eWxlLnRvcD1laShhKTtnPW5ldyBJYyhmLndpZHRoLGYuaGVpZ2h0KTtjPT1nfHxjJiZnJiZjLndpZHRoPT1nLndpZHRoJiZjLmhlaWdodD09Zy5oZWlnaHR8fChjPWcsYj1iLnN0eWxlLF8uaWQ/Yi5Nb3pCb3hTaXppbmc9ImJvcmRlci1ib3giOl8uaGQ/Yi5XZWJraXRCb3hTaXppbmc9ImJvcmRlci1ib3giOmIuYm94U2l6aW5nPSJib3JkZXItYm94IixiLndpZHRoPU1hdGgubWF4KGMud2lkdGgsMCkrInB4IixiLmhlaWdodD1NYXRoLm1heChjLmhlaWdodCwwKSsicHgiKTtyZXR1cm4gZX07Cm5pPWZ1bmN0aW9uKGEsYil7cmV0dXJuKGImOCYmXy5paShhKT9iXjQ6YikmLTl9O18uSChfLmtkLF8uRCk7Xy5rZC5wcm90b3R5cGUuaGFuZGxlRXZlbnQ9ZnVuY3Rpb24oYSl7dmFyIGI9YS5hYigpO2I9bmV3IF8uWmMoYik7Yi50eXBlPWEudHlwZT09ImZvY3VzaW4ifHxhLnR5cGU9PSJmb2N1cyI/ImZvY3VzaW4iOiJmb2N1c291dCI7dGhpcy5kaXNwYXRjaEV2ZW50KGIpfTtfLmtkLnByb3RvdHlwZS5UPWZ1bmN0aW9uKCl7Xy5rZC5XLlQuY2FsbCh0aGlzKTtfLm9oKHRoaXMuaik7Xy5vaCh0aGlzLnYpO2RlbGV0ZSB0aGlzLml9O2xkLnByb3RvdHlwZS5pPWZ1bmN0aW9uKCl7fTtfLkgobWQsbGQpO21kLnByb3RvdHlwZS5pPWZ1bmN0aW9uKGEsYixjKXtfLnBpKHRoaXMuaix0aGlzLnYsYSxiLHZvaWQgMCxjLHRoaXMuQSl9O18uSChuZCxsZCk7bmQucHJvdG90eXBlLmk9ZnVuY3Rpb24oYSxiLGMpe18ucGkoKGE/Xy5DZihhKTpkb2N1bWVudCkuZG9jdW1lbnRFbGVtZW50LDAsYSxiLHRoaXMuaixjLG51bGwpfTt2YXIgcGQ9ZnVuY3Rpb24oYSxiKXthLkEoYik7YS5qPDEwMCYmKGEuaisrLGIubmV4dD1hLmksYS5pPWIpfSxxaT1jbGFzc3tjb25zdHJ1Y3RvcihhLGIpe3RoaXMudj1hO3RoaXMuQT1iO3RoaXMuaj0wO3RoaXMuaT1udWxsfWdldCgpe2lmKHRoaXMuaj4wKXt0aGlzLmotLTt2YXIgYT10aGlzLmk7dGhpcy5pPWEubmV4dDthLm5leHQ9bnVsbH1lbHNlIGE9dGhpcy52KCk7cmV0dXJuIGF9fTt2YXIgb2Q9ZnVuY3Rpb24oKXt2YXIgYT1yaSxiPW51bGw7YS5pJiYoYj1hLmksYS5pPWEuaS5uZXh0LGEuaXx8KGEuaj1udWxsKSxiLm5leHQ9bnVsbCk7cmV0dXJuIGJ9LHNpPWNsYXNze2NvbnN0cnVjdG9yKCl7dGhpcy5qPXRoaXMuaT1udWxsfWFkZChhLGIpe3ZhciBjPXFkLmdldCgpO2Muc2V0KGEsYik7dGhpcy5qP3RoaXMuai5uZXh0PWM6dGhpcy5pPWM7dGhpcy5qPWN9fSxxZD1uZXcgcWkoKCk9Pm5ldyB0aSxhPT5hLnJlc2V0KCkpLHRpPWNsYXNze2NvbnN0cnVjdG9yKCl7dGhpcy5uZXh0PXRoaXMuaT10aGlzLmo9bnVsbH1zZXQoYSxiKXt0aGlzLmo9YTt0aGlzLmk9Yjt0aGlzLm5leHQ9bnVsbH1yZXNldCgpe3RoaXMubmV4dD10aGlzLmk9dGhpcy5qPW51bGx9fTt2YXIgdWkscmQ9ITEscmk9bmV3IHNpLHdpPShhLGIpPT57dWl8fHZpKCk7cmR8fCh1aSgpLHJkPSEwKTtyaS5hZGQoYSxiKX0sdmk9KCk9Pnt2YXIgYT1Qcm9taXNlLnJlc29sdmUodm9pZCAwKTt1aT0oKT0+e2EudGhlbihzZCl9fTt2YXIgeGk9ZnVuY3Rpb24oKXt9O18ueWk9ZnVuY3Rpb24oYSl7aWYoIWEpcmV0dXJuITE7dHJ5e3JldHVybiEhYS4kZ29vZ19UaGVuYWJsZX1jYXRjaChiKXtyZXR1cm4hMX19O3ZhciBCaSxJaSxOaSxNaSxPaTtfLkFpPWZ1bmN0aW9uKGEpe3RoaXMuaT0wO3RoaXMuSz12b2lkIDA7dGhpcy5BPXRoaXMuaj10aGlzLnY9bnVsbDt0aGlzLkI9dGhpcy5DPSExO2lmKGEhPXhpKXRyeXtsZXQgYj10aGlzO2EuY2FsbCh2b2lkIDAsZnVuY3Rpb24oYyl7emkoYiwyLGMpfSxmdW5jdGlvbihjKXt6aShiLDMsYyl9KX1jYXRjaChiKXt6aSh0aGlzLDMsYil9fTtCaT1mdW5jdGlvbigpe3RoaXMubmV4dD10aGlzLnY9dGhpcy5qPXRoaXMuQT10aGlzLmk9bnVsbDt0aGlzLkI9ITF9O0JpLnByb3RvdHlwZS5yZXNldD1mdW5jdGlvbigpe3RoaXMudj10aGlzLmo9dGhpcy5BPXRoaXMuaT1udWxsO3RoaXMuQj0hMX07dmFyIENpPW5ldyBxaShmdW5jdGlvbigpe3JldHVybiBuZXcgQml9LGZ1bmN0aW9uKGEpe2EucmVzZXQoKX0pLERpPWZ1bmN0aW9uKGEsYixjKXt2YXIgZD1DaS5nZXQoKTtkLkE9YTtkLmo9YjtkLnY9YztyZXR1cm4gZH07Cl8uQWkucHJvdG90eXBlLnRoZW49ZnVuY3Rpb24oYSxiLGMpe3JldHVybiBFaSh0aGlzLCgwLF8ucWYpKHR5cGVvZiBhPT09ImZ1bmN0aW9uIj9hOm51bGwpLCgwLF8ucWYpKHR5cGVvZiBiPT09ImZ1bmN0aW9uIj9iOm51bGwpLGMpfTtfLkFpLnByb3RvdHlwZS4kZ29vZ19UaGVuYWJsZT0hMDtfLkFpLnByb3RvdHlwZS5EPWZ1bmN0aW9uKGEsYil7cmV0dXJuIEVpKHRoaXMsbnVsbCwoMCxfLnFmKShhKSxiKX07Xy5BaS5wcm90b3R5cGUuY2F0Y2g9Xy5BaS5wcm90b3R5cGUuRDtfLkFpLnByb3RvdHlwZS5jYW5jZWw9ZnVuY3Rpb24oYSl7aWYodGhpcy5pPT0wKXtsZXQgYj1uZXcgXy5GaShhKTt3aShmdW5jdGlvbigpe0dpKHRoaXMsYil9LHRoaXMpfX07CnZhciBHaT1mdW5jdGlvbihhLGIpe2lmKGEuaT09MClpZihhLnYpe3ZhciBjPWEudjtpZihjLmope3ZhciBkPTAsZT1udWxsLGY9bnVsbDtmb3IobGV0IGc9Yy5qO2cmJihnLkJ8fChkKyssZy5pPT1hJiYoZT1nKSwhKGUmJmQ+MSkpKTtnPWcubmV4dCllfHwoZj1nKTtlJiYoYy5pPT0wJiZkPT0xP0dpKGMsYik6KGY/KGQ9ZixkLm5leHQ9PWMuQSYmKGMuQT1kKSxkLm5leHQ9ZC5uZXh0Lm5leHQpOkhpKGMpLElpKGMsZSwzLGIpKSl9YS52PW51bGx9ZWxzZSB6aShhLDMsYil9LEtpPWZ1bmN0aW9uKGEsYil7YS5qfHxhLmkhPTImJmEuaSE9M3x8SmkoYSk7YS5BP2EuQS5uZXh0PWI6YS5qPWI7YS5BPWJ9LEVpPWZ1bmN0aW9uKGEsYixjLGQpe3ZhciBlPURpKG51bGwsbnVsbCxudWxsKTtlLmk9bmV3IF8uQWkoZnVuY3Rpb24oZixnKXtlLkE9Yj9mdW5jdGlvbihoKXt0cnl7bGV0IGs9Yi5jYWxsKGQsaCk7ZihrKX1jYXRjaChrKXtnKGspfX06ZjtlLmo9Yz9mdW5jdGlvbihoKXt0cnl7bGV0IGs9CmMuY2FsbChkLGgpO2s9PT12b2lkIDAmJmggaW5zdGFuY2VvZiBfLkZpP2coaCk6ZihrKX1jYXRjaChrKXtnKGspfX06Z30pO2UuaS52PWE7S2koYSxlKTtyZXR1cm4gZS5pfTtfLkFpLnByb3RvdHlwZS5HPWZ1bmN0aW9uKGEpe3RoaXMuaT0wO3ppKHRoaXMsMixhKX07Xy5BaS5wcm90b3R5cGUuSD1mdW5jdGlvbihhKXt0aGlzLmk9MDt6aSh0aGlzLDMsYSl9Owp2YXIgemk9ZnVuY3Rpb24oYSxiLGMpe2lmKGEuaT09MCl7YT09PWMmJihiPTMsYz1uZXcgVHlwZUVycm9yKCJRIikpO2EuaT0xO2E6e3ZhciBkPWMsZT1hLkcsZj1hLkg7aWYoZCBpbnN0YW5jZW9mIF8uQWkpe0tpKGQsRGkoZXx8eGksZnx8bnVsbCxhKSk7dmFyIGc9ITB9ZWxzZSBpZihfLnlpKGQpKWQudGhlbihlLGYsYSksZz0hMDtlbHNle2lmKF8uSmQoZCkpdHJ5e2xldCBoPWQudGhlbjtpZih0eXBlb2YgaD09PSJmdW5jdGlvbiIpe0xpKGQsaCxlLGYsYSk7Zz0hMDticmVhayBhfX1jYXRjaChoKXtmLmNhbGwoYSxoKTtnPSEwO2JyZWFrIGF9Zz0hMX19Z3x8KGEuSz1jLGEuaT1iLGEudj1udWxsLEppKGEpLGIhPTN8fGMgaW5zdGFuY2VvZiBfLkZpfHxNaShhLGMpKX19LExpPWZ1bmN0aW9uKGEsYixjLGQsZSl7dmFyIGY9ITEsZz1mdW5jdGlvbihrKXtmfHwoZj0hMCxjLmNhbGwoZSxrKSl9LGg9ZnVuY3Rpb24oayl7Znx8KGY9ITAsZC5jYWxsKGUsaykpfTt0cnl7Yi5jYWxsKGEsCmcsaCl9Y2F0Y2goayl7aChrKX19LEppPWZ1bmN0aW9uKGEpe2EuQ3x8KGEuQz0hMCx3aShhLkYsYSkpfSxIaT1mdW5jdGlvbihhKXt2YXIgYj1udWxsO2EuaiYmKGI9YS5qLGEuaj1iLm5leHQsYi5uZXh0PW51bGwpO2Euanx8KGEuQT1udWxsKTtyZXR1cm4gYn07Xy5BaS5wcm90b3R5cGUuRj1mdW5jdGlvbigpe2Zvcih2YXIgYTthPUhpKHRoaXMpOylJaSh0aGlzLGEsdGhpcy5pLHRoaXMuSyk7dGhpcy5DPSExfTtJaT1mdW5jdGlvbihhLGIsYyxkKXtpZihjPT0zJiZiLmomJiFiLkIpZm9yKDthJiZhLkI7YT1hLnYpYS5CPSExO2lmKGIuaSliLmkudj1udWxsLE5pKGIsYyxkKTtlbHNlIHRyeXtiLkI/Yi5BLmNhbGwoYi52KTpOaShiLGMsZCl9Y2F0Y2goZSl7T2kuY2FsbChudWxsLGUpfXBkKENpLGIpfTtOaT1mdW5jdGlvbihhLGIsYyl7Yj09Mj9hLkEuY2FsbChhLnYsYyk6YS5qJiZhLmouY2FsbChhLnYsYyl9OwpNaT1mdW5jdGlvbihhLGIpe2EuQj0hMDt3aShmdW5jdGlvbigpe2EuQiYmT2kuY2FsbChudWxsLGIpfSl9O09pPWJhO18uRmk9ZnVuY3Rpb24oYSl7Xy5hYS5jYWxsKHRoaXMsYSl9O18uSChfLkZpLF8uYWEpO18uRmkucHJvdG90eXBlLm5hbWU9ImNhbmNlbCI7Xy5QaT1mdW5jdGlvbihhLGIsYyl7aWYodHlwZW9mIGE9PT0iZnVuY3Rpb24iKWMmJihhPSgwLF8uRykoYSxjKSk7ZWxzZSBpZihhJiZ0eXBlb2YgYS5oYW5kbGVFdmVudD09ImZ1bmN0aW9uIilhPSgwLF8uRykoYS5oYW5kbGVFdmVudCxhKTtlbHNlIHRocm93IEVycm9yKCJSIik7cmV0dXJuIE51bWJlcihiKT4yMTQ3NDgzNjQ3Py0xOl8udS5zZXRUaW1lb3V0KGEsYnx8MCl9O18uSChfLnRkLF8ueCk7dmFyIFFpPVtdO18udGQucHJvdG90eXBlLkk9ZnVuY3Rpb24oYSxiLGMsZCl7cmV0dXJuIFJpKHRoaXMsYSxiLGMsZCl9O18udGQucHJvdG90eXBlLkI9ZnVuY3Rpb24oYSxiLGMsZCxlKXtyZXR1cm4gUmkodGhpcyxhLGIsYyxkLGUpfTt2YXIgUmk9ZnVuY3Rpb24oYSxiLGMsZCxlLGYpe0FycmF5LmlzQXJyYXkoYyl8fChjJiYoUWlbMF09Yy50b1N0cmluZygpKSxjPVFpKTtmb3IobGV0IGc9MDtnPGMubGVuZ3RoO2crKyl7bGV0IGg9Xy5GKGIsY1tnXSxkfHxhLmhhbmRsZUV2ZW50LGV8fCExLGZ8fGEudnx8YSk7aWYoIWgpYnJlYWs7YS5qW2gua2V5XT1ofXJldHVybiBhfTtfLnRkLnByb3RvdHlwZS52YT1mdW5jdGlvbihhLGIsYyxkKXtyZXR1cm4gU2kodGhpcyxhLGIsYyxkKX07CnZhciBTaT1mdW5jdGlvbihhLGIsYyxkLGUsZil7aWYoQXJyYXkuaXNBcnJheShjKSlmb3IobGV0IGc9MDtnPGMubGVuZ3RoO2crKylTaShhLGIsY1tnXSxkLGUsZik7ZWxzZXtiPWVoKGIsYyxkfHxhLmhhbmRsZUV2ZW50LGUsZnx8YS52fHxhKTtpZighYilyZXR1cm4gYTthLmpbYi5rZXldPWJ9cmV0dXJuIGF9O18udGQucHJvdG90eXBlLkdhPWZ1bmN0aW9uKGEsYixjLGQsZSl7aWYoQXJyYXkuaXNBcnJheShiKSlmb3IobGV0IGY9MDtmPGIubGVuZ3RoO2YrKyl0aGlzLkdhKGEsYltmXSxjLGQsZSk7ZWxzZSBjPWN8fHRoaXMuaGFuZGxlRXZlbnQsZD1fLkpkKGQpPyEhZC5jYXB0dXJlOiEhZCxlPWV8fHRoaXMudnx8dGhpcyxjPWZoKGMpLGQ9ISFkLGI9Xy5YZyhhKT9hLlpiKGIsYyxkLGUpOmE/KGE9Xy5oaChhKSk/YS5aYihiLGMsZCxlKTpudWxsOm51bGwsYiYmKF8ub2goYiksZGVsZXRlIHRoaXMualtiLmtleV0pfTsKXy5UaT1mdW5jdGlvbihhKXtfLkpjKGEuaixmdW5jdGlvbihiLGMpe3RoaXMuai5oYXNPd25Qcm9wZXJ0eShjKSYmXy5vaChiKX0sYSk7YS5qPXt9fTtfLnRkLnByb3RvdHlwZS5UPWZ1bmN0aW9uKCl7Xy50ZC5XLlQuY2FsbCh0aGlzKTtfLlRpKHRoaXMpfTtfLnRkLnByb3RvdHlwZS5oYW5kbGVFdmVudD1mdW5jdGlvbigpe3Rocm93IEVycm9yKCJTIik7fTtfLkgodWQsXy5EKTtfLnA9dWQucHJvdG90eXBlO18ucC5JYT1udWxsO18ucC55ZT1udWxsO18ucC5QYj0hMTtfLnAucWQ9LTE7Xy5wLlRiPSJ0b2dnbGVfZGlzcGxheSI7Xy5wLko9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5JYX07Xy5wLlJjPWZ1bmN0aW9uKGEpe2lmKHRoaXMuUGIpdGhyb3cgRXJyb3IoIlQiKTt0aGlzLklhPWF9O18ucC5pc1Zpc2libGU9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5QYn07Cl8ucC5SYT1mdW5jdGlvbihhKXt0aGlzLkgmJnRoaXMuSC5zdG9wKCk7dGhpcy5HJiZ0aGlzLkcuc3RvcCgpO2lmKGEpe2lmKCF0aGlzLlBiJiZ0aGlzLnlkKCkpe2lmKCF0aGlzLklhKXRocm93IEVycm9yKCJVIik7dGhpcy5WYigpO2E9Xy5DZih0aGlzLklhKTt0aGlzLkEuSShhLCJtb3VzZWRvd24iLHRoaXMuSGgsITApO3RoaXMuQS5JKGEsImJsdXIiLHRoaXMuR2gpO3RoaXMuVGI9PSJ0b2dnbGVfZGlzcGxheSI/KHRoaXMuSWEuc3R5bGUudmlzaWJpbGl0eT0idmlzaWJsZSIsXy5oaSh0aGlzLklhLCEwKSk6dGhpcy5UYj09Im1vdmVfb2Zmc2NyZWVuIiYmdGhpcy5WYigpO3RoaXMuUGI9ITA7dGhpcy5xZD1EYXRlLm5vdygpO3RoaXMuSD8oZWgodGhpcy5ILCJlbmQiLHRoaXMuY2UsITEsdGhpcyksdGhpcy5ILnBsYXkoKSk6dGhpcy5jZSgpfX1lbHNlIFVpKHRoaXMpfTtfLnAuVmI9ZnVuY3Rpb24oKXt9Owp2YXIgVWk9ZnVuY3Rpb24oYSxiKXthLlBiJiZhLmRpc3BhdGNoRXZlbnQoe3R5cGU6ImJlZm9yZWhpZGUiLHRhcmdldDpifSkmJihhLkEmJl8uVGkoYS5BKSxhLlBiPSExLGEuRz8oZWgoYS5HLCJlbmQiLE1kKGEuQmUsYiksITEsYSksYS5HLnBsYXkoKSk6YS5CZShiKSl9O18ucD11ZC5wcm90b3R5cGU7Xy5wLkJlPWZ1bmN0aW9uKGEpe3RoaXMuVGI9PSJ0b2dnbGVfZGlzcGxheSI/dGhpcy5oaCgpOnRoaXMuVGI9PSJtb3ZlX29mZnNjcmVlbiImJih0aGlzLklhLnN0eWxlLnRvcD0iLTEwMDAwcHgiKTt0aGlzLkFkKGEpfTtfLnAuaGg9ZnVuY3Rpb24oKXt0aGlzLklhLnN0eWxlLnZpc2liaWxpdHk9ImhpZGRlbiI7Xy5oaSh0aGlzLklhLCExKX07Xy5wLnlkPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZGlzcGF0Y2hFdmVudCgiYmVmb3Jlc2hvdyIpfTtfLnAuY2U9ZnVuY3Rpb24oKXt0aGlzLmRpc3BhdGNoRXZlbnQoInNob3ciKX07Cl8ucC5BZD1mdW5jdGlvbihhKXt0aGlzLmRpc3BhdGNoRXZlbnQoe3R5cGU6ImhpZGUiLHRhcmdldDphfSl9O18ucC5IaD1mdW5jdGlvbihhKXthPWEudGFyZ2V0O18uVGYodGhpcy5JYSxhKXx8VmkodGhpcyxhKXx8RGF0ZS5ub3coKS10aGlzLnFkPDE1MHx8VWkodGhpcyxhKX07Xy5wLkdoPWZ1bmN0aW9uKGEpe3ZhciBiPV8uQ2YodGhpcy5JYSk7aWYodHlwZW9mIGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQhPSJ1bmRlZmluZWQiKXtpZihhPWIuYWN0aXZlRWxlbWVudCwhYXx8Xy5UZih0aGlzLklhLGEpfHxhLnRhZ05hbWU9PSJCT0RZInx8VmkodGhpcyxhKSlyZXR1cm59ZWxzZSBpZihhLnRhcmdldCE9YilyZXR1cm47RGF0ZS5ub3coKS10aGlzLnFkPDE1MHx8VWkodGhpcyl9O3ZhciBWaT1mdW5jdGlvbihhLGIpe3JldHVybiBfLlhkKGEueWV8fFtdLGZ1bmN0aW9uKGMpe3JldHVybiBiPT09Y3x8Xy5UZihjLGIpfSl9Owp1ZC5wcm90b3R5cGUuVD1mdW5jdGlvbigpe3VkLlcuVC5jYWxsKHRoaXMpO3RoaXMuQS5kaXNwb3NlKCk7Xy5HYyh0aGlzLkgpO18uR2ModGhpcy5HKTtkZWxldGUgdGhpcy5JYTtkZWxldGUgdGhpcy5BO2RlbGV0ZSB0aGlzLnllfTtfLkgodmQsdWQpO3ZkLnByb3RvdHlwZS5WYj1mdW5jdGlvbigpe2lmKHRoaXMuUyl7dmFyIGE9IXRoaXMuaXNWaXNpYmxlKCkmJnRoaXMuVGIhPSJtb3ZlX29mZnNjcmVlbiIsYj10aGlzLkooKTthJiYoYi5zdHlsZS52aXNpYmlsaXR5PSJoaWRkZW4iLF8uaGkoYiwhMCkpO3RoaXMuUy5pKGIsdGhpcy5vYSx0aGlzLlRhKTthJiZfLmhpKGIsITEpfX07Xy5IKHpkLHZkKTt2YXIgV2k9W107emQucHJvdG90eXBlLmk9bnVsbDt6ZC5wcm90b3R5cGUuY2xhc3NOYW1lPSJnYl9tYi1nYl9YYyI7emQucHJvdG90eXBlLmdhPTA7dmFyIFhpPWZ1bmN0aW9uKGEpe2EuQi5mb3JFYWNoKGI9PntfLm5oKGIsIm1vdXNlb3ZlciIsYS5WLCExLGEpO18ubmgoYiwibW91c2VvdXQiLGEuTCwhMSxhKTtfLm5oKGIsIm1vdXNlbW92ZSIsYS5aLCExLGEpO18ubmgoYiwiZm9jdXMiLGEuUiwhMSxhKTtfLm5oKGIsImJsdXIiLGEuTCwhMSxhKX0pO2EuQi5jbGVhcigpfTsKemQucHJvdG90eXBlLlJjPWZ1bmN0aW9uKGEpe3ZhciBiPXRoaXMuSigpO2ImJl8uUmYoYik7emQuVy5SYy5jYWxsKHRoaXMsYSk7YT8oYj10aGlzLkMuaS5ib2R5LGIuaW5zZXJ0QmVmb3JlKGEsYi5sYXN0Q2hpbGQpLF8uR2ModGhpcy52KSx0aGlzLnY9bmV3IF8ua2QodGhpcy5KKCkpLF8ud2YodGhpcyx0aGlzLnYpLF8uRih0aGlzLnYsImZvY3VzaW4iLHRoaXMuRCx2b2lkIDAsdGhpcyksXy5GKHRoaXMudiwiZm9jdXNvdXQiLHRoaXMuTix2b2lkIDAsdGhpcykpOihfLkdjKHRoaXMudiksdGhpcy52PW51bGwpfTt2YXIgWWk9ZnVuY3Rpb24oYSl7cmV0dXJuIGEuaj9hLmlzVmlzaWJsZSgpPzQ6MTphLkY/MzphLmlzVmlzaWJsZSgpPzI6MH07CnpkLnByb3RvdHlwZS55ZD1mdW5jdGlvbigpe2lmKCF1ZC5wcm90b3R5cGUueWQuY2FsbCh0aGlzKSlyZXR1cm4hMTtpZih0aGlzLmFuY2hvcil7dmFyIGE7Zm9yKGxldCBiPTA7YT1XaVtiXTtiKyspXy5UZihhLkooKSx0aGlzLmFuY2hvcil8fGEuUmEoITEpfV8ueGEoV2ksdGhpcyl8fFdpLnB1c2godGhpcyk7YT10aGlzLkooKTthLmNsYXNzTmFtZT10aGlzLmNsYXNzTmFtZTt0aGlzLkQoKTtfLkYoYSwibW91c2VvdmVyIix0aGlzLmVhLCExLHRoaXMpO18uRihhLCJtb3VzZW91dCIsdGhpcy5jYSwhMSx0aGlzKTtaaSh0aGlzKTtyZXR1cm4hMH07CnpkLnByb3RvdHlwZS5BZD1mdW5jdGlvbigpe18ueWEoV2ksdGhpcyk7dmFyIGE9dGhpcy5KKCksYjtmb3IobGV0IGM9MDtiPVdpW2NdO2MrKyliLmFuY2hvciYmXy5UZihhLGIuYW5jaG9yKSYmYi5SYSghMSk7dGhpcy5oYSYmdGhpcy5oYS5OKCk7Xy5uaChhLCJtb3VzZW92ZXIiLHRoaXMuZWEsITEsdGhpcyk7Xy5uaChhLCJtb3VzZW91dCIsdGhpcy5jYSwhMSx0aGlzKTt0aGlzLmFuY2hvcj12b2lkIDA7WWkodGhpcyk9PTAmJih0aGlzLk09ITEpO3VkLnByb3RvdHlwZS5BZC5jYWxsKHRoaXMpfTsKemQucHJvdG90eXBlLm5hPWZ1bmN0aW9uKGEsYil7dGhpcy5hbmNob3I9PWEmJnRoaXMuQi5oYXModGhpcy5hbmNob3IpJiYodGhpcy5NfHwhdGhpcy5WYT8odGhpcy5SYSghMSksdGhpcy5pc1Zpc2libGUoKXx8KHRoaXMuYW5jaG9yPWEsdGhpcy5TPWJ8fHRoaXMuUCgwKXx8dm9pZCAwLHRoaXMuaXNWaXNpYmxlKCkmJnRoaXMuVmIoKSx0aGlzLlJhKCEwKSkpOnRoaXMuYW5jaG9yPXZvaWQgMCk7dGhpcy5qPXZvaWQgMH07emQucHJvdG90eXBlLkthPWZ1bmN0aW9uKGEpe3RoaXMuRj12b2lkIDA7aWYoYT09dGhpcy5hbmNob3Ipe2xldCBiPXRoaXMuQzthPShhPV8uVWYoYi5pKSkmJnRoaXMuSigpJiZiLkZmKHRoaXMuSigpLGEpO3RoaXMuaSE9bnVsbCYmKHRoaXMuaT09dGhpcy5KKCl8fHRoaXMuQi5oYXModGhpcy5pKSl8fGF8fHRoaXMuVSYmdGhpcy5VLml8fHRoaXMuUmEoITEpfX07CnZhciAkaT1mdW5jdGlvbihhLGIpe3ZhciBjPUtmKGEuQy5pKTthLk8ueD1iLmNsaWVudFgrYy54O2EuTy55PWIuY2xpZW50WStjLnl9O3pkLnByb3RvdHlwZS5WPWZ1bmN0aW9uKGEpe3ZhciBiPWFqKHRoaXMsYS50YXJnZXQpO3RoaXMuaT1iO3RoaXMuRCgpO2IhPXRoaXMuYW5jaG9yJiYodGhpcy5hbmNob3I9Yix0aGlzLmp8fCh0aGlzLmo9Xy5QaSgoMCxfLkcpKHRoaXMubmEsdGhpcyxiLHZvaWQgMCksNTAwKSksYmoodGhpcyksJGkodGhpcyxhKSl9O3ZhciBhaj1mdW5jdGlvbihhLGIpe3RyeXtmb3IoO2ImJiFhLkIuaGFzKGIpOyliPWIucGFyZW50Tm9kZTtyZXR1cm4gYn1jYXRjaChjKXtyZXR1cm4gbnVsbH19O3pkLnByb3RvdHlwZS5aPWZ1bmN0aW9uKGEpeyRpKHRoaXMsYSk7dGhpcy5NPSEwfTsKemQucHJvdG90eXBlLlI9ZnVuY3Rpb24oYSl7dGhpcy5pPWE9YWoodGhpcyxhLnRhcmdldCk7dGhpcy5NPSEwO2lmKHRoaXMuYW5jaG9yIT1hKXt0aGlzLmFuY2hvcj1hO2xldCBiPXRoaXMuUCgxKTt0aGlzLkQoKTt0aGlzLmp8fCh0aGlzLmo9Xy5QaSgoMCxfLkcpKHRoaXMubmEsdGhpcyxhLGIpLDUwMCkpO2JqKHRoaXMpfX07emQucHJvdG90eXBlLlA9ZnVuY3Rpb24oYSl7cmV0dXJuIGE9PTA/bmV3IGNqKHpmKHRoaXMuTykpOm5ldyBkaih0aGlzLmkpfTt2YXIgYmo9ZnVuY3Rpb24oYSl7aWYoYS5hbmNob3Ipe2xldCBiO2ZvcihsZXQgYz0wO2I9V2lbY107YysrKV8uVGYoYi5KKCksYS5hbmNob3IpJiYoYi5VPWEsYS5oYT1iKX19Owp6ZC5wcm90b3R5cGUuTD1mdW5jdGlvbihhKXt2YXIgYj1haih0aGlzLGEudGFyZ2V0KSxjPWFqKHRoaXMsYS5yZWxhdGVkVGFyZ2V0KTtiIT1jJiYoYj09dGhpcy5pJiYodGhpcy5pPW51bGwpLFppKHRoaXMpLHRoaXMuTT0hMSwhdGhpcy5pc1Zpc2libGUoKXx8YS5yZWxhdGVkVGFyZ2V0JiZfLlRmKHRoaXMuSigpLGEucmVsYXRlZFRhcmdldCk/dGhpcy5hbmNob3I9dm9pZCAwOnRoaXMuTigpKX07emQucHJvdG90eXBlLmVhPWZ1bmN0aW9uKCl7dmFyIGE9dGhpcy5KKCk7dGhpcy5pIT1hJiYodGhpcy5EKCksdGhpcy5pPWEpfTt6ZC5wcm90b3R5cGUuY2E9ZnVuY3Rpb24oYSl7dmFyIGI9dGhpcy5KKCk7dGhpcy5pIT1ifHxhLnJlbGF0ZWRUYXJnZXQmJl8uVGYoYixhLnJlbGF0ZWRUYXJnZXQpfHwodGhpcy5pPW51bGwsdGhpcy5OKCkpfTt2YXIgWmk9ZnVuY3Rpb24oYSl7YS5qJiYoXy51LmNsZWFyVGltZW91dChhLmopLGEuaj12b2lkIDApfTsKemQucHJvdG90eXBlLk49ZnVuY3Rpb24oKXtZaSh0aGlzKT09MiYmKHRoaXMuRj1fLlBpKCgwLF8uRykodGhpcy5LYSx0aGlzLHRoaXMuYW5jaG9yKSx0aGlzLmdhKSl9O3pkLnByb3RvdHlwZS5EPWZ1bmN0aW9uKCl7dGhpcy5GJiYoXy51LmNsZWFyVGltZW91dCh0aGlzLkYpLHRoaXMuRj12b2lkIDApfTt6ZC5wcm90b3R5cGUuVD1mdW5jdGlvbigpe3RoaXMuUmEoITEpO1ppKHRoaXMpO1hpKHRoaXMpO3RoaXMuSigpJiZfLlJmKHRoaXMuSigpKTt0aGlzLmk9bnVsbDtkZWxldGUgdGhpcy5DO3pkLlcuVC5jYWxsKHRoaXMpfTt2YXIgY2o9ZnVuY3Rpb24oYSxiKXtuZC5jYWxsKHRoaXMsYSxiKX07Xy5IKGNqLG5kKTsKY2oucHJvdG90eXBlLmk9ZnVuY3Rpb24oYSxiLGMpe2I9ZGkoKGE/Xy5DZihhKTpkb2N1bWVudCkuZG9jdW1lbnRFbGVtZW50KTtjPWM/bmV3IF8uZmQoYy50b3ArMTAsYy5yaWdodCxjLmJvdHRvbSxjLmxlZnQrMTApOm5ldyBfLmZkKDEwLDAsMCwxMCk7b2kodGhpcy5qLGEsOCxjLGIsOSkmNDk2JiZvaSh0aGlzLmosYSw4LGMsYiw1KX07dmFyIGRqPWZ1bmN0aW9uKGEpe21kLmNhbGwodGhpcyxhLDUpfTtfLkgoZGosbWQpO2RqLnByb3RvdHlwZS5pPWZ1bmN0aW9uKGEsYixjKXt2YXIgZD1uZXcgXy5IYygxMCwwKTtfLnBpKHRoaXMuaix0aGlzLnYsYSxiLGQsYyw5KSY0OTYmJl8ucGkodGhpcy5qLDQsYSwxLGQsYyw1KX07dmFyIGVqO18uZmo9Y2xhc3MgZXh0ZW5kcyB6ZHtjb25zdHJ1Y3RvcihhLGIpe3N1cGVyKGEpO3RoaXMuY2xhc3NOYW1lPSJnYl9YYyI7dGhpcy5SYyhiKTt0aGlzLm9hPTI7dGhpcy5pc1Zpc2libGUoKSYmdGhpcy5WYigpO3RoaXMuZ2E9MTAwO2RvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoImtleWRvd24iLGM9PntjLmtleUNvZGU9PTI3JiZ0aGlzLlJhKCExKX0pO3RoaXMuSigpLnNldEF0dHJpYnV0ZSgibmctbm9uLWJpbmRhYmxlIiwiIil9UCgpe3JldHVybiBuZXcgZWoodGhpcy5pKX1SYShhKXthfHxaaSh0aGlzKTtyZXR1cm4gc3VwZXIuUmEoYSl9fTsKZWo9Y2xhc3MgZXh0ZW5kcyBtZHtjb25zdHJ1Y3RvcihhKXtzdXBlcihhLDMpfWkoYSxiLGMpe3ZhciBkPW5ldyBfLkhjKDAsMCksZT1JZih3aW5kb3cpLGY9MDtfLnBpKHRoaXMuaix0aGlzLnYsYSxiLGQsYyw5LHZvaWQgMCxuZXcgXy5mZCgwLGUud2lkdGgtOCxlLmhlaWdodCw4KSkmNDk2JiYoZj1fLnBpKHRoaXMuaiw0LGEsMSxkLGMsNSkpO2YmMiYmKGI9cGFyc2VJbnQoXy5ZaChhLCJ0b3AiKSwxMCkrdGhpcy5qLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLmhlaWdodCsxMixfLlVoKGEsInRvcCIsYisicHgiKSl9fTt2YXIgZ2osaGo7Z2o9ZnVuY3Rpb24oKXt9O18ubGg9bmV3IGdqO2hqPVsiY2xpY2siLCJrZXlkb3duIiwia2V5dXAiXTtnai5wcm90b3R5cGUuST1mdW5jdGlvbihhLGIsYyxkLGUpe3ZhciBmPWZ1bmN0aW9uKGcpe3ZhciBoPWZoKGIpLGs9Xy5TZihnLnRhcmdldCk/Zy50YXJnZXQuZ2V0QXR0cmlidXRlKCJyb2xlIil8fG51bGw6bnVsbDtnLnR5cGUhPSJjbGljayJ8fGcuWWEuYnV0dG9uIT0wfHxfLmNlJiZnLmN0cmxLZXk/Zy5rZXlDb2RlIT0xMyYmZy5rZXlDb2RlIT0zfHxnLnR5cGU9PSJrZXl1cCI/Zy5rZXlDb2RlIT0zMnx8ayE9ImJ1dHRvbiImJmshPSJ0YWIiJiZrIT0icmFkaW8ifHwoZy50eXBlPT0ia2V5dXAiJiZoLmNhbGwoZCxnKSxnLnByZXZlbnREZWZhdWx0KCkpOihnLnR5cGU9ImtleXByZXNzIixoLmNhbGwoZCxnKSk6aC5jYWxsKGQsZyl9O2YuQWI9YjtmLlhoPWQ7ZT9lLkkoYSxoaixmLGMpOl8uRihhLGhqLGYsYyl9Owpnai5wcm90b3R5cGUuR2E9ZnVuY3Rpb24oYSxiLGMsZCxlKXt2YXIgZjtmb3IobGV0IGw9MDtmPWhqW2xdO2wrKyl7YTp7dmFyIGc9YTt2YXIgaD1mO3ZhciBrPSEhYztpZihfLlhnKGcpKXtoPWcuRGMoaCxrKTticmVhayBhfWlmKCFnKXtoPVtdO2JyZWFrIGF9aD0oZz1fLmhoKGcpKT9nLkRjKGgsayk6W119Zm9yKGc9MDtrPWhbZ107ZysrKXtsZXQgbT1rLmxpc3RlbmVyO2lmKG0uQWI9PWImJm0uWGg9PWQpe2U/ZS5HYShhLGYsay5saXN0ZW5lcixjLGQpOl8ubmgoYSxmLGsubGlzdGVuZXIsYyxkKTticmVha319fX07Xy5qaj1mdW5jdGlvbigpe3JldHVybiBfLmlqLmkoKS5pfTtfLmlqPWNsYXNze2NvbnN0cnVjdG9yKCl7dGhpcy5pPW5ldyBOaDt0aGlzLmkuaSgpLmxvZygxKTtfLkZmKCJnYl9XIikmJnRoaXMuaS5pKCkubG9nKDE2OSxfLkxnKG5ldyBfLlYsXy5IZyhfLkdnKDEpLDEpKSk7Xy5GZigiZ2JfViIpJiZ0aGlzLmkuaSgpLmxvZygxNjksXy5MZyhuZXcgXy5WLF8uSGcoXy5HZygyKSwxKSkpfXN0YXRpYyBpKCl7cmV0dXJuIF8uU2goXy5pail9fTt2YXIga2o9Xy5qaigpO18uTmQoImdiYXJfLl9EdW1wRXhjZXB0aW9uIixmdW5jdGlvbihhKXtrai52LmxvZyhhKX0pOwp9Y2F0Y2goZSl7Xy5fRHVtcEV4Y2VwdGlvbihlKX0KdHJ5ewp2YXIgbGo9ZnVuY3Rpb24oYSl7KGE9Xy5KKGEuaixfLk1nLDUpKT8oYT1fLlAoYSw1KSxhPS9eXGQrJC8udGVzdChhKT9wYXJzZUludChhLDEwKTowKTphPTA7cmV0dXJuIGF9OwooZnVuY3Rpb24oKXt2YXIgYT1fLmlqLmkoKTtfLk5kKCJnYmFyLkEiLF8uT2gpO18uT2gucHJvdG90eXBlLmFhPV8uT2gucHJvdG90eXBlLnRoZW47Xy5OZCgiZ2Jhci5CIixfLlcpO18uVy5wcm90b3R5cGUuYmE9Xy5XLnByb3RvdHlwZS5IO18uVy5wcm90b3R5cGUuYmI9Xy5XLnByb3RvdHlwZS5NO18uVy5wcm90b3R5cGUuYmQ9Xy5XLnByb3RvdHlwZS5YO18uVy5wcm90b3R5cGUuYmY9Xy5XLnByb3RvdHlwZS5EO18uVy5wcm90b3R5cGUuYmc9Xy5XLnByb3RvdHlwZS5HO18uVy5wcm90b3R5cGUuYmg9Xy5XLnByb3RvdHlwZS5GO18uVy5wcm90b3R5cGUuYmo9Xy5XLnByb3RvdHlwZS5LO18uVy5wcm90b3R5cGUuYms9Xy5XLnByb3RvdHlwZS5DO18uVy5wcm90b3R5cGUuYmw9Xy5XLnByb3RvdHlwZS5MO18uVy5wcm90b3R5cGUuYm09Xy5XLnByb3RvdHlwZS5OO18uTmQoImdiYXIuYSIsXy5XLmkoKSk7d2luZG93LmdiYXImJndpbmRvdy5nYmFyLmFwJiZ3aW5kb3cuZ2Jhci5hcCh3aW5kb3cuZ2Jhci5hKTsKbGooYS5pKT09PTI0MyYmd2luZG93LmRpc3BhdGNoRXZlbnQobmV3IEN1c3RvbUV2ZW50KCJnYmFyX2EiKSk7dmFyIGI9YS5pLmkoKTtfLlFnKF8uSihhLmkuaixfLlJnLDQpKXx8KGE9Xy5GZigiZ2JfQSIpfHxfLkZmKCJnYl9CIikpJiZfLm1oKGEsZD0+e3ZhciBlPV8uS2cobmV3IF8uVixfLktoKF8uRGYoKSwiZ2JfSyIpKTtiLmxvZyg2MixlKTtpZihlPV8uRmQoInNpbGsucy5zaXMuY2EiKSliLmxvZygxMDYpLGUoKSxkLnByZXZlbnREZWZhdWx0KCksZC5zdG9wUHJvcGFnYXRpb24oKX0pO2lmKGE9ZG9jdW1lbnQucXVlcnlTZWxlY3RvcigiLmdiX00gLmdiX0MiKSl7Xy5taChhLCgpPT57Yi5sb2coMTI3KX0pO3ZhciBjPV8uRmYoImdiX08iKTtjJiZuZXcgXy5maihhLGMpfShhPWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoIi5nYl9OIC5nYl9DIikpJiYoYz1kb2N1bWVudC5xdWVyeVNlbGVjdG9yKCIuZ2JfUCIpKSYmbmV3IF8uZmooYSxjKX0pKCk7Cn1jYXRjaChlKXtfLl9EdW1wRXhjZXB0aW9uKGUpfQp0cnl7CnZhciBwaix1ajtfLm1qPWZ1bmN0aW9uKGEpe2lmKGEgaW5zdGFuY2VvZiBfLmdmKXJldHVybiBhLmk7dGhyb3cgRXJyb3IoInciKTt9O18ubmo9ZnVuY3Rpb24oYSxiKXtpZihhLm5vZGVUeXBlPT09MSYmL14oc2NyaXB0fHN0eWxlKSQvaS50ZXN0KGEudGFnTmFtZSkpdGhyb3cgRXJyb3IoInciKTthLmlubmVySFRNTD1fLm1qKGIpfTtfLm9qPWZ1bmN0aW9uKGEsYil7dmFyIGM9YS5sZW5ndGgtYi5sZW5ndGg7cmV0dXJuIGM+PTAmJmEuaW5kZXhPZihiLGMpPT1jfTtwaj1mdW5jdGlvbihhLGIsYyl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg8PTI/QXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYSxiKTpBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhLGIsYyl9O18ucWo9ZnVuY3Rpb24oYSxiLGMsZCl7QXJyYXkucHJvdG90eXBlLnNwbGljZS5hcHBseShhLHBqKGFyZ3VtZW50cywxKSl9OwpfLnJqPWZ1bmN0aW9uKGEpe3ZhciBiPV8ud2MoKTthPWI/Yi5jcmVhdGVIVE1MKGEpOmE7cmV0dXJuIG5ldyBfLmdmKGEpfTtfLnNqPWZ1bmN0aW9uKGEsYil7Yj1fLkRjKGIpO2IhPT12b2lkIDAmJihhLmhyZWY9Yil9O18udGo9ZnVuY3Rpb24oYSxiKXt2YXIgYz1fLk1mKGEsIkRJViIpO18ubmooYyxiKTtpZihjLmNoaWxkTm9kZXMubGVuZ3RoPT0xKWM9Yy5yZW1vdmVDaGlsZChjLmZpcnN0Q2hpbGQpO2Vsc2V7Zm9yKGE9YS5jcmVhdGVEb2N1bWVudEZyYWdtZW50KCk7Yy5maXJzdENoaWxkOylhLmFwcGVuZENoaWxkKGMuZmlyc3RDaGlsZCk7Yz1hfXJldHVybiBjfTt1aj0wO18udmo9ZnVuY3Rpb24oYSl7cmV0dXJuIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChhLF8uS2QpJiZhW18uS2RdfHwoYVtfLktkXT0rK3VqKX07Cn1jYXRjaChlKXtfLl9EdW1wRXhjZXB0aW9uKGUpfQp0cnl7CnZhciB3ajt3aj1mdW5jdGlvbihhLGIpe2lmKGEpe2E9YS5zcGxpdCgiJiIpO2ZvcihsZXQgYz0wO2M8YS5sZW5ndGg7YysrKXtsZXQgZD1hW2NdLmluZGV4T2YoIj0iKSxlLGY9bnVsbDtkPj0wPyhlPWFbY10uc3Vic3RyaW5nKDAsZCksZj1hW2NdLnN1YnN0cmluZyhkKzEpKTplPWFbY107YihlLGY/ZGVjb2RlVVJJQ29tcG9uZW50KGYucmVwbGFjZSgvXCsvZywiICIpKToiIil9fX07Cl8ueGo9ZnVuY3Rpb24oYSl7dGhpcy5CPXRoaXMuSz10aGlzLkE9IiI7dGhpcy5EPW51bGw7dGhpcy52PXRoaXMuaj0iIjt0aGlzLkM9ITE7dmFyIGI7YSBpbnN0YW5jZW9mIF8ueGo/KHRoaXMuQz1hLkMsXy55aih0aGlzLGEuQSksdGhpcy5LPWEuSyxfLnpqKHRoaXMsYS5CKSxfLkFqKHRoaXMsYS5EKSxfLkJqKHRoaXMsYS5qKSxDaih0aGlzLERqKGEuaSkpLHRoaXMudj1hLnYpOmEmJihiPVN0cmluZyhhKS5tYXRjaChfLmRkKSk/KHRoaXMuQz0hMSxfLnlqKHRoaXMsYlsxXXx8IiIsITApLHRoaXMuSz1FaihiWzJdfHwiIiksXy56aih0aGlzLGJbM118fCIiLCEwKSxfLkFqKHRoaXMsYls0XSksXy5Caih0aGlzLGJbNV18fCIiLCEwKSxDaih0aGlzLGJbNl18fCIiLCEwKSx0aGlzLnY9RWooYls3XXx8IiIpKToodGhpcy5DPSExLHRoaXMuaT1uZXcgRmoobnVsbCx0aGlzLkMpKX07Cl8uR2o9ZnVuY3Rpb24oYSxiLGMpe3JldHVybiBBcnJheS5wcm90b3R5cGUuZmlsdGVyLmNhbGwoYSxiLGMpfTt2YXIgQ2osRWosSGosUGosSWosS2osSmosTmosTGosRmosUWo7Xy54ai5wcm90b3R5cGUudG9TdHJpbmc9ZnVuY3Rpb24oKXt2YXIgYT1bXSxiPXRoaXMuQTtiJiZhLnB1c2goSGooYixJaiwhMCksIjoiKTt2YXIgYz10aGlzLkI7aWYoY3x8Yj09ImZpbGUiKWEucHVzaCgiLy8iKSwoYj10aGlzLkspJiZhLnB1c2goSGooYixJaiwhMCksIkAiKSxhLnB1c2goZW5jb2RlVVJJQ29tcG9uZW50KFN0cmluZyhjKSkucmVwbGFjZSgvJTI1KFswLTlhLWZBLUZdezJ9KS9nLCIlJDEiKSksYz10aGlzLkQsYyE9bnVsbCYmYS5wdXNoKCI6IixTdHJpbmcoYykpO2lmKGM9dGhpcy5qKXRoaXMuQiYmYy5jaGFyQXQoMCkhPSIvIiYmYS5wdXNoKCIvIiksYS5wdXNoKEhqKGMsYy5jaGFyQXQoMCk9PSIvIj9KajpLaiwhMCkpOyhjPXRoaXMuaS50b1N0cmluZygpKSYmYS5wdXNoKCI/IixjKTsoYz10aGlzLnYpJiZhLnB1c2goIiMiLEhqKGMsTGopKTtyZXR1cm4gYS5qb2luKCIiKX07Cl8ueGoucHJvdG90eXBlLnJlc29sdmU9ZnVuY3Rpb24oYSl7dmFyIGI9bmV3IF8ueGoodGhpcyksYz0hIWEuQTtjP18ueWooYixhLkEpOmM9ISFhLks7Yz9iLks9YS5LOmM9ISFhLkI7Yz9fLnpqKGIsYS5CKTpjPWEuRCE9bnVsbDt2YXIgZD1hLmo7aWYoYylfLkFqKGIsYS5EKTtlbHNlIGlmKGM9ISFhLmope2lmKGQuY2hhckF0KDApIT0iLyIpaWYodGhpcy5CJiYhdGhpcy5qKWQ9Ii8iK2Q7ZWxzZXt2YXIgZT1iLmoubGFzdEluZGV4T2YoIi8iKTtlIT0tMSYmKGQ9Yi5qLnNsaWNlKDAsZSsxKStkKX1lPWQ7aWYoZT09Ii4uInx8ZT09Ii4iKWQ9IiI7ZWxzZSBpZihlLmluZGV4T2YoIi4vIikhPS0xfHxlLmluZGV4T2YoIi8uIikhPS0xKXtkPV8uY2EoZSwiLyIpO2U9ZS5zcGxpdCgiLyIpO2xldCBmPVtdO2ZvcihsZXQgZz0wO2c8ZS5sZW5ndGg7KXtsZXQgaD1lW2crK107aD09Ii4iP2QmJmc9PWUubGVuZ3RoJiZmLnB1c2goIiIpOmg9PSIuLiI/KChmLmxlbmd0aD4xfHxmLmxlbmd0aD09CjEmJmZbMF0hPSIiKSYmZi5wb3AoKSxkJiZnPT1lLmxlbmd0aCYmZi5wdXNoKCIiKSk6KGYucHVzaChoKSxkPSEwKX1kPWYuam9pbigiLyIpfWVsc2UgZD1lfWM/Xy5CaihiLGQpOmM9YS5pLnRvU3RyaW5nKCkhPT0iIjtjP0NqKGIsRGooYS5pKSk6Yz0hIWEudjtjJiYoYi52PWEudik7cmV0dXJuIGJ9O18ueWo9ZnVuY3Rpb24oYSxiLGMpe2EuQT1jP0VqKGIsITApOmI7YS5BJiYoYS5BPWEuQS5yZXBsYWNlKC86JC8sIiIpKTtyZXR1cm4gYX07Xy56aj1mdW5jdGlvbihhLGIsYyl7YS5CPWM/RWooYiwhMCk6YjtyZXR1cm4gYX07Xy5Baj1mdW5jdGlvbihhLGIpe2lmKGIpe2I9TnVtYmVyKGIpO2lmKGlzTmFOKGIpfHxiPDApdGhyb3cgRXJyb3IoIlZgIitiKTthLkQ9Yn1lbHNlIGEuRD1udWxsO3JldHVybiBhfTtfLkJqPWZ1bmN0aW9uKGEsYixjKXthLmo9Yz9FaihiLCEwKTpiO3JldHVybiBhfTsKQ2o9ZnVuY3Rpb24oYSxiLGMpe2IgaW5zdGFuY2VvZiBGaj8oYS5pPWIsTWooYS5pLGEuQykpOihjfHwoYj1IaihiLE5qKSksYS5pPW5ldyBGaihiLGEuQykpfTtfLk9qPWZ1bmN0aW9uKGEsYixjKXthLmkuc2V0KGIsYyl9O0VqPWZ1bmN0aW9uKGEsYil7cmV0dXJuIGE/Yj9kZWNvZGVVUkkoYS5yZXBsYWNlKC8lMjUvZywiJTI1MjUiKSk6ZGVjb2RlVVJJQ29tcG9uZW50KGEpOiIifTtIaj1mdW5jdGlvbihhLGIsYyl7cmV0dXJuIHR5cGVvZiBhPT09InN0cmluZyI/KGE9ZW5jb2RlVVJJKGEpLnJlcGxhY2UoYixQaiksYyYmKGE9YS5yZXBsYWNlKC8lMjUoWzAtOWEtZkEtRl17Mn0pL2csIiUkMSIpKSxhKTpudWxsfTtQaj1mdW5jdGlvbihhKXthPWEuY2hhckNvZGVBdCgwKTtyZXR1cm4iJSIrKGE+PjQmMTUpLnRvU3RyaW5nKDE2KSsoYSYxNSkudG9TdHJpbmcoMTYpfTtJaj0vWyNcL1w/QF0vZztLaj0vWyNcPzpdL2c7Smo9L1sjXD9dL2c7Tmo9L1sjXD9AXS9nO0xqPS8jL2c7CkZqPWZ1bmN0aW9uKGEsYil7dGhpcy5qPXRoaXMuaT1udWxsO3RoaXMudj1hfHxudWxsO3RoaXMuQT0hIWJ9O1FqPWZ1bmN0aW9uKGEpe2EuaXx8KGEuaT1uZXcgTWFwLGEuaj0wLGEudiYmd2ooYS52LGZ1bmN0aW9uKGIsYyl7YS5hZGQoZGVjb2RlVVJJQ29tcG9uZW50KGIucmVwbGFjZSgvXCsvZywiICIpKSxjKX0pKX07RmoucHJvdG90eXBlLmFkZD1mdW5jdGlvbihhLGIpe1FqKHRoaXMpO3RoaXMudj1udWxsO2E9UmoodGhpcyxhKTt2YXIgYz10aGlzLmkuZ2V0KGEpO2N8fHRoaXMuaS5zZXQoYSxjPVtdKTtjLnB1c2goYik7dGhpcy5qKz0xO3JldHVybiB0aGlzfTt2YXIgU2o9ZnVuY3Rpb24oYSxiKXtRaihhKTtiPVJqKGEsYik7YS5pLmhhcyhiKSYmKGEudj1udWxsLGEuai09YS5pLmdldChiKS5sZW5ndGgsYS5pLmRlbGV0ZShiKSl9O0ZqLnByb3RvdHlwZS5jbGVhcj1mdW5jdGlvbigpe3RoaXMuaT10aGlzLnY9bnVsbDt0aGlzLmo9MH07CkZqLnByb3RvdHlwZS56Yj1mdW5jdGlvbigpe1FqKHRoaXMpO3JldHVybiB0aGlzLmo9PTB9O18uVGo9ZnVuY3Rpb24oYSxiKXtRaihhKTtiPVJqKGEsYik7cmV0dXJuIGEuaS5oYXMoYil9O18ucD1Gai5wcm90b3R5cGU7Xy5wLmZvckVhY2g9ZnVuY3Rpb24oYSxiKXtRaih0aGlzKTt0aGlzLmkuZm9yRWFjaChmdW5jdGlvbihjLGQpe2MuZm9yRWFjaChmdW5jdGlvbihlKXthLmNhbGwoYixlLGQsdGhpcyl9LHRoaXMpfSx0aGlzKX07Xy5wLnJiPWZ1bmN0aW9uKCl7UWoodGhpcyk7dmFyIGE9QXJyYXkuZnJvbSh0aGlzLmkudmFsdWVzKCkpLGI9QXJyYXkuZnJvbSh0aGlzLmkua2V5cygpKSxjPVtdO2ZvcihsZXQgZD0wO2Q8Yi5sZW5ndGg7ZCsrKXtsZXQgZT1hW2RdO2ZvcihsZXQgZj0wO2Y8ZS5sZW5ndGg7ZisrKWMucHVzaChiW2RdKX1yZXR1cm4gY307Cl8ucC5QYT1mdW5jdGlvbihhKXtRaih0aGlzKTt2YXIgYj1bXTtpZih0eXBlb2YgYT09PSJzdHJpbmciKV8uVGoodGhpcyxhKSYmKGI9Yi5jb25jYXQodGhpcy5pLmdldChSaih0aGlzLGEpKSkpO2Vsc2V7YT1BcnJheS5mcm9tKHRoaXMuaS52YWx1ZXMoKSk7Zm9yKGxldCBjPTA7YzxhLmxlbmd0aDtjKyspYj1iLmNvbmNhdChhW2NdKX1yZXR1cm4gYn07Xy5wLnNldD1mdW5jdGlvbihhLGIpe1FqKHRoaXMpO3RoaXMudj1udWxsO2E9UmoodGhpcyxhKTtfLlRqKHRoaXMsYSkmJih0aGlzLmotPXRoaXMuaS5nZXQoYSkubGVuZ3RoKTt0aGlzLmkuc2V0KGEsW2JdKTt0aGlzLmorPTE7cmV0dXJuIHRoaXN9O18ucC5nZXQ9ZnVuY3Rpb24oYSxiKXtpZighYSlyZXR1cm4gYjthPXRoaXMuUGEoYSk7cmV0dXJuIGEubGVuZ3RoPjA/U3RyaW5nKGFbMF0pOmJ9OwpfLlVqPWZ1bmN0aW9uKGEsYixjKXtTaihhLGIpO2MubGVuZ3RoPjAmJihhLnY9bnVsbCxhLmkuc2V0KFJqKGEsYiksXy56YShjKSksYS5qKz1jLmxlbmd0aCl9O0ZqLnByb3RvdHlwZS50b1N0cmluZz1mdW5jdGlvbigpe2lmKHRoaXMudilyZXR1cm4gdGhpcy52O2lmKCF0aGlzLmkpcmV0dXJuIiI7dmFyIGE9W10sYj1BcnJheS5mcm9tKHRoaXMuaS5rZXlzKCkpO2ZvcihsZXQgZD0wO2Q8Yi5sZW5ndGg7ZCsrKXt2YXIgYz1iW2RdO2xldCBlPWVuY29kZVVSSUNvbXBvbmVudChTdHJpbmcoYykpO2M9dGhpcy5QYShjKTtmb3IobGV0IGY9MDtmPGMubGVuZ3RoO2YrKyl7bGV0IGc9ZTtjW2ZdIT09IiImJihnKz0iPSIrZW5jb2RlVVJJQ29tcG9uZW50KFN0cmluZyhjW2ZdKSkpO2EucHVzaChnKX19cmV0dXJuIHRoaXMudj1hLmpvaW4oIiYiKX07CnZhciBEaj1mdW5jdGlvbihhKXt2YXIgYj1uZXcgRmo7Yi52PWEudjthLmkmJihiLmk9bmV3IE1hcChhLmkpLGIuaj1hLmopO3JldHVybiBifSxSaj1mdW5jdGlvbihhLGIpe2I9U3RyaW5nKGIpO2EuQSYmKGI9Yi50b0xvd2VyQ2FzZSgpKTtyZXR1cm4gYn0sTWo9ZnVuY3Rpb24oYSxiKXtiJiYhYS5BJiYoUWooYSksYS52PW51bGwsYS5pLmZvckVhY2goZnVuY3Rpb24oYyxkKXt2YXIgZT1kLnRvTG93ZXJDYXNlKCk7ZCE9ZSYmKFNqKHRoaXMsZCksXy5Vaih0aGlzLGUsYykpfSxhKSk7YS5BPWJ9Owp9Y2F0Y2goZSl7Xy5fRHVtcEV4Y2VwdGlvbihlKX0KdHJ5ewp2YXIgYmssZGs7Xy5Xaj1mdW5jdGlvbihhKXtyZXR1cm4iZnVuY3Rpb24iPT10eXBlb2YgXy5WaiYmYSBpbnN0YW5jZW9mIF8uVmp9O18uWGo9ZnVuY3Rpb24oYSl7aWYoXy5XaihhKSlyZXR1cm4gYS5pO3Rocm93IEVycm9yKCJ3Iik7fTtfLllqPWZ1bmN0aW9uKGEpe3ZhciBiPV8ud2MoKTthPWI/Yi5jcmVhdGVTY3JpcHRVUkwoYSk6YTtyZXR1cm4gbmV3IF8uVmooYSl9O18uWmo9ZnVuY3Rpb24oYSxiKXthLnNyYz1fLlhqKGIpLnRvU3RyaW5nKCl9O18uYWs9ZnVuY3Rpb24oYSl7dmFyIGI9YS5zcGxpdCgvWz8jXS8pLGM9L1s/XS8udGVzdChhKT8iPyIrYlsxXToiIjtyZXR1cm57TmQ6YlswXSxlZjpjLFliOi9bI10vLnRlc3QoYSk/IiMiKyhjP2JbMl06YlsxXSk6IiJ9fTsKYms9ZnVuY3Rpb24oYSxiLGMsZCl7ZnVuY3Rpb24gZShnLGgpe2chPW51bGwmJihBcnJheS5pc0FycmF5KGcpP2cuZm9yRWFjaChrPT5lKGssaCkpOihiKz1mK2VuY29kZVVSSUNvbXBvbmVudChoKSsiPSIrZW5jb2RlVVJJQ29tcG9uZW50KGcpLGY9IiYiKSl9dmFyIGY9Yi5sZW5ndGg/IiYiOiI/IjtkLmNvbnN0cnVjdG9yPT09T2JqZWN0JiYoZD1PYmplY3QuZW50cmllcyhkKSk7QXJyYXkuaXNBcnJheShkKT9kLmZvckVhY2goZz0+ZShnWzFdLGdbMF0pKTpkLmZvckVhY2goZSk7cmV0dXJuIF8uWWooYStiK2MpfTtfLmNrPWZ1bmN0aW9uKGEsYil7YT1fLmFrKF8uWGooYSkudG9TdHJpbmcoKSk7cmV0dXJuIGJrKGEuTmQsYS5lZixhLlliLGIpfTsKXy5laz1mdW5jdGlvbigpe3ZhciBhPXdpbmRvdy5sb2NhdGlvbi5ocmVmLGI9YS5zZWFyY2goZGspLGM7YTp7Zm9yKGM9MDsoYz1hLmluZGV4T2YoIm9yaWdpbiIsYykpPj0wJiZjPGI7KXt2YXIgZD1hLmNoYXJDb2RlQXQoYy0xKTtpZihkPT0zOHx8ZD09NjMpaWYoZD1hLmNoYXJDb2RlQXQoYys2KSwhZHx8ZD09NjF8fGQ9PTM4fHxkPT0zNSlicmVhayBhO2MrPTd9Yz0tMX1pZihjPDApcmV0dXJuIG51bGw7ZD1hLmluZGV4T2YoIiYiLGMpO2lmKGQ8MHx8ZD5iKWQ9YjtyZXR1cm4gZGVjb2RlVVJJQ29tcG9uZW50KGEuc2xpY2UoYys3LGQhPT0tMT9kOjApLnJlcGxhY2UoL1wrL2csIiAiKSl9O18uZms9ZnVuY3Rpb24oYSl7aWYoIWEpcmV0dXJuIG51bGw7YT1fLlAoYSw0KTt2YXIgYjthPT09bnVsbHx8YT09PXZvaWQgMD9iPW51bGw6Yj1fLllqKGEpO3JldHVybiBifTtfLmdrPWZ1bmN0aW9uKGEsYixjKXthPWEuZGE7cmV0dXJuIF8ub2MoYSxhW18ud118MCxiLGMpIT09dm9pZCAwfTsKXy5oaz1jbGFzcyBleHRlbmRzIF8uVXtjb25zdHJ1Y3RvcihhKXtzdXBlcihhKX19O18uVmo9Y2xhc3N7Y29uc3RydWN0b3IoYSl7dGhpcy5pPWF9dG9TdHJpbmcoKXtyZXR1cm4gdGhpcy5pKyIifX07ZGs9LyN8JC87Cn1jYXRjaChlKXtfLl9EdW1wRXhjZXB0aW9uKGUpfQp0cnl7CnZhciBvayxrayxtaztfLmprPWZ1bmN0aW9uKGEpe3JldHVybiBfLmlrLmkoKS5pW2FdfHxudWxsfTtfLmxrPWZ1bmN0aW9uKGEsYil7dmFyIGM9Xy5pay5pKCk7aWYoYSBpbiBjLmkpe2lmKGMuaVthXSE9Yil0aHJvdyBuZXcga2s7fWVsc2V7Yy5pW2FdPWI7bGV0IGg9Yy5qW2FdO2lmKGgpZm9yKGxldCBrPTAsbD1oLmxlbmd0aDtrPGw7aysrKXtiPWhba107dmFyIGQ9Yy5pO2RlbGV0ZSBiLmlbYV07aWYoXy5MYyhiLmkpKXtmb3IodmFyIGU9Yi5qLmxlbmd0aCxmPUFycmF5KGUpLGc9MDtnPGU7ZysrKWZbZ109ZFtiLmpbZ11dO2Iudi5hcHBseShiLkEsZil9fWRlbGV0ZSBjLmpbYV19fTtfLm5rPWZ1bmN0aW9uKGEpe3ZhciBiPV8uaWsuaSgpO2lmKGEgaW4gYi5pKXJldHVybiBiLmlbYV07dGhyb3cgbmV3IG1rO307Xy5paz1jbGFzc3tjb25zdHJ1Y3Rvcigpe3RoaXMuaT17fTt0aGlzLmo9e319c3RhdGljIGkoKXtyZXR1cm4gXy5TaChfLmlrKX19O29rPWNsYXNzIGV4dGVuZHMgXy5hYXtjb25zdHJ1Y3Rvcigpe3N1cGVyKCl9fTsKa2s9Y2xhc3MgZXh0ZW5kcyBva3t9O21rPWNsYXNzIGV4dGVuZHMgb2t7fTsKfWNhdGNoKGUpe18uX0R1bXBFeGNlcHRpb24oZSl9CnRyeXsKXy5waz1mdW5jdGlvbihhLGIpe2I9Xy5EYyhiKTtiIT09dm9pZCAwJiYoYS5ocmVmPWIpfTsKfWNhdGNoKGUpe18uX0R1bXBFeGNlcHRpb24oZSl9CnRyeXsKdmFyIHJrLHRrLHZrLHlrLHNrO18ucWs9ZnVuY3Rpb24oYSxiPV8uZmYpe2lmKGEgaW5zdGFuY2VvZiBfLnhjKXJldHVybiBhO2ZvcihsZXQgYz0wO2M8Yi5sZW5ndGg7KytjKXtsZXQgZD1iW2NdO2lmKGQgaW5zdGFuY2VvZiBfLnpjJiZkLm1oKGEpKXJldHVybiBuZXcgXy54YyhhKX19O3JrPWZ1bmN0aW9uKGEsLi4uYil7dmFyIGM9W2FbMF1dO2ZvcihsZXQgZD0wO2Q8Yi5sZW5ndGg7ZCsrKWMucHVzaChTdHJpbmcoYltkXSkpLGMucHVzaChhW2QrMV0pO3JldHVybiBuZXcgXy54YyhjLmpvaW4oIiIpKX07dGs9ZnVuY3Rpb24oYSl7cmV0dXJuIG5ldyBzayhhWzBdKX07Xy51az1mdW5jdGlvbihhLC4uLmIpe2lmKGIubGVuZ3RoPT09MClyZXR1cm4gXy5ZaihhWzBdKTt2YXIgYz1hWzBdO2ZvcihsZXQgZD0wO2Q8Yi5sZW5ndGg7ZCsrKWMrPWVuY29kZVVSSUNvbXBvbmVudChiW2RdKSthW2QrMV07cmV0dXJuIF8uWWooYyl9O18uVmc9ZnVuY3Rpb24oYSl7dGhpcy5pZD1hfTsKdms9ZnVuY3Rpb24oYSxiKXtpZihiJiZhIGluIGIpcmV0dXJuIGE7dmFyIGM9Xy5qZCgpO3JldHVybiBjPyhjPWMudG9Mb3dlckNhc2UoKSxhPWMrXy5rZihhKSxiPT09dm9pZCAwfHxhIGluIGI/YTpudWxsKTpudWxsfTt5az1mdW5jdGlvbihhKXt2YXIgYj13ayxjPV8udmooYSksZD0oWywuLi5mXSk9PmIoYyxmKSxlPShbZiwuLi5nXSk9PmEuYXBwbHkoZixnKTtyZXR1cm4gZnVuY3Rpb24oLi4uZil7dmFyIGc9dGhpc3x8Xy51LGg9eGsuZ2V0KGcpO2h8fChoPXt9LHhrLnNldChnLGgpKTtnPWg7Zj1bdGhpcywuLi5mXTtoPWQ/ZChmKTpmO3JldHVybiBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoZyxoKT9nW2hdOmdbaF09ZShmKX19O18uems9ZnVuY3Rpb24oYSl7Xy5ELmNhbGwodGhpcyk7dGhpcy5pPWF8fF8ud2QoKTtpZih0aGlzLmo9dGhpcy5VZygpKXRoaXMudj1fLkYodGhpcy5pLmksdGhpcy5qLCgwLF8uRykodGhpcy5ZZyx0aGlzKSl9Owpzaz1jbGFzc3tjb25zdHJ1Y3RvcihhKXt0aGlzLmk9YX10b1N0cmluZygpe3JldHVybiB0aGlzLml9fTtfLlZnLnByb3RvdHlwZS50b1N0cmluZz1mdW5jdGlvbigpe3JldHVybiB0aGlzLmlkfTt2YXIgQWs9ZnVuY3Rpb24oYSl7dmFyIGI9Xy53ZCgpLGM9Xy5FZihiLmksIkhFQUQiKVswXTtpZighYyl7dmFyIGQ9Xy5FZihiLmksIkJPRFkiKVswXTtjPWIuSGEoIkhFQUQiKTtkLnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKGMsZCl9ZD1iLkhhKCJTVFlMRSIpO3ZhciBlPV8uRWMoInN0eWxlIixkb2N1bWVudCk7ZSYmZC5zZXRBdHRyaWJ1dGUoIm5vbmNlIixlKTtpZihhIGluc3RhbmNlb2Ygc2spYT1hLmk7ZWxzZSB0aHJvdyBFcnJvcigidyIpO18udS50cnVzdGVkVHlwZXM/Xy55ZChkLGEpOmQuaW5uZXJIVE1MPWE7Yi5hcHBlbmRDaGlsZChjLGQpfSxCaz1mdW5jdGlvbihhKXt2YXIgYj1hO3JldHVybiBmdW5jdGlvbigpe2lmKGIpe2xldCBjPWI7Yj1udWxsO2MoKX19fTtfLkNrPSgwLF8udWspYGh0dHBzOi8vbXlhY2NvdW50Lmdvb2dsZS5jb21gO18uRGs9UHJvbWlzZTt2YXIgRWs7RWs9dGtgCiAgLm9jV2ViSWZyYW1lIHsKICAgIHdpZHRoOiAxMDAlOwogICAgaGVpZ2h0OiAxMDAlOwogICAgYm9yZGVyOiAwOwogIH0KYDtfLkZrPUJrKCgpPT57QWsoRWspfSk7dmFyIEdrO0drPXRrYAogIC5vY1dlYlNjcmltIHsKICAgIHBvc2l0aW9uOiBmaXhlZDsKICAgIHRvcDogMDsKICAgIGxlZnQ6IDA7CiAgICB3aWR0aDogMTAwJTsKICAgIGhlaWdodDogMTAwJTsKICAgIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50OwogICAgei1pbmRleDogMTUwMDA7CiAgfQoKICAub2NXZWJTY3JpbS5vY1dlYlZpc2libGVTY3JpbSB7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDAsIDAsIDAsIDAuMzIpOwogIH0KCiAgLm9jV2ViRGlhbG9nIHsKICAgIGhlaWdodDogNjQwcHg7CiAgICBtYXgtaGVpZ2h0OiAxMDAlOwogICAgd2lkdGg6IDQ4MHB4OwogICAgbWF4LXdpZHRoOiAxMDAlOwogICAgYm9yZGVyLXJhZGl1czogMzJweCAzMnB4IDAgMDsKICAgIG92ZXJmbG93OiBoaWRkZW47CiAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICBsZWZ0OiAwOwogICAgcmlnaHQ6IDA7CiAgICBib3R0b206IDA7CiAgICBkaXNwbGF5OiBub25lOwogICAgYm94LXNoYWRvdzogMHB4IDRweCA4cHggM3B4IHJnYmEoMCwgMCwgMCwgMC4xNSksCiAgICAgICAgICAgICAgICAwcHggMXB4IDNweCAwcHggcmdiYSgwLCAwLCAwLCAwLjMwKTsKICB9CgogIC5vY1dlYkRpYWxvZy5kYXJrIHsKICAgIGJhY2tncm91bmQtY29sb3I6IHJnYigzMCwgMzEsIDMyKTsKICB9CgogIC5vY1dlYkRpYWxvZy5saWdodCB7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2IoMjQwLCAyNDQsIDI0OSk7CiAgfQoKICBAbWVkaWEgKG1pbi13aWR0aDogNDgwcHgpIHsKICAgIC5vY1dlYkRpYWxvZyB7CiAgICAgIG1hcmdpbjogYXV0bzsKICAgICAgdG9wOiAwOwogICAgICBib3JkZXItcmFkaXVzOiAzMnB4OwogICAgfQoKICAgIC5vY1dlYkRpYWxvZy5wb3NpdGlvblRvcFJpZ2h0IHsKICAgICAgbWFyZ2luOiB1bnNldDsKICAgICAgbGVmdDogdW5zZXQ7CiAgICAgIHRvcDogNjVweDsKICAgICAgcmlnaHQ6IDE2cHg7CiAgICB9CiAgfQpgO18uSGs9QmsoKCk9PntBayhHayl9KTtfLklrPW5ldyBTZXQoWzEwNzU5LDEwNzYwLDcyMyw3MTQsMTA4MjYsMTAwNTIsMTA4MjIsMTA4MjNdKTtfLkprPXtbNjRdOiJtYSIsWzczXToib2diIixbODldOiJjciIsWzIxXToidGVzdCIsWzBdOiJ1bmtuIixbMTM3XToiY29uIixbMTU1XToiaGwiLFs3OF06Inl0IixbMTcxXToibHAiLFsxNzJdOiJhcCIsWzE3N106ImFtbyIsWzE3OF06InBxZSIsWzc0XToiZ2ciLFsxXToiZ20iLFsxNDBdOiJhbSIsWzE5M106InNjIixbMjA1XToic2F2ZSJ9O2ZvcihsZXQgYSBvZiBPYmplY3Qua2V5cyhfLkprKSk7Xy5Laz1uZXcgXy5WZygiYSIpO18uTGs9bmV3IF8uVmcoImIiKTtfLk1rPW5ldyBfLlZnKCJjIik7dHJ5e2xldCBhLGIsYz0oYj0oYT13aW5kb3cpPT1udWxsP3ZvaWQgMDphLnRvcCkhPW51bGw/YjpfLnU7Yy5VM2JISGYhPW51bGx8fChjLlUzYkhIZj0wKTtjLlUzYkhIZisrfWNhdGNoKGEpe18udS5VM2JISGYhPW51bGx8fChfLnUuVTNiSEhmPTApLF8udS5VM2JISGYrK307Xy5Oaz0oMCxfLnVrKWBhYm91dDpibGFua2A7dmFyIE9rPWNsYXNzIGV4dGVuZHMgXy5ZY3tjb25zdHJ1Y3RvcihhLGIpe3N1cGVyKCJ2aXNpYmlsaXR5Y2hhbmdlIik7dGhpcy5lZT1ifX07dmFyIHhrPW5ldyBXZWFrTWFwLHdrPWZ1bmN0aW9uKGEsYil7YT1bYV07Zm9yKGxldCBjPWIubGVuZ3RoLTE7Yz49MDstLWMpYS5wdXNoKHR5cGVvZiBiW2NdLGJbY10pO3JldHVybiBhLmpvaW4oIlx2Iil9O18uSChfLnprLF8uRCk7Xy5wPV8uemsucHJvdG90eXBlO18ucC5VZz15ayhmdW5jdGlvbigpe3ZhciBhPXRoaXMuSmMoKSxiPXRoaXMuZmQoKSE9ImhpZGRlbiI7aWYoYSl7dmFyIGM7Yj9jPSgoXy5qZCgpfHwiIikrInZpc2liaWxpdHljaGFuZ2UiKS50b0xvd2VyQ2FzZSgpOmM9InZpc2liaWxpdHljaGFuZ2UiO2E9Y31lbHNlIGE9bnVsbDtyZXR1cm4gYX0pO18ucC5mZD15ayhmdW5jdGlvbigpe3JldHVybiB2aygiaGlkZGVuIix0aGlzLmkuaSl9KTtfLnAuVmc9eWsoZnVuY3Rpb24oKXtyZXR1cm4gdmsoInZpc2liaWxpdHlTdGF0ZSIsdGhpcy5pLmkpfSk7Xy5wLkpjPWZ1bmN0aW9uKCl7cmV0dXJuISF0aGlzLmZkKCl9O18ucC5ZZz1mdW5jdGlvbigpe3ZhciBhPXRoaXMuSmMoKT90aGlzLmkuaVt0aGlzLlZnKCldOm51bGw7YT1uZXcgT2soISF0aGlzLmkuaVt0aGlzLmZkKCldLGEpO3RoaXMuZGlzcGF0Y2hFdmVudChhKX07Xy5wLlQ9ZnVuY3Rpb24oKXtfLm9oKHRoaXMudik7Xy56ay5XLlQuY2FsbCh0aGlzKX07Xy5Qaz17WzJdOnJrYGh0dHBzOi8vc3NsLmdzdGF0aWMuY29tL2diL2ltYWdlcy9yaW5nL3ByXzMycHhfYXNrbmp1eWVyYy5wbmdgfTtfLlFrPXJrYGh0dHBzOi8vc3NsLmdzdGF0aWMuY29tL2diL2ltYWdlcy9yaW5nL2UyX2RmMzJkZTIzZGV3Y2QzZHdlZDIzZHNkYXNkc2NlMi5zdmdgO18uUms9bmV3IFNldChbMTA3NTldKTsKfWNhdGNoKGUpe18uX0R1bXBFeGNlcHRpb24oZSl9CnRyeXsKdmFyIFRrLFprLGZsLGlsLGpsLGtsLFVrLFNrLG1sLHBsLHFsLHJsLGJsLHNsLHZsLEFsLEJsO1RrPWZ1bmN0aW9uKGEpe3JldHVybiBTa1thXXx8IiJ9O18uVms9ZnVuY3Rpb24oYSl7YT1Vay50ZXN0KGEpP2EucmVwbGFjZShVayxUayk6YTthPWF0b2IoYSk7dmFyIGI9bmV3IFVpbnQ4QXJyYXkoYS5sZW5ndGgpO2ZvcihsZXQgYz0wO2M8YS5sZW5ndGg7YysrKWJbY109YS5jaGFyQ29kZUF0KGMpO3JldHVybiBifTtfLldrPWZ1bmN0aW9uKGEpe3JldHVybiBhIT1udWxsJiZhIGluc3RhbmNlb2YgVWludDhBcnJheX07Xy5Yaz1mdW5jdGlvbihhKXtpZih0eXBlb2YgYSE9PSJzdHJpbmciKXRocm93IEVycm9yKCk7cmV0dXJuIGF9OwpfLllrPWZ1bmN0aW9uKGEsYixjLGQpe18uY2MoYSk7dmFyIGU9YS5kYSxmPWVbXy53XXwwO2lmKGM9PW51bGwpcmV0dXJuIF8uZWMoZSxmLGIpLGE7dmFyIGc9Yz09PV8uaGM/NzpjW18ud118MCxoPWcsaz1fLm1jKGcpLGw9a3x8T2JqZWN0LmlzRnJvemVuKGMpO2t8fChnPTApO2x8fChjPVsuLi5jXSxoPTAsZz1fLmpjKGcsZiksbD0hMSk7Z3w9NTt2YXIgbTtrPShtPV8uR2EoZykpIT1udWxsP206MTAyNDtnfD1rO2ZvcihtPTA7bTxjLmxlbmd0aDttKyspe2xldCBuPWNbbV0scj1kKG4sayk7T2JqZWN0LmlzKG4scil8fChsJiYoYz1bLi4uY10saD0wLGc9Xy5qYyhnLGYpLGw9ITEpLGNbbV09cil9ZyE9PWgmJihsJiYoYz1bLi4uY10sZz1fLmpjKGcsZikpLGNbXy53XT1nKTtfLmVjKGUsZixiLGMpO3JldHVybiBhfTtaaz1mdW5jdGlvbihhLGIpe3ZhciBjPXt9O2ZvcihsZXQgZCBpbiBhKWNbZF09Yi5jYWxsKHZvaWQgMCxhW2RdLGQsYSk7cmV0dXJuIGN9OwpfLiRrPWZ1bmN0aW9uKGEsYil7cmV0dXJuIF8uVWIoYSxiWzBdLGJbMV0pfTtfLmFsPWZ1bmN0aW9uKGEsYixjLGQpe18uY2MoYSk7dmFyIGU9YS5kYTtfLmVjKGUsZVtfLnddfDAsYiwoZD09PSIwIj9OdW1iZXIoYyk9PT0wOmM9PT1kKT92b2lkIDA6Yyk7cmV0dXJuIGF9O18uY2w9ZnVuY3Rpb24oYSl7dmFyIGI7cmV0dXJuKGI9YVtibF0pIT1udWxsP2I6YVtibF09bmV3IE1hcH07Xy5kbD1mdW5jdGlvbihhLGIsYyxkLGUpe3ZhciBmPWEuZ2V0KGQpO2lmKGYhPW51bGwpcmV0dXJuIGY7Zj0wO2ZvcihsZXQgZz0wO2c8ZC5sZW5ndGg7ZysrKXtsZXQgaD1kW2ddO18ubmMoYixoLGUpIT1udWxsJiYoZiE9PTAmJihjPV8uZWMoYixjLGYsdm9pZCAwLGUpKSxmPWgpfWEuc2V0KGQsZik7cmV0dXJuIGZ9OwpfLmVsPWZ1bmN0aW9uKGEsYixjLGQsZSl7dmFyIGY9Xy5jbChhKSxnPV8uZGwoZixhLGIsYyxlKTtnIT09ZCYmKGcmJihiPV8uZWMoYSxiLGcsdm9pZCAwLGUpKSxmLnNldChjLGQpKTtyZXR1cm4gYn07Zmw9ZnVuY3Rpb24oYSxiLGMsZCxlKXt2YXIgZj1hLkE7Yj1iIGluc3RhbmNlb2YgXy5VP2IuZGE6QXJyYXkuaXNBcnJheShiKT9fLiRrKGIsZCk6dm9pZCAwO2YuY2FsbChhLGMsYixlKX07Xy5nbD1mdW5jdGlvbihhKXt2YXIgYj1fLkVjKCJzY3JpcHQiLGEub3duZXJEb2N1bWVudCk7YiYmYS5zZXRBdHRyaWJ1dGUoIm5vbmNlIixiKX07Xy5obD1mdW5jdGlvbihhLGIsYyxkLGUsZixnKXt2YXIgaD0iIjthJiYoaCs9YSsiOiIpO2MmJihoKz0iLy8iLGImJihoKz1iKyJAIiksaCs9YyxkJiYoaCs9IjoiK2QpKTtlJiYoaCs9ZSk7ZiYmKGgrPSI/IitmKTtnJiYoaCs9IiMiK2cpO3JldHVybiBofTsKaWw9ZnVuY3Rpb24oYSl7c3dpdGNoKGEpe2Nhc2UgMjAwOnJldHVybiAwO2Nhc2UgNDAwOnJldHVybiAzO2Nhc2UgNDAxOnJldHVybiAxNjtjYXNlIDQwMzpyZXR1cm4gNztjYXNlIDQwNDpyZXR1cm4gNTtjYXNlIDQwOTpyZXR1cm4gMTA7Y2FzZSA0MTI6cmV0dXJuIDk7Y2FzZSA0Mjk6cmV0dXJuIDg7Y2FzZSA0OTk6cmV0dXJuIDE7Y2FzZSA1MDA6cmV0dXJuIDI7Y2FzZSA1MDE6cmV0dXJuIDEyO2Nhc2UgNTAzOnJldHVybiAxNDtjYXNlIDUwNDpyZXR1cm4gNDtkZWZhdWx0OnJldHVybiAyfX07CmpsPWZ1bmN0aW9uKGEpe3N3aXRjaChhKXtjYXNlIDA6cmV0dXJuIk9LIjtjYXNlIDE6cmV0dXJuIkNBTkNFTExFRCI7Y2FzZSAyOnJldHVybiJVTktOT1dOIjtjYXNlIDM6cmV0dXJuIklOVkFMSURfQVJHVU1FTlQiO2Nhc2UgNDpyZXR1cm4iREVBRExJTkVfRVhDRUVERUQiO2Nhc2UgNTpyZXR1cm4iTk9UX0ZPVU5EIjtjYXNlIDY6cmV0dXJuIkFMUkVBRFlfRVhJU1RTIjtjYXNlIDc6cmV0dXJuIlBFUk1JU1NJT05fREVOSUVEIjtjYXNlIDE2OnJldHVybiJVTkFVVEhFTlRJQ0FURUQiO2Nhc2UgODpyZXR1cm4iUkVTT1VSQ0VfRVhIQVVTVEVEIjtjYXNlIDk6cmV0dXJuIkZBSUxFRF9QUkVDT05ESVRJT04iO2Nhc2UgMTA6cmV0dXJuIkFCT1JURUQiO2Nhc2UgMTE6cmV0dXJuIk9VVF9PRl9SQU5HRSI7Y2FzZSAxMjpyZXR1cm4iVU5JTVBMRU1FTlRFRCI7Y2FzZSAxMzpyZXR1cm4iSU5URVJOQUwiO2Nhc2UgMTQ6cmV0dXJuIlVOQVZBSUxBQkxFIjtjYXNlIDE1OnJldHVybiJEQVRBX0xPU1MiOwpkZWZhdWx0OnJldHVybiIifX07a2w9ZnVuY3Rpb24oYSxiKXtiLnN0YWNrJiYoYS5zdGFjays9IlxuIitiLnN0YWNrKTtyZXR1cm4gYX07VWs9L1stXy5dL2c7U2s9eyItIjoiKyIsXzoiLyIsIi4iOiI9In07Xy5sbD17fTtfLk9iPWNsYXNze3piKCl7cmV0dXJuIHRoaXMuaT09bnVsbH1jb25zdHJ1Y3RvcihhLGIpe2lmKGIhPT1fLmxsKXRocm93IEVycm9yKCJoIik7dGhpcy5pPWE7aWYoYSE9bnVsbCYmYS5sZW5ndGg9PT0wKXRocm93IEVycm9yKCJnIik7fX07Xy5ubD1mdW5jdGlvbigpe3JldHVybiBtbHx8KG1sPW5ldyBfLk9iKG51bGwsXy5sbCkpfTtfLm9sPWZ1bmN0aW9uKGEpe2lmKF8ubGwhPT1fLmxsKXRocm93IEVycm9yKCJoIik7dmFyIGI9YS5pO2I9Yj09bnVsbHx8Xy5XayhiKT9iOnR5cGVvZiBiPT09InN0cmluZyI/Xy5WayhiKTpudWxsO3JldHVybiBiPT1udWxsP2I6YS5pPWJ9OwpwbD1mdW5jdGlvbihhKXt2YXIgYj0xO2E9YS5zcGxpdCgiOiIpO2Zvcih2YXIgYz1bXTtiPjAmJmEubGVuZ3RoOyljLnB1c2goYS5zaGlmdCgpKSxiLS07YS5sZW5ndGgmJmMucHVzaChhLmpvaW4oIjoiKSk7cmV0dXJuIGN9O3FsPWZ1bmN0aW9uKGEpe3ZhciBiPXt9O2E9KGEuaSYmXy5EaChhKT49Mj9hLmkuZ2V0QWxsUmVzcG9uc2VIZWFkZXJzKCl8fCIiOiIiKS5zcGxpdCgiXHJcbiIpO2ZvcihsZXQgZD0wO2Q8YS5sZW5ndGg7ZCsrKXtpZihfLmRhKGFbZF0pKWNvbnRpbnVlO3ZhciBjPXBsKGFbZF0pO2xldCBlPWNbMF07Yz1jWzFdO2lmKHR5cGVvZiBjIT09InN0cmluZyIpY29udGludWU7Yz1jLnRyaW0oKTtsZXQgZj1iW2VdfHxbXTtiW2VdPWY7Zi5wdXNoKGMpfXJldHVybiBaayhiLGZ1bmN0aW9uKGQpe3JldHVybiBkLmpvaW4oIiwgIil9KX07cmw9ZnVuY3Rpb24oYSl7cmV0dXJuIHR5cGVvZiBhLkI9PT0ic3RyaW5nIj9hLkI6U3RyaW5nKGEuQil9O2JsPV8uRmEoKTsKc2w9ZnVuY3Rpb24oYSxiLGMpe3ZhciBkPWFbXy53XXwwLGU9ZCYxMjg/Xy5JOnZvaWQgMCxmPV8ubmMoYSxjLGUpO2lmKGYhPW51bGwmJl8uSmEoZikpe2lmKCFfLkxhKGYpKXJldHVybiBfLmJjKGYpLGYuZGE7dmFyIGc9Zi5kYX1lbHNlIEFycmF5LmlzQXJyYXkoZikmJihnPWYpO2lmKGcpe2xldCBoPWdbXy53XXwwO2gmMiYmKGc9Xy5XYihnLGgpKX1nPV8uJGsoZyxiKTtnIT09ZiYmXy5lYyhhLGQsYyxnLGUpO3JldHVybiBnfTtfLnRsPWZ1bmN0aW9uKGEsYil7YS5pPWI7aWYoYj5hLnYpdGhyb3cgRXJyb3IoKTt9OwpfLnVsPWZ1bmN0aW9uKGEpe3ZhciBiPWEuaixjPWEuaSxkPWJbYysrXSxlPWQmMTI3O2lmKGQmMTI4JiYoZD1iW2MrK10sZXw9KGQmMTI3KTw8NyxkJjEyOCYmKGQ9YltjKytdLGV8PShkJjEyNyk8PDE0LGQmMTI4JiYoZD1iW2MrK10sZXw9KGQmMTI3KTw8MjEsZCYxMjgmJihkPWJbYysrXSxlfD1kPDwyOCxkJjEyOCYmYltjKytdJjEyOCYmYltjKytdJjEyOCYmYltjKytdJjEyOCYmYltjKytdJjEyOCYmYltjKytdJjEyOCkpKSkpdGhyb3cgRXJyb3IoKTtfLnRsKGEsYyk7cmV0dXJuIGV9O3ZsPWZ1bmN0aW9uKGEsYixjKXt2YXIgZD1hLmkudixlPV8udWwoYS5pKT4+PjA7ZT1hLmkuaStlO3ZhciBmPWUtZDtmPD0wJiYoYS5pLnY9ZSxjKGIsYSx2b2lkIDAsdm9pZCAwLHZvaWQgMCksZj1lLWEuaS5pKTtpZihmKXRocm93IEVycm9yKCk7YS5pLmk9ZTthLmkudj1kfTsKXy53bD1jbGFzc3tjb25zdHJ1Y3RvcihhLGIsYyl7dGhpcy5pPWE7dGhpcy5qPWI7YT1fLkRiKF8uUmUpO3RoaXMudj0hIWEmJmM9PT1hfHwhMX19O18ueGw9bmV3IF8ud2woZnVuY3Rpb24oYSxiLGMsZCxlKXtpZihhLmohPT0yKXJldHVybiExO3ZsKGEsc2woYixkLGMpLGUpO3JldHVybiEwfSxmbCxfLlJlKTtfLnlsPW5ldyBfLndsKGZ1bmN0aW9uKGEsYixjLGQsZSl7aWYoYS5qIT09MilyZXR1cm4hMTt2bChhLHNsKGIsZCxjKSxlKTtyZXR1cm4hMH0sZmwsXy5SZSk7Xy56bD1mdW5jdGlvbihhLGIpe3JldHVybihifHxkb2N1bWVudCkuZ2V0RWxlbWVudHNCeVRhZ05hbWUoU3RyaW5nKGEpKX07CkFsPWZ1bmN0aW9uKGEpe3N3aXRjaChhKXtjYXNlIDA6cmV0dXJuIk5vIEVycm9yIjtjYXNlIDE6cmV0dXJuIkFjY2VzcyBkZW5pZWQgdG8gY29udGVudCBkb2N1bWVudCI7Y2FzZSAyOnJldHVybiJGaWxlIG5vdCBmb3VuZCI7Y2FzZSAzOnJldHVybiJGaXJlZm94IHNpbGVudGx5IGVycm9yZWQiO2Nhc2UgNDpyZXR1cm4iQXBwbGljYXRpb24gY3VzdG9tIGVycm9yIjtjYXNlIDU6cmV0dXJuIkFuIGV4Y2VwdGlvbiBvY2N1cnJlZCI7Y2FzZSA2OnJldHVybiJIdHRwIHJlc3BvbnNlIGF0IDQwMCBvciA1MDAgbGV2ZWwiO2Nhc2UgNzpyZXR1cm4iUmVxdWVzdCB3YXMgYWJvcnRlZCI7Y2FzZSA4OnJldHVybiJSZXF1ZXN0IHRpbWVkIG91dCI7Y2FzZSA5OnJldHVybiJUaGUgcmVzb3VyY2UgaXMgbm90IGF2YWlsYWJsZSBvZmZsaW5lIjtkZWZhdWx0OnJldHVybiJVbnJlY29nbml6ZWQgZXJyb3IgY29kZSJ9fTtCbD1jbGFzcyBleHRlbmRzIF8uVXtjb25zdHJ1Y3RvcihhKXtzdXBlcihhKX19O3ZhciBDbD1jbGFzc3tjb25zdHJ1Y3RvcihhLGIsYyl7dGhpcy5UaD1hO3RoaXMueWg9Yjt0aGlzLm1ldGFkYXRhPWN9Z2V0TWV0YWRhdGEoKXtyZXR1cm4gdGhpcy5tZXRhZGF0YX19O3ZhciBEbD1jbGFzc3tjb25zdHJ1Y3RvcihhLGI9e30pe3RoaXMuVWg9YTt0aGlzLm1ldGFkYXRhPWI7dGhpcy5zdGF0dXM9bnVsbH1nZXRNZXRhZGF0YSgpe3JldHVybiB0aGlzLm1ldGFkYXRhfXNiKCl7cmV0dXJuIHRoaXMuc3RhdHVzfX07dmFyIEVsLEZsO0VsPWZ1bmN0aW9uKGEsYixjPXt9KXtyZXR1cm4gbmV3IENsKGIsYSxjKX07Rmw9ZnVuY3Rpb24oYSxiPXt9KXtyZXR1cm4gbmV3IERsKGEsYil9O18uR2w9Y2xhc3N7Y29uc3RydWN0b3IoYSxiLGMsZCxlKXt0aGlzLm5hbWU9YTt0aGlzLkRkPWI7dGhpcy5yZXNwb25zZVR5cGU9Yzt0aGlzLmk9ZDt0aGlzLmo9ZX1nZXROYW1lKCl7cmV0dXJuIHRoaXMubmFtZX19O3ZhciBIbD1uZXcgU2V0KFsiU0FQSVNJREhBU0giLCJBUElTSURIQVNIIl0pO18uSWw9Y2xhc3MgZXh0ZW5kcyBFcnJvcntjb25zdHJ1Y3RvcihhLGIsYz17fSl7c3VwZXIoYik7dGhpcy5jb2RlPWE7dGhpcy5tZXRhZGF0YT1jO3RoaXMubmFtZT0iUnBjRXJyb3IiO09iamVjdC5zZXRQcm90b3R5cGVPZih0aGlzLG5ldy50YXJnZXQucHJvdG90eXBlKX10b1N0cmluZygpe3ZhciBhPWBScGNFcnJvcigke2psKHRoaXMuY29kZSl8fFN0cmluZyh0aGlzLmNvZGUpfSlgO3RoaXMubWVzc2FnZSYmKGErPSI6ICIrdGhpcy5tZXNzYWdlKTtyZXR1cm4gYX19O3ZhciBKbD1fLnJjKGNsYXNzIGV4dGVuZHMgXy5Ve2NvbnN0cnVjdG9yKGEpe3N1cGVyKGEpfX0pO3ZhciBQbD1mdW5jdGlvbihhKXthLkMuUWIoImRhdGEiLGI9PntpZigiMSJpbiBiKXt2YXIgYz1iWyIxIl07bGV0IGQ7dHJ5e2Q9YS5LKGMpfWNhdGNoKGUpe0tsKGEsbmV3IF8uSWwoMTMsYEVycm9yIHdoZW4gZGVzZXJpYWxpemluZyByZXNwb25zZSBkYXRhOyBlcnJvcjogJHtlfSwgcmVzcG9uc2U6ICR7Y31gKSl9ZCYmTGwoYSxkKX1pZigiMiJpbiBiKWZvcihiPU1sKGEsYlsiMiJdKSxjPTA7YzxhLkIubGVuZ3RoO2MrKylhLkJbY10oYil9KTthLkMuUWIoImVuZCIsKCk9PntObChhLE9sKGEpKTtmb3IobGV0IGI9MDtiPGEudi5sZW5ndGg7YisrKWEudltiXSgpfSk7YS5DLlFiKCJlcnJvciIsKCk9PntpZihhLmkubGVuZ3RoIT09MCl7dmFyIGI9YS5tYS52O2IhPT0wfHxhLm1hLk9iKCl8fChiPTYpO3ZhciBjPS0xO3N3aXRjaChiKXtjYXNlIDA6dmFyIGQ9MjticmVhaztjYXNlIDc6ZD0xMDticmVhaztjYXNlIDg6ZD00O2JyZWFrO2Nhc2UgNjpjPWEubWEuc2IoKTtkPWlsKGMpOwpicmVhaztkZWZhdWx0OmQ9MTR9TmwoYSxPbChhKSk7Yj1BbChiKSsiLCBlcnJvcjogIitybChhLm1hKTtjIT09LTEmJihiKz1gLCBodHRwIHN0YXR1cyBjb2RlOiAke2N9YCk7S2woYSxuZXcgXy5JbChkLGIpKX19KX0sS2w9ZnVuY3Rpb24oYSxiKXtmb3IobGV0IGM9MDtjPGEuaS5sZW5ndGg7YysrKWEuaVtjXShiKX0sTmw9ZnVuY3Rpb24oYSxiKXtmb3IobGV0IGM9MDtjPGEuQS5sZW5ndGg7YysrKWEuQVtjXShiKX0sT2w9ZnVuY3Rpb24oYSl7dmFyIGI9e30sYz1xbChhLm1hKTtPYmplY3Qua2V5cyhjKS5mb3JFYWNoKGQ9PntiW2RdPWNbZF19KTtyZXR1cm4gYn0sTGw9ZnVuY3Rpb24oYSxiKXtmb3IobGV0IGM9MDtjPGEuai5sZW5ndGg7YysrKWEualtjXShiKX0sTWw9ZnVuY3Rpb24oYSxiKXt2YXIgYz0yLGQ9e307dHJ5e2xldCBmO2Y9SmwoYik7Yz1fLk0oZiwxKTt2YXIgZT1fLk4oZiwyKTtfLktlKGYsQmwsMyxfLkplKCkpLmxlbmd0aCYmKGRbImdycGMtd2ViLXN0YXR1cy1kZXRhaWxzLWJpbiJdPQpiKX1jYXRjaChmKXthLm1hJiZhLm1hLnNiKCk9PT00MDQ/KGM9NSxlPSJOb3QgRm91bmQ6ICIrU3RyaW5nKGEubWEuRCkpOihjPTE0LGU9YFVuYWJsZSB0byBwYXJzZSBScGNTdGF0dXM6ICR7Zn1gKX1yZXR1cm57Y29kZTpjLGRldGFpbHM6ZSxtZXRhZGF0YTpkfX0sUmw9ZnVuY3Rpb24oYSxiKXt2YXIgYz1uZXcgUWw7Xy5GKGEubWEsImNvbXBsZXRlIiwoKT0+e2lmKGEubWEuT2IoKSl7dmFyIGQ9YS5tYS5FYygpO3ZhciBlO2lmKGU9YillPWEubWEsZS5pJiZfLkRoKGUpPT00PyhlPWUuaS5nZXRSZXNwb25zZUhlYWRlcigiQ29udGVudC1UeXBlIiksZT1lPT09bnVsbD92b2lkIDA6ZSk6ZT12b2lkIDAsZT1lPT09InRleHQvcGxhaW4iO2lmKGUpe2lmKCFhdG9iKXRocm93IEVycm9yKCJmYSIpO2Q9YXRvYihkKX10cnl7dmFyIGY9YS5LKGQpfWNhdGNoKGgpe0tsKGEsa2wobmV3IF8uSWwoMTMsYEVycm9yIHdoZW4gZGVzZXJpYWxpemluZyByZXNwb25zZSBkYXRhOyBlcnJvcjogJHtofSwgcmVzcG9uc2U6ICR7ZH1gKSwKYykpO3JldHVybn1kPWlsKGEubWEuc2IoKSk7TmwoYSxPbChhKSk7ZD09PTA/TGwoYSxmKTpLbChhLGtsKG5ldyBfLklsKGQsIlhociBzdWNjZWVkZWQgYnV0IHRoZSBzdGF0dXMgY29kZSBpcyBub3QgMjAwIiksYykpfWVsc2V7ZD1hLm1hLkVjKCk7Zj1PbChhKTtpZihkKXt2YXIgZz1NbChhLGQpO2Q9Zy5jb2RlO2U9Zy5kZXRhaWxzO2c9Zy5tZXRhZGF0YX1lbHNlIGQ9MixlPWBScGMgZmFpbGVkIGR1ZSB0byB4aHIgZXJyb3IuIHVyaTogJHtTdHJpbmcoYS5tYS5EKX0sIGVycm9yIGNvZGU6ICR7YS5tYS52fSwgZXJyb3I6ICR7cmwoYS5tYSl9YCxnPWY7TmwoYSxmKTtLbChhLGtsKG5ldyBfLklsKGQsZSxnKSxjKSl9fSl9LFNsPWZ1bmN0aW9uKGEsYil7Yj1hLmluZGV4T2YoYik7Yj4tMSYmYS5zcGxpY2UoYiwxKX0sVGw9Y2xhc3N7Y29uc3RydWN0b3IoYSxiKXt0aGlzLmo9W107dGhpcy5BPVtdO3RoaXMuQj1bXTt0aGlzLnY9W107dGhpcy5pPVtdO3RoaXMuQz1hLkJoO3RoaXMuSz0KYjt0aGlzLm1hPWEubWE7dGhpcy5DJiZQbCh0aGlzKX1RYihhLGIpe2E9PT0iZGF0YSI/dGhpcy5qLnB1c2goYik6YT09PSJtZXRhZGF0YSI/dGhpcy5BLnB1c2goYik6YT09PSJzdGF0dXMiP3RoaXMuQi5wdXNoKGIpOmE9PT0iZW5kIj90aGlzLnYucHVzaChiKTphPT09ImVycm9yIiYmdGhpcy5pLnB1c2goYil9cmVtb3ZlTGlzdGVuZXIoYSxiKXthPT09ImRhdGEiP1NsKHRoaXMuaixiKTphPT09Im1ldGFkYXRhIj9TbCh0aGlzLkEsYik6YT09PSJzdGF0dXMiP1NsKHRoaXMuQixiKTphPT09ImVuZCI/U2wodGhpcy52LGIpOmE9PT0iZXJyb3IiJiZTbCh0aGlzLmksYik7cmV0dXJuIHRoaXN9Y2FuY2VsKCl7dGhpcy5tYS5hYm9ydCgpfX0sUWw9Y2xhc3MgZXh0ZW5kcyBFcnJvcntjb25zdHJ1Y3Rvcigpe3N1cGVyKCk7dGhpcy5uYW1lPSJBc3luY1N0YWNrIjtPYmplY3Quc2V0UHJvdG90eXBlT2YodGhpcyxuZXcudGFyZ2V0LnByb3RvdHlwZSl9fTt2YXIgVWw9ZnVuY3Rpb24oYSl7dGhpcy52PWEub2l8fG51bGw7dGhpcy5qPWEuZ2l8fCExfTtfLkgoVWwsXy5jZCk7VWwucHJvdG90eXBlLmk9ZnVuY3Rpb24oKXtyZXR1cm4gbmV3IFZsKHRoaXMudix0aGlzLmopfTt2YXIgVmw9ZnVuY3Rpb24oYSxiKXtfLkQuY2FsbCh0aGlzKTt0aGlzLk49YTt0aGlzLkQ9Yjt0aGlzLkM9dm9pZCAwO3RoaXMuc3RhdHVzPXRoaXMucmVhZHlTdGF0ZT0wO3RoaXMucmVzcG9uc2VUeXBlPXRoaXMucmVzcG9uc2VUZXh0PXRoaXMucmVzcG9uc2U9dGhpcy5zdGF0dXNUZXh0PSIiO3RoaXMub25yZWFkeXN0YXRlY2hhbmdlPW51bGw7dGhpcy5IPW5ldyBIZWFkZXJzO3RoaXMuaj1udWxsO3RoaXMuTT0iR0VUIjt0aGlzLkw9IiI7dGhpcy5pPSExO3RoaXMuRj10aGlzLnY9dGhpcy5BPW51bGw7dGhpcy5HPW5ldyBBYm9ydENvbnRyb2xsZXJ9O18uSChWbCxfLkQpOwpWbC5wcm90b3R5cGUub3Blbj1mdW5jdGlvbihhLGIpe2lmKHRoaXMucmVhZHlTdGF0ZSE9MCl0aHJvdyB0aGlzLmFib3J0KCksRXJyb3IoImdhIik7dGhpcy5NPWE7dGhpcy5MPWI7dGhpcy5yZWFkeVN0YXRlPTE7V2wodGhpcyl9O1ZsLnByb3RvdHlwZS5zZW5kPWZ1bmN0aW9uKGEpe2lmKHRoaXMucmVhZHlTdGF0ZSE9MSl0aHJvdyB0aGlzLmFib3J0KCksRXJyb3IoImhhIik7aWYodGhpcy5HLnNpZ25hbC5hYm9ydGVkKXRocm93IHRoaXMuYWJvcnQoKSxFcnJvcigiaWEiKTt0aGlzLmk9ITA7dmFyIGI9e2hlYWRlcnM6dGhpcy5ILG1ldGhvZDp0aGlzLk0sY3JlZGVudGlhbHM6dGhpcy5DLGNhY2hlOnZvaWQgMCxzaWduYWw6dGhpcy5HLnNpZ25hbH07YSYmKGIuYm9keT1hKTsodGhpcy5OfHxfLnUpLmZldGNoKG5ldyBSZXF1ZXN0KHRoaXMuTCxiKSkudGhlbih0aGlzLlIuYmluZCh0aGlzKSx0aGlzLkIuYmluZCh0aGlzKSl9OwpWbC5wcm90b3R5cGUuYWJvcnQ9ZnVuY3Rpb24oKXt0aGlzLnJlc3BvbnNlPXRoaXMucmVzcG9uc2VUZXh0PSIiO3RoaXMuSD1uZXcgSGVhZGVyczt0aGlzLnN0YXR1cz0wO3RoaXMuRy5hYm9ydCgiUmVxdWVzdCB3YXMgYWJvcnRlZC4iKTt0aGlzLnYmJnRoaXMudi5jYW5jZWwoIlJlcXVlc3Qgd2FzIGFib3J0ZWQuIikuY2F0Y2goKCk9Pm51bGwpO3RoaXMucmVhZHlTdGF0ZT49MSYmdGhpcy5pJiZ0aGlzLnJlYWR5U3RhdGUhPTQmJih0aGlzLmk9ITEsWGwodGhpcykpO3RoaXMucmVhZHlTdGF0ZT0wfTsKVmwucHJvdG90eXBlLlI9ZnVuY3Rpb24oYSl7aWYodGhpcy5pJiYodGhpcy5BPWEsdGhpcy5qfHwodGhpcy5zdGF0dXM9dGhpcy5BLnN0YXR1cyx0aGlzLnN0YXR1c1RleHQ9dGhpcy5BLnN0YXR1c1RleHQsdGhpcy5qPWEuaGVhZGVycyx0aGlzLnJlYWR5U3RhdGU9MixXbCh0aGlzKSksdGhpcy5pJiYodGhpcy5yZWFkeVN0YXRlPTMsV2wodGhpcyksdGhpcy5pKSkpaWYodGhpcy5yZXNwb25zZVR5cGU9PT0iYXJyYXlidWZmZXIiKWEuYXJyYXlCdWZmZXIoKS50aGVuKHRoaXMuUC5iaW5kKHRoaXMpLHRoaXMuQi5iaW5kKHRoaXMpKTtlbHNlIGlmKHR5cGVvZiBfLnUuUmVhZGFibGVTdHJlYW0hPT0idW5kZWZpbmVkIiYmImJvZHkiaW4gYSl7dGhpcy52PWEuYm9keS5nZXRSZWFkZXIoKTtpZih0aGlzLkQpe2lmKHRoaXMucmVzcG9uc2VUeXBlKXRocm93IEVycm9yKCJqYSIpO3RoaXMucmVzcG9uc2U9W119ZWxzZSB0aGlzLnJlc3BvbnNlPXRoaXMucmVzcG9uc2VUZXh0PSIiLHRoaXMuRj0KbmV3IFRleHREZWNvZGVyO1lsKHRoaXMpfWVsc2UgYS50ZXh0KCkudGhlbih0aGlzLlMuYmluZCh0aGlzKSx0aGlzLkIuYmluZCh0aGlzKSl9O3ZhciBZbD1mdW5jdGlvbihhKXthLnYucmVhZCgpLnRoZW4oYS5PLmJpbmQoYSkpLmNhdGNoKGEuQi5iaW5kKGEpKX07VmwucHJvdG90eXBlLk89ZnVuY3Rpb24oYSl7aWYodGhpcy5pKXtpZih0aGlzLkQmJmEudmFsdWUpdGhpcy5yZXNwb25zZS5wdXNoKGEudmFsdWUpO2Vsc2UgaWYoIXRoaXMuRCl7dmFyIGI9YS52YWx1ZT9hLnZhbHVlOm5ldyBVaW50OEFycmF5KDApO2lmKGI9dGhpcy5GLmRlY29kZShiLHtzdHJlYW06IWEuZG9uZX0pKXRoaXMucmVzcG9uc2U9dGhpcy5yZXNwb25zZVRleHQrPWJ9YS5kb25lP1hsKHRoaXMpOldsKHRoaXMpO3RoaXMucmVhZHlTdGF0ZT09MyYmWWwodGhpcyl9fTtWbC5wcm90b3R5cGUuUz1mdW5jdGlvbihhKXt0aGlzLmkmJih0aGlzLnJlc3BvbnNlPXRoaXMucmVzcG9uc2VUZXh0PWEsWGwodGhpcykpfTsKVmwucHJvdG90eXBlLlA9ZnVuY3Rpb24oYSl7dGhpcy5pJiYodGhpcy5yZXNwb25zZT1hLFhsKHRoaXMpKX07VmwucHJvdG90eXBlLkI9ZnVuY3Rpb24oKXt0aGlzLmkmJlhsKHRoaXMpfTt2YXIgWGw9ZnVuY3Rpb24oYSl7YS5yZWFkeVN0YXRlPTQ7YS5BPW51bGw7YS52PW51bGw7YS5GPW51bGw7V2woYSl9O1ZsLnByb3RvdHlwZS5zZXRSZXF1ZXN0SGVhZGVyPWZ1bmN0aW9uKGEsYil7dGhpcy5ILmFwcGVuZChhLGIpfTtWbC5wcm90b3R5cGUuZ2V0UmVzcG9uc2VIZWFkZXI9ZnVuY3Rpb24oYSl7cmV0dXJuIHRoaXMuaj90aGlzLmouZ2V0KGEudG9Mb3dlckNhc2UoKSl8fCIiOiIifTtWbC5wcm90b3R5cGUuZ2V0QWxsUmVzcG9uc2VIZWFkZXJzPWZ1bmN0aW9uKCl7aWYoIXRoaXMuailyZXR1cm4iIjtmb3IodmFyIGE9W10sYj10aGlzLmouZW50cmllcygpLGM9Yi5uZXh0KCk7IWMuZG9uZTspYz1jLnZhbHVlLGEucHVzaChjWzBdKyI6ICIrY1sxXSksYz1iLm5leHQoKTtyZXR1cm4gYS5qb2luKCJcclxuIil9Owp2YXIgV2w9ZnVuY3Rpb24oYSl7YS5vbnJlYWR5c3RhdGVjaGFuZ2UmJmEub25yZWFkeXN0YXRlY2hhbmdlLmNhbGwoYSl9O09iamVjdC5kZWZpbmVQcm9wZXJ0eShWbC5wcm90b3R5cGUsIndpdGhDcmVkZW50aWFscyIse2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLkM9PT0iaW5jbHVkZSJ9LHNldDpmdW5jdGlvbihhKXt0aGlzLkM9YT8iaW5jbHVkZSI6InNhbWUtb3JpZ2luIn19KTt2YXIgWmw9ZnVuY3Rpb24oYSl7dmFyIGI9IiI7Xy5KYyhhLGZ1bmN0aW9uKGMsZCl7Yis9ZDtiKz0iOiI7Yis9YztiKz0iXHJcbiJ9KTtyZXR1cm4gYn07dmFyICRsLGFtLGJtOyRsPWZ1bmN0aW9uKGEsYil7cmV0dXJuIGIucmVkdWNlKChjLGQpPT5lPT5kLmludGVyY2VwdChlLGMpLGEpfTsKYW09ZnVuY3Rpb24oYSxiLGMpe3ZhciBkPWIueWgsZT1iLmdldE1ldGFkYXRhKCk7dmFyIGY9YS5pJiYhMTtmPWEuUWR8fGY/bmV3IF8udWgobmV3IFVsKHtvaTphLlFkLGdpOmZ9KSk6bmV3IF8udWg7Yys9ZC5nZXROYW1lKCk7ZVsiQ29udGVudC1UeXBlIl09ImFwcGxpY2F0aW9uL2pzb24rcHJvdG9idWYiO2VbIlgtVXNlci1BZ2VudCJdPSJncnBjLXdlYi1qYXZhc2NyaXB0LzAuMSI7dmFyIGc9ZS5BdXRob3JpemF0aW9uO2lmKGcmJkhsLmhhcyhnLnNwbGl0KCIgIilbMF0pfHxhLndpdGhDcmVkZW50aWFscylmLkg9ITA7aWYoYS5oZilpZihhPWMsXy5MYyhlKSljPWE7ZWxzZSBpZihjPVpsKGUpLHR5cGVvZiBhPT09InN0cmluZyIpe3ZhciBoPWVuY29kZVVSSUNvbXBvbmVudCgiJGh0dHBIZWFkZXJzIik7Yz1jIT1udWxsPyI9IitlbmNvZGVVUklDb21wb25lbnQoU3RyaW5nKGMpKToiIjtpZihoKz1jKXtjPWEuaW5kZXhPZigiIyIpO2M8MCYmKGM9YS5sZW5ndGgpO2c9YS5pbmRleE9mKCI/Iik7CmxldCBrO2c8MHx8Zz5jPyhnPWMsaz0iIik6az1hLnN1YnN0cmluZyhnKzEsYyk7YT1bYS5zbGljZSgwLGcpLGssYS5zbGljZShjKV07Yz1hWzFdO2g9aD9jP2MrIiYiK2g6aDpjO2FbMV09aDtjPWFbMF0rKGFbMV0/Ij8iK2FbMV06IiIpK2FbMl19ZWxzZSBjPWF9ZWxzZSBfLk9qKGEsIiRodHRwSGVhZGVycyIsYyksYz1hO2Vsc2UgZm9yKGggb2YgT2JqZWN0LmtleXMoZSkpZi5oZWFkZXJzLnNldChoLGVbaF0pO2E9YztoPW5ldyBUbCh7bWE6ZixCaDp2b2lkIDB9LGQuaik7UmwoaCxlWyJYLUdvb2ctRW5jb2RlLVJlc3BvbnNlLUlmLUV4ZWN1dGFibGUiXT09PSJiYXNlNjQiKTtiPWQuaShiLlRoKTtmLnNlbmQoYSwiUE9TVCIsYik7cmV0dXJuIGh9OwpibT1mdW5jdGlvbihhLGIsYyxkLGUsZj17fSl7dmFyIGc9Yi5zdWJzdHJpbmcoMCxiLmxlbmd0aC1lLm5hbWUubGVuZ3RoKSxoPWY9PW51bGw/dm9pZCAwOmYuc2lnbmFsO3JldHVybiAkbChrPT5uZXcgUHJvbWlzZSgobCxtKT0+e2lmKGg9PW51bGw/MDpoLmFib3J0ZWQpe2xldCBxPW5ldyBfLklsKDEsIkFib3J0ZWQiKTtxLmNhdXNlPWgucmVhc29uO20ocSl9ZWxzZXt2YXIgbj17fSxyPWFtKGEsayxnKTtyLlFiKCJlcnJvciIscT0+dm9pZCBtKHEpKTtyLlFiKCJtZXRhZGF0YSIscT0+e249cX0pO3IuUWIoImRhdGEiLHE9PntsKEZsKHEsbikpfSk7aCYmaC5hZGRFdmVudExpc3RlbmVyKCJhYm9ydCIsKCk9PntyLmNhbmNlbCgpO3ZhciBxPW5ldyBfLklsKDEsIkFib3J0ZWQiKTtxLmNhdXNlPWgucmVhc29uO20ocSl9KX19KSxhLm1mKS5jYWxsKGEsRWwoZSxjLGQpKS50aGVuKGs9PmsuVWgpfTsKXy5jbT1mdW5jdGlvbihhLGIsYyxkLGUsZj17fSl7cmV0dXJuIGJtKGEsYixjLGQsZSxmKX07Xy5kbT1jbGFzc3tjb25zdHJ1Y3RvcihhPXt9KXt0aGlzLmhmPWEuaGZ8fF8uRmQoInN1cHByZXNzQ29yc1ByZWZsaWdodCIsYSl8fCExO3RoaXMud2l0aENyZWRlbnRpYWxzPWEud2l0aENyZWRlbnRpYWxzfHxfLkZkKCJ3aXRoQ3JlZGVudGlhbHMiLGEpfHwhMTt0aGlzLm1mPWEubWZ8fFtdO3RoaXMuUWQ9YS5RZDt0aGlzLmk9YS5EbXx8ITF9fTsKfWNhdGNoKGUpe18uX0R1bXBFeGNlcHRpb24oZSl9CnRyeXsKXy5lbT1mdW5jdGlvbigpe3ZhciBhPV8ubmY7aWYoIV8udS5uYXZpZ2F0b3IuY29va2llRW5hYmxlZClyZXR1cm4hMTtpZighYS56YigpKXJldHVybiEwO2Euc2V0KCJURVNUQ09PS0lFU0VOQUJMRUQiLCIxIix7TWM6NjB9KTtpZihhLmdldCgiVEVTVENPT0tJRVNFTkFCTEVEIikhPT0iMSIpcmV0dXJuITE7Xy5sZihhLCJURVNUQ09PS0lFU0VOQUJMRUQiKTtyZXR1cm4hMH07Xy5mbT1jbGFzc3tjb25zdHJ1Y3Rvcigpe3RoaXMuQWI9bnVsbDt0aGlzLmk9ITF9c3RhdGljIGkoKXtyZXR1cm4gXy5TaChfLmZtKX19O3ZhciBobSxnbTtobT1mdW5jdGlvbigpe3ZhciBhPV8udS5sb2NhdGlvbi5ob3N0bmFtZS5tYXRjaChnbSk7cmV0dXJuIGEmJmFbMF0/YVswXTpudWxsfTtfLmltPWZ1bmN0aW9uKGEsYil7IWEuSyYmKGEuUD4wfHxiKSYmYS52KCkmJihhLks9ITAsYS5BKGIpKX07Xy5qbT1jbGFzc3tjb25zdHJ1Y3RvcihhLGIsYyl7dGhpcy5ncm91cElkPWE7dGhpcy5PPSJkcF8iK2E7dGhpcy5NPSJjb3VudF8iK2E7dGhpcy5QPWI7dGhpcy5EPXRoaXMuSz0hMTt0aGlzLlM9ISFjfXYoKXtyZXR1cm4gbmF2aWdhdG9yLmNvb2tpZUVuYWJsZWQmJnRoaXMuU3x8ISFfLmVtKCl9d2EoYSl7dGhpcy52KCkmJnRoaXMuaighMSxhKX1hY2NlcHQoYSl7dGhpcy52KCkmJnRoaXMuaighMCxhKX1qKCl7dGhyb3cgRXJyb3IoIm5hIik7fUEoKXt0aHJvdyBFcnJvcigibmEiKTt9aSgpe3JldHVybiAwfX07Z209UmVnRXhwKCJnb29nbGUoPzpcXC5bYS16XXsyLDN9KXsxLDJ9JCIsImkiKTtfLmttPWNsYXNzIGV4dGVuZHMgXy5qbXtjb25zdHJ1Y3RvcihhLGIsYyl7c3VwZXIoYSxiKTt0aGlzLkI9IWN8fGM9PS0yfHxjPjMxNTM2RTM/MzE1MzZFMzpjO3RoaXMuQz1uZXcgUmVnRXhwKCJcXGIiK3RoaXMuZ3JvdXBJZCsiLShbMC05XSspOiIpfXYoKXtfLmVtKCl8fCh0aGlzLkI9LTEpO3JldHVybiEwfWooKXt2YXIgYT1fLm5mLmdldCgiT0dQIiwiIiksYj0iLSIrdGhpcy5ncm91cElkKyI6IjsobmV3IFJlZ0V4cChiKSkudGVzdChhKXx8KGErPWIpOyhiPWhtKCkpJiZfLm5mLnNldCgiT0dQIixhLHtNYzp0aGlzLkIscGF0aDoiLyIsZG9tYWluOmJ9KX1BKCl7dmFyIGE9Xy5uZi5nZXQoIk9HUEMiLCIiKSxiPXRoaXMuaShhKSxjPSEwO2I9PS0xJiYoYz0hMSxiPTApO2I9dGhpcy5ncm91cElkKyItIisoYisxKSsiOiI7YT1jP2EucmVwbGFjZSh0aGlzLkMsYik6KGE/YToiIikrYjsoYz1obSgpKSYmXy5uZi5zZXQoIk9HUEMiLGEse01jOnRoaXMuQixwYXRoOiIvIixkb21haW46Y30pfWkoYSl7dmFyIGI9CmF8fF8ubmYuZ2V0KCJPR1BDIiwiIik7YT0tMTtiJiYoYj1iLm1hdGNoKHRoaXMuQykpJiZiLmxlbmd0aD4xJiYoYT1wYXJzZUludChiWzFdLDEwKXx8MCk7cmV0dXJuIGF9fTt2YXIgbW07Xy5sbT1fLnUuVVJMO3RyeXtuZXcgXy5sbSgiaHR0cDovL2V4YW1wbGUuY29tIiksbW09ITB9Y2F0Y2goYSl7bW09ITF9Xy5ubT1tbTtfLm9tPW5ldyBNYXAoW1siaHR0cDoiLCI4MCJdLFsiaHR0cHM6IiwiNDQzIl0sWyJ3czoiLCI4MCJdLFsid3NzOiIsIjQ0MyJdLFsiZnRwOiIsIjIxIl1dKTsKfWNhdGNoKGUpe18uX0R1bXBFeGNlcHRpb24oZSl9CnRyeXsKdmFyIHBtO3BtPWNsYXNzIGV4dGVuZHMgXy5Ve2NvbnN0cnVjdG9yKGEpe3N1cGVyKGEpfX07Xy5xbT1mdW5jdGlvbihhKXtyZXR1cm4gXy5LZShhLHBtLDEsXy5KZSgpKX07Xy5ybT1mdW5jdGlvbihhKXtyZXR1cm4gXy5KKGEuaixfLk1nLDUpfHxuZXcgXy5NZ307Cn1jYXRjaChlKXtfLl9EdW1wRXhjZXB0aW9uKGUpfQp0cnl7CnZhciBzbSxDbSxEbTtzbT1mdW5jdGlvbihhLGIsYyl7cmV0dXJuIGZ1bmN0aW9uKCl7dHJ5e3JldHVybiBiLmFwcGx5KGMsYXJndW1lbnRzKX1jYXRjaChkKXthLmxvZyhkKX19fTtfLnRtPWNsYXNzIGV4dGVuZHMgXy5Ve2NvbnN0cnVjdG9yKGEpe3N1cGVyKGEpfX07Xy51bT1mdW5jdGlvbihhLGIsYyl7Xy5saC5JKGIsYyx2b2lkIDAsYS52fHxhLGEpfTtfLnZtPWZ1bmN0aW9uKGEpe3ZhciBiPU51bWJlcihhKTtyZXR1cm4gYj09MCYmXy5kYShhKT9OYU46Yn07Xy53bT1mdW5jdGlvbihhLGIpe2Zvcih2YXIgYz0wO2E7KXtpZihiKGEpKXJldHVybiBhO2E9YS5wYXJlbnROb2RlO2MrK31yZXR1cm4gbnVsbH07Cl8ueG09ZnVuY3Rpb24oYSxiKXtpZihhIGluc3RhbmNlb2YgRWxlbWVudCl7dmFyIGM9Xy5qaygiZXEiKTtjJiYoYj1jLnYoYSxifHxbXSkpJiYoXy5hZSYmYiBpbnN0YW5jZW9mIE1vdXNlRXZlbnQmJmEuZGlzcGF0Y2hFdmVudD8oYz1kb2N1bWVudC5jcmVhdGVFdmVudCgiTW91c2VFdmVudCIpLGMuaW5pdE1vdXNlRXZlbnQoYi50eXBlLCEwLCEwLGIudmlldyxiLmRldGFpbCxiLnNjcmVlblgsYi5zY3JlZW5ZLGIuY2xpZW50WCxiLmNsaWVudFksYi5jdHJsS2V5LGIuYWx0S2V5LGIuc2hpZnRLZXksYi5tZXRhS2V5LGIuYnV0dG9uLGIucmVsYXRlZFRhcmdldCksYS5kaXNwYXRjaEV2ZW50KGMpKTphLmRpc3BhdGNoRXZlbnQmJmEuZGlzcGF0Y2hFdmVudChiKSl9fTtfLnltPWZ1bmN0aW9uKGEsYixjKXt2YXIgZD1fLkooYyxfLnRtLDQ3KXx8bmV3IF8udG07Xy5LKGMsNDcsZCk7YS5qLmxvZyhiLGMpfTsKXy56bT1mdW5jdGlvbihhLGI9bnVsbCxjPW51bGwsZD1udWxsLGU9bnVsbCxmPW51bGwsZz1udWxsKXt2YXIgaD1uZXcgXy50bTthIT1udWxsJiZfLlQoaCwzLGEpO2QhPW51bGwmJl8ueShoLDQsZCk7ZSE9bnVsbCYmXy5RZShoLDEwLGUpO2IhPW51bGwmJl8uUyhoLDUsYik7YyE9bnVsbCYmXy5TKGgsNixjKTtmIT1udWxsJiZfLnooaCw3LGYpO2chPW51bGwmJl8ueShoLDgsZyk7cmV0dXJuIGh9O18uQW09ZnVuY3Rpb24oYSxiLGMsZCxlLGYsZz1uZXcgXy5WKXt2YXIgaD1hLmk/OTQ6ODtjPV8uem0oZSxjLGQpO18uVChjLDEsYik7Xy56KGMsOSxmKTtfLksoZyw0NyxjKTtfLnltKGEsaCxnKX07Xy5CbT1jbGFzc3tjb25zdHJ1Y3RvcihhLGIpe3RoaXMuaj1hO3RoaXMuaT1ifWxvZyhhLGI9bmV3IF8uVil7Xy55bSh0aGlzLGEsYil9fTsKQ209ZnVuY3Rpb24oYSl7cmV0dXJuIEFycmF5LmlzQXJyYXkoYSk/QXJyYXkucHJvdG90eXBlLm1hcC5jYWxsKGEsQ20sdm9pZCAwKTp0eXBlb2YgYT09PSJzdHJpbmciP2E6YT9hLnRvU3RyaW5nKCk6YX07CkRtPWNsYXNzIGV4dGVuZHMgXy50ZHtjb25zdHJ1Y3RvcihhKXtzdXBlcih2b2lkIDApO3RoaXMuQT1hO3RoaXMuRD10aGlzfUkoYSxiLGMsZCl7aWYoYyl7aWYodHlwZW9mIGMhPSJmdW5jdGlvbiIpdGhyb3cgbmV3IFR5cGVFcnJvcigieGEiKTtjPXNtKHRoaXMuQSxjLHRoaXMuRCk7Yz1zdXBlci5JKGEsYixjLGQpO18ueG0oYSxDbShiKSk7cmV0dXJuIGN9cmV0dXJuIHN1cGVyLkkoYSxiLGMsZCl9QihhLGIsYyxkLGUpe2lmKGMpe2lmKHR5cGVvZiBjIT0iZnVuY3Rpb24iKXRocm93IG5ldyBUeXBlRXJyb3IoInhhIik7Yz1zbSh0aGlzLkEsYyxlfHx0aGlzLkQpO2M9c3VwZXIuQihhLGIsYyxkLGUpO18ueG0oYSxDbShiKSk7cmV0dXJuIGN9cmV0dXJuIHN1cGVyLkIoYSxiLGMsZCxlKX12YShhLGIsYyxkKXtpZihjKXtpZih0eXBlb2YgYyE9ImZ1bmN0aW9uIil0aHJvdyBuZXcgVHlwZUVycm9yKCJ4YSIpO2M9c20odGhpcy5BLGMsdGhpcy5EKTtjPXN1cGVyLnZhKGEsYixjLGQpOwpfLnhtKGEsQ20oYikpO3JldHVybiBjfXJldHVybiBzdXBlci52YShhLGIsYyxkKX19O18uRW09Y2xhc3MgZXh0ZW5kcyBEbXtjb25zdHJ1Y3RvcihhLGIpe3N1cGVyKGIpO3RoaXMuaT1hfUooKXtyZXR1cm4gdGhpcy5pfVQoKXt0aGlzLmk9bnVsbDtzdXBlci5UKCl9fTsKfWNhdGNoKGUpe18uX0R1bXBFeGNlcHRpb24oZSl9CnRyeXsKdmFyIEZtLEdtLEhtLEltLExtLE5tLFFtLFJtLFNtLFhtLFltLFptLGJuLGZuLGduLGhuLGpuLGtuLGxuLG1uLG5uLG9uLHBuLHFuLHJuLHRuLHVuLHNuLHhuLHduLHluLEFuLEJuLERuLEVuLEhuLEluLEpuLExuLE5uLE9uLFBuLFFuLFJuLFNuLFRuLFVuLFZuLFduLFhuLFluLFpuLGNvLHBvLHNvLHpvLENvLEhvLEpvLFBvLFZvLFdvLFlvLGJwLFpvLGNwLHZuLGRwLGVwLGZwLGdwLGhwLGlwLGpwLGtwLG1wLG5wLHBwLGFwLHFwLHJwLHRwLHVwLHZwLHdwLHhwLHlwLEptLEttLE1tLHpwLGRuLEFwLGVuLEJwLENwLFdtLGFuLCRtLGNuLERwLEVwLFZtLFRtLFVtLE9tLFBtLEZwLEdwLEhwLElwLEpwLEtwLExwLE1wLE5wLE9wLFBwLFFwLFJwLFNwLFRwLFVwLFZwLFdwLFhwLFlwLFpwLCRwLEduLGFxLEZuLGJxLHpuLENuLGNxLGRxLGVxLGZxLGdxLEtuLGhxLE1uLFhvLGlxLGpxLGtxLGxxLG1xLG5xLG9xLHBxLHNxLHRxLHVxLHZxLHdxLHhxLHlxLHpxLEFxLERxLENxLEJxLEVxLEZxLApHcSxIcSxJcSxKcSxPcSxLcSxMcSxNcSxOcSxQcSxRcSxScSxTcSxUcSxVcSxWcSxXcSxYcSxZcSxacSwkcSxhcixicixjcixkcixlcixmcixncixocixpcixrcixqcixscixtcixucixvcixwcixxcixzcixycix4cix5cix6cixBcixCcixDcixEcixGcixHcixFcixJcixIcixLcixMcixNcixKcixOcixPcixQcixRcixScixTcixUcixVcixWcixYcixZcixaciwkcixhcyxXciwkbyxjcyxkcyxlcyxmcyxncyxocyxpcywkbixhbyxqcyxybyx0byxucyxvcyxwcyxxcyxxbyxpbyxrbyxnbyxqbyxvbyxtbyxubyxibyxzcyxrcyxscyx1cyx3byx4byx2byx2cyx3cyx5cyx6cyxBcyxCcyx4cyxDcyxEcyxFcyxGcyxMcyxIcyxOcyxHcyxPcyxNcyxQcyxScyxTcyxLcyxKcyxJcyxWcyxacyxZcyxhdCxidCxmdCxndCxodCxpdCxRcyxUcyxVcywkcyxrdCxjdCxkdCxldCxudCxvdCxwdCxxdCxqdCxsdCxtdCxYcyxydCxzdDsKRm09ZnVuY3Rpb24oYSxiKXt2YXIgYz1hLmxlbmd0aDtpZihjIT09Yi5sZW5ndGgpcmV0dXJuITE7Zm9yKGxldCBkPTA7ZDxjO2QrKylpZihhW2RdIT09YltkXSlyZXR1cm4hMTtyZXR1cm4hMH07R209ZnVuY3Rpb24oKXt0aHJvdyBFcnJvcigiYyIpO307SG09ZnVuY3Rpb24oYSxiKXtiPVN0cmluZy5mcm9tQ2hhckNvZGUuYXBwbHkobnVsbCxiKTtyZXR1cm4gYT09bnVsbD9iOmErYn07SW09ZnVuY3Rpb24oYSxiLGMpe3ZhciBkPWImMTI4PzA6LTEsZT1hLmxlbmd0aCxmO2lmKGY9ISFlKWY9YVtlLTFdLGY9ZiE9bnVsbCYmdHlwZW9mIGY9PT0ib2JqZWN0IiYmZi5jb25zdHJ1Y3Rvcj09PU9iamVjdDt2YXIgZz1lKyhmPy0xOjApO2ZvcihiPWImMTI4PzE6MDtiPGc7YisrKWMoYi1kLGFbYl0pO2lmKGYpe2E9YVtlLTFdO2ZvcihsZXQgaCBpbiBhKSFpc05hTihoKSYmYygraCxhW2hdKX19OwpMbT1mdW5jdGlvbihhKXtzd2l0Y2godHlwZW9mIGEpe2Nhc2UgImJvb2xlYW4iOnJldHVybiBKbXx8KEptPVswLHZvaWQgMCwhMF0pO2Nhc2UgIm51bWJlciI6cmV0dXJuIGE+MD92b2lkIDA6YT09PTA/S218fChLbT1bMCx2b2lkIDBdKTpbLWEsdm9pZCAwXTtjYXNlICJzdHJpbmciOnJldHVyblswLGFdO2Nhc2UgIm9iamVjdCI6cmV0dXJuIGF9fTsKTm09ZnVuY3Rpb24oYSxiKXtpZih0eXBlb2YgYT09PSJzdHJpbmciKXJldHVybiBuZXcgTW0oXy5WayhhKSxiKTtpZihBcnJheS5pc0FycmF5KGEpKXJldHVybiBuZXcgTW0obmV3IFVpbnQ4QXJyYXkoYSksYik7aWYoYS5jb25zdHJ1Y3Rvcj09PVVpbnQ4QXJyYXkpcmV0dXJuIG5ldyBNbShhLCExKTtpZihhLmNvbnN0cnVjdG9yPT09QXJyYXlCdWZmZXIpcmV0dXJuIGE9bmV3IFVpbnQ4QXJyYXkoYSksbmV3IE1tKGEsITEpO2lmKGEuY29uc3RydWN0b3I9PT1fLk9iKXJldHVybiBiPV8ub2woYSl8fG5ldyBVaW50OEFycmF5KDApLG5ldyBNbShiLCEwLGEpO2lmKGEgaW5zdGFuY2VvZiBVaW50OEFycmF5KXJldHVybiBhPWEuY29uc3RydWN0b3I9PT1VaW50OEFycmF5P2E6bmV3IFVpbnQ4QXJyYXkoYS5idWZmZXIsYS5ieXRlT2Zmc2V0LGEuYnl0ZUxlbmd0aCksbmV3IE1tKGEsITEpO3Rocm93IEVycm9yKCk7fTsKUW09ZnVuY3Rpb24oYSxiLGMsZCl7dmFyIGU9ZFthXTtpZihlKXJldHVybiBlO2U9e307ZS5tZz1kO2Uua2M9TG0oZFswXSk7dmFyIGY9ZFsxXSxnPTE7ZiYmZi5jb25zdHJ1Y3Rvcj09PU9iamVjdCYmKGUuZGQ9ZixmPWRbKytnXSx0eXBlb2YgZj09PSJmdW5jdGlvbiImJihlLlRlPSEwLE9tIT1udWxsfHwoT209ZiksUG0hPW51bGx8fChQbT1kW2crMV0pLGY9ZFtnKz0yXSkpO2Zvcih2YXIgaD17fTtmJiZBcnJheS5pc0FycmF5KGYpJiZmLmxlbmd0aCYmdHlwZW9mIGZbMF09PT0ibnVtYmVyIiYmZlswXT4wOyl7Zm9yKHZhciBrPTA7azxmLmxlbmd0aDtrKyspaFtmW2tdXT1mO2Y9ZFsrK2ddfWZvcihrPTE7ZiE9PXZvaWQgMDspe3R5cGVvZiBmPT09Im51bWJlciImJihrKz1mLGY9ZFsrK2ddKTtsZXQgbjt2YXIgbD12b2lkIDA7ZiBpbnN0YW5jZW9mIF8ud2w/bj1mOihuPV8ueGwsZy0tKTtsZXQgcjtpZigocj1uKT09bnVsbD8wOnIudil7Zj1kWysrZ107bD1kO3ZhciBtPWc7dHlwZW9mIGY9PT0KImZ1bmN0aW9uIiYmKGY9ZigpLGxbbV09Zik7bD1mfWY9ZFsrK2ddO209aysxO3R5cGVvZiBmPT09Im51bWJlciImJmY8MCYmKG0tPWYsZj1kWysrZ10pO2Zvcig7azxtO2srKyl7bGV0IHE9aFtrXTtsP2MoZSxrLG4sbCxxKTpiKGUsayxuLHEpfX1yZXR1cm4gZFthXT1lfTtSbT1mdW5jdGlvbihhKXtyZXR1cm4gQXJyYXkuaXNBcnJheShhKT9hWzBdaW5zdGFuY2VvZiBfLndsP2E6W18ueWwsYV06W2Esdm9pZCAwXX07U209ZnVuY3Rpb24oYSxiLGMsZCl7dmFyIGU9Yy5pO2FbYl09ZD8oZixnLGgpPT5lKGYsZyxoLGQpOmV9OwpYbT1mdW5jdGlvbihhLGIsYyxkKXt2YXIgZT10aGlzW1RtXSxmPXRoaXNbVW1dLGc9Xy4kayh2b2lkIDAsZS5rYyksaD1fLkZiKGEpO2lmKGgpe3ZhciBrPSExLGw9ZS5kZDtpZihsKXtlPShtLG4scik9PntpZihyLmxlbmd0aCE9PTApaWYobFtuXSlmb3IobGV0IHEgb2Ygcil7bT1WbShxKTt0cnl7az0hMCxmKGcsbSl9ZmluYWxseXtXbShtKX19ZWxzZSBkPT1udWxsfHxkKGEsbixyKX07aWYoYj09bnVsbCloLnpjKGUpO2Vsc2UgaWYoaCE9bnVsbCl7bGV0IG09aFtiXTttJiZlKGgsYixtKX1pZihrKXtsZXQgbT1hW18ud118MDtpZihtJjImJm0mMjA0OCYmKGM9PW51bGx8fCFjLlZoKSl0aHJvdyBFcnJvcigpO2xldCBuPW0mMTI4P18uSTp2b2lkIDAscj0ocSx0KT0+e2lmKF8ubmMoYSxxLG4pIT1udWxsKXN3aXRjaChjPT1udWxsP3ZvaWQgMDpjLm9tKXtjYXNlIDE6cmV0dXJuO2RlZmF1bHQ6dGhyb3cgRXJyb3IoKTt9dCE9bnVsbCYmKG09Xy5lYyhhLG0scSx0LG4pKTtkZWxldGUgaFtxXX07CmI9PW51bGw/SW0oZyxnW18ud118MCwocSx0KT0+e3IocSx0KX0pOnIoYixfLm5jKGcsYixuKSl9fX19O1ltPWZ1bmN0aW9uKGEsYixjLGQsZSl7dmFyIGY9Yy5pLGcsaDthW2JdPShrLGwsbSk9PmYoayxsLG0saHx8KGg9UW0oVG0sU20sWW0sZCkua2MpLGd8fChnPVptKGQpKSxlKX07ClptPWZ1bmN0aW9uKGEpe3ZhciBiPWFbVW1dO2lmKGIhPW51bGwpcmV0dXJuIGI7dmFyIGM9UW0oVG0sU20sWW0sYSk7Yj1jLlRlPyhkLGUpPT5PbShkLGUsYyk6KGQsZSk9PnthOnskbSgpO3RyeXtmb3IoO2FuKGUpJiZlLmohPTQ7KXtsZXQgQz1lLnYsRT1jW0NdO2lmKEU9PW51bGwpe2xldCBBPWMuZGQ7aWYoQSl7bGV0IFI9QVtDXTtpZihSKXtsZXQgQ2I9Ym4oUik7Q2IhPW51bGwmJihFPWNbQ109Q2IpfX19aWYoRT09bnVsbHx8IUUoZSxkLEMpKXt2YXIgZj1lO2xldCBBPWYuQTtjbihmKTt2YXIgZz1mO2lmKGcuTWUpdmFyIGg9dm9pZCAwO2Vsc2V7bGV0IFI9Zy5pLmktQTtnLmkuaT1BO2M6e2Y9dm9pZCAwO3ZhciBrPWcuaTtnPVI7aWYoZz09MCl7aD1fLm5sKCk7YnJlYWsgY31sZXQgQ2I9ZG4oayxnKTtpZihrLlhjJiZrLkIpZj1rLmouc3ViYXJyYXkoQ2IsQ2IrZyk7ZWxzZXt2YXIgbD1rLmo7Zz1DYitnO2Y9Q2I9PT1nP25ldyBVaW50OEFycmF5KDApOmwuc2xpY2UoQ2IsZyl9aD0KZi5sZW5ndGg9PTA/Xy5ubCgpOm5ldyBfLk9iKGYsXy5sbCl9fXZhciBtPWc9Zj12b2lkIDAsbj1kLHI9QyxxPWg7cSYmKChmPShnPShtPW5bXy5FYl0pIT1udWxsP206bltfLkViXT1uZXcgXy5KYilbcl0pIT1udWxsP2Y6Z1tyXT1bXSkucHVzaChxKX19bGV0IEI9Xy5GYihkKTtCJiYoQi5GZD1jLm1nW18uVmVdKTt2YXIgdD0hMDticmVhayBhfWNhdGNoKEIpe2lmKEIgaW5zdGFuY2VvZiBSYW5nZUVycm9yKXRocm93IG5ldyBTeW50YXhFcnJvcjt0aHJvdyBCO31maW5hbGx5e2VuPjAmJmVuLS19dD12b2lkIDB9cmV0dXJuIHR9O2FbVW1dPWI7YVtfLlZlXT1YbS5iaW5kKGEpO3JldHVybiBifTtibj1mdW5jdGlvbihhKXthPVJtKGEpO3ZhciBiPWFbMF0uaTtpZihhPWFbMV0pe2xldCBjPVptKGEpLGQ9UW0oVG0sU20sWW0sYSkua2M7cmV0dXJuKGUsZixnKT0+YihlLGYsZyxkLGMpfXJldHVybiBifTtmbj1mdW5jdGlvbihhLGIsYyl7cmV0dXJuIG5ldyBfLndsKGEsYixjKX07CmduPWZ1bmN0aW9uKGEsYixjKXtfLmVjKGEsYVtfLnddfDAsYixjLChhW18ud118MCkmMTI4P18uSTp2b2lkIDApfTtobj1mdW5jdGlvbihhLGIsYyl7YS5CKGMsXy56YihiKSl9O2puPWZ1bmN0aW9uKGEpe3JldHVybiBhW2EubGVuZ3RoLTFdfTtrbj1mdW5jdGlvbihhLGIsYyl7dmFyIGQ9YS5sZW5ndGgsZT10eXBlb2YgYT09PSJzdHJpbmciP2Euc3BsaXQoIiIpOmE7Zm9yKC0tZDtkPj0wOy0tZClkIGluIGUmJmIuY2FsbChjLGVbZF0sZCxhKX07bG49ZnVuY3Rpb24oYSl7cmV0dXJuIUFycmF5LmlzQXJyYXkoYSl8fGEubGVuZ3RoPyExOihhW18ud118MCkmMT8hMDohMX07bW49ZnVuY3Rpb24oYSl7aWYoISgwLF8uemUpKGEpKXRocm93IEVycm9yKCJpYGAiK1N0cmluZyhhKSk7fTsKbm49ZnVuY3Rpb24oYSl7aWYoYT09bnVsbClyZXR1cm4gYTt2YXIgYj10eXBlb2YgYTtpZihiPT09ImJpZ2ludCIpcmV0dXJuIFN0cmluZygoMCxfLm5iKSg2NCxhKSk7aWYoXy5oYihhKSl7aWYoYj09PSJzdHJpbmciKXJldHVybiBfLm1iKGEpO2lmKGI9PT0ibnVtYmVyIilyZXR1cm4gXy5yYihhKX19O29uPWZ1bmN0aW9uKGEsYil7aWYodHlwZW9mIGI9PT0ic3RyaW5nIil0cnl7Yj1fLlZrKGIpfWNhdGNoKGMpe3JldHVybiExfXJldHVybiBfLldrKGIpJiZGbShhLGIpfTtwbj1mdW5jdGlvbihhKXtzd2l0Y2goYSl7Y2FzZSAiYmlnaW50IjpjYXNlICJzdHJpbmciOmNhc2UgIm51bWJlciI6cmV0dXJuITA7ZGVmYXVsdDpyZXR1cm4hMX19O3FuPWZ1bmN0aW9uKGEsYixjLGQsZSl7dmFyIGY7cmV0dXJuKGY9YTxkP2JbYStlXTp2b2lkIDApIT1udWxsP2Y6Yz09bnVsbD92b2lkIDA6Y1thXX07CnJuPWZ1bmN0aW9uKGEsYil7aWYoIUFycmF5LmlzQXJyYXkoYSl8fCFBcnJheS5pc0FycmF5KGIpKXJldHVybiAwO2E9IiIrYVswXTtiPSIiK2JbMF07cmV0dXJuIGE9PT1iPzA6YTxiPy0xOjF9O3RuPWZ1bmN0aW9uKGEsYil7aWYoXy5KYShhKSlhPWEuZGE7ZWxzZSBpZighQXJyYXkuaXNBcnJheShhKSlyZXR1cm4hMTtpZihfLkphKGIpKWI9Yi5kYTtlbHNlIGlmKCFBcnJheS5pc0FycmF5KGIpKXJldHVybiExO3JldHVybiBzbihhLGIsdm9pZCAwLDIpfTt1bj1mdW5jdGlvbihhLGIpe3JldHVybiBzbihhLGIsdm9pZCAwLDApfTsKc249ZnVuY3Rpb24oYSxiLGMsZCl7aWYoYT09PWJ8fGE9PW51bGwmJmI9PW51bGwpcmV0dXJuITA7aWYoYSBpbnN0YW5jZW9mIE1hcClyZXR1cm4gYS5raChiLGMpO2lmKGIgaW5zdGFuY2VvZiBNYXApcmV0dXJuIGIua2goYSxjKTtpZihhPT1udWxsfHxiPT1udWxsKXJldHVybiExO2lmKGEgaW5zdGFuY2VvZiBfLk9iKXJldHVybiB2bihhLGIpO2lmKGIgaW5zdGFuY2VvZiBfLk9iKXJldHVybiB2bihiLGEpO2lmKF8uV2soYSkpcmV0dXJuIG9uKGEsYik7aWYoXy5XayhiKSlyZXR1cm4gb24oYixhKTt2YXIgZT10eXBlb2YgYSxmPXR5cGVvZiBiO2lmKGUhPT0ib2JqZWN0Inx8ZiE9PSJvYmplY3QiKXJldHVybiBOdW1iZXIuaXNOYU4oYSl8fE51bWJlci5pc05hTihiKT9TdHJpbmcoYSk9PT1TdHJpbmcoYik6cG4oZSkmJnBuKGYpPyIiK2E9PT0iIitiOmU9PT0iYm9vbGVhbiImJmY9PT0ibnVtYmVyInx8ZT09PSJudW1iZXIiJiZmPT09ImJvb2xlYW4iPyFhPT09IWI6ITE7aWYoXy5KYShhKXx8Cl8uSmEoYikpcmV0dXJuIHRuKGEsYik7aWYoYS5jb25zdHJ1Y3RvciE9Yi5jb25zdHJ1Y3RvcilyZXR1cm4hMTtpZihhLmNvbnN0cnVjdG9yPT09QXJyYXkpe2Y9YVtfLnddfDA7dmFyIGc9YltfLnddfDAsaD1hLmxlbmd0aCxrPWIubGVuZ3RoLGw9TWF0aC5tYXgoaCxrKTtlPShmfGd8NjQpJjEyOD8wOi0xO2lmKGQ9PT0xfHwoZnxnKSYxKWQ9MTtlbHNlIGlmKChmfGcpJjgxOTIpcmV0dXJuIHduKGEsYik7Zj1oJiZhW2gtMV07Zz1rJiZiW2stMV07ZiE9bnVsbCYmdHlwZW9mIGY9PT0ib2JqZWN0IiYmZi5jb25zdHJ1Y3Rvcj09PU9iamVjdHx8KGY9bnVsbCk7ZyE9bnVsbCYmdHlwZW9mIGc9PT0ib2JqZWN0IiYmZy5jb25zdHJ1Y3Rvcj09PU9iamVjdHx8KGc9bnVsbCk7aD1oLWUtKyEhZjtrPWstZS0rISFnO2Zvcih2YXIgbT0wO208bDttKyspaWYoIXhuKG0tZSxhLGYsaCxiLGcsayxlLGMsZCkpcmV0dXJuITE7aWYoZilmb3IodmFyIG4gaW4gZil7ZD1hO2w9ZjttPWg7dmFyIHI9YiwKcT1nLHQ9ayxCPWUsQz1jO2xldCBFPStuO2lmKCEoIU51bWJlci5pc0Zpbml0ZShFKXx8RTxtfHxFPHR8fHhuKEUsZCxsLG0scixxLHQsQixDLDIpKSlyZXR1cm4hMX1pZihnKWZvcihsZXQgRSBpbiBnKWlmKChuPWYmJkUgaW4gZil8fChuPWEsZD1mLGw9aCxtPWIscj1nLHE9ayx0PWUsQj1jLEM9K0Usbj0hTnVtYmVyLmlzRmluaXRlKEMpfHxDPGx8fEM8cT8hMDp4bihDLG4sZCxsLG0scixxLHQsQiwyKSksIW4pcmV0dXJuITE7cmV0dXJuITB9aWYoYS5jb25zdHJ1Y3Rvcj09PU9iamVjdClyZXR1cm4gdW4oW2FdLFtiXSk7dGhyb3cgRXJyb3IoKTt9O3huPWZ1bmN0aW9uKGEsYixjLGQsZSxmLGcsaCxrLGwpe2I9cW4oYSxiLGMsZCxoKTtlPXFuKGEsZSxmLGcsaCk7bD1sPT09MTtpZihlPT1udWxsJiZsbihiLGEpfHxiPT1udWxsJiZsbihlLGEpKXJldHVybiEwO2E9bD9rOms9PW51bGw/dm9pZCAwOmsuaShhKTtyZXR1cm4gc24oYixlLGEsMCl9Owp3bj1mdW5jdGlvbihhLGIpe2lmKCFBcnJheS5pc0FycmF5KGEpfHwhQXJyYXkuaXNBcnJheShiKSlyZXR1cm4hMTthPVsuLi5hXTtiPVsuLi5iXTtBcnJheS5wcm90b3R5cGUuc29ydC5jYWxsKGEscm4pO0FycmF5LnByb3RvdHlwZS5zb3J0LmNhbGwoYixybik7dmFyIGM9YS5sZW5ndGgsZD1iLmxlbmd0aDtpZihjPT09MCYmZD09PTApcmV0dXJuITA7Zm9yKHZhciBlPTAsZj0wO2U8YyYmZjxkOyl7bGV0IGcsaD1hW2VdO2lmKCFBcnJheS5pc0FycmF5KGgpKXJldHVybiExO2xldCBrPWhbMF07Zm9yKDtlPGMtMSYmdW4oKGc9YVtlKzFdKVswXSxrKTspZSsrLGg9ZztsZXQgbCxtPWJbZl07aWYoIUFycmF5LmlzQXJyYXkobSkpcmV0dXJuITE7bGV0IG49bVswXTtmb3IoO2Y8ZC0xJiZ1bigobD1iW2YrMV0pWzBdLG4pOylmKyssbT1sO2lmKCF1bihrLG4pfHwhdW4oaFsxXSxtWzFdKSlyZXR1cm4hMTtlKys7ZisrfXJldHVybiBlPj1jJiZmPj1kfTsKeW49ZnVuY3Rpb24oYSxiLGMpe2FbYl09Yy5qfTtBbj1mdW5jdGlvbihhLGIsYyxkKXt2YXIgZSxmLGc9Yy5qO2FbYl09KGgsayxsKT0+ZyhoLGssbCxmfHwoZj1RbSh6bix5bixBbixkKS5rYyksZXx8KGU9Qm4oZCkpKX07Qm49ZnVuY3Rpb24oYSl7dmFyIGI9YVtDbl07aWYoIWIpe2xldCBjPVFtKHpuLHluLEFuLGEpO2I9KGQsZSk9PkRuKGQsZSxjKTthW0NuXT1ifXJldHVybiBifTtEbj1mdW5jdGlvbihhLGIsYyl7SW0oYSxhW18ud118MCwoZCxlKT0+e2lmKGUhPW51bGwpe3ZhciBmPUVuKGMsZCk7Zj9mKGIsZSxkKTpkPDUwMHx8Xy5EYShfLnZlLDMpfX0pOyhhPV8uRmIoYSkpJiZhLnpjKChkLGUsZik9PntGbihiLGIuaS5lbmQoKSk7Zm9yKGQ9MDtkPGYubGVuZ3RoO2QrKylGbihiLF8ub2woZltkXSl8fG5ldyBVaW50OEFycmF5KDApKX0pfTsKRW49ZnVuY3Rpb24oYSxiKXt2YXIgYz1hW2JdO2lmKGMpcmV0dXJuIGM7aWYoYz1hLmRkKWlmKGM9Y1tiXSl7Yz1SbShjKTt2YXIgZD1jWzBdLmo7aWYoYz1jWzFdKXtsZXQgZT1CbihjKSxmPVFtKHpuLHluLEFuLGMpLmtjO2M9YS5UZT9QbShmLGUpOihnLGgsayk9PmQoZyxoLGssZixlKX1lbHNlIGM9ZDtyZXR1cm4gYVtiXT1jfX07SG49ZnVuY3Rpb24oYSxiLGMpe2I9Xy5sYihiKTtpZihiIT1udWxsKWlmKGI9cGFyc2VJbnQoYiwxMCksR24oYS5pLGMqOCksYT1hLmksYz1iLGM+PTApR24oYSxjKTtlbHNle2ZvcihiPTA7Yjw5O2IrKylhLmkucHVzaChjJjEyN3wxMjgpLGM+Pj03O2EuaS5wdXNoKDEpfX07SW49ZnVuY3Rpb24oYSxiKXtiPV8uRGMoYik7YiE9PXZvaWQgMCYmKGEuYWN0aW9uPWIpfTsKSm49ZnVuY3Rpb24oYSxiKXt2YXIgYz0ic3JjIjtpZihhLm5hbWVzcGFjZVVSSSE9PSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sIil0aHJvdyBFcnJvcigieGAiK2MrImAiK2EudGFnTmFtZSk7Yz1jLnRvTG93ZXJDYXNlKCk7c3dpdGNoKGAke2EudGFnTmFtZX0gJHtjfWApe2Nhc2UgIkEgaHJlZiI6Xy5wayhhLGIpO2JyZWFrO2Nhc2UgIkFSRUEgaHJlZiI6Yj1fLkRjKGIpO2IhPT12b2lkIDAmJihhLmhyZWY9Yik7YnJlYWs7Y2FzZSAiQkFTRSBocmVmIjphLmhyZWY9Xy5YaihiKTticmVhaztjYXNlICJCVVRUT04gZm9ybWFjdGlvbiI6Yj1fLkRjKGIpO2IhPT12b2lkIDAmJihhLmZvcm1BY3Rpb249Yik7YnJlYWs7Y2FzZSAiRU1CRUQgc3JjIjphLnNyYz1fLlhqKGIpO2JyZWFrO2Nhc2UgIkZPUk0gYWN0aW9uIjpJbihhLGIpO2JyZWFrO2Nhc2UgIklGUkFNRSBzcmMiOl8uWmooYSxiKTticmVhaztjYXNlICJJRlJBTUUgc3JjZG9jIjphLnNyY2RvYz1fLm1qKGIpO2JyZWFrOwpjYXNlICJJRlJBTUUgc2FuZGJveCI6dGhyb3cgRXJyb3IoInkiKTtjYXNlICJJTlBVVCBmb3JtYWN0aW9uIjpiPV8uRGMoYik7YiE9PXZvaWQgMCYmKGEuZm9ybUFjdGlvbj1iKTticmVhaztjYXNlICJMSU5LIGhyZWYiOnRocm93IEVycm9yKCJ6Iik7Y2FzZSAiTElOSyByZWwiOnRocm93IEVycm9yKCJBIik7Y2FzZSAiT0JKRUNUIGRhdGEiOmEuZGF0YT1fLlhqKGIpO2JyZWFrO2Nhc2UgIlNDUklQVCBzcmMiOmEuc3JjPV8uWGooYik7Xy5nbChhKTticmVhaztkZWZhdWx0OmlmKC9eb24uLy50ZXN0KGMpKXRocm93IEVycm9yKCJCYCIrYyk7YS5zZXRBdHRyaWJ1dGUoYyxiKX19O0xuPWZ1bmN0aW9uKGEsYixjKXtpZihfLldqKGIpKWEuaHJlZj1fLlhqKGIpLnRvU3RyaW5nKCksYS5yZWw9YztlbHNle2lmKEtuLmluZGV4T2YoYyk9PT0tMSl0aHJvdyBFcnJvcigiQ2AiK2MpO2I9Xy5EYyhiKTtiIT09dm9pZCAwJiYoYS5ocmVmPWIsYS5yZWw9Yyl9fTsKTm49ZnVuY3Rpb24oYSxiKXthPV8uWGooYSkudG9TdHJpbmcoKTtyZXR1cm4gXy5ZaihNbi5leGVjKGEpWzBdKyhiLnRyaW0oKT8iIyIrYjoiIikpfTtPbj1mdW5jdGlvbihhKXtyZXR1cm4gYT9kZWNvZGVVUkkoYSk6YX07UG49ZnVuY3Rpb24oKXt2YXIgYT1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTthLnN0eWxlLmhlaWdodD0iMTAwJSI7YS5zdHlsZS5wb3NpdGlvbj0iYWJzb2x1dGUiO2Euc3R5bGUudHJhbnNmb3JtT3JpZ2luPSJ0b3AgbGVmdCI7YS5zdHlsZS53aWR0aD0iMTAwJSI7cmV0dXJuIGF9O1FuPWZ1bmN0aW9uKGEpe3ZhciBiPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInNwYW4iKTtiLnN0eWxlLmJvcmRlclRvcD1hPyI0cHggc29saWQgIzY2OWRmNiI6IjRweCBzb2xpZCAjNDI4NWY0IjtiLnN0eWxlLmRpc3BsYXk9ImlubGluZS1ibG9jayI7Yi5zdHlsZS5wb3NpdGlvbj0iYWJzb2x1dGUiO2Iuc3R5bGUud2lkdGg9IjEwMCUiO3JldHVybiBifTsKUm49ZnVuY3Rpb24oYSxiPSExKXt2YXIgYz1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTthJiYoYy5zdHlsZS50cmFuc2Zvcm09InNjYWxlWCgtMSkiKTtjLnN0eWxlLmJhY2tncm91bmRDb2xvcj1iPyJyZ2JhKDEzOCwxODAsMjQ4LC4yNCkiOiIjZThmMGZlIjtjLnN0eWxlLmhlaWdodD0iNHB4IjtjLnN0eWxlLm92ZXJmbG93PSJoaWRkZW4iO2Muc3R5bGUucG9zaXRpb249ImFic29sdXRlIjtjLnN0eWxlLnRvcD0iMCI7Yy5zdHlsZS53aWR0aD0iMTAwJSI7Yy5zdHlsZS56SW5kZXg9IjE1MDAiO2Muc2V0QXR0cmlidXRlKCJhcmlhLWxhYmVsIiwiTG9hZGluZyIpO2Muc2V0QXR0cmlidXRlKCJhcmlhLWxpdmUiLCJwb2xpdGUiKTthPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInN0eWxlIik7YS50ZXh0Q29udGVudD0iQGtleWZyYW1lcyBvbWRjLWxpbmVhci1wcm9ncmVzcy1wcmltYXJ5LWluZGV0ZXJtaW5hdGUtdHJhbnNsYXRlIHtcbiAgICAwJSB7XG4gICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMCk7XG4gICAgfVxuXG4gICAgMjAlIHtcbiAgICAgIGFuaW1hdGlvbi10aW1pbmctZnVuY3Rpb246IGN1YmljLWJlemllcigwLjUsIDAsIDAuNzAxNzMyLCAwLjQ5NTgxOSk7XG4gICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMCk7XG4gICAgfVxuXG4gICAgNTkuMTUlIHtcbiAgICAgIGFuaW1hdGlvbi10aW1pbmctZnVuY3Rpb246IGN1YmljLWJlemllcihcbiAgICAgICAgMC4zMDI0MzUsXG4gICAgICAgIDAuMzgxMzUyLFxuICAgICAgICAwLjU1LFxuICAgICAgICAwLjk1NjM1MlxuICAgICAgKTtcblxuICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDgzLjY3MTQyJSk7XG4gICAgfVxuXG4gICAgMTAwJSB7XG4gICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMjAwLjYxMTA1NyUpO1xuICAgIH1cbiAgfUBrZXlmcmFtZXMgb21kYy1saW5lYXItcHJvZ3Jlc3MtcHJpbWFyeS1pbmRldGVybWluYXRlLXNjYWxlIHtcbiAgICAwJSB7XG4gICAgICB0cmFuc2Zvcm06IHNjYWxlWCgwLjA4KTtcbiAgICB9XG5cbiAgICAzNi42NSUge1xuICAgICAgYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjogY3ViaWMtYmV6aWVyKDAuMzM0NzMxLCAwLjEyNDgyLCAwLjc4NTg0NCwgMSk7XG4gICAgICB0cmFuc2Zvcm06IHNjYWxlWCgwLjA4KTtcbiAgICB9XG5cbiAgICA2OS4xNSUge1xuICAgICAgYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjogY3ViaWMtYmV6aWVyKDAuMDYsIDAuMTEsIDAuNiwgMSk7XG4gICAgICB0cmFuc2Zvcm06IHNjYWxlWCgwLjY2MTQ3OSk7XG4gICAgfVxuXG4gICAgMTAwJSB7XG4gICAgICB0cmFuc2Zvcm06IHNjYWxlWCgwLjA4KTtcbiAgICB9XG4gIH1Aa2V5ZnJhbWVzIG9tZGMtbGluZWFyLXByb2dyZXNzLXNlY29uZGFyeS1pbmRldGVybWluYXRlLXRyYW5zbGF0ZSB7XG4gICAgMCUge1xuICAgICAgYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjogY3ViaWMtYmV6aWVyKDAuMTUsIDAsIDAuNTE1MDU4LCAwLjQwOTY4NSk7XG4gICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMCk7XG4gICAgfVxuXG4gICAgMjUlIHtcbiAgICAgIGFuaW1hdGlvbi10aW1pbmctZnVuY3Rpb246IGN1YmljLWJlemllcigwLjMxMDMzLCAwLjI4NDA1OCwgMC44LCAwLjczMzcxMik7XG4gICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMzcuNjUxOTEzJSk7XG4gICAgfVxuXG4gICAgNDguMzUlIHtcbiAgICAgIGFuaW1hdGlvbi10aW1pbmctZnVuY3Rpb246IGN1YmljLWJlemllcigwLjQsIDAuNjI3MDM1LCAwLjYsIDAuOTAyMDI2KTtcbiAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCg4NC4zODYxNjUlKTtcbiAgICB9XG5cbiAgICAxMDAlIHtcbiAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgxNjAuMjc3NzgyJSk7XG4gICAgfVxuICB9QGtleWZyYW1lcyBvbWRjLWxpbmVhci1wcm9ncmVzcy1zZWNvbmRhcnktaW5kZXRlcm1pbmF0ZS1zY2FsZSB7XG4gICAgMCUge1xuICAgICAgYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjogY3ViaWMtYmV6aWVyKFxuICAgICAgICAwLjIwNTAyOCxcbiAgICAgICAgMC4wNTcwNTEsXG4gICAgICAgIDAuNTc2NjEsXG4gICAgICAgIDAuNDUzOTcxXG4gICAgICApO1xuICAgICAgdHJhbnNmb3JtOiBzY2FsZVgoMC4wOCk7XG4gICAgfVxuXG4gICAgMTkuMTUlIHtcbiAgICAgIGFuaW1hdGlvbi10aW1pbmctZnVuY3Rpb246IGN1YmljLWJlemllcihcbiAgICAgICAgMC4xNTIzMTMsXG4gICAgICAgIDAuMTk2NDMyLFxuICAgICAgICAwLjY0ODM3NCxcbiAgICAgICAgMS4wMDQzMTVcbiAgICAgICk7XG4gICAgICB0cmFuc2Zvcm06IHNjYWxlWCgwLjQ1NzEwNCk7XG4gICAgfVxuXG4gICAgNDQuMTUlIHtcbiAgICAgIGFuaW1hdGlvbi10aW1pbmctZnVuY3Rpb246IGN1YmljLWJlemllcihcbiAgICAgICAgMC4yNTc3NTksXG4gICAgICAgIC0wLjAwMzE2MyxcbiAgICAgICAgMC4yMTE3NjIsXG4gICAgICAgIDEuMzgxNzlcbiAgICAgICk7XG4gICAgICB0cmFuc2Zvcm06IHNjYWxlWCgwLjcyNzk2KTtcbiAgICB9XG5cbiAgICAxMDAlIHtcbiAgICAgIHRyYW5zZm9ybTogc2NhbGVYKDAuMDgpO1xuICAgIH1cbiAgfSI7CmMuYXBwZW5kQ2hpbGQoYSk7YT1QbigpO2Euc3R5bGUuYW5pbWF0aW9uPSJvbWRjLWxpbmVhci1wcm9ncmVzcy1wcmltYXJ5LWluZGV0ZXJtaW5hdGUtdHJhbnNsYXRlIDJzIGluZmluaXRlIGxpbmVhciI7YS5zdHlsZS5sZWZ0PSItMTQ1LjE2NjYxMSUiO3ZhciBkPVFuKGIpO2Quc3R5bGUuYW5pbWF0aW9uPSJvbWRjLWxpbmVhci1wcm9ncmVzcy1wcmltYXJ5LWluZGV0ZXJtaW5hdGUtc2NhbGUgMnMgaW5maW5pdGUgbGluZWFyIjthLmFwcGVuZENoaWxkKGQpO2MuYXBwZW5kQ2hpbGQoYSk7YT1QbigpO2Euc3R5bGUuYW5pbWF0aW9uPSJvbWRjLWxpbmVhci1wcm9ncmVzcy1zZWNvbmRhcnktaW5kZXRlcm1pbmF0ZS10cmFuc2xhdGUgMnMgaW5maW5pdGUgbGluZWFyIjthLnN0eWxlLmxlZnQ9Ii01NC44ODg4OTElIjtiPVFuKGIpO2Iuc3R5bGUuYW5pbWF0aW9uPSJvbWRjLWxpbmVhci1wcm9ncmVzcy1zZWNvbmRhcnktaW5kZXRlcm1pbmF0ZS1zY2FsZSAycyBpbmZpbml0ZSBsaW5lYXIiOwphLmFwcGVuZENoaWxkKGIpO2MuYXBwZW5kQ2hpbGQoYSk7cmV0dXJuIGN9O1NuPWZ1bmN0aW9uKGEsYil7Yi5zdHlsZS5vcGFjaXR5PSIwIjthLnN0eWxlLm9wYWNpdHk9IjAiO2Euc3R5bGUudHJhbnNmb3JtPSJ0cmFuc2xhdGUoLTUwJSwgLTUwJSkgc2NhbGUoMC44KSJ9O1RuPWZ1bmN0aW9uKGEpe3ZhciBiPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpO2Iuc3R5bGUuYmFja2dyb3VuZENvbG9yPSJyZ2JhKDMyLDMzLDM2LDAuNikiO2Iuc3R5bGUuYm90dG9tPSIwIjtiLnN0eWxlLmxlZnQ9IjAiO2Iuc3R5bGUucG9zaXRpb249ImZpeGVkIjtiLnN0eWxlLnJpZ2h0PSIwIjtiLnN0eWxlLnRvcD0iMCI7Yi5zdHlsZS50cmFuc2l0aW9uPSIgb3BhY2l0eSAxNTAgbXMgbGluZWFyIjtiLnN0eWxlLnpJbmRleD0iMjAwMSI7Yi5hZGRFdmVudExpc3RlbmVyKCJjbGljayIsYSk7cmV0dXJuIGJ9OwpVbj1mdW5jdGlvbihhKXt2YXIgYj1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTtiLnNldEF0dHJpYnV0ZSgidGFiaW5kZXgiLCIwIik7Yi5zZXRBdHRyaWJ1dGUoImFyaWEtaGlkZGVuIiwidHJ1ZSIpO2IuYWRkRXZlbnRMaXN0ZW5lcigiZm9jdXMiLCgpPT52b2lkIGEuZm9jdXMoKSk7cmV0dXJuIGJ9OwpWbj1mdW5jdGlvbihhLGIsYyl7dmFyIGQ9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiYnV0dG9uIik7ZC5zdHlsZS5iYWNrZ3JvdW5kQ29sb3I9InRyYW5zcGFyZW50IjtkLnN0eWxlLmJvcmRlcj0ibm9uZSI7ZC5zdHlsZS5ib3JkZXJSYWRpdXM9IjUwJSI7ZC5zdHlsZS5jdXJzb3I9InBvaW50ZXIiO2Quc3R5bGUub3V0bGluZT0ibm9uZSI7ZC5zdHlsZS5wYWRkaW5nPSIxMnB4IjtkLnNldEF0dHJpYnV0ZSgiYXJpYS1sYWJlbCIsIkNsb3NlIGRpYWxvZyIpO2Quc3R5bGUucG9zaXRpb249ImFic29sdXRlIjtkLnN0eWxlLnRvcD0iMCI7Yj9kLnN0eWxlLnJpZ2h0PSIwIjpkLnN0eWxlLmxlZnQ9IjAiO2QuYWRkRXZlbnRMaXN0ZW5lcigiZm9jdXMiLCgpPT57ZC5zdHlsZS5iYWNrZ3JvdW5kQ29sb3I9YT8icmdiYSgyMzIsIDIzNCwgMjM3LC4xMikiOiJyZ2JhKDAsMCwwLC4xMikifSk7ZC5hZGRFdmVudExpc3RlbmVyKCJibHVyIiwoKT0+e2Quc3R5bGUuYmFja2dyb3VuZENvbG9yPSJ0cmFuc3BhcmVudCJ9KTsKZC5hZGRFdmVudExpc3RlbmVyKCJtb3VzZWVudGVyIiwoKT0+e2Quc3R5bGUuYmFja2dyb3VuZENvbG9yPWE/InJnYmEoMjMyLCAyMzQsIDIzNywgLjA0KSAiOiJyZ2JhKDAsMCwwLC4wNCkifSk7ZC5hZGRFdmVudExpc3RlbmVyKCJtb3VzZWxlYXZlIiwoKT0+e2Quc3R5bGUuYmFja2dyb3VuZENvbG9yPSJ0cmFuc3BhcmVudCJ9KTtkLmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIixjKTtkLmFkZEV2ZW50TGlzdGVuZXIoImtleWRvd24iLGU9PntlLmtleSE9PSJFbnRlciImJmUua2V5IT09IlNwYWNlInx8YygpfSk7Yj1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJpbWciKTtiLnNyYz1hPyJodHRwczovL2ZvbnRzLmdzdGF0aWMuY29tL3MvaS9nb29nbGVtYXRlcmlhbGljb25zL2Nsb3NlL3YxOS9nbV9ncmV5MjAwLTI0ZHAvMXgvZ21fY2xvc2VfZ21fZ3JleTIwMF8yNGRwLnBuZyI6Imh0dHBzOi8vZm9udHMuZ3N0YXRpYy5jb20vcy9pL2dvb2dsZW1hdGVyaWFsaWNvbnMvY2xvc2UvdjE5L2dtX2dyZXk2MDAtMjRkcC8xeC9nbV9jbG9zZV9nbV9ncmV5NjAwXzI0ZHAucG5nIjsKYi5zdHlsZS5kaXNwbGF5PSJibG9jayI7Yi5zdHlsZS5oZWlnaHQ9IjI0cHgiO2Iuc3R5bGUud2lkdGg9IjI0cHgiO2Iuc2V0QXR0cmlidXRlKCJhbHQiLCIiKTtkLmFwcGVuZENoaWxkKGIpO3JldHVybiBkfTsKV249ZnVuY3Rpb24oYSxiLGMpe3ZhciBkPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpO2Quc3R5bGUucG9zaXRpb249ImZpeGVkIjtkLnN0eWxlLmFsaWduSXRlbXM9ImNlbnRlciI7ZC5zdHlsZS5iYWNrZ3JvdW5kQ29sb3I9YT8icmdiKDMyLCAzMywgMzYpIjoid2hpdGUiO2Quc3R5bGUuYm94U2hhZG93PSIwcHggMXB4IDJweCByZ2JhKDYwLDY0LDY3LDAuMyksIDBweCAycHggNnB4IDJweCByZ2JhKDYwLDY0LDY3LDAuMTUpOyI7ZC5zdHlsZS5kaXNwbGF5PSJmbGV4IjtkLnN0eWxlLmZsZXhEaXJlY3Rpb249ImNvbHVtbiI7ZC5zdHlsZS5qdXN0aWZ5Q29udGVudD0iY2VudGVyIjtkLnN0eWxlLmxlZnQ9IjUwJSI7ZC5zdHlsZS50b3A9IjUwJSI7ZC5zdHlsZS50cmFuc2l0aW9uPSJvcGFjaXR5IDc1bXMgbGluZWFyLHRyYW5zZm9ybSAxNTBtcyBjdWJpYy1iZXppZXIoMCwwLDAuMiwxKSI7ZC5zdHlsZS56SW5kZXg9IjIwMDIiO2RvY3VtZW50LmJvZHkuY2xpZW50V2lkdGg+PQo2NjA/KGQuc3R5bGUuYm9yZGVyUmFkaXVzPSI4cHgiLGQuc3R5bGUubWluSGVpZ2h0PSIyMjBweCIsZC5zdHlsZS5tYXhIZWlnaHQ9IjkwJSIsZC5zdHlsZS5tYXhXaWR0aD0iOTAlIixkLnN0eWxlLm1pbldpZHRoPSI1NDBweCIpOihkLnN0eWxlLmhlaWdodD0iMTAwJSIsZC5zdHlsZS53aWR0aD0iMTAwJSIpO2Quc2V0QXR0cmlidXRlKCJhcmlhLWxhYmVsIiwiRXJyb3IiKTtkLnNldEF0dHJpYnV0ZSgiYXJpYS1tb2RhbCIsInRydWUiKTtkLnNldEF0dHJpYnV0ZSgicm9sZSIsImFsZXJ0ZGlhbG9nIik7ZC5hZGRFdmVudExpc3RlbmVyKCJrZXlkb3duIixmPT57Zi5rZXk9PT0iRXNjYXBlIiYmYygpfSk7Yj1WbihhLGIsYyk7ZC5hcHBlbmRDaGlsZChVbihiKSk7ZC5hcHBlbmRDaGlsZChiKTt2YXIgZT1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJpbWciKTtlLnNyYz1hPyJodHRwczovL2ZvbnRzLmdzdGF0aWMuY29tL3MvaS9nb29nbGVtYXRlcmlhbGljb25zL2FsZXJ0L3YxMS9nbV9ncmV5MjAwLTM2ZHAvMngvZ21fYWxlcnRfZ21fZ3JleTIwMF8zNmRwLnBuZyI6CiJodHRwczovL2ZvbnRzLmdzdGF0aWMuY29tL3MvaS9nb29nbGVtYXRlcmlhbGljb25zL2FsZXJ0L3YxMS9nbV9ncmV5NjAwLTM2ZHAvMngvZ21fYWxlcnRfZ21fZ3JleTYwMF8zNmRwLnBuZyI7ZS5zdHlsZS5oZWlnaHQ9IjcycHgiO2Uuc3R5bGUud2lkdGg9IjcycHgiO2Uuc3R5bGUuY29sb3I9IiM5YWEwYTYiO2Uuc2V0QXR0cmlidXRlKCJhbHQiLCIiKTtkLmFwcGVuZENoaWxkKGUpO2U9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiaDEiKTtlLnRleHRDb250ZW50PSJTb21ldGhpbmcgd2VudCB3cm9uZy4gIFRyeSBhZ2Fpbi4iO2Uuc3R5bGUuZm9udEZhbWlseT0iJ0dvb2dsZSBTYW5zJywgUm9ib3RvLCBBcmlhbCwgc2Fucy1zZXJpZiI7ZS5zdHlsZS5saW5lSGVpZ2h0PSIyNHB4IjtlLnN0eWxlLmZvbnRTaXplPSIxNnB4IjtlLnN0eWxlLnRleHRBbGlnbj0iY2VudGVyIjtlLnN0eWxlLmxldHRlclNwYWNpbmc9IjAuMXB4IjtlLnN0eWxlLmNvbG9yPWE/InJnYigyMzIsMjM0LDIzNykiOgoiIzNjNDA0MyI7ZC5hcHBlbmRDaGlsZChlKTtkLmFwcGVuZENoaWxkKFVuKGIpKTtyZXR1cm4gZH07WG49ZnVuY3Rpb24oYSl7dmFyIGI9ZG9jdW1lbnQuYm9keSxjPSExLGQ9KCk9PntjfHwoYz0hMCxTbihlLGYpLHNldFRpbWVvdXQoKCk9PntiLnJlbW92ZUNoaWxkKGYpO2IucmVtb3ZlQ2hpbGQoZSl9LDE1MCkpfSxlPVduKGEsZ2V0Q29tcHV0ZWRTdHlsZShiKS5kaXJlY3Rpb249PT0icnRsIixkKSxmPVRuKGQpO1NuKGUsZik7Yi5hcHBlbmRDaGlsZChmKTtiLmFwcGVuZENoaWxkKGUpO3dpbmRvdy5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCk9PntmLnN0eWxlLm9wYWNpdHk9IjEiO2Uuc3R5bGUub3BhY2l0eT0iMSI7ZS5zdHlsZS50cmFuc2Zvcm09InRyYW5zbGF0ZSgtNTAlLCAtNTAlKSBzY2FsZSgxKSI7ZS5jaGlsZHJlblswXS5mb2N1cygpfSl9OwpZbj1mdW5jdGlvbihhLGIpe2Euc2FuZGJveCYmYS5zYW5kYm94LmFkZCYmKGEuc2FuZGJveC5hZGQoImFsbG93LXNhbWUtb3JpZ2luIiwiYWxsb3ctc2NyaXB0cyIsImFsbG93LWZvcm1zIiwiYWxsb3ctcG9wdXBzIiwiYWxsb3ctcG9wdXBzLXRvLWVzY2FwZS1zYW5kYm94IiwiYWxsb3ctc3RvcmFnZS1hY2Nlc3MtYnktdXNlci1hY3RpdmF0aW9uIiksYS5zYW5kYm94LmFkZCgiYWxsb3ctZG93bmxvYWRzIikpO2Euc3JjPWJ9O1puPWZ1bmN0aW9uKGEpe3N3aXRjaChhKXtjYXNlICJjIjpyZXR1cm4gMTQ1O2Nhc2UgImEiOnJldHVybiAxMjU7Y2FzZSAic2MiOnJldHVybiAxMzk7Y2FzZSAic3ciOnJldHVybiAxNDA7Y2FzZSAic2EiOnJldHVybiAxNjJ9fTsKY289ZnVuY3Rpb24oYSl7dmFyIGI9Xy5YO2lmKCFiLkphLmdldChhKSYmIWIuail7Yi5pPWE7JG4oYik7dmFyIGM9Xy5GZigiZ2JfU2EiKTthPT09ImMifHxhPT09InNjInx8YT09PSJzYSI/Xy5MaChjLCJnYl9VYSIpOl8uTWgoYywiZ2JfVWEiKTthbyhiLCEwKX0oYT1abihhKSkmJmJvLmxvZyhhKX07cG89ZnVuY3Rpb24oYSl7aWYoXy5lbylyZXR1cm4gXy5mbz09PWE7c3dpdGNoKGEpe2Nhc2UgImMiOnJldHVybiBnbyYmXy5obz09PSJjIjtjYXNlICJzYyI6cmV0dXJuIWlvJiZqb3x8a28mJmlvJiZfLmhvPT09InNjIjtjYXNlICJzYSI6cmV0dXJuIV8ubG8mJm1vJiZubyYmXy5obz09PSJzYSI7Y2FzZSAiYSI6cmV0dXJuIV8ubG8mJl8uaG89PT0iYSI7Y2FzZSAic3ciOnJldHVybiFfLmxvJiYoIWlvJiZvb3x8a28mJmlvJiZfLmhvPT09InN3Iik7ZGVmYXVsdDpyZXR1cm4hMX19Owpzbz1mdW5jdGlvbigpe2ZvcihsZXQgYSBvZiBxbylpZighXy5YLkphLmdldChhKSYmcG8oYSkpe2NvKGEpO3JldHVybn1ybygpfTtfLnlvPWZ1bmN0aW9uKCl7YTp7Zm9yKGEgb2YgcW8paWYocG8oYSkpYnJlYWsgYTt2YXIgYT1udWxsfV8uWD1uZXcgdG8oYSk7Xy51by5zaXplPT09MCYmYSYmYSE9PSJuIiYmY28oYSk7YT0hMTtmb3IobGV0IGIgb2YgXy51bylpZihiPT09ImMiKXZvKCk7ZWxzZSBpZihiPT09ImEiKXdvKCk7ZWxzZSBpZihiPT09InNjInx8Yj09PSJzdyIpYXx8eG8oKSxhPSEwfTt6bz1mdW5jdGlvbigpe307Q289ZnVuY3Rpb24oKXtfLkQuY2FsbCh0aGlzKTt0aGlzLmk9ImNsb3N1cmVfZnJhbWUiK0FvKys7dGhpcy5qPVtdO0JvW3RoaXMuaV09dGhpc307CkhvPWZ1bmN0aW9uKGEpe2lmKGE9PW51bGwpcmV0dXJuIG51bGw7Zm9yKHZhciBiPVJlZ0V4cCgiKFstX2EtekEtWjAtOV0rKVxcKCIsImciKSxjPVJlZ0V4cCgiWyBcdF0qKCg/OlwiKD86W15cXHgwMFwiXFxcXFxcblxcclxcZlxcdTAwODVcXHUwMDBiXFx1MjAyOFxcdTIwMjldKilcInwnKD86W15cXHgwMCdcXFxcXFxuXFxyXFxmXFx1MDA4NVxcdTAwMGJcXHUyMDI4XFx1MjAyOV0qKScpfCg/Ols/Ji86PV18WytcXC0uLCEjJV9hLXpBLVowLTlcdF0pKilbIFx0XSoiLCJnIiksZD0hMCxlPTAsZj0iIjtkOyl7Yi5sYXN0SW5kZXg9MDt2YXIgZz1iLmV4ZWMoYSk7ZD1nIT09bnVsbDt2YXIgaD1hLGs9dm9pZCAwO2lmKGQpe2lmKGdbMV09PT12b2lkIDApcmV0dXJuInpqc2xheW91dHppbnZhbGlkIjthOntoPWdbMV07az1oLnRvTG93ZXJDYXNlKCk7aD1Eby5leGVjKGgpO2lmKGghPT1udWxsKXtpZihoWzFdPT09dm9pZCAwKXtrPW51bGw7YnJlYWsgYX1rPWhbMV19az1rPT0idXJsInx8CmsgaW4gRW8/azpudWxsfWlmKGs9PT1udWxsKXJldHVybiJ6anNsYXlvdXR6aW52YWxpZCI7aD1hLnN1YnN0cmluZygwLGIubGFzdEluZGV4KTthPWEuc3Vic3RyaW5nKGIubGFzdEluZGV4KX1hOmlmKGc9aCxlPDApZT0tMTtlbHNlIGZvcih2YXIgbD0wO2w8Zy5sZW5ndGg7bCsrKXtsZXQgbT1nLmNoYXJBdChsKTtpZihtPT0iKCIpZSsrO2Vsc2UgaWYobT09IikiKWlmKGU+MCllLS07ZWxzZXtlPS0xO2JyZWFrIGF9fWlmKGU8MHx8IUZvLnRlc3QoaCkpcmV0dXJuInpqc2xheW91dHppbnZhbGlkIjtmKz1oO2lmKGQmJms9PSJ1cmwiKXtjLmxhc3RJbmRleD0wO2c9Yy5leGVjKGEpO2lmKGc9PT1udWxsfHxnLmluZGV4IT0wKXJldHVybiJ6anNsYXlvdXR6aW52YWxpZCI7bD1nWzFdO2lmKGw9PT12b2lkIDApcmV0dXJuInpqc2xheW91dHppbnZhbGlkIjtoPWwubGVuZ3RoPT0wPzA6Yy5sYXN0SW5kZXg7aWYoYS5jaGFyQXQoaCkhPSIpIilyZXR1cm4iempzbGF5b3V0emludmFsaWQiOwpnPSIiO2wubGVuZ3RoPjEmJihfLmNhKGwsJyInKSYmXy5vaihsLCciJyk/KGw9bC5zdWJzdHJpbmcoMSxsLmxlbmd0aC0xKSxnPSciJyk6Xy5jYShsLCInIikmJl8ub2oobCwiJyIpJiYobD1sLnN1YnN0cmluZygxLGwubGVuZ3RoLTEpLGc9IiciKSk7R28udGVzdChsKXx8KGw9KF8ucWsobCxfLmZmKXx8Xy5lZikudG9TdHJpbmcoKSxsPWw9PT1fLmVmLnRvU3RyaW5nKCk/ImFib3V0OmludmFsaWQjempzbGF5b3V0eiI6bCk7aWYobD09ImFib3V0OmludmFsaWQjempzbGF5b3V0eiIpcmV0dXJuInpqc2xheW91dHppbnZhbGlkIjtmKz1nK2wrZzthPWEuc3Vic3RyaW5nKGgpfX1yZXR1cm4gZSE9MD8iempzbGF5b3V0emludmFsaWQiOmZ9OwpKbz1mdW5jdGlvbihhKXtpZighYSlyZXR1cm4gSW8oKT8icnRsIjoibHRyIjtmb3IoYT1hLnBhcmVudE5vZGU7Xy5TZihhKTthPWEucGFyZW50Tm9kZSl7bGV0IGI9YS5nZXRBdHRyaWJ1dGUoImRpciIpO2lmKGImJihiPWIudG9Mb3dlckNhc2UoKSxiPT0ibHRyInx8Yj09InJ0bCIpKXJldHVybiBifXJldHVybiBJbygpPyJydGwiOiJsdHIifTtQbz1mdW5jdGlvbihhLGIpe2lmKEtvLnRlc3QoYikpcmV0dXJuIGI7Yj1iLmluZGV4T2YoImxlZnQiKT49MD9iLnJlcGxhY2UoTG8sInJpZ2h0Iik6Yi5yZXBsYWNlKE1vLCJsZWZ0Iik7Xy54YShObyxhKSYmKGE9Yi5zcGxpdChPbyksYS5sZW5ndGg+PTQmJihiPVthWzBdLGFbM10sYVsyXSxhWzFdXS5qb2luKCIgIikpKTtyZXR1cm4gYn07ClZvPWZ1bmN0aW9uKGEpe2lmKGE9PW51bGwpcmV0dXJuIiI7aWYoIVFvLnRlc3QoYSkpcmV0dXJuIGE7YS5pbmRleE9mKCImIikhPS0xJiYoYT1hLnJlcGxhY2UoUm8sIiZhbXA7IikpO2EuaW5kZXhPZigiPCIpIT0tMSYmKGE9YS5yZXBsYWNlKFNvLCImbHQ7IikpO2EuaW5kZXhPZigiPiIpIT0tMSYmKGE9YS5yZXBsYWNlKFRvLCImZ3Q7IikpO2EuaW5kZXhPZignIicpIT0tMSYmKGE9YS5yZXBsYWNlKFVvLCImcXVvdDsiKSk7cmV0dXJuIGF9OwpXbz1mdW5jdGlvbihhKXtyZXR1cm4gbmV3IFByb21pc2UoKGIsYyk9Pnt2YXIgZD1hLmNoaWxkcmVuWzBdO2lmKGQmJmQuaGFzQ2hpbGROb2RlcygpKWIoYSk7ZWxzZXt2YXIgZT1uZXcgTXV0YXRpb25PYnNlcnZlcigoZyxoKT0+e2QmJmQuaGFzQ2hpbGROb2RlcygpJiYoaC5kaXNjb25uZWN0KCksY2xlYXJUaW1lb3V0KGYpLGIoYSkpfSk7ZS5vYnNlcnZlKGQse2NoaWxkTGlzdDohMH0pO3ZhciBmPXNldFRpbWVvdXQoKCk9PntlLmRpc2Nvbm5lY3QoKTtjKEVycm9yKCJEYSIpKX0sM0UzKX19KX07WW89ZnVuY3Rpb24oYSxiLGMpe3JldHVybiBuZXcgUHJvbWlzZSgoZCxlKT0+e2M9PT0wP2UoRXJyb3IoIkVhIikpOihlPWE/ZG9jdW1lbnQucXVlcnlTZWxlY3RvcihgWyR7YX1dYCk6WG8oYikpPyJvZy10ZSI9PT1iP2QoV28oZSkpOmQoZSk6c2V0VGltZW91dCgoKT0+e2QoWW8oYSxiLGMtMSkpfSw1MDApfSl9OwpicD1mdW5jdGlvbihhLGIsYyxkKXt2YXIgZT1abyhiLGMpLGY9Xy5RKGIsMTcpPT09MjtpZihfLlEoYiwxNyk9PT0xfHxmKXtsZXQgZz1fLm5rKCJkZCIpLkliO2lmKGc9PT1udWxsP18uTChjLDEwKTpnKWUuZG09IiJ9ZiYmZCYmKGUuYW10PWQubGEoKSk7cmV0dXJuIG5ldyAkbyhhLF8uSihiLF8uaGssMyksXy5QKGMsNCksXy5QKGMsNSksXy5KKGMsYXAsMTEpLCEhXy5MKGIsMzkpLCEhXy5MKGMsMTgpLCEhXy5MKGMsMjEpLGUpfTtabz1mdW5jdGlvbihhLGIpe3ZhciBjPXt9O2MuaGw9Xy5QKGIsOSk7Xy5MKGEsNDQpJiZ3aW5kb3cubWF0Y2hNZWRpYSgib25seSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6IDQ1MnB4KSIpLm1hdGNoZXMmJihjLmltPSIiKTtfLlEoYSwxNyk9PT0yJiZfLkwoYiwxNCkmJihjLmJkPSIxIik7KGE9Xy5OKGIsMjkpKSYmKGMueHN0Zz1hKTtyZXR1cm4gY307CmNwPWZ1bmN0aW9uKGEsYil7aWYoIWEuaXx8IWIuaXx8YS5pPT09Yi5pKXJldHVybiBhLmk9PT1iLmk7aWYodHlwZW9mIGEuaT09PSJzdHJpbmciJiZ0eXBlb2YgYi5pPT09InN0cmluZyIpe3ZhciBjPWEuaTtsZXQgZD1iLmk7Yi5pLmxlbmd0aD5hLmkubGVuZ3RoJiYoZD1hLmksYz1iLmkpO2lmKGMubGFzdEluZGV4T2YoZCwwKSE9PTApcmV0dXJuITE7Zm9yKGI9ZC5sZW5ndGg7YjxjLmxlbmd0aDtiKyspaWYoY1tiXSE9PSI9IilyZXR1cm4hMTtyZXR1cm4hMH1jPV8ub2woYSk7Yj1fLm9sKGIpO3JldHVybiBGbShjLGIpfTt2bj1mdW5jdGlvbihhLGIpe2lmKHR5cGVvZiBiPT09InN0cmluZyIpYj1iP25ldyBfLk9iKGIsXy5sbCk6Xy5ubCgpO2Vsc2UgaWYoYiBpbnN0YW5jZW9mIFVpbnQ4QXJyYXkpYj1uZXcgXy5PYihiLF8ubGwpO2Vsc2UgaWYoIShiIGluc3RhbmNlb2YgXy5PYikpcmV0dXJuITE7cmV0dXJuIGNwKGEsYil9OwpfLkpiPWNsYXNze3pjKGEpe2ZvcihsZXQgYiBpbiB0aGlzKSFpc05hTihiKSYmYSh0aGlzLCtiLHRoaXNbYl0pfWkoKXt2YXIgYT1uZXcgXy5KYjt0aGlzLnpjKChiLGMsZCk9PnthW2NdPVsuLi5kXX0pO2EuRmQ9dGhpcy5GZDtyZXR1cm4gYX19O2RwPWNsYXNzIGV4dGVuZHMgXy5Ve2NvbnN0cnVjdG9yKGEpe3N1cGVyKGEpfX07ZXA9Y2xhc3MgZXh0ZW5kcyBfLlV7Y29uc3RydWN0b3IoYSl7c3VwZXIoYSl9fTtmcD1mdW5jdGlvbihhLGIpe3JldHVybiBfLlQoYSw0LGIpfTtncD1mdW5jdGlvbihhKXtyZXR1cm4gXy56KGEsOCwhMCl9O2hwPWNsYXNzIGV4dGVuZHMgXy5Ve2NvbnN0cnVjdG9yKGEpe3N1cGVyKGEpfX07aXA9Y2xhc3MgZXh0ZW5kcyBfLlV7Y29uc3RydWN0b3IoYSl7c3VwZXIoYSl9fTtqcD1mdW5jdGlvbihhLGIpe3JldHVybiBfLlQoYSwyLGIpfTtrcD1mdW5jdGlvbihhLGIpe3JldHVybiBfLlMoYSwzLGIpfTsKXy5scD1jbGFzcyBleHRlbmRzIF8uVXtjb25zdHJ1Y3RvcihhKXtzdXBlcihhKX1SYihhKXtyZXR1cm4gXy56KHRoaXMsMSxhKX19O21wPWNsYXNzIGV4dGVuZHMgXy5Ve2NvbnN0cnVjdG9yKGEpe3N1cGVyKGEpfX07bnA9ZnVuY3Rpb24oYSxiKXtyZXR1cm4gXy5RZShhLDI3LGIpfTtfLm9wPWZ1bmN0aW9uKGEsYil7Xy5LKGEsNTAsYil9O3BwPWNsYXNzIGV4dGVuZHMgXy5Ve2NvbnN0cnVjdG9yKGEpe3N1cGVyKGEpfX07YXA9Y2xhc3MgZXh0ZW5kcyBfLlV7Y29uc3RydWN0b3IoYSl7c3VwZXIoYSl9fTtxcD1jbGFzcyBleHRlbmRzIF8uVXtjb25zdHJ1Y3RvcihhKXtzdXBlcihhKX19O3JwPWNsYXNzIGV4dGVuZHMgXy5Ve2NvbnN0cnVjdG9yKGEpe3N1cGVyKGEpfX07Xy5zcD1jbGFzcyBleHRlbmRzIF8uVXtjb25zdHJ1Y3RvcihhKXtzdXBlcihhKX1SYihhKXtyZXR1cm4gXy56KHRoaXMsMTEsYSl9fTt0cD1mdW5jdGlvbihhKXtyZXR1cm4gXy5KKGEscXAsNDApfTsKdXA9ZnVuY3Rpb24oYSxiLGMsZCl7Xy5saC5JKGIsYywhMSxkfHxhLnZ8fGEsYSl9O3ZwPWZ1bmN0aW9uKGEpe2lmKGEuUGEmJnR5cGVvZiBhLlBhPT0iZnVuY3Rpb24iKXJldHVybiBhLlBhKCk7aWYodHlwZW9mIE1hcCE9PSJ1bmRlZmluZWQiJiZhIGluc3RhbmNlb2YgTWFwfHx0eXBlb2YgU2V0IT09InVuZGVmaW5lZCImJmEgaW5zdGFuY2VvZiBTZXQpcmV0dXJuIEFycmF5LmZyb20oYS52YWx1ZXMoKSk7aWYodHlwZW9mIGE9PT0ic3RyaW5nIilyZXR1cm4gYS5zcGxpdCgiIik7aWYoXy5JZChhKSl7dmFyIGI9W10sYz1hLmxlbmd0aDtmb3IodmFyIGQ9MDtkPGM7ZCsrKWIucHVzaChhW2RdKTtyZXR1cm4gYn1iPVtdO2M9MDtmb3IoZCBpbiBhKWJbYysrXT1hW2RdO3JldHVybiBifTsKd3A9ZnVuY3Rpb24oYSl7aWYoYS5yYiYmdHlwZW9mIGEucmI9PSJmdW5jdGlvbiIpcmV0dXJuIGEucmIoKTtpZighYS5QYXx8dHlwZW9mIGEuUGEhPSJmdW5jdGlvbiIpe2lmKHR5cGVvZiBNYXAhPT0idW5kZWZpbmVkIiYmYSBpbnN0YW5jZW9mIE1hcClyZXR1cm4gQXJyYXkuZnJvbShhLmtleXMoKSk7aWYoISh0eXBlb2YgU2V0IT09InVuZGVmaW5lZCImJmEgaW5zdGFuY2VvZiBTZXQpKXtpZihfLklkKGEpfHx0eXBlb2YgYT09PSJzdHJpbmciKXt2YXIgYj1bXTthPWEubGVuZ3RoO2Zvcih2YXIgYz0wO2M8YTtjKyspYi5wdXNoKGMpO3JldHVybiBifWI9W107Yz0wO2ZvcihsZXQgZCBpbiBhKWJbYysrXT1kO3JldHVybiBifX19O3hwPXZvaWQgMDtNbT1jbGFzc3tjb25zdHJ1Y3RvcihhLGIsYyl7dGhpcy5idWZmZXI9YTtpZihjJiYhYil0aHJvdyBFcnJvcigpO3RoaXMuaT1ifX07enA9W107CmRuPWZ1bmN0aW9uKGEsYil7aWYoYjwwKXRocm93IEVycm9yKCk7dmFyIGM9YS5pO2I9YytiO2lmKGI+YS52KXRocm93IEVycm9yKCk7YS5pPWI7cmV0dXJuIGN9O0FwPWNsYXNze2NvbnN0cnVjdG9yKGEsYixjLGQpe3RoaXMuaj1udWxsO3RoaXMuQj0hMTt0aGlzLmk9dGhpcy52PXRoaXMuQT0wO3RoaXMuaW5pdChhLGIsYyxkKX1pbml0KGEsYixjLHtYYzpkPSExLExkOmU9ITF9PXt9KXt0aGlzLlhjPWQ7dGhpcy5MZD1lO2EmJihhPU5tKGEsdGhpcy5MZCksdGhpcy5qPWEuYnVmZmVyLHRoaXMuQj1hLmksdGhpcy5BPWJ8fDAsdGhpcy52PWMhPT12b2lkIDA/dGhpcy5BK2M6dGhpcy5qLmxlbmd0aCx0aGlzLmk9dGhpcy5BKX1jbGVhcigpe3RoaXMuaj1udWxsO3RoaXMuQj0hMTt0aGlzLmk9dGhpcy52PXRoaXMuQT0wO3RoaXMuWGM9ITF9cmVzZXQoKXt0aGlzLmk9dGhpcy5BfX07ZW49MDtCcD1bXTtDcD1mdW5jdGlvbihhLHtNZTpiPSExfT17fSl7YS5NZT1ifTsKV209ZnVuY3Rpb24oYSl7YS5pLmNsZWFyKCk7YS52PS0xO2Euaj0tMTtCcC5sZW5ndGg8MTAwJiZCcC5wdXNoKGEpfTthbj1mdW5jdGlvbihhKXt2YXIgYj1hLmk7aWYoYi5pPT1iLnYpcmV0dXJuITE7YS5BPWEuaS5pO3ZhciBjPV8udWwoYS5pKT4+PjA7Yj1jPj4+MztjJj03O2lmKCEoYz49MCYmYzw9NSkpdGhyb3cgRXJyb3IoKTtpZihiPDEpdGhyb3cgRXJyb3IoKTthLnY9YjthLmo9YztyZXR1cm4hMH07JG09ZnVuY3Rpb24oKXtpZihlbj49MTAwKXRocm93IG5ldyBTeW50YXhFcnJvcjtlbisrfTsKY249ZnVuY3Rpb24oYSl7dHJ5e3N3aXRjaChhLmope2Nhc2UgMDppZihhLmohPTApY24oYSk7ZWxzZSBhOnt2YXIgYj1hLmk7bGV0IGg9Yi5pO2E9aCsxMDtsZXQgaz1iLmo7Zm9yKDtoPGE7KWlmKChrW2grK10mMTI4KT09PTApe18udGwoYixoKTticmVhayBhfXRocm93IEVycm9yKCk7fWJyZWFrO2Nhc2UgMTp2YXIgYz1hLmk7Xy50bChjLGMuaSs4KTticmVhaztjYXNlIDI6aWYoYS5qIT0yKWNuKGEpO2Vsc2V7dmFyIGQ9Xy51bChhLmkpPj4+MCxlPWEuaTtfLnRsKGUsZS5pK2QpfWJyZWFrO2Nhc2UgNTp2YXIgZj1hLmk7Xy50bChmLGYuaSs0KTticmVhaztjYXNlIDM6JG0oKTtsZXQgZz1hLnY7dHJ5e2Rve2lmKCFhbihhKSl0aHJvdyBFcnJvcigpO2lmKGEuaj09NCl7aWYoYS52IT1nKXRocm93IEVycm9yKCk7YnJlYWt9Y24oYSl9d2hpbGUoMSl9Y2F0Y2goaCl7aWYoaCBpbnN0YW5jZW9mIFJhbmdlRXJyb3IpdGhyb3cgbmV3IFN5bnRheEVycm9yO3Rocm93IGg7fWZpbmFsbHl7ZW4+CjAmJmVuLS19YnJlYWs7ZGVmYXVsdDp0aHJvdyBFcnJvcigpO319Y2F0Y2goZyl7aWYoZyBpbnN0YW5jZW9mIFJhbmdlRXJyb3IpdGhyb3cgbmV3IFN5bnRheEVycm9yO3Rocm93IGc7fX07CkRwPWZ1bmN0aW9uKGEpe3ZhciBiPV8udWwoYS5pKT4+PjA7YT1hLmk7dmFyIGM9ZG4oYSxiKTthPWEuajtpZihfLlBkKXt2YXIgZD1hLGU7KGU9eXApfHwoZT15cD1uZXcgVGV4dERlY29kZXIoInV0Zi04Iix7ZmF0YWw6ITB9KSk7Yj1jK2I7ZD1jPT09MCYmYj09PWQubGVuZ3RoP2Q6ZC5zdWJhcnJheShjLGIpO3RyeXt2YXIgZj1lLmRlY29kZShkKX1jYXRjaChoKXtpZih4cD09PXZvaWQgMCl7dHJ5e2UuZGVjb2RlKG5ldyBVaW50OEFycmF5KFsxMjhdKSl9Y2F0Y2goayl7fXRyeXtlLmRlY29kZShuZXcgVWludDhBcnJheShbOTddKSkseHA9ITB9Y2F0Y2goayl7eHA9ITF9fSF4cCYmKHlwPXZvaWQgMCk7dGhyb3cgaDt9fWVsc2V7Zj1jO2I9ZitiO2M9W107bGV0IGg9bnVsbDtsZXQgaztmb3IoO2Y8Yjspe3ZhciBnPWFbZisrXTtnPDEyOD9jLnB1c2goZyk6ZzwyMjQ/Zj49Yj9HbShjKTooaz1hW2YrK10sZzwxOTR8fChrJjE5MikhPT0xMjg/KGYtLSxHbShjKSk6Yy5wdXNoKChnJgozMSk8PDZ8ayY2MykpOmc8MjQwP2Y+PWItMT9HbShjKTooaz1hW2YrK10sKGsmMTkyKSE9PTEyOHx8Zz09PTIyNCYmazwxNjB8fGc9PT0yMzcmJms+PTE2MHx8KChlPWFbZisrXSkmMTkyKSE9PTEyOD8oZi0tLEdtKGMpKTpjLnB1c2goKGcmMTUpPDwxMnwoayY2Myk8PDZ8ZSY2MykpOmc8PTI0ND9mPj1iLTI/R20oYyk6KGs9YVtmKytdLChrJjE5MikhPT0xMjh8fChnPDwyOCkrKGstMTQ0KT4+MzAhPT0wfHwoKGU9YVtmKytdKSYxOTIpIT09MTI4fHwoKGQ9YVtmKytdKSYxOTIpIT09MTI4PyhmLS0sR20oYykpOihnPShnJjcpPDwxOHwoayY2Myk8PDEyfChlJjYzKTw8NnxkJjYzLGctPTY1NTM2LGMucHVzaCgoZz4+MTAmMTAyMykrNTUyOTYsKGcmMTAyMykrNTYzMjApKSk6R20oYyk7Yy5sZW5ndGg+PTgxOTImJihoPUhtKGgsYyksYy5sZW5ndGg9MCl9Zj1IbShoLGMpfXJldHVybiBmfTsKRXA9Y2xhc3N7Y29uc3RydWN0b3IoYSxiLGMsZCl7aWYoenAubGVuZ3RoKXtsZXQgZT16cC5wb3AoKTtlLmluaXQoYSxiLGMsZCk7YT1lfWVsc2UgYT1uZXcgQXAoYSxiLGMsZCk7dGhpcy5pPWE7dGhpcy5BPXRoaXMuaS5pO3RoaXMuaj10aGlzLnY9LTE7Q3AodGhpcyxkKX1yZXNldCgpe3RoaXMuaS5yZXNldCgpO3RoaXMuQT10aGlzLmkuaTt0aGlzLmo9dGhpcy52PS0xfX07Vm09ZnVuY3Rpb24oYSxiLGMsZCl7aWYoQnAubGVuZ3RoKXtsZXQgZT1CcC5wb3AoKTtDcChlLGQpO2UuaS5pbml0KGEsYixjLGQpO3JldHVybiBlfXJldHVybiBuZXcgRXAoYSxiLGMsZCl9O1RtPVN5bWJvbCgpO1VtPVN5bWJvbCgpO0ZwPWZ1bmN0aW9uKGEsYil7YS5BYj1iO2EuaSYmKGEuaT0hMCxhLkFiJiZhLkFiLm5vdGlmeSgpKX07CkdwPWZ1bmN0aW9uKGEsYixjPW51bGwsZD1udWxsLGU9bnVsbCxmPW51bGwsZz1udWxsLGg9bmV3IF8uVil7dmFyIGs9YS5pPzEwMzoxNDtjPV8uem0oMyxkLGUsYixjLGYsZyk7Xy5LKGgsNDcsYyk7Xy55KGgsMTgsYik7Xy55bShhLGssaCl9O0lwPS8mL2c7SnA9LzwvZztLcD0vPi9nO0xwPS8iL2c7TXA9LycvZztOcD0vXHgwMC9nO09wPS9bXHgwMCY8PiInXS87UHA9ZnVuY3Rpb24oYSxiLGMsZCl7dmFyIGU9YVtfLnddfDAsZj1lJjEyOD9fLkk6dm9pZCAwO2U9Xy5lbChhLGUsYyxiLGYpO18uZWMoYSxlLGIsZCxmKX07UXA9Y2xhc3N7Y29uc3RydWN0b3IoYSxiKXt0aGlzLmo9YT4+PjA7dGhpcy5pPWI+Pj4wfX07U3A9ZnVuY3Rpb24oYSl7aWYoIWEpcmV0dXJuIFJwfHwoUnA9bmV3IFFwKDAsMCkpO2lmKCEvXi0/XGQrJC8udGVzdChhKSlyZXR1cm4gbnVsbDtfLmFiKGEpO3JldHVybiBuZXcgUXAoXy5UYSxfLlVhKX07CiRwPWZ1bmN0aW9uKGEsYixjKXtmb3IoO2M+MHx8Yj4xMjc7KWEuaS5wdXNoKGImMTI3fDEyOCksYj0oYj4+Pjd8Yzw8MjUpPj4+MCxjPj4+PTc7YS5pLnB1c2goYil9O0duPWZ1bmN0aW9uKGEsYil7Zm9yKDtiPjEyNzspYS5pLnB1c2goYiYxMjd8MTI4KSxiPj4+PTc7YS5pLnB1c2goYil9O2FxPWNsYXNze2NvbnN0cnVjdG9yKCl7dGhpcy5pPVtdfWxlbmd0aCgpe3JldHVybiB0aGlzLmkubGVuZ3RofWVuZCgpe3ZhciBhPXRoaXMuaTt0aGlzLmk9W107cmV0dXJuIGF9fTtGbj1mdW5jdGlvbihhLGIpe2IubGVuZ3RoIT09MCYmKGEudi5wdXNoKGIpLGEuais9Yi5sZW5ndGgpfTsKYnE9Y2xhc3N7Y29uc3RydWN0b3IoKXt0aGlzLnY9W107dGhpcy5qPTA7dGhpcy5pPW5ldyBhcX1CKGEsYil7aWYoYiE9bnVsbCl7aWYoXy5RZCliPShIcHx8KEhwPW5ldyBUZXh0RW5jb2RlcikpLmVuY29kZShiKTtlbHNle2xldCBkPTAsZT1uZXcgVWludDhBcnJheSgzKmIubGVuZ3RoKTtmb3IobGV0IGY9MDtmPGIubGVuZ3RoO2YrKyl7dmFyIGM9Yi5jaGFyQ29kZUF0KGYpO2lmKGM8MTI4KWVbZCsrXT1jO2Vsc2V7aWYoYzwyMDQ4KWVbZCsrXT1jPj42fDE5MjtlbHNle2lmKGM+PTU1Mjk2JiZjPD01NzM0Myl7aWYoYzw9NTYzMTkmJmY8Yi5sZW5ndGgpe2xldCBnPWIuY2hhckNvZGVBdCgrK2YpO2lmKGc+PTU2MzIwJiZnPD01NzM0Myl7Yz0oYy01NTI5NikqMTAyNCtnLTU2MzIwKzY1NTM2O2VbZCsrXT1jPj4xOHwyNDA7ZVtkKytdPWM+PjEyJjYzfDEyODtlW2QrK109Yz4+NiY2M3wxMjg7ZVtkKytdPWMmNjN8MTI4O2NvbnRpbnVlfWVsc2UgZi0tfWM9NjU1MzN9ZVtkKytdPWM+PgoxMnwyMjQ7ZVtkKytdPWM+PjYmNjN8MTI4fWVbZCsrXT1jJjYzfDEyOH19Yj1kPT09ZS5sZW5ndGg/ZTplLnN1YmFycmF5KDAsZCl9R24odGhpcy5pLGEqOCsyKTtHbih0aGlzLmksYi5sZW5ndGgpO0ZuKHRoaXMsdGhpcy5pLmVuZCgpKTtGbih0aGlzLGIpfX1BKGEsYixjKXtpZihiIT1udWxsKXtHbih0aGlzLmksYSo4KzIpO2E9dGhpcy5pLmVuZCgpO0ZuKHRoaXMsYSk7YS5wdXNoKHRoaXMuaik7YyhiLHRoaXMpO2I9YS5wb3AoKTtmb3IoYj10aGlzLmordGhpcy5pLmxlbmd0aCgpLWI7Yj4xMjc7KWEucHVzaChiJjEyN3wxMjgpLGI+Pj49Nyx0aGlzLmorKzthLnB1c2goYik7dGhpcy5qKyt9fX07em49U3ltYm9sKCk7Q249U3ltYm9sKCk7Y3E9Zm4oZnVuY3Rpb24oYSxiLGMpe2lmKGEuaiE9PTIpcmV0dXJuITE7Z24oYixjLERwKGEpKTtyZXR1cm4hMH0saG4sXy5TZSk7CmRxPWZuKGZ1bmN0aW9uKGEsYixjKXtpZihhLmohPT0wKXJldHVybiExO2duKGIsYyxfLnVsKGEuaSkpO3JldHVybiEwfSxIbixfLlVlKTtlcT1mbihmdW5jdGlvbihhLGIsYyl7aWYoYS5qIT09MClyZXR1cm4hMTthPV8udWwoYS5pKTtnbihiLGMsYT09PTA/dm9pZCAwOmEpO3JldHVybiEwfSxIbixfLlVlKTtmcT17WGo6MCxKajoxLEtqOjIsMDoiRk9STUFUVEVEX0hUTUxfQ09OVEVOVCIsMToiRU1CRURERURfSU5URVJOQUxfQ09OVEVOVCIsMjoiRU1CRURERURfVFJVU1RFRF9FWFRFUk5BTF9DT05URU5UIn07Z3E9Y2xhc3MgZXh0ZW5kcyBFcnJvcntjb25zdHJ1Y3RvcihhKXtzdXBlcihgJHthfSBjYW5ub3QgYmUgdXNlZCB3aXRoIGludGVudCAke2ZxWzFdfWApO3RoaXMudHlwZT1hO3RoaXMubmFtZT0iVHlwZUNhbm5vdEJlVXNlZFdpdGhJZnJhbWVJbnRlbnRFcnJvciJ9fTtLbj0iYWx0ZXJuYXRlIGF1dGhvciBib29rbWFyayBjYW5vbmljYWwgY2l0ZSBoZWxwIGljb24gbGljZW5zZSBtb2R1bGVwcmVsb2FkIG5leHQgcHJlZmV0Y2ggZG5zLXByZWZldGNoIHByZXJlbmRlciBwcmVjb25uZWN0IHByZWxvYWQgcHJldiBzZWFyY2ggc3VicmVzb3VyY2UiLnNwbGl0KCIgIik7CmhxPWZ1bmN0aW9uKGEpe09wLnRlc3QoYSkmJihhLmluZGV4T2YoIiYiKSE9LTEmJihhPWEucmVwbGFjZShJcCwiJmFtcDsiKSksYS5pbmRleE9mKCI8IikhPS0xJiYoYT1hLnJlcGxhY2UoSnAsIiZsdDsiKSksYS5pbmRleE9mKCI+IikhPS0xJiYoYT1hLnJlcGxhY2UoS3AsIiZndDsiKSksYS5pbmRleE9mKCciJykhPS0xJiYoYT1hLnJlcGxhY2UoTHAsIiZxdW90OyIpKSxhLmluZGV4T2YoIiciKSE9LTEmJihhPWEucmVwbGFjZShNcCwiJiMzOTsiKSksYS5pbmRleE9mKCJceDAwIikhPS0xJiYoYT1hLnJlcGxhY2UoTnAsIiYjMDsiKSkpO3JldHVybiBhfTtNbj0vW14jXSovO1hvPWZ1bmN0aW9uKGEpe3JldHVybihhPV8ueGQoZG9jdW1lbnQsYSkpP2E6bnVsbH07aXE9ZnVuY3Rpb24oYSxiLGMpe3JldHVybiBfLk9mKGRvY3VtZW50LGFyZ3VtZW50cyl9O2pxPWZ1bmN0aW9uKGEpe3JldHVybiBfLnRqKGRvY3VtZW50LGEpfTsKa3E9ZnVuY3Rpb24oYSl7cmV0dXJuIGEuY29udGVudERvY3VtZW50fHxhLmNvbnRlbnRXaW5kb3cuZG9jdW1lbnR9O2xxPXtTQ1JJUFQ6MSxTVFlMRToxLEhFQUQ6MSxJRlJBTUU6MSxPQkpFQ1Q6MX07bXE9e0lNRzoiICIsQlI6IlxuIn07bnE9ZnVuY3Rpb24oYSxiLGMpe2lmKCEoYS5ub2RlTmFtZSBpbiBscSkpaWYoYS5ub2RlVHlwZT09MyljP2IucHVzaChTdHJpbmcoYS5ub2RlVmFsdWUpLnJlcGxhY2UoLyhcclxufFxyfFxuKS9nLCIiKSk6Yi5wdXNoKGEubm9kZVZhbHVlKTtlbHNlIGlmKGEubm9kZU5hbWUgaW4gbXEpYi5wdXNoKG1xW2Eubm9kZU5hbWVdKTtlbHNlIGZvcihhPWEuZmlyc3RDaGlsZDthOylucShhLGIsYyksYT1hLm5leHRTaWJsaW5nfTsKb3E9ZnVuY3Rpb24oYSxiKXtpZihhLmZvckVhY2gmJnR5cGVvZiBhLmZvckVhY2g9PSJmdW5jdGlvbiIpYS5mb3JFYWNoKGIsdm9pZCAwKTtlbHNlIGlmKF8uSWQoYSl8fHR5cGVvZiBhPT09InN0cmluZyIpQXJyYXkucHJvdG90eXBlLmZvckVhY2guY2FsbChhLGIsdm9pZCAwKTtlbHNle2xldCBjPXdwKGEpLGQ9dnAoYSksZT1kLmxlbmd0aDtmb3IobGV0IGY9MDtmPGU7ZisrKWIuY2FsbCh2b2lkIDAsZFtmXSxjJiZjW2ZdLGEpfX07cHE9Y2xhc3MgZXh0ZW5kcyBfLllje2NvbnN0cnVjdG9yKGEpe3N1cGVyKCJzbXUiKTt0aGlzLmZpPWF9fTtfLnFxPWNsYXNzIGV4dGVuZHMgXy5Ve2NvbnN0cnVjdG9yKGEpe3N1cGVyKGEpfX07Xy5ycT1jbGFzcyBleHRlbmRzIF8uVXtjb25zdHJ1Y3RvcihhKXtzdXBlcihhKX19O3NxPV8ucmMoXy5ycSk7dHE9Y2xhc3MgZXh0ZW5kcyBfLlV7Y29uc3RydWN0b3IoYSl7c3VwZXIoYSl9fTsKdXE9ZnVuY3Rpb24oYSxiLGMpe2MmJmEuaS5zZXQoYixjKTtyZXR1cm4gYX07dnE9ZnVuY3Rpb24oYSl7dmFyIGI9WyJlbWJlZGRlZCIsInNjcmVlbiIsYS5yZXNvdXJjZUlkLnRvU3RyaW5nKCldLnJlZHVjZSgoYyxkKT0+e2M9Xy5hayhfLlhqKGMpLnRvU3RyaW5nKCkpO2Q9Yy5OZCsoYy5OZC5zbGljZSgtMSk9PT0iLyI/IiI6Ii8iKStlbmNvZGVVUklDb21wb25lbnQoZCk7cmV0dXJuIF8uWWooZCtjLmVmK2MuWWIpfSxhLmopO3JldHVybiBObihfLmNrKGIsYS5pKSxhLlliKX07d3E9Y2xhc3N7Y29uc3RydWN0b3IoYSxiKXt0aGlzLnJlc291cmNlSWQ9YTt0aGlzLmk9bmV3IE1hcDt0aGlzLlliPSIiO3RoaXMuaj1iIT1udWxsP2I6Xy5Da319Owp4cT1mdW5jdGlvbihhKXt2YXIgYixjLGQsZSxmLGcsaCxrPW5ldyB3cShhLnJlc291cmNlSWQsYS5GZyk7ay5pLnNldCgib2N0YXJpbmVfd2ViX29yaWdpbiIsd2luZG93LmxvY2F0aW9uLm9yaWdpbi50b1N0cmluZygpKTt2YXIgbD1hLnBtO2lmKGwpZm9yKGxldCBbbSxuXW9mIGwuZW50cmllcygpKWsuaS5zZXQoInJlc291cmNlLiIrbSxuKTtsPShiPWEuaWIpPT1udWxsP3ZvaWQgMDpiLmFuY2hvcjtrLlliPWwhPW51bGw/bDoiIjtiPShjPWEuaWIpPT1udWxsP3ZvaWQgMDpjLmxhbmd1YWdlO2M9dXEoaywiaGwiLGIpO2s9KGQ9YS5pYik9PW51bGw/dm9pZCAwOmQuY29sb3JTY2hlbWU7ZD11cShjLCJjb2xvcl9zY2hlbWUiLGspO2M9KGU9YS5pYik9PW51bGw/dm9pZCAwOmUubGc7ZT11cShkLCJhdXRodXNlciIsYyk7ZD0oZj1hLnFmKT09bnVsbD92b2lkIDA6Zi5SbDtmPXVxKGUsInV0bV9jYW1wYWlnbiIsZCk7ZT0oZz1hLnFmKT09bnVsbD92b2lkIDA6Zy5zb3VyY2U7Zz11cShmLAoidXRtX3NvdXJjZSIsZSk7YT0oaD1hLnFmKT09bnVsbD92b2lkIDA6aC5hbTtyZXR1cm4gdXEoZywidXRtX21lZGl1bSIsYSl9O3lxPWNsYXNze2NvbnN0cnVjdG9yKGEpe3RoaXMuaj1hfXNlbmQoYSxiLGMpe3RoaXMuai50aGVuKGQ9PntkLnNlbmQoYSxiLGMpfSl9aShhLGIpe3JldHVybiB0aGlzLmoudGhlbihjPT5jLmkoYSxiKSl9fTt6cT1mdW5jdGlvbihhLGIpe2EuaS5zZW5kKGIsdm9pZCAwLHZvaWQgMCl9O0FxPWNsYXNze2NvbnN0cnVjdG9yKGEsYil7dGhpcy5kYXRhPWE7dGhpcy5pPWJ9fTtEcT1mdW5jdGlvbihhLGIpe0JxKGEsYik7cmV0dXJuIG5ldyBDcShhKX07Q3E9Y2xhc3N7Y29uc3RydWN0b3IoYSl7dGhpcy5qPWF9c2VuZChhLGIsYz1bXSl7dmFyIGQ9bmV3IE1lc3NhZ2VDaGFubmVsO0JxKGQucG9ydDEsYik7dGhpcy5qLnBvc3RNZXNzYWdlKGEsW2QucG9ydDJdLmNvbmNhdChjKSl9aShhLGIpe3JldHVybiBuZXcgXy5EayhjPT57dGhpcy5zZW5kKGEsYyxiKX0pfX07CkJxPWZ1bmN0aW9uKGEsYil7YiYmKGEub25tZXNzYWdlPWM9PntiKG5ldyBBcShjLmRhdGEsRHEoYy5wb3J0c1swXSkpKX0pfTtFcT1jbGFzc3tjb25zdHJ1Y3RvcihhKXt0aGlzLmk9YX19O0ZxPWE9Pnt2YXIgYj1PYmplY3QuY3JlYXRlKG51bGwpOyh0eXBlb2YgYT09PSJzdHJpbmciP1thXTphKS5mb3JFYWNoKGM9PntpZihjPT09Im51bGwiKXRocm93IEVycm9yKCJYIik7YltjXT0hMH0pO3JldHVybiBjPT5iW2NdPT09ITB9OwpHcT0oe2Rlc3RpbmF0aW9uOmEsRmM6YixMaDpjLENtOmQsb2I6ZSxvbk1lc3NhZ2U6ZixWZTpnfSk9Pm5ldyB5cShuZXcgXy5EaygoaCxrKT0+e3ZhciBsPW09PnttLnNvdXJjZSYmbS5zb3VyY2U9PT1iKCkmJmMuaShtLm9yaWdpbikmJihtLmRhdGEubnx8bS5kYXRhKT09PWUmJihhLnJlbW92ZUV2ZW50TGlzdGVuZXIoIm1lc3NhZ2UiLGwsITEpLGQmJm0uZGF0YS50IT09ZD9rKEVycm9yKCJZYCIrZSsiYCIrZCsiYCIrbS5kYXRhLnQpKTooaChEcShtLnBvcnRzWzBdLGYpKSxnJiZnKG0pKSl9O2EuYWRkRXZlbnRMaXN0ZW5lcigibWVzc2FnZSIsbCwhMSl9KSk7CkhxPSh7ZGVzdGluYXRpb246YSxZOmIsb3JpZ2luOmMsb2I6ZD0iWk5XTjFkIixvbk1lc3NhZ2U6ZSxWZTpmfSk9PkdxKHtkZXN0aW5hdGlvbjphLEZjOigpPT5iLmNvbnRlbnRXaW5kb3csTGg6YyBpbnN0YW5jZW9mIEVxP2M6dHlwZW9mIGM9PT0iZnVuY3Rpb24iP25ldyBFcShjKTpuZXcgRXEoRnEoYykpLG9iOmQsb25NZXNzYWdlOmUsVmU6Zn0pO0lxPWZ1bmN0aW9uKGEsYixjPXt9KXtpZihhLnN0YXRlPT09Yil7bGV0IGQ7YS5zdGF0ZT0oZD1jLlRjKSE9bnVsbD9kOmI7cmV0dXJuITB9aWYoYS5zdGF0ZSE9PWMuVGMmJmMuS2QpdGhyb3cgRXJyb3IoIlpgIithLnN0YXRlKyJgIitiKTtyZXR1cm4hMX07SnE9Y2xhc3N7Y29uc3RydWN0b3IoKXt0aGlzLnN0YXRlPSJoYW5kc2hha2UifWkoKXt0aGlzLnN0YXRlPSJkZXN0cm95ZWQifX07Ck9xPWZ1bmN0aW9uKGEpe0txKGEsIkdpMVg1IixiPT57SXEoYSwiaGFuZHNoYWtlIikmJihhLmomJihhLmouaSgpLGEuai5BPWEpLExxKGEpLE1xKGEpLHpxKGIsbnVsbCksSXEoYSwiaGFuZHNoYWtlIix7VGM6ImNvbm5lY3RlZCIsS2Q6ITB9KSYmYS5NYi5FaCgpLG5ldyBOcShhLndpbmRvdyxhLlksYS5vcmlnaW4sYS5NYixhKSl9KX07S3E9ZnVuY3Rpb24oYSxiLGMpe3JldHVybiBIcSh7ZGVzdGluYXRpb246YS53aW5kb3csWTphLlksb3JpZ2luOmEub3JpZ2luLG9iOmIsb25NZXNzYWdlOmN9KX07THE9ZnVuY3Rpb24oYSl7dmFyIGI9S3EoYSwiWTc5ME1jIik7YS52PXNldEludGVydmFsKGFzeW5jKCk9Pnt2YXIgYz1zZXRUaW1lb3V0KCgpPT57SXEoYSwiY29ubmVjdGVkIix7VGM6ImVycm9yIixLZDohMH0pJiZhLk1iLkViKCl9LDFFMyk7YXdhaXQgYi5pKG51bGwpO0lxKGEsImVycm9yIix7VGM6ImNvbm5lY3RlZCJ9KTtjbGVhclRpbWVvdXQoYyl9LDVFMyl9OwpNcT1mdW5jdGlvbihhKXtLcShhLCJSbzd1a2IiLGI9PntiPWIuZGF0YTtpZihJcShhLCJjb25uZWN0ZWQiLHtLZDohMH0pKWEuTWIub25NZXNzYWdlKGIpfSl9O05xPWNsYXNzIGV4dGVuZHMgSnF7Y29uc3RydWN0b3IoYSxiLGMsZCxlKXtzdXBlcigpO3RoaXMud2luZG93PWE7dGhpcy5ZPWI7dGhpcy5vcmlnaW49Yzt0aGlzLk1iPWQ7dGhpcy5qPWU7T3EodGhpcyl9aSgpe3N1cGVyLmkoKTtjbGVhckludGVydmFsKHRoaXMudil9fTtQcT1mdW5jdGlvbihhLGIsYyl7cmV0dXJuIG5ldyBOcSh3aW5kb3csYSxiLGMpfTtRcT1bW3t0cmFuc2Zvcm06InRyYW5zbGF0ZVkoLTUwcHgpIn0se3RyYW5zZm9ybToidHJhbnNsYXRlWSgwKSJ9XSx7ZHVyYXRpb246NTAwLGVhc2luZzoiY3ViaWMtYmV6aWVyKC4zLDAsMCwxKSIsZmlsbDoiZm9yd2FyZHMifV07ClJxPVtbe3RyYW5zZm9ybToidHJhbnNsYXRlWSgwKSJ9LHt0cmFuc2Zvcm06InRyYW5zbGF0ZVkoLTUwcHgpIn1dLHtkdXJhdGlvbjoxNTAsZWFzaW5nOiJjdWJpYy1iZXppZXIoLjMsMCwuOCwuMTUpIixmaWxsOiJmb3J3YXJkcyJ9XTtTcT1bW3tvcGFjaXR5OjB9LHtvcGFjaXR5OjF9XSx7ZHVyYXRpb246NTAsZWFzaW5nOiJsaW5lYXIiLGZpbGw6ImZvcndhcmRzIn1dO1RxPVtbe29wYWNpdHk6MX0se29wYWNpdHk6MH1dLHtkdXJhdGlvbjo1MCxkZWxheToxMDAsZWFzaW5nOiJsaW5lYXIiLGZpbGw6ImZvcndhcmRzIn1dO1VxPWNsYXNze2NvbnN0cnVjdG9yKGEpe3RoaXMuaT1hO3RoaXMuc3RhdGU9ImNsb3NlZCJ9fTsKVnE9YXN5bmMgZnVuY3Rpb24oYSx7c3RhdGVzOmIseGU6YyxnZjpkfSl7dmFyIGU7KGU9YS5qKT09bnVsbHx8ZS5hYm9ydCgpO2lmKGEuc3RhdGU9PT1iLmZyb20pe2Euc3RhdGU9Yi50ZjthLmo9bmV3IEFib3J0Q29udHJvbGxlcjtmb3IobGV0IGYgb2YgYyl7bGV0IGc9YS5pLmFuaW1hdGUoLi4uZik7YS5qLnNpZ25hbC5hZGRFdmVudExpc3RlbmVyKCJhYm9ydCIsKCk9PntnLmNhbmNlbCgpfSl9ZC5iZWZvcmUmJihhLmkuc3R5bGUuZGlzcGxheT1kLmJlZm9yZSk7dHJ5e2F3YWl0IFByb21pc2UuYWxsKGEuaS5nZXRBbmltYXRpb25zKCkubWFwKGY9PmYuZmluaXNoZWQpKX1jYXRjaChmKXtyZXR1cm59fWEuc3RhdGU9Yi50bztkLmFmdGVyJiYoYS5pLnN0eWxlLmRpc3BsYXk9ZC5hZnRlcil9OwpXcT1jbGFzcyBleHRlbmRzIFVxe2NvbnN0cnVjdG9yKGEpe3N1cGVyKGEpO3RoaXMuaj1uZXcgQWJvcnRDb250cm9sbGVyO3RoaXMuaS5zdHlsZS50cmFuc2Zvcm1PcmlnaW49InRvcCJ9YXN5bmMgdigpe2F3YWl0IFZxKHRoaXMse3N0YXRlczp7ZnJvbToiY2xvc2VkIix0Zjoib3BlbmluZyIsdG86Im9wZW4ifSxnZjp7YmVmb3JlOiJibG9jayJ9LHhlOltRcSxTcV19KX1hc3luYyBjbG9zZSgpe2F3YWl0IFZxKHRoaXMse3N0YXRlczp7ZnJvbToib3BlbiIsdGY6ImNsb3NpbmciLHRvOiJjbG9zZWQifSxnZjp7YWZ0ZXI6Im5vbmUifSx4ZTpbUnEsVHFdfSl9fTtYcT1jbGFzcyBleHRlbmRzIFVxe2FzeW5jIHYoKXt0aGlzLmkuc3R5bGUuZGlzcGxheT0iYmxvY2siO3RoaXMuc3RhdGU9Im9wZW4ifWFzeW5jIGNsb3NlKCl7dGhpcy5pLnN0eWxlLmRpc3BsYXk9Im5vbmUiO3RoaXMuc3RhdGU9ImNsb3NlZCJ9fTsKWXE9Y2xhc3N7Y29uc3RydWN0b3IoKXt0aGlzLmk9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiaWZyYW1lIik7KDAsXy5GaykoKTt0aGlzLmkuY2xhc3NMaXN0LmFkZCgib2NXZWJJZnJhbWUiKTt0aGlzLmkuc2V0QXR0cmlidXRlKCJzY3JvbGxpbmciLCJubyIpfWxvYWQoYSl7dmFyIGI9dGhpcy5pO2IucmVtb3ZlQXR0cmlidXRlKCJzcmNkb2MiKTtpZighKGEgaW5zdGFuY2VvZiBfLlZqKSl0aHJvdyBuZXcgZ3EodHlwZW9mIGEpO3ZhciBjPSJhbGxvdy1zYW1lLW9yaWdpbiBhbGxvdy1zY3JpcHRzIGFsbG93LWZvcm1zIGFsbG93LXBvcHVwcyBhbGxvdy1wb3B1cHMtdG8tZXNjYXBlLXNhbmRib3ggYWxsb3ctc3RvcmFnZS1hY2Nlc3MtYnktdXNlci1hY3RpdmF0aW9uIi5zcGxpdCgiICIpO2Iuc2V0QXR0cmlidXRlKCJzYW5kYm94IiwiIik7Zm9yKGxldCBkPTA7ZDxjLmxlbmd0aDtkKyspYi5zYW5kYm94LnN1cHBvcnRzJiYhYi5zYW5kYm94LnN1cHBvcnRzKGNbZF0pfHxiLnNhbmRib3guYWRkKGNbZF0pOwpfLlpqKGIsYSl9fTtacT1jbGFzc3tjb25zdHJ1Y3RvcihhKXt0aGlzLmk9Um4oZ2V0Q29tcHV0ZWRTdHlsZShkb2N1bWVudC5ib2R5KS5kaXJlY3Rpb249PT0icnRsIixhKTt0aGlzLmkuc3R5bGUudG9wPSIwJSI7dGhpcy5pLnN0eWxlLmxlZnQ9IjUwJSI7dGhpcy5pLnN0eWxlLnRyYW5zZm9ybT0idHJhbnNsYXRlKC01MCUsIC01MCUpIjt0aGlzLmkuc3R5bGUucG9zaXRpb249ImZpeGVkIjt0aGlzLmkuc3R5bGUuekluZGV4PSIxNTAwMCJ9fTsKJHE9ZnVuY3Rpb24oYSl7dmFyIGI9QXJyYXkuZnJvbShhLmkucGFyZW50RWxlbWVudC5jaGlsZHJlbikuZmlsdGVyKGM9PmMhPT1hLmkpO2Eudj1iLmZpbHRlcihjPT5jLmdldEF0dHJpYnV0ZSgiYXJpYS1oaWRkZW4iKT09PW51bGwpO2ZvcihsZXQgYyBvZiBhLnYpYy5zZXRBdHRyaWJ1dGUoImFyaWEtaGlkZGVuIiwidHJ1ZSIpO2Euaj1iLmZpbHRlcihjPT5jLmdldEF0dHJpYnV0ZSgiYXJpYS1oaWRkZW4iKT09PSJmYWxzZSIpO2ZvcihsZXQgYyBvZiBhLmopYy5zZXRBdHRyaWJ1dGUoImFyaWEtaGlkZGVuIiwidHJ1ZSIpO2EuQT1iLmZpbHRlcihjPT4hYy5oYXNBdHRyaWJ1dGUoImluZXJ0IikpO2ZvcihsZXQgYyBvZiBhLkEpYy5zZXRBdHRyaWJ1dGUoImluZXJ0IiwidHJ1ZSIpfTsKYXI9YXN5bmMgZnVuY3Rpb24oYSxiKXskcShhKTthLnByb2dyZXNzLmkuc3R5bGUuZGlzcGxheT0iYmxvY2siO2EuWS5sb2FkKGIpO2F3YWl0IGEuQi52KCk7ZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigia2V5ZG93biIsYS5DLHtjYXB0dXJlOiEwfSl9Owpicj1jbGFzc3tjb25zdHJ1Y3Rvcih7cGFyZW50OmEsamQ6YixsYzpjLHVjOmQseWM6ZX0pe3RoaXMuWT1uZXcgWXE7dGhpcy5DPWc9PntnLmtleT09PSJFc2NhcGUiJiYoZy5zdG9wUHJvcGFnYXRpb24oKSx0aGlzLmNsb3NlKCkpfTt2YXIgZj1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTt0aGlzLkI9dHlwZW9mIGRvY3VtZW50LmdldEFuaW1hdGlvbnM9PT0iZnVuY3Rpb24iP25ldyBXcShmKTpuZXcgWHEoZik7KDAsXy5IaykoKTt0aGlzLmk9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7dGhpcy5pLmNsYXNzTGlzdC5hZGQoIm9jV2ViU2NyaW0iKTtkJiZ0aGlzLmkuY2xhc3NMaXN0LmFkZCgib2NXZWJWaXNpYmxlU2NyaW0iKTt0aGlzLnByb2dyZXNzPW5ldyBacShiKTtmLmFwcGVuZENoaWxkKHRoaXMuWS5pKTtmLmFwcGVuZENoaWxkKHRoaXMucHJvZ3Jlc3MuaSk7Zi5jbGFzc0xpc3QuYWRkKCJvY1dlYkRpYWxvZyIpO2MmJmM+MCYmKGYuc3R5bGUuaGVpZ2h0PWAke2N9cHhgKTsKZi5jbGFzc0xpc3QuYWRkKGI/ImRhcmsiOiJsaWdodCIpO2U9PT0idG9wUmlnaHQiJiZmLmNsYXNzTGlzdC5hZGQoInBvc2l0aW9uVG9wUmlnaHQiKTt0aGlzLmkuYXBwZW5kQ2hpbGQoZik7YS5hcHBlbmRDaGlsZCh0aGlzLmkpfWFzeW5jIGNsb3NlKCl7YXdhaXQgdGhpcy5CLmNsb3NlKCk7dGhpcy5pLnJlbW92ZSgpO2lmKHRoaXMudil7Zm9yKGxldCBhIG9mIHRoaXMudilhLnJlbW92ZUF0dHJpYnV0ZSgiYXJpYS1oaWRkZW4iKTt0aGlzLnY9dm9pZCAwfWlmKHRoaXMuail7Zm9yKGxldCBhIG9mIHRoaXMuailhLnNldEF0dHJpYnV0ZSgiYXJpYS1oaWRkZW4iLCJmYWxzZSIpO3RoaXMuaj12b2lkIDB9aWYodGhpcy5BKXtmb3IobGV0IGEgb2YgdGhpcy5BKWEucmVtb3ZlQXR0cmlidXRlKCJpbmVydCIpO3RoaXMuQT12b2lkIDB9ZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcigia2V5ZG93biIsdGhpcy5DLHtjYXB0dXJlOiEwfSl9fTsKY3I9ZnVuY3Rpb24oYSxiKXtjbGVhclRpbWVvdXQoYS5BKTthLkE9c2V0VGltZW91dCgoKT0+e2Euaj09PTEmJihhLmNsb3NlKCksYigpKX0sNUUzKX07ZHI9ZnVuY3Rpb24oYSxiKXtpZihiLnNpemUhPT0wKXthLnYuY2xlYXIoKTtmb3IobGV0IFtjLGRdb2YgYi5lbnRyaWVzKCkpYS52LnNldChjLGQpfX07CmVyPWNsYXNze2NvbnN0cnVjdG9yKCl7dGhpcy5CPWRvY3VtZW50LmJvZHk7dGhpcy52PW5ldyBNYXA7dGhpcy5qPTB9YXN5bmMgbG9hZCh7dXJsOmEsTWI6Yixjb2xvclNjaGVtZTpjLHljOmQsbGM6ZSx1YzpmfSl7dGhpcy5pPW5ldyBicih7cGFyZW50OnRoaXMuQixqZDpjPT09ImRhcmsiLGxjOmUsdWM6Zix5YzpkfSk7dGhpcy5LPWI7dGhpcy5DPVBxKHRoaXMuaS5ZLmksKG5ldyBVUkwoYS50b1N0cmluZygpKSkub3JpZ2luLnRvU3RyaW5nKCkse0VoOigpPT57dGhpcy5qPT09MSYmKHRoaXMuaj0yLG1uKHRoaXMuaSksdGhpcy5pLnByb2dyZXNzLmkuc3R5bGUuZGlzcGxheT0ibm9uZSIsY2xlYXJUaW1lb3V0KHRoaXMuQSkpfSxFYjooKT0+e2IuSmgoKX0sb25NZXNzYWdlOmc9Pntzd2l0Y2goZy50eXBlKXtjYXNlICJzZXRSZXN1bHQiOmRyKHRoaXMsZy5yZXN1bHQpO2JyZWFrO2Nhc2UgImNsb3NlV2l0aFJlc3VsdCI6ZHIodGhpcyxnLnJlc3VsdCk7dGhpcy5jbG9zZSgpO2JyZWFrOwpjYXNlICJnb0JhY2tPckNsb3NlIjp0aGlzLmNsb3NlKCk7YnJlYWs7Y2FzZSAiY2xvc2UiOnRoaXMuY2xvc2UoKX19fSk7Y3IodGhpcyxiLkZoKTt0aGlzLmo9MTthd2FpdCBhcih0aGlzLmksYSl9Y2xvc2UoKXt2YXIgYTsoYT10aGlzLkMpPT1udWxsfHxhLmkoKTt2YXIgYjsoYj10aGlzLkspPT1udWxsfHxiLkRiKHRoaXMudik7bW4odGhpcy5pKTt0aGlzLmkucHJvZ3Jlc3MuaS5zdHlsZS5kaXNwbGF5PSJub25lIjt0aGlzLmkuY2xvc2UoKTt0aGlzLmo9MH19Owpmcj1hc3luYyBmdW5jdGlvbihhLGIsYyl7aWYoXy5Jay5oYXMoYi5yZXNvdXJjZUlkKSl7dmFyIGQ9eHEoYiksZSxmLGcsaCxrLGw7YXdhaXQgYS5pLmxvYWQoe3VybDp2cShkKSxNYjp7RmgoKXtjLkViKDApfSxKaCgpe2MuRWIoMSl9LHpkKCl7fSxEYihtKXtjLkRiKG0pfX0sY29sb3JTY2hlbWU6KGs9KGU9Yi5pYik9PW51bGw/dm9pZCAwOmUuY29sb3JTY2hlbWUpIT1udWxsP2s6ImxpZ2h0Iix5YzoobD0oZj1iLmliKT09bnVsbD92b2lkIDA6Zi55YykhPW51bGw/bDoiY2VudGVyIixsYzooZz1iLmliKT09bnVsbD92b2lkIDA6Zy5sYyx1YzooaD1iLmliKT09bnVsbD92b2lkIDA6aC51Y30pfWVsc2UgYy5FYigyKX07Z3I9Y2xhc3N7Y29uc3RydWN0b3IoKXt0aGlzLmk9bmV3IGVyfX07aHI9Y2xhc3MgZXh0ZW5kcyBfLlV7Y29uc3RydWN0b3IoYSl7c3VwZXIoYSl9fTsKaXI9ZnVuY3Rpb24oYSxiKXtyZXR1cm4oYyxkKT0+e2E6e2xldCBmPXtMZDohMH07ZCYmT2JqZWN0LmFzc2lnbihmLGQpO2M9Vm0oYyx2b2lkIDAsdm9pZCAwLGYpO3RyeXtsZXQgZz1uZXcgYSxoPWcuZGE7Wm0oYikoaCxjKTt2YXIgZT1nO2JyZWFrIGF9Y2F0Y2goZyl7aWYoZyBpbnN0YW5jZW9mIFJhbmdlRXJyb3IpdGhyb3cgbmV3IFN5bnRheEVycm9yO3Rocm93IGc7fWZpbmFsbHl7V20oYyl9ZT12b2lkIDB9cmV0dXJuIGV9fShjbGFzcyBleHRlbmRzIF8uVXtjb25zdHJ1Y3RvcihhKXtzdXBlcihhKX19LFswLGVxLGNxLGRxLGNxLGRxLFswLFsyLDMsNF0sZHEsZm4oZnVuY3Rpb24oYSxiLGMsZCl7aWYoYS5qIT09MCliPSExO2Vsc2V7e3ZhciBlPWEuaTtsZXQgZixnPTAsaD1hPTAsaz1lLmosbD1lLmk7ZG8gZj1rW2wrK10sZ3w9KGYmMTI3KTw8aCxoKz03O3doaWxlKGg8MzImJmYmMTI4KTtpZihoPjMyKWZvcihhfD0oZiYxMjcpPj40LGg9MztoPDMyJiZmJjEyODtoKz03KWY9CmtbbCsrXSxhfD0oZiYxMjcpPDxoO18udGwoZSxsKTtpZihmJjEyOCl0aHJvdyBFcnJvcigpO2U9Zz4+PjA7YT4+Pj0wO2E9Xy5FYSgpP18uUmEoQmlnSW50LmFzSW50Tig2NCwoQmlnSW50LmFzVWludE4oMzIsQmlnSW50KGEpKTw8QmlnSW50KDMyKSkrQmlnSW50LmFzVWludE4oMzIsQmlnSW50KGUpKSkpOl8uUmEoXy4kYShlLGEpKX1QcChiLGMsZCxhKTtiPSEwfXJldHVybiBifSxmdW5jdGlvbihhLGIsYyl7Yj1ubihiKTtpZihiIT1udWxsKXtzd2l0Y2godHlwZW9mIGIpe2Nhc2UgInN0cmluZyI6U3AoYil9aWYoYiE9bnVsbClzd2l0Y2goR24oYS5pLGMqOCksdHlwZW9mIGIpe2Nhc2UgIm51bWJlciI6YT1hLmk7Xy5YYShiKTskcChhLF8uVGEsXy5VYSk7YnJlYWs7Y2FzZSAiYmlnaW50Ijp0eXBlb2YgQmlnSW50NjRBcnJheSE9PSJ1bmRlZmluZWQiPyhZcHx8KFlwPW5ldyBCaWdJbnQ2NEFycmF5KDEpLFpwPW5ldyBVaW50MzJBcnJheShZcC5idWZmZXIpLFlwWzBdPUJpZ0ludCgxKSwKWHA9WnBbMF09PT0xKSxZcFswXT1iLGM9WHA/MDoxLGM9bmV3IFFwKFpwW2NdLFpwWzEtY10pKTooV3B8fChUcD1CaWdJbnQoTnVtYmVyLk1JTl9TQUZFX0lOVEVHRVIpLFVwPUJpZ0ludChOdW1iZXIuTUFYX1NBRkVfSU5URUdFUiksVnA9QmlnSW50KDQyOTQ5NjcyOTUpLFdwPUJpZ0ludCgzMikpLGI+PVRwJiZiPD1VcD8oYz1OdW1iZXIoYiksYz1uZXcgUXAoYyY0Mjk0OTY3Mjk1LE1hdGguZmxvb3IoYy80Mjk0OTY3Mjk2KSkpOihjPUJpZ0ludC5hc1VpbnROKDY0LGIpLGM9bmV3IFFwKE51bWJlcihjJlZwKSxOdW1iZXIoYz4+V3ApKSkpOyRwKGEuaSxjLmosYy5pKTticmVhaztkZWZhdWx0OmM9U3AoYiksJHAoYS5pLGMuaixjLmkpfX19LF8uVGUpLGZuKGZ1bmN0aW9uKGEsYixjLGQpe2lmKGEuaiE9PTApcmV0dXJuITE7UHAoYixjLGQsXy51bChhLmkpKTtyZXR1cm4hMH0sSG4sXy5VZSksZm4oZnVuY3Rpb24oYSxiLGMsZCl7aWYoYS5qIT09MilyZXR1cm4hMTtQcChiLGMsZCxEcChhKSk7CnJldHVybiEwfSxobixfLlNlKV1dKTtrcj1mdW5jdGlvbigpe3ZhciBhPW5ldyBqcjtyZXR1cm4gXy5hbChhLDEsXy5pYigwKSwwKX07anI9Y2xhc3MgZXh0ZW5kcyBfLlV7Y29uc3RydWN0b3IoYSl7c3VwZXIoYSl9fTtscj1mdW5jdGlvbihhKXtyZXR1cm4gYj0+e3ZhciBjPW5ldyBicTtEbihiLmRhLGMsUW0oem4seW4sQW4sYSkpO0ZuKGMsYy5pLmVuZCgpKTtiPW5ldyBVaW50OEFycmF5KGMuaik7dmFyIGQ9Yy52LGU9ZC5sZW5ndGgsZj0wO2ZvcihsZXQgZz0wO2c8ZTtnKyspe2xldCBoPWRbZ107Yi5zZXQoaCxmKTtmKz1oLmxlbmd0aH1jLnY9W2JdO3JldHVybiBifX0oWzAsZXEsY3FdKTttcj1jbGFzcyBleHRlbmRzIF8uWWN7Y29uc3RydWN0b3IoKXtzdXBlcihfLktrKX19O25yPWNsYXNzIGV4dGVuZHMgXy5ZY3tjb25zdHJ1Y3RvcihhKXtzdXBlcihfLkxrKTt0aGlzLmo9YX19O29yPWNsYXNzIGV4dGVuZHMgXy5ZY3tjb25zdHJ1Y3Rvcigpe3N1cGVyKF8uTWspfX07CnByPWE9PnR5cGVvZiBhPT0ic3RyaW5nIj9iPT4hIWIubWF0Y2hlcyYmYi5tYXRjaGVzKGEpOmE7cXI9KCk9PiEwO3NyPWZ1bmN0aW9uKGEpe2lmKGEgaW5zdGFuY2VvZiBycilhPWEuaTtlbHNlIGlmKGFbMF1pbnN0YW5jZW9mIHJyKXtsZXQgYj1uZXcgU2V0O2ZvcihsZXQgYz0wO2M8YS5sZW5ndGg7YysrKWZvcihsZXQgZCBvZiBhW2NdLmkpYi5hZGQoZCk7YT1ifXJldHVyblsuLi5hXX07cnI9ZnVuY3Rpb24oYSl7dGhpcy5pPXNyKGEpfTtfLnA9cnIucHJvdG90eXBlO18ucC5FYT1mdW5jdGlvbihhLGIsYz0hMSl7KGM/a246Xy5XZCkodGhpcy5pLGEsYik7cmV0dXJuIHRoaXN9O18ucC5zaXplPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuaS5sZW5ndGh9O18ucC56Yj1mdW5jdGlvbigpe3JldHVybiB0aGlzLmkubGVuZ3RoPT09MH07Xy5wLmdldD1mdW5jdGlvbihhKXtyZXR1cm4gdGhpcy5pW2FdfHxudWxsfTsKXy5wLm1hcD1mdW5jdGlvbihhLGIpe3JldHVybiBBcnJheS5wcm90b3R5cGUubWFwLmNhbGwodGhpcy5pLGEsYil9O18ucC5lcXVhbHM9ZnVuY3Rpb24oYSl7dmFyIGI7aWYoIShiPXRoaXM9PT1hKSlhOmlmKGI9dGhpcy5pLGE9YS5pLF8uSWQoYikmJl8uSWQoYSkmJmIubGVuZ3RoPT1hLmxlbmd0aCl7dmFyIGM9Yi5sZW5ndGg7Zm9yKGxldCBkPTA7ZDxjO2QrKylpZihiW2RdIT09YVtkXSl7Yj0hMTticmVhayBhfWI9ITB9ZWxzZSBiPSExO3JldHVybiBifTtfLnAuZmluZD1mdW5jdGlvbihhKXt2YXIgYj1bXTt0aGlzLkVhKGZ1bmN0aW9uKGMpe2M9Yy5xdWVyeVNlbGVjdG9yQWxsKFN0cmluZyhhKSk7Zm9yKGxldCBkPTA7ZDxjLmxlbmd0aDtkKyspYi5wdXNoKGNbZF0pfSk7cmV0dXJuIG5ldyBycihiKX07Cl8ucC5wYXJlbnQ9ZnVuY3Rpb24oKXt2YXIgYT1bXTt0aGlzLkVhKGZ1bmN0aW9uKGIpeyhiPWIucGFyZW50RWxlbWVudHx8bnVsbCkmJiFfLnhhKGEsYikmJmEucHVzaChiKX0pO3JldHVybiBuZXcgcnIoYSl9O18ucC52Yz1mdW5jdGlvbigpe3ZhciBhPVtdO3RoaXMuRWEoZnVuY3Rpb24oYil7Yj1iLmNoaWxkcmVuO2ZvcihsZXQgYz0wO2M8Yi5sZW5ndGg7YysrKWEucHVzaChiW2NdKX0pO3JldHVybiBuZXcgcnIoYSl9O18ucC5maWx0ZXI9ZnVuY3Rpb24oYSl7YT1fLkdqKHRoaXMuaSxwcihhKSk7cmV0dXJuIG5ldyBycihhKX07Xy5wLm5leHQ9ZnVuY3Rpb24oYSl7cmV0dXJuIHRyKHRoaXMsYSl9Owp2YXIgdHI9ZnVuY3Rpb24oYSxiKXt2YXIgYz1bXTt2YXIgZD1iP3ByKGIpOnFyO2EuRWEoZnVuY3Rpb24oZSl7KGU9ZS5uZXh0RWxlbWVudFNpYmxpbmcpJiZkKGUpJiZjLnB1c2goZSl9KTtyZXR1cm4gbmV3IHJyKGMpfSx1cj1mdW5jdGlvbihhKXthLkVhKGZ1bmN0aW9uKGIpe2IucmVtb3ZlQXR0cmlidXRlKCJhcmlhLWhpZGRlbiIpfSl9LHZyPWZ1bmN0aW9uKGEsYixjLGQ9ITEpe2Z1bmN0aW9uIGUoZixnLGgpe3ZhciBrPWc7ZyYmZy5wYXJlbnROb2RlJiYoaz1nLmNsb25lTm9kZSghMCkpO2YoayxoKX1pZihhLmkubGVuZ3RoPT0xKXtsZXQgZj1hLmlbMF0sZz1oPT5iKGgsZik7YyBpbnN0YW5jZW9mIHJyP2MuRWEoZyx2b2lkIDAsZCk6QXJyYXkuaXNBcnJheShjKT8oZD9rbjpfLldkKShjLGcpOmIoYyxmKTtyZXR1cm4gYX1yZXR1cm4gYS5FYShmdW5jdGlvbihmKXtjIGluc3RhbmNlb2YgcnI/Yy5FYShmdW5jdGlvbihnKXtlKGIsZyxmKX0pOkFycmF5LmlzQXJyYXkoYyk/Xy5XZChjLApmdW5jdGlvbihnKXtlKGIsZyxmKX0pOmUoYixjLGYpfSl9O3JyLnByb3RvdHlwZS5hZnRlcj1mdW5jdGlvbihhLGI9ITApe3JldHVybiB2cih0aGlzLGZ1bmN0aW9uKGMsZCl7YyYmZC5wYXJlbnROb2RlJiZkLnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKGMsZC5uZXh0U2libGluZyl9LGEsIWIpfTtyci5wcm90b3R5cGUuYmVmb3JlPWZ1bmN0aW9uKGEpe3JldHVybiB2cih0aGlzLGZ1bmN0aW9uKGIsYyl7YiYmYy5wYXJlbnROb2RlJiZjLnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKGIsYyl9LGEpfTt2YXIgd3I9ZnVuY3Rpb24oYSxiKXthIGluc3RhbmNlb2YgcnImJihiPWEuaSxhPW51bGwpO3RoaXMuaT1zcihhIT1udWxsP1thXTpiKX07Xy5IKHdyLHJyKTt3ci5wcm90b3R5cGUudmM9ZnVuY3Rpb24oKXtyZXR1cm4gbmV3IHJyKEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKHRoaXMuaVswXS5jaGlsZHJlbikpfTsKd3IucHJvdG90eXBlLkVhPWZ1bmN0aW9uKGEsYil7YS5jYWxsKGIsdGhpcy5pWzBdLDApO3JldHVybiB0aGlzfTt3ci5wcm90b3R5cGUuc2l6ZT1mdW5jdGlvbigpe3JldHVybiAxfTt4cj1mdW5jdGlvbihhLGIpe2EuZG9tYWluPWI7cmV0dXJuIGF9O3lyPWZ1bmN0aW9uKGEsYil7YS5wb3J0PWJ9O3pyPWZ1bmN0aW9uKGEsYil7YS5IPWI7cmV0dXJuIGF9O0FyPWZ1bmN0aW9uKGEsYil7YS5MPWI7cmV0dXJuIGF9O0JyPWZ1bmN0aW9uKGEpe3JldHVybiBfLkFqKF8uemooXy55aihuZXcgXy54aixhLkgpLGEuZG9tYWluKSxhLnBvcnQpfTsKQ3I9ZnVuY3Rpb24oYSl7YT1hLlk7YS5zdHlsZS5ib3R0b209Ii0xMDAwcHgiO2Euc3R5bGUucG9zaXRpb249ImZpeGVkIjthLnN0eWxlLnJpZ2h0PSItMTAwMHB4IjthLnN0eWxlLmJvcmRlcj0iIjthLnN0eWxlLmhlaWdodD0iIjthLnN0eWxlLmxlZnQ9IiI7YS5zdHlsZS50b3A9IiI7YS5zdHlsZS53aWR0aD0iIjthLnN0eWxlLnpJbmRleD0iIjthLnNldEF0dHJpYnV0ZSgiYXJpYS1oaWRkZW4iLCJ0cnVlIik7YS5zZXRBdHRyaWJ1dGUoImFyaWEtbW9kYWwiLCJmYWxzZSIpfTsKRHI9ZnVuY3Rpb24oYSl7YS5LPShuZXcgd3IoYS5ZLnBhcmVudEVsZW1lbnQpKS52YygpLmZpbHRlcihiPT5iLmdldEF0dHJpYnV0ZSgiYXJpYS1oaWRkZW4iKT09PW51bGwmJmIhPT1hLlkpO2EuSy5FYShiPT57Yi5zZXRBdHRyaWJ1dGUoImFyaWEtaGlkZGVuIiwidHJ1ZSIpfSk7YS5DPShuZXcgd3IoYS5ZLnBhcmVudEVsZW1lbnQpKS52YygpLmZpbHRlcihiPT5iLmdldEF0dHJpYnV0ZSgiYXJpYS1oaWRkZW4iKT09PSJmYWxzZSImJmIhPT1hLlkpO2EuQy5FYShiPT57Yi5zZXRBdHRyaWJ1dGUoImFyaWEtaGlkZGVuIiwidHJ1ZSIpfSk7YS5EPShuZXcgd3IoYS5ZLnBhcmVudEVsZW1lbnQpKS52YygpLmZpbHRlcihiPT4hYi5oYXNBdHRyaWJ1dGUoImluZXJ0IikmJmIhPT1hLlkpO2EuRC5FYShiPT57Yi5zZXRBdHRyaWJ1dGUoImluZXJ0IiwidHJ1ZSIpfSl9OwpGcj1mdW5jdGlvbihhLGI9ITApe2EuWSE9PXZvaWQgMCYmKEVyKGEpLGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5zdHlsZS5vdmVyc2Nyb2xsQmVoYXZpb3I9YS5SLGEuaS5zdHlsZS5vdmVyc2Nyb2xsQmVoYXZpb3I9YS5TLGEuaS5zdHlsZS5vdmVyZmxvdz1hLlAsYS5YIT09dm9pZCAwJiYoYS5YLmZvY3VzKCksYS5YPXZvaWQgMCksYj9DcihhKTooYS5pLnJlbW92ZUNoaWxkKGEuWSksYS5ZPXZvaWQgMCxhLkE9dm9pZCAwLGEuRz12b2lkIDApLGEuTT0hMSl9OwpHcj1hc3luYyBmdW5jdGlvbihhLGIpe3ZhciBjPVJuKGdldENvbXB1dGVkU3R5bGUoYS5pKS5kaXJlY3Rpb249PT0icnRsIik7YS5pLmFwcGVuZENoaWxkKGMpO2RvY3VtZW50LmFjdGl2ZUVsZW1lbnQgaW5zdGFuY2VvZiBIVE1MRWxlbWVudCYmKGEuWD1kb2N1bWVudC5hY3RpdmVFbGVtZW50KTt0cnl7YXdhaXQgYS5OKGIpO2EuaS5yZW1vdmVDaGlsZChjKTthLlA9YS5pLnN0eWxlLm92ZXJmbG93O2EuUj1kb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuc3R5bGUub3ZlcnNjcm9sbEJlaGF2aW9yO2EuUz1hLmkuc3R5bGUub3ZlcnNjcm9sbEJlaGF2aW9yO2RvY3VtZW50LmRvY3VtZW50RWxlbWVudC5zdHlsZS5vdmVyc2Nyb2xsQmVoYXZpb3I9ImNvbnRhaW4iO2EuaS5zdHlsZS5vdmVyc2Nyb2xsQmVoYXZpb3I9ImNvbnRhaW4iO2EuaS5zdHlsZS5vdmVyZmxvdz0iaGlkZGVuIjtsZXQgZD1hLlk7ZC5zdHlsZS5ib3R0b209IjAiO2Quc3R5bGUuYm9yZGVyPSJub25lIjtkLnN0eWxlLmhlaWdodD0KIjEwMCUiO2Quc3R5bGUubGVmdD0iMCI7ZC5zdHlsZS5wb3NpdGlvbj1hLlY7ZC5zdHlsZS5yaWdodD0iMCI7ZC5zdHlsZS50b3A9IjAiO2Quc3R5bGUud2lkdGg9IjEwMCUiO2Quc3R5bGUuekluZGV4PSIyMjAyIjtkLnNldEF0dHJpYnV0ZSgiYXJpYS1oaWRkZW4iLCJmYWxzZSIpO2Quc2V0QXR0cmlidXRlKCJhcmlhLW1vZGFsIiwidHJ1ZSIpO2EuTT0hMDtEcihhKX1jYXRjaChkKXt0aHJvdyBhLmkucmVtb3ZlQ2hpbGQoYyksWG4oYS5qZCgpKSxGcihhLCExKSxFcnJvcigiYmEiLHtjYXVzZTpkfSk7fX07RXI9ZnVuY3Rpb24oYSl7YS5LJiYodXIoYS5LKSxhLks9dm9pZCAwKTthLkMmJihhLkMuRWEoYj0+e2Iuc2V0QXR0cmlidXRlKCJhcmlhLWhpZGRlbiIsImZhbHNlIil9KSxhLkM9dm9pZCAwKTthLkQmJihhLkQuRWEoYj0+e2IucmVtb3ZlQXR0cmlidXRlKCJpbmVydCIpfSksYS5EPXZvaWQgMCl9OwpJcj1jbGFzc3tjb25zdHJ1Y3Rvcigpe3ZhciBhPXdpbmRvdzt0aGlzLlo9Xy5Ka1s3M107dGhpcy5qPWE7dGhpcy5IPSJodHRwcyI7dGhpcy5kb21haW49Im15YWNjb3VudC5nb29nbGUuY29tIjt0aGlzLkw9dGhpcy5wb3J0PTA7dGhpcy5jb2xvclNjaGVtZT0iIjt0aGlzLmk9ZG9jdW1lbnQuYm9keTt0aGlzLlY9ImZpeGVkIjt0aGlzLk09ITE7dGhpcy5SPXRoaXMuUz10aGlzLlA9IiI7dGhpcy52PW5ldyBfLkQ7dGhpcy5qLmxvY2F0aW9uLmhvc3RuYW1lLmluZGV4T2YoInlvdXR1YmUuY29tIik+PTAmJih0aGlzLmRvbWFpbj0icHJvZmlsZXdpZGdldHMueW91dHViZS5jb20iKX1OKGEpe2lmKHRoaXMuQT09PXZvaWQgMCl7bGV0IGI9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiaWZyYW1lIik7dGhpcy5ZPWI7WW4oYixhKTt0aGlzLkE9bmV3IFByb21pc2UoKGMsZCk9Pnt2YXIgZT0hMSxmPWc9PntnLnN0b3BQcm9wYWdhdGlvbigpO2IucmVtb3ZlRXZlbnRMaXN0ZW5lcigiZXJyb3IiLApmKTtiLnJlbW92ZUV2ZW50TGlzdGVuZXIoInNlY3VyaXR5cG9saWN5dmlvbGF0aW9uIixmKTtkKEVycm9yKCIkIix7Y2F1c2U6Z30pKX07Yi5hZGRFdmVudExpc3RlbmVyKCJlcnJvciIsZik7Yi5hZGRFdmVudExpc3RlbmVyKCJzZWN1cml0eXBvbGljeXZpb2xhdGlvbiIsZik7c2V0VGltZW91dCgoKT0+e2V8fGQoRXJyb3IoImFhIikpfSwzRTQpO0hyKHRoaXMsYiwoKT0+e2U9ITA7Yi5yZW1vdmVFdmVudExpc3RlbmVyKCJlcnJvciIsZik7Yi5yZW1vdmVFdmVudExpc3RlbmVyKCJzZWN1cml0eXBvbGljeXZpb2xhdGlvbiIsZik7YygpfSl9KTtDcih0aGlzKTthPUJyKHRoaXMpLnRvU3RyaW5nKCk7Yi5zZXRBdHRyaWJ1dGUoImFsbG93IixgY2FtZXJhICR7YX07IGRpc3BsYXktY2FwdHVyZSAke2F9YCk7dGhpcy5pLmFwcGVuZENoaWxkKGIpfXJldHVybiB0aGlzLkF9amQoKXtyZXR1cm4gdGhpcy5jb2xvclNjaGVtZT09PSJkYXJrInx8d2luZG93Lm1hdGNoTWVkaWEoIihwcmVmZXJzLWNvbG9yLXNjaGVtZTogZGFyaykiKS5tYXRjaGVzJiYKdGhpcy5jb2xvclNjaGVtZSE9PSJsaWdodCJ9fTtIcj1mdW5jdGlvbihhLGIsYyl7SHEoe2Rlc3RpbmF0aW9uOmEuaixZOmIsb3JpZ2luOl8uQWooXy56aihfLnlqKG5ldyBfLnhqLGEuSCksYS5kb21haW4pLGEucG9ydCkudG9TdHJpbmcoKSxvYjoib3dpIixvbk1lc3NhZ2U6ZD0+e2I9PT1hLlkmJihjIT09dm9pZCAwJiZjKCksSnIoYSxiKSxhLk0mJmEuRy5zZW5kKGxyKGtyKCkpKSx6cShkKSxIcihhLGIpKX19KX07S3I9ZnVuY3Rpb24oYSxiKXthLnYuSShfLk1rLGIpO3JldHVybiBhfTtMcj1mdW5jdGlvbihhLGIpe2Eudi5JKF8uTGssYik7cmV0dXJuIGF9OwpNcj1mdW5jdGlvbihhKXt2YXIgYj1bYS5vcmlnaW4/YS5vcmlnaW46Xy5BaihfLnpqKF8ueWoobmV3IF8ueGosYS5qLmxvY2F0aW9uLnByb3RvY29sKSxhLmoubG9jYXRpb24uaG9zdG5hbWUpLGEuai5sb2NhdGlvbi5wb3J0KS50b1N0cmluZygpXTthLk8mJmIucHVzaCguLi5hLk8pO3ZhciBjPW5ldyBfLnhqKGEuai5sb2NhdGlvbi5ocmVmKSxkPWEuQj9hLkI6YS5GLmluY2x1ZGVzKCJwbyIpPyJwcm9maWxlLXBpY3R1cmUvYXJ0IjoicHJvZmlsZS1waWN0dXJlIjtkPV8uQmooQnIoYSksZCk7QXJyYXkuaXNBcnJheShiKXx8KGI9W1N0cmluZyhiKV0pO18uVWooZC5pLCJvcmlnaW4iLGIpO2EuQiYmXy5PaihkLCJzdGFydFBhdGgiLGEuQik7YS5MPjAmJl8uT2ooZCwiYXV0aHVzZXIiLGEuTCk7YS5VIT09dm9pZCAwJiZfLk9qKGQsInBhZ2VJZCIsYS5VKTtfLk9qKGQsImhvc3RJZCIsYS5aKTthLmNhIT09dm9pZCAwJiZfLk9qKGQsImpzbW9kZSIsYS5jYSk7YS5lYSE9PXZvaWQgMCYmCl8uT2ooZCwicmVjdGFuZ2xlUmF0aW8iLGEuZWEpO2EuRi5sZW5ndGg+MCYmXy5PaihkLCJvcHRzIixhLkYuam9pbigiLCIpKTt0cnl7Yj1bInV0bV9zb3VyY2UiLCJ1dG1fbWVkaXVtIiwidXRtX2NhbXBhaWduIiwidXRtX2NvbnRlbnQiXTtmb3IobGV0IGcgb2YgYiljLmkuZ2V0KGcpJiZfLk9qKGQsZyxjLmkuZ2V0KGcpKTtsZXQgZSxmPShlPWEuZ2EpIT1udWxsP2U6Yy5pLmdldCgiaGwiKTtmIT09dm9pZCAwJiZfLk9qKGQsImhsIixmKX1jYXRjaChlKXtpZighKGUgaW5zdGFuY2VvZiBVUklFcnJvcikpdGhyb3cgZTt9YS5jb2xvclNjaGVtZSYmXy5PaihkLCJ0aGVtZSIsYS5jb2xvclNjaGVtZSk7YS5zdHlsZSYmXy5PaihkLCJzdHlsZSIsYS5zdHlsZSk7cmV0dXJuIGR9OwpKcj1mdW5jdGlvbihhLGIpe2EuRz1IcSh7ZGVzdGluYXRpb246YS5qLFk6YixvcmlnaW46QnIoYSkudG9TdHJpbmcoKSxvYjoib3ciLG9uTWVzc2FnZTpjPT57Yz1pcihjLmRhdGEpO2lmKGI9PT1hLlkpc3dpdGNoKF8uTyhjLDEpKXtjYXNlIDE6YS52LmRpc3BhdGNoRXZlbnQobmV3IG9yKTtGcihhKTticmVhaztjYXNlIDI6YS52LmRpc3BhdGNoRXZlbnQobmV3IG1yKF8uTihjLDQpLF8uTihjLDIpLF8uTyhjLDUpLF8uSihjLGhyLDYpKSk7YnJlYWs7Y2FzZSAwOmxldCBkO2Eudi5kaXNwYXRjaEV2ZW50KG5ldyBucihfLk4oYywyKSwoZD1fLk8oYywzKSkhPW51bGw/ZDowKSk7YnJlYWs7Y2FzZSAzOmEudi5kaXNwYXRjaEV2ZW50KG5ldyBvciksRnIoYSwhMSl9fX0pfTsKTnI9YXN5bmMgZnVuY3Rpb24oYSl7YS5CPWEuRi5pbmNsdWRlcygicG8iKT8icHJvZmlsZS1waWN0dXJlL2FydCI6InByb2ZpbGUtcGljdHVyZSI7YXdhaXQgR3IoYSxNcihhKS50b1N0cmluZygpKTtpZihhLkcpe3ZhciBiPWEuRyxjPWIuc2VuZCxkPWtyKCk7YT1fLnkoZCwyLGEuQik7Yy5jYWxsKGIsbHIoYSkpfX07T3I9Y2xhc3MgZXh0ZW5kcyBJcntjb25zdHJ1Y3Rvcigpe3N1cGVyKCk7dGhpcy5GPVtdO3RoaXMuc3R5bGU9IiJ9Tigpe3JldHVybiB0aGlzLkE9PT12b2lkIDA/c3VwZXIuTihNcih0aGlzKS50b1N0cmluZygpKTp0aGlzLkF9fTtQcj0vXC93aWRnZXRcLyguKz8pKFwvfFw/fCQpLzsKUXI9ZnVuY3Rpb24oYSxiKXt2YXIgYz1gJHtkb2N1bWVudC5sb2NhdGlvbi5wcm90b2NvbH0vLyR7ZG9jdW1lbnQubG9jYXRpb24uaG9zdH1gO2M9PT0iY2hyb21lLXVudHJ1c3RlZDovL25ldy10YWItcGFnZSImJihjPVsiY2hyb21lLXVudHJ1c3RlZDovL25ldy10YWItcGFnZSIsImNocm9tZTovL25ldy10YWItcGFnZSJdKTtpZihhLkcpe2xldCBkPV8uZWsoKXx8bnVsbDtkJiYoYz1bYyxkXS5mbGF0KCkpfWM9e29yaWdpbjpjfTthLmkmJihjLmNuPWEuaSk7YS5DIT09MCYmKGMucGlkPWEuQyk7YS5LIT09MCYmKGMuc3BpZD1hLkspO2EuRCYmKGMuY29lcD0xKTthPV8uY2soYS5BLG5ldyBNYXAoT2JqZWN0LmVudHJpZXMoYykpKTtiJiYoYT1fLmNrKGEsbmV3IE1hcChPYmplY3QuZW50cmllcyhiKSkpKTtyZXR1cm4gYX07ClJyPWZ1bmN0aW9uKGEsYixjLGQ9e30sZT0hMSxmPW51bGwsZz1udWxsKXtpZighYS5GKXt2YXIgaD1fLlBmKCJJRlJBTUUiKTtoLnNldEF0dHJpYnV0ZSgicm9sZSIsInByZXNlbnRhdGlvbiIpO18uVWgoaCwiaGVpZ2h0IiwiMTAwJSIpO18uVWgoaCwid2lkdGgiLCIxMDAlIik7Xy5VaChoLCJjb2xvci1zY2hlbWUiLCJsaWdodCIpO18uVWgoaCwidmlzaWJpbGl0eSIsImhpZGRlbiIpO2guZnJhbWVCb3JkZXI9MDtoLnNjcm9sbGluZz0ibm8iO2guYWRkRXZlbnRMaXN0ZW5lcigibG9hZCIsYik7Yj1hLmk7aC5uYW1lPWI7dmFyIGs9ZT9fLk5rOlFyKGEsZCk7Xy5aaihoLGspO2EucGFyZW50LmFwcGVuZENoaWxkKGgpO2lmKGUpe2U9Xy5QZigiRk9STSIpO2UubWV0aG9kPSJQT1NUIjtlLnRhcmdldD1iO2Uuc3R5bGUuZGlzcGxheT0ibm9uZSI7SW4oZSxRcihhKS50b1N0cmluZygpKTtmJiYoZC5fZWQ9Zi5sYSgpKTtnJiYoZC5fY3JwPWcubGEoKSk7Zm9yKGxldCBbbCxtXW9mIE9iamVjdC5lbnRyaWVzKGQpKWQ9CmwsZj1tLGc9Xy5QZigiSU5QVVQiKSxnLnR5cGU9ImhpZGRlbiIsZy5uYW1lPWQsZy52YWx1ZT1mLGUuYXBwZW5kQ2hpbGQoZyk7YS5wYXJlbnQuYXBwZW5kQ2hpbGQoZSk7ZS5zdWJtaXQoKTthLnBhcmVudC5yZW1vdmVDaGlsZChlKX1hLkY9SHEoe2Rlc3RpbmF0aW9uOndpbmRvdyxZOmgsb3JpZ2luOmEuQixvYjoib2dpXyIrYS5pLG9uTWVzc2FnZTpjfSk7YS52PWh9fTtTcj1mdW5jdGlvbihhLGIpe2lmKGEuailyZXR1cm4gYS5qO2Euaj1IcSh7ZGVzdGluYXRpb246d2luZG93LFk6YS52LG9yaWdpbjphLkIsb2I6Im9nZF8iK2EuaSxvbk1lc3NhZ2U6Yn0pO3JldHVybiBhLmp9O1RyPWZ1bmN0aW9uKGEpe3JldHVybiBhLnY/YS52Om51bGx9OwpVcj1jbGFzc3tjb25zdHJ1Y3RvcihhLGIsYyxkLGUsZil7dGhpcy5wYXJlbnQ9YTt0aGlzLkE9Yjt0aGlzLkM9Yzt0aGlzLkQ9ZDt0aGlzLkc9ZTt0aGlzLks9Zj9mOjA7YT1fLlhqKHRoaXMuQSkudG9TdHJpbmcoKS5tYXRjaChfLmRkKTt0aGlzLkI9Xy5obChhWzFdLG51bGwsYVszXSxhWzRdKTt0aGlzLmk9KGE9UHIuZXhlYyhfLlhqKFFyKHRoaXMpKS50b1N0cmluZygpKSk/YVsxXToiIn19O1ZyPWNsYXNzIGV4dGVuZHMgXy5ZY3tjb25zdHJ1Y3RvcihhLGIpe3N1cGVyKGEsYik7dGhpcy5kYXRhPW51bGx9fTtYcj1mdW5jdGlvbihhKXtScihhLmksKCk9PnthLmRpc3BhdGNoRXZlbnQoImxvYWRlZCIpfSxiPT57V3IoYSxiKX0sYS5GLGEuSCxhLmosYS5HKTthLnY9U3IoYS5pLGI9PntXcihhLGIpfSk7Zm9yKGxldCB7bWVzc2FnZTpiLGRhdGE6Y31vZiBhLkQpYS5zZW5kTWVzc2FnZShiLGMpfTsKWXI9ZnVuY3Rpb24oYSl7dmFyIGI9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgibGluayIpLGM9Xy5YaihRcihhLmksYS5GKSkudG9TdHJpbmcoKTtiLmNyb3NzT3JpZ2luPSJ1c2UtY3JlZGVudGlhbHMiO18ucWUmJihiLmFkZEV2ZW50TGlzdGVuZXIoImxvYWQiLCgpPT57YS5DPSEwfSksYi5hZGRFdmVudExpc3RlbmVyKCJlcnJvciIsKCk9PnthLkI9ITB9KSk7TG4oYixjLCJwcmVmZXRjaCIpO2RvY3VtZW50LmhlYWQuYXBwZW5kQ2hpbGQoYil9O1pyPWZ1bmN0aW9uKGEpe2RvY3VtZW50LmFjdGl2ZUVsZW1lbnQhPT1UcihhLmkpJiYoYT1UcihhLmkpKSYmYS5mb2N1cygpfTskcj1mdW5jdGlvbihhLGIpe2lmKGE9VHIoYS5pKSlhLnN0eWxlLnZpc2liaWxpdHk9Yj8iIjoiaGlkZGVuIn07YXM9ZnVuY3Rpb24oYSxiLGM9ITEpe3ZhciBkPXt9O2Qua2V5Ym9hcmRBY3Rpb249YzthLnNlbmRNZXNzYWdlKGI/Im9wZW4iOiJjbG9zZSIsZCl9OwpfLmJzPWZ1bmN0aW9uKGEsYil7dmFyIGM9e307Yy5lbmFibGVkPWI7YS5zZW5kTWVzc2FnZSgiZG0iLGMpfTtXcj1mdW5jdGlvbihhLGIpe3ZhciBjO2EuaiYmKChjPWIuZGF0YSk9PW51bGw/dm9pZCAwOmMuZXZlbnQpPT09Il9zdGFydHVwbG9hZGVkIiYmenEoYix7X2VkOmEuai5sYSgpfSk7dmFyIGQ7Yz0oZD1iLmRhdGEpPT1udWxsP3ZvaWQgMDpkLmV2ZW50O2lmKHR5cGVvZiBjPT09InN0cmluZyIpe2Q9bmV3IFZyKGMsYSk7bGV0IGU7ZC5kYXRhPShlPWIuZGF0YSk9PW51bGw/dm9pZCAwOmUuZGF0YTthLmRpc3BhdGNoRXZlbnQoZCl9fTsKJG89Y2xhc3MgZXh0ZW5kcyBfLkR7Y29uc3RydWN0b3IoYSxiLGMsZCxlLGYsZyxoLGs9e30sbD1udWxsKXtzdXBlcigpO3RoaXMuQT0hMTt0aGlzLkQ9W107dGhpcy5CPXRoaXMuQz0hMTt0aGlzLmk9bmV3IFVyKGEsXy5mayhiKXx8KDAsXy51aylgYCwvXlxkKyQvLnRlc3QoYyk/TnVtYmVyKGMpOjAsZyxoLC9eXGQrJC8udGVzdChkKT9OdW1iZXIoZCk6MCk7dGhpcy5GPWs7dGhpcy5qPWU7dGhpcy5HPWw7dGhpcy5IPWZ9c2VuZE1lc3NhZ2UoYSxiKXt0aGlzLnY/KGE9e2V2ZW50OmF9LGIhPT12b2lkIDAmJihhLmRhdGE9YiksdGhpcy52LnNlbmQoYSkpOnRoaXMuRC5wdXNoKHttZXNzYWdlOmEsZGF0YTpifSl9fTtjcz1udWxsO2RzPSIiO2VzPSIiOwpmcz1mdW5jdGlvbihhKXtpZihhLmomJmNzKXt2YXIgYj1lcyxjPWRzLGQ9W2NzLGIsY10uZmlsdGVyKEJvb2xlYW4pLmpvaW4oIiwgIik7YS5qLnNldEF0dHJpYnV0ZSgiYXJpYS1sYWJlbCIsZCk7YS5pJiYoYS5pLnRleHRDb250ZW50PSIiLGImJmEuaS5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShiKSksYiYmYyYmYS5pLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImJyIikpLGMmJmEuaS5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShjKSkpfX07Z3M9ZnVuY3Rpb24oYSxiKXtkcz1iP2I6IiI7ZnMoYSl9O2hzPWNsYXNze2NvbnN0cnVjdG9yKCl7dGhpcy5pPXRoaXMuaj1udWxsO3RoaXMuaj1kb2N1bWVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCJnYl83YSIpWzBdfHxudWxsO3RoaXMuaT1kb2N1bWVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCJnYl9aYyIpWzBdfHxudWxsO3RoaXMuaiYmIWNzJiYoY3M9dGhpcy5qLmdldEF0dHJpYnV0ZSgiYXJpYS1sYWJlbCIpKX19Owokbj1mdW5jdGlvbihhKXtpZihhLmkpe2xldCBiPWEuRC5nZXQoYS5pKTthPWEuQTtlcz1ifHwiIjtmcyhhKX19O2FvPWZ1bmN0aW9uKGEsYil7dmFyIGM9Xy5GZigiZ2JfWCIpO2I/Xy5MaChjLCJnYl9XYSIpOl8uTWgoYywiZ2JfV2EiKTthPWEuQjtiP18uTWgoYSwiZ2JfMSIpOl8uTGgoYSwiZ2JfMSIpfTtqcz1mdW5jdGlvbihhKXt2YXIgYj1fLlg7aWYoIWIuSmEuZ2V0KGEpJiYhYi5qKXtiLkphLnNldChhLCEwKTtpZihiLmk9PT1hKXthbyhiLCExKTt2YXIgYz1iLkE7ZXM9IiI7ZnMoYyk7Yi5pPW51bGx9YT09PSJjIiYmaXMmJmlzKCl9fTtybz1mdW5jdGlvbigpe3ZhciBhPV8uWDtpZighYS5qKXthLkIucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChhLkIpO3ZhciBiPV8uRmYoImdiX1dhIik7YiYmXy5NaChiLCJnYl9XYSIpO2I9YS5BO2VzPSIiO2ZzKGIpO2Euaj0hMDtfLiRnKGEuQy5DYSxhLkspfX07CnRvPWNsYXNze2NvbnN0cnVjdG9yKGEpe3ZhciBiPWtzLGM9bHM7dGhpcy5CPV8uRmYoImdiXzAiKTt0aGlzLnY9dGhpcy5qPSExO3RoaXMuRj1jO3RoaXMuRD1iO3RoaXMuQT1uZXcgaHM7dGhpcy5DPW5ldyBfLnprO3RoaXMuSmE9bmV3IE1hcDt0aGlzLkphLnNldCgiYyIsITEpO3RoaXMuSmEuc2V0KCJhIiwhMSk7dGhpcy5KYS5zZXQoInNjIiwhMSk7dGhpcy5KYS5zZXQoInN3IiwhMSk7dGhpcy5KYS5zZXQoInNhIiwhMSk7KHRoaXMuaT1hKSYmJG4odGhpcyk7dGhpcy5LPXRoaXMuQy5JKCJ2aXNpYmlsaXR5Y2hhbmdlIixkPT57aWYoIXRoaXMuailzd2l0Y2goZC5lZSl7Y2FzZSAiaGlkZGVuIjp0aGlzLnY9ITA7YnJlYWs7Y2FzZSAidmlzaWJsZSI6dGhpcy52JiYodGhpcy52PSExLHRoaXMuaSYmKGQ9dGhpcy5GLmdldCh0aGlzLmkpKSYmZCgpKX19KX1aYSgpe3JldHVybiB0aGlzLml9fTsKXy5tcz1mdW5jdGlvbihhLGIsYz0hMSxkPSExKXt2YXIgZSxmPShlPWI9PW51bGw/dm9pZCAwOl8uTyhiLDEpKSE9bnVsbD9lOjA7ZiE9PWEudiYmKChlPWEuQy5nZXQoZikpPyhhLml8fChhLmk9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiaW1nIiksYS5pLmNsYXNzTGlzdC5hZGQoImdiX1YiKSxhLmkuYWx0PSIiLGEuaS5zZXRBdHRyaWJ1dGUoImFyaWEtaGlkZGVuIiwidHJ1ZSIpLGEuaS5zdHlsZS5kaXNwbGF5PSJub25lIiksYz8oSm4oYS5pLF8ueWMoXy5RaykpLGEuai5jbGFzc0xpc3QucmVtb3ZlKCJnYl9VIikpOkpuKGEuaSxfLnljKGUpKSxjfHwoYS5qLmNvbnRhaW5zKGEuaSl8fGEuai5pbnNlcnRCZWZvcmUoYS5pLGEuai5maXJzdENoaWxkKSxhLmkuc3R5bGUucmVtb3ZlUHJvcGVydHkoImRpc3BsYXkiKSxhLmouY2xhc3NMaXN0LmFkZCgiZ2JfVSIpLGdzKGEuQSxhLkspKSxhLnYhPT1mJiZkJiZhLkIubG9nKDE2OSxfLkxnKG5ldyBfLlYsXy5IZyhfLkdnKF8uTyhiLDEpKSwKMikpKSxhLnY9Zik6KGEudj1udWxsLGEuaSYmKGEuaS5zdHlsZS5kaXNwbGF5PSJub25lIixiPWEuQSxkcz0iIixmcyhiKSksYS5qLmNsYXNzTGlzdC5yZW1vdmUoImdiX1UiKSkpfTtucz1jbGFzc3tjb25zdHJ1Y3RvcihhLGIsYyl7dGhpcy5qPWE7dGhpcy5CPWI7dGhpcy5LPWM7dGhpcy52PXRoaXMuaT1udWxsO3RoaXMuQz1uZXcgTWFwKE9iamVjdC5lbnRyaWVzKF8uUGspLmZpbHRlcigoWyxkXSk9PmQpLm1hcCgoW2QsZV0pPT5bTnVtYmVyKGQpLGVdKSk7dGhpcy5BPW5ldyBoc319Owpvcz1mdW5jdGlvbihhKXtpZihhKXtpZihfLk4oYSwxKSE9PSJodHRwcyIpdGhyb3cgRXJyb3IoImNhYCIrXy5OKGEsMSkpO3N3aXRjaChfLk4oYSwyKSl7Y2FzZSAibXlhY2NvdW50Lmdvb2dsZS5jb20iOnJldHVybigwLF8udWspYGh0dHBzOi8vbXlhY2NvdW50Lmdvb2dsZS5jb21gO2Nhc2UgIm15YWNjb3VudC1kZXYuY29ycC5nb29nbGUuY29tIjpyZXR1cm4oMCxfLnVrKWBodHRwczovL215YWNjb3VudC1kZXYuY29ycC5nb29nbGUuY29tYDtkZWZhdWx0OnRocm93IEVycm9yKCJkYWAiK18uTihhLDIpKTt9fX07cHM9Y2xhc3N7Y29uc3RydWN0b3IoYSl7dGhpcy56ZD0oKT0+e307dmFyIGIsYzt0aGlzLlFhPShjPWE9PW51bGw/dm9pZCAwOihiPV8uTShhLDYpKT09bnVsbD92b2lkIDA6Yi50b1N0cmluZygpKSE9bnVsbD9jOiIwIjt0aGlzLmk9b3MoYSk7dGhpcy5qPW5ldyBncjt0aGlzLkRiPSgpPT57fTt0aGlzLkViPSgpPT57fX19O3FzPV8ucmMoY2xhc3MgZXh0ZW5kcyBfLlV7Y29uc3RydWN0b3IoYSl7c3VwZXIoYSl9fSk7CnFvPVsiYyIsInNjIiwic2EiLCJhIiwic3ciXTt1cz1mdW5jdGlvbihhKXtyZXR1cm4hIV8uWCYmXy5YLlphKCk9PWEmJiFfLlguSmEuZ2V0KGEpfTt3bz1mdW5jdGlvbigpe18uWD8oanMoImEiKSxnbyYmIV8uWC5KYS5nZXQoImMiKXx8cm8oKSk6Xy51by5hZGQoImEiKX07eG89ZnVuY3Rpb24oKXtpZighXy5lbylpZihfLlgpe3ZhciBhPV8uWC5aYSgpO2pzKCJzYyIpO2pzKCJzdyIpO2lmKGE9PSJzYyJ8fGE9PSJzdyIpYm8ubG9nKGE9PT0ic2MiPzE0MToxNDIpLHNvKCl9ZWxzZSBfLnVvLmFkZCgic2MiKSxfLnVvLmFkZCgic3ciKX07dm89ZnVuY3Rpb24oKXtfLmVvfHwoXy5YP18uWCYmKGpzKCJjIiksXy5YLlphKCl8fHNvKCkpOl8udW8uYWRkKCJjIikpfTsKdnM9ZnVuY3Rpb24oYSxiLGMpe2lmKCFfLlgpe3ZhciBkO2lmKF8ucnM9KChkPXRwKGMpKT09bnVsbD92b2lkIDA6Xy5MKGQsNSkpfHwhMSl7dmFyIGU7aW89KChlPXRwKGMpKT09bnVsbD92b2lkIDA6Xy5MKGUsNikpfHwhMTt2YXIgZjtrbz0oKGY9dHAoYykpPT1udWxsP3ZvaWQgMDpfLkwoZiw3KSl8fCExO2dvPV8uTChjLDM3KXx8ITE7am89Xy5MKGMsNTEpfHwhMTtvbz1fLkwoYyw1Mil8fCExO3ZhciBnO21vPSgoZz10cChjKSk9PW51bGw/dm9pZCAwOl8uTChnLDEwKSl8fCExO3ZhciBoO25vPSgoaD10cChjKSk9PW51bGw/dm9pZCAwOl8uTChoLDgpKXx8ITE7Ym89Yjtzcz1fLmxvPSExO3ZhciBrO2I9KChrPXRwKGMpKT09bnVsbD92b2lkIDA6Xy5OKGssMSkpfHwiIjt2YXIgbDtrPSgobD10cChjKSk9PW51bGw/dm9pZCAwOl8uTihsLDIpKXx8IiI7dmFyIG07bD0oKG09dHAoYykpPT1udWxsP3ZvaWQgMDpfLk4obSwzKSl8fCIiO3ZhciBuO2M9KChuPXRwKGMpKT09bnVsbD92b2lkIDA6Cl8uTihuLDkpKXx8IiI7a3M9bmV3IE1hcDtrcy5zZXQoImMiLGIpO2tzLnNldCgiYSIsayk7a3Muc2V0KCJzYyIsbCk7a3Muc2V0KCJzdyIsbCk7a3Muc2V0KCJzYSIsYyk7bHM9YTtfLnVvPW5ldyBTZXQ7KF8uaG98fF8uZW8pJiZfLnlvKCk7Xy50cz0hMH19fTt3cz1jbGFzc3tjb25zdHJ1Y3Rvcigpe3RoaXMuaT0wfXJlc2V0KCl7dGhpcy5pPTB9fTsKeXM9ZnVuY3Rpb24oYSxiKXt2YXIgW2MsZF09T24oYi5qLm1hdGNoKF8uZGQpWzVdfHxudWxsKS5zcGxpdCgiPSIpLGU9Zj0+e3ZhciBnPWQ9PT12b2lkIDA/YHMke2Z9YDovc1xkKy8uZXhlYyhkKT09PW51bGw/YCR7ZH0tcyR7Zn1gOmQucmVwbGFjZSgvc1xkKy8sYHMke2Z9YCk7Zj1iLmo7Zz1gJHtjfT0ke2d9YDtfLmNhKGcsIi8iKXx8KGc9Ii8iK2cpO2Y9Zi5tYXRjaChfLmRkKTtyZXR1cm4gXy5obChmWzFdLGZbMl0sZlszXSxmWzRdLGcsZls2XSxmWzddKX07YS5EPWUoYS5MKTthLkY9ZShhLk0pO2EuQSE9PW51bGwmJmEuQShhLkYsYS5EKTt4cyhhLDEyKTthLkI9ITB9O3pzPWZ1bmN0aW9uKGEsYj0hMSl7YS5pLmNvbG9yU2NoZW1lPWI/ImRhcmsiOiJsaWdodCI7YS5DIT09YiYmRnIoYS5pLCExKTthLkM9YjtOcihhLmkpfTtBcz1mdW5jdGlvbihhLGIpe2EuQT1ifTtCcz1mdW5jdGlvbihhLGIpe2Eudj1ifTsKeHM9ZnVuY3Rpb24oYSxiKXt2YXIgYz1uZXcgbXAsZD0rK2EuSC5pO18uUyhjLDEsZCk7ZD1uZXcgaHA7ZnAoZCxiKTtiPW5ldyBfLlY7Xy5LKGIsMzcsYyk7Xy5LKGIsMzUsZCk7YS5HLmxvZyg5NyxiKX07CkNzPWNsYXNzIGV4dGVuZHMgXy54e2NvbnN0cnVjdG9yKGEsYixjLGQpe3N1cGVyKCk7dGhpcy5MPV8uV2MoXy5NKGIsNCwzMCkpO3RoaXMuTT1fLldjKF8uTShiLDUsOTYpKTt0aGlzLkc9YTt0aGlzLmo9Yjt0aGlzLkQ9dGhpcy5GPSIiO3RoaXMuSD1jO3RoaXMuQj0hMTt0aGlzLnY9dGhpcy5BPW51bGw7dGhpcy5DPSExO3RoaXMuaT1LcihMcihBcih4cih6cihuZXcgT3IsXy5WYyhfLlAodGhpcy5qLDEpKSksXy5WYyhfLlAodGhpcy5qLDIpKSksTnVtYmVyKF8uTSh0aGlzLmosNil8fCIwIikpLGU9PnZvaWQgeXModGhpcyxlKSksKCk9Pnt0aGlzLkJ8fHhzKHRoaXMsMTMpO3RoaXMuQj0hMTt0aGlzLnYhPT1udWxsJiZ0aGlzLnYoKX0pO2QmJihhPVtgJHtkb2N1bWVudC5sb2NhdGlvbi5wcm90b2NvbH0vLyR7ZG9jdW1lbnQubG9jYXRpb24uaG9zdH1gXSwoYj1fLmVrKCl8fG51bGwpJiZhLnB1c2goYiksdGhpcy5pLk89YSk7Xy5sYihfLkhlKHRoaXMuaiwzKSkhPW51bGwmJnlyKHRoaXMuaSwKXy5NKHRoaXMuaiwzKSl9VCgpe3N1cGVyLlQoKTtGcih0aGlzLmkpfX07RHM9e292ZXJmbG93OiJoaWRkZW4iLHBvc2l0aW9uOiJhYnNvbHV0ZSIsdG9wOiIwIix2aXNpYmlsaXR5OiJoaWRkZW4iLHdpZHRoOiIzNTBweCIsInotaW5kZXgiOjk5MX07RXM9WzQyLDM2LDE4LDMwLDM4LDM3LDMyLDIyLDIwLDMxLDM1XTtGcz1bNDIsMzZdOwpMcz1mdW5jdGlvbihhLGIpe3ZhciBjPU9iamVjdC5hc3NpZ24oe30sRHMpO2EuRD8oYS5BPT09MT9hLlY9IjEwMCUiOkdzKGEpJiYoYS5aPSIxMDAlIiksYS5BPT09NT8oYy50cmFuc2Zvcm09IiIsYy50b3A9IiIsYy5oZWlnaHQ9IjAiKTooYy5oZWlnaHQ9Yj8iMTAwJSI6IjAiLGMudG9wPSIwIiksYy5sZWZ0PSIwIixjLmJvdHRvbT0iMCIsY1sibWFyZ2luLWxlZnQiXT0iIixjWyJtYXJnaW4tcmlnaHQiXT0iIixjWyJtYXJnaW4tdG9wIl09IiIsY1sibWFyZ2luLWJvdHRvbSJdPSIiLGNbIm1heC1oZWlnaHQiXT0iIixjWyJtYXgtd2lkdGgiXT0iIixjLnBvc2l0aW9uPSJmaXhlZCIsYy5yaWdodD0iMCIsYy53aWR0aD0iMTAwJSIpOihjLmJvdHRvbT0iIixjLmxlZnQ9IiIsYy5yaWdodD0iIixjLnRvcD0iIixjPUhzKGEsYyksSXMoYSksSnMoYSkpO2MudmlzaWJpbGl0eT1iPyIiOiJoaWRkZW4iO18uVWgoYS5CLGMpO2EuQT09PTUmJktzKGEpfTsKSHM9ZnVuY3Rpb24oYSxiPXt9KXtiPU9iamVjdC5hc3NpZ24oYixEcyk7dmFyIGM9YS5BPT09MTtpZihfLk0oYS5qLDUpKXt2YXIgZD1fLk0oYS5qLDUpKyJweCI7Yz8oYS5WPWQsYi5oZWlnaHQ9IjBweCIpOkdzKGEpPyhhLlo9ZCxiLmhlaWdodD0iMHB4Iik6Yi5oZWlnaHQ9YS5BPT09NT8iMHB4IjpkfWVsc2UgYi5ib3R0b209IjBweCI7Xy5NKGEuaiw2KSYmKGIud2lkdGg9Xy5NKGEuaiw2KSsicHgiKTsoZD1fLk0oYS5qLDcpKSYmKGJbIm1hcmdpbi10b3AiXT1kKyJweCIpOyhkPV8uTShhLmosNjcpKSYmKGJbIm1hcmdpbi1ib3R0b20iXT1kKyJweCIpO2MmJihiLnRyYW5zaXRpb249ImhlaWdodCAuM3MgZWFzZS1pbi1vdXQiKTsoYz1fLkwoYS5qLDExKSk/Yi5sZWZ0PTA6Yi5yaWdodD0wO18uTShhLmosOCkmJihjP2JbIm1hcmdpbi1sZWZ0Il09Xy5NKGEuaiw4KSsicHgiOmJbIm1hcmdpbi1yaWdodCJdPV8uTShhLmosOCkrInB4Iik7YS5BPT09NSYmKGIucG9zaXRpb249ImZpeGVkIiwKYi50b3A9IiIsYi5ib3R0b209IjAiLGIubGVmdD0iNTAlIixiLnRyYW5zZm9ybT0idHJhbnNsYXRlWCgtNTAlKSIpO2M9YS5BPT09NDtpZihkPWEuQT09PTMmJl8uZ2soYS5qLF8uc3AsMTkpfHxjKWM/YT1hLllmOihhPV8uSihhLmosXy5zcCwxOSksYT1fLlEoYSwxMykpLGQ9YT09PTE7ZCYmKGIucG9zaXRpb249ImZpeGVkIixiLmJvdHRvbT0iMjRweCIsYi50b3A9ImF1dG8iKTtyZXR1cm4gYn07Ck5zPWZ1bmN0aW9uKGEpe2lmKEdzKGEpKXt2YXIgYj1uZXcgTWFwO2Iuc2V0KCJjIiwoKT0+e01zKGEpO3ZhciBjPXt9O2EucWUmJihjLnQ9Xy5QZShhLmosMzgpKTthLnNlbmRNZXNzYWdlKCJ0YW1hZiIsYyl9KTtiLnNldCgiYSIsKCk9Pnt9KTtiLnNldCgic2MiLCgpPT57TXMoYSk7YS5zZW5kTWVzc2FnZSgidGFtc3ciKX0pO2Iuc2V0KCJzdyIsKCk9PntNcyhhKTthLnNlbmRNZXNzYWdlKCJ0YW1zdyIpfSk7Yi5zZXQoInNhIiwoKT0+e01zKGEpO2Euc2VuZE1lc3NhZ2UoInRhbXNhZiIpfSk7dnMoYixhLlAsYS5qKX19O0dzPWZ1bmN0aW9uKGEpe3JldHVybiBhLkE9PT0yfTtPcz1mdW5jdGlvbihhKXtyZXR1cm4gYS5BPT09M3x8YS5BPT09NH07TXM9ZnVuY3Rpb24oYSl7UHMoYSk7YS5lYXx8KGEuc2VuZE1lc3NhZ2UoImZpIix7c2lkOmEuUC5CfSksYS5lYT0hMCl9OwpQcz1mdW5jdGlvbihhKXthLkchPW51bGwmJihfLnUuY2xlYXJUaW1lb3V0KGEuRyksYS5HPW51bGwpO3ZhciBiPWEuaTtiLkE/Yj0zOihiLkE9ITAsWHIoYiksYj0wKTthLmllPT1udWxsJiYoYS5pZT1iKTtpZihiIT0zKXtpZihiPV8uTShhLmosMTQpKWEuaGE9Xy5QaShhLkRmLGIsYSk7Xy5NZShhLmosMzApIT1udWxsJiZRcyhhLF8uTyhhLmosMzApKX19OwpScz1mdW5jdGlvbihhLGIsYyl7aWYoYiYmYiE9PWRvY3VtZW50LmJvZHkpe3ZhciBkPXtTQ1JJUFQ6ITAsU1RZTEU6ITAsSU1HOiEwfSxlPWIucGFyZW50RWxlbWVudC5jaGlsZHJlbjtmb3IobGV0IGYgb2YgZSlmIT09YiYmdHlwZW9mIGRbZi50YWdOYW1lXT09PSJ1bmRlZmluZWQiJiYoYz8oZi5oYXNBdHRyaWJ1dGUoImFyaWEtaGlkZGVuIikmJiFmLmhhc0F0dHJpYnV0ZSgiZGF0YS1vZy1vcmlnaW4tYXJpYS1oaWRkZW4iKSYmZi5zZXRBdHRyaWJ1dGUoImRhdGEtb2ctb3JpZ2luLWFyaWEtaGlkZGVuIixmLmdldEF0dHJpYnV0ZSgiYXJpYS1oaWRkZW4iKSksZi5zZXRBdHRyaWJ1dGUoImFyaWEtaGlkZGVuIiwhMCkpOmYuaGFzQXR0cmlidXRlKCJkYXRhLW9nLW9yaWdpbi1hcmlhLWhpZGRlbiIpPyhmLnNldEF0dHJpYnV0ZSgiYXJpYS1oaWRkZW4iLGYuZ2V0QXR0cmlidXRlKCJkYXRhLW9nLW9yaWdpbi1hcmlhLWhpZGRlbiIpKSxmLnJlbW92ZUF0dHJpYnV0ZSgiZGF0YS1vZy1vcmlnaW4tYXJpYS1oaWRkZW4iKSk6CmYucmVtb3ZlQXR0cmlidXRlKCJhcmlhLWhpZGRlbiIpKTtScyhhLGIucGFyZW50RWxlbWVudCxjKX19O1NzPWZ1bmN0aW9uKGEsYil7Xy5VaChhLkIse3Zpc2liaWxpdHk6Yj8iIjoiaGlkZGVuIn0pO2lmKGEuQT09PTF8fEdzKGEpKXtsZXQgYz1fLlloKGEuQiwidHJhbnNpdGlvbiIpO18uVWgoYS5CLHt0cmFuc2l0aW9uOiJub25lIn0pO2xldCBkPUdzKGEpP2EuWjphLlY7Xy5VaChhLkIse2hlaWdodDpiP2Q6IjAifSk7YS5CLnNjcm9sbFRvcD0wO18uVWgoYS5CLHt0cmFuc2l0aW9uOmN9KX19OwpfLldzPWZ1bmN0aW9uKGEsYil7UHMoYSk7YS5CLnNldEF0dHJpYnV0ZSgiYXJpYS1oaWRkZW4iLCFiKTthLkQmJmEuSCE9YiYmUnMoYSxUcihhLmkuaSksYik7YS5IPWI7YiE9PWEuaXNWaXNpYmxlKCkmJmEuQSE9PTUmJmEuRCYmKGI/KGEuV2Q9ZG9jdW1lbnQuYm9keS5zdHlsZS5vdmVyZmxvdyxkb2N1bWVudC5ib2R5LnN0eWxlLm92ZXJmbG93PSJoaWRkZW4iKTpkb2N1bWVudC5ib2R5LnN0eWxlLm92ZXJmbG93PWEuV2QpO2I/KEdzKGEpJiYhXy5lbyYmKF8ubG89ITAsXy5YJiYoXy5YLlphKCk9PT0iYSI/anMoImEiKTpfLlguWmEoKT09PSJzYSImJihqcygic2EiKSxiby5sb2coMTYzKSkpKSxhLmVhfHwoYS5zZW5kTWVzc2FnZSgiZmkiKSxhLmVhPSEwKSxhLkE9PT01JiZLcyhhKSxKcyhhKSxJcyhhKSxhLnVkPyhTcyhhLCEwKSwkcihhLmksITApLGEuZGlzcGF0Y2hFdmVudCgicmF2IiksXy5NZShhLmosMTgpIT1udWxsJiYoYS51ZXx8T3MoYSkmJmEuUGQpJiYoYj1UcyhhKSwKXy5RZShiLDI0LERhdGUubm93KCktKE9zKGEpP2EuUGQ6YS51ZSkpLGEudmUhPW51bGwmJl8uUyhiLDQxLGEudmUpLFVzKGEsYiksUXMoYSxfLlEoYS5qLDE4KSxiKSkpOmEuUmQ/VnMoYSk6YS5kaXNwYXRjaEV2ZW50KCJzb3JwIikpOihTcyhhLCExKSwkcihhLmksITEpLGEuZGlzcGF0Y2hFdmVudCgiaCIpKX07S3M9ZnVuY3Rpb24oYSl7dmFyIGIsYz0oYj1fLk0oYS5qLDcpKSE9bnVsbD9iOjA7aWYoIWEuRCl7bGV0IGQ7Yys9KGQ9Xy5NKGEuaiw2NykpIT1udWxsP2Q6MH1fLlVoKGEuQiwibWluLWhlaWdodCIsKGEuRD8yMjU6MjIwKSsicHgiKTtYcyhhLGMsYyl9O0pzPWZ1bmN0aW9uKGEpe2EuQT09PTN8fGEuQT09PTV8fGEuQT09PTR8fGEuRHx8KGEuQT09PTImJl8uVWgoYS5CLCJtaW4taGVpZ2h0IiwiMjEwcHgiKSxhLkthKCksYS5xaC5hZGRMaXN0ZW5lcihhLkthLmJpbmQoYSkpLGEua2UuYWRkTGlzdGVuZXIoYS5LYS5iaW5kKGEpKSxhLnJlLmFkZExpc3RlbmVyKGEuS2EuYmluZChhKSkpfTsKSXM9ZnVuY3Rpb24oYSl7aWYoYS5BIT09MyYmYS5BIT09NCYmIWEuRCYmR3MoYSkpe2xldCBiPV8uTChhLmosNDIpPyJjYWxjKC04cHggKyAxMDB2dykiOiJjYWxjKC0yNHB4ICsgMTAwdncpIjtfLlVoKGEuQiwibWF4LXdpZHRoIixiKX19O1ZzPWZ1bmN0aW9uKGEpe18uTWUoYS5qLDE2KSE9bnVsbCYmUXMoYSxfLk8oYS5qLDE2KSk7YS5kaXNwYXRjaEV2ZW50KCJzb3J0Iil9O1pzPWZ1bmN0aW9uKGEsYj0hMSl7dmFyIGM9IWEuaXNWaXNpYmxlKCksZD0ibiI7aWYoYyYmR3MoYSkpe2xldCBlO2Q9KChlPV8uWCk9PW51bGw/dm9pZCAwOmUuWmEoKSl8fG51bGx9Xy5XcyhhLGMpO2FzKGEuaSxjLGIpO2MmJmEuY2EucmVzZXQoKTtZcyhhLGMsMSxkKX07CllzPWZ1bmN0aW9uKGEsYixjLGQ9bnVsbCl7aWYoYj9fLk1lKGEuaiwxMikhPW51bGw6Xy5NZShhLmosMTMpIT1udWxsKXtsZXQgZT1UcyhhKTtVcyhhLGUpO2I/KGQhPT1udWxsJiZfLlQoZSw3MiwkcyhkKSksYS5OPURhdGUubm93KCksYS5KYj0hMSxRcyhhLF8uUShhLmosMTIpLGUpKTpRcyhhLF8uUShhLmosMTMpLGUsYyl9fTthdD1mdW5jdGlvbihhKXtpZihhLmkpe2ZvcihsZXQge21lc3NhZ2U6YixkYXRhOmN9b2YgYS5NZClhLmkuc2VuZE1lc3NhZ2UoYixjKTthLk1kPVtdfX07YnQ9ZnVuY3Rpb24oYSl7ZG9jdW1lbnQucmVhZHlTdGF0ZT09ImNvbXBsZXRlIj9QcyhhKTp3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigibG9hZCIsKCk9PlBzKGEpKX07CmZ0PWZ1bmN0aW9uKGEpe2Eudi5JKGEuaSwiX3JlYWR5IixhLnZmKTthLnYuSShhLmksIl9zdGFydHVwbG9hZGVkIiwoKT0+e2EudGU9ITB9KTthLnYuSShhLmksIl9yZW5kZXJmYWlsZWQiLGEuemYpO2Eudi5JKGEuaSwiX3JlbmRlcnN0YXJ0IixhLkFmKTthLnYuSShhLmksImxvYWRlZCIsKCk9PnthLmplPSEwfSk7YS52LkkoYS5pLGEuUGYsYS5RZik7Xy5MKGEuaiw5KSYmYS52LkkoYS5pLCJibHVyIixhLldoKTthLnYuSShhLmksInJlc3R5bGUiLGEuQmYpO2Eudi5JKGEuaSwiY2xvc2UiLGEuZGcpO2lmKGEuQyE9bnVsbCl7YS52LkkoYS5DLFsibW91c2VvdmVyIiwiZm9jdXMiXSxhLkVmKTtfLnVtKGEudixhLkMsYS5uZSk7YS52LkkoYS5DLCJrZXlkb3duIixjPT57Yy5rZXlDb2RlPT0yNyYmYS5pc1Zpc2libGUoKSYmKGEuWWQ9ITAsYS5uZShjKSl9KTthLkE9PT0xPyhhLnYuSShhLmksImFsb2duIixhLk9oKSxhLnYuSShhLmksImFsb2dtIixjPT5jdChhLDEwNCxjKSksYS52LkkoYS5pLAoiYWxvZ21tIixjPT5jdChhLDEwNSxjKSksYS52LkkoYS5pLCJhbG9nbWEiLGEueGYpLGEudi5JKGEuaSwiYWxvZ2MiLGEuRGgpLGEudi5JKGEuaSwib21lbnUiLGM9PmN0KGEsMTE1LGMpKSxhLnYuSShhLmksIndkcyIsYz0+Y3QoYSwxMjgsYykpLGEudi5JKGEuaSwid2RjIixjPT5jdChhLDEyOSxjLCEwKSksYS52LkkoYS5pLCJhbHBtIixjPT5jdChhLDE1NixjKSksYS52LkkoYS5pLCJhbHBjIixjPT5jdChhLDE1MixjKSksYS52LkkoYS5pLCJhbGRlY2wiLGM9PmN0KGEsMTUzLGMpKSxhLnYuSShhLmksImFsZWRzIixjPT5jdChhLDE1NCxjKSksYS52LkkoYS5pLCJhbGRlY2EiLGM9PmN0KGEsMTU1LGMpKSxhLnYuSShhLmksImFsY3BzIixjPT57ZHQoYSxjKTtldChhKTthLlpkPSEwO2N0KGEsMTM2LGMpfSksYS52LkkoYS5pLCJhbGNwaSIsYz0+e2R0KGEsYyk7ZXQoYSk7Y3QoYSwxNDgsYyl9KSxhLnYuSShhLmksImFsY3BpZyIsYz0+e2V0KGEpO2N0KGEsMTQ5LGMpfSksYS52LkkoYS5pLAoiYWxjcGMiLGM9PmN0KGEsMTM3LGMsITApKSxhLnYuSShhLmksImFsY3BmIixjPT57Y3QoYSwxNDYsYyl9KSxhLnYuSShhLmksImFsY3BkIixjPT5jdChhLDE0NyxjLCEwKSksYS52LkkoYS5pLCJ1aWNhIixhLk1mKSk6R3MoYSkmJihhLnYuSShhLmksImFtbG9nIixhLmZnKSxhLnYuSShhLmksImNwIixhLlRnKSxhLnYuSShhLmksImNsZWFyY3V0X2V2ZW50IixhLmpoKSxhLnYudmEoYS5pLCJoYSIsYS5yaSksYS52LnZhKGEuaSwieXNldiIsKCk9PnthLk89ITB9KSxhLnYudmEoYS5pLCJ5c2VuIiwoKT0+e2EuTz0hMX0pLGEudi52YShhLmksImRhIixhLmhpKSxhLnYudmEoYS5pLCJoc2UiLGEudWkpLGEudi5JKGEuaSwiYWljIixhLkhnKSxhLnYuSShhLmksInN3ZGMiLGEuamkpLGEudi5JKGEuaSwic3dkdyIsYS5uaSksYS52LkkoYS5pLCJzd2giLGEud2kpLGEud2QmJmEudi5JKGEuaSwib2N0YXJpbmUiLGEuTmYpLGEudi5JKGEuaSwidWF0aSIsYS5TZikpO2Eudi5JKHdpbmRvdywKWyJrZXl1cCIsImtleWRvd24iXSxhLkNmKTtfLmFlJiZhLnYuSShhLkMsImZvY3VzaW4iLCgpPT57YS5WYz0hMH0pO18ueG0oYS5DLCJjbGljayIpO2xldCBiPWEuQy5xdWVyeVNlbGVjdG9yKCJbZGF0YS1lcWlkXSIpO2ImJl8ueG0oYiwiY2xpY2siKX1lbHNlIGEub2EhPW51bGwmJihGcChhLm9hLGEpLGEudi5JKGEuaSwicGxvZyIsYS5RZykpO2EucGg/YS52Lkkod2luZG93LCJwYWdlaGlkZSIsYS55Zik6YS52Lkkod2luZG93LCJiZWZvcmV1bmxvYWQiLGEuUWgpO18uTChhLmosNDQpJiYoYS5zZW5kTWVzc2FnZSgic2ltIix7aW06YS5EfSksYS52LkkoYS5nYSwiY2hhbmdlIixhLnhoKSl9OwpndD1mdW5jdGlvbihhLGIsYyl7YS5pPWI7YS5pJiYoXy5icyhhLmksYS5GKSxhdChhKSk7YyYmKF8uU2YoYyk/YS5DPWM6KGEub2E9YyxhLlBkPURhdGUubm93KCkpKTtjPShiPV8uTChhLmosMTApfHxfLk0oYS5qLDI3KSl8fGEuSHx8YS5vYSE9bnVsbDt2YXIgZD1fLk0oYS5qLDI3KTtjJiYoZD4wJiZhLkc9PW51bGw/YS5HPV8uUGkoKCk9PntidChhKX0sZCxhKTpkPD0wJiZidChhKSk7ZnQoYSk7IWImJl8uTChhLmosMjQpJiZZcihhLmkpfTtodD1mdW5jdGlvbihhKXtfLlRpKGEudik7YS5DLnJlbW92ZUF0dHJpYnV0ZSgiZGF0YS1vZ3NyLWZiIil9O2l0PWZ1bmN0aW9uKGEpe2EuQyYmKGEuQSE9PTE/YS5DLmZvY3VzKCk6KGE9YS5DLmdldEVsZW1lbnRzQnlUYWdOYW1lKCJhIiksYS5sZW5ndGg+MCYmYVswXS5mb2N1cygpKSl9OwpRcz1mdW5jdGlvbihhLGIsYyxkKXt2YXIgZT1jfHxUcyhhKSxmPV8uZ2soZSxtcCwzNyk/Xy5KKGUsbXAsMzcpOm5ldyBtcDtjJiZfLmdrKGMsaHAsMzUpPyhjPV8uSihjLGhwLDM1KSxjPSFfLnhhKEVzLF8uUShjLDQpKSk6Yz0hMDtjPWM/KythLmNhLmk6YS5jYS5pO18uUyhmLDEsYyk7ZCE9dm9pZCAwJiZfLlQoZiwzLGQpO18uSyhlLDM3LGYpO25wKGUsanQoYSkpO18uS2coZSxhLkYpO18uZ2soYS5qLF8uc3AsMTkpJiYoZD1fLkooYS5qLF8uc3AsMTkpLGY9Xy5sYihfLkhlKGQsMSkpLF8uUyhlLDMxLGYpLGY9bmV3IF8ubHAsYz1fLk1lKGQsMTIpLGY9anAoZixjKSxjPWYuUmIsZD1fLmViKF8uSGUoZCwxMSkpLGQ9Yy5jYWxsKGYsZCksXy5vcChlLGQpKTthLlAubG9nKGIsZSl9O1RzPWZ1bmN0aW9uKGEpe3JldHVybiBhLlhkP18uJGIoYS5YZCk6bmV3IF8uVn07VXM9ZnVuY3Rpb24oYSxiKXthLkE9PT0xJiZhLlUhPT0wJiYoYT1hLlU9PT0yLGI9a3QoYiksXy56KGIsOSxhKSl9Owokcz1mdW5jdGlvbihhKXtzd2l0Y2goYSl7Y2FzZSAibiI6cmV0dXJuIDE7Y2FzZSAiYyI6cmV0dXJuIDI7Y2FzZSAiYSI6cmV0dXJuIDM7Y2FzZSAic2MiOnJldHVybiA0O2Nhc2UgInN3IjpyZXR1cm4gNTtjYXNlICJzYSI6cmV0dXJuIDY7ZGVmYXVsdDpyZXR1cm4gMH19O2t0PWZ1bmN0aW9uKGEpe2lmKCFfLmdrKGEsXy50bSw0Nykpe3ZhciBiPW5ldyBfLnRtO18uSyhhLDQ3LGIpfXJldHVybiBfLkooYSxfLnRtLDQ3KX07Y3Q9ZnVuY3Rpb24oYSxiLGMsZD0hMSl7dmFyIGU9VHMoYSk7ZCYmbHQoYSxlKTttdChhLGUsYyk7UXMoYSxiLGUpfTtkdD1mdW5jdGlvbihhLGIpe3ZhciBjO2lmKGI9PW51bGw/MDooYz1iLmRhdGEpPT1udWxsPzA6Yy5pZGkpe2xldCBkO2I9TnVtYmVyKGI9PW51bGw/dm9pZCAwOihkPWIuZGF0YSk9PW51bGw/dm9pZCAwOmQuYWxmZCl8fDA7YS5OPURhdGUubm93KCktYn19OwpldD1mdW5jdGlvbihhKXthLk4mJihhLlZhPU1hdGgubWF4KERhdGUubm93KCktYS5OLDEpKX07bnQ9ZnVuY3Rpb24oYSxiPSIiLGM9IiIpe2lmKCFhLkR8fGEuQT09PTUpe3ZhciBkPXt9O2lmKGIpe2xldCBlPWEuQT09PTE7ZT9hLlY9YjpHcyhhKSYmKGEuWj1iKTtpZighZSYmIUdzKGEpJiZhLkEhPT01fHxhLmlzVmlzaWJsZSgpKWQuaGVpZ2h0PWJ9YyYmKGQud2lkdGg9Yyk7Xy5VaChhLkIsZCl9fTtvdD1mdW5jdGlvbihhLGIsYz1udWxsKXt2YXIgZD1uZXcgXy5WO25wKF8uSyhkLDM1LGIpLGp0KGEpKTtpZihhLkwmJkZzLmluY2x1ZGVzKF8uTyhiLDQpKSl7bGV0IGUsZjtiPV8uR2coKGY9KGU9Xy5KKGEuTCxfLnFxLDEpKT09bnVsbD92b2lkIDA6Xy5PKGUsMSkpIT1udWxsP2Y6MCk7Xy5MZyhkLGIpfWEuUC5BJiZfLnooZCw1NiwhMCk7YyE9bnVsbCYmXy56KGQsNjMsYyk7UXMoYSw5NyxkKX07CnB0PWZ1bmN0aW9uKGEsYil7YiYmYi5kYXRhJiYoYj1iLmRhdGEuc211cCx0eXBlb2YgYj09PSJudW1iZXIiJiZiIT0tMSYmYS5kaXNwYXRjaEV2ZW50KG5ldyBwcShiKSkpfTtxdD1mdW5jdGlvbihhKXthLkchPW51bGwmJihfLnUuY2xlYXJUaW1lb3V0KGEuRyksYS5HPW51bGwpO0dzKGEpfHxhLmlzVmlzaWJsZSgpfHxhLmhjfHwoYT1UcihhLmkuaSkpJiZhLnBhcmVudE5vZGUmJmEucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChhKX07anQ9ZnVuY3Rpb24oYSl7dmFyIGI9YS5pJiZUcihhLmkuaSksYz0wO2EuaGMmJihjfD0xKTthLnRlJiYoY3w9MTI4KTthLm9lJiYoY3w9MzIpO2EuT2QmJihjfD02NCk7YS5pc1Zpc2libGUoKSYmKGN8PTIpO2EuUmQmJihjfD00KTtiJiYoY3w9OCk7YS5qZSYmKGN8PTE2KTthLmkuQyYmKGN8PTUxMik7YS5pLkImJihjfD0xMDI0KTthLllkJiYoY3w9MjA0OCk7YS5jYyYmKGN8PTE2Mzg0KTthLnhkJiYoY3w9NjU1MzYpO2EuSCYmKGN8PTMyNzY4KTtyZXR1cm4gY307Cmx0PWZ1bmN0aW9uKGEsYil7YS5OJiYhYS5KYiYmKF8uUyhiLDcwLERhdGUubm93KCktYS5OKSxhLkpiPSEwKX07bXQ9ZnVuY3Rpb24oYSxiLGMpe3ZhciBkOyhjPT1udWxsPzA6KGQ9Yy5kYXRhKT09bnVsbD8wOmQuYWxmZCkmJl8uUyhiLDcxLGMuZGF0YS5hbGZkKTthLlZhJiZfLlMoYiw2OSxhLlZhKTt2YXIgZTtpZihjPT1udWxsPzA6KGU9Yy5kYXRhKT09bnVsbD8wOmUuZ2NpKWQ9a3QoYiksXy55KGQsMTEsYy5kYXRhLmdjaSk7YS5aZCYmKGE9a3QoYiksXy56KGEsMTIsITApKX07WHM9ZnVuY3Rpb24oYSxiLGMpe2M9YGNhbGMoJHtjKi0xfXB4ICsgMTAwZHZoKWA7Xy5VaChhLkIsIm1heC1oZWlnaHQiLGBjYWxjKCR7YiotMX1weCArIDEwMHZoKWApO18uVWgoYS5CLCJtYXgtaGVpZ2h0IixjKX07CnJ0PWNsYXNzIGV4dGVuZHMgXy5Ee2NvbnN0cnVjdG9yKGEsYixjLGQsZT0hMSxmPTAsZz0hMSxoKXtzdXBlcigpO3RoaXMudj1uZXcgXy50ZCh0aGlzKTtfLndmKHRoaXMsdGhpcy52KTt0aGlzLmo9YTt0aGlzLkE9Xy5RKHRoaXMuaiwxNyk7dGhpcy5QPWI7dGhpcy5UZD1uZXcgXy5CbShiLCEwKTt0aGlzLllmPWY7dGhpcy5CPV8uUGYoIkRJViIpO3RoaXMuTT1oO3RoaXMuaT1udWxsO3RoaXMuTWQ9W107dGhpcy5jYz10aGlzLmplPXRoaXMudGU9dGhpcy5PZD10aGlzLm9lPXRoaXMuaGM9dGhpcy51ZD0hMTt0aGlzLkg9Zzt0aGlzLlI9ITE7dGhpcy5QZj1fLk4oYSwzMyl8fCJfcmVuZGVyc3RhcnQiO3RoaXMuU2Q9dGhpcy5DPXRoaXMub2E9bnVsbDt0aGlzLlJkPXRoaXMuVmM9ITE7dGhpcy5GPWU7dGhpcy5ZZD0hMTt0aGlzLlpmPWM7dGhpcy5pZT1udWxsO3RoaXMuWj10aGlzLlY9IiI7dGhpcy5hZT10aGlzLmVhPXRoaXMuamM9ITE7dGhpcy5mYz17fTt0aGlzLmNhPW5ldyB3czsKdGhpcy5xaD13aW5kb3cubWF0Y2hNZWRpYSgib25seSBzY3JlZW4gYW5kIChtaW4taGVpZ2h0OiAxMDgwcHgpIik7dGhpcy5rZT13aW5kb3cubWF0Y2hNZWRpYSgib25seSBzY3JlZW4gYW5kIChtYXgtaGVpZ2h0OiAxMDc5cHgpIGFuZCAobWluLWhlaWdodDogODAwcHgpIik7dGhpcy5yZT13aW5kb3cubWF0Y2hNZWRpYSgib25seSBzY3JlZW4gYW5kIChtYXgtaGVpZ2h0OiA3OTlweCkiKTt0aGlzLnpoPTQwO3RoaXMuUmY9MjA7dGhpcy5nYT13aW5kb3cubWF0Y2hNZWRpYSgib25seSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6IDQ1MnB4KSIpOyh0aGlzLkQ9Xy5MKHRoaXMuaiw0NCkmJnRoaXMuZ2EubWF0Y2hlcyk/THModGhpcywhMSk6Xy5VaCh0aGlzLkIsSHModGhpcykpO3RoaXMuQT09PTEmJl8uVWgodGhpcy5CLCJtYXgtd2lkdGgiLCJjYWxjKDEwMGR2dyAtIDIwcHgpIik7dGhpcy5aZi5hcHBlbmRDaGlsZCh0aGlzLkIpO3RoaXMub2g9Xy5MKHRoaXMuaiw1MCl8fCExO3RoaXMuV2Q9CiIiO2lmKHRoaXMubmE9KGE9Xy5KKHRoaXMuaixycCwzNikpP25ldyBDcyh0aGlzLlAsYSx0aGlzLmNhLGQpOm51bGwpQXModGhpcy5uYSwoayxsKT0+dGhpcy5VZChrLGwpKSxCcyh0aGlzLm5hLCgpPT57dGhpcy5zZW5kTWVzc2FnZSgicHBjIil9KTt0aGlzLmxlPSh0aGlzLndkPV8uTCh0aGlzLmosNjUpKT9uZXcgcHMoYSk6bnVsbDt0aGlzLnFlPV8uTCh0aGlzLmosMzcpfHwhMTt0aGlzLlM9bmV3IE1hcDt0aGlzLkw9dGhpcy5PPW51bGw7dGhpcy54ZD0hMTtfLmViKF8uSGUodGhpcy5qLDYxKSkhPW51bGw/dGhpcy5VPV8uTCh0aGlzLmosNjEpPzI6MTp0aGlzLlU9MDt0aGlzLnBoPV8uTCh0aGlzLmosNTQpfHwhMTt0aGlzLlZhPXRoaXMuTj1udWxsO3RoaXMuWmQ9dGhpcy5KYj0hMTt0aGlzLlRhPW51bGw7TnModGhpcyl9Sigpe3JldHVybiB0aGlzLkJ9c2VuZE1lc3NhZ2UoYSxiKXt0aGlzLmk/dGhpcy5pLnNlbmRNZXNzYWdlKGEsYik6dGhpcy5NZC5wdXNoKHttZXNzYWdlOmEsCmRhdGE6Yn0pfU9mKGE9ITEpe3RoaXMuaXNWaXNpYmxlKCl8fFpzKHRoaXMsYSl9aXNWaXNpYmxlKCl7dmFyIGE9dGhpcy5CLnN0eWxlLnZpc2liaWxpdHkhPSJoaWRkZW4iO3JldHVybiB0aGlzLkIuc3R5bGUuZGlzcGxheSE9Im5vbmUiJiZhfW5vdGlmeSgpe18uTWUodGhpcy5qLDMxKSE9bnVsbCYmUXModGhpcyxfLk8odGhpcy5qLDMxKSk7T3ModGhpcykmJnRoaXMuRyE9bnVsbD90aGlzLkg9ITA6Xy5Xcyh0aGlzLCEwKX1hZyhhLGIsYyxkKXt0aGlzLnNlbmRNZXNzYWdlKCJhZGEiLHtuOmEsZTpiLHU6Y30pO2MmJmQmJih0aGlzLmZjW2NdPWQpfWdoKCl7dGhpcy5zZW5kTWVzc2FnZSgiY2RhIik7dGhpcy5mYz17fX1BZihhKXt0aGlzLm9lPSEwO18uTWUodGhpcy5qLDMyKSE9bnVsbCYmUXModGhpcyxfLk8odGhpcy5qLDMyKSk7YS5kYXRhJiYoYS5kYXRhLnR0ZiE9PSJudWxsIiYmKHRoaXMudmU9TnVtYmVyKGEuZGF0YS50dGYpfHxudWxsKSwoYS5kYXRhLmhlaWdodHx8YS5kYXRhLndpZHRoKSYmCm50KHRoaXMsYS5kYXRhLmhlaWdodCxhLmRhdGEud2lkdGgpKX1NZihhKXt0aGlzLlU9YS5kYXRhLmN1cz8yOjF9U2YoYSl7aWYoKGE9YS5kYXRhLmFtdCkmJnRoaXMuVGEpe2E9c3EoYSk7dmFyIGI7aWYoIShiPSF0aGlzLkwpKXtiPWE7dmFyIGM9dGhpcy5MO2I9IShiPT09Y3x8Yj09bnVsbCYmYz09bnVsbHx8YiYmYyYmYiBpbnN0YW5jZW9mIGMuY29uc3RydWN0b3ImJnRuKGIsYykpfWImJih0aGlzLkw9YSxfLm1zKHRoaXMuVGEsXy5KKGEsXy5xcSwxKSwhMSwhMSksb3QodGhpcyxncChmcChuZXcgaHAsNDIpKSkpfX1yaSgpe3ZvKCl9aGkoKXtpZighc3MmJmdvJiZfLnJzKXtfLlh8fChfLlg9bmV3IHRvKG51bGwpKTtjbygiYyIpO3ZhciBhPXNzPSEwfWVsc2UgYT0hMTthJiZvdCh0aGlzLGdwKGZwKG5ldyBocCwxOCkpKX1qaShhKXtwdCh0aGlzLGEpOyhvb3x8am98fGlvKSYma28mJl8ucnMmJihfLlh8fChfLlg9bmV3IHRvKG51bGwpKSx1cygiYyIpfHxfLlguSmEuZ2V0KCJzYyIpfHwKY28oInNjIikpfW5pKGEpe3B0KHRoaXMsYSk7KG9vfHxqb3x8aW8pJiZrbyYmXy5ycyYmKF8uWHx8KF8uWD1uZXcgdG8obnVsbCkpLHVzKCJjIil8fHVzKCJhIil8fF8uWC5KYS5nZXQoInN3Iil8fGNvKCJzdyIpKX11aSgpe3dvKCl9d2koYSl7cHQodGhpcyxhKTt4bygpfXZmKCl7dGhpcy5BPT09MSYmdGhpcy5zZW5kTWVzc2FnZSgic2hwdSIse2hwdTp3aW5kb3cubG9jYXRpb24uaHJlZn0pO3RoaXMuaGM9ITB9UWcoYSl7YS5kYXRhLmxkLmFwYXRrPT09ImkiJiZRcyh0aGlzLDExMCl9UWgoKXt0aGlzLmNjPSEwO3F0KHRoaXMpfXlmKCl7dGhpcy54ZD0hMDtxdCh0aGlzKX1RZihhKXt0aGlzLnVkPSEwO3RoaXMuaGEhPW51bGwmJl8udS5jbGVhclRpbWVvdXQodGhpcy5oYSk7YS5kYXRhJiYodGhpcy5qYz0hIWEuZGF0YS5pY3NzLHRoaXMuUj0hIWEuZGF0YS5kYyk7Xy5Xcyh0aGlzLHRoaXMuSCl9RGYoKXt0aGlzLnVkfHx0aGlzLk9kfHwodGhpcy5SZD0hMCx0aGlzLkgmJlZzKHRoaXMpKX16Zigpe3RoaXMuT2Q9CiEwO3RoaXMuaGEhPW51bGwmJl8udS5jbGVhclRpbWVvdXQodGhpcy5oYSk7dmFyIGE9dGhpcy5BPT09M3x8dGhpcy5BPT09NHx8dGhpcy5IO18uTWUodGhpcy5qLDI2KSE9bnVsbCYmYSYmUXModGhpcyxfLk8odGhpcy5qLDI2KSl9bmUoYSl7dGhpcy51ZT1EYXRlLm5vdygpO1pzKHRoaXMsISEoYS5ZYS5idXR0b24hPTB8fF8uY2UmJmEuY3RybEtleSkpO3RoaXMuVmM9ITE7dGhpcy5TZCYmdGhpcy5TZChhLmksdGhpcy5pc1Zpc2libGUoKSk7YS5wcmV2ZW50RGVmYXVsdCgpO2Euc3RvcFByb3BhZ2F0aW9uKCl9Q2YoYSl7YS5rZXlDb2RlPT0zMiYmYS50YXJnZXQgaW5zdGFuY2VvZiBFbGVtZW50JiZfLlRmKHRoaXMuQyxhLnRhcmdldCkmJihhLnN0b3BQcm9wYWdhdGlvbigpLGEucHJldmVudERlZmF1bHQoKSl9RWYoKXtNcyh0aGlzKTt0aGlzLnNlbmRNZXNzYWdlKCJob2YiKTtfLk1lKHRoaXMuaiw1Nik9PW51bGx8fHRoaXMuYWV8fChRcyh0aGlzLF8uTyh0aGlzLmosNTYpKSx0aGlzLmFlPQohMCl9QmYoYSl7YS5kYXRhJiZudCh0aGlzLGEuZGF0YS5oZWlnaHQsYS5kYXRhLndpZHRoKX1XaChhKXt2YXIgYjthPShhPT1udWxsP3ZvaWQgMDooYj1hLmRhdGEpPT1udWxsP3ZvaWQgMDpiLmtmKXx8ITE7ZG9jdW1lbnQuYWN0aXZlRWxlbWVudD09dGhpcy5DfHxfLlRmKHRoaXMuQyxkb2N1bWVudC5hY3RpdmVFbGVtZW50KXx8dGhpcy5WY3x8YT8oYSYmYXModGhpcy5pLCEwLCExKSxacih0aGlzLmkpKToodGhpcy5pc1Zpc2libGUoKSYmWXModGhpcywhMSwyKSxfLldzKHRoaXMsITEpLGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQ9PT1Ucih0aGlzLmkuaSkmJml0KHRoaXMpKX1kZyhhKXt2YXIgYj1hLmRhdGE7Yj1iJiZiLmljYj80OjE7dmFyIGM9T3ModGhpcyl8fCF0aGlzLmlzVmlzaWJsZSgpPyExOnRoaXMuQT09PTU/KGE9KGE9YS5kYXRhKSYmKChjPWEuY3R4KT09bnVsbD92b2lkIDA6Yy5lYXApKT8hKGE9PT0iY2FjInx8YT09PSJhYWMifHxhPT09InNvYWMiKTohMDohMDtjJiYKWXModGhpcywhMSxiKTtfLldzKHRoaXMsITEpfU9oKGEpe3ZhciBiPWEuZGF0YS5waWQsYz1hLmRhdGEuYWksZD1hLmRhdGEuYWMsZT0vXlxkKyQvLnRlc3QoYik/cGFyc2VJbnQoYiwxMCk6LTE7Yj0vXlxkKyQvLnRlc3QoYyk/cGFyc2VJbnQoYywxMCk6LTE7Yz0vXlxkKyQvLnRlc3QoYyk/cGFyc2VJbnQoZCwxMCk6LTE7dmFyIGY9ZD1hLmRhdGEudmlzO2lmKGQ+NHx8ZDw9MClmPTA7ZD1mO3ZhciBnO2Y9KGc9YS5kYXRhLmFzKSE9bnVsbD9nOjA7Zz0hIWEuZGF0YS5jdXM7dmFyIGg9bmV3IF8uVjtlPV8uUyhoLDE1LGUpO2U9Xy5LZyhucChlLGp0KHRoaXMpKSx0aGlzLkYpO2x0KHRoaXMsZSk7bXQodGhpcyxlLGEpO18uQW0odGhpcy5UZCxkLGIsYyxmLGcsZSl9eGYoYSl7dmFyIGI9YS5kYXRhLmFuLGM9YS5kYXRhLmFpZCxkPWEuZGF0YS5hdSxlPWEuZGF0YS5haSxmPWEuZGF0YS5hYzthPWEuZGF0YS5hZDtkPWQmJmQuaW5jbHVkZXMoImFjY291bnRzLmdvb2dsZS5jb20vby9zYW1sMiIpOwp2YXIgZz1ucChuZXcgXy5WLGp0KHRoaXMpKTtHcCh0aGlzLlRkLGIsYyxlLGYsZCxhLGcpfURoKGEpe2N0KHRoaXMsYS5kYXRhLm1vdXNlU2Vzc2lvbj85OToxMDAsYSl9S2EoKXt2YXIgYSxiPShhPV8uTSh0aGlzLmosNykpIT1udWxsP2E6MDthPTYwO3RoaXMua2UubWF0Y2hlcz9hPXRoaXMuemg6dGhpcy5yZS5tYXRjaGVzJiYoYT10aGlzLlJmKTthPU1hdGgubWF4KGEtMTYsMCk7dmFyIGM9TWF0aC5tYXgodGhpcy5CLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLnktYiwwKTtYcyh0aGlzLGErYixhK2IrYyl9eGgoKXtfLkwodGhpcy5qLDQ0KSYmdGhpcy5nYS5tYXRjaGVzIT09dGhpcy5EJiYodGhpcy5EPXRoaXMuZ2EubWF0Y2hlcyx0aGlzLnNlbmRNZXNzYWdlKCJzaW0iLHtpbTp0aGlzLkR9KSxMcyh0aGlzLHRoaXMuaXNWaXNpYmxlKCkpKX1mZyhhKXtpZihhLmRhdGEmJmEuZGF0YS5ldCl7dmFyIGI9YS5kYXRhLmV0O2I9Z3AoZnAobmV3IGhwLGIpKTt2YXIgYz1hLmRhdGEuZHQ7CmMmJl8uVChiLDMsYyk7KGM9YS5kYXRhLnNvYnQpJiZfLlQoYiw1LGMpOyhjPWEuZGF0YS5wYXMpJiZfLlQoYiwyLGMpO3ZhciBkPWEuZGF0YS5obWw7ZCE9bnVsbCYmXy56KGIsNixkKTtkPWEuZGF0YS5hZWk7ZCE9bnVsbCYmXy5RZShiLDksZCk7ZD1hLmRhdGEuc2VzO2QhPW51bGwmJl8uVChiLDEwLGQpO2Q9YS5kYXRhLnNlcHM7ZCE9bnVsbCYmXy5UKGIsMTEsZCk7dGhpcy5PIT09bnVsbCYmXy56KGIsMTIsdGhpcy5PKTtpZihkPWEuZGF0YS5jYWkpe3ZhciBlPW5ldyBlcDtkPV8ueShlLDEsZCk7Xy5LKGIsMTMsZCl9ZD1hLmRhdGEuc2N0O2QhPW51bGwmJl8uVChiLDE0LGQpO2Q9YS5kYXRhLmJhdDtkIT1udWxsJiZfLlQoYiwxNyxkKTtkPWEuZGF0YS5iYXV0O2QhPW51bGwmJl8uVChiLDE2LGQpO2Q9cGFyc2VJbnQoYS5kYXRhLmVyZmMsMTApO2lzTmFOKGQpfHwoZT1uZXcgZHAsZD1fLlMoZSwxLGQpLF8uSyhiLDE4LGQpKTtkPWEuZGF0YS5pYWlpO2lmKGQhPW51bGwpe2lmKGQubGVuZ3RoPT09CjAmJmEuZGF0YS5ldD09PTMyKXJldHVybjtfLllrKGIsMTksZCxfLlhrKX1vdCh0aGlzLGIsYS5kYXRhLm1sZSk7Yj1hLmRhdGEuYWw7aWYoYS5kYXRhLmV0PT09NCYmYz09NCYmYil7bGV0IGY7KGY9dGhpcy5mY1tiXSk9PW51bGx8fGYuY2FsbCgpfX19VGcoKXt6cyh0aGlzLm5hLHRoaXMuRik7dmFyIGE9Z3AoZnAobmV3IGhwLDExKSk7dGhpcy5PIT09bnVsbCYmXy56KGEsMTIsdGhpcy5PKTt2YXIgYj1uZXcgXy5WO25wKF8uSyhiLDM1LGEpLGp0KHRoaXMpKTtRcyh0aGlzLDk3LGIpfWpoKGEpe2EuZGF0YSYmYS5kYXRhLmV0JiZRcyh0aGlzLGEuZGF0YS5ldCl9VWQoYSxiKXt2YXIgYz1fLkZmKCJnYl9YIik7YyYmYyYmKGMucmVtb3ZlQXR0cmlidXRlKCJzcmNzZXQiKSxjLnNyYz1iKTt0aGlzLnNlbmRNZXNzYWdlKCJjcGMiLHtwOmF9KTt0aGlzLmRpc3BhdGNoRXZlbnQoInB1Iil9Y2coYSl7dGhpcy5TZD1hfVZkKGEpe3ZhciBiPW5ldyBNYXAsYz1uZXcgTWFwO2ZvcihsZXQgZCBvZiBhKXthPQpPYmplY3QuYXNzaWduKHt9LGQpO2xldCBlPWEuaWQ7aWYoYi5oYXMoZSkpdGhyb3cgRXJyb3IoImVhYCIrZSk7Yi5zZXQoZSwhMCk7YS5jYWxsYWJsZSYmKHRoaXMuUy5zZXQoZSxhLmNhbGxhYmxlKSxhLmNhbGxhYmxlUmVnaXN0ZXJlZD0hMCxkZWxldGUgYS5jYWxsYWJsZSk7Yy5zZXQoZSxhKX10aGlzLnNlbmRNZXNzYWdlKCJ1YWIiLHtpdHVkOmN9KX1lZyhhLGIsYyxkKXt0cnl7bGV0IGc9cXMoYSk7dmFyIGU7aWYoZT1iJiZjJiZkJiZnJiZfLnpiKF8uSGUoZywxKSkhPW51bGwmJl8uemIoXy5IZShnLDIpKSE9bnVsbCYmXy56YihfLkhlKGcsMykpIT1udWxsJiZfLnpiKF8uSGUoZyw0KSkhPW51bGwmJl8uZ2soZyx0cSw2KSl7dmFyIGY9Xy5KKGcsdHEsNik7ZT1fLnpiKF8uSGUoZiwxKSkhPW51bGx9aWYoIWUpcmV0dXJufWNhdGNoKGcpe2NvbnNvbGUuZXJyb3IoIkZhaWxlZCB0byBkZXNlcmlhbGl6ZSBwcm9tbzogIixnKTtyZXR1cm59dGhpcy5TLnNldCgicGljLWltcCIsYik7CnRoaXMuUy5zZXQoInBpYy1kaXMiLGMpO3RoaXMuUy5zZXQoInBpYy1jdGEiLGQpO3RoaXMuc2VuZE1lc3NhZ2UoInRpcGMiLHtwcjphfSl9YXN5bmMgSGcoYSl7aWYoYT1hLmRhdGEuYWlpKXtsZXQgYixjPWF3YWl0ICgoYj10aGlzLlMuZ2V0KGEpKT09bnVsbD92b2lkIDA6Yi5jYWxsKCkpO2MhPT12b2lkIDAmJnRoaXMuc2VuZE1lc3NhZ2UoImFpY3IiLHtyZXN1bHQ6YyxpZDphfSl9fU5mKGEpe2lmKHRoaXMud2QmJnRoaXMubGUmJihhPWEuZGF0YS5yaWQpJiZfLlJrLmhhcyhhKSl7dmFyIGI9dGhpcy5sZTtmcihiLmose3Jlc291cmNlSWQ6YSxpYjp7Y29sb3JTY2hlbWU6dGhpcy5GPyJkYXJrIjoibGlnaHQiLGxnOmIuUWEsbGM6NjQwLHVjOiEwfSxGZzpiLml9LHtFYjpiLkViLHpkOmIuemQsRGI6Yi5EYn0pfX19OwpzdD1mdW5jdGlvbigpe3RoaXMuaT1uZXcgWERvbWFpblJlcXVlc3Q7dGhpcy5yZWFkeVN0YXRlPTA7dGhpcy5vbnJlYWR5c3RhdGVjaGFuZ2U9bnVsbDt0aGlzLnJlc3BvbnNlVHlwZT10aGlzLnJlc3BvbnNlVGV4dD10aGlzLnJlc3BvbnNlPSIiO3RoaXMuc3RhdHVzPS0xO3RoaXMuc3RhdHVzVGV4dD0iIjt0aGlzLmkub25sb2FkPSgwLF8uRykodGhpcy5IZix0aGlzKTt0aGlzLmkub25lcnJvcj0oMCxfLkcpKHRoaXMuZ2UsdGhpcyk7dGhpcy5pLm9ucHJvZ3Jlc3M9KDAsXy5HKSh0aGlzLmRoLHRoaXMpO3RoaXMuaS5vbnRpbWVvdXQ9KDAsXy5HKSh0aGlzLmVoLHRoaXMpfTtfLnA9c3QucHJvdG90eXBlO18ucC5vcGVuPWZ1bmN0aW9uKGEsYixjKXtpZihjIT1udWxsJiYhYyl0aHJvdyBFcnJvcigicGEiKTt0aGlzLmkub3BlbihhLGIpfTsKXy5wLnNlbmQ9ZnVuY3Rpb24oYSl7aWYoYSlpZih0eXBlb2YgYT09InN0cmluZyIpdGhpcy5pLnNlbmQoYSk7ZWxzZSB0aHJvdyBFcnJvcigicWEiKTtlbHNlIHRoaXMuaS5zZW5kKCl9O18ucC5hYm9ydD1mdW5jdGlvbigpe3RoaXMuaS5hYm9ydCgpfTtfLnAuc2V0UmVxdWVzdEhlYWRlcj1mdW5jdGlvbigpe307Xy5wLmdldFJlc3BvbnNlSGVhZGVyPWZ1bmN0aW9uKGEpe3JldHVybiBhLnRvTG93ZXJDYXNlKCk9PSJjb250ZW50LXR5cGUiP3RoaXMuaS5jb250ZW50VHlwZToiIn07Xy5wLkhmPWZ1bmN0aW9uKCl7dGhpcy5zdGF0dXM9MjAwO3RoaXMucmVzcG9uc2U9dGhpcy5yZXNwb25zZVRleHQ9dGhpcy5pLnJlc3BvbnNlVGV4dDt0dCh0aGlzLDQpfTtfLnAuZ2U9ZnVuY3Rpb24oKXt0aGlzLnN0YXR1cz01MDA7dGhpcy5yZXNwb25zZT10aGlzLnJlc3BvbnNlVGV4dD0iIjt0dCh0aGlzLDQpfTtfLnAuZWg9ZnVuY3Rpb24oKXt0aGlzLmdlKCl9OwpfLnAuZGg9ZnVuY3Rpb24oKXt0aGlzLnN0YXR1cz0yMDA7dHQodGhpcywxKX07dmFyIHR0PWZ1bmN0aW9uKGEsYil7YS5yZWFkeVN0YXRlPWI7aWYoYS5vbnJlYWR5c3RhdGVjaGFuZ2UpYS5vbnJlYWR5c3RhdGVjaGFuZ2UoKX07c3QucHJvdG90eXBlLmdldEFsbFJlc3BvbnNlSGVhZGVycz1mdW5jdGlvbigpe3JldHVybiJjb250ZW50LXR5cGU6ICIrdGhpcy5pLmNvbnRlbnRUeXBlfTtfLkgoem8sXy5jZCk7em8ucHJvdG90eXBlLmk9ZnVuY3Rpb24oKXt2YXIgYT1uZXcgWE1MSHR0cFJlcXVlc3Q7aWYoIndpdGhDcmVkZW50aWFscyJpbiBhKXJldHVybiBhO2lmKHR5cGVvZiBYRG9tYWluUmVxdWVzdCE9InVuZGVmaW5lZCIpcmV0dXJuIG5ldyBzdDt0aHJvdyBFcnJvcigib2EiKTt9Owp2YXIgQm89e30sdXQsQW89MCx2dD1mdW5jdGlvbihhLGIpe3ZhciBjPV8ud2QoYSk7b3EoYixmdW5jdGlvbihkLGUpe0FycmF5LmlzQXJyYXkoZCl8fChkPVtkXSk7Xy5XZChkLGZ1bmN0aW9uKGYpe2Y9Yy5IYSgiSU5QVVQiLHt0eXBlOiJoaWRkZW4iLG5hbWU6ZSx2YWx1ZTpmfSk7YS5hcHBlbmRDaGlsZChmKX0pfSl9O18uSChDbyxfLkQpO18ucD1Dby5wcm90b3R5cGU7Xy5wLnVhPW51bGw7Xy5wLk9hPW51bGw7Xy5wLk5iPW51bGw7Xy5wLkFoPTA7Xy5wLlNhPSExO18ucC5TYz0hMTtfLnAucGQ9bnVsbDtfLnAud2I9bnVsbDsKXy5wLnNlbmQ9ZnVuY3Rpb24oYSxiLGMsZCl7aWYodGhpcy5TYSl0aHJvdyBFcnJvcigicmEiKTthPW5ldyBfLnhqKGEpO2I9Yj9iLnRvVXBwZXJDYXNlKCk6IkdFVCI7YyYmXy5PaihhLCJ6eCIsTWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpKjIxNDc0ODM2NDgpLnRvU3RyaW5nKDM2KStNYXRoLmFicyhNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkqMjE0NzQ4MzY0OCleRGF0ZS5ub3coKSkudG9TdHJpbmcoMzYpKTt1dHx8KHV0PWlxKCJGT1JNIiksdXQuYWNjZXB0Q2hhcnNldD0idXRmLTgiLGM9dXQuc3R5bGUsYy5wb3NpdGlvbj0iYWJzb2x1dGUiLGMudmlzaWJpbGl0eT0iaGlkZGVuIixjLnRvcD1jLmxlZnQ9Ii0xMHB4IixjLndpZHRoPWMuaGVpZ2h0PSIxMHB4IixjLm92ZXJmbG93PSJoaWRkZW4iLGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQodXQpKTt0aGlzLnVhPXV0O2I9PSJHRVQiJiZ2dCh0aGlzLnVhLGEuaSk7ZCYmdnQodGhpcy51YSxkKTtkPWEudG9TdHJpbmcoKTtJbih0aGlzLnVhLApuZXcgXy54YyhkPT09bnVsbD8ibnVsbCI6ZD09PXZvaWQgMD8idW5kZWZpbmVkIjpkKSk7dGhpcy51YS5tZXRob2Q9Yjt0aGlzLlNhPSEwO3RoaXMuTmI9dGhpcy5pKyJfIisodGhpcy5BaCsrKS50b1N0cmluZygzNik7dGhpcy5PYT1fLndkKHRoaXMudWEpLkhhKCJJRlJBTUUiLHtuYW1lOnRoaXMuTmIsaWQ6dGhpcy5OYn0pO2Q9dGhpcy5PYS5zdHlsZTtkLnZpc2liaWxpdHk9ImhpZGRlbiI7ZC53aWR0aD1kLmhlaWdodD0iMTBweCI7ZC5kaXNwbGF5PSJub25lIjtfLmhkP2QubWFyZ2luVG9wPWQubWFyZ2luTGVmdD0iLTEwcHgiOihkLnBvc2l0aW9uPSJhYnNvbHV0ZSIsZC50b3A9ZC5sZWZ0PSItMTBweCIpO18ud2QodGhpcy51YSkuaS5ib2R5LmFwcGVuZENoaWxkKHRoaXMuT2EpO2Q9dGhpcy5OYisiX2lubmVyIjtjPWtxKHRoaXMuT2EpO2RvY3VtZW50LmJhc2VVUkk/KGE9aHEoZCksYT0nPGhlYWQ+PGJhc2UgaHJlZj0iJytocShkb2N1bWVudC5iYXNlVVJJKSsnIj48L2hlYWQ+PGJvZHk+PGlmcmFtZSBpZD0iJysKYSsnIiBuYW1lPSInK2ErJyI+PC9pZnJhbWU+JyxhPV8ucmooYSkpOihhPWhxKGQpLGE9Xy5yaignPGJvZHk+PGlmcmFtZSBpZD0iJythKyciIG5hbWU9IicrYSsnIj48L2lmcmFtZT4nKSk7Yy53cml0ZShfLm1qKGEpKTtfLkYoYy5nZXRFbGVtZW50QnlJZChkKSwibG9hZCIsdGhpcy5PYywhMSx0aGlzKTthPV8uemwoIlRFWFRBUkVBIix0aGlzLnVhKTtmb3IobGV0IGY9MCxnPWEubGVuZ3RoO2Y8ZztmKyspe2I9YVtmXS52YWx1ZTt2YXIgZT1bXTtucShhW2ZdLGUsITEpO2Uuam9pbigiIikhPWImJihfLnlkKGFbZl0sYiksYVtmXS52YWx1ZT1iKX1hPWMuaW1wb3J0Tm9kZSh0aGlzLnVhLCEwKTthLnRhcmdldD1kO2EuYWN0aW9uPXRoaXMudWEuYWN0aW9uO2MuYm9keS5hcHBlbmRDaGlsZChhKTtiPV8uemwoIlNFTEVDVCIsdGhpcy51YSk7ZT1fLnpsKCJTRUxFQ1QiLGEpO2ZvcihsZXQgZj0wLGc9Yi5sZW5ndGg7ZjxnO2YrKyl7bGV0IGg9Xy56bCgiT1BUSU9OIixiW2ZdKSxrPV8uemwoIk9QVElPTiIsCmVbZl0pO2ZvcihsZXQgbD0wLG09aC5sZW5ndGg7bDxtO2wrKylrW2xdLnNlbGVjdGVkPWhbbF0uc2VsZWN0ZWR9Yj1fLnpsKCJJTlBVVCIsdGhpcy51YSk7ZT1fLnpsKCJJTlBVVCIsYSk7Zm9yKGxldCBmPTAsZz1iLmxlbmd0aDtmPGc7ZisrKWlmKGJbZl0udHlwZT09ImZpbGUiJiZiW2ZdLnZhbHVlIT1lW2ZdLnZhbHVlKXt0aGlzLnVhLnRhcmdldD1kO2E9dGhpcy51YTticmVha310cnl7dGhpcy5CPSExLGEuc3VibWl0KCksYy5jbG9zZSgpLF8uaWQmJnNldFRpbWVvdXQodGhpcy5DLmJpbmQodGhpcyksMjUwKX1jYXRjaChmKXtfLm5oKGMuZ2V0RWxlbWVudEJ5SWQoZCksImxvYWQiLHRoaXMuT2MsITEsdGhpcyksYy5jbG9zZSgpLHd0KHRoaXMpfXh0KHRoaXMpfTsKXy5wLmFib3J0PWZ1bmN0aW9uKCl7aWYodGhpcy5TYSl7dmFyIGE9eXQodGhpcyk7aWYoYSlpZihfLlhnKGEpKWEuQ2EmJl8uYWgoYS5DYSk7ZWxzZSBpZihhPV8uaGgoYSkpe3ZhciBiPTA7Zm9yKGxldCBjIGluIGEuaSl7bGV0IGQ9YS5pW2NdLmNvbmNhdCgpO2ZvcihsZXQgZT0wO2U8ZC5sZW5ndGg7KytlKV8ub2goZFtlXSkmJisrYn19dGhpcy5TYz10aGlzLlNhPSExO3RoaXMuZGlzcGF0Y2hFdmVudCgiYWJvcnQiKTt6dCh0aGlzKX19O18ucC5UPWZ1bmN0aW9uKCl7dGhpcy5TYSYmdGhpcy5hYm9ydCgpO0NvLlcuVC5jYWxsKHRoaXMpO3RoaXMuT2EmJkF0KHRoaXMpO3h0KHRoaXMpO3RoaXMudWE9bnVsbDtkZWxldGUgdGhpcy5BO3RoaXMucGQ9dGhpcy51YT1udWxsO2RlbGV0ZSBCb1t0aGlzLmldfTtfLnAuT2I9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5TY307Xy5wLmlzQWN0aXZlPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuU2F9O18ucC5FYz1mdW5jdGlvbigpe3JldHVybiB0aGlzLnBkfTsKXy5wLk9jPWZ1bmN0aW9uKCl7Xy5uaCh5dCh0aGlzKSwibG9hZCIsdGhpcy5PYywhMSx0aGlzKTt0cnl7dmFyIGE9dGhpcy5PYT9rcSh5dCh0aGlzKSk6bnVsbDt0aGlzLlNhPSExO2xldCBiO3RyeXtsZXQgZD1hLmJvZHk7dGhpcy5wZD1kLnRleHRDb250ZW50fHxkLmlubmVyVGV4dH1jYXRjaChkKXtiPTF9bGV0IGM7Ynx8dHlwZW9mIHRoaXMuQSE9ImZ1bmN0aW9uInx8KGM9dGhpcy5BKGEpKSYmKGI9NCk7Yj93dCh0aGlzKToodGhpcy5TYz0hMCx0aGlzLmRpc3BhdGNoRXZlbnQoImNvbXBsZXRlIiksdGhpcy5kaXNwYXRjaEV2ZW50KCJzdWNjZXNzIiksenQodGhpcykpfWNhdGNoKGIpe3d0KHRoaXMpfX07CnZhciB3dD1mdW5jdGlvbihhKXthLkJ8fChhLlNjPSExLGEuU2E9ITEsYS5kaXNwYXRjaEV2ZW50KCJjb21wbGV0ZSIpLGEuZGlzcGF0Y2hFdmVudCgiZXJyb3IiKSx6dChhKSxhLkI9ITApfSx6dD1mdW5jdGlvbihhKXtBdChhKTt4dChhKTthLnVhPW51bGw7YS5kaXNwYXRjaEV2ZW50KCJyZWFkeSIpfSxBdD1mdW5jdGlvbihhKXt2YXIgYj1hLk9hO2ImJihiLm9ucmVhZHlzdGF0ZWNoYW5nZT1udWxsLGIub25sb2FkPW51bGwsYi5vbmVycm9yPW51bGwsYS5qLnB1c2goYikpO2Eud2ImJihjbGVhclRpbWVvdXQoYS53YiksYS53Yj1udWxsKTtfLmlkP2Eud2I9c2V0VGltZW91dChhLnYuYmluZChhKSwyRTMpOmEudigpO2EuT2E9bnVsbDthLk5iPW51bGx9O0NvLnByb3RvdHlwZS52PWZ1bmN0aW9uKCl7dGhpcy53YiYmKGNsZWFyVGltZW91dCh0aGlzLndiKSx0aGlzLndiPW51bGwpO2Zvcig7dGhpcy5qLmxlbmd0aCE9MDspe2xldCBhPXRoaXMuai5wb3AoKTtfLlJmKGEpfX07CnZhciB4dD1mdW5jdGlvbihhKXthLnVhJiZhLnVhPT11dCYmXy5RZihhLnVhKX0seXQ9ZnVuY3Rpb24oYSl7cmV0dXJuIGEuT2E/a3EoYS5PYSkuZ2V0RWxlbWVudEJ5SWQoYS5OYisiX2lubmVyIik6bnVsbH07Q28ucHJvdG90eXBlLkM9ZnVuY3Rpb24oKXtpZih0aGlzLlNhKXtsZXQgYT10aGlzLk9hP2txKHl0KHRoaXMpKTpudWxsO2EmJiFfLlpkKGEsImRvY3VtZW50VXJpIik/KF8ubmgoeXQodGhpcyksImxvYWQiLHRoaXMuT2MsITEsdGhpcyksd3QodGhpcykpOnNldFRpbWVvdXQodGhpcy5DLmJpbmQodGhpcyksMjUwKX19Owp2YXIgQnQ9ZnVuY3Rpb24oYSl7dmFyIGI9Yz0+ZW5jb2RlVVJJQ29tcG9uZW50KGMpLnJlcGxhY2UoL1shKCl+J118KCUyMCkvZyxkPT4oeyIhIjoiJTIxIiwiKCI6IiUyOCIsIikiOiIlMjkiLCIlMjAiOiIrIiwiJyI6IiUyNyIsIn4iOiIlN0UifSlbZF0pO3JldHVybiBBcnJheS5mcm9tKGEsYz0+YihjWzBdKSsiPSIrYihjWzFdKSkuam9pbigiJiIpfSxDdD1mdW5jdGlvbihhKXt2YXIgYj1fLlBmKCJBIik7dHJ5e18ucGsoYixuZXcgXy54YyhhKSk7dmFyIGM9Yi5wcm90b2NvbH1jYXRjaChlKXt0aHJvdyBFcnJvcigic2FgIithKTt9aWYoYz09PSIifHxjPT09IjoifHxjW2MubGVuZ3RoLTFdIT0iOiIpdGhyb3cgRXJyb3IoInNhYCIrYSk7aWYoIV8ub20uaGFzKGMpKXRocm93IEVycm9yKCJzYWAiK2EpO2lmKCFiLmhvc3RuYW1lKXRocm93IEVycm9yKCJzYWAiK2EpO3ZhciBkPWIuaHJlZjthPXtocmVmOmQscHJvdG9jb2w6Yi5wcm90b2NvbCx1c2VybmFtZToiIixwYXNzd29yZDoiIiwKaG9zdG5hbWU6Yi5ob3N0bmFtZSxwYXRobmFtZToiLyIrYi5wYXRobmFtZSxzZWFyY2g6Yi5zZWFyY2gsaGFzaDpiLmhhc2gsdG9TdHJpbmc6KCk9PmR9O18ub20uZ2V0KGIucHJvdG9jb2wpPT09Yi5wb3J0PyhhLmhvc3Q9YS5ob3N0bmFtZSxhLnBvcnQ9IiIsYS5vcmlnaW49YS5wcm90b2NvbCsiLy8iK2EuaG9zdG5hbWUpOihhLmhvc3Q9Yi5ob3N0LGEucG9ydD1iLnBvcnQsYS5vcmlnaW49YS5wcm90b2NvbCsiLy8iK2EuaG9zdG5hbWUrIjoiK2EucG9ydCk7cmV0dXJuIGF9LER0PWZ1bmN0aW9uKGEpe2lmKF8ubm0pe3t0cnl7dmFyIGI9bmV3IF8ubG0oYSl9Y2F0Y2goZCl7dGhyb3cgRXJyb3IoInNhYCIrYSk7fWxldCBjPV8ub20uZ2V0KGIucHJvdG9jb2wpO2lmKCFjKXRocm93IEVycm9yKCJzYWAiK2EpO2lmKCFiLmhvc3RuYW1lKXRocm93IEVycm9yKCJzYWAiK2EpO2Iub3JpZ2luPT0ibnVsbCImJihhPXtocmVmOmIuaHJlZixwcm90b2NvbDpiLnByb3RvY29sLHVzZXJuYW1lOiIiLApwYXNzd29yZDoiIixob3N0OmIuaG9zdCxwb3J0OmIucG9ydCxob3N0bmFtZTpiLmhvc3RuYW1lLHBhdGhuYW1lOmIucGF0aG5hbWUsc2VhcmNoOmIuc2VhcmNoLGhhc2g6Yi5oYXNofSxhLm9yaWdpbj1jPT09Yi5wb3J0P2IucHJvdG9jb2wrIi8vIitiLmhvc3RuYW1lOmIucHJvdG9jb2wrIi8vIitiLmhvc3RuYW1lKyI6IitiLnBvcnQsYj1hKX1yZXR1cm4gYn1yZXR1cm4gQ3QoYSl9LEV0PWZ1bmN0aW9uKGEsYixjLGQsZSxmLGcpe3ZhciBoPXt9O2gucD1jO2guZz1iO2guYT1kO2guYXQ9ZTtoLmVpZD1mO2gucGlkPTE7aWYoZylnLnN0YXJ0c1dpdGgoIj09PT09PT09PT0iKT9oLnRrPWcuc3Vic3RyaW5nKDEwLGcubGVuZ3RoKTpoLnQ9ZztlbHNlIHJldHVybiBhLmxvZyhFcnJvcigidWEiKSksbnVsbDtyZXR1cm4gaH0sRnQ9ZnVuY3Rpb24oYSxiLGMsZCxlLGYpe2lmKGEpe2U9RHQoZSsoZD8iZyI6InoiKSk7Yz1bWyJvcGkiLGNdXTtkJiZiJiZjLnB1c2goWyJhdXRodXNlciIsYl0pOwpkPXtzZWFyY2hQYXJhbXM6Y307Yj17fTtlJiYoYi5wcm90b2NvbD1lLnByb3RvY29sLGIudXNlcm5hbWU9ZS51c2VybmFtZSxiLnBhc3N3b3JkPWUucGFzc3dvcmQsYi5ob3N0bmFtZT1lLmhvc3RuYW1lLGIucG9ydD1lLnBvcnQsYi5wYXRobmFtZT1lLnBhdGhuYW1lLGIuc2VhcmNoPWUuc2VhcmNoLGIuaGFzaD1lLmhhc2gpO09iamVjdC5hc3NpZ24oYixkKTtpZihiLnBvcnQmJmIucG9ydFswXT09PSI6Iil0aHJvdyBFcnJvcigidGEiKTtiLmhhc2gmJmIuaGFzaFswXSE9IiMiJiYoYi5oYXNoPSIjIitiLmhhc2gpO2Quc2VhcmNoP2Quc2VhcmNoWzBdIT0iPyImJihiLnNlYXJjaD0iPyIrZC5zZWFyY2gpOmQuc2VhcmNoUGFyYW1zJiYoYi5zZWFyY2g9Ij8iK0J0KGQuc2VhcmNoUGFyYW1zKSxiLnNlYXJjaFBhcmFtcz12b2lkIDApO2M9IiI7Yi5wcm90b2NvbCYmKGMrPWIucHJvdG9jb2wrIi8vIik7ZT1iLnVzZXJuYW1lO2Q9Yi5wYXNzd29yZDtjPWMrKGUmJmQ/ZSsiOiIrZCsiQCI6CmU/ZSsiQCI6ZD8iOiIrZCsiQCI6IiIpKyhiLmhvc3RuYW1lfHwiIik7Yi5wb3J0JiYoYys9IjoiK2IucG9ydCk7Yys9Yi5wYXRobmFtZXx8IiI7Yys9Yi5zZWFyY2h8fCIiO2MrPWIuaGFzaHx8IiI7ZT1EdChjKS50b1N0cmluZygpO3RyeXtfLnNoPW5ldyB6bztiPVtdO2Zvcih2YXIgZyBpbiBhKWEuaGFzT3duUHJvcGVydHkoZykmJmIucHVzaChnKyI9IithW2ddKTtfLnloKGUsZiwiUE9TVCIsYi5qb2luKCImIiksbnVsbCx2b2lkIDAsITApfWNhdGNoKGgpe2Y9ZSxnPW5ldyBDbyxfLkYoZywicmVhZHkiLGcuZGlzcG9zZSwhMSxnKSxnLnNlbmQoZiwiUE9TVCIsITEsYSl9fX0sR3Q9Y2xhc3N7Y29uc3RydWN0b3IoYSxiKXt0aGlzLmo9YTt0aGlzLmk9Yn10Yigpe3JldHVybiB0aGlzLml9fTtfLkh0PWNsYXNzIGV4dGVuZHMgXy5Ve2NvbnN0cnVjdG9yKGEpe3N1cGVyKGEsNTAwKX1oYihhKXtyZXR1cm4gXy5UKHRoaXMsMyxhKX19O3ZhciBJdD1jbGFzcyBleHRlbmRzIF8uVXtjb25zdHJ1Y3RvcihhKXtzdXBlcihhKX1SYihhKXtyZXR1cm4gXy56KHRoaXMsMyxhKX1mZihhKXtyZXR1cm4gXy5UKHRoaXMsNixhKX19O18uSnQ9bmV3IF8uR2woIi9nb29nbGUuaW50ZXJuYWwub25lZ29vZ2xlLmFzeW5jZGF0YS52MS5Bc3luY0RhdGFTZXJ2aWNlL0dldEFzeW5jRGF0YSIsXy5IdCxJdCxhPT5hLmxhKCksXy5yYyhJdCkpO18uS3Q9Y2xhc3MgZXh0ZW5kcyBfLlV7Y29uc3RydWN0b3IoYSl7c3VwZXIoYSl9aGIoYSl7cmV0dXJuIF8uVCh0aGlzLDQsYSl9fTt2YXIgTHQ9Y2xhc3MgZXh0ZW5kcyBfLlV7Y29uc3RydWN0b3IoYSl7c3VwZXIoYSl9fTtfLk10PW5ldyBfLkdsKCIvZ29vZ2xlLmludGVybmFsLm9uZWdvb2dsZS5hc3luY2RhdGEudjEuQXN5bmNEYXRhU2VydmljZS9SZXBvcnRTdGF0ZSIsXy5LdCxMdCxhPT5hLmxhKCksXy5yYyhMdCkpO3ZhciBHbz1SZWdFeHAoIl5kYXRhOmltYWdlLyg/OmJtcHxnaWZ8anBlZ3xqcGd8cG5nfHRpZmZ8d2VicHx4LWljb24pO2Jhc2U2NCxbLSsvX2EtejAtOV0rKD86PXwlM2QpKiQiLCJpIiksRW89e2JsdXI6ITAsYnJpZ2h0bmVzczohMCxjYWxjOiEwLGNpcmNsZTohMCxjbGFtcDohMCwiY29uaWMtZ3JhZGllbnQiOiEwLGNvbnRyYXN0OiEwLGNvdW50ZXI6ITAsY291bnRlcnM6ITAsImN1YmljLWJlemllciI6ITAsImRyb3Atc2hhZG93IjohMCxlbGxpcHNlOiEwLGdyYXlzY2FsZTohMCxoc2w6ITAsaHNsYTohMCwiaHVlLXJvdGF0ZSI6ITAsaW5zZXQ6ITAsaW52ZXJ0OiEwLG9wYWNpdHk6ITAsImxpbmVhci1ncmFkaWVudCI6ITAsbWF0cml4OiEwLG1hdHJpeDNkOiEwLG1heDohMCxtaW46ITAsbWlubWF4OiEwLHBvbHlnb246ITAsInJhZGlhbC1ncmFkaWVudCI6ITAscmdiOiEwLHJnYmE6ITAscmVjdDohMCxyZXBlYXQ6ITAscm90YXRlOiEwLHJvdGF0ZTNkOiEwLHJvdGF0ZXg6ITAscm90YXRleTohMCwKcm90YXRlejohMCxzYXR1cmF0ZTohMCxzZXBpYTohMCxzY2FsZTohMCxzY2FsZTNkOiEwLHNjYWxleDohMCxzY2FsZXk6ITAsc2NhbGV6OiEwLHN0ZXBzOiEwLHNrZXc6ITAsc2tld3g6ITAsc2tld3k6ITAsdHJhbnNsYXRlOiEwLHRyYW5zbGF0ZTNkOiEwLHRyYW5zbGF0ZXg6ITAsdHJhbnNsYXRleTohMCx0cmFuc2xhdGV6OiEwLCJ2YXIiOiEwfSxGbz1SZWdFeHAoIl4oPzpbKi9dPyg/Oig/OlsrXFwtLiwhIyVfYS16QS1aMC05XHRdfCApfFxcKXxbYS16QS1aMC05XVxcKHwkKSkqJCIpLERvPVJlZ0V4cCgiXi0oPzptb3p8bXN8b3x3ZWJraXR8Y3NzMyktKC4qKSQiKTt2YXIgTnQ9ZnVuY3Rpb24oKXt9O3ZhciBPdD1mdW5jdGlvbihhKXt0aGlzLmk9YXx8e319O18uSChPdCxOdCk7dmFyIElvPWZ1bmN0aW9uKCl7UHR8fChQdD1uZXcgT3QsXy5mYSgpJiYhXy52KCJFZGdlIik/UXQoIi13ZWJraXQtIik6Xy5wYSgpP1F0KCItbW96LSIpOl8ub2EoKT9RdCgiLW1zLSIpOl8ubmEoKSYmUXQoIi1vLSIpLFB0LmkuaXNfcnRsPSExLFB0LmkubGFuZ3VhZ2U9ImVuLVVTIik7dmFyIGE9UHQuaS5pc19ydGw7cmV0dXJuIShhPT1udWxsfHwhYSl9LFF0PWZ1bmN0aW9uKGEpe1B0LmkuY3NzM19wcmVmaXg9YX07dmFyIFB0PW51bGw7dmFyIEtvPS9bJyJcKF0vLE5vPVsiYm9yZGVyLWNvbG9yIiwiYm9yZGVyLXN0eWxlIiwiYm9yZGVyLXdpZHRoIiwibWFyZ2luIiwicGFkZGluZyJdLExvPS9sZWZ0L2csTW89L3JpZ2h0L2csT289L1xzKy87dmFyIFJ0PXsiZm9yIjoiaHRtbEZvciIsImNsYXNzIjoiY2xhc3NOYW1lIn07Zm9yKGxldCBhIGluIFJ0KTt2YXIgUm89LyYvZyxTbz0vPC9nLFRvPS8+L2csVW89LyIvZyxRbz0vWyY8PiJdLzt2YXIgU3Q9ZnVuY3Rpb24oYSl7dmFyIGI9YS5tYXRjaCgvXGJocmVmPSIvZyk7aWYoIWJ8fGIubGVuZ3RoPD0xKXJldHVybiBhO3ZhciBjPW5ldyBfLnhqO2E9YS5yZXBsYWNlKC9cYmhyZWY9IiguKj8pIi9nLGZ1bmN0aW9uKGQsZSl7ZD1uZXcgXy54aihlKTtjLkF8fF8ueWooYyxkLkEpO2MuQnx8Xy56aihjLGQuQik7Yy5qfHxfLkJqKGMsZC5qKTtjLnZ8fChjLnY9ZC52KTtmb3IobGV0IGYgb2YgZC5pLnJiKCkpXy5UaihjLmksZil8fF8uVWooYy5pLGYsZC5pLlBhKGYpKTtyZXR1cm4iIn0pO2E9YS5yZXBsYWNlKC9cc1xzKy9nLCIgIikucmVwbGFjZSgvXHMrJC9nLCIiKTtyZXR1cm5gJHthfSBocmVmPSIke2MudG9TdHJpbmcoKX0iYH0sVHQ9ZnVuY3Rpb24oYSl7cmV0dXJuIGE9PT0iIj8iIjpgIGNsYXNzPSIke2EuY2hhckF0KGEubGVuZ3RoLTEpPT09IiAiP2Euc2xpY2UoMCwtMSk6YX0iYH0sVXQ9ZnVuY3Rpb24oYSl7cmV0dXJuIGEhPT0iIj9gIHN0eWxlPSIke2F9ImA6IiJ9O3ZhciBWdD1mdW5jdGlvbihhKXt2YXIgYj1hLmkuY3JlYXRlRWxlbWVudCgiU1RZTEUiKTthLmkuaGVhZD9hLmkuaGVhZC5hcHBlbmRDaGlsZChiKTphLmkuYm9keS5hcHBlbmRDaGlsZChiKTtyZXR1cm4gYn0sV3Q9ZnVuY3Rpb24oYSl7aWYoIWEuaXx8YS5qLmxlbmd0aD09MClyZXR1cm4iIjt2YXIgYj1hLmouam9pbigiIik7aWYoXy5hZSl7YS52fHwoYS52PVZ0KGEpKTt2YXIgYz1hLnZ9ZWxzZSBjPVZ0KGEpO2Muc3R5bGVTaGVldCYmIWMuc2hlZXQ/Yy5zdHlsZVNoZWV0LmNzc1RleHQrPWI6Yy50ZXh0Q29udGVudCs9YjthLmoubGVuZ3RoPTA7cmV0dXJuIiJ9LFh0PWNsYXNze2NvbnN0cnVjdG9yKGE9ZG9jdW1lbnQpe3RoaXMuaT1hO3RoaXMudj1udWxsO3RoaXMuaj1bXX19O3ZhciBZdD1mdW5jdGlvbihhLGIsYyxkLGUsZj1udWxsLGc9bnVsbCxoPSIiLGs9bnVsbCxsPSIiLG09bnVsbCxuPW51bGwpe2E9YS52O2lmKCFBcnJheS5pc0FycmF5KGMpKXt2YXIgcj1bXTtmb3IobGV0IHEgaW4gYylyW2NbcV1dPXE7Yz1yfWFbYl09e09sOmMsVmw6ZCxXbDplLHRtOmYsWmw6Zyx1bTpoLHFtOmssdm06bCxybTptLHdtOiIiLHNtOm4sWWw6ITB9fSxadD1jbGFzc3tjb25zdHJ1Y3RvcihhPWRvY3VtZW50LGIsYz1uZXcgWHQoYSkpe3RoaXMuQT1jO25ldyBjbGFzc3t9O3RoaXMudj17fTt0aGlzLmk9W0lvKCldfX07dmFyICR0PWE9Pntzd2l0Y2goYSl7Y2FzZSAiaSI6cmV0dXJuIDM2O2Nhc2UgIngiOnJldHVybiAzNztjYXNlICJuIjpyZXR1cm4gMzc7Y2FzZSAiYSI6cmV0dXJuIDM4O2Nhc2UgImQiOnJldHVybiAzNztjYXNlICJlZCI6cmV0dXJuIDM3O2Nhc2UgImFtX29wIjpyZXR1cm4gMzc7Y2FzZSAiZW5kIjpyZXR1cm4gMzg7Y2FzZSAiZXJfZW0iOnJldHVybiA3MjtjYXNlICJybCI6cmV0dXJuIDc3O2Nhc2UgImxjIjpyZXR1cm4gMTExO2Nhc2UgInRiYyI6cmV0dXJuIDE1MDtjYXNlICJ0ZCI6cmV0dXJuIDE1MTtjYXNlICJoYyI6cmV0dXJuIDExMjtjYXNlICJkbCI6cmV0dXJuIDM4O2Nhc2UgImtwX3BmIjpyZXR1cm4gMTIxO2Nhc2UgIm5fZmRiIjpyZXR1cm4gMTIyO2Nhc2UgInlfZmRiIjpyZXR1cm4gMTIzO2RlZmF1bHQ6cmV0dXJuIDB9fSxhdT1hPT57dmFyIGI9bmV3IF8uVjtzd2l0Y2goYSl7Y2FzZSAieCI6Xy5UKGIsMjgsMSk7YnJlYWs7Y2FzZSAibiI6Xy5UKGIsMjgsMik7YnJlYWs7CmNhc2UgImFtX29wIjpfLlQoYiwyOCw0KTticmVhaztjYXNlICJhIjpfLlQoYiwyOSwxKTticmVhaztjYXNlICJlcl9lbSI6Xy5UKGIsMzAsMSk7YnJlYWs7Y2FzZSAiZWQiOl8uVChiLDI4LDMpO2JyZWFrO2Nhc2UgImVuZCI6Xy5UKGIsMjksMyl9cmV0dXJuIGJ9LGJ1PWZ1bmN0aW9uKGEsYixjLGQsZSxmLGcsaCxrLGwsbSxuLHIscSx0LEIsQyl7dmFyIEU9JHQoYik7aWYoRSE9PTApe2I9YXUoYik7Qnx8Xy5TKGIsMzEsYyk7Xy5TKGIsMzksZik7Yz1rcChqcChuZXcgXy5scCxkKSxlKTtCJiZfLksoYyw5LEIpO20hPT12b2lkIDAmJl8ueihjLDQsbSk7biE9PXZvaWQgMCYmXy56KGMsNSxuKTtFPT09MzYmJihjLlJiKGgpLHQmJl8uUWUoYiwyNCxEYXRlLm5vdygpLXQpKTtxJiZfLkllKGMsOCxfLnRiKHEpKTtrJiYoXy56KGMsNixrKSxsJiZfLksoYyw3LGwpKTtDJiZfLksoYywxMCxDKTtfLm9wKGIsYyk7aWYoZyl7aD0hMTt0cnl7dmFyIEE9Zy5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKX1jYXRjaChSKXtfLlQoYiwKNDksMSksaD0hMH1BIT1udWxsJiYoXy5TKGIsNDMsQS50b3ApLF8uUyhiLDQ0LEEuYm90dG9tKSxfLlMoYiw0NSxBLmxlZnQpLF8uUyhiLDQ2LEEucmlnaHQpKTtBIT1udWxsJiZBLnRvcC1BLmJvdHRvbSE9PTB8fGh8fChkb2N1bWVudC5ib2R5LmNvbnRhaW5zKGcpP18ud20oZyxSPT5fLlNmKFIpJiZSLnN0eWxlLmRpc3BsYXk9PSJub25lIikmJl8uVChiLDQ5LDMpOl8uVChiLDQ5LDIpKX1yIT1udWxsJiZucChiLHIpO2EubG9nKEUsYil9fTt2YXIgY3U9WyJhIiwiZXJfZW0iLCJsYyIsIm5fZmRiIiwieV9mZGIiXSxkdT1mdW5jdGlvbihhKXtpZighYS5MKXJldHVybiExO2lmKGEuailyZXR1cm4hMDt2YXIgYj1fLmlrLmkoKS5pLnBfbG9nfHxudWxsO2Euaj1iO3JldHVybiEhYS5qfSxldT1jbGFzc3tjb25zdHJ1Y3RvcihhLGIsYyxkLGUsZixnLGgpe3RoaXMudj1hO3RoaXMuaj1udWxsO3RoaXMuaT1iO3RoaXMuQT1jO3RoaXMuQz1lO3RoaXMuSD1mO3RoaXMuWD1oO3RoaXMuQj1kO3RoaXMuRD10aGlzLks9ITE7dGhpcy5MPWd9bG9nKGEsYixjLGQsZSxmLGcsaCxrLGwpeyFjdS5pbmNsdWRlcyhhKSYmZHUodGhpcykmJnRoaXMuai5sb2codGhpcy5pLnRvU3RyaW5nKCksIjciLGEsIiZhcD0xIitiLGMpO2lmKGE9PT0iaSIpe2lmKHRoaXMuRClyZXR1cm47dGhpcy5LJiYoYT0icmwiLHRoaXMuRD0hMCk7dGhpcy5LPSEwfWJ1KHRoaXMudixhLHRoaXMuaSx0aGlzLkEsdGhpcy5CLHRoaXMuQyxkLCExLHRoaXMuSCx0aGlzLlgsCmYsZyxlLGgsayx2b2lkIDAsbCl9RihhKXtkdSh0aGlzKSYmdGhpcy5qLmxvZyh0aGlzLmkudG9TdHJpbmcoKSwiNyIsImkiLCImYXA9MSZ2aXM9MCIsYSk7YnUodGhpcy52LCJpIix0aGlzLmksdGhpcy5BLHRoaXMuQix0aGlzLkMsbnVsbCwhMCl9Rygpe2J1KHRoaXMudiwia3BfcGYiLHRoaXMuaSx0aGlzLkEsdGhpcy5CLHRoaXMuQyxudWxsKX19O3ZhciBmdT1jbGFzc3tjb25zdHJ1Y3RvcihhKXt0aGlzLmk9YX13YSgpe3RoaXMuaS53YSgpfX07dmFyIGd1PWNsYXNze2NvbnN0cnVjdG9yKGEsYixjLGQ9bnVsbCl7dGhpcy52PWE7dGhpcy5pPWI7dGhpcy5qPWQ7dGhpcy5DPWM7dGhpcy5CPXRoaXMuQT0hMX1sb2coYSxiLGMsZCxlLGYsZyxoLGssbCl7aWYoYT09PSJpIil7aWYodGhpcy5CKXJldHVybjt0aGlzLkEmJihhPSJybCIsdGhpcy5CPSEwKTt0aGlzLkE9ITA7dGhpcy5qJiZ0aGlzLmouTCgxLHRoaXMuaSl9YnUodGhpcy52LGEsMCx0aGlzLkMsMCwwLGQsITEsdm9pZCAwLHZvaWQgMCx2b2lkIDAsdm9pZCAwLGUsdm9pZCAwLGssdGhpcy5pLGwpfUYoKXtidSh0aGlzLnYsImkiLDAsdGhpcy5DLDAsMCxudWxsLCEwLHZvaWQgMCx2b2lkIDAsdm9pZCAwLHZvaWQgMCx2b2lkIDAsdm9pZCAwLHZvaWQgMCx0aGlzLmkpO3RoaXMuaiYmdGhpcy5qLkwoNCx0aGlzLmkpfUcoKXt9fTt2YXIgaHU9Y2xhc3MgZXh0ZW5kcyBfLnh7Y29uc3RydWN0b3IoYSxiLGM9KCk9Pnt9KXtzdXBlcigpO3RoaXMuQz1hO3RoaXMudj0hMTt0aGlzLkQ9Yjt0aGlzLkY9YztpZihhPXRoaXMuQy5tYXRjaCgvXmNvbW1hbmQ6KFxkKykoXC8/KSQvKSl0aGlzLnY9ITAsdGhpcy5pPXBhcnNlSW50KGFbMV0sMTApLHRoaXMuQj0hMX1BKGEpe3RoaXMuQnx8KGE9YS5hYigpLGEub3JpZ2luPT09ImNocm9tZTovL25ldy10YWItcGFnZSImJmEuZGF0YSYmYS5kYXRhLm1lc3NhZ2VUeXBlPT09ImNhbi1zaG93LXByb21vLXdpdGgtYnJvd3Nlci1jb21tYW5kIiYmKHRoaXMuaiYmdGhpcy5qLkdhKHdpbmRvdywibWVzc2FnZSIsdGhpcy5BLCExLHRoaXMpLHRoaXMuQj0hMCxhLmRhdGFbdGhpcy5pLnRvU3RyaW5nKCldP3RoaXMuRCgpOnRoaXMuRigpKSl9fTt2YXIgaXU9ZnVuY3Rpb24oYSl7YS5qLkkoYS5BLCJwbG9nIixhLlIpO2Euai52YShhLkEsInB0YyIsYS5jYSk7YS5qLnZhKGEuQSwicHRkIixhLmVhKTthLmouSShhLkEsInNhdmVjIixhLkQpO2Euai5JKGEuQSwic2F2ZWsiLGEuRCk7YS5qLkkoYS5BLCJjYWV2IixhLkQpO2Euai52YShhLmksInJhdiIsYS5TKTthLmoudmEoYS5pLCJoIixhLlApO2Euai52YShhLkEsImRpc21pc3MiLGEuVSk7YS5qLkkoYS5BLCJmZGIiLGEuVik7YS5IJiZfLldkKGEuSCxiPT57Xy51bShhLmosYixhLlopfSk7YS5HJiZfLldkKGEuRyxiPT57Xy51bShhLmosYixhLk8pfSl9LGp1PWNsYXNzIGV4dGVuZHMgXy5Ee2NvbnN0cnVjdG9yKGEsYixjLGQsZSxmLGcsaD1udWxsLGs9bnVsbCl7c3VwZXIoKTt0aGlzLkE9YTt0aGlzLmk9Yjt0aGlzLnY9ZDt0aGlzLmo9bmV3IF8udGQodGhpcyk7Xy53Zih0aGlzLHRoaXMuaik7dGhpcy5NPWU7dGhpcy5CPWM7dGhpcy5MPSExO3RoaXMuSD1mO3RoaXMuRz1nO3RoaXMuQz0KITE7dGhpcy5GPWg7dGhpcy5OPWs7aXUodGhpcyl9Wigpe18uV3ModGhpcy5pLCExKTt0aGlzLmkucWUmJiF0aGlzLkMmJih0aGlzLnYmJih0aGlzLnYud2EoKSx0aGlzLkM9ITApLHRoaXMuQi5sb2coImFtX29wIiwiIiwxLHRoaXMuaS5KKCksanQodGhpcy5pKSx0aGlzLmkuUix2b2lkIDApKX1PKCl7Xy5Xcyh0aGlzLmksITEpfVMoKXt0aGlzLkw9ITA7dGhpcy52JiYodGhpcy5pLmpjP3RoaXMudi5pLks9ITA6Xy5pbSh0aGlzLnYuaSkpO3RoaXMuQi5sb2coImkiLCImdmlzPTEiLDEsdGhpcy5pLkooKSxqdCh0aGlzLmkpLHRoaXMuaS5SLHRoaXMuaS5qYyx2b2lkIDAsdGhpcy5pLlBkLHRoaXMuaS5NKTtpcz0oKT0+e3RoaXMuaS5pc1Zpc2libGUoKSYmXy5Xcyh0aGlzLmksITEpfX1QKCl7aWYoIXRoaXMuTCl7dmFyIGE9dGhpcy5pO2EuY2N8fGEueGR8fFFzKGEsMTE0KX1hPWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoIi5nYl81YSIpO2EhPW51bGw/YS5mb2N1cygpOihhPWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoIi5nYl83YSIpLAphIT1udWxsJiZhLmZvY3VzKCkpfVUoYSl7dmFyIGI9YS5kYXRhJiZhLmRhdGEudHlwZT9hLmRhdGEudHlwZToiZCIsYz1hLmRhdGEmJmEuZGF0YS5uZCYmKGI9PT0iYSJ8fGI9PT0iZGwiKSxkPWEuZGF0YSYmYS5kYXRhLmFlaT9hLmRhdGEuYWVpOnZvaWQgMDtpZihiPT09ImRsIil7dmFyIGU9dGhpcy5NO2UuaSYmd2luZG93LnRvcC5wb3N0TWVzc2FnZSh7ZnJhbWVUeXBlOiJvbmUtZ29vZ2xlLWJhciIsbWVzc2FnZVR5cGU6ImV4ZWN1dGUtYnJvd3Nlci1jb21tYW5kIixkYXRhOntjb21tYW5kSWQ6ZS5pLGNsaWNrSW5mbzphLmRhdGEuY2xpY2tJbmZvfX0sImNocm9tZTovL25ldy10YWItcGFnZSIpfWIhPT0iZW5kIiYmIWMmJnRoaXMudiYmKHRoaXMudi53YSgpLHRoaXMuQz0hMCk7YT0wO2lmKGI9PT0iYSIpYT0yO2Vsc2UgaWYoYj09ImQifHxiPT0ibiJ8fGI9PSJlZCIpYT0zO3RoaXMuRiYmdGhpcy5OLkwoYSx0aGlzLkYpO18uV3ModGhpcy5pLCExKTt0aGlzLkIubG9nKGIsIiIsCjEsdGhpcy5pLkooKSxqdCh0aGlzLmkpLHRoaXMuaS5SLHZvaWQgMCxkLHZvaWQgMCx0aGlzLmkuTSl9Y2EoKXtfLldzKHRoaXMuaSwhMSk7dGhpcy5CLmxvZygidGJjIiwiIiwxLHRoaXMuaS5KKCksanQodGhpcy5pKSx2b2lkIDAsdm9pZCAwLHZvaWQgMCx0aGlzLmkuTSl9ZWEoKXtfLldzKHRoaXMuaSwhMSk7dGhpcy5CLmxvZygidGQiLCIiLDEsdGhpcy5pLkooKSxqdCh0aGlzLmkpLHZvaWQgMCx2b2lkIDAsdm9pZCAwLHRoaXMuaS5NKX1WKGEpe2E9YS5kYXRhLmxkLmFwYXRrO2EhPT0ieV9mZGIiJiZhIT09Im5fZmRiInx8dGhpcy5CLmxvZyhhLCIiLDEsdGhpcy5pLkooKSxqdCh0aGlzLmkpLHRoaXMuaS5SLHZvaWQgMCx2b2lkIDAsdm9pZCAwLHRoaXMuaS5NKX1EKGEpe3N3aXRjaChhLmRhdGEuYXBhdGspe2Nhc2UgImQiOnRoaXMudiYmdGhpcy52LndhKCl9fVIoYSl7dmFyIGI9YS5kYXRhLmxkO2E9Yi5hcGF0aztpZihhIT0iaSIpe3ZhciBjPWIuc3A7Yj1iLmFkO3ZhciBkPQp0aGlzLmkuSigpLGU9anQodGhpcy5pKTt0aGlzLkIubG9nKGEsYixjLGQsZSx2b2lkIDAsdm9pZCAwLHZvaWQgMCx0aGlzLmkuTSl9fX07dmFyIGt1PWNsYXNzIGV4dGVuZHMgXy5qbXtjb25zdHJ1Y3RvcihhLGIsYyxkLGUsZixnLGgsayxsLG0pe3N1cGVyKGIsYyxrKTt0aGlzLkI9YTtsfHxtPyh0aGlzLk49aCx0aGlzLkM9ZCx0aGlzLkc9ZSx0aGlzLkY9bHx8bXx8IiIsdGhpcy5YPSEhbSx0aGlzLkw9Zix0aGlzLkg9Zyk6YS5sb2coRXJyb3IoInlhIikpfWooYSxiKXthPyhhPXRoaXMuRywoYj1FdCh0aGlzLkIsdGhpcy5ncm91cElkLHRoaXMuQywiYSIsMyxifHwiIix0aGlzLkYpKSYmKGIudT1hKSk6KGE9dGhpcy5HLChiPUV0KHRoaXMuQix0aGlzLmdyb3VwSWQsdGhpcy5DLCJkIiwyLGJ8fCIiLHRoaXMuRikpJiYoYi51PWEpKTtGdChiLHRoaXMuTCx0aGlzLkgsdGhpcy5YLHRoaXMuTil9QShhKXt2YXIgYj1FdCh0aGlzLkIsdGhpcy5ncm91cElkLHRoaXMuQywiaSIsMSwiIix0aGlzLkYpO2ImJihiLmM9MSk7RnQoYix0aGlzLkwsdGhpcy5ILHRoaXMuWCx0aGlzLk4sYSl9fTt2YXIgbHU9Y2xhc3MgZXh0ZW5kcyBfLmpte2NvbnN0cnVjdG9yKGEsYixjLGQpe3N1cGVyKGIsYyxkKTt0aGlzLkI9YX1qKCl7dGhpcy5CLmoobnVsbCx0aGlzLk8sIjEiLHRoaXMuRCl9QSgpe3ZhciBhPXRoaXMuaSgpKzE7dGhpcy5CLmoobnVsbCx0aGlzLk0sYS50b1N0cmluZygpLHRoaXMuRCl9aSgpe3ZhciBhPXRoaXMuQi52KG51bGwsdGhpcy5NLHRoaXMuRCk7cmV0dXJuIHBhcnNlSW50KGF8fDAsMTApfX07dmFyIG91PWZ1bmN0aW9uKGEpe2EuaT1fLkooYS5MLF8uc3AsMTkpO2EuSD1fLk0oYS5pLDEpfHwwO2EuVGE9Xy5NKGEuaSwyKXx8MDthLkI9Xy5PKGEuaSwxMil8fDA7YS5NPV8uTShhLmksNCwyNSl8fDA7YS5YPV8uTChhLmksMTkpfHwhMTthLkM9ITE7YS5QPW11KGEsYS5pKTt2YXIgYj1fLk4oYS5pLDE0KTtiJiYoYS5HPW5ldyBodShiLCgpPT5udShhKSwoKT0+YS52LnJlc29sdmUobnVsbCkpKTthLlU9Xy5MKGEuaSwxNyl8fCExO2EuWj1fLkwoYS5pLDE4KXx8ITE7YS5OPV8uTChhLmksMjIpfHwhMX0scHU9ZnVuY3Rpb24oYSl7c3dpdGNoKGEpe2Nhc2UgMTpyZXR1cm4gMTtjYXNlIDI6cmV0dXJuIDI7Y2FzZSAzOnJldHVybiAzO2RlZmF1bHQ6cmV0dXJuIDB9fSxtdT1mdW5jdGlvbihhLGIpe2lmKCFhLlgpcmV0dXJuIG51bGw7YT1fLk8oYiwyMCl8fDA7Yj1fLk8oYiwyMSl8fDA7dmFyIGM9bmV3IGlwO2I9Xy5UKGMsMSxiKTtyZXR1cm4gXy5UKGIsMixhKX0sbnU9ZnVuY3Rpb24oYSl7YS5VJiYKIWEuWj8oYS5qfHwoYS5qPXF1KGEpKSxfLmltKGEuaixiPT57Yi50YXJnZXQuT2IoKT9ydShhLF8uTChhLmksMTEpLCEwKTooYS52LnJlc29sdmUobnVsbCksKG5ldyBldShhLkYsYS5ILGEuQixhLk0sYS5qLmkoKSxhLlgsYS5OLGEuUCkpLkcoKSl9KSk6cnUoYSxfLkwoYS5pLDExKSwhMCl9LHN1PWZ1bmN0aW9uKGEsYj0hMSl7YS5DPWJ9LHF1PWZ1bmN0aW9uKGEpe3ZhciBiPV8uamsoInBfc3QiKTthOnt2YXIgYz1hLmVhLGQ9Xy5NKGEuaSw4KXx8MCxlPV8uTShhLmksMjMpLGY9Xy5NKGEuaSw1KSxnPWEuVGEudG9TdHJpbmcoKSxoPV8uTShhLmksNCwyNSksaz1hLkgudG9TdHJpbmcoKSxsPV8uTShhLmksOSl8fDAsbT1fLk4oYS5pLDE1KXx8IiIsbj1fLkwoYS5pLDE2KXx8ITEscj1fLk4oYS5pLDYpfHx2b2lkIDA7YT1fLk4oYS5pLDcpfHx2b2lkIDA7aWYocnx8YSl0cnl7dmFyIHE9bmV3IGt1KGMsZyxoLGssbCxkLGUsbSxuLHIsYSl9Y2F0Y2godCl7cT1udWxsfWVsc2UgcT1udWxsOwpzd2l0Y2goZil7Y2FzZSAyOmNhc2UgNjpiPXE7YnJlYWsgYTtjYXNlIDE6Yj1uZXcgbHUoYixnLGgsbik7YnJlYWsgYTtkZWZhdWx0OmI9bmV3IF8ua20oZyxoLGwpfX1yZXR1cm4gYn0sdHU9ZnVuY3Rpb24oYSl7aWYoYS5LKXJldHVybiBydShhLGEuZ2EsITEpLGEudjthLmo9cXUoYSk7aWYoYS5qJiYhYS5qLnYoKSlhLnYucmVzb2x2ZShudWxsKTtlbHNlIGlmKGEuRyYmYS5HLnYpe3ZhciBiPWEuRztiLnYmJihiLmo9bmV3IF8udGQoYiksXy53ZihiLGIuaiksYi5qLkIod2luZG93LCJtZXNzYWdlIixiLkEsITEsYiksd2luZG93LnRvcC5wb3N0TWVzc2FnZSh7ZnJhbWVUeXBlOiJvbmUtZ29vZ2xlLWJhciIsbWVzc2FnZVR5cGU6ImNhbi1zaG93LXByb21vLXdpdGgtYnJvd3Nlci1jb21tYW5kIixjb21tYW5kSWQ6Yi5pfSwiY2hyb21lOi8vbmV3LXRhYi1wYWdlIikpfWVsc2UgbnUoYSk7cmV0dXJuIGEudn0scnU9ZnVuY3Rpb24oYSxiLGMpeyFhLmomJmMmJihhLmo9cXUoYSkpO3ZhciBkOwphLks/ZD1uZXcgZ3UoYS5GLGEuSyxhLkIsYS5PKTpkPW5ldyBldShhLkYsYS5ILGEuQixhLk0sYz9hLmouaSgpOjAsYS5YLGEuTixhLlApO2lmKGIpIWN8fGEuVXx8YS5afHxfLmltKGEuaiksZC5GKDEpLGEudi5yZXNvbHZlKG51bGwpO2Vsc2V7Yj1uZXcgcnQoYS5MLGEuRixhLmNhLGEuUixhLkMsYS5WLGEuQSE9bnVsbCxhLmhhKTt2YXIgZT1fLm5rKCJkZCIpLGY9ZS5JYjtmIT09bnVsbCYmZiE9PWEuQyYmKGEuQz1mKTtlLmoobmV3IEd0KCJwYyIsYikpO2U9e2hsOmEuVmF9O2EuQyYmKGUuZG09IiIpO2EuUz09PSIxOTIiJiYoZj1Pbihkb2N1bWVudC5sb2NhdGlvbi5ocmVmLm1hdGNoKF8uZGQpWzVdfHxudWxsKS5yZXBsYWNlKC9cL3VcLyhcZCspLywiIikpJiZmLnN0YXJ0c1dpdGgoIi8iKSYmKGY9Zi5zdWJzdHJpbmcoMSkuc3BsaXQoIi8iLDEpLGYubGVuZ3RoPT09MSYmKGUubHA9ZlswXSkpO2U9bmV3ICRvKGIuSigpLF8uSihhLkwsXy5oaywzKSxhLm5hLGEuUyxhLkthLGEuQT8KITA6ISFfLkwoYS5MLDM5KSxhLm9hLGEuUixlLGEuQSk7Zj1uZXcgXy5WO18uUyhmLDMxLGEuSCk7Xy5vcChmLGtwKGpwKG5ldyBfLmxwLGEuQiksYS5NKSk7Yi5YZD1mO2d0KGIsZSxfLmZtLmkoKSk7Zj1jJiZhLmo/bmV3IGZ1KGEuaik6bnVsbDt2YXIgZz1fLkZmKCJnYl9LZCIpLGg9QXJyYXkuZnJvbSgoZ3x8ZG9jdW1lbnQpLnF1ZXJ5U2VsZWN0b3JBbGwoIi5nYl9DIikpLmZpbHRlcihrPT4hXy5LaChrLCJnYl83YSIpKTtjPW5ldyBqdShlLGIsZCxmLGEuRyxjP3V1KGcpOltdLGgsYS5LLGEuTyk7YS52LnJlc29sdmUoYyl9fSx1dT1mdW5jdGlvbihhKXt2YXIgYj1BcnJheS5mcm9tKChhfHxkb2N1bWVudCkucXVlcnlTZWxlY3RvckFsbCgiLmdiXzdhIikpOyhhPV8uRmYoImdiXzVhIixhKSkmJl8ucWooYix2b2lkIDAsMCxhKTtyZXR1cm4gYn0sdnU9Y2xhc3N7Y29uc3RydWN0b3IoYSxiLGMsZCxlLGYsZz1udWxsLGg9bnVsbCxrPSExLGwpe3RoaXMuRj1iO3RoaXMuZWE9YTt0aGlzLmNhPQpjO3RoaXMuTD1kO3RoaXMuUj1lO18uUShkLDE3KSE9PTMmJl8uUShkLDE3KSE9PTQ/YS5sb2coRXJyb3IoInphIikpOih0aGlzLnY9bmV3IF8uT2gsdGhpcy5LYT1mLHRoaXMuQT1nLHRoaXMuQj0wLHRoaXMuSz10aGlzLkE/dGhpcy5BLmkoKTpudWxsLHRoaXMuTz1oLHRoaXMub2E9ayx0aGlzLmhhPWwsdGhpcy5LKT90aGlzLkEmJihhPXRoaXMuQS5BKCkpJiYodGhpcy5CPShhPV8uTyhhLDE1LDEpKT9wdShhKTowKTpvdSh0aGlzKX1EKGEpe3RoaXMubmE9YTtyZXR1cm4gdGhpc31oYihhKXt0aGlzLlM9YTtyZXR1cm4gdGhpc31SYihhKXt0aGlzLmdhPWE7cmV0dXJuIHRoaXN9ZmYoYT0wKXt0aGlzLlY9YTtyZXR1cm4gdGhpc319O3ZhciB3dT1mdW5jdGlvbihhKXthLmkudmEoYS52LCJyYXYiLGEuQyk7YS5pLkkoYS5ZLCJjbG9zZSIsYS5EYik7YS5pLkkoYS5ZLCJlYXBhYyIsKCk9PnthLmoubG9nKDE2NCl9KTthLmkuSShhLlksImVhcGFjc28iLCgpPT57YS5qLmxvZygxNjUpfSk7YS5pLkkoYS5ZLCJlYXBhYSIsKCk9PnthLmoubG9nKDE2Nil9KTthLmkuSShhLlksImVhcGFjYXMiLCgpPT57YS5qLmxvZygxNjgpfSl9LHh1PWNsYXNzIGV4dGVuZHMgXy5Ee2NvbnN0cnVjdG9yKGEsYixjLGQsZSxmLGcsaCxrKXtzdXBlcigpO3RoaXMuQT0hMTt0aGlzLnY9bmV3IHJ0KGMsZSxhLCExLGIsdm9pZCAwLCEwKTt0aGlzLmo9ZTt0aGlzLkI9ZjtlPV8ubmsoImRkIik7ZS5qKG5ldyBHdCgiZWFwIix0aGlzLnYpKTthPWI7ZT1lLkliO2UhPT1udWxsJiZlIT09YiYmKGE9ZSk7YSYmKGcuZG09IiIpO3RoaXMuWT1uZXcgJG8odGhpcy52LkooKSxfLkooYyxfLmhrLDMpLGgsayxkLCEhXy5MKGMsMzkpLCExLCExLGcpO2d0KHRoaXMudiwKdGhpcy5ZLG51bGwpO3RoaXMuaT1uZXcgXy50ZCh0aGlzKTtfLndmKHRoaXMsdGhpcy5pKTt3dSh0aGlzKX1DKCl7dGhpcy5qLmxvZygxNTgpO3RoaXMuWS5zZW5kTWVzc2FnZSgib3BlbiIpfURiKGEpe2lmKCF0aGlzLkEpe3RoaXMuQT0hMDthPWEuZGF0YTt2YXIgYixjPWEmJigoYj1hLmN0eCk9PW51bGw/dm9pZCAwOmIuZWFwKTtiPWEmJmEuaWNiO3ZhciBkPTA7aWYoYSYmYS5pZWspZD02O2Vsc2UgaWYoYilkPTE7ZWxzZSBpZihjKXN3aXRjaChjKXtjYXNlICJjYWMiOmQ9MjticmVhaztjYXNlICJuYWYiOmQ9NzticmVhaztjYXNlICJuc2EiOmQ9ODticmVhaztjYXNlICJzb2FjIjpkPTM7YnJlYWs7Y2FzZSAiYWFjIjpkPTl9dGhpcy5CJiZ0aGlzLkIoZCl9fX07dmFyIHl1PWZ1bmN0aW9uKCl7cmV0dXJuIiJ9LHp1PWZ1bmN0aW9uKCl7cmV0dXJuIiJ9LEF1PWZ1bmN0aW9uKCl7cmV0dXJuIiJ9LEJ1PWZ1bmN0aW9uKCl7cmV0dXJuITB9LEN1PWZ1bmN0aW9uKCl7cmV0dXJuITF9LEZ1PWZ1bmN0aW9uKGEsYil7RHUoYSk7cmV0dXJuIEV1KGIuWGEpfSxHdT1mdW5jdGlvbihhLGIpe0R1KGEpO2E9RXUoYi5YYSk7cmV0dXJuIF8ucmooYSl9LEV1PWZ1bmN0aW9uKGEpe3JldHVybiIgPGJ1dHRvbiIrVHQoImdiX05hICIpK1V0KCIiKStTdCgnIGFyaWEtbGFiZWw9IkNsb3NlIicpKyc+IDxzdmcgaGVpZ2h0PSIxNCIgdmlld0JveD0iMCAwIDE0IDE0IiB3aWR0aD0iMTQiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+IDxwYXRoJytUdCgiIikrVXQoIiIpK1N0KCcgZmlsbD0iJytWbyhhPyIjYzRjN2M1IjoiIzQ0NDc0NiIpKyciIGQ9Ik0xLjQgMTRMMi4zODQxOWUtMDcgMTIuNkw1LjYgN0wyLjM4NDE5ZS0wNyAxLjRMMS40IC00Ljc2ODM3ZS0wN0w3IDUuNkwxMi42IC00Ljc2ODM3ZS0wN0wxNCAxLjRMOC40IDdMMTQgMTIuNkwxMi42IDE0TDcgOC40TDEuNCAxNFoiJykrCiI+PC9wYXRoPiA8L3N2Zz4gPC9idXR0b24+ICJ9LER1PWZ1bmN0aW9uKGEpe0h1IGluIGEudnx8WXQoYSxIdSx7WGE6MH0sRnUsR3UsQnUsQ3UsIiIseXUsIiIsenUsQXUpfSxIdT0idC1IMFNHdkNBaVJPMCI7dmFyIEx1PWNsYXNze2NvbnN0cnVjdG9yKGEpe3RoaXMuaj1hO3RoaXMuaT1udWxsfWdiKCl7dmFyIGE9dGhpcy5qLGI9dGhpcy5DLGM9dGhpcy5CLGQ9dGhpcy5LLGU9dGhpcy5ELGY9dGhpcy5BLGc9dGhpcy52O0l1KGEpO3ZhciBoPSI8ZGl2IitUdCgiIikrVXQoSnUoYSxiLGMsZCxlLGYsZykrIiIpK1N0KCcgZGF0YS1mYj0iIicpKyI+IjtiPUt1KGIsYyxkLGUsZixnKTtjPVd0KGEuQSk7YyE9PSIiJiYoaCs9IiA8c3R5bGU+IitjKyI8L3N0eWxlPiIpO2grPWIrIjwvZGl2PiI7YS5qJiZfLnZnKGEuaik7YT1qcShfLnJqKGgpKTt0aGlzLmkmJnRoaXMuaS5hcHBlbmRDaGlsZChhKTtyZXR1cm4gYX1maWxsKGEsYixjLGQsZSxmKXt0aGlzLkM9YTt0aGlzLkI9Yjt0aGlzLks9Yzt0aGlzLkQ9ZDt0aGlzLkE9ZTt0aGlzLnY9Zn1pbnN0YW50aWF0ZShhKXt0aGlzLmk9YTt0aGlzLmouaVswXT0icnRsIj09Sm8oYSl9fSxNdT1mdW5jdGlvbigpe3JldHVybiIifSxOdT1mdW5jdGlvbigpe3JldHVybiIifSwKSnU9ZnVuY3Rpb24oYSxiLGMsZCxlLGYsZyl7cmV0dXJuImxldHRlci1zcGFjaW5nOjAuMDNweDt0ZXh0LWFsaWduOmNlbnRlcjt3aGl0ZS1zcGFjZTpub3JtYWw7Zm9udC1mYW1pbHk6R29vZ2xlIFNhbnMsUm9ib3RvLEFyaWFsLHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NDAwO2xpbmUtaGVpZ2h0OjIwcHg7cGFkZGluZzoxMDVweCAzNHB4O2NvbG9yOiIrVm8oam4oYS5pKT9QbygiY29sb3IiLGc/IiNlOGVhZWQiOiIjNUY2MzY4Iik6Zz8iI2U4ZWFlZCI6IiM1RjYzNjgiKSsiOyJ9LE91PWZ1bmN0aW9uKCl7cmV0dXJuITB9LFB1PWZ1bmN0aW9uKCl7cmV0dXJuITF9LFF1PWZ1bmN0aW9uKGEsYil7SXUoYSk7cmV0dXJuIEt1KGIuUGUsYi5BZSxiLlJlLGIuZGYsYi53ZSxiLlhhKX0sUnU9ZnVuY3Rpb24oYSxiKXtJdShhKTt2YXIgYz1iLlBlLGQ9Yi5BZSxlPWIuUmUsZj1iLmRmLGc9Yi53ZTtiPWIuWGE7YT0iPGRpdiIrVHQoIiIpK1V0KEp1KGEsYyxkLGUsCmYsZyxiKSsiIikrU3QoJyBkYXRhLWZiPSIiJykrIj4iO2M9S3UoYyxkLGUsZixnLGIpO3JldHVybiBfLnJqKGErKGMrIjwvZGl2PiIpKX0sS3U9ZnVuY3Rpb24oYSxiLGMsZCxlLGYpe3ZhciBnPSIgIjt2YXIgaD1FdShmKTtyZXR1cm4gZz1nK2grKCcgPHN2ZyBhcmlhLWhpZGRlbj0idHJ1ZSIgZm9jdXNhYmxlPSJmYWxzZSIgaGVpZ2h0PSIyMHB4IiB2aWV3Ym94PSIwIDAgMjAgMjAiIHdpZHRoPSIyMHB4IiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPiA8cGF0aCcrVHQoIiIpK1V0KCIiKStTdCgnIGZpbGw9IicrVm8oZj8iIzdGQ0ZGRiI6IiMwMDYzOUIiKSsnIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0xMCAwQzQuNDggMCAwIDQuNDggMCAxMEMwIDE1LjUyIDQuNDggMjAgMTAgMjBDMTUuNTIgMjAgMjAgMTUuNTIgMjAgMTBDMjAgNC40OCAxNS41MiAwIDEwIDBaTTkgNVY3SDExVjVIOVpNOSA5VjE1SDExVjlIOVpNMiAxMEMyIDE0LjQxIDUuNTkgMTggMTAgMThDMTQuNDEgMTggMTggMTQuNDEgMTggMTBDMTggNS41OSAxNC40MSAyIDEwIDJDNS41OSAyIDIgNS41OSAyIDEwWiIgZmlsbC1ydWxlPSJldmVub2RkIicpKwoiPjwvcGF0aD4gPC9zdmc+IDxwIitUdCgiIikrVXQoIm1hcmdpbi10b3A6MTZweDttYXJnaW4tYm90dG9tOjA7IikrU3QoIiIpKyI+ICIrKGE/IiAiK1ZvKGEpKyI8YnI+ICI6IiIpKyIgIitWbyhiKSsiIDxhIitUdCgiZ2JfUGEgIikrVXQoImxldHRlci1zcGFjaW5nOjAuMDNweDtmb250LWZhbWlseTpHb29nbGUgU2FucyxSb2JvdG8sQXJpYWwsc2Fucy1zZXJpZjtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo0MDA7bGluZS1oZWlnaHQ6MjBweDsiKStTdCgnIGFyaWEtbGFiZWw9IicrVm8oYysiICIrZCkrJyIgdGFiaW5kZXg9IjAiIHRhcmdldD0iX2JsYW5rIicpKyI+IitWbyhjKSsiPC9hPiAiK1ZvKGUpKyIgPC9wPiAiKX0sSXU9ZnVuY3Rpb24oYSl7U3UgaW4gYS52fHwoWXQoYSxTdSx7UGU6MCxBZToxLFJlOjIsZGY6Myx3ZTo0LFhhOjV9LFF1LFJ1LE91LFB1LCcgZGF0YS1mYj0iIicsTXUsIiIsTnUsSnUpLER1KGEpKX0sU3U9InQtUEZLdUdZaFJlNXMiO3ZhciBWdT1jbGFzc3tjb25zdHJ1Y3RvcihhKXt0aGlzLmo9YTt0aGlzLmk9bnVsbH1nYigpe3ZhciBhPXRoaXMuaixiPXRoaXMudjtUdShhKTt2YXIgYz0iPGRpdiIrVHQoImdiX1FhIGdiX1JhICIpK1V0KFV1KGEsYikrIiIpK1N0KCIiKSsiPiI7Yj0iICIrRXUoYikrIiAiO3ZhciBkPVd0KGEuQSk7ZCE9PSIiJiYoYys9IiA8c3R5bGU+IitkKyI8L3N0eWxlPiIpO2MrPWIrIjwvZGl2PiI7YS5qJiZfLnZnKGEuaik7YT1qcShfLnJqKGMpKTt0aGlzLmkmJnRoaXMuaS5hcHBlbmRDaGlsZChhKTtyZXR1cm4gYX1maWxsKGEpe3RoaXMudj1hfWluc3RhbnRpYXRlKGEpe3RoaXMuaT1hO3RoaXMuai5pWzBdPSJydGwiPT1KbyhhKX19LFd1PWZ1bmN0aW9uKCl7cmV0dXJuIiJ9LFh1PWZ1bmN0aW9uKCl7cmV0dXJuIiJ9LFV1PWZ1bmN0aW9uKGEsYil7Yj1iPyIjMjgyYTJjIjoiI2U5ZWVmNiI7cmV0dXJuImJhY2tncm91bmQ6IitWbyhIbyhqbihhLmkpP1BvKCJiYWNrZ3JvdW5kIixiKTpiKSkrCiI7In0sWXU9ZnVuY3Rpb24oKXtyZXR1cm4hMH0sWnU9ZnVuY3Rpb24oKXtyZXR1cm4hMX0sJHU9ZnVuY3Rpb24oYSxiKXtUdShhKTtyZXR1cm4iICIrRXUoYi5YYSkrIiAifSxhdj1mdW5jdGlvbihhLGIpe1R1KGEpO2I9Yi5YYTthPSI8ZGl2IitUdCgiZ2JfUWEgZ2JfUmEgIikrVXQoVXUoYSxiKSsiIikrU3QoIiIpKyI+IjtiPSIgIitFdShiKSsiICI7cmV0dXJuIF8ucmooYSsoYisiPC9kaXY+IikpfSxUdT1mdW5jdGlvbihhKXtidiBpbiBhLnZ8fChZdChhLGJ2LHtYYTowfSwkdSxhdixZdSxadSwiIixXdSwiZ2JfUWEgZ2JfUmEgIixYdSxVdSksRHUoYSkpfSxidj0idC1MU0xtM2FKSUZBVSI7dmFyIGd2PWNsYXNze2NvbnN0cnVjdG9yKGEpe3RoaXMuaj1hO3RoaXMuaT1udWxsfWdiKCl7dmFyIGE9dGhpcy5qLGI9dGhpcy5BLGM9dGhpcy52O2N2KGEpO2I9IjxkaXYiK1R0KCIiKStVdChkdihhLGIsYykrIiIpK1N0KGV2KGEsYixjKSsiIikrIj4iO2M9ZnYoYyk7dmFyIGQ9V3QoYS5BKTtkIT09IiImJihiKz0iIDxzdHlsZT4iK2QrIjwvc3R5bGU+Iik7Yis9YysiPC9kaXY+IjthLmomJl8udmcoYS5qKTthPWpxKF8ucmooYikpO3RoaXMuaSYmdGhpcy5pLmFwcGVuZENoaWxkKGEpO3JldHVybiBhfWZpbGwoYSxiKXt0aGlzLkE9YTt0aGlzLnY9Yn1pbnN0YW50aWF0ZShhKXt0aGlzLmk9YTt0aGlzLmouaVswXT0icnRsIj09Sm8oYSl9fSxldj1mdW5jdGlvbigpe3JldHVybicgZGlyPSInK1ZvKCJsdHIiKSsnIid9LGh2PWZ1bmN0aW9uKCl7cmV0dXJuIiJ9LGR2PWZ1bmN0aW9uKGEsYixjKXtyZXR1cm4icGFkZGluZzoiK1ZvKGpuKGEuaSk/UG8oInBhZGRpbmciLGI/IjEycHgiOgoiM3B4Iik6Yj8iMTJweCI6IjNweCIpKyI7IisoYz8iIjoiZGlzcGxheToiK1ZvKGpuKGEuaSk/UG8oImRpc3BsYXkiLCJpbmxpbmUtYmxvY2siKToiaW5saW5lLWJsb2NrIikrIjsiKSsidmVydGljYWwtYWxpZ246IitWbyhqbihhLmkpP1BvKCJ2ZXJ0aWNhbC1hbGlnbiIsIm1pZGRsZSIpOiJtaWRkbGUiKSsiOyIrKGMmJiFqbihhLmkpPyJtYXJnaW4tbGVmdDoiK1ZvKCJjYWxjKDUwJSAtIDI0cHgpIikrIjsiOiIiKSsoYyYmam4oYS5pKT8ibWFyZ2luLXJpZ2h0OiIrVm8oImNhbGMoNTAlIC0gMjRweCkiKSsiOyI6IiIpKyhjPyJtYXJnaW4tdG9wOiIrVm8oam4oYS5pKT9QbygibWFyZ2luLXRvcCIsIjk4cHgiKToiOThweCIpKyI7IjoiIil9LGl2PWZ1bmN0aW9uKCl7cmV0dXJuITB9LGp2PWZ1bmN0aW9uKCl7cmV0dXJuITF9LGt2PWZ1bmN0aW9uKGEsYil7Y3YoYSk7cmV0dXJuIGZ2KGIuVWUpfSxsdj1mdW5jdGlvbihhLGIpe2N2KGEpO3ZhciBjPWIubmg7Yj1iLlVlO2E9IjxkaXYiKwpUdCgiIikrVXQoZHYoYSxjLGIpKyIiKStTdChldihhLGMsYikrIiIpKyI+IjtjPWZ2KGIpO3JldHVybiBfLnJqKGErKGMrIjwvZGl2PiIpKX0sZnY9ZnVuY3Rpb24oYSl7cmV0dXJuIiA8ZGl2IitUdCgoYT8ibXNwaW4tbWVkaXVtIjoibXNwaW4tc21hbGwiKSsiICIpK1V0KCIiKStTdCgiIikrIj4gPGRpdj4gPGRpdj48L2Rpdj4gPC9kaXY+IDwvZGl2PiAifSxjdj1mdW5jdGlvbihhKXttdiBpbiBhLnZ8fFl0KGEsbXYse25oOjAsVWU6MX0sa3YsbHYsaXYsanYsIiIsZXYsIiIsaHYsZHYpfSxtdj0idC1zOTFCX1hxMVBkRSI7dmFyIG92PWZ1bmN0aW9uKGEpe2Eudi5JKGEuaSwic29ycCIsYS5PKTthLnYuSShhLmksInNvcnQiLGEuZ2EpO2Eudi5JKGEuaSwicmF2IixhLmNhKTthLnYuSShhLmksImgiLGEuVik7YS52LkkoYS5pLCJzZG0iLCgpPT57YS5qJiZhLmoucXVlcnlTZWxlY3RvcigiW2RhdGEtZmJdIikmJm52KGEpfSk7YS52LkkoYS5GLCJzZG4iLGEuZWEpO2Eudi5JKGEuRiwiY2xvc2UiLGEuWil9LG52PWZ1bmN0aW9uKGEpe2lmKGEuQz09MSYmYS5EJiZhLkcpe18uVWgoYS5qLCJiYWNrZ3JvdW5kIixhLmkuRj8iIzI4MmEyYyI6IiNlOWVlZjYiKTtfLlFmKGEuaik7dmFyIGI9bmV3IEx1KGEuSCk7R3MoYS5pKT9wdihhLGIsYS5HKTpxdihhLGIsYS5HKTtiPWIuZ2IoKTt2YXIgYz1iLnF1ZXJ5U2VsZWN0b3JBbGwoImEiKVswXTtfLnBrKGMsYS5EKTthLnYuSShjLCJjbGljayIsKCk9Pnt2YXIgZD1hLmk7Xy5NZShkLmosMjEpIT1udWxsJiZRcyhkLF8uTyhkLmosMjEpKX0pO3J2KGEsYil8fGEudi5JKGIsCiJmb2N1c291dCIsKCk9PntacyhhLmksITEpO2l0KGEuaSl9KTthLmouYXBwZW5kQ2hpbGQoYik7Yi5mb2N1cygpO250KGEuaSwiMzE0cHgiKX19LHN2PWZ1bmN0aW9uKGEpe2EuaiYmKF8uUmYoYS5qKSxhLkMhPTEmJl8uaGkoYS5MLCEwKSxhLmo9bnVsbCl9LHJ2PWZ1bmN0aW9uKGEsYil7Yj1iLnF1ZXJ5U2VsZWN0b3JBbGwoImJ1dHRvbiIpO3JldHVybiBiLmxlbmd0aD09MT8oYS52LkkoYlswXSwiY2xpY2siLCgpPT57Xy5XcyhhLmksITEpO2l0KGEuaSl9KSwhMCk6ITF9LHB2PWZ1bmN0aW9uKGEsYixjKXtjPS8oLiopJTFcJHMoLiopJTJcJHMoLiopJTNcJHMoLiopLy5leGVjKGMpO2IuZmlsbChjWzFdLGNbMl0sY1szXSxhLk0sY1s0XSxhLmkuRil9LHF2PWZ1bmN0aW9uKGEsYixjKXtjPS8oLiopJTFcJHMoLiopJTJcJHMoLiopLy5leGVjKGMpO2IuZmlsbCgiIixjWzFdLGNbMl0sYS5NLGNbM10sYS5pLkYpfSx3dj1jbGFzcyBleHRlbmRzIF8uRHtjb25zdHJ1Y3RvcihhLGIsYywKZCl7c3VwZXIoKTt0aGlzLmk9YTt0aGlzLkY9Yjt0aGlzLkw9Yzt0aGlzLkI9ZDt0aGlzLlA9MDt0aGlzLkQ9bnVsbDt0aGlzLkM9MDt0aGlzLlM9ITA7dGhpcy5HPW51bGw7dGhpcy5SPSExO3RoaXMuSD1uZXcgWnQ7dGhpcy5OPXRoaXMuaj10aGlzLkE9bnVsbDt0aGlzLlU9ITE7dGhpcy52PW5ldyBfLnRkKHRoaXMpO18ud2YodGhpcyx0aGlzLnYpO3RoaXMuTT0iIjtvdih0aGlzKX1jYSgpe3RoaXMuQi5zZXRBdHRyaWJ1dGUoImFyaWEtZXhwYW5kZWQiLCEwKTtzdih0aGlzKTt0aGlzLkEmJnRoaXMuQS5SYSghMSk7Xy5yYSgpJiZacih0aGlzLkYpfVYoKXt0aGlzLkIuc2V0QXR0cmlidXRlKCJhcmlhLWV4cGFuZGVkIiwhMSl9Wigpe3RoaXMuQi5zZXRBdHRyaWJ1dGUoImFyaWEtZXhwYW5kZWQiLCExKTt0aGlzLkIuZm9jdXMoKX1nYSgpe3N3aXRjaCh0aGlzLlApe2Nhc2UgMjpzdih0aGlzKTtodCh0aGlzLmkpO1NzKHRoaXMuaSwhMSk7dGhpcy5CLmNsaWNrKCk7YnJlYWs7Y2FzZSAxOnRoaXMuRCYmCl8uc2oodG9wLmxvY2F0aW9uLHRoaXMuRCk7Y2FzZSAzOnRoaXMuTygpLG52KHRoaXMpfWlmKHRoaXMuUil7bGV0IGE9Xy5QZigiSUZSQU1FIiksYj1fLkYod2luZG93LCJtZXNzYWdlIixjPT57aWYoYy5hYigpLmRhdGE9PT0iYWZicCIpe2M9dGhpcy5pO3N3aXRjaChjLkEpe2Nhc2UgMTpRcyhjLDczKX10aGlzLmkuSigpLnJlbW92ZUNoaWxkKGEpO18ub2goYil9fSk7Xy5aaihhLHR2KTthLnN0eWxlLmRpc3BsYXk9Im5vbmUiO3RoaXMuaS5KKCkuYXBwZW5kQ2hpbGQoYSl9fU8oKXt0aGlzLmomJnN2KHRoaXMpO2lmKCF0aGlzLk4pe2lmKCF0aGlzLlUpe3ZhciBhPV8uUGYoIkxJTksiKTtMbihhLHRoaXMuQz09MT91djp2diwic3R5bGVzaGVldCIpO2RvY3VtZW50LmhlYWQuYXBwZW5kQ2hpbGQoYSk7dGhpcy5VPSEwfWE9bmV3IGd2KHRoaXMuSCk7YS5maWxsKHRoaXMuUyx0aGlzLkM9PTEpO3RoaXMuTj1hLmdiKCl9YT10aGlzLk47c3dpdGNoKHRoaXMuQyl7Y2FzZSAxOnZhciBiPQpuZXcgVnUodGhpcy5IKTtiLmZpbGwodGhpcy5pLkYpO3RoaXMuaj1iLmdiKCk7cnYodGhpcyx0aGlzLmopO3RoaXMuai5hcHBlbmRDaGlsZChhKTt0aGlzLmkuSigpLmFwcGVuZENoaWxkKHRoaXMuaik7JHIodGhpcy5GLCExKTtTcyh0aGlzLmksITApO3RoaXMuQi5zZXRBdHRyaWJ1dGUoImFyaWEtZXhwYW5kZWQiLCEwKTticmVhaztkZWZhdWx0OnRoaXMuaj1hLF8uaGkodGhpcy5MLCExKSxhPXRoaXMuaixiPXRoaXMuTCxiLnBhcmVudE5vZGUmJmIucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUoYSxiLm5leHRTaWJsaW5nKX19ZWEoYSl7aWYoYS5kYXRhJiZhLmRhdGEuZG4mJihhPWEuZGF0YS5kbikmJkdzKHRoaXMuaSkmJnRoaXMuQSYmIXRoaXMuaS5vaCl7dmFyIGI9dGhpcy5BLkooKTtpZihiPV8uRmYoImdiX2ciLGIpKWIuaW5uZXJUZXh0PWF9fX0sdHY9KDAsXy51aylgaHR0cHM6Ly93d3cuZ3N0YXRpYy5jb20vZ2IvaHRtbC9hZmJwLmh0bWxgLHZ2PSgwLF8udWspYGh0dHBzOi8vd3d3LmdzdGF0aWMuY29tL2ltYWdlcy9pY29ucy9tYXRlcmlhbC9hbmltL21zcGluL21zcGluX2dvb2djb2xvcl9zbWFsbC5jc3NgLAp1dj0oMCxfLnVrKWBodHRwczovL3d3dy5nc3RhdGljLmNvbS9pbWFnZXMvaWNvbnMvbWF0ZXJpYWwvYW5pbS9tc3Bpbi9tc3Bpbl9nb29nY29sb3JfbWVkaXVtLmNzc2A7dmFyIHh2PWZ1bmN0aW9uKGEpe3VwKGEsYS5HLGI9PnthLkMubG9nKDEwNik7dmFyIGM9Xy5GZCgic2lsay5zLnNpcy5jYSIpO2M/KGMoKSxiLnByZXZlbnREZWZhdWx0KCksYi5zdG9wUHJvcGFnYXRpb24oKSk6YS5DLmxvZygxMjQpfSxhKTthLkY9ITB9LHl2PWZ1bmN0aW9uKGEpe2EuRnx8eHYoYSl9LHp2PWNsYXNzIGV4dGVuZHMgXy5FbXtjb25zdHJ1Y3RvcihhLGIsYyl7c3VwZXIoYSxiKTt0aGlzLkY9ITE7dGhpcy5HPWE7dGhpcy5DPWN9fTt2YXIgQXYsRXY7QXY9ZnVuY3Rpb24oKXt2YXIgYTsoYT1fLkZmKCJnYl81YSIpKT9hPVthXTphPShhPV8uRmYoImdiX3oiKSk/KGF8fGRvY3VtZW50KS5xdWVyeVNlbGVjdG9yQWxsKCIuZ2JfQyIpOltdO3JldHVybiBBcnJheS5mcm9tKGEpfTtfLkJ2PWZ1bmN0aW9uKGEsYil7aWYoIWEuail7bGV0IGM9QXYoKTtjLmxlbmd0aD09PTEmJihhLmo9bmV3IG5zKGNbMF0sYS5pLGJ8fCIiKSl9cmV0dXJuIGEuan07Xy5Ddj1mdW5jdGlvbihhLGIsYyxkLGUsZj1udWxsLGc9ITEsaD0wLGs9bnVsbCxsKXt2YXIgbT1fLkooYixhcCwxMSl8fG51bGw7Yz1uZXcgdnUoYyxhLmksZCxlLCEhXy5MKGIsMjEpLG0sZixrLCEhXy5MKGIsMTgpLGwpO2Q9Xy5QKGIsOSk7Yy5WYT1kO2Eudj1jLkQoXy5QKGIsNCkpLmhiKF8uUChiLDUpKS5SYihnKS5mZihoKTtzdShhLnYsISFfLkwoYiwxMCkpO3ZhciBuOyhlPT1udWxsPzA6KG49Xy5KKGUsXy5zcCwxOSkpPT1udWxsPzA6Xy5MKG4sMjQpKXx8YS5DKGwpfTsKXy5Edj1mdW5jdGlvbigpe3JldHVybiBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCIjZ2IgW2RhdGEtb2dzci11cF0iKX07RXY9ZnVuY3Rpb24oYSxiLGMsZCxlLGYpe2d0KGIsZSxkKTt2YXIgZz1fLkZmKCJnYl81YSIpO2Y9ZiYmZz9nOmQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgiZ2JfQyIpWzBdfHxkO2I9bmV3IHd2KGIsZSxkLGYpO2U9Xy5QKGMsMTUpO2E9Xy5PZShhLDYpfHxfLk9lKGEsMTYpO2Q9Xy5QKGMsMjIpO2c9Xy5PKGMsMjMpO2IuUD1nO2IuRD1lO2U9Xy5OKGMsNjQpO2IuTT1lO2U9Xy5RKGMsMjApO2IuQz1lO2IuUz1hO2IuRz1kO2Q9ISFfLkwoYywyNSk7Yi5SPWQ7aWYoYSl7bGV0IGg7c3dpdGNoKF8uUShjLDE3KSl7Y2FzZSAxOmg9Xy5GZigiZ2JfUSIpO2JyZWFrO2Nhc2UgMjpoPV8uRmYoImdiX1oiKX1oJiYoYz1uZXcgXy5maihmLGgpLGIuQSYmYi5BLmRpc3Bvc2UoKSxiLkE9Yyl9fTsKXy5Gdj1jbGFzc3tjb25zdHJ1Y3RvcihhKXt0aGlzLkI9bmV3IF8uT2g7dGhpcy5pPWE7dGhpcy5qPXRoaXMuQT1udWxsfUMoYSl7aWYodGhpcy52KXt2YXIgYj1hIT1udWxsJiZhLmFiKCkhPT0xO3R1KHRoaXMudikudGhlbihjPT57YiYmKHRoaXMuQj1uZXcgXy5PaCk7dGhpcy5CLnJlc29sdmUoYyl9KX19SyhhLGIsYyxkKXt2YXIgZT1fLnFtKGEpLmZpbHRlcihsPT5fLlEobCwxNyk9PT01KVswXTtpZihlKXt2YXIgZj1fLkR2KCk7aWYoZil7dmFyIGc9ISFfLkwoYSwxMCksaD1fLmprKCJkZCIpLkliLGs9Xy5KKGEsYXAsMTEpfHxudWxsO2smJihjJiZfLnkoaywyMSxjKSxkJiZfLnkoaywyMixkKSx0aGlzLmkubG9nKDE1NyksbmV3IHh1KGYsaD09PW51bGw/ZzpoLGUsayx0aGlzLmksYixabyhlLGEpLF8uUChhLDQpLF8uUChhLDUpKSl9ZWxzZSB0aGlzLmkubG9nKDExOCl9ZWxzZSB0aGlzLmkubG9nKDE2Nyl9bG9hZChhLGIpe2lmKGEpe2lmKF8uTChhLDI4KSl7dmFyIGM9Xy5GZigiZ2JfViIpOwpjJiYoYz1jLmdldEF0dHJpYnV0ZSgiZGF0YS1sYiIpfHwiIikmJmdzKG5ldyBocyxjKX1pZihjPV8uTihhLDIyKXx8IiIpe3ZhciBkPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoIm1ldGEiKTtkLnNldEF0dHJpYnV0ZSgibmFtZSIsIm9nLXByb2ZpbGUtYWNjdCIpO2Quc2V0QXR0cmlidXRlKCJjb250ZW50IixjKTtkb2N1bWVudC5oZWFkLmluc2VydEFkamFjZW50RWxlbWVudCgiYWZ0ZXJiZWdpbiIsZCl9aWYoXy5MKGEsMTMpKXtjPUF2KCk7Zm9yKHZhciBlIG9mIGMpeXYobmV3IHp2KGUsYix0aGlzLmkpKX1lPSEhXy5MKGEsMTApO2lmKGM9Xy5EdigpKXt2YXIgZj1fLk8oYSw3KSE9PTA7ZD1fLnFtKGEpO2lmKGZ8fGQmJmQubGVuZ3RoKXtmPV8uamsoImRkIik7dmFyIGc9Xy5MKGEsMjMpO2ZvcihsZXQgbT0wO208ZC5sZW5ndGg7bSsrKXtsZXQgbj1kW21dO2lmKCFfLkoobixfLmhrLDMpKXtiLmxvZyhFcnJvcigiQWEiKSk7Y29udGludWV9aWYoXy5RKG4sMTcpPT09NSljb250aW51ZTsKaWYoXy5RKG4sMTcpPT09Myl7Z3x8Xy5Ddih0aGlzLGEsYixjLG4pO2NvbnRpbnVlfXZhciBoPWYuSWI7bGV0IHI9bmV3IHJ0KG4sdGhpcy5pLGMsISFfLkwoYSwyMSksaD09PW51bGw/ZTpoKSxxPWJwKHIuSigpLG4sYSx0aGlzLkEpO3ZhciBrPVtdLGw9Xy5RKG4sMTcpPT09MTtoPV8uUShuLDE3KT09PTI7aWYobClrPShrPWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoIiNnYiBbZGF0YS1vZ3NyLWFsdF0iKSk/W2tdOltdLGYuaihuZXcgR3QoImFwcCIscikpO2Vsc2UgaWYoaCYmKGs9QXYoKSxmLmoobmV3IEd0KCJhY2NvdW50IixyKSksXy5MKGEsMjQpJiYobD1fLkJ2KHRoaXMsXy5OKGEsMjcpKSkmJihyLlRhPWwpLF8uTChuLDU1KSkpe2xldCB0LEI7bD1hPT1udWxsP3ZvaWQgMDoodD1fLkooYSxhcCwxMSkpPT1udWxsP3ZvaWQgMDooQj1fLkoodCxwcCwxMCkpPT1udWxsP3ZvaWQgMDpfLk4oQiw2KTtsZXQgQyxFLEE9YT09bnVsbD92b2lkIDA6KEM9Xy5KKGEsYXAsMTEpKT09bnVsbD8Kdm9pZCAwOihFPV8uSihDLHBwLDEwKSk9PW51bGw/dm9pZCAwOl8uTihFLDUpOyhBfHxsKSYmWW8obCxBLDYpLnRoZW4oUj0+e0V2KGEscixuLFIscSwhMCl9KS5jYXRjaChSPT57UiBpbnN0YW5jZW9mIEVycm9yJiZiLmxvZyhSKX0pfWZvcihsZXQgdCBvZiBrKUV2KGEscixuLHQscSxoKX1fLkwoYSwyNCkmJl8uTyhhLDI1KX1lbHNlIGIubG9nKEVycm9yKCJCYSIpKX1lbHNlIHRoaXMuaS5sb2coMTE4LF8uS2cobmV3IF8uVixlKSl9ZWxzZSBiLmxvZyhFcnJvcigiQ2EiKSl9fTsKfWNhdGNoKGUpe18uX0R1bXBFeGNlcHRpb24oZSl9CnRyeXsKdmFyIEd2PWZ1bmN0aW9uKGEpe2lmKGEudilyZXR1cm4gYS52O2ZvcihsZXQgYiBpbiBhLmkpaWYoYS5pW2JdLmkuaXNWaXNpYmxlKCkpcmV0dXJuIGEuaVtiXTtyZXR1cm4gbnVsbH0sSHY9Y2xhc3MgZXh0ZW5kcyBfLnh7Y29uc3RydWN0b3IoKXtzdXBlcigpO3RoaXMudj1udWxsO3RoaXMuaT17fTt0aGlzLkliPW51bGx9Qigpe2lmKEd2KHRoaXMpKXt2YXIgYT1Hdih0aGlzKTtfLldzKGEuaSwhMSl9dGhpcy52PW51bGx9QygpeyF0aGlzLmkuYXBwfHxHdih0aGlzKSYmR3YodGhpcykuaj09ImFwcCJ8fF8uV3ModGhpcy5pLmFwcC5pLCEwKX1BKGEpe3RoaXMuSWI9YTtmb3IobGV0IGQgaW4gdGhpcy5pKXt2YXIgYj10aGlzLmlbZF0uaSxjPWE7Yi5GPWM7Yi5pJiZfLmJzKGIuaSxjKTtiLmRpc3BhdGNoRXZlbnQoInNkbSIpfX1qKGEpe3RoaXMuaVthLmpdPWF9dGIoYSl7cmV0dXJuIGEgaW4gdGhpcy5pP3RoaXMuaVthXTpudWxsfX0sSnY9Y2xhc3MgZXh0ZW5kcyBfLnh7Y29uc3RydWN0b3IoKXt2YXIgYT0KSXY7c3VwZXIoKTt0aGlzLkE9YTt0aGlzLmk9bnVsbDt0aGlzLkI9e307dGhpcy5qPSExO2E9d2luZG93Lm5hdmlnYXRvci51c2VyQWdlbnQ7YS5pbmRleE9mKCJNU0lFIik+PTAmJmEuaW5kZXhPZigiVHJpZGVudCIpPj0wJiYoYT0vXGIoPzpNU0lFfHJ2KVs6IF0oW15cKTtdKykoXCl8OykvLmV4ZWMoYSkpJiZhWzFdJiZwYXJzZUZsb2F0KGFbMV0pPDkmJih0aGlzLmo9ITApfXYoYSxiKXtpZih0aGlzLmopcmV0dXJuIG51bGw7aWYoYiBpbnN0YW5jZW9mIEFycmF5KXt2YXIgYz1udWxsO2Zvcih2YXIgZCBvZiBiKShiPXRoaXMudihhLGQpKSYmKGM9Yik7cmV0dXJuIGN9Yz1udWxsO3RoaXMuaSYmdGhpcy5pLnR5cGU9PWImJm51bGw9PWEmJihjPXRoaXMuaSx0aGlzLmk9bnVsbCk7aWYoZD1hLmRhdGFzZXQuZXFpZClkZWxldGUgYS5kYXRhc2V0LmVxaWQsKGQ9dGhpcy5CW2RdKT9hLnJlbW92ZUV2ZW50TGlzdGVuZXI/YS5yZW1vdmVFdmVudExpc3RlbmVyKGIsZCwhMSk6YS5kZXRhY2hFdmVudCYmCmEuZGV0YWNoRXZlbnQoIm9uIitiLGQpOnRoaXMuQS5sb2coRXJyb3IoIkZhYCIrYSkpO3JldHVybiBjfX07dmFyIEt2PV8uamooKSxMdj1fLnJtKEt2KSxNdj1fLnFtKEx2KSxJdj1Ldi52O18ubGsoImRkIixuZXcgSHYpO2lmKF8uUWcoXy5KKEt2LmosXy5SZyw0KSl8fE12JiZNdi5sZW5ndGg+MCl7Xy5saygiZXEiLG5ldyBKdik7bGV0IGE9bmV3IF8uRnYoS3YuaSgpKTthLmxvYWQoTHYsSXYpO18ubGsoImFzbCIsYSl9Owp9Y2F0Y2goZSl7Xy5fRHVtcEV4Y2VwdGlvbihlKX0KdHJ5ewp2YXIgWXY9ZnVuY3Rpb24oYSl7cmV0dXJuIF8ucW0oXy5ybShYdikpLnNvbWUoYj0+Xy5PKGIsMTcpPT09YSl9LFp2PWNsYXNze2NvbnN0cnVjdG9yKGEsYixjKXt0aGlzLmo9YTt0aGlzLmk9e307YT0wO2Zvcih2YXIgZD1iLmxlbmd0aDthPGQ7YSsrKXRoaXMuaVtiW2FdXT0hMDt0aGlzLnY9Yzt0aGlzLkE9Xy51fX0sJHY9e0hsOjAsTGs6MSxYazo1LEZrOjgsVms6MTIsTms6MTQsd2s6MTAxLHhrOjEwMixUaToyOSxTaTozMCxybDozMSxmbDozNixjbDozNyxkbDoxMTIsaWw6MTUxLFprOjM4LGVsOjExMSxnbDoxNTAsa2s6NDUsbGs6NDYsams6NDcsSGo6NTAsR2o6NTEsR2w6NTIsRmw6NTMsZ2s6NTQsQWw6NjAscms6NjEsdmw6NjIseWw6MTM0LHdsOjEzNSx4bDoxMzgsemo6MTE0LGlqOjYzLGFqOjY0LGtqOjY3LGxqOjczLGhqOjk0LGVqOjY5LGZqOjcwLGpqOjc0LGNqOjk5LGRqOjEwMCxnajoxNDQsWGk6NjUsVmk6NjYsWmk6NjgsWWk6NzUsV2k6MTEzLHRqOjcxLG5qOjcyLHBqOjc2LApvajo3NyxtajoxMDcsdWo6MTA4LHFqOjEwOSxyajoxMTAsS2s6MTQzLHlqOjEwMyx2ajoxMDQsd2o6MTA1LFVpOjExNSxObDoxMjgsTWw6MTI5LE9pOjEzNixMaToxMzcsTmk6MTQ2LE1pOjE0NyxRaToxNDgsUGk6MTQ5LEtpOjE1MixJaToxNTMsSmk6MTU0LEhpOjE1NSxSaToxNTYsSWs6Nzgsemk6NzkseWk6ODAseWs6ODEsems6ODIsQms6ODMsQWs6ODQsdms6ODUsQWk6ODYsemw6ODcsSWw6ODgsV2s6ODksSmw6OTAsSWo6OTEsdWs6OTIsR2k6OTMsSms6OTUsRWo6OTYseGk6OTcsbWs6OTgseGo6MTE4LEJsOjEwNixEazoxMTYsQ2s6MTE3LHFsOjEyMCxuazoxMjEsR2s6MTIyLE9rOjEyMyxDbDoxMjQsVWs6MTI1LEVpOjEyNixCaToxMzAsRGk6MTMxLENpOjEzMixGaToxMzMscGs6MTI3LFJrOjEzOSxUazoxNDAsZGs6MTQxLGZrOjE0MixTazoxNjIsZWs6MTYzLFFrOjE0NSxQazoxNjksVGo6MTU3LFFqOjE1OCxOajoxNTksU2o6MTYwLFBqOjE2MSxMajoxNjQsUmo6MTY1LE1qOjE2NiwKT2o6MTY4LFVqOjE2NyxYZjoxNzAsVmY6MTcxLFVmOjE3MixUZjoxNzMsV2Y6MTc0LHVsOjE3NSxIazo1MDB9LGF3PWZ1bmN0aW9uKGEpe3ZhciBiPV8uaWsuaSgpLGM9WyJhc2wiXTtpZihjLmxlbmd0aCE9YS5sZW5ndGgpdGhyb3cgbmV3IF8uYWE7dmFyIGQ9W107Zm9yKGxldCBmPTAsZz1jLmxlbmd0aDtmPGc7ZisrKXt2YXIgZT1jW2ZdO2IuaVtlXXx8ZC5wdXNoKGUpfWlmKGQubGVuZ3RoPT0wKXtkPWMubGVuZ3RoO2U9QXJyYXkoZCk7Zm9yKGxldCBmPTA7ZjxkO2YrKyllW2ZdPWIuaVtjW2ZdXTthLmFwcGx5KF8udSxlKX1lbHNle2E9bmV3IFp2KGMsZCxhKTtmb3IobGV0IGY9MCxnPWQubGVuZ3RoO2Y8ZztmKyspYz1kW2ZdLChlPWIualtjXSl8fChiLmpbY109ZT1bXSksZS5wdXNoKGEpfX0sWT1jbGFzc3tjb25zdHJ1Y3Rvcigpe3RoaXMudj1fLm5rKCJkZCIpO3ZhciBhPXRoaXMudi50YigiYWNjb3VudCIpO3RoaXMuaT1hP2EudGIoKTpudWxsfWooYSl7dmFyIGI7KGI9dGhpcy5pKT09Cm51bGx8fGIuc2VuZE1lc3NhZ2UoInJjdSIse2N1OmF9KX1BKGEsYixjLGQpe3ZhciBlOyhlPXRoaXMuaSk9PW51bGx8fGUuYWcoYSxiLGMsZCl9WCgpe3ZhciBhOyhhPXRoaXMuaSk9PW51bGx8fGEuZ2goKX1HKGEpe3ZhciBiOyhiPXRoaXMuaSk9PW51bGx8fGIuSSgicHUiLGEsITEsdGhpcyl9SChhKXt2YXIgYjsoYj10aGlzLmkpPT1udWxsfHxiLkkoInJhdiIsYSwhMSx0aGlzKX1MKGEpe3ZhciBiOyhiPXRoaXMuaSk9PW51bGx8fGIuSSgic211IixjPT57YS5jYWxsKHRoaXMsYy5maSl9LCExLHRoaXMpfUQoYSl7dmFyIGI7KGI9dGhpcy5pKT09bnVsbHx8Yi5WZChhKX1GKGEpe3ZhciBiOyhiPXRoaXMuaSk9PW51bGx8fGIuVmQoYSl9QyhhPSExKXt2YXIgYjsoYj10aGlzLmkpPT1udWxsfHxiLk9mKGEpfUIoYSl7dmFyIGI7KGI9dGhpcy5pKT09bnVsbHx8Yi5jZyhhKX1LKGEsYixjLGQpe3ZhciBlOyhlPXRoaXMuaSk9PW51bGx8fGUuZWcoYSxiLGMsZCl9c3RhdGljIGkoKXtyZXR1cm4gXy5TaChZKX19O3ZhciBidz1jbGFzc3tjb25zdHJ1Y3Rvcigpe3RoaXMuaT1fLm5rKCJkZCIpfWooKXt0aGlzLmkuQygpfX07dmFyIGN3PWNsYXNze2NvbnN0cnVjdG9yKGEpe3RoaXMuaj1fLkRmKCk7dGhpcy52PWE7dGhpcy5pPV8uamsoImRkIil9QSgpe3JldHVybiB0aGlzLmoub2Zmc2V0SGVpZ2h0fUIoKXthdyhhPT57YSYmYS5DKCl9KX1GKGEsYixjKXthdyhkPT57dmFyIGU9Xy5ybSh0aGlzLnYpO2QmJmUmJmQuSyhlLGEsYixjKX0pfUsoKXt0aGlzLmkmJnRoaXMuaS5CKCl9QyhhKXt2YXIgYj10aGlzLmo7YT9fLkxoKGIsImdiX0siKTpfLk1oKGIsImdiX0siKTt0aGlzLmkmJnRoaXMuaS5BKGEpfUQoYSl7aWYoYSl7dmFyIGIsYz0oYj1fLkZmKCJnYl9BIikpIT1udWxsP2I6Xy5GZigiZ2JfQiIpO2MmJmMmJmEmJl8ucGsoYyxjLmhyZWYucmVwbGFjZSgvKFs/Jl0oY29udGludWV8Zm9sbG93dXApPSlbXiZdKi9nLCIkMSIrZW5jb2RlVVJJQ29tcG9uZW50KGEpKSk7WS5pKCkuaihhKX19fTt2YXIgZHc9Y2xhc3N7Y29uc3RydWN0b3IoYSl7dGhpcy5pPWF9aihhLGIpe3ZhciBjOyhjPXRoaXMuaS5pKT09bnVsbHx8Yy5VZChhLGIpfX07dmFyIGd3PWNsYXNze2NvbnN0cnVjdG9yKGE9bnVsbCxiPW51bGwpe3RoaXMuQj1hO3RoaXMuRD1iO3RoaXMuaj1kb2N1bWVudC5xdWVyeVNlbGVjdG9yKCdbZGF0YS1zaG9wcGluZy1jYXJ0LXdpZGdldD0idHJ1ZSJdJyk7dGhpcy5BPSExO2I9YT1udWxsO2lmKHRoaXMuail7dGhpcy5BPXRoaXMuai5zdHlsZS5kaXNwbGF5PT09Im5vbmUiOyhhPXRoaXMuai5xdWVyeVNlbGVjdG9yKCdbZGF0YS1zaG9wcGluZy1jYXJ0LWJhZGdlPSJ0cnVlIl0nKSkmJmEuY2hpbGRyZW4ubGVuZ3RoPjAmJihhPWEuY2hpbGRyZW5bMF0pO2xldCBjPXRoaXMuai5xdWVyeVNlbGVjdG9yQWxsKCJbYXJpYS1sYWJlbF0iKTtjLmxlbmd0aD09PTEmJihiPWNbMF0pO18ubWgodGhpcy5qLCgpPT57dmFyIHtsb2c6ZCxldmVudDplfT10aGlzLmkoKTtkJiZlJiZkLmxvZyhlLlVmKX0pfXRoaXMudj1hO3RoaXMuSz1ifWkoKXtyZXR1cm57bG9nOnRoaXMuQnx8ZXcsZXZlbnQ6dGhpcy5EfHxmd319SShhLGIpe3RoaXMuaiYmCnRoaXMuai5hZGRFdmVudExpc3RlbmVyKGEsYil9RihhLGI9IiIpe2lmKHRoaXMudil7dGhpcy52LnRleHRDb250ZW50PWE7dGhpcy52LnBhcmVudEVsZW1lbnQuc3R5bGUuZGlzcGxheT1hPT09IiI/Im5vbmUiOiIiO2lmKGIhPT0iIil7bGV0IGU7KGU9dGhpcy5LKT09bnVsbHx8ZS5zZXRBdHRyaWJ1dGUoImFyaWEtbGFiZWwiLGIpfXZhciB7bG9nOmMsZXZlbnQ6ZH09dGhpcy5pKCk7YyYmZCYmYy5sb2coZC5UZil9fWlzVmlzaWJsZSgpe3JldHVybiEoIXRoaXMuanx8dGhpcy5qLnN0eWxlLmRpc3BsYXk9PT0ibm9uZSIpfUMoYSl7aWYodGhpcy5qKXt0aGlzLmouc3R5bGUuZGlzcGxheT1hPyIiOiJub25lIjt2YXIge2xvZzpiLGV2ZW50OmN9PXRoaXMuaSgpO2ImJmMmJih0aGlzLkEmJihiLmxvZyhjLldmKSx0aGlzLkE9ITEpLGIubG9nKGE/Yy5YZjpjLlZmKSl9fX0sZXc9bnVsbCxmdz1udWxsO3ZhciBYdj1fLmpqKCksaHc9Xy5XLmkoKTtZdigxKT8oXy5OZCgiZ2Jhci5SIixidyksYncucHJvdG90eXBlLnJhPWJ3LnByb3RvdHlwZS5qLGh3LmoucmVzb2x2ZShuZXcgYncpKTpody5qLnJlamVjdChFcnJvcigiSGEiKSk7CmlmKFl2KDIpKXtfLk5kKCJnYmFyLlMiLFkpO1kucHJvdG90eXBlLnNhPVkucHJvdG90eXBlLmo7WS5wcm90b3R5cGUuc2M9WS5wcm90b3R5cGUuQTtZLnByb3RvdHlwZS5zZD1ZLnByb3RvdHlwZS5YO1kucHJvdG90eXBlLnNlPVkucHJvdG90eXBlLkc7WS5wcm90b3R5cGUuc2Y9WS5wcm90b3R5cGUuRDtZLnByb3RvdHlwZS5zZz1ZLnByb3RvdHlwZS5IO1kucHJvdG90eXBlLnNoPVkucHJvdG90eXBlLkM7WS5wcm90b3R5cGUuc2k9WS5wcm90b3R5cGUuTDtZLnByb3RvdHlwZS5zaj1ZLnByb3RvdHlwZS5CO1kucHJvdG90eXBlLnNrPVkucHJvdG90eXBlLkY7WS5wcm90b3R5cGUuc2w9WS5wcm90b3R5cGUuSztsZXQgYT1ZLmkoKTtody5pLnJlc29sdmUoYSk7Xy5OZCgiZ2Jhci5UIixkdyk7ZHcucHJvdG90eXBlLnRhPWR3LnByb3RvdHlwZS5qO2h3LnYucmVzb2x2ZShuZXcgZHcoYSkpfWVsc2UgaHcuaS5yZWplY3QoRXJyb3IoIklhIikpLGh3LnYucmVqZWN0KEVycm9yKCJKYSIpKTsKXy5OZCgiZ2Jhci5QIixjdyk7Y3cucHJvdG90eXBlLnBhPWN3LnByb3RvdHlwZS5BO2N3LnByb3RvdHlwZS5waT1jdy5wcm90b3R5cGUuSztjdy5wcm90b3R5cGUucGw9Y3cucHJvdG90eXBlLkQ7Y3cucHJvdG90eXBlLnBwPWN3LnByb3RvdHlwZS5DO2N3LnByb3RvdHlwZS5wcT1jdy5wcm90b3R5cGUuQjtjdy5wcm90b3R5cGUucHI9Y3cucHJvdG90eXBlLkY7aHcuQi5yZXNvbHZlKG5ldyBjdyhYdikpOwppZihfLkRmKCkucXVlcnlTZWxlY3RvcignW2RhdGEtc2hvcHBpbmctY2FydC13aWRnZXQ9InRydWUiXScpIT09bnVsbCl7Xy5OZCgiZ2Jhci5RIixndyk7Z3cucHJvdG90eXBlLnFhPWd3LnByb3RvdHlwZS5GO2d3LnByb3RvdHlwZS5xYj1ndy5wcm90b3R5cGUuQztndy5wcm90b3R5cGUuemE9Z3cucHJvdG90eXBlLkk7bGV0IGE9bmV3IGd3KFh2LmkoKSwkdik7aHcuQS5yZXNvbHZlKGEpO2EuaXNWaXNpYmxlKCk/WHYuaSgpLmxvZygxNzQpOmEuaiYmYS5qLmRhdGFzZXQuY2Y9PT0idHJ1ZSImJlh2LmkoKS5sb2coMTc1KX1lbHNlIGh3LkEucmVqZWN0KEVycm9yKCJLYSIpKTsKfWNhdGNoKGUpe18uX0R1bXBFeGNlcHRpb24oZSl9CnRyeXsKdmFyIGl3PWZ1bmN0aW9uKGEpe2lmKGE9PW51bGx8fHR5cGVvZiBhPT09Im51bWJlciIpcmV0dXJuIGE7aWYoYT09PSJOYU4ifHxhPT09IkluZmluaXR5Inx8YT09PSItSW5maW5pdHkiKXJldHVybiBOdW1iZXIoYSl9LGp3PWNsYXNzIGV4dGVuZHMgXy5Ve2NvbnN0cnVjdG9yKGEpe3N1cGVyKGEpfX0sa3c9Y2xhc3MgZXh0ZW5kcyBfLlV7Y29uc3RydWN0b3IoYSl7c3VwZXIoYSl9fSxsdz0wLG13PVtdLG53PWZ1bmN0aW9uKGEpe3ZhciBiPW5ldyBJbWFnZSxjPWx3O2Iub25lcnJvcj1iLm9ubG9hZD1iLm9uYWJvcnQ9ZnVuY3Rpb24oKXtjIGluIG13JiZkZWxldGUgbXdbY119O213W2x3KytdPWI7Yi5zcmM9YX0sb3c9Y2xhc3N7Y29uc3RydWN0b3IoKXt0aGlzLmRhdGE9e319bGEoYSl7dmFyIGI9W107Zm9yKGxldCBjIGluIHRoaXMuZGF0YSliLnB1c2goZW5jb2RlVVJJQ29tcG9uZW50KGMpKyI9IitlbmNvZGVVUklDb21wb25lbnQoU3RyaW5nKHRoaXMuZGF0YVtjXSkpKTtyZXR1cm4oImF0eXA9aSZ6eD0iKwoobmV3IERhdGUpLmdldFRpbWUoKSsiJiIrYi5qb2luKCImIikpLnN1YnN0cigwLGEpfX0scHc9Y2xhc3MgZXh0ZW5kcyBvd3tjb25zdHJ1Y3RvcihhLGIsYyxkLGUsZixnLGgpe3N1cGVyKCk7Xy5OYyh0aGlzLmRhdGEse29nc3I6TWF0aC5yb3VuZCgxL2EpLGVpOmIsY3Q6ZCxjYWQ6ZSxpZDpjLGxvYzp3aW5kb3cuZ29vZ2xlP3dpbmRvdy5nb29nbGUuc246IiIscHJpZDpmLG9nZDpnLG9ncHJtOiJ1cCJ9KTtpZihoKWZvcihhPWguc3BsaXQoIiYiKSxiPTA7YjxhLmxlbmd0aDtiKyspYz1hW2JdLnNwbGl0KCI9IiksYy5sZW5ndGg9PTImJih0aGlzLmRhdGFbY1swXV09Y1sxXSl9fSx0dz1jbGFzcyBleHRlbmRzIF8ueHtjb25zdHJ1Y3Rvcigpe3ZhciBhPXF3O3ZhciBiPV8uSGUocncsMSx2b2lkIDAsdm9pZCAwLGl3KTtiPV8uV2MoYiE9bnVsbD9iOjFFLTQsMUUtNCk7dmFyIGM9Xy5QKHN3LDEwKTtjPV8uVmMoYyk7dmFyIGQ9Xy5OKHJ3LDIpO2Q9Xy5WYyhkKTt2YXIgZT1fLk4ocncsCjMpO18uTShydyw4KTtfLlBlKHN3LDI4KTtzdXBlcigpO3RoaXMuaT1hO3RoaXMuQj1iO3RoaXMuQT1jO3RoaXMuaj1kO3RoaXMudj1lO18uTmQoImdiYXIudXAuc2wiLCgwLF8uRykodGhpcy5sb2csdGhpcykpfWxvZyhhLGIsYyxkLGUpe3RyeXtsZXQgZj10aGlzLkI7aWYoZSE9dm9pZCAwJiZlIT1udWxsKWlmKGU+PTAmJmU8PTEpZj1lO2Vsc2V7dGhpcy5pLmxvZyhFcnJvcigidmFgIitiKyJgIitjKyJgIitlKSk7cmV0dXJufWlmKE1hdGgucmFuZG9tKCk8PWYpe2xldCBnPW5ldyBwdyhmLHRoaXMuQSxhLGIsYyx0aGlzLnYsdGhpcy5qLGQpLGg7aD13aW5kb3cuZ29vZ2xlJiZ3aW5kb3cuZ29vZ2xlLmxvZ1VybD8iIjoiaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbSI7aCs9Ii9nZW5fMjA0P3VzZV9jb3JwPW9uJiI7aCs9Zy5sYSgyMDQwLWgubGVuZ3RoKTtudyhoKX19Y2F0Y2goZil7dGhpcy5pLmxvZyhFcnJvcigidmFgIitiKyJgIitjKyJgIitlKSl9fX0sdXc9WyJvZy11cC0iLCJkcF8iLAoiY291bnRfIl0sdnc9ZnVuY3Rpb24oKXt0cnl7cmV0dXJuISFfLnUubG9jYWxTdG9yYWdlJiZ0eXBlb2YgXy51LmxvY2FsU3RvcmFnZT09Im9iamVjdCJ9Y2F0Y2goYSl7cmV0dXJuITF9fSx3dz1mdW5jdGlvbihhKXtyZXR1cm4gYSYmYS5zdHlsZSYmYS5zdHlsZS5iZWhhdmlvciYmdHlwZW9mIGEubG9hZCE9InVuZGVmaW5lZCJ9LHh3PWNsYXNzIGV4dGVuZHMgXy54e2NvbnN0cnVjdG9yKCl7dmFyIGE9cXc7c3VwZXIoKTt0aGlzLmk9YTtfLk5kKCJnYmFyLnVwLnNwZCIsKDAsXy5HKSh0aGlzLmosdGhpcykpO18uTmQoImdiYXIudXAuZ3BkIiwoMCxfLkcpKHRoaXMudix0aGlzKSk7Xy5OZCgiZ2Jhci51cC5kcGMiLCgwLF8uRykodGhpcy5DLHRoaXMpKTtfLk5kKCJnYmFyLnVwLmlpYyIsKDAsXy5HKSh0aGlzLkIsdGhpcykpO18uTmQoImdiYXIudXAuZ2NjIiwoMCxfLkcpKHRoaXMuQSx0aGlzKSl9aihhLGIsYyxkKXt0cnl7aWYoXy5lbSgpKWlmKGR8fChiPSJvZy11cC0iK2IpLHZ3KCkpXy51LmxvY2FsU3RvcmFnZS5zZXRJdGVtKGIsCmMpO2Vsc2UgaWYod3coYSkpe2Q9ITE7Zm9yKGxldCBlPTA7ZTx1dy5sZW5ndGg7ZSsrKWlmKGIuaW5kZXhPZih1d1tlXSk9PT0wKXtkPSEwO2JyZWFrfWQ/KGEuc2V0QXR0cmlidXRlKGIsYyksYS5zYXZlKGEuaWQpKTp0aGlzLmkubG9nKEVycm9yKCJ3YSIpKX19Y2F0Y2goZSl7ZS5jb2RlIT1ET01FeGNlcHRpb24uUVVPVEFfRVhDRUVERURfRVJSJiZ0aGlzLmkubG9nKGUpfX12KGEsYixjKXt0cnl7aWYoIV8uZW0oKSlyZXR1cm4iIjtjfHwoYj0ib2ctdXAtIitiKTtpZih2dygpKXJldHVybiBfLnUubG9jYWxTdG9yYWdlLmdldEl0ZW0oYik7aWYod3coYSkpcmV0dXJuIGEubG9hZChhLmlkKSxhLmdldEF0dHJpYnV0ZShiKX1jYXRjaChkKXtkLmNvZGUhPURPTUV4Y2VwdGlvbi5RVU9UQV9FWENFRURFRF9FUlImJnRoaXMuaS5sb2coZCl9cmV0dXJuIiJ9QyhhLGIpeyhuZXcgXy5rbShhLDEsYikpLndhKCl9QihhLGIpe18uaW0obmV3IF8ua20oYSwxLGIpKX1BKGEsYil7cmV0dXJuKG5ldyBfLmttKGEsCjEpKS5pKGIpfX07Xy53ZCgpO3ZhciB5dz1jbGFzcyBleHRlbmRzIF8ueHt9O3ZhciB6dz1jbGFzcyBleHRlbmRzIF8ueHt9O3ZhciBBdz1mdW5jdGlvbihhLGIsYyl7cmV0dXJuIF8ud2EoYixhLnYpPT0tMT8oYS5BLmxvZyhFcnJvcigiTGFgIithLnYrImAiK2MpKSwhMSk6ITB9LEJ3PWNsYXNzIGV4dGVuZHMgXy54e2NvbnN0cnVjdG9yKCl7dmFyIGE9cXc7c3VwZXIoKTt0aGlzLkE9YTt0aGlzLmo9e307dGhpcy5GPXt9O3RoaXMuaT1udWxsO3RoaXMudj0xO3RoaXMuQz0hMTtfLk5kKCJnYmFyLnVwLnIiLCgwLF8uRykodGhpcy5yZWdpc3Rlcix0aGlzKSk7Xy5OZCgiZ2Jhci51cC5uYXAiLCgwLF8uRykodGhpcy5ILHRoaXMpKTtfLk5kKCJnYmFyLnVwLmFvcCIsKDAsXy5HKSh0aGlzLkcsdGhpcykpO18uTmQoImdiYXIudXAudHAiLCgwLF8uRykodGhpcy5ELHRoaXMpKTtfLk5kKCJnYmFyLnVwLnNzcCIsKDAsXy5HKSh0aGlzLkIsdGhpcykpfXJlZ2lzdGVyKGEsYil7QXcodGhpcyxbMSwyXSwiciIpJiYodGhpcy5qW2FdPXRoaXMualthXXx8W10sdGhpcy5qW2FdLnB1c2goYiksdGhpcy52PT0yJiZfLnUuc2V0VGltZW91dCgoMCxfLkcpKGZ1bmN0aW9uKCl7Yih0aGlzLkIoYSkpfSwKdGhpcyksMCkpfUgoYSxiLGMpe2lmKEF3KHRoaXMsWzFdLCJuYXAiKSYmYylmb3IoYT0wO2E8Yy5sZW5ndGg7YSsrKXRoaXMuRltjW2FdXT0hMH1HKGEsYixjKXtpZihBdyh0aGlzLFsxXSwiYW9wIikmJmMpaWYodGhpcy5pKWZvcihsZXQgZCBpbiB0aGlzLmkpdGhpcy5pW2RdPXRoaXMuaVtkXSYmXy53YShjLGQpIT0tMTtlbHNlIGZvcih0aGlzLmk9e30sYT0wO2E8Yy5sZW5ndGg7YSsrKXRoaXMuaVtjW2FdXT0hMH1EKCl7dHJ5e2lmKHRoaXMudj0yLCF0aGlzLkMpe3RoaXMuQz0hMDtmb3IobGV0IGEgaW4gdGhpcy5qKXtsZXQgYj10aGlzLmpbYV07Zm9yKGxldCBjPTA7YzxiLmxlbmd0aDtjKyspdHJ5e2xldCBkPWJbY10sZT10aGlzLkIoYSk7ZC5hcHBseShudWxsLFtlXSl9Y2F0Y2goZCl7dGhpcy5BLmxvZyhkKX19fX1jYXRjaChhKXt0aGlzLkEubG9nKGEpfX1CKGEpe2lmKEF3KHRoaXMsWzJdLCJzc3AiKSl7bGV0IGI9IXRoaXMuRlthXTt0aGlzLmkmJihiPWImJiEhdGhpcy5pW2FdKTsKcmV0dXJuIGJ9cmV0dXJuITF9fTt2YXIgRXc9Y2xhc3N7Y29uc3RydWN0b3IoKXt2YXIgYT1DdyxiPXJ3O3RoaXMuaj1xdzt0aGlzLkE9Yjt0aGlzLmk9YX12KCl7dmFyIGE9Xy5KKHRoaXMuQSxqdyw0KTthJiZfLkwoYSwxNSkmJnRoaXMuaS5yZWdpc3RlcigiNyIsRHcpfX0sRncsRHc9ZnVuY3Rpb24oYSl7YSYmKGE9Xy5mbS5pKCksYS5pPSEwLGEuQWImJmEuQWIubm90aWZ5KCkpfTt2YXIgR3c9Xy5qaigpLHJ3PV8uSihHdy5qLGt3LDgpfHxuZXcga3cscXc7cXc9R3cudjt2YXIgc3c9R3cuQSxIdz1uZXcgdHcsSXc9bmV3IHh3O18ubGsoInBfbG9nIixIdyk7Xy5saygicF9zdCIsSXcpO18ubGsoInBfdHIiLG5ldyBCdyk7Xy5saygicF9tZ21ocCIsbmV3IHp3KTtfLmxrKCJwX2RzZSIsbmV3IHl3KTt2YXIgQ3c9Xy5uaygicF90ciIpLEp3O0Z3fHwoRnc9bmV3IEV3KTtKdz1Gdzt2YXIgS3c9e307S3dbIjciXT1Kdy52O2ZvcihsZXQgYSBpbiBLdyl0cnl7S3dbYV0uYXBwbHkoSncpfWNhdGNoKGIpe0p3LmoubG9nKEVycm9yKGEpKX1Kdy5pLkQoKTsKfWNhdGNoKGUpe18uX0R1bXBFeGNlcHRpb24oZSl9CnRyeXsKXy5Odj1mdW5jdGlvbihhLGIpe3JldHVybiBhPmI/MTphPGI/LTE6MH07Xy5Pdj1mdW5jdGlvbihhLGIpe2Euc29ydChifHxfLk52KX07Xy5Qdj1mdW5jdGlvbihhLGIpe18uRC5jYWxsKHRoaXMpO3RoaXMuaj1hfHwxO3RoaXMuaT1ifHxfLnU7dGhpcy52PSgwLF8uRykodGhpcy5paSx0aGlzKTt0aGlzLkE9RGF0ZS5ub3coKX07Xy5IKF8uUHYsXy5EKTtfLnA9Xy5Qdi5wcm90b3R5cGU7Xy5wLmtiPSExO18ucC5OYT1udWxsO18ucC5paT1mdW5jdGlvbigpe2lmKHRoaXMua2Ipe2xldCBhPURhdGUubm93KCktdGhpcy5BO2E+MCYmYTx0aGlzLmoqLjg/dGhpcy5OYT10aGlzLmkuc2V0VGltZW91dCh0aGlzLnYsdGhpcy5qLWEpOih0aGlzLk5hJiYodGhpcy5pLmNsZWFyVGltZW91dCh0aGlzLk5hKSx0aGlzLk5hPW51bGwpLHRoaXMuZGlzcGF0Y2hFdmVudCgidGljayIpLHRoaXMua2ImJih0aGlzLnN0b3AoKSx0aGlzLnN0YXJ0KCkpKX19OwpfLnAuc3RhcnQ9ZnVuY3Rpb24oKXt0aGlzLmtiPSEwO3RoaXMuTmF8fCh0aGlzLk5hPXRoaXMuaS5zZXRUaW1lb3V0KHRoaXMudix0aGlzLmopLHRoaXMuQT1EYXRlLm5vdygpKX07Xy5wLnN0b3A9ZnVuY3Rpb24oKXt0aGlzLmtiPSExO3RoaXMuTmEmJih0aGlzLmkuY2xlYXJUaW1lb3V0KHRoaXMuTmEpLHRoaXMuTmE9bnVsbCl9O18ucC5UPWZ1bmN0aW9uKCl7Xy5Qdi5XLlQuY2FsbCh0aGlzKTt0aGlzLnN0b3AoKTtkZWxldGUgdGhpcy5pfTsKfWNhdGNoKGUpe18uX0R1bXBFeGNlcHRpb24oZSl9CnRyeXsKdmFyIE1DPWZ1bmN0aW9uKGEpe3N3aXRjaChhKXtjYXNlIDg6cmV0dXJuWzEwM107Y2FzZSAxOmNhc2UgNTM4OnJldHVyblsxMDVdO2Nhc2UgMTkyOmNhc2UgNDc5OmNhc2UgMTE3OmNhc2UgNDU5OnJldHVyblsxMDFdO2RlZmF1bHQ6cmV0dXJuW119fSxOQz1mdW5jdGlvbihhKXtzd2l0Y2goYSl7Y2FzZSAyMzpyZXR1cm5bMTIsOF07Y2FzZSAzMTpyZXR1cm5bMTAsNl07Y2FzZSA0OTpyZXR1cm5bMTEsN107ZGVmYXVsdDpyZXR1cm5bOSw1XX19LE9DPWZ1bmN0aW9uKGEsYil7c3dpdGNoKGIpe2Nhc2UgMTphOnN3aXRjaChhKXtjYXNlIDIzOmE9WzEyLDhdO2JyZWFrIGE7ZGVmYXVsdDphPVs5LDVdfXJldHVybiBhO2Nhc2UgMjpyZXR1cm4gTkMoYSk7Y2FzZSAzOmE6c3dpdGNoKGEpe2Nhc2UgMjM6YT1bMTIsOF07YnJlYWsgYTtkZWZhdWx0OmE9WzksMTNdfXJldHVybiBhO2RlZmF1bHQ6cmV0dXJuW119fSxQQz1jbGFzcyBleHRlbmRzIF8uVXtjb25zdHJ1Y3RvcihhKXtzdXBlcihhKX19LApRQz1mdW5jdGlvbihhLGIpe3JldHVybiBfLlQoYSwxLGIpfSxSQz1jbGFzcyBleHRlbmRzIF8uVXtjb25zdHJ1Y3RvcihhKXtzdXBlcihhKX1hYigpe3JldHVybiBfLk8odGhpcywxKX19LFNDPWNsYXNzIGV4dGVuZHMgXy5Ve2NvbnN0cnVjdG9yKGEpe3N1cGVyKGEpfWhiKGEpe3JldHVybiBfLlQodGhpcywzLGEpfX0sVEM9Y2xhc3MgZXh0ZW5kcyBfLlV7Y29uc3RydWN0b3IoYSl7c3VwZXIoYSl9fSxVQz1jbGFzcyBleHRlbmRzIF8uVXtjb25zdHJ1Y3RvcihhKXtzdXBlcihhKX19LFZDPWZ1bmN0aW9uKGEsYixjPSExLGQpeyhkPV8uQnYoYSxkKSkmJl8ubXMoZCxfLkooYixfLnFxLDEpLGMsITApO2N8fCgoYz1fLmprKCJkZCIpLnRiKCJhY2NvdW50IikpPyhhPWMudGIoKSxiJiYoYS5zZW5kTWVzc2FnZSgidXNpIix7YW10OmIubGEoKX0pLGEuTD1iKSk6YS5BPWIpfSxXQz1mdW5jdGlvbihhLGIsYyxkLGUsZixnLGg9bnVsbCxrKXt2YXIgbD1fLnFtKGIpO2wmJmQmJighKGw9bC5maWx0ZXIobT0+Cl8uUShtLDE3KT09PTQpKXx8bC5sZW5ndGg8MXx8KF8uSyhsWzBdLDE5LGgpLF8uQ3YoYSxiLGMsXy5EdigpLGxbMF0sZCxlLGYsZyxrKSkpfSxYQz1mdW5jdGlvbihhLGIsYyxkKXtpZihkJiZkLmFiKCk9PT0xKXt2YXIgZT1fLnFtKGIpLmZpbHRlcihmPT5fLlEoZiwxNyk9PT0zKVswXTtlJiZfLkN2KGEsYixjLF8uRHYoKSxlLG51bGwsITEsMCxudWxsLGQpfX0sWUM9ZnVuY3Rpb24oYSl7aXNGaW5pdGUoYSkmJihhPVN0cmluZyhhKSk7cmV0dXJuIHR5cGVvZiBhPT09InN0cmluZyI/L15ccyotPzB4L2kudGVzdChhKT9wYXJzZUludChhLDE2KTpwYXJzZUludChhLDEwKTpOYU59LFpDPWNsYXNzIGV4dGVuZHMgXy5Ve2NvbnN0cnVjdG9yKGEpe3N1cGVyKGEpfUEoKXtyZXR1cm4gXy5KKHRoaXMsVUMsMSl9aSgpe3JldHVybiBfLkoodGhpcyxQQywyKX19LCRDPXt3ZjpmdW5jdGlvbihhLGIsYyl7Yz1jfHx7fTtjLmZvcm1hdD0ianNwYiI7dGhpcy5pPW5ldyBfLmRtKGMpO3RoaXMuaj0KYT09dm9pZCAwP2E6YS5yZXBsYWNlKC9cLyskLywiIil9fSxhRD1mdW5jdGlvbihhKXtpZighYS5GKXJldHVybiBudWxsO3ZhciBiPW5ldyBaQztfLksoYiwxLGEuRik7YS5DJiZfLksoYiwyLGEuQyk7cmV0dXJuIGJ9LGJEPWZ1bmN0aW9uKGEpe3ZhciBiPXsiWC1Hb29nLUFwaS1LZXkiOiJBSXphU3lDYnNidkdDZTdDOW1DdGRhVHljWkIyZVVGdXpzWUtHX0UifTtfLkwoYS5pLDYpJiYoYi5BdXRob3JpemF0aW9uPV8ucGYoW10sITApfHwiIixiWyJYLUdvb2ctQXV0aHVzZXIiXT1hLm5hKTtyZXR1cm4gYn0sY0Q9YXN5bmMgZnVuY3Rpb24oYSxiKXthLmo9bnVsbDthLkY9bnVsbDthLkM9bnVsbDthLkQ9bnVsbDthLks9bnVsbDthLkgmJih3aW5kb3cuX18zUFNBUElTSUQ9YS5ILHdpbmRvdy5fX1NBUElTSUQ9YS5IKTt2YXIgYz1iRChhKSxkPW5ldyBfLmxwO18uSyhkLDEwLGIpO3ZhciBlPW5ldyBfLlY7Xy5vcChlLGQpO2lmKF8uTChhLmksNikmJiFjLkF1dGhvcml6YXRpb24pYS5OLmxvZygxMzEsCmUpO2Vsc2V7dmFyIGY9Xy52bShfLk4oYS5pLDEyKSksZz1fLkwoYS5pLDE0KSYmYi5hYigpPT09MT81OjE7ZD1uZXcgXy5IdDt2YXIgaD1fLlQoZCwxLGEuVSkuaGIoYS5HKTtoPV8uUyhoLDE1LGEuTyk7aD1fLnkoaCw0LGEuY2EpO2g9Xy55KGgsNSxhLmVhKTt2YXIgaz1fLk4oYS5pLDIpO2g9Xy55KGgsMixrKTtrPV8uTChhLmksNik7aD1fLnooaCw2LGspO2s9Xy5MKGEuaSw4KTtoPV8ueihoLDgsayk7az1fLkwoYS5pLDkpO2g9Xy56KGgsOSxrKTtrPV8uTihhLmksMTApO2g9Xy55KGgsMTAsayk7az1fLk4oYS5pLDExKTtoPV8ueShoLDExLGspO2c9Xy5UKGgsMTIsZyk7Zz1fLnooZywxMyxhLlopO2I9Xy5LKGcsMTcsYik7Zz1fLkwoYS5pLDM0KTtiPV8ueihiLDE5LGcpO2c9Xy5MKGEuaSwzNik7Yj1fLnooYiwyMCxnKTtfLnooYiwxMDAxLGEuaGEpO2lzTmFOKGYpfHxfLlMoZCw3LGYpO2EuWiYmXy5TKGQsMTQsYS5vYSk7YS5WJiZfLnkoZCwyMSxhLlYpO2lmKF8uTChhLmksNikpe2Y9CmEuR3x8YS5VfHwwO2I9Xy5PKGEuaSwzMil8fDA7Zz1uZXcgVEM7aD1fLk8oYS5pLDI3KTtnPV8uVChnLDIsaCk7az1bXTthOnN3aXRjaChmKXtjYXNlIDIzOmg9MzticmVhayBhO2RlZmF1bHQ6aD0xfWsucHVzaChoKTtrLnB1c2goLi4uTUMoZikpO2IhPW51bGwmJmsucHVzaCguLi5PQyhmLGIpKTtmPV8ucGMoZywxLF8uaWIsayxfLmpiLHZvaWQgMCx2b2lkIDAsITApO2I9Xy5MKGEuaSwzMyk7Zj1fLnooZiwzLGIpO2I9Xy5MKGEuaSwzNSk7Zj1fLnooZiw0LGIpO18uSyhkLDE2LGYpfWlmKF8uemIoXy5IZShkLDQpKSE9bnVsbCYmXy5OKGQsNCkhPT0iIiYmXy5NZShkLDMpIT1udWxsKXRyeXt2YXIgbD1hLlI7bGV0IEE9YXdhaXQgXy5jbShsLmksbC5qKyIvJHJwYy9nb29nbGUuaW50ZXJuYWwub25lZ29vZ2xlLmFzeW5jZGF0YS52MS5Bc3luY0RhdGFTZXJ2aWNlL0dldEFzeW5jRGF0YSIsZCxjfHx7fSxfLkp0KTtpZihBKXthLmo9Xy5KKEEsXy5zcCw4KXx8bnVsbDtpZihhLmope3ZhciBtPQphLmosbj1fLk0oYS5pLDE2KTtfLlMobSw4LG4pO3ZhciByPWEuaixxPV8uTChhLmksMTUpO18ueihyLDE2LHEpO3ZhciB0PWEuaixCPV8uTihhLmksMTgpO18ueSh0LDcsQik7dmFyIEM9YS5qLEU9Xy5OKGEuaSwxNyk7Xy55KEMsNixFKX1hLkY9Xy5KKEEsVUMsNCl8fG51bGw7YS5DPV8uSihBLFBDLDUpfHxudWxsO2EuRD1fLkwoQSwzKTthLks9Xy5PKEEsNik7YS5TPV8uTChBLDExKTthLlg9Xy5MKEEsMTIpO2lmKGEuWCl7bGV0IFI9Xy5OKGEuQywxKSxDYj1fLk0oQSwxMyk7YS5CPW5ldyBfLmttKFIsNDA5NixDYil9YS52PV8uTyhBLDkpfHxudWxsO2EuQT1fLk8oQSwxMCl8fG51bGw7YS5NPV8uSihBLF8ucnEsMTUpfHxudWxsfX1jYXRjaChBKXt0aHJvdyBBIGluc3RhbmNlb2YgXy5JbD8oQS5jb2RlPT09MTZ8fEEuY29kZT09PTcpJiZfLkZoKGEuUCxBLDEzMyxlKTphLlAubG9nKEEsZSksQTt9ZWxzZSBhLk4ubG9nKDEzMixlKX19LGREPWNsYXNze2NvbnN0cnVjdG9yKGEsYiwKYyxkLGUsZixnLGg9IiIpe3RoaXMubmE9Xy5QKGEsNSl8fCIwIjt0aGlzLk49ZDt0aGlzLlA9ZTt0aGlzLlU9WUMoXy5QKGMsNikpO3RoaXMuRz1ZQyhfLlAoYywyNCkpfHwwO3RoaXMuTz1fLlBlKGMsMjgpfHwwO3RoaXMuaGE9ISFfLk9lKGMsMzIpfHwhIV8uT2UoYywzMyk7dGhpcy5jYT1fLlAoYyw1KXx8IiI7dGhpcy5lYT1fLlAoYyw0KXx8IiI7dGhpcy5aPWY7dGhpcy5vYT1nO3RoaXMuaT1ifHxuZXcgU0M7dGhpcy5WPWg7dGhpcy5nYT1fLk4odGhpcy5pLDEzKTt0aGlzLlI9bmV3ICRDLndmKHRoaXMuZ2EsbnVsbCx7d2l0aENyZWRlbnRpYWxzOiEwfSk7dGhpcy5IPV8uUChhLDEyKXx8IiI7dGhpcy5LPXRoaXMuRD10aGlzLkM9dGhpcy5GPXRoaXMuaj1udWxsO3RoaXMuWD0hMTt0aGlzLkI9bnVsbDt0aGlzLlM9ITE7dGhpcy5NPXRoaXMuQT10aGlzLnY9bnVsbH1aYSgpe2lmKHRoaXMuQT09PTMmJnRoaXMudj09PTIpcmV0dXJuImMiO2lmKHRoaXMuQT09PTEmJnRoaXMudj09PQoxKXJldHVybiJhIjtpZih0aGlzLkE9PT0yKXtpZih0aGlzLnY9PT0yKXJldHVybiJzYyI7aWYodGhpcy52PT09MSlyZXR1cm4ic3cifXJldHVybiB0aGlzLkE9PT00JiZ0aGlzLnY9PT0yPyJzYSI6Im4ifUwoYSxiKXt2YXIgYz1iRCh0aGlzKTt2YXIgZD1uZXcgXy5LdDtkPV8uVChkLDEsYSk7Yj1fLksoZCwyLGIpO2I9Xy5TKGIsMyx0aGlzLk8pLmhiKHRoaXMuRyk7dGhpcy5YJiZ0aGlzLkImJnRoaXMuQiYmKGE9PT0zfHxhPT09Mj90aGlzLkIud2EoKTooYT09PTF8fGE9PT00KSYmXy5pbSh0aGlzLkIpKTthPXRoaXMuUjtfLmNtKGEuaSxhLmorIi8kcnBjL2dvb2dsZS5pbnRlcm5hbC5vbmVnb29nbGUuYXN5bmNkYXRhLnYxLkFzeW5jRGF0YVNlcnZpY2UvUmVwb3J0U3RhdGUiLGIsY3x8e30sXy5NdCl9fSxlRD1uZXcgTWFwKFtbMCwwXSxbMSwxXSxbMiw0XSxbMyw4XSxbNCwxMl0sWzUsMjRdLFs2LDQ4XV0pLGZEPVFDKG5ldyBSQywyKSxqRD1hc3luYyBmdW5jdGlvbihhKXt2YXIgYj0KKG5ldyBEYXRlKS5nZXRUaW1lKCk7aWYoZ0QoYSxiKXx8aEQoYSkpe2lmKGdEKGEsYikpe2xldCBoPW5ldyBfLlY7Zm9yKGxldCBrIG9mIGVELmtleXMoKSl7YTp7dmFyIGM9YTtpZihrPT09MCl7Yz0hMDticmVhayBhfWxldCBsPWMuRi5nZXQoayksbT1lRC5nZXQoayk7Yi1sPjM2RTUqbT8oYy5GLnNldChrLGIpLGM9ITApOmM9ITF9YyYmXy5wYyhoLDY3LF8uaWIsayxfLmpiKX1hLksubG9nKDE0MyxoKX1pZihoRChhKSYmYi1hLkc+YS5NJiYhaUQoITApKXRyeXthd2FpdCBjRChhLmosZkQpO2Eudj1hLmouUztsZXQgaD1hRChhLmopO2lmKGgmJl8uZ2soaCxQQywyKSl7aUQoITEpJiZkb2N1bWVudC5nZXRFbGVtZW50c0J5TmFtZSgiY2FsbG91dCIpWzBdLnJlbW92ZSgpO2xldCBrPW5ldyBfLlY7dmFyIGQ9bmV3IF8ubHAsZT1oLmkoKTt2YXIgZj1fLksoZCw5LGUpO3ZhciBnPV8uSyhmLDEwLGZEKTtfLm9wKGssZyk7YS5LLmxvZygxMDgsayk7V0MoYS5YLGEuQyxhLkgsaCwhIWEuai5ELAphLmouS3x8MCxhLmosbnVsbCxmRCl9fWNhdGNoKGgpe2Eudj0hMH1maW5hbGx5e2EuRz1ifX1lbHNlIF8uJGcoYS5ELkNhLGEuTCl9LGdEPWZ1bmN0aW9uKGEsYil7cmV0dXJuIF8uTChhLkIsMjApJiZiLWEuaTwxMjA5NkU1fSxoRD1mdW5jdGlvbihhKXtyZXR1cm4gXy5MKGEuQiwyOSkmJiFhLnZ9LGlEPWZ1bmN0aW9uKGEpe3ZhciBiPWRvY3VtZW50LmdldEVsZW1lbnRzQnlOYW1lKCJjYWxsb3V0Iik7cmV0dXJuIGIubGVuZ3RoPT09MSYmYT09PShiWzBdLnN0eWxlLnZpc2liaWxpdHkhPT0iaGlkZGVuIil9LGtEPWNsYXNze2NvbnN0cnVjdG9yKGEsYixjLGQsZSl7dGhpcy5DPWE7dGhpcy5LPWI7dGhpcy5IPWM7dGhpcy5qPWQ7dGhpcy5YPWU7dGhpcy5CPV8uSih0aGlzLkMsU0MsMTUpO3RoaXMuTT1fLk0odGhpcy5CLDIyKSoxRTM7dGhpcy5EPW5ldyBfLnprO3RoaXMuTD10aGlzLkQuSSgidmlzaWJpbGl0eWNoYW5nZSIsZj0+e3N3aXRjaChmLmVlKXtjYXNlICJoaWRkZW4iOnRoaXMuQT0KITA7YnJlYWs7Y2FzZSAidmlzaWJsZSI6dGhpcy5BJiYodGhpcy5BPSExLGpEKHRoaXMpKX19KTt0aGlzLmk9KG5ldyBEYXRlKS5nZXRUaW1lKCk7dGhpcy5GPW5ldyBNYXAoW1swLHRoaXMuaV0sWzEsdGhpcy5pXSxbMix0aGlzLmldLFszLHRoaXMuaV0sWzQsdGhpcy5pXSxbNSx0aGlzLmldLFs2LHRoaXMuaV1dKTt0aGlzLkc9dGhpcy5pO3RoaXMudj10aGlzLkE9ITE7UUMobmV3IFJDLDEpfX07dmFyIGxEPWFzeW5jIGZ1bmN0aW9uKGEpe3ZhciBiPV8uUGUoYS5CLDMwKTtiJiZiPjA/Xy5QaShhLnN0YXJ0LGIsYSk6YS5zdGFydCgpfSxtRD1mdW5jdGlvbihhLGIsYyxkLGUsZil7dmFyIGc9bmV3IF8uVixoPW5ldyBfLmxwO2M9Xy5LKGgsOSxjKTtfLm9wKGcsYyk7YS5qLmxvZygxMDgsZyk7V0MoYixhLmksYS52LGQsISFlLkQsZS5LfHwwLGUsbnVsbCxmKX0sb0Q9Y2xhc3N7Y29uc3RydWN0b3IoYSl7dmFyIGI9bkQuQSxjPW5ELnYsZD1uRC5pKCk7dGhpcy5BPW5ELkI7dGhpcy5pPWE7dGhpcy5CPWI7dGhpcy52PWM7dGhpcy5qPWR9YXN5bmMgc3RhcnQoKXt2YXIgYT1udWxsLGI9bnVsbCxjPV8ucW0odGhpcy5pKTtpZihjJiZjLmxlbmd0aD4wKWZvcih2YXIgZCBvZiBjKWM9Xy5RKGQsMTcpLGM9PT0yP2I9ZDpjPT09MyYmKGE9ZCk7Yz1hIT1udWxsO3ZhciBlPS0xO2MmJihkPV8uSihhLF8uc3AsMTkpLGU9Xy5NKGQsMSl8fC0xKTtkPV8uSih0aGlzLmksU0MsMTUpO3ZhciBmPQpfLk4odGhpcy5pLDI5KTtlPW5ldyBkRCh0aGlzLkEsZCx0aGlzLkIsdGhpcy5qLHRoaXMudixjLGUsZik7Yz1uZXcgUkM7UUMoYywxKTtmPV8uUSh0aGlzLkEsMTMpO2YhPT0xJiZmIT09MCYmKGY9e1sxXToibiIsWzJdOiJjIixbM106ImEiLFs0XToic2MiLFs1XToic3ciLFs2XToic2EifVtmXXx8Im4iLF8uZW89ITAsXy5mbz1mLF8ucnMmJihfLlh8fF8udHMmJl8ueW8oKSkpO3RyeXthd2FpdCBjRChlLGMpfWNhdGNoKGwpe3JldHVybn1mPW5ldyBfLkZ2KHRoaXMuaik7KF8uTChkLDI5KXx8Xy5MKGQsMjApKSYmbmV3IGtEKHRoaXMuaSx0aGlzLmosdGhpcy52LGUsZik7dGhpcy5qLmxvZygxMzApO3ZhciBnPWFEKGUpO2lmKF8uTCh0aGlzLmksMjMpKXt7dmFyIGg9YTtsZXQgbD1nJiZfLmdrKGcsUEMsMik7aWYoaHx8bCl7dmFyIGs9Zz09bnVsbD92b2lkIDA6Zy5pKCk7bCYmayYmKGs9PW51bGw/dm9pZCAwOl8uTihrLDEpKT09Xy5OKGQsMzEpJiYhXy5MKGQsMzApP2g9aD8zOm51bGw6CiFoJiZsP2g9NDooKGs9aCYmIWwpfHwoaD1fLkooaCxfLnNwLDE5KSxrPV8uTyhoLDI1KT09PTEpLGg9az8zOk1hdGguZmxvb3IoTWF0aC5yYW5kb20oKSoyKT09PTA/NDozKX1lbHNlIGg9bnVsbH1oPT09ND8oYT1nPT1udWxsP3ZvaWQgMDpnLmkoKSxnJiZhJiZtRCh0aGlzLGYsYSxnLGUsYykpOmEmJmg9PT0zJiYoZz1hKSYmKGE9bmV3IF8uVixnPV8uSihnLF8uc3AsMTkpLGc9Xy5NKGcsMSksYT1fLlMoYSwzMSxnKSx0aGlzLmoubG9nKDEwOCxhKSxYQyhmLHRoaXMuaSx0aGlzLnYsYykpfWVsc2UgZyYmXy5nayhnLFBDLDIpJiYhYSYmKGE9Zy5pKCkpJiYoKGE9PW51bGw/dm9pZCAwOl8uTihhLDEpKSE9Xy5OKGQsMzEpfHxfLkwoZCwzMCkpJiZtRCh0aGlzLGYsYSxnLGUsYyk7YT1lLlphKCk7Xy5RZyh0aGlzLkEpJiZhJiZiJiYoXy5obz1hLF8ucnMmJiFfLlgmJihiPV8uaG8sKF8udW8uaGFzKGIpfHxfLmxvJiYoYj09PSJhInx8Yj09PSJzYSIpKSYmKF8uaG89Im4iKSxfLnRzJiYKXy55bygpKSk7Yj1fLkwodGhpcy5pLDI2KTsoXy5MKHRoaXMuaSwyNCl8fGIpJiYoYT1lLk0pJiZWQyhmLGEsYixfLk4odGhpcy5pLDI3KSk7Xy5MKGQsMTkpJiYoYj1lLmosZD1hRChlKSxiJiZXQyhmLHRoaXMuaSx0aGlzLnYsZCwhIV8uTChiLDExKSxfLk8oYiwxMyksbnVsbCxiLGMpKX19O3ZhciBuRD1fLmpqKCk7KGFzeW5jIGZ1bmN0aW9uKCl7dmFyIGE9Xy5ybShuRCk7bEQobmV3IG9EKGEpKX0pKCk7Cn1jYXRjaChlKXtfLl9EdW1wRXhjZXB0aW9uKGUpfQp0cnl7CnZhciBwRD1mdW5jdGlvbihhLGIpe3JldHVybiBiP18ud20oYSxmdW5jdGlvbihjKXtyZXR1cm4hYnx8dHlwZW9mIGMuY2xhc3NOYW1lPT09InN0cmluZyImJl8ueGEoYy5jbGFzc05hbWUuc3BsaXQoL1xzKy8pLGIpfSk6bnVsbH07dmFyIHFEO3ZhciBzRD1mdW5jdGlvbihhLGIpe2lmKGRvY3VtZW50LmZvcm1zWzBdJiZkb2N1bWVudC5mb3Jtc1swXS5xKXtsZXQgYz0oZG9jdW1lbnQuZm9ybXNbMF0ucXx8IiIpLnZhbHVlO2MmJl8ucGsoYixiLmhyZWYucmVwbGFjZSgvKFs/Jl0pcT1bXiZdKnwkLyxmdW5jdGlvbihkLGUpe3JldHVybihlfHwiJiIpKyJxPSIrZW5jb2RlVVJJQ29tcG9uZW50KGMpfSkpfWVsc2UgYS5BLmxvZyhuZXcgckQpfSx0RD1jbGFzcyBleHRlbmRzIF8uRW17Y29uc3RydWN0b3IoYSxiLGMpe3N1cGVyKGEsYik7dGhpcy5MPXRoaXMuaS5nZXRBdHRyaWJ1dGUoImRhdGEtcGlkIik7dGhpcy5DPXBEKHRoaXMuaSwiZ2Jfd2EiKTt0aGlzLkc9cEQodGhpcy5pLCJnYl90YSIpO3RoaXMuRj1uZXcgXy5CbShjLCExKTtfLnVtKHRoaXMsdGhpcy5pLCgwLF8uRykodGhpcy5ILHRoaXMpKTtpZihhPV8uRmYoImdiX2hhIix0aGlzLmkpKWlmKGE9YS5zdHlsZS5iYWNrZ3JvdW5kUG9zaXRpb24uc3BsaXQoIiAiKSxhPQoiIyIrdGhpcy5pLmlkKyIgLmdiX2hhOjpiZWZvcmV7bGVmdDoiK2FbMF0rIjt0b3A6IithWzFdKyJ9IixxRCl7Yj1xRDtjPXZvaWQgMDtpZihjPT12b2lkIDB8fGM8MCl7Yz1udWxsO3RyeXtjPWIuY3NzUnVsZXN8fGIucnVsZXN9Y2F0Y2goZSl7aWYoZS5jb2RlPT0xNSl0aHJvdyBlLnN0eWxlU2hlZXQ9YixlO31jPWMubGVuZ3RofWlmKGIuaW5zZXJ0UnVsZSliLmluc2VydFJ1bGUoYSxjKTtlbHNlIGlmKGE9L14oW15ce10rKVx7KFteXHtdKylcfS8uZXhlYyhhKSxhLmxlbmd0aD09MyliLmFkZFJ1bGUoYVsxXSxhWzJdLGMpO2Vsc2UgdGhyb3cgRXJyb3IoIm9iIik7fWVsc2V7dmFyIGQ9Xy53ZCgpO2I9ZC5pO2M9Xy5NZihkLmksIlNUWUxFIik7bGV0IGU9Xy5FYygic3R5bGUiLGIpO2UmJmMuc2V0QXR0cmlidXRlKCJub25jZSIsZSk7Yy50eXBlPSJ0ZXh0L2NzcyI7ZD1kLmkuZ2V0RWxlbWVudHNCeVRhZ05hbWUoIkhFQUQiKVswXTtjLnN0eWxlU2hlZXQ/Yy5zdHlsZVNoZWV0LmNzc1RleHQ9CmE6Yy5hcHBlbmRDaGlsZChiLmNyZWF0ZVRleHROb2RlKGEpKTtkLmFwcGVuZENoaWxkKGMpO3FEPWMuc2hlZXR9fUgoYSl7dmFyIGI9YS5pO2ImJl8uS2goYiwiZ2JwcSIpJiZzRCh0aGlzLGIpO2lmKHRoaXMuRil7YT1uZXcgXy5WO3ZhciBjPV8udm0odGhpcy5MKTt0eXBlb2YgYyE9PSJudW1iZXIifHxpc05hTihjKXx8Xy5TKGEsMTUsYyk7Xy56KGEsMjAsITApO2xldCBlPWM9MDtpZih0aGlzLkMpe3ZhciBkPWIub2Zmc2V0VG9wO2lmKF8uS2godGhpcy5HLCJnYl9MYSIpKWZvcihkPWIub2Zmc2V0VG9wLGI9Yi5wYXJlbnRFbGVtZW50O2ImJmIhPXRoaXMuRzspZCs9Yi5vZmZzZXRUb3AsYj1iLnBhcmVudEVsZW1lbnQ7Yj1kKzIwPDQ1NjtkPXRoaXMuQy5jbGFzc0xpc3QuY29udGFpbnMoImdiX3JhIik7dGhpcy5DLmNsYXNzTGlzdC5jb250YWlucygiZ2JfcWEiKT8oZT0xLGM9Yj8xOjIpOmQmJihlPTIsYz1iPzM6NCl9Xy5BbSh0aGlzLkYsYywtMSwtMSxlLCExLGEpfX19LHJEPQpjbGFzcyBleHRlbmRzIEVycm9ye2NvbnN0cnVjdG9yKCl7c3VwZXIoKX19O3ZhciB3RD1jbGFzcyBleHRlbmRzIF8uRW17Y29uc3RydWN0b3IoKXt2YXIgYT11RC52LGI9dUQuaSgpO3N1cGVyKHZELGEpO3ZhciBjPSh0aGlzLml8fGRvY3VtZW50KS5xdWVyeVNlbGVjdG9yQWxsKCIuZ2JfNiIpLGQ9W107Zm9yKGxldCBlPTA7ZTxjLmxlbmd0aDtlKyspZC5wdXNoKG5ldyB0RChjW2VdLGEsYikpO3RoaXMuQz1kfVQoKXtzdXBlci5UKCk7Zm9yKGxldCBhPTA7YTx0aGlzLkMubGVuZ3RoO2ErKyl0aGlzLkNbYV0uZGlzcG9zZSgpO3RoaXMuQz1udWxsfX07dmFyIHVEPV8uamooKSx2RD1fLkZmKCJnYl9SIik7dkQmJm5ldyB3RDsKfWNhdGNoKGUpe18uX0R1bXBFeGNlcHRpb24oZSl9Cn0pKHRoaXMuZ2Jhcl8pOwovLyBHb29nbGUgSW5jLgo="}},"time_used":96,"timings":{"blocked":-1,"dns":5,"connect":15,"send":0,"wait":16,"receive":32,"ssl":28},"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"ogads-pa.clients6.google.com/$rpc/google.internal.onegoogle.asyncdata.v1.AsyncDataService/GetAsyncData","fqdn":"ogads-pa.clients6.google.com","domain":"google.com","tld":"com"},"ip":{"addr":"142.250.178.74","port":443,"asn":15169,"as":"GOOGLE","country":"United States","country_code":"US"},"is_navigation_request":false,"resource_type":"xhr","requested_by":"https://www.google.com/","date":"2026-07-27T15:33:56.511Z","timestamp":1785166436511,"http_version":"HTTP/3","security_state":"secure","security_info":{"cipher_suite":"TLS_AES_256_GCM_SHA384","key_group_name":"mlkem768x25519","signature_name":"ECDSA-P256-SHA256","protocol":"TLSv1.3","cert":{"subject":{"commonName":"*.googleapis.com","organization":""},"issuer":{"commonName":"WE2","organization":"Google Trust Services"},"validity":{"start":"Mon, 29 Jun 2026 08:39:24 GMT","end":"Mon, 21 Sep 2026 08:39:23 GMT"},"fingerprint":{"sha1":"30:E6:39:92:AE:61:8A:6C:B3:F5:6A:F8:DF:8B:23:84:F8:CC:EB:43","sha256":"69:CA:DB:12:F8:75:2D:F3:A2:80:F1:10:A7:08:29:0C:48:94:DC:02:3A:3F:B1:0F:F9:6F:79:A9:7D:5E:34:D3"}}},"request":{"raw":"POST /$rpc/google.internal.onegoogle.asyncdata.v1.AsyncDataService/GetAsyncData HTTP/1.1\r\nHost: ogads-pa.clients6.google.com\r\nUser-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:134.0) Gecko/20100101 Firefox/134.0\r\nAccept: */*\r\nAccept-Language: en-US,en;q=0.9\r\nAccept-Encoding: gzip, deflate, br, zstd\r\nReferer: https://www.google.com/\r\nX-Goog-Api-Key: AIzaSyCbsbvGCe7C9mCtdaTycZB2eUFuzsYKG_E\r\nContent-Type: application/json+protobuf\r\nX-User-Agent: grpc-web-javascript/0.1\r\nContent-Length: 2360\r\nOrigin: https://www.google.com\r\nSec-GPC: 1\r\nConnection: keep-alive\r\nCookie: AEC=AdJVEauUsWHpfGAsUyeilL8EI9I2Tr9FfEzOqXuEJToXYpKe1KUK4km-Sg; __Secure-ENID=35.SE=Uz4O9fexpqtcg27rsCzqB3loBSC8a70Mqp_d18c3cjeU9uMWe4FHcPW1svFlK9taJqOPsqN9ZTMvrbcif3fGSVkGFj_PZtB1iqcUHQQ3k4McoRQh3TFmXwFvuBZDiuJbZsEWkIiLh9oQZqCS02Kcsd8T8KoXlZsObsNcGy15dXCeCexC1uy7XgZprqFrMQQA8uTOFbrZoEzmrPkKmCFOh5B5Jnu68ljyS8KtzuKzT_-dPSCoq1OOlqfaBgM\r\nSec-Fetch-Dest: empty\r\nSec-Fetch-Mode: cors\r\nSec-Fetch-Site: same-site\r\nPragma: no-cache\r\nCache-Control: no-cache\r\n\r\n","headers":null,"cookies":null,"method":"POST","post_data":{"size":2360,"data":"[538,\"https://www.google.com/\",538,\"no\",\"no\",0,null,0,0,\"\",\"\",1,0,null,89978449,null,[1],null,1,0,\"CAMSkQ0ViQqqtQv4hlir0a8OqKu7BdysSd2SBadYvVUylhO5EeoepBLVBvoCnAGhFPYC0gABngXCBaYDtAZN4ZOCAvgXjgECqQj455QGsgTEBMwFk-oFmYgMdIcGtQYh3IwEtwOF_nyk-yCSDfcDte9btYilBq3xPdv_9A3Rsw7dlA6gTuww5FnkNvYeLuE-pB77OvQI_6Yz0p4AtegG9-PbDqwRqvwN2wy28xqRLuxciGuORoHzBfrwxwb40CykhAWDgQSK6C2G0gLeKpkXj7QGxxPWN6xGtD2yBQD-GsUflE-uGZAOlR3QBvQ_owPIFsIX8wLJAfoX8x-ZA48V1gC9BpcEdIkFmgWSCHLfD8km2QWoAdwI0RelBoEPzhHaBbkD_iXjjDqPBmkCjwSSAIkF_QWSBV6BBTX3AwQrThzyiwbIBUCVD6UAgQYM9wLhAfsG5gx_zgPhBYgGqAJnDp6IAbgF7wUaiAYAASGiBh6EgwWvC6gCgQTN5RF-QMIMZ3GUOIMGsgYznAYhpAV6EhuRBvwCjQY6lgU4MzVDWjusBQkF6gQTGHNGAbUC-gbIBqMCxs8GRIk2mBvMAJEPpwYFoBftsy2n6QTXU7SiDewxqb82rs8FrMkB89IFB4Qw5wTizyUH0qo5kAGSBcwFnwawAvcDnwUVrwHgDOgBoAvwD3QAvQasAuwTxREUC_kDZ9AAKZMGtA2gDoYGO44JmQ6VBqkCqAD_BKULQ_gC-wjSEu4C1wkFD-gP1QmRAZYG1A2vA9cOyQaCA-UCrAaUBtIA2AbiFp0GIY0PSOMIpAPBD5sDzwSKBkWYBMAY5wDAD8cPCZUF9wy5BJAG0AFxowPVD50DggPMBOECgQQFlAbkBpsFqgOZDUuNBpAFiAPNBjisBRyXBPoOjwT3BsACwQ-NBc4FZbUAzAa7BLEN2AagA3Z7BfoPnAHAAssG3QLhAwX_BlibFdkPkg66AMULyAawA-gG1QyWA4kGDtwFRnKRA6cBBe0FhaYG64kF27MS-O8Fg58F85IDkm2Whgagbp_IDbTdBdiUBYidAbGRCuKtAt-pAZ8tBK2kBNgFs5wF8AChswO0tQbC7AWJ5QS1NfWUBu1dvMgFu4oCu3zYdrGuAPzYBe_lrQNPRqsYvewCq4IGBaT8BfqUBobhDAKZggXSoALogAXcXcdw_YUE3ziaBLkOBfcygVXy7gXx8AWmmATPL9f0Brr9BpqfBdXOBQT5bt5fgS6atALw7QbAHKXNBpnGBgSPBeq1BrPJBbZoBPRG5OUG0kGF3gGoCaPGBc_HAuFxipAF768EyRDxmwXvsASmCO9711y3lAacmwULrh3IX4CrAeziBry4BvSAAr2fBqcEiqoG2J4DnY0GqkLhDLkrv-IGBZP_BuGDBYubBYeGBrmFBpGLBaqEBoNcm5cB8BHspwSgNcA12qoE56kG7RjEJPTqBoLCBfIT2AqjtQa-RaUB14oG1kzlsgPkkAbNE-pHA6SmBtErjTe44wbUV6gFoOgF1k6XDKFt91yUBvt61pMG-QySN4ytBJ_XBag88l6MIcxAuukDjBnN9AakI63-BcwbBJxRuvEGjlCNf_roBPaNBf0qw_AGkw35Udm3BqwZoa4GPMYUtaEEvg6Meq4V76oGhO8F1gP8W7YKqhb9BbTdBdl89RqtK_8PtrIGymDNGMdW1DWzE5EfgYsGzRyDRpc97S6zjgXSf_kF-5MGgRW6TAPUkgaDfu6TBvBf90DxTNwF7hCXJf9DqAbCAJmiBu6qBsMzBZIY6VfVhwadIvwGuakG7zGhZ6-IBIYFA_WOBL7KBby5BZ53nDz9qAXK_laDqgaWF9YxggjyvAWFTJYhv3_fCgP1GowRyySSTf0V93XTM85Rg_cG0RGCKcwo3xisYsAKpw6OCNkCyAuxRucW3wn8EoItkkHOBPJlsF_BEagIzQrdHfYCrhejBKoPyQYy5y74BY1Dvir3DpUCvQGwN8QFCPQNkgaJCZoMmCHdF-ED-wzLCYcuiQW_DNgNkQTJD5sIoSrsFL4I8CS1Qxq4Gr4E9QVuqBSQC9kp1Rm8uCPGAfAAlgHrBrkAVlT_BdkEoAPPBqoGecgEH3B0BVPCAtUEBWp0uwbSBvcBUowGvgCjAs4ChgAu9AG_BeMBrQCiCtQApAaqA_sAvh2ZA-4EjQa5EtUFuwKSADr2BJAGrAOjBf0GhAKBBu4EzgUEhQTwA60GrA3cBpUFyAi2DokP\",{\"1001\":0}]"}},"response":{"raw":"HTTP/3 200 \r\ncontent-type: application/json+protobuf; charset=UTF-8\r\nstrict-transport-security: max-age=10886400; includeSubdomains\r\nvary: Origin, X-Origin, Referer\r\ncontent-encoding: gzip\r\ndate: Mon, 27 Jul 2026 15:33:56 GMT\r\nserver: ESF\r\ncontent-length: 30\r\nx-xss-protection: 0\r\nx-frame-options: SAMEORIGIN\r\nx-content-type-options: nosniff\r\naccess-control-allow-origin: https://www.google.com\r\naccess-control-allow-credentials: true\r\naccess-control-expose-headers: x-google-consent,x-google-eom,vary,vary,vary,content-encoding,date,server,content-length\r\nserver-timing: gfet4t7; dur=23\r\nalt-svc: h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000\r\n\r\n","headers":null,"cookies":null,"status_code":"200","status_text":"","fingerprints":[{"name":"HSTS","description":"HTTP Strict Transport Security (HSTS) informs browsers that the site should only be accessed using HTTPS.","website":"https://www.rfc-editor.org/rfc/rfc6797#section-6.1","common_platform_enumeration":"","icon":"","categories":["Security"]}],"data":{"size":53,"size_decoded":678,"mime_type":"application/json+protobuf; charset=UTF-8","magic":"JSON text data","md5":"cc21f616ac48633008e6768c2cd65f2c","sha1":"2dc662e723a9ccfe2b40469396d10074472064ae","sha256":"2b4b20e1fa834bf64509e94dd18eca0865abc217fcb62e769d6b6002084236a7","sha512":"4ab5a1da0f7c483d05c086e7e6fe0516bf872627e5865e913a9cc78019b604f3c3e14847ebfe616af56d2efee69393674341786277944c56af8d88e4b3f33652","ssdeep":"","tlshash":"3190000000000cf0cc0033c000000003300c00330000003000cc0ccc000c000000000c","first_seen":"2024-06-18T16:50:07Z","last_seen":"2026-08-16T23:21:35.740791Z","times_seen":238684,"resource_available":false,"data":"W251bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsMF0="}},"time_used":87,"timings":{"blocked":-1,"dns":2,"connect":17,"send":0,"wait":38,"receive":0,"ssl":29},"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"www.google.com/complete/s?q\u0026cp=0\u0026client=gws-wiz\u0026xssi=t\u0026gs_pcrt=2\u0026hl=no\u0026authuser=0\u0026psi=Y3pnarTELeimwPAPo6StkA4.1785166436821\u0026dpr=1\u0026nolsbt=1","fqdn":"www.google.com","domain":"google.com","tld":"com"},"ip":{"addr":"142.251.157.119","port":443,"asn":15169,"as":"GOOGLE","country":"United States","country_code":"US"},"is_navigation_request":false,"resource_type":"xhr","requested_by":"https://www.google.com/","date":"2026-07-27T15:33:56.865Z","timestamp":1785166436865,"http_version":"HTTP/3","security_state":"secure","security_info":{"cipher_suite":"TLS_AES_128_GCM_SHA256","key_group_name":"mlkem768x25519","signature_name":"ECDSA-P256-SHA256","protocol":"TLSv1.3","cert":{"subject":{"commonName":"*.google.com","organization":""},"issuer":{"commonName":"WR2","organization":"Google Trust Services"},"validity":{"start":"Mon, 29 Jun 2026 08:37:25 GMT","end":"Mon, 21 Sep 2026 08:37:24 GMT"},"fingerprint":{"sha1":"D9:DA:81:30:78:3E:9C:6B:5F:9D:18:52:0E:BE:6D:52:2F:FB:33:E0","sha256":"EA:E2:2D:87:EC:9C:D6:51:9D:59:E4:13:35:3B:97:14:E3:DA:58:2D:1C:69:19:41:54:94:25:C3:94:17:F3:0C"}}},"request":{"raw":"GET /complete/s?q\u0026cp=0\u0026client=gws-wiz\u0026xssi=t\u0026gs_pcrt=2\u0026hl=no\u0026authuser=0\u0026psi=Y3pnarTELeimwPAPo6StkA4.1785166436821\u0026dpr=1\u0026nolsbt=1 HTTP/1.1\r\nHost: www.google.com\r\nUser-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:134.0) Gecko/20100101 Firefox/134.0\r\nAccept: */*\r\nAccept-Language: en-US,en;q=0.9\r\nAccept-Encoding: gzip, deflate, br, zstd\r\nReferer: https://www.google.com/\r\nSec-GPC: 1\r\nConnection: keep-alive\r\nCookie: AEC=AdJVEauUsWHpfGAsUyeilL8EI9I2Tr9FfEzOqXuEJToXYpKe1KUK4km-Sg; __Secure-ENID=35.SE=Uz4O9fexpqtcg27rsCzqB3loBSC8a70Mqp_d18c3cjeU9uMWe4FHcPW1svFlK9taJqOPsqN9ZTMvrbcif3fGSVkGFj_PZtB1iqcUHQQ3k4McoRQh3TFmXwFvuBZDiuJbZsEWkIiLh9oQZqCS02Kcsd8T8KoXlZsObsNcGy15dXCeCexC1uy7XgZprqFrMQQA8uTOFbrZoEzmrPkKmCFOh5B5Jnu68ljyS8KtzuKzT_-dPSCoq1OOlqfaBgM\r\nSec-Fetch-Dest: empty\r\nSec-Fetch-Mode: cors\r\nSec-Fetch-Site: same-origin\r\nPragma: no-cache\r\nCache-Control: no-cache\r\n\r\n","headers":null,"cookies":null,"method":"GET"},"response":{"raw":"HTTP/3 200 \r\ndate: Mon, 27 Jul 2026 15:33:56 GMT\r\nexpires: Mon, 27 Jul 2026 15:33:56 GMT\r\ncache-control: private, max-age=3600\r\ncontent-type: application/json; charset=UTF-8\r\ncontent-disposition: attachment; filename=\"f.txt\"\r\ncross-origin-opener-policy: same-origin-allow-popups; report-to=\"gws\"\r\nreport-to: {\"group\":\"gws\",\"max_age\":2592000,\"endpoints\":[{\"url\":\"https://csp.withgoogle.com/csp/report-to/gws/fff\"}]}\r\naccept-ch: Sec-CH-Prefers-Color-Scheme\r\ncontent-encoding: br\r\nserver: Proxima\r\ncontent-length: 43\r\nx-xss-protection: 0\r\nx-frame-options: SAMEORIGIN\r\nalt-svc: h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000\r\n\r\n","headers":null,"cookies":null,"status_code":"200","status_text":"","fingerprints":null,"data":{"size":39,"size_decoded":667,"mime_type":"application/json; charset=UTF-8","magic":"ASCII text","md5":"e1229558fd06bb8f6a7cc0371825a830","sha1":"aa97f1fddc9ae1d830b1616eccb7c3ceed1a559a","sha256":"b6bb7b6de2a270aaa62a0a6fe82b614e9dd62a90c78882b73e7642de235b8de1","sha512":"675eca008d5669f1bdbc0770346b6869dd5c9d98b8e5052266ec8eeb013998f0a728f8d9ffccf6435d7590b8f9c402e29a9dac5ba6fbaddf6a7f6736360bce39","ssdeep":"","tlshash":"0c90045074501f4007cd5d77531314015710174c4057c141041331047cd115111c5040","first_seen":"2026-07-27T15:34:29.331227Z","last_seen":"2026-07-27T15:34:29.331227Z","times_seen":1,"resource_available":false,"data":"KV19JwpbW10seyJhdiI6IjE3OTg1NDcyOTU0MzU0MTczNDQzIn1d"}},"time_used":30,"timings":{"blocked":0,"dns":0,"connect":0,"send":0,"wait":30,"receive":0,"ssl":0},"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"dao-fwa.fun/rewards/","fqdn":"dao-fwa.fun","domain":"dao-fwa.fun","tld":"fun"},"ip":{"addr":"172.67.147.132","port":443,"asn":13335,"as":"CLOUDFLARENET","country":"","country_code":"zz"},"is_navigation_request":true,"resource_type":"document","requested_by":"","date":"2026-07-27T15:33:55.092Z","timestamp":1785166435092,"http_version":"HTTP/3","security_state":"secure","security_info":{"cipher_suite":"TLS_AES_128_GCM_SHA256","key_group_name":"mlkem768x25519","signature_name":"ECDSA-P256-SHA256","protocol":"TLSv1.3","cert":{"subject":{"commonName":"dao-fwa.fun","organization":""},"issuer":{"commonName":"WE1","organization":"Google Trust Services"},"validity":{"start":"Mon, 27 Jul 2026 03:00:51 GMT","end":"Sun, 25 Oct 2026 03:59:37 GMT"},"fingerprint":{"sha1":"10:88:CF:58:CC:C9:FE:FF:B9:61:10:A8:3C:79:8A:A2:27:F2:B5:69","sha256":"55:EF:D5:E5:0D:C2:78:38:22:2F:F6:7B:3C:7E:C9:BE:3F:88:61:C1:D3:21:88:B0:70:87:AC:7A:B3:EC:B3:E7"}}},"request":{"raw":"GET /rewards/ HTTP/1.1\r\nHost: dao-fwa.fun\r\nUser-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:134.0) Gecko/20100101 Firefox/134.0\r\nAccept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8\r\nAccept-Language: en-US,en;q=0.9\r\nAccept-Encoding: gzip, deflate, br, zstd\r\nSec-GPC: 1\r\nConnection: keep-alive\r\nUpgrade-Insecure-Requests: 1\r\nSec-Fetch-Dest: document\r\nSec-Fetch-Mode: navigate\r\nSec-Fetch-Site: none\r\nPriority: u=0, i\r\nPragma: no-cache\r\nCache-Control: no-cache\r\n\r\n","headers":null,"cookies":null,"method":"GET"},"response":{"raw":"HTTP/3 302 \r\nserver: cloudflare\r\ndate: Mon, 27 Jul 2026 15:33:55 GMT\r\ncontent-type: text/html; charset=UTF-8\r\nnel: {\"report_to\":\"cf-nel\",\"success_fraction\":0.0,\"max_age\":604800}\r\npriority: u=0,i\r\nlocation: https://google.com\r\ncf-cache-status: DYNAMIC\r\nreport-to: {\"group\":\"cf-nel\",\"max_age\":604800,\"endpoints\":[{\"url\":\"https://a.nel.cloudflare.com/report/v4?s=FcPkCU3egAL5V1mVK4S7vmViPb%2FDrejcjFtX42s2%2FbYU%2Bg7xqKNP%2F%2BFat2FwAu0NK%2FcCUcOBMmE2Amb16T9KN12oOujqlkAw2PQ8vFD%2Fbe4NRGsQcuSJoqCMotlphw%3D%3D\"}]}\r\ncf-ray: a21cb48c0ef4b4fd-OSL\r\nalt-svc: h3=\":443\"; ma=86400\r\nserver-timing: cfExtPri\r\n\r\n","headers":null,"cookies":null,"status_code":"302","status_text":"","fingerprints":[{"name":"Cloudflare","description":"Cloudflare is a web-infrastructure and website-security company, providing content-delivery-network services, DDoS mitigation, Internet security, and distributed domain-name-server services.","website":"https://www.cloudflare.com","common_platform_enumeration":"","icon":"CloudFlare.svg","categories":["CDN"]}],"data":{"size":0,"size_decoded":0,"mime_type":"text/html; charset=UTF-8","magic":"","md5":"d41d8cd98f00b204e9800998ecf8427e","sha1":"da39a3ee5e6b4b0d3255bfef95601890afd80709","sha256":"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855","sha512":"cf83e1357eefb8bdf1542850d66d8007d620e4050b5715dc83f4a921d36ce9ce47d0d13c5d85f2b0ff8318d2877eec2f63b931bd47417a81a538327af927da3e","ssdeep":"","tlshash":"","first_seen":"0001-01-01T00:00:00Z","last_seen":"2026-08-16T23:46:43.370624Z","times_seen":17926730,"resource_available":true,"data":null}},"time_used":481,"timings":{"blocked":-1,"dns":95,"connect":17,"send":0,"wait":369,"receive":0,"ssl":0},"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"www.gstatic.com/images/branding/searchlogo/ico/favicon.ico","fqdn":"www.gstatic.com","domain":"gstatic.com","tld":"com"},"ip":{"addr":"142.250.178.67","port":443,"asn":15169,"as":"GOOGLE","country":"United States","country_code":"US"},"is_navigation_request":false,"resource_type":"img","requested_by":"https://www.google.com/","date":"2026-07-27T15:33:56.787Z","timestamp":1785166436787,"http_version":"HTTP/3","security_state":"secure","security_info":{"cipher_suite":"TLS_AES_128_GCM_SHA256","key_group_name":"mlkem768x25519","signature_name":"ECDSA-P256-SHA256","protocol":"TLSv1.3","cert":{"subject":{"commonName":"*.gstatic.com","organization":""},"issuer":{"commonName":"WE2","organization":"Google Trust Services"},"validity":{"start":"Mon, 29 Jun 2026 08:39:25 GMT","end":"Mon, 21 Sep 2026 08:39:24 GMT"},"fingerprint":{"sha1":"4E:F2:73:C6:27:16:58:35:FE:55:D5:30:6B:E8:6D:2B:DA:B0:E8:7B","sha256":"82:EF:6A:61:96:A5:23:D6:2C:2C:9D:77:67:04:D8:7B:3B:6A:50:DA:3C:6C:6A:5F:4E:2D:55:F3:FC:DA:0B:EE"}}},"request":{"raw":"GET /images/branding/searchlogo/ico/favicon.ico HTTP/1.1\r\nHost: www.gstatic.com\r\nUser-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:134.0) Gecko/20100101 Firefox/134.0\r\nAccept: image/avif,image/webp,image/png,image/svg+xml,image/*;q=0.8,*/*;q=0.5\r\nAccept-Language: en-US,en;q=0.9\r\nAccept-Encoding: gzip, deflate, br, zstd\r\nReferer: https://www.google.com/\r\nSec-Fetch-Storage-Access: none\r\nSec-GPC: 1\r\nConnection: keep-alive\r\nSec-Fetch-Dest: image\r\nSec-Fetch-Mode: no-cors\r\nSec-Fetch-Site: cross-site\r\nPriority: u=6\r\nPragma: no-cache\r\nCache-Control: no-cache\r\n\r\n","headers":null,"cookies":null,"method":"GET"},"response":{"raw":"HTTP/3 200 \r\naccept-ranges: bytes\r\ncross-origin-resource-policy: cross-origin\r\ncross-origin-opener-policy-report-only: same-origin; report-to=\"static-on-bigtable\"\r\nreport-to: {\"group\":\"static-on-bigtable\",\"max_age\":2592000,\"endpoints\":[{\"url\":\"https://csp.withgoogle.com/csp/report-to/static-on-bigtable\"}]}\r\ncontent-length: 1345\r\nx-content-type-options: nosniff\r\ncontent-encoding: gzip\r\nserver: sffe\r\nx-xss-protection: 0\r\ndate: Wed, 22 Jul 2026 13:10:18 GMT\r\nexpires: Thu, 22 Jul 2027 13:10:18 GMT\r\ncache-control: public, max-age=31536000\r\nlast-modified: Fri, 16 May 2025 22:08:00 GMT\r\ncontent-type: image/x-icon\r\nvary: Accept-Encoding\r\nage: 440618\r\nalt-svc: h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000\r\n\r\n","headers":null,"cookies":null,"status_code":"200","status_text":"","fingerprints":null,"data":{"size":1322,"size_decoded":2055,"mime_type":"image/png","magic":"PNG image data, 32 x 32, 8-bit/color RGBA, non-interlaced","md5":"e8972ce34a4545b33c3926a20c306b71","sha1":"5fb07e9235adcdcbfa643528ddd1b77caa57f2a0","sha256":"8720df457a93b97d3cdd7c05714c8e255a1969085844eb247756b869dbea636a","sha512":"00d533122e0a5ca816fffbb48ab59ddf8409f2b973e5619f6e9e25033231e32c040d289dc66948fa70c9e55cbe532c2be4923d55e72fa63eee5cbdc880457e28","ssdeep":"","tlshash":"3421fb03933c80a7be3d61a43815cd1474e57ec85138e108f895d6b3af6e743755679e","first_seen":"2025-09-03T14:52:51.714292Z","last_seen":"2026-08-16T23:21:35.712287Z","times_seen":9355,"resource_available":false,"data":"iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAACXBIWXMAAAsSAAALEgHS3X78AAAE3ElEQVRYhc2XW2xUVRSGv30uU9rTMhUaCuVixQSMpLYmPIhYwAcTIyKFROI1KQmkxBgj8UEf5MEYiSYmPvhAfCASY02MUaFEHjSRQYtGNDAqIhKxQJVeodPLMJ2Zc/by4cz91tZ4+5Od2Wf2Xuv/z9lrr722EhFmiTagA9gEbCwz5wQQAg4D4Vl5FZGZWqeIhGXuCKdsK/qvNNgsIqG/QFyIUMrXnAR0iEjkbyBPI5LyWcSlpDgGOoG3S67XV71wshd+CMPwEAiAAShoXIy0tsL6dtS6u8qt+E7gUO4fhQI6gI+LzM6ehjf2w9AQJC1QgCi/KRMwQZmIYSLKRBYvwXj2KVTLmlIituEHaZGAZvzIDeZN/+BVOPwhTAX850QgS44CZWWaoBDTRgzbd77lfoxdTxYKGMffUZfA/35pHCoif+8F+Pxdvx/wSr1NPpSR/3z2HERvFM4KkrMMaYtOCvf2p8/A5W5ouAHz4+AkoDoJpguGB6QEpT6GAKJUVsstKzBe2QdOTSmpG1OcmSUIA62Z4eEeCD0BV+pgnoahOhhwwBCwVsL23bCuHZxaf340Cl9/g+5+H0YjcOvKSuRpfA+0KRFpA87kDX2xCgYHIWpDNOALmLLhju2w4/kscSGiUeTIMdTWzTORp3GnhR/5WYwdhUA/NBhQKzDtQZUHddvhkZcru3Mc1GMPz4Y4jQ4LP7dnETkK8wywACVgu2DUwQOvzcXxbLHJojD4pnuz/WoBF1j2KATyN0ga310p41pAkc0xCqEpqFhcr3JnbbSK7OJ9oAyUpcAEAsDSLWVfYXd3OQGFGVaxpx262vP/Ldi4KelCZk+LoWDeirICykKpbEs/l0CRABGd7aeMhNLGcxJTxk/xFxAN4uJpl6R4TIuLG79U0b+gEbxU06TSUqpVRlEMEGhGJy4zJRpLmVzXHtWRIzTUbSjpoOueNInK++35EQbGZ+THwi+jMjtB17bjXesDDKLaT7f9I+9Q37QPy6wvcrCnXeWQ+5ichu5v08IkM7725iLzEwZ+DZeB1G9lVAv9nseg1vziac7EJ/nk1z0zv04KB89EGXVjRO0pkkYCVyVJGgnWFsdyyCDnbAaw6zsYtldwUQtXtTCshUEx+HL0Mw5e2MuUO1mR/MBPf7A//DvjNcNMVI8QC0zhGR4PtZQM5MMlD6OJiRDHz91LRBTjYtAnDtd1DWPikAi0squ5i/sa1hO0nIynnoGLvHn+Ar0DMQKx5VhuNbZbg5MIYno2x3fXsTSYJyJzGEGJMizUt5fjVw8wLjaXJciEOEyKw5DXSJwASapI6lpqzflEkh6SDEJ8CYiJii3HdB0CroMdX0BXy0Je2lAUPzuBQ7kVUYiCtNx9oYuPhnoYkIV4YjGmb2JSGnBReFKFxsbVVSgE8Rz09BJQGuJNWLEmPMOlrXYZJ7fdXkh+gtQZlJsHOvHLpQweX/UWmxp3ABCXQHZAzEzXUG6mr6yJTN+1x3lw+SKObV5dSD6e4vJtZlOUnoqc5rmfX+e32AQxCSIYCCag0NryT01dhXjVSHIBtbKUF29bx9OrVxW6ggpFaRqdlCnLj42c4uhImN6x8/RPXwMUIgYKYb5Zz93BNrY0ruHBRS0E7apSLorK8v/8YvK/vZr9a5fTUjFQDv/I9fxPxUx0d1WRkbMAAAAASUVORK5CYII="}},"time_used":25,"timings":{"blocked":0,"dns":0,"connect":0,"send":0,"wait":25,"receive":0,"ssl":0},"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"www.google.com/async/hpba?vet=10ahUKEwj0gZKal_OVAxVoExAIHSNSC-IQj-0KCCc..i\u0026ei=Y3pnarTELeimwPAPo6StkA4\u0026opi=89978449\u0026yv=3\u0026sp_imghp=false\u0026sp_hpte=1\u0026sp_hpep=1\u0026stick=\u0026cs=0\u0026async=_basejs:%2Fxjs%2F_%2Fjs%2Fk%3Dxjs.hd.no.ZJX-0yQnO-M.2019.O%2Fam%3DAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgQAAAAABBAAAAAAAAAAAAAAAYAAgAAAAAAAAAAAAAAAAAAIAAAQAAIAAAAAAAAAAAEAAAAAAABAAACAAAYAAAAQABBAAAAAMAAAAAAAAAAAAAAAAAAAAAgBAAAABCAADwBwZYAQAAAAAAAAASADAAAAAAAAAAFgAAIAEAAAAEQAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAABgAAAAAAKAAAAABAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAgAAACgAACAAAAgAAAAAAAAAAAAAAAACgAwAAAAAAAAAAAAAAAAAAAAAAAAAACAAAQIAAAAAAAAAAAAQACAAAAEAHQOABhhQUAAAAAAAAAAAAAAAAAAAAAAAAAAACLIBdSAEBEAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAyAkAAAAAAICF%2Fdg%3D0%2Fbr%3D1%2Frs%3DACT90oG_sTN876pKLsn8EAIC7HPAt8yW8Q%3Fcb%3D121509378,_basecss:%2Fxjs%2F_%2Fss%2Fk%3Dxjs.hd.h9GHjaAphl0.L.F4.O%2Fam%3DAAAEQAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAABAAAAIECAAAZAAAAAAAgAACAAAAAAAIAAAAAABAeAAAAMAAAAAAAAAAAAAAAAAAAQAAAIAAAAAAAAAAAEAAAAAAAAAIAiAAAAAAAAQABFAAAQAAAAAAAAAAACAAAAAAAAAAACBAAAAAAAAAAAABAAgAAAAAAAAAAYTAQAAAAABAGAAAAAAAAAAAAAAAAAAAAAABAJEACACAAAAAAAAgAAAAAAAQBhBAEAAEKIAAAAAAAAAKABQAAAACgAxAEAQAAAAAAAAAACAAEgRBAAAAAgAAAABAACAAIAAAAAGAEBQBAogYCAECgAwAAACADAAAAAAQAAAAAAAAAAAAAiAAAAAAAAACQAAADBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAE%2Fbr%3D1%2Frs%3DACT90oGbAV3hgWIqz8I-ppdbYy_xG58I7g%3Fcb%3D121509378,_basecomb:%2Fxjs%2F_%2Fjs%2Fk%3Dxjs.hd.no.ZJX-0yQnO-M.2019.O%2Fck%3Dxjs.hd.h9GHjaAphl0.L.F4.O%2Fam%3DAAAEQAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAABAAAAIECAAAZAAAgQAAgAADBAAAAAAIAAAAAABAeAAgAMAAAAAAAAAAAAAAAAIAAQQAAIAAAAAAAAAAAEAAAAAAABAIAiAAAYAAAAQABFAAAQAMAAAAAAAAACAAAAAAAAAAAiBAAAABCAADwBwZYAwAAAAAAAAASYTAQAAAAABAGFgAAIAEAAAAEQAAAAAAAAABAJEACACAAABAAAAgAAAAAAAQBhBAEAAEKIAAAABAAAAKABQAAAACgAxAEAQAAAABAAAAACAAEgRBAAAAAgAAAChAACAAIAgAAAGAEBQBAogYCAECgAwAAACADAAAAAAQAAAAAAAAAAAAAiAAAQIAAAACQAAADBAQACAAAAEAHQOABhhQUAAAAAAAAAAAAAAAAAAAAAAAAAAACLIBdSAEBEAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAyAkAAAAAAICF%2Fd%3D1%2Fed%3D1%2Fdg%3D0%2Fbr%3D1%2Fujg%3D1%2Frs%3DACT90oHlSnCzx5mAdYXy8e1Zh-GxJ0al8Q%3Fcb%3D121509378,_fmt:prog,_id:_Y3pnarTELeimwPAPo6StkA4_11","fqdn":"www.google.com","domain":"google.com","tld":"com"},"ip":{"addr":"142.251.157.119","port":443,"asn":15169,"as":"GOOGLE","country":"United States","country_code":"US"},"is_navigation_request":false,"resource_type":"xhr","requested_by":"https://www.google.com/","date":"2026-07-27T15:33:56.919Z","timestamp":1785166436919,"http_version":"HTTP/3","security_state":"secure","security_info":{"cipher_suite":"TLS_AES_128_GCM_SHA256","key_group_name":"mlkem768x25519","signature_name":"ECDSA-P256-SHA256","protocol":"TLSv1.3","cert":{"subject":{"commonName":"*.google.com","organization":""},"issuer":{"commonName":"WR2","organization":"Google Trust Services"},"validity":{"start":"Mon, 29 Jun 2026 08:37:25 GMT","end":"Mon, 21 Sep 2026 08:37:24 GMT"},"fingerprint":{"sha1":"D9:DA:81:30:78:3E:9C:6B:5F:9D:18:52:0E:BE:6D:52:2F:FB:33:E0","sha256":"EA:E2:2D:87:EC:9C:D6:51:9D:59:E4:13:35:3B:97:14:E3:DA:58:2D:1C:69:19:41:54:94:25:C3:94:17:F3:0C"}}},"request":{"raw":"GET /async/hpba?vet=10ahUKEwj0gZKal_OVAxVoExAIHSNSC-IQj-0KCCc..i\u0026ei=Y3pnarTELeimwPAPo6StkA4\u0026opi=89978449\u0026yv=3\u0026sp_imghp=false\u0026sp_hpte=1\u0026sp_hpep=1\u0026stick=\u0026cs=0\u0026async=_basejs:%2Fxjs%2F_%2Fjs%2Fk%3Dxjs.hd.no.ZJX-0yQnO-M.2019.O%2Fam%3DAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgQAAAAABBAAAAAAAAAAAAAAAYAAgAAAAAAAAAAAAAAAAAAIAAAQAAIAAAAAAAAAAAEAAAAAAABAAACAAAYAAAAQABBAAAAAMAAAAAAAAAAAAAAAAAAAAAgBAAAABCAADwBwZYAQAAAAAAAAASADAAAAAAAAAAFgAAIAEAAAAEQAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAABgAAAAAAKAAAAABAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAgAAACgAACAAAAgAAAAAAAAAAAAAAAACgAwAAAAAAAAAAAAAAAAAAAAAAAAAACAAAQIAAAAAAAAAAAAQACAAAAEAHQOABhhQUAAAAAAAAAAAAAAAAAAAAAAAAAAACLIBdSAEBEAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAyAkAAAAAAICF%2Fdg%3D0%2Fbr%3D1%2Frs%3DACT90oG_sTN876pKLsn8EAIC7HPAt8yW8Q%3Fcb%3D121509378,_basecss:%2Fxjs%2F_%2Fss%2Fk%3Dxjs.hd.h9GHjaAphl0.L.F4.O%2Fam%3DAAAEQAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAABAAAAIECAAAZAAAAAAAgAACAAAAAAAIAAAAAABAeAAAAMAAAAAAAAAAAAAAAAAAAQAAAIAAAAAAAAAAAEAAAAAAAAAIAiAAAAAAAAQABFAAAQAAAAAAAAAAACAAAAAAAAAAACBAAAAAAAAAAAABAAgAAAAAAAAAAYTAQAAAAABAGAAAAAAAAAAAAAAAAAAAAAABAJEACACAAAAAAAAgAAAAAAAQBhBAEAAEKIAAAAAAAAAKABQAAAACgAxAEAQAAAAAAAAAACAAEgRBAAAAAgAAAABAACAAIAAAAAGAEBQBAogYCAECgAwAAACADAAAAAAQAAAAAAAAAAAAAiAAAAAAAAACQAAADBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAE%2Fbr%3D1%2Frs%3DACT90oGbAV3hgWIqz8I-ppdbYy_xG58I7g%3Fcb%3D121509378,_basecomb:%2Fxjs%2F_%2Fjs%2Fk%3Dxjs.hd.no.ZJX-0yQnO-M.2019.O%2Fck%3Dxjs.hd.h9GHjaAphl0.L.F4.O%2Fam%3DAAAEQAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAABAAAAIECAAAZAAAgQAAgAADBAAAAAAIAAAAAABAeAAgAMAAAAAAAAAAAAAAAAIAAQQAAIAAAAAAAAAAAEAAAAAAABAIAiAAAYAAAAQABFAAAQAMAAAAAAAAACAAAAAAAAAAAiBAAAABCAADwBwZYAwAAAAAAAAASYTAQAAAAABAGFgAAIAEAAAAEQAAAAAAAAABAJEACACAAABAAAAgAAAAAAAQBhBAEAAEKIAAAABAAAAKABQAAAACgAxAEAQAAAABAAAAACAAEgRBAAAAAgAAAChAACAAIAgAAAGAEBQBAogYCAECgAwAAACADAAAAAAQAAAAAAAAAAAAAiAAAQIAAAACQAAADBAQACAAAAEAHQOABhhQUAAAAAAAAAAAAAAAAAAAAAAAAAAACLIBdSAEBEAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAyAkAAAAAAICF%2Fd%3D1%2Fed%3D1%2Fdg%3D0%2Fbr%3D1%2Fujg%3D1%2Frs%3DACT90oHlSnCzx5mAdYXy8e1Zh-GxJ0al8Q%3Fcb%3D121509378,_fmt:prog,_id:_Y3pnarTELeimwPAPo6StkA4_11 HTTP/1.1\r\nHost: www.google.com\r\nUser-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:134.0) Gecko/20100101 Firefox/134.0\r\nAccept: */*\r\nAccept-Language: en-US,en;q=0.9\r\nAccept-Encoding: gzip, deflate, br, zstd\r\nReferer: https://www.google.com/\r\nx-sg-e: 1\r\nSec-GPC: 1\r\nConnection: keep-alive\r\nCookie: AEC=AdJVEauUsWHpfGAsUyeilL8EI9I2Tr9FfEzOqXuEJToXYpKe1KUK4km-Sg; __Secure-ENID=35.SE=Uz4O9fexpqtcg27rsCzqB3loBSC8a70Mqp_d18c3cjeU9uMWe4FHcPW1svFlK9taJqOPsqN9ZTMvrbcif3fGSVkGFj_PZtB1iqcUHQQ3k4McoRQh3TFmXwFvuBZDiuJbZsEWkIiLh9oQZqCS02Kcsd8T8KoXlZsObsNcGy15dXCeCexC1uy7XgZprqFrMQQA8uTOFbrZoEzmrPkKmCFOh5B5Jnu68ljyS8KtzuKzT_-dPSCoq1OOlqfaBgM\r\nSec-Fetch-Dest: empty\r\nSec-Fetch-Mode: cors\r\nSec-Fetch-Site: same-origin\r\nPragma: no-cache\r\nCache-Control: no-cache\r\n\r\n","headers":null,"cookies":null,"method":"GET"},"response":{"raw":"HTTP/3 200 \r\nversion: 952570408\r\nx-content-type-options: nosniff\r\ncontent-type: text/plain; charset=UTF-8\r\ncontent-disposition: attachment; filename=\"f.txt\"\r\nstrict-transport-security: max-age=31536000\r\ncross-origin-opener-policy: same-origin-allow-popups; report-to=\"gws\"\r\nreport-to: {\"group\":\"gws\",\"max_age\":2592000,\"endpoints\":[{\"url\":\"https://csp.withgoogle.com/csp/report-to/gws/none\"}]}\r\naccept-ch: Sec-CH-Prefers-Color-Scheme\r\ncontent-encoding: br\r\ndate: Mon, 27 Jul 2026 15:33:56 GMT\r\nserver: gws\r\nx-xss-protection: 0\r\nx-frame-options: SAMEORIGIN\r\nalt-svc: h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000\r\n\r\n","headers":null,"cookies":null,"status_code":"200","status_text":"","fingerprints":[{"name":"Google Web Server","description":"","website":"https://en.wikipedia.org/wiki/Google_Web_Server","common_platform_enumeration":"cpe:2.3:a:google:web_server:*:*:*:*:*:*:*:*","icon":"Google.svg","categories":["Web servers"]},{"name":"HSTS","description":"HTTP Strict Transport Security (HSTS) informs browsers that the site should only be accessed using HTTPS.","website":"https://www.rfc-editor.org/rfc/rfc6797#section-6.1","common_platform_enumeration":"","icon":"","categories":["Security"]}],"data":{"size":102,"size_decoded":727,"mime_type":"text/plain; charset=UTF-8","magic":"ASCII text","md5":"0afba27cd9016e545ccd53fec483481b","sha1":"3ecb98b7085f6b24ca3a59aca7a5f7ac31889d97","sha256":"3ce62eac7888232a7516a6a6fee6b4c706ba2e000e3ae50d0aae05f21ab9418c","sha512":"a0aae9f532b0348d0827d124af9996fee1cd05278ed1624cb0eb8326ec0122ba197e35b1e54a789b1f09ce1b660177b21cf5ba36576cfe33beabc8cd61044c03","ssdeep":"","tlshash":"0cb0121401dd0c4c190a111023d8ffbeb52f555b54e797a71fe0155b11ec4416d72070","first_seen":"2026-07-27T15:34:29.333052Z","last_seen":"2026-07-27T15:34:29.333052Z","times_seen":1,"resource_available":false,"data":"KV19JwoyMjtbIlpIcG5hb21hT2FHUTl1OFBfNW5xb1FrIiwiMjQ5NiJdYztbMixudWxsLCIwIl0xYjs8ZGl2IGpzbmFtZT0iTmxsMG5lIj48L2Rpdj5jO1s5LG51bGwsIjAiXTA7"}},"time_used":53,"timings":{"blocked":0,"dns":0,"connect":0,"send":0,"wait":50,"receive":3,"ssl":0},"alerts":{"ids":null,"analyzer":null,"urlquery":null}}]}
