Jump to content

User:Eejit43/scripts/to-monitor-list.js

From Wikipedia, the free encyclopedia
Note: After saving, you have to bypass your browser's cache to see the changes. Google Chrome, Firefox, Microsoft Edge and Safari: Hold down the ⇧ Shift key and click the Reload toolbar button. For details and instructions about other browsers, see Wikipedia:Bypass your cache.
// <nowiki>
// Note: This script was compiled and minified from TypeScript. For a more readable version, see https://github.com/Eejit43/wikipedia-scripts/blob/main/scripts/to-monitor-list.ts

"use strict";class MonitoringListManager{api=new mw.Api;link;toCheck;totalToCheck;isRunning=!1;handledRequests=0;load(){mw.util.addCSS(`
.to-monitor-list-count {
    cursor: pointer;
}`);const i=document.querySelector(".mw-editsection").cloneNode(!0);this.link=document.createElement("a"),this.link.href="#",this.link.style.fontWeight="bold",this.link.textContent="Add missing counts",this.link.addEventListener("click",async r=>{if(r.preventDefault(),!this.isRunning){this.isRunning=!0;for(const e of document.querySelectorAll(".to-monitor-list-count"))e.id&&(e.innerHTML='<span style="color: #ed8e07; font-weight: bold">?</span>');await this.loadToCheckData();for(const e of this.toCheck.categories)this.handleCheck(e,async()=>{const t=await this.api.get({action:"query",list:"search",srinfo:"totalhits",srnamespace:this.getCategory(e),srsearch:`incategory:"${e.category}"`}).catch((s,n)=>(mw.notify(`An error occurred while trying to get category members: ${n?.error.info??"Unknown error"} (${s})`,{type:"error"}),null));if(t)return t.query.searchinfo.totalhits});for(const e of this.toCheck.searches)this.handleCheck(e,async()=>{const t=await this.api.get({action:"query",list:"search",srinfo:"totalhits",srnamespace:this.getCategory(e),srsearch:e.search}).catch((s,n)=>(mw.notify(`An error occurred while trying to get search results: ${n?.error.info??"Unknown error"} (${s})`,{type:"error"}),null));if(t)return t.query.searchinfo.totalhits});for(const e of this.toCheck.whatLinksHere)this.handleCheck(e,async()=>{const t=await this.api.get({action:"query",list:"backlinks",bllimit:500,blnamespace:this.getCategory(e),bltitle:e.title}).catch((s,n)=>(mw.notify(`An error occurred while trying to get backlinks: ${n?.error.info??"Unknown error"} (${s})`,{type:"error"}),null));if(t)return t.query.backlinks.length});for(const e of this.toCheck.transclusions)this.handleCheck(e,async()=>{const t=await this.api.get({action:"query",list:"embeddedin",eilimit:500,einamespace:this.getCategory(e),eititle:e.title}).catch((s,n)=>(mw.notify(`An error occurred while trying to get transclusions: ${n?.error.info??"Unknown error"} (${s})`,{type:"error"}),null));if(t)return t.query.embeddedin.length})}}),i.querySelector("a").replaceWith(this.link),document.querySelector("h2#Stuff_to_monitor + .mw-editsection").after(i);for(const r of document.querySelectorAll(".to-monitor-list-count"))r.addEventListener("click",()=>{r.innerHTML='<span style="color: #00733f">None</span>'})}async loadToCheckData(){this.toCheck=JSON.parse((await this.api.get({action:"query",formatversion:"2",prop:"revisions",rvprop:"content",rvslots:"main",titles:"User:Eejit43/scripts/to-monitor-list.json"})).query.pages[0].revisions[0].slots.main.content),this.totalToCheck=Object.values(this.toCheck).flat().length}async handleCheck(i,r){const e=await r();if(e===void 0)return;const t=document.querySelector(`#to-monitor-list-${i.id}`);if(!t)return mw.notify(`Failed to find element for ID "${i.id}"`);t.innerHTML=e===0?'<span style="color: #00733f">None</span>':`<b><span style="color: #bd2828">${e===500?"500+":e}</span></b>`,this.handledRequests++,this.link.textContent=`Add missing counts (${this.handledRequests}/${this.totalToCheck} loaded)`,this.handledRequests===this.totalToCheck&&setTimeout(()=>{this.isRunning=!1,this.handledRequests=0,this.link.textContent="Add missing counts"},1e3)}getCategory({namespace:i,notNamespace:r}){if(!i&&!r)return 0;if(i){const e=Object.entries(mw.config.get("wgFormattedNamespaces")).find(([,t])=>t===i);return e?Number.parseInt(e[0]):0}else return Object.entries(mw.config.get("wgFormattedNamespaces")).filter(([,e])=>r!==(e||"Article")).map(([e])=>Number.parseInt(e))}}mw.loader.using(["mediawiki.util"],()=>{mw.config.get("wgPageName")==="User:Eejit43"&&new MonitoringListManager().load()});

