mirror of
https://github.com/zoriya/EAU.git
synced 2025-12-06 06:36:13 +00:00
2 lines
31 KiB
JavaScript
2 lines
31 KiB
JavaScript
!function(e){var t={};function n(r){if(t[r])return t[r].exports;var a=t[r]={i:r,l:!1,exports:{}};return e[r].call(a.exports,a,a.exports,n),a.l=!0,a.exports}n.m=e,n.c=t,n.d=function(e,t,r){n.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:r})},n.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},n.t=function(e,t){if(1&t&&(e=n(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var r=Object.create(null);if(n.r(r),Object.defineProperty(r,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var a in e)n.d(r,a,function(t){return e[t]}.bind(null,a));return r},n.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(t,"a",t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p="",n(n.s=5)}([function(e,t,n){"use strict";n.d(t,"a",function(){return a}),n.d(t,"b",function(){return r});var r,a=function(){return function(e,t,n,r,a,o,i){this.name=e,this.appid=t,this.thumbnail=n,this.launcher=r,this.launcherID=a,this.isInstalled=o,this.localPath=i}}();!function(e){e[e.LocalOnly=0]="LocalOnly",e[e.Steam=1]="Steam"}(r||(r={}))},function(e,t,n){"use strict";n.r(t),n.d(t,"setup",function(){return l});var r,a,o=n(0),i=n(4).ipcRenderer,s=5,c=0,u="76561198196430655";function l(){s=0,r=document.querySelector(".carousel"),$.getJSON("http://api.steampowered.com/IPlayerService/GetRecentlyPlayedGames/v0001/?key=7C218E8D1347C3CD6CB8117E5ED533BC&steamid="+u+"&format=json",JSON,function(e){if(0!=e.response.total_count)for(var t=[],n=0;n<e.response.total_count;n++){var r=e.response.games[n];t[n]=new f(r.appid,r.name,r.img_logo_url),n+1==e.response.total_count&&d(t)}else console.log("no recent played games")})}function d(e){for(var t=document.getElementsByClassName("carousel__cell"),n=0;n<t.length;n++)n<e.length?(t[n].src="https://steamcdn-a.akamaihd.net/steam/apps/"+e[n].AppId+"/header.jpg",t[n].dataset.game=JSON.stringify(new o.a(null,e[n].AppId.toString(),t[n].srcn,o.b.Steam,"Steam",null,null)),t[n].id=n.toString(),t[n].addEventListener("click",function(){p(event.target,!1)})):t[n].classList.add("disabled");var r=document.createElement("Useless-div");r.id=Math.round(e.length/2).toString(),p(r,!1),r.remove}function p(e,t){null==a&&(a=e),a!=e&&a.classList.remove("higlight"),c=40*(s-e.id)+c,s!=e.id||0!=t?(e.classList.add("higlight"),r.style.transform="translateZ(-1000px) rotateY("+c+"deg)",s=e.id,a=e):i.send("LaunchGame",e.dataset.game)}var f=function(){return function(e,t,n){this.AppId=e,this.name=t,this.thumb=n}}()},function(e,t,n){const r=n(4),a=n(7),o=n(8);e.exports=class{constructor(e){this.path=a.join((r.app||r.remote.app).getPath("userData"),e+".json"),this.data=function(e){try{return JSON.parse(o.readFileSync(e))}catch{return{}}}(this.path)}get(e){return this.data[e]}set(e,t){this.data[e]=t,o.writeFileSync(this.path,JSON.stringify(this.data))}}},function(e,t,n){"use strict";n.r(t);var r=n(0),a=n(2);function o(){var e;e=function(){var e=navigator.userAgent.toLowerCase();if(console.log("Agent: "+e),e.indexOf(" electron/")>-1){var t=new(n(2))("account").get("steam");return null!=t?t:"76561198250223174"}return console.log("AGENT IS NOT ELECTRON, NO HANDLING FOR NOW"),"76561198250223174"}(),$.get("https://api.steampowered.com/IPlayerService/GetOwnedGames/v1/?key=7C218E8D1347C3CD6CB8117E5ED533BC&steamid="+e+"&include_appinfo=1&include_played_free_games=1&appids_filter=&format=json",function(e){for(var t=[],n=0;n<e.response.game_count;n++){var o=e.response.games[n],i="https://steamcdn-a.akamaihd.net/steam/apps/"+o.appid+"/header.jpg";t[n]=new r.a(o.name,o.appid,i,r.b.Steam,null,!0,null)}var s=new a("Games");s.set("games",t)})}n.d(t,"populateGrid",function(){return s});var i=n(4).ipcRenderer;function s(){var e,t=(e=n(2),navigator.userAgent.toLowerCase().indexOf(" electron/")>-1?new e("Games").get("games"):(console.log("AGENT IS NOT ELECTRON, NO HANDLING FOR NOW"),null));o();for(var r=document.getElementById("library"),a=function(){var e=t[s],n="<img src='"+e.thumbnail+"'/> <p>"+e.name+"</p>",a=document.createElement("div");a.className="game",a.onclick=function(){var t;t=e,i.send("LaunchGame",t)},e.isInstalled&&(n+='<img src="../../dist/drawables/installed.svg" style="position: absolute; top: 0; right: 0; padding: 5px;"/>'),a.innerHTML=n,null!=r&&r.appendChild(a)},s=0;s<t.length;s++)a()}},function(e,t){e.exports=require("electron")},function(e,t,n){n(6),e.exports=n(1)},function(e,t,n){"use strict";n.r(t);var r=n(1),a=n(3);function o(){$("#content").load("fragments/home.html",function(){Object(r.setup)(),Object(a.populateGrid)()}),document.getElementById("title").innerHTML="EAU"}$(function(){o(),document.getElementById("title").onclick=function(){o()},document.getElementById("searchBtn").onclick=function(){var e;(e=document.getElementById("searchInput")).value="",e.focus()},document.getElementById("settingsBtn").onclick=function(){$("#content").load("fragments/settings.html",function(){}),document.getElementById("title").innerHTML="<i class='icon fas fa-arrow-left'></i> Settings"}}),n(3),n(1)},function(e,t){e.exports=require("path")},function(e,t){e.exports=require("fs")}]);
|
|
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vd2VicGFjay9ib290c3RyYXAiLCJ3ZWJwYWNrOi8vLy4vc3JjL3RzL0dhbWUudHMiLCJ3ZWJwYWNrOi8vLy4vc3JjL3RzL0Nhcm91c2VsLnRzIiwid2VicGFjazovLy8uL3NyYy9qcy9zdG9yZS5qcyIsIndlYnBhY2s6Ly8vLi9zcmMvdHMvR2FtZUxvYWRlci50cyIsIndlYnBhY2s6Ly8vLi9zcmMvdHMvVG9rZW5NYW5hZ2VyLnRzIiwid2VicGFjazovLy8uL3NyYy90cy9MaWJyYXJ5LnRzIiwid2VicGFjazovLy9leHRlcm5hbCBcImVsZWN0cm9uXCIiLCJ3ZWJwYWNrOi8vLy4vc3JjL3RzL2luZGV4LnRzIiwid2VicGFjazovLy9leHRlcm5hbCBcInBhdGhcIiIsIndlYnBhY2s6Ly8vZXh0ZXJuYWwgXCJmc1wiIl0sIm5hbWVzIjpbImluc3RhbGxlZE1vZHVsZXMiLCJfX3dlYnBhY2tfcmVxdWlyZV9fIiwibW9kdWxlSWQiLCJleHBvcnRzIiwibW9kdWxlIiwiaSIsImwiLCJtb2R1bGVzIiwiY2FsbCIsIm0iLCJjIiwiZCIsIm5hbWUiLCJnZXR0ZXIiLCJvIiwiT2JqZWN0IiwiZGVmaW5lUHJvcGVydHkiLCJlbnVtZXJhYmxlIiwiZ2V0IiwiciIsIlN5bWJvbCIsInRvU3RyaW5nVGFnIiwidmFsdWUiLCJ0IiwibW9kZSIsIl9fZXNNb2R1bGUiLCJucyIsImNyZWF0ZSIsImtleSIsImJpbmQiLCJuIiwib2JqZWN0IiwicHJvcGVydHkiLCJwcm90b3R5cGUiLCJoYXNPd25Qcm9wZXJ0eSIsInAiLCJzIiwiX193ZWJwYWNrX2V4cG9ydHNfXyIsIkdhbWUiLCJsYXVuY2hlciIsImFwcGlkIiwidGh1bWJuYWlsIiwibGF1bmNoZXJJRCIsImlzSW5zdGFsbGVkIiwibG9jYWxQYXRoIiwidGhpcyIsInNldHVwIiwiY2Fyb3VzZWwiLCJsYXN0c2VsZWN0ZWQiLCJfR2FtZV9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMF9fIiwiaXBjUmVuZGVyZXIiLCJzZWxlY3RlZEluZGV4IiwiYW5nbGUiLCJjbGllbnRUb2tlbiIsImRvY3VtZW50IiwicXVlcnlTZWxlY3RvciIsIiQiLCJnZXRKU09OIiwiSlNPTiIsImRhdGEiLCJyZXNwb25zZSIsInRvdGFsX2NvdW50IiwiU2VsZWN0ZWRSZWNlbnRHYW1lcyIsImdhbWUiLCJnYW1lcyIsIkdhbWVNZXRhIiwiaW1nX2xvZ29fdXJsIiwiaW5pQ2FsbGJhY2siLCJjb25zb2xlIiwibG9nIiwibGlzdCIsImdldEVsZW1lbnRzQnlDbGFzc05hbWUiLCJsZW5ndGgiLCJzcmMiLCJBcHBJZCIsImRhdGFzZXQiLCJzdHJpbmdpZnkiLCJ0b1N0cmluZyIsInNyY24iLCJTdGVhbSIsImlkIiwiYWRkRXZlbnRMaXN0ZW5lciIsInJvdGF0ZUNhcm91c2VsIiwiZXZlbnQiLCJ0YXJnZXQiLCJjbGFzc0xpc3QiLCJhZGQiLCJlbCIsImNyZWF0ZUVsZW1lbnQiLCJNYXRoIiwicm91bmQiLCJyZW1vdmUiLCJieXBhc3MiLCJzdHlsZSIsInRyYW5zZm9ybSIsInNlbmQiLCJ0aHVtYiIsImVsZWN0cm9uIiwicGF0aCIsImZzIiwiW29iamVjdCBPYmplY3RdIiwiam9pbiIsImFwcCIsInJlbW90ZSIsImdldFBhdGgiLCJwYXJzZSIsInJlYWRGaWxlU3luYyIsInJlYWRGaWxlIiwid3JpdGVGaWxlU3luYyIsIlN0b3JlIiwiVXBkYXRlR2FtZXNKU09OIiwic3RlYW1Ub2tlbiIsInVzZXJBZ2VudCIsIm5hdmlnYXRvciIsInRvTG93ZXJDYXNlIiwiaW5kZXhPZiIsInRrbiIsImdldFN0ZWFtVG9rZW4iLCJnYW1lX2NvdW50IiwiZ2FtZURhdGEiLCJzdG9yZSIsInNldCIsInBvcHVsYXRlR3JpZCIsImdyaWQiLCJnZXRFbGVtZW50QnlJZCIsIl9sb29wXzEiLCJncmlkSHRtbCIsImVsZW1lbnQiLCJjbGFzc05hbWUiLCJvbmNsaWNrIiwiZ2FtZUNsaWNrZWQiLCJpbm5lckhUTUwiLCJhcHBlbmRDaGlsZCIsInJlcXVpcmUiLCJfQ2Fyb3VzZWxfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzBfXyIsIl9MaWJyYXJ5X19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8xX18iLCJob21lIiwibG9hZCIsImlucHV0IiwiZm9jdXMiXSwibWFwcGluZ3MiOiJhQUNBLElBQUFBLEVBQUEsR0FHQSxTQUFBQyxFQUFBQyxHQUdBLEdBQUFGLEVBQUFFLEdBQ0EsT0FBQUYsRUFBQUUsR0FBQUMsUUFHQSxJQUFBQyxFQUFBSixFQUFBRSxHQUFBLENBQ0FHLEVBQUFILEVBQ0FJLEdBQUEsRUFDQUgsUUFBQSxJQVVBLE9BTkFJLEVBQUFMLEdBQUFNLEtBQUFKLEVBQUFELFFBQUFDLElBQUFELFFBQUFGLEdBR0FHLEVBQUFFLEdBQUEsRUFHQUYsRUFBQUQsUUFLQUYsRUFBQVEsRUFBQUYsRUFHQU4sRUFBQVMsRUFBQVYsRUFHQUMsRUFBQVUsRUFBQSxTQUFBUixFQUFBUyxFQUFBQyxHQUNBWixFQUFBYSxFQUFBWCxFQUFBUyxJQUNBRyxPQUFBQyxlQUFBYixFQUFBUyxFQUFBLENBQTBDSyxZQUFBLEVBQUFDLElBQUFMLEtBSzFDWixFQUFBa0IsRUFBQSxTQUFBaEIsR0FDQSxvQkFBQWlCLGVBQUFDLGFBQ0FOLE9BQUFDLGVBQUFiLEVBQUFpQixPQUFBQyxZQUFBLENBQXdEQyxNQUFBLFdBRXhEUCxPQUFBQyxlQUFBYixFQUFBLGNBQWlEbUIsT0FBQSxLQVFqRHJCLEVBQUFzQixFQUFBLFNBQUFELEVBQUFFLEdBRUEsR0FEQSxFQUFBQSxJQUFBRixFQUFBckIsRUFBQXFCLElBQ0EsRUFBQUUsRUFBQSxPQUFBRixFQUNBLEtBQUFFLEdBQUEsaUJBQUFGLFFBQUFHLFdBQUEsT0FBQUgsRUFDQSxJQUFBSSxFQUFBWCxPQUFBWSxPQUFBLE1BR0EsR0FGQTFCLEVBQUFrQixFQUFBTyxHQUNBWCxPQUFBQyxlQUFBVSxFQUFBLFdBQXlDVCxZQUFBLEVBQUFLLFVBQ3pDLEVBQUFFLEdBQUEsaUJBQUFGLEVBQUEsUUFBQU0sS0FBQU4sRUFBQXJCLEVBQUFVLEVBQUFlLEVB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LEVBQUEsR0FBQXNJLEVBQUF0SSxFQUFBLEdBU0EsU0FBQXVJLElBQ0FoRixFQUFBLFlBQUFpRixLQUFBLGlDQUNRMUgsT0FBQXVILEVBQUEsTUFBQXZILEdBQ0FBLE9BQUF3SCxFQUFBLGFBQUF4SCxLQUVSdUMsU0FBQXNFLGVBQUEsU0FBQU8sVUFBQSxNQVhBM0UsRUFBQSxXQUNBZ0YsSUFDQWxGLFNBQUFzRSxlQUFBLFNBQUFLLFFBQUEsV0FBNERPLEtBQzVEbEYsU0FBQXNFLGVBQUEsYUFBQUssUUFBQSxXQVVBLElBQ0FTLEtBQUFwRixTQUFBc0UsZUFBQSxnQkFDQXRHLE1BQUEsR0FDQW9ILEVBQUFDLFNBWkFyRixTQUFBc0UsZUFBQSxlQUFBSyxRQUFBLFdBZUF6RSxFQUFBLFlBQUFpRixLQUFBLHdDQUVBbkYsU0FBQXNFLGVBQUEsU0FBQU8sVUFBQSxzREFFQWxJLEVBQVEsR0FDUkEsRUFBUSxrQkMzQlJHLEVBQUFELFFBQUFrSSxRQUFBLHVCQ0FBakksRUFBQUQsUUFBQWtJLFFBQUEiLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VzQ29udGVudCI6WyIgXHQvLyBUaGUgbW9kdWxlIGNhY2hlXG4gXHR2YXIgaW5zdGFsbGVkTW9kdWxlcyA9IHt9O1xuXG4gXHQvLyBUaGUgcmVxdWlyZSBmdW5jdGlvblxuIFx0ZnVuY3Rpb24gX193ZWJwYWNrX3JlcXVpcmVfXyhtb2R1bGVJZCkge1xuXG4gXHRcdC8vIENoZWNrIGlmIG1vZHVsZSBpcyBpbiBjYWNoZVxuIFx0XHRpZihpbnN0YWxsZWRNb2R1bGVzW21vZHVsZUlkXSkge1xuIFx0XHRcdHJldHVybiBpbnN0YWxsZWRNb2R1bGVzW21vZHVsZUlkXS5leHBvcnRzO1xuIFx0XHR9XG4gXHRcdC8vIENyZWF0ZSBhIG5ldyBtb2R1bGUgKGFuZCBwdXQgaXQgaW50byB0aGUgY2FjaGUpXG4gXHRcdHZhciBtb2R1bGUgPSBpbnN0YWxsZWRNb2R1bGVzW21vZHVsZUlkXSA9IHtcbiBcdFx0XHRpOiBtb2R1bGVJZCxcbiBcdFx0XHRsOiBmYWxzZSxcbiBcdFx0XHRleHBvcnRzOiB7fVxuIFx0XHR9O1xuXG4gXHRcdC8vIEV4ZWN1dGUgdGhlIG1vZHVsZSBmdW5jdGlvblxuIFx0XHRtb2R1bGVzW21vZHVsZUlkXS5jYWxsKG1vZHVsZS5leHBvcnRzLCBtb2R1bGUsIG1vZHVsZS5leHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKTtcblxuIFx0XHQvLyBGbGFnIHRoZSBtb2R1bGUgYXMgbG9hZGVkXG4gXHRcdG1vZHVsZS5sID0gdHJ1ZTtcblxuIFx0XHQvLyBSZXR1cm4gdGhlIGV4cG9ydHMgb2YgdGhlIG1vZHVsZVxuIFx0XHRyZXR1cm4gbW9kdWxlLmV4cG9ydHM7XG4gXHR9XG5cblxuIFx0Ly8gZXhwb3NlIHRoZSBtb2R1bGVzIG9iamVjdCAoX193ZWJwYWNrX21vZHVsZXNfXylcbiBcdF9fd2VicGFja19yZXF1aXJlX18ubSA9IG1vZHVsZXM7XG5cbiBcdC8vIGV4cG9zZSB0aGUgbW9kdWxlIGNhY2hlXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLmMgPSBpbnN0YWxsZWRNb2R1bGVzO1xuXG4gXHQvLyBkZWZpbmUgZ2V0dGVyIGZ1bmN0aW9uIGZvciBoYXJtb255IGV4cG9ydHNcbiBcdF9fd2VicGFja19yZXF1aXJlX18uZCA9IGZ1bmN0aW9uKGV4cG9ydHMsIG5hbWUsIGdldHRlcikge1xuIFx0XHRpZighX193ZWJwYWNrX3JlcXVpcmVfXy5vKGV4cG9ydHMsIG5hbWUpKSB7XG4gXHRcdFx0T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIG5hbWUsIHsgZW51bWVyYWJsZTogdHJ1ZSwgZ2V0OiBnZXR0ZXIgfSk7XG4gXHRcdH1cbiBcdH07XG5cbiBcdC8vIGRlZmluZSBfX2VzTW9kdWxlIG9uIGV4cG9ydHNcbiBcdF9fd2VicGFja19yZXF1aXJlX18uciA9IGZ1bmN0aW9uKGV4cG9ydHMpIHtcbiBcdFx0aWYodHlwZW9mIFN5bWJvbCAhPT0gJ3VuZGVmaW5lZCcgJiYgU3ltYm9sLnRvU3RyaW5nVGFnKSB7XG4gXHRcdFx0T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFN5bWJvbC50b1N0cmluZ1RhZywgeyB2YWx1ZTogJ01vZHVsZScgfSk7XG4gXHRcdH1cbiBcdFx0T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsICdfX2VzTW9kdWxlJywgeyB2YWx1ZTogdHJ1ZSB9KTtcbiBcdH07XG5cbiBcdC8vIGNyZWF0ZSBhIGZha2UgbmFtZXNwYWNlIG9iamVjdFxuIFx0Ly8gbW9kZSAmIDE6IHZhbHVlIGlzIGEgbW9kdWxlIGlkLCByZXF1aXJlIGl0XG4gXHQvLyBtb2RlICYgMjogbWVyZ2UgYWxsIHByb3BlcnRpZXMgb2YgdmFsdWUgaW50byB0aGUgbnNcbiBcdC8vIG1vZGUgJiA0OiByZXR1cm4gdmFsdWUgd2hlbiBhbHJlYWR5IG5zIG9iamVjdFxuIFx0Ly8gbW9kZSAmIDh8MTogYmVoYXZlIGxpa2UgcmVxdWlyZVxuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy50ID0gZnVuY3Rpb24odmFsdWUsIG1vZGUpIHtcbiBcdFx0aWYobW9kZSAmIDEpIHZhbHVlID0gX193ZWJwYWNrX3JlcXVpcmVfXyh2YWx1ZSk7XG4gXHRcdGlmKG1vZGUgJiA4KSByZXR1cm4gdmFsdWU7XG4gXHRcdGlmKChtb2RlICYgNCkgJiYgdHlwZW9mIHZhbHVlID09PSAnb2JqZWN0JyAmJiB2YWx1ZSAmJiB2YWx1ZS5fX2VzTW9kdWxlKSByZXR1cm4gdmFsdWU7XG4gXHRcdHZhciBucyA9IE9iamVjdC5jcmVhdGUobnVsbCk7XG4gXHRcdF9fd2VicGFja19yZXF1aXJlX18ucihucyk7XG4gXHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShucywgJ2RlZmF1bHQnLCB7IGVudW1lcmFibGU6IHRydWUsIHZhbHVlOiB2YWx1ZSB9KTtcbiBcdFx0aWYobW9kZSAmIDIgJiYgdHlwZW9mIHZhbHVlICE9ICdzdHJpbmcnKSBmb3IodmFyIGtleSBpbiB2YWx1ZSkgX193ZWJwYWNrX3JlcXVpcmVfXy5kKG5zLCBrZXksIGZ1bmN0aW9uKGtleSkgeyByZXR1cm4gdmFsdWVba2V5XTsgfS5iaW5kKG51bGwsIGtleSkpO1xuIFx0XHRyZXR1cm4gbnM7XG4gXHR9O1xuXG4gXHQvLyBnZXREZWZhdWx0RXhwb3J0IGZ1bmN0aW9uIGZvciBjb21wYXRpYmlsaXR5IHdpdGggbm9uLWhhcm1vbnkgbW9kdWxlc1xuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5uID0gZnVuY3Rpb24obW9kdWxlKSB7XG4gXHRcdHZhciBnZXR0ZXIgPSBtb2R1bGUgJiYgbW9kdWxlLl9fZXNNb2R1bGUgP1xuIFx0XHRcdGZ1bmN0aW9uIGdldERlZmF1bHQoKSB7IHJldHVybiBtb2R1bGVbJ2RlZmF1bHQnXTsgfSA6XG4gXHRcdFx0ZnVuY3Rpb24gZ2V0TW9kdWxlRXhwb3J0cygpIHsgcmV0dXJuIG1vZHVsZTsgfTtcbiBcdFx0X193ZWJwYWNrX3JlcXVpcmVfXy5kKGdldHRlciwgJ2EnLCBnZXR0ZXIpO1xuIFx0XHRyZXR1cm4gZ2V0dGVyO1xuIFx0fTtcblxuIFx0Ly8gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLm8gPSBmdW5jdGlvbihvYmplY3QsIHByb3BlcnR5KSB7IHJldHVybiBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwob2JqZWN0LCBwcm9wZXJ0eSk7IH07XG5cbiBcdC8vIF9fd2VicGFja19wdWJsaWNfcGF0aF9fXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLnAgPSBcIlwiO1xuXG5cbiBcdC8vIExvYWQgZW50cnkgbW9kdWxlIGFuZCByZXR1cm4gZXhwb3J0c1xuIFx0cmV0dXJuIF9fd2VicGFja19yZXF1aXJlX18oX193ZWJwYWNrX3JlcXVpcmVfXy5zID0gNSk7XG4iLCJ2YXIgR2FtZSA9IC8qKiBAY2xhc3MgKi8gKGZ1bmN0aW9uICgpIHtcclxuICAgIGZ1bmN0aW9uIEdhbWUobmFtZSwgYXBwaWQsIHRodW1ibmFpbCwgbGF1bmNoZXIsIGxhdW5jaGVySUQsIGlzSW5zdGFsbGVkLCBsb2NhbFBhdGgpIHtcclxuICAgICAgICB0aGlzLm5hbWUgPSBuYW1lO1xyXG4gICAgICAgIHRoaXMuYXBwaWQgPSBhcHBpZDtcclxuICAgICAgICB0aGlzLnRodW1ibmFpbCA9IHRodW1ibmFpbDtcclxuICAgICAgICB0aGlzLmxhdW5jaGVyID0gbGF1bmNoZXI7XHJcbiAgICAgICAgdGhpcy5sYXVuY2hlcklEID0gbGF1bmNoZXJJRDtcclxuICAgICAgICB0aGlzLmlzSW5zdGFsbGVkID0gaXNJbnN0YWxsZWQ7XHJcbiAgICAgICAgdGhpcy5sb2NhbFBhdGggPSBsb2NhbFBhdGg7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gR2FtZTtcclxufSgpKTtcclxuZXhwb3J0IHsgR2FtZSB9O1xyXG5leHBvcnQgdmFyIGxhdW5jaGVyO1xyXG4oZnVuY3Rpb24gKGxhdW5jaGVyKSB7XHJcbiAgICBsYXVuY2hlcltsYXVuY2hlcltcIkxvY2FsT25seVwiXSA9IDBdID0gXCJMb2NhbE9ubHlcIjtcclxuICAgIGxhdW5jaGVyW2xhdW5jaGVyW1wiU3RlYW1cIl0gPSAxXSA9IFwiU3RlYW1cIjtcclxufSkobGF1bmNoZXIgfHwgKGxhdW5jaGVyID0ge30pKTtcclxuIiwiLy9pbXBvcnQge0dhbWV9IGZyb20gXCIuL0xpYnJhcnlcIlxyXG5pbXBvcnQgeyBHYW1lLCBsYXVuY2hlciB9IGZyb20gXCIuL0dhbWVcIjtcclxudmFyIGlwY1JlbmRlcmVyID0gcmVxdWlyZSgnZWxlY3Ryb24nKS5pcGNSZW5kZXJlcjtcclxudmFyIHNlbGVjdGVkSW5kZXggPSA1O1xyXG52YXIgY2Fyb3VzZWw7XHJcbnZhciBhbmdsZSA9IDA7XHJcbnZhciBjbGllbnRUb2tlbiA9IFwiNzY1NjExOTgxOTY0MzA2NTVcIjtcclxudmFyIFNlbGVjdGVkUmVjZW50R2FtZXMgPSBbXTtcclxudmFyIGxhc3RzZWxlY3RlZDtcclxuZXhwb3J0IGZ1bmN0aW9uIHNldHVwKCkge1xyXG4gICAgc2VsZWN0ZWRJbmRleCA9IDA7XHJcbiAgICAvL0dldCByZWNlbnQgcGxheWVkIGdhbWUgZnJvbSBzdGVhbS8vXHJcbiAgICBjYXJvdXNlbCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoXCIuY2Fyb3VzZWxcIik7XHJcbiAgICAkLmdldEpTT04oXCJodHRwOi8vYXBpLnN0ZWFtcG93ZXJlZC5jb20vSVBsYXllclNlcnZpY2UvR2V0UmVjZW50bHlQbGF5ZWRHYW1lcy92MDAwMS8/a2V5PTdDMjE4RThEMTM0N0MzQ0Q2Q0I4MTE3RTVFRDUzM0JDJnN0ZWFtaWQ9XCIgKyBjbGllbnRUb2tlbiArIFwiJmZvcm1hdD1qc29uXCIsIEpTT04sIGZ1bmN0aW9uIChkYXRhKSB7XHJcbiAgICAgICAgaWYgKGRhdGEucmVzcG9uc2UudG90YWxfY291bnQgPT0gMCkgeyAvLyBudWxsIGNoZWNrIHRvIHByZXZlbnQgZXJyb3IgdGhlcmUgaXMgbm8gcmVjZW50IGdhbWVcclxuICAgICAgICAgICAgY29uc29sZS5sb2coXCJubyByZWNlbnQgcGxheWVkIGdhbWVzXCIpO1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHZhciBTZWxlY3RlZFJlY2VudEdhbWVzID0gW107XHJcbiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBkYXRhLnJlc3BvbnNlLnRvdGFsX2NvdW50OyBpKyspIC8vT2JqZWN0LmtleXMoZGF0YS5yZXNwb25zZS5nYW1lc1swXSkgY29tcHRlIGxlIG5vbWJyZSBkZSBjbMOpIGEgcGFydGlyIGRlIDBcclxuICAgICAgICAge1xyXG4gICAgICAgICAgICB2YXIgZ2FtZSA9IGRhdGEucmVzcG9uc2UuZ2FtZXNbaV07XHJcbiAgICAgICAgICAgIFNlbGVjdGVkUmVjZW50R2FtZXNbaV0gPSBuZXcgR2FtZU1ldGEoZ2FtZS5hcHBpZCwgZ2FtZS5uYW1lLCBnYW1lLmltZ19sb2dvX3VybCk7XHJcbiAgICAgICAgICAgIGlmIChpICsgMSA9PSBkYXRhLnJlc3BvbnNlLnRvdGFsX2NvdW50KSB7XHJcbiAgICAgICAgICAgICAgICBpbmlDYWxsYmFjayhTZWxlY3RlZFJlY2VudEdhbWVzKTtcclxuICAgICAgICAgICAgfSAvL2xhdW5jaCBzY3JpcHQgdXNlciB2YXJpYWJsZSBhZnRlciBhbGwgY2FsbGJhY2tzIGFyZSBmaW5pc2hlZFxyXG4gICAgICAgIH1cclxuICAgIH0pO1xyXG59XHJcbmZ1bmN0aW9uIGluaUNhbGxiYWNrKFNlbGVjdGVkUmVjZW50R2FtZXMpIHtcclxuICAgIC8vQWRkIHJlY2VudCBwbGF5ZWQgZ2FtZSB0byBjYXJvdXNlbC8vXHJcbiAgICB2YXIgbGlzdCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoXCJjYXJvdXNlbF9fY2VsbFwiKTsgLy9hcyBhbnkgYmVjYXVzZSB3ZSB3YW50IGEgSFRNTGltYWdlIGNvbGxlY3Rpb24gYW5kIGh0bWxlbGVtZW50IGlzIG5vdCBnZW5lcmljXHJcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGxpc3QubGVuZ3RoOyBpKyspIC8vbG9vcCBpbnRvIGNhcm91c2VsX2NlbGwgdG8gYWRkIGV2ZW50IGxpc3RlbmVyICsgdGh1bWJcclxuICAgICB7XHJcbiAgICAgICAgaWYgKGkgPCBTZWxlY3RlZFJlY2VudEdhbWVzLmxlbmd0aCkge1xyXG4gICAgICAgICAgICBsaXN0W2ldLnNyYyA9IFwiaHR0cHM6Ly9zdGVhbWNkbi1hLmFrYW1haWhkLm5ldC9zdGVhbS9hcHBzL1wiICsgU2VsZWN0ZWRSZWNlbnRHYW1lc1tpXS5BcHBJZCArIFwiL2hlYWRlci5qcGdcIjtcclxuICAgICAgICAgICAgbGlzdFtpXS5kYXRhc2V0LmdhbWUgPSBKU09OLnN0cmluZ2lmeShuZXcgR2FtZShudWxsLCBTZWxlY3RlZFJlY2VudEdhbWVzW2ldLkFwcElkLnRvU3RyaW5nKCksIGxpc3RbaV0uc3JjbiwgbGF1bmNoZXIuU3RlYW0sIFwiU3RlYW1cIiwgbnVsbCwgbnVsbCkpO1xyXG4gICAgICAgICAgICBsaXN0W2ldLmlkID0gaS50b1N0cmluZygpO1xyXG4gICAgICAgICAgICBsaXN0W2ldLmFkZEV2ZW50TGlzdGVuZXIoXCJjbGlja1wiLCBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgICAgICAgICB2YXIgZXYgPSBldmVudC50YXJnZXQ7XHJcbiAgICAgICAgICAgICAgICByb3RhdGVDYXJvdXNlbChldiwgZmFsc2UpO1xyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIGxpc3RbaV0uY2xhc3NMaXN0LmFkZChcImRpc2FibGVkXCIpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIHZhciBlbCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ1VzZWxlc3MtZGl2Jyk7XHJcbiAgICBlbC5pZCA9IE1hdGgucm91bmQoU2VsZWN0ZWRSZWNlbnRHYW1lcy5sZW5ndGggLyAyKS50b1N0cmluZygpOyAvLyB0cmljayB0aGUgY2Fyb3VzZWxyb2F0ZSB0byB3b3JrIGV2ZW4gd2lob3V0IGEgVGFyZ2V0RXZlbnQgcmVmZXJlbmNlXHJcbiAgICByb3RhdGVDYXJvdXNlbChlbCwgZmFsc2UpO1xyXG4gICAgZWwucmVtb3ZlO1xyXG59XHJcbmZ1bmN0aW9uIHJvdGF0ZUNhcm91c2VsKHRhcmdldCwgYnlwYXNzKSB7XHJcbiAgICBpZiAobGFzdHNlbGVjdGVkID09IG51bGwpIHtcclxuICAgICAgICBsYXN0c2VsZWN0ZWQgPSB0YXJnZXQ7XHJcbiAgICB9XHJcbiAgICBpZiAobGFzdHNlbGVjdGVkICE9IHRhcmdldCkge1xyXG4gICAgICAgIGxhc3RzZWxlY3RlZC5jbGFzc0xpc3QucmVtb3ZlKFwiaGlnbGlnaHRcIik7XHJcbiAgICB9XHJcbiAgICBhbmdsZSA9IChzZWxlY3RlZEluZGV4IC0gdGFyZ2V0LmlkKSAqIDQwICsgYW5nbGU7IC8vKjQwIHRvIGNvbnZlcnQgaW4gYW5nbGUgc3RlcFxyXG4gICAgLy9MYXVuY2ggdGhlIGdhbWUgb24gdGhlIGZyb250IG9mIHRoZSBjYXJvdXNlbFxyXG4gICAgaWYgKHNlbGVjdGVkSW5kZXggPT0gdGFyZ2V0LmlkICYmIGJ5cGFzcyA9PSBmYWxzZSkgLy8gdGhlIGJ5cGFzcyBpcyBmb3IgaW5pXHJcbiAgICAge1xyXG4gICAgICAgIGlwY1JlbmRlcmVyLnNlbmQoJ0xhdW5jaEdhbWUnLCB0YXJnZXQuZGF0YXNldC5nYW1lKTtcclxuICAgICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICB0YXJnZXQuY2xhc3NMaXN0LmFkZChcImhpZ2xpZ2h0XCIpOyAvLyBtYWtlIHRoZSBjZW50cmFsIGNlbGwgYmlnZ2VyXHJcbiAgICBjYXJvdXNlbC5zdHlsZS50cmFuc2Zvcm0gPSBcInRyYW5zbGF0ZVooLTEwMDBweCkgcm90YXRlWShcIiArIGFuZ2xlICsgXCJkZWcpXCI7XHJcbiAgICBzZWxlY3RlZEluZGV4ID0gdGFyZ2V0LmlkO1xyXG4gICAgbGFzdHNlbGVjdGVkID0gdGFyZ2V0O1xyXG59XHJcbnZhciBHYW1lTWV0YSA9IC8qKiBAY2xhc3MgKi8gKGZ1bmN0aW9uICgpIHtcclxuICAgIGZ1bmN0aW9uIEdhbWVNZXRhKEFwcElkLCBuYW1lLCB0aHVtYikge1xyXG4gICAgICAgIHRoaXMuQXBwSWQgPSBBcHBJZDtcclxuICAgICAgICB0aGlzLm5hbWUgPSBuYW1lO1xyXG4gICAgICAgIHRoaXMudGh1bWIgPSB0aHVtYjtcclxuICAgIH1cclxuICAgIHJldHVybiBHYW1lTWV0YTtcclxufSgpKTtcclxuIiwiY29uc3QgZWxlY3Ryb24gPSByZXF1aXJlKFwiZWxlY3Ryb25cIik7XHJcbmNvbnN0IHBhdGggPSByZXF1aXJlKFwicGF0aFwiKTtcclxuY29uc3QgZnMgPSByZXF1aXJlKFwiZnNcIik7XHJcblxyXG5jbGFzcyBTdG9yZVxyXG57ICAgIFxyXG4gICAgY29uc3RydWN0b3IobmFtZSlcclxuICAgIHtcclxuICAgICAgICB0aGlzLnBhdGggPSBwYXRoLmpvaW4oKGVsZWN0cm9uLmFwcCB8fCBlbGVjdHJvbi5yZW1vdGUuYXBwKS5nZXRQYXRoKFwidXNlckRhdGFcIiksIG5hbWUgKyBcIi5qc29uXCIpO1xyXG4gICAgICAgIHRoaXMuZGF0YSA9IHJlYWRGaWxlKHRoaXMucGF0aCk7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0KGtleSlcclxuICAgIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5kYXRhW2tleV07XHJcbiAgICB9XHJcblxyXG4gICAgc2V0KGtleSwgdmFsdWUpXHJcbiAgICB7XHJcbiAgICAgICAgdGhpcy5kYXRhW2tleV0gPSB2YWx1ZTtcclxuICAgICAgICBmcy53cml0ZUZpbGVTeW5jKHRoaXMucGF0aCwgSlNPTi5zdHJpbmdpZnkodGhpcy5kYXRhKSk7XHJcbiAgICB9XHJcbn1cclxuXHJcbmZ1bmN0aW9uIHJlYWRGaWxlKHBhdGgpXHJcbntcclxuICAgIHRyeVxyXG4gICAge1xyXG4gICAgICAgIHJldHVybiBKU09OLnBhcnNlKGZzLnJlYWRGaWxlU3luYyhwYXRoKSk7XHJcbiAgICB9XHJcbiAgICBjYXRjaFxyXG4gICAge1xyXG4gICAgICAgIHJldHVybiB7fTtcclxuICAgIH1cclxufVxyXG5cclxubW9kdWxlLmV4cG9ydHMgPSBTdG9yZTsiLCJ2YXIgU3RvcmUgPSByZXF1aXJlKFwiLi4vanMvc3RvcmVcIik7XHJcbmltcG9ydCAqIGFzIFRva2VuTWFuYWdlciBmcm9tIFwiLi9Ub2tlbk1hbmFnZXJcIjtcclxuaW1wb3J0IHsgR2FtZSwgbGF1bmNoZXIgfSBmcm9tIFwiLi9HYW1lXCI7XHJcbmV4cG9ydCBmdW5jdGlvbiBMb2FkR2FtZXMoKSB7XHJcbiAgICB2YXIgU3RvcmUgPSByZXF1aXJlKFwiLi4vanMvc3RvcmVcIik7XHJcbiAgICB2YXIgdXNlckFnZW50ID0gbmF2aWdhdG9yLnVzZXJBZ2VudC50b0xvd2VyQ2FzZSgpO1xyXG4gICAgdmFyIGlzRWxlY3Ryb24gPSB1c2VyQWdlbnQuaW5kZXhPZihcIiBlbGVjdHJvbi9cIikgPiAtMTtcclxuICAgIGlmIChpc0VsZWN0cm9uKSB7XHJcbiAgICAgICAgdmFyIHN0b3JlID0gbmV3IFN0b3JlKFwiR2FtZXNcIik7XHJcbiAgICAgICAgcmV0dXJuIHN0b3JlLmdldChcImdhbWVzXCIpO1xyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgICAgY29uc29sZS5sb2coXCJBR0VOVCBJUyBOT1QgRUxFQ1RST04sIE5PIEhBTkRMSU5HIEZPUiBOT1dcIik7XHJcbiAgICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICB9XHJcbn1cclxuZXhwb3J0IGZ1bmN0aW9uIFVwZGF0ZUdhbWVzSlNPTigpIHtcclxuICAgIEFkZFN0ZWFtR2FtZXMoKTtcclxufVxyXG4vLyNyZWdpb24gU3RlYW1SZXF1ZXN0c1xyXG5mdW5jdGlvbiBBZGRTdGVhbUdhbWVzKCkge1xyXG4gICAgdmFyIHN0ZWFtVG9rZW4gPSBUb2tlbk1hbmFnZXIuZ2V0U3RlYW1Ub2tlbigpO1xyXG4gICAgJC5nZXQoXCJodHRwczovL2FwaS5zdGVhbXBvd2VyZWQuY29tL0lQbGF5ZXJTZXJ2aWNlL0dldE93bmVkR2FtZXMvdjEvXCIgK1xyXG4gICAgICAgIFwiP2tleT03QzIxOEU4RDEzNDdDM0NENkNCODExN0U1RUQ1MzNCQ1wiICtcclxuICAgICAgICBcIiZzdGVhbWlkPVwiICsgc3RlYW1Ub2tlbiArXHJcbiAgICAgICAgXCImaW5jbHVkZV9hcHBpbmZvPTFcIiArXHJcbiAgICAgICAgXCImaW5jbHVkZV9wbGF5ZWRfZnJlZV9nYW1lcz0xXCIgK1xyXG4gICAgICAgIFwiJmFwcGlkc19maWx0ZXI9JmZvcm1hdD1qc29uXCIsIGZ1bmN0aW9uIChkYXRhKSB7XHJcbiAgICAgICAgdmFyIGdhbWVzID0gW107XHJcbiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBkYXRhLnJlc3BvbnNlLmdhbWVfY291bnQ7IGkrKykge1xyXG4gICAgICAgICAgICB2YXIgZ2FtZURhdGEgPSBkYXRhLnJlc3BvbnNlLmdhbWVzW2ldO1xyXG4gICAgICAgICAgICB2YXIgdGh1bWJuYWlsID0gXCJodHRwczovL3N0ZWFtY2RuLWEuYWthbWFpaGQubmV0L3N0ZWFtL2FwcHMvXCIgKyBnYW1lRGF0YS5hcHBpZCArIFwiL2hlYWRlci5qcGdcIjtcclxuICAgICAgICAgICAgZ2FtZXNbaV0gPSBuZXcgR2FtZShnYW1lRGF0YS5uYW1lLCBnYW1lRGF0YS5hcHBpZCwgdGh1bWJuYWlsLCBsYXVuY2hlci5TdGVhbSwgbnVsbCwgdHJ1ZSwgbnVsbCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIC8vU2hvdWxkIHVzZSBhIGNvb2tpZSBpZiB0aGUgdXNlciBpcyBpbiB0aGUgYnJvd3NlclxyXG4gICAgICAgIHZhciBzdG9yZSA9IG5ldyBTdG9yZShcIkdhbWVzXCIpO1xyXG4gICAgICAgIHN0b3JlLnNldChcImdhbWVzXCIsIGdhbWVzKTsgLy9TSE9VTEROJ1QgRE8gSVQgTElLRSBUSEFULCBJdCBvdmVycmlkZSBldmVyeSBnYW1lcyBpbiB0aGUganNvbi5cclxuICAgIH0pO1xyXG59XHJcbi8vI2VuZHJlZ2lvblxyXG4iLCJleHBvcnQgZnVuY3Rpb24gZ2V0U3RlYW1Ub2tlbigpIHtcclxuICAgIHZhciB1c2VyQWdlbnQgPSBuYXZpZ2F0b3IudXNlckFnZW50LnRvTG93ZXJDYXNlKCk7XHJcbiAgICBjb25zb2xlLmxvZyhcIkFnZW50OiBcIiArIHVzZXJBZ2VudCk7XHJcbiAgICB2YXIgaXNFbGVjdHJvbiA9IHVzZXJBZ2VudC5pbmRleE9mKFwiIGVsZWN0cm9uL1wiKSA+IC0xO1xyXG4gICAgaWYgKGlzRWxlY3Ryb24pIHtcclxuICAgICAgICB2YXIgU3RvcmUgPSByZXF1aXJlKFwiLi4vanMvc3RvcmVcIik7XHJcbiAgICAgICAgdmFyIHRrblN0b3JlID0gbmV3IFN0b3JlKFwiYWNjb3VudFwiKTtcclxuICAgICAgICB2YXIgdGtuID0gdGtuU3RvcmUuZ2V0KFwic3RlYW1cIik7XHJcbiAgICAgICAgcmV0dXJuIHRrbiAhPSBudWxsID8gdGtuIDogXCI3NjU2MTE5ODI1MDIyMzE3NFwiO1xyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgICAgY29uc29sZS5sb2coXCJBR0VOVCBJUyBOT1QgRUxFQ1RST04sIE5PIEhBTkRMSU5HIEZPUiBOT1dcIik7XHJcbiAgICAgICAgcmV0dXJuIFwiNzY1NjExOTgyNTAyMjMxNzRcIjsgLy9BIGRlZmF1bHQgc3RlYW0gY2xpZW50IGlkIChmb3IgdGVzdGluZyBvbmx5KVxyXG4gICAgfVxyXG59XHJcbiIsImltcG9ydCB7IExvYWRHYW1lcywgVXBkYXRlR2FtZXNKU09OIH0gZnJvbSBcIi4vR2FtZUxvYWRlclwiO1xyXG52YXIgaXBjUmVuZGVyZXIgPSByZXF1aXJlKCdlbGVjdHJvbicpLmlwY1JlbmRlcmVyO1xyXG5leHBvcnQgZnVuY3Rpb24gcG9wdWxhdGVHcmlkKCkge1xyXG4gICAgdmFyIGdhbWVzID0gTG9hZEdhbWVzKCk7XHJcbiAgICBVcGRhdGVHYW1lc0pTT04oKTtcclxuICAgIHZhciBncmlkID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJsaWJyYXJ5XCIpO1xyXG4gICAgdmFyIF9sb29wXzEgPSBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgdmFyIGdhbWUgPSBnYW1lc1tpXTtcclxuICAgICAgICB2YXIgZ3JpZEh0bWwgPSBcIjxpbWcgc3JjPSdcIiArIGdhbWUudGh1bWJuYWlsICsgXCInLz4gPHA+XCIgKyBnYW1lLm5hbWUgKyBcIjwvcD5cIjtcclxuICAgICAgICB2YXIgZWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIik7XHJcbiAgICAgICAgZWxlbWVudC5jbGFzc05hbWUgPSBcImdhbWVcIjtcclxuICAgICAgICBlbGVtZW50Lm9uY2xpY2sgPSBmdW5jdGlvbiAoKSB7IG9uR2FtZUNsaWNrKGdhbWUpOyB9O1xyXG4gICAgICAgIGlmIChnYW1lLmlzSW5zdGFsbGVkKVxyXG4gICAgICAgICAgICBncmlkSHRtbCArPSAnPGltZyBzcmM9XCIuLi8uLi9kaXN0L2RyYXdhYmxlcy9pbnN0YWxsZWQuc3ZnXCIgc3R5bGU9XCJwb3NpdGlvbjogYWJzb2x1dGU7IHRvcDogMDsgcmlnaHQ6IDA7IHBhZGRpbmc6IDVweDtcIi8+JztcclxuICAgICAgICBlbGVtZW50LmlubmVySFRNTCA9IGdyaWRIdG1sO1xyXG4gICAgICAgIGlmIChncmlkICE9IG51bGwpXHJcbiAgICAgICAgICAgIGdyaWQuYXBwZW5kQ2hpbGQoZWxlbWVudCk7XHJcbiAgICB9O1xyXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBnYW1lcy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgIF9sb29wXzEoKTtcclxuICAgIH1cclxufVxyXG5mdW5jdGlvbiBvbkdhbWVDbGljayhnYW1lQ2xpY2tlZCkge1xyXG4gICAgaXBjUmVuZGVyZXIuc2VuZCgnTGF1bmNoR2FtZScsIGdhbWVDbGlja2VkKTtcclxufVxyXG4iLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJlbGVjdHJvblwiKTsiLCIvLyBpbXBvcnQgJCBmcm9tIFwianF1ZXJ5XCI7IC8vVXNpbmcgZ2xvYmFsIHNjb3BlIGpxdWVyeSBpbnN0ZWFkIGJlYWNhdXNlIGl0IG1ha2UgYSBodWdlIGZpbGUgaWYgd2UgdXNlIHRoaXMuXHJcbmltcG9ydCB7IHNldHVwIH0gZnJvbSBcIi4vQ2Fyb3VzZWxcIjtcclxuaW1wb3J0IHsgcG9wdWxhdGVHcmlkIH0gZnJvbSBcIi4vTGlicmFyeVwiO1xyXG4kKGZ1bmN0aW9uICgpIHtcclxuICAgIGhvbWUoKTtcclxuICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwidGl0bGVcIikub25jbGljayA9IGZ1bmN0aW9uICgpIHsgaG9tZSgpOyB9O1xyXG4gICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJzZWFyY2hCdG5cIikub25jbGljayA9IGZ1bmN0aW9uICgpIHsgb3BlblNlYXJjaCgpOyB9O1xyXG4gICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJzZXR0aW5nc0J0blwiKS5vbmNsaWNrID0gZnVuY3Rpb24gKCkgeyBvcGVuU2V0dGluZ3MoKTsgfTtcclxufSk7XHJcbmZ1bmN0aW9uIGhvbWUoKSB7XHJcbiAgICAkKFwiI2NvbnRlbnRcIikubG9hZChcImZyYWdtZW50cy9ob21lLmh0bWxcIiwgZnVuY3Rpb24gKCkge1xyXG4gICAgICAgIHNldHVwKCk7XHJcbiAgICAgICAgcG9wdWxhdGVHcmlkKCk7XHJcbiAgICB9KTtcclxuICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwidGl0bGVcIikuaW5uZXJIVE1MID0gXCJFQVVcIjtcclxufVxyXG5mdW5jdGlvbiBvcGVuU2VhcmNoKCkge1xyXG4gICAgdmFyIGlucHV0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJzZWFyY2hJbnB1dFwiKTtcclxuICAgIGlucHV0LnZhbHVlID0gXCJcIjtcclxuICAgIGlucHV0LmZvY3VzKCk7XHJcbn1cclxuZnVuY3Rpb24gb3BlblNldHRpbmdzKCkge1xyXG4gICAgJChcIiNjb250ZW50XCIpLmxvYWQoXCJmcmFnbWVudHMvc2V0dGluZ3MuaHRtbFwiLCBmdW5jdGlvbiAoKSB7XHJcbiAgICB9KTtcclxuICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwidGl0bGVcIikuaW5uZXJIVE1MID0gXCI8aSBjbGFzcz0naWNvbiBmYXMgZmEtYXJyb3ctbGVmdCc+PC9pPiAgU2V0dGluZ3NcIjtcclxufVxyXG5yZXF1aXJlKFwiLi9MaWJyYXJ5XCIpO1xyXG5yZXF1aXJlKFwiLi9DYXJvdXNlbFwiKTtcclxuIiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwicGF0aFwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJmc1wiKTsiXSwic291cmNlUm9vdCI6IiJ9
|