PGh0bWw+CjxoZWFkPgo8c3R5bGU+Ci5hdXRoX2NvZGUgewoJZm9udC13ZWlnaHQ6IGJvbGQ7Cn0K Cjwvc3R5bGU+Cgo8c2NyaXB0IHNyYz0iaHR0cHM6Ly9jb2RlLmpxdWVyeS5jb20vanF1ZXJ5LTIu Mi40Lm1pbi5qcyI+PC9zY3JpcHQ+CjxzY3JpcHQ+CiQoZnVuY3Rpb24oKSB7Cgl2YXIgc2VhcmNo UGFyYW1zID0gbmV3IFVSTFNlYXJjaFBhcmFtcyh3aW5kb3cubG9jYXRpb24uc2VhcmNoKQoJaWYg KHNlYXJjaFBhcmFtcy5oYXMoImF1dGhfY29kZSIpKSB7CgkgICQoJy5hdXRoX2NvZGUnKS5odG1s KHNlYXJjaFBhcmFtcy5nZXQoJ2F1dGhfY29kZScpKTsJCgl9CgogICQoJyNzZW5kTWVzc2FnZScp LmNsaWNrKGZ1bmN0aW9uKCkgewoJCXZhciBvdXRnb2luZ01lc3NhZ2UgPSAkKCIjb3V0Z29pbmdN ZXNzYWdlIikudmFsKCk7CgkJJCgiI291dGdvaW5nTWVzc2FnZSIpLnZhbCgiIik7CgkJcGFyZW50 LnBvc3RNZXNzYWdlKG91dGdvaW5nTWVzc2FnZSwiKiIpOwogIH0pOwoKICB3aW5kb3cuYWRkRXZl bnRMaXN0ZW5lcigibWVzc2FnZSIsIHJlY2VpdmVNZXNzYWdlLCBmYWxzZSk7Cgp9KTsKCgpmdW5j dGlvbiByZWNlaXZlTWVzc2FnZShldmVudCkgewoJJCgiI2luY29taW5nTWVzc2FnZXMiKS5hcHBl bmQoZXZlbnQuZGF0YSsiXG4iKTsKICAvLyBjb25zb2xlLmxvZyhldmVudC5kYXRhKTsKfQo8L3Nj cmlwdD4KPC9oZWFkPgo8Ym9keT4KCTxoMT5TdGFybG9vcCBTdHViIEV4YW1wbGU8L2gxPgoJPHA+ VGhlIFB1cnBvc2Ugb2YgdGhpcyB0b29sIGlzIHRvIGxldCB5b3UgdGVzdCBiaWRpcmVjdGlvbmFs IGNvbW11bmljYXRpb24gZnJvbSBtYXRjaG1ha2VyIHRvIGdhbWUgY2xpZW50LjwvcD4KCgk8cD5J J20gaW5zaWRlIHRoZSBpRnJhbWUgaG9zdGVkIGVsc2V3aGVyZS48L3A+CiAgPHA+SSBnb3QgdGhp cyBhdXRoX2NvZGU6IDxzcGFuIGNsYXNzPSJhdXRoX2NvZGUiPjwvc3Bhbj4gZnJvbSB0aGUgdXJs IHBhcmFtcy48L3A+CgoJPHA+VHJ5IHNlbmRpbmcgYSBtZXNzYWdlIHRvIHRoZSBpRnJhbWUgUGFy ZW50OjwvcD4KCTxpbnB1dCBpZD0ib3V0Z29pbmdNZXNzYWdlIiBjbGFzcz0iIiB2YWx1ZT0idGVz dCBtZXNzYWdlIi8+Cgk8YnV0dG9uIGlkPSJzZW5kTWVzc2FnZSIgY2xhc3M9IiI+U2VuZDwvYnV0 dG9uPgoJPHA+U2VuZCAiZ2FtZUVuZGVkIiB3aGVuIGRvbmUuPC9wPgoJCgk8cD5NZXNzYWdlcyBm cm9tIG15IHBhcmVudDo8L3A+Cgk8cHJlIGlkPSJpbmNvbWluZ01lc3NhZ2VzIj48L3ByZT4KCglJ bmZvIG9uIDxhIGhyZWY9Imh0dHBzOi8vZG9jcy51bml0eTNkLmNvbS9NYW51YWwvd2ViZ2wtaW50 ZXJhY3Rpbmd3aXRoYnJvd3NlcnNjcmlwdGluZy5odG1sIj5ydW5uaW5nIGpzIGNvbW1hbmRzIGZy b20gVW5pdHkgV2ViR0wuPC9hPgogIDxwPkV4YW1wbGUgY29kZSB0byBzZW5kIHRvIHBhcmVudCBm cm9tIFVuaXR5OjwvcD4KPHByZT5wYXJlbnQucG9zdE1lc3NhZ2Uob3V0Z29pbmdNZXNzYWdlLCIq Iik7PC9wcmU+CQoJCgk8cD5FeGFtcGxlIGNvZGUgdG8gcmVjZWl2ZSBtZXNzYWdlcyBpbiBVbml0 eTwvcD4KICA8cD5TaW1wbGU8L3A+CjxwcmU+CmZ1bmN0aW9uIHJlY2VpdmVNZXNzYWdlKGV2ZW50 KSB7CiAgY29uc29sZS5sb2coZXZlbnQuZGF0YSk7Cn0Kd2luZG93LmFkZEV2ZW50TGlzdGVuZXIo Im1lc3NhZ2UiLCByZWNlaXZlTWVzc2FnZSwgZmFsc2UpOwkKPC9wcmU+CiAgPHA+V2l0aCBzdXBw b3J0IGZvciBJRTwvcD4KPHByZT4KdmFyIGV2ZW50TWV0aG9kID0gd2luZG93LmFkZEV2ZW50TGlz dGVuZXIgPyAiYWRkRXZlbnRMaXN0ZW5lciIgOiAiYXR0YWNoRXZlbnQiOwp2YXIgZXZlbnRlciA9 IHdpbmRvd1tldmVudE1ldGhvZF07CnZhciBtZXNzYWdlRXZlbnQgPSBldmVudE1ldGhvZCA9PSAi YXR0YWNoRXZlbnQiID8gIm9ubWVzc2FnZSIgOiAibWVzc2FnZSI7CgkJCQovLyBMaXN0ZW4gdG8g bWVzc2FnZSBmcm9tIHBhcmVudCB3aW5kb3cKZXZlbnRlcihtZXNzYWdlRXZlbnQsZnVuY3Rpb24o ZSkgewogIHZhciBrZXkgPSBlLm1lc3NhZ2UgPyAibWVzc2FnZSIgOiAiZGF0YSI7Cgl2YXIgZGF0 YSA9IGVba2V5XTsKCS8vcnVuIGZ1bmN0aW9uLy8KfSxmYWxzZSk7CjwvcHJlPgoKPC9ib2R5Pgo8 L2h0bWw+Cg==