Advertisement
xiaomianao666

邀您一起看:常见寄生虫图谱-人体常见寄生虫学彩色图谱

Dec 31st, 2022
408
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. 海阔视界规则分享,当前分享的是:二级页面详情¥page_detail¥常见寄生虫图谱-人体常见寄生虫学彩色图谱@@eyJkYXRhIjoie1wiYXNzb2NpYXRlZE1vZGVsc01hcEZvckpvaW5UYWJsZVwiOnt9LFwiYXNzb2NpYXRlZE1vZGVsc01hcFdpdGhGS1wiOnt9LFwiYXNzb2NpYXRlZE1vZGVsc01hcFdpdGhvdXRGS1wiOnt9LFwiZmllbGRzVG9TZXRUb0RlZmF1bHRcIjpbXSxcImdtdE1vZGlmaWVkXCI6MCxcImlkXCI6MCxcImxpc3RUb0NsZWFyQXNzb2NpYXRlZEZLXCI6W10sXCJsaXN0VG9DbGVhclNlbGZGS1wiOltdLFwicGFnZUxpc3RcIjpbe1wiY29sX3R5cGVcIjpcInRleHRfMVwiLFwibmFtZVwiOlwi5pCc57SiXCIsXCJwYXRoXCI6XCLmkJzntKJcIixcInJ1bGVcIjpcImpzOlxcbnZhciBkID0gW107XFxudHJ5IHtcXG4gICAgaWYgKE1ZX1BBR0UgPT0gMSkge1xcbiAgICAgICAgdmFyIGVuZ2luZXMgPSBbXFxcIllsaWJyYXJ5XFxcIiwgXFxcIlpoZWxwZXJfdjVcXFwiLCBcXFwiWmhlbHBlcl92NFxcXCIsIFxcXCJMaWJnZW5cXFwiLCBcXFwi5peg5ZCN5Zu+5LmmXFxcIiwgXFxcIue9keebmFxcXCJdXFxuICAgICAgICBlbmdpbmVzLmZvckVhY2goaXRlbSA9PiB7XFxuICAgICAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICAgICAgdGl0bGU6IGdldEl0ZW0oXFxcImVuZ2luZVxcXCIsIFxcXCJZbGlicmFyeVxcXCIpID09IGl0ZW0gPyBg4oCY4oCY4oCZ4oCZPHN0cm9uZz48Zm9udCBjb2xvcj1cXFwiI2YxM2I2NmFcXFwiPuKXiSA8L2Zyb250Pjwvc3Ryb25nPiR7aXRlbX1gIDogaXRlbSxcXG4gICAgICAgICAgICAgICAgdXJsOiAkKCkubGF6eVJ1bGUoKG4pID0+IHtcXG4gICAgICAgICAgICAgICAgICAgIHNldEl0ZW0oXFxcImVuZ2luZVxcXCIsIG4pXFxuICAgICAgICAgICAgICAgICAgICByZWZyZXNoUGFnZSgpXFxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gXFxcInRvYXN0Oi8v5bey5YiH5o2i5byV5pOO77yaXFxcIiArIG5cXG4gICAgICAgICAgICAgICAgfSwgaXRlbSksXFxuICAgICAgICAgICAgICAgIGNvbF90eXBlOiBcXFwic2Nyb2xsX2J1dHRvblxcXCJcXG4gICAgICAgICAgICB9KVxcbiAgICAgICAgfSlcXG4gICAgfVxcbiAgICB2YXIgaGlzdG9yeSA9IHN0b3JhZ2UwLmdldEl0ZW0oXFxcImhpc3RvcnlcXFwiLCBbXSlcXG4gICAgaWYgKCFoaXN0b3J5LmluY2x1ZGVzKGdldFBhcmFtKFxcXCJrd1xcXCIpKSkge1xcbiAgICAgICAgaGlzdG9yeS51bnNoaWZ0KGdldFBhcmFtKFxcXCJrd1xcXCIpKVxcbiAgICAgICAgc3RvcmFnZTAuc2V0SXRlbShcXFwiaGlzdG9yeVxcXCIsIGhpc3RvcnkpXFxuICAgIH1cXG4gICAgJC5yZXF1aXJlKFxcXCJoaWtlcjovL3BhZ2UvYXBpXFxcIilbZ2V0SXRlbShcXFwiZW5naW5lXFxcIiwgXFxcIllsaWJyYXJ5XFxcIildKGdldFBhcmFtKFxcXCJrd1xcXCIpLCBNWV9QQUdFKVxcbn0gY2F0Y2ggKGUpIHtcXG4gICAgdG9hc3QoXFxcIuaQnOe0ouWksei0peS6hu+8jOivt+WIh+aNouW8leaTjumHjeivlVxcXCIpXFxuICAgIGxvZyhlLm1lc3NhZ2UpXFxufVxcbnNldFJlc3VsdChkKTtcIn0se1wiY29sX3R5cGVcIjpcInRleHRfMVwiLFwibmFtZVwiOlwiYXBpXCIsXCJwYXRoXCI6XCJhcGlcIixcInJ1bGVcIjpcIiQuZXhwb3J0cyA9IHtcXG4gICAgc2VydmVyczogW1xcXCJodHRwczovL2lwZnNndzAwLnN0YXJpdmVycGFuLmNvbTo5MDk1L2lwZnMvXFxcIiwgXFxcImh0dHBzOi8vZHdlYi5saW5rL2lwZnMvXFxcIiwgXFxcImh0dHBzOi8vaXBmcy5qcHUuanAvaXBmcy9cXFwiLCBcXFwiaHR0cHM6Ly9jZi1pcGZzLmNvbS9pcGZzL1xcXCIsIFxcXCJodHRwczovL2dhdGV3YXkucGluYXRhLmNsb3VkL2lwZnMvXFxcIiwgXFxcImh0dHBzOi8vaXBmcy1nYXRld2F5LmNsb3VkL2lwZnMvXFxcIl0sXFxuICAgIGdldEZpbGVTaXplOiBmdW5jdGlvbihzaXplKSB7XFxuICAgICAgICBpZiAoc2l6ZSA8PSAwKSB7XFxuICAgICAgICAgICAgcmV0dXJuIFxcXCJcXFwiO1xcbiAgICAgICAgfVxcbiAgICAgICAgbGV0IHVuaXRGb3JtID0gW1xcXCJCeXRlXFxcIiwgXFxcIktCXFxcIiwgXFxcIk1CXFxcIiwgXFxcIkdCXFxcIiwgXFxcIlRCXFxcIl07XFxuICAgICAgICBmb3IgKGxldCBpID0gMCwgbGVuID0gdW5pdEZvcm0ubGVuZ3RoOyBpIDwgbGVuOyBpKyspIHtcXG4gICAgICAgICAgICBpZiAoc2l6ZSA+IDEwMjQpIHtcXG4gICAgICAgICAgICAgICAgc2l6ZSAvPSAxMDI0O1xcbiAgICAgICAgICAgICAgICBjb250aW51ZTtcXG4gICAgICAgICAgICB9IGVsc2Uge1xcbiAgICAgICAgICAgICAgICByZXR1cm4gc2l6ZS50b0ZpeGVkKDIpLnJlcGxhY2UoLyhcXFxcLjAwKSQvLCBcXFwiXFxcIikgKyB1bml0Rm9ybVtpXTtcXG4gICAgICAgICAgICB9XFxuICAgICAgICB9XFxuICAgICAgICByZXR1cm4gXFxcIkVSUk9SOuaVsOWAvOi/h+Wkp1xcXCI7XFxuICAgIH0sXFxuICAgIFlsaWJyYXJ5OiBmdW5jdGlvbihrdywgcGFnZSkge1xcbiAgICAgICAgdmFyIHJlcyA9IEpTT04ucGFyc2UocG9zdChcXFwiaHR0cHM6Ly9hcGkueWxpYnJhcnkub3JnL2FwaS9zZWFyY2gvXFxcIiwge1xcbiAgICAgICAgICAgIGJvZHk6IEpTT04uc3RyaW5naWZ5KHtcXG4gICAgICAgICAgICAgICAgXFxcImtleXdvcmRcXFwiOiBrdyxcXG4gICAgICAgICAgICAgICAgXFxcInBhZ2VcXFwiOiBwYWdlLFxcbiAgICAgICAgICAgICAgICBcXFwic2Vuc2l0aXZlXFxcIjogZmFsc2VcXG4gICAgICAgICAgICB9KVxcbiAgICAgICAgfSkpLmRhdGFcXG4gICAgICAgIHJlcy5mb3JFYWNoKGl0ZW0gPT4ge1xcbiAgICAgICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgICAgIHRpdGxlOiBpdGVtLnRpdGxlLFxcbiAgICAgICAgICAgICAgICBkZXNjOiBg4oCc4oCc4oCd4oCdPHNtYWxsPuS9nOiAhToke2l0ZW0uYXV0aG9yfSDlh7rniYjnpL46JHtpdGVtLnB1Ymxpc2hlcj9pdGVtLnB1Ymxpc2hlcjpcXFwi5pqC5pegXFxcIn0gSVNCTjoke2l0ZW0uaXNibj9pdGVtLmlzYm46XFxcIuaaguaXoFxcXCJ9IOWHuueJiOaXtumXtDoke2l0ZW0ueWVhcj9pdGVtLnllYXI6XFxcIuaaguaXoFxcXCJ9IOaWh+S7tuagvOW8jzoke2l0ZW0uZXh0ZW5zaW9ufSDmlofku7blpKflsI86JHskLnJlcXVpcmUoXFxcImFwaVxcXCIpLmdldEZpbGVTaXplKGl0ZW0uZmlsZXNpemUpfTwvc21hbGw+YCxcXG4gICAgICAgICAgICAgICAgdXJsOiAkKCkubGF6eVJ1bGUoKGlkKSA9PiB7XFxuICAgICAgICAgICAgICAgICAgICB0cnkge1xcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciByZXMgPSBKU09OLnBhcnNlKHBvc3QoXFxcImh0dHBzOi8vYXBpLnlsaWJyYXJ5Lm9yZy9hcGkvZGV0YWlsL1xcXCIsIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9keTogSlNPTi5zdHJpbmdpZnkoe1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXFxcImlkXFxcIjogaWQsXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcXFwic291cmNlXFxcIjogXFxcInpsaWJyYXJ5XFxcIlxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KVxcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pKVxcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBzZXJ2ZXJzID0gJC5yZXF1aXJlKFxcXCJoaWtlcjovL3BhZ2UvYXBpXFxcIikuc2VydmVyc1xcbiAgICAgICAgICAgICAgICAgICAgICAgIHNlcnZlcnMudW5zaGlmdChcXFwiaXBmc+S4i+i9vVxcXCIpXFxuICAgICAgICAgICAgICAgICAgICAgICAgc2VydmVycy51bnNoaWZ0KFxcXCLnmb7luqbkupHnm5jovazlrZhcXFwiKVxcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyZXMuaW5fbGliZ2VuKSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlcnZlcnMudW5zaGlmdChcXFwiTGliZ2VuKOaOqOiNkClcXFwiKVxcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJChzZXJ2ZXJzLCAxLCBcXFwi6YCJ5oup57q/6LevXFxcIikuc2VsZWN0KChyZXMpID0+IHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGlucHV0ID09IFxcXCJMaWJnZW4o5o6o6I2QKVxcXCIpIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBcXFwiZG93bmxvYWQ6Ly9cXFwiICsgcGRmaChyZXF1ZXN0KFxcXCJodHRwOi8vbGlicmFyeS5sb2wvbWFpbi9cXFwiICsgcmVzLm1kNSksIFxcXCIjZG93bmxvYWQmJmEmJmhyZWZcXFwiKVxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGlucHV0ID09IFxcXCLnmb7luqbkupHnm5jovazlrZhcXFwiKSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJC5yZXF1aXJlKFxcXCJhcGlcXFwiKS5iYWlkdShyZXMpXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoaW5wdXQgPT0gXFxcImlwZnPkuIvovb1cXFwiKSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gYHg1Oi8vaHR0cHM6Ly9pcGZzLWNoZWNrZXIuMWtidG9vbC5jb20vJHtyZXMuaXBmc19jaWR9YFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGlucHV0LmluY2x1ZGVzKFxcXCJpcGZzZ3cwMC5zdGFyaXZlcnBhbi5jb21cXFwiKSkge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFxcXCJkb3dubG9hZDovL1xcXCIgKyBpbnB1dCArIHJlcy5pcGZzX2NpZCArIFxcXCI7e1JlZmVyZXJAaHR0cHM6Ly93eC5zdGFyaXZlcnBhbi5jb20vfVxcXCJcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBcXFwiZG93bmxvYWQ6Ly9cXFwiICsgaW5wdXQgKyByZXMuaXBmc19jaWRcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sIHJlcylcXG4gICAgICAgICAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICBsb2coZS5tZXNzYWdlKVxcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBcXFwidG9hc3Q6Ly/op6PmnpDlpLHotKVcXFwiXFxuICAgICAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgIH0sIGl0ZW0uaWQpXFxuICAgICAgICAgICAgfSlcXG4gICAgICAgIH0pXFxuICAgIH0sXFxuICAgIFpoZWxwZXJfdjU6IGZ1bmN0aW9uKGt3LCBwYWdlKSB7XFxuICAgICAgICB2YXIgcmVzID0gSlNPTi5wYXJzZShwb3N0KFxcXCJodHRwczovL2FwaS52NS56aGVscGVyLm5ldC9hcGkvc2VhcmNoL1xcXCIsIHtcXG4gICAgICAgICAgICBib2R5OiBKU09OLnN0cmluZ2lmeSh7XFxuICAgICAgICAgICAgICAgIFxcXCJrZXl3b3JkXFxcIjoga3csXFxuICAgICAgICAgICAgICAgIFxcXCJwYWdlXFxcIjogcGFnZSxcXG4gICAgICAgICAgICAgICAgXFxcInNlbnNpdGl2ZVxcXCI6IGZhbHNlXFxuICAgICAgICAgICAgfSlcXG4gICAgICAgIH0pKS5kYXRhXFxuICAgICAgICByZXMuZm9yRWFjaChpdGVtID0+IHtcXG4gICAgICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgICAgICB0aXRsZTogaXRlbS50aXRsZSxcXG4gICAgICAgICAgICAgICAgZGVzYzogYOKAnOKAnOKAneKAnTxzbWFsbD7kvZzogIU6JHtpdGVtLmF1dGhvcn0g5Ye654mI56S+OiR7aXRlbS5wdWJsaXNoZXI/aXRlbS5wdWJsaXNoZXI6XFxcIuaaguaXoFxcXCJ9IElTQk46JHtpdGVtLmlzYm4/aXRlbS5pc2JuOlxcXCLmmoLml6BcXFwifSDlh7rniYjml7bpl7Q6JHtpdGVtLnllYXI/aXRlbS55ZWFyOlxcXCLmmoLml6BcXFwifSDmlofku7bmoLzlvI86JHtpdGVtLmV4dGVuc2lvbn0g5paH5Lu25aSn5bCPOiR7JC5yZXF1aXJlKFxcXCJhcGlcXFwiKS5nZXRGaWxlU2l6ZShpdGVtLmZpbGVzaXplKX08L3NtYWxsPmAsXFxuICAgICAgICAgICAgICAgIHVybDogJCgpLmxhenlSdWxlKChpZCkgPT4ge1xcbiAgICAgICAgICAgICAgICAgICAgdHJ5IHtcXG4gICAgICAgICAgICAgICAgICAgICAgICB2YXIgcmVzID0gSlNPTi5wYXJzZShwb3N0KFxcXCJodHRwczovL2FwaS52NS56aGVscGVyLm5ldC9hcGkvZGV0YWlsL1xcXCIsIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9keTogSlNPTi5zdHJpbmdpZnkoe1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXFxcImlkXFxcIjogaWQsXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcXFwic291cmNlXFxcIjogXFxcInpsaWJyYXJ5XFxcIlxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KVxcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pKVxcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBzZXJ2ZXJzID0gJC5yZXF1aXJlKFxcXCJoaWtlcjovL3BhZ2UvYXBpXFxcIikuc2VydmVyc1xcbiAgICAgICAgICAgICAgICAgICAgICAgIHNlcnZlcnMudW5zaGlmdChcXFwiaXBmc+S4i+i9vVxcXCIpXFxuICAgICAgICAgICAgICAgICAgICAgICAgc2VydmVycy51bnNoaWZ0KFxcXCLnmb7luqbkupHnm5jovazlrZhcXFwiKVxcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyZXMuaW5fbGliZ2VuKSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlcnZlcnMudW5zaGlmdChcXFwiTGliZ2VuKOaOqOiNkClcXFwiKVxcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJChzZXJ2ZXJzLCAxLCBcXFwi6YCJ5oup57q/6LevXFxcIikuc2VsZWN0KChyZXMpID0+IHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGlucHV0ID09IFxcXCJMaWJnZW4o5o6o6I2QKVxcXCIpIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBcXFwiZG93bmxvYWQ6Ly9cXFwiICsgcGRmaChyZXF1ZXN0KFxcXCJodHRwOi8vbGlicmFyeS5sb2wvbWFpbi9cXFwiICsgcmVzLm1kNSksIFxcXCIjZG93bmxvYWQmJmEmJmhyZWZcXFwiKVxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGlucHV0ID09IFxcXCLnmb7luqbkupHnm5jovazlrZhcXFwiKSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJC5yZXF1aXJlKFxcXCJhcGlcXFwiKS5iYWlkdShyZXMpXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoaW5wdXQgPT0gXFxcImlwZnPkuIvovb1cXFwiKSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gYHg1Oi8vaHR0cHM6Ly9pcGZzLWNoZWNrZXIuMWtidG9vbC5jb20vJHtyZXMuaXBmc19jaWR9YFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGlucHV0LmluY2x1ZGVzKFxcXCJpcGZzZ3cwMC5zdGFyaXZlcnBhbi5jb21cXFwiKSkge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFxcXCJkb3dubG9hZDovL1xcXCIgKyBpbnB1dCArIHJlcy5pcGZzX2NpZCArIFxcXCI7e1JlZmVyZXJAaHR0cHM6Ly93eC5zdGFyaXZlcnBhbi5jb20vfVxcXCJcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBcXFwiZG93bmxvYWQ6Ly9cXFwiICsgaW5wdXQgKyByZXMuaXBmc19jaWRcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sIHJlcylcXG4gICAgICAgICAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICBsb2coZS5tZXNzYWdlKVxcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBcXFwidG9hc3Q6Ly/op6PmnpDlpLHotKVcXFwiXFxuICAgICAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgIH0sIGl0ZW0uaWQpXFxuICAgICAgICAgICAgfSlcXG4gICAgICAgIH0pXFxuICAgIH0sXFxuICAgIFpoZWxwZXJfdjQ6IGZ1bmN0aW9uKGt3LCBwYWdlKSB7XFxuICAgICAgICB2YXIgcmVzID0gSlNPTi5wYXJzZShwb3N0KFxcXCJodHRwczovL2FwaS5taWJvb2tzLnRrL2FwaS9zZWFyY2gvXFxcIiwge1xcbiAgICAgICAgICAgIGJvZHk6IEpTT04uc3RyaW5naWZ5KHtcXG4gICAgICAgICAgICAgICAgXFxcImtleXdvcmRcXFwiOiBrdyxcXG4gICAgICAgICAgICAgICAgXFxcInBhZ2VcXFwiOiBwYWdlLFxcbiAgICAgICAgICAgICAgICBcXFwic2Vuc2l0aXZlXFxcIjogZmFsc2VcXG4gICAgICAgICAgICB9KVxcbiAgICAgICAgfSkpLmRhdGFcXG4gICAgICAgIHJlcy5mb3JFYWNoKGl0ZW0gPT4ge1xcbiAgICAgICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgICAgIHRpdGxlOiBpdGVtLnRpdGxlLFxcbiAgICAgICAgICAgICAgICBkZXNjOiBg4oCc4oCc4oCd4oCdPHNtYWxsPuS9nOiAhToke2l0ZW0uYXV0aG9yfSDlh7rniYjnpL46JHtpdGVtLnB1Ymxpc2hlcj9pdGVtLnB1Ymxpc2hlcjpcXFwi5pqC5pegXFxcIn0gSVNCTjoke2l0ZW0uaXNibj9pdGVtLmlzYm46XFxcIuaaguaXoFxcXCJ9IOWHuueJiOaXtumXtDoke2l0ZW0ueWVhcj9pdGVtLnllYXI6XFxcIuaaguaXoFxcXCJ9IOaWh+S7tuagvOW8jzoke2l0ZW0uZXh0ZW5zaW9ufSDmlofku7blpKflsI86JHskLnJlcXVpcmUoXFxcImFwaVxcXCIpLmdldEZpbGVTaXplKGl0ZW0uZmlsZXNpemUpfTwvc21hbGw+YCxcXG4gICAgICAgICAgICAgICAgdXJsOiAkKCkubGF6eVJ1bGUoKGlkKSA9PiB7XFxuICAgICAgICAgICAgICAgICAgICB0cnkge1xcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBzZXJ2ZXJzID0gWydodHRwczovL3Rlc3QxLnpsaWIuZG93bmxvYWQnLCAnaHR0cHM6Ly90ZXN0Mi56bGliLmRvd25sb2FkJywgJ2h0dHBzOi8vemxpYi5qZzEyMTIzLm9uZSddXFxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICQoc2VydmVycywgMSwgXFxcIuivt+mAieaLqeS4i+i9vee6v+i3r1xcXCIpLnNlbGVjdCgoaWQpID0+IHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFxcXCJkb3dubG9hZDovL1xcXCIgKyBpbnB1dCArIFxcXCIvZG93bmxvYWQvXFxcIiArIGlkICsgXFxcIi9cXFwiXFxuICAgICAgICAgICAgICAgICAgICAgICAgfSwgaWQpXFxuICAgICAgICAgICAgICAgICAgICB9IGNhdGNoIChlKSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgbG9nKGUubWVzc2FnZSlcXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gXFxcInRvYXN0Oi8v6Kej5p6Q5aSx6LSlXFxcIlxcbiAgICAgICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICB9LCBpdGVtLmlkKVxcbiAgICAgICAgICAgIH0pXFxuICAgICAgICB9KVxcbiAgICB9LFxcbiAgICBjaGVja0xpYmdlbjogZnVuY3Rpb24oKSB7XFxuICAgICAgICB2YXIgZG9tYWlucyA9IFtcXFwiaHR0cDovL2xpYmdlbi5yc1xcXCIsIFxcXCJodHRwOi8vbGliZ2VuLmlzXFxcIiwgXFxcImh0dHA6Ly9saWJnZW4uc3RcXFwiXVxcbiAgICAgICAgdHJ5IHtcXG4gICAgICAgICAgICBmb3IgKGl0ZW0gb2YgZG9tYWlucykge1xcbiAgICAgICAgICAgICAgICB2YXIgY29kZSA9IEpTT04ucGFyc2UocmVxdWVzdChpdGVtLCB7XFxuICAgICAgICAgICAgICAgICAgICB3aXRoU3RhdHVzQ29kZTogdHJ1ZVxcbiAgICAgICAgICAgICAgICB9KSkuc3RhdHVzQ29kZVxcbiAgICAgICAgICAgICAgICBpZiAoY29kZSA9PSAyMDApIHtcXG4gICAgICAgICAgICAgICAgICAgIHNldEl0ZW0oXFxcImxpYmdlblxcXCIsIGl0ZW0pXFxuICAgICAgICAgICAgICAgICAgICB0b2FzdChcXFwi5qOA5rWL5Yiw5Y+v55So6ZWc5YOPXFxcIilcXG4gICAgICAgICAgICAgICAgICAgIHJlZnJlc2hQYWdlKClcXG4gICAgICAgICAgICAgICAgICAgIGJyZWFrXFxuICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICB9XFxuICAgICAgICAgICAgdG9hc3QoXFxcIuaJgOaciemVnOWDj+mDveaXoOazleS9v+eUqO+8jOivt+aJk+W8gFRa5L2/55SoXFxcIilcXG4gICAgICAgIH0gY2F0Y2ggKGUpIHtcXG4gICAgICAgICAgICBsb2coZS5tZXNzYWdlKVxcbiAgICAgICAgfVxcbiAgICB9LFxcbiAgICBMaWJnZW46IGZ1bmN0aW9uKGt3LCBwYWdlKSB7XFxuICAgICAgICBpZiAoZ2V0SXRlbShcXFwibGliZ2VuXFxcIiwgXFxcIlxcXCIpID09IFxcXCJcXFwiKSB7XFxuICAgICAgICAgICAgdG9hc3QoXFxcIuaXoOWPr+eUqOmVnOWDj++8jOato+WcqOajgOa1i+S4rS4uLlxcXCIpXFxuICAgICAgICAgICAgJC5yZXF1aXJlKFxcXCJhcGlcXFwiKS5jaGVja0xpYmdlbigpXFxuICAgICAgICB9IGVsc2Uge1xcbiAgICAgICAgICAgIHZhciB1cmwgPSBnZXRJdGVtKFxcXCJsaWJnZW5cXFwiKSArIFxcXCIvc2VhcmNoLnBocD9yZXE9XFxcIiArIGt3ICsgXFxcIiZwYWdlPVxcXCIgKyBwYWdlXFxuICAgICAgICAgICAgdmFyIHIgPSBKU09OLnBhcnNlKHJlcXVlc3QodXJsLCB7XFxuICAgICAgICAgICAgICAgIHdpdGhIZWFkZXJzOiB0cnVlXFxuICAgICAgICAgICAgfSkpXFxuICAgICAgICAgICAgaWYgKHIuc3RhdHVzQ29kZSA9PSAyMDApIHtcXG4gICAgICAgICAgICAgICAgdmFyIHJlcyA9IHIuYm9keVxcbiAgICAgICAgICAgICAgICB2YXIgbGlzdCA9IHBkZmEocmVzLCBcXFwiYm9keSYmdHJcXFwiKS5maWx0ZXIoaXRlbSA9PiB7XFxuICAgICAgICAgICAgICAgICAgICBpZiAoaXRlbS5pbmNsdWRlcyhcXFwibm93cmFwXFxcIikpIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gaXRlbVxcbiAgICAgICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICB9KVxcbiAgICAgICAgICAgICAgICBsaXN0LmZvckVhY2goaXRlbSA9PiB7XFxuICAgICAgICAgICAgICAgICAgICB2YXIgbGkgPSBpdGVtLm1hdGNoKG5ldyBSZWdFeHAoXFxcIjx0ZCguKj8pPC90ZD5cXFwiLCBcXFwiZ1xcXCIpKVxcbiAgICAgICAgICAgICAgICAgICAgdmFyIGRlc2MgPSBcXFwi4oCc4oCc4oCd4oCdPHNtYWxsPlxcXCIgKyBwZGZoKGxpWzFdLCBcXFwiYSYmVGV4dFxcXCIpXFxuICAgICAgICAgICAgICAgICAgICBmb3IgKGxldCBpID0gMzsgaSA8IGxpLmxlbmd0aCAtIDM7IGkrKykge1xcbiAgICAgICAgICAgICAgICAgICAgICAgIGRlc2MgKz0gXFxcIu+8m1xcXCIgKyBwZGZoKGxpW2ldLCBcXFwiVGV4dFxcXCIpXFxuICAgICAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgICAgICBkZXNjICs9IFxcXCI8L3NtYWxsPlxcXCJcXG4gICAgICAgICAgICAgICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6IHBkZmgobGlbMl0sIFxcXCJUZXh0XFxcIiksXFxuICAgICAgICAgICAgICAgICAgICAgICAgZGVzYzogZGVzYyxcXG4gICAgICAgICAgICAgICAgICAgICAgICB1cmw6ICQoKS5sYXp5UnVsZSgobGkpID0+IHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFxcXCJkb3dubG9hZDovL1xcXCIgKyBwZGZoKHJlcXVlc3QocGRmaChsaVs5XSwgXFxcImEmJmhyZWZcXFwiKSksIFxcXCIjZG93bmxvYWQmJmEmJmhyZWZcXFwiKVxcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sIGxpKVxcbiAgICAgICAgICAgICAgICAgICAgfSlcXG4gICAgICAgICAgICAgICAgfSlcXG4gICAgICAgICAgICB9IGVsc2Uge1xcbiAgICAgICAgICAgICAgICB0b2FzdChcXFwi6ZWc5YOP5aSx5pWI77yM6YeN5paw5qOA5rWL5LitLi4uXFxcIilcXG4gICAgICAgICAgICAgICAgJC5yZXF1aXJlKFxcXCJhcGlcXFwiKS5jaGVja0xpYmdlbigpXFxuICAgICAgICAgICAgfVxcbiAgICAgICAgfVxcbiAgICB9LFxcbiAgICDnvZHnm5g6IGZ1bmN0aW9uKGt3LCBwYWdlKSB7XFxuICAgICAgICB2YXIgcmVzID0gSlNPTi5wYXJzZShwb3N0KFxcXCJodHRwczovL2FwaS5ib29rcGFuLm5ldC9hcGkvc2VhcmNoL1xcXCIsIHtcXG4gICAgICAgICAgICBib2R5OiBKU09OLnN0cmluZ2lmeSh7XFxuICAgICAgICAgICAgICAgIFxcXCJrZXl3b3JkXFxcIjoga3csXFxuICAgICAgICAgICAgICAgIFxcXCJwYWdlXFxcIjogcGFnZSxcXG4gICAgICAgICAgICAgICAgXFxcInNlbnNpdGl2ZVxcXCI6IGZhbHNlXFxuICAgICAgICAgICAgfSlcXG4gICAgICAgIH0pKS5kYXRhXFxuICAgICAgICByZXMuZm9yRWFjaChpdGVtID0+IHtcXG4gICAgICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgICAgICB0aXRsZTogaXRlbS5pbmZvLFxcbiAgICAgICAgICAgICAgICBkZXNjOiBcXFwi4oCc4oCc4oCd4oCdPHNtYWxsPlxcXCIgKyBpdGVtLnNvdXJjZSArIFxcXCI8L3NtYWxsPlxcXCIsXFxuICAgICAgICAgICAgICAgIHVybDogJCgpLmxhenlSdWxlKChpZCwgc291cmNlKSA9PiB7XFxuICAgICAgICAgICAgICAgICAgICB0cnkge1xcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciByZXMgPSBKU09OLnBhcnNlKHBvc3QoXFxcImh0dHBzOi8vYXBpLmJvb2twYW4ubmV0L2FwaS9kZXRhaWwvXFxcIiwge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBib2R5OiBKU09OLnN0cmluZ2lmeSh7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcXFwiaWRcXFwiOiBpZCxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxcXCJzb3VyY2VcXFwiOiBzb3VyY2VcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSlcXG4gICAgICAgICAgICAgICAgICAgICAgICB9KSlcXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAocmVzLmRvd25sb2FkX2xpbmspIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGRpY3QgPSB7fVxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXMuZG93bmxvYWRfbGluay51bnNoaWZ0KHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IFxcXCLljp/nvZHpobVcXFwiLFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXJsOiByZXMudXJsXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAkKHJlcy5kb3dubG9hZF9saW5rLm1hcChmdW5jdGlvbihpdGVtKSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gaXRlbS5uYW1lXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pLCAxLCBcXFwi6K+36YCJ5oup5LiL6L2957q/6LevXFxcIikuc2VsZWN0KChsaW5rcykgPT4ge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGxpbmtzW2xpbmtzLm1hcChmdW5jdGlvbihpdGVtKSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGl0ZW0ubmFtZVxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkuaW5kZXhPZihpbnB1dCldLnVybFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCByZXMuZG93bmxvYWRfbGluaylcXG4gICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmVzLnVybFxcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICBsb2coZS5tZXNzYWdlKVxcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBcXFwidG9hc3Q6Ly/op6PmnpDlpLHotKVcXFwiXFxuICAgICAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgIH0sIGl0ZW0uaWQsIGl0ZW0uc291cmNlKVxcbiAgICAgICAgICAgIH0pXFxuICAgICAgICB9KVxcbiAgICB9LFxcbiAgICDml6DlkI3lm77kuaY6IGZ1bmN0aW9uKGt3LCBwYWdlKSB7XFxuICAgICAgICB2YXIgdXJsID0gXFxcImh0dHBzOi8vd3d3LmJvb2sxMjMuaW5mby9saXN0P2tleT1cXFwiICsga3cgKyBcXFwiJnBhZ2U9XFxcIiArIHBhZ2VcXG4gICAgICAgIHZhciByZXMgPSByZXF1ZXN0KHVybClcXG4gICAgICAgIHZhciBsaXN0ID0gcGRmYShyZXMsIFxcXCIubGlzdF9wYWdlQ29udGVudF9fel95enYmJmxpXFxcIilcXG4gICAgICAgIGxpc3QuZm9yRWFjaChpdGVtID0+IHtcXG4gICAgICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgICAgICB0aXRsZTogcGRmaChpdGVtLCBcXFwiLmxpc3RfdGl0bGVfXzA2bnQyJiZUZXh0XFxcIiksXFxuICAgICAgICAgICAgICAgIGRlc2M6IFxcXCLigJzigJzigJ3igJ08c21hbGw+XFxcIiArIHBkZmgoaXRlbSwgXFxcIi5saXN0X2F1dGhvcl9fbFB3cGwmJlRleHRcXFwiKSArIFxcXCJcXFxcblxcXCIgKyBwZGZoKGl0ZW0sIFxcXCIubGlzdF9yYXRlX19KN094MSYmVGV4dFxcXCIpICsgXFxcIlxcXFxuXFxcIiArIHBkZmgoaXRlbSwgXFxcIi5saXN0X2Rlc2NfX2tKajFZJiZUZXh0XFxcIikgKyBcXFwiPC9zbWFsbD5cXFwiLFxcbiAgICAgICAgICAgICAgICB1cmw6ICQoKS5sYXp5UnVsZSgodXJsKSA9PiB7XFxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gXFxcImRvd25sb2FkOi8vXFxcIiArIHBkZmgocmVxdWVzdCh1cmwpLCBcXFwiLmRldGFpbF9kb3dubG9hZF9idG5fX3Y3YjdrJiZocmVmXFxcIilcXG4gICAgICAgICAgICAgICAgfSwgXFxcImh0dHBzOi8vd3d3LmJvb2sxMjMuaW5mb1xcXCIgKyBwZGZoKGl0ZW0sIFxcXCJhJiZocmVmXFxcIikpXFxuICAgICAgICAgICAgfSlcXG4gICAgICAgIH0pXFxuICAgIH0sXFxuICAgIGJhaWR1OiBmdW5jdGlvbihyZXMpIHtcXG4gICAgICAgIHRyeSB7XFxuICAgICAgICAgICAgaWYgKCFmaWxlRXhpc3QoXFxcImhpa2VyOi8vZmlsZXMvcnVsZXMvSm9lL2JhaWR1LnR4dFxcXCIpKSB7XFxuICAgICAgICAgICAgICAgIHRvYXN0KFxcXCLov5jmnKrnmbvpmYZcXFwiKVxcbiAgICAgICAgICAgICAgICByZXR1cm4gJCgpLnJ1bGUoKCkgPT4ge1xcbiAgICAgICAgICAgICAgICAgICAgc2V0UmVzdWx0KFt7XFxuICAgICAgICAgICAgICAgICAgICAgICAgdXJsOiBcXFwiaHR0cHM6Ly9wYW4uYmFpZHUuY29tL1xcXCIsXFxuICAgICAgICAgICAgICAgICAgICAgICAgY29sX3R5cGU6IFxcXCJ4NV93ZWJ2aWV3X3NpbmdsZVxcXCIsXFxuICAgICAgICAgICAgICAgICAgICAgICAgZGVzYzogXFxcIjEwMCUmJmZsb2F0XFxcIixcXG4gICAgICAgICAgICAgICAgICAgICAgICBleHRyYToge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBqczogJC50b1N0cmluZygoKSA9PiB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgdXJsID0gbG9jYXRpb24uaHJlZlxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHVybC5pbmNsdWRlcyhcXFwiaHR0cHM6Ly9wYW4uYmFpZHUuY29tL3dhcFxcXCIpKSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmJhLndyaXRlRmlsZShcXFwiaGlrZXI6Ly9maWxlcy9ydWxlcy9Kb2UvYmFpZHUudHh0XFxcIiwgZmJhLmdldENvb2tpZShcXFwiXFxcIikpXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWxlcnQoXFxcIuW3suiOt+WPluWIsGNvb2tpZe+8jOi/lOWbnuWNs+WPr1xcXCIpXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmJhLmJhY2soKVxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdWE6IE1PQklMRV9VQSxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FuQmFjazogdHJ1ZVxcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgICAgIH1dKVxcbiAgICAgICAgICAgICAgICB9KVxcbiAgICAgICAgICAgIH0gZWxzZSB7XFxuICAgICAgICAgICAgICAgIHZhciBiZHN0b2tlbiA9IEpTT04ucGFyc2UocmVxdWVzdChcXFwiaHR0cHM6Ly9wYW4uYmFpZHUuY29tL2FwaS9nZXR0ZW1wbGF0ZXZhcmlhYmxlP2ZpZWxkcz1bJTIyYmRzdG9rZW4lMjJdXFxcIiwge1xcbiAgICAgICAgICAgICAgICAgICAgaGVhZGVyczoge1xcbiAgICAgICAgICAgICAgICAgICAgICAgIENvb2tpZTogcmVxdWVzdChcXFwiaGlrZXI6Ly9maWxlcy9ydWxlcy9Kb2UvYmFpZHUudHh0XFxcIilcXG4gICAgICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgfSkpLnJlc3VsdC5iZHN0b2tlblxcbiAgICAgICAgICAgICAgICByZXR1cm4gJChcXFwiL+eUteWtkOS5pi9cXFwiICsgcmVzLnRpdGxlICsgXFxcIi5cXFwiICsgcmVzLmV4dGVuc2lvbiwgXFxcIuivt+i+k+WFpeS/neWtmOi3r+W+hFxcXCIpLmlucHV0KChiZHN0b2tlbiwgcmVzKSA9PiB7XFxuICAgICAgICAgICAgICAgICAgICB2YXIgcmVzID0gSlNPTi5wYXJzZShwb3N0KFxcXCJodHRwczovL3Bhbi5iYWlkdS5jb20vcmVzdC8yLjAveHBhbi9maWxlP21ldGhvZD1jcmVhdGUmYmRzdG9rZW49XFxcIiArIGJkc3Rva2VuLCB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgaGVhZGVyczoge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb29raWU6IHJlcXVlc3QoXFxcImhpa2VyOi8vZmlsZXMvcnVsZXMvSm9lL2JhaWR1LnR4dFxcXCIpXFxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcXG4gICAgICAgICAgICAgICAgICAgICAgICBib2R5OiB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemU6IHJlcy5maWxlc2l6ZSArIFxcXCJcXFwiLFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXRoOiBpbnB1dCxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYmxvY2tfbGlzdDogW3Jlcy5tZDVdLFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBydHlwZTogMFxcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgICAgIH0pKVxcbiAgICAgICAgICAgICAgICAgICAgaWYgKHJlcy5lcnJubyA9PSAwKSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFxcXCJ0b2FzdDovL+i9rOWtmOaIkOWKn1xcXCJcXG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAocmVzLmVycm5vID09IC04KSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFxcXCJ0b2FzdDovL+i9rOWtmOWksei0pe+8jOW3sue7j+S/neWtmOi/h+i/meS4quaWh+S7tuS6hlxcXCJcXG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAocmVzLmVycm5vID09IDIpIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gXFxcInRvYXN0Oi8v6L2s5a2Y5aSx6LSl77yM6ZSZ6K+v55qE6Lev5b6EXFxcIlxcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICBsb2cocmVzLmVycm5vKVxcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBcXFwidG9hc3Q6Ly/ovazlrZjlpLHotKVcXFwiXFxuICAgICAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgIH0sIGJkc3Rva2VuLCByZXMpXFxuICAgICAgICAgICAgfVxcbiAgICAgICAgfSBjYXRjaCAoZSkge1xcbiAgICAgICAgICAgIGxvZyhlLm1lc3NhZ2UpXFxuICAgICAgICAgICAgcmV0dXJuIFxcXCJ0b2FzdDovL+i9rOWtmOWksei0pVxcXCJcXG4gICAgICAgIH1cXG4gICAgfVxcbn1cIn1dLFwic2F2ZWRcIjpmYWxzZSxcInRpdGxlXCI6XCJabGliIFByb1wiLFwidmVyc2lvblwiOjAsXCJ1cmxcIjpcImhpa2VyOi8vZW1wdHlcIixcImNvbF90eXBlXCI6XCJ4NV93ZWJ2aWV3X3NpbmdsZVwiLFwiZmluZF9ydWxlXCI6XCJqczpzZXRSZXN1bHQoW3tcXG4gICAgdXJsOlxcXCJodHRwczovL2lwZnMtY2hlY2tlci4xa2J0b29sLmNvbS9iYWZ5a2J6YWNlZHJvZXhveTJqbWZsa2U0bXliYmNia2czdHVhaWJmc2Zsc2hqYmh1cGxwamp3aG0ybm13dVxcXCIsXFxuZGVzYzpcXFwiMTAwJSYmZmxvYXRcXFwiLFxcbmV4dHJhOntjYW5CYWNrOiB0cnVlfVxcbn1dKTtcIixcImdyb3VwXCI6XCLpmIXor7tcIixcInBhZ2VzXCI6XCJbe1xcXCJjb2xfdHlwZVxcXCI6XFxcInRleHRfMVxcXCIsXFxcIm5hbWVcXFwiOlxcXCLmkJzntKJcXFwiLFxcXCJwYXRoXFxcIjpcXFwi5pCc57SiXFxcIixcXFwicnVsZVxcXCI6XFxcImpzOlxcXFxudmFyIGQgPSBbXTtcXFxcbnRyeSB7XFxcXG4gICAgaWYgKE1ZX1BBR0UgPT0gMSkge1xcXFxuICAgICAgICB2YXIgZW5naW5lcyA9IFtcXFxcXFxcIllsaWJyYXJ5XFxcXFxcXCIsIFxcXFxcXFwiWmhlbHBlcl92NVxcXFxcXFwiLCBcXFxcXFxcIlpoZWxwZXJfdjRcXFxcXFxcIiwgXFxcXFxcXCJMaWJnZW5cXFxcXFxcIiwgXFxcXFxcXCLml6DlkI3lm77kuaZcXFxcXFxcIiwgXFxcXFxcXCLnvZHnm5hcXFxcXFxcIl1cXFxcbiAgICAgICAgZW5naW5lcy5mb3JFYWNoKGl0ZW0gPT4ge1xcXFxuICAgICAgICAgICAgZC5wdXNoKHtcXFxcbiAgICAgICAgICAgICAgICB0aXRsZTogZ2V0SXRlbShcXFxcXFxcImVuZ2luZVxcXFxcXFwiLCBcXFxcXFxcIllsaWJyYXJ5XFxcXFxcXCIpID09IGl0ZW0gPyBg4oCY4oCY4oCZ4oCZPHN0cm9uZz48Zm9udCBjb2xvcj1cXFxcXFxcIiNmMTNiNjZhXFxcXFxcXCI+4peJIDwvZnJvbnQ+PC9zdHJvbmc+JHtpdGVtfWAgOiBpdGVtLFxcXFxuICAgICAgICAgICAgICAgIHVybDogJCgpLmxhenlSdWxlKChuKSA9PiB7XFxcXG4gICAgICAgICAgICAgICAgICAgIHNldEl0ZW0oXFxcXFxcXCJlbmdpbmVcXFxcXFxcIiwgbilcXFxcbiAgICAgICAgICAgICAgICAgICAgcmVmcmVzaFBhZ2UoKVxcXFxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gXFxcXFxcXCJ0b2FzdDovL+W3suWIh+aNouW8leaTju+8mlxcXFxcXFwiICsgblxcXFxuICAgICAgICAgICAgICAgIH0sIGl0ZW0pLFxcXFxuICAgICAgICAgICAgICAgIGNvbF90eXBlOiBcXFxcXFxcInNjcm9sbF9idXR0b25cXFxcXFxcIlxcXFxuICAgICAgICAgICAgfSlcXFxcbiAgICAgICAgfSlcXFxcbiAgICB9XFxcXG4gICAgdmFyIGhpc3RvcnkgPSBzdG9yYWdlMC5nZXRJdGVtKFxcXFxcXFwiaGlzdG9yeVxcXFxcXFwiLCBbXSlcXFxcbiAgICBpZiAoIWhpc3RvcnkuaW5jbHVkZXMoZ2V0UGFyYW0oXFxcXFxcXCJrd1xcXFxcXFwiKSkpIHtcXFxcbiAgICAgICAgaGlzdG9yeS51bnNoaWZ0KGdldFBhcmFtKFxcXFxcXFwia3dcXFxcXFxcIikpXFxcXG4gICAgICAgIHN0b3JhZ2UwLnNldEl0ZW0oXFxcXFxcXCJoaXN0b3J5XFxcXFxcXCIsIGhpc3RvcnkpXFxcXG4gICAgfVxcXFxuICAgICQucmVxdWlyZShcXFxcXFxcImhpa2VyOi8vcGFnZS9hcGlcXFxcXFxcIilbZ2V0SXRlbShcXFxcXFxcImVuZ2luZVxcXFxcXFwiLCBcXFxcXFxcIllsaWJyYXJ5XFxcXFxcXCIpXShnZXRQYXJhbShcXFxcXFxcImt3XFxcXFxcXCIpLCBNWV9QQUdFKVxcXFxufSBjYXRjaCAoZSkge1xcXFxuICAgIHRvYXN0KFxcXFxcXFwi5pCc57Si5aSx6LSl5LqG77yM6K+35YiH5o2i5byV5pOO6YeN6K+VXFxcXFxcXCIpXFxcXG4gICAgbG9nKGUubWVzc2FnZSlcXFxcbn1cXFxcbnNldFJlc3VsdChkKTtcXFwifSx7XFxcImNvbF90eXBlXFxcIjpcXFwidGV4dF8xXFxcIixcXFwibmFtZVxcXCI6XFxcImFwaVxcXCIsXFxcInBhdGhcXFwiOlxcXCJhcGlcXFwiLFxcXCJydWxlXFxcIjpcXFwiJC5leHBvcnRzID0ge1xcXFxuICAgIHNlcnZlcnM6IFtcXFxcXFxcImh0dHBzOi8vaXBmc2d3MDAuc3Rhcml2ZXJwYW4uY29tOjkwOTUvaXBmcy9cXFxcXFxcIiwgXFxcXFxcXCJodHRwczovL2R3ZWIubGluay9pcGZzL1xcXFxcXFwiLCBcXFxcXFxcImh0dHBzOi8vaXBmcy5qcHUuanAvaXBmcy9cXFxcXFxcIiwgXFxcXFxcXCJodHRwczovL2NmLWlwZnMuY29tL2lwZnMvXFxcXFxcXCIsIFxcXFxcXFwiaHR0cHM6Ly9nYXRld2F5LnBpbmF0YS5jbG91ZC9pcGZzL1xcXFxcXFwiLCBcXFxcXFxcImh0dHBzOi8vaXBmcy1nYXRld2F5LmNsb3VkL2lwZnMvXFxcXFxcXCJdLFxcXFxuICAgIGdldEZpbGVTaXplOiBmdW5jdGlvbihzaXplKSB7XFxcXG4gICAgICAgIGlmIChzaXplIDw9IDApIHtcXFxcbiAgICAgICAgICAgIHJldHVybiBcXFxcXFxcIlxcXFxcXFwiO1xcXFxuICAgICAgICB9XFxcXG4gICAgICAgIGxldCB1bml0Rm9ybSA9IFtcXFxcXFxcIkJ5dGVcXFxcXFxcIiwgXFxcXFxcXCJLQlxcXFxcXFwiLCBcXFxcXFxcIk1CXFxcXFxcXCIsIFxcXFxcXFwiR0JcXFxcXFxcIiwgXFxcXFxcXCJUQlxcXFxcXFwiXTtcXFxcbiAgICAgICAgZm9yIChsZXQgaSA9IDAsIGxlbiA9IHVuaXRGb3JtLmxlbmd0aDsgaSA8IGxlbjsgaSsrKSB7XFxcXG4gICAgICAgICAgICBpZiAoc2l6ZSA+IDEwMjQpIHtcXFxcbiAgICAgICAgICAgICAgICBzaXplIC89IDEwMjQ7XFxcXG4gICAgICAgICAgICAgICAgY29udGludWU7XFxcXG4gICAgICAgICAgICB9IGVsc2Uge1xcXFxuICAgICAgICAgICAgICAgIHJldHVybiBzaXplLnRvRml4ZWQoMikucmVwbGFjZSgvKFxcXFxcXFxcLjAwKSQvLCBcXFxcXFxcIlxcXFxcXFwiKSArIHVuaXRGb3JtW2ldO1xcXFxuICAgICAgICAgICAgfVxcXFxuICAgICAgICB9XFxcXG4gICAgICAgIHJldHVybiBcXFxcXFxcIkVSUk9SOuaVsOWAvOi/h+Wkp1xcXFxcXFwiO1xcXFxuICAgIH0sXFxcXG4gICAgWWxpYnJhcnk6IGZ1bmN0aW9uKGt3LCBwYWdlKSB7XFxcXG4gICAgICAgIHZhciByZXMgPSBKU09OLnBhcnNlKHBvc3QoXFxcXFxcXCJodHRwczovL2FwaS55bGlicmFyeS5vcmcvYXBpL3NlYXJjaC9cXFxcXFxcIiwge1xcXFxuICAgICAgICAgICAgYm9keTogSlNPTi5zdHJpbmdpZnkoe1xcXFxuICAgICAgICAgICAgICAgIFxcXFxcXFwia2V5d29yZFxcXFxcXFwiOiBrdyxcXFxcbiAgICAgICAgICAgICAgICBcXFxcXFxcInBhZ2VcXFxcXFxcIjogcGFnZSxcXFxcbiAgICAgICAgICAgICAgICBcXFxcXFxcInNlbnNpdGl2ZVxcXFxcXFwiOiBmYWxzZVxcXFxuICAgICAgICAgICAgfSlcXFxcbiAgICAgICAgfSkpLmRhdGFcXFxcbiAgICAgICAgcmVzLmZvckVhY2goaXRlbSA9PiB7XFxcXG4gICAgICAgICAgICBkLnB1c2goe1xcXFxuICAgICAgICAgICAgICAgIHRpdGxlOiBpdGVtLnRpdGxlLFxcXFxuICAgICAgICAgICAgICAgIGRlc2M6IGDigJzigJzigJ3igJ08c21hbGw+5L2c6ICFOiR7aXRlbS5hdXRob3J9IOWHuueJiOekvjoke2l0ZW0ucHVibGlzaGVyP2l0ZW0ucHVibGlzaGVyOlxcXFxcXFwi5pqC5pegXFxcXFxcXCJ9IElTQk46JHtpdGVtLmlzYm4/aXRlbS5pc2JuOlxcXFxcXFwi5pqC5pegXFxcXFxcXCJ9IOWHuueJiOaXtumXtDoke2l0ZW0ueWVhcj9pdGVtLnllYXI6XFxcXFxcXCLmmoLml6BcXFxcXFxcIn0g5paH5Lu25qC85byPOiR7aXRlbS5leHRlbnNpb259IOaWh+S7tuWkp+WwjzokeyQucmVxdWlyZShcXFxcXFxcImFwaVxcXFxcXFwiKS5nZXRGaWxlU2l6ZShpdGVtLmZpbGVzaXplKX08L3NtYWxsPmAsXFxcXG4gICAgICAgICAgICAgICAgdXJsOiAkKCkubGF6eVJ1bGUoKGlkKSA9PiB7XFxcXG4gICAgICAgICAgICAgICAgICAgIHRyeSB7XFxcXG4gICAgICAgICAgICAgICAgICAgICAgICB2YXIgcmVzID0gSlNPTi5wYXJzZShwb3N0KFxcXFxcXFwiaHR0cHM6Ly9hcGkueWxpYnJhcnkub3JnL2FwaS9kZXRhaWwvXFxcXFxcXCIsIHtcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBib2R5OiBKU09OLnN0cmluZ2lmeSh7XFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxcXFxcXFwiaWRcXFxcXFxcIjogaWQsXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxcXFxcXFwic291cmNlXFxcXFxcXCI6IFxcXFxcXFwiemxpYnJhcnlcXFxcXFxcIlxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICB9KSlcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBzZXJ2ZXJzID0gJC5yZXF1aXJlKFxcXFxcXFwiaGlrZXI6Ly9wYWdlL2FwaVxcXFxcXFwiKS5zZXJ2ZXJzXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICBzZXJ2ZXJzLnVuc2hpZnQoXFxcXFxcXCJpcGZz5LiL6L29XFxcXFxcXCIpXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICBzZXJ2ZXJzLnVuc2hpZnQoXFxcXFxcXCLnmb7luqbkupHnm5jovazlrZhcXFxcXFxcIilcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyZXMuaW5fbGliZ2VuKSB7XFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VydmVycy51bnNoaWZ0KFxcXFxcXFwiTGliZ2VuKOaOqOiNkClcXFxcXFxcIilcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cXFxcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAkKHNlcnZlcnMsIDEsIFxcXFxcXFwi6YCJ5oup57q/6LevXFxcXFxcXCIpLnNlbGVjdCgocmVzKSA9PiB7XFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGlucHV0ID09IFxcXFxcXFwiTGliZ2VuKOaOqOiNkClcXFxcXFxcIikge1xcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gXFxcXFxcXCJkb3dubG9hZDovL1xcXFxcXFwiICsgcGRmaChyZXF1ZXN0KFxcXFxcXFwiaHR0cDovL2xpYnJhcnkubG9sL21haW4vXFxcXFxcXCIgKyByZXMubWQ1KSwgXFxcXFxcXCIjZG93bmxvYWQmJmEmJmhyZWZcXFxcXFxcIilcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGlucHV0ID09IFxcXFxcXFwi55m+5bqm5LqR55uY6L2s5a2YXFxcXFxcXCIpIHtcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICQucmVxdWlyZShcXFxcXFxcImFwaVxcXFxcXFwiKS5iYWlkdShyZXMpXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChpbnB1dCA9PSBcXFxcXFxcImlwZnPkuIvovb1cXFxcXFxcIikge1xcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gYHg1Oi8vaHR0cHM6Ly9pcGZzLWNoZWNrZXIuMWtidG9vbC5jb20vJHtyZXMuaXBmc19jaWR9YFxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoaW5wdXQuaW5jbHVkZXMoXFxcXFxcXCJpcGZzZ3cwMC5zdGFyaXZlcnBhbi5jb21cXFxcXFxcIikpIHtcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFxcXFxcXFwiZG93bmxvYWQ6Ly9cXFxcXFxcIiArIGlucHV0ICsgcmVzLmlwZnNfY2lkICsgXFxcXFxcXCI7e1JlZmVyZXJAaHR0cHM6Ly93eC5zdGFyaXZlcnBhbi5jb20vfVxcXFxcXFwiXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFxcXFxcXFwiZG93bmxvYWQ6Ly9cXFxcXFxcIiArIGlucHV0ICsgcmVzLmlwZnNfY2lkXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgfSwgcmVzKVxcXFxuICAgICAgICAgICAgICAgICAgICB9IGNhdGNoIChlKSB7XFxcXG4gICAgICAgICAgICAgICAgICAgICAgICBsb2coZS5tZXNzYWdlKVxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFxcXFxcXFwidG9hc3Q6Ly/op6PmnpDlpLHotKVcXFxcXFxcIlxcXFxuICAgICAgICAgICAgICAgICAgICB9XFxcXG4gICAgICAgICAgICAgICAgfSwgaXRlbS5pZClcXFxcbiAgICAgICAgICAgIH0pXFxcXG4gICAgICAgIH0pXFxcXG4gICAgfSxcXFxcbiAgICBaaGVscGVyX3Y1OiBmdW5jdGlvbihrdywgcGFnZSkge1xcXFxuICAgICAgICB2YXIgcmVzID0gSlNPTi5wYXJzZShwb3N0KFxcXFxcXFwiaHR0cHM6Ly9hcGkudjUuemhlbHBlci5uZXQvYXBpL3NlYXJjaC9cXFxcXFxcIiwge1xcXFxuICAgICAgICAgICAgYm9keTogSlNPTi5zdHJpbmdpZnkoe1xcXFxuICAgICAgICAgICAgICAgIFxcXFxcXFwia2V5d29yZFxcXFxcXFwiOiBrdyxcXFxcbiAgICAgICAgICAgICAgICBcXFxcXFxcInBhZ2VcXFxcXFxcIjogcGFnZSxcXFxcbiAgICAgICAgICAgICAgICBcXFxcXFxcInNlbnNpdGl2ZVxcXFxcXFwiOiBmYWxzZVxcXFxuICAgICAgICAgICAgfSlcXFxcbiAgICAgICAgfSkpLmRhdGFcXFxcbiAgICAgICAgcmVzLmZvckVhY2goaXRlbSA9PiB7XFxcXG4gICAgICAgICAgICBkLnB1c2goe1xcXFxuICAgICAgICAgICAgICAgIHRpdGxlOiBpdGVtLnRpdGxlLFxcXFxuICAgICAgICAgICAgICAgIGRlc2M6IGDigJzigJzigJ3igJ08c21hbGw+5L2c6ICFOiR7aXRlbS5hdXRob3J9IOWHuueJiOekvjoke2l0ZW0ucHVibGlzaGVyP2l0ZW0ucHVibGlzaGVyOlxcXFxcXFwi5pqC5pegXFxcXFxcXCJ9IElTQk46JHtpdGVtLmlzYm4/aXRlbS5pc2JuOlxcXFxcXFwi5pqC5pegXFxcXFxcXCJ9IOWHuueJiOaXtumXtDoke2l0ZW0ueWVhcj9pdGVtLnllYXI6XFxcXFxcXCLmmoLml6BcXFxcXFxcIn0g5paH5Lu25qC85byPOiR7aXRlbS5leHRlbnNpb259IOaWh+S7tuWkp+WwjzokeyQucmVxdWlyZShcXFxcXFxcImFwaVxcXFxcXFwiKS5nZXRGaWxlU2l6ZShpdGVtLmZpbGVzaXplKX08L3NtYWxsPmAsXFxcXG4gICAgICAgICAgICAgICAgdXJsOiAkKCkubGF6eVJ1bGUoKGlkKSA9PiB7XFxcXG4gICAgICAgICAgICAgICAgICAgIHRyeSB7XFxcXG4gICAgICAgICAgICAgICAgICAgICAgICB2YXIgcmVzID0gSlNPTi5wYXJzZShwb3N0KFxcXFxcXFwiaHR0cHM6Ly9hcGkudjUuemhlbHBlci5uZXQvYXBpL2RldGFpbC9cXFxcXFxcIiwge1xcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvZHk6IEpTT04uc3RyaW5naWZ5KHtcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXFxcXFxcXCJpZFxcXFxcXFwiOiBpZCxcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXFxcXFxcXCJzb3VyY2VcXFxcXFxcIjogXFxcXFxcXCJ6bGlicmFyeVxcXFxcXFwiXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSlcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pKVxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHNlcnZlcnMgPSAkLnJlcXVpcmUoXFxcXFxcXCJoaWtlcjovL3BhZ2UvYXBpXFxcXFxcXCIpLnNlcnZlcnNcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgIHNlcnZlcnMudW5zaGlmdChcXFxcXFxcImlwZnPkuIvovb1cXFxcXFxcIilcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgIHNlcnZlcnMudW5zaGlmdChcXFxcXFxcIueZvuW6puS6keebmOi9rOWtmFxcXFxcXFwiKVxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHJlcy5pbl9saWJnZW4pIHtcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXJ2ZXJzLnVuc2hpZnQoXFxcXFxcXCJMaWJnZW4o5o6o6I2QKVxcXFxcXFwiKVxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgfVxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICQoc2VydmVycywgMSwgXFxcXFxcXCLpgInmi6nnur/ot69cXFxcXFxcIikuc2VsZWN0KChyZXMpID0+IHtcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaW5wdXQgPT0gXFxcXFxcXCJMaWJnZW4o5o6o6I2QKVxcXFxcXFwiKSB7XFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBcXFxcXFxcImRvd25sb2FkOi8vXFxcXFxcXCIgKyBwZGZoKHJlcXVlc3QoXFxcXFxcXCJodHRwOi8vbGlicmFyeS5sb2wvbWFpbi9cXFxcXFxcIiArIHJlcy5tZDUpLCBcXFxcXFxcIiNkb3dubG9hZCYmYSYmaHJlZlxcXFxcXFwiKVxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoaW5wdXQgPT0gXFxcXFxcXCLnmb7luqbkupHnm5jovazlrZhcXFxcXFxcIikge1xcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJC5yZXF1aXJlKFxcXFxcXFwiYXBpXFxcXFxcXCIpLmJhaWR1KHJlcylcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGlucHV0ID09IFxcXFxcXFwiaXBmc+S4i+i9vVxcXFxcXFwiKSB7XFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBgeDU6Ly9odHRwczovL2lwZnMtY2hlY2tlci4xa2J0b29sLmNvbS8ke3Jlcy5pcGZzX2NpZH1gXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChpbnB1dC5pbmNsdWRlcyhcXFxcXFxcImlwZnNndzAwLnN0YXJpdmVycGFuLmNvbVxcXFxcXFwiKSkge1xcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gXFxcXFxcXCJkb3dubG9hZDovL1xcXFxcXFwiICsgaW5wdXQgKyByZXMuaXBmc19jaWQgKyBcXFxcXFxcIjt7UmVmZXJlckBodHRwczovL3d4LnN0YXJpdmVycGFuLmNvbS99XFxcXFxcXCJcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gXFxcXFxcXCJkb3dubG9hZDovL1xcXFxcXFwiICsgaW5wdXQgKyByZXMuaXBmc19jaWRcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XFxcXG4gICAgICAgICAgICAgICAgICAgICAgICB9LCByZXMpXFxcXG4gICAgICAgICAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHtcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgIGxvZyhlLm1lc3NhZ2UpXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gXFxcXFxcXCJ0b2FzdDovL+ino+aekOWksei0pVxcXFxcXFwiXFxcXG4gICAgICAgICAgICAgICAgICAgIH1cXFxcbiAgICAgICAgICAgICAgICB9LCBpdGVtLmlkKVxcXFxuICAgICAgICAgICAgfSlcXFxcbiAgICAgICAgfSlcXFxcbiAgICB9LFxcXFxuICAgIFpoZWxwZXJfdjQ6IGZ1bmN0aW9uKGt3LCBwYWdlKSB7XFxcXG4gICAgICAgIHZhciByZXMgPSBKU09OLnBhcnNlKHBvc3QoXFxcXFxcXCJodHRwczovL2FwaS5taWJvb2tzLnRrL2FwaS9zZWFyY2gvXFxcXFxcXCIsIHtcXFxcbiAgICAgICAgICAgIGJvZHk6IEpTT04uc3RyaW5naWZ5KHtcXFxcbiAgICAgICAgICAgICAgICBcXFxcXFxcImtleXdvcmRcXFxcXFxcIjoga3csXFxcXG4gICAgICAgICAgICAgICAgXFxcXFxcXCJwYWdlXFxcXFxcXCI6IHBhZ2UsXFxcXG4gICAgICAgICAgICAgICAgXFxcXFxcXCJzZW5zaXRpdmVcXFxcXFxcIjogZmFsc2VcXFxcbiAgICAgICAgICAgIH0pXFxcXG4gICAgICAgIH0pKS5kYXRhXFxcXG4gICAgICAgIHJlcy5mb3JFYWNoKGl0ZW0gPT4ge1xcXFxuICAgICAgICAgICAgZC5wdXNoKHtcXFxcbiAgICAgICAgICAgICAgICB0aXRsZTogaXRlbS50aXRsZSxcXFxcbiAgICAgICAgICAgICAgICBkZXNjOiBg4oCc4oCc4oCd4oCdPHNtYWxsPuS9nOiAhToke2l0ZW0uYXV0aG9yfSDlh7rniYjnpL46JHtpdGVtLnB1Ymxpc2hlcj9pdGVtLnB1Ymxpc2hlcjpcXFxcXFxcIuaaguaXoFxcXFxcXFwifSBJU0JOOiR7aXRlbS5pc2JuP2l0ZW0uaXNibjpcXFxcXFxcIuaaguaXoFxcXFxcXFwifSDlh7rniYjml7bpl7Q6JHtpdGVtLnllYXI/aXRlbS55ZWFyOlxcXFxcXFwi5pqC5pegXFxcXFxcXCJ9IOaWh+S7tuagvOW8jzoke2l0ZW0uZXh0ZW5zaW9ufSDmlofku7blpKflsI86JHskLnJlcXVpcmUoXFxcXFxcXCJhcGlcXFxcXFxcIikuZ2V0RmlsZVNpemUoaXRlbS5maWxlc2l6ZSl9PC9zbWFsbD5gLFxcXFxuICAgICAgICAgICAgICAgIHVybDogJCgpLmxhenlSdWxlKChpZCkgPT4ge1xcXFxuICAgICAgICAgICAgICAgICAgICB0cnkge1xcXFxuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHNlcnZlcnMgPSBbJ2h0dHBzOi8vdGVzdDEuemxpYi5kb3dubG9hZCcsICdodHRwczovL3Rlc3QyLnpsaWIuZG93bmxvYWQnLCAnaHR0cHM6Ly96bGliLmpnMTIxMjMub25lJ11cXFxcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAkKHNlcnZlcnMsIDEsIFxcXFxcXFwi6K+36YCJ5oup5LiL6L2957q/6LevXFxcXFxcXCIpLnNlbGVjdCgoaWQpID0+IHtcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gXFxcXFxcXCJkb3dubG9hZDovL1xcXFxcXFwiICsgaW5wdXQgKyBcXFxcXFxcIi9kb3dubG9hZC9cXFxcXFxcIiArIGlkICsgXFxcXFxcXCIvXFxcXFxcXCJcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sIGlkKVxcXFxuICAgICAgICAgICAgICAgICAgICB9IGNhdGNoIChlKSB7XFxcXG4gICAgICAgICAgICAgICAgICAgICAgICBsb2coZS5tZXNzYWdlKVxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFxcXFxcXFwidG9hc3Q6Ly/op6PmnpDlpLHotKVcXFxcXFxcIlxcXFxuICAgICAgICAgICAgICAgICAgICB9XFxcXG4gICAgICAgICAgICAgICAgfSwgaXRlbS5pZClcXFxcbiAgICAgICAgICAgIH0pXFxcXG4gICAgICAgIH0pXFxcXG4gICAgfSxcXFxcbiAgICBjaGVja0xpYmdlbjogZnVuY3Rpb24oKSB7XFxcXG4gICAgICAgIHZhciBkb21haW5zID0gW1xcXFxcXFwiaHR0cDovL2xpYmdlbi5yc1xcXFxcXFwiLCBcXFxcXFxcImh0dHA6Ly9saWJnZW4uaXNcXFxcXFxcIiwgXFxcXFxcXCJodHRwOi8vbGliZ2VuLnN0XFxcXFxcXCJdXFxcXG4gICAgICAgIHRyeSB7XFxcXG4gICAgICAgICAgICBmb3IgKGl0ZW0gb2YgZG9tYWlucykge1xcXFxuICAgICAgICAgICAgICAgIHZhciBjb2RlID0gSlNPTi5wYXJzZShyZXF1ZXN0KGl0ZW0sIHtcXFxcbiAgICAgICAgICAgICAgICAgICAgd2l0aFN0YXR1c0NvZGU6IHRydWVcXFxcbiAgICAgICAgICAgICAgICB9KSkuc3RhdHVzQ29kZVxcXFxuICAgICAgICAgICAgICAgIGlmIChjb2RlID09IDIwMCkge1xcXFxuICAgICAgICAgICAgICAgICAgICBzZXRJdGVtKFxcXFxcXFwibGliZ2VuXFxcXFxcXCIsIGl0ZW0pXFxcXG4gICAgICAgICAgICAgICAgICAgIHRvYXN0KFxcXFxcXFwi5qOA5rWL5Yiw5Y+v55So6ZWc5YOPXFxcXFxcXCIpXFxcXG4gICAgICAgICAgICAgICAgICAgIHJlZnJlc2hQYWdlKClcXFxcbiAgICAgICAgICAgICAgICAgICAgYnJlYWtcXFxcbiAgICAgICAgICAgICAgICB9XFxcXG4gICAgICAgICAgICB9XFxcXG4gICAgICAgICAgICB0b2FzdChcXFxcXFxcIuaJgOaciemVnOWDj+mDveaXoOazleS9v+eUqO+8jOivt+aJk+W8gFRa5L2/55SoXFxcXFxcXCIpXFxcXG4gICAgICAgIH0gY2F0Y2ggKGUpIHtcXFxcbiAgICAgICAgICAgIGxvZyhlLm1lc3NhZ2UpXFxcXG4gICAgICAgIH1cXFxcbiAgICB9LFxcXFxuICAgIExpYmdlbjogZnVuY3Rpb24oa3csIHBhZ2UpIHtcXFxcbiAgICAgICAgaWYgKGdldEl0ZW0oXFxcXFxcXCJsaWJnZW5cXFxcXFxcIiwgXFxcXFxcXCJcXFxcXFxcIikgPT0gXFxcXFxcXCJcXFxcXFxcIikge1xcXFxuICAgICAgICAgICAgdG9hc3QoXFxcXFxcXCLml6Dlj6/nlKjplZzlg4/vvIzmraPlnKjmo4DmtYvkuK0uLi5cXFxcXFxcIilcXFxcbiAgICAgICAgICAgICQucmVxdWlyZShcXFxcXFxcImFwaVxcXFxcXFwiKS5jaGVja0xpYmdlbigpXFxcXG4gICAgICAgIH0gZWxzZSB7XFxcXG4gICAgICAgICAgICB2YXIgdXJsID0gZ2V0SXRlbShcXFxcXFxcImxpYmdlblxcXFxcXFwiKSArIFxcXFxcXFwiL3NlYXJjaC5waHA/cmVxPVxcXFxcXFwiICsga3cgKyBcXFxcXFxcIiZwYWdlPVxcXFxcXFwiICsgcGFnZVxcXFxuICAgICAgICAgICAgdmFyIHIgPSBKU09OLnBhcnNlKHJlcXVlc3QodXJsLCB7XFxcXG4gICAgICAgICAgICAgICAgd2l0aEhlYWRlcnM6IHRydWVcXFxcbiAgICAgICAgICAgIH0pKVxcXFxuICAgICAgICAgICAgaWYgKHIuc3RhdHVzQ29kZSA9PSAyMDApIHtcXFxcbiAgICAgICAgICAgICAgICB2YXIgcmVzID0gci5ib2R5XFxcXG4gICAgICAgICAgICAgICAgdmFyIGxpc3QgPSBwZGZhKHJlcywgXFxcXFxcXCJib2R5JiZ0clxcXFxcXFwiKS5maWx0ZXIoaXRlbSA9PiB7XFxcXG4gICAgICAgICAgICAgICAgICAgIGlmIChpdGVtLmluY2x1ZGVzKFxcXFxcXFwibm93cmFwXFxcXFxcXCIpKSB7XFxcXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gaXRlbVxcXFxuICAgICAgICAgICAgICAgICAgICB9XFxcXG4gICAgICAgICAgICAgICAgfSlcXFxcbiAgICAgICAgICAgICAgICBsaXN0LmZvckVhY2goaXRlbSA9PiB7XFxcXG4gICAgICAgICAgICAgICAgICAgIHZhciBsaSA9IGl0ZW0ubWF0Y2gobmV3IFJlZ0V4cChcXFxcXFxcIjx0ZCguKj8pPC90ZD5cXFxcXFxcIiwgXFxcXFxcXCJnXFxcXFxcXCIpKVxcXFxuICAgICAgICAgICAgICAgICAgICB2YXIgZGVzYyA9IFxcXFxcXFwi4oCc4oCc4oCd4oCdPHNtYWxsPlxcXFxcXFwiICsgcGRmaChsaVsxXSwgXFxcXFxcXCJhJiZUZXh0XFxcXFxcXCIpXFxcXG4gICAgICAgICAgICAgICAgICAgIGZvciAobGV0IGkgPSAzOyBpIDwgbGkubGVuZ3RoIC0gMzsgaSsrKSB7XFxcXG4gICAgICAgICAgICAgICAgICAgICAgICBkZXNjICs9IFxcXFxcXFwi77ybXFxcXFxcXCIgKyBwZGZoKGxpW2ldLCBcXFxcXFxcIlRleHRcXFxcXFxcIilcXFxcbiAgICAgICAgICAgICAgICAgICAgfVxcXFxuICAgICAgICAgICAgICAgICAgICBkZXNjICs9IFxcXFxcXFwiPC9zbWFsbD5cXFxcXFxcIlxcXFxuICAgICAgICAgICAgICAgICAgICBkLnB1c2goe1xcXFxuICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6IHBkZmgobGlbMl0sIFxcXFxcXFwiVGV4dFxcXFxcXFwiKSxcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgIGRlc2M6IGRlc2MsXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICB1cmw6ICQoKS5sYXp5UnVsZSgobGkpID0+IHtcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gXFxcXFxcXCJkb3dubG9hZDovL1xcXFxcXFwiICsgcGRmaChyZXF1ZXN0KHBkZmgobGlbOV0sIFxcXFxcXFwiYSYmaHJlZlxcXFxcXFwiKSksIFxcXFxcXFwiI2Rvd25sb2FkJiZhJiZocmVmXFxcXFxcXCIpXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICB9LCBsaSlcXFxcbiAgICAgICAgICAgICAgICAgICAgfSlcXFxcbiAgICAgICAgICAgICAgICB9KVxcXFxuICAgICAgICAgICAgfSBlbHNlIHtcXFxcbiAgICAgICAgICAgICAgICB0b2FzdChcXFxcXFxcIumVnOWDj+WkseaViO+8jOmHjeaWsOajgOa1i+S4rS4uLlxcXFxcXFwiKVxcXFxuICAgICAgICAgICAgICAgICQucmVxdWlyZShcXFxcXFxcImFwaVxcXFxcXFwiKS5jaGVja0xpYmdlbigpXFxcXG4gICAgICAgICAgICB9XFxcXG4gICAgICAgIH1cXFxcbiAgICB9LFxcXFxuICAgIOe9keebmDogZnVuY3Rpb24oa3csIHBhZ2UpIHtcXFxcbiAgICAgICAgdmFyIHJlcyA9IEpTT04ucGFyc2UocG9zdChcXFxcXFxcImh0dHBzOi8vYXBpLmJvb2twYW4ubmV0L2FwaS9zZWFyY2gvXFxcXFxcXCIsIHtcXFxcbiAgICAgICAgICAgIGJvZHk6IEpTT04uc3RyaW5naWZ5KHtcXFxcbiAgICAgICAgICAgICAgICBcXFxcXFxcImtleXdvcmRcXFxcXFxcIjoga3csXFxcXG4gICAgICAgICAgICAgICAgXFxcXFxcXCJwYWdlXFxcXFxcXCI6IHBhZ2UsXFxcXG4gICAgICAgICAgICAgICAgXFxcXFxcXCJzZW5zaXRpdmVcXFxcXFxcIjogZmFsc2VcXFxcbiAgICAgICAgICAgIH0pXFxcXG4gICAgICAgIH0pKS5kYXRhXFxcXG4gICAgICAgIHJlcy5mb3JFYWNoKGl0ZW0gPT4ge1xcXFxuICAgICAgICAgICAgZC5wdXNoKHtcXFxcbiAgICAgICAgICAgICAgICB0aXRsZTogaXRlbS5pbmZvLFxcXFxuICAgICAgICAgICAgICAgIGRlc2M6IFxcXFxcXFwi4oCc4oCc4oCd4oCdPHNtYWxsPlxcXFxcXFwiICsgaXRlbS5zb3VyY2UgKyBcXFxcXFxcIjwvc21hbGw+XFxcXFxcXCIsXFxcXG4gICAgICAgICAgICAgICAgdXJsOiAkKCkubGF6eVJ1bGUoKGlkLCBzb3VyY2UpID0+IHtcXFxcbiAgICAgICAgICAgICAgICAgICAgdHJ5IHtcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciByZXMgPSBKU09OLnBhcnNlKHBvc3QoXFxcXFxcXCJodHRwczovL2FwaS5ib29rcGFuLm5ldC9hcGkvZGV0YWlsL1xcXFxcXFwiLCB7XFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9keTogSlNPTi5zdHJpbmdpZnkoe1xcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcXFxcXFxcImlkXFxcXFxcXCI6IGlkLFxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcXFxcXFxcInNvdXJjZVxcXFxcXFwiOiBzb3VyY2VcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KVxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgfSkpXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAocmVzLmRvd25sb2FkX2xpbmspIHtcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgZGljdCA9IHt9XFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzLmRvd25sb2FkX2xpbmsudW5zaGlmdCh7XFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IFxcXFxcXFwi5Y6f572R6aG1XFxcXFxcXCIsXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVybDogcmVzLnVybFxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICQocmVzLmRvd25sb2FkX2xpbmsubWFwKGZ1bmN0aW9uKGl0ZW0pIHtcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGl0ZW0ubmFtZVxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pLCAxLCBcXFxcXFxcIuivt+mAieaLqeS4i+i9vee6v+i3r1xcXFxcXFwiKS5zZWxlY3QoKGxpbmtzKSA9PiB7XFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBsaW5rc1tsaW5rcy5tYXAoZnVuY3Rpb24oaXRlbSkge1xcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGl0ZW0ubmFtZVxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KS5pbmRleE9mKGlucHV0KV0udXJsXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgcmVzLmRvd25sb2FkX2xpbmspXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiByZXMudXJsXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICB9XFxcXG4gICAgICAgICAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHtcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgIGxvZyhlLm1lc3NhZ2UpXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gXFxcXFxcXCJ0b2FzdDovL+ino+aekOWksei0pVxcXFxcXFwiXFxcXG4gICAgICAgICAgICAgICAgICAgIH1cXFxcbiAgICAgICAgICAgICAgICB9LCBpdGVtLmlkLCBpdGVtLnNvdXJjZSlcXFxcbiAgICAgICAgICAgIH0pXFxcXG4gICAgICAgIH0pXFxcXG4gICAgfSxcXFxcbiAgICDml6DlkI3lm77kuaY6IGZ1bmN0aW9uKGt3LCBwYWdlKSB7XFxcXG4gICAgICAgIHZhciB1cmwgPSBcXFxcXFxcImh0dHBzOi8vd3d3LmJvb2sxMjMuaW5mby9saXN0P2tleT1cXFxcXFxcIiArIGt3ICsgXFxcXFxcXCImcGFnZT1cXFxcXFxcIiArIHBhZ2VcXFxcbiAgICAgICAgdmFyIHJlcyA9IHJlcXVlc3QodXJsKVxcXFxuICAgICAgICB2YXIgbGlzdCA9IHBkZmEocmVzLCBcXFxcXFxcIi5saXN0X3BhZ2VDb250ZW50X196X3l6diYmbGlcXFxcXFxcIilcXFxcbiAgICAgICAgbGlzdC5mb3JFYWNoKGl0ZW0gPT4ge1xcXFxuICAgICAgICAgICAgZC5wdXNoKHtcXFxcbiAgICAgICAgICAgICAgICB0aXRsZTogcGRmaChpdGVtLCBcXFxcXFxcIi5saXN0X3RpdGxlX18wNm50MiYmVGV4dFxcXFxcXFwiKSxcXFxcbiAgICAgICAgICAgICAgICBkZXNjOiBcXFxcXFxcIuKAnOKAnOKAneKAnTxzbWFsbD5cXFxcXFxcIiArIHBkZmgoaXRlbSwgXFxcXFxcXCIubGlzdF9hdXRob3JfX2xQd3BsJiZUZXh0XFxcXFxcXCIpICsgXFxcXFxcXCJcXFxcXFxcXG5cXFxcXFxcIiArIHBkZmgoaXRlbSwgXFxcXFxcXCIubGlzdF9yYXRlX19KN094MSYmVGV4dFxcXFxcXFwiKSArIFxcXFxcXFwiXFxcXFxcXFxuXFxcXFxcXCIgKyBwZGZoKGl0ZW0sIFxcXFxcXFwiLmxpc3RfZGVzY19fa0pqMVkmJlRleHRcXFxcXFxcIikgKyBcXFxcXFxcIjwvc21hbGw+XFxcXFxcXCIsXFxcXG4gICAgICAgICAgICAgICAgdXJsOiAkKCkubGF6eVJ1bGUoKHVybCkgPT4ge1xcXFxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gXFxcXFxcXCJkb3dubG9hZDovL1xcXFxcXFwiICsgcGRmaChyZXF1ZXN0KHVybCksIFxcXFxcXFwiLmRldGFpbF9kb3dubG9hZF9idG5fX3Y3YjdrJiZocmVmXFxcXFxcXCIpXFxcXG4gICAgICAgICAgICAgICAgfSwgXFxcXFxcXCJodHRwczovL3d3dy5ib29rMTIzLmluZm9cXFxcXFxcIiArIHBkZmgoaXRlbSwgXFxcXFxcXCJhJiZocmVmXFxcXFxcXCIpKVxcXFxuICAgICAgICAgICAgfSlcXFxcbiAgICAgICAgfSlcXFxcbiAgICB9LFxcXFxuICAgIGJhaWR1OiBmdW5jdGlvbihyZXMpIHtcXFxcbiAgICAgICAgdHJ5IHtcXFxcbiAgICAgICAgICAgIGlmICghZmlsZUV4aXN0KFxcXFxcXFwiaGlrZXI6Ly9maWxlcy9ydWxlcy9Kb2UvYmFpZHUudHh0XFxcXFxcXCIpKSB7XFxcXG4gICAgICAgICAgICAgICAgdG9hc3QoXFxcXFxcXCLov5jmnKrnmbvpmYZcXFxcXFxcIilcXFxcbiAgICAgICAgICAgICAgICByZXR1cm4gJCgpLnJ1bGUoKCkgPT4ge1xcXFxuICAgICAgICAgICAgICAgICAgICBzZXRSZXN1bHQoW3tcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgIHVybDogXFxcXFxcXCJodHRwczovL3Bhbi5iYWlkdS5jb20vXFxcXFxcXCIsXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICBjb2xfdHlwZTogXFxcXFxcXCJ4NV93ZWJ2aWV3X3NpbmdsZVxcXFxcXFwiLFxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgZGVzYzogXFxcXFxcXCIxMDAlJiZmbG9hdFxcXFxcXFwiLFxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgZXh0cmE6IHtcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBqczogJC50b1N0cmluZygoKSA9PiB7XFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciB1cmwgPSBsb2NhdGlvbi5ocmVmXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh1cmwuaW5jbHVkZXMoXFxcXFxcXCJodHRwczovL3Bhbi5iYWlkdS5jb20vd2FwXFxcXFxcXCIpKSB7XFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYmEud3JpdGVGaWxlKFxcXFxcXFwiaGlrZXI6Ly9maWxlcy9ydWxlcy9Kb2UvYmFpZHUudHh0XFxcXFxcXCIsIGZiYS5nZXRDb29raWUoXFxcXFxcXCJcXFxcXFxcIikpXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbGVydChcXFxcXFxcIuW3suiOt+WPluWIsGNvb2tpZe+8jOi/lOWbnuWNs+WPr1xcXFxcXFwiKVxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmJhLmJhY2soKVxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSksXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdWE6IE1PQklMRV9VQSxcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW5CYWNrOiB0cnVlXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICB9XFxcXG4gICAgICAgICAgICAgICAgICAgIH1dKVxcXFxuICAgICAgICAgICAgICAgIH0pXFxcXG4gICAgICAgICAgICB9IGVsc2Uge1xcXFxuICAgICAgICAgICAgICAgIHZhciBiZHN0b2tlbiA9IEpTT04ucGFyc2UocmVxdWVzdChcXFxcXFxcImh0dHBzOi8vcGFuLmJhaWR1LmNvbS9hcGkvZ2V0dGVtcGxhdGV2YXJpYWJsZT9maWVsZHM9WyUyMmJkc3Rva2VuJTIyXVxcXFxcXFwiLCB7XFxcXG4gICAgICAgICAgICAgICAgICAgIGhlYWRlcnM6IHtcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgIENvb2tpZTogcmVxdWVzdChcXFxcXFxcImhpa2VyOi8vZmlsZXMvcnVsZXMvSm9lL2JhaWR1LnR4dFxcXFxcXFwiKVxcXFxuICAgICAgICAgICAgICAgICAgICB9XFxcXG4gICAgICAgICAgICAgICAgfSkpLnJlc3VsdC5iZHN0b2tlblxcXFxuICAgICAgICAgICAgICAgIHJldHVybiAkKFxcXFxcXFwiL+eUteWtkOS5pi9cXFxcXFxcIiArIHJlcy50aXRsZSArIFxcXFxcXFwiLlxcXFxcXFwiICsgcmVzLmV4dGVuc2lvbiwgXFxcXFxcXCLor7fovpPlhaXkv53lrZjot6/lvoRcXFxcXFxcIikuaW5wdXQoKGJkc3Rva2VuLCByZXMpID0+IHtcXFxcbiAgICAgICAgICAgICAgICAgICAgdmFyIHJlcyA9IEpTT04ucGFyc2UocG9zdChcXFxcXFxcImh0dHBzOi8vcGFuLmJhaWR1LmNvbS9yZXN0LzIuMC94cGFuL2ZpbGU/bWV0aG9kPWNyZWF0ZSZiZHN0b2tlbj1cXFxcXFxcIiArIGJkc3Rva2VuLCB7XFxcXG4gICAgICAgICAgICAgICAgICAgICAgICBoZWFkZXJzOiB7XFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29va2llOiByZXF1ZXN0KFxcXFxcXFwiaGlrZXI6Ly9maWxlcy9ydWxlcy9Kb2UvYmFpZHUudHh0XFxcXFxcXCIpXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgYm9keToge1xcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemU6IHJlcy5maWxlc2l6ZSArIFxcXFxcXFwiXFxcXFxcXCIsXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGF0aDogaW5wdXQsXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYmxvY2tfbGlzdDogW3Jlcy5tZDVdLFxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJ0eXBlOiAwXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICB9XFxcXG4gICAgICAgICAgICAgICAgICAgIH0pKVxcXFxuICAgICAgICAgICAgICAgICAgICBpZiAocmVzLmVycm5vID09IDApIHtcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBcXFxcXFxcInRvYXN0Oi8v6L2s5a2Y5oiQ5YqfXFxcXFxcXCJcXFxcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChyZXMuZXJybm8gPT0gLTgpIHtcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBcXFxcXFxcInRvYXN0Oi8v6L2s5a2Y5aSx6LSl77yM5bey57uP5L+d5a2Y6L+H6L+Z5Liq5paH5Lu25LqGXFxcXFxcXCJcXFxcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChyZXMuZXJybm8gPT0gMikge1xcXFxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFxcXFxcXFwidG9hc3Q6Ly/ovazlrZjlpLHotKXvvIzplJnor6/nmoTot6/lvoRcXFxcXFxcIlxcXFxuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xcXFxuICAgICAgICAgICAgICAgICAgICAgICAgbG9nKHJlcy5lcnJubylcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBcXFxcXFxcInRvYXN0Oi8v6L2s5a2Y5aSx6LSlXFxcXFxcXCJcXFxcbiAgICAgICAgICAgICAgICAgICAgfVxcXFxuICAgICAgICAgICAgICAgIH0sIGJkc3Rva2VuLCByZXMpXFxcXG4gICAgICAgICAgICB9XFxcXG4gICAgICAgIH0gY2F0Y2ggKGUpIHtcXFxcbiAgICAgICAgICAgIGxvZyhlLm1lc3NhZ2UpXFxcXG4gICAgICAgICAgICByZXR1cm4gXFxcXFxcXCJ0b2FzdDovL+i9rOWtmOWksei0pVxcXFxcXFwiXFxcXG4gICAgICAgIH1cXFxcbiAgICB9XFxcXG59XFxcIn1dXCJ9IiwidGl0bGUiOiLluLjop4Hlr4TnlJ/omavlm77osLEt5Lq65L2T5bi46KeB5a+E55Sf6Jmr5a2m5b2p6Imy5Zu+6LCxIn0=
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement