<?php

###############################################################################
# PHP Suchscript - Version 2.1.2                                              #
# copyright webdesign weisshart                                               #
# http://webdesign.weisshart.de                                               #
# dieser copyright Hinweis darf nicht entfernt werden!                        #
#                                                                             #
# Sie können dieses Script kostenlos einsetzen,                               #
# solange Sie die Links auf webdesign.weisshart.de unverändert intakt lassen. #
# Wenn Sie die Links auf webdesign.weisshart.de entfernen wollen,             #
# können Sie eine Lizenz erwerben bei                                         #
# http://webdesign.weisshart.de/suchen-lizenz.php                             #
###############################################################################

include("search_config.php");

$NCiR0aW1lX29sZCA9IDA7IC8vIGb8ciBkaWUgRm9ydHNjaHJpdHRzYW56ZWlnZQNCiR0aW1lX29sZCA9IDA7IC8vIGb8ciBkaWUgRm9ydHNjaHJpdHRzYW56ZWlnZQ="Ly8gTmV0dCwgZGFzcyBTaWUgc2ljaCBmdWVyIG1laW5lbiBzb3VyY2Vjb2RlIGludGVyZXNzaWVyZW4uIERlciBMaW5rIGF1ZiB3ZWJkZXNpZ24ud2Vpc3NoYXJ0LmRlIGRhcmYgbnVyIG5hY2ggRXJ3ZXJiIGVpbmVyIExpemVueiBlbnRmZXJudCB3ZXJkZW4hDS8vIEBpbmlfc2V0KCdkaXNwbGF5X2Vycm9ycycsICcxJyk7DQ1zZXRsb2NhbGUgKExDX0NUWVBFLCAnZGVfREUnKTsgLy8gc3RydG9sb3dlciBhdWNoIG1pdCBVbWxhdXRlbg0NaWYgKCFAaW5pX2dldCgnc2FmZV9tb2RlJykpIEBzZXRfdGltZV9saW1pdCg0NSk7DSRtdGltZSA9IG1pY3JvdGltZSgpOyAkbXRpbWUgPSBleHBsb2RlKCAnICcsICRtdGltZSk7ICRtdGltZSA9ICRtdGltZVsxXSArICRtdGltZVswXTsNJHN1Y2hfc3RhcnQgPSAkbXRpbWU7DQ0kdmVyc2lvbj0gJzwhLS0gVmVyc2lvbiAyLjEuMSAtLT4nOw0NDWlmIChwaHB2ZXJzaW9uKCkgPCAnNC4zLjAnKSB7DQllY2hvICI8cD5EaWVzZXMgU2NyaXB0IGVyZm9yZGVydCBQSFAgVmVyc2lvbiA0LjMuMCBvZGVyIGgmb3VtbDtoZXIhPGJyIC8+IjsNCWVjaG8gImF1ZiBJaHJlbSBTZXJ2ZXIgbCZhdW1sO3VmdCBhYmVyIFBIUCBWZXJzaW9uICIucGhwdmVyc2lvbigpLiIuPC9wPiI7DQlleGl0Ow19DQ0kbWV0aG9kID0gJF9TRVJWRVJbJ1JFUVVFU1RfTUVUSE9EJ107DQ0kYXJyYXkgPSAiIjsNJGF1c2dhYmUgPSIiOw0kZm91bmQgPSAwOw0kZSA9ICIiOw0kc29ydGhpbndlaXMgPSAiIjsNJGxpbmsgPSAiIjsNJGR1cmNoc3VjaHQgPSAwOw0NaWYgKCFpc3NldCgkcGx1cmFsKSl7DQkkcGx1cmFsID0gIm4iOw19DQ0vL2lmICghaXNzZXQoJHB1bmN0KSl7JHB1bmN0ID0gIm5vIjt9DQ1pZiAoIWlzc2V0KCRtYXhtc2cpKXsNCSRtYXhtc2cgPSAxMDA7DX0NDWlmICghaXNzZXQoJGRhdGVmb3JtKSl7DQkkZGF0ZWZvcm0gPSAiZGUiOw19DQ1pZiAoIWlzc2V0KCRzdWNoZGF1ZXIpKXsNCSRzdWNoZGF1ZXIgPSAiU2VrdW5kZW4iOw19DQ1pZiAoIWlzc2V0KCRiZXNjaHJlaWIpKXsNCSRiZXNjaHJlaWIgPSAiQmVzY2hyZWlidW5nOiAiOw19DQ1pZiAoIWlzc2V0KCR0cmVmZikpew0JJHRyZWZmID0gIlRyZWZmZXIiOw19DQ1pZiAoIWlzc2V0KCRmaWxlZGF0ZSkpew0JJGZpbGVkYXRlID0gInp1bGV0enQgZ2UmYXVtbDtuZGVydCBhbSAiOw19DQ1pZiAoIWlzc2V0KCRub3Jlc3VsdCkpew0JJG5vcmVzdWx0ID0gIjxwPjxiciAvPkVzIHd1cmRlbiBsZWlkZXIga2VpbmUgZXhha3RlbiAmVXVtbDtiZXJlaW5zdGltbXVuZ2VuIG1pdCBkZW0gZWluZ2VnZWJlbmVuIFN1Y2hiZWdyaWZmIGdlZnVuZGVuLjxiciAvPlZpZWxsZWljaHQgd29sbGVuIFNpZSBlcyBtaXQgZWluZW0gYWxsZ2VtZWluZXJlbiBTdWNoYmVncmlmZiB2ZXJzdWNoZW4uPC9wPiI7DX0NDWlmICghaXNzZXQoJHZvcnNjaGxhZykpew0JJHZvcnNjaGxhZyA9ICJPZGVyIFNpZSB2ZXJzdWNoZW4gZXMgZWluZmFjaCBtYWwgbWl0IjsNfQ0NaWYgKCFpc3NldCgkbWlubGVuZ3RoKSl7DQkkbWlubGVuZ3RoID0gIjxwPjxiciAvPkdlYmVuIFNpZSBiaXR0ZSBlaW5lbiBTdWNoYmVncmlmZiB2b24gbWluZGVzdGVucyZuYnNwOyIuJGxlbmd0aC4iJm5ic3A7QnVjaHN0YWJlbiBMJmF1bWw7bmdlIGVpbi48L3A+IjsNfQ0NDQ1pZiAoIWlzc2V0KCRpZnJhbWUpKXsNICAgJGlmcmFtZT1mYWxzZTsNfQ0NaWYgKCFpc3NldCgkdGFyZ2V0d2FobCkpew0gICAkdGFyZ2V0d2FobD1mYWxzZTsNfQ0NaWYgKCFpc3NldCgkZXhjbHVkZV9zdHJpbmdzKSl7DSAgICRleGNsdWRlX3N0cmluZ3MgPSBhcnJheSgpOw19DQ1pZiAoIWlzc2V0KCRpbnN0YWxsYXRpb25fcGF0aCkpIHsNCSRpbnN0YWxsYXRpb25fcGF0aCA9ICJ3ZHdfc3VjaGUiOw19DQ0vLyB2ZXJib3RlbmUgWmVpY2hlbg0kZXhjbHVkZV9zdHJpbmdzMiA9IGFycmF5KA0gICAnXFwnLCAvLyBkYXMgXCBkaWVudCB6dW0gTWFza2llcmVuIHZvbiByZXNlcnZpZXJ0ZW4gWmVpY2hlbiANCSInIiwNICAgJyonLA0JJ3wnLA0gICAnKycNKTsNDSRleGNsdWRlX3N0cmluZ3NfbWVyZ2UgPSBhcnJheV9tZXJnZSgkZXhjbHVkZV9zdHJpbmdzLCAkZXhjbHVkZV9zdHJpbmdzMik7DQ0NaWYgKGlzc2V0KCRzdWNodGlwMCkpew0JJHNlYXJjaHRpcDAgPSAiXG48aDMgaWQ9J3N1Y2h0aXBoZWFkZXInPiRzdWNodGlwMCA8L2gzPlxuIjsNCX0gZWxzZSB7DQkkc2VhcmNodGlwMCA9ICJcbjxoMyBpZD0nc3VjaHRpcGhlYWRlcic+U3VjaHRpcHBzOiA8L2gzPlxuIjsNfQ0NaWYgKGlzc2V0KCRzdWNodGlwMSkpew0JJHNlYXJjaHRpcDEgPSAiPGxpPiRzdWNodGlwMTwvbGk+XG4iOw0JfSBlbHNlIHsNCSRzZWFyY2h0aXAxID0gIjxsaT5EaWUgU3VjaGUgZmluZGV0IGFsbGUgU2VpdGVuLCBkaWUgSWhyZW4gU3VjaGJlZ3JpZmYgZW50aGFsdGVuIC0gYXVjaCBhbHMgV29ydGJlc3RhbmR0ZWlsLiBFaW5lIFN1Y2hlIG5hY2ggJnJhcXVvO3Rlc3QmbGFxdW87IGZpbmRldCBhbHNvIGF1Y2ggJnJhcXVvO3NwJmF1bWw7PGVtPnRlc3Q8L2VtPmUmbGFxdW87LjwvbGk+IjsNCQ19DQ1pZiAoaXNzZXQoJHN1Y2h0aXAyKSl7DQkkc2VhcmNodGlwMiA9ICI8bGk+JHN1Y2h0aXAyPC9saT5cbiI7DQl9IGVsc2Ugew0JJHNlYXJjaHRpcDIgPSAiPGxpPldlbm4gU2llIElocmUgU3VjaGUgYXVmIGdhbnplIFcmb3VtbDtydGVyIGVpbnNjaHImYXVtbDtua2VuIHdvbGxlbiwgZiZ1dW1sO2dlbiBTaWUgdm9yIHVuZCBoaW50ZXIgZGVtIFdvcnQgZWluIExlZXJ6ZWljaGVuIGVpbiwgdW5kIHVtc2NobGllJnN6bGlnO2VuIGFsbGVzIG1pdCBBbmYmdXVtbDtocnVuZ3N6ZWljaGVuLiBCZWlzcGllbDogXCIgdGVzdCBcIi4gJnJhcXVvO3NwJmF1bWw7PGVtPnRlc3Q8L2VtPmUmbGFxdW87IHdpcmQgZGFubiBuaWNodCBtZWhyIGdlZnVuZGVuLiA8L2xpPiI7DX0NDSRzZWFyY2h0aXAyID0gIiI7DQ1pZiAoaXNzZXQoJHN1Y2h0aXAzKSl7DQkkc2VhcmNodGlwMyA9ICI8bGk+JHN1Y2h0aXAzPC9saT5cbiI7DQl9IGVsc2Ugew0JCSRzZWFyY2h0aXAzID0gIjxsaT5XZW5uIFNpZSBtZWhyZXJlIFcmb3VtbDtydGVyIGVpbmdlYmVuLCB3ZXJkZW4gYWxsZSBEb2t1bWVudGUgZ2VmdW5kZW4sIGRpZSA8ZW0+YWxsZTwvZW0+IGVpbmdlZ2ViZW5lbiBXJm91bWw7cnRlciBlbnRoYWx0ZW4sIGVnYWwgaW4gd2VsY2hlciBSZWloZW5mb2xnZSAoQU5ELVZlcmtuJnV1bWw7cGZ1bmcpLg0JCTxiciAvPjxlbT5KZSBtZWhyIFcmb3VtbDtydGVyLCBkZXN0byB3ZW5pZ2VyIFRyZWZmZXIuPC9lbT48L2xpPiI7DX0NCQkNaWYgKGlzc2V0KCRzdWNodGlwMzEpKXsNCSRzZWFyY2h0aXAzMSA9ICI8bGk+JHN1Y2h0aXAzMTwvbGk+XG4iOw0JfSBlbHNlIHsNCSRzZWFyY2h0aXAzMSA9CSI8bGk+V2VubiBTaWUgbWVocmVyZSBXJm91bWw7cnRlciBcIm1pdCBBbmYmdXVtbDtocnVuZ3N6ZWljaGVuIHVtc2NobGllJnN6bGlnO2VuXCIsIHdlcmRlbiBhbGxlIERva3VtZW50ZSBnZWZ1bmRlbiwgZGllIGFsbGUgZWluZ2VnZWJlbmVuIFcmb3VtbDtydGVyIGV4YWt0IGluIGRlciBlaW5nZWdlYmVuZW4gV2Vpc2UgZW50aGFsdGVuLjwvbGk+IjsNfQ0NaWYgKGlzc2V0KCRzdWNodGlwM29yKSl7DQkkc2VhcmNodGlwM29yID0gIjxsaT4kc3VjaHRpcDNvcjwvbGk+XG4iOw0JfSBlbHNlIHsNCSRzZWFyY2h0aXAzb3IgPSAiPGxpPiZyYXF1bztvciZsYXF1bzsgb2RlciAmcmFxdW87b2RlciZsYXF1bzsgKG9obmUgQW5mJnV1bWw7aHJ1bmdzemVpY2hlbikgendpc2NoZW4gbWVocmVyZW4gU3VjaGJlZ3JpZmZlbiBmaW5kZXQgYWxsZSBEb2t1bWVudGUsIGRpZSBtaW5kZXN0ZW5zIGVpbmVuIFN1Y2hiZWdyaWZmIGVudGhhbHRlbiAoT1ItVmVya24mdXVtbDtwZnVuZykuDQkJPGJyIC8+PGVtPkplIG1laHIgVyZvdW1sO3J0ZXIsIGRlc3RvIG1laHIgVHJlZmZlci48L2VtPjwvbGk+IjsNCQ19DQ0NaWYgKCFpc3NldCgkd2VpdGVydHh0KSl7DQkkd2VpdGVydHh0ID0gIndlaXRlcmUgVHJlZmZlciB6ZWlnZW4iOw19DQ0NaWYgKCFpc3NldCgkc2VhcmNoKSkgeyRzZWFyY2ggPSAkdmFsdWU7fQ0NaWYgKCFpc3NldCgkc2hvd19leHQpKSB7JHNob3dfZXh0ID0gdHJ1ZTt9DQ1pZiAoIWlzc2V0KCRwcm90KSkgeyRwcm90ID0gImh0dHA6Ly8iO30NDQ0NDQ0NJHNlYXJjaHRpcDQgPSAiIjsNaWYgKCRqdW1wID09IHRydWUgJiYgJHRhcmdldCA9PSAiIikgew0NCWlmIChpc3NldCgkc3VjaHRpcDQpKXsNCQkkc2VhcmNodGlwNCA9ICI8bGk+JHN1Y2h0aXA0PC9saT5cbiI7DQkJfSBlbHNlIHsNCQkkc2VhcmNodGlwNCA9ICI8bGk+RmFsbHMgZGllIFN1Y2hlIG51ciBlaW5lbiBlaW56aWdlbiBUcmVmZmVyIGVyZ2lidCwgd2lyZCBkaWUgVHJlZmZlcnNlaXRlIGRpcmVrdCBhbmdlc3BydW5nZW4uPC9saT5cbiI7DQl9DX0NDSR1bHN0YXJ0ID0gIiRzZWFyY2h0aXAwPGRpdiBpZD0nc3VjaHRpcHBzJyAgY2xhc3M9J2tsYXBwZW4nID5cbjx1bD5cbiI7DSR1bGVuZCA9ICI8L3VsPlxuPC9kaXY+XG4iOw0NaWYgKCR0aXBwcykgeyRzZWFyY2h0aXAgPSAkdWxzdGFydC4kc2VhcmNodGlwMS4kc2VhcmNodGlwMi4kc2VhcmNodGlwMy4kc2VhcmNodGlwMzEuJHNlYXJjaHRpcDNvci4kc2VhcmNodGlwNC4kdWxlbmQ7IH1lbHNlIHskc2VhcmNodGlwID0iIjt9DQ0vLyBiZyBmdWVyIENyZWRpdC1MaW5rOg1pZiAoIWlzc2V0KCRiZykpICRiZyA9ICIjRkZGRkZGIjsNaWYgKHN0cnBvcygkYmcsJyMnKSA9PT0gZmFsc2UpICRiZyA9ICcjJy4kYmc7DQ1pZiAocHJlZ19tYXRjaCgnL14jWzAtOUEtRl17MSw2fSQvaScsICRiZykgJiYgc3RybGVuKCRiZykgPT0gNykgew0NICAgICAgJHJlZEggPSBiYXNlX2NvbnZlcnQoc3Vic3RyKCRiZywgMSwgMiksIDE2LCAxMCk7DSAgICAgICRncmVlbkggPSBiYXNlX2NvbnZlcnQoc3Vic3RyKCRiZywgMywgMiksICAxNiwgMTApOw0gICAgICAkYmx1ZUggPSBiYXNlX2NvbnZlcnQoc3Vic3RyKCRiZywgNSwgMiksICAxNiwgMTApOw0NICAgICAgLy8gaHR0cDovL3d3dy53My5vcmcvVFIvQUVSVCNjb2xvci1jb250cmFzdA0gICAgICAkc3VtID0gJHJlZEgqMjk5ICsgJGdyZWVuSCo1ODcgKyAkYmx1ZUgqMTE0Ow0gICAgICBpZiAoJHN1bSA8IDEyNzAwMCApIHsNICAgICAgICAgICAkY29tcCA9ICIjRkZGRkZGIjsNICAgICAgfSBlbHNlIHsNICAgICAgICAgICAkY29tcCA9IiMwMDAwMDAiOw0gICAgICB9DX0gZWxzZSB7DSAgICAgICRmZWhsZXIgPSAxOw0gICAgICAkYmcgPSAiI0ZGRkZGRiI7DSAgICAgICRjb21wID0gIiMwMDAwMDAiOw19DQ0kd2R3ID0gJzxwIHN0eWxlPSJkaXNwbGF5OmJsb2NrICFpbXBvcnRhbnQ7IGZvbnQtc2l6ZTogMTBweCAhaW1wb3J0YW50OyBjb2xvcjonLiRjb21wLicgIWltcG9ydGFudDsgYmFja2dyb3VuZDonLiRiZy4nICFpbXBvcnRhbnQiPiZuYnNwO3NjcmlwdCZuYnNwOyZjb3B5OyZuYnNwOzIwMTImbmJzcDtieSZuYnNwOzxhIHN0eWxlPSJjb2xvcjonLiRjb21wLicgIWltcG9ydGFudDsgZGlzcGxheTppbmxpbmUgIWltcG9ydGFudDsgZm9udC1zaXplOiAxMHB4ICFpbXBvcnRhbnQ7IGZvbnQtd2VpZ2h0Om5vcm1hbCAhaW1wb3J0YW50OyB0ZXh0LWRlY29yYXRpb246bm9uZSAhaW1wb3J0YW50IiBocmVmPSJodHRwOi8vd2ViZGVzaWduLndlaXNzaGFydC5kZSI+d2ViZGVzaWduJm5ic3A7d2Vpc3NoYXJ0PC9hPjwvcD4nOw0NaWYgKGlzc2V0KCRwd2QpKSB7DQkkc2VydmVyID0gc3RyX3JlcGxhY2UgKCJ3d3cuIiwiIiwgJF9TRVJWRVJbJ1NFUlZFUl9OQU1FJ10gKTsNCSRzZXJ2ZXIgPSBzdHJfcmVwbGFjZSAoIisiLCIiLCAkc2VydmVyKTsNCSRzZXJ2ZXIgPSBzdHJfcmVwbGFjZSAoIi0iLCIiLCAkc2VydmVyKTsNCSRkb20gPSBjcmMzMigkc2VydmVyKTsNICAgICAgJGNoYXZlID0gJHB3ZCAvIHNwcmludGYoIiV1IiwgJGRvbSk7DX0NaWYgKGlzc2V0KCRjaGF2ZSkgJiYgJGNoYXZlID09ICIzMjEiKXsNCSR3ZHcgPScnOw19DQ0NLy8gbmV1ZXMgRmVuc3Rlcg1lY2hvJw08c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+DS8qIDwhW0NEQVRBWyAqLw0vLyBodHRwOi8vd3d3LmRyd2ViLmRlL3RyaWNra2lzdGUvdHJpY2tzMjE0LnNodG1sDWZ1bmN0aW9uIGxpbmtvcGVuZXIoYSkgew0gICB2YXIgYj1hPyJfYmxhbmsiOiJfc2VsZiI7DSAgIHZhciBjPWRvY3VtZW50LmxpbmtzOw0gICBmb3IodmFyIGk9MDtpPGMubGVuZ3RoO2krKykgew0gICAJY1tpXS50YXJnZXQ9YjsNICAgfQ19DQ1mdW5jdGlvbiBsaW5rY29va2llKCkgew0gICBpZihkb2N1bWVudC5jb29raWUuaW5kZXhPZigic3VjaG9lZmZuZW4iKSAhPT0gLTEpew0gICAgICBkb2N1bWVudC5jb29raWUgPSAic3VjaD0wO3BhdGg9LztleHBpcmVzPVRodSwgMDEtSmFuLTcwIDAwOjAwOjAxIEdNVCI7DSAgIH0gZWxzZSB7DSAgICAgZG9jdW1lbnQuY29va2llPSJzdWNoPXN1Y2hvZWZmbmVuOyBwYXRoID0vIjsNICAgfQ19DQ0vLyBodHRwOi8vaWNod2lsbC5uZXQvY2hhcHRlcjQuaHRtbA1mdW5jdGlvbiBhZGRFdmVudChvYmosIGV2VHlwZSwgZm4pew0gaWYgKG9iai5hZGRFdmVudExpc3RlbmVyKXsNICAgb2JqLmFkZEV2ZW50TGlzdGVuZXIoZXZUeXBlLCBmbiwgZmFsc2UpOw0gICByZXR1cm4gdHJ1ZTsNIH0gZWxzZSBpZiAob2JqLmF0dGFjaEV2ZW50KXsNICAgdmFyIHIgPSBvYmouYXR0YWNoRXZlbnQoIm9uIitldlR5cGUsIGZuKTsNICAgcmV0dXJuIHI7DSB9IGVsc2Ugew0gICByZXR1cm4gZmFsc2U7DSB9DX0NDS8qIF1dPiAqLw08L3NjcmlwdD4NJzsNDQ1pZihpc3NldCgkX0dFVFsicSJdKSB8fCBpc3NldCgkX1BPU1RbInEiXSkpIHsNCWlmIChpc3NldCgkX0dFVFsicSJdKSAmJiAkX0dFVFsicSJdICE9ICIiKSAkc2VhcmNoID0gc3RyaXBzbGFzaGVzKCRfR0VUWyJxIl0pOw0JaWYgKGlzc2V0KCRfUE9TVFsicSJdKSAmJiAkX1BPU1RbInEiXSAhPSAiIikgJHNlYXJjaCA9IHN0cmlwc2xhc2hlcygkX1BPU1RbInEiXSk7DQ0NCWlmIChzdHJpc3RyKCRzZWFyY2gsICJDb250ZW50LVR5cGUiKSkkc2VhcmNoID0gIm5vIHNwYW0gaGVyZSEiOw0JDQlmb3JlYWNoKCRleGNsdWRlX3N0cmluZ3NfbWVyZ2UgYXMgJGspIHsNCQkkZ2VzdWNodCA9IGh0bWxzcGVjaWFsY2hhcnMoc3RyX3JlcGxhY2UoJGssIiIsJHNlYXJjaCkpOw0JfQ0JDQ0JJHNlYXJjaCA9IHN0cl9yZXBsYWNlKCImYXVtbDsiLCAi5CIsICRzZWFyY2gpOw0JJHNlYXJjaCA9IHN0cl9yZXBsYWNlKCImb3VtbDsiLCAi9iIsICRzZWFyY2gpOw0JJHNlYXJjaCA9IHN0cl9yZXBsYWNlKCImdXVtbDsiLCAi/CIsICRzZWFyY2gpOw0JJHNlYXJjaCA9IHN0cl9yZXBsYWNlKCImQXVtbDsiLCAixCIsICRzZWFyY2gpOw0JJHNlYXJjaCA9IHN0cl9yZXBsYWNlKCImT3VtbDsiLCAi1iIsICRzZWFyY2gpOw0JJHNlYXJjaCA9IHN0cl9yZXBsYWNlKCImVXVtbDsiLCAi3CIsICRzZWFyY2gpOw0JJHNlYXJjaCA9IHN0cl9yZXBsYWNlKCImc3psaWc7IiwgIt8iLCAkc2VhcmNoKTsNDQkkc2VhcmNoID0gc3RyX3JlcGxhY2UoIiYjMjI4OyIsICLkIiwgJHNlYXJjaCk7DQkkc2VhcmNoID0gc3RyX3JlcGxhY2UoIiYjMjQ2OyIsICL2IiwgJHNlYXJjaCk7DQkkc2VhcmNoID0gc3RyX3JlcGxhY2UoIiYjMjUyOyIsICL8IiwgJHNlYXJjaCk7DQkkc2VhcmNoID0gc3RyX3JlcGxhY2UoIiYjMTk2OyIsICLEIiwgJHNlYXJjaCk7DQkkc2VhcmNoID0gc3RyX3JlcGxhY2UoIiYjMjE0OyIsICLWIiwgJHNlYXJjaCk7DQkkc2VhcmNoID0gc3RyX3JlcGxhY2UoIiYjMjIwOyIsICLcIiwgJHNlYXJjaCk7DQkkc2VhcmNoID0gc3RyX3JlcGxhY2UoIiYjMjIzOyIsICLfIiwgJHNlYXJjaCk7DQkNCS8vIGdhbnplIEF1c2RydWVja2Ugc3VjaGVuOg0JJGF1c2RydWNrID0gZmFsc2U7DQlpZiAoc3RycG9zKCRzZWFyY2gsJyInKSAhPT0gZmFsc2UgKSB7IA0JCSRhdXNkcnVjayA9IHRydWU7DQl9IA0NCSRzZWFyY2ggPSBwcmVnX3JlcGxhY2UoJy9bIF17Mix9L3NtJywgJyAnLCAkc2VhcmNoKTsNDQ0JaWYgKGZpbGVfZXhpc3RzKCJzZWFyY2hfcmVwbGFjZS5waHAiKSkge2luY2x1ZGUgKCJzZWFyY2hfcmVwbGFjZS5waHAiKTt9DQ0JLy8gdW5lcnd1ZW5zY2h0ZSBTdHJpbmdzIHZvbiBkZXIgU3VjaGUgYXVzc2NobGllc3Nlbg0JZm9yZWFjaCgkZXhjbHVkZV9zdHJpbmdzX21lcmdlIGFzICRrKSB7DQkJJHNlYXJjaCA9IHN0cl9yZXBsYWNlKCRrLCIiLCRzZWFyY2gpOw0JfQ0NDQkkc2VhcmNoID0gdHJpbShodG1sc3BlY2lhbGNoYXJzKCRzZWFyY2gpKTsNCSRzZWFyY2ggPSBzdHJfcmVwbGFjZSAoICcmYW1wOycsICcmJywgJHNlYXJjaCApOyAvLyBsYWVzc3QgaHRtbCBlbnRpdGllcyB3aWUgJiMzNTE7IHp1ICh6LkIuIHR1ZXJraXNjaGUgU29uZGVyemVpY2hlbikNCS8vZGllIGdsZWljaGUgWmVpbGUgYXVjaCBpbiBkaWUgc3VjaGVuLnBocCwgYXVzc2VyZGVtIFplaWxlIDQ4IGhpZXIgd2Vna29tbWVudGllcmVuLg0NDQlpZihlbXB0eSgkc2VhcmNoKSkgeyRzZWFyY2g9IiI7fQ0JJHNlYXJjaGxlbmd0aCA9IHN0cl9yZXBsYWNlKCcmcXVvdDsnLCcnLCRzZWFyY2gpOw0JaWYoc3RybGVuKCRzZWFyY2hsZW5ndGgpID49ICRsZW5ndGggJiYgJHNlYXJjaCAhPSAkdmFsdWUpIHsNDQ0JaWYgKGlzc2V0KCRzdWNoaGlud2VpcykgJiYgJHN1Y2hoaW53ZWlzICE9ICIiKSB7DQkJJHNlYXJjaGhpbndlaXMgPSAkc3VjaGhpbndlaXM7DQkJfSBlbHNlIHsNCQkkc2VhcmNoaGlud2VpcyA9ICJTaWUgc3VjaGVuIG5hY2giOw0JfQ0JZWNobyAnPHA+Jy4kc2VhcmNoaGlud2Vpcy4nIDxlbT4mcmFxdW87Jy4kZ2VzdWNodC4nJmxhcXVvOzwvZW0+JzsNDQ0NCS8vIGRpZSBGdW5rdGlvbiB6dW0gZXh0cmFoaWVyZW4gdm9uIFRlaWxzdHJpbmdzDQlmdW5jdGlvbiBhdXNsZXNlbigkYWxsLCAkc3RhcnQsICRlbmQpIHsNCQlpZiAoc3RyaXN0cigkYWxsLCRzdGFydCkpIHsNCQkJJHN0YXJ0X3Bvcz1zdHJwb3Moc3RydG9sb3dlcigkYWxsKSxzdHJ0b2xvd2VyKCRzdGFydCkpICsgc3RybGVuKCRzdGFydCk7DQkJCSRyZXN0ID0gc3Vic3RyKCRhbGwsJHN0YXJ0X3Bvcyk7DQkJCSRlbmRfcG9zPXN0cnBvcyhzdHJ0b2xvd2VyKCRyZXN0KSxzdHJ0b2xvd2VyKCRlbmQpKTsNCQkJJGVyZyA9IHN1YnN0cigkcmVzdCwwLCRlbmRfcG9zKTsNCQkJcmV0dXJuICRlcmc7DQkJfQ0JfQ0NDQkvLyBkaWUgRnVua3Rpb24genVtIER1cmNoc3VjaGVuIGRlcyBWZXJ6ZWljaG5pc2JhdW1zOg0JaWYgKCFpc3NldCgkZXhjbHVkZV9kaXJzKSkgJGV4Y2x1ZGVfZGlycyA9IGFycmF5KCIiKTsNDQlmdW5jdGlvbiB0cmVlKCRvcmRuZXIsICRzdWIgPSBGQUxTRSkgew0JCWdsb2JhbCAkZXJnZWI7DQkJJGhhbmRsZSA9IG9wZW5kaXIoJG9yZG5lcik7DQkJd2hpbGUgKGZhbHNlICE9PSAoJGZpbGUgPSByZWFkZGlyICgkaGFuZGxlKSkpIHsNCQkJaWYoJGZpbGUgIT0gIi4iICYmICRmaWxlICE9ICIuLiIgJiYgaXNfZGlyKCRvcmRuZXIuIi8iLiRmaWxlKSkgew0JCQkJJGNvbXBsID0gJG9yZG5lci4iLyIuJGZpbGUuIi8iOw0JICAgICAgIAkJJGVyZ2ViID0gJGVyZ2ViLiIsIi4kY29tcGw7DSAgICAgICAgCQl0cmVlKCRvcmRuZXIuIi8iLiRmaWxlLCBUUlVFKTsNCQkJfQ0JCX0NCSAgCWNsb3NlZGlyKCRoYW5kbGUpOw0JfQ0NCWlmICgkYWxsZWRpcnMpIHsNCSAgIHRyZWUoIi4iKTsNCSAgICRlcmdlYiA9ICIuLyIuJGVyZ2ViOw0JICAgJGRpcnMgPSBleHBsb2RlICgiLCIsICRlcmdlYik7DQl9DQ0JZm9yZWFjaCgkZGlycyBhcyAkZGlyKSB7DQkJaWYoIWluX2FycmF5KCRkaXIsJGV4Y2x1ZGVfZGlycykpIHsNCQkkdmVyeiA9IG9wZW5kaXIoJGRpcik7DQ0JCXdoaWxlKCRmaWxlID0gcmVhZGRpcigkdmVyeikpIHsNDQkJaWYoJGZpbGUgIT0gIi4iICYmICRmaWxlICE9ICIuLiIgJiYgJGZpbGUgIT0gIi5odGFjY2VzcyIpIHsNDQkJJGR1cmNoc3VjaHQgPSAkZHVyY2hzdWNodCArIDE7DQkJLy8gZWluemVsbmUgRGF0ZWllbiB2b24gZGVyIFN1Y2hlIGF1c3NjaGxpZXNzZW4NCQkvLyBkaWUgZm9sZ2VuZGVuIDggWmVpbGVuIGVybGF1YmVuIEF1c2NobHVzcyB2b24gU3Vic3RyaW5ncyBpbiAkZXhjbHVkZV9maWxlcw0JCSRub2xpc3Q9ZmFsc2U7DQkJZm9yICgkZT0wOyRlPGNvdW50KCRleGNsdWRlX2ZpbGVzKTskZSsrKSB7DQkJCSRwb3MgPSBzdHJwb3MoJGZpbGUsJGV4Y2x1ZGVfZmlsZXNbJGVdKTsNCQkJaWYgKCRwb3MgIT09IGZhbHNlKSB7DQkJCQkkbm9saXN0ID0gdHJ1ZTsNCQkJfQ0JCX0gDQkJDQkJaWYoJG5vbGlzdCAhPT0gdHJ1ZSAmJiBwcmVnX21hdGNoKCI9KFwuJGRhdF90eXBlKSQ9IiwkZmlsZSkpIHsNDQkJCS8vIE1ldGEtQW5nYWJlbiBlcm1pdHRlbG4NCQkJJHRpdGVsID0gIiI7DQkJCSRrZXl3b3JkcyA9ICIiOw0JCQkkZGVzY3JpcHRpb24gPSAiIjsNCQkJJGdtdGFycmF5PWdldF9tZXRhX3RhZ3MoJGRpci4kZmlsZSk7DQkJCQkNCQkJd2hpbGUobGlzdCgka2V5MSwkdmFsKT1lYWNoKCRnbXRhcnJheSkpew0JCQkJc3dpdGNoKHN0cnRvbG93ZXIoJGtleTEpKXsNCQkJCQljYXNlICJ0aXRsZSI6ICR0aXRlbD0kdmFsOyBicmVhazsNCQkJCQljYXNlICJrZXl3b3JkcyI6ICRrZXl3b3Jkcz0kdmFsOyBicmVhazsNCQkJCQljYXNlICJkZXNjcmlwdGlvbiI6ICRkZXNjcmlwdGlvbj0kdmFsOyBicmVhazsNCQkJCX0NCQkJfQ0NCQkJJHN0cmluZzEgPSAkc3RyaW5nID0gZmlsZV9nZXRfY29udGVudHMoJGRpci4kZmlsZSk7DQkJCQkNCQkJJHN0cmluZyA9IHN0cl9yZXBsYWNlKCImbmJzcDsiLCIgIiwkc3RyaW5nKTsgLy8gd2VpbCBzb25zdCAmbHQ7Jm5ic3A7IGFscyBsaW1pdC1lbmQgd2lya3Q/Pz8NCQkJDQkJCSRzdHJpbmcgPSBwcmVnX3JlcGxhY2UoJyNbXHNdezIsfSNzJywgJyAnLCAkc3RyaW5nKTsgLy8gbWVocmVyZSBMZWVyemVpY2hlbiBpbiBlaW5zIHVtd2FuZGVsbg0JCQkNCQkJCQ0JCQkvLyBkYW1pdCB3ZXJkZW4gZ2FuemUgV29lcnRlciBnZWZ1bmRlbiwgYXVjaCB3ZW5uIHNpZSBpbiBUYWdzIGVpbmdlc2NobG9zc2VuIHNpbmQ6DQkJCSRzdHJpbmcgPSBzdHJfcmVwbGFjZSgiPCIsIiA8Iiwkc3RyaW5nKTsNCQkJJHN0cmluZyA9IHN0cl9yZXBsYWNlKCI+IiwiPiAiLCRzdHJpbmcpOw0NCQkJLy8gaHRtbCB0YWdzIG1pdCBlaW5nZXNjaGxvc3NlbmVuIHBocCB0YWdzIHJhdXMgLSB3ZWlsIHNvbnN0IGVpbiBlaW56ZWxuZXMgPCBvZGVyICZsdDsgYWxzIGVuZCB3aXJrdA0gIAkJCSRzdWNobXVzdGVyID0gIi88XD9bXj5dK1w/Pi8iOyANICAJCQkkc3RyaW5nID0gcHJlZ19yZXBsYWNlKCRzdWNobXVzdGVyLCIiLCRzdHJpbmcpOw0NCQkJJHN0cmluZyA9IGh0bWxfZW50aXR5X2RlY29kZSgkc3RyaW5nKTsNDQ0gICAgICAgICAgICAvLyBudXIgZnVlciB3ZHcgZHluLiBkZXNjcmlwdGlvbnM6DSAgICAgICAgICAgIGlmICgkX1NFUlZFUlsnU0VSVkVSX05BTUUnXSA9PSAid2ViZGVzaWduLndlaXNzaGFydC5kZSIpIHsNICAgCQkJCWlmICgkZGVzY3JpcHRpb24gPT0gIiIpew0gICAJCQkJCSRkZXNjcmlwdGlvbiA9IGF1c2xlc2VuKCRzdHJpbmcxLCAiZGVzY3JpcHRpb24iLCAnIjsnKTsNCQkJCQkkZGVzY3JpcHRpb24gPSBzdHJpcF90YWdzKCRkZXNjcmlwdGlvbik7DQkJCQkJJGRlc2NyaXB0aW9uID0gcHJlZ19yZXBsYWNlKCIvXG58XHJ8Y29udGVudHxcInw9fFwvfFw/LyIsICIiLCAkZGVzY3JpcHRpb24pOw0gICAJCQkJfQ0gICAgICAgICAgICB9DQ0JCQkvLyB1bmQgd2VpbCA8dGl0bGU+IG5pY2h0IGltbWVyIGFscyBNZXRhLXRhZyBjb2RpZXJ0IHdpcmQ6DQkJCWlmICgkdGl0ZWwgPT0gIiIpICR0aXRlbCA9IGF1c2xlc2VuKCRzdHJpbmcsICI8dGl0bGU+IiwgIjwvdGl0bGU+Iik7DQ0JCQkvLyB3ZWlsIGVzIExldXRlIGdpYnQsIGRpZSBtZXRhIFRhZ3MgbWl0IFplaWxlbnVtYnJ1Y2ggc2NocmVpYmVuOg0JCQkkZGVzY3JpcHRpb24gPSBzdHJfcmVwbGFjZSgiXG4iLCIiLCRkZXNjcmlwdGlvbik7DQkJCSRrZXl3b3JkcyA9IHN0cl9yZXBsYWNlKCJcbiIsIiIsJGtleXdvcmRzKTsNCQkJJHRpdGVsID0gc3RyX3JlcGxhY2UoIlxuIiwiIiwkdGl0ZWwpOw0NCQkJLy8gRGF0ZWllbiBudXIgendpc2NoZW4gZGVuIGJlaWRlbiBsaW1pdGVyIHRhZ3MgYXVzd2VydGVuOg0JCQlpZiAoJGxpbWl0X3N0YXJ0ICE9ICIiKSB7DQkJCQkvLyBXdXJkZSBuZWVkbGUgbmljaHQgZ2VmdW5kZW4sIGdpYnQgc3RycG9zKCkgZGVuIGJvb2xlYW4tV2VydCBGQUxTRSB6dXL8Y2suDQkJCQlpZiAoc3RycG9zKHN0cnRvbG93ZXIoJHN0cmluZyksc3RydG9sb3dlcigkbGltaXRfc3RhcnQpKSAhPT0gZmFsc2UpIHsNCQkJCQkkcG9zPXN0cnBvcyhzdHJ0b2xvd2VyKCRzdHJpbmcpLHN0cnRvbG93ZXIoJGxpbWl0X3N0YXJ0KSkgKyBzdHJsZW4oJGxpbWl0X3N0YXJ0KTsNCQkJCQkkc3Vic3RyaW5nX3Jlc3QgPSBzdWJzdHIoJHN0cmluZywkcG9zKTsNCQkJCX0gZWxzZSB7DQkJCQkJJHN1YnN0cmluZ19yZXN0ID0gJHN0cmluZzsNCQkJCX0NCQkJfSBlbHNlIHsNCQkJCSRzdWJzdHJpbmdfcmVzdCA9ICRzdHJpbmc7DQkJCX0NDQ0JCQkvLyB3ZW5uICRsaW1pdF9lbmQgZ2VzZXR6dDoNCQkJaWYgKCRsaW1pdF9lbmQgIT0gIiIpIHsNCQkJCSRlbmRfcG9zPXN0cnBvcyhzdHJ0b2xvd2VyKCRzdWJzdHJpbmdfcmVzdCksc3RydG9sb3dlcigkbGltaXRfZW5kKSk7DQkJCQlpZiAoJGVuZF9wb3MgIT09IGZhbHNlKSB7DQkJCQkJJHN0cmluZyA9IHN1YnN0cigkc3Vic3RyaW5nX3Jlc3QsMCwkZW5kX3Bvcyk7DQkJCQl9IGVsc2Ugew0JCQkJCSRzdHJpbmcgPSAkc3Vic3RyaW5nX3Jlc3Q7DQkJCQl9DSAgICAgICAgICAgICAJfSBlbHNlIHsNCQkJCSRzdHJpbmcgPSAkc3Vic3RyaW5nX3Jlc3Q7DSAgICAgICAgICAgICAJfQ0NDQkJCS8vSW5oYWx0IHZvbiB0YWdzIGF1c3dlcnRlbjoNCQkJaWYgKCR0YWdzPT09ZmFsc2UpIAkkc3RyaW5nID0gc3RyaXBfdGFncygkc3RyaW5nKTsNDQkJCS8vIGRpZSBtZXRhIHRhZ3MgaW4gZGllIFN1Y2hlIGVpbnNjaGxpZXNzZW4gZ2VtYWVzcyBjb25maWc6DSAgICAgICAgICAgIGlmICgkdGFncyA9PT0gdHJ1ZSkgeyRrZXk9dHJ1ZTsgJGRlc2M9dHJ1ZTsgJHRpdD10cnVlO30NCQkJaWYgKCRrZXkgPT09IHRydWUpICRzdHJpbmc9JHN0cmluZy4ka2V5d29yZHM7DQkJCWlmICgkZGVzYyA9PT0gdHJ1ZSkgJHN0cmluZz0kc3RyaW5nLiRkZXNjcmlwdGlvbjsNCQkJaWYgKCR0aXQgPT09IHRydWUpICRzdHJpbmc9JHN0cmluZy4kdGl0ZWw7DQ0JCQkkc3RyaW5nID0gc3RyX3JlcGxhY2UoIlxuIiwgIiAiLCAkc3RyaW5nKTsNDQkJCSRzdHJpbmcgPSBzdHJfcmVwbGFjZSgidGl0bGU+IiwgIiIsICRzdHJpbmcpOyAvLyB3ZW5uIFRyZWZmZXIgaW4gPHRpdGxlPiB3aXJkIHRpdGxlPiBhbmdlemVpZ3Q/DQ0JCQkvLyBqZXR6dCBkaWUgQXVzZ2FiZSBkZXMgS29udGV4dCB2b3JiZXJlaXRlbjoNCQkJJHN0cmluZyA9IHN0cl9yZXBsYWNlKCImYXVtbDsiLCAi5CIsICRzdHJpbmcpOw0JCQkkc3RyaW5nID0gc3RyX3JlcGxhY2UoIiZvdW1sOyIsICL2IiwgJHN0cmluZyk7DQkJCSRzdHJpbmcgPSBzdHJfcmVwbGFjZSgiJnV1bWw7IiwgIvwiLCAkc3RyaW5nKTsNCQkJJHN0cmluZyA9IHN0cl9yZXBsYWNlKCImQXVtbDsiLCAixCIsICRzdHJpbmcpOw0JCQkkc3RyaW5nID0gc3RyX3JlcGxhY2UoIiZPdW1sOyIsICLWIiwgJHN0cmluZyk7DQkJCSRzdHJpbmcgPSBzdHJfcmVwbGFjZSgiJlV1bWw7IiwgItwiLCAkc3RyaW5nKTsNCQkJJHN0cmluZyA9IHN0cl9yZXBsYWNlKCImc3psaWc7IiwgIt8iLCAkc3RyaW5nKTsNDQkJCSRzdHJpbmcgPSBzdHJfcmVwbGFjZSgiJiMyMjg7IiwgIuQiLCAkc3RyaW5nKTsNCQkJJHN0cmluZyA9IHN0cl9yZXBsYWNlKCImIzI0NjsiLCAi9iIsICRzdHJpbmcpOw0JCQkkc3RyaW5nID0gc3RyX3JlcGxhY2UoIiYjMjUyOyIsICL8IiwgJHN0cmluZyk7DQkJCSRzdHJpbmcgPSBzdHJfcmVwbGFjZSgiJiMxOTY7IiwgIsQiLCAkc3RyaW5nKTsNCQkJJHN0cmluZyA9IHN0cl9yZXBsYWNlKCImIzIxNDsiLCAi1iIsICRzdHJpbmcpOw0JCQkkc3RyaW5nID0gc3RyX3JlcGxhY2UoIiYjMjIwOyIsICLcIiwgJHN0cmluZyk7DQkJCSRzdHJpbmcgPSBzdHJfcmVwbGFjZSgiJiMyMjM7IiwgIt8iLCAkc3RyaW5nKTsNCQkJDQkJCS8vIHVuZXJ3dWVuc2NodGUgU3RyaW5ncyB2b24gZGVyIFN1Y2hlIGF1c3NjaGxpZXNzZW4NCQkJZm9yZWFjaCgkZXhjbHVkZV9zdHJpbmdzX21lcmdlIGFzICRrKSB7DQkJCQkkc3RyaW5nID0gc3RyX3JlcGxhY2UoJGssIiIsJHN0cmluZyk7DQkJCX0JCQkNDQ0NICAgICAgICAgICAgLy8gRS1NYWlscyByYXVzOiBodHRwOi8vd3d3LnJlZ3VsYXItZXhwcmVzc2lvbnMuaW5mby9lbWFpbC5odG1sDSAgICAgICAgICAgICRzdWNobXVzdGVyID0gJy9cYltBLVowLTkuXyUrLV0rQFtBLVowLTkuLV0rXC5bQS1aXXsyLDR9XGIvaSc7DSAgICAgICAgICAgICRzdHJpbmcgPSBwcmVnX3JlcGxhY2UoJHN1Y2htdXN0ZXIsJycsICRzdHJpbmcpOw0NCQkJaWYobWJfZGV0ZWN0X2VuY29kaW5nKCRzdHJpbmcsICdVVEYtOCwgSVNPLTg4NTktMScpID09PSAnVVRGLTgnKXsJDQkJCQkkc3RyaW5nbG93ID0gbWJfc3RydG9sb3dlcigkc3RyaW5nLCdVVEYtOCcpOw0JCQkJJHNlYXJjaGxvdyA9IG1iX3N0cnRvbG93ZXIoJHNlYXJjaCwnVVRGLTgnKTsNCQkJfSBlbHNlIHsNCQkJCSRzdHJpbmdsb3cgPSBzdHJ0b2xvd2VyKCRzdHJpbmcpOw0JCQkJJHNlYXJjaGxvdyA9IHN0cnRvbG93ZXIoJHNlYXJjaCk7CQ0JCQl9DQkJCQkNDQkJCSMgZGllIHVuZC1WZXJrbnVlcGZ1bmc6DQkJCSRvciA9IGZhbHNlOyANDQkJCWlmICgoc3RycG9zKCRzZWFyY2hsb3csIiBvciAiKSAhPT0gZmFsc2UgfHwgc3RycG9zKCRzZWFyY2hsb3csIiBvZGVyICIpICE9PSBmYWxzZSkgJiYgIGlzc2V0KCRzdWNodGlwM29yKSApIHsgLy8gVW1zY2hhbHRlbiB2b24gdW5kIGF1ZiBvciANCQkJCSRvciA9IHRydWU7DQkJCQkkc2VhcmNobG93ID0gc3RyX3JlcGxhY2UoIiBvciAiLCAiICIsICRzZWFyY2hsb3cpOw0JCQkJJHNlYXJjaGxvdyA9IHN0cl9yZXBsYWNlKCIgb2RlciAiLCAiICIsICRzZWFyY2hsb3cpOw0JCQl9DQkJCQkNCQkJIyBXb3J0Z3J1cHBlbg0JCQlpZiAoJGF1c2RydWNrICE9PSBmYWxzZSkgew0JCQkJJHNlYXJjaGxvdyA9IHN0cl9yZXBsYWNlKCcmcXVvdDsnLCcnLCRzZWFyY2hsb3cpOw0JCQkJJHNlYXJjaF9hcnJbMF0gPSAkc2VhcmNobG93Ow0NCQkJfSBlbHNlIHsNCQkJCSRzZWFyY2hfYXJyID0gZXhwbG9kZSgiICIsJHNlYXJjaGxvdyk7DQkJCX0NCQkJJHNlYXJjaF9jb3VudCA9IGNvdW50KCRzZWFyY2hfYXJyKTsNDQ0JCQkkaT0wOw0JCQlmb3JlYWNoICgkc2VhcmNoX2FyciBhcyAkc2VhcmNoX3dvcmQpIHsNCQkJCWlmIChAc3RycG9zKCRzdHJpbmdsb3csJHNlYXJjaF93b3JkKSAhPT0gZmFsc2UpIHsJIAkvLyB3ZW5uIFN1Y2hiZWdyaWZmIHZvcmtvbW10LCBzY2huZWxsZXIgYWxzIHByZWdfbWF0Y2gJCQkJDQkJCQkJJGkrKzsNDQkJCQkJaWYgKCRvciA9PT0gdHJ1ZSkgeyRpID0gJHNlYXJjaF9jb3VudCA9IDE7fSAvLyBkZXIgSGFjaywgdW0gYmVpIE9SIG5pY2h0IHp1IHdhcnRlbiwgYmlzIGFsbGUgU3VjaGJlZ3JpZmZlIGdlZnVuZGVuIHdlcmRlbg0NCQkJCQlpZiAoJGk9PSRzZWFyY2hfY291bnQpIHsJCS8vIHNvYmFsZCBhbGxlIFN1Y2hiZWdyaWZmZSBnZWZ1bmRlbiB3dXJkZW4uLi4NDQkJCQkJCSR0ZXN0ID0gQHN1YnN0cl9jb3VudCgkc3RyaW5nbG93LCAkc2VhcmNoX3dvcmQpOw0NCQkJCQkJaWYgKCRzZWFyY2hfY291bnQgPiAxKXsNCQkJCQkJCSRwb3M9c3RycG9zKCRzdHJpbmdsb3csJHNlYXJjaF93b3JkKTsNCQkJCQkJfSBlbHNlIHsNCQkJCQkJCSRwb3M9c3RycG9zKCRzdHJpbmdsb3csJHNlYXJjaGxvdyk7DQkJCQkJCX0NDQ0JCQkJCQlpZiAoJHZvciA+PSAkcG9zKSB7DQkJCQkJCQkkcGllY2UxID0gc3RyaXBfdGFncyhzdWJzdHIoJHN0cmluZywwLCRuYWNoKSk7DQkJCQkJCX0gZWxzZSB7DQkJCQkJCQkkcGllY2UxID0gc3RyaXBfdGFncyhzdWJzdHIoJHN0cmluZywkcG9zLSR2b3IsJHZvciskbmFjaCkpOw0NCQkJCQkJCSRwaWVjZTEgPSBzdHJzdHIgKCRwaWVjZTEsIiAiKTsgLy8gdmVybWVpZGV0IEJydWNoc3R1ZWNrZSB2b24gV29lcnRlcm4gYW0gQW5mYW5nIGRlcyBLb250ZXh0DQkJCQkJCX0NDQ0NCQkJCQkJJHBpZWNlMSA9IHN1YnN0cigkcGllY2UxLCAwLCBzdHJsZW4oc3RycmNocigkcGllY2UxLDMyKSkqKC0xKSkuIiAuLi4iOyAvLyB2ZXJtZWlkZXQgQnJ1Y2hzdHVlY2tlIHZvbiBXb2VydGVybiBhbSBFbmRlIGRlcyBLb250ZXh0DQkJCQkJCSRyZXN0ID0gIjxiciAvPiRwaWVjZTEiOw0NDQ0NCQkJCQkJJGZpbGVmb3JzaXplID0gJGZpbGU7DQkJCQkJCWlmICgkc2hvd19leHQgIT09IHRydWUpIHsNCQkJCQkJCSRpbmZvID0gcGF0aGluZm8oJGZpbGUpOw0JCQkJCQkJJGZpbGUgPSAgYmFzZW5hbWUoJGZpbGUsJy4nLiRpbmZvWydleHRlbnNpb24nXSk7DQkJCQkJCX0NDQ0JCQkJCQlpZigkdm9yPT0iMCIgJiYgJG5hY2g9PSIwIikgJHJlc3QgPSAiIjsNDQkgICAgICAgICAgICAgICAgICAgIGlmKCEkZGVzY3JpcHRpb24gPT0gIiIgJiYgJHNob3dfZGVzYyA9PSB0cnVlKSAkcmVzdCA9ICI8YnIgLz48c3Ryb25nPiRiZXNjaHJlaWI8L3N0cm9uZz4gJGRlc2NyaXB0aW9uIjsNCQkJCQkJaWYoJGZpbGVuYW1lKSAkdGl0ZWwgPSAkZmlsZTsNDQkJCQkJCWlmIChpc3NldCgkY2hhdmUpICYmICRjaGF2ZSA9PSAiMzIxIil7DQkJCQkJCQkvLyB1bmRvY3VtZW50ZWQ6IG51ciBkaXIgemVpZ2VuDQkJCQkJCQlpZiAoaXNzZXQoJHNob3dfZGlyX29ubHkpICYmICRzaG93X2Rpcl9vbmx5ID09PSB0cnVlKSB7DQkJCQkJCQkJJGxhc3RfZGlyID0gZXhwbG9kZSgnLycsICRkaXIpOw0JCQkJCQkJCSR4ID0gYXJyYXlfa2V5cygkbGFzdF9kaXIpOw0JCQkJCQkJCSRsYXN0X2tleSA9IGVuZCgkeCkgLTE7DQkJCQkJCQkJJHRpdGVsID0gJGxhc3RfZGlyWyRsYXN0X2tleV07DQkJCQkJCQkJJGZpbGU9IiI7DQkJCQkJCQl9DQkJCQkJCX0NDQkJCQkJCWlmKCR0aXRlbCA9PSAiIikgJHRpdGVsID0gJGZpbGU7DQ0NCQkJCQkJaWYgKGlzc2V0KCRxdWVyeSkpew0JCQkJCQkJJHFkaXIgPSBzdHJfcmVwbGFjZSgiLi8iLCIiLCRkaXIpOyAvLyBlbnRmZXJudCBkYXMgZnVlaHJlbmRlIC4vIGJlaW0gcXVlcnkgc3RyaW5nDSAgICAgICAgICAgICAgICAgICAgICAgICAJaWYgKGlzc2V0KCRxdWVyeV9lbmR1bmcpICYmICRxdWVyeV9lbmR1bmcgPT0gIm5vIikgew0gICAgICAgICAgICAgICAgICAgICAgICAgIAkJJGZleHQgID0gYXJyYXlfcG9wKGV4cGxvZGUoJy4nLCAkZmlsZSkpOw0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRmbmFtZSA9IGJhc2VuYW1lKCRmaWxlLCAnLicuJGZleHQpOw0JCQkJCQkJICAgICRsaW5rID0gJHF1ZXJ5LiRxZGlyLiRmbmFtZTsNICAgICAgICAgICAgICAgICAgICAgICAgCX0gZWxzZSB7DQkJCQkJCQkJJGxpbmsgPSAkcXVlcnkuJHFkaXIuJGZpbGU7DSAgICAgICAgICAgICAgICAgICAgICAgCQl9DQkJCQkJCX0gZWxzZSB7DQkJCQkJCQkkbGluayA9ICRkaXIuJGZpbGU7DQkJCQkJCX0NDQkJCQkJCWlmICgkX1NFUlZFUlsnU0VSVkVSX05BTUUnXSA9PSAid2ViZGVzaWduLndlaXNzaGFydC5kZSIpIHsNCQkJICAgICAgICAgICAgDSAgICAgICAgICAgICAgICAgIAkJCS8vIFVtbGVpdGVuIHZvbiBLb21tZW50YXJlbiBhdWYgZGVuIEFydGlrZWw6DSAgICAgICAgICAgICAgICAgIAkJCWlmIChzdHJwb3MoJGxpbmssJ2NvbW1lbnQnKSAhPT0gZmFsc2UpIHsNICAgICAgICAgICAgICAgICAgICAgCQkJJHRpdGVsID0gc3RyX3JlcGxhY2UoImNvbW1lbnRfIiwiIiwkdGl0ZWwpOw0gICAgICAgICAgICAgICAgICAgICAJCQkkdGl0ZWwgPSBzdHJfcmVwbGFjZSgiLnhtbCIsIi5waHAiLCR0aXRlbCk7DSAgICAgICAgICAgICAgICAgICAgIAkJCSR0aXRlbCA9ICdLb21tZW50YXIgYXVmIGRlciBTZWl0ZSAnLiR0aXRlbDsNICAgICAgICAgICAgICAgICAgDSAgICAgICAgICAgICAgICAgICAgIAkJCSRsaW5rID0gc3RyX3JlcGxhY2UoImNvbW1lbnRfIiwiIiwkbGluayk7DSAgICAgICAgICAgICAgICAgICAgIAkJCSRsaW5rID0gc3RyX3JlcGxhY2UoIi54bWwiLCIucGhwIiwkbGluayk7DSAgICAgICAgICAgICAgICAgIAkJCX0NDSAgICAgICAgICAgICAgICAgIAkJCS8vIEpldHp0IFVtbGVpdGVuIHZvbiBtZC1UZXh0ZmlsZXMgYXVmIGRlbiBBcnRpa2VsOg0gICAgICAgICAgICAgICAgICAJCQlpZiAoc3RycG9zKCRsaW5rLCcvbWFya2Rvd24vJykgIT09IGZhbHNlKSB7DSAgICAgICAgICAgICAgICAgICAgIAkJCSRsaW5rID0gc3RyX3JlcGxhY2UoIm1hcmtkb3duLyIsIiIsJGxpbmspOw0gICAgICAgICAgICAgICAgICAgICAJCQkkbGluayA9IHN0cl9yZXBsYWNlKCJfdGV4dC50eHQiLCIucGhwIiwkbGluayk7DSAgICAgICAgICAgICAgICAgICAgIAkJCSRsaW5rID0gc3RyX3JlcGxhY2UoInBiXyIsIiIsJGxpbmspOw0JCQkgICAJCQkJCSR0aXRlbCA9IHN0cl9yZXBsYWNlKCIuLyIsIiIsJGxpbmspOyANICAgICAgICAgICAgICAgICAgCQkJfQ0JCQkJCQl9DQkJCQkJCQ0JCQkJCQlpZiAoaXNzZXQoJGNoYXZlKSAmJiAkY2hhdmUgPT0gIjMyMSIpew0JCQkJICAJCQkvLyBVbWxlaXRlbiB2b24gSW5jbHVkZS1EYXRlaWVuOg0JCQkJICAJCQlpZiAoaXNzZXQoJHJlZGlyX3N1ZmZpeCkgJiYgaXNzZXQoJHJlZGlyX3JlcGxhY2UpKSB7DSAgICAgICAgICAgICAgICAgICAgIAkJCSR0aXRlbCA9IHN0cl9yZXBsYWNlKCRyZWRpcl9zdWZmaXgsJHJlZGlyX3JlcGxhY2UsJHRpdGVsKTsNICAgICAgICAgICAgICAgICAgICAgCQkJJGxpbmsgPSBzdHJfcmVwbGFjZSgkcmVkaXJfc3VmZml4LCRyZWRpcl9yZXBsYWNlLCRsaW5rKTsNCQkJCSAgCQkJfQkJCQkNCQkJCQkJfQ0JCQkJCQkNCQkJCQkJaWYoJHRpdGVsICE9ICIiKSB7DQkJCQkJCQkNCQkJCQkJCSR0aXRlbCA9IHRyaW0oJHRpdGVsKTsNDQkJCQkJCQlpZiAoJHRhcmdldCA9PSAiYmxhbmsiKSB7DQkJCQkJCQkJJHppZWwgPSAnIHRhcmdldD0iX2JsYW5rIic7DQkJCQkJCQkJJGp1bXAgPSBmYWxzZTsNCQkJCQkJCX0gZWxzZWlmICgkdGFyZ2V0ID09ICJwYXJlbnQiKSB7DQkJCQkJCQkJJHppZWwgPSAnIHRhcmdldD0iX3BhcmVudCInOw0JCQkJCQkJCSRqdW1wID0gZmFsc2U7DQkJCQkJCQl9IGVsc2VpZiAoJHRhcmdldCAhPSAiIikgew0JCQkJCQkJCSR6aWVsID0gJyB0YXJnZXQ9IicuJHRhcmdldC4nIic7DQkJCQkJCQkJJGp1bXAgPSBmYWxzZTsNCQkJCQkJCX0gZWxzZSB7DQkJCQkJCQkJJHppZWwgPSAnJzsNCQkJCQkJCX0NDQkJCQkJCQlpZiAoJHBmYWQgPT0gdHJ1ZSkgew0JCQkJCQkJCWlmIChpc3NldCgkcXVlcnkpKXsNCQkgICAgICAgICAgICAgICAgICAgICAgICAJJHVybCA9ICJVUkw6Jm5ic3A7PGEgaHJlZj1cIiIuJGxpbmsuIlwiIi4kemllbC4iPiIuJHByb3QuJHBmYWRpbmZvLiRsaW5rLiI8L2E+IjsNCQkJCQkJCQl9IGVsc2Ugew0JCSAgICAgICAgICAgICAgICAgICAgICAgIAkkdXJsID0gIlVSTDombmJzcDs8YSBocmVmPVwiIi4kbGluay4iXCIiLiR6aWVsLiI+Ii4kcHJvdC4kcGZhZGluZm8uc3Vic3RyKCRsaW5rLDEpLiI8L2E+IjsNCQkJCQkJCQl9DQkgICAgICAgICAgICAgICAgICAgCQl9IGVsc2Ugew0JICAgICAgICAgICAgICAgICAgICAgCQkkdXJsID0gIiI7DQkgICAgICAgICAgICAgICAgICAgICAgIAl9DQ0JICAgICAgICAgICAgICAgICAgIAkJaWYgKCRhZW5kX2RhdCA9PSB0cnVlKSB7DQkJCQkJCQkJaWYgKCRkYXRlZm9ybSA9PSAiZW4iKSB7DQkJCQkJCQkJCUAkbW9kID0gJGZpbGVkYXRlLmRhdGUoIm0vZC95IiwgZmlsZW10aW1lKCRkaXIuJGZpbGVmb3JzaXplKSk7DQkJCQkJCQkJfSBlbHNlIHsNCQkJCQkJCQkJQCRtb2QgPSAkZmlsZWRhdGUuZGF0ZSgiZC5tLnkiLCBmaWxlbXRpbWUoJGRpci4kZmlsZWZvcnNpemUpKTsNCQkJCQkJCQl9DQkJCQkJCQkJDQkJCQkJCQl9IGVsc2Ugew0JICAgICAgICAgICAgICAgICAgICAJCSRtb2QgPSAiIjsNCSAgICAgICAgICAgICAgICAgICAgCX0NDQkgICAgICAgICAgICAgICAgICAgCQlpZiAoJGFlbmRfZGF0ICYmICRwZmFkKSB7DQkgICAgICAgICAgICAgICAgICAgIAkJJHRyZW5uZXIgPSAiIC0gIjsNCSAgICAgICAgICAgICAgICAgICAgCX0gZWxzZSB7DQkgICAgICAgICAgICAgICAgICAgICAgIAkJJHRyZW5uZXIgPSAiIjsNCSAgICAgICAgICAgICAgIAkJCX0NCSAgICAgICAgICAgICAgICAJCSR0cmVmZl9hbno9IiI7DQkgICAgICAgICAgICAgICAgICAJCWlmKCR0cmVmZmVyICYmICR0ZXN0Pj0xKSAkdHJlZmZfYW56PSJbIi4kdGVzdC4iJm5ic3A7Ii4kdHJlZmYuIl0iOw0NICAgICAgICAgICAgICAgICAgICAgIAkJaWYgKCRwZmFkIHx8ICRhZW5kX2RhdCkgew0gICAgICAgICAgICAgICAgICAgICAgICAJCWlmICgkaWZyYW1lICE9PSB0cnVlKSB7IA0gICAgICAgICAgICAgICAgICAgICAgICAgCQkJJGFycmF5IC49ICR0ZXN0LiI8YSBocmVmPVwiIi4kbGluay4iXCIiLiR6aWVsLiI+Ii4kdGl0ZWwuIjwvYT4gIi4kdHJlZmZfYW56LiRyZXN0LiI8c3BhbiBjbGFzcz0nbW9kJz4iLiR1cmwuJHRyZW5uZXIuJG1vZC4iPC9zcGFuPlxuIjsNICAgICAgICAgICAgICAgICAgICAgICAgICAgCQl9IGVsc2Ugew0gICAgICAgICAgICAgICAgICAgICAgICAgICAJCQkkYXJyYXkgLj0gIiRsaW5rXG4iOw0gICAgICAgICAgICAgICAgICAgICAgIAkJCX0NICAgICAgICAgICAgICAgICAgICAgCQl9IGVsc2Ugew0gICAgICAgICAgICAgICAgICAgICAgICAJCWlmICgkaWZyYW1lICE9PSB0cnVlKSB7IA0gICAgICAgICAgICAgICAgICAgICAgICAgCQkJJGFycmF5IC49ICR0ZXN0LiI8YSBocmVmPVwiIi4kbGluay4iXCIiLiR6aWVsLiI+Ii4kdGl0ZWwuIjwvYT4gIi4kdHJlZmZfYW56LiRyZXN0LiJcbiI7DSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCX0gZWxzZSB7DSAgICAgICAgICAgICAgICAgICAgICAgCQkJCSRhcnJheSAuPSAiJGxpbmtcbiI7DSAgICAgICAgICAgICAgICAgICAgICAgICAJCX0NICAgICAgICAgICAgICAgICAgICAgICAgCX0NDQkgICAgICAgICAgICAgICAJCQkkZm91bmQgKys7DQ0JCQkJCQl9DQkJCQkJfQ0JCQkJfQ0JCQl9DQkJfQ0JfQ0JfQ0JfQ0JDQlAY2xvc2VkaXIoJHZlcnopOw0NCX0NZWNobyAnPC9wPic7DWlmICgkc2VhcmNoID09ICKnZm91bmQiKSB7ZWNobyAnJiM4Mzt1JiM5OTtoJiMxMTU7YyYjMTE0O2kmIzExMjt0ICYjMTY5OyAyJiM0ODswNSAmIzExOTtlJiM5ODtkJiMxMDE7cyYjMTA1O2duJiM0NjsmIzExOWUmIzEwNTtzJiMxMTU7aCYjOTc7ciYjMTE2OyYjNDY7JiMxMDA7ZSc7ZXhpdDt9DQ0NLy8gTG9nZGF0ZWkgc2NocmVpYmVuIHVuZCBCZW5hY2hyaWNodGlndW5ncy1NYWlsIG1pdCBpcCAtIFNwZXJyZToNLy8gYmFzZTY0IHNjaHJlaWJ0IDIgTG9nZWludHLDpGdlIQ0NZnVuY3Rpb24gc2NocmVpYmVuKCRkYXRlaSwkbW9kZSl7DQlnbG9iYWwgJHNlYXJjaDsNCSRmcCA9IEBmb3BlbigkZGF0ZWksJG1vZGUpOw0JZmxvY2soJGZwLExPQ0tfRVgpOw0JZndyaXRlKCRmcCwkX1NFUlZFUlsiUkVNT1RFX0FERFIiXS4ifCIudGltZSgpLiJ8Ii4kc2VhcmNoLiJcbiIpOw0JZmxvY2soJGZwLExPQ0tfVU4pOw0JZmNsb3NlKCRmcCk7DX0NDQ1mdW5jdGlvbiBpcF9zcGVycmUoKSB7DQlnbG9iYWwgJHNlYXJjaCwgJHJlbG9hZGxpbWl0LCAkaW5zdGFsbGF0aW9uX3BhdGg7DQkkcmVsb2FkbG9nZGF0ZWkgPSAkaW5zdGFsbGF0aW9uX3BhdGguJy9yZWxvYWQudHh0JzsNCSRhbnphaGxlaW50cmFlZ2UgPSAxMDA7DQ0JLy8gUHJ1ZWZlbiwgb2IgcmVsb2FkZGF0ZWkgZXhpc3RpZXJ0ID0+IGFuc29uc3RlbiBFcnN0ZWxsZW4NDQlpZighZmlsZV9leGlzdHMoJHJlbG9hZGxvZ2RhdGVpKSkgew0JCSRkYXRlaSA9IGZvcGVuKCRyZWxvYWRsb2dkYXRlaSwidysiKTsNCQlmY2xvc2UoJGRhdGVpKTsNCX0NDQkkZnAgPSBmaWxlKCRyZWxvYWRsb2dkYXRlaSk7DQkkc2l6ZSA9IHNpemVvZigkZnApOw0JJGF1c2dhYmUgPSBmYWxzZTsNCS8vIERhdGVpIHNjaHJlaWJlbiwgd2VubiBMaXN0ZSB2b2xsOg0JaWYoJHNpemUgPj0gJGFuemFobGVpbnRyYWVnZSl7DQkJc2NocmVpYmVuKCRyZWxvYWRsb2dkYXRlaSwidyIpOw0NCQkvLyBQcnVlZmVuLCBvYiBlaW5lIElQIGluIGRlciBMaXN0ZSBzdGVodA0JfSBlbHNlIHsNCQlmb3IgKCRpPTA7JGk8PSRzaXplOyRpKyspIHsNICAgICAgCQlAJHplaWxlID0gZXhwbG9kZSgifCIsJGZwWyRpXSk7DSAgICAgIAkJLy8gSVAgd2lyZCBnZWZ1bmRlbg0gICAgICAJCWlmICgkemVpbGVbMF0gPT0gJF9TRVJWRVJbIlJFTU9URV9BRERSIl0gQU5EICR6ZWlsZVsxXSA+ICh0aW1lKCktJHJlbG9hZGxpbWl0KSAmJiB0cmltKCR6ZWlsZVsyXSkgPT0gdHJpbSgkc2VhcmNoKSl7DQkJCQkkYXVzZ2FiZSA9IHRydWU7DQkJCQkvLyBJUCB3aXJkIG5pY2h0IGdlZnVuZGVuDSAgICAgIAkJfQ0JCX0NCQkvLyBQcm90b2tvbGxpZXJ0IGRpZSBJUC1BZHJlc3NlIChzY2hyZWlidCk6DQkJc2NocmVpYmVuKCRyZWxvYWRsb2dkYXRlaSwiYSsiKTsNCX0NCXJldHVybiBAJGF1c2dhYmU7DX0NDS8vIGpldHp0IExvZ2ZpbGUgdW5kIEJlbmFjaHJpY2h0aWd1bmdzLU1haWwgc2NocmVpYmVuOg0NaWYoaXBfc3BlcnJlKCk9PWZhbHNlKSB7DQkNCSRzdWNoYmVncmlmZiA9IGh0bWxfZW50aXR5X2RlY29kZSgkc2VhcmNoKTsNDQkvLyBCZW5hY2hyaWNodGlndW5ncyBNYWlsOg0JaWYoJG1haWwgPT0gdHJ1ZSAmJiAkc2VhcmNoICE9ICR2YWx1ZSkgew0JCWlmICghJHNlbmRlcikgeyRzZW5kZXIgPSAiU3VjaHNjcmlwdCI7fQ0JCW1haWwoJGFkbWluYWRkcmVzcywiU3VjaGUgYXVmICRzZWl0ZSIsIkZvbGdlbmRlciBCZWdyaWZmIHd1cmRlIHNvZWJlbiBhdWYgZGVyIFNlaXRlICRzZWl0ZSBnZXN1Y2h0OiBcbiRzdWNoYmVncmlmZlxuVHJlZmZlcjogJGZvdW5kIiwiRnJvbTogJHNlbmRlciIgKTsNCX0NDQkvLyBMb2dmaWxlIHNjaHJlaWJlbjoNCSR0b2RheSA9IGRhdGUoImQubS4gSDppICIpOw0JJG5sID0gJHRvZGF5LiRzdWNoYmVncmlmZi4iKCIuJGZvdW5kLiIpXG4iOw0JDQkNCSRsaW5lcyA9IGZpbGUoJGluc3RhbGxhdGlvbl9wYXRoLicvc2VhcmNobG9nLnR4dCcpOw0JJGxpbmVzID0gYXJyYXlfdW5pcXVlKCRsaW5lcyk7IC8vIER1cGxpa2F0ZSBsb2VzY2hlbg0NDQkvLyBXZW5uIG1laHIgYWxzICRtYXhtc2cgKGRlZmF1bHQ6MTAwKSBMb2dlaW50cmFlZ2UgYWVsdGVzdGUgbG9lc2NoZW46DQkvLyAkbWF4bXNnID0gMTAwOw0JaWYoY291bnQoJGxpbmVzKSA+ICRtYXhtc2cpIHVuc2V0KCRsaW5lc1swXSk7DQ0JJG5sID0gaW1wbG9kZSgiIiwgJGxpbmVzKS4kbmw7DQkkZnAgPSBmb3BlbigkaW5zdGFsbGF0aW9uX3BhdGguJy9zZWFyY2hsb2cudHh0JywgJ3cnKTsNCWZ3cml0ZSgkZnAsICRubCk7DQlmY2xvc2UoJGZwKTsNfQ0NDQ0JaWYoJGZvdW5kID09ICIwIikJew0JCWVjaG8gJG5vcmVzdWx0Ow0JCWlmIChzdHJsZW4oJHNlYXJjaGxvdykgPiAkbGVuZ3RoICYmICR2b3JzY2hsYWcgIT0gIiIpIHsgDQkJDQkJCWlmKG1iX2RldGVjdF9lbmNvZGluZygkc2VhcmNobG93LCAnVVRGLTgsIElTTy04ODU5LTEnKSA9PT0gJ1VURi04Jyl7IA0JCQkJJHN5biA9IG1iX3N1YnN0cih0cmltKCRzZWFyY2hsb3cpLDAsJGxlbmd0aCwndXRmLTgnKTsNCQkJfSBlbHNlIHsNCQkJCSRzeW4gPSBzdWJzdHIodHJpbSgkc2VhcmNobG93KSwwLCRsZW5ndGgpOw0JCQl9DQkJCWVjaG8gIjxwPiR2b3JzY2hsYWcgPGEgaHJlZiA9XCIiLiBiYXNlbmFtZSgkX1NFUlZFUlsnUEhQX1NFTEYnXSkuIj9xPSRzeW4mYW1wO2dlZ2VuPSZhbXA7ZGF0ZT0iLnRpbWUoKS4iXCI+JHN5bjwvYT4uPC9wPiI7DQkJfQ0JfQ0NCWlmKCRmb3VuZCA9PSAiMSIgJiYgJGp1bXAgPT0gdHJ1ZSAmJiAkX1NFUlZFUlsnUEhQX1NFTEYnXSAhPSBzdWJzdHIoJGxpbmssMSkpCXsgLy9kYXMgU3VjaHNjcmlwdCBzZWxic3QgZGFyZiBuaWNodCBhbmdlc3BydW5nZW4gd2VyZGVuOiBFbmRsb3NzY2hsZWlmZQ0gIAkJJGxpbmsgPSBzdWJzdHIoJGxpbmssMSk7CS8vZGVuIFB1bmt0IHZvciBkZW0gZGlyIHdlZw0JCSRzZWFyY2ggPSBzdHJfcmVwbGFjZSgnJnF1b3Q7JywnIicsJHNlYXJjaCk7IC8vIHdlZ2VuIHNlYXJjaHRlcm0uanMNCQkNCQkvLyBkb3BwZWx0ZSBzbGFzaCB2b3IgRGF0ZWluYW1lbiB1bnRlcmRydWVja2VuDQkJJGRpcm5hbWUgPSBkaXJuYW1lKCRfU0VSVkVSWydQSFBfU0VMRiddKTsNCQlpZigkZGlybmFtZSA9PSAiLyIpICRkaXJuYW1lID0gIiI7DQkJLy8gYmFja3NsYXNoIHZvbiBXaW5kb3dzIFNlcnZlcm4gcmF1czoNCQkkZGlybmFtZSA9IHN0cl9yZXBsYWNlKCJcXCIsIiIsJGRpcm5hbWUpOw0NCQlpZiAoaXNzZXQoJHF1ZXJ5KSl7DQkJCWhlYWRlcigiTG9jYXRpb246IGh0dHA6Ly8iLiRfU0VSVkVSWydIVFRQX0hPU1QnXS4kZGlybmFtZS4iLyIuJGxpbmsuIiZxPSIuJHNlYXJjaCk7DQkJfSBlbHNlIHsNCQkJaGVhZGVyKCJMb2NhdGlvbjogaHR0cDovLyIuJF9TRVJWRVJbJ0hUVFBfSE9TVCddLiRkaXJuYW1lLiRsaW5rLiI/cT0iLiRzZWFyY2gpOw0JCX0NCQlleGl0Ow0JfQ0NCWlmKCRmb3VuZCA+ICIxIikgew0gICAgICAgICRuID0gJHBsdXJhbDsgJGUgPSAiZSI7ICRzID0gInMiOw0JfSBlbHNlIHsNICAgIAkkZSA9ICRuID0gJHMgPSAiIjsNCX0NDQlpZigkZm91bmQgPj0gIjEiKSB7DQ0JCSRhcnJheSA9IGV4cGxvZGUoIlxuIiwgJGFycmF5KTsNCQluYXRzb3J0KCRhcnJheSk7DQkJcmVzZXQoJGFycmF5KTsNCQlpZiAoIWlzc2V0KCRyZXZlcnNlc29ydCkpIHskYXJyYXkgPSBhcnJheV9yZXZlcnNlKCRhcnJheSk7fQ0NICAgICAgJGkgPSAkYW56X2RhdDsNDQ0gICAgICAvLyBhbnN0ZWxsZSBkZXIgd2hpbGUgZWluIGZvciBTY2hsZWlmZSwgd2VubiBpY2ggd2VpdGVyZSBTZWl0ZW4gYW56ZWlnZW4gd2lsbDoNICAgICAgJG5leHQ9MDsNICAgICAgaWYoaXNzZXQoJF9HRVRbIm5leHQiXSkgfHwgaXNzZXQoJF9QT1NUWyJuZXh0Il0pKSB7DSAgICAgICAgICAgIGlmIChpc3NldCgkX0dFVFsibmV4dCJdKSAmJiAkX0dFVFsibmV4dCJdICE9ICIiKSAkbmV4dCA9ICRfR0VUWyJuZXh0Il07DSAgICAgICAgICAgIGlmIChpc3NldCgkX1BPU1RbIm5leHQiXSkgJiYgJF9QT1NUWyJuZXh0Il0gIT0gIiIpICRuZXh0ID0gJF9QT1NUWyJuZXh0Il07DSAgICAgIH0NICAgICAgDSAgICAgICRuZXh0MT0kbmV4dCsxOw0gICAgICAkd2VpdGVyPSRuZXh0KyRhbnpfZGF0Ow0gICAgICBmb3IoJGNvdW50ID0gMCArICRuZXh0OyAkY291bnQgPCAkYW56X2RhdCArICRuZXh0OyAkY291bnQrKykgew0gICAgICAgICBpZiAoJGlmcmFtZSAhPT0gdHJ1ZSkgeyANICAgICAgICAgICAgaWYgKEAkYXJyYXlbJGNvdW50XSkgJGF1c2dhYmUgLj0gIjxsaT4iLnN1YnN0cihzdHJzdHIoJGFycmF5WyRjb3VudF0sICc8YSBocmVmJyksMCkuIjwvbGk+XG4iOw0gICAgICAgICB9IGVsc2Ugew0gICAgICAgICAgICBpZiAoQCRhcnJheVskY291bnRdKSAkYXVzZ2FiZSAuPSAiPGlmcmFtZSBjbGFzcz0nc2VhcmNoaWZyYW1lJyBzcmM9JyIuJGFycmF5WyRjb3VudF0uIic+PC9pZnJhbWU+XG4iOw0gICAgICAgICB9DSAgICAgIH0NDQkJaWYgKCFpc3NldCgkZm91bmR0eHQxKSl7JGZvdW5kdHh0MSA9ICJJaHIgU3VjaGJlZ3JpZmYgd3VyZGUgIjt9DQkJaWYgKCFpc3NldCgkZm91bmR0eHQyKSl7JGZvdW5kdHh0MiA9ICJTZWl0ZSI7fQ0JCWlmICghaXNzZXQoJGZvdW5kdHh0MykpeyRmb3VuZHR4dDMgPSAiIGdlZnVuZGVuLiI7fQ0NCQllY2hvICc8cD4nLiRmb3VuZHR4dDEuJzxzdHJvbmc+ICcuJGZvdW5kLicgPC9zdHJvbmc+Jy4kZm91bmR0eHQyLiRuLicgJy4kZm91bmR0eHQzOw0NICAgICAgaWYgKCRuZXh0ID09IDApIHsNICAgICAgICAgICAgaWYgKCRhbnpfZGF0IDwgJGZvdW5kKSB7DSAgICAgIAkJCWlmIChpc3NldCgkYW5nZXplaWd0dHh0KSl7DSAgICAgICAgIAkJCQllY2hvICRhbmdlemVpZ3R0eHQ7DSAgICAgIAkJCX0gZWxzZSB7DSAgICAgICAgIAkJCQllY2hvICIuPGJyIC8+QW5nZXplaWd0IHdlcmRlbiA8c3Ryb25nPiRhbnpfZGF0PC9zdHJvbmc+IEVyZ2Vibmlzc2UgcHJvIFNlaXRlIjsNICAgICAgCQkJfQ0gICAgICAJCX0NDS8vICAgICAgCQlpZigkdHJlZmZlciAmJiAkZm91bmQgPiAxICYmICRvciA9PT0gZmFsc2UpIHsgDQkgICAgICAJaWYoJHRyZWZmZXIgJiYgJGZvdW5kID4gMSkgeyANICAgICAgCQkJaWYgKGlzc2V0KCRzb3J0dHh0KSl7DSAgICAgIAkJCQkkc29ydGhpbndlaXMgPSAkc29ydHR4dDsNICAgICAgCQkJfSBlbHNlIHsNICAgICAgCQkJCSRzb3J0aGlud2VpcyA9ICIsIHNvcnRpZXJ0IG5hY2ggW0FuemFobCZuYnNwO2RlciZuYnNwO1RyZWZmZXImbmJzcDtwcm8mbmJzcDtEb2t1bWVudF0iOw0gICAgICAJCQl9DSAgICAgIAkJfSANCQkJZWNobyAiJHNvcnRoaW53ZWlzLiI7DSAgICAgIH0NICAgICAgZWNobyAiPC9wPiI7DQ0vLyBOZXVlcyBGZW5zdGVyDWlmICgkdGFyZ2V0ID09ICIiICYmICR0YXJnZXR3YWhsID09IHRydWUpIHsNZWNobycNPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPg0vKiA8IVtDREFUQVsgKi8NaWYoZG9jdW1lbnQuY29va2llLmluZGV4T2YoXCdzdWNob2VmZm5lblwnKSAhPT0gLTEpew0gICBhZGRFdmVudCh3aW5kb3csIFwnbG9hZFwnLCBsaW5rb3BlbmVyKTsNICAgZG9jdW1lbnQud3JpdGUgKFwnPGZvcm0gYWN0aW9uPSIiPjxwIGNsYXNzPSJsaW5rb3BlbmVyIj48aW5wdXQgdHlwZT0iY2hlY2tib3giIGNoZWNrZWQ9ImNoZWNrZWQiIG9uY2hhbmdlPSJsaW5rY29va2llKCkiIG9uY2xpY2s9ImxpbmtvcGVuZXIodGhpcy5jaGVja2VkKSIgaWQ9ImxpbmtzbmV3d2luIiAvPiA8bGFiZWwgZm9yPSJsaW5rc25ld3dpbiI+VHJlZmZlciBpbiBuZXVlbSBGZW5zdGVyICZvdW1sO2ZmbmVuPyA8XC9sYWJlbD48XC9wPjxcL2Zvcm0+XCcpOw19IGVsc2Ugew0gICBkb2N1bWVudC53cml0ZSAoXCc8Zm9ybSBhY3Rpb249IiI+PHAgY2xhc3M9ImxpbmtvcGVuZXIiPjxpbnB1dCB0eXBlPSJjaGVja2JveCIgb25jaGFuZ2U9Imxpbmtjb29raWUoKSIgb25jbGljaz0ibGlua29wZW5lcih0aGlzLmNoZWNrZWQpIiBpZD0ibGlua3NuZXd3aW4iIC8+IDxsYWJlbCBmb3I9ImxpbmtzbmV3d2luIj5UcmVmZmVyIGluIG5ldWVtIEZlbnN0ZXIgJm91bWw7ZmZuZW4/IDxcL2xhYmVsPjxcL3A+PFwvZm9ybT5cJyk7DX0NLyogXV0+ICovDTwvc2NyaXB0Pg0nOw19DQ0gICAgICAgICAgICAkbGlzdF9hcnQ9InVsIjsNICAgICAgICAgICAgaWYgKCRudW1fbGlzdCkkbGlzdF9hcnQ9Im9sIHN0YXJ0PSRuZXh0IjsNDSAgICAgICAgICAgIC8vIHVtIFhNTCBGZWhsZXIgKEhUTUwgVGlkeSBXYXJudW5nZW4pIHp1IHVudGVyYmluZGVuOg0gICAgICAgICAgICAvLyBodHRwOi8vd3d3LnRpbXJlZXZlcy5kZS9uZXUvd2ViZGVzaWduL3dlYi0yMC5waHANICAgICAgICAgICAgJHN1Y2htdXN0ZXIgPSAnLyYoPyEoW2EtekEtWl17Miw3fXwjXGQrfCN4WzAtOWEtZkEtRl0rKTspL2knOw0gICAgICAgICAgICAkZXJzZXR6dW5nID0gJyZhbXA7JzsNICAgICAgICAgICAgJGF1c2dhYmUgPSBwcmVnX3JlcGxhY2UoJHN1Y2htdXN0ZXIsICRlcnNldHp1bmcsICRhdXNnYWJlKTsNDSAgICAgICAgICAgIGlmICgkaWZyYW1lICE9PSB0cnVlKSB7IA0gICAgICAgICAgICAgICBpZiAoJG51bV9saXN0KSB7DSAgICAgICAgICAgICAgICAgIGVjaG8gIlxuPG9sIHN0YXJ0PSciLiRuZXh0MS4iJz5cbiIuJGF1c2dhYmUuIjwvb2w+XG4iOw0gICAgICAgICAgICAgICB9IGVsc2Ugew0gICAgICAgICAgICAgICAgICBlY2hvICJcbjx1bD5cbiIuJGF1c2dhYmUuIjwvdWw+XG4iOw0gICAgICAgICAgICAgICB9DSAgICAgICAgICAgIH0gZWxzZSB7DSAgICAgICAgICAgICAgIGVjaG8gIlxuIi4kYXVzZ2FiZS4iXG4iOw0gICAgICAgICAgICB9DQ0gICAgICBpZiAoJG5leHQgPCAoJGZvdW5kIC0gJGFuel9kYXQpKSB7DSAgICAgIA0gICAgICAgICBpZiAoJG1ldGhvZCA9PSAiR0VUIikgew0gICAgICAgICAgICAvL25leHQgcmF1cywgd2VpbHMgc29uc3QgeC1tYWwgYW5nZWhhZW5ndCB3aXJkOg0gICAgICAgICAgICAkcXVlcnlzdHJpbmcgPSAiIjsNICAgICAgICAgICAgaWYoaXNzZXQoJF9TRVJWRVJbIlFVRVJZX1NUUklORyJdKSkgeyANICAgICAgICAgICAgICAgJHF1ZXJ5c3RyaW5nID0gJF9TRVJWRVJbIlFVRVJZX1NUUklORyJdOyANICAgICAgICAgICAgICAgJGZpcnN0cXVlcnkgPSBzdHJwb3MoJHF1ZXJ5c3RyaW5nLCImbmV4dCIpOw0gICAgICAgICAgICAgICBpZiAoJGZpcnN0cXVlcnkgIT09IGZhbHNlKSB7IA0gICAgICAgICAgICAgICAgICAkcXVlcnlzdHJpbmcgPSBzdWJzdHIoJHF1ZXJ5c3RyaW5nLDAsJGZpcnN0cXVlcnkpOyANICAgICAgICAgICAgICAgfQ0gICAgICAgICAgICB9DSAgICAgICAgICAgICRxdWVyeXN0cmluZyA9IHN0cl9yZXBsYWNlKCImIiwiJmFtcDsiLCRxdWVyeXN0cmluZyk7DSAgICAgICAgICAgIGVjaG8gJzxwIGNsYXNzPSJ3ZWl0ZXIiPjxhIGhyZWY9IicuYmFzZW5hbWUoJF9TRVJWRVJbIlBIUF9TRUxGIl0pLic/Jy4kcXVlcnlzdHJpbmcuJyZhbXA7bmV4dD0nLiR3ZWl0ZXIuJyI+Jy4kd2VpdGVydHh0Lic8L2E+PC9wPic7DSAgICAgICAgIH0NICAgICAgfQ0JfQ19DQ0NZWxzZSB7ZWNobyAkbWlubGVuZ3RoO30NfQ0NZWNobyAkc2VhcmNodGlwOw0NJG10aW1lID0gbWljcm90aW1lKCk7ICRtdGltZSA9IGV4cGxvZGUoICcgJywgJG10aW1lKTsgJG10aW1lID0gJG10aW1lWzFdICsgJG10aW1lWzBdOw0kc3VjaF9lbmRlID0gJG10aW1lOw0kdGltZV9nZXNhbXQgPSAkc3VjaF9lbmRlIC0gJHN1Y2hfc3RhcnQ7DQ1lY2hvICI8ZGl2IGlkPVwic2VhcmNoZm9vdGVyXCI+PHA+IjsNDWlmIChpc3NldCgkYW56YWhsZGF0KSl7DQkkemRhdCA9ICRhbnphaGxkYXQ7DQl9IGVsc2Ugew0JJHpkYXQgPSAiQW56YWhsIGR1cmNoc3VjaHRlciBEYXRlaWVuOiAiOw19DQ1pZiAoJHphaGx6ZWlnICYmICRmb3VuZCA+IDApIGVjaG8gJHpkYXQuJGR1cmNoc3VjaHQuIjxiciAvPiI7DQ1pZiAoJGZvdW5kID4gMCkgew0JaWYgKGlzc2V0KCR0aW1ldHh0KSl7DQkJJHRpbWVoaW53ZWlzID0gJHRpbWV0eHQ7DQl9IGVsc2Ugew0JCSR0aW1laGlud2VpcyA9ICJTdWNoZSBhdXNnZWYmdXVtbDtocnQgaW4gIjsNCX0NDQlpZigkZGF1ZXIpIHsNCSAgICAgIGVjaG8gIiR0aW1laGlud2VpcyIubnVtYmVyX2Zvcm1hdCgkdGltZV9nZXNhbXQsMiwnLCcsJy4nKS4iICRzdWNoZGF1ZXIgJHZlcnNpb25cbiI7DQl9IGVsc2Ugew0JICAgICAgZWNobyAiXG4kdmVyc2lvblxuIjsNCX0NfSBlbHNlIHsNICAgICAgZWNobyAiXG4kdmVyc2lvblxuIjsNfQ1lY2hvICI8L3A+PC9kaXY+IjsNZWNobyAkd2R3Ow0N";eval(base64_decode($NCiR0aW1lX29sZCA9IDA7IC8vIGb8ciBkaWUgRm9ydHNjaHJpdHRzYW56ZWlnZQNCiR0aW1lX29sZCA9IDA7IC8vIGb8ciBkaWUgRm9ydHNjaHJpdHRzYW56ZWlnZQ));?>