// </nowiki>
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vc2NyaXB0cy90by1tb25pdG9yLWxpc3QudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbImltcG9ydCB7IEJhY2tsaW5rc1Jlc3VsdCwgRW1iZWRkZWRpblJlc3VsdCwgTWVkaWFXaWtpRGF0YUVycm9yLCBQYWdlUmV2aXNpb25zUmVzdWx0LCBTZWFyY2hSZXN1bHQgfSBmcm9tICcuLi9nbG9iYWwtdHlwZXMnO1xuaW1wb3J0IHsgQXBpUXVlcnlCYWNrbGlua3NQYXJhbXMsIEFwaVF1ZXJ5UmV2aXNpb25zUGFyYW1zLCBBcGlRdWVyeVNlYXJjaFBhcmFtcyB9IGZyb20gJy4uL25vZGVfbW9kdWxlcy90eXBlcy1tZWRpYXdpa2kvYXBpX3BhcmFtcy9pbmRleCc7XG5cbmludGVyZmFjZSBTZWFyY2hEYXRhIHtcbiAgICBjYXRlZ29yaWVzOiB7IGlkOiBzdHJpbmc7IGNhdGVnb3J5OiBzdHJpbmc7IG5hbWVzcGFjZT86IHN0cmluZzsgbm90TmFtZXNwYWNlPzogc3RyaW5nIH1bXTtcbiAgICBzZWFyY2hlczogeyBpZDogc3RyaW5nOyBzZWFyY2g6IHN0cmluZzsgbmFtZXNwYWNlPzogc3RyaW5nOyBub3ROYW1lc3BhY2U/OiBzdHJpbmcgfVtdO1xuICAgIHdoYXRMaW5rc0hlcmU6IHsgaWQ6IHN0cmluZzsgdGl0bGU6IHN0cmluZzsgbmFtZXNwYWNlPzogc3RyaW5nOyBub3ROYW1lc3BhY2U/OiBzdHJpbmcgfVtdO1xuICAgIHRyYW5zY2x1c2lvbnM6IHsgaWQ6IHN0cmluZzsgdGl0bGU6IHN0cmluZzsgbmFtZXNwYWNlPzogc3RyaW5nOyBub3ROYW1lc3BhY2U/OiBzdHJpbmcgfVtdO1xufVxuXG50eXBlIFNlYXJjaERhdGFDaGVjayA9IFNlYXJjaERhdGFbJ2NhdGVnb3JpZXMnXVswXSB8IFNlYXJjaERhdGFbJ3NlYXJjaGVzJ11bMF0gfCBTZWFyY2hEYXRhWyd3aGF0TGlua3NIZXJlJ11bMF0gfCBTZWFyY2hEYXRhWyd0cmFuc2NsdXNpb25zJ11bMF07XG5cbi8qKlxuICogQW4gaW5zdGFuY2Ugb2YgdGhpcyBjbGFzcyBoYW5kbGVzIHRoZSBlbnRpcmUgZnVuY3Rpb25hbGl0eSBvZiB0aGUgdG8tbW9uaXRvci1saXN0IHNjcmlwdC5cbiAqL1xuY2xhc3MgTW9uaXRvcmluZ0xpc3RNYW5hZ2VyIHtcbiAgICBwcml2YXRlIGFwaSA9IG5ldyBtdy5BcGkoKTtcblxuICAgIHByaXZhdGUgbGluayE6IEhUTUxBbmNob3JFbGVtZW50O1xuXG4gICAgcHJpdmF0ZSB0b0NoZWNrITogU2VhcmNoRGF0YTtcbiAgICBwcml2YXRlIHRvdGFsVG9DaGVjayE6IG51bWJlcjtcblxuICAgIHByaXZhdGUgaXNSdW5uaW5nID0gZmFsc2U7XG5cbiAgICBwcml2YXRlIGhhbmRsZWRSZXF1ZXN0cyA9IDA7XG5cbiAgICAvKipcbiAgICAgKiBMb2FkcyB0aGUgXCJBZGQgbWlzc2luZyBjb3VudHNcIiBsaW5rIGVsZW1lbnQuXG4gICAgICovXG4gICAgcHVibGljIGxvYWQoKSB7XG4gICAgICAgIG13LnV0aWwuYWRkQ1NTKGBcbi50by1tb25pdG9yLWxpc3QtY291bnQge1xuICAgIGN1cnNvcjogcG9pbnRlcjtcbn1gKTtcblxuICAgICAgICBjb25zdCBmdWxsTGlua0VsZW1lbnQgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcubXctZWRpdHNlY3Rpb24nKSEuY2xvbmVOb2RlKHRydWUpIGFzIEhUTUxTcGFuRWxlbWVudDtcblxuICAgICAgICB0aGlzLmxpbmsgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdhJyk7XG4gICAgICAgIHRoaXMubGluay5ocmVmID0gJyMnO1xuICAgICAgICB0aGlzLmxpbmsuc3R5bGUuZm9udFdlaWdodCA9ICdib2xkJztcbiAgICAgICAgdGhpcy5saW5rLnRleHRDb250ZW50ID0gJ0FkZCBtaXNzaW5nIGNvdW50cyc7XG4gICAgICAgIHRoaXMubGluay5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIGFzeW5jIChldmVudCkgPT4ge1xuICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcblxuICAgICAgICAgICAgaWYgKHRoaXMuaXNSdW5uaW5nKSByZXR1cm47XG4gICAgICAgICAgICB0aGlzLmlzUnVubmluZyA9IHRydWU7XG5cbiAgICAgICAgICAgIGZvciAoY29uc3QgZWxlbWVudCBvZiBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCcudG8tbW9uaXRvci1saXN0LWNvdW50JykpIGlmIChlbGVtZW50LmlkKSBlbGVtZW50LmlubmVySFRNTCA9ICc8c3BhbiBzdHlsZT1cImNvbG9yOiAjZWQ4ZTA3OyBmb250LXdlaWdodDogYm9sZFwiPj88L3NwYW4+JztcblxuICAgICAgICAgICAgYXdhaXQgdGhpcy5sb2FkVG9DaGVja0RhdGEoKTtcblxuICAgICAgICAgICAgZm9yIChjb25zdCBjaGVjayBvZiB0aGlzLnRvQ2hlY2suY2F0ZWdvcmllcylcbiAgICAgICAgICAgICAgICB0aGlzLmhhbmRsZUNoZWNrKGNoZWNrLCBhc3luYyAoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGRhdGE6IFNlYXJjaFJlc3VsdCB8IG51bGwgPSBhd2FpdCB0aGlzLmFwaVxuICAgICAgICAgICAgICAgICAgICAgICAgLmdldCh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYWN0aW9uOiAncXVlcnknLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpc3Q6ICdzZWFyY2gnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNyaW5mbzogJ3RvdGFsaGl0cycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3JuYW1lc3BhY2U6IHRoaXMuZ2V0Q2F0ZWdvcnkoY2hlY2spLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNyc2VhcmNoOiBgaW5jYXRlZ29yeTpcIiR7Y2hlY2suY2F0ZWdvcnl9XCJgLFxuICAgICAgICAgICAgICAgICAgICAgICAgfSBzYXRpc2ZpZXMgQXBpUXVlcnlTZWFyY2hQYXJhbXMpXG4gICAgICAgICAgICAgICAgICAgICAgICAuY2F0Y2goKGVycm9yQ29kZTogc3RyaW5nLCBlcnJvckluZm86IE1lZGlhV2lraURhdGFFcnJvcikgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG13Lm5vdGlmeShgQW4gZXJyb3Igb2NjdXJyZWQgd2hpbGUgdHJ5aW5nIHRvIGdldCBjYXRlZ29yeSBtZW1iZXJzOiAke2Vycm9ySW5mbz8uZXJyb3IuaW5mbyA/PyAnVW5rbm93biBlcnJvcid9ICgke2Vycm9yQ29kZX0pYCwgeyB0eXBlOiAnZXJyb3InIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgIGlmICghZGF0YSkgcmV0dXJuO1xuXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiAoZGF0YSBhcyBTZWFyY2hSZXN1bHQpLnF1ZXJ5LnNlYXJjaGluZm8udG90YWxoaXRzO1xuICAgICAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICBmb3IgKGNvbnN0IGNoZWNrIG9mIHRoaXMudG9DaGVjay5zZWFyY2hlcylcbiAgICAgICAgICAgICAgICB0aGlzLmhhbmRsZUNoZWNrKGNoZWNrLCBhc3luYyAoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGRhdGE6IFNlYXJjaFJlc3VsdCB8IG51bGwgPSBhd2FpdCB0aGlzLmFwaVxuICAgICAgICAgICAgICAgICAgICAgICAgLmdldCh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYWN0aW9uOiAncXVlcnknLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpc3Q6ICdzZWFyY2gnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNyaW5mbzogJ3RvdGFsaGl0cycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3JuYW1lc3BhY2U6IHRoaXMuZ2V0Q2F0ZWdvcnkoY2hlY2spLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNyc2VhcmNoOiBjaGVjay5zZWFyY2gsXG4gICAgICAgICAgICAgICAgICAgICAgICB9IHNhdGlzZmllcyBBcGlRdWVyeVNlYXJjaFBhcmFtcylcbiAgICAgICAgICAgICAgICAgICAgICAgIC5jYXRjaCgoZXJyb3JDb2RlOiBzdHJpbmcsIGVycm9ySW5mbzogTWVkaWFXaWtpRGF0YUVycm9yKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbXcubm90aWZ5KGBBbiBlcnJvciBvY2N1cnJlZCB3aGlsZSB0cnlpbmcgdG8gZ2V0IHNlYXJjaCByZXN1bHRzOiAke2Vycm9ySW5mbz8uZXJyb3IuaW5mbyA/PyAnVW5rbm93biBlcnJvcid9ICgke2Vycm9yQ29kZX0pYCwgeyB0eXBlOiAnZXJyb3InIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgIGlmICghZGF0YSkgcmV0dXJuO1xuXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiAoZGF0YSBhcyBTZWFyY2hSZXN1bHQpLnF1ZXJ5LnNlYXJjaGluZm8udG90YWxoaXRzO1xuICAgICAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICBmb3IgKGNvbnN0IGNoZWNrIG9mIHRoaXMudG9DaGVjay53aGF0TGlua3NIZXJlKVxuICAgICAgICAgICAgICAgIHRoaXMuaGFuZGxlQ2hlY2soY2hlY2ssIGFzeW5jICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgZGF0YTogQmFja2xpbmtzUmVzdWx0IHwgbnVsbCA9IGF3YWl0IHRoaXMuYXBpXG4gICAgICAgICAgICAgICAgICAgICAgICAuZ2V0KHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhY3Rpb246ICdxdWVyeScsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGlzdDogJ2JhY2tsaW5rcycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYmxsaW1pdDogNTAwLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJsbmFtZXNwYWNlOiB0aGlzLmdldENhdGVnb3J5KGNoZWNrKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBibHRpdGxlOiBjaGVjay50aXRsZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIH0gc2F0aXNmaWVzIEFwaVF1ZXJ5QmFja2xpbmtzUGFyYW1zKVxuICAgICAgICAgICAgICAgICAgICAgICAgLmNhdGNoKChlcnJvckNvZGU6IHN0cmluZywgZXJyb3JJbmZvOiBNZWRpYVdpa2lEYXRhRXJyb3IpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtdy5ub3RpZnkoYEFuIGVycm9yIG9jY3VycmVkIHdoaWxlIHRyeWluZyB0byBnZXQgYmFja2xpbmtzOiAke2Vycm9ySW5mbz8uZXJyb3IuaW5mbyA/PyAnVW5rbm93biBlcnJvcid9ICgke2Vycm9yQ29kZX0pYCwgeyB0eXBlOiAnZXJyb3InIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgIGlmICghZGF0YSkgcmV0dXJuO1xuXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiAoZGF0YSBhcyBCYWNrbGlua3NSZXN1bHQpLnF1ZXJ5LmJhY2tsaW5rcy5sZW5ndGg7XG4gICAgICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgIGZvciAoY29uc3QgY2hlY2sgb2YgdGhpcy50b0NoZWNrLnRyYW5zY2x1c2lvbnMpXG4gICAgICAgICAgICAgICAgdGhpcy5oYW5kbGVDaGVjayhjaGVjaywgYXN5bmMgKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBkYXRhOiBFbWJlZGRlZGluUmVzdWx0IHwgbnVsbCA9IGF3YWl0IHRoaXMuYXBpXG4gICAgICAgICAgICAgICAgICAgICAgICAuZ2V0KHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhY3Rpb246ICdxdWVyeScsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGlzdDogJ2VtYmVkZGVkaW4nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVpbGltaXQ6IDUwMCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlaW5hbWVzcGFjZTogdGhpcy5nZXRDYXRlZ29yeShjaGVjayksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZWl0aXRsZTogY2hlY2sudGl0bGUsXG4gICAgICAgICAgICAgICAgICAgICAgICB9IHNhdGlzZmllcyBBcGlRdWVyeUJhY2tsaW5rc1BhcmFtcylcbiAgICAgICAgICAgICAgICAgICAgICAgIC5jYXRjaCgoZXJyb3JDb2RlOiBzdHJpbmcsIGVycm9ySW5mbzogTWVkaWFXaWtpRGF0YUVycm9yKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbXcubm90aWZ5KGBBbiBlcnJvciBvY2N1cnJlZCB3aGlsZSB0cnlpbmcgdG8gZ2V0IHRyYW5zY2x1c2lvbnM6ICR7ZXJyb3JJbmZvPy5lcnJvci5pbmZvID8/ICdVbmtub3duIGVycm9yJ30gKCR7ZXJyb3JDb2RlfSlgLCB7IHR5cGU6ICdlcnJvcicgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKCFkYXRhKSByZXR1cm47XG5cbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIChkYXRhIGFzIEVtYmVkZGVkaW5SZXN1bHQpLnF1ZXJ5LmVtYmVkZGVkaW4ubGVuZ3RoO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcblxuICAgICAgICBmdWxsTGlua0VsZW1lbnQucXVlcnlTZWxlY3RvcignYScpIS5yZXBsYWNlV2l0aCh0aGlzLmxpbmspO1xuXG4gICAgICAgIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJ2gyI1N0dWZmX3RvX21vbml0b3IgKyAubXctZWRpdHNlY3Rpb24nKSEuYWZ0ZXIoZnVsbExpbmtFbGVtZW50KTtcblxuICAgICAgICBmb3IgKGNvbnN0IGVsZW1lbnQgb2YgZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnLnRvLW1vbml0b3ItbGlzdC1jb3VudCcpKVxuICAgICAgICAgICAgZWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsICgpID0+IHtcbiAgICAgICAgICAgICAgICBlbGVtZW50LmlubmVySFRNTCA9ICc8c3BhbiBzdHlsZT1cImNvbG9yOiAjMDA3MzNmXCI+Tm9uZTwvc3Bhbj4nO1xuICAgICAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogTG9hZHMgdGhlIGRhdGEgb2YgY2hlY2tzIHRvIGhhbmRsZS5cbiAgICAgKi9cbiAgICBwdWJsaWMgYXN5bmMgbG9hZFRvQ2hlY2tEYXRhKCkge1xuICAgICAgICB0aGlzLnRvQ2hlY2sgPSBKU09OLnBhcnNlKFxuICAgICAgICAgICAgKFxuICAgICAgICAgICAgICAgIChhd2FpdCB0aGlzLmFwaS5nZXQoe1xuICAgICAgICAgICAgICAgICAgICBhY3Rpb246ICdxdWVyeScsXG4gICAgICAgICAgICAgICAgICAgIGZvcm1hdHZlcnNpb246ICcyJyxcbiAgICAgICAgICAgICAgICAgICAgcHJvcDogJ3JldmlzaW9ucycsXG4gICAgICAgICAgICAgICAgICAgIHJ2cHJvcDogJ2NvbnRlbnQnLFxuICAgICAgICAgICAgICAgICAgICBydnNsb3RzOiAnbWFpbicsXG4gICAgICAgICAgICAgICAgICAgIHRpdGxlczogJ1VzZXI6RWVqaXQ0My9zY3JpcHRzL3RvLW1vbml0b3ItbGlzdC5qc29uJyxcbiAgICAgICAgICAgICAgICB9IHNhdGlzZmllcyBBcGlRdWVyeVJldmlzaW9uc1BhcmFtcykpIGFzIFBhZ2VSZXZpc2lvbnNSZXN1bHRcbiAgICAgICAgICAgICkucXVlcnkucGFnZXNbMF0ucmV2aXNpb25zWzBdLnNsb3RzLm1haW4uY29udGVudCxcbiAgICAgICAgKSBhcyBTZWFyY2hEYXRhO1xuXG4gICAgICAgIHRoaXMudG90YWxUb0NoZWNrID0gT2JqZWN0LnZhbHVlcyh0aGlzLnRvQ2hlY2spLmZsYXQoKS5sZW5ndGg7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogSGFuZGxlcyBhIGdpdmVuIGNoZWNrLlxuICAgICAqIEBwYXJhbSBjaGVjayBUaGUgY2hlY2sgZGF0YSB0byBoYW5kbGUuXG4gICAgICogQHBhcmFtIGhhbmRsZXIgVGhlIGhhbmRsZXIgdG8gZmluZCB0aGUgY291bnQgZnJvbSBhIGNoZWNrLlxuICAgICAqL1xuICAgIHByaXZhdGUgYXN5bmMgaGFuZGxlQ2hlY2soY2hlY2s6IFNlYXJjaERhdGFDaGVjaywgaGFuZGxlcjogKCkgPT4gUHJvbWlzZTxudW1iZXIgfCB2b2lkPikge1xuICAgICAgICBjb25zdCBjb3VudCA9IGF3YWl0IGhhbmRsZXIoKTtcbiAgICAgICAgaWYgKGNvdW50ID09PSB1bmRlZmluZWQpIHJldHVybjtcblxuICAgICAgICBjb25zdCBlbGVtZW50ID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcihgI3RvLW1vbml0b3ItbGlzdC0ke2NoZWNrLmlkfWApO1xuICAgICAgICBpZiAoIWVsZW1lbnQpIHJldHVybiBtdy5ub3RpZnkoYEZhaWxlZCB0byBmaW5kIGVsZW1lbnQgZm9yIElEIFwiJHtjaGVjay5pZH1cImApO1xuICAgICAgICBlbGVtZW50LmlubmVySFRNTCA9IGNvdW50ID09PSAwID8gJzxzcGFuIHN0eWxlPVwiY29sb3I6ICMwMDczM2ZcIj5Ob25lPC9zcGFuPicgOiBgPGI+PHNwYW4gc3R5bGU9XCJjb2xvcjogI2JkMjgyOFwiPiR7Y291bnQgPT09IDUwMCA/ICc1MDArJyA6IGNvdW50fTwvc3Bhbj48L2I+YDtcblxuICAgICAgICB0aGlzLmhhbmRsZWRSZXF1ZXN0cysrO1xuICAgICAgICB0aGlzLmxpbmsudGV4dENvbnRlbnQgPSBgQWRkIG1pc3NpbmcgY291bnRzICgke3RoaXMuaGFuZGxlZFJlcXVlc3RzfS8ke3RoaXMudG90YWxUb0NoZWNrfSBsb2FkZWQpYDtcblxuICAgICAgICBpZiAodGhpcy5oYW5kbGVkUmVxdWVzdHMgPT09IHRoaXMudG90YWxUb0NoZWNrKVxuICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5pc1J1bm5pbmcgPSBmYWxzZTtcblxuICAgICAgICAgICAgICAgIHRoaXMuaGFuZGxlZFJlcXVlc3RzID0gMDtcbiAgICAgICAgICAgICAgICB0aGlzLmxpbmsudGV4dENvbnRlbnQgPSAnQWRkIG1pc3NpbmcgY291bnRzJztcbiAgICAgICAgICAgIH0sIDEwMDApO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFBhcnNlcyB0aGUgc2VhcmNoZWQgY2F0ZWdvcmllcyBmcm9tIHRoZSBjaGVjayBvYmplY3QuXG4gICAgICogQHBhcmFtIGNoZWNrIFRoZSBjaGVjayBvYmplY3QuXG4gICAgICogQHBhcmFtIGNoZWNrLm5hbWVzcGFjZSBUaGUgbmFtZXNwYWNlIHRvIHNlYXJjaCBpbi5cbiAgICAgKiBAcGFyYW0gY2hlY2subm90TmFtZXNwYWNlIFRoZSBuYW1lc3BhY2UgdG8gZXhjbHVkZSBmcm9tIHRoZSBzZWFyY2guXG4gICAgICogQHJldHVybnMgVGhlIGNhdGVnb3J5IElEIG9yIGxpc3Qgb2YgY2F0ZWdvcnkgSURzIChzZXBhcmF0ZWQgYnkgJ3wnKS5cbiAgICAgKi9cbiAgICBwcml2YXRlIGdldENhdGVnb3J5KHsgbmFtZXNwYWNlLCBub3ROYW1lc3BhY2UgfTogeyBuYW1lc3BhY2U/OiBzdHJpbmc7IG5vdE5hbWVzcGFjZT86IHN0cmluZyB9KSB7XG4gICAgICAgIGlmICghbmFtZXNwYWNlICYmICFub3ROYW1lc3BhY2UpIHJldHVybiAwO1xuICAgICAgICBlbHNlIGlmIChuYW1lc3BhY2UpIHtcbiAgICAgICAgICAgIGNvbnN0IGZvdW5kTmFtZXNwYWNlID0gT2JqZWN0LmVudHJpZXMobXcuY29uZmlnLmdldCgnd2dGb3JtYXR0ZWROYW1lc3BhY2VzJykpLmZpbmQoKFssIG5hbWVzcGFjZU5hbWVdKSA9PiBuYW1lc3BhY2VOYW1lID09PSBuYW1lc3BhY2UpO1xuXG4gICAgICAgICAgICByZXR1cm4gZm91bmROYW1lc3BhY2UgPyBOdW1iZXIucGFyc2VJbnQoZm91bmROYW1lc3BhY2VbMF0pIDogMDtcbiAgICAgICAgfSBlbHNlXG4gICAgICAgICAgICByZXR1cm4gT2JqZWN0LmVudHJpZXMobXcuY29uZmlnLmdldCgnd2dGb3JtYXR0ZWROYW1lc3BhY2VzJykpXG4gICAgICAgICAgICAgICAgLmZpbHRlcigoWywgbmFtZXNwYWNlTmFtZV0pID0+IG5vdE5hbWVzcGFjZSAhPT0gKG5hbWVzcGFjZU5hbWUgfHwgJ0FydGljbGUnKSlcbiAgICAgICAgICAgICAgICAubWFwKChbbmFtZXNwYWNlSWRdKSA9PiBOdW1iZXIucGFyc2VJbnQobmFtZXNwYWNlSWQpKTtcbiAgICB9XG59XG5cbm13LmxvYWRlci51c2luZyhbJ21lZGlhd2lraS51dGlsJ10sICgpID0+IHtcbiAgICBpZiAobXcuY29uZmlnLmdldCgnd2dQYWdlTmFtZScpID09PSAnVXNlcjpFZWppdDQzJykgbmV3IE1vbml0b3JpbmdMaXN0TWFuYWdlcigpLmxvYWQoKTtcbn0pO1xuIl0sCiAgIm1hcHBpbmdzIjogIjs7O2FBZUEsTUFBTSxxQkFBc0IsQ0FDaEIsSUFBTSxJQUFJLEdBQUcsSUFFYixLQUVBLFFBQ0EsYUFFQSxVQUFZLEdBRVosZ0JBQWtCLEVBS25CLE1BQU8sQ0FDVixHQUFHLEtBQUssT0FBTztBQUFBO0FBQUE7QUFBQSxFQUdyQixFQUVNLE1BQU1BLEVBQWtCLFNBQVMsY0FBYyxpQkFBaUIsRUFBRyxVQUFVLEVBQUksRUFFakYsS0FBSyxLQUFPLFNBQVMsY0FBYyxHQUFHLEVBQ3RDLEtBQUssS0FBSyxLQUFPLElBQ2pCLEtBQUssS0FB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RUFBSSxDQUNqRSxLQUNJLFFBQU8sT0FBTyxRQUFRLEdBQUcsT0FBTyxJQUFJLHVCQUF1QixDQUFDLEVBQ3ZELE9BQU8sQ0FBQyxDQUFDLENBQUVDLENBQWEsSUFBTUYsS0FBa0JFLEdBQWlCLFVBQVUsRUFDM0UsSUFBSSxDQUFDLENBQUNDLENBQVcsSUFBTSxPQUFPLFNBQVNBLENBQVcsQ0FBQyxDQUNoRSxDQUNKLENBRUEsR0FBRyxPQUFPLE1BQU0sQ0FBQyxnQkFBZ0IsRUFBRyxJQUFNLENBQ2xDLEdBQUcsT0FBTyxJQUFJLFlBQVksSUFBTSxnQkFBZ0IsSUFBSSxzQkFBc0IsRUFBRSxLQUFLLENBQ3pGLENBQUMiLAogICJuYW1lcyI6IFsiZnVsbExpbmtFbGVtZW50IiwgImV2ZW50IiwgImVsZW1lbnQiLCAiY2hlY2siLCAiZGF0YSIsICJlcnJvckNvZGUiLCAiZXJyb3JJbmZvIiwgImhhbmRsZXIiLCAiY291bnQiLCAibmFtZXNwYWNlIiwgIm5vdE5hbWVzcGFjZSIsICJmb3VuZE5hbWVzcGFjZSIsICJuYW1lc3BhY2VOYW1lIiwgIm5hbWVzcGFjZUlkIl0KfQo=