PCFET0NUWVBFIGh0bWw+CjxodG1sIGxhbmc9InB0LUJSIiBkYXRhLXRoZW1lPSJsaWdodCI+CjxoZWFkPgo8bWV0YSBjaGFyc2V0PSJVVEYtOCI+CjxtZXRhIG5hbWU9InZpZXdwb3J0IiBjb250ZW50PSJ3aWR0aD1kZXZpY2Utd2lkdGgsIGluaXRpYWwtc2NhbGU9MS4wIj4KPHRpdGxlPjNQIEh1YjwvdGl0bGU+CjxzdHlsZT4KKntib3gtc2l6aW5nOmJvcmRlci1ib3g7bWFyZ2luOjA7cGFkZGluZzowfQpbZGF0YS10aGVtZT0ibGlnaHQiXXstLWJnOiNmN2Y3Zjg7LS1zdXJmYWNlOiNmZmY7LS1zdXJmYWNlMjojZWJlYmVkOy0tYm9yZGVyOnJnYmEoMCwwLDAsMC4wOCk7LS1ib3JkZXItaG92ZXI6cmdiYSgwLDAsMCwwLjE2KTstLXRleHQ6IzExMTExMjstLW11dGVkOiM4ODg4OGY7LS1oaW50OiNiMGIwYjg7LS1icmFuZDojNUI2RkU4Oy0tYnJhbmQtZGltOnJnYmEoOTEsMTExLDIzMiwwLjA4KTstLWJyYW5kLWJvcmRlcjpyZ2JhKDkxLDExMSwyMzIsMC4yMik7LS1oZWFkZXItYmc6cmdiYSgyNDcsMjQ3LDI0OCwwLjkpOy0tc2hhZG93OjAgMnB4IDEycHggcmdiYSgwLDAsMCwwLjA4KTstLWxvZ28tY29sb3I6IzFjMWMxYzstLW92ZXJsYXk6cmdiYSgwLDAsMCwwLjM1KX0KW2RhdGEtdGhlbWU9ImRhcmsiXXstLWJnOiMwZjBmMTE7LS1zdXJmYWNlOiMxYTFhMWU7LS1zdXJmYWNlMjojMjYyNjJjOy0tYm9yZGVyOnJnYmEoMjU1LDI1NSwyNTUsMC4wOCk7LS1ib3JkZXItaG92ZXI6cmdiYSgyNTUsMjU1LDI1NSwwLjE2KTstLXRleHQ6I2YwZjBmNDstLW11dGVkOiM4ODg4YTA7LS1oaW50OiM1NTU1NmE7LS1icmFuZDojN0I4RkZGOy0tYnJhbmQtZGltOnJnYmEoMTIzLDE0MywyNTUsMC4xKTstLWJyYW5kLWJvcmRlcjpyZ2JhKDEyMywxNDMsMjU1LDAuMjUpOy0taGVhZGVyLWJnOnJnYmEoMTUsMTUsMTcsMC45KTstLXNoYWRvdzowIDJweCAxMnB4IHJnYmEoMCwwLDAsMC40KTstLWxvZ28tY29sb3I6I2ZmZjstLW92ZXJsYXk6cmdiYSgwLDAsMCwwLjU1KX0KYm9keXtmb250LWZhbWlseTotYXBwbGUtc3lzdGVtLCdTRiBQcm8gRGlzcGxheScsJ1NGIFBybyBUZXh0JyxCbGlua01hY1N5c3RlbUZvbnQsc2Fucy1zZXJpZjtiYWNrZ3JvdW5kOnZhcigtLWJnKTtjb2xvcjp2YXIoLS10ZXh0KTttaW4taGVpZ2h0OjEwMHZoOy13ZWJraXQtZm9udC1zbW9vdGhpbmc6YW50aWFsaWFzZWQ7dHJhbnNpdGlvbjpiYWNrZ3JvdW5kIC4ycyxjb2xvciAuMnN9Ci5oZWFkZXJ7ZGlzcGxheTpmbGV4O2FsaWduLWl0ZW1zOmNlbnRlcjtqdXN0aWZ5LWNvbnRlbnQ6c3BhY2UtYmV0d2VlbjtwYWRkaW5nOjE0cHggMjhweDtiYWNrZ3JvdW5kOnZhcigtLWhlYWRlci1iZyk7YmFja2Ryb3AtZmlsdGVyOmJsdXIoMTJweCk7LXdlYmtpdC1iYWNrZHJvcC1maWx0ZXI6Ymx1cigxMnB4KTtib3JkZXItYm90dG9tOjAuNXB4IHNvbGlkIHZhcigtLWJvcmRlcik7cG9zaXRpb246c3RpY2t5O3RvcDowO3otaW5kZXg6MTB9Ci5sb2dve2Rpc3BsYXk6ZmxleDthbGlnbi1pdGVtczpjZW50ZXI7Z2FwOjEwcHh9Ci5sb2dvLXN2Z3toZWlnaHQ6MjJweDt3aWR0aDphdXRvO2Rpc3BsYXk6YmxvY2t9Ci5sb2dvLXN2ZyAubG9nby1maWxse2ZpbGw6dmFyKC0tbG9nby1jb2xvcik7dHJhbnNpdGlvbjpmaWxsIC4yc30KLmxvZ28tc3ZnIC5sb2dvLWFjY2VudHtmaWxsOiM2NTE1ZmZ9Ci5sb2dvLXRleHR7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NDAwO2NvbG9yOnZhcigtLW11dGVkKTtsZXR0ZXItc3BhY2luZzotMC4xcHh9Ci5oZWFkZXItcmlnaHR7ZGlzcGxheTpmbGV4O2FsaWduLWl0ZW1zOmNlbnRlcjtnYXA6MTBweH0KLnNlYXJjaC13cmFwe2Rpc3BsYXk6ZmxleDthbGlnbi1pdGVtczpjZW50ZXI7Z2FwOjdweDtiYWNrZ3JvdW5kOnZhcigtLXN1cmZhY2UpO2JvcmRlcjowLjVweCBzb2xpZCB2YXIoLS1ib3JkZXIpO2JvcmRlci1yYWRpdXM6OXB4O3BhZGRpbmc6NnB4IDEycHg7d2lkdGg6MjAwcHg7dHJhbnNpdGlvbjpib3JkZXItY29sb3IgLjE1c30KLnNlYXJjaC13cmFwOmZvY3VzLXdpdGhpbntib3JkZXItY29sb3I6dmFyKC0tYnJhbmQtYm9yZGVyKX0KLnNlYXJjaC13cmFwIGlucHV0e2JhY2tncm91bmQ6bm9uZTtib3JkZXI6bm9uZTtvdXRsaW5lOm5vbmU7Zm9udC1mYW1pbHk6aW5oZXJpdDtmb250LXNpemU6MTNweDtjb2xvcjp2YXIoLS10ZXh0KTt3aWR0aDoxMDAlfQouc2VhcmNoLXdyYXAgaW5wdXQ6OnBsYWNlaG9sZGVye2NvbG9yOnZhcigtLWhpbnQpfQouc2VhcmNoLWljb257Y29sb3I6dmFyKC0taGludCk7Zm9udC1zaXplOjEzcHg7ZmxleC1zaHJpbms6MH0KLmRhdGUtY2hpcHtmb250LXNpemU6MTFweDtjb2xvcjp2YXIoLS1tdXRlZCk7YmFja2dyb3VuZDp2YXIoLS1zdXJmYWNlKTtib3JkZXI6MC41cHggc29saWQgdmFyKC0tYm9yZGVyKTtib3JkZXItcmFkaXVzOjdweDtwYWRkaW5nOjVweCAxMHB4fQoudXNlci1jaGlwe2ZvbnQtc2l6ZToxMXB4O2NvbG9yOnZhcigtLWJyYW5kKTtiYWNrZ3JvdW5kOnZhcigtLWJyYW5kLWRpbSk7Ym9yZGVyOjAuNXB4IHNvbGlkIHZhcigtLWJyYW5kLWJvcmRlcik7Ym9yZGVyLXJhZGl1czo3cHg7cGFkZGluZzo1cHggMTBweDtjdXJzb3I6cG9pbnRlcn0KLnRoZW1lLWJ0bnt3aWR0aDozMnB4O2hlaWdodDozMnB4O2JvcmRlci1yYWRpdXM6OHB4O2JvcmRlcjowLjVweCBzb2xpZCB2YXIoLS1ib3JkZXIpO2JhY2tncm91bmQ6dmFyKC0tc3VyZmFjZSk7Y3Vyc29yOnBvaW50ZXI7ZGlzcGxheTpmbGV4O2FsaWduLWl0ZW1zOmNlbnRlcjtqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyO2ZvbnQtc2l6ZToxNXB4O3RyYW5zaXRpb246YWxsIC4xNXN9Ci50aGVtZS1idG46aG92ZXJ7Ym9yZGVyLWNvbG9yOnZhcigtLWJvcmRlci1ob3Zlcik7YmFja2dyb3VuZDp2YXIoLS1zdXJmYWNlMil9Ci5tYWlue3BhZGRpbmc6MTZweCAyOHB4IDYwcHg7bWF4LXdpZHRoOjEyMDBweDttYXJnaW46MCBhdXRvfQouaG90YmFye2Rpc3BsYXk6ZmxleDthbGlnbi1pdGVtczpjZW50ZXI7Z2FwOjZweDtmbGV4LXdyYXA6d3JhcDttYXJnaW4tYm90dG9tOjE0cHg7cGFkZGluZzoxMHB4IDE0cHg7YmFja2dyb3VuZDp2YXIoLS1zdXJmYWNlKTtib3JkZXI6MC41cHggc29saWQgdmFyKC0tYm9yZGVyKTtib3JkZXItcmFkaXVzOjEycHh9Ci5odGFne2Rpc3BsYXk6ZmxleDthbGlnbi1pdGVtczpjZW50ZXI7Z2FwOjVweDtwYWRkaW5nOjRweCAxMXB4O2JvcmRlci1yYWRpdXM6MjBweDtib3JkZXI6MC41cHggc29saWQgdmFyKC0tYm9yZGVyKTtiYWNrZ3JvdW5kOnZhcigtLWJnKTtmb250LXNpemU6MTJweDtmb250LXdlaWdodDo1MDA7Y29sb3I6dmFyKC0tbXV0ZWQpO2N1cnNvcjpwb2ludGVyO3RyYW5zaXRpb246YWxsIC4xNXM7dXNlci1zZWxlY3Q6bm9uZTt3aGl0ZS1zcGFjZTpub3dyYXA7Zm9udC1mYW1pbHk6aW5oZXJpdH0KLmh0YWc6aG92ZXJ7Ym9yZGVyLWNvbG9yOnZhcigtLWJvcmRlci1ob3Zlcik7Y29sb3I6dmFyKC0tdGV4dCl9Ci5odGFnLm9ue2NvbG9yOiNmZmY7Ym9yZGVyLWNvbG9yOnRyYW5zcGFyZW50fQouaHRhZyAuaGR7d2lkdGg6NnB4O2hlaWdodDo2cHg7Ym9yZGVyLXJhZGl1czo1MCU7ZmxleC1zaHJpbms6MH0KLmhzZXB7d2lkdGg6MC41cHg7aGVpZ2h0OjE4cHg7YmFja2dyb3VuZDp2YXIoLS1ib3JkZXIpO2ZsZXgtc2hyaW5rOjA7bWFyZ2luOjAgMnB4fQouaHNvcnR7ZGlzcGxheTpmbGV4O2FsaWduLWl0ZW1zOmNlbnRlcjtnYXA6NXB4O3BhZGRpbmc6NHB4IDExcHg7Ym9yZGVyLXJhZGl1czoyMHB4O2JvcmRlcjowLjVweCBzb2xpZCB2YXIoLS1ib3JkZXIpO2JhY2tncm91bmQ6dmFyKC0tYmcpO2ZvbnQtc2l6ZToxMnB4O2ZvbnQtd2VpZ2h0OjUwMDtjb2xvcjp2YXIoLS1tdXRlZCk7Y3Vyc29yOnBvaW50ZXI7dHJhbnNpdGlvbjphbGwgLjE1czt1c2VyLXNlbGVjdDpub25lO3doaXRlLXNwYWNlOm5vd3JhcDtmb250LWZhbWlseTppbmhlcml0fQouaHNvcnQ6aG92ZXJ7Ym9yZGVyLWNvbG9yOnZhcigtLWJvcmRlci1ob3Zlcik7Y29sb3I6dmFyKC0tdGV4dCl9Ci5oc29ydC5vbntib3JkZXItY29sb3I6dmFyKC0tYnJhbmQtYm9yZGVyKTtjb2xvcjp2YXIoLS1icmFuZCl9Ci5odmlld3tkaXNwbGF5OmZsZXg7YWxpZ24taXRlbXM6Y2VudGVyO2dhcDozcHg7bWFyZ2luLWxlZnQ6YXV0b30KLmh2aWV3LWJ0bnt3aWR0aDoyOHB4O2hlaWdodDoyOHB4O2JvcmRlci1yYWRpdXM6N3B4O2JvcmRlcjowLjVweCBzb2xpZCB2YXIoLS1ib3JkZXIpO2JhY2tncm91bmQ6dmFyKC0tYmcpO2N1cnNvcjpwb2ludGVyO2Rpc3BsYXk6ZmxleDthbGlnbi1pdGVtczpjZW50ZXI7anVzdGlmeS1jb250ZW50OmNlbnRlcjtjb2xvcjp2YXIoLS1oaW50KTt0cmFuc2l0aW9uOmFsbCAuMTVzO3BhZGRpbmc6MH0KLmh2aWV3LWJ0bjpob3Zlcntib3JkZXItY29sb3I6dmFyKC0tYm9yZGVyLWhvdmVyKTtjb2xvcjp2YXIoLS10ZXh0KX0KLmh2aWV3LWJ0bi5vbntib3JkZXItY29sb3I6dmFyKC0tYnJhbmQtYm9yZGVyKTtjb2xvcjp2YXIoLS1icmFuZCk7YmFja2dyb3VuZDp2YXIoLS1icmFuZC1kaW0pfQouaHZpZXctYnRuIHN2Z3t3aWR0aDoxNHB4O2hlaWdodDoxNHB4O2Rpc3BsYXk6YmxvY2s7ZmlsbDpjdXJyZW50Q29sb3J9Ci50YWItYmFye2Rpc3BsYXk6ZmxleDthbGlnbi1pdGVtczpjZW50ZXI7anVzdGlmeS1jb250ZW50OnNwYWNlLWJldHdlZW47bWFyZ2luLWJvdHRvbToxMHB4fQoudGFic3tkaXNwbGF5OmZsZXg7Z2FwOjNweDtiYWNrZ3JvdW5kOnZhcigtLXN1cmZhY2UyKTtib3JkZXItcmFkaXVzOjlweDtwYWRkaW5nOjNweH0KLnRhYntmb250LXNpemU6MTJweDtmb250LXdlaWdodDo1MDA7cGFkZGluZzo1cHggMTRweDtib3JkZXItcmFkaXVzOjdweDtib3JkZXI6bm9uZTtjdXJzb3I6cG9pbnRlcjtjb2xvcjp2YXIoLS1tdXRlZCk7YmFja2dyb3VuZDpub25lO3RyYW5zaXRpb246YWxsIC4xNXM7Zm9udC1mYW1pbHk6aW5oZXJpdH0KLnRhYjpob3Zlcntjb2xvcjp2YXIoLS10ZXh0KX0KLnRhYi5hY3RpdmV7YmFja2dyb3VuZDp2YXIoLS1zdXJmYWNlKTtjb2xvcjp2YXIoLS1icmFuZCk7Ym94LXNoYWRvdzowIDFweCAzcHggcmdiYSgwLDAsMCwwLjEpfQouY291bnR7Zm9udC1zaXplOjExcHg7Y29sb3I6dmFyKC0tbXV0ZWQpfQouZ3JpZHtkaXNwbGF5OmdyaWQ7Z3JpZC10ZW1wbGF0ZS1jb2x1bW5zOnJlcGVhdChhdXRvLWZpbGwsbWlubWF4KDI3MnB4LDFmcikpO2dhcDoxMHB4fQouZ3JpZC5jb21wYWN0e2dyaWQtdGVtcGxhdGUtY29sdW1uczoxZnI7Z2FwOjVweH0KLmNhcmR7YmFja2dyb3VuZDp2YXIoLS1zdXJmYWNlKTtib3JkZXI6MC41cHggc29saWQgdmFyKC0tYm9yZGVyKTtib3JkZXItcmFkaXVzOjEycHg7cGFkZGluZzoxNHB4IDE1cHg7dHJhbnNpdGlvbjpib3JkZXItY29sb3IgLjE1cyxib3gtc2hhZG93IC4xNXMsb3BhY2l0eSAuMnN9Ci5jYXJkOmhvdmVye2JvcmRlci1jb2xvcjp2YXIoLS1ib3JkZXItaG92ZXIpO2JveC1zaGFkb3c6dmFyKC0tc2hhZG93KX0KLmNhcmQucGlubmVke2JvcmRlci1jb2xvcjp2YXIoLS1icmFuZC1ib3JkZXIpfQouY2FyZC5kaW17b3BhY2l0eTowLjMyfQouY2FyZC5kaW06aG92ZXJ7b3BhY2l0eToxfQouY2FyZC10b3B7ZGlzcGxheTpmbGV4O2FsaWduLWl0ZW1zOmNlbnRlcjtnYXA6MTBweDttYXJnaW4tYm90dG9tOjExcHh9Ci5hdmF0YXJ7d2lkdGg6MzRweDtoZWlnaHQ6MzRweDtib3JkZXItcmFkaXVzOjlweDtkaXNwbGF5OmZsZXg7YWxpZ24taXRlbXM6Y2VudGVyO2p1c3RpZnktY29udGVudDpjZW50ZXI7Zm9udC1zaXplOjExcHg7Zm9udC13ZWlnaHQ6NzAwO2ZsZXgtc2hyaW5rOjA7cG9zaXRpb246cmVsYXRpdmU7b3ZlcmZsb3c6aGlkZGVuO2N1cnNvcjpwb2ludGVyfQouYXZhdGFyIGltZ3t3aWR0aDoxMDAlO2hlaWdodDoxMDAlO29iamVjdC1maXQ6Y29udGFpbjtib3JkZXItcmFkaXVzOjlweDtwb3NpdGlvbjphYnNvbHV0ZTtpbnNldDowO2Rpc3BsYXk6bm9uZX0KLmF2LW92e3Bvc2l0aW9uOmFic29sdXRlO2luc2V0OjA7YmFja2dyb3VuZDpyZ2JhKDAsMCwwLDAuNSk7ZGlzcGxheTpmbGV4O2FsaWduLWl0ZW1zOmNlbnRlcjtqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyO29wYWNpdHk6MDt0cmFuc2l0aW9uOm9wYWNpdHkgLjE1cztib3JkZXItcmFkaXVzOjlweDtmb250LXNpemU6MTRweDtjb2xvcjojZmZmfQouYXZhdGFyOmhvdmVyIC5hdi1vdntvcGFjaXR5OjF9Ci5hdmF0YXItdXBsb2Fke2Rpc3BsYXk6bm9uZX0KLmNsaWVudC1pbmZve2ZsZXg6MTttaW4td2lkdGg6MDtjdXJzb3I6cG9pbnRlcn0KLmNsaWVudC1uYW1le2ZvbnQtc2l6ZToxM3B4O2ZvbnQtd2VpZ2h0OjYwMDtsZXR0ZXItc3BhY2luZzotMC4ycHg7Y29sb3I6dmFyKC0tdGV4dCk7dHJhbnNpdGlvbjpjb2xvciAuMTVzfQouY2xpZW50LWluZm86aG92ZXIgLmNsaWVudC1uYW1le2NvbG9yOnZhcigtLWJyYW5kKX0KLmNsaWVudC1oYW5kbGV7Zm9udC1zaXplOjEwcHg7Y29sb3I6dmFyKC0taGludCk7bWFyZ2luLXRvcDoxcHh9Ci5jbGllbnQtdHlwZXtmb250LXNpemU6MTFweDtjb2xvcjp2YXIoLS1tdXRlZCk7bWFyZ2luLXRvcDoycHh9Ci5waW57d2lkdGg6MjZweDtoZWlnaHQ6MjZweDtib3JkZXItcmFkaXVzOjdweDtib3JkZXI6MC41cHggc29saWQgdmFyKC0tYm9yZGVyKTtiYWNrZ3JvdW5kOm5vbmU7Y3Vyc29yOnBvaW50ZXI7ZGlzcGxheTpmbGV4O2FsaWduLWl0ZW1zOmNlbnRlcjtqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyO2NvbG9yOnZhcigtLWhpbnQpO2ZvbnQtc2l6ZToxNHB4O2ZsZXgtc2hyaW5rOjA7dHJhbnNpdGlvbjphbGwgLjE1c30KLnBpbjpob3Zlcntib3JkZXItY29sb3I6dmFyKC0tYnJhbmQtYm9yZGVyKTtjb2xvcjp2YXIoLS1icmFuZCk7YmFja2dyb3VuZDp2YXIoLS1icmFuZC1kaW0pfQoucGluLm9ue2JvcmRlci1jb2xvcjp2YXIoLS1icmFuZC1ib3JkZXIpO2NvbG9yOnZhcigtLWJyYW5kKTtiYWNrZ3JvdW5kOnZhcigtLWJyYW5kLWRpbSl9Ci5idG5ze2Rpc3BsYXk6ZmxleDtmbGV4LXdyYXA6d3JhcDtnYXA6NXB4fQouYnRue2Rpc3BsYXk6ZmxleDthbGlnbi1pdGVtczpjZW50ZXI7Z2FwOjZweDtwYWRkaW5nOjdweCA5cHg7Ym9yZGVyLXJhZGl1czo4cHg7Ym9yZGVyOjAuNXB4IHNvbGlkIHZhcigtLWJvcmRlcik7YmFja2dyb3VuZDp2YXIoLS1iZyk7Zm9udC1zaXplOjExcHg7Zm9udC13ZWlnaHQ6NTAwO2NvbG9yOnZhcigtLW11dGVkKTt0ZXh0LWRlY29yYXRpb246bm9uZTt0cmFuc2l0aW9uOmFsbCAuMTVzfQouYnRuOmhvdmVye2JvcmRlci1jb2xvcjp2YXIoLS1ib3JkZXItaG92ZXIpO2NvbG9yOnZhcigtLXRleHQpO2JhY2tncm91bmQ6dmFyKC0tc3VyZmFjZSl9Ci5idG4tZG90e3dpZHRoOjZweDtoZWlnaHQ6NnB4O2JvcmRlci1yYWRpdXM6NTAlO2ZsZXgtc2hyaW5rOjB9Ci5uby1mb2xkZXJze2ZvbnQtc2l6ZToxMXB4O2NvbG9yOnZhcigtLWhpbnQpO3BhZGRpbmc6NHB4IDB9Ci5jYXJkLWNvbXBhY3R7YmFja2dyb3VuZDp2YXIoLS1zdXJmYWNlKTtib3JkZXI6MC41cHggc29saWQgdmFyKC0tYm9yZGVyKTtib3JkZXItcmFkaXVzOjEwcHg7cGFkZGluZzo5cHggMTNweDtkaXNwbGF5OmZsZXg7YWxpZ24taXRlbXM6Y2VudGVyO2dhcDoxMHB4O3RyYW5zaXRpb246Ym9yZGVyLWNvbG9yIC4xNXMsYm94LXNoYWRvdyAuMTVzLG9wYWNpdHkgLjJzfQouY2FyZC1jb21wYWN0OmhvdmVye2JvcmRlci1jb2xvcjp2YXIoLS1ib3JkZXItaG92ZXIpO2JveC1zaGFkb3c6dmFyKC0tc2hhZG93KX0KLmNhcmQtY29tcGFjdC5waW5uZWR7Ym9yZGVyLWNvbG9yOnZhcigtLWJyYW5kLWJvcmRlcil9Ci5jYXJkLWNvbXBhY3QuZGlte29wYWNpdHk6MC4zMn0KLmNhcmQtY29tcGFjdC5kaW06aG92ZXJ7b3BhY2l0eToxfQouY2F2e3dpZHRoOjI2cHg7aGVpZ2h0OjI2cHg7Ym9yZGVyLXJhZGl1czo3cHg7ZGlzcGxheTpmbGV4O2FsaWduLWl0ZW1zOmNlbnRlcjtqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyO2ZvbnQtc2l6ZTo5cHg7Zm9udC13ZWlnaHQ6NzAwO2ZsZXgtc2hyaW5rOjA7cG9zaXRpb246cmVsYXRpdmU7b3ZlcmZsb3c6aGlkZGVuO2N1cnNvcjpwb2ludGVyfQouY2F2IGltZ3t3aWR0aDoxMDAlO2hlaWdodDoxMDAlO29iamVjdC1maXQ6Y29udGFpbjtwb3NpdGlvbjphYnNvbHV0ZTtpbnNldDowO2Rpc3BsYXk6bm9uZX0KLmNhdi1vdntwb3NpdGlvbjphYnNvbHV0ZTtpbnNldDowO2JhY2tncm91bmQ6cmdiYSgwLDAsMCwwLjUpO2Rpc3BsYXk6ZmxleDthbGlnbi1pdGVtczpjZW50ZXI7anVzdGlmeS1jb250ZW50OmNlbnRlcjtvcGFjaXR5OjA7dHJhbnNpdGlvbjpvcGFjaXR5IC4xNXM7Ym9yZGVyLXJhZGl1czo3cHg7Zm9udC1zaXplOjEwcHg7Y29sb3I6I2ZmZn0KLmNhdjpob3ZlciAuY2F2LW92e29wYWNpdHk6MX0KLmNuYW1le2ZvbnQtc2l6ZToxMnB4O2ZvbnQtd2VpZ2h0OjYwMDtjb2xvcjp2YXIoLS10ZXh0KTt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7bWluLXdpZHRoOjkwcHg7bWF4LXdpZHRoOjE0MHB4O2N1cnNvcjpwb2ludGVyO3RyYW5zaXRpb246Y29sb3IgLjE1c30KLmNuYW1lOmhvdmVye2NvbG9yOnZhcigtLWJyYW5kKX0KLmNidG5ze2Rpc3BsYXk6ZmxleDtnYXA6M3B4O2ZsZXg6MTtvdmVyZmxvdzpoaWRkZW59Ci5jYnRue2Rpc3BsYXk6ZmxleDthbGlnbi1pdGVtczpjZW50ZXI7Z2FwOjRweDtwYWRkaW5nOjRweCA4cHg7Ym9yZGVyLXJhZGl1czo3cHg7Ym9yZGVyOjAuNXB4IHNvbGlkIHZhcigtLWJvcmRlcik7YmFja2dyb3VuZDp2YXIoLS1iZyk7Zm9udC1zaXplOjEwcHg7Zm9udC13ZWlnaHQ6NTAwO2NvbG9yOnZhcigtLW11dGVkKTt0ZXh0LWRlY29yYXRpb246bm9uZTt3aGl0ZS1zcGFjZTpub3dyYXA7dHJhbnNpdGlvbjphbGwgLjE1c30KLmNidG46aG92ZXJ7Ym9yZGVyLWNvbG9yOnZhcigtLWJvcmRlci1ob3Zlcik7Y29sb3I6dmFyKC0tdGV4dCk7YmFja2dyb3VuZDp2YXIoLS1zdXJmYWNlKX0KLmNidG4tZG90e3dpZHRoOjVweDtoZWlnaHQ6NXB4O2JvcmRlci1yYWRpdXM6NTAlO2ZsZXgtc2hyaW5rOjB9Ci5jcGlue3dpZHRoOjIycHg7aGVpZ2h0OjIycHg7Ym9yZGVyLXJhZGl1czo2cHg7Ym9yZGVyOjAuNXB4IHNvbGlkIHZhcigtLWJvcmRlcik7YmFja2dyb3VuZDpub25lO2N1cnNvcjpwb2ludGVyO2Rpc3BsYXk6ZmxleDthbGlnbi1pdGVtczpjZW50ZXI7anVzdGlmeS1jb250ZW50OmNlbnRlcjtjb2xvcjp2YXIoLS1oaW50KTtmb250LXNpemU6MTJweDtmbGV4LXNocmluazowO3RyYW5zaXRpb246YWxsIC4xNXN9Ci5jcGluOmhvdmVye2JvcmRlci1jb2xvcjp2YXIoLS1icmFuZC1ib3JkZXIpO2NvbG9yOnZhcigtLWJyYW5kKTtiYWNrZ3JvdW5kOnZhcigtLWJyYW5kLWRpbSl9Ci5jcGluLm9ue2JvcmRlci1jb2xvcjp2YXIoLS1icmFuZC1ib3JkZXIpO2NvbG9yOnZhcigtLWJyYW5kKTtiYWNrZ3JvdW5kOnZhcigtLWJyYW5kLWRpbSl9Ci5tb2RhbC1vdmVybGF5e3Bvc2l0aW9uOmZpeGVkO2luc2V0OjA7YmFja2dyb3VuZDp2YXIoLS1vdmVybGF5KTtkaXNwbGF5OmZsZXg7YWxpZ24taXRlbXM6Y2VudGVyO2p1c3RpZnktY29udGVudDpjZW50ZXI7ei1pbmRleDoxMDA7b3BhY2l0eTowO3BvaW50ZXItZXZlbnRzOm5vbmU7dHJhbnNpdGlvbjpvcGFjaXR5IC4ycztwYWRkaW5nOjIwcHh9Ci5tb2RhbC1vdmVybGF5Lm9wZW57b3BhY2l0eToxO3BvaW50ZXItZXZlbnRzOmFsbH0KLm1vZGFse2JhY2tncm91bmQ6dmFyKC0tc3VyZmFjZSk7Ym9yZGVyOjAuNXB4IHNvbGlkIHZhcigtLWJvcmRlcik7Ym9yZGVyLXJhZGl1czoxNnB4O3dpZHRoOjEwMCU7bWF4LXdpZHRoOjQwMHB4O21heC1oZWlnaHQ6ODV2aDtkaXNwbGF5OmZsZXg7ZmxleC1kaXJlY3Rpb246Y29sdW1uO3RyYW5zZm9ybTp0cmFuc2xhdGVZKDEwcHgpIHNjYWxlKDAuOTgpO3RyYW5zaXRpb246dHJhbnNmb3JtIC4yczt vdmVyZmxvdzpoaWRkZW59Ci5tb2RhbC1vdmVybGF5Lm9wZW4gLm1vZGFse3RyYW5zZm9ybTp0cmFuc2xhdGVZKDApIHNjYWxlKDEpfQoubW9kYWwtaGVhZHtkaXNwbGF5OmZsZXg7YWxpZ24taXRlbXM6Y2VudGVyO2dhcDoxMXB4O3BhZGRpbmc6MTVweCAxNnB4O2JvcmRlci1ib3R0b206MC41cHggc29saWQgdmFyKC0tYm9yZGVyKTtmbGV4LXNocmluazowfQoubW9kYWwtYXZ7d2lkdGg6NDBweDtoZWlnaHQ6NDBweDtib3JkZXItcmFkaXVzOjEwcHg7ZGlzcGxheTpmbGV4O2FsaWduLWl0ZW1zOmNlbnRlcjtqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyO2ZvbnQtc2l6ZToxM3B4O2ZvbnQtd2VpZ2h0OjcwMDtmbGV4LXNocmluazowO3Bvc2l0aW9uOnJlbGF0aXZlO292ZXJmbG93OmhpZGRlbn0KLm1vZGFsLWF2IGltZ3t3aWR0aDoxMDAlO2hlaWdodDoxMDAlO29iamVjdC1maXQ6Y29udGFpbjtwb3NpdGlvbjphYnNvbHV0ZTtpbnNldDowO2Rpc3BsYXk6bm9uZX0KLm1vZGFsLXRpdGxle2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjYwMDtjb2xvcjp2YXIoLS10ZXh0KTtsZXR0ZXItc3BhY2luZzotMC4ycHh9Ci5tb2RhbC1oYW5kbGV7Zm9udC1zaXplOjExcHg7Y29sb3I6dmFyKC0taGludCk7bWFyZ2luLXRvcDoxcHh9Ci5tb2RhbC1jbG9zZXttYXJnaW4tbGVmdDphdXRvO3dpZHRoOjI4cHg7aGVpZ2h0OjI4cHg7Ym9yZGVyLXJhZGl1czo4cHg7Ym9yZGVyOjAuNXB4IHNvbGlkIHZhcigtLWJvcmRlcik7YmFja2dyb3VuZDpub25lO2N1cnNvcjpwb2ludGVyO2Rpc3BsYXk6ZmxleDthbGlnbi1pdGVtczpjZW50ZXI7anVzdGlmeS1jb250ZW50OmNlbnRlcjtjb2xvcjp2YXIoLS1tdXRlZCk7Zm9udC1zaXplOjE2cHg7ZmxleC1zaHJpbms6MDt0cmFuc2l0aW9uOmFsbCAuMTVzO2xpbmUtaGVpZ2h0OjF9Ci5tb2RhbC1jbG9zZTpob3ZlcntiYWNrZ3JvdW5kOnZhcigtLXN1cmZhY2UyKTtjb2xvcjp2YXIoLS10ZXh0KX0KLm1vZGFsLWJvZHl7b3ZlcmZsb3cteTphdXRvO3BhZGRpbmc6MTRweCAxNnB4O2ZsZXg6MX0KLm1sYWJlbHtmb250LXNpemU6MTBweDtmb250LXdlaWdodDo2MDA7Y29sb3I6dmFyKC0taGludCk7bGV0dGVyLXNwYWNpbmc6LjVweDt0ZXh0LXRyYW5zZm9ybTp1cHBlcmNhc2U7bWFyZ2luLWJvdHRvbTo4cHh9Ci5tYWluLWdyaWR7ZGlzcGxheTpncmlkO2dyaWQtdGVtcGxhdGUtY29sdW1uczoxZnIgMWZyO2dhcDo1cHg7bWFyZ2luLWJvdHRvbToxNHB4fQoubWFpbi1pdGVte2Rpc3BsYXk6ZmxleDthbGlnbi1pdGVtczpjZW50ZXI7Ym9yZGVyLXJhZGl1czo5cHg7Ym9yZGVyOjAuNXB4IHNvbGlkIHZhcigtLWJvcmRlcik7YmFja2dyb3VuZDp2YXIoLS1iZyk7b3ZlcmZsb3c6aGlkZGVuO3RyYW5zaXRpb246Ym9yZGVyLWNvbG9yIC4xNXN9Ci5tYWluLWl0ZW06aG92ZXJ7Ym9yZGVyLWNvbG9yOnZhcigtLWJvcmRlci1ob3Zlcil9Ci5tYWluLWxpbmt7ZGlzcGxheTpmbGV4O2FsaWduLWl0ZW1zOmNlbnRlcjtnYXA6N3B4O3BhZGRpbmc6OXB4IDEwcHg7Zm9udC1zaXplOjEycHg7Zm9udC13ZWlnaHQ6NTAwO2NvbG9yOnZhcigtLW11dGVkKTt0ZXh0LWRlY29yYXRpb246bm9uZTtmbGV4OjE7dHJhbnNpdGlvbjpjb2xvciAuMTVzO21pbi13aWR0aDowO292ZXJmbG93OmhpZGRlbn0KLm1haW4tbGluazpob3Zlcntjb2xvcjp2YXIoLS10ZXh0KX0KLm1haW4tbGluayBzcGFue3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpc30KLm1haW4tcmVtb3Zle3dpZHRoOjI4cHg7aGVpZ2h0OjEwMCU7bWluLWhlaWdodDozNnB4O2ZsZXgtc2hyaW5rOjA7YmFja2dyb3VuZDpub25lO2JvcmRlcjpub25lO2JvcmRlci1sZWZ0OjAuNXB4IHNvbGlkIHZhcigtLWJvcmRlcik7Y3Vyc29yOnBvaW50ZXI7ZGlzcGxheTpmbGV4O2FsaWduLWl0ZW1zOmNlbnRlcjtqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyO2NvbG9yOnZhcigtLWhpbnQpO2ZvbnQtc2l6ZToxNHB4O2xpbmUtaGVpZ2h0OjE7dHJhbnNpdGlvbjphbGwgLjE1cztwYWRkaW5nOjB9Ci5tYWluLXJlbW92ZTpob3ZlcntiYWNrZ3JvdW5kOnJnYmEoMjIwLDUwLDUwLDAuMDgpO2NvbG9yOiNlMDQwNDB9Ci5tZGl2aWRlcntib3JkZXI6bm9uZTtib3JkZXItdG9wOjAuNXB4IHNvbGlkIHZhcigtLWJvcmRlcik7bWFyZ2luOjAgMCAxNHB4fQouZXh0cmEtZ3JpZHtkaXNwbGF5OmdyaWQ7Z3JpZC10ZW1wbGF0ZS1jb2x1bW5zOjFmciAxZnI7Z2FwOjRweH0KLmV4dHJhLWl0ZW17ZGlzcGxheTpmbGV4O2FsaWduLWl0ZW1zOmNlbnRlcjtib3JkZXItcmFkaXVzOjhweDtib3JkZXI6MC41cHggc29saWQgdmFyKC0tYm9yZGVyKTtiYWNrZ3JvdW5kOnZhcigtLWJnKTtvdmVyZmxvdzpoaWRkZW47dHJhbnNpdGlvbjpib3JkZXItY29sb3IgLjE1c30KLmV4dHJhLWl0ZW06aG92ZXJ7Ym9yZGVyLWNvbG9yOnZhcigtLWJvcmRlci1ob3Zlcil9Ci5leHRyYS1saW5re2Rpc3BsYXk6ZmxleDthbGlnbi1pdGVtczpjZW50ZXI7Z2FwOjVweDtwYWRkaW5nOjdweCA5cHg7Zm9udC1zaXplOjExcHg7Y29sb3I6dmFyKC0tbXV0ZWQpO3RleHQtZGVjb3JhdGlvbjpub25lO2ZsZXg6MTtvdmVyZmxvdzpoaWRkZW47d2hpdGUtc3BhY2U6bm93cmFwO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7bWluLXdpZHRoOjA7dHJhbnNpdGlvbjpjb2xvciAuMTVzfQouZXh0cmEtbGluazpob3Zlcntjb2xvcjp2YXIoLS10ZXh0KX0KLmV4dHJhLWFkZHt3aWR0aDoyOHB4O21pbi1oZWlnaHQ6MzJweDtoZWlnaHQ6MTAwJTtmbGV4LXNocmluazowO2JhY2tncm91bmQ6bm9uZTtib3JkZXI6bm9uZTtib3JkZXItbGVmdDowLjVweCBzb2xpZCB2YXIoLS1ib3JkZXIpO2N1cnNvcjpwb2ludGVyO2Rpc3BsYXk6ZmxleDthbGlnbi1pdGVtczpjZW50ZXI7anVzdGlmeS1jb250ZW50OmNlbnRlcjtjb2xvcjp2YXIoLS1oaW50KTtmb250LXNpemU6MTZweDtsaW5lLWhlaWdodDoxO3RyYW5zaXRpb246YWxsIC4xNXM7cGFkZGluZzowfQouZXh0cmEtYWRkOmhvdmVye2JhY2tncm91bmQ6dmFyKC0tYnJhbmQtZGltKTtjb2xvcjp2YXIoLS1icmFuZCl9Ci5leHRyYS1hZGQuYWRkZWR7YmFja2dyb3VuZDp2YXIoLS1icmFuZC1kaW0pO2NvbG9yOnZhcigtLWJyYW5kKTtjdXJzb3I6ZGVmYXVsdH0KLm5vLWV4dHJhc3tmb250LXNpemU6MTJweDtjb2xvcjp2YXIoLS1oaW50KTt0ZXh0LWFsaWduOmNlbnRlcjtwYWRkaW5nOjEwcHggMH0KLm1vZGFsLWZvb3R7cGFkZGluZzoxMnB4IDE2cHg7Ym9yZGVyLXRvcDowLjVweCBzb2xpZCB2YXIoLS1ib3JkZXIpO2ZsZXgtc2hyaW5rOjA7ZGlzcGxheTpmbGV4O2p1c3RpZnktY29udGVudDpzcGFjZS1iZXR3ZWVuO2FsaWduLWl0ZW1zOmNlbnRlcn0KLm1vZGFsLWRyaXZlLWJ0bntkaXNwbGF5OmZsZXg7YWxpZ24taXRlbXM6Y2VudGVyO2dhcDo3cHg7cGFkZGluZzo4cHggMTRweDtib3JkZXItcmFkaXVzOjlweDtib3JkZXI6MC41cHggc29saWQgdmFyKC0tYm9yZGVyKTtiYWNrZ3JvdW5kOm5vbmU7Zm9udC1zaXplOjEycHg7Zm9udC13ZWlnaHQ6NTAwO2NvbG9yOnZhcigtLW11dGVkKTtjdXJzb3I6cG9pbnRlcjt0cmFuc2l0aW9uOmFsbCAuMTVzO2ZvbnQtZmFtaWx5OmluaGVyaXQ7dGV4dC1kZWNvcmF0aW9uOm5vbmV9Ci5tb2RhbC1kcml2ZS1idG46aG92ZXJ7Ym9yZGVyLWNvbG9yOnZhcigtLWJvcmRlci1ob3Zlcik7Y29sb3I6dmFyKC0tdGV4dCk7YmFja2dyb3VuZDp2YXIoLS1zdXJmYWNlMil9Ci5tb2RhbC1zYXZle3BhZGRpbmc6OHB4IDE4cHg7Ym9yZGVyLXJhZGl1czo5cHg7YmFja2dyb3VuZDp2YXIoLS1icmFuZCk7Y29sb3I6I2ZmZjtmb250LXNpemU6MTJweDtmb250LXdlaWdodDo2MDA7Ym9yZGVyOm5vbmU7Y3Vyc29yOnBvaW50ZXI7Zm9udC1mYW1pbHk6aW5oZXJpdDt0cmFuc2l0aW9uOm9wYWNpdHkgLjE1cztkaXNwbGF5Om5vbmV9Ci5tb2RhbC1zYXZlOmhvdmVye29wYWNpdHk6MC44OH0KLm1vZGFsLXNhdmUuc2hvd3tkaXNwbGF5OmJsb2NrfQouZW1wdHl7Z3JpZC1jb2x1bW46MS8tMTt0ZXh0LWFsaWduOmNlbnRlcjtwYWRkaW5nOjUycHggMDtjb2xvcjp2YXIoLS1tdXRlZCk7Zm9udC1zaXplOjEzcHg7bGluZS1oZWlnaHQ6Mn0KLmVtcHR5IHN0cm9uZ3tjb2xvcjp2YXIoLS10ZXh0KTtmb250LXdlaWdodDo1MDA7ZGlzcGxheTpibG9jazttYXJnaW4tYm90dG9tOjRweH0KLmxvYWRpbmd7Z3JpZC1jb2x1bW46MS8tMTt0ZXh0LWFsaWduOmNlbnRlcjtwYWRkaW5nOjUycHggMDtjb2xvcjp2YXIoLS1oaW50KTtmb250LXNpemU6MTNweH0KLnRvYXN0e3Bvc2l0aW9uOmZpeGVkO2JvdHRvbToyNHB4O2xlZnQ6NTAlO3RyYW5zZm9ybTp0cmFuc2xhdGVYKC01MCUpIHRyYW5zbGF0ZVkoODBweCk7YmFja2dyb3VuZDp2YXIoLS10ZXh0KTtjb2xvcjp2YXIoLS1iZyk7Zm9udC1zaXplOjEycHg7Zm9udC13ZWlnaHQ6NTAwO3BhZGRpbmc6OXB4IDE4cHg7Ym9yZGVyLXJhZGl1czoyMHB4O29wYWNpdHk6MDt0cmFuc2l0aW9uOmFsbCAuM3M7cG9pbnRlci1ldmVudHM6bm9uZTt6LWluZGV4OjIwMDt3aGl0ZS1zcGFjZTpub3dyYXB9Ci50b2FzdC5zaG93e29wYWNpdHk6MTt0cmFuc2Zvcm06dHJhbnNsYXRlWCgtNTAlKSB0cmFuc2xhdGVZKDApfQoubmljay1vdmVybGF5e3Bvc2l0aW9uOmZpeGVkO2luc2V0OjA7YmFja2dyb3VuZDp2YXIoLS1vdmVybGF5KTtkaXNwbGF5OmZsZXg7YWxpZ24taXRlbXM6Y2VudGVyO2p1c3RpZnktY29udGVudDpjZW50ZXI7ei1pbmRleDoyMDA7cGFkZGluZzoyMHB4fQoubmljay1ib3h7YmFja2dyb3VuZDp2YXIoLS1zdXJmYWNlKTtib3JkZXI6MC41cHggc29saWQgdmFyKC0tYm9yZGVyKTtib3JkZXItcmFkaXVzOjE2cHg7d2lkdGg6MTAwJTttYXgtd2lkdGg6MzQwcHg7cGFkZGluZzoyOHB4IDI0cHg7dGV4dC1hbGlnbjpjZW50ZXJ9Ci5uaWNrLWJveCBoMntmb250LXNpemU6MTZweDtmb250LXdlaWdodDo2MDA7Y29sb3I6dmFyKC0tdGV4dCk7bWFyZ2luLWJvdHRvbTo2cHh9Ci5uaWNrLWJveCBwe2ZvbnQtc2l6ZToxMnB4O2NvbG9yOnZhcigtLW11dGVkKTttYXJnaW4tYm90dG9tOjE4cHh9Ci5uaWNrLWlucHV0e3dpZHRoOjEwMCU7cGFkZGluZzoxMHB4IDE0cHg7Ym9yZGVyLXJhZGl1czo5cHg7Ym9yZGVyOjAuNXB4IHNvbGlkIHZhcigtLWJvcmRlcik7YmFja2dyb3VuZDp2YXIoLS1iZyk7Zm9udC1mYW1pbHk6aW5oZXJpdDtmb250LXNpemU6MTRweDtjb2xvcjp2YXIoLS10ZXh0KTtvdXRsaW5lOm5vbmU7dGV4dC1hbGlnbjpjZW50ZXI7bWFyZ2luLWJvdHRvbToxMnB4fQoubmljay1pbnB1dDpmb2N1c3tib3JkZXItY29sb3I6dmFyKC0tYnJhbmQtYm9yZGVyKX0KLm5pY2stYnRue3dpZHRoOjEwMCU7cGFkZGluZzoxMHB4O2JvcmRlci1yYWRpdXM6OXB4O2JhY2tncm91bmQ6dmFyKC0tYnJhbmQpO2NvbG9yOiNmZmY7Zm9udC1zaXplOjEzcHg7Zm9udC13ZWlnaHQ6NjAwO2JvcmRlcjpub25lO2N1cnNvcjpwb2ludGVyO2ZvbnQtZmFtaWx5OmluaGVyaXR9Ci5uaWNrLWJ0bjpob3ZlcntvcGFjaXR5OjAuODh9Cjwvc3R5bGU+CjwvaGVhZD4KPGJvZHk+Cgo8ZGl2IGNsYXNzPSJuaWNrLW92ZXJsYXkiIGlkPSJuaWNrLW92ZXJsYXkiPgogIDxkaXYgY2xhc3M9Im5pY2stYm94Ij4KICAgIDxoMj5CZW0tdmluZG8gYW8gM1AgSHViPC9oMj4KICAgIDxwPkNvbW8gcXVlciBzZXIgY2hhbWFkbz8gU2V1IGFwZWxpZG8gc2FsdmEgc3VhcyBwcmVmZXLDqm5jaWFzIGUgZmF2b3JpdG9zLjwvcD4KICAgIDxpbnB1dCBjbGFzcz0ibmljay1pbnB1dCIgaWQ9Im5pY2staW5wdXQiIHR5cGU9InRleHQiIHBsYWNlaG9sZGVyPSJFeDogY2FpbywgbWFyaSwgam/Do28uLi4iIG1heGxlbmd0aD0iMzAiIG9ua2V5ZG93bj0iaWYoZXZlbnQua2V5PT09J0VudGVyJylzYXZlTmljaygpIj4KICAgIDxidXR0b24gY2xhc3M9Im5pY2stYnRuIiBvbmNsaWNrPSJzYXZlTmljaygpIj5FbnRyYXI8L2J1dHRvbj4KICA8L2Rpdj4KPC9kaXY+Cgo8ZGl2IGNsYXNzPSJoZWFkZXIiPgogIDxkaXYgY2xhc3M9ImxvZ28iPgogICAgPHN2ZyBjbGFzcz0ibG9nby1zdmciIHZpZXdCb3g9IjAgMCAxNDU1LjgxIDg5OS4zMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiBhcmlhLWxhYmVsPSIzUCI+CiAgICAgIDxwYXRoIGNsYXNzPSJsb2dvLWZpbGwiIGQ9Ik0yOTQuNTQsODk5LjMxYy02My4wOSwwLTExNy45Ni0xMC44OC0xNjQuNTgtMzIuNjEtNDYuNjQtMjEuNzYtODEuNDItNTIuMDMtMTA0LjM0LTkwLjgyLTIyLjkyLTM4Ljc5LTMwLjQ2LTgzLjQ3LTIyLjYyLTEzNC4wMmgxODAuNDVjLTIuMzUsMjEuOTUsMS42Niw0MS4wNiwxMi4wNCw1Ny4zLDEwLjM4LDE2LjI3LDI1Ljk2LDI4LjkyLDQ2Ljc0LDM3LjkyLDIwLjc2LDkuMDIsNDQuODYsMTMuNTIsNzIuMywxMy41MnM1NC44NS00Ljk5LDc4Ljc2LTE1YzIzLjktOS45OCw0My41OC0yMy45OCw1OS4wNi00Mi4wMiwxNS40OC0xOC4wMiwyNS4xNy0zOC43OSwyOS4xLTYyLjMxLDQuMy0yNC4yOCwxLjM2LTQ1Ljc1LTguODItNjQuMzUtMTAuMTktMTguNjEtMjYuNTUtMzMuMTItNDkuMDktNDMuNS0yMi41NC0xMC4zOC01MC44NC0xNS41OC04NC45My0xNS41OGgtODEuMTFsMjIuMzQtMTMzLjQzaDgxLjExYzI4LjIxLDAsNTMuODctNC44OSw3Ny0xNC42OSwyMy4xMS05Ljc5LDQyLjMyLTIzLjQxLDU3LjYtNDAuODRzMjQuODctMzguMTEsMjguOC02Mi4wMmMzLjkxLTIyLjcyLDEuOTUtNDIuNTEtNS44OC01OS4zNy03Ljg0LTE2Ljg0LTIwLjM5LTMwLjA2LTM3LjYyLTM5LjY3LTE3LjI1LTkuNjEtMzguNjEtMTQuNDEtNjQuMDctMTQuNDFzLTUwLjE2LDQuNjItNzIuODksMTMuODJjLTIyLjc0LDkuMi00MS44MywyMi4wMy01Ny4zMiwzOC40OS0xNS40OCwxNi40Ni0yNS4zOCwzNi4wNi0yOS42Nyw1OC43OEg4NC4xMWM5LjQtNTAuMTUsMzAuNjUtOTQuMzMsNjMuNzctMTMyLjU0LDMzLjEyLTM4LjIxLDc0Ljc1LTY4LjA4LDEyNC45MS04OS42NUMzMjIuOTQsMTAuNzgsMzc3LjYsMCw0MzYuNzksMHMxMTAuODksMTAuOTgsMTUyLjgyLDMyLjkyYzQxLjkyLDIxLjk1LDcyLjc4LDUxLjQ0LDkyLjU3LDg4LjQ3LDE5Ljc4LDM3LjAzLDI1Ljc2LDc4LjQ2LDE3Ljk0LDEyNC4zMS03Ljg0LDQ4Ljk5LTI5LjY5LDg5LjkzLTY1LjU1LDEyMi44NS0zNS44NSwzMi45Mi03OS4wNSw1NC4wOC0xMjkuNiw2My40OGwtLjU5LDYuNDdjNDEuOTIsNS40OSw3NS44MiwxNy40NSwxMDEuNjksMzUuODUsMjUuODYsMTguNDIsNDMuODgsNDIuMDQsNTQuMDgsNzAuODIsMTAuMTgsMjguODIsMTIuMTQsNjEuMjUsNS44OCw5Ny4yOS04LjIzLDQ5Ljc4LTI5LjQ5LDk0LjA1LTYzLjc4LDEzMi44NC0zNC4yOSwzOC43OS03Ny45Nyw2OS4xNy0xMzEuMDgsOTEuMTEtNTMuMSwyMS45My0xMTEuOTYsMzIuOTItMTc2LjYyLDMyLjkyWiIvPgogICAgICA8cGF0aCBjbGFzcz0ibG9nby1maWxsIiBkPSJNMTQzOS4zMiwxNTMuNzZjLTE3LjItNDQuNTQtNDcuMTItNzkuMjgtODkuNi0xMDQuMzgtNDIuNjUtMjUuMTEtOTYuOTktMzcuNjYtMTYzLjItMzcuNjZoLTM0MS41M2wtMTQ1LjE0LDg3NS44NGgxNzkuMzZsNDcuMjktMjg2LjMzaDE1OC4zOGM2Ny4wNywwLDEyNi4yMy0xMi4zOCwxNzcuODItMzcuNDksNTEuNDItMjUuMTEsOTMuMzgtNTkuNjcsMTI1LjcxLTEwMy43LDMyLjMzLTQ0LjIsNTIuOTctOTUuMjcsNjIuMDgtMTUzLjIyLDkuOC01Ny42MSw2LjAyLTEwOC42OC0xMS4xOC0xNTMuMDVaTTEyNjUuOTcsMzA3LjMzYy00LjgyLDI4LjcyLTE0Ljc5LDU0LjM0LTMwLjA5LDc2Ljg3LTE1LjEzLDIyLjUzLTM1Ljc3LDQwLjI0LTYxLjc0LDUzLjE0LTI1LjgsMTIuOS01Ny4wOSwxOS40My05My44OSwxOS40M2gtMTI5Ljg0bDQ5LjE4LTI5Ni44MmgxMjguOGMzNy4xNCwwLDY2LjcyLDYuMTksODguMzksMTguNCwyMS44NCwxMi4zOCwzNi42MywyOS41OCw0NC4zNyw1MS43Niw3LjkxLDIyLjE4LDkuNDYsNDcuOTgsNC44Miw3Ny4yMloiLz4KICAgICAgPHBhdGggY2xhc3M9ImxvZ28tYWNjZW50IiBkPSJNMTE0OC4wMiw4ODcuNTVoLTEyNi40OGMtMTYuNTEsMC0yOS4wOS0xNC43Ny0yNi40Ni0zMS4wN2wyMC40OS0xMjcuMTdjMi4wOS0xMi45OSwxMy4zMS0yMi41NCwyNi40Ni0yMi41NGgxMjYuNDhjMTYuNTEsMCwyOS4wOSwxNC43NywyNi40NiwzMS4wN2wtMjAuNDksMTI3LjE3Yy0yLjA5LDEyLjk5LTEzLjMxLDIyLjU0LTI2LjQ2LDIyLjU0WiIvPgogICAgPC9zdmc+CiAgICA8c3BhbiBjbGFzcz0ibG9nby10ZXh0Ij5IdWI8L3NwYW4+CiAgPC9kaXY+CiAgPGRpdiBjbGFzcz0iaGVhZGVyLXJpZ2h0Ij4KICAgIDxkaXYgY2xhc3M9InNlYXJjaC13cmFwIj4KICAgICAgPHNwYW4gY2xhc3M9InNlYXJjaC1pY29uIj4mI3gyMzE1Ozwvc3Bhbj4KICAgICAgPGlucHV0IHR5cGU9InRleHQiIGlkPSJzZWFyY2giIHBsYWNlaG9sZGVyPSJCdXNjYXIgY2xpZW50ZS4uLiIgb25pbnB1dD0icmVuZGVyKCkiPgogICAgPC9kaXY+CiAgICA8ZGl2IGNsYXNzPSJkYXRlLWNoaXAiIGlkPSJkYXRlIj48L2Rpdj4KICAgIDxkaXYgY2xhc3M9InVzZXItY2hpcCIgaWQ9InVzZXItY2hpcCIgb25jbGljaz0icmVzZXROaWNrKCkiIHRpdGxlPSJDbGlxdWUgcGFyYSB0cm9jYXIgYXBlbGlkbyI+PC9kaXY+CiAgICA8YnV0dG9uIGNsYXNzPSJ0aGVtZS1idG4iIGlkPSJ0aGVtZS1idG4iIG9uY2xpY2s9InRvZ2dsZVRoZW1lKCkiIHRpdGxlPSJBbHRlcm5hciB0ZW1hIj48L2J1dHRvbj4KICA8L2Rpdj4KPC9kaXY+Cgo8ZGl2IGNsYXNzPSJtYWluIj4KICA8ZGl2IGNsYXNzPSJ0YWItYmFyIj4KICAgIDxkaXYgY2xhc3M9InRhYnMiPgogICAgICA8YnV0dG9uIGNsYXNzPSJ0YWIgYWN0aXZlIiBpZD0idGFiLW1ldXMiIG9uY2xpY2s9InNldFRhYignbWV1cycpIj5NZXVzIGNsaWVudGVzPC9idXR0b24+CiAgICAgIDxidXR0b24gY2xhc3M9InRhYiIgaWQ9InRhYi10b2RvcyIgb25jbGljaz0ic2V0VGFiKCd0b2RvcycpIj5Ub2RvczwvYnV0dG9uPgogICAgPC9kaXY+CiAgICA8c3BhbiBjbGFzcz0iY291bnQiIGlkPSJjb3VudCI+PC9zcGFuPgogIDwvZGl2PgogIDxkaXYgY2xhc3M9ImhvdGJhciI+CiAgICA8YnV0dG9uIGNsYXNzPSJodGFnIG9uIiBpZD0iZi10b2RvcyIgb25jbGljaz0idG9nZ2xlRmlsdGVyKCd0b2RvcycpIiBzdHlsZT0iYmFja2dyb3VuZDp2YXIoLS1icmFuZCkiPlRvZG9zPC9idXR0b24+CiAgICA8YnV0dG9uIGNsYXNzPSJodGFnIiBpZD0iZi1tYXRlcmlhaXMiIG9uY2xpY2s9InRvZ2dsZUZpbHRlcignbWF0ZXJpYWlzJykiPjxzcGFuIGNsYXNzPSJoZCIgc3R5bGU9ImJhY2tncm91bmQ6IzJhOWQ4ZiI+PC9zcGFuPk1hdGVyaWFpczwvYnV0dG9uPgogICAgPGJ1dHRvbiBjbGFzcz0iaHRhZyIgaWQ9ImYtdHJhZmVnbyIgICBvbmNsaWNrPSJ0b2dnbGVGaWx0ZXIoJ3RyYWZlZ28nKSI+PHNwYW4gY2xhc3M9ImhkIiBzdHlsZT0iYmFja2dyb3VuZDojN2M2ZmNkIj48L3NwYW4+VHLDoWZlZ288L2J1dHRvbj4KICAgIDxidXR0b24gY2xhc3M9Imh0YWciIGlkPSJmLXNvY2lhbCIgICAgb25jbGljaz0idG9nZ2xlRmlsdGVyKCdzb2NpYWwnKSI+PHNwYW4gY2xhc3M9ImhkIiBzdHlsZT0iYmFja2dyb3VuZDojZDQ3MDRhIj48L3NwYW4+U29jaWFsIE3DrWRpYTwvYnV0dG9uPgogICAgPGJ1dHRvbiBjbGFzcz0iaHRhZyIgaWQ9ImYtcmVmcyIgICAgICBvbmNsaWNrPSJ0b2dnbGVGaWx0ZXIoJ3JlZnMnKSI+PHNwYW4gY2xhc3M9ImhkIiBzdHlsZT0iYmFja2dyb3VuZDojNUI2RkU4Ij48L3NwYW4+UmVmZXLDqm5jaWFzPC9idXR0b24+CiAgICA8ZGl2IGNsYXNzPSJoc2VwIj48L2Rpdj4KICAgIDxidXR0b24gY2xhc3M9Imhzb3J0IG9uIiBpZD0icy1heiIgICAgb25jbGljaz0ic2V0U29ydCgnYXonKSI+QeKAk1o8L2J1dHRvbj4KICAgIDxidXR0b24gY2xhc3M9Imhzb3J0IiAgICBpZD0icy1tYWlzIiAgb25jbGljaz0ic2V0U29ydCgnbWFpcycpIj4mIzk2NTA7IE1haXMgcGFzdGFzPC9idXR0b24+CiAgICA8YnV0dG9uIGNsYXNzPSJoc29ydCIgICAgaWQ9InMtbWVub3MiIG9uY2xpY2s9InNldFNvcnQoJ21lbm9zJykiPiYjOTY2MDsgTWVub3MgcGFzdGFzPC9idXR0b24+CiAgICA8ZGl2IGNsYXNzPSJodmlldyI+CiAgICAgIDxidXR0b24gY2xhc3M9Imh2aWV3LWJ0biBvbiIgaWQ9InYtcGFkcmFvIiAgIG9uY2xpY2s9InNldFZpZXcoJ3BhZHJhbycpIiAgIHRpdGxlPSJDYXJkcyI+CiAgICAgICAgPHN2ZyB2aWV3Qm94PSIwIDAgMTYgMTYiPjxyZWN0IHg9IjEiIHk9IjEiIHdpZHRoPSI2IiBoZWlnaHQ9IjYiIHJ4PSIxLjUiLz48cmVjdCB4PSI5IiB5PSIxIiB3aWR0aD0iNiIgaGVpZ2h0PSI2IiByeD0iMS41Ii8+PHJlY3QgeD0iMSIgeT0iOSIgd2lkdGg9IjYiIGhlaWdodD0iNiIgcng9IjEuNSIvPjxyZWN0IHg9IjkiIHk9IjkiIHdpZHRoPSI2IiBoZWlnaHQ9IjYiIHJ4PSIxLjUiLz48L3N2Zz4KICAgICAgPC9idXR0b24+CiAgICAgIDxidXR0b24gY2xhc3M9Imh2aWV3LWJ0biIgICAgaWQ9InYtY29tcGFjdG8iIG9uY2xpY2s9InNldFZpZXcoJ2NvbXBhY3RvJykiIHRpdGxlPSJMaXN0YSI+CiAgICAgICAgPHN2ZyB2aWV3Qm94PSIwIDAgMTYgMTYiPjxyZWN0IHg9IjEiIHk9IjIiIHdpZHRoPSIxNCIgaGVpZ2h0PSIyLjUiIHJ4PSIxLjIiLz48cmVjdCB4PSIxIiB5PSI2LjgiIHdpZHRoPSIxNCIgaGVpZ2h0PSIyLjUiIHJ4PSIxLjIiLz48cmVjdCB4PSIxIiB5PSIxMS41IiB3aWR0aD0iMTQiIGhlaWdodD0iMi41IiByeD0iMS4yIi8+PC9zdmc+CiAgICAgIDwvYnV0dG9uPgogICAgPC9kaXY+CiAgPC9kaXY+CiAgPGRpdiBjbGFzcz0iZ3JpZCIgaWQ9ImdyaWQiPjxkaXYgY2xhc3M9ImxvYWRpbmciPkNhcnJlZ2FuZG8gY2xpZW50ZXMuLi48L2Rpdj48L2Rpdj4KPC9kaXY+Cgo8ZGl2IGNsYXNzPSJtb2RhbC1vdmVybGF5IiBpZD0ibW9kYWwtb3ZlcmxheSIgb25jbGljaz0iaGFuZGxlT3ZlcmxheUNsaWNrKGV2ZW50KSI+CiAgPGRpdiBjbGFzcz0ibW9kYWwiPgogICAgPGRpdiBjbGFzcz0ibW9kYWwtaGVhZCIgaWQ9Im1vZGFsLWhlYWQiPjwvZGl2PgogICAgPGRpdiBjbGFzcz0ibW9kYWwtYm9keSIgaWQ9Im1vZGFsLWJvZHkiPjwvZGl2PgogICAgPGRpdiBjbGFzcz0ibW9kYWwtZm9vdCI+CiAgICAgIDxhIGNsYXNzPSJtb2RhbC1kcml2ZS1idG4iIGlkPSJtb2RhbC1kcml2ZS1saW5rIiBocmVmPSIjIiB0YXJnZXQ9Il9ibGFuayI+JiMxMjgxOTM7IEFicmlyIERyaXZlIHJhaXo8L2E+CiAgICAgIDxidXR0b24gY2xhc3M9Im1vZGFsLXNhdmUiIGlkPSJtb2RhbC1zYXZlIiBvbmNsaWNrPSJzYXZlTWFpbkZvbGRlcnMoKSI+U2FsdmFyPC9idXR0b24+CiAgICA8L2Rpdj4KICA8L2Rpdj4KPC9kaXY+Cgo8ZGl2IGNsYXNzPSJ0b2FzdCIgaWQ9InRvYXN0Ij48L2Rpdj4KPHNjcmlwdD4KY29uc3QgV09SS0VSPSdodHRwczovLzNwLWh1Yi13b3JrZXIuM3BodWIud29ya2Vycy5kZXYnOwpjb25zdCBIVUJfVE9LRU49JzNwLWh1Yi1zZWNyZXQtMjAyNSc7CmNvbnN0IEdJVEhVQl9SQVc9J2h0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS9kc3hpaXMvM3AtZHJpdmUtaHViL21haW4vbG9nb3MvJzsKCmZ1bmN0aW9uIGFwaShwYXRoLG9wdHM9e30pewogIHJldHVybiBmZXRjaChXT1JLRVIrcGF0aCx7Li4ub3B0cyxoZWFkZXJzOnsnQ29udGVudC1UeXBlJzonYXBwbGljYXRpb24vanNvbicsJ1gtSHViLVRva2VuJzpIVUJfVE9LRU4sLi4uKG9wdHMuaGVhZGVyc3x8e30pfX0pOwp9Cgpjb25zdCBBUkVBUz1bCiAge2tleTonbWF0ZXJpYWlzJyxsYWJlbDonTWF0ZXJpYWlzJyxjb2xvcjonIzJhOWQ4Zid9LAogIHtrZXk6J3RyYWZlZ28nLGxhYmVsOidUcsOhZmVnbycsY29sb3I6JyM3YzZmY2QnfSwKICB7a2V5Oidzb2NpYWwnLGxhYmVsOidTb2NpYWwgTcOtZGlhJyxjb2xvcjonI2Q0NzA0YSd9LAogIHtrZXk6J3JlZnMnLGxhYmVsOidSZWZlcsOqbmNpYXMnLGNvbG9yOicjNUI2RkU4J30sCl07CmNvbnN0IEFSRUFfQ09MT1JTPXttYXRlcmlhaXM6J3JnYmEoNDIsMTU3LDE0MywwLjg1KScsdHJhZmVnbzoncmdiYSgxMjQsMTExLDIwNSwwLjg1KScsc29jaWFsOidyZ2JhKDIxMiwxMTIsNzQsMC44NSknLHJlZnM6J3JnYmEoOTEsMTExLDIzMiwwLjg1KSd9Owpjb25zdCBBUkVBX0RPVD17bWF0ZXJpYWlzOicjMmE5ZDhmJyx0cmFmZWdvOicjN2M2ZmNkJyxzb2NpYWw6JyNkNDcwNGEnLHJlZnM6JyM1QjZGRTgnfTsKY29uc3QgUEFMRVRURT1bCiAge2NvbG9yOicjNUI2RkU4JyxiZzoncmdiYSg5MSwxMTEsMjMyLDAuMSknfSx7Y29sb3I6JyMyYTlkOGYnLGJnOidyZ2JhKDQyLDE1NywxNDMsMC4xKSd9LAogIHtjb2xvcjonI2Q0NzA0YScsYmc6J3JnYmEoMjEyLDExMiw3NCwwLjEpJ30se2NvbG9yOicjN2M2ZmNkJyxiZzoncmdiYSgxMjQsMTExLDIwNSwwLjEpJ30sCiAge2NvbG9yOicjM2E5ZDVmJyxiZzoncmdiYSg1OCwxNTcsOTUsMC4xKSd9LHtjb2xvcjonI2M4ODkyYScsYmc6J3JnYmEoMjAwLDEzNyw0MiwwLjEpJ30sCiAge2NvbG9yOicjYzg0YTZlJyxiZzoncmdiYSgyMDAsNzQsMTEwLDAuMSknfSx7Y29sb3I6JyM0YThkYzgnLGJnOidyZ2JhKDc0LDE0MSwyMDAsMC4xKSd9LApdOwpjb25zdCBYQ09MUz1bJyM1QjZGRTgnLCcjMmE5ZDhmJywnI2Q0NzA0YScsJyM3YzZmY2QnLCcjM2E5ZDVmJywnI2M4ODkyYScsJyNjODRhNmUnLCcjNGE4ZGM4J107CgpsZXQgQ0xJRU5UUz1bXSx0YWI9J21ldXMnLHBpbm5lZD1bXSxmaWx0ZXJzPW5ldyBTZXQoKSxzb3J0TW9kZT0nYXonLHZpZXdNb2RlPSdwYWRyYW8nOwpsZXQgbW9kYWxDbGllbnQ9bnVsbCxwZW5kaW5nTWFpbj1bXSxVU0VSTkFNRT0nJzsKY29uc3QgSURYPXt9OwoKZnVuY3Rpb24gc2F2ZU5pY2soKXsKICBjb25zdCB2YWw9ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ25pY2staW5wdXQnKS52YWx1ZS50cmltKCkudG9Mb3dlckNhc2UoKTsKICBpZighdmFsKXJldHVybjsKICBVU0VSTkFNRT12YWw7CiAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oJzNwLXVzZXJuYW1lJyx2YWwpOwogIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCduaWNrLW92ZXJsYXknKS5zdHlsZS5kaXNwbGF5PSdub25lJzsKICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndXNlci1jaGlwJykudGV4dENvbnRlbnQ9J/CfkaQgJyt2YWw7CiAgbG9hZFVzZXJEYXRhKCk7Cn0KZnVuY3Rpb24gcmVzZXROaWNrKCl7CiAgaWYoIWNvbmZpcm0oJ1Ryb2NhciBkZSBhcGVsaWRvPycpKXJldHVybjsKICBsb2NhbFN0b3JhZ2UucmVtb3ZlSXRlbSgnM3AtdXNlcm5hbWUnKTsKICBsb2NhdGlvbi5yZWxvYWQoKTsKfQphc3luYyBmdW5jdGlvbiBsb2FkVXNlckRhdGEoKXsKICBjb25zdCBbcHIscGldPWF3YWl0IFByb21pc2UuYWxsKFthcGkoJy9wcmVmcy8nK1VTRVJOQU1FKSxhcGkoJy9waW5zLycrVVNFUk5BTUUpXSk7CiAgaWYocHIub2spe2NvbnN0IHA9YXdhaXQgcHIuanNvbigpO3NvcnRNb2RlPXAuc29ydF9tb2RlfHwnYXonO3ZpZXdNb2RlPXAudmlld19tb2RlfHwncGFkcmFvJzthcHBseVRoZW1lKHAudGhlbWU9PT0nYXV0byc/KHdpbmRvdy5tYXRjaE1lZGlhKCcocHJlZmVycy1jb2xvci1zY2hlbWU6ZGFyayknKS5tYXRjaGVzPydkYXJrJzonbGlnaHQnKTpwLnRoZW1lKTt9CiAgaWYocGkub2spe3Bpbm5lZD1hd2FpdCBwaS5qc29uKCk7fQogIGxvYWRDbGllbnRzKCk7Cn0KYXN5bmMgZnVuY3Rpb24gc2F2ZVByZWZzKCl7CiAgYXdhaXQgYXBpKCcvcHJlZnMvJytVU0VSTkFNRSx7bWV0aG9kOidQVVQnLGJvZHk6SlNPTi5zdHJpbmdpZnkoe3RoZW1lOmRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5nZXRBdHRyaWJ1dGUoJ2RhdGEtdGhlbWUnKSx2aWV3X21vZGU6dmlld01vZGUsc29ydF9tb2RlOnNvcnRNb2RlfSl9KTsKfQphc3luYyBmdW5jdGlvbiBzYXZlUGlubmVkKCl7CiAgYXdhaXQgYXBpKCcvcGlucy8nK1VTRVJOQU1FLHttZXRob2Q6J1BVVCcsYm9keTpKU09OLnN0cmluZ2lmeSh7cGluczpwaW5uZWR9KX0pOwp9CgpmdW5jdGlvbiBja2V5KGMpe3JldHVybihjLm5hbWV8fCcnKS5yZXBsYWNlKC9bXmEtekEtWjAtOV0vZywnXycpLnRvTG93ZXJDYXNlKCk7fQpmdW5jdGlvbiBsb2dvVXJsKGMpe3JldHVybiBHSVRIVUJfUkFXK2NrZXkoYykrJy5wbmc/dD0nK01hdGguZmxvb3IoRGF0ZS5ub3coKS82MDAwMCk7fQpmdW5jdGlvbiBkcml2ZVVybChpZCl7cmV0dXJuJ2h0dHBzOi8vZHJpdmUuZ29vZ2xlLmNvbS9kcml2ZS9mb2xkZXJzLycraWQ7fQpmdW5jdGlvbiBmb3JtYXROYW1lKHJhdyl7cmV0dXJuIHJhdy5yZXBsYWNlKC9eQCsvLCcnKS5yZXBsYWNlKC9bLl8tXSsvZywnICcpLnJlcGxhY2UoL1xzKy9nLCcgJykudHJpbSgpLnNwbGl0KCcgJykubWFwKHc9Pnc/d1swXS50b1VwcGVyQ2FzZSgpK3cuc2xpY2UoMSk6JycpLmpvaW4oJyAnKTt9CmNvbnN0IGRuPWM9PmMuZGlzcGxheU5hbWV8fGZvcm1hdE5hbWUoYy5uYW1lKTsKZnVuY3Rpb24gaGFzRm9sZGVyKGMsayl7cmV0dXJuISEoYy5zdWJmb2xkZXJzJiZjLnN1YmZvbGRlcnNba10pO30KZnVuY3Rpb24gY291bnRGb2xkZXJzKGMpe3JldHVybiBBUkVBUy5maWx0ZXIoYT0+aGFzRm9sZGVyKGMsYS5rZXkpKS5sZW5ndGg7fQpmdW5jdGlvbiBpc1Bpbm5lZChuKXtyZXR1cm4gcGlubmVkLmluY2x1ZGVzKG4pO30KYXN5bmMgZnVuY3Rpb24gdG9nZ2xlUGluKG4pe2lzUGlubmVkKG4pP3Bpbm5lZD1waW5uZWQuZmlsdGVyKHg9PnghPT1uKTpwaW5uZWQucHVzaChuKTtyZW5kZXIoKTthd2FpdCBzYXZlUGlubmVkKCk7fQoKYXN5bmMgZnVuY3Rpb24gbG9hZENsaWVudHMoKXsKICB0cnl7CiAgICBjb25zdCByPWF3YWl0IGFwaSgnL2NsaWVudHMnKTsKICAgIGNvbnN0IGRhdGE9YXdhaXQgci5qc29uKCk7CiAgICBDTElFTlRTPWRhdGEubWFwKChjLGkpPT57CiAgICAgIGNvbnN0IG5hbWU9ZG4oYyk7CiAgICAgIGNvbnN0IGluaXRpYWxzPW5hbWUucmVwbGFjZSgvW15hLXpBLVpcdTAwQzAtXHUwMGZhXHNdL2csJycpLnNwbGl0KC9ccysvKS5zbGljZSgwLDIpLm1hcCh3PT53WzBdKS5qb2luKCcnKS50b1VwcGVyQ2FzZSgpLnN1YnN0cmluZygwLDIpfHwnPz8nOwogICAgICBjb25zdCBjbGllbnQ9ey4uLmMsY29sb3I6Yy5jb2xvcnx8UEFMRVRURVtpJVBBTEVUVEUubGVuZ3RoXS5jb2xvcixiZzpjLmJnfHxQQUxFVFRFW2klUEFMRVRURS5sZW5ndGhdLmJnLGluaXRpYWxzfTsKICAgICAgSURYW2NrZXkoY2xpZW50KV09Y2xpZW50O3JldHVybiBjbGllbnQ7CiAgICB9KTsKICAgIHJlZnJlc2hIb3RiYXIoKTtyZW5kZXIoKTsKICB9Y2F0Y2goZSl7ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2dyaWQnKS5pbm5lckhUTUw9JzxkaXYgY2xhc3M9ImVtcHR5Ij48c3Ryb25nPkVycm8gYW8gY2FycmVnYXIgY2xpZW50ZXM8L3N0cm9uZz48L2Rpdj4nO30KfQoKZnVuY3Rpb24gcmVmcmVzaEhvdGJhcigpewogIGNvbnN0IGlzVG9kb3M9ZmlsdGVycy5zaXplPT09MDsKICBjb25zdCBmdD1kb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZi10b2RvcycpOwogIGZ0LmNsYXNzTGlzdC50b2dnbGUoJ29uJyxpc1RvZG9zKTtmdC5zdHlsZS5iYWNrZ3JvdW5kPWlzVG9kb3M/J3ZhcigtLWJyYW5kKSc6Jyc7ZnQuc3R5bGUuY29sb3I9aXNUb2Rvcz8nI2ZmZic6Jyc7CiAgT2JqZWN0LmtleXMoQVJFQV9DT0xPUlMpLmZvckVhY2goaz0+ewogICAgY29uc3QgZWw9ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2YtJytrKTtpZighZWwpcmV0dXJuOwogICAgY29uc3Qgb249ZmlsdGVycy5oYXMoayk7CiAgICBlbC5jbGFzc0xpc3QudG9nZ2xlKCdvbicsb24pO2VsLnN0eWxlLmJhY2tncm91bmQ9b24/QVJFQV9DT0xPUlNba106Jyc7ZWwuc3R5bGUuY29sb3I9b24/JyNmZmYnOicnOwogICAgY29uc3QgZG90PWVsLnF1ZXJ5U2VsZWN0b3IoJy5oZCcpO2lmKGRvdClkb3Quc3R5bGUuYmFja2dyb3VuZD1vbj8ncmdiYSgyNTUsMjU1LDI1NSwwLjc1KSc6QVJFQV9ET1Rba107CiAgfSk7CiAgWydheicsJ21haXMnLCdtZW5vcyddLmZvckVhY2goaz0+ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3MtJytrKS5jbGFzc0xpc3QudG9nZ2xlKCdvbicsaz09PXNvcnRNb2RlKSk7CiAgWydwYWRyYW8nLCdjb21wYWN0byddLmZvckVhY2goaz0+ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3YtJytrKS5jbGFzc0xpc3QudG9nZ2xlKCdvbicsaz09PXZpZXdNb2RlKSk7Cn0KCmZ1bmN0aW9uIHRvZ2dsZUZpbHRlcihrKXtpZihrPT09J3RvZG9zJylmaWx0ZXJzLmNsZWFyKCk7ZWxzZSBmaWx0ZXJzLmhhcyhrKT9maWx0ZXJzLmRlbGV0ZShrKTpmaWx0ZXJzLmFkZChrKTtyZWZyZXNoSG90YmFyKCk7cmVuZGVyKCk7fQpmdW5jdGlvbiBzZXRTb3J0KHMpe3NvcnRNb2RlPXM7cmVmcmVzaEhvdGJhcigpO3JlbmRlcigpO3NhdmVQcmVmcygpO30KZnVuY3Rpb24gc2V0Vmlldyh2KXt2aWV3TW9kZT12O3JlZnJlc2hIb3RiYXIoKTtyZW5kZXIoKTtzYXZlUHJlZnMoKTt9CmZ1bmN0aW9uIHNldFRhYih0KXt0YWI9dDtkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndGFiLW1ldXMnKS5jbGFzc0xpc3QudG9nZ2xlKCdhY3RpdmUnLHQ9PT0nbWV1cycpO2RvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0YWItdG9kb3MnKS5jbGFzc0xpc3QudG9nZ2xlKCdhY3RpdmUnLHQ9PT0ndG9kb3MnKTtyZW5kZXIoKTt9CmZ1bmN0aW9uIG9wZW5Nb2RhbEJ5S2V5KGspe2NvbnN0IGM9SURYW2tdO2lmKGMpb3Blbk1vZGFsKGMpO30KZnVuY3Rpb24gdG9nZ2xlUGluQnlLZXkoayl7Y29uc3QgYz1JRFhba107aWYoYyl0b2dnbGVQaW4oYy5uYW1lKTt9CmZ1bmN0aW9uIHRyaWdnZXJVcGxvYWQoa2V5KXtjb25zdCBlbD1kb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndXAtJytrZXkpO2lmKGVsKWVsLmNsaWNrKCk7fQoKZnVuY3Rpb24gb3Blbk1vZGFsKGMpewogIGlmKCFjKXJldHVybjsKICBtb2RhbENsaWVudD1jOwogIHBlbmRpbmdNYWluPUFSRUFTLmZpbHRlcihhPT5oYXNGb2xkZXIoYyxhLmtleSkpLm1hcChhPT4oe2tleTphLmtleSxsYWJlbDphLmxhYmVsLGNvbG9yOmEuY29sb3IsaWQ6Yy5zdWJmb2xkZXJzW2Eua2V5XX0pKTsKICBjb25zdCBrZXk9Y2tleShjKSxsYWJlbD1kbihjKTsKICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbW9kYWwtaGVhZCcpLmlubmVySFRNTD0KICAgICc8ZGl2IGNsYXNzPSJtb2RhbC1hdiIgc3R5bGU9ImJhY2tncm91bmQ6JytjLmJnKyc7Y29sb3I6JytjLmNvbG9yKyciPicrCiAgICAgICc8c3BhbiBpZD0ibWF2LWluaS0nK2tleSsnIj4nK2MuaW5pdGlhbHMrJzwvc3Bhbj4nKwogICAgICAnPGltZyBzcmM9IicrbG9nb1VybChjKSsnIiBvbmxvYWQ9InRoaXMuc3R5bGUuZGlzcGxheT1cJ2Jsb2NrXCc7dmFyIHg9ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCdtYXYtaW5pLScra2V5KydcJyk7aWYoeCl4LnN0eWxlLmRpc3BsYXk9XCdub25lXCciIG9uZXJyb3I9InRoaXMuc3R5bGUuZGlzcGxheT1cJ25vbmVcJyI+JysKICAgICc8L2Rpdj4nKwogICAgJzxkaXY+PGRpdiBjbGFzcz0ibW9kYWwtdGl0bGUiPicrbGFiZWwrJzwvZGl2PjxkaXYgY2xhc3M9Im1vZGFsLWhhbmRsZSI+JytjLm5hbWUrJzwvZGl2PjwvZGl2PicrCiAgICAnPGJ1dHRvbiBjbGFzcz0ibW9kYWwtY2xvc2UiIG9uY2xpY2s9ImNsb3NlTW9kYWwoKSI+JiMyMTU7PC9idXR0b24+JzsKICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbW9kYWwtZHJpdmUtbGluaycpLmhyZWY9ZHJpdmVVcmwoYy5kcml2ZUlkKTsKICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbW9kYWwtc2F2ZScpLmNsYXNzTGlzdC5yZW1vdmUoJ3Nob3cnKTsKICByZW5kZXJNb2RhbEJvZHkoKTsKICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbW9kYWwtb3ZlcmxheScpLmNsYXNzTGlzdC5hZGQoJ29wZW4nKTsKICBkb2N1bWVudC5ib2R5LnN0eWxlLm92ZXJmbG93PSdoaWRkZW4nOwp9CgpmdW5jdGlvbiByZW5kZXJNb2RhbEJvZHkoKXsKICBjb25zdCBjPW1vZGFsQ2xpZW50O2lmKCFjKXJldHVybjsKICBjb25zdCBtYWluSWRzPW5ldyBTZXQocGVuZGluZ01haW4ubWFwKGY9PmYuaWQpKTsKICBjb25zdCBtYWluSHRtbD1wZW5kaW5nTWFpbi5tYXAoZj0+CiAgICAnPGRpdiBjbGFzcz0ibWFpbi1pdGVtIj4nKwogICAgICAnPGEgY2xhc3M9Im1haW4tbGluayIgaHJlZj0iJytkcml2ZVVybChmLmlkKSsnIiB0YXJnZXQ9Il9ibGFuayI+JysKICAgICAgICAnPHNwYW4gc3R5bGU9IndpZHRoOjdweDtoZWlnaHQ6N3B4O2JvcmRlci1yYWRpdXM6NTAlO2JhY2tncm91bmQ6JytmLmNvbG9yKyc7ZmxleC1zaHJpbms6MDtkaXNwbGF5OmlubGluZS1ibG9jayI+PC9zcGFuPicrCiAgICAgICAgJzxzcGFuPicrZi5sYWJlbCsnPC9zcGFuPicrCiAgICAgICc8L2E+JysKICAgICAgJzxidXR0b24gY2xhc3M9Im1haW4tcmVtb3ZlIiB0aXRsZT0iUmVtb3ZlciIgZGF0YS1maWQ9IicrZi5pZCsnIiBvbmNsaWNrPSJyZW1vdmVGcm9tTWFpbih0aGlzLmRhdGFzZXQuZmlkKSI+JiMyMTU7PC9idXR0b24+JysKICAgICc8L2Rpdj4nCiAgKS5qb2luKCcnKTsKICBjb25zdCBleHRyYXM9KGMuZXh0cmFGb2xkZXJzJiZjLmV4dHJhRm9sZGVycy5sZW5ndGgpP2MuZXh0cmFGb2xkZXJzLmZpbHRlcihmPT4hbWFpbklkcy5oYXMoZi5pZCkpOltdOwogIGxldCBleHRyYXNIdG1sPScnOwogIGlmKGV4dHJhcy5sZW5ndGgpewogICAgY29uc3QgY2FuQWRkPXBlbmRpbmdNYWluLmxlbmd0aDw0OwogICAgY29uc3QgaXRlbXM9ZXh0cmFzLm1hcCgoZixpKT0+ewogICAgICBjb25zdCBhZGRCdG49Y2FuQWRkCiAgICAgICAgPyc8YnV0dG9uIGNsYXNzPSJleHRyYS1hZGQiIGRhdGEtZmlkPSInK2YuaWQrJyIgZGF0YS1mbmFtZT0iJytmLm5hbWUucmVwbGFjZSgvIi9nLCcmcXVvdDsnKSsnIiBvbmNsaWNrPSJhZGRUb01haW4odGhpcy5kYXRhc2V0LmZpZCx0aGlzLmRhdGFzZXQuZm5hbWUpIj4rPC9idXR0b24+JwogICAgICAgIDonPGJ1dHRvbiBjbGFzcz0iZXh0cmEtYWRkIGFkZGVkIiBkaXNhYmxlZD4mIzEwMDAzOzwvYnV0dG9uPic7CiAgICAgIHJldHVybiAnPGRpdiBjbGFzcz0iZXh0cmEtaXRlbSI+JysKICAgICAgICAnPGEgY2xhc3M9ImV4dHJhLWxpbmsiIGhyZWY9IicrZHJpdmVVcmwoZi5pZCkrJyIgdGFyZ2V0PSJfYmxhbmsiPicrCiAgICAgICAgICAnPHNwYW4gc3R5bGU9IndpZHRoOjVweDtoZWlnaHQ6NXB4O2JvcmRlci1yYWRpdXM6NTAlO2JhY2tncm91bmQ6JytYQ09MU1tpJVhDT0xTLmxlbmd0aF0rJztmbGV4LXNocmluazowO2Rpc3BsYXk6aW5saW5lLWJsb2NrIj48L3NwYW4+Jm5ic3A7JytmLm5hbWUrCiAgICAgICAgJzwvYT4nK2FkZEJ0bisnPC9kaXY+JzsKICAgIH0pLmpvaW4oJycpOwogICAgZXh0cmFzSHRtbD0nPGhyIGNsYXNzPSJtZGl2aWRlciI+PGRpdiBjbGFzcz0ibWxhYmVsIj5Ub2RhcyBhcyBwYXN0YXM8L2Rpdj48ZGl2IGNsYXNzPSJleHRyYS1ncmlkIj4nK2l0ZW1zKyc8L2Rpdj4nOwogIH1lbHNlewogICAgZXh0cmFzSHRtbD0nPGhyIGNsYXNzPSJtZGl2aWRlciI+PHAgY2xhc3M9Im5vLWV4dHJhcyI+TmVuaHVtYSBzdWJwYXN0YSBlbmNvbnRyYWRhLjxicj5FeGVjdXRlIG8gc3luYyBwYXJhIGNhcnJlZ2FyLjwvcD4nOwogIH0KICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbW9kYWwtYm9keScpLmlubmVySFRNTD0KICAgICc8ZGl2IGNsYXNzPSJtbGFiZWwiPlBhc3RhcyBwcmluY2lwYWlzPC9kaXY+JysKICAgICc8ZGl2IGNsYXNzPSJtYWluLWdyaWQiPicrKG1haW5IdG1sfHwnPHNwYW4gc3R5bGU9ImZvbnQtc2l6ZToxMXB4O2NvbG9yOnZhcigtLWhpbnQpO3BhZGRpbmc6NHB4Ij5OZW5odW1hIHBhc3RhIHByaW5jaXBhbCBkZWZpbmlkYS48L3NwYW4+JykrJzwvZGl2PicrCiAgICBleHRyYXNIdG1sOwp9CgpmdW5jdGlvbiByZW1vdmVGcm9tTWFpbihpZCl7cGVuZGluZ01haW49cGVuZGluZ01haW4uZmlsdGVyKGY9PmYuaWQhPT1pZCk7ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ21vZGFsLXNhdmUnKS5jbGFzc0xpc3QuYWRkKCdzaG93Jyk7cmVuZGVyTW9kYWxCb2R5KCk7fQpmdW5jdGlvbiBhZGRUb01haW4oaWQsbmFtZSl7CiAgaWYocGVuZGluZ01haW4uZmluZChmPT5mLmlkPT09aWQpKXJldHVybjsKICBpZihwZW5kaW5nTWFpbi5sZW5ndGg+PTQpe3Nob3dUb2FzdCgnTcOheGltbyBkZSA0IHBhc3RhcyBwcmluY2lwYWlzLicpO3JldHVybjt9CiAgY29uc3QgdXNlZEtleXM9bmV3IFNldChwZW5kaW5nTWFpbi5tYXAoZj0+Zi5rZXkpKTsKICBjb25zdCBuZXh0QXJlYT1BUkVBUy5maW5kKGE9PiF1c2VkS2V5cy5oYXMoYS5rZXkpKTsKICBpZighbmV4dEFyZWEpe3Nob3dUb2FzdCgnVG9kYXMgYXMgNCDDoXJlYXMgasOhIGVzdMOjbyBwcmVlbmNoaWRhcy4nKTtyZXR1cm47fQogIHBlbmRpbmdNYWluLnB1c2goe2tleTpuZXh0QXJlYS5rZXksbGFiZWw6bmFtZSxjb2xvcjpuZXh0QXJlYS5jb2xvcixpZH0pOwogIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdtb2RhbC1zYXZlJykuY2xhc3NMaXN0LmFkZCgnc2hvdycpOwogIHJlbmRlck1vZGFsQm9keSgpOwp9Cgphc3luYyBmdW5jdGlvbiBzYXZlTWFpbkZvbGRlcnMoKXsKICBpZighbW9kYWxDbGllbnQpcmV0dXJuOwogIHNob3dUb2FzdCgnU2FsdmFuZG8uLi4nKTsKICBjb25zdCBuZXdTdWI9e21hdGVyaWFpczonJyx0cmFmZWdvOicnLHNvY2lhbDonJyxyZWZzOicnfTsKICBwZW5kaW5nTWFpbi5mb3JFYWNoKGY9PntpZihPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwobmV3U3ViLGYua2V5KSluZXdTdWJbZi5rZXldPWYuaWQ7fSk7CiAgY29uc3QgaWR4PUNMSUVOVFMuZmluZEluZGV4KHg9PngubmFtZT09PW1vZGFsQ2xpZW50Lm5hbWUpOwogIGlmKGlkeD49MClDTElFTlRTW2lkeF0uc3ViZm9sZGVycz1uZXdTdWI7CiAgdHJ5ewogICAgY29uc3Qgcj1hd2FpdCBhcGkoJy9jbGllbnRzLycrZW5jb2RlVVJJQ29tcG9uZW50KG1vZGFsQ2xpZW50Lm5hbWUpKycvZm9sZGVycycse21ldGhvZDonUFVUJyxib2R5OkpTT04uc3RyaW5naWZ5KHtzdWJmb2xkZXJzOm5ld1N1Yn0pfSk7CiAgICBpZihyLm9rKXtzaG93VG9hc3QoJ1NhbHZvISBWaXPDrXZlbCBwYXJhIHRvZG9zLicsMzAwMCk7ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ21vZGFsLXNhdmUnKS5jbGFzc0xpc3QucmVtb3ZlKCdzaG93Jyk7cmVuZGVyKCk7fQogICAgZWxzZSBzaG93VG9hc3QoJ0Vycm8gYW8gc2FsdmFyLicpOwogIH1jYXRjaChlKXtzaG93VG9hc3QoJ0Vycm8gZGUgY29uZXjDo286ICcrZS5tZXNzYWdlKTt9Cn0KCmZ1bmN0aW9uIGNsb3NlTW9kYWwoKXtkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbW9kYWwtb3ZlcmxheScpLmNsYXNzTGlzdC5yZW1vdmUoJ29wZW4nKTtkb2N1bWVudC5ib2R5LnN0eWxlLm92ZXJmbG93PScnO21vZGFsQ2xpZW50PW51bGw7cGVuZGluZ01haW49W107fQpmdW5jdGlvbiBoYW5kbGVPdmVybGF5Q2xpY2soZSl7aWYoZS50YXJnZXQ9PT1kb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbW9kYWwtb3ZlcmxheScpKWNsb3NlTW9kYWwoKTt9CmRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ2tleWRvd24nLGU9PntpZihlLmtleT09PSdFc2NhcGUnKWNsb3NlTW9kYWwoKTt9KTsKZnVuY3Rpb24gc2hvd1RvYXN0KG1zZyxkdXI9MjUwMCl7Y29uc3QgdD1kb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9hc3QnKTt0LnRleHRDb250ZW50PW1zZzt0LmNsYXNzTGlzdC5hZGQoJ3Nob3cnKTtzZXRUaW1lb3V0KCgpPT50LmNsYXNzTGlzdC5yZW1vdmUoJ3Nob3cnKSxkdXIpO30KCmFzeW5jIGZ1bmN0aW9uIGhhbmRsZUxvZ29VcGxvYWQoaW5wdXQsa2V5KXsKICBjb25zdCBmaWxlPWlucHV0LmZpbGVzWzBdO2lmKCFmaWxlKXJldHVybjsKICBpZihmaWxlLnNpemU+NTAwKjEwMjQpe3Nob3dUb2FzdCgnSW1hZ2VtIG11aXRvIGdyYW5kZS4gVXNlIGF0w6kgNTAwa2IuJyk7cmV0dXJuO30KICBzaG93VG9hc3QoJ0VudmlhbmRvIGxvZ28uLi4nKTsKICBjb25zdCByZWFkZXI9bmV3IEZpbGVSZWFkZXIoKTsKICByZWFkZXIub25sb2FkPWFzeW5jIGZ1bmN0aW9uKGUpewogICAgY29uc3QgYjY0PWUudGFyZ2V0LnJlc3VsdC5zcGxpdCgnLCcpWzFdOwogICAgdHJ5ewogICAgICBjb25zdCByPWF3YWl0IGFwaSgnL2xvZ29zLycra2V5LHttZXRob2Q6J1BVVCcsYm9keTpKU09OLnN0cmluZ2lmeSh7Y29udGVudDpiNjR9KX0pOwogICAgICBpZihyLm9rKXsKICAgICAgICBzaG93VG9hc3QoJ0xvZ28gc2FsdmEhIFZpc8OtdmVsIHBhcmEgdG9kb3MuJywzMDAwKTsKICAgICAgICBjb25zdCBpbWc9ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2ltZy0nK2tleSksaW5pPWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdpbmktJytrZXkpOwogICAgICAgIGlmKGltZyl7aW1nLnNyYz1lLnRhcmdldC5yZXN1bHQ7aW1nLnN0eWxlLmRpc3BsYXk9J2Jsb2NrJzt9CiAgICAgICAgaWYoaW5pKWluaS5zdHlsZS5kaXNwbGF5PSdub25lJzsKICAgICAgfWVsc2Ugc2hvd1RvYXN0KCdFcnJvIGFvIHNhbHZhciBsb2dvLicpOwogICAgfWNhdGNoe3Nob3dUb2FzdCgnRXJybyBkZSBjb25leMOjby4nKTt9CiAgfTsKICByZWFkZXIucmVhZEFzRGF0YVVSTChmaWxlKTsKfQoKZnVuY3Rpb24gcmVuZGVyKCl7CiAgY29uc3QgcT1kb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnc2VhcmNoJykudmFsdWUudG9Mb3dlckNhc2UoKTsKICBsZXQgbGlzdD1DTElFTlRTLmZpbHRlcihjPT57CiAgICBpZih0YWI9PT0nbWV1cycmJiFpc1Bpbm5lZChjLm5hbWUpKXJldHVybiBmYWxzZTsKICAgIGlmKHEmJiFkbihjKS50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKHEpJiYhYy5uYW1lLnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMocSkpcmV0dXJuIGZhbHNlOwogICAgaWYoZmlsdGVycy5zaXplPjAmJiFbLi4uZmlsdGVyc10uZXZlcnkoZj0+aGFzRm9sZGVyKGMsZikpKXJldHVybiBmYWxzZTsKICAgIHJldHVybiB0cnVlOwogIH0pOwogIGlmKHNvcnRNb2RlPT09J2F6JylsaXN0LnNvcnQoKGEsYik9PmRuKGEpLmxvY2FsZUNvbXBhcmUoZG4oYiksJ3B0JykpOwogIGVsc2UgaWYoc29ydE1vZGU9PT0nbWFpcycpbGlzdC5zb3J0KChhLGIpPT5jb3VudEZvbGRlcnMoYiktY291bnRGb2xkZXJzKGEpKTsKICBlbHNlIGxpc3Quc29ydCgoYSxiKT0+Y291bnRGb2xkZXJzKGEpLWNvdW50Rm9sZGVycyhiKSk7CiAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NvdW50JykudGV4dENvbnRlbnQ9bGlzdC5sZW5ndGg/bGlzdC5sZW5ndGgrJyBjbGllbnRlJysobGlzdC5sZW5ndGghPT0xPydzJzonJyk6Jyc7CiAgY29uc3QgZ3JpZD1kb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZ3JpZCcpOwogIGdyaWQuY2xhc3NOYW1lPSdncmlkJysodmlld01vZGU9PT0nY29tcGFjdG8nPycgY29tcGFjdCc6JycpOwogIGlmKHRhYj09PSdtZXVzJyYmIXBpbm5lZC5sZW5ndGgpe2dyaWQuaW5uZXJIVE1MPSc8ZGl2IGNsYXNzPSJlbXB0eSI+PHN0cm9uZz5OZW5odW0gY2xpZW50ZSBmYXZvcml0YWRvIGFpbmRhPC9zdHJvbmc+TmEgYWJhIFRvZG9zLCBjbGlxdWUgbmEgZXN0cmVsYSBwYXJhIGFkaWNpb25hciBhcXVpLjwvZGl2Pic7cmV0dXJuO30KICBpZighbGlzdC5sZW5ndGgpe2dyaWQuaW5uZXJIVE1MPSc8ZGl2IGNsYXNzPSJlbXB0eSI+TmVuaHVtIGNsaWVudGUgZW5jb250cmFkby48L2Rpdj4nO3JldHVybjt9CiAgZ3JpZC5pbm5lckhUTUw9bGlzdC5tYXAoYz0+ewogICAgY29uc3Qga2V5PWNrZXkoYyksbGFiZWw9ZG4oYykscGluPWlzUGlubmVkKGMubmFtZSksaXNEaW09Y291bnRGb2xkZXJzKGMpPT09MDsKICAgIGlmKHZpZXdNb2RlPT09J2NvbXBhY3RvJyl7CiAgICAgIGNvbnN0IGJ0bnM9QVJFQVMuZmlsdGVyKGE9Pmhhc0ZvbGRlcihjLGEua2V5KSkubWFwKGE9PgogICAgICAgICc8YSBjbGFzcz0iY2J0biIgaHJlZj0iJytkcml2ZVVybChjLnN1YmZvbGRlcnNbYS5rZXldKSsnIiB0YXJnZXQ9Il9ibGFuayI+PHNwYW4gY2xhc3M9ImNidG4tZG90IiBzdHlsZT0iYmFja2dyb3VuZDonK2EuY29sb3IrJyI+PC9zcGFuPicrYS5sYWJlbCsnPC9hPicKICAgICAgKS5qb2luKCcnKTsKICAgICAgcmV0dXJuICc8ZGl2IGNsYXNzPSJjYXJkLWNvbXBhY3QnKyhwaW4/JyBwaW5uZWQnOicnKSsoaXNEaW0/JyBkaW0nOicnKSsnIj4nKwogICAgICAgICc8ZGl2IGNsYXNzPSJjYXYiIHN0eWxlPSJiYWNrZ3JvdW5kOicrYy5iZysnO2NvbG9yOicrYy5jb2xvcisnIiBvbmNsaWNrPSJ0cmlnZ2VyVXBsb2FkKFwnJytrZXkrJ1wnKSIgdGl0bGU9IlRyb2NhciBsb2dvIj4nKwogICAgICAgICAgJzxzcGFuIGlkPSJjaW5pLScra2V5KyciPicrYy5pbml0aWFscysnPC9zcGFuPicrCiAgICAgICAgICAnPGltZyBzcmM9IicrbG9nb1VybChjKSsnIiBvbmxvYWQ9InRoaXMuc3R5bGUuZGlzcGxheT1cJ2Jsb2NrXCc7dmFyIHg9ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCdjaW5pLScra2V5KydcJyk7aWYoeCl4LnN0eWxlLmRpc3BsYXk9XCdub25lXCciIG9uZXJyb3I9InRoaXMuc3R5bGUuZGlzcGxheT1cJ25vbmVcJyI+JysKICAgICAgICAgICc8ZGl2IGNsYXNzPSJjYXYtb3YiPiYjMTI4MjQ3OzwvZGl2PicrCiAgICAgICAgICAnPGlucHV0IGNsYXNzPSJhdmF0YXItdXBsb2FkIiB0eXBlPSJmaWxlIiBpZD0idXAtJytrZXkrJyIgYWNjZXB0PSJpbWFnZS8qIiBvbmNoYW5nZT0iaGFuZGxlTG9nb1VwbG9hZCh0aGlzLFwnJytrZXkrJ1wnKSIgb25jbGljaz0iZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCkiPicrCiAgICAgICAgJzwvZGl2PicrCiAgICAgICAgJzxkaXYgY2xhc3M9ImNuYW1lIiBvbmNsaWNrPSJvcGVuTW9kYWxCeUtleShcJycra2V5KydcJykiIHRpdGxlPSJWZXIgcGFzdGFzIj4nK2xhYmVsKyc8L2Rpdj4nKwogICAgICAgICc8ZGl2IGNsYXNzPSJjYnRucyI+JysoYnRuc3x8JzxzcGFuIHN0eWxlPSJmb250LXNpemU6MTBweDtjb2xvcjp2YXIoLS1oaW50KSI+U2VtIHBhc3Rhczwvc3Bhbj4nKSsnPC9kaXY+JysKICAgICAgICAnPGJ1dHRvbiBjbGFzcz0iY3BpbicrKHBpbj8nIG9uJzonJykrJyIgb25jbGljaz0idG9nZ2xlUGluQnlLZXkoXCcnK2tleSsnXCcpIj4nKyhwaW4/JyYjOTczMzsnOicmIzk3MzQ7JykrJzwvYnV0dG9uPicrCiAgICAgICc8L2Rpdj4nOwogICAgfQogICAgY29uc3QgaGFuZGxlPWxhYmVsIT09Yy5uYW1lPyc8ZGl2IGNsYXNzPSJjbGllbnQtaGFuZGxlIj4nK2MubmFtZSsnPC9kaXY+JzonJzsKICAgIGNvbnN0IGJ0bnM9QVJFQVMuZmlsdGVyKGE9Pmhhc0ZvbGRlcihjLGEua2V5KSkubWFwKGE9PgogICAgICAnPGEgY2xhc3M9ImJ0biIgaHJlZj0iJytkcml2ZVVybChjLnN1YmZvbGRlcnNbYS5rZXldKSsnIiB0YXJnZXQ9Il9ibGFuayI+PHNwYW4gY2xhc3M9ImJ0bi1kb3QiIHN0eWxlPSJiYWNrZ3JvdW5kOicrYS5jb2xvcisnIj48L3NwYW4+JythLmxhYmVsKyc8L2E+JwogICAgKS5qb2luKCcnKTsKICAgIHJldHVybiAnPGRpdiBjbGFzcz0iY2FyZCcrKHBpbj8nIHBpbm5lZCc6JycpKyhpc0RpbT8nIGRpbSc6JycpKyciPicrCiAgICAgICc8ZGl2IGNsYXNzPSJjYXJkLXRvcCI+JysKICAgICAgICAnPGRpdiBjbGFzcz0iYXZhdGFyIiBzdHlsZT0iYmFja2dyb3VuZDonK2MuYmcrJztjb2xvcjonK2MuY29sb3IrJyIgb25jbGljaz0idHJpZ2dlclVwbG9hZChcJycra2V5KydcJykiIHRpdGxlPSJDbGlxdWUgcGFyYSB0cm9jYXIgbG9nbyI+JysKICAgICAgICAgICc8c3BhbiBpZD0iaW5pLScra2V5KyciPicrYy5pbml0aWFscysnPC9zcGFuPicrCiAgICAgICAgICAnPGltZyBpZD0iaW1nLScra2V5KyciIHNyYz0iJytsb2dvVXJsKGMpKyciIG9ubG9hZD0idGhpcy5zdHlsZS5kaXNwbGF5PVwnYmxvY2tcJzt2YXIgeD1kb2N1bWVudC5nZXRFbGVtZW50QnlJZChcJ2luaS0nK2tleSsnXCcpO2lmKHgpeC5zdHlsZS5kaXNwbGF5PVwnbm9uZVwnIiBvbmVycm9yPSJ0aGlzLnN0eWxlLmRpc3BsYXk9XCdub25lXCciPicrCiAgICAgICAgICAnPGRpdiBjbGFzcz0iYXYtb3YiPiYjMTI4MjQ3OzwvZGl2PicrCiAgICAgICAgICAnPGlucHV0IGNsYXNzPSJhdmF0YXItdXBsb2FkIiB0eXBlPSJmaWxlIiBpZD0idXAtJytrZXkrJyIgYWNjZXB0PSJpbWFnZS8qIiBvbmNoYW5nZT0iaGFuZGxlTG9nb1VwbG9hZCh0aGlzLFwnJytrZXkrJ1wnKSIgb25jbGljaz0iZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCkiPicrCiAgICAgICAgJzwvZGl2PicrCiAgICAgICAgJzxkaXYgY2xhc3M9ImNsaWVudC1pbmZvIiBvbmNsaWNrPSJvcGVuTW9kYWxCeUtleShcJycra2V5KydcJykiIHRpdGxlPSJWZXIgdG9kYXMgYXMgcGFzdGFzIj4nKwogICAgICAgICAgJzxkaXYgY2xhc3M9ImNsaWVudC1uYW1lIj4nK2xhYmVsKyc8L2Rpdj4nK2hhbmRsZSsKICAgICAgICAgICc8ZGl2IGNsYXNzPSJjbGllbnQtdHlwZSI+JysoYy50aXBvfHwnJykrJzwvZGl2PicrCiAgICAgICAgJzwvZGl2PicrCiAgICAgICAgJzxidXR0b24gY2xhc3M9InBpbicrKHBpbj8nIG9uJzonJykrJyIgb25jbGljaz0idG9nZ2xlUGluQnlLZXkoXCcnK2tleSsnXCcpIj4nKyhwaW4/JyYjOTczMzsnOicmIzk3MzQ7JykrJzwvYnV0dG9uPicrCiAgICAgICc8L2Rpdj4nKwogICAgICAnPGRpdiBjbGFzcz0iYnRucyI+JysoYnRuc3x8JzxzcGFuIGNsYXNzPSJuby1mb2xkZXJzIj5TZW0gcGFzdGFzIG1hcGVhZGFzPC9zcGFuPicpKyc8L2Rpdj4nKwogICAgJzwvZGl2Pic7CiAgfSkuam9pbignJyk7Cn0KCmZ1bmN0aW9uIGFwcGx5VGhlbWUodCl7ZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LnNldEF0dHJpYnV0ZSgnZGF0YS10aGVtZScsdCk7ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3RoZW1lLWJ0bicpLnRleHRDb250ZW50PXQ9PT0nZGFyayc/J1x1RDgzQ1x1REYxOSc6J1x1MjYwMFx1RkUwRic7fQpmdW5jdGlvbiB0b2dnbGVUaGVtZSgpe2FwcGx5VGhlbWUoZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmdldEF0dHJpYnV0ZSgnZGF0YS10aGVtZScpPT09J2RhcmsnPydsaWdodCc6J2RhcmsnKTtzYXZlUHJlZnMoKTt9CgphcHBseVRoZW1lKHdpbmRvdy5tYXRjaE1lZGlhKCcocHJlZmVycy1jb2xvci1zY2hlbWU6ZGFyayknKS5tYXRjaGVzPydkYXJrJzonbGlnaHQnKTsKZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2RhdGUnKS50ZXh0Q29udGVudD1uZXcgRGF0ZSgpLnRvTG9jYWxlRGF0ZVN0cmluZygncHQtQlInLHt3ZWVrZGF5OidzaG9ydCcsZGF5OicyLWRpZ2l0Jyxtb250aDonc2hvcnQnfSk7Cgpjb25zdCBzYXZlZD1sb2NhbFN0b3JhZ2UuZ2V0SXRlbSgnM3AtdXNlcm5hbWUnKTsKaWYoc2F2ZWQpe1VTRVJOQU1FPXNhdmVkO2RvY3VtZW50LmdldEVsZW1lbnRCeUlkKCduaWNrLW92ZXJsYXknKS5zdHlsZS5kaXNwbGF5PSdub25lJztkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndXNlci1jaGlwJykudGV4dENvbnRlbnQ9J/CfkaQgJytzYXZlZDtsb2FkVXNlckRhdGEoKTt9CmVsc2UgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ25pY2stb3ZlcmxheScpLnN0eWxlLmRpc3BsYXk9J2ZsZXgnOwo8L3NjcmlwdD4KPC9ib2R5Pgo8L2h0bWw+Cg==