(function(){let __fs=window.require("fs");let __process=window.require("process");let __platform=__process.platform;let __dataPath=(__platform==="win32"?__process.env.APPDATA:__platform==="darwin"?__process.env.HOME+"/Library/Preferences":process.env.HOME+"/.config")+"/BetterDiscord/";let __data={};if(__fs.existsSync(`${__dataPath}localStorage.json`)){try{__data=JSON.parse(__fs.readFileSync(`${__dataPath}localStorage.json`))}catch(err){console.log(err)}}else if(__fs.existsSync("localStorage.json")){try{__data=JSON.parse(__fs.readFileSync("localStorage.json"))}catch(err){console.log(err)}}var __ls=__data;__ls.setItem=function(i,v){__ls[i]=v;this.save()};__ls.getItem=function(i){return __ls[i]||null};__ls.save=function(){__fs.writeFileSync(`${__dataPath}/localStorage.json`,JSON.stringify(this),null,4)};var __proxy=new Proxy(__ls,{set:function(target,name,val,receiver){__ls[name]=val;__ls.save()},get:function(target,name,receiver){return __ls[name]||null}});window.localStorage=__proxy})();window.bdStorage={};window.bdStorage.get=function(i){return betterDiscordIPC.sendSync("synchronous-message",{arg:"storage",cmd:"get",var:i})};window.bdStorage.set=function(i,v){betterDiscordIPC.sendSync("synchronous-message",{arg:"storage",cmd:"set",var:i,data:v})};window.bdPluginStorage={};window.bdPluginStorage.get=function(pn,i){return betterDiscordIPC.sendSync("synchronous-message",{arg:"pluginstorage",cmd:"get",pn:pn,var:i})};window.bdPluginStorage.set=function(pn,i,v){betterDiscordIPC.sendSync("synchronous-message",{arg:"pluginstorage",cmd:"set",pn:pn,var:i,data:v})};betterDiscordIPC.on("asynchronous-reply",(event,arg)=>{console.log(event);console.log(arg)});var settingsPanel,emoteModule,utils,quickEmoteMenu,opublicServers,voiceMode,pluginModule,themeModule,customCssEditor,dMode;var jsVersion=1.77;var supportedVersion="0.2.81";var mainObserver;var twitchEmoteUrlStart="https://static-cdn.jtvnw.net/emoticons/v1/";var twitchEmoteUrlEnd="/1.0";var ffzEmoteUrlStart="https://cdn.frankerfacez.com/emoticon/";var ffzEmoteUrlEnd="/1";var bttvEmoteUrlStart="https://cdn.betterttv.net/emote/";var bttvEmoteUrlEnd="/1x";var mainCore;var settings={"Save logs locally":{id:"bda-gs-0",info:"Saves chat logs locally",implemented:false,hidden:false,cat:"core"},"Public Servers":{id:"bda-gs-1",info:"Display public servers button",implemented:true,hidden:false,cat:"core"},"Minimal Mode":{id:"bda-gs-2",info:"Hide elements and reduce the size of elements.",implemented:true,hidden:false,cat:"core"},"Voice Mode":{id:"bda-gs-4",info:"Only show voice chat",implemented:true,hidden:false,cat:"core"},"Hide Channels":{id:"bda-gs-3",info:"Hide channels in minimal mode",implemented:true,hidden:false,cat:"core"},"Dark Mode":{id:"bda-gs-5",info:"Make certain elements dark by default(wip)",implemented:true,hidden:false,cat:"core"},"Override Default Emotes":{id:"bda-es-5",info:"Override default emotes",implemented:false,hidden:false,cat:"core"},"Voice Disconnect":{id:"bda-dc-0",info:"Disconnect from voice server when closing Discord",implemented:true,hidden:false,cat:"core"},"Custom css live update":{id:"bda-css-0",info:"",implemented:true,hidden:true,cat:"core"},"Custom css auto udpate":{id:"bda-css-1",info:"",implemented:true,hidden:true,cat:"core"},"24 Hour Timestamps":{id:"bda-gs-6",info:"Replace 12hr timestamps with proper ones",implemented:true,hidden:false,cat:"core"},"Coloured Text":{id:"bda-gs-7",info:"Make text colour the same as role colour",implemented:true,hidden:false,cat:"core"},"Developer Mode":{id:"bda-gs-8",info:"Developer Mode",implemented:true,hidden:false,cat:"core"},"Twitch Emotes":{id:"bda-es-7",info:"Show Twitch emotes",implemented:true,hidden:false,cat:"emote"},"FrankerFaceZ Emotes":{id:"bda-es-1",info:"Show FrankerFaceZ Emotes",implemented:true,hidden:false,cat:"emote"},"BetterTTV Emotes":{id:"bda-es-2",info:"Show BetterTTV Emotes",implemented:true,hidden:false,cat:"emote"},"Emote Menu":{id:"bda-es-0",info:"Show Twitch/Favourite emotes in emote menu",implemented:true,hidden:false,cat:"emote"},"Emoji Menu":{id:"bda-es-9",info:"Show Discord emoji menu",implemented:true,hidden:false,cat:"emote"},"Emote Autocomplete":{id:"bda-es-3",info:"Autocomplete emote commands",implemented:false,hidden:false,cat:"emote"},"Emote Auto Capitalization":{id:"bda-es-4",info:"Autocapitalize emote commands",implemented:true,hidden:false,cat:"emote"},"Show Names":{id:"bda-es-6",info:"Show emote names on hover",implemented:true,hidden:false,cat:"emote"},"Show emote modifiers":{id:"bda-es-8",info:"Enable emote mods",implemented:true,hidden:false,cat:"emote"}};var links={"Jiiks.net":{text:"Jiiks.net",href:"thtp://jiiks.net",target:"_blank"},twitter:{text:"Twitter",href:"http://twitter.com/jiiksi",target:"_blank"},github:{text:"Github",href:"http://github.com/jiiks",target:"_blank"}};var defaultCookie={version:jsVersion,"bda-gs-0":false,"bda-gs-1":true,"bda-gs-2":false,"bda-gs-3":false,"bda-gs-4":false,"bda-gs-5":true,"bda-gs-6":false,"bda-gs-7":false,"bda-gs-8":false,"bda-es-0":true,"bda-es-1":true,"bda-es-2":true,"bda-es-3":false,"bda-es-4":false,"bda-es-5":true,"bda-es-6":true,"bda-es-7":true,"bda-es-8":true,"bda-jd":true,"bda-es-8":true,"bda-dc-0":false,"bda-css-0":false,"bda-css-1":false,"bda-es-9":true};var bdchangelog={changes:{"0a":{title:"1.77 : Local storage proxy",text:"Implemented a local storage proxy for old plugin support. Do not use it for new plugins! use the bdPluginStorage.get and bdPluginStorage.set",img:""},"0b":{title:"1.76 : Alternate Storage",text:"https://gist.github.com/Jiiks/267113ecb1685f39f4dc4646f9380d55",img:""}},fixes:{"0a":{title:"1.77 : Custom css and favourite emote loading",text:"Fixed custom css and favourite emote loading when they are not present",img:""},"0b":{title:"1.76 : Alternate Storage",text:"Both BetterDiscord and plugins now use alternate storage",img:""}}};var settingsCookie={};function Core(){}Core.prototype.init=function(){var self=this;var lVersion=typeof version==="undefined"?bdVersion:version;if(lVersion Please download the latest version from BetterDiscord.net");return}utils=new Utils;var sock=new BdWSocket;sock.start();utils.getHash();emoteModule=new EmoteModule;quickEmoteMenu=new QuickEmoteMenu;voiceMode=new VoiceMode;dMode=new devMode;emoteModule.init();this.initSettings();this.initObserver();function gwDefer(){console.log((new Date).getTime()+" Defer");if($(".guilds-wrapper .guilds").children().length>0){console.log((new Date).getTime()+" Defer Loaded");var guilds=$(".guilds>li:first-child");var showChannelsButton=$("",{class:"btn",id:"bd-show-channels",text:"R",css:{cursor:"pointer"},click:function(){settingsCookie["bda-gs-3"]=false;$("body").removeClass("bd-minimal-chan");self.saveSettings()}});$(".guilds-wrapper").prepend(showChannelsButton);opublicServers=new PublicServers;customCssEditor=new CustomCssEditor;pluginModule=new PluginModule;pluginModule.loadPlugins();if(typeof themesupport2!=="undefined"){themeModule=new ThemeModule;themeModule.loadThemes()}settingsPanel=new SettingsPanel;settingsPanel.init();quickEmoteMenu.init(false);$("#tc-settings-button").on("click",function(){settingsPanel.show()});window.addEventListener("beforeunload",function(){if(settingsCookie["bda-dc-0"]){$(".btn.btn-disconnect").click()}});$(document).on("mousedown",function(e){});opublicServers.init();emoteModule.autoCapitalize();if(settingsCookie["version"].CodeMirror{ min-width:100%; }");$("head").append('')}else{setTimeout(gwDefer,100)}}$(document).ready(function(){setTimeout(gwDefer,1e3)})};Core.prototype.initSettings=function(){if($.cookie("better-discord")==undefined){settingsCookie=defaultCookie;this.saveSettings()}else{this.loadSettings();for(var setting in defaultCookie){if(settingsCookie[setting]==undefined){settingsCookie[setting]=defaultCookie[setting];this.saveSettings()}}}};Core.prototype.saveSettings=function(){$.cookie("better-discord",JSON.stringify(settingsCookie),{expires:365,path:"/"})};Core.prototype.loadSettings=function(){settingsCookie=JSON.parse($.cookie("better-discord"))};var botlist=["119598467310944259"];Core.prototype.initObserver=function(){mainObserver=new MutationObserver(function(mutations){mutations.forEach(function(mutation){if(settingsPanel!==undefined)settingsPanel.inject(mutation);if($(mutation.target).find(".emoji-picker").length){var fc=mutation.target.firstChild;if(fc.classList.contains("popout")){quickEmoteMenu.obsCallback($(fc))}}if(typeof pluginModule!=="undefined")pluginModule.rawObserver(mutation);if(mutation.target.getAttribute("class")!=null){if(mutation.target.classList.contains("title-wrap")||mutation.target.classList.contains("chat")){voiceMode.obsCallback();if(typeof pluginModule!=="undefined")pluginModule.channelSwitch()}if(mutation.target.getAttribute("class").indexOf("scroller messages")!=-1){if(typeof pluginModule!=="undefined")pluginModule.newMessage()}if(settingsCookie["bda-gs-6"]){$(".timestamp").not("[data-24]").each(function(){var t=$(this);t.attr("data-24",true);var text=t.text();var matches=/(.*)?at\s+(\d{1,2}):(\d{1,2})\s+(.*)/.exec(text);if(matches==null)return true;if(matches.length<5)return true;var h=parseInt(matches[2]);if(matches[4]=="AM"){if(h==12)h-=12}else if(matches[4]=="PM"){if(h<12)h+=12}matches[2]=("0"+h).slice(-2);t.text(matches[1]+" at "+matches[2]+":"+matches[3])})}if(settingsCookie["bda-gs-7"]){$(".user-name").not("[data-colour]").each(function(){var t=$(this);var color=t.css("color");if(color=="rgb(255, 255, 255)")return true;t.closest(".message-group").find(".markup").not("[data-colour]").each(function(){$(this).attr("data-colour",true);$(this).css("color",color)})})}}emoteModule.obsCallback(mutation)})});mainObserver.observe(document,{childList:true,subtree:true})};Core.prototype.constructChangelog=function(){var changeLog=""+'
'+'
'+'
'+'
'+" What's new in BetterDiscord JS"+jsVersion+""+' '+"
"+'
'+'
';if(bdchangelog.changes!=null){changeLog+=""+'
'+" New Stuff"+"
"+"
";for(var change in bdchangelog.changes){change=bdchangelog.changes[change];changeLog+=""+"
"+" "+change.title+""+"
"+change.text+"
"+"
"}changeLog+="
"}if(bdchangelog.fixes!=null){changeLog+=""+'
'+" Fixed"+"
"+"
";for(var fix in bdchangelog.fixes){fix=bdchangelog.fixes[fix];changeLog+=""+"
"+" "+fix.title+""+"
"+fix.text+"
"+"
"}changeLog+="
"}if(bdchangelog.upcoming!=null){changeLog+=""+'
'+" Coming Soon"+"
"+"
";for(var upc in bdchangelog.upcoming){upc=bdchangelog.upcoming[upc];changeLog+=""+"