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BRTtPQU9BQztPQW1FQUc7T0E5WkE3aUI7T0E4akJBMEI7OztFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7STs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJO0ssSztLOztLLE07OztPLE07O087O08sUzs7TyxNOztPLEksTyxrQixLOztRLE07Ozs7cUIsTTs7Ozs7dUIsTTs7O1EsTTs7O087USxPO1EsTztRLEs7Ozs7O3NCLE07Ozs7O3dCLE07OztTLE07OztPLE07O0c7O0ksSSxLLGtCLEs7O0c7O0ksSSxLLGtCLEs7O0c7O0ksUzs7b0IsTTtLLFM7OztJO0c7Ryw2QjtHLDZCOzBCLE8saUI7Z0MsTyxpQjs7SSxRO0ksWSxNO0k7Rzs7OzRCLGEsNkI7MEIsYSxtQzs7O0ssUTtLO0ssTztJO0k7OztLLFU7SyxTO0ssVztLLFE7SyxVO0ssVTtLLFk7SyxhO0ssZTtLLFE7SyxPO0ssYTtLLFk7SyxnQjtLLGdCO0ssVTtLLFc7SyxhO0ssYTtLLGU7SyxhO0ssVTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Szs7ZSxtQixnQjs7STs7O00sVyxtQjtNLE8sZ0I7Szs7Ozs7a0I7a0I7OztrQjtrQjs7OztPOzs7Ozs7VyxPO1U7USxTO1EsTztPLE87cUI7OztNOzs7OztPOzs7TTs7OztNOzs7SztJOztLLE07STs7SztJOztLO0k7O0s7Szs7OzttQjtJO0k7Ozs7Szs7SztLO0s7OzsrQixTO0s7OzttQyxTO0s7Ozs7OzsyQixPLDJCOztNOzs7O08sTTtPOzs7VTs7VyxNO1UsTztTO0ssZTtLO0s7SztLLFc7Szs7Ozs7Ozs7Ozs7Ozs7Ozs7YTs7STs7Szs7STs7SyxJOzs7Ozs7STs7SyxvQjs7O2tCO0ssbUQ7SztJO3lCLG9COztLO0s7OztNO007OztLO0k7O0s7Szs7O007TTs7O087Tzs7O1E7UTs7O1M7Uzs7O1U7VTs7O1c7Vzs7O1k7WTs7O2E7YTs7O2M7Yzs7O2U7ZTs7Ozs7Ozs7Ozs7O0s7STs7SztNO0s7STs7SztNLGdCO00saUI7Ozs7OzttQjtNLDhEO007O0s7STs7SyxtQjs7Ozs7OztZOzJCLE07O3FCOztJOztLLEkscUI7Ozs7Ozs7STsyQixRLCtCLFU7O0ssUSwrQjtJOztLO0k7NEIsb0M7MkIsb0M7OEIsTyxnQzs2QixPLGdDOztLOzs7MEI7Yzs7SztJOzs7O00sWTtrQjs7TTtLO0s7TTtPLE07Tzs7Ozs7OztNOzs7OzZCOzs7Ozs4Qix5QixnQjtLOztNOzs7O1E7eUI7UTtROzs7UTt5QjtRO1E7Ozs7Tzt3QjtPO3dCO087Tzs7O007OztLOzs7UTtzQzs7O1E7O087O087O087O087dUI7OztROzs7c0I7OztNO29DOztVLHVEO0s7STs7SztLO0s7SztLO007TTtNOztJOztLOztJOztLO0s7Szs7TTs7TTs7UTtRO1E7O1U7VTtXLE07Ozs7Ozs7VTs7Ozs7OztROztVO1U7VyxNOztVOzs7Ozs7Ozs7O087d0IscUI7Ozs7SztLOzs7OztxQztJO0ksMEI7O0ssSSxPLG9CLE87SyxPO0k7STtJO0k7STtJOztLO0s7SyxJLFcsNkM7Ozs7TSxZO2tCOztNOztJOztLOztJOztLOzs7Ozs7O0s7SztLOztLO3lCO3NCOztPO1E7USxzQjtPOzs7TTtNOztJOztLO0s7TSxxQjtNOztPLEk7TztPO08sSSxxQjtPO1E7UTtTO1M7Ozs7O087UTtRO1M7Uzs7Ozs7TztROzs7USxJOzs7TyxJOzs7TTs7STs7Szs7Ozs7TTs7Tzs7OztPO087Tzs7OztPOztRO1E7Ozs7OztRO1E7OztTO1M7Uzs7UztVLFE7VTs7Ozs7Ozs7O1E7Uzs7Ozs0QixnQjs7Ozs7OztJOztLO0s7TTt1QjtPOztPO3VCO087O0k7O0s7SztNO3VCO087O087O0k7O0s7Ozs7O1UsaUI7O1UsbUIsbUI7Ozs7TyxpQzs7TztPOzs7TTs7STs7SztLOzs7TyxJLHVCLE87Tzs7O3NCLDJCO007TTs7TTtNO007dUIsMkI7O08sc0I7Ozs7STs7SztNOztRO1E7O1U7O1c7VyxNOztVOzs7Uzs7OztPO087Ozs7OzZCOzs7STs7Szs7TTtNO007TTtLOztNO00sb0I7TSxlOztLO0s7OztNO087Tzs7UTtPO087O1E7UTtTLEksaUIsTTs7VTs7Ozs7Ozs7Ozs7VzsrQjs7O1k7Uzs7VTtVO1c7O1c7c0M7Ozs7Uzs7Uzs7aUQ7OztPO087TztPOzs7SztJOztLO3FCO0ssbUI7SztLO0s7Szs7Szs7TyxVO087TztPOzs7Tzt1QjtPO3VCLFc7Tzs7UTtRO1E7Ozs7TztPOzs7O3VCLFc7TztPOzs7O007TTtNO3NCLFc7TztPOzs7O0k7O0s7OztLOzs7OztVLGlCOztVLCtCOztVLHNCOztVLGtDO2tCOzs2QixZO00sUTtNOztJOzs7O007Ozs7SztNO007Ozs7SyxXO0s7STs7Szs7TSxNOzs7Ozs7O3FCOztNO007Ozs7SyxXO0s7NkMsVTtLO0k7O0s7Ozs7Tzs7TTs7OztNOztPO087Ozs7O1EsTTs7Tzs7OztPOzs7Szs7Ozs7Z0M7O2dDO2tCLFk7Ozs7UyxpQjs7Uyw2Qjs7Uzs7UztTO1M7OztJOztLOzs7Ozs7TztPOzs7Ozs7Ozs7Ozs7TztPO087Ozs7TTs7Ozs2Qjs2Qjs4Qjs7O0k7cUIsMEM7O0s7Ozs7O1c7Ozs7OzRCOzRCOzZCOzs7STs7Szs7OztPOztROzs7TztROzs7VSxNO1M7Ozs7O1UsTyxzQjtTLGdCO1M7OztVOzs7Ozs7O1MsTTs7Uzs7OztVLG9COzs7O1E7O1M7Uzs7Ozs7Z0QsTzs7O0k7O0s7OztNOzs7STtvQix3Qjs7SyxVO0ssTztJOztLO0s7SztLOzs7c0MsUzs7O007O08sTztPLE87Ozs7TTs7TyxTOztnQjs7TTs7Tzs7VTs7OztZLGM7WTs7Ozs7O1M7TyxpQixPLGlCOzs7SyxlO0s7SztLO0s7Ozs7Ozs7Ozs7O0k7NkIsYTs7SztJOzs0QixTO0ssTztJOzt3QixZLFM7SztLO0k7OztLOztNO21DO007Ozs7O00sWTt1QztNO00sTzs7Ozs7O00sMkI7TTtNO007O0ssTztJOzs7TSxvQyxnQjs7TztPOzs7O007Ozs7TyxJLEk7OztTOzs7Ozs7OzthOzs7cUI7Ozs0Qzs7Ozs7Ozs7Z0Q7O0s7SyxPO0k7OzswQixpQjtLOzs7O0s7SztLO0s7SyxPOzs7SztNO2tCOzs7OztRO1E7Ozs7OztLO0sscUIsYyx5Qjs7Ozs7Ozs7O2U7NEIsbUI7Ozs7Ozs7Ozs7TztXLFcsaUIsaUI7O00sVTtNOztzQjtlOzs7Ozs7OztlLGlCO007TTtNOzs7OztjLGlCO0s7SyxJLGlDO0s7SztLLGtCO0s7Ozs7O0k7O0s7OztPLE07Ozs7dUI7Tzs7OztNOzs7O08sUzs7Tzs7Ozs7TTs7O0k7OztLO0s7O0k7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0c7O0k7OztJLG9DOztLO3dCLE07SyxPO0k7SSxJLFE7OzsyQjs7O0c7eUIsUzs4QixPLG9CO0c7O0k7Ozs7Ozs7Ozs7STtJOztJO0s7OztTLFU7UyxPO1E7TTs7Ozs7Ozs7Ozs7Ozs7Ozs7Szs7Ozs4QixNOzs7RztxQixPLGdDO0c7OztJOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SSxPO2M7Yzs7OztJLE87Ozs7SSxPOzs7Ozs7Ozs7ZSxZOztlOzs7ZTs7Ozs7OztJLFksTzs7SSxPOzs7SSw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CQWJLLE9BNUZkWixnQkE0RjJEO3NCQUQ3QyxPQTNGZEEsZ0JBMkY4QztzQkFEaEMsT0ExRmRBLGdCQTBGb0M7c0JBRHRCLE9BekZkQSxnQkF5RnFDO3NCQUR2QixPQXhGZEEsZ0JBd0Z1QztHQUY3Qzs7Ozs7Ozs7Ozs7RTs7Ozs7Ozs7Ozs7OztHOzs7Ozs7OztHQy9FTTtHQUFBOzs7RSIsInNvdXJjZXNDb250ZW50IjpbIi8vIEpzX29mX29jYW1sIHJ1bnRpbWUgc3VwcG9ydFxuLy8gaHR0cDovL3d3dy5vY3NpZ2VuLm9yZy9qc19vZl9vY2FtbC9cbi8vIENvcHlyaWdodCAoQykgMjAxMCBKw6lyw7RtZSBWb3VpbGxvblxuLy8gTGFib3JhdG9pcmUgUFBTIC0gQ05SUyBVbml2ZXJzaXTDqSBQYXJpcyBEaWRlcm90XG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbi8vIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuLy8gdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aCBsaW5raW5nIGV4Y2VwdGlvbjtcbi8vIGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbi8vXG4vLyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbi8vIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4vLyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlXG4vLyBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbi8vXG4vLyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2Vcbi8vIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4vLyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLlxuXG4vL1Byb3ZpZGVzOiBjYW1sX2ludDY0X29mZnNldFxudmFyIGNhbWxfaW50NjRfb2Zmc2V0ID0gTWF0aC5wb3coMiwgLTI0KTtcblxuLy9Qcm92aWRlczogTWxJbnQ2NFxuLy9SZXF1aXJlczogY2FtbF9pbnQ2NF9vZmZzZXQsIGNhbWxfcmFpc2VfemVyb19kaXZpZGVcbmZ1bmN0aW9uIE1sSW50NjQgKGxvLG1pLGhpKSB7XG4gIHRoaXMubG8gPSBsbyAmIDB4ZmZmZmZmO1xuICB0aGlzLm1pID0gbWkgJiAweGZmZmZmZjtcbiAgdGhpcy5oaSA9IGhpICYgMHhmZmZmO1xufVxuTWxJbnQ2NC5wcm90b3R5cGUuY2FtbF9jdXN0b20gPSBcIl9qXCJcbk1sSW50NjQucHJvdG90eXBlLmNvcHkgPSBmdW5jdGlvbiAoKSB7XG4gIHJldHVybiBuZXcgTWxJbnQ2NCh0aGlzLmxvLHRoaXMubWksdGhpcy5oaSk7XG59XG5cbk1sSW50NjQucHJvdG90eXBlLnVjb21wYXJlID0gZnVuY3Rpb24gKHgpIHtcbiAgaWYgKHRoaXMuaGkgPiB4LmhpKSByZXR1cm4gMTtcbiAgaWYgKHRoaXMuaGkgPCB4LmhpKSByZXR1cm4gLTE7XG4gIGlmICh0aGlzLm1pID4geC5taSkgcmV0dXJuIDE7XG4gIGlmICh0aGlzLm1pIDwgeC5taSkgcmV0dXJuIC0xO1xuICBpZiAodGhpcy5sbyA+IHgubG8pIHJldHVybiAxO1xuICBpZiAodGhpcy5sbyA8IHgubG8pIHJldHVybiAtMTtcbiAgcmV0dXJuIDA7XG59XG5NbEludDY0LnByb3RvdHlwZS5jb21wYXJlID0gZnVuY3Rpb24gKHgpIHtcbiAgdmFyIGhpID0gdGhpcy5oaSA8PCAxNjtcbiAgdmFyIHhoaSA9IHguaGkgPDwgMTY7XG4gIGlmIChoaSA+IHhoaSkgcmV0dXJuIDE7XG4gIGlmIChoaSA8IHhoaSkgcmV0dXJuIC0xO1xuICBpZiAodGhpcy5taSA+IHgubWkpIHJldHVybiAxO1xuICBpZiAodGhpcy5taSA8IHgubWkpIHJldHVybiAtMTtcbiAgaWYgKHRoaXMubG8gPiB4LmxvKSByZXR1cm4gMTtcbiAgaWYgKHRoaXMubG8gPCB4LmxvKSByZXR1cm4gLTE7XG4gIHJldHVybiAwO1xufVxuTWxJbnQ2NC5wcm90b3R5cGUubmVnID0gZnVuY3Rpb24gKCkge1xuICB2YXIgbG8gPSAtIHRoaXMubG87XG4gIHZhciBtaSA9IC0gdGhpcy5taSArIChsbyA+PiAyNCk7XG4gIHZhciBoaSA9IC0gdGhpcy5oaSArIChtaSA+PiAyNCk7XG4gIHJldHVybiBuZXcgTWxJbnQ2NChsbywgbWksIGhpKTtcbn1cbk1sSW50NjQucHJvdG90eXBlLmFkZCA9IGZ1bmN0aW9uICh4KSB7XG4gIHZhciBsbyA9IHRoaXMubG8gKyB4LmxvO1xuICB2YXIgbWkgPSB0aGlzLm1pICsgeC5taSArIChsbyA+PiAyNCk7XG4gIHZhciBoaSA9IHRoaXMuaGkgKyB4LmhpICsgKG1pID4+IDI0KTtcbiAgcmV0dXJuIG5ldyBNbEludDY0KGxvLCBtaSwgaGkpO1xufVxuTWxJbnQ2NC5wcm90b3R5cGUuc3ViID0gZnVuY3Rpb24gKHgpIHtcbiAgdmFyIGxvID0gdGhpcy5sbyAtIHgubG87XG4gIHZhciBtaSA9IHRoaXMubWkgLSB4Lm1pICsgKGxvID4+IDI0KTtcbiAgdmFyIGhpID0gdGhpcy5oaSAtIHguaGkgKyAobWkgPj4gMjQpO1xuICByZXR1cm4gbmV3IE1sSW50NjQobG8sIG1pLCBoaSk7XG59XG5NbEludDY0LnByb3RvdHlwZS5tdWwgPSBmdW5jdGlvbiAoeCkge1xuICB2YXIgbG8gPSB0aGlzLmxvICogeC5sbztcbiAgdmFyIG1pID0gKChsbyAqIGNhbWxfaW50NjRfb2Zmc2V0KSB8IDApICsgdGhpcy5taSAqIHgubG8gKyB0aGlzLmxvICogeC5taTtcbiAgdmFyIGhpID0gKChtaSAqIGNhbWxfaW50NjRfb2Zmc2V0KSB8IDApICsgdGhpcy5oaSAqIHgubG8gKyB0aGlzLm1pICogeC5taSArIHRoaXMubG8gKiB4LmhpO1xuICByZXR1cm4gbmV3IE1sSW50NjQobG8sIG1pLCBoaSk7XG59XG5NbEludDY0LnByb3RvdHlwZS5pc1plcm8gPSBmdW5jdGlvbiAoKSB7XG4gIHJldHVybiAodGhpcy5sb3x0aGlzLm1pfHRoaXMuaGkpID09IDA7XG59XG5NbEludDY0LnByb3RvdHlwZS5pc05lZyA9IGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuICh0aGlzLmhpIDw8IDE2KSA8IDA7XG59XG5NbEludDY0LnByb3RvdHlwZS5hbmQgPSBmdW5jdGlvbiAoeCkge1xuICByZXR1cm4gbmV3IE1sSW50NjQodGhpcy5sbyAmIHgubG8sIHRoaXMubWkgJiB4Lm1pLCB0aGlzLmhpICYgeC5oaSk7XG59XG5NbEludDY0LnByb3RvdHlwZS5vciA9IGZ1bmN0aW9uICh4KSB7XG4gIHJldHVybiBuZXcgTWxJbnQ2NCh0aGlzLmxvfHgubG8sIHRoaXMubWl8eC5taSwgdGhpcy5oaXx4LmhpKTtcbn1cbk1sSW50NjQucHJvdG90eXBlLnhvciA9IGZ1bmN0aW9uICh4KSB7XG4gIHJldHVybiBuZXcgTWxJbnQ2NCh0aGlzLmxvXngubG8sIHRoaXMubWleeC5taSwgdGhpcy5oaV54LmhpKTtcbn1cbk1sSW50NjQucHJvdG90eXBlLnNoaWZ0X2xlZnQgPSBmdW5jdGlvbiAocykge1xuICBzID0gcyAmIDYzO1xuICBpZiAocyA9PSAwKSByZXR1cm4gdGhpcztcbiAgaWYgKHMgPCAyNCkge1xuICAgIHJldHVybiBuZXcgTWxJbnQ2NCAodGhpcy5sbyA8PCBzLFxuICAgICAgICAgICAgICAgICAgICAgICAgKHRoaXMubWkgPDwgcykgfCAodGhpcy5sbyA+PiAoMjQgLSBzKSksXG4gICAgICAgICAgICAgICAgICAgICAgICAodGhpcy5oaSA8PCBzKSB8ICh0aGlzLm1pID4+ICgyNCAtIHMpKSk7XG4gIH1cbiAgaWYgKHMgPCA0OClcbiAgICByZXR1cm4gbmV3IE1sSW50NjQgKDAsXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmxvIDw8IChzIC0gMjQpLFxuICAgICAgICAgICAgICAgICAgICAgICAgKHRoaXMubWkgPDwgKHMgLSAyNCkpIHwgKHRoaXMubG8gPj4gKDQ4IC0gcykpKTtcbiAgcmV0dXJuIG5ldyBNbEludDY0KDAsIDAsIHRoaXMubG8gPDwgKHMgLSA0OCkpXG59XG5NbEludDY0LnByb3RvdHlwZS5zaGlmdF9yaWdodF91bnNpZ25lZCA9IGZ1bmN0aW9uIChzKSB7XG4gIHMgPSBzICYgNjM7XG4gIGlmIChzID09IDApIHJldHVybiB0aGlzO1xuICBpZiAocyA8IDI0KVxuICAgIHJldHVybiBuZXcgTWxJbnQ2NCAoXG4gICAgICAodGhpcy5sbyA+PiBzKSB8ICh0aGlzLm1pIDw8ICgyNCAtIHMpKSxcbiAgICAgICh0aGlzLm1pID4+IHMpIHwgKHRoaXMuaGkgPDwgKDI0IC0gcykpLFxuICAgICAgKHRoaXMuaGkgPj4gcykpO1xuICBpZiAocyA8IDQ4KVxuICAgIHJldHVybiBuZXcgTWxJbnQ2NCAoXG4gICAgICAodGhpcy5taSA+PiAocyAtIDI0KSkgfCAodGhpcy5oaSA8PCAoNDggLSBzKSksXG4gICAgICAodGhpcy5oaSA+PiAocyAtIDI0KSksXG4gICAgICAwKTtcbiAgcmV0dXJuIG5ldyBNbEludDY0ICh0aGlzLmhpID4+IChzIC0gNDgpLCAwLCAwKTtcbn1cbk1sSW50NjQucHJvdG90eXBlLnNoaWZ0X3JpZ2h0ID0gZnVuY3Rpb24gKHMpIHtcbiAgcyA9IHMgJiA2MztcbiAgaWYgKHMgPT0gMCkgcmV0dXJuIHRoaXM7XG4gIHZhciBoID0gKHRoaXMuaGkgPDwgMTYpID4+IDE2O1xuICBpZiAocyA8IDI0KVxuICAgIHJldHVybiBuZXcgTWxJbnQ2NCAoXG4gICAgICAodGhpcy5sbyA+PiBzKSB8ICh0aGlzLm1pIDw8ICgyNCAtIHMpKSxcbiAgICAgICh0aGlzLm1pID4+IHMpIHwgKGggPDwgKDI0IC0gcykpLFxuICAgICAgKCh0aGlzLmhpIDw8IDE2KSA+PiBzKSA+Pj4gMTYpO1xuICB2YXIgc2lnbiA9ICh0aGlzLmhpIDw8IDE2KSA+PiAzMTtcbiAgaWYgKHMgPCA0OClcbiAgICByZXR1cm4gbmV3IE1sSW50NjQgKFxuICAgICAgKHRoaXMubWkgPj4gKHMgLSAyNCkpIHwgKHRoaXMuaGkgPDwgKDQ4IC0gcykpLFxuICAgICAgKHRoaXMuaGkgPDwgMTYpID4+IChzIC0gMjQpID4+IDE2LFxuICAgICAgc2lnbiAmIDB4ZmZmZik7XG4gIHJldHVybiBuZXcgTWxJbnQ2NCAoKHRoaXMuaGkgPDwgMTYpID4+IChzIC0gMzIpLCBzaWduLCBzaWduKTtcbn1cbk1sSW50NjQucHJvdG90eXBlLmxzbDEgPSBmdW5jdGlvbiAoKSB7XG4gIHRoaXMuaGkgPSAodGhpcy5oaSA8PCAxKSB8ICh0aGlzLm1pID4+IDIzKTtcbiAgdGhpcy5taSA9ICgodGhpcy5taSA8PCAxKSB8ICh0aGlzLmxvID4+IDIzKSkgJiAweGZmZmZmZjtcbiAgdGhpcy5sbyA9ICh0aGlzLmxvIDw8IDEpICYgMHhmZmZmZmY7XG59XG5NbEludDY0LnByb3RvdHlwZS5sc3IxID0gZnVuY3Rpb24gKCkge1xuICB0aGlzLmxvID0gKCh0aGlzLmxvID4+PiAxKSB8ICh0aGlzLm1pIDw8IDIzKSkgJiAweGZmZmZmZjtcbiAgdGhpcy5taSA9ICgodGhpcy5taSA+Pj4gMSkgfCAodGhpcy5oaSA8PCAyMykpICYgMHhmZmZmZmY7XG4gIHRoaXMuaGkgPSB0aGlzLmhpID4+PiAxO1xufVxuTWxJbnQ2NC5wcm90b3R5cGUudWRpdm1vZCA9IGZ1bmN0aW9uICh4KSB7XG4gIHZhciBvZmZzZXQgPSAwO1xuICB2YXIgbW9kdWx1cyA9IHRoaXMuY29weSgpO1xuICB2YXIgZGl2aXNvciA9IHguY29weSgpO1xuICB2YXIgcXVvdGllbnQgPSBuZXcgTWxJbnQ2NCgwLDAsMCk7XG4gIHdoaWxlIChtb2R1bHVzLnVjb21wYXJlKGRpdmlzb3IpID4gMCkge1xuICAgIG9mZnNldCsrO1xuICAgIGRpdmlzb3IubHNsMSgpO1xuICB9XG4gIHdoaWxlIChvZmZzZXQgPj0gMCkge1xuICAgIG9mZnNldCAtLTtcbiAgICBxdW90aWVudC5sc2wxKCk7XG4gICAgaWYgKG1vZHVsdXMudWNvbXBhcmUoZGl2aXNvcikgPj0gMCkge1xuICAgICAgcXVvdGllbnQubG8gKys7XG4gICAgICBtb2R1bHVzID0gbW9kdWx1cy5zdWIoZGl2aXNvcik7XG4gICAgfVxuICAgIGRpdmlzb3IubHNyMSgpO1xuICB9XG4gIHJldHVybiB7IHF1b3RpZW50IDogcXVvdGllbnQsIG1vZHVsdXMgOiBtb2R1bHVzIH07XG59XG5NbEludDY0LnByb3RvdHlwZS5kaXYgPSBmdW5jdGlvbiAoeSlcbntcbiAgdmFyIHggPSB0aGlzO1xuICBpZiAoeS5pc1plcm8oKSkgY2FtbF9yYWlzZV96ZXJvX2RpdmlkZSAoKTtcbiAgdmFyIHNpZ24gPSB4LmhpIF4geS5oaTtcbiAgaWYgKHguaGkgJiAweDgwMDApIHggPSB4Lm5lZygpO1xuICBpZiAoeS5oaSAmIDB4ODAwMCkgeSA9IHkubmVnKCk7XG4gIHZhciBxID0geC51ZGl2bW9kKHkpLnF1b3RpZW50O1xuICBpZiAoc2lnbiAmIDB4ODAwMCkgcSA9IHEubmVnKCk7XG4gIHJldHVybiBxO1xufVxuTWxJbnQ2NC5wcm90b3R5cGUubW9kID0gZnVuY3Rpb24gKHkpXG57XG4gIHZhciB4ID0gdGhpcztcbiAgaWYgKHkuaXNaZXJvKCkpIGNhbWxfcmFpc2VfemVyb19kaXZpZGUgKCk7XG4gIHZhciBzaWduID0geC5oaTtcbiAgaWYgKHguaGkgJiAweDgwMDApIHggPSB4Lm5lZygpO1xuICBpZiAoeS5oaSAmIDB4ODAwMCkgeSA9IHkubmVnKCk7XG4gIHZhciByID0geC51ZGl2bW9kKHkpLm1vZHVsdXM7XG4gIGlmIChzaWduICYgMHg4MDAwKSByID0gci5uZWcoKTtcbiAgcmV0dXJuIHI7XG59XG5NbEludDY0LnByb3RvdHlwZS50b0ludCA9IGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuIHRoaXMubG8gfCAodGhpcy5taSA8PCAyNCk7XG59XG5NbEludDY0LnByb3RvdHlwZS50b0Zsb2F0ID0gZnVuY3Rpb24gKCkge1xuICByZXR1cm4gKCh0aGlzLmhpIDw8IDE2KSAqIE1hdGgucG93KDIsIDMyKSArIHRoaXMubWkgKiBNYXRoLnBvdygyLCAyNCkpICsgdGhpcy5sbztcbn1cbk1sSW50NjQucHJvdG90eXBlLnRvQXJyYXkgPSBmdW5jdGlvbiAoKSB7XG4gIHJldHVybiBbdGhpcy5oaSA+PiA4LFxuICAgICAgICAgIHRoaXMuaGkgJiAweGZmLFxuICAgICAgICAgIHRoaXMubWkgPj4gMTYsXG4gICAgICAgICAgKHRoaXMubWkgPj4gOCkgJiAweGZmLFxuICAgICAgICAgIHRoaXMubWkgJiAweGZmLFxuICAgICAgICAgIHRoaXMubG8gPj4gMTYsXG4gICAgICAgICAgKHRoaXMubG8gPj4gOCkgJiAweGZmLFxuICAgICAgICAgIHRoaXMubG8gJiAweGZmXTtcbn1cbk1sSW50NjQucHJvdG90eXBlLmxvMzIgPSBmdW5jdGlvbiAoKSB7XG4gIHJldHVybiB0aGlzLmxvIHwgKCh0aGlzLm1pICYgMHhmZikgPDwgMjQpO1xufVxuTWxJbnQ2NC5wcm90b3R5cGUuaGkzMiA9IGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuICgodGhpcy5taSA+Pj4gOCkgJiAweGZmZmYpIHwgKHRoaXMuaGkgPDwgMTYpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2ludDY0X3VsdCBjb25zdFxuZnVuY3Rpb24gY2FtbF9pbnQ2NF91bHQoeCx5KSB7IHJldHVybiB4LnVjb21wYXJlKHkpIDwgMDsgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2ludDY0X2NvbXBhcmUgY29uc3RcbmZ1bmN0aW9uIGNhbWxfaW50NjRfY29tcGFyZSh4LHksIHRvdGFsKSB7IHJldHVybiB4LmNvbXBhcmUoeSkgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2ludDY0X25lZyBjb25zdFxuZnVuY3Rpb24gY2FtbF9pbnQ2NF9uZWcgKHgpIHsgcmV0dXJuIHgubmVnKCkgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2ludDY0X2FkZCBjb25zdFxuZnVuY3Rpb24gY2FtbF9pbnQ2NF9hZGQgKHgsIHkpIHsgcmV0dXJuIHguYWRkKHkpIH1cblxuLy9Qcm92aWRlczogY2FtbF9pbnQ2NF9zdWIgY29uc3RcbmZ1bmN0aW9uIGNhbWxfaW50NjRfc3ViICh4LCB5KSB7IHJldHVybiB4LnN1Yih5KSB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfaW50NjRfbXVsIGNvbnN0XG4vL1JlcXVpcmVzOiBjYW1sX2ludDY0X29mZnNldFxuZnVuY3Rpb24gY2FtbF9pbnQ2NF9tdWwoeCx5KSB7IHJldHVybiB4Lm11bCh5KSB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfaW50NjRfaXNfemVybyBjb25zdFxuZnVuY3Rpb24gY2FtbF9pbnQ2NF9pc196ZXJvKHgpIHsgcmV0dXJuICt4LmlzWmVybygpOyB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfaW50NjRfaXNfbmVnYXRpdmUgY29uc3RcbmZ1bmN0aW9uIGNhbWxfaW50NjRfaXNfbmVnYXRpdmUoeCkgeyByZXR1cm4gK3guaXNOZWcoKTsgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2ludDY0X2FuZCBjb25zdFxuZnVuY3Rpb24gY2FtbF9pbnQ2NF9hbmQgKHgsIHkpIHsgcmV0dXJuIHguYW5kKHkpOyB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfaW50NjRfb3IgY29uc3RcbmZ1bmN0aW9uIGNhbWxfaW50NjRfb3IgKHgsIHkpIHsgcmV0dXJuIHgub3IoeSk7IH1cblxuLy9Qcm92aWRlczogY2FtbF9pbnQ2NF94b3IgY29uc3RcbmZ1bmN0aW9uIGNhbWxfaW50NjRfeG9yICh4LCB5KSB7IHJldHVybiB4Lnhvcih5KSB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfaW50NjRfc2hpZnRfbGVmdCBjb25zdFxuZnVuY3Rpb24gY2FtbF9pbnQ2NF9zaGlmdF9sZWZ0ICh4LCBzKSB7IHJldHVybiB4LnNoaWZ0X2xlZnQocykgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2ludDY0X3NoaWZ0X3JpZ2h0X3Vuc2lnbmVkIGNvbnN0XG5mdW5jdGlvbiBjYW1sX2ludDY0X3NoaWZ0X3JpZ2h0X3Vuc2lnbmVkICh4LCBzKSB7IHJldHVybiB4LnNoaWZ0X3JpZ2h0X3Vuc2lnbmVkKHMpIH1cblxuLy9Qcm92aWRlczogY2FtbF9pbnQ2NF9zaGlmdF9yaWdodCBjb25zdFxuZnVuY3Rpb24gY2FtbF9pbnQ2NF9zaGlmdF9yaWdodCAoeCwgcykgeyByZXR1cm4geC5zaGlmdF9yaWdodChzKSB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfaW50NjRfZGl2IGNvbnN0XG5mdW5jdGlvbiBjYW1sX2ludDY0X2RpdiAoeCwgeSkgeyByZXR1cm4geC5kaXYoeSkgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2ludDY0X21vZCBjb25zdFxuZnVuY3Rpb24gY2FtbF9pbnQ2NF9tb2QgKHgsIHkpIHsgcmV0dXJuIHgubW9kKHkpIH1cblxuLy9Qcm92aWRlczogY2FtbF9pbnQ2NF9vZl9pbnQzMiBjb25zdFxuLy9SZXF1aXJlczogTWxJbnQ2NFxuZnVuY3Rpb24gY2FtbF9pbnQ2NF9vZl9pbnQzMiAoeCkge1xuICByZXR1cm4gbmV3IE1sSW50NjQoeCAmIDB4ZmZmZmZmLCAoeCA+PiAyNCkgJiAweGZmZmZmZiwgKHggPj4gMzEpICYgMHhmZmZmKVxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2ludDY0X3RvX2ludDMyIGNvbnN0XG5mdW5jdGlvbiBjYW1sX2ludDY0X3RvX2ludDMyICh4KSB7IHJldHVybiB4LnRvSW50KCkgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2ludDY0X3RvX2Zsb2F0IGNvbnN0XG5mdW5jdGlvbiBjYW1sX2ludDY0X3RvX2Zsb2F0ICh4KSB7IHJldHVybiB4LnRvRmxvYXQgKCkgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2ludDY0X29mX2Zsb2F0IGNvbnN0XG4vL1JlcXVpcmVzOiBjYW1sX2ludDY0X29mZnNldCwgTWxJbnQ2NFxuZnVuY3Rpb24gY2FtbF9pbnQ2NF9vZl9mbG9hdCAoeCkge1xuICBpZiAoeCA8IDApIHggPSBNYXRoLmNlaWwoeCk7XG4gIHJldHVybiBuZXcgTWxJbnQ2NChcbiAgICB4ICYgMHhmZmZmZmYsXG4gICAgTWF0aC5mbG9vcih4ICogY2FtbF9pbnQ2NF9vZmZzZXQpICYgMHhmZmZmZmYsXG4gICAgTWF0aC5mbG9vcih4ICogY2FtbF9pbnQ2NF9vZmZzZXQgKiBjYW1sX2ludDY0X29mZnNldCkgJiAweGZmZmYpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2ludDY0X2Zvcm1hdCBjb25zdFxuLy9SZXF1aXJlczogY2FtbF9wYXJzZV9mb3JtYXQsIGNhbWxfZmluaXNoX2Zvcm1hdHRpbmdcbi8vUmVxdWlyZXM6IGNhbWxfaW50NjRfaXNfbmVnYXRpdmUsIGNhbWxfaW50NjRfbmVnXG4vL1JlcXVpcmVzOiBjYW1sX2ludDY0X29mX2ludDMyLCBjYW1sX2ludDY0X3RvX2ludDMyXG4vL1JlcXVpcmVzOiBjYW1sX2ludDY0X2lzX3plcm8sIGNhbWxfc3RyX3JlcGVhdFxuZnVuY3Rpb24gY2FtbF9pbnQ2NF9mb3JtYXQgKGZtdCwgeCkge1xuICB2YXIgZiA9IGNhbWxfcGFyc2VfZm9ybWF0KGZtdCk7XG4gIGlmIChmLnNpZ25lZGNvbnYgJiYgY2FtbF9pbnQ2NF9pc19uZWdhdGl2ZSh4KSkge1xuICAgIGYuc2lnbiA9IC0xOyB4ID0gY2FtbF9pbnQ2NF9uZWcoeCk7XG4gIH1cbiAgdmFyIGJ1ZmZlciA9IFwiXCI7XG4gIHZhciB3YmFzZSA9IGNhbWxfaW50NjRfb2ZfaW50MzIoZi5iYXNlKTtcbiAgdmFyIGN2dGJsID0gXCIwMTIzNDU2Nzg5YWJjZGVmXCI7XG4gIGRvIHtcbiAgICB2YXIgcCA9IHgudWRpdm1vZCh3YmFzZSk7XG4gICAgeCA9IHAucXVvdGllbnQ7XG4gICAgYnVmZmVyID0gY3Z0YmwuY2hhckF0KGNhbWxfaW50NjRfdG9faW50MzIocC5tb2R1bHVzKSkgKyBidWZmZXI7XG4gIH0gd2hpbGUgKCEgY2FtbF9pbnQ2NF9pc196ZXJvKHgpKTtcbiAgaWYgKGYucHJlYyA+PSAwKSB7XG4gICAgZi5maWxsZXIgPSAnICc7XG4gICAgdmFyIG4gPSBmLnByZWMgLSBidWZmZXIubGVuZ3RoO1xuICAgIGlmIChuID4gMCkgYnVmZmVyID0gY2FtbF9zdHJfcmVwZWF0IChuLCAnMCcpICsgYnVmZmVyO1xuICB9XG4gIHJldHVybiBjYW1sX2ZpbmlzaF9mb3JtYXR0aW5nKGYsIGJ1ZmZlcik7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfaW50NjRfb2Zfc3RyaW5nXG4vL1JlcXVpcmVzOiBjYW1sX3BhcnNlX3NpZ25fYW5kX2Jhc2UsIGNhbWxfZmFpbHdpdGgsIGNhbWxfcGFyc2VfZGlnaXRcbi8vUmVxdWlyZXM6IGNhbWxfaW50NjRfb2ZfaW50MzIsIGNhbWxfaW50NjRfdWx0XG4vL1JlcXVpcmVzOiBjYW1sX2ludDY0X2FkZCwgY2FtbF9pbnQ2NF9tdWwsIGNhbWxfaW50NjRfbmVnXG4vL1JlcXVpcmVzOiBjYW1sX21sX3N0cmluZ19sZW5ndGgsY2FtbF9zdHJpbmdfdW5zYWZlX2dldCwgTWxJbnQ2NFxuZnVuY3Rpb24gY2FtbF9pbnQ2NF9vZl9zdHJpbmcocykge1xuICB2YXIgciA9IGNhbWxfcGFyc2Vfc2lnbl9hbmRfYmFzZSAocyk7XG4gIHZhciBpID0gclswXSwgc2lnbiA9IHJbMV0sIGJhc2UgPSByWzJdO1xuICB2YXIgYmFzZTY0ID0gY2FtbF9pbnQ2NF9vZl9pbnQzMihiYXNlKTtcbiAgdmFyIHRocmVzaG9sZCA9XG4gICAgICBuZXcgTWxJbnQ2NCgweGZmZmZmZiwgMHhmZmZmZmZmLCAweGZmZmYpLnVkaXZtb2QoYmFzZTY0KS5xdW90aWVudDtcbiAgdmFyIGMgPSBjYW1sX3N0cmluZ191bnNhZmVfZ2V0KHMsIGkpO1xuICB2YXIgZCA9IGNhbWxfcGFyc2VfZGlnaXQoYyk7XG4gIGlmIChkIDwgMCB8fCBkID49IGJhc2UpIGNhbWxfZmFpbHdpdGgoXCJpbnRfb2Zfc3RyaW5nXCIpO1xuICB2YXIgcmVzID0gY2FtbF9pbnQ2NF9vZl9pbnQzMihkKTtcbiAgZm9yICg7Oykge1xuICAgIGkrKztcbiAgICBjID0gY2FtbF9zdHJpbmdfdW5zYWZlX2dldChzLCBpKTtcbiAgICBpZiAoYyA9PSA5NSkgY29udGludWU7XG4gICAgZCA9IGNhbWxfcGFyc2VfZGlnaXQoYyk7XG4gICAgaWYgKGQgPCAwIHx8IGQgPj0gYmFzZSkgYnJlYWs7XG4gICAgLyogRGV0ZWN0IG92ZXJmbG93IGluIG11bHRpcGxpY2F0aW9uIGJhc2UgKiByZXMgKi9cbiAgICBpZiAoY2FtbF9pbnQ2NF91bHQodGhyZXNob2xkLCByZXMpKSBjYW1sX2ZhaWx3aXRoKFwiaW50X29mX3N0cmluZ1wiKTtcbiAgICBkID0gY2FtbF9pbnQ2NF9vZl9pbnQzMihkKTtcbiAgICByZXMgPSBjYW1sX2ludDY0X2FkZChjYW1sX2ludDY0X211bChiYXNlNjQsIHJlcyksIGQpO1xuICAgIC8qIERldGVjdCBvdmVyZmxvdyBpbiBhZGRpdGlvbiAoYmFzZSAqIHJlcykgKyBkICovXG4gICAgaWYgKGNhbWxfaW50NjRfdWx0KHJlcywgZCkpIGNhbWxfZmFpbHdpdGgoXCJpbnRfb2Zfc3RyaW5nXCIpO1xuICB9XG4gIGlmIChpICE9IGNhbWxfbWxfc3RyaW5nX2xlbmd0aChzKSkgY2FtbF9mYWlsd2l0aChcImludF9vZl9zdHJpbmdcIik7XG4gIGlmIChiYXNlID09IDEwICYmIGNhbWxfaW50NjRfdWx0KG5ldyBNbEludDY0KDAsIDAsIDB4ODAwMCksIHJlcykpXG4gICAgY2FtbF9mYWlsd2l0aChcImludF9vZl9zdHJpbmdcIik7XG4gIGlmIChzaWduIDwgMCkgcmVzID0gY2FtbF9pbnQ2NF9uZWcocmVzKTtcbiAgcmV0dXJuIHJlcztcbn1cblxuLy9Qcm92aWRlczogY2FtbF9pbnQ2NF9jcmVhdGVfbG9fbWlfaGkgY29uc3Rcbi8vUmVxdWlyZXM6IE1sSW50NjRcbmZ1bmN0aW9uIGNhbWxfaW50NjRfY3JlYXRlX2xvX21pX2hpKGxvLCBtaSwgaGkpe1xuICByZXR1cm4gbmV3IE1sSW50NjQobG8sIG1pLCBoaSlcbn1cbi8vUHJvdmlkZXM6IGNhbWxfaW50NjRfY3JlYXRlX2xvX2hpIGNvbnN0XG4vL1JlcXVpcmVzOiBNbEludDY0XG5mdW5jdGlvbiBjYW1sX2ludDY0X2NyZWF0ZV9sb19oaShsbywgaGkpe1xuICByZXR1cm4gbmV3IE1sSW50NjQgKFxuICAgIGxvICYgMHhmZmZmZmYsXG4gICAgKChsbyA+Pj4gMjQpICYgMHhmZikgfCAoKGhpICYgMHhmZmZmKSA8PCA4KSxcbiAgICAoaGkgPj4+IDE2KSAmIDB4ZmZmZik7XG59XG4vL1Byb3ZpZGVzOiBjYW1sX2ludDY0X2xvMzIgY29uc3RcbmZ1bmN0aW9uIGNhbWxfaW50NjRfbG8zMih2KXsgcmV0dXJuIHYubG8zMigpIH1cblxuLy9Qcm92aWRlczogY2FtbF9pbnQ2NF9oaTMyIGNvbnN0XG5mdW5jdGlvbiBjYW1sX2ludDY0X2hpMzIodil7IHJldHVybiB2LmhpMzIoKSB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfaW50NjRfb2ZfYnl0ZXMgY29uc3Rcbi8vUmVxdWlyZXM6IE1sSW50NjRcbmZ1bmN0aW9uIGNhbWxfaW50NjRfb2ZfYnl0ZXMoYSkge1xuICByZXR1cm4gbmV3IE1sSW50NjQoYVs3XSA8PCAwIHwgKGFbNl0gPDwgOCkgfCAoYVs1XSA8PCAxNiksXG4gICAgICAgICAgICAgICAgICAgICBhWzRdIDw8IDAgfCAoYVszXSA8PCA4KSB8IChhWzJdIDw8IDE2KSxcbiAgICAgICAgICAgICAgICAgICAgIGFbMV0gPDwgMCB8IChhWzBdIDw8IDgpKTtcbn1cbi8vUHJvdmlkZXM6IGNhbWxfaW50NjRfdG9fYnl0ZXMgY29uc3RcbmZ1bmN0aW9uIGNhbWxfaW50NjRfdG9fYnl0ZXMoeCkgeyByZXR1cm4geC50b0FycmF5KCkgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2ludDY0X2hhc2ggY29uc3RcbmZ1bmN0aW9uIGNhbWxfaW50NjRfaGFzaCh2KXtcbiAgcmV0dXJuICh2LmxvMzIoKSkgXiAodi5oaTMyKCkpXG59XG4iLCIvLyBKc19vZl9vY2FtbCBydW50aW1lIHN1cHBvcnRcbi8vIGh0dHA6Ly93d3cub2NzaWdlbi5vcmcvanNfb2Zfb2NhbWwvXG4vLyBDb3B5cmlnaHQgKEMpIDIwMTAtMjAxNCBKw6lyw7RtZSBWb3VpbGxvblxuLy8gTGFib3JhdG9pcmUgUFBTIC0gQ05SUyBVbml2ZXJzaXTDqSBQYXJpcyBEaWRlcm90XG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbi8vIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuLy8gdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aCBsaW5raW5nIGV4Y2VwdGlvbjtcbi8vIGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbi8vXG4vLyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbi8vIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4vLyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlXG4vLyBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbi8vXG4vLyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2Vcbi8vIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4vLyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLlxuXG4vLyBBbiBPQ2FtbCBzdHJpbmcgaXMgYW4gb2JqZWN0IHdpdGggdGhyZWUgZmllbGRzOlxuLy8gLSB0YWcgJ3QnXG4vLyAtIGxlbmd0aCAnbCdcbi8vIC0gY29udGVudHMgJ2MnXG4vL1xuLy8gVGhlIGNvbnRlbnRzIG9mIHRoZSBzdHJpbmcgY2FuIGJlIGVpdGhlciBhIEphdmFTY3JpcHQgYXJyYXkgb3Jcbi8vIGEgSmF2YVNjcmlwdCBzdHJpbmcuIFRoZSBsZW5ndGggb2YgdGhpcyBzdHJpbmcgY2FuIGJlIGxlc3MgdGhhbiB0aGVcbi8vIGxlbmd0aCBvZiB0aGUgT0NhbWwgc3RyaW5nLiBJbiB0aGlzIGNhc2UsIHJlbWFpbmluZyBieXRlcyBhcmVcbi8vIGFzc3VtZWQgdG8gYmUgemVyb2VzLiBBcnJheXMgYXJlIG11dGFibGUgYnV0IGNvbnN1bWVzIG1vcmUgbWVtb3J5XG4vLyB0aGFuIHN0cmluZ3MuIEEgY29tbW9uIHBhdHRlcm4gaXMgdG8gc3RhcnQgZnJvbSBhbiBlbXB0eSBzdHJpbmcgYW5kXG4vLyBwcm9ncmVzc2l2ZWx5IGZpbGwgaXQgZnJvbSB0aGUgc3RhcnQuIFBhcnRpYWwgc3RyaW5ncyBtYWtlcyBpdFxuLy8gcG9zc2libGUgdG8gaW1wbGVtZW50IHRoaXMgZWZmaWNpZW50bHkuXG4vL1xuLy8gV2hlbiBjb252ZXJ0aW5nIHRvIGFuZCBmcm9tIFVURi0xNiwgd2Uga2VlcCB0cmFjayBvZiB3aGV0aGVyIHRoZVxuLy8gc3RyaW5nIGlzIGNvbXBvc2VkIG9ubHkgb2YgQVNDSUkgY2hhcmFjdGVycyAoaW4gd2hpY2ggY2FzZSwgbm9cbi8vIGNvbnZlcnNpb24gbmVlZHMgdG8gYmUgcGVyZm9ybWVkKSBvciBub3QuXG4vL1xuLy8gVGhlIHN0cmluZyB0YWcgY2FuIHRodXMgdGFrZSB0aGUgZm9sbG93aW5nIHZhbHVlczpcbi8vICAgZnVsbCBzdHJpbmcgICAgIEJZVEUgfCBVTktOT1dOOiAgICAgIDBcbi8vICAgICAgICAgICAgICAgICAgIEJZVEUgfCBBU0NJSTogICAgICAgIDlcbi8vICAgICAgICAgICAgICAgICAgIEJZVEUgfCBOT1RfQVNDSUk6ICAgIDhcbi8vICAgc3RyaW5nIHByZWZpeCAgIFBBUlRJQUw6ICAgICAgICAgICAgIDJcbi8vICAgYXJyYXkgICAgICAgICAgIEFSUkFZOiAgICAgICAgICAgICAgIDRcbi8vXG4vLyBPbmUgY2FuIHVzZSBiaXQgbWFza2luZyB0byBkaXNjcmltaW5hdGUgdGhlc2UgZGlmZmVyZW50IGNhc2VzOlxuLy8gICBrbm93bl9lbmNvZGluZyh4KSA9IHgmOFxuLy8gICBpc19hc2NpaSh4KSA9ICAgICAgIHgmMVxuLy8gICBraW5kKHgpID0gICAgICAgICAgIHgmNlxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N0cl9yZXBlYXRcbmZ1bmN0aW9uIGNhbWxfc3RyX3JlcGVhdChuLCBzKSB7XG4gIGlmKG4gPT0gMCkgcmV0dXJuIFwiXCI7XG4gIGlmIChzLnJlcGVhdCkge3JldHVybiBzLnJlcGVhdChuKTt9IC8vIEVDTUFzY3JpcHQgNiBhbmQgRmlyZWZveCAyNCtcbiAgdmFyIHIgPSBcIlwiLCBsID0gMDtcbiAgZm9yKDs7KSB7XG4gICAgaWYgKG4gJiAxKSByICs9IHM7XG4gICAgbiA+Pj0gMTtcbiAgICBpZiAobiA9PSAwKSByZXR1cm4gcjtcbiAgICBzICs9IHM7XG4gICAgbCsrO1xuICAgIGlmIChsID09IDkpIHtcbiAgICAgIHMuc2xpY2UoMCwxKTsgLy8gZmxhdHRlbiB0aGUgc3RyaW5nXG4gICAgICAvLyB0aGVuLCB0aGUgZmxhdHRlbmluZyBvZiB0aGUgd2hvbGUgc3RyaW5nIHdpbGwgYmUgZmFzdGVyLFxuICAgICAgLy8gYXMgaXQgd2lsbCBiZSBjb21wb3NlZCBvZiBsYXJnZXIgcGllY2VzXG4gICAgfVxuICB9XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3ViYXJyYXlfdG9fanNieXRlc1xuLy9XZWFrZGVmXG4vLyBQcmUgRUNNQVNjcmlwdCA1LCBbYXBwbHldIHdvdWxkIG5vdCBzdXBwb3J0IGFycmF5LWxpa2Ugb2JqZWN0LlxuLy8gSW4gc3VjaCBzZXR1cCwgVHlwZWRfYXJyYXkgd291bGQgYmUgaW1wbGVtZW50ZWQgYXMgcG9seWZpbGwsIGFuZCBbZi5hcHBseV0gd291bGRcbi8vIGZhaWwgaGVyZS4gTWFyayB0aGUgcHJpbWl0aXZlIGFzIFdlYWtkZWYsIHNvIHRoYXQgcGVvcGxlIGNhbiBvdmVycmlkZSBpdCBlYXNpbHkuXG5mdW5jdGlvbiBjYW1sX3N1YmFycmF5X3RvX2pzYnl0ZXMgKGEsIGksIGxlbikge1xuICB2YXIgZiA9IFN0cmluZy5mcm9tQ2hhckNvZGU7XG4gIGlmIChpID09IDAgJiYgbGVuIDw9IDQwOTYgJiYgbGVuID09IGEubGVuZ3RoKSByZXR1cm4gZi5hcHBseSAobnVsbCwgYSk7XG4gIHZhciBzID0gXCJcIjtcbiAgZm9yICg7IDAgPCBsZW47IGkgKz0gMTAyNCxsZW4tPTEwMjQpXG4gICAgcyArPSBmLmFwcGx5IChudWxsLCBhLnNsaWNlKGksaSArIE1hdGgubWluKGxlbiwgMTAyNCkpKTtcbiAgcmV0dXJuIHM7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfdXRmOF9vZl91dGYxNlxuZnVuY3Rpb24gY2FtbF91dGY4X29mX3V0ZjE2KHMpIHtcbiAgZm9yICh2YXIgYiA9IFwiXCIsIHQgPSBiLCBjLCBkLCBpID0gMCwgbCA9IHMubGVuZ3RoOyBpIDwgbDsgaSsrKSB7XG4gICAgYyA9IHMuY2hhckNvZGVBdChpKTtcbiAgICBpZiAoYyA8IDB4ODApIHtcbiAgICAgIGZvciAodmFyIGogPSBpICsgMTsgKGogPCBsKSAmJiAoYyA9IHMuY2hhckNvZGVBdChqKSkgPCAweDgwOyBqKyspO1xuICAgICAgaWYgKGogLSBpID4gNTEyKSB7IHQuc3Vic3RyKDAsIDEpOyBiICs9IHQ7IHQgPSBcIlwiOyBiICs9IHMuc2xpY2UoaSwgaikgfVxuICAgICAgZWxzZSB0ICs9IHMuc2xpY2UoaSwgaik7XG4gICAgICBpZiAoaiA9PSBsKSBicmVhaztcbiAgICAgIGkgPSBqO1xuICAgIH1cbiAgICBpZiAoYyA8IDB4ODAwKSB7XG4gICAgICB0ICs9IFN0cmluZy5mcm9tQ2hhckNvZGUoMHhjMCB8IChjID4+IDYpKTtcbiAgICAgIHQgKz0gU3RyaW5nLmZyb21DaGFyQ29kZSgweDgwIHwgKGMgJiAweDNmKSk7XG4gICAgfSBlbHNlIGlmIChjIDwgMHhkODAwIHx8IGMgPj0gMHhkZmZmKSB7XG4gICAgICB0ICs9IFN0cmluZy5mcm9tQ2hhckNvZGUoMHhlMCB8IChjID4+IDEyKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDgwIHwgKChjID4+IDYpICYgMHgzZiksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4MCB8IChjICYgMHgzZikpO1xuICAgIH0gZWxzZSBpZiAoYyA+PSAweGRiZmYgfHwgaSArIDEgPT0gbCB8fFxuICAgICAgICAgICAgICAgKGQgPSBzLmNoYXJDb2RlQXQoaSArIDEpKSA8IDB4ZGMwMCB8fCBkID4gMHhkZmZmKSB7XG4gICAgICAvLyBVbm1hdGNoZWQgc3Vycm9nYXRlIHBhaXIsIHJlcGxhY2VkIGJ5IFxcdWZmZmQgKHJlcGxhY2VtZW50IGNoYXJhY3RlcilcbiAgICAgIHQgKz0gXCJcXHhlZlxceGJmXFx4YmRcIjtcbiAgICB9IGVsc2Uge1xuICAgICAgaSsrO1xuICAgICAgYyA9IChjIDw8IDEwKSArIGQgLSAweDM1ZmRjMDA7XG4gICAgICB0ICs9IFN0cmluZy5mcm9tQ2hhckNvZGUoMHhmMCB8IChjID4+IDE4KSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDgwIHwgKChjID4+IDEyKSAmIDB4M2YpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODAgfCAoKGMgPj4gNikgJiAweDNmKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDgwIHwgKGMgJiAweDNmKSk7XG4gICAgfVxuICAgIGlmICh0Lmxlbmd0aCA+IDEwMjQpIHt0LnN1YnN0cigwLCAxKTsgYiArPSB0OyB0ID0gXCJcIjt9XG4gIH1cbiAgcmV0dXJuIGIrdDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF91dGYxNl9vZl91dGY4XG5mdW5jdGlvbiBjYW1sX3V0ZjE2X29mX3V0Zjgocykge1xuICBmb3IgKHZhciBiID0gXCJcIiwgdCA9IFwiXCIsIGMsIGMxLCBjMiwgdiwgaSA9IDAsIGwgPSBzLmxlbmd0aDsgaSA8IGw7IGkrKykge1xuICAgIGMxID0gcy5jaGFyQ29kZUF0KGkpO1xuICAgIGlmIChjMSA8IDB4ODApIHtcbiAgICAgIGZvciAodmFyIGogPSBpICsgMTsgKGogPCBsKSAmJiAoYzEgPSBzLmNoYXJDb2RlQXQoaikpIDwgMHg4MDsgaisrKTtcbiAgICAgIGlmIChqIC0gaSA+IDUxMikgeyB0LnN1YnN0cigwLCAxKTsgYiArPSB0OyB0ID0gXCJcIjsgYiArPSBzLnNsaWNlKGksIGopIH1cbiAgICAgIGVsc2UgdCArPSBzLnNsaWNlKGksIGopO1xuICAgICAgaWYgKGogPT0gbCkgYnJlYWs7XG4gICAgICBpID0gajtcbiAgICB9XG4gICAgdiA9IDE7XG4gICAgaWYgKCgrK2kgPCBsKSAmJiAoKChjMiA9IHMuY2hhckNvZGVBdChpKSkgJiAtNjQpID09IDEyOCkpIHtcbiAgICAgIGMgPSBjMiArIChjMSA8PCA2KTtcbiAgICAgIGlmIChjMSA8IDB4ZTApIHtcbiAgICAgICAgdiA9IGMgLSAweDMwODA7XG4gICAgICAgIGlmICh2IDwgMHg4MCkgdiA9IDE7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB2ID0gMjtcbiAgICAgICAgaWYgKCgrK2kgPCBsKSAmJiAoKChjMiA9IHMuY2hhckNvZGVBdChpKSkgJiAtNjQpID09IDEyOCkpIHtcbiAgICAgICAgICBjID0gYzIgKyAoYyA8PCA2KTtcbiAgICAgICAgICBpZiAoYzEgPCAweGYwKSB7XG4gICAgICAgICAgICB2ID0gYyAtIDB4ZTIwODA7XG4gICAgICAgICAgICBpZiAoKHYgPCAweDgwMCkgfHwgKCh2ID49IDB4ZDdmZikgJiYgKHYgPCAweGUwMDApKSkgdiA9IDI7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHYgPSAzO1xuICAgICAgICAgICAgaWYgKCgrK2kgPCBsKSAmJiAoKChjMiA9IHMuY2hhckNvZGVBdChpKSkgJiAtNjQpID09IDEyOCkgJiZcbiAgICAgICAgICAgICAgICAoYzEgPCAweGY1KSkge1xuICAgICAgICAgICAgICB2ID0gYzIgLSAweDNjODIwODAgKyAoYyA8PCA2KTtcbiAgICAgICAgICAgICAgaWYgKHYgPCAweDEwMDAwIHx8IHYgPiAweDEwZmZmZikgdiA9IDM7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIGlmICh2IDwgNCkgeyAvLyBJbnZhbGlkIHNlcXVlbmNlXG4gICAgICBpIC09IHY7XG4gICAgICB0ICs9IFwiXFx1ZmZmZFwiO1xuICAgIH0gZWxzZSBpZiAodiA+IDB4ZmZmZilcbiAgICAgIHQgKz0gU3RyaW5nLmZyb21DaGFyQ29kZSgweGQ3YzAgKyAodiA+PiAxMCksIDB4ZGMwMCArICh2ICYgMHgzRkYpKVxuICAgIGVsc2VcbiAgICAgIHQgKz0gU3RyaW5nLmZyb21DaGFyQ29kZSh2KTtcbiAgICBpZiAodC5sZW5ndGggPiAxMDI0KSB7dC5zdWJzdHIoMCwgMSk7IGIgKz0gdDsgdCA9IFwiXCI7fVxuICB9XG4gIHJldHVybiBiK3Q7XG59XG5cbi8vUHJvdmlkZXM6IGpzb29faXNfYXNjaWlcbmZ1bmN0aW9uIGpzb29faXNfYXNjaWkgKHMpIHtcbiAgLy8gVGhlIHJlZ3VsYXIgZXhwcmVzc2lvbiBnZXRzIGJldHRlciBhdCBhcm91bmQgdGhpcyBwb2ludCBmb3IgYWxsIGJyb3dzZXJzXG4gIGlmIChzLmxlbmd0aCA8IDI0KSB7XG4gICAgLy8gU3BpZGVybW9ua2V5IGdldHMgbXVjaCBzbG93ZXIgd2hlbiBzLmxlbmd0aCA+PSAyNCAob24gNjQgYml0IGFyY2hzKVxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcy5sZW5ndGg7IGkrKykgaWYgKHMuY2hhckNvZGVBdChpKSA+IDEyNykgcmV0dXJuIGZhbHNlO1xuICAgIHJldHVybiB0cnVlO1xuICB9IGVsc2VcbiAgICByZXR1cm4gIS9bXlxceDAwLVxceDdmXS8udGVzdChzKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ieXRlc191bnNhZmVfZ2V0IG11dGFibGVcbmZ1bmN0aW9uIGNhbWxfYnl0ZXNfdW5zYWZlX2dldCAocywgaSkge1xuICBzd2l0Y2ggKHMudCAmIDYpIHtcbiAgZGVmYXVsdDogLyogUEFSVElBTCAqL1xuICAgIGlmIChpID49IHMuYy5sZW5ndGgpIHJldHVybiAwO1xuICBjYXNlIDA6IC8qIEJZVEVTICovXG4gICAgcmV0dXJuIHMuYy5jaGFyQ29kZUF0KGkpO1xuICBjYXNlIDQ6IC8qIEFSUkFZICovXG4gICAgcmV0dXJuIHMuY1tpXVxuICB9XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYnl0ZXNfdW5zYWZlX3NldFxuLy9SZXF1aXJlczogY2FtbF9jb252ZXJ0X2J5dGVzX3RvX2FycmF5XG5mdW5jdGlvbiBjYW1sX2J5dGVzX3Vuc2FmZV9zZXQgKHMsIGksIGMpIHtcbiAgLy8gVGhlIE9DYW1sIGNvbXBpbGVyIHVzZXMgQ2hhci51bnNhZmVfY2hyIG9uIGludGVnZXJzIGxhcmdlciB0aGFuIDI1NSFcbiAgYyAmPSAweGZmO1xuICBpZiAocy50ICE9IDQgLyogQVJSQVkgKi8pIHtcbiAgICBpZiAoaSA9PSBzLmMubGVuZ3RoKSB7XG4gICAgICBzLmMgKz0gU3RyaW5nLmZyb21DaGFyQ29kZSAoYyk7XG4gICAgICBpZiAoaSArIDEgPT0gcy5sKSBzLnQgPSAwOyAvKkJZVEVTIHwgVU5LT1dOKi9cbiAgICAgIHJldHVybiAwO1xuICAgIH1cbiAgICBjYW1sX2NvbnZlcnRfYnl0ZXNfdG9fYXJyYXkgKHMpO1xuICB9XG4gIHMuY1tpXSA9IGM7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N0cmluZ19ib3VuZF9lcnJvclxuLy9SZXF1aXJlczogY2FtbF9pbnZhbGlkX2FyZ3VtZW50XG5mdW5jdGlvbiBjYW1sX3N0cmluZ19ib3VuZF9lcnJvciAoKSB7XG4gIGNhbWxfaW52YWxpZF9hcmd1bWVudCAoXCJpbmRleCBvdXQgb2YgYm91bmRzXCIpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2J5dGVzX2JvdW5kX2Vycm9yXG4vL1JlcXVpcmVzOiBjYW1sX2ludmFsaWRfYXJndW1lbnRcbmZ1bmN0aW9uIGNhbWxfYnl0ZXNfYm91bmRfZXJyb3IgKCkge1xuICBjYW1sX2ludmFsaWRfYXJndW1lbnQgKFwiaW5kZXggb3V0IG9mIGJvdW5kc1wiKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zdHJpbmdfZ2V0XG4vL1JlcXVpcmVzOiBjYW1sX3N0cmluZ19ib3VuZF9lcnJvciwgY2FtbF9zdHJpbmdfdW5zYWZlX2dldFxuLy9SZXF1aXJlczogY2FtbF9tbF9zdHJpbmdfbGVuZ3RoXG5mdW5jdGlvbiBjYW1sX3N0cmluZ19nZXQgKHMsIGkpIHtcbiAgaWYgKGkgPj4+IDAgPj0gY2FtbF9tbF9zdHJpbmdfbGVuZ3RoKHMpKSBjYW1sX3N0cmluZ19ib3VuZF9lcnJvcigpO1xuICByZXR1cm4gY2FtbF9zdHJpbmdfdW5zYWZlX2dldCAocywgaSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3RyaW5nX2dldDE2XG4vL1JlcXVpcmVzOiBjYW1sX3N0cmluZ191bnNhZmVfZ2V0LCBjYW1sX3N0cmluZ19ib3VuZF9lcnJvclxuLy9SZXF1aXJlczogY2FtbF9tbF9zdHJpbmdfbGVuZ3RoXG5mdW5jdGlvbiBjYW1sX3N0cmluZ19nZXQxNihzLGkpIHtcbiAgaWYgKGkgPj4+IDAgPj0gY2FtbF9tbF9zdHJpbmdfbGVuZ3RoKHMpIC0gMSkgY2FtbF9zdHJpbmdfYm91bmRfZXJyb3IoKTtcbiAgdmFyIGIxID0gY2FtbF9zdHJpbmdfdW5zYWZlX2dldCAocywgaSksXG4gICAgICBiMiA9IGNhbWxfc3RyaW5nX3Vuc2FmZV9nZXQgKHMsIGkgKyAxKTtcbiAgcmV0dXJuIChiMiA8PCA4IHwgYjEpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2J5dGVzX2dldDE2XG4vL1JlcXVpcmVzOiBjYW1sX2J5dGVzX3Vuc2FmZV9nZXQsIGNhbWxfYnl0ZXNfYm91bmRfZXJyb3JcbmZ1bmN0aW9uIGNhbWxfYnl0ZXNfZ2V0MTYocyxpKSB7XG4gIGlmIChpID4+PiAwID49IHMubCAtIDEpIGNhbWxfYnl0ZXNfYm91bmRfZXJyb3IoKTtcbiAgdmFyIGIxID0gY2FtbF9ieXRlc191bnNhZmVfZ2V0IChzLCBpKSxcbiAgICAgIGIyID0gY2FtbF9ieXRlc191bnNhZmVfZ2V0IChzLCBpICsgMSk7XG4gIHJldHVybiAoYjIgPDwgOCB8IGIxKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zdHJpbmdfZ2V0MzJcbi8vUmVxdWlyZXM6IGNhbWxfc3RyaW5nX3Vuc2FmZV9nZXQsIGNhbWxfc3RyaW5nX2JvdW5kX2Vycm9yXG4vL1JlcXVpcmVzOiBjYW1sX21sX3N0cmluZ19sZW5ndGhcbmZ1bmN0aW9uIGNhbWxfc3RyaW5nX2dldDMyKHMsaSkge1xuICBpZiAoaSA+Pj4gMCA+PSBjYW1sX21sX3N0cmluZ19sZW5ndGgocykgLSAzKSBjYW1sX3N0cmluZ19ib3VuZF9lcnJvcigpO1xuICB2YXIgYjEgPSBjYW1sX3N0cmluZ191bnNhZmVfZ2V0IChzLCBpKSxcbiAgICAgIGIyID0gY2FtbF9zdHJpbmdfdW5zYWZlX2dldCAocywgaSArIDEpLFxuICAgICAgYjMgPSBjYW1sX3N0cmluZ191bnNhZmVfZ2V0IChzLCBpICsgMiksXG4gICAgICBiNCA9IGNhbWxfc3RyaW5nX3Vuc2FmZV9nZXQgKHMsIGkgKyAzKTtcbiAgcmV0dXJuIChiNCA8PCAyNCB8IGIzIDw8IDE2IHwgYjIgPDwgOCB8IGIxKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ieXRlc19nZXQzMlxuLy9SZXF1aXJlczogY2FtbF9ieXRlc191bnNhZmVfZ2V0LCBjYW1sX2J5dGVzX2JvdW5kX2Vycm9yXG5mdW5jdGlvbiBjYW1sX2J5dGVzX2dldDMyKHMsaSkge1xuICBpZiAoaSA+Pj4gMCA+PSBzLmwgLSAzKSBjYW1sX2J5dGVzX2JvdW5kX2Vycm9yKCk7XG4gIHZhciBiMSA9IGNhbWxfYnl0ZXNfdW5zYWZlX2dldCAocywgaSksXG4gICAgICBiMiA9IGNhbWxfYnl0ZXNfdW5zYWZlX2dldCAocywgaSArIDEpLFxuICAgICAgYjMgPSBjYW1sX2J5dGVzX3Vuc2FmZV9nZXQgKHMsIGkgKyAyKSxcbiAgICAgIGI0ID0gY2FtbF9ieXRlc191bnNhZmVfZ2V0IChzLCBpICsgMyk7XG4gIHJldHVybiAoYjQgPDwgMjQgfCBiMyA8PCAxNiB8IGIyIDw8IDggfCBiMSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3RyaW5nX2dldDY0XG4vL1JlcXVpcmVzOiBjYW1sX3N0cmluZ191bnNhZmVfZ2V0LCBjYW1sX3N0cmluZ19ib3VuZF9lcnJvclxuLy9SZXF1aXJlczogY2FtbF9pbnQ2NF9vZl9ieXRlc1xuLy9SZXF1aXJlczogY2FtbF9tbF9zdHJpbmdfbGVuZ3RoXG5mdW5jdGlvbiBjYW1sX3N0cmluZ19nZXQ2NChzLGkpIHtcbiAgaWYgKGkgPj4+IDAgPj0gY2FtbF9tbF9zdHJpbmdfbGVuZ3RoKHMpIC0gNykgY2FtbF9zdHJpbmdfYm91bmRfZXJyb3IoKTtcbiAgdmFyIGEgPSBuZXcgQXJyYXkoOCk7XG4gIGZvcih2YXIgaiA9IDA7IGogPCA4OyBqKyspe1xuICAgIGFbNyAtIGpdID0gY2FtbF9zdHJpbmdfdW5zYWZlX2dldCAocywgaSArIGopO1xuICB9XG4gIHJldHVybiBjYW1sX2ludDY0X29mX2J5dGVzKGEpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2J5dGVzX2dldDY0XG4vL1JlcXVpcmVzOiBjYW1sX2J5dGVzX3Vuc2FmZV9nZXQsIGNhbWxfYnl0ZXNfYm91bmRfZXJyb3Jcbi8vUmVxdWlyZXM6IGNhbWxfaW50NjRfb2ZfYnl0ZXNcbmZ1bmN0aW9uIGNhbWxfYnl0ZXNfZ2V0NjQocyxpKSB7XG4gIGlmIChpID4+PiAwID49IHMubCAtIDcpIGNhbWxfYnl0ZXNfYm91bmRfZXJyb3IoKTtcbiAgdmFyIGEgPSBuZXcgQXJyYXkoOCk7XG4gIGZvcih2YXIgaiA9IDA7IGogPCA4OyBqKyspe1xuICAgIGFbNyAtIGpdID0gY2FtbF9ieXRlc191bnNhZmVfZ2V0IChzLCBpICsgaik7XG4gIH1cbiAgcmV0dXJuIGNhbWxfaW50NjRfb2ZfYnl0ZXMoYSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYnl0ZXNfZ2V0XG4vL1JlcXVpcmVzOiBjYW1sX2J5dGVzX2JvdW5kX2Vycm9yLCBjYW1sX2J5dGVzX3Vuc2FmZV9nZXRcbmZ1bmN0aW9uIGNhbWxfYnl0ZXNfZ2V0IChzLCBpKSB7XG4gIGlmIChpID4+PiAwID49IHMubCkgY2FtbF9ieXRlc19ib3VuZF9lcnJvcigpO1xuICByZXR1cm4gY2FtbF9ieXRlc191bnNhZmVfZ2V0IChzLCBpKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zdHJpbmdfc2V0XG4vL1JlcXVpcmVzOiBjYW1sX2ZhaWx3aXRoXG4vL0lmOiBqcy1zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfc3RyaW5nX3NldCAocywgaSwgYykge1xuICBjYW1sX2ZhaWx3aXRoKFwiY2FtbF9zdHJpbmdfc2V0XCIpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N0cmluZ19zZXRcbi8vUmVxdWlyZXM6IGNhbWxfc3RyaW5nX3Vuc2FmZV9zZXQsIGNhbWxfc3RyaW5nX2JvdW5kX2Vycm9yXG4vL0lmOiAhanMtc3RyaW5nXG5mdW5jdGlvbiBjYW1sX3N0cmluZ19zZXQgKHMsIGksIGMpIHtcbiAgaWYgKGkgPj4+IDAgPj0gcy5sKSBjYW1sX3N0cmluZ19ib3VuZF9lcnJvcigpO1xuICByZXR1cm4gY2FtbF9zdHJpbmdfdW5zYWZlX3NldCAocywgaSwgYyk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYnl0ZXNfc2V0MTZcbi8vUmVxdWlyZXM6IGNhbWxfYnl0ZXNfYm91bmRfZXJyb3IsIGNhbWxfYnl0ZXNfdW5zYWZlX3NldFxuZnVuY3Rpb24gY2FtbF9ieXRlc19zZXQxNihzLGksaTE2KXtcbiAgaWYgKGkgPj4+IDAgPj0gcy5sIC0gMSkgY2FtbF9ieXRlc19ib3VuZF9lcnJvcigpO1xuICB2YXIgYjIgPSAweEZGICYgaTE2ID4+IDgsXG4gICAgICBiMSA9IDB4RkYgJiBpMTY7XG4gIGNhbWxfYnl0ZXNfdW5zYWZlX3NldCAocywgaSArIDAsIGIxKTtcbiAgY2FtbF9ieXRlc191bnNhZmVfc2V0IChzLCBpICsgMSwgYjIpO1xuICByZXR1cm4gMFxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N0cmluZ19zZXQxNlxuLy9SZXF1aXJlczogY2FtbF9mYWlsd2l0aFxuLy9JZjoganMtc3RyaW5nXG5mdW5jdGlvbiBjYW1sX3N0cmluZ19zZXQxNihzLGksaTE2KXtcbiAgY2FtbF9mYWlsd2l0aChcImNhbWxfc3RyaW5nX3NldDE2XCIpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N0cmluZ19zZXQxNlxuLy9SZXF1aXJlczogY2FtbF9ieXRlc19zZXQxNlxuLy9JZjogIWpzLXN0cmluZ1xuZnVuY3Rpb24gY2FtbF9zdHJpbmdfc2V0MTYocyxpLGkxNil7XG4gIHJldHVybiBjYW1sX2J5dGVzX3NldDE2KHMsaSxpMTYpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2J5dGVzX3NldDMyXG4vL1JlcXVpcmVzOiBjYW1sX2J5dGVzX2JvdW5kX2Vycm9yLCBjYW1sX2J5dGVzX3Vuc2FmZV9zZXRcbmZ1bmN0aW9uIGNhbWxfYnl0ZXNfc2V0MzIocyxpLGkzMil7XG4gIGlmIChpID4+PiAwID49IHMubCAtIDMpIGNhbWxfYnl0ZXNfYm91bmRfZXJyb3IoKTtcbiAgdmFyIGI0ID0gMHhGRiAmIGkzMiA+PiAyNCxcbiAgICAgIGIzID0gMHhGRiAmIGkzMiA+PiAxNixcbiAgICAgIGIyID0gMHhGRiAmIGkzMiA+PiA4LFxuICAgICAgYjEgPSAweEZGICYgaTMyO1xuICBjYW1sX2J5dGVzX3Vuc2FmZV9zZXQgKHMsIGkgKyAwLCBiMSk7XG4gIGNhbWxfYnl0ZXNfdW5zYWZlX3NldCAocywgaSArIDEsIGIyKTtcbiAgY2FtbF9ieXRlc191bnNhZmVfc2V0IChzLCBpICsgMiwgYjMpO1xuICBjYW1sX2J5dGVzX3Vuc2FmZV9zZXQgKHMsIGkgKyAzLCBiNCk7XG4gIHJldHVybiAwXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3RyaW5nX3NldDMyXG4vL1JlcXVpcmVzOiBjYW1sX2ZhaWx3aXRoXG4vL0lmOiBqcy1zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfc3RyaW5nX3NldDMyKHMsaSxpMzIpe1xuICBjYW1sX2ZhaWx3aXRoKFwiY2FtbF9zdHJpbmdfc2V0MzJcIik7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3RyaW5nX3NldDMyXG4vL1JlcXVpcmVzOiBjYW1sX2J5dGVzX3NldDMyXG4vL0lmOiAhanMtc3RyaW5nXG5mdW5jdGlvbiBjYW1sX3N0cmluZ19zZXQzMihzLGksaTMyKXtcbiAgcmV0dXJuIGNhbWxfYnl0ZXNfc2V0MzIocyxpLGkzMik7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYnl0ZXNfc2V0NjRcbi8vUmVxdWlyZXM6IGNhbWxfYnl0ZXNfYm91bmRfZXJyb3IsIGNhbWxfYnl0ZXNfdW5zYWZlX3NldFxuLy9SZXF1aXJlczogY2FtbF9pbnQ2NF90b19ieXRlc1xuZnVuY3Rpb24gY2FtbF9ieXRlc19zZXQ2NChzLGksaTY0KXtcbiAgaWYgKGkgPj4+IDAgPj0gcy5sIC0gNykgY2FtbF9ieXRlc19ib3VuZF9lcnJvcigpO1xuICB2YXIgYSA9IGNhbWxfaW50NjRfdG9fYnl0ZXMoaTY0KTtcbiAgZm9yKHZhciBqID0gMDsgaiA8IDg7IGorKykge1xuICAgIGNhbWxfYnl0ZXNfdW5zYWZlX3NldCAocywgaSArIDcgLSBqLCBhW2pdKTtcbiAgfVxuICByZXR1cm4gMFxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N0cmluZ19zZXQ2NFxuLy9SZXF1aXJlczogY2FtbF9mYWlsd2l0aFxuLy9JZjoganMtc3RyaW5nXG5mdW5jdGlvbiBjYW1sX3N0cmluZ19zZXQ2NChzLGksaTY0KXtcbiAgY2FtbF9mYWlsd2l0aChcImNhbWxfc3RyaW5nX3NldDY0XCIpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N0cmluZ19zZXQ2NFxuLy9SZXF1aXJlczogY2FtbF9ieXRlc19zZXQ2NFxuLy9JZjogIWpzLXN0cmluZ1xuZnVuY3Rpb24gY2FtbF9zdHJpbmdfc2V0NjQocyxpLGk2NCl7XG4gIHJldHVybiBjYW1sX2J5dGVzX3NldDY0KHMsaSxpNjQpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2J5dGVzX3NldFxuLy9SZXF1aXJlczogY2FtbF9ieXRlc19ib3VuZF9lcnJvciwgY2FtbF9ieXRlc191bnNhZmVfc2V0XG5mdW5jdGlvbiBjYW1sX2J5dGVzX3NldCAocywgaSwgYykge1xuICBpZiAoaSA+Pj4gMCA+PSBzLmwpIGNhbWxfYnl0ZXNfYm91bmRfZXJyb3IoKTtcbiAgcmV0dXJuIGNhbWxfYnl0ZXNfdW5zYWZlX3NldCAocywgaSwgYyk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYnl0ZXNfb2ZfdXRmMTZfanNzdHJpbmdcbi8vUmVxdWlyZXM6IGpzb29faXNfYXNjaWksIGNhbWxfdXRmOF9vZl91dGYxNiwgTWxCeXRlc1xuZnVuY3Rpb24gY2FtbF9ieXRlc19vZl91dGYxNl9qc3N0cmluZyAocykge1xuICB2YXIgdGFnID0gOSAvKiBCWVRFUyB8IEFTQ0lJICovO1xuICBpZiAoIWpzb29faXNfYXNjaWkocykpXG4gICAgdGFnID0gOCAvKiBCWVRFUyB8IE5PVF9BU0NJSSAqLywgcyA9IGNhbWxfdXRmOF9vZl91dGYxNihzKTtcbiAgcmV0dXJuIG5ldyBNbEJ5dGVzKHRhZywgcywgcy5sZW5ndGgpO1xufVxuXG5cbi8vUHJvdmlkZXM6IE1sQnl0ZXNcbi8vUmVxdWlyZXM6IGNhbWxfY29udmVydF9zdHJpbmdfdG9fYnl0ZXMsIGpzb29faXNfYXNjaWksIGNhbWxfdXRmMTZfb2ZfdXRmOFxuZnVuY3Rpb24gTWxCeXRlcyAodGFnLCBjb250ZW50cywgbGVuZ3RoKSB7XG4gIHRoaXMudD10YWc7IHRoaXMuYz1jb250ZW50czsgdGhpcy5sPWxlbmd0aDtcbn1cbk1sQnl0ZXMucHJvdG90eXBlLnRvU3RyaW5nID0gZnVuY3Rpb24oKXtcbiAgc3dpdGNoICh0aGlzLnQpIHtcbiAgY2FzZSA5OiAvKkJZVEVTIHwgQVNDSUkqL1xuICAgIHJldHVybiB0aGlzLmM7XG4gIGRlZmF1bHQ6XG4gICAgY2FtbF9jb252ZXJ0X3N0cmluZ190b19ieXRlcyh0aGlzKTtcbiAgY2FzZSAwOiAvKkJZVEVTIHwgVU5LT1dOKi9cbiAgICBpZiAoanNvb19pc19hc2NpaSh0aGlzLmMpKSB7XG4gICAgICB0aGlzLnQgPSA5OyAvKkJZVEVTIHwgQVNDSUkqL1xuICAgICAgcmV0dXJuIHRoaXMuYztcbiAgICB9XG4gICAgdGhpcy50ID0gODsgLypCWVRFUyB8IE5PVF9BU0NJSSovXG4gIGNhc2UgODogLypCWVRFUyB8IE5PVF9BU0NJSSovXG4gICAgcmV0dXJuIHRoaXMuYztcbiAgfVxufTtcbk1sQnl0ZXMucHJvdG90eXBlLnRvVXRmMTYgPSBmdW5jdGlvbiAoKXtcbiAgdmFyIHIgPSB0aGlzLnRvU3RyaW5nKCk7XG4gIGlmKHRoaXMudCA9PSA5KSByZXR1cm4gclxuICByZXR1cm4gY2FtbF91dGYxNl9vZl91dGY4KHIpO1xufVxuTWxCeXRlcy5wcm90b3R5cGUuc2xpY2UgPSBmdW5jdGlvbiAoKXtcbiAgdmFyIGNvbnRlbnQgPSB0aGlzLnQgPT0gNCA/IHRoaXMuYy5zbGljZSgpIDogdGhpcy5jO1xuICByZXR1cm4gbmV3IE1sQnl0ZXModGhpcy50LGNvbnRlbnQsdGhpcy5sKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9jb252ZXJ0X3N0cmluZ190b19ieXRlc1xuLy9SZXF1aXJlczogY2FtbF9zdHJfcmVwZWF0LCBjYW1sX3N1YmFycmF5X3RvX2pzYnl0ZXNcbmZ1bmN0aW9uIGNhbWxfY29udmVydF9zdHJpbmdfdG9fYnl0ZXMgKHMpIHtcbiAgLyogQXNzdW1lcyBub3QgQllURVMgKi9cbiAgaWYgKHMudCA9PSAyIC8qIFBBUlRJQUwgKi8pXG4gICAgcy5jICs9IGNhbWxfc3RyX3JlcGVhdChzLmwgLSBzLmMubGVuZ3RoLCAnXFwwJylcbiAgZWxzZVxuICAgIHMuYyA9IGNhbWxfc3ViYXJyYXlfdG9fanNieXRlcyAocy5jLCAwLCBzLmMubGVuZ3RoKTtcbiAgcy50ID0gMDsgLypCWVRFUyB8IFVOS09XTiovXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfY29udmVydF9ieXRlc190b19hcnJheVxuZnVuY3Rpb24gY2FtbF9jb252ZXJ0X2J5dGVzX3RvX2FycmF5IChzKSB7XG4gIC8qIEFzc3VtZXMgbm90IEFSUkFZICovXG4gIHZhciBhID0gbmV3IFVpbnQ4QXJyYXkocy5sKTtcbiAgdmFyIGIgPSBzLmMsIGwgPSBiLmxlbmd0aCwgaSA9IDA7XG4gIGZvciAoOyBpIDwgbDsgaSsrKSBhW2ldID0gYi5jaGFyQ29kZUF0KGkpO1xuICBmb3IgKGwgPSBzLmw7IGkgPCBsOyBpKyspIGFbaV0gPSAwO1xuICBzLmMgPSBhO1xuICBzLnQgPSA0OyAvKiBBUlJBWSAqL1xuICByZXR1cm4gYTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF91aW50OF9hcnJheV9vZl9ieXRlcyBtdXRhYmxlXG4vL1JlcXVpcmVzOiBjYW1sX2NvbnZlcnRfYnl0ZXNfdG9fYXJyYXlcbmZ1bmN0aW9uIGNhbWxfdWludDhfYXJyYXlfb2ZfYnl0ZXMgKHMpIHtcbiAgaWYgKHMudCAhPSA0IC8qIEFSUkFZICovKSBjYW1sX2NvbnZlcnRfYnl0ZXNfdG9fYXJyYXkocyk7XG4gIHJldHVybiBzLmM7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfdWludDhfYXJyYXlfb2Zfc3RyaW5nIG11dGFibGVcbi8vUmVxdWlyZXM6IGNhbWxfY29udmVydF9ieXRlc190b19hcnJheVxuLy9SZXF1aXJlczogY2FtbF9tbF9zdHJpbmdfbGVuZ3RoLCBjYW1sX3N0cmluZ191bnNhZmVfZ2V0XG5mdW5jdGlvbiBjYW1sX3VpbnQ4X2FycmF5X29mX3N0cmluZyAocykge1xuICB2YXIgbCA9IGNhbWxfbWxfc3RyaW5nX2xlbmd0aChzKTtcbiAgdmFyIGEgPSBuZXcgQXJyYXkobCk7XG4gIHZhciBpID0gMDtcbiAgZm9yICg7IGkgPCBsOyBpKyspIGFbaV0gPSBjYW1sX3N0cmluZ191bnNhZmVfZ2V0KHMsaSk7XG4gIHJldHVybiBhO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2NyZWF0ZV9zdHJpbmcgY29uc3Rcbi8vUmVxdWlyZXM6IE1sQnl0ZXMsIGNhbWxfaW52YWxpZF9hcmd1bWVudFxuLy9JZjogIWpzLXN0cmluZ1xuZnVuY3Rpb24gY2FtbF9jcmVhdGVfc3RyaW5nKGxlbikge1xuICBpZihsZW4gPCAwKSBjYW1sX2ludmFsaWRfYXJndW1lbnQoXCJTdHJpbmcuY3JlYXRlXCIpO1xuICByZXR1cm4gbmV3IE1sQnl0ZXMobGVuPzI6OSxcIlwiLGxlbik7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfY3JlYXRlX3N0cmluZyBjb25zdFxuLy9SZXF1aXJlczogY2FtbF9pbnZhbGlkX2FyZ3VtZW50XG4vL0lmOiBqcy1zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfY3JlYXRlX3N0cmluZyhsZW4pIHtcbiAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiU3RyaW5nLmNyZWF0ZVwiKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9jcmVhdGVfYnl0ZXMgY29uc3Rcbi8vUmVxdWlyZXM6IE1sQnl0ZXMsY2FtbF9pbnZhbGlkX2FyZ3VtZW50XG5mdW5jdGlvbiBjYW1sX2NyZWF0ZV9ieXRlcyhsZW4pIHtcbiAgaWYgKGxlbiA8IDApIGNhbWxfaW52YWxpZF9hcmd1bWVudChcIkJ5dGVzLmNyZWF0ZVwiKTtcbiAgcmV0dXJuIG5ldyBNbEJ5dGVzKGxlbj8yOjksXCJcIixsZW4pO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N0cmluZ19vZl9hcnJheVxuLy9SZXF1aXJlczogY2FtbF9zdWJhcnJheV90b19qc2J5dGVzLCBjYW1sX3N0cmluZ19vZl9qc2J5dGVzXG5mdW5jdGlvbiBjYW1sX3N0cmluZ19vZl9hcnJheSAoYSkge1xuICByZXR1cm4gY2FtbF9zdHJpbmdfb2ZfanNieXRlcyhjYW1sX3N1YmFycmF5X3RvX2pzYnl0ZXMoYSwwLGEubGVuZ3RoKSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYnl0ZXNfb2ZfYXJyYXlcbi8vUmVxdWlyZXM6IE1sQnl0ZXNcbmZ1bmN0aW9uIGNhbWxfYnl0ZXNfb2ZfYXJyYXkgKGEpIHtcbiAgaWYoISAoYSBpbnN0YW5jZW9mIFVpbnQ4QXJyYXkpKSB7XG4gICAgYSA9IG5ldyBVaW50OEFycmF5KGEpO1xuICB9XG4gIHJldHVybiBuZXcgTWxCeXRlcyg0LGEsYS5sZW5ndGgpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2J5dGVzX2NvbXBhcmUgbXV0YWJsZVxuLy9SZXF1aXJlczogY2FtbF9jb252ZXJ0X3N0cmluZ190b19ieXRlc1xuZnVuY3Rpb24gY2FtbF9ieXRlc19jb21wYXJlKHMxLCBzMikge1xuICAoczEudCAmIDYpICYmIGNhbWxfY29udmVydF9zdHJpbmdfdG9fYnl0ZXMoczEpO1xuICAoczIudCAmIDYpICYmIGNhbWxfY29udmVydF9zdHJpbmdfdG9fYnl0ZXMoczIpO1xuICByZXR1cm4gKHMxLmMgPCBzMi5jKT8tMTooczEuYyA+IHMyLmMpPzE6MDtcbn1cblxuXG4vL1Byb3ZpZGVzOiBjYW1sX2J5dGVzX2VxdWFsIG11dGFibGUgKGNvbnN0LCBjb25zdClcbi8vUmVxdWlyZXM6IGNhbWxfY29udmVydF9zdHJpbmdfdG9fYnl0ZXNcbmZ1bmN0aW9uIGNhbWxfYnl0ZXNfZXF1YWwoczEsIHMyKSB7XG4gIGlmKHMxID09PSBzMikgcmV0dXJuIDE7XG4gIChzMS50ICYgNikgJiYgY2FtbF9jb252ZXJ0X3N0cmluZ190b19ieXRlcyhzMSk7XG4gIChzMi50ICYgNikgJiYgY2FtbF9jb252ZXJ0X3N0cmluZ190b19ieXRlcyhzMik7XG4gIHJldHVybiAoczEuYyA9PSBzMi5jKT8xOjA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3RyaW5nX25vdGVxdWFsIG11dGFibGUgKGNvbnN0LCBjb25zdClcbi8vUmVxdWlyZXM6IGNhbWxfc3RyaW5nX2VxdWFsXG5mdW5jdGlvbiBjYW1sX3N0cmluZ19ub3RlcXVhbChzMSwgczIpIHsgcmV0dXJuIDEtY2FtbF9zdHJpbmdfZXF1YWwoczEsIHMyKTsgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2J5dGVzX25vdGVxdWFsIG11dGFibGUgKGNvbnN0LCBjb25zdClcbi8vUmVxdWlyZXM6IGNhbWxfYnl0ZXNfZXF1YWxcbmZ1bmN0aW9uIGNhbWxfYnl0ZXNfbm90ZXF1YWwoczEsIHMyKSB7IHJldHVybiAxLWNhbWxfYnl0ZXNfZXF1YWwoczEsIHMyKTsgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2J5dGVzX2xlc3NlcXVhbCBtdXRhYmxlXG4vL1JlcXVpcmVzOiBjYW1sX2NvbnZlcnRfc3RyaW5nX3RvX2J5dGVzXG5mdW5jdGlvbiBjYW1sX2J5dGVzX2xlc3NlcXVhbChzMSwgczIpIHtcbiAgKHMxLnQgJiA2KSAmJiBjYW1sX2NvbnZlcnRfc3RyaW5nX3RvX2J5dGVzKHMxKTtcbiAgKHMyLnQgJiA2KSAmJiBjYW1sX2NvbnZlcnRfc3RyaW5nX3RvX2J5dGVzKHMyKTtcbiAgcmV0dXJuIChzMS5jIDw9IHMyLmMpPzE6MDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ieXRlc19sZXNzdGhhbiBtdXRhYmxlXG4vL1JlcXVpcmVzOiBjYW1sX2NvbnZlcnRfc3RyaW5nX3RvX2J5dGVzXG5mdW5jdGlvbiBjYW1sX2J5dGVzX2xlc3N0aGFuKHMxLCBzMikge1xuICAoczEudCAmIDYpICYmIGNhbWxfY29udmVydF9zdHJpbmdfdG9fYnl0ZXMoczEpO1xuICAoczIudCAmIDYpICYmIGNhbWxfY29udmVydF9zdHJpbmdfdG9fYnl0ZXMoczIpO1xuICByZXR1cm4gKHMxLmMgPCBzMi5jKT8xOjA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3RyaW5nX2dyZWF0ZXJlcXVhbFxuLy9SZXF1aXJlczogY2FtbF9zdHJpbmdfbGVzc2VxdWFsXG5mdW5jdGlvbiBjYW1sX3N0cmluZ19ncmVhdGVyZXF1YWwoczEsIHMyKSB7XG4gIHJldHVybiBjYW1sX3N0cmluZ19sZXNzZXF1YWwoczIsczEpO1xufVxuLy9Qcm92aWRlczogY2FtbF9ieXRlc19ncmVhdGVyZXF1YWxcbi8vUmVxdWlyZXM6IGNhbWxfYnl0ZXNfbGVzc2VxdWFsXG5mdW5jdGlvbiBjYW1sX2J5dGVzX2dyZWF0ZXJlcXVhbChzMSwgczIpIHtcbiAgcmV0dXJuIGNhbWxfYnl0ZXNfbGVzc2VxdWFsKHMyLHMxKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zdHJpbmdfZ3JlYXRlcnRoYW5cbi8vUmVxdWlyZXM6IGNhbWxfc3RyaW5nX2xlc3N0aGFuXG5mdW5jdGlvbiBjYW1sX3N0cmluZ19ncmVhdGVydGhhbihzMSwgczIpIHtcbiAgcmV0dXJuIGNhbWxfc3RyaW5nX2xlc3N0aGFuKHMyLCBzMSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYnl0ZXNfZ3JlYXRlcnRoYW5cbi8vUmVxdWlyZXM6IGNhbWxfYnl0ZXNfbGVzc3RoYW5cbmZ1bmN0aW9uIGNhbWxfYnl0ZXNfZ3JlYXRlcnRoYW4oczEsIHMyKSB7XG4gIHJldHVybiBjYW1sX2J5dGVzX2xlc3N0aGFuKHMyLCBzMSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZmlsbF9ieXRlc1xuLy9SZXF1aXJlczogY2FtbF9zdHJfcmVwZWF0LCBjYW1sX2NvbnZlcnRfYnl0ZXNfdG9fYXJyYXlcbi8vQWxpYXM6IGNhbWxfZmlsbF9zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfZmlsbF9ieXRlcyhzLCBpLCBsLCBjKSB7XG4gIGlmIChsID4gMCkge1xuICAgIGlmIChpID09IDAgJiYgKGwgPj0gcy5sIHx8IChzLnQgPT0gMiAvKiBQQVJUSUFMICovICYmIGwgPj0gcy5jLmxlbmd0aCkpKSB7XG4gICAgICBpZiAoYyA9PSAwKSB7XG4gICAgICAgIHMuYyA9IFwiXCI7XG4gICAgICAgIHMudCA9IDI7IC8qIFBBUlRJQUwgKi9cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHMuYyA9IGNhbWxfc3RyX3JlcGVhdCAobCwgU3RyaW5nLmZyb21DaGFyQ29kZShjKSk7XG4gICAgICAgIHMudCA9IChsID09IHMubCk/MCAvKiBCWVRFUyB8IFVOS09XTiAqLyA6MjsgLyogUEFSVElBTCAqL1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBpZiAocy50ICE9IDQgLyogQVJSQVkgKi8pIGNhbWxfY29udmVydF9ieXRlc190b19hcnJheShzKTtcbiAgICAgIGZvciAobCArPSBpOyBpIDwgbDsgaSsrKSBzLmNbaV0gPSBjO1xuICAgIH1cbiAgfVxuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ibGl0X2J5dGVzXG4vL1JlcXVpcmVzOiBjYW1sX3N1YmFycmF5X3RvX2pzYnl0ZXMsIGNhbWxfY29udmVydF9ieXRlc190b19hcnJheVxuZnVuY3Rpb24gY2FtbF9ibGl0X2J5dGVzKHMxLCBpMSwgczIsIGkyLCBsZW4pIHtcbiAgaWYgKGxlbiA9PSAwKSByZXR1cm4gMDtcbiAgaWYgKChpMiA9PSAwKSAmJlxuICAgICAgKGxlbiA+PSBzMi5sIHx8IChzMi50ID09IDIgLyogUEFSVElBTCAqLyAmJiBsZW4gPj0gczIuYy5sZW5ndGgpKSkge1xuICAgIHMyLmMgPSAoczEudCA9PSA0IC8qIEFSUkFZICovKT9cbiAgICAgIGNhbWxfc3ViYXJyYXlfdG9fanNieXRlcyhzMS5jLCBpMSwgbGVuKTpcbiAgICAgIChpMSA9PSAwICYmIHMxLmMubGVuZ3RoID09IGxlbik/czEuYzpzMS5jLnN1YnN0cihpMSwgbGVuKTtcbiAgICBzMi50ID0gKHMyLmMubGVuZ3RoID09IHMyLmwpPzAgLyogQllURVMgfCBVTktPV04gKi8gOjI7IC8qIFBBUlRJQUwgKi9cbiAgfSBlbHNlIGlmIChzMi50ID09IDIgLyogUEFSVElBTCAqLyAmJiBpMiA9PSBzMi5jLmxlbmd0aCkge1xuICAgIHMyLmMgKz0gKHMxLnQgPT0gNCAvKiBBUlJBWSAqLyk/XG4gICAgICBjYW1sX3N1YmFycmF5X3RvX2pzYnl0ZXMoczEuYywgaTEsIGxlbik6XG4gICAgICAoaTEgPT0gMCAmJiBzMS5jLmxlbmd0aCA9PSBsZW4pP3MxLmM6czEuYy5zdWJzdHIoaTEsIGxlbik7XG4gICAgczIudCA9IChzMi5jLmxlbmd0aCA9PSBzMi5sKT8wIC8qIEJZVEVTIHwgVU5LT1dOICovIDoyOyAvKiBQQVJUSUFMICovXG4gIH0gZWxzZSB7XG4gICAgaWYgKHMyLnQgIT0gNCAvKiBBUlJBWSAqLykgY2FtbF9jb252ZXJ0X2J5dGVzX3RvX2FycmF5KHMyKTtcbiAgICB2YXIgYzEgPSBzMS5jLCBjMiA9IHMyLmM7XG4gICAgaWYgKHMxLnQgPT0gNCAvKiBBUlJBWSAqLykge1xuICAgICAgaWYgKGkyIDw9IGkxKSB7XG4gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuOyBpKyspIGMyIFtpMiArIGldID0gYzEgW2kxICsgaV07XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBmb3IgKHZhciBpID0gbGVuIC0gMTsgaSA+PSAwOyBpLS0pIGMyIFtpMiArIGldID0gYzEgW2kxICsgaV07XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHZhciBsID0gTWF0aC5taW4gKGxlbiwgYzEubGVuZ3RoIC0gaTEpO1xuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsOyBpKyspIGMyIFtpMiArIGldID0gYzEuY2hhckNvZGVBdChpMSArIGkpO1xuICAgICAgZm9yICg7IGkgPCBsZW47IGkrKykgYzIgW2kyICsgaV0gPSAwO1xuICAgIH1cbiAgfVxuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ibGl0X3N0cmluZ1xuLy9SZXF1aXJlczogY2FtbF9ibGl0X2J5dGVzLCBjYW1sX2J5dGVzX29mX3N0cmluZ1xuZnVuY3Rpb24gY2FtbF9ibGl0X3N0cmluZyhhLGIsYyxkLGUpIHtcbiAgY2FtbF9ibGl0X2J5dGVzKGNhbWxfYnl0ZXNfb2Zfc3RyaW5nKGEpLGIsYyxkLGUpO1xuICByZXR1cm4gMFxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX2J5dGVzX2xlbmd0aCBjb25zdFxuZnVuY3Rpb24gY2FtbF9tbF9ieXRlc19sZW5ndGgocykgeyByZXR1cm4gcy5sIH1cblxuLy9Qcm92aWRlczogY2FtbF9zdHJpbmdfdW5zYWZlX2dldCBjb25zdFxuLy9JZjoganMtc3RyaW5nXG5mdW5jdGlvbiBjYW1sX3N0cmluZ191bnNhZmVfZ2V0IChzLCBpKSB7XG4gIHJldHVybiBzLmNoYXJDb2RlQXQoaSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3RyaW5nX3Vuc2FmZV9zZXRcbi8vUmVxdWlyZXM6IGNhbWxfZmFpbHdpdGhcbi8vSWY6IGpzLXN0cmluZ1xuZnVuY3Rpb24gY2FtbF9zdHJpbmdfdW5zYWZlX3NldCAocywgaSwgYykge1xuICBjYW1sX2ZhaWx3aXRoKFwiY2FtbF9zdHJpbmdfdW5zYWZlX3NldFwiKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tbF9zdHJpbmdfbGVuZ3RoIGNvbnN0XG4vL0lmOiBqcy1zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfbWxfc3RyaW5nX2xlbmd0aChzKSB7XG4gIHJldHVybiBzLmxlbmd0aFxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N0cmluZ19jb21wYXJlIGNvbnN0XG4vL0lmOiBqcy1zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfc3RyaW5nX2NvbXBhcmUoczEsIHMyKSB7XG4gIHJldHVybiAoczEgPCBzMik/LTE6KHMxID4gczIpPzE6MDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zdHJpbmdfZXF1YWwgY29uc3Rcbi8vSWY6IGpzLXN0cmluZ1xuZnVuY3Rpb24gY2FtbF9zdHJpbmdfZXF1YWwoczEsIHMyKSB7XG4gIGlmKHMxID09PSBzMikgcmV0dXJuIDE7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N0cmluZ19sZXNzZXF1YWwgY29uc3Rcbi8vSWY6IGpzLXN0cmluZ1xuZnVuY3Rpb24gY2FtbF9zdHJpbmdfbGVzc2VxdWFsKHMxLCBzMikge1xuICByZXR1cm4gKHMxIDw9IHMyKT8xOjA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3RyaW5nX2xlc3N0aGFuIGNvbnN0XG4vL0lmOiBqcy1zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfc3RyaW5nX2xlc3N0aGFuKHMxLCBzMikge1xuICByZXR1cm4gKHMxIDwgczIpPzE6MDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zdHJpbmdfb2ZfYnl0ZXNcbi8vUmVxdWlyZXM6IGNhbWxfY29udmVydF9zdHJpbmdfdG9fYnl0ZXMsIGNhbWxfc3RyaW5nX29mX2pzYnl0ZXNcbi8vSWY6IGpzLXN0cmluZ1xuZnVuY3Rpb24gY2FtbF9zdHJpbmdfb2ZfYnl0ZXMocykge1xuICAocy50ICYgNikgJiYgY2FtbF9jb252ZXJ0X3N0cmluZ190b19ieXRlcyhzKTtcbiAgcmV0dXJuIGNhbWxfc3RyaW5nX29mX2pzYnl0ZXMocy5jKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ieXRlc19vZl9zdHJpbmcgY29uc3Rcbi8vUmVxdWlyZXM6IGNhbWxfYnl0ZXNfb2ZfanNieXRlcywgY2FtbF9qc2J5dGVzX29mX3N0cmluZ1xuLy9JZjoganMtc3RyaW5nXG5mdW5jdGlvbiBjYW1sX2J5dGVzX29mX3N0cmluZyhzKSB7XG4gIHJldHVybiBjYW1sX2J5dGVzX29mX2pzYnl0ZXMoY2FtbF9qc2J5dGVzX29mX3N0cmluZyhzKSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3RyaW5nX29mX2pzYnl0ZXMgY29uc3Rcbi8vSWY6IGpzLXN0cmluZ1xuZnVuY3Rpb24gY2FtbF9zdHJpbmdfb2ZfanNieXRlcyh4KSB7IHJldHVybiB4IH1cblxuLy9Qcm92aWRlczogY2FtbF9qc2J5dGVzX29mX3N0cmluZyBjb25zdFxuLy9JZjoganMtc3RyaW5nXG5mdW5jdGlvbiBjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nKHgpIHsgcmV0dXJuIHggfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2pzc3RyaW5nX29mX3N0cmluZyBjb25zdFxuLy9SZXF1aXJlczoganNvb19pc19hc2NpaSwgY2FtbF91dGYxNl9vZl91dGY4XG4vL0lmOiBqcy1zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nKHMpIHtcbiAgaWYoanNvb19pc19hc2NpaShzKSlcbiAgICByZXR1cm4gcztcbiAgcmV0dXJuIGNhbWxfdXRmMTZfb2ZfdXRmOChzKTsgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N0cmluZ19vZl9qc3N0cmluZyBjb25zdFxuLy9SZXF1aXJlczoganNvb19pc19hc2NpaSwgY2FtbF91dGY4X29mX3V0ZjE2LCBjYW1sX3N0cmluZ19vZl9qc2J5dGVzXG4vL0lmOiBqcy1zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfc3RyaW5nX29mX2pzc3RyaW5nIChzKSB7XG4gIGlmIChqc29vX2lzX2FzY2lpKHMpKVxuICAgIHJldHVybiBjYW1sX3N0cmluZ19vZl9qc2J5dGVzKHMpXG4gIGVsc2UgcmV0dXJuIGNhbWxfc3RyaW5nX29mX2pzYnl0ZXMoY2FtbF91dGY4X29mX3V0ZjE2KHMpKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ieXRlc19vZl9qc2J5dGVzIGNvbnN0XG4vL1JlcXVpcmVzOiBNbEJ5dGVzXG5mdW5jdGlvbiBjYW1sX2J5dGVzX29mX2pzYnl0ZXMocykgeyByZXR1cm4gbmV3IE1sQnl0ZXMoMCxzLHMubGVuZ3RoKTsgfVxuXG5cbi8vIFRoZSBzZWN0aW9uIGJlbG93IHNob3VsZCBiZSB1c2VkIHdoZW4gdXNlLWpzLXN0cmluZz1mYWxzZVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N0cmluZ191bnNhZmVfZ2V0IGNvbnN0XG4vL1JlcXVpcmVzOiBjYW1sX2J5dGVzX3Vuc2FmZV9nZXRcbi8vSWY6ICFqcy1zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfc3RyaW5nX3Vuc2FmZV9nZXQgKHMsIGkpIHtcbiAgcmV0dXJuIGNhbWxfYnl0ZXNfdW5zYWZlX2dldChzLGkpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N0cmluZ191bnNhZmVfc2V0XG4vL1JlcXVpcmVzOiBjYW1sX2J5dGVzX3Vuc2FmZV9zZXRcbi8vSWY6ICFqcy1zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfc3RyaW5nX3Vuc2FmZV9zZXQgKHMsIGksIGMpIHtcbiAgcmV0dXJuIGNhbWxfYnl0ZXNfdW5zYWZlX3NldChzLGksYyk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfc3RyaW5nX2xlbmd0aCBjb25zdFxuLy9SZXF1aXJlczogY2FtbF9tbF9ieXRlc19sZW5ndGhcbi8vSWY6ICFqcy1zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfbWxfc3RyaW5nX2xlbmd0aChzKSB7XG4gIHJldHVybiBjYW1sX21sX2J5dGVzX2xlbmd0aChzKVxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N0cmluZ19jb21wYXJlXG4vL1JlcXVpcmVzOiBjYW1sX2J5dGVzX2NvbXBhcmVcbi8vSWY6ICFqcy1zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfc3RyaW5nX2NvbXBhcmUoczEsIHMyKSB7XG4gIHJldHVybiBjYW1sX2J5dGVzX2NvbXBhcmUoczEsczIpXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3RyaW5nX2VxdWFsXG4vL1JlcXVpcmVzOiBjYW1sX2J5dGVzX2VxdWFsXG4vL0lmOiAhanMtc3RyaW5nXG5mdW5jdGlvbiBjYW1sX3N0cmluZ19lcXVhbChzMSwgczIpIHtcbiAgcmV0dXJuIGNhbWxfYnl0ZXNfZXF1YWwoczEsczIpXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3RyaW5nX2xlc3NlcXVhbFxuLy9SZXF1aXJlczogY2FtbF9ieXRlc19sZXNzZXF1YWxcbi8vSWY6ICFqcy1zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfc3RyaW5nX2xlc3NlcXVhbChzMSwgczIpIHtcbiAgcmV0dXJuIGNhbWxfYnl0ZXNfbGVzc2VxdWFsKHMxLHMyKVxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N0cmluZ19sZXNzdGhhblxuLy9SZXF1aXJlczogY2FtbF9ieXRlc19sZXNzdGhhblxuLy9JZjogIWpzLXN0cmluZ1xuZnVuY3Rpb24gY2FtbF9zdHJpbmdfbGVzc3RoYW4oczEsIHMyKSB7XG4gIHJldHVybiBjYW1sX2J5dGVzX2xlc3N0aGFuKHMxLHMyKVxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N0cmluZ19vZl9ieXRlc1xuLy9JZjogIWpzLXN0cmluZ1xuZnVuY3Rpb24gY2FtbF9zdHJpbmdfb2ZfYnl0ZXMocykgeyByZXR1cm4gcyB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfYnl0ZXNfb2Zfc3RyaW5nIGNvbnN0XG4vL0lmOiAhanMtc3RyaW5nXG5mdW5jdGlvbiBjYW1sX2J5dGVzX29mX3N0cmluZyhzKSB7IHJldHVybiBzIH1cblxuLy9Qcm92aWRlczogY2FtbF9zdHJpbmdfb2ZfanNieXRlcyBjb25zdFxuLy9SZXF1aXJlczogY2FtbF9ieXRlc19vZl9qc2J5dGVzXG4vL0lmOiAhanMtc3RyaW5nXG5mdW5jdGlvbiBjYW1sX3N0cmluZ19vZl9qc2J5dGVzKHMpIHsgcmV0dXJuIGNhbWxfYnl0ZXNfb2ZfanNieXRlcyhzKTsgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nIGNvbnN0XG4vL1JlcXVpcmVzOiBjYW1sX2NvbnZlcnRfc3RyaW5nX3RvX2J5dGVzXG4vL0lmOiAhanMtc3RyaW5nXG5mdW5jdGlvbiBjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nKHMpIHtcbiAgKHMudCAmIDYpICYmIGNhbWxfY29udmVydF9zdHJpbmdfdG9fYnl0ZXMocyk7XG4gIHJldHVybiBzLmMgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2pzc3RyaW5nX29mX3N0cmluZyBtdXRhYmxlIChjb25zdClcbi8vSWY6ICFqcy1zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nKHMpe1xuICByZXR1cm4gcy50b1V0ZjE2KClcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zdHJpbmdfb2ZfanNzdHJpbmdcbi8vUmVxdWlyZXM6IGNhbWxfYnl0ZXNfb2ZfdXRmMTZfanNzdHJpbmdcbi8vSWY6ICFqcy1zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfc3RyaW5nX29mX2pzc3RyaW5nIChzKSB7XG4gIHJldHVybiBjYW1sX2J5dGVzX29mX3V0ZjE2X2pzc3RyaW5nKHMpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2lzX21sX2J5dGVzXG4vL1JlcXVpcmVzOiBNbEJ5dGVzXG5mdW5jdGlvbiBjYW1sX2lzX21sX2J5dGVzKHMpIHtcbiAgcmV0dXJuIChzIGluc3RhbmNlb2YgTWxCeXRlcyk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfYnl0ZXNfY29udGVudFxuLy9SZXF1aXJlczogTWxCeXRlcywgY2FtbF9jb252ZXJ0X3N0cmluZ190b19ieXRlc1xuZnVuY3Rpb24gY2FtbF9tbF9ieXRlc19jb250ZW50KHMpIHtcbiAgc3dpdGNoIChzLnQgJiA2KSB7XG4gIGRlZmF1bHQ6IC8qIFBBUlRJQUwgKi9cbiAgICBjYW1sX2NvbnZlcnRfc3RyaW5nX3RvX2J5dGVzKHMpO1xuICBjYXNlIDA6IC8qIEJZVEVTICovXG4gICAgcmV0dXJuIHMuYztcbiAgY2FzZSA0OlxuICAgIHJldHVybiBzLmNcbiAgfVxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2lzX21sX3N0cmluZ1xuLy9SZXF1aXJlczoganNvb19pc19hc2NpaVxuLy9JZjoganMtc3RyaW5nXG5mdW5jdGlvbiBjYW1sX2lzX21sX3N0cmluZyhzKSB7XG4gIHJldHVybiAodHlwZW9mIHMgPT09IFwic3RyaW5nXCIgJiYgIS9bXlxceDAwLVxceGZmXS8udGVzdChzKSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfaXNfbWxfc3RyaW5nXG4vL1JlcXVpcmVzOiBjYW1sX2lzX21sX2J5dGVzXG4vL0lmOiAhanMtc3RyaW5nXG5mdW5jdGlvbiBjYW1sX2lzX21sX3N0cmluZyhzKSB7XG4gIHJldHVybiBjYW1sX2lzX21sX2J5dGVzKHMpO1xufVxuXG4vLyBUaGUgZnVuY3Rpb25zIGJlbG93IGFyZSBkZXByZWNhdGVkXG5cbi8vUHJvdmlkZXM6IGNhbWxfanNfdG9fYnl0ZV9zdHJpbmcgY29uc3Rcbi8vUmVxdWlyZXM6IGNhbWxfc3RyaW5nX29mX2pzYnl0ZXNcbmZ1bmN0aW9uIGNhbWxfanNfdG9fYnl0ZV9zdHJpbmcocykgeyByZXR1cm4gY2FtbF9zdHJpbmdfb2ZfanNieXRlcyhzKSB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfbmV3X3N0cmluZ1xuLy9SZXF1aXJlczogY2FtbF9zdHJpbmdfb2ZfanNieXRlc1xuZnVuY3Rpb24gY2FtbF9uZXdfc3RyaW5nIChzKSB7IHJldHVybiBjYW1sX3N0cmluZ19vZl9qc2J5dGVzKHMpIH1cblxuLy9Qcm92aWRlczogY2FtbF9qc19mcm9tX3N0cmluZyBtdXRhYmxlIChjb25zdClcbi8vUmVxdWlyZXM6IGNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nXG5mdW5jdGlvbiBjYW1sX2pzX2Zyb21fc3RyaW5nKHMpIHtcbiAgcmV0dXJuIGNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nKHMpXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfdG9fanNfc3RyaW5nIG11dGFibGUgKGNvbnN0KVxuLy9SZXF1aXJlczogY2FtbF9qc3N0cmluZ19vZl9zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfdG9fanNfc3RyaW5nKHMpIHtcbiAgcmV0dXJuIGNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nKHMpXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfanNfdG9fc3RyaW5nIGNvbnN0XG4vL1JlcXVpcmVzOiBjYW1sX3N0cmluZ19vZl9qc3N0cmluZ1xuZnVuY3Rpb24gY2FtbF9qc190b19zdHJpbmcgKHMpIHtcbiAgcmV0dXJuIGNhbWxfc3RyaW5nX29mX2pzc3RyaW5nKHMpO1xufVxuXG5cbi8vUHJvdmlkZXM6IGNhbWxfYXJyYXlfb2Zfc3RyaW5nXG4vL1JlcXVpcmVzOiBjYW1sX3VpbnQ4X2FycmF5X29mX3N0cmluZ1xuZnVuY3Rpb24gY2FtbF9hcnJheV9vZl9zdHJpbmcoeCkgeyByZXR1cm4gY2FtbF91aW50OF9hcnJheV9vZl9zdHJpbmcoeCkgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2FycmF5X29mX2J5dGVzXG4vL1JlcXVpcmVzOiBjYW1sX3VpbnQ4X2FycmF5X29mX2J5dGVzXG5mdW5jdGlvbiBjYW1sX2FycmF5X29mX2J5dGVzKHgpIHsgcmV0dXJuIGNhbWxfdWludDhfYXJyYXlfb2ZfYnl0ZXMoeCkgfVxuIiwiLy8gSnNfb2Zfb2NhbWwgcnVudGltZSBzdXBwb3J0XG4vLyBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL2pzX29mX29jYW1sL1xuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4vLyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbi8vIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4vLyBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4vLyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuLy8gTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuLy8gR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4vL1xuLy8gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4vLyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuLy8gRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cblxuLy9SYWlzZSBleGNlcHRpb25cblxuLy9Qcm92aWRlczogY2FtbF9yYWlzZV9jb25zdGFudCAoY29uc3QpXG5mdW5jdGlvbiBjYW1sX3JhaXNlX2NvbnN0YW50ICh0YWcpIHsgdGhyb3cgdGFnOyB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfcmFpc2Vfd2l0aF9hcmcgKGNvbnN0LCBtdXRhYmxlKVxuLy9SZXF1aXJlczogY2FtbF9tYXliZV9hdHRhY2hfYmFja3RyYWNlXG5mdW5jdGlvbiBjYW1sX3JhaXNlX3dpdGhfYXJnICh0YWcsIGFyZykgeyB0aHJvdyBjYW1sX21heWJlX2F0dGFjaF9iYWNrdHJhY2UoWzAsIHRhZywgYXJnXSk7IH1cblxuLy9Qcm92aWRlczogY2FtbF9yYWlzZV93aXRoX2FyZ3MgKGNvbnN0LCBtdXRhYmxlKVxuLy9SZXF1aXJlczogY2FtbF9tYXliZV9hdHRhY2hfYmFja3RyYWNlXG5mdW5jdGlvbiBjYW1sX3JhaXNlX3dpdGhfYXJncyAodGFnLCBhcmdzKSB7IHRocm93IGNhbWxfbWF5YmVfYXR0YWNoX2JhY2t0cmFjZShbMCwgdGFnXS5jb25jYXQoYXJncykpOyB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfcmFpc2Vfd2l0aF9zdHJpbmcgKGNvbnN0LCBjb25zdClcbi8vUmVxdWlyZXM6IGNhbWxfcmFpc2Vfd2l0aF9hcmcsIGNhbWxfc3RyaW5nX29mX2pzYnl0ZXNcbmZ1bmN0aW9uIGNhbWxfcmFpc2Vfd2l0aF9zdHJpbmcgKHRhZywgbXNnKSB7XG4gIGNhbWxfcmFpc2Vfd2l0aF9hcmcgKHRhZywgY2FtbF9zdHJpbmdfb2ZfanNieXRlcyhtc2cpKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9mYWlsd2l0aCAoY29uc3QpXG4vL1JlcXVpcmVzOiBjYW1sX3JhaXNlX3dpdGhfc3RyaW5nLCBjYW1sX2dsb2JhbF9kYXRhLCBjYW1sX3N0cmluZ19vZl9qc2J5dGVzXG5mdW5jdGlvbiBjYW1sX2ZhaWx3aXRoIChtc2cpIHtcbiAgaWYoIWNhbWxfZ2xvYmFsX2RhdGEuRmFpbHVyZSlcbiAgICBjYW1sX2dsb2JhbF9kYXRhLkZhaWx1cmU9WzI0OCxjYW1sX3N0cmluZ19vZl9qc2J5dGVzKFwiRmFpbHVyZVwiKSwtM107XG4gIGNhbWxfcmFpc2Vfd2l0aF9zdHJpbmcoY2FtbF9nbG9iYWxfZGF0YS5GYWlsdXJlLCBtc2cpO1xufVxuXG5cbi8vUHJvdmlkZXM6IGNhbWxfaW52YWxpZF9hcmd1bWVudCAoY29uc3QpXG4vL1JlcXVpcmVzOiBjYW1sX3JhaXNlX3dpdGhfc3RyaW5nLCBjYW1sX2dsb2JhbF9kYXRhXG5mdW5jdGlvbiBjYW1sX2ludmFsaWRfYXJndW1lbnQgKG1zZykge1xuICBjYW1sX3JhaXNlX3dpdGhfc3RyaW5nKGNhbWxfZ2xvYmFsX2RhdGEuSW52YWxpZF9hcmd1bWVudCwgbXNnKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9yYWlzZV9lbmRfb2ZfZmlsZVxuLy9SZXF1aXJlczogY2FtbF9yYWlzZV9jb25zdGFudCwgY2FtbF9nbG9iYWxfZGF0YVxuZnVuY3Rpb24gY2FtbF9yYWlzZV9lbmRfb2ZfZmlsZSAoKSB7XG4gIGNhbWxfcmFpc2VfY29uc3RhbnQoY2FtbF9nbG9iYWxfZGF0YS5FbmRfb2ZfZmlsZSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfcmFpc2VfemVyb19kaXZpZGVcbi8vUmVxdWlyZXM6IGNhbWxfcmFpc2VfY29uc3RhbnQsIGNhbWxfZ2xvYmFsX2RhdGFcbmZ1bmN0aW9uIGNhbWxfcmFpc2VfemVyb19kaXZpZGUgKCkge1xuICBjYW1sX3JhaXNlX2NvbnN0YW50KGNhbWxfZ2xvYmFsX2RhdGEuRGl2aXNpb25fYnlfemVybyk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfcmFpc2Vfbm90X2ZvdW5kXG4vL1JlcXVpcmVzOiBjYW1sX3JhaXNlX2NvbnN0YW50LCBjYW1sX2dsb2JhbF9kYXRhXG5mdW5jdGlvbiBjYW1sX3JhaXNlX25vdF9mb3VuZCAoKSB7XG4gIGNhbWxfcmFpc2VfY29uc3RhbnQoY2FtbF9nbG9iYWxfZGF0YS5Ob3RfZm91bmQpOyB9XG5cblxuLy9Qcm92aWRlczogY2FtbF9hcnJheV9ib3VuZF9lcnJvclxuLy9SZXF1aXJlczogY2FtbF9pbnZhbGlkX2FyZ3VtZW50XG5mdW5jdGlvbiBjYW1sX2FycmF5X2JvdW5kX2Vycm9yICgpIHtcbiAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiaW5kZXggb3V0IG9mIGJvdW5kc1wiKTtcbn1cbiIsIi8vIEpzX29mX29jYW1sIHJ1bnRpbWUgc3VwcG9ydFxuLy8gaHR0cDovL3d3dy5vY3NpZ2VuLm9yZy9qc19vZl9vY2FtbC9cbi8vIENvcHlyaWdodCAoQykgMjAxMCBKw6lyw7RtZSBWb3VpbGxvblxuLy8gTGFib3JhdG9pcmUgUFBTIC0gQ05SUyBVbml2ZXJzaXTDqSBQYXJpcyBEaWRlcm90XG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbi8vIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuLy8gdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aCBsaW5raW5nIGV4Y2VwdGlvbjtcbi8vIGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbi8vXG4vLyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbi8vIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4vLyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlXG4vLyBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbi8vXG4vLyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2Vcbi8vIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4vLyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLlxuXG4vL1Byb3ZpZGVzOiBjYW1sX2NhbGxfZ2VuIChjb25zdCwgc2hhbGxvdylcbi8vSWY6ICFlZmZlY3RzXG4vL1dlYWtkZWZcbmZ1bmN0aW9uIGNhbWxfY2FsbF9nZW4oZiwgYXJncykge1xuICB2YXIgbiA9IChmLmwgPj0gMCk/Zi5sOihmLmwgPSBmLmxlbmd0aCk7XG4gIHZhciBhcmdzTGVuID0gYXJncy5sZW5ndGg7XG4gIHZhciBkID0gbiAtIGFyZ3NMZW47XG4gIGlmIChkID09IDApXG4gICAgcmV0dXJuIGYuYXBwbHkobnVsbCwgYXJncyk7XG4gIGVsc2UgaWYgKGQgPCAwKSB7XG4gICAgdmFyIGcgPSBmLmFwcGx5KG51bGwsYXJncy5zbGljZSgwLG4pKTtcbiAgICBpZih0eXBlb2YgZyAhPT0gXCJmdW5jdGlvblwiKSByZXR1cm4gZztcbiAgICByZXR1cm4gY2FtbF9jYWxsX2dlbihnLGFyZ3Muc2xpY2UobikpO1xuICB9XG4gIGVsc2Uge1xuICAgIHN3aXRjaCAoZCkge1xuICAgIGNhc2UgMToge1xuICAgICAgdmFyIGcgPSBmdW5jdGlvbiAoeCl7XG4gICAgICAgIHZhciBuYXJncyA9IG5ldyBBcnJheShhcmdzTGVuICsgMSk7XG4gICAgICAgIGZvcih2YXIgaSA9IDA7IGkgPCBhcmdzTGVuOyBpKysgKSBuYXJnc1tpXSA9IGFyZ3NbaV07XG4gICAgICAgIG5hcmdzW2FyZ3NMZW5dID0geDtcbiAgICAgICAgcmV0dXJuIGYuYXBwbHkobnVsbCwgbmFyZ3MpXG4gICAgICB9O1xuICAgICAgYnJlYWs7XG4gICAgfVxuICAgIGNhc2UgMjoge1xuICAgICAgdmFyIGcgPSBmdW5jdGlvbiAoeCwgeSl7XG4gICAgICAgIHZhciBuYXJncyA9IG5ldyBBcnJheShhcmdzTGVuICsgMik7XG4gICAgICAgIGZvcih2YXIgaSA9IDA7IGkgPCBhcmdzTGVuOyBpKysgKSBuYXJnc1tpXSA9IGFyZ3NbaV07XG4gICAgICAgIG5hcmdzW2FyZ3NMZW5dID0geDtcbiAgICAgICAgbmFyZ3NbYXJnc0xlbiArIDFdID0geTtcbiAgICAgICAgcmV0dXJuIGYuYXBwbHkobnVsbCwgbmFyZ3MpXG4gICAgICB9O1xuICAgICAgYnJlYWs7XG4gICAgfVxuICAgIGRlZmF1bHQ6IHtcbiAgICAgIHZhciBnID0gZnVuY3Rpb24gKCl7XG4gICAgICAgIHZhciBleHRyYV9hcmdzID0gKGFyZ3VtZW50cy5sZW5ndGggPT0gMCk/MTphcmd1bWVudHMubGVuZ3RoO1xuICAgICAgICB2YXIgbmFyZ3MgPSBuZXcgQXJyYXkoYXJncy5sZW5ndGgrZXh0cmFfYXJncyk7XG4gICAgICAgIGZvcih2YXIgaSA9IDA7IGkgPCBhcmdzLmxlbmd0aDsgaSsrICkgbmFyZ3NbaV0gPSBhcmdzW2ldO1xuICAgICAgICBmb3IodmFyIGkgPSAwOyBpIDwgYXJndW1lbnRzLmxlbmd0aDsgaSsrICkgbmFyZ3NbYXJncy5sZW5ndGgraV0gPSBhcmd1bWVudHNbaV07XG4gICAgICAgIHJldHVybiBjYW1sX2NhbGxfZ2VuKGYsIG5hcmdzKVxuICAgICAgfTtcbiAgICB9fVxuICAgIGcubCA9IGQ7XG4gICAgcmV0dXJuIGc7XG4gIH1cbn1cblxuLy9Qcm92aWRlczogY2FtbF9jYWxsX2dlbiAoY29uc3QsIHNoYWxsb3cpXG4vL0lmOiBlZmZlY3RzXG4vL1dlYWtkZWZcbmZ1bmN0aW9uIGNhbWxfY2FsbF9nZW4oZiwgYXJncykge1xuICB2YXIgbiA9IChmLmwgPj0gMCk/Zi5sOihmLmwgPSBmLmxlbmd0aCk7XG4gIHZhciBhcmdzTGVuID0gYXJncy5sZW5ndGg7XG4gIHZhciBkID0gbiAtIGFyZ3NMZW47XG4gIGlmIChkID09IDApIHtcbiAgICByZXR1cm4gZi5hcHBseShudWxsLCBhcmdzKTtcbiAgfSBlbHNlIGlmIChkIDwgMCkge1xuICAgIHZhciByZXN0ID0gYXJncy5zbGljZShuIC0gMSk7XG4gICAgdmFyIGsgPSBhcmdzIFthcmdzTGVuIC0gMV07XG4gICAgYXJncyA9IGFyZ3Muc2xpY2UoMCwgbik7XG4gICAgYXJnc1tuIC0gMV0gPSBmdW5jdGlvbiAoZykge1xuICAgICAgaWYgKHR5cGVvZiBnICE9PSBcImZ1bmN0aW9uXCIpIHJldHVybiBrKGcpO1xuICAgICAgdmFyIGFyZ3MgPSByZXN0LnNsaWNlKCk7XG4gICAgICBhcmdzW2FyZ3MubGVuZ3RoIC0gMV0gPSBrO1xuICAgICAgcmV0dXJuIGNhbWxfY2FsbF9nZW4oZywgYXJncyk7IH07XG4gICAgcmV0dXJuIGYuYXBwbHkobnVsbCwgYXJncyk7XG4gIH0gZWxzZSB7XG4gICAgYXJnc0xlbi0tO1xuICAgIHZhciBrID0gYXJncyBbYXJnc0xlbl07XG4gICAgc3dpdGNoIChkKSB7XG4gICAgY2FzZSAxOiB7XG4gICAgICB2YXIgZyA9IGZ1bmN0aW9uICh4LCB5KXtcbiAgICAgICAgdmFyIG5hcmdzID0gbmV3IEFycmF5KGFyZ3NMZW4gKyAyKTtcbiAgICAgICAgZm9yKHZhciBpID0gMDsgaSA8IGFyZ3NMZW47IGkrKyApIG5hcmdzW2ldID0gYXJnc1tpXTtcbiAgICAgICAgbmFyZ3NbYXJnc0xlbl0gPSB4O1xuICAgICAgICBuYXJnc1thcmdzTGVuICsgMV0gPSB5O1xuICAgICAgICByZXR1cm4gZi5hcHBseShudWxsLCBuYXJncylcbiAgICAgIH07XG4gICAgICBicmVhaztcbiAgICB9XG4gICAgY2FzZSAyOiB7XG4gICAgICB2YXIgZyA9IGZ1bmN0aW9uICh4LCB5LCB6KXtcbiAgICAgICAgdmFyIG5hcmdzID0gbmV3IEFycmF5KGFyZ3NMZW4gKyAzKTtcbiAgICAgICAgZm9yKHZhciBpID0gMDsgaSA8IGFyZ3NMZW47IGkrKyApIG5hcmdzW2ldID0gYXJnc1tpXTtcbiAgICAgICAgbmFyZ3NbYXJnc0xlbl0gPSB4O1xuICAgICAgICBuYXJnc1thcmdzTGVuICsgMV0gPSB5O1xuICAgICAgICBuYXJnc1thcmdzTGVuICsgMl0gPSB6O1xuICAgICAgICByZXR1cm4gZi5hcHBseShudWxsLCBuYXJncylcbiAgICAgIH07XG4gICAgICBicmVhaztcbiAgICB9XG4gICAgZGVmYXVsdDoge1xuICAgICAgdmFyIGcgPSBmdW5jdGlvbiAoKXtcbiAgICAgICAgdmFyIGV4dHJhX2FyZ3MgPSAoYXJndW1lbnRzLmxlbmd0aCA9PSAwKT8xOmFyZ3VtZW50cy5sZW5ndGg7XG4gICAgICAgIHZhciBuYXJncyA9IG5ldyBBcnJheShhcmdzTGVuICsgZXh0cmFfYXJncyk7XG4gICAgICAgIGZvcih2YXIgaSA9IDA7IGkgPCBhcmdzTGVuOyBpKysgKSBuYXJnc1tpXSA9IGFyZ3NbaV07XG4gICAgICAgIGZvcih2YXIgaSA9IDA7IGkgPCBhcmd1bWVudHMubGVuZ3RoOyBpKysgKVxuICAgICAgICAgIG5hcmdzW2FyZ3NMZW4gKyBpXSA9IGFyZ3VtZW50c1tpXTtcbiAgICAgICAgcmV0dXJuIGNhbWxfY2FsbF9nZW4oZiwgbmFyZ3MpXG4gICAgICB9O1xuICAgIH19XG4gICAgZy5sID0gZCArIDE7XG4gICAgcmV0dXJuIGsoZyk7XG4gIH1cbn1cblxuLy9Qcm92aWRlczogY2FtbF9uYW1lZF92YWx1ZXNcbnZhciBjYW1sX25hbWVkX3ZhbHVlcyA9IHt9O1xuXG4vL1Byb3ZpZGVzOiBjYW1sX3JlZ2lzdGVyX25hbWVkX3ZhbHVlIChjb25zdCxtdXRhYmxlKVxuLy9SZXF1aXJlczogY2FtbF9uYW1lZF92YWx1ZXMsIGNhbWxfanNieXRlc19vZl9zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfcmVnaXN0ZXJfbmFtZWRfdmFsdWUobm0sdikge1xuICBjYW1sX25hbWVkX3ZhbHVlc1tjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nKG5tKV0gPSB2O1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9uYW1lZF92YWx1ZVxuLy9SZXF1aXJlczogY2FtbF9uYW1lZF92YWx1ZXNcbmZ1bmN0aW9uIGNhbWxfbmFtZWRfdmFsdWUobm0pIHtcbiAgcmV0dXJuIGNhbWxfbmFtZWRfdmFsdWVzW25tXVxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2dsb2JhbF9kYXRhXG52YXIgY2FtbF9nbG9iYWxfZGF0YSA9IFswXTtcblxuLy9Qcm92aWRlczogY2FtbF9idWlsZF9zeW1ib2xzXG4vL1JlcXVpcmVzOiBjYW1sX2pzc3RyaW5nX29mX3N0cmluZ1xuZnVuY3Rpb24gY2FtbF9idWlsZF9zeW1ib2xzKHRvYykge1xuICB2YXIgc3ltYjtcbiAgd2hpbGUodG9jKSB7XG4gICAgaWYoY2FtbF9qc3N0cmluZ19vZl9zdHJpbmcodG9jWzFdWzFdKSA9PSBcIlNZSlNcIikge1xuICAgICAgc3ltYiA9IHRvY1sxXVsyXTtcbiAgICAgIGJyZWFrO1xuICAgIH1cbiAgICBlbHNlIHRvYyA9IHRvY1syXVxuICB9XG4gIHZhciByID0ge307XG4gIGlmKHN5bWIpIHtcbiAgICBmb3IodmFyIGkgPSAxOyBpIDwgc3ltYi5sZW5ndGg7IGkrKyl7XG4gICAgICByW2NhbWxfanNzdHJpbmdfb2Zfc3RyaW5nKHN5bWJbaV1bMV0pXSA9IHN5bWJbaV1bMl1cbiAgICB9XG4gIH1cbiAgcmV0dXJuIHI7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfcmVnaXN0ZXJfZ2xvYmFsIChjb25zdCwgc2hhbGxvdywgY29uc3QpXG4vL1JlcXVpcmVzOiBjYW1sX2dsb2JhbF9kYXRhLCBjYW1sX2NhbGxiYWNrLCBjYW1sX2J1aWxkX3N5bWJvbHNcbi8vUmVxdWlyZXM6IGNhbWxfZmFpbHdpdGhcbmZ1bmN0aW9uIGNhbWxfcmVnaXN0ZXJfZ2xvYmFsIChuLCB2LCBuYW1lX29wdCkge1xuICBpZiAobmFtZV9vcHQpIHtcbiAgICB2YXIgbmFtZSA9IG5hbWVfb3B0O1xuICAgIGlmKGdsb2JhbFRoaXMudG9wbGV2ZWxSZWxvYykge1xuICAgICAgbiA9IGNhbWxfY2FsbGJhY2soZ2xvYmFsVGhpcy50b3BsZXZlbFJlbG9jLCBbbmFtZV0pO1xuICAgIH1cbiAgICBlbHNlIGlmIChjYW1sX2dsb2JhbF9kYXRhLnRvYykge1xuICAgICAgaWYoIWNhbWxfZ2xvYmFsX2RhdGEuc3ltYm9scykge1xuICAgICAgICBjYW1sX2dsb2JhbF9kYXRhLnN5bWJvbHMgPSBjYW1sX2J1aWxkX3N5bWJvbHMoY2FtbF9nbG9iYWxfZGF0YS50b2MpXG4gICAgICB9XG4gICAgICB2YXIgbmlkID0gY2FtbF9nbG9iYWxfZGF0YS5zeW1ib2xzW25hbWVdXG4gICAgICBpZihuaWQgPj0gMClcbiAgICAgICAgbiA9IG5pZFxuICAgICAgZWxzZSB7XG4gICAgICAgIGNhbWxfZmFpbHdpdGgoXCJjYW1sX3JlZ2lzdGVyX2dsb2JhbDogY2Fubm90IGxvY2F0ZSBcIiArIG5hbWUpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuICBjYW1sX2dsb2JhbF9kYXRhW24gKyAxXSA9IHY7XG4gIGlmKG5hbWVfb3B0KSBjYW1sX2dsb2JhbF9kYXRhW25hbWVfb3B0XSA9IHY7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZ2V0X2dsb2JhbF9kYXRhIG11dGFibGVcbi8vUmVxdWlyZXM6IGNhbWxfZ2xvYmFsX2RhdGFcbmZ1bmN0aW9uIGNhbWxfZ2V0X2dsb2JhbF9kYXRhICgpIHsgcmV0dXJuIGNhbWxfZ2xvYmFsX2RhdGE7IH1cblxuLy9Qcm92aWRlczogY2FtbF9pc19wcmludGFibGUgY29uc3QgKGNvbnN0KVxuZnVuY3Rpb24gY2FtbF9pc19wcmludGFibGUoYykgeyByZXR1cm4gKyhjID4gMzEgJiYgYyA8IDEyNyk7IH1cblxuLy9Qcm92aWRlczogY2FtbF9tYXliZV9wcmludF9zdGF0c1xuZnVuY3Rpb24gY2FtbF9tYXliZV9wcmludF9zdGF0cyh1bml0KSB7IHJldHVybiAwIH1cbiIsIi8vIEpzX29mX29jYW1sIHJ1bnRpbWUgc3VwcG9ydFxuLy8gaHR0cDovL3d3dy5vY3NpZ2VuLm9yZy9qc19vZl9vY2FtbC9cbi8vXG4vLyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuLy8gaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4vLyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoIGxpbmtpbmcgZXhjZXB0aW9uO1xuLy8gZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuLy8gYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2Zcbi8vIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcbi8vIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuLy9cbi8vIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuLy8gYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbi8vIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuXG5cbi8vLy8vLy8vLy8vLy8gU3lzXG5cbi8vUHJvdmlkZXM6IGNhbWxfcmFpc2Vfc3lzX2Vycm9yIChjb25zdClcbi8vUmVxdWlyZXM6IGNhbWxfcmFpc2Vfd2l0aF9zdHJpbmcsIGNhbWxfZ2xvYmFsX2RhdGFcbmZ1bmN0aW9uIGNhbWxfcmFpc2Vfc3lzX2Vycm9yIChtc2cpIHtcbiAgY2FtbF9yYWlzZV93aXRoX3N0cmluZyhjYW1sX2dsb2JhbF9kYXRhLlN5c19lcnJvciwgbXNnKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zeXNfZXhpdFxuLy9SZXF1aXJlczogY2FtbF9pbnZhbGlkX2FyZ3VtZW50XG5mdW5jdGlvbiBjYW1sX3N5c19leGl0IChjb2RlKSB7XG4gIGlmKGdsb2JhbFRoaXMucXVpdCkgZ2xvYmFsVGhpcy5xdWl0KGNvZGUpO1xuICAvL25vZGVqc1xuICBpZihnbG9iYWxUaGlzLnByb2Nlc3MgJiYgZ2xvYmFsVGhpcy5wcm9jZXNzLmV4aXQpXG4gICAgZ2xvYmFsVGhpcy5wcm9jZXNzLmV4aXQoY29kZSk7XG4gIGNhbWxfaW52YWxpZF9hcmd1bWVudChcIkZ1bmN0aW9uICdleGl0JyBub3QgaW1wbGVtZW50ZWRcIik7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfaXNfc3BlY2lhbF9leGNlcHRpb25cbmZ1bmN0aW9uIGNhbWxfaXNfc3BlY2lhbF9leGNlcHRpb24oZXhuKXtcbiAgc3dpdGNoKGV4blsyXSkge1xuICBjYXNlIC04OiAvLyBNYXRjaF9mYWlsdXJlXG4gIGNhc2UgLTExOiAvLyBBc3NlcnRfZmFpbHVyZVxuICBjYXNlIC0xMjogLy8gVW5kZWZpbmVkX3JlY3Vyc2l2ZV9tb2R1bGVcbiAgICByZXR1cm4gMTtcbiAgZGVmYXVsdDpcbiAgICByZXR1cm4gMDtcbiAgfVxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2Zvcm1hdF9leGNlcHRpb25cbi8vUmVxdWlyZXM6IE1sQnl0ZXMsIGNhbWxfaXNfc3BlY2lhbF9leGNlcHRpb25cbmZ1bmN0aW9uIGNhbWxfZm9ybWF0X2V4Y2VwdGlvbihleG4pe1xuICB2YXIgciA9IFwiXCI7XG4gIGlmKGV4blswXSA9PSAwKSB7XG4gICAgciArPSBleG5bMV1bMV07XG4gICAgaWYoZXhuLmxlbmd0aCA9PSAzICYmIGV4blsyXVswXSA9PSAwICYmIGNhbWxfaXNfc3BlY2lhbF9leGNlcHRpb24oZXhuWzFdKSkge1xuXG4gICAgICB2YXIgYnVja2V0ID0gZXhuWzJdO1xuICAgICAgdmFyIHN0YXJ0ID0gMTtcbiAgICB9IGVsc2Uge1xuICAgICAgdmFyIHN0YXJ0ID0gMlxuICAgICAgdmFyIGJ1Y2tldCA9IGV4bjtcbiAgICB9XG4gICAgciArPSBcIihcIjtcbiAgICBmb3IodmFyIGkgPSBzdGFydDsgaSA8IGJ1Y2tldC5sZW5ndGg7IGkgKyspe1xuICAgICAgaWYoaSA+IHN0YXJ0KSByKz1cIiwgXCI7XG4gICAgICB2YXIgdiA9IGJ1Y2tldFtpXVxuICAgICAgaWYodHlwZW9mIHYgPT0gXCJudW1iZXJcIilcbiAgICAgICAgcis9IHYudG9TdHJpbmcoKTtcbiAgICAgIGVsc2UgaWYodiBpbnN0YW5jZW9mIE1sQnl0ZXMpe1xuICAgICAgICByKz0gJ1wiJyArIHYudG9TdHJpbmcoKSArICdcIic7XG4gICAgICB9XG4gICAgICBlbHNlIGlmKHR5cGVvZiB2ID09IFwic3RyaW5nXCIpe1xuICAgICAgICByKz0gJ1wiJyArIHYudG9TdHJpbmcoKSArICdcIic7XG4gICAgICB9XG4gICAgICBlbHNlIHIgKz0gXCJfXCI7XG4gICAgfVxuICAgIHIgKz0gXCIpXCJcbiAgfSBlbHNlIGlmIChleG5bMF0gPT0gMjQ4KXtcbiAgICByICs9IGV4blsxXVxuICB9XG4gIHJldHVybiByXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZmF0YWxfdW5jYXVnaHRfZXhjZXB0aW9uXG4vL1JlcXVpcmVzOiBjYW1sX25hbWVkX3ZhbHVlLCBjYW1sX2Zvcm1hdF9leGNlcHRpb24sIGNhbWxfY2FsbGJhY2tcbmZ1bmN0aW9uIGNhbWxfZmF0YWxfdW5jYXVnaHRfZXhjZXB0aW9uKGVycil7XG4gIGlmKGVyciBpbnN0YW5jZW9mIEFycmF5ICYmIChlcnJbMF0gPT0gMCB8fCBlcnJbMF0gPT0gMjQ4KSkge1xuICAgIHZhciBoYW5kbGVyID0gY2FtbF9uYW1lZF92YWx1ZShcIlByaW50ZXhjLmhhbmRsZV91bmNhdWdodF9leGNlcHRpb25cIik7XG4gICAgaWYoaGFuZGxlcikgY2FtbF9jYWxsYmFjayhoYW5kbGVyLCBbZXJyLGZhbHNlXSk7XG4gICAgZWxzZSB7XG4gICAgICB2YXIgbXNnID0gY2FtbF9mb3JtYXRfZXhjZXB0aW9uKGVycik7XG4gICAgICB2YXIgYXRfZXhpdCA9IGNhbWxfbmFtZWRfdmFsdWUoXCJQZXJ2YXNpdmVzLmRvX2F0X2V4aXRcIik7XG4gICAgICBpZihhdF9leGl0KSBjYW1sX2NhbGxiYWNrKGF0X2V4aXQsIFswXSk7XG4gICAgICBjb25zb2xlLmVycm9yKFwiRmF0YWwgZXJyb3I6IGV4Y2VwdGlvbiBcIiArIG1zZyArIFwiXFxuXCIpO1xuICAgICAgaWYoZXJyLmpzX2Vycm9yKSB0aHJvdyBlcnIuanNfZXJyb3I7XG4gICAgfVxuICB9XG4gIGVsc2Uge1xuICAgIHRocm93IGVyclxuICB9XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc2V0X3N0YXRpY19lbnZcbmZ1bmN0aW9uIGNhbWxfc2V0X3N0YXRpY19lbnYoayx2KXtcbiAgaWYoIWdsb2JhbFRoaXMuanNvb19zdGF0aWNfZW52KVxuICAgIGdsb2JhbFRoaXMuanNvb19zdGF0aWNfZW52ID0ge31cbiAgZ2xvYmFsVGhpcy5qc29vX3N0YXRpY19lbnZba10gPSB2O1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczoganNvb19zeXNfZ2V0ZW52IChjb25zdClcbmZ1bmN0aW9uIGpzb29fc3lzX2dldGVudihuKSB7XG4gIHZhciBwcm9jZXNzID0gZ2xvYmFsVGhpcy5wcm9jZXNzO1xuICAvL25vZGVqcyBlbnZcbiAgaWYocHJvY2Vzc1xuICAgICAmJiBwcm9jZXNzLmVudlxuICAgICAmJiBwcm9jZXNzLmVudltuXSAhPSB1bmRlZmluZWQpXG4gICAgcmV0dXJuIHByb2Nlc3MuZW52W25dO1xuICBpZihnbG9iYWxUaGlzLmpzb29fc3RhdGljX2VudlxuICAgICAmJiBnbG9iYWxUaGlzLmpzb29fc3RhdGljX2VudltuXSlcbiAgICByZXR1cm4gZ2xvYmFsVGhpcy5qc29vX3N0YXRpY19lbnZbbl1cbn1cblxuLy9Qcm92aWRlczogY2FtbF9zeXNfZ2V0ZW52IChjb25zdClcbi8vUmVxdWlyZXM6IGNhbWxfcmFpc2Vfbm90X2ZvdW5kXG4vL1JlcXVpcmVzOiBjYW1sX3N0cmluZ19vZl9qc3N0cmluZ1xuLy9SZXF1aXJlczogY2FtbF9qc3N0cmluZ19vZl9zdHJpbmdcbi8vUmVxdWlyZXM6IGpzb29fc3lzX2dldGVudlxuZnVuY3Rpb24gY2FtbF9zeXNfZ2V0ZW52IChuYW1lKSB7XG4gIHZhciByID0ganNvb19zeXNfZ2V0ZW52KGNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nKG5hbWUpKTtcbiAgaWYociA9PT0gdW5kZWZpbmVkKVxuICAgIGNhbWxfcmFpc2Vfbm90X2ZvdW5kICgpO1xuICByZXR1cm4gY2FtbF9zdHJpbmdfb2ZfanNzdHJpbmcocilcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zeXNfdW5zYWZlX2dldGVudlxuLy9SZXF1aXJlczogY2FtbF9zeXNfZ2V0ZW52XG5mdW5jdGlvbiBjYW1sX3N5c191bnNhZmVfZ2V0ZW52KG5hbWUpe1xuICByZXR1cm4gY2FtbF9zeXNfZ2V0ZW52IChuYW1lKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9hcmd2XG4vL1JlcXVpcmVzOiBjYW1sX3N0cmluZ19vZl9qc3N0cmluZ1xudmFyIGNhbWxfYXJndiA9ICgoZnVuY3Rpb24gKCkge1xuICB2YXIgcHJvY2VzcyA9IGdsb2JhbFRoaXMucHJvY2VzcztcbiAgdmFyIG1haW4gPSBcImEub3V0XCI7XG4gIHZhciBhcmdzID0gW11cblxuICBpZihwcm9jZXNzXG4gICAgICYmIHByb2Nlc3MuYXJndlxuICAgICAmJiBwcm9jZXNzLmFyZ3YubGVuZ3RoID4gMSkge1xuICAgIHZhciBhcmd2ID0gcHJvY2Vzcy5hcmd2XG4gICAgLy9ub2RlanNcbiAgICBtYWluID0gYXJndlsxXTtcbiAgICBhcmdzID0gYXJndi5zbGljZSgyKTtcbiAgfVxuXG4gIHZhciBwID0gY2FtbF9zdHJpbmdfb2ZfanNzdHJpbmcobWFpbik7XG4gIHZhciBhcmdzMiA9IFswLCBwXTtcbiAgZm9yKHZhciBpID0gMDsgaSA8IGFyZ3MubGVuZ3RoOyBpKyspXG4gICAgYXJnczIucHVzaChjYW1sX3N0cmluZ19vZl9qc3N0cmluZyhhcmdzW2ldKSk7XG4gIHJldHVybiBhcmdzMjtcbn0pKCkpXG5cbi8vUHJvdmlkZXM6IGNhbWxfZXhlY3V0YWJsZV9uYW1lXG4vL1JlcXVpcmVzOiBjYW1sX2FyZ3ZcbnZhciBjYW1sX2V4ZWN1dGFibGVfbmFtZSA9IGNhbWxfYXJndlsxXVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N5c19nZXRfYXJndlxuLy9SZXF1aXJlczogY2FtbF9hcmd2XG5mdW5jdGlvbiBjYW1sX3N5c19nZXRfYXJndiAoYSkge1xuICByZXR1cm4gWzAsIGNhbWxfYXJndlsxXSwgY2FtbF9hcmd2XTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zeXNfYXJndlxuLy9SZXF1aXJlczogY2FtbF9hcmd2XG5mdW5jdGlvbiBjYW1sX3N5c19hcmd2IChhKSB7XG4gIHJldHVybiBjYW1sX2FyZ3Y7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3lzX21vZGlmeV9hcmd2XG4vL1JlcXVpcmVzOiBjYW1sX2FyZ3ZcbmZ1bmN0aW9uIGNhbWxfc3lzX21vZGlmeV9hcmd2KGFyZyl7XG4gIGNhbWxfYXJndiA9IGFyZztcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3lzX2V4ZWN1dGFibGVfbmFtZSBjb25zdFxuLy9SZXF1aXJlczogY2FtbF9leGVjdXRhYmxlX25hbWVcbmZ1bmN0aW9uIGNhbWxfc3lzX2V4ZWN1dGFibGVfbmFtZShhKXtcbiAgcmV0dXJuIGNhbWxfZXhlY3V0YWJsZV9uYW1lXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3lzX3N5c3RlbV9jb21tYW5kXG4vL1JlcXVpcmVzOiBjYW1sX2pzc3RyaW5nX29mX3N0cmluZ1xuZnVuY3Rpb24gY2FtbF9zeXNfc3lzdGVtX2NvbW1hbmQoY21kKXtcbiAgdmFyIGNtZCA9IGNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nKGNtZCk7XG4gIGlmICh0eXBlb2YgcmVxdWlyZSAhPSBcInVuZGVmaW5lZFwiKXtcbiAgICB2YXIgY2hpbGRfcHJvY2VzcyA9IHJlcXVpcmUoJ2NoaWxkX3Byb2Nlc3MnKTtcbiAgICBpZihjaGlsZF9wcm9jZXNzICYmIGNoaWxkX3Byb2Nlc3MuZXhlY1N5bmMpXG4gICAgICB0cnkge1xuICAgICAgICBjaGlsZF9wcm9jZXNzLmV4ZWNTeW5jKGNtZCx7c3RkaW86ICdpbmhlcml0J30pO1xuICAgICAgICByZXR1cm4gMFxuICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICByZXR1cm4gMVxuICAgICAgfVxuICB9XG4gIGVsc2UgcmV0dXJuIDEyNztcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zeXNfc3lzdGVtX2NvbW1hbmRcbi8vUmVxdWlyZXM6IGNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nXG4vL0lmOiBicm93c2VyXG5mdW5jdGlvbiBjYW1sX3N5c19zeXN0ZW1fY29tbWFuZChjbWQpe1xuICByZXR1cm4gMTI3O1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N5c190aW1lIG11dGFibGVcbnZhciBjYW1sX2luaXRpYWxfdGltZSA9IChuZXcgRGF0ZSgpKS5nZXRUaW1lKCkgKiAwLjAwMTtcbmZ1bmN0aW9uIGNhbWxfc3lzX3RpbWUgKCkge1xuICB2YXIgbm93ID0gKG5ldyBEYXRlKCkpLmdldFRpbWUoKTtcbiAgcmV0dXJuIG5vdyAqIDAuMDAxIC0gY2FtbF9pbml0aWFsX3RpbWU7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3lzX3RpbWVfaW5jbHVkZV9jaGlsZHJlblxuLy9SZXF1aXJlczogY2FtbF9zeXNfdGltZVxuZnVuY3Rpb24gY2FtbF9zeXNfdGltZV9pbmNsdWRlX2NoaWxkcmVuKGIpIHtcbiAgcmV0dXJuIGNhbWxfc3lzX3RpbWUoKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zeXNfcmFuZG9tX3NlZWQgbXV0YWJsZVxuLy9UaGUgZnVuY3Rpb24gbmVlZHMgdG8gcmV0dXJuIGFuIGFycmF5IHNpbmNlIE9DYW1sIDQuMC4uLlxuZnVuY3Rpb24gY2FtbF9zeXNfcmFuZG9tX3NlZWQgKCkge1xuICBpZihnbG9iYWxUaGlzLmNyeXB0bykge1xuICAgIGlmKHR5cGVvZiBnbG9iYWxUaGlzLmNyeXB0by5nZXRSYW5kb21WYWx1ZXMgPT09ICdmdW5jdGlvbicpe1xuICAgICAgLy8gV2ViYnJvd3NlcnNcbiAgICAgIHZhciBhID0gbmV3IFVpbnQzMkFycmF5KDEpO1xuICAgICAgZ2xvYmFsVGhpcy5jcnlwdG8uZ2V0UmFuZG9tVmFsdWVzKGEpO1xuICAgICAgcmV0dXJuIFswLGFbMF1dO1xuICAgIH0gZWxzZSBpZihnbG9iYWxUaGlzLmNyeXB0by5yYW5kb21CeXRlcyA9PT0gJ2Z1bmN0aW9uJyl7XG4gICAgICAvLyBOb2RlanNcbiAgICAgIHZhciBidWZmID0gZ2xvYmFsVGhpcy5jcnlwdG8ucmFuZG9tQnl0ZXMoNCk7XG4gICAgICB2YXIgYSA9IG5ldyBVaW50MzJBcnJheShidWZmKTtcbiAgICAgIHJldHVybiBbMCxhWzBdXTtcbiAgICB9XG4gIH1cbiAgdmFyIG5vdyA9IChuZXcgRGF0ZSgpKS5nZXRUaW1lKCk7XG4gIHZhciB4ID0gbm93XjB4ZmZmZmZmZmYqTWF0aC5yYW5kb20oKTtcbiAgcmV0dXJuIFswLHhdO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N5c19jb25zdF9iaWdfZW5kaWFuIGNvbnN0XG5mdW5jdGlvbiBjYW1sX3N5c19jb25zdF9iaWdfZW5kaWFuICgpIHsgcmV0dXJuIDA7IH1cblxuLy9Qcm92aWRlczogY2FtbF9zeXNfY29uc3Rfd29yZF9zaXplIGNvbnN0XG5mdW5jdGlvbiBjYW1sX3N5c19jb25zdF93b3JkX3NpemUgKCkgeyByZXR1cm4gMzI7IH1cblxuLy9Qcm92aWRlczogY2FtbF9zeXNfY29uc3RfaW50X3NpemUgY29uc3RcbmZ1bmN0aW9uIGNhbWxfc3lzX2NvbnN0X2ludF9zaXplICgpIHsgcmV0dXJuIDMyOyB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3lzX2NvbnN0X21heF93b3NpemUgY29uc3Rcbi8vIG1heF9pbnQgLyA0IHNvIHRoYXQgdGhlIGZvbGxvd2luZyBkb2VzIG5vdCBvdmVyZmxvd1xuLy9sZXQgbWF4X3N0cmluZ19sZW5ndGggPSB3b3JkX3NpemUgLyA4ICogbWF4X2FycmF5X2xlbmd0aCAtIDE7O1xuZnVuY3Rpb24gY2FtbF9zeXNfY29uc3RfbWF4X3dvc2l6ZSAoKSB7IHJldHVybiAoMHg3RkZGRkZGRi80KSB8IDA7fVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N5c19jb25zdF9vc3R5cGVfdW5peCBjb25zdFxuLy9SZXF1aXJlczogb3NfdHlwZVxuZnVuY3Rpb24gY2FtbF9zeXNfY29uc3Rfb3N0eXBlX3VuaXggKCkgeyByZXR1cm4gb3NfdHlwZSA9PSBcIlVuaXhcIiA/IDEgOiAwOyB9XG4vL1Byb3ZpZGVzOiBjYW1sX3N5c19jb25zdF9vc3R5cGVfd2luMzIgY29uc3Rcbi8vUmVxdWlyZXM6IG9zX3R5cGVcbmZ1bmN0aW9uIGNhbWxfc3lzX2NvbnN0X29zdHlwZV93aW4zMiAoKSB7IHJldHVybiBvc190eXBlID09IFwiV2luMzJcIiA/IDEgOiAwOyB9XG4vL1Byb3ZpZGVzOiBjYW1sX3N5c19jb25zdF9vc3R5cGVfY3lnd2luIGNvbnN0XG4vL1JlcXVpcmVzOiBvc190eXBlXG5mdW5jdGlvbiBjYW1sX3N5c19jb25zdF9vc3R5cGVfY3lnd2luICgpIHsgcmV0dXJuIG9zX3R5cGUgPT0gXCJDeWd3aW5cIiA/IDEgOiAwOyB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3lzX2NvbnN0X2JhY2tlbmRfdHlwZSBjb25zdFxuLy9SZXF1aXJlczogY2FtbF9zdHJpbmdfb2ZfanNieXRlc1xuZnVuY3Rpb24gY2FtbF9zeXNfY29uc3RfYmFja2VuZF90eXBlICgpIHtcbiAgcmV0dXJuIFswLCBjYW1sX3N0cmluZ19vZl9qc2J5dGVzKFwianNfb2Zfb2NhbWxcIildO1xufVxuXG4vL1Byb3ZpZGVzOiBvc190eXBlXG52YXIgb3NfdHlwZSA9IChnbG9iYWxUaGlzLnByb2Nlc3MgJiZcbiAgICAgICAgICAgICAgIGdsb2JhbFRoaXMucHJvY2Vzcy5wbGF0Zm9ybSAmJlxuICAgICAgICAgICAgICAgZ2xvYmFsVGhpcy5wcm9jZXNzLnBsYXRmb3JtID09IFwid2luMzJcIikgPyBcIkN5Z3dpblwiIDogXCJVbml4XCI7XG5cblxuLy9Qcm92aWRlczogY2FtbF9zeXNfZ2V0X2NvbmZpZyBjb25zdFxuLy9SZXF1aXJlczogY2FtbF9zdHJpbmdfb2ZfanNieXRlcywgb3NfdHlwZVxuZnVuY3Rpb24gY2FtbF9zeXNfZ2V0X2NvbmZpZyAoKSB7XG4gIHJldHVybiBbMCwgY2FtbF9zdHJpbmdfb2ZfanNieXRlcyhvc190eXBlKSwgMzIsIDBdO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N5c19pc2F0dHlcbmZ1bmN0aW9uIGNhbWxfc3lzX2lzYXR0eShfY2hhbikge1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ydW50aW1lX3ZhcmlhbnRcbi8vUmVxdWlyZXM6IGNhbWxfc3RyaW5nX29mX2pzYnl0ZXNcbmZ1bmN0aW9uIGNhbWxfcnVudGltZV92YXJpYW50KF91bml0KSB7XG4gIHJldHVybiBjYW1sX3N0cmluZ19vZl9qc2J5dGVzKFwiXCIpO1xufVxuLy9Qcm92aWRlczogY2FtbF9ydW50aW1lX3BhcmFtZXRlcnNcbi8vUmVxdWlyZXM6IGNhbWxfc3RyaW5nX29mX2pzYnl0ZXNcbmZ1bmN0aW9uIGNhbWxfcnVudGltZV9wYXJhbWV0ZXJzKF91bml0KSB7XG4gIHJldHVybiBjYW1sX3N0cmluZ19vZl9qc2J5dGVzKFwiXCIpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2luc3RhbGxfc2lnbmFsX2hhbmRsZXIgY29uc3RcbmZ1bmN0aW9uIGNhbWxfaW5zdGFsbF9zaWduYWxfaGFuZGxlcigpe3JldHVybiAwfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3J1bnRpbWVfd2FybmluZ3NcbnZhciBjYW1sX3J1bnRpbWVfd2FybmluZ3MgPSAwO1xuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX2VuYWJsZV9ydW50aW1lX3dhcm5pbmdzXG4vL1JlcXVpcmVzOiBjYW1sX3J1bnRpbWVfd2FybmluZ3NcbmZ1bmN0aW9uIGNhbWxfbWxfZW5hYmxlX3J1bnRpbWVfd2FybmluZ3MgKGJvb2wpIHtcbiAgY2FtbF9ydW50aW1lX3dhcm5pbmdzID0gYm9vbDtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfcnVudGltZV93YXJuaW5nc19lbmFibGVkXG4vL1JlcXVpcmVzOiBjYW1sX3J1bnRpbWVfd2FybmluZ3NcbmZ1bmN0aW9uIGNhbWxfbWxfcnVudGltZV93YXJuaW5nc19lbmFibGVkIChfdW5pdCkge1xuICByZXR1cm4gY2FtbF9ydW50aW1lX3dhcm5pbmdzO1xufVxuXG5cbi8vUHJvdmlkZXM6IGNhbWxfc3BhY2V0aW1lX2VuYWJsZWQgY29uc3QgKGNvbnN0KVxuZnVuY3Rpb24gY2FtbF9zcGFjZXRpbWVfZW5hYmxlZChfdW5pdCkge1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zeXNfY29uc3RfbmFrZWRfcG9pbnRlcnNfY2hlY2tlZCBjb25zdCAoY29uc3QpXG5mdW5jdGlvbiBjYW1sX3N5c19jb25zdF9uYWtlZF9wb2ludGVyc19jaGVja2VkKF91bml0KSB7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3JlZ2lzdGVyX2NoYW5uZWxfZm9yX3NwYWNldGltZSBjb25zdCAoY29uc3QpXG5mdW5jdGlvbiBjYW1sX3JlZ2lzdGVyX2NoYW5uZWxfZm9yX3NwYWNldGltZShfY2hhbm5lbCkge1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zcGFjZXRpbWVfb25seV93b3Jrc19mb3JfbmF0aXZlX2NvZGVcbi8vUmVxdWlyZXM6IGNhbWxfZmFpbHdpdGhcbmZ1bmN0aW9uIGNhbWxfc3BhY2V0aW1lX29ubHlfd29ya3NfZm9yX25hdGl2ZV9jb2RlKCkge1xuICBjYW1sX2ZhaWx3aXRoKFwiU3BhY2V0aW1lIHByb2ZpbGluZyBvbmx5IHdvcmtzIGZvciBuYXRpdmUgY29kZVwiKTtcbn1cblxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N5c19pc19yZWd1bGFyX2ZpbGVcbi8vUmVxdWlyZXM6IHJlc29sdmVfZnNfZGV2aWNlXG5mdW5jdGlvbiBjYW1sX3N5c19pc19yZWd1bGFyX2ZpbGUobmFtZSkge1xuICB2YXIgcm9vdCA9IHJlc29sdmVfZnNfZGV2aWNlKG5hbWUpO1xuICByZXR1cm4gcm9vdC5kZXZpY2UuaXNGaWxlKHJvb3QucmVzdCk7XG59XG4vL0Fsd2F5c1xuLy9SZXF1aXJlczogY2FtbF9mYXRhbF91bmNhdWdodF9leGNlcHRpb25cbmZ1bmN0aW9uIGNhbWxfc2V0dXBfdW5jYXVnaHRfZXhjZXB0aW9uX2hhbmRsZXIoKSB7XG4gIHZhciBwcm9jZXNzID0gZ2xvYmFsVGhpcy5wcm9jZXNzO1xuICBpZihwcm9jZXNzICYmIHByb2Nlc3Mub24pIHtcbiAgICBwcm9jZXNzLm9uKCd1bmNhdWdodEV4Y2VwdGlvbicsIGZ1bmN0aW9uIChlcnIsIG9yaWdpbikge1xuICAgICAgY2FtbF9mYXRhbF91bmNhdWdodF9leGNlcHRpb24oZXJyKTtcbiAgICAgIHByb2Nlc3MuZXhpdCAoMik7XG4gICAgfSlcbiAgfVxuICBlbHNlIGlmKGdsb2JhbFRoaXMuYWRkRXZlbnRMaXN0ZW5lcil7XG4gICAgZ2xvYmFsVGhpcy5hZGRFdmVudExpc3RlbmVyKCdlcnJvcicsIGZ1bmN0aW9uKGV2ZW50KXtcbiAgICAgIGlmKGV2ZW50LmVycm9yKXtcbiAgICAgICAgY2FtbF9mYXRhbF91bmNhdWdodF9leGNlcHRpb24oZXZlbnQuZXJyb3IpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG59XG5jYW1sX3NldHVwX3VuY2F1Z2h0X2V4Y2VwdGlvbl9oYW5kbGVyKCk7XG4iLCIvLyBKc19vZl9vY2FtbCBydW50aW1lIHN1cHBvcnRcbi8vIGh0dHA6Ly93d3cub2NzaWdlbi5vcmcvanNfb2Zfb2NhbWwvXG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbi8vIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuLy8gdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aCBsaW5raW5nIGV4Y2VwdGlvbjtcbi8vIGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbi8vXG4vLyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbi8vIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4vLyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlXG4vLyBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbi8vXG4vLyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2Vcbi8vIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4vLyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLlxuXG5cbi8vUHJvdmlkZXM6IGNhbWxfcmVjb3JkX2JhY2t0cmFjZV9mbGFnXG4vL1JlcXVpcmVzOiBqc29vX3N5c19nZXRlbnZcbnZhciBjYW1sX3JlY29yZF9iYWNrdHJhY2VfZmxhZyA9IEZMQUcoXCJ3aXRoLWpzLWVycm9yXCIpO1xuXG4oZnVuY3Rpb24gKCkge1xuICB2YXIgciA9IGpzb29fc3lzX2dldGVudihcIk9DQU1MUlVOUEFSQU1cIilcbiAgaWYociAhPT0gdW5kZWZpbmVkKXtcbiAgICB2YXIgbCA9IHIuc3BsaXQoXCIsXCIpO1xuICAgIGZvcih2YXIgaSA9IDA7IGkgPCBsLmxlbmd0aDsgaSsrKXtcbiAgICAgIGlmKGxbaV0gPT0gXCJiXCIpIHsgY2FtbF9yZWNvcmRfYmFja3RyYWNlX2ZsYWcgPSAxOyBicmVhayB9XG4gICAgICBlbHNlIGlmIChsW2ldLnN0YXJ0c1dpdGgoXCJiPVwiKSkge1xuICAgICAgICBjYW1sX3JlY29yZF9iYWNrdHJhY2VfZmxhZyA9ICsobFtpXS5zbGljZSgyKSl9XG4gICAgICBlbHNlIGNvbnRpbnVlO1xuICAgIH1cbiAgfVxufSkgKClcblxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX2RlYnVnX2luZm9fc3RhdHVzIGNvbnN0XG5mdW5jdGlvbiBjYW1sX21sX2RlYnVnX2luZm9fc3RhdHVzICgpIHsgcmV0dXJuIDA7IH1cbi8vUHJvdmlkZXM6IGNhbWxfYmFja3RyYWNlX3N0YXR1c1xuLy9SZXF1aXJlczogY2FtbF9yZWNvcmRfYmFja3RyYWNlX2ZsYWdcbmZ1bmN0aW9uIGNhbWxfYmFja3RyYWNlX3N0YXR1cyAoX3VuaXQpIHsgcmV0dXJuIGNhbWxfcmVjb3JkX2JhY2t0cmFjZV9mbGFnID8gMSA6IDA7IH1cbi8vUHJvdmlkZXM6IGNhbWxfZ2V0X2V4Y2VwdGlvbl9iYWNrdHJhY2UgY29uc3RcbmZ1bmN0aW9uIGNhbWxfZ2V0X2V4Y2VwdGlvbl9iYWNrdHJhY2UgKCkgeyByZXR1cm4gMDsgfVxuLy9Qcm92aWRlczogY2FtbF9nZXRfZXhjZXB0aW9uX3Jhd19iYWNrdHJhY2UgY29uc3RcbmZ1bmN0aW9uIGNhbWxfZ2V0X2V4Y2VwdGlvbl9yYXdfYmFja3RyYWNlICgpIHsgcmV0dXJuIFswXTsgfVxuLy9Qcm92aWRlczogY2FtbF9yZWNvcmRfYmFja3RyYWNlXG4vL1JlcXVpcmVzOiBjYW1sX3JlY29yZF9iYWNrdHJhY2VfZmxhZ1xuZnVuY3Rpb24gY2FtbF9yZWNvcmRfYmFja3RyYWNlIChiKSB7IGNhbWxfcmVjb3JkX2JhY2t0cmFjZV9mbGFnID0gYjsgcmV0dXJuIDA7IH1cbi8vUHJvdmlkZXM6IGNhbWxfY29udmVydF9yYXdfYmFja3RyYWNlIGNvbnN0XG5mdW5jdGlvbiBjYW1sX2NvbnZlcnRfcmF3X2JhY2t0cmFjZSAoKSB7IHJldHVybiBbMF07IH1cbi8vUHJvdmlkZXM6IGNhbWxfcmF3X2JhY2t0cmFjZV9sZW5ndGhcbmZ1bmN0aW9uIGNhbWxfcmF3X2JhY2t0cmFjZV9sZW5ndGgoKSB7IHJldHVybiAwOyB9XG4vL1Byb3ZpZGVzOiBjYW1sX3Jhd19iYWNrdHJhY2VfbmV4dF9zbG90XG5mdW5jdGlvbiBjYW1sX3Jhd19iYWNrdHJhY2VfbmV4dF9zbG90KCkgeyByZXR1cm4gMCB9XG4vL1Byb3ZpZGVzOiBjYW1sX3Jhd19iYWNrdHJhY2Vfc2xvdFxuLy9SZXF1aXJlczogY2FtbF9pbnZhbGlkX2FyZ3VtZW50XG5mdW5jdGlvbiBjYW1sX3Jhd19iYWNrdHJhY2Vfc2xvdCAoKSB7XG4gIGNhbWxfaW52YWxpZF9hcmd1bWVudChcIlByaW50ZXhjLmdldF9yYXdfYmFja3RyYWNlX3Nsb3Q6IGluZGV4IG91dCBvZiBib3VuZHNcIik7XG59XG4vL1Byb3ZpZGVzOiBjYW1sX3Jlc3RvcmVfcmF3X2JhY2t0cmFjZVxuZnVuY3Rpb24gY2FtbF9yZXN0b3JlX3Jhd19iYWNrdHJhY2UoZXhuLCBidCkgeyByZXR1cm4gMCB9XG4vL1Byb3ZpZGVzOiBjYW1sX2dldF9jdXJyZW50X2NhbGxzdGFjayBjb25zdFxuZnVuY3Rpb24gY2FtbF9nZXRfY3VycmVudF9jYWxsc3RhY2sgKCkgeyByZXR1cm4gWzBdOyB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfY29udmVydF9yYXdfYmFja3RyYWNlX3Nsb3Rcbi8vUmVxdWlyZXM6IGNhbWxfZmFpbHdpdGhcbmZ1bmN0aW9uIGNhbWxfY29udmVydF9yYXdfYmFja3RyYWNlX3Nsb3QoKXtcbiAgY2FtbF9mYWlsd2l0aChcImNhbWxfY29udmVydF9yYXdfYmFja3RyYWNlX3Nsb3RcIik7XG59XG4iLCIvLyBKc19vZl9vY2FtbCBsaWJyYXJ5XG4vLyBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL2pzX29mX29jYW1sL1xuLy8gQ29weXJpZ2h0IChDKSAyMDEwIErDqXLDtG1lIFZvdWlsbG9uXG4vLyBMYWJvcmF0b2lyZSBQUFMgLSBDTlJTIFVuaXZlcnNpdMOpIFBhcmlzIERpZGVyb3Rcbi8vXG4vLyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuLy8gaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4vLyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoIGxpbmtpbmcgZXhjZXB0aW9uO1xuLy8gZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuLy8gYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2Zcbi8vIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcbi8vIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuLy9cbi8vIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuLy8gYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbi8vIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuXG5cbi8vLy8vLy8vLy8vLy8gSnNsaWJcblxuLy9Qcm92aWRlczogY2FtbF9qc19wdXJlX2V4cHIgY29uc3Rcbi8vUmVxdWlyZXM6IGNhbWxfY2FsbGJhY2tcbmZ1bmN0aW9uIGNhbWxfanNfcHVyZV9leHByIChmKSB7IHJldHVybiBjYW1sX2NhbGxiYWNrKGYsIFswXSk7IH1cblxuLy9Qcm92aWRlczogY2FtbF9qc19zZXQgKG11dGFibGUsIGNvbnN0LCBtdXRhYmxlKVxuZnVuY3Rpb24gY2FtbF9qc19zZXQobyxmLHYpIHsgb1tmXT12O3JldHVybiAwfVxuLy9Qcm92aWRlczogY2FtbF9qc19nZXQgKG11dGFibGUsIGNvbnN0KVxuZnVuY3Rpb24gY2FtbF9qc19nZXQobyxmKSB7IHJldHVybiBvW2ZdOyB9XG4vL1Byb3ZpZGVzOiBjYW1sX2pzX2RlbGV0ZSAobXV0YWJsZSwgY29uc3QpXG5mdW5jdGlvbiBjYW1sX2pzX2RlbGV0ZShvLGYpIHsgZGVsZXRlIG9bZl07IHJldHVybiAwfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2pzX2luc3RhbmNlb2YgKGNvbnN0LCBjb25zdClcbmZ1bmN0aW9uIGNhbWxfanNfaW5zdGFuY2VvZihvLGMpIHsgcmV0dXJuIChvIGluc3RhbmNlb2YgYykgPyAxIDogMDsgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2pzX3R5cGVvZiAoY29uc3QpXG5mdW5jdGlvbiBjYW1sX2pzX3R5cGVvZihvKSB7IHJldHVybiB0eXBlb2YgbzsgfVxuXG4vL1Byb3ZpZGVzOmNhbWxfdHJhbXBvbGluZVxuZnVuY3Rpb24gY2FtbF90cmFtcG9saW5lKHJlcykge1xuICB2YXIgYyA9IDE7XG4gIHdoaWxlKHJlcyAmJiByZXMuam9vX3RyYW1wKXtcbiAgICByZXMgPSByZXMuam9vX3RyYW1wLmFwcGx5KG51bGwsIHJlcy5qb29fYXJncyk7XG4gICAgYysrO1xuICB9XG4gIHJldHVybiByZXM7XG59XG5cbi8vUHJvdmlkZXM6Y2FtbF90cmFtcG9saW5lX3JldHVyblxuZnVuY3Rpb24gY2FtbF90cmFtcG9saW5lX3JldHVybihmLGFyZ3MpIHtcbiAgcmV0dXJuIHtqb29fdHJhbXA6Zixqb29fYXJnczphcmdzfTtcbn1cblxuLy9Qcm92aWRlczpjYW1sX3N0YWNrX2RlcHRoXG4vL0lmOiBlZmZlY3RzXG52YXIgY2FtbF9zdGFja19kZXB0aCA9IDA7XG5cbi8vUHJvdmlkZXM6Y2FtbF9zdGFja19jaGVja19kZXB0aFxuLy9JZjogZWZmZWN0c1xuLy9SZXF1aXJlczpjYW1sX3N0YWNrX2RlcHRoXG5mdW5jdGlvbiBjYW1sX3N0YWNrX2NoZWNrX2RlcHRoKCkge1xuICAgIHJldHVybiAtLWNhbWxfc3RhY2tfZGVwdGggPiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2NhbGxiYWNrXG4vL0lmOiAhZWZmZWN0c1xuLy9SZXF1aXJlczpjYW1sX2NhbGxfZ2VuXG52YXIgY2FtbF9jYWxsYmFjayA9IGNhbWxfY2FsbF9nZW47XG5cbi8vUHJvdmlkZXM6IGNhbWxfY2FsbGJhY2tcbi8vSWY6IGVmZmVjdHNcbi8vUmVxdWlyZXM6Y2FtbF9zdGFja19kZXB0aCwgY2FtbF9jYWxsX2dlbiwgY2FtbF9leG5fc3RhY2ssIGNhbWxfZmliZXJfc3RhY2ssIGNhbWxfd3JhcF9leGNlcHRpb24sIGNhbWxfcmVzdW1lX3N0YWNrLCBjYW1sX2ZyZXNoX29vX2lkLCBjYW1sX25hbWVkX3ZhbHVlLCBjYW1sX3JhaXNlX3dpdGhfYXJnLCBjYW1sX3N0cmluZ19vZl9qc2J5dGVzXG4vL1JlcXVpcmVzOiBjYW1sX3JhaXNlX2NvbnN0YW50XG5mdW5jdGlvbiBjYW1sX2NhbGxiYWNrKGYsYXJncykge1xuICBmdW5jdGlvbiB1bmNhdWdodF9lZmZlY3RfaGFuZGxlcihlZmYsayxtcykge1xuICAgIC8vIFJlc3VtZXMgdGhlIGNvbnRpbnVhdGlvbiBrIGJ5IHJhaXNpbmcgZXhjZXB0aW9uIFVuaGFuZGxlZC5cbiAgICBjYW1sX3Jlc3VtZV9zdGFjayhrWzFdLG1zKTtcbiAgICB2YXIgZXhuID0gY2FtbF9uYW1lZF92YWx1ZShcIkVmZmVjdC5VbmhhbmRsZWRcIik7XG4gICAgaWYoZXhuKSBjYW1sX3JhaXNlX3dpdGhfYXJnKGV4biwgZWZmKTtcbiAgICBlbHNlIHtcbiAgICAgIGV4biA9IFsyNDgsY2FtbF9zdHJpbmdfb2ZfanNieXRlcyhcIkVmZmVjdC5VbmhhbmRsZWRcIiksIGNhbWxfZnJlc2hfb29faWQoMCldO1xuICAgICAgY2FtbF9yYWlzZV9jb25zdGFudChleG4pO1xuICAgIH1cbiAgfVxuICB2YXIgc2F2ZWRfc3RhY2tfZGVwdGggPSBjYW1sX3N0YWNrX2RlcHRoO1xuICB2YXIgc2F2ZWRfZXhuX3N0YWNrID0gY2FtbF9leG5fc3RhY2s7XG4gIHZhciBzYXZlZF9maWJlcl9zdGFjayA9IGNhbWxfZmliZXJfc3RhY2s7XG4gIHRyeSB7XG4gICAgY2FtbF9leG5fc3RhY2sgPSAwO1xuICAgIGNhbWxfZmliZXJfc3RhY2sgPVxuICAgICAge2g6WzAsIDAsIDAsIHVuY2F1Z2h0X2VmZmVjdF9oYW5kbGVyXSwgcjp7azowLCB4OjAsIGU6MH19O1xuICAgIHZhciByZXMgPSB7am9vX3RyYW1wOiBmLFxuICAgICAgICAgICAgICAgam9vX2FyZ3M6IGFyZ3MuY29uY2F0KGZ1bmN0aW9uICh4KXtyZXR1cm4geDt9KX07XG4gICAgZG8ge1xuICAgICAgY2FtbF9zdGFja19kZXB0aCA9IDQwO1xuICAgICAgdHJ5IHtcbiAgICAgICAgcmVzID0gY2FtbF9jYWxsX2dlbihyZXMuam9vX3RyYW1wLCByZXMuam9vX2FyZ3MpO1xuICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAvKiBIYW5kbGUgZXhjZXB0aW9uIGNvbWluZyBmcm9tIEphdmFTY3JpcHQgb3IgZnJvbSB0aGUgcnVudGltZS4gKi9cbiAgICAgICAgaWYgKCFjYW1sX2V4bl9zdGFjaykgdGhyb3cgZTtcbiAgICAgICAgdmFyIGhhbmRsZXIgPSBjYW1sX2V4bl9zdGFja1sxXTtcbiAgICAgICAgY2FtbF9leG5fc3RhY2sgPSBjYW1sX2V4bl9zdGFja1syXTtcbiAgICAgICAgcmVzID0ge2pvb190cmFtcDogaGFuZGxlcixcbiAgICAgICAgICAgICAgIGpvb19hcmdzOiBbY2FtbF93cmFwX2V4Y2VwdGlvbihlKV19O1xuICAgICAgfVxuICAgIH0gd2hpbGUocmVzICYmIHJlcy5qb29fYXJncylcbiAgfSBmaW5hbGx5IHtcbiAgICBjYW1sX3N0YWNrX2RlcHRoID0gc2F2ZWRfc3RhY2tfZGVwdGg7XG4gICAgY2FtbF9leG5fc3RhY2sgPSBzYXZlZF9leG5fc3RhY2s7XG4gICAgY2FtbF9maWJlcl9zdGFjayA9IHNhdmVkX2ZpYmVyX3N0YWNrO1xuICB9XG4gIHJldHVybiByZXM7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfaXNfanNcbmZ1bmN0aW9uIGNhbWxfaXNfanMoKSB7XG4gIHJldHVybiAxO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2pzb29fZmxhZ3NfdXNlX2pzX3N0cmluZ1xuZnVuY3Rpb24gY2FtbF9qc29vX2ZsYWdzX3VzZV9qc19zdHJpbmcodW5pdCl7XG4gIHJldHVybiBGTEFHKFwidXNlLWpzLXN0cmluZ1wiKVxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2pzb29fZmxhZ3NfZWZmZWN0c1xuZnVuY3Rpb24gY2FtbF9qc29vX2ZsYWdzX2VmZmVjdHModW5pdCl7XG4gIHJldHVybiBGTEFHKFwiZWZmZWN0c1wiKVxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3dyYXBfZXhjZXB0aW9uIGNvbnN0IChtdXRhYmxlKVxuLy9SZXF1aXJlczogY2FtbF9nbG9iYWxfZGF0YSxjYW1sX3N0cmluZ19vZl9qc3N0cmluZyxjYW1sX25hbWVkX3ZhbHVlXG5mdW5jdGlvbiBjYW1sX3dyYXBfZXhjZXB0aW9uKGUpIHtcbiAgaWYgKEZMQUcoXCJleGN3cmFwXCIpKSB7XG4gICAgaWYoZSBpbnN0YW5jZW9mIEFycmF5KSByZXR1cm4gZTtcbiAgICB2YXIgZXhuO1xuICAgIC8vU3RhY2tfb3ZlcmZsb3c6IGNocm9tZSwgc2FmYXJpXG4gICAgaWYoZ2xvYmFsVGhpcy5SYW5nZUVycm9yXG4gICAgICAgJiYgZSBpbnN0YW5jZW9mIGdsb2JhbFRoaXMuUmFuZ2VFcnJvclxuICAgICAgICYmIGUubWVzc2FnZVxuICAgICAgICYmIGUubWVzc2FnZS5tYXRjaCgvbWF4aW11bSBjYWxsIHN0YWNrL2kpKVxuICAgICAgZXhuID0gY2FtbF9nbG9iYWxfZGF0YS5TdGFja19vdmVyZmxvdztcbiAgICAvL1N0YWNrX292ZXJmbG93OiBmaXJlZm94XG4gICAgZWxzZSBpZihnbG9iYWxUaGlzLkludGVybmFsRXJyb3JcbiAgICAgICAmJiBlIGluc3RhbmNlb2YgZ2xvYmFsVGhpcy5JbnRlcm5hbEVycm9yXG4gICAgICAgJiYgZS5tZXNzYWdlXG4gICAgICAgJiYgZS5tZXNzYWdlLm1hdGNoKC90b28gbXVjaCByZWN1cnNpb24vaSkpXG4gICAgICBleG4gPSBjYW1sX2dsb2JhbF9kYXRhLlN0YWNrX292ZXJmbG93O1xuICAgIC8vV3JhcCBFcnJvciBpbiBKcy5FcnJvciBleGNlcHRpb25cbiAgICBlbHNlIGlmKGUgaW5zdGFuY2VvZiBnbG9iYWxUaGlzLkVycm9yICYmIGNhbWxfbmFtZWRfdmFsdWUoXCJqc0Vycm9yXCIpKVxuICAgICAgZXhuID0gWzAsY2FtbF9uYW1lZF92YWx1ZShcImpzRXJyb3JcIiksZV07XG4gICAgZWxzZVxuICAgICAgLy9mYWxsYmFjazogd3JhcHBlZCBpbiBGYWlsdXJlXG4gICAgICBleG4gPSBbMCxjYW1sX2dsb2JhbF9kYXRhLkZhaWx1cmUsY2FtbF9zdHJpbmdfb2ZfanNzdHJpbmcgKFN0cmluZyhlKSldO1xuICAgIC8vIFdlIGFscmVhZHkgaGF2ZSBhbiBlcnJvciBhdCBoYW5kLCBsZXQncyB1c2UgaXQuXG4gICAgaWYgKGUgaW5zdGFuY2VvZiBnbG9iYWxUaGlzLkVycm9yKVxuICAgICAgZXhuLmpzX2Vycm9yID0gZTtcbiAgICByZXR1cm4gZXhuO1xuICB9IGVsc2VcbiAgICByZXR1cm4gZTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tYXliZV9hdHRhY2hfYmFja3RyYWNlXG4vL1JlcXVpcmVzOiBjYW1sX2V4bl93aXRoX2pzX2JhY2t0cmFjZVxuLy9SZXF1aXJlczogY2FtbF9yZWNvcmRfYmFja3RyYWNlX2ZsYWdcbmZ1bmN0aW9uIGNhbWxfbWF5YmVfYXR0YWNoX2JhY2t0cmFjZShleG4sIGZvcmNlKSB7XG4gIGlmKGNhbWxfcmVjb3JkX2JhY2t0cmFjZV9mbGFnKVxuICAgIHJldHVybiBjYW1sX2V4bl93aXRoX2pzX2JhY2t0cmFjZShleG4sIGZvcmNlKTtcbiAgZWxzZSByZXR1cm4gZXhuXG59XG5cbi8vIEV4cGVyaW1lbnRhbFxuLy9Qcm92aWRlczogY2FtbF9leG5fd2l0aF9qc19iYWNrdHJhY2Vcbi8vUmVxdWlyZXM6IGNhbWxfZ2xvYmFsX2RhdGFcbmZ1bmN0aW9uIGNhbWxfZXhuX3dpdGhfanNfYmFja3RyYWNlKGV4biwgZm9yY2UpIHtcbiAgLy9uZXZlciByZXJhaXNlIGZvciBjb25zdGFudCBleG5cbiAgaWYoIWV4bi5qc19lcnJvciB8fCBmb3JjZSB8fCBleG5bMF0gPT0gMjQ4KSBleG4uanNfZXJyb3IgPSBuZXcgZ2xvYmFsVGhpcy5FcnJvcihcIkpzIGV4Y2VwdGlvbiBjb250YWluaW5nIGJhY2t0cmFjZVwiKTtcbiAgcmV0dXJuIGV4bjtcbn1cblxuXG4vL1Byb3ZpZGVzOiBjYW1sX2pzX2Vycm9yX29wdGlvbl9vZl9leGNlcHRpb25cbmZ1bmN0aW9uIGNhbWxfanNfZXJyb3Jfb3B0aW9uX29mX2V4Y2VwdGlvbihleG4pIHtcbiAgaWYoZXhuLmpzX2Vycm9yKSB7IHJldHVybiBbMCwgZXhuLmpzX2Vycm9yXTsgfVxuICByZXR1cm4gMDtcbn1cblxuXG5cbi8vUHJvdmlkZXM6IGNhbWxfanNfZnJvbV9ib29sIGNvbnN0IChjb25zdClcbmZ1bmN0aW9uIGNhbWxfanNfZnJvbV9ib29sKHgpIHsgcmV0dXJuICEheDsgfVxuLy9Qcm92aWRlczogY2FtbF9qc190b19ib29sIGNvbnN0IChjb25zdClcbmZ1bmN0aW9uIGNhbWxfanNfdG9fYm9vbCh4KSB7IHJldHVybiAreDsgfVxuLy9Qcm92aWRlczogY2FtbF9qc19mcm9tX2Zsb2F0IGNvbnN0IChjb25zdClcbmZ1bmN0aW9uIGNhbWxfanNfZnJvbV9mbG9hdCh4KSB7IHJldHVybiB4OyB9XG4vL1Byb3ZpZGVzOiBjYW1sX2pzX3RvX2Zsb2F0IGNvbnN0IChjb25zdClcbmZ1bmN0aW9uIGNhbWxfanNfdG9fZmxvYXQoeCkgeyByZXR1cm4geDsgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2pzX2Zyb21fYXJyYXkgbXV0YWJsZSAoc2hhbGxvdylcbmZ1bmN0aW9uIGNhbWxfanNfZnJvbV9hcnJheShhKSB7XG4gIHJldHVybiBhLnNsaWNlKDEpO1xufVxuLy9Qcm92aWRlczogY2FtbF9qc190b19hcnJheSBtdXRhYmxlIChzaGFsbG93KVxuZnVuY3Rpb24gY2FtbF9qc190b19hcnJheShhKSB7XG4gIHZhciBsZW4gPSBhLmxlbmd0aDtcbiAgdmFyIGIgPSBuZXcgQXJyYXkobGVuKzEpO1xuICBiWzBdID0gMDtcbiAgZm9yKHZhciBpPTA7aTxsZW47aSsrKSBiW2krMV0gPSBhW2ldO1xuICByZXR1cm4gYjtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9saXN0X29mX2pzX2FycmF5IGNvbnN0IChtdXRhYmxlKVxuZnVuY3Rpb24gY2FtbF9saXN0X29mX2pzX2FycmF5KGEpe1xuICB2YXIgbCA9IDA7XG4gIGZvcih2YXIgaT1hLmxlbmd0aCAtIDE7IGk+PTA7IGktLSl7XG4gICAgdmFyIGUgPSBhW2ldO1xuICAgIGwgPSBbMCxlLGxdO1xuICB9XG4gIHJldHVybiBsXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbGlzdF90b19qc19hcnJheSBjb25zdCAobXV0YWJsZSlcbmZ1bmN0aW9uIGNhbWxfbGlzdF90b19qc19hcnJheShsKXtcbiAgdmFyIGEgPSBbXTtcbiAgZm9yKDsgbCAhPT0gMDsgbCA9IGxbMl0pIHtcbiAgICBhLnB1c2gobFsxXSk7XG4gIH1cbiAgcmV0dXJuIGE7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfanNfdmFyIG11dGFibGVcbi8vUmVxdWlyZXM6IGNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nXG5mdW5jdGlvbiBjYW1sX2pzX3Zhcih4KSB7XG4gIHZhciB4ID0gY2FtbF9qc3N0cmluZ19vZl9zdHJpbmcoeCk7XG4gIC8vQ2hlY2tzIHRoYXQgeCBoYXMgdGhlIGZvcm0gaWRlbnRbLmlkZW50XSpcbiAgaWYoIXgubWF0Y2goL15bYS16QS1aXyRdW2EtekEtWl8kMC05XSooXFwuW2EtekEtWl8kXVthLXpBLVpfJDAtOV0qKSokLykpe1xuICAgIGNvbnNvbGUuZXJyb3IoXCJjYW1sX2pzX3ZhcjogXFxcIlwiICsgeCArIFwiXFxcIiBpcyBub3QgYSB2YWxpZCBKYXZhU2NyaXB0IHZhcmlhYmxlLiBjb250aW51aW5nIC4uXCIpO1xuICAgIC8vY29uc29sZS5lcnJvcihcIkpzLlVuc2FmZS5ldmFsX3N0cmluZ1wiKVxuICB9XG4gIHJldHVybiBldmFsKHgpO1xufVxuLy9Qcm92aWRlczogY2FtbF9qc19jYWxsIChjb25zdCwgbXV0YWJsZSwgc2hhbGxvdylcbi8vUmVxdWlyZXM6IGNhbWxfanNfZnJvbV9hcnJheVxuZnVuY3Rpb24gY2FtbF9qc19jYWxsKGYsIG8sIGFyZ3MpIHsgcmV0dXJuIGYuYXBwbHkobywgY2FtbF9qc19mcm9tX2FycmF5KGFyZ3MpKTsgfVxuLy9Qcm92aWRlczogY2FtbF9qc19mdW5fY2FsbCAoY29uc3QsIHNoYWxsb3cpXG4vL1JlcXVpcmVzOiBjYW1sX2pzX2Zyb21fYXJyYXlcbmZ1bmN0aW9uIGNhbWxfanNfZnVuX2NhbGwoZiwgYSkge1xuICBzd2l0Y2ggKGEubGVuZ3RoKSB7XG4gIGNhc2UgMTogcmV0dXJuIGYoKTtcbiAgY2FzZSAyOiByZXR1cm4gZiAoYVsxXSk7XG4gIGNhc2UgMzogcmV0dXJuIGYgKGFbMV0sYVsyXSk7XG4gIGNhc2UgNDogcmV0dXJuIGYgKGFbMV0sYVsyXSxhWzNdKTtcbiAgY2FzZSA1OiByZXR1cm4gZiAoYVsxXSxhWzJdLGFbM10sYVs0XSk7XG4gIGNhc2UgNjogcmV0dXJuIGYgKGFbMV0sYVsyXSxhWzNdLGFbNF0sYVs1XSk7XG4gIGNhc2UgNzogcmV0dXJuIGYgKGFbMV0sYVsyXSxhWzNdLGFbNF0sYVs1XSxhWzZdKTtcbiAgY2FzZSA4OiByZXR1cm4gZiAoYVsxXSxhWzJdLGFbM10sYVs0XSxhWzVdLGFbNl0sYVs3XSk7XG4gIH1cbiAgcmV0dXJuIGYuYXBwbHkobnVsbCwgY2FtbF9qc19mcm9tX2FycmF5KGEpKTtcbn1cbi8vUHJvdmlkZXM6IGNhbWxfanNfbWV0aF9jYWxsIChtdXRhYmxlLCBjb25zdCwgc2hhbGxvdylcbi8vUmVxdWlyZXM6IGNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nXG4vL1JlcXVpcmVzOiBjYW1sX2pzX2Zyb21fYXJyYXlcbmZ1bmN0aW9uIGNhbWxfanNfbWV0aF9jYWxsKG8sIGYsIGFyZ3MpIHtcbiAgcmV0dXJuIG9bY2FtbF9qc3N0cmluZ19vZl9zdHJpbmcoZildLmFwcGx5KG8sIGNhbWxfanNfZnJvbV9hcnJheShhcmdzKSk7XG59XG4vL1Byb3ZpZGVzOiBjYW1sX2pzX25ldyAoY29uc3QsIHNoYWxsb3cpXG4vL1JlcXVpcmVzOiBjYW1sX2pzX2Zyb21fYXJyYXlcbmZ1bmN0aW9uIGNhbWxfanNfbmV3KGMsIGEpIHtcbiAgc3dpdGNoIChhLmxlbmd0aCkge1xuICBjYXNlIDE6IHJldHVybiBuZXcgYztcbiAgY2FzZSAyOiByZXR1cm4gbmV3IGMgKGFbMV0pO1xuICBjYXNlIDM6IHJldHVybiBuZXcgYyAoYVsxXSxhWzJdKTtcbiAgY2FzZSA0OiByZXR1cm4gbmV3IGMgKGFbMV0sYVsyXSxhWzNdKTtcbiAgY2FzZSA1OiByZXR1cm4gbmV3IGMgKGFbMV0sYVsyXSxhWzNdLGFbNF0pO1xuICBjYXNlIDY6IHJldHVybiBuZXcgYyAoYVsxXSxhWzJdLGFbM10sYVs0XSxhWzVdKTtcbiAgY2FzZSA3OiByZXR1cm4gbmV3IGMgKGFbMV0sYVsyXSxhWzNdLGFbNF0sYVs1XSxhWzZdKTtcbiAgY2FzZSA4OiByZXR1cm4gbmV3IGMgKGFbMV0sYVsyXSxhWzNdLGFbNF0sYVs1XSxhWzZdLGFbN10pO1xuICB9XG4gIGZ1bmN0aW9uIEYoKSB7IHJldHVybiBjLmFwcGx5KHRoaXMsIGNhbWxfanNfZnJvbV9hcnJheShhKSk7IH1cbiAgRi5wcm90b3R5cGUgPSBjLnByb3RvdHlwZTtcbiAgcmV0dXJuIG5ldyBGO1xufVxuLy9Qcm92aWRlczogY2FtbF9vanNfbmV3X2FyciAoY29uc3QsIHNoYWxsb3cpXG4vL1JlcXVpcmVzOiBjYW1sX2pzX2Zyb21fYXJyYXlcbmZ1bmN0aW9uIGNhbWxfb2pzX25ld19hcnIoYywgYSkge1xuICBzd2l0Y2ggKGEubGVuZ3RoKSB7XG4gIGNhc2UgMDogcmV0dXJuIG5ldyBjO1xuICBjYXNlIDE6IHJldHVybiBuZXcgYyAoYVswXSk7XG4gIGNhc2UgMjogcmV0dXJuIG5ldyBjIChhWzBdLGFbMV0pO1xuICBjYXNlIDM6IHJldHVybiBuZXcgYyAoYVswXSxhWzFdLGFbMl0pO1xuICBjYXNlIDQ6IHJldHVybiBuZXcgYyAoYVswXSxhWzFdLGFbMl0sYVszXSk7XG4gIGNhc2UgNTogcmV0dXJuIG5ldyBjIChhWzBdLGFbMV0sYVsyXSxhWzNdLGFbNF0pO1xuICBjYXNlIDY6IHJldHVybiBuZXcgYyAoYVswXSxhWzFdLGFbMl0sYVszXSxhWzRdLGFbNV0pO1xuICBjYXNlIDc6IHJldHVybiBuZXcgYyAoYVswXSxhWzFdLGFbMl0sYVszXSxhWzRdLGFbNV0sYVs2XSk7XG4gIH1cbiAgZnVuY3Rpb24gRigpIHsgcmV0dXJuIGMuYXBwbHkodGhpcywgYSk7IH1cbiAgRi5wcm90b3R5cGUgPSBjLnByb3RvdHlwZTtcbiAgcmV0dXJuIG5ldyBGO1xufVxuLy9Qcm92aWRlczogY2FtbF9qc193cmFwX2NhbGxiYWNrIGNvbnN0IChjb25zdClcbi8vUmVxdWlyZXM6IGNhbWxfY2FsbGJhY2tcbmZ1bmN0aW9uIGNhbWxfanNfd3JhcF9jYWxsYmFjayhmKSB7XG4gIHJldHVybiBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIGxlbiA9IGFyZ3VtZW50cy5sZW5ndGg7XG4gICAgaWYobGVuID4gMCl7XG4gICAgICB2YXIgYXJncyA9IG5ldyBBcnJheShsZW4pO1xuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW47IGkrKykgYXJnc1tpXSA9IGFyZ3VtZW50c1tpXTtcbiAgICB9IGVsc2Uge1xuICAgICAgYXJncyA9IFt1bmRlZmluZWRdO1xuICAgIH1cbiAgICB2YXIgcmVzID0gY2FtbF9jYWxsYmFjayhmLCBhcmdzKTtcbiAgICByZXR1cm4gKHJlcyBpbnN0YW5jZW9mIEZ1bmN0aW9uKT9jYW1sX2pzX3dyYXBfY2FsbGJhY2socmVzKTpyZXM7XG4gIH1cbn1cblxuLy9Qcm92aWRlczogY2FtbF9qc193cmFwX2NhbGxiYWNrX2FyZ3VtZW50c1xuLy9SZXF1aXJlczogY2FtbF9jYWxsYmFja1xuZnVuY3Rpb24gY2FtbF9qc193cmFwX2NhbGxiYWNrX2FyZ3VtZW50cyhmKSB7XG4gIHJldHVybiBmdW5jdGlvbigpIHtcbiAgICB2YXIgbGVuID0gYXJndW1lbnRzLmxlbmd0aDtcbiAgICB2YXIgYXJncyA9IG5ldyBBcnJheShsZW4pO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuOyBpKyspIGFyZ3NbaV0gPSBhcmd1bWVudHNbaV07XG4gICAgcmV0dXJuIGNhbWxfY2FsbGJhY2soZiwgW2FyZ3NdKTtcbiAgfVxufVxuLy9Qcm92aWRlczogY2FtbF9qc193cmFwX2NhbGxiYWNrX3N0cmljdCBjb25zdFxuLy9SZXF1aXJlczogY2FtbF9jYWxsYmFja1xuZnVuY3Rpb24gY2FtbF9qc193cmFwX2NhbGxiYWNrX3N0cmljdChhcml0eSwgZikge1xuICByZXR1cm4gZnVuY3Rpb24gKCkge1xuICAgIHZhciBuID0gYXJndW1lbnRzLmxlbmd0aDtcbiAgICB2YXIgYXJncyA9IG5ldyBBcnJheShhcml0eSk7XG4gICAgdmFyIGxlbiA9IE1hdGgubWluKGFyZ3VtZW50cy5sZW5ndGgsIGFyaXR5KVxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuOyBpKyspIGFyZ3NbaV0gPSBhcmd1bWVudHNbaV07XG4gICAgcmV0dXJuIGNhbWxfY2FsbGJhY2soZiwgYXJncyk7XG4gIH07XG59XG4vL1Byb3ZpZGVzOiBjYW1sX2pzX3dyYXBfY2FsbGJhY2tfdW5zYWZlIGNvbnN0IChjb25zdClcbi8vUmVxdWlyZXM6IGNhbWxfY2FsbGJhY2ssIGNhbWxfanNfZnVuY3Rpb25fYXJpdHlcbmZ1bmN0aW9uIGNhbWxfanNfd3JhcF9jYWxsYmFja191bnNhZmUoZikge1xuICByZXR1cm4gZnVuY3Rpb24gKCkge1xuICAgIHZhciBsZW4gPSBjYW1sX2pzX2Z1bmN0aW9uX2FyaXR5KGYpO1xuICAgIHZhciBhcmdzID0gbmV3IEFycmF5KGxlbik7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW47IGkrKykgYXJnc1tpXSA9IGFyZ3VtZW50c1tpXTtcbiAgICByZXR1cm4gY2FtbF9jYWxsYmFjayhmLCBhcmdzKTsgfVxufVxuLy9Qcm92aWRlczogY2FtbF9qc193cmFwX21ldGhfY2FsbGJhY2sgY29uc3QgKGNvbnN0KVxuLy9SZXF1aXJlczogY2FtbF9jYWxsYmFjaywgY2FtbF9qc193cmFwX2NhbGxiYWNrXG5mdW5jdGlvbiBjYW1sX2pzX3dyYXBfbWV0aF9jYWxsYmFjayhmKSB7XG4gIHJldHVybiBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIGxlbiA9IGFyZ3VtZW50cy5sZW5ndGg7XG4gICAgdmFyIGFyZ3MgPSBuZXcgQXJyYXkobGVuICsgMSk7XG4gICAgYXJnc1swXSA9IHRoaXM7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW47IGkrKykgYXJnc1tpKzFdID0gYXJndW1lbnRzW2ldO1xuICAgIHZhciByZXMgPSBjYW1sX2NhbGxiYWNrKGYsYXJncyk7XG4gICAgcmV0dXJuIChyZXMgaW5zdGFuY2VvZiBGdW5jdGlvbik/Y2FtbF9qc193cmFwX2NhbGxiYWNrKHJlcyk6cmVzO1xuICB9XG59XG4vL1Byb3ZpZGVzOiBjYW1sX2pzX3dyYXBfbWV0aF9jYWxsYmFja19hcmd1bWVudHMgY29uc3QgKGNvbnN0KVxuLy9SZXF1aXJlczogY2FtbF9jYWxsYmFja1xuZnVuY3Rpb24gY2FtbF9qc193cmFwX21ldGhfY2FsbGJhY2tfYXJndW1lbnRzKGYpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgbGVuID0gYXJndW1lbnRzLmxlbmd0aDtcbiAgICB2YXIgYXJncyA9IG5ldyBBcnJheShsZW4pO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuOyBpKyspIGFyZ3NbaV0gPSBhcmd1bWVudHNbaV07XG4gICAgcmV0dXJuIGNhbWxfY2FsbGJhY2soZixbdGhpcyxhcmdzXSk7XG4gIH1cbn1cbi8vUHJvdmlkZXM6IGNhbWxfanNfd3JhcF9tZXRoX2NhbGxiYWNrX3N0cmljdCBjb25zdFxuLy9SZXF1aXJlczogY2FtbF9jYWxsYmFja1xuZnVuY3Rpb24gY2FtbF9qc193cmFwX21ldGhfY2FsbGJhY2tfc3RyaWN0KGFyaXR5LCBmKSB7XG4gIHJldHVybiBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIGFyZ3MgPSBuZXcgQXJyYXkoYXJpdHkgKyAxKTtcbiAgICB2YXIgbGVuID0gTWF0aC5taW4oYXJndW1lbnRzLmxlbmd0aCwgYXJpdHkpXG4gICAgYXJnc1swXSA9IHRoaXM7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW47IGkrKykgYXJnc1tpKzFdID0gYXJndW1lbnRzW2ldO1xuICAgIHJldHVybiBjYW1sX2NhbGxiYWNrKGYsIGFyZ3MpO1xuICB9O1xufVxuLy9Qcm92aWRlczogY2FtbF9qc193cmFwX21ldGhfY2FsbGJhY2tfdW5zYWZlIGNvbnN0IChjb25zdClcbi8vUmVxdWlyZXM6IGNhbWxfY2FsbGJhY2ssIGNhbWxfanNfZnVuY3Rpb25fYXJpdHlcbmZ1bmN0aW9uIGNhbWxfanNfd3JhcF9tZXRoX2NhbGxiYWNrX3Vuc2FmZShmKSB7XG4gIHJldHVybiBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIGxlbiA9IGNhbWxfanNfZnVuY3Rpb25fYXJpdHkoZikgLSAxO1xuICAgIHZhciBhcmdzID0gbmV3IEFycmF5KGxlbiArIDEpO1xuICAgIGFyZ3NbMF0gPSB0aGlzO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuOyBpKyspIGFyZ3NbaSsxXSA9IGFyZ3VtZW50c1tpXTtcbiAgICByZXR1cm4gY2FtbF9jYWxsYmFjayhmLCBhcmdzKTsgfVxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2pzX2Z1bmN0aW9uX2FyaXR5XG4vL0lmOiAhZWZmZWN0c1xuZnVuY3Rpb24gY2FtbF9qc19mdW5jdGlvbl9hcml0eShmKSB7XG4gIHJldHVybiAoZi5sID49IDApP2YubDooZi5sID0gZi5sZW5ndGgpXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfanNfZnVuY3Rpb25fYXJpdHlcbi8vSWY6IGVmZmVjdHNcbmZ1bmN0aW9uIGNhbWxfanNfZnVuY3Rpb25fYXJpdHkoZikge1xuICAvLyBGdW5jdGlvbnMgaGF2ZSBhbiBhZGRpdGlvbmFsIGNvbnRpbnVhdGlvbiBwYXJhbWV0ZXIuIFRoaXMgc2hvdWxkXG4gIC8vIG5vdCBiZSB2aXNpYmxlIHdoZW4gY2FsbGluZyB0aGVtIGZyb20gSmF2YVNjcmlwdFxuICByZXR1cm4gKChmLmwgPj0gMCk/Zi5sOihmLmwgPSBmLmxlbmd0aCkpIC0gMVxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2pzX2VxdWFscyBtdXRhYmxlIChjb25zdCwgY29uc3QpXG5mdW5jdGlvbiBjYW1sX2pzX2VxdWFscyAoeCwgeSkgeyByZXR1cm4gKyh4ID09IHkpOyB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfanNfZXZhbF9zdHJpbmcgKGNvbnN0KVxuLy9SZXF1aXJlczogY2FtbF9qc3N0cmluZ19vZl9zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfanNfZXZhbF9zdHJpbmcgKHMpIHtyZXR1cm4gZXZhbChjYW1sX2pzc3RyaW5nX29mX3N0cmluZyhzKSk7fVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2pzX2V4cHIgKGNvbnN0KVxuLy9SZXF1aXJlczogY2FtbF9qc3N0cmluZ19vZl9zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfanNfZXhwcihzKSB7XG4gIGNvbnNvbGUuZXJyb3IoXCJjYW1sX2pzX2V4cHI6IGZhbGxiYWNrIHRvIHJ1bnRpbWUgZXZhbHVhdGlvblxcblwiKTtcbiAgcmV0dXJuIGV2YWwoY2FtbF9qc3N0cmluZ19vZl9zdHJpbmcocykpO31cblxuLy9Qcm92aWRlczogY2FtbF9wdXJlX2pzX2V4cHIgY29uc3QgKGNvbnN0KVxuLy9SZXF1aXJlczogY2FtbF9qc3N0cmluZ19vZl9zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfcHVyZV9qc19leHByIChzKXtcbiAgY29uc29sZS5lcnJvcihcImNhbWxfcHVyZV9qc19leHByOiBmYWxsYmFjayB0byBydW50aW1lIGV2YWx1YXRpb25cXG5cIik7XG4gIHJldHVybiBldmFsKGNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nKHMpKTt9XG5cbi8vUHJvdmlkZXM6IGNhbWxfanNfb2JqZWN0IChvYmplY3RfbGl0ZXJhbClcbi8vUmVxdWlyZXM6IGNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nXG5mdW5jdGlvbiBjYW1sX2pzX29iamVjdCAoYSkge1xuICB2YXIgbyA9IHt9O1xuICBmb3IgKHZhciBpID0gMTsgaSA8IGEubGVuZ3RoOyBpKyspIHtcbiAgICB2YXIgcCA9IGFbaV07XG4gICAgb1tjYW1sX2pzc3RyaW5nX29mX3N0cmluZyhwWzFdKV0gPSBwWzJdO1xuICB9XG4gIHJldHVybiBvO1xufVxuIiwiLy8gSnNfb2Zfb2NhbWwgcnVudGltZSBzdXBwb3J0XG4vLyBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL2pzX29mX29jYW1sL1xuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4vLyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbi8vIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4vLyBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4vLyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuLy8gTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuLy8gR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4vL1xuLy8gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4vLyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuLy8gRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cblxuLy8vLy8vLy8vLy8vLyBGb3JtYXRcblxuLy9Qcm92aWRlczogY2FtbF9wYXJzZV9mb3JtYXRcbi8vUmVxdWlyZXM6IGNhbWxfanNieXRlc19vZl9zdHJpbmcsIGNhbWxfaW52YWxpZF9hcmd1bWVudFxuZnVuY3Rpb24gY2FtbF9wYXJzZV9mb3JtYXQgKGZtdCkge1xuICBmbXQgPSBjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nKGZtdCk7XG4gIHZhciBsZW4gPSBmbXQubGVuZ3RoO1xuICBpZiAobGVuID4gMzEpIGNhbWxfaW52YWxpZF9hcmd1bWVudChcImZvcm1hdF9pbnQ6IGZvcm1hdCB0b28gbG9uZ1wiKTtcbiAgdmFyIGYgPVxuICAgICAgeyBqdXN0aWZ5OicrJywgc2lnbnN0eWxlOictJywgZmlsbGVyOicgJywgYWx0ZXJuYXRlOmZhbHNlLFxuICAgICAgICBiYXNlOjAsIHNpZ25lZGNvbnY6ZmFsc2UsIHdpZHRoOjAsIHVwcGVyY2FzZTpmYWxzZSxcbiAgICAgICAgc2lnbjoxLCBwcmVjOi0xLCBjb252OidmJyB9O1xuICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbjsgaSsrKSB7XG4gICAgdmFyIGMgPSBmbXQuY2hhckF0KGkpO1xuICAgIHN3aXRjaCAoYykge1xuICAgIGNhc2UgJy0nOlxuICAgICAgZi5qdXN0aWZ5ID0gJy0nOyBicmVhaztcbiAgICBjYXNlICcrJzogY2FzZSAnICc6XG4gICAgICBmLnNpZ25zdHlsZSA9IGM7IGJyZWFrO1xuICAgIGNhc2UgJzAnOlxuICAgICAgZi5maWxsZXIgPSAnMCc7IGJyZWFrO1xuICAgIGNhc2UgJyMnOlxuICAgICAgZi5hbHRlcm5hdGUgPSB0cnVlOyBicmVhaztcbiAgICBjYXNlICcxJzogY2FzZSAnMic6IGNhc2UgJzMnOiBjYXNlICc0JzogY2FzZSAnNSc6XG4gICAgY2FzZSAnNic6IGNhc2UgJzcnOiBjYXNlICc4JzogY2FzZSAnOSc6XG4gICAgICBmLndpZHRoID0gMDtcbiAgICAgIHdoaWxlIChjPWZtdC5jaGFyQ29kZUF0KGkpIC0gNDgsIGMgPj0gMCAmJiBjIDw9IDkpIHtcbiAgICAgICAgZi53aWR0aCA9IGYud2lkdGggKiAxMCArIGM7IGkrK1xuICAgICAgfVxuICAgICAgaS0tO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSAnLic6XG4gICAgICBmLnByZWMgPSAwO1xuICAgICAgaSsrO1xuICAgICAgd2hpbGUgKGM9Zm10LmNoYXJDb2RlQXQoaSkgLSA0OCwgYyA+PSAwICYmIGMgPD0gOSkge1xuICAgICAgICBmLnByZWMgPSBmLnByZWMgKiAxMCArIGM7IGkrK1xuICAgICAgfVxuICAgICAgaS0tO1xuICAgIGNhc2UgJ2QnOiBjYXNlICdpJzpcbiAgICAgIGYuc2lnbmVkY29udiA9IHRydWU7IC8qIGZhbGx0aHJvdWdoICovXG4gICAgY2FzZSAndSc6XG4gICAgICBmLmJhc2UgPSAxMDsgYnJlYWs7XG4gICAgY2FzZSAneCc6XG4gICAgICBmLmJhc2UgPSAxNjsgYnJlYWs7XG4gICAgY2FzZSAnWCc6XG4gICAgICBmLmJhc2UgPSAxNjsgZi51cHBlcmNhc2UgPSB0cnVlOyBicmVhaztcbiAgICBjYXNlICdvJzpcbiAgICAgIGYuYmFzZSA9IDg7IGJyZWFrO1xuICAgIGNhc2UgJ2UnOiBjYXNlICdmJzogY2FzZSAnZyc6XG4gICAgICBmLnNpZ25lZGNvbnYgPSB0cnVlOyBmLmNvbnYgPSBjOyBicmVhaztcbiAgICBjYXNlICdFJzogY2FzZSAnRic6IGNhc2UgJ0cnOlxuICAgICAgZi5zaWduZWRjb252ID0gdHJ1ZTsgZi51cHBlcmNhc2UgPSB0cnVlO1xuICAgICAgZi5jb252ID0gYy50b0xvd2VyQ2FzZSAoKTsgYnJlYWs7XG4gICAgfVxuICB9XG4gIHJldHVybiBmO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2ZpbmlzaF9mb3JtYXR0aW5nXG4vL1JlcXVpcmVzOiBjYW1sX3N0cmluZ19vZl9qc2J5dGVzXG5mdW5jdGlvbiBjYW1sX2ZpbmlzaF9mb3JtYXR0aW5nKGYsIHJhd2J1ZmZlcikge1xuICBpZiAoZi51cHBlcmNhc2UpIHJhd2J1ZmZlciA9IHJhd2J1ZmZlci50b1VwcGVyQ2FzZSgpO1xuICB2YXIgbGVuID0gcmF3YnVmZmVyLmxlbmd0aDtcbiAgLyogQWRqdXN0IGxlbiB0byByZWZsZWN0IGFkZGl0aW9uYWwgY2hhcnMgKHNpZ24sIGV0YykgKi9cbiAgaWYgKGYuc2lnbmVkY29udiAmJiAoZi5zaWduIDwgMCB8fCBmLnNpZ25zdHlsZSAhPSAnLScpKSBsZW4rKztcbiAgaWYgKGYuYWx0ZXJuYXRlKSB7XG4gICAgaWYgKGYuYmFzZSA9PSA4KSBsZW4gKz0gMTtcbiAgICBpZiAoZi5iYXNlID09IDE2KSBsZW4gKz0gMjtcbiAgfVxuICAvKiBEbyB0aGUgZm9ybWF0dGluZyAqL1xuICB2YXIgYnVmZmVyID0gXCJcIjtcbiAgaWYgKGYuanVzdGlmeSA9PSAnKycgJiYgZi5maWxsZXIgPT0gJyAnKVxuICAgIGZvciAodmFyIGkgPSBsZW47IGkgPCBmLndpZHRoOyBpKyspIGJ1ZmZlciArPSAnICc7XG4gIGlmIChmLnNpZ25lZGNvbnYpIHtcbiAgICBpZiAoZi5zaWduIDwgMCkgYnVmZmVyICs9ICctJztcbiAgICBlbHNlIGlmIChmLnNpZ25zdHlsZSAhPSAnLScpIGJ1ZmZlciArPSBmLnNpZ25zdHlsZTtcbiAgfVxuICBpZiAoZi5hbHRlcm5hdGUgJiYgZi5iYXNlID09IDgpIGJ1ZmZlciArPSAnMCc7XG4gIGlmIChmLmFsdGVybmF0ZSAmJiBmLmJhc2UgPT0gMTYpIGJ1ZmZlciArPSBmLnVwcGVyY2FzZT9cIjBYXCI6XCIweFwiO1xuICBpZiAoZi5qdXN0aWZ5ID09ICcrJyAmJiBmLmZpbGxlciA9PSAnMCcpXG4gICAgZm9yICh2YXIgaSA9IGxlbjsgaSA8IGYud2lkdGg7IGkrKykgYnVmZmVyICs9ICcwJztcbiAgYnVmZmVyICs9IHJhd2J1ZmZlcjtcbiAgaWYgKGYuanVzdGlmeSA9PSAnLScpXG4gICAgZm9yICh2YXIgaSA9IGxlbjsgaSA8IGYud2lkdGg7IGkrKykgYnVmZmVyICs9ICcgJztcbiAgcmV0dXJuIGNhbWxfc3RyaW5nX29mX2pzYnl0ZXMoYnVmZmVyKTtcbn1cbiIsIi8vIEpzX29mX29jYW1sIHJ1bnRpbWUgc3VwcG9ydFxuLy8gaHR0cDovL3d3dy5vY3NpZ2VuLm9yZy9qc19vZl9vY2FtbC9cbi8vIENvcHlyaWdodCAoQykgMjAxMCBKw6lyw7RtZSBWb3VpbGxvblxuLy8gTGFib3JhdG9pcmUgUFBTIC0gQ05SUyBVbml2ZXJzaXTDqSBQYXJpcyBEaWRlcm90XG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbi8vIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuLy8gdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aCBsaW5raW5nIGV4Y2VwdGlvbjtcbi8vIGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbi8vXG4vLyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbi8vIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4vLyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlXG4vLyBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbi8vXG4vLyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2Vcbi8vIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4vLyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLlxuXG4vL1Byb3ZpZGVzOiBqc29vX2Zsb29yX2xvZzJcbnZhciBsb2cyX29rID0gTWF0aC5sb2cyICYmIE1hdGgubG9nMigxLjEyMzU1ODIwOTI4ODk0NzRFKzMwNykgPT0gMTAyMFxuZnVuY3Rpb24ganNvb19mbG9vcl9sb2cyKHgpIHtcbiAgaWYobG9nMl9vaykgcmV0dXJuIE1hdGguZmxvb3IoTWF0aC5sb2cyKHgpKVxuICB2YXIgaSA9IDA7XG4gIGlmICh4ID09IDApIHJldHVybiAtSW5maW5pdHk7XG4gIGlmKHg+PTEpIHt3aGlsZSAoeD49Mikge3gvPTI7IGkrK30gfVxuICBlbHNlIHt3aGlsZSAoeCA8IDEpIHt4Kj0yOyBpLS19IH07XG4gIHJldHVybiBpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2ludDY0X2JpdHNfb2ZfZmxvYXQgY29uc3Rcbi8vUmVxdWlyZXM6IGpzb29fZmxvb3JfbG9nMiwgY2FtbF9pbnQ2NF9jcmVhdGVfbG9fbWlfaGlcbmZ1bmN0aW9uIGNhbWxfaW50NjRfYml0c19vZl9mbG9hdCAoeCkge1xuICBpZiAoIWlzRmluaXRlKHgpKSB7XG4gICAgaWYgKGlzTmFOKHgpKVxuICAgICAgcmV0dXJuIGNhbWxfaW50NjRfY3JlYXRlX2xvX21pX2hpKDEsIDAsIDB4N2ZmMCk7XG4gICAgaWYgKHggPiAwKVxuICAgICAgcmV0dXJuIGNhbWxfaW50NjRfY3JlYXRlX2xvX21pX2hpKDAsIDAsIDB4N2ZmMClcbiAgICBlbHNlXG4gICAgICByZXR1cm4gY2FtbF9pbnQ2NF9jcmVhdGVfbG9fbWlfaGkoMCwgMCwgMHhmZmYwKVxuICB9XG4gIHZhciBzaWduID0gKHg9PTAgJiYgMS94ID09IC1JbmZpbml0eSk/MHg4MDAwOih4Pj0wKT8wOjB4ODAwMDtcbiAgaWYgKHNpZ24pIHggPSAteDtcbiAgLy8gSW50NjQuYml0c19vZl9mbG9hdCAxLjEyMzU1ODIwOTI4ODk0NzRFKzMwNyA9IDB4N2ZiMDAwMDAwMDAwMDAwMExcbiAgLy8gdXNpbmcgTWF0aC5MT0cyRSpNYXRoLmxvZyh4KSBpbiBwbGFjZSBvZiBNYXRoLmxvZzIgcmVzdWx0IGluIHByZWNpc2lvbiBsb3N0XG4gIHZhciBleHAgPSBqc29vX2Zsb29yX2xvZzIoeCkgKyAxMDIzO1xuICBpZiAoZXhwIDw9IDApIHtcbiAgICBleHAgPSAwO1xuICAgIHggLz0gTWF0aC5wb3coMiwtMTAyNik7XG4gIH0gZWxzZSB7XG4gICAgeCAvPSBNYXRoLnBvdygyLGV4cC0xMDI3KTtcbiAgICBpZiAoeCA8IDE2KSB7XG4gICAgICB4ICo9IDI7IGV4cCAtPTE7IH1cbiAgICBpZiAoZXhwID09IDApIHtcbiAgICAgIHggLz0gMjsgfVxuICB9XG4gIHZhciBrID0gTWF0aC5wb3coMiwyNCk7XG4gIHZhciByMyA9IHh8MDtcbiAgeCA9ICh4IC0gcjMpICogaztcbiAgdmFyIHIyID0geHwwO1xuICB4ID0gKHggLSByMikgKiBrO1xuICB2YXIgcjEgPSB4fDA7XG4gIHIzID0gKHIzICYweGYpIHwgc2lnbiB8IGV4cCA8PCA0O1xuICByZXR1cm4gY2FtbF9pbnQ2NF9jcmVhdGVfbG9fbWlfaGkocjEsIHIyLCByMyk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfaW50MzJfYml0c19vZl9mbG9hdCBjb25zdFxuLy9SZXF1aXJlczoganNvb19mbG9vcl9sb2cyXG5mdW5jdGlvbiBjYW1sX2ludDMyX2JpdHNfb2ZfZmxvYXQgKHgpIHtcbiAgdmFyIGZsb2F0MzJhID0gbmV3IEZsb2F0MzJBcnJheSgxKTtcbiAgZmxvYXQzMmFbMF0gPSB4O1xuICB2YXIgaW50MzJhID0gbmV3IEludDMyQXJyYXkoZmxvYXQzMmEuYnVmZmVyKTtcbiAgcmV0dXJuIGludDMyYVswXSB8IDA7XG59XG5cbi8vRlAgbGl0ZXJhbHMgY2FuIGJlIHdyaXR0ZW4gdXNpbmcgdGhlIGhleGFkZWNpbWFsXG4vL25vdGF0aW9uIDB4PG1hbnRpc3NhIGluIGhleD5wPGV4cG9uZW50PiBmcm9tIElTTyBDOTkuXG4vL2h0dHBzOi8vZ2l0aHViLmNvbS9kYW5rb2dhaS9qcy1oZXhmbG9hdC9ibG9iL21hc3Rlci9oZXhmbG9hdC5qc1xuLy9Qcm92aWRlczogY2FtbF9oZXhzdHJpbmdfb2ZfZmxvYXQgY29uc3Rcbi8vUmVxdWlyZXM6IGNhbWxfc3RyaW5nX29mX2pzc3RyaW5nLCBjYW1sX3N0cl9yZXBlYXRcbmZ1bmN0aW9uIGNhbWxfaGV4c3RyaW5nX29mX2Zsb2F0ICh4LCBwcmVjLCBzdHlsZSkge1xuICBpZiAoIWlzRmluaXRlKHgpKSB7XG4gICAgaWYgKGlzTmFOKHgpKSByZXR1cm4gY2FtbF9zdHJpbmdfb2ZfanNzdHJpbmcoXCJuYW5cIik7XG4gICAgcmV0dXJuIGNhbWxfc3RyaW5nX29mX2pzc3RyaW5nICgoeCA+IDApP1wiaW5maW5pdHlcIjpcIi1pbmZpbml0eVwiKTtcbiAgfVxuICB2YXIgc2lnbiA9ICh4PT0wICYmIDEveCA9PSAtSW5maW5pdHkpPzE6KHg+PTApPzA6MTtcbiAgaWYoc2lnbikgeCA9IC14O1xuICB2YXIgZXhwID0gMDtcbiAgaWYgKHggPT0gMCkgeyB9XG4gIGVsc2UgaWYgKHggPCAxKSB7XG4gICAgd2hpbGUgKHggPCAxICYmIGV4cCA+IC0xMDIyKSAgeyB4ICo9IDI7IGV4cC0tIH1cbiAgfSBlbHNlIHtcbiAgICB3aGlsZSAoeCA+PSAyKSB7IHggLz0gMjsgZXhwKysgfVxuICB9XG4gIHZhciBleHBfc2lnbiA9IGV4cCA8IDAgPyAnJyA6ICcrJztcbiAgdmFyIHNpZ25fc3RyID0gJyc7XG4gIGlmIChzaWduKSBzaWduX3N0ciA9ICctJ1xuICBlbHNlIHtcbiAgICBzd2l0Y2goc3R5bGUpe1xuICAgIGNhc2UgNDMgLyogJysnICovOiBzaWduX3N0ciA9ICcrJzsgYnJlYWs7XG4gICAgY2FzZSAzMiAvKiAnICcgKi86IHNpZ25fc3RyID0gJyAnOyBicmVhaztcbiAgICBkZWZhdWx0OiBicmVhaztcbiAgICB9XG4gIH1cbiAgaWYgKHByZWMgPj0gMCAmJiBwcmVjIDwgMTMpIHtcbiAgICAvKiBJZiBhIHByZWNpc2lvbiBpcyBnaXZlbiwgYW5kIGlzIHNtYWxsLCByb3VuZCBtYW50aXNzYSBhY2NvcmRpbmdseSAqL1xuICAgIHZhciBjc3QgPSBNYXRoLnBvdygyLHByZWMgKiA0KTtcbiAgICB4ID0gTWF0aC5yb3VuZCh4ICogY3N0KSAvIGNzdDtcbiAgfVxuICB2YXIgeF9zdHIgPSB4LnRvU3RyaW5nKDE2KTtcbiAgaWYocHJlYyA+PSAwKXtcbiAgICB2YXIgaWR4ID0geF9zdHIuaW5kZXhPZignLicpO1xuICAgIGlmKGlkeDwwKSB7XG4gICAgICB4X3N0ciArPSAnLicgKyBjYW1sX3N0cl9yZXBlYXQocHJlYywgJzAnKTtcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICB2YXIgc2l6ZSA9IGlkeCsxK3ByZWM7XG4gICAgICBpZih4X3N0ci5sZW5ndGggPCBzaXplKVxuICAgICAgICB4X3N0ciArPSBjYW1sX3N0cl9yZXBlYXQoc2l6ZSAtIHhfc3RyLmxlbmd0aCwgJzAnKTtcbiAgICAgIGVsc2VcbiAgICAgICAgeF9zdHIgPSB4X3N0ci5zdWJzdHIoMCxzaXplKTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIGNhbWxfc3RyaW5nX29mX2pzc3RyaW5nIChzaWduX3N0ciArICcweCcgKyB4X3N0ciArICdwJyArIGV4cF9zaWduICsgZXhwLnRvU3RyaW5nKDEwKSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfaW50NjRfZmxvYXRfb2ZfYml0cyBjb25zdFxuZnVuY3Rpb24gY2FtbF9pbnQ2NF9mbG9hdF9vZl9iaXRzICh4KSB7XG4gIHZhciBsbyA9IHgubG87XG4gIHZhciBtaSA9IHgubWk7XG4gIHZhciBoaSA9IHguaGk7XG4gIHZhciBleHAgPSAoaGkgJiAweDdmZmYpID4+IDQ7XG4gIGlmIChleHAgPT0gMjA0Nykge1xuICAgIGlmICgobG98bWl8KGhpJjB4ZikpID09IDApXG4gICAgICByZXR1cm4gKGhpICYgMHg4MDAwKT8oLUluZmluaXR5KTpJbmZpbml0eTtcbiAgICBlbHNlXG4gICAgICByZXR1cm4gTmFOO1xuICB9XG4gIHZhciBrID0gTWF0aC5wb3coMiwtMjQpO1xuICB2YXIgcmVzID0gKGxvKmsrbWkpKmsrKGhpJjB4Zik7XG4gIGlmIChleHAgPiAwKSB7XG4gICAgcmVzICs9IDE2O1xuICAgIHJlcyAqPSBNYXRoLnBvdygyLGV4cC0xMDI3KTtcbiAgfSBlbHNlXG4gICAgcmVzICo9IE1hdGgucG93KDIsLTEwMjYpO1xuICBpZiAoaGkgJiAweDgwMDApIHJlcyA9IC0gcmVzO1xuICByZXR1cm4gcmVzO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX25leHRhZnRlcl9mbG9hdCBjb25zdFxuLy9SZXF1aXJlczogY2FtbF9pbnQ2NF9mbG9hdF9vZl9iaXRzLCBjYW1sX2ludDY0X2JpdHNfb2ZfZmxvYXQsIGNhbWxfaW50NjRfYWRkLCBjYW1sX2ludDY0X3N1YixjYW1sX2ludDY0X29mX2ludDMyXG5mdW5jdGlvbiBjYW1sX25leHRhZnRlcl9mbG9hdCAoeCx5KSB7XG4gIGlmKGlzTmFOKHgpIHx8IGlzTmFOKHkpKSByZXR1cm4gTmFOO1xuICBpZih4PT15KSByZXR1cm4geTtcbiAgaWYoeD09MCl7XG4gICAgaWYoeSA8IDApXG4gICAgICByZXR1cm4gLU1hdGgucG93KDIsIC0xMDc0KVxuICAgIGVsc2VcbiAgICAgIHJldHVybiBNYXRoLnBvdygyLCAtMTA3NClcbiAgfVxuICB2YXIgYml0cyA9IGNhbWxfaW50NjRfYml0c19vZl9mbG9hdCh4KTtcbiAgdmFyIG9uZSA9IGNhbWxfaW50NjRfb2ZfaW50MzIoMSk7XG4gIGlmICgoeDx5KSA9PSAoeD4wKSlcbiAgICBiaXRzID0gY2FtbF9pbnQ2NF9hZGQoYml0cywgb25lKVxuICBlbHNlXG4gICAgYml0cyA9IGNhbWxfaW50NjRfc3ViKGJpdHMsIG9uZSlcbiAgcmV0dXJuIGNhbWxfaW50NjRfZmxvYXRfb2ZfYml0cyhiaXRzKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF90cnVuY19mbG9hdFxuZnVuY3Rpb24gY2FtbF90cnVuY19mbG9hdCh4KXtcbiAgcmV0dXJuIE1hdGgudHJ1bmMoeCk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfaW50MzJfZmxvYXRfb2ZfYml0cyBjb25zdFxuZnVuY3Rpb24gY2FtbF9pbnQzMl9mbG9hdF9vZl9iaXRzICh4KSB7XG4gIHZhciBpbnQzMmEgPSBuZXcgSW50MzJBcnJheSgxKTtcbiAgaW50MzJhWzBdID0geDtcbiAgdmFyIGZsb2F0MzJhID0gbmV3IEZsb2F0MzJBcnJheShpbnQzMmEuYnVmZmVyKTtcbiAgcmV0dXJuIGZsb2F0MzJhWzBdO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2NsYXNzaWZ5X2Zsb2F0IGNvbnN0XG5mdW5jdGlvbiBjYW1sX2NsYXNzaWZ5X2Zsb2F0ICh4KSB7XG4gIGlmIChpc0Zpbml0ZSAoeCkpIHtcbiAgICBpZiAoTWF0aC5hYnMoeCkgPj0gMi4yMjUwNzM4NTg1MDcyMDE0ZS0zMDgpIHJldHVybiAwO1xuICAgIGlmICh4ICE9IDApIHJldHVybiAxO1xuICAgIHJldHVybiAyO1xuICB9XG4gIHJldHVybiBpc05hTih4KT80OjM7XG59XG4vL1Byb3ZpZGVzOiBjYW1sX21vZGZfZmxvYXQgY29uc3RcbmZ1bmN0aW9uIGNhbWxfbW9kZl9mbG9hdCAoeCkge1xuICBpZiAoaXNGaW5pdGUgKHgpKSB7XG4gICAgdmFyIG5lZyA9ICgxL3gpIDwgMDtcbiAgICB4ID0gTWF0aC5hYnMoeCk7XG4gICAgdmFyIGkgPSBNYXRoLmZsb29yICh4KTtcbiAgICB2YXIgZiA9IHggLSBpO1xuICAgIGlmIChuZWcpIHsgaSA9IC1pOyBmID0gLWY7IH1cbiAgICByZXR1cm4gWzAsIGYsIGldO1xuICB9XG4gIGlmIChpc05hTiAoeCkpIHJldHVybiBbMCwgTmFOLCBOYU5dO1xuICByZXR1cm4gWzAsIDEveCwgeF07XG59XG4vL1Byb3ZpZGVzOiBjYW1sX2xkZXhwX2Zsb2F0IGNvbnN0XG5mdW5jdGlvbiBjYW1sX2xkZXhwX2Zsb2F0ICh4LGV4cCkge1xuICBleHAgfD0gMDtcbiAgaWYgKGV4cCA+IDEwMjMpIHtcbiAgICBleHAgLT0gMTAyMztcbiAgICB4ICo9IE1hdGgucG93KDIsIDEwMjMpO1xuICAgIGlmIChleHAgPiAxMDIzKSB7ICAvLyBpbiBjYXNlIHggaXMgc3Vibm9ybWFsXG4gICAgICBleHAgLT0gMTAyMztcbiAgICAgIHggKj0gTWF0aC5wb3coMiwgMTAyMyk7XG4gICAgfVxuICB9XG4gIGlmIChleHAgPCAtMTAyMykge1xuICAgIGV4cCArPSAxMDIzO1xuICAgIHggKj0gTWF0aC5wb3coMiwgLTEwMjMpO1xuICB9XG4gIHggKj0gTWF0aC5wb3coMiwgZXhwKTtcbiAgcmV0dXJuIHg7XG59XG4vL1Byb3ZpZGVzOiBjYW1sX2ZyZXhwX2Zsb2F0IGNvbnN0XG4vL1JlcXVpcmVzOiBqc29vX2Zsb29yX2xvZzJcbmZ1bmN0aW9uIGNhbWxfZnJleHBfZmxvYXQgKHgpIHtcbiAgaWYgKCh4ID09IDApIHx8ICFpc0Zpbml0ZSh4KSkgcmV0dXJuIFswLCB4LCAwXTtcbiAgdmFyIG5lZyA9IHggPCAwO1xuICBpZiAobmVnKSB4ID0gLSB4O1xuICB2YXIgZXhwID0gTWF0aC5tYXgoLTEwMjMsIGpzb29fZmxvb3JfbG9nMih4KSArIDEpO1xuICB4ICo9IE1hdGgucG93KDIsLWV4cCk7XG4gIHdoaWxlICh4IDwgMC41KSB7XG4gICAgeCAqPSAyO1xuICAgIGV4cC0tO1xuICB9XG4gIHdoaWxlICh4ID49IDEpIHtcbiAgICB4ICo9IDAuNTtcbiAgICBleHArKztcbiAgfVxuICBpZiAobmVnKSB4ID0gLSB4O1xuICByZXR1cm4gWzAsIHgsIGV4cF07XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZmxvYXRfY29tcGFyZSBjb25zdFxuZnVuY3Rpb24gY2FtbF9mbG9hdF9jb21wYXJlICh4LCB5KSB7XG4gIGlmICh4ID09PSB5KSByZXR1cm4gMDtcbiAgaWYgKHggPCB5KSByZXR1cm4gLTE7XG4gIGlmICh4ID4geSkgcmV0dXJuIDE7XG4gIGlmICh4ID09PSB4KSByZXR1cm4gMTtcbiAgaWYgKHkgPT09IHkpIHJldHVybiAtMTtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfY29weXNpZ25fZmxvYXQgY29uc3RcbmZ1bmN0aW9uIGNhbWxfY29weXNpZ25fZmxvYXQgKHgsIHkpIHtcbiAgaWYgKHkgPT0gMCkgeSA9IDEgLyB5O1xuICB4ID0gTWF0aC5hYnMoeCk7XG4gIHJldHVybiAoeSA8IDApPygteCk6eDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zaWduYml0X2Zsb2F0IGNvbnN0XG5mdW5jdGlvbiBjYW1sX3NpZ25iaXRfZmxvYXQoeCkge1xuICBpZiAoeCA9PSAwKSB4ID0gMSAvIHg7XG4gIHJldHVybiAoeCA8IDApPzE6MDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9leHBtMV9mbG9hdCBjb25zdFxuZnVuY3Rpb24gY2FtbF9leHBtMV9mbG9hdCAoeCkgeyByZXR1cm4gTWF0aC5leHBtMSh4KTsgfVxuLy9Qcm92aWRlczogY2FtbF9leHAyX2Zsb2F0IGNvbnN0XG5mdW5jdGlvbiBjYW1sX2V4cDJfZmxvYXQoeCkgeyByZXR1cm4gTWF0aC5wb3coMiwgeCk7IH1cbi8vUHJvdmlkZXM6IGNhbWxfbG9nMXBfZmxvYXQgY29uc3RcbmZ1bmN0aW9uIGNhbWxfbG9nMXBfZmxvYXQoeCkgeyByZXR1cm4gTWF0aC5sb2cxcCh4KTsgfVxuLy9Qcm92aWRlczogY2FtbF9sb2cyX2Zsb2F0IGNvbnN0XG5mdW5jdGlvbiBjYW1sX2xvZzJfZmxvYXQoeCkgeyByZXR1cm4gTWF0aC5sb2cyKHgpOyB9XG4vL1Byb3ZpZGVzOiBjYW1sX2h5cG90X2Zsb2F0IGNvbnN0XG5mdW5jdGlvbiBjYW1sX2h5cG90X2Zsb2F0ICh4LCB5KSB7IHJldHVybiBNYXRoLmh5cG90KHgsIHkpOyB9XG4vL1Byb3ZpZGVzOiBjYW1sX2xvZzEwX2Zsb2F0IGNvbnN0XG5mdW5jdGlvbiBjYW1sX2xvZzEwX2Zsb2F0ICh4KSB7IHJldHVybiBNYXRoLmxvZzEwKHgpOyB9XG4vL1Byb3ZpZGVzOiBjYW1sX2Nvc2hfZmxvYXQgY29uc3RcbmZ1bmN0aW9uIGNhbWxfY29zaF9mbG9hdCAoeCkgeyByZXR1cm4gTWF0aC5jb3NoKHgpOyB9XG4vL1Byb3ZpZGVzOiBjYW1sX2Fjb3NoX2Zsb2F0IGNvbnN0XG5mdW5jdGlvbiBjYW1sX2Fjb3NoX2Zsb2F0ICh4KSB7IHJldHVybiBNYXRoLmFjb3NoKHgpOyB9XG4vL1Byb3ZpZGVzOiBjYW1sX3NpbmhfZmxvYXQgY29uc3RcbmZ1bmN0aW9uIGNhbWxfc2luaF9mbG9hdCAoeCkgeyByZXR1cm4gTWF0aC5zaW5oKHgpOyB9XG4vL1Byb3ZpZGVzOiBjYW1sX2FzaW5oX2Zsb2F0IGNvbnN0XG5mdW5jdGlvbiBjYW1sX2FzaW5oX2Zsb2F0ICh4KSB7IHJldHVybiBNYXRoLmFzaW5oKHgpOyB9XG4vL1Byb3ZpZGVzOiBjYW1sX3RhbmhfZmxvYXQgY29uc3RcbmZ1bmN0aW9uIGNhbWxfdGFuaF9mbG9hdCAoeCkgeyByZXR1cm4gTWF0aC50YW5oKHgpOyB9XG4vL1Byb3ZpZGVzOiBjYW1sX2F0YW5oX2Zsb2F0IGNvbnN0XG5mdW5jdGlvbiBjYW1sX2F0YW5oX2Zsb2F0ICh4KSB7IHJldHVybiBNYXRoLmF0YW5oKHgpOyB9XG4vL1Byb3ZpZGVzOiBjYW1sX3JvdW5kX2Zsb2F0IGNvbnN0XG5mdW5jdGlvbiBjYW1sX3JvdW5kX2Zsb2F0ICh4KSB7IHJldHVybiBNYXRoLnJvdW5kKHgpOyB9XG4vL1Byb3ZpZGVzOiBjYW1sX2NicnRfZmxvYXQgY29uc3RcbmZ1bmN0aW9uIGNhbWxfY2JydF9mbG9hdCAoeCkgeyByZXR1cm4gTWF0aC5jYnJ0KHgpOyB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfZXJmX2Zsb2F0IGNvbnN0XG5mdW5jdGlvbiBjYW1sX2VyZl9mbG9hdCh4KSB7XG4gIHZhciBhMSA9IDAuMjU0ODI5NTkyO1xuICB2YXIgYTIgPSAtMC4yODQ0OTY3MzY7XG4gIHZhciBhMyA9IDEuNDIxNDEzNzQxO1xuICB2YXIgYTQgPSAtMS40NTMxNTIwMjc7XG4gIHZhciBhNSA9IDEuMDYxNDA1NDI5O1xuICB2YXIgcCA9IDAuMzI3NTkxMTtcblxuICB2YXIgc2lnbiA9IDE7XG4gIGlmICh4IDwgMCkge1xuICAgIHNpZ24gPSAtMTtcbiAgfVxuICB4ID0gTWF0aC5hYnMoeCk7XG4gIHZhciB0ID0gMS4wIC8gKDEuMCArIHAgKiB4KTtcbiAgdmFyIHkgPSAxLjAgLSAoKCgoYTUgKiB0ICsgYTQpICogdCArIGEzKSAqIHQgKyBhMikgKiB0ICsgYTEpICogdCAqIE1hdGguZXhwKC14ICogeCk7XG5cbiAgcmV0dXJuIHNpZ24gKiB5O1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2VyZmNfZmxvYXQgY29uc3Rcbi8vUmVxdWlyZXM6IGNhbWxfZXJmX2Zsb2F0XG5mdW5jdGlvbiBjYW1sX2VyZmNfZmxvYXQoeCkge1xuICByZXR1cm4gMSAtIGNhbWxfZXJmX2Zsb2F0KHgpO1xufVxuXG5cbi8vUHJvdmlkZXM6IGNhbWxfZm1hX2Zsb2F0IGNvbnN0XG5mdW5jdGlvbiBjYW1sX2ZtYV9mbG9hdCh4LCB5LCB6KSB7XG4gIHZhciBTUExJVCA9IE1hdGgucG93KDIsIDI3KSArIDE7XG4gIHZhciBNSU5fVkFMVUUgPSBNYXRoLnBvdygyLCAtMTAyMik7XG4gIHZhciBFUFNJTE9OID0gTWF0aC5wb3coMiwgLTUyKTtcbiAgdmFyIEMgPSA0MTY7XG4gIHZhciBBID0gTWF0aC5wb3coMiwgK0MpO1xuICB2YXIgQiA9IE1hdGgucG93KDIsIC1DKTtcblxuICBmdW5jdGlvbiBtdWx0aXBseSAoYSwgYikge1xuICAgIHZhciBhdCA9IFNQTElUICogYTtcbiAgICB2YXIgYWhpID0gYXQgLSAoYXQgLSBhKTtcbiAgICB2YXIgYWxvID0gYSAtIGFoaTtcbiAgICB2YXIgYnQgPSBTUExJVCAqIGI7XG4gICAgdmFyIGJoaSA9IGJ0IC0gKGJ0IC0gYik7XG4gICAgdmFyIGJsbyA9IGIgLSBiaGk7XG4gICAgdmFyIHAgPSBhICogYjtcbiAgICB2YXIgZSA9ICgoYWhpICogYmhpIC0gcCkgKyBhaGkgKiBibG8gKyBhbG8gKiBiaGkpICsgYWxvICogYmxvO1xuICAgIHJldHVybiB7XG4gICAgICBwOiBwLFxuICAgICAgZTogZVxuICAgIH07XG4gIH07XG5cbiAgZnVuY3Rpb24gYWRkIChhLCBiKSB7XG4gICAgdmFyIHMgPSBhICsgYjtcbiAgICB2YXIgdiA9IHMgLSBhO1xuICAgIHZhciBlID0gKGEgLSAocyAtIHYpKSArIChiIC0gdik7XG4gICAgcmV0dXJuIHtcbiAgICAgIHM6IHMsXG4gICAgICBlOiBlXG4gICAgfTtcbiAgfTtcblxuICBmdW5jdGlvbiBhZGp1c3QgKHgsIHkpIHtcbiAgICByZXR1cm4geCAhPT0gMCAmJiB5ICE9PSAwICYmIFNQTElUICogeCAtIChTUExJVCAqIHggLSB4KSA9PT0geCA/IHggKiAoMSArICh4IDwgMCA/IC0xIDogKzEpICogKHkgPCAwID8gLTEgOiArMSkgKiBFUFNJTE9OKSA6IHg7XG4gIH07XG5cbiAgaWYgKHggPT09IDAgfHwgeCAhPT0geCB8fCB4ID09PSArMSAvIDAgfHwgeCA9PT0gLTEgLyAwIHx8XG4gICAgICB5ID09PSAwIHx8IHkgIT09IHkgfHwgeSA9PT0gKzEgLyAwIHx8IHkgPT09IC0xIC8gMCkge1xuICAgIHJldHVybiB4ICogeSArIHo7XG4gIH1cbiAgaWYgKHogPT09IDApIHtcbiAgICByZXR1cm4geCAqIHk7XG4gIH1cbiAgaWYgKHogIT09IHogfHwgeiA9PT0gKzEgLyAwIHx8IHogPT09IC0xIC8gMCkge1xuICAgIHJldHVybiB6O1xuICB9XG5cbiAgdmFyIHNjYWxlID0gMTtcbiAgd2hpbGUgKE1hdGguYWJzKHgpID4gQSkge1xuICAgIHNjYWxlICo9IEE7XG4gICAgeCAqPSBCO1xuICB9XG4gIHdoaWxlIChNYXRoLmFicyh5KSA+IEEpIHtcbiAgICBzY2FsZSAqPSBBO1xuICAgIHkgKj0gQjtcbiAgfVxuICBpZiAoc2NhbGUgPT09IDEgLyAwKSB7XG4gICAgcmV0dXJuIHggKiB5ICogc2NhbGU7XG4gIH1cbiAgd2hpbGUgKE1hdGguYWJzKHgpIDwgQikge1xuICAgIHNjYWxlICo9IEI7XG4gICAgeCAqPSBBO1xuICB9XG4gIHdoaWxlIChNYXRoLmFicyh5KSA8IEIpIHtcbiAgICBzY2FsZSAqPSBCO1xuICAgIHkgKj0gQTtcbiAgfVxuICBpZiAoc2NhbGUgPT09IDApIHtcbiAgICByZXR1cm4gejtcbiAgfVxuXG4gIHZhciB4cyA9IHg7XG4gIHZhciB5cyA9IHk7XG4gIHZhciB6cyA9IHogLyBzY2FsZTtcblxuICBpZiAoTWF0aC5hYnMoenMpID4gTWF0aC5hYnMoeHMgKiB5cykgKiA0IC8gRVBTSUxPTikge1xuICAgIHJldHVybiB6O1xuICB9XG4gIGlmIChNYXRoLmFicyh6cykgPCBNYXRoLmFicyh4cyAqIHlzKSAqIEVQU0lMT04gLyA0ICogRVBTSUxPTiAvIDQpIHtcbiAgICB6cyA9ICh6IDwgMCA/IC0xIDogKzEpICogTUlOX1ZBTFVFO1xuICB9XG5cbiAgdmFyIHh5ID0gbXVsdGlwbHkoeHMsIHlzKTtcbiAgdmFyIHMgPSBhZGQoeHkucCwgenMpO1xuICB2YXIgdSA9IGFkZCh4eS5lLCBzLmUpO1xuICB2YXIgaSA9IGFkZChzLnMsIHUucyk7XG5cbiAgdmFyIGYgPSBpLnMgKyBhZGp1c3QoaS5lLCB1LmUpO1xuICBpZiAoZiA9PT0gMCkge1xuICAgIHJldHVybiBmO1xuICB9XG5cbiAgdmFyIGZzID0gZiAqIHNjYWxlO1xuICBpZiAoTWF0aC5hYnMoZnMpID4gTUlOX1ZBTFVFKSB7XG4gICAgcmV0dXJuIGZzO1xuICB9XG5cbiAgLy8gSXQgaXMgcG9zc2libGUgdGhhdCB0aGVyZSB3YXMgZXh0cmEgcm91bmRpbmcgZm9yIGEgZGVub3JtYWxpemVkIHZhbHVlLlxuICByZXR1cm4gZnMgKyBhZGp1c3QoZiAtIGZzIC8gc2NhbGUsIGkuZSkgKiBzY2FsZTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9mb3JtYXRfZmxvYXQgY29uc3Rcbi8vUmVxdWlyZXM6IGNhbWxfcGFyc2VfZm9ybWF0LCBjYW1sX2ZpbmlzaF9mb3JtYXR0aW5nXG5mdW5jdGlvbiBjYW1sX2Zvcm1hdF9mbG9hdCAoZm10LCB4KSB7XG4gIGZ1bmN0aW9uIHRvRml4ZWQoeCxkcCkge1xuICAgIGlmIChNYXRoLmFicyh4KSA8IDEuMCkge1xuICAgICAgcmV0dXJuIHgudG9GaXhlZChkcCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHZhciBlID0gcGFyc2VJbnQoeC50b1N0cmluZygpLnNwbGl0KCcrJylbMV0pO1xuICAgICAgaWYgKGUgPiAyMCkge1xuICAgICAgICBlIC09IDIwO1xuICAgICAgICB4IC89IE1hdGgucG93KDEwLGUpO1xuICAgICAgICB4ICs9IChuZXcgQXJyYXkoZSsxKSkuam9pbignMCcpO1xuICAgICAgICBpZihkcCA+IDApIHtcbiAgICAgICAgICB4ID0geCArICcuJyArIChuZXcgQXJyYXkoZHArMSkpLmpvaW4oJzAnKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4geDtcbiAgICAgIH1cbiAgICAgIGVsc2UgcmV0dXJuIHgudG9GaXhlZChkcClcbiAgICB9XG4gIH1cbiAgdmFyIHMsIGYgPSBjYW1sX3BhcnNlX2Zvcm1hdChmbXQpO1xuICB2YXIgcHJlYyA9IChmLnByZWMgPCAwKT82OmYucHJlYztcbiAgaWYgKHggPCAwIHx8ICh4ID09IDAgJiYgMS94ID09IC1JbmZpbml0eSkpIHsgZi5zaWduID0gLTE7IHggPSAteDsgfVxuICBpZiAoaXNOYU4oeCkpIHsgcyA9IFwibmFuXCI7IGYuZmlsbGVyID0gJyAnOyB9XG4gIGVsc2UgaWYgKCFpc0Zpbml0ZSh4KSkgeyBzID0gXCJpbmZcIjsgZi5maWxsZXIgPSAnICc7IH1cbiAgZWxzZVxuICAgIHN3aXRjaCAoZi5jb252KSB7XG4gICAgY2FzZSAnZSc6XG4gICAgICB2YXIgcyA9IHgudG9FeHBvbmVudGlhbChwcmVjKTtcbiAgICAgIC8vIGV4cG9uZW50IHNob3VsZCBiZSBhdCBsZWFzdCB0d28gZGlnaXRzXG4gICAgICB2YXIgaSA9IHMubGVuZ3RoO1xuICAgICAgaWYgKHMuY2hhckF0KGkgLSAzKSA9PSAnZScpXG4gICAgICAgIHMgPSBzLnNsaWNlICgwLCBpIC0gMSkgKyAnMCcgKyBzLnNsaWNlIChpIC0gMSk7XG4gICAgICBicmVhaztcbiAgICBjYXNlICdmJzpcbiAgICAgIHMgPSB0b0ZpeGVkKHgsIHByZWMpOyBicmVhaztcbiAgICBjYXNlICdnJzpcbiAgICAgIHByZWMgPSBwcmVjP3ByZWM6MTtcbiAgICAgIHMgPSB4LnRvRXhwb25lbnRpYWwocHJlYyAtIDEpO1xuICAgICAgdmFyIGogPSBzLmluZGV4T2YoJ2UnKTtcbiAgICAgIHZhciBleHAgPSArcy5zbGljZShqICsgMSk7XG4gICAgICBpZiAoZXhwIDwgLTQgfHwgeCA+PSAxZTIxIHx8IHgudG9GaXhlZCgwKS5sZW5ndGggPiBwcmVjKSB7XG4gICAgICAgIC8vIHJlbW92ZSB0cmFpbGluZyB6ZXJvZXNcbiAgICAgICAgdmFyIGkgPSBqIC0gMTsgd2hpbGUgKHMuY2hhckF0KGkpID09ICcwJykgaS0tO1xuICAgICAgICBpZiAocy5jaGFyQXQoaSkgPT0gJy4nKSBpLS07XG4gICAgICAgIHMgPSBzLnNsaWNlKDAsIGkgKyAxKSArIHMuc2xpY2Uoaik7XG4gICAgICAgIGkgPSBzLmxlbmd0aDtcbiAgICAgICAgaWYgKHMuY2hhckF0KGkgLSAzKSA9PSAnZScpXG4gICAgICAgICAgcyA9IHMuc2xpY2UgKDAsIGkgLSAxKSArICcwJyArIHMuc2xpY2UgKGkgLSAxKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB2YXIgcCA9IHByZWM7XG4gICAgICAgIGlmIChleHAgPCAwKSB7IHAgLT0gZXhwICsgMTsgcyA9IHgudG9GaXhlZChwKTsgfVxuICAgICAgICBlbHNlIHdoaWxlIChzID0geC50b0ZpeGVkKHApLCBzLmxlbmd0aCA+IHByZWMgKyAxKSBwLS07XG4gICAgICAgIGlmIChwKSB7XG4gICAgICAgICAgLy8gcmVtb3ZlIHRyYWlsaW5nIHplcm9lc1xuICAgICAgICAgIHZhciBpID0gcy5sZW5ndGggLSAxOyB3aGlsZSAocy5jaGFyQXQoaSkgPT0gJzAnKSBpLS07XG4gICAgICAgICAgaWYgKHMuY2hhckF0KGkpID09ICcuJykgaS0tO1xuICAgICAgICAgIHMgPSBzLnNsaWNlKDAsIGkgKyAxKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgYnJlYWs7XG4gICAgfVxuICByZXR1cm4gY2FtbF9maW5pc2hfZm9ybWF0dGluZyhmLCBzKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9mbG9hdF9vZl9zdHJpbmcgKGNvbnN0KVxuLy9SZXF1aXJlczogY2FtbF9mYWlsd2l0aCwgY2FtbF9qc2J5dGVzX29mX3N0cmluZ1xuZnVuY3Rpb24gY2FtbF9mbG9hdF9vZl9zdHJpbmcocykge1xuICB2YXIgcmVzO1xuICBzID0gY2FtbF9qc2J5dGVzX29mX3N0cmluZyhzKVxuICByZXMgPSArcztcbiAgaWYgKChzLmxlbmd0aCA+IDApICYmIChyZXMgPT09IHJlcykpIHJldHVybiByZXM7XG4gIHMgPSBzLnJlcGxhY2UoL18vZyxcIlwiKTtcbiAgcmVzID0gK3M7XG4gIGlmICgoKHMubGVuZ3RoID4gMCkgJiYgKHJlcyA9PT0gcmVzKSkgfHwgL15bKy1dP25hbiQvaS50ZXN0KHMpKSByZXR1cm4gcmVzO1xuICB2YXIgbSA9IC9eICooWystXT8pMHgoWzAtOWEtZl0rKVxcLj8oWzAtOWEtZl0qKShwKFsrLV0/WzAtOV0rKSk/L2kuZXhlYyhzKTtcbiAgLy8gICAgICAgICAgMSAgICAgICAgMiAgICAgICAgICAgICAzICAgICAgICAgICA1XG4gIGlmKG0pe1xuICAgIHZhciBtMyA9IG1bM10ucmVwbGFjZSgvMCskLywnJyk7XG4gICAgdmFyIG1hbnRpc3NhID0gcGFyc2VJbnQobVsxXSArIG1bMl0gKyBtMywgMTYpO1xuICAgIHZhciBleHBvbmVudCA9IChtWzVdfDApIC0gNCptMy5sZW5ndGg7XG4gICAgcmVzID0gbWFudGlzc2EgKiBNYXRoLnBvdygyLCBleHBvbmVudCk7XG4gICAgcmV0dXJuIHJlcztcbiAgfVxuICBpZigvXlxcKz9pbmYoaW5pdHkpPyQvaS50ZXN0KHMpKSByZXR1cm4gSW5maW5pdHk7XG4gIGlmKC9eLWluZihpbml0eSk/JC9pLnRlc3QocykpIHJldHVybiAtSW5maW5pdHk7XG4gIGNhbWxfZmFpbHdpdGgoXCJmbG9hdF9vZl9zdHJpbmdcIik7XG59XG4iLCIvKlxuVG8gZGVhbCB3aXRoIGVmZmVjdHMsIHRoZSBleGVjdXRpb24gY29udGV4dCBpcyBpbnR1aXRpdmVseSBjb21wb3NlZCBvZlxuYSBzdGFjayBvZiBmaWJlcnMuIEVhY2ggZmliZXIgaGFzIGEgY3VycmVudCBsb3ctbGV2ZWwgY29udGludWF0aW9uXG4ob25lLWFyZ3VtZW50IEphdmFTY3JpcHQgZnVuY3Rpb24pLCBhIHN0YWNrIG9mIGV4Y2VwdGlvbiBoYW5kbGVycyBhbmRcbmEgdHJpcGxlIG9mIGhhbmRsZXJzLCB3aGljaCBhcmUgaW52b2tlZCB3aGVuIHRoZSBmaWJlciB0ZXJtaW5hdGVzXG4oZWl0aGVyIHdpdGggYSB2YWx1ZSBvciBhbiBleGNlcHRpb24pIG9yIHdoZW4gYW4gZWZmZWN0IGlzIHBlcmZvcm1lZC5cblRoZSBsb3ctbGV2ZWwgY29udGludWF0aW9uIG9mIHRoZSB0b3Btb3N0IGZpYmVyICh3aGljaCBpcyBjdXJyZW50bHlcbmV4ZWN1dGluZykgaXMgcGFzc2VkIGZyb20gZnVuY3Rpb24gdG8gZnVuY3Rpb24gYXMgYW4gYWRkaXRpb25hbFxuYXJndW1lbnQuIEl0cyBzdGFjayBvZiBleGNlcHRpb24gaGFuZGxlcnMgaXMgc3RvcmVkIGluXG5bY2FtbF9leG5fc3RhY2tdLiBFeGNlcHRpb24gaGFuZGxlcnMgYXJlIHB1c2hlZCBpbnRvIHRoaXMgc3RhY2sgd2hlblxuZW50ZXJpbmcgYSBbdHJ5IC4uLiB3aXRoIC4uLl0gYW5kIHBvcHBlZCBvbiBleGl0LiBUaGVuLCBoYW5kbGVycyBhbmRcbnRoZSByZW1haW5pbmcgZmliZXJzIGFyZSBzdG9yZWQgaW4gW2NhbWxfZmliZXJfc3RhY2tdLiBUbyBpbnN0YWxsIGFuXG5lZmZlY3QgaGFuZGxlciwgd2UgcHVzaCBhIG5ldyBmaWJlciBpbnRvIHRoZSBleGVjdXRpb24gY29udGV4dC5cblxuV2UgaGF2ZSBiYXNpY2FsbHkgdGhlIGZvbGxvd2luZyB0eXBlIGZvciByZWlmaWVkIGNvbnRpbnVhdGlvbnMgKHR5cGVcbltjb250aW51YXRpb25dIGluIG1vZHVsZSBbRWZmZWN0XSBvZiB0aGUgc3RhbmRhcmQgbGlicmFyeSk6XG5cbiAgdHlwZSAoJ2EsICdiKSBjb250aW51YXRpb24gPSAoJ2EsICdiKSBzdGFjayByZWZcblxuICBhbmQgKF8sIF8pIHN0YWNrID1cbiAgICAgIENvbnMgOiAoJ2IgLT4gdW5pdCkgKiAgICAgICAgICAgICAoKiBsb3ctbGV2ZWwgY29udGludWF0aW9uICopXG4gICAgICAgICAgICAgKGV4biAtPiB1bml0KSBsaXN0ICogICAgICAgKCogZXhjZXB0aW9uIGhhbmRsZXJzICopXG4gICAgICAgICAgICAgKCdiLCAnYykgaGFuZGxlciAqXG4gICAgICAgICAgICAgKCdhLCAnYikgc3RhY2tcbiAgICAgICAgICAgICAtPiAoJ2EsICdjKSBzdGFja1xuICAgIHwgRW1wdHkgOiAoJ2EsICdhKSBzdGFja1xuXG4gIGFuZCAoJ2EsJ2IpIGhhbmRsZXIgPSAgICgqIEFzIGluIG1vZHVsZSBFZmZlY3QgZnJvbSB0aGUgc3RhbmRhcmQgbGlicmFyeSAqKVxuICAgIHsgcmV0YzogJ2EgLT4gJ2I7XG4gICAgICBleG5jOiBleG4gLT4gJ2I7XG4gICAgICBlZmZjOiAnYy4nYyBFZmZlY3QudCAtPiAoKCdjLCdiKSBjb250aW51YXRpb24gLT4gJ2IpIG9wdGlvbiB9XG5cbkNvbnRpbnVhdGlvbnMgYXJlIG9uZS1zaG90LiBBIGNvbnRpbnVhdGlvbiBbcmVmIEVtcHR5XSBoYXMgYWxyZWFkeVxuYmVlbiByZXN1bWVkLlxuXG5BIGNvbnRpbnVhdGlvbiBpcyBiYXNpY2FsbHkgY29tcG9zZWQgb2YgYSBsaXN0IG9mIGZpYmVycywgd2hpY2ggZWFjaFxuaGFzIGl0cyBsb3ctbGV2ZWwgY29udGludWF0aW9uLCBpdHMgc3RhY2sgb2YgZXhjZXB0aW9uIGhhbmRsZXJzIGFuZCBhXG50cmlwbGUgb2YgaGFuZGxlcnMgdG8gZGVhbCB3aXRoIHdoZW4gdGhlIGZpYmVyIHRlcm1pbmF0ZXMgb3IgYW5cbmVmZmVjdCBpcyBwZXJmb3JtZWQuIFdoZW4gcmVzdW1pbmcgYSBjb250aW51YXRpb24sIHRoZSBpbm5lcm1vc3QgZmliZXJcbmlzIHJlc3VtZWQgZmlyc3QuXG5cblRoZSBoYW5kbGVycyBhcmUgQ1BTLXRyYW5zZm9ybWVkIGZ1bmN0aW9uczogdGhleSBhY3R1YWxseSB0YWtlIGFuXG5hZGRpdGlvbmFsIHBhcmFtZXRlciB3aGljaCBpcyB0aGUgY3VycmVudCBsb3ctbGV2ZWwgY29udGludWF0aW9uLlxuKi9cblxuLy9Qcm92aWRlczogY2FtbF9leG5fc3RhY2tcbi8vSWY6IGVmZmVjdHNcbi8vIFRoaXMgaXMgYW4gT0NhbWwgbGlzdCBvZiBleGNlcHRpb24gaGFuZGxlcnNcbnZhciBjYW1sX2V4bl9zdGFjayA9IDA7XG5cbi8vUHJvdmlkZXM6IGNhbWxfcHVzaF90cmFwXG4vL1JlcXVpcmVzOiBjYW1sX2V4bl9zdGFja1xuLy9JZjogZWZmZWN0c1xuZnVuY3Rpb24gY2FtbF9wdXNoX3RyYXAoaGFuZGxlcikge1xuICBjYW1sX2V4bl9zdGFjaz1bMCxoYW5kbGVyLGNhbWxfZXhuX3N0YWNrXTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9wb3BfdHJhcFxuLy9SZXF1aXJlczogY2FtbF9leG5fc3RhY2tcbi8vSWY6IGVmZmVjdHNcbmZ1bmN0aW9uIGNhbWxfcG9wX3RyYXAoKSB7XG4gIGlmICghY2FtbF9leG5fc3RhY2spIHJldHVybiBmdW5jdGlvbih4KXt0aHJvdyB4O31cbiAgdmFyIGggPSBjYW1sX2V4bl9zdGFja1sxXTtcbiAgY2FtbF9leG5fc3RhY2s9Y2FtbF9leG5fc3RhY2tbMl07XG4gIHJldHVybiBoXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZmliZXJfc3RhY2tcbi8vSWY6IGVmZmVjdHNcbi8vIFRoaXMgaGFzIHRoZSBzaGFwZSB7aCwgcjp7aywgeCwgZX19IHdoZXJlIGggaXMgYSB0cmlwbGUgb2YgaGFuZGxlcnNcbi8vIChzZWUgZWZmZWN0LmpzKSBhbmQgaywgeCBhbmQgZSBhcmUgdGhlIHNhdmVkIGNvbnRpbnVhdGlvbixcbi8vIGV4Y2VwdGlvbiBzdGFjayBhbmQgZmliZXIgc3RhY2sgb2YgdGhlIHBhcmVudCBmaWJlci5cbnZhciBjYW1sX2ZpYmVyX3N0YWNrO1xuXG4vL1Byb3ZpZGVzOmNhbWxfcmVzdW1lX3N0YWNrXG4vL1JlcXVpcmVzOiBjYW1sX25hbWVkX3ZhbHVlLCBjYW1sX3JhaXNlX2NvbnN0YW50LCBjYW1sX2V4bl9zdGFjaywgY2FtbF9maWJlcl9zdGFja1xuLy9JZjogZWZmZWN0c1xuZnVuY3Rpb24gY2FtbF9yZXN1bWVfc3RhY2soc3RhY2ssIGspIHtcbiAgaWYgKCFzdGFjaykgY2FtbF9yYWlzZV9jb25zdGFudFxuICAgICAgICAgICAgICAgICAoY2FtbF9uYW1lZF92YWx1ZShcIkVmZmVjdC5Db250aW51YXRpb25fYWxyZWFkeV9yZXN1bWVkXCIpKTtcbiAgLy8gVXBkYXRlIHRoZSBleGVjdXRpb24gY29udGV4dCB3aXRoIHRoZSBzdGFjayBvZiBmaWJlcnMgaW4gW3N0YWNrXSBpblxuICAvLyBvcmRlciB0byByZXN1bWUgdGhlIGNvbnRpbnVhdGlvblxuICBkbyB7XG4gICAgY2FtbF9maWJlcl9zdGFjayA9XG4gICAgICB7aDpzdGFja1szXSwgcjp7azprLCB4OmNhbWxfZXhuX3N0YWNrLCBlOmNhbWxfZmliZXJfc3RhY2t9fTtcbiAgICBrID0gc3RhY2tbMV07XG4gICAgY2FtbF9leG5fc3RhY2sgPSBzdGFja1syXTtcbiAgICBzdGFjayA9IHN0YWNrWzRdO1xuICB9IHdoaWxlIChzdGFjaylcbiAgcmV0dXJuIGs7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfcG9wX2ZpYmVyXG4vL1JlcXVpcmVzOiBjYW1sX2V4bl9zdGFjaywgY2FtbF9maWJlcl9zdGFja1xuLy9JZjogZWZmZWN0c1xuZnVuY3Rpb24gY2FtbF9wb3BfZmliZXIoKSB7XG4gIC8vIE1vdmUgdG8gdGhlIHBhcmVudCBmaWJlciwgcmV0dXJuaW5nIHRoZSBwYXJlbnQncyBsb3ctbGV2ZWwgY29udGludWF0aW9uXG4gIHZhciByZW0gPSBjYW1sX2ZpYmVyX3N0YWNrLnI7XG4gIGNhbWxfZXhuX3N0YWNrID0gcmVtLng7XG4gIGNhbWxfZmliZXJfc3RhY2sgPSByZW0uZTtcbiAgcmV0dXJuIHJlbS5rO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3BlcmZvcm1fZWZmZWN0XG4vL1JlcXVpcmVzOiBjYW1sX3BvcF9maWJlciwgY2FtbF9zdGFja19jaGVja19kZXB0aCwgY2FtbF90cmFtcG9saW5lX3JldHVybiwgY2FtbF9leG5fc3RhY2ssIGNhbWxfZmliZXJfc3RhY2tcbi8vSWY6IGVmZmVjdHNcbmZ1bmN0aW9uIGNhbWxfcGVyZm9ybV9lZmZlY3QoZWZmLCBjb250LCBrMCkge1xuICAvLyBBbGxvY2F0ZSBhIGNvbnRpbnVhdGlvbiBpZiB3ZSBkb24ndCBhbHJlYWR5IGhhdmUgb25lXG4gIGlmICghY29udCkgY29udCA9IFsyNDUgLypjb250aW51YXRpb24qLywgMF07XG4gIC8vIEdldCBjdXJyZW50IGVmZmVjdCBoYW5kbGVyXG4gIHZhciBoYW5kbGVyID0gY2FtbF9maWJlcl9zdGFjay5oWzNdO1xuICAvLyBDb25zIHRoZSBjdXJyZW50IGZpYmVyIG9udG8gdGhlIGNvbnRpbnVhdGlvbjpcbiAgLy8gICBjb250IDo9IENvbnMgKGssIGV4bl9zdGFjaywgaGFuZGxlcnMsICFjb250KVxuICBjb250WzFdID0gWzAsazAsY2FtbF9leG5fc3RhY2ssY2FtbF9maWJlcl9zdGFjay5oLGNvbnRbMV1dO1xuICAvLyBNb3ZlIHRvIHBhcmVudCBmaWJlciBhbmQgZXhlY3V0ZSB0aGUgZWZmZWN0IGhhbmRsZXIgdGhlcmVcbiAgLy8gVGhlIGhhbmRsZXIgaXMgZGVmaW5lZCBpbiBTdGRsaWIuRWZmZWN0LCBzbyB3ZSBrbm93IHRoYXQgdGhlIGFyaXR5IG1hdGNoZXNcbiAgdmFyIGsxID0gY2FtbF9wb3BfZmliZXIoKTtcbiAgcmV0dXJuIGNhbWxfc3RhY2tfY2hlY2tfZGVwdGgoKT9oYW5kbGVyKGVmZixjb250LGsxLGsxKVxuICAgICAgICAgOmNhbWxfdHJhbXBvbGluZV9yZXR1cm4oaGFuZGxlcixbZWZmLGNvbnQsazEsazFdKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9hbGxvY19zdGFja1xuLy9SZXF1aXJlczogY2FtbF9wb3BfZmliZXIsIGNhbWxfZmliZXJfc3RhY2ssIGNhbWxfY2FsbF9nZW4sIGNhbWxfc3RhY2tfY2hlY2tfZGVwdGgsIGNhbWxfdHJhbXBvbGluZV9yZXR1cm5cbi8vSWY6IGVmZmVjdHNcbmZ1bmN0aW9uIGNhbWxfYWxsb2Nfc3RhY2soaHYsIGh4LCBoZikge1xuICBmdW5jdGlvbiBjYWxsKGksIHgpIHtcbiAgICB2YXIgZj1jYW1sX2ZpYmVyX3N0YWNrLmhbaV07XG4gICAgdmFyIGFyZ3MgPSBbeCwgY2FtbF9wb3BfZmliZXIoKV07XG4gICAgcmV0dXJuIGNhbWxfc3RhY2tfY2hlY2tfZGVwdGgoKT9jYW1sX2NhbGxfZ2VuKGYsYXJncylcbiAgICAgICAgICAgOmNhbWxfdHJhbXBvbGluZV9yZXR1cm4oZixhcmdzKTtcbiAgfVxuICBmdW5jdGlvbiBodmFsKHgpIHtcbiAgICAvLyBDYWxsIFtodl0gaW4gdGhlIHBhcmVudCBmaWJlclxuICAgIHJldHVybiBjYWxsKDEsIHgpO1xuICB9XG4gIGZ1bmN0aW9uIGhleG4oZSkge1xuICAgIC8vIENhbGwgW2h4XSBpbiB0aGUgcGFyZW50IGZpYmVyXG4gICAgcmV0dXJuIGNhbGwoMiwgZSk7XG4gIH1cbiAgcmV0dXJuIFswLCBodmFsLCBbMCwgaGV4biwgMF0sIFswLCBodiwgaHgsIGhmXSwgMF07XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYWxsb2Nfc3RhY2tcbi8vSWY6ICFlZmZlY3RzXG5mdW5jdGlvbiBjYW1sX2FsbG9jX3N0YWNrKGh2LCBoeCwgaGYpIHtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfY29udGludWF0aW9uX3VzZV9ub2V4Y1xuZnVuY3Rpb24gY2FtbF9jb250aW51YXRpb25fdXNlX25vZXhjKGNvbnQpIHtcbiAgdmFyIHN0YWNrPWNvbnRbMV07XG4gIGNvbnRbMV09MDtcbiAgcmV0dXJuIHN0YWNrO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2NvbnRpbnVhdGlvbl91c2VfYW5kX3VwZGF0ZV9oYW5kbGVyX25vZXhjXG4vL1JlcXVpcmVzOiBjYW1sX2NvbnRpbnVhdGlvbl91c2Vfbm9leGNcbmZ1bmN0aW9uIGNhbWxfY29udGludWF0aW9uX3VzZV9hbmRfdXBkYXRlX2hhbmRsZXJfbm9leGMoY29udCwgaHZhbCwgaGV4biwgaGVmZikge1xuICB2YXIgc3RhY2sgPSBjYW1sX2NvbnRpbnVhdGlvbl91c2Vfbm9leGMoY29udCk7XG4gIHN0YWNrWzNdID0gWzAsIGh2YWwsIGhleG4sIGhlZmZdO1xuICByZXR1cm4gc3RhY2s7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZ2V0X2NvbnRpbnVhdGlvbl9jYWxsc3RhY2tcbmZ1bmN0aW9uIGNhbWxfZ2V0X2NvbnRpbnVhdGlvbl9jYWxsc3RhY2sgKCkgeyByZXR1cm4gWzBdOyB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfY29uZGl0aW9uX25ld1xuZnVuY3Rpb24gY2FtbF9tbF9jb25kaXRpb25fbmV3KHVuaXQpe1xuICAgIHJldHVybiB7Y29uZGl0aW9uOjF9O1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX2NvbmRpdGlvbl93YWl0XG5mdW5jdGlvbiBjYW1sX21sX2NvbmRpdGlvbl93YWl0KHQsbXV0ZXh0KXtcbiAgICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tbF9jb25kaXRpb25fYnJvYWRjYXN0XG5mdW5jdGlvbiBjYW1sX21sX2NvbmRpdGlvbl9icm9hZGNhc3QodCl7XG4gICAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfY29uZGl0aW9uX3NpZ25hbFxuZnVuY3Rpb24gY2FtbF9tbF9jb25kaXRpb25fc2lnbmFsKHQpe1xuICAgIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBqc29vX2VmZmVjdF9ub3Rfc3VwcG9ydGVkXG4vL1JlcXVpcmVzOiBjYW1sX2ZhaWx3aXRoXG4vLyFJZjogZWZmZWN0c1xuZnVuY3Rpb24ganNvb19lZmZlY3Rfbm90X3N1cHBvcnRlZCgpe1xuICBjYW1sX2ZhaWx3aXRoKFwiRWZmZWN0IGhhbmRsZXJzIGFyZSBub3Qgc3VwcG9ydGVkXCIpO1xufVxuIiwiLy8gSnNfb2Zfb2NhbWwgcnVudGltZSBzdXBwb3J0XG4vLyBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL2pzX29mX29jYW1sL1xuLy8gQ29weXJpZ2h0IChDKSAyMDE0IErDqXLDtG1lIFZvdWlsbG9uLCBIdWdvIEhldXphcmRcbi8vIExhYm9yYXRvaXJlIFBQUyAtIENOUlMgVW5pdmVyc2l0w6kgUGFyaXMgRGlkZXJvdFxuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4vLyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbi8vIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4vLyBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4vLyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuLy8gTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuLy8gR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4vL1xuLy8gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4vLyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuLy8gRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cblxuLy9Qcm92aWRlczogZnNfbm9kZV9zdXBwb3J0ZWRcbmZ1bmN0aW9uIGZzX25vZGVfc3VwcG9ydGVkICgpIHtcbiAgcmV0dXJuIChcbiAgICB0eXBlb2YgZ2xvYmFsVGhpcy5wcm9jZXNzICE9PSAndW5kZWZpbmVkJ1xuICAgICAgJiYgdHlwZW9mIGdsb2JhbFRoaXMucHJvY2Vzcy52ZXJzaW9ucyAhPT0gJ3VuZGVmaW5lZCdcbiAgICAgICYmIHR5cGVvZiBnbG9iYWxUaGlzLnByb2Nlc3MudmVyc2lvbnMubm9kZSAhPT0gJ3VuZGVmaW5lZCcpXG59XG4vL1Byb3ZpZGVzOiBmc19ub2RlX3N1cHBvcnRlZFxuLy9JZjogYnJvd3NlclxuZnVuY3Rpb24gZnNfbm9kZV9zdXBwb3J0ZWQgKCkge1xuICByZXR1cm4gZmFsc2Vcbn1cblxuXG4vL1Byb3ZpZGVzOiBNbE5vZGVEZXZpY2Vcbi8vUmVxdWlyZXM6IE1sTm9kZUZkLCBjYW1sX3JhaXNlX3N5c19lcnJvciwgY2FtbF9yYWlzZV93aXRoX2FyZ3Ncbi8vUmVxdWlyZXM6IG1ha2VfdW5peF9lcnJfYXJncywgY2FtbF9uYW1lZF92YWx1ZSwgY2FtbF9zdHJpbmdfb2ZfanNzdHJpbmdcbmZ1bmN0aW9uIE1sTm9kZURldmljZShyb290KSB7XG4gIHRoaXMuZnMgPSByZXF1aXJlKCdmcycpO1xuICB0aGlzLnJvb3QgPSByb290O1xufVxuTWxOb2RlRGV2aWNlLnByb3RvdHlwZS5ubSA9IGZ1bmN0aW9uKG5hbWUpIHtcbiAgcmV0dXJuICh0aGlzLnJvb3QgKyBuYW1lKTtcbn1cbk1sTm9kZURldmljZS5wcm90b3R5cGUuZXhpc3RzID0gZnVuY3Rpb24obmFtZSkge1xuICB0cnkge1xuICAgIHJldHVybiB0aGlzLmZzLmV4aXN0c1N5bmModGhpcy5ubShuYW1lKSk/MTowO1xuICB9IGNhdGNoIChlcnIpIHtcbiAgICByZXR1cm4gMDtcbiAgfVxufVxuTWxOb2RlRGV2aWNlLnByb3RvdHlwZS5pc0ZpbGUgPSBmdW5jdGlvbihuYW1lKSB7XG4gIHRyeSB7XG4gICAgcmV0dXJuIHRoaXMuZnMuc3RhdFN5bmModGhpcy5ubShuYW1lKSkuaXNGaWxlKCk/MTowO1xuICB9IGNhdGNoIChlcnIpIHtcbiAgICBjYW1sX3JhaXNlX3N5c19lcnJvcihlcnIudG9TdHJpbmcoKSk7XG4gIH1cbn1cbk1sTm9kZURldmljZS5wcm90b3R5cGUubWtkaXIgPSBmdW5jdGlvbihuYW1lLCBtb2RlLCByYWlzZV91bml4KSB7XG4gIHRyeSB7XG4gICAgdGhpcy5mcy5ta2RpclN5bmModGhpcy5ubShuYW1lKSx7bW9kZTptb2RlfSk7XG4gICAgcmV0dXJuIDBcbiAgfSBjYXRjaCAoZXJyKSB7XG4gICAgdGhpcy5yYWlzZV9ub2RlanNfZXJyb3IoZXJyLCByYWlzZV91bml4KTtcbiAgfVxufVxuTWxOb2RlRGV2aWNlLnByb3RvdHlwZS5ybWRpciA9IGZ1bmN0aW9uKG5hbWUsIHJhaXNlX3VuaXgpIHtcbiAgdHJ5IHtcbiAgICB0aGlzLmZzLnJtZGlyU3luYyh0aGlzLm5tKG5hbWUpKTtcbiAgICByZXR1cm4gMFxuICB9IGNhdGNoIChlcnIpIHtcbiAgICB0aGlzLnJhaXNlX25vZGVqc19lcnJvcihlcnIsIHJhaXNlX3VuaXgpO1xuICB9XG59XG5NbE5vZGVEZXZpY2UucHJvdG90eXBlLnJlYWRkaXIgPSBmdW5jdGlvbihuYW1lLCByYWlzZV91bml4KSB7XG4gIHRyeSB7XG4gICAgcmV0dXJuIHRoaXMuZnMucmVhZGRpclN5bmModGhpcy5ubShuYW1lKSk7XG4gIH0gY2F0Y2ggKGVycikge1xuICAgIHRoaXMucmFpc2Vfbm9kZWpzX2Vycm9yKGVyciwgcmFpc2VfdW5peCk7XG4gIH1cbn1cbk1sTm9kZURldmljZS5wcm90b3R5cGUuaXNfZGlyID0gZnVuY3Rpb24obmFtZSkge1xuICB0cnkge1xuICAgIHJldHVybiB0aGlzLmZzLnN0YXRTeW5jKHRoaXMubm0obmFtZSkpLmlzRGlyZWN0b3J5KCk/MTowO1xuICB9IGNhdGNoIChlcnIpIHtcbiAgICBjYW1sX3JhaXNlX3N5c19lcnJvcihlcnIudG9TdHJpbmcoKSk7XG4gIH1cbn1cbk1sTm9kZURldmljZS5wcm90b3R5cGUudW5saW5rID0gZnVuY3Rpb24obmFtZSwgcmFpc2VfdW5peCkge1xuICB0cnkge1xuICAgIHZhciBiID0gdGhpcy5mcy5leGlzdHNTeW5jKHRoaXMubm0obmFtZSkpPzE6MDtcbiAgICB0aGlzLmZzLnVubGlua1N5bmModGhpcy5ubShuYW1lKSk7XG4gICAgcmV0dXJuIGI7XG4gIH0gY2F0Y2ggKGVycikge1xuICAgIHRoaXMucmFpc2Vfbm9kZWpzX2Vycm9yKGVyciwgcmFpc2VfdW5peCk7XG4gIH1cbn1cbk1sTm9kZURldmljZS5wcm90b3R5cGUub3BlbiA9IGZ1bmN0aW9uKG5hbWUsIGYsIHJhaXNlX3VuaXgpIHtcbiAgdmFyIGNvbnN0cyA9IHJlcXVpcmUoJ2NvbnN0YW50cycpO1xuICB2YXIgcmVzID0gMDtcbiAgZm9yKHZhciBrZXkgaW4gZil7XG4gICAgc3dpdGNoKGtleSl7XG4gICAgY2FzZSBcInJkb25seVwiICA6IHJlcyB8PSBjb25zdHMuT19SRE9OTFk7IGJyZWFrO1xuICAgIGNhc2UgXCJ3cm9ubHlcIiAgOiByZXMgfD0gY29uc3RzLk9fV1JPTkxZOyBicmVhaztcbiAgICBjYXNlIFwiYXBwZW5kXCIgIDpcbiAgICAgIHJlcyB8PSBjb25zdHMuT19XUk9OTFkgfCBjb25zdHMuT19BUFBFTkQ7XG4gICAgICBicmVhaztcbiAgICBjYXNlIFwiY3JlYXRlXCIgICA6IHJlcyB8PSBjb25zdHMuT19DUkVBVDsgICAgYnJlYWs7XG4gICAgY2FzZSBcInRydW5jYXRlXCIgOiByZXMgfD0gY29uc3RzLk9fVFJVTkM7ICAgIGJyZWFrO1xuICAgIGNhc2UgXCJleGNsXCIgICAgIDogcmVzIHw9IGNvbnN0cy5PX0VYQ0w7ICAgICBicmVhaztcbiAgICBjYXNlIFwiYmluYXJ5XCIgICA6IHJlcyB8PSBjb25zdHMuT19CSU5BUlk7ICAgYnJlYWs7XG4gICAgY2FzZSBcInRleHRcIiAgICAgOiByZXMgfD0gY29uc3RzLk9fVEVYVDsgICAgIGJyZWFrO1xuICAgIGNhc2UgXCJub25ibG9ja1wiIDogcmVzIHw9IGNvbnN0cy5PX05PTkJMT0NLOyBicmVhaztcbiAgICB9XG4gIH1cbiAgdHJ5IHtcbiAgICB2YXIgZmQgPSB0aGlzLmZzLm9wZW5TeW5jKHRoaXMubm0obmFtZSksIHJlcyk7XG4gICAgdmFyIGlzQ2hhcmFjdGVyRGV2aWNlID0gdGhpcy5mcy5sc3RhdFN5bmModGhpcy5ubShuYW1lKSkuaXNDaGFyYWN0ZXJEZXZpY2UoKTtcbiAgICBmLmlzQ2hhcmFjdGVyRGV2aWNlID0gaXNDaGFyYWN0ZXJEZXZpY2U7XG4gICAgcmV0dXJuIG5ldyBNbE5vZGVGZChmZCwgZik7XG4gIH0gY2F0Y2ggKGVycikge1xuICAgIHRoaXMucmFpc2Vfbm9kZWpzX2Vycm9yKGVyciwgcmFpc2VfdW5peCk7XG4gIH1cbn1cblxuTWxOb2RlRGV2aWNlLnByb3RvdHlwZS5yZW5hbWUgPSBmdW5jdGlvbihvLCBuLCByYWlzZV91bml4KSB7XG4gIHRyeSB7XG4gICAgdGhpcy5mcy5yZW5hbWVTeW5jKHRoaXMubm0obyksIHRoaXMubm0obikpO1xuICB9IGNhdGNoIChlcnIpIHtcbiAgICB0aGlzLnJhaXNlX25vZGVqc19lcnJvcihlcnIsIHJhaXNlX3VuaXgpO1xuICB9XG59XG5NbE5vZGVEZXZpY2UucHJvdG90eXBlLnN0YXQgPSBmdW5jdGlvbihuYW1lLCByYWlzZV91bml4KSB7XG4gIHRyeSB7XG4gICAgdmFyIGpzX3N0YXRzID0gdGhpcy5mcy5zdGF0U3luYyh0aGlzLm5tKG5hbWUpKTtcbiAgICByZXR1cm4gdGhpcy5zdGF0c19mcm9tX2pzKGpzX3N0YXRzKTtcbiAgfSBjYXRjaCAoZXJyKSB7XG4gICAgdGhpcy5yYWlzZV9ub2RlanNfZXJyb3IoZXJyLCByYWlzZV91bml4KTtcbiAgfVxufVxuTWxOb2RlRGV2aWNlLnByb3RvdHlwZS5sc3RhdCA9IGZ1bmN0aW9uKG5hbWUsIHJhaXNlX3VuaXgpIHtcbiAgdHJ5IHtcbiAgICB2YXIganNfc3RhdHMgPSB0aGlzLmZzLmxzdGF0U3luYyh0aGlzLm5tKG5hbWUpKTtcbiAgICByZXR1cm4gdGhpcy5zdGF0c19mcm9tX2pzKGpzX3N0YXRzKTtcbiAgfSBjYXRjaCAoZXJyKSB7XG4gICAgdGhpcy5yYWlzZV9ub2RlanNfZXJyb3IoZXJyLCByYWlzZV91bml4KTtcbiAgfVxufVxuTWxOb2RlRGV2aWNlLnByb3RvdHlwZS5zeW1saW5rID0gZnVuY3Rpb24odG9fZGlyLCB0YXJnZXQsIHBhdGgsIHJhaXNlX3VuaXgpIHtcbiAgdHJ5IHtcbiAgICB0aGlzLmZzLnN5bWxpbmtTeW5jKHRoaXMubm0odGFyZ2V0KSwgdGhpcy5ubShwYXRoKSwgdG9fZGlyID8gJ2RpcicgOiAnZmlsZScpO1xuICAgIHJldHVybiAwO1xuICB9IGNhdGNoIChlcnIpIHtcbiAgICB0aGlzLnJhaXNlX25vZGVqc19lcnJvcihlcnIsIHJhaXNlX3VuaXgpO1xuICB9XG59XG5NbE5vZGVEZXZpY2UucHJvdG90eXBlLnJlYWRsaW5rID0gZnVuY3Rpb24obmFtZSwgcmFpc2VfdW5peCkge1xuICB0cnkge1xuICAgIHZhciBsaW5rID0gdGhpcy5mcy5yZWFkbGlua1N5bmModGhpcy5ubShuYW1lKSwgJ3V0ZjgnKTtcbiAgICByZXR1cm4gY2FtbF9zdHJpbmdfb2ZfanNzdHJpbmcobGluayk7XG4gIH0gY2F0Y2ggKGVycikge1xuICAgIHRoaXMucmFpc2Vfbm9kZWpzX2Vycm9yKGVyciwgcmFpc2VfdW5peCk7XG4gIH1cbn1cbk1sTm9kZURldmljZS5wcm90b3R5cGUub3BlbmRpciA9IGZ1bmN0aW9uKG5hbWUsIHJhaXNlX3VuaXgpIHtcbiAgdHJ5IHtcbiAgICByZXR1cm4gdGhpcy5mcy5vcGVuZGlyU3luYyh0aGlzLm5tKG5hbWUpKTtcbiAgfSBjYXRjaCAoZXJyKSB7XG4gICAgdGhpcy5yYWlzZV9ub2RlanNfZXJyb3IoZXJyLCByYWlzZV91bml4KTtcbiAgfVxufVxuTWxOb2RlRGV2aWNlLnByb3RvdHlwZS5yYWlzZV9ub2RlanNfZXJyb3IgPSBmdW5jdGlvbihlcnIsIHJhaXNlX3VuaXgpIHtcbiAgdmFyIHVuaXhfZXJyb3IgPSBjYW1sX25hbWVkX3ZhbHVlKFwiVW5peC5Vbml4X2Vycm9yXCIpO1xuICBpZiAocmFpc2VfdW5peCAmJiB1bml4X2Vycm9yKSB7XG4gICAgdmFyIGFyZ3MgPSBtYWtlX3VuaXhfZXJyX2FyZ3MoZXJyLmNvZGUsIGVyci5zeXNjYWxsLCBlcnIucGF0aCwgZXJyLmVycm5vKTtcbiAgICBjYW1sX3JhaXNlX3dpdGhfYXJncyh1bml4X2Vycm9yLCBhcmdzKTtcbiAgfSBlbHNlIHtcbiAgICBjYW1sX3JhaXNlX3N5c19lcnJvcihlcnIudG9TdHJpbmcoKSk7XG4gIH1cbn1cbk1sTm9kZURldmljZS5wcm90b3R5cGUuc3RhdHNfZnJvbV9qcyA9IGZ1bmN0aW9uKGpzX3N0YXRzKSB7XG4gIC8qID09PVVuaXguZmlsZV9raW5kPT09XG4gICAqIHR5cGUgZmlsZV9raW5kID1cbiAgICogICAgIFNfUkVHICAgICAgICAgICAgICAgICAgICAgICAoKiogUmVndWxhciBmaWxlICopXG4gICAqICAgfCBTX0RJUiAgICAgICAgICAgICAgICAgICAgICAgKCoqIERpcmVjdG9yeSAqKVxuICAgKiAgIHwgU19DSFIgICAgICAgICAgICAgICAgICAgICAgICgqKiBDaGFyYWN0ZXIgZGV2aWNlICopXG4gICAqICAgfCBTX0JMSyAgICAgICAgICAgICAgICAgICAgICAgKCoqIEJsb2NrIGRldmljZSAqKVxuICAgKiAgIHwgU19MTksgICAgICAgICAgICAgICAgICAgICAgICgqKiBTeW1ib2xpYyBsaW5rICopXG4gICAqICAgfCBTX0ZJRk8gICAgICAgICAgICAgICAgICAgICAgKCoqIE5hbWVkIHBpcGUgKilcbiAgICogICB8IFNfU09DSyAgICAgICAgICAgICAgICAgICAgICAoKiogU29ja2V0ICopXG4gICAqL1xuICB2YXIgZmlsZV9raW5kO1xuICBpZiAoanNfc3RhdHMuaXNGaWxlKCkpIHtcbiAgICBmaWxlX2tpbmQgPSAwO1xuICB9IGVsc2UgaWYgKGpzX3N0YXRzLmlzRGlyZWN0b3J5KCkpIHtcbiAgICBmaWxlX2tpbmQgPSAxO1xuICB9IGVsc2UgaWYgKGpzX3N0YXRzLmlzQ2hhcmFjdGVyRGV2aWNlKCkpIHtcbiAgICBmaWxlX2tpbmQgPSAyO1xuICB9IGVsc2UgaWYgKGpzX3N0YXRzLmlzQmxvY2tEZXZpY2UoKSkge1xuICAgIGZpbGVfa2luZCA9IDM7XG4gIH0gZWxzZSBpZiAoanNfc3RhdHMuaXNTeW1ib2xpY0xpbmsoKSkge1xuICAgIGZpbGVfa2luZCA9IDQ7XG4gIH0gZWxzZSBpZiAoanNfc3RhdHMuaXNGSUZPKCkpIHtcbiAgICBmaWxlX2tpbmQgPSA1O1xuICB9IGVsc2UgaWYgKGpzX3N0YXRzLmlzU29ja2V0KCkpIHtcbiAgICBmaWxlX2tpbmQgPSA2O1xuICB9XG4gIC8qID09PVVuaXguc3RhdHM9PT1cbiAgICogdHlwZSBzdGF0cyA9XG4gICAqICB7IHN0X2RldiA6IGludDsgICAgICAgICAgICAgICAoKiogRGV2aWNlIG51bWJlciAqKVxuICAgKiAgICBzdF9pbm8gOiBpbnQ7ICAgICAgICAgICAgICAgKCoqIElub2RlIG51bWJlciAqKVxuICAgKiAgICBzdF9raW5kIDogZmlsZV9raW5kOyAgICAgICAgKCoqIEtpbmQgb2YgdGhlIGZpbGUgKilcbiAgICogICAgc3RfcGVybSA6IGZpbGVfcGVybTsgICAgICAgICgqKiBBY2Nlc3MgcmlnaHRzICopXG4gICAqICAgIHN0X25saW5rIDogaW50OyAgICAgICAgICAgICAoKiogTnVtYmVyIG9mIGxpbmtzICopXG4gICAqICAgIHN0X3VpZCA6IGludDsgICAgICAgICAgICAgICAoKiogVXNlciBpZCBvZiB0aGUgb3duZXIgKilcbiAgICogICAgc3RfZ2lkIDogaW50OyAgICAgICAgICAgICAgICgqKiBHcm91cCBJRCBvZiB0aGUgZmlsZSdzIGdyb3VwICopXG4gICAqICAgIHN0X3JkZXYgOiBpbnQ7ICAgICAgICAgICAgICAoKiogRGV2aWNlIElEIChpZiBzcGVjaWFsIGZpbGUpICopXG4gICAqICAgIHN0X3NpemUgOiBpbnQ7ICAgICAgICAgICAgICAoKiogU2l6ZSBpbiBieXRlcyAqKVxuICAgKiAgICBzdF9hdGltZSA6IGZsb2F0OyAgICAgICAgICAgKCoqIExhc3QgYWNjZXNzIHRpbWUgKilcbiAgICogICAgc3RfbXRpbWUgOiBmbG9hdDsgICAgICAgICAgICgqKiBMYXN0IG1vZGlmaWNhdGlvbiB0aW1lICopXG4gICAqICAgIHN0X2N0aW1lIDogZmxvYXQ7ICAgICAgICAgICAoKiogTGFzdCBzdGF0dXMgY2hhbmdlIHRpbWUgKilcbiAgICogIH1cbiAgICovXG4gIHJldHVybiBCTE9DSyhcbiAgICAwLFxuICAgIGpzX3N0YXRzLmRldixcbiAgICBqc19zdGF0cy5pbm8sXG4gICAgZmlsZV9raW5kLFxuICAgIGpzX3N0YXRzLm1vZGUsXG4gICAganNfc3RhdHMubmxpbmssXG4gICAganNfc3RhdHMudWlkLFxuICAgIGpzX3N0YXRzLmdpZCxcbiAgICBqc19zdGF0cy5yZGV2LFxuICAgIGpzX3N0YXRzLnNpemUsXG4gICAganNfc3RhdHMuYXRpbWVNcyxcbiAgICBqc19zdGF0cy5tdGltZU1zLFxuICAgIGpzX3N0YXRzLmN0aW1lTXNcbiAgKTtcbn1cblxuTWxOb2RlRGV2aWNlLnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IE1sTm9kZURldmljZVxuXG4vL1Byb3ZpZGVzOiBNbE5vZGVEZXZpY2Vcbi8vSWY6IGJyb3dzZXJcbmZ1bmN0aW9uIE1sTm9kZURldmljZSgpIHtcbn1cblxuLy9Qcm92aWRlczogTWxOb2RlRmRcbi8vUmVxdWlyZXM6IE1sRmlsZSwgY2FtbF91aW50OF9hcnJheV9vZl9zdHJpbmcsIGNhbWxfdWludDhfYXJyYXlfb2ZfYnl0ZXMsIGNhbWxfYnl0ZXNfc2V0LCBjYW1sX3JhaXNlX3N5c19lcnJvclxuZnVuY3Rpb24gTWxOb2RlRmQoZmQsIGZsYWdzKXtcbiAgdGhpcy5mcyA9IHJlcXVpcmUoJ2ZzJyk7XG4gIHRoaXMuZmQgPSBmZDtcbiAgdGhpcy5mbGFncyA9IGZsYWdzO1xufVxuTWxOb2RlRmQucHJvdG90eXBlID0gbmV3IE1sRmlsZSAoKTtcbk1sTm9kZUZkLnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IE1sTm9kZUZkO1xuXG5NbE5vZGVGZC5wcm90b3R5cGUudHJ1bmNhdGUgPSBmdW5jdGlvbihsZW4pe1xuICB0cnkge1xuICAgIHRoaXMuZnMuZnRydW5jYXRlU3luYyh0aGlzLmZkLGxlbnwwKTtcbiAgfSBjYXRjaCAoZXJyKSB7XG4gICAgY2FtbF9yYWlzZV9zeXNfZXJyb3IoZXJyLnRvU3RyaW5nKCkpO1xuICB9XG59XG5NbE5vZGVGZC5wcm90b3R5cGUubGVuZ3RoID0gZnVuY3Rpb24gKCkge1xuICB0cnkge1xuICAgIHJldHVybiB0aGlzLmZzLmZzdGF0U3luYyh0aGlzLmZkKS5zaXplO1xuICB9IGNhdGNoIChlcnIpIHtcbiAgICBjYW1sX3JhaXNlX3N5c19lcnJvcihlcnIudG9TdHJpbmcoKSk7XG4gIH1cbn1cbk1sTm9kZUZkLnByb3RvdHlwZS53cml0ZSA9IGZ1bmN0aW9uKG9mZnNldCxidWYsYnVmX29mZnNldCxsZW4pe1xuICB0cnkge1xuICAgIGlmKHRoaXMuZmxhZ3MuaXNDaGFyYWN0ZXJEZXZpY2UpXG4gICAgICB0aGlzLmZzLndyaXRlU3luYyh0aGlzLmZkLCBidWYsIGJ1Zl9vZmZzZXQsIGxlbik7XG4gICAgZWxzZVxuICAgICAgdGhpcy5mcy53cml0ZVN5bmModGhpcy5mZCwgYnVmLCBidWZfb2Zmc2V0LCBsZW4sIG9mZnNldCk7XG4gIH0gY2F0Y2ggKGVycikge1xuICAgIGNhbWxfcmFpc2Vfc3lzX2Vycm9yKGVyci50b1N0cmluZygpKTtcbiAgfVxuICByZXR1cm4gMDtcbn1cbk1sTm9kZUZkLnByb3RvdHlwZS5yZWFkID0gZnVuY3Rpb24ob2Zmc2V0LGEsYnVmX29mZnNldCxsZW4pe1xuICB0cnkge1xuICAgIGlmKHRoaXMuZmxhZ3MuaXNDaGFyYWN0ZXJEZXZpY2UpXG4gICAgICB2YXIgcmVhZCA9IHRoaXMuZnMucmVhZFN5bmModGhpcy5mZCwgYSwgYnVmX29mZnNldCwgbGVuKTtcbiAgICBlbHNlXG4gICAgICB2YXIgcmVhZCA9IHRoaXMuZnMucmVhZFN5bmModGhpcy5mZCwgYSwgYnVmX29mZnNldCwgbGVuLCBvZmZzZXQpO1xuICAgIHJldHVybiByZWFkO1xuICB9IGNhdGNoIChlcnIpIHtcbiAgICBjYW1sX3JhaXNlX3N5c19lcnJvcihlcnIudG9TdHJpbmcoKSk7XG4gIH1cbn1cbk1sTm9kZUZkLnByb3RvdHlwZS5jbG9zZSA9IGZ1bmN0aW9uKCl7XG4gIHRyeSB7XG4gICAgdGhpcy5mcy5jbG9zZVN5bmModGhpcy5mZCk7XG4gICAgcmV0dXJuIDBcbiAgfSBjYXRjaCAoZXJyKSB7XG4gICAgY2FtbF9yYWlzZV9zeXNfZXJyb3IoZXJyLnRvU3RyaW5nKCkpO1xuICB9XG59XG5cblxuLy9Qcm92aWRlczogTWxOb2RlRmRcbi8vSWY6IGJyb3dzZXJcbmZ1bmN0aW9uIE1sTm9kZUZkKCl7XG59XG5cblxuLy9Qcm92aWRlczogY2FtbF9zeXNfb3Blbl9mb3Jfbm9kZVxuLy9SZXF1aXJlczogTWxOb2RlRmRcbmZ1bmN0aW9uIGNhbWxfc3lzX29wZW5fZm9yX25vZGUoZmQsIGZsYWdzKXtcbiAgaWYoZmxhZ3MubmFtZSkge1xuICAgIHRyeSB7XG4gICAgICB2YXIgZnMgPSByZXF1aXJlKFwiZnNcIik7XG4gICAgICB2YXIgZmQyID0gZnMub3BlblN5bmMoZmxhZ3MubmFtZSwgXCJyc1wiKTtcbiAgICAgIHJldHVybiBuZXcgTWxOb2RlRmQoZmQyLCBmbGFncyk7XG4gICAgfSBjYXRjaChlKSB7ICB9XG4gIH1cbiAgcmV0dXJuIG5ldyBNbE5vZGVGZChmZCwgZmxhZ3MpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N5c19vcGVuX2Zvcl9ub2RlXG4vL0lmOiBicm93c2VyXG5mdW5jdGlvbiBjYW1sX3N5c19vcGVuX2Zvcl9ub2RlKGZkLCBmbGFncyl7XG4gIHJldHVybiBudWxsO1xufVxuIiwiLy8gSnNfb2Zfb2NhbWwgcnVudGltZSBzdXBwb3J0XG4vLyBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL2pzX29mX29jYW1sL1xuLy8gQ29weXJpZ2h0IChDKSAyMDE0IErDqXLDtG1lIFZvdWlsbG9uLCBIdWdvIEhldXphcmRcbi8vIExhYm9yYXRvaXJlIFBQUyAtIENOUlMgVW5pdmVyc2l0w6kgUGFyaXMgRGlkZXJvdFxuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4vLyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbi8vIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4vLyBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4vLyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuLy8gTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuLy8gR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4vL1xuLy8gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4vLyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuLy8gRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cblxuLy8vLy8vLy8vLy8vLyBEdW1teSBmaWxlc3lzdGVtXG5cbi8vUHJvdmlkZXM6IGNhbWxfdHJhaWxpbmdfc2xhc2hcbmZ1bmN0aW9uIGNhbWxfdHJhaWxpbmdfc2xhc2gobmFtZSl7XG4gIHJldHVybiAobmFtZS5zbGljZSgtMSkgIT09IFwiL1wiKSA/IChuYW1lICsgXCIvXCIpIDogbmFtZTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9jdXJyZW50X2RpclxuLy9SZXF1aXJlczogY2FtbF90cmFpbGluZ19zbGFzaCwgZnNfbm9kZV9zdXBwb3J0ZWRcbmlmKGZzX25vZGVfc3VwcG9ydGVkICgpICYmIGdsb2JhbFRoaXMucHJvY2VzcyAmJiBnbG9iYWxUaGlzLnByb2Nlc3MuY3dkKVxuICB2YXIgY2FtbF9jdXJyZW50X2RpciA9IGdsb2JhbFRoaXMucHJvY2Vzcy5jd2QoKS5yZXBsYWNlKC9cXFxcL2csJy8nKTtcbmVsc2VcbiAgdmFyIGNhbWxfY3VycmVudF9kaXIgPSAgXCIvc3RhdGljXCI7XG5jYW1sX2N1cnJlbnRfZGlyID0gY2FtbF90cmFpbGluZ19zbGFzaChjYW1sX2N1cnJlbnRfZGlyKTtcblxuLy9Qcm92aWRlczogY2FtbF9nZXRfcm9vdFxuLy9SZXF1aXJlczogcGF0aF9pc19hYnNvbHV0ZVxuZnVuY3Rpb24gY2FtbF9nZXRfcm9vdChwYXRoKXtcbiAgdmFyIHggPSBwYXRoX2lzX2Fic29sdXRlKHBhdGgpO1xuICBpZiAoIXgpIHJldHVybjtcbiAgcmV0dXJuIHhbMF0gKyBcIi9cIn1cblxuLy9Qcm92aWRlczogY2FtbF9yb290XG4vL1JlcXVpcmVzOiBjYW1sX2dldF9yb290LCBjYW1sX2N1cnJlbnRfZGlyLCBjYW1sX2ZhaWx3aXRoXG52YXIgY2FtbF9yb290ID0gY2FtbF9nZXRfcm9vdChjYW1sX2N1cnJlbnRfZGlyKSB8fCBjYW1sX2ZhaWx3aXRoKFwidW5hYmxlIHRvIGNvbXB1dGUgY2FtbF9yb290XCIpO1xuXG5cbi8vUHJvdmlkZXM6IE1sRmlsZVxuZnVuY3Rpb24gTWxGaWxlKCl7ICB9XG5cbi8vUHJvdmlkZXM6IHBhdGhfaXNfYWJzb2x1dGVcbi8vUmVxdWlyZXM6IGZzX25vZGVfc3VwcG9ydGVkXG5mdW5jdGlvbiBtYWtlX3BhdGhfaXNfYWJzb2x1dGUoKSB7XG4gIGZ1bmN0aW9uIHBvc2l4KHBhdGgpIHtcbiAgICBpZiAocGF0aC5jaGFyQXQoMCkgPT09ICcvJykgcmV0dXJuIFtcIlwiLCBwYXRoLnN1YnN0cmluZygxKV07XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgZnVuY3Rpb24gd2luMzIocGF0aCkge1xuICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9ub2RlanMvbm9kZS9ibG9iL2IzZmNjMjQ1ZmIyNTUzOTkwOWVmMWQ1ZWFhMDFkYmY5MmUxNjg2MzMvbGliL3BhdGguanMjTDU2XG4gICAgdmFyIHNwbGl0RGV2aWNlUmUgPSAvXihbYS16QS1aXTp8W1xcXFwvXXsyfVteXFxcXC9dK1tcXFxcL10rW15cXFxcL10rKT8oW1xcXFwvXSk/KFtcXHNcXFNdKj8pJC87XG4gICAgdmFyIHJlc3VsdCA9IHNwbGl0RGV2aWNlUmUuZXhlYyhwYXRoKTtcbiAgICB2YXIgZGV2aWNlID0gcmVzdWx0WzFdIHx8ICcnO1xuICAgIHZhciBpc1VuYyA9IEJvb2xlYW4oZGV2aWNlICYmIGRldmljZS5jaGFyQXQoMSkgIT09ICc6Jyk7XG5cbiAgICAvLyBVTkMgcGF0aHMgYXJlIGFsd2F5cyBhYnNvbHV0ZVxuICAgIGlmIChCb29sZWFuKHJlc3VsdFsyXSB8fCBpc1VuYykpIHtcbiAgICAgIHZhciByb290ID0gKHJlc3VsdFsxXSB8fCAnJyk7XG4gICAgICB2YXIgc2VwID0gKHJlc3VsdFsyXSB8fCAnJyk7XG4gICAgICByZXR1cm4gW3Jvb3QsIHBhdGguc3Vic3RyaW5nKHJvb3QubGVuZ3RoICsgc2VwLmxlbmd0aCldXG4gICAgfVxuICAgIHJldHVybjtcbiAgfVxuICBpZihmc19ub2RlX3N1cHBvcnRlZCAoKSAmJiBnbG9iYWxUaGlzLnByb2Nlc3MgJiYgZ2xvYmFsVGhpcy5wcm9jZXNzLnBsYXRmb3JtKSB7XG4gICAgcmV0dXJuIGdsb2JhbFRoaXMucHJvY2Vzcy5wbGF0Zm9ybSA9PT0gJ3dpbjMyJyA/IHdpbjMyIDogcG9zaXg7XG4gIH1cbiAgZWxzZSByZXR1cm4gcG9zaXhcbn1cbnZhciBwYXRoX2lzX2Fic29sdXRlID0gbWFrZV9wYXRoX2lzX2Fic29sdXRlKCk7XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWFrZV9wYXRoXG4vL1JlcXVpcmVzOiBjYW1sX2N1cnJlbnRfZGlyXG4vL1JlcXVpcmVzOiBjYW1sX2pzc3RyaW5nX29mX3N0cmluZywgcGF0aF9pc19hYnNvbHV0ZVxuZnVuY3Rpb24gY2FtbF9tYWtlX3BhdGggKG5hbWUpIHtcbiAgbmFtZT1jYW1sX2pzc3RyaW5nX29mX3N0cmluZyhuYW1lKTtcbiAgaWYoICFwYXRoX2lzX2Fic29sdXRlKG5hbWUpIClcbiAgICBuYW1lID0gY2FtbF9jdXJyZW50X2RpciArIG5hbWU7XG4gIHZhciBjb21wMCA9IHBhdGhfaXNfYWJzb2x1dGUobmFtZSk7XG4gIHZhciBjb21wID0gY29tcDBbMV0uc3BsaXQoXCIvXCIpO1xuICB2YXIgbmNvbXAgPSBbXVxuICBmb3IodmFyIGkgPSAwOyBpPGNvbXAubGVuZ3RoOyBpKyspe1xuICAgIHN3aXRjaChjb21wW2ldKXtcbiAgICBjYXNlIFwiLi5cIjogaWYobmNvbXAubGVuZ3RoPjEpIG5jb21wLnBvcCgpOyBicmVhaztcbiAgICBjYXNlIFwiLlwiOiBicmVhaztcbiAgICBjYXNlIFwiXCI6IGJyZWFrO1xuICAgIGRlZmF1bHQ6IG5jb21wLnB1c2goY29tcFtpXSk7YnJlYWtcbiAgICB9XG4gIH1cbiAgbmNvbXAudW5zaGlmdChjb21wMFswXSk7XG4gIG5jb21wLm9yaWcgPSBuYW1lO1xuICByZXR1cm4gbmNvbXA7XG59XG5cbi8vUHJvdmlkZXM6anNvb19tb3VudF9wb2ludFxuLy9SZXF1aXJlczogTWxGYWtlRGV2aWNlLCBNbE5vZGVEZXZpY2UsIGNhbWxfcm9vdCwgZnNfbm9kZV9zdXBwb3J0ZWRcbnZhciBqc29vX21vdW50X3BvaW50ID0gW11cbmlmIChmc19ub2RlX3N1cHBvcnRlZCgpKSB7XG4gIGpzb29fbW91bnRfcG9pbnQucHVzaCh7cGF0aDpjYW1sX3Jvb3QsZGV2aWNlOm5ldyBNbE5vZGVEZXZpY2UoY2FtbF9yb290KX0pO1xufSBlbHNlIHtcbiAganNvb19tb3VudF9wb2ludC5wdXNoKHtwYXRoOmNhbWxfcm9vdCxkZXZpY2U6bmV3IE1sRmFrZURldmljZShjYW1sX3Jvb3QpfSk7XG59XG5qc29vX21vdW50X3BvaW50LnB1c2goe3BhdGg6XCIvc3RhdGljL1wiLCBkZXZpY2U6bmV3IE1sRmFrZURldmljZShcIi9zdGF0aWMvXCIpfSk7XG5cbi8vUHJvdmlkZXM6Y2FtbF9saXN0X21vdW50X3BvaW50XG4vL1JlcXVpcmVzOiBqc29vX21vdW50X3BvaW50LCBjYW1sX3N0cmluZ19vZl9qc2J5dGVzXG5mdW5jdGlvbiBjYW1sX2xpc3RfbW91bnRfcG9pbnQoKXtcbiAgdmFyIHByZXYgPSAwXG4gIGZvcih2YXIgaSA9IDA7IGkgPCBqc29vX21vdW50X3BvaW50Lmxlbmd0aDsgaSsrKXtcbiAgICB2YXIgb2xkID0gcHJldjtcbiAgICBwcmV2ID0gWzAsIGNhbWxfc3RyaW5nX29mX2pzYnl0ZXMoanNvb19tb3VudF9wb2ludFtpXS5wYXRoKSwgb2xkXVxuICB9XG4gIHJldHVybiBwcmV2O1xufVxuXG4vL1Byb3ZpZGVzOiByZXNvbHZlX2ZzX2RldmljZVxuLy9SZXF1aXJlczogY2FtbF9tYWtlX3BhdGgsIGpzb29fbW91bnRfcG9pbnQsIGNhbWxfcmFpc2Vfc3lzX2Vycm9yLCBjYW1sX2dldF9yb290LCBNbE5vZGVEZXZpY2UsIGNhbWxfdHJhaWxpbmdfc2xhc2gsIGZzX25vZGVfc3VwcG9ydGVkXG5mdW5jdGlvbiByZXNvbHZlX2ZzX2RldmljZShuYW1lKXtcbiAgdmFyIHBhdGggPSBjYW1sX21ha2VfcGF0aChuYW1lKTtcbiAgdmFyIG5hbWUgPSBwYXRoLmpvaW4oXCIvXCIpO1xuICB2YXIgbmFtZV9zbGFzaCA9IGNhbWxfdHJhaWxpbmdfc2xhc2gobmFtZSk7XG4gIHZhciByZXM7XG4gIGZvcih2YXIgaSA9IDA7IGkgPCBqc29vX21vdW50X3BvaW50Lmxlbmd0aDsgaSsrKSB7XG4gICAgdmFyIG0gPSBqc29vX21vdW50X3BvaW50W2ldO1xuICAgIGlmKG5hbWVfc2xhc2guc2VhcmNoKG0ucGF0aCkgPT0gMFxuICAgICAgICYmICghcmVzIHx8IHJlcy5wYXRoLmxlbmd0aCA8IG0ucGF0aC5sZW5ndGgpKVxuICAgICAgcmVzID0ge3BhdGg6bS5wYXRoLGRldmljZTptLmRldmljZSxyZXN0Om5hbWUuc3Vic3RyaW5nKG0ucGF0aC5sZW5ndGgsbmFtZS5sZW5ndGgpfTtcbiAgfVxuICBpZiggIXJlcyAmJiBmc19ub2RlX3N1cHBvcnRlZCgpKSB7XG4gICAgdmFyIHJvb3QgPSBjYW1sX2dldF9yb290KG5hbWUpO1xuICAgIGlmIChyb290ICYmIHJvb3QubWF0Y2goL15bYS16QS1aXTpcXC8kLykpe1xuICAgICAgdmFyIG0gPSB7cGF0aDpyb290LGRldmljZTpuZXcgTWxOb2RlRGV2aWNlKHJvb3QpfTtcbiAgICAgIGpzb29fbW91bnRfcG9pbnQucHVzaChtKTtcbiAgICAgIHJlcyA9IHtwYXRoOm0ucGF0aCxkZXZpY2U6bS5kZXZpY2UscmVzdDpuYW1lLnN1YnN0cmluZyhtLnBhdGgubGVuZ3RoLG5hbWUubGVuZ3RoKX07XG4gICAgfVxuICB9XG4gIGlmKCByZXMgKSByZXR1cm4gcmVzO1xuICBjYW1sX3JhaXNlX3N5c19lcnJvcihcIm5vIGRldmljZSBmb3VuZCBmb3IgXCIgKyBuYW1lX3NsYXNoKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tb3VudF9hdXRvbG9hZFxuLy9SZXF1aXJlczogTWxGYWtlRGV2aWNlLCBjYW1sX21ha2VfcGF0aCwganNvb19tb3VudF9wb2ludCwgY2FtbF90cmFpbGluZ19zbGFzaFxuZnVuY3Rpb24gY2FtbF9tb3VudF9hdXRvbG9hZChuYW1lLGYpe1xuICB2YXIgcGF0aCA9IGNhbWxfbWFrZV9wYXRoKG5hbWUpO1xuICB2YXIgbmFtZSA9IGNhbWxfdHJhaWxpbmdfc2xhc2gocGF0aC5qb2luKFwiL1wiKSk7XG4gIGpzb29fbW91bnRfcG9pbnQucHVzaCh7cGF0aDpuYW1lLGRldmljZTpuZXcgTWxGYWtlRGV2aWNlKG5hbWUsZil9KVxuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF91bm1vdW50XG4vL1JlcXVpcmVzOiBqc29vX21vdW50X3BvaW50LCBjYW1sX21ha2VfcGF0aCwgY2FtbF90cmFpbGluZ19zbGFzaFxuZnVuY3Rpb24gY2FtbF91bm1vdW50KG5hbWUpe1xuICB2YXIgcGF0aCA9IGNhbWxfbWFrZV9wYXRoKG5hbWUpO1xuICB2YXIgbmFtZSA9IGNhbWxfdHJhaWxpbmdfc2xhc2gocGF0aC5qb2luKFwiL1wiKSk7XG4gIHZhciBpZHggPSAtMTtcbiAgZm9yKHZhciBpID0gMDsgaSA8IGpzb29fbW91bnRfcG9pbnQubGVuZ3RoOyBpKyspXG4gICAgaWYoanNvb19tb3VudF9wb2ludFtpXS5wYXRoID09IG5hbWUpIGlkeCA9IGk7XG4gIGlmKGlkeCA+IC0xKSBqc29vX21vdW50X3BvaW50LnNwbGljZShpZHgsMSk7XG4gIHJldHVybiAwXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3lzX2dldGN3ZFxuLy9SZXF1aXJlczogY2FtbF9jdXJyZW50X2RpciwgY2FtbF9zdHJpbmdfb2ZfanNieXRlc1xuZnVuY3Rpb24gY2FtbF9zeXNfZ2V0Y3dkKCkge1xuICByZXR1cm4gY2FtbF9zdHJpbmdfb2ZfanNieXRlcyhjYW1sX2N1cnJlbnRfZGlyKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zeXNfY2hkaXJcbi8vUmVxdWlyZXM6IGNhbWxfY3VycmVudF9kaXIsIGNhbWxfcmFpc2Vfbm9fc3VjaF9maWxlLCByZXNvbHZlX2ZzX2RldmljZSwgY2FtbF90cmFpbGluZ19zbGFzaCwgY2FtbF9qc2J5dGVzX29mX3N0cmluZ1xuZnVuY3Rpb24gY2FtbF9zeXNfY2hkaXIoZGlyKSB7XG4gIHZhciByb290ID0gcmVzb2x2ZV9mc19kZXZpY2UoZGlyKTtcbiAgaWYocm9vdC5kZXZpY2UuZXhpc3RzKHJvb3QucmVzdCkpIHtcbiAgICBpZihyb290LnJlc3QpIGNhbWxfY3VycmVudF9kaXIgPSBjYW1sX3RyYWlsaW5nX3NsYXNoKHJvb3QucGF0aCArIHJvb3QucmVzdCk7XG4gICAgZWxzZSBjYW1sX2N1cnJlbnRfZGlyID0gcm9vdC5wYXRoO1xuICAgIHJldHVybiAwO1xuICB9XG4gIGVsc2Uge1xuICAgIGNhbWxfcmFpc2Vfbm9fc3VjaF9maWxlKGNhbWxfanNieXRlc19vZl9zdHJpbmcoZGlyKSk7XG4gIH1cbn1cblxuLy9Qcm92aWRlczogY2FtbF9yYWlzZV9ub19zdWNoX2ZpbGVcbi8vUmVxdWlyZXM6IGNhbWxfcmFpc2Vfc3lzX2Vycm9yXG5mdW5jdGlvbiBjYW1sX3JhaXNlX25vX3N1Y2hfZmlsZShuYW1lKXtcbiAgY2FtbF9yYWlzZV9zeXNfZXJyb3IgKG5hbWUgKyBcIjogTm8gc3VjaCBmaWxlIG9yIGRpcmVjdG9yeVwiKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9yYWlzZV9ub3RfYV9kaXJcbi8vUmVxdWlyZXM6IGNhbWxfcmFpc2Vfc3lzX2Vycm9yXG5mdW5jdGlvbiBjYW1sX3JhaXNlX25vdF9hX2RpcihuYW1lKXtcbiAgY2FtbF9yYWlzZV9zeXNfZXJyb3IgKG5hbWUgKyBcIjogTm90IGEgZGlyZWN0b3J5XCIpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N5c19maWxlX2V4aXN0c1xuLy9SZXF1aXJlczogcmVzb2x2ZV9mc19kZXZpY2VcbmZ1bmN0aW9uIGNhbWxfc3lzX2ZpbGVfZXhpc3RzIChuYW1lKSB7XG4gIHZhciByb290ID0gcmVzb2x2ZV9mc19kZXZpY2UobmFtZSk7XG4gIHJldHVybiByb290LmRldmljZS5leGlzdHMocm9vdC5yZXN0KTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zeXNfcmVhZF9kaXJlY3Rvcnlcbi8vUmVxdWlyZXM6IGNhbWxfc3RyaW5nX29mX2pzYnl0ZXNcbi8vUmVxdWlyZXM6IGNhbWxfcmFpc2Vfbm90X2FfZGlyLCByZXNvbHZlX2ZzX2RldmljZVxuZnVuY3Rpb24gY2FtbF9zeXNfcmVhZF9kaXJlY3RvcnkobmFtZSl7XG4gIHZhciByb290ID0gcmVzb2x2ZV9mc19kZXZpY2UobmFtZSk7XG4gIHZhciBhID0gcm9vdC5kZXZpY2UucmVhZGRpcihyb290LnJlc3QpO1xuICB2YXIgbCA9IG5ldyBBcnJheShhLmxlbmd0aCArIDEpO1xuICBsWzBdID0gMDtcbiAgZm9yKHZhciBpPTA7aTxhLmxlbmd0aDtpKyspXG4gICAgbFtpKzFdID0gY2FtbF9zdHJpbmdfb2ZfanNieXRlcyhhW2ldKTtcbiAgcmV0dXJuIGw7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3lzX3JlbW92ZVxuLy9SZXF1aXJlczogY2FtbF9yYWlzZV9ub19zdWNoX2ZpbGUsIHJlc29sdmVfZnNfZGV2aWNlLCBjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nXG5mdW5jdGlvbiBjYW1sX3N5c19yZW1vdmUobmFtZSl7XG4gIHZhciByb290ID0gcmVzb2x2ZV9mc19kZXZpY2UobmFtZSk7XG4gIHZhciBvayA9IHJvb3QuZGV2aWNlLnVubGluayhyb290LnJlc3QpO1xuICBpZihvayA9PSAwKSBjYW1sX3JhaXNlX25vX3N1Y2hfZmlsZShjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nKG5hbWUpKTtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3lzX2lzX2RpcmVjdG9yeVxuLy9SZXF1aXJlczogcmVzb2x2ZV9mc19kZXZpY2VcbmZ1bmN0aW9uIGNhbWxfc3lzX2lzX2RpcmVjdG9yeShuYW1lKXtcbiAgdmFyIHJvb3QgPSByZXNvbHZlX2ZzX2RldmljZShuYW1lKTtcbiAgdmFyIGEgPSByb290LmRldmljZS5pc19kaXIocm9vdC5yZXN0KTtcbiAgcmV0dXJuIGE/MTowO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N5c19yZW5hbWVcbi8vUmVxdWlyZXM6IGNhbWxfZmFpbHdpdGgsIHJlc29sdmVfZnNfZGV2aWNlXG5mdW5jdGlvbiBjYW1sX3N5c19yZW5hbWUobyxuKXtcbiAgdmFyIG9fcm9vdCA9IHJlc29sdmVfZnNfZGV2aWNlKG8pO1xuICB2YXIgbl9yb290ID0gcmVzb2x2ZV9mc19kZXZpY2Uobik7XG4gIGlmKG9fcm9vdC5kZXZpY2UgIT0gbl9yb290LmRldmljZSlcbiAgICBjYW1sX2ZhaWx3aXRoKFwiY2FtbF9zeXNfcmVuYW1lOiBjYW5ub3QgbW92ZSBmaWxlIGJldHdlZW4gdHdvIGZpbGVzeXN0ZW1cIik7XG4gIGlmKCFvX3Jvb3QuZGV2aWNlLnJlbmFtZSlcbiAgICBjYW1sX2ZhaWx3aXRoKFwiY2FtbF9zeXNfcmVuYW1lOiBubyBpbXBsZW1lbnRlZFwiKTtcbiAgb19yb290LmRldmljZS5yZW5hbWUob19yb290LnJlc3QsIG5fcm9vdC5yZXN0KTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zeXNfbWtkaXJcbi8vUmVxdWlyZXM6IHJlc29sdmVfZnNfZGV2aWNlLCBjYW1sX3JhaXNlX3N5c19lcnJvclxuZnVuY3Rpb24gY2FtbF9zeXNfbWtkaXIobmFtZSwgcGVybSl7XG4gIHZhciByb290ID0gcmVzb2x2ZV9mc19kZXZpY2UobmFtZSk7XG4gIHJvb3QuZGV2aWNlLm1rZGlyKHJvb3QucmVzdCxwZXJtKTtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3lzX3JtZGlyXG4vL1JlcXVpcmVzOiByZXNvbHZlX2ZzX2RldmljZSwgY2FtbF9yYWlzZV9zeXNfZXJyb3IsIGNhbWxfcmFpc2Vfbm90X2FfZGlyXG5mdW5jdGlvbiBjYW1sX3N5c19ybWRpcihuYW1lKXtcbiAgdmFyIHJvb3QgPSByZXNvbHZlX2ZzX2RldmljZShuYW1lKTtcbiAgcm9vdC5kZXZpY2Uucm1kaXIocm9vdC5yZXN0KTtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmFfbWFwX2ZpbGVcbi8vUmVxdWlyZXM6IGNhbWxfZmFpbHdpdGhcbmZ1bmN0aW9uIGNhbWxfYmFfbWFwX2ZpbGUodmZkLCBraW5kLCBsYXlvdXQsIHNoYXJlZCwgZGltcywgcG9zKSB7XG4gIC8vIHZhciBkYXRhID0gY2FtbF9zeXNfZmRzW3ZmZF07XG4gIGNhbWxfZmFpbHdpdGgoXCJjYW1sX2JhX21hcF9maWxlIG5vdCBpbXBsZW1lbnRlZFwiKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9iYV9tYXBfZmlsZV9ieXRlY29kZVxuLy9SZXF1aXJlczogY2FtbF9iYV9tYXBfZmlsZVxuZnVuY3Rpb24gY2FtbF9iYV9tYXBfZmlsZV9ieXRlY29kZShhcmd2LGFyZ24pe1xuICByZXR1cm4gY2FtbF9iYV9tYXBfZmlsZShhcmd2WzBdLGFyZ3ZbMV0sYXJndlsyXSxhcmd2WzNdLGFyZ3ZbNF0sYXJndls1XSk7XG59XG5cbi8vUHJvdmlkZXM6IGpzb29fY3JlYXRlX2ZpbGVfZXh0ZXJuXG5mdW5jdGlvbiBqc29vX2NyZWF0ZV9maWxlX2V4dGVybihuYW1lLGNvbnRlbnQpe1xuICBpZihnbG9iYWxUaGlzLmpzb29fY3JlYXRlX2ZpbGUpXG4gICAgZ2xvYmFsVGhpcy5qc29vX2NyZWF0ZV9maWxlKG5hbWUsY29udGVudCk7XG4gIGVsc2Uge1xuICAgIGlmKCFnbG9iYWxUaGlzLmNhbWxfZnNfdG1wKSBnbG9iYWxUaGlzLmNhbWxfZnNfdG1wID0gW107XG4gICAgZ2xvYmFsVGhpcy5jYW1sX2ZzX3RtcC5wdXNoKHtuYW1lOm5hbWUsY29udGVudDpjb250ZW50fSk7XG4gIH1cbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZnNfaW5pdFxuLy9SZXF1aXJlczoganNvb19jcmVhdGVfZmlsZVxuZnVuY3Rpb24gY2FtbF9mc19pbml0ICgpe1xuICB2YXIgdG1wPWdsb2JhbFRoaXMuY2FtbF9mc190bXBcbiAgaWYodG1wKXtcbiAgICBmb3IodmFyIGkgPSAwOyBpIDwgdG1wLmxlbmd0aDsgaSsrKXtcbiAgICAgIGpzb29fY3JlYXRlX2ZpbGUodG1wW2ldLm5hbWUsdG1wW2ldLmNvbnRlbnQpO1xuICAgIH1cbiAgfVxuICBnbG9iYWxUaGlzLmpzb29fY3JlYXRlX2ZpbGUgPSBqc29vX2NyZWF0ZV9maWxlO1xuICBnbG9iYWxUaGlzLmNhbWxfZnNfdG1wID0gW107XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2NyZWF0ZV9maWxlXG4vL1JlcXVpcmVzOiBjYW1sX2ZhaWx3aXRoLCByZXNvbHZlX2ZzX2RldmljZVxuZnVuY3Rpb24gY2FtbF9jcmVhdGVfZmlsZShuYW1lLGNvbnRlbnQpIHtcbiAgdmFyIHJvb3QgPSByZXNvbHZlX2ZzX2RldmljZShuYW1lKTtcbiAgaWYoISByb290LmRldmljZS5yZWdpc3RlcikgY2FtbF9mYWlsd2l0aChcImNhbm5vdCByZWdpc3RlciBmaWxlXCIpO1xuICByb290LmRldmljZS5yZWdpc3Rlcihyb290LnJlc3QsY29udGVudCk7XG4gIHJldHVybiAwO1xufVxuXG5cbi8vUHJvdmlkZXM6IGpzb29fY3JlYXRlX2ZpbGVcbi8vUmVxdWlyZXM6IGNhbWxfY3JlYXRlX2ZpbGUsIGNhbWxfc3RyaW5nX29mX2pzYnl0ZXNcbmZ1bmN0aW9uIGpzb29fY3JlYXRlX2ZpbGUobmFtZSxjb250ZW50KSB7XG4gIHZhciBuYW1lID0gY2FtbF9zdHJpbmdfb2ZfanNieXRlcyhuYW1lKTtcbiAgdmFyIGNvbnRlbnQgPSBjYW1sX3N0cmluZ19vZl9qc2J5dGVzKGNvbnRlbnQpO1xuICByZXR1cm4gY2FtbF9jcmVhdGVfZmlsZShuYW1lLCBjb250ZW50KTtcbn1cblxuXG4vL1Byb3ZpZGVzOiBjYW1sX3JlYWRfZmlsZV9jb250ZW50XG4vL1JlcXVpcmVzOiByZXNvbHZlX2ZzX2RldmljZSwgY2FtbF9yYWlzZV9ub19zdWNoX2ZpbGUsIGNhbWxfc3RyaW5nX29mX2FycmF5XG4vL1JlcXVpcmVzOiBjYW1sX3N0cmluZ19vZl9qc2J5dGVzLCBjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nXG5mdW5jdGlvbiBjYW1sX3JlYWRfZmlsZV9jb250ZW50IChuYW1lKSB7XG4gIHZhciBuYW1lID0gKHR5cGVvZiBuYW1lID09IFwic3RyaW5nXCIpP2NhbWxfc3RyaW5nX29mX2pzYnl0ZXMobmFtZSk6bmFtZTtcbiAgdmFyIHJvb3QgPSByZXNvbHZlX2ZzX2RldmljZShuYW1lKTtcbiAgaWYocm9vdC5kZXZpY2UuZXhpc3RzKHJvb3QucmVzdCkpIHtcbiAgICB2YXIgZmlsZSA9IHJvb3QuZGV2aWNlLm9wZW4ocm9vdC5yZXN0LHtyZG9ubHk6MX0pO1xuICAgIHZhciBsZW4gID0gZmlsZS5sZW5ndGgoKTtcbiAgICB2YXIgYnVmID0gbmV3IFVpbnQ4QXJyYXkobGVuKTtcbiAgICBmaWxlLnJlYWQoMCxidWYsMCxsZW4pO1xuICAgIHJldHVybiBjYW1sX3N0cmluZ19vZl9hcnJheShidWYpXG4gIH1cbiAgY2FtbF9yYWlzZV9ub19zdWNoX2ZpbGUoY2FtbF9qc2J5dGVzX29mX3N0cmluZyhuYW1lKSk7XG59XG4iLCIvL1Byb3ZpZGVzOiBjYW1sX3VuaXhfZ2V0dGltZW9mZGF5XG4vL0FsaWFzOiB1bml4X2dldHRpbWVvZmRheVxuZnVuY3Rpb24gY2FtbF91bml4X2dldHRpbWVvZmRheSAoKSB7XG4gIHJldHVybiAobmV3IERhdGUoKSkuZ2V0VGltZSgpIC8gMTAwMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF91bml4X3RpbWVcbi8vUmVxdWlyZXM6IGNhbWxfdW5peF9nZXR0aW1lb2ZkYXlcbi8vQWxpYXM6IHVuaXhfdGltZVxuZnVuY3Rpb24gY2FtbF91bml4X3RpbWUgKCkge1xuICByZXR1cm4gTWF0aC5mbG9vcihjYW1sX3VuaXhfZ2V0dGltZW9mZGF5ICgpKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF91bml4X2dtdGltZVxuLy9BbGlhczogdW5peF9nbXRpbWVcbmZ1bmN0aW9uIGNhbWxfdW5peF9nbXRpbWUgKHQpIHtcbiAgdmFyIGQgPSBuZXcgRGF0ZSAodCAqIDEwMDApO1xuICB2YXIgZF9udW0gPSBkLmdldFRpbWUoKTtcbiAgdmFyIGphbnVhcnlmaXJzdCA9IChuZXcgRGF0ZShEYXRlLlVUQyhkLmdldFVUQ0Z1bGxZZWFyKCksIDAsIDEpKSkuZ2V0VGltZSgpO1xuICB2YXIgZG95ID0gTWF0aC5mbG9vcigoZF9udW0gLSBqYW51YXJ5Zmlyc3QpIC8gODY0MDAwMDApO1xuICByZXR1cm4gQkxPQ0soMCwgZC5nZXRVVENTZWNvbmRzKCksIGQuZ2V0VVRDTWludXRlcygpLCBkLmdldFVUQ0hvdXJzKCksXG4gICAgICAgICAgICAgICBkLmdldFVUQ0RhdGUoKSwgZC5nZXRVVENNb250aCgpLCBkLmdldFVUQ0Z1bGxZZWFyKCkgLSAxOTAwLFxuICAgICAgICAgICAgICAgZC5nZXRVVENEYXkoKSwgZG95LFxuICAgICAgICAgICAgICAgZmFsc2UgfCAwIC8qIGZvciBVVEMgZGF5bGlnaHQgc2F2aW5ncyB0aW1lIGlzIGZhbHNlICovKVxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3VuaXhfbG9jYWx0aW1lXG4vL0FsaWFzOiB1bml4X2xvY2FsdGltZVxuZnVuY3Rpb24gY2FtbF91bml4X2xvY2FsdGltZSAodCkge1xuICB2YXIgZCA9IG5ldyBEYXRlICh0ICogMTAwMCk7XG4gIHZhciBkX251bSA9IGQuZ2V0VGltZSgpO1xuICB2YXIgamFudWFyeWZpcnN0ID0gKG5ldyBEYXRlKGQuZ2V0RnVsbFllYXIoKSwgMCwgMSkpLmdldFRpbWUoKTtcbiAgdmFyIGRveSA9IE1hdGguZmxvb3IoKGRfbnVtIC0gamFudWFyeWZpcnN0KSAvIDg2NDAwMDAwKTtcbiAgdmFyIGphbiA9IG5ldyBEYXRlKGQuZ2V0RnVsbFllYXIoKSwgMCwgMSk7XG4gIHZhciBqdWwgPSBuZXcgRGF0ZShkLmdldEZ1bGxZZWFyKCksIDYsIDEpO1xuICB2YXIgc3RkVGltZXpvbmVPZmZzZXQgPSBNYXRoLm1heChqYW4uZ2V0VGltZXpvbmVPZmZzZXQoKSwganVsLmdldFRpbWV6b25lT2Zmc2V0KCkpO1xuICByZXR1cm4gQkxPQ0soMCwgZC5nZXRTZWNvbmRzKCksIGQuZ2V0TWludXRlcygpLCBkLmdldEhvdXJzKCksXG4gICAgICAgICAgICAgICBkLmdldERhdGUoKSwgZC5nZXRNb250aCgpLCBkLmdldEZ1bGxZZWFyKCkgLSAxOTAwLFxuICAgICAgICAgICAgICAgZC5nZXREYXkoKSwgZG95LFxuICAgICAgICAgICAgICAgKGQuZ2V0VGltZXpvbmVPZmZzZXQoKSA8IHN0ZFRpbWV6b25lT2Zmc2V0KSB8IDAgLyogZGF5bGlnaHQgc2F2aW5ncyB0aW1lICBmaWVsZC4gKi8pXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfdW5peF9ta3RpbWVcbi8vUmVxdWlyZXM6IGNhbWxfdW5peF9sb2NhbHRpbWVcbi8vQWxpYXM6IHVuaXhfbWt0aW1lXG5mdW5jdGlvbiBjYW1sX3VuaXhfbWt0aW1lKHRtKXtcbiAgdmFyIGQgPSAobmV3IERhdGUodG1bNl0rMTkwMCx0bVs1XSx0bVs0XSx0bVszXSx0bVsyXSx0bVsxXSkpLmdldFRpbWUoKTtcbiAgdmFyIHQgPSBNYXRoLmZsb29yKGQgLyAxMDAwKTtcbiAgdmFyIHRtMiA9IGNhbWxfdW5peF9sb2NhbHRpbWUodCk7XG4gIHJldHVybiBCTE9DSygwLHQsdG0yKTtcbn1cbi8vUHJvdmlkZXM6IGNhbWxfdW5peF9zdGFydHVwIGNvbnN0XG4vL0FsaWFzOiB3aW5fc3RhcnR1cFxuZnVuY3Rpb24gY2FtbF91bml4X3N0YXJ0dXAoKSB7fVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3VuaXhfY2xlYW51cCBjb25zdFxuLy9BbGlhczogd2luX2NsZWFudXBcbmZ1bmN0aW9uIGNhbWxfdW5peF9jbGVhbnVwKCkge31cblxuLy9Qcm92aWRlczogY2FtbF91bml4X2ZpbGVkZXNjcl9vZl9mZCBjb25zdFxuLy9BbGlhczogd2luX2hhbmRsZV9mZFxuZnVuY3Rpb24gY2FtbF91bml4X2ZpbGVkZXNjcl9vZl9mZCh4KSB7cmV0dXJuIHg7fVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3VuaXhfaXNhdHR5XG4vL1JlcXVpcmVzOiBmc19ub2RlX3N1cHBvcnRlZFxuLy9BbGlhczogdW5peF9pc2F0dHlcbmZ1bmN0aW9uIGNhbWxfdW5peF9pc2F0dHkoZmlsZURlc2NyaXB0b3IpIHtcbiAgaWYoZnNfbm9kZV9zdXBwb3J0ZWQoKSkge1xuICAgIHZhciB0dHkgPSByZXF1aXJlKCd0dHknKTtcbiAgICByZXR1cm4gdHR5LmlzYXR0eShmaWxlRGVzY3JpcHRvcik/MTowO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiAwO1xuICB9XG59XG5cblxuLy9Qcm92aWRlczogY2FtbF91bml4X2lzYXR0eVxuLy9BbGlhczogdW5peF9pc2F0dHlcbi8vSWY6IGJyb3dzZXJcbmZ1bmN0aW9uIGNhbWxfdW5peF9pc2F0dHkoZmlsZURlc2NyaXB0b3IpIHtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IG1ha2VfdW5peF9lcnJfYXJnc1xuLy9SZXF1aXJlczogY2FtbF9zdHJpbmdfb2ZfanNzdHJpbmdcbnZhciB1bml4X2Vycm9yID0gW1xuICAvKiA9PT1Vbml4LmVycm9yPT09XG4gICAqXG4gICAqIFRoaXMgYXJyYXkgaXMgaW4gb3JkZXIgb2YgdGhlIHZhcmlhbnQgaW4gT0NhbWxcbiAgICovXG4gIFwiRTJCSUdcIiwgXCJFQUNDRVNcIiwgXCJFQUdBSU5cIiwgXCJFQkFERlwiLCBcIkVCVVNZXCIsIFwiRUNISUxEXCIsIFwiRURFQURMS1wiLCBcIkVET01cIixcbiAgXCJFRVhJU1RcIiwgXCJFRkFVTFRcIiwgXCJFRkJJR1wiLCBcIkVJTlRSXCIsIFwiRUlOVkFMXCIsIFwiRUlPXCIsIFwiRUlTRElSXCIsIFwiRU1GSUxFXCIsXG4gIFwiRU1MSU5LXCIsIFwiRU5BTUVUT09MT05HXCIsIFwiRU5GSUxFXCIsIFwiRU5PREVWXCIsIFwiRU5PRU5UXCIsIFwiRU5PRVhFQ1wiLCBcIkVOT0xDS1wiLFxuICBcIkVOT01FTVwiLCBcIkVOT1NQQ1wiLCBcIkVOT1NZU1wiLCBcIkVOT1RESVJcIiwgXCJFTk9URU1QVFlcIiwgXCJFTk9UVFlcIiwgXCJFTlhJT1wiLFxuICBcIkVQRVJNXCIsIFwiRVBJUEVcIiwgXCJFUkFOR0VcIiwgXCJFUk9GU1wiLCBcIkVTUElQRVwiLCBcIkVTUkNIXCIsIFwiRVhERVZcIiwgXCJFV09VTERCTE9DS1wiLFxuICBcIkVJTlBST0dSRVNTXCIsIFwiRUFMUkVBRFlcIiwgXCJFTk9UU09DS1wiLCBcIkVERVNUQUREUlJFUVwiLCBcIkVNU0dTSVpFXCIsXG4gIFwiRVBST1RPVFlQRVwiLCBcIkVOT1BST1RPT1BUXCIsIFwiRVBST1RPTk9TVVBQT1JUXCIsIFwiRVNPQ0tUTk9TVVBQT1JUXCIsXG4gIFwiRU9QTk9UU1VQUFwiLCBcIkVQRk5PU1VQUE9SVFwiLCBcIkVBRk5PU1VQUE9SVFwiLCBcIkVBRERSSU5VU0VcIiwgXCJFQUREUk5PVEFWQUlMXCIsXG4gIFwiRU5FVERPV05cIiwgXCJFTkVUVU5SRUFDSFwiLCBcIkVORVRSRVNFVFwiLCBcIkVDT05OQUJPUlRFRFwiLCBcIkVDT05OUkVTRVRcIiwgXCJFTk9CVUZTXCIsXG4gIFwiRUlTQ09OTlwiLCBcIkVOT1RDT05OXCIsIFwiRVNIVVRET1dOXCIsIFwiRVRPT01BTllSRUZTXCIsIFwiRVRJTUVET1VUXCIsIFwiRUNPTk5SRUZVU0VEXCIsXG4gIFwiRUhPU1RET1dOXCIsIFwiRUhPU1RVTlJFQUNIXCIsIFwiRUxPT1BcIiwgXCJFT1ZFUkZMT1dcIlxuXTtcbmZ1bmN0aW9uIG1ha2VfdW5peF9lcnJfYXJncyhjb2RlLCBzeXNjYWxsLCBwYXRoLCBlcnJubykge1xuICB2YXIgdmFyaWFudCA9IHVuaXhfZXJyb3IuaW5kZXhPZihjb2RlKTtcbiAgaWYgKHZhcmlhbnQgPCAwKSB7XG4gICAgLy8gRGVmYXVsdCBpZiB1bmRlZmluZWRcbiAgICBpZiAoZXJybm8gPT0gbnVsbCkge1xuICAgICAgZXJybm8gPSAtOTk5OVxuICAgIH1cbiAgICAvLyBJZiBub25lIG9mIHRoZSBhYm92ZSB2YXJpYW50cywgZmFsbGJhY2sgdG8gRVVOS05PV05FUlIoaW50KVxuICAgIHZhcmlhbnQgPSBCTE9DSygwLCBlcnJubyk7XG4gIH1cbiAgdmFyIGFyZ3MgPSBbXG4gICAgdmFyaWFudCxcbiAgICBjYW1sX3N0cmluZ19vZl9qc3N0cmluZyhzeXNjYWxsIHx8IFwiXCIpLFxuICAgIGNhbWxfc3RyaW5nX29mX2pzc3RyaW5nKHBhdGggfHwgXCJcIilcbiAgXTtcbiAgcmV0dXJuIGFyZ3M7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfdW5peF9zdGF0XG4vL1JlcXVpcmVzOiByZXNvbHZlX2ZzX2RldmljZSwgY2FtbF9mYWlsd2l0aFxuLy9BbGlhczogdW5peF9zdGF0XG5mdW5jdGlvbiBjYW1sX3VuaXhfc3RhdChuYW1lKSB7XG4gIHZhciByb290ID0gcmVzb2x2ZV9mc19kZXZpY2UobmFtZSk7XG4gIGlmICghcm9vdC5kZXZpY2Uuc3RhdCkge1xuICAgIGNhbWxfZmFpbHdpdGgoXCJjYW1sX3VuaXhfc3RhdDogbm90IGltcGxlbWVudGVkXCIpO1xuICB9XG4gIHJldHVybiByb290LmRldmljZS5zdGF0KHJvb3QucmVzdCwgLyogcmFpc2UgVW5peF9lcnJvciAqLyB0cnVlKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF91bml4X3N0YXRfNjRcbi8vUmVxdWlyZXM6IGNhbWxfdW5peF9zdGF0LCBjYW1sX2ludDY0X29mX2ludDMyXG4vL0FsaWFzOiB1bml4X3N0YXRfNjRcbmZ1bmN0aW9uIGNhbWxfdW5peF9zdGF0XzY0KG5hbWUpIHtcbiAgdmFyIHIgPSBjYW1sX3VuaXhfc3RhdChuYW1lKTtcbiAgcls5XSA9IGNhbWxfaW50NjRfb2ZfaW50MzIocls5XSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfdW5peF9sc3RhdFxuLy9SZXF1aXJlczogcmVzb2x2ZV9mc19kZXZpY2UsIGNhbWxfZmFpbHdpdGhcbi8vQWxpYXM6IHVuaXhfbHN0YXRcbmZ1bmN0aW9uIGNhbWxfdW5peF9sc3RhdChuYW1lKSB7XG4gIHZhciByb290ID0gcmVzb2x2ZV9mc19kZXZpY2UobmFtZSk7XG4gIGlmICghcm9vdC5kZXZpY2UubHN0YXQpIHtcbiAgICBjYW1sX2ZhaWx3aXRoKFwiY2FtbF91bml4X2xzdGF0OiBub3QgaW1wbGVtZW50ZWRcIik7XG4gIH1cbiAgcmV0dXJuIHJvb3QuZGV2aWNlLmxzdGF0KHJvb3QucmVzdCwgLyogcmFpc2UgVW5peF9lcnJvciAqLyB0cnVlKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF91bml4X2xzdGF0XzY0XG4vL1JlcXVpcmVzOiBjYW1sX3VuaXhfbHN0YXQsIGNhbWxfaW50NjRfb2ZfaW50MzJcbi8vQWxpYXM6IHVuaXhfbHN0YXRfNjRcbmZ1bmN0aW9uIGNhbWxfdW5peF9sc3RhdF82NChuYW1lKSB7XG4gIHZhciByID0gY2FtbF91bml4X2xzdGF0KG5hbWUpO1xuICByWzldID0gY2FtbF9pbnQ2NF9vZl9pbnQzMihyWzldKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF91bml4X21rZGlyXG4vL1JlcXVpcmVzOiByZXNvbHZlX2ZzX2RldmljZSwgY2FtbF9mYWlsd2l0aFxuLy9BbGlhczogdW5peF9ta2RpclxuZnVuY3Rpb24gY2FtbF91bml4X21rZGlyKG5hbWUsIHBlcm0pIHtcbiAgdmFyIHJvb3QgPSByZXNvbHZlX2ZzX2RldmljZShuYW1lKTtcbiAgaWYgKCFyb290LmRldmljZS5ta2Rpcikge1xuICAgIGNhbWxfZmFpbHdpdGgoXCJjYW1sX3VuaXhfbWtkaXI6IG5vdCBpbXBsZW1lbnRlZFwiKTtcbiAgfVxuICByZXR1cm4gcm9vdC5kZXZpY2UubWtkaXIocm9vdC5yZXN0LCBwZXJtLCAvKiByYWlzZSBVbml4X2Vycm9yICovIHRydWUpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3VuaXhfcm1kaXJcbi8vUmVxdWlyZXM6IHJlc29sdmVfZnNfZGV2aWNlLCBjYW1sX2ZhaWx3aXRoXG4vL0FsaWFzOiB1bml4X3JtZGlyXG5mdW5jdGlvbiBjYW1sX3VuaXhfcm1kaXIobmFtZSkge1xuICB2YXIgcm9vdCA9IHJlc29sdmVfZnNfZGV2aWNlKG5hbWUpO1xuICBpZiAoIXJvb3QuZGV2aWNlLnJtZGlyKSB7XG4gICAgY2FtbF9mYWlsd2l0aChcImNhbWxfdW5peF9ybWRpcjogbm90IGltcGxlbWVudGVkXCIpO1xuICB9XG4gIHJldHVybiByb290LmRldmljZS5ybWRpcihyb290LnJlc3QsIC8qIHJhaXNlIFVuaXhfZXJyb3IgKi8gdHJ1ZSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfdW5peF9zeW1saW5rXG4vL1JlcXVpcmVzOiByZXNvbHZlX2ZzX2RldmljZSwgY2FtbF9mYWlsd2l0aFxuLy9BbGlhczogdW5peF9zeW1saW5rXG5mdW5jdGlvbiBjYW1sX3VuaXhfc3ltbGluayh0b19kaXIsIHNyYywgZHN0KSB7XG4gIHZhciBzcmNfcm9vdCA9IHJlc29sdmVfZnNfZGV2aWNlKHNyYyk7XG4gIHZhciBkc3Rfcm9vdCA9IHJlc29sdmVfZnNfZGV2aWNlKGRzdCk7XG4gIGlmKHNyY19yb290LmRldmljZSAhPSBkc3Rfcm9vdC5kZXZpY2UpXG4gICAgY2FtbF9mYWlsd2l0aChcImNhbWxfdW5peF9zeW1saW5rOiBjYW5ub3Qgc3ltbGluayBiZXR3ZWVuIHR3byBmaWxlc3lzdGVtc1wiKTtcbiAgaWYgKCFzcmNfcm9vdC5kZXZpY2Uuc3ltbGluaykge1xuICAgIGNhbWxfZmFpbHdpdGgoXCJjYW1sX3VuaXhfc3ltbGluazogbm90IGltcGxlbWVudGVkXCIpO1xuICB9XG4gIHJldHVybiBzcmNfcm9vdC5kZXZpY2Uuc3ltbGluayh0b19kaXIsIHNyY19yb290LnJlc3QsIGRzdF9yb290LnJlc3QsIC8qIHJhaXNlIFVuaXhfZXJyb3IgKi8gdHJ1ZSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfdW5peF9yZWFkbGlua1xuLy9SZXF1aXJlczogcmVzb2x2ZV9mc19kZXZpY2UsIGNhbWxfZmFpbHdpdGhcbi8vQWxpYXM6IHVuaXhfcmVhZGxpbmtcbmZ1bmN0aW9uIGNhbWxfdW5peF9yZWFkbGluayhuYW1lKSB7XG4gIHZhciByb290ID0gcmVzb2x2ZV9mc19kZXZpY2UobmFtZSk7XG4gIGlmICghcm9vdC5kZXZpY2UucmVhZGxpbmspIHtcbiAgICBjYW1sX2ZhaWx3aXRoKFwiY2FtbF91bml4X3JlYWRsaW5rOiBub3QgaW1wbGVtZW50ZWRcIik7XG4gIH1cbiAgcmV0dXJuIHJvb3QuZGV2aWNlLnJlYWRsaW5rKHJvb3QucmVzdCwgLyogcmFpc2UgVW5peF9lcnJvciAqLyB0cnVlKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF91bml4X3VubGlua1xuLy9SZXF1aXJlczogcmVzb2x2ZV9mc19kZXZpY2UsIGNhbWxfZmFpbHdpdGhcbi8vQWxpYXM6IHVuaXhfdW5saW5rXG5mdW5jdGlvbiBjYW1sX3VuaXhfdW5saW5rKG5hbWUpIHtcbiAgdmFyIHJvb3QgPSByZXNvbHZlX2ZzX2RldmljZShuYW1lKTtcbiAgaWYgKCFyb290LmRldmljZS51bmxpbmspIHtcbiAgICBjYW1sX2ZhaWx3aXRoKFwiY2FtbF91bml4X3VubGluazogbm90IGltcGxlbWVudGVkXCIpO1xuICB9XG4gIHJldHVybiByb290LmRldmljZS51bmxpbmsocm9vdC5yZXN0LCAvKiByYWlzZSBVbml4X2Vycm9yICovIHRydWUpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3VuaXhfZ2V0dWlkXG4vL1JlcXVpcmVzOiBjYW1sX3JhaXNlX25vdF9mb3VuZFxuLy9BbGlhczogdW5peF9nZXR1aWRcbmZ1bmN0aW9uIGNhbWxfdW5peF9nZXR1aWQodW5pdCkge1xuICBpZihnbG9iYWxUaGlzLnByb2Nlc3MgJiYgZ2xvYmFsVGhpcy5wcm9jZXNzLmdldHVpZCl7XG4gICAgcmV0dXJuIGdsb2JhbFRoaXMucHJvY2Vzcy5nZXR1aWQoKTtcbiAgfVxuICBjYW1sX3JhaXNlX25vdF9mb3VuZCgpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3VuaXhfZ2V0cHd1aWRcbi8vUmVxdWlyZXM6IGNhbWxfcmFpc2Vfbm90X2ZvdW5kXG4vL0FsaWFzOiB1bml4X2dldHB3dWlkXG5mdW5jdGlvbiBjYW1sX3VuaXhfZ2V0cHd1aWQodW5pdCkge1xuICBjYW1sX3JhaXNlX25vdF9mb3VuZCgpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3VuaXhfaGFzX3N5bWxpbmtcbi8vUmVxdWlyZXM6IGZzX25vZGVfc3VwcG9ydGVkXG4vL0FsaWFzOiB1bml4X2hhc19zeW1saW5rXG5mdW5jdGlvbiBjYW1sX3VuaXhfaGFzX3N5bWxpbmsodW5pdCkge1xuICByZXR1cm4gZnNfbm9kZV9zdXBwb3J0ZWQoKT8xOjBcbn1cblxuLy9Qcm92aWRlczogY2FtbF91bml4X29wZW5kaXJcbi8vUmVxdWlyZXM6IHJlc29sdmVfZnNfZGV2aWNlLCBjYW1sX2ZhaWx3aXRoXG4vL0FsaWFzOiB1bml4X29wZW5kaXJcbmZ1bmN0aW9uIGNhbWxfdW5peF9vcGVuZGlyKHBhdGgpIHtcbiAgdmFyIHJvb3QgPSByZXNvbHZlX2ZzX2RldmljZShwYXRoKTtcbiAgaWYgKCFyb290LmRldmljZS5vcGVuZGlyKSB7XG4gICAgY2FtbF9mYWlsd2l0aChcImNhbWxfdW5peF9vcGVuZGlyOiBub3QgaW1wbGVtZW50ZWRcIik7XG4gIH1cbiAgdmFyIGRpcl9oYW5kbGUgPSByb290LmRldmljZS5vcGVuZGlyKHJvb3QucmVzdCwgLyogcmFpc2UgVW5peF9lcnJvciAqLyB0cnVlKTtcbiAgcmV0dXJuIHsgcG9pbnRlciA6IGRpcl9oYW5kbGUsIHBhdGg6IHBhdGggfVxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3VuaXhfcmVhZGRpclxuLy9SZXF1aXJlczogY2FtbF9yYWlzZV9lbmRfb2ZfZmlsZVxuLy9SZXF1aXJlczogY2FtbF9zdHJpbmdfb2ZfanNzdHJpbmdcbi8vUmVxdWlyZXM6IG1ha2VfdW5peF9lcnJfYXJncywgY2FtbF9yYWlzZV93aXRoX2FyZ3MsIGNhbWxfbmFtZWRfdmFsdWVcbi8vQWxpYXM6IHVuaXhfcmVhZGRpclxuZnVuY3Rpb24gY2FtbF91bml4X3JlYWRkaXIoZGlyX2hhbmRsZSkge1xuICB2YXIgZW50cnk7XG4gIHRyeSB7XG4gICAgICBlbnRyeSA9IGRpcl9oYW5kbGUucG9pbnRlci5yZWFkU3luYygpO1xuICB9IGNhdGNoIChlKSB7XG4gICAgICB2YXIgdW5peF9lcnJvciA9IGNhbWxfbmFtZWRfdmFsdWUoJ1VuaXguVW5peF9lcnJvcicpO1xuICAgICAgY2FtbF9yYWlzZV93aXRoX2FyZ3ModW5peF9lcnJvciwgbWFrZV91bml4X2Vycl9hcmdzKFwiRUJBREZcIiwgXCJyZWFkZGlyXCIsIGRpcl9oYW5kbGUucGF0aCkpO1xuICB9XG4gIGlmIChlbnRyeSA9PT0gbnVsbCkge1xuICAgICAgY2FtbF9yYWlzZV9lbmRfb2ZfZmlsZSgpO1xuICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIGNhbWxfc3RyaW5nX29mX2pzc3RyaW5nKGVudHJ5Lm5hbWUpO1xuICB9XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfdW5peF9jbG9zZWRpclxuLy9SZXF1aXJlczogbWFrZV91bml4X2Vycl9hcmdzLCBjYW1sX3JhaXNlX3dpdGhfYXJncywgY2FtbF9uYW1lZF92YWx1ZVxuLy9BbGlhczogdW5peF9jbG9zZWRpclxuZnVuY3Rpb24gY2FtbF91bml4X2Nsb3NlZGlyKGRpcl9oYW5kbGUpIHtcbiAgdHJ5IHtcbiAgICAgIGRpcl9oYW5kbGUucG9pbnRlci5jbG9zZVN5bmMoKTtcbiAgfSBjYXRjaCAoZSkge1xuICAgICAgdmFyIHVuaXhfZXJyb3IgPSBjYW1sX25hbWVkX3ZhbHVlKCdVbml4LlVuaXhfZXJyb3InKTtcbiAgICAgIGNhbWxfcmFpc2Vfd2l0aF9hcmdzKHVuaXhfZXJyb3IsIG1ha2VfdW5peF9lcnJfYXJncyhcIkVCQURGXCIsIFwiY2xvc2VkaXJcIiwgZGlyX2hhbmRsZS5wYXRoKSk7XG4gIH1cbn1cblxuLy9Qcm92aWRlczogY2FtbF91bml4X3Jld2luZGRpclxuLy9SZXF1aXJlczogY2FtbF91bml4X2Nsb3NlZGlyLCBjYW1sX3VuaXhfb3BlbmRpclxuLy9BbGlhczogdW5peF9yZXdpbmRkaXJcbmZ1bmN0aW9uIGNhbWxfdW5peF9yZXdpbmRkaXIoZGlyX2hhbmRsZSkge1xuICBjYW1sX3VuaXhfY2xvc2VkaXIoZGlyX2hhbmRsZSk7XG4gIHZhciBuZXdfZGlyX2hhbmRsZSA9IGNhbWxfdW5peF9vcGVuZGlyKGRpcl9oYW5kbGUucGF0aCk7XG4gIGRpcl9oYW5kbGUucG9pbnRlciA9IG5ld19kaXJfaGFuZGxlLnBvaW50ZXI7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3VuaXhfZmluZGZpcnN0XG4vL1JlcXVpcmVzOiBjYW1sX2pzc3RyaW5nX29mX3N0cmluZywgY2FtbF9zdHJpbmdfb2ZfanNzdHJpbmdcbi8vUmVxdWlyZXM6IGNhbWxfdW5peF9vcGVuZGlyLCBjYW1sX3VuaXhfcmVhZGRpclxuLy9BbGlhczogd2luX2ZpbmRmaXJzdFxuZnVuY3Rpb24gY2FtbF91bml4X2ZpbmRmaXJzdChwYXRoKSB7XG4gIC8vIFRoZSBXaW5kb3dzIGNvZGUgYWRkcyB0aGlzIGdsb2IgdG8gdGhlIHBhdGgsIHNvIHdlIG5lZWQgdG8gcmVtb3ZlIGl0XG4gIHZhciBwYXRoX2pzID0gY2FtbF9qc3N0cmluZ19vZl9zdHJpbmcocGF0aCk7XG4gIHBhdGhfanMgPSBwYXRoX2pzLnJlcGxhY2UoLyhefFtcXFxcXFwvXSlcXCpcXC5cXCokLywgXCJcIik7XG4gIHBhdGggPSBjYW1sX3N0cmluZ19vZl9qc3N0cmluZyhwYXRoX2pzKTtcbiAgLy8gKi4qIGlzIG5vdyBzdHJpcHBlZFxuICB2YXIgZGlyX2hhbmRsZSA9IGNhbWxfdW5peF9vcGVuZGlyKHBhdGgpO1xuICB2YXIgZmlyc3RfZW50cnkgPSBjYW1sX3VuaXhfcmVhZGRpcihkaXJfaGFuZGxlKTtcbiAgLy8gVGhlIFdpbmRvd3MgYmluZGluZ3MgdHlwZSBkaXJfaGFuZGxlIGFzIGFuIGBpbnRgIGJ1dCBpdCdzIG5vdCBpbiBKU1xuICByZXR1cm4gWzAsIGZpcnN0X2VudHJ5LCBkaXJfaGFuZGxlXTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF91bml4X2ZpbmRuZXh0XG4vL1JlcXVpcmVzOiBjYW1sX3VuaXhfcmVhZGRpclxuLy9BbGlhczogd2luX2ZpbmRuZXh0XG5mdW5jdGlvbiBjYW1sX3VuaXhfZmluZG5leHQoZGlyX2hhbmRsZSkge1xuICByZXR1cm4gY2FtbF91bml4X3JlYWRkaXIoZGlyX2hhbmRsZSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfdW5peF9maW5kY2xvc2Vcbi8vUmVxdWlyZXM6IGNhbWxfdW5peF9jbG9zZWRpclxuLy9BbGlhczogd2luX2ZpbmRjbG9zZVxuZnVuY3Rpb24gY2FtbF91bml4X2ZpbmRjbG9zZShkaXJfaGFuZGxlKSB7XG4gIHJldHVybiBjYW1sX3VuaXhfY2xvc2VkaXIoZGlyX2hhbmRsZSk7XG59XG5cblxuLy9Qcm92aWRlczogY2FtbF91bml4X2luZXRfYWRkcl9vZl9zdHJpbmdcbi8vQWxpYXM6IHVuaXhfaW5ldF9hZGRyX29mX3N0cmluZ1xuZnVuY3Rpb24gY2FtbF91bml4X2luZXRfYWRkcl9vZl9zdHJpbmcgKCkge3JldHVybiAwO31cblxuXG4iLCIvLyBKc19vZl9vY2FtbCBydW50aW1lIHN1cHBvcnRcbi8vIGh0dHA6Ly93d3cub2NzaWdlbi5vcmcvanNfb2Zfb2NhbWwvXG4vLyBDb3B5cmlnaHQgKEMpIDIwMTQgSsOpcsO0bWUgVm91aWxsb24sIEh1Z28gSGV1emFyZFxuLy8gTGFib3JhdG9pcmUgUFBTIC0gQ05SUyBVbml2ZXJzaXTDqSBQYXJpcyBEaWRlcm90XG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbi8vIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuLy8gdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aCBsaW5raW5nIGV4Y2VwdGlvbjtcbi8vIGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbi8vXG4vLyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbi8vIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4vLyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlXG4vLyBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbi8vXG4vLyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2Vcbi8vIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4vLyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLlxuXG4vL1Byb3ZpZGVzOiBNbEZha2VEZXZpY2Vcbi8vUmVxdWlyZXM6IE1sRmFrZUZpbGUsIE1sRmFrZUZkLCBjYW1sX2NyZWF0ZV9ieXRlc1xuLy9SZXF1aXJlczogY2FtbF9yYWlzZV9zeXNfZXJyb3IsIGNhbWxfcmFpc2Vfbm9fc3VjaF9maWxlXG4vL1JlcXVpcmVzOiBjYW1sX3N0cmluZ19vZl9qc2J5dGVzLCBjYW1sX3N0cmluZ19vZl9qc3N0cmluZ1xuLy9SZXF1aXJlczogY2FtbF9ieXRlc19vZl9hcnJheSwgY2FtbF9ieXRlc19vZl9zdHJpbmcsIGNhbWxfYnl0ZXNfb2ZfanNieXRlc1xuLy9SZXF1aXJlczogY2FtbF9pc19tbF9ieXRlcywgY2FtbF9pc19tbF9zdHJpbmdcbi8vUmVxdWlyZXM6IGNhbWxfbmFtZWRfdmFsdWUsIGNhbWxfcmFpc2Vfd2l0aF9hcmdzLCBjYW1sX25hbWVkX3ZhbHVlc1xuLy9SZXF1aXJlczogbWFrZV91bml4X2Vycl9hcmdzXG5mdW5jdGlvbiBNbEZha2VEZXZpY2UgKHJvb3QsIGYpIHtcbiAgdGhpcy5jb250ZW50PXt9O1xuICB0aGlzLnJvb3QgPSByb290O1xuICB0aGlzLmxvb2t1cEZ1biA9IGY7XG59XG5NbEZha2VEZXZpY2UucHJvdG90eXBlLm5tID0gZnVuY3Rpb24obmFtZSkge1xuICByZXR1cm4gKHRoaXMucm9vdCArIG5hbWUpO1xufVxuTWxGYWtlRGV2aWNlLnByb3RvdHlwZS5jcmVhdGVfZGlyX2lmX25lZWRlZCA9IGZ1bmN0aW9uKG5hbWUpIHtcbiAgdmFyIGNvbXAgPSBuYW1lLnNwbGl0KFwiL1wiKTtcbiAgdmFyIHJlcyA9IFwiXCI7XG4gIGZvcih2YXIgaSA9IDA7IGkgPCBjb21wLmxlbmd0aCAtIDE7IGkrKyl7XG4gICAgcmVzICs9IGNvbXBbaV0gKyBcIi9cIjtcbiAgICBpZih0aGlzLmNvbnRlbnRbcmVzXSkgY29udGludWU7XG4gICAgdGhpcy5jb250ZW50W3Jlc10gPSBTeW1ib2woXCJkaXJlY3RvcnlcIik7XG4gIH1cbn1cbk1sRmFrZURldmljZS5wcm90b3R5cGUuc2xhc2ggPSBmdW5jdGlvbihuYW1lKXtcbiAgcmV0dXJuIC9cXC8kLy50ZXN0KG5hbWUpP25hbWU6KG5hbWUgKyBcIi9cIik7XG59XG5NbEZha2VEZXZpY2UucHJvdG90eXBlLmxvb2t1cCA9IGZ1bmN0aW9uKG5hbWUpIHtcbiAgaWYoIXRoaXMuY29udGVudFtuYW1lXSAmJiB0aGlzLmxvb2t1cEZ1bikge1xuICAgIHZhciByZXMgPSB0aGlzLmxvb2t1cEZ1bihjYW1sX3N0cmluZ19vZl9qc2J5dGVzKHRoaXMucm9vdCksIGNhbWxfc3RyaW5nX29mX2pzYnl0ZXMobmFtZSkpO1xuICAgIGlmKHJlcyAhPT0gMCkge1xuICAgICAgdGhpcy5jcmVhdGVfZGlyX2lmX25lZWRlZChuYW1lKTtcbiAgICAgIHRoaXMuY29udGVudFtuYW1lXT1uZXcgTWxGYWtlRmlsZShjYW1sX2J5dGVzX29mX3N0cmluZyhyZXNbMV0pKTtcbiAgICB9XG4gIH1cbn1cbk1sRmFrZURldmljZS5wcm90b3R5cGUuZXhpc3RzID0gZnVuY3Rpb24obmFtZSkge1xuICAvLyBUaGUgcm9vdCBvZiB0aGUgZGV2aWNlIGV4aXN0c1xuICBpZihuYW1lID09IFwiXCIpIHJldHVybiAxO1xuICAvLyBDaGVjayBpZiBhIGRpcmVjdG9yeSBleGlzdHNcbiAgdmFyIG5hbWVfc2xhc2ggPSB0aGlzLnNsYXNoKG5hbWUpO1xuICBpZih0aGlzLmNvbnRlbnRbbmFtZV9zbGFzaF0pIHJldHVybiAxO1xuICAvLyBDaGVjayBpZiBhIGZpbGUgZXhpc3RzXG4gIHRoaXMubG9va3VwKG5hbWUpO1xuICByZXR1cm4gdGhpcy5jb250ZW50W25hbWVdPzE6MDtcbn1cbk1sRmFrZURldmljZS5wcm90b3R5cGUuaXNGaWxlID0gZnVuY3Rpb24obmFtZSkge1xuICBpZih0aGlzLmV4aXN0cyhuYW1lKSAmJiAhdGhpcy5pc19kaXIobmFtZSkpIHtcbiAgICByZXR1cm4gMVxuICB9XG4gIGVsc2Uge1xuICAgIHJldHVybiAwXG4gIH1cbn1cbk1sRmFrZURldmljZS5wcm90b3R5cGUubWtkaXIgPSBmdW5jdGlvbihuYW1lLG1vZGUsIHJhaXNlX3VuaXgpIHtcbiAgdmFyIHVuaXhfZXJyb3IgPSByYWlzZV91bml4ICYmIGNhbWxfbmFtZWRfdmFsdWUoJ1VuaXguVW5peF9lcnJvcicpO1xuICBpZih0aGlzLmV4aXN0cyhuYW1lKSkge1xuICAgIGlmICh1bml4X2Vycm9yKSB7XG4gICAgICBjYW1sX3JhaXNlX3dpdGhfYXJncyh1bml4X2Vycm9yLCBtYWtlX3VuaXhfZXJyX2FyZ3MoXCJFRVhJU1RcIiwgXCJta2RpclwiLCB0aGlzLm5tKG5hbWUpKSk7XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgY2FtbF9yYWlzZV9zeXNfZXJyb3IobmFtZSArIFwiOiBGaWxlIGV4aXN0c1wiKTtcbiAgICB9XG4gIH1cbiAgdmFyIHBhcmVudCA9IC9eKC4qKVxcL1teL10rLy5leGVjKG5hbWUpO1xuICBwYXJlbnQgPSAocGFyZW50ICYmIHBhcmVudFsxXSkgfHwgJyc7XG4gIGlmKCF0aGlzLmV4aXN0cyhwYXJlbnQpKXtcbiAgICBpZiAodW5peF9lcnJvcikge1xuICAgICAgY2FtbF9yYWlzZV93aXRoX2FyZ3ModW5peF9lcnJvciwgbWFrZV91bml4X2Vycl9hcmdzKFwiRU5PRU5UXCIsIFwibWtkaXJcIiwgdGhpcy5ubShwYXJlbnQpKSk7XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgY2FtbF9yYWlzZV9zeXNfZXJyb3IocGFyZW50ICsgXCI6IE5vIHN1Y2ggZmlsZSBvciBkaXJlY3RvcnlcIik7XG4gICAgfVxuICB9XG4gIGlmKCF0aGlzLmlzX2RpcihwYXJlbnQpKXtcbiAgICBpZiAodW5peF9lcnJvcikge1xuICAgICAgY2FtbF9yYWlzZV93aXRoX2FyZ3ModW5peF9lcnJvciwgbWFrZV91bml4X2Vycl9hcmdzKFwiRU5PVERJUlwiLCBcIm1rZGlyXCIsIHRoaXMubm0ocGFyZW50KSkpO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgIGNhbWxfcmFpc2Vfc3lzX2Vycm9yKHBhcmVudCArIFwiOiBOb3QgYSBkaXJlY3RvcnlcIik7XG4gICAgfVxuICB9XG4gIHRoaXMuY3JlYXRlX2Rpcl9pZl9uZWVkZWQodGhpcy5zbGFzaChuYW1lKSk7XG59XG5NbEZha2VEZXZpY2UucHJvdG90eXBlLnJtZGlyID0gZnVuY3Rpb24obmFtZSwgcmFpc2VfdW5peCkge1xuICB2YXIgdW5peF9lcnJvciA9IHJhaXNlX3VuaXggJiYgY2FtbF9uYW1lZF92YWx1ZSgnVW5peC5Vbml4X2Vycm9yJyk7XG4gIHZhciBuYW1lX3NsYXNoID0gKG5hbWUgPT0gXCJcIik/XCJcIjoodGhpcy5zbGFzaChuYW1lKSk7XG4gIHZhciByID0gbmV3IFJlZ0V4cChcIl5cIiArIG5hbWVfc2xhc2ggKyBcIihbXi9dKylcIik7XG4gIGlmKCF0aGlzLmV4aXN0cyhuYW1lKSkge1xuICAgIGlmICh1bml4X2Vycm9yKSB7XG4gICAgICBjYW1sX3JhaXNlX3dpdGhfYXJncyh1bml4X2Vycm9yLCBtYWtlX3VuaXhfZXJyX2FyZ3MoXCJFTk9FTlRcIiwgXCJybWRpclwiLCB0aGlzLm5tKG5hbWUpKSk7XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgY2FtbF9yYWlzZV9zeXNfZXJyb3IobmFtZSArIFwiOiBObyBzdWNoIGZpbGUgb3IgZGlyZWN0b3J5XCIpO1xuICAgIH1cbiAgfVxuICBpZighdGhpcy5pc19kaXIobmFtZSkpIHtcbiAgICBpZiAodW5peF9lcnJvcikge1xuICAgICAgY2FtbF9yYWlzZV93aXRoX2FyZ3ModW5peF9lcnJvciwgbWFrZV91bml4X2Vycl9hcmdzKFwiRU5PVERJUlwiLCBcInJtZGlyXCIsIHRoaXMubm0obmFtZSkpKTtcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICBjYW1sX3JhaXNlX3N5c19lcnJvcihuYW1lICsgXCI6IE5vdCBhIGRpcmVjdG9yeVwiKTtcbiAgICB9XG4gIH1cbiAgZm9yKHZhciBuIGluIHRoaXMuY29udGVudCkge1xuICAgIGlmKG4ubWF0Y2gocikpIHtcbiAgICAgIGlmICh1bml4X2Vycm9yKSB7XG4gICAgICAgIGNhbWxfcmFpc2Vfd2l0aF9hcmdzKHVuaXhfZXJyb3IsIG1ha2VfdW5peF9lcnJfYXJncyhcIkVOT1RFTVBUWVwiLCBcInJtZGlyXCIsIHRoaXMubm0obmFtZSkpKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNhbWxfcmFpc2Vfc3lzX2Vycm9yKHRoaXMubm0obmFtZSkgKyBcIjogRGlyZWN0b3J5IG5vdCBlbXB0eVwiKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgZGVsZXRlIHRoaXMuY29udGVudFtuYW1lX3NsYXNoXTtcbn1cbk1sRmFrZURldmljZS5wcm90b3R5cGUucmVhZGRpciA9IGZ1bmN0aW9uKG5hbWUpIHtcbiAgdmFyIG5hbWVfc2xhc2ggPSAobmFtZSA9PSBcIlwiKT9cIlwiOih0aGlzLnNsYXNoKG5hbWUpKTtcbiAgaWYoIXRoaXMuZXhpc3RzKG5hbWUpKSB7XG4gICAgY2FtbF9yYWlzZV9zeXNfZXJyb3IobmFtZSArIFwiOiBObyBzdWNoIGZpbGUgb3IgZGlyZWN0b3J5XCIpO1xuICB9XG4gIGlmKCF0aGlzLmlzX2RpcihuYW1lKSkge1xuICAgIGNhbWxfcmFpc2Vfc3lzX2Vycm9yKG5hbWUgKyBcIjogTm90IGEgZGlyZWN0b3J5XCIpO1xuICB9XG4gIHZhciByID0gbmV3IFJlZ0V4cChcIl5cIiArIG5hbWVfc2xhc2ggKyBcIihbXi9dKylcIik7XG4gIHZhciBzZWVuID0ge31cbiAgdmFyIGEgPSBbXTtcbiAgZm9yKHZhciBuIGluIHRoaXMuY29udGVudCkge1xuICAgIHZhciBtID0gbi5tYXRjaChyKTtcbiAgICBpZihtICYmICFzZWVuW21bMV1dKSB7c2VlblttWzFdXSA9IHRydWU7IGEucHVzaChtWzFdKX1cbiAgfVxuICByZXR1cm4gYTtcbn1cbk1sRmFrZURldmljZS5wcm90b3R5cGUub3BlbmRpciA9IGZ1bmN0aW9uKG5hbWUsIHJhaXNlX3VuaXgpIHtcbiAgdmFyIHVuaXhfZXJyb3IgPSByYWlzZV91bml4ICYmIGNhbWxfbmFtZWRfdmFsdWUoJ1VuaXguVW5peF9lcnJvcicpO1xuXG4gIHZhciBhID0gdGhpcy5yZWFkZGlyKG5hbWUpO1xuICB2YXIgYyA9IGZhbHNlO1xuICB2YXIgaSA9IDA7XG4gIHJldHVybiB7IHJlYWRTeW5jIDogKGZ1bmN0aW9uICgpIHtcbiAgICBpZiAoYykge1xuICAgICAgaWYgKHVuaXhfZXJyb3IpIHtcbiAgICAgICAgY2FtbF9yYWlzZV93aXRoX2FyZ3ModW5peF9lcnJvciwgbWFrZV91bml4X2Vycl9hcmdzKFwiRUJBREZcIiwgXCJjbG9zZWRpclwiLCB0aGlzLm5tKG5hbWUpKSk7XG4gICAgICB9XG4gICAgICBlbHNlIHtcbiAgICAgICAgY2FtbF9yYWlzZV9zeXNfZXJyb3IobmFtZSArIFwiOiBjbG9zZWRpciBmYWlsZWRcIik7XG4gICAgICB9XG4gICAgfVxuICAgIGlmKGkgPT0gYS5sZW5ndGgpIHJldHVybiBudWxsO1xuICAgIHZhciBlbnRyeSA9IGFbaV07XG4gICAgaSsrO1xuICAgIHJldHVybiB7IG5hbWU6IGVudHJ5IH1cbiAgfSlcbiAgICAsIGNsb3NlU3luYzogKGZ1bmN0aW9uICgpIHtcbiAgICAgIGlmIChjKSB7XG4gICAgICAgIGlmICh1bml4X2Vycm9yKSB7XG4gICAgICAgICAgY2FtbF9yYWlzZV93aXRoX2FyZ3ModW5peF9lcnJvciwgbWFrZV91bml4X2Vycl9hcmdzKFwiRUJBREZcIiwgXCJjbG9zZWRpclwiLCB0aGlzLm5tKG5hbWUpKSk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgY2FtbF9yYWlzZV9zeXNfZXJyb3IobmFtZSArIFwiOiBjbG9zZWRpciBmYWlsZWRcIik7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGMgPSB0cnVlO1xuICAgICAgYSA9IFtdO1xuICAgIH0pXG4gIH1cbn1cbk1sRmFrZURldmljZS5wcm90b3R5cGUuaXNfZGlyID0gZnVuY3Rpb24obmFtZSkge1xuICBpZihuYW1lID09IFwiXCIpICByZXR1cm4gdHJ1ZTtcbiAgdmFyIG5hbWVfc2xhc2ggPSB0aGlzLnNsYXNoKG5hbWUpO1xuICByZXR1cm4gdGhpcy5jb250ZW50W25hbWVfc2xhc2hdPzE6MDtcbn1cbk1sRmFrZURldmljZS5wcm90b3R5cGUudW5saW5rID0gZnVuY3Rpb24obmFtZSkge1xuICB2YXIgb2sgPSB0aGlzLmNvbnRlbnRbbmFtZV0/dHJ1ZTpmYWxzZTtcbiAgZGVsZXRlIHRoaXMuY29udGVudFtuYW1lXTtcbiAgcmV0dXJuIG9rO1xufVxuTWxGYWtlRGV2aWNlLnByb3RvdHlwZS5vcGVuID0gZnVuY3Rpb24obmFtZSwgZikge1xuICB2YXIgZmlsZTtcbiAgaWYoZi5yZG9ubHkgJiYgZi53cm9ubHkpXG4gICAgY2FtbF9yYWlzZV9zeXNfZXJyb3IodGhpcy5ubShuYW1lKSArIFwiIDogZmxhZ3MgT3Blbl9yZG9ubHkgYW5kIE9wZW5fd3Jvbmx5IGFyZSBub3QgY29tcGF0aWJsZVwiKTtcbiAgaWYoZi50ZXh0ICYmIGYuYmluYXJ5KVxuICAgIGNhbWxfcmFpc2Vfc3lzX2Vycm9yKHRoaXMubm0obmFtZSkgKyBcIiA6IGZsYWdzIE9wZW5fdGV4dCBhbmQgT3Blbl9iaW5hcnkgYXJlIG5vdCBjb21wYXRpYmxlXCIpO1xuICB0aGlzLmxvb2t1cChuYW1lKTtcbiAgaWYgKHRoaXMuY29udGVudFtuYW1lXSkge1xuICAgIGlmICh0aGlzLmlzX2RpcihuYW1lKSkgY2FtbF9yYWlzZV9zeXNfZXJyb3IodGhpcy5ubShuYW1lKSArIFwiIDogaXMgYSBkaXJlY3RvcnlcIik7XG4gICAgaWYgKGYuY3JlYXRlICYmIGYuZXhjbCkgY2FtbF9yYWlzZV9zeXNfZXJyb3IodGhpcy5ubShuYW1lKSArIFwiIDogZmlsZSBhbHJlYWR5IGV4aXN0c1wiKTtcbiAgICBmaWxlID0gdGhpcy5jb250ZW50W25hbWVdO1xuICAgIGlmKGYudHJ1bmNhdGUpIGZpbGUudHJ1bmNhdGUoKTtcbiAgfSBlbHNlIGlmIChmLmNyZWF0ZSkge1xuICAgIHRoaXMuY3JlYXRlX2Rpcl9pZl9uZWVkZWQobmFtZSk7XG4gICAgdGhpcy5jb250ZW50W25hbWVdID0gbmV3IE1sRmFrZUZpbGUoY2FtbF9jcmVhdGVfYnl0ZXMoMCkpO1xuICAgIGZpbGUgPSB0aGlzLmNvbnRlbnRbbmFtZV07XG4gIH0gZWxzZSB7XG4gICAgY2FtbF9yYWlzZV9ub19zdWNoX2ZpbGUgKHRoaXMubm0obmFtZSkpO1xuICB9XG4gIHJldHVybiBuZXcgTWxGYWtlRmQodGhpcy5ubShuYW1lKSwgZmlsZSwgZik7XG59XG5cbk1sRmFrZURldmljZS5wcm90b3R5cGUub3BlbiA9IGZ1bmN0aW9uKG5hbWUsIGYpIHtcbiAgdmFyIGZpbGU7XG4gIGlmKGYucmRvbmx5ICYmIGYud3Jvbmx5KVxuICAgIGNhbWxfcmFpc2Vfc3lzX2Vycm9yKHRoaXMubm0obmFtZSkgKyBcIiA6IGZsYWdzIE9wZW5fcmRvbmx5IGFuZCBPcGVuX3dyb25seSBhcmUgbm90IGNvbXBhdGlibGVcIik7XG4gIGlmKGYudGV4dCAmJiBmLmJpbmFyeSlcbiAgICBjYW1sX3JhaXNlX3N5c19lcnJvcih0aGlzLm5tKG5hbWUpICsgXCIgOiBmbGFncyBPcGVuX3RleHQgYW5kIE9wZW5fYmluYXJ5IGFyZSBub3QgY29tcGF0aWJsZVwiKTtcbiAgdGhpcy5sb29rdXAobmFtZSk7XG4gIGlmICh0aGlzLmNvbnRlbnRbbmFtZV0pIHtcbiAgICBpZiAodGhpcy5pc19kaXIobmFtZSkpIGNhbWxfcmFpc2Vfc3lzX2Vycm9yKHRoaXMubm0obmFtZSkgKyBcIiA6IGlzIGEgZGlyZWN0b3J5XCIpO1xuICAgIGlmIChmLmNyZWF0ZSAmJiBmLmV4Y2wpIGNhbWxfcmFpc2Vfc3lzX2Vycm9yKHRoaXMubm0obmFtZSkgKyBcIiA6IGZpbGUgYWxyZWFkeSBleGlzdHNcIik7XG4gICAgZmlsZSA9IHRoaXMuY29udGVudFtuYW1lXTtcbiAgICBpZihmLnRydW5jYXRlKSBmaWxlLnRydW5jYXRlKCk7XG4gIH0gZWxzZSBpZiAoZi5jcmVhdGUpIHtcbiAgICB0aGlzLmNyZWF0ZV9kaXJfaWZfbmVlZGVkKG5hbWUpO1xuICAgIHRoaXMuY29udGVudFtuYW1lXSA9IG5ldyBNbEZha2VGaWxlKGNhbWxfY3JlYXRlX2J5dGVzKDApKTtcbiAgICBmaWxlID0gdGhpcy5jb250ZW50W25hbWVdO1xuICB9IGVsc2Uge1xuICAgIGNhbWxfcmFpc2Vfbm9fc3VjaF9maWxlICh0aGlzLm5tKG5hbWUpKTtcbiAgfVxuICByZXR1cm4gbmV3IE1sRmFrZUZkKHRoaXMubm0obmFtZSksIGZpbGUsIGYpO1xufVxuXG5NbEZha2VEZXZpY2UucHJvdG90eXBlLnJlZ2lzdGVyPSBmdW5jdGlvbiAobmFtZSxjb250ZW50KXtcbiAgdmFyIGZpbGU7XG4gIGlmKHRoaXMuY29udGVudFtuYW1lXSkgY2FtbF9yYWlzZV9zeXNfZXJyb3IodGhpcy5ubShuYW1lKSArIFwiIDogZmlsZSBhbHJlYWR5IGV4aXN0c1wiKTtcbiAgaWYoY2FtbF9pc19tbF9ieXRlcyhjb250ZW50KSlcbiAgICBmaWxlID0gbmV3IE1sRmFrZUZpbGUoY29udGVudCk7XG4gIGlmKGNhbWxfaXNfbWxfc3RyaW5nKGNvbnRlbnQpKVxuICAgIGZpbGUgPSBuZXcgTWxGYWtlRmlsZShjYW1sX2J5dGVzX29mX3N0cmluZyhjb250ZW50KSk7XG4gIGVsc2UgaWYoY29udGVudCBpbnN0YW5jZW9mIEFycmF5KVxuICAgIGZpbGUgPSBuZXcgTWxGYWtlRmlsZShjYW1sX2J5dGVzX29mX2FycmF5KGNvbnRlbnQpKTtcbiAgZWxzZSBpZih0eXBlb2YgY29udGVudCA9PT0gXCJzdHJpbmdcIilcbiAgICBmaWxlID0gbmV3IE1sRmFrZUZpbGUoY2FtbF9ieXRlc19vZl9qc2J5dGVzKGNvbnRlbnQpKTtcbiAgZWxzZSBpZihjb250ZW50LnRvU3RyaW5nKSB7XG4gICAgdmFyIGJ5dGVzID0gY2FtbF9ieXRlc19vZl9zdHJpbmcoY2FtbF9zdHJpbmdfb2ZfanNzdHJpbmcoY29udGVudC50b1N0cmluZygpKSk7XG4gICAgZmlsZSA9IG5ldyBNbEZha2VGaWxlKGJ5dGVzKTtcbiAgfVxuICBpZihmaWxlKXtcbiAgICB0aGlzLmNyZWF0ZV9kaXJfaWZfbmVlZGVkKG5hbWUpO1xuICAgIHRoaXMuY29udGVudFtuYW1lXSA9IGZpbGU7XG4gIH1cbiAgZWxzZSBjYW1sX3JhaXNlX3N5c19lcnJvcih0aGlzLm5tKG5hbWUpICsgXCIgOiByZWdpc3RlcmluZyBmaWxlIHdpdGggaW52YWxpZCBjb250ZW50IHR5cGVcIik7XG59XG5cbk1sRmFrZURldmljZS5wcm90b3R5cGUuY29uc3RydWN0b3IgPSBNbEZha2VEZXZpY2VcblxuLy9Qcm92aWRlczogTWxGYWtlRmlsZVxuLy9SZXF1aXJlczogTWxGaWxlXG4vL1JlcXVpcmVzOiBjYW1sX2NyZWF0ZV9ieXRlcywgY2FtbF9tbF9ieXRlc19sZW5ndGgsIGNhbWxfYmxpdF9ieXRlc1xuLy9SZXF1aXJlczogY2FtbF91aW50OF9hcnJheV9vZl9ieXRlcywgY2FtbF9ieXRlc19vZl9hcnJheVxuZnVuY3Rpb24gTWxGYWtlRmlsZShjb250ZW50KXtcbiAgdGhpcy5kYXRhID0gY29udGVudDtcbn1cbk1sRmFrZUZpbGUucHJvdG90eXBlID0gbmV3IE1sRmlsZSAoKTtcbk1sRmFrZUZpbGUucHJvdG90eXBlLmNvbnN0cnVjdG9yID0gTWxGYWtlRmlsZVxuTWxGYWtlRmlsZS5wcm90b3R5cGUudHJ1bmNhdGUgPSBmdW5jdGlvbihsZW4pe1xuICB2YXIgb2xkID0gdGhpcy5kYXRhO1xuICB0aGlzLmRhdGEgPSBjYW1sX2NyZWF0ZV9ieXRlcyhsZW58MCk7XG4gIGNhbWxfYmxpdF9ieXRlcyhvbGQsIDAsIHRoaXMuZGF0YSwgMCwgbGVuKTtcbn1cbk1sRmFrZUZpbGUucHJvdG90eXBlLmxlbmd0aCA9IGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuIGNhbWxfbWxfYnl0ZXNfbGVuZ3RoKHRoaXMuZGF0YSk7XG59XG5NbEZha2VGaWxlLnByb3RvdHlwZS53cml0ZSA9IGZ1bmN0aW9uKG9mZnNldCxidWYscG9zLGxlbil7XG4gIHZhciBjbGVuID0gdGhpcy5sZW5ndGgoKTtcbiAgaWYob2Zmc2V0ICsgbGVuID49IGNsZW4pIHtcbiAgICB2YXIgbmV3X3N0ciA9IGNhbWxfY3JlYXRlX2J5dGVzKG9mZnNldCArIGxlbik7XG4gICAgdmFyIG9sZF9kYXRhID0gdGhpcy5kYXRhO1xuICAgIHRoaXMuZGF0YSA9IG5ld19zdHI7XG4gICAgY2FtbF9ibGl0X2J5dGVzKG9sZF9kYXRhLCAwLCB0aGlzLmRhdGEsIDAsIGNsZW4pO1xuICB9XG4gIGNhbWxfYmxpdF9ieXRlcyhjYW1sX2J5dGVzX29mX2FycmF5KGJ1ZiksIHBvcywgdGhpcy5kYXRhLCBvZmZzZXQsIGxlbik7XG4gIHJldHVybiAwXG59XG5NbEZha2VGaWxlLnByb3RvdHlwZS5yZWFkID0gZnVuY3Rpb24ob2Zmc2V0LGJ1Zixwb3MsbGVuKXtcbiAgdmFyIGNsZW4gPSB0aGlzLmxlbmd0aCgpO1xuICBpZihvZmZzZXQgKyBsZW4gPj0gY2xlbikge1xuICAgIGxlbiA9IGNsZW4gLSBvZmZzZXQ7XG4gIH1cbiAgaWYobGVuKSB7XG4gICAgdmFyIGRhdGEgPSBjYW1sX2NyZWF0ZV9ieXRlcyhsZW58MCk7XG4gICAgY2FtbF9ibGl0X2J5dGVzKHRoaXMuZGF0YSwgb2Zmc2V0LCBkYXRhLCAwLCBsZW4pO1xuICAgIGJ1Zi5zZXQoY2FtbF91aW50OF9hcnJheV9vZl9ieXRlcyhkYXRhKSwgcG9zKTtcbiAgfVxuICByZXR1cm4gbGVuXG59XG5cblxuLy9Qcm92aWRlczogTWxGYWtlRmRfb3V0XG4vL1JlcXVpcmVzOiBNbEZha2VGaWxlLCBjYW1sX2NyZWF0ZV9ieXRlcywgY2FtbF9ibGl0X2J5dGVzLCBjYW1sX2J5dGVzX29mX2FycmF5XG4vL1JlcXVpcmVzOiBjYW1sX3JhaXNlX3N5c19lcnJvclxuZnVuY3Rpb24gTWxGYWtlRmRfb3V0KGZkLGZsYWdzKSB7XG4gIE1sRmFrZUZpbGUuY2FsbCh0aGlzLCBjYW1sX2NyZWF0ZV9ieXRlcygwKSk7XG4gIHRoaXMubG9nID0gKGZ1bmN0aW9uIChzKSB7IHJldHVybiAwIH0pO1xuICBpZihmZCA9PSAxICYmIHR5cGVvZiBjb25zb2xlLmxvZyA9PSBcImZ1bmN0aW9uXCIpXG4gICAgdGhpcy5sb2cgPSBjb25zb2xlLmxvZztcbiAgZWxzZSBpZihmZCA9PSAyICYmIHR5cGVvZiBjb25zb2xlLmVycm9yID09IFwiZnVuY3Rpb25cIilcbiAgICB0aGlzLmxvZyA9IGNvbnNvbGUuZXJyb3I7XG4gIGVsc2UgaWYodHlwZW9mIGNvbnNvbGUubG9nID09IFwiZnVuY3Rpb25cIilcbiAgICB0aGlzLmxvZyA9IGNvbnNvbGUubG9nXG4gIHRoaXMuZmxhZ3MgPSBmbGFncztcbn1cbk1sRmFrZUZkX291dC5wcm90b3R5cGUubGVuZ3RoID0gZnVuY3Rpb24oKSB7IHJldHVybiAwIH1cbk1sRmFrZUZkX291dC5wcm90b3R5cGUud3JpdGUgPSBmdW5jdGlvbiAob2Zmc2V0LGJ1Zixwb3MsbGVuKSB7XG4gIGlmKHRoaXMubG9nKSB7XG4gICAgaWYobGVuID4gMFxuICAgICAgICYmIHBvcyA+PSAwXG4gICAgICAgJiYgcG9zK2xlbiA8PSBidWYubGVuZ3RoXG4gICAgICAgJiYgYnVmW3BvcytsZW4tMV0gPT0gMTApXG4gICAgICBsZW4gLS07XG4gICAgLy8gRG8gbm90IG91dHB1dCB0aGUgbGFzdCBcXG4gaWYgcHJlc2VudFxuICAgIC8vIGFzIGNvbnNvbGUgbG9nZ2luZyBkaXNwbGF5IGEgbmV3bGluZSBhdCB0aGUgZW5kXG4gICAgdmFyIHNyYyA9IGNhbWxfY3JlYXRlX2J5dGVzKGxlbik7XG4gICAgY2FtbF9ibGl0X2J5dGVzKGNhbWxfYnl0ZXNfb2ZfYXJyYXkoYnVmKSwgcG9zLCBzcmMsIDAsIGxlbik7XG4gICAgdGhpcy5sb2coc3JjLnRvVXRmMTYoKSk7XG4gICAgcmV0dXJuIDA7XG4gIH1cbiAgY2FtbF9yYWlzZV9zeXNfZXJyb3IodGhpcy5mZCAgKyBcIjogZmlsZSBkZXNjcmlwdG9yIGFscmVhZHkgY2xvc2VkXCIpO1xufVxuTWxGYWtlRmRfb3V0LnByb3RvdHlwZS5yZWFkID0gZnVuY3Rpb24gKG9mZnNldCwgYnVmLCBwb3MsIGxlbikge1xuICBjYW1sX3JhaXNlX3N5c19lcnJvcih0aGlzLmZkICArIFwiOiBmaWxlIGRlc2NyaXB0b3IgaXMgd3JpdGUgb25seVwiKTtcbn1cbk1sRmFrZUZkX291dC5wcm90b3R5cGUuY2xvc2UgPSBmdW5jdGlvbiAoKSB7XG4gIHRoaXMubG9nID0gdW5kZWZpbmVkO1xufVxuXG5cbi8vUHJvdmlkZXM6IE1sRmFrZUZkXG4vL1JlcXVpcmVzOiBNbEZha2VGaWxlXG4vL1JlcXVpcmVzOiBjYW1sX3JhaXNlX3N5c19lcnJvclxuZnVuY3Rpb24gTWxGYWtlRmQobmFtZSwgZmlsZSxmbGFncykge1xuICB0aGlzLmZpbGUgPSBmaWxlO1xuICB0aGlzLm5hbWUgPSBuYW1lO1xuICB0aGlzLmZsYWdzID0gZmxhZ3M7XG59XG5cbk1sRmFrZUZkLnByb3RvdHlwZS5lcnJfY2xvc2VkID0gZnVuY3Rpb24gKCkge1xuICBjYW1sX3JhaXNlX3N5c19lcnJvcih0aGlzLm5hbWUgICsgXCI6IGZpbGUgZGVzY3JpcHRvciBhbHJlYWR5IGNsb3NlZFwiKTtcbn1cbk1sRmFrZUZkLnByb3RvdHlwZS5sZW5ndGggPSBmdW5jdGlvbigpIHtcbiAgaWYodGhpcy5maWxlKSByZXR1cm4gdGhpcy5maWxlLmxlbmd0aCAoKVxuICB0aGlzLmVycl9jbG9zZWQoKTtcbn1cbk1sRmFrZUZkLnByb3RvdHlwZS53cml0ZSA9IGZ1bmN0aW9uIChvZmZzZXQsYnVmLHBvcyxsZW4pIHtcbiAgaWYodGhpcy5maWxlKSByZXR1cm4gdGhpcy5maWxlLndyaXRlKG9mZnNldCxidWYscG9zLGxlbilcbiAgdGhpcy5lcnJfY2xvc2VkKCk7XG59XG5NbEZha2VGZC5wcm90b3R5cGUucmVhZCA9IGZ1bmN0aW9uIChvZmZzZXQsIGJ1ZiwgcG9zLCBsZW4pIHtcbiAgaWYodGhpcy5maWxlKSByZXR1cm4gdGhpcy5maWxlLnJlYWQob2Zmc2V0LCBidWYsIHBvcywgbGVuKVxuICB0aGlzLmVycl9jbG9zZWQoKTtcbn1cbk1sRmFrZUZkLnByb3RvdHlwZS5jbG9zZSA9IGZ1bmN0aW9uICgpIHtcbiAgdGhpcy5maWxlID0gdW5kZWZpbmVkO1xufVxuIiwiLy9Qcm92aWRlczogaW5pdGlhbGl6ZV9uYXRcbi8vUmVxdWlyZXM6IGNhbWxfY3VzdG9tX29wc1xuLy9SZXF1aXJlczogc2VyaWFsaXplX25hdCwgZGVzZXJpYWxpemVfbmF0LCBjYW1sX2hhc2hfbmF0XG5mdW5jdGlvbiBpbml0aWFsaXplX25hdCgpIHtcbiAgY2FtbF9jdXN0b21fb3BzW1wiX25hdFwiXSA9XG4gICAgeyBkZXNlcmlhbGl6ZSA6IGRlc2VyaWFsaXplX25hdCxcbiAgICAgIHNlcmlhbGl6ZSA6IHNlcmlhbGl6ZV9uYXQsXG4gICAgICBoYXNoIDogY2FtbF9oYXNoX25hdFxuICAgIH1cbn1cblxuLy9Qcm92aWRlczogTWxOYXRcbmZ1bmN0aW9uIE1sTmF0KHgpe1xuICB0aGlzLmRhdGEgPSBuZXcgSW50MzJBcnJheSh4KTtcbiAgLy8gbGVuZ3RoX25hdCBpc24ndCBleHRlcm5hbCwgc28gd2UgaGF2ZSB0byBtYWtlIHRoZSBPYmouc2l6ZVxuICAvLyB3b3JrIG91dCByaWdodC4gVGhlICsyIHRvIGFycmF5IGxlbmd0aCBzZWVtcyB0byB3b3JrLlxuICB0aGlzLmxlbmd0aCA9IHRoaXMuZGF0YS5sZW5ndGggKyAyXG59XG5cbk1sTmF0LnByb3RvdHlwZS5jYW1sX2N1c3RvbSA9IFwiX25hdFwiO1xuXG4vL1Byb3ZpZGVzOiBjYW1sX2hhc2hfbmF0XG4vL1JlcXVpcmVzOiBjYW1sX2hhc2hfbWl4X2ludCwgbnVtX2RpZ2l0c19uYXRcbmZ1bmN0aW9uIGNhbWxfaGFzaF9uYXQoeCkge1xuICB2YXIgbGVuID0gbnVtX2RpZ2l0c19uYXQoeCwgMCwgeC5kYXRhLmxlbmd0aCk7XG4gIHZhciBoID0gMDtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW47IGkrKykge1xuICAgIGggPSBjYW1sX2hhc2hfbWl4X2ludChoLCB4LmRhdGFbaV0pO1xuICB9XG4gIHJldHVybiBoO1xufVxuXG5cbi8vUHJvdmlkZXM6IG5hdF9vZl9hcnJheVxuLy9SZXF1aXJlczogTWxOYXRcbmZ1bmN0aW9uIG5hdF9vZl9hcnJheShsKXtcbiAgcmV0dXJuIG5ldyBNbE5hdChsKTtcbn1cblxuLy9Qcm92aWRlczogY3JlYXRlX25hdFxuLy9SZXF1aXJlczogTWxOYXRcbmZ1bmN0aW9uIGNyZWF0ZV9uYXQoc2l6ZSkge1xuICB2YXIgYXJyID0gbmV3IE1sTmF0KHNpemUpO1xuICBmb3IodmFyIGkgPSAwOyBpIDwgc2l6ZTsgaSsrKSB7XG4gICAgYXJyLmRhdGFbaV0gPSAtMTtcbiAgfVxuICByZXR1cm4gYXJyO1xufVxuXG4vL1Byb3ZpZGVzOiBzZXRfdG9femVyb19uYXRcbmZ1bmN0aW9uIHNldF90b196ZXJvX25hdChuYXQsIG9mcywgbGVuKSB7XG4gIGZvcih2YXIgaSA9IDA7IGkgPCBsZW47IGkrKykge1xuICAgIG5hdC5kYXRhW29mcytpXSA9IDA7XG4gIH1cbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGJsaXRfbmF0XG5mdW5jdGlvbiBibGl0X25hdChuYXQxLCBvZnMxLCBuYXQyLCBvZnMyLCBsZW4pIHtcbiAgZm9yKHZhciBpID0gMDsgaSA8IGxlbjsgaSsrKSB7XG4gICAgbmF0MS5kYXRhW29mczEraV0gPSBuYXQyLmRhdGFbb2ZzMitpXTtcbiAgfVxuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogc2V0X2RpZ2l0X25hdFxuZnVuY3Rpb24gc2V0X2RpZ2l0X25hdChuYXQsIG9mcywgZGlnaXQpIHtcbiAgbmF0LmRhdGFbb2ZzXSA9IGRpZ2l0O1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogbnRoX2RpZ2l0X25hdFxuZnVuY3Rpb24gbnRoX2RpZ2l0X25hdChuYXQsIG9mcykge1xuICByZXR1cm4gbmF0LmRhdGFbb2ZzXTtcbn1cblxuLy9Qcm92aWRlczogc2V0X2RpZ2l0X25hdF9uYXRpdmVcbmZ1bmN0aW9uIHNldF9kaWdpdF9uYXRfbmF0aXZlKG5hdCwgb2ZzLCBkaWdpdCkge1xuICBuYXQuZGF0YVtvZnNdID0gZGlnaXQ7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBudGhfZGlnaXRfbmF0X25hdGl2ZVxuZnVuY3Rpb24gbnRoX2RpZ2l0X25hdF9uYXRpdmUobmF0LCBvZnMpIHtcbiAgcmV0dXJuIG5hdC5kYXRhW29mc107XG59XG5cbi8vUHJvdmlkZXM6IG51bV9kaWdpdHNfbmF0XG5mdW5jdGlvbiBudW1fZGlnaXRzX25hdChuYXQsIG9mcywgbGVuKSB7XG4gIGZvcih2YXIgaSA9IGxlbiAtIDE7IGkgPj0gMDsgaS0tKSB7XG4gICAgaWYobmF0LmRhdGFbb2ZzK2ldICE9IDApIHJldHVybiBpKzE7XG4gIH1cbiAgcmV0dXJuIDE7IC8vIDAgY291bnRzIGFzIDEgZGlnaXRcbn1cblxuLy9Qcm92aWRlczogbnVtX2xlYWRpbmdfemVyb19iaXRzX2luX2RpZ2l0XG5mdW5jdGlvbiBudW1fbGVhZGluZ196ZXJvX2JpdHNfaW5fZGlnaXQobmF0LCBvZnMpIHtcbiAgdmFyIGEgPSBuYXQuZGF0YVtvZnNdO1xuICB2YXIgYiA9IDA7XG4gIGlmKGEgJiAweEZGRkYwMDAwKSB7IGIgKz0xNjsgYSA+Pj49MTY7IH1cbiAgaWYoYSAmIDB4RkYwMCkgICAgIHsgYiArPSA4OyBhID4+Pj0gODsgfVxuICBpZihhICYgMHhGMCkgICAgICAgeyBiICs9IDQ7IGEgPj4+PSA0OyB9XG4gIGlmKGEgJiAxMikgICAgICAgICB7IGIgKz0gMjsgYSA+Pj49IDI7IH1cbiAgaWYoYSAmIDIpICAgICAgICAgIHsgYiArPSAxOyBhID4+Pj0gMTsgfVxuICBpZihhICYgMSkgICAgICAgICAgeyBiICs9IDE7IH1cbiAgcmV0dXJuIDMyIC0gYjtcbn1cblxuLy9Qcm92aWRlczogaXNfZGlnaXRfaW50XG5mdW5jdGlvbiBpc19kaWdpdF9pbnQobmF0LCBvZnMpIHtcbiAgaWYgKG5hdC5kYXRhW29mc10gPj0gMCkgcmV0dXJuIDFcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGlzX2RpZ2l0X3plcm9cbmZ1bmN0aW9uIGlzX2RpZ2l0X3plcm8obmF0LCBvZnMpIHtcbiAgaWYobmF0LmRhdGFbb2ZzXSA9PSAwKSByZXR1cm4gMTtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGlzX2RpZ2l0X29kZFxuZnVuY3Rpb24gaXNfZGlnaXRfb2RkKG5hdCwgb2ZzKSB7XG4gIGlmKG5hdC5kYXRhW29mc10gJiAxKSByZXR1cm4gMTtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGluY3JfbmF0XG5mdW5jdGlvbiBpbmNyX25hdChuYXQsIG9mcywgbGVuLCBjYXJyeV9pbikge1xuICB2YXIgY2FycnkgPSBjYXJyeV9pbjtcbiAgZm9yKHZhciBpID0gMDsgaSA8IGxlbjsgaSsrKSB7XG4gICAgdmFyIHggPSAobmF0LmRhdGFbb2ZzK2ldID4+PiAwKSArIGNhcnJ5O1xuICAgIG5hdC5kYXRhW29mcytpXSA9ICh4IHwgMCk7XG4gICAgaWYoeCA9PSAoeCA+Pj4gMCkpIHtcbiAgICAgIGNhcnJ5ID0gMDtcbiAgICAgIGJyZWFrO1xuICAgIH0gZWxzZSB7XG4gICAgICBjYXJyeSA9IDE7XG4gICAgfVxuICB9XG4gIHJldHVybiBjYXJyeTtcbn1cblxuLy8gbGVuMSA+PSBsZW4yXG4vL1Byb3ZpZGVzOiBhZGRfbmF0XG4vL1JlcXVpcmVzOiBpbmNyX25hdFxuZnVuY3Rpb24gYWRkX25hdChuYXQxLCBvZnMxLCBsZW4xLCBuYXQyLCBvZnMyLCBsZW4yLCBjYXJyeV9pbikge1xuICB2YXIgY2FycnkgPSBjYXJyeV9pbjtcbiAgZm9yKHZhciBpID0gMDsgaSA8IGxlbjI7IGkrKykge1xuICAgIHZhciB4ID0gKG5hdDEuZGF0YVtvZnMxK2ldID4+PiAwKSArIChuYXQyLmRhdGFbb2ZzMitpXSA+Pj4gMCkgKyBjYXJyeTtcbiAgICBuYXQxLmRhdGFbb2ZzMStpXSA9IHhcbiAgICBpZih4ID09ICh4ID4+PiAwKSkge1xuICAgICAgY2FycnkgPSAwO1xuICAgIH0gZWxzZSB7XG4gICAgICBjYXJyeSA9IDE7XG4gICAgfVxuICB9XG4gIHJldHVybiBpbmNyX25hdChuYXQxLCBvZnMxK2xlbjIsIGxlbjEtbGVuMiwgY2FycnkpO1xufVxuXG4vL1Byb3ZpZGVzOiBjb21wbGVtZW50X25hdFxuZnVuY3Rpb24gY29tcGxlbWVudF9uYXQobmF0LCBvZnMsIGxlbikge1xuICBmb3IodmFyIGkgPSAwOyBpIDwgbGVuOyBpKyspIHtcbiAgICBuYXQuZGF0YVtvZnMraV0gPSAoLTEgPj4+IDApIC0gKG5hdC5kYXRhW29mcytpXSA+Pj4gMCk7XG4gIH1cbn1cblxuLy8gb2NhbWwgZmxpcHMgY2FycnlfaW5cbi8vUHJvdmlkZXM6IGRlY3JfbmF0XG5mdW5jdGlvbiBkZWNyX25hdChuYXQsIG9mcywgbGVuLCBjYXJyeV9pbikge1xuICB2YXIgYm9ycm93ID0gKGNhcnJ5X2luID09IDEpID8gMCA6IDE7XG4gIGZvcih2YXIgaSA9IDA7IGkgPCBsZW47IGkrKykge1xuICAgIHZhciB4ID0gKG5hdC5kYXRhW29mcytpXSA+Pj4wKSAtIGJvcnJvdztcbiAgICBuYXQuZGF0YVtvZnMraV0gPSB4O1xuICAgIGlmICh4ID49IDApIHtcbiAgICAgIGJvcnJvdyA9IDA7XG4gICAgICBicmVhaztcbiAgICB9IGVsc2Uge1xuICAgICAgYm9ycm93ID0gMTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIChib3Jyb3cgPT0gMSkgPyAwIDogMTtcbn1cblxuLy8gb2NhbWwgZmxpcHMgY2FycnlfaW5cbi8vIGxlbjEgPj0gbGVuMlxuLy9Qcm92aWRlczogc3ViX25hdFxuLy9SZXF1aXJlczogZGVjcl9uYXRcbmZ1bmN0aW9uIHN1Yl9uYXQobmF0MSwgb2ZzMSwgbGVuMSwgbmF0Miwgb2ZzMiwgbGVuMiwgY2FycnlfaW4pIHtcbiAgdmFyIGJvcnJvdyA9IChjYXJyeV9pbiA9PSAxKSA/IDAgOiAxO1xuICBmb3IodmFyIGkgPSAwOyBpIDwgbGVuMjsgaSsrKSB7XG4gICAgdmFyIHggPSAobmF0MS5kYXRhW29mczEraV0gPj4+IDApIC0gKG5hdDIuZGF0YVtvZnMyK2ldID4+PiAwKSAtIGJvcnJvdztcbiAgICBuYXQxLmRhdGFbb2ZzMStpXSA9IHg7XG4gICAgaWYgKHggPj0gMCkge1xuICAgICAgYm9ycm93ID0gMDtcbiAgICB9IGVsc2Uge1xuICAgICAgYm9ycm93ID0gMTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIGRlY3JfbmF0KG5hdDEsIG9mczErbGVuMiwgbGVuMS1sZW4yLCAoYm9ycm93PT0xKT8wOjEpO1xufVxuXG4vLyBuYXQxICs9IG5hdDIgKiBuYXQzW29mczNdXG4vLyBsZW4xID49IGxlbjJcbi8vUHJvdmlkZXM6IG11bHRfZGlnaXRfbmF0XG4vL1JlcXVpcmVzOiBhZGRfbmF0LCBuYXRfb2ZfYXJyYXlcbmZ1bmN0aW9uIG11bHRfZGlnaXRfbmF0KG5hdDEsIG9mczEsIGxlbjEsIG5hdDIsIG9mczIsIGxlbjIsIG5hdDMsIG9mczMpIHtcbiAgdmFyIGNhcnJ5ID0gMDtcbiAgdmFyIGEgPSAobmF0My5kYXRhW29mczNdID4+PiAwKTtcbiAgZm9yKHZhciBpID0gMDsgaSA8IGxlbjI7IGkrKykge1xuICAgIHZhciB4MSA9IChuYXQxLmRhdGFbb2ZzMStpXSA+Pj4gMCkgKyAobmF0Mi5kYXRhW29mczIraV0gPj4+IDApICogKGEgJiAweDAwMDBGRkZGKSArIGNhcnJ5O1xuICAgIHZhciB4MiA9IChuYXQyLmRhdGFbb2ZzMitpXSA+Pj4gMCkgKiAoYSA+Pj4gMTYpO1xuICAgIGNhcnJ5ID0gTWF0aC5mbG9vcih4Mi82NTUzNik7XG4gICAgdmFyIHgzID0geDEgKyAoeDIgJSA2NTUzNikgKiA2NTUzNjtcbiAgICBuYXQxLmRhdGFbb2ZzMStpXSA9IHgzO1xuICAgIGNhcnJ5ICs9IE1hdGguZmxvb3IoeDMvNDI5NDk2NzI5Nik7XG4gIH1cblxuICBpZihsZW4yIDwgbGVuMSAmJiBjYXJyeSkge1xuICAgIHJldHVybiBhZGRfbmF0KG5hdDEsIG9mczErbGVuMiwgbGVuMS1sZW4yLCBuYXRfb2ZfYXJyYXkoW2NhcnJ5XSksIDAsIDEsIDApO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiBjYXJyeTtcbiAgfVxufVxuXG4vLyBuYXQxICs9IG5hdDIgKiBuYXQzXG4vLyBsZW4xID49IGxlbjIgKyBsZW4zLlxuLy9Qcm92aWRlczogbXVsdF9uYXRcbi8vUmVxdWlyZXM6IG11bHRfZGlnaXRfbmF0XG5mdW5jdGlvbiBtdWx0X25hdChuYXQxLCBvZnMxLCBsZW4xLCBuYXQyLCBvZnMyLCBsZW4yLCBuYXQzLCBvZnMzLCBsZW4zKSB7XG4gIHZhciBjYXJyeSA9IDA7XG4gIGZvcih2YXIgaSA9IDA7IGkgPCBsZW4zOyBpKyspIHtcbiAgICBjYXJyeSArPSBtdWx0X2RpZ2l0X25hdChuYXQxLCBvZnMxK2ksIGxlbjEtaSwgbmF0Miwgb2ZzMiwgbGVuMiwgbmF0Mywgb2ZzMytpKTtcbiAgfVxuICByZXR1cm4gY2Fycnk7XG59XG5cbi8vIG5hdDEgPSAyICogbmF0MSArIG5hdDIgKiBuYXQyXG4vLyBsZW4xID49IDIgKiBsZW4yXG4vL1Byb3ZpZGVzOiBzcXVhcmVfbmF0XG4vL1JlcXVpcmVzOiBtdWx0X25hdCwgYWRkX25hdFxuZnVuY3Rpb24gc3F1YXJlX25hdChuYXQxLCBvZnMxLCBsZW4xLCBuYXQyLCBvZnMyLCBsZW4yKSB7XG4gIHZhciBjYXJyeSA9IDA7XG4gIGNhcnJ5ICs9IGFkZF9uYXQobmF0MSwgb2ZzMSwgbGVuMSwgbmF0MSwgb2ZzMSwgbGVuMSwgMCk7XG4gIGNhcnJ5ICs9IG11bHRfbmF0KG5hdDEsIG9mczEsIGxlbjEsIG5hdDIsIG9mczIsIGxlbjIsIG5hdDIsIG9mczIsIGxlbjIpO1xuICByZXR1cm4gY2Fycnk7XG59XG5cblxuLy8gMCA8PSBzaGlmdCA8IDMyXG4vL1Byb3ZpZGVzOiBzaGlmdF9sZWZ0X25hdFxuZnVuY3Rpb24gc2hpZnRfbGVmdF9uYXQobmF0MSwgb2ZzMSwgbGVuMSwgbmF0Miwgb2ZzMiwgbmJpdHMpIHtcbiAgaWYobmJpdHMgPT0gMCkge1xuICAgIG5hdDIuZGF0YVtvZnMyXSA9IDA7XG4gICAgcmV0dXJuIDA7XG4gIH1cbiAgdmFyIHdyYXAgPSAwO1xuICBmb3IodmFyIGkgPSAwOyBpIDwgbGVuMTsgaSsrKSB7XG4gICAgdmFyIGEgPSAobmF0MS5kYXRhW29mczEraV0gPj4+IDApO1xuICAgIG5hdDEuZGF0YVtvZnMxK2ldID0gKGEgPDwgbmJpdHMpIHwgd3JhcDtcbiAgICB3cmFwID0gYSA+Pj4gKDMyIC0gbmJpdHMpO1xuICB9XG4gIG5hdDIuZGF0YVtvZnMyXSA9IHdyYXA7XG4gIHJldHVybiAwO1xufVxuXG4vLyBBc3N1bWluZyBjID4gYSwgcmV0dXJucyBbcXVvdGllbnQsIHJlbWFpbmRlcl0gb2YgKGE8PDMyICsgYikvY1xuLy9Qcm92aWRlczogZGl2X2hlbHBlclxuZnVuY3Rpb24gZGl2X2hlbHBlcihhLCBiLCBjKSB7XG4gIHZhciB4ID0gYSAqIDY1NTM2ICsgKGI+Pj4xNik7XG4gIHZhciB5ID0gTWF0aC5mbG9vcih4L2MpICogNjU1MzY7XG4gIHZhciB6ID0gKHggJSBjKSAqIDY1NTM2O1xuICB2YXIgdyA9IHogKyAoYiAmIDB4MDAwMEZGRkYpO1xuICByZXR1cm4gW3kgKyBNYXRoLmZsb29yKHcvYyksIHcgJSBjXTtcbn1cblxuLy8gbmF0MVtvZnMxK2xlbl0gPCBuYXQyW29mczJdXG4vL1Byb3ZpZGVzOiBkaXZfZGlnaXRfbmF0XG4vL1JlcXVpcmVzOiBkaXZfaGVscGVyXG5mdW5jdGlvbiBkaXZfZGlnaXRfbmF0KG5hdHEsIG9mc3EsIG5hdHIsIG9mc3IsIG5hdDEsIG9mczEsIGxlbiwgbmF0Miwgb2ZzMikge1xuICB2YXIgcmVtID0gKG5hdDEuZGF0YVtvZnMxK2xlbi0xXSA+Pj4wKTtcbiAgLy8gbmF0cVtvZnNxK2xlbi0xXSBpcyBndWFyYW50ZWVkIHRvIGJlIHplcm8gKGR1ZSB0byB0aGUgTVNEIHJlcXVpcmVtZW50KSxcbiAgLy8gYW5kIHNob3VsZCBub3QgYmUgd3JpdHRlbiB0by5cbiAgZm9yKHZhciBpID0gbGVuLTI7IGkgPj0gMDsgaS0tKSB7XG4gICAgdmFyIHggPSBkaXZfaGVscGVyKHJlbSwgKG5hdDEuZGF0YVtvZnMxK2ldID4+PiAwKSwgKG5hdDIuZGF0YVtvZnMyXSA+Pj4gMCkpO1xuICAgIG5hdHEuZGF0YVtvZnNxK2ldID0geFswXTtcbiAgICByZW0gPSB4WzFdO1xuICB9XG4gIG5hdHIuZGF0YVtvZnNyXSA9IHJlbTtcbiAgcmV0dXJuIDA7XG59XG5cbi8vIG5hdDFbbmF0MjpdIDo9IG5hdDEgLyBuYXQyXG4vLyBuYXQxWzpuYXQyXSA6PSBuYXQxICUgbmF0MlxuLy8gbGVuMSA+IGxlbjIsIG5hdDJbb2ZzMitsZW4yLTFdID4gbmF0MVtvZnMxK2xlbjEtMV1cbi8vUHJvdmlkZXM6IGRpdl9uYXRcbi8vUmVxdWlyZXM6IGRpdl9kaWdpdF9uYXQsIGRpdl9oZWxwZXIsIG51bV9sZWFkaW5nX3plcm9fYml0c19pbl9kaWdpdCwgc2hpZnRfbGVmdF9uYXQsIHNoaWZ0X3JpZ2h0X25hdCwgY3JlYXRlX25hdCwgc2V0X3RvX3plcm9fbmF0LCBtdWx0X2RpZ2l0X25hdCwgc3ViX25hdCwgY29tcGFyZV9uYXQsIG5hdF9vZl9hcnJheVxuZnVuY3Rpb24gZGl2X25hdChuYXQxLCBvZnMxLCBsZW4xLCBuYXQyLCBvZnMyLCBsZW4yKSB7XG4gIGlmKGxlbjIgPT0gMSkge1xuICAgIGRpdl9kaWdpdF9uYXQobmF0MSwgb2ZzMSsxLCBuYXQxLCBvZnMxLCBuYXQxLCBvZnMxLCBsZW4xLCBuYXQyLCBvZnMyKTtcbiAgICByZXR1cm4gMDtcbiAgfVxuXG4gIHZhciBzID0gbnVtX2xlYWRpbmdfemVyb19iaXRzX2luX2RpZ2l0KG5hdDIsIG9mczIrbGVuMi0xKTtcbiAgc2hpZnRfbGVmdF9uYXQobmF0Miwgb2ZzMiwgbGVuMiwgbmF0X29mX2FycmF5KFswXSksIDAsIHMpO1xuICBzaGlmdF9sZWZ0X25hdChuYXQxLCBvZnMxLCBsZW4xLCBuYXRfb2ZfYXJyYXkoWzBdKSwgMCwgcyk7XG5cbiAgdmFyIGQgPSAobmF0Mi5kYXRhW29mczIrbGVuMi0xXSA+Pj4gMCkgKyAxO1xuICB2YXIgYSA9IGNyZWF0ZV9uYXQobGVuMisxKTtcbiAgZm9yICh2YXIgaSA9IGxlbjEgLSAxOyBpID49IGxlbjI7IGktLSkge1xuICAgIC8vIERlY2VudCBsb3dlciBib3VuZCBvbiBxdW9cbiAgICB2YXIgcXVvID0gZCA9PSA0Mjk0OTY3Mjk2ID8gKG5hdDEuZGF0YVtvZnMxK2ldID4+PiAwKSA6IGRpdl9oZWxwZXIoKG5hdDEuZGF0YVtvZnMxK2ldID4+PiAwKSwgKG5hdDEuZGF0YVtvZnMxK2ktMV0gPj4+MCksIGQpWzBdO1xuICAgIHNldF90b196ZXJvX25hdChhLCAwLCBsZW4yKzEpO1xuICAgIG11bHRfZGlnaXRfbmF0KGEsIDAsIGxlbjIrMSwgbmF0Miwgb2ZzMiwgbGVuMiwgbmF0X29mX2FycmF5KFtxdW9dKSwgMCk7XG4gICAgc3ViX25hdChuYXQxLCBvZnMxK2ktbGVuMiwgbGVuMisxLCBhLCAwLCBsZW4yKzEsIDEpO1xuXG4gICAgd2hpbGUgKG5hdDEuZGF0YVtvZnMxK2ldICE9IDAgfHwgY29tcGFyZV9uYXQobmF0MSwgb2ZzMStpLWxlbjIsIGxlbjIsIG5hdDIsIG9mczIsIGxlbjIpID49IDApIHtcbiAgICAgIHF1byA9IHF1byArIDE7XG4gICAgICBzdWJfbmF0KG5hdDEsIG9mczEraS1sZW4yLCBsZW4yKzEsIG5hdDIsIG9mczIsIGxlbjIsIDEpO1xuICAgIH1cblxuICAgIG5hdDEuZGF0YVtvZnMxK2ldID0gcXVvO1xuICB9XG5cbiAgc2hpZnRfcmlnaHRfbmF0KG5hdDEsIG9mczEsIGxlbjIsIG5hdF9vZl9hcnJheShbMF0pLCAwLCBzKTsgLy8gc2hpZnQgcmVtYWluZGVyXG4gIHNoaWZ0X3JpZ2h0X25hdChuYXQyLCBvZnMyLCBsZW4yLCBuYXRfb2ZfYXJyYXkoWzBdKSwgMCwgcyk7IC8vIHJlc3RvcmVcbiAgcmV0dXJuIDA7XG59XG5cblxuLy8gMCA8PSBzaGlmdCA8IDMyXG4vL1Byb3ZpZGVzOiBzaGlmdF9yaWdodF9uYXRcbmZ1bmN0aW9uIHNoaWZ0X3JpZ2h0X25hdChuYXQxLCBvZnMxLCBsZW4xLCBuYXQyLCBvZnMyLCBuYml0cykge1xuICBpZihuYml0cyA9PSAwKSB7XG4gICAgbmF0Mi5kYXRhW29mczJdID0gMDtcbiAgICByZXR1cm4gMDtcbiAgfVxuICB2YXIgd3JhcCA9IDA7XG4gIGZvcih2YXIgaSA9IGxlbjEtMTsgaSA+PSAwOyBpLS0pIHtcbiAgICB2YXIgYSA9IG5hdDEuZGF0YVtvZnMxK2ldID4+PiAwO1xuICAgIG5hdDEuZGF0YVtvZnMxK2ldID0gKGEgPj4+IG5iaXRzKSB8IHdyYXA7XG4gICAgd3JhcCA9IGEgPDwgKDMyIC0gbmJpdHMpO1xuICB9XG4gIG5hdDIuZGF0YVtvZnMyXSA9IHdyYXA7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjb21wYXJlX2RpZ2l0c19uYXRcbmZ1bmN0aW9uIGNvbXBhcmVfZGlnaXRzX25hdChuYXQxLCBvZnMxLCBuYXQyLCBvZnMyKSB7XG4gIGlmKG5hdDEuZGF0YVtvZnMxXSA+IG5hdDIuZGF0YVtvZnMyXSkgcmV0dXJuIDE7XG4gIGlmKG5hdDEuZGF0YVtvZnMxXSA8IG5hdDIuZGF0YVtvZnMyXSkgcmV0dXJuIC0xO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY29tcGFyZV9uYXRcbi8vUmVxdWlyZXM6IG51bV9kaWdpdHNfbmF0XG5mdW5jdGlvbiBjb21wYXJlX25hdChuYXQxLCBvZnMxLCBsZW4xLCBuYXQyLCBvZnMyLCBsZW4yKSB7XG4gIHZhciBhID0gbnVtX2RpZ2l0c19uYXQobmF0MSwgb2ZzMSwgbGVuMSk7XG4gIHZhciBiID0gbnVtX2RpZ2l0c19uYXQobmF0Miwgb2ZzMiwgbGVuMik7XG4gIGlmKGEgPiBiKSByZXR1cm4gMTtcbiAgaWYoYSA8IGIpIHJldHVybiAtMTtcbiAgZm9yKHZhciBpID0gbGVuMSAtIDE7IGkgPj0gMDsgaS0tKSB7XG4gICAgaWYgKChuYXQxLmRhdGFbb2ZzMStpXSA+Pj4gMCkgPiAobmF0Mi5kYXRhW29mczIraV0gPj4+IDApKSByZXR1cm4gMTtcbiAgICBpZiAoKG5hdDEuZGF0YVtvZnMxK2ldID4+PiAwKSA8IChuYXQyLmRhdGFbb2ZzMitpXSA+Pj4gMCkpIHJldHVybiAtMTtcbiAgfVxuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY29tcGFyZV9uYXRfcmVhbFxuLy9SZXF1aXJlczogY29tcGFyZV9uYXRcbmZ1bmN0aW9uIGNvbXBhcmVfbmF0X3JlYWwobmF0MSxuYXQyKXtcbiAgcmV0dXJuIGNvbXBhcmVfbmF0KG5hdDEsMCxuYXQxLmRhdGEubGVuZ3RoLG5hdDIsMCxuYXQyLmRhdGEubGVuZ3RoKTtcbn1cblxuLy9Qcm92aWRlczogbGFuZF9kaWdpdF9uYXRcbmZ1bmN0aW9uIGxhbmRfZGlnaXRfbmF0KG5hdDEsIG9mczEsIG5hdDIsIG9mczIpIHtcbiAgbmF0MS5kYXRhW29mczFdICY9IG5hdDIuZGF0YVtvZnMyXTtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGxvcl9kaWdpdF9uYXRcbmZ1bmN0aW9uIGxvcl9kaWdpdF9uYXQobmF0MSwgb2ZzMSwgbmF0Miwgb2ZzMikge1xuICBuYXQxLmRhdGFbb2ZzMV0gfD0gbmF0Mi5kYXRhW29mczJdO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogbHhvcl9kaWdpdF9uYXRcbmZ1bmN0aW9uIGx4b3JfZGlnaXRfbmF0KG5hdDEsIG9mczEsIG5hdDIsIG9mczIpIHtcbiAgbmF0MS5kYXRhW29mczFdIF49IG5hdDIuZGF0YVtvZnMyXTtcbiAgcmV0dXJuIDA7XG59XG5cblxuLy9Qcm92aWRlczogc2VyaWFsaXplX25hdFxuZnVuY3Rpb24gc2VyaWFsaXplX25hdCh3cml0ZXIsIG5hdCwgc3ope1xuICB2YXIgbGVuID0gbmF0LmRhdGEubGVuZ3RoO1xuICB3cml0ZXIud3JpdGUoMzIsIGxlbik7XG4gIGZvcih2YXIgaSA9IDA7IGkgPCBsZW47IGkrKyl7XG4gICAgd3JpdGVyLndyaXRlKDMyLCBuYXQuZGF0YVtpXSk7XG4gIH1cbiAgc3pbMF0gPSBsZW4gKiA0O1xuICBzelsxXSA9IGxlbiAqIDg7XG59XG5cbi8vUHJvdmlkZXM6IGRlc2VyaWFsaXplX25hdFxuLy9SZXF1aXJlczogTWxOYXRcbmZ1bmN0aW9uIGRlc2VyaWFsaXplX25hdChyZWFkZXIsIHN6KXtcbiAgdmFyIGxlbiA9IHJlYWRlci5yZWFkMzJzKCk7XG4gIHZhciBuYXQgPSBuZXcgTWxOYXQobGVuKTtcbiAgZm9yKHZhciBpID0gMDsgaSA8IGxlbjsgaSsrKXtcbiAgICBuYXQuZGF0YVtpXSA9IHJlYWRlci5yZWFkMzJzKCk7XG4gIH1cbiAgc3pbMF0gPSBsZW4gKiA0O1xuICByZXR1cm4gbmF0O1xufVxuIiwiLy8gSnNfb2Zfb2NhbWwgcnVudGltZSBzdXBwb3J0XG4vLyBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL2pzX29mX29jYW1sL1xuLy8gQ29weXJpZ2h0IChDKSAyMDE0IEh1Z28gSGV1emFyZFxuXG4vLyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuLy8gaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4vLyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoIGxpbmtpbmcgZXhjZXB0aW9uO1xuLy8gZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuXG4vLyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbi8vIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4vLyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlXG4vLyBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cblxuLy8gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4vLyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuLy8gRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cblxuLy9Qcm92aWRlczogY2FtbF9ncl9zdGF0ZVxudmFyIGNhbWxfZ3Jfc3RhdGU7XG5cbi8vUHJvdmlkZXM6IGNhbWxfZ3Jfc3RhdGVfZ2V0XG4vL1JlcXVpcmVzOiBjYW1sX2dyX3N0YXRlXG4vL1JlcXVpcmVzOiBjYW1sX25hbWVkX3ZhbHVlLCBjYW1sX3N0cmluZ19vZl9qc2J5dGVzXG4vL1JlcXVpcmVzOiBjYW1sX21heWJlX2F0dGFjaF9iYWNrdHJhY2VcbmZ1bmN0aW9uIGNhbWxfZ3Jfc3RhdGVfZ2V0KCkge1xuICBpZihjYW1sX2dyX3N0YXRlKSB7XG4gICAgcmV0dXJuIGNhbWxfZ3Jfc3RhdGU7XG4gIH1cbiAgdGhyb3cgY2FtbF9tYXliZV9hdHRhY2hfYmFja3RyYWNlKFswLGNhbWxfbmFtZWRfdmFsdWUoXCJHcmFwaGljcy5HcmFwaGljX2ZhaWx1cmVcIiksIGNhbWxfc3RyaW5nX29mX2pzYnl0ZXMoXCJOb3QgaW5pdGlhbGl6ZWRcIildKTtcbn1cbi8vUHJvdmlkZXM6IGNhbWxfZ3Jfc3RhdGVfc2V0XG4vL1JlcXVpcmVzOiBjYW1sX2dyX3N0YXRlLGNhbWxfZ3Jfc3RhdGVfaW5pdFxuZnVuY3Rpb24gY2FtbF9ncl9zdGF0ZV9zZXQoY3R4KSB7XG4gIGNhbWxfZ3Jfc3RhdGU9Y3R4O1xuICBjYW1sX2dyX3N0YXRlX2luaXQoKVxuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ncl9vcGVuX2dyYXBoXG4vL1JlcXVpcmVzOiBjYW1sX2dyX3N0YXRlX2NyZWF0ZVxuLy9SZXF1aXJlczogY2FtbF9ncl9zdGF0ZV9zZXRcbi8vUmVxdWlyZXM6IGNhbWxfZmFpbHdpdGhcbi8vUmVxdWlyZXM6IGNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nXG5mdW5jdGlvbiBjYW1sX2dyX29wZW5fZ3JhcGgoaW5mbyl7XG4gIHZhciBpbmZvID0gY2FtbF9qc3N0cmluZ19vZl9zdHJpbmcoaW5mbyk7XG4gIGZ1bmN0aW9uIGdldChuYW1lKXtcbiAgICB2YXIgcmVzID0gaW5mby5tYXRjaChcIihefCwpICpcIituYW1lK1wiICo9ICooW2EtekEtWjAtOV9dKykgKigsfCQpXCIpO1xuICAgIGlmKHJlcykgcmV0dXJuIHJlc1syXTtcbiAgfVxuICB2YXIgc3BlY3MgPSBbXTtcbiAgaWYoIShpbmZvPT1cIlwiKSkgc3BlY3MucHVzaChpbmZvKTtcbiAgdmFyIHRhcmdldCA9IGdldChcInRhcmdldFwiKTtcbiAgaWYoIXRhcmdldCkgdGFyZ2V0PVwiXCI7XG4gIHZhciBzdGF0dXMgPSBnZXQoXCJzdGF0dXNcIik7XG4gIGlmKCFzdGF0dXMpIHNwZWNzLnB1c2goXCJzdGF0dXM9MVwiKVxuXG4gIHZhciB3ID0gZ2V0KFwid2lkdGhcIik7XG4gIHcgPSB3P3BhcnNlSW50KHcpOjIwMDtcbiAgc3BlY3MucHVzaChcIndpZHRoPVwiK3cpO1xuXG4gIHZhciBoID0gZ2V0KFwiaGVpZ2h0XCIpO1xuICBoID0gaD9wYXJzZUludChoKToyMDA7XG4gIHNwZWNzLnB1c2goXCJoZWlnaHQ9XCIraCk7XG5cbiAgdmFyIHdpbiA9IGdsb2JhbFRoaXMub3BlbihcImFib3V0OmJsYW5rXCIsdGFyZ2V0LHNwZWNzLmpvaW4oXCIsXCIpKTtcbiAgaWYoIXdpbikge2NhbWxfZmFpbHdpdGgoXCJHcmFwaGljcy5vcGVuX2dyYXBoOiBjYW5ub3Qgb3BlbiB0aGUgd2luZG93XCIpfVxuICB2YXIgZG9jID0gd2luLmRvY3VtZW50O1xuICB2YXIgY2FudmFzID0gZG9jLmNyZWF0ZUVsZW1lbnQoXCJjYW52YXNcIik7XG4gIGNhbnZhcy53aWR0aCA9IHc7XG4gIGNhbnZhcy5oZWlnaHQgPSBoO1xuICB2YXIgY3R4ID0gY2FtbF9ncl9zdGF0ZV9jcmVhdGUoY2FudmFzLHcsaCk7XG4gIGN0eC5zZXRfdGl0bGUgPSBmdW5jdGlvbiAodGl0bGUpIHtcbiAgICBkb2MudGl0bGUgPSB0aXRsZTtcbiAgfTtcbiAgY2FtbF9ncl9zdGF0ZV9zZXQoY3R4KTtcbiAgdmFyIGJvZHkgPSBkb2MuYm9keTtcbiAgYm9keS5zdHlsZS5tYXJnaW4gPSBcIjBweFwiO1xuICBib2R5LmFwcGVuZENoaWxkKGNhbnZhcyk7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2dyX3N0YXRlX2luaXRcbi8vUmVxdWlyZXM6IGNhbWxfZ3Jfc3RhdGVcbi8vUmVxdWlyZXM6IGNhbWxfZ3Jfc2V0X2NvbG9yLGNhbWxfZ3JfbW92ZXRvLGNhbWxfZ3JfcmVzaXplX3dpbmRvd1xuLy9SZXF1aXJlczogY2FtbF9ncl9zZXRfbGluZV93aWR0aCxjYW1sX2dyX3NldF90ZXh0X3NpemUsY2FtbF9ncl9zZXRfZm9udFxuLy9SZXF1aXJlczogY2FtbF9ncl9zZXRfd2luZG93X3RpdGxlXG5mdW5jdGlvbiBjYW1sX2dyX3N0YXRlX2luaXQoKXtcbiAgY2FtbF9ncl9tb3ZldG8oY2FtbF9ncl9zdGF0ZS54LGNhbWxfZ3Jfc3RhdGUueSk7XG4gIGNhbWxfZ3JfcmVzaXplX3dpbmRvdyhjYW1sX2dyX3N0YXRlLndpZHRoLGNhbWxfZ3Jfc3RhdGUuaGVpZ2h0KTtcbiAgY2FtbF9ncl9zZXRfbGluZV93aWR0aChjYW1sX2dyX3N0YXRlLmxpbmVfd2lkdGgpO1xuICBjYW1sX2dyX3NldF90ZXh0X3NpemUoY2FtbF9ncl9zdGF0ZS50ZXh0X3NpemUpO1xuICBjYW1sX2dyX3NldF9mb250KGNhbWxfZ3Jfc3RhdGUuZm9udCk7XG4gIGNhbWxfZ3Jfc2V0X2NvbG9yKGNhbWxfZ3Jfc3RhdGUuY29sb3IpO1xuICBjYW1sX2dyX3NldF93aW5kb3dfdGl0bGUoY2FtbF9ncl9zdGF0ZS50aXRsZSk7XG4gIC8vY2FtbF9ncl9yZXNpemVfd2luZG93IG1pZ2h0IHJlc2V0IHNvbWUgY2FudmFzJyBwcm9wZXJ0aWVzXG4gIGNhbWxfZ3Jfc3RhdGUuY29udGV4dC50ZXh0QmFzZWxpbmUgPSAnYm90dG9tJztcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ncl9zdGF0ZV9jcmVhdGVcbi8vUmVxdWlyZXM6IGNhbWxfc3RyaW5nX29mX2pzYnl0ZXNcbmZ1bmN0aW9uIGNhbWxfZ3Jfc3RhdGVfY3JlYXRlKGNhbnZhcyx3LGgpe1xuICB2YXIgY29udGV4dCA9IGNhbnZhcy5nZXRDb250ZXh0KFwiMmRcIik7XG4gIHJldHVybiB7XG4gICAgY29udGV4dDogY29udGV4dCxcbiAgICBjYW52YXMgOiBjYW52YXMsXG4gICAgeCA6IDAsXG4gICAgeSA6IDAsXG4gICAgd2lkdGggOiB3LFxuICAgIGhlaWdodCA6IGgsXG4gICAgbGluZV93aWR0aCA6IDEsXG4gICAgZm9udCA6IGNhbWxfc3RyaW5nX29mX2pzYnl0ZXMoXCJmaXhlZFwiKSxcbiAgICB0ZXh0X3NpemUgOiAyNixcbiAgICBjb2xvciA6IDB4MDAwMDAwLFxuICAgIHRpdGxlIDogY2FtbF9zdHJpbmdfb2ZfanNieXRlcyhcIlwiKVxuICB9O1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2dyX2RvY19vZl9zdGF0ZVxuZnVuY3Rpb24gY2FtbF9ncl9kb2Nfb2Zfc3RhdGUoc3RhdGUpIHtcbiAgaWYoc3RhdGUuY2FudmFzLm93bmVyRG9jdW1lbnQpXG4gICAgcmV0dXJuIHN0YXRlLmNhbnZhcy5vd25lckRvY3VtZW50O1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2dyX2Nsb3NlX2dyYXBoXG4vL1JlcXVpcmVzOiBjYW1sX2dyX3N0YXRlX2dldFxuZnVuY3Rpb24gY2FtbF9ncl9jbG9zZV9ncmFwaCgpe1xuICB2YXIgcyA9IGNhbWxfZ3Jfc3RhdGVfZ2V0KCk7XG4gIHMuY2FudmFzLndpZHRoID0gMDtcbiAgcy5jYW52YXMuaGVpZ2h0ID0gMDtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZ3Jfc2V0X3dpbmRvd190aXRsZVxuLy9SZXF1aXJlczogY2FtbF9ncl9zdGF0ZV9nZXRcbi8vUmVxdWlyZXM6IGNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nXG5mdW5jdGlvbiBjYW1sX2dyX3NldF93aW5kb3dfdGl0bGUobmFtZSl7XG4gIHZhciBzID0gY2FtbF9ncl9zdGF0ZV9nZXQoKTtcbiAgcy50aXRsZSA9IG5hbWU7XG4gIHZhciBqc25hbWUgPSBjYW1sX2pzc3RyaW5nX29mX3N0cmluZyhuYW1lKTtcbiAgaWYocy5zZXRfdGl0bGUpIHMuc2V0X3RpdGxlKGpzbmFtZSk7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2dyX3Jlc2l6ZV93aW5kb3dcbi8vUmVxdWlyZXM6IGNhbWxfZ3Jfc3RhdGVfZ2V0XG5mdW5jdGlvbiBjYW1sX2dyX3Jlc2l6ZV93aW5kb3codyxoKXtcbiAgdmFyIHMgPSBjYW1sX2dyX3N0YXRlX2dldCgpXG4gIHMud2lkdGggPSB3O1xuICBzLmhlaWdodCA9IGg7XG4gIHMuY2FudmFzLndpZHRoID0gdztcbiAgcy5jYW52YXMuaGVpZ2h0ID0gaDtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZ3JfY2xlYXJfZ3JhcGhcbi8vUmVxdWlyZXM6IGNhbWxfZ3Jfc3RhdGVfZ2V0XG5mdW5jdGlvbiBjYW1sX2dyX2NsZWFyX2dyYXBoKCl7XG4gIHZhciBzID0gY2FtbF9ncl9zdGF0ZV9nZXQoKTtcbiAgcy5jYW52YXMud2lkdGggPSBzLndpZHRoO1xuICBzLmNhbnZhcy5oZWlnaHQgPSBzLmhlaWdodDtcbiAgLy8gIHMuY29udGV4dC5zdHJva2VSZWN0ICgwLiwgMC4sIHMud2lkdGgsIHMuaGVpZ2h0KTtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZ3Jfc2l6ZV94XG4vL1JlcXVpcmVzOiBjYW1sX2dyX3N0YXRlX2dldFxuZnVuY3Rpb24gY2FtbF9ncl9zaXplX3goKXtcbiAgdmFyIHMgPSBjYW1sX2dyX3N0YXRlX2dldCgpO1xuICByZXR1cm4gcy53aWR0aDtcbn1cbi8vUHJvdmlkZXM6IGNhbWxfZ3Jfc2l6ZV95XG4vL1JlcXVpcmVzOiBjYW1sX2dyX3N0YXRlX2dldFxuZnVuY3Rpb24gY2FtbF9ncl9zaXplX3koKXtcbiAgdmFyIHMgPSBjYW1sX2dyX3N0YXRlX2dldCgpO1xuICByZXR1cm4gcy5oZWlnaHQ7XG59XG5cblxuLy9Qcm92aWRlczogY2FtbF9ncl9zZXRfY29sb3Jcbi8vUmVxdWlyZXM6IGNhbWxfZ3Jfc3RhdGVfZ2V0XG5mdW5jdGlvbiBjYW1sX2dyX3NldF9jb2xvcihjb2xvcil7XG4gIHZhciBzID0gY2FtbF9ncl9zdGF0ZV9nZXQoKTtcbiAgZnVuY3Rpb24gY29udmVydChudW1iZXIpIHtcbiAgICB2YXIgc3RyID0gJycgKyBudW1iZXIudG9TdHJpbmcoMTYpO1xuICAgIHdoaWxlIChzdHIubGVuZ3RoIDwgMikgc3RyID0gJzAnICsgc3RyO1xuICAgIHJldHVybiBzdHI7XG4gIH1cbiAgdmFyXG4gIHIgPSAoY29sb3IgPj4gMTYpICYgMHhmZixcbiAgZyA9IChjb2xvciA+PiA4KSAgJiAweGZmLFxuICBiID0gKGNvbG9yID4+IDApICAmIDB4ZmY7XG4gIHMuY29sb3I9Y29sb3I7XG4gIHZhciBjX3N0ciA9ICcjJyArIGNvbnZlcnQocikgKyBjb252ZXJ0KGcpICsgY29udmVydChiKTtcbiAgcy5jb250ZXh0LmZpbGxTdHlsZSA9ICAgY19zdHI7XG4gIHMuY29udGV4dC5zdHJva2VTdHlsZSA9IGNfc3RyO1xuICByZXR1cm4gMDtcbn1cbi8vUHJvdmlkZXM6IGNhbWxfZ3JfcGxvdFxuLy9SZXF1aXJlczogY2FtbF9ncl9zdGF0ZV9nZXRcbmZ1bmN0aW9uIGNhbWxfZ3JfcGxvdCh4LHkpe1xuICB2YXIgcyA9IGNhbWxfZ3Jfc3RhdGVfZ2V0KCk7XG4gIHZhciBpbT1zLmNvbnRleHQuY3JlYXRlSW1hZ2VEYXRhKDEsMSk7XG4gIHZhciBkID0gaW0uZGF0YTtcbiAgdmFyIGNvbG9yID0gcy5jb2xvcjtcbiAgZFswXSA9IChjb2xvciA+PiAxNikgJiAweGZmOyAvL3JcbiAgZFsxXSA9IChjb2xvciA+PiA4KSAgJiAweGZmLCAvL2dcbiAgZFsyXSA9IChjb2xvciA+PiAwKSAgJiAweGZmOyAvL2JcbiAgZFszXSA9IDB4RkY7IC8vYVxuICBzLng9eDtcbiAgcy55PXk7XG4gIHMuY29udGV4dC5wdXRJbWFnZURhdGEoaW0seCxzLmhlaWdodCAtIHkpO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ncl9wb2ludF9jb2xvclxuLy9SZXF1aXJlczogY2FtbF9ncl9zdGF0ZV9nZXRcbmZ1bmN0aW9uIGNhbWxfZ3JfcG9pbnRfY29sb3IoeCx5KXtcbiAgdmFyIHMgPSBjYW1sX2dyX3N0YXRlX2dldCgpO1xuICB2YXIgaW09cy5jb250ZXh0LmdldEltYWdlRGF0YSh4LHMuaGVpZ2h0IC0geSwxLDEpO1xuICB2YXIgZCA9IGltLmRhdGE7XG4gIHJldHVybiAoZFswXSA8PCAxNikgKyAoZFsxXSA8PCA4KSArIGRbMl07XG59XG4vL1Byb3ZpZGVzOiBjYW1sX2dyX21vdmV0b1xuLy9SZXF1aXJlczogY2FtbF9ncl9zdGF0ZV9nZXRcbmZ1bmN0aW9uIGNhbWxfZ3JfbW92ZXRvKHgseSl7XG4gIHZhciBzID0gY2FtbF9ncl9zdGF0ZV9nZXQoKTtcbiAgcy54PXg7XG4gIHMueT15O1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ncl9jdXJyZW50X3hcbi8vUmVxdWlyZXM6IGNhbWxfZ3Jfc3RhdGVfZ2V0XG5mdW5jdGlvbiBjYW1sX2dyX2N1cnJlbnRfeCgpe1xuICB2YXIgcyA9IGNhbWxfZ3Jfc3RhdGVfZ2V0KCk7XG4gIHJldHVybiBzLnhcbn1cbi8vUHJvdmlkZXM6IGNhbWxfZ3JfY3VycmVudF95XG4vL1JlcXVpcmVzOiBjYW1sX2dyX3N0YXRlX2dldFxuZnVuY3Rpb24gY2FtbF9ncl9jdXJyZW50X3koKXtcbiAgdmFyIHMgPSBjYW1sX2dyX3N0YXRlX2dldCgpO1xuICByZXR1cm4gcy55XG59XG4vL1Byb3ZpZGVzOiBjYW1sX2dyX2xpbmV0b1xuLy9SZXF1aXJlczogY2FtbF9ncl9zdGF0ZV9nZXRcbmZ1bmN0aW9uIGNhbWxfZ3JfbGluZXRvKHgseSl7XG4gIHZhciBzID0gY2FtbF9ncl9zdGF0ZV9nZXQoKTtcbiAgcy5jb250ZXh0LmJlZ2luUGF0aCgpO1xuICBzLmNvbnRleHQubW92ZVRvKHMueCxzLmhlaWdodCAtIHMueSk7XG4gIHMuY29udGV4dC5saW5lVG8oeCxzLmhlaWdodCAtIHkpO1xuICBzLmNvbnRleHQuc3Ryb2tlKCk7XG4gIHMueD14O1xuICBzLnk9eTtcbiAgcmV0dXJuIDA7XG59XG4vL1Byb3ZpZGVzOiBjYW1sX2dyX2RyYXdfcmVjdFxuLy9SZXF1aXJlczogY2FtbF9ncl9zdGF0ZV9nZXRcbmZ1bmN0aW9uIGNhbWxfZ3JfZHJhd19yZWN0KHgseSx3LGgpe1xuICB2YXIgcyA9IGNhbWxfZ3Jfc3RhdGVfZ2V0KCk7XG4gIHMuY29udGV4dC5zdHJva2VSZWN0KHgscy5oZWlnaHQgLSB5LHcsLWgpO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ncl9hcmNfYXV4XG5mdW5jdGlvbiBjYW1sX2dyX2FyY19hdXgoY3R4LGN4LGN5LHJ5LHJ4LGExLGEyKXtcbiAgd2hpbGUoYTE+YTIpIGEyKz0zNjA7XG4gIGExIC89IDE4MDtcbiAgYTIgLz0gMTgwO1xuICB2YXIgcm90ID0gMCx4UG9zLHlQb3MseFBvc19wcmV2LHlQb3NfcHJldjtcbiAgdmFyIHNwYWNlID0gMjtcbiAgdmFyIG51bSA9ICgoKGEyIC0gYTEpICogTWF0aC5QSSAqICgocngrcnkpLzIpKSAvIHNwYWNlKSB8IDA7XG4gIHZhciBkZWx0YSA9IChhMiAtIGExKSAqIE1hdGguUEkgLyBudW07XG4gIHZhciBpID0gYTEgKiBNYXRoLlBJO1xuICBmb3IgKHZhciBqPTA7ajw9bnVtO2orKyl7XG4gICAgeFBvcyA9IGN4IC0gKHJ4ICogTWF0aC5zaW4oaSkpICogTWF0aC5zaW4ocm90ICogTWF0aC5QSSkgKyAocnkgKiBNYXRoLmNvcyhpKSkgKiBNYXRoLmNvcyhyb3QgKiBNYXRoLlBJKTtcbiAgICB4UG9zID0geFBvcy50b0ZpeGVkKDIpO1xuICAgIHlQb3MgPSBjeSArIChyeSAqIE1hdGguY29zKGkpKSAqIE1hdGguc2luKHJvdCAqIE1hdGguUEkpICsgKHJ4ICogTWF0aC5zaW4oaSkpICogTWF0aC5jb3Mocm90ICogTWF0aC5QSSk7XG4gICAgeVBvcyA9IHlQb3MudG9GaXhlZCgyKTtcbiAgICBpZiAoaj09MCkge1xuICAgICAgY3R4Lm1vdmVUbyh4UG9zLCB5UG9zKTtcbiAgICB9IGVsc2UgaWYgKHhQb3NfcHJldiE9eFBvcyB8fCB5UG9zX3ByZXYhPXlQb3Mpe1xuICAgICAgY3R4LmxpbmVUbyh4UG9zLCB5UG9zKTtcbiAgICB9XG4gICAgeFBvc19wcmV2PXhQb3M7XG4gICAgeVBvc19wcmV2PXlQb3M7XG4gICAgaS09IGRlbHRhOy8vY2N3XG4gIH1cbiAgcmV0dXJuIDA7XG59XG5cblxuLy9Qcm92aWRlczogY2FtbF9ncl9kcmF3X2FyY1xuLy9SZXF1aXJlczogY2FtbF9ncl9zdGF0ZV9nZXQsIGNhbWxfZ3JfYXJjX2F1eFxuZnVuY3Rpb24gY2FtbF9ncl9kcmF3X2FyYyh4LHkscngscnksYTEsYTIpe1xuICB2YXIgcyA9IGNhbWxfZ3Jfc3RhdGVfZ2V0KCk7XG4gIHMuY29udGV4dC5iZWdpblBhdGgoKTtcbiAgY2FtbF9ncl9hcmNfYXV4KHMuY29udGV4dCx4LHMuaGVpZ2h0IC0geSxyeCxyeSxhMSxhMik7XG4gIHMuY29udGV4dC5zdHJva2UoKTtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZ3Jfc2V0X2xpbmVfd2lkdGhcbi8vUmVxdWlyZXM6IGNhbWxfZ3Jfc3RhdGVfZ2V0XG5mdW5jdGlvbiBjYW1sX2dyX3NldF9saW5lX3dpZHRoKHcpe1xuICB2YXIgcyA9IGNhbWxfZ3Jfc3RhdGVfZ2V0KCk7XG4gIHMubGluZV93aWR0aCA9IHc7XG4gIHMuY29udGV4dC5saW5lV2lkdGggPSB3XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2dyX2ZpbGxfcmVjdFxuLy9SZXF1aXJlczogY2FtbF9ncl9zdGF0ZV9nZXRcbmZ1bmN0aW9uIGNhbWxfZ3JfZmlsbF9yZWN0KHgseSx3LGgpe1xuICB2YXIgcyA9IGNhbWxfZ3Jfc3RhdGVfZ2V0KCk7XG4gIHMuY29udGV4dC5maWxsUmVjdCh4LHMuaGVpZ2h0IC0geSx3LC1oKTtcbiAgcmV0dXJuIDA7XG59XG4vL1Byb3ZpZGVzOiBjYW1sX2dyX2ZpbGxfcG9seVxuLy9SZXF1aXJlczogY2FtbF9ncl9zdGF0ZV9nZXRcbmZ1bmN0aW9uIGNhbWxfZ3JfZmlsbF9wb2x5KGFyKXtcbiAgdmFyIHMgPSBjYW1sX2dyX3N0YXRlX2dldCgpO1xuICBzLmNvbnRleHQuYmVnaW5QYXRoKCk7XG4gIHMuY29udGV4dC5tb3ZlVG8oYXJbMV1bMV0scy5oZWlnaHQgLSBhclsxXVsyXSk7XG4gIGZvcih2YXIgaSA9IDI7IGkgPCBhci5sZW5ndGg7IGkrKylcbiAgICBzLmNvbnRleHQubGluZVRvKGFyW2ldWzFdLHMuaGVpZ2h0IC0gYXJbaV1bMl0pO1xuICBzLmNvbnRleHQubGluZVRvKGFyWzFdWzFdLHMuaGVpZ2h0IC0gYXJbMV1bMl0pO1xuICBzLmNvbnRleHQuZmlsbCgpO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ncl9maWxsX2FyY1xuLy9SZXF1aXJlczogY2FtbF9ncl9zdGF0ZV9nZXQsIGNhbWxfZ3JfYXJjX2F1eFxuZnVuY3Rpb24gY2FtbF9ncl9maWxsX2FyYyh4LHkscngscnksYTEsYTIpe1xuICB2YXIgcyA9IGNhbWxfZ3Jfc3RhdGVfZ2V0KCk7XG4gIHMuY29udGV4dC5iZWdpblBhdGgoKTtcbiAgY2FtbF9ncl9hcmNfYXV4KHMuY29udGV4dCx4LHMuaGVpZ2h0IC0geSxyeCxyeSxhMSxhMik7XG4gIHMuY29udGV4dC5maWxsKCk7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2dyX2RyYXdfc3RyXG4vL1JlcXVpcmVzOiBjYW1sX2dyX3N0YXRlX2dldFxuZnVuY3Rpb24gY2FtbF9ncl9kcmF3X3N0cihzdHIpe1xuICB2YXIgcyA9IGNhbWxfZ3Jfc3RhdGVfZ2V0KCk7XG4gIHZhciBtID0gcy5jb250ZXh0Lm1lYXN1cmVUZXh0KHN0cik7XG4gIHZhciBkeCA9IG0ud2lkdGg7XG4gIHMuY29udGV4dC5maWxsVGV4dChzdHIscy54LHMuaGVpZ2h0IC0gcy55KTtcbiAgcy54ICs9IGR4IHwgMDtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZ3JfZHJhd19jaGFyXG4vL1JlcXVpcmVzOiBjYW1sX2dyX2RyYXdfc3RyXG5mdW5jdGlvbiBjYW1sX2dyX2RyYXdfY2hhcihjKXtcbiAgY2FtbF9ncl9kcmF3X3N0cihTdHJpbmcuZnJvbUNoYXJDb2RlKGMpKTtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZ3JfZHJhd19zdHJpbmdcbi8vUmVxdWlyZXM6IGNhbWxfZ3JfZHJhd19zdHJcbi8vUmVxdWlyZXM6IGNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nXG5mdW5jdGlvbiBjYW1sX2dyX2RyYXdfc3RyaW5nKHN0cil7XG4gIGNhbWxfZ3JfZHJhd19zdHIoY2FtbF9qc3N0cmluZ19vZl9zdHJpbmcoc3RyKSk7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2dyX3NldF9mb250XG4vL1JlcXVpcmVzOiBjYW1sX2dyX3N0YXRlX2dldFxuLy9SZXF1aXJlczogY2FtbF9qc3N0cmluZ19vZl9zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfZ3Jfc2V0X2ZvbnQoZil7XG4gIHZhciBzID0gY2FtbF9ncl9zdGF0ZV9nZXQoKTtcbiAgcy5mb250ID0gZjtcbiAgcy5jb250ZXh0LmZvbnQgPSBzLnRleHRfc2l6ZSArIFwicHggXCIgKyBjYW1sX2pzc3RyaW5nX29mX3N0cmluZyhzLmZvbnQpO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ncl9zZXRfdGV4dF9zaXplXG4vL1JlcXVpcmVzOiBjYW1sX2dyX3N0YXRlX2dldFxuLy9SZXF1aXJlczogY2FtbF9qc3N0cmluZ19vZl9zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfZ3Jfc2V0X3RleHRfc2l6ZShzaXplKXtcbiAgdmFyIHMgPSBjYW1sX2dyX3N0YXRlX2dldCgpO1xuICBzLnRleHRfc2l6ZSA9IHNpemU7XG4gIHMuY29udGV4dC5mb250ID0gcy50ZXh0X3NpemUgKyBcInB4IFwiICsgY2FtbF9qc3N0cmluZ19vZl9zdHJpbmcocy5mb250KTtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZ3JfdGV4dF9zaXplXG4vL1JlcXVpcmVzOiBjYW1sX2dyX3N0YXRlX2dldFxuLy9SZXF1aXJlczogY2FtbF9qc3N0cmluZ19vZl9zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfZ3JfdGV4dF9zaXplKHR4dCl7XG4gIHZhciBzID0gY2FtbF9ncl9zdGF0ZV9nZXQoKTtcbiAgdmFyIHcgPSBzLmNvbnRleHQubWVhc3VyZVRleHQoY2FtbF9qc3N0cmluZ19vZl9zdHJpbmcodHh0KSkud2lkdGg7XG4gIHJldHVybiBbMCx3LHMudGV4dF9zaXplXTtcbn1cblxuXG4vL1Byb3ZpZGVzOiBjYW1sX2dyX21ha2VfaW1hZ2Vcbi8vUmVxdWlyZXM6IGNhbWxfZ3Jfc3RhdGVfZ2V0XG5mdW5jdGlvbiBjYW1sX2dyX21ha2VfaW1hZ2UoYXJyKXtcbiAgdmFyIHMgPSBjYW1sX2dyX3N0YXRlX2dldCgpO1xuICB2YXIgaCA9IGFyci5sZW5ndGggLSAxIDtcbiAgdmFyIHcgPSBhcnJbMV0ubGVuZ3RoIC0gMTtcbiAgdmFyIGltID0gcy5jb250ZXh0LmNyZWF0ZUltYWdlRGF0YSh3LGgpO1xuICBmb3IodmFyIGk9MDtpPGg7aSsrKXtcbiAgICBmb3IodmFyIGo9MDtqPHc7aisrKXtcbiAgICAgIHZhciBjID0gYXJyW2krMV1baisxXTtcbiAgICAgIHZhciBvID0gaSoodyo0KSArIChqICogNCk7XG4gICAgICBpZihjID09IC0xKSB7XG4gICAgICAgIGltLmRhdGFbbyArIDBdID0gMDtcbiAgICAgICAgaW0uZGF0YVtvICsgMV0gPSAwO1xuICAgICAgICBpbS5kYXRhW28gKyAyXSA9IDA7XG4gICAgICAgIGltLmRhdGFbbyArIDNdID0gMDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGltLmRhdGFbbyArIDBdID0gYyA+PiAxNiAmIDB4ZmY7XG4gICAgICAgIGltLmRhdGFbbyArIDFdID0gYyA+PiAgOCAmIDB4ZmY7XG4gICAgICAgIGltLmRhdGFbbyArIDJdID0gYyA+PiAgMCAmIDBYZmY7XG4gICAgICAgIGltLmRhdGFbbyArIDNdID0gMHhmZjtcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgcmV0dXJuIGltXG59XG4vL1Byb3ZpZGVzOiBjYW1sX2dyX2R1bXBfaW1hZ2Vcbi8vUmVxdWlyZXM6IGNhbWxfZ3Jfc3RhdGVfZ2V0XG5mdW5jdGlvbiBjYW1sX2dyX2R1bXBfaW1hZ2UoaW0pe1xuICB2YXIgZGF0YSA9IFswXVxuICBmb3IodmFyIGk9MDsgaTxpbS5oZWlnaHQ7aSsrKXtcbiAgICBkYXRhW2krMV0gPSBbMF1cbiAgICBmb3IodmFyIGo9MDsgajxpbS53aWR0aDtqKyspe1xuICAgICAgdmFyIG8gPSBpKihpbS53aWR0aCo0KSArIChqICogNCksXG4gICAgICAgICAgciA9IGltLmRhdGFbbyswXSxcbiAgICAgICAgICBnID0gaW0uZGF0YVtvKzFdLFxuICAgICAgICAgIGIgPSBpbS5kYXRhW28rMl07XG4gICAgICBkYXRhW2krMV1baisxXSA9IChyIDw8IDE2KSArIChnIDw8IDgpICsgYlxuICAgIH1cbiAgfVxuICByZXR1cm4gZGF0YVxufVxuLy9Qcm92aWRlczogY2FtbF9ncl9kcmF3X2ltYWdlXG4vL1JlcXVpcmVzOiBjYW1sX2dyX3N0YXRlX2dldFxuZnVuY3Rpb24gY2FtbF9ncl9kcmF3X2ltYWdlKGltLHgseSl7XG4gIHZhciBzID0gY2FtbF9ncl9zdGF0ZV9nZXQoKTtcbiAgaWYoIWltLmltYWdlKSB7XG4gICAgdmFyIGNhbnZhcyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJjYW52YXNcIik7XG4gICAgY2FudmFzLndpZHRoID0gcy53aWR0aDtcbiAgICBjYW52YXMuaGVpZ2h0ID0gcy5oZWlnaHQ7XG4gICAgY2FudmFzLmdldENvbnRleHQoXCIyZFwiKS5wdXRJbWFnZURhdGEoaW0sMCwwKTtcbiAgICB2YXIgaW1hZ2UgPSBuZXcgZ2xvYmFsVGhpcy5JbWFnZSgpO1xuICAgIGltYWdlLm9ubG9hZCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgIHMuY29udGV4dC5kcmF3SW1hZ2UoaW1hZ2UseCxzLmhlaWdodCAtIGltLmhlaWdodCAtIHkpO1xuICAgICAgaW0uaW1hZ2UgPSBpbWFnZTtcbiAgICB9XG4gICAgaW1hZ2Uuc3JjID0gY2FudmFzLnRvRGF0YVVSTChcImltYWdlL3BuZ1wiKTtcbiAgfSBlbHNlIHtcbiAgICBzLmNvbnRleHQuZHJhd0ltYWdlKGltLmltYWdlLHgscy5oZWlnaHQgLSBpbS5oZWlnaHQgLSB5KTtcbiAgfVxuICByZXR1cm4gMDtcbn1cbi8vUHJvdmlkZXM6IGNhbWxfZ3JfY3JlYXRlX2ltYWdlXG4vL1JlcXVpcmVzOiBjYW1sX2dyX3N0YXRlX2dldFxuZnVuY3Rpb24gY2FtbF9ncl9jcmVhdGVfaW1hZ2UoeCx5KXtcbiAgdmFyIHMgPSBjYW1sX2dyX3N0YXRlX2dldCgpO1xuICByZXR1cm4gcy5jb250ZXh0LmNyZWF0ZUltYWdlRGF0YSh4LHkpO1xufVxuLy9Qcm92aWRlczogY2FtbF9ncl9ibGl0X2ltYWdlXG4vL1JlcXVpcmVzOiBjYW1sX2dyX3N0YXRlX2dldFxuZnVuY3Rpb24gY2FtbF9ncl9ibGl0X2ltYWdlKGltLHgseSl7XG4gIHZhciBzID0gY2FtbF9ncl9zdGF0ZV9nZXQoKTtcbiAgdmFyIGltMiA9IHMuY29udGV4dC5nZXRJbWFnZURhdGEoeCxzLmhlaWdodCAtIGltLmhlaWdodCAtIHksaW0ud2lkdGgsaW0uaGVpZ2h0KTtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBpbTIuZGF0YS5sZW5ndGg7IGkrPTQpe1xuICAgIGltLmRhdGFbaV0gPSBpbTIuZGF0YVtpXTtcbiAgICBpbS5kYXRhW2krMV0gPSBpbTIuZGF0YVtpKzFdO1xuICAgIGltLmRhdGFbaSsyXSA9IGltMi5kYXRhW2krMl07XG4gICAgaW0uZGF0YVtpKzNdID0gaW0yLmRhdGFbaSszXTtcbiAgfVxuICByZXR1cm4gMDtcbn1cbi8vUHJvdmlkZXM6IGNhbWxfZ3Jfc2lnaW9faGFuZGxlclxuZnVuY3Rpb24gY2FtbF9ncl9zaWdpb19oYW5kbGVyKCl7cmV0dXJuIDB9XG4vL1Byb3ZpZGVzOiBjYW1sX2dyX3NpZ2lvX3NpZ25hbFxuZnVuY3Rpb24gY2FtbF9ncl9zaWdpb19zaWduYWwoKXtyZXR1cm4gMH1cbi8vUHJvdmlkZXM6IGNhbWxfZ3Jfd2FpdF9ldmVudFxuLy9SZXF1aXJlczogY2FtbF9mYWlsd2l0aFxuZnVuY3Rpb24gY2FtbF9ncl93YWl0X2V2ZW50KF9ldmwpe1xuICBjYW1sX2ZhaWx3aXRoKFwiY2FtbF9ncl93YWl0X2V2ZW50IG5vdCBJbXBsZW1lbnRlZDogdXNlIEdyYXBoaWNzX2pzIGluc3RlYWRcIik7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZ3Jfc3luY2hyb25pemVcbi8vUmVxdWlyZXM6IGNhbWxfZmFpbHdpdGhcbmZ1bmN0aW9uIGNhbWxfZ3Jfc3luY2hyb25pemUgKCkge1xuICBjYW1sX2ZhaWx3aXRoKFwiY2FtbF9ncl9zeW5jaHJvbml6ZSBub3QgSW1wbGVtZW50ZWRcIik7XG59XG4vL1Byb3ZpZGVzOiBjYW1sX2dyX3JlbWVtYmVyX21vZGVcbi8vUmVxdWlyZXM6IGNhbWxfZmFpbHdpdGhcbmZ1bmN0aW9uIGNhbWxfZ3JfcmVtZW1iZXJfbW9kZSAoKSB7XG4gIGNhbWxfZmFpbHdpdGgoXCJjYW1sX2dyX3JlbWVtYmVyX21vZGUgbm90IEltcGxlbWVudGVkXCIpO1xufVxuLy9Qcm92aWRlczogY2FtbF9ncl9kaXNwbGF5X21vZGVcbi8vUmVxdWlyZXM6IGNhbWxfZmFpbHdpdGhcbmZ1bmN0aW9uIGNhbWxfZ3JfZGlzcGxheV9tb2RlKCkge1xuICBjYW1sX2ZhaWx3aXRoKFwiY2FtbF9ncl9kaXNwbGF5X21vZGUgbm90IEltcGxlbWVudGVkXCIpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2dyX3dpbmRvd19pZFxuLy9SZXF1aXJlczogY2FtbF9mYWlsd2l0aFxuZnVuY3Rpb24gY2FtbF9ncl93aW5kb3dfaWQoYSkge1xuICBjYW1sX2ZhaWx3aXRoKFwiY2FtbF9ncl93aW5kb3dfaWQgbm90IEltcGxlbWVudGVkXCIpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2dyX29wZW5fc3Vid2luZG93XG4vL1JlcXVpcmVzOiBjYW1sX2ZhaWx3aXRoXG5mdW5jdGlvbiBjYW1sX2dyX29wZW5fc3Vid2luZG93KGEsYixjLGQpIHtcbiAgY2FtbF9mYWlsd2l0aChcImNhbWxfZ3Jfb3Blbl9zdWJ3aW5kb3cgbm90IEltcGxlbWVudGVkXCIpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2dyX2Nsb3NlX3N1YndpbmRvd1xuLy9SZXF1aXJlczogY2FtbF9mYWlsd2l0aFxuZnVuY3Rpb24gY2FtbF9ncl9jbG9zZV9zdWJ3aW5kb3coYSkge1xuICBjYW1sX2ZhaWx3aXRoKFwiY2FtbF9ncl9jbG9zZV9zdWJ3aW5kb3cgbm90IEltcGxlbWVudGVkXCIpO1xufVxuIiwiXG4vL1Byb3ZpZGVzOiBjYW1sX2N1c3RvbV9ldmVudF9pbmRleFxudmFyIGNhbWxfY3VzdG9tX2V2ZW50X2luZGV4ID0gMDtcblxuLy9Qcm92aWRlczogY2FtbF9ydW50aW1lX2V2ZW50c191c2VyX3JlZ2lzdGVyXG4vL1JlcXVpcmVzOiBjYW1sX2N1c3RvbV9ldmVudF9pbmRleFxuZnVuY3Rpb24gY2FtbF9ydW50aW1lX2V2ZW50c191c2VyX3JlZ2lzdGVyKGV2ZW50X25hbWUsIGV2ZW50X3RhZywgZXZlbnRfdHlwZSkge1xuICBjYW1sX2N1c3RvbV9ldmVudF9pbmRleCArPSAxO1xuICByZXR1cm4gWzAsIGNhbWxfY3VzdG9tX2V2ZW50X2luZGV4LCBldmVudF9uYW1lLCBldmVudF90eXBlLCBldmVudF90YWddO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3J1bnRpbWVfZXZlbnRzX3VzZXJfd3JpdGVcbmZ1bmN0aW9uIGNhbWxfcnVudGltZV9ldmVudHNfdXNlcl93cml0ZShldmVudCwgZXZlbnRfY29udGVudCkge1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ydW50aW1lX2V2ZW50c191c2VyX3Jlc29sdmVcbmZ1bmN0aW9uIGNhbWxfcnVudGltZV9ldmVudHNfdXNlcl9yZXNvbHZlKCkge1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ydW50aW1lX2V2ZW50c19zdGFydFxuZnVuY3Rpb24gY2FtbF9ydW50aW1lX2V2ZW50c19zdGFydCgpIHtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfcnVudGltZV9ldmVudHNfcGF1c2VcbmZ1bmN0aW9uIGNhbWxfcnVudGltZV9ldmVudHNfcGF1c2UoKSB7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3J1bnRpbWVfZXZlbnRzX3Jlc3VtZVxuZnVuY3Rpb24gY2FtbF9ydW50aW1lX2V2ZW50c19yZXN1bWUoKSB7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3J1bnRpbWVfZXZlbnRzX2NyZWF0ZV9jdXJzb3JcbmZ1bmN0aW9uIGNhbWxfcnVudGltZV9ldmVudHNfY3JlYXRlX2N1cnNvcih0YXJnZXQpIHtcbiAgcmV0dXJuIHt9O1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3J1bnRpbWVfZXZlbnRzX2ZyZWVfY3Vyc29yXG5mdW5jdGlvbiBjYW1sX3J1bnRpbWVfZXZlbnRzX2ZyZWVfY3Vyc29yKGN1cnNvcikge1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ydW50aW1lX2V2ZW50c19yZWFkX3BvbGxcbmZ1bmN0aW9uIGNhbWxfcnVudGltZV9ldmVudHNfcmVhZF9wb2xsKGN1cnNvciwgY2FsbGJhY2tzLCBudW0pIHtcbiAgcmV0dXJuIDA7XG59XG4iLCIvLyBKc19vZl9vY2FtbCBydW50aW1lIHN1cHBvcnRcbi8vIGh0dHA6Ly93d3cub2NzaWdlbi5vcmcvanNfb2Zfb2NhbWwvXG4vLyBDb3B5cmlnaHQgKEMpIDIwMTAgSsOpcsO0bWUgVm91aWxsb25cbi8vIExhYm9yYXRvaXJlIFBQUyAtIENOUlMgVW5pdmVyc2l0w6kgUGFyaXMgRGlkZXJvdFxuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4vLyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbi8vIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4vLyBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4vLyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuLy8gTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuLy8gR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4vL1xuLy8gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4vLyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuLy8gRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cblxuLy9Qcm92aWRlczogY2FtbF9tYXJzaGFsX2NvbnN0YW50c1xudmFyIGNhbWxfbWFyc2hhbF9jb25zdGFudHMgPSB7XG4gIFBSRUZJWF9TTUFMTF9CTE9DSzogICAgICAgICAweDgwLFxuICBQUkVGSVhfU01BTExfSU5UOiAgICAgICAgICAgMHg0MCxcbiAgUFJFRklYX1NNQUxMX1NUUklORzogICAgICAgIDB4MjAsXG4gIENPREVfSU5UODogICAgICAgICAgICAgICAgICAweDAwLFxuICBDT0RFX0lOVDE2OiAgICAgICAgICAgICAgICAgMHgwMSxcbiAgQ09ERV9JTlQzMjogICAgICAgICAgICAgICAgIDB4MDIsXG4gIENPREVfSU5UNjQ6ICAgICAgICAgICAgICAgICAweDAzLFxuICBDT0RFX1NIQVJFRDg6ICAgICAgICAgICAgICAgMHgwNCxcbiAgQ09ERV9TSEFSRUQxNjogICAgICAgICAgICAgIDB4MDUsXG4gIENPREVfU0hBUkVEMzI6ICAgICAgICAgICAgICAweDA2LFxuICBDT0RFX0JMT0NLMzI6ICAgICAgICAgICAgICAgMHgwOCxcbiAgQ09ERV9CTE9DSzY0OiAgICAgICAgICAgICAgIDB4MTMsXG4gIENPREVfU1RSSU5HODogICAgICAgICAgICAgICAweDA5LFxuICBDT0RFX1NUUklORzMyOiAgICAgICAgICAgICAgMHgwQSxcbiAgQ09ERV9ET1VCTEVfQklHOiAgICAgICAgICAgIDB4MEIsXG4gIENPREVfRE9VQkxFX0xJVFRMRTogICAgICAgICAweDBDLFxuICBDT0RFX0RPVUJMRV9BUlJBWThfQklHOiAgICAgMHgwRCxcbiAgQ09ERV9ET1VCTEVfQVJSQVk4X0xJVFRMRTogIDB4MEUsXG4gIENPREVfRE9VQkxFX0FSUkFZMzJfQklHOiAgICAweDBGLFxuICBDT0RFX0RPVUJMRV9BUlJBWTMyX0xJVFRMRTogMHgwNyxcbiAgQ09ERV9DT0RFUE9JTlRFUjogICAgICAgICAgIDB4MTAsXG4gIENPREVfSU5GSVhQT0lOVEVSOiAgICAgICAgICAweDExLFxuICBDT0RFX0NVU1RPTTogICAgICAgICAgICAgICAgMHgxMixcbiAgQ09ERV9DVVNUT01fTEVOOiAgICAgICAgICAgIDB4MTgsXG4gIENPREVfQ1VTVE9NX0ZJWEVEOiAgICAgICAgICAweDE5XG59XG5cblxuLy9Qcm92aWRlczogVUludDhBcnJheVJlYWRlclxuLy9SZXF1aXJlczogY2FtbF9zdHJpbmdfb2ZfYXJyYXksIGNhbWxfanNieXRlc19vZl9zdHJpbmdcbmZ1bmN0aW9uIFVJbnQ4QXJyYXlSZWFkZXIgKHMsIGkpIHsgdGhpcy5zID0gczsgdGhpcy5pID0gaTsgfVxuVUludDhBcnJheVJlYWRlci5wcm90b3R5cGUgPSB7XG4gIHJlYWQ4dTpmdW5jdGlvbiAoKSB7IHJldHVybiB0aGlzLnNbdGhpcy5pKytdOyB9LFxuICByZWFkOHM6ZnVuY3Rpb24gKCkgeyByZXR1cm4gdGhpcy5zW3RoaXMuaSsrXSA8PCAyNCA+PiAyNDsgfSxcbiAgcmVhZDE2dTpmdW5jdGlvbiAoKSB7XG4gICAgdmFyIHMgPSB0aGlzLnMsIGkgPSB0aGlzLmk7XG4gICAgdGhpcy5pID0gaSArIDI7XG4gICAgcmV0dXJuIChzW2ldIDw8IDgpIHwgc1tpICsgMV1cbiAgfSxcbiAgcmVhZDE2czpmdW5jdGlvbiAoKSB7XG4gICAgdmFyIHMgPSB0aGlzLnMsIGkgPSB0aGlzLmk7XG4gICAgdGhpcy5pID0gaSArIDI7XG4gICAgcmV0dXJuIChzW2ldIDw8IDI0ID4+IDE2KSB8IHNbaSArIDFdO1xuICB9LFxuICByZWFkMzJ1OmZ1bmN0aW9uICgpIHtcbiAgICB2YXIgcyA9IHRoaXMucywgaSA9IHRoaXMuaTtcbiAgICB0aGlzLmkgPSBpICsgNDtcbiAgICByZXR1cm4gKChzW2ldIDw8IDI0KSB8IChzW2krMV0gPDwgMTYpIHxcbiAgICAgICAgICAgIChzW2krMl0gPDwgOCkgfCBzW2krM10pID4+PiAwO1xuICB9LFxuICByZWFkMzJzOmZ1bmN0aW9uICgpIHtcbiAgICB2YXIgcyA9IHRoaXMucywgaSA9IHRoaXMuaTtcbiAgICB0aGlzLmkgPSBpICsgNDtcbiAgICByZXR1cm4gKHNbaV0gPDwgMjQpIHwgKHNbaSsxXSA8PCAxNikgfFxuICAgICAgKHNbaSsyXSA8PCA4KSB8IHNbaSszXTtcbiAgfSxcbiAgcmVhZHN0cjpmdW5jdGlvbiAobGVuKSB7XG4gICAgdmFyIGkgPSB0aGlzLmk7XG4gICAgdGhpcy5pID0gaSArIGxlbjtcbiAgICByZXR1cm4gY2FtbF9zdHJpbmdfb2ZfYXJyYXkodGhpcy5zLnN1YmFycmF5KGksIGkgKyBsZW4pKTtcbiAgfSxcbiAgcmVhZHVpbnQ4YXJyYXk6ZnVuY3Rpb24gKGxlbikge1xuICAgIHZhciBpID0gdGhpcy5pO1xuICAgIHRoaXMuaSA9IGkgKyBsZW47XG4gICAgcmV0dXJuIHRoaXMucy5zdWJhcnJheShpLCBpICsgbGVuKTtcbiAgfVxufVxuXG5cbi8vUHJvdmlkZXM6IE1sU3RyaW5nUmVhZGVyXG4vL1JlcXVpcmVzOiBjYW1sX3N0cmluZ19vZl9qc2J5dGVzLCBjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nXG5mdW5jdGlvbiBNbFN0cmluZ1JlYWRlciAocywgaSkgeyB0aGlzLnMgPSBjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nKHMpOyB0aGlzLmkgPSBpOyB9XG5NbFN0cmluZ1JlYWRlci5wcm90b3R5cGUgPSB7XG4gIHJlYWQ4dTpmdW5jdGlvbiAoKSB7IHJldHVybiB0aGlzLnMuY2hhckNvZGVBdCh0aGlzLmkrKyk7IH0sXG4gIHJlYWQ4czpmdW5jdGlvbiAoKSB7IHJldHVybiB0aGlzLnMuY2hhckNvZGVBdCh0aGlzLmkrKykgPDwgMjQgPj4gMjQ7IH0sXG4gIHJlYWQxNnU6ZnVuY3Rpb24gKCkge1xuICAgIHZhciBzID0gdGhpcy5zLCBpID0gdGhpcy5pO1xuICAgIHRoaXMuaSA9IGkgKyAyO1xuICAgIHJldHVybiAocy5jaGFyQ29kZUF0KGkpIDw8IDgpIHwgcy5jaGFyQ29kZUF0KGkgKyAxKVxuICB9LFxuICByZWFkMTZzOmZ1bmN0aW9uICgpIHtcbiAgICB2YXIgcyA9IHRoaXMucywgaSA9IHRoaXMuaTtcbiAgICB0aGlzLmkgPSBpICsgMjtcbiAgICByZXR1cm4gKHMuY2hhckNvZGVBdChpKSA8PCAyNCA+PiAxNikgfCBzLmNoYXJDb2RlQXQoaSArIDEpO1xuICB9LFxuICByZWFkMzJ1OmZ1bmN0aW9uICgpIHtcbiAgICB2YXIgcyA9IHRoaXMucywgaSA9IHRoaXMuaTtcbiAgICB0aGlzLmkgPSBpICsgNDtcbiAgICByZXR1cm4gKChzLmNoYXJDb2RlQXQoaSkgPDwgMjQpIHwgKHMuY2hhckNvZGVBdChpKzEpIDw8IDE2KSB8XG4gICAgICAgICAgICAocy5jaGFyQ29kZUF0KGkrMikgPDwgOCkgfCBzLmNoYXJDb2RlQXQoaSszKSkgPj4+IDA7XG4gIH0sXG4gIHJlYWQzMnM6ZnVuY3Rpb24gKCkge1xuICAgIHZhciBzID0gdGhpcy5zLCBpID0gdGhpcy5pO1xuICAgIHRoaXMuaSA9IGkgKyA0O1xuICAgIHJldHVybiAocy5jaGFyQ29kZUF0KGkpIDw8IDI0KSB8IChzLmNoYXJDb2RlQXQoaSsxKSA8PCAxNikgfFxuICAgICAgKHMuY2hhckNvZGVBdChpKzIpIDw8IDgpIHwgcy5jaGFyQ29kZUF0KGkrMyk7XG4gIH0sXG4gIHJlYWRzdHI6ZnVuY3Rpb24gKGxlbikge1xuICAgIHZhciBpID0gdGhpcy5pO1xuICAgIHRoaXMuaSA9IGkgKyBsZW47XG4gICAgcmV0dXJuIGNhbWxfc3RyaW5nX29mX2pzYnl0ZXModGhpcy5zLnN1YnN0cmluZyhpLCBpICsgbGVuKSk7XG4gIH0sXG4gIHJlYWR1aW50OGFycmF5OmZ1bmN0aW9uIChsZW4pIHtcbiAgICB2YXIgYiA9IG5ldyBVaW50OEFycmF5KGxlbik7XG4gICAgdmFyIHMgPSB0aGlzLnM7XG4gICAgdmFyIGkgPSB0aGlzLmk7XG4gICAgZm9yKHZhciBqID0gMDsgaiA8IGxlbjsgaisrKSB7XG4gICAgICBiW2pdID0gcy5jaGFyQ29kZUF0KGkgKyBqKTtcbiAgICB9XG4gICAgdGhpcy5pID0gaSArIGxlbjtcbiAgICByZXR1cm4gYjtcbiAgfVxufVxuXG4vL1Byb3ZpZGVzOiBCaWdTdHJpbmdSZWFkZXJcbi8vUmVxdWlyZXM6IGNhbWxfc3RyaW5nX29mX2FycmF5LCBjYW1sX2JhX2dldF8xXG5mdW5jdGlvbiBCaWdTdHJpbmdSZWFkZXIgKGJzLCBpKSB7IHRoaXMucyA9IGJzOyB0aGlzLmkgPSBpOyB9XG5CaWdTdHJpbmdSZWFkZXIucHJvdG90eXBlID0ge1xuICByZWFkOHU6ZnVuY3Rpb24gKCkgeyByZXR1cm4gY2FtbF9iYV9nZXRfMSh0aGlzLnMsdGhpcy5pKyspOyB9LFxuICByZWFkOHM6ZnVuY3Rpb24gKCkgeyByZXR1cm4gY2FtbF9iYV9nZXRfMSh0aGlzLnMsdGhpcy5pKyspIDw8IDI0ID4+IDI0OyB9LFxuICByZWFkMTZ1OmZ1bmN0aW9uICgpIHtcbiAgICB2YXIgcyA9IHRoaXMucywgaSA9IHRoaXMuaTtcbiAgICB0aGlzLmkgPSBpICsgMjtcbiAgICByZXR1cm4gKGNhbWxfYmFfZ2V0XzEocyxpKSA8PCA4KSB8IGNhbWxfYmFfZ2V0XzEocyxpICsgMSlcbiAgfSxcbiAgcmVhZDE2czpmdW5jdGlvbiAoKSB7XG4gICAgdmFyIHMgPSB0aGlzLnMsIGkgPSB0aGlzLmk7XG4gICAgdGhpcy5pID0gaSArIDI7XG4gICAgcmV0dXJuIChjYW1sX2JhX2dldF8xKHMsaSkgPDwgMjQgPj4gMTYpIHwgY2FtbF9iYV9nZXRfMShzLGkgKyAxKTtcbiAgfSxcbiAgcmVhZDMydTpmdW5jdGlvbiAoKSB7XG4gICAgdmFyIHMgPSB0aGlzLnMsIGkgPSB0aGlzLmk7XG4gICAgdGhpcy5pID0gaSArIDQ7XG4gICAgcmV0dXJuICgoY2FtbF9iYV9nZXRfMShzLGkpICAgPDwgMjQpIHwgKGNhbWxfYmFfZ2V0XzEocyxpKzEpIDw8IDE2KSB8XG4gICAgICAgICAgICAoY2FtbF9iYV9nZXRfMShzLGkrMikgPDwgOCkgIHwgY2FtbF9iYV9nZXRfMShzLGkrMykgICAgICAgICApID4+PiAwO1xuICB9LFxuICByZWFkMzJzOmZ1bmN0aW9uICgpIHtcbiAgICB2YXIgcyA9IHRoaXMucywgaSA9IHRoaXMuaTtcbiAgICB0aGlzLmkgPSBpICsgNDtcbiAgICByZXR1cm4gKGNhbWxfYmFfZ2V0XzEocyxpKSAgIDw8IDI0KSB8IChjYW1sX2JhX2dldF8xKHMsaSsxKSA8PCAxNikgfFxuICAgICAgKGNhbWxfYmFfZ2V0XzEocyxpKzIpIDw8IDgpICB8IGNhbWxfYmFfZ2V0XzEocyxpKzMpO1xuICB9LFxuICByZWFkc3RyOmZ1bmN0aW9uIChsZW4pIHtcbiAgICB2YXIgaSA9IHRoaXMuaTtcbiAgICB2YXIgYXJyID0gbmV3IEFycmF5KGxlbilcbiAgICBmb3IodmFyIGogPSAwOyBqIDwgbGVuOyBqKyspe1xuICAgICAgYXJyW2pdID0gY2FtbF9iYV9nZXRfMSh0aGlzLnMsIGkraik7XG4gICAgfVxuICAgIHRoaXMuaSA9IGkgKyBsZW47XG4gICAgcmV0dXJuIGNhbWxfc3RyaW5nX29mX2FycmF5KGFycik7XG4gIH0sXG4gIHJlYWR1aW50OGFycmF5OmZ1bmN0aW9uIChsZW4pIHtcbiAgICB2YXIgaSA9IHRoaXMuaTtcbiAgICB2YXIgb2Zmc2V0ID0gdGhpcy5vZmZzZXQoaSk7XG4gICAgdGhpcy5pID0gaSArIGxlbjtcbiAgICByZXR1cm4gdGhpcy5zLmRhdGEuc3ViYXJyYXkob2Zmc2V0LCBvZmZzZXQgKyBsZW4pO1xuICB9XG59XG5cblxuXG4vL1Byb3ZpZGVzOiBjYW1sX2Zsb2F0X29mX2J5dGVzXG4vL1JlcXVpcmVzOiBjYW1sX2ludDY0X2Zsb2F0X29mX2JpdHMsIGNhbWxfaW50NjRfb2ZfYnl0ZXNcbmZ1bmN0aW9uIGNhbWxfZmxvYXRfb2ZfYnl0ZXMgKGEpIHtcbiAgcmV0dXJuIGNhbWxfaW50NjRfZmxvYXRfb2ZfYml0cyAoY2FtbF9pbnQ2NF9vZl9ieXRlcyAoYSkpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2lucHV0X3ZhbHVlX2Zyb21fc3RyaW5nIG11dGFibGVcbi8vUmVxdWlyZXM6IE1sU3RyaW5nUmVhZGVyLCBjYW1sX2lucHV0X3ZhbHVlX2Zyb21fcmVhZGVyXG5mdW5jdGlvbiBjYW1sX2lucHV0X3ZhbHVlX2Zyb21fc3RyaW5nKHMsb2ZzKSB7XG4gIHZhciByZWFkZXIgPSBuZXcgTWxTdHJpbmdSZWFkZXIgKHMsIHR5cGVvZiBvZnM9PVwibnVtYmVyXCI/b2ZzOm9mc1swXSk7XG4gIHJldHVybiBjYW1sX2lucHV0X3ZhbHVlX2Zyb21fcmVhZGVyKHJlYWRlciwgb2ZzKVxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2lucHV0X3ZhbHVlX2Zyb21fYnl0ZXMgbXV0YWJsZVxuLy9SZXF1aXJlczogTWxTdHJpbmdSZWFkZXIsIGNhbWxfaW5wdXRfdmFsdWVfZnJvbV9yZWFkZXIsIGNhbWxfc3RyaW5nX29mX2J5dGVzXG5mdW5jdGlvbiBjYW1sX2lucHV0X3ZhbHVlX2Zyb21fYnl0ZXMocyxvZnMpIHtcbiAgdmFyIHJlYWRlciA9IG5ldyBNbFN0cmluZ1JlYWRlciAoY2FtbF9zdHJpbmdfb2ZfYnl0ZXMocyksIHR5cGVvZiBvZnM9PVwibnVtYmVyXCI/b2ZzOm9mc1swXSk7XG4gIHJldHVybiBjYW1sX2lucHV0X3ZhbHVlX2Zyb21fcmVhZGVyKHJlYWRlciwgb2ZzKVxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2ludDY0X3VubWFyc2hhbFxuLy9SZXF1aXJlczogY2FtbF9pbnQ2NF9vZl9ieXRlc1xuZnVuY3Rpb24gY2FtbF9pbnQ2NF91bm1hcnNoYWwocmVhZGVyLCBzaXplKXtcbiAgdmFyIHQgPSBuZXcgQXJyYXkoOCk7O1xuICBmb3IgKHZhciBqID0gMDtqIDwgODtqKyspIHRbal0gPSByZWFkZXIucmVhZDh1KCk7XG4gIHNpemVbMF0gPSA4O1xuICByZXR1cm4gY2FtbF9pbnQ2NF9vZl9ieXRlcyAodCk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfaW50NjRfbWFyc2hhbFxuLy9SZXF1aXJlczogY2FtbF9pbnQ2NF90b19ieXRlc1xuZnVuY3Rpb24gY2FtbF9pbnQ2NF9tYXJzaGFsKHdyaXRlciwgdiwgc2l6ZXMpIHtcbiAgdmFyIGIgPSBjYW1sX2ludDY0X3RvX2J5dGVzICh2KTtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCA4OyBpKyspIHdyaXRlci53cml0ZSAoOCwgYltpXSk7XG4gIHNpemVzWzBdID0gODsgc2l6ZXNbMV0gPSA4O1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2ludDMyX3VubWFyc2hhbFxuZnVuY3Rpb24gY2FtbF9pbnQzMl91bm1hcnNoYWwocmVhZGVyLCBzaXplKXtcbiAgc2l6ZVswXSA9IDQ7XG4gIHJldHVybiByZWFkZXIucmVhZDMycyAoKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9uYXRpdmVpbnRfdW5tYXJzaGFsXG4vL1JlcXVpcmVzOiBjYW1sX2ZhaWx3aXRoXG5mdW5jdGlvbiBjYW1sX25hdGl2ZWludF91bm1hcnNoYWwocmVhZGVyLCBzaXplKXtcbiAgc3dpdGNoIChyZWFkZXIucmVhZDh1ICgpKSB7XG4gIGNhc2UgMTpcbiAgICBzaXplWzBdID0gNDtcbiAgICByZXR1cm4gcmVhZGVyLnJlYWQzMnMgKCk7XG4gIGNhc2UgMjpcbiAgICBjYW1sX2ZhaWx3aXRoKFwiaW5wdXRfdmFsdWU6IG5hdGl2ZSBpbnRlZ2VyIHZhbHVlIHRvbyBsYXJnZVwiKTtcbiAgZGVmYXVsdDogY2FtbF9mYWlsd2l0aChcImlucHV0X3ZhbHVlOiBpbGwtZm9ybWVkIG5hdGl2ZSBpbnRlZ2VyXCIpO1xuICB9XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfY3VzdG9tX29wc1xuLy9SZXF1aXJlczogY2FtbF9pbnQ2NF91bm1hcnNoYWwsIGNhbWxfaW50NjRfbWFyc2hhbCwgY2FtbF9pbnQ2NF9jb21wYXJlLCBjYW1sX2ludDY0X2hhc2hcbi8vUmVxdWlyZXM6IGNhbWxfaW50MzJfdW5tYXJzaGFsLCBjYW1sX25hdGl2ZWludF91bm1hcnNoYWxcbi8vUmVxdWlyZXM6IGNhbWxfYmFfc2VyaWFsaXplLCBjYW1sX2JhX2Rlc2VyaWFsaXplLCBjYW1sX2JhX2NvbXBhcmUsIGNhbWxfYmFfaGFzaFxudmFyIGNhbWxfY3VzdG9tX29wcyA9XG4gICAge1wiX2pcIjoge1xuICAgICAgZGVzZXJpYWxpemUgOiBjYW1sX2ludDY0X3VubWFyc2hhbCxcbiAgICAgIHNlcmlhbGl6ZSAgOiBjYW1sX2ludDY0X21hcnNoYWwsXG4gICAgICBmaXhlZF9sZW5ndGggOiA4LFxuICAgICAgY29tcGFyZSA6IGNhbWxfaW50NjRfY29tcGFyZSxcbiAgICAgIGhhc2ggOiBjYW1sX2ludDY0X2hhc2hcbiAgICB9LFxuICAgICBcIl9pXCI6IHtcbiAgICAgICBkZXNlcmlhbGl6ZSA6IGNhbWxfaW50MzJfdW5tYXJzaGFsLFxuICAgICAgIGZpeGVkX2xlbmd0aCA6IDQsXG4gICAgIH0sXG4gICAgIFwiX25cIjoge1xuICAgICAgIGRlc2VyaWFsaXplIDogY2FtbF9uYXRpdmVpbnRfdW5tYXJzaGFsLFxuICAgICAgIGZpeGVkX2xlbmd0aCA6IDQsXG4gICAgIH0sXG4gICAgIFwiX2JpZ2FycmF5XCI6e1xuICAgICAgIGRlc2VyaWFsaXplIDogKGZ1bmN0aW9uIChyZWFkZXIsIHN6KSB7cmV0dXJuIGNhbWxfYmFfZGVzZXJpYWxpemUgKHJlYWRlcixzeixcIl9iaWdhcnJheVwiKX0pLFxuICAgICAgIHNlcmlhbGl6ZSA6IGNhbWxfYmFfc2VyaWFsaXplLFxuICAgICAgIGNvbXBhcmUgOiBjYW1sX2JhX2NvbXBhcmUsXG4gICAgICAgaGFzaDogY2FtbF9iYV9oYXNoLFxuICAgICB9LFxuICAgICBcIl9iaWdhcnIwMlwiOntcbiAgICAgICBkZXNlcmlhbGl6ZSA6IChmdW5jdGlvbiAocmVhZGVyLCBzeikge3JldHVybiBjYW1sX2JhX2Rlc2VyaWFsaXplIChyZWFkZXIsc3osXCJfYmlnYXJyMDJcIil9KSxcbiAgICAgICBzZXJpYWxpemUgOiBjYW1sX2JhX3NlcmlhbGl6ZSxcbiAgICAgICBjb21wYXJlIDogY2FtbF9iYV9jb21wYXJlLFxuICAgICAgIGhhc2g6IGNhbWxfYmFfaGFzaCxcbiAgICAgfVxuICAgIH1cblxuLy9Qcm92aWRlczogY2FtbF9pbnB1dF92YWx1ZV9mcm9tX3JlYWRlciBtdXRhYmxlXG4vL1JlcXVpcmVzOiBjYW1sX2ZhaWx3aXRoXG4vL1JlcXVpcmVzOiBjYW1sX2Zsb2F0X29mX2J5dGVzLCBjYW1sX2N1c3RvbV9vcHNcbi8vUmVxdWlyZXM6IHpzdGRfZGVjb21wcmVzc1xuLy9SZXF1aXJlczogVUludDhBcnJheVJlYWRlclxuZnVuY3Rpb24gY2FtbF9pbnB1dF92YWx1ZV9mcm9tX3JlYWRlcihyZWFkZXIsIG9mcykge1xuICBmdW5jdGlvbiByZWFkdmxxKG92ZXJmbG93KSB7XG4gICAgdmFyIGMgPSByZWFkZXIucmVhZDh1KCk7XG4gICAgdmFyIG4gPSBjICYgMHg3RjtcbiAgICB3aGlsZSAoKGMgJiAweDgwKSAhPSAwKSB7XG4gICAgICBjID0gcmVhZGVyLnJlYWQ4dSgpO1xuICAgICAgdmFyIG43ID0gbiA8PCA3O1xuICAgICAgaWYgKG4gIT0gbjcgPj4gNykgb3ZlcmZsb3dbMF0gPSB0cnVlO1xuICAgICAgbiA9IG43IHwgKGMgJiAweDdGKTtcbiAgICB9XG4gICAgcmV0dXJuIG47XG4gIH1cbiAgdmFyIG1hZ2ljID0gcmVhZGVyLnJlYWQzMnUgKClcbiAgc3dpdGNoKG1hZ2ljKXtcbiAgY2FzZSAweDg0OTVBNkJFOiAvKiBJbnRleHRfbWFnaWNfbnVtYmVyX3NtYWxsICovXG4gICAgdmFyIGhlYWRlcl9sZW4gPSAyMDtcbiAgICB2YXIgY29tcHJlc3NlZCA9IDA7XG4gICAgdmFyIGRhdGFfbGVuID0gcmVhZGVyLnJlYWQzMnUgKCk7XG4gICAgdmFyIHVuY29tcHJlc3NlZF9kYXRhX2xlbiA9IGRhdGFfbGVuO1xuICAgIHZhciBudW1fb2JqZWN0cyA9IHJlYWRlci5yZWFkMzJ1ICgpO1xuICAgIHZhciBfc2l6ZV8zMiA9IHJlYWRlci5yZWFkMzJ1ICgpO1xuICAgIHZhciBfc2l6ZV82NCA9IHJlYWRlci5yZWFkMzJ1ICgpO1xuICAgIGJyZWFrXG4gIGNhc2UgMHg4NDk1QTZCRDogLyogSW50ZXh0X21hZ2ljX251bWJlcl9jb21wcmVzc2VkICovXG4gICAgdmFyIGhlYWRlcl9sZW4gPSByZWFkZXIucmVhZDh1KCkgJiAweDNGO1xuICAgIHZhciBjb21wcmVzc2VkID0gMTtcbiAgICB2YXIgb3ZlcmZsb3cgPSBbZmFsc2VdO1xuICAgIHZhciBkYXRhX2xlbiA9IHJlYWR2bHEob3ZlcmZsb3cpO1xuICAgIHZhciB1bmNvbXByZXNzZWRfZGF0YV9sZW4gPSByZWFkdmxxKG92ZXJmbG93KTtcbiAgICB2YXIgbnVtX29iamVjdHMgPSByZWFkdmxxKG92ZXJmbG93KTtcbiAgICB2YXIgX3NpemVfMzIgPSByZWFkdmxxIChvdmVyZmxvdyk7XG4gICAgdmFyIF9zaXplXzY0ID0gcmVhZHZscSAob3ZlcmZsb3cpO1xuICAgIGlmKG92ZXJmbG93WzBdKXtcbiAgICAgICAgY2FtbF9mYWlsd2l0aChcImNhbWxfaW5wdXRfdmFsdWVfZnJvbV9yZWFkZXI6IG9iamVjdCB0b28gbGFyZ2UgdG8gYmUgcmVhZCBiYWNrIG9uIHRoaXMgcGxhdGZvcm1cIik7XG4gICAgfVxuICAgIGJyZWFrXG4gIGNhc2UgMHg4NDk1QTZCRjogLyogSW50ZXh0X21hZ2ljX251bWJlcl9iaWcgKi9cbiAgICBjYW1sX2ZhaWx3aXRoKFwiY2FtbF9pbnB1dF92YWx1ZV9mcm9tX3JlYWRlcjogb2JqZWN0IHRvbyBsYXJnZSB0byBiZSByZWFkIGJhY2sgb24gYSAzMi1iaXQgcGxhdGZvcm1cIik7XG4gICAgYnJlYWtcbiAgZGVmYXVsdDpcbiAgICBjYW1sX2ZhaWx3aXRoKFwiY2FtbF9pbnB1dF92YWx1ZV9mcm9tX3JlYWRlcjogYmFkIG9iamVjdFwiKTtcbiAgICBicmVhaztcbiAgfVxuICB2YXIgc3RhY2sgPSBbXTtcbiAgdmFyIGludGVybl9vYmpfdGFibGUgPSAobnVtX29iamVjdHMgPiAwKT9bXTpudWxsO1xuICB2YXIgb2JqX2NvdW50ZXIgPSAwO1xuICBmdW5jdGlvbiBpbnRlcm5fcmVjIChyZWFkZXIpIHtcbiAgICB2YXIgY29kZSA9IHJlYWRlci5yZWFkOHUgKCk7XG4gICAgaWYgKGNvZGUgPj0gMHg0MCAvKmNzdC5QUkVGSVhfU01BTExfSU5UKi8pIHtcbiAgICAgIGlmIChjb2RlID49IDB4ODAgLypjc3QuUFJFRklYX1NNQUxMX0JMT0NLKi8pIHtcbiAgICAgICAgdmFyIHRhZyA9IGNvZGUgJiAweEY7XG4gICAgICAgIHZhciBzaXplID0gKGNvZGUgPj4gNCkgJiAweDc7XG4gICAgICAgIHZhciB2ID0gW3RhZ107XG4gICAgICAgIGlmIChzaXplID09IDApIHJldHVybiB2O1xuICAgICAgICBpZiAoaW50ZXJuX29ial90YWJsZSkgaW50ZXJuX29ial90YWJsZVtvYmpfY291bnRlcisrXSA9IHY7XG4gICAgICAgIHN0YWNrLnB1c2godiwgc2l6ZSk7XG4gICAgICAgIHJldHVybiB2O1xuICAgICAgfSBlbHNlXG4gICAgICAgIHJldHVybiAoY29kZSAmIDB4M0YpO1xuICAgIH0gZWxzZSB7XG4gICAgICBpZiAoY29kZSA+PSAweDIwLypjc3QuUFJFRklYX1NNQUxMX1NUUklORyAqLykge1xuICAgICAgICB2YXIgbGVuID0gY29kZSAmIDB4MUY7XG4gICAgICAgIHZhciB2ID0gcmVhZGVyLnJlYWRzdHIgKGxlbik7XG4gICAgICAgIGlmIChpbnRlcm5fb2JqX3RhYmxlKSBpbnRlcm5fb2JqX3RhYmxlW29ial9jb3VudGVyKytdID0gdjtcbiAgICAgICAgcmV0dXJuIHY7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBzd2l0Y2goY29kZSkge1xuICAgICAgICBjYXNlIDB4MDA6IC8vY3N0LkNPREVfSU5UODpcbiAgICAgICAgICByZXR1cm4gcmVhZGVyLnJlYWQ4cyAoKTtcbiAgICAgICAgY2FzZSAweDAxOiAvL2NzdC5DT0RFX0lOVDE2OlxuICAgICAgICAgIHJldHVybiByZWFkZXIucmVhZDE2cyAoKTtcbiAgICAgICAgY2FzZSAweDAyOiAvL2NzdC5DT0RFX0lOVDMyOlxuICAgICAgICAgIHJldHVybiByZWFkZXIucmVhZDMycyAoKTtcbiAgICAgICAgY2FzZSAweDAzOiAvL2NzdC5DT0RFX0lOVDY0OlxuICAgICAgICAgIGNhbWxfZmFpbHdpdGgoXCJpbnB1dF92YWx1ZTogaW50ZWdlciB0b28gbGFyZ2VcIik7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgMHgwNDogLy9jc3QuQ09ERV9TSEFSRUQ4OlxuICAgICAgICAgIHZhciBvZmZzZXQgPSByZWFkZXIucmVhZDh1ICgpO1xuICAgICAgICAgIGlmKGNvbXByZXNzZWQgPT0gMCkgb2Zmc2V0ID0gb2JqX2NvdW50ZXIgLSBvZmZzZXQ7XG4gICAgICAgICAgcmV0dXJuIGludGVybl9vYmpfdGFibGVbb2Zmc2V0XTtcbiAgICAgICAgY2FzZSAweDA1OiAvL2NzdC5DT0RFX1NIQVJFRDE2OlxuICAgICAgICAgIHZhciBvZmZzZXQgPSByZWFkZXIucmVhZDE2dSAoKTtcbiAgICAgICAgICBpZihjb21wcmVzc2VkID09IDApIG9mZnNldCA9IG9ial9jb3VudGVyIC0gb2Zmc2V0O1xuICAgICAgICAgIHJldHVybiBpbnRlcm5fb2JqX3RhYmxlW29mZnNldF07XG4gICAgICAgIGNhc2UgMHgwNjogLy9jc3QuQ09ERV9TSEFSRUQzMjpcbiAgICAgICAgICB2YXIgb2Zmc2V0ID0gcmVhZGVyLnJlYWQzMnUgKCk7XG4gICAgICAgICAgaWYoY29tcHJlc3NlZCA9PSAwKSBvZmZzZXQgPSBvYmpfY291bnRlciAtIG9mZnNldDtcbiAgICAgICAgICByZXR1cm4gaW50ZXJuX29ial90YWJsZVtvZmZzZXRdO1xuICAgICAgICBjYXNlIDB4MDg6IC8vY3N0LkNPREVfQkxPQ0szMjpcbiAgICAgICAgICB2YXIgaGVhZGVyID0gcmVhZGVyLnJlYWQzMnUgKCk7XG4gICAgICAgICAgdmFyIHRhZyA9IGhlYWRlciAmIDB4RkY7XG4gICAgICAgICAgdmFyIHNpemUgPSBoZWFkZXIgPj4gMTA7XG4gICAgICAgICAgdmFyIHYgPSBbdGFnXTtcbiAgICAgICAgICBpZiAoc2l6ZSA9PSAwKSByZXR1cm4gdjtcbiAgICAgICAgICBpZiAoaW50ZXJuX29ial90YWJsZSkgaW50ZXJuX29ial90YWJsZVtvYmpfY291bnRlcisrXSA9IHY7XG4gICAgICAgICAgc3RhY2sucHVzaCh2LCBzaXplKTtcbiAgICAgICAgICByZXR1cm4gdjtcbiAgICAgICAgY2FzZSAweDEzOiAvL2NzdC5DT0RFX0JMT0NLNjQ6XG4gICAgICAgICAgY2FtbF9mYWlsd2l0aCAoXCJpbnB1dF92YWx1ZTogZGF0YSBibG9jayB0b28gbGFyZ2VcIik7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgMHgwOTogLy9jc3QuQ09ERV9TVFJJTkc4OlxuICAgICAgICAgIHZhciBsZW4gPSByZWFkZXIucmVhZDh1KCk7XG4gICAgICAgICAgdmFyIHYgPSByZWFkZXIucmVhZHN0ciAobGVuKTtcbiAgICAgICAgICBpZiAoaW50ZXJuX29ial90YWJsZSkgaW50ZXJuX29ial90YWJsZVtvYmpfY291bnRlcisrXSA9IHY7XG4gICAgICAgICAgcmV0dXJuIHY7XG4gICAgICAgIGNhc2UgMHgwQTogLy9jc3QuQ09ERV9TVFJJTkczMjpcbiAgICAgICAgICB2YXIgbGVuID0gcmVhZGVyLnJlYWQzMnUoKTtcbiAgICAgICAgICB2YXIgdiA9IHJlYWRlci5yZWFkc3RyIChsZW4pO1xuICAgICAgICAgIGlmIChpbnRlcm5fb2JqX3RhYmxlKSBpbnRlcm5fb2JqX3RhYmxlW29ial9jb3VudGVyKytdID0gdjtcbiAgICAgICAgICByZXR1cm4gdjtcbiAgICAgICAgY2FzZSAweDBDOiAvL2NzdC5DT0RFX0RPVUJMRV9MSVRUTEU6XG4gICAgICAgICAgdmFyIHQgPSBuZXcgQXJyYXkoOCk7O1xuICAgICAgICAgIGZvciAodmFyIGkgPSAwO2kgPCA4O2krKykgdFs3IC0gaV0gPSByZWFkZXIucmVhZDh1ICgpO1xuICAgICAgICAgIHZhciB2ID0gY2FtbF9mbG9hdF9vZl9ieXRlcyAodCk7XG4gICAgICAgICAgaWYgKGludGVybl9vYmpfdGFibGUpIGludGVybl9vYmpfdGFibGVbb2JqX2NvdW50ZXIrK10gPSB2O1xuICAgICAgICAgIHJldHVybiB2O1xuICAgICAgICBjYXNlIDB4MEI6IC8vY3N0LkNPREVfRE9VQkxFX0JJRzpcbiAgICAgICAgICB2YXIgdCA9IG5ldyBBcnJheSg4KTs7XG4gICAgICAgICAgZm9yICh2YXIgaSA9IDA7aSA8IDg7aSsrKSB0W2ldID0gcmVhZGVyLnJlYWQ4dSAoKTtcbiAgICAgICAgICB2YXIgdiA9IGNhbWxfZmxvYXRfb2ZfYnl0ZXMgKHQpO1xuICAgICAgICAgIGlmIChpbnRlcm5fb2JqX3RhYmxlKSBpbnRlcm5fb2JqX3RhYmxlW29ial9jb3VudGVyKytdID0gdjtcbiAgICAgICAgICByZXR1cm4gdjtcbiAgICAgICAgY2FzZSAweDBFOiAvL2NzdC5DT0RFX0RPVUJMRV9BUlJBWThfTElUVExFOlxuICAgICAgICAgIHZhciBsZW4gPSByZWFkZXIucmVhZDh1KCk7XG4gICAgICAgICAgdmFyIHYgPSBuZXcgQXJyYXkobGVuKzEpO1xuICAgICAgICAgIHZbMF0gPSAyNTQ7XG4gICAgICAgICAgdmFyIHQgPSBuZXcgQXJyYXkoOCk7O1xuICAgICAgICAgIGlmIChpbnRlcm5fb2JqX3RhYmxlKSBpbnRlcm5fb2JqX3RhYmxlW29ial9jb3VudGVyKytdID0gdjtcbiAgICAgICAgICBmb3IgKHZhciBpID0gMTtpIDw9IGxlbjtpKyspIHtcbiAgICAgICAgICAgIGZvciAodmFyIGogPSAwO2ogPCA4O2orKykgdFs3IC0gal0gPSByZWFkZXIucmVhZDh1KCk7XG4gICAgICAgICAgICB2W2ldID0gY2FtbF9mbG9hdF9vZl9ieXRlcyAodCk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiB2O1xuICAgICAgICBjYXNlIDB4MEQ6IC8vY3N0LkNPREVfRE9VQkxFX0FSUkFZOF9CSUc6XG4gICAgICAgICAgdmFyIGxlbiA9IHJlYWRlci5yZWFkOHUoKTtcbiAgICAgICAgICB2YXIgdiA9IG5ldyBBcnJheShsZW4rMSk7XG4gICAgICAgICAgdlswXSA9IDI1NDtcbiAgICAgICAgICB2YXIgdCA9IG5ldyBBcnJheSg4KTs7XG4gICAgICAgICAgaWYgKGludGVybl9vYmpfdGFibGUpIGludGVybl9vYmpfdGFibGVbb2JqX2NvdW50ZXIrK10gPSB2O1xuICAgICAgICAgIGZvciAodmFyIGkgPSAxO2kgPD0gbGVuO2krKykge1xuICAgICAgICAgICAgZm9yICh2YXIgaiA9IDA7aiA8IDg7aisrKSB0W2pdID0gcmVhZGVyLnJlYWQ4dSgpO1xuICAgICAgICAgICAgdiBbaV0gPSBjYW1sX2Zsb2F0X29mX2J5dGVzICh0KTtcbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIHY7XG4gICAgICAgIGNhc2UgMHgwNzogLy9jc3QuQ09ERV9ET1VCTEVfQVJSQVkzMl9MSVRUTEU6XG4gICAgICAgICAgdmFyIGxlbiA9IHJlYWRlci5yZWFkMzJ1KCk7XG4gICAgICAgICAgdmFyIHYgPSBuZXcgQXJyYXkobGVuKzEpO1xuICAgICAgICAgIHZbMF0gPSAyNTQ7XG4gICAgICAgICAgaWYgKGludGVybl9vYmpfdGFibGUpIGludGVybl9vYmpfdGFibGVbb2JqX2NvdW50ZXIrK10gPSB2O1xuICAgICAgICAgIHZhciB0ID0gbmV3IEFycmF5KDgpOztcbiAgICAgICAgICBmb3IgKHZhciBpID0gMTtpIDw9IGxlbjtpKyspIHtcbiAgICAgICAgICAgIGZvciAodmFyIGogPSAwO2ogPCA4O2orKykgdFs3IC0gal0gPSByZWFkZXIucmVhZDh1KCk7XG4gICAgICAgICAgICB2W2ldID0gY2FtbF9mbG9hdF9vZl9ieXRlcyAodCk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiB2O1xuICAgICAgICBjYXNlIDB4MEY6IC8vY3N0LkNPREVfRE9VQkxFX0FSUkFZMzJfQklHOlxuICAgICAgICAgIHZhciBsZW4gPSByZWFkZXIucmVhZDMydSgpO1xuICAgICAgICAgIHZhciB2ID0gbmV3IEFycmF5KGxlbisxKTtcbiAgICAgICAgICB2WzBdID0gMjU0O1xuICAgICAgICAgIHZhciB0ID0gbmV3IEFycmF5KDgpOztcbiAgICAgICAgICBmb3IgKHZhciBpID0gMTtpIDw9IGxlbjtpKyspIHtcbiAgICAgICAgICAgIGZvciAodmFyIGogPSAwO2ogPCA4O2orKykgdFtqXSA9IHJlYWRlci5yZWFkOHUoKTtcbiAgICAgICAgICAgIHYgW2ldID0gY2FtbF9mbG9hdF9vZl9ieXRlcyAodCk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiB2O1xuICAgICAgICBjYXNlIDB4MTA6IC8vY3N0LkNPREVfQ09ERVBPSU5URVI6XG4gICAgICAgIGNhc2UgMHgxMTogLy9jc3QuQ09ERV9JTkZJWFBPSU5URVI6XG4gICAgICAgICAgY2FtbF9mYWlsd2l0aCAoXCJpbnB1dF92YWx1ZTogY29kZSBwb2ludGVyXCIpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIDB4MTI6IC8vY3N0LkNPREVfQ1VTVE9NOlxuICAgICAgICBjYXNlIDB4MTg6IC8vY3N0LkNPREVfQ1VTVE9NX0xFTjpcbiAgICAgICAgY2FzZSAweDE5OiAvL2NzdC5DT0RFX0NVU1RPTV9GSVhFRDpcbiAgICAgICAgICB2YXIgYywgcyA9IFwiXCI7XG4gICAgICAgICAgd2hpbGUgKChjID0gcmVhZGVyLnJlYWQ4dSAoKSkgIT0gMCkgcyArPSBTdHJpbmcuZnJvbUNoYXJDb2RlIChjKTtcbiAgICAgICAgICB2YXIgb3BzID0gY2FtbF9jdXN0b21fb3BzW3NdO1xuICAgICAgICAgIHZhciBleHBlY3RlZF9zaXplO1xuICAgICAgICAgIGlmKCFvcHMpXG4gICAgICAgICAgICBjYW1sX2ZhaWx3aXRoKFwiaW5wdXRfdmFsdWU6IHVua25vd24gY3VzdG9tIGJsb2NrIGlkZW50aWZpZXJcIik7XG4gICAgICAgICAgc3dpdGNoKGNvZGUpe1xuICAgICAgICAgIGNhc2UgMHgxMjogLy8gY3N0LkNPREVfQ1VTVE9NIChkZXByZWNhdGVkKVxuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgY2FzZSAweDE5OiAvLyBjc3QuQ09ERV9DVVNUT01fRklYRURcbiAgICAgICAgICAgIGlmKCFvcHMuZml4ZWRfbGVuZ3RoKVxuICAgICAgICAgICAgICBjYW1sX2ZhaWx3aXRoKFwiaW5wdXRfdmFsdWU6IGV4cGVjdGVkIGEgZml4ZWQtc2l6ZSBjdXN0b20gYmxvY2tcIik7XG4gICAgICAgICAgICBleHBlY3RlZF9zaXplID0gb3BzLmZpeGVkX2xlbmd0aDtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIGNhc2UgMHgxODogLy8gY3N0LkNPREVfQ1VTVE9NX0xFTlxuICAgICAgICAgICAgZXhwZWN0ZWRfc2l6ZSA9IHJlYWRlci5yZWFkMzJ1ICgpO1xuICAgICAgICAgICAgLy8gU2tpcCBzaXplNjRcbiAgICAgICAgICAgIHJlYWRlci5yZWFkMzJzKCk7IHJlYWRlci5yZWFkMzJzKCk7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICB9XG4gICAgICAgICAgdmFyIG9sZF9wb3MgPSByZWFkZXIuaTtcbiAgICAgICAgICB2YXIgc2l6ZSA9IFswXTtcbiAgICAgICAgICB2YXIgdiA9IG9wcy5kZXNlcmlhbGl6ZShyZWFkZXIsIHNpemUpO1xuICAgICAgICAgIGlmKGV4cGVjdGVkX3NpemUgIT0gdW5kZWZpbmVkKXtcbiAgICAgICAgICAgIGlmKGV4cGVjdGVkX3NpemUgIT0gc2l6ZVswXSlcbiAgICAgICAgICAgICAgY2FtbF9mYWlsd2l0aChcImlucHV0X3ZhbHVlOiBpbmNvcnJlY3QgbGVuZ3RoIG9mIHNlcmlhbGl6ZWQgY3VzdG9tIGJsb2NrXCIpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAoaW50ZXJuX29ial90YWJsZSkgaW50ZXJuX29ial90YWJsZVtvYmpfY291bnRlcisrXSA9IHY7XG4gICAgICAgICAgcmV0dXJuIHY7XG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgY2FtbF9mYWlsd2l0aCAoXCJpbnB1dF92YWx1ZTogaWxsLWZvcm1lZCBtZXNzYWdlXCIpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG4gIGlmKGNvbXByZXNzZWQpIHtcbiAgICB2YXIgZGF0YSA9IHJlYWRlci5yZWFkdWludDhhcnJheShkYXRhX2xlbik7XG4gICAgdmFyIHJlcyA9IG5ldyBVaW50OEFycmF5KHVuY29tcHJlc3NlZF9kYXRhX2xlbik7XG4gICAgdmFyIHJlcyA9IHpzdGRfZGVjb21wcmVzcyhkYXRhLCByZXMpO1xuICAgIHZhciByZWFkZXIgPSBuZXcgVUludDhBcnJheVJlYWRlcihyZXMsIDApO1xuICB9XG4gIHZhciByZXMgPSBpbnRlcm5fcmVjIChyZWFkZXIpO1xuICB3aGlsZSAoc3RhY2subGVuZ3RoID4gMCkge1xuICAgIHZhciBzaXplID0gc3RhY2sucG9wKCk7XG4gICAgdmFyIHYgPSBzdGFjay5wb3AoKTtcbiAgICB2YXIgZCA9IHYubGVuZ3RoO1xuICAgIGlmIChkIDwgc2l6ZSkgc3RhY2sucHVzaCh2LCBzaXplKTtcbiAgICB2W2RdID0gaW50ZXJuX3JlYyAocmVhZGVyKTtcbiAgfVxuICBpZiAodHlwZW9mIG9mcyE9XCJudW1iZXJcIikgb2ZzWzBdID0gcmVhZGVyLmk7XG4gIHJldHVybiByZXM7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWFyc2hhbF9oZWFkZXJfc2l6ZVxuLy9WZXJzaW9uOiA8IDUuMS4wXG52YXIgY2FtbF9tYXJzaGFsX2hlYWRlcl9zaXplID0gMjBcblxuLy9Qcm92aWRlczogY2FtbF9tYXJzaGFsX2hlYWRlcl9zaXplXG4vL1ZlcnNpb246ID49IDUuMS4wXG52YXIgY2FtbF9tYXJzaGFsX2hlYWRlcl9zaXplID0gMTZcblxuXG5cbi8vUHJvdmlkZXM6IGNhbWxfbWFyc2hhbF9kYXRhX3NpemUgbXV0YWJsZVxuLy9SZXF1aXJlczogY2FtbF9mYWlsd2l0aCwgY2FtbF9ieXRlc191bnNhZmVfZ2V0XG4vL1JlcXVpcmVzOiBjYW1sX3VpbnQ4X2FycmF5X29mX2J5dGVzXG4vL1JlcXVpcmVzOiBVSW50OEFycmF5UmVhZGVyXG4vL1JlcXVpcmVzOiBjYW1sX21hcnNoYWxfaGVhZGVyX3NpemVcbmZ1bmN0aW9uIGNhbWxfbWFyc2hhbF9kYXRhX3NpemUgKHMsIG9mcykge1xuICB2YXIgciA9IG5ldyBVSW50OEFycmF5UmVhZGVyKGNhbWxfdWludDhfYXJyYXlfb2ZfYnl0ZXMocyksIG9mcyk7XG4gIGZ1bmN0aW9uIHJlYWR2bHEob3ZlcmZsb3cpIHtcbiAgICB2YXIgYyA9IHIucmVhZDh1KCk7XG4gICAgdmFyIG4gPSBjICYgMHg3RjtcbiAgICB3aGlsZSAoKGMgJiAweDgwKSAhPSAwKSB7XG4gICAgICBjID0gci5yZWFkOHUoKTtcbiAgICAgIHZhciBuNyA9IG4gPDwgNztcbiAgICAgIGlmIChuICE9IG43ID4+IDcpIG92ZXJmbG93WzBdID0gdHJ1ZTtcbiAgICAgIG4gPSBuNyB8IChjICYgMHg3Rik7XG4gICAgfVxuICAgIHJldHVybiBuO1xuICB9XG5cbiAgc3dpdGNoKHIucmVhZDMydSgpKXtcbiAgY2FzZSAweDg0OTVBNkJFOiAvKiBJbnRleHRfbWFnaWNfbnVtYmVyX3NtYWxsICovXG4gICAgdmFyIGhlYWRlcl9sZW4gPSAyMDtcbiAgICB2YXIgZGF0YV9sZW4gPSByLnJlYWQzMnUoKTtcbiAgICBicmVhaztcbiAgY2FzZSAweDg0OTVBNkJEOiAvKiBJbnRleHRfbWFnaWNfbnVtYmVyX2NvbXByZXNzZWQgKi9cbiAgICB2YXIgaGVhZGVyX2xlbiA9IHIucmVhZDh1KCkgJiAweDNGO1xuICAgIHZhciBvdmVyZmxvdyA9IFtmYWxzZV07XG4gICAgdmFyIGRhdGFfbGVuID0gcmVhZHZscShvdmVyZmxvdyk7XG4gICAgaWYob3ZlcmZsb3dbMF0pe1xuICAgICAgY2FtbF9mYWlsd2l0aChcIk1hcnNoYWwuZGF0YV9zaXplOiBvYmplY3QgdG9vIGxhcmdlIHRvIGJlIHJlYWQgYmFjayBvbiB0aGlzIHBsYXRmb3JtXCIpO1xuICAgIH1cbiAgICBicmVha1xuICBjYXNlIDB4ODQ5NUE2QkY6IC8qIEludGV4dF9tYWdpY19udW1iZXJfYmlnICovXG4gIGRlZmF1bHQ6XG4gICAgY2FtbF9mYWlsd2l0aChcIk1hcnNoYWwuZGF0YV9zaXplOiBiYWQgb2JqZWN0XCIpO1xuICAgIGJyZWFrXG4gIH1cbiAgcmV0dXJuIGhlYWRlcl9sZW4gLSBjYW1sX21hcnNoYWxfaGVhZGVyX3NpemUgKyBkYXRhX2xlbjtcbn1cblxuLy9Qcm92aWRlczogTWxPYmplY3RUYWJsZVxudmFyIE1sT2JqZWN0VGFibGU7XG5pZiAodHlwZW9mIGdsb2JhbFRoaXMuTWFwID09PSAndW5kZWZpbmVkJykge1xuICBNbE9iamVjdFRhYmxlID0gZnVuY3Rpb24oKSB7XG4gICAgLyogcG9seWZpbGwgKHVzaW5nIGxpbmVhciBzZWFyY2gpICovXG4gICAgZnVuY3Rpb24gTmFpdmVMb29rdXAob2JqcykgeyB0aGlzLm9ianMgPSBvYmpzOyB9XG4gICAgTmFpdmVMb29rdXAucHJvdG90eXBlLmdldCA9IGZ1bmN0aW9uKHYpIHtcbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5vYmpzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIGlmICh0aGlzLm9ianNbaV0gPT09IHYpIHJldHVybiBpO1xuICAgICAgfVxuICAgIH07XG4gICAgTmFpdmVMb29rdXAucHJvdG90eXBlLnNldCA9IGZ1bmN0aW9uKCkge1xuICAgICAgLy8gRG8gbm90aGluZyBoZXJlLiBbTWxPYmplY3RUYWJsZS5zdG9yZV0gd2lsbCBwdXNoIHRvIFt0aGlzLm9ianNdIGRpcmVjdGx5LlxuICAgIH07XG5cbiAgICByZXR1cm4gZnVuY3Rpb24gTWxPYmplY3RUYWJsZSgpIHtcbiAgICAgIHRoaXMub2JqcyA9IFtdOyB0aGlzLmxvb2t1cCA9IG5ldyBOYWl2ZUxvb2t1cCh0aGlzLm9ianMpO1xuICAgIH07XG4gIH0oKTtcbn1cbmVsc2Uge1xuICBNbE9iamVjdFRhYmxlID0gZnVuY3Rpb24gTWxPYmplY3RUYWJsZSgpIHtcbiAgICB0aGlzLm9ianMgPSBbXTsgdGhpcy5sb29rdXAgPSBuZXcgZ2xvYmFsVGhpcy5NYXAoKTtcbiAgfTtcbn1cblxuTWxPYmplY3RUYWJsZS5wcm90b3R5cGUuc3RvcmUgPSBmdW5jdGlvbih2KSB7XG4gIHRoaXMubG9va3VwLnNldCh2LCB0aGlzLm9ianMubGVuZ3RoKTtcbiAgdGhpcy5vYmpzLnB1c2godik7XG59XG5cbk1sT2JqZWN0VGFibGUucHJvdG90eXBlLnJlY2FsbCA9IGZ1bmN0aW9uKHYpIHtcbiAgdmFyIGkgPSB0aGlzLmxvb2t1cC5nZXQodik7XG4gIHJldHVybiAoaSA9PT0gdW5kZWZpbmVkKVxuICAgID8gdW5kZWZpbmVkIDogdGhpcy5vYmpzLmxlbmd0aCAtIGk7ICAgLyogaW5kZXggaXMgcmVsYXRpdmUgKi9cbn1cblxuLy9Qcm92aWRlczogY2FtbF9vdXRwdXRfdmFsXG4vL1JlcXVpcmVzOiBjYW1sX2ludDY0X3RvX2J5dGVzLCBjYW1sX2ZhaWx3aXRoXG4vL1JlcXVpcmVzOiBjYW1sX2ludDY0X2JpdHNfb2ZfZmxvYXRcbi8vUmVxdWlyZXM6IGNhbWxfaXNfbWxfYnl0ZXMsIGNhbWxfbWxfYnl0ZXNfbGVuZ3RoLCBjYW1sX2J5dGVzX3Vuc2FmZV9nZXRcbi8vUmVxdWlyZXM6IGNhbWxfaXNfbWxfc3RyaW5nLCBjYW1sX21sX3N0cmluZ19sZW5ndGgsIGNhbWxfc3RyaW5nX3Vuc2FmZV9nZXRcbi8vUmVxdWlyZXM6IE1sT2JqZWN0VGFibGUsIGNhbWxfbGlzdF90b19qc19hcnJheSwgY2FtbF9jdXN0b21fb3BzXG4vL1JlcXVpcmVzOiBjYW1sX2ludmFsaWRfYXJndW1lbnQsY2FtbF9zdHJpbmdfb2ZfanNieXRlcywgY2FtbF9pc19jb250aW51YXRpb25fdGFnXG52YXIgY2FtbF9vdXRwdXRfdmFsID0gZnVuY3Rpb24gKCl7XG4gIGZ1bmN0aW9uIFdyaXRlciAoKSB7IHRoaXMuY2h1bmsgPSBbXTsgfVxuICBXcml0ZXIucHJvdG90eXBlID0ge1xuICAgIGNodW5rX2lkeDoyMCwgYmxvY2tfbGVuOjAsIG9ial9jb3VudGVyOjAsIHNpemVfMzI6MCwgc2l6ZV82NDowLFxuICAgIHdyaXRlOmZ1bmN0aW9uIChzaXplLCB2YWx1ZSkge1xuICAgICAgZm9yICh2YXIgaSA9IHNpemUgLSA4O2kgPj0gMDtpIC09IDgpXG4gICAgICAgIHRoaXMuY2h1bmtbdGhpcy5jaHVua19pZHgrK10gPSAodmFsdWUgPj4gaSkgJiAweEZGO1xuICAgIH0sXG4gICAgd3JpdGVfYXQ6ZnVuY3Rpb24gKHBvcywgc2l6ZSwgdmFsdWUpIHtcbiAgICAgIHZhciBwb3MgPSBwb3M7XG4gICAgICBmb3IgKHZhciBpID0gc2l6ZSAtIDg7aSA+PSAwO2kgLT0gOClcbiAgICAgICAgdGhpcy5jaHVua1twb3MrK10gPSAodmFsdWUgPj4gaSkgJiAweEZGO1xuICAgIH0sXG4gICAgd3JpdGVfY29kZTpmdW5jdGlvbiAoc2l6ZSwgY29kZSwgdmFsdWUpIHtcbiAgICAgIHRoaXMuY2h1bmtbdGhpcy5jaHVua19pZHgrK10gPSBjb2RlO1xuICAgICAgZm9yICh2YXIgaSA9IHNpemUgLSA4O2kgPj0gMDtpIC09IDgpXG4gICAgICAgIHRoaXMuY2h1bmtbdGhpcy5jaHVua19pZHgrK10gPSAodmFsdWUgPj4gaSkgJiAweEZGO1xuICAgIH0sXG4gICAgd3JpdGVfc2hhcmVkOmZ1bmN0aW9uIChvZmZzZXQpIHtcbiAgICAgIGlmIChvZmZzZXQgPCAoMSA8PCA4KSkgdGhpcy53cml0ZV9jb2RlKDgsIDB4MDQgLypjc3QuQ09ERV9TSEFSRUQ4Ki8sIG9mZnNldCk7XG4gICAgICBlbHNlIGlmIChvZmZzZXQgPCAoMSA8PCAxNikpIHRoaXMud3JpdGVfY29kZSgxNiwgMHgwNSAvKmNzdC5DT0RFX1NIQVJFRDE2Ki8sIG9mZnNldCk7XG4gICAgICBlbHNlIHRoaXMud3JpdGVfY29kZSgzMiwgMHgwNiAvKmNzdC5DT0RFX1NIQVJFRDMyKi8sIG9mZnNldCk7XG4gICAgfSxcbiAgICBwb3M6ZnVuY3Rpb24gKCkgeyByZXR1cm4gdGhpcy5jaHVua19pZHggfSxcbiAgICBmaW5hbGl6ZTpmdW5jdGlvbiAoKSB7XG4gICAgICB0aGlzLmJsb2NrX2xlbiA9IHRoaXMuY2h1bmtfaWR4IC0gMjA7XG4gICAgICB0aGlzLmNodW5rX2lkeCA9IDA7XG4gICAgICB0aGlzLndyaXRlICgzMiwgMHg4NDk1QTZCRSk7XG4gICAgICB0aGlzLndyaXRlICgzMiwgdGhpcy5ibG9ja19sZW4pO1xuICAgICAgdGhpcy53cml0ZSAoMzIsIHRoaXMub2JqX2NvdW50ZXIpO1xuICAgICAgdGhpcy53cml0ZSAoMzIsIHRoaXMuc2l6ZV8zMik7XG4gICAgICB0aGlzLndyaXRlICgzMiwgdGhpcy5zaXplXzY0KTtcbiAgICAgIHJldHVybiB0aGlzLmNodW5rO1xuICAgIH1cbiAgfVxuICByZXR1cm4gZnVuY3Rpb24gKHYsIGZsYWdzKSB7XG4gICAgZmxhZ3MgPSBjYW1sX2xpc3RfdG9fanNfYXJyYXkoZmxhZ3MpO1xuXG4gICAgdmFyIG5vX3NoYXJpbmcgPSAoZmxhZ3MuaW5kZXhPZigwIC8qTWFyc2hhbC5Ob19zaGFyaW5nKi8pICE9PSAtMSksXG4gICAgICAgIGNsb3N1cmVzID0gIChmbGFncy5pbmRleE9mKDEgLypNYXJzaGFsLkNsb3N1cmVzKi8pICE9PSAtMSk7XG4gICAgLyogTWFyc2hhbC5Db21wYXRfMzIgaXMgcmVkdW5kYW50IHNpbmNlIGludGVnZXJzIGFyZSAzMi1iaXQgYW55d2F5ICovXG5cbiAgICBpZiAoY2xvc3VyZXMpXG4gICAgICBjb25zb2xlLndhcm4oXCJpbiBjYW1sX291dHB1dF92YWw6IGZsYWcgTWFyc2hhbC5DbG9zdXJlcyBpcyBub3Qgc3VwcG9ydGVkLlwiKTtcblxuICAgIHZhciB3cml0ZXIgPSBuZXcgV3JpdGVyICgpO1xuICAgIHZhciBzdGFjayA9IFtdO1xuICAgIHZhciBpbnRlcm5fb2JqX3RhYmxlID0gbm9fc2hhcmluZyA/IG51bGwgOiBuZXcgTWxPYmplY3RUYWJsZSgpO1xuXG4gICAgZnVuY3Rpb24gbWVtbyh2KSB7XG4gICAgICBpZiAobm9fc2hhcmluZykgcmV0dXJuIGZhbHNlO1xuICAgICAgdmFyIGV4aXN0aW5nX29mZnNldCA9IGludGVybl9vYmpfdGFibGUucmVjYWxsKHYpO1xuICAgICAgaWYgKGV4aXN0aW5nX29mZnNldCkgeyB3cml0ZXIud3JpdGVfc2hhcmVkKGV4aXN0aW5nX29mZnNldCk7IHJldHVybiB0cnVlOyB9XG4gICAgICBlbHNlIHsgaW50ZXJuX29ial90YWJsZS5zdG9yZSh2KTsgcmV0dXJuIGZhbHNlOyB9XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gZXh0ZXJuX3JlYyAodikge1xuICAgICAgaWYgKHYuY2FtbF9jdXN0b20pIHtcbiAgICAgICAgaWYgKG1lbW8odikpIHJldHVybjtcbiAgICAgICAgdmFyIG5hbWUgPSB2LmNhbWxfY3VzdG9tO1xuICAgICAgICB2YXIgb3BzID0gY2FtbF9jdXN0b21fb3BzW25hbWVdO1xuICAgICAgICB2YXIgc3pfMzJfNjQgPSBbMCwwXTtcbiAgICAgICAgaWYoIW9wcy5zZXJpYWxpemUpXG4gICAgICAgICAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwib3V0cHV0X3ZhbHVlOiBhYnN0cmFjdCB2YWx1ZSAoQ3VzdG9tKVwiKTtcbiAgICAgICAgaWYob3BzLmZpeGVkX2xlbmd0aCA9PSB1bmRlZmluZWQpe1xuICAgICAgICAgIHdyaXRlci53cml0ZSAoOCwgMHgxOCAvKmNzdC5DT0RFX0NVU1RPTV9MRU4qLyk7XG4gICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBuYW1lLmxlbmd0aDsgaSsrKVxuICAgICAgICAgICAgd3JpdGVyLndyaXRlICg4LCBuYW1lLmNoYXJDb2RlQXQoaSkpO1xuICAgICAgICAgIHdyaXRlci53cml0ZSg4LCAwKTtcbiAgICAgICAgICB2YXIgaGVhZGVyX3BvcyA9IHdyaXRlci5wb3MgKCk7XG4gICAgICAgICAgZm9yKHZhciBpID0gMDsgaSA8IDEyOyBpKyspIHtcbiAgICAgICAgICAgIHdyaXRlci53cml0ZSg4LCAwKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgb3BzLnNlcmlhbGl6ZSh3cml0ZXIsIHYsIHN6XzMyXzY0KTtcbiAgICAgICAgICB3cml0ZXIud3JpdGVfYXQoaGVhZGVyX3BvcywgMzIsIHN6XzMyXzY0WzBdKTtcbiAgICAgICAgICB3cml0ZXIud3JpdGVfYXQoaGVhZGVyX3BvcyArIDQsIDMyLCAwKTsgLy8gemVyb1xuICAgICAgICAgIHdyaXRlci53cml0ZV9hdChoZWFkZXJfcG9zICsgOCwgMzIsIHN6XzMyXzY0WzFdKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB3cml0ZXIud3JpdGUgKDgsIDB4MTkgLypjc3QuQ09ERV9DVVNUT01fRklYRUQqLyk7XG4gICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBuYW1lLmxlbmd0aDsgaSsrKVxuICAgICAgICAgICAgd3JpdGVyLndyaXRlICg4LCBuYW1lLmNoYXJDb2RlQXQoaSkpO1xuICAgICAgICAgIHdyaXRlci53cml0ZSg4LCAwKTtcbiAgICAgICAgICB2YXIgb2xkX3BvcyA9IHdyaXRlci5wb3MoKTtcbiAgICAgICAgICBvcHMuc2VyaWFsaXplKHdyaXRlciwgdiwgc3pfMzJfNjQpO1xuICAgICAgICAgIGlmIChvcHMuZml4ZWRfbGVuZ3RoICE9IHdyaXRlci5wb3MoKSAtIG9sZF9wb3MpXG4gICAgICAgICAgICBjYW1sX2ZhaWx3aXRoKFwib3V0cHV0X3ZhbHVlOiBpbmNvcnJlY3QgZml4ZWQgc2l6ZXMgc3BlY2lmaWVkIGJ5IFwiICsgbmFtZSk7XG4gICAgICAgIH1cbiAgICAgICAgd3JpdGVyLnNpemVfMzIgKz0gMiArICgoc3pfMzJfNjRbMF0gKyAzKSA+PiAyKTtcbiAgICAgICAgd3JpdGVyLnNpemVfNjQgKz0gMiArICgoc3pfMzJfNjRbMV0gKyA3KSA+PiAzKTtcbiAgICAgIH1cbiAgICAgIGVsc2UgaWYgKHYgaW5zdGFuY2VvZiBBcnJheSAmJiB2WzBdID09PSAodlswXXwwKSkge1xuICAgICAgICBpZiAodlswXSA9PSAyNTEpIHtcbiAgICAgICAgICBjYW1sX2ZhaWx3aXRoKFwib3V0cHV0X3ZhbHVlOiBhYnN0cmFjdCB2YWx1ZSAoQWJzdHJhY3QpXCIpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChjYW1sX2lzX2NvbnRpbnVhdGlvbl90YWcodlswXSkpXG4gICAgICAgICAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwib3V0cHV0X3ZhbHVlOiBjb250aW51YXRpb24gdmFsdWVcIik7XG4gICAgICAgIGlmICh2Lmxlbmd0aCA+IDEgJiYgbWVtbyh2KSkgcmV0dXJuO1xuICAgICAgICBpZiAodlswXSA8IDE2ICYmIHYubGVuZ3RoIC0gMSA8IDgpXG4gICAgICAgICAgd3JpdGVyLndyaXRlICg4LCAweDgwIC8qY3N0LlBSRUZJWF9TTUFMTF9CTE9DSyovICsgdlswXSArICgodi5sZW5ndGggLSAxKTw8NCkpO1xuICAgICAgICBlbHNlXG4gICAgICAgICAgd3JpdGVyLndyaXRlX2NvZGUoMzIsIDB4MDggLypjc3QuQ09ERV9CTE9DSzMyKi8sICgodi5sZW5ndGgtMSkgPDwgMTApIHwgdlswXSk7XG4gICAgICAgIHdyaXRlci5zaXplXzMyICs9IHYubGVuZ3RoO1xuICAgICAgICB3cml0ZXIuc2l6ZV82NCArPSB2Lmxlbmd0aDtcbiAgICAgICAgaWYgKHYubGVuZ3RoID4gMSkgc3RhY2sucHVzaCAodiwgMSk7XG4gICAgICB9IGVsc2UgaWYgKGNhbWxfaXNfbWxfYnl0ZXModikpIHtcbiAgICAgICAgaWYoIShjYW1sX2lzX21sX2J5dGVzKGNhbWxfc3RyaW5nX29mX2pzYnl0ZXMoXCJcIikpKSkge1xuICAgICAgICAgIGNhbWxfZmFpbHdpdGgoXCJvdXRwdXRfdmFsdWU6IFtCeXRlcy50XSBjYW5ub3Qgc2FmZWx5IGJlIG1hcnNoYWxlZCB3aXRoIFstLWVuYWJsZSB1c2UtanMtc3RyaW5nXVwiKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAobWVtbyh2KSkgcmV0dXJuO1xuICAgICAgICB2YXIgbGVuID0gY2FtbF9tbF9ieXRlc19sZW5ndGgodik7XG4gICAgICAgIGlmIChsZW4gPCAweDIwKVxuICAgICAgICAgIHdyaXRlci53cml0ZSAoOCwgMHgyMCAvKmNzdC5QUkVGSVhfU01BTExfU1RSSU5HKi8gKyBsZW4pO1xuICAgICAgICBlbHNlIGlmIChsZW4gPCAweDEwMClcbiAgICAgICAgICB3cml0ZXIud3JpdGVfY29kZSAoOCwgMHgwOS8qY3N0LkNPREVfU1RSSU5HOCovLCBsZW4pO1xuICAgICAgICBlbHNlXG4gICAgICAgICAgd3JpdGVyLndyaXRlX2NvZGUgKDMyLCAweDBBIC8qY3N0LkNPREVfU1RSSU5HMzIqLywgbGVuKTtcbiAgICAgICAgZm9yICh2YXIgaSA9IDA7aSA8IGxlbjtpKyspXG4gICAgICAgICAgd3JpdGVyLndyaXRlICg4LCBjYW1sX2J5dGVzX3Vuc2FmZV9nZXQodixpKSk7XG4gICAgICAgIHdyaXRlci5zaXplXzMyICs9IDEgKyAoKChsZW4gKyA0KSAvIDQpfDApO1xuICAgICAgICB3cml0ZXIuc2l6ZV82NCArPSAxICsgKCgobGVuICsgOCkgLyA4KXwwKTtcbiAgICAgIH0gZWxzZSBpZiAoY2FtbF9pc19tbF9zdHJpbmcodikpIHtcbiAgICAgICAgaWYgKG1lbW8odikpIHJldHVybjtcbiAgICAgICAgdmFyIGxlbiA9IGNhbWxfbWxfc3RyaW5nX2xlbmd0aCh2KTtcbiAgICAgICAgaWYgKGxlbiA8IDB4MjApXG4gICAgICAgICAgd3JpdGVyLndyaXRlICg4LCAweDIwIC8qY3N0LlBSRUZJWF9TTUFMTF9TVFJJTkcqLyArIGxlbik7XG4gICAgICAgIGVsc2UgaWYgKGxlbiA8IDB4MTAwKVxuICAgICAgICAgIHdyaXRlci53cml0ZV9jb2RlICg4LCAweDA5Lypjc3QuQ09ERV9TVFJJTkc4Ki8sIGxlbik7XG4gICAgICAgIGVsc2VcbiAgICAgICAgICB3cml0ZXIud3JpdGVfY29kZSAoMzIsIDB4MEEgLypjc3QuQ09ERV9TVFJJTkczMiovLCBsZW4pO1xuICAgICAgICBmb3IgKHZhciBpID0gMDtpIDwgbGVuO2krKylcbiAgICAgICAgICB3cml0ZXIud3JpdGUgKDgsIGNhbWxfc3RyaW5nX3Vuc2FmZV9nZXQodixpKSk7XG4gICAgICAgIHdyaXRlci5zaXplXzMyICs9IDEgKyAoKChsZW4gKyA0KSAvIDQpfDApO1xuICAgICAgICB3cml0ZXIuc2l6ZV82NCArPSAxICsgKCgobGVuICsgOCkgLyA4KXwwKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGlmICh2ICE9ICh2fDApKXtcbiAgICAgICAgICB2YXIgdHlwZV9vZl92ID0gdHlwZW9mIHY7XG4gICAgICAgICAgLy9cbiAgICAgICAgICAvLyBJZiBhIGZsb2F0IGhhcHBlbnMgdG8gYmUgYW4gaW50ZWdlciBpdCBpcyBzZXJpYWxpemVkIGFzIGFuIGludGVnZXJcbiAgICAgICAgICAvLyAoSnNfb2Zfb2NhbWwgY2Fubm90IHRlbGwgd2hldGhlciB0aGUgdHlwZSBvZiBhbiBpbnRlZ2VyIG51bWJlciBpc1xuICAgICAgICAgIC8vIGZsb2F0IG9yIGludGVnZXIuKSBUaGlzIGNhbiByZXN1bHQgaW4gdW5leHBlY3RlZCBjcmFzaGVzIHdoZW5cbiAgICAgICAgICAvLyB1bm1hcnNoYWxsaW5nIHVzaW5nIHRoZSBzdGFuZGFyZCBydW50aW1lLiBJdCBzZWVtcyBiZXR0ZXIgdG9cbiAgICAgICAgICAvLyBzeXN0ZW1hdGljYWxseSBmYWlsIG9uIG1hcnNoYWxsaW5nLlxuICAgICAgICAgIC8vXG4gICAgICAgICAgLy8gICAgICAgICAgaWYodHlwZV9vZl92ICE9IFwibnVtYmVyXCIpXG4gICAgICAgICAgY2FtbF9mYWlsd2l0aChcIm91dHB1dF92YWx1ZTogYWJzdHJhY3QgdmFsdWUgKFwiK3R5cGVfb2ZfditcIilcIik7XG4gICAgICAgICAgLy8gICAgICAgICAgdmFyIHQgPSBjYW1sX2ludDY0X3RvX2J5dGVzKGNhbWxfaW50NjRfYml0c19vZl9mbG9hdCh2KSk7XG4gICAgICAgICAgLy8gICAgICAgICAgd3JpdGVyLndyaXRlICg4LCAweDBCIC8qY3N0LkNPREVfRE9VQkxFX0JJRyovKTtcbiAgICAgICAgICAvLyAgICAgICAgICBmb3IodmFyIGkgPSAwOyBpPDg7IGkrKyl7d3JpdGVyLndyaXRlKDgsdFtpXSl9XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAodiA+PSAwICYmIHYgPCAweDQwKSB7XG4gICAgICAgICAgd3JpdGVyLndyaXRlICg4LCAwWDQwIC8qY3N0LlBSRUZJWF9TTUFMTF9JTlQqLyArIHYpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGlmICh2ID49IC0oMSA8PCA3KSAmJiB2IDwgKDEgPDwgNykpXG4gICAgICAgICAgICB3cml0ZXIud3JpdGVfY29kZSg4LCAweDAwIC8qY3N0LkNPREVfSU5UOCovLCB2KTtcbiAgICAgICAgICBlbHNlIGlmICh2ID49IC0oMSA8PCAxNSkgJiYgdiA8ICgxIDw8IDE1KSlcbiAgICAgICAgICAgIHdyaXRlci53cml0ZV9jb2RlKDE2LCAweDAxIC8qY3N0LkNPREVfSU5UMTYqLywgdik7XG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgd3JpdGVyLndyaXRlX2NvZGUoMzIsIDB4MDIgLypjc3QuQ09ERV9JTlQzMiovLCB2KTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICBleHRlcm5fcmVjICh2KTtcbiAgICB3aGlsZSAoc3RhY2subGVuZ3RoID4gMCkge1xuICAgICAgdmFyIGkgPSBzdGFjay5wb3AgKCk7XG4gICAgICB2YXIgdiA9IHN0YWNrLnBvcCAoKTtcbiAgICAgIGlmIChpICsgMSA8IHYubGVuZ3RoKSBzdGFjay5wdXNoICh2LCBpICsgMSk7XG4gICAgICBleHRlcm5fcmVjICh2W2ldKTtcbiAgICB9XG4gICAgaWYgKGludGVybl9vYmpfdGFibGUpIHdyaXRlci5vYmpfY291bnRlciA9IGludGVybl9vYmpfdGFibGUub2Jqcy5sZW5ndGg7XG4gICAgd3JpdGVyLmZpbmFsaXplKCk7XG4gICAgcmV0dXJuIHdyaXRlci5jaHVuaztcbiAgfVxufSAoKTtcblxuLy9Qcm92aWRlczogY2FtbF9vdXRwdXRfdmFsdWVfdG9fc3RyaW5nIG11dGFibGVcbi8vUmVxdWlyZXM6IGNhbWxfb3V0cHV0X3ZhbCwgY2FtbF9zdHJpbmdfb2ZfYXJyYXlcbmZ1bmN0aW9uIGNhbWxfb3V0cHV0X3ZhbHVlX3RvX3N0cmluZyAodiwgZmxhZ3MpIHtcbiAgcmV0dXJuIGNhbWxfc3RyaW5nX29mX2FycmF5IChjYW1sX291dHB1dF92YWwgKHYsIGZsYWdzKSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfb3V0cHV0X3ZhbHVlX3RvX2J5dGVzIG11dGFibGVcbi8vUmVxdWlyZXM6IGNhbWxfb3V0cHV0X3ZhbCwgY2FtbF9ieXRlc19vZl9hcnJheVxuZnVuY3Rpb24gY2FtbF9vdXRwdXRfdmFsdWVfdG9fYnl0ZXMgKHYsIGZsYWdzKSB7XG4gIHJldHVybiBjYW1sX2J5dGVzX29mX2FycmF5IChjYW1sX291dHB1dF92YWwgKHYsIGZsYWdzKSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfb3V0cHV0X3ZhbHVlX3RvX2J1ZmZlclxuLy9SZXF1aXJlczogY2FtbF9vdXRwdXRfdmFsLCBjYW1sX2ZhaWx3aXRoLCBjYW1sX2JsaXRfYnl0ZXNcbmZ1bmN0aW9uIGNhbWxfb3V0cHV0X3ZhbHVlX3RvX2J1ZmZlciAocywgb2ZzLCBsZW4sIHYsIGZsYWdzKSB7XG4gIHZhciB0ID0gY2FtbF9vdXRwdXRfdmFsICh2LCBmbGFncyk7XG4gIGlmICh0Lmxlbmd0aCA+IGxlbikgY2FtbF9mYWlsd2l0aCAoXCJNYXJzaGFsLnRvX2J1ZmZlcjogYnVmZmVyIG92ZXJmbG93XCIpO1xuICBjYW1sX2JsaXRfYnl0ZXModCwgMCwgcywgb2ZzLCB0Lmxlbmd0aCk7XG4gIHJldHVybiAwO1xufVxuIiwiLy8gSnNfb2Zfb2NhbWwgcnVudGltZSBzdXBwb3J0XG4vLyBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL2pzX29mX29jYW1sL1xuLy8gQ29weXJpZ2h0IChDKSAyMDE0IErDqXLDtG1lIFZvdWlsbG9uLCBIdWdvIEhldXphcmRcbi8vIExhYm9yYXRvaXJlIFBQUyAtIENOUlMgVW5pdmVyc2l0w6kgUGFyaXMgRGlkZXJvdFxuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4vLyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbi8vIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4vLyBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4vLyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuLy8gTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuLy8gR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4vL1xuLy8gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4vLyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuLy8gRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cblxuLy8vLy8vLy8vLy8vLyBJb1xuXG4vL1Byb3ZpZGVzOiBjYW1sX3N5c19mZHNcbnZhciBjYW1sX3N5c19mZHMgPSBuZXcgQXJyYXkoMyk7XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3lzX2Nsb3NlXG4vL1JlcXVpcmVzOiBjYW1sX3N5c19mZHNcbmZ1bmN0aW9uIGNhbWxfc3lzX2Nsb3NlKGZkKSB7XG4gIHZhciBmaWxlID0gY2FtbF9zeXNfZmRzW2ZkXTtcbiAgaWYoZmlsZSkgZmlsZS5jbG9zZSgpO1xuICBkZWxldGUgY2FtbF9zeXNfZmRzW2ZkXTtcbiAgcmV0dXJuIDA7XG59XG5cblxuLy9Qcm92aWRlczogY2FtbF9zeXNfb3BlblxuLy9SZXF1aXJlczogY2FtbF9yYWlzZV9zeXNfZXJyb3Jcbi8vUmVxdWlyZXM6IE1sRmFrZUZkX291dFxuLy9SZXF1aXJlczogcmVzb2x2ZV9mc19kZXZpY2Vcbi8vUmVxdWlyZXM6IGNhbWxfanNieXRlc19vZl9zdHJpbmdcbi8vUmVxdWlyZXM6IGZzX25vZGVfc3VwcG9ydGVkXG4vL1JlcXVpcmVzOiBjYW1sX3N5c19mZHNcbi8vUmVxdWlyZXM6IGNhbWxfc3lzX29wZW5fZm9yX25vZGVcbmZ1bmN0aW9uIGNhbWxfc3lzX29wZW5faW50ZXJuYWwoZmlsZSxpZHgpIHtcbiAgaWYoaWR4ID09IHVuZGVmaW5lZCl7XG4gICAgaWR4ID0gY2FtbF9zeXNfZmRzLmxlbmd0aDtcbiAgfVxuICBjYW1sX3N5c19mZHNbaWR4XSA9IGZpbGU7XG4gIHJldHVybiBpZHggfCAwO1xufVxuZnVuY3Rpb24gY2FtbF9zeXNfb3BlbiAobmFtZSwgZmxhZ3MsIF9wZXJtcykge1xuICB2YXIgZiA9IHt9O1xuICB3aGlsZShmbGFncyl7XG4gICAgc3dpdGNoKGZsYWdzWzFdKXtcbiAgICBjYXNlIDA6IGYucmRvbmx5ID0gMTticmVhaztcbiAgICBjYXNlIDE6IGYud3Jvbmx5ID0gMTticmVhaztcbiAgICBjYXNlIDI6IGYuYXBwZW5kID0gMTticmVhaztcbiAgICBjYXNlIDM6IGYuY3JlYXRlID0gMTticmVhaztcbiAgICBjYXNlIDQ6IGYudHJ1bmNhdGUgPSAxO2JyZWFrO1xuICAgIGNhc2UgNTogZi5leGNsID0gMTsgYnJlYWs7XG4gICAgY2FzZSA2OiBmLmJpbmFyeSA9IDE7YnJlYWs7XG4gICAgY2FzZSA3OiBmLnRleHQgPSAxO2JyZWFrO1xuICAgIGNhc2UgODogZi5ub25ibG9jayA9IDE7YnJlYWs7XG4gICAgfVxuICAgIGZsYWdzPWZsYWdzWzJdO1xuICB9XG4gIGlmKGYucmRvbmx5ICYmIGYud3Jvbmx5KVxuICAgIGNhbWxfcmFpc2Vfc3lzX2Vycm9yKGNhbWxfanNieXRlc19vZl9zdHJpbmcobmFtZSkgKyBcIiA6IGZsYWdzIE9wZW5fcmRvbmx5IGFuZCBPcGVuX3dyb25seSBhcmUgbm90IGNvbXBhdGlibGVcIik7XG4gIGlmKGYudGV4dCAmJiBmLmJpbmFyeSlcbiAgICBjYW1sX3JhaXNlX3N5c19lcnJvcihjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nKG5hbWUpICsgXCIgOiBmbGFncyBPcGVuX3RleHQgYW5kIE9wZW5fYmluYXJ5IGFyZSBub3QgY29tcGF0aWJsZVwiKTtcbiAgdmFyIHJvb3QgPSByZXNvbHZlX2ZzX2RldmljZShuYW1lKTtcbiAgdmFyIGZpbGUgPSByb290LmRldmljZS5vcGVuKHJvb3QucmVzdCxmKTtcbiAgcmV0dXJuIGNhbWxfc3lzX29wZW5faW50ZXJuYWwgKGZpbGUsIHVuZGVmaW5lZCk7XG59XG4oZnVuY3Rpb24gKCkge1xuICBmdW5jdGlvbiBmaWxlKGZkLCBmbGFncykge1xuICAgIGlmKGZzX25vZGVfc3VwcG9ydGVkKCkpIHtcbiAgICAgIHJldHVybiBjYW1sX3N5c19vcGVuX2Zvcl9ub2RlKGZkLCBmbGFncyk7XG4gICAgfVxuICAgIGVsc2VcbiAgICAgIHJldHVybiBuZXcgTWxGYWtlRmRfb3V0KGZkLCBmbGFncylcbiAgfVxuICBjYW1sX3N5c19vcGVuX2ludGVybmFsKGZpbGUoMCx7cmRvbmx5OjEsYWx0bmFtZTpcIi9kZXYvc3RkaW5cIixpc0NoYXJhY3RlckRldmljZTp0cnVlfSksIDApO1xuICBjYW1sX3N5c19vcGVuX2ludGVybmFsKGZpbGUoMSx7YnVmZmVyZWQ6Mix3cm9ubHk6MSxpc0NoYXJhY3RlckRldmljZTp0cnVlfSksIDEpO1xuICBjYW1sX3N5c19vcGVuX2ludGVybmFsKGZpbGUoMix7YnVmZmVyZWQ6Mix3cm9ubHk6MSxpc0NoYXJhY3RlckRldmljZTp0cnVlfSksIDIpO1xufSkoKVxuXG5cbi8vIG9jYW1sIENoYW5uZWxzXG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfc2V0X2NoYW5uZWxfbmFtZVxuLy9SZXF1aXJlczogY2FtbF9tbF9jaGFubmVsc1xuZnVuY3Rpb24gY2FtbF9tbF9zZXRfY2hhbm5lbF9uYW1lKGNoYW5pZCwgbmFtZSkge1xuICB2YXIgY2hhbiA9IGNhbWxfbWxfY2hhbm5lbHNbY2hhbmlkXTtcbiAgY2hhbi5uYW1lID0gbmFtZTtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfY2hhbm5lbHNcbnZhciBjYW1sX21sX2NoYW5uZWxzID0gbmV3IEFycmF5KCk7XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfb3V0X2NoYW5uZWxzX2xpc3Rcbi8vUmVxdWlyZXM6IGNhbWxfbWxfY2hhbm5lbHNcbmZ1bmN0aW9uIGNhbWxfbWxfb3V0X2NoYW5uZWxzX2xpc3QgKCkge1xuICB2YXIgbCA9IDA7XG4gIGZvcih2YXIgYyA9IDA7IGMgPCBjYW1sX21sX2NoYW5uZWxzLmxlbmd0aDsgYysrKXtcbiAgICBpZihjYW1sX21sX2NoYW5uZWxzW2NdICYmIGNhbWxfbWxfY2hhbm5lbHNbY10ub3BlbmVkICYmIGNhbWxfbWxfY2hhbm5lbHNbY10ub3V0KVxuICAgICAgbD1bMCxjYW1sX21sX2NoYW5uZWxzW2NdLmZkLGxdO1xuICB9XG4gIHJldHVybiBsO1xufVxuXG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfb3Blbl9kZXNjcmlwdG9yX291dFxuLy9SZXF1aXJlczogY2FtbF9tbF9jaGFubmVscywgY2FtbF9zeXNfZmRzXG4vL1JlcXVpcmVzOiBjYW1sX3JhaXNlX3N5c19lcnJvclxuLy9SZXF1aXJlczogY2FtbF9zeXNfb3BlblxuZnVuY3Rpb24gY2FtbF9tbF9vcGVuX2Rlc2NyaXB0b3Jfb3V0IChmZCkge1xuICB2YXIgZmlsZSA9IGNhbWxfc3lzX2Zkc1tmZF07XG4gIGlmKGZpbGUuZmxhZ3MucmRvbmx5KSBjYW1sX3JhaXNlX3N5c19lcnJvcihcImZkIFwiKyBmZCArIFwiIGlzIHJlYWRvbmx5XCIpO1xuICB2YXIgYnVmZmVyZWQgPSAoZmlsZS5mbGFncy5idWZmZXJlZCAhPT0gdW5kZWZpbmVkKSA/IGZpbGUuZmxhZ3MuYnVmZmVyZWQgOiAxO1xuICB2YXIgY2hhbm5lbCA9IHtcbiAgICBmaWxlOmZpbGUsXG4gICAgb2Zmc2V0OmZpbGUuZmxhZ3MuYXBwZW5kP2ZpbGUubGVuZ3RoKCk6MCxcbiAgICBmZDpmZCxcbiAgICBvcGVuZWQ6dHJ1ZSxcbiAgICBvdXQ6dHJ1ZSxcbiAgICBidWZmZXJfY3VycjowLFxuICAgIGJ1ZmZlcjpuZXcgVWludDhBcnJheSg2NTUzNiksXG4gICAgYnVmZmVyZWQ6YnVmZmVyZWRcbiAgfTtcbiAgY2FtbF9tbF9jaGFubmVsc1tjaGFubmVsLmZkXT1jaGFubmVsO1xuICByZXR1cm4gY2hhbm5lbC5mZDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tbF9vcGVuX2Rlc2NyaXB0b3JfaW5cbi8vUmVxdWlyZXM6IGNhbWxfbWxfY2hhbm5lbHMsIGNhbWxfc3lzX2Zkc1xuLy9SZXF1aXJlczogY2FtbF9yYWlzZV9zeXNfZXJyb3Jcbi8vUmVxdWlyZXM6IGNhbWxfc3lzX29wZW5cbmZ1bmN0aW9uIGNhbWxfbWxfb3Blbl9kZXNjcmlwdG9yX2luIChmZCkgIHtcbiAgdmFyIGZpbGUgPSBjYW1sX3N5c19mZHNbZmRdO1xuICBpZihmaWxlLmZsYWdzLndyb25seSkgY2FtbF9yYWlzZV9zeXNfZXJyb3IoXCJmZCBcIisgZmQgKyBcIiBpcyB3cml0ZW9ubHlcIik7XG4gIHZhciByZWZpbGwgPSBudWxsO1xuICB2YXIgY2hhbm5lbCA9IHtcbiAgICBmaWxlOmZpbGUsXG4gICAgb2Zmc2V0OmZpbGUuZmxhZ3MuYXBwZW5kP2ZpbGUubGVuZ3RoKCk6MCxcbiAgICBmZDpmZCxcbiAgICBvcGVuZWQ6dHJ1ZSxcbiAgICBvdXQ6IGZhbHNlLFxuICAgIGJ1ZmZlcl9jdXJyOjAsXG4gICAgYnVmZmVyX21heDowLFxuICAgIGJ1ZmZlcjpuZXcgVWludDhBcnJheSg2NTUzNiksXG4gICAgcmVmaWxsOnJlZmlsbFxuICB9O1xuICBjYW1sX21sX2NoYW5uZWxzW2NoYW5uZWwuZmRdPWNoYW5uZWw7XG4gIHJldHVybiBjaGFubmVsLmZkO1xufVxuXG5cbi8vUHJvdmlkZXM6IGNhbWxfY2hhbm5lbF9kZXNjcmlwdG9yXG4vL1JlcXVpcmVzOiBjYW1sX21sX2NoYW5uZWxzXG4vL0FsaWFzOiB3aW5fZmlsZWRlc2NyX29mX2NoYW5uZWxcbmZ1bmN0aW9uIGNhbWxfY2hhbm5lbF9kZXNjcmlwdG9yKGNoYW5pZCl7XG4gIHZhciBjaGFuID0gY2FtbF9tbF9jaGFubmVsc1tjaGFuaWRdO1xuICByZXR1cm4gY2hhbi5mZDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tbF9zZXRfYmluYXJ5X21vZGVcbi8vUmVxdWlyZXM6IGNhbWxfbWxfY2hhbm5lbHNcbmZ1bmN0aW9uIGNhbWxfbWxfc2V0X2JpbmFyeV9tb2RlKGNoYW5pZCxtb2RlKXtcbiAgdmFyIGNoYW4gPSBjYW1sX21sX2NoYW5uZWxzW2NoYW5pZF07XG4gIGNoYW4uZmlsZS5mbGFncy50ZXh0ID0gIW1vZGVcbiAgY2hhbi5maWxlLmZsYWdzLmJpbmFyeSA9IG1vZGVcbiAgcmV0dXJuIDA7XG59XG5cbi8vSW5wdXQgZnJvbSBpbl9jaGFubmVsXG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfY2xvc2VfY2hhbm5lbFxuLy9SZXF1aXJlczogY2FtbF9tbF9mbHVzaCwgY2FtbF9tbF9jaGFubmVsc1xuLy9SZXF1aXJlczogY2FtbF9zeXNfY2xvc2VcbmZ1bmN0aW9uIGNhbWxfbWxfY2xvc2VfY2hhbm5lbCAoY2hhbmlkKSB7XG4gIHZhciBjaGFuID0gY2FtbF9tbF9jaGFubmVsc1tjaGFuaWRdO1xuICBjaGFuLm9wZW5lZCA9IGZhbHNlO1xuICBjYW1sX3N5c19jbG9zZShjaGFuLmZkKVxuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tbF9jaGFubmVsX3NpemVcbi8vUmVxdWlyZXM6IGNhbWxfbWxfY2hhbm5lbHNcbmZ1bmN0aW9uIGNhbWxfbWxfY2hhbm5lbF9zaXplKGNoYW5pZCkge1xuICB2YXIgY2hhbiA9IGNhbWxfbWxfY2hhbm5lbHNbY2hhbmlkXTtcbiAgcmV0dXJuIGNoYW4uZmlsZS5sZW5ndGgoKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tbF9jaGFubmVsX3NpemVfNjRcbi8vUmVxdWlyZXM6IGNhbWxfaW50NjRfb2ZfZmxvYXQsY2FtbF9tbF9jaGFubmVsc1xuZnVuY3Rpb24gY2FtbF9tbF9jaGFubmVsX3NpemVfNjQoY2hhbmlkKSB7XG4gIHZhciBjaGFuID0gY2FtbF9tbF9jaGFubmVsc1tjaGFuaWRdO1xuICByZXR1cm4gY2FtbF9pbnQ2NF9vZl9mbG9hdChjaGFuLmZpbGUubGVuZ3RoICgpKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tbF9zZXRfY2hhbm5lbF9vdXRwdXRcbi8vUmVxdWlyZXM6IGNhbWxfbWxfY2hhbm5lbHNcbmZ1bmN0aW9uIGNhbWxfbWxfc2V0X2NoYW5uZWxfb3V0cHV0KGNoYW5pZCxmKSB7XG4gIHZhciBjaGFuID0gY2FtbF9tbF9jaGFubmVsc1tjaGFuaWRdO1xuICBjaGFuLm91dHB1dCA9IChmdW5jdGlvbiAocykge2Yocyl9KTtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfc2V0X2NoYW5uZWxfcmVmaWxsXG4vL1JlcXVpcmVzOiBjYW1sX21sX2NoYW5uZWxzXG5mdW5jdGlvbiBjYW1sX21sX3NldF9jaGFubmVsX3JlZmlsbChjaGFuaWQsZikge1xuICBjYW1sX21sX2NoYW5uZWxzW2NoYW5pZF0ucmVmaWxsID0gZjtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfcmVmaWxsXG4vL1JlcXVpcmVzOiBjYW1sX21sX3N0cmluZ19sZW5ndGgsIGNhbWxfdWludDhfYXJyYXlfb2Zfc3RyaW5nXG5mdW5jdGlvbiBjYW1sX3JlZmlsbCAoY2hhbikge1xuICBpZihjaGFuLnJlZmlsbCAhPSBudWxsKXtcbiAgICB2YXIgc3RyID0gY2hhbi5yZWZpbGwoKTtcbiAgICB2YXIgc3RyX2EgPSBjYW1sX3VpbnQ4X2FycmF5X29mX3N0cmluZyhzdHIpO1xuICAgIGlmIChzdHJfYS5sZW5ndGggPT0gMCkge1xuICAgICAgY2hhbi5yZWZpbGwgPSBudWxsXG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgaWYoY2hhbi5idWZmZXIubGVuZ3RoIDwgY2hhbi5idWZmZXJfbWF4ICsgc3RyX2EubGVuZ3RoKXtcbiAgICAgICAgdmFyIGIgPSBuZXcgVWludDhBcnJheShjaGFuLmJ1ZmZlcl9tYXggKyBzdHJfYS5sZW5ndGgpO1xuICAgICAgICBiLnNldChjaGFuLmJ1ZmZlcik7XG4gICAgICAgIGNoYW4uYnVmZmVyID0gYjtcbiAgICAgIH1cbiAgICAgIGNoYW4uYnVmZmVyLnNldChzdHJfYSxjaGFuLmJ1ZmZlcl9tYXgpO1xuICAgICAgY2hhbi5vZmZzZXQgKz0gc3RyX2EubGVuZ3RoO1xuICAgICAgY2hhbi5idWZmZXJfbWF4ICs9IHN0cl9hLmxlbmd0aDtcbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgdmFyIG5yZWFkID0gY2hhbi5maWxlLnJlYWQoY2hhbi5vZmZzZXQsIGNoYW4uYnVmZmVyLCBjaGFuLmJ1ZmZlcl9tYXgsIGNoYW4uYnVmZmVyLmxlbmd0aCAtIGNoYW4uYnVmZmVyX21heCk7XG4gICAgY2hhbi5vZmZzZXQgKz0gbnJlYWQ7XG4gICAgY2hhbi5idWZmZXJfbWF4ICs9IG5yZWFkO1xuICB9XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfaW5wdXRcbi8vUmVxdWlyZXM6IGNhbWxfbWxfaW5wdXRfYmxvY2tcbi8vUmVxdWlyZXM6IGNhbWxfdWludDhfYXJyYXlfb2ZfYnl0ZXNcbmZ1bmN0aW9uIGNhbWxfbWxfaW5wdXQgKGNoYW5pZCwgYiwgaSwgbCkge1xuICB2YXIgYmEgPSBjYW1sX3VpbnQ4X2FycmF5X29mX2J5dGVzKGIpO1xuICByZXR1cm4gY2FtbF9tbF9pbnB1dF9ibG9jayhjaGFuaWQsIGJhLCBpLCBsKVxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX2lucHV0X2Jsb2NrXG4vL1JlcXVpcmVzOiBjYW1sX3JlZmlsbCwgY2FtbF9tbF9jaGFubmVsc1xuZnVuY3Rpb24gY2FtbF9tbF9pbnB1dF9ibG9jayAoY2hhbmlkLCBiYSwgaSwgbCkge1xuICB2YXIgY2hhbiA9IGNhbWxfbWxfY2hhbm5lbHNbY2hhbmlkXTtcbiAgdmFyIG4gPSBsO1xuICB2YXIgYXZhaWwgPSBjaGFuLmJ1ZmZlcl9tYXggLSBjaGFuLmJ1ZmZlcl9jdXJyO1xuICBpZihsIDw9IGF2YWlsKSB7XG4gICAgYmEuc2V0KGNoYW4uYnVmZmVyLnN1YmFycmF5KGNoYW4uYnVmZmVyX2N1cnIsY2hhbi5idWZmZXJfY3VyciArIGwpLCBpKTtcbiAgICBjaGFuLmJ1ZmZlcl9jdXJyICs9IGw7XG4gIH1cbiAgZWxzZSBpZihhdmFpbCA+IDApIHtcbiAgICBiYS5zZXQoY2hhbi5idWZmZXIuc3ViYXJyYXkoY2hhbi5idWZmZXJfY3VycixjaGFuLmJ1ZmZlcl9jdXJyICsgYXZhaWwpLCBpKTtcbiAgICBjaGFuLmJ1ZmZlcl9jdXJyICs9IGF2YWlsO1xuICAgIG4gPSBhdmFpbDtcbiAgfSBlbHNlIHtcbiAgICBjaGFuLmJ1ZmZlcl9jdXJyID0gMDtcbiAgICBjaGFuLmJ1ZmZlcl9tYXggPSAwO1xuICAgIGNhbWxfcmVmaWxsKGNoYW4pO1xuICAgIHZhciBhdmFpbCA9IGNoYW4uYnVmZmVyX21heCAtIGNoYW4uYnVmZmVyX2N1cnI7XG4gICAgaWYobiA+IGF2YWlsKSBuID0gYXZhaWw7XG4gICAgYmEuc2V0KGNoYW4uYnVmZmVyLnN1YmFycmF5KGNoYW4uYnVmZmVyX2N1cnIsY2hhbi5idWZmZXJfY3VyciArIG4pLCBpKTtcbiAgICBjaGFuLmJ1ZmZlcl9jdXJyICs9IG47XG4gIH1cbiAgcmV0dXJuIG4gfCAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2lucHV0X3ZhbHVlXG4vL1JlcXVpcmVzOiBjYW1sX21hcnNoYWxfZGF0YV9zaXplLCBjYW1sX2lucHV0X3ZhbHVlX2Zyb21fYnl0ZXMsIGNhbWxfY3JlYXRlX2J5dGVzLCBjYW1sX21sX2NoYW5uZWxzLCBjYW1sX2J5dGVzX29mX2FycmF5XG4vL1JlcXVpcmVzOiBjYW1sX3JlZmlsbCwgY2FtbF9mYWlsd2l0aCwgY2FtbF9yYWlzZV9lbmRfb2ZfZmlsZVxuLy9SZXF1aXJlczogY2FtbF9tYXJzaGFsX2hlYWRlcl9zaXplXG5mdW5jdGlvbiBjYW1sX2lucHV0X3ZhbHVlIChjaGFuaWQpIHtcbiAgdmFyIGNoYW4gPSBjYW1sX21sX2NoYW5uZWxzW2NoYW5pZF07XG4gIHZhciBoZWFkZXIgPSBuZXcgVWludDhBcnJheShjYW1sX21hcnNoYWxfaGVhZGVyX3NpemUpO1xuICBmdW5jdGlvbiBibG9jayhidWZmZXIsIG9mZnNldCwgbikge1xuICAgIHZhciByID0gMDtcbiAgICB3aGlsZShyIDwgbil7XG4gICAgICBpZihjaGFuLmJ1ZmZlcl9jdXJyID49IGNoYW4uYnVmZmVyX21heCl7XG4gICAgICAgIGNoYW4uYnVmZmVyX2N1cnIgPSAwO1xuICAgICAgICBjaGFuLmJ1ZmZlcl9tYXggPSAwO1xuICAgICAgICBjYW1sX3JlZmlsbChjaGFuKTtcbiAgICAgIH1cbiAgICAgIGlmIChjaGFuLmJ1ZmZlcl9jdXJyID49IGNoYW4uYnVmZmVyX21heClcbiAgICAgICAgYnJlYWs7XG4gICAgICBidWZmZXJbb2Zmc2V0K3JdID0gY2hhbi5idWZmZXJbY2hhbi5idWZmZXJfY3Vycl07XG4gICAgICBjaGFuLmJ1ZmZlcl9jdXJyKys7XG4gICAgICByKys7XG4gICAgfVxuICAgIHJldHVybiByO1xuICB9XG4gIHZhciByID0gYmxvY2soaGVhZGVyLCAwLCBjYW1sX21hcnNoYWxfaGVhZGVyX3NpemUpO1xuICBpZihyID09IDApXG4gICAgY2FtbF9yYWlzZV9lbmRfb2ZfZmlsZSgpO1xuICBlbHNlIGlmIChyIDwgY2FtbF9tYXJzaGFsX2hlYWRlcl9zaXplKVxuICAgIGNhbWxfZmFpbHdpdGgoXCJpbnB1dF92YWx1ZTogdHJ1bmNhdGVkIG9iamVjdFwiKTtcbiAgdmFyIGxlbiA9IGNhbWxfbWFyc2hhbF9kYXRhX3NpemUgKGNhbWxfYnl0ZXNfb2ZfYXJyYXkoaGVhZGVyKSwgMCk7XG4gIHZhciBidWYgPSBuZXcgVWludDhBcnJheShsZW4gKyBjYW1sX21hcnNoYWxfaGVhZGVyX3NpemUpO1xuICBidWYuc2V0KGhlYWRlciwwKTtcbiAgdmFyIHIgPSBibG9jayhidWYsIGNhbWxfbWFyc2hhbF9oZWFkZXJfc2l6ZSwgbGVuKVxuICBpZihyIDwgbGVuKVxuICAgIGNhbWxfZmFpbHdpdGgoXCJpbnB1dF92YWx1ZTogdHJ1bmNhdGVkIG9iamVjdCBcIiArIHIgKyBcIiAgXCIgKyBsZW4pO1xuICB2YXIgb2Zmc2V0ID0gWzBdO1xuICB2YXIgcmVzID0gY2FtbF9pbnB1dF92YWx1ZV9mcm9tX2J5dGVzKGNhbWxfYnl0ZXNfb2ZfYXJyYXkoYnVmKSwgb2Zmc2V0KTtcbiAgY2hhbi5vZmZzZXQgPSBjaGFuLm9mZnNldCArIG9mZnNldFswXTtcbiAgcmV0dXJuIHJlcztcbn1cblxuLy9Qcm92aWRlczogY2FtbF9pbnB1dF92YWx1ZV90b19vdXRzaWRlX2hlYXBcbi8vUmVxdWlyZXM6IGNhbWxfaW5wdXRfdmFsdWVcbmZ1bmN0aW9uIGNhbWxfaW5wdXRfdmFsdWVfdG9fb3V0c2lkZV9oZWFwKGMpIHtcbiAgcmV0dXJuIGNhbWxfaW5wdXRfdmFsdWUoYyk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfaW5wdXRfY2hhclxuLy9SZXF1aXJlczogY2FtbF9yYWlzZV9lbmRfb2ZfZmlsZSwgY2FtbF9hcnJheV9ib3VuZF9lcnJvclxuLy9SZXF1aXJlczogY2FtbF9tbF9jaGFubmVscywgY2FtbF9yZWZpbGxcbmZ1bmN0aW9uIGNhbWxfbWxfaW5wdXRfY2hhciAoY2hhbmlkKSB7XG4gIHZhciBjaGFuID0gY2FtbF9tbF9jaGFubmVsc1tjaGFuaWRdO1xuICBpZihjaGFuLmJ1ZmZlcl9jdXJyID49IGNoYW4uYnVmZmVyX21heCl7XG4gICAgY2hhbi5idWZmZXJfY3VyciA9IDA7XG4gICAgY2hhbi5idWZmZXJfbWF4ID0gMDtcbiAgICBjYW1sX3JlZmlsbChjaGFuKTtcbiAgfVxuICBpZiAoY2hhbi5idWZmZXJfY3VyciA+PSBjaGFuLmJ1ZmZlcl9tYXgpXG4gICAgY2FtbF9yYWlzZV9lbmRfb2ZfZmlsZSgpO1xuICB2YXIgcmVzID0gY2hhbi5idWZmZXJbY2hhbi5idWZmZXJfY3Vycl07XG4gIGNoYW4uYnVmZmVyX2N1cnIrKztcbiAgcmV0dXJuIHJlcztcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tbF9pbnB1dF9pbnRcbi8vUmVxdWlyZXM6IGNhbWxfcmFpc2VfZW5kX29mX2ZpbGVcbi8vUmVxdWlyZXM6IGNhbWxfbWxfaW5wdXRfY2hhciwgY2FtbF9tbF9jaGFubmVsc1xuZnVuY3Rpb24gY2FtbF9tbF9pbnB1dF9pbnQgKGNoYW5pZCkge1xuICB2YXIgY2hhbiA9IGNhbWxfbWxfY2hhbm5lbHNbY2hhbmlkXTtcbiAgdmFyIHJlcyA9IDA7XG4gIGZvcih2YXIgaSA9IDA7IGkgPCA0OyBpKyspe1xuICAgIHJlcyA9IChyZXMgPDwgOCkgKyBjYW1sX21sX2lucHV0X2NoYXIoY2hhbmlkKSB8IDA7XG4gIH1cbiAgcmV0dXJuIHJlcyB8IDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc2Vla19pblxuLy9SZXF1aXJlczogY2FtbF9yYWlzZV9zeXNfZXJyb3IsIGNhbWxfbWxfY2hhbm5lbHNcbmZ1bmN0aW9uIGNhbWxfc2Vla19pbihjaGFuaWQsIHBvcykge1xuICB2YXIgY2hhbiA9IGNhbWxfbWxfY2hhbm5lbHNbY2hhbmlkXTtcbiAgaWYgKGNoYW4ucmVmaWxsICE9IG51bGwpIGNhbWxfcmFpc2Vfc3lzX2Vycm9yKFwiSWxsZWdhbCBzZWVrXCIpO1xuICBpZihwb3MgPj0gY2hhbi5vZmZzZXQgLSBjaGFuLmJ1ZmZlcl9tYXhcbiAgICAgJiYgcG9zIDw9IGNoYW4ub2Zmc2V0XG4gICAgICYmIGNoYW4uZmlsZS5mbGFncy5iaW5hcnkpIHtcbiAgICBjaGFuLmJ1ZmZlcl9jdXJyID0gY2hhbi5idWZmZXJfbWF4IC0gKGNoYW4ub2Zmc2V0IC0gcG9zKTtcbiAgfSBlbHNlIHtcbiAgICBjaGFuLm9mZnNldCA9IHBvcztcbiAgICBjaGFuLmJ1ZmZlcl9jdXJyID0gMDtcbiAgICBjaGFuLmJ1ZmZlcl9tYXggPSAwO1xuICB9XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX3NlZWtfaW5cbi8vUmVxdWlyZXM6IGNhbWxfc2Vla19pblxuZnVuY3Rpb24gY2FtbF9tbF9zZWVrX2luKGNoYW5pZCxwb3Mpe1xuICByZXR1cm4gY2FtbF9zZWVrX2luKGNoYW5pZCxwb3MpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX3NlZWtfaW5fNjRcbi8vUmVxdWlyZXM6IGNhbWxfaW50NjRfdG9fZmxvYXQsIGNhbWxfc2Vla19pblxuZnVuY3Rpb24gY2FtbF9tbF9zZWVrX2luXzY0KGNoYW5pZCxwb3Mpe1xuICB2YXIgcG9zID0gY2FtbF9pbnQ2NF90b19mbG9hdChwb3MpO1xuICByZXR1cm4gY2FtbF9zZWVrX2luKGNoYW5pZCwgcG9zKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9wb3NfaW5cbi8vUmVxdWlyZXM6IGNhbWxfbWxfY2hhbm5lbHNcbmZ1bmN0aW9uIGNhbWxfcG9zX2luKGNoYW5pZCkge1xuICB2YXIgY2hhbiA9IGNhbWxfbWxfY2hhbm5lbHNbY2hhbmlkXTtcbiAgcmV0dXJuIGNoYW4ub2Zmc2V0IC0gKGNoYW4uYnVmZmVyX21heCAtIGNoYW4uYnVmZmVyX2N1cnIpIHwgMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tbF9wb3NfaW5cbi8vUmVxdWlyZXM6IGNhbWxfcG9zX2luXG5mdW5jdGlvbiBjYW1sX21sX3Bvc19pbihjaGFuaWQpIHtcbiAgcmV0dXJuIGNhbWxfcG9zX2luKGNoYW5pZCk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfcG9zX2luXzY0XG4vL1JlcXVpcmVzOiBjYW1sX2ludDY0X29mX2Zsb2F0LCBjYW1sX3Bvc19pblxuZnVuY3Rpb24gY2FtbF9tbF9wb3NfaW5fNjQoY2hhbmlkKSB7XG4gIHJldHVybiBjYW1sX2ludDY0X29mX2Zsb2F0KGNhbWxfcG9zX2luKGNoYW5pZCkpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX2lucHV0X3NjYW5fbGluZVxuLy9SZXF1aXJlczogY2FtbF9hcnJheV9ib3VuZF9lcnJvclxuLy9SZXF1aXJlczogY2FtbF9tbF9jaGFubmVscywgY2FtbF9yZWZpbGxcbmZ1bmN0aW9uIGNhbWxfbWxfaW5wdXRfc2Nhbl9saW5lKGNoYW5pZCl7XG4gIHZhciBjaGFuID0gY2FtbF9tbF9jaGFubmVsc1tjaGFuaWRdO1xuICB2YXIgcCA9IGNoYW4uYnVmZmVyX2N1cnI7XG4gIGRvIHtcbiAgICBpZihwID49IGNoYW4uYnVmZmVyX21heCkge1xuICAgICAgaWYoY2hhbi5idWZmZXJfY3VyciA+IDApIHtcbiAgICAgICAgY2hhbi5idWZmZXIuc2V0KGNoYW4uYnVmZmVyLnN1YmFycmF5KGNoYW4uYnVmZmVyX2N1cnIpLDApO1xuICAgICAgICBwIC09IGNoYW4uYnVmZmVyX2N1cnI7XG4gICAgICAgIGNoYW4uYnVmZmVyX21heCAtPSBjaGFuLmJ1ZmZlcl9jdXJyO1xuICAgICAgICBjaGFuLmJ1ZmZlcl9jdXJyID0gMDtcbiAgICAgIH1cbiAgICAgIGlmKGNoYW4uYnVmZmVyX21heCA+PSBjaGFuLmJ1ZmZlci5sZW5ndGgpIHtcbiAgICAgICAgcmV0dXJuIC0oY2hhbi5idWZmZXJfbWF4KSB8IDA7XG4gICAgICB9XG4gICAgICB2YXIgcHJldl9tYXggPSBjaGFuLmJ1ZmZlcl9tYXg7XG4gICAgICBjYW1sX3JlZmlsbCAoY2hhbik7XG4gICAgICBpZihwcmV2X21heCA9PSBjaGFuLmJ1ZmZlcl9tYXgpIHtcbiAgICAgICAgcmV0dXJuIC0oY2hhbi5idWZmZXJfbWF4KSB8IDA7XG4gICAgICB9XG4gICAgfVxuICB9IHdoaWxlIChjaGFuLmJ1ZmZlcltwKytdICE9IDEwKTtcbiAgcmV0dXJuIChwIC0gY2hhbi5idWZmZXJfY3VycikgfCAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX2ZsdXNoXG4vL1JlcXVpcmVzOiBjYW1sX3JhaXNlX3N5c19lcnJvciwgY2FtbF9tbF9jaGFubmVsc1xuLy9SZXF1aXJlczogY2FtbF9zdWJhcnJheV90b19qc2J5dGVzXG5mdW5jdGlvbiBjYW1sX21sX2ZsdXNoIChjaGFuaWQpIHtcbiAgdmFyIGNoYW4gPSBjYW1sX21sX2NoYW5uZWxzW2NoYW5pZF07XG4gIGlmKCEgY2hhbi5vcGVuZWQpIGNhbWxfcmFpc2Vfc3lzX2Vycm9yKFwiQ2Fubm90IGZsdXNoIGEgY2xvc2VkIGNoYW5uZWxcIik7XG4gIGlmKCFjaGFuLmJ1ZmZlciB8fCBjaGFuLmJ1ZmZlcl9jdXJyID09IDApIHJldHVybiAwO1xuICBpZihjaGFuLm91dHB1dCkge1xuICAgIGNoYW4ub3V0cHV0KGNhbWxfc3ViYXJyYXlfdG9fanNieXRlcyhjaGFuLmJ1ZmZlciwgMCwgY2hhbi5idWZmZXJfY3VycikpO1xuICB9IGVsc2Uge1xuICAgIGNoYW4uZmlsZS53cml0ZShjaGFuLm9mZnNldCwgY2hhbi5idWZmZXIsIDAsIGNoYW4uYnVmZmVyX2N1cnIpO1xuICB9XG4gIGNoYW4ub2Zmc2V0ICs9IGNoYW4uYnVmZmVyX2N1cnI7XG4gIGNoYW4uYnVmZmVyX2N1cnIgPSAwO1xuICByZXR1cm4gMDtcbn1cblxuLy9vdXRwdXQgdG8gb3V0X2NoYW5uZWxcblxuLy9Qcm92aWRlczogY2FtbF9tbF9vdXRwdXRfYnl0ZXNcbi8vUmVxdWlyZXM6IGNhbWxfbWxfZmx1c2gsY2FtbF9tbF9ieXRlc19sZW5ndGhcbi8vUmVxdWlyZXM6IGNhbWxfY3JlYXRlX2J5dGVzLCBjYW1sX2JsaXRfYnl0ZXMsIGNhbWxfcmFpc2Vfc3lzX2Vycm9yLCBjYW1sX21sX2NoYW5uZWxzLCBjYW1sX3N0cmluZ19vZl9ieXRlc1xuLy9SZXF1aXJlczogY2FtbF91aW50OF9hcnJheV9vZl9ieXRlc1xuZnVuY3Rpb24gY2FtbF9tbF9vdXRwdXRfYnl0ZXMoY2hhbmlkLGJ1ZmZlcixvZmZzZXQsbGVuKSB7XG4gIHZhciBjaGFuID0gY2FtbF9tbF9jaGFubmVsc1tjaGFuaWRdO1xuICBpZighIGNoYW4ub3BlbmVkKSBjYW1sX3JhaXNlX3N5c19lcnJvcihcIkNhbm5vdCBvdXRwdXQgdG8gYSBjbG9zZWQgY2hhbm5lbFwiKTtcbiAgdmFyIGJ1ZmZlciA9IGNhbWxfdWludDhfYXJyYXlfb2ZfYnl0ZXMoYnVmZmVyKTtcbiAgYnVmZmVyID0gYnVmZmVyLnN1YmFycmF5KG9mZnNldCwgb2Zmc2V0ICsgbGVuKTtcbiAgaWYoY2hhbi5idWZmZXJfY3VyciArIGJ1ZmZlci5sZW5ndGggPiBjaGFuLmJ1ZmZlci5sZW5ndGgpIHtcbiAgICB2YXIgYiA9IG5ldyBVaW50OEFycmF5KGNoYW4uYnVmZmVyX2N1cnIgKyBidWZmZXIubGVuZ3RoKTtcbiAgICBiLnNldChjaGFuLmJ1ZmZlcik7XG4gICAgY2hhbi5idWZmZXIgPSBiXG4gIH1cbiAgc3dpdGNoKGNoYW4uYnVmZmVyZWQpe1xuICBjYXNlIDA6IC8vIFVuYnVmZmVyZWRcbiAgICBjaGFuLmJ1ZmZlci5zZXQoYnVmZmVyLCBjaGFuLmJ1ZmZlcl9jdXJyKTtcbiAgICBjaGFuLmJ1ZmZlcl9jdXJyICs9IGJ1ZmZlci5sZW5ndGg7XG4gICAgY2FtbF9tbF9mbHVzaCAoY2hhbmlkKTtcbiAgICBicmVha1xuICBjYXNlIDE6IC8vIEJ1ZmZlcmVkICh0aGUgZGVmYXVsdClcbiAgICBjaGFuLmJ1ZmZlci5zZXQoYnVmZmVyLCBjaGFuLmJ1ZmZlcl9jdXJyKTtcbiAgICBjaGFuLmJ1ZmZlcl9jdXJyICs9IGJ1ZmZlci5sZW5ndGg7XG4gICAgaWYoY2hhbi5idWZmZXJfY3VyciA+PSBjaGFuLmJ1ZmZlci5sZW5ndGgpXG4gICAgICBjYW1sX21sX2ZsdXNoIChjaGFuaWQpO1xuICAgIGJyZWFrO1xuICBjYXNlIDI6IC8vIEJ1ZmZlcmVkIChvbmx5IGZvciBzdGRvdXQgYW5kIHN0ZGVycilcbiAgICB2YXIgaWQgPSBidWZmZXIubGFzdEluZGV4T2YoMTApXG4gICAgaWYoaWQgPCAwKSB7XG4gICAgICBjaGFuLmJ1ZmZlci5zZXQoYnVmZmVyLCBjaGFuLmJ1ZmZlcl9jdXJyKTtcbiAgICAgIGNoYW4uYnVmZmVyX2N1cnIgKz0gYnVmZmVyLmxlbmd0aDtcbiAgICAgIGlmKGNoYW4uYnVmZmVyX2N1cnIgPj0gY2hhbi5idWZmZXIubGVuZ3RoKVxuICAgICAgICBjYW1sX21sX2ZsdXNoIChjaGFuaWQpO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgIGNoYW4uYnVmZmVyLnNldChidWZmZXIuc3ViYXJyYXkoMCwgaWQgKyAxKSwgY2hhbi5idWZmZXJfY3Vycik7XG4gICAgICBjaGFuLmJ1ZmZlcl9jdXJyICs9IGlkICsgMTtcbiAgICAgIGNhbWxfbWxfZmx1c2ggKGNoYW5pZCk7XG4gICAgICBjaGFuLmJ1ZmZlci5zZXQoYnVmZmVyLnN1YmFycmF5KGlkICsgMSksIGNoYW4uYnVmZmVyX2N1cnIpO1xuICAgICAgY2hhbi5idWZmZXJfY3VyciArPSBidWZmZXIubGVuZ3RoIC0gaWQgLSAxO1xuICAgIH1cbiAgICBicmVhaztcbiAgfVxuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tbF9vdXRwdXRcbi8vUmVxdWlyZXM6IGNhbWxfbWxfb3V0cHV0X2J5dGVzLCBjYW1sX2J5dGVzX29mX3N0cmluZ1xuZnVuY3Rpb24gY2FtbF9tbF9vdXRwdXQoY2hhbmlkLGJ1ZmZlcixvZmZzZXQsbGVuKXtcbiAgcmV0dXJuIGNhbWxfbWxfb3V0cHV0X2J5dGVzKGNoYW5pZCxjYW1sX2J5dGVzX29mX3N0cmluZyhidWZmZXIpLG9mZnNldCxsZW4pO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX291dHB1dF9jaGFyXG4vL1JlcXVpcmVzOiBjYW1sX21sX291dHB1dFxuLy9SZXF1aXJlczogY2FtbF9zdHJpbmdfb2ZfanNieXRlc1xuZnVuY3Rpb24gY2FtbF9tbF9vdXRwdXRfY2hhciAoY2hhbmlkLGMpIHtcbiAgdmFyIHMgPSBjYW1sX3N0cmluZ19vZl9qc2J5dGVzKFN0cmluZy5mcm9tQ2hhckNvZGUoYykpO1xuICBjYW1sX21sX291dHB1dChjaGFuaWQscywwLDEpO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9vdXRwdXRfdmFsdWVcbi8vUmVxdWlyZXM6IGNhbWxfb3V0cHV0X3ZhbHVlX3RvX3N0cmluZywgY2FtbF9tbF9vdXRwdXQsY2FtbF9tbF9zdHJpbmdfbGVuZ3RoXG5mdW5jdGlvbiBjYW1sX291dHB1dF92YWx1ZSAoY2hhbmlkLHYsZmxhZ3MpIHtcbiAgdmFyIHMgPSBjYW1sX291dHB1dF92YWx1ZV90b19zdHJpbmcodiwgZmxhZ3MpO1xuICBjYW1sX21sX291dHB1dChjaGFuaWQscywwLGNhbWxfbWxfc3RyaW5nX2xlbmd0aChzKSk7XG4gIHJldHVybiAwO1xufVxuXG5cbi8vUHJvdmlkZXM6IGNhbWxfc2Vla19vdXRcbi8vUmVxdWlyZXM6IGNhbWxfbWxfY2hhbm5lbHMsIGNhbWxfbWxfZmx1c2hcbmZ1bmN0aW9uIGNhbWxfc2Vla19vdXQoY2hhbmlkLCBwb3Mpe1xuICBjYW1sX21sX2ZsdXNoKGNoYW5pZCk7XG4gIHZhciBjaGFuID0gY2FtbF9tbF9jaGFubmVsc1tjaGFuaWRdO1xuICBjaGFuLm9mZnNldCA9IHBvcztcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfc2Vla19vdXRcbi8vUmVxdWlyZXM6IGNhbWxfc2Vla19vdXRcbmZ1bmN0aW9uIGNhbWxfbWxfc2Vla19vdXQoY2hhbmlkLHBvcyl7XG4gIHJldHVybiBjYW1sX3NlZWtfb3V0KGNoYW5pZCwgcG9zKTtcbn1cbi8vUHJvdmlkZXM6IGNhbWxfbWxfc2Vla19vdXRfNjRcbi8vUmVxdWlyZXM6IGNhbWxfaW50NjRfdG9fZmxvYXQsIGNhbWxfc2Vla19vdXRcbmZ1bmN0aW9uIGNhbWxfbWxfc2Vla19vdXRfNjQoY2hhbmlkLHBvcyl7XG4gIHZhciBwb3MgPSBjYW1sX2ludDY0X3RvX2Zsb2F0KHBvcyk7XG4gIHJldHVybiBjYW1sX3NlZWtfb3V0KGNoYW5pZCwgcG9zKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9wb3Nfb3V0XG4vL1JlcXVpcmVzOiBjYW1sX21sX2NoYW5uZWxzLCBjYW1sX21sX2ZsdXNoXG5mdW5jdGlvbiBjYW1sX3Bvc19vdXQoY2hhbmlkKSB7XG4gIHZhciBjaGFuID0gY2FtbF9tbF9jaGFubmVsc1tjaGFuaWRdO1xuICByZXR1cm4gY2hhbi5vZmZzZXQgKyBjaGFuLmJ1ZmZlcl9jdXJyXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfcG9zX291dFxuLy9SZXF1aXJlczogY2FtbF9wb3Nfb3V0XG5mdW5jdGlvbiBjYW1sX21sX3Bvc19vdXQoY2hhbmlkKSB7XG4gIHJldHVybiBjYW1sX3Bvc19vdXQoY2hhbmlkKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tbF9wb3Nfb3V0XzY0XG4vL1JlcXVpcmVzOiBjYW1sX2ludDY0X29mX2Zsb2F0LCBjYW1sX3Bvc19vdXRcbmZ1bmN0aW9uIGNhbWxfbWxfcG9zX291dF82NChjaGFuaWQpIHtcbiAgcmV0dXJuIGNhbWxfaW50NjRfb2ZfZmxvYXQgKGNhbWxfcG9zX291dChjaGFuaWQpKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tbF9vdXRwdXRfaW50XG4vL1JlcXVpcmVzOiBjYW1sX21sX291dHB1dFxuLy9SZXF1aXJlczogY2FtbF9zdHJpbmdfb2ZfYXJyYXlcbmZ1bmN0aW9uIGNhbWxfbWxfb3V0cHV0X2ludCAoY2hhbmlkLGkpIHtcbiAgdmFyIGFyciA9IFsoaT4+MjQpICYgMHhGRiwoaT4+MTYpICYgMHhGRiwoaT4+OCkgJiAweEZGLGkgJiAweEZGIF07XG4gIHZhciBzID0gY2FtbF9zdHJpbmdfb2ZfYXJyYXkoYXJyKTtcbiAgY2FtbF9tbF9vdXRwdXQoY2hhbmlkLHMsMCw0KTtcbiAgcmV0dXJuIDBcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tbF9pc19idWZmZXJlZFxuLy9SZXF1aXJlczogY2FtbF9tbF9jaGFubmVsc1xuZnVuY3Rpb24gY2FtbF9tbF9pc19idWZmZXJlZChjaGFuaWQpIHtcbiAgcmV0dXJuIGNhbWxfbWxfY2hhbm5lbHNbY2hhbmlkXS5idWZmZXJlZCA/IDEgOiAwXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfc2V0X2J1ZmZlcmVkXG4vL1JlcXVpcmVzOiBjYW1sX21sX2NoYW5uZWxzLCBjYW1sX21sX2ZsdXNoXG5mdW5jdGlvbiBjYW1sX21sX3NldF9idWZmZXJlZChjaGFuaWQsdikge1xuICBjYW1sX21sX2NoYW5uZWxzW2NoYW5pZF0uYnVmZmVyZWQgPSB2O1xuICBpZighdikgY2FtbF9tbF9mbHVzaChjaGFuaWQpO1xuICByZXR1cm4gMFxufVxuIiwiXG5cbi8vUHJvdmlkZXM6IGNhbWxfZ2NfbWlub3JcbmZ1bmN0aW9uIGNhbWxfZ2NfbWlub3IodW5pdCl7XG4gIC8vYXZhaWxhYmxlIHdpdGggW25vZGUgLS1leHBvc2UtZ2NdXG4gIGlmKHR5cGVvZiBnbG9iYWxUaGlzLmdjID09ICdmdW5jdGlvbicpIGdsb2JhbFRoaXMuZ2ModHJ1ZSk7XG4gIHJldHVybiAwXG59XG4vL1Byb3ZpZGVzOiBjYW1sX2djX21ham9yXG5mdW5jdGlvbiBjYW1sX2djX21ham9yKHVuaXQpe1xuICAvL2F2YWlsYWJsZSB3aXRoIFtub2RlIC0tZXhwb3NlLWdjXVxuICBpZih0eXBlb2YgZ2xvYmFsVGhpcy5nYyA9PSAnZnVuY3Rpb24nKSBnbG9iYWxUaGlzLmdjKCk7XG4gIHJldHVybiAwXG59XG4vL1Byb3ZpZGVzOiBjYW1sX2djX2Z1bGxfbWFqb3JcbmZ1bmN0aW9uIGNhbWxfZ2NfZnVsbF9tYWpvcih1bml0KXtcbiAgLy9hdmFpbGFibGUgd2l0aCBbbm9kZSAtLWV4cG9zZS1nY11cbiAgaWYodHlwZW9mIGdsb2JhbFRoaXMuZ2MgPT0gJ2Z1bmN0aW9uJykgZ2xvYmFsVGhpcy5nYygpO1xuICByZXR1cm4gMFxufVxuLy9Qcm92aWRlczogY2FtbF9nY19jb21wYWN0aW9uXG5mdW5jdGlvbiBjYW1sX2djX2NvbXBhY3Rpb24oKXsgcmV0dXJuIDB9XG4vL1Byb3ZpZGVzOiBjYW1sX2djX2NvdW50ZXJzXG5mdW5jdGlvbiBjYW1sX2djX2NvdW50ZXJzKCkgeyByZXR1cm4gWzI1NCwwLDAsMF0gfVxuLy9Qcm92aWRlczogY2FtbF9nY19xdWlja19zdGF0XG5mdW5jdGlvbiBjYW1sX2djX3F1aWNrX3N0YXQoKXtcbiAgcmV0dXJuIFswLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDBdXG59XG4vL1Byb3ZpZGVzOiBjYW1sX2djX3N0YXRcbmZ1bmN0aW9uIGNhbWxfZ2Nfc3RhdCgpIHtcbiAgcmV0dXJuIFswLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDBdXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZ2Nfc2V0XG5mdW5jdGlvbiBjYW1sX2djX3NldChfY29udHJvbCkge1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9nY19nZXRcbmZ1bmN0aW9uIGNhbWxfZ2NfZ2V0KCl7XG4gIHJldHVybiBbMCwwLDAsMCwwLDAsMCwwLDBdXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWVtcHJvZl9zZXRcbmZ1bmN0aW9uIGNhbWxfbWVtcHJvZl9zZXQoX2NvbnRyb2wpIHtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZmluYWxfcmVnaXN0ZXIgY29uc3RcbmZ1bmN0aW9uIGNhbWxfZmluYWxfcmVnaXN0ZXIgKCkgeyByZXR1cm4gMDsgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2ZpbmFsX3JlZ2lzdGVyX2NhbGxlZF93aXRob3V0X3ZhbHVlXG52YXIgYWxsX2ZpbmFsaXplcnMgPSBuZXcgZ2xvYmFsVGhpcy5TZXQoKVxuZnVuY3Rpb24gY2FtbF9maW5hbF9yZWdpc3Rlcl9jYWxsZWRfd2l0aG91dF92YWx1ZSAoY2IsIGEpIHtcbiAgaWYoZ2xvYmFsVGhpcy5GaW5hbGl6YXRpb25SZWdpc3RyeSAmJiBhIGluc3RhbmNlb2YgT2JqZWN0KSB7XG4gICAgdmFyIHggPSBuZXcgZ2xvYmFsVGhpcy5GaW5hbGl6YXRpb25SZWdpc3RyeShmdW5jdGlvbiAoeCl7YWxsX2ZpbmFsaXplcnMuZGVsZXRlKHgpOyBjYigwKTsgcmV0dXJuO30pO1xuICAgIHgucmVnaXN0ZXIoYSx4KTtcbiAgICBhbGxfZmluYWxpemVycy5hZGQoeCk7XG4gIH1cbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZmluYWxfcmVsZWFzZSBjb25zdFxuZnVuY3Rpb24gY2FtbF9maW5hbF9yZWxlYXNlICgpIHsgcmV0dXJuIDA7IH1cblxuLy9Qcm92aWRlczogY2FtbF9tZW1wcm9mX3N0YXJ0XG5mdW5jdGlvbiBjYW1sX21lbXByb2Zfc3RhcnQocmF0ZSxzdGFja19zaXplLHRyYWNrZXIpe1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tZW1wcm9mX3N0b3BcbmZ1bmN0aW9uIGNhbWxfbWVtcHJvZl9zdG9wKHVuaXQpIHtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZXZlbnRsb2dfcmVzdW1lXG5mdW5jdGlvbiBjYW1sX2V2ZW50bG9nX3Jlc3VtZSh1bml0KSB7IHJldHVybiAwOyB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfZXZlbnRsb2dfcGF1c2VcbmZ1bmN0aW9uIGNhbWxfZXZlbnRsb2dfcGF1c2UodW5pdCkgeyByZXR1cm4gMDsgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2djX2h1Z2VfZmFsbGJhY2tfY291bnRcbmZ1bmN0aW9uIGNhbWxfZ2NfaHVnZV9mYWxsYmFja19jb3VudCh1bml0KSB7IHJldHVybiAwOyB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfZ2NfbWFqb3Jfc2xpY2VcbmZ1bmN0aW9uIGNhbWxfZ2NfbWFqb3Jfc2xpY2Uod29yaykgeyByZXR1cm4gMDsgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2djX21pbm9yX3dvcmRzXG5mdW5jdGlvbiBjYW1sX2djX21pbm9yX3dvcmRzKHVuaXQpIHsgcmV0dXJuIDA7IH1cblxuLy9Qcm92aWRlczogY2FtbF9nZXRfbWlub3JfZnJlZVxuZnVuY3Rpb24gY2FtbF9nZXRfbWlub3JfZnJlZSh1bml0KSB7IHJldHVybiAwOyB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfZ2V0X21ham9yX2J1Y2tldFxuZnVuY3Rpb24gY2FtbF9nZXRfbWFqb3JfYnVja2V0KG4pIHsgcmV0dXJuIDA7IH1cblxuLy9Qcm92aWRlczogY2FtbF9nZXRfbWFqb3JfY3JlZGl0XG5mdW5jdGlvbiBjYW1sX2dldF9tYWpvcl9jcmVkaXQobikgeyByZXR1cm4gMDsgfVxuIiwiLy8gSnNfb2Zfb2NhbWwgcnVudGltZSBzdXBwb3J0XG4vLyBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL2pzX29mX29jYW1sL1xuLy8gQ29weXJpZ2h0IChDKSAyMDE0IErDqXLDtG1lIFZvdWlsbG9uLCBIdWdvIEhldXphcmQsIEFuZHkgUmF5XG4vLyBMYWJvcmF0b2lyZSBQUFMgLSBDTlJTIFVuaXZlcnNpdMOpIFBhcmlzIERpZGVyb3Rcbi8vXG4vLyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuLy8gaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4vLyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoIGxpbmtpbmcgZXhjZXB0aW9uO1xuLy8gZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuLy8gYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2Zcbi8vIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcbi8vIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuLy9cbi8vIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuLy8gYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbi8vIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuXG4vL1xuLy8gQmlnYXJyYXkuXG4vL1xuLy8gLSBhbGwgYmlnYXJyYXkgdHlwZXMgaW5jbHVkaW5nIEludDY0IGFuZCBDb21wbGV4LlxuLy8gLSBmb3J0cmFuICsgYyBsYXlvdXRzXG4vLyAtIHN1Yi9zbGljZS9yZXNoYXBlXG4vLyAtIHJldGFpbiBmYXN0IHBhdGggZm9yIDFkIGFycmF5IGFjY2Vzc1xuXG4vL1Byb3ZpZGVzOiBjYW1sX2JhX2luaXQgY29uc3RcbmZ1bmN0aW9uIGNhbWxfYmFfaW5pdCgpIHtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmFfZ2V0X3NpemVcbi8vUmVxdWlyZXM6IGNhbWxfaW52YWxpZF9hcmd1bWVudFxuZnVuY3Rpb24gY2FtbF9iYV9nZXRfc2l6ZShkaW1zKSB7XG4gIHZhciBuX2RpbXMgPSBkaW1zLmxlbmd0aDtcbiAgdmFyIHNpemUgPSAxO1xuICBmb3IgKHZhciBpID0gMDsgaSA8IG5fZGltczsgaSsrKSB7XG4gICAgaWYgKGRpbXNbaV0gPCAwKVxuICAgICAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiQmlnYXJyYXkuY3JlYXRlOiBuZWdhdGl2ZSBkaW1lbnNpb25cIik7XG4gICAgc2l6ZSA9IHNpemUgKiBkaW1zW2ldO1xuICB9XG4gIHJldHVybiBzaXplO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JhX2dldF9zaXplX3Blcl9lbGVtZW50XG5mdW5jdGlvbiBjYW1sX2JhX2dldF9zaXplX3Blcl9lbGVtZW50KGtpbmQpe1xuICBzd2l0Y2goa2luZCl7XG4gIGNhc2UgNzogY2FzZSAxMDogY2FzZSAxMTogcmV0dXJuIDI7XG4gIGRlZmF1bHQ6IHJldHVybiAxO1xuICB9XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmFfY3JlYXRlX2J1ZmZlclxuLy9SZXF1aXJlczogY2FtbF9iYV9nZXRfc2l6ZV9wZXJfZWxlbWVudFxuLy9SZXF1aXJlczogY2FtbF9pbnZhbGlkX2FyZ3VtZW50XG5mdW5jdGlvbiBjYW1sX2JhX2NyZWF0ZV9idWZmZXIoa2luZCwgc2l6ZSl7XG4gIHZhciB2aWV3O1xuICBzd2l0Y2goa2luZCl7XG4gIGNhc2UgMDogIHZpZXcgPSBGbG9hdDMyQXJyYXk7IGJyZWFrO1xuICBjYXNlIDE6ICB2aWV3ID0gRmxvYXQ2NEFycmF5OyBicmVhaztcbiAgY2FzZSAyOiAgdmlldyA9IEludDhBcnJheTsgYnJlYWs7XG4gIGNhc2UgMzogIHZpZXcgPSBVaW50OEFycmF5OyBicmVhaztcbiAgY2FzZSA0OiAgdmlldyA9IEludDE2QXJyYXk7IGJyZWFrO1xuICBjYXNlIDU6ICB2aWV3ID0gVWludDE2QXJyYXk7IGJyZWFrO1xuICBjYXNlIDY6ICB2aWV3ID0gSW50MzJBcnJheTsgYnJlYWs7XG4gIGNhc2UgNzogIHZpZXcgPSBJbnQzMkFycmF5OyBicmVhaztcbiAgY2FzZSA4OiAgdmlldyA9IEludDMyQXJyYXk7IGJyZWFrO1xuICBjYXNlIDk6ICB2aWV3ID0gSW50MzJBcnJheTsgYnJlYWs7XG4gIGNhc2UgMTA6IHZpZXcgPSBGbG9hdDMyQXJyYXk7IGJyZWFrO1xuICBjYXNlIDExOiB2aWV3ID0gRmxvYXQ2NEFycmF5OyBicmVhaztcbiAgY2FzZSAxMjogdmlldyA9IFVpbnQ4QXJyYXk7IGJyZWFrO1xuICB9XG4gIGlmICghdmlldykgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiQmlnYXJyYXkuY3JlYXRlOiB1bnN1cHBvcnRlZCBraW5kXCIpO1xuICB2YXIgZGF0YSA9IG5ldyB2aWV3KHNpemUgKiBjYW1sX2JhX2dldF9zaXplX3Blcl9lbGVtZW50KGtpbmQpKTtcbiAgcmV0dXJuIGRhdGE7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmFfY3VzdG9tX25hbWVcbi8vVmVyc2lvbjogPCA0LjExXG52YXIgY2FtbF9iYV9jdXN0b21fbmFtZSA9IFwiX2JpZ2FycmF5XCJcblxuLy9Qcm92aWRlczogY2FtbF9iYV9jdXN0b21fbmFtZVxuLy9WZXJzaW9uOiA+PSA0LjExXG52YXIgY2FtbF9iYV9jdXN0b21fbmFtZSA9IFwiX2JpZ2FycjAyXCJcblxuLy9Qcm92aWRlczogTWxfQmlnYXJyYXlcbi8vUmVxdWlyZXM6IGNhbWxfYXJyYXlfYm91bmRfZXJyb3IsIGNhbWxfaW52YWxpZF9hcmd1bWVudCwgY2FtbF9iYV9jdXN0b21fbmFtZVxuLy9SZXF1aXJlczogY2FtbF9pbnQ2NF9jcmVhdGVfbG9faGksIGNhbWxfaW50NjRfaGkzMiwgY2FtbF9pbnQ2NF9sbzMyXG5mdW5jdGlvbiBNbF9CaWdhcnJheSAoa2luZCwgbGF5b3V0LCBkaW1zLCBidWZmZXIpIHtcblxuICB0aGlzLmtpbmQgICA9IGtpbmQgO1xuICB0aGlzLmxheW91dCA9IGxheW91dDtcbiAgdGhpcy5kaW1zICAgPSBkaW1zO1xuICB0aGlzLmRhdGEgPSBidWZmZXI7XG59XG5cbk1sX0JpZ2FycmF5LnByb3RvdHlwZS5jYW1sX2N1c3RvbSA9IGNhbWxfYmFfY3VzdG9tX25hbWU7XG5cbk1sX0JpZ2FycmF5LnByb3RvdHlwZS5vZmZzZXQgPSBmdW5jdGlvbiAoYXJnKSB7XG4gIHZhciBvZnMgPSAwO1xuICBpZih0eXBlb2YgYXJnID09PSBcIm51bWJlclwiKSBhcmcgPSBbYXJnXTtcbiAgaWYgKCEgKGFyZyBpbnN0YW5jZW9mIEFycmF5KSkgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiYmlnYXJyYXkuanM6IGludmFsaWQgb2Zmc2V0XCIpO1xuICBpZiAodGhpcy5kaW1zLmxlbmd0aCAhPSBhcmcubGVuZ3RoKVxuICAgIGNhbWxfaW52YWxpZF9hcmd1bWVudChcIkJpZ2FycmF5LmdldC9zZXQ6IGJhZCBudW1iZXIgb2YgZGltZW5zaW9uc1wiKTtcbiAgaWYodGhpcy5sYXlvdXQgPT0gMCAvKiBjX2xheW91dCAqLykge1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5kaW1zLmxlbmd0aDsgaSsrKSB7XG4gICAgICBpZiAoYXJnW2ldIDwgMCB8fCBhcmdbaV0gPj0gdGhpcy5kaW1zW2ldKVxuICAgICAgICBjYW1sX2FycmF5X2JvdW5kX2Vycm9yKCk7XG4gICAgICBvZnMgPSAob2ZzICogdGhpcy5kaW1zW2ldKSArIGFyZ1tpXTtcbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgZm9yICh2YXIgaSA9IHRoaXMuZGltcy5sZW5ndGggLSAxOyBpID49IDA7IGktLSkge1xuICAgICAgaWYgKGFyZ1tpXSA8IDEgfHwgYXJnW2ldID4gdGhpcy5kaW1zW2ldKXtcbiAgICAgICAgY2FtbF9hcnJheV9ib3VuZF9lcnJvcigpO1xuICAgICAgfVxuICAgICAgb2ZzID0gKG9mcyAqIHRoaXMuZGltc1tpXSkgKyAoYXJnW2ldIC0gMSk7XG4gICAgfVxuICB9XG4gIHJldHVybiBvZnM7XG59XG5cbk1sX0JpZ2FycmF5LnByb3RvdHlwZS5nZXQgPSBmdW5jdGlvbiAob2ZzKSB7XG4gIHN3aXRjaCh0aGlzLmtpbmQpe1xuICBjYXNlIDc6XG4gICAgLy8gSW50NjRcbiAgICB2YXIgbCA9IHRoaXMuZGF0YVtvZnMgKiAyICsgMF07XG4gICAgdmFyIGggPSB0aGlzLmRhdGFbb2ZzICogMiArIDFdO1xuICAgIHJldHVybiBjYW1sX2ludDY0X2NyZWF0ZV9sb19oaShsLGgpO1xuICBjYXNlIDEwOiBjYXNlIDExOlxuICAgIC8vIENvbXBsZXgzMiwgQ29tcGxleDY0XG4gICAgdmFyIHIgPSB0aGlzLmRhdGFbb2ZzICogMiArIDBdO1xuICAgIHZhciBpID0gdGhpcy5kYXRhW29mcyAqIDIgKyAxXTtcbiAgICByZXR1cm4gWzI1NCwgciwgaV07XG4gIGRlZmF1bHQ6XG4gICAgcmV0dXJuIHRoaXMuZGF0YVtvZnNdXG4gIH1cbn1cblxuTWxfQmlnYXJyYXkucHJvdG90eXBlLnNldCA9IGZ1bmN0aW9uIChvZnMsdikge1xuICBzd2l0Y2godGhpcy5raW5kKXtcbiAgY2FzZSA3OlxuICAgIC8vIEludDY0XG4gICAgdGhpcy5kYXRhW29mcyAqIDIgKyAwXSA9IGNhbWxfaW50NjRfbG8zMih2KTtcbiAgICB0aGlzLmRhdGFbb2ZzICogMiArIDFdID0gY2FtbF9pbnQ2NF9oaTMyKHYpO1xuICAgIGJyZWFrO1xuICBjYXNlIDEwOiBjYXNlIDExOlxuICAgIC8vIENvbXBsZXgzMiwgQ29tcGxleDY0XG4gICAgdGhpcy5kYXRhW29mcyAqIDIgKyAwXSA9IHZbMV07XG4gICAgdGhpcy5kYXRhW29mcyAqIDIgKyAxXSA9IHZbMl07XG4gICAgYnJlYWs7XG4gIGRlZmF1bHQ6XG4gICAgdGhpcy5kYXRhW29mc10gPSB2O1xuICAgIGJyZWFrO1xuICB9XG4gIHJldHVybiAwXG59XG5cblxuTWxfQmlnYXJyYXkucHJvdG90eXBlLmZpbGwgPSBmdW5jdGlvbiAodikge1xuICBzd2l0Y2godGhpcy5raW5kKXtcbiAgY2FzZSA3OlxuICAgIC8vIEludDY0XG4gICAgdmFyIGEgPSBjYW1sX2ludDY0X2xvMzIodik7XG4gICAgdmFyIGIgPSBjYW1sX2ludDY0X2hpMzIodik7XG4gICAgaWYoYSA9PSBiKXtcbiAgICAgIHRoaXMuZGF0YS5maWxsKGEpO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgIGZvcih2YXIgaSA9IDA7IGk8dGhpcy5kYXRhLmxlbmd0aDsgaSsrKXtcbiAgICAgICAgdGhpcy5kYXRhW2ldID0gKGklMiA9PSAwKSA/IGEgOiBiO1xuICAgICAgfVxuICAgIH1cbiAgICBicmVhaztcbiAgY2FzZSAxMDogY2FzZSAxMTpcbiAgICAvLyBDb21wbGV4MzIsIENvbXBsZXg2NFxuICAgIHZhciBpbSA9IHZbMV07XG4gICAgdmFyIHJlID0gdlsyXTtcbiAgICBpZihpbSA9PSByZSl7XG4gICAgICB0aGlzLmRhdGEuZmlsbChpbSk7XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgZm9yKHZhciBpID0gMDsgaTx0aGlzLmRhdGEubGVuZ3RoOyBpKyspe1xuICAgICAgICB0aGlzLmRhdGFbaV0gPSAoaSUyID09IDApID8gaW0gOiByZTtcbiAgICAgIH1cbiAgICB9XG4gICAgYnJlYWs7XG4gIGRlZmF1bHQ6XG4gICAgdGhpcy5kYXRhLmZpbGwodik7XG4gICAgYnJlYWs7XG4gIH1cbn1cblxuXG5NbF9CaWdhcnJheS5wcm90b3R5cGUuY29tcGFyZSA9IGZ1bmN0aW9uIChiLCB0b3RhbCkge1xuICBpZiAodGhpcy5sYXlvdXQgIT0gYi5sYXlvdXQgfHwgdGhpcy5raW5kICE9IGIua2luZCkge1xuICAgIHZhciBrMSA9IHRoaXMua2luZCB8ICh0aGlzLmxheW91dCA8PCA4KTtcbiAgICB2YXIgazIgPSAgICBiLmtpbmQgfCAoYi5sYXlvdXQgPDwgOCk7XG4gICAgcmV0dXJuIGsyIC0gazE7XG4gIH1cbiAgaWYgKHRoaXMuZGltcy5sZW5ndGggIT0gYi5kaW1zLmxlbmd0aCkge1xuICAgIHJldHVybiBiLmRpbXMubGVuZ3RoIC0gdGhpcy5kaW1zLmxlbmd0aDtcbiAgfVxuICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMuZGltcy5sZW5ndGg7IGkrKylcbiAgICBpZiAodGhpcy5kaW1zW2ldICE9IGIuZGltc1tpXSlcbiAgICAgIHJldHVybiAodGhpcy5kaW1zW2ldIDwgYi5kaW1zW2ldKSA/IC0xIDogMTtcbiAgc3dpdGNoICh0aGlzLmtpbmQpIHtcbiAgY2FzZSAwOlxuICBjYXNlIDE6XG4gIGNhc2UgMTA6XG4gIGNhc2UgMTE6XG4gICAgLy8gRmxvYXRzXG4gICAgdmFyIHgsIHk7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLmRhdGEubGVuZ3RoOyBpKyspIHtcbiAgICAgIHggPSB0aGlzLmRhdGFbaV07XG4gICAgICB5ID0gYi5kYXRhW2ldO1xuICAgICAgaWYgKHggPCB5KVxuICAgICAgICByZXR1cm4gLTE7XG4gICAgICBpZiAoeCA+IHkpXG4gICAgICAgIHJldHVybiAxO1xuICAgICAgaWYgKHggIT0geSkge1xuICAgICAgICBpZiAoIXRvdGFsKSByZXR1cm4gTmFOO1xuICAgICAgICBpZiAoeCA9PSB4KSByZXR1cm4gMTtcbiAgICAgICAgaWYgKHkgPT0geSkgcmV0dXJuIC0xO1xuICAgICAgfVxuICAgIH1cbiAgICBicmVhaztcbiAgY2FzZSA3OlxuICAgIC8vIEludDY0XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLmRhdGEubGVuZ3RoOyBpKz0yKSB7XG4gICAgICAvLyBDaGVjayBoaWdoZXN0IGJpdHMgZmlyc3RcbiAgICAgIGlmICh0aGlzLmRhdGFbaSsxXSA8IGIuZGF0YVtpKzFdKVxuICAgICAgICByZXR1cm4gLTE7XG4gICAgICBpZiAodGhpcy5kYXRhW2krMV0gPiBiLmRhdGFbaSsxXSlcbiAgICAgICAgcmV0dXJuIDE7XG4gICAgICBpZiAoKHRoaXMuZGF0YVtpXSA+Pj4gMCkgPCAoYi5kYXRhW2ldID4+PiAwKSlcbiAgICAgICAgcmV0dXJuIC0xO1xuICAgICAgaWYgKCh0aGlzLmRhdGFbaV0gPj4+IDApID4gKGIuZGF0YVtpXSA+Pj4gMCkpXG4gICAgICAgIHJldHVybiAxO1xuICAgIH1cbiAgICBicmVhaztcbiAgY2FzZSAyOlxuICBjYXNlIDM6XG4gIGNhc2UgNDpcbiAgY2FzZSA1OlxuICBjYXNlIDY6XG4gIGNhc2UgODpcbiAgY2FzZSA5OlxuICBjYXNlIDEyOlxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5kYXRhLmxlbmd0aDsgaSsrKSB7XG4gICAgICBpZiAodGhpcy5kYXRhW2ldIDwgYi5kYXRhW2ldKVxuICAgICAgICByZXR1cm4gLTE7XG4gICAgICBpZiAodGhpcy5kYXRhW2ldID4gYi5kYXRhW2ldKVxuICAgICAgICByZXR1cm4gMTtcbiAgICB9XG4gICAgYnJlYWs7XG4gIH1cbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IE1sX0JpZ2FycmF5X2NfMV8xXG4vL1JlcXVpcmVzOiBNbF9CaWdhcnJheSwgY2FtbF9hcnJheV9ib3VuZF9lcnJvciwgY2FtbF9pbnZhbGlkX2FyZ3VtZW50XG5mdW5jdGlvbiBNbF9CaWdhcnJheV9jXzFfMShraW5kLCBsYXlvdXQsIGRpbXMsIGJ1ZmZlcikge1xuICB0aGlzLmtpbmQgICA9IGtpbmQgO1xuICB0aGlzLmxheW91dCA9IGxheW91dDtcbiAgdGhpcy5kaW1zICAgPSBkaW1zO1xuICB0aGlzLmRhdGEgICA9IGJ1ZmZlcjtcbn1cblxuTWxfQmlnYXJyYXlfY18xXzEucHJvdG90eXBlID0gbmV3IE1sX0JpZ2FycmF5KClcbk1sX0JpZ2FycmF5X2NfMV8xLnByb3RvdHlwZS5vZmZzZXQgPSBmdW5jdGlvbiAoYXJnKSB7XG4gIGlmKHR5cGVvZiBhcmcgIT09IFwibnVtYmVyXCIpe1xuICAgIGlmKChhcmcgaW5zdGFuY2VvZiBBcnJheSkgJiYgYXJnLmxlbmd0aCA9PSAxKVxuICAgICAgYXJnID0gYXJnWzBdO1xuICAgIGVsc2UgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiTWxfQmlnYXJyYXlfY18xXzEub2Zmc2V0XCIpO1xuICB9XG4gIGlmIChhcmcgPCAwIHx8IGFyZyA+PSB0aGlzLmRpbXNbMF0pXG4gICAgY2FtbF9hcnJheV9ib3VuZF9lcnJvcigpO1xuICByZXR1cm4gYXJnO1xufVxuXG5NbF9CaWdhcnJheV9jXzFfMS5wcm90b3R5cGUuZ2V0ID0gZnVuY3Rpb24gKG9mcykge1xuICByZXR1cm4gdGhpcy5kYXRhW29mc107XG59XG5cbk1sX0JpZ2FycmF5X2NfMV8xLnByb3RvdHlwZS5zZXQgPSBmdW5jdGlvbiAob2ZzLHYpIHtcbiAgdGhpcy5kYXRhW29mc10gPSB2O1xuICByZXR1cm4gMFxufVxuXG5NbF9CaWdhcnJheV9jXzFfMS5wcm90b3R5cGUuZmlsbCA9IGZ1bmN0aW9uICh2KSB7XG4gIHRoaXMuZGF0YS5maWxsKHYpO1xuICByZXR1cm4gMFxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JhX2NvbXBhcmVcbmZ1bmN0aW9uIGNhbWxfYmFfY29tcGFyZShhLGIsdG90YWwpe1xuICByZXR1cm4gYS5jb21wYXJlKGIsdG90YWwpXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmFfY3JlYXRlX3Vuc2FmZVxuLy9SZXF1aXJlczogTWxfQmlnYXJyYXksIE1sX0JpZ2FycmF5X2NfMV8xLCBjYW1sX2JhX2dldF9zaXplLCBjYW1sX2JhX2dldF9zaXplX3Blcl9lbGVtZW50XG4vL1JlcXVpcmVzOiBjYW1sX2ludmFsaWRfYXJndW1lbnRcbmZ1bmN0aW9uIGNhbWxfYmFfY3JlYXRlX3Vuc2FmZShraW5kLCBsYXlvdXQsIGRpbXMsIGRhdGEpe1xuICB2YXIgc2l6ZV9wZXJfZWxlbWVudCA9IGNhbWxfYmFfZ2V0X3NpemVfcGVyX2VsZW1lbnQoa2luZCk7XG4gIGlmKGNhbWxfYmFfZ2V0X3NpemUoZGltcykgKiBzaXplX3Blcl9lbGVtZW50ICE9IGRhdGEubGVuZ3RoKSB7XG4gICAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwibGVuZ3RoIGRvZXNuJ3QgbWF0Y2ggZGltc1wiKTtcbiAgfVxuICBpZihsYXlvdXQgPT0gMCAmJiAvLyBjX2xheW91dFxuICAgICBkaW1zLmxlbmd0aCA9PSAxICYmIC8vIEFycmF5MVxuICAgICBzaXplX3Blcl9lbGVtZW50ID09IDEpIC8vIDEtdG8tMSBtYXBwaW5nXG4gICAgcmV0dXJuIG5ldyBNbF9CaWdhcnJheV9jXzFfMShraW5kLCBsYXlvdXQsIGRpbXMsIGRhdGEpO1xuICByZXR1cm4gbmV3IE1sX0JpZ2FycmF5KGtpbmQsIGxheW91dCwgZGltcywgZGF0YSk7XG5cbn1cblxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JhX2NyZWF0ZVxuLy9SZXF1aXJlczogY2FtbF9qc19mcm9tX2FycmF5XG4vL1JlcXVpcmVzOiBjYW1sX2JhX2dldF9zaXplLCBjYW1sX2JhX2NyZWF0ZV91bnNhZmVcbi8vUmVxdWlyZXM6IGNhbWxfYmFfY3JlYXRlX2J1ZmZlclxuZnVuY3Rpb24gY2FtbF9iYV9jcmVhdGUoa2luZCwgbGF5b3V0LCBkaW1zX21sKSB7XG4gIHZhciBkaW1zID0gY2FtbF9qc19mcm9tX2FycmF5KGRpbXNfbWwpO1xuICB2YXIgZGF0YSA9IGNhbWxfYmFfY3JlYXRlX2J1ZmZlcihraW5kLCBjYW1sX2JhX2dldF9zaXplKGRpbXMpKTtcbiAgcmV0dXJuIGNhbWxfYmFfY3JlYXRlX3Vuc2FmZShraW5kLCBsYXlvdXQsIGRpbXMsIGRhdGEpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JhX2NoYW5nZV9sYXlvdXRcbi8vUmVxdWlyZXM6IGNhbWxfYmFfY3JlYXRlX3Vuc2FmZVxuZnVuY3Rpb24gY2FtbF9iYV9jaGFuZ2VfbGF5b3V0KGJhLCBsYXlvdXQpIHtcbiAgaWYoYmEubGF5b3V0ID09IGxheW91dCkgcmV0dXJuIGJhO1xuICB2YXIgbmV3X2RpbXMgPSBbXVxuICBmb3IodmFyIGkgPSAwOyBpIDwgYmEuZGltcy5sZW5ndGg7IGkrKykgbmV3X2RpbXNbaV0gPSBiYS5kaW1zW2JhLmRpbXMubGVuZ3RoIC0gaSAtIDFdO1xuICByZXR1cm4gY2FtbF9iYV9jcmVhdGVfdW5zYWZlKGJhLmtpbmQsIGxheW91dCwgbmV3X2RpbXMsIGJhLmRhdGEpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JhX2tpbmRcbmZ1bmN0aW9uIGNhbWxfYmFfa2luZChiYSkge1xuICByZXR1cm4gYmEua2luZDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9iYV9sYXlvdXRcbmZ1bmN0aW9uIGNhbWxfYmFfbGF5b3V0KGJhKSB7XG4gIHJldHVybiBiYS5sYXlvdXQ7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmFfbnVtX2RpbXNcbmZ1bmN0aW9uIGNhbWxfYmFfbnVtX2RpbXMoYmEpIHtcbiAgcmV0dXJuIGJhLmRpbXMubGVuZ3RoO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JhX2RpbVxuLy9SZXF1aXJlczogY2FtbF9pbnZhbGlkX2FyZ3VtZW50XG5mdW5jdGlvbiBjYW1sX2JhX2RpbShiYSwgaSkge1xuICBpZiAoaSA8IDAgfHwgaSA+PSBiYS5kaW1zLmxlbmd0aClcbiAgICBjYW1sX2ludmFsaWRfYXJndW1lbnQoXCJCaWdhcnJheS5kaW1cIik7XG4gIHJldHVybiBiYS5kaW1zW2ldO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JhX2RpbV8xXG4vL1JlcXVpcmVzOiBjYW1sX2JhX2RpbVxuZnVuY3Rpb24gY2FtbF9iYV9kaW1fMShiYSkge1xuICByZXR1cm4gY2FtbF9iYV9kaW0oYmEsIDApO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JhX2RpbV8yXG4vL1JlcXVpcmVzOiBjYW1sX2JhX2RpbVxuZnVuY3Rpb24gY2FtbF9iYV9kaW1fMihiYSkge1xuICByZXR1cm4gY2FtbF9iYV9kaW0oYmEsIDEpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JhX2RpbV8zXG4vL1JlcXVpcmVzOiBjYW1sX2JhX2RpbVxuZnVuY3Rpb24gY2FtbF9iYV9kaW1fMyhiYSkge1xuICByZXR1cm4gY2FtbF9iYV9kaW0oYmEsIDIpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JhX2dldF9nZW5lcmljXG4vL1JlcXVpcmVzOiBjYW1sX2pzX2Zyb21fYXJyYXlcbmZ1bmN0aW9uIGNhbWxfYmFfZ2V0X2dlbmVyaWMoYmEsIGkpIHtcbiAgdmFyIG9mcyA9IGJhLm9mZnNldChjYW1sX2pzX2Zyb21fYXJyYXkoaSkpO1xuICByZXR1cm4gYmEuZ2V0KG9mcyk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmFfdWludDhfZ2V0MTZcbi8vUmVxdWlyZXM6IGNhbWxfYXJyYXlfYm91bmRfZXJyb3JcbmZ1bmN0aW9uIGNhbWxfYmFfdWludDhfZ2V0MTYoYmEsIGkwKSB7XG4gIHZhciBvZnMgPSBiYS5vZmZzZXQoaTApO1xuICBpZihvZnMgKyAxID49IGJhLmRhdGEubGVuZ3RoKSBjYW1sX2FycmF5X2JvdW5kX2Vycm9yKCk7XG4gIHZhciBiMSA9IGJhLmdldChvZnMpO1xuICB2YXIgYjIgPSBiYS5nZXQob2ZzICsgMSk7XG4gIHJldHVybiAoYjEgfCAoYjIgPDwgOCkpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JhX3VpbnQ4X2dldDMyXG4vL1JlcXVpcmVzOiBjYW1sX2FycmF5X2JvdW5kX2Vycm9yXG5mdW5jdGlvbiBjYW1sX2JhX3VpbnQ4X2dldDMyKGJhLCBpMCkge1xuICB2YXIgb2ZzID0gYmEub2Zmc2V0KGkwKTtcbiAgaWYob2ZzICsgMyA+PSBiYS5kYXRhLmxlbmd0aCkgY2FtbF9hcnJheV9ib3VuZF9lcnJvcigpO1xuICB2YXIgYjEgPSBiYS5nZXQob2ZzKzApO1xuICB2YXIgYjIgPSBiYS5nZXQob2ZzKzEpO1xuICB2YXIgYjMgPSBiYS5nZXQob2ZzKzIpO1xuICB2YXIgYjQgPSBiYS5nZXQob2ZzKzMpO1xuICByZXR1cm4gKCAoYjEgPDwgMCkgIHxcbiAgICAgICAgICAgKGIyIDw8IDgpICB8XG4gICAgICAgICAgIChiMyA8PCAxNikgfFxuICAgICAgICAgICAoYjQgPDwgMjQpICk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmFfdWludDhfZ2V0NjRcbi8vUmVxdWlyZXM6IGNhbWxfYXJyYXlfYm91bmRfZXJyb3IsIGNhbWxfaW50NjRfb2ZfYnl0ZXNcbmZ1bmN0aW9uIGNhbWxfYmFfdWludDhfZ2V0NjQoYmEsIGkwKSB7XG4gIHZhciBvZnMgPSBiYS5vZmZzZXQoaTApO1xuICBpZihvZnMgKyA3ID49IGJhLmRhdGEubGVuZ3RoKSBjYW1sX2FycmF5X2JvdW5kX2Vycm9yKCk7XG4gIHZhciBiMSA9IGJhLmdldChvZnMrMCk7XG4gIHZhciBiMiA9IGJhLmdldChvZnMrMSk7XG4gIHZhciBiMyA9IGJhLmdldChvZnMrMik7XG4gIHZhciBiNCA9IGJhLmdldChvZnMrMyk7XG4gIHZhciBiNSA9IGJhLmdldChvZnMrNCk7XG4gIHZhciBiNiA9IGJhLmdldChvZnMrNSk7XG4gIHZhciBiNyA9IGJhLmdldChvZnMrNik7XG4gIHZhciBiOCA9IGJhLmdldChvZnMrNyk7XG4gIHJldHVybiBjYW1sX2ludDY0X29mX2J5dGVzKFtiOCxiNyxiNixiNSxiNCxiMyxiMixiMV0pO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JhX2dldF8xXG5mdW5jdGlvbiBjYW1sX2JhX2dldF8xKGJhLCBpMCkge1xuICByZXR1cm4gYmEuZ2V0KGJhLm9mZnNldChpMCkpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JhX2dldF8yXG5mdW5jdGlvbiBjYW1sX2JhX2dldF8yKGJhLCBpMCwgaTEpIHtcbiAgcmV0dXJuIGJhLmdldChiYS5vZmZzZXQoW2kwLGkxXSkpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JhX2dldF8zXG5mdW5jdGlvbiBjYW1sX2JhX2dldF8zKGJhLCBpMCwgaTEsIGkyKSB7XG4gIHJldHVybiBiYS5nZXQoYmEub2Zmc2V0KFtpMCxpMSxpMl0pKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9iYV9zZXRfZ2VuZXJpY1xuLy9SZXF1aXJlczogY2FtbF9qc19mcm9tX2FycmF5XG5mdW5jdGlvbiBjYW1sX2JhX3NldF9nZW5lcmljKGJhLCBpLCB2KSB7XG4gIGJhLnNldChiYS5vZmZzZXQoY2FtbF9qc19mcm9tX2FycmF5KGkpKSwgdik7XG4gIHJldHVybiAwXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmFfdWludDhfc2V0MTZcbi8vUmVxdWlyZXM6IGNhbWxfYXJyYXlfYm91bmRfZXJyb3JcbmZ1bmN0aW9uIGNhbWxfYmFfdWludDhfc2V0MTYoYmEsIGkwLCB2KSB7XG4gIHZhciBvZnMgPSBiYS5vZmZzZXQoaTApO1xuICBpZihvZnMgKyAxID49IGJhLmRhdGEubGVuZ3RoKSBjYW1sX2FycmF5X2JvdW5kX2Vycm9yKCk7XG4gIGJhLnNldChvZnMrMCwgIHYgICAgICAgICYgMHhmZik7XG4gIGJhLnNldChvZnMrMSwgKHYgPj4+IDgpICYgMHhmZik7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JhX3VpbnQ4X3NldDMyXG4vL1JlcXVpcmVzOiBjYW1sX2FycmF5X2JvdW5kX2Vycm9yXG5mdW5jdGlvbiBjYW1sX2JhX3VpbnQ4X3NldDMyKGJhLCBpMCwgdikge1xuICB2YXIgb2ZzID0gYmEub2Zmc2V0KGkwKTtcbiAgaWYob2ZzICsgMyA+PSBiYS5kYXRhLmxlbmd0aCkgY2FtbF9hcnJheV9ib3VuZF9lcnJvcigpO1xuICBiYS5zZXQob2ZzKzAsICB2ICAgICAgICAgJiAweGZmKTtcbiAgYmEuc2V0KG9mcysxLCAodiA+Pj4gOCkgICYgMHhmZik7XG4gIGJhLnNldChvZnMrMiwgKHYgPj4+IDE2KSAmIDB4ZmYpO1xuICBiYS5zZXQob2ZzKzMsICh2ID4+PiAyNCkgJiAweGZmKTtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmFfdWludDhfc2V0NjRcbi8vUmVxdWlyZXM6IGNhbWxfYXJyYXlfYm91bmRfZXJyb3IsIGNhbWxfaW50NjRfdG9fYnl0ZXNcbmZ1bmN0aW9uIGNhbWxfYmFfdWludDhfc2V0NjQoYmEsIGkwLCB2KSB7XG4gIHZhciBvZnMgPSBiYS5vZmZzZXQoaTApO1xuICBpZihvZnMgKyA3ID49IGJhLmRhdGEubGVuZ3RoKSBjYW1sX2FycmF5X2JvdW5kX2Vycm9yKCk7XG4gIHZhciB2ID0gY2FtbF9pbnQ2NF90b19ieXRlcyh2KTtcbiAgZm9yKHZhciBpID0gMDsgaSA8IDg7IGkrKykgYmEuc2V0KG9mcytpLCB2WzctaV0pXG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JhX3NldF8xXG5mdW5jdGlvbiBjYW1sX2JhX3NldF8xKGJhLCBpMCwgdikge1xuICBiYS5zZXQoYmEub2Zmc2V0KGkwKSwgdik7XG4gIHJldHVybiAwXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmFfc2V0XzJcbmZ1bmN0aW9uIGNhbWxfYmFfc2V0XzIoYmEsIGkwLCBpMSwgdikge1xuICBiYS5zZXQoYmEub2Zmc2V0KFtpMCxpMV0pLCB2KTtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmFfc2V0XzNcbmZ1bmN0aW9uIGNhbWxfYmFfc2V0XzMoYmEsIGkwLCBpMSwgaTIsIHYpIHtcbiAgYmEuc2V0KGJhLm9mZnNldChbaTAsaTEsaTJdKSwgdik7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JhX2ZpbGxcbmZ1bmN0aW9uIGNhbWxfYmFfZmlsbChiYSwgdikge1xuICBiYS5maWxsKHYpO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9iYV9ibGl0XG4vL1JlcXVpcmVzOiBjYW1sX2ludmFsaWRfYXJndW1lbnRcbmZ1bmN0aW9uIGNhbWxfYmFfYmxpdChzcmMsIGRzdCkge1xuICBpZiAoZHN0LmRpbXMubGVuZ3RoICE9IHNyYy5kaW1zLmxlbmd0aClcbiAgICBjYW1sX2ludmFsaWRfYXJndW1lbnQoXCJCaWdhcnJheS5ibGl0OiBkaW1lbnNpb24gbWlzbWF0Y2hcIik7XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgZHN0LmRpbXMubGVuZ3RoOyBpKyspXG4gICAgaWYgKGRzdC5kaW1zW2ldICE9IHNyYy5kaW1zW2ldKVxuICAgICAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiQmlnYXJyYXkuYmxpdDogZGltZW5zaW9uIG1pc21hdGNoXCIpO1xuICBkc3QuZGF0YS5zZXQoc3JjLmRhdGEpO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9iYV9zdWJcbi8vUmVxdWlyZXM6IGNhbWxfaW52YWxpZF9hcmd1bWVudCwgY2FtbF9iYV9jcmVhdGVfdW5zYWZlLCBjYW1sX2JhX2dldF9zaXplXG4vL1JlcXVpcmVzOiBjYW1sX2JhX2dldF9zaXplX3Blcl9lbGVtZW50XG5mdW5jdGlvbiBjYW1sX2JhX3N1YihiYSwgb2ZzLCBsZW4pIHtcbiAgdmFyIGNoYW5nZWRfZGltO1xuICB2YXIgbXVsID0gMTtcbiAgaWYgKGJhLmxheW91dCA9PSAwKSB7XG4gICAgZm9yICh2YXIgaSA9IDE7IGkgPCBiYS5kaW1zLmxlbmd0aDsgaSsrKVxuICAgICAgbXVsID0gbXVsICogYmEuZGltc1tpXTtcbiAgICBjaGFuZ2VkX2RpbSA9IDA7XG4gIH0gZWxzZSB7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCAoYmEuZGltcy5sZW5ndGggLSAxKTsgaSsrKVxuICAgICAgbXVsID0gbXVsICogYmEuZGltc1tpXTtcbiAgICBjaGFuZ2VkX2RpbSA9IGJhLmRpbXMubGVuZ3RoIC0gMTtcbiAgICBvZnMgPSBvZnMgLSAxO1xuICB9XG4gIGlmIChvZnMgPCAwIHx8IGxlbiA8IDAgfHwgKG9mcyArIGxlbikgPiBiYS5kaW1zW2NoYW5nZWRfZGltXSl7XG4gICAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiQmlnYXJyYXkuc3ViOiBiYWQgc3ViLWFycmF5XCIpO1xuICB9XG4gIHZhciBuZXdfZGltcyA9IFtdO1xuICBmb3IgKHZhciBpID0gMDsgaSA8IGJhLmRpbXMubGVuZ3RoOyBpKyspXG4gICAgbmV3X2RpbXNbaV0gPSBiYS5kaW1zW2ldO1xuICBuZXdfZGltc1tjaGFuZ2VkX2RpbV0gPSBsZW47XG4gIG11bCAqPSBjYW1sX2JhX2dldF9zaXplX3Blcl9lbGVtZW50KGJhLmtpbmQpO1xuICB2YXIgbmV3X2RhdGEgPSBiYS5kYXRhLnN1YmFycmF5KG9mcyAqIG11bCwgKG9mcyArIGxlbikgKiBtdWwpO1xuICByZXR1cm4gY2FtbF9iYV9jcmVhdGVfdW5zYWZlKGJhLmtpbmQsIGJhLmxheW91dCwgbmV3X2RpbXMsIG5ld19kYXRhKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9iYV9zbGljZVxuLy9SZXF1aXJlczogY2FtbF9qc19mcm9tX2FycmF5LCBjYW1sX2JhX2NyZWF0ZV91bnNhZmUsIGNhbWxfaW52YWxpZF9hcmd1bWVudCwgY2FtbF9iYV9nZXRfc2l6ZVxuLy9SZXF1aXJlczogY2FtbF9iYV9nZXRfc2l6ZV9wZXJfZWxlbWVudFxuZnVuY3Rpb24gY2FtbF9iYV9zbGljZShiYSwgdmluZCkge1xuICB2aW5kID0gY2FtbF9qc19mcm9tX2FycmF5KHZpbmQpO1xuICB2YXIgbnVtX2luZHMgPSB2aW5kLmxlbmd0aDtcbiAgdmFyIGluZGV4ID0gW107XG4gIHZhciBzdWJfZGltcyA9IFtdO1xuICB2YXIgb2ZzO1xuXG4gIGlmIChudW1faW5kcyA+IGJhLmRpbXMubGVuZ3RoKVxuICAgIGNhbWxfaW52YWxpZF9hcmd1bWVudChcIkJpZ2FycmF5LnNsaWNlOiB0b28gbWFueSBpbmRpY2VzXCIpO1xuXG4gIC8vIENvbXB1dGUgb2Zmc2V0IGFuZCBjaGVjayBib3VuZHNcbiAgaWYgKGJhLmxheW91dCA9PSAwKSB7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBudW1faW5kczsgaSsrKVxuICAgICAgaW5kZXhbaV0gPSB2aW5kW2ldO1xuICAgIGZvciAoOyBpIDwgYmEuZGltcy5sZW5ndGg7IGkrKylcbiAgICAgIGluZGV4W2ldID0gMDtcbiAgICBzdWJfZGltcyA9IGJhLmRpbXMuc2xpY2UobnVtX2luZHMpO1xuICB9IGVsc2Uge1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbnVtX2luZHM7IGkrKylcbiAgICAgIGluZGV4W2JhLmRpbXMubGVuZ3RoIC0gbnVtX2luZHMgKyBpXSA9IHZpbmRbaV07XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBiYS5kaW1zLmxlbmd0aCAtIG51bV9pbmRzOyBpKyspXG4gICAgICBpbmRleFtpXSA9IDE7XG4gICAgc3ViX2RpbXMgPSBiYS5kaW1zLnNsaWNlKDAsIGJhLmRpbXMubGVuZ3RoIC0gbnVtX2luZHMpO1xuICB9XG4gIG9mcyA9IGJhLm9mZnNldChpbmRleCk7XG4gIHZhciBzaXplID0gY2FtbF9iYV9nZXRfc2l6ZShzdWJfZGltcyk7XG4gIHZhciBzaXplX3Blcl9lbGVtZW50ID0gY2FtbF9iYV9nZXRfc2l6ZV9wZXJfZWxlbWVudChiYS5raW5kKTtcbiAgdmFyIG5ld19kYXRhID0gYmEuZGF0YS5zdWJhcnJheShvZnMgKiBzaXplX3Blcl9lbGVtZW50LCAob2ZzICsgc2l6ZSkgKiBzaXplX3Blcl9lbGVtZW50KTtcbiAgcmV0dXJuIGNhbWxfYmFfY3JlYXRlX3Vuc2FmZShiYS5raW5kLCBiYS5sYXlvdXQsIHN1Yl9kaW1zLCBuZXdfZGF0YSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmFfcmVzaGFwZVxuLy9SZXF1aXJlczogY2FtbF9qc19mcm9tX2FycmF5LCBjYW1sX2ludmFsaWRfYXJndW1lbnQsIGNhbWxfYmFfY3JlYXRlX3Vuc2FmZSwgY2FtbF9iYV9nZXRfc2l6ZVxuZnVuY3Rpb24gY2FtbF9iYV9yZXNoYXBlKGJhLCB2aW5kKSB7XG4gIHZpbmQgPSBjYW1sX2pzX2Zyb21fYXJyYXkodmluZCk7XG4gIHZhciBuZXdfZGltID0gW107XG4gIHZhciBudW1fZGltcyA9IHZpbmQubGVuZ3RoO1xuXG4gIGlmIChudW1fZGltcyA8IDAgfHwgbnVtX2RpbXMgPiAxNil7XG4gICAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiQmlnYXJyYXkucmVzaGFwZTogYmFkIG51bWJlciBvZiBkaW1lbnNpb25zXCIpO1xuICB9XG4gIHZhciBudW1fZWx0cyA9IDE7XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgbnVtX2RpbXM7IGkrKykge1xuICAgIG5ld19kaW1baV0gPSB2aW5kW2ldO1xuICAgIGlmIChuZXdfZGltW2ldIDwgMClcbiAgICAgIGNhbWxfaW52YWxpZF9hcmd1bWVudChcIkJpZ2FycmF5LnJlc2hhcGU6IG5lZ2F0aXZlIGRpbWVuc2lvblwiKTtcbiAgICBudW1fZWx0cyA9IG51bV9lbHRzICogbmV3X2RpbVtpXTtcbiAgfVxuXG4gIHZhciBzaXplID0gY2FtbF9iYV9nZXRfc2l6ZShiYS5kaW1zKTtcbiAgLy8gQ2hlY2sgdGhhdCBzaXplcyBhZ3JlZVxuICBpZiAobnVtX2VsdHMgIT0gc2l6ZSlcbiAgICBjYW1sX2ludmFsaWRfYXJndW1lbnQoXCJCaWdhcnJheS5yZXNoYXBlOiBzaXplIG1pc21hdGNoXCIpO1xuICByZXR1cm4gY2FtbF9iYV9jcmVhdGVfdW5zYWZlKGJhLmtpbmQsIGJhLmxheW91dCwgbmV3X2RpbSwgYmEuZGF0YSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmFfc2VyaWFsaXplXG4vL1JlcXVpcmVzOiBjYW1sX2ludDY0X2JpdHNfb2ZfZmxvYXQsIGNhbWxfaW50NjRfdG9fYnl0ZXNcbi8vUmVxdWlyZXM6IGNhbWxfaW50MzJfYml0c19vZl9mbG9hdFxuZnVuY3Rpb24gY2FtbF9iYV9zZXJpYWxpemUod3JpdGVyLCBiYSwgc3opIHtcbiAgd3JpdGVyLndyaXRlKDMyLCBiYS5kaW1zLmxlbmd0aCk7XG4gIHdyaXRlci53cml0ZSgzMiwgKGJhLmtpbmQgfCAoYmEubGF5b3V0IDw8IDgpKSk7XG4gIGlmKGJhLmNhbWxfY3VzdG9tID09IFwiX2JpZ2FycjAyXCIpXG4gICAgZm9yKHZhciBpID0gMDsgaSA8IGJhLmRpbXMubGVuZ3RoOyBpKyspIHtcbiAgICAgIGlmKGJhLmRpbXNbaV0gPCAweGZmZmYpXG4gICAgICAgIHdyaXRlci53cml0ZSgxNiwgYmEuZGltc1tpXSk7XG4gICAgICBlbHNlIHtcbiAgICAgICAgd3JpdGVyLndyaXRlKDE2LCAweGZmZmYpO1xuICAgICAgICB3cml0ZXIud3JpdGUoMzIsIDApO1xuICAgICAgICB3cml0ZXIud3JpdGUoMzIsIGJhLmRpbXNbaV0pO1xuICAgICAgfVxuICAgIH1cbiAgZWxzZVxuICAgIGZvcih2YXIgaSA9IDA7IGkgPCBiYS5kaW1zLmxlbmd0aDsgaSsrKSB3cml0ZXIud3JpdGUoMzIsYmEuZGltc1tpXSlcbiAgc3dpdGNoKGJhLmtpbmQpe1xuICBjYXNlIDI6ICAvL0ludDhBcnJheVxuICBjYXNlIDM6ICAvL1VpbnQ4QXJyYXlcbiAgY2FzZSAxMjogLy9VaW50OEFycmF5XG4gICAgZm9yKHZhciBpID0gMDsgaSA8IGJhLmRhdGEubGVuZ3RoOyBpKyspe1xuICAgICAgd3JpdGVyLndyaXRlKDgsIGJhLmRhdGFbaV0pO1xuICAgIH1cbiAgICBicmVhaztcbiAgY2FzZSA0OiAgLy8gSW50MTZBcnJheVxuICBjYXNlIDU6ICAvLyBVaW50MTZBcnJheVxuICAgIGZvcih2YXIgaSA9IDA7IGkgPCBiYS5kYXRhLmxlbmd0aDsgaSsrKXtcbiAgICAgIHdyaXRlci53cml0ZSgxNiwgYmEuZGF0YVtpXSk7XG4gICAgfVxuICAgIGJyZWFrO1xuICBjYXNlIDY6ICAvLyBJbnQzMkFycmF5IChpbnQzMilcbiAgICBmb3IodmFyIGkgPSAwOyBpIDwgYmEuZGF0YS5sZW5ndGg7IGkrKyl7XG4gICAgICB3cml0ZXIud3JpdGUoMzIsIGJhLmRhdGFbaV0pO1xuICAgIH1cbiAgICBicmVhaztcbiAgY2FzZSA4OiAgLy8gSW50MzJBcnJheSAoaW50KVxuICBjYXNlIDk6ICAvLyBJbnQzMkFycmF5IChuYXRpdmVpbnQpXG4gICAgd3JpdGVyLndyaXRlKDgsMCk7XG4gICAgZm9yKHZhciBpID0gMDsgaSA8IGJhLmRhdGEubGVuZ3RoOyBpKyspe1xuICAgICAgd3JpdGVyLndyaXRlKDMyLCBiYS5kYXRhW2ldKTtcbiAgICB9XG4gICAgYnJlYWs7XG4gIGNhc2UgNzogIC8vIEludDMyQXJyYXkgKGludDY0KVxuICAgIGZvcih2YXIgaSA9IDA7IGkgPCBiYS5kYXRhLmxlbmd0aCAvIDI7IGkrKyl7XG4gICAgICB2YXIgYiA9IGNhbWxfaW50NjRfdG9fYnl0ZXMoYmEuZ2V0KGkpKTtcbiAgICAgIGZvciAodmFyIGogPSAwOyBqIDwgODsgaisrKSB3cml0ZXIud3JpdGUgKDgsIGJbal0pO1xuICAgIH1cbiAgICBicmVhaztcbiAgY2FzZSAxOiAgLy8gRmxvYXQ2NEFycmF5XG4gICAgZm9yKHZhciBpID0gMDsgaSA8IGJhLmRhdGEubGVuZ3RoOyBpKyspe1xuICAgICAgdmFyIGIgPSBjYW1sX2ludDY0X3RvX2J5dGVzKGNhbWxfaW50NjRfYml0c19vZl9mbG9hdChiYS5nZXQoaSkpKTtcbiAgICAgIGZvciAodmFyIGogPSAwOyBqIDwgODsgaisrKSB3cml0ZXIud3JpdGUgKDgsIGJbal0pO1xuICAgIH1cbiAgICBicmVhaztcbiAgY2FzZSAwOiAgLy8gRmxvYXQzMkFycmF5XG4gICAgZm9yKHZhciBpID0gMDsgaSA8IGJhLmRhdGEubGVuZ3RoOyBpKyspe1xuICAgICAgdmFyIGIgPSBjYW1sX2ludDMyX2JpdHNfb2ZfZmxvYXQoYmEuZ2V0KGkpKTtcbiAgICAgIHdyaXRlci53cml0ZSgzMiwgYik7XG4gICAgfVxuICAgIGJyZWFrO1xuICBjYXNlIDEwOiAvLyBGbG9hdDMyQXJyYXkgKGNvbXBsZXgzMilcbiAgICBmb3IodmFyIGkgPSAwOyBpIDwgYmEuZGF0YS5sZW5ndGggLyAyOyBpKyspe1xuICAgICAgdmFyIGogPSBiYS5nZXQoaSk7XG4gICAgICB3cml0ZXIud3JpdGUoMzIsIGNhbWxfaW50MzJfYml0c19vZl9mbG9hdChqWzFdKSk7XG4gICAgICB3cml0ZXIud3JpdGUoMzIsIGNhbWxfaW50MzJfYml0c19vZl9mbG9hdChqWzJdKSk7XG4gICAgfVxuICAgIGJyZWFrO1xuICBjYXNlIDExOiAvLyBGbG9hdDY0QXJyYXkgKGNvbXBsZXg2NClcbiAgICBmb3IodmFyIGkgPSAwOyBpIDwgYmEuZGF0YS5sZW5ndGggLyAyOyBpKyspe1xuICAgICAgdmFyIGNvbXBsZXggPSBiYS5nZXQoaSk7XG4gICAgICB2YXIgYiA9IGNhbWxfaW50NjRfdG9fYnl0ZXMoY2FtbF9pbnQ2NF9iaXRzX29mX2Zsb2F0KGNvbXBsZXhbMV0pKTtcbiAgICAgIGZvciAodmFyIGogPSAwOyBqIDwgODsgaisrKSB3cml0ZXIud3JpdGUgKDgsIGJbal0pO1xuICAgICAgdmFyIGIgPSBjYW1sX2ludDY0X3RvX2J5dGVzKGNhbWxfaW50NjRfYml0c19vZl9mbG9hdChjb21wbGV4WzJdKSk7XG4gICAgICBmb3IgKHZhciBqID0gMDsgaiA8IDg7IGorKykgd3JpdGVyLndyaXRlICg4LCBiW2pdKTtcbiAgICB9XG4gICAgYnJlYWs7XG4gIH1cbiAgc3pbMF0gPSAoNCArIGJhLmRpbXMubGVuZ3RoKSAqIDQ7XG4gIHN6WzFdID0gKDQgKyBiYS5kaW1zLmxlbmd0aCkgKiA4O1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JhX2Rlc2VyaWFsaXplXG4vL1JlcXVpcmVzOiBjYW1sX2JhX2NyZWF0ZV91bnNhZmUsIGNhbWxfZmFpbHdpdGhcbi8vUmVxdWlyZXM6IGNhbWxfYmFfZ2V0X3NpemVcbi8vUmVxdWlyZXM6IGNhbWxfaW50NjRfb2ZfYnl0ZXMsIGNhbWxfaW50NjRfZmxvYXRfb2ZfYml0c1xuLy9SZXF1aXJlczogY2FtbF9pbnQzMl9mbG9hdF9vZl9iaXRzXG4vL1JlcXVpcmVzOiBjYW1sX2JhX2NyZWF0ZV9idWZmZXJcbmZ1bmN0aW9uIGNhbWxfYmFfZGVzZXJpYWxpemUocmVhZGVyLCBzeiwgbmFtZSl7XG4gIHZhciBudW1fZGltcyA9IHJlYWRlci5yZWFkMzJzKCk7XG4gIGlmIChudW1fZGltcyA8IDAgfHwgbnVtX2RpbXMgPiAxNilcbiAgICBjYW1sX2ZhaWx3aXRoKFwiaW5wdXRfdmFsdWU6IHdyb25nIG51bWJlciBvZiBiaWdhcnJheSBkaW1lbnNpb25zXCIpO1xuICB2YXIgdGFnID0gcmVhZGVyLnJlYWQzMnMoKTtcbiAgdmFyIGtpbmQgPSB0YWcgJiAweGZmXG4gIHZhciBsYXlvdXQgPSAodGFnID4+IDgpICYgMTtcbiAgdmFyIGRpbXMgPSBbXVxuICBpZihuYW1lID09IFwiX2JpZ2FycjAyXCIpXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBudW1fZGltczsgaSsrKSB7XG4gICAgICB2YXIgc2l6ZV9kaW0gPSByZWFkZXIucmVhZDE2dSgpO1xuICAgICAgaWYoc2l6ZV9kaW0gPT0gMHhmZmZmKXtcbiAgICAgICAgdmFyIHNpemVfZGltX2hpID0gcmVhZGVyLnJlYWQzMnUoKTtcbiAgICAgICAgdmFyIHNpemVfZGltX2xvID0gcmVhZGVyLnJlYWQzMnUoKTtcbiAgICAgICAgaWYoc2l6ZV9kaW1faGkgIT0gMClcbiAgICAgICAgICBjYW1sX2ZhaWx3aXRoKFwiaW5wdXRfdmFsdWU6IGJpZ2FycmF5IGRpbWVuc2lvbiBvdmVyZmxvdyBpbiAzMmJpdFwiKTtcbiAgICAgICAgc2l6ZV9kaW0gPSBzaXplX2RpbV9sbztcbiAgICAgIH1cbiAgICAgIGRpbXMucHVzaChzaXplX2RpbSk7XG4gICAgfVxuICBlbHNlXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBudW1fZGltczsgaSsrKSBkaW1zLnB1c2gocmVhZGVyLnJlYWQzMnUoKSk7XG4gIHZhciBzaXplID0gY2FtbF9iYV9nZXRfc2l6ZShkaW1zKTtcbiAgdmFyIGRhdGEgPSBjYW1sX2JhX2NyZWF0ZV9idWZmZXIoa2luZCwgc2l6ZSk7XG4gIHZhciBiYSA9IGNhbWxfYmFfY3JlYXRlX3Vuc2FmZShraW5kLCBsYXlvdXQsIGRpbXMsIGRhdGEpO1xuICBzd2l0Y2goa2luZCl7XG4gIGNhc2UgMjogIC8vSW50OEFycmF5XG4gICAgZm9yKHZhciBpID0gMDsgaSA8IHNpemU7IGkrKyl7XG4gICAgICBkYXRhW2ldID0gcmVhZGVyLnJlYWQ4cygpO1xuICAgIH1cbiAgICBicmVhaztcbiAgY2FzZSAzOiAgLy9VaW50OEFycmF5XG4gIGNhc2UgMTI6IC8vVWludDhBcnJheVxuICAgIGZvcih2YXIgaSA9IDA7IGkgPCBzaXplOyBpKyspe1xuICAgICAgZGF0YVtpXSA9IHJlYWRlci5yZWFkOHUoKTtcbiAgICB9XG4gICAgYnJlYWs7XG4gIGNhc2UgNDogIC8vIEludDE2QXJyYXlcbiAgICBmb3IodmFyIGkgPSAwOyBpIDwgc2l6ZTsgaSsrKXtcbiAgICAgIGRhdGFbaV0gPSByZWFkZXIucmVhZDE2cygpO1xuICAgIH1cbiAgICBicmVhaztcbiAgY2FzZSA1OiAgLy8gVWludDE2QXJyYXlcbiAgICBmb3IodmFyIGkgPSAwOyBpIDwgc2l6ZTsgaSsrKXtcbiAgICAgIGRhdGFbaV0gPSByZWFkZXIucmVhZDE2dSgpO1xuICAgIH1cbiAgICBicmVhaztcbiAgY2FzZSA2OiAgLy8gSW50MzJBcnJheSAoaW50MzIpXG4gICAgZm9yKHZhciBpID0gMDsgaSA8IHNpemU7IGkrKyl7XG4gICAgICBkYXRhW2ldID0gcmVhZGVyLnJlYWQzMnMoKTtcbiAgICB9XG4gICAgYnJlYWs7XG4gIGNhc2UgODogIC8vIEludDMyQXJyYXkgKGludClcbiAgY2FzZSA5OiAgLy8gSW50MzJBcnJheSAobmF0aXZlaW50KVxuICAgIHZhciBzaXh0eSA9IHJlYWRlci5yZWFkOHUoKTtcbiAgICBpZihzaXh0eSkgY2FtbF9mYWlsd2l0aChcImlucHV0X3ZhbHVlOiBjYW5ub3QgcmVhZCBiaWdhcnJheSB3aXRoIDY0LWJpdCBPQ2FtbCBpbnRzXCIpO1xuICAgIGZvcih2YXIgaSA9IDA7IGkgPCBzaXplOyBpKyspe1xuICAgICAgZGF0YVtpXSA9IHJlYWRlci5yZWFkMzJzKCk7XG4gICAgfVxuICAgIGJyZWFrO1xuICBjYXNlIDc6IC8vIChpbnQ2NClcbiAgICB2YXIgdCA9IG5ldyBBcnJheSg4KTs7XG4gICAgZm9yKHZhciBpID0gMDsgaSA8IHNpemU7IGkrKyl7XG4gICAgICBmb3IgKHZhciBqID0gMDtqIDwgODtqKyspIHRbal0gPSByZWFkZXIucmVhZDh1KCk7XG4gICAgICB2YXIgaW50NjQgPSBjYW1sX2ludDY0X29mX2J5dGVzKHQpO1xuICAgICAgYmEuc2V0KGksaW50NjQpO1xuICAgIH1cbiAgICBicmVhaztcbiAgY2FzZSAxOiAgLy8gRmxvYXQ2NEFycmF5XG4gICAgdmFyIHQgPSBuZXcgQXJyYXkoOCk7O1xuICAgIGZvcih2YXIgaSA9IDA7IGkgPCBzaXplOyBpKyspe1xuICAgICAgZm9yICh2YXIgaiA9IDA7aiA8IDg7aisrKSB0W2pdID0gcmVhZGVyLnJlYWQ4dSgpO1xuICAgICAgdmFyIGYgPSBjYW1sX2ludDY0X2Zsb2F0X29mX2JpdHMoY2FtbF9pbnQ2NF9vZl9ieXRlcyh0KSk7XG4gICAgICBiYS5zZXQoaSxmKTtcbiAgICB9XG4gICAgYnJlYWs7XG4gIGNhc2UgMDogIC8vIEZsb2F0MzJBcnJheVxuICAgIGZvcih2YXIgaSA9IDA7IGkgPCBzaXplOyBpKyspe1xuICAgICAgdmFyIGYgPSBjYW1sX2ludDMyX2Zsb2F0X29mX2JpdHMocmVhZGVyLnJlYWQzMnMoKSk7XG4gICAgICBiYS5zZXQoaSxmKTtcbiAgICB9XG4gICAgYnJlYWs7XG4gIGNhc2UgMTA6IC8vIEZsb2F0MzJBcnJheSAoY29tcGxleDMyKVxuICAgIGZvcih2YXIgaSA9IDA7IGkgPCBzaXplOyBpKyspe1xuICAgICAgdmFyIHJlID0gY2FtbF9pbnQzMl9mbG9hdF9vZl9iaXRzKHJlYWRlci5yZWFkMzJzKCkpO1xuICAgICAgdmFyIGltID0gY2FtbF9pbnQzMl9mbG9hdF9vZl9iaXRzKHJlYWRlci5yZWFkMzJzKCkpO1xuICAgICAgYmEuc2V0KGksWzI1NCxyZSxpbV0pO1xuICAgIH1cbiAgICBicmVhaztcbiAgY2FzZSAxMTogLy8gRmxvYXQ2NEFycmF5IChjb21wbGV4NjQpXG4gICAgdmFyIHQgPSBuZXcgQXJyYXkoOCk7O1xuICAgIGZvcih2YXIgaSA9IDA7IGkgPCBzaXplOyBpKyspe1xuICAgICAgZm9yICh2YXIgaiA9IDA7aiA8IDg7aisrKSB0W2pdID0gcmVhZGVyLnJlYWQ4dSgpO1xuICAgICAgdmFyIHJlID0gY2FtbF9pbnQ2NF9mbG9hdF9vZl9iaXRzKGNhbWxfaW50NjRfb2ZfYnl0ZXModCkpO1xuICAgICAgZm9yICh2YXIgaiA9IDA7aiA8IDg7aisrKSB0W2pdID0gcmVhZGVyLnJlYWQ4dSgpO1xuICAgICAgdmFyIGltID0gY2FtbF9pbnQ2NF9mbG9hdF9vZl9iaXRzKGNhbWxfaW50NjRfb2ZfYnl0ZXModCkpO1xuICAgICAgYmEuc2V0KGksWzI1NCxyZSxpbV0pO1xuICAgIH1cbiAgICBicmVha1xuICB9XG4gIHN6WzBdID0gKDQgKyBudW1fZGltcykgKiA0O1xuICByZXR1cm4gY2FtbF9iYV9jcmVhdGVfdW5zYWZlKGtpbmQsIGxheW91dCwgZGltcywgZGF0YSk7XG59XG5cbi8vRGVwcmVjYXRlZFxuLy9Qcm92aWRlczogY2FtbF9iYV9jcmVhdGVfZnJvbVxuLy9SZXF1aXJlczogY2FtbF9iYV9jcmVhdGVfdW5zYWZlLCBjYW1sX2ludmFsaWRfYXJndW1lbnQsIGNhbWxfYmFfZ2V0X3NpemVfcGVyX2VsZW1lbnRcbmZ1bmN0aW9uIGNhbWxfYmFfY3JlYXRlX2Zyb20oZGF0YTEsIGRhdGEyLCBqc3R5cCwga2luZCwgbGF5b3V0LCBkaW1zKXtcbiAgaWYoZGF0YTIgfHwgY2FtbF9iYV9nZXRfc2l6ZV9wZXJfZWxlbWVudChraW5kKSA9PSAyKXtcbiAgICBjYW1sX2ludmFsaWRfYXJndW1lbnQoXCJjYW1sX2JhX2NyZWF0ZV9mcm9tOiB1c2UgcmV0dXJuIGNhbWxfYmFfY3JlYXRlX3Vuc2FmZVwiKTtcbiAgfVxuICByZXR1cm4gY2FtbF9iYV9jcmVhdGVfdW5zYWZlKGtpbmQsIGxheW91dCwgZGltcywgZGF0YTEpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JhX2hhc2ggY29uc3Rcbi8vUmVxdWlyZXM6IGNhbWxfYmFfZ2V0X3NpemUsIGNhbWxfaGFzaF9taXhfaW50LCBjYW1sX2hhc2hfbWl4X2Zsb2F0XG5mdW5jdGlvbiBjYW1sX2JhX2hhc2goYmEpe1xuICB2YXIgbnVtX2VsdHMgPSBjYW1sX2JhX2dldF9zaXplKGJhLmRpbXMpO1xuICB2YXIgaCA9IDA7XG4gIHN3aXRjaChiYS5raW5kKXtcbiAgY2FzZSAyOiAgLy9JbnQ4QXJyYXlcbiAgY2FzZSAzOiAgLy9VaW50OEFycmF5XG4gIGNhc2UgMTI6IC8vVWludDhBcnJheVxuICAgIGlmKG51bV9lbHRzID4gMjU2KSBudW1fZWx0cyA9IDI1NjtcbiAgICB2YXIgdyA9IDAsIGkgPTA7XG4gICAgZm9yKGkgPSAwOyBpICsgNCA8PSBiYS5kYXRhLmxlbmd0aDsgaSs9NCl7XG4gICAgICB3ID0gYmEuZGF0YVtpKzBdIHwgKGJhLmRhdGFbaSsxXSA8PCA4KSB8IChiYS5kYXRhW2krMl0gPDwgMTYpIHwgKGJhLmRhdGFbaSszXSA8PCAyNCk7XG4gICAgICBoID0gY2FtbF9oYXNoX21peF9pbnQoaCx3KTtcbiAgICB9XG4gICAgdyA9IDA7XG4gICAgc3dpdGNoIChudW1fZWx0cyAmIDMpIHtcbiAgICBjYXNlIDM6IHcgID0gYmEuZGF0YVtpKzJdIDw8IDE2OyAgICAvKiBmYWxsdGhyb3VnaCAqL1xuICAgIGNhc2UgMjogdyB8PSBiYS5kYXRhW2krMV0gPDwgODsgICAgIC8qIGZhbGx0aHJvdWdoICovXG4gICAgY2FzZSAxOiB3IHw9IGJhLmRhdGFbaSswXTtcbiAgICAgIGggPSBjYW1sX2hhc2hfbWl4X2ludChoLCB3KTtcbiAgICB9XG4gICAgYnJlYWs7XG4gIGNhc2UgNDogIC8vIEludDE2QXJyYXlcbiAgY2FzZSA1OiAgLy8gVWludDE2QXJyYXlcbiAgICBpZihudW1fZWx0cyA+IDEyOCkgbnVtX2VsdHMgPSAxMjg7XG4gICAgdmFyIHcgPSAwLCBpID0wO1xuICAgIGZvcihpID0gMDsgaSArIDIgPD0gYmEuZGF0YS5sZW5ndGg7IGkrPTIpe1xuICAgICAgdyA9IGJhLmRhdGFbaSswXSB8IChiYS5kYXRhW2krMV0gPDwgMTYpO1xuICAgICAgaCA9IGNhbWxfaGFzaF9taXhfaW50KGgsdyk7XG4gICAgfVxuICAgIGlmICgobnVtX2VsdHMgJiAxKSAhPSAwKVxuICAgICAgaCA9IGNhbWxfaGFzaF9taXhfaW50KGgsIGJhLmRhdGFbaV0pO1xuICAgIGJyZWFrO1xuICBjYXNlIDY6ICAvLyBJbnQzMkFycmF5IChpbnQzMilcbiAgICBpZiAobnVtX2VsdHMgPiA2NCkgbnVtX2VsdHMgPSA2NDtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IG51bV9lbHRzOyBpKyspIGggPSBjYW1sX2hhc2hfbWl4X2ludChoLCBiYS5kYXRhW2ldKTtcbiAgICBicmVhaztcbiAgY2FzZSA4OiAgLy8gSW50MzJBcnJheSAoaW50KVxuICBjYXNlIDk6ICAvLyBJbnQzMkFycmF5IChuYXRpdmVpbnQpXG4gICAgaWYgKG51bV9lbHRzID4gNjQpIG51bV9lbHRzID0gNjQ7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBudW1fZWx0czsgaSsrKSBoID0gY2FtbF9oYXNoX21peF9pbnQoaCwgYmEuZGF0YVtpXSk7XG4gICAgYnJlYWs7XG4gIGNhc2UgNzogIC8vIEludDMyQXJyYXkgKGludDY0KVxuICAgIGlmIChudW1fZWx0cyA+IDMyKSBudW1fZWx0cyA9IDMyO1xuICAgIG51bV9lbHRzICo9IDJcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IG51bV9lbHRzOyBpKyspIHtcbiAgICAgIGggPSBjYW1sX2hhc2hfbWl4X2ludChoLCBiYS5kYXRhW2ldKTtcbiAgICB9XG4gICAgYnJlYWs7XG4gIGNhc2UgMTA6IC8vIEZsb2F0MzJBcnJheSAoY29tcGxleDMyKVxuICAgIG51bV9lbHRzICo9MjsgLyogZmFsbHRocm91Z2ggKi9cbiAgY2FzZSAwOiAgLy8gRmxvYXQzMkFycmF5XG4gICAgaWYgKG51bV9lbHRzID4gNjQpIG51bV9lbHRzID0gNjQ7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBudW1fZWx0czsgaSsrKSBoID0gY2FtbF9oYXNoX21peF9mbG9hdChoLCBiYS5kYXRhW2ldKTtcbiAgICBicmVhaztcbiAgY2FzZSAxMTogLy8gRmxvYXQ2NEFycmF5IChjb21wbGV4NjQpXG4gICAgbnVtX2VsdHMgKj0yOyAvKiBmYWxsdGhyb3VnaCAqL1xuICBjYXNlIDE6ICAvLyBGbG9hdDY0QXJyYXlcbiAgICBpZiAobnVtX2VsdHMgPiAzMikgbnVtX2VsdHMgPSAzMjtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IG51bV9lbHRzOyBpKyspIGggPSBjYW1sX2hhc2hfbWl4X2Zsb2F0KGgsIGJhLmRhdGFbaV0pO1xuICAgIGJyZWFrO1xuICB9XG4gIHJldHVybiBoO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JhX3RvX3R5cGVkX2FycmF5IG11dGFibGVcbmZ1bmN0aW9uIGNhbWxfYmFfdG9fdHlwZWRfYXJyYXkoYmEpe1xuICByZXR1cm4gYmEuZGF0YTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9iYV9raW5kX29mX3R5cGVkX2FycmF5IG11dGFibGVcbi8vUmVxdWlyZXM6IGNhbWxfaW52YWxpZF9hcmd1bWVudFxuZnVuY3Rpb24gY2FtbF9iYV9raW5kX29mX3R5cGVkX2FycmF5KHRhKXtcbiAgdmFyIGtpbmQ7XG4gIGlmICAgICAgKHRhIGluc3RhbmNlb2YgRmxvYXQzMkFycmF5KSBraW5kID0gMDtcbiAgZWxzZSBpZiAodGEgaW5zdGFuY2VvZiBGbG9hdDY0QXJyYXkpIGtpbmQgPSAxO1xuICBlbHNlIGlmICh0YSBpbnN0YW5jZW9mIEludDhBcnJheSkga2luZCA9IDI7XG4gIGVsc2UgaWYgKHRhIGluc3RhbmNlb2YgVWludDhBcnJheSkga2luZCA9IDM7XG4gIGVsc2UgaWYgKHRhIGluc3RhbmNlb2YgSW50MTZBcnJheSkga2luZCA9IDQ7XG4gIGVsc2UgaWYgKHRhIGluc3RhbmNlb2YgVWludDE2QXJyYXkpIGtpbmQgPSA1O1xuICBlbHNlIGlmICh0YSBpbnN0YW5jZW9mIEludDMyQXJyYXkpIGtpbmQgPSA2O1xuICBlbHNlIGlmICh0YSBpbnN0YW5jZW9mIFVpbnQzMkFycmF5KSBraW5kID0gNjtcbiAgZWxzZSBjYW1sX2ludmFsaWRfYXJndW1lbnQoXCJjYW1sX2JhX2tpbmRfb2ZfdHlwZWRfYXJyYXk6IHVuc3VwcG9ydGVkIGtpbmRcIik7XG4gIHJldHVybiBraW5kO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JhX2Zyb21fdHlwZWRfYXJyYXkgbXV0YWJsZVxuLy9SZXF1aXJlczogY2FtbF9iYV9raW5kX29mX3R5cGVkX2FycmF5XG4vL1JlcXVpcmVzOiBjYW1sX2JhX2NyZWF0ZV91bnNhZmVcbmZ1bmN0aW9uIGNhbWxfYmFfZnJvbV90eXBlZF9hcnJheSh0YSl7XG4gIHZhciBraW5kID0gY2FtbF9iYV9raW5kX29mX3R5cGVkX2FycmF5KHRhKTtcbiAgcmV0dXJuIGNhbWxfYmFfY3JlYXRlX3Vuc2FmZShraW5kLCAwLCBbdGEubGVuZ3RoXSwgdGEpO1xufVxuIiwiLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqL1xuLyogICAgICAgICAgICAgICAgICAgICAgICAgICBPYmplY3RpdmUgQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAqL1xuLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqL1xuLyogICAgICAgICAgICBYYXZpZXIgTGVyb3ksIHByb2pldCBDcmlzdGFsLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAqL1xuLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqL1xuLyogIENvcHlyaWdodCAxOTk2IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAqL1xuLyogIGVuIEF1dG9tYXRpcXVlLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCAgICAqL1xuLyogIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlLCB3aXRoICAgICAqL1xuLyogIHRoZSBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiBmaWxlIC4uL0xJQ0VOU0UuICAgICAqL1xuLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqL1xuLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG4vKiAkSWQ6IHBhcnNpbmcuYyA4OTgzIDIwMDgtMDgtMDYgMDk6Mzg6MjVaIHhsZXJveSAkICovXG5cbi8qIFRoZSBQREEgYXV0b21hdG9uIGZvciBwYXJzZXJzIGdlbmVyYXRlZCBieSBjYW1seWFjYyAqL1xuXG4vKiBUaGUgcHVzaGRvd24gYXV0b21hdGEgKi9cblxuLy9Qcm92aWRlczogY2FtbF9wYXJzZXJfdHJhY2VcbnZhciBjYW1sX3BhcnNlcl90cmFjZSA9IDA7XG5cbi8vUHJvdmlkZXM6IGNhbWxfcGFyc2VfZW5naW5lXG4vL1JlcXVpcmVzOiBjYW1sX2xleF9hcnJheSwgY2FtbF9wYXJzZXJfdHJhY2UsY2FtbF9qc3N0cmluZ19vZl9zdHJpbmdcbi8vUmVxdWlyZXM6IGNhbWxfbWxfb3V0cHV0LCBjYW1sX21sX3N0cmluZ19sZW5ndGgsIGNhbWxfc3RyaW5nX29mX2pzYnl0ZXNcbi8vUmVxdWlyZXM6IGNhbWxfanNieXRlc19vZl9zdHJpbmcsIE1sQnl0ZXNcbmZ1bmN0aW9uIGNhbWxfcGFyc2VfZW5naW5lKHRhYmxlcywgZW52LCBjbWQsIGFyZylcbntcbiAgdmFyIEVSUkNPREUgPSAyNTY7XG5cbiAgLy92YXIgU1RBUlQgPSAwO1xuICAvL3ZhciBUT0tFTl9SRUFEID0gMTtcbiAgLy92YXIgU1RBQ0tTX0dST1dOXzEgPSAyO1xuICAvL3ZhciBTVEFDS1NfR1JPV05fMiA9IDM7XG4gIC8vdmFyIFNFTUFOVElDX0FDVElPTl9DT01QVVRFRCA9IDQ7XG4gIC8vdmFyIEVSUk9SX0RFVEVDVEVEID0gNTtcbiAgdmFyIGxvb3AgPSA2O1xuICB2YXIgdGVzdHNoaWZ0ID0gNztcbiAgdmFyIHNoaWZ0ID0gODtcbiAgdmFyIHNoaWZ0X3JlY292ZXIgPSA5O1xuICB2YXIgcmVkdWNlID0gMTA7XG5cbiAgdmFyIFJFQURfVE9LRU4gPSAwO1xuICB2YXIgUkFJU0VfUEFSU0VfRVJST1IgPSAxO1xuICB2YXIgR1JPV19TVEFDS1NfMSA9IDI7XG4gIHZhciBHUk9XX1NUQUNLU18yID0gMztcbiAgdmFyIENPTVBVVEVfU0VNQU5USUNfQUNUSU9OID0gNDtcbiAgdmFyIENBTExfRVJST1JfRlVOQ1RJT04gPSA1O1xuXG4gIHZhciBlbnZfc19zdGFjayA9IDE7XG4gIHZhciBlbnZfdl9zdGFjayA9IDI7XG4gIHZhciBlbnZfc3ltYl9zdGFydF9zdGFjayA9IDM7XG4gIHZhciBlbnZfc3ltYl9lbmRfc3RhY2sgPSA0O1xuICB2YXIgZW52X3N0YWNrc2l6ZSA9IDU7XG4gIHZhciBlbnZfc3RhY2tiYXNlID0gNjtcbiAgdmFyIGVudl9jdXJyX2NoYXIgPSA3O1xuICB2YXIgZW52X2x2YWwgPSA4O1xuICB2YXIgZW52X3N5bWJfc3RhcnQgPSA5O1xuICB2YXIgZW52X3N5bWJfZW5kID0gMTA7XG4gIHZhciBlbnZfYXNwID0gMTE7XG4gIHZhciBlbnZfcnVsZV9sZW4gPSAxMjtcbiAgdmFyIGVudl9ydWxlX251bWJlciA9IDEzO1xuICB2YXIgZW52X3NwID0gMTQ7XG4gIHZhciBlbnZfc3RhdGUgPSAxNTtcbiAgdmFyIGVudl9lcnJmbGFnID0gMTY7XG5cbiAgLy8gdmFyIF90YmxfYWN0aW9ucyA9IDE7XG4gIHZhciB0YmxfdHJhbnNsX2NvbnN0ID0gMjtcbiAgdmFyIHRibF90cmFuc2xfYmxvY2sgPSAzO1xuICB2YXIgdGJsX2xocyA9IDQ7XG4gIHZhciB0YmxfbGVuID0gNTtcbiAgdmFyIHRibF9kZWZyZWQgPSA2O1xuICB2YXIgdGJsX2Rnb3RvID0gNztcbiAgdmFyIHRibF9zaW5kZXggPSA4O1xuICB2YXIgdGJsX3JpbmRleCA9IDk7XG4gIHZhciB0YmxfZ2luZGV4ID0gMTA7XG4gIHZhciB0YmxfdGFibGVzaXplID0gMTE7XG4gIHZhciB0YmxfdGFibGUgPSAxMjtcbiAgdmFyIHRibF9jaGVjayA9IDEzO1xuICAvLyB2YXIgX3RibF9lcnJvcl9mdW5jdGlvbiA9IDE0O1xuICB2YXIgdGJsX25hbWVzX2NvbnN0ID0gMTU7XG4gIHZhciB0YmxfbmFtZXNfYmxvY2sgPSAxNjtcblxuXG4gIGZ1bmN0aW9uIGxvZyh4KSB7XG4gICAgdmFyIHMgPSBjYW1sX3N0cmluZ19vZl9qc2J5dGVzKHggKyBcIlxcblwiKTtcbiAgICBjYW1sX21sX291dHB1dCgyLCBzLCAwLCBjYW1sX21sX3N0cmluZ19sZW5ndGgocykpO1xuICB9XG5cbiAgZnVuY3Rpb24gdG9rZW5fbmFtZShuYW1lcywgbnVtYmVyKVxuICB7XG4gICAgdmFyIHN0ciA9IGNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nKG5hbWVzKTtcbiAgICBpZiAoc3RyWzBdID09ICdcXHgwMCcpXG4gICAgICByZXR1cm4gXCI8dW5rbm93biB0b2tlbj5cIjtcbiAgICByZXR1cm4gc3RyLnNwbGl0KCdcXHgwMCcpW251bWJlcl07XG4gIH1cblxuICBmdW5jdGlvbiBwcmludF90b2tlbihzdGF0ZSwgdG9rKVxuICB7XG4gICAgdmFyIHRva2VuLCBraW5kO1xuICAgIGlmICh0b2sgaW5zdGFuY2VvZiBBcnJheSkge1xuICAgICAgdG9rZW4gPSB0b2tlbl9uYW1lKHRhYmxlc1t0YmxfbmFtZXNfYmxvY2tdLCB0b2tbMF0pO1xuICAgICAgaWYgKHR5cGVvZiB0b2tbMV0gPT0gXCJudW1iZXJcIilcbiAgICAgICAga2luZCA9IFwiXCIgKyB0b2tbMV07XG4gICAgICBlbHNlIGlmICh0eXBlb2YgdG9rWzFdID09IFwic3RyaW5nXCIpXG4gICAgICAgIGtpbmQgPSB0b2tbMV1cbiAgICAgIGVsc2UgaWYgKHRva1sxXSBpbnN0YW5jZW9mIE1sQnl0ZXMpXG4gICAgICAgIGtpbmQgPSBjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nKHRva1sxXSlcbiAgICAgIGVsc2VcbiAgICAgICAga2luZCA9IFwiX1wiXG4gICAgICBsb2coXCJTdGF0ZSBcIiArIHN0YXRlICsgXCI6IHJlYWQgdG9rZW4gXCIgKyB0b2tlbiArIFwiKFwiICsga2luZCArIFwiKVwiKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdG9rZW4gPSB0b2tlbl9uYW1lKHRhYmxlc1t0YmxfbmFtZXNfY29uc3RdLCB0b2spO1xuICAgICAgbG9nKFwiU3RhdGUgXCIgKyBzdGF0ZSArIFwiOiByZWFkIHRva2VuIFwiICsgdG9rZW4pO1xuICAgIH1cbiAgfVxuXG4gIGlmICghdGFibGVzLmRnb3RvKSB7XG4gICAgdGFibGVzLmRlZnJlZCA9IGNhbWxfbGV4X2FycmF5ICh0YWJsZXNbdGJsX2RlZnJlZF0pO1xuICAgIHRhYmxlcy5zaW5kZXggPSBjYW1sX2xleF9hcnJheSAodGFibGVzW3RibF9zaW5kZXhdKTtcbiAgICB0YWJsZXMuY2hlY2sgID0gY2FtbF9sZXhfYXJyYXkgKHRhYmxlc1t0YmxfY2hlY2tdKTtcbiAgICB0YWJsZXMucmluZGV4ID0gY2FtbF9sZXhfYXJyYXkgKHRhYmxlc1t0YmxfcmluZGV4XSk7XG4gICAgdGFibGVzLnRhYmxlICA9IGNhbWxfbGV4X2FycmF5ICh0YWJsZXNbdGJsX3RhYmxlXSk7XG4gICAgdGFibGVzLmxlbiAgICA9IGNhbWxfbGV4X2FycmF5ICh0YWJsZXNbdGJsX2xlbl0pO1xuICAgIHRhYmxlcy5saHMgICAgPSBjYW1sX2xleF9hcnJheSAodGFibGVzW3RibF9saHNdKTtcbiAgICB0YWJsZXMuZ2luZGV4ID0gY2FtbF9sZXhfYXJyYXkgKHRhYmxlc1t0YmxfZ2luZGV4XSk7XG4gICAgdGFibGVzLmRnb3RvICA9IGNhbWxfbGV4X2FycmF5ICh0YWJsZXNbdGJsX2Rnb3RvXSk7XG4gIH1cblxuICB2YXIgcmVzID0gMCwgbiwgbjEsIG4yLCBzdGF0ZTE7XG5cbiAgLy8gUkVTVE9SRVxuICB2YXIgc3AgPSBlbnZbZW52X3NwXTtcbiAgdmFyIHN0YXRlID0gZW52W2Vudl9zdGF0ZV07XG4gIHZhciBlcnJmbGFnID0gZW52W2Vudl9lcnJmbGFnXTtcblxuICBleGl0OmZvciAoOzspIHtcbiAgICBuZXh0OnN3aXRjaChjbWQpIHtcbiAgICBjYXNlIDA6Ly9TVEFSVDpcbiAgICAgIHN0YXRlID0gMDtcbiAgICAgIGVycmZsYWcgPSAwO1xuICAgICAgLy8gRmFsbCB0aHJvdWdoXG5cbiAgICBjYXNlIDY6Ly9sb29wOlxuICAgICAgbiA9IHRhYmxlcy5kZWZyZWRbc3RhdGVdO1xuICAgICAgaWYgKG4gIT0gMCkgeyBjbWQgPSByZWR1Y2U7IGJyZWFrOyB9XG4gICAgICBpZiAoZW52W2Vudl9jdXJyX2NoYXJdID49IDApIHsgY21kID0gdGVzdHNoaWZ0OyBicmVhazsgfVxuICAgICAgcmVzID0gUkVBRF9UT0tFTjtcbiAgICAgIGJyZWFrIGV4aXQ7XG4gICAgICAvKiBUaGUgTUwgY29kZSBjYWxscyB0aGUgbGV4ZXIgYW5kIHVwZGF0ZXMgKi9cbiAgICAgIC8qIHN5bWJfc3RhcnQgYW5kIHN5bWJfZW5kICovXG4gICAgY2FzZSAxOi8vVE9LRU5fUkVBRDpcbiAgICAgIGlmIChhcmcgaW5zdGFuY2VvZiBBcnJheSkge1xuICAgICAgICBlbnZbZW52X2N1cnJfY2hhcl0gPSB0YWJsZXNbdGJsX3RyYW5zbF9ibG9ja11bYXJnWzBdICsgMV07XG4gICAgICAgIGVudltlbnZfbHZhbF0gPSBhcmdbMV07XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBlbnZbZW52X2N1cnJfY2hhcl0gPSB0YWJsZXNbdGJsX3RyYW5zbF9jb25zdF1bYXJnICsgMV07XG4gICAgICAgIGVudltlbnZfbHZhbF0gPSAwO1xuICAgICAgfVxuICAgICAgaWYgKGNhbWxfcGFyc2VyX3RyYWNlKSBwcmludF90b2tlbiAoc3RhdGUsIGFyZyk7XG4gICAgICAvLyBGYWxsIHRocm91Z2hcblxuICAgIGNhc2UgNzovL3Rlc3RzaGlmdDpcbiAgICAgIG4xID0gdGFibGVzLnNpbmRleFtzdGF0ZV07XG4gICAgICBuMiA9IG4xICsgZW52W2Vudl9jdXJyX2NoYXJdO1xuICAgICAgaWYgKG4xICE9IDAgJiYgbjIgPj0gMCAmJiBuMiA8PSB0YWJsZXNbdGJsX3RhYmxlc2l6ZV0gJiZcbiAgICAgICAgICB0YWJsZXMuY2hlY2tbbjJdID09IGVudltlbnZfY3Vycl9jaGFyXSkge1xuICAgICAgICBjbWQgPSBzaGlmdDsgYnJlYWs7XG4gICAgICB9XG4gICAgICBuMSA9IHRhYmxlcy5yaW5kZXhbc3RhdGVdO1xuICAgICAgbjIgPSBuMSArIGVudltlbnZfY3Vycl9jaGFyXTtcbiAgICAgIGlmIChuMSAhPSAwICYmIG4yID49IDAgJiYgbjIgPD0gdGFibGVzW3RibF90YWJsZXNpemVdICYmXG4gICAgICAgICAgdGFibGVzLmNoZWNrW24yXSA9PSBlbnZbZW52X2N1cnJfY2hhcl0pIHtcbiAgICAgICAgbiA9IHRhYmxlcy50YWJsZVtuMl07XG4gICAgICAgIGNtZCA9IHJlZHVjZTsgYnJlYWs7XG4gICAgICB9XG4gICAgICBpZiAoZXJyZmxhZyA8PSAwKSB7XG4gICAgICAgIHJlcyA9IENBTExfRVJST1JfRlVOQ1RJT047XG4gICAgICAgIGJyZWFrIGV4aXQ7XG4gICAgICB9XG4gICAgICAvLyBGYWxsIHRocm91Z2hcbiAgICAgIC8qIFRoZSBNTCBjb2RlIGNhbGxzIHRoZSBlcnJvciBmdW5jdGlvbiAqL1xuICAgIGNhc2UgNTovL0VSUk9SX0RFVEVDVEVEOlxuICAgICAgaWYgKGVycmZsYWcgPCAzKSB7XG4gICAgICAgIGVycmZsYWcgPSAzO1xuICAgICAgICBmb3IgKDs7KSB7XG4gICAgICAgICAgc3RhdGUxID0gZW52W2Vudl9zX3N0YWNrXVtzcCArIDFdO1xuICAgICAgICAgIG4xID0gdGFibGVzLnNpbmRleFtzdGF0ZTFdO1xuICAgICAgICAgIG4yID0gbjEgKyBFUlJDT0RFO1xuICAgICAgICAgIGlmIChuMSAhPSAwICYmIG4yID49IDAgJiYgbjIgPD0gdGFibGVzW3RibF90YWJsZXNpemVdICYmXG4gICAgICAgICAgICAgIHRhYmxlcy5jaGVja1tuMl0gPT0gRVJSQ09ERSkge1xuICAgICAgICAgICAgaWYgKGNhbWxfcGFyc2VyX3RyYWNlKVxuICAgICAgICAgICAgICBsb2coXCJSZWNvdmVyaW5nIGluIHN0YXRlIFwiICsgc3RhdGUxKTtcbiAgICAgICAgICAgIGNtZCA9IHNoaWZ0X3JlY292ZXI7IGJyZWFrIG5leHQ7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGlmIChjYW1sX3BhcnNlcl90cmFjZSlcbiAgICAgICAgICAgICAgbG9nKFwiRGlzY2FyZGluZyBzdGF0ZSBcIiArIHN0YXRlMSk7XG4gICAgICAgICAgICBpZiAoc3AgPD0gZW52W2Vudl9zdGFja2Jhc2VdKSB7XG4gICAgICAgICAgICAgIGlmIChjYW1sX3BhcnNlcl90cmFjZSlcbiAgICAgICAgICAgICAgICBsb2coXCJObyBtb3JlIHN0YXRlcyB0byBkaXNjYXJkXCIpO1xuICAgICAgICAgICAgICByZXR1cm4gUkFJU0VfUEFSU0VfRVJST1I7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAvKiBUaGUgTUwgY29kZSByYWlzZXMgUGFyc2VfZXJyb3IgKi9cbiAgICAgICAgICAgIHNwLS07XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBpZiAoZW52W2Vudl9jdXJyX2NoYXJdID09IDApXG4gICAgICAgICAgcmV0dXJuIFJBSVNFX1BBUlNFX0VSUk9SOyAvKiBUaGUgTUwgY29kZSByYWlzZXMgUGFyc2VfZXJyb3IgKi9cbiAgICAgICAgaWYgKGNhbWxfcGFyc2VyX3RyYWNlKVxuICAgICAgICAgIGxvZyhcIkRpc2NhcmRpbmcgbGFzdCB0b2tlbiByZWFkXCIpO1xuICAgICAgICBlbnZbZW52X2N1cnJfY2hhcl0gPSAtMTtcbiAgICAgICAgY21kID0gbG9vcDsgYnJlYWs7XG4gICAgICB9XG4gICAgICAvLyBGYWxsIHRocm91Z2hcbiAgICBjYXNlIDg6Ly9zaGlmdDpcbiAgICAgIGVudltlbnZfY3Vycl9jaGFyXSA9IC0xO1xuICAgICAgaWYgKGVycmZsYWcgPiAwKSBlcnJmbGFnLS07XG4gICAgICAvLyBGYWxsIHRocm91Z2hcbiAgICBjYXNlIDk6Ly9zaGlmdF9yZWNvdmVyOlxuICAgICAgaWYgKGNhbWxfcGFyc2VyX3RyYWNlKVxuICAgICAgICBsb2coXCJTdGF0ZSBcIiArIHN0YXRlICsgXCI6IHNoaWZ0IHRvIHN0YXRlIFwiICsgdGFibGVzLnRhYmxlW24yXSk7XG4gICAgICBzdGF0ZSA9IHRhYmxlcy50YWJsZVtuMl07XG4gICAgICBzcCsrO1xuICAgICAgaWYgKHNwID49IGVudltlbnZfc3RhY2tzaXplXSkge1xuICAgICAgICByZXMgPSBHUk9XX1NUQUNLU18xO1xuICAgICAgICBicmVhayBleGl0O1xuICAgICAgfVxuICAgICAgLy8gRmFsbCB0aHJvdWdoXG4gICAgICAvKiBUaGUgTUwgY29kZSByZXNpemVzIHRoZSBzdGFja3MgKi9cbiAgICBjYXNlIDI6Ly9TVEFDS1NfR1JPV05fMTpcbiAgICAgIGVudltlbnZfc19zdGFja11bc3AgKyAxXSA9IHN0YXRlO1xuICAgICAgZW52W2Vudl92X3N0YWNrXVtzcCArIDFdID0gZW52W2Vudl9sdmFsXTtcbiAgICAgIGVudltlbnZfc3ltYl9zdGFydF9zdGFja11bc3AgKyAxXSA9IGVudltlbnZfc3ltYl9zdGFydF07XG4gICAgICBlbnZbZW52X3N5bWJfZW5kX3N0YWNrXVtzcCArIDFdID0gZW52W2Vudl9zeW1iX2VuZF07XG4gICAgICBjbWQgPSBsb29wO1xuICAgICAgYnJlYWs7XG5cbiAgICBjYXNlIDEwOi8vcmVkdWNlOlxuICAgICAgaWYgKGNhbWxfcGFyc2VyX3RyYWNlKVxuICAgICAgICBsb2coXCJTdGF0ZSBcIiArIHN0YXRlICsgXCI6IHJlZHVjZSBieSBydWxlIFwiICsgbik7XG4gICAgICB2YXIgbSA9IHRhYmxlcy5sZW5bbl07XG4gICAgICBlbnZbZW52X2FzcF0gPSBzcDtcbiAgICAgIGVudltlbnZfcnVsZV9udW1iZXJdID0gbjtcbiAgICAgIGVudltlbnZfcnVsZV9sZW5dID0gbTtcbiAgICAgIHNwID0gc3AgLSBtICsgMTtcbiAgICAgIG0gPSB0YWJsZXMubGhzW25dO1xuICAgICAgc3RhdGUxID0gZW52W2Vudl9zX3N0YWNrXVtzcF07XG4gICAgICBuMSA9IHRhYmxlcy5naW5kZXhbbV07XG4gICAgICBuMiA9IG4xICsgc3RhdGUxO1xuICAgICAgaWYgKG4xICE9IDAgJiYgbjIgPj0gMCAmJiBuMiA8PSB0YWJsZXNbdGJsX3RhYmxlc2l6ZV0gJiZcbiAgICAgICAgICB0YWJsZXMuY2hlY2tbbjJdID09IHN0YXRlMSlcbiAgICAgICAgc3RhdGUgPSB0YWJsZXMudGFibGVbbjJdO1xuICAgICAgZWxzZVxuICAgICAgICBzdGF0ZSA9IHRhYmxlcy5kZ290b1ttXTtcbiAgICAgIGlmIChzcCA+PSBlbnZbZW52X3N0YWNrc2l6ZV0pIHtcbiAgICAgICAgcmVzID0gR1JPV19TVEFDS1NfMjtcbiAgICAgICAgYnJlYWsgZXhpdDtcbiAgICAgIH1cbiAgICAgIC8vIEZhbGwgdGhyb3VnaFxuICAgICAgLyogVGhlIE1MIGNvZGUgcmVzaXplcyB0aGUgc3RhY2tzICovXG4gICAgY2FzZSAzOi8vU1RBQ0tTX0dST1dOXzI6XG4gICAgICByZXMgPSBDT01QVVRFX1NFTUFOVElDX0FDVElPTjtcbiAgICAgIGJyZWFrIGV4aXQ7XG4gICAgICAvKiBUaGUgTUwgY29kZSBjYWxscyB0aGUgc2VtYW50aWMgYWN0aW9uICovXG4gICAgY2FzZSA0Oi8vU0VNQU5USUNfQUNUSU9OX0NPTVBVVEVEOlxuICAgICAgZW52W2Vudl9zX3N0YWNrXVtzcCArIDFdID0gc3RhdGU7XG4gICAgICBlbnZbZW52X3Zfc3RhY2tdW3NwICsgMV0gPSBhcmc7XG4gICAgICB2YXIgYXNwID0gZW52W2Vudl9hc3BdO1xuICAgICAgZW52W2Vudl9zeW1iX2VuZF9zdGFja11bc3AgKyAxXSA9IGVudltlbnZfc3ltYl9lbmRfc3RhY2tdW2FzcCArIDFdO1xuICAgICAgaWYgKHNwID4gYXNwKSB7XG4gICAgICAgIC8qIFRoaXMgaXMgYW4gZXBzaWxvbiBwcm9kdWN0aW9uLiBUYWtlIHN5bWJfc3RhcnQgZXF1YWwgdG8gc3ltYl9lbmQuICovXG4gICAgICAgIGVudltlbnZfc3ltYl9zdGFydF9zdGFja11bc3AgKyAxXSA9IGVudltlbnZfc3ltYl9lbmRfc3RhY2tdW2FzcCArIDFdO1xuICAgICAgfVxuICAgICAgY21kID0gbG9vcDsgYnJlYWs7XG4gICAgICAvKiBTaG91bGQgbm90IGhhcHBlbiAqL1xuICAgIGRlZmF1bHQ6XG4gICAgICByZXR1cm4gUkFJU0VfUEFSU0VfRVJST1I7XG4gICAgfVxuICB9XG4gIC8vIFNBVkVcbiAgZW52W2Vudl9zcF0gPSBzcDtcbiAgZW52W2Vudl9zdGF0ZV0gPSBzdGF0ZTtcbiAgZW52W2Vudl9lcnJmbGFnXSA9IGVycmZsYWc7XG4gIHJldHVybiByZXM7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc2V0X3BhcnNlcl90cmFjZSBjb25zdFxuLy9SZXF1aXJlczogY2FtbF9wYXJzZXJfdHJhY2VcbmZ1bmN0aW9uIGNhbWxfc2V0X3BhcnNlcl90cmFjZShib29sKSB7XG4gIHZhciBvbGRmbGFnID0gY2FtbF9wYXJzZXJfdHJhY2U7XG4gIGNhbWxfcGFyc2VyX3RyYWNlID0gYm9vbDtcbiAgcmV0dXJuIG9sZGZsYWc7XG59XG4iLCIvLyBKc19vZl9vY2FtbCBydW50aW1lIHN1cHBvcnRcbi8vIGh0dHA6Ly93d3cub2NzaWdlbi5vcmcvanNfb2Zfb2NhbWwvXG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbi8vIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuLy8gdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aCBsaW5raW5nIGV4Y2VwdGlvbjtcbi8vIGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbi8vXG4vLyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbi8vIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4vLyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlXG4vLyBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbi8vXG4vLyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2Vcbi8vIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4vLyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLlxuXG4vL1Byb3ZpZGVzOiBjYW1sX2Zvcm1hdF9pbnQgY29uc3QgKGNvbnN0LCBjb25zdClcbi8vUmVxdWlyZXM6IGNhbWxfcGFyc2VfZm9ybWF0LCBjYW1sX2ZpbmlzaF9mb3JtYXR0aW5nLCBjYW1sX3N0cl9yZXBlYXRcbi8vUmVxdWlyZXM6IGNhbWxfc3RyaW5nX29mX2pzYnl0ZXMsIGNhbWxfanNieXRlc19vZl9zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfZm9ybWF0X2ludChmbXQsIGkpIHtcbiAgaWYgKGNhbWxfanNieXRlc19vZl9zdHJpbmcoZm10KSA9PSBcIiVkXCIpIHJldHVybiBjYW1sX3N0cmluZ19vZl9qc2J5dGVzKFwiXCIraSk7XG4gIHZhciBmID0gY2FtbF9wYXJzZV9mb3JtYXQoZm10KTtcbiAgaWYgKGkgPCAwKSB7IGlmIChmLnNpZ25lZGNvbnYpIHsgZi5zaWduID0gLTE7IGkgPSAtaTsgfSBlbHNlIGkgPj4+PSAwOyB9XG4gIHZhciBzID0gaS50b1N0cmluZyhmLmJhc2UpO1xuICBpZiAoZi5wcmVjID49IDApIHtcbiAgICBmLmZpbGxlciA9ICcgJztcbiAgICB2YXIgbiA9IGYucHJlYyAtIHMubGVuZ3RoO1xuICAgIGlmIChuID4gMCkgcyA9IGNhbWxfc3RyX3JlcGVhdCAobiwgJzAnKSArIHM7XG4gIH1cbiAgcmV0dXJuIGNhbWxfZmluaXNoX2Zvcm1hdHRpbmcoZiwgcyk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfcGFyc2Vfc2lnbl9hbmRfYmFzZVxuLy9SZXF1aXJlczogY2FtbF9zdHJpbmdfdW5zYWZlX2dldCwgY2FtbF9tbF9zdHJpbmdfbGVuZ3RoXG5mdW5jdGlvbiBjYW1sX3BhcnNlX3NpZ25fYW5kX2Jhc2UgKHMpIHtcbiAgdmFyIGkgPSAwLCBsZW4gPSBjYW1sX21sX3N0cmluZ19sZW5ndGgocyksIGJhc2UgPSAxMCwgc2lnbiA9IDE7XG4gIGlmIChsZW4gPiAwKSB7XG4gICAgc3dpdGNoIChjYW1sX3N0cmluZ191bnNhZmVfZ2V0KHMsaSkpIHtcbiAgICBjYXNlIDQ1OiBpKys7IHNpZ24gPSAtMTsgYnJlYWs7XG4gICAgY2FzZSA0MzogaSsrOyBzaWduID0gMTsgYnJlYWs7XG4gICAgfVxuICB9XG4gIGlmIChpICsgMSA8IGxlbiAmJiBjYW1sX3N0cmluZ191bnNhZmVfZ2V0KHMsIGkpID09IDQ4KVxuICAgIHN3aXRjaCAoY2FtbF9zdHJpbmdfdW5zYWZlX2dldChzLCBpICsgMSkpIHtcbiAgICBjYXNlIDEyMDogY2FzZSA4ODogYmFzZSA9IDE2OyBpICs9IDI7IGJyZWFrO1xuICAgIGNhc2UgMTExOiBjYXNlIDc5OiBiYXNlID0gIDg7IGkgKz0gMjsgYnJlYWs7XG4gICAgY2FzZSAgOTg6IGNhc2UgNjY6IGJhc2UgPSAgMjsgaSArPSAyOyBicmVhaztcbiAgICBjYXNlIDExNzogY2FzZSA4NTogaSArPSAyOyBicmVhaztcbiAgICB9XG4gIHJldHVybiBbaSwgc2lnbiwgYmFzZV07XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfcGFyc2VfZGlnaXRcbmZ1bmN0aW9uIGNhbWxfcGFyc2VfZGlnaXQoYykge1xuICBpZiAoYyA+PSA0OCAmJiBjIDw9IDU3KSAgcmV0dXJuIGMgLSA0ODtcbiAgaWYgKGMgPj0gNjUgJiYgYyA8PSA5MCkgIHJldHVybiBjIC0gNTU7XG4gIGlmIChjID49IDk3ICYmIGMgPD0gMTIyKSByZXR1cm4gYyAtIDg3O1xuICByZXR1cm4gLTE7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfaW50X29mX3N0cmluZyAoY29uc3QpXG4vL1JlcXVpcmVzOiBjYW1sX21sX3N0cmluZ19sZW5ndGgsIGNhbWxfc3RyaW5nX3Vuc2FmZV9nZXRcbi8vUmVxdWlyZXM6IGNhbWxfcGFyc2Vfc2lnbl9hbmRfYmFzZSwgY2FtbF9wYXJzZV9kaWdpdCwgY2FtbF9mYWlsd2l0aFxuZnVuY3Rpb24gY2FtbF9pbnRfb2Zfc3RyaW5nIChzKSB7XG4gIHZhciByID0gY2FtbF9wYXJzZV9zaWduX2FuZF9iYXNlIChzKTtcbiAgdmFyIGkgPSByWzBdLCBzaWduID0gclsxXSwgYmFzZSA9IHJbMl07XG4gIHZhciBsZW4gPSBjYW1sX21sX3N0cmluZ19sZW5ndGgocyk7XG4gIHZhciB0aHJlc2hvbGQgPSAtMSA+Pj4gMDtcbiAgdmFyIGMgPSAoaSA8IGxlbik/Y2FtbF9zdHJpbmdfdW5zYWZlX2dldChzLCBpKTowO1xuICB2YXIgZCA9IGNhbWxfcGFyc2VfZGlnaXQoYyk7XG4gIGlmIChkIDwgMCB8fCBkID49IGJhc2UpIGNhbWxfZmFpbHdpdGgoXCJpbnRfb2Zfc3RyaW5nXCIpO1xuICB2YXIgcmVzID0gZDtcbiAgZm9yIChpKys7aTxsZW47aSsrKSB7XG4gICAgYyA9IGNhbWxfc3RyaW5nX3Vuc2FmZV9nZXQocywgaSk7XG4gICAgaWYgKGMgPT0gOTUpIGNvbnRpbnVlO1xuICAgIGQgPSBjYW1sX3BhcnNlX2RpZ2l0KGMpO1xuICAgIGlmIChkIDwgMCB8fCBkID49IGJhc2UpIGJyZWFrO1xuICAgIHJlcyA9IGJhc2UgKiByZXMgKyBkO1xuICAgIGlmIChyZXMgPiB0aHJlc2hvbGQpIGNhbWxfZmFpbHdpdGgoXCJpbnRfb2Zfc3RyaW5nXCIpO1xuICB9XG4gIGlmIChpICE9IGxlbikgY2FtbF9mYWlsd2l0aChcImludF9vZl9zdHJpbmdcIik7XG4gIC8vIEZvciBiYXNlIGRpZmZlcmVudCBmcm9tIDEwLCB3ZSBleHBlY3QgYW4gdW5zaWduZWQgcmVwcmVzZW50YXRpb24sXG4gIC8vIGhlbmNlIGFueSB2YWx1ZSBvZiAncmVzJyAobGVzcyB0aGFuICd0aHJlc2hvbGQnKSBpcyBhY2NlcHRhYmxlLlxuICAvLyBCdXQgd2UgaGF2ZSB0byBjb252ZXJ0IHRoZSByZXN1bHQgYmFjayB0byBhIHNpZ25lZCBpbnRlZ2VyLlxuICByZXMgPSBzaWduICogcmVzO1xuICBpZiAoKGJhc2UgPT0gMTApICYmICgocmVzIHwgMCkgIT0gcmVzKSlcbiAgICAvKiBTaWduZWQgcmVwcmVzZW50YXRpb24gZXhwZWN0ZWQsIGFsbG93IC0yXihuYml0cy0xKSB0byAyXihuYml0cy0xKSAtIDEgKi9cbiAgICBjYW1sX2ZhaWx3aXRoKFwiaW50X29mX3N0cmluZ1wiKTtcbiAgcmV0dXJuIHJlcyB8IDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbXVsIGNvbnN0XG5mdW5jdGlvbiBjYW1sX211bChhLGIpe1xuICByZXR1cm4gTWF0aC5pbXVsKGEsYik7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZGl2XG4vL1JlcXVpcmVzOiBjYW1sX3JhaXNlX3plcm9fZGl2aWRlXG5mdW5jdGlvbiBjYW1sX2Rpdih4LHkpIHtcbiAgaWYgKHkgPT0gMCkgY2FtbF9yYWlzZV96ZXJvX2RpdmlkZSAoKTtcbiAgcmV0dXJuICh4L3kpfDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbW9kXG4vL1JlcXVpcmVzOiBjYW1sX3JhaXNlX3plcm9fZGl2aWRlXG5mdW5jdGlvbiBjYW1sX21vZCh4LHkpIHtcbiAgaWYgKHkgPT0gMCkgY2FtbF9yYWlzZV96ZXJvX2RpdmlkZSAoKTtcbiAgcmV0dXJuIHgleTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ic3dhcDE2XG5mdW5jdGlvbiBjYW1sX2Jzd2FwMTYoeCkge1xuICByZXR1cm4gKCgoKHggJiAweDAwRkYpIDw8IDgpIHxcbiAgICAgICAgICAgKCh4ICYgMHhGRjAwKSA+PiA4KSkpO1xufVxuLy9Qcm92aWRlczogY2FtbF9pbnQzMl9ic3dhcFxuZnVuY3Rpb24gY2FtbF9pbnQzMl9ic3dhcCh4KSB7XG4gIHJldHVybiAoKCh4ICYgMHgwMDAwMDBGRikgPDwgMjQpIHxcbiAgICAgICAgICAoKHggJiAweDAwMDBGRjAwKSA8PCA4KSB8XG4gICAgICAgICAgKCh4ICYgMHgwMEZGMDAwMCkgPj4+IDgpIHxcbiAgICAgICAgICAoKHggJiAweEZGMDAwMDAwKSA+Pj4gMjQpKTtcbn1cbi8vUHJvdmlkZXM6IGNhbWxfaW50NjRfYnN3YXBcbi8vUmVxdWlyZXM6IGNhbWxfaW50NjRfdG9fYnl0ZXMsIGNhbWxfaW50NjRfb2ZfYnl0ZXNcbmZ1bmN0aW9uIGNhbWxfaW50NjRfYnN3YXAoeCkge1xuICB2YXIgeSA9IGNhbWxfaW50NjRfdG9fYnl0ZXMoeCk7XG4gIHJldHVybiBjYW1sX2ludDY0X29mX2J5dGVzKFt5WzddLCB5WzZdLCB5WzVdLCB5WzRdLCB5WzNdLCB5WzJdLCB5WzFdLCB5WzBdXSk7XG59XG4iLCIvLyBKc19vZl9vY2FtbCBydW50aW1lIHN1cHBvcnRcbi8vIGh0dHA6Ly93d3cub2NzaWdlbi5vcmcvanNfb2Zfb2NhbWwvXG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbi8vIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuLy8gdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aCBsaW5raW5nIGV4Y2VwdGlvbjtcbi8vIGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbi8vXG4vLyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbi8vIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4vLyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlXG4vLyBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbi8vXG4vLyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2Vcbi8vIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4vLyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLlxuXG4vLy8vLy8vLy8vLy8vIEhhc2h0YmxcblxuXG4vL1Byb3ZpZGVzOiBjYW1sX2hhc2hfdW5pdl9wYXJhbSBtdXRhYmxlXG4vL1JlcXVpcmVzOiBjYW1sX2lzX21sX3N0cmluZywgY2FtbF9pc19tbF9ieXRlc1xuLy9SZXF1aXJlczogY2FtbF9tbF9ieXRlc19jb250ZW50XG4vL1JlcXVpcmVzOiBjYW1sX2ludDY0X3RvX2J5dGVzLCBjYW1sX2ludDY0X2JpdHNfb2ZfZmxvYXQsIGNhbWxfY3VzdG9tX29wc1xuLy9SZXF1aXJlczogY2FtbF9tbF9ieXRlc19sZW5ndGgsIGNhbWxfanNieXRlc19vZl9zdHJpbmdcbi8vVmVyc2lvbjogPCA0LjEyXG5mdW5jdGlvbiBjYW1sX2hhc2hfdW5pdl9wYXJhbSAoY291bnQsIGxpbWl0LCBvYmopIHtcbiAgdmFyIGhhc2hfYWNjdSA9IDA7XG4gIGZ1bmN0aW9uIGhhc2hfYXV4IChvYmopIHtcbiAgICBsaW1pdCAtLTtcbiAgICBpZiAoY291bnQgPCAwIHx8IGxpbWl0IDwgMCkgcmV0dXJuO1xuICAgIGlmIChvYmogaW5zdGFuY2VvZiBBcnJheSAmJiBvYmpbMF0gPT09IChvYmpbMF18MCkpIHtcbiAgICAgIHN3aXRjaCAob2JqWzBdKSB7XG4gICAgICBjYXNlIDI0ODpcbiAgICAgICAgLy8gT2JqZWN0XG4gICAgICAgIGNvdW50IC0tO1xuICAgICAgICBoYXNoX2FjY3UgPSAoaGFzaF9hY2N1ICogNjU1OTkgKyBvYmpbMl0pIHwgMDtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIDI1MDpcbiAgICAgICAgLy8gRm9yd2FyZFxuICAgICAgICBsaW1pdCsrOyBoYXNoX2F1eChvYmopOyBicmVhaztcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIGNvdW50IC0tO1xuICAgICAgICBoYXNoX2FjY3UgPSAoaGFzaF9hY2N1ICogMTkgKyBvYmpbMF0pIHwgMDtcbiAgICAgICAgZm9yICh2YXIgaSA9IG9iai5sZW5ndGggLSAxOyBpID4gMDsgaS0tKSBoYXNoX2F1eCAob2JqW2ldKTtcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKGNhbWxfaXNfbWxfYnl0ZXMob2JqKSkge1xuICAgICAgY291bnQgLS07XG4gICAgICB2YXIgY29udGVudCA9IGNhbWxfbWxfYnl0ZXNfY29udGVudChvYmopO1xuICAgICAgaWYodHlwZW9mIGNvbnRlbnQgPT09IFwic3RyaW5nXCIpIHtcbiAgICAgICAgZm9yICh2YXIgYiA9IGNvbnRlbnQsIGwgPSBiLmxlbmd0aCwgaSA9IDA7IGkgPCBsOyBpKyspXG4gICAgICAgICAgaGFzaF9hY2N1ID0gKGhhc2hfYWNjdSAqIDE5ICsgYi5jaGFyQ29kZUF0KGkpKSB8IDA7XG4gICAgICB9IGVsc2UgeyAvKiBBUlJBWSAqL1xuICAgICAgICBmb3IgKHZhciBhID0gY29udGVudCwgbCA9IGEubGVuZ3RoLCBpID0gMDsgaSA8IGw7IGkrKylcbiAgICAgICAgICBoYXNoX2FjY3UgPSAoaGFzaF9hY2N1ICogMTkgKyBhW2ldKSB8IDA7XG4gICAgICB9XG4gICAgfSBlbHNlIGlmIChjYW1sX2lzX21sX3N0cmluZyhvYmopKSB7XG4gICAgICB2YXIganNieXRlcyA9IGNhbWxfanNieXRlc19vZl9zdHJpbmcob2JqKTtcbiAgICAgIGZvciAodmFyIGIgPSBqc2J5dGVzLCBsID0ganNieXRlcy5sZW5ndGgsIGkgPSAwOyBpIDwgbDsgaSsrKVxuICAgICAgICBoYXNoX2FjY3UgPSAoaGFzaF9hY2N1ICogMTkgKyBiLmNoYXJDb2RlQXQoaSkpIHwgMDtcbiAgICB9IGVsc2UgaWYgKHR5cGVvZiBvYmogPT09IFwic3RyaW5nXCIpIHtcbiAgICAgIGZvciAodmFyIGIgPSBvYmosIGwgPSBvYmoubGVuZ3RoLCBpID0gMDsgaSA8IGw7IGkrKylcbiAgICAgICAgaGFzaF9hY2N1ID0gKGhhc2hfYWNjdSAqIDE5ICsgYi5jaGFyQ29kZUF0KGkpKSB8IDA7XG4gICAgfSBlbHNlIGlmIChvYmogPT09IChvYmp8MCkpIHtcbiAgICAgIC8vIEludGVnZXJcbiAgICAgIGNvdW50IC0tO1xuICAgICAgaGFzaF9hY2N1ID0gKGhhc2hfYWNjdSAqIDY1NTk5ICsgb2JqKSB8IDA7XG4gICAgfSBlbHNlIGlmIChvYmogPT09ICtvYmopIHtcbiAgICAgIC8vIEZsb2F0XG4gICAgICBjb3VudC0tO1xuICAgICAgdmFyIHAgPSBjYW1sX2ludDY0X3RvX2J5dGVzIChjYW1sX2ludDY0X2JpdHNfb2ZfZmxvYXQgKG9iaikpO1xuICAgICAgZm9yICh2YXIgaSA9IDc7IGkgPj0gMDsgaS0tKSBoYXNoX2FjY3UgPSAoaGFzaF9hY2N1ICogMTkgKyBwW2ldKSB8IDA7XG4gICAgfSBlbHNlIGlmKG9iaiAmJiBvYmouY2FtbF9jdXN0b20pIHtcbiAgICAgIGlmKGNhbWxfY3VzdG9tX29wc1tvYmouY2FtbF9jdXN0b21dICYmIGNhbWxfY3VzdG9tX29wc1tvYmouY2FtbF9jdXN0b21dLmhhc2gpIHtcbiAgICAgICAgdmFyIGggPSBjYW1sX2N1c3RvbV9vcHNbb2JqLmNhbWxfY3VzdG9tXS5oYXNoKG9iaikgfCAwO1xuICAgICAgICBoYXNoX2FjY3UgPSAoaGFzaF9hY2N1ICogNjU1OTkgKyBoKSB8IDA7XG4gICAgICB9XG4gICAgfVxuICB9XG4gIGhhc2hfYXV4IChvYmopO1xuICByZXR1cm4gaGFzaF9hY2N1ICYgMHgzRkZGRkZGRjtcbn1cblxuLy9mdW5jdGlvbiBST1RMMzIoeCxuKSB7IHJldHVybiAoKHggPDwgbikgfCAoeCA+Pj4gKDMyLW4pKSk7IH1cbi8vUHJvdmlkZXM6IGNhbWxfaGFzaF9taXhfaW50XG4vL1JlcXVpcmVzOiBjYW1sX211bFxuZnVuY3Rpb24gY2FtbF9oYXNoX21peF9pbnQoaCxkKSB7XG4gIGQgPSBjYW1sX211bChkLCAweGNjOWUyZDUxfDApO1xuICBkID0gKChkIDw8IDE1KSB8IChkID4+PiAoMzItMTUpKSk7IC8vIFJPVEwzMihkLCAxNSk7XG4gIGQgPSBjYW1sX211bChkLCAweDFiODczNTkzKTtcbiAgaCBePSBkO1xuICBoID0gKChoIDw8IDEzKSB8IChoID4+PiAoMzItMTMpKSk7ICAgLy9ST1RMMzIoaCwgMTMpO1xuICByZXR1cm4gKCgoaCArIChoIDw8IDIpKXwwKSArICgweGU2NTQ2YjY0fDApKXwwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2hhc2hfbWl4X2ZpbmFsXG4vL1JlcXVpcmVzOiBjYW1sX211bFxuZnVuY3Rpb24gY2FtbF9oYXNoX21peF9maW5hbChoKSB7XG4gIGggXj0gaCA+Pj4gMTY7XG4gIGggPSBjYW1sX211bCAoaCwgMHg4NWViY2E2YnwwKTtcbiAgaCBePSBoID4+PiAxMztcbiAgaCA9IGNhbWxfbXVsIChoLCAweGMyYjJhZTM1fDApO1xuICBoIF49IGggPj4+IDE2O1xuICByZXR1cm4gaDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9oYXNoX21peF9mbG9hdFxuLy9SZXF1aXJlczogY2FtbF9pbnQ2NF9iaXRzX29mX2Zsb2F0LCBjYW1sX2hhc2hfbWl4X2ludDY0XG5mdW5jdGlvbiBjYW1sX2hhc2hfbWl4X2Zsb2F0IChoLCB2MCkge1xuICByZXR1cm4gY2FtbF9oYXNoX21peF9pbnQ2NChoLCBjYW1sX2ludDY0X2JpdHNfb2ZfZmxvYXQgKHYwKSk7XG59XG4vL1Byb3ZpZGVzOiBjYW1sX2hhc2hfbWl4X2ludDY0XG4vL1JlcXVpcmVzOiBjYW1sX2hhc2hfbWl4X2ludFxuLy9SZXF1aXJlczogY2FtbF9pbnQ2NF9sbzMyLCBjYW1sX2ludDY0X2hpMzJcbmZ1bmN0aW9uIGNhbWxfaGFzaF9taXhfaW50NjQgKGgsIHYpIHtcbiAgaCA9IGNhbWxfaGFzaF9taXhfaW50KGgsIGNhbWxfaW50NjRfbG8zMih2KSk7XG4gIGggPSBjYW1sX2hhc2hfbWl4X2ludChoLCBjYW1sX2ludDY0X2hpMzIodikpO1xuICByZXR1cm4gaDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9oYXNoX21peF9qc2J5dGVzXG4vL1JlcXVpcmVzOiBjYW1sX2hhc2hfbWl4X2ludFxuZnVuY3Rpb24gY2FtbF9oYXNoX21peF9qc2J5dGVzKGgsIHMpIHtcbiAgdmFyIGxlbiA9IHMubGVuZ3RoLCBpLCB3O1xuICBmb3IgKGkgPSAwOyBpICsgNCA8PSBsZW47IGkgKz0gNCkge1xuICAgIHcgPSBzLmNoYXJDb2RlQXQoaSlcbiAgICAgIHwgKHMuY2hhckNvZGVBdChpKzEpIDw8IDgpXG4gICAgICB8IChzLmNoYXJDb2RlQXQoaSsyKSA8PCAxNilcbiAgICAgIHwgKHMuY2hhckNvZGVBdChpKzMpIDw8IDI0KTtcbiAgICBoID0gY2FtbF9oYXNoX21peF9pbnQoaCwgdyk7XG4gIH1cbiAgdyA9IDA7XG4gIHN3aXRjaCAobGVuICYgMykge1xuICBjYXNlIDM6IHcgID0gcy5jaGFyQ29kZUF0KGkrMikgPDwgMTY7XG4gIGNhc2UgMjogdyB8PSBzLmNoYXJDb2RlQXQoaSsxKSA8PCA4O1xuICBjYXNlIDE6XG4gICAgdyB8PSBzLmNoYXJDb2RlQXQoaSk7XG4gICAgaCA9IGNhbWxfaGFzaF9taXhfaW50KGgsIHcpO1xuICBkZWZhdWx0OlxuICB9XG4gIGggXj0gbGVuO1xuICByZXR1cm4gaDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9oYXNoX21peF9ieXRlc19hcnJcbi8vUmVxdWlyZXM6IGNhbWxfaGFzaF9taXhfaW50XG5mdW5jdGlvbiBjYW1sX2hhc2hfbWl4X2J5dGVzX2FycihoLCBzKSB7XG4gIHZhciBsZW4gPSBzLmxlbmd0aCwgaSwgdztcbiAgZm9yIChpID0gMDsgaSArIDQgPD0gbGVuOyBpICs9IDQpIHtcbiAgICB3ID0gc1tpXVxuICAgICAgfCAoc1tpKzFdIDw8IDgpXG4gICAgICB8IChzW2krMl0gPDwgMTYpXG4gICAgICB8IChzW2krM10gPDwgMjQpO1xuICAgIGggPSBjYW1sX2hhc2hfbWl4X2ludChoLCB3KTtcbiAgfVxuICB3ID0gMDtcbiAgc3dpdGNoIChsZW4gJiAzKSB7XG4gIGNhc2UgMzogdyAgPSBzW2krMl0gPDwgMTY7XG4gIGNhc2UgMjogdyB8PSBzW2krMV0gPDwgODtcbiAgY2FzZSAxOiB3IHw9IHNbaV07XG4gICAgaCA9IGNhbWxfaGFzaF9taXhfaW50KGgsIHcpO1xuICBkZWZhdWx0OlxuICB9XG4gIGggXj0gbGVuO1xuICByZXR1cm4gaDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9oYXNoX21peF9ieXRlc1xuLy9SZXF1aXJlczogY2FtbF9tbF9ieXRlc19jb250ZW50XG4vL1JlcXVpcmVzOiBjYW1sX2hhc2hfbWl4X2pzYnl0ZXNcbi8vUmVxdWlyZXM6IGNhbWxfaGFzaF9taXhfYnl0ZXNfYXJyXG5mdW5jdGlvbiBjYW1sX2hhc2hfbWl4X2J5dGVzKGgsIHYpIHtcbiAgdmFyIGNvbnRlbnQgPSBjYW1sX21sX2J5dGVzX2NvbnRlbnQodik7XG4gIGlmKHR5cGVvZiBjb250ZW50ID09PSBcInN0cmluZ1wiKVxuICAgIHJldHVybiBjYW1sX2hhc2hfbWl4X2pzYnl0ZXMoaCwgY29udGVudClcbiAgZWxzZSAvKiBBUlJBWSAqL1xuICAgIHJldHVybiBjYW1sX2hhc2hfbWl4X2J5dGVzX2FycihoLCBjb250ZW50KTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9oYXNoX21peF9zdHJpbmdcbi8vUmVxdWlyZXM6IGNhbWxfaGFzaF9taXhfanNieXRlcywgY2FtbF9qc2J5dGVzX29mX3N0cmluZ1xuZnVuY3Rpb24gY2FtbF9oYXNoX21peF9zdHJpbmcoaCwgdikge1xuICByZXR1cm4gY2FtbF9oYXNoX21peF9qc2J5dGVzKGgsIGNhbWxfanNieXRlc19vZl9zdHJpbmcodikpO1xufVxuXG5cbi8vUHJvdmlkZXM6IGNhbWxfaGFzaCBtdXRhYmxlXG4vL1JlcXVpcmVzOiBjYW1sX2lzX21sX3N0cmluZywgY2FtbF9pc19tbF9ieXRlc1xuLy9SZXF1aXJlczogY2FtbF9oYXNoX21peF9pbnQsIGNhbWxfaGFzaF9taXhfZmluYWxcbi8vUmVxdWlyZXM6IGNhbWxfaGFzaF9taXhfZmxvYXQsIGNhbWxfaGFzaF9taXhfc3RyaW5nLCBjYW1sX2hhc2hfbWl4X2J5dGVzLCBjYW1sX2N1c3RvbV9vcHNcbi8vUmVxdWlyZXM6IGNhbWxfaGFzaF9taXhfanNieXRlc1xuLy9SZXF1aXJlczogY2FtbF9pc19jb250aW51YXRpb25fdGFnXG5mdW5jdGlvbiBjYW1sX2hhc2ggKGNvdW50LCBsaW1pdCwgc2VlZCwgb2JqKSB7XG4gIHZhciBxdWV1ZSwgcmQsIHdyLCBzeiwgbnVtLCBoLCB2LCBpLCBsZW47XG4gIHN6ID0gbGltaXQ7XG4gIGlmIChzeiA8IDAgfHwgc3ogPiAyNTYpIHN6ID0gMjU2O1xuICBudW0gPSBjb3VudDtcbiAgaCA9IHNlZWQ7XG4gIHF1ZXVlID0gW29ial07IHJkID0gMDsgd3IgPSAxO1xuICB3aGlsZSAocmQgPCB3ciAmJiBudW0gPiAwKSB7XG4gICAgdiA9IHF1ZXVlW3JkKytdO1xuICAgIGlmICh2ICYmIHYuY2FtbF9jdXN0b20pe1xuICAgICAgaWYoY2FtbF9jdXN0b21fb3BzW3YuY2FtbF9jdXN0b21dICYmIGNhbWxfY3VzdG9tX29wc1t2LmNhbWxfY3VzdG9tXS5oYXNoKSB7XG4gICAgICAgIHZhciBoaCA9IGNhbWxfY3VzdG9tX29wc1t2LmNhbWxfY3VzdG9tXS5oYXNoKHYpO1xuICAgICAgICBoID0gY2FtbF9oYXNoX21peF9pbnQgKGgsIGhoKTtcbiAgICAgICAgbnVtIC0tO1xuICAgICAgfVxuICAgIH1cbiAgICBlbHNlIGlmICh2IGluc3RhbmNlb2YgQXJyYXkgJiYgdlswXSA9PT0gKHZbMF18MCkpIHtcbiAgICAgIHN3aXRjaCAodlswXSkge1xuICAgICAgY2FzZSAyNDg6XG4gICAgICAgIC8vIE9iamVjdFxuICAgICAgICBoID0gY2FtbF9oYXNoX21peF9pbnQoaCwgdlsyXSk7XG4gICAgICAgIG51bS0tO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgMjUwOlxuICAgICAgICAvLyBGb3J3YXJkXG4gICAgICAgIHF1ZXVlWy0tcmRdID0gdlsxXTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICBpZihjYW1sX2lzX2NvbnRpbnVhdGlvbl90YWcodlswXSkpIHtcbiAgICAgICAgICAvKiBBbGwgY29udGludWF0aW9ucyBoYXNoIHRvIHRoZSBzYW1lIHZhbHVlLFxuICAgICAgICAgICAgIHNpbmNlIHdlIGhhdmUgbm8gaWRlYSBob3cgdG8gZGlzdGluZ3Vpc2ggdGhlbS4gKi9cbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICB2YXIgdGFnID0gKCh2Lmxlbmd0aCAtIDEpIDw8IDEwKSB8IHZbMF07XG4gICAgICAgIGggPSBjYW1sX2hhc2hfbWl4X2ludChoLCB0YWcpO1xuICAgICAgICBmb3IgKGkgPSAxLCBsZW4gPSB2Lmxlbmd0aDsgaSA8IGxlbjsgaSsrKSB7XG4gICAgICAgICAgaWYgKHdyID49IHN6KSBicmVhaztcbiAgICAgICAgICBxdWV1ZVt3cisrXSA9IHZbaV07XG4gICAgICAgIH1cbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgfSBlbHNlIGlmIChjYW1sX2lzX21sX2J5dGVzKHYpKSB7XG4gICAgICBoID0gY2FtbF9oYXNoX21peF9ieXRlcyhoLHYpXG4gICAgICBudW0tLTtcbiAgICB9IGVsc2UgaWYgKGNhbWxfaXNfbWxfc3RyaW5nKHYpKSB7XG4gICAgICBoID0gY2FtbF9oYXNoX21peF9zdHJpbmcoaCx2KVxuICAgICAgbnVtLS07XG4gICAgfSBlbHNlIGlmICh0eXBlb2YgdiA9PT0gXCJzdHJpbmdcIikge1xuICAgICAgaCA9IGNhbWxfaGFzaF9taXhfanNieXRlcyhoLHYpXG4gICAgICBudW0tLTtcbiAgICB9IGVsc2UgaWYgKHYgPT09ICh2fDApKSB7XG4gICAgICAvLyBJbnRlZ2VyXG4gICAgICBoID0gY2FtbF9oYXNoX21peF9pbnQoaCwgdit2KzEpO1xuICAgICAgbnVtLS07XG4gICAgfSBlbHNlIGlmICh2ID09PSArdikge1xuICAgICAgLy8gRmxvYXRcbiAgICAgIGggPSBjYW1sX2hhc2hfbWl4X2Zsb2F0KGgsdik7XG4gICAgICBudW0tLTtcbiAgICB9XG4gIH1cbiAgaCA9IGNhbWxfaGFzaF9taXhfZmluYWwoaCk7XG4gIHJldHVybiBoICYgMHgzRkZGRkZGRjtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zdHJpbmdfaGFzaFxuLy9SZXF1aXJlczogY2FtbF9oYXNoX21peF9maW5hbCwgY2FtbF9oYXNoX21peF9zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfc3RyaW5nX2hhc2goaCwgdil7XG4gIHZhciBoID0gY2FtbF9oYXNoX21peF9zdHJpbmcoaCx2KTtcbiAgdmFyIGggPSBjYW1sX2hhc2hfbWl4X2ZpbmFsKGgpO1xuICByZXR1cm4gaCAmIDB4M0ZGRkZGRkY7XG59XG4iLCIvLyBKc19vZl9vY2FtbCBydW50aW1lIHN1cHBvcnRcbi8vIGh0dHA6Ly93d3cub2NzaWdlbi5vcmcvanNfb2Zfb2NhbWwvXG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbi8vIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuLy8gdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aCBsaW5raW5nIGV4Y2VwdGlvbjtcbi8vIGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbi8vXG4vLyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbi8vIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4vLyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlXG4vLyBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbi8vXG4vLyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2Vcbi8vIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4vLyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLlxuXG4vL1Byb3ZpZGVzOiBjYW1sX3VwZGF0ZV9kdW1teVxuZnVuY3Rpb24gY2FtbF91cGRhdGVfZHVtbXkgKHgsIHkpIHtcbiAgaWYoIHR5cGVvZiB5PT09XCJmdW5jdGlvblwiICkgeyB4LmZ1biA9IHk7IHJldHVybiAwOyB9XG4gIGlmKCB5LmZ1biApIHsgeC5mdW4gPSB5LmZ1bjsgcmV0dXJuIDA7IH1cbiAgdmFyIGkgPSB5Lmxlbmd0aDsgd2hpbGUgKGktLSkgeFtpXSA9IHlbaV07IHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2FsbG9jX2R1bW15X2luZml4XG4vL1JlcXVpcmVzOiBjYW1sX2NhbGxfZ2VuXG5mdW5jdGlvbiBjYW1sX2FsbG9jX2R1bW15X2luZml4ICgpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uIGYgKHgpIHsgcmV0dXJuIGNhbWxfY2FsbF9nZW4oZi5mdW4sIFt4XSkgfVxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX29ial9pc19ibG9jayBjb25zdCAoY29uc3QpXG5mdW5jdGlvbiBjYW1sX29ial9pc19ibG9jayAoeCkgeyByZXR1cm4gKyh4IGluc3RhbmNlb2YgQXJyYXkpOyB9XG5cblxuLy9Qcm92aWRlczogY2FtbF9vYmpfdGFnXG4vL1JlcXVpcmVzOiBjYW1sX2lzX21sX2J5dGVzLCBjYW1sX2lzX21sX3N0cmluZ1xuZnVuY3Rpb24gY2FtbF9vYmpfdGFnICh4KSB7XG4gIGlmICgoeCBpbnN0YW5jZW9mIEFycmF5KSAmJiB4WzBdID09ICh4WzBdID4+PiAwKSlcbiAgICByZXR1cm4geFswXVxuICBlbHNlIGlmIChjYW1sX2lzX21sX2J5dGVzKHgpKVxuICAgIHJldHVybiAyNTJcbiAgZWxzZSBpZiAoY2FtbF9pc19tbF9zdHJpbmcoeCkpXG4gICAgcmV0dXJuIDI1MlxuICBlbHNlIGlmICgoeCBpbnN0YW5jZW9mIEZ1bmN0aW9uKSB8fCB0eXBlb2YgeCA9PSBcImZ1bmN0aW9uXCIpXG4gICAgcmV0dXJuIDI0N1xuICBlbHNlIGlmICh4ICYmIHguY2FtbF9jdXN0b20pXG4gICAgcmV0dXJuIDI1NVxuICBlbHNlXG4gICAgcmV0dXJuIDEwMDBcbn1cblxuLy9Qcm92aWRlczogY2FtbF9vYmpfc2V0X3RhZyAobXV0YWJsZSwgY29uc3QpXG5mdW5jdGlvbiBjYW1sX29ial9zZXRfdGFnICh4LCB0YWcpIHsgeFswXSA9IHRhZzsgcmV0dXJuIDA7IH1cbi8vUHJvdmlkZXM6IGNhbWxfb2JqX2Jsb2NrIGNvbnN0IChjb25zdCxjb25zdClcbmZ1bmN0aW9uIGNhbWxfb2JqX2Jsb2NrICh0YWcsIHNpemUpIHtcbiAgdmFyIG8gPSBuZXcgQXJyYXkoc2l6ZSsxKTtcbiAgb1swXT10YWc7XG4gIGZvciAodmFyIGkgPSAxOyBpIDw9IHNpemU7IGkrKykgb1tpXSA9IDA7XG4gIHJldHVybiBvO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX29ial93aXRoX3RhZ1xuZnVuY3Rpb24gY2FtbF9vYmpfd2l0aF90YWcodGFnLHgpIHtcbiAgdmFyIGwgPSB4Lmxlbmd0aDtcbiAgdmFyIGEgPSBuZXcgQXJyYXkobCk7XG4gIGFbMF0gPSB0YWc7XG4gIGZvcih2YXIgaSA9IDE7IGkgPCBsOyBpKysgKSBhW2ldID0geFtpXTtcbiAgcmV0dXJuIGE7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfb2JqX2R1cCBtdXRhYmxlIChtdXRhYmxlKVxuZnVuY3Rpb24gY2FtbF9vYmpfZHVwICh4KSB7XG4gIHZhciBsID0geC5sZW5ndGg7XG4gIHZhciBhID0gbmV3IEFycmF5KGwpO1xuICBmb3IodmFyIGkgPSAwOyBpIDwgbDsgaSsrICkgYVtpXSA9IHhbaV07XG4gIHJldHVybiBhO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX29ial90cnVuY2F0ZSAobXV0YWJsZSwgY29uc3QpXG4vL1JlcXVpcmVzOiBjYW1sX2ludmFsaWRfYXJndW1lbnRcbmZ1bmN0aW9uIGNhbWxfb2JqX3RydW5jYXRlICh4LCBzKSB7XG4gIGlmIChzPD0wIHx8IHMgKyAxID4geC5sZW5ndGgpXG4gICAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50IChcIk9iai50cnVuY2F0ZVwiKTtcbiAgaWYgKHgubGVuZ3RoICE9IHMgKyAxKSB4Lmxlbmd0aCA9IHMgKyAxO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9vYmpfbWFrZV9mb3J3YXJkXG5mdW5jdGlvbiBjYW1sX29ial9tYWtlX2ZvcndhcmQgKGIsdikge1xuICBiWzBdPTI1MDtcbiAgYlsxXT12O1xuICByZXR1cm4gMFxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX29ial9jb21wYXJlX2FuZF9zd2FwXG5mdW5jdGlvbiBjYW1sX29ial9jb21wYXJlX2FuZF9zd2FwKHgsaSxvbGQsbil7XG4gIGlmKHhbaSsxXSA9PSBvbGQpIHtcbiAgICB4W2krMV0gPSBuO1xuICAgIHJldHVybiAxO1xuICB9XG4gIHJldHVybiAwXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfb2JqX2lzX3NoYXJlZFxuZnVuY3Rpb24gY2FtbF9vYmpfaXNfc2hhcmVkKHgpe1xuICByZXR1cm4gMVxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2xhenlfbWFrZV9mb3J3YXJkIGNvbnN0IChtdXRhYmxlKVxuZnVuY3Rpb24gY2FtbF9sYXp5X21ha2VfZm9yd2FyZCAodikgeyByZXR1cm4gWzI1MCwgdl07IH1cblxuLy8vLy8vLy8vLy8vLyBDYW1saW50ZXJuYWxPT1xuLy9Qcm92aWRlczogY2FtbF9nZXRfcHVibGljX21ldGhvZCBjb25zdFxudmFyIGNhbWxfbWV0aG9kX2NhY2hlID0gW107XG5mdW5jdGlvbiBjYW1sX2dldF9wdWJsaWNfbWV0aG9kIChvYmosIHRhZywgY2FjaGVpZCkge1xuICB2YXIgbWV0aHMgPSBvYmpbMV07XG4gIHZhciBvZnMgPSBjYW1sX21ldGhvZF9jYWNoZVtjYWNoZWlkXTtcbiAgaWYgKG9mcyA9PT0gdW5kZWZpbmVkKSB7XG4gICAgLy8gTWFrZSBzdXJlIHRoZSBhcnJheSBpcyBub3Qgc3BhcnNlXG4gICAgZm9yICh2YXIgaSA9IGNhbWxfbWV0aG9kX2NhY2hlLmxlbmd0aDsgaSA8IGNhY2hlaWQ7IGkrKylcbiAgICAgIGNhbWxfbWV0aG9kX2NhY2hlW2ldID0gMDtcbiAgfSBlbHNlIGlmIChtZXRoc1tvZnNdID09PSB0YWcpIHtcbiAgICByZXR1cm4gbWV0aHNbb2ZzIC0gMV07XG4gIH1cbiAgdmFyIGxpID0gMywgaGkgPSBtZXRoc1sxXSAqIDIgKyAxLCBtaTtcbiAgd2hpbGUgKGxpIDwgaGkpIHtcbiAgICBtaSA9ICgobGkraGkpID4+IDEpIHwgMTtcbiAgICBpZiAodGFnIDwgbWV0aHNbbWkrMV0pIGhpID0gbWktMjtcbiAgICBlbHNlIGxpID0gbWk7XG4gIH1cbiAgY2FtbF9tZXRob2RfY2FjaGVbY2FjaGVpZF0gPSBsaSArIDE7XG4gIC8qIHJldHVybiAwIGlmIHRhZyBpcyBub3QgdGhlcmUgKi9cbiAgcmV0dXJuICh0YWcgPT0gbWV0aHNbbGkrMV0gPyBtZXRoc1tsaV0gOiAwKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9vb19sYXN0X2lkXG52YXIgY2FtbF9vb19sYXN0X2lkID0gMDtcblxuLy9Qcm92aWRlczogY2FtbF9zZXRfb29faWRcbi8vUmVxdWlyZXM6IGNhbWxfb29fbGFzdF9pZFxuZnVuY3Rpb24gY2FtbF9zZXRfb29faWQgKGIpIHtcbiAgYlsyXT1jYW1sX29vX2xhc3RfaWQrKztcbiAgcmV0dXJuIGI7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZnJlc2hfb29faWQgY29uc3Rcbi8vUmVxdWlyZXM6IGNhbWxfb29fbGFzdF9pZFxuZnVuY3Rpb24gY2FtbF9mcmVzaF9vb19pZCgpIHtcbiAgcmV0dXJuIGNhbWxfb29fbGFzdF9pZCsrO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX29ial9yYXdfZmllbGRcbmZ1bmN0aW9uIGNhbWxfb2JqX3Jhd19maWVsZChvLGkpIHsgcmV0dXJuIG9baSsxXSB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfb2JqX3NldF9yYXdfZmllbGRcbmZ1bmN0aW9uIGNhbWxfb2JqX3NldF9yYXdfZmllbGQobyxpLHYpIHsgcmV0dXJuIG9baSsxXSA9IHYgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX29ial9yZWFjaGFibGVfd29yZHNcbmZ1bmN0aW9uIGNhbWxfb2JqX3JlYWNoYWJsZV93b3JkcyhvKSB7IHJldHVybiAwOyB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfb2JqX2FkZF9vZmZzZXRcbi8vUmVxdWlyZXM6IGNhbWxfZmFpbHdpdGhcbmZ1bmN0aW9uIGNhbWxfb2JqX2FkZF9vZmZzZXQodixvZmZzZXQpIHtcbiAgY2FtbF9mYWlsd2l0aChcIk9iai5hZGRfb2Zmc2V0IGlzIG5vdCBzdXBwb3J0ZWRcIik7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfb2JqX3VwZGF0ZV90YWdcbmZ1bmN0aW9uIGNhbWxfb2JqX3VwZGF0ZV90YWcoYixvLG4pIHtcbiAgICBpZihiWzBdPT1vKSB7IGJbMF0gPSBuOyByZXR1cm4gMSB9XG4gICAgcmV0dXJuIDBcbn1cblxuLy9Qcm92aWRlczogY2FtbF9sYXp5X3VwZGF0ZV90b19mb3JjaW5nXG4vL1JlcXVpcmVzOiBjYW1sX29ial90YWcsIGNhbWxfb2JqX3VwZGF0ZV90YWcsIGNhbWxfbWxfZG9tYWluX3VuaXF1ZV90b2tlblxuZnVuY3Rpb24gY2FtbF9sYXp5X3VwZGF0ZV90b19mb3JjaW5nKG8pIHtcbiAgdmFyIHQgPSBjYW1sX29ial90YWcobyk7XG4gIGlmKHQgIT0gMjQ2ICYmIHQgIT0gMjUwICYmIHQgIT0gMjQ0KVxuICAgIHJldHVybiA0XG4gIGlmKGNhbWxfb2JqX3VwZGF0ZV90YWcobywgMjQ2LCAyNDQpKSB7XG4gICAgcmV0dXJuIDBcbiAgfSBlbHNlIHtcbiAgICB2YXIgZmllbGQwID0gb1sxXTtcbiAgICB0ID0gb1swXVxuICAgIGlmKHQgPT0gMjQ0KSB7XG4gICAgICBpZihmaWVsZDAgPT0gY2FtbF9tbF9kb21haW5fdW5pcXVlX3Rva2VuKDApKVxuICAgICAgICByZXR1cm4gMVxuICAgICAgZWxzZVxuICAgICAgICByZXR1cm4gMlxuICAgIH0gZWxzZSBpZiAodCA9PSAyNTApIHtcbiAgICAgIHJldHVybiAzO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBhc3NlcnQgdCA9IGxhenlfdGFnXG4gICAgICByZXR1cm4gMjtcbiAgICB9XG4gIH1cbn1cblxuLy9Qcm92aWRlczogY2FtbF9sYXp5X3VwZGF0ZV90b19mb3J3YXJkXG4vL1JlcXVpcmVzOiBjYW1sX29ial91cGRhdGVfdGFnXG4gIGZ1bmN0aW9uIGNhbWxfbGF6eV91cGRhdGVfdG9fZm9yd2FyZChvKSB7XG4gIGNhbWxfb2JqX3VwZGF0ZV90YWcobywyNDQsMjUwKTtcbiAgcmV0dXJuIDA7IC8vIHVuaXRcbn1cblxuXG4vL1Byb3ZpZGVzOiBjYW1sX2xhenlfcmVzZXRfdG9fbGF6eVxuLy9SZXF1aXJlczogY2FtbF9vYmpfdXBkYXRlX3RhZ1xuZnVuY3Rpb24gY2FtbF9sYXp5X3Jlc2V0X3RvX2xhenkobykge1xuICBjYW1sX29ial91cGRhdGVfdGFnKG8sMjQ0LDI0Nik7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2xhenlfcmVhZF9yZXN1bHRcbi8vUmVxdWlyZXM6IGNhbWxfb2JqX3RhZ1xuZnVuY3Rpb24gY2FtbF9sYXp5X3JlYWRfcmVzdWx0KG8pIHtcbiAgcmV0dXJuIChjYW1sX29ial90YWcobykgPT0gMjUwKT9vWzFdOm87XG59XG5cblxuLy9Qcm92aWRlczogY2FtbF9pc19jb250aW51YXRpb25fdGFnXG4vL1ZlcnNpb246IDwgNVxuZnVuY3Rpb24gY2FtbF9pc19jb250aW51YXRpb25fdGFnKHQpIHtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfaXNfY29udGludWF0aW9uX3RhZ1xuLy9WZXJzaW9uOiA+PSA1XG5mdW5jdGlvbiBjYW1sX2lzX2NvbnRpbnVhdGlvbl90YWcodCkge1xuICByZXR1cm4gKHQgPT0gMjQ1KSA/IDEgOiAwO1xufVxuIiwiLy9Qcm92aWRlczogY2FtbF9kb21haW5fZGxzXG52YXIgY2FtbF9kb21haW5fZGxzID0gWzBdO1xuXG4vL1Byb3ZpZGVzOiBjYW1sX2RvbWFpbl9kbHNfc2V0XG4vL1JlcXVpcmVzOiBjYW1sX2RvbWFpbl9kbHNcbmZ1bmN0aW9uIGNhbWxfZG9tYWluX2Rsc19zZXQoYSkge1xuICBjYW1sX2RvbWFpbl9kbHMgPSBhO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2RvbWFpbl9kbHNfZ2V0XG4vL1JlcXVpcmVzOiBjYW1sX2RvbWFpbl9kbHNcbmZ1bmN0aW9uIGNhbWxfZG9tYWluX2Rsc19nZXQodW5pdCkge1xuICByZXR1cm4gY2FtbF9kb21haW5fZGxzO1xufVxuXG5cbi8vUHJvdmlkZXM6IGNhbWxfYXRvbWljX2xvYWRcbmZ1bmN0aW9uIGNhbWxfYXRvbWljX2xvYWQocmVmKXtcbiAgcmV0dXJuIHJlZlsxXTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9hdG9taWNfY2FzXG5mdW5jdGlvbiBjYW1sX2F0b21pY19jYXMocmVmLG8sbikge1xuICBpZihyZWZbMV0gPT09IG8pe1xuICAgIHJlZlsxXSA9IG47XG4gICAgcmV0dXJuIDE7XG4gIH1cbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYXRvbWljX2ZldGNoX2FkZFxuZnVuY3Rpb24gY2FtbF9hdG9taWNfZmV0Y2hfYWRkKHJlZiwgaSkge1xuICB2YXIgb2xkID0gcmVmWzFdO1xuICByZWZbMV0gKz0gaTtcbiAgcmV0dXJuIG9sZDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9hdG9taWNfZXhjaGFuZ2VcbmZ1bmN0aW9uIGNhbWxfYXRvbWljX2V4Y2hhbmdlKHJlZiwgdikge1xuICB2YXIgciA9IHJlZlsxXTtcbiAgcmVmWzFdID0gdjtcbiAgcmV0dXJuIHI7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfZG9tYWluX3VuaXF1ZV90b2tlblxudmFyIGNhbWxfbWxfZG9tYWluX3VuaXF1ZV90b2tlbl8gPSBbMF1cbmZ1bmN0aW9uIGNhbWxfbWxfZG9tYWluX3VuaXF1ZV90b2tlbih1bml0KSB7XG4gIHJldHVybiBjYW1sX21sX2RvbWFpbl91bmlxdWVfdG9rZW5fXG59XG5cblxuLy9Qcm92aWRlczogY2FtbF9tbF9kb21haW5fc2V0X25hbWVcbmZ1bmN0aW9uIGNhbWxfbWxfZG9tYWluX3NldF9uYW1lKF9uYW1lKSB7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3JlY29tbWVuZGVkX2RvbWFpbl9jb3VudFxuZnVuY3Rpb24gY2FtbF9yZWNvbW1lbmRlZF9kb21haW5fY291bnQodW5pdCkgeyByZXR1cm4gMSB9XG5cblxuLy9Qcm92aWRlczogY2FtbF9kb21haW5faWRcbnZhciBjYW1sX2RvbWFpbl9pZCA9IDA7XG5cbi8vUHJvdmlkZXM6IGNhbWxfZG9tYWluX3NwYXduXG4vL1JlcXVpcmVzOiBjYW1sX21sX211dGV4X3VubG9ja1xuLy9SZXF1aXJlczogY2FtbF9kb21haW5faWRcbi8vUmVxdWlyZXM6IGNhbWxfY2FsbGJhY2tcbnZhciBjYW1sX2RvbWFpbl9sYXRlc3RfaWR4ID0gMVxuZnVuY3Rpb24gY2FtbF9kb21haW5fc3Bhd24oZixtdXRleCl7XG4gICAgdmFyIGlkID0gY2FtbF9kb21haW5fbGF0ZXN0X2lkeCsrO1xuICAgIHZhciBvbGQgPSBjYW1sX2RvbWFpbl9pZDtcbiAgICBjYW1sX2RvbWFpbl9pZCA9IGlkO1xuICAgIGNhbWxfY2FsbGJhY2soZixbMF0pO1xuICAgIGNhbWxfZG9tYWluX2lkID0gb2xkO1xuICAgIGNhbWxfbWxfbXV0ZXhfdW5sb2NrKG11dGV4KTtcbiAgICByZXR1cm4gaWQ7XG59XG5cblxuLy9Qcm92aWRlczogY2FtbF9tbF9kb21haW5faWRcbi8vUmVxdWlyZXM6IGNhbWxfZG9tYWluX2lkXG5mdW5jdGlvbiBjYW1sX21sX2RvbWFpbl9pZCh1bml0KXtcbiAgICByZXR1cm4gY2FtbF9kb21haW5faWQ7XG59XG5cblxuLy9Qcm92aWRlczogY2FtbF9tbF9kb21haW5fY3B1X3JlbGF4XG5mdW5jdGlvbiBjYW1sX21sX2RvbWFpbl9jcHVfcmVsYXgodW5pdCl7XG4gICAgcmV0dXJuIDA7XG59XG4iLCIvLyBKc19vZl9vY2FtbCBydW50aW1lIHN1cHBvcnRcbi8vIGh0dHA6Ly93d3cub2NzaWdlbi5vcmcvanNfb2Zfb2NhbWwvXG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbi8vIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuLy8gdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aCBsaW5raW5nIGV4Y2VwdGlvbjtcbi8vIGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbi8vXG4vLyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbi8vIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4vLyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlXG4vLyBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbi8vXG4vLyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2Vcbi8vIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4vLyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLlxuXG4vL1Byb3ZpZGVzOiBjYW1sX2NvbXBhcmVfdmFsX3RhZ1xuLy9SZXF1aXJlczogY2FtbF9pc19tbF9zdHJpbmcsIGNhbWxfaXNfbWxfYnl0ZXNcbmZ1bmN0aW9uIGNhbWxfY29tcGFyZV92YWxfdGFnKGEpe1xuICBpZiAodHlwZW9mIGEgPT09IFwibnVtYmVyXCIpIHJldHVybiAxMDAwOyAvLyBpbnRfdGFnICh3ZSB1c2UgaXQgZm9yIGFsbCBudW1iZXJzKVxuICBlbHNlIGlmIChjYW1sX2lzX21sX2J5dGVzKGEpKSByZXR1cm4gMjUyOyAvLyBzdHJpbmdfdGFnXG4gIGVsc2UgaWYgKGNhbWxfaXNfbWxfc3RyaW5nKGEpKSByZXR1cm4gMTI1MjsgLy8gb2NhbWwgc3RyaW5nIChpZiBkaWZmZXJlbnQgZnJvbSBieXRlcylcbiAgZWxzZSBpZiAoYSBpbnN0YW5jZW9mIEFycmF5ICYmIGFbMF0gPT09IChhWzBdPj4+MCkgJiYgYVswXSA8PSAyNTUpIHtcbiAgICAvLyBMb29rIGxpa2UgYW4gb2NhbWwgYmxvY2tcbiAgICB2YXIgdGFnID0gYVswXSB8IDA7XG4gICAgLy8gaWdub3JlIGRvdWJsZV9hcnJheV90YWcgYmVjYXVzZSB3ZSBjYW5ub3QgYWNjdXJhdGVseSBzZXRcbiAgICAvLyB0aGlzIHRhZyB3aGVuIHdlIGNyZWF0ZSBhbiBhcnJheSBvZiBmbG9hdC5cbiAgICByZXR1cm4gKHRhZyA9PSAyNTQpPzA6dGFnXG4gIH1cbiAgZWxzZSBpZiAoYSBpbnN0YW5jZW9mIFN0cmluZykgcmV0dXJuIDEyNTIwOyAvLyBqYXZhc2NyaXB0IHN0cmluZywgbGlrZSBzdHJpbmdfdGFnICgyNTIpXG4gIGVsc2UgaWYgKHR5cGVvZiBhID09IFwic3RyaW5nXCIpIHJldHVybiAxMjUyMDsgLy8gamF2YXNjcmlwdCBzdHJpbmcsIGxpa2Ugc3RyaW5nX3RhZyAoMjUyKVxuICBlbHNlIGlmIChhIGluc3RhbmNlb2YgTnVtYmVyKSByZXR1cm4gMTAwMDsgLy8gaW50X3RhZyAod2UgdXNlIGl0IGZvciBhbGwgbnVtYmVycylcbiAgZWxzZSBpZiAoYSAmJiBhLmNhbWxfY3VzdG9tKSByZXR1cm4gMTI1NTsgLy8gbGlrZSBjdXN0b21fdGFnICgyNTUpXG4gIGVsc2UgaWYgKGEgJiYgYS5jb21wYXJlKSByZXR1cm4gMTI1NjsgLy8gbGlrZSBjdXN0b21fdGFnICgyNTUpXG4gIGVsc2UgaWYgKHR5cGVvZiBhID09IFwiZnVuY3Rpb25cIikgcmV0dXJuIDEyNDc7IC8vIGxpa2UgY2xvc3VyZV90YWcgKDI0NylcbiAgZWxzZSBpZiAodHlwZW9mIGEgPT0gXCJzeW1ib2xcIikgcmV0dXJuIDEyNTE7XG4gIHJldHVybiAxMDAxOyAvL291dF9vZl9oZWFwX3RhZ1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2NvbXBhcmVfdmFsX2dldF9jdXN0b21cbi8vUmVxdWlyZXM6IGNhbWxfY3VzdG9tX29wc1xuZnVuY3Rpb24gY2FtbF9jb21wYXJlX3ZhbF9nZXRfY3VzdG9tKGEpe1xuICByZXR1cm4gY2FtbF9jdXN0b21fb3BzW2EuY2FtbF9jdXN0b21dICYmIGNhbWxfY3VzdG9tX29wc1thLmNhbWxfY3VzdG9tXS5jb21wYXJlO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2NvbXBhcmVfdmFsX251bWJlcl9jdXN0b21cbi8vUmVxdWlyZXM6IGNhbWxfY29tcGFyZV92YWxfZ2V0X2N1c3RvbVxuZnVuY3Rpb24gY2FtbF9jb21wYXJlX3ZhbF9udW1iZXJfY3VzdG9tKG51bSwgY3VzdG9tLCBzd2FwLCB0b3RhbCkge1xuICB2YXIgY29tcCA9IGNhbWxfY29tcGFyZV92YWxfZ2V0X2N1c3RvbShjdXN0b20pO1xuICBpZihjb21wKSB7XG4gICAgdmFyIHggPSAoc3dhcCA+IDApP2NvbXAoY3VzdG9tLG51bSx0b3RhbCk6Y29tcChudW0sY3VzdG9tLHRvdGFsKTtcbiAgICBpZih0b3RhbCAmJiB4ICE9IHgpIHJldHVybiBzd2FwOyAvLyB0b3RhbCAmJiBuYW5cbiAgICBpZigreCAhPSAreCkgcmV0dXJuICt4OyAvLyBuYW5cbiAgICBpZigoeCB8IDApICE9IDApIHJldHVybiAoeCB8IDApOyAvLyAhbmFuXG4gIH1cbiAgcmV0dXJuIHN3YXBcbn1cblxuLy9Qcm92aWRlczogY2FtbF9jb21wYXJlX3ZhbCAoY29uc3QsIGNvbnN0LCBjb25zdClcbi8vUmVxdWlyZXM6IGNhbWxfaW50X2NvbXBhcmUsIGNhbWxfc3RyaW5nX2NvbXBhcmUsIGNhbWxfYnl0ZXNfY29tcGFyZVxuLy9SZXF1aXJlczogY2FtbF9pbnZhbGlkX2FyZ3VtZW50LCBjYW1sX2NvbXBhcmVfdmFsX2dldF9jdXN0b20sIGNhbWxfY29tcGFyZV92YWxfdGFnXG4vL1JlcXVpcmVzOiBjYW1sX2NvbXBhcmVfdmFsX251bWJlcl9jdXN0b21cbi8vUmVxdWlyZXM6IGNhbWxfanNieXRlc19vZl9zdHJpbmdcbi8vUmVxdWlyZXM6IGNhbWxfaXNfY29udGludWF0aW9uX3RhZ1xuZnVuY3Rpb24gY2FtbF9jb21wYXJlX3ZhbCAoYSwgYiwgdG90YWwpIHtcbiAgdmFyIHN0YWNrID0gW107XG4gIGZvcig7Oykge1xuICAgIGlmICghKHRvdGFsICYmIGEgPT09IGIpKSB7XG4gICAgICB2YXIgdGFnX2EgPSBjYW1sX2NvbXBhcmVfdmFsX3RhZyhhKTtcbiAgICAgIC8vIGZvcndhcmRfdGFnID9cbiAgICAgIGlmKHRhZ19hID09IDI1MCkgeyBhID0gYVsxXTsgY29udGludWUgfVxuXG4gICAgICB2YXIgdGFnX2IgPSBjYW1sX2NvbXBhcmVfdmFsX3RhZyhiKTtcbiAgICAgIC8vIGZvcndhcmRfdGFnID9cbiAgICAgIGlmKHRhZ19iID09IDI1MCkgeyBiID0gYlsxXTsgY29udGludWUgfVxuXG4gICAgICAvLyB0YWdzIGFyZSBkaWZmZXJlbnRcbiAgICAgIGlmKHRhZ19hICE9PSB0YWdfYikge1xuICAgICAgICBpZih0YWdfYSA9PSAxMDAwKSB7XG4gICAgICAgICAgaWYodGFnX2IgPT0gMTI1NSkgeyAvL2ltbWVkaWF0ZSBjYW4gY29tcGFyZSBhZ2FpbnN0IGN1c3RvbVxuICAgICAgICAgICAgcmV0dXJuIGNhbWxfY29tcGFyZV92YWxfbnVtYmVyX2N1c3RvbShhLCBiLCAtMSwgdG90YWwpO1xuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gLTFcbiAgICAgICAgfVxuICAgICAgICBpZih0YWdfYiA9PSAxMDAwKSB7XG4gICAgICAgICAgaWYodGFnX2EgPT0gMTI1NSkgeyAvL2ltbWVkaWF0ZSBjYW4gY29tcGFyZSBhZ2FpbnN0IGN1c3RvbVxuICAgICAgICAgICAgcmV0dXJuIGNhbWxfY29tcGFyZV92YWxfbnVtYmVyX2N1c3RvbShiLCBhLCAxLCB0b3RhbCk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiAxXG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuICh0YWdfYSA8IHRhZ19iKT8tMToxO1xuICAgICAgfVxuICAgICAgc3dpdGNoKHRhZ19hKXtcbiAgICAgICAgLy8gMjQ2OiBMYXp5X3RhZyBoYW5kbGVkIGJlbGxvd1xuICAgICAgY2FzZSAyNDc6IC8vIENsb3N1cmVfdGFnXG4gICAgICAgIC8vIENhbm5vdCBoYXBwZW5cbiAgICAgICAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiY29tcGFyZTogZnVuY3Rpb25hbCB2YWx1ZVwiKTtcbiAgICAgICAgYnJlYWtcbiAgICAgIGNhc2UgMjQ4OiAvLyBPYmplY3RcbiAgICAgICAgdmFyIHggPSBjYW1sX2ludF9jb21wYXJlKGFbMl0sIGJbMl0pO1xuICAgICAgICBpZiAoeCAhPSAwKSByZXR1cm4gKHggfCAwKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIDI0OTogLy8gSW5maXhcbiAgICAgICAgLy8gQ2Fubm90IGhhcHBlblxuICAgICAgICBjYW1sX2ludmFsaWRfYXJndW1lbnQoXCJjb21wYXJlOiBmdW5jdGlvbmFsIHZhbHVlXCIpO1xuICAgICAgICBicmVha1xuICAgICAgY2FzZSAyNTA6IC8vIEZvcndhcmQgdGFnXG4gICAgICAgIC8vIENhbm5vdCBoYXBwZW4sIGhhbmRsZWQgYWJvdmVcbiAgICAgICAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiZXF1YWw6IGdvdCBGb3J3YXJkX3RhZywgc2hvdWxkIG5vdCBoYXBwZW5cIik7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAyNTE6IC8vQWJzdHJhY3RcbiAgICAgICAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiZXF1YWw6IGFic3RyYWN0IHZhbHVlXCIpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgMjUyOiAvLyBPQ2FtbCBieXRlc1xuICAgICAgICBpZiAoYSAhPT0gYikge1xuICAgICAgICAgIHZhciB4ID0gY2FtbF9ieXRlc19jb21wYXJlKGEsIGIpO1xuICAgICAgICAgIGlmICh4ICE9IDApIHJldHVybiAoeCB8IDApO1xuICAgICAgICB9O1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgMjUzOiAvLyBEb3VibGVfdGFnXG4gICAgICAgIC8vIENhbm5vdCBoYXBwZW5cbiAgICAgICAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiZXF1YWw6IGdvdCBEb3VibGVfdGFnLCBzaG91bGQgbm90IGhhcHBlblwiKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIDI1NDogLy8gRG91YmxlX2FycmF5X3RhZ1xuICAgICAgICAvLyBDYW5ub3QgaGFwcGVuLCBoYW5kbGVkIGFib3ZlXG4gICAgICAgIGNhbWxfaW52YWxpZF9hcmd1bWVudChcImVxdWFsOiBnb3QgRG91YmxlX2FycmF5X3RhZywgc2hvdWxkIG5vdCBoYXBwZW5cIik7XG4gICAgICAgIGJyZWFrXG4gICAgICBjYXNlIDI1NTogLy8gQ3VzdG9tX3RhZ1xuICAgICAgICBjYW1sX2ludmFsaWRfYXJndW1lbnQoXCJlcXVhbDogZ290IEN1c3RvbV90YWcsIHNob3VsZCBub3QgaGFwcGVuXCIpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgMTI0NzogLy8gRnVuY3Rpb25cbiAgICAgICAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiY29tcGFyZTogZnVuY3Rpb25hbCB2YWx1ZVwiKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIDEyNTU6IC8vIEN1c3RvbVxuICAgICAgICB2YXIgY29tcCA9IGNhbWxfY29tcGFyZV92YWxfZ2V0X2N1c3RvbShhKTtcbiAgICAgICAgaWYoY29tcCAhPSBjYW1sX2NvbXBhcmVfdmFsX2dldF9jdXN0b20oYikpe1xuICAgICAgICAgIHJldHVybiAoYS5jYW1sX2N1c3RvbTxiLmNhbWxfY3VzdG9tKT8tMToxO1xuICAgICAgICB9XG4gICAgICAgIGlmKCFjb21wKVxuICAgICAgICAgIGNhbWxfaW52YWxpZF9hcmd1bWVudChcImNvbXBhcmU6IGFic3RyYWN0IHZhbHVlXCIpO1xuICAgICAgICB2YXIgeCA9IGNvbXAoYSxiLHRvdGFsKTtcbiAgICAgICAgaWYoeCAhPSB4KXsgLy8gUHJvdGVjdCBhZ2FpbnN0IGludmFsaWQgVU5PUkRFUkVEXG4gICAgICAgICAgcmV0dXJuIHRvdGFsPy0xOng7XG4gICAgICAgIH1cbiAgICAgICAgaWYoeCAhPT0gKHh8MCkpeyAvLyBQcm90ZWN0IGFnYWluc3QgaW52YWxpZCByZXR1cm4gdmFsdWVcbiAgICAgICAgICByZXR1cm4gLTFcbiAgICAgICAgfVxuICAgICAgICBpZiAoeCAhPSAwKSByZXR1cm4gKHggfCAwKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIDEyNTY6IC8vIGNvbXBhcmUgZnVuY3Rpb25cbiAgICAgICAgdmFyIHggPSBhLmNvbXBhcmUoYix0b3RhbCk7XG4gICAgICAgIGlmKHggIT0geCkgeyAvLyBQcm90ZWN0IGFnYWluc3QgaW52YWxpZCBVTk9SREVSRURcbiAgICAgICAgICByZXR1cm4gdG90YWw/LTE6eDtcbiAgICAgICAgfVxuICAgICAgICBpZih4ICE9PSAoeHwwKSl7IC8vIFByb3RlY3QgYWdhaW5zdCBpbnZhbGlkIHJldHVybiB2YWx1ZVxuICAgICAgICAgIHJldHVybiAtMVxuICAgICAgICB9XG4gICAgICAgIGlmICh4ICE9IDApIHJldHVybiAoeCB8IDApO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgMTAwMDogLy8gTnVtYmVyXG4gICAgICAgIGEgPSArYTtcbiAgICAgICAgYiA9ICtiO1xuICAgICAgICBpZiAoYSA8IGIpIHJldHVybiAtMTtcbiAgICAgICAgaWYgKGEgPiBiKSByZXR1cm4gMTtcbiAgICAgICAgaWYgKGEgIT0gYikge1xuICAgICAgICAgIGlmICghdG90YWwpIHJldHVybiBOYU47XG4gICAgICAgICAgaWYgKGEgPT0gYSkgcmV0dXJuIDE7XG4gICAgICAgICAgaWYgKGIgPT0gYikgcmV0dXJuIC0xO1xuICAgICAgICB9XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAxMDAxOiAvLyBUaGUgcmVzdFxuICAgICAgICAvLyBIZXJlIHdlIGNhbiBiZSBpbiB0aGUgZm9sbG93aW5nIGNhc2VzOlxuICAgICAgICAvLyAxLiBKYXZhU2NyaXB0IHByaW1pdGl2ZSB0eXBlc1xuICAgICAgICAvLyAyLiBKYXZhU2NyaXB0IG9iamVjdCB0aGF0IGNhbiBiZSBjb2VyY2VkIHRvIHByaW1pdGl2ZSB0eXBlc1xuICAgICAgICAvLyAzLiBKYXZhU2NyaXB0IG9iamVjdCB0aGFuIGNhbm5vdCBiZSBjb2VyY2VkIHRvIHByaW1pdGl2ZSB0eXBlc1xuICAgICAgICAvL1xuICAgICAgICAvLyAoMykgd2lsbCByYWlzZSBhIFtUeXBlRXJyb3JdXG4gICAgICAgIC8vICgyKSB3aWxsIGNvZXJjZSB0byBwcmltaXRpdmUgdHlwZXMgdXNpbmcgW3ZhbHVlT2ZdIG9yIFt0b1N0cmluZ11cbiAgICAgICAgLy8gKDIpIGFuZCAoMyksIGFmdGVyIGV2ZW50dWFsIGNvZXJjaW9uXG4gICAgICAgIC8vIC0gaWYgYSBhbmQgYiBhcmUgc3RyaW5ncywgYXBwbHkgbGV4aWNvZ3JhcGhpYyBjb21wYXJpc29uXG4gICAgICAgIC8vIC0gaWYgYSBvciBiIGFyZSBub3Qgc3RyaW5ncywgY29udmVydCBhIGFuZCBiIHRvIG51bWJlclxuICAgICAgICAvLyAgIGFuZCBhcHBseSBzdGFuZGFyZCBjb21wYXJpc29uXG4gICAgICAgIC8vXG4gICAgICAgIC8vIEV4Y2VwdGlvbjogYCE9YCB3aWxsIG5vdCBjb2VyY2UvY29udmVydCBpZiBib3RoIGEgYW5kIGIgYXJlIG9iamVjdHNcbiAgICAgICAgaWYgKGEgPCBiKSByZXR1cm4gLTE7XG4gICAgICAgIGlmIChhID4gYikgcmV0dXJuIDE7XG4gICAgICAgIGlmIChhICE9IGIpIHtcbiAgICAgICAgICBpZiAoIXRvdGFsKSByZXR1cm4gTmFOO1xuICAgICAgICAgIGlmIChhID09IGEpIHJldHVybiAxO1xuICAgICAgICAgIGlmIChiID09IGIpIHJldHVybiAtMTtcbiAgICAgICAgfVxuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgMTI1MTogLy8gSmF2YVNjcmlwdCBTeW1ib2wsIG5vIG9yZGVyaW5nLlxuICAgICAgICBpZihhICE9PSBiKSB7XG4gICAgICAgICAgaWYgKCF0b3RhbCkgcmV0dXJuIE5hTjtcbiAgICAgICAgICByZXR1cm4gMTtcbiAgICAgICAgfVxuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgMTI1MjogLy8gb2NhbWwgc3RyaW5nc1xuICAgICAgICB2YXIgYSA9IGNhbWxfanNieXRlc19vZl9zdHJpbmcoYSk7XG4gICAgICAgIHZhciBiID0gY2FtbF9qc2J5dGVzX29mX3N0cmluZyhiKTtcbiAgICAgICAgaWYoYSAhPT0gYikge1xuICAgICAgICAgIGlmKGEgPCBiKSByZXR1cm4gLTE7XG4gICAgICAgICAgaWYoYSA+IGIpIHJldHVybiAxO1xuICAgICAgICB9XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAxMjUyMDogLy8gamF2YXNjcmlwdCBzdHJpbmdzXG4gICAgICAgIHZhciBhID0gYS50b1N0cmluZygpO1xuICAgICAgICB2YXIgYiA9IGIudG9TdHJpbmcoKTtcbiAgICAgICAgaWYoYSAhPT0gYikge1xuICAgICAgICAgIGlmKGEgPCBiKSByZXR1cm4gLTE7XG4gICAgICAgICAgaWYoYSA+IGIpIHJldHVybiAxO1xuICAgICAgICB9XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAyNDY6IC8vIExhenlfdGFnXG4gICAgICBjYXNlIDI1NDogLy8gRG91YmxlX2FycmF5XG4gICAgICBkZWZhdWx0OiAvLyBCbG9jayB3aXRoIG90aGVyIHRhZ1xuICAgICAgICBpZihjYW1sX2lzX2NvbnRpbnVhdGlvbl90YWcodGFnX2EpKSB7XG4gICAgICAgICAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiY29tcGFyZTogY29udGludWF0aW9uIHZhbHVlXCIpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIGlmIChhLmxlbmd0aCAhPSBiLmxlbmd0aCkgcmV0dXJuIChhLmxlbmd0aCA8IGIubGVuZ3RoKT8tMToxO1xuICAgICAgICBpZiAoYS5sZW5ndGggPiAxKSBzdGFjay5wdXNoKGEsIGIsIDEpO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKHN0YWNrLmxlbmd0aCA9PSAwKSByZXR1cm4gMDtcbiAgICB2YXIgaSA9IHN0YWNrLnBvcCgpO1xuICAgIGIgPSBzdGFjay5wb3AoKTtcbiAgICBhID0gc3RhY2sucG9wKCk7XG4gICAgaWYgKGkgKyAxIDwgYS5sZW5ndGgpIHN0YWNrLnB1c2goYSwgYiwgaSArIDEpO1xuICAgIGEgPSBhW2ldO1xuICAgIGIgPSBiW2ldO1xuICB9XG59XG4vL1Byb3ZpZGVzOiBjYW1sX2NvbXBhcmUgKGNvbnN0LCBjb25zdClcbi8vUmVxdWlyZXM6IGNhbWxfY29tcGFyZV92YWxcbmZ1bmN0aW9uIGNhbWxfY29tcGFyZSAoYSwgYikgeyByZXR1cm4gY2FtbF9jb21wYXJlX3ZhbCAoYSwgYiwgdHJ1ZSk7IH1cbi8vUHJvdmlkZXM6IGNhbWxfaW50X2NvbXBhcmUgbXV0YWJsZSAoY29uc3QsIGNvbnN0KVxuZnVuY3Rpb24gY2FtbF9pbnRfY29tcGFyZSAoYSwgYikge1xuICBpZiAoYSA8IGIpIHJldHVybiAoLTEpOyBpZiAoYSA9PSBiKSByZXR1cm4gMDsgcmV0dXJuIDE7XG59XG4vL1Byb3ZpZGVzOiBjYW1sX2VxdWFsIG11dGFibGUgKGNvbnN0LCBjb25zdClcbi8vUmVxdWlyZXM6IGNhbWxfY29tcGFyZV92YWxcbmZ1bmN0aW9uIGNhbWxfZXF1YWwgKHgsIHkpIHsgcmV0dXJuICsoY2FtbF9jb21wYXJlX3ZhbCh4LHksZmFsc2UpID09IDApOyB9XG4vL1Byb3ZpZGVzOiBjYW1sX25vdGVxdWFsIG11dGFibGUgKGNvbnN0LCBjb25zdClcbi8vUmVxdWlyZXM6IGNhbWxfY29tcGFyZV92YWxcbmZ1bmN0aW9uIGNhbWxfbm90ZXF1YWwgKHgsIHkpIHsgcmV0dXJuICsoY2FtbF9jb21wYXJlX3ZhbCh4LHksZmFsc2UpICE9IDApOyB9XG4vL1Byb3ZpZGVzOiBjYW1sX2dyZWF0ZXJlcXVhbCBtdXRhYmxlIChjb25zdCwgY29uc3QpXG4vL1JlcXVpcmVzOiBjYW1sX2NvbXBhcmVfdmFsXG5mdW5jdGlvbiBjYW1sX2dyZWF0ZXJlcXVhbCAoeCwgeSkgeyByZXR1cm4gKyhjYW1sX2NvbXBhcmVfdmFsKHgseSxmYWxzZSkgPj0gMCk7IH1cbi8vUHJvdmlkZXM6IGNhbWxfZ3JlYXRlcnRoYW4gbXV0YWJsZSAoY29uc3QsIGNvbnN0KVxuLy9SZXF1aXJlczogY2FtbF9jb21wYXJlX3ZhbFxuZnVuY3Rpb24gY2FtbF9ncmVhdGVydGhhbiAoeCwgeSkgeyByZXR1cm4gKyhjYW1sX2NvbXBhcmVfdmFsKHgseSxmYWxzZSkgPiAwKTsgfVxuLy9Qcm92aWRlczogY2FtbF9sZXNzZXF1YWwgbXV0YWJsZSAoY29uc3QsIGNvbnN0KVxuLy9SZXF1aXJlczogY2FtbF9jb21wYXJlX3ZhbFxuZnVuY3Rpb24gY2FtbF9sZXNzZXF1YWwgKHgsIHkpIHsgcmV0dXJuICsoY2FtbF9jb21wYXJlX3ZhbCh4LHksZmFsc2UpIDw9IDApOyB9XG4vL1Byb3ZpZGVzOiBjYW1sX2xlc3N0aGFuIG11dGFibGUgKGNvbnN0LCBjb25zdClcbi8vUmVxdWlyZXM6IGNhbWxfY29tcGFyZV92YWxcbmZ1bmN0aW9uIGNhbWxfbGVzc3RoYW4gKHgsIHkpIHsgcmV0dXJuICsoY2FtbF9jb21wYXJlX3ZhbCh4LHksZmFsc2UpIDwgMCk7IH1cbiIsIi8vIEpzX29mX29jYW1sIGxpYnJhcnlcbi8vIGh0dHA6Ly93d3cub2NzaWdlbi5vcmcvanNfb2Zfb2NhbWwvXG4vLyBDb3B5cmlnaHQgKEMpIDIwMTAgSsOpcsO0bWUgVm91aWxsb25cbi8vIExhYm9yYXRvaXJlIFBQUyAtIENOUlMgVW5pdmVyc2l0w6kgUGFyaXMgRGlkZXJvdFxuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4vLyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbi8vIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4vLyBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4vLyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuLy8gTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuLy8gR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4vL1xuLy8gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4vLyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuLy8gRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cblxuLy8vLy8vLy8vLy8vLyBKc2xpYjogY29kZSBzcGVjaWZpYyB0byBKc19vZl9vY2FtbFxuXG4vL1Byb3ZpZGVzOiBjYW1sX2pzX29uX2llIGNvbnN0XG5mdW5jdGlvbiBjYW1sX2pzX29uX2llICgpIHtcbiAgdmFyIHVhID1cbiAgICAgIGdsb2JhbFRoaXMubmF2aWdhdG9yP2dsb2JhbFRoaXMubmF2aWdhdG9yLnVzZXJBZ2VudDpcIlwiO1xuICByZXR1cm4gdWEuaW5kZXhPZihcIk1TSUVcIikgIT0gLTEgJiYgdWEuaW5kZXhPZihcIk9wZXJhXCIpICE9IDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfanNfaHRtbF9lc2NhcGUgY29uc3QgKGNvbnN0KVxudmFyIGNhbWxfanNfcmVnZXhwcyA9IHsgYW1wOi8mL2csIGx0Oi88L2csIHF1b3Q6L1xcXCIvZywgYWxsOi9bJjxcXFwiXS8gfTtcbmZ1bmN0aW9uIGNhbWxfanNfaHRtbF9lc2NhcGUgKHMpIHtcbiAgaWYgKCFjYW1sX2pzX3JlZ2V4cHMuYWxsLnRlc3QocykpIHJldHVybiBzO1xuICByZXR1cm4gcy5yZXBsYWNlKGNhbWxfanNfcmVnZXhwcy5hbXAsIFwiJmFtcDtcIilcbiAgICAucmVwbGFjZShjYW1sX2pzX3JlZ2V4cHMubHQsIFwiJmx0O1wiKVxuICAgIC5yZXBsYWNlKGNhbWxfanNfcmVnZXhwcy5xdW90LCBcIiZxdW90O1wiKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9qc19odG1sX2VudGl0aWVzXG4vL1JlcXVpcmVzOiBjYW1sX2ZhaWx3aXRoXG5mdW5jdGlvbiBjYW1sX2pzX2h0bWxfZW50aXRpZXMocykge1xuICB2YXIgZW50aXR5ID0gL14mIz9bMC05YS16QS1aXSs7JC9cbiAgaWYocy5tYXRjaChlbnRpdHkpKVxuICB7XG4gICAgdmFyIHN0ciwgdGVtcCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3AnKTtcbiAgICB0ZW1wLmlubmVySFRNTD0gcztcbiAgICBzdHI9IHRlbXAudGV4dENvbnRlbnQgfHwgdGVtcC5pbm5lclRleHQ7XG4gICAgdGVtcD1udWxsO1xuICAgIHJldHVybiBzdHI7XG4gIH1cbiAgZWxzZSB7XG4gICAgY2FtbF9mYWlsd2l0aChcIkludmFsaWQgZW50aXR5IFwiICsgcyk7XG4gIH1cbn1cblxuLy9Qcm92aWRlczogY2FtbF9qc19nZXRfY29uc29sZSBjb25zdFxuZnVuY3Rpb24gY2FtbF9qc19nZXRfY29uc29sZSAoKSB7XG4gIHZhciBjID0gY29uc29sZTtcbiAgdmFyIG0gPSBbXCJsb2dcIiwgXCJkZWJ1Z1wiLCBcImluZm9cIiwgXCJ3YXJuXCIsIFwiZXJyb3JcIiwgXCJhc3NlcnRcIiwgXCJkaXJcIiwgXCJkaXJ4bWxcIixcbiAgICAgICAgICAgXCJ0cmFjZVwiLCBcImdyb3VwXCIsIFwiZ3JvdXBDb2xsYXBzZWRcIiwgXCJncm91cEVuZFwiLCBcInRpbWVcIiwgXCJ0aW1lRW5kXCJdO1xuICBmdW5jdGlvbiBmICgpIHt9XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgbS5sZW5ndGg7IGkrKykgaWYgKCFjW21baV1dKSBjW21baV1dPWY7XG4gIHJldHVybiBjO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3htbGh0dHByZXF1ZXN0X2NyZWF0ZVxuLy9SZXF1aXJlczogY2FtbF9mYWlsd2l0aFxuLy9XZWFrZGVmXG5mdW5jdGlvbiBjYW1sX3htbGh0dHByZXF1ZXN0X2NyZWF0ZSh1bml0KXtcbiAgaWYodHlwZW9mIGdsb2JhbFRoaXMuWE1MSHR0cFJlcXVlc3QgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgdHJ5IHsgcmV0dXJuIG5ldyBnbG9iYWxUaGlzLlhNTEh0dHBSZXF1ZXN0IH0gY2F0Y2ggKGUpIHsgfTtcbiAgfVxuICBpZih0eXBlb2YgZ2xvYmFsVGhpcy5hY3RpdmVYT2JqZWN0ICE9PSAndW5kZWZpbmVkJykge1xuICAgIHRyeSB7IHJldHVybiBuZXcgZ2xvYmFsVGhpcy5hY3RpdmVYT2JqZWN0KFwiTXN4bWwyLlhNTEhUVFBcIikgfSBjYXRjaChlKXsgfTtcbiAgICB0cnkgeyByZXR1cm4gbmV3IGdsb2JhbFRoaXMuYWN0aXZlWE9iamVjdChcIk1zeG1sMy5YTUxIVFRQXCIpIH0gY2F0Y2goZSl7IH07XG4gICAgdHJ5IHsgcmV0dXJuIG5ldyBnbG9iYWxUaGlzLmFjdGl2ZVhPYmplY3QoXCJNaWNyb3NvZnQuWE1MSFRUUFwiKSB9IGNhdGNoKGUpeyB9O1xuICB9XG4gIGNhbWxfZmFpbHdpdGgoXCJDYW5ub3QgY3JlYXRlIGEgWE1MSHR0cFJlcXVlc3RcIik7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfanNfZXJyb3Jfb2ZfZXhjZXB0aW9uXG5mdW5jdGlvbiBjYW1sX2pzX2Vycm9yX29mX2V4Y2VwdGlvbihleG4pIHtcbiAgaWYoZXhuLmpzX2Vycm9yKSB7IHJldHVybiBleG4uanNfZXJyb3I7IH1cbiAgcmV0dXJuIG51bGw7XG59XG4iLCIvLy8vLy8vLy8gQklHU1RSSU5HXG5cbi8vUHJvdmlkZXM6IGNhbWxfaGFzaF9taXhfYmlnc3RyaW5nXG4vL1JlcXVpcmVzOiBjYW1sX2hhc2hfbWl4X2J5dGVzX2FyclxuZnVuY3Rpb24gY2FtbF9oYXNoX21peF9iaWdzdHJpbmcoaCwgYnMpIHtcbiAgcmV0dXJuIGNhbWxfaGFzaF9taXhfYnl0ZXNfYXJyKGgsYnMuZGF0YSk7XG59XG5cbi8vUHJvdmlkZXM6IGJpZ3N0cmluZ190b19hcnJheV9idWZmZXIgbXV0YWJsZVxuZnVuY3Rpb24gYmlnc3RyaW5nX3RvX2FycmF5X2J1ZmZlcihicykge1xuICByZXR1cm4gYnMuZGF0YS5idWZmZXJcbn1cblxuLy9Qcm92aWRlczogYmlnc3RyaW5nX3RvX3R5cGVkX2FycmF5IG11dGFibGVcbmZ1bmN0aW9uIGJpZ3N0cmluZ190b190eXBlZF9hcnJheShicykge1xuICByZXR1cm4gYnMuZGF0YVxufVxuXG4vL1Byb3ZpZGVzOiBiaWdzdHJpbmdfb2ZfYXJyYXlfYnVmZmVyIG11dGFibGVcbi8vUmVxdWlyZXM6IGNhbWxfYmFfY3JlYXRlX3Vuc2FmZVxuZnVuY3Rpb24gYmlnc3RyaW5nX29mX2FycmF5X2J1ZmZlcihhYikge1xuICB2YXIgdGEgPSBuZXcgVWludDhBcnJheShhYik7XG4gIHJldHVybiBjYW1sX2JhX2NyZWF0ZV91bnNhZmUoMTIsIDAsIFt0YS5sZW5ndGhdLCB0YSk7XG59XG5cbi8vUHJvdmlkZXM6IGJpZ3N0cmluZ19vZl90eXBlZF9hcnJheSBtdXRhYmxlXG4vL1JlcXVpcmVzOiBjYW1sX2JhX2NyZWF0ZV91bnNhZmVcbmZ1bmN0aW9uIGJpZ3N0cmluZ19vZl90eXBlZF9hcnJheShiYSkge1xuICB2YXIgdGEgPSBuZXcgVWludDhBcnJheShiYS5idWZmZXIsIGJhLmJ5dGVPZmZzZXQsIGJhLmxlbmd0aCAqIGJhLkJZVEVTX1BFUl9FTEVNRU5UKTtcbiAgcmV0dXJuIGNhbWxfYmFfY3JlYXRlX3Vuc2FmZSgxMiwgMCwgW3RhLmxlbmd0aF0sIHRhKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9iaWdzdHJpbmdfbWVtY21wXG4vL1JlcXVpcmVzOiBjYW1sX2JhX2dldF8xXG5mdW5jdGlvbiBjYW1sX2JpZ3N0cmluZ19tZW1jbXAoczEsIHBvczEsIHMyLCBwb3MyLCBsZW4pe1xuICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbjsgaSsrKSB7XG4gICAgdmFyIGEgPSBjYW1sX2JhX2dldF8xKHMxLHBvczEgKyBpKTtcbiAgICB2YXIgYiA9IGNhbWxfYmFfZ2V0XzEoczIscG9zMiArIGkpO1xuICAgIGlmIChhIDwgYikgcmV0dXJuIC0xO1xuICAgIGlmIChhID4gYikgcmV0dXJuIDE7XG4gIH1cbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmlnc3RyaW5nX2JsaXRfYmFfdG9fYmFcbi8vUmVxdWlyZXM6IGNhbWxfaW52YWxpZF9hcmd1bWVudCwgY2FtbF9hcnJheV9ib3VuZF9lcnJvclxuZnVuY3Rpb24gY2FtbF9iaWdzdHJpbmdfYmxpdF9iYV90b19iYShiYTEsIHBvczEsIGJhMiwgcG9zMiwgbGVuKXtcbiAgaWYoMTIgIT0gYmExLmtpbmQpXG4gICAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiY2FtbF9iaWdzdHJpbmdfYmxpdF9iYV90b19iYToga2luZCBtaXNtYXRjaFwiKTtcbiAgaWYoMTIgIT0gYmEyLmtpbmQpXG4gICAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiY2FtbF9iaWdzdHJpbmdfYmxpdF9iYV90b19iYToga2luZCBtaXNtYXRjaFwiKTtcbiAgaWYobGVuID09IDApIHJldHVybiAwO1xuICB2YXIgb2ZzMSA9IGJhMS5vZmZzZXQocG9zMSk7XG4gIHZhciBvZnMyID0gYmEyLm9mZnNldChwb3MyKTtcbiAgaWYob2ZzMSArIGxlbiA+IGJhMS5kYXRhLmxlbmd0aCl7XG4gICAgY2FtbF9hcnJheV9ib3VuZF9lcnJvcigpO1xuICB9XG4gIGlmKG9mczIgKyBsZW4gPiBiYTIuZGF0YS5sZW5ndGgpe1xuICAgIGNhbWxfYXJyYXlfYm91bmRfZXJyb3IoKTtcbiAgfVxuICB2YXIgc2xpY2UgPSBiYTEuZGF0YS5zdWJhcnJheShvZnMxLG9mczErbGVuKTtcbiAgYmEyLmRhdGEuc2V0KHNsaWNlLHBvczIpO1xuICByZXR1cm4gMFxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JpZ3N0cmluZ19ibGl0X3N0cmluZ190b19iYVxuLy9SZXF1aXJlczogY2FtbF9pbnZhbGlkX2FyZ3VtZW50LCBjYW1sX2FycmF5X2JvdW5kX2Vycm9yLCBjYW1sX3VpbnQ4X2FycmF5X29mX3N0cmluZ1xuLy9SZXF1aXJlczogY2FtbF9tbF9zdHJpbmdfbGVuZ3RoXG5mdW5jdGlvbiBjYW1sX2JpZ3N0cmluZ19ibGl0X3N0cmluZ190b19iYShzdHIxLCBwb3MxLCBiYTIsIHBvczIsIGxlbil7XG4gIGlmKDEyICE9IGJhMi5raW5kKVxuICAgIGNhbWxfaW52YWxpZF9hcmd1bWVudChcImNhbWxfYmlnc3RyaW5nX2JsaXRfc3RyaW5nX3RvX2JhOiBraW5kIG1pc21hdGNoXCIpO1xuICBpZihsZW4gPT0gMCkgcmV0dXJuIDA7XG4gIHZhciBvZnMyID0gYmEyLm9mZnNldChwb3MyKTtcbiAgaWYocG9zMSArIGxlbiA+IGNhbWxfbWxfc3RyaW5nX2xlbmd0aChzdHIxKSkge1xuICAgIGNhbWxfYXJyYXlfYm91bmRfZXJyb3IoKTtcbiAgfVxuICBpZihvZnMyICsgbGVuID4gYmEyLmRhdGEubGVuZ3RoKSB7XG4gICAgY2FtbF9hcnJheV9ib3VuZF9lcnJvcigpO1xuICB9XG4gIHZhciBzbGljZSA9IGNhbWxfdWludDhfYXJyYXlfb2Zfc3RyaW5nKHN0cjEpLnNsaWNlKHBvczEscG9zMSArIGxlbik7XG4gIGJhMi5kYXRhLnNldChzbGljZSxvZnMyKTtcbiAgcmV0dXJuIDBcbn1cblxuLy9Qcm92aWRlczogY2FtbF9iaWdzdHJpbmdfYmxpdF9ieXRlc190b19iYVxuLy9SZXF1aXJlczogY2FtbF9pbnZhbGlkX2FyZ3VtZW50LCBjYW1sX2FycmF5X2JvdW5kX2Vycm9yLCBjYW1sX3VpbnQ4X2FycmF5X29mX2J5dGVzXG4vL1JlcXVpcmVzOiBjYW1sX21sX2J5dGVzX2xlbmd0aFxuZnVuY3Rpb24gY2FtbF9iaWdzdHJpbmdfYmxpdF9ieXRlc190b19iYShzdHIxLCBwb3MxLCBiYTIsIHBvczIsIGxlbil7XG4gIGlmKDEyICE9IGJhMi5raW5kKVxuICAgIGNhbWxfaW52YWxpZF9hcmd1bWVudChcImNhbWxfYmlnc3RyaW5nX2JsaXRfc3RyaW5nX3RvX2JhOiBraW5kIG1pc21hdGNoXCIpO1xuICBpZihsZW4gPT0gMCkgcmV0dXJuIDA7XG4gIHZhciBvZnMyID0gYmEyLm9mZnNldChwb3MyKTtcbiAgaWYocG9zMSArIGxlbiA+IGNhbWxfbWxfYnl0ZXNfbGVuZ3RoKHN0cjEpKSB7XG4gICAgY2FtbF9hcnJheV9ib3VuZF9lcnJvcigpO1xuICB9XG4gIGlmKG9mczIgKyBsZW4gPiBiYTIuZGF0YS5sZW5ndGgpIHtcbiAgICBjYW1sX2FycmF5X2JvdW5kX2Vycm9yKCk7XG4gIH1cbiAgdmFyIHNsaWNlID0gY2FtbF91aW50OF9hcnJheV9vZl9ieXRlcyhzdHIxKS5zbGljZShwb3MxLHBvczEgKyBsZW4pO1xuICBiYTIuZGF0YS5zZXQoc2xpY2Usb2ZzMik7XG4gIHJldHVybiAwXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmlnc3RyaW5nX2JsaXRfYmFfdG9fYnl0ZXNcbi8vUmVxdWlyZXM6IGNhbWxfaW52YWxpZF9hcmd1bWVudCwgY2FtbF9hcnJheV9ib3VuZF9lcnJvclxuLy9SZXF1aXJlczogY2FtbF9ibGl0X2J5dGVzLCBjYW1sX2J5dGVzX29mX2FycmF5XG4vL1JlcXVpcmVzOiBjYW1sX21sX2J5dGVzX2xlbmd0aFxuZnVuY3Rpb24gY2FtbF9iaWdzdHJpbmdfYmxpdF9iYV90b19ieXRlcyhiYTEsIHBvczEsIGJ5dGVzMiwgcG9zMiwgbGVuKXtcbiAgaWYoMTIgIT0gYmExLmtpbmQpXG4gICAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiY2FtbF9iaWdzdHJpbmdfYmxpdF9zdHJpbmdfdG9fYmE6IGtpbmQgbWlzbWF0Y2hcIik7XG4gIGlmKGxlbiA9PSAwKSByZXR1cm4gMDtcbiAgdmFyIG9mczEgPSBiYTEub2Zmc2V0KHBvczEpO1xuICBpZihvZnMxICsgbGVuID4gYmExLmRhdGEubGVuZ3RoKXtcbiAgICBjYW1sX2FycmF5X2JvdW5kX2Vycm9yKCk7XG4gIH1cbiAgaWYocG9zMiArIGxlbiA+IGNhbWxfbWxfYnl0ZXNfbGVuZ3RoKGJ5dGVzMikpe1xuICAgIGNhbWxfYXJyYXlfYm91bmRfZXJyb3IoKTtcbiAgfVxuICB2YXIgc2xpY2UgPSBiYTEuZGF0YS5zbGljZShvZnMxLCBvZnMxK2xlbik7XG4gIGNhbWxfYmxpdF9ieXRlcyhjYW1sX2J5dGVzX29mX2FycmF5KHNsaWNlKSwgMCwgYnl0ZXMyLCBwb3MyLCBsZW4pO1xuICByZXR1cm4gMFxufVxuIiwiLy8gSnNfb2Zfb2NhbWwgcnVudGltZSBzdXBwb3J0XG4vLyBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL2pzX29mX29jYW1sL1xuLy8gQ29weXJpZ2h0IChDKSAyMDEwIErDqXLDtG1lIFZvdWlsbG9uXG4vLyBMYWJvcmF0b2lyZSBQUFMgLSBDTlJTIFVuaXZlcnNpdMOpIFBhcmlzIERpZGVyb3Rcbi8vXG4vLyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuLy8gaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4vLyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoIGxpbmtpbmcgZXhjZXB0aW9uO1xuLy8gZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuLy8gYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2Zcbi8vIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcbi8vIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuLy9cbi8vIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuLy8gYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbi8vIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuXG5cbi8vUHJvdmlkZXM6IGNhbWxfbWQ1X2NoYW5cbi8vUmVxdWlyZXM6IGNhbWxfc3RyaW5nX29mX2FycmF5XG4vL1JlcXVpcmVzOiBjYW1sX3JhaXNlX2VuZF9vZl9maWxlLCBjYW1sX21sX2lucHV0X2Jsb2NrXG4vL1JlcXVpcmVzOiBjYW1sX01ENUluaXQsIGNhbWxfTUQ1VXBkYXRlLCBjYW1sX01ENUZpbmFsXG5mdW5jdGlvbiBjYW1sX21kNV9jaGFuKGNoYW5pZCx0b3JlYWQpe1xuICB2YXIgY3R4ID0gY2FtbF9NRDVJbml0KCk7XG4gIHZhciBidWZmZXIgPSBuZXcgVWludDhBcnJheSg0MDk2KTtcbiAgaWYodG9yZWFkIDwgMCl7XG4gICAgd2hpbGUodHJ1ZSl7XG4gICAgICB2YXIgcmVhZCA9IGNhbWxfbWxfaW5wdXRfYmxvY2soY2hhbmlkLGJ1ZmZlciwwLGJ1ZmZlci5sZW5ndGgpO1xuICAgICAgaWYocmVhZCA9PSAwKSBicmVhaztcbiAgICAgIGNhbWxfTUQ1VXBkYXRlKGN0eCxidWZmZXIuc3ViYXJyYXkoMCwgcmVhZCksIHJlYWQpO1xuICAgIH1cbiAgfSBlbHNlIHtcbiAgICB3aGlsZSh0b3JlYWQgPiAwKSB7XG4gICAgICB2YXIgcmVhZCA9IGNhbWxfbWxfaW5wdXRfYmxvY2soY2hhbmlkLGJ1ZmZlciwwLCAodG9yZWFkID4gYnVmZmVyLmxlbmd0aCA/IGJ1ZmZlci5sZW5ndGggOiB0b3JlYWQpKTtcbiAgICAgIGlmKHJlYWQgPT0gMCkgY2FtbF9yYWlzZV9lbmRfb2ZfZmlsZSgpO1xuICAgICAgY2FtbF9NRDVVcGRhdGUoY3R4LGJ1ZmZlci5zdWJhcnJheSgwLCByZWFkKSwgcmVhZCk7XG4gICAgICB0b3JlYWQgLT0gcmVhZFxuICAgIH1cbiAgfVxuICByZXR1cm4gY2FtbF9zdHJpbmdfb2ZfYXJyYXkoY2FtbF9NRDVGaW5hbChjdHgpKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tZDVfc3RyaW5nXG4vL1JlcXVpcmVzOiBjYW1sX2J5dGVzX29mX3N0cmluZywgY2FtbF9tZDVfYnl0ZXNcbmZ1bmN0aW9uIGNhbWxfbWQ1X3N0cmluZyhzLCBvZnMsIGxlbikge1xuICByZXR1cm4gY2FtbF9tZDVfYnl0ZXMoY2FtbF9ieXRlc19vZl9zdHJpbmcocyksb2ZzLGxlbik7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfTUQ1VHJhbnNmb3JtXG52YXIgY2FtbF9NRDVUcmFuc2Zvcm0gPSAoZnVuY3Rpb24gKCkge1xuICBmdW5jdGlvbiBhZGQgKHgsIHkpIHsgcmV0dXJuICh4ICsgeSkgfCAwOyB9XG4gIGZ1bmN0aW9uIHh4KHEsYSxiLHgscyx0KSB7XG4gICAgYSA9IGFkZChhZGQoYSwgcSksIGFkZCh4LCB0KSk7XG4gICAgcmV0dXJuIGFkZCgoYSA8PCBzKSB8IChhID4+PiAoMzIgLSBzKSksIGIpO1xuICB9XG4gIGZ1bmN0aW9uIGZmKGEsYixjLGQseCxzLHQpIHtcbiAgICByZXR1cm4geHgoKGIgJiBjKSB8ICgofmIpICYgZCksIGEsIGIsIHgsIHMsIHQpO1xuICB9XG4gIGZ1bmN0aW9uIGdnKGEsYixjLGQseCxzLHQpIHtcbiAgICByZXR1cm4geHgoKGIgJiBkKSB8IChjICYgKH5kKSksIGEsIGIsIHgsIHMsIHQpO1xuICB9XG4gIGZ1bmN0aW9uIGhoKGEsYixjLGQseCxzLHQpIHsgcmV0dXJuIHh4KGIgXiBjIF4gZCwgYSwgYiwgeCwgcywgdCk7IH1cbiAgZnVuY3Rpb24gaWkoYSxiLGMsZCx4LHMsdCkgeyByZXR1cm4geHgoYyBeIChiIHwgKH5kKSksIGEsIGIsIHgsIHMsIHQpOyB9XG5cbiAgcmV0dXJuIGZ1bmN0aW9uICh3LCBidWZmZXIpIHtcbiAgICB2YXIgYSA9IHdbMF0sIGIgPSB3WzFdLCBjID0gd1syXSwgZCA9IHdbM107XG5cbiAgICBhID0gZmYoYSwgYiwgYywgZCwgYnVmZmVyWyAwXSwgNywgMHhENzZBQTQ3OCk7XG4gICAgZCA9IGZmKGQsIGEsIGIsIGMsIGJ1ZmZlclsgMV0sIDEyLCAweEU4QzdCNzU2KTtcbiAgICBjID0gZmYoYywgZCwgYSwgYiwgYnVmZmVyWyAyXSwgMTcsIDB4MjQyMDcwREIpO1xuICAgIGIgPSBmZihiLCBjLCBkLCBhLCBidWZmZXJbIDNdLCAyMiwgMHhDMUJEQ0VFRSk7XG4gICAgYSA9IGZmKGEsIGIsIGMsIGQsIGJ1ZmZlclsgNF0sIDcsIDB4RjU3QzBGQUYpO1xuICAgIGQgPSBmZihkLCBhLCBiLCBjLCBidWZmZXJbIDVdLCAxMiwgMHg0Nzg3QzYyQSk7XG4gICAgYyA9IGZmKGMsIGQsIGEsIGIsIGJ1ZmZlclsgNl0sIDE3LCAweEE4MzA0NjEzKTtcbiAgICBiID0gZmYoYiwgYywgZCwgYSwgYnVmZmVyWyA3XSwgMjIsIDB4RkQ0Njk1MDEpO1xuICAgIGEgPSBmZihhLCBiLCBjLCBkLCBidWZmZXJbIDhdLCA3LCAweDY5ODA5OEQ4KTtcbiAgICBkID0gZmYoZCwgYSwgYiwgYywgYnVmZmVyWyA5XSwgMTIsIDB4OEI0NEY3QUYpO1xuICAgIGMgPSBmZihjLCBkLCBhLCBiLCBidWZmZXJbMTBdLCAxNywgMHhGRkZGNUJCMSk7XG4gICAgYiA9IGZmKGIsIGMsIGQsIGEsIGJ1ZmZlclsxMV0sIDIyLCAweDg5NUNEN0JFKTtcbiAgICBhID0gZmYoYSwgYiwgYywgZCwgYnVmZmVyWzEyXSwgNywgMHg2QjkwMTEyMik7XG4gICAgZCA9IGZmKGQsIGEsIGIsIGMsIGJ1ZmZlclsxM10sIDEyLCAweEZEOTg3MTkzKTtcbiAgICBjID0gZmYoYywgZCwgYSwgYiwgYnVmZmVyWzE0XSwgMTcsIDB4QTY3OTQzOEUpO1xuICAgIGIgPSBmZihiLCBjLCBkLCBhLCBidWZmZXJbMTVdLCAyMiwgMHg0OUI0MDgyMSk7XG5cbiAgICBhID0gZ2coYSwgYiwgYywgZCwgYnVmZmVyWyAxXSwgNSwgMHhGNjFFMjU2Mik7XG4gICAgZCA9IGdnKGQsIGEsIGIsIGMsIGJ1ZmZlclsgNl0sIDksIDB4QzA0MEIzNDApO1xuICAgIGMgPSBnZyhjLCBkLCBhLCBiLCBidWZmZXJbMTFdLCAxNCwgMHgyNjVFNUE1MSk7XG4gICAgYiA9IGdnKGIsIGMsIGQsIGEsIGJ1ZmZlclsgMF0sIDIwLCAweEU5QjZDN0FBKTtcbiAgICBhID0gZ2coYSwgYiwgYywgZCwgYnVmZmVyWyA1XSwgNSwgMHhENjJGMTA1RCk7XG4gICAgZCA9IGdnKGQsIGEsIGIsIGMsIGJ1ZmZlclsxMF0sIDksIDB4MDI0NDE0NTMpO1xuICAgIGMgPSBnZyhjLCBkLCBhLCBiLCBidWZmZXJbMTVdLCAxNCwgMHhEOEExRTY4MSk7XG4gICAgYiA9IGdnKGIsIGMsIGQsIGEsIGJ1ZmZlclsgNF0sIDIwLCAweEU3RDNGQkM4KTtcbiAgICBhID0gZ2coYSwgYiwgYywgZCwgYnVmZmVyWyA5XSwgNSwgMHgyMUUxQ0RFNik7XG4gICAgZCA9IGdnKGQsIGEsIGIsIGMsIGJ1ZmZlclsxNF0sIDksIDB4QzMzNzA3RDYpO1xuICAgIGMgPSBnZyhjLCBkLCBhLCBiLCBidWZmZXJbIDNdLCAxNCwgMHhGNEQ1MEQ4Nyk7XG4gICAgYiA9IGdnKGIsIGMsIGQsIGEsIGJ1ZmZlclsgOF0sIDIwLCAweDQ1NUExNEVEKTtcbiAgICBhID0gZ2coYSwgYiwgYywgZCwgYnVmZmVyWzEzXSwgNSwgMHhBOUUzRTkwNSk7XG4gICAgZCA9IGdnKGQsIGEsIGIsIGMsIGJ1ZmZlclsgMl0sIDksIDB4RkNFRkEzRjgpO1xuICAgIGMgPSBnZyhjLCBkLCBhLCBiLCBidWZmZXJbIDddLCAxNCwgMHg2NzZGMDJEOSk7XG4gICAgYiA9IGdnKGIsIGMsIGQsIGEsIGJ1ZmZlclsxMl0sIDIwLCAweDhEMkE0QzhBKTtcblxuICAgIGEgPSBoaChhLCBiLCBjLCBkLCBidWZmZXJbIDVdLCA0LCAweEZGRkEzOTQyKTtcbiAgICBkID0gaGgoZCwgYSwgYiwgYywgYnVmZmVyWyA4XSwgMTEsIDB4ODc3MUY2ODEpO1xuICAgIGMgPSBoaChjLCBkLCBhLCBiLCBidWZmZXJbMTFdLCAxNiwgMHg2RDlENjEyMik7XG4gICAgYiA9IGhoKGIsIGMsIGQsIGEsIGJ1ZmZlclsxNF0sIDIzLCAweEZERTUzODBDKTtcbiAgICBhID0gaGgoYSwgYiwgYywgZCwgYnVmZmVyWyAxXSwgNCwgMHhBNEJFRUE0NCk7XG4gICAgZCA9IGhoKGQsIGEsIGIsIGMsIGJ1ZmZlclsgNF0sIDExLCAweDRCREVDRkE5KTtcbiAgICBjID0gaGgoYywgZCwgYSwgYiwgYnVmZmVyWyA3XSwgMTYsIDB4RjZCQjRCNjApO1xuICAgIGIgPSBoaChiLCBjLCBkLCBhLCBidWZmZXJbMTBdLCAyMywgMHhCRUJGQkM3MCk7XG4gICAgYSA9IGhoKGEsIGIsIGMsIGQsIGJ1ZmZlclsxM10sIDQsIDB4Mjg5QjdFQzYpO1xuICAgIGQgPSBoaChkLCBhLCBiLCBjLCBidWZmZXJbIDBdLCAxMSwgMHhFQUExMjdGQSk7XG4gICAgYyA9IGhoKGMsIGQsIGEsIGIsIGJ1ZmZlclsgM10sIDE2LCAweEQ0RUYzMDg1KTtcbiAgICBiID0gaGgoYiwgYywgZCwgYSwgYnVmZmVyWyA2XSwgMjMsIDB4MDQ4ODFEMDUpO1xuICAgIGEgPSBoaChhLCBiLCBjLCBkLCBidWZmZXJbIDldLCA0LCAweEQ5RDREMDM5KTtcbiAgICBkID0gaGgoZCwgYSwgYiwgYywgYnVmZmVyWzEyXSwgMTEsIDB4RTZEQjk5RTUpO1xuICAgIGMgPSBoaChjLCBkLCBhLCBiLCBidWZmZXJbMTVdLCAxNiwgMHgxRkEyN0NGOCk7XG4gICAgYiA9IGhoKGIsIGMsIGQsIGEsIGJ1ZmZlclsgMl0sIDIzLCAweEM0QUM1NjY1KTtcblxuICAgIGEgPSBpaShhLCBiLCBjLCBkLCBidWZmZXJbIDBdLCA2LCAweEY0MjkyMjQ0KTtcbiAgICBkID0gaWkoZCwgYSwgYiwgYywgYnVmZmVyWyA3XSwgMTAsIDB4NDMyQUZGOTcpO1xuICAgIGMgPSBpaShjLCBkLCBhLCBiLCBidWZmZXJbMTRdLCAxNSwgMHhBQjk0MjNBNyk7XG4gICAgYiA9IGlpKGIsIGMsIGQsIGEsIGJ1ZmZlclsgNV0sIDIxLCAweEZDOTNBMDM5KTtcbiAgICBhID0gaWkoYSwgYiwgYywgZCwgYnVmZmVyWzEyXSwgNiwgMHg2NTVCNTlDMyk7XG4gICAgZCA9IGlpKGQsIGEsIGIsIGMsIGJ1ZmZlclsgM10sIDEwLCAweDhGMENDQzkyKTtcbiAgICBjID0gaWkoYywgZCwgYSwgYiwgYnVmZmVyWzEwXSwgMTUsIDB4RkZFRkY0N0QpO1xuICAgIGIgPSBpaShiLCBjLCBkLCBhLCBidWZmZXJbIDFdLCAyMSwgMHg4NTg0NUREMSk7XG4gICAgYSA9IGlpKGEsIGIsIGMsIGQsIGJ1ZmZlclsgOF0sIDYsIDB4NkZBODdFNEYpO1xuICAgIGQgPSBpaShkLCBhLCBiLCBjLCBidWZmZXJbMTVdLCAxMCwgMHhGRTJDRTZFMCk7XG4gICAgYyA9IGlpKGMsIGQsIGEsIGIsIGJ1ZmZlclsgNl0sIDE1LCAweEEzMDE0MzE0KTtcbiAgICBiID0gaWkoYiwgYywgZCwgYSwgYnVmZmVyWzEzXSwgMjEsIDB4NEUwODExQTEpO1xuICAgIGEgPSBpaShhLCBiLCBjLCBkLCBidWZmZXJbIDRdLCA2LCAweEY3NTM3RTgyKTtcbiAgICBkID0gaWkoZCwgYSwgYiwgYywgYnVmZmVyWzExXSwgMTAsIDB4QkQzQUYyMzUpO1xuICAgIGMgPSBpaShjLCBkLCBhLCBiLCBidWZmZXJbIDJdLCAxNSwgMHgyQUQ3RDJCQik7XG4gICAgYiA9IGlpKGIsIGMsIGQsIGEsIGJ1ZmZlclsgOV0sIDIxLCAweEVCODZEMzkxKTtcblxuICAgIHdbMF0gPSBhZGQoYSwgd1swXSk7XG4gICAgd1sxXSA9IGFkZChiLCB3WzFdKTtcbiAgICB3WzJdID0gYWRkKGMsIHdbMl0pO1xuICAgIHdbM10gPSBhZGQoZCwgd1szXSk7XG4gIH19KSgpXG5cbi8vUHJvdmlkZXM6IGNhbWxfTUQ1SW5pdFxuZnVuY3Rpb24gY2FtbF9NRDVJbml0KCkge1xuICB2YXIgYnVmZmVyID0gbmV3IEFycmF5QnVmZmVyKDY0KTtcbiAgdmFyIGIzMiA9IG5ldyBVaW50MzJBcnJheShidWZmZXIpO1xuICB2YXIgYjggPSBuZXcgVWludDhBcnJheShidWZmZXIpO1xuICByZXR1cm4ge2xlbjowLFxuICAgICAgICAgIHc6bmV3IFVpbnQzMkFycmF5KFsweDY3NDUyMzAxLCAweEVGQ0RBQjg5LCAweDk4QkFEQ0ZFLCAweDEwMzI1NDc2XSksXG4gICAgICAgICAgYjMyOmIzMixcbiAgICAgICAgICBiODpiOH1cbn1cblxuLy9Qcm92aWRlczogY2FtbF9NRDVVcGRhdGVcbi8vUmVxdWlyZXM6IGNhbWxfTUQ1VHJhbnNmb3JtXG5mdW5jdGlvbiBjYW1sX01ENVVwZGF0ZShjdHgsIGlucHV0LCBpbnB1dF9sZW4pe1xuICB2YXIgaW5fYnVmID0gY3R4LmxlbiAmIDB4M2Y7XG4gIHZhciBpbnB1dF9wb3MgPSAwO1xuICBjdHgubGVuICs9IGlucHV0X2xlbjtcbiAgaWYoaW5fYnVmKXtcbiAgICB2YXIgbWlzc2luZyA9IDY0IC0gaW5fYnVmO1xuICAgIGlmKGlucHV0X2xlbiA8IG1pc3NpbmcpIHtcbiAgICAgIGN0eC5iOC5zZXQoaW5wdXQuc3ViYXJyYXkoMCxpbnB1dF9sZW4pLGluX2J1Zik7XG4gICAgICByZXR1cm5cbiAgICB9XG4gICAgY3R4LmI4LnNldChpbnB1dC5zdWJhcnJheSgwLG1pc3NpbmcpLGluX2J1Zik7XG4gICAgY2FtbF9NRDVUcmFuc2Zvcm0oY3R4LncsIGN0eC5iMzIpO1xuICAgIGlucHV0X2xlbiAtPSBtaXNzaW5nO1xuICAgIGlucHV0X3BvcyArPSBtaXNzaW5nO1xuICB9XG4gIHdoaWxlKGlucHV0X2xlbiA+PSA2NCl7XG4gICAgY3R4LmI4LnNldChpbnB1dC5zdWJhcnJheShpbnB1dF9wb3MsaW5wdXRfcG9zICsgNjQpLCAwKTtcbiAgICBjYW1sX01ENVRyYW5zZm9ybShjdHgudywgY3R4LmIzMik7XG4gICAgaW5wdXRfbGVuIC09IDY0O1xuICAgIGlucHV0X3BvcyArPSA2NDtcbiAgfVxuICBpZihpbnB1dF9sZW4pXG4gICAgY3R4LmI4LnNldChpbnB1dC5zdWJhcnJheShpbnB1dF9wb3MsaW5wdXRfcG9zICsgaW5wdXRfbGVuKSwgMCk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfTUQ1RmluYWxcbi8vUmVxdWlyZXM6IGNhbWxfTUQ1VHJhbnNmb3JtXG5mdW5jdGlvbiBjYW1sX01ENUZpbmFsKGN0eCl7XG4gIHZhciBpbl9idWYgPSBjdHgubGVuICYgMHgzZjtcbiAgY3R4LmI4W2luX2J1Zl0gPSAweDgwO1xuICBpbl9idWYgKys7XG4gIGlmKGluX2J1ZiA+IDU2KSB7XG4gICAgZm9yKHZhciBqID0gaW5fYnVmOyBqIDwgNjQ7IGorKyl7XG4gICAgICBjdHguYjhbal0gPSAwO1xuICAgIH1cbiAgICBjYW1sX01ENVRyYW5zZm9ybShjdHgudywgY3R4LmIzMik7XG4gICAgZm9yKHZhciBqID0gMDsgaiA8IDU2OyBqKyspe1xuICAgICAgY3R4LmI4W2pdID0gMDtcbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgZm9yKHZhciBqID0gaW5fYnVmOyBqIDwgNTY7IGorKyl7XG4gICAgICBjdHguYjhbal0gPSAwO1xuICAgIH1cbiAgfVxuICBjdHguYjMyWzE0XSA9IGN0eC5sZW4gPDwgMztcbiAgY3R4LmIzMlsxNV0gPSAoY3R4LmxlbiA+PiAyOSkgJiAweDFGRkZGRkZGO1xuICBjYW1sX01ENVRyYW5zZm9ybShjdHgudywgY3R4LmIzMik7XG4gIHZhciB0ID0gbmV3IFVpbnQ4QXJyYXkoMTYpO1xuICBmb3IgKHZhciBpID0gMDsgaSA8IDQ7IGkrKylcbiAgICBmb3IgKHZhciBqID0gMDsgaiA8IDQ7IGorKylcbiAgICAgIHRbaSAqIDQgKyBqXSA9IChjdHgud1tpXSA+PiAoOCAqIGopKSAmIDB4RkY7XG4gIHJldHVybiB0O1xufVxuXG5cbi8vUHJvdmlkZXM6IGNhbWxfbWQ1X2J5dGVzXG4vL1JlcXVpcmVzOiBjYW1sX3VpbnQ4X2FycmF5X29mX2J5dGVzLCBjYW1sX3N0cmluZ19vZl9hcnJheVxuLy9SZXF1aXJlczogY2FtbF9NRDVJbml0LCBjYW1sX01ENVVwZGF0ZSwgY2FtbF9NRDVGaW5hbFxuZnVuY3Rpb24gY2FtbF9tZDVfYnl0ZXMocywgb2ZzLCBsZW4pIHtcbiAgdmFyIGN0eCA9IGNhbWxfTUQ1SW5pdCgpO1xuICB2YXIgYSA9IGNhbWxfdWludDhfYXJyYXlfb2ZfYnl0ZXMocyk7XG4gIGNhbWxfTUQ1VXBkYXRlKGN0eCxhLnN1YmFycmF5KG9mcywgb2ZzICsgbGVuKSwgbGVuKTtcbiAgcmV0dXJuIGNhbWxfc3RyaW5nX29mX2FycmF5KGNhbWxfTUQ1RmluYWwoY3R4KSk7XG59XG4iLCIvLyBKc19vZl9vY2FtbCBydW50aW1lIHN1cHBvcnRcbi8vIGh0dHA6Ly93d3cub2NzaWdlbi5vcmcvanNfb2Zfb2NhbWwvXG4vLyBDb3B5cmlnaHQgKEMpIDIwMjAgLSBIdWdvIEhldXphcmRcbi8vIENvcHlyaWdodCAoQykgMjAyMCAtIFNoYWNoYXIgSXR6aGFreVxuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4vLyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbi8vIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4vLyBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4vLyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuLy8gTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuLy8gR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4vL1xuLy8gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4vLyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuLy8gRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cblxuLy8gQmFzZWQgb24gaHR0cHM6Ly9naXRodWIuY29tL29jYW1sL29jYW1sL2Jsb2IvNC4wNy9vdGhlcmxpYnMvc3RyL3N0cnN0dWJzLmNcbi8vIENvcGllZCBmcm9tIGh0dHBzOi8vZ2l0aHViLmNvbS9qc2NvcS9qc2NvcS9ibG9iL3Y4LjExL2NvcS1qcy9qc19zdHViL3N0ci5qc1xuXG4vL1Byb3ZpZGVzOiByZV9tYXRjaFxuLy9SZXF1aXJlczogY2FtbF9qc2J5dGVzX29mX3N0cmluZywgY2FtbF9qc19mcm9tX2FycmF5LCBjYW1sX3VpbnQ4X2FycmF5X29mX3N0cmluZ1xuLy9SZXF1aXJlczogY2FtbF9zdHJpbmdfZ2V0XG5cbnZhciByZV9tYXRjaCA9IGZ1bmN0aW9uKCl7XG4gIHZhciByZV93b3JkX2xldHRlcnMgPSBbXG4gICAgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgICAgICAgLyogMHgwMC0weDFGOiBub25lICovXG4gICAgMHgwMCwgMHgwMCwgMHhGRiwgMHgwMywgICAgICAgLyogMHgyMC0weDNGOiBkaWdpdHMgMC05ICovXG4gICAgMHhGRSwgMHhGRiwgMHhGRiwgMHg4NywgICAgICAgLyogMHg0MC0weDVGOiBBIHRvIFosIF8gKi9cbiAgICAweEZFLCAweEZGLCAweEZGLCAweDA3LCAgICAgICAvKiAweDYwLTB4N0Y6IGEgdG8geiAqL1xuICAgIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsICAgICAgIC8qIDB4ODAtMHg5Rjogbm9uZSAqL1xuICAgIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsICAgICAgIC8qIDB4QTAtMHhCRjogbm9uZSAqL1xuICAgIDB4RkYsIDB4RkYsIDB4N0YsIDB4RkYsICAgICAgIC8qIDB4QzAtMHhERjogTGF0aW4tMSBhY2NlbnRlZCB1cHBlcmNhc2UgKi9cbiAgICAweEZGLCAweEZGLCAweDdGLCAweEZGICAgICAgICAvKiAweEUwLTB4RkY6IExhdGluLTEgYWNjZW50ZWQgbG93ZXJjYXNlICovXG4gIF07XG5cbiAgdmFyIG9wY29kZXMgPSB7XG4gICAgQ0hBUjogMCwgQ0hBUk5PUk06IDEsIFNUUklORzogMiwgU1RSSU5HTk9STTogMywgQ0hBUkNMQVNTOiA0LFxuICAgIEJPTDogNSwgRU9MOiA2LCBXT1JEQk9VTkRBUlk6IDcsXG4gICAgQkVHR1JPVVA6IDgsIEVOREdST1VQOiA5LCBSRUZHUk9VUDogMTAsXG4gICAgQUNDRVBUOiAxMSxcbiAgICBTSU1QTEVPUFQ6IDEyLCBTSU1QTEVTVEFSOiAxMywgU0lNUExFUExVUzogMTQsXG4gICAgR09UTzogMTUsIFBVU0hCQUNLOiAxNiwgU0VUTUFSSzogMTcsXG4gICAgQ0hFQ0tQUk9HUkVTUzogMThcbiAgfTtcblxuICBmdW5jdGlvbiBpc193b3JkX2xldHRlcihjKSB7XG4gICAgcmV0dXJuIChyZV93b3JkX2xldHRlcnNbICAoYyA+PiAzKV0gPj4gKGMgJiA3KSkgJiAxO1xuICB9XG5cbiAgZnVuY3Rpb24gaW5fYml0c2V0KHMsaSkge1xuICAgIHJldHVybiAoY2FtbF9zdHJpbmdfZ2V0KHMsKGkgPj4gMykpID4+IChpICYgNykpICYgMTtcbiAgfVxuXG4gIGZ1bmN0aW9uIHJlX21hdGNoX2ltcGwocmUsIHMsIHBvcywgcGFydGlhbCkge1xuXG4gICAgdmFyIHByb2cgICAgICAgICAgPSBjYW1sX2pzX2Zyb21fYXJyYXkocmVbMV0pLFxuICAgICAgICBjcG9vbCAgICAgICAgID0gY2FtbF9qc19mcm9tX2FycmF5KHJlWzJdKSxcbiAgICAgICAgbm9ybXRhYmxlICAgICA9IGNhbWxfanNieXRlc19vZl9zdHJpbmcocmVbM10pLFxuICAgICAgICBudW1ncm91cHMgICAgID0gcmVbNF0gfCAwLFxuICAgICAgICBudW1yZWdpc3RlcnMgID0gcmVbNV0gfCAwLFxuICAgICAgICBzdGFydGNoYXJzICAgID0gcmVbNl0gfCAwO1xuXG4gICAgdmFyIHMgPSBjYW1sX3VpbnQ4X2FycmF5X29mX3N0cmluZyhzKTtcblxuICAgIHZhciBwYyA9IDAsXG4gICAgICAgIHF1aXQgPSBmYWxzZSxcbiAgICAgICAgc3RhY2sgPSBbXSxcbiAgICAgICAgZ3JvdXBzID0gbmV3IEFycmF5KG51bWdyb3VwcyksXG4gICAgICAgIHJlX3JlZ2lzdGVyID0gbmV3IEFycmF5KG51bXJlZ2lzdGVycyk7XG5cbiAgICBmb3IodmFyIGkgPSAwOyBpIDwgZ3JvdXBzLmxlbmd0aDsgaSsrKXtcbiAgICAgIGdyb3Vwc1tpXSA9IHtzdGFydDogLTEsIGVuZDotMX1cbiAgICB9XG4gICAgZ3JvdXBzWzBdLnN0YXJ0ID0gcG9zO1xuXG4gICAgdmFyIGJhY2t0cmFjayA9IGZ1bmN0aW9uICgpIHtcbiAgICAgIHdoaWxlIChzdGFjay5sZW5ndGgpIHtcbiAgICAgICAgdmFyIGl0ZW0gPSBzdGFjay5wb3AoKTtcbiAgICAgICAgaWYgKGl0ZW0udW5kbykge1xuICAgICAgICAgIGl0ZW0udW5kby5vYmpbaXRlbS51bmRvLnByb3BdID0gaXRlbS51bmRvLnZhbHVlO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYoaXRlbS5wb3MpIHtcbiAgICAgICAgICBwYyA9IGl0ZW0ucG9zLnBjO1xuICAgICAgICAgIHBvcyA9IGl0ZW0ucG9zLnR4dDtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHF1aXQgPSB0cnVlO1xuICAgIH07XG5cbiAgICB2YXIgcHVzaCA9IGZ1bmN0aW9uKGl0ZW0pIHsgc3RhY2sucHVzaChpdGVtKTsgfTtcblxuICAgIHZhciBhY2NlcHQgPSBmdW5jdGlvbiAoKSB7XG4gICAgICBncm91cHNbMF0uZW5kID0gcG9zO1xuICAgICAgdmFyIHJlc3VsdCA9IG5ldyBBcnJheSgxICsgZ3JvdXBzLmxlbmd0aCoyKTtcbiAgICAgIHJlc3VsdFswXSA9IDA7IC8vIHRhZ1xuICAgICAgZm9yKHZhciBpID0gMDsgaSA8IGdyb3Vwcy5sZW5ndGg7IGkrKyl7XG4gICAgICAgIHZhciBnID0gZ3JvdXBzW2ldO1xuICAgICAgICBpZihnLnN0YXJ0IDwgMCB8fCBnLmVuZCA8IDApIHtcbiAgICAgICAgICBnLnN0YXJ0ID0gZy5lbmQgPSAtMTtcbiAgICAgICAgfVxuICAgICAgICByZXN1bHRbMippICsgMSBdID0gZy5zdGFydDtcbiAgICAgICAgcmVzdWx0WzIqaSArIDEgKyAxIF0gPSBnLmVuZDtcbiAgICAgIH07XG4gICAgICByZXR1cm4gcmVzdWx0XG4gICAgfTtcblxuICAgIHZhciBwcmVmaXhfbWF0Y2ggPSBmdW5jdGlvbiAoKSB7XG4gICAgICBpZihwYXJ0aWFsKSByZXR1cm4gYWNjZXB0ICgpO1xuICAgICAgZWxzZSBiYWNrdHJhY2sgKCk7XG4gICAgfVxuXG4gICAgLyogTWFpbiBERkEgaW50ZXJwcmV0ZXIgbG9vcCAqL1xuICAgIHdoaWxlICghcXVpdCkge1xuICAgICAgdmFyIG9wID0gcHJvZ1twY10gJiAweGZmLFxuICAgICAgICAgIHNhcmcgPSBwcm9nW3BjXSA+PiA4LFxuICAgICAgICAgIHVhcmcgPSBzYXJnICYgMHhmZixcbiAgICAgICAgICBjID0gc1twb3NdLFxuICAgICAgICAgIGdyb3VwO1xuXG4gICAgICBwYysrO1xuXG4gICAgICBzd2l0Y2ggKG9wKSB7XG4gICAgICBjYXNlIG9wY29kZXMuQ0hBUjpcbiAgICAgICAgaWYocG9zID09PSBzLmxlbmd0aCkge3ByZWZpeF9tYXRjaCAoKTsgYnJlYWt9O1xuICAgICAgICBpZiAoYyA9PT0gdWFyZykgcG9zKys7XG4gICAgICAgIGVsc2UgYmFja3RyYWNrKCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBvcGNvZGVzLkNIQVJOT1JNOlxuICAgICAgICBpZihwb3MgPT09IHMubGVuZ3RoKSB7cHJlZml4X21hdGNoICgpOyBicmVha307XG4gICAgICAgIGlmIChub3JtdGFibGUuY2hhckNvZGVBdChjKSA9PT0gdWFyZykgcG9zKys7XG4gICAgICAgIGVsc2UgYmFja3RyYWNrKCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBvcGNvZGVzLlNUUklORzpcbiAgICAgICAgZm9yICh2YXIgYXJnID0gY2FtbF9qc2J5dGVzX29mX3N0cmluZyhjcG9vbFt1YXJnXSksIGkgPSAwOyBpIDwgYXJnLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgaWYocG9zID09PSBzLmxlbmd0aCkge3ByZWZpeF9tYXRjaCAoKTsgYnJlYWt9O1xuICAgICAgICAgIGlmIChjID09PSBhcmcuY2hhckNvZGVBdChpKSlcbiAgICAgICAgICAgIGMgPSBzWysrcG9zXTtcbiAgICAgICAgICBlbHNlIHsgYmFja3RyYWNrKCk7IGJyZWFrOyB9XG4gICAgICAgIH1cbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIG9wY29kZXMuU1RSSU5HTk9STTpcbiAgICAgICAgZm9yICh2YXIgYXJnID0gY2FtbF9qc2J5dGVzX29mX3N0cmluZyhjcG9vbFt1YXJnXSksIGkgPSAwOyBpIDwgYXJnLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgaWYocG9zID09PSBzLmxlbmd0aCkge3ByZWZpeF9tYXRjaCAoKTsgYnJlYWt9O1xuICAgICAgICAgIGlmIChub3JtdGFibGUuY2hhckNvZGVBdChjKSA9PT0gYXJnLmNoYXJDb2RlQXQoaSkpXG4gICAgICAgICAgICBjID0gc1srK3Bvc107XG4gICAgICAgICAgZWxzZSB7IGJhY2t0cmFjaygpOyBicmVhazsgfVxuICAgICAgICB9XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBvcGNvZGVzLkNIQVJDTEFTUzpcbiAgICAgICAgaWYocG9zID09PSBzLmxlbmd0aCkge3ByZWZpeF9tYXRjaCAoKTsgYnJlYWt9O1xuICAgICAgICBpZiAoaW5fYml0c2V0KGNwb29sW3VhcmddLCBjKSkgcG9zKys7XG4gICAgICAgIGVsc2UgYmFja3RyYWNrKCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBvcGNvZGVzLkJPTDpcbiAgICAgICAgaWYocG9zID4gMCAmJiBzW3BvcyAtIDFdICE9IDEwIC8qIFxcbiAqLykge2JhY2t0cmFjaygpfVxuICAgICAgICBicmVhaztcbiAgICAgIGNhc2Ugb3Bjb2Rlcy5FT0w6XG4gICAgICAgIGlmKHBvcyA8IHMubGVuZ3RoICYmIHNbcG9zXSAhPSAxMCAvKiBcXG4gKi8pIHtiYWNrdHJhY2soKX1cbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIG9wY29kZXMuV09SREJPVU5EQVJZOlxuICAgICAgICBpZihwb3MgPT0gMCkge1xuICAgICAgICAgIGlmKHBvcyA9PT0gcy5sZW5ndGgpIHtwcmVmaXhfbWF0Y2ggKCk7IGJyZWFrfTtcbiAgICAgICAgICBpZihpc193b3JkX2xldHRlcihzWzBdKSkgYnJlYWs7XG4gICAgICAgICAgYmFja3RyYWNrKCk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAocG9zID09PSBzLmxlbmd0aCkge1xuICAgICAgICAgIGlmKGlzX3dvcmRfbGV0dGVyKHNbcG9zIC0gMV0pKSBicmVhaztcbiAgICAgICAgICBiYWNrdHJhY2sgKCk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgaWYoaXNfd29yZF9sZXR0ZXIoc1twb3MgLSAxXSkgIT0gaXNfd29yZF9sZXR0ZXIoc1twb3NdKSkgYnJlYWs7XG4gICAgICAgICAgYmFja3RyYWNrICgpO1xuICAgICAgICB9XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBvcGNvZGVzLkJFR0dST1VQOlxuICAgICAgICBncm91cCA9IGdyb3Vwc1t1YXJnXTtcbiAgICAgICAgcHVzaCh7dW5kbzoge29iajpncm91cCxcbiAgICAgICAgICAgICAgICAgICAgIHByb3A6J3N0YXJ0JyxcbiAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBncm91cC5zdGFydH19KTtcbiAgICAgICAgZ3JvdXAuc3RhcnQgPSBwb3M7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBvcGNvZGVzLkVOREdST1VQOlxuICAgICAgICBncm91cCA9IGdyb3Vwc1t1YXJnXTtcbiAgICAgICAgcHVzaCh7dW5kbzoge29iajogZ3JvdXAsXG4gICAgICAgICAgICAgICAgICAgICBwcm9wOidlbmQnLFxuICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGdyb3VwLmVuZH19KTtcbiAgICAgICAgZ3JvdXAuZW5kID0gcG9zO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2Ugb3Bjb2Rlcy5SRUZHUk9VUDpcbiAgICAgICAgZ3JvdXAgPSBncm91cHNbdWFyZ107XG4gICAgICAgIGlmKGdyb3VwLnN0YXJ0IDwgMCB8fCBncm91cC5lbmQgPCAwKSB7YmFja3RyYWNrICgpOyBicmVha31cbiAgICAgICAgZm9yICh2YXIgaSA9IGdyb3VwLnN0YXJ0OyBpIDwgZ3JvdXAuZW5kOyBpKyspe1xuICAgICAgICAgIGlmKHBvcyA9PT0gcy5sZW5ndGgpIHtwcmVmaXhfbWF0Y2ggKCk7IGJyZWFrfTtcbiAgICAgICAgICBpZihzW2ldICE9IHNbcG9zXSkge2JhY2t0cmFjayAoKTsgYnJlYWt9XG4gICAgICAgICAgcG9zKys7XG4gICAgICAgIH1cbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIG9wY29kZXMuU0lNUExFT1BUOlxuICAgICAgICBpZiAoaW5fYml0c2V0KGNwb29sW3VhcmddLCBjKSkgcG9zKys7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBvcGNvZGVzLlNJTVBMRVNUQVI6XG4gICAgICAgIHdoaWxlIChpbl9iaXRzZXQoY3Bvb2xbdWFyZ10sIGMpKVxuICAgICAgICAgIGMgPSBzWysrcG9zXTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIG9wY29kZXMuU0lNUExFUExVUzpcbiAgICAgICAgaWYocG9zID09PSBzLmxlbmd0aCkge3ByZWZpeF9tYXRjaCAoKTsgYnJlYWt9O1xuICAgICAgICBpZiAoaW5fYml0c2V0KGNwb29sW3VhcmddLCBjKSkge1xuICAgICAgICAgIGRvIHtcbiAgICAgICAgICAgIGMgPSBzWysrcG9zXTtcbiAgICAgICAgICB9IHdoaWxlIChpbl9iaXRzZXQoY3Bvb2xbdWFyZ10sIGMpKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGJhY2t0cmFjaygpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2Ugb3Bjb2Rlcy5BQ0NFUFQ6XG4gICAgICAgIHJldHVybiBhY2NlcHQoKTtcbiAgICAgIGNhc2Ugb3Bjb2Rlcy5HT1RPOlxuICAgICAgICBwYyA9IHBjICsgc2FyZztcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIG9wY29kZXMuUFVTSEJBQ0s6XG4gICAgICAgIHB1c2goe3Bvczoge3BjOiBwYyArIHNhcmcsIHR4dDogcG9zfX0pO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2Ugb3Bjb2Rlcy5TRVRNQVJLOlxuICAgICAgICBwdXNoKHt1bmRvOiB7b2JqOnJlX3JlZ2lzdGVyLFxuICAgICAgICAgICAgICAgICAgICAgcHJvcDogdWFyZyxcbiAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiByZV9yZWdpc3Rlclt1YXJnXX19KTtcbiAgICAgICAgcmVfcmVnaXN0ZXJbdWFyZ10gPSBwb3M7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBvcGNvZGVzLkNIRUNLUFJPR1JFU1M6XG4gICAgICAgIGlmIChyZV9yZWdpc3Rlclt1YXJnXSA9PT0gcG9zKSBiYWNrdHJhY2soKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBkZWZhdWx0OiB0aHJvdyBuZXcgRXJyb3IoXCJJbnZhbGlkIGJ5dGVjb2RlXCIpO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gMDtcbiAgfVxuXG4gIHJldHVybiByZV9tYXRjaF9pbXBsO1xufSgpO1xuXG5cbi8vUHJvdmlkZXM6IHJlX3NlYXJjaF9mb3J3YXJkXG4vL1JlcXVpcmVzOiByZV9tYXRjaCwgY2FtbF9tbF9zdHJpbmdfbGVuZ3RoLCBjYW1sX2ludmFsaWRfYXJndW1lbnRcbmZ1bmN0aW9uIHJlX3NlYXJjaF9mb3J3YXJkKHJlLCBzLCBwb3MpIHtcbiAgaWYocG9zIDwgMCB8fCBwb3MgPiBjYW1sX21sX3N0cmluZ19sZW5ndGgocykpXG4gICAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiU3RyLnNlYXJjaF9mb3J3YXJkXCIpXG4gIHdoaWxlIChwb3MgPD0gY2FtbF9tbF9zdHJpbmdfbGVuZ3RoKHMpKSB7XG4gICAgdmFyIHJlcyA9IHJlX21hdGNoKHJlLCBzLCBwb3MsIDApO1xuICAgIGlmIChyZXMpIHJldHVybiByZXM7XG4gICAgcG9zKys7XG4gIH1cblxuICByZXR1cm4gWzBdOyAgLyogW3x8XSA6IGludCBhcnJheSAqL1xufVxuXG4vL1Byb3ZpZGVzOiByZV9zZWFyY2hfYmFja3dhcmRcbi8vUmVxdWlyZXM6IHJlX21hdGNoLCBjYW1sX21sX3N0cmluZ19sZW5ndGgsIGNhbWxfaW52YWxpZF9hcmd1bWVudFxuZnVuY3Rpb24gcmVfc2VhcmNoX2JhY2t3YXJkKHJlLCBzLCBwb3MpIHtcbiAgaWYocG9zIDwgMCB8fCBwb3MgPiBjYW1sX21sX3N0cmluZ19sZW5ndGgocykpXG4gICAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiU3RyLnNlYXJjaF9iYWNrd2FyZFwiKVxuICB3aGlsZSAocG9zID49IDApIHtcbiAgICB2YXIgcmVzID0gcmVfbWF0Y2gocmUsIHMsIHBvcywgMCk7XG4gICAgaWYgKHJlcykgcmV0dXJuIHJlcztcbiAgICBwb3MtLTtcbiAgfVxuXG4gIHJldHVybiBbMF07ICAvKiBbfHxdIDogaW50IGFycmF5ICovXG59XG5cblxuLy9Qcm92aWRlczogcmVfc3RyaW5nX21hdGNoXG4vL1JlcXVpcmVzOiByZV9tYXRjaCwgY2FtbF9tbF9zdHJpbmdfbGVuZ3RoLCBjYW1sX2ludmFsaWRfYXJndW1lbnRcbmZ1bmN0aW9uIHJlX3N0cmluZ19tYXRjaChyZSxzLHBvcyl7XG4gIGlmKHBvcyA8IDAgfHwgcG9zID4gY2FtbF9tbF9zdHJpbmdfbGVuZ3RoKHMpKVxuICAgIGNhbWxfaW52YWxpZF9hcmd1bWVudChcIlN0ci5zdHJpbmdfbWF0Y2hcIilcbiAgdmFyIHJlcyA9IHJlX21hdGNoKHJlLCBzLCBwb3MsIDApO1xuICBpZiAocmVzKSByZXR1cm4gcmVzO1xuICBlbHNlIHJldHVybiBbMF07XG59XG5cbi8vUHJvdmlkZXM6IHJlX3BhcnRpYWxfbWF0Y2hcbi8vUmVxdWlyZXM6IHJlX21hdGNoLCBjYW1sX21sX3N0cmluZ19sZW5ndGgsIGNhbWxfaW52YWxpZF9hcmd1bWVudFxuZnVuY3Rpb24gcmVfcGFydGlhbF9tYXRjaChyZSxzLHBvcyl7XG4gIGlmKHBvcyA8IDAgfHwgcG9zID4gY2FtbF9tbF9zdHJpbmdfbGVuZ3RoKHMpKVxuICAgIGNhbWxfaW52YWxpZF9hcmd1bWVudChcIlN0ci5wYXJ0aWFsX21hdGNoXCIpXG4gIHZhciByZXMgPSByZV9tYXRjaChyZSwgcywgcG9zLCAxKTtcbiAgaWYgKHJlcykgcmV0dXJuIHJlcztcbiAgZWxzZSByZXR1cm4gWzBdO1xufVxuXG4vL1Byb3ZpZGVzOiByZV9yZXBsYWNlbWVudF90ZXh0XG4vL1JlcXVpcmVzOiBjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nLCBjYW1sX3N0cmluZ19vZl9qc2J5dGVzXG4vL1JlcXVpcmVzOiBjYW1sX2FycmF5X2dldFxuLy9SZXF1aXJlczogY2FtbF9mYWlsd2l0aFxuLy8gZXh0ZXJuYWwgcmVfcmVwbGFjZW1lbnRfdGV4dDogc3RyaW5nIC0+IGludCBhcnJheSAtPiBzdHJpbmcgLT4gc3RyaW5nXG5mdW5jdGlvbiByZV9yZXBsYWNlbWVudF90ZXh0KHJlcGwsZ3JvdXBzLG9yaWcpIHtcbiAgdmFyIHJlcGwgPSBjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nKHJlcGwpO1xuICB2YXIgbGVuID0gcmVwbC5sZW5ndGg7XG4gIHZhciBvcmlnID0gY2FtbF9qc2J5dGVzX29mX3N0cmluZyhvcmlnKTtcbiAgdmFyIHJlcyA9IFwiXCI7IC8vcmVzdWx0XG4gIHZhciBuID0gMDsgLy8gY3VycmVudCBwb3NpdGlvblxuICB2YXIgY3VyOyAvL2N1cnJlbnQgY2hhclxuICB2YXIgc3RhcnQsIGVuZCwgYztcbiAgd2hpbGUobiA8IGxlbil7XG4gICAgY3VyID0gcmVwbC5jaGFyQXQobisrKTtcbiAgICBpZihjdXIgIT0gJ1xcXFwnKXtcbiAgICAgIHJlcyArPSBjdXI7XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgaWYobiA9PSBsZW4pIGNhbWxfZmFpbHdpdGgoXCJTdHIucmVwbGFjZTogaWxsZWdhbCBiYWNrc2xhc2ggc2VxdWVuY2VcIik7XG4gICAgICBjdXIgPSByZXBsLmNoYXJBdChuKyspO1xuICAgICAgc3dpdGNoKGN1cil7XG4gICAgICBjYXNlICdcXFxcJzpcbiAgICAgICAgcmVzICs9IGN1cjtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICcwJzogY2FzZSAnMSc6IGNhc2UgJzInOiBjYXNlICczJzogY2FzZSAnNCc6XG4gICAgICBjYXNlICc1JzogY2FzZSAnNic6IGNhc2UgJzcnOiBjYXNlICc4JzogY2FzZSAnOSc6XG4gICAgICAgIGMgPSArY3VyO1xuICAgICAgICBpZiAoYyoyID49IGdyb3Vwcy5sZW5ndGggLSAxIClcbiAgICAgICAgICBjYW1sX2ZhaWx3aXRoKFwiU3RyLnJlcGxhY2U6IHJlZmVyZW5jZSB0byB1bm1hdGNoZWQgZ3JvdXBcIiApO1xuICAgICAgICBzdGFydCA9IGNhbWxfYXJyYXlfZ2V0KGdyb3VwcyxjKjIpO1xuICAgICAgICBlbmQgPSBjYW1sX2FycmF5X2dldChncm91cHMsIGMqMiArMSk7XG4gICAgICAgIGlmIChzdGFydCA9PSAtMSlcbiAgICAgICAgICBjYW1sX2ZhaWx3aXRoKFwiU3RyLnJlcGxhY2U6IHJlZmVyZW5jZSB0byB1bm1hdGNoZWQgZ3JvdXBcIik7XG4gICAgICAgIHJlcys9b3JpZy5zbGljZShzdGFydCxlbmQpO1xuICAgICAgICBicmVhaztcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHJlcyArPSAoJ1xcXFwnICArIGN1cik7XG4gICAgICB9XG4gICAgfVxuICB9XG4gIHJldHVybiBjYW1sX3N0cmluZ19vZl9qc2J5dGVzKHJlcyk7IH1cblxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N0cl9pbml0aWFsaXplXG5mdW5jdGlvbiBjYW1sX3N0cl9pbml0aWFsaXplKHVuaXQpIHtcbiAgcmV0dXJuIDA7XG59XG4iLCIvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG4vKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovXG4vKiAgICAgICAgICAgICAgICAgICAgICAgICAgIE9iamVjdGl2ZSBDYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICovXG4vKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovXG4vKiAgICAgICAgICAgIFhhdmllciBMZXJveSwgcHJvamV0IENyaXN0YWwsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICovXG4vKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovXG4vKiAgQ29weXJpZ2h0IDE5OTYgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICovXG4vKiAgZW4gQXV0b21hdGlxdWUuICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkICAgICovXG4vKiAgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UsIHdpdGggICAgICovXG4vKiAgdGhlIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIGZpbGUgLi4vTElDRU5TRS4gICAgICovXG4vKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovXG4vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbi8qICRJZDogbGV4aW5nLmMgNjA0NSAyMDA0LTAxLTAxIDE2OjQyOjQzWiBkb2xpZ2V6ICQgKi9cblxuLyogVGhlIHRhYmxlLWRyaXZlbiBhdXRvbWF0b24gZm9yIGxleGVycyBnZW5lcmF0ZWQgYnkgY2FtbGxleC4gKi9cblxuLy9Qcm92aWRlczogY2FtbF9sZXhfYXJyYXlcbi8vUmVxdWlyZXM6IGNhbWxfanNieXRlc19vZl9zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfbGV4X2FycmF5KHMpIHtcbiAgcyA9IGNhbWxfanNieXRlc19vZl9zdHJpbmcocyk7XG4gIHZhciBsID0gcy5sZW5ndGggLyAyO1xuICB2YXIgYSA9IG5ldyBBcnJheShsKTtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBsOyBpKyspXG4gICAgYVtpXSA9IChzLmNoYXJDb2RlQXQoMiAqIGkpIHwgKHMuY2hhckNvZGVBdCgyICogaSArIDEpIDw8IDgpKSA8PCAxNiA+PiAxNjtcbiAgcmV0dXJuIGE7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbGV4X2VuZ2luZVxuLy9SZXF1aXJlczogY2FtbF9mYWlsd2l0aCwgY2FtbF9sZXhfYXJyYXksIGNhbWxfdWludDhfYXJyYXlfb2ZfYnl0ZXNcbmZ1bmN0aW9uIGNhbWxfbGV4X2VuZ2luZSh0YmwsIHN0YXJ0X3N0YXRlLCBsZXhidWYpIHtcbiAgdmFyIGxleF9idWZmZXIgPSAyO1xuICB2YXIgbGV4X2J1ZmZlcl9sZW4gPSAzO1xuICB2YXIgbGV4X3N0YXJ0X3BvcyA9IDU7XG4gIHZhciBsZXhfY3Vycl9wb3MgPSA2O1xuICB2YXIgbGV4X2xhc3RfcG9zID0gNztcbiAgdmFyIGxleF9sYXN0X2FjdGlvbiA9IDg7XG4gIHZhciBsZXhfZW9mX3JlYWNoZWQgPSA5O1xuICB2YXIgbGV4X2Jhc2UgPSAxO1xuICB2YXIgbGV4X2JhY2t0cmsgPSAyO1xuICB2YXIgbGV4X2RlZmF1bHQgPSAzO1xuICB2YXIgbGV4X3RyYW5zID0gNDtcbiAgdmFyIGxleF9jaGVjayA9IDU7XG5cbiAgaWYgKCF0YmwubGV4X2RlZmF1bHQpIHtcbiAgICB0YmwubGV4X2Jhc2UgPSAgICBjYW1sX2xleF9hcnJheSAodGJsW2xleF9iYXNlXSk7XG4gICAgdGJsLmxleF9iYWNrdHJrID0gY2FtbF9sZXhfYXJyYXkgKHRibFtsZXhfYmFja3Rya10pO1xuICAgIHRibC5sZXhfY2hlY2sgPSAgIGNhbWxfbGV4X2FycmF5ICh0YmxbbGV4X2NoZWNrXSk7XG4gICAgdGJsLmxleF90cmFucyA9ICAgY2FtbF9sZXhfYXJyYXkgKHRibFtsZXhfdHJhbnNdKTtcbiAgICB0YmwubGV4X2RlZmF1bHQgPSBjYW1sX2xleF9hcnJheSAodGJsW2xleF9kZWZhdWx0XSk7XG4gIH1cblxuICB2YXIgYywgc3RhdGUgPSBzdGFydF9zdGF0ZTtcblxuICB2YXIgYnVmZmVyID0gY2FtbF91aW50OF9hcnJheV9vZl9ieXRlcyhsZXhidWZbbGV4X2J1ZmZlcl0pO1xuXG4gIGlmIChzdGF0ZSA+PSAwKSB7XG4gICAgLyogRmlyc3QgZW50cnkgKi9cbiAgICBsZXhidWZbbGV4X2xhc3RfcG9zXSA9IGxleGJ1ZltsZXhfc3RhcnRfcG9zXSA9IGxleGJ1ZltsZXhfY3Vycl9wb3NdO1xuICAgIGxleGJ1ZltsZXhfbGFzdF9hY3Rpb25dID0gLTE7XG4gIH0gZWxzZSB7XG4gICAgLyogUmVlbnRyeSBhZnRlciByZWZpbGwgKi9cbiAgICBzdGF0ZSA9IC1zdGF0ZSAtIDE7XG4gIH1cbiAgZm9yKDs7KSB7XG4gICAgLyogTG9va3VwIGJhc2UgYWRkcmVzcyBvciBhY3Rpb24gbnVtYmVyIGZvciBjdXJyZW50IHN0YXRlICovXG4gICAgdmFyIGJhc2UgPSB0YmwubGV4X2Jhc2Vbc3RhdGVdO1xuICAgIGlmIChiYXNlIDwgMCkgcmV0dXJuIC1iYXNlLTE7XG4gICAgLyogU2VlIGlmIGl0J3MgYSBiYWNrdHJhY2sgcG9pbnQgKi9cbiAgICB2YXIgYmFja3RyayA9IHRibC5sZXhfYmFja3Rya1tzdGF0ZV07XG4gICAgaWYgKGJhY2t0cmsgPj0gMCkge1xuICAgICAgbGV4YnVmW2xleF9sYXN0X3Bvc10gPSBsZXhidWZbbGV4X2N1cnJfcG9zXTtcbiAgICAgIGxleGJ1ZltsZXhfbGFzdF9hY3Rpb25dID0gYmFja3RyaztcbiAgICB9XG4gICAgLyogU2VlIGlmIHdlIG5lZWQgYSByZWZpbGwgKi9cbiAgICBpZiAobGV4YnVmW2xleF9jdXJyX3Bvc10gPj0gbGV4YnVmW2xleF9idWZmZXJfbGVuXSl7XG4gICAgICBpZiAobGV4YnVmW2xleF9lb2ZfcmVhY2hlZF0gPT0gMClcbiAgICAgICAgcmV0dXJuIC1zdGF0ZSAtIDE7XG4gICAgICBlbHNlXG4gICAgICAgIGMgPSAyNTY7XG4gICAgfWVsc2V7XG4gICAgICAvKiBSZWFkIG5leHQgaW5wdXQgY2hhciAqL1xuICAgICAgYyA9IGJ1ZmZlcltsZXhidWZbbGV4X2N1cnJfcG9zXV07XG4gICAgICBsZXhidWZbbGV4X2N1cnJfcG9zXSArKztcbiAgICB9XG4gICAgLyogRGV0ZXJtaW5lIG5leHQgc3RhdGUgKi9cbiAgICBpZiAodGJsLmxleF9jaGVja1tiYXNlICsgY10gPT0gc3RhdGUpXG4gICAgICBzdGF0ZSA9IHRibC5sZXhfdHJhbnNbYmFzZSArIGNdO1xuICAgIGVsc2VcbiAgICAgIHN0YXRlID0gdGJsLmxleF9kZWZhdWx0W3N0YXRlXTtcbiAgICAvKiBJZiBubyB0cmFuc2l0aW9uIG9uIHRoaXMgY2hhciwgcmV0dXJuIHRvIGxhc3QgYmFja3RyYWNrIHBvaW50ICovXG4gICAgaWYgKHN0YXRlIDwgMCkge1xuICAgICAgbGV4YnVmW2xleF9jdXJyX3Bvc10gPSBsZXhidWZbbGV4X2xhc3RfcG9zXTtcbiAgICAgIGlmIChsZXhidWZbbGV4X2xhc3RfYWN0aW9uXSA9PSAtMSlcbiAgICAgICAgY2FtbF9mYWlsd2l0aChcImxleGluZzogZW1wdHkgdG9rZW5cIik7XG4gICAgICBlbHNlXG4gICAgICAgIHJldHVybiBsZXhidWZbbGV4X2xhc3RfYWN0aW9uXTtcbiAgICB9ZWxzZXtcbiAgICAgIC8qIEVyYXNlIHRoZSBFT0YgY29uZGl0aW9uIG9ubHkgaWYgdGhlIEVPRiBwc2V1ZG8tY2hhcmFjdGVyIHdhc1xuICAgICAgICAgY29uc3VtZWQgYnkgdGhlIGF1dG9tYXRvbiAoaS5lLiB0aGVyZSB3YXMgbm8gYmFja3RyYWNrIGFib3ZlKVxuICAgICAgKi9cbiAgICAgIGlmIChjID09IDI1NikgbGV4YnVmW2xleF9lb2ZfcmVhY2hlZF0gPSAwO1xuICAgIH1cbiAgfVxufVxuXG4vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG4vKiBOZXcgbGV4ZXIgZW5naW5lLCB3aXRoIG1lbW9yeSBvZiBwb3NpdGlvbnMgICovXG4vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbi8vUHJvdmlkZXM6IGNhbWxfbmV3X2xleF9lbmdpbmVcbi8vUmVxdWlyZXM6IGNhbWxfZmFpbHdpdGgsIGNhbWxfbGV4X2FycmF5XG4vL1JlcXVpcmVzOiBjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nLCBjYW1sX3VpbnQ4X2FycmF5X29mX2J5dGVzXG5mdW5jdGlvbiBjYW1sX2xleF9ydW5fbWVtKHMsIGksIG1lbSwgY3Vycl9wb3MpIHtcbiAgZm9yICg7Oykge1xuICAgIHZhciBkc3QgPSBzLmNoYXJDb2RlQXQoaSk7IGkrKztcbiAgICBpZiAoZHN0ID09IDB4ZmYpIHJldHVybjtcbiAgICB2YXIgc3JjID0gcy5jaGFyQ29kZUF0KGkpOyBpKys7XG4gICAgaWYgKHNyYyA9PSAweGZmKVxuICAgICAgbWVtIFtkc3QgKyAxXSA9IGN1cnJfcG9zO1xuICAgIGVsc2VcbiAgICAgIG1lbSBbZHN0ICsgMV0gPSBtZW0gW3NyYyArIDFdO1xuICB9XG59XG5cbmZ1bmN0aW9uIGNhbWxfbGV4X3J1bl90YWcocywgaSwgbWVtKSB7XG4gIGZvciAoOzspIHtcbiAgICB2YXIgZHN0ID0gcy5jaGFyQ29kZUF0KGkpOyBpKys7XG4gICAgaWYgKGRzdCA9PSAweGZmKSByZXR1cm4gO1xuICAgIHZhciBzcmMgPSBzLmNoYXJDb2RlQXQoaSk7IGkrKztcbiAgICBpZiAoc3JjID09IDB4ZmYpXG4gICAgICBtZW0gW2RzdCArIDFdID0gLTE7XG4gICAgZWxzZVxuICAgICAgbWVtIFtkc3QgKyAxXSA9IG1lbSBbc3JjICsgMV07XG4gIH1cbn1cblxuZnVuY3Rpb24gY2FtbF9uZXdfbGV4X2VuZ2luZSh0YmwsIHN0YXJ0X3N0YXRlLCBsZXhidWYpIHtcbiAgdmFyIGxleF9idWZmZXIgPSAyO1xuICB2YXIgbGV4X2J1ZmZlcl9sZW4gPSAzO1xuICB2YXIgbGV4X3N0YXJ0X3BvcyA9IDU7XG4gIHZhciBsZXhfY3Vycl9wb3MgPSA2O1xuICB2YXIgbGV4X2xhc3RfcG9zID0gNztcbiAgdmFyIGxleF9sYXN0X2FjdGlvbiA9IDg7XG4gIHZhciBsZXhfZW9mX3JlYWNoZWQgPSA5O1xuICB2YXIgbGV4X21lbSA9IDEwO1xuICB2YXIgbGV4X2Jhc2UgPSAxO1xuICB2YXIgbGV4X2JhY2t0cmsgPSAyO1xuICB2YXIgbGV4X2RlZmF1bHQgPSAzO1xuICB2YXIgbGV4X3RyYW5zID0gNDtcbiAgdmFyIGxleF9jaGVjayA9IDU7XG4gIHZhciBsZXhfYmFzZV9jb2RlID0gNjtcbiAgdmFyIGxleF9iYWNrdHJrX2NvZGUgPSA3O1xuICB2YXIgbGV4X2RlZmF1bHRfY29kZSA9IDg7XG4gIHZhciBsZXhfdHJhbnNfY29kZSA9IDk7XG4gIHZhciBsZXhfY2hlY2tfY29kZSA9IDEwO1xuICB2YXIgbGV4X2NvZGUgPSAxMTtcblxuICBpZiAoIXRibC5sZXhfZGVmYXVsdCkge1xuICAgIHRibC5sZXhfYmFzZSA9ICAgIGNhbWxfbGV4X2FycmF5ICh0YmxbbGV4X2Jhc2VdKTtcbiAgICB0YmwubGV4X2JhY2t0cmsgPSBjYW1sX2xleF9hcnJheSAodGJsW2xleF9iYWNrdHJrXSk7XG4gICAgdGJsLmxleF9jaGVjayA9ICAgY2FtbF9sZXhfYXJyYXkgKHRibFtsZXhfY2hlY2tdKTtcbiAgICB0YmwubGV4X3RyYW5zID0gICBjYW1sX2xleF9hcnJheSAodGJsW2xleF90cmFuc10pO1xuICAgIHRibC5sZXhfZGVmYXVsdCA9IGNhbWxfbGV4X2FycmF5ICh0YmxbbGV4X2RlZmF1bHRdKTtcbiAgfVxuICBpZiAoIXRibC5sZXhfZGVmYXVsdF9jb2RlKSB7XG4gICAgdGJsLmxleF9iYXNlX2NvZGUgPSAgICBjYW1sX2xleF9hcnJheSAodGJsW2xleF9iYXNlX2NvZGVdKTtcbiAgICB0YmwubGV4X2JhY2t0cmtfY29kZSA9IGNhbWxfbGV4X2FycmF5ICh0YmxbbGV4X2JhY2t0cmtfY29kZV0pO1xuICAgIHRibC5sZXhfY2hlY2tfY29kZSA9ICAgY2FtbF9sZXhfYXJyYXkgKHRibFtsZXhfY2hlY2tfY29kZV0pO1xuICAgIHRibC5sZXhfdHJhbnNfY29kZSA9ICAgY2FtbF9sZXhfYXJyYXkgKHRibFtsZXhfdHJhbnNfY29kZV0pO1xuICAgIHRibC5sZXhfZGVmYXVsdF9jb2RlID0gY2FtbF9sZXhfYXJyYXkgKHRibFtsZXhfZGVmYXVsdF9jb2RlXSk7XG4gIH1cbiAgaWYgKHRibC5sZXhfY29kZSA9PSBudWxsKSB0YmwubGV4X2NvZGUgPSBjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nKHRibFtsZXhfY29kZV0pO1xuXG4gIHZhciBjLCBzdGF0ZSA9IHN0YXJ0X3N0YXRlO1xuXG4gIHZhciBidWZmZXIgPSBjYW1sX3VpbnQ4X2FycmF5X29mX2J5dGVzKGxleGJ1ZltsZXhfYnVmZmVyXSk7XG5cbiAgaWYgKHN0YXRlID49IDApIHtcbiAgICAvKiBGaXJzdCBlbnRyeSAqL1xuICAgIGxleGJ1ZltsZXhfbGFzdF9wb3NdID0gbGV4YnVmW2xleF9zdGFydF9wb3NdID0gbGV4YnVmW2xleF9jdXJyX3Bvc107XG4gICAgbGV4YnVmW2xleF9sYXN0X2FjdGlvbl0gPSAtMTtcbiAgfSBlbHNlIHtcbiAgICAvKiBSZWVudHJ5IGFmdGVyIHJlZmlsbCAqL1xuICAgIHN0YXRlID0gLXN0YXRlIC0gMTtcbiAgfVxuICBmb3IoOzspIHtcbiAgICAvKiBMb29rdXAgYmFzZSBhZGRyZXNzIG9yIGFjdGlvbiBudW1iZXIgZm9yIGN1cnJlbnQgc3RhdGUgKi9cbiAgICB2YXIgYmFzZSA9IHRibC5sZXhfYmFzZVtzdGF0ZV07XG4gICAgaWYgKGJhc2UgPCAwKSB7XG4gICAgICB2YXIgcGNfb2ZmID0gdGJsLmxleF9iYXNlX2NvZGVbc3RhdGVdO1xuICAgICAgY2FtbF9sZXhfcnVuX3RhZyh0YmwubGV4X2NvZGUsIHBjX29mZiwgbGV4YnVmW2xleF9tZW1dKTtcbiAgICAgIHJldHVybiAtYmFzZS0xO1xuICAgIH1cbiAgICAvKiBTZWUgaWYgaXQncyBhIGJhY2t0cmFjayBwb2ludCAqL1xuICAgIHZhciBiYWNrdHJrID0gdGJsLmxleF9iYWNrdHJrW3N0YXRlXTtcbiAgICBpZiAoYmFja3RyayA+PSAwKSB7XG4gICAgICB2YXIgcGNfb2ZmID0gdGJsLmxleF9iYWNrdHJrX2NvZGVbc3RhdGVdO1xuICAgICAgY2FtbF9sZXhfcnVuX3RhZyh0YmwubGV4X2NvZGUsIHBjX29mZiwgbGV4YnVmW2xleF9tZW1dKTtcbiAgICAgIGxleGJ1ZltsZXhfbGFzdF9wb3NdID0gbGV4YnVmW2xleF9jdXJyX3Bvc107XG4gICAgICBsZXhidWZbbGV4X2xhc3RfYWN0aW9uXSA9IGJhY2t0cms7XG4gICAgfVxuICAgIC8qIFNlZSBpZiB3ZSBuZWVkIGEgcmVmaWxsICovXG4gICAgaWYgKGxleGJ1ZltsZXhfY3Vycl9wb3NdID49IGxleGJ1ZltsZXhfYnVmZmVyX2xlbl0pe1xuICAgICAgaWYgKGxleGJ1ZltsZXhfZW9mX3JlYWNoZWRdID09IDApXG4gICAgICAgIHJldHVybiAtc3RhdGUgLSAxO1xuICAgICAgZWxzZVxuICAgICAgICBjID0gMjU2O1xuICAgIH1lbHNle1xuICAgICAgLyogUmVhZCBuZXh0IGlucHV0IGNoYXIgKi9cbiAgICAgIGMgPSBidWZmZXJbbGV4YnVmW2xleF9jdXJyX3Bvc11dO1xuICAgICAgbGV4YnVmW2xleF9jdXJyX3Bvc10gKys7XG4gICAgfVxuICAgIC8qIERldGVybWluZSBuZXh0IHN0YXRlICovXG4gICAgdmFyIHBzdGF0ZSA9IHN0YXRlIDtcbiAgICBpZiAodGJsLmxleF9jaGVja1tiYXNlICsgY10gPT0gc3RhdGUpXG4gICAgICBzdGF0ZSA9IHRibC5sZXhfdHJhbnNbYmFzZSArIGNdO1xuICAgIGVsc2VcbiAgICAgIHN0YXRlID0gdGJsLmxleF9kZWZhdWx0W3N0YXRlXTtcbiAgICAvKiBJZiBubyB0cmFuc2l0aW9uIG9uIHRoaXMgY2hhciwgcmV0dXJuIHRvIGxhc3QgYmFja3RyYWNrIHBvaW50ICovXG4gICAgaWYgKHN0YXRlIDwgMCkge1xuICAgICAgbGV4YnVmW2xleF9jdXJyX3Bvc10gPSBsZXhidWZbbGV4X2xhc3RfcG9zXTtcbiAgICAgIGlmIChsZXhidWZbbGV4X2xhc3RfYWN0aW9uXSA9PSAtMSlcbiAgICAgICAgY2FtbF9mYWlsd2l0aChcImxleGluZzogZW1wdHkgdG9rZW5cIik7XG4gICAgICBlbHNlXG4gICAgICAgIHJldHVybiBsZXhidWZbbGV4X2xhc3RfYWN0aW9uXTtcbiAgICB9ZWxzZXtcbiAgICAgIC8qIElmIHNvbWUgdHJhbnNpdGlvbiwgZ2V0IGFuZCBwZXJmb3JtIG1lbW9yeSBtb3ZlcyAqL1xuICAgICAgdmFyIGJhc2VfY29kZSA9IHRibC5sZXhfYmFzZV9jb2RlW3BzdGF0ZV0sIHBjX29mZjtcbiAgICAgIGlmICh0YmwubGV4X2NoZWNrX2NvZGVbYmFzZV9jb2RlICsgY10gPT0gcHN0YXRlKVxuICAgICAgICBwY19vZmYgPSB0YmwubGV4X3RyYW5zX2NvZGVbYmFzZV9jb2RlICsgY107XG4gICAgICBlbHNlXG4gICAgICAgIHBjX29mZiA9IHRibC5sZXhfZGVmYXVsdF9jb2RlW3BzdGF0ZV07XG4gICAgICBpZiAocGNfb2ZmID4gMClcbiAgICAgICAgY2FtbF9sZXhfcnVuX21lbVxuICAgICAgKHRibC5sZXhfY29kZSwgcGNfb2ZmLCBsZXhidWZbbGV4X21lbV0sIGxleGJ1ZltsZXhfY3Vycl9wb3NdKTtcbiAgICAgIC8qIEVyYXNlIHRoZSBFT0YgY29uZGl0aW9uIG9ubHkgaWYgdGhlIEVPRiBwc2V1ZG8tY2hhcmFjdGVyIHdhc1xuICAgICAgICAgY29uc3VtZWQgYnkgdGhlIGF1dG9tYXRvbiAoaS5lLiB0aGVyZSB3YXMgbm8gYmFja3RyYWNrIGFib3ZlKVxuICAgICAgKi9cbiAgICAgIGlmIChjID09IDI1NikgbGV4YnVmW2xleF9lb2ZfcmVhY2hlZF0gPSAwO1xuICAgIH1cbiAgfVxufVxuIiwiLy8gSnNfb2Zfb2NhbWwgcnVudGltZSBzdXBwb3J0XG4vLyBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL2pzX29mX29jYW1sL1xuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4vLyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbi8vIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4vLyBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4vLyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuLy8gTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuLy8gR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4vL1xuLy8gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4vLyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuLy8gRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cblxuLy8vLy8vLy8vLy8vLyBBcnJheVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2FycmF5X3N1YiBtdXRhYmxlXG5mdW5jdGlvbiBjYW1sX2FycmF5X3N1YiAoYSwgaSwgbGVuKSB7XG4gIHZhciBhMiA9IG5ldyBBcnJheShsZW4rMSk7XG4gIGEyWzBdPTA7XG4gIGZvcih2YXIgaTIgPSAxLCBpMT0gaSsxOyBpMiA8PSBsZW47IGkyKyssaTErKyApe1xuICAgIGEyW2kyXT1hW2kxXTtcbiAgfVxuICByZXR1cm4gYTI7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYXJyYXlfYXBwZW5kIG11dGFibGVcbmZ1bmN0aW9uIGNhbWxfYXJyYXlfYXBwZW5kKGExLCBhMikge1xuICB2YXIgbDEgPSBhMS5sZW5ndGgsIGwyID0gYTIubGVuZ3RoO1xuICB2YXIgbCA9IGwxK2wyLTFcbiAgdmFyIGEgPSBuZXcgQXJyYXkobCk7XG4gIGFbMF0gPSAwO1xuICB2YXIgaSA9IDEsaiA9IDE7XG4gIGZvcig7aTxsMTtpKyspIGFbaV09YTFbaV07XG4gIGZvcig7aTxsO2krKyxqKyspIGFbaV09YTJbal07XG4gIHJldHVybiBhO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2FycmF5X2NvbmNhdCBtdXRhYmxlXG5mdW5jdGlvbiBjYW1sX2FycmF5X2NvbmNhdChsKSB7XG4gIHZhciBhID0gWzBdO1xuICB3aGlsZSAobCAhPT0gMCkge1xuICAgIHZhciBiID0gbFsxXTtcbiAgICBmb3IgKHZhciBpID0gMTsgaSA8IGIubGVuZ3RoOyBpKyspIGEucHVzaChiW2ldKTtcbiAgICBsID0gbFsyXTtcbiAgfVxuICByZXR1cm4gYTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9hcnJheV9ibGl0XG5mdW5jdGlvbiBjYW1sX2FycmF5X2JsaXQoYTEsIGkxLCBhMiwgaTIsIGxlbikge1xuICBpZiAoaTIgPD0gaTEpIHtcbiAgICBmb3IgKHZhciBqID0gMTsgaiA8PSBsZW47IGorKykgYTJbaTIgKyBqXSA9IGExW2kxICsgal07XG4gIH0gZWxzZSB7XG4gICAgZm9yICh2YXIgaiA9IGxlbjsgaiA+PSAxOyBqLS0pIGEyW2kyICsgal0gPSBhMVtpMSArIGpdO1xuICB9O1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9mbG9hdGFycmF5X2JsaXRcbmZ1bmN0aW9uIGNhbWxfZmxvYXRhcnJheV9ibGl0KGExLCBpMSwgYTIsIGkyLCBsZW4pIHtcbiAgaWYgKGkyIDw9IGkxKSB7XG4gICAgZm9yICh2YXIgaiA9IDE7IGogPD0gbGVuOyBqKyspIGEyW2kyICsgal0gPSBhMVtpMSArIGpdO1xuICB9IGVsc2Uge1xuICAgIGZvciAodmFyIGogPSBsZW47IGogPj0gMTsgai0tKSBhMltpMiArIGpdID0gYTFbaTEgKyBqXTtcbiAgfTtcbiAgcmV0dXJuIDA7XG59XG5cbi8vLy8vLy8vLy8vLy8gUGVydmFzaXZlXG4vL1Byb3ZpZGVzOiBjYW1sX2FycmF5X3NldCAobXV0YWJsZSwgY29uc3QsIG11dGFibGUpXG4vL1JlcXVpcmVzOiBjYW1sX2FycmF5X2JvdW5kX2Vycm9yXG5mdW5jdGlvbiBjYW1sX2FycmF5X3NldCAoYXJyYXksIGluZGV4LCBuZXd2YWwpIHtcbiAgaWYgKChpbmRleCA8IDApIHx8IChpbmRleCA+PSBhcnJheS5sZW5ndGggLSAxKSkgY2FtbF9hcnJheV9ib3VuZF9lcnJvcigpO1xuICBhcnJheVtpbmRleCsxXT1uZXd2YWw7IHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2FycmF5X2dldCBtdXRhYmxlIChtdXRhYmxlLCBjb25zdClcbi8vUmVxdWlyZXM6IGNhbWxfYXJyYXlfYm91bmRfZXJyb3JcbmZ1bmN0aW9uIGNhbWxfYXJyYXlfZ2V0IChhcnJheSwgaW5kZXgpIHtcbiAgaWYgKChpbmRleCA8IDApIHx8IChpbmRleCA+PSBhcnJheS5sZW5ndGggLSAxKSkgY2FtbF9hcnJheV9ib3VuZF9lcnJvcigpO1xuICByZXR1cm4gYXJyYXlbaW5kZXgrMV07XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYXJyYXlfZmlsbFxuZnVuY3Rpb24gY2FtbF9hcnJheV9maWxsKGFycmF5LCBvZnMsIGxlbiwgdil7XG4gIGZvcih2YXIgaSA9IDA7IGkgPCBsZW47IGkrKyl7XG4gICAgYXJyYXlbb2ZzK2krMV0gPSB2O1xuICB9XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2NoZWNrX2JvdW5kIChtdXRhYmxlLCBjb25zdClcbi8vUmVxdWlyZXM6IGNhbWxfYXJyYXlfYm91bmRfZXJyb3JcbmZ1bmN0aW9uIGNhbWxfY2hlY2tfYm91bmQgKGFycmF5LCBpbmRleCkge1xuICBpZiAoaW5kZXggPj4+IDAgPj0gYXJyYXkubGVuZ3RoIC0gMSkgY2FtbF9hcnJheV9ib3VuZF9lcnJvcigpO1xuICByZXR1cm4gYXJyYXk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWFrZV92ZWN0IGNvbnN0IChjb25zdCwgbXV0YWJsZSlcbi8vUmVxdWlyZXM6IGNhbWxfYXJyYXlfYm91bmRfZXJyb3JcbmZ1bmN0aW9uIGNhbWxfbWFrZV92ZWN0IChsZW4sIGluaXQpIHtcbiAgaWYgKGxlbiA8IDApIGNhbWxfYXJyYXlfYm91bmRfZXJyb3IoKTtcbiAgdmFyIGxlbiA9IGxlbiArIDEgfCAwO1xuICB2YXIgYiA9IG5ldyBBcnJheShsZW4pO1xuICBiWzBdPTA7XG4gIGZvciAodmFyIGkgPSAxOyBpIDwgbGVuOyBpKyspIGJbaV0gPSBpbml0O1xuICByZXR1cm4gYjtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tYWtlX2Zsb2F0X3ZlY3QgY29uc3QgKGNvbnN0KVxuLy9SZXF1aXJlczogY2FtbF9hcnJheV9ib3VuZF9lcnJvclxuZnVuY3Rpb24gY2FtbF9tYWtlX2Zsb2F0X3ZlY3QobGVuKXtcbiAgaWYgKGxlbiA8IDApIGNhbWxfYXJyYXlfYm91bmRfZXJyb3IoKTtcbiAgdmFyIGxlbiA9IGxlbiArIDEgfCAwO1xuICB2YXIgYiA9IG5ldyBBcnJheShsZW4pO1xuICBiWzBdPTI1NDtcbiAgZm9yICh2YXIgaSA9IDE7IGkgPCBsZW47IGkrKykgYltpXSA9IDA7XG4gIHJldHVybiBiXG59XG4vL1Byb3ZpZGVzOiBjYW1sX2Zsb2F0YXJyYXlfY3JlYXRlIGNvbnN0IChjb25zdClcbi8vUmVxdWlyZXM6IGNhbWxfYXJyYXlfYm91bmRfZXJyb3JcbmZ1bmN0aW9uIGNhbWxfZmxvYXRhcnJheV9jcmVhdGUobGVuKXtcbiAgaWYgKGxlbiA8IDApIGNhbWxfYXJyYXlfYm91bmRfZXJyb3IoKTtcbiAgdmFyIGxlbiA9IGxlbiArIDEgfCAwO1xuICB2YXIgYiA9IG5ldyBBcnJheShsZW4pO1xuICBiWzBdPTI1NDtcbiAgZm9yICh2YXIgaSA9IDE7IGkgPCBsZW47IGkrKykgYltpXSA9IDA7XG4gIHJldHVybiBiXG59XG4iLCJcbi8vUHJvdmlkZXM6IE1sTXV0ZXhcbmZ1bmN0aW9uIE1sTXV0ZXgoKSB7XG4gIHRoaXMubG9ja2VkID0gZmFsc2Vcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tbF9tdXRleF9uZXdcbi8vUmVxdWlyZXM6IE1sTXV0ZXhcbmZ1bmN0aW9uIGNhbWxfbWxfbXV0ZXhfbmV3KHVuaXQpIHtcbiAgcmV0dXJuIG5ldyBNbE11dGV4KCk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfbXV0ZXhfbG9ja1xuLy9SZXF1aXJlczogY2FtbF9mYWlsd2l0aFxuZnVuY3Rpb24gY2FtbF9tbF9tdXRleF9sb2NrKHQpIHtcbiAgaWYodC5sb2NrZWQpXG4gICAgY2FtbF9mYWlsd2l0aChcIk11dGV4LmxvY2s6IG11dGV4IGFscmVhZHkgbG9ja2VkLiBDYW5ub3Qgd2FpdC5cIik7XG4gIGVsc2UgdC5sb2NrZWQgPSB0cnVlO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tbF9tdXRleF90cnlfbG9ja1xuZnVuY3Rpb24gY2FtbF9tbF9tdXRleF90cnlfbG9jayh0KSB7XG4gIGlmKCF0LmxvY2tlZCkge1xuICAgIHQubG9ja2VkID0gdHJ1ZTtcbiAgICByZXR1cm4gMTtcbiAgfVxuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tbF9tdXRleF91bmxvY2tcbmZ1bmN0aW9uIGNhbWxfbWxfbXV0ZXhfdW5sb2NrKHQpIHtcbiAgdC5sb2NrZWQgPSBmYWxzZTtcbiAgcmV0dXJuIDA7XG59XG4iLCIvLyBKc19vZl9vY2FtbCBydW50aW1lIHN1cHBvcnRcbi8vIGh0dHA6Ly93d3cub2NzaWdlbi5vcmcvanNfb2Zfb2NhbWwvXG4vLyBDb3B5cmlnaHQgKEMpIDIwMTAgSsOpcsO0bWUgVm91aWxsb25cbi8vIExhYm9yYXRvaXJlIFBQUyAtIENOUlMgVW5pdmVyc2l0w6kgUGFyaXMgRGlkZXJvdFxuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4vLyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbi8vIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4vLyBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4vLyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuLy8gTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuLy8gR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4vL1xuLy8gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4vLyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuLy8gRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cblxuLy8gV2VhayBBUElcblxuLy9Qcm92aWRlczogY2FtbF9lcGhlX2tleV9vZmZzZXRcbnZhciBjYW1sX2VwaGVfa2V5X29mZnNldCA9IDNcblxuLy9Qcm92aWRlczogY2FtbF9lcGhlX2RhdGFfb2Zmc2V0XG52YXIgY2FtbF9lcGhlX2RhdGFfb2Zmc2V0ID0gMlxuXG4vL1Byb3ZpZGVzOiBjYW1sX2VwaGVfc2V0X2tleVxuLy9SZXF1aXJlczogY2FtbF9pbnZhbGlkX2FyZ3VtZW50LCBjYW1sX2VwaGVfa2V5X29mZnNldFxuZnVuY3Rpb24gY2FtbF9lcGhlX3NldF9rZXkoeCwgaSwgdikge1xuICBpZihpIDwgMCB8fCBjYW1sX2VwaGVfa2V5X29mZnNldCArIGkgPj0geC5sZW5ndGgpXG4gICAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50IChcIldlYWsuc2V0XCIpO1xuICBpZiAodiBpbnN0YW5jZW9mIE9iamVjdCAmJiBnbG9iYWxUaGlzLldlYWtSZWYpIHtcbiAgICBpZih4WzFdLnJlZ2lzdGVyKSB4WzFdLnJlZ2lzdGVyKHYsIHVuZGVmaW5lZCwgdik7XG4gICAgeFtjYW1sX2VwaGVfa2V5X29mZnNldCArIGldID0gbmV3IGdsb2JhbFRoaXMuV2Vha1JlZih2KTtcbiAgfVxuICBlbHNlIHhbY2FtbF9lcGhlX2tleV9vZmZzZXQgKyBpXSA9IHY7XG4gIHJldHVybiAwXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZXBoZV91bnNldF9rZXlcbi8vUmVxdWlyZXM6IGNhbWxfaW52YWxpZF9hcmd1bWVudCwgY2FtbF9lcGhlX2tleV9vZmZzZXRcbmZ1bmN0aW9uIGNhbWxfZXBoZV91bnNldF9rZXkoeCwgaSkge1xuICBpZihpIDwgMCB8fCBjYW1sX2VwaGVfa2V5X29mZnNldCArIGkgPj0geC5sZW5ndGgpXG4gICAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50IChcIldlYWsuc2V0XCIpO1xuICBpZihnbG9iYWxUaGlzLldlYWtSZWYgJiYgeFtjYW1sX2VwaGVfa2V5X29mZnNldCArIGldIGluc3RhbmNlb2YgZ2xvYmFsVGhpcy5XZWFrUmVmICYmIHhbMV0udW5yZWdpc3Rlcikge1xuICAgIHZhciBvbGQgPSB4W2NhbWxfZXBoZV9rZXlfb2Zmc2V0ICsgaV0uZGVyZWYoKTtcbiAgICBpZihvbGQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgdmFyIGNvdW50ID0gMFxuICAgICAgZm9yKHZhciBqID0gY2FtbF9lcGhlX2tleV9vZmZzZXQ7IGogPCB4Lmxlbmd0aDsgaisrKXtcbiAgICAgICAgdmFyIGtleSA9IHhbal07XG4gICAgICAgIGlmKGtleSBpbnN0YW5jZW9mIGdsb2JhbFRoaXMuV2Vha1JlZil7XG4gICAgICAgICAga2V5ID0ga2V5LmRlcmVmKClcbiAgICAgICAgICBpZihrZXkgPT09IG9sZCkgY291bnQrKztcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaWYoY291bnQgPT0gMSkgeFsxXS51bnJlZ2lzdGVyKG9sZCk7XG4gICAgfVxuICB9XG4gIHhbY2FtbF9lcGhlX2tleV9vZmZzZXQgKyBpXSA9IHVuZGVmaW5lZDtcbiAgcmV0dXJuIDBcbn1cblxuXG4vL1Byb3ZpZGVzOiBjYW1sX2VwaGVfY3JlYXRlXG4vL1JlcXVpcmVzOiBjYW1sX3dlYWtfY3JlYXRlLCBjYW1sX2VwaGVfZGF0YV9vZmZzZXRcbmZ1bmN0aW9uIGNhbWxfZXBoZV9jcmVhdGUgKG4pIHtcbiAgdmFyIHggPSBjYW1sX3dlYWtfY3JlYXRlKG4pO1xuICByZXR1cm4geDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF93ZWFrX2NyZWF0ZVxuLy9SZXF1aXJlczogY2FtbF9lcGhlX2tleV9vZmZzZXQsIGNhbWxfaW52YWxpZF9hcmd1bWVudCxjYW1sX2VwaGVfZGF0YV9vZmZzZXRcbmZ1bmN0aW9uIGNhbWxfd2Vha19jcmVhdGUgKG4pIHtcbiAgaWYgKG4gPCAwKSBjYW1sX2ludmFsaWRfYXJndW1lbnQgKFwiV2Vhay5jcmVhdGVcIik7XG4gIHZhciB4ID0gWzI1MSxcImNhbWxfZXBoZV9saXN0X2hlYWRcIl07XG4gIHgubGVuZ3RoID0gY2FtbF9lcGhlX2tleV9vZmZzZXQgKyBuO1xuICByZXR1cm4geDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF93ZWFrX3NldFxuLy9SZXF1aXJlczogY2FtbF9pbnZhbGlkX2FyZ3VtZW50XG4vL1JlcXVpcmVzOiBjYW1sX2VwaGVfc2V0X2tleSwgY2FtbF9lcGhlX3Vuc2V0X2tleVxuZnVuY3Rpb24gY2FtbF93ZWFrX3NldCh4LCBpLCB2KSB7XG4gIGlmKHYgPT0gMCkgY2FtbF9lcGhlX3Vuc2V0X2tleSh4LGkpXG4gIGVsc2UgY2FtbF9lcGhlX3NldF9rZXkoeCxpLHZbMV0pXG4gIHJldHVybiAwO1xufVxuLy9Qcm92aWRlczogY2FtbF9lcGhlX2dldF9rZXlcbi8vUmVxdWlyZXM6IGNhbWxfZXBoZV9rZXlfb2Zmc2V0LCBjYW1sX2ludmFsaWRfYXJndW1lbnRcbi8vQWxpYXM6IGNhbWxfd2Vha19nZXRcbmZ1bmN0aW9uIGNhbWxfZXBoZV9nZXRfa2V5KHgsIGkpIHtcbiAgaWYoaSA8IDAgfHwgY2FtbF9lcGhlX2tleV9vZmZzZXQgKyBpID49IHgubGVuZ3RoKVxuICAgIGNhbWxfaW52YWxpZF9hcmd1bWVudCAoXCJXZWFrLmdldF9rZXlcIik7XG4gIHZhciB3ZWFrID0geFtjYW1sX2VwaGVfa2V5X29mZnNldCArIGkgXTtcbiAgaWYoZ2xvYmFsVGhpcy5XZWFrUmVmICYmIHdlYWsgaW5zdGFuY2VvZiBnbG9iYWxUaGlzLldlYWtSZWYpIHdlYWsgPSB3ZWFrLmRlcmVmKCk7XG4gIHJldHVybiAod2Vhaz09PXVuZGVmaW5lZCk/MDpbMCwgd2Vha107XG59XG4vL1Byb3ZpZGVzOiBjYW1sX2VwaGVfZ2V0X2tleV9jb3B5XG4vL1JlcXVpcmVzOiBjYW1sX2VwaGVfZ2V0X2tleSxjYW1sX2VwaGVfa2V5X29mZnNldFxuLy9SZXF1aXJlczogY2FtbF9vYmpfZHVwLCBjYW1sX2ludmFsaWRfYXJndW1lbnRcbi8vQWxpYXM6IGNhbWxfd2Vha19nZXRfY29weVxuZnVuY3Rpb24gY2FtbF9lcGhlX2dldF9rZXlfY29weSh4LCBpKSB7XG4gIGlmKGkgPCAwIHx8IGNhbWxfZXBoZV9rZXlfb2Zmc2V0ICsgaSA+PSB4Lmxlbmd0aClcbiAgICBjYW1sX2ludmFsaWRfYXJndW1lbnQgKFwiV2Vhay5nZXRfY29weVwiKTtcbiAgdmFyIHkgPSBjYW1sX2VwaGVfZ2V0X2tleSh4LCBpKTtcbiAgaWYgKHkgPT09IDApIHJldHVybiB5O1xuICB2YXIgeiA9IHlbMV07XG4gIGlmICh6IGluc3RhbmNlb2YgQXJyYXkpIHJldHVybiBbMCwgY2FtbF9vYmpfZHVwKHopXTtcbiAgcmV0dXJuIHk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZXBoZV9jaGVja19rZXkgbXV0YWJsZVxuLy9SZXF1aXJlczogY2FtbF9lcGhlX2tleV9vZmZzZXRcbi8vQWxpYXM6IGNhbWxfd2Vha19jaGVja1xuZnVuY3Rpb24gY2FtbF9lcGhlX2NoZWNrX2tleSh4LCBpKSB7XG4gIHZhciB3ZWFrID0geFtjYW1sX2VwaGVfa2V5X29mZnNldCArIGldO1xuICBpZihnbG9iYWxUaGlzLldlYWtSZWYgJiYgd2VhayBpbnN0YW5jZW9mIGdsb2JhbFRoaXMuV2Vha1JlZikgd2VhayA9IHdlYWsuZGVyZWYoKTtcbiAgaWYod2Vhaz09PXVuZGVmaW5lZClcbiAgICByZXR1cm4gMDtcbiAgZWxzZVxuICAgIHJldHVybiAxO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2VwaGVfYmxpdF9rZXlcbi8vUmVxdWlyZXM6IGNhbWxfYXJyYXlfYmxpdFxuLy9SZXF1aXJlczogY2FtbF9lcGhlX2tleV9vZmZzZXRcbi8vQWxpYXM6IGNhbWxfd2Vha19ibGl0XG5mdW5jdGlvbiBjYW1sX2VwaGVfYmxpdF9rZXkoYTEsIGkxLCBhMiwgaTIsIGxlbikge1xuICAvLyBtaW51cyBvbmUgYmVjYXVzZSBjYW1sX2FycmF5X2JsaXQgd29ya3Mgb24gb2NhbWwgYXJyYXlcbiAgY2FtbF9hcnJheV9ibGl0KGExLCBjYW1sX2VwaGVfa2V5X29mZnNldCArIGkxIC0gMSxcbiAgICAgICAgICAgICAgICAgIGEyLCBjYW1sX2VwaGVfa2V5X29mZnNldCArIGkyIC0gMSxcbiAgICAgICAgICAgICAgICAgIGxlbik7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2VwaGVfYmxpdF9kYXRhXG4vL1JlcXVpcmVzOiBjYW1sX2VwaGVfZGF0YV9vZmZzZXQsIGNhbWxfZXBoZV9zZXRfZGF0YSwgY2FtbF9lcGhlX3Vuc2V0X2RhdGFcbmZ1bmN0aW9uIGNhbWxfZXBoZV9ibGl0X2RhdGEoc3JjLCBkc3Qpe1xuICB2YXIgbiA9IHNyY1tjYW1sX2VwaGVfZGF0YV9vZmZzZXRdO1xuICBpZihuID09PSB1bmRlZmluZWQpIGNhbWxfZXBoZV91bnNldF9kYXRhKGRzdCk7XG4gIGVsc2UgY2FtbF9lcGhlX3NldF9kYXRhKGRzdCwgbik7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2VwaGVfZ2V0X2RhdGFcbi8vUmVxdWlyZXM6IGNhbWxfZXBoZV9kYXRhX29mZnNldFxuZnVuY3Rpb24gY2FtbF9lcGhlX2dldF9kYXRhKHgpe1xuICBpZih4W2NhbWxfZXBoZV9kYXRhX29mZnNldF0gPT09IHVuZGVmaW5lZClcbiAgICByZXR1cm4gMDtcbiAgZWxzZVxuICAgIHJldHVybiBbMCwgeFtjYW1sX2VwaGVfZGF0YV9vZmZzZXRdXTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9lcGhlX2dldF9kYXRhX2NvcHlcbi8vUmVxdWlyZXM6IGNhbWxfZXBoZV9kYXRhX29mZnNldFxuLy9SZXF1aXJlczogY2FtbF9vYmpfZHVwXG5mdW5jdGlvbiBjYW1sX2VwaGVfZ2V0X2RhdGFfY29weSh4KXtcbiAgaWYoeFtjYW1sX2VwaGVfZGF0YV9vZmZzZXRdID09PSB1bmRlZmluZWQpXG4gICAgcmV0dXJuIDA7XG4gIGVsc2VcbiAgICByZXR1cm4gWzAsIGNhbWxfb2JqX2R1cCh4W2NhbWxfZXBoZV9kYXRhX29mZnNldF0pXTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9lcGhlX3NldF9kYXRhXG4vL1JlcXVpcmVzOiBjYW1sX2VwaGVfZGF0YV9vZmZzZXQsIGNhbWxfZXBoZV9rZXlfb2Zmc2V0LCBjYW1sX2VwaGVfdW5zZXRfZGF0YVxuZnVuY3Rpb24gY2FtbF9lcGhlX3NldF9kYXRhKHgsIGRhdGEpe1xuICBpZihnbG9iYWxUaGlzLkZpbmFsaXphdGlvblJlZ2lzdHJ5ICYmIGdsb2JhbFRoaXMuV2Vha1JlZikge1xuICAgIGlmKCEgKHhbMV0gaW5zdGFuY2VvZiBnbG9iYWxUaGlzLkZpbmFsaXphdGlvblJlZ2lzdHJ5KSkge1xuICAgICAgeFsxXSA9IG5ldyBnbG9iYWxUaGlzLkZpbmFsaXphdGlvblJlZ2lzdHJ5KGZ1bmN0aW9uICgpIHsgY2FtbF9lcGhlX3Vuc2V0X2RhdGEoeCkgfSk7XG4gICAgICAvL3JlZ2lzdGVyIGFsbCBrZXlzXG4gICAgICBmb3IodmFyIGogPSBjYW1sX2VwaGVfa2V5X29mZnNldDsgaiA8IHgubGVuZ3RoOyBqKyspe1xuICAgICAgICB2YXIga2V5ID0geFtqXTtcbiAgICAgICAgaWYoa2V5IGluc3RhbmNlb2YgZ2xvYmFsVGhpcy5XZWFrUmVmKSB7XG4gICAgICAgICAga2V5ID0ga2V5LmRlcmVmKCk7XG4gICAgICAgICAgaWYoa2V5KSB4WzFdLnJlZ2lzdGVyKGtleSwgdW5kZWZpbmVkLCBrZXkpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG4gIHhbY2FtbF9lcGhlX2RhdGFfb2Zmc2V0XSA9IGRhdGE7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2VwaGVfdW5zZXRfZGF0YVxuLy9SZXF1aXJlczogY2FtbF9lcGhlX2RhdGFfb2Zmc2V0LCBjYW1sX2VwaGVfa2V5X29mZnNldFxuZnVuY3Rpb24gY2FtbF9lcGhlX3Vuc2V0X2RhdGEoeCl7XG4gIGlmKGdsb2JhbFRoaXMuRmluYWxpemF0aW9uUmVnaXN0cnkgJiYgZ2xvYmFsVGhpcy5XZWFrUmVmKSB7XG4gICAgaWYoeFsxXSBpbnN0YW5jZW9mIGdsb2JhbFRoaXMuRmluYWxpemF0aW9uUmVnaXN0cnkpe1xuICAgICAgLy91bnJlZ2lzdGVyIGFsbCBrZXlzXG4gICAgICBmb3IodmFyIGogPSBjYW1sX2VwaGVfa2V5X29mZnNldDsgaiA8IHgubGVuZ3RoOyBqKyspe1xuICAgICAgICB2YXIga2V5ID0geFtqXTtcbiAgICAgICAgaWYoa2V5IGluc3RhbmNlb2YgZ2xvYmFsVGhpcy5XZWFrUmVmKSB7XG4gICAgICAgICAga2V5ID0ga2V5LmRlcmVmKCk7XG4gICAgICAgICAgaWYoa2V5KSB4WzFdLnVucmVnaXN0ZXIoa2V5KTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuICB4W2NhbWxfZXBoZV9kYXRhX29mZnNldF0gPSB1bmRlZmluZWQ7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2VwaGVfY2hlY2tfZGF0YVxuLy9SZXF1aXJlczogY2FtbF9lcGhlX2RhdGFfb2Zmc2V0XG5mdW5jdGlvbiBjYW1sX2VwaGVfY2hlY2tfZGF0YSh4KXtcbiAgaWYoeFtjYW1sX2VwaGVfZGF0YV9vZmZzZXRdID09PSB1bmRlZmluZWQpXG4gICAgcmV0dXJuIDA7XG4gIGVsc2VcbiAgICByZXR1cm4gMTtcbn1cbiIsIlxuLy9Qcm92aWRlczogY2FtbF9seG1fbmV4dFxuLy9SZXF1aXJlczogY2FtbF9pbnQ2NF9zaGlmdF9sZWZ0XG4vL1JlcXVpcmVzOiBjYW1sX2ludDY0X3NoaWZ0X3JpZ2h0X3Vuc2lnbmVkXG4vL1JlcXVpcmVzOiBjYW1sX2ludDY0X29yXG4vL1JlcXVpcmVzOiBjYW1sX2ludDY0X3hvclxuLy9SZXF1aXJlczogY2FtbF9pbnQ2NF9hZGRcbi8vUmVxdWlyZXM6IGNhbWxfaW50NjRfbXVsXG4vL1JlcXVpcmVzOiBjYW1sX2JhX2dldF8xXG4vL1JlcXVpcmVzOiBjYW1sX2JhX3NldF8xXG4vL1JlcXVpcmVzOiBjYW1sX2ludDY0X29mX3N0cmluZ1xuLy9SZXF1aXJlczogY2FtbF9uZXdfc3RyaW5nXG5mdW5jdGlvbiBjYW1sX2x4bV9uZXh0KHYpIHtcbiAgZnVuY3Rpb24gc2hpZnRfbCh4LCBrKXtcbiAgICByZXR1cm4gY2FtbF9pbnQ2NF9zaGlmdF9sZWZ0KHgsayk7XG4gIH1cbiAgZnVuY3Rpb24gc2hpZnRfcih4LCBrKXtcbiAgICByZXR1cm4gY2FtbF9pbnQ2NF9zaGlmdF9yaWdodF91bnNpZ25lZCh4LGspO1xuICB9XG4gIGZ1bmN0aW9uIG9yKGEsIGIpe1xuICAgIHJldHVybiBjYW1sX2ludDY0X29yKGEsYik7XG4gIH1cbiAgZnVuY3Rpb24geG9yKGEsIGIpe1xuICAgIHJldHVybiBjYW1sX2ludDY0X3hvcihhLGIpO1xuICB9XG4gIGZ1bmN0aW9uIGFkZChhLCBiKXtcbiAgICByZXR1cm4gY2FtbF9pbnQ2NF9hZGQoYSxiKTtcbiAgfVxuICBmdW5jdGlvbiBtdWwoYSwgYil7XG4gICAgcmV0dXJuIGNhbWxfaW50NjRfbXVsKGEsYik7XG4gIH1cbiAgZnVuY3Rpb24gcm90bCh4LCBrKSB7XG4gICAgcmV0dXJuIG9yKHNoaWZ0X2woeCxrKSxzaGlmdF9yICh4LCA2NCAtIGspKTtcbiAgfVxuICBmdW5jdGlvbiBnZXQoYSwgaSkge1xuICAgIHJldHVybiBjYW1sX2JhX2dldF8xKGEsIGkpO1xuICB9XG4gIGZ1bmN0aW9uIHNldChhLCBpLCB4KSB7XG4gICAgcmV0dXJuIGNhbWxfYmFfc2V0XzEoYSwgaSwgeCk7XG4gIH1cbiAgdmFyIE0gPSBjYW1sX2ludDY0X29mX3N0cmluZyhjYW1sX25ld19zdHJpbmcoXCIweGQxMzQyNTQzZGU4MmVmOTVcIikpO1xuICB2YXIgZGFiYSA9IGNhbWxfaW50NjRfb2Zfc3RyaW5nKGNhbWxfbmV3X3N0cmluZyhcIjB4ZGFiYTBiNmViMDkzMjJlM1wiKSk7XG4gIHZhciB6LCBxMCwgcTE7XG4gIHZhciBzdCA9IHY7XG4gIHZhciBhID0gZ2V0KHN0LDApO1xuICB2YXIgcyA9IGdldChzdCwxKTtcbiAgdmFyIHgwID0gZ2V0KHN0LDIpO1xuICB2YXIgeDEgPSBnZXQoc3QsMyk7XG4gIC8qIENvbWJpbmluZyBvcGVyYXRpb24gKi9cbiAgeiA9IGFkZChzLCB4MCk7XG4gIC8qIE1peGluZyBmdW5jdGlvbiAqL1xuICB6ID0gbXVsKHhvcih6LHNoaWZ0X3IoeiwzMikpLCBkYWJhKTtcbiAgeiA9IG11bCh4b3IoeixzaGlmdF9yKHosMzIpKSwgZGFiYSk7XG4gIHogPSB4b3IoeixzaGlmdF9yKHosMzIpKTtcbiAgLyogTENHIHVwZGF0ZSAqL1xuICBzZXQoc3QsIDEsIGFkZCAobXVsKHMsTSksIGEpKTtcbiAgLyogWEJHIHVwZGF0ZSAqL1xuICB2YXIgcTAgPSB4MFxuICB2YXIgcTEgPSB4MVxuICBxMSA9IHhvcihxMSxxMCk7XG4gIHEwID0gcm90bChxMCwgMjQpO1xuICBxMCA9IHhvcih4b3IocTAsIHExKSwgKHNoaWZ0X2wocTEsMTYpKSk7XG4gIHExID0gcm90bChxMSwgMzcpO1xuICBzZXQoc3QsIDIsIHEwKTtcbiAgc2V0KHN0LCAzLCBxMSk7XG4gIC8qIFJldHVybiByZXN1bHQgKi9cbiAgcmV0dXJuIHo7XG59XG4iLCJcbi8vUHJvdmlkZXM6IHpzdGRfZGVjb21wcmVzc1xudmFyIHpzdGRfZGVjb21wcmVzcyA9IChmdW5jdGlvbiAoKSB7XG5cInVzZSBzdHJpY3RcIjtcbi8vIGFsaWFzZXMgZm9yIHNob3J0ZXIgY29tcHJlc3NlZCBjb2RlIChtb3N0IG1pbmlmZXJzIGRvbid0IGRvIHRoaXMpXG52YXIgYWIgPSBBcnJheUJ1ZmZlciwgdTggPSBVaW50OEFycmF5LCB1MTYgPSBVaW50MTZBcnJheSwgaTE2ID0gSW50MTZBcnJheSwgdTMyID0gVWludDMyQXJyYXksIGkzMiA9IEludDMyQXJyYXk7XG52YXIgc2xjID0gZnVuY3Rpb24gKHYsIHMsIGUpIHtcbiAgICBpZiAodTgucHJvdG90eXBlLnNsaWNlKVxuICAgICAgICByZXR1cm4gdTgucHJvdG90eXBlLnNsaWNlLmNhbGwodiwgcywgZSk7XG4gICAgaWYgKHMgPT0gbnVsbCB8fCBzIDwgMClcbiAgICAgICAgcyA9IDA7XG4gICAgaWYgKGUgPT0gbnVsbCB8fCBlID4gdi5sZW5ndGgpXG4gICAgICAgIGUgPSB2Lmxlbmd0aDtcbiAgICB2YXIgbiA9IG5ldyB1OChlIC0gcyk7XG4gICAgbi5zZXQodi5zdWJhcnJheShzLCBlKSk7XG4gICAgcmV0dXJuIG47XG59O1xudmFyIGZpbGwgPSBmdW5jdGlvbiAodiwgbiwgcywgZSkge1xuICAgIGlmICh1OC5wcm90b3R5cGUuZmlsbClcbiAgICAgICAgcmV0dXJuIHU4LnByb3RvdHlwZS5maWxsLmNhbGwodiwgbiwgcywgZSk7XG4gICAgaWYgKHMgPT0gbnVsbCB8fCBzIDwgMClcbiAgICAgICAgcyA9IDA7XG4gICAgaWYgKGUgPT0gbnVsbCB8fCBlID4gdi5sZW5ndGgpXG4gICAgICAgIGUgPSB2Lmxlbmd0aDtcbiAgICBmb3IgKDsgcyA8IGU7ICsrcylcbiAgICAgICAgdltzXSA9IG47XG4gICAgcmV0dXJuIHY7XG59O1xudmFyIGNwdyA9IGZ1bmN0aW9uICh2LCB0LCBzLCBlKSB7XG4gICAgaWYgKHU4LnByb3RvdHlwZS5jb3B5V2l0aGluKVxuICAgICAgICByZXR1cm4gdTgucHJvdG90eXBlLmNvcHlXaXRoaW4uY2FsbCh2LCB0LCBzLCBlKTtcbiAgICBpZiAocyA9PSBudWxsIHx8IHMgPCAwKVxuICAgICAgICBzID0gMDtcbiAgICBpZiAoZSA9PSBudWxsIHx8IGUgPiB2Lmxlbmd0aClcbiAgICAgICAgZSA9IHYubGVuZ3RoO1xuICAgIHdoaWxlIChzIDwgZSkge1xuICAgICAgICB2W3QrK10gPSB2W3MrK107XG4gICAgfVxufTtcbi8qKlxuICogQ29kZXMgZm9yIGVycm9ycyBnZW5lcmF0ZWQgd2l0aGluIHRoaXMgbGlicmFyeVxuICovXG4vLyBlcnJvciBjb2Rlc1xudmFyIGVjID0gW1xuICAgICdpbnZhbGlkIHpzdGQgZGF0YScsXG4gICAgJ3dpbmRvdyBzaXplIHRvbyBsYXJnZSAoPjIwNDZNQiknLFxuICAgICdpbnZhbGlkIGJsb2NrIHR5cGUnLFxuICAgICdGU0UgYWNjdXJhY3kgdG9vIGhpZ2gnLFxuICAgICdtYXRjaCBkaXN0YW5jZSB0b28gZmFyIGJhY2snLFxuICAgICd1bmV4cGVjdGVkIEVPRidcbl07XG47XG52YXIgZXJyID0gZnVuY3Rpb24gKGluZCwgbXNnLCBudCkge1xuICAgIHZhciBlID0gbmV3IEVycm9yKG1zZyB8fCBlY1tpbmRdKTtcbiAgICBlLmNvZGUgPSBpbmQ7XG4gICAgaWYgKCFudClcbiAgICAgICAgdGhyb3cgZTtcbiAgICByZXR1cm4gZTtcbn07XG52YXIgcmIgPSBmdW5jdGlvbiAoZCwgYiwgbikge1xuICAgIHZhciBpID0gMCwgbyA9IDA7XG4gICAgZm9yICg7IGkgPCBuOyArK2kpXG4gICAgICAgIG8gfD0gZFtiKytdIDw8IChpIDw8IDMpO1xuICAgIHJldHVybiBvO1xufTtcbnZhciBiNCA9IGZ1bmN0aW9uIChkLCBiKSB7IHJldHVybiAoZFtiXSB8IChkW2IgKyAxXSA8PCA4KSB8IChkW2IgKyAyXSA8PCAxNikgfCAoZFtiICsgM10gPDwgMjQpKSA+Pj4gMDsgfTtcbi8vIHJlYWQgWnN0YW5kYXJkIGZyYW1lIGhlYWRlclxudmFyIHJ6ZmggPSBmdW5jdGlvbiAoZGF0LCB3KSB7XG4gICAgdmFyIG4zID0gZGF0WzBdIHwgKGRhdFsxXSA8PCA4KSB8IChkYXRbMl0gPDwgMTYpO1xuICAgIGlmIChuMyA9PSAweDJGQjUyOCAmJiBkYXRbM10gPT0gMjUzKSB7XG4gICAgICAgIC8vIFpzdGFuZGFyZFxuICAgICAgICB2YXIgZmxnID0gZGF0WzRdO1xuICAgICAgICAvLyAgICBzaW5nbGUgc2VnbWVudCAgICAgICBjaGVja3N1bSAgICAgICAgICAgICBkaWN0IGZsYWcgICAgIGZyYW1lIGNvbnRlbnQgZmxhZ1xuICAgICAgICB2YXIgc3MgPSAoZmxnID4+IDUpICYgMSwgY2MgPSAoZmxnID4+IDIpICYgMSwgZGYgPSBmbGcgJiAzLCBmY2YgPSBmbGcgPj4gNjtcbiAgICAgICAgaWYgKGZsZyAmIDgpXG4gICAgICAgICAgICBlcnIoMCk7XG4gICAgICAgIC8vIGJ5dGVcbiAgICAgICAgdmFyIGJ0ID0gNiAtIHNzO1xuICAgICAgICAvLyBkaWN0IGJ5dGVzXG4gICAgICAgIHZhciBkYiA9IGRmID09IDMgPyA0IDogZGY7XG4gICAgICAgIC8vIGRpY3Rpb25hcnkgaWRcbiAgICAgICAgdmFyIGRpID0gcmIoZGF0LCBidCwgZGIpO1xuICAgICAgICBidCArPSBkYjtcbiAgICAgICAgLy8gZnJhbWUgc2l6ZSBieXRlc1xuICAgICAgICB2YXIgZnNiID0gZmNmID8gKDEgPDwgZmNmKSA6IHNzO1xuICAgICAgICAvLyBmcmFtZSBzb3VyY2Ugc2l6ZVxuICAgICAgICB2YXIgZnNzID0gcmIoZGF0LCBidCwgZnNiKSArICgoZmNmID09IDEpICYmIDI1Nik7XG4gICAgICAgIC8vIHdpbmRvdyBzaXplXG4gICAgICAgIHZhciB3cyA9IGZzcztcbiAgICAgICAgaWYgKCFzcykge1xuICAgICAgICAgICAgLy8gd2luZG93IGRlc2NyaXB0b3JcbiAgICAgICAgICAgIHZhciB3YiA9IDEgPDwgKDEwICsgKGRhdFs1XSA+PiAzKSk7XG4gICAgICAgICAgICB3cyA9IHdiICsgKHdiID4+IDMpICogKGRhdFs1XSAmIDcpO1xuICAgICAgICB9XG4gICAgICAgIGlmICh3cyA+IDIxNDUzODY0OTYpXG4gICAgICAgICAgICBlcnIoMSk7XG4gICAgICAgIHZhciBidWYgPSBuZXcgdTgoKHcgPT0gMSA/IChmc3MgfHwgd3MpIDogdyA/IDAgOiB3cykgKyAxMik7XG4gICAgICAgIGJ1ZlswXSA9IDEsIGJ1Zls0XSA9IDQsIGJ1Zls4XSA9IDg7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBiOiBidCArIGZzYixcbiAgICAgICAgICAgIHk6IDAsXG4gICAgICAgICAgICBsOiAwLFxuICAgICAgICAgICAgZDogZGksXG4gICAgICAgICAgICB3OiAodyAmJiB3ICE9IDEpID8gdyA6IGJ1Zi5zdWJhcnJheSgxMiksXG4gICAgICAgICAgICBlOiB3cyxcbiAgICAgICAgICAgIG86IG5ldyBpMzIoYnVmLmJ1ZmZlciwgMCwgMyksXG4gICAgICAgICAgICB1OiBmc3MsXG4gICAgICAgICAgICBjOiBjYyxcbiAgICAgICAgICAgIG06IE1hdGgubWluKDEzMTA3Miwgd3MpXG4gICAgICAgIH07XG4gICAgfVxuICAgIGVsc2UgaWYgKCgobjMgPj4gNCkgfCAoZGF0WzNdIDw8IDIwKSkgPT0gMHgxODREMkE1KSB7XG4gICAgICAgIC8vIHNraXBwYWJsZVxuICAgICAgICByZXR1cm4gYjQoZGF0LCA0KSArIDg7XG4gICAgfVxuICAgIGVycigwKTtcbn07XG4vLyBtb3N0IHNpZ25pZmljYW50IGJpdCBmb3Igbm9uemVyb1xudmFyIG1zYiA9IGZ1bmN0aW9uICh2YWwpIHtcbiAgICB2YXIgYml0cyA9IDA7XG4gICAgZm9yICg7ICgxIDw8IGJpdHMpIDw9IHZhbDsgKytiaXRzKVxuICAgICAgICA7XG4gICAgcmV0dXJuIGJpdHMgLSAxO1xufTtcbi8vIHJlYWQgZmluaXRlIHN0YXRlIGVudHJvcHlcbnZhciByZnNlID0gZnVuY3Rpb24gKGRhdCwgYnQsIG1hbCkge1xuICAgIC8vIHRhYmxlIHBvc1xuICAgIHZhciB0cG9zID0gKGJ0IDw8IDMpICsgNDtcbiAgICAvLyBhY2N1cmFjeSBsb2dcbiAgICB2YXIgYWwgPSAoZGF0W2J0XSAmIDE1KSArIDU7XG4gICAgaWYgKGFsID4gbWFsKVxuICAgICAgICBlcnIoMyk7XG4gICAgLy8gc2l6ZVxuICAgIHZhciBzeiA9IDEgPDwgYWw7XG4gICAgLy8gcHJvYmFiaWxpdGllcyBzeW1ib2xzICByZXBlYXQgICBpbmRleCAgIGhpZ2ggdGhyZXNob2xkXG4gICAgdmFyIHByb2JzID0gc3osIHN5bSA9IC0xLCByZSA9IC0xLCBpID0gLTEsIGh0ID0gc3o7XG4gICAgLy8gb3B0aW1pemF0aW9uOiBzaW5nbGUgYWxsb2NhdGlvbiBpcyBtdWNoIGZhc3RlclxuICAgIHZhciBidWYgPSBuZXcgYWIoNTEyICsgKHN6IDw8IDIpKTtcbiAgICB2YXIgZnJlcSA9IG5ldyBpMTYoYnVmLCAwLCAyNTYpO1xuICAgIC8vIHNhbWUgdmlldyBhcyBmcmVxXG4gICAgdmFyIGRzdGF0ZSA9IG5ldyB1MTYoYnVmLCAwLCAyNTYpO1xuICAgIHZhciBuc3RhdGUgPSBuZXcgdTE2KGJ1ZiwgNTEyLCBzeik7XG4gICAgdmFyIGJiMSA9IDUxMiArIChzeiA8PCAxKTtcbiAgICB2YXIgc3ltcyA9IG5ldyB1OChidWYsIGJiMSwgc3opO1xuICAgIHZhciBuYml0cyA9IG5ldyB1OChidWYsIGJiMSArIHN6KTtcbiAgICB3aGlsZSAoc3ltIDwgMjU1ICYmIHByb2JzID4gMCkge1xuICAgICAgICB2YXIgYml0cyA9IG1zYihwcm9icyArIDEpO1xuICAgICAgICB2YXIgY2J0ID0gdHBvcyA+PiAzO1xuICAgICAgICAvLyBtYXNrXG4gICAgICAgIHZhciBtc2sgPSAoMSA8PCAoYml0cyArIDEpKSAtIDE7XG4gICAgICAgIHZhciB2YWwgPSAoKGRhdFtjYnRdIHwgKGRhdFtjYnQgKyAxXSA8PCA4KSB8IChkYXRbY2J0ICsgMl0gPDwgMTYpKSA+PiAodHBvcyAmIDcpKSAmIG1zaztcbiAgICAgICAgLy8gbWFzayAoMSBmZXdlciBiaXQpXG4gICAgICAgIHZhciBtc2sxZmIgPSAoMSA8PCBiaXRzKSAtIDE7XG4gICAgICAgIC8vIG1heCBzbWFsbCB2YWx1ZVxuICAgICAgICB2YXIgbXN2ID0gbXNrIC0gcHJvYnMgLSAxO1xuICAgICAgICAvLyBzbWFsbCB2YWx1ZVxuICAgICAgICB2YXIgc3ZhbCA9IHZhbCAmIG1zazFmYjtcbiAgICAgICAgaWYgKHN2YWwgPCBtc3YpXG4gICAgICAgICAgICB0cG9zICs9IGJpdHMsIHZhbCA9IHN2YWw7XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgdHBvcyArPSBiaXRzICsgMTtcbiAgICAgICAgICAgIGlmICh2YWwgPiBtc2sxZmIpXG4gICAgICAgICAgICAgICAgdmFsIC09IG1zdjtcbiAgICAgICAgfVxuICAgICAgICBmcmVxWysrc3ltXSA9IC0tdmFsO1xuICAgICAgICBpZiAodmFsID09IC0xKSB7XG4gICAgICAgICAgICBwcm9icyArPSB2YWw7XG4gICAgICAgICAgICBzeW1zWy0taHRdID0gc3ltO1xuICAgICAgICB9XG4gICAgICAgIGVsc2VcbiAgICAgICAgICAgIHByb2JzIC09IHZhbDtcbiAgICAgICAgaWYgKCF2YWwpIHtcbiAgICAgICAgICAgIGRvIHtcbiAgICAgICAgICAgICAgICAvLyByZXBlYXQgYnl0ZVxuICAgICAgICAgICAgICAgIHZhciByYnQgPSB0cG9zID4+IDM7XG4gICAgICAgICAgICAgICAgcmUgPSAoKGRhdFtyYnRdIHwgKGRhdFtyYnQgKyAxXSA8PCA4KSkgPj4gKHRwb3MgJiA3KSkgJiAzO1xuICAgICAgICAgICAgICAgIHRwb3MgKz0gMjtcbiAgICAgICAgICAgICAgICBzeW0gKz0gcmU7XG4gICAgICAgICAgICB9IHdoaWxlIChyZSA9PSAzKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBpZiAoc3ltID4gMjU1IHx8IHByb2JzKVxuICAgICAgICBlcnIoMCk7XG4gICAgdmFyIHN5bXBvcyA9IDA7XG4gICAgLy8gc3ltIHN0ZXAgKGNvcHJpbWUgd2l0aCBzeiAtIGZvcm11bGEgZnJvbSB6c3RkIHNvdXJjZSlcbiAgICB2YXIgc3N0ZXAgPSAoc3ogPj4gMSkgKyAoc3ogPj4gMykgKyAzO1xuICAgIC8vIHN5bSBtYXNrXG4gICAgdmFyIHNtYXNrID0gc3ogLSAxO1xuICAgIGZvciAodmFyIHMgPSAwOyBzIDw9IHN5bTsgKytzKSB7XG4gICAgICAgIHZhciBzZiA9IGZyZXFbc107XG4gICAgICAgIGlmIChzZiA8IDEpIHtcbiAgICAgICAgICAgIGRzdGF0ZVtzXSA9IC1zZjtcbiAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICB9XG4gICAgICAgIC8vIFRoaXMgaXMgc3BsaXQgaW50byB0d28gbG9vcHMgaW4genN0ZCB0byBhdm9pZCBicmFuY2hpbmcsIGJ1dCBhcyBKUyBpcyBoaWdoZXItbGV2ZWwgdGhhdCBpcyB1bm5lY2Vzc2FyeVxuICAgICAgICBmb3IgKGkgPSAwOyBpIDwgc2Y7ICsraSkge1xuICAgICAgICAgICAgc3ltc1tzeW1wb3NdID0gcztcbiAgICAgICAgICAgIGRvIHtcbiAgICAgICAgICAgICAgICBzeW1wb3MgPSAoc3ltcG9zICsgc3N0ZXApICYgc21hc2s7XG4gICAgICAgICAgICB9IHdoaWxlIChzeW1wb3MgPj0gaHQpO1xuICAgICAgICB9XG4gICAgfVxuICAgIC8vIEFmdGVyIHNwcmVhZGluZyBzeW1ib2xzLCBzaG91bGQgYmUgemVybyBhZ2FpblxuICAgIGlmIChzeW1wb3MpXG4gICAgICAgIGVycigwKTtcbiAgICBmb3IgKGkgPSAwOyBpIDwgc3o7ICsraSkge1xuICAgICAgICAvLyBuZXh0IHN0YXRlXG4gICAgICAgIHZhciBucyA9IGRzdGF0ZVtzeW1zW2ldXSsrO1xuICAgICAgICAvLyBudW0gYml0c1xuICAgICAgICB2YXIgbmIgPSBuYml0c1tpXSA9IGFsIC0gbXNiKG5zKTtcbiAgICAgICAgbnN0YXRlW2ldID0gKG5zIDw8IG5iKSAtIHN6O1xuICAgIH1cbiAgICByZXR1cm4gWyh0cG9zICsgNykgPj4gMywge1xuICAgICAgICAgICAgYjogYWwsXG4gICAgICAgICAgICBzOiBzeW1zLFxuICAgICAgICAgICAgbjogbmJpdHMsXG4gICAgICAgICAgICB0OiBuc3RhdGVcbiAgICAgICAgfV07XG59O1xuLy8gcmVhZCBodWZmbWFuXG52YXIgcmh1ID0gZnVuY3Rpb24gKGRhdCwgYnQpIHtcbiAgICAvLyAgaW5kZXggIHdlaWdodCBjb3VudFxuICAgIHZhciBpID0gMCwgd2MgPSAtMTtcbiAgICAvLyAgICBidWZmZXIgICAgICAgICAgICAgaGVhZGVyIGJ5dGVcbiAgICB2YXIgYnVmID0gbmV3IHU4KDI5MiksIGhiID0gZGF0W2J0XTtcbiAgICAvLyBodWZmbWFuIHdlaWdodHNcbiAgICB2YXIgaHcgPSBidWYuc3ViYXJyYXkoMCwgMjU2KTtcbiAgICAvLyByYW5rIGNvdW50XG4gICAgdmFyIHJjID0gYnVmLnN1YmFycmF5KDI1NiwgMjY4KTtcbiAgICAvLyByYW5rIGluZGV4XG4gICAgdmFyIHJpID0gbmV3IHUxNihidWYuYnVmZmVyLCAyNjgpO1xuICAgIC8vIE5PVEU6IGF0IHRoaXMgcG9pbnQgYnQgaXMgMSBsZXNzIHRoYW4gZXhwZWN0ZWRcbiAgICBpZiAoaGIgPCAxMjgpIHtcbiAgICAgICAgLy8gZW5kIGJ5dGUsIGZzZSBkZWNvZGUgdGFibGVcbiAgICAgICAgdmFyIF9hID0gcmZzZShkYXQsIGJ0ICsgMSwgNiksIGVidCA9IF9hWzBdLCBmZHQgPSBfYVsxXTtcbiAgICAgICAgYnQgKz0gaGI7XG4gICAgICAgIHZhciBlcG9zID0gZWJ0IDw8IDM7XG4gICAgICAgIC8vIGxhc3QgYnl0ZVxuICAgICAgICB2YXIgbGIgPSBkYXRbYnRdO1xuICAgICAgICBpZiAoIWxiKVxuICAgICAgICAgICAgZXJyKDApO1xuICAgICAgICAvLyAgc3RhdGUxICAgc3RhdGUyICAgc3RhdGUxIGJpdHMgICBzdGF0ZTIgYml0c1xuICAgICAgICB2YXIgc3QxID0gMCwgc3QyID0gMCwgYnRyMSA9IGZkdC5iLCBidHIyID0gYnRyMTtcbiAgICAgICAgLy8gZnNlIHBvc1xuICAgICAgICAvLyBwcmUtaW5jcmVtZW50IHRvIGFjY291bnQgZm9yIG9yaWdpbmFsIGRlZmljaXQgb2YgMVxuICAgICAgICB2YXIgZnBvcyA9ICgrK2J0IDw8IDMpIC0gOCArIG1zYihsYik7XG4gICAgICAgIGZvciAoOzspIHtcbiAgICAgICAgICAgIGZwb3MgLT0gYnRyMTtcbiAgICAgICAgICAgIGlmIChmcG9zIDwgZXBvcylcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIHZhciBjYnQgPSBmcG9zID4+IDM7XG4gICAgICAgICAgICBzdDEgKz0gKChkYXRbY2J0XSB8IChkYXRbY2J0ICsgMV0gPDwgOCkpID4+IChmcG9zICYgNykpICYgKCgxIDw8IGJ0cjEpIC0gMSk7XG4gICAgICAgICAgICBod1srK3djXSA9IGZkdC5zW3N0MV07XG4gICAgICAgICAgICBmcG9zIC09IGJ0cjI7XG4gICAgICAgICAgICBpZiAoZnBvcyA8IGVwb3MpXG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYnQgPSBmcG9zID4+IDM7XG4gICAgICAgICAgICBzdDIgKz0gKChkYXRbY2J0XSB8IChkYXRbY2J0ICsgMV0gPDwgOCkpID4+IChmcG9zICYgNykpICYgKCgxIDw8IGJ0cjIpIC0gMSk7XG4gICAgICAgICAgICBod1srK3djXSA9IGZkdC5zW3N0Ml07XG4gICAgICAgICAgICBidHIxID0gZmR0Lm5bc3QxXTtcbiAgICAgICAgICAgIHN0MSA9IGZkdC50W3N0MV07XG4gICAgICAgICAgICBidHIyID0gZmR0Lm5bc3QyXTtcbiAgICAgICAgICAgIHN0MiA9IGZkdC50W3N0Ml07XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCsrd2MgPiAyNTUpXG4gICAgICAgICAgICBlcnIoMCk7XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgICB3YyA9IGhiIC0gMTI3O1xuICAgICAgICBmb3IgKDsgaSA8IHdjOyBpICs9IDIpIHtcbiAgICAgICAgICAgIHZhciBieXRlID0gZGF0WysrYnRdO1xuICAgICAgICAgICAgaHdbaV0gPSBieXRlID4+IDQ7XG4gICAgICAgICAgICBod1tpICsgMV0gPSBieXRlICYgMTU7XG4gICAgICAgIH1cbiAgICAgICAgKytidDtcbiAgICB9XG4gICAgLy8gd2VpZ2h0IGV4cG9uZW50aWFsIHN1bVxuICAgIHZhciB3ZXMgPSAwO1xuICAgIGZvciAoaSA9IDA7IGkgPCB3YzsgKytpKSB7XG4gICAgICAgIHZhciB3dCA9IGh3W2ldO1xuICAgICAgICAvLyBiaXRzIG11c3QgYmUgYXQgbW9zdCAxMSwgc2FtZSBhcyB3ZWlnaHRcbiAgICAgICAgaWYgKHd0ID4gMTEpXG4gICAgICAgICAgICBlcnIoMCk7XG4gICAgICAgIHdlcyArPSB3dCAmJiAoMSA8PCAod3QgLSAxKSk7XG4gICAgfVxuICAgIC8vIG1heCBiaXRzXG4gICAgdmFyIG1iID0gbXNiKHdlcykgKyAxO1xuICAgIC8vIHRhYmxlIHNpemVcbiAgICB2YXIgdHMgPSAxIDw8IG1iO1xuICAgIC8vIHJlbWFpbmluZyBzdW1cbiAgICB2YXIgcmVtID0gdHMgLSB3ZXM7XG4gICAgLy8gbXVzdCBiZSBwb3dlciBvZiAyXG4gICAgaWYgKHJlbSAmIChyZW0gLSAxKSlcbiAgICAgICAgZXJyKDApO1xuICAgIGh3W3djKytdID0gbXNiKHJlbSkgKyAxO1xuICAgIGZvciAoaSA9IDA7IGkgPCB3YzsgKytpKSB7XG4gICAgICAgIHZhciB3dCA9IGh3W2ldO1xuICAgICAgICArK3JjW2h3W2ldID0gd3QgJiYgKG1iICsgMSAtIHd0KV07XG4gICAgfVxuICAgIC8vIGh1ZiBidWZcbiAgICB2YXIgaGJ1ZiA9IG5ldyB1OCh0cyA8PCAxKTtcbiAgICAvLyAgICBzeW1ib2xzICAgICAgICAgICAgICAgICAgICAgIG51bSBiaXRzXG4gICAgdmFyIHN5bXMgPSBoYnVmLnN1YmFycmF5KDAsIHRzKSwgbmIgPSBoYnVmLnN1YmFycmF5KHRzKTtcbiAgICByaVttYl0gPSAwO1xuICAgIGZvciAoaSA9IG1iOyBpID4gMDsgLS1pKSB7XG4gICAgICAgIHZhciBwdiA9IHJpW2ldO1xuICAgICAgICBmaWxsKG5iLCBpLCBwdiwgcmlbaSAtIDFdID0gcHYgKyByY1tpXSAqICgxIDw8IChtYiAtIGkpKSk7XG4gICAgfVxuICAgIGlmIChyaVswXSAhPSB0cylcbiAgICAgICAgZXJyKDApO1xuICAgIGZvciAoaSA9IDA7IGkgPCB3YzsgKytpKSB7XG4gICAgICAgIHZhciBiaXRzID0gaHdbaV07XG4gICAgICAgIGlmIChiaXRzKSB7XG4gICAgICAgICAgICB2YXIgY29kZSA9IHJpW2JpdHNdO1xuICAgICAgICAgICAgZmlsbChzeW1zLCBpLCBjb2RlLCByaVtiaXRzXSA9IGNvZGUgKyAoMSA8PCAobWIgLSBiaXRzKSkpO1xuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiBbYnQsIHtcbiAgICAgICAgICAgIG46IG5iLFxuICAgICAgICAgICAgYjogbWIsXG4gICAgICAgICAgICBzOiBzeW1zXG4gICAgICAgIH1dO1xufTtcbi8vIFRhYmxlcyBnZW5lcmF0ZWQgdXNpbmcgdGhpczpcbi8vIGh0dHBzOi8vZ2lzdC5naXRodWIuY29tLzEwMWFycm93ei9hOTc5NDUyZDQzNTU5OTJjYmY4ZjI1N2NiZmZjOWVkZFxuLy8gZGVmYXVsdCBsaXRlcmFsIGxlbmd0aCB0YWJsZVxudmFyIGRsbHQgPSAvKiNfX1BVUkVfXyovIHJmc2UoLyojX19QVVJFX18qLyBuZXcgdTgoW1xuICAgIDgxLCAxNiwgOTksIDE0MCwgNDksIDE5OCwgMjQsIDk5LCAxMiwgMzMsIDE5NiwgMjQsIDk5LCAxMDIsIDEwMiwgMTM0LCA3MCwgMTQ2LCA0XG5dKSwgMCwgNilbMV07XG4vLyBkZWZhdWx0IG1hdGNoIGxlbmd0aCB0YWJsZVxudmFyIGRtbHQgPSAvKiNfX1BVUkVfXyovIHJmc2UoLyojX19QVVJFX18qLyBuZXcgdTgoW1xuICAgIDMzLCAyMCwgMTk2LCAyNCwgOTksIDE0MCwgMzMsIDEzMiwgMTYsIDY2LCA4LCAzMywgMTMyLCAxNiwgNjYsIDgsIDMzLCA2OCwgNjgsIDY4LCA2OCwgNjgsIDY4LCA2OCwgNjgsIDM2LCA5XG5dKSwgMCwgNilbMV07XG4vLyBkZWZhdWx0IG9mZnNldCBjb2RlIHRhYmxlXG52YXIgZG9jdCA9IC8qI19fUFVSRV9fICovIHJmc2UoLyojX19QVVJFX18qLyBuZXcgdTgoW1xuICAgIDMyLCAxMzIsIDE2LCA2NiwgMTAyLCA3MCwgNjgsIDY4LCA2OCwgNjgsIDM2LCA3MywgMlxuXSksIDAsIDUpWzFdO1xuLy8gYml0cyB0byBiYXNlbGluZVxudmFyIGIyYmwgPSBmdW5jdGlvbiAoYiwgcykge1xuICAgIHZhciBsZW4gPSBiLmxlbmd0aCwgYmwgPSBuZXcgaTMyKGxlbik7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW47ICsraSkge1xuICAgICAgICBibFtpXSA9IHM7XG4gICAgICAgIHMgKz0gMSA8PCBiW2ldO1xuICAgIH1cbiAgICByZXR1cm4gYmw7XG59O1xuLy8gbGl0ZXJhbCBsZW5ndGggYml0c1xudmFyIGxsYiA9IC8qI19fUFVSRV9fICovIG5ldyB1OCgoIC8qI19fUFVSRV9fICovbmV3IGkzMihbXG4gICAgMCwgMCwgMCwgMCwgMTY4NDMwMDksIDUwNTI4NzcwLCAxMzQ2NzgwMjAsIDIwMjA1MDA1NywgMjY5NDIyMDkzXG5dKSkuYnVmZmVyLCAwLCAzNik7XG4vLyBsaXRlcmFsIGxlbmd0aCBiYXNlbGluZVxudmFyIGxsYmwgPSAvKiNfX1BVUkVfXyAqLyBiMmJsKGxsYiwgMCk7XG4vLyBtYXRjaCBsZW5ndGggYml0c1xudmFyIG1sYiA9IC8qI19fUFVSRV9fICovIG5ldyB1OCgoIC8qI19fUFVSRV9fICovbmV3IGkzMihbXG4gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTY4NDMwMDksIDUwNTI4NzcwLCAxMTc3NjkyMjAsIDE4NTIwNzA0OCwgMjUyNTc5MDg0LCAxNlxuXSkpLmJ1ZmZlciwgMCwgNTMpO1xuLy8gbWF0Y2ggbGVuZ3RoIGJhc2VsaW5lXG52YXIgbWxibCA9IC8qI19fUFVSRV9fICovIGIyYmwobWxiLCAzKTtcbi8vIGRlY29kZSBodWZmbWFuIHN0cmVhbVxudmFyIGRodSA9IGZ1bmN0aW9uIChkYXQsIG91dCwgaHUpIHtcbiAgICB2YXIgbGVuID0gZGF0Lmxlbmd0aCwgc3MgPSBvdXQubGVuZ3RoLCBsYiA9IGRhdFtsZW4gLSAxXSwgbXNrID0gKDEgPDwgaHUuYikgLSAxLCBlYiA9IC1odS5iO1xuICAgIGlmICghbGIpXG4gICAgICAgIGVycigwKTtcbiAgICB2YXIgc3QgPSAwLCBidHIgPSBodS5iLCBwb3MgPSAobGVuIDw8IDMpIC0gOCArIG1zYihsYikgLSBidHIsIGkgPSAtMTtcbiAgICBmb3IgKDsgcG9zID4gZWIgJiYgaSA8IHNzOykge1xuICAgICAgICB2YXIgY2J0ID0gcG9zID4+IDM7XG4gICAgICAgIHZhciB2YWwgPSAoZGF0W2NidF0gfCAoZGF0W2NidCArIDFdIDw8IDgpIHwgKGRhdFtjYnQgKyAyXSA8PCAxNikpID4+IChwb3MgJiA3KTtcbiAgICAgICAgc3QgPSAoKHN0IDw8IGJ0cikgfCB2YWwpICYgbXNrO1xuICAgICAgICBvdXRbKytpXSA9IGh1LnNbc3RdO1xuICAgICAgICBwb3MgLT0gKGJ0ciA9IGh1Lm5bc3RdKTtcbiAgICB9XG4gICAgaWYgKHBvcyAhPSBlYiB8fCBpICsgMSAhPSBzcylcbiAgICAgICAgZXJyKDApO1xufTtcbi8vIGRlY29kZSBodWZmbWFuIHN0cmVhbSA0eFxuLy8gVE9ETzogdXNlIHdvcmtlcnMgdG8gcGFyYWxsZWxpemVcbnZhciBkaHU0ID0gZnVuY3Rpb24gKGRhdCwgb3V0LCBodSkge1xuICAgIHZhciBidCA9IDY7XG4gICAgdmFyIHNzID0gb3V0Lmxlbmd0aCwgc3oxID0gKHNzICsgMykgPj4gMiwgc3oyID0gc3oxIDw8IDEsIHN6MyA9IHN6MSArIHN6MjtcbiAgICBkaHUoZGF0LnN1YmFycmF5KGJ0LCBidCArPSBkYXRbMF0gfCAoZGF0WzFdIDw8IDgpKSwgb3V0LnN1YmFycmF5KDAsIHN6MSksIGh1KTtcbiAgICBkaHUoZGF0LnN1YmFycmF5KGJ0LCBidCArPSBkYXRbMl0gfCAoZGF0WzNdIDw8IDgpKSwgb3V0LnN1YmFycmF5KHN6MSwgc3oyKSwgaHUpO1xuICAgIGRodShkYXQuc3ViYXJyYXkoYnQsIGJ0ICs9IGRhdFs0XSB8IChkYXRbNV0gPDwgOCkpLCBvdXQuc3ViYXJyYXkoc3oyLCBzejMpLCBodSk7XG4gICAgZGh1KGRhdC5zdWJhcnJheShidCksIG91dC5zdWJhcnJheShzejMpLCBodSk7XG59O1xuLy8gcmVhZCBac3RhbmRhcmQgYmxvY2tcbnZhciByemIgPSBmdW5jdGlvbiAoZGF0LCBzdCwgb3V0KSB7XG4gICAgdmFyIF9hO1xuICAgIHZhciBidCA9IHN0LmI7XG4gICAgLy8gICAgYnl0ZSAwICAgICAgICBibG9jayB0eXBlXG4gICAgdmFyIGIwID0gZGF0W2J0XSwgYnR5cGUgPSAoYjAgPj4gMSkgJiAzO1xuICAgIHN0LmwgPSBiMCAmIDE7XG4gICAgdmFyIHN6ID0gKGIwID4+IDMpIHwgKGRhdFtidCArIDFdIDw8IDUpIHwgKGRhdFtidCArIDJdIDw8IDEzKTtcbiAgICAvLyBlbmQgYnl0ZSBmb3IgYmxvY2tcbiAgICB2YXIgZWJ0ID0gKGJ0ICs9IDMpICsgc3o7XG4gICAgaWYgKGJ0eXBlID09IDEpIHtcbiAgICAgICAgaWYgKGJ0ID49IGRhdC5sZW5ndGgpXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIHN0LmIgPSBidCArIDE7XG4gICAgICAgIGlmIChvdXQpIHtcbiAgICAgICAgICAgIGZpbGwob3V0LCBkYXRbYnRdLCBzdC55LCBzdC55ICs9IHN6KTtcbiAgICAgICAgICAgIHJldHVybiBvdXQ7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGZpbGwobmV3IHU4KHN6KSwgZGF0W2J0XSk7XG4gICAgfVxuICAgIGlmIChlYnQgPiBkYXQubGVuZ3RoKVxuICAgICAgICByZXR1cm47XG4gICAgaWYgKGJ0eXBlID09IDApIHtcbiAgICAgICAgc3QuYiA9IGVidDtcbiAgICAgICAgaWYgKG91dCkge1xuICAgICAgICAgICAgb3V0LnNldChkYXQuc3ViYXJyYXkoYnQsIGVidCksIHN0LnkpO1xuICAgICAgICAgICAgc3QueSArPSBzejtcbiAgICAgICAgICAgIHJldHVybiBvdXQ7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHNsYyhkYXQsIGJ0LCBlYnQpO1xuICAgIH1cbiAgICBpZiAoYnR5cGUgPT0gMikge1xuICAgICAgICAvLyAgICBieXRlIDMgICAgICAgIGxpdCBidHlwZSAgICAgc2l6ZSBmb3JtYXRcbiAgICAgICAgdmFyIGIzID0gZGF0W2J0XSwgbGJ0ID0gYjMgJiAzLCBzZiA9IChiMyA+PiAyKSAmIDM7XG4gICAgICAgIC8vIGxpdCBzcmMgc2l6ZSAgbGl0IGNtcCBzeiA0IHN0cmVhbXNcbiAgICAgICAgdmFyIGxzcyA9IGIzID4+IDQsIGxjcyA9IDAsIHM0ID0gMDtcbiAgICAgICAgaWYgKGxidCA8IDIpIHtcbiAgICAgICAgICAgIGlmIChzZiAmIDEpXG4gICAgICAgICAgICAgICAgbHNzIHw9IChkYXRbKytidF0gPDwgNCkgfCAoKHNmICYgMikgJiYgKGRhdFsrK2J0XSA8PCAxMikpO1xuICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgIGxzcyA9IGIzID4+IDM7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBzNCA9IHNmO1xuICAgICAgICAgICAgaWYgKHNmIDwgMilcbiAgICAgICAgICAgICAgICBsc3MgfD0gKChkYXRbKytidF0gJiA2MykgPDwgNCksIGxjcyA9IChkYXRbYnRdID4+IDYpIHwgKGRhdFsrK2J0XSA8PCAyKTtcbiAgICAgICAgICAgIGVsc2UgaWYgKHNmID09IDIpXG4gICAgICAgICAgICAgICAgbHNzIHw9IChkYXRbKytidF0gPDwgNCkgfCAoKGRhdFsrK2J0XSAmIDMpIDw8IDEyKSwgbGNzID0gKGRhdFtidF0gPj4gMikgfCAoZGF0WysrYnRdIDw8IDYpO1xuICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgIGxzcyB8PSAoZGF0WysrYnRdIDw8IDQpIHwgKChkYXRbKytidF0gJiA2MykgPDwgMTIpLCBsY3MgPSAoZGF0W2J0XSA+PiA2KSB8IChkYXRbKytidF0gPDwgMikgfCAoZGF0WysrYnRdIDw8IDEwKTtcbiAgICAgICAgfVxuICAgICAgICArK2J0O1xuICAgICAgICAvLyBhZGQgbGl0ZXJhbHMgdG8gZW5kIC0gY2FuIG5ldmVyIG92ZXJsYXAgd2l0aCBiYWNrcmVmZXJlbmNlcyBiZWNhdXNlIHVudXNlZCBsaXRlcmFscyBhbHdheXMgYXBwZW5kZWRcbiAgICAgICAgdmFyIGJ1ZiA9IG91dCA/IG91dC5zdWJhcnJheShzdC55LCBzdC55ICsgc3QubSkgOiBuZXcgdTgoc3QubSk7XG4gICAgICAgIC8vIHN0YXJ0aW5nIHBvaW50IGZvciBsaXRlcmFsc1xuICAgICAgICB2YXIgc3BsID0gYnVmLmxlbmd0aCAtIGxzcztcbiAgICAgICAgaWYgKGxidCA9PSAwKVxuICAgICAgICAgICAgYnVmLnNldChkYXQuc3ViYXJyYXkoYnQsIGJ0ICs9IGxzcyksIHNwbCk7XG4gICAgICAgIGVsc2UgaWYgKGxidCA9PSAxKVxuICAgICAgICAgICAgZmlsbChidWYsIGRhdFtidCsrXSwgc3BsKTtcbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAvLyBodWZmbWFuIHRhYmxlXG4gICAgICAgICAgICB2YXIgaHUgPSBzdC5oO1xuICAgICAgICAgICAgaWYgKGxidCA9PSAyKSB7XG4gICAgICAgICAgICAgICAgdmFyIGh1ZCA9IHJodShkYXQsIGJ0KTtcbiAgICAgICAgICAgICAgICAvLyBzdWJ0cmFjdCBkZXNjcmlwdGlvbiBsZW5ndGhcbiAgICAgICAgICAgICAgICBsY3MgKz0gYnQgLSAoYnQgPSBodWRbMF0pO1xuICAgICAgICAgICAgICAgIHN0LmggPSBodSA9IGh1ZFsxXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2UgaWYgKCFodSlcbiAgICAgICAgICAgICAgICBlcnIoMCk7XG4gICAgICAgICAgICAoczQgPyBkaHU0IDogZGh1KShkYXQuc3ViYXJyYXkoYnQsIGJ0ICs9IGxjcyksIGJ1Zi5zdWJhcnJheShzcGwpLCBodSk7XG4gICAgICAgIH1cbiAgICAgICAgLy8gbnVtIHNlcXVlbmNlc1xuICAgICAgICB2YXIgbnMgPSBkYXRbYnQrK107XG4gICAgICAgIGlmIChucykge1xuICAgICAgICAgICAgaWYgKG5zID09IDI1NSlcbiAgICAgICAgICAgICAgICBucyA9IChkYXRbYnQrK10gfCAoZGF0W2J0KytdIDw8IDgpKSArIDB4N0YwMDtcbiAgICAgICAgICAgIGVsc2UgaWYgKG5zID4gMTI3KVxuICAgICAgICAgICAgICAgIG5zID0gKChucyAtIDEyOCkgPDwgOCkgfCBkYXRbYnQrK107XG4gICAgICAgICAgICAvLyBzeW1ib2wgY29tcHJlc3Npb24gbW9kZXNcbiAgICAgICAgICAgIHZhciBzY20gPSBkYXRbYnQrK107XG4gICAgICAgICAgICBpZiAoc2NtICYgMylcbiAgICAgICAgICAgICAgICBlcnIoMCk7XG4gICAgICAgICAgICB2YXIgZHRzID0gW2RtbHQsIGRvY3QsIGRsbHRdO1xuICAgICAgICAgICAgZm9yICh2YXIgaSA9IDI7IGkgPiAtMTsgLS1pKSB7XG4gICAgICAgICAgICAgICAgdmFyIG1kID0gKHNjbSA+PiAoKGkgPDwgMSkgKyAyKSkgJiAzO1xuICAgICAgICAgICAgICAgIGlmIChtZCA9PSAxKSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIHJsZSBidWZcbiAgICAgICAgICAgICAgICAgICAgdmFyIHJidWYgPSBuZXcgdTgoWzAsIDAsIGRhdFtidCsrXV0pO1xuICAgICAgICAgICAgICAgICAgICBkdHNbaV0gPSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBzOiByYnVmLnN1YmFycmF5KDIsIDMpLFxuICAgICAgICAgICAgICAgICAgICAgICAgbjogcmJ1Zi5zdWJhcnJheSgwLCAxKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHQ6IG5ldyB1MTYocmJ1Zi5idWZmZXIsIDAsIDEpLFxuICAgICAgICAgICAgICAgICAgICAgICAgYjogMFxuICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIGlmIChtZCA9PSAyKSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIGFjY3VyYWN5IGxvZyA4IGZvciBvZmZzZXRzLCA5IGZvciBvdGhlcnNcbiAgICAgICAgICAgICAgICAgICAgX2EgPSByZnNlKGRhdCwgYnQsIDkgLSAoaSAmIDEpKSwgYnQgPSBfYVswXSwgZHRzW2ldID0gX2FbMV07XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2UgaWYgKG1kID09IDMpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKCFzdC50KVxuICAgICAgICAgICAgICAgICAgICAgICAgZXJyKDApO1xuICAgICAgICAgICAgICAgICAgICBkdHNbaV0gPSBzdC50W2ldO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHZhciBfYiA9IHN0LnQgPSBkdHMsIG1sdCA9IF9iWzBdLCBvY3QgPSBfYlsxXSwgbGx0ID0gX2JbMl07XG4gICAgICAgICAgICB2YXIgbGIgPSBkYXRbZWJ0IC0gMV07XG4gICAgICAgICAgICBpZiAoIWxiKVxuICAgICAgICAgICAgICAgIGVycigwKTtcbiAgICAgICAgICAgIHZhciBzcG9zID0gKGVidCA8PCAzKSAtIDggKyBtc2IobGIpIC0gbGx0LmIsIGNidCA9IHNwb3MgPj4gMywgb3VidCA9IDA7XG4gICAgICAgICAgICB2YXIgbHN0ID0gKChkYXRbY2J0XSB8IChkYXRbY2J0ICsgMV0gPDwgOCkpID4+IChzcG9zICYgNykpICYgKCgxIDw8IGxsdC5iKSAtIDEpO1xuICAgICAgICAgICAgY2J0ID0gKHNwb3MgLT0gb2N0LmIpID4+IDM7XG4gICAgICAgICAgICB2YXIgb3N0ID0gKChkYXRbY2J0XSB8IChkYXRbY2J0ICsgMV0gPDwgOCkpID4+IChzcG9zICYgNykpICYgKCgxIDw8IG9jdC5iKSAtIDEpO1xuICAgICAgICAgICAgY2J0ID0gKHNwb3MgLT0gbWx0LmIpID4+IDM7XG4gICAgICAgICAgICB2YXIgbXN0ID0gKChkYXRbY2J0XSB8IChkYXRbY2J0ICsgMV0gPDwgOCkpID4+IChzcG9zICYgNykpICYgKCgxIDw8IG1sdC5iKSAtIDEpO1xuICAgICAgICAgICAgZm9yICgrK25zOyAtLW5zOykge1xuICAgICAgICAgICAgICAgIHZhciBsbGMgPSBsbHQuc1tsc3RdO1xuICAgICAgICAgICAgICAgIHZhciBsYnRyID0gbGx0Lm5bbHN0XTtcbiAgICAgICAgICAgICAgICB2YXIgbWxjID0gbWx0LnNbbXN0XTtcbiAgICAgICAgICAgICAgICB2YXIgbWJ0ciA9IG1sdC5uW21zdF07XG4gICAgICAgICAgICAgICAgdmFyIG9mYyA9IG9jdC5zW29zdF07XG4gICAgICAgICAgICAgICAgdmFyIG9idHIgPSBvY3Qubltvc3RdO1xuICAgICAgICAgICAgICAgIGNidCA9IChzcG9zIC09IG9mYykgPj4gMztcbiAgICAgICAgICAgICAgICB2YXIgb2ZwID0gMSA8PCBvZmM7XG4gICAgICAgICAgICAgICAgdmFyIG9mZiA9IG9mcCArICgoKGRhdFtjYnRdIHwgKGRhdFtjYnQgKyAxXSA8PCA4KSB8IChkYXRbY2J0ICsgMl0gPDwgMTYpIHwgKGRhdFtjYnQgKyAzXSA8PCAyNCkpID4+PiAoc3BvcyAmIDcpKSAmIChvZnAgLSAxKSk7XG4gICAgICAgICAgICAgICAgY2J0ID0gKHNwb3MgLT0gbWxiW21sY10pID4+IDM7XG4gICAgICAgICAgICAgICAgdmFyIG1sID0gbWxibFttbGNdICsgKCgoZGF0W2NidF0gfCAoZGF0W2NidCArIDFdIDw8IDgpIHwgKGRhdFtjYnQgKyAyXSA8PCAxNikpID4+IChzcG9zICYgNykpICYgKCgxIDw8IG1sYlttbGNdKSAtIDEpKTtcbiAgICAgICAgICAgICAgICBjYnQgPSAoc3BvcyAtPSBsbGJbbGxjXSkgPj4gMztcbiAgICAgICAgICAgICAgICB2YXIgbGwgPSBsbGJsW2xsY10gKyAoKChkYXRbY2J0XSB8IChkYXRbY2J0ICsgMV0gPDwgOCkgfCAoZGF0W2NidCArIDJdIDw8IDE2KSkgPj4gKHNwb3MgJiA3KSkgJiAoKDEgPDwgbGxiW2xsY10pIC0gMSkpO1xuICAgICAgICAgICAgICAgIGNidCA9IChzcG9zIC09IGxidHIpID4+IDM7XG4gICAgICAgICAgICAgICAgbHN0ID0gbGx0LnRbbHN0XSArICgoKGRhdFtjYnRdIHwgKGRhdFtjYnQgKyAxXSA8PCA4KSkgPj4gKHNwb3MgJiA3KSkgJiAoKDEgPDwgbGJ0cikgLSAxKSk7XG4gICAgICAgICAgICAgICAgY2J0ID0gKHNwb3MgLT0gbWJ0cikgPj4gMztcbiAgICAgICAgICAgICAgICBtc3QgPSBtbHQudFttc3RdICsgKCgoZGF0W2NidF0gfCAoZGF0W2NidCArIDFdIDw8IDgpKSA+PiAoc3BvcyAmIDcpKSAmICgoMSA8PCBtYnRyKSAtIDEpKTtcbiAgICAgICAgICAgICAgICBjYnQgPSAoc3BvcyAtPSBvYnRyKSA+PiAzO1xuICAgICAgICAgICAgICAgIG9zdCA9IG9jdC50W29zdF0gKyAoKChkYXRbY2J0XSB8IChkYXRbY2J0ICsgMV0gPDwgOCkpID4+IChzcG9zICYgNykpICYgKCgxIDw8IG9idHIpIC0gMSkpO1xuICAgICAgICAgICAgICAgIGlmIChvZmYgPiAzKSB7XG4gICAgICAgICAgICAgICAgICAgIHN0Lm9bMl0gPSBzdC5vWzFdO1xuICAgICAgICAgICAgICAgICAgICBzdC5vWzFdID0gc3Qub1swXTtcbiAgICAgICAgICAgICAgICAgICAgc3Qub1swXSA9IG9mZiAtPSAzO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgdmFyIGlkeCA9IG9mZiAtIChsbCAhPSAwKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGlkeCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgb2ZmID0gaWR4ID09IDMgPyBzdC5vWzBdIC0gMSA6IHN0Lm9baWR4XTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpZHggPiAxKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0Lm9bMl0gPSBzdC5vWzFdO1xuICAgICAgICAgICAgICAgICAgICAgICAgc3Qub1sxXSA9IHN0Lm9bMF07XG4gICAgICAgICAgICAgICAgICAgICAgICBzdC5vWzBdID0gb2ZmO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgIG9mZiA9IHN0Lm9bMF07XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbGw7ICsraSkge1xuICAgICAgICAgICAgICAgICAgICBidWZbb3VidCArIGldID0gYnVmW3NwbCArIGldO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBvdWJ0ICs9IGxsLCBzcGwgKz0gbGw7XG4gICAgICAgICAgICAgICAgdmFyIHN0aW4gPSBvdWJ0IC0gb2ZmO1xuICAgICAgICAgICAgICAgIGlmIChzdGluIDwgMCkge1xuICAgICAgICAgICAgICAgICAgICB2YXIgbGVuID0gLXN0aW47XG4gICAgICAgICAgICAgICAgICAgIHZhciBicyA9IHN0LmUgKyBzdGluO1xuICAgICAgICAgICAgICAgICAgICBpZiAobGVuID4gbWwpXG4gICAgICAgICAgICAgICAgICAgICAgICBsZW4gPSBtbDtcbiAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW47ICsraSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgYnVmW291YnQgKyBpXSA9IHN0LndbYnMgKyBpXTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBvdWJ0ICs9IGxlbiwgbWwgLT0gbGVuLCBzdGluID0gMDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBtbDsgKytpKSB7XG4gICAgICAgICAgICAgICAgICAgIGJ1ZltvdWJ0ICsgaV0gPSBidWZbc3RpbiArIGldO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBvdWJ0ICs9IG1sO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKG91YnQgIT0gc3BsKSB7XG4gICAgICAgICAgICAgICAgd2hpbGUgKHNwbCA8IGJ1Zi5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICAgICAgYnVmW291YnQrK10gPSBidWZbc3BsKytdO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICBvdWJ0ID0gYnVmLmxlbmd0aDtcbiAgICAgICAgICAgIGlmIChvdXQpXG4gICAgICAgICAgICAgICAgc3QueSArPSBvdWJ0O1xuICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgIGJ1ZiA9IHNsYyhidWYsIDAsIG91YnQpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgaWYgKG91dCkge1xuICAgICAgICAgICAgICAgIHN0LnkgKz0gbHNzO1xuICAgICAgICAgICAgICAgIGlmIChzcGwpIHtcbiAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsc3M7ICsraSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgYnVmW2ldID0gYnVmW3NwbCArIGldO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSBpZiAoc3BsKVxuICAgICAgICAgICAgICAgIGJ1ZiA9IHNsYyhidWYsIHNwbCk7XG4gICAgICAgIH1cbiAgICAgICAgc3QuYiA9IGVidDtcbiAgICAgICAgcmV0dXJuIGJ1ZjtcbiAgICB9XG4gICAgZXJyKDIpO1xufTtcbi8vIGNvbmNhdFxudmFyIGNjdCA9IGZ1bmN0aW9uIChidWZzLCBvbCkge1xuICAgIGlmIChidWZzLmxlbmd0aCA9PSAxKVxuICAgICAgICByZXR1cm4gYnVmc1swXTtcbiAgICB2YXIgYnVmID0gbmV3IHU4KG9sKTtcbiAgICBmb3IgKHZhciBpID0gMCwgYiA9IDA7IGkgPCBidWZzLmxlbmd0aDsgKytpKSB7XG4gICAgICAgIHZhciBjaGsgPSBidWZzW2ldO1xuICAgICAgICBidWYuc2V0KGNoaywgYik7XG4gICAgICAgIGIgKz0gY2hrLmxlbmd0aDtcbiAgICB9XG4gICAgcmV0dXJuIGJ1Zjtcbn07XG4vKipcbiAqIERlY29tcHJlc3NlcyBac3RhbmRhcmQgZGF0YVxuICogQHBhcmFtIGRhdCBUaGUgaW5wdXQgZGF0YVxuICogQHBhcmFtIGJ1ZiBUaGUgb3V0cHV0IGJ1ZmZlci4gSWYgdW5zcGVjaWZpZWQsIHRoZSBmdW5jdGlvbiB3aWxsIGFsbG9jYXRlXG4gKiAgICAgICAgICAgIGV4YWN0bHkgZW5vdWdoIG1lbW9yeSB0byBmaXQgdGhlIGRlY29tcHJlc3NlZCBkYXRhLiBJZiB5b3VyXG4gKiAgICAgICAgICAgIGRhdGEgaGFzIG11bHRpcGxlIGZyYW1lcyBhbmQgeW91IGtub3cgdGhlIG91dHB1dCBzaXplLCBzcGVjaWZ5aW5nXG4gKiAgICAgICAgICAgIGl0IHdpbGwgeWllbGQgYmV0dGVyIHBlcmZvcm1hbmNlLlxuICogQHJldHVybnMgVGhlIGRlY29tcHJlc3NlZCBkYXRhXG4gKi9cbnJldHVybiBmdW5jdGlvbiBkZWNvbXByZXNzKGRhdCwgYnVmKSB7XG4gICAgdmFyIGJ0ID0gMCwgYnVmcyA9IFtdLCBuYiA9ICshYnVmLCBvbCA9IDA7XG4gICAgZm9yICg7IGRhdC5sZW5ndGg7KSB7XG4gICAgICAgIHZhciBzdCA9IHJ6ZmgoZGF0LCBuYiB8fCBidWYpO1xuICAgICAgICBpZiAodHlwZW9mIHN0ID09ICdvYmplY3QnKSB7XG4gICAgICAgICAgICBpZiAobmIpIHtcbiAgICAgICAgICAgICAgICBidWYgPSBudWxsO1xuICAgICAgICAgICAgICAgIGlmIChzdC53Lmxlbmd0aCA9PSBzdC51KSB7XG4gICAgICAgICAgICAgICAgICAgIGJ1ZnMucHVzaChidWYgPSBzdC53KTtcbiAgICAgICAgICAgICAgICAgICAgb2wgKz0gc3QudTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICBidWZzLnB1c2goYnVmKTtcbiAgICAgICAgICAgICAgICBzdC5lID0gMDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGZvciAoOyAhc3QubDspIHtcbiAgICAgICAgICAgICAgICB2YXIgYmxrID0gcnpiKGRhdCwgc3QsIGJ1Zik7XG4gICAgICAgICAgICAgICAgaWYgKCFibGspXG4gICAgICAgICAgICAgICAgICAgIGVycig1KTtcbiAgICAgICAgICAgICAgICBpZiAoYnVmKVxuICAgICAgICAgICAgICAgICAgICBzdC5lID0gc3QueTtcbiAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgYnVmcy5wdXNoKGJsayk7XG4gICAgICAgICAgICAgICAgICAgIG9sICs9IGJsay5sZW5ndGg7XG4gICAgICAgICAgICAgICAgICAgIGNwdyhzdC53LCAwLCBibGsubGVuZ3RoKTtcbiAgICAgICAgICAgICAgICAgICAgc3Qudy5zZXQoYmxrLCBzdC53Lmxlbmd0aCAtIGJsay5sZW5ndGgpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGJ0ID0gc3QuYiArIChzdC5jICogNCk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZVxuICAgICAgICAgICAgYnQgPSBzdDtcbiAgICAgICAgZGF0ID0gZGF0LnN1YmFycmF5KGJ0KTtcbiAgICB9XG4gICAgcmV0dXJuIGNjdChidWZzLCBvbCk7XG59XG59KSAoKVxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgIEJlbm9pdCBWYXVnb24sIEVOU1RBICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMjAxNCBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG4oKiBQYWRkaW5nIHBvc2l0aW9uLiAqKVxudHlwZSBwYWR0eSA9XG4gIHwgTGVmdCAgICgqIFRleHQgaXMgbGVmdCBqdXN0aWZpZWQgKCctJyBvcHRpb24pLiAgICAgICAgICAgICAgICopXG4gIHwgUmlnaHQgICgqIFRleHQgaXMgcmlnaHQganVzdGlmaWVkIChubyAnLScgb3B0aW9uKS4gICAgICAgICAgICopXG4gIHwgWmVyb3MgICgqIFRleHQgaXMgcmlnaHQganVzdGlmaWVkIGJ5IHplcm9zIChzZWUgJzAnIG9wdGlvbikuICopXG5cbigqKiopXG5cbigqIEludGVnZXIgY29udmVyc2lvbi4gKilcbnR5cGUgaW50X2NvbnYgPVxuICB8IEludF9kIHwgSW50X3BkIHwgSW50X3NkICAgICAgICAoKiAgJWQgfCAlK2QgfCAlIGQgICopXG4gIHwgSW50X2kgfCBJbnRfcGkgfCBJbnRfc2kgICAgICAgICgqICAlaSB8ICUraSB8ICUgaSAgKilcbiAgfCBJbnRfeCB8IEludF9DeCAgICAgICAgICAgICAgICAgKCogICV4IHwgJSN4ICAgICAgICAqKVxuICB8IEludF9YIHwgSW50X0NYICAgICAgICAgICAgICAgICAoKiAgJVggfCAlI1ggICAgICAgICopXG4gIHwgSW50X28gfCBJbnRfQ28gICAgICAgICAgICAgICAgICgqICAlbyB8ICUjbyAgICAgICAgKilcbiAgfCBJbnRfdSAgICAgICAgICAgICAgICAgICAgICAgICAgKCogICV1ICAgICAgICAgICAgICAqKVxuICB8IEludF9DZCB8IEludF9DaSB8IEludF9DdSAgICAgICAoKiAgJSNkIHwgJSNpIHwgJSN1ICopXG5cbigqIEZsb2F0IGNvbnZlcnNpb24uICopXG50eXBlIGZsb2F0X2ZsYWdfY29udiA9XG4gIHwgRmxvYXRfZmxhZ18gICAgICAgICAgICAgICAgICAgICgqICVbZmVFZ0dGaEhdICopXG4gIHwgRmxvYXRfZmxhZ19wICAgICAgICAgICAgICAgICAgICgqICUrW2ZlRWdHRmhIXSAqKVxuICB8IEZsb2F0X2ZsYWdfcyAgICAgICAgICAgICAgICAgICAoKiAlIFtmZUVnR0ZoSF0gKilcbnR5cGUgZmxvYXRfa2luZF9jb252ID1cbiAgfCBGbG9hdF9mICAgICAgICAgICAgICAgICAgICAgICAgKCogICVmIHwgJStmIHwgJSBmICAqKVxuICB8IEZsb2F0X2UgICAgICAgICAgICAgICAgICAgICAgICAoKiAgJWUgfCAlK2UgfCAlIGUgICopXG4gIHwgRmxvYXRfRSAgICAgICAgICAgICAgICAgICAgICAgICgqICAlRSB8ICUrRSB8ICUgRSAgKilcbiAgfCBGbG9hdF9nICAgICAgICAgICAgICAgICAgICAgICAgKCogICVnIHwgJStnIHwgJSBnICAqKVxuICB8IEZsb2F0X0cgICAgICAgICAgICAgICAgICAgICAgICAoKiAgJUcgfCAlK0cgfCAlIEcgICopXG4gIHwgRmxvYXRfRiAgICAgICAgICAgICAgICAgICAgICAgICgqICAlRiB8ICUrRiB8ICUgRiAgKilcbiAgfCBGbG9hdF9oICAgICAgICAgICAgICAgICAgICAgICAgKCogICVoIHwgJStoIHwgJSBoICAqKVxuICB8IEZsb2F0X0ggICAgICAgICAgICAgICAgICAgICAgICAoKiAgJUggfCAlK0ggfCAlIEggICopXG4gIHwgRmxvYXRfQ0YgICAgICAgICAgICAgICAgICAgICAgICgqICAlI0Z8ICUrI0Z8ICUgI0YgKilcbnR5cGUgZmxvYXRfY29udiA9IGZsb2F0X2ZsYWdfY29udiAqIGZsb2F0X2tpbmRfY29udlxuXG4oKioqKVxuXG4oKiBDaGFyIHNldHMgKHNlZSAlWy4uLl0pIGFyZSBiaXRtYXBzIGltcGxlbWVudGVkIGFzIDMyLWNoYXIgc3RyaW5ncy4gKilcbnR5cGUgY2hhcl9zZXQgPSBzdHJpbmdcblxuKCoqKilcblxuKCogQ291bnRlciB1c2VkIGluIFNjYW5mLiAqKVxudHlwZSBjb3VudGVyID1cbiAgfCBMaW5lX2NvdW50ZXIgICAgICgqICAlbCAgICAgICopXG4gIHwgQ2hhcl9jb3VudGVyICAgICAoKiAgJW4gICAgICAqKVxuICB8IFRva2VuX2NvdW50ZXIgICAgKCogICVOLCAlTCAgKilcblxuKCoqKilcblxuKCogUGFkZGluZyBvZiBzdHJpbmdzIGFuZCBudW1iZXJzLiAqKVxudHlwZSAoJ2EsICdiKSBwYWRkaW5nID1cbiAgKCogTm8gcGFkZGluZyAoZXg6IFwiJWRcIikgKilcbiAgfCBOb19wYWRkaW5nICA6ICgnYSwgJ2EpIHBhZGRpbmdcbiAgKCogTGl0ZXJhbCBwYWRkaW5nIChleDogXCIlOGRcIikgKilcbiAgfCBMaXRfcGFkZGluZyA6IHBhZHR5ICogaW50IC0+ICgnYSwgJ2EpIHBhZGRpbmdcbiAgKCogUGFkZGluZyBhcyBleHRyYSBhcmd1bWVudCAoZXg6IFwiJSpkXCIpICopXG4gIHwgQXJnX3BhZGRpbmcgOiBwYWR0eSAtPiAoaW50IC0+ICdhLCAnYSkgcGFkZGluZ1xuXG4oKiBTb21lIGZvcm1hdHMsIHN1Y2ggYXMgJV9kLFxuICAgb25seSBhY2NlcHQgYW4gb3B0aW9uYWwgbnVtYmVyIGFzIHBhZGRpbmcgb3B0aW9uIChubyBleHRyYSBhcmd1bWVudCkgKilcbnR5cGUgcGFkX29wdGlvbiA9IGludCBvcHRpb25cblxuKCogUHJlY2lzaW9uIG9mIGZsb2F0cyBhbmQgJzAnLXBhZGRpbmcgb2YgaW50ZWdlcnMuICopXG50eXBlICgnYSwgJ2IpIHByZWNpc2lvbiA9XG4gICgqIE5vIHByZWNpc2lvbiAoZXg6IFwiJWZcIikgKilcbiAgfCBOb19wcmVjaXNpb24gOiAoJ2EsICdhKSBwcmVjaXNpb25cbiAgKCogTGl0ZXJhbCBwcmVjaXNpb24gKGV4OiBcIiUuM2ZcIikgKilcbiAgfCBMaXRfcHJlY2lzaW9uIDogaW50IC0+ICgnYSwgJ2EpIHByZWNpc2lvblxuICAoKiBQcmVjaXNpb24gYXMgZXh0cmEgYXJndW1lbnQgKGV4OiBcIiUuKmZcIikgKilcbiAgfCBBcmdfcHJlY2lzaW9uIDogKGludCAtPiAnYSwgJ2EpIHByZWNpc2lvblxuXG4oKiBTb21lIGZvcm1hdHMsIHN1Y2ggYXMgJV9mLFxuICAgb25seSBhY2NlcHQgYW4gb3B0aW9uYWwgbnVtYmVyIGFzIHByZWNpc2lvbiBvcHRpb24gKG5vIGV4dHJhIGFyZ3VtZW50KSAqKVxudHlwZSBwcmVjX29wdGlvbiA9IGludCBvcHRpb25cblxuKCogc2VlIHRoZSBDdXN0b20gZm9ybWF0IGNvbWJpbmF0b3IgKilcbnR5cGUgKCdhLCAnYiwgJ2MpIGN1c3RvbV9hcml0eSA9XG4gIHwgQ3VzdG9tX3plcm8gOiAoJ2EsIHN0cmluZywgJ2EpIGN1c3RvbV9hcml0eVxuICB8IEN1c3RvbV9zdWNjIDogKCdhLCAnYiwgJ2MpIGN1c3RvbV9hcml0eSAtPlxuICAgICgnYSwgJ3ggLT4gJ2IsICd4IC0+ICdjKSBjdXN0b21fYXJpdHlcblxuKCoqKilcblxuKCogICAgICAgIFJlbGF0aW9uYWwgZm9ybWF0IHR5cGVzXG5cbkluIHRoZSBmaXJzdCBmb3JtYXQrZ2FkdHMgaW1wbGVtZW50YXRpb24sIHRoZSB0eXBlIGZvciAlKC4uJSkgaW4gdGhlXG5mbXQgR0FEVCB3YXMgYXMgZm9sbG93czpcblxufCBGb3JtYXRfc3Vic3QgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAlKC4uLiUpICopXG4gICAgcGFkX29wdGlvbiAqICgnZDEsICdxMSwgJ2QyLCAncTIpIHJlYWRlcl9uYl91bmlmaWVyICpcbiAgICAoJ3gsICdiLCAnYywgJ2QxLCAncTEsICd1KSBmbXR0eSAqXG4gICAgKCd1LCAnYiwgJ2MsICdxMSwgJ2UxLCAnZikgZm10IC0+XG4gICAgICAoKCd4LCAnYiwgJ2MsICdkMiwgJ3EyLCAndSkgZm9ybWF0NiAtPiAneCwgJ2IsICdjLCAnZDEsICdlMSwgJ2YpIGZtdFxuXG5Ob3RpY2UgdGhhdCB0aGUgJ3UgcGFyYW1ldGVyIGluICdmIHBvc2l0aW9uIGluIHRoZSBmb3JtYXQgYXJndW1lbnRcbigoJ3gsIC4uLCAndSkgZm9ybWF0NiAtPiAuLikgaXMgZXF1YWwgdG8gdGhlICd1IHBhcmFtZXRlciBpbiAnYVxucG9zaXRpb24gaW4gdGhlIGZvcm1hdCB0YWlsICgoJ3UsIC4uLCAnZikgZm10KS4gVGhpcyBtZWFucyB0aGF0IHRoZVxudHlwZSBvZiB0aGUgZXhwZWN0ZWQgZm9ybWF0IHBhcmFtZXRlciBkZXBlbmRzIG9mIHdoZXJlIHRoZSAlKC4uLiUpXG5hcmUgaW4gdGhlIGZvcm1hdCBzdHJpbmc6XG5cbiAgIyBQcmludGYucHJpbnRmIFwiJSglKVwiXG4gIC0gOiAodW5pdCwgb3V0X2NoYW5uZWwsIHVuaXQsICdfYSwgJ19hLCB1bml0KVxuICAgICAgQ2FtbGludGVybmFsRm9ybWF0QmFzaWNzLmZvcm1hdDYgLT4gdW5pdFxuICA9IDxmdW4+XG4gICMgUHJpbnRmLnByaW50ZiBcIiUoJSklZFwiXG4gIC0gOiAoaW50IC0+IHVuaXQsIG91dF9jaGFubmVsLCB1bml0LCAnX2EsICdfYSwgaW50IC0+IHVuaXQpXG4gICAgICBDYW1saW50ZXJuYWxGb3JtYXRCYXNpY3MuZm9ybWF0NiAtPiBpbnQgLT4gdW5pdFxuICA9IDxmdW4+XG5cbk9uIHRoZSBjb250cmFyeSwgdGhlIGxlZ2FjeSB0eXBlciBnaXZlcyBhIGNsZXZlciB0eXBlIHRoYXQgZG9lcyBub3RcbmRlcGVuZCBvbiB0aGUgcG9zaXRpb24gb2YgJSguLiUpIGluIHRoZSBmb3JtYXQgc3RyaW5nLiBGb3IgZXhhbXBsZSxcbiUoJSkgd2lsbCBoYXZlIHRoZSBwb2x5bW9ycGhpYyB0eXBlICgnYSwgJ2IsICdjLCAnZCwgJ2QsICdhKTogaXQgY2FuXG5iZSBjb25jYXRlbmF0ZWQgdG8gYW55IGZvcm1hdCB0eXBlLCBhbmQgb25seSBlbmZvcmNlcyB0aGUgY29uc3RyYWludFxudGhhdCBpdHMgJ2EgYW5kICdmIHBhcmFtZXRlcnMgYXJlIGVxdWFsIChubyBmb3JtYXQgYXJndW1lbnRzKSBhbmQgJ2RcbmFuZCAnZSBhcmUgZXF1YWwgKG5vIHJlYWRlciBhcmd1bWVudCkuXG5cblRoZSB3ZWFrZW5pbmcgb2YgdGhpcyBwYXJhbWV0ZXIgdHlwZSBpbiB0aGUgR0FEVCB2ZXJzaW9uIGJyb2tlIHVzZXJcbmNvZGUgKGluIGZhY3QgaXQgZXNzZW50aWFsbHkgbWFkZSAlKC4uLiUpIHVudXNhYmxlIGV4Y2VwdCBhdCB0aGUgbGFzdFxucG9zaXRpb24gb2YgYSBmb3JtYXQpLiBJbiBwYXJ0aWN1bGFyLCB0aGUgZm9sbG93aW5nIHdvdWxkIG5vdCB3b3JrXG5hbnltb3JlOlxuXG4gIGZ1biBzZXAgLT5cbiAgICBGb3JtYXQucHJpbnRmIFwiZm9vJSglKWJhciUoJSliYXpcIiBzZXAgc2VwXG5cbkFzIHRoZSB0eXBlLWNoZWNrZXIgd291bGQgcmVxdWlyZSB0d28gKmluY29tcGF0aWJsZSogdHlwZXMgZm9yIHRoZSAlKCUpXG5pbiBkaWZmZXJlbnQgcG9zaXRpb25zLlxuXG5UaGUgc29sdXRpb24gdG8gcmVnYWluIGEgZ2VuZXJhbCB0eXBlIGZvciAlKC4uJSkgaXMgdG8gZ2VuZXJhbGl6ZSB0aGlzXG50ZWNobmlxdWUsIG5vdCBvbmx5IG9uIHRoZSAnZCwgJ2UgcGFyYW1ldGVycywgYnV0IG9uIGFsbCBzaXhcbnBhcmFtZXRlcnMgb2YgYSBmb3JtYXQ6IHdlIGludHJvZHVjZSBhIFwicmVsYXRpb25hbFwiIHR5cGVcbiAgKCdhMSwgJ2IxLCAnYzEsICdkMSwgJ2UxLCAnZjEsXG4gICAnYTIsICdiMiwgJ2MyLCAnZDIsICdlMiwgJ2YyKSBmbXR0eV9yZWxcbndob3NlIHZhbHVlcyBhcmUgcHJvb2ZzIHRoYXQgKCdhMSwgLi4sICdmMSkgYW5kICgnYTIsIC4uLCAnZjIpIG1vcmFsbHlcbmNvcnJlc3BvbmQgdG8gdGhlIHNhbWUgZm9ybWF0IHR5cGU6ICdhMSBpcyBvYnRhaW5lZCBmcm9tICdmMSwnYjEsJ2MxXG5pbiB0aGUgZXhhY3Qgc2FtZSB3YXkgdGhhdCAnYTIgaXMgb2J0YWluZWQgZnJvbSAnZjIsJ2IyLCdjMiwgZXRjLlxuXG5Gb3IgZXhhbXBsZSwgdGhlIHJlbGF0aW9uIGJldHdlZW4gdHdvIGZvcm1hdCB0eXBlcyBiZWdpbm5pbmcgd2l0aCBhIENoYXJcbnBhcmFtZXRlciBpcyBhcyBmb2xsb3dzOlxuXG58IENoYXJfdHkgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAlYyAgKilcbiAgICAoJ2ExLCAnYjEsICdjMSwgJ2QxLCAnZTEsICdmMSxcbiAgICAgJ2EyLCAnYjIsICdjMiwgJ2QyLCAnZTIsICdmMikgZm10dHlfcmVsIC0+XG4gICAgKGNoYXIgLT4gJ2ExLCAnYjEsICdjMSwgJ2QxLCAnZTEsICdmMSxcbiAgICAgY2hhciAtPiAnYTIsICdiMiwgJ2MyLCAnZDIsICdlMiwgJ2YyKSBmbXR0eV9yZWxcblxuSW4gdGhlIGdlbmVyYWwgY2FzZSwgdGhlIHRlcm0gc3RydWN0dXJlIG9mIGZtdHR5X3JlbCBpcyAoYWxtb3N0WzFdKVxuaXNvbW9ycGhpYyB0byB0aGUgZm10dHkgb2YgdGhlIHByZXZpb3VzIGltcGxlbWVudGF0aW9uOiBldmVyeVxuY29uc3RydWN0b3IgaXMgcmUtcmVhZCB3aXRoIGEgYmluYXJ5LCByZWxhdGlvbmFsIHR5cGUsIGluc3RlYWQgb2YgdGhlXG5wcmV2aW91cyB1bmFyeSB0eXBpbmcuIGZtdHR5IGNhbiB0aGVuIGJlIHJlLWRlZmluZWQgYXMgdGhlIGRpYWdvbmFsIG9mXG5mbXR0eV9yZWw6XG5cbiAgdHlwZSAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10dHkgPVxuICAgICAgICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmLFxuICAgICAgICAnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXR0eV9yZWxcblxuT25jZSB3ZSBoYXZlIHRoaXMgZm10dHlfcmVsIHR5cGUgaW4gcGxhY2UsIHdlIGNhbiBnaXZlIHRoZSBtb3JlXG5nZW5lcmFsIHR5cGUgdG8gJSguLi4lKTpcblxufCBGb3JtYXRfc3Vic3QgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAlKC4uLiUpICopXG4gICAgcGFkX29wdGlvbiAqXG4gICAgKCdnLCAnaCwgJ2ksICdqLCAnaywgJ2wsXG4gICAgICdnMiwgJ2IsICdjLCAnajIsICdkLCAnYSkgZm10dHlfcmVsICpcbiAgICAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10IC0+XG4gICAgKCgnZywgJ2gsICdpLCAnaiwgJ2ssICdsKSBmb3JtYXQ2IC0+ICdnMiwgJ2IsICdjLCAnajIsICdlLCAnZikgZm10XG5cbldlIGFjY2VwdCBhbnkgZm9ybWF0ICgoJ2csICdoLCAnaSwgJ2osICdrLCAnbCkgZm9ybWF0NikgKHRoaXMgaXNcbmNvbXBsZXRlbHkgdW5yZWxhdGVkIHRvIHRoZSB0eXBlIG9mIHRoZSBjdXJyZW50IGZvcm1hdCksIGJ1dCBhbHNvXG5yZXF1aXJlIGEgcHJvb2YgdGhhdCB0aGlzIGZvcm1hdCBpcyBpbiByZWxhdGlvbiB0byBhbm90aGVyIGZvcm1hdCB0aGF0XG5pcyBjb25jYXRlbmFibGUgdG8gdGhlIGZvcm1hdCB0YWlsLiBXaGVuIGV4ZWN1dGluZyBhICUoLi4uJSkgZm9ybWF0XG4oaW4gY2FtbGludGVybmFsRm9ybWF0Lm1sOm1ha2VfcHJpbnRmIG9yIHNjYW5mLm1sOm1ha2Vfc2NhbmYpLCB3ZVxudHJhbnN0eXBlIHRoZSBmb3JtYXQgYWxvbmcgdGhpcyByZWxhdGlvbiB1c2luZyB0aGUgJ3JlY2FzdCcgZnVuY3Rpb25cbnRvIHRyYW5zcG9zZSBiZXR3ZWVuIHJlbGF0ZWQgZm9ybWF0IHR5cGVzLlxuXG4gIHZhbCByZWNhc3QgOlxuICAgICAoJ2ExLCAnYjEsICdjMSwgJ2QxLCAnZTEsICdmMSkgZm10XG4gIC0+ICgnYTEsICdiMSwgJ2MxLCAnZDEsICdlMSwgJ2YxLFxuICAgICAgJ2EyLCAnYjIsICdjMiwgJ2QyLCAnZTIsICdmMikgZm10dHlfcmVsXG4gIC0+ICgnYTIsICdiMiwgJ2MyLCAnZDIsICdlMiwgJ2YyKSBmbXRcblxuTk9URSBbMV06IHRoZSB0eXBpbmcgb2YgRm9ybWF0X3N1YnN0X3R5IHJlcXVpcmVzIG5vdCBvbmUgZm9ybWF0IHR5cGUsIGJ1dFxudHdvLCBvbmUgdG8gZXN0YWJsaXNoIHRoZSBsaW5rIGJldHdlZW4gdGhlIGZvcm1hdCBhcmd1bWVudCBhbmQgdGhlXG5maXJzdCBzaXggcGFyYW1ldGVycywgYW5kIHRoZSBvdGhlciBmb3IgdGhlIGxpbmsgYmV0d2VlbiB0aGUgZm9ybWF0XG5hcmd1bWVudCBhbmQgdGhlIGxhc3Qgc2l4IHBhcmFtZXRlcnMuXG5cbnwgRm9ybWF0X3N1YnN0X3R5IDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICUoLi4uJSkgKilcbiAgICAoJ2csICdoLCAnaSwgJ2osICdrLCAnbCxcbiAgICAgJ2cxLCAnYjEsICdjMSwgJ2oxLCAnZDEsICdhMSkgZm10dHlfcmVsICpcbiAgICAoJ2csICdoLCAnaSwgJ2osICdrLCAnbCxcbiAgICAgJ2cyLCAnYjIsICdjMiwgJ2oyLCAnZDIsICdhMikgZm10dHlfcmVsICpcbiAgICAoJ2ExLCAnYjEsICdjMSwgJ2QxLCAnZTEsICdmMSxcbiAgICAgJ2EyLCAnYjIsICdjMiwgJ2QyLCAnZTIsICdmMikgZm10dHlfcmVsIC0+XG4gICAgKCgnZywgJ2gsICdpLCAnaiwgJ2ssICdsKSBmb3JtYXQ2IC0+ICdnMSwgJ2IxLCAnYzEsICdqMSwgJ2UxLCAnZjEsXG4gICAgICgnZywgJ2gsICdpLCAnaiwgJ2ssICdsKSBmb3JtYXQ2IC0+ICdnMiwgJ2IyLCAnYzIsICdqMiwgJ2UyLCAnZjIpIGZtdHR5X3JlbFxuXG5XaGVuIHdlIGdlbmVyYXRlIGEgZm9ybWF0IEFTVCwgd2UgZ2VuZXJhdGUgZXhhY3RseSB0aGUgc2FtZSB3aXRuZXNzXG5mb3IgYm90aCByZWxhdGlvbnMsIGFuZCB0aGUgd2l0bmVzcy1jb252ZXJzaW9uIGZ1bmN0aW9ucyBpblxuY2FtbGludGVybmFsRm9ybWF0IGRvIHJlbHkgb24gdGhpcyBpbnZhcmlhbnQuIEZvciBleGFtcGxlLCB0aGVcbmZ1bmN0aW9uIHRoYXQgcHJvdmVzIHRoYXQgdGhlIHJlbGF0aW9uIGlzIHRyYW5zaXRpdmVcblxuICB2YWwgdHJhbnMgOlxuICAgICAoJ2ExLCAnYjEsICdjMSwgJ2QxLCAnZTEsICdmMSxcbiAgICAgICdhMiwgJ2IyLCAnYzIsICdkMiwgJ2UyLCAnZjIpIGZtdHR5X3JlbFxuICAtPiAoJ2EyLCAnYjIsICdjMiwgJ2QyLCAnZTIsICdmMixcbiAgICAgICdhMywgJ2IzLCAnYzMsICdkMywgJ2UzLCAnZjMpIGZtdHR5X3JlbFxuICAtPiAoJ2ExLCAnYjEsICdjMSwgJ2QxLCAnZTEsICdmMSxcbiAgICAgICdhMywgJ2IzLCAnYzMsICdkMywgJ2UzLCAnZjMpIGZtdHR5X3JlbFxuXG5kb2VzIGFzc3VtZSB0aGF0IHRoZSB0d28gaW5wdXRzIGhhdmUgZXhhY3RseSB0aGUgc2FtZSB0ZXJtIHN0cnVjdHVyZVxuKGFuZCBpcyBvbmx5IGV2ZXJ5IHVzZWQgZm9yIGFyZ3VtZW50IHdpdG5lc3NlcyBvZiB0aGVcbkZvcm1hdF9zdWJzdF90eSBjb25zdHJ1Y3RvcikuXG4qKVxuXG4oKiBUeXBlIG9mIGEgYmxvY2sgdXNlZCBieSB0aGUgRm9ybWF0IHByZXR0eS1wcmludGVyLiAqKVxudHlwZSBibG9ja190eXBlID1cbiAgfCBQcF9oYm94ICAgKCogSG9yaXpvbnRhbCBibG9jayBubyBsaW5lIGJyZWFraW5nICopXG4gIHwgUHBfdmJveCAgICgqIFZlcnRpY2FsIGJsb2NrIGVhY2ggYnJlYWsgbGVhZHMgdG8gYSBuZXcgbGluZSAqKVxuICB8IFBwX2h2Ym94ICAoKiBIb3Jpem9udGFsLXZlcnRpY2FsIGJsb2NrOiBzYW1lIGFzIHZib3gsIGV4Y2VwdCBpZiB0aGlzIGJsb2NrXG4gICAgICAgICAgICAgICAgIGlzIHNtYWxsIGVub3VnaCB0byBmaXQgb24gYSBzaW5nbGUgbGluZSAqKVxuICB8IFBwX2hvdmJveCAoKiBIb3Jpem9udGFsIG9yIFZlcnRpY2FsIGJsb2NrOiBicmVha3MgbGVhZCB0byBuZXcgbGluZVxuICAgICAgICAgICAgICAgICBvbmx5IHdoZW4gbmVjZXNzYXJ5IHRvIHByaW50IHRoZSBjb250ZW50IG9mIHRoZSBibG9jayAqKVxuICB8IFBwX2JveCAgICAoKiBIb3Jpem9udGFsIG9yIEluZGVudCBibG9jazogYnJlYWtzIGxlYWQgdG8gbmV3IGxpbmVcbiAgICAgICAgICAgICAgICAgb25seSB3aGVuIG5lY2Vzc2FyeSB0byBwcmludCB0aGUgY29udGVudCBvZiB0aGUgYmxvY2ssIG9yXG4gICAgICAgICAgICAgICAgIHdoZW4gaXQgbGVhZHMgdG8gYSBuZXcgaW5kZW50YXRpb24gb2YgdGhlIGN1cnJlbnQgbGluZSAqKVxuICB8IFBwX2ZpdHMgICAoKiBJbnRlcm5hbCB1c2FnZTogd2hlbiBhIGJsb2NrIGZpdHMgb24gYSBzaW5nbGUgbGluZSAqKVxuXG4oKiBGb3JtYXR0aW5nIGVsZW1lbnQgdXNlZCBieSB0aGUgRm9ybWF0IHByZXR0eS1wcmludGVyLiAqKVxudHlwZSBmb3JtYXR0aW5nX2xpdCA9XG4gIHwgQ2xvc2VfYm94ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqIEBdICAgKilcbiAgfCBDbG9zZV90YWcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogQH0gICAqKVxuICB8IEJyZWFrIG9mIHN0cmluZyAqIGludCAqIGludCAgICAgICAgICAoKiBALCB8IEAgIHwgQDsgfCBAOzw+ICopXG4gIHwgRkZsdXNoICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqIEA/ICAgKilcbiAgfCBGb3JjZV9uZXdsaW5lICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogQFxcbiAgKilcbiAgfCBGbHVzaF9uZXdsaW5lICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogQC4gICAqKVxuICB8IE1hZ2ljX3NpemUgb2Ygc3RyaW5nICogaW50ICAgICAgICAgICAgICAgICAgICAgICAgICAoKiBAPG4+ICopXG4gIHwgRXNjYXBlZF9hdCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqIEBAICAgKilcbiAgfCBFc2NhcGVkX3BlcmNlbnQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogQCUlICAqKVxuICB8IFNjYW5faW5kaWMgb2YgY2hhciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiBAWCAgICopXG5cbigqIEZvcm1hdHRpbmcgZWxlbWVudCB1c2VkIGJ5IHRoZSBGb3JtYXQgcHJldHR5LXByaW50ZXIuICopXG50eXBlICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmb3JtYXR0aW5nX2dlbiA9XG4gIHwgT3Blbl90YWcgOiAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm9ybWF0NiAtPiAgICAgICgqIEB7ICAgKilcbiAgICAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm9ybWF0dGluZ19nZW5cbiAgfCBPcGVuX2JveCA6ICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmb3JtYXQ2IC0+ICAgICAgKCogQFsgICAqKVxuICAgICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmb3JtYXR0aW5nX2dlblxuXG4oKioqKVxuXG4oKiBMaXN0IG9mIGZvcm1hdCB0eXBlIGVsZW1lbnRzLiAqKVxuKCogSW4gcGFydGljdWxhciB1c2VkIHRvIHJlcHJlc2VudCAlKC4uLiUpIGFuZCAley4uLiV9IGNvbnRlbnRzLiAqKVxuYW5kICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXR0eSA9XG4gICAgICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmLFxuICAgICAgJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10dHlfcmVsXG5hbmQgKCdhMSwgJ2IxLCAnYzEsICdkMSwgJ2UxLCAnZjEsXG4gICAgICdhMiwgJ2IyLCAnYzIsICdkMiwgJ2UyLCAnZjIpIGZtdHR5X3JlbCA9XG4gIHwgQ2hhcl90eSA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICVjICAqKVxuICAgICAgKCdhMSwgJ2IxLCAnYzEsICdkMSwgJ2UxLCAnZjEsXG4gICAgICAgJ2EyLCAnYjIsICdjMiwgJ2QyLCAnZTIsICdmMikgZm10dHlfcmVsIC0+XG4gICAgICAoY2hhciAtPiAnYTEsICdiMSwgJ2MxLCAnZDEsICdlMSwgJ2YxLFxuICAgICAgIGNoYXIgLT4gJ2EyLCAnYjIsICdjMiwgJ2QyLCAnZTIsICdmMikgZm10dHlfcmVsXG4gIHwgU3RyaW5nX3R5IDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICVzICAqKVxuICAgICAgKCdhMSwgJ2IxLCAnYzEsICdkMSwgJ2UxLCAnZjEsXG4gICAgICAgJ2EyLCAnYjIsICdjMiwgJ2QyLCAnZTIsICdmMikgZm10dHlfcmVsIC0+XG4gICAgICAoc3RyaW5nIC0+ICdhMSwgJ2IxLCAnYzEsICdkMSwgJ2UxLCAnZjEsXG4gICAgICAgc3RyaW5nIC0+ICdhMiwgJ2IyLCAnYzIsICdkMiwgJ2UyLCAnZjIpIGZtdHR5X3JlbFxuICB8IEludF90eSA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAlZCAgKilcbiAgICAgICgnYTEsICdiMSwgJ2MxLCAnZDEsICdlMSwgJ2YxLFxuICAgICAgICdhMiwgJ2IyLCAnYzIsICdkMiwgJ2UyLCAnZjIpIGZtdHR5X3JlbCAtPlxuICAgICAgKGludCAtPiAnYTEsICdiMSwgJ2MxLCAnZDEsICdlMSwgJ2YxLFxuICAgICAgIGludCAtPiAnYTIsICdiMiwgJ2MyLCAnZDIsICdlMiwgJ2YyKSBmbXR0eV9yZWxcbiAgfCBJbnQzMl90eSA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJWxkICopXG4gICAgICAoJ2ExLCAnYjEsICdjMSwgJ2QxLCAnZTEsICdmMSxcbiAgICAgICAnYTIsICdiMiwgJ2MyLCAnZDIsICdlMiwgJ2YyKSBmbXR0eV9yZWwgLT5cbiAgICAgIChpbnQzMiAtPiAnYTEsICdiMSwgJ2MxLCAnZDEsICdlMSwgJ2YxLFxuICAgICAgIGludDMyIC0+ICdhMiwgJ2IyLCAnYzIsICdkMiwgJ2UyLCAnZjIpIGZtdHR5X3JlbFxuICB8IE5hdGl2ZWludF90eSA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAlbmQgKilcbiAgICAgICgnYTEsICdiMSwgJ2MxLCAnZDEsICdlMSwgJ2YxLFxuICAgICAgICdhMiwgJ2IyLCAnYzIsICdkMiwgJ2UyLCAnZjIpIGZtdHR5X3JlbCAtPlxuICAgICAgKG5hdGl2ZWludCAtPiAnYTEsICdiMSwgJ2MxLCAnZDEsICdlMSwgJ2YxLFxuICAgICAgIG5hdGl2ZWludCAtPiAnYTIsICdiMiwgJ2MyLCAnZDIsICdlMiwgJ2YyKSBmbXR0eV9yZWxcbiAgfCBJbnQ2NF90eSA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJUxkICopXG4gICAgICAoJ2ExLCAnYjEsICdjMSwgJ2QxLCAnZTEsICdmMSxcbiAgICAgICAnYTIsICdiMiwgJ2MyLCAnZDIsICdlMiwgJ2YyKSBmbXR0eV9yZWwgLT5cbiAgICAgIChpbnQ2NCAtPiAnYTEsICdiMSwgJ2MxLCAnZDEsICdlMSwgJ2YxLFxuICAgICAgIGludDY0IC0+ICdhMiwgJ2IyLCAnYzIsICdkMiwgJ2UyLCAnZjIpIGZtdHR5X3JlbFxuICB8IEZsb2F0X3R5IDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAlZiAgKilcbiAgICAgICgnYTEsICdiMSwgJ2MxLCAnZDEsICdlMSwgJ2YxLFxuICAgICAgICdhMiwgJ2IyLCAnYzIsICdkMiwgJ2UyLCAnZjIpIGZtdHR5X3JlbCAtPlxuICAgICAgKGZsb2F0IC0+ICdhMSwgJ2IxLCAnYzEsICdkMSwgJ2UxLCAnZjEsXG4gICAgICAgZmxvYXQgLT4gJ2EyLCAnYjIsICdjMiwgJ2QyLCAnZTIsICdmMikgZm10dHlfcmVsXG4gIHwgQm9vbF90eSA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICVCICAqKVxuICAgICAgKCdhMSwgJ2IxLCAnYzEsICdkMSwgJ2UxLCAnZjEsXG4gICAgICAgJ2EyLCAnYjIsICdjMiwgJ2QyLCAnZTIsICdmMikgZm10dHlfcmVsIC0+XG4gICAgICAoYm9vbCAtPiAnYTEsICdiMSwgJ2MxLCAnZDEsICdlMSwgJ2YxLFxuICAgICAgIGJvb2wgLT4gJ2EyLCAnYjIsICdjMiwgJ2QyLCAnZTIsICdmMikgZm10dHlfcmVsXG5cbiAgfCBGb3JtYXRfYXJnX3R5IDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJXsuLi4lfSAqKVxuICAgICAgKCdnLCAnaCwgJ2ksICdqLCAnaywgJ2wpIGZtdHR5ICpcbiAgICAgICgnYTEsICdiMSwgJ2MxLCAnZDEsICdlMSwgJ2YxLFxuICAgICAgICdhMiwgJ2IyLCAnYzIsICdkMiwgJ2UyLCAnZjIpIGZtdHR5X3JlbCAtPlxuICAgICAgKCgnZywgJ2gsICdpLCAnaiwgJ2ssICdsKSBmb3JtYXQ2IC0+ICdhMSwgJ2IxLCAnYzEsICdkMSwgJ2UxLCAnZjEsXG4gICAgICAgKCdnLCAnaCwgJ2ksICdqLCAnaywgJ2wpIGZvcm1hdDYgLT4gJ2EyLCAnYjIsICdjMiwgJ2QyLCAnZTIsICdmMilcbiAgICAgICAgICAgZm10dHlfcmVsXG4gIHwgRm9ybWF0X3N1YnN0X3R5IDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICUoLi4uJSkgKilcbiAgICAgICgnZywgJ2gsICdpLCAnaiwgJ2ssICdsLFxuICAgICAgICdnMSwgJ2IxLCAnYzEsICdqMSwgJ2QxLCAnYTEpIGZtdHR5X3JlbCAqXG4gICAgICAoJ2csICdoLCAnaSwgJ2osICdrLCAnbCxcbiAgICAgICAnZzIsICdiMiwgJ2MyLCAnajIsICdkMiwgJ2EyKSBmbXR0eV9yZWwgKlxuICAgICAgKCdhMSwgJ2IxLCAnYzEsICdkMSwgJ2UxLCAnZjEsXG4gICAgICAgJ2EyLCAnYjIsICdjMiwgJ2QyLCAnZTIsICdmMikgZm10dHlfcmVsIC0+XG4gICAgICAoKCdnLCAnaCwgJ2ksICdqLCAnaywgJ2wpIGZvcm1hdDYgLT4gJ2cxLCAnYjEsICdjMSwgJ2oxLCAnZTEsICdmMSxcbiAgICAgICAoJ2csICdoLCAnaSwgJ2osICdrLCAnbCkgZm9ybWF0NiAtPiAnZzIsICdiMiwgJ2MyLCAnajIsICdlMiwgJ2YyKVxuICAgICAgICAgICBmbXR0eV9yZWxcblxuICAoKiBQcmludGYgYW5kIEZvcm1hdCBzcGVjaWZpYyBjb25zdHJ1Y3RvcnMuICopXG4gIHwgQWxwaGFfdHkgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICVhICAqKVxuICAgICAgKCdhMSwgJ2IxLCAnYzEsICdkMSwgJ2UxLCAnZjEsXG4gICAgICAgJ2EyLCAnYjIsICdjMiwgJ2QyLCAnZTIsICdmMikgZm10dHlfcmVsIC0+XG4gICAgICAoKCdiMSAtPiAneCAtPiAnYzEpIC0+ICd4IC0+ICdhMSwgJ2IxLCAnYzEsICdkMSwgJ2UxLCAnZjEsXG4gICAgICAgKCdiMiAtPiAneCAtPiAnYzIpIC0+ICd4IC0+ICdhMiwgJ2IyLCAnYzIsICdkMiwgJ2UyLCAnZjIpIGZtdHR5X3JlbFxuICB8IFRoZXRhX3R5IDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAldCAgKilcbiAgICAgICgnYTEsICdiMSwgJ2MxLCAnZDEsICdlMSwgJ2YxLFxuICAgICAgICdhMiwgJ2IyLCAnYzIsICdkMiwgJ2UyLCAnZjIpIGZtdHR5X3JlbCAtPlxuICAgICAgKCgnYjEgLT4gJ2MxKSAtPiAnYTEsICdiMSwgJ2MxLCAnZDEsICdlMSwgJ2YxLFxuICAgICAgICgnYjIgLT4gJ2MyKSAtPiAnYTIsICdiMiwgJ2MyLCAnZDIsICdlMiwgJ2YyKSBmbXR0eV9yZWxcbiAgfCBBbnlfdHkgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqIFVzZWQgZm9yIGN1c3RvbSBmb3JtYXRzICopXG4gICAgICAoJ2ExLCAnYjEsICdjMSwgJ2QxLCAnZTEsICdmMSxcbiAgICAgICAnYTIsICdiMiwgJ2MyLCAnZDIsICdlMiwgJ2YyKSBmbXR0eV9yZWwgLT5cbiAgICAgICgneCAtPiAnYTEsICdiMSwgJ2MxLCAnZDEsICdlMSwgJ2YxLFxuICAgICAgICd4IC0+ICdhMiwgJ2IyLCAnYzIsICdkMiwgJ2UyLCAnZjIpIGZtdHR5X3JlbFxuXG4gICgqIFNjYW5mIHNwZWNpZmljIGNvbnN0cnVjdG9yLiAqKVxuICB8IFJlYWRlcl90eSA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAlciAgKilcbiAgICAgICgnYTEsICdiMSwgJ2MxLCAnZDEsICdlMSwgJ2YxLFxuICAgICAgICdhMiwgJ2IyLCAnYzIsICdkMiwgJ2UyLCAnZjIpIGZtdHR5X3JlbCAtPlxuICAgICAgKCd4IC0+ICdhMSwgJ2IxLCAnYzEsICgnYjEgLT4gJ3gpIC0+ICdkMSwgJ2UxLCAnZjEsXG4gICAgICAgJ3ggLT4gJ2EyLCAnYjIsICdjMiwgKCdiMiAtPiAneCkgLT4gJ2QyLCAnZTIsICdmMikgZm10dHlfcmVsXG4gIHwgSWdub3JlZF9yZWFkZXJfdHkgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICVfciAgKilcbiAgICAgICgnYTEsICdiMSwgJ2MxLCAnZDEsICdlMSwgJ2YxLFxuICAgICAgICdhMiwgJ2IyLCAnYzIsICdkMiwgJ2UyLCAnZjIpIGZtdHR5X3JlbCAtPlxuICAgICAgKCdhMSwgJ2IxLCAnYzEsICgnYjEgLT4gJ3gpIC0+ICdkMSwgJ2UxLCAnZjEsXG4gICAgICAgJ2EyLCAnYjIsICdjMiwgKCdiMiAtPiAneCkgLT4gJ2QyLCAnZTIsICdmMikgZm10dHlfcmVsXG5cbiAgfCBFbmRfb2ZfZm10dHkgOlxuICAgICAgKCdmMSwgJ2IxLCAnYzEsICdkMSwgJ2QxLCAnZjEsXG4gICAgICAgJ2YyLCAnYjIsICdjMiwgJ2QyLCAnZDIsICdmMikgZm10dHlfcmVsXG5cbigqKiopXG5cbigqIExpc3Qgb2YgZm9ybWF0IGVsZW1lbnRzLiAqKVxuYW5kICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXQgPVxuICB8IENoYXIgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICVjICopXG4gICAgICAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10IC0+XG4gICAgICAgIChjaGFyIC0+ICdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdFxuICB8IENhbWxfY2hhciA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICVDICopXG4gICAgICAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10IC0+XG4gICAgICAgIChjaGFyIC0+ICdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdFxuICB8IFN0cmluZyA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICVzICopXG4gICAgICAoJ3gsIHN0cmluZyAtPiAnYSkgcGFkZGluZyAqICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXQgLT5cbiAgICAgICAgKCd4LCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdFxuICB8IENhbWxfc3RyaW5nIDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICVTICopXG4gICAgICAoJ3gsIHN0cmluZyAtPiAnYSkgcGFkZGluZyAqICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXQgLT5cbiAgICAgICAgKCd4LCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdFxuICB8IEludCA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICVbZGl4WHVvXSAqKVxuICAgICAgaW50X2NvbnYgKiAoJ3gsICd5KSBwYWRkaW5nICogKCd5LCBpbnQgLT4gJ2EpIHByZWNpc2lvbiAqXG4gICAgICAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10IC0+XG4gICAgICAgICgneCwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXRcbiAgfCBJbnQzMiA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAlbFtkaXhYdW9dICopXG4gICAgICBpbnRfY29udiAqICgneCwgJ3kpIHBhZGRpbmcgKiAoJ3ksIGludDMyIC0+ICdhKSBwcmVjaXNpb24gKlxuICAgICAgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdCAtPlxuICAgICAgICAoJ3gsICdiLCAnYywgJ2QsICdlLCAnZikgZm10XG4gIHwgTmF0aXZlaW50IDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJW5bZGl4WHVvXSAqKVxuICAgICAgaW50X2NvbnYgKiAoJ3gsICd5KSBwYWRkaW5nICogKCd5LCBuYXRpdmVpbnQgLT4gJ2EpIHByZWNpc2lvbiAqXG4gICAgICAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10IC0+XG4gICAgICAgICgneCwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXRcbiAgfCBJbnQ2NCA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAlTFtkaXhYdW9dICopXG4gICAgICBpbnRfY29udiAqICgneCwgJ3kpIHBhZGRpbmcgKiAoJ3ksIGludDY0IC0+ICdhKSBwcmVjaXNpb24gKlxuICAgICAgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdCAtPlxuICAgICAgICAoJ3gsICdiLCAnYywgJ2QsICdlLCAnZikgZm10XG4gIHwgRmxvYXQgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJVtmZUVnR0ZoSF0gKilcbiAgICAgIGZsb2F0X2NvbnYgKiAoJ3gsICd5KSBwYWRkaW5nICogKCd5LCBmbG9hdCAtPiAnYSkgcHJlY2lzaW9uICpcbiAgICAgICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXQgLT5cbiAgICAgICAgKCd4LCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdFxuICB8IEJvb2wgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICVbYkJdICopXG4gICAgICAoJ3gsIGJvb2wgLT4gJ2EpIHBhZGRpbmcgKiAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10IC0+XG4gICAgICAgICgneCwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXRcbiAgfCBGbHVzaCA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAlISAqKVxuICAgICAgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdCAtPlxuICAgICAgICAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10XG5cbiAgfCBTdHJpbmdfbGl0ZXJhbCA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiBhYmMgKilcbiAgICAgIHN0cmluZyAqICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXQgLT5cbiAgICAgICAgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdFxuICB8IENoYXJfbGl0ZXJhbCA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqIHggKilcbiAgICAgIGNoYXIgKiAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10IC0+XG4gICAgICAgICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXRcblxuICB8IEZvcm1hdF9hcmcgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICV7Li4uJX0gKilcbiAgICAgIHBhZF9vcHRpb24gKiAoJ2csICdoLCAnaSwgJ2osICdrLCAnbCkgZm10dHkgKlxuICAgICAgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdCAtPlxuICAgICAgICAoKCdnLCAnaCwgJ2ksICdqLCAnaywgJ2wpIGZvcm1hdDYgLT4gJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10XG4gIHwgRm9ybWF0X3N1YnN0IDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJSguLi4lKSAqKVxuICAgICAgcGFkX29wdGlvbiAqXG4gICAgICAoJ2csICdoLCAnaSwgJ2osICdrLCAnbCxcbiAgICAgICAnZzIsICdiLCAnYywgJ2oyLCAnZCwgJ2EpIGZtdHR5X3JlbCAqXG4gICAgICAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10IC0+XG4gICAgICAoKCdnLCAnaCwgJ2ksICdqLCAnaywgJ2wpIGZvcm1hdDYgLT4gJ2cyLCAnYiwgJ2MsICdqMiwgJ2UsICdmKSBmbXRcblxuICAoKiBQcmludGYgYW5kIEZvcm1hdCBzcGVjaWZpYyBjb25zdHJ1Y3Rvci4gKilcbiAgfCBBbHBoYSA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAlYSAqKVxuICAgICAgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdCAtPlxuICAgICAgICAoKCdiIC0+ICd4IC0+ICdjKSAtPiAneCAtPiAnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXRcbiAgfCBUaGV0YSA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAldCAqKVxuICAgICAgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdCAtPlxuICAgICAgICAoKCdiIC0+ICdjKSAtPiAnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXRcblxuICAoKiBGb3JtYXQgc3BlY2lmaWMgY29uc3RydWN0b3I6ICopXG4gIHwgRm9ybWF0dGluZ19saXQgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogQF8gKilcbiAgICAgIGZvcm1hdHRpbmdfbGl0ICogKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdCAtPlxuICAgICAgICAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10XG4gIHwgRm9ybWF0dGluZ19nZW4gOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqIEBfICopXG4gICAgICAoJ2ExLCAnYiwgJ2MsICdkMSwgJ2UxLCAnZjEpIGZvcm1hdHRpbmdfZ2VuICpcbiAgICAgICgnZjEsICdiLCAnYywgJ2UxLCAnZTIsICdmMikgZm10IC0+ICgnYTEsICdiLCAnYywgJ2QxLCAnZTIsICdmMikgZm10XG5cbiAgKCogU2NhbmYgc3BlY2lmaWMgY29uc3RydWN0b3JzOiAqKVxuICB8IFJlYWRlciA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICVyICopXG4gICAgICAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10IC0+XG4gICAgICAgICgneCAtPiAnYSwgJ2IsICdjLCAoJ2IgLT4gJ3gpIC0+ICdkLCAnZSwgJ2YpIGZtdFxuICB8IFNjYW5fY2hhcl9zZXQgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICVbLi4uXSAqKVxuICAgICAgcGFkX29wdGlvbiAqIGNoYXJfc2V0ICogKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdCAtPlxuICAgICAgICAoc3RyaW5nIC0+ICdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdFxuICB8IFNjYW5fZ2V0X2NvdW50ZXIgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICVbbmxOTF0gKilcbiAgICAgIGNvdW50ZXIgKiAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10IC0+XG4gICAgICAgIChpbnQgLT4gJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10XG4gIHwgU2Nhbl9uZXh0X2NoYXIgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJTBjICopXG4gICAgICAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10IC0+XG4gICAgICAoY2hhciAtPiAnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXRcbiAgfCBJZ25vcmVkX3BhcmFtIDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAlXyAqKVxuICAgICAgKCdhLCAnYiwgJ2MsICdkLCAneSwgJ3gpIGlnbm9yZWQgKiAoJ3gsICdiLCAnYywgJ3ksICdlLCAnZikgZm10IC0+XG4gICAgICAgICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXRcblxuICAoKiBDdXN0b20gcHJpbnRpbmcgZm9ybWF0IChQUiM2NDUyLCBHUFIjMTQwKVxuXG4gICAgIFdlIGluY2x1ZGUgYSB0eXBlIEN1c3RvbSBvZiBcImN1c3RvbSBjb252ZXJ0ZXJzXCIsIHdoZXJlIGFuXG4gICAgIGFyYml0cmFyeSBmdW5jdGlvbiBjYW4gYmUgdXNlZCB0byBjb252ZXJ0IG9uZSBvciBtb3JlXG4gICAgIGFyZ3VtZW50cy4gVGhlcmUgaXMgbm8gc3ludGF4IGZvciBjdXN0b20gY29udmVydGVycywgaXQgaXMgb25seVxuICAgICBpbnRlbmRlZCBmb3IgY3VzdG9tIHByb2Nlc3NvcnMgdGhhdCB3aXNoIHRvIHJlbHkgb24gdGhlXG4gICAgIHN0ZGxpYi1kZWZpbmVkIGZvcm1hdCBHQURUcy5cblxuICAgICBGb3IgaW5zdGFuY2UgYSBwcmUtcHJvY2Vzc29yIGNvdWxkIGNob29zZSB0byBpbnRlcnByZXQgc3RyaW5nc1xuICAgICBwcmVmaXhlZCB3aXRoIFtcIiFcIl0gYXMgZm9ybWF0IHN0cmluZ3Mgd2hlcmUgWyV7eyAuLi4gfX1dIGlzXG4gICAgIGEgc3BlY2lhbCBmb3JtIHRvIHBhc3MgYSB0b19zdHJpbmcgZnVuY3Rpb24sIHNvIHRoYXQgb25lIGNvdWxkXG4gICAgIHdyaXRlOlxuXG4gICAgIHtbXG4gICAgICAgdHlwZSB0ID0geyB4IDogaW50OyB5IDogaW50IH1cblxuICAgICAgIGxldCBzdHJpbmdfb2ZfdCB0ID0gUHJpbnRmLnNwcmludGYgXCJ7IHggPSAlZDsgeSA9ICVkIH1cIiB0LnggdC55XG5cbiAgICAgICBQcmludGYucHJpbnRmICFcInQgPSAle3tzdHJpbmdfb2ZfdH19XCIgeyB4ID0gNDI7IHkgPSA0MiB9XG4gICAgIF19XG4gICopXG4gIHwgQ3VzdG9tIDpcbiAgICAgICgnYSwgJ3gsICd5KSBjdXN0b21fYXJpdHkgKiAodW5pdCAtPiAneCkgKiAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10IC0+XG4gICAgICAoJ3ksICdiLCAnYywgJ2QsICdlLCAnZikgZm10XG5cbiAgKCogZW5kIG9mIGEgZm9ybWF0IHNwZWNpZmljYXRpb24gKilcbiAgfCBFbmRfb2ZfZm9ybWF0IDpcbiAgICAgICAgKCdmLCAnYiwgJ2MsICdlLCAnZSwgJ2YpIGZtdFxuXG4oKioqKVxuXG4oKiBUeXBlIGZvciBpZ25vcmVkIHBhcmFtZXRlcnMgKHNlZSBcIiVfXCIpLiAqKVxuYW5kICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBpZ25vcmVkID1cbiAgfCBJZ25vcmVkX2NoYXIgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAlX2MgKilcbiAgICAgICgnYSwgJ2IsICdjLCAnZCwgJ2QsICdhKSBpZ25vcmVkXG4gIHwgSWdub3JlZF9jYW1sX2NoYXIgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJV9DICopXG4gICAgICAoJ2EsICdiLCAnYywgJ2QsICdkLCAnYSkgaWdub3JlZFxuICB8IElnbm9yZWRfc3RyaW5nIDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICVfcyAqKVxuICAgICAgcGFkX29wdGlvbiAtPiAoJ2EsICdiLCAnYywgJ2QsICdkLCAnYSkgaWdub3JlZFxuICB8IElnbm9yZWRfY2FtbF9zdHJpbmcgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICVfUyAqKVxuICAgICAgcGFkX29wdGlvbiAtPiAoJ2EsICdiLCAnYywgJ2QsICdkLCAnYSkgaWdub3JlZFxuICB8IElnbm9yZWRfaW50IDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICVfZCAqKVxuICAgICAgaW50X2NvbnYgKiBwYWRfb3B0aW9uIC0+ICgnYSwgJ2IsICdjLCAnZCwgJ2QsICdhKSBpZ25vcmVkXG4gIHwgSWdub3JlZF9pbnQzMiA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJV9sZCAqKVxuICAgICAgaW50X2NvbnYgKiBwYWRfb3B0aW9uIC0+ICgnYSwgJ2IsICdjLCAnZCwgJ2QsICdhKSBpZ25vcmVkXG4gIHwgSWdub3JlZF9uYXRpdmVpbnQgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJV9uZCAqKVxuICAgICAgaW50X2NvbnYgKiBwYWRfb3B0aW9uIC0+ICgnYSwgJ2IsICdjLCAnZCwgJ2QsICdhKSBpZ25vcmVkXG4gIHwgSWdub3JlZF9pbnQ2NCA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJV9MZCAqKVxuICAgICAgaW50X2NvbnYgKiBwYWRfb3B0aW9uIC0+ICgnYSwgJ2IsICdjLCAnZCwgJ2QsICdhKSBpZ25vcmVkXG4gIHwgSWdub3JlZF9mbG9hdCA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJV9mICopXG4gICAgICBwYWRfb3B0aW9uICogcHJlY19vcHRpb24gLT4gKCdhLCAnYiwgJ2MsICdkLCAnZCwgJ2EpIGlnbm9yZWRcbiAgfCBJZ25vcmVkX2Jvb2wgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAlX0IgKilcbiAgICAgIHBhZF9vcHRpb24gLT4gKCdhLCAnYiwgJ2MsICdkLCAnZCwgJ2EpIGlnbm9yZWRcbiAgfCBJZ25vcmVkX2Zvcm1hdF9hcmcgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAlX3suLi4lfSAqKVxuICAgICAgcGFkX29wdGlvbiAqICgnZywgJ2gsICdpLCAnaiwgJ2ssICdsKSBmbXR0eSAtPlxuICAgICAgICAoJ2EsICdiLCAnYywgJ2QsICdkLCAnYSkgaWdub3JlZFxuICB8IElnbm9yZWRfZm9ybWF0X3N1YnN0IDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICVfKC4uLiUpICopXG4gICAgICBwYWRfb3B0aW9uICogKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdHR5IC0+XG4gICAgICAgICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBpZ25vcmVkXG4gIHwgSWdub3JlZF9yZWFkZXIgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJV9yICopXG4gICAgICAoJ2EsICdiLCAnYywgKCdiIC0+ICd4KSAtPiAnZCwgJ2QsICdhKSBpZ25vcmVkXG4gIHwgSWdub3JlZF9zY2FuX2NoYXJfc2V0IDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJV9bLi4uXSAqKVxuICAgICAgcGFkX29wdGlvbiAqIGNoYXJfc2V0IC0+ICgnYSwgJ2IsICdjLCAnZCwgJ2QsICdhKSBpZ25vcmVkXG4gIHwgSWdub3JlZF9zY2FuX2dldF9jb3VudGVyIDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJV9bbmxOTF0gKilcbiAgICAgIGNvdW50ZXIgLT4gKCdhLCAnYiwgJ2MsICdkLCAnZCwgJ2EpIGlnbm9yZWRcbiAgfCBJZ25vcmVkX3NjYW5fbmV4dF9jaGFyIDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAlXzBjICopXG4gICAgICAoJ2EsICdiLCAnYywgJ2QsICdkLCAnYSkgaWdub3JlZFxuXG5hbmQgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZvcm1hdDYgPVxuICBGb3JtYXQgb2YgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdCAqIHN0cmluZ1xuXG5sZXQgcmVjIGVyYXNlX3JlbCA6IHR5cGUgYSBiIGMgZCBlIGYgZyBoIGkgaiBrIGwgLlxuICAoYSwgYiwgYywgZCwgZSwgZixcbiAgIGcsIGgsIGksIGosIGssIGwpIGZtdHR5X3JlbCAtPiAoYSwgYiwgYywgZCwgZSwgZikgZm10dHlcbj0gZnVuY3Rpb25cbiAgfCBDaGFyX3R5IHJlc3QgLT5cbiAgICBDaGFyX3R5IChlcmFzZV9yZWwgcmVzdClcbiAgfCBTdHJpbmdfdHkgcmVzdCAtPlxuICAgIFN0cmluZ190eSAoZXJhc2VfcmVsIHJlc3QpXG4gIHwgSW50X3R5IHJlc3QgLT5cbiAgICBJbnRfdHkgKGVyYXNlX3JlbCByZXN0KVxuICB8IEludDMyX3R5IHJlc3QgLT5cbiAgICBJbnQzMl90eSAoZXJhc2VfcmVsIHJlc3QpXG4gIHwgSW50NjRfdHkgcmVzdCAtPlxuICAgIEludDY0X3R5IChlcmFzZV9yZWwgcmVzdClcbiAgfCBOYXRpdmVpbnRfdHkgcmVzdCAtPlxuICAgIE5hdGl2ZWludF90eSAoZXJhc2VfcmVsIHJlc3QpXG4gIHwgRmxvYXRfdHkgcmVzdCAtPlxuICAgIEZsb2F0X3R5IChlcmFzZV9yZWwgcmVzdClcbiAgfCBCb29sX3R5IHJlc3QgLT5cbiAgICBCb29sX3R5IChlcmFzZV9yZWwgcmVzdClcbiAgfCBGb3JtYXRfYXJnX3R5ICh0eSwgcmVzdCkgLT5cbiAgICBGb3JtYXRfYXJnX3R5ICh0eSwgZXJhc2VfcmVsIHJlc3QpXG4gIHwgRm9ybWF0X3N1YnN0X3R5ICh0eTEsIF90eTIsIHJlc3QpIC0+XG4gICAgRm9ybWF0X3N1YnN0X3R5ICh0eTEsIHR5MSwgZXJhc2VfcmVsIHJlc3QpXG4gIHwgQWxwaGFfdHkgcmVzdCAtPlxuICAgIEFscGhhX3R5IChlcmFzZV9yZWwgcmVzdClcbiAgfCBUaGV0YV90eSByZXN0IC0+XG4gICAgVGhldGFfdHkgKGVyYXNlX3JlbCByZXN0KVxuICB8IEFueV90eSByZXN0IC0+XG4gICAgQW55X3R5IChlcmFzZV9yZWwgcmVzdClcbiAgfCBSZWFkZXJfdHkgcmVzdCAtPlxuICAgIFJlYWRlcl90eSAoZXJhc2VfcmVsIHJlc3QpXG4gIHwgSWdub3JlZF9yZWFkZXJfdHkgcmVzdCAtPlxuICAgIElnbm9yZWRfcmVhZGVyX3R5IChlcmFzZV9yZWwgcmVzdClcbiAgfCBFbmRfb2ZfZm10dHkgLT4gRW5kX29mX2ZtdHR5XG5cbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4gICAgICAgICAgICAgICAgICAgICAgICAgKCogRm9ybWF0IHR5cGUgY29uY2F0ZW5hdGlvbiAqKVxuXG4oKiBDb25jYXRlbmF0ZSB0d28gZm9ybWF0IHR5cGVzLiAqKVxuKCogVXNlZCBieTpcbiAgICogcmVhZGVyX25iX3VuaWZpZXJfb2ZfZm10dHkgdG8gY291bnQgcmVhZGVycyBpbiBhbiBmbXR0eSxcbiAgICogU2NhbmYudGFrZV9mbXR0eV9mb3JtYXRfcmVhZGVycyB0byBleHRyYWN0IHJlYWRlcnMgaW5zaWRlICUoLi4uJSksXG4gICAqIENhbWxpbnRlcm5hbEZvcm1hdC5mbXR0eV9vZl9pZ25vcmVkX2Zvcm1hdCB0byBleHRyYWN0IGZvcm1hdCB0eXBlLiAqKVxuXG4oKlxubGV0IHJlYyBjb25jYXRfZm10dHkgOiB0eXBlIGEgYiBjIGQgZSBmIGcgaCAuXG4gICAgKGEsIGIsIGMsIGQsIGUsIGYpIGZtdHR5IC0+XG4gICAgKGYsIGIsIGMsIGUsIGcsIGgpIGZtdHR5IC0+XG4gICAgKGEsIGIsIGMsIGQsIGcsIGgpIGZtdHR5ID1cbiopXG5sZXQgcmVjIGNvbmNhdF9mbXR0eSA6XG4gIHR5cGUgYTEgYjEgYzEgZDEgZTEgZjFcbiAgICAgICBhMiBiMiBjMiBkMiBlMiBmMlxuICAgICAgIGcxIGoxIGcyIGoyXG4gIC5cbiAgICAoZzEsIGIxLCBjMSwgajEsIGQxLCBhMSxcbiAgICAgZzIsIGIyLCBjMiwgajIsIGQyLCBhMikgZm10dHlfcmVsIC0+XG4gICAgKGExLCBiMSwgYzEsIGQxLCBlMSwgZjEsXG4gICAgIGEyLCBiMiwgYzIsIGQyLCBlMiwgZjIpIGZtdHR5X3JlbCAtPlxuICAgIChnMSwgYjEsIGMxLCBqMSwgZTEsIGYxLFxuICAgICBnMiwgYjIsIGMyLCBqMiwgZTIsIGYyKSBmbXR0eV9yZWwgPVxuZnVuIGZtdHR5MSBmbXR0eTIgLT4gbWF0Y2ggZm10dHkxIHdpdGhcbiAgfCBDaGFyX3R5IHJlc3QgLT5cbiAgICBDaGFyX3R5IChjb25jYXRfZm10dHkgcmVzdCBmbXR0eTIpXG4gIHwgU3RyaW5nX3R5IHJlc3QgLT5cbiAgICBTdHJpbmdfdHkgKGNvbmNhdF9mbXR0eSByZXN0IGZtdHR5MilcbiAgfCBJbnRfdHkgcmVzdCAtPlxuICAgIEludF90eSAoY29uY2F0X2ZtdHR5IHJlc3QgZm10dHkyKVxuICB8IEludDMyX3R5IHJlc3QgLT5cbiAgICBJbnQzMl90eSAoY29uY2F0X2ZtdHR5IHJlc3QgZm10dHkyKVxuICB8IE5hdGl2ZWludF90eSByZXN0IC0+XG4gICAgTmF0aXZlaW50X3R5IChjb25jYXRfZm10dHkgcmVzdCBmbXR0eTIpXG4gIHwgSW50NjRfdHkgcmVzdCAtPlxuICAgIEludDY0X3R5IChjb25jYXRfZm10dHkgcmVzdCBmbXR0eTIpXG4gIHwgRmxvYXRfdHkgcmVzdCAtPlxuICAgIEZsb2F0X3R5IChjb25jYXRfZm10dHkgcmVzdCBmbXR0eTIpXG4gIHwgQm9vbF90eSByZXN0IC0+XG4gICAgQm9vbF90eSAoY29uY2F0X2ZtdHR5IHJlc3QgZm10dHkyKVxuICB8IEFscGhhX3R5IHJlc3QgLT5cbiAgICBBbHBoYV90eSAoY29uY2F0X2ZtdHR5IHJlc3QgZm10dHkyKVxuICB8IFRoZXRhX3R5IHJlc3QgLT5cbiAgICBUaGV0YV90eSAoY29uY2F0X2ZtdHR5IHJlc3QgZm10dHkyKVxuICB8IEFueV90eSByZXN0IC0+XG4gICAgQW55X3R5IChjb25jYXRfZm10dHkgcmVzdCBmbXR0eTIpXG4gIHwgUmVhZGVyX3R5IHJlc3QgLT5cbiAgICBSZWFkZXJfdHkgKGNvbmNhdF9mbXR0eSByZXN0IGZtdHR5MilcbiAgfCBJZ25vcmVkX3JlYWRlcl90eSByZXN0IC0+XG4gICAgSWdub3JlZF9yZWFkZXJfdHkgKGNvbmNhdF9mbXR0eSByZXN0IGZtdHR5MilcbiAgfCBGb3JtYXRfYXJnX3R5ICh0eSwgcmVzdCkgLT5cbiAgICBGb3JtYXRfYXJnX3R5ICh0eSwgY29uY2F0X2ZtdHR5IHJlc3QgZm10dHkyKVxuICB8IEZvcm1hdF9zdWJzdF90eSAodHkxLCB0eTIsIHJlc3QpIC0+XG4gICAgRm9ybWF0X3N1YnN0X3R5ICh0eTEsIHR5MiwgY29uY2F0X2ZtdHR5IHJlc3QgZm10dHkyKVxuICB8IEVuZF9vZl9mbXR0eSAtPiBmbXR0eTJcblxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICgqIEZvcm1hdCBjb25jYXRlbmF0aW9uICopXG5cbigqIENvbmNhdGVuYXRlIHR3byBmb3JtYXRzLiAqKVxubGV0IHJlYyBjb25jYXRfZm10IDogdHlwZSBhIGIgYyBkIGUgZiBnIGggLlxuICAgIChhLCBiLCBjLCBkLCBlLCBmKSBmbXQgLT5cbiAgICAoZiwgYiwgYywgZSwgZywgaCkgZm10IC0+XG4gICAgKGEsIGIsIGMsIGQsIGcsIGgpIGZtdCA9XG5mdW4gZm10MSBmbXQyIC0+IG1hdGNoIGZtdDEgd2l0aFxuICB8IFN0cmluZyAocGFkLCByZXN0KSAtPlxuICAgIFN0cmluZyAocGFkLCBjb25jYXRfZm10IHJlc3QgZm10MilcbiAgfCBDYW1sX3N0cmluZyAocGFkLCByZXN0KSAtPlxuICAgIENhbWxfc3RyaW5nIChwYWQsIGNvbmNhdF9mbXQgcmVzdCBmbXQyKVxuXG4gIHwgSW50IChpY29udiwgcGFkLCBwcmVjLCByZXN0KSAtPlxuICAgIEludCAoaWNvbnYsIHBhZCwgcHJlYywgY29uY2F0X2ZtdCByZXN0IGZtdDIpXG4gIHwgSW50MzIgKGljb252LCBwYWQsIHByZWMsIHJlc3QpIC0+XG4gICAgSW50MzIgKGljb252LCBwYWQsIHByZWMsIGNvbmNhdF9mbXQgcmVzdCBmbXQyKVxuICB8IE5hdGl2ZWludCAoaWNvbnYsIHBhZCwgcHJlYywgcmVzdCkgLT5cbiAgICBOYXRpdmVpbnQgKGljb252LCBwYWQsIHByZWMsIGNvbmNhdF9mbXQgcmVzdCBmbXQyKVxuICB8IEludDY0IChpY29udiwgcGFkLCBwcmVjLCByZXN0KSAtPlxuICAgIEludDY0IChpY29udiwgcGFkLCBwcmVjLCBjb25jYXRfZm10IHJlc3QgZm10MilcbiAgfCBGbG9hdCAoZmNvbnYsIHBhZCwgcHJlYywgcmVzdCkgLT5cbiAgICBGbG9hdCAoZmNvbnYsIHBhZCwgcHJlYywgY29uY2F0X2ZtdCByZXN0IGZtdDIpXG5cbiAgfCBDaGFyIChyZXN0KSAtPlxuICAgIENoYXIgKGNvbmNhdF9mbXQgcmVzdCBmbXQyKVxuICB8IENhbWxfY2hhciByZXN0IC0+XG4gICAgQ2FtbF9jaGFyIChjb25jYXRfZm10IHJlc3QgZm10MilcbiAgfCBCb29sIChwYWQsIHJlc3QpIC0+XG4gICAgQm9vbCAocGFkLCBjb25jYXRfZm10IHJlc3QgZm10MilcbiAgfCBBbHBoYSByZXN0IC0+XG4gICAgQWxwaGEgKGNvbmNhdF9mbXQgcmVzdCBmbXQyKVxuICB8IFRoZXRhIHJlc3QgLT5cbiAgICBUaGV0YSAoY29uY2F0X2ZtdCByZXN0IGZtdDIpXG4gIHwgQ3VzdG9tIChhcml0eSwgZiwgcmVzdCkgLT5cbiAgICBDdXN0b20gKGFyaXR5LCBmLCBjb25jYXRfZm10IHJlc3QgZm10MilcbiAgfCBSZWFkZXIgcmVzdCAtPlxuICAgIFJlYWRlciAoY29uY2F0X2ZtdCByZXN0IGZtdDIpXG4gIHwgRmx1c2ggcmVzdCAtPlxuICAgIEZsdXNoIChjb25jYXRfZm10IHJlc3QgZm10MilcblxuICB8IFN0cmluZ19saXRlcmFsIChzdHIsIHJlc3QpIC0+XG4gICAgU3RyaW5nX2xpdGVyYWwgKHN0ciwgY29uY2F0X2ZtdCByZXN0IGZtdDIpXG4gIHwgQ2hhcl9saXRlcmFsIChjaHIsIHJlc3QpIC0+XG4gICAgQ2hhcl9saXRlcmFsICAgKGNociwgY29uY2F0X2ZtdCByZXN0IGZtdDIpXG5cbiAgfCBGb3JtYXRfYXJnIChwYWQsIGZtdHR5LCByZXN0KSAtPlxuICAgIEZvcm1hdF9hcmcgICAocGFkLCBmbXR0eSwgY29uY2F0X2ZtdCByZXN0IGZtdDIpXG4gIHwgRm9ybWF0X3N1YnN0IChwYWQsIGZtdHR5LCByZXN0KSAtPlxuICAgIEZvcm1hdF9zdWJzdCAocGFkLCBmbXR0eSwgY29uY2F0X2ZtdCByZXN0IGZtdDIpXG5cbiAgfCBTY2FuX2NoYXJfc2V0ICh3aWR0aF9vcHQsIGNoYXJfc2V0LCByZXN0KSAtPlxuICAgIFNjYW5fY2hhcl9zZXQgKHdpZHRoX29wdCwgY2hhcl9zZXQsIGNvbmNhdF9mbXQgcmVzdCBmbXQyKVxuICB8IFNjYW5fZ2V0X2NvdW50ZXIgKGNvdW50ZXIsIHJlc3QpIC0+XG4gICAgU2Nhbl9nZXRfY291bnRlciAoY291bnRlciwgY29uY2F0X2ZtdCByZXN0IGZtdDIpXG4gIHwgU2Nhbl9uZXh0X2NoYXIgKHJlc3QpIC0+XG4gICAgU2Nhbl9uZXh0X2NoYXIgKGNvbmNhdF9mbXQgcmVzdCBmbXQyKVxuICB8IElnbm9yZWRfcGFyYW0gKGlnbiwgcmVzdCkgLT5cbiAgICBJZ25vcmVkX3BhcmFtIChpZ24sIGNvbmNhdF9mbXQgcmVzdCBmbXQyKVxuXG4gIHwgRm9ybWF0dGluZ19saXQgKGZtdGluZ19saXQsIHJlc3QpIC0+XG4gICAgRm9ybWF0dGluZ19saXQgKGZtdGluZ19saXQsIGNvbmNhdF9mbXQgcmVzdCBmbXQyKVxuICB8IEZvcm1hdHRpbmdfZ2VuIChmbXRpbmdfZ2VuLCByZXN0KSAtPlxuICAgIEZvcm1hdHRpbmdfZ2VuIChmbXRpbmdfZ2VuLCBjb25jYXRfZm10IHJlc3QgZm10MilcblxuICB8IEVuZF9vZl9mb3JtYXQgLT5cbiAgICBmbXQyXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICBHYWJyaWVsIFNjaGVyZXIsIHByb2pldCBQYXJ0b3V0LCBJTlJJQSBQYXJpcy1TYWNsYXkgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAyMDIwIEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbigqIENhbWxpbnRlcm5hbEF0b21pYyBpcyBhIGRlcGVuZGVuY3kgb2YgU3RkbGliLCBzbyBpdCBpcyBjb21waWxlZCB3aXRoXG4gICAtbm9wZXJ2YXNpdmVzLiAqKVxuZXh0ZXJuYWwgKCA9PSApIDogJ2EgLT4gJ2EgLT4gYm9vbCA9IFwiJWVxXCJcbmV4dGVybmFsICggKyApIDogaW50IC0+IGludCAtPiBpbnQgPSBcIiVhZGRpbnRcIlxuZXh0ZXJuYWwgaWdub3JlIDogJ2EgLT4gdW5pdCA9IFwiJWlnbm9yZVwiXG5cbigqIFdlIGFyZSBub3QgcmV1c2luZyAoJ2EgcmVmKSBkaXJlY3RseSB0byBtYWtlIGl0IGVhc2llciB0byByZWFzb25cbiAgIGFib3V0IGF0b21pY2l0eSBpZiB3ZSB3aXNoIHRvOiBldmVuIGluIGEgc2VxdWVudGlhbCBpbXBsZW1lbnRhdGlvbixcbiAgIHNpZ25hbHMgYW5kIG90aGVyIGFzeW5jaHJvbm91cyBjYWxsYmFja3MgbWlnaHQgYnJlYWsgYXRvbWljaXR5LiAqKVxudHlwZSAnYSB0ID0ge211dGFibGUgdjogJ2F9XG5cbmxldCBtYWtlIHYgPSB7dn1cbmxldCBnZXQgciA9IHIudlxubGV0IHNldCByIHYgPSByLnYgPC0gdlxuXG4oKiBUaGUgZm9sbG93aW5nIGZ1bmN0aW9ucyBhcmUgc2V0IHRvIG5ldmVyIGJlIGlubGluZWQ6IEZsYW1iZGEgaXNcbiAgIGFsbG93ZWQgdG8gbW92ZSBzdXJyb3VuZGluZyBjb2RlIGluc2lkZSB0aGUgY3JpdGljYWwgc2VjdGlvbixcbiAgIGluY2x1ZGluZyBhbGxvY2F0aW9ucy4gKilcblxubGV0W0BpbmxpbmUgbmV2ZXJdIGV4Y2hhbmdlIHIgdiA9XG4gICgqIEJFR0lOIEFUT01JQyAqKVxuICBsZXQgY3VyID0gci52IGluXG4gIHIudiA8LSB2O1xuICAoKiBFTkQgQVRPTUlDICopXG4gIGN1clxuXG5sZXRbQGlubGluZSBuZXZlcl0gY29tcGFyZV9hbmRfc2V0IHIgc2VlbiB2ID1cbiAgKCogQkVHSU4gQVRPTUlDICopXG4gIGxldCBjdXIgPSByLnYgaW5cbiAgaWYgY3VyID09IHNlZW4gdGhlbiAoXG4gICAgci52IDwtIHY7XG4gICAgKCogRU5EIEFUT01JQyAqKVxuICAgIHRydWVcbiAgKSBlbHNlXG4gICAgZmFsc2VcblxubGV0W0BpbmxpbmUgbmV2ZXJdIGZldGNoX2FuZF9hZGQgciBuID1cbiAgKCogQkVHSU4gQVRPTUlDICopXG4gIGxldCBjdXIgPSByLnYgaW5cbiAgci52IDwtIChjdXIgKyBuKTtcbiAgKCogRU5EIEFUT01JQyAqKVxuICBjdXJcblxubGV0IGluY3IgciA9IGlnbm9yZSAoZmV0Y2hfYW5kX2FkZCByIDEpXG5sZXQgZGVjciByID0gaWdub3JlIChmZXRjaF9hbmRfYWRkIHIgKC0xKSlcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgIFhhdmllciBMZXJveSwgcHJvamV0IENyaXN0YWwsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDE5OTYgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuKCogRXhjZXB0aW9ucyAqKVxuXG5leHRlcm5hbCByZWdpc3Rlcl9uYW1lZF92YWx1ZSA6IHN0cmluZyAtPiAnYSAtPiB1bml0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IFwiY2FtbF9yZWdpc3Rlcl9uYW1lZF92YWx1ZVwiXG5cbmxldCAoKSA9XG4gICgqIGZvciBydW50aW1lL2ZhaWxfbmF0LmMgKilcbiAgcmVnaXN0ZXJfbmFtZWRfdmFsdWUgXCJQZXJ2YXNpdmVzLmFycmF5X2JvdW5kX2Vycm9yXCJcbiAgICAoSW52YWxpZF9hcmd1bWVudCBcImluZGV4IG91dCBvZiBib3VuZHNcIilcblxuZXh0ZXJuYWwgcmFpc2UgOiBleG4gLT4gJ2EgPSBcIiVyYWlzZVwiXG5leHRlcm5hbCByYWlzZV9ub3RyYWNlIDogZXhuIC0+ICdhID0gXCIlcmFpc2Vfbm90cmFjZVwiXG5cbmxldCBmYWlsd2l0aCBzID0gcmFpc2UoRmFpbHVyZSBzKVxubGV0IGludmFsaWRfYXJnIHMgPSByYWlzZShJbnZhbGlkX2FyZ3VtZW50IHMpXG5cbmV4Y2VwdGlvbiBFeGl0XG5leGNlcHRpb24gTWF0Y2hfZmFpbHVyZSA9IE1hdGNoX2ZhaWx1cmVcbmV4Y2VwdGlvbiBBc3NlcnRfZmFpbHVyZSA9IEFzc2VydF9mYWlsdXJlXG5leGNlcHRpb24gSW52YWxpZF9hcmd1bWVudCA9IEludmFsaWRfYXJndW1lbnRcbmV4Y2VwdGlvbiBGYWlsdXJlID0gRmFpbHVyZVxuZXhjZXB0aW9uIE5vdF9mb3VuZCA9IE5vdF9mb3VuZFxuZXhjZXB0aW9uIE91dF9vZl9tZW1vcnkgPSBPdXRfb2ZfbWVtb3J5XG5leGNlcHRpb24gU3RhY2tfb3ZlcmZsb3cgPSBTdGFja19vdmVyZmxvd1xuZXhjZXB0aW9uIFN5c19lcnJvciA9IFN5c19lcnJvclxuZXhjZXB0aW9uIEVuZF9vZl9maWxlID0gRW5kX29mX2ZpbGVcbmV4Y2VwdGlvbiBEaXZpc2lvbl9ieV96ZXJvID0gRGl2aXNpb25fYnlfemVyb1xuZXhjZXB0aW9uIFN5c19ibG9ja2VkX2lvID0gU3lzX2Jsb2NrZWRfaW9cbmV4Y2VwdGlvbiBVbmRlZmluZWRfcmVjdXJzaXZlX21vZHVsZSA9IFVuZGVmaW5lZF9yZWN1cnNpdmVfbW9kdWxlXG5cbigqIENvbXBvc2l0aW9uIG9wZXJhdG9ycyAqKVxuXG5leHRlcm5hbCAoIHw+ICkgOiAnYSAtPiAoJ2EgLT4gJ2IpIC0+ICdiID0gXCIlcmV2YXBwbHlcIlxuZXh0ZXJuYWwgKCBAQCApIDogKCdhIC0+ICdiKSAtPiAnYSAtPiAnYiA9IFwiJWFwcGx5XCJcblxuKCogRGVidWdnaW5nICopXG5cbmV4dGVybmFsIF9fTE9DX18gOiBzdHJpbmcgPSBcIiVsb2NfTE9DXCJcbmV4dGVybmFsIF9fRklMRV9fIDogc3RyaW5nID0gXCIlbG9jX0ZJTEVcIlxuZXh0ZXJuYWwgX19MSU5FX18gOiBpbnQgPSBcIiVsb2NfTElORVwiXG5leHRlcm5hbCBfX01PRFVMRV9fIDogc3RyaW5nID0gXCIlbG9jX01PRFVMRVwiXG5leHRlcm5hbCBfX1BPU19fIDogc3RyaW5nICogaW50ICogaW50ICogaW50ID0gXCIlbG9jX1BPU1wiXG5leHRlcm5hbCBfX0ZVTkNUSU9OX18gOiBzdHJpbmcgPSBcIiVsb2NfRlVOQ1RJT05cIlxuXG5leHRlcm5hbCBfX0xPQ19PRl9fIDogJ2EgLT4gc3RyaW5nICogJ2EgPSBcIiVsb2NfTE9DXCJcbmV4dGVybmFsIF9fTElORV9PRl9fIDogJ2EgLT4gaW50ICogJ2EgPSBcIiVsb2NfTElORVwiXG5leHRlcm5hbCBfX1BPU19PRl9fIDogJ2EgLT4gKHN0cmluZyAqIGludCAqIGludCAqIGludCkgKiAnYSA9IFwiJWxvY19QT1NcIlxuXG4oKiBDb21wYXJpc29ucyAqKVxuXG5leHRlcm5hbCAoID0gKSA6ICdhIC0+ICdhIC0+IGJvb2wgPSBcIiVlcXVhbFwiXG5leHRlcm5hbCAoIDw+ICkgOiAnYSAtPiAnYSAtPiBib29sID0gXCIlbm90ZXF1YWxcIlxuZXh0ZXJuYWwgKCA8ICkgOiAnYSAtPiAnYSAtPiBib29sID0gXCIlbGVzc3RoYW5cIlxuZXh0ZXJuYWwgKCA+ICkgOiAnYSAtPiAnYSAtPiBib29sID0gXCIlZ3JlYXRlcnRoYW5cIlxuZXh0ZXJuYWwgKCA8PSApIDogJ2EgLT4gJ2EgLT4gYm9vbCA9IFwiJWxlc3NlcXVhbFwiXG5leHRlcm5hbCAoID49ICkgOiAnYSAtPiAnYSAtPiBib29sID0gXCIlZ3JlYXRlcmVxdWFsXCJcbmV4dGVybmFsIGNvbXBhcmUgOiAnYSAtPiAnYSAtPiBpbnQgPSBcIiVjb21wYXJlXCJcblxubGV0IG1pbiB4IHkgPSBpZiB4IDw9IHkgdGhlbiB4IGVsc2UgeVxubGV0IG1heCB4IHkgPSBpZiB4ID49IHkgdGhlbiB4IGVsc2UgeVxuXG5leHRlcm5hbCAoID09ICkgOiAnYSAtPiAnYSAtPiBib29sID0gXCIlZXFcIlxuZXh0ZXJuYWwgKCAhPSApIDogJ2EgLT4gJ2EgLT4gYm9vbCA9IFwiJW5vdGVxXCJcblxuKCogQm9vbGVhbiBvcGVyYXRpb25zICopXG5cbmV4dGVybmFsIG5vdCA6IGJvb2wgLT4gYm9vbCA9IFwiJWJvb2xub3RcIlxuZXh0ZXJuYWwgKCAmICkgOiBib29sIC0+IGJvb2wgLT4gYm9vbCA9IFwiJXNlcXVhbmRcIlxuZXh0ZXJuYWwgKCAmJiApIDogYm9vbCAtPiBib29sIC0+IGJvb2wgPSBcIiVzZXF1YW5kXCJcbmV4dGVybmFsICggb3IgKSA6IGJvb2wgLT4gYm9vbCAtPiBib29sID0gXCIlc2VxdW9yXCJcbmV4dGVybmFsICggfHwgKSA6IGJvb2wgLT4gYm9vbCAtPiBib29sID0gXCIlc2VxdW9yXCJcblxuKCogSW50ZWdlciBvcGVyYXRpb25zICopXG5cbmV4dGVybmFsICggfi0gKSA6IGludCAtPiBpbnQgPSBcIiVuZWdpbnRcIlxuZXh0ZXJuYWwgKCB+KyApIDogaW50IC0+IGludCA9IFwiJWlkZW50aXR5XCJcbmV4dGVybmFsIHN1Y2MgOiBpbnQgLT4gaW50ID0gXCIlc3VjY2ludFwiXG5leHRlcm5hbCBwcmVkIDogaW50IC0+IGludCA9IFwiJXByZWRpbnRcIlxuZXh0ZXJuYWwgKCArICkgOiBpbnQgLT4gaW50IC0+IGludCA9IFwiJWFkZGludFwiXG5leHRlcm5hbCAoIC0gKSA6IGludCAtPiBpbnQgLT4gaW50ID0gXCIlc3ViaW50XCJcbmV4dGVybmFsICggKiApIDogaW50IC0+IGludCAtPiBpbnQgPSBcIiVtdWxpbnRcIlxuZXh0ZXJuYWwgKCAvICkgOiBpbnQgLT4gaW50IC0+IGludCA9IFwiJWRpdmludFwiXG5leHRlcm5hbCAoIG1vZCApIDogaW50IC0+IGludCAtPiBpbnQgPSBcIiVtb2RpbnRcIlxuXG5sZXQgYWJzIHggPSBpZiB4ID49IDAgdGhlbiB4IGVsc2UgLXhcblxuZXh0ZXJuYWwgKCBsYW5kICkgOiBpbnQgLT4gaW50IC0+IGludCA9IFwiJWFuZGludFwiXG5leHRlcm5hbCAoIGxvciApIDogaW50IC0+IGludCAtPiBpbnQgPSBcIiVvcmludFwiXG5leHRlcm5hbCAoIGx4b3IgKSA6IGludCAtPiBpbnQgLT4gaW50ID0gXCIleG9yaW50XCJcblxubGV0IGxub3QgeCA9IHggbHhvciAoLTEpXG5cbmV4dGVybmFsICggbHNsICkgOiBpbnQgLT4gaW50IC0+IGludCA9IFwiJWxzbGludFwiXG5leHRlcm5hbCAoIGxzciApIDogaW50IC0+IGludCAtPiBpbnQgPSBcIiVsc3JpbnRcIlxuZXh0ZXJuYWwgKCBhc3IgKSA6IGludCAtPiBpbnQgLT4gaW50ID0gXCIlYXNyaW50XCJcblxubGV0IG1heF9pbnQgPSAoLTEpIGxzciAxXG5sZXQgbWluX2ludCA9IG1heF9pbnQgKyAxXG5cbigqIEZsb2F0aW5nLXBvaW50IG9wZXJhdGlvbnMgKilcblxuZXh0ZXJuYWwgKCB+LS4gKSA6IGZsb2F0IC0+IGZsb2F0ID0gXCIlbmVnZmxvYXRcIlxuZXh0ZXJuYWwgKCB+Ky4gKSA6IGZsb2F0IC0+IGZsb2F0ID0gXCIlaWRlbnRpdHlcIlxuZXh0ZXJuYWwgKCArLiApIDogZmxvYXQgLT4gZmxvYXQgLT4gZmxvYXQgPSBcIiVhZGRmbG9hdFwiXG5leHRlcm5hbCAoIC0uICkgOiBmbG9hdCAtPiBmbG9hdCAtPiBmbG9hdCA9IFwiJXN1YmZsb2F0XCJcbmV4dGVybmFsICggKi4gKSA6IGZsb2F0IC0+IGZsb2F0IC0+IGZsb2F0ID0gXCIlbXVsZmxvYXRcIlxuZXh0ZXJuYWwgKCAvLiApIDogZmxvYXQgLT4gZmxvYXQgLT4gZmxvYXQgPSBcIiVkaXZmbG9hdFwiXG5leHRlcm5hbCAoICoqICkgOiBmbG9hdCAtPiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9wb3dlcl9mbG9hdFwiIFwicG93XCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGV4cCA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX2V4cF9mbG9hdFwiIFwiZXhwXCIgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGV4cG0xIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfZXhwbTFfZmxvYXRcIiBcImNhbWxfZXhwbTFcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgYWNvcyA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX2Fjb3NfZmxvYXRcIiBcImFjb3NcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgYXNpbiA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX2FzaW5fZmxvYXRcIiBcImFzaW5cIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgYXRhbiA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX2F0YW5fZmxvYXRcIiBcImF0YW5cIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgYXRhbjIgOiBmbG9hdCAtPiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9hdGFuMl9mbG9hdFwiIFwiYXRhbjJcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgaHlwb3QgOiBmbG9hdCAtPiBmbG9hdCAtPiBmbG9hdFxuICAgICAgICAgICAgICAgPSBcImNhbWxfaHlwb3RfZmxvYXRcIiBcImNhbWxfaHlwb3RcIiBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgY29zIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfY29zX2Zsb2F0XCIgXCJjb3NcIiBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgY29zaCA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX2Nvc2hfZmxvYXRcIiBcImNvc2hcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgYWNvc2ggOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9hY29zaF9mbG9hdFwiIFwiY2FtbF9hY29zaFwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBsb2cgOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9sb2dfZmxvYXRcIiBcImxvZ1wiIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBsb2cxMCA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX2xvZzEwX2Zsb2F0XCIgXCJsb2cxMFwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBsb2cxcCA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX2xvZzFwX2Zsb2F0XCIgXCJjYW1sX2xvZzFwXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIHNpbiA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX3Npbl9mbG9hdFwiIFwic2luXCIgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIHNpbmggOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9zaW5oX2Zsb2F0XCIgXCJzaW5oXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGFzaW5oIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfYXNpbmhfZmxvYXRcIiBcImNhbWxfYXNpbmhcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgc3FydCA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX3NxcnRfZmxvYXRcIiBcInNxcnRcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgdGFuIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfdGFuX2Zsb2F0XCIgXCJ0YW5cIiBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgdGFuaCA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX3RhbmhfZmxvYXRcIiBcInRhbmhcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgYXRhbmggOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9hdGFuaF9mbG9hdFwiIFwiY2FtbF9hdGFuaFwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBjZWlsIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfY2VpbF9mbG9hdFwiIFwiY2VpbFwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBmbG9vciA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX2Zsb29yX2Zsb2F0XCIgXCJmbG9vclwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBhYnNfZmxvYXQgOiBmbG9hdCAtPiBmbG9hdCA9IFwiJWFic2Zsb2F0XCJcbmV4dGVybmFsIGNvcHlzaWduIDogZmxvYXQgLT4gZmxvYXQgLT4gZmxvYXRcbiAgICAgICAgICAgICAgICAgID0gXCJjYW1sX2NvcHlzaWduX2Zsb2F0XCIgXCJjYW1sX2NvcHlzaWduXCJcbiAgICAgICAgICAgICAgICAgIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBtb2RfZmxvYXQgOiBmbG9hdCAtPiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9mbW9kX2Zsb2F0XCIgXCJmbW9kXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGZyZXhwIDogZmxvYXQgLT4gZmxvYXQgKiBpbnQgPSBcImNhbWxfZnJleHBfZmxvYXRcIlxuZXh0ZXJuYWwgbGRleHAgOiAoZmxvYXQgW0B1bmJveGVkXSkgLT4gKGludCBbQHVudGFnZ2VkXSkgLT4gKGZsb2F0IFtAdW5ib3hlZF0pID1cbiAgXCJjYW1sX2xkZXhwX2Zsb2F0XCIgXCJjYW1sX2xkZXhwX2Zsb2F0X3VuYm94ZWRcIiBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgbW9kZiA6IGZsb2F0IC0+IGZsb2F0ICogZmxvYXQgPSBcImNhbWxfbW9kZl9mbG9hdFwiXG5leHRlcm5hbCBmbG9hdCA6IGludCAtPiBmbG9hdCA9IFwiJWZsb2F0b2ZpbnRcIlxuZXh0ZXJuYWwgZmxvYXRfb2ZfaW50IDogaW50IC0+IGZsb2F0ID0gXCIlZmxvYXRvZmludFwiXG5leHRlcm5hbCB0cnVuY2F0ZSA6IGZsb2F0IC0+IGludCA9IFwiJWludG9mZmxvYXRcIlxuZXh0ZXJuYWwgaW50X29mX2Zsb2F0IDogZmxvYXQgLT4gaW50ID0gXCIlaW50b2ZmbG9hdFwiXG5leHRlcm5hbCBmbG9hdF9vZl9iaXRzIDogaW50NjQgLT4gZmxvYXRcbiAgPSBcImNhbWxfaW50NjRfZmxvYXRfb2ZfYml0c1wiIFwiY2FtbF9pbnQ2NF9mbG9hdF9vZl9iaXRzX3VuYm94ZWRcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxubGV0IGluZmluaXR5ID1cbiAgZmxvYXRfb2ZfYml0cyAweDdGX0YwXzAwXzAwXzAwXzAwXzAwXzAwTFxubGV0IG5lZ19pbmZpbml0eSA9XG4gIGZsb2F0X29mX2JpdHMgMHhGRl9GMF8wMF8wMF8wMF8wMF8wMF8wMExcbmxldCBuYW4gPVxuICBmbG9hdF9vZl9iaXRzIDB4N0ZfRjBfMDBfMDBfMDBfMDBfMDBfMDFMXG5sZXQgbWF4X2Zsb2F0ID1cbiAgZmxvYXRfb2ZfYml0cyAweDdGX0VGX0ZGX0ZGX0ZGX0ZGX0ZGX0ZGTFxubGV0IG1pbl9mbG9hdCA9XG4gIGZsb2F0X29mX2JpdHMgMHgwMF8xMF8wMF8wMF8wMF8wMF8wMF8wMExcbmxldCBlcHNpbG9uX2Zsb2F0ID1cbiAgZmxvYXRfb2ZfYml0cyAweDNDX0IwXzAwXzAwXzAwXzAwXzAwXzAwTFxuXG50eXBlIGZwY2xhc3MgPVxuICAgIEZQX25vcm1hbFxuICB8IEZQX3N1Ym5vcm1hbFxuICB8IEZQX3plcm9cbiAgfCBGUF9pbmZpbml0ZVxuICB8IEZQX25hblxuZXh0ZXJuYWwgY2xhc3NpZnlfZmxvYXQgOiAoZmxvYXQgW0B1bmJveGVkXSkgLT4gZnBjbGFzcyA9XG4gIFwiY2FtbF9jbGFzc2lmeV9mbG9hdFwiIFwiY2FtbF9jbGFzc2lmeV9mbG9hdF91bmJveGVkXCIgW0BAbm9hbGxvY11cblxuKCogU3RyaW5nIGFuZCBieXRlIHNlcXVlbmNlIG9wZXJhdGlvbnMgLS0gbW9yZSBpbiBtb2R1bGVzIFN0cmluZyBhbmQgQnl0ZXMgKilcblxuZXh0ZXJuYWwgc3RyaW5nX2xlbmd0aCA6IHN0cmluZyAtPiBpbnQgPSBcIiVzdHJpbmdfbGVuZ3RoXCJcbmV4dGVybmFsIGJ5dGVzX2xlbmd0aCA6IGJ5dGVzIC0+IGludCA9IFwiJWJ5dGVzX2xlbmd0aFwiXG5leHRlcm5hbCBieXRlc19jcmVhdGUgOiBpbnQgLT4gYnl0ZXMgPSBcImNhbWxfY3JlYXRlX2J5dGVzXCJcbmV4dGVybmFsIHN0cmluZ19ibGl0IDogc3RyaW5nIC0+IGludCAtPiBieXRlcyAtPiBpbnQgLT4gaW50IC0+IHVuaXRcbiAgICAgICAgICAgICAgICAgICAgID0gXCJjYW1sX2JsaXRfc3RyaW5nXCIgW0BAbm9hbGxvY11cbmV4dGVybmFsIGJ5dGVzX2JsaXQgOiBieXRlcyAtPiBpbnQgLT4gYnl0ZXMgLT4gaW50IC0+IGludCAtPiB1bml0XG4gICAgICAgICAgICAgICAgICAgICAgICA9IFwiY2FtbF9ibGl0X2J5dGVzXCIgW0BAbm9hbGxvY11cbmV4dGVybmFsIGJ5dGVzX3Vuc2FmZV90b19zdHJpbmcgOiBieXRlcyAtPiBzdHJpbmcgPSBcIiVieXRlc190b19zdHJpbmdcIlxuXG5sZXQgKCBeICkgczEgczIgPVxuICBsZXQgbDEgPSBzdHJpbmdfbGVuZ3RoIHMxIGFuZCBsMiA9IHN0cmluZ19sZW5ndGggczIgaW5cbiAgbGV0IHMgPSBieXRlc19jcmVhdGUgKGwxICsgbDIpIGluXG4gIHN0cmluZ19ibGl0IHMxIDAgcyAwIGwxO1xuICBzdHJpbmdfYmxpdCBzMiAwIHMgbDEgbDI7XG4gIGJ5dGVzX3Vuc2FmZV90b19zdHJpbmcgc1xuXG4oKiBDaGFyYWN0ZXIgb3BlcmF0aW9ucyAtLSBtb3JlIGluIG1vZHVsZSBDaGFyICopXG5cbmV4dGVybmFsIGludF9vZl9jaGFyIDogY2hhciAtPiBpbnQgPSBcIiVpZGVudGl0eVwiXG5leHRlcm5hbCB1bnNhZmVfY2hhcl9vZl9pbnQgOiBpbnQgLT4gY2hhciA9IFwiJWlkZW50aXR5XCJcbmxldCBjaGFyX29mX2ludCBuID1cbiAgaWYgbiA8IDAgfHwgbiA+IDI1NSB0aGVuIGludmFsaWRfYXJnIFwiY2hhcl9vZl9pbnRcIiBlbHNlIHVuc2FmZV9jaGFyX29mX2ludCBuXG5cbigqIFVuaXQgb3BlcmF0aW9ucyAqKVxuXG5leHRlcm5hbCBpZ25vcmUgOiAnYSAtPiB1bml0ID0gXCIlaWdub3JlXCJcblxuKCogUGFpciBvcGVyYXRpb25zICopXG5cbmV4dGVybmFsIGZzdCA6ICdhICogJ2IgLT4gJ2EgPSBcIiVmaWVsZDBcIlxuZXh0ZXJuYWwgc25kIDogJ2EgKiAnYiAtPiAnYiA9IFwiJWZpZWxkMVwiXG5cbigqIFJlZmVyZW5jZXMgKilcblxudHlwZSAnYSByZWYgPSB7IG11dGFibGUgY29udGVudHMgOiAnYSB9XG5leHRlcm5hbCByZWYgOiAnYSAtPiAnYSByZWYgPSBcIiVtYWtlbXV0YWJsZVwiXG5leHRlcm5hbCAoICEgKSA6ICdhIHJlZiAtPiAnYSA9IFwiJWZpZWxkMFwiXG5leHRlcm5hbCAoIDo9ICkgOiAnYSByZWYgLT4gJ2EgLT4gdW5pdCA9IFwiJXNldGZpZWxkMFwiXG5leHRlcm5hbCBpbmNyIDogaW50IHJlZiAtPiB1bml0ID0gXCIlaW5jclwiXG5leHRlcm5hbCBkZWNyIDogaW50IHJlZiAtPiB1bml0ID0gXCIlZGVjclwiXG5cbigqIFJlc3VsdCB0eXBlICopXG5cbnR5cGUgKCdhLCdiKSByZXN1bHQgPSBPayBvZiAnYSB8IEVycm9yIG9mICdiXG5cbigqIFN0cmluZyBjb252ZXJzaW9uIGZ1bmN0aW9ucyAqKVxuXG5leHRlcm5hbCBmb3JtYXRfaW50IDogc3RyaW5nIC0+IGludCAtPiBzdHJpbmcgPSBcImNhbWxfZm9ybWF0X2ludFwiXG5leHRlcm5hbCBmb3JtYXRfZmxvYXQgOiBzdHJpbmcgLT4gZmxvYXQgLT4gc3RyaW5nID0gXCJjYW1sX2Zvcm1hdF9mbG9hdFwiXG5cbmxldCBzdHJpbmdfb2ZfYm9vbCBiID1cbiAgaWYgYiB0aGVuIFwidHJ1ZVwiIGVsc2UgXCJmYWxzZVwiXG5sZXQgYm9vbF9vZl9zdHJpbmcgPSBmdW5jdGlvblxuICB8IFwidHJ1ZVwiIC0+IHRydWVcbiAgfCBcImZhbHNlXCIgLT4gZmFsc2VcbiAgfCBfIC0+IGludmFsaWRfYXJnIFwiYm9vbF9vZl9zdHJpbmdcIlxuXG5sZXQgYm9vbF9vZl9zdHJpbmdfb3B0ID0gZnVuY3Rpb25cbiAgfCBcInRydWVcIiAtPiBTb21lIHRydWVcbiAgfCBcImZhbHNlXCIgLT4gU29tZSBmYWxzZVxuICB8IF8gLT4gTm9uZVxuXG5sZXQgc3RyaW5nX29mX2ludCBuID1cbiAgZm9ybWF0X2ludCBcIiVkXCIgblxuXG5leHRlcm5hbCBpbnRfb2Zfc3RyaW5nIDogc3RyaW5nIC0+IGludCA9IFwiY2FtbF9pbnRfb2Zfc3RyaW5nXCJcblxubGV0IGludF9vZl9zdHJpbmdfb3B0IHMgPVxuICAoKiBUT0RPOiBwcm92aWRlIHRoaXMgZGlyZWN0bHkgYXMgYSBub24tcmFpc2luZyBwcmltaXRpdmUuICopXG4gIHRyeSBTb21lIChpbnRfb2Zfc3RyaW5nIHMpXG4gIHdpdGggRmFpbHVyZSBfIC0+IE5vbmVcblxuZXh0ZXJuYWwgc3RyaW5nX2dldCA6IHN0cmluZyAtPiBpbnQgLT4gY2hhciA9IFwiJXN0cmluZ19zYWZlX2dldFwiXG5cbmxldCB2YWxpZF9mbG9hdF9sZXhlbSBzID1cbiAgbGV0IGwgPSBzdHJpbmdfbGVuZ3RoIHMgaW5cbiAgbGV0IHJlYyBsb29wIGkgPVxuICAgIGlmIGkgPj0gbCB0aGVuIHMgXiBcIi5cIiBlbHNlXG4gICAgbWF0Y2ggc3RyaW5nX2dldCBzIGkgd2l0aFxuICAgIHwgJzAnIC4uICc5JyB8ICctJyAtPiBsb29wIChpICsgMSlcbiAgICB8IF8gLT4gc1xuICBpblxuICBsb29wIDBcblxubGV0IHN0cmluZ19vZl9mbG9hdCBmID0gdmFsaWRfZmxvYXRfbGV4ZW0gKGZvcm1hdF9mbG9hdCBcIiUuMTJnXCIgZilcblxuZXh0ZXJuYWwgZmxvYXRfb2Zfc3RyaW5nIDogc3RyaW5nIC0+IGZsb2F0ID0gXCJjYW1sX2Zsb2F0X29mX3N0cmluZ1wiXG5cbmxldCBmbG9hdF9vZl9zdHJpbmdfb3B0IHMgPVxuICAoKiBUT0RPOiBwcm92aWRlIHRoaXMgZGlyZWN0bHkgYXMgYSBub24tcmFpc2luZyBwcmltaXRpdmUuICopXG4gIHRyeSBTb21lIChmbG9hdF9vZl9zdHJpbmcgcylcbiAgd2l0aCBGYWlsdXJlIF8gLT4gTm9uZVxuXG4oKiBMaXN0IG9wZXJhdGlvbnMgLS0gbW9yZSBpbiBtb2R1bGUgTGlzdCAqKVxuXG5sZXQgcmVjICggQCApIGwxIGwyID1cbiAgbWF0Y2ggbDEgd2l0aFxuICAgIFtdIC0+IGwyXG4gIHwgaGQgOjogdGwgLT4gaGQgOjogKHRsIEAgbDIpXG5cbigqIEkvTyBvcGVyYXRpb25zICopXG5cbnR5cGUgaW5fY2hhbm5lbFxudHlwZSBvdXRfY2hhbm5lbFxuXG5leHRlcm5hbCBvcGVuX2Rlc2NyaXB0b3Jfb3V0IDogaW50IC0+IG91dF9jaGFubmVsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gXCJjYW1sX21sX29wZW5fZGVzY3JpcHRvcl9vdXRcIlxuZXh0ZXJuYWwgb3Blbl9kZXNjcmlwdG9yX2luIDogaW50IC0+IGluX2NoYW5uZWwgPSBcImNhbWxfbWxfb3Blbl9kZXNjcmlwdG9yX2luXCJcblxubGV0IHN0ZGluID0gb3Blbl9kZXNjcmlwdG9yX2luIDBcbmxldCBzdGRvdXQgPSBvcGVuX2Rlc2NyaXB0b3Jfb3V0IDFcbmxldCBzdGRlcnIgPSBvcGVuX2Rlc2NyaXB0b3Jfb3V0IDJcblxuKCogR2VuZXJhbCBvdXRwdXQgZnVuY3Rpb25zICopXG5cbnR5cGUgb3Blbl9mbGFnID1cbiAgICBPcGVuX3Jkb25seSB8IE9wZW5fd3Jvbmx5IHwgT3Blbl9hcHBlbmRcbiAgfCBPcGVuX2NyZWF0IHwgT3Blbl90cnVuYyB8IE9wZW5fZXhjbFxuICB8IE9wZW5fYmluYXJ5IHwgT3Blbl90ZXh0IHwgT3Blbl9ub25ibG9ja1xuXG5leHRlcm5hbCBvcGVuX2Rlc2MgOiBzdHJpbmcgLT4gb3Blbl9mbGFnIGxpc3QgLT4gaW50IC0+IGludCA9IFwiY2FtbF9zeXNfb3BlblwiXG5cbmV4dGVybmFsIHNldF9vdXRfY2hhbm5lbF9uYW1lOiBvdXRfY2hhbm5lbCAtPiBzdHJpbmcgLT4gdW5pdCA9XG4gIFwiY2FtbF9tbF9zZXRfY2hhbm5lbF9uYW1lXCJcblxubGV0IG9wZW5fb3V0X2dlbiBtb2RlIHBlcm0gbmFtZSA9XG4gIGxldCBjID0gb3Blbl9kZXNjcmlwdG9yX291dChvcGVuX2Rlc2MgbmFtZSBtb2RlIHBlcm0pIGluXG4gIHNldF9vdXRfY2hhbm5lbF9uYW1lIGMgbmFtZTtcbiAgY1xuXG5sZXQgb3Blbl9vdXQgbmFtZSA9XG4gIG9wZW5fb3V0X2dlbiBbT3Blbl93cm9ubHk7IE9wZW5fY3JlYXQ7IE9wZW5fdHJ1bmM7IE9wZW5fdGV4dF0gMG82NjYgbmFtZVxuXG5sZXQgb3Blbl9vdXRfYmluIG5hbWUgPVxuICBvcGVuX291dF9nZW4gW09wZW5fd3Jvbmx5OyBPcGVuX2NyZWF0OyBPcGVuX3RydW5jOyBPcGVuX2JpbmFyeV0gMG82NjYgbmFtZVxuXG5leHRlcm5hbCBmbHVzaCA6IG91dF9jaGFubmVsIC0+IHVuaXQgPSBcImNhbWxfbWxfZmx1c2hcIlxuXG5leHRlcm5hbCBvdXRfY2hhbm5lbHNfbGlzdCA6IHVuaXQgLT4gb3V0X2NoYW5uZWwgbGlzdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBcImNhbWxfbWxfb3V0X2NoYW5uZWxzX2xpc3RcIlxuXG5sZXQgZmx1c2hfYWxsICgpID1cbiAgbGV0IHJlYyBpdGVyID0gZnVuY3Rpb25cbiAgICAgIFtdIC0+ICgpXG4gICAgfCBhOjpsIC0+XG4gICAgICAgIGJlZ2luIHRyeVxuICAgICAgICAgICAgZmx1c2ggYVxuICAgICAgICB3aXRoIFN5c19lcnJvciBfIC0+XG4gICAgICAgICAgKCkgKCogaWdub3JlIGNoYW5uZWxzIGNsb3NlZCBkdXJpbmcgYSBwcmVjZWRpbmcgZmx1c2guICopXG4gICAgICAgIGVuZDtcbiAgICAgICAgaXRlciBsXG4gIGluIGl0ZXIgKG91dF9jaGFubmVsc19saXN0ICgpKVxuXG5leHRlcm5hbCB1bnNhZmVfb3V0cHV0IDogb3V0X2NoYW5uZWwgLT4gYnl0ZXMgLT4gaW50IC0+IGludCAtPiB1bml0XG4gICAgICAgICAgICAgICAgICAgICAgID0gXCJjYW1sX21sX291dHB1dF9ieXRlc1wiXG5leHRlcm5hbCB1bnNhZmVfb3V0cHV0X3N0cmluZyA6IG91dF9jaGFubmVsIC0+IHN0cmluZyAtPiBpbnQgLT4gaW50IC0+IHVuaXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gXCJjYW1sX21sX291dHB1dFwiXG5cbmV4dGVybmFsIG91dHB1dF9jaGFyIDogb3V0X2NoYW5uZWwgLT4gY2hhciAtPiB1bml0ID0gXCJjYW1sX21sX291dHB1dF9jaGFyXCJcblxubGV0IG91dHB1dF9ieXRlcyBvYyBzID1cbiAgdW5zYWZlX291dHB1dCBvYyBzIDAgKGJ5dGVzX2xlbmd0aCBzKVxuXG5sZXQgb3V0cHV0X3N0cmluZyBvYyBzID1cbiAgdW5zYWZlX291dHB1dF9zdHJpbmcgb2MgcyAwIChzdHJpbmdfbGVuZ3RoIHMpXG5cbmxldCBvdXRwdXQgb2MgcyBvZnMgbGVuID1cbiAgaWYgb2ZzIDwgMCB8fCBsZW4gPCAwIHx8IG9mcyA+IGJ5dGVzX2xlbmd0aCBzIC0gbGVuXG4gIHRoZW4gaW52YWxpZF9hcmcgXCJvdXRwdXRcIlxuICBlbHNlIHVuc2FmZV9vdXRwdXQgb2MgcyBvZnMgbGVuXG5cbmxldCBvdXRwdXRfc3Vic3RyaW5nIG9jIHMgb2ZzIGxlbiA9XG4gIGlmIG9mcyA8IDAgfHwgbGVuIDwgMCB8fCBvZnMgPiBzdHJpbmdfbGVuZ3RoIHMgLSBsZW5cbiAgdGhlbiBpbnZhbGlkX2FyZyBcIm91dHB1dF9zdWJzdHJpbmdcIlxuICBlbHNlIHVuc2FmZV9vdXRwdXRfc3RyaW5nIG9jIHMgb2ZzIGxlblxuXG5leHRlcm5hbCBvdXRwdXRfYnl0ZSA6IG91dF9jaGFubmVsIC0+IGludCAtPiB1bml0ID0gXCJjYW1sX21sX291dHB1dF9jaGFyXCJcbmV4dGVybmFsIG91dHB1dF9iaW5hcnlfaW50IDogb3V0X2NoYW5uZWwgLT4gaW50IC0+IHVuaXQgPSBcImNhbWxfbWxfb3V0cHV0X2ludFwiXG5cbmV4dGVybmFsIG1hcnNoYWxfdG9fY2hhbm5lbCA6IG91dF9jaGFubmVsIC0+ICdhIC0+IHVuaXQgbGlzdCAtPiB1bml0XG4gICAgID0gXCJjYW1sX291dHB1dF92YWx1ZVwiXG5sZXQgb3V0cHV0X3ZhbHVlIGNoYW4gdiA9IG1hcnNoYWxfdG9fY2hhbm5lbCBjaGFuIHYgW11cblxuZXh0ZXJuYWwgc2Vla19vdXQgOiBvdXRfY2hhbm5lbCAtPiBpbnQgLT4gdW5pdCA9IFwiY2FtbF9tbF9zZWVrX291dFwiXG5leHRlcm5hbCBwb3Nfb3V0IDogb3V0X2NoYW5uZWwgLT4gaW50ID0gXCJjYW1sX21sX3Bvc19vdXRcIlxuZXh0ZXJuYWwgb3V0X2NoYW5uZWxfbGVuZ3RoIDogb3V0X2NoYW5uZWwgLT4gaW50ID0gXCJjYW1sX21sX2NoYW5uZWxfc2l6ZVwiXG5leHRlcm5hbCBjbG9zZV9vdXRfY2hhbm5lbCA6IG91dF9jaGFubmVsIC0+IHVuaXQgPSBcImNhbWxfbWxfY2xvc2VfY2hhbm5lbFwiXG5sZXQgY2xvc2Vfb3V0IG9jID0gZmx1c2ggb2M7IGNsb3NlX291dF9jaGFubmVsIG9jXG5sZXQgY2xvc2Vfb3V0X25vZXJyIG9jID1cbiAgKHRyeSBmbHVzaCBvYyB3aXRoIF8gLT4gKCkpO1xuICAodHJ5IGNsb3NlX291dF9jaGFubmVsIG9jIHdpdGggXyAtPiAoKSlcbmV4dGVybmFsIHNldF9iaW5hcnlfbW9kZV9vdXQgOiBvdXRfY2hhbm5lbCAtPiBib29sIC0+IHVuaXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBcImNhbWxfbWxfc2V0X2JpbmFyeV9tb2RlXCJcblxuKCogR2VuZXJhbCBpbnB1dCBmdW5jdGlvbnMgKilcblxuZXh0ZXJuYWwgc2V0X2luX2NoYW5uZWxfbmFtZTogaW5fY2hhbm5lbCAtPiBzdHJpbmcgLT4gdW5pdCA9XG4gIFwiY2FtbF9tbF9zZXRfY2hhbm5lbF9uYW1lXCJcblxubGV0IG9wZW5faW5fZ2VuIG1vZGUgcGVybSBuYW1lID1cbiAgbGV0IGMgPSBvcGVuX2Rlc2NyaXB0b3JfaW4ob3Blbl9kZXNjIG5hbWUgbW9kZSBwZXJtKSBpblxuICBzZXRfaW5fY2hhbm5lbF9uYW1lIGMgbmFtZTtcbiAgY1xuXG5sZXQgb3Blbl9pbiBuYW1lID1cbiAgb3Blbl9pbl9nZW4gW09wZW5fcmRvbmx5OyBPcGVuX3RleHRdIDAgbmFtZVxuXG5sZXQgb3Blbl9pbl9iaW4gbmFtZSA9XG4gIG9wZW5faW5fZ2VuIFtPcGVuX3Jkb25seTsgT3Blbl9iaW5hcnldIDAgbmFtZVxuXG5leHRlcm5hbCBpbnB1dF9jaGFyIDogaW5fY2hhbm5lbCAtPiBjaGFyID0gXCJjYW1sX21sX2lucHV0X2NoYXJcIlxuXG5leHRlcm5hbCB1bnNhZmVfaW5wdXQgOiBpbl9jaGFubmVsIC0+IGJ5dGVzIC0+IGludCAtPiBpbnQgLT4gaW50XG4gICAgICAgICAgICAgICAgICAgICAgPSBcImNhbWxfbWxfaW5wdXRcIlxuXG5sZXQgaW5wdXQgaWMgcyBvZnMgbGVuID1cbiAgaWYgb2ZzIDwgMCB8fCBsZW4gPCAwIHx8IG9mcyA+IGJ5dGVzX2xlbmd0aCBzIC0gbGVuXG4gIHRoZW4gaW52YWxpZF9hcmcgXCJpbnB1dFwiXG4gIGVsc2UgdW5zYWZlX2lucHV0IGljIHMgb2ZzIGxlblxuXG5sZXQgcmVjIHVuc2FmZV9yZWFsbHlfaW5wdXQgaWMgcyBvZnMgbGVuID1cbiAgaWYgbGVuIDw9IDAgdGhlbiAoKSBlbHNlIGJlZ2luXG4gICAgbGV0IHIgPSB1bnNhZmVfaW5wdXQgaWMgcyBvZnMgbGVuIGluXG4gICAgaWYgciA9IDBcbiAgICB0aGVuIHJhaXNlIEVuZF9vZl9maWxlXG4gICAgZWxzZSB1bnNhZmVfcmVhbGx5X2lucHV0IGljIHMgKG9mcyArIHIpIChsZW4gLSByKVxuICBlbmRcblxubGV0IHJlYWxseV9pbnB1dCBpYyBzIG9mcyBsZW4gPVxuICBpZiBvZnMgPCAwIHx8IGxlbiA8IDAgfHwgb2ZzID4gYnl0ZXNfbGVuZ3RoIHMgLSBsZW5cbiAgdGhlbiBpbnZhbGlkX2FyZyBcInJlYWxseV9pbnB1dFwiXG4gIGVsc2UgdW5zYWZlX3JlYWxseV9pbnB1dCBpYyBzIG9mcyBsZW5cblxubGV0IHJlYWxseV9pbnB1dF9zdHJpbmcgaWMgbGVuID1cbiAgbGV0IHMgPSBieXRlc19jcmVhdGUgbGVuIGluXG4gIHJlYWxseV9pbnB1dCBpYyBzIDAgbGVuO1xuICBieXRlc191bnNhZmVfdG9fc3RyaW5nIHNcblxuZXh0ZXJuYWwgaW5wdXRfc2Nhbl9saW5lIDogaW5fY2hhbm5lbCAtPiBpbnQgPSBcImNhbWxfbWxfaW5wdXRfc2Nhbl9saW5lXCJcblxubGV0IGlucHV0X2xpbmUgY2hhbiA9XG4gIGxldCByZWMgYnVpbGRfcmVzdWx0IGJ1ZiBwb3MgPSBmdW5jdGlvblxuICAgIFtdIC0+IGJ1ZlxuICB8IGhkIDo6IHRsIC0+XG4gICAgICBsZXQgbGVuID0gYnl0ZXNfbGVuZ3RoIGhkIGluXG4gICAgICBieXRlc19ibGl0IGhkIDAgYnVmIChwb3MgLSBsZW4pIGxlbjtcbiAgICAgIGJ1aWxkX3Jlc3VsdCBidWYgKHBvcyAtIGxlbikgdGwgaW5cbiAgbGV0IHJlYyBzY2FuIGFjY3UgbGVuID1cbiAgICBsZXQgbiA9IGlucHV0X3NjYW5fbGluZSBjaGFuIGluXG4gICAgaWYgbiA9IDAgdGhlbiBiZWdpbiAgICAgICAgICAgICAgICAgICAoKiBuID0gMDogd2UgYXJlIGF0IEVPRiAqKVxuICAgICAgbWF0Y2ggYWNjdSB3aXRoXG4gICAgICAgIFtdIC0+IHJhaXNlIEVuZF9vZl9maWxlXG4gICAgICB8IF8gIC0+IGJ1aWxkX3Jlc3VsdCAoYnl0ZXNfY3JlYXRlIGxlbikgbGVuIGFjY3VcbiAgICBlbmQgZWxzZSBpZiBuID4gMCB0aGVuIGJlZ2luICAgICAgICAgICgqIG4gPiAwOiBuZXdsaW5lIGZvdW5kIGluIGJ1ZmZlciAqKVxuICAgICAgbGV0IHJlcyA9IGJ5dGVzX2NyZWF0ZSAobiAtIDEpIGluXG4gICAgICBpZ25vcmUgKHVuc2FmZV9pbnB1dCBjaGFuIHJlcyAwIChuIC0gMSkpO1xuICAgICAgaWdub3JlIChpbnB1dF9jaGFyIGNoYW4pOyAgICAgICAgICAgKCogc2tpcCB0aGUgbmV3bGluZSAqKVxuICAgICAgbWF0Y2ggYWNjdSB3aXRoXG4gICAgICAgIFtdIC0+IHJlc1xuICAgICAgfCAgXyAtPiBsZXQgbGVuID0gbGVuICsgbiAtIDEgaW5cbiAgICAgICAgICAgICAgYnVpbGRfcmVzdWx0IChieXRlc19jcmVhdGUgbGVuKSBsZW4gKHJlcyA6OiBhY2N1KVxuICAgIGVuZCBlbHNlIGJlZ2luICAgICAgICAgICAgICAgICAgICAgICAgKCogbiA8IDA6IG5ld2xpbmUgbm90IGZvdW5kICopXG4gICAgICBsZXQgYmVnID0gYnl0ZXNfY3JlYXRlICgtbikgaW5cbiAgICAgIGlnbm9yZSh1bnNhZmVfaW5wdXQgY2hhbiBiZWcgMCAoLW4pKTtcbiAgICAgIHNjYW4gKGJlZyA6OiBhY2N1KSAobGVuIC0gbilcbiAgICBlbmRcbiAgaW4gYnl0ZXNfdW5zYWZlX3RvX3N0cmluZyAoc2NhbiBbXSAwKVxuXG5leHRlcm5hbCBpbnB1dF9ieXRlIDogaW5fY2hhbm5lbCAtPiBpbnQgPSBcImNhbWxfbWxfaW5wdXRfY2hhclwiXG5leHRlcm5hbCBpbnB1dF9iaW5hcnlfaW50IDogaW5fY2hhbm5lbCAtPiBpbnQgPSBcImNhbWxfbWxfaW5wdXRfaW50XCJcbmV4dGVybmFsIGlucHV0X3ZhbHVlIDogaW5fY2hhbm5lbCAtPiAnYSA9IFwiY2FtbF9pbnB1dF92YWx1ZVwiXG5leHRlcm5hbCBzZWVrX2luIDogaW5fY2hhbm5lbCAtPiBpbnQgLT4gdW5pdCA9IFwiY2FtbF9tbF9zZWVrX2luXCJcbmV4dGVybmFsIHBvc19pbiA6IGluX2NoYW5uZWwgLT4gaW50ID0gXCJjYW1sX21sX3Bvc19pblwiXG5leHRlcm5hbCBpbl9jaGFubmVsX2xlbmd0aCA6IGluX2NoYW5uZWwgLT4gaW50ID0gXCJjYW1sX21sX2NoYW5uZWxfc2l6ZVwiXG5leHRlcm5hbCBjbG9zZV9pbiA6IGluX2NoYW5uZWwgLT4gdW5pdCA9IFwiY2FtbF9tbF9jbG9zZV9jaGFubmVsXCJcbmxldCBjbG9zZV9pbl9ub2VyciBpYyA9ICh0cnkgY2xvc2VfaW4gaWMgd2l0aCBfIC0+ICgpKVxuZXh0ZXJuYWwgc2V0X2JpbmFyeV9tb2RlX2luIDogaW5fY2hhbm5lbCAtPiBib29sIC0+IHVuaXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IFwiY2FtbF9tbF9zZXRfYmluYXJ5X21vZGVcIlxuXG4oKiBPdXRwdXQgZnVuY3Rpb25zIG9uIHN0YW5kYXJkIG91dHB1dCAqKVxuXG5sZXQgcHJpbnRfY2hhciBjID0gb3V0cHV0X2NoYXIgc3Rkb3V0IGNcbmxldCBwcmludF9zdHJpbmcgcyA9IG91dHB1dF9zdHJpbmcgc3Rkb3V0IHNcbmxldCBwcmludF9ieXRlcyBzID0gb3V0cHV0X2J5dGVzIHN0ZG91dCBzXG5sZXQgcHJpbnRfaW50IGkgPSBvdXRwdXRfc3RyaW5nIHN0ZG91dCAoc3RyaW5nX29mX2ludCBpKVxubGV0IHByaW50X2Zsb2F0IGYgPSBvdXRwdXRfc3RyaW5nIHN0ZG91dCAoc3RyaW5nX29mX2Zsb2F0IGYpXG5sZXQgcHJpbnRfZW5kbGluZSBzID1cbiAgb3V0cHV0X3N0cmluZyBzdGRvdXQgczsgb3V0cHV0X2NoYXIgc3Rkb3V0ICdcXG4nOyBmbHVzaCBzdGRvdXRcbmxldCBwcmludF9uZXdsaW5lICgpID0gb3V0cHV0X2NoYXIgc3Rkb3V0ICdcXG4nOyBmbHVzaCBzdGRvdXRcblxuKCogT3V0cHV0IGZ1bmN0aW9ucyBvbiBzdGFuZGFyZCBlcnJvciAqKVxuXG5sZXQgcHJlcnJfY2hhciBjID0gb3V0cHV0X2NoYXIgc3RkZXJyIGNcbmxldCBwcmVycl9zdHJpbmcgcyA9IG91dHB1dF9zdHJpbmcgc3RkZXJyIHNcbmxldCBwcmVycl9ieXRlcyBzID0gb3V0cHV0X2J5dGVzIHN0ZGVyciBzXG5sZXQgcHJlcnJfaW50IGkgPSBvdXRwdXRfc3RyaW5nIHN0ZGVyciAoc3RyaW5nX29mX2ludCBpKVxubGV0IHByZXJyX2Zsb2F0IGYgPSBvdXRwdXRfc3RyaW5nIHN0ZGVyciAoc3RyaW5nX29mX2Zsb2F0IGYpXG5sZXQgcHJlcnJfZW5kbGluZSBzID1cbiAgb3V0cHV0X3N0cmluZyBzdGRlcnIgczsgb3V0cHV0X2NoYXIgc3RkZXJyICdcXG4nOyBmbHVzaCBzdGRlcnJcbmxldCBwcmVycl9uZXdsaW5lICgpID0gb3V0cHV0X2NoYXIgc3RkZXJyICdcXG4nOyBmbHVzaCBzdGRlcnJcblxuKCogSW5wdXQgZnVuY3Rpb25zIG9uIHN0YW5kYXJkIGlucHV0ICopXG5cbmxldCByZWFkX2xpbmUgKCkgPSBmbHVzaCBzdGRvdXQ7IGlucHV0X2xpbmUgc3RkaW5cbmxldCByZWFkX2ludCAoKSA9IGludF9vZl9zdHJpbmcocmVhZF9saW5lKCkpXG5sZXQgcmVhZF9pbnRfb3B0ICgpID0gaW50X29mX3N0cmluZ19vcHQocmVhZF9saW5lKCkpXG5sZXQgcmVhZF9mbG9hdCAoKSA9IGZsb2F0X29mX3N0cmluZyhyZWFkX2xpbmUoKSlcbmxldCByZWFkX2Zsb2F0X29wdCAoKSA9IGZsb2F0X29mX3N0cmluZ19vcHQocmVhZF9saW5lKCkpXG5cbigqIE9wZXJhdGlvbnMgb24gbGFyZ2UgZmlsZXMgKilcblxubW9kdWxlIExhcmdlRmlsZSA9XG4gIHN0cnVjdFxuICAgIGV4dGVybmFsIHNlZWtfb3V0IDogb3V0X2NoYW5uZWwgLT4gaW50NjQgLT4gdW5pdCA9IFwiY2FtbF9tbF9zZWVrX291dF82NFwiXG4gICAgZXh0ZXJuYWwgcG9zX291dCA6IG91dF9jaGFubmVsIC0+IGludDY0ID0gXCJjYW1sX21sX3Bvc19vdXRfNjRcIlxuICAgIGV4dGVybmFsIG91dF9jaGFubmVsX2xlbmd0aCA6IG91dF9jaGFubmVsIC0+IGludDY0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gXCJjYW1sX21sX2NoYW5uZWxfc2l6ZV82NFwiXG4gICAgZXh0ZXJuYWwgc2Vla19pbiA6IGluX2NoYW5uZWwgLT4gaW50NjQgLT4gdW5pdCA9IFwiY2FtbF9tbF9zZWVrX2luXzY0XCJcbiAgICBleHRlcm5hbCBwb3NfaW4gOiBpbl9jaGFubmVsIC0+IGludDY0ID0gXCJjYW1sX21sX3Bvc19pbl82NFwiXG4gICAgZXh0ZXJuYWwgaW5fY2hhbm5lbF9sZW5ndGggOiBpbl9jaGFubmVsIC0+IGludDY0ID0gXCJjYW1sX21sX2NoYW5uZWxfc2l6ZV82NFwiXG4gIGVuZFxuXG4oKiBGb3JtYXRzICopXG5cbnR5cGUgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZvcm1hdDZcbiAgID0gKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIENhbWxpbnRlcm5hbEZvcm1hdEJhc2ljcy5mb3JtYXQ2XG4gICA9IEZvcm1hdCBvZiAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgQ2FtbGludGVybmFsRm9ybWF0QmFzaWNzLmZtdFxuICAgICAgICAgICAgICAgKiBzdHJpbmdcblxudHlwZSAoJ2EsICdiLCAnYywgJ2QpIGZvcm1hdDQgPSAoJ2EsICdiLCAnYywgJ2MsICdjLCAnZCkgZm9ybWF0NlxuXG50eXBlICgnYSwgJ2IsICdjKSBmb3JtYXQgPSAoJ2EsICdiLCAnYywgJ2MpIGZvcm1hdDRcblxubGV0IHN0cmluZ19vZl9mb3JtYXQgKEZvcm1hdCAoX2ZtdCwgc3RyKSkgPSBzdHJcblxuZXh0ZXJuYWwgZm9ybWF0X29mX3N0cmluZyA6XG4gKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZvcm1hdDYgLT5cbiAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm9ybWF0NiA9IFwiJWlkZW50aXR5XCJcblxubGV0ICggXl4gKSAoRm9ybWF0IChmbXQxLCBzdHIxKSkgKEZvcm1hdCAoZm10Miwgc3RyMikpID1cbiAgRm9ybWF0IChDYW1saW50ZXJuYWxGb3JtYXRCYXNpY3MuY29uY2F0X2ZtdCBmbXQxIGZtdDIsXG4gICAgICAgICAgc3RyMSBeIFwiJSxcIiBeIHN0cjIpXG5cbigqIE1pc2NlbGxhbmVvdXMgKilcblxuZXh0ZXJuYWwgc3lzX2V4aXQgOiBpbnQgLT4gJ2EgPSBcImNhbWxfc3lzX2V4aXRcIlxuXG5sZXQgZXhpdF9mdW5jdGlvbiA9IENhbWxpbnRlcm5hbEF0b21pYy5tYWtlIGZsdXNoX2FsbFxuXG5sZXQgcmVjIGF0X2V4aXQgZiA9XG4gIGxldCBtb2R1bGUgQXRvbWljID0gQ2FtbGludGVybmFsQXRvbWljIGluXG4gICgqIE1QUiM3MjUzLCBNUFIjNzc5NjogbWFrZSBzdXJlIFwiZlwiIGlzIGV4ZWN1dGVkIG9ubHkgb25jZSAqKVxuICBsZXQgZl95ZXRfdG9fcnVuID0gQXRvbWljLm1ha2UgdHJ1ZSBpblxuICBsZXQgb2xkX2V4aXQgPSBBdG9taWMuZ2V0IGV4aXRfZnVuY3Rpb24gaW5cbiAgbGV0IG5ld19leGl0ICgpID1cbiAgICBpZiBBdG9taWMuY29tcGFyZV9hbmRfc2V0IGZfeWV0X3RvX3J1biB0cnVlIGZhbHNlIHRoZW4gZiAoKSA7XG4gICAgb2xkX2V4aXQgKClcbiAgaW5cbiAgbGV0IHN1Y2Nlc3MgPSBBdG9taWMuY29tcGFyZV9hbmRfc2V0IGV4aXRfZnVuY3Rpb24gb2xkX2V4aXQgbmV3X2V4aXQgaW5cbiAgaWYgbm90IHN1Y2Nlc3MgdGhlbiBhdF9leGl0IGZcblxubGV0IGRvX2F0X2V4aXQgKCkgPSAoQ2FtbGludGVybmFsQXRvbWljLmdldCBleGl0X2Z1bmN0aW9uKSAoKVxuXG5sZXQgZXhpdCByZXRjb2RlID1cbiAgZG9fYXRfZXhpdCAoKTtcbiAgc3lzX2V4aXQgcmV0Y29kZVxuXG5sZXQgXyA9IHJlZ2lzdGVyX25hbWVkX3ZhbHVlIFwiUGVydmFzaXZlcy5kb19hdF9leGl0XCIgZG9fYXRfZXhpdFxuXG5leHRlcm5hbCBtYWpvciA6IHVuaXQgLT4gdW5pdCA9IFwiY2FtbF9nY19tYWpvclwiXG5leHRlcm5hbCBuYWtlZF9wb2ludGVyc19jaGVja2VkIDogdW5pdCAtPiBib29sXG4gID0gXCJjYW1sX3N5c19jb25zdF9uYWtlZF9wb2ludGVyc19jaGVja2VkXCJcbmxldCAoKSA9IGlmIG5ha2VkX3BvaW50ZXJzX2NoZWNrZWQgKCkgdGhlbiBhdF9leGl0IG1ham9yXG5cbigqTU9EVUxFX0FMSUFTRVMqKVxubW9kdWxlIEFyZyAgICAgICAgICA9IEFyZ1xubW9kdWxlIEFycmF5ICAgICAgICA9IEFycmF5XG5tb2R1bGUgQXJyYXlMYWJlbHMgID0gQXJyYXlMYWJlbHNcbm1vZHVsZSBBdG9taWMgICAgICAgPSBBdG9taWNcbm1vZHVsZSBCaWdhcnJheSAgICAgPSBCaWdhcnJheVxubW9kdWxlIEJvb2wgICAgICAgICA9IEJvb2xcbm1vZHVsZSBCdWZmZXIgICAgICAgPSBCdWZmZXJcbm1vZHVsZSBCeXRlcyAgICAgICAgPSBCeXRlc1xubW9kdWxlIEJ5dGVzTGFiZWxzICA9IEJ5dGVzTGFiZWxzXG5tb2R1bGUgQ2FsbGJhY2sgICAgID0gQ2FsbGJhY2tcbm1vZHVsZSBDaGFyICAgICAgICAgPSBDaGFyXG5tb2R1bGUgQ29tcGxleCAgICAgID0gQ29tcGxleFxubW9kdWxlIERpZ2VzdCAgICAgICA9IERpZ2VzdFxubW9kdWxlIEVpdGhlciAgICAgICA9IEVpdGhlclxubW9kdWxlIEVwaGVtZXJvbiAgICA9IEVwaGVtZXJvblxubW9kdWxlIEZpbGVuYW1lICAgICA9IEZpbGVuYW1lXG5tb2R1bGUgRmxvYXQgICAgICAgID0gRmxvYXRcbm1vZHVsZSBGb3JtYXQgICAgICAgPSBGb3JtYXRcbm1vZHVsZSBGdW4gICAgICAgICAgPSBGdW5cbm1vZHVsZSBHYyAgICAgICAgICAgPSBHY1xubW9kdWxlIEdlbmxleCAgICAgICA9IEdlbmxleFxubW9kdWxlIEhhc2h0YmwgICAgICA9IEhhc2h0Ymxcbm1vZHVsZSBJbl9jaGFubmVsICAgPSBJbl9jaGFubmVsXG5tb2R1bGUgSW50ICAgICAgICAgID0gSW50XG5tb2R1bGUgSW50MzIgICAgICAgID0gSW50MzJcbm1vZHVsZSBJbnQ2NCAgICAgICAgPSBJbnQ2NFxubW9kdWxlIExhenkgICAgICAgICA9IExhenlcbm1vZHVsZSBMZXhpbmcgICAgICAgPSBMZXhpbmdcbm1vZHVsZSBMaXN0ICAgICAgICAgPSBMaXN0XG5tb2R1bGUgTGlzdExhYmVscyAgID0gTGlzdExhYmVsc1xubW9kdWxlIE1hcCAgICAgICAgICA9IE1hcFxubW9kdWxlIE1hcnNoYWwgICAgICA9IE1hcnNoYWxcbm1vZHVsZSBNb3JlTGFiZWxzICAgPSBNb3JlTGFiZWxzXG5tb2R1bGUgTmF0aXZlaW50ICAgID0gTmF0aXZlaW50XG5tb2R1bGUgT2JqICAgICAgICAgID0gT2JqXG5tb2R1bGUgT28gICAgICAgICAgID0gT29cbm1vZHVsZSBPcHRpb24gICAgICAgPSBPcHRpb25cbm1vZHVsZSBPdXRfY2hhbm5lbCAgPSBPdXRfY2hhbm5lbFxubW9kdWxlIFBhcnNpbmcgICAgICA9IFBhcnNpbmdcbm1vZHVsZSBQZXJ2YXNpdmVzICAgPSBQZXJ2YXNpdmVzXG5tb2R1bGUgUHJpbnRleGMgICAgID0gUHJpbnRleGNcbm1vZHVsZSBQcmludGYgICAgICAgPSBQcmludGZcbm1vZHVsZSBRdWV1ZSAgICAgICAgPSBRdWV1ZVxubW9kdWxlIFJhbmRvbSAgICAgICA9IFJhbmRvbVxubW9kdWxlIFJlc3VsdCAgICAgICA9IFJlc3VsdFxubW9kdWxlIFNjYW5mICAgICAgICA9IFNjYW5mXG5tb2R1bGUgU2VxICAgICAgICAgID0gU2VxXG5tb2R1bGUgU2V0ICAgICAgICAgID0gU2V0XG5tb2R1bGUgU3RhY2sgICAgICAgID0gU3RhY2tcbm1vZHVsZSBTdGRMYWJlbHMgICAgPSBTdGRMYWJlbHNcbm1vZHVsZSBTdHJlYW0gICAgICAgPSBTdHJlYW1cbm1vZHVsZSBTdHJpbmcgICAgICAgPSBTdHJpbmdcbm1vZHVsZSBTdHJpbmdMYWJlbHMgPSBTdHJpbmdMYWJlbHNcbm1vZHVsZSBTeXMgICAgICAgICAgPSBTeXNcbm1vZHVsZSBVY2hhciAgICAgICAgPSBVY2hhclxubW9kdWxlIFVuaXQgICAgICAgICA9IFVuaXRcbm1vZHVsZSBXZWFrICAgICAgICAgPSBXZWFrXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICBKZXJlbWllIERpbWlubywgSmFuZSBTdHJlZXQgRXVyb3BlICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAyMDE3IEphbmUgU3RyZWV0IEdyb3VwIExMQyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbigqKiBAZGVwcmVjYXRlZCBVc2UgeyFTdGRsaWJ9ICopXG5cbmV4dGVybmFsIHJhaXNlIDogZXhuIC0+ICdhID0gXCIlcmFpc2VcIlxuZXh0ZXJuYWwgcmFpc2Vfbm90cmFjZSA6IGV4biAtPiAnYSA9IFwiJXJhaXNlX25vdHJhY2VcIlxubGV0IGludmFsaWRfYXJnID0gaW52YWxpZF9hcmdcbmxldCBmYWlsd2l0aCA9IGZhaWx3aXRoXG5leGNlcHRpb24gRXhpdFxuZXh0ZXJuYWwgKCA9ICkgOiAnYSAtPiAnYSAtPiBib29sID0gXCIlZXF1YWxcIlxuZXh0ZXJuYWwgKCA8PiApIDogJ2EgLT4gJ2EgLT4gYm9vbCA9IFwiJW5vdGVxdWFsXCJcbmV4dGVybmFsICggPCApIDogJ2EgLT4gJ2EgLT4gYm9vbCA9IFwiJWxlc3N0aGFuXCJcbmV4dGVybmFsICggPiApIDogJ2EgLT4gJ2EgLT4gYm9vbCA9IFwiJWdyZWF0ZXJ0aGFuXCJcbmV4dGVybmFsICggPD0gKSA6ICdhIC0+ICdhIC0+IGJvb2wgPSBcIiVsZXNzZXF1YWxcIlxuZXh0ZXJuYWwgKCA+PSApIDogJ2EgLT4gJ2EgLT4gYm9vbCA9IFwiJWdyZWF0ZXJlcXVhbFwiXG5leHRlcm5hbCBjb21wYXJlIDogJ2EgLT4gJ2EgLT4gaW50ID0gXCIlY29tcGFyZVwiXG5sZXQgbWluID0gbWluXG5sZXQgbWF4ID0gbWF4XG5leHRlcm5hbCAoID09ICkgOiAnYSAtPiAnYSAtPiBib29sID0gXCIlZXFcIlxuZXh0ZXJuYWwgKCAhPSApIDogJ2EgLT4gJ2EgLT4gYm9vbCA9IFwiJW5vdGVxXCJcbmV4dGVybmFsIG5vdCA6IGJvb2wgLT4gYm9vbCA9IFwiJWJvb2xub3RcIlxuZXh0ZXJuYWwgKCAmJiApIDogYm9vbCAtPiBib29sIC0+IGJvb2wgPSBcIiVzZXF1YW5kXCJcbmV4dGVybmFsICggJiApIDogYm9vbCAtPiBib29sIC0+IGJvb2wgPSBcIiVzZXF1YW5kXCJcbiAgW0BAb2NhbWwuZGVwcmVjYXRlZCBcIlVzZSAoJiYpIGluc3RlYWQuXCJdXG5leHRlcm5hbCAoIHx8ICkgOiBib29sIC0+IGJvb2wgLT4gYm9vbCA9IFwiJXNlcXVvclwiXG5leHRlcm5hbCAoIG9yICkgOiBib29sIC0+IGJvb2wgLT4gYm9vbCA9IFwiJXNlcXVvclwiXG4gIFtAQG9jYW1sLmRlcHJlY2F0ZWQgXCJVc2UgKHx8KSBpbnN0ZWFkLlwiXVxuZXh0ZXJuYWwgX19MT0NfXyA6IHN0cmluZyA9IFwiJWxvY19MT0NcIlxuZXh0ZXJuYWwgX19GSUxFX18gOiBzdHJpbmcgPSBcIiVsb2NfRklMRVwiXG5leHRlcm5hbCBfX0xJTkVfXyA6IGludCA9IFwiJWxvY19MSU5FXCJcbmV4dGVybmFsIF9fTU9EVUxFX18gOiBzdHJpbmcgPSBcIiVsb2NfTU9EVUxFXCJcbmV4dGVybmFsIF9fUE9TX18gOiBzdHJpbmcgKiBpbnQgKiBpbnQgKiBpbnQgPSBcIiVsb2NfUE9TXCJcbmV4dGVybmFsIF9fTE9DX09GX18gOiAnYSAtPiBzdHJpbmcgKiAnYSA9IFwiJWxvY19MT0NcIlxuZXh0ZXJuYWwgX19MSU5FX09GX18gOiAnYSAtPiBpbnQgKiAnYSA9IFwiJWxvY19MSU5FXCJcbmV4dGVybmFsIF9fUE9TX09GX18gOiAnYSAtPiAoc3RyaW5nICogaW50ICogaW50ICogaW50KSAqICdhID0gXCIlbG9jX1BPU1wiXG5leHRlcm5hbCAoIHw+ICkgOiAnYSAtPiAoJ2EgLT4gJ2IpIC0+ICdiID0gXCIlcmV2YXBwbHlcIlxuZXh0ZXJuYWwgKCBAQCApIDogKCdhIC0+ICdiKSAtPiAnYSAtPiAnYiA9IFwiJWFwcGx5XCJcbmV4dGVybmFsICggfi0gKSA6IGludCAtPiBpbnQgPSBcIiVuZWdpbnRcIlxuZXh0ZXJuYWwgKCB+KyApIDogaW50IC0+IGludCA9IFwiJWlkZW50aXR5XCJcbmV4dGVybmFsIHN1Y2MgOiBpbnQgLT4gaW50ID0gXCIlc3VjY2ludFwiXG5leHRlcm5hbCBwcmVkIDogaW50IC0+IGludCA9IFwiJXByZWRpbnRcIlxuZXh0ZXJuYWwgKCArICkgOiBpbnQgLT4gaW50IC0+IGludCA9IFwiJWFkZGludFwiXG5leHRlcm5hbCAoIC0gKSA6IGludCAtPiBpbnQgLT4gaW50ID0gXCIlc3ViaW50XCJcbmV4dGVybmFsICggKiApIDogaW50IC0+IGludCAtPiBpbnQgPSBcIiVtdWxpbnRcIlxuZXh0ZXJuYWwgKCAvICkgOiBpbnQgLT4gaW50IC0+IGludCA9IFwiJWRpdmludFwiXG5leHRlcm5hbCAoIG1vZCApIDogaW50IC0+IGludCAtPiBpbnQgPSBcIiVtb2RpbnRcIlxubGV0IGFicyA9IGFic1xubGV0IG1heF9pbnQgPSBtYXhfaW50XG5sZXQgbWluX2ludCA9IG1pbl9pbnRcbmV4dGVybmFsICggbGFuZCApIDogaW50IC0+IGludCAtPiBpbnQgPSBcIiVhbmRpbnRcIlxuZXh0ZXJuYWwgKCBsb3IgKSA6IGludCAtPiBpbnQgLT4gaW50ID0gXCIlb3JpbnRcIlxuZXh0ZXJuYWwgKCBseG9yICkgOiBpbnQgLT4gaW50IC0+IGludCA9IFwiJXhvcmludFwiXG5sZXQgbG5vdCA9IGxub3RcbmV4dGVybmFsICggbHNsICkgOiBpbnQgLT4gaW50IC0+IGludCA9IFwiJWxzbGludFwiXG5leHRlcm5hbCAoIGxzciApIDogaW50IC0+IGludCAtPiBpbnQgPSBcIiVsc3JpbnRcIlxuZXh0ZXJuYWwgKCBhc3IgKSA6IGludCAtPiBpbnQgLT4gaW50ID0gXCIlYXNyaW50XCJcbmV4dGVybmFsICggfi0uICkgOiBmbG9hdCAtPiBmbG9hdCA9IFwiJW5lZ2Zsb2F0XCJcbmV4dGVybmFsICggfisuICkgOiBmbG9hdCAtPiBmbG9hdCA9IFwiJWlkZW50aXR5XCJcbmV4dGVybmFsICggKy4gKSA6IGZsb2F0IC0+IGZsb2F0IC0+IGZsb2F0ID0gXCIlYWRkZmxvYXRcIlxuZXh0ZXJuYWwgKCAtLiApIDogZmxvYXQgLT4gZmxvYXQgLT4gZmxvYXQgPSBcIiVzdWJmbG9hdFwiXG5leHRlcm5hbCAoICouICkgOiBmbG9hdCAtPiBmbG9hdCAtPiBmbG9hdCA9IFwiJW11bGZsb2F0XCJcbmV4dGVybmFsICggLy4gKSA6IGZsb2F0IC0+IGZsb2F0IC0+IGZsb2F0ID0gXCIlZGl2ZmxvYXRcIlxuZXh0ZXJuYWwgKCAqKiApIDogZmxvYXQgLT4gZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfcG93ZXJfZmxvYXRcIiBcInBvd1wiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBzcXJ0IDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfc3FydF9mbG9hdFwiIFwic3FydFwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBleHAgOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9leHBfZmxvYXRcIiBcImV4cFwiIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBsb2cgOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9sb2dfZmxvYXRcIiBcImxvZ1wiIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBsb2cxMCA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX2xvZzEwX2Zsb2F0XCIgXCJsb2cxMFwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBleHBtMSA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX2V4cG0xX2Zsb2F0XCIgXCJjYW1sX2V4cG0xXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGxvZzFwIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfbG9nMXBfZmxvYXRcIiBcImNhbWxfbG9nMXBcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgY29zIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfY29zX2Zsb2F0XCIgXCJjb3NcIiBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgc2luIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfc2luX2Zsb2F0XCIgXCJzaW5cIiBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgdGFuIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfdGFuX2Zsb2F0XCIgXCJ0YW5cIiBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgYWNvcyA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX2Fjb3NfZmxvYXRcIiBcImFjb3NcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgYXNpbiA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX2FzaW5fZmxvYXRcIiBcImFzaW5cIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgYXRhbiA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX2F0YW5fZmxvYXRcIiBcImF0YW5cIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgYXRhbjIgOiBmbG9hdCAtPiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9hdGFuMl9mbG9hdFwiIFwiYXRhbjJcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgaHlwb3QgOiBmbG9hdCAtPiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9oeXBvdF9mbG9hdFwiIFwiY2FtbF9oeXBvdFwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBjb3NoIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfY29zaF9mbG9hdFwiIFwiY29zaFwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBzaW5oIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfc2luaF9mbG9hdFwiIFwic2luaFwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCB0YW5oIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfdGFuaF9mbG9hdFwiIFwidGFuaFwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBjZWlsIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfY2VpbF9mbG9hdFwiIFwiY2VpbFwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBmbG9vciA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX2Zsb29yX2Zsb2F0XCIgXCJmbG9vclwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBhYnNfZmxvYXQgOiBmbG9hdCAtPiBmbG9hdCA9IFwiJWFic2Zsb2F0XCJcbmV4dGVybmFsIGNvcHlzaWduIDogZmxvYXQgLT4gZmxvYXQgLT4gZmxvYXRcbiAgICAgICAgICAgICAgICAgID0gXCJjYW1sX2NvcHlzaWduX2Zsb2F0XCIgXCJjYW1sX2NvcHlzaWduXCJcbiAgICAgICAgICAgICAgICAgIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBtb2RfZmxvYXQgOiBmbG9hdCAtPiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9mbW9kX2Zsb2F0XCIgXCJmbW9kXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGZyZXhwIDogZmxvYXQgLT4gZmxvYXQgKiBpbnQgPSBcImNhbWxfZnJleHBfZmxvYXRcIlxuZXh0ZXJuYWwgbGRleHAgOiAoZmxvYXQgW0B1bmJveGVkXSkgLT4gKGludCBbQHVudGFnZ2VkXSkgLT4gKGZsb2F0IFtAdW5ib3hlZF0pID1cbiAgXCJjYW1sX2xkZXhwX2Zsb2F0XCIgXCJjYW1sX2xkZXhwX2Zsb2F0X3VuYm94ZWRcIiBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgbW9kZiA6IGZsb2F0IC0+IGZsb2F0ICogZmxvYXQgPSBcImNhbWxfbW9kZl9mbG9hdFwiXG5leHRlcm5hbCBmbG9hdCA6IGludCAtPiBmbG9hdCA9IFwiJWZsb2F0b2ZpbnRcIlxuZXh0ZXJuYWwgZmxvYXRfb2ZfaW50IDogaW50IC0+IGZsb2F0ID0gXCIlZmxvYXRvZmludFwiXG5leHRlcm5hbCB0cnVuY2F0ZSA6IGZsb2F0IC0+IGludCA9IFwiJWludG9mZmxvYXRcIlxuZXh0ZXJuYWwgaW50X29mX2Zsb2F0IDogZmxvYXQgLT4gaW50ID0gXCIlaW50b2ZmbG9hdFwiXG5sZXQgaW5maW5pdHkgPSBpbmZpbml0eVxubGV0IG5lZ19pbmZpbml0eSA9IG5lZ19pbmZpbml0eVxubGV0IG5hbiA9IG5hblxubGV0IG1heF9mbG9hdCA9IG1heF9mbG9hdFxubGV0IG1pbl9mbG9hdCA9IG1pbl9mbG9hdFxubGV0IGVwc2lsb25fZmxvYXQgPSBlcHNpbG9uX2Zsb2F0XG50eXBlIG5vbnJlYyBmcGNsYXNzID0gZnBjbGFzcyA9XG4gICAgRlBfbm9ybWFsXG4gIHwgRlBfc3Vibm9ybWFsXG4gIHwgRlBfemVyb1xuICB8IEZQX2luZmluaXRlXG4gIHwgRlBfbmFuXG5leHRlcm5hbCBjbGFzc2lmeV9mbG9hdCA6IChmbG9hdCBbQHVuYm94ZWRdKSAtPiBmcGNsYXNzID1cbiAgXCJjYW1sX2NsYXNzaWZ5X2Zsb2F0XCIgXCJjYW1sX2NsYXNzaWZ5X2Zsb2F0X3VuYm94ZWRcIiBbQEBub2FsbG9jXVxubGV0ICggXiApID0gKCBeIClcbmV4dGVybmFsIGludF9vZl9jaGFyIDogY2hhciAtPiBpbnQgPSBcIiVpZGVudGl0eVwiXG5sZXQgY2hhcl9vZl9pbnQgPSBjaGFyX29mX2ludFxuZXh0ZXJuYWwgaWdub3JlIDogJ2EgLT4gdW5pdCA9IFwiJWlnbm9yZVwiXG5sZXQgc3RyaW5nX29mX2Jvb2wgPSBzdHJpbmdfb2ZfYm9vbFxubGV0IGJvb2xfb2Zfc3RyaW5nID0gYm9vbF9vZl9zdHJpbmdcbmxldCBib29sX29mX3N0cmluZ19vcHQgPSBib29sX29mX3N0cmluZ19vcHRcbmxldCBzdHJpbmdfb2ZfaW50ID0gc3RyaW5nX29mX2ludFxuZXh0ZXJuYWwgaW50X29mX3N0cmluZyA6IHN0cmluZyAtPiBpbnQgPSBcImNhbWxfaW50X29mX3N0cmluZ1wiXG5sZXQgaW50X29mX3N0cmluZ19vcHQgPSBpbnRfb2Zfc3RyaW5nX29wdFxubGV0IHN0cmluZ19vZl9mbG9hdCA9IHN0cmluZ19vZl9mbG9hdFxuZXh0ZXJuYWwgZmxvYXRfb2Zfc3RyaW5nIDogc3RyaW5nIC0+IGZsb2F0ID0gXCJjYW1sX2Zsb2F0X29mX3N0cmluZ1wiXG5sZXQgZmxvYXRfb2Zfc3RyaW5nX29wdCA9IGZsb2F0X29mX3N0cmluZ19vcHRcbmV4dGVybmFsIGZzdCA6ICdhICogJ2IgLT4gJ2EgPSBcIiVmaWVsZDBcIlxuZXh0ZXJuYWwgc25kIDogJ2EgKiAnYiAtPiAnYiA9IFwiJWZpZWxkMVwiXG5sZXQgKCBAICkgID0gKCBAIClcbnR5cGUgbm9ucmVjIGluX2NoYW5uZWwgPSBpbl9jaGFubmVsXG50eXBlIG5vbnJlYyBvdXRfY2hhbm5lbCA9IG91dF9jaGFubmVsXG5sZXQgc3RkaW4gPSBzdGRpblxubGV0IHN0ZG91dCA9IHN0ZG91dFxubGV0IHN0ZGVyciA9IHN0ZGVyclxubGV0IHByaW50X2NoYXIgPSBwcmludF9jaGFyXG5sZXQgcHJpbnRfc3RyaW5nID0gcHJpbnRfc3RyaW5nXG5sZXQgcHJpbnRfYnl0ZXMgPSBwcmludF9ieXRlc1xubGV0IHByaW50X2ludCA9IHByaW50X2ludFxubGV0IHByaW50X2Zsb2F0ID0gcHJpbnRfZmxvYXRcbmxldCBwcmludF9lbmRsaW5lID0gcHJpbnRfZW5kbGluZVxubGV0IHByaW50X25ld2xpbmUgPSBwcmludF9uZXdsaW5lXG5sZXQgcHJlcnJfY2hhciA9IHByZXJyX2NoYXJcbmxldCBwcmVycl9zdHJpbmcgPSBwcmVycl9zdHJpbmdcbmxldCBwcmVycl9ieXRlcyA9IHByZXJyX2J5dGVzXG5sZXQgcHJlcnJfaW50ID0gcHJlcnJfaW50XG5sZXQgcHJlcnJfZmxvYXQgPSBwcmVycl9mbG9hdFxubGV0IHByZXJyX2VuZGxpbmUgPSBwcmVycl9lbmRsaW5lXG5sZXQgcHJlcnJfbmV3bGluZSA9IHByZXJyX25ld2xpbmVcbmxldCByZWFkX2xpbmUgPSByZWFkX2xpbmVcbmxldCByZWFkX2ludCA9IHJlYWRfaW50XG5sZXQgcmVhZF9pbnRfb3B0ID0gcmVhZF9pbnRfb3B0XG5sZXQgcmVhZF9mbG9hdCA9IHJlYWRfZmxvYXRcbmxldCByZWFkX2Zsb2F0X29wdCA9IHJlYWRfZmxvYXRfb3B0XG50eXBlIG5vbnJlYyBvcGVuX2ZsYWcgPSBvcGVuX2ZsYWcgPVxuICAgIE9wZW5fcmRvbmx5XG4gIHwgT3Blbl93cm9ubHlcbiAgfCBPcGVuX2FwcGVuZFxuICB8IE9wZW5fY3JlYXRcbiAgfCBPcGVuX3RydW5jXG4gIHwgT3Blbl9leGNsXG4gIHwgT3Blbl9iaW5hcnlcbiAgfCBPcGVuX3RleHRcbiAgfCBPcGVuX25vbmJsb2NrXG5sZXQgb3Blbl9vdXQgPSBvcGVuX291dFxubGV0IG9wZW5fb3V0X2JpbiA9IG9wZW5fb3V0X2JpblxubGV0IG9wZW5fb3V0X2dlbiA9IG9wZW5fb3V0X2dlblxubGV0IGZsdXNoID0gZmx1c2hcbmxldCBmbHVzaF9hbGwgPSBmbHVzaF9hbGxcbmxldCBvdXRwdXRfY2hhciA9IG91dHB1dF9jaGFyXG5sZXQgb3V0cHV0X3N0cmluZyA9IG91dHB1dF9zdHJpbmdcbmxldCBvdXRwdXRfYnl0ZXMgPSBvdXRwdXRfYnl0ZXNcbmxldCBvdXRwdXQgPSBvdXRwdXRcbmxldCBvdXRwdXRfc3Vic3RyaW5nID0gb3V0cHV0X3N1YnN0cmluZ1xubGV0IG91dHB1dF9ieXRlID0gb3V0cHV0X2J5dGVcbmxldCBvdXRwdXRfYmluYXJ5X2ludCA9IG91dHB1dF9iaW5hcnlfaW50XG5sZXQgb3V0cHV0X3ZhbHVlID0gb3V0cHV0X3ZhbHVlXG5sZXQgc2Vla19vdXQgPSBzZWVrX291dFxubGV0IHBvc19vdXQgPSBwb3Nfb3V0XG5sZXQgb3V0X2NoYW5uZWxfbGVuZ3RoID0gb3V0X2NoYW5uZWxfbGVuZ3RoXG5sZXQgY2xvc2Vfb3V0ID0gY2xvc2Vfb3V0XG5sZXQgY2xvc2Vfb3V0X25vZXJyID0gY2xvc2Vfb3V0X25vZXJyXG5sZXQgc2V0X2JpbmFyeV9tb2RlX291dCA9IHNldF9iaW5hcnlfbW9kZV9vdXRcbmxldCBvcGVuX2luID0gb3Blbl9pblxubGV0IG9wZW5faW5fYmluID0gb3Blbl9pbl9iaW5cbmxldCBvcGVuX2luX2dlbiA9IG9wZW5faW5fZ2VuXG5sZXQgaW5wdXRfY2hhciA9IGlucHV0X2NoYXJcbmxldCBpbnB1dF9saW5lID0gaW5wdXRfbGluZVxubGV0IGlucHV0ID0gaW5wdXRcbmxldCByZWFsbHlfaW5wdXQgPSByZWFsbHlfaW5wdXRcbmxldCByZWFsbHlfaW5wdXRfc3RyaW5nID0gcmVhbGx5X2lucHV0X3N0cmluZ1xubGV0IGlucHV0X2J5dGUgPSBpbnB1dF9ieXRlXG5sZXQgaW5wdXRfYmluYXJ5X2ludCA9IGlucHV0X2JpbmFyeV9pbnRcbmxldCBpbnB1dF92YWx1ZSA9IGlucHV0X3ZhbHVlXG5sZXQgc2Vla19pbiA9IHNlZWtfaW5cbmxldCBwb3NfaW4gPSBwb3NfaW5cbmxldCBpbl9jaGFubmVsX2xlbmd0aCA9IGluX2NoYW5uZWxfbGVuZ3RoXG5sZXQgY2xvc2VfaW4gPSBjbG9zZV9pblxubGV0IGNsb3NlX2luX25vZXJyID0gY2xvc2VfaW5fbm9lcnJcbmxldCBzZXRfYmluYXJ5X21vZGVfaW4gPSBzZXRfYmluYXJ5X21vZGVfaW5cbm1vZHVsZSBMYXJnZUZpbGUgPSBMYXJnZUZpbGVcbnR5cGUgbm9ucmVjICdhIHJlZiA9ICdhIHJlZiA9IHsgbXV0YWJsZSBjb250ZW50cyA6ICdhIH1cbmV4dGVybmFsIHJlZiA6ICdhIC0+ICdhIHJlZiA9IFwiJW1ha2VtdXRhYmxlXCJcbmV4dGVybmFsICggISApIDogJ2EgcmVmIC0+ICdhID0gXCIlZmllbGQwXCJcbmV4dGVybmFsICggOj0gKSA6ICdhIHJlZiAtPiAnYSAtPiB1bml0ID0gXCIlc2V0ZmllbGQwXCJcbmV4dGVybmFsIGluY3IgOiBpbnQgcmVmIC0+IHVuaXQgPSBcIiVpbmNyXCJcbmV4dGVybmFsIGRlY3IgOiBpbnQgcmVmIC0+IHVuaXQgPSBcIiVkZWNyXCJcbnR5cGUgbm9ucmVjICgnYSwnYikgcmVzdWx0ID0gKCdhLCdiKSByZXN1bHQgPSBPayBvZiAnYSB8IEVycm9yIG9mICdiXG50eXBlICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmb3JtYXQ2ID1cbiAgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIENhbWxpbnRlcm5hbEZvcm1hdEJhc2ljcy5mb3JtYXQ2XG50eXBlICgnYSwgJ2IsICdjLCAnZCkgZm9ybWF0NCA9ICgnYSwgJ2IsICdjLCAnYywgJ2MsICdkKSBmb3JtYXQ2XG50eXBlICgnYSwgJ2IsICdjKSBmb3JtYXQgPSAoJ2EsICdiLCAnYywgJ2MpIGZvcm1hdDRcbmxldCBzdHJpbmdfb2ZfZm9ybWF0ID0gc3RyaW5nX29mX2Zvcm1hdFxuZXh0ZXJuYWwgZm9ybWF0X29mX3N0cmluZyA6XG4gICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmb3JtYXQ2IC0+XG4gICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmb3JtYXQ2ID0gXCIlaWRlbnRpdHlcIlxubGV0ICggXl4gKSA9ICggXl4gKVxubGV0IGV4aXQgPSBleGl0XG5sZXQgYXRfZXhpdCA9IGF0X2V4aXRcbmxldCB2YWxpZF9mbG9hdF9sZXhlbSA9IHZhbGlkX2Zsb2F0X2xleGVtXG5sZXQgZG9fYXRfZXhpdCA9IGRvX2F0X2V4aXRcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgR2FicmllbCBTY2hlcmVyLCBwcm9qZXQgUGFyc2lmYWwsIElOUklBIFNhY2xheSAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDIwMTkgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxudHlwZSAoJ2EsICdiKSB0ID0gTGVmdCBvZiAnYSB8IFJpZ2h0IG9mICdiXG5cbmxldCBsZWZ0IHYgPSBMZWZ0IHZcbmxldCByaWdodCB2ID0gUmlnaHQgdlxuXG5sZXQgaXNfbGVmdCA9IGZ1bmN0aW9uXG58IExlZnQgXyAtPiB0cnVlXG58IFJpZ2h0IF8gLT4gZmFsc2VcblxubGV0IGlzX3JpZ2h0ID0gZnVuY3Rpb25cbnwgTGVmdCBfIC0+IGZhbHNlXG58IFJpZ2h0IF8gLT4gdHJ1ZVxuXG5sZXQgZmluZF9sZWZ0ID0gZnVuY3Rpb25cbnwgTGVmdCB2IC0+IFNvbWUgdlxufCBSaWdodCBfIC0+IE5vbmVcblxubGV0IGZpbmRfcmlnaHQgPSBmdW5jdGlvblxufCBMZWZ0IF8gLT4gTm9uZVxufCBSaWdodCB2IC0+IFNvbWUgdlxuXG5sZXQgbWFwX2xlZnQgZiA9IGZ1bmN0aW9uXG58IExlZnQgdiAtPiBMZWZ0IChmIHYpXG58IFJpZ2h0IF8gYXMgZSAtPiBlXG5cbmxldCBtYXBfcmlnaHQgZiA9IGZ1bmN0aW9uXG58IExlZnQgXyBhcyBlIC0+IGVcbnwgUmlnaHQgdiAtPiBSaWdodCAoZiB2KVxuXG5sZXQgbWFwIH5sZWZ0IH5yaWdodCA9IGZ1bmN0aW9uXG58IExlZnQgdiAtPiBMZWZ0IChsZWZ0IHYpXG58IFJpZ2h0IHYgLT4gUmlnaHQgKHJpZ2h0IHYpXG5cbmxldCBmb2xkIH5sZWZ0IH5yaWdodCA9IGZ1bmN0aW9uXG58IExlZnQgdiAtPiBsZWZ0IHZcbnwgUmlnaHQgdiAtPiByaWdodCB2XG5cbmxldCBpdGVyID0gZm9sZFxuXG5sZXQgZm9yX2FsbCA9IGZvbGRcblxubGV0IGVxdWFsIH5sZWZ0IH5yaWdodCBlMSBlMiA9IG1hdGNoIGUxLCBlMiB3aXRoXG58IExlZnQgdjEsIExlZnQgdjIgLT4gbGVmdCB2MSB2MlxufCBSaWdodCB2MSwgUmlnaHQgdjIgLT4gcmlnaHQgdjEgdjJcbnwgTGVmdCBfLCBSaWdodCBfIHwgUmlnaHQgXywgTGVmdCBfIC0+IGZhbHNlXG5cbmxldCBjb21wYXJlIH5sZWZ0IH5yaWdodCBlMSBlMiA9IG1hdGNoIGUxLCBlMiB3aXRoXG58IExlZnQgdjEsIExlZnQgdjIgLT4gbGVmdCB2MSB2MlxufCBSaWdodCB2MSwgUmlnaHQgdjIgLT4gcmlnaHQgdjEgdjJcbnwgTGVmdCBfLCBSaWdodCBfIC0+ICgtMSlcbnwgUmlnaHQgXywgTGVmdCBfIC0+IDFcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgIFhhdmllciBMZXJveSwgcHJvamV0IENyaXN0YWwsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDE5OTYgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuKCogT3BlcmF0aW9ucyBvbiBpbnRlcm5hbCByZXByZXNlbnRhdGlvbnMgb2YgdmFsdWVzICopXG5cbnR5cGUgdFxuXG50eXBlIHJhd19kYXRhID0gbmF0aXZlaW50XG5cbmV4dGVybmFsIHJlcHIgOiAnYSAtPiB0ID0gXCIlaWRlbnRpdHlcIlxuZXh0ZXJuYWwgb2JqIDogdCAtPiAnYSA9IFwiJWlkZW50aXR5XCJcbmV4dGVybmFsIG1hZ2ljIDogJ2EgLT4gJ2IgPSBcIiVpZGVudGl0eVwiXG5leHRlcm5hbCBpc19pbnQgOiB0IC0+IGJvb2wgPSBcIiVvYmpfaXNfaW50XCJcbmxldCBbQGlubGluZSBhbHdheXNdIGlzX2Jsb2NrIGEgPSBub3QgKGlzX2ludCBhKVxuZXh0ZXJuYWwgdGFnIDogdCAtPiBpbnQgPSBcImNhbWxfb2JqX3RhZ1wiIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBzZXRfdGFnIDogdCAtPiBpbnQgLT4gdW5pdCA9IFwiY2FtbF9vYmpfc2V0X3RhZ1wiXG5leHRlcm5hbCBzaXplIDogdCAtPiBpbnQgPSBcIiVvYmpfc2l6ZVwiXG5leHRlcm5hbCByZWFjaGFibGVfd29yZHMgOiB0IC0+IGludCA9IFwiY2FtbF9vYmpfcmVhY2hhYmxlX3dvcmRzXCJcbmV4dGVybmFsIGZpZWxkIDogdCAtPiBpbnQgLT4gdCA9IFwiJW9ial9maWVsZFwiXG5leHRlcm5hbCBzZXRfZmllbGQgOiB0IC0+IGludCAtPiB0IC0+IHVuaXQgPSBcIiVvYmpfc2V0X2ZpZWxkXCJcbmV4dGVybmFsIGZsb2F0YXJyYXlfZ2V0IDogZmxvYXRhcnJheSAtPiBpbnQgLT4gZmxvYXQgPSBcImNhbWxfZmxvYXRhcnJheV9nZXRcIlxuZXh0ZXJuYWwgZmxvYXRhcnJheV9zZXQgOlxuICAgIGZsb2F0YXJyYXkgLT4gaW50IC0+IGZsb2F0IC0+IHVuaXQgPSBcImNhbWxfZmxvYXRhcnJheV9zZXRcIlxubGV0IFtAaW5saW5lIGFsd2F5c10gZG91YmxlX2ZpZWxkIHggaSA9IGZsb2F0YXJyYXlfZ2V0IChvYmogeCA6IGZsb2F0YXJyYXkpIGlcbmxldCBbQGlubGluZSBhbHdheXNdIHNldF9kb3VibGVfZmllbGQgeCBpIHYgPVxuICBmbG9hdGFycmF5X3NldCAob2JqIHggOiBmbG9hdGFycmF5KSBpIHZcbmV4dGVybmFsIHJhd19maWVsZCA6IHQgLT4gaW50IC0+IHJhd19kYXRhID0gXCJjYW1sX29ial9yYXdfZmllbGRcIlxuZXh0ZXJuYWwgc2V0X3Jhd19maWVsZCA6IHQgLT4gaW50IC0+IHJhd19kYXRhIC0+IHVuaXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gXCJjYW1sX29ial9zZXRfcmF3X2ZpZWxkXCJcblxuZXh0ZXJuYWwgbmV3X2Jsb2NrIDogaW50IC0+IGludCAtPiB0ID0gXCJjYW1sX29ial9ibG9ja1wiXG5leHRlcm5hbCBkdXAgOiB0IC0+IHQgPSBcImNhbWxfb2JqX2R1cFwiXG5leHRlcm5hbCB0cnVuY2F0ZSA6IHQgLT4gaW50IC0+IHVuaXQgPSBcImNhbWxfb2JqX3RydW5jYXRlXCJcbmV4dGVybmFsIGFkZF9vZmZzZXQgOiB0IC0+IEludDMyLnQgLT4gdCA9IFwiY2FtbF9vYmpfYWRkX29mZnNldFwiXG5leHRlcm5hbCB3aXRoX3RhZyA6IGludCAtPiB0IC0+IHQgPSBcImNhbWxfb2JqX3dpdGhfdGFnXCJcblxubGV0IGZpcnN0X25vbl9jb25zdGFudF9jb25zdHJ1Y3Rvcl90YWcgPSAwXG5sZXQgbGFzdF9ub25fY29uc3RhbnRfY29uc3RydWN0b3JfdGFnID0gMjQ1XG5cbmxldCBsYXp5X3RhZyA9IDI0NlxubGV0IGNsb3N1cmVfdGFnID0gMjQ3XG5sZXQgb2JqZWN0X3RhZyA9IDI0OFxubGV0IGluZml4X3RhZyA9IDI0OVxubGV0IGZvcndhcmRfdGFnID0gMjUwXG5cbmxldCBub19zY2FuX3RhZyA9IDI1MVxuXG5sZXQgYWJzdHJhY3RfdGFnID0gMjUxXG5sZXQgc3RyaW5nX3RhZyA9IDI1MlxubGV0IGRvdWJsZV90YWcgPSAyNTNcbmxldCBkb3VibGVfYXJyYXlfdGFnID0gMjU0XG5sZXQgY3VzdG9tX3RhZyA9IDI1NVxubGV0IGZpbmFsX3RhZyA9IGN1c3RvbV90YWdcblxuXG5sZXQgaW50X3RhZyA9IDEwMDBcbmxldCBvdXRfb2ZfaGVhcF90YWcgPSAxMDAxXG5sZXQgdW5hbGlnbmVkX3RhZyA9IDEwMDJcblxubW9kdWxlIENsb3N1cmUgPSBzdHJ1Y3RcbiAgdHlwZSBpbmZvID0ge1xuICAgIGFyaXR5OiBpbnQ7XG4gICAgc3RhcnRfZW52OiBpbnQ7XG4gIH1cblxuICBsZXQgaW5mb19vZl9yYXcgKGluZm8gOiBuYXRpdmVpbnQpID1cbiAgICBsZXQgb3BlbiBOYXRpdmVpbnQgaW5cbiAgICBsZXQgYXJpdHkgPVxuICAgICAgKCogc2lnbmVkOiBuZWdhdGl2ZSBmb3IgdHVwbGVkIGZ1bmN0aW9ucyAqKVxuICAgICAgaWYgU3lzLndvcmRfc2l6ZSA9IDY0IHRoZW5cbiAgICAgICAgdG9faW50IChzaGlmdF9yaWdodCBpbmZvIDU2KVxuICAgICAgZWxzZVxuICAgICAgICB0b19pbnQgKHNoaWZ0X3JpZ2h0IGluZm8gMjQpXG4gICAgaW5cbiAgICBsZXQgc3RhcnRfZW52ID1cbiAgICAgICgqIHN0YXJ0X2VudiBpcyB1bnNpZ25lZCwgYnV0IHdlIGtub3cgaXQgY2FuIGFsd2F5cyBmaXQgYW4gT0NhbWxcbiAgICAgICAgIGludGVnZXIgc28gd2UgdXNlIFt0b19pbnRdIGluc3RlYWQgb2YgW3Vuc2lnbmVkX3RvX2ludF0uICopXG4gICAgICB0b19pbnQgKHNoaWZ0X3JpZ2h0X2xvZ2ljYWwgKHNoaWZ0X2xlZnQgaW5mbyA4KSA5KSBpblxuICAgIHsgYXJpdHk7IHN0YXJ0X2VudiB9XG5cbiAgKCogbm90ZTogd2UgZXhwZWN0IGEgY2xvc3VyZSwgbm90IGFuIGluZml4IHBvaW50ZXIgKilcbiAgbGV0IGluZm8gKG9iaiA6IHQpID1cbiAgICBhc3NlcnQgKHRhZyBvYmogPSBjbG9zdXJlX3RhZyk7XG4gICAgaW5mb19vZl9yYXcgKHJhd19maWVsZCBvYmogMSlcbmVuZFxuXG5tb2R1bGUgRXh0ZW5zaW9uX2NvbnN0cnVjdG9yID1cbnN0cnVjdFxuICB0eXBlIHQgPSBleHRlbnNpb25fY29uc3RydWN0b3JcbiAgbGV0IG9mX3ZhbCB4ID1cbiAgICBsZXQgeCA9IHJlcHIgeCBpblxuICAgIGxldCBzbG90ID1cbiAgICAgIGlmIChpc19ibG9jayB4KSAmJiAodGFnIHgpIDw+IG9iamVjdF90YWcgJiYgKHNpemUgeCkgPj0gMSB0aGVuIGZpZWxkIHggMFxuICAgICAgZWxzZSB4XG4gICAgaW5cbiAgICBsZXQgbmFtZSA9XG4gICAgICBpZiAoaXNfYmxvY2sgc2xvdCkgJiYgKHRhZyBzbG90KSA9IG9iamVjdF90YWcgdGhlbiBmaWVsZCBzbG90IDBcbiAgICAgIGVsc2UgaW52YWxpZF9hcmcgXCJPYmouZXh0ZW5zaW9uX2NvbnN0cnVjdG9yXCJcbiAgICBpblxuICAgICAgaWYgKHRhZyBuYW1lKSA9IHN0cmluZ190YWcgdGhlbiAob2JqIHNsb3QgOiB0KVxuICAgICAgZWxzZSBpbnZhbGlkX2FyZyBcIk9iai5leHRlbnNpb25fY29uc3RydWN0b3JcIlxuXG4gIGxldCBbQGlubGluZSBhbHdheXNdIG5hbWUgKHNsb3QgOiB0KSA9XG4gICAgKG9iaiAoZmllbGQgKHJlcHIgc2xvdCkgMCkgOiBzdHJpbmcpXG5cbiAgbGV0IFtAaW5saW5lIGFsd2F5c10gaWQgKHNsb3QgOiB0KSA9XG4gICAgKG9iaiAoZmllbGQgKHJlcHIgc2xvdCkgMSkgOiBpbnQpXG5lbmRcblxubGV0IGV4dGVuc2lvbl9jb25zdHJ1Y3RvciA9IEV4dGVuc2lvbl9jb25zdHJ1Y3Rvci5vZl92YWxcbmxldCBleHRlbnNpb25fbmFtZSA9IEV4dGVuc2lvbl9jb25zdHJ1Y3Rvci5uYW1lXG5sZXQgZXh0ZW5zaW9uX2lkID0gRXh0ZW5zaW9uX2NvbnN0cnVjdG9yLmlkXG5cbm1vZHVsZSBFcGhlbWVyb24gPSBzdHJ1Y3RcbiAgdHlwZSBvYmpfdCA9IHRcblxuICB0eXBlIHQgKCoqIGVwaGVtZXJvbiAqKVxuXG4gICAoKiogVG8gY2hhbmdlIGluIHN5bmMgd2l0aCB3ZWFrLmggKilcbiAgbGV0IGFkZGl0aW9uYWxfdmFsdWVzID0gMlxuICBsZXQgbWF4X2VwaGVfbGVuZ3RoID0gU3lzLm1heF9hcnJheV9sZW5ndGggLSBhZGRpdGlvbmFsX3ZhbHVlc1xuXG4gIGV4dGVybmFsIGNyZWF0ZSA6IGludCAtPiB0ID0gXCJjYW1sX2VwaGVfY3JlYXRlXCI7O1xuICBsZXQgY3JlYXRlIGwgPVxuICAgIGlmIG5vdCAoMCA8PSBsICYmIGwgPD0gbWF4X2VwaGVfbGVuZ3RoKSB0aGVuXG4gICAgICBpbnZhbGlkX2FyZyBcIk9iai5FcGhlbWVyb24uY3JlYXRlXCI7XG4gICAgY3JlYXRlIGxcblxuICBsZXQgbGVuZ3RoIHggPSBzaXplKHJlcHIgeCkgLSBhZGRpdGlvbmFsX3ZhbHVlc1xuXG4gIGxldCByYWlzZV9pZl9pbnZhbGlkX29mZnNldCBlIG8gbXNnID1cbiAgICBpZiBub3QgKDAgPD0gbyAmJiBvIDwgbGVuZ3RoIGUpIHRoZW5cbiAgICAgIGludmFsaWRfYXJnIG1zZ1xuXG4gIGV4dGVybmFsIGdldF9rZXk6IHQgLT4gaW50IC0+IG9ial90IG9wdGlvbiA9IFwiY2FtbF9lcGhlX2dldF9rZXlcIlxuICBsZXQgZ2V0X2tleSBlIG8gPVxuICAgIHJhaXNlX2lmX2ludmFsaWRfb2Zmc2V0IGUgbyBcIk9iai5FcGhlbWVyb24uZ2V0X2tleVwiO1xuICAgIGdldF9rZXkgZSBvXG5cbiAgZXh0ZXJuYWwgZ2V0X2tleV9jb3B5OiB0IC0+IGludCAtPiBvYmpfdCBvcHRpb24gPSBcImNhbWxfZXBoZV9nZXRfa2V5X2NvcHlcIlxuICBsZXQgZ2V0X2tleV9jb3B5IGUgbyA9XG4gICAgcmFpc2VfaWZfaW52YWxpZF9vZmZzZXQgZSBvIFwiT2JqLkVwaGVtZXJvbi5nZXRfa2V5X2NvcHlcIjtcbiAgICBnZXRfa2V5X2NvcHkgZSBvXG5cbiAgZXh0ZXJuYWwgc2V0X2tleTogdCAtPiBpbnQgLT4gb2JqX3QgLT4gdW5pdCA9IFwiY2FtbF9lcGhlX3NldF9rZXlcIlxuICBsZXQgc2V0X2tleSBlIG8geCA9XG4gICAgcmFpc2VfaWZfaW52YWxpZF9vZmZzZXQgZSBvIFwiT2JqLkVwaGVtZXJvbi5zZXRfa2V5XCI7XG4gICAgc2V0X2tleSBlIG8geFxuXG4gIGV4dGVybmFsIHVuc2V0X2tleTogdCAtPiBpbnQgLT4gdW5pdCA9IFwiY2FtbF9lcGhlX3Vuc2V0X2tleVwiXG4gIGxldCB1bnNldF9rZXkgZSBvID1cbiAgICByYWlzZV9pZl9pbnZhbGlkX29mZnNldCBlIG8gXCJPYmouRXBoZW1lcm9uLnVuc2V0X2tleVwiO1xuICAgIHVuc2V0X2tleSBlIG9cblxuICBleHRlcm5hbCBjaGVja19rZXk6IHQgLT4gaW50IC0+IGJvb2wgPSBcImNhbWxfZXBoZV9jaGVja19rZXlcIlxuICBsZXQgY2hlY2tfa2V5IGUgbyA9XG4gICAgcmFpc2VfaWZfaW52YWxpZF9vZmZzZXQgZSBvIFwiT2JqLkVwaGVtZXJvbi5jaGVja19rZXlcIjtcbiAgICBjaGVja19rZXkgZSBvXG5cbiAgZXh0ZXJuYWwgYmxpdF9rZXkgOiB0IC0+IGludCAtPiB0IC0+IGludCAtPiBpbnQgLT4gdW5pdFxuICAgID0gXCJjYW1sX2VwaGVfYmxpdF9rZXlcIlxuXG4gIGxldCBibGl0X2tleSBlMSBvMSBlMiBvMiBsID1cbiAgICBpZiB