// <pre>
// Note: This script was compiled and minified from TypeScript. For a more readable version, see https://github.com/Eejit43/wikipedia-scripts/blob/main/scripts/ajax-undo.ts
"use strict";(()=>{var u=new mw.Api;async function x(e){return(await u.get({action:"query",meta:"allmessages",ammessages:e,amlang:mw.config.get("wgContentLanguage")})).query?.allmessages[0].content}function v(e,l){let n=e;for(let[s,o]of l.entries())n=n.replaceAll(`$${s+1}`,o);return n}var h=`#ajax-undo-loading{display:none;height:1.3em;line-height:1.5em;vertical-align:text-bottom;overflow:hidden}#ajax-undo-loading:after{display:inline-table;color:gray;text-align:left;white-space:pre;animation:ajax-undo-loading .8s steps(10) infinite;content:"\\280b\\a\\2819\\a\\2839\\a\\2838\\a\\283c\\a\\2834\\a\\2826\\a\\2827\\a\\2807\\a\\280f"}#ajax-undo-loading:not(.is-diff){margin:-.3em 3px 0}#ajax-undo-loading.is-diff{height:1.55em}#ajax-undo-loading.is-minerva:not(.is-diff){float:right;margin-top:0}#ajax-undo-loading.is-minerva.is-diff{margin:-.2em 3px}@keyframes ajax-undo-loading{to{transform:translateY(-15em)}}#ajax-undo-reason{display:none;margin-left:3px}#ajax-undo-reason.is-minerva{padding:revert;background:revert;border:revert}#ajax-undo-reason.is-minerva:not(.is-diff){float:right;height:26px}
`;mw.loader.using(["mediawiki.util"],()=>{let e=mw.config.get("wgDiffOldId");if(mw.config.get("wgAction")!=="history"&&!e)return;mw.util.addCSS(h);let l=mw.config.get("wgPageName"),n=mw.config.get("skin")==="minerva",s={awaitingClick:0,awaitingConfirmation:1,awaitingReload:2};for(let o of document.querySelectorAll(".mw-history-undo, .mw-diff-undo")){let g=o.querySelector("a");if(!g?.href){mw.notify("ajax-undo: Could not find undo link for a diff!",{type:"error"});continue}let f=new URL(g.href),i=document.createElement("span"),d=s.awaitingClick,a=document.createElement("a");a.textContent="ajax undo",a.href=f.href,n&&!e&&(a.style.marginLeft="1em"),a.addEventListener("click",async m=>{if(m.preventDefault(),d===s.awaitingClick)d=s.awaitingConfirmation,t.style.display="inline",t.focus(),a.textContent="confirm ajax undo";else if(d===s.awaitingConfirmation){d=s.awaitingReload,r.style.display="inline-block",a.style.color="gray",t.disabled=!0,n&&a.append(r);let c=f.searchParams.get("undo"),p=f.searchParams.get("undoafter");if(!c||!p){mw.notify("Could not find undo parameters in URL!",{type:"error"});return}let y=o.closest(e?"td":"li")?.querySelector(".mw-userlink bdi")?.textContent;if(!y){mw.notify("Could not find revision user!",{type:"error"});return}let k=await x("undo-summary")??"Undid revision [[Special:Diff/$1|$1]] by [[Special:Contributions/$2|$2]] ([[User talk:$2|talk]])",w=v(k,[c,y]);if(t.value.trim()&&(w+=`: ${t.value.trim()}`),!await u.postWithEditToken({action:"edit",title:l,undo:c,undoafter:p,summary:w}).catch((j,C)=>(mw.notify(`Error undoing revision: ${C?.error?.code??"Unknown error"} (${j})`,{type:"error"}),setTimeout(()=>{window.location.reload()},2e3),!1)))return;mw.notify("Revision successfully undone, reloading...",{type:"success"}),window.location.reload()}}),e&&i.append(document.createTextNode("(")),i.append(a);let r=document.createElement("span");r.id="ajax-undo-loading",e&&r.classList.add("is-diff"),n&&r.classList.add("is-minerva"),n||i.append(r);let t=document.createElement("input");t.type="text",t.id="ajax-undo-reason",e&&t.classList.add("is-diff"),n&&t.classList.add("is-minerva"),t.placeholder="Insert reason here...",t.addEventListener("keydown",m=>{m.key==="Enter"&&a.click()}),n&&!e?i.prepend(t):i.append(t),e&&i.append(document.createTextNode(")")),e?(o.after(i),o.after(document.createTextNode(" "))):n?o.parentElement?.before(i):o.parentElement?.after(i)}});})();
// </pre>
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vdXRpbGl0eS50cyIsICIuLi9zdHlsZXMvYWpheC11bmRvLmNzcyIsICIuLi9zY3JpcHRzL2FqYXgtdW5kby50cyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiaW1wb3J0IHR5cGUgeyBBcGlRdWVyeUFsbE1lc3NhZ2VzUGFyYW1zLCBBcGlRdWVyeVJldmlzaW9uc1BhcmFtcyB9IGZyb20gJ3R5cGVzLW1lZGlhd2lraS1hcGknO1xuaW1wb3J0IHR5cGUgeyBBbGxNZXNzYWdlc1Jlc3VsdCwgUGFnZVJldmlzaW9uc1Jlc3VsdCB9IGZyb20gJy4vZ2xvYmFsLXR5cGVzJztcblxuZXhwb3J0IGNvbnN0IGFwaSA9IG5ldyBtdy5BcGkoKTtcblxuLyoqXG4gKiBGZXRjaGVzIHRoZSBjb250ZW50IG9mIGEgZ2l2ZW4gcGFnZS5cbiAqIEBwYXJhbSB0aXRsZSBUaGUgdGl0bGUgdG8gZmV0Y2guXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBnZXRQYWdlQ29udGVudCh0aXRsZTogc3RyaW5nKSB7XG4gICAgcmV0dXJuIChcbiAgICAgICAgKGF3YWl0IGFwaS5nZXQoe1xuICAgICAgICAgICAgYWN0aW9uOiAncXVlcnknLFxuICAgICAgICAgICAgZm9ybWF0dmVyc2lvbjogJzInLFxuICAgICAgICAgICAgcHJvcDogJ3JldmlzaW9ucycsXG4gICAgICAgICAgICBydnByb3A6ICdjb250ZW50JyxcbiAgICAgICAgICAgIHJ2c2xvdHM6ICdtYWluJyxcbiAgICAgICAgICAgIHRpdGxlczogdGl0bGUsXG4gICAgICAgIH0gc2F0aXNmaWVzIEFwaVF1ZXJ5UmV2aXNpb25zUGFyYW1zKSkgYXMgUGFnZVJldmlzaW9uc1Jlc3VsdFxuICAgICkucXVlcnkucGFnZXNbMF0ucmV2aXNpb25zPy5bMF0uc2xvdHMubWFpbi5jb250ZW50LnRyaW0oKTtcbn1cblxuLyoqXG4gKiBHZXRzIGEgc3lzdGVtIG1lc3NhZ2UuXG4gKiBAcGFyYW0gbWVzc2FnZU5hbWUgVGhlIG5hbWUgb2YgdGhlIHN5c3RlbSBtZXNzYWdlLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZ2V0U3lzdGVtTWVzc2FnZShtZXNzYWdlTmFtZTogc3RyaW5nKSB7XG4gICAgcmV0dXJuIChcbiAgICAgICAgKGF3YWl0IGFwaS5nZXQoe1xuICAgICAgICAgICAgYWN0aW9uOiAncXVlcnknLFxuICAgICAgICAgICAgbWV0YTogJ2FsbG1lc3NhZ2VzJyxcbiAgICAgICAgICAgIGFtbWVzc2FnZXM6IG1lc3NhZ2VOYW1lLFxuICAgICAgICAgICAgYW1sYW5nOiBtdy5jb25maWcuZ2V0KCd3Z0NvbnRlbnRMYW5ndWFnZScpLFxuICAgICAgICB9IHNhdGlzZmllcyBBcGlRdWVyeUFsbE1lc3NhZ2VzUGFyYW1zKSkgYXMgQWxsTWVzc2FnZXNSZXN1bHRcbiAgICApLnF1ZXJ5Py5hbGxtZXNzYWdlc1swXS5jb250ZW50O1xufVxuXG4vKipcbiAqIEludGVycG9sYXRlcyBhIHN5c3RlbSBtZXNzYWdlIHdpdGggdmFsdWVzLlxuICogQHBhcmFtIG1lc3NhZ2UgVGhlIHN5c3RlbSBtZXNzYWdlIHRvIGludGVycG9sYXRlLlxuICogQHBhcmFtIHZhbHVlcyBUaGUgdmFsdWVzIHRvIGludGVycG9sYXRlIGludG8gdGhlIG1lc3NhZ2UuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpbnRlcnBvbGF0ZVN5c3RlbU1lc3NhZ2UobWVzc2FnZTogc3RyaW5nLCB2YWx1ZXM6IHN0cmluZ1tdKSB7XG4gICAgbGV0IHJlc3VsdCA9IG1lc3NhZ2U7XG5cbiAgICBmb3IgKGNvbnN0IFtpbmRleCwgdmFsdWVdIG9mIHZhbHVlcy5lbnRyaWVzKCkpIHJlc3VsdCA9IHJlc3VsdC5yZXBsYWNlQWxsKGAkJHtpbmRleCArIDF9YCwgdmFsdWUpO1xuXG4gICAgcmV0dXJuIHJlc3VsdDtcbn1cbiIsICIjYWpheC11bmRvLWxvYWRpbmd7ZGlzcGxheTpub25lO2hlaWdodDoxLjNlbTtsaW5lLWhlaWdodDoxLjVlbTt2ZXJ0aWNhbC1hbGlnbjp0ZXh0LWJvdHRvbTtvdmVyZmxvdzpoaWRkZW59I2FqYXgtdW5kby1sb2FkaW5nOmFmdGVye2Rpc3BsYXk6aW5saW5lLXRhYmxlO2NvbG9yOmdyYXk7dGV4dC1hbGlnbjpsZWZ0O3doaXRlLXNwYWNlOnByZTthbmltYXRpb246YWpheC11bmRvLWxvYWRpbmcgLjhzIHN0ZXBzKDEwKSBpbmZpbml0ZTtjb250ZW50OlwiXFwyODBiXFxhXFwyODE5XFxhXFwyODM5XFxhXFwyODM4XFxhXFwyODNjXFxhXFwyODM0XFxhXFwyODI2XFxhXFwyODI3XFxhXFwyODA3XFxhXFwyODBmXCJ9I2FqYXgtdW5kby1sb2FkaW5nOm5vdCguaXMtZGlmZil7bWFyZ2luOi0uM2VtIDNweCAwfSNhamF4LXVuZG8tbG9hZGluZy5pcy1kaWZme2hlaWdodDoxLjU1ZW19I2FqYXgtdW5kby1sb2FkaW5nLmlzLW1pbmVydmE6bm90KC5pcy1kaWZmKXtmbG9hdDpyaWdodDttYXJnaW4tdG9wOjB9I2FqYXgtdW5kby1sb2FkaW5nLmlzLW1pbmVydmEuaXMtZGlmZnttYXJnaW46LS4yZW0gM3B4fUBrZXlmcmFtZXMgYWpheC11bmRvLWxvYWRpbmd7dG97dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTE1ZW0pfX0jYWpheC11bmRvLXJlYXNvbntkaXNwbGF5Om5vbmU7bWFyZ2luLWxlZnQ6M3B4fSNhamF4LXVuZG8tcmVhc29uLmlzLW1pbmVydmF7cGFkZGluZzpyZXZlcnQ7YmFja2dyb3VuZDpyZXZlcnQ7Ym9yZGVyOnJldmVydH0jYWpheC11bmRvLXJlYXNvbi5pcy1taW5lcnZhOm5vdCguaXMtZGlmZil7ZmxvYXQ6cmlnaHQ7aGVpZ2h0OjI2cHh9XG4iLCAiaW1wb3J0IHR5cGUgeyBNZWRpYVdpa2lEYXRhRXJyb3IgfSBmcm9tICdAL2dsb2JhbC10eXBlcyc7XG5pbXBvcnQgeyBhcGksIGdldFN5c3RlbU1lc3NhZ2UsIGludGVycG9sYXRlU3lzdGVtTWVzc2FnZSB9IGZyb20gJ0AvdXRpbGl0eSc7XG5pbXBvcnQgY3NzQ29udGVudCBmcm9tICdAc3R5bGVzL2FqYXgtdW5kby5jc3MnIHdpdGggeyB0eXBlOiAnY3NzJyB9O1xuXG5tdy5sb2FkZXIudXNpbmcoWydtZWRpYXdpa2kudXRpbCddLCAoKSA9PiB7XG4gICAgY29uc3QgaXNEaWZmID0gbXcuY29uZmlnLmdldCgnd2dEaWZmT2xkSWQnKTtcblxuICAgIGlmIChtdy5jb25maWcuZ2V0KCd3Z0FjdGlvbicpICE9PSAnaGlzdG9yeScgJiYgIWlzRGlmZikgcmV0dXJuO1xuXG4gICAgbXcudXRpbC5hZGRDU1MoY3NzQ29udGVudCk7XG5cbiAgICBjb25zdCBwYWdlTmFtZSA9IG13LmNvbmZpZy5nZXQoJ3dnUGFnZU5hbWUnKTtcblxuICAgIGNvbnN0IGlzTWluZXJ2YSA9IG13LmNvbmZpZy5nZXQoJ3NraW4nKSA9PT0gJ21pbmVydmEnO1xuXG4gICAgY29uc3QgU1RBR0VTID0ge1xuICAgICAgICBhd2FpdGluZ0NsaWNrOiAwLFxuICAgICAgICBhd2FpdGluZ0NvbmZpcm1hdGlvbjogMSxcbiAgICAgICAgYXdhaXRpbmdSZWxvYWQ6IDIsXG4gICAgfTtcblxuICAgIGZvciAoY29uc3QgdW5kb1NwYW4gb2YgZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnLm13LWhpc3RvcnktdW5kbywgLm13LWRpZmYtdW5kbycpKSB7XG4gICAgICAgIGNvbnN0IHVuZG9MaW5rID0gdW5kb1NwYW4ucXVlcnlTZWxlY3RvcignYScpO1xuXG4gICAgICAgIGlmICghdW5kb0xpbms/LmhyZWYpIHtcbiAgICAgICAgICAgIG13Lm5vdGlmeSgnYWpheC11bmRvOiBDb3VsZCBub3QgZmluZCB1bmRvIGxpbmsgZm9yIGEgZGlmZiEnLCB7IHR5cGU6ICdlcnJvcicgfSk7XG4gICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHVuZG9VcmwgPSBuZXcgVVJMKHVuZG9MaW5rLmhyZWYpO1xuXG4gICAgICAgIGNvbnN0IHNwYW4gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzcGFuJyk7XG5cbiAgICAgICAgbGV0IHN0YWdlID0gU1RBR0VTLmF3YWl0aW5nQ2xpY2s7XG5cbiAgICAgICAgY29uc3QgYWpheFVuZG9MaW5rID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnYScpO1xuICAgICAgICBhamF4VW5kb0xpbmsudGV4dENvbnRlbnQgPSAnYWpheCB1bmRvJztcbiAgICAgICAgYWpheFVuZG9MaW5rLmhyZWYgPSB1bmRvVXJsLmhyZWY7XG4gICAgICAgIGlmIChpc01pbmVydmEgJiYgIWlzRGlmZikgYWpheFVuZG9MaW5rLnN0eWxlLm1hcmdpbkxlZnQgPSAnMWVtJztcbiAgICAgICAgYWpheFVuZG9MaW5rLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgYXN5bmMgKGV2ZW50KSA9PiB7XG4gICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuXG4gICAgICAgICAgICBpZiAoc3RhZ2UgPT09IFNUQUdFUy5hd2FpdGluZ0NsaWNrKSB7XG4gICAgICAgICAgICAgICAgc3RhZ2UgPSBTVEFHRVMuYXdhaXRpbmdDb25maXJtYXRpb247XG5cbiAgICAgICAgICAgICAgICByZWFzb25JbnB1dC5zdHlsZS5kaXNwbGF5ID0gJ2lubGluZSc7XG4gICAgICAgICAgICAgICAgcmVhc29uSW5wdXQuZm9jdXMoKTtcblxuICAgICAgICAgICAgICAgIGFqYXhVbmRvTGluay50ZXh0Q29udGVudCA9ICdjb25maXJtIGFqYXggdW5kbyc7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKHN0YWdlID09PSBTVEFHRVMuYXdhaXRpbmdDb25maXJtYXRpb24pIHtcbiAgICAgICAgICAgICAgICBzdGFnZSA9IFNUQUdFUy5hd2FpdGluZ1JlbG9hZDtcbiAgICAgICAgICAgICAgICBsb2FkaW5nU3Bpbm5lci5zdHlsZS5kaXNwbGF5ID0gJ2lubGluZS1ibG9jayc7XG4gICAgICAgICAgICAgICAgYWpheFVuZG9MaW5rLnN0eWxlLmNvbG9yID0gJ2dyYXknO1xuICAgICAgICAgICAgICAgIHJlYXNvbklucHV0LmRpc2FibGVkID0gdHJ1ZTtcblxuICAgICAgICAgICAgICAgIGlmIChpc01pbmVydmEpIGFqYXhVbmRvTGluay5hcHBlbmQobG9hZGluZ1NwaW5uZXIpO1xuXG4gICAgICAgICAgICAgICAgY29uc3QgdW5kb0lkID0gdW5kb1VybC5zZWFyY2hQYXJhbXMuZ2V0KCd1bmRvJyk7XG4gICAgICAgICAgICAgICAgY29uc3QgdW5kb0FmdGVyID0gdW5kb1VybC5zZWFyY2hQYXJhbXMuZ2V0KCd1bmRvYWZ0ZXInKTtcblxuICAgICAgICAgICAgICAgIGlmICghdW5kb0lkIHx8ICF1bmRvQWZ0ZXIpIHtcbiAgICAgICAgICAgICAgICAgICAgbXcubm90aWZ5KCdDb3VsZCBub3QgZmluZCB1bmRvIHBhcmFtZXRlcnMgaW4gVVJMIScsIHsgdHlwZTogJ2Vycm9yJyB9KTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGNvbnN0IHJldmlzaW9uVXNlciA9IHVuZG9TcGFuLmNsb3Nlc3QoaXNEaWZmID8gJ3RkJyA6ICdsaScpPy5xdWVyeVNlbGVjdG9yKCcubXctdXNlcmxpbmsgYmRpJyk/LnRleHRDb250ZW50O1xuXG4gICAgICAgICAgICAgICAgaWYgKCFyZXZpc2lvblVzZXIpIHtcbiAgICAgICAgICAgICAgICAgICAgbXcubm90aWZ5KCdDb3VsZCBub3QgZmluZCByZXZpc2lvbiB1c2VyIScsIHsgdHlwZTogJ2Vycm9yJyB9KTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGNvbnN0IHVuZG9TdW1tYXJ5VGVtcGxhdGUgPVxuICAgICAgICAgICAgICAgICAgICAoYXdhaXQgZ2V0U3lzdGVtTWVzc2FnZSgndW5kby1zdW1tYXJ5JykpID8/XG4gICAgICAgICAgICAgICAgICAgICdVbmRpZCByZXZpc2lvbiBbW1NwZWNpYWw6RGlmZi8kMXwkMV1dIGJ5IFtbU3BlY2lhbDpDb250cmlidXRpb25zLyQyfCQyXV0gKFtbVXNlciB0YWxrOiQyfHRhbGtdXSknO1xuXG4gICAgICAgICAgICAgICAgbGV0IHN1bW1hcnkgPSBpbnRlcnBvbGF0ZVN5c3RlbU1lc3NhZ2UodW5kb1N1bW1hcnlUZW1wbGF0ZSwgW3VuZG9JZCwgcmV2aXNpb25Vc2VyXSk7XG4gICAgICAgICAgICAgICAgaWYgKHJlYXNvbklucHV0LnZhbHVlLnRyaW0oKSkgc3VtbWFyeSArPSBgOiAke3JlYXNvbklucHV0LnZhbHVlLnRyaW0oKX1gO1xuXG4gICAgICAgICAgICAgICAgY29uc3Qgc3VjY2VzcyA9IGF3YWl0IGFwaVxuICAgICAgICAgICAgICAgICAgICAucG9zdFdpdGhFZGl0VG9rZW4oe1xuICAgICAgICAgICAgICAgICAgICAgICAgYWN0aW9uOiAnZWRpdCcsXG4gICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogcGFnZU5hbWUsXG4gICAgICAgICAgICAgICAgICAgICAgICB1bmRvOiB1bmRvSWQsXG4gICAgICAgICAgICAgICAgICAgICAgICB1bmRvYWZ0ZXI6IHVuZG9BZnRlcixcbiAgICAgICAgICAgICAgICAgICAgICAgIHN1bW1hcnksXG4gICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgICAgIC5jYXRjaCgoZXJyb3JDb2RlLCBlcnJvckluZm8pID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG13Lm5vdGlmeShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBgRXJyb3IgdW5kb2luZyByZXZpc2lvbjogJHsoZXJyb3JJbmZvIGFzIE1lZGlhV2lraURhdGFFcnJvcik/LmVycm9yPy5jb2RlID8/ICdVbmtub3duIGVycm9yJ30gKCR7ZXJyb3JDb2RlfSlgLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgdHlwZTogJ2Vycm9yJyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpbmRvdy5sb2NhdGlvbi5yZWxvYWQoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sIDIwMDApO1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgICAgIGlmICghc3VjY2VzcykgcmV0dXJuO1xuXG4gICAgICAgICAgICAgICAgbXcubm90aWZ5KCdSZXZpc2lvbiBzdWNjZXNzZnVsbHkgdW5kb25lLCByZWxvYWRpbmcuLi4nLCB7IHR5cGU6ICdzdWNjZXNzJyB9KTtcbiAgICAgICAgICAgICAgICB3aW5kb3cubG9jYXRpb24ucmVsb2FkKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuXG4gICAgICAgIGlmIChpc0RpZmYpIHNwYW4uYXBwZW5kKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKCcoJykpO1xuICAgICAgICBzcGFuLmFwcGVuZChhamF4VW5kb0xpbmspO1xuXG4gICAgICAgIGNvbnN0IGxvYWRpbmdTcGlubmVyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc3BhbicpO1xuICAgICAgICBsb2FkaW5nU3Bpbm5lci5pZCA9ICdhamF4LXVuZG8tbG9hZGluZyc7XG4gICAgICAgIGlmIChpc0RpZmYpIGxvYWRpbmdTcGlubmVyLmNsYXNzTGlzdC5hZGQoJ2lzLWRpZmYnKTtcbiAgICAgICAgaWYgKGlzTWluZXJ2YSkgbG9hZGluZ1NwaW5uZXIuY2xhc3NMaXN0LmFkZCgnaXMtbWluZXJ2YScpO1xuXG4gICAgICAgIGlmICghaXNNaW5lcnZhKSBzcGFuLmFwcGVuZChsb2FkaW5nU3Bpbm5lcik7XG5cbiAgICAgICAgY29uc3QgcmVhc29uSW5wdXQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdpbnB1dCcpO1xuICAgICAgICByZWFzb25JbnB1dC50eXBlID0gJ3RleHQnO1xuICAgICAgICByZWFzb25JbnB1dC5pZCA9ICdhamF4LXVuZG8tcmVhc29uJztcbiAgICAgICAgaWYgKGlzRGlmZikgcmVhc29uSW5wdXQuY2xhc3NMaXN0LmFkZCgnaXMtZGlmZicpO1xuICAgICAgICBpZiAoaXNNaW5lcnZhKSByZWFzb25JbnB1dC5jbGFzc0xpc3QuYWRkKCdpcy1taW5lcnZhJyk7XG4gICAgICAgIHJlYXNvbklucHV0LnBsYWNlaG9sZGVyID0gJ0luc2VydCByZWFzb24gaGVyZS4uLic7XG4gICAgICAgIHJlYXNvbklucHV0LmFkZEV2ZW50TGlzdGVuZXIoJ2tleWRvd24nLCAoZXZlbnQpID0+IHtcbiAgICAgICAgICAgIGlmIChldmVudC5rZXkgPT09ICdFbnRlcicpIGFqYXhVbmRvTGluay5jbGljaygpO1xuICAgICAgICB9KTtcblxuICAgICAgICBpZiAoaXNNaW5lcnZhICYmICFpc0RpZmYpIHNwYW4ucHJlcGVuZChyZWFzb25JbnB1dCk7XG4gICAgICAgIGVsc2Ugc3Bhbi5hcHBlbmQocmVhc29uSW5wdXQpO1xuXG4gICAgICAgIGlmIChpc0RpZmYpIHNwYW4uYXBwZW5kKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKCcpJykpO1xuXG4gICAgICAgIGlmIChpc0RpZmYpIHtcbiAgICAgICAgICAgIHVuZG9TcGFuLmFmdGVyKHNwYW4pO1xuICAgICAgICAgICAgdW5kb1NwYW4uYWZ0ZXIoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoJyAnKSk7XG4gICAgICAgIH0gZWxzZSBpZiAoaXNNaW5lcnZhKSB1bmRvU3Bhbi5wYXJlbnRFbGVtZW50Py5iZWZvcmUoc3Bhbik7XG4gICAgICAgIGVsc2UgdW5kb1NwYW4ucGFyZW50RWxlbWVudD8uYWZ0ZXIoc3Bhbik7XG4gICAgfVxufSk7XG4iXSwKICAibWFwcGluZ3MiOiAiOzs7bUJBR08sSUFBTUEsRUFBTSxJQUFJLEdBQUcsSUF1QjFCLGVBQXNCQyxFQUFpQkMsRUFBcUIsQ0FDeEQsT0FDSyxNQUFNQyxFQUFJLElBQUksQ0FDWCxPQUFRLFFBQ1Is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ZXNzYWdlTmFtZSIsICJhcGkiLCAiaW50ZXJwb2xhdGVTeXN0ZW1NZXNzYWdlIiwgIm1lc3NhZ2UiLCAidmFsdWVzIiwgInJlc3VsdCIsICJpbmRleCIsICJ2YWx1ZSIsICJhamF4X3VuZG9fZGVmYXVsdCIsICJpc0RpZmYiLCAiYWpheF91bmRvX2RlZmF1bHQiLCAicGFnZU5hbWUiLCAiaXNNaW5lcnZhIiwgIlNUQUdFUyIsICJ1bmRvU3BhbiIsICJ1bmRvTGluayIsICJ1bmRvVXJsIiwgInNwYW4iLCAic3RhZ2UiLCAiYWpheFVuZG9MaW5rIiwgImV2ZW50IiwgInJlYXNvbklucHV0IiwgImxvYWRpbmdTcGlubmVyIiwgInVuZG9JZCIsICJ1bmRvQWZ0ZXIiLCAicmV2aXNpb25Vc2VyIiwgInVuZG9TdW1tYXJ5VGVtcGxhdGUiLCAiZ2V0U3lzdGVtTWVzc2FnZSIsICJzdW1tYXJ5IiwgImludGVycG9sYXRlU3lzdGVtTWVzc2FnZSIsICJhcGkiLCAiZXJyb3JDb2RlIiwgImVycm9ySW5mbyJdCn0K