Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- 海阔视界规则分享,当前分享的是:二级页面详情¥page_detail¥锦绣安宁@@eyJkYXRhIjoie1wiYXNzb2NpYXRlZE1vZGVsc01hcEZvckpvaW5UYWJsZVwiOnt9LFwiYXNzb2NpYXRlZE1vZGVsc01hcFdpdGhGS1wiOnt9LFwiYXNzb2NpYXRlZE1vZGVsc01hcFdpdGhvdXRGS1wiOnt9LFwiZGlzcGxheU5hbWVcIjpcIuauteWPi+W9seinhjJcIixcImZpZWxkc1RvU2V0VG9EZWZhdWx0XCI6W10sXCJnbXRNb2RpZmllZFwiOjAsXCJpZFwiOjAsXCJsYXN0X2NoYXB0ZXJfcnVsZVwiOlwianM6KFxcbmZ1bmN0aW9uIChhcHB0eXBlKSB7XFxuICAgIGxldCBjaHAgPSBbXTtcXG4gICAgdHJ5IHtcXG4gICAgICAgIGxldCBodG1sID0ge30sIGNvbnRzID0gW107XFxuICAgICAgICBpZiAoL1RWLy50ZXN0KGFwcHR5cGUpKSB7XFxuICAgICAgICAgICAgaHRtbCA9IEpTT04ucGFyc2UoZmV0Y2goTVlfVVJMLnNwbGl0KFxcXCIjI1xcXCIpWzFdKSk7XFxuICAgICAgICB9IGVsc2Uge1xcbiAgICAgICAgICAgIGh0bWwgPSBKU09OLnBhcnNlKGZldGNoKE1ZX1VSTC5zcGxpdChcXFwiIyNcXFwiKVsxXSwge2hlYWRlcnM6IHtcXFwiVXNlci1BZ2VudFxcXCI6IFxcXCJEYXJ0LzIuMTMgKGRhcnQ6aW8pXFxcIn19KSk7XFxuICAgICAgICB9XFxuICAgICAgICBpZiAoaHRtbC52aWRlb2xpc3QpIHtcXG4gICAgICAgICAgICBjb250cyA9IE9iamVjdC5rZXlzKGh0bWwudmlkZW9saXN0KTtcXG4gICAgICAgIH0gZWxzZSB7XFxuICAgICAgICAgICAgaWYgKGh0bWwuZGF0YS52b2RfdXJsX3dpdGhfcGxheWVyKSB7XFxuICAgICAgICAgICAgICAgIGNvbnRzID0gaHRtbC5kYXRhLnZvZF91cmxfd2l0aF9wbGF5ZXI7XFxuICAgICAgICAgICAgICAgIGlmIChjb250cy5sZW5ndGggPCAxKSB7XFxuICAgICAgICAgICAgICAgICAgICBjb250cyA9IGh0bWwuZGF0YS52b2RfcGxheV91cmwuc3BsaXQoXFxcIiQkJFxcXCIpO1xcbiAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgfSBlbHNlIHtcXG4gICAgICAgICAgICAgICAgaWYgKGh0bWwuZGF0YS52b2RfaW5mbyAmJiBodG1sLmRhdGEudm9kX2luZm8udm9kX3VybF93aXRoX3BsYXllcikge1xcbiAgICAgICAgICAgICAgICAgICAgY29udHMgPSBodG1sLmRhdGEudm9kX2luZm8udm9kX3VybF93aXRoX3BsYXllcjtcXG4gICAgICAgICAgICAgICAgICAgIGlmIChjb250cy5sZW5ndGggPCAxKSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgY29udHMgPSBodG1sLmRhdGEudm9kX2luZm8udm9kX3BsYXlfdXJsLnNwbGl0KFxcXCIkJCRcXFwiKTtcXG4gICAgICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcXG4gICAgICAgICAgICAgICAgICAgIGNvbnRzID0gaHRtbC5kYXRhLnZvZF9wbGF5X2xpc3Q7XFxuICAgICAgICAgICAgICAgICAgICBpZiAoY29udHMubGVuZ3RoIDwgMSkge1xcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRzID0gaHRtbC5kYXRhLnZvZF9wbGF5X3VybC5zcGxpdChcXFwiJCQkXFxcIik7XFxuICAgICAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICB9XFxuICAgICAgICB9XFxuICAgICAgICBsZXQgbGlzdCA9IFtdO1xcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBjb250cy5sZW5ndGg7IGkrKykge1xcbiAgICAgICAgICAgIGlmIChodG1sLnZpZGVvbGlzdCkge1xcbiAgICAgICAgICAgICAgICBsaXN0ID0gaHRtbC52aWRlb2xpc3RbY29udHNbaV1dO1xcbiAgICAgICAgICAgIH0gZWxzZSB7XFxuICAgICAgICAgICAgICAgIGlmIChjb250c1tpXS51cmxzKSB7XFxuICAgICAgICAgICAgICAgICAgICBsaXN0ID0gY29udHNbaV0udXJscztcXG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcXG4gICAgICAgICAgICAgICAgICAgIGlmIChjb250c1tpXS51cmwpIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICBsaXN0ID0gY29udHNbaV0udXJsLnNwbGl0KFxcXCIjXFxcIik7XFxuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xcbiAgICAgICAgICAgICAgICAgICAgICAgIGxpc3QgPSBjb250c1tpXS5zcGxpdChcXFwiI1xcXCIpO1xcbiAgICAgICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgfVxcbiAgICAgICAgICAgIGNocC5wdXNoKGxpc3QubGVuZ3RoKTtcXG4gICAgICAgIH1cXG4gICAgfVxcbiAgICBjYXRjaCAoZSkge1xcbiAgICB9XFxuICAgIHNldFJlc3VsdChcXFwiXFxcXHU2NmY0XFxcXHU2NWIwXFxcXHU4MWYzOlxcXCIgKyAoTWF0aC5tYXguYXBwbHkoTWF0aCwgY2hwKSkpO1xcbn1cXG4pKFxcXCLkvJjotKg1OVxcXCIpXCIsXCJsaXN0VG9DbGVhckFzc29jaWF0ZWRGS1wiOltdLFwibGlzdFRvQ2xlYXJTZWxmRktcIjpbXSxcInBhZ2VMaXN0XCI6W3tcIm5hbWVcIjpcIkFQUOWIhuexu+WIl+ihqFwiLFwicGF0aFwiOlwiYXBwbGlzdGRhdGFcIixcInJ1bGVcIjpcIihcXG5mdW5jdGlvbiAoKSB7XFxuICAgIGxldCBsaXN0ID0gW107XFxuICAgIGlmIChodG1sLmxpc3QpIHtcXG4gICAgICAgIGxpc3QgPSBodG1sLmxpc3Q7XFxuICAgIH0gZWxzZSB7XFxuICAgICAgICBpZiAoaHRtbC5kYXRhICYmIGh0bWwuZGF0YS5saXN0KSB7XFxuICAgICAgICAgICAgbGlzdCA9IGh0bWwuZGF0YS5saXN0O1xcbiAgICAgICAgfSBlbHNlIHtcXG4gICAgICAgICAgICBsaXN0ID0gaHRtbC5kYXRhO1xcbiAgICAgICAgfVxcbiAgICB9XFxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbGlzdC5sZW5ndGg7IGkrKykge1xcbiAgICAgICAgbGV0IHt2b2RfbmFtZSwgdm9kX3BpYywgdm9kX2lkLCB2b2RfcmVtYXJrc30gPSBsaXN0W2ldO1xcbiAgICAgICAgbGV0IGxpbmsgPSBcXFwiXFxcIjtcXG4gICAgICAgIGlmIChodG1sLmxpc3QpIHtcXG4gICAgICAgICAgICBsaW5rID0gdHVybCArIFxcXCJ2aWRlb19kZXRhaWw/aWQ9XFxcIiArIHZvZF9pZCArIFxcXCImdG9rZW49O2dldDt1dGYtODt7VXNlci1BZ2VudEBEYXJ0LzIuMTMgKGRhcnQ6aW8pfVxcXCI7XFxuICAgICAgICB9IGVsc2Uge1xcbiAgICAgICAgICAgIGlmIChodG1sLmRhdGEgJiYgaHRtbC5kYXRhLmxpc3QpIHtcXG4gICAgICAgICAgICAgICAgbGluayA9IHR1cmwgKyBcXFwiL2RldGFpbD92b2RfaWQ9XFxcIiArIHZvZF9pZCArIFxcXCImcmVsX2xpbWl0PTEwO2dldDt1dGYtODt7VXNlci1BZ2VudEBEYXJ0LzIuMTMgKGRhcnQ6aW8pfVxcXCI7XFxuICAgICAgICAgICAgfSBlbHNlIHtcXG4gICAgICAgICAgICAgICAgbGluayA9IHR1cmwgKyBcXFwidmlkZW9fZGV0YWlsP2lkPVxcXCIgKyB2b2RfaWQgKyBcXFwiJnRva2VuPTtnZXQ7dXRmLTg7e1VzZXItQWdlbnRARGFydC8yLjEzIChkYXJ0OmlvKX1cXFwiO1xcbiAgICAgICAgICAgIH1cXG4gICAgICAgIH1cXG4gICAgICAgIGlmICgvaW9wZW55dW4vLnRlc3QodHVybCkpIHtcXG4gICAgICAgICAgICBsaW5rID0gdHVybCArIFxcXCIvZGV0YWlsSUQ/dm9kX2lkPVxcXCIgKyB2b2RfaWQgKyBcXFwiJnJlbF9saW1pdD0xMDtnZXQ7dXRmLTg7e1VzZXItQWdlbnRARGFydC8yLjEzIChkYXJ0OmlvKX1cXFwiO1xcbiAgICAgICAgfVxcbiAgICAgICAgaXRlbXMucHVzaCh7dGl0bGU6IHZvZF9uYW1lLCBwaWNfdXJsOiB2b2RfcGljICsgXFxcIkBSZWZlcmVyPVxcXCIsIGRlc2M6IHZvZF9yZW1hcmtzLCBjb2xfdHlwZTogXFxcIm1vdmllXzNfbWFycXVlZVxcXCIsIHVybDogJChcXFwiaGlrZXI6Ly9lbXB0eSMjXFxcIiArIGxpbmspLnJ1bGUoKCkgPT4ge1xcbiAgICAgICAgICAgIHRyeSB7XFxuICAgICAgICAgICAgICAgIGV2YWwoSlNPTi5wYXJzZShmZXRjaChcXFwiaGlrZXI6Ly9wYWdlL2FwcG1vdmxpc3RcXFwiLCB7fSkpLnJ1bGUpO1xcbiAgICAgICAgICAgIH1cXG4gICAgICAgICAgICBjYXRjaCAoZSkge1xcbiAgICAgICAgICAgICAgICBsb2coZS5tZXNzYWdlKTtcXG4gICAgICAgICAgICAgICAgc2V0UmVzdWx0KFtdKTtcXG4gICAgICAgICAgICB9XFxuICAgICAgICB9XFxuICAgICAgICApfSk7XFxuICAgIH1cXG59XFxuKSgpXCJ9LHtcIm5hbWVcIjpcIkFQUOmmlumhteWIl+ihqFwiLFwicGF0aFwiOlwiYXBwaW5kZXhkYXRhXCIsXCJydWxlXCI6XCIoXFxuZnVuY3Rpb24gKCkge1xcbiAgICBsZXQgbGlzdCA9IFtdO1xcbiAgICBpZiAoaHRtbC5saXN0KSB7XFxuICAgICAgICBsaXN0ID0gaHRtbC5saXN0O1xcbiAgICB9IGVsc2Uge1xcbiAgICAgICAgaWYgKGh0bWwuZGF0YSAmJiBodG1sLmRhdGEubGlzdCkge1xcbiAgICAgICAgICAgIGxpc3QgPSBodG1sLmRhdGEubGlzdDtcXG4gICAgICAgIH0gZWxzZSB7XFxuICAgICAgICAgICAgbGlzdCA9IGh0bWwuZGF0YTtcXG4gICAgICAgIH1cXG4gICAgfVxcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGxpc3QubGVuZ3RoOyBpKyspIHtcXG4gICAgICAgIGxldCBsaXN0cyA9IFtdLCB0eXBlbmFtZSA9IFxcXCJcXFwiO1xcbiAgICAgICAgaWYgKGxpc3RbaV0udm9kX2xpc3QpIHtcXG4gICAgICAgICAgICBsaXN0cyA9IGxpc3RbaV0udm9kX2xpc3Q7XFxuICAgICAgICAgICAgdHlwZW5hbWUgPSBsaXN0W2ldLnZvZF90eXBlX25hbWU7XFxuICAgICAgICB9IGVsc2Uge1xcbiAgICAgICAgICAgIGxpc3RzID0gbGlzdFtpXS52bGlzdDtcXG4gICAgICAgICAgICB0eXBlbmFtZSA9IGxpc3RbaV0udHlwZV9uYW1lO1xcbiAgICAgICAgfVxcbiAgICAgICAgaXRlbXMucHVzaCh7dGl0bGU6IHR5cGVuYW1lLCBjb2xfdHlwZTogXFxcInRleHRfMVxcXCIsIHVybDogXFxcImhpa2VyOi8vZW1wdHlcXFwifSk7XFxuICAgICAgICBmb3IgKGxldCBqID0gMDsgaiA8IGxpc3RzLmxlbmd0aDsgaisrKSB7XFxuICAgICAgICAgICAgbGV0IHt2b2RfbmFtZSwgdm9kX3BpYywgdm9kX2lkLCB2b2RfcmVtYXJrc30gPSBsaXN0c1tqXTtcXG4gICAgICAgICAgICBsZXQgbGluayA9IFxcXCJcXFwiO1xcbiAgICAgICAgICAgIGlmIChodG1sLmxpc3QpIHtcXG4gICAgICAgICAgICAgICAgbGluayA9IHR1cmwgKyBcXFwidmlkZW9fZGV0YWlsP2lkPVxcXCIgKyB2b2RfaWQgKyBcXFwiJnRva2VuPTtnZXQ7dXRmLTg7e1VzZXItQWdlbnRARGFydC8yLjEzIChkYXJ0OmlvKX1cXFwiO1xcbiAgICAgICAgICAgIH0gZWxzZSB7XFxuICAgICAgICAgICAgICAgIGlmIChodG1sLmRhdGEgJiYgaHRtbC5kYXRhLmxpc3QpIHtcXG4gICAgICAgICAgICAgICAgICAgIGxpbmsgPSB0dXJsICsgXFxcIi9kZXRhaWw/dm9kX2lkPVxcXCIgKyB2b2RfaWQgKyBcXFwiJnJlbF9saW1pdD0xMDtnZXQ7dXRmLTg7e1VzZXItQWdlbnRARGFydC8yLjEzIChkYXJ0OmlvKX1cXFwiO1xcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xcbiAgICAgICAgICAgICAgICAgICAgbGluayA9IHR1cmwgKyBcXFwidmlkZW9fZGV0YWlsP2lkPVxcXCIgKyB2b2RfaWQgKyBcXFwiJnRva2VuPTtnZXQ7dXRmLTg7e1VzZXItQWdlbnRARGFydC8yLjEzIChkYXJ0OmlvKX1cXFwiO1xcbiAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgfVxcbiAgICAgICAgICAgIGlmICgvaW9wZW55dW4vLnRlc3QodHVybCkpIHtcXG4gICAgICAgICAgICAgICAgbGluayA9IHR1cmwgKyBcXFwiL2RldGFpbElEP3ZvZF9pZD1cXFwiICsgdm9kX2lkICsgXFxcIiZyZWxfbGltaXQ9MTA7Z2V0O3V0Zi04O3tVc2VyLUFnZW50QERhcnQvMi4xMyAoZGFydDppbyl9XFxcIjtcXG4gICAgICAgICAgICB9XFxuICAgICAgICAgICAgaXRlbXMucHVzaCh7dGl0bGU6IHZvZF9uYW1lLCBwaWNfdXJsOiB2b2RfcGljICsgXFxcIkBSZWZlcmVyPVxcXCIsIGRlc2M6IHZvZF9yZW1hcmtzLCBjb2xfdHlwZTogXFxcIm1vdmllXzNfbWFycXVlZVxcXCIsIHVybDogJChcXFwiaGlrZXI6Ly9lbXB0eSMjXFxcIiArIGxpbmspLnJ1bGUoKCkgPT4ge1xcbiAgICAgICAgICAgICAgICB0cnkge1xcbiAgICAgICAgICAgICAgICAgICAgZXZhbChKU09OLnBhcnNlKGZldGNoKFxcXCJoaWtlcjovL3BhZ2UvYXBwbW92bGlzdFxcXCIsIHt9KSkucnVsZSk7XFxuICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgY2F0Y2ggKGUpIHtcXG4gICAgICAgICAgICAgICAgICAgIGxvZyhlLm1lc3NhZ2UpO1xcbiAgICAgICAgICAgICAgICAgICAgc2V0UmVzdWx0KFtdKTtcXG4gICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgIH1cXG4gICAgICAgICAgICApfSk7XFxuICAgICAgICB9XFxuICAgIH1cXG59XFxuKSgpXCJ9LHtcIm5hbWVcIjpcIkFQUOmAiembhlwiLFwicGF0aFwiOlwiYXBwbW92bGlzdFwiLFwicnVsZVwiOlwiKFxcbmZ1bmN0aW9uICgpIHtcXG4gICAgYWRkTGlzdGVuZXIoXFxcIm9uQ2xvc2VcXFwiLCAkLnRvU3RyaW5nKCh1cmwpID0+IHtcXG4gICAgICAgIGNsZWFyVmFyKFxcXCJhcHBub3dcXFwiKTtcXG4gICAgICAgIGNsZWFyVmFyKHVybCk7XFxuICAgIH1cXG4gICAgLCBNWV9VUkwpKTtcXG4gICAgbGV0IGl0ZW1zID0gW10sIGh0bWwgPSBnZXRWYXIoTVlfVVJMLCBcXFwiXFxcIiksIGRvbWluID0gTVlfVVJMLnNwbGl0KFxcXCIjI1xcXCIpWzFdLm1hdGNoKC8oW1xcXFxTXSo/OlxcXFwvXFxcXC9bXFxcXFNdKj8pXFxcXC8vKVsxXTtcXG4gICAgaWYgKGh0bWwgPT0gXFxcIlxcXCIpIHtcXG4gICAgICAgIGh0bWwgPSBmZXRjaChNWV9VUkwuc3BsaXQoXFxcIiMjXFxcIilbMV0sIHtoZWFkZXJzOiB7XFxcIlVzZXItQWdlbnRcXFwiOiBcXFwiRGFydC8yLjEzIChkYXJ0OmlvKVxcXCJ9fSk7XFxuICAgICAgICBwdXRWYXIoTVlfVVJMLCBodG1sKTtcXG4gICAgfVxcbiAgICBodG1sID0gSlNPTi5wYXJzZShodG1sKTtcXG4gICAgaXRlbXMucHVzaCh7dGl0bGU6IFxcXCJcXFwiLCBkZXNjOiBcXFwiMjU1JiZmbG9hdFxcXCIsIHVybDogXFxcIlxcXCIsIGNvbF90eXBlOiBcXFwieDVfd2Vidmlld19zaW5nbGVcXFwifSk7XFxuICAgIHJlZnJlc2hYNVdlYlZpZXcoXFxcIlxcXCIpO1xcbiAgICBsZXQgdGh1bWIgPSBodG1sLmRhdGEudm9kX2luZm8gPyBodG1sLmRhdGEudm9kX2luZm8udm9kX3BpYyA6IGh0bWwuZGF0YS52b2RfcGljLCBkZXMgPSBodG1sLmRhdGEudm9kX2luZm8gPyBodG1sLmRhdGEudm9kX2luZm8udm9kX2NvbnRlbnQgOiBodG1sLmRhdGEudm9kX2NvbnRlbnQ7XFxuICAgIGl0ZW1zLnB1c2goe3RpdGxlOiBcXFwiXFxcXHU1MjY3XFxcXHU2MGM1XFxcXHU3YjgwXFxcXHU0ZWNiOlxcXCIsIGRlc2M6IGRlcywgcGljX3VybDogdGh1bWIsIHVybDogJChcXFwiaGlrZXI6Ly9lbXB0eSNub1JlY29yZEhpc3RvcnkjXFxcIikucnVsZSgoZGVzKSA9PiB7XFxuICAgICAgICBzZXRSZXN1bHQoW3t0aXRsZTogZGVzLCBjb2xfdHlwZTogXFxcImxvbmdfdGV4dFxcXCJ9XSk7XFxuICAgIH1cXG4gICAgLCBkZXMpLCBjb2xfdHlwZTogXFxcIm1vdmllXzFfdmVydGljYWxfcGljXFxcIn0pO1xcbiAgICBsZXQgZG5lbiA9IGdldE15VmFyKFxcXCJkbmVuXFxcIiwgXFxcIjBcXFwiKTtcXG4gICAgaXRlbXMucHVzaCh7dGl0bGU6IFxcXCJcXFxcdTY1YWRcXFxcdTYzZDI6XFxcIiArIChkbmVuID09IFxcXCIxXFxcIiA/IFxcXCJcXFxcdTIwMWNcXFxcdTIwMWNcXFxcdTI3MDVcXFxcdTIwMWRcXFxcdTIwMWRcXFwiIDogXFxcIlxcXFx1Mjc0ZVxcXCIpLCB1cmw6ICQoXFxcIlxcXCIpLmxhenlSdWxlKChkbmVuKSA9PiB7XFxuICAgICAgICBpZiAoZG5lbiA9PSBcXFwiMVxcXCIpIHtcXG4gICAgICAgICAgICBwdXRNeVZhcihcXFwiZG5lblxcXCIsIFxcXCIwXFxcIik7XFxuICAgICAgICAgICAgcmVmcmVzaFBhZ2UoZmFsc2UpO1xcbiAgICAgICAgICAgIHJldHVybiBcXFwidG9hc3Q6Ly9cXFxcdTVkZjJcXFxcdTc5ODFcXFxcdTc1MjhcXFxcdTY1YWRcXFxcdTYzZDJcXFxcdThjMDNcXFxcdTc1MjghXFxcIjtcXG4gICAgICAgIH0gZWxzZSB7XFxuICAgICAgICAgICAgcHV0TXlWYXIoXFxcImRuZW5cXFwiLCBcXFwiMVxcXCIpO1xcbiAgICAgICAgICAgIHJlZnJlc2hQYWdlKGZhbHNlKTtcXG4gICAgICAgICAgICByZXR1cm4gXFxcInRvYXN0Oi8vXFxcXHU1ZGYyXFxcXHU1ZjAwXFxcXHU1NDJmXFxcXHU2NWFkXFxcXHU2M2QyXFxcXHU4YzAzXFxcXHU3NTI4IVxcXCI7XFxuICAgICAgICB9XFxuICAgIH1cXG4gICAgLCBkbmVuKSwgY29sX3R5cGU6IFxcXCJ0ZXh0XzJcXFwifSk7XFxuICAgIGl0ZW1zLnB1c2goe3RpdGxlOiBcXFwiXFxcXHU3ZWJmXFxcXHU4ZGVmXFxcXHU5MTRkXFxcXHU3ZjZlXFxcIiwgdXJsOiBcXFwiaGlrZXI6Ly9wYWdlL1JvdXRlP3J1bGU9TXlGaWVsZFxcXFx1MWQzMFxcXFx1MjA3ZiZ0eXBlPVxcXFx1OGJiZVxcXFx1N2Y2ZSNub1JlY29yZEhpc3RvcnkjXFxcIiwgY29sX3R5cGU6IFxcXCJ0ZXh0XzJcXFwifSk7XFxuICAgIGl0ZW1zLnB1c2goe3RpdGxlOiBcXFwiXFxcXHUyMDFjXFxcXHUyMDFjXFxcXHUyMTkzXFxcXHUyMTkxXFxcXHUyMDFkXFxcXHUyMDFkXFxcIiwgdXJsOiBcXFwiaGlrZXI6Ly9lbXB0eUBsYXp5UnVsZT0uanM6cHV0VmFyKCdhcHBtYXBwc29ydCcsIGdldFZhcignYXBwbWFwcHNvcnQnLCcxJyk9PScxJz8nMCc6JzEnKTtyZWZyZXNoUGFnZShmYWxzZSk7J3RvYXN0Oi8vXFxcXHU1MjA3XFxcXHU2MzYyXFxcXHU2MjEwXFxcXHU1MjlmISdcXFwiLCBjb2xfdHlwZTogXFxcInNjcm9sbF9idXR0b25cXFwifSk7XFxuICAgIGxldCBjb250cyA9IFtdLCB0YWJzID0gW107XFxuICAgIGlmIChodG1sLmRhdGEudm9kX3VybF93aXRoX3BsYXllcikge1xcbiAgICAgICAgY29udHMgPSBodG1sLmRhdGEudm9kX3VybF93aXRoX3BsYXllcjtcXG4gICAgICAgIGlmIChjb250cy5sZW5ndGggPCAxKSB7XFxuICAgICAgICAgICAgY29udHMgPSBodG1sLmRhdGEudm9kX3BsYXlfdXJsLnNwbGl0KFxcXCIkJCRcXFwiKTtcXG4gICAgICAgICAgICB0YWJzID0gaHRtbC5kYXRhLnZvZF9wbGF5X2Zyb20uc3BsaXQoXFxcIiQkJFxcXCIpO1xcbiAgICAgICAgfVxcbiAgICB9IGVsc2Uge1xcbiAgICAgICAgaWYgKGh0bWwuZGF0YS52b2RfaW5mbyAmJiBodG1sLmRhdGEudm9kX2luZm8udm9kX3VybF93aXRoX3BsYXllcikge1xcbiAgICAgICAgICAgIGNvbnRzID0gaHRtbC5kYXRhLnZvZF9pbmZvLnZvZF91cmxfd2l0aF9wbGF5ZXI7XFxuICAgICAgICAgICAgaWYgKGNvbnRzLmxlbmd0aCA8IDEpIHtcXG4gICAgICAgICAgICAgICAgY29udHMgPSBodG1sLmRhdGEudm9kX2luZm8udm9kX3BsYXlfdXJsLnNwbGl0KFxcXCIkJCRcXFwiKTtcXG4gICAgICAgICAgICAgICAgdGFicyA9IGh0bWwuZGF0YS52b2RfaW5mby52b2RfcGxheV9mcm9tLnNwbGl0KFxcXCIkJCRcXFwiKTtcXG4gICAgICAgICAgICB9XFxuICAgICAgICB9IGVsc2Uge1xcbiAgICAgICAgICAgIGNvbnRzID0gaHRtbC5kYXRhLnZvZF9wbGF5X2xpc3Q7XFxuICAgICAgICAgICAgaWYgKGNvbnRzLmxlbmd0aCA8IDEpIHtcXG4gICAgICAgICAgICAgICAgY29udHMgPSBodG1sLmRhdGEudm9kX3BsYXlfdXJsLnNwbGl0KFxcXCIkJCRcXFwiKTtcXG4gICAgICAgICAgICAgICAgdGFicyA9IGh0bWwuZGF0YS52b2RfcGxheV9mcm9tLnNwbGl0KFxcXCIkJCRcXFwiKTtcXG4gICAgICAgICAgICB9XFxuICAgICAgICB9XFxuICAgIH1cXG4gICAgbGV0IGxpc3QgPSBbXSwgcHRhYiA9IFxcXCJcXFwiO1xcbiAgICBpZiAoZ2V0VmFyKFxcXCJhcHBub3dcXFwiLCBcXFwiXFxcIikgPT0gXFxcIlxcXCIpIHtcXG4gICAgICAgIHB1dFZhcihcXFwiYXBwbm93XFxcIiwgXFxcIjBcXFwiKTtcXG4gICAgfVxcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGNvbnRzLmxlbmd0aDsgaSsrKSB7XFxuICAgICAgICBpZiAoaHRtbC5kYXRhLnZvZF91cmxfd2l0aF9wbGF5ZXIpIHtcXG4gICAgICAgICAgICBzcHRhYiA9IGNvbnRzW2ldLmNvZGUgPyBjb250c1tpXS5jb2RlIDogdGFic1tpXTtcXG4gICAgICAgIH0gZWxzZSB7XFxuICAgICAgICAgICAgaWYgKGh0bWwuZGF0YS52b2RfaW5mbyAmJiBodG1sLmRhdGEudm9kX2luZm8udm9kX3VybF93aXRoX3BsYXllcikge1xcbiAgICAgICAgICAgICAgICBzcHRhYiA9IGNvbnRzW2ldLmNvZGUgPyBjb250c1tpXS5jb2RlIDogdGFic1tpXTtcXG4gICAgICAgICAgICB9IGVsc2Uge1xcbiAgICAgICAgICAgICAgICBzcHRhYiA9IGNvbnRzW2ldLmZyb20gPyBjb250c1tpXS5mcm9tIDogdGFic1tpXTtcXG4gICAgICAgICAgICB9XFxuICAgICAgICB9XFxuICAgICAgICBpdGVtcy5wdXNoKHt0aXRsZTogZ2V0VmFyKFxcXCJhcHBub3dcXFwiKSA9PSBpID8gXFxcIlxcXFx1MjAxY1xcXFx1MjAxY1xcXFx1MjAxZFxcXFx1MjAxZFxcXCIgKyBzcHRhYi5ib2xkKCkuZm9udGNvbG9yKFxcXCIjRkE3Mjk4XFxcIikgOiBzcHRhYiwgdXJsOiBcXFwiaGlrZXI6Ly9lbXB0eUBsYXp5UnVsZT0uanM6cHV0VmFyKCdhcHBub3cnLCdcXFwiICsgaSArIFxcXCInKTtyZWZyZXNoUGFnZShmYWxzZSk7J3RvYXN0Oi8vXFxcXHU1MjA3XFxcXHU2MzYyXFxcXHU2MjEwXFxcXHU1MjlmISdcXFwiLCBjb2xfdHlwZTogXFxcInNjcm9sbF9idXR0b25cXFwifSk7XFxuICAgICAgICBpZiAoZ2V0VmFyKFxcXCJhcHBub3dcXFwiKSA9PSBpKSB7XFxuICAgICAgICAgICAgcHRhYiA9IHNwdGFiO1xcbiAgICAgICAgfVxcbiAgICB9XFxuICAgIGxldCBpID0gZ2V0VmFyKFxcXCJhcHBub3dcXFwiKTtcXG4gICAgaWYgKGNvbnRzW2ldLnVybHMpIHtcXG4gICAgICAgIGxpc3QgPSBjb250c1tpXS51cmxzO1xcbiAgICB9IGVsc2Uge1xcbiAgICAgICAgaWYgKGNvbnRzW2ldLnVybCkge1xcbiAgICAgICAgICAgIGxpc3QgPSBjb250c1tpXS51cmwuc3BsaXQoXFxcIiNcXFwiKTtcXG4gICAgICAgIH0gZWxzZSB7XFxuICAgICAgICAgICAgbGlzdCA9IGNvbnRzW2ldLnNwbGl0KFxcXCIjXFxcIik7XFxuICAgICAgICB9XFxuICAgIH1cXG4gICAgaWYgKGdldFZhcihcXFwiYXBwbWFwcHNvcnRcXFwiLCBcXFwiMVxcXCIpID09IFxcXCIwXFxcIikge1xcbiAgICAgICAgbGlzdC5yZXZlcnNlKCk7XFxuICAgIH1cXG4gICAgZm9yIChsZXQgaiA9IDA7IGogPCBsaXN0Lmxlbmd0aDsgaisrKSB7XFxuICAgICAgICBsZXQgdmxpbmsgPSBcXFwiXFxcIiwgdGl0bGUgPSBcXFwiXFxcIiwgamllayA9IFxcXCJcXFwiO1xcbiAgICAgICAgaWYgKGNvbnRzW2ldLnVybHMpIHtcXG4gICAgICAgICAgICB2bGluayA9IGxpc3Rbal0udXJsLnJlcGxhY2UoLyM0NTYjL2csIFxcXCJodHRwXFxcIikucmVwbGFjZSgvIzEyMyMvZywgXFxcIi5cXFwiKS5yZXBsYWNlKC8jNzg5Iy9nLCBcXFwiOlxcXCIpO1xcbiAgICAgICAgICAgIHRpdGxlID0gbGlzdFtqXS5uYW1lO1xcbiAgICAgICAgfSBlbHNlIHtcXG4gICAgICAgICAgICB2bGluayA9IGxpc3Rbal0uc3BsaXQoXFxcIiRcXFwiKVsxXTtcXG4gICAgICAgICAgICB0aXRsZSA9IGxpc3Rbal0uc3BsaXQoXFxcIiRcXFwiKVswXTtcXG4gICAgICAgIH1cXG4gICAgICAgIHRyeSB7XFxuICAgICAgICAgICAgaWYgKGh0bWwuZGF0YS52b2RfdXJsX3dpdGhfcGxheWVyKSB7XFxuICAgICAgICAgICAgICAgIGppZWsgPSBjb250c1tpXS5wYXJzZV9hcGk7XFxuICAgICAgICAgICAgfSBlbHNlIHtcXG4gICAgICAgICAgICAgICAgaWYgKGh0bWwuZGF0YS52b2RfaW5mbyAmJiBodG1sLmRhdGEudm9kX2luZm8udm9kX3VybF93aXRoX3BsYXllcikge1xcbiAgICAgICAgICAgICAgICAgICAgamllayA9IGNvbnRzW2ldLnBhcnNlX2FwaTtcXG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcXG4gICAgICAgICAgICAgICAgICAgIGlmIChjb250c1tpXS5wbGF5ZXJfaW5mby5wYXJzZTIgJiYgKGNvbnRzW2ldLnBsYXllcl9pbmZvLnBhcnNlMikuaW5kZXhPZihcXFwiPVxcXCIpICE9IC0xKSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgamllayA9IChjb250c1tpXS5wbGF5ZXJfaW5mby5wYXJzZTIpLm1hdGNoKC8uKj91cmw9fC4qP3Y9fC4qP3ZpZD0vKVswXS5yZXBsYWNlKFxcXCIuLlxcXCIsIFxcXCIuXFxcIikucmVwbGFjZShcXFwianNvbmJzXFxcIiwgXFxcIlxcXCIpO1xcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoY29udHNbaV0ucGxheWVyX2luZm8ucGFyc2UgJiYgKGNvbnRzW2ldLnBsYXllcl9pbmZvLnBhcnNlKS5pbmRleE9mKFxcXCI9XFxcIikgIT0gLTEpIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgamllayA9IChjb250c1tpXS5wbGF5ZXJfaW5mby5wYXJzZSkubWF0Y2goLy4qP3VybD18Lio/dj18Lio/dmlkPS8pWzBdLnJlcGxhY2UoXFxcIi4uXFxcIiwgXFxcIi5cXFwiKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBqaWVrID0gXFxcIlxcXCI7XFxuICAgICAgICAgICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgfVxcbiAgICAgICAgfVxcbiAgICAgICAgY2F0Y2ggKGUpIHtcXG4gICAgICAgIH1cXG4gICAgICAgIGlmIChqaWVrICE9IFxcXCJcXFwiICYmIGppZWsgIT0gbnVsbCkge1xcbiAgICAgICAgICAgIGlmIChqaWVrLnN1YnN0cmluZygwLCA0KSA9PSBcXFwiaHR0cFxcXCIpIHtcXG4gICAgICAgICAgICAgICAgamllayA9IGppZWs7XFxuICAgICAgICAgICAgfSBlbHNlIHtcXG4gICAgICAgICAgICAgICAgaWYgKGppZWsuc3Vic3RyaW5nKDAsIDIpID09IFxcXCIvL1xcXCIpIHtcXG4gICAgICAgICAgICAgICAgICAgIGppZWsgPSBcXFwiaHR0cHM6XFxcIiArIGppZWs7XFxuICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICB9XFxuICAgICAgICB9XFxuICAgICAgICB0cnkge1xcbiAgICAgICAgICAgIGlmIChqID09IFxcXCIwXFxcIikge1xcbiAgICAgICAgICAgICAgICBsb2coXFxcIlxcXFxuXFxcXHU3ZWJmXFxcXHU4ZGVmOlxcXCIgKyBwdGFiICsgXFxcIlxcXFxuXFxcXHU4OWUzXFxcXHU2NzkwXFxcXHU2M2E1XFxcXHU1M2UzOlxcXCIgKyBqaWVrKTtcXG4gICAgICAgICAgICB9XFxuICAgICAgICB9XFxuICAgICAgICBjYXRjaCAoZSkge1xcbiAgICAgICAgfVxcbiAgICAgICAgbGV0IGxpbmsgPSBqaWVrICsgdmxpbms7XFxuICAgICAgICBpZiAoL1xcXFwubTN1OHxcXFxcLm1wNHxvYmpcXFxcL3Rvcy8udGVzdCh2bGluaykgJiYgL2h0dHAvLnRlc3QodmxpbmspKSB7XFxuICAgICAgICAgICAgbGluayA9IHZsaW5rO1xcbiAgICAgICAgfSBlbHNlIHtcXG4gICAgICAgICAgICBpZiAoL3NpZ249Ly50ZXN0KHZsaW5rKSkge1xcbiAgICAgICAgICAgICAgICBsaW5rID0gdmxpbms7XFxuICAgICAgICAgICAgfVxcbiAgICAgICAgfVxcbiAgICAgICAgaXRlbXMucHVzaCh7dGl0bGU6IHRpdGxlLCBjb2xfdHlwZTogXFxcInRleHRfNFxcXCIsIHVybDogJChcXFwiXFxcIikubGF6eVJ1bGUoKHB0YWIsIHNyY3VybCwgZG9taW4pID0+IHtcXG4gICAgICAgICAgICBsb2coXFxcIlxcXFx1NTM5ZlxcXFx1OTRmZVxcXFx1NjNhNTpcXFwiICsgc3JjdXJsKTtcXG4gICAgICAgICAgICBmdW5jdGlvbiBvcGVudXJsKHJlc3VybCkge1xcbiAgICAgICAgICAgICAgICBpZiAocmVzdXJsLm1hdGNoKC95b3VrdXxtZ3R2fGl4aWd1YXxxcS5jb218cWl5aXxtaWd1fGJpbGliaWxpfHNvaHV8cHB0dnxsZXwxOTA1LmNvbS8pICYmIHJlc3VybC5zZWFyY2goL2h0bWx8YmlsaWJpbGkvKSAhPSAtMSkge1xcbiAgICAgICAgICAgICAgICAgICAgbGV0IGVuRG4gPSBnZXRNeVZhcihcXFwiZG5lblxcXCIsIFxcXCIwXFxcIik7XFxuICAgICAgICAgICAgICAgICAgICBpZiAoZW5EbiA9PSBcXFwiMVxcXCIpIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICBsb2coXFxcIlxcXFx1OGMwM1xcXFx1NzUyOFxcXFx1NjVhZFxcXFx1NjNkMlxcXFx1ODllM1xcXFx1Njc5MFxcXCIpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgIGV2YWwoXFxcImxldCBjb25maWcgPVxcXCIgKyBmZXRjaChcXFwiaGlrZXI6Ly9maWxlcy9jYWNoZS9NeVBhcnNlU2V0Lmpzb25cXFwiKSk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgZXZhbChmZXRjaChjb25maWcuY2opKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gYXl0bVBhcnNlKHJlc3VybCk7XFxuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiByZXN1cmw7XFxuICAgICAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XFxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmVzdXJsO1xcbiAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgfVxcbiAgICAgICAgICAgIHRyeSB7XFxuICAgICAgICAgICAgICAgIGlmICgvXFxcXC5tM3U4fFxcXFwubXA0fG9ialxcXFwvdG9zfG5ldGVhc2VcXFxcLmNvbS8udGVzdChzcmN1cmwpICYmIC9odHRwLy50ZXN0KHNyY3VybCkgJiYgIS9cXFxcLmh0bWwvLnRlc3Qoc3JjdXJsKSkge1xcbiAgICAgICAgICAgICAgICAgICAgaWYgKC93a2ZpbGUvLnRlc3Qoc3JjdXJsKSkge1xcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBzcmN1cmwgKyBcXFwiO3tSZWZlcmVyQGh0dHBzOi8vZmFudHVhbi53a2ZpbGUuY29tL31cXFwiO1xcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoL2R1b2R1b3p5Ly50ZXN0KHB0YWIpKSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBqc29uID0gZmV0Y2goXFxcImh0dHBzOi8vcGxheWVyLmR1b2R1b3p5LmNvbS9kZHBsYXkvYXBpLnBocD91cmw9XFxcIiArIHNyY3VybCwge30pO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gSlNPTi5wYXJzZShqc29uKS51cmw7XFxuICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKC9zaWduPS8udGVzdChzcmN1cmwpKSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gc3JjdXJsICsgXFxcIiNpc1ZpZGVvPXRydWUjXFxcIjtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAvXFxcXD0vLnRlc3Qoc3JjdXJsKSA/IHNyY3VybC5zcGxpdChcXFwiPVxcXCIpWzFdIDogc3JjdXJsICsgXFxcIiNpc1ZpZGVvPXRydWUjXFxcIjtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcXG4gICAgICAgICAgICAgICAgICAgIGlmIChzcmN1cmwuaW5kZXhPZihcXFwiL3NoYXJlL1xcXCIpICE9IC0xKSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgdHJ5IHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGxpbmsgPSBzcmN1cmwuc3BsaXQoXFxcIi9zaGFyZVxcXCIpWzBdLCBmYyA9IGZldGNoKHNyY3VybCwge30pLnJlcGxhY2UoXFxcInZhciBwdXJsXFxcIiwgXFxcInZhciBtYWluXFxcIiksIHBsYXkgPSBcXFwiXFxcIjtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGZjLmluZGV4T2YoXFxcIm1haW5cXFwiKSAhPSAtMSkge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IG1hdCA9IGZjLm1hdGNoKC92YXIgbWFpbi4qPzsvKVswXTtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV2YWwobWF0KTtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBsYXkgPSAobWFpbi5pbmRleE9mKFxcXCJodHRwXFxcIikgIT0gLTEgPyBtYWluIDogbGluayArIG1haW4pO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IG1haW4gPSBmYy5tYXRjaCgvdXJsOi4qP1tcXFxcJ1xcXFxcXFwiXSguKj8pW1xcXFwnXFxcXFxcXCJdLylbMV07XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwbGF5ID0gKG1haW4uaW5kZXhPZihcXFwiaHR0cFxcXCIpICE9IC0xID8gbWFpbiA6IGxpbmsgKyBtYWluKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gcGxheTtcXG4gICAgICAgICAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgICAgICAgICAgY2F0Y2ggKGUpIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFxcXCJ4NVdlYlZpZXc6Ly9cXFwiICsgc3JjdXJsO1xcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHB0YWIgPT0gXFxcImFsaXp5XFxcIikge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgcHVybCA9IGZldGNoKFxcXCJodHRwczovL2ZvdWJpbi5jb20vamlleGkucGhwP3VybD1cXFwiICsgc3JjdXJsLnNwbGl0KFxcXCJ1cmw9XFxcIilbMV0sIHt9KS5tYXRjaCgvXFxcXFxcXCJ1cmxcXFxcXFxcIjpcXFxcXFxcIiguKj8pXFxcXFxcXCIvKVsxXTtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHB1cmw7XFxuICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKC85ODN2aXAvLnRlc3Qoc3JjdXJsKSkge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEpTT04ucGFyc2UoZmV0Y2goc3JjdXJsLCB7aGVhZGVyczoge1xcXCJVc2VyLUFnZW50XFxcIjogTU9CSUxFX1VBfSwgcmVkaXJlY3Q6IGZhbHNlLCB3aXRoSGVhZGVyczogdHJ1ZX0pKS5oZWFkZXJzLmxvY2F0aW9uWzBdO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKC94XFxcXC1uXFxcXC5jY3xuaGR6NjY2Ly50ZXN0KHNyY3VybCkgJiYgL1xcXFwuaHRtbHxiaWxpYmlsaS8udGVzdChzcmN1cmwpKSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG9wZW51cmwoc3JjdXJsLnN1YnN0cmluZyhzcmN1cmwuaW5kZXhPZihcXFwiPWh0dHBcXFwiKSArIDEpKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICBsZXQgc2NvZGUgPSBKU09OLnBhcnNlKGZldGNoKHNyY3VybCwge2hlYWRlcnM6IHtcXFwiVXNlci1BZ2VudFxcXCI6IFxcXCJEYXJ0LzIuMTMgKGRhcnQ6aW8pXFxcIn0sIHJlZGlyZWN0OiBmYWxzZSwgd2l0aFN0YXR1c0NvZGU6IHRydWV9KSk7XFxuICAgICAgICAgICAgICAgIGlmIChzY29kZS5zdGF0dXNDb2RlID09IFxcXCIzMDJcXFwiIHx8IHNjb2RlLnN0YXR1c0NvZGUgPT0gXFxcIjMwMVxcXCIpIHtcXG4gICAgICAgICAgICAgICAgICAgIGxldCByZWR1cmwgPSBzY29kZS5oZWFkZXJzLmxvY2F0aW9uWzBdLnJlcGxhY2UoL1xcXFxcXFxcL2csIFxcXCJcXFwiKTtcXG4gICAgICAgICAgICAgICAgICAgIGlmICgvXFxcXD1odHRwLy50ZXN0KHJlZHVybCkgJiYgL2h0bWx8YmlsaWJpbGkvLnRlc3QocmVkdXJsKSkge1xcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBKU09OLnBhcnNlKGZldGNoKHJlZHVybCwge30pKS51cmw7XFxuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICgvXFxcXD1odHRwLy50ZXN0KHJlZHVybCkgJiYgL1xcXFwubTN1OHxcXFxcLm1wNHxcXFxcLmZsdi8udGVzdChyZWR1cmwpKSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiByZWR1cmwuc3Vic3RyaW5nKHJlZHVybC5pbmRleE9mKFxcXCI9aHR0cFxcXCIpICsgMSk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlZHVybDtcXG4gICAgICAgICAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XFxuICAgICAgICAgICAgICAgICAgICBsZXQgaHRtbCA9IHNjb2RlLmJvZHk7XFxuICAgICAgICAgICAgICAgICAgICBpZiAoLzQwNCBOb3QgRm91bmR85aSH5qGI5ZCO5Y+v57un57ut6K6/6ZeuLy50ZXN0KGh0bWwpKSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG9wZW51cmwoc3JjdXJsLnN1YnN0cmluZyhzcmN1cmwuaW5kZXhPZihcXFwiPWh0dHBcXFwiKSArIDEpKTtcXG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKC9cXFxcPGJvZHkvLnRlc3QoaHRtbCkpIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9nKFxcXCJcXFxcdTVjMWRcXFxcdThiZDVcXFxcdTk3NWVKU09OXFxcXHU2M2E1XFxcXHU1M2UzXFxcXHU3ZjUxXFxcXHU5ODc1XFxcXHU4OWUzXFxcXHU2NzkwXFxcIik7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVpcmVDYWNoZShcXFwiaHR0cHM6Ly9jb2RlLmFsaXl1bi5jb20vbHprMjM1NTkvUHVibGljUnVsZS9yYXcvbWFzdGVyL3g1cnVsZS5qc1xcXCIsIDI0KTtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHg1cnVsZShzcmN1cmwsIHNyY3VybCk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHB1cmwgPSBodG1sLm1hdGNoKC9bXFxcXCdcXFxcXFxcIl11cmxbXFxcXCdcXFxcXFxcIl06Lio/W1xcXFwnXFxcXFxcXCJdKC4qPylbXFxcXCdcXFxcXFxcIl0vKVsxXS5yZXBsYWNlKC9cXFxcXFxcXC9nLCBcXFwiXFxcIik7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgvaHR0cC8udGVzdChwdXJsKSkge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHB0YWIgPT0gXFxcImJpbGliaWxpXFxcIikge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBwdXJsICsgXFxcIjt7UmVmZXJlckBodHRwczovL3d3dy5iaWxpYmlsaS5jb20vJiZVc2VyLUFnZW50QE1vemlsbGEvNS4wfVxcXCI7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChwdGFiID09IFxcXCJtZ3R2XFxcIikge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gcHVybCArIFxcXCIjaXNWaWRlbz10cnVlI1xcXCIgKyBcXFwiO3tSZWZlcmVyQHd3dy5tZ3R2LmNvbSYmVXNlci1BZ2VudEBNb3ppbGxhLzUuMH1cXFwiO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgvb2piay8udGVzdChwdXJsKSkge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHB1cmwgKyBcXFwiO3tSZWZlcmVyQGh0dHBzOi8vYmFrLm9qYmtqeC5jb20vfVxcXCI7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gcHVybCArIFxcXCIjaXNWaWRlbz10cnVlI1xcXCI7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoL1xcXFw9aHR0cC8udGVzdChzcmN1cmwpICYmIC9cXFxcLmh0bWx8YmlsaWJpbGkvLnRlc3Qoc3JjdXJsKSkge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBvcGVudXJsKHNyY3VybC5zdWJzdHJpbmcoc3JjdXJsLmluZGV4T2YoXFxcIj1odHRwXFxcIikgKyAxKSk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBvcGVudXJsKHNyY3VybC5zdWJzdHJpbmcoc3JjdXJsLmluZGV4T2YoXFxcIj1odHRwXFxcIikgKyAxKSk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICB9XFxuICAgICAgICAgICAgY2F0Y2ggKGUpIHtcXG4gICAgICAgICAgICAgICAgbG9nKFxcXCJcXFxcdTYyNjdcXFxcdTg4NGNcXFxcdTYyYTVcXFxcdTk1MTlcXFxcdTU5MDRcXFxcdTc0MDZcXFwiKTtcXG4gICAgICAgICAgICAgICAgaWYgKHNyY3VybC5zdWJzdHJpbmcoMCwgMikgPT0gXFxcIi8vXFxcIikge1xcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG9wZW51cmwoXFxcImh0dHBzOlxcXCIgKyBzcmN1cmwpO1xcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xcbiAgICAgICAgICAgICAgICAgICAgaWYgKC9cXFxcPWh0dHAvLnRlc3Qoc3JjdXJsKSAmJiAvXFxcXC5odG1sfGJpbGliaWxpLy50ZXN0KHNyY3VybCkpIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gb3BlbnVybChzcmN1cmwuc3Vic3RyaW5nKHNyY3VybC5pbmRleE9mKFxcXCI9aHR0cFxcXCIpICsgMSkpO1xcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gb3BlbnVybChzcmN1cmwpO1xcbiAgICAgICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgfVxcbiAgICAgICAgfVxcbiAgICAgICAgLCBwdGFiLCBsaW5rLCBkb21pbil9KTtcXG4gICAgfVxcbiAgICBzZXRSZXN1bHQoaXRlbXMpO1xcbn1cXG4pKClcIn1dLFwic2F2ZWRcIjpmYWxzZSxcInRpdGxlXCI6XCLovbvlkIjpm4YuYXBwXCIsXCJ2ZXJzaW9uXCI6MCxcInVybFwiOlwiaGlrZXI6Ly9lbXB0eSMjaHR0cHM6Ly9zaGFuZ2ppaHVva2UuY29tL2FwaS5waHAvdHYudm9kL2RldGFpbD92b2RfaWQ9MzMwMzI5JnRva2VuPVwiLFwiZmluZF9ydWxlXCI6XCJqczooXFxuKHR5cGV0KSA9PiB7XFxuICAgIGlmICgvVFYvLnRlc3QodHlwZXQpKSB7XFxuICAgICAgICBldmFsKEpTT04ucGFyc2UoZmV0Y2goXFxcImhpa2VyOi8vcGFnZS90dm1vdmxpc3RcXFwiLCB7fSkpLnJ1bGUpO1xcbiAgICB9IGVsc2Uge1xcbiAgICAgICAgZXZhbChKU09OLnBhcnNlKGZldGNoKFxcXCJoaWtlcjovL3BhZ2UvYXBwbW92bGlzdFxcXCIsIHt9KSkucnVsZSk7XFxuICAgIH1cXG59XFxuKShcXFwi5LyY6LSoNTlcXFwiKVwiLFwiZ3JvdXBcIjpcIui9u+WQiOmbhi5hcHBcIixcInBhZ2VzXCI6XCJbe1xcXCJuYW1lXFxcIjpcXFwiQVBQ5YiG57G75YiX6KGoXFxcIixcXFwicGF0aFxcXCI6XFxcImFwcGxpc3RkYXRhXFxcIixcXFwicnVsZVxcXCI6XFxcIihcXFxcbmZ1bmN0aW9uICgpIHtcXFxcbiAgICBsZXQgbGlzdCA9IFtdO1xcXFxuICAgIGlmIChodG1sLmxpc3QpIHtcXFxcbiAgICAgICAgbGlzdCA9IGh0bWwubGlzdDtcXFxcbiAgICB9IGVsc2Uge1xcXFxuICAgICAgICBpZiAoaHRtbC5kYXRhICYmIGh0bWwuZGF0YS5saXN0KSB7XFxcXG4gICAgICAgICAgICBsaXN0ID0gaHRtbC5kYXRhLmxpc3Q7XFxcXG4gICAgICAgIH0gZWxzZSB7XFxcXG4gICAgICAgICAgICBsaXN0ID0gaHRtbC5kYXRhO1xcXFxuICAgICAgICB9XFxcXG4gICAgfVxcXFxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbGlzdC5sZW5ndGg7IGkrKykge1xcXFxuICAgICAgICBsZXQge3ZvZF9uYW1lLCB2b2RfcGljLCB2b2RfaWQsIHZvZF9yZW1hcmtzfSA9IGxpc3RbaV07XFxcXG4gICAgICAgIGxldCBsaW5rID0gXFxcXFxcXCJcXFxcXFxcIjtcXFxcbiAgICAgICAgaWYgKGh0bWwubGlzdCkge1xcXFxuICAgICAgICAgICAgbGluayA9IHR1cmwgKyBcXFxcXFxcInZpZGVvX2RldGFpbD9pZD1cXFxcXFxcIiArIHZvZF9pZCArIFxcXFxcXFwiJnRva2VuPTtnZXQ7dXRmLTg7e1VzZXItQWdlbnRARGFydC8yLjEzIChkYXJ0OmlvKX1cXFxcXFxcIjtcXFxcbiAgICAgICAgfSBlbHNlIHtcXFxcbiAgICAgICAgICAgIGlmIChodG1sLmRhdGEgJiYgaHRtbC5kYXRhLmxpc3QpIHtcXFxcbiAgICAgICAgICAgICAgICBsaW5rID0gdHVybCArIFxcXFxcXFwiL2RldGFpbD92b2RfaWQ9XFxcXFxcXCIgKyB2b2RfaWQgKyBcXFxcXFxcIiZyZWxfbGltaXQ9MTA7Z2V0O3V0Zi04O3tVc2VyLUFnZW50QERhcnQvMi4xMyAoZGFydDppbyl9XFxcXFxcXCI7XFxcXG4gICAgICAgICAgICB9IGVsc2Uge1xcXFxuICAgICAgICAgICAgICAgIGxpbmsgPSB0dXJsICsgXFxcXFxcXCJ2aWRlb19kZXRhaWw/aWQ9XFxcXFxcXCIgKyB2b2RfaWQgKyBcXFxcXFxcIiZ0b2tlbj07Z2V0O3V0Zi04O3tVc2VyLUFnZW50QERhcnQvMi4xMyAoZGFydDppbyl9XFxcXFxcXCI7XFxcXG4gICAgICAgICAgICB9XFxcXG4gICAgICAgIH1cXFxcbiAgICAgICAgaWYgKC9pb3Blbnl1bi8udGVzdCh0dXJsKSkge1xcXFxuICAgICAgICAgICAgbGluayA9IHR1cmwgKyBcXFxcXFxcIi9kZXRhaWxJRD92b2RfaWQ9XFxcXFxcXCIgKyB2b2RfaWQgKyBcXFxcXFxcIiZyZWxfbGltaXQ9MTA7Z2V0O3V0Zi04O3tVc2VyLUFnZW50QERhcnQvMi4xMyAoZGFydDppbyl9XFxcXFxcXCI7XFxcXG4gICAgICAgIH1cXFxcbiAgICAgICAgaXRlbXMucHVzaCh7dGl0bGU6IHZvZF9uYW1lLCBwaWNfdXJsOiB2b2RfcGljICsgXFxcXFxcXCJAUmVmZXJlcj1cXFxcXFxcIiwgZGVzYzogdm9kX3JlbWFya3MsIGNvbF90eXBlOiBcXFxcXFxcIm1vdmllXzNfbWFycXVlZVxcXFxcXFwiLCB1cmw6ICQoXFxcXFxcXCJoaWtlcjovL2VtcHR5IyNcXFxcXFxcIiArIGxpbmspLnJ1bGUoKCkgPT4ge1xcXFxuICAgICAgICAgICAgdHJ5IHtcXFxcbiAgICAgICAgICAgICAgICBldmFsKEpTT04ucGFyc2UoZmV0Y2goXFxcXFxcXCJoaWtlcjovL3BhZ2UvYXBwbW92bGlzdFxcXFxcXFwiLCB7fSkpLnJ1bGUpO1xcXFxuICAgICAgICAgICAgfVxcXFxuICAgICAgICAgICAgY2F0Y2ggKGUpIHtcXFxcbiAgICAgICAgICAgICAgICBsb2coZS5tZXNzYWdlKTtcXFxcbiAgICAgICAgICAgICAgICBzZXRSZXN1bHQoW10pO1xcXFxuICAgICAgICAgICAgfVxcXFxuICAgICAgICB9XFxcXG4gICAgICAgICl9KTtcXFxcbiAgICB9XFxcXG59XFxcXG4pKClcXFwifSx7XFxcIm5hbWVcXFwiOlxcXCJBUFDpppbpobXliJfooahcXFwiLFxcXCJwYXRoXFxcIjpcXFwiYXBwaW5kZXhkYXRhXFxcIixcXFwicnVsZVxcXCI6XFxcIihcXFxcbmZ1bmN0aW9uICgpIHtcXFxcbiAgICBsZXQgbGlzdCA9IFtdO1xcXFxuICAgIGlmIChodG1sLmxpc3QpIHtcXFxcbiAgICAgICAgbGlzdCA9IGh0bWwubGlzdDtcXFxcbiAgICB9IGVsc2Uge1xcXFxuICAgICAgICBpZiAoaHRtbC5kYXRhICYmIGh0bWwuZGF0YS5saXN0KSB7XFxcXG4gICAgICAgICAgICBsaXN0ID0gaHRtbC5kYXRhLmxpc3Q7XFxcXG4gICAgICAgIH0gZWxzZSB7XFxcXG4gICAgICAgICAgICBsaXN0ID0gaHRtbC5kYXRhO1xcXFxuICAgICAgICB9XFxcXG4gICAgfVxcXFxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbGlzdC5sZW5ndGg7IGkrKykge1xcXFxuICAgICAgICBsZXQgbGlzdHMgPSBbXSwgdHlwZW5hbWUgPSBcXFxcXFxcIlxcXFxcXFwiO1xcXFxuICAgICAgICBpZiAobGlzdFtpXS52b2RfbGlzdCkge1xcXFxuICAgICAgICAgICAgbGlzdHMgPSBsaXN0W2ldLnZvZF9saXN0O1xcXFxuICAgICAgICAgICAgdHlwZW5hbWUgPSBsaXN0W2ldLnZvZF90eXBlX25hbWU7XFxcXG4gICAgICAgIH0gZWxzZSB7XFxcXG4gICAgICAgICAgICBsaXN0cyA9IGxpc3RbaV0udmxpc3Q7XFxcXG4gICAgICAgICAgICB0eXBlbmFtZSA9IGxpc3RbaV0udHlwZV9uYW1lO1xcXFxuICAgICAgICB9XFxcXG4gICAgICAgIGl0ZW1zLnB1c2goe3RpdGxlOiB0eXBlbmFtZSwgY29sX3R5cGU6IFxcXFxcXFwidGV4dF8xXFxcXFxcXCIsIHVybDogXFxcXFxcXCJoaWtlcjovL2VtcHR5XFxcXFxcXCJ9KTtcXFxcbiAgICAgICAgZm9yIChsZXQgaiA9IDA7IGogPCBsaXN0cy5sZW5ndGg7IGorKykge1xcXFxuICAgICAgICAgICAgbGV0IHt2b2RfbmFtZSwgdm9kX3BpYywgdm9kX2lkLCB2b2RfcmVtYXJrc30gPSBsaXN0c1tqXTtcXFxcbiAgICAgICAgICAgIGxldCBsaW5rID0gXFxcXFxcXCJcXFxcXFxcIjtcXFxcbiAgICAgICAgICAgIGlmIChodG1sLmxpc3QpIHtcXFxcbiAgICAgICAgICAgICAgICBsaW5rID0gdHVybCArIFxcXFxcXFwidmlkZW9fZGV0YWlsP2lkPVxcXFxcXFwiICsgdm9kX2lkICsgXFxcXFxcXCImdG9rZW49O2dldDt1dGYtODt7VXNlci1BZ2VudEBEYXJ0LzIuMTMgKGRhcnQ6aW8pfVxcXFxcXFwiO1xcXFxuICAgICAgICAgICAgfSBlbHNlIHtcXFxcbiAgICAgICAgICAgICAgICBpZiAoaHRtbC5kYXRhICYmIGh0bWwuZGF0YS5saXN0KSB7XFxcXG4gICAgICAgICAgICAgICAgICAgIGxpbmsgPSB0dXJsICsgXFxcXFxcXCIvZGV0YWlsP3ZvZF9pZD1cXFxcXFxcIiArIHZvZF9pZCArIFxcXFxcXFwiJnJlbF9saW1pdD0xMDtnZXQ7dXRmLTg7e1VzZXItQWdlbnRARGFydC8yLjEzIChkYXJ0OmlvKX1cXFxcXFxcIjtcXFxcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xcXFxuICAgICAgICAgICAgICAgICAgICBsaW5rID0gdHVybCArIFxcXFxcXFwidmlkZW9fZGV0YWlsP2lkPVxcXFxcXFwiICsgdm9kX2lkICsgXFxcXFxcXCImdG9rZW49O2dldDt1dGYtODt7VXNlci1BZ2VudEBEYXJ0LzIuMTMgKGRhcnQ6aW8pfVxcXFxcXFwiO1xcXFxuICAgICAgICAgICAgICAgIH1cXFxcbiAgICAgICAgICAgIH1cXFxcbiAgICAgICAgICAgIGlmICgvaW9wZW55dW4vLnRlc3QodHVybCkpIHtcXFxcbiAgICAgICAgICAgICAgICBsaW5rID0gdHVybCArIFxcXFxcXFwiL2RldGFpbElEP3ZvZF9pZD1cXFxcXFxcIiArIHZvZF9pZCArIFxcXFxcXFwiJnJlbF9saW1pdD0xMDtnZXQ7dXRmLTg7e1VzZXItQWdlbnRARGFydC8yLjEzIChkYXJ0OmlvKX1cXFxcXFxcIjtcXFxcbiAgICAgICAgICAgIH1cXFxcbiAgICAgICAgICAgIGl0ZW1zLnB1c2goe3RpdGxlOiB2b2RfbmFtZSwgcGljX3VybDogdm9kX3BpYyArIFxcXFxcXFwiQFJlZmVyZXI9XFxcXFxcXCIsIGRlc2M6IHZvZF9yZW1hcmtzLCBjb2xfdHlwZTogXFxcXFxcXCJtb3ZpZV8zX21hcnF1ZWVcXFxcXFxcIiwgdXJsOiAkKFxcXFxcXFwiaGlrZXI6Ly9lbXB0eSMjXFxcXFxcXCIgKyBsaW5rKS5ydWxlKCgpID0+IHtcXFxcbiAgICAgICAgICAgICAgICB0cnkge1xcXFxuICAgICAgICAgICAgICAgICAgICBldmFsKEpTT04ucGFyc2UoZmV0Y2goXFxcXFxcXCJoaWtlcjovL3BhZ2UvYXBwbW92bGlzdFxcXFxcXFwiLCB7fSkpLnJ1bGUpO1xcXFxuICAgICAgICAgICAgICAgIH1cXFxcbiAgICAgICAgICAgICAgICBjYXRjaCAoZSkge1xcXFxuICAgICAgICAgICAgICAgICAgICBsb2coZS5tZXNzYWdlKTtcXFxcbiAgICAgICAgICAgICAgICAgICAgc2V0UmVzdWx0KFtdKTtcXFxcbiAgICAgICAgICAgICAgICB9XFxcXG4gICAgICAgICAgICB9XFxcXG4gICAgICAgICAgICApfSk7XFxcXG4gICAgICAgIH1cXFxcbiAgICB9XFxcXG59XFxcXG4pKClcXFwifSx7XFxcIm5hbWVcXFwiOlxcXCJBUFDpgInpm4ZcXFwiLFxcXCJwYXRoXFxcIjpcXFwiYXBwbW92bGlzdFxcXCIsXFxcInJ1bGVcXFwiOlxcXCIoXFxcXG5mdW5jdGlvbiAoKSB7XFxcXG4gICAgYWRkTGlzdGVuZXIoXFxcXFxcXCJvbkNsb3NlXFxcXFxcXCIsICQudG9TdHJpbmcoKHVybCkgPT4ge1xcXFxuICAgICAgICBjbGVhclZhcihcXFxcXFxcImFwcG5vd1xcXFxcXFwiKTtcXFxcbiAgICAgICAgY2xlYXJWYXIodXJsKTtcXFxcbiAgICB9XFxcXG4gICAgLCBNWV9VUkwpKTtcXFxcbiAgICBsZXQgaXRlbXMgPSBbXSwgaHRtbCA9IGdldFZhcihNWV9VUkwsIFxcXFxcXFwiXFxcXFxcXCIpLCBkb21pbiA9IE1ZX1VSTC5zcGxpdChcXFxcXFxcIiMjXFxcXFxcXCIpWzFdLm1hdGNoKC8oW1xcXFxcXFxcU10qPzpcXFxcXFxcXC9cXFxcXFxcXC9bXFxcXFxcXFxTXSo/KVxcXFxcXFxcLy8pWzFdO1xcXFxuICAgIGlmIChodG1sID09IFxcXFxcXFwiXFxcXFxcXCIpIHtcXFxcbiAgICAgICAgaHRtbCA9IGZldGNoKE1ZX1VSTC5zcGxpdChcXFxcXFxcIiMjXFxcXFxcXCIpWzFdLCB7aGVhZGVyczoge1xcXFxcXFwiVXNlci1BZ2VudFxcXFxcXFwiOiBcXFxcXFxcIkRhcnQvMi4xMyAoZGFydDppbylcXFxcXFxcIn19KTtcXFxcbiAgICAgICAgcHV0VmFyKE1ZX1VSTCwgaHRtbCk7XFxcXG4gICAgfVxcXFxuICAgIGh0bWwgPSBKU09OLnBhcnNlKGh0bWwpO1xcXFxuICAgIGl0ZW1zLnB1c2goe3RpdGxlOiBcXFxcXFxcIlxcXFxcXFwiLCBkZXNjOiBcXFxcXFxcIjI1NSYmZmxvYXRcXFxcXFxcIiwgdXJsOiBcXFxcXFxcIlxcXFxcXFwiLCBjb2xfdHlwZTogXFxcXFxcXCJ4NV93ZWJ2aWV3X3NpbmdsZVxcXFxcXFwifSk7XFxcXG4gICAgcmVmcmVzaFg1V2ViVmlldyhcXFxcXFxcIlxcXFxcXFwiKTtcXFxcbiAgICBsZXQgdGh1bWIgPSBodG1sLmRhdGEudm9kX2luZm8gPyBodG1sLmRhdGEudm9kX2luZm8udm9kX3BpYyA6IGh0bWwuZGF0YS52b2RfcGljLCBkZXMgPSBodG1sLmRhdGEudm9kX2luZm8gPyBodG1sLmRhdGEudm9kX2luZm8udm9kX2NvbnRlbnQgOiBodG1sLmRhdGEudm9kX2NvbnRlbnQ7XFxcXG4gICAgaXRlbXMucHVzaCh7dGl0bGU6IFxcXFxcXFwiXFxcXFxcXFx1NTI2N1xcXFxcXFxcdTYwYzVcXFxcXFxcXHU3YjgwXFxcXFxcXFx1NGVjYjpcXFxcXFxcIiwgZGVzYzogZGVzLCBwaWNfdXJsOiB0aHVtYiwgdXJsOiAkKFxcXFxcXFwiaGlrZXI6Ly9lbXB0eSNub1JlY29yZEhpc3RvcnkjXFxcXFxcXCIpLnJ1bGUoKGRlcykgPT4ge1xcXFxuICAgICAgICBzZXRSZXN1bHQoW3t0aXRsZTogZGVzLCBjb2xfdHlwZTogXFxcXFxcXCJsb25nX3RleHRcXFxcXFxcIn1dKTtcXFxcbiAgICB9XFxcXG4gICAgLCBkZXMpLCBjb2xfdHlwZTogXFxcXFxcXCJtb3ZpZV8xX3ZlcnRpY2FsX3BpY1xcXFxcXFwifSk7XFxcXG4gICAgbGV0IGRuZW4gPSBnZXRNeVZhcihcXFxcXFxcImRuZW5cXFxcXFxcIiwgXFxcXFxcXCIwXFxcXFxcXCIpO1xcXFxuICAgIGl0ZW1zLnB1c2goe3RpdGxlOiBcXFxcXFxcIlxcXFxcXFxcdTY1YWRcXFxcXFxcXHU2M2QyOlxcXFxcXFwiICsgKGRuZW4gPT0gXFxcXFxcXCIxXFxcXFxcXCIgPyBcXFxcXFxcIlxcXFxcXFxcdTIwMWNcXFxcXFxcXHUyMDFjXFxcXFxcXFx1MjcwNVxcXFxcXFxcdTIwMWRcXFxcXFxcXHUyMDFkXFxcXFxcXCIgOiBcXFxcXFxcIlxcXFxcXFxcdTI3NGVcXFxcXFxcIiksIHVybDogJChcXFxcXFxcIlxcXFxcXFwiKS5sYXp5UnVsZSgoZG5lbikgPT4ge1xcXFxuICAgICAgICBpZiAoZG5lbiA9PSBcXFxcXFxcIjFcXFxcXFxcIikge1xcXFxuICAgICAgICAgICAgcHV0TXlWYXIoXFxcXFxcXCJkbmVuXFxcXFxcXCIsIFxcXFxcXFwiMFxcXFxcXFwiKTtcXFxcbiAgICAgICAgICAgIHJlZnJlc2hQYWdlKGZhbHNlKTtcXFxcbiAgICAgICAgICAgIHJldHVybiBcXFxcXFxcInRvYXN0Oi8vXFxcXFxcXFx1NWRmMlxcXFxcXFxcdTc5ODFcXFxcXFxcXHU3NTI4XFxcXFxcXFx1NjVhZFxcXFxcXFxcdTYzZDJcXFxcXFxcXHU4YzAzXFxcXFxcXFx1NzUyOCFcXFxcXFxcIjtcXFxcbiAgICAgICAgfSBlbHNlIHtcXFxcbiAgICAgICAgICAgIHB1dE15VmFyKFxcXFxcXFwiZG5lblxcXFxcXFwiLCBcXFxcXFxcIjFcXFxcXFxcIik7XFxcXG4gICAgICAgICAgICByZWZyZXNoUGFnZShmYWxzZSk7XFxcXG4gICAgICAgICAgICByZXR1cm4gXFxcXFxcXCJ0b2FzdDovL1xcXFxcXFxcdTVkZjJcXFxcXFxcXHU1ZjAwXFxcXFxcXFx1NTQyZlxcXFxcXFxcdTY1YWRcXFxcXFxcXHU2M2QyXFxcXFxcXFx1OGMwM1xcXFxcXFxcdTc1MjghXFxcXFxcXCI7XFxcXG4gICAgICAgIH1cXFxcbiAgICB9XFxcXG4gICAgLCBkbmVuKSwgY29sX3R5cGU6IFxcXFxcXFwidGV4dF8yXFxcXFxcXCJ9KTtcXFxcbiAgICBpdGVtcy5wdXNoKHt0aXRsZTogXFxcXFxcXCJcXFxcXFxcXHU3ZWJmXFxcXFxcXFx1OGRlZlxcXFxcXFxcdTkxNGRcXFxcXFxcXHU3ZjZlXFxcXFxcXCIsIHVybDogXFxcXFxcXCJoaWtlcjovL3BhZ2UvUm91dGU/cnVsZT1NeUZpZWxkXFxcXFxcXFx1MWQzMFxcXFxcXFxcdTIwN2YmdHlwZT1cXFxcXFxcXHU4YmJlXFxcXFxcXFx1N2Y2ZSNub1JlY29yZEhpc3RvcnkjXFxcXFxcXCIsIGNvbF90eXBlOiBcXFxcXFxcInRleHRfMlxcXFxcXFwifSk7XFxcXG4gICAgaXRlbXMucHVzaCh7dGl0bGU6IFxcXFxcXFwiXFxcXFxcXFx1MjAxY1xcXFxcXFxcdTIwMWNcXFxcXFxcXHUyMTkzXFxcXFxcXFx1MjE5MVxcXFxcXFxcdTIwMWRcXFxcXFxcXHUyMDFkXFxcXFxcXCIsIHVybDogXFxcXFxcXCJoaWtlcjovL2VtcHR5QGxhenlSdWxlPS5qczpwdXRWYXIoJ2FwcG1hcHBzb3J0JywgZ2V0VmFyKCdhcHBtYXBwc29ydCcsJzEnKT09JzEnPycwJzonMScpO3JlZnJlc2hQYWdlKGZhbHNlKTsndG9hc3Q6Ly9cXFxcXFxcXHU1MjA3XFxcXFxcXFx1NjM2MlxcXFxcXFxcdTYyMTBcXFxcXFxcXHU1MjlmISdcXFxcXFxcIiwgY29sX3R5cGU6IFxcXFxcXFwic2Nyb2xsX2J1dHRvblxcXFxcXFwifSk7XFxcXG4gICAgbGV0IGNvbnRzID0gW10sIHRhYnMgPSBbXTtcXFxcbiAgICBpZiAoaHRtbC5kYXRhLnZvZF91cmxfd2l0aF9wbGF5ZXIpIHtcXFxcbiAgICAgICAgY29udHMgPSBodG1sLmRhdGEudm9kX3VybF93aXRoX3BsYXllcjtcXFxcbiAgICAgICAgaWYgKGNvbnRzLmxlbmd0aCA8IDEpIHtcXFxcbiAgICAgICAgICAgIGNvbnRzID0gaHRtbC5kYXRhLnZvZF9wbGF5X3VybC5zcGxpdChcXFxcXFxcIiQkJFxcXFxcXFwiKTtcXFxcbiAgICAgICAgICAgIHRhYnMgPSBodG1sLmRhdGEudm9kX3BsYXlfZnJvbS5zcGxpdChcXFxcXFxcIiQkJFxcXFxcXFwiKTtcXFxcbiAgICAgICAgfVxcXFxuICAgIH0gZWxzZSB7XFxcXG4gICAgICAgIGlmIChodG1sLmRhdGEudm9kX2luZm8gJiYgaHRtbC5kYXRhLnZvZF9pbmZvLnZvZF91cmxfd2l0aF9wbGF5ZXIpIHtcXFxcbiAgICAgICAgICAgIGNvbnRzID0gaHRtbC5kYXRhLnZvZF9pbmZvLnZvZF91cmxfd2l0aF9wbGF5ZXI7XFxcXG4gICAgICAgICAgICBpZiAoY29udHMubGVuZ3RoIDwgMSkge1xcXFxuICAgICAgICAgICAgICAgIGNvbnRzID0gaHRtbC5kYXRhLnZvZF9pbmZvLnZvZF9wbGF5X3VybC5zcGxpdChcXFxcXFxcIiQkJFxcXFxcXFwiKTtcXFxcbiAgICAgICAgICAgICAgICB0YWJzID0gaHRtbC5kYXRhLnZvZF9pbmZvLnZvZF9wbGF5X2Zyb20uc3BsaXQoXFxcXFxcXCIkJCRcXFxcXFxcIik7XFxcXG4gICAgICAgICAgICB9XFxcXG4gICAgICAgIH0gZWxzZSB7XFxcXG4gICAgICAgICAgICBjb250cyA9IGh0bWwuZGF0YS52b2RfcGxheV9saXN0O1xcXFxuICAgICAgICAgICAgaWYgKGNvbnRzLmxlbmd0aCA8IDEpIHtcXFxcbiAgICAgICAgICAgICAgICBjb250cyA9IGh0bWwuZGF0YS52b2RfcGxheV91cmwuc3BsaXQoXFxcXFxcXCIkJCRcXFxcXFxcIik7XFxcXG4gICAgICAgICAgICAgICAgdGFicyA9IGh0bWwuZGF0YS52b2RfcGxheV9mcm9tLnNwbGl0KFxcXFxcXFwiJCQkXFxcXFxcXCIpO1xcXFxuICAgICAgICAgICAgfVxcXFxuICAgICAgICB9XFxcXG4gICAgfVxcXFxuICAgIGxldCBsaXN0ID0gW10sIHB0YWIgPSBcXFxcXFxcIlxcXFxcXFwiO1xcXFxuICAgIGlmIChnZXRWYXIoXFxcXFxcXCJhcHBub3dcXFxcXFxcIiwgXFxcXFxcXCJcXFxcXFxcIikgPT0gXFxcXFxcXCJcXFxcXFxcIikge1xcXFxuICAgICAgICBwdXRWYXIoXFxcXFxcXCJhcHBub3dcXFxcXFxcIiwgXFxcXFxcXCIwXFxcXFxcXCIpO1xcXFxuICAgIH1cXFxcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGNvbnRzLmxlbmd0aDsgaSsrKSB7XFxcXG4gICAgICAgIGlmIChodG1sLmRhdGEudm9kX3VybF93aXRoX3BsYXllcikge1xcXFxuICAgICAgICAgICAgc3B0YWIgPSBjb250c1tpXS5jb2RlID8gY29udHNbaV0uY29kZSA6IHRhYnNbaV07XFxcXG4gICAgICAgIH0gZWxzZSB7XFxcXG4gICAgICAgICAgICBpZiAoaHRtbC5kYXRhLnZvZF9pbmZvICYmIGh0bWwuZGF0YS52b2RfaW5mby52b2RfdXJsX3dpdGhfcGxheWVyKSB7XFxcXG4gICAgICAgICAgICAgICAgc3B0YWIgPSBjb250c1tpXS5jb2RlID8gY29udHNbaV0uY29kZSA6IHRhYnNbaV07XFxcXG4gICAgICAgICAgICB9IGVsc2Uge1xcXFxuICAgICAgICAgICAgICAgIHNwdGFiID0gY29udHNbaV0uZnJvbSA/IGNvbnRzW2ldLmZyb20gOiB0YWJzW2ldO1xcXFxuICAgICAgICAgICAgfVxcXFxuICAgICAgICB9XFxcXG4gICAgICAgIGl0ZW1zLnB1c2goe3RpdGxlOiBnZXRWYXIoXFxcXFxcXCJhcHBub3dcXFxcXFxcIikgPT0gaSA/IFxcXFxcXFwiXFxcXFxcXFx1MjAxY1xcXFxcXFxcdTIwMWNcXFxcXFxcXHUyMDFkXFxcXFxcXFx1MjAxZFxcXFxcXFwiICsgc3B0YWIuYm9sZCgpLmZvbnRjb2xvcihcXFxcXFxcIiNGQTcyOThcXFxcXFxcIikgOiBzcHRhYiwgdXJsOiBcXFxcXFxcImhpa2VyOi8vZW1wdHlAbGF6eVJ1bGU9LmpzOnB1dFZhcignYXBwbm93JywnXFxcXFxcXCIgKyBpICsgXFxcXFxcXCInKTtyZWZyZXNoUGFnZShmYWxzZSk7J3RvYXN0Oi8vXFxcXFxcXFx1NTIwN1xcXFxcXFxcdTYzNjJcXFxcXFxcXHU2MjEwXFxcXFxcXFx1NTI5ZiEnXFxcXFxcXCIsIGNvbF90eXBlOiBcXFxcXFxcInNjcm9sbF9idXR0b25cXFxcXFxcIn0pO1xcXFxuICAgICAgICBpZiAoZ2V0VmFyKFxcXFxcXFwiYXBwbm93XFxcXFxcXCIpID09IGkpIHtcXFxcbiAgICAgICAgICAgIHB0YWIgPSBzcHRhYjtcXFxcbiAgICAgICAgfVxcXFxuICAgIH1cXFxcbiAgICBsZXQgaSA9IGdldFZhcihcXFxcXFxcImFwcG5vd1xcXFxcXFwiKTtcXFxcbiAgICBpZiAoY29udHNbaV0udXJscykge1xcXFxuICAgICAgICBsaXN0ID0gY29udHNbaV0udXJscztcXFxcbiAgICB9IGVsc2Uge1xcXFxuICAgICAgICBpZiAoY29udHNbaV0udXJsKSB7XFxcXG4gICAgICAgICAgICBsaXN0ID0gY29udHNbaV0udXJsLnNwbGl0KFxcXFxcXFwiI1xcXFxcXFwiKTtcXFxcbiAgICAgICAgfSBlbHNlIHtcXFxcbiAgICAgICAgICAgIGxpc3QgPSBjb250c1tpXS5zcGxpdChcXFxcXFxcIiNcXFxcXFxcIik7XFxcXG4gICAgICAgIH1cXFxcbiAgICB9XFxcXG4gICAgaWYgKGdldFZhcihcXFxcXFxcImFwcG1hcHBzb3J0XFxcXFxcXCIsIFxcXFxcXFwiMVxcXFxcXFwiKSA9PSBcXFxcXFxcIjBcXFxcXFxcIikge1xcXFxuICAgICAgICBsaXN0LnJldmVyc2UoKTtcXFxcbiAgICB9XFxcXG4gICAgZm9yIChsZXQgaiA9IDA7IGogPCBsaXN0Lmxlbmd0aDsgaisrKSB7XFxcXG4gICAgICAgIGxldCB2bGluayA9IFxcXFxcXFwiXFxcXFxcXCIsIHRpdGxlID0gXFxcXFxcXCJcXFxcXFxcIiwgamllayA9IFxcXFxcXFwiXFxcXFxcXCI7XFxcXG4gICAgICAgIGlmIChjb250c1tpXS51cmxzKSB7XFxcXG4gICAgICAgICAgICB2bGluayA9IGxpc3Rbal0udXJsLnJlcGxhY2UoLyM0NTYjL2csIFxcXFxcXFwiaHR0cFxcXFxcXFwiKS5yZXBsYWNlKC8jMTIzIy9nLCBcXFxcXFxcIi5cXFxcXFxcIikucmVwbGFjZSgvIzc4OSMvZywgXFxcXFxcXCI6XFxcXFxcXCIpO1xcXFxuICAgICAgICAgICAgdGl0bGUgPSBsaXN0W2pdLm5hbWU7XFxcXG4gICAgICAgIH0gZWxzZSB7XFxcXG4gICAgICAgICAgICB2bGluayA9IGxpc3Rbal0uc3BsaXQoXFxcXFxcXCIkXFxcXFxcXCIpWzFdO1xcXFxuICAgICAgICAgICAgdGl0bGUgPSBsaXN0W2pdLnNwbGl0KFxcXFxcXFwiJFxcXFxcXFwiKVswXTtcXFxcbiAgICAgICAgfVxcXFxuICAgICAgICB0cnkge1xcXFxuICAgICAgICAgICAgaWYgKGh0bWwuZGF0YS52b2RfdXJsX3dpdGhfcGxheWVyKSB7XFxcXG4gICAgICAgICAgICAgICAgamllayA9IGNvbnRzW2ldLnBhcnNlX2FwaTtcXFxcbiAgICAgICAgICAgIH0gZWxzZSB7XFxcXG4gICAgICAgICAgICAgICAgaWYgKGh0bWwuZGF0YS52b2RfaW5mbyAmJiBodG1sLmRhdGEudm9kX2luZm8udm9kX3VybF93aXRoX3BsYXllcikge1xcXFxuICAgICAgICAgICAgICAgICAgICBqaWVrID0gY29udHNbaV0ucGFyc2VfYXBpO1xcXFxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XFxcXG4gICAgICAgICAgICAgICAgICAgIGlmIChjb250c1tpXS5wbGF5ZXJfaW5mby5wYXJzZTIgJiYgKGNvbnRzW2ldLnBsYXllcl9pbmZvLnBhcnNlMikuaW5kZXhPZihcXFxcXFxcIj1cXFxcXFxcIikgIT0gLTEpIHtcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgIGppZWsgPSAoY29udHNbaV0ucGxheWVyX2luZm8ucGFyc2UyKS5tYXRjaCgvLio/dXJsPXwuKj92PXwuKj92aWQ9LylbMF0ucmVwbGFjZShcXFxcXFxcIi4uXFxcXFxcXCIsIFxcXFxcXFwiLlxcXFxcXFwiKS5yZXBsYWNlKFxcXFxcXFwianNvbmJzXFxcXFxcXCIsIFxcXFxcXFwiXFxcXFxcXCIpO1xcXFxuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xcXFxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGNvbnRzW2ldLnBsYXllcl9pbmZvLnBhcnNlICYmIChjb250c1tpXS5wbGF5ZXJfaW5mby5wYXJzZSkuaW5kZXhPZihcXFxcXFxcIj1cXFxcXFxcIikgIT0gLTEpIHtcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBqaWVrID0gKGNvbnRzW2ldLnBsYXllcl9pbmZvLnBhcnNlKS5tYXRjaCgvLio/dXJsPXwuKj92PXwuKj92aWQ9LylbMF0ucmVwbGFjZShcXFxcXFxcIi4uXFxcXFxcXCIsIFxcXFxcXFwiLlxcXFxcXFwiKTtcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgamllayA9IFxcXFxcXFwiXFxcXFxcXCI7XFxcXG4gICAgICAgICAgICAgICAgICAgICAgICB9XFxcXG4gICAgICAgICAgICAgICAgICAgIH1cXFxcbiAgICAgICAgICAgICAgICB9XFxcXG4gICAgICAgICAgICB9XFxcXG4gICAgICAgIH1cXFxcbiAgICAgICAgY2F0Y2ggKGUpIHtcXFxcbiAgICAgICAgfVxcXFxuICAgICAgICBpZiAoamllayAhPSBcXFxcXFxcIlxcXFxcXFwiICYmIGppZWsgIT0gbnVsbCkge1xcXFxuICAgICAgICAgICAgaWYgKGppZWsuc3Vic3RyaW5nKDAsIDQpID09IFxcXFxcXFwiaHR0cFxcXFxcXFwiKSB7XFxcXG4gICAgICAgICAgICAgICAgamllayA9IGppZWs7XFxcXG4gICAgICAgICAgICB9IGVsc2Uge1xcXFxuICAgICAgICAgICAgICAgIGlmIChqaWVrLnN1YnN0cmluZygwLCAyKSA9PSBcXFxcXFxcIi8vXFxcXFxcXCIpIHtcXFxcbiAgICAgICAgICAgICAgICAgICAgamllayA9IFxcXFxcXFwiaHR0cHM6XFxcXFxcXCIgKyBqaWVrO1xcXFxuICAgICAgICAgICAgICAgIH1cXFxcbiAgICAgICAgICAgIH1cXFxcbiAgICAgICAgfVxcXFxuICAgICAgICB0cnkge1xcXFxuICAgICAgICAgICAgaWYgKGogPT0gXFxcXFxcXCIwXFxcXFxcXCIpIHtcXFxcbiAgICAgICAgICAgICAgICBsb2coXFxcXFxcXCJcXFxcXFxcXG5cXFxcXFxcXHU3ZWJmXFxcXFxcXFx1OGRlZjpcXFxcXFxcIiArIHB0YWIgKyBcXFxcXFxcIlxcXFxcXFxcblxcXFxcXFxcdTg5ZTNcXFxcXFxcXHU2NzkwXFxcXFxcXFx1NjNhNVxcXFxcXFxcdTUzZTM6XFxcXFxcXCIgKyBqaWVrKTtcXFxcbiAgICAgICAgICAgIH1cXFxcbiAgICAgICAgfVxcXFxuICAgICAgICBjYXRjaCAoZSkge1xcXFxuICAgICAgICB9XFxcXG4gICAgICAgIGxldCBsaW5rID0gamllayArIHZsaW5rO1xcXFxuICAgICAgICBpZiAoL1xcXFxcXFxcLm0zdTh8XFxcXFxcXFwubXA0fG9ialxcXFxcXFxcL3Rvcy8udGVzdCh2bGluaykgJiYgL2h0dHAvLnRlc3QodmxpbmspKSB7XFxcXG4gICAgICAgICAgICBsaW5rID0gdmxpbms7XFxcXG4gICAgICAgIH0gZWxzZSB7XFxcXG4gICAgICAgICAgICBpZiAoL3NpZ249Ly50ZXN0KHZsaW5rKSkge1xcXFxuICAgICAgICAgICAgICAgIGxpbmsgPSB2bGluaztcXFxcbiAgICAgICAgICAgIH1cXFxcbiAgICAgICAgfVxcXFxuICAgICAgICBpdGVtcy5wdXNoKHt0aXRsZTogdGl0bGUsIGNvbF90eXBlOiBcXFxcXFxcInRleHRfNFxcXFxcXFwiLCB1cmw6ICQoXFxcXFxcXCJcXFxcXFxcIikubGF6eVJ1bGUoKHB0YWIsIHNyY3VybCwgZG9taW4pID0+IHtcXFxcbiAgICAgICAgICAgIGxvZyhcXFxcXFxcIlxcXFxcXFxcdTUzOWZcXFxcXFxcXHU5NGZlXFxcXFxcXFx1NjNhNTpcXFxcXFxcIiArIHNyY3VybCk7XFxcXG4gICAgICAgICAgICBmdW5jdGlvbiBvcGVudXJsKHJlc3VybCkge1xcXFxuICAgICAgICAgICAgICAgIGlmIChyZXN1cmwubWF0Y2goL3lvdWt1fG1ndHZ8aXhpZ3VhfHFxLmNvbXxxaXlpfG1pZ3V8YmlsaWJpbGl8c29odXxwcHR2fGxlfDE5MDUuY29tLykgJiYgcmVzdXJsLnNlYXJjaCgvaHRtbHxiaWxpYmlsaS8pICE9IC0xKSB7XFxcXG4gICAgICAgICAgICAgICAgICAgIGxldCBlbkRuID0gZ2V0TXlWYXIoXFxcXFxcXCJkbmVuXFxcXFxcXCIsIFxcXFxcXFwiMFxcXFxcXFwiKTtcXFxcbiAgICAgICAgICAgICAgICAgICAgaWYgKGVuRG4gPT0gXFxcXFxcXCIxXFxcXFxcXCIpIHtcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgIGxvZyhcXFxcXFxcIlxcXFxcXFxcdThjMDNcXFxcXFxcXHU3NTI4XFxcXFxcXFx1NjVhZFxcXFxcXFxcdTYzZDJcXFxcXFxcXHU4OWUzXFxcXFxcXFx1Njc5MFxcXFxcXFwiKTtcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgIGV2YWwoXFxcXFxcXCJsZXQgY29uZmlnID1cXFxcXFxcIiArIGZldGNoKFxcXFxcXFwiaGlrZXI6Ly9maWxlcy9jYWNoZS9NeVBhcnNlU2V0Lmpzb25cXFxcXFxcIikpO1xcXFxuICAgICAgICAgICAgICAgICAgICAgICAgZXZhbChmZXRjaChjb25maWcuY2opKTtcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBheXRtUGFyc2UocmVzdXJsKTtcXFxcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiByZXN1cmw7XFxcXG4gICAgICAgICAgICAgICAgICAgIH1cXFxcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xcXFxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmVzdXJsO1xcXFxuICAgICAgICAgICAgICAgIH1cXFxcbiAgICAgICAgICAgIH1cXFxcbiAgICAgICAgICAgIHRyeSB7XFxcXG4gICAgICAgICAgICAgICAgaWYgKC9cXFxcXFxcXC5tM3U4fFxcXFxcXFxcLm1wNHxvYmpcXFxcXFxcXC90b3N8bmV0ZWFzZVxcXFxcXFxcLmNvbS8udGVzdChzcmN1cmwpICYmIC9odHRwLy50ZXN0KHNyY3VybCkgJiYgIS9cXFxcXFxcXC5odG1sLy50ZXN0KHNyY3VybCkpIHtcXFxcbiAgICAgICAgICAgICAgICAgICAgaWYgKC93a2ZpbGUvLnRlc3Qoc3JjdXJsKSkge1xcXFxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHNyY3VybCArIFxcXFxcXFwiO3tSZWZlcmVyQGh0dHBzOi8vZmFudHVhbi53a2ZpbGUuY29tL31cXFxcXFxcIjtcXFxcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICgvZHVvZHVvenkvLnRlc3QocHRhYikpIHtcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQganNvbiA9IGZldGNoKFxcXFxcXFwiaHR0cHM6Ly9wbGF5ZXIuZHVvZHVvenkuY29tL2RkcGxheS9hcGkucGhwP3VybD1cXFxcXFxcIiArIHNyY3VybCwge30pO1xcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBKU09OLnBhcnNlKGpzb24pLnVybDtcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKC9zaWduPS8udGVzdChzcmN1cmwpKSB7XFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBzcmN1cmwgKyBcXFxcXFxcIiNpc1ZpZGVvPXRydWUjXFxcXFxcXCI7XFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIC9cXFxcXFxcXD0vLnRlc3Qoc3JjdXJsKSA/IHNyY3VybC5zcGxpdChcXFxcXFxcIj1cXFxcXFxcIilbMV0gOiBzcmN1cmwgKyBcXFxcXFxcIiNpc1ZpZGVvPXRydWUjXFxcXFxcXCI7XFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgfVxcXFxuICAgICAgICAgICAgICAgICAgICB9XFxcXG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcXFxcbiAgICAgICAgICAgICAgICAgICAgaWYgKHNyY3VybC5pbmRleE9mKFxcXFxcXFwiL3NoYXJlL1xcXFxcXFwiKSAhPSAtMSkge1xcXFxuICAgICAgICAgICAgICAgICAgICAgICAgdHJ5IHtcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgbGluayA9IHNyY3VybC5zcGxpdChcXFxcXFxcIi9zaGFyZVxcXFxcXFwiKVswXSwgZmMgPSBmZXRjaChzcmN1cmwsIHt9KS5yZXBsYWNlKFxcXFxcXFwidmFyIHB1cmxcXFxcXFxcIiwgXFxcXFxcXCJ2YXIgbWFpblxcXFxcXFwiKSwgcGxheSA9IFxcXFxcXFwiXFxcXFxcXCI7XFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGZjLmluZGV4T2YoXFxcXFxcXCJtYWluXFxcXFxcXCIpICE9IC0xKSB7XFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBtYXQgPSBmYy5tYXRjaCgvdmFyIG1haW4uKj87LylbMF07XFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV2YWwobWF0KTtcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGxheSA9IChtYWluLmluZGV4T2YoXFxcXFxcXCJodHRwXFxcXFxcXCIpICE9IC0xID8gbWFpbiA6IGxpbmsgKyBtYWluKTtcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgbWFpbiA9IGZjLm1hdGNoKC91cmw6Lio/W1xcXFxcXFxcJ1xcXFxcXFxcXFxcXFxcXCJdKC4qPylbXFxcXFxcXFwnXFxcXFxcXFxcXFxcXFxcIl0vKVsxXTtcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGxheSA9IChtYWluLmluZGV4T2YoXFxcXFxcXCJodHRwXFxcXFxcXCIpICE9IC0xID8gbWFpbiA6IGxpbmsgKyBtYWluKTtcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHBsYXk7XFxcXG4gICAgICAgICAgICAgICAgICAgICAgICB9XFxcXG4gICAgICAgICAgICAgICAgICAgICAgICBjYXRjaCAoZSkge1xcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBcXFxcXFxcIng1V2ViVmlldzovL1xcXFxcXFwiICsgc3JjdXJsO1xcXFxuICAgICAgICAgICAgICAgICAgICAgICAgfVxcXFxuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xcXFxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHB0YWIgPT0gXFxcXFxcXCJhbGl6eVxcXFxcXFwiKSB7XFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHB1cmwgPSBmZXRjaChcXFxcXFxcImh0dHBzOi8vZm91YmluLmNvbS9qaWV4aS5waHA/dXJsPVxcXFxcXFwiICsgc3JjdXJsLnNwbGl0KFxcXFxcXFwidXJsPVxcXFxcXFwiKVsxXSwge30pLm1hdGNoKC9cXFxcXFxcXFxcXFxcXFwidXJsXFxcXFxcXFxcXFxcXFxcIjpcXFxcXFxcXFxcXFxcXFwiKC4qPylcXFxcXFxcXFxcXFxcXFwiLylbMV07XFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHB1cmw7XFxcXG4gICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgvOTgzdmlwLy50ZXN0KHNyY3VybCkpIHtcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEpTT04ucGFyc2UoZmV0Y2goc3JjdXJsLCB7aGVhZGVyczoge1xcXFxcXFwiVXNlci1BZ2VudFxcXFxcXFwiOiBNT0JJTEVfVUF9LCByZWRpcmVjdDogZmFsc2UsIHdpdGhIZWFkZXJzOiB0cnVlfSkpLmhlYWRlcnMubG9jYXRpb25bMF07XFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKC94XFxcXFxcXFwtblxcXFxcXFxcLmNjfG5oZHo2NjYvLnRlc3Qoc3JjdXJsKSAmJiAvXFxcXFxcXFwuaHRtbHxiaWxpYmlsaS8udGVzdChzcmN1cmwpKSB7XFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gb3BlbnVybChzcmN1cmwuc3Vic3RyaW5nKHNyY3VybC5pbmRleE9mKFxcXFxcXFwiPWh0dHBcXFxcXFxcIikgKyAxKSk7XFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XFxcXG4gICAgICAgICAgICAgICAgICAgICAgICB9XFxcXG4gICAgICAgICAgICAgICAgICAgIH1cXFxcbiAgICAgICAgICAgICAgICB9XFxcXG4gICAgICAgICAgICAgICAgbGV0IHNjb2RlID0gSlNPTi5wYXJzZShmZXRjaChzcmN1cmwsIHtoZWFkZXJzOiB7XFxcXFxcXCJVc2VyLUFnZW50XFxcXFxcXCI6IFxcXFxcXFwiRGFydC8yLjEzIChkYXJ0OmlvKVxcXFxcXFwifSwgcmVkaXJlY3Q6IGZhbHNlLCB3aXRoU3RhdHVzQ29kZTogdHJ1ZX0pKTtcXFxcbiAgICAgICAgICAgICAgICBpZiAoc2NvZGUuc3RhdHVzQ29kZSA9PSBcXFxcXFxcIjMwMlxcXFxcXFwiIHx8IHNjb2RlLnN0YXR1c0NvZGUgPT0gXFxcXFxcXCIzMDFcXFxcXFxcIikge1xcXFxuICAgICAgICAgICAgICAgICAgICBsZXQgcmVkdXJsID0gc2NvZGUuaGVhZGVycy5sb2NhdGlvblswXS5yZXBsYWNlKC9cXFxcXFxcXFxcXFxcXFxcL2csIFxcXFxcXFwiXFxcXFxcXCIpO1xcXFxuICAgICAgICAgICAgICAgICAgICBpZiAoL1xcXFxcXFxcPWh0dHAvLnRlc3QocmVkdXJsKSAmJiAvaHRtbHxiaWxpYmlsaS8udGVzdChyZWR1cmwpKSB7XFxcXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gSlNPTi5wYXJzZShmZXRjaChyZWR1cmwsIHt9KSkudXJsO1xcXFxuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xcXFxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKC9cXFxcXFxcXD1odHRwLy50ZXN0KHJlZHVybCkgJiYgL1xcXFxcXFxcLm0zdTh8XFxcXFxcXFwubXA0fFxcXFxcXFxcLmZsdi8udGVzdChyZWR1cmwpKSB7XFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlZHVybC5zdWJzdHJpbmcocmVkdXJsLmluZGV4T2YoXFxcXFxcXCI9aHR0cFxcXFxcXFwiKSArIDEpO1xcXFxuICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmVkdXJsO1xcXFxuICAgICAgICAgICAgICAgICAgICAgICAgfVxcXFxuICAgICAgICAgICAgICAgICAgICB9XFxcXG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcXFxcbiAgICAgICAgICAgICAgICAgICAgbGV0IGh0bWwgPSBzY29kZS5ib2R5O1xcXFxuICAgICAgICAgICAgICAgICAgICBpZiAoLzQwNCBOb3QgRm91bmR85aSH5qGI5ZCO5Y+v57un57ut6K6/6ZeuLy50ZXN0KGh0bWwpKSB7XFxcXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gb3BlbnVybChzcmN1cmwuc3Vic3RyaW5nKHNyY3VybC5pbmRleE9mKFxcXFxcXFwiPWh0dHBcXFxcXFxcIikgKyAxKSk7XFxcXG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XFxcXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoL1xcXFxcXFxcPGJvZHkvLnRlc3QoaHRtbCkpIHtcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2coXFxcXFxcXCJcXFxcXFxcXHU1YzFkXFxcXFxcXFx1OGJkNVxcXFxcXFxcdTk3NWVKU09OXFxcXFxcXFx1NjNhNVxcXFxcXFxcdTUzZTNcXFxcXFxcXHU3ZjUxXFxcXFxcXFx1OTg3NVxcXFxcXFxcdTg5ZTNcXFxcXFxcXHU2NzkwXFxcXFxcXCIpO1xcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVpcmVDYWNoZShcXFxcXFxcImh0dHBzOi8vY29kZS5hbGl5dW4uY29tL2x6azIzNTU5L1B1YmxpY1J1bGUvcmF3L21hc3Rlci94NXJ1bGUuanNcXFxcXFxcIiwgMjQpO1xcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB4NXJ1bGUoc3JjdXJsLCBzcmN1cmwpO1xcXFxuICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgcHVybCA9IGh0bWwubWF0Y2goL1tcXFxcXFxcXCdcXFxcXFxcXFxcXFxcXFwiXXVybFtcXFxcXFxcXCdcXFxcXFxcXFxcXFxcXFwiXTouKj9bXFxcXFxcXFwnXFxcXFxcXFxcXFxcXFxcIl0oLio/KVtcXFxcXFxcXCdcXFxcXFxcXFxcXFxcXFwiXS8pWzFdLnJlcGxhY2UoL1xcXFxcXFxcXFxcXFxcXFwvZywgXFxcXFxcXCJcXFxcXFxcIik7XFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKC9odHRwLy50ZXN0KHB1cmwpKSB7XFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChwdGFiID09IFxcXFxcXFwiYmlsaWJpbGlcXFxcXFxcIikge1xcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHB1cmwgKyBcXFxcXFxcIjt7UmVmZXJlckBodHRwczovL3d3dy5iaWxpYmlsaS5jb20vJiZVc2VyLUFnZW50QE1vemlsbGEvNS4wfVxcXFxcXFwiO1xcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHB0YWIgPT0gXFxcXFxcXCJtZ3R2XFxcXFxcXCIpIHtcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gcHVybCArIFxcXFxcXFwiI2lzVmlkZW89dHJ1ZSNcXFxcXFxcIiArIFxcXFxcXFwiO3tSZWZlcmVyQHd3dy5tZ3R2LmNvbSYmVXNlci1BZ2VudEBNb3ppbGxhLzUuMH1cXFxcXFxcIjtcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKC9vamJrLy50ZXN0KHB1cmwpKSB7XFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBwdXJsICsgXFxcXFxcXCI7e1JlZmVyZXJAaHR0cHM6Ly9iYWsub2pia2p4LmNvbS99XFxcXFxcXCI7XFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHB1cmwgKyBcXFxcXFxcIiNpc1ZpZGVvPXRydWUjXFxcXFxcXCI7XFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKC9cXFxcXFxcXD1odHRwLy50ZXN0KHNyY3VybCkgJiYgL1xcXFxcXFxcLmh0bWx8YmlsaWJpbGkvLnRlc3Qoc3JjdXJsKSkge1xcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG9wZW51cmwoc3JjdXJsLnN1YnN0cmluZyhzcmN1cmwuaW5kZXhPZihcXFxcXFxcIj1odHRwXFxcXFxcXCIpICsgMSkpO1xcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG9wZW51cmwoc3JjdXJsLnN1YnN0cmluZyhzcmN1cmwuaW5kZXhPZihcXFxcXFxcIj1odHRwXFxcXFxcXCIpICsgMSkpO1xcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgfVxcXFxuICAgICAgICAgICAgICAgICAgICB9XFxcXG4gICAgICAgICAgICAgICAgfVxcXFxuICAgICAgICAgICAgfVxcXFxuICAgICAgICAgICAgY2F0Y2ggKGUpIHtcXFxcbiAgICAgICAgICAgICAgICBsb2coXFxcXFxcXCJcXFxcXFxcXHU2MjY3XFxcXFxcXFx1ODg0Y1xcXFxcXFxcdTYyYTVcXFxcXFxcXHU5NTE5XFxcXFxcXFx1NTkwNFxcXFxcXFxcdTc0MDZcXFxcXFxcIik7XFxcXG4gICAgICAgICAgICAgICAgaWYgKHNyY3VybC5zdWJzdHJpbmcoMCwgMikgPT0gXFxcXFxcXCIvL1xcXFxcXFwiKSB7XFxcXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBvcGVudXJsKFxcXFxcXFwiaHR0cHM6XFxcXFxcXCIgKyBzcmN1cmwpO1xcXFxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XFxcXG4gICAgICAgICAgICAgICAgICAgIGlmICgvXFxcXFxcXFw9aHR0cC8udGVzdChzcmN1cmwpICYmIC9cXFxcXFxcXC5odG1sfGJpbGliaWxpLy50ZXN0KHNyY3VybCkpIHtcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBvcGVudXJsKHNyY3VybC5zdWJzdHJpbmcoc3JjdXJsLmluZGV4T2YoXFxcXFxcXCI9aHR0cFxcXFxcXFwiKSArIDEpKTtcXFxcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBvcGVudXJsKHNyY3VybCk7XFxcXG4gICAgICAgICAgICAgICAgICAgIH1cXFxcbiAgICAgICAgICAgICAgICB9XFxcXG4gICAgICAgICAgICB9XFxcXG4gICAgICAgIH1cXFxcbiAgICAgICAgLCBwdGFiLCBsaW5rLCBkb21pbil9KTtcXFxcbiAgICB9XFxcXG4gICAgc2V0UmVzdWx0KGl0ZW1zKTtcXFxcbn1cXFxcbikoKVxcXCJ9XVwifSIsInBpY1VybCI6Imh0dHBzOi8vd3d3LmltZ3p5MzYwLmNvbTo3Nzg4L3VwbG9hZC92b2QvMjAyNDExMDYtMS83OGFkMzk4NGZkZDlkMWVjYjIxMGJlZDkzZjFiMjNiOC5qcGdAUmVmZXJlcj0iLCJ0aXRsZSI6IumUpue7o+WuieWugSJ9
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement