Lightcord/BetterDiscordApp/dist/index.min.js

1 line
194 KiB
JavaScript
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

module.exports=function(e){var t={};function n(s){if(t[s])return t[s].exports;var r=t[s]={i:s,l:!1,exports:{}};return e[s].call(r.exports,r,r.exports,n),r.l=!0,r.exports}return n.m=e,n.c=t,n.d=function(e,t,s){n.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:s})},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 s=Object.create(null);if(n.r(s),Object.defineProperty(s,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var r in e)n.d(s,r,function(t){return e[t]}.bind(null,r));return s},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=7)}([function(e,t){e.exports=require("electron")},function(e,t){e.exports=require("path")},function(e,t){e.exports=require("fs")},function(e,t){e.exports=require("node-fetch")},function(e,t){e.exports=require("crypto")},function(e,t){e.exports=require("events")},function(e,t){e.exports=require("module")},function(e,t,n){"use strict";n.r(t),n.d(t,"default",(function(){return Ps}));var s={};n.r(s),n.d(s,"minimumDiscordVersion",(function(){return r})),n.d(s,"currentDiscordVersion",(function(){return o})),n.d(s,"minSupportedVersion",(function(){return i})),n.d(s,"bbdVersion",(function(){return a})),n.d(s,"bbdChangelog",(function(){return l})),n.d(s,"settings",(function(){return c})),n.d(s,"defaultCookie",(function(){return d})),n.d(s,"settingsCookie",(function(){return u})),n.d(s,"settingsRPC",(function(){return h})),n.d(s,"defaultRPC",(function(){return p})),n.d(s,"bdpluginErrors",(function(){return m})),n.d(s,"bdthemeErrors",(function(){return g})),n.d(s,"bdConfig",(function(){return f})),n.d(s,"bdthemes",(function(){return b})),n.d(s,"bdplugins",(function(){return y})),n.d(s,"pluginCookie",(function(){return v})),n.d(s,"themeCookie",(function(){return w}));const r="0.0.306",o=window.DiscordNative&&window.DiscordNative.remoteApp&&window.DiscordNative.remoteApp.getVersion&&window.DiscordNative.remoteApp.getVersion()||"0.0.306",i="0.3.0",a="0.3.5",l={description:"Big things are coming.",changes:[{title:"Bug Fixes",type:"fixed",items:["Some fixes related to showing modals in the `BdApi`.","Fixed the open folder buttons for plugins and themes"]}]},c={"Custom css live update":{id:"bda-css-0",info:"",implemented:!0,hidden:!0,cat:"core"},"Custom css auto udpate":{id:"bda-css-1",info:"",implemented:!0,hidden:!0,cat:"core"},"BetterDiscord Blue":{id:"bda-gs-b",info:"Replace Discord blue with BD Blue",implemented:!1,hidden:!1,cat:"core"},"Public Servers":{id:"bda-gs-1",info:"Display public servers button",implemented:!0,hidden:!1,cat:"core",category:"modules"},"Minimal Mode":{id:"bda-gs-2",info:"Hide elements and reduce the size of elements.",implemented:!0,hidden:!1,cat:"core",category:"modules"},"Voice Mode":{id:"bda-gs-4",info:"Only show voice chat",implemented:!0,hidden:!1,cat:"core",category:"modules"},"Hide Channels":{id:"bda-gs-3",info:"Hide channels in minimal mode",implemented:!0,hidden:!1,cat:"core",category:"modules"},"Dark Mode":{id:"bda-gs-5",info:"Make certain elements dark by default(wip)",implemented:!0,hidden:!1,cat:"core",category:"modules"},"Voice Disconnect":{id:"bda-dc-0",info:"Disconnect from voice server when closing Discord",implemented:!0,hidden:!1,cat:"core",category:"modules"},"24 Hour Timestamps":{id:"bda-gs-6",info:"Replace 12hr timestamps with proper ones",implemented:!0,hidden:!1,cat:"core",category:"modules"},"Colored Text":{id:"bda-gs-7",info:"Make text color the same as role color",implemented:!0,hidden:!1,cat:"core",category:"modules"},"Normalize Classes":{id:"fork-ps-4",info:"Adds stable classes to elements to help themes. (e.g. adds .da-channels to .channels-Ie2l6A)",implemented:!0,hidden:!1,cat:"core",category:"modules"},"Content Error Modal":{id:"fork-ps-1",info:"Shows a modal with plugin/theme errors",implemented:!0,hidden:!1,cat:"core",category:"content manager"},"Scan Plugins":{id:"fork-ps-6",info:"Scan plugins for any threat that can be hidden inside.",implemented:!0,hidden:!1,cat:"core",category:"content manager"},"Show Toasts":{id:"fork-ps-2",info:"Shows a small notification for important information",implemented:!0,hidden:!1,cat:"core",category:"content manager"},"Scroll To Settings":{id:"fork-ps-3",info:"Auto-scrolls to a plugin's settings when the button is clicked (only if out of view)",implemented:!0,hidden:!1,cat:"core",category:"content manager"},"Automatic Loading":{id:"fork-ps-5",info:"Automatically loads, reloads, and unloads plugins and themes",implemented:!0,hidden:!1,cat:"core",category:"content manager"},"Enable Edit Button":{id:"fork-ps-7",info:"Enable an Edit Button on the plugin and theme panel.",implemented:!0,hidden:!1,cat:"core",category:"content manager"},"Themes in Popout Window":{id:"lightcord-9",info:"Enable themes in Popout Window. (For example, when detaching screenshare.)",implemented:!0,hidden:!1,cat:"core",category:"content manager",experimental:!0},"Developer Mode":{id:"bda-gs-8",info:"Developer Mode Toggle",implemented:!0,hidden:!1,cat:"core",category:"developer settings"},"Copy Selector":{id:"fork-dm-1",info:'Adds a "Copy Selector" option to context menus when developer mode is active',implemented:!0,hidden:!1,cat:"core",category:"developer settings"},"Disable BetterDiscord":{id:"bd-disable",info:"Disable Betterdiscord (plugins, themes, etc) (Not implemented).",implemented:!1,hidden:!1,cat:"lightcord",category:"Lightcord"},"Blur Personal Information":{id:"lightcord-6",info:"Blur sensitive informations like email, payment infos and more.",implemented:!0,hidden:!1,cat:"lightcord",category:"Lightcord"},"Calling Ring Beat":{id:"lightcord-2",info:"Enable Discord's special calling beat.",implemented:!0,hidden:!1,cat:"lightcord",category:"Lightcord"},"Developer Options":{id:"lightcord-1",info:'Enable Discord\'s & Lightcord\'s Internal Developer Options. This allow the "Experiments" tab, the "Developer Options" tab and the "Lightcord Api" section.',implemented:!0,hidden:!1,cat:"lightcord",category:"Lightcord"},"Ad Block":{id:"lightcord-4",info:"Block any BOT that dms you with an invite link. Even in an embed.",implemented:!0,hidden:!1,cat:"lightcord",category:"Lightcord"},"Enable Lightcord Servers":{id:"lightcord-5",info:"Enable Lightcord's servers. Disabling this will disable custom badges.",implemented:!0,hidden:!1,cat:"lightcord",category:"Lightcord"},"Disable typing":{id:"lightcord-7",info:"Don't let other see you're typing.",implemented:!0,hidden:!1,cat:"lightcord",category:"Lightcord"},"Lightcord Tabs":{id:"lightcord-8",info:"Allows you to launch multiple instances of Lightcord in the same window.",implemented:!0,hidden:!1,cat:"lightcord",category:"Lightcord",experimental:!0},"Use Notification Shim":{id:"lightcord-10",info:"Basically don't use Windows's Notifications.",implemented:!0,hidden:"win32"!==process.platform,cat:"lightcord",category:"Lightcord",experimental:!1},"Always-on-Top":{id:"lightcord-3",info:"Enable the window's Always-on-Top mode, where Lightcord stays on top of other applications.",implemented:!0,hidden:!1,cat:"lightcord",category:"Window"},"No Window Bounds":{id:"no_window_bound",info:"Disable Window Bounds. Can be useful if you use a window manager.",implemented:!0,hidden:"linux"!==process.platform,cat:"lightcord",category:"Window"},"Enable Glasstron":{id:"enable_glasstron",info:"Enable Glasstron. If you're not using transparent themes, this can reduce lag.",implemented:!0,hidden:!1,cat:"lightcord",category:"Window"},Enable:{id:"lightcord-presence-1",info:"Enable RichPresence below.",implemented:!0,hidden:!1,cat:"status"}},d={"bda-gs-1":!0,"bda-gs-2":!1,"bda-gs-3":!1,"bda-gs-4":!1,"bda-gs-5":!0,"bda-gs-6":!1,"bda-gs-7":!1,"bda-gs-8":!1,"bda-es-0":!0,"bda-es-1":!0,"bda-es-2":!0,"bda-es-4":!1,"bda-es-6":!0,"bda-es-7":!0,"bda-gs-b":!1,"bda-es-8":!0,"bda-dc-0":!1,"bda-css-0":!1,"bda-css-1":!1,"bda-es-9":!0,"fork-dm-1":!1,"fork-ps-1":!0,"fork-ps-2":!0,"fork-ps-3":!0,"fork-ps-4":!0,"fork-ps-5":!0,"fork-ps-6":!0,"fork-ps-7":!1,"fork-es-2":!1,"fork-es-3":!0,"fork-wp-1":!1,"fork-wp-2":!1,"fork-beta":!0,"lightcord-1":!1,"lightcord-2":!0,"lightcord-presence-1":!1,"lightcord-3":!1,"lightcord-4":!1,"lightcord-5":!0,"lightcord-6":!0,"lightcord-7":!1,"lightcord-8":!1,"lightcord-9":!1,"lightcord-10":!1,no_window_bound:!1},u={},h={},p={name:"Lightcord",application_id:"711416957718757418",state:"Lightcord Client",details:"Browsing Discord","timestamps.start":Date.now(),"assets.small":null,"assets.large":"712323821037682791"},m=[],g=[],f=Object.create(BetterDiscordConfig),b={},y={},v={},w={},C=webpackJsonp.push([[],{__extra_id__:(e,t,n)=>e.exports=n},[["__extra_id__"]]]);delete C.m.__extra_id__,delete C.c.__extra_id__;const E=e=>{for(const t in C.c)if(C.c.hasOwnProperty(t)){const n=C.c[t].exports;if(n&&n.__esModule&&n.default&&e(n.default))return n.default;if(n&&e(n))return n}return null};let S={find:E,findAll:e=>{const t=[];for(const n in C.c)if(C.c.hasOwnProperty(n)){const s=C.c[n].exports;s&&s.__esModule&&s.default&&e(s.default)?t.push(s.default):s&&e(s)&&t.push(s)}return t},findByProps:(...e)=>E(t=>e.every(e=>void 0!==t[e])),findByPrototypes:(...e)=>E(t=>t.prototype&&e.every(e=>void 0!==t.prototype[e])),findByDisplayName:e=>E(t=>t.displayName===e)};var x=S;window.Lightcord.BetterDiscord.WebpackModules=S;const k=window.require,D=n(2),M=n(1),B=DiscordNative.globals?DiscordNative.globals.releaseChannel:DiscordNative.app?DiscordNative.app.getReleaseChannel():"stable";let N="";N="win32"===process.platform?process.env.APPDATA:"darwin"===process.platform?M.join(process.env.HOME,"Library","Preferences"):process.env.XDG_CONFIG_HOME?process.env.XDG_CONFIG_HOME:M.join(process.env.HOME,".config"),N=M.join(N,"BetterDiscord");var L=new class{constructor(){this.data={settings:{stable:{},canary:{},ptb:{}}},this.pluginData={},window.Lightcord.BetterDiscord.DataStore=this}initialize(){try{D.existsSync(this.BDFile)||D.writeFileSync(this.BDFile,JSON.stringify(this.data,null,4),"utf-8");const e=JSON.parse(D.readFileSync(this.BDFile,"utf-8"));if(e.hasOwnProperty("settings")&&(this.data=e),!D.existsSync(this.settingsFile))return;let t=k(this.settingsFile);D.unlinkSync(this.settingsFile),t=t.hasOwnProperty("settings")?Object.assign({stable:{},canary:{},ptb:{}},{[B]:t}):Object.assign({stable:{},canary:{},ptb:{}},t),this.setBDData("settings",t)}catch(e){console.error(e),ke.alert("Corrupt Storage","The bd storage has somehow become corrupt. You may either try to salvage the file or delete it then reload.")}}get injectionPath(){return this._injectionPath=null}get configFile(){return this._configFile||(this._configFile=M.resolve(this.injectionPath,"betterdiscord","config.json"))}get BDFile(){return this._BDFile||(this._BDFile=M.resolve(N,"bdstorage.json"))}get settingsFile(){return this._settingsFile||(this._settingsFile=M.resolve(N,"bdsettings.json"))}getPluginFile(e){return M.resolve(we.pluginsFolder,e+".config.json")}getSettingGroup(e){return this.data.settings[B][e]||null}setSettingGroup(e,t){this.data.settings[B][e]=t,D.writeFileSync(this.BDFile,JSON.stringify(this.data,null,4),"utf-8")}getBDData(e){return this.data[e]||""}setBDData(e,t){this.data[e]=t,D.writeFileSync(this.BDFile,JSON.stringify(this.data,null,4),"utf-8")}getPluginData(e,t){return void 0!==this.pluginData[e]?this.pluginData[e][t]:D.existsSync(this.getPluginFile(e))?(this.pluginData[e]=JSON.parse(D.readFileSync(this.getPluginFile(e))),this.pluginData[e][t]):void 0}setPluginData(e,t,n){void 0!==n&&(void 0===this.pluginData[e]&&(this.pluginData[e]={}),this.pluginData[e][t]=n,D.writeFileSync(this.getPluginFile(e),JSON.stringify(this.pluginData[e],null,4),"utf-8"))}deletePluginData(e,t){void 0===this.pluginData[e]&&(this.pluginData[e]={}),delete this.pluginData[e][t],D.writeFileSync(this.getPluginFile(e),JSON.stringify(this.pluginData[e],null,4),"utf-8")}};const A=n(5);var P=new class extends A{constructor(){super(),window.Lightcord.BetterDiscord.BDEvents=this}dispatch(e,...t){this.emit(e,...t)}off(e,t){this.removeListener(e,t)}};class T{constructor(){window.Lightcord.BetterDiscord.PluginModule=this}get folder(){return we.pluginsFolder}}T.prototype.loadPlugins=async function(){this.loadPluginData(),m.splice(0,0,...await we.loadPlugins());const e=Object.keys(y);for(let t=0;t<e.length;t++){let n,s;try{n=y[e[t]].plugin,s=n.getName(),n.load&&"function"==typeof n.load&&n.load()}catch(n){v[s]=!1,ke.err("Plugins",s+" could not be loaded.",n),m.push({name:s,file:y[e[t]].filename,message:"load() could not be fired.",error:{message:n.message,stack:n.stack}});continue}if(v[s]||(v[s]=!1),v[s])try{n.start(),u["fork-ps-2"]&&ke.showToast(`${n.getName()} v${n.getVersion()} has started.`)}catch(n){v[s]=!1,ke.err("Plugins",s+" could not be started.",n),m.push({name:s,file:y[e[t]].filename,message:"start() could not be fired.",error:{message:n.message,stack:n.stack}})}await new Promise(e=>setTimeout(e,10))}this.savePluginData(),n(0).remote.getCurrentWebContents().on("did-navigate-in-page",this.channelSwitch.bind(this))},T.prototype.startPlugin=function(e,t=!1){try{y[e].plugin.start(),u["fork-ps-2"]&&!t&&ke.showToast(`${y[e].plugin.getName()} v${y[e].plugin.getVersion()} has started.`)}catch(n){u["fork-ps-2"]&&!t&&ke.showToast(`${y[e].plugin.getName()} v${y[e].plugin.getVersion()} could not be started.`,{type:"error"}),v[e]=!1,this.savePluginData(),ke.err("Plugins",e+" could not be started.",n)}},T.prototype.stopPlugin=function(e,t=!1){try{y[e].plugin.stop(),u["fork-ps-2"]&&!t&&ke.showToast(`${y[e].plugin.getName()} v${y[e].plugin.getVersion()} has stopped.`)}catch(n){u["fork-ps-2"]&&!t&&ke.showToast(`${y[e].plugin.getName()} v${y[e].plugin.getVersion()} could not be stopped.`,{type:"error"}),ke.err("Plugins",y[e].plugin.getName()+" could not be stopped.",n)}},T.prototype.enablePlugin=function(e,t=!1){v[e]||(v[e]=!0,this.savePluginData(),this.startPlugin(e,t))},T.prototype.enable=function(e,t=!1){return this.enablePlugin(e,t)},T.prototype.disablePlugin=function(e,t=!1){v[e]&&(v[e]=!1,this.savePluginData(),this.stopPlugin(e,t))},T.prototype.disable=function(e,t=!1){return this.disablePlugin(e,t)},T.prototype.togglePlugin=function(e){v[e]?this.disablePlugin(e):this.enablePlugin(e)},T.prototype.toggle=function(e,t=!1){return this.togglePlugin(e,t)},T.prototype.loadPlugin=async function(e){const t=await we.loadContent(e,"plugin");if(t)return u["fork-ps-1"]&&ke.showContentErrors({plugins:[t]}),u["fork-ps-2"]&&ke.showToast(e+" could not be loaded.",{type:"error"}),ke.err("ContentManager",e+" could not be loaded.",t);const n=Object.values(y).find(t=>console.log(t.filename,e)||t.filename==e).plugin;try{n.load&&"function"==typeof n.load&&n.load()}catch(e){u["fork-ps-1"]&&ke.showContentErrors({plugins:[e]})}ke.log("ContentManager",`${n.getName()} v${n.getVersion()} was loaded.`),u["fork-ps-2"]&&ke.showToast(`${n.getName()} v${n.getVersion()} was loaded.`,{type:"success"}),P.dispatch("plugin-loaded",n.getName())},T.prototype.unloadPlugin=function(e){const t=Object.values(y).find(t=>t.filename==e)||y[e];if(!t)return;const n=t.plugin.getName();v[n]&&this.disablePlugin(n,!0);const s=we.unloadContent(y[n].filename,"plugin");if(delete y[n],s)return u["fork-ps-1"]&&ke.showContentErrors({plugins:[s]}),u["fork-ps-2"]&&ke.showToast(n+" could not be unloaded. It may have not been loaded yet.",{type:"error"}),ke.err("ContentManager",n+" could not be unloaded. It may have not been loaded yet.",s);ke.log("ContentManager",n+" was unloaded."),u["fork-ps-2"]&&ke.showToast(n+" was unloaded.",{type:"success"}),P.dispatch("plugin-unloaded",n)},T.prototype.delete=function(e){const t=Object.values(y).find(t=>t.filename==e)||y[e];if(!t)return;this.unloadPlugin(t.filename);const s=n(1).resolve(we.pluginsFolder,t.filename);n(2).unlinkSync(s)},T.prototype.reloadPlugin=async function(e){const t=Object.values(y).find(t=>t.filename==e)||y[e];if(!t)return this.loadPlugin(e);const n=t.plugin.getName(),s=v[n];s&&this.stopPlugin(n,!0);const r=await we.reloadContent(y[n].filename,"plugin");if(r)return u["fork-ps-1"]&&ke.showContentErrors({plugins:[r]}),u["fork-ps-2"]&&ke.showToast(n+" could not be reloaded.",{type:"error"}),ke.err("ContentManager",n+" could not be reloaded.",r);y[n].plugin.load&&"function"==typeof y[n].plugin.load&&y[n].plugin.load(),s&&this.startPlugin(n,!0),ke.log("ContentManager",`${n} v${y[n].plugin.getVersion()} was reloaded.`),u["fork-ps-2"]&&ke.showToast(`${n} v${y[n].plugin.getVersion()} was reloaded.`,{type:"success"}),P.dispatch("plugin-reloaded",n)},T.prototype.reload=function(e){return this.reloadPlugin(e)},T.prototype.edit=function(e){console.log("Edit "+e);const t=Object.values(y).find(t=>t.filename==e)||y[e];if(!t)return;const s=n(1).resolve(we.pluginsFolder,t.filename);console.log("Edit "+s),n(0).shell.openItem(""+s)},T.prototype.updatePluginList=function(){const e=we.loadNewContent("plugin");for(const t of e.added)this.loadPlugin(t);for(const t of e.removed)this.unloadPlugin(t)},T.prototype.loadPluginData=function(){const e=L.getSettingGroup("plugins");e&&Object.assign(v,e)},T.prototype.savePluginData=function(){L.setSettingGroup("plugins",v)},T.prototype.newMessage=function(){const e=Object.keys(y);for(let t=0;t<e.length;t++){const n=y[e[t]].plugin;if(v[n.getName()]&&"function"==typeof n.onMessage)try{n.onMessage()}catch(e){ke.err("Plugins","Unable to fire onMessage for "+n.getName()+".",e)}}},T.prototype.channelSwitch=function(){const e=Object.keys(y);for(let t=0;t<e.length;t++){const n=y[e[t]].plugin;if(v[n.getName()]&&"function"==typeof n.onSwitch)try{n.onSwitch()}catch(e){ke.err("Plugins","Unable to fire onSwitch for "+n.getName()+".",e)}}},T.prototype.rawObserver=function(e){const t=Object.keys(y);for(let n=0;n<t.length;n++){const s=y[t[n]].plugin;if(v[s.getName()]&&"function"==typeof s.observer)try{s.observer(e)}catch(e){ke.err("Plugins","Unable to fire observer for "+s.getName()+".",e)}}};var R=new T,O=n(3),j=n.n(O),_=n(0),$=n(4);let I,W;function F(){return I||(I=x.findByProps("tooltip","tooltipBlack"))}function z(){return W||(W=x.findByProps("layer","layerContainer"))}const H=function(e){const t=e[0].toUpperCase()+e.slice(1),n=F()["tooltip"+t];return n||null},U=function(e){return!!H(e)},q=function(e){return e+"px"};class G{constructor(e,t,n={}){const{style:s="black",side:r="top",preventFlip:o=!1,disabled:i=!1,attachEvents:a=!0}=n;if(this.node=e instanceof jQuery?e[0]:e,this.label=t,this.style=s.toLowerCase(),this.side=r.toLowerCase(),this.preventFlip=o,this.disabled=i,!U(this.side))return ke.err("EmulatedTooltip",`Side ${this.side} does not exist.`);if(!U(this.style))return ke.err("EmulatedTooltip",`Style ${this.style} does not exist.`);this.element=document.createElement("div"),this.element.className=z().layer+" "+z().disabledPointerEvents,this.tooltipElement=document.createElement("div"),this.tooltipElement.className=`${F().tooltip} ${H(this.style)}`,this.labelElement=document.createElement("div"),this.labelElement.className=F().tooltipContent;const l=document.createElement("div");l.className=F().tooltipPointer,this.tooltipElement.append(l),this.tooltipElement.append(this.labelElement),this.element.append(this.tooltipElement),a&&(this.node.addEventListener("mouseenter",()=>{if(this.disabled)return;this.show();const e=new MutationObserver(t=>{t.forEach(t=>{const n=Array.from(t.removedNodes),s=n.indexOf(this.node)>-1,r=n.some(e=>e.contains(this.node));(s||r)&&(this.hide(),e.disconnect())})});e.observe(document.body,{subtree:!0,childList:!0})}),this.node.addEventListener("mouseleave",()=>{this.hide()}))}get container(){return document.querySelector("."+ke.removeDa(BDModules.get(e=>e.popouts)[0].popouts)+" ~ ."+ke.removeDa(BDModules.get(e=>e.layerContainer)[0].layerContainer))}get canShowAbove(){return this.node.getBoundingClientRect().top-this.element.offsetHeight>=0}get canShowBelow(){return this.node.getBoundingClientRect().top+this.node.offsetHeight+this.element.offsetHeight<=ke.screenHeight}get canShowLeft(){return this.node.getBoundingClientRect().left-this.element.offsetWidth>=0}get canShowRight(){return this.node.getBoundingClientRect().left+this.node.offsetWidth+this.element.offsetWidth<=ke.screenWidth}hide(){this.element.remove(),this.tooltipElement.className=this._className}show(){this.tooltipElement.className=`${F().tooltip} ${H(this.style)}`,this.labelElement.textContent=this.label,this.container.append(this.element),"top"==this.side&&(this.canShowAbove||!this.canShowAbove&&this.preventFlip?this.showAbove():this.showBelow()),"bottom"==this.side&&(this.canShowBelow||!this.canShowBelow&&this.preventFlip?this.showBelow():this.showAbove()),"left"==this.side&&(this.canShowLeft||!this.canShowLeft&&this.preventFlip?this.showLeft():this.showRight()),"right"==this.side&&(this.canShowRight||!this.canShowRight&&this.preventFlip?this.showRight():this.showLeft())}showAbove(){this.tooltipElement.classList.add(H("top")),this.element.style.setProperty("top",q(this.node.getBoundingClientRect().top-this.element.offsetHeight-10)),this.centerHorizontally()}showBelow(){this.tooltipElement.classList.add(H("bottom")),this.element.style.setProperty("top",q(this.node.getBoundingClientRect().top+this.node.offsetHeight+10)),this.centerHorizontally()}showLeft(){this.tooltipElement.classList.add(H("left")),this.element.style.setProperty("left",q(this.node.getBoundingClientRect().left-this.element.offsetWidth-10)),this.centerVertically()}showRight(){this.tooltipElement.classList.add(H("right")),this.element.style.setProperty("left",q(this.node.getBoundingClientRect().left+this.node.offsetWidth+10)),this.centerVertically()}centerHorizontally(){const e=this.node.getBoundingClientRect().left+this.node.offsetWidth/2;this.element.style.setProperty("left",q(e-this.element.offsetWidth/2))}centerVertically(){const e=this.node.getBoundingClientRect().top+this.node.offsetHeight/2;this.element.style.setProperty("top",q(e-this.element.offsetHeight/2))}}var V=class extends React.Component{constructor(e){super(e)}async componentDidMount(){const{style:e="black",side:t="top",text:n=""}=this.props;this.node=xe.reactDom.findDOMNode(this),this.tooltip=new G(this.node,n,{style:e,side:t})}componentWillUnmount(){this.tooltip.hide(),delete this.tooltip}render(){return this.props.children}},J=n(2),Z=n(1);const Y={},K={};var X=new class{constructor(){window.Lightcord.BetterDiscord.PluginCertifier=this}patch(e,t){process.nextTick(()=>{!function(e,t){if(!document.getElementById(t))return;if(!e.url.startsWith("https://cdn.discordapp.com/"))return document.getElementById(t).remove();if(!e.filename.endsWith(".plugin.js")&&!e.filename.endsWith(".theme.css"))return document.getElementById(t).remove();j()(e.url,{headers:{"User-Agent":_.remote.getCurrentWebContents().userAgent}}).then(n=>{if(200!==n.status)throw new Error("File doesn't exist.");const s=$.createHash("sha256");let r=Buffer.alloc(0);n.body.on("data",e=>{r=Buffer.concat([r,e]),s.update(e)}),n.body.on("end",()=>{const n=s.digest("hex");K[e.url]=n,ee[n]=e.url,te(n,r,e.filename,n=>{!function(e,t,n){const s=document.getElementById(e);if(!s||s.childNodes.length>0)return;se||(se=BDModules.get(e=>e.flowerStarContainer)[0]);re||(re=BDModules.get(e=>e.childContainer)[0]);if(t.suspect){try{s.parentNode.style.borderColor="rgb(240, 71, 71)";let e=s=>{for(let r of s.children)"A"===r.tagName?r.addEventListener("click",e=>{e.preventDefault(),e.stopImmediatePropagation(),ke.showConfirmationModal("Are you sure you want to download this ?","The "+t.type.toLowerCase()+" **"+n+"** might be dangerous **("+t.harm+")**. \n\n**We don't recommand to download it**. However, you can still do it below.",{confirmText:"Download Anyway",cancelText:"Don't !",danger:!0,onCancel:()=>{},onConfirm:()=>{_.remote.shell.openExternal(r.href)}})}):["div"].includes(r.tagName.toLowerCase())&&e(r)};e(s.parentNode)}catch(e){console.error(e)}xe.reactDom.render(xe.react.createElement(V,{text:t.type+" "+t.name+" is potentially dangerous."},xe.react.createElement("div",{className:se.flowerStarContainer,style:{width:"20px",height:"20px"}},xe.react.createElement("svg",{className:BDModules.get(e=>e.svg)[0].svg,"aria-hidden":"false",width:"20px",height:"20px",viewBox:"0 0 40 32"},xe.react.createElement("rect",{x:"0",y:"0",width:"32",height:"32",mask:"url(#svg-mask-avatar-status-round-32)",fill:"#f04747",mask:"url(#svg-mask-status-dnd)",className:BDModules.get(e=>e.pointerEvents)[0].pointerEvents})))),s)}else if(t.official){s.parentNode.style.borderColor="#4087ed";let e=xe.react.createElement("span",{style:{display:"inherit"}},[xe.react.createElement(V,{text:t.type+" "+t.name+" was made by the developers of Lightcord.",style:"brand"},xe.react.createElement("div",{className:se.flowerStarContainer,style:{width:"20px",height:"20px",float:"left"}},xe.react.createElement("svg",{className:se.flowerStar,"aria-hidden":"false",width:"20px",height:"20px",viewBox:"0 0 16 15.2",stroke:"#36393f",style:{color:"#4087ed"}},xe.react.createElement("path",{fill:"currentColor","fill-rule":"evenodd",d:"m16 7.6c0 .79-1.28 1.38-1.52 2.09s.44 2 0 2.59-1.84.35-2.46.8-.79 1.84-1.54 2.09-1.67-.8-2.47-.8-1.75 1-2.47.8-.92-1.64-1.54-2.09-2-.18-2.46-.8.23-1.84 0-2.59-1.54-1.3-1.54-2.09 1.28-1.38 1.52-2.09-.44-2 0-2.59 1.85-.35 2.48-.8.78-1.84 1.53-2.12 1.67.83 2.47.83 1.75-1 2.47-.8.91 1.64 1.53 2.09 2 .18 2.46.8-.23 1.84 0 2.59 1.54 1.3 1.54 2.09z"})),xe.react.createElement("div",{className:re.childContainer},xe.react.createElement("svg",{"aria-hidden":"false",width:"20px",height:"20px",viewBox:"0 0 16 15.2"},xe.react.createElement("path",{fill:"#ffffff",d:"M10.7,5.28a2.9,2.9,0,0,0-2.11.86.11.11,0,0,0,0,.16l1.05.94a.11.11,0,0,0,.15,0,1.27,1.27,0,0,1,.9-.33c.65,0,.65.73.65.73a.64.64,0,0,1-.65.65,1.73,1.73,0,0,1-1.18-.54c-.31-.26-.36-.32-.73-.66S7.06,5.28,5.65,5.28A2.26,2.26,0,0,0,3.37,7.56,2.59,2.59,0,0,0,3.82,9a2.18,2.18,0,0,0,1.83.89,2.94,2.94,0,0,0,2.1-.81.11.11,0,0,0,0-.16L6.74,8A.11.11,0,0,0,6.6,8a1.58,1.58,0,0,1-.94.29h0A.71.71,0,0,1,5,7.56H5a.63.63,0,0,1,.65-.64c.71,0,1.42.75,1.94,1.27.75.76,1.66,1.79,3.11,1.74A2.28,2.28,0,0,0,13,7.64a2.59,2.59,0,0,0-.45-1.47A2.14,2.14,0,0,0,10.7,5.28Z"}))))),xe.react.createElement(V,{text:"Install this "+t.type.toLowerCase()+" on Lightcord."},xe.react.createElement("div",{className:se.flowerStarContainer,style:{width:"20px",height:"20px"},onClick(){ke.showConfirmationModal("Are you sure you want to download this "+t.type.toLowerCase()+" ?","Lightcord will automatically download and load this "+t.type.toLowerCase()+". You must enable it in the settings.",{confirmText:"Download and Install",cancelText:"I've changed my mind",danger:!1,onCancel:()=>{},onConfirm:()=>{let e=oe(K).find(e=>e[1]===t.hash)[0];j()(e).then(async e=>{if(200!==e.status)throw new Error("Status was not 200");let n=await e.buffer(),s=Object(Z.join)("Plugin"===t.type?we._pluginsFolder:we._themesFolder,t.filename);Object(J.writeFileSync)(s,n),ke.showToast(t.type+" succesfully installed.")}).catch(e=>{e=e instanceof Error?e:new Error(e),ke.showToast(e.message,{type:"error"})})}})}},xe.react.createElement("svg",{className:se.flowerStar,"aria-hidden":"false",width:"20px",height:"20px",viewBox:"0 0 24 24",style:{color:"rgb(67, 181, 129)",cursor:"pointer"}},React.createElement("g",{fill:"none","fill-rule":"evenodd"},React.createElement("path",{d:"M0 0h24v24H0z"}),React.createElement("path",{class:"fill",fill:"currentColor",d:"M19 9h-4V3H9v6H5l7 7 7-7zM5 18v2h14v-2H5z"})))))]);xe.reactDom.render(e,s)}else{s.parentNode.style.borderColor="#4087ed";let e=xe.react.createElement("span",{style:{display:"inherit"}},[xe.react.createElement(V,{text:t.type+" "+t.name+" is certified by Lightcord."},xe.react.createElement("div",{className:se.flowerStarContainer,style:{width:"20px",height:"20px",float:"left"}},xe.react.createElement("svg",{className:se.flowerStar,"aria-hidden":"false",width:"20px",height:"20px",viewBox:"0 0 16 15.2"},xe.react.createElement("path",{fill:"#4f545c","fill-rule":"evenodd",d:"m16 7.6c0 .79-1.28 1.38-1.52 2.09s.44 2 0 2.59-1.84.35-2.46.8-.79 1.84-1.54 2.09-1.67-.8-2.47-.8-1.75 1-2.47.8-.92-1.64-1.54-2.09-2-.18-2.46-.8.23-1.84 0-2.59-1.54-1.3-1.54-2.09 1.28-1.38 1.52-2.09-.44-2 0-2.59 1.85-.35 2.48-.8.78-1.84 1.53-2.12 1.67.83 2.47.83 1.75-1 2.47-.8.91 1.64 1.53 2.09 2 .18 2.46.8-.23 1.84 0 2.59 1.54 1.3 1.54 2.09z"})),xe.react.createElement("div",{className:re.childContainer},xe.react.createElement("svg",{"aria-hidden":"false",width:"20px",height:"20px",viewBox:"0 0 16 15.2"},xe.react.createElement("path",{fill:"#ffffff",d:"M7.4,11.17,4,8.62,5,7.26l2,1.53L10.64,4l1.36,1Z"}))))),xe.react.createElement(V,{text:"Install this "+t.type.toLowerCase()+" on Lightcord."},xe.react.createElement("div",{className:se.flowerStarContainer,style:{width:"20px",height:"20px"},onClick(){ke.showConfirmationModal("Are you sure you want to download this "+t.type.toLowerCase()+" ?","Lightcord will automatically install and launch this "+t.type.toLowerCase()+". You don't have anything to do.",{confirmText:"Download and Install",cancelText:"I've changed my mind",danger:!1,onCancel:()=>{},onConfirm:()=>{let e=oe(K).find(e=>e[1]===t.hash)[0];console.log(e),j()(e).then(async e=>{if(200!==e.status)throw new Error("Status was not 200");let n=await e.buffer(),s=Object(Z.join)("Plugin"===t.type?we._pluginsFolder:we._themesFolder,t.filename);console.log(s),Object(J.writeFileSync)(s,n),ke.showToast(t.type+" succesfully installed.")}).catch(e=>{e=e instanceof Error?e:new Error(e),ke.showToast(e.message,{type:"error"})})}})}},xe.react.createElement("svg",{className:se.flowerStar,"aria-hidden":"false",width:"20px",height:"20px",viewBox:"0 0 24 24",style:{color:"rgb(67, 181, 129)",cursor:"pointer"}},React.createElement("g",{fill:"none","fill-rule":"evenodd"},React.createElement("path",{d:"M0 0h24v24H0z"}),React.createElement("path",{class:"fill",fill:"currentColor",d:"M19 9h-4V3H9v6H5l7 7 7-7zM5 18v2h14v-2H5z"})))))]);xe.reactDom.render(e,s)}}(t,n,e.filename)},()=>{let e=document.getElementById(t);e&&e.remove()})})}).catch(()=>{})}(e,t)})}start(){}isTrusted(e){return Y[e]&&!Y[e].suspect}};function Q(e,t,n,s,r){t=t.toString("utf8");let o=!1;for(let e of t.split(/[^\w\d]+/g)){for(let t of["token","email","phone","MFA","2fa","child_process","localStorage","eval","getGlobal","BrowserWindow"])if(e.toLowerCase().includes(t.toLowerCase())&&"domtokenlist"===!e.toLowerCase()){console.log(t,e),o="token stealer/virus";break}if(o)break}if(!o){const e=t.replace(/\/\*[\s\S]*?\*\/|([^\\:]|^)\/\/.*$/gm,"").trim();if(/var [\w\d_$]+=\["/gi.test(e)&&(o="obfuscation/hidden code"),!o){const t=[/_0x\w{4}\('0x[\dabcdef]+'\)/g,/_0x\w{4}\('0x[\dabcdef]+'[, ]+'[^']{4}'\)/g,/\w+\('0x[\dabcdef]+'\)/g,/\w+\('0x[\dabcdef]+'[, ]+'[^']{4}'\)/g];for(let n of t){if(o)break;n.test(e)&&(o="obfuscation/hidden code")}}}if(!o)return s(e);Y[e]={suspect:!0,name:ee[e].split("/").pop(),type:ee[e].endsWith(".js")?"Plugin":"Theme",harm:o,hash:e,filename:r},console.log(`Found potentially dangerous ${Y[e].type.toLowerCase()}: ${Y[e].name}`),n(Y[e])}const ee={};function te(e,t,n,s,r){if(console.log(`File: ${n} hash: ${e}`),Y[e]){const t=Y[e];s(t)}else j()("https://cdn.jsdelivr.net/gh/Lightcord/filehashes@master/hashes/"+e,{headers:{"User-Agent":_.remote.getCurrentWebContents().userAgent}}).then(async o=>{if(200!==o.status)return n.endsWith(".theme.css")?r(e):void Q(e,t,s,r,n);const i=await o.json();i.hash=e,i.filename=n,Y[e]=i,s(i)}).catch(o=>{if(console.error("Could not read from github. "+o),n.endsWith(".theme.css"))return r(e);Q(e,t,s,r,n)})}function ne(e,t,n=(e=>{}),s=!1){const r=$.createHash("sha256");let o=Buffer.alloc(0);Object(J.createReadStream)(e).on("data",e=>{o=Buffer.concat([o,e]),r.update(e)}).on("end",()=>{const i=r.digest("hex");if(ee[i]=e,s&&ye[i]){let e=ye[i];if(!(e.timestamp<Date.now()-6048e5))return void t(e.result);delete ye[i],we.saveAddonCache()}te(i,o,Object(Z.basename)(e),t,n)})}let se=BDModules.get(e=>e.flowerStarContainer)[0],re=BDModules.get(e=>e.childContainer)[0];function oe(e){let t=[];return Object.keys(e).forEach(n=>{t.push([n,e[n]])}),t}let ie=null,ae=null;function le(){ie=[$.randomBytes(16).toString("base64"),$.randomBytes(32).toString("base64")]}function ce(e){let t=[Buffer.from(ie[1],"base64"),Buffer.from(ie[0],"base64")],n=$.createCipheriv("aes-256-cbc",...t),s=n.update(Buffer.from(e,"utf8"));return s=Buffer.concat([s,n.final()]),s.toString("base64")}window.Lightcord.Api.ensureExported(e=>e.ObjectStorage).then(e=>{let t=e.impl;ae=function(){t.set("PluginCertifierKeyEncryption__",btoa(JSON.stringify(ie)))},setInterval(()=>{ae()},1e5);try{let e=function(e){try{return JSON.parse(e)}catch(e){return e instanceof Error?new Error(e):e}}(atob(t.get("PluginCertifierKeyEncryption__")));if(e instanceof Error||!Array.isArray(e)||2!==e.length||e.find(e=>"string"!=typeof e)||16!==Buffer.from(e[0],"base64").length||32!==Buffer.from(e[1],"base64").length)return le(),void ae();ie=e}catch(e){le(),ae()}});const de=n(1),ue=n(2),he=n(6).Module;he.globalPaths.push(de.resolve(n(0).remote.app.getAppPath(),"node_modules"));class pe extends Error{constructor(e){super(e),this.name="MetaError"}}const me=he._extensions[".js"],ge=he._extensions[".css"]?he._extensions[".css"]:()=>null,fe=/[^\S\r\n]*?(?:\r\n|\n)[^\S\r\n]*?\*[^\S\r\n]?/,be=/^\\@/;let ye={},ve=!1;var we=new class{constructor(){this.timeCache={},this.watchers={}}patchExtensions(){ve||(ve=!0,he._extensions[".js"]=this.getContentRequire("plugin"),he._extensions[".css"]=this.getContentRequire("theme"))}get pluginsFolder(){return this._pluginsFolder||(this._pluginsFolder=ue.realpathSync(de.resolve(f.dataPath+"plugins/")))}get themesFolder(){return this._themesFolder||(this._themesFolder=ue.realpathSync(de.resolve(f.dataPath+"themes/")))}loadAddonCertifierCache(){if("string"!=typeof L.getSettingGroup("PluginCertifierHashes"))L.setSettingGroup("PluginCertifierHashes",ce("{}"));else try{ye=JSON.parse(function(e){try{let t=$.createDecipheriv("aes-256-cbc",Buffer.from(ie[1],"base64"),Buffer.from(ie[0],"base64")),n=t.update(Buffer.from(e,"base64"));return n=Buffer.concat([n,t.final()]),n.toString("utf8")}catch(e){return"{}"}}(L.getSettingGroup("PluginCertifierHashes")))}catch(e){L.setSettingGroup("PluginCertifierHashes",ce("{}")),ye={}}Object.keys(ye).forEach(e=>{let t=ye[e];if(!t||"object"!=typeof t||Array.isArray(t))return delete ye[e];let n=[{key:"timestamp",type:"number"},{key:"result",type:"object"},{key:"hash",type:"string"}];for(let s of n)if(!(s.key in t)||typeof t[s.key]!==s.type)return void delete ye[e];t.hash===e?t.result.suspect&&delete ye[e]:delete ye[e]}),this.saveAddonCache()}saveAddonCache(){L.setSettingGroup("PluginCertifierHashes",ce(JSON.stringify(ye)))}watchContent(e){if(this.watchers[e])return;const t="plugin"===e,n=t?this.pluginsFolder:this.themesFolder,s=t?".plugin.js":".theme.css";this.watchers[e]=ue.watch(n,{persistent:!1},async(e,r)=>{if(!e||!r||!r.endsWith(s))return;await new Promise(e=>setTimeout(e,50));try{ue.statSync(de.resolve(n,r))}catch(e){if("ENOENT"!==e.code)return;return delete this.timeCache[r],t?R.unloadPlugin(r):Se.unloadTheme(r)}if(!ue.statSync(de.resolve(n,r)).isFile())return;const o=ue.statSync(de.resolve(n,r));o&&o.mtime&&o.mtime.getTime()&&"number"==typeof o.mtime.getTime()&&this.timeCache[r]!=o.mtime.getTime()&&(this.timeCache[r]=o.mtime.getTime(),"rename"==e&&(t?await R.loadPlugin(r):await Se.loadTheme(r)),"change"==e&&(t?await R.reloadPlugin(r):await Se.reloadTheme(r)))})}unwatchContent(e){this.watchers[e]&&(this.watchers[e].close(),delete this.watchers[e])}extractMeta(e){const t=e.split("\n")[0];if(t.includes("//META"))return this.parseOldMeta(e);if(t.includes("/**"))return this.parseNewMeta(e);throw new pe("META was not found.")}parseOldMeta(e){const t=e.split("\n")[0],n=t.substring(t.lastIndexOf("//META")+6,t.lastIndexOf("*//"));if(t.indexOf("META")<0)throw new pe("META was not found.");const s=ke.testJSON(n);if(!s)throw new pe("META could not be parsed.");if(!s.name)throw new pe("META missing name data.");return s.format="json",s}parseNewMeta(e){const t=e.split("/**",2)[1].split("*/",1)[0],n={};let s="",r="";for(const e of t.split(fe))if(0!==e.length)if("@"===e.charAt(0)&&" "!==e.charAt(1)){n[s]=r;const t=e.indexOf(" ");s=e.substr(1,t-1),r=e.substr(t+1)}else r+=" "+e.replace("\\n","\n").replace(be,"@");return n[s]=r.trim(),delete n[""],n.format="jsdoc",n}getContentRequire(e){const t="plugin"===e,n=this,s=t?me:ge;return function(e,r){const o=t?n.pluginsFolder:n.themesFolder,i=de.resolve(o,de.basename(r));if(!ue.existsSync(i)||r!==ue.realpathSync(i))return Reflect.apply(s,this,arguments);let a=ue.readFileSync(r,"utf8");a=ke.stripBOM(a);const l=ue.statSync(r),c=n.extractMeta(a);if(c.filename=de.basename(r),c.added=l.atimeMs,c.modified=l.mtimeMs,c.size=l.size,t||(c.css=a,"json"==c.format&&(c.css=c.css.split("\n").slice(1).join("\n")),a=`module.exports = ${JSON.stringify(c)};`),t){e._compile(a,e.filename);!ke.isEmpty(e.exports)?(c.type=e.exports,e.exports=c,a=""):(ke.warn("Module Not Exported",c.name+", please start setting module.exports"),a+=`\nmodule.exports = ${JSON.stringify(c)};\nmodule.exports.type = ${c.exports||c.name};`)}e._compile(a,r)}}makePlaceholderPlugin(e){return{plugin:{start:()=>{},getName:()=>e.name||e.filename,getAuthor:()=>"???",getDescription:()=>e.message?e.message:"This plugin was unable to be loaded. Check the author's page for updates.",getVersion:()=>"???"},name:e.name||e.filename,filename:e.filename,source:e.source?e.source:"",website:e.website?e.website:""}}async loadContent(e,t){if(void 0===e||void 0===t)return;const n="plugin"===t,s=n?this.pluginsFolder:this.themesFolder;if(u["fork-ps-6"]){let t=await new Promise(t=>{ne(de.resolve(s,e),e=>{console.log(e),t(e)},n=>{t({suspect:!1,hash:n,filename:e,name:e})},!0)});if(t&&(ye[t.hash]={timestamp:Date.now(),hash:t.hash,result:t},this.saveAddonCache(),t.suspect))return{name:e,file:e,message:"This plugin might be dangerous ("+t.harm+").",error:new Error("This plugin might be dangerous ("+t.harm+").")}}try{window.require(de.resolve(s,e))}catch(t){return{name:e,file:e,message:"Could not be compiled.",error:{message:t.message,stack:t.stack}}}const r=window.require(de.resolve(s,e));if(!r.name)return{name:e,file:e,message:"Cannot escape the ID.",error:new Error("Cannot read property 'replace' of undefined")};if(r.id=ke.escapeID(r.name),n){if(!r.type)return;try{r.plugin=new r.type,delete y[r.plugin.getName()],y[r.plugin.getName()]=r}catch(t){return{name:e,file:e,message:"Could not be constructed.",error:{message:t.message,stack:t.stack}}}}else delete b[r.name],b[r.name]=r}unloadContent(e,t){if(void 0===e||void 0===t)return;const n="plugin"===t?this.pluginsFolder:this.themesFolder;try{delete window.require.cache[window.require.resolve(de.resolve(n,e))]}catch(t){return{name:e,file:e,message:"Could not be unloaded.",error:{message:t.message,stack:t.stack}}}}isLoaded(e,t){const n="plugin"===t?this.pluginsFolder:this.themesFolder;try{window.require.cache[window.require.resolve(de.resolve(n,e))]}catch(e){return!1}return!0}async reloadContent(e,t){const n=this.unloadContent(e,t);return n||await this.loadContent(e,t)}loadNewContent(e){const t="plugin"===e,n=t?".plugin.js":".theme.css",s=t?this.pluginsFolder:this.themesFolder,r=ue.readdirSync(s),o=Object.values(t?y:b),i=o.filter(e=>!r.includes(e.filename)).map(e=>t?e.plugin.getName():e.name);return{added:r.filter(e=>!o.find(t=>t.filename==e)&&e.endsWith(n)&&ue.statSync(de.resolve(s,e)).isFile()),removed:i}}async loadAllContent(e){this.patchExtensions();const t="plugin"===e,n=t?".plugin.js":".theme.css",s=t?this.pluginsFolder:this.themesFolder,r=[],o=ue.readdirSync(s);for(const t of o){if(!ue.statSync(de.resolve(s,t)).isFile()||!t.endsWith(n))continue;const o=await this.loadContent(t,e);o&&r.push(o)}return r}loadPlugins(){return this.loadAllContent("plugin")}loadThemes(){return this.loadAllContent("theme")}};class Ce{static escapeID(e){return e.replace(/^[^a-z]+|[^\w-]+/gi,"-")}static addStyle(e,t){document.head.append(Ce.createElement(`<style id="${e}">${t}</style>`))}static removeStyle(e){const t=document.getElementById(e);t&&t.remove()}static addScript(e,t){return new Promise(n=>{const s=document.createElement("script");s.id=e,s.src=t,s.type="text/javascript",s.onload=n,document.head.append(s)})}static removeScript(e){e=this.escapeID(e);const t=document.getElementById(e);t&&t.remove()}static animate({timing:e=(e=>e),update:t,duration:n}){const s=performance.now();requestAnimationFrame((function r(o){let i=(o-s)/n;i>1&&(i=1);const a=e(i);t(a),i<1&&requestAnimationFrame(r)}))}static Q(e){const t=this.parseHTML(e);return(t instanceof NodeList?Array.from(t).some(e=>1===e.nodeType):1===t.nodeType)?t:this.query(e)}static query(e,t){return t||(t=document),t.querySelector(e)}static queryAll(e,t){return t||(t=document),t.querySelectorAll(e)}static parseHTML(e,t=!1){const n=document.createElement("template");n.innerHTML=e;const s=n.content.cloneNode(!0);return t?s:s.childNodes.length>1?s.childNodes:s.childNodes[0]}static createElement(e,t=!1){return this.parseHTML(e,t)}static escapeHTML(e){const t=document.createTextNode(""),n=document.createElement("span");return n.append(t),t.nodeValue=e,n.innerHTML}static addClass(e,...t){t=t.flat().filter(e=>e);for(let e=0;e<t.length;e++)t[e]=t[e].toString().split(" ");return t=t.flat().filter(e=>e),e.classList.add(...t),e}static removeClass(e,...t){for(let e=0;e<t.length;e++)t[e]=t[e].toString().split(" ");return t=t.flat().filter(e=>e),e.classList.remove(...t),e}static toggleClass(e,t,n){return t=t.toString().split(" ").filter(e=>e),void 0!==n?t.forEach(t=>e.classList.toggle(t,n)):t.forEach(t=>e.classList.toggle(t)),e}static hasClass(e,t){return t.toString().split(" ").filter(e=>e).every(t=>e.classList.contains(t))}static replaceClass(e,t,n){return e.classList.replace(t,n),e}static appendTo(e,t){return"string"==typeof t&&(t=this.query(t)),t?(t.append(e),e):null}static prependTo(e,t){return"string"==typeof t&&(t=this.query(t)),t?(t.prepend(e),e):null}static insertAfter(e,t){return t.parentNode.insertBefore(e,t.nextSibling),e}static after(e,t){return e.parentNode.insertBefore(t,e.nextSibling),e}static next(e,t=""){return t?e.querySelector("+ "+t):e.nextElementSibling}static nextAll(e){return e.querySelectorAll("~ *")}static nextUntil(e,t){const n=[];for(;e.nextElementSibling&&!e.nextElementSibling.matches(t);)n.push(e=e.nextElementSibling);return n}static previous(e,t=""){const n=e.previousElementSibling;return t?n&&n.matches(t)?n:null:n}static previousAll(e){const t=[];for(;e.previousElementSibling;)t.push(e=e.previousElementSibling);return t}static previousUntil(e,t){const n=[];for(;e.previousElementSibling&&!e.previousElementSibling.matches(t);)n.push(e=e.previousElementSibling);return n}static indexInParent(e){const t=e.parentNode.childNodes;let n=0;for(let s=0;s<t.length;s++){if(t[s]==e)return n;1==t[s].nodeType&&n++}return-1}static index(e){return this.indexInParent(e)}static parent(e,t=""){return!t||e.parentElement.matches(t)?e.parentElement:null}static findChild(e,t){return e.querySelector(":scope > "+t)}static findChildren(e,t){return e.querySelectorAll(":scope > "+t)}static parents(e,t=""){const n=[];if(t)for(;e.parentElement&&e.parentElement.closest(t);)n.push(e=e.parentElement.closest(t));else for(;e.parentElement;)n.push(e=e.parentElement);return n}static parentsUntil(e,t){const n=[];for(;e.parentElement&&!e.parentElement.matches(t);)n.push(e=e.parentElement);return n}static siblings(e,t="*"){return Array.from(e.parentElement.children).filter(n=>n!=e&&n.matches(t))}static css(e,t,n){return void 0===n?global.getComputedStyle(e)[t]:(e.style[t]=n,e)}static width(e,t){return void 0===t?parseInt(getComputedStyle(e).width):(e.style.width=t,e)}static height(e,t){return void 0===t?parseInt(getComputedStyle(e).height):(e.style.height=t,e)}static text(e,t){return void 0===t?e.textContent:e.textContent=t}static innerWidth(e){return e.clientWidth}static innerHeight(e){return e.clientHeight}static outerWidth(e){return e.offsetWidth}static outerHeight(e){return e.offsetHeight}static offset(e){return e.getBoundingClientRect()}static get listeners(){return this._listeners||(this._listeners={})}static on(e,t,n,s){const[r,o]=t.split("."),i=n&&s;s||(s=n);const a=i?function(e){e.target.matches(n)&&s(e)}:s;e.addEventListener(r,a);const l=()=>{e.removeEventListener(r,a)};if(o){this.listeners[o]||(this.listeners[o]=[]);const t=()=>{l(),this.listeners[o].splice(this.listeners[o].findIndex(t=>t.event==r&&t.element==e),1)};return this.listeners[o].push({event:r,element:e,cancel:t}),t}return l}static once(e,t,n,s){const[r,o]=t.split("."),i=n&&s;s||(s=n);const a=i?function(t){t.target.matches(n)&&(s(t),e.removeEventListener(r,a))}:function(t){s(t),e.removeEventListener(r,a)};e.addEventListener(r,a);const l=()=>{e.removeEventListener(r,a)};if(o){this.listeners[o]||(this.listeners[o]=[]);const t=()=>{l(),this.listeners[o].splice(this.listeners[o].findIndex(t=>t.event==r&&t.element==e),1)};return this.listeners[o].push({event:r,element:e,cancel:t}),t}return l}static __offAll(e,t){const[n,s]=e.split(".");let r=e=>e.event==n,o=e=>e;t&&(r=e=>e.event==n&&e.element==t,o=e=>e.element==t);const i=this.listeners[s]||[],a=n?i.filter(r):i.filter(o);for(let e=0;e<a.length;e++)a[e].cancel()}static off(e,t,n,s){if("string"==typeof e)return this.__offAll(e);const[r,o]=t.split(".");if(o)return this.__offAll(t,e);const i=n&&s;s||(s=n);const a=i?function(e){e.target.matches(n)&&s(e)}:s;return e.removeEventListener(r,a),e}static onMountChange(e,t,n=!0){const s=()=>{this.observer.unsubscribe(s),t()};return this.observer.subscribe(s,t=>{const s=Array.from(n?t.addedNodes:t.removedNodes),r=s.indexOf(e)>-1,o=s.some(t=>t.contains(e));return r||o}),e}static onMount(e,t){return this.onMountChange(e,t)}static onUnmount(e,t){return this.onMountChange(e,t,!1)}static onAdded(e,t){return this.onMount(e,t)}static onRemoved(e,t){return this.onUnmount(e,t,!1)}static wrap(e){const t=this.parseHTML('<div class="dom-wrapper"></div>');for(let n=0;n<e.length;n++)t.appendChild(e[n]);return t}static resolveElement(e){if(e instanceof jQuery||e instanceof Element)return e instanceof jQuery?e[0]:e}}window.Lightcord.BetterDiscord.DOM=Ce;class Ee{constructor(){window.Lightcord.BetterDiscord.ThemeModule=this}get folder(){return we.themesFolder}}Ee.prototype.loadThemes=async function(){this.loadThemeData(),g.splice(0,0,...await we.loadThemes());const e=Object.keys(b);for(let t=0;t<e.length;t++){const n=b[e[t]];w[n.name]||(w[n.name]=!1),w[n.name]&&Ce.addStyle(Ce.escapeID(n.id),unescape(n.css)),await new Promise(e=>setTimeout(e,10))}for(const e in w)b[e]||delete w[e];this.saveThemeData()},Ee.prototype.enableTheme=function(e,t=!1){w[e]=!0,this.saveThemeData();const n=b[e];Ce.addStyle(Ce.escapeID(n.id),unescape(n.css)),P.dispatch("theme-enabled"),u["fork-ps-2"]&&!t&&ke.showToast(`${n.name} v${n.version} has been applied.`)},Ee.prototype.enable=function(e,t=!1){return this.enableTheme(e,t)},Ee.prototype.disableTheme=function(e,t=!1){w[e]=!1,this.saveThemeData();const n=b[e];Ce.removeStyle(Ce.escapeID(n.id)),P.dispatch("theme-disabled"),u["fork-ps-2"]&&!t&&ke.showToast(`${n.name} v${n.version} has been disabled.`)},Ee.prototype.disable=function(e,t=!1){return this.disableTheme(e,t)},Ee.prototype.toggleTheme=function(e){w[e]?this.disableTheme(e):this.enableTheme(e)},Ee.prototype.toggle=function(e){return this.toggleTheme(e)},Ee.prototype.loadTheme=async function(e){const t=await we.loadContent(e,"theme");if(t)return u["fork-ps-1"]&&ke.showContentErrors({themes:[t]}),u["fork-ps-2"]&&ke.showToast(e+" could not be loaded. It may not have been loaded.",{type:"error"}),ke.err("ContentManager",e+" could not be loaded.",t);const n=Object.values(b).find(t=>t.filename==e);ke.log("ContentManager",`${n.name} v${n.version} was loaded.`),u["fork-ps-2"]&&ke.showToast(`${n.name} v${n.version} was loaded.`,{type:"success"}),P.dispatch("theme-loaded",n.name)},Ee.prototype.unloadTheme=function(e){const t=Object.values(b).find(t=>t.filename==e)||b[e];if(!t)return;const n=t.name;w[n]&&this.disableTheme(n,!0);const s=we.unloadContent(b[n].filename,"theme");if(delete b[n],s)return u["fork-ps-1"]&&ke.showContentErrors({themes:[s]}),u["fork-ps-2"]&&ke.showToast(n+" could not be unloaded. It may have not been loaded yet.",{type:"error"}),ke.err("ContentManager",n+" could not be unloaded. It may have not been loaded yet.",s);ke.log("ContentManager",n+" was unloaded."),u["fork-ps-2"]&&ke.showToast(n+" was unloaded.",{type:"success"}),P.dispatch("theme-unloaded",n)},Ee.prototype.delete=function(e){const t=Object.values(b).find(t=>t.filename==e)||b[e];if(!t)return;this.unloadTheme(t.filename);const s=n(1).resolve(we.themesFolder,t.filename);n(2).unlinkSync(s)},Ee.prototype.reloadTheme=async function(e){const t=Object.values(b).find(t=>t.filename==e)||b[e];if(!t)return this.loadTheme(e);const n=t.name,s=await we.reloadContent(b[n].filename,"theme");if(w[n]&&(this.disableTheme(n,!0),this.enableTheme(n,!0)),s)return u["fork-ps-1"]&&ke.showContentErrors({themes:[s]}),u["fork-ps-2"]&&ke.showToast(n+" could not be reloaded.",{type:"error"}),ke.err("ContentManager",n+" could not be reloaded.",s);ke.log("ContentManager",`${n} v${b[n].version} was reloaded.`),u["fork-ps-2"]&&ke.showToast(`${n} v${b[n].version} was reloaded.`,{type:"success"}),P.dispatch("theme-reloaded",n)},Ee.prototype.reload=function(e){return this.reloadTheme(e)},Ee.prototype.edit=function(e){const t=Object.values(b).find(t=>t.filename==e)||b[e];if(!t)return;const s=n(1).resolve(we.themesFolder,t.filename);n(0).shell.openItem(""+s)},Ee.prototype.updateThemeList=function(){const e=we.loadNewContent("theme");for(const t of e.added)this.loadTheme(t);for(const t of e.removed)this.unloadTheme(t)},Ee.prototype.loadThemeData=function(){const e=L.getSettingGroup("themes");e&&Object.assign(w,e)},Ee.prototype.saveThemeData=function(){L.setSettingGroup("themes",w)};var Se=new Ee,xe=new class{constructor(){this.editorDetached=!1,this.WebpackModules=(()=>{const e=webpackJsonp.push([[],{__extra_id__:(e,t,n)=>e.exports=n},[["__extra_id__"]]]);delete e.m.__extra_id__,delete e.c.__extra_id__;const t=(e,t)=>{let n=t?e:e.default;if(!n)return e;if(n.remove&&n.set&&n.clear&&n.get&&!n.sort)return null;if(!n.getToken&&!n.getEmail&&!n.showToken)return e;const s=new Proxy(n,{getOwnPropertyDescriptor:function(e,t){if("getToken"!==t&&"getEmail"!==t&&"showToken"!==t)return Object.getOwnPropertyDescriptor(e,t)},get:function(e,t){return"getToken"==t&&e.getToken?()=>"mfa.XCnbKzo0CLIqdJzBnL0D8PfDruqkJNHjwHXtr39UU3F8hHx43jojISyi5jdjO52e9_e9MjmafZFFpc-seOMa":"getEmail"==t&&e.getEmail?()=>"puppet11112@gmail.com":"showToken"==t&&e.showToken?()=>!0:"__proto__"==t&&e.__proto__?s:e[t]}});return t?s:Object.assign({},e,{default:s})},n=n=>{for(const s in e.c)if(e.c.hasOwnProperty(s)){const r=e.c[s].exports;if(r&&r.__esModule&&r.default&&n(r.default))return t(r.default,!0);if(r&&n(r))return t(r,!1)}return null};return{find:n,findAll:n=>{const s=[];for(const r in e.c)if(e.c.hasOwnProperty(r)){const o=e.c[r].exports;o&&o.__esModule&&o.default&&n(o.default)?s.push(t(o.default,!0)):o&&n(o)&&s.push(t(o,!1))}return s},findByUniqueProperties:e=>n(t=>e.every(e=>void 0!==t[e])),findByPrototypes:e=>n(t=>t.prototype&&e.every(e=>void 0!==t.prototype[e])),findByDisplayName:e=>n(t=>t.displayName===e)}})(),this.internal={react:this.WebpackModules.findByUniqueProperties(["Component","PureComponent","Children","createElement","cloneElement"]),reactDom:this.WebpackModules.findByUniqueProperties(["findDOMNode"])},this.getInternalInstance=e=>e[Object.keys(e).find(e=>e.startsWith("__reactInternalInstance"))],window.Lightcord.BetterDiscord.V2=this}initialize(){}joinBD1(){this.InviteActions.acceptInviteAndTransitionToInviteChannel("0Tmfo5ZbORCRqbAd")}leaveBD1(){this.GuildActions.leaveGuild("86004744966914048")}joinBD2(){this.InviteActions.acceptInviteAndTransitionToInviteChannel("2HScm8j")}leaveBD2(){this.GuildActions.leaveGuild("280806472928198656")}joinLC(){this.InviteActions.acceptInviteAndTransitionToInviteChannel("7eFff2A")}leaveLC(){this.GuildActions.leaveGuild("705908350218666117")}get react(){return this.internal.react}get React(){return this.internal.react}get reactDom(){return this.internal.reactDom}get ReactDom(){return this.internal.reactDom}get reactComponent(){return this.internal.react.Component}get ReactComponent(){return this.internal.react.Component}get anchorClasses(){return this.WebpackModules.findByUniqueProperties(["anchorUnderlineOnHover"])||{anchor:"anchor-3Z-8Bb",anchorUnderlineOnHover:"anchorUnderlineOnHover-2ESHQB"}}get slateEditorClasses(){return this.WebpackModules.findByUniqueProperties(["slateTextArea"])}get messageClasses(){return this.WebpackModules.findByUniqueProperties(["message","containerCozy"])}get guildClasses(){const e=BDModules.get(e=>e.wrapper&&e.unreadMentionsBar)[0],t=BDModules.get(e=>e.guildsError&&e.selected)[0],n=BDModules.get(e=>e.blobContainer)[0];return Object.assign({},e,t,n)}get MessageContentComponent(){return this.WebpackModules.find(e=>e.defaultProps&&e.defaultProps.hasOwnProperty("disableButtons"))}get MessageComponent(){return this.WebpackModules.find(e=>e.default&&e.default.displayName&&"Message"==e.default.displayName)}get TimeFormatter(){return this.WebpackModules.findByUniqueProperties(["dateFormat"])}get TooltipWrapper(){return this.WebpackModules.findByDisplayName("Tooltip")}get NativeModule(){return this.WebpackModules.findByUniqueProperties(["setBadge"])}get InviteActions(){return this.WebpackModules.findByUniqueProperties(["acceptInvite"])}get GuildActions(){return this.WebpackModules.findByUniqueProperties(["leaveGuild"])}get Tooltips(){return this.WebpackModules.find(e=>e.hide&&e.show&&!e.search&&!e.submit&&!e.search&&!e.activateRagingDemon&&!e.dismiss)}get KeyGenerator(){return this.WebpackModules.find(e=>e.toString&&/"binary"/.test(e.toString()))}get LayerStack(){return this.WebpackModules.findByUniqueProperties(["popLayer"])}get UserStore(){return this.WebpackModules.findByUniqueProperties(["getCurrentUser"])}get ChannelStore(){return this.WebpackModules.findByUniqueProperties(["getChannel"])}get ChannelActions(){return this.WebpackModules.findByUniqueProperties(["openPrivateChannel"])}get PrivateChannelActions(){return this.WebpackModules.findByUniqueProperties(["selectPrivateChannel"])}openDM(e){const t=this.UserStore.getCurrentUser().id;if(t==e)return;const n=this.ChannelStore.getDMFromUserId(e);if(n)return this.PrivateChannelActions.selectPrivateChannel(n);this.ChannelActions.openPrivateChannel(t,e)}parseSettings(e){return Object.keys(c).reduce((t,n)=>{const s=c[n];return s.cat===e&&s.implemented&&!s.hidden&&(s.text=n,t.push(s)),t},[])}};class ke{static get screenWidth(){return Math.max(document.documentElement.clientWidth,window.innerWidth||0)}static get screenHeight(){return Math.max(document.documentElement.clientHeight,window.innerHeight||0)}static get WindowConfigFile(){return this._windowConfigFile=null}static getAllWindowPreferences(){return{transparent:!0,frame:!1}}static getWindowPreference(e){return"transparent"===e||"frame"!==e&&null}static setWindowPreference(e,t){return"transparent"===e||"frame"!==e&&null}static stripBOM(e){return 65279===e.charCodeAt(0)&&(e=e.slice(1)),e}static getTextArea(){return Ce.query("."+De(BDModules.get(e=>e.channelTextArea&&e.titleWrapper)[0].channelTextArea)+" textarea")}static insertText(e,t){e.focus(),e.selectionStart=0,e.selectionEnd=e.value.length,document.execCommand("insertText",!1,t)}static escapeID(e){return e.replace(/^[^a-z]+|[^\w-]+/gi,"-")}static log(e,t){console.log(`%c[BandagedBD]%c [${e}]%c ${t}`,"color: #3a71c1; font-weight: 700;","color: #3a71c1;","")}static warn(e,t){console.warn(`%c[BandagedBD]%c [${e}]%c ${t}`,"color: #E8A400; font-weight: 700;","color: #E8A400;","")}static err(e,t,n){console.log(`%c[BandagedBD]%c [${e}]%c ${t}`,"color: red; font-weight: 700;","color: red;",""),n&&(console.groupCollapsed("%cError: "+n.message,"color: red;"),console.error(n.stack),console.groupEnd())}static formatString(e,t){for(const n in t){let s=t[n];Array.isArray(s)&&(s=JSON.stringify(s)),"object"==typeof s&&null!==s&&(s=s.toString()),e=e.replace(new RegExp(`{{${n}}}`,"g"),s)}return e}static escape(e){return e.replace(/[-/\\^$*+?.()|[\]{}]/g,"\\$&")}static testJSON(e){try{return JSON.parse(e)}catch(e){return!1}}static isEmpty(e){if(null==e||null==e||""==e)return!0;if("object"!=typeof e)return!1;if(Array.isArray(e))return 0==e.length;for(const t in e)if(e.hasOwnProperty(t))return!1;return!0}static suppressErrors(e,t){return(...n)=>{try{return e(...n)}catch(e){this.err("SuppressedError","Error occurred in "+t,e)}}}static monkeyPatch(e,t,n){const{before:s,after:r,instead:o,once:i=!1,silent:a=!1,force:l=!1}=n,c=n.displayName||e.displayName||e[t].displayName||e.name||e.constructor.displayName||e.constructor.name;if(a||console.log("patch",t,"of",c),!e[t]){if(!l)return console.error(t,"does not exist for",c);e[t]=function(){}}const d=e[t];let u=!1;const h=()=>{a||console.log("unpatch",t,"of",c),u=!0};return e[t]=function(){if(u)return d.call(this,...arguments);const n={thisObject:this,methodArguments:arguments,cancelPatch:h,originalMethod:d,callOriginalMethod:()=>n.returnValue=n.originalMethod.apply(n.thisObject,n.methodArguments)};if(o){const s=ke.suppressErrors(o,"`instead` callback of "+e[t].displayName)(n);void 0!==s&&(n.returnValue=s)}else s&&ke.suppressErrors(s,"`before` callback of "+e[t].displayName)(n),n.callOriginalMethod(),r&&ke.suppressErrors(r,"`after` callback of "+e[t].displayName)(n);return i&&h(),n.returnValue},Object.assign(e[t],d),e[t].__monkeyPatched=!0,e[t].displayName=c,e[t].__originalMethod||(e[t].__originalMethod=d,e[t].toString=function(){return d.toString()}),h}static onRemoved(e,t){const n=new MutationObserver(s=>{for(let r=0;r<s.length;r++){const o=s[r],i=Array.from(o.removedNodes),a=i.indexOf(e)>-1,l=i.some(t=>t.contains(e));(a||l)&&(n.disconnect(),t())}});n.observe(document.body,{subtree:!0,childList:!0})}static getNestedProp(e,t){return t.split(/\s?\.\s?/).reduce((function(e,t){return e&&e[t]}),e)}static showToast(e,t={}){if(!document.querySelector(".bd-toasts")){const e=document.querySelector("."+De(BDModules.get(e=>e.sidebar&&e.hasNotice)[0].sidebar)+" + div")||null,t=e?e.querySelector("form"):null,n=t?t.offsetHeight:80,s=document.createElement("div");s.classList.add("bd-toasts"),s.style.setProperty("bottom",n+"px"),document.querySelector("#app-mount").appendChild(s)}const n=document.querySelector(".bd-toasts"),{type:s="",icon:r=!0,timeout:o=3e3}=t,i=document.createElement("div");i.classList.add("bd-toast"),s&&i.classList.add("toast-"+s),s&&r&&i.classList.add("icon"),i.innerText=e,n.appendChild(i),n.style.setProperty("left",`calc(50% - ${n.offsetWidth/2}px)`),setTimeout(()=>{i.classList.add("closing"),setTimeout(()=>{i.remove(),document.querySelectorAll(".bd-toasts .bd-toast").length||document.querySelector(".bd-toasts").remove()},300)},o)}static alert(e,t){let n=BDModules.get(e=>e.modal&&e.inner&&!e.hideOnFullscreen)[0],s=BDModules.get(e=>e.header&&e.responsiveWidthMobile&&e.hideOnFullscreen)[0],r=BDModules.get(e=>e.header&&e.responsiveWidthMobile&&e.focusLock)[0];const o=Ce.createElement(`<div class="bd-modal-wrapper theme-dark">\n <div class="bd-backdrop ${BDModules.get(e=>e.backdrop&&e.backdropWithLayer)[0].backdrop}"></div>\n <div class="bd-modal ${n.modal}">\n <div class="bd-modal-inner ${n.inner}">\n <div class="header ${s.header}">\n <div class="title">${e}</div>\n </div>\n <div class="bd-modal-body">\n <div class="scroller-wrap fade">\n <div class="scroller">\n ${t}\n </div>\n </div>\n </div>\n <div class="footer ${s.footer} ${r.footer}">\n <button type="button">Okay</button>\n </div>\n </div>\n </div>\n </div>`);o.querySelector(".footer button").addEventListener("click",()=>{Ce.addClass(o,"closing"),setTimeout(()=>{o.remove(),i.forEach(e=>{try{e()}catch(e){console.error(e)}})},300)}),o.querySelector(".bd-backdrop").addEventListener("click",()=>{Ce.addClass(o,"closing"),setTimeout(()=>{o.remove(),i.forEach(e=>{try{e()}catch(e){console.error(e)}})},300)}),Ce.query("#app-mount").append(o);const i=[];return{close:()=>{Ce.addClass(o,"closing"),setTimeout(()=>{o.remove(),i.forEach(e=>{try{e()}catch(e){console.error(e)}})},300)},onClose:e=>{i.push(e)}}}static showContentErrors({plugins:e=[],themes:t=[]}){if(!e||!t)return;if(!e.length&&!t.length)return;let n=BDModules.get(e=>e.modal&&e.inner&&!e.hideOnFullscreen)[0],s=BDModules.get(e=>e.header&&e.responsiveWidthMobile&&e.hideOnFullscreen)[0],r=BDModules.get(e=>e.header&&e.responsiveWidthMobile&&e.focusLock)[0];const o=Ce.createElement(`<div class="bd-modal-wrapper theme-dark">\n <div class="bd-backdrop ${BDModules.get(e=>e.backdrop&&e.backdropWithLayer)[0].backdrop}"></div>\n <div class="bd-modal bd-content-modal ${n.modal}">\n <div class="bd-modal-inner ${n.inner}">\n <div class="header ${s.header}"><div class="title">Content Errors</div></div>\n <div class="bd-modal-body">\n <div class="tab-bar-container">\n <div class="tab-bar TOP">\n <div class="tab-bar-item">Plugins</div>\n <div class="tab-bar-item">Themes</div>\n </div>\n </div>\n <div class="table-header">\n <div class="table-column column-name">Name</div>\n <div class="table-column column-message">Message</div>\n <div class="table-column column-error">Error</div>\n </div>\n <div class="scroller-wrap fade">\n <div class="scroller">\n \n </div>\n </div>\n </div>\n <div class="footer ${s.footer} ${r.footer}">\n <button type="button">Okay</button>\n </div>\n </div>\n </div>\n </div>`);function i(e){const t=Ce.createElement('<div class="errors">');for(const n of e){const e=Ce.createElement(`<div class="error">\n <div class="table-column column-name">${n.name?n.name:n.file}</div>\n <div class="table-column column-message">${n.message}</div>\n <div class="table-column column-error"><a class="error-link" href="">${n.error?n.error.message:""}</a></div>\n </div>`);t.append(e),n.error&&e.querySelectorAll("a").forEach(e=>e.addEventListener("click",e=>{e.preventDefault(),ke.err("ContentManager",`Error details for ${n.name?n.name:n.file}.`,n.error)}))}return t}const a=[i(e),i(t)];o.querySelectorAll(".tab-bar-item").forEach(e=>e.addEventListener("click",e=>{e.preventDefault();const t=o.querySelector(".tab-bar-item.selected");t&&Ce.removeClass(t,"selected"),Ce.addClass(e.target,"selected");const n=o.querySelector(".scroller");n.innerHTML="",n.append(a[Ce.index(e.target)])})),o.querySelector(".footer button").addEventListener("click",()=>{Ce.addClass(o,"closing"),setTimeout(()=>{o.remove()},300)}),o.querySelector(".bd-backdrop").addEventListener("click",()=>{Ce.addClass(o,"closing"),setTimeout(()=>{o.remove()},300)}),Ce.query("#app-mount").append(o),e.length?o.querySelector(".tab-bar-item").click():o.querySelectorAll(".tab-bar-item")[1].click()}static showChangelogModal(e={}){const t=x.findByProps("push","update","pop","popWithKey"),n=x.findByProps("fixed","improved"),s=x.findByDisplayName("Text"),r=x.findByProps("Child"),o=x.findByProps("Tags","default"),i=x.find(e=>e.defaultProps&&0==e.defaultProps.selectable),l=x.findByProps("defaultRules","parse");if(!(i&&t&&n&&s&&r&&o&&l))return;const{image:c="https://repository-images.githubusercontent.com/105473537/957b5480-7c26-11e9-8401-50fa820cbae5",description:d="",changes:u=[],title:h="BandagedBD",subtitle:p="v"+a,footer:m}=e,g=xe.React.createElement,f=[g("img",{src:c})];d&&f.push(g("p",null,l.parse(d)));for(let e=0;e<u.length;e++){const t=u[e],s=n[t.type]?n[t.type]:n.added,r=0==e?n.marginTop:"";f.push(g("h1",{className:`${s} ${r}`},t.title));const o=g("ul",null,t.items.map(e=>g("li",null,l.parse(e))));f.push(o)}const b=function(){return g(r.Child,{grow:1,shrink:1},g(o.default,{tag:o.Tags.H4},h),g(s,{size:s.Sizes.SMALL,color:s.Colors.STANDARD,className:n.date},p))},y=()=>{const e=x.find(e=>"Anchor"==e.displayName),n=x.findByProps("anchorUnderlineOnHover")||{anchor:"anchor-3Z-8Bb",anchorUnderlineOnHover:"anchorUnderlineOnHover-2ESHQB"},o=e=>{e.preventDefault(),e.stopPropagation(),t.pop(),xe.joinBD2()},i=e?g(e,{onClick:o},"Join our Discord Server."):g("a",{className:`${n.anchor} ${n.anchorUnderlineOnHover}`,onClick:o},"Join our Discord Server."),a=g(s,{size:s.Sizes.SMALL,color:s.Colors.STANDARD},"Need support? ",i);return g(r.Child,{grow:1,shrink:1},m||a)};return t.push((function(e){return g(i,Object.assign({className:n.container,selectable:!0,onScroll:e=>e,onClose:e=>e,renderHeader:b,renderFooter:y,children:f},e))}))}static showConfirmationModal(e,t,n={}){const s=x.findByProps("openModal","updateModal"),r=x.findByDisplayName("Markdown"),o=x.findByDisplayName("ConfirmModal");if(!s||!o||!r)return ke.alert(e,t);const i=()=>{},{onConfirm:a=i,onCancel:l=i,confirmText:c="Okay",cancelText:d="Cancel",danger:u=!1,key:h}=n;return Array.isArray(t)||(t=[t]),t=t.map(e=>"string"==typeof e?xe.React.createElement(r,null,e):e),s.openModal(n=>xe.React.createElement(o,Object.assign({header:e,red:u,confirmText:c,cancelText:d,onConfirm:a,onCancel:l},n),t),{modalKey:h})}static get removeDa(){return De}}function De(e){return e?e.split(" ").filter(e=>!e.startsWith("da-")).join(" "):e}ke.showToast=ke.suppressErrors(ke.showToast,"Could not show toast."),window.Lightcord.BetterDiscord.Utils=ke;class Me{constructor(){this.panels={}}register(e,t){this.panels[e]=t}getComponent(e,t){return this.panels[e](t)}get items(){return[{text:"BetterDiscord Settings",id:"core"},{text:"Plugins",id:"plugins"},{text:"Themes",id:"themes"},{text:"Custom CSS",id:"customcss"}]}get LCitems(){return[{text:"Lightcord Settings",id:"lightcord"},{text:"RichPresence",id:"status"},{text:"Account Info",id:"accountinfo"}]}get LCDevItems(){let e=[];return window.Lightcord.Settings.devMode?(e.push({section:"DIVIDER"},{section:"HEADER",label:"Lightcord Api"},{text:"Components Preview",id:"lcapipreview"}),e):e}render(e){return[{section:"HEADER",label:"Lightcord"},...this.LCitems.map(t=>({section:t.id,label:t.text,element:this.getComponent(t.id,e)})),...this.LCDevItems.map(t=>t.section?t:{section:t.id,label:t.text,element:this.getComponent(t.id,e)}),{section:"DIVIDER"},{section:"CUSTOM",element:this.getComponent("BDChangelogTitle")},...this.items.map(t=>({section:t.id,label:t.text,element:this.getComponent(t.id,e)})),{section:"DIVIDER"}]}}var Be=new class{injectColoredText(){this.cancelColoredText||xe.MessageComponent&&(this.cancelColoredText=ke.monkeyPatch(xe.MessageComponent,"default",{before:e=>{const t=e.methodArguments[0];if(!t||!t.childrenMessageContent)return;const n=t.childrenMessageContent;if(!n.type||!n.type.type||"MessageContent"!=n.type.type.displayName)return;const s=n.type.type;s.__originalMethod||(n.type.type=function(e){const t=s(e),n=u["bda-gs-7"]&&e.message.colorString||"";return t.props.style={color:n},t},n.type.type.__originalMethod=s,Object.assign(n.type.type,s))}}))}removeColoredText(){let e=BDModules.get(e=>e.markup)[0].markup;document.querySelectorAll("."+e.split(" ")[0]).forEach(e=>{e.style.setProperty("color","")})}},Ne=new class{inject24Hour(){if(this.cancel24Hour)return;const e=new RegExp("([0-9]{1,2}):([0-9]{1,2})\\s(AM|PM)"),t=t=>{if(!u["bda-gs-6"])return;const n=t.returnValue.match(e);return n&&4===n.length?"AM"===n[3]?t.returnValue=t.returnValue.replace(n[0],`${"12"===n[1]?"00":n[1].padStart(2,"0")}:${n[2]}`):t.returnValue=t.returnValue.replace(n[0],`${"12"===n[1]?"12":parseInt(n[1])+12}:${n[2]}`):void 0},n=ke.monkeyPatch(xe.TimeFormatter,"calendarFormat",{after:t}),s=ke.monkeyPatch(xe.TimeFormatter,"dateFormat",{after:t});this.cancel24Hour=()=>{n(),s()}}remove24Hour(){this.cancel24Hour&&this.cancel24Hour()}};class Le extends xe.reactComponent{constructor(e){super(e)}render(){return xe.react.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 12 12",style:{width:"18px",height:"18px"}},xe.react.createElement("g",{className:"background",fill:"none",fillRule:"evenodd"},xe.react.createElement("path",{d:"M0 0h12v12H0"}),xe.react.createElement("path",{className:"fill",fill:"#dcddde",d:"M9.5 3.205L8.795 2.5 6 5.295 3.205 2.5l-.705.705L5.295 6 2.5 8.795l.705.705L6 6.705 8.795 9.5l.705-.705L6.705 6"})))}}class Ae extends xe.reactComponent{constructor(e){super(e),this.onClick=this.onClick.bind(this)}render(){let e=BDModules.get(e=>e.toolsContainer)[0],t=BDModules.get(e=>e.container&&e.closeButton&&e.closeButtonBold)[0];return xe.react.createElement("div",{className:"tools-container "+e.toolsContainer},xe.react.createElement("div",{className:"tools "+e.tools},xe.react.createElement("div",{className:t.container},xe.react.createElement("div",{className:"btn-close "+t.closeButton,onClick:this.onClick},xe.react.createElement(Le,null)),xe.react.createElement("div",{className:"esc-text "+t.keybind},"ESC"))))}onClick(){this.props.onClick&&this.props.onClick();const e=document.querySelector("."+BDModules.get(e=>e.closeButton&&e.keybindBold)[0].closeButton.split(" ")[0]);e&&e.click()}}class Pe extends xe.reactComponent{constructor(e){super(e)}render(){return xe.react.createElement("h2",{className:"ui-form-title h2 margin-reset margin-bottom-20"},this.props.text)}}class Te extends xe.reactComponent{constructor(e){super(e)}render(){return xe.react.createElement("div",{className:"ui-tab-bar-separator margin-top-8 margin-bottom-8"})}}class Re extends xe.reactComponent{constructor(e){super(e)}render(){return xe.react.createElement("div",{className:"ui-tab-bar-header"},this.props.text,this.props.button)}}class Oe extends xe.reactComponent{constructor(e){super(e),this.setInitialState(),this.onClick=this.onClick.bind(this)}setInitialState(){this.state={selected:this.props.selected||!1}}render(){return xe.react.createElement("div",{className:"ui-tab-bar-item"+(this.props.selected?" selected":""),onClick:this.onClick},this.props.text)}onClick(){this.props.onClick&&this.props.onClick(this.props.id)}}class je extends xe.reactComponent{constructor(e){super(e),this.props.server.iconUrl||(this.props.server.iconUrl=this.props.fallback),this.state={imageError:!1,joined:this.props.guildList.includes(this.props.server.identifier)}}render(){const{server:e}=this.props;let t=BDModules.get(e=>e.card&&e.cardPrimary)[0],n=BDModules.get(e=>e.flexChild&&e._horizontalReverse)[0],s=BDModules.get(e=>e.noWrap&&!e.streamerModeEnabled)[0];return xe.react.createElement("div",{className:`${t.card} ${t.cardPrimary} ${BDModules.get(e=>e.marginBottom8)[0].marginBottom8} bd-server-card${e.pinned?" bd-server-card-pinned":""}`},xe.react.createElement("img",{ref:"img",className:"bd-server-image",src:e.iconUrl,onError:this.handleError.bind(this),draggable:!1}),xe.react.createElement("div",{className:n.flexChild+" bd-server-content"},xe.react.createElement("div",{className:n.horizontal+" "+s.noWrap+" bd-server-header"},xe.react.createElement("h5",{className:"h5-18_1nd defaultColor-1_ajX0 margin-reset bd-server-name"},e.name),xe.react.createElement("h5",{className:"h5-18_1nd defaultColor-1_ajX0 margin-reset bd-server-member-count"},e.members," Members")),xe.react.createElement("div",{className:n.horizontal+" "+s.noWrap},xe.react.createElement("div",{className:"scrollerWrap-2lJEkd scrollerThemed-2oenus themeGhostHairline-DBD-2d scrollerFade-1Ijw5y bd-server-description-container"},xe.react.createElement("div",{className:"scroller-2FKFPG scroller bd-server-description"},e.description))),xe.react.createElement("div",{className:"flex-1xMQg5 flex-1O1GKY horizontal-1ae9ci horizontal-2EEEnY directionRow-3v3tfG noWrap-3jynv6 bd-server-footer"},xe.react.createElement("div",{className:"flexChild-faoVW3 bd-server-tags",style:{flex:"1 1 auto"}},e.categories.join(", ")),this.state.joined&&xe.react.createElement("button",{type:"button",className:"button-38aScr lookFilled-1Gx00P colorBrand-3pXr91 sizeMin-1mJd1x grow-q77ONN colorGreen-29iAKY",style:{minHeight:"12px",marginTop:"4px",backgroundColor:"#3ac15c"}},xe.react.createElement("div",{className:"ui-button-contents"},"Joined")),e.error&&xe.react.createElement("button",{type:"button",className:"button-38aScr lookFilled-1Gx00P colorBrand-3pXr91 sizeMin-1mJd1x grow-q77ONN disabled-9aF2ug",style:{minHeight:"12px",marginTop:"4px",backgroundColor:"#c13a3a"}},xe.react.createElement("div",{className:"ui-button-contents"},"Error")),!e.error&&!this.state.joined&&xe.react.createElement("button",{type:"button",className:"button-38aScr lookFilled-1Gx00P colorBrand-3pXr91 sizeMin-1mJd1x grow-q77ONN",style:{minHeight:"12px",marginTop:"4px"},onClick:()=>{this.join()}},xe.react.createElement("div",{className:"ui-button-contents"},"Join")))))}handleError(){this.props.server.iconUrl=this.props.fallback,this.setState({imageError:!0})}join(){this.props.join(this)}}class _e extends xe.reactComponent{constructor(e){super(e)}render(){let e=BDModules.get(e=>e.scrollerHorizontal)[0],t=BDModules.get(e=>e.sidebarRegionScroller)[0],n=`${e.scrollerWrap} ${e.scrollerThemed} ${e.themeGhostHairline}${this.props.fade?" "+e.scrollerFade:""}`,s=e.scroller+" scroller";this.props.sidebar&&(s+=` ${t.sidebarRegionScroller} sidebar-region-scroller`),this.props.contentColumn&&(s+=" "+t.contentRegionScroller+" content-region-scroller",n=`${e.scrollerWrap} ${t.contentRegionScrollerWrap} content-region-scroller-wrap ${e.scrollerThemed} ${e.themeGhost} ${e.scrollerTrack}`);const{children:r}=this.props;return xe.react.createElement("div",{key:"scrollerwrap",className:n},xe.react.createElement("div",{key:"scroller",ref:"scroller",className:s},r))}}const $e=_e.prototype.render;Object.defineProperty(_e.prototype,"render",{enumerable:!1,configurable:!1,set:function(){console.warn("Addon policy for plugins #5 https://github.com/rauenzi/BetterDiscordApp/wiki/Addon-Policies#plugins")},get:()=>$e});class Ie extends xe.reactComponent{constructor(e){super(e)}render(){const{sidebar:e,content:t,tools:n}=this.props.children;return xe.react.createElement("div",{className:"standardSidebarView-3F1I7i ui-standard-sidebar-view"},xe.react.createElement("div",{className:"sidebarRegion-VFTUkN sidebar-region"},xe.react.createElement(_e,{key:"sidebarScroller",ref:"sidebarScroller",sidebar:!0,fade:e.fade||!0,dark:e.dark||!0},e.component)),xe.react.createElement("div",{className:"contentRegion-3nDuYy content-region"},xe.react.createElement("div",{className:"contentTransitionWrap-3hqOEW content-transition-wrap"},xe.react.createElement("div",{className:"scrollerWrap-2lJEkd firefoxFixScrollFlex-cnI2ix contentRegionScrollerWrap-3YZXdm content-region-scroller-wrap scrollerThemed-2oenus themeGhost-28MSn0 scrollerTrack-1ZIpsv"},xe.react.createElement("div",{className:"scroller-2FKFPG firefoxFixScrollFlex-cnI2ix contentRegionScroller-26nc1e content-region-scroller scroller",ref:"contentScroller"},xe.react.createElement("div",{className:"contentColumn-2hrIYH contentColumnDefault-1VQkGM content-column default"},t.component),n.component)))))}}class We extends xe.reactComponent{constructor(e){super(e),this.setInitialState(),this.close=this.close.bind(this),this.changeCategory=this.changeCategory.bind(this),this.search=this.search.bind(this),this.searchKeyDown=this.searchKeyDown.bind(this),this.checkConnection=this.checkConnection.bind(this),this.join=this.join.bind(this),this.connect=this.connect.bind(this),this.GuildStore=xe.WebpackModules.findByUniqueProperties(["getGuilds"]),this.AvatarDefaults=xe.WebpackModules.findByUniqueProperties(["getUserAvatarURL","DEFAULT_AVATARS"]),this.InviteActions=xe.WebpackModules.findByUniqueProperties(["acceptInvite"]),this.SortedGuildStore=xe.WebpackModules.findByUniqueProperties(["getSortedGuilds"])}componentDidMount(){this.checkConnection()}setInitialState(){this.state={selectedCategory:-1,title:"Loading...",loading:!0,servers:[],next:null,connection:{state:0,user:null}}}close(){xe.reactDom.unmountComponentAtNode(document.getElementById(this.props.rootId))}search(e,t){const n=this;fetch(`${n.endPoint}${e}${e?"&schema=new":"?schema=new"}`,{method:"get"}).then(async e=>{if(200!==e.status)throw await e.text();let s=await e.json(),r=s.results.reduce((e,t)=>(t.joined=!1,e.push(t),e),[]);t||(r=n.state.servers.concat(r));let o=s.size+s.from;s.next="?from="+o,n.state.term&&(s.next+="&term="+n.state.term),n.state.selectedCategory&&(s.next+="&category="+n.categoryButtons[n.state.selectedCategory]),o>=s.total&&(o=s.total,s.next=null);let i=`Showing 1-${o} of ${s.total} results in ${n.categoryButtons[n.state.selectedCategory]}`;n.state.term&&(i+=" for "+n.state.term),n.setState({loading:!1,title:i,servers:r,next:s.next}),t&&(n.refs.sbv.refs.contentScroller.scrollTop=0)}).catch(e=>(console.error(e),n.setState({loading:!1,title:"Failed to load servers. Check console for details"})))}async join(e){if(e.props.pinned)return this.InviteActions.acceptInvite(e.props.invite_code);await fetch(`${this.joinEndPoint}/${e.props.server.identifier}`,{method:"GET",credentials:"include",mode:"cors",headers:{Accept:"application/json","Content-Type":"application/json"}}),e.setState({joined:!0})}connect(){const e=this,t=e.windowOptions;t.x=Math.round(window.screenX+window.innerWidth/2-t.width/2),t.y=Math.round(window.screenY+window.innerHeight/2-t.height/2),e.joinWindow=new(window.require("electron").remote.BrowserWindow)(t);e.joinWindow.webContents.on("did-navigate",(t,n)=>{"https://auth.discordservers.com/info"==n&&(e.joinWindow.close(),e.checkConnection())}),e.joinWindow.loadURL("https://auth.discordservers.com/connect?scopes=guilds.join&previousUrl=https://auth.discordservers.com/info")}get windowOptions(){return{width:500,height:550,backgroundColor:"#282b30",show:!0,resizable:!1,maximizable:!1,minimizable:!1,alwaysOnTop:!0,frame:!1,center:!1,webPreferences:{nodeIntegration:!1}}}get bdServer(){const e=this.SortedGuildStore.getFlattenedGuildIds(),t=this.AvatarDefaults.DEFAULT_AVATARS;return[xe.react.createElement(je,{server:{name:"Lightcord",online:"30+",members:"50+",categories:["community","programming","support"],description:"Official Lightcord server for support etc",identifier:"86004744966914048",iconUrl:"https://avatars3.githubusercontent.com/u/65690058?s=200&v=4",nativejoin:!0,invite_code:"7eFff2A",pinned:!0},pinned:!0,join:this.join,guildList:e,fallback:t[Math.floor(5*Math.random())]}),xe.react.createElement(je,{server:{name:"BetterDiscord",online:"7500+",members:"20000+",categories:["community","programming","support"],description:"Official BetterDiscord server for support etc",identifier:"86004744966914048",iconUrl:"https://cdn.discordapp.com/icons/86004744966914048/292e7f6bfff2b71dfd13e508a859aedd.webp",nativejoin:!0,invite_code:"0Tmfo5ZbORCRqbAd",pinned:!0},pinned:!0,join:this.join,guildList:e,fallback:t[Math.floor(5*Math.random())]})]}get endPoint(){return"https://search.discordservers.com"}get joinEndPoint(){return"https://j.discordservers.com"}get connectEndPoint(){return"https://join.discordservers.com/connect"}async checkConnection(){const e=this;try{const t=await fetch("https://auth.discordservers.com/info",{method:"GET",credentials:"include",mode:"cors",headers:{Accept:"application/json","Content-Type":"application/json"}}),n=await t.json();e.setState({selectedCategory:0,connection:{state:2,user:n}}),e.search("",!0)}catch(t){console.error(t),e.setState({title:"Not connected to discordservers.com!",loading:!0,selectedCategory:-1,connection:{state:1,user:null}})}}render(){return xe.react.createElement(Ie,{ref:"sbv"},this.component)}get component(){return{sidebar:{component:this.sidebar},content:{component:this.content},tools:{component:xe.react.createElement(Ae,{key:"pt",ref:"tools",onClick:this.close})}}}get sidebar(){return xe.react.createElement("div",{className:"sidebar",key:"ps"},xe.react.createElement("div",{className:"ui-tab-bar SIDE"},xe.react.createElement("div",{className:"ui-tab-bar-header",style:{fontSize:"16px"}},"Public Servers"),xe.react.createElement(Te,null),this.searchInput,xe.react.createElement(Te,null),xe.react.createElement(Re,{text:"Categories"}),this.categoryButtons.map((e,t)=>xe.react.createElement(Oe,{id:t,onClick:this.changeCategory,key:t,text:e,selected:this.state.selectedCategory===t})),xe.react.createElement(Te,null),this.footer,this.connection))}get searchInput(){return xe.react.createElement("div",{className:"ui-form-item"},xe.react.createElement("div",{className:"ui-text-input flex-vertical",style:{width:"172px",marginLeft:"10px"}},xe.react.createElement("input",{ref:"searchinput",onKeyDown:this.searchKeyDown,onChange:()=>{},type:"text",className:"input default",placeholder:"Search...",maxLength:"50"})))}searchKeyDown(e){const t=this;if(t.state.loading||13!==e.which)return;t.setState({loading:!0,title:"Loading...",term:e.target.value});let n="?term="+e.target.value;0!==t.state.selectedCategory&&(n+="&category="+t.categoryButtons[t.state.selectedCategory]),t.search(n,!0)}get categoryButtons(){return["All","FPS Games","MMO Games","Strategy Games","MOBA Games","RPG Games","Tabletop Games","Sandbox Games","Simulation Games","Music","Community","Language","Programming","Other"]}changeCategory(e){const t=this;t.state.loading||(t.refs.searchinput.value="",t.setState({loading:!0,selectedCategory:e,title:"Loading...",term:null}),0!==e?t.search("?category="+t.categoryButtons[e],!0):t.search("",!0))}get content(){const e=this,t=this.SortedGuildStore.getFlattenedGuildIds(),n=this.AvatarDefaults.DEFAULT_AVATARS;if(1===e.state.connection.state)return e.notConnected;let s=BDModules.get(e=>e.contentColumnDefault)[0];return[xe.react.createElement("div",{ref:"content",key:"pc",className:s.contentColumn+" "+s.contentColumn+" content-column default"},xe.react.createElement(Pe,{text:e.state.title}),e.bdServer,e.state.servers.map(s=>xe.react.createElement(je,{key:s.identifier,server:s,join:e.join,guildList:t,fallback:n[Math.floor(5*Math.random())]})),e.state.next&&xe.react.createElement("button",{type:"button",onClick:()=>{e.state.loading||(e.setState({loading:!0}),e.search(e.state.next,!1))},className:"ui-button filled brand small grow",style:{width:"100%",marginTop:"10px",marginBottom:"10px"}},xe.react.createElement("div",{className:"ui-button-contents"},e.state.loading?"Loading":"Load More")),e.state.servers.length>0&&xe.react.createElement(Pe,{text:e.state.title}))]}get notConnected(){let e=BDModules.get(e=>e.contentColumnDefault)[0];return[xe.react.createElement("div",{key:"ncc",ref:"content",className:e.contentColumn+" "+e.contentColumn+" content-column default"},xe.react.createElement("h2",{className:"ui-form-title h2 margin-reset margin-bottom-20"},"Not connected to discordservers.com!",xe.react.createElement("button",{onClick:this.connect,type:"button",className:"ui-button filled brand small grow",style:{display:"inline-block",minHeight:"18px",marginLeft:"10px",lineHeight:"14px"}},xe.react.createElement("div",{className:"ui-button-contents"},"Connect"))),this.bdServer)]}get footer(){return xe.react.createElement("div",{className:"ui-tab-bar-header"},xe.react.createElement("a",{href:"https://discordservers.com",target:"_blank"},"Discordservers.com"))}get connection(){const{connection:e}=this.state;return 2!==e.state?xe.react.createElement("span",null):xe.react.createElement("span",null,xe.react.createElement(Te,null),xe.react.createElement("span",{style:{color:"#b9bbbe",fontSize:"10px",marginLeft:"10px"}},"Connected as: ",`${e.user.username}#${e.user.discriminator}`),xe.react.createElement("div",{style:{padding:"5px 10px 0 10px"}},xe.react.createElement("button",{style:{width:"100%",minHeight:"20px"},type:"button",className:"ui-button filled brand small grow"},xe.react.createElement("div",{className:"ui-button-contents",onClick:this.connect},"Reconnect"))))}}class Fe extends xe.reactComponent{constructor(e){super(e),this.keyupListener=this.keyupListener.bind(this)}keyupListener(e){27===e.which&&xe.reactDom.unmountComponentAtNode(this.refs.root.parentNode)}componentDidMount(){window.addEventListener("keyup",this.keyupListener);const e=Ce.query("#"+this.props.id);Ce.animate({duration:200,update:function(t){e.style.transform=`scale(${1.1-.1*t}) translateZ(0px)`,e.style.opacity=t,1==t&&setImmediate(()=>{e.style.transform="",e.style.opacity=""})}})}componentWillUnmount(){window.removeEventListener("keyup",this.keyupListener);const e=Ce.query("#"+this.props.id);Ce.animate({duration:200,update:function(t){e.style.transform=`scale(${1.1-.1*(1-t)}) translateZ(0px)`,e.style.opacity=1-t,1==t&&setImmediate(()=>{e.remove()})}});const t=Ce.query(".publicServersOpen");t.classList.remove("publicServersOpen"),Ce.animate({duration:200,update:function(e){t.style.transform=`scale(${.07*e+.93}) translateZ(0px)`,t.style.opacity=e,1==e&&setImmediate(()=>{t.style.transform="",t.style.opacity=""})}})}componentWillMount(){const e=Ce.query('[class*="layer-"]');e.classList.add("publicServersOpen"),Ce.animate({duration:200,update:function(t){e.style.transform=`scale(${.07*(1-t)+.93}) translateZ(0px)`,e.style.opacity=1-t}})}render(){return xe.react.createElement("div",{className:"layer bd-layer "+BDModules.get(e=>e.layer&&e.animating)[0].layer,id:this.props.id,ref:"root",style:{opacity:0,transform:"scale(1.1) translateZ(0px)"}},this.props.children)}}var ze=new class{constructor(){this._appendButton=this._appendButton.bind(this),window.Lightcord.BetterDiscord.V2_PublicServers=this}get component(){return xe.react.createElement(Fe,{rootId:"pubslayerroot",id:"pubslayer"},xe.react.createElement(We,{rootId:"pubslayerroot"}))}get root(){const e=document.getElementById("pubslayerroot");return e||(this.injectRoot()?this.root:null)}injectRoot(){let[e]=[ke.removeDa(BDModules.get(e=>e.layers&&e.layer)[0].layers)];const t=Ce.query(".layers, ."+e);return!!t&&(t.append(Ce.createElement("<div id='pubslayerroot'>")),!0)}render(){const e=this.root;e?xe.reactDom.render(this.component,e):console.log("FAILED TO LOCATE ROOT: .layers")}get button(){const e=Ce.createElement(`<div id="bd-pub-li" class="${xe.guildClasses.listItem}">`);u["bda-gs-1"]||(e.style.display="none");const t=Ce.createElement(`<div id="bd-pub-button" class="${"wrapper-25eVIn "+xe.guildClasses.circleButtonMask}">public</div>`);return t.addEventListener("click",()=>{this.render()}),e.append(t),e}_appendButton(){let[e]=[ke.removeDa(BDModules.get(e=>e.downloadProgress&&e.tutorialContainer)[0].tutorialContainer)];if(Ce.query("#bd-pub-li"))return;const t=Ce.query(`div.${e} > div`);Ce.after(t,this.button)}addButton(){if(this.guildPatch)return;const e=x.find(e=>e.default&&"NavigableGuilds"==e.default.displayName),t=x.findByDisplayName("Guilds");e||t||ke.warn("PublicServer","Can't find GuildList component"),this.guildPatch=ke.monkeyPatch(e||t.prototype,e?"default":"render",{after:this._appendButton}),this._appendButton()}removeButton(){this.guildPatch(),delete this.guildPatch;const e=Ce.query("#bd-pub-li");e&&e.remove()}};var He=new class{start(){Ce.addStyle("VoiceMode","\n .container-2Rl01u {\n display: none!important;\n }\n\n .chat-3bRxxu {\n display: none!important;\n }\n\n .sidebar-2K8pFh {\n flex-grow: 1!important;\n }\n")}stop(){Ce.removeStyle("VoiceMode")}};const Ue=new RegExp("^(?!da-)((?:[A-Za-z]|[0-9]|-)+)-(?:[A-Za-z]|[0-9]|-|_){6}$");var qe=new class{constructor(){window.Lightcord.BetterDiscord.ClassNormalizer=this}stop(){this.hasPatched&&(this.unpatchClassModules(x.findAll(this.moduleFilter.bind(this))),this.revertElement(document.querySelector("#app-mount")),this.hasPatched=!1)}start(){this.hasPatched||(this.patchClassModules(x.findAll(this.moduleFilter.bind(this))),this.normalizeElement(document.querySelector("#app-mount")),this.hasPatched=!0,this.patchDOMMethods())}patchClassModules(e){for(const t of e)this.patchClassModule("da",t)}unpatchClassModules(e){for(const t of e)this.unpatchClassModule("da",t)}shouldIgnore(e){return!isNaN(e)||(!!(e.endsWith("px")||e.endsWith("ch")||e.endsWith("em")||e.endsWith("ms"))||(!!e.startsWith("layerContainer-")||(!(!e.startsWith("#")||7!=e.length&&4!=e.length)||!(!e.includes("calc(")&&!e.includes("rgba")))))}moduleFilter(e){if("object"!=typeof e||Array.isArray(e))return!1;if(e.__esModule)return!1;if(!Object.keys(e).length)return!1;for(const t in e){const n=e[t];if("string"!=typeof n)return!1;if(!this.shouldIgnore(n)){if(1===n.split("-").length)return!1;if(!Ue.test(n.split(" ")[0]))return!1}}return!0}patchClassModule(e,t){for(const n in t){const s=t[n];if(this.shouldIgnore(s))continue;const r=s.split(" ");for(const s of r){const r=s.match(Ue);if(!r||!r.length||r.length<2)continue;const o=r[1].split("-").map((e,t)=>t?e[0].toUpperCase()+e.slice(1):e).join("");t[n]+=` ${e}-${o}`}}}unpatchClassModule(e,t){for(const n in t){const s=t[n];if(this.shouldIgnore(s))continue;let r="";const o=s.split(" ");for(const t of o)t.startsWith(e+"-")||(r+=" "+t);t[n]=r.trim()}}normalizeElement(e){if(!(e instanceof Element))return;const t=e.classList;for(let n=0,s=t.length;n<s;n++){if(!Ue.test(t[n]))continue;const s=t[n].match(Ue)[1].split("-").map((e,t)=>t?e[0].toUpperCase()+e.slice(1):e).join("");e.classList.add("da-"+s)}for(const t of e.children)this.normalizeElement(t)}revertElement(e){if(!(e instanceof Element))return;e.children&&e.children.length&&this.revertElement(e.children[0]),e.nextElementSibling&&this.revertElement(e.nextElementSibling);const t=e.classList,n=[];for(let e=0;e<t.length;e++)t[e].startsWith("da-")&&n.push(t[e]);e.classList.remove(...n)}patchDOMMethods(){const e=DOMTokenList.prototype.contains;DOMTokenList.prototype.contains=function(t){return Reflect.apply(e,this,[t.split(" ")[0]])};const t=DOMTokenList.prototype.add;DOMTokenList.prototype.add=function(...e){for(let t=0;t<e.length;t++)e[t]=e[t].split(" ")[0];return Reflect.apply(t,this,e)};const n=DOMTokenList.prototype.remove;DOMTokenList.prototype.remove=function(...e){for(let t=0;t<e.length;t++)e[t]=e[t].split(" ")[0];return Reflect.apply(n,this,e)}}},Ge=new class{constructor(){this.debugListener=this.debugListener.bind(this),this.copySelectorListener=this.copySelectorListener.bind(this)}start(){this.startDebugListener(),u["fork-dm-1"]&&this.startCopySelector()}stop(){this.stopDebugListener(),this.stopCopySelector()}startDebugListener(){this.stopDebugListener(),document.addEventListener("keydown",this.debugListener)}stopDebugListener(){document.removeEventListener("keydown",this.debugListener)}startCopySelector(){this.stopCopySelector(),document.addEventListener("contextmenu",this.copySelectorListener)}stopCopySelector(){document.removeEventListener("contextmenu",this.copySelectorListener)}debugListener(e){if(119===e.which||118==e.which){console.log("%c[%cDevMode%c] %cBreak/Resume","color: red;","color: #303030; font-weight:700;","color:red;","");debugger;e.preventDefault(),e.stopImmediatePropagation()}}copySelectorListener(e){try{e.stopPropagation();const t=this.getSelector(e.target);let[n,s]=[BDModules.get(e=>e.layer&&"string"==typeof e.layer&&e.disabledPointerEvents)[0],BDModules.get(e=>e.menu)[0]];setTimeout((function(){if(!s||!n.layer)return console.log(s,n.layer);let r=Ce.query("."+ke.removeDa(s.menu));if(!r){const t=Ce.query("#app-mount > ."+ke.removeDa(n.layerContainer)),o=Ce.createElement(`<div class="${n.layer}">`);r=Ce.createElement(`<div class="${s.menu} ${s.styleFlexible} ${s.accommodateScrollbar} bd-context-menu" style=""></div>`),o.append(r),t.append(o),o.style.top=e.clientY+"px",o.style.left=e.clientX+"px",o.setAttribute("role","menu"),o.setAttribute("tabindex","-1"),o.id="bd-copy-selector-context",o.setAttribute("aria-label","Copy Selector Actions");const i=BDModules.get(e=>e.scrollerWrap)[0],a=Ce.createElement(`<div class="${i.scrollerWrap} ${i.scrollerThemed} ${i.themeGhostHairline}"></div>`),l=Ce.createElement(`<div class="${BDModules.get(e=>e.scroller)[0].scroller} ${s.scroller}"></div>`);a.append(l),r.append(a);const c=function(e){e.keyCode&&27!==e.keyCode||(o.remove(),document.removeEventListener("click",c),document.removeEventListener("contextmenu",c),document.removeEventListener("keyup",c))};document.addEventListener("click",c),document.addEventListener("contextmenu",c),document.addEventListener("keyup",c)}const o=r.parentElement,i=r.childNodes[0].childNodes[0],a=Ce.createElement('<div role="group"></div>'),l=Ce.createElement(`<div class="${s.item} ${s.labelContainer} ${s.colorDefault}" role="menuitem" id="bd-copy-selector-item-cm"></div>`);if(l.append(Ce.createElement(`<div class="${s.label}">Copy Selector</div>`)),l.addEventListener("click",()=>{xe.NativeModule.copy(t),o.style.display="none"}),l.addEventListener("mouseover",e=>{let t=Ce.queryAll("div[role=menuitem]."+ke.removeDa(s.focused));t&&t.forEach(e=>e.classList.remove(s.focused)),l.classList.add(s.focused)}),l.addEventListener("mouseout",e=>{l.classList.remove(s.focused)}),a.append(l),i.childNodes.length){const e=Ce.createElement(`<div role="separator" class="${s.separator}"></div>`);i.append(e)}i.append(a),o.clientHeight<o.scrollHeight&&(console.log("overflowing "+o.style.top),o.style.top=o.style.top-a.clientHeight+"px",console.log("overflowing"+o.style.top))}),1)}catch(e){console.error(e)}}getSelector(e){if(e.id)return"#"+e.id;return function(e){for(var t=[];e.parentNode;){if(e.id){t.unshift("#"+e.id);break}if(e==e.ownerDocument.documentElement)t.unshift(e.tagName.toLowerCase()+Array.from(e.classList.entries()).map(e=>"."+e).join(""));else{for(var n=1,s=e;s.previousElementSibling;s=s.previousElementSibling,n++);t.unshift(e.tagName.toLowerCase()+("string"==typeof e.className&&e.className||"").split(" ").filter(e=>!!e).map(e=>"."+e).join("")+":nth-child("+n+")")}e=e.parentNode}return t.join(" > ")}(e)}};const Ve=xe.React;class Je extends Ve.Component{constructor(e){super(e),this.state={checked:this.props.checked},this.onChange=this.onChange.bind(this),this.switch=Ve.createElement(Lightcord.Api.Components.inputs.Switch,{onChange:this.onChange,value:this.state.checked})}onChange(e){this.props.disabled||(this.props.onChange(e),this.setState({checked:e}))}render(){return this.switch}}let Ze=[];function Ye(e){let t=Ze.find(t=>t.startsWith(e+"-"));return t||(t=BDModules.get(t=>t[e])[0][e],Ze.push(t),t)}class Ke extends xe.reactComponent{constructor(e){super(e),this.onChange=this.onChange.bind(this)}onChange(){this.props.checked=!this.props.checked,this.props.onChange(this.props.id,this.props.checked)}render(){let{text:e,info:t}=this.props.data;return Ze.find(e=>e.startsWith("beta-"))||Ze.push(BDModules.get(e=>e.beta&&!e.container&&!e.userSettingsVoice)[0].beta),this.props.data.experimental&&(t=[t,React.createElement("sup",{className:Ye("beta")},"(EXPERIMENTAL)")]),xe.react.createElement("div",{className:"ui-flex flex-vertical flex-justify-start flex-align-stretch flex-nowrap ui-switch-item"},xe.react.createElement("div",{className:"ui-flex flex-horizontal flex-justify-start flex-align-stretch flex-nowrap"},xe.react.createElement("h3",{key:"title",className:"ui-form-title h3 margin-reset margin-reset ui-flex-child"},e),xe.react.createElement(Je,{key:"switch",onChange:this.onChange,checked:this.props.checked})),xe.react.createElement("div",{className:"ui-form-text style-description margin-top-4",style:{flex:"1 1 auto"}},t))}}class Xe extends xe.reactComponent{constructor(e){super(e)}render(){const{title:e,settings:t,button:n}=this.props,s=n?xe.react.createElement("button",{key:"title-button",className:"bd-pfbtn",onClick:n.onClick},n.title):null;return[xe.react.createElement(Pe,{text:e}),s,t.map(e=>xe.react.createElement(Ke,{id:e.id,key:e.id,data:e,checked:u[e.id],onChange:(e,t)=>{this.props.onChange(e,t)}}))]}}let Qe=BDModules.get(e=>e.marginTop60)[0];class et extends React.Component{render(){return Qe||(Qe=BDModules.get(e=>e.marginTop60)[0]),React.createElement("div",{className:Qe.marginTop60})}}class tt extends xe.reactComponent{constructor(e){super(e)}render(){return this.props.sections.map((e,t)=>[0!==t?xe.react.createElement(et,{}):null,xe.react.createElement(Xe,Object.assign({},e,{onChange:this.props.onChange}))])}}class nt extends xe.reactComponent{constructor(e){super(e),this.onClick=this.onClick.bind(this),this.setInitialState()}setInitialState(){this.state={checked:this.props.checked||!1}}render(){return xe.react.createElement("li",null,xe.react.createElement("div",{className:"checkbox "+BDModules.get(e=>e.checkboxElement)[0].checkbox,onClick:this.onClick},xe.react.createElement("div",{className:"checkbox-inner "+BDModules.get(e=>e.checkboxInner)[0].checkboxInner},xe.react.createElement("input",{className:BDModules.get(e=>e.checkboxElement)[0].checkboxElement,checked:this.state.checked,onChange:()=>{},type:"checkbox"}),xe.react.createElement("span",null)),xe.react.createElement("span",null,this.props.text)))}onClick(){this.props.onChange(this.props.id,!this.state.checked),this.setState({checked:!this.state.checked})}}class st extends xe.reactComponent{constructor(e){super(e);this.onClick=this.onClick.bind(this),this.updateCss=this.updateCss.bind(this),this.saveCss=this.saveCss.bind(this),this.onChange=this.onChange.bind(this)}componentDidMount(){Ce.addClass(Ce.query("#app-mount"),"bd-detached-editor"),xe.editorDetached=!0,this.editor=ace.edit("bd-customcss-editor-detached"),this.editor.setTheme("ace/theme/discord"),this.editor.session.setMode("ace/mode/css"),this.editor.setShowPrintMargin(!1),this.editor.setFontSize(14),this.editor.on("change",()=>{u["bda-css-0"]&&(this.saveCss(),this.updateCss())})}componentWillUnmount(){Ce.removeClass(Ce.query("#app-mount"),"bd-detached-editor"),xe.editorDetached=!1,this.editor.destroy()}updateLineCount(){const e=this.refs.editor.value.split("\n").length;e!=this.props.lines&&(this.refs.lines.textContent=Array.from(new Array(e),(e,t)=>t+1).join(".\n")+".",this.props.lines=e)}get options(){return{lineNumbers:!0,mode:"css",indentUnit:4,theme:"material",scrollbarStyle:"simple"}}get css(){const e=L.getBDData("bdcustomcss");let t="";return e&&""!==e&&(t=Buffer.from(e,"base64").toString("utf8")),t}get root(){const e=Ce.query("#bd-customcss-detach-container");return e||(this.injectRoot()?this.detachedRoot:null)}injectRoot(){const e=Ce.query(".app, ."+ke.removeDa(BDModules.get(e=>e.app&&e.layers)[0].app));return!!e&&(Ce.insertAfter(Ce.createElement('<div id="bd-customcss-detach-container">'),e),!0)}render(){const e=this;return xe.react.createElement("div",{className:"bd-detached-css-editor",id:"bd-customcss-detach-editor"},xe.react.createElement("div",{id:"bd-customcss-innerpane"},xe.react.createElement("div",{className:"editor-wrapper"},xe.react.createElement("div",{id:"bd-customcss-editor-detached",className:"editor",ref:"editor"},e.css)),xe.react.createElement("div",{id:"bd-customcss-attach-controls"},xe.react.createElement("ul",{className:"checkbox-group"},xe.react.createElement(nt,{id:"live-update",text:"Live Update",onChange:e.onChange,checked:u["bda-css-0"]})),xe.react.createElement("div",{id:"bd-customcss-detach-controls-button"},xe.react.createElement("button",{style:{borderRadius:"3px 0 0 3px",borderRight:"1px solid #3f4146"},className:"btn btn-primary",onClick:()=>{e.onClick("update")}},"Update"),xe.react.createElement("button",{style:{borderRadius:"0",borderLeft:"1px solid #2d2d2d",borderRight:"1px solid #2d2d2d"},className:"btn btn-primary",onClick:()=>{e.onClick("save")}},"Save"),xe.react.createElement("button",{style:{borderRadius:"0 3px 3px 0",borderLeft:"1px solid #3f4146"},className:"btn btn-primary",onClick:()=>{e.onClick("attach")}},"Attach"),xe.react.createElement("span",{style:{fontSize:"10px",marginLeft:"5px"}},"Unsaved changes are lost on attach")))))}onChange(e,t){switch(e){case"live-update":u["bda-css-0"]=t,Xn.saveSettings()}}onClick(e){const t=this;switch(e){case"attach":Ce.query("#editor-detached")&&t.props.attach(),xe.reactDom.unmountComponentAtNode(t.root),t.root.remove();break;case"update":t.updateCss();break;case"save":t.saveCss()}}updateCss(){Ce.removeStyle("customcss"),Ce.addStyle("customcss",this.editor.session.getValue())}saveCss(){L.setBDData("bdcustomcss",Buffer.from(this.editor.session.getValue(),"utf-8").toString("base64"))}}class rt extends xe.reactComponent{constructor(e){super(e);this.props.lines=0,this.setInitialState(),this.attach=this.attach.bind(this),this.detachedEditor=xe.react.createElement(st,{attach:this.attach}),this.onClick=this.onClick.bind(this),this.updateCss=this.updateCss.bind(this),this.saveCss=this.saveCss.bind(this),this.detach=this.detach.bind(this)}setInitialState(){this.state={detached:this.props.detached||xe.editorDetached}}componentDidMount(){this.editor=ace.edit("bd-customcss-editor"),this.editor.setTheme("ace/theme/discord"),this.editor.session.setMode("ace/mode/css"),this.editor.setShowPrintMargin(!1),this.editor.setFontSize(14),this.editor.on("change",()=>{u["bda-css-0"]&&(this.saveCss(),this.updateCss())})}componentWillUnmount(){this.editor.destroy()}componentDidUpdate(e,t){const n=this;t.detached&&!n.state.detached&&xe.reactDom.unmountComponentAtNode(n.detachedRoot)}codeMirror(){}get options(){return{lineNumbers:!0,mode:"css",indentUnit:4,theme:"material",scrollbarStyle:"simple"}}get css(){const e=L.getBDData("bdcustomcss");let t="";return e&&""!==e&&(t=Buffer.from(e,"base64").toString("utf8")),t}updateLineCount(){const e=this.refs.editor.value.split("\n").length;e!=this.props.lines&&(this.refs.lines.textContent=Array.from(new Array(e),(e,t)=>t+1).join(".\n")+".",this.props.lines=e)}render(){const e=this,{detached:t}=e.state;return[t&&xe.react.createElement("div",{id:"editor-detached"},xe.react.createElement(Pe,{text:"Custom CSS Editor"}),xe.react.createElement("h3",null,"Editor Detached"),xe.react.createElement("button",{className:"btn btn-primary",onClick:()=>{e.attach()}},"Attach")),!t&&xe.react.createElement("div",null,xe.react.createElement(Pe,{text:"Custom CSS Editor"}),xe.react.createElement("div",{className:"editor-wrapper"},xe.react.createElement("div",{id:"bd-customcss-editor",className:"editor",ref:"editor"},e.css)),xe.react.createElement("div",{id:"bd-customcss-attach-controls"},xe.react.createElement("ul",{className:"checkbox-group"},xe.react.createElement(nt,{id:"live-update",text:"Live Update",onChange:this.onChange,checked:u["bda-css-0"]})),xe.react.createElement("div",{id:"bd-customcss-detach-controls-button"},xe.react.createElement("button",{style:{borderRadius:"3px 0 0 3px",borderRight:"1px solid #3f4146"},className:"btn btn-primary",onClick:()=>{e.onClick("update")}},"Update"),xe.react.createElement("button",{style:{borderRadius:"0",borderLeft:"1px solid #2d2d2d",borderRight:"1px solid #2d2d2d"},className:"btn btn-primary",onClick:()=>{e.onClick("save")}},"Save"),xe.react.createElement("button",{style:{borderRadius:"0 3px 3px 0",borderLeft:"1px solid #3f4146"},className:"btn btn-primary",onClick:()=>{e.onClick("detach")}},"Detach"),xe.react.createElement("span",{style:{fontSize:"10px",marginLeft:"5px"}},"Unsaved changes are lost on detach"),xe.react.createElement("div",{className:"help-text"},"Press ",xe.react.createElement("code",{className:"inline"},"ctrl"),"+",xe.react.createElement("span",{className:"inline"},",")," with the editor focused to access the editor's settings."))))]}onClick(e){const t=this;switch(e){case"update":t.updateCss();break;case"save":t.saveCss();break;case"detach":t.detach()}}onChange(e,t){switch(e){case"live-update":u["bda-css-0"]=t,Xn.saveSettings()}}updateCss(){Ce.removeStyle("customcss"),Ce.addStyle("customcss",this.editor.session.getValue())}saveCss(){L.setBDData("bdcustomcss",Buffer.from(this.editor.session.getValue(),"utf-8").toString("base64"))}detach(){this.setState({detached:!0});const e=this.detachedRoot;e?xe.reactDom.render(this.detachedEditor,e):console.log("FAILED TO INJECT ROOT: .app")}get detachedRoot(){const e=Ce.query("#bd-customcss-detach-container");return e||(this.injectDetachedRoot()?this.detachedRoot:null)}injectDetachedRoot(){const e=Ce.query(".app, ."+ke.removeDa(BDModules.get(e=>e.app&&e.layers)[0].app));return!!e&&(Ce.insertAfter(Ce.createElement('<div id="bd-customcss-detach-container">'),e),!0)}attach(){this.setState({detached:!1})}}class ot extends xe.reactComponent{constructor(e){super(e),this.state={hasError:!1}}componentDidCatch(){this.setState({hasError:!0})}render(){return this.state.hasError?xe.react.createElement("div",{className:"react-error"},"Component Error"):this.props.children}}const it=ot.prototype.render;Object.defineProperty(ot.prototype,"render",{enumerable:!1,configurable:!1,set:function(){console.warn("Addon policy for plugins #5 https://github.com/rauenzi/BetterDiscordApp/wiki/Addon-Policies#plugins")},get:()=>it});class at extends xe.reactComponent{constructor(e){super(e)}static get displayName(){return"ContentColumn"}render(){let e=this.props.title?xe.react.createElement("h2",{className:"ui-form-title h2 margin-reset margin-bottom-20"},this.props.title):null;return[e,this.props.children]}}class lt extends xe.reactComponent{constructor(e){super(e)}render(){return xe.react.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",fill:"#dcddde",className:"bd-reload "+this.props.className,onClick:this.props.onClick,style:{width:this.props.size||"24px",height:this.props.size||"24px"}},xe.react.createElement("path",{d:"M17.65 6.35C16.2 4.9 14.21 4 12 4c-4.42 0-7.99 3.58-7.99 8s3.57 8 7.99 8c3.73 0 6.84-2.55 7.73-6h-2.08c-.82 2.33-3.04 4-5.65 4-3.31 0-6-2.69-6-6s2.69-6 6-6c1.66 0 3.14.69 4.22 1.78L13 11h7V4l-2.35 2.35z"}),xe.react.createElement("path",{fill:"none",d:"M0 0h24v24H0z"}))}}const ct=xe.React;class dt extends ct.Component{render(){const e=this.props.size||"24px";return ct.createElement("svg",{className:this.props.className||"",viewBox:"0 0 24 24",fill:"var(--text-normal)",style:{width:e,height:e},onClick:this.props.onClick},ct.createElement("path",{d:"M3 17.25V21h3.75L17.81 9.94l-3.75-3.75L3 17.25zM20.71 7.04c.39-.39.39-1.02 0-1.41l-2.34-2.34c-.39-.39-1.02-.39-1.41 0l-1.83 1.83 3.75 3.75 1.83-1.83z"}),ct.createElement("path",{d:"M0 0h24v24H0z",fill:"none"}))}}const ut=xe.React;class ht extends ut.Component{render(){const e=this.props.size||"24px";return ut.createElement("svg",{className:this.props.className||"",fill:"var(--text-normal)",viewBox:"0 0 24 24",style:{width:e,height:e},onClick:this.props.onClick},ut.createElement("path",{fill:"none",d:"M0 0h24v24H0V0z"}),ut.createElement("path",{d:"M6 19c0 1.1.9 2 2 2h8c1.1 0 2-.9 2-2V7H6v12zm2.46-7.12l1.41-1.41L12 12.59l2.12-2.12 1.41 1.41L13.41 14l2.12 2.12-1.41 1.41L12 15.41l-2.12 2.12-1.41-1.41L10.59 14l-2.13-2.12zM15.5 4l-1-1h-5l-1 1H5v2h14V4z"}),ut.createElement("path",{fill:"none",d:"M0 0h24v24H0z"}))}}const pt=xe.React,mt=xe.anchorClasses;class gt extends xe.reactComponent{constructor(e){super(e),this.onChange=this.onChange.bind(this),this.showSettings=this.showSettings.bind(this),this.setInitialState(),this.hasSettings=this.props.addon.plugin&&"function"==typeof this.props.addon.plugin.getSettingsPanel,this.settingsPanel="",this.edit=this.edit.bind(this),this.delete=this.delete.bind(this),this.reload=this.reload.bind(this)}setInitialState(){this.state={checked:this.props.enabled,settings:!1,reloads:0,trusted:!1}}showSettings(){this.hasSettings&&this.setState({settings:!0})}closeSettings(){this.panelRef.current.innerHTML="",this.setState({settingsOpen:!1})}componentDidUpdate(){this.state.settings&&("object"==typeof this.settingsPanel&&this.refs.settingspanel.appendChild(this.settingsPanel),u["fork-ps-3"]&&setImmediate(()=>{const e=this.refs.cardNode,t=e.closest('div[class*="contentRegionScroller-"]');if(!((e,t)=>{if(!e)return console.error(new Error("Container is undefined.")),!1;const n=e.scrollTop,s=n+e.clientHeight,r=t.offsetTop,o=r+t.clientHeight;return r<n||o>s})(t,e))return;const n=Ce.offset(e),s=Ce.offset(t),r=t.scrollTop,o=n.top-s.top+t.scrollTop-30;Ce.animate({duration:300,update:function(e){t.scrollTop=o>r?r+e*(o-r):r-e*(r-o)}})}))}getString(e){return e?"string"==typeof e?e:e.toString():"???"}get settingsComponent(){try{this.settingsPanel=this.props.addon.plugin.getSettingsPanel()}catch(e){ke.err("Plugins","Unable to get settings panel for "+this.name+".",e)}return xe.react.createElement("div",{className:"bd-card bd-addon-card settings-open ui-switch-item",ref:"cardNode"},xe.react.createElement("div",{style:{float:"right",cursor:"pointer"},onClick:()=>{this.refs.settingspanel.innerHTML="",this.setState({settings:!1})}},xe.react.createElement(Le,null)),"object"==typeof this.settingsPanel&&xe.react.createElement("div",{id:"plugin-settings-"+this.name,className:"plugin-settings",ref:"settingspanel"}),"object"!=typeof this.settingsPanel&&xe.react.createElement("div",{id:"plugin-settings-"+this.name,className:"plugin-settings",ref:"settingspanel",dangerouslySetInnerHTML:{__html:this.settingsPanel}}))}buildTitle(e,t,n){const s="{{name}} v{{version}} by {{author}}".split(/({{[A-Za-z]+}})/),r=s.findIndex(e=>"{{name}}"==e);r&&(s[r]=pt.createElement("span",{className:"name bda-name"},e));const o=s.findIndex(e=>"{{version}}"==e);r&&(s[o]=pt.createElement("span",{className:"version bda-version"},t));const i=s.findIndex(e=>"{{author}}"==e);if(r){const e={className:"author bda-author"};(n.link||n.id)&&(e.className+=` ${mt.anchor} ${mt.anchorUnderlineOnHover}`,e.target="_blank",n.link&&(e.href=n.link),n.id&&(e.onClick=()=>{xe.LayerStack.popLayer(),xe.openDM(n.id)})),s[i]=pt.createElement(n.link||n.id?"a":"span",e,n.name)}return s.flat()}makeLink(e,t){const n={className:"bda-link bda-link-website",target:"_blank"};return"string"==typeof t&&(n.href=t),"function"==typeof t&&(n.onClick=e=>{e.preventDefault(),e.stopPropagation(),t()}),xe.react.createElement("a",n,e)}makeButton(e,t,n){return pt.createElement(V,{color:"black",side:"top",text:e},pt.createElement("div",{className:"bd-addon-button",onClick:n},t))}componentWillUnmount(){this.unmounted=!0}get links(){const e=[],t=this.props.addon;return t.website&&e.push(this.makeLink("Website",t.website)),t.source&&e.push(this.makeLink("Source",t.source)),t.invite&&e.push(this.makeLink("Support Server",()=>{const e=/\.gg\/(.*)$/;let n=t.invite;e.test(n)&&(n=n.match(e)[1]),xe.LayerStack.popLayer(),xe.InviteActions.acceptInviteAndTransitionToInviteChannel(n)})),t.donate&&e.push(this.makeLink("Donate",t.donate)),t.patreon&&e.push(this.makeLink("Patreon",t.patreon)),e}get footer(){const e=this.links;return(e.length||this.hasSettings)&&xe.react.createElement("div",{className:"bd-card-footer bda-footer"},xe.react.createElement("span",{className:"bd-addon-links bda-links"},...e.map((t,n)=>n<e.length-1?[t," | "]:t).flat()),this.hasSettings&&xe.react.createElement("button",{onClick:this.showSettings,className:"bd-button bda-settings-button",disabled:!this.state.checked},"Settings"))}onChange(){this.props.toggle&&this.props.toggle(this.name),this.setState({checked:!this.state.checked})}edit(){this.props.edit(this.name)}delete(){this.props.remove(this.name)}reload(){this.props.reload(this.name)}get name(){return this.getString(this.props.addon.plugin?this.props.addon.plugin.getName():this.props.addon.name)}get author(){return this.getString(this.props.addon.plugin?this.props.addon.plugin.getAuthor():this.props.addon.author)}get description(){return this.getString(this.props.addon.plugin?this.props.addon.plugin.getDescription():this.props.addon.description)}get version(){return this.getString(this.props.addon.plugin?this.props.addon.plugin.getVersion():this.props.addon.version)}render(){if(this.state.settings)return this.settingsComponent;const{authorId:e,authorLink:t}=this.props.addon,n={};return u["fork-ps-6"]&&(this.isScanning?(!0===this.state.isTrusted&&(n.borderColor="#4087ed"),"suspect"===this.state.isTrusted&&(n.borderColor="rgb(240, 71, 71)")):(this.isScanning=!0,ne(Object(Z.resolve)(this.props.addon.filename.endsWith(".plugin.js")?we.pluginsFolder:we.themesFolder,this.props.addon.filename),e=>{this.unmounted||this.setState({isTrusted:!e.suspect||"suspect"})},()=>{}))),xe.react.createElement("div",{className:"bd-card bd-addon-card settings-closed ui-switch-item",style:n},xe.react.createElement("div",{className:"bd-addon-header bda-header"},xe.react.createElement("div",{className:"bd-card-title bda-header-title"},this.buildTitle(this.name,this.version,{name:this.author,id:e,link:t})),xe.react.createElement("div",{className:"bd-addon-controls bda-controls"},this.props.edit&&this.makeButton("Edit",pt.createElement(dt,{className:"bd-icon"}),this.edit),this.props.remove&&this.makeButton("Delete",pt.createElement(ht,{className:"bd-icon"}),this.delete),this.props.reload&&this.makeButton("Reload",pt.createElement(lt,{className:"bd-icon"}),this.reload),pt.createElement(Je,{onChange:this.onChange,checked:this.state.checked}))),xe.react.createElement("div",{className:"bd-scroller-wrap bda-description-wrap scroller-wrap fade"},xe.react.createElement("div",{className:"bd-scroller bd-addon-description bda-description scroller"},this.description)),this.footer)}}const ft=gt.prototype.render;Object.defineProperty(gt.prototype,"render",{enumerable:!1,configurable:!1,set:function(){console.warn("Addon policy for plugins #5 https://github.com/rauenzi/BetterDiscordApp/wiki/Addon-Policies#plugins")},get:()=>ft});const bt=xe.React;class yt extends bt.Component{render(){const e=this.props.size||"16px";return bt.createElement("svg",{className:this.props.className||"",fill:"var(--text-normal)",viewBox:"0 0 24 24",style:{width:e,height:e}},bt.createElement("path",{d:"M8.12 9.29L12 13.17l3.88-3.88c.39-.39 1.02-.39 1.41 0 .39.39.39 1.02 0 1.41l-4.59 4.59c-.39.39-1.02.39-1.41 0L6.7 10.7c-.39-.39-.39-1.02 0-1.41.39-.38 1.03-.39 1.42 0z"}))}}const vt=xe.React;class wt extends vt.Component{constructor(e){super(e),this.state={open:!1,value:this.props.value||this.props.options[0].value},this.dropdown=vt.createRef(),this.onChange=this.onChange.bind(this),this.showMenu=this.showMenu.bind(this),this.hideMenu=this.hideMenu.bind(this)}showMenu(e){e.preventDefault(),this.setState({open:!0},()=>{document.addEventListener("click",this.hideMenu)})}hideMenu(){this.setState({open:!1},()=>{document.removeEventListener("click",this.hideMenu)})}onChange(e){this.setState({value:e}),this.props.onChange&&this.props.onChange(e)}get selected(){return this.props.options.find(e=>e.value==this.state.value)}get options(){const e=this.selected;return vt.createElement("div",{className:"bd-select-options"},this.props.options.map(t=>vt.createElement("div",{className:"bd-select-option"+(e.value==t.value?" selected":""),onClick:this.onChange.bind(this,t.value)},t.label)))}render(){const e="transparent"==this.props.style?" bd-select-transparent":"",t=this.state.open?" menu-open":"";return vt.createElement("div",{className:`bd-select${e}${t}`,onClick:this.showMenu,ref:this.dropdown},vt.createElement("div",{className:"bd-select-value"},this.selected.label),vt.createElement(yt,{className:"bd-select-arrow"}),this.state.open&&this.options)}}const Ct=xe.React;class Et extends Ct.Component{render(){const e=this.props.size||"16px";return Ct.createElement("svg",{className:this.props.className||"",fill:"var(--text-normal)",viewBox:"0 0 24 24",style:{width:e,height:e}},Ct.createElement("path",{fill:"none",d:"M0 0h24v24H0V0z"}),Ct.createElement("path",{d:"M15.5 14h-.79l-.28-.27C15.41 12.59 16 11.11 16 9.5 16 5.91 13.09 3 9.5 3S3 5.91 3 9.5 5.91 16 9.5 16c1.61 0 3.09-.59 4.23-1.57l.27.28v.79l5 4.99L20.49 19l-4.99-5zm-6 0C7.01 14 5 11.99 5 9.5S7.01 5 9.5 5 14 7.01 14 9.5 11.99 14 9.5 14z"}))}}const St=xe.React;class xt extends St.Component{constructor(e){super(e),this.state={focused:!1}}render(){const e=["bd-search-wrapper"];return this.state.focused&&e.push("focused"),St.createElement("div",{className:e.join(" ")},St.createElement("input",{onChange:this.props.onChange,onKeyDown:this.props.onKeyDown,type:"text",className:"bd-search",placeholder:this.props.placeholder,maxLength:"50",onFocus:()=>{this.setState({focused:!0})},onBlur:()=>{this.setState({focused:!1})}}),St.createElement(Et,null))}}function kt(){return(kt=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var s in n)Object.prototype.hasOwnProperty.call(n,s)&&(e[s]=n[s])}return e}).apply(this,arguments)}const Dt=x.findByDisplayName("Tooltip"),Mt=xe.react;class Bt extends xe.reactComponent{constructor(e){super(e),this.state={sort:"name",ascending:!0,query:""},this.isPlugins="plugins"==this.props.type,this.cookie=this.isPlugins?v:w,this.manager=this.isPlugins?R:Se,this.sort=this.sort.bind(this),this.reverse=this.reverse.bind(this),this.search=this.search.bind(this),this.onAddonChanges=function(){this.forceUpdate()},this.onAddonChanges=this.onAddonChanges.bind(this)}componentDidMount(){const e=(this.isPlugins?"plugin":"theme")+"-";P.on(e+"loaded",this.onAddonChanges),P.on(e+"unloaded",this.onAddonChanges),P.on(e+"reloaded",this.onAddonChanges)}componentWillUnmount(){const e=(this.isPlugins?"plugin":"theme")+"-";P.off(e+"loaded",this.onAddonChanges),P.off(e+"unloaded",this.onAddonChanges),P.off(e+"reloaded",this.onAddonChanges)}openFolder(){const e=n(0).shell;(e.openPath||e.openItem)(this.isPlugins?we.pluginsFolder:we.themesFolder)}edit(e){console.log(e),this.manager.edit(e)}async delete(e){await this.confirmDelete(e)&&this.manager.delete(e)}confirmDelete(e){return new Promise(t=>{Ns.showConfirmationModal("Are You Sure?",`Are you sure you want to delete ${e}?`,{danger:!0,confirmText:"Delete",onConfirm:()=>{t(!0)},onCancel:()=>{t(!1)}})})}get sortOptions(){return[{label:"Name",value:"name"},{label:"Author",value:"author"},{label:"Version",value:"version"},{label:"Recently Added",value:"added"},{label:"Last Modified",value:"modified"},{label:"File Size",value:"size"}]}get directions(){return[{label:"Ascending",value:!0},{label:"Descending",value:!1}]}reverse(e){this.setState({ascending:e})}sort(e){this.setState({sort:e})}search(e){this.setState({query:e.target.value.toLocaleLowerCase()})}getProps(e){return{key:this.getName(e),enabled:this.cookie[this.getName(e)],toggle:this.manager.toggle.bind(this.manager),edit:u["fork-ps-7"]?this.edit.bind(this):null,remove:this.delete.bind(this),addon:e,hash:e.hash}}getString(e){return e?"string"==typeof e?e:e.toString():"???"}get list(){return"plugins"===this.props.type?Object.values(y):Object.values(b)}getAddons(){const e=this.list.sort((e,t)=>{const n=this.state.sort.charAt(0).toUpperCase()+this.state.sort.slice(1),s=e.plugin&&e.plugin["get"+n]?this.getString(e.plugin["get"+n]()):this.getString(e[this.state.sort]),r=t.plugin&&t.plugin["get"+n]?this.getString(t.plugin["get"+n]()):this.getString(t[this.state.sort]);return"string"==typeof s?s.toLocaleLowerCase().localeCompare(r.toLocaleLowerCase()):s>r?1:r>s?-1:0});this.state.ascending||e.reverse();const t=[];for(let n=0;n<e.length;n++){const s=e[n];if(this.state.query){let e=null;const t=this.getName(s),n=this.getAuthor(s),r=this.getDescription(s),o=this.getVersion(s);if(t&&(e=t.toLocaleLowerCase().includes(this.state.query)),n&&(e=e||n.toLocaleLowerCase().includes(this.state.query)),r&&(e=e||r.toLocaleLowerCase().includes(this.state.query)),o&&(e=e||o.toLocaleLowerCase().includes(this.state.query)),!e)continue}const r=this.getProps(s);t.push(Mt.createElement(ot,null,Mt.createElement(gt,kt({},r,{reload:!u["fork-ps-5"]&&this.manager.reload.bind(this.manager)}))))}return t}getName(e){return this.getString(e.plugin?e.plugin.getName():e.name)}getAuthor(e){return this.getString(e.plugin?e.plugin.getAuthor():e.author)}getDescription(e){return this.getString(e.plugin?e.plugin.getDescription():e.description)}getVersion(e){return this.getString(e.plugin?e.plugin.getVersion():e.version)}renderCheckUpdates(){if(!window.ZeresPluginLibrary)return null;if(!window.PluginUpdates)return null;if("function"!=typeof window.PluginUpdates.checkAll)return null;if(!this.isPlugins)return null;let e,t=!1;return Mt.createElement(V,{text:"Checks for updates of plugins that support this feature. Right-click for a list."},Mt.createElement("span",{style:{marginLeft:"10px"},onMouseLeave:()=>{t=!1,e.hide()}},Mt.createElement(Lightcord.Api.Components.inputs.Button,{ref:"checkUpdateButton",color:"brand",look:"filled",size:"min",hoverColor:"default",onClick:()=>{try{ke.showToast("Plugin update check in progress.",{type:"info"}),window.PluginUpdates.checkAll().then(()=>{ke.showToast("Plugin update check complete.",{type:"success"})}).catch(e=>{console.error(e),ke.showToast("An error occured while checking update.",{type:"error"})})}catch(e){console.error(e),ke.showToast("An error occured while checking update.",{type:"error"})}},wrapper:!1,disabled:!1,onRightClick:()=>{this.refs.checkUpdateButton&&window.PluginUpdates&&window.PluginUpdates.plugins&&(t||(e=new G(this.refs.checkUpdateButton.refs.original.refs.button,Object.values(window.PluginUpdates.plugins).map(e=>e.name).join(", "),{side:"bottom",attachEvents:!1}),e.show(),t=!0))}},"Check for Updates")))}render(){const e=Mt.createElement(Dt,{color:"black",position:"top",text:"Reload List"},e=>Mt.createElement(lt,kt({},e,{className:"bd-icon bd-reload bd-reload-header",size:"18px",onClick:async()=>{this.isPlugins?R.updatePluginList():Se.updateThemeList(),this.forceUpdate()}}))),t=this.getAddons();return Mt.createElement(at,{title:`${this.props.type.toUpperCase()}${t.length}`},Mt.createElement(Lightcord.Api.Components.inputs.Button,{key:"folder-button",color:"brand",look:"filled",size:"min",hoverColor:"default",onClick:this.openFolder.bind(this),wrapper:!1,style:{marginLeft:"10px"}},"Open ",this.isPlugins?"Plugin":"Theme"," Folder"),this.renderCheckUpdates(),!u["fork-ps-5"]&&e,Mt.createElement("div",{className:"bd-controls bd-addon-controls"},Mt.createElement(xt,{onChange:this.search,placeholder:`Search ${this.props.type}...`}),Mt.createElement("div",{className:"bd-addon-dropdowns"},Mt.createElement("div",{className:"bd-select-wrapper"},Mt.createElement("label",{className:"bd-label"},"Sort by:"),Mt.createElement(wt,{options:this.sortOptions,onChange:this.sort,style:"transparent"})),Mt.createElement("div",{className:"bd-select-wrapper"},Mt.createElement("label",{className:"bd-label"},"Order:"),Mt.createElement(wt,{options:this.directions,onChange:this.reverse,style:"transparent"})))),Mt.createElement("div",{className:"bda-slist bd-addon-list"},t))}}const Nt=Bt.prototype.render;Object.defineProperty(Bt.prototype,"render",{enumerable:!1,configurable:!1,set:function(){console.warn("Addon policy for plugins #5 https://github.com/rauenzi/BetterDiscordApp/wiki/Addon-Policies#plugins")},get:()=>Nt});const Lt=BDModules.get(e=>e.Dispatcher&&e.default&&e.default.dispatch)[0].default,At=BDModules.get(e=>e.ActionTypes)[0].ActionTypes,Pt=process.pid;var Tt=new class{constructor(){this.enabled=!1,this.game=h}get formatedGame(){if(!this.game)return null;if(!1===this.enabled)return null;return{name:this.game.name||p.name,application_id:this.game.application_id||p.application_id,details:this.game.details||void 0,state:this.game.state||void 0,timestamps:this.game["timestamps.start"]?{start:this.game["timestamps.start"]}:void 0,assets:this.game["assets.large"]?{large_image:this.game["assets.large"],small_image:this.game["assets.small"]||void 0}:void 0}}sendGame(){Lt.dispatch({type:At.LOCAL_ACTIVITY_UPDATE,socketId:"lightcord-spoof-socket",pid:Pt,activity:this.formatedGame})}enable(){this.enabled||(this.enabled=!0,console.log("Enabling custom RichPresence"),this.set(h||Object.create(p)),this.sendGame())}disable(){this.enabled&&(this.enabled=!1,console.log("Disabling custom RichPresence"),this.sendGame())}async fetchAssets(e){let t=await BDModules.get(e=>e.getAssets)[0].getAssets(e);if(t.undefined&&"number"==typeof t.undefined)throw new Error("Unknown Application");return t}set(e){this.game=e,this.sendGame()}};const Rt=xe.React;let Ot;class jt extends Rt.Component{constructor(e){super(e),this.state={data:L.getSettingGroup("rpc")||p,assets:[]},this.preview=null,this.isfetching=!1,this.state.data.application_id&&this.fetchAssets(),this.assetComponents=new Set}updateWhenFetched(e){this.assetComponents.add(e)}onChange(e,t){let n=_t.find(t=>t.id===e.props.id);this.setState({data:Object.assign(h,this.state.data,{[n.id]:t||null}),assets:this.state.assets}),"application_id"===e.props.id&&this.fetchAssets(),L.setSettingGroup("rpc",h),this.preview.forceUpdate(),Tt.set(h)}fetchAssets(){if(!0===this.isfetching){let e=this.state.data.application_id;setTimeout(()=>{this.state.data.application_id===e&&this.fetchAssets()},5e3)}if(!this.state.data.application_id)return this.setState({data:this.state.data,assets:[]}),this.forceUpdate(),void this.assetComponents.forEach(e=>e.forceUpdate());this.isfetching=!0,Tt.fetchAssets(this.state.data.application_id).then(e=>{this.isfetching=!1,this.setState({data:this.state.data,assets:Object.keys(e).map(t=>{let n=e[t];return{id:n.id,name:n.name,type:n.type}})}),this.forceUpdate(),this.assetComponents.forEach(e=>e.forceUpdate())}).catch(()=>{this.isfetching=!1,this.setState({data:this.state.data,assets:[]}),this.forceUpdate(),this.assetComponents.forEach(e=>e.forceUpdate())})}updatePreview(e){this.setState({data:e})}get modules(){return Ot||(Ot=[BDModules.get(e=>e.marginBottom20)[0]])}render(){let[e]=this.modules;return[Rt.createElement(Xe,{title:"RichPresence Settings",settings:this.props.settings,onChange:this.props.onChange}),Rt.createElement(et,null),Rt.createElement(Pe,{text:"RichPresence"}),Rt.createElement("div",null,this.optionsComponents),Rt.createElement("div",null,Rt.createElement(et,null),Rt.createElement(Pe,{text:"Preview"}),Rt.createElement(en,{settings:this})),Rt.createElement("div",{className:e.marginBottom20}),Rt.createElement("button",{style:{opacity:.01},onClick:window.ohgodohfuck},"Oh god Oh fuck"),Rt.createElement("button",{style:{opacity:.01},onClick:()=>{_.remote.shell.openExternal("https://www.youtube.com/watch?v=LkYa7rps_g4")}},"See ? I pulled a litle sneaky on ya")]}get optionsComponents(){return this._optionsComponents||(this._optionsComponents=_t.map(e=>{if("text"===e.type)return Rt.createElement(Ft,{setting:e,manager:this,id:e.id});if("number"===e.type){return[Rt.createElement(zt,{setting:e,manager:this,id:e.id})]}return"choice"===e.type?["assets.small","assets.large"].includes(e.id)?Rt.createElement(Ht,{setting:e,manager:this,id:e.id,choices:[{value:"none",label:"No assets"}].concat(this.state.assets.map(e=>({value:"asset-"+e.id,label:e.name})))}):"Unknown choice.":void 0}))}}const _t=[{title:"Application ID",id:"application_id",type:"number",placeholder:"711416957718757418"},{title:"Name",id:"name",type:"text",placeholder:"Lightcord"},{title:"Details",id:"details",type:"text",placeholder:"Browsing Discord"},{title:"State",id:"state",type:"text",placeholder:"Lightcord Client"},{title:"Timestamp Start",id:"timestamps.start",type:"number",get placeholder(){return Date.now()}},{title:"LargeAsset",id:"assets.large",type:"choice"},{title:"SmallAsset",id:"assets.small",type:"choice"}];let $t,It,Wt;class Ft extends Rt.PureComponent{get modules(){return $t&&$t[0]?$t:$t=[BDModules.get(e=>e.removeKeybind)[0],BDModules.get(e=>e.marginBottom20)[0],BDModules.get(e=>e.defaultMarginh5)[0],BDModules.get(e=>e.colorStandard)[0],BDModules.get(e=>e.size32)[0],BDModules.get(e=>e._horizontal)[0],BDModules.get(e=>e.inputMini)[0],BDModules.get(e=>e.size16&&e.size20)[0]]}constructor(e){super(e);let t=this.props.setting;this.state={data:this.props.manager.state.data[t.id]},this.input=Rt.createElement(window.Lightcord.Api.Components.inputs.TextInput,{placeholder:t.placeholder,name:t.id,value:this.state.data,onChange:e=>{this.setState({data:e}),!this.lastEdited||this.lastEdited<Date.now()-500?(this.props.manager.onChange(this,e),this.lastEdited=Date.now()):this.isTiming||(this.isTiming=setTimeout(()=>{this.props.manager.onChange(this,this.state.data),this.isTiming=null,this.lastEdited=Date.now()},500))},type:"text"})}render(){let e=this.props.setting,[t,n,s,r,o,i,a,l]=this.modules;return Rt.createElement("div",{className:t.row+" "+n.marginBottom20},Rt.createElement("div",{className:`${t.item} ${i.flexChild}`},Rt.createElement("h5",{className:r.colorStandard+" "+o.size14+" "+s.h5+" "+s.defaultMarginh5},e.title),this.input),Rt.createElement(Qt,null))}}class zt extends Rt.PureComponent{get modules(){return It||(It=[BDModules.get(e=>e.removeKeybind)[0],BDModules.get(e=>e.marginBottom20)[0],BDModules.get(e=>e.defaultMarginh5)[0],BDModules.get(e=>e.colorStandard)[0],BDModules.get(e=>e.size32)[0],BDModules.get(e=>e._horizontal)[0],BDModules.get(e=>e.inputMini)[0],BDModules.get(e=>e.size16&&e.size20)[0],BDModules.get(e=>e.colorTransparent)[0]])}constructor(e){super(e);let t=this.props.setting;this.state={data:this.props.manager.state.data[t.id]},this.input=Rt.createElement(window.Lightcord.Api.Components.inputs.TextInput,{placeholder:t.placeholder,name:t.id,value:this.state.data,type:"number",onChange:(e,t,n)=>{(e=e.replace(/[^\d]+/g,""))!=this.state.data?(!this.lastEdited||this.lastEdited<Date.now()-500?(this.props.manager.onChange(this,e),this.lastEdited=Date.now()):this.isTiming||(this.isTiming=setTimeout(()=>{this.props.manager.onChange(this,this.state.data),this.isTiming=null,this.lastEdited=Date.now()},500)),this.setState({data:e})):n.setValue(e)},type:"text"})}render(){let e=this.props.setting,[t,n,s,r,o,i]=this.modules;return Rt.createElement("div",{className:t.row+" "+n.marginBottom20},Rt.createElement("div",{className:`${t.item} ${i.flexChild}`},Rt.createElement("h5",{className:r.colorStandard+" "+o.size14+" "+s.h5+" "+s.defaultMarginh5},e.title),this.input,"timestamps.start"===e.id?Rt.createElement(Lightcord.Api.Components.inputs.Button,{onClick:()=>{DiscordNative.clipboard.copy(Date.now()+"")},color:"brand"},"Copy current timestamp"):null),Rt.createElement(Qt,null))}}class Ht extends Rt.PureComponent{constructor(e){super(e);let t=this.props.setting;this.state={data:this.props.manager.state.data[t.id]?"asset-"+this.props.manager.state.data[t.id]:"none"},this.props.manager.updateWhenFetched(this)}onChange(e){let t=e.value;!this.lastEdited||this.lastEdited<Date.now()-500?(this.props.manager.onChange(this,"none"===t?null:t.replace("asset-","")),this.lastEdited=Date.now()):this.isTiming||(this.isTiming=setTimeout(()=>{this.props.manager.onChange(this,"none"===this.state.data?null:this.state.data.replace("asset-","")),this.isTiming=null,this.lastEdited=Date.now()},500)),this.setState({data:t}),this.forceUpdate()}get modules(){return Wt||(Wt=[BDModules.get(e=>e.removeKeybind)[0],BDModules.get(e=>e.marginBottom20)[0],BDModules.get(e=>e.defaultMarginh5)[0],BDModules.get(e=>e.colorStandard)[0],BDModules.get(e=>e.size32)[0],BDModules.get(e=>e._horizontal)[0]])}render(){let e=this.props.setting,[t,n,s,r,o,i]=this.modules,a=this.props.manager.state.assets.map(e=>({value:"asset-"+e.id,label:e.name}));return a.unshift({value:"none",label:"No assets"}),Rt.createElement("div",{className:t.row+" "+n.marginBottom20},Rt.createElement("div",{className:`${t.item} ${i.flexChild}`},Rt.createElement("h5",{className:r.colorStandard+" "+o.size14+" "+s.h5+" "+s.defaultMarginh5},e.title),Rt.createElement(window.Lightcord.Api.Components.inputs.Dropdown,{value:this.state.data,options:a,onChange:this.onChange.bind(this)})),Rt.createElement(Qt,null))}}let Ut,qt,Gt,Vt,Jt,Zt,Yt,Kt,Xt=[];class Qt extends Rt.PureComponent{get modules(){return Xt&&Xt[0]?Xt:Xt=[BDModules.get(e=>e.divider&&1===Object.keys(e).length)[0],BDModules.get(e=>e.dividerDefault)[0]]}render(){let[e,t]=this.modules;return Rt.createElement("div",{class:`${e.divider} ${t.dividerDefault}`})}}Rt.Component;class en extends Rt.Component{constructor(e={}){super(e),this.state={active:"profile"},this.tabs=[],this.props.settings.preview=this}changeTab(e){this.state.active!==e.props.id&&(this.tabs.forEach(e=>{e.setActive(!1)}),e.setActive(!0),this.setState({active:e.props.id}))}render(){return Rt.createElement("div",{className:"lc-tabWrapper"},Rt.createElement("div",{className:"lc-tabnav",style:{flex:"0 1 auto"}},Rt.createElement(tn,{preview:this,title:"Full Profile",id:"profile"}),Rt.createElement(tn,{preview:this,title:"User Popout",id:"popout"})),Rt.createElement(nn,{preview:this.preview,state:this.state.rpc,props:{preview:this},key:this.state.active}))}isActive(e){return this.state.active===e}get preview(){return"profile"===this.state.active?rn:sn}}class tn extends Rt.Component{constructor(e){super(e),this.state={active:e.preview.isActive(e.id)},e.preview.tabs.push(this)}setActive(e){this.setState({active:!!e})}render(){let e="lc-navItem";return this.state.active?e+=" lc-navItemActive":e+=" lc-navItemInactive",Rt.createElement("div",{className:e,onClick:()=>{this.props.preview.changeTab(this)}},this.props.title)}}class nn extends Rt.Component{componentDidCatch(e,t){console.error(e,t),this.setState({error:!0})}render(){if(this.state||(this.state={error:!1}),this.state.error)return Ut=Ut||xe.WebpackModules.find(e=>e.emptyStateImage&&e.emptyState),Ut?Rt.createElement("div",{style:{margin:"20px"}},Rt.createElement("div",{style:{backgroundColor:"var(--background-primary)",padding:"30px 30px",borderRadius:"8px"},className:"lc-tab-box-shadow "+Ut.emptyState},Rt.createElement("div",{className:Ut.emptyStateImage,style:{marginTop:"20px"}}),Rt.createElement("div",{className:Ut.emptyStateHeader},"An error occured"),Rt.createElement("p",{className:Ut.emptyStateSubtext},"Please check the console for more informations. Join our ­",Rt.createElement("a",{className:`${xe.anchorClasses.anchor} ${xe.anchorClasses.anchorUnderlineOnHover}`,role:"button",tabindex:0,onClick:()=>{xe.joinLC()}},"support server"),"­ for help."))):(ke.showToast("An error occured. Please check the console for more informations."),null);try{const e=new this.props.preview(this.props.props);return e.setState(this.props.state),e.render()}catch(e){return console.error(e),this.state.error=!0,this.render()}}}class sn extends Rt.Component{get modules(){return qt||(qt=[xe.WebpackModules.find(e=>e.default&&"UserPopout"===e.default.displayName),xe.WebpackModules.find(e=>e.default&&e.default.getCurrentUser)])}getComponent(){let[e,t]=this.modules;const n=t.default.getCurrentUser();return Rt.createElement(()=>{let t=e.default({userId:n.id,guildId:null,channelId:null,disableUserProfileLink:!0});return Gt=t.type,Vt=t.props,this.render()},null)}render(){if(!Gt)return this.getComponent();let[e,t]=this.modules;const n=t.default.getCurrentUser();let s=Object.assign({},p,this.props.preview.props.settings.state.data);const r=function(){if(!this.game)return null;return{name:this.game.name||p.name,application_id:this.game.application_id||p.application_id,details:this.game.details||void 0,state:this.game.state||void 0,timestamps:this.game["timestamps.start"]?{start:this.game["timestamps.start"]}:void 0,assets:this.game["assets.large"]?{large_image:this.game["assets.large"],small_image:this.game["assets.small"]||void 0}:void 0,type:0}}.call({game:s}),o=new Gt(Object.assign({},Vt,{activity:r,userId:n.id})).render().props.children,i=Rt.createElement("div",window.Lightcord.Api._.excludeProperties(o.props,["onClick","onContextMenu"]));return Rt.createElement("div",{className:"lc-userPopout lc-tab-box-shadow"},i)}}class rn extends Rt.Component{get modules(){return Jt||(Jt=[xe.WebpackModules.find(e=>e.default&&"UserProfile"===e.default.displayName),xe.WebpackModules.find(e=>e.default&&e.default.getCurrentUser)])}render(){let[e,t]=this.modules;const n=t.default.getCurrentUser();if(!Zt){const t=new e.default({user:n}).render();Kt=t.type;const s=new t.type(t.props).render(),r=s.type.render(s.props,null),o=new r.type(r.props).render();Zt=o.type}if(!Zt)throw new Error("Couldn't find the UserProfileComponent component.");let s=Object.assign({},p,this.props.preview.props.settings.state.data);const r=function(){if(!this.game)return null;return{name:this.game.name||p.name,application_id:this.game.application_id||p.application_id,details:this.game.details||void 0,state:this.game.state||void 0,timestamps:this.game["timestamps.start"]?{start:this.game["timestamps.start"]}:void 0,assets:this.game["assets.large"]?{large_image:this.game["assets.large"],small_image:this.game["assets.small"]||void 0}:void 0,type:0}}.call({game:s});Yt=new Kt({user:n,close:()=>{}}).render().props;const o=new Zt(Object.assign({},Yt,{activity:r})).render().props.children;return o.props.style={width:"auto"},Rt.createElement("div",{className:"lc-tab lc-tab-box-shadow"},o)}}const on=xe.React;let an=BDModules.get(e=>e.defaultMarginh5)[0],ln=BDModules.get(e=>e.colorStandard)[0],cn=BDModules.get(e=>e.size32)[0],dn=BDModules.get(e=>e.scrollbarGhostHairline)[0];const un=BDModules.get(e=>e.default&&e.default.getGuilds)[0].default,hn=BDModules.get(e=>e.default&&e.default.getRelationships)[0].default,pn=BDModules.get(e=>e.default&&e.default.getSessions)[0].default,mn=BDModules.get(e=>e.default&&e.default.getCurrentUser)[0].default;class gn extends on.Component{constructor(e){super(e)}render(){return an||(an=BDModules.get(e=>e.defaultMarginh5)[0]),ln||(ln=BDModules.get(e=>e.colorStandard)[0]),cn||(cn=BDModules.get(e=>e.size32)[0]),[on.createElement(Pe,{text:"Account Infos"}),on.createElement("div",null,on.createElement("h5",{className:ln.colorStandard+" "+cn.size14+" "+an.h5+" "+an.defaultMarginh5},"Profile"),on.createElement(vn,{content:this.getProfileValue(),language:"diff"}),on.createElement("h5",{className:ln.colorStandard+" "+cn.size14+" "+an.h5+" "+an.defaultMarginh5},"Statistics"),on.createElement(vn,{content:this.getStatistics(),language:"diff"}),on.createElement("h5",{className:ln.colorStandard+" "+cn.size14+" "+an.h5+" "+an.defaultMarginh5},"Connected Sessions"),on.createElement(vn,{content:this.getSessionValue(),language:"diff"})),on.createElement("div",{className:BDModules.get(e=>e.marginBottom20)[0].marginBottom20})]}getSessionValue(){const e=pn.getSessions(),t=Object.keys(e).filter(e=>"all"!==e).map(t=>e[t]);return 0===t.length?"- No session detected. Please try in a few seconds":t.map(e=>`+ id: ${e.sessionId}\n+ os: ${e.clientInfo.os[0].toUpperCase()+e.clientInfo.os.slice(1)}\n+ client: ${e.clientInfo.client}\n+ status: ${e.status}\n+ Activities: ${e.activities.length}`).join("\n"+"-".repeat(38)+"\n")}getProfileValue(){const e=mn.getCurrentUser(),t=e.createdAt;let n=e.avatarURL;return e.avatar&&e.avatar.startsWith("a_")&&(n=e.getAvatarURL("gif")),n.startsWith("/")&&(n="https://discord.com"+n),n.endsWith("?size=128")&&(n=n.replace("?size=128","?size=4096")),`+ Username: ${e.username}\n+ Discriminator: ${e.discriminator}\n+ Tag: ${e.tag}\n+ ID: ${e.id}\n+ Avatar: ${e.avatar}\n+ Avatar URL: ${n}\n+ Creation Date: ${t.getDate().toString().padStart(2,"0")}/${(t.getMonth()+1).toString().padStart(2,"0")}/${t.getFullYear().toString().padStart(2,"0")} ${t.getHours().toString().padStart(2,"0")}h ${t.getMinutes().toString().padStart(2,"0")}min ${t.getSeconds()}s\n+ Flags: ${e.flags}\n+ Has Nitro: ${e.hasPremiumSubscription?"Yes":"No"}\n- Email: ${e.email}\n- 2FA: ${e.mfaEnabled?"Yes":"No"}\n- Has Been On Mobile: ${e.mobile?"Yes":"No"}\n- Phone: ${e.phone||"None"}\n- Verified: ${e.verified}\n- Can See NSFW Channels: ${e.nsfwAllowed}`}getStatistics(){const e=Object.values(un.getGuilds()),t=Object.keys(hn.getRelationships()),n=t.filter(e=>hn.isFriend(e)),s=t.filter(e=>hn.isBlocked(e));return`+ Server Count: ${e.length} servers\n+ Relations: ${t.length} relations\n+ Friends Count: ${n.length} friends\n- Blocked Users Count: ${s.length} blocked users`}}let fn=BDModules.get(e=>e.highlight)[0],bn=BDModules.get(e=>e.markup)[0],yn=BDModules.get(e=>e.messageContent)[0];class vn extends on.Component{render(){return bn||(bn=BDModules.get(e=>e.markup)[0]),yn||(yn=BDModules.get(e=>e.messageContent)[0]),dn||(dn=BDModules.get(e=>e.scrollbarGhostHairline)[0]),fn||(fn=BDModules.get(e=>e.highlight)[0]),on.createElement("div",{class:`${bn.markup} ${yn.messageContent}`},on.createElement("pre",null,on.createElement("code",{class:dn.scrollbarGhostHairline+" hljs",dangerouslySetInnerHTML:{__html:fn.highlight(this.props.language,this.props.content).value}})),on.createElement("div",{className:BDModules.get(e=>e.marginBottom8)[0].marginBottom8}))}}const wn=window.Lightcord.DiscordModules.dispatcher,Cn=BDModules.get(e=>e.default&&e.default.getChannel&&e.default.hasChannel)[0].default;let En=BDModules.get(e=>e.default&&e.default.addRelationship)[0],Sn=BDModules.get(e=>e.default&&e.default.closePrivateChannel)[0];const xn={};let kn=BDModules.get(e=>e.default&&e.default.getCurrentUser)[0];var Dn=new class{constructor(){this.antiDM=this.antiDM.bind(this),this.enabled=!1}enable(){this.enabled||(this.enabled=!0,wn.subscribe("MESSAGE_CREATE",this.antiDM))}disable(){this.enabled&&(this.enabled=!1,wn.unsubscribe("MESSAGE_CREATE",this.antiDM))}antiDM(e){if(!e.message.author.bot)return;if(e.message.author.id===(kn?kn.default.getCurrentUser():null).id&&e.message.guild_id)return;const t=Cn.getChannel(e.message.channel_id);var n;t&&(1===t.type&&(xn[e.message.author.id]||(n=e.message,(/(discord\.gg|discord\.com\/invite\/|discordapp\.com\/invite\/)/g.test(n.content)||Mn(n,"discord.gg/")||Mn(n,"discord.com/invite/")||Mn(n,"discordapp.com/invite/"))&&(xn[e.message.author.id]=!0,ke.showToast(`[AdBlock]: Blocked ${e.message.author.username}#${e.message.author.discriminator}`,{type:"warning"}),En||(En=BDModules.get(e=>e.default&&e.default.addRelationship)[0]),En.default.addRelationship(e.message.author.id,{location:"ContextMenu"},2),Sn||(Sn=BDModules.get(e=>e.default&&e.default.closePrivateChannel)[0]),Sn.default.closePrivateChannel(t.id,!1)))))}};function Mn(e,t){let n=e.embeds||[];return 0!==n.length&&n.map(e=>"rich"===e.type&&(!!(e.title||"").includes(t)||(!!(e.description||"").includes(t)||(!!((e.footer?e.footer.text:"")||"").includes(t)||!!(e.fields||[]).map(e=>e.value.includes(t)||e.name.includes(t)).includes(!0))))).includes(!0)}let Bn;const Nn=ke.removeDa;var Ln=new class{constructor(){this.enabled=!1}enable(){this.enabled||(this.enabled=!0,Bn=Bn||function(){let e=BDModules.get(e=>e.standardSidebarView)[0];if(!e)return null;let t=Nn(e.standardSidebarView),n=[],s=BDModules.get(e=>e.userSettingsAccount)[0];const r=BDModules.get(e=>"string"==typeof e.children)[0];return n.push(`#app-mount .${t} .payment-info .${Nn(BDModules.get(e=>e.description&&"string"==typeof e.description&&e.description.includes("formText"))[0].description)}`),n.push(`#app-mount .${t} .${Nn(BDModules.get(e=>e.paymentSourceRow)[0].paymentSourceRow)} .${Nn(BDModules.get(e=>e.subText&&e.descriptionWrapper)[0].subText)}`),s&&(n.push(`#app-mount .${t} .${Nn(s.userSettingsAccount)} div:nth-child(2)>div:nth-child(2)>.${Nn(BDModules.get(e=>e.viewBody)[0].viewBody)}`),n.push(`.${Nn(s.userSettingsSecurity)} .${Nn(r.children)} > div:nth-child(2)`)),console.log(n),n}(),Bn||console.error(new Error("Couldn't find selectors to blur personnal informations.")),Ce.addStyle("blurPrivate",`\n${Bn.join(", ")} {\n transition: all 150ms cubic-bezier(.55,.085,.68,.53);\n filter: blur(4px);\n opacity: .8;\n}\n\n${Bn.map(e=>e+":hover").join(", ")} {\n transition: all 150ms cubic-bezier(.55,.09,.68,.53);\n filter: none;\n opacity: 1;\n}`))}disable(){this.enabled&&(this.enabled=!1,Ce.removeStyle("blurPrivate"))}},An=new class{constructor(){window.Lightcord.Api.ensureExported(e=>e.default&&e.default.startTyping).then(e=>{let t=this;const n=e.default.startTyping;e.default.startTyping=function(){if(t.disabled)return n.call(this,...arguments)};const s=e.default.stopTyping;e.default.stopTyping=function(){if(t.disabled)return s.call(this,...arguments)},this.disabled=!0}),window.Lightcord.BetterDiscord.DisableTyping=this}disable(){this.disabled=!0}enable(){this.disabled=!1}};function Pn(){return(Pn=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var s in n)Object.prototype.hasOwnProperty.call(n,s)&&(e[s]=n[s])}return e}).apply(this,arguments)}class Tn extends React.Component{render(){const e=this.props;return React.createElement("svg",Pn({viewBox:"0 0 31.3 29.5"},e.svg,{height:"100%"}),React.createElement("path",{d:"M22.8 1s12 8.2 7.4 19.7S16.6 29 20 25.6s-4-5.6-8.7-10L22.8 1",fill:"rgba(227,6,19,.6)"}),React.createElement("path",{d:"M22.1 12.3c-2.5 3.2-6.1 4.8-8.9 4.3L3.6 28.8c-.7.9-1.9 1-2.8.3-.9-.7-1-1.9-.4-2.8L10 14.1c-1.3-2.5-.6-6.4 2-9.7 3.2-4 8-5.5 10.8-3.4s2.4 7.2-.7 11.3z",fill:"#e30613"}))}}function Rn(){return(Rn=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var s in n)Object.prototype.hasOwnProperty.call(n,s)&&(e[s]=n[s])}return e}).apply(this,arguments)}class On extends React.Component{render(){return React.createElement("svg",Rn({xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 36 36"},this.props.svg,{height:"100%"}),React.createElement("path",{fill:"#DD2E44",d:"M33 33a2 2 0 01-2 2H5a2 2 0 01-2-2l1-12h28l1 12z"}),React.createElement("path",{fill:"#EA596E",d:"M13 35c-.792-1.875-1.75-3.291-3.417-4.666 1.75-1.459 4.542-5.5 5.25-8.292s2.75 8.125 2.042 10.625S13 35 13 35zm10.303 0c.791-1.875 1.75-3.291 3.416-4.666-1.75-1.459-4.541-5.5-5.25-8.292-.707-2.792-2.75 8.125-2.04 10.625.708 2.5 3.874 2.333 3.874 2.333z"}),React.createElement("path",{fill:"#BE1931",d:"M3.728 24.263A2.5 2.5 0 008 22.5c0-.565-.195-1.081-.511-1.5H4l-.272 3.263zm28.544 0L32 21h-3.489A2.482 2.482 0 0028 22.5a2.5 2.5 0 004.272 1.763z"}),React.createElement("circle",{cx:"14",cy:"23",r:"2",fill:"#BE1931"}),React.createElement("circle",{cx:"22",cy:"23",r:"2",fill:"#BE1931"}),React.createElement("circle",{cx:"10",cy:"23",r:"2",fill:"#BE1931"}),React.createElement("circle",{cx:"26",cy:"23",r:"2",fill:"#BE1931"}),React.createElement("path",{d:"M23 35H13s2-6 2-13h6c0 7 2 13 2 13zM17 2h2v7h-2z"}),React.createElement("path",{fill:"#55ACEE",d:"M18.838.206C17.667.042 17 .318 17 1.418v1c0 1.1.865 1.753 1.923 1.451l5.154-.901c1.715-.343 1.548-1.593.085-1.884L18.838.206z"}),React.createElement("path",{fill:"#CCD6DD",d:"M18 6l-.081.123C10.938 16.981 3 15.015 3 19v2.5a2.5 2.5 0 004.95.5H12a2 2 0 004 0h4a2 2 0 004 0h4.05a2.5 2.5 0 004.95-.5V19c0-4-8-2-15-13z"}),React.createElement("g",{fill:"#F5F8FA"},React.createElement("path",{d:"M17.948 6.078l-.03.045C17.132 11.619 10.811 16.126 8 18v4a2 2 0 004 0v-4c.982-.982 5.813-6.787 5.984-11.732-.01-.064-.027-.126-.036-.19zm.08.398C18.324 11.374 23.031 17.031 24 18v4a2 2 0 004 0v-4c-2.75-1.833-8.953-6.19-9.972-11.524z"}),React.createElement("path",{d:"M17.984 6.27C17.922 8.346 17.606 16.394 16 18v4a2 2 0 004 0v-4c-1.564-1.564-1.905-9.241-1.979-11.559-.011-.057-.027-.113-.037-.171z"})))}}function jn(){return"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,(function(e){var t=16*Math.random()|0;return("x"==e?t:3&t|8).toString(16)}))}const _n={};let $n=[];var In=new class{constructor(){this._cache={badges:{}},window.Lightcord.BetterDiscord.DistantServer=this}get cache(){return this._cache}set cache(e){return"object"!=typeof e||"object"!=typeof this._cache?this._cache=e:this._cache=Object.assign(this._cache,e)}async getBadges(e){if(this.cache.badges[e])return this.cache.badges[e];if(_n[e])return _n[e];let t;const n=new Promise(e=>t=e);_n[e]=n;const s=[];for(let t of zn.badges)t.defaultUsers.includes(e)&&s.push(t);const r=await new Promise(t=>{if(!u["lightcord-5"])return t([]);$n.push([e,t]),setTimeout(()=>{let e=$n;0!==e.length&&($n=[],Wn(Hn.badges,"POST",JSON.stringify(e.map(e=>e[0]))).then(async t=>{200!==t.status&&e.forEach(e=>{e[1]([])});const n=await t.json();for(let t of n){e.find(e=>e[0]===t.user_id)[1](t.badges)}}).catch(t=>{t instanceof Fn||console.error(t),e.forEach(e=>{e[1]([])})}))},0)});for(let e of r)zn.badges.find(t=>t.id===e)&&(s.find(t=>t.id===e)||s.push(zn.badges.find(t=>t.id===e)));return this.cache={badges:Object.assign(this.cache.badges,{[e]:s})},setTimeout(()=>{delete this.cache.badges[e]},6e5),t(s),delete _n[e],s}};const Wn=function(e,t,n){return u["lightcord-5"]?j()(`${zn.SERVER_URL}/api/v1${e}`,{method:t,headers:{CLIENT:"Lightcord",Authorization:window.Lightcord.Api.Authorization||"None::Anonymous"},...n?{body:n}:{}}):Promise.reject(new Fn("The current settings blocked the request."))};class Fn extends Error{constructor(){super(...arguments),this.name="LightcordError"}}const zn={SERVER_URL:"https://lightcord.deroku.xyz",badges:[{name:"Lightcord Bug Hunter",id:"f04698f5-816b-41e3-bd01-92291193d7a5",defaultUsers:["696481194443014174","696003456611385396"],scopes:[],component:Tn,href:"https://github.com/lightcord/lightcord/wiki/badges#bug_hunter"},{name:"Buffoon",id:"06904d31-65b4-41ec-a50c-8658bbd1af96",defaultUsers:["389016895543705602","664600134528663565","625350657829896224"],scopes:[],component:On,href:"https://youtu.be/EJtb6z-dlT8?t=145"}]},Hn={badges:"/users/badges"};let Un;class qn extends React.PureComponent{constructor(){super(...arguments),this.state={states:[]}}render(){Un||(Un=x.find(e=>e.FormSection));const e=[...new Set(Object.keys(window.Lightcord.Api.Components).map(e=>Object.keys(window.Lightcord.Api.Components[e]).map(t=>window.Lightcord.Api.Components[e][t])).flat())];return[React.createElement(Un.FormSection,{tag:"h2",title:"Lightcord's Api Availlable components"},React.createElement(Un.FormText,{type:"description",className:"",selectable:!1},"These components are here for the plugin devs. They can quickly embed any component below with this panel.",React.createElement("div",{style:{marginTop:"20px"}}),React.createElement(Lightcord.Api.Components.general.AlertBox,{type:"info"},"All these components have error handling. If you want none, add `.original` after the component path."),React.createElement(Lightcord.Api.Components.general.AlertBox,{type:"warn"},"We do not recommend modifying these component with plugins. Only do this if you know what you are doing.")),React.createElement(et,null),React.createElement(Lightcord.Api.Components.inputs.Button,{color:"brand",look:"outlined",size:"medium",hoverColor:"green",onClick:()=>{_.remote.shell.openExternal("https://lightcord.deroku.xyz/LightcordApi/docs")},wrapper:!1},"Documentation")),e.map(e=>{const t=e.displayName||e.name,n=`Lightcord.Api.Components.${Object.keys(window.Lightcord.Api.Components).find(e=>window.Lightcord.Api.Components[e][t])}.${t}`;return React.createElement(Gn,{key:n,comp:e})})]}get renders(){}}class Gn extends React.Component{constructor(e){super(e),this.state={tab:"preview",elem:e.comp,options:{}}}render(){const e=this.props.comp;let t=[];e.AllPreviews&&(t=e.AllPreviews);let n=this.state,s=()=>{let e={};return t.forEach(t=>{e[Object.keys(t[0])[0]]=t[0][Object.keys(t[0])[0]]}),Object.keys(n.options).forEach(s=>{e[s]=t.find(e=>e.find(e=>e[s]))[n.options[s]][s]}),e},r=(e,t,n)=>{if("string"==typeof e)return e;if("boolean"==typeof e)return String(e);if("function"==typeof e)return e.toString();if("object"==typeof e){if(e&&e.$$typeof&&(e.$$typeof===Symbol.for("react.element")||60103===e.$$typeof)){if("Lightcord.Api.Components.general.Tabs"===t){if("react"===n)return'React.createElement("div", {style: {\nmarginTop: "20px", marginBottom: "20px"\n}},\nReact.createElement("div", {style: {\nbackgroundColor: "var(--background-secondary)",\npadding: "30px 30px",\nborderRadius: "8px"\n}, className: "lc-tab-box-shadow" },\nReact.createElement(Lightcord.Api.Components.general.Title, null, "Preview tabs")\n)\n)';if("jsx"===n)return'<div style={{\nmarginTop: "20px", marginBottom: "20px"\n}}>\n<div style={{\n backgroundColor: "var(--background-secondary)", \n padding: "30px 30px", \n borderRadius: "8px"\n}} className="lc-tab-box-shadow">\n <Lightcord.Api.Components.general.Title>Preview tabs</Lightcord.Api.Components.general.Title>\n</div>\n</div>'}return"Your components here."}return JSON.stringify(e,null," ")}return String(e)},o=function(t){const n=e.displayName||e.name;const o=`Lightcord.Api.Components.${Object.keys(window.Lightcord.Api.Components).find(e=>window.Lightcord.Api.Components[e][n])}.${n}`,i=s();if("jsx"===t){let e,n=[],s=null;if(Object.keys(i).forEach(e=>{if("children"==e)s=r(i[e],o,t);else{let s=e+"=";"string"==typeof i[e]?s+=JSON.stringify(i[e]):s+=`{${r(i[e],o,t)}}`,n.push(s)}}),s){return e=`<${o} ${n.join(" ")}>`,`${e}\n ${s}\n${`</${o}>`}`}return e=`<${o} ${n.join(" ")}/>`,e}if("react"===t){let e=i.children||null;delete i.children,e&&e.$$typeof&&(e.$$typeof===Symbol.for("react.element")||60103===e.$$typeof)&&(e=r(e,o,t));let n=[];Object.keys(i).forEach(e=>{let s=(/[^\w\d_]/g.test(e)?JSON.stringify(e):e)+": ";"string"==typeof i[e]?s+=JSON.stringify(i[e]):s+=r(i[e],o,t).split("\n").map((e,t)=>0===t?e:" "+e).join("\n"),n.push(s)});let s="{";n.length?n.forEach((e,t)=>{let r=t===n.length-1;0===t||(s+=","),s+="\n ",s+=e,r&&(s+="\n}")}):s+="}";let a="string"==typeof e&&e.startsWith("React.createElement")?e:JSON.stringify(e);return`React.createElement(${o}, ${s}, ${a})`}},i=e.help||{},a=i.info?React.createElement(window.Lightcord.Api.Components.general.AlertBox,{type:"info"},i.info):null,l=i.warn?React.createElement(window.Lightcord.Api.Components.general.AlertBox,{type:"warn"},i.warn):null,c=i.danger?React.createElement(window.Lightcord.Api.Components.general.AlertBox,{type:"danger"},i.danger):null,d=i.error?React.createElement(window.Lightcord.Api.Components.general.AlertBox,{type:"error"},i.error):null,u=i.success?React.createElement(window.Lightcord.Api.Components.general.AlertBox,{type:"success"},i.success):null;return React.createElement("div",null,React.createElement(window.Lightcord.Api.Components.general.SettingsTitle,null,e.displayName||e.name),a,u,l,d,c,t.map(e=>{if(e[0].onClick)return null;if(e[0].text)return null;if(e[0].children)return null;if(1===e.length)return null;let t=Object.keys(e[0])[0];return[React.createElement(window.Lightcord.Api.Components.general.SettingSubTitle,null,t),React.createElement(window.Lightcord.Api.Components.inputs.Dropdown,{options:e.map((e,t)=>({value:"opt-"+t,label:JSON.stringify(e[Object.keys(e)[0]])})),value:"opt-"+(n.options[t]||"0"),onChange:e=>{this.setState({options:Object.assign({},n.options,{[t]:(e.value||"0").replace("opt-","")})})},searchable:!0}),React.createElement("div",{style:{marginBottom:"8px"}})]}),React.createElement(window.Lightcord.Api.Components.general.Tabs,{tabs:[{label:"Preview",id:"preview"},{label:"Code",id:"code"}],active:n.tab,children:"preview"===n.tab?React.createElement("div",{style:{margin:"20px"}},React.createElement("div",{style:{backgroundColor:"var(--background-secondary)",padding:"30px 30px",borderRadius:"8px"},className:"lc-tab-box-shadow"},React.createElement(e,s()))):React.createElement("div",{style:{margin:"20px"}},React.createElement("div",{style:{backgroundColor:"var(--background-secondary)",padding:"30px 30px",borderRadius:"8px"},className:"lc-tab-box-shadow"},React.createElement(window.Lightcord.Api.Components.general.SettingSubTitle,null,"JSX"),React.createElement(window.Lightcord.Api.Components.general.ErrorCatcher,null,React.createElement(()=>React.createElement(window.Lightcord.Api.Components.general.CodeBlock,{language:"jsx",content:o("jsx")}))),React.createElement(window.Lightcord.Api.Components.general.SettingSubTitle,null,"React"),React.createElement(window.Lightcord.Api.Components.general.ErrorCatcher,null,React.createElement(()=>React.createElement(window.Lightcord.Api.Components.general.CodeBlock,{language:"js",content:o("react")}))))),onChange:e=>{this.setState({tab:e})}}))}}const Vn=xe.React;class Jn extends Vn.Component{render(){const e=this.props.size||"18px";return Vn.createElement("svg",{viewBox:"0 0 24 24",fill:"var(--text-normal)",className:this.props.className||"",style:{width:e,height:e},onClick:this.props.onClick},Vn.createElement("path",{d:"M0 0h24v24H0z",fill:"none"}),Vn.createElement("path",{d:"M13 3c-4.97 0-9 4.03-9 9H1l3.89 3.89.07.14L9 12H6c0-3.87 3.13-7 7-7s7 3.13 7 7-3.13 7-7 7c-1.93 0-3.68-.79-4.94-2.06l-1.42 1.42C8.27 19.99 10.51 21 13 21c4.97 0 9-4.03 9-9s-4.03-9-9-9zm-1 5v5l4.28 2.54.72-1.21-3.5-2.08V8H12z"}))}}var Zn=new class{constructor(){this.windows=new Map,this.enabled=!1,this.init()}async init(){let e=await window.Lightcord.Api.ensureExported(e=>e.default&&e.default.getWindow);window.Lightcord.DiscordModules.dispatcher.subscribe("POPOUT_WINDOW_OPEN",t=>{setImmediate(()=>{const n=e.default.getWindow(t.key);this.windows.set(t.key,n);let s=n.document.body.classList;s.add("window-popout"),s.add("lightcord"),s.add("lightcord"),this.update(t.key)})}),window.Lightcord.DiscordModules.dispatcher.subscribe("POPOUT_WINDOW_CLOSE",e=>{setImmediate(()=>{this.windows.delete(e.key)})}),P.on("theme-enabled",()=>{this.update()}),P.on("theme-disabled",()=>{this.update()}),P.on("theme-reloaded",()=>{this.update()}),P.on("theme-unloaded",()=>{this.update()}),P.on("theme-loaded",()=>{this.update()})}enable(){this.enabled=!0,this.update()}disable(){this.enabled=!1,this.update()}update(e){if(this.windows.size)return this.enabled?this.applyThemes(e):this.removeThemes(e)}removeThemes(e){if(!this.enabled)if(e){let t=this.windows.get(e);if(!t)return;let n=t.document;for(let e of n.querySelectorAll("style[data-lightcord-theme=true]"))e.remove()}else for(let e of this.windows.keys())this.removeThemes(e)}applyThemes(e){if(this.enabled)if(e){let t=this.windows.get(e);if(!t)return;let n=t.document;for(let e of n.querySelectorAll("style[data-lightcord-theme=true]"))e.setAttribute("will-remove","true");Object.keys(bdthemes).forEach(e=>{if(!w[e])return;const t=bdthemes[e];if(!t)return;let s=n.querySelector("style[data-lightcord-theme=true]#"+Ce.escapeID(t.id));if(s)s.innerHTML=unescape(t.css),s.removeAttribute("will-remove");else{const e=n.createElement("style");e.id=Ce.escapeID(t.id),e.innerHTML=unescape(t.css),e.setAttribute("data-lightcord-theme","true"),n.head.append(e)}});for(let e of n.querySelectorAll("style[will-remove=true]"))e.remove()}else for(let e of this.windows.keys())this.applyThemes(e)}};class Yn extends React.PureComponent{render(){let e=x.find(e=>e.Separator&&e.Header&&e.Item);const t=React.createElement(V,{color:"black",side:"top",text:"Changelog"},React.createElement("span",{style:{float:"right",cursor:"pointer"},className:"bd-changelog-button",onClick:()=>{ke.showChangelogModal(bbdChangelog)}},React.createElement(Jn,{className:"bd-icon",size:"16px"})));return new e.Header({children:React.createElement("span",null,"Bandaged BD",t),className:"ui-tab-bar-header"})}}let Kn=!1;var Xn=new class{constructor(){this.onChange=this.onChange.bind(this),this.updateSettings=this.updateSettings.bind(this),this.sidebar=new Me,this.registerComponents()}registerComponents(){this.sidebar.register("lightcord",Qn(this.lightcordComponent.bind(this))),this.sidebar.register("status",Qn(this.PresenceComponent.bind(this))),this.sidebar.register("accountinfo",Qn(this.AccountInfosComponent.bind(this))),this.sidebar.register("lcapipreview",Qn(this.ApiPreviewComponent.bind(this))),this.sidebar.register("BDChangelogTitle",Qn(()=>(new Yn).render())),this.sidebar.register("core",Qn(this.coreComponent.bind(this))),this.sidebar.register("customcss",Qn(this.customCssComponent.bind(this))),this.sidebar.register("plugins",Qn(this.renderAddonPane("plugins"))),this.sidebar.register("themes",Qn(this.renderAddonPane("themes")))}get coreSettings(){const e=this.getSettings("core");return[...new Set(e.map(e=>e.category))].map(t=>({title:t,settings:e.filter(e=>e.category==t)}))}get lightcordSettings(){const e=this.getSettings("lightcord");return[...new Set(e.map(e=>e.category))].map(t=>({title:t,settings:e.filter(e=>e.category==t)}))}get PresenceSettings(){return this.getSettings("status")}getSettings(e){return Object.keys(c).reduce((t,n)=>{const s=c[n];return s.cat===e&&s.implemented&&!s.hidden&&(s.text=n,t.push(s)),t},[])}onChange(e,t,n){this.updateSettings(e,t,n)}updateSettings(e,t,n){if(["lightcord-8","no_window_bound","enable_glasstron","lightcord-10"].includes(e)||(u[e]=t),"bda-gs-2"==e&&(t?Ce.addClass(document.body,"bd-minimal"):Ce.removeClass(document.body,"bd-minimal")),"bda-gs-3"==e&&(t?Ce.addClass(document.body,"bd-minimal-chan"):Ce.removeClass(document.body,"bd-minimal-chan")),"bda-gs-1"==e&&(t?ze.addButton():ze.removeButton()),"bda-gs-4"==e&&(t?He.start():He.stop()),"bda-gs-5"==e&&(t?Ce.addClass(Ce.query("#app-mount"),"bda-dark"):Ce.removeClass(Ce.query("#app-mount"),"bda-dark")),t&&"bda-gs-6"==e&&Ne.inject24Hour(),"bda-gs-7"==e&&(t?Be.injectColoredText():Be.removeColoredText()),"fork-ps-4"==e&&(t?qe.start():qe.stop()),"fork-ps-5"==e&&(t?(we.watchContent("plugin"),we.watchContent("theme")):(we.unwatchContent("plugin"),we.unwatchContent("theme"))),"fork-wp-1"==e&&(ke.setWindowPreference("transparent",t),t?ke.setWindowPreference("backgroundColor",null):ke.setWindowPreference("backgroundColor","#2f3136")),"bda-gs-8"==e&&(t?Ge.startDebugListener():Ge.stopDebugListener()),"fork-dm-1"==e&&(t?Ge.startCopySelector():Ge.stopCopySelector()),"lightcord-1"===e&&(window.Lightcord.Settings.devMode=!!t,n.forceUpdate()),"lightcord-2"===e&&(window.Lightcord.Settings.callRingingBeat=!!t),"lightcord-presence-1"===e)if(t){Tt.enable();const e=BDModules.get(e=>e.default&&"object"==typeof e.default&&"showCurrentGame"in e.default)[0];e&&!e.default.showCurrentGame&&BDModules.get(e=>e.default&&e.default.updateRemoteSettings)[0].default.updateRemoteSettings({showCurrentGame:!0})}else Tt.disable();if("lightcord-3"===e&&(t?_.remote.getCurrentWindow().setAlwaysOnTop(!0):_.remote.getCurrentWindow().setAlwaysOnTop(!1)),"lightcord-4"===e&&(t?Dn.enable():Dn.disable()),"lightcord-6"===e&&(t?Ln.enable():Ln.disable()),"lightcord-7"===e&&(t?An.enable():An.disable()),"lightcord-8"===e){let e=_.remote.getGlobal("appSettings");e.set("isTabs",t),e.save(),_.remote.app.relaunch(),_.remote.app.exit()}if("lightcord-9"===e&&Zn[t?"enable":"disable"](),"lightcord-10"!==e){if("no_window_bound"===e){let e=_.remote.getGlobal("appSettings");e.set("NO_WINDOWS_BOUND",t),e.delete("IS_MAXIMIZED"),e.delete("IS_MINIMIZED"),e.delete("WINDOW_BOUNDS"),e.save(),_.remote.app.relaunch(),_.remote.app.exit()}if("enable_glasstron"===e){let e=_.remote.getGlobal("appSettings");e.set("GLASSTRON",t),e.save(),_.remote.app.relaunch(),_.remote.app.exit()}this.saveSettings()}else Ds.methods.NotificationsUseShim(t)}async initializeSettings(){u["bda-gs-2"]&&Ce.addClass(document.body,"bd-minimal"),u["bda-gs-3"]&&Ce.addClass(document.body,"bd-minimal-chan"),u["bda-gs-1"]&&ze.addButton(),u["bda-gs-4"]&&He.start(),u["bda-gs-5"]&&Ce.addClass(Ce.query("#app-mount"),"bda-dark"),u["bda-gs-6"]&&Ne.inject24Hour(),u["bda-gs-7"]&&Be.injectColoredText(),u["fork-ps-4"]&&qe.start(),u["lightcord-1"]&&(window.Lightcord.Settings.devMode=!0),u["lightcord-2"]&&(window.Lightcord.Settings.callRingingBeat=!0),u["lightcord-presence-1"]&&Tt.enable(),u["lightcord-3"]&&_.remote.getCurrentWindow().setAlwaysOnTop(!0),u["lightcord-4"]&&Dn.enable(),u["lightcord-6"]&&Ln.enable(),u["lightcord-7"]&&An.enable(),u["lightcord-9"]&&Zn.enable(),u["fork-ps-5"]&&(we.watchContent("plugin"),we.watchContent("theme")),u["bda-gs-8"]&&Ge.startDebugListener(),u["fork-dm-1"]&&Ge.startCopySelector(),this.saveSettings()}saveSettings(){L.setSettingGroup("settings",u),L.setSettingGroup("rpc",h)}loadSettings(){Object.assign(u,L.getSettingGroup("settings")),Object.assign(h,L.getSettingGroup("rpc"))}renderSidebar(e){return this.sidebar.render(e)}coreComponent(){return xe.react.createElement(tt,{key:"cspanel",onChange:this.onChange,sections:this.coreSettings})}lightcordComponent(e,t){let n=_.remote.getGlobal("appSettings");return[this.lightcordSettings.map((t,s)=>[0===s?null:xe.react.createElement(et),xe.react.createElement("h2",{className:"ui-form-title h2 margin-reset margin-bottom-20"},t.title),t.settings.map(t=>{let s=u[t.id];"lightcord-8"===t.id&&(s=n.get("isTabs",!1)),"no_window_bound"===t.id&&(s=n.get("NO_WINDOWS_BOUND",!1)),"enable_glasstron"===t.id&&(s=n.get("GLASSTRON",!0)),"lightcord-10"===t.id&&(s=!n.get("DEFAULT_NOTIFICATIONS",!0));let r=xe.react.createElement(Ke,{id:t.id,key:t.id,data:t,checked:s,onChange:(t,n)=>{this.onChange(t,n,e)}});return"lightcord-8"==t.id&&s?[r,React.createElement(Lightcord.Api.Components.inputs.Button,{color:"green",look:"outlined",size:"small",hoverColor:"brand",onClick:()=>{DiscordNative.ipc.send("NEW_TAB")},wrapper:!1,disabled:!1},"Open a new Tab")]:r})]),xe.react.createElement(window.Lightcord.Api.Components.inputs.Button,{color:"yellow",look:"ghost",size:"medium",hoverColor:"red",onClick(){console.log("Should relaunch"),_.remote.app.relaunch({args:_.remote.process.argv.slice(1).concat(["--disable-betterdiscord"])}),_.remote.app.quit()},wrapper:!0},"Relaunch without BetterDiscord"),React.createElement(Lightcord.Api.Components.inputs.Button,{color:"yellow",look:"ghost",size:"medium",hoverColor:"red",onClick:()=>{Kn||(Kn=!0,ke.showToast("Clearing cache...",{type:"info"}),t(),_.remote.getCurrentWebContents().session.clearCache().then(()=>{ke.showToast("Cache is cleared !",{type:"success"}),Kn=!1,t()}).catch(e=>{console.error(e),ke.showToast("An error occured. Check console for more informations.",{type:"error"}),Kn=!1,t()}))},wrapper:!0,disabled:Kn},"Clear cache")]}PresenceComponent(){return xe.react.createElement(jt,{key:"lppannel",onChange:this.onChange,settings:this.PresenceSettings})}AccountInfosComponent(){return xe.react.createElement(gn,{key:"lapannel"})}ApiPreviewComponent(){return xe.react.createElement(qn,{key:"lapipannel"})}customCssComponent(){return xe.react.createElement(rt,{key:"csseditor"})}renderAddonPane(e){class t extends xe.react.Component{constructor(e){super(e),this.prefix=this.props.type.replace("s","")}onChange(){this.props.onChange(this.props.type)}render(){return this.props.children}}const n=t.prototype.render;return Object.defineProperty(t.prototype,"render",{enumerable:!1,configurable:!1,set:function(){console.warn("Addon policy for plugins #5 https://github.com/rauenzi/BetterDiscordApp/wiki/Addon-Policies#plugins")},get:()=>n}),function(){return xe.react.createElement(t,{type:e},xe.react.createElement(Bt,{type:e}))}}};function Qn(e){class t extends React.Component{render(){return e(n,()=>this.forceUpdate())}}let n;return e=>(n=e,t)}class es extends xe.reactComponent{render(){return xe.react.createElement("svg",{height:"100%",width:this.props.size||"16px",className:"bd-logo "+this.props.className,style:{fillRule:"evenodd",clipRule:"evenodd",strokeLinecap:"round",strokeLinejoin:"round"},viewBox:"0 0 2000 2000"},xe.react.createElement("metadata",null),xe.react.createElement("defs",null,xe.react.createElement("filter",{id:"shadow1"},xe.react.createElement("feDropShadow",{dx:"20",dy:"0",stdDeviation:"20","flood-color":"rgba(0,0,0,0.35)"})),xe.react.createElement("filter",{id:"shadow2"},xe.react.createElement("feDropShadow",{dx:"15",dy:"0",stdDeviation:"20","flood-color":"rgba(255,255,255,0.15)"})),xe.react.createElement("filter",{id:"shadow3"},xe.react.createElement("feDropShadow",{dx:"10",dy:"0",stdDeviation:"20","flood-color":"rgba(0,0,0,0.35)"}))),xe.react.createElement("g",null,xe.react.createElement("path",{style:{filter:"url(#shadow3)"},d:"M1195.44+135.442L1195.44+135.442L997.6+136.442C1024.2+149.742+1170.34+163.542+1193.64+179.742C1264.34+228.842+1319.74+291.242+1358.24+365.042C1398.14+441.642+1419.74+530.642+1422.54+629.642L1422.54+630.842L1422.54+632.042C1422.54+773.142+1422.54+1228.14+1422.54+1369.14L1422.54+1370.34L1422.54+1371.54C1419.84+1470.54+1398.24+1559.54+1358.24+1636.14C1319.74+1709.94+1264.44+1772.34+1193.64+1821.44C1171.04+1837.14+1025.7+1850.54+1000+1863.54L1193.54+1864.54C1539.74+1866.44+1864.54+1693.34+1864.54+1296.64L1864.54+716.942C1866.44+312.442+1541.64+135.442+1195.44+135.442Z",fill:"#171717",opacity:"1"}),xe.react.createElement("path",{style:{filter:"url(#shadow2)"},d:"M1695.54+631.442C1685.84+278.042+1409.34+135.442+1052.94+135.442L361.74+136.442L803.74+490.442L1060.74+490.442C1335.24+490.442+1335.24+835.342+1060.74+835.342L1060.74+1164.84C1150.22+1164.84+1210.53+1201.48+1241.68+1250.87C1306.07+1353+1245.76+1509.64+1060.74+1509.64L361.74+1863.54L1052.94+1864.54C1409.24+1864.54+1685.74+1721.94+1695.54+1368.54C1695.54+1205.94+1651.04+1084.44+1572.64+999.942C1651.04+915.542+1695.54+794.042+1695.54+631.442Z",fill:"#3E82E5",opacity:"1"}),xe.react.createElement("path",{style:{filter:"url(#shadow1)"},d:"M1469.25+631.442C1459.55+278.042+1183.05+135.442+826.65+135.442L135.45+135.442L135.45+1004C135.45+1004+135.427+1255.21+355.626+1255.21C575.825+1255.21+575.848+1004+575.848+1004L577.45+490.442L834.45+490.442C1108.95+490.442+1108.95+835.342+834.45+835.342L664.65+835.342L664.65+1164.84L834.45+1164.84C923.932+1164.84+984.244+1201.48+1015.39+1250.87C1079.78+1353+1019.47+1509.64+834.45+1509.64L135.45+1509.64L135.45+1864.54L826.65+1864.54C1182.95+1864.54+1459.45+1721.94+1469.25+1368.54C1469.25+1205.94+1424.75+1084.44+1346.35+999.942C1424.75+915.542+1469.25+794.042+1469.25+631.442Z",fill:"#FFFFFF",opacity:"1"})))}}function ts(){return(ts=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var s in n)Object.prototype.hasOwnProperty.call(n,s)&&(e[s]=n[s])}return e}).apply(this,arguments)}class ns extends React.Component{render(){const e=this.props;return React.createElement("svg",ts({viewBox:"0 0 168 168.69"},e,{height:"100%",width:e.size}),React.createElement("defs",null,React.createElement("linearGradient",{id:"prefix__a",x1:66.7,y1:-487.7,x2:66.7,y2:-508.73,gradientTransform:"matrix(1 0 0 -1 0 -408)",gradientUnits:"userSpaceOnUse"},React.createElement("stop",{offset:0,stopColor:"#e30613"}),React.createElement("stop",{offset:1,stopColor:"#731a14"})),React.createElement("linearGradient",{id:"prefix__b",x1:101.7,y1:-487.7,x2:101.7,y2:-508.73,gradientTransform:"matrix(1 0 0 -1 0 -408)",gradientUnits:"userSpaceOnUse"},React.createElement("stop",{offset:0,stopColor:"#e20613"}),React.createElement("stop",{offset:1,stopColor:"#731a13"})),React.createElement("linearGradient",{id:"prefix__c",x1:84,y1:-408,x2:84,y2:-576.69,gradientTransform:"matrix(1 0 0 -1 0 -408)",gradientUnits:"userSpaceOnUse"},React.createElement("stop",{offset:0,stopColor:"#e30613"}),React.createElement("stop",{offset:1,stopColor:"#731a13"}))),React.createElement("path",{fill:"#fff",d:"M14.9 35.3h139.2V133H14.9z"}),React.createElement("path",{d:"M66.7 79.7c-5.4 0-9.8 4.7-9.8 10.5s4.4 10.5 9.8 10.5 9.8-4.7 9.8-10.5-4.4-10.5-9.8-10.5z",fill:"url(#prefix__a)"}),React.createElement("path",{d:"M101.7 79.7c-5.4 0-9.8 4.7-9.8 10.5s4.4 10.5 9.8 10.5 9.8-4.7 9.8-10.5-4.4-10.5-9.8-10.5z",fill:"url(#prefix__b)"}),React.createElement("path",{d:"M0 0v168l168 .69V0zm111.3 124.1s-3.4-4.1-6.3-7.7c12.6-3.5 17.4-11.3 17.4-11.3a52.52 52.52 0 01-11.1 5.6 68.63 68.63 0 01-38.9 4 70.12 70.12 0 01-14.1-4.1 48.88 48.88 0 01-7.1-3.3c-.3-.2-.6-.3-.9-.5a.76.76 0 00-.4-.2c-1.7-1-2.6-1.6-2.6-1.6s4.6 7.6 16.8 11.2c-2.9 3.6-6.4 7.9-6.4 7.9-21.2-.6-29.3-14.5-29.3-14.5 0-30.6 13.8-55.4 13.8-55.4 13.8-10.3 26.9-10 26.9-10l1 1.1C52.8 50.3 45 57.9 45 57.9a56.2 56.2 0 015.7-2.7 72.19 72.19 0 0121.8-6 8.75 8.75 0 011.6-.2 89.1 89.1 0 0119.4-.2 78.45 78.45 0 0128.9 9.1s-7.5-7.2-23.9-12.1l1.3-1.5s13.1-.3 26.9 10c0 0 13.8 24.8 13.8 55.4.1-.1-8 13.8-29.2 14.4z",fill:"url(#prefix__c)"}))}}const ss={EmojiRegex:/<a?\.(\w+)\.(\d+)>/g};let rs=BDModules.get(e=>e.CustomEmoji)[0],os=BDModules.get(e=>e.default&&e.default.getCustomEmojiById)[0],is=BDModules.get(e=>e.default&&"Autocomplete"===e.default.displayName)[0],as=BDModules.get(e=>e.getAutocompleteOptions)[0],ls=BDModules.get(e=>e.default&&e.default.queryEmojiResults)[0],cs=BDModules.get(e=>e.default&&e.default.Messages&&e.default.Messages.EMOJI_MATCHING)[0],ds=BDModules.get(e=>e.default&&e.default.getGuild&&e.default.getGuilds&&!e.default.isFetching)[0],us=BDModules.get(e=>e.default&&e.default.getDisambiguatedEmojiContext);var hs=new class{constructor(){this.init().catch(e=>ke.err("EmojiModule","An error occured",e))}async init(){if(is||(is=await window.Lightcord.Api.ensureExported(e=>e.default&&"Autocomplete"===e.default.displayName)),as||(as=await window.Lightcord.Api.ensureExported(e=>e.getAutocompleteOptions)),ls||(ls=await window.Lightcord.Api.ensureExported(e=>e.default&&e.default.queryEmojiResults)),cs||(cs=await window.Lightcord.Api.ensureExported(e=>e.default&&e.default.Messages&&e.default.Messages.EMOJI_MATCHING)),ds||(ds=await window.Lightcord.Api.ensureExported(e=>e.default&&e.default.getGuild&&e.default.getGuilds&&!e.default.isFetching)),us||(us=await window.Lightcord.Api.ensureExported(e=>e.default&&e.default.getDisambiguatedEmojiContext)),is&&as&&ls&&cs&&ds&&us){console.log("Patching getAutocompleteOptions of AutoCompletionTemplates",as);const e=as.getAutocompleteOptions;as.getAutocompleteOptions=function(t,n,s,r,o){const i=e.call(this,...arguments);return i.LIGHTCORD_EMOJIS={matches(e,t){let n=t.length>1&&"."===e;return Ss(n),n},queryResults:e=>ls.default.queryEmojiResults(e,t),renderResults:(e,t,n,s,r)=>ps(e,t,r.emojis,n,s,cs.default.Messages.EMOJI_MATCHING,cs.default.Messages.EMOJI,is.default.Emoji,(function(e){return{emoji:e,key:e.id||e.uniqueName||e.name,sentinel:".",guild:null!=e.guildId?ds.default.getGuild(e.guildId):null}}),(function(e){return"."+e+"."})),getPlainText(e,t){var n=t.emojis;if(null==n||null==n[e])return"";var s=n[e],r=s.animated?"a":"";return s.managed||null==s.id?"."+s.name+".":"<"+r+"."+(s.originalName||s.name)+"."+s.id+">"},getRawText(e,t){var n=t.emojis;if(null==n||null==n[e])return"";var s=n[e],r=s.animated?"a":"";return s.managed||null==s.id?"."+s.name+".":"<"+r+"."+(s.originalName||s.name)+"."+s.id+">"}},i}}else console.error(new Error("Couldn't start autocompletion of Lightcord's emojis."));for(;!xe.MessageComponent;)await new Promise(e=>setTimeout(e,100));this.cancelEmojiRender||(this.cancelEmoteRender=ke.monkeyPatch(xe.MessageComponent,"default",{before:e=>{if(!ke.getNestedProp(e.methodArguments[0],"childrenMessageContent.props.message"))return;const t=ke.getNestedProp(e.methodArguments[0],"childrenMessageContent.props.content");if(!t||!t.length)return;let n=[];const s=[];for(let e of t){if("string"!=typeof e){s.push(e);continue}let r,o=!1;do{if(r=ss.EmojiRegex.exec(e),r){o=!0,os||(os=BDModules.get(e=>e.default&&e.default.getCustomEmojiById)[0]);const e=os.default.getCustomEmojiById(r[2]);e?n.push({animated:e.animated,name:e.name,id:e.id,raw:r[0]}):n.push({animated:r[0].startsWith("<a"),name:r[1],id:r[2],raw:r[0]})}}while(r);if(o){const r=e.split(" ").map((e,s,r)=>{if(!e)return"";const o=n.find(t=>t.raw==e);return o?(rs||(rs=BDModules.get(e=>e.CustomEmoji)[0]),React.createElement(rs.CustomEmoji,{emoji:{name:`.${o.name}.`,emojiId:o.id,animated:o.animated,jumboable:1===r.length&&1===t.length}})):e}).reduce((e,t)=>0===e.length?[t]:"string"==typeof t?"string"==typeof e[e.length-1]?(e[e.length-1]+=" "+t,e):(e.push(" "+t),e):(e.push(" ",t),e),[]);s.push(...r)}else s.push(e)}for(;e.methodArguments[0].childrenMessageContent.props.content[0];)e.methodArguments[0].childrenMessageContent.props.content.shift();for(;s[0];)e.methodArguments[0].childrenMessageContent.props.content.push(s.shift())}}))}disable(){this.cancelEmoteRender&&(this.cancelEmoteRender(),this.cancelEmoteRender=null)}start(){}};function ps(e,t,n,s,r,o,i,a,l,c){if(null==n||0===n.length)return null;var d=n.map((function(e,n){return React.createElement(a,Object.assign({onClick:r,onHover:s,selected:t===n,index:n},l(e,n)))}));return[ms(o,i,e,c),d]}function ms(e,t,n,s){var r=n.length>0?e.format({prefix:s(n)}):t;return Array.isArray(r)?r.unshift(React.createElement("strong",{},"[Lightcord] ")):r="[LIGHTCORD] "+r,React.createElement(is.default.Title,{title:r},r)}ms.displayName="renderHeader";let gs,fs,bs,ys,vs=BDModules.get(e=>e.default&&e.default.isEmojiDisabled)[0],ws=vs&&vs.default.isEmojiDisabled,Cs=!1,Es=!1;function Ss(e){Cs=e,Es||(vs||(vs=BDModules.get(e=>e.default&&e.default.isEmojiDisabled)[0]),vs&&(ws||(ws=vs.default.isEmojiDisabled),Es=!0,vs.default.isEmojiDisabled=function(e){return Cs?!(!e.surrogates&&!e.diversity):ws.call(this,...arguments)}))}function xs(){}xs.prototype.setConfig=function(e){this.hasStarted||Object.assign(f,e)},Object.defineProperty(xs.prototype,"methods",{get:()=>gs}),xs.prototype.setMethods=function(e){this.hasStarted||(gs=e)},xs.prototype.init=async function(){if(this.hasStarted)return;if(this.hasStarted=!0,!Array.prototype.flat)return void ke.alert("Not Supported","BetterDiscord v"+a+" does not support this old version ("+o+") of Discord. Please update your Discord installation before proceeding.");if(f.version<i)return void ke.alert("Not Supported","BetterDiscord v"+f.version+" (your version) is not supported by the latest js ("+a+").<br><br> Please download the latest version from <a href='https://github.com/rauenzi/BetterDiscordApp/releases/latest' target='_blank'>GitHub</a>");if(window.ED)return void ke.alert("Not Supported","BandagedBD does not work with EnhancedDiscord. Please uninstall one of them.");if(window.WebSocket&&window.WebSocket.name&&window.WebSocket.name.includes("Patched"))return void ke.alert("Not Supported","BandagedBD does not work with Powercord. Please uninstall one of them.");ke.suppressErrors(this.patchAttributes.bind(this),"LC Plugin Certifier Patch")(),ke.log("Startup","Initializing Settings"),this.initSettings(),await this.checkForGuilds(),xe.initialize(),ke.log("Startup","Updating Settings"),Xn.initializeSettings(),ke.log("Startup","Loading Addons Cache"),await we.loadAddonCertifierCache(),ke.log("Startup","Loading Plugins"),await R.loadPlugins(),ke.log("Startup","Loading Themes"),await Se.loadThemes(),Ce.addStyle("customcss",Buffer.from(L.getBDData("bdcustomcss"),"base64").toString("utf8")),window.addEventListener("beforeunload",(function(){u["bda-dc-0"]&&document.querySelector(".btn.btn-disconnect").click()})),X.start(),ke.log("Startup","Removing Loading Icon"),document.getElementsByClassName("bd-loaderv2").length&&document.getElementsByClassName("bd-loaderv2")[0].remove(),ke.log("Startup","Initializing Main Observer"),this.initObserver(),u["fork-ps-1"]&&(ke.log("Startup","Collecting Startup Errors"),ke.showContentErrors({plugins:m,themes:g}));const e=L.getBDData("version");if(a>e&&(l&&this.showChangelogModal(l),L.setBDData("version",a)),hs.start(),ke.suppressErrors(this.patchSocial.bind(this),"BD Social Patch")(),ke.suppressErrors(this.patchGuildPills.bind(this),"BD Guild Pills Patch")(),ke.suppressErrors(this.patchGuildListItems.bind(this),"BD Guild List Items Patch")(),ke.suppressErrors(this.patchGuildSeparator.bind(this),"BD Guild Separator Patch")(),ke.suppressErrors(this.patchMessageHeader.bind(this),"BD Badge Chat Patch")(),ke.suppressErrors(this.patchMemberList.bind(this),"BD Badge Member List Patch")(),ke.suppressErrors(this.patchAttachment.bind(this),"LC Plugin Certifier Patch")(),f.haveInstalledDefault){let e=ke.alert("First Installation","As it is the first time you install Lightcord, We added two default themes and one default plugin in your plugin/theme folder. Check it in the Plugin/Theme settings.");await new Promise(t=>{e.onClose(t)})}const t=document.querySelector("#app-mount > div.typeWindows-1za-n7.withFrame-haYltI.titleBar-AC4pGV.horizontalReverse-3tRjY7.flex-1O1GKY.directionRowReverse-m8IjIq.justifyStart-2NDFzi.alignStretch-DpGPf3.da-typeWindows.da-withFrame.da-titleBar.da-horizontalReverse.da-flex.da-directionRowReverse.da-justifyStart.da-alignStretch > div.wordmarkWindows-1v0lYD.wordmark-2iDDfm.da-wordmarkWindows.da-wordmark");t&&(t.style.top="3px",t.innerHTML='<svg xmlns="http://www.w3.org/2000/svg" height="10" width="70" viewBox="0 0 72.54 10" style="margin-left: -5px, margin-top: 10px">\n <path fill="currentColor" d="M44.81,9.67V6.33c0-1.21,2.13-1.49,2.78-.28l2-.81A3.53,3.53,0,0,0,46.2,3c-1.92,0-3.81,1.13-3.81,3.33V9.67c0,2.21,1.89,3.33,3.77,3.33a3.87,3.87,0,0,0,3.45-2.18l-2.12-1C47,11.17,44.81,10.85,44.81,9.67ZM10.68,12.89h2.41V3.17H10.68ZM71.76,3.14H68.19V7.23L70.57,9.4v-4h1.27c.81,0,1.21.41,1.21,1v3c0,.63-.38,1.05-1.21,1.05H68.18v2.31h3.57c1.92,0,3.72-1,3.72-3.2V6.39C75.48,4.13,73.68,3.14,71.76,3.14ZM54.22,3c-2,0-4,1.1-4,3.34V9.66c0,2.23,2,3.34,4,3.34s3.95-1.11,3.95-3.34V6.34C58.19,4.11,56.2,3,54.22,3Zm1.55,6.66c0,.7-.78,1.06-1.54,1.06s-1.55-.35-1.55-1.06V6.34c0-.72.75-1.1,1.5-1.1s1.59.35,1.59,1.1ZM66.84,6.34c0-2.29-1.58-3.2-3.55-3.2H59.46v9.73h2.45V9.77h.43l2.22,3.09h3L65,9.52C66.13,9.15,66.84,8.14,66.84,6.34ZM63.33,7.65H61.91V5.43h1.42A1.11,1.11,0,1,1,63.33,7.65ZM29.83,13h2.42V3.06H29.83V6.73l-3,0V3.09H24.7v9.78h2.14V8.68l3,0ZM17.16,9.76V6.42c0-1.21,2.13-1.49,2.78-.28l2-.81a3.55,3.55,0,0,0-3.36-2.24c-1.92,0-3.81,1.13-3.81,3.33V9.76c0,2.21,2,3.15,3.9,3.15s3.58-1,3.58-3V7.58H18.79l0,1.36H20.3v.77C20.3,10.92,17.16,10.94,17.16,9.76Z" transform="translate(-2.93 -3)"/>\n <polygon fill="currentColor" points="35.91 0.06 38.43 0.06 38.43 1.84 35.92 1.81 35.97 10 33.55 10 33.49 1.75 30.98 1.74 30.98 0.06 33.49 0.06 35.91 0.06"/>\n <polygon fill="currentColor" points="0 9.97 6.5 10 6.5 7.63 2.41 7.63 2.41 0.26 0 2.26 0 9.97"/>\n</svg>')},xs.prototype.patchAttributes=async function(){let e=[];for(this.cancelPatchAttributes=function(){e.forEach(e=>e())};!xe.MessageComponent;)await new Promise(e=>setTimeout(e,100));const t=x.find(e=>"Anchor"==e.displayName);window.Lightcord.Api.ensureExported(e=>e.default&&"DiscordTag"===e.default.displayName).then(e=>{let n=e.default;e.default=function(e){let s=n(e),r=jn(),o=xe.React.createElement("div",{style:{display:"inline",marginTop:"5px"}},xe.React.createElement("span",{id:"badges-"+r,key:"badges-"+r,style:{display:"inherit"}})),i=[s];"249746236008169473"===e.user.id?i.push(xe.React.createElement(V,{color:"black",side:"top",text:"BandagedBD Developer"},xe.React.createElement(t,{className:"bd-chat-badge",href:"https://github.com/rauenzi/BetterDiscordApp",title:"BandagedBD",target:"_blank"},xe.React.createElement(es,{size:"16px",className:"bd-logo"})))):"696481194443014174"!==e.user.id&&"696003456611385396"!==e.user.id||i.push(xe.React.createElement(V,{color:"black",side:"top",text:"Lightcord Developer"},xe.React.createElement(t,{className:"bd-chat-badge",href:"https://github.com/Lightcord/Lightcord",title:"Lightcord",target:"_blank"},xe.React.createElement(ns,{size:"16px",className:"bd-logo"})))),i.push(o);let a=xe.React.createElement("div",{style:{display:"block"}},i);return ks(r,e.user,!1),a}}),e.push(ke.monkeyPatch(xe.MessageComponent,"default",{after:e=>{e.methodArguments[0].childrenMessageContent.props.message&&(e.returnValue.props["data-message-id"]=e.methodArguments[0].childrenMessageContent.props.message.id)}}))},xs.prototype.checkForGuilds=function(){let e=0;return new Promise(t=>{const n=function(){const s=xe.guildClasses.wrapper.split(" ")[0];document.querySelectorAll("."+s).length>0&&e++;const r=xe.guildClasses.listItem.split(" ")[0],o=xe.guildClasses.blobContainer.split(" ")[0];return document.querySelectorAll(`.${s} .${r} .${o}`).length>0||e>=50?t(f.deferLoaded=!0):void setTimeout(n,100)};"loading"!=document.readyState&&setTimeout(n,100),document.addEventListener("DOMContentLoaded",()=>{setTimeout(n,100)})})},xs.prototype.injectExternals=async function(){},xs.prototype.initSettings=function(){if(L.initialize(),L.getSettingGroup("settings")||L.getSettingGroup("rpc")){Xn.loadSettings();for(const e in d)null==u[e]&&(u[e]=d[e],Xn.saveSettings())}else L.getSettingGroup("settings")||Object.assign(u,d),L.getSettingGroup("rpc")||Object.assign(h,p),Xn.saveSettings();window.Lightcord.Api.ensureExported(e=>e.default&&e.default.prototype&&e.default.prototype.getPredicateSections).then(e=>{let t=e.default.prototype.getPredicateSections;e.default.prototype.getPredicateSections=function(){let e=t.call(this,...arguments);if(!e[1])return e;if("My Account"===e[1].section){let t=[];for(t.push(e.pop()),t.push(e.pop()),t.push(e.pop()),t.push(e.pop()),e.push(...Xn.renderSidebar(this));t[0];)e.push(t.pop())}return e}})},xs.prototype.initObserver=function(){new MutationObserver(e=>{for(let t=0,n=e.length;t<n;t++){const n=e[t];if(void 0!==R&&R.rawObserver(n),!(n.addedNodes.length&&n.addedNodes[0]instanceof Element))continue;const s=n.addedNodes[0];fs||(fs=BDModules.get(e=>e.layer&&"string"==typeof e.layer&&e.animating)[0].layer),bs||(bs=BDModules.get(e=>e.socialLinks&&"string"==typeof e.socialLinks)[0].socialLinks),ys||(ys=BDModules.get(e=>e.modal&&"string"==typeof e.modal&&e.inner&&"string"==typeof e.inner&&!e.responsiveWidthMobile)[0].modal),s.classList.contains(fs)&&("GUILD_SETTINGS"===s.getAttribute("aria-label")&&(s.setAttribute("layer-id","server-settings"),s.setAttribute("id","server-settings")),s.getElementsByClassName(bs).length&&(s.setAttribute("layer-id","user-settings"),s.setAttribute("id","user-settings"))),s.parentElement==document.body&&s.querySelector("#ace_settingsmenu")&&(s.id="ace_settingsmenu_container")}}).observe(document,{childList:!0,subtree:!0})},xs.prototype.showChangelogModal=function(e={}){return ke.showChangelogModal(e)},xs.prototype.alert=function(e,t){return ke.alert(e,t)},xs.prototype.patchSocial=function(){if(this.socialPatch)return;const e=x.find(e=>"TabBar"==e.displayName),t=x.find(e=>"Anchor"==e.displayName);e&&(this.socialPatch=ke.monkeyPatch(e.prototype,"render",{after:e=>{const n=e.returnValue.props.children;if(!n||!n.length||n.length<3)return;if("Separator"!==n[n.length-3].type.displayName)return;if(!n[n.length-2].type.toString().includes("socialLinks"))return;if(t){let e=BDModules.get(e=>e.socialLinks)[0];const s=n[n.length-2].type,r=function(){const n=s(...arguments);return n.props.children.push(xe.React.createElement(V,{color:"black",side:"top",text:"Lightcord"},xe.React.createElement(t,{className:"bd-social-link "+e.link,href:"https://github.com/Lightcord/Lightcord",title:"Lightcord",target:"_blank"},xe.React.createElement(ns,{size:"16px",className:"bd-social-logo"})))),n.props.children.push(xe.React.createElement(V,{color:"black",side:"top",text:"BandagedBD"},xe.React.createElement(t,{className:"bd-social-link "+e.link,href:"https://github.com/rauenzi/BetterDiscordApp",title:"BandagedBD",target:"_blank"},xe.React.createElement(es,{size:"16px",className:"bd-social-logo"})))),n};n[n.length-2].type=r}let[s,r,o]=[BDModules.get(e=>e.colorMuted)[0].colorMuted,BDModules.get(e=>e.size32)[0],BDModules.get(e=>e.versionHash)[0].versionHash];const i=`(${f.hash?f.hash.substring(0,7):f.branch})`,l=[xe.react.createElement("div",{className:`${s} ${r.size12}`},`Lightcord ${_.remote.getGlobal("BuildInfo").version} `,xe.react.createElement("span",{className:o+" da-versionHash"},`(${(_.remote.getGlobal("BuildInfo").commit||"Unknown").slice(0,7)})`)),xe.react.createElement("div",{className:`${s} ${r.size12}`},`BBD ${a} `,xe.react.createElement("span",{className:o+" da-versionHash"},i))],c=n[n.length-1].type;n[n.length-1].type=function(){const e=c(...arguments);return e.props.children.splice(1,0,l),e}}}))};function ks(e,t,n){process.nextTick(()=>{const s=document.getElementById("badges-"+e);if(!s||s.childNodes.length>0)return;if(s.childNodes.length)return;let r=document.createElement("div");r.style.display="none",s.appendChild(r);const o=x.find(e=>"Anchor"==e.displayName);In.getBadges(t.id).then(e=>{e.forEach(e=>{const r={svg:{size:"16px",className:"bd-logo",width:"16px"}};e.scopes.forEach(e=>{"user"===e&&(r.user=t)}),e.href||(r.Anchor=o,r.href={className:n?"bd-chat-badge":"bd-member-badge",title:e.name,target:"_blank"});const i=xe.React.createElement(V,{color:"black",side:"top",text:e.name},e.href?xe.react.createElement(o,{href:e.href,className:n?"bd-chat-badge":"bd-member-badge",title:e.name,target:"_blank"},xe.React.createElement(e.component,r)):xe.React.createElement(e.component,r)),a=document.createElement("div");xe.reactDom.render(i,a),a.childNodes.forEach(e=>{s.appendChild(e)})})})})}xs.prototype.patchGuildListItems=function(){if(this.guildListItemsPatch)return;const e=function(){const e=x.findByProps("wrapper","unreadMentionsBar"),t=x.findByProps("guildsError","selected"),n=x.findByProps("blobContainer");return Object.assign({},e,t,n)}(),t=e.listItem.split(" ")[0],n=e.blobContainer.split(" ")[0],s=xe.getInternalInstance(document.querySelector(`.${t} .${n}`).parentElement).return.type;s&&(this.guildListItemsPatch=ke.monkeyPatch(s.prototype,"render",{after:e=>{if(e.returnValue&&e.thisObject){const t=e.returnValue,n=e.thisObject.props;let s=t.props.className;return s+=" bd-guild",n.unread&&(s+=" bd-unread"),n.selected&&(s+=" bd-selected"),n.audio&&(s+=" bd-audio"),n.video&&(s+=" bd-video"),n.badge&&(s+=" bd-badge"),n.animatable&&(s+=" bd-animatable"),t.props.className=s,t}}}))},xs.prototype.patchGuildPills=function(){if(this.guildPillPatch)return;const e=x.find(e=>e.default&&!e.default.displayName&&e.default.toString&&e.default.toString().includes("translate3d"));e&&(this.guildPillPatch=ke.monkeyPatch(e,"default",{after:e=>{const t=e.methodArguments[0];return t.unread&&(e.returnValue.props.className+=" bd-unread"),t.selected&&(e.returnValue.props.className+=" bd-selected"),t.hovered&&(e.returnValue.props.className+=" bd-hovered"),e.returnValue}}))},xs.prototype.patchGuildSeparator=function(){if(this.guildSeparatorPatch)return;const e=x.findByDisplayName("Guilds"),t=x.findByProps("renderListItem");if(!t||!e)return;const n=function(){const e=t.Separator(...arguments);return e.props.className+=" bd-guild-separator",e};this.guildSeparatorPatch=ke.monkeyPatch(e.prototype,"render",{after:e=>{e.returnValue.props.children[1].props.children[3].type=n}})},xs.prototype.patchAttachment=function(){if(this.AttachmentPatch)return;const e=BDModules.get(e=>e.default&&"Attachment"===e.default.displayName)[0];x.find(e=>"Anchor"==e.displayName)&&e&&e.default&&(this.AttachmentPatch=ke.monkeyPatch(e,"default",{after:e=>{if(!u["fork-ps-6"])return;const t=e.methodArguments[0]||null,n=ke.getNestedProp(e.returnValue,"props.children");if(!n||!t||!t.url)return;if(!Array.isArray(n))return;const s=jn();n.push(xe.react.createElement("span",{id:"certified-"+s})),X.patch(t,"certified-"+s)}}))},xs.prototype.patchMessageHeader=function(){if(this.messageHeaderPatch)return;const e=x.findByProps("MessageTimestamp"),t=x.find(e=>"Anchor"==e.displayName);t&&e&&e.default&&(this.messageHeaderPatch=ke.monkeyPatch(e,"default",{after:e=>{const n=ke.getNestedProp(e.methodArguments[0],"message.author"),s=ke.getNestedProp(e.returnValue,"props.children.1.props.children.1.props.children");if(!s||!n||!n.id)return;if(!Array.isArray(s))return;"249746236008169473"===n.id?s.push(xe.React.createElement(V,{color:"black",side:"top",text:"BandagedBD Developer"},xe.React.createElement(t,{className:"bd-chat-badge",href:"https://github.com/rauenzi/BetterDiscordApp",title:"BandagedBD",target:"_blank"},xe.React.createElement(es,{size:"16px",className:"bd-logo"})))):"696481194443014174"!==n.id&&"696003456611385396"!==n.id||s.push(xe.React.createElement(V,{color:"black",side:"top",text:"Lightcord Developer"},xe.React.createElement(t,{className:"bd-chat-badge",href:"https://github.com/Lightcord/Lightcord",title:"Lightcord",target:"_blank"},xe.React.createElement(ns,{size:"16px",className:"bd-logo"}))));const r=jn();s.push(xe.React.createElement("div",{id:"badges-"+r,style:{display:"inline"}})),ks(r,n,!0)}}))},xs.prototype.patchMemberList=function(){if(this.memberListPatch)return;const e=x.findByDisplayName("MemberListItem"),t=x.find(e=>"Anchor"==e.displayName);t&&e&&e.prototype&&e.prototype.renderDecorators&&(this.memberListPatch=ke.monkeyPatch(e.prototype,"renderDecorators",{after:e=>{const n=ke.getNestedProp(e.thisObject,"props.user"),s=ke.getNestedProp(e.returnValue,"props.children");if(!s||!n||!n.id)return;if(!Array.isArray(s))return;"249746236008169473"===n.id?s.push(xe.React.createElement(V,{color:"black",side:"top",text:"BandagedBD Developer"},xe.React.createElement(t,{className:"bd-member-badge",href:"https://github.com/rauenzi/BetterDiscordApp",title:"BandagedBD",target:"_blank"},xe.React.createElement(es,{size:"16px",className:"bd-logo"})))):"696481194443014174"!==n.id&&"696003456611385396"!==n.id||s.push(xe.React.createElement(V,{color:"black",side:"top",text:"Lightcord Developer"},xe.React.createElement(t,{className:"bd-member-badge",href:"https://github.com/Lightcord/Lightcord",title:"Lightcord",target:"_blank"},xe.React.createElement(ns,{size:"16px",className:"bd-logo"}))));const r=jn();s.push(xe.React.createElement("div",{id:"badges-"+r})),ks(r,n,!1)}}))},xs.prototype.updateInjector=async function(){if(!L.injectionPath)return!1};var Ds=new xs;const Ms={get React(){return xe.React},get ReactDOM(){return xe.ReactDom},get ReactComponent(){return xe.ReactComponent},get WindowConfigFile(){return ke.WindowConfigFile},get settings(){return c},get emotes(){return null},get screenWidth(){return Math.max(document.documentElement.clientWidth,window.innerWidth||0)},get screenHeight(){return Math.max(document.documentElement.clientHeight,window.innerHeight||0)},getAllWindowPreferences:function(){return ke.getAllWindowPreferences()},getWindowPreference:function(e){return ke.getWindowPreference(e)},setWindowPreference:function(e,t){return ke.setWindowPreference(e,t)},injectCSS:function(e,t){Ce.addStyle(Ce.escapeID(e),t)},clearCSS:function(e){Ce.removeStyle(Ce.escapeID(e))},linkJS:function(e,t){Ce.addScript(Ce.escapeID(e),t)},unlinkJS:function(e){Ce.removeScript(Ce.escapeID(e))},getPlugin:function(e){return y.hasOwnProperty(e)?y[e].plugin:null},getCore:function(){return ke.warn("Deprecation Notice","BdApi.getCore() will be removed in future versions."),Ds},alert:function(e,t){return ke.showConfirmationModal(e,t,{cancelText:null})},showConfirmationModal:function(e,t,n={}){return ke.showConfirmationModal(e,t,n)},showToast:function(e,t={}){ke.showToast(e,t)},findModule:function(e){return xe.WebpackModules.find(e)},findAllModules:function(e){return xe.WebpackModules.findAll(e)},findModuleByProps:function(...e){return xe.WebpackModules.findByUniqueProperties(e)},findModuleByPrototypes:function(...e){return xe.WebpackModules.findByPrototypes(e)},findModuleByDisplayName:function(e){return xe.WebpackModules.findByDisplayName(e)},getInternalInstance:function(e){if(e instanceof window.jQuery||e instanceof Element)return e instanceof jQuery&&(e=e[0]),xe.getInternalInstance(e)},loadData:function(e,t){return L.getPluginData(e,t)}};Ms.getData=Ms.loadData,Ms.saveData=function(e,t,n){return L.setPluginData(e,t,n)},Ms.setData=Ms.saveData,Ms.deleteData=function(e,t){return L.deletePluginData(e,t)},Ms.monkeyPatch=function(e,t,n){return ke.monkeyPatch(e,t,n)},Ms.onRemoved=function(e,t){return ke.onRemoved(e,t)},Ms.suppressErrors=function(e,t){return ke.suppressErrors(e,t)},Ms.testJSON=function(e){return ke.testJSON(e)},Ms.isPluginEnabled=function(e){return!!v[e]},Ms.isThemeEnabled=function(e){return!!w[e]},Ms.isSettingEnabled=function(e){return!!u[e]},Ms.enableSetting=function(e){return Xn.onChange(e,!0)},Ms.disableSetting=function(e){return Xn.onChange(e,!1)},Ms.toggleSetting=function(e){return Xn.onChange(e,!u[e])},Ms.getBDData=function(e){return L.getBDData(e)},Ms.setBDData=function(e,t){return L.setBDData(e,t)};const Bs=(e,t,n)=>new class{get folder(){return n.folder}isEnabled(t){return!!e[t]}enable(e){return n.enable(e)}disable(e){return n.disable(e)}toggle(t){e[t]?this.disable(t):this.enable(t)}reload(e){return n.reload(e)}get(e){return t.hasOwnProperty(e)?t[e].plugin?t[e].plugin:t[e]:null}getAll(){return Object.keys(t).map(e=>this.get(e)).filter(e=>e)}};Ms.Plugins=Bs(v,y,R),Ms.Themes=Bs(w,b,Se);var Ns=Ms;window.Lightcord.BetterDiscord.BdApi=Ms,function(){const e=Object.getOwnPropertyDescriptor(HTMLIFrameElement.prototype,"contentWindow").get;Object.defineProperty(HTMLIFrameElement.prototype,"contentWindow",{get:function(){const t=Reflect.apply(e,this,arguments);return new Proxy(t,{getOwnPropertyDescriptor:function(e,t){if("localStorage"!==t)return Object.getOwnPropertyDescriptor(e,t)},get:function(e,t){if("localStorage"===t)return null;const n=e[t];return"function"==typeof n?n.bind(e):n}})}}),Object.defineProperty(Reflect,"apply",{value:Reflect.apply,writable:!1,configurable:!1}),Object.defineProperty(Function.prototype,"bind",{value:Function.prototype.bind,writable:!1,configurable:!1});const t=XMLHttpRequest.prototype.open;XMLHttpRequest.prototype.open=function(){const e=arguments[1];return e.toLowerCase().includes("api/webhooks")?null:Reflect.apply(t,this,arguments)}}(),(()=>{const e=document.createElement("div");e.className="bd-loaderv2",e.title="BandagedBD is loading...",document.body.appendChild(e)})();const Ls=(e,t)=>{Object.defineProperty(window,e,{get:()=>(ke.warn("Deprecated Global",`"${e}" will be removed in future versions. Please only use BdApi.`),t)})},As=Object.keys(s);for(const e of As)Ls(e,s[e]);Ls("BDV2",xe),Ls("pluginModule",R),Ls("themeModule",Se),Ls("Utils",ke),Ls("BDEvents",P),Ls("settingsPanel",Xn),Ls("DataStore",L),Ls("ContentManager",we),Ls("ClassNormalizer",qe),window.BdApi=Ns,Ls("mainCore",Ds);class Ps{constructor(e,t){Ds.setConfig(e),Ds.setMethods(t)}init(){Ds.init()}}}]);