Πληροφορίες
Αρχική / Πληροφορίες Πριν έρθετε Καλό είναι να γνωρίζετε. Ώρες άφιξης και αναχώρησης, πολιτική ακυρώσεων, τρόποι πληρωμής και συχνές ερωτήσεις.
Άφιξη 14:00 Check-in μετά τις 14:00. Ενημερώστε μας για την ώρα που θα φτάσετε.
Αναχώρηση 11:30 Check-out έως τις 11:30.
Ακυρώσεις 7 έως 4 ημέρες πριν: χρέωση 50% Λιγότερο από 4 ημέρες πριν: χρέωση 100% Μη εμφάνιση: χρέωση 100%
Πληρωμή Μετρητά Πιστωτική κάρτα Κατάθεση σε τράπεζα Μπορεί να ζητηθεί εξόφληση κατά την άφιξη.
Κάπνισμα Το κάπνισμα απαγορεύεται αυστηρά μέσα στα δωμάτια.
Ζημιές και φθορές Υλικές ζημιές που προκαλούνται από τον επισκέπτη βαραίνουν τον ίδιο.
Ώρα άφιξης Ενημερώστε μας για την ώρα που θα φτάσετε, ώστε να είμαστε εκεί να σας υποδεχτούμε.
Συχνές ερωτήσεις
Ό,τι μας ρωτάτε συχνότερα.
Πόσο απέχετε από τα Λουτρά Πόζαρ; Περίπου 3 χιλιόμετρα, λίγα λεπτά με το αυτοκίνητο. Ο ξενώνας βρίσκεται στο Λουτράκι Αριδαίας.
Πόσα άτομα χωράει κάθε δωμάτιο; Το Deluxe και το Superior φιλοξενούν έως 3 άτομα. Τα δύο Standard φιλοξενούν έως 2. Συνολικά ο ξενώνας φιλοξενεί έως 10 άτομα, οπότε μπορείτε να τον κλείσετε και για παρέα.
Υπάρχει χώρος στάθμευσης; Ναι. Περιφραγμένος ιδιωτικός χώρος στάθμευσης, δωρεάν για τους επισκέπτες.
Επιτρέπεται το κάπνισμα; Όχι. Το κάπνισμα απαγορεύεται αυστηρά μέσα στα δωμάτια.
Πώς επιβεβαιώνεται η κράτηση; Στέλνετε το αίτημα από τη φόρμα παρακάτω ή μας τηλεφωνείτε. Σας απαντάμε με διαθεσιμότητα και τιμή, και η κράτηση οριστικοποιείται όταν συμφωνήσουμε.
Ποιες είναι οι υποχρεώσεις μου για ζημιές; Υλικές ζημιές που προκαλούνται από τον επισκέπτη βαραίνουν τον ίδιο.
Έχετε άλλη ερώτηση; Πάρτε μας τηλέφωνο ή στείλτε μας μήνυμα μαζί με το αίτημα κράτησης.
‹ ›
KGZ1bmN0aW9uKCl7CmZ1bmN0aW9uICQoaWQpeyByZXR1cm4gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoaWQpOyB9CnZhciB5cj0kKCJ5ciIpOyBpZih5cikgeXIudGV4dENvbnRlbnQ9bmV3IERhdGUoKS5nZXRGdWxsWWVhcigpOwp2YXIgbmF2PSQoInpuYXYiKSwgbWI9JCgibWVudUJ0biIpOwppZihuYXYgJiYgbWIpeyBtYi5vbmNsaWNrPWZ1bmN0aW9uKCl7IHZhciBvPW5hdi5jbGFzc0xpc3QudG9nZ2xlKCJvcGVuIik7IG1iLnNldEF0dHJpYnV0ZSgiYXJpYS1leHBhbmRlZCIsbyk7IH07IG5hdi5xdWVyeVNlbGVjdG9yQWxsKCJhIikuZm9yRWFjaChmdW5jdGlvbihhKXsgYS5hZGRFdmVudExpc3RlbmVyKCJjbGljayIsZnVuY3Rpb24oKXsgbmF2LmNsYXNzTGlzdC5yZW1vdmUoIm9wZW4iKTsgfSk7IH0pOyB9CnZhciBsYj0kKCJsYiIpOwppZihsYil7CiB2YXIgbGlzdD1bXSwgaWR4PTAsIGxiSW1nPSQoImxiSW1nIiksIGxiVD0kKCJsYlRodW1icyIpOwogdmFyIHNob3c9ZnVuY3Rpb24oaSl7IGlkeD0oaStsaXN0Lmxlbmd0aCklbGlzdC5sZW5ndGg7IGxiSW1nLnNyYz1saXN0W2lkeF0uZnVsbDsgbGJJbWcuYWx0PSQoImxiVGl0bGUiKS50ZXh0Q29udGVudCsiLCDPhs+Jz4TOv86zz4HOsc+Gzq/OsSAiKyhpZHgrMSk7ICQoImxiQ291bnQiKS50ZXh0Q29udGVudD0oaWR4KzEpKyIgLyAiK2xpc3QubGVuZ3RoOyBBcnJheS5wcm90b3R5cGUuZm9yRWFjaC5jYWxsKGxiVC5jaGlsZHJlbixmdW5jdGlvbihiLGopeyBiLmNsYXNzTGlzdC50b2dnbGUoIm9uIixqPT09aWR4KTsgfSk7IGlmKGxiVC5jaGlsZHJlbltpZHhdKSBsYlQuY2hpbGRyZW5baWR4XS5zY3JvbGxJbnRvVmlldyh7YmxvY2s6Im5lYXJlc3QiLGlubGluZToiY2VudGVyIn0pOyB9OwogdmFyIG9wZW49ZnVuY3Rpb24oa2V5LHN0YXJ0KXsKICB2YXIgbGlua3M9W10uc2xpY2UuY2FsbChkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCcjemlsbGlzIGFbZGF0YS1nPSInK2tleSsnIl0nKSk7CiAgaWYoIWxpbmtzLmxlbmd0aCkgcmV0dXJuOwogIGxpc3Q9bGlua3MubWFwKGZ1bmN0aW9uKGEpeyB2YXIgaW09YS5xdWVyeVNlbGVjdG9yKCJpbWciKTsgcmV0dXJuIHtmdWxsOmEuaHJlZiwgdGh1bWI6KGltP2ltLmdldEF0dHJpYnV0ZSgic3JjIik6YS5ocmVmKX07IH0pOwogICQoImxiVGl0bGUiKS50ZXh0Q29udGVudD1saW5rc1swXS5nZXRBdHRyaWJ1dGUoImRhdGEtdGl0bGUiKXx8IiI7CiAgbGJULmlubmVySFRNTD0iIjsKICBsaXN0LmZvckVhY2goZnVuY3Rpb24oaXQsail7IHZhciBiPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImJ1dHRvbiIpOyBiLnNldEF0dHJpYnV0ZSgiYXJpYS1sYWJlbCIsIs6mz4nPhM6/zrPPgc6xz4bOr86xICIrKGorMSkpOyBiLmlubmVySFRNTD0nPGltZyBzcmM9IicraXQudGh1bWIrJyIgYWx0PSIiIGxvYWRpbmc9ImxhenkiPic7IGIub25jbGljaz1mdW5jdGlvbigpeyBzaG93KGopOyB9OyBsYlQuYXBwZW5kQ2hpbGQoYik7IH0pOwogIGlmKHdpbmRvdy56TGVuaXMpIHdpbmRvdy56TGVuaXMuc3RvcCgpOwogIGlmKGxiLnNob3dNb2RhbCkgbGIuc2hvd01vZGFsKCk7IGVsc2UgbGIuc2V0QXR0cmlidXRlKCJvcGVuIiwiIik7CiAgc2hvdyhzdGFydHx8MCk7CiB9OwogbGIuYWRkRXZlbnRMaXN0ZW5lcigiY2xvc2UiLGZ1bmN0aW9uKCl7IGlmKHdpbmRvdy56TGVuaXMpIHdpbmRvdy56TGVuaXMuc3RhcnQoKTsgfSk7CiBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCJjbGljayIsZnVuY3Rpb24oZSl7CiAgdmFyIGE9ZS50YXJnZXQuY2xvc2VzdCgiI3ppbGxpcyBhW2RhdGEtZ10iKTsKICBpZihhKXsgZS5wcmV2ZW50RGVmYXVsdCgpOyB2YXIgYWxsPVtdLnNsaWNlLmNhbGwoZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnI3ppbGxpcyBhW2RhdGEtZz0iJythLmRhdGFzZXQuZysnIl0nKSk7IG9wZW4oYS5kYXRhc2V0LmcsIGFsbC5pbmRleE9mKGEpKTsgcmV0dXJuOyB9CiAgdmFyIGI9ZS50YXJnZXQuY2xvc2VzdCgiI3ppbGxpcyBbZGF0YS1vcGVuLWddIik7CiAgaWYoYil7IGUucHJldmVudERlZmF1bHQoKTsgb3BlbihiLmdldEF0dHJpYnV0ZSgiZGF0YS1vcGVuLWciKSwwKTsgfQogfSk7CiAkKCJsYkNsb3NlIikub25jbGljaz1mdW5jdGlvbigpeyBsYi5jbG9zZSgpOyB9OwogJCgibGJQcmV2Iikub25jbGljaz1mdW5jdGlvbigpeyBzaG93KGlkeC0xKTsgfTsKICQoImxiTmV4dCIpLm9uY2xpY2s9ZnVuY3Rpb24oKXsgc2hvdyhpZHgrMSk7IH07CiBsYi5hZGRFdmVudExpc3RlbmVyKCJrZXlkb3duIixmdW5jdGlvbihlKXsgaWYoZS5rZXk9PT0iQXJyb3dMZWZ0Iikgc2hvdyhpZHgtMSk7IGlmKGUua2V5PT09IkFycm93UmlnaHQiKSBzaG93KGlkeCsxKTsgfSk7CiB2YXIgdHg9bnVsbDsKIGxiLmFkZEV2ZW50TGlzdGVuZXIoInRvdWNoc3RhcnQiLGZ1bmN0aW9uKGUpeyB0eD1lLnRvdWNoZXNbMF0uY2xpZW50WDsgfSx7cGFzc2l2ZTp0cnVlfSk7CiBsYi5hZGRFdmVudExpc3RlbmVyKCJ0b3VjaGVuZCIsZnVuY3Rpb24oZSl7IGlmKHR4PT09bnVsbCkgcmV0dXJuOyB2YXIgZD1lLmNoYW5nZWRUb3VjaGVzWzBdLmNsaWVudFgtdHg7IGlmKE1hdGguYWJzKGQpPjUwKSBzaG93KGlkeCsoZDwwPzE6LTEpKTsgdHg9bnVsbDsgfSk7Cn0KCmRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoIiN6aWxsaXMgW2RhdGEteXRdIikuZm9yRWFjaChmdW5jdGlvbihiKXsKIGIuYWRkRXZlbnRMaXN0ZW5lcigiY2xpY2siLGZ1bmN0aW9uKCl7CiAgdmFyIGY9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiaWZyYW1lIik7CiAgZi5zcmM9Imh0dHBzOi8vd3d3LnlvdXR1YmUtbm9jb29raWUuY29tL2VtYmVkLyIrYi5nZXRBdHRyaWJ1dGUoImRhdGEteXQiKSsiP2F1dG9wbGF5PTEmcmVsPTAiOwogIGYudGl0bGU9Is6Szq/Ovc+EzrXOvzogWmlsbGlzIEFwYXJ0bWVudHMiOyBmLmFsbG93PSJhdXRvcGxheTsgZW5jcnlwdGVkLW1lZGlhOyBwaWN0dXJlLWluLXBpY3R1cmU7IGZ1bGxzY3JlZW4iOyBmLmFsbG93RnVsbHNjcmVlbj10cnVlOwogIGIucGFyZW50Tm9kZS5yZXBsYWNlQ2hpbGQoZixiKTsKIH0pOwp9KTsKdmFyIGFmPSQoImFza0Zvcm0iKTsKaWYoYWYpewogYWYuYWRkRXZlbnRMaXN0ZW5lcigic3VibWl0IixmdW5jdGlvbihlKXsKICBlLnByZXZlbnREZWZhdWx0KCk7CiAgdmFyIG9rPXRydWU7CiAgW1siYW5hbWUiLCLOk8+BzqzPiM+EzrUgz4TOvyDPjM69zr/OvM6sIM+DzrHPgi4iXSxbImFtc2ciLCLOk8+BzqzPiM+EzrUgz4TOt869IM61z4HPjs+EzrfPg86uIM+DzrHPgi4iXV0uZm9yRWFjaChmdW5jdGlvbihwKXsgdmFyIGZsPSQocFswXSkuY2xvc2VzdCgiLmZpZWxkIiksIGJhZD0hJChwWzBdKS52YWx1ZS50cmltKCk7IGZsLmNsYXNzTGlzdC50b2dnbGUoImJhZCIsYmFkKTsgZmwucXVlcnlTZWxlY3RvcigiLm1zZyIpLnRleHRDb250ZW50PWJhZD9wWzFdOiIiOyBpZihiYWQpIG9rPWZhbHNlOyB9KTsKICB2YXIgZW09JCgiYWVtYWlsIiksIGVmbD1lbS5jbG9zZXN0KCIuZmllbGQiKSwgZWJhZD0hL15bXlxzQF0rQFteXHNAXStcLlteXHNAXSskLy50ZXN0KGVtLnZhbHVlLnRyaW0oKSk7CiAgZWZsLmNsYXNzTGlzdC50b2dnbGUoImJhZCIsZWJhZCk7IGVmbC5xdWVyeVNlbGVjdG9yKCIubXNnIikudGV4dENvbnRlbnQ9ZWJhZD8izpPPgc6sz4jPhM61IM6tzr3OsSDOrc6zzrrPhc+Bzr8gZW1haWwsIM+ALs+HLiBvbm9tYUBnbWFpbC5jb20uIjoiIjsgaWYoZWJhZCkgb2s9ZmFsc2U7CiAgaWYoIW9rKSByZXR1cm47CiAgdmFyIHN0PSQoImFzdGF0dXMiKSwgYnRuPSQoImFzdWJtaXQiKTsgYnRuLmRpc2FibGVkPXRydWU7IGJ0bi50ZXh0Q29udGVudD0izpHPgM6/z4PPhM6/zrvOruKApiI7CiAgdmFyIHRvaz1uZXcgUHJvbWlzZShmdW5jdGlvbihyZXMpeyB0cnl7IGlmKHdpbmRvdy5ncmVjYXB0Y2hhICYmIHdpbmRvdy53cGNmN19yZWNhcHRjaGEgJiYgd3BjZjdfcmVjYXB0Y2hhLnNpdGVrZXkpeyBncmVjYXB0Y2hhLnJlYWR5KGZ1bmN0aW9uKCl7IGdyZWNhcHRjaGEuZXhlY3V0ZSh3cGNmN19yZWNhcHRjaGEuc2l0ZWtleSx7YWN0aW9uOiJjb250YWN0Zm9ybSJ9KS50aGVuKHJlcyxmdW5jdGlvbigpeyByZXMoIiIpOyB9KTsgfSk7IH0gZWxzZSByZXMoIiIpOyB9Y2F0Y2goeCl7IHJlcygiIik7IH0gfSk7CiAgdG9rLnRoZW4oZnVuY3Rpb24odCl7CiAgIHZhciBmZD1uZXcgRm9ybURhdGEoKTsKICAgZmQuYXBwZW5kKCJfd3BjZjciLCIyNDciKTsgZmQuYXBwZW5kKCJfd3BjZjdfdmVyc2lvbiIsIjUiKTsgZmQuYXBwZW5kKCJfd3BjZjdfbG9jYWxlIiwiZWwiKTsgZmQuYXBwZW5kKCJfd3BjZjdfdW5pdF90YWciLCJ3cGNmNy1mMjQ3LW8xIik7IGZkLmFwcGVuZCgiX3dwY2Y3X2NvbnRhaW5lcl9wb3N0IiwiMCIpOwogICBpZih0KSBmZC5hcHBlbmQoIl93cGNmN19yZWNhcHRjaGFfcmVzcG9uc2UiLHQpOwogICBmZC5hcHBlbmQoInlvdXItbmFtZSIsJCgiYW5hbWUiKS52YWx1ZS50cmltKCkpOyBmZC5hcHBlbmQoInlvdXItZW1haWwiLGVtLnZhbHVlLnRyaW0oKSk7IGZkLmFwcGVuZCgibWVudS05MDciLCQoImFzdWJqIikudmFsdWUpOyBmZC5hcHBlbmQoInlvdXItbWVzc2FnZSIsJCgiYW1zZyIpLnZhbHVlLnRyaW0oKSk7CiAgIHJldHVybiBmZXRjaCgiL3dwLWpzb24vY29udGFjdC1mb3JtLTcvdjEvY29udGFjdC1mb3Jtcy8yNDcvZmVlZGJhY2siLHttZXRob2Q6IlBPU1QiLGJvZHk6ZmR9KS50aGVuKGZ1bmN0aW9uKHIpeyByZXR1cm4gci5qc29uKCk7IH0pOwogIH0pLnRoZW4oZnVuY3Rpb24oail7CiAgIGlmKCFqIHx8IGouc3RhdHVzIT09Im1haWxfc2VudCIpIHRocm93IG5ldyBFcnJvcigiZmFpbCIpOwogICBzdC5jbGFzc05hbWU9InN0YXR1cyBvayI7IHN0LmhpZGRlbj1mYWxzZTsgc3QuaW5uZXJIVE1MPSI8Yj7Om86szrLOsc68zrUgz4TOt869IM61z4HPjs+EzrfPg86uIM+DzrHPgi48L2I+IM6YzrEgz4POsc+CIM6xz4DOsc69z4TOrs+Dzr/Phc68zrUgz4PPjc69z4TOv868zrEgz4PPhM6/IGVtYWlsIM+DzrHPgi4iOwogICBbImFuYW1lIiwiYWVtYWlsIiwiYW1zZyJdLmZvckVhY2goZnVuY3Rpb24oaWQpeyAkKGlkKS52YWx1ZT0iIjsgfSk7CiAgfSkuY2F0Y2goZnVuY3Rpb24oKXsKICAgc3QuY2xhc3NOYW1lPSJzdGF0dXMgZXJyIjsgc3QuaGlkZGVuPWZhbHNlOyBzdC5pbm5lckhUTUw9IjxiPs6XIM61z4HPjs+EzrfPg863IM60zrXOvSDPg8+EzqzOu864zrfOus61LjwvYj4gzpPPgc6sz4jPhM61IM68zrHPgiDPg8+Ezr8gPGI+emlsbGlzYXBhcnRtZW50c0BnbWFpbC5jb208L2I+IM6uIM66zrHOu86tz4PPhM61IM+Dz4TOvyA8Yj4rMzAgMjM4NDAgOTE1MjY8L2I+LiI7CiAgfSkudGhlbihmdW5jdGlvbigpeyBidG4uZGlzYWJsZWQ9ZmFsc2U7IGJ0bi50ZXh0Q29udGVudD0izpHPgM6/z4PPhM6/zrvOriDOtc+Bz47PhM63z4POt8+CIjsgfSk7CiB9KTsKfQoKdmFyIGY9JCgiYm9va0Zvcm0iKTsKaWYoIWYpIHJldHVybjsKdmFyIENGN19JRD01MTQ7CnZhciBST09NT1BUPXsiRGVsdXhlIM60zq/Ous67zrnOvc6/ICgzMCDPhC7OvC4pIjoiRGVsdXhlIM60zq/Ous67zrnOvc6/ICgzMM+EzrwpIiwiU3VwZXJpb3IgzrTOr866zrvOuc69zr8gKDI1IM+ELs68LikiOiJTdXBlcmlvciDOtM6vzrrOu865zr3OvyAoMjXPhM68KSIsIlN0YW5kYXJkIM60zq/Ous67zrnOvc6/ICgyMiDPhC7OvC4pIjoiU3RhbmRhcmQgzrTOr866zrvOuc69zr8gKDIyz4TOvCkiLCJTdGFuZGFyZCDOtM6vzrrOu865zr3OvyAoMjAgz4QuzrwuKSI6IlN0YW5kYXJkIM60zq/Ous67zrnOvc6/ICgyMM+EzrwpIn07CnZhciBLRVlTPXsiZGVsdXhlIjoiRGVsdXhlIM60zq/Ous67zrnOvc6/ICgzMCDPhC7OvC4pIiwic3VwZXJpb3IiOiJTdXBlcmlvciDOtM6vzrrOu865zr3OvyAoMjUgz4QuzrwuKSIsInN0YW5kYXJkLTIyIjoiU3RhbmRhcmQgzrTOr866zrvOuc69zr8gKDIyIM+ELs68LikiLCJzdGFuZGFyZC0yMCI6IlN0YW5kYXJkIM60zq/Ous67zrnOvc6/ICgyMCDPhC7OvC4pIiwiYWxsIjoizozOu86/z4Igzr8gzr7Otc69z47Ovc6xz4IgKDQgzrTPic68zqzPhM65zrEpIn07CmZ1bmN0aW9uIHBhZChuKXsgcmV0dXJuIChuPDEwPyIwIjoiIikrbjsgfQpmdW5jdGlvbiBpc28oZCl7IHJldHVybiBkLmdldEZ1bGxZZWFyKCkrIi0iK3BhZChkLmdldE1vbnRoKCkrMSkrIi0iK3BhZChkLmdldERhdGUoKSk7IH0KZnVuY3Rpb24gZm10KHMpeyB2YXIgcD1zLnNwbGl0KCItIik7IHJldHVybiBwWzJdKyIvIitwWzFdKyIvIitwWzBdOyB9CnZhciB0b2RheT1uZXcgRGF0ZSgpOyB0b2RheS5zZXRIb3VycygwLDAsMCwwKTsKJCgiY2hlY2tpbiIpLm1pbj1pc28odG9kYXkpOwp0cnl7IHZhciBxPW5ldyBVUkxTZWFyY2hQYXJhbXMobG9jYXRpb24uc2VhcmNoKS5nZXQoInJvb20iKTsgaWYocSAmJiBLRVlTW3FdKSAkKCJyb29tIikudmFsdWU9S0VZU1txXTsgfWNhdGNoKGUpe30KZnVuY3Rpb24gbmlnaHRzKCl7IHZhciBhPSQoImNoZWNraW4iKS52YWx1ZSwgYj0kKCJjaGVja291dCIpLnZhbHVlOyBpZighYXx8IWIpIHJldHVybiBudWxsOyByZXR1cm4gTWF0aC5yb3VuZCgobmV3IERhdGUoYiktbmV3IERhdGUoYSkpLzg2NDAwMDAwKTsgfQpmdW5jdGlvbiBwZW9wbGUoKXsgcmV0dXJuICgrJCgiYWR1bHRzIikudmFsdWV8fDApKygrJCgia2lkcyIpLnZhbHVlfHwwKTsgfQpmdW5jdGlvbiB1cGRhdGUoKXsKIGlmKCQoImNoZWNraW4iKS52YWx1ZSl7IHZhciBkPW5ldyBEYXRlKCQoImNoZWNraW4iKS52YWx1ZSk7IGQuc2V0RGF0ZShkLmdldERhdGUoKSsxKTsgJCgiY2hlY2tvdXQiKS5taW49aXNvKGQpOyBpZigkKCJjaGVja291dCIpLnZhbHVlICYmICQoImNoZWNrb3V0IikudmFsdWU8PSQoImNoZWNraW4iKS52YWx1ZSkgJCgiY2hlY2tvdXQiKS52YWx1ZT1pc28oZCk7IH0KIHZhciBuPW5pZ2h0cygpLCBwPXBlb3BsZSgpLCBzPSQoInN1bW1hcnkiKTsKIGlmKG4gJiYgbj4wKSBzLmlubmVySFRNTD0nPHNwYW4+PGI+JytuKyc8L2I+ICcrKG49PT0xPyfOtM65zrHOvc+FzrrPhM6tz4HOtc+Fz4POtyc6J860zrnOsc69z4XOus+EzrXPgc61z43Pg861zrnPgicpKyc8L3NwYW4+PHNwYW4+JytmbXQoJCgiY2hlY2tpbiIpLnZhbHVlKSsnIOKGkiAnK2ZtdCgkKCJjaGVja291dCIpLnZhbHVlKSsnPC9zcGFuPjxzcGFuPjxiPicrcCsnPC9iPiAnKyhwPT09MT8nzqzPhM6/zrzOvyc6J86sz4TOv868zrEnKSsnPC9zcGFuPic7CiBlbHNlIHMuaW5uZXJIVE1MPSc8c3Bhbj7Olc+AzrnOu86tzr7PhM61IM63zrzOtc+Bzr/OvM63zr3Or861z4IgzrPOuc6xIM69zrEgzrTOtc6vz4TOtSDPhM65z4IgzrTOuc6xzr3Phc66z4TOtc+BzrXPjc+DzrXOuc+CLjwvc3Bhbj4nOwp9ClsiY2hlY2tpbiIsImNoZWNrb3V0IiwiYWR1bHRzIiwia2lkcyIsInJvb20iXS5mb3JFYWNoKGZ1bmN0aW9uKGlkKXsgJChpZCkuYWRkRXZlbnRMaXN0ZW5lcigiY2hhbmdlIix1cGRhdGUpOyB9KTsKWyJhZHVsdHMiLCJraWRzIl0uZm9yRWFjaChmdW5jdGlvbihpZCl7ICQoaWQpLmFkZEV2ZW50TGlzdGVuZXIoImlucHV0Iix1cGRhdGUpOyB9KTsKZnVuY3Rpb24gc2V0RXJyKGlkLG1zZyl7IHZhciBmbD0kKGlkKS5jbG9zZXN0KCIuZmllbGQiKTsgZmwuY2xhc3NMaXN0LnRvZ2dsZSgiYmFkIiwhIW1zZyk7IGZsLnF1ZXJ5U2VsZWN0b3IoIi5tc2ciKS50ZXh0Q29udGVudD1tc2d8fCIiOyB9CmZ1bmN0aW9uIHZhbGlkYXRlKCl7CiB2YXIgb2s9dHJ1ZSwgcmVxPXtmbmFtZToizpPPgc6sz4jPhM61IM+Ezr8gz4zOvc6/zrzOrCDPg86xz4IuIixsbmFtZToizpPPgc6sz4jPhM61IM+Ezr8gzrXPgM+Ozr3Phc68z4wgz4POsc+CLiIscGhvbmU6Is6Tz4HOrM+Iz4TOtSDOrc69zrEgz4TOt867zq3Phs+Jzr3OvyDOtc+AzrnOus6/zrnOvc+Jzr3Or86xz4IuIixjaGVja2luOiLOlc+AzrnOu86tzr7PhM61IM63zrzOtc+Bzr/OvM63zr3Or86xIM6sz4bOuc6+zrfPgi4iLGNoZWNrb3V0OiLOlc+AzrnOu86tzr7PhM61IM63zrzOtc+Bzr/OvM63zr3Or86xIM6xzr3Osc+Hz47Pgc63z4POt8+CLiJ9OwogT2JqZWN0LmtleXMocmVxKS5mb3JFYWNoKGZ1bmN0aW9uKGlkKXsgdmFyIGJhZD0hJChpZCkudmFsdWUudHJpbSgpOyBzZXRFcnIoaWQsYmFkP3JlcVtpZF06IiIpOyBpZihiYWQpIG9rPWZhbHNlOyB9KTsKIGlmKCEvXlteXHNAXStAW15cc0BdK1wuW15cc0BdKyQvLnRlc3QoJCgiZW1haWwiKS52YWx1ZS50cmltKCkpKXsgc2V0RXJyKCJlbWFpbCIsIs6Tz4HOrM+Iz4TOtSDOrc69zrEgzq3Os866z4XPgc6/IGVtYWlsLCDPgC7Phy4gb25vbWFAZ21haWwuY29tLiIpOyBvaz1mYWxzZTsgfSBlbHNlIHNldEVycigiZW1haWwiLCIiKTsKIHZhciBuPW5pZ2h0cygpOwogaWYoJCgiY2hlY2tpbiIpLnZhbHVlICYmICQoImNoZWNraW4iKS52YWx1ZTxpc28odG9kYXkpKXsgc2V0RXJyKCJjaGVja2luIiwizpcgzqzPhs65zr7OtyDOtM61zr0gzrzPgM6/z4HOtc6vIM69zrEgzrXOr869zrHOuSDPg861IM+AzrHPgc61zrvOuM6/zr3PhM65zrrOriDOt868zrXPgc6/zrzOt869zq/OsS4iKTsgb2s9ZmFsc2U7IH0KIGlmKG4hPT1udWxsICYmIG48PTApeyBzZXRFcnIoImNoZWNrb3V0IiwizpcgzrHOvc6xz4fPjs+BzrfPg863IM+Az4HOrc+AzrXOuSDOvc6xIM61zq/Ovc6xzrkgzrzOtc+Ezqwgz4TOt869IM6sz4bOuc6+zrcuIik7IG9rPWZhbHNlOyB9CiB2YXIgbWF4PSskKCJyb29tIikuc2VsZWN0ZWRPcHRpb25zWzBdLmRhdGFzZXQubWF4OwogaWYoKCskKCJhZHVsdHMiKS52YWx1ZXx8MCk8MSl7IHNldEVycigiYWR1bHRzIiwizqfPgc61zrnOrM62zrXPhM6xzrkgz4TOv8+FzrvOrM+HzrnPg8+Ezr/OvSDOrc69zrHPgiDOtc69zq7Ou865zrrOsc+CLiIpOyBvaz1mYWxzZTsgfSBlbHNlIHNldEVycigiYWR1bHRzIiwiIik7CiBpZihwZW9wbGUoKT5tYXgpeyBzZXRFcnIoInJvb20iLCLOpM6/IM60z4nOvM6sz4TOuc6/IM6xz4XPhM+MIM+Hz4nPgc6szrXOuSDOrc+Jz4IgIittYXgrIiDOrM+Ezr/OvM6xLiDOlc+AzrnOu86tzr7PhM61IM6szrvOu86/IM60z4nOvM6sz4TOuc6/IM6uIMKrzp/PgM6/zrnOv860zq7PgM6/z4TOtSDOtM65zrHOuM6tz4POuc68zr/Cuy4iKTsgb2s9ZmFsc2U7IH0gZWxzZSBzZXRFcnIoInJvb20iLCIiKTsKIHJldHVybiBvazsKfQpmdW5jdGlvbiBkZXRhaWxzKCl7IHJldHVybiBbIs6Uz4nOvM6sz4TOuc6/OiAiKyQoInJvb20iKS52YWx1ZSwizpTOuc6xzr3Phc66z4TOtc+BzrXPjc+DzrXOuc+COiAiK25pZ2h0cygpLCLOlc69zq7Ou865zrrOtc+COiAiKyQoImFkdWx0cyIpLnZhbHVlKyIsIM6gzrHOuc60zrnOrDogIiskKCJraWRzIikudmFsdWUsIiIsIs6czq7Ovc+FzrzOsTogIisoJCgibm90ZXMiKS52YWx1ZXx8Ii0iKV0uam9pbigiXG4iKTsgfQpmdW5jdGlvbiB0b2tlbigpeyByZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24ocmVzKXsgdHJ5eyBpZih3aW5kb3cuZ3JlY2FwdGNoYSAmJiB3aW5kb3cud3BjZjdfcmVjYXB0Y2hhICYmIHdwY2Y3X3JlY2FwdGNoYS5zaXRla2V5KXsgZ3JlY2FwdGNoYS5yZWFkeShmdW5jdGlvbigpeyBncmVjYXB0Y2hhLmV4ZWN1dGUod3BjZjdfcmVjYXB0Y2hhLnNpdGVrZXkse2FjdGlvbjoiY29udGFjdGZvcm0ifSkudGhlbihyZXMsZnVuY3Rpb24oKXsgcmVzKCIiKTsgfSk7IH0pOyB9IGVsc2UgcmVzKCIiKTsgfWNhdGNoKGUpeyByZXMoIiIpOyB9IH0pOyB9CmYuYWRkRXZlbnRMaXN0ZW5lcigic3VibWl0IixmdW5jdGlvbihlKXsKIGUucHJldmVudERlZmF1bHQoKTsKIHZhciBzdD0kKCJzdGF0dXMiKTsKIGlmKCF2YWxpZGF0ZSgpKXsgdmFyIGI9ZG9jdW1lbnQucXVlcnlTZWxlY3RvcigiI3ppbGxpcyAuYmFkIGlucHV0LCAjemlsbGlzIC5iYWQgc2VsZWN0Iik7IGlmKGIpIGIuZm9jdXMoKTsgcmV0dXJuOyB9CiBpZigkKCJocGYiKS52YWx1ZSkgcmV0dXJuOwogdmFyIGJ0bj0kKCJzdWJtaXRCdG4iKTsgYnRuLmRpc2FibGVkPXRydWU7IGJ0bi50ZXh0Q29udGVudD0izpHPgM6/z4PPhM6/zrvOruKApiI7CiB0b2tlbigpLnRoZW4oZnVuY3Rpb24odCl7CiAgdmFyIGZkPW5ldyBGb3JtRGF0YSgpOwogIGZkLmFwcGVuZCgiX3dwY2Y3IixDRjdfSUQpOyBmZC5hcHBlbmQoIl93cGNmN192ZXJzaW9uIiwiNSIpOyBmZC5hcHBlbmQoIl93cGNmN19sb2NhbGUiLCJlbCIpOyBmZC5hcHBlbmQoIl93cGNmN191bml0X3RhZyIsIndwY2Y3LWYiK0NGN19JRCsiLW8xIik7IGZkLmFwcGVuZCgiX3dwY2Y3X2NvbnRhaW5lcl9wb3N0IiwiMCIpOwogIGlmKHQpIGZkLmFwcGVuZCgiX3dwY2Y3X3JlY2FwdGNoYV9yZXNwb25zZSIsdCk7CiAgZmQuYXBwZW5kKCJ5b3VyLW5hbWUiLCQoImZuYW1lIikudmFsdWUudHJpbSgpKTsgZmQuYXBwZW5kKCJlcG9uaW1vLXNvc3RvIiwkKCJsbmFtZSIpLnZhbHVlLnRyaW0oKSk7IGZkLmFwcGVuZCgieW91ci1lbWFpbCIsJCgiZW1haWwiKS52YWx1ZS50cmltKCkpOyBmZC5hcHBlbmQoIlBob25lbnVtYmVyIiwkKCJwaG9uZSIpLnZhbHVlLnRyaW0oKSk7CiAgZmQuYXBwZW5kKCJkb21hdGlvIixST09NT1BUWyQoInJvb20iKS52YWx1ZV18fCJTdXBlcmlvciDOtM6vzrrOu865zr3OvyAoMjXPhM68KSIpOwogIGZkLmFwcGVuZCgiZGF0ZS1hZml4aSIsJCgiY2hlY2tpbiIpLnZhbHVlKTsgZmQuYXBwZW5kKCJkYXRlLWFuYWhvcmlzaSIsJCgiY2hlY2tvdXQiKS52YWx1ZSk7CiAgZmQuYXBwZW5kKCJlcm90aXNlaXMiLGRldGFpbHMoKSk7CiAgcmV0dXJuIGZldGNoKCIvd3AtanNvbi9jb250YWN0LWZvcm0tNy92MS9jb250YWN0LWZvcm1zLyIrQ0Y3X0lEKyIvZmVlZGJhY2siLHttZXRob2Q6IlBPU1QiLGJvZHk6ZmR9KS50aGVuKGZ1bmN0aW9uKHIpeyByZXR1cm4gci5qc29uKCk7IH0pOwogfSkudGhlbihmdW5jdGlvbihqKXsKICBpZighaiB8fCBqLnN0YXR1cyE9PSJtYWlsX3NlbnQiKSB0aHJvdyBuZXcgRXJyb3IoKGogJiYgai5zdGF0dXMpfHwiZmFpbCIpOwogIHN0LmNsYXNzTmFtZT0ic3RhdHVzIG9rIjsgc3QuaGlkZGVuPWZhbHNlOwogIHN0LmlubmVySFRNTD0iPGI+zpvOrM6yzrHOvM61IM+Ezr8gzrHOr8+EzrfOvM6sIM+DzrHPgi48L2I+IM6YzrEgz4POsc+CIM6xz4DOsc69z4TOrs+Dzr/Phc68zrUgz4PPjc69z4TOv868zrEgzrzOtSDOtM65zrHOuM61z4POuc68z4zPhM63z4TOsSDOus6xzrkgz4TOuc68zq4uIjsKICBbImZuYW1lIiwibG5hbWUiLCJlbWFpbCIsInBob25lIiwiY2hlY2tpbiIsImNoZWNrb3V0Iiwibm90ZXMiXS5mb3JFYWNoKGZ1bmN0aW9uKGlkKXsgJChpZCkudmFsdWU9IiI7IH0pOyB1cGRhdGUoKTsKIH0pLmNhdGNoKGZ1bmN0aW9uKCl7CiAgdmFyIHR4dD0izpHOr8+EzrfOvM6xIM66z4HOrM+EzrfPg863z4Ig4oCTIFppbGxpcyBBcGFydG1lbnRzXG4iKyQoImZuYW1lIikudmFsdWUrIiAiKyQoImxuYW1lIikudmFsdWUrIlxuIiskKCJlbWFpbCIpLnZhbHVlKyIgwrcgIiskKCJwaG9uZSIpLnZhbHVlKyJcbs6Gz4bOuc6+zrc6ICIrZm10KCQoImNoZWNraW4iKS52YWx1ZSkrIiAgzpHOvc6xz4fPjs+BzrfPg863OiAiK2ZtdCgkKCJjaGVja291dCIpLnZhbHVlKSsiXG4iK2RldGFpbHMoKTsKICBzdC5jbGFzc05hbWU9InN0YXR1cyBlcnIiOyBzdC5oaWRkZW49ZmFsc2U7CiAgc3QuaW5uZXJIVE1MPSc8Yj7OpM6/IM6xzq/PhM63zrzOsSDOtM61zr0gz4PPhM6szrvOuM63zrrOtS48L2I+IM6jz4TOtc6vzrvPhM61IM68zrHPgiDPhM6/IM+AzrHPgc6xzrrOrM+Ez4kgzrrOtc6vzrzOtc69zr8gz4PPhM6/IDxiPnppbGxpc2FwYXJ0bWVudHNAZ21haWwuY29tPC9iPiDOriDOus6xzrvOrc+Dz4TOtSDPg8+Ezr8gPGI+KzMwIDIzODQwIDkxNTI2PC9iPi48cHJlIGlkPSJtc2dUZXh0Ij48L3ByZT48YSBjbGFzcz0iYnRuIGJ0bi1saW5lIiBocmVmPSJtYWlsdG86emlsbGlzYXBhcnRtZW50c0BnbWFpbC5jb20/c3ViamVjdD0nK2VuY29kZVVSSUNvbXBvbmVudCgizpHOr8+EzrfOvM6xIM66z4HOrM+EzrfPg863z4IiKSsnJmJvZHk9JytlbmNvZGVVUklDb21wb25lbnQodHh0KSsnIj7Ohs69zr/Ouc6zzrzOsSDPg8+Ezr8gZW1haWw8L2E+JzsKICAkKCJtc2dUZXh0IikudGV4dENvbnRlbnQ9dHh0OwogfSkudGhlbihmdW5jdGlvbigpeyBidG4uZGlzYWJsZWQ9ZmFsc2U7IGJ0bi50ZXh0Q29udGVudD0izpHPgM6/z4PPhM6/zrvOriDOsc65z4TOrs68zrHPhM6/z4IiOyB9KTsKfSk7CnVwZGF0ZSgpOwp9KSgpOwoKKGZ1bmN0aW9uKCl7CiB2YXIgcm9vdD1kb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiemlsbGlzIik7CiBpZighcm9vdCkgcmV0dXJuOwogaWYod2luZG93Lm1hdGNoTWVkaWEgJiYgbWF0Y2hNZWRpYSgiKHByZWZlcnMtcmVkdWNlZC1tb3Rpb246IHJlZHVjZSkiKS5tYXRjaGVzKSByZXR1cm47CiBmdW5jdGlvbiBsb2FkKHNyYyl7IHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbihyZXMscmVqKXsgdmFyIHM9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic2NyaXB0Iik7IHMuc3JjPXNyYzsgcy5vbmxvYWQ9cmVzOyBzLm9uZXJyb3I9cmVqOyBkb2N1bWVudC5oZWFkLmFwcGVuZENoaWxkKHMpOyB9KTsgfQogUHJvbWlzZS5hbGwoW2xvYWQoImh0dHBzOi8vY2RuanMuY2xvdWRmbGFyZS5jb20vYWpheC9saWJzL2dzYXAvMy4xMi41L2dzYXAubWluLmpzIiksIGxvYWQoImh0dHBzOi8vY2RuLmpzZGVsaXZyLm5ldC9ucG0vbGVuaXNAMS4xLjEzL2Rpc3QvbGVuaXMubWluLmpzIildKQogIC50aGVuKGZ1bmN0aW9uKCl7IHJldHVybiBsb2FkKCJodHRwczovL2NkbmpzLmNsb3VkZmxhcmUuY29tL2FqYXgvbGlicy9nc2FwLzMuMTIuNS9TY3JvbGxUcmlnZ2VyLm1pbi5qcyIpOyB9KQogIC50aGVuKHJ1bikuY2F0Y2goZnVuY3Rpb24oKXt9KTsKIGZ1bmN0aW9uIHNwbGl0KGVsKXsKICB2YXIgd2Fsaz1mdW5jdGlvbihub2RlKXsgW10uc2xpY2UuY2FsbChub2RlLmNoaWxkTm9kZXMpLmZvckVhY2goZnVuY3Rpb24obil7CiAgIGlmKG4ubm9kZVR5cGU9PT0zKXsgdmFyIGZyYWc9ZG9jdW1lbnQuY3JlYXRlRG9jdW1lbnRGcmFnbWVudCgpOyBuLnRleHRDb250ZW50LnNwbGl0KC8oXHMrKS8pLmZvckVhY2goZnVuY3Rpb24odyl7IGlmKCF3KSByZXR1cm47IGlmKC9eXHMrJC8udGVzdCh3KSkgZnJhZy5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZSh3KSk7IGVsc2UgeyB2YXIgcz1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJzcGFuIik7IHMuY2xhc3NOYW1lPSJ6dyI7IHMudGV4dENvbnRlbnQ9dzsgZnJhZy5hcHBlbmRDaGlsZChzKTsgfSB9KTsgbm9kZS5yZXBsYWNlQ2hpbGQoZnJhZyxuKTsgfQogICBlbHNlIGlmKG4ubm9kZVR5cGU9PT0xICYmICFuLmNsYXNzTGlzdC5jb250YWlucygienciKSkgd2FsayhuKTsKICB9KTsgfTsKICB3YWxrKGVsKTsgcmV0dXJuIGVsLnF1ZXJ5U2VsZWN0b3JBbGwoIi56dyIpOwogfQogZnVuY3Rpb24gY291bnRXcmFwKGVsKXsKICB2YXIgbj1lbC5maXJzdENoaWxkOyBpZighbiB8fCBuLm5vZGVUeXBlIT09MykgcmV0dXJuOwogIHZhciBtPW4udGV4dENvbnRlbnQubWF0Y2goL14oXHMqKShcZCsoPzosXGQrKT8pKC4qKSQvKTsgaWYoIW0pIHJldHVybjsKICB2YXIgc3A9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic3BhbiIpOyBzcC5jbGFzc05hbWU9InpjIjsgc3Auc2V0QXR0cmlidXRlKCJkYXRhLWNvdW50IixtWzJdLnJlcGxhY2UoIiwiLCIuIikpOyBzcC50ZXh0Q29udGVudD1tWzJdOwogIGVsLnJlcGxhY2VDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShtWzNdKSxuKTsgZWwuaW5zZXJ0QmVmb3JlKHNwLGVsLmZpcnN0Q2hpbGQpOwogfQogZnVuY3Rpb24gcnVuKCl7CiAgdmFyIGdzYXA9d2luZG93LmdzYXAsIFNUPXdpbmRvdy5TY3JvbGxUcmlnZ2VyOyBnc2FwLnJlZ2lzdGVyUGx1Z2luKFNUKTsKICB2YXIgbGVuaXM9bmV3IExlbmlzKHtkdXJhdGlvbjoxLjE1LHNtb290aFdoZWVsOnRydWV9KTsKICB3aW5kb3cuekxlbmlzPWxlbmlzOwogIGxlbmlzLm9uKCJzY3JvbGwiLFNULnVwZGF0ZSk7CiAgZ3NhcC50aWNrZXIuYWRkKGZ1bmN0aW9uKHQpeyBsZW5pcy5yYWYodCoxMDAwKTsgfSk7CiAgZ3NhcC50aWNrZXIubGFnU21vb3RoaW5nKDApOwogIHJvb3QucXVlcnlTZWxlY3RvckFsbCgnYVtocmVmXj0iIyJdJykuZm9yRWFjaChmdW5jdGlvbihhKXsgYS5hZGRFdmVudExpc3RlbmVyKCJjbGljayIsZnVuY3Rpb24oZSl7IHZhciBpZD1hLmdldEF0dHJpYnV0ZSgiaHJlZiIpOyBpZihpZC5sZW5ndGg8MikgcmV0dXJuOyB2YXIgdD1kb2N1bWVudC5xdWVyeVNlbGVjdG9yKGlkKTsgaWYoIXQpIHJldHVybjsgZS5wcmV2ZW50RGVmYXVsdCgpOyBsZW5pcy5zY3JvbGxUbyh0LHtvZmZzZXQ6LTg0fSk7IH0pOyB9KTsKICB2YXIgdG9wPXJvb3QucXVlcnlTZWxlY3RvcigiLnRvcCIpLCBsYXN0PTA7CiAgaWYodG9wKXsgdG9wLnN0eWxlLnRyYW5zaXRpb249InRyYW5zZm9ybSAuMzVzIGVhc2UiOyBsZW5pcy5vbigic2Nyb2xsIixmdW5jdGlvbihlKXsgdmFyIHk9ZS5zY3JvbGw7IGlmKHk+NTAwICYmIHk+bGFzdCszKSB0b3Auc3R5bGUudHJhbnNmb3JtPSJ0cmFuc2xhdGVZKC0xMTAlKSI7IGVsc2UgaWYoeTxsYXN0LTMgfHwgeTw1MDApIHRvcC5zdHlsZS50cmFuc2Zvcm09IiI7IGxhc3Q9eTsgfSk7IH0KICB2YXIgaDE9cm9vdC5xdWVyeVNlbGVjdG9yKCIuaGVybyBoMSwgLnBoZXJvIGgxIik7CiAgaWYoaDEpewogICBnc2FwLmZyb20oc3BsaXQoaDEpLHtvcGFjaXR5OjAsZmlsdGVyOiJibHVyKDE0cHgpIix5OjI4LGR1cmF0aW9uOjEuMSxzdGFnZ2VyOi4wNyxlYXNlOiJwb3dlcjMub3V0IixkZWxheTouMX0pOwogICBnc2FwLmZyb20ocm9vdC5xdWVyeVNlbGVjdG9yQWxsKCIuaGVybyAuZXllYnJvdywuaGVybyBwLC5oZXJvIC5hY3Rpb25zLC5oZXJvIC5mYWN0cyA+IGRpdiwucGhlcm8gLmNydW1icywucGhlcm8gLmV5ZWJyb3csLnBoZXJvIHAsLnBoZXJvIC5zcGVjIikse29wYWNpdHk6MCx5OjIyLGR1cmF0aW9uOi45LHN0YWdnZXI6LjA4LGVhc2U6InBvd2VyMi5vdXQiLGRlbGF5Oi40NX0pOwogIH0KICByb290LnF1ZXJ5U2VsZWN0b3JBbGwoIi5oZXJvIGltZy5iZywucGhlcm8gaW1nLmJnIikuZm9yRWFjaChmdW5jdGlvbihpbWcpewogICBnc2FwLmZyb21UbyhpbWcse3NjYWxlOjEuMTh9LHtzY2FsZToxLjA0LGR1cmF0aW9uOjIuNCxlYXNlOiJwb3dlcjIub3V0In0pOwogICBnc2FwLnRvKGltZyx7eVBlcmNlbnQ6MTQsZWFzZToibm9uZSIsc2Nyb2xsVHJpZ2dlcjp7dHJpZ2dlcjppbWcucGFyZW50RWxlbWVudCxzdGFydDoidG9wIHRvcCIsZW5kOiJib3R0b20gdG9wIixzY3J1Yjp0cnVlfX0pOwogIH0pOwogIHJvb3QucXVlcnlTZWxlY3RvckFsbCgic2VjdGlvbjpub3QoLmhlcm8pOm5vdCgucGhlcm8pIGgyIikuZm9yRWFjaChmdW5jdGlvbihoKXsKICAgdmFyIHI9aC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTsgdmFyIHc9c3BsaXQoaCk7CiAgIGlmKHIudG9wPmlubmVySGVpZ2h0KSBnc2FwLnNldCh3LHtvcGFjaXR5OjAseToiMC41ZW0iLGZpbHRlcjoiYmx1cig4cHgpIn0pOwogICBnc2FwLnRvKHcse29wYWNpdHk6MSx5OjAsZmlsdGVyOiJibHVyKDBweCkiLGR1cmF0aW9uOi44NSxzdGFnZ2VyOi4wNSxlYXNlOiJwb3dlcjMub3V0IixzY3JvbGxUcmlnZ2VyOnt0cmlnZ2VyOmgsc3RhcnQ6InRvcCA4OCUiLG9uY2U6dHJ1ZX19KTsKICB9KTsKICB2YXIgc2VsPSIucm9vbSwuYW1lbiA+IGRpdiwubW9zYWljID4gYSwuZ2FsID4gYSwucXVvdGVzIGZpZ3VyZSwuaW5mby1ncmlkID4gZGl2LC5mYXEgZGV0YWlscywuZGlzdCBsaSwuY2FyZCwubWluaSBhLC5pbnRybyAucGljcywucHJvc2UgcCwuc2lkZSwudGJsLC5mZWF0IGxpLC5jb250YWN0LWxpc3QgPiAqLCNib29rRm9ybSwuc2NvcmUsLnRlbXAsLmN0YSAuYWN0aW9ucywubWFwYm94LC5sZWFkIjsKICB2YXIgaXRlbXM9W10uc2xpY2UuY2FsbChyb290LnF1ZXJ5U2VsZWN0b3JBbGwoc2VsKSkuZmlsdGVyKGZ1bmN0aW9uKGVsKXsgcmV0dXJuICFlbC5jbG9zZXN0KCIuaGVybywucGhlcm8iKSAmJiBlbC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS50b3A+aW5uZXJIZWlnaHQqMC45NTsgfSk7CiAgZ3NhcC5zZXQoaXRlbXMse29wYWNpdHk6MCx5OjQ0fSk7CiAgU1QuYmF0Y2goaXRlbXMse3N0YXJ0OiJ0b3AgOTIlIixvbmNlOnRydWUsb25FbnRlcjpmdW5jdGlvbihiKXsgZ3NhcC50byhiLHtvcGFjaXR5OjEseTowLGR1cmF0aW9uOi45NSxzdGFnZ2VyOi4wOSxlYXNlOiJwb3dlcjMub3V0In0pOyB9fSk7CiAgcm9vdC5xdWVyeVNlbGVjdG9yQWxsKCIucm9vbSAucGggaW1nLC5taW5pIGltZywuaW50cm8gLnBpY3MgaW1nIikuZm9yRWFjaChmdW5jdGlvbihpbWcpewogICBpbWcuc3R5bGUudHJhbnNpdGlvbj0ibm9uZSI7CiAgIGdzYXAuZnJvbVRvKGltZyx7eVBlcmNlbnQ6LTUsc2NhbGU6MS4xMn0se3lQZXJjZW50OjUsc2NhbGU6MS4xMixlYXNlOiJub25lIixzY3JvbGxUcmlnZ2VyOnt0cmlnZ2VyOmltZy5wYXJlbnRFbGVtZW50LHN0YXJ0OiJ0b3AgYm90dG9tIixlbmQ6ImJvdHRvbSB0b3AiLHNjcnViOnRydWV9fSk7CiAgfSk7CiAgcm9vdC5xdWVyeVNlbGVjdG9yQWxsKCIua20sLnRlbXAgYiwuZmFjdHMgYiwuc2NvcmUgYiwuc3RhdCBiIikuZm9yRWFjaChjb3VudFdyYXApOwogIHJvb3QucXVlcnlTZWxlY3RvckFsbCgiLnpjIikuZm9yRWFjaChmdW5jdGlvbihlbCl7CiAgIHZhciBlbmQ9cGFyc2VGbG9hdChlbC5nZXRBdHRyaWJ1dGUoImRhdGEtY291bnQiKSksIGRlYz0oZWwuZ2V0QXR0cmlidXRlKCJkYXRhLWNvdW50Iikuc3BsaXQoIi4iKVsxXXx8IiIpLmxlbmd0aCwgbz17djowfTsKICAgZ3NhcC50byhvLHt2OmVuZCxkdXJhdGlvbjoxLjgsZWFzZToicG93ZXIyLm91dCIsc2Nyb2xsVHJpZ2dlcjp7dHJpZ2dlcjplbCxzdGFydDoidG9wIDkyJSIsb25jZTp0cnVlfSxvblVwZGF0ZTpmdW5jdGlvbigpeyBlbC50ZXh0Q29udGVudD1vLnYudG9GaXhlZChkZWMpLnJlcGxhY2UoIi4iLCIsIik7IH19KTsKICB9KTsKICByb290LnF1ZXJ5U2VsZWN0b3JBbGwoIi5idG4tZ29sZCIpLmZvckVhY2goZnVuY3Rpb24oYil7CiAgIHZhciB4VD1nc2FwLnF1aWNrVG8oYiwieCIse2R1cmF0aW9uOi40NSxlYXNlOiJwb3dlcjMifSksIHlUPWdzYXAucXVpY2tUbyhiLCJ5Iix7ZHVyYXRpb246LjQ1LGVhc2U6InBvd2VyMyJ9KTsKICAgYi5hZGRFdmVudExpc3RlbmVyKCJtb3VzZW1vdmUiLGZ1bmN0aW9uKGUpeyB2YXIgcj1iLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpOyB4VCgoZS5jbGllbnRYLXIubGVmdC1yLndpZHRoLzIpKi4zKTsgeVQoKGUuY2xpZW50WS1yLnRvcC1yLmhlaWdodC8yKSouNDUpOyB9KTsKICAgYi5hZGRFdmVudExpc3RlbmVyKCJtb3VzZWxlYXZlIixmdW5jdGlvbigpeyB4VCgwKTsgeVQoMCk7IH0pOwogIH0pOwogIGlmKG1hdGNoTWVkaWEoIihwb2ludGVyOmZpbmUpIikubWF0Y2hlcyl7CiAgIHJvb3QucXVlcnlTZWxlY3RvckFsbCgiLnJvb20sLmNhcmQiKS5mb3JFYWNoKGZ1bmN0aW9uKGMpewogICAgZ3NhcC5zZXQoYyx7dHJhbnNmb3JtUGVyc3BlY3RpdmU6MTAwMH0pOwogICAgYy5hZGRFdmVudExpc3RlbmVyKCJtb3VzZW1vdmUiLGZ1bmN0aW9uKGUpeyB2YXIgcj1jLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLCBweD0oZS5jbGllbnRYLXIubGVmdCkvci53aWR0aC0uNSwgcHk9KGUuY2xpZW50WS1yLnRvcCkvci5oZWlnaHQtLjU7IGdzYXAudG8oYyx7cm90YXRpb25ZOnB4KjUscm90YXRpb25YOi1weSo1LGR1cmF0aW9uOi42LGVhc2U6InBvd2VyMi5vdXQifSk7IH0pOwogICAgYy5hZGRFdmVudExpc3RlbmVyKCJtb3VzZWxlYXZlIixmdW5jdGlvbigpeyBnc2FwLnRvKGMse3JvdGF0aW9uWTowLHJvdGF0aW9uWDowLGR1cmF0aW9uOi44LGVhc2U6InBvd2VyMy5vdXQifSk7IH0pOwogICB9KTsKICB9CiAgcm9vdC5xdWVyeVNlbGVjdG9yQWxsKCIubWFycS10cmFjayIpLmZvckVhY2goZnVuY3Rpb24odCl7CiAgIHZhciB0dz1nc2FwLnRvKHQse3hQZXJjZW50Oi01MCxyZXBlYXQ6LTEsZHVyYXRpb246MzYsZWFzZToibm9uZSJ9KTsKICAgbGVuaXMub24oInNjcm9sbCIsZnVuY3Rpb24oZSl7IHZhciB2PU1hdGguYWJzKGUudmVsb2NpdHl8fDApOyBnc2FwLnRvKHR3LHt0aW1lU2NhbGU6MStNYXRoLm1pbih2LzUsNSksZHVyYXRpb246LjI1LG92ZXJ3cml0ZTp0cnVlLG9uQ29tcGxldGU6ZnVuY3Rpb24oKXsgZ3NhcC50byh0dyx7dGltZVNjYWxlOjEsZHVyYXRpb246MS40fSk7IH19KTsgfSk7CiAgfSk7CiAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoImxvYWQiLGZ1bmN0aW9uKCl7IFNULnJlZnJlc2goKTsgfSk7CiAgc2V0VGltZW91dChmdW5jdGlvbigpeyBTVC5yZWZyZXNoKCk7IH0sMTIwMCk7CiB9Cn0pKCk7Cg==