diff --git a/css/main.css b/css/main.css
index d8189567..ab1d224e 100644
--- a/css/main.css
+++ b/css/main.css
@@ -1,6 +1,9 @@
/*New loader*/
+.bd-logo,
+.bd-loaderv2 {
+ background-image: url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+IDwhRE9DVFlQRSBzdmcgUFVCTElDICItLy9XM0MvL0RURCBTVkcgMS4xLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL0dyYXBoaWNzL1NWRy8xLjEvRFREL3N2ZzExLmR0ZCI+PHN2ZyBoZWlnaHQ9IjEwMCUiIHN0eWxlPSJmaWxsLXJ1bGU6ZXZlbm9kZDtjbGlwLXJ1bGU6ZXZlbm9kZDtzdHJva2UtbGluZWNhcDpyb3VuZDtzdHJva2UtbGluZWpvaW46cm91bmQ7IiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWw6c3BhY2U9InByZXNlcnZlIiB3aWR0aD0iMTAwJSIgdmVyc2lvbj0iMS4xIiB2aWV3Qm94PSIwIDAgMjAwMCAyMDAwIj4gICAgPG1ldGFkYXRhIC8+ICAgIDxkZWZzPiAgICAgICAgPGZpbHRlciBpZD0ic2hhZG93MSI+ICAgICAgICA8ZmVEcm9wU2hhZG93IGR4PSIyMCIgZHk9IjAiIHN0ZERldmlhdGlvbj0iMjAiIGZsb29kLWNvbG9yPSJyZ2JhKDAsMCwwLDAuMzUpIi8+ICAgICAgICA8L2ZpbHRlcj4gICAgICAgIDxmaWx0ZXIgaWQ9InNoYWRvdzIiPiAgICAgICAgPGZlRHJvcFNoYWRvdyBkeD0iMTUiIGR5PSIwIiBzdGREZXZpYXRpb249IjIwIiBmbG9vZC1jb2xvcj0icmdiYSgyNTUsMjU1LDI1NSwwLjE1KSIvPiAgICAgICAgPC9maWx0ZXI+ICAgICAgICA8ZmlsdGVyIGlkPSJzaGFkb3czIj4gICAgICAgIDxmZURyb3BTaGFkb3cgZHg9IjEwIiBkeT0iMCIgc3RkRGV2aWF0aW9uPSIyMCIgZmxvb2QtY29sb3I9InJnYmEoMCwwLDAsMC4zNSkiLz4gICAgICAgIDwvZmlsdGVyPiAgICA8L2RlZnM+ICAgIDxnPiAgICAgICAgPHBhdGggc3R5bGU9ImZpbHRlcjogdXJsKCNzaGFkb3czKSIgZD0iTTExOTUuNDQrMTM1LjQ0MkwxMTk1LjQ0KzEzNS40NDJMOTk3LjYrMTM2LjQ0MkMxMDI0LjIrMTQ5Ljc0MisxMTcwLjM0KzE2My41NDIrMTE5My42NCsxNzkuNzQyQzEyNjQuMzQrMjI4Ljg0MisxMzE5Ljc0KzI5MS4yNDIrMTM1OC4yNCszNjUuMDQyQzEzOTguMTQrNDQxLjY0MisxNDE5Ljc0KzUzMC42NDIrMTQyMi41NCs2MjkuNjQyTDE0MjIuNTQrNjMwLjg0MkwxNDIyLjU0KzYzMi4wNDJDMTQyMi41NCs3NzMuMTQyKzE0MjIuNTQrMTIyOC4xNCsxNDIyLjU0KzEzNjkuMTRMMTQyMi41NCsxMzcwLjM0TDE0MjIuNTQrMTM3MS41NEMxNDE5Ljg0KzE0NzAuNTQrMTM5OC4yNCsxNTU5LjU0KzEzNTguMjQrMTYzNi4xNEMxMzE5Ljc0KzE3MDkuOTQrMTI2NC40NCsxNzcyLjM0KzExOTMuNjQrMTgyMS40NEMxMTcxLjA0KzE4MzcuMTQrMTAyNS43KzE4NTAuNTQrMTAwMCsxODYzLjU0TDExOTMuNTQrMTg2NC41NEMxNTM5Ljc0KzE4NjYuNDQrMTg2NC41NCsxNjkzLjM0KzE4NjQuNTQrMTI5Ni42NEwxODY0LjU0KzcxNi45NDJDMTg2Ni40NCszMTIuNDQyKzE1NDEuNjQrMTM1LjQ0MisxMTk1LjQ0KzEzNS40NDJaIiBmaWxsPSIjMTcxNzE3IiBvcGFjaXR5PSIxIi8+ICAgICAgICA8cGF0aCBzdHlsZT0iZmlsdGVyOiB1cmwoI3NoYWRvdzIpIiBkPSJNMTY5NS41NCs2MzEuNDQyQzE2ODUuODQrMjc4LjA0MisxNDA5LjM0KzEzNS40NDIrMTA1Mi45NCsxMzUuNDQyTDM2MS43NCsxMzYuNDQyTDgwMy43NCs0OTAuNDQyTDEwNjAuNzQrNDkwLjQ0MkMxMzM1LjI0KzQ5MC40NDIrMTMzNS4yNCs4MzUuMzQyKzEwNjAuNzQrODM1LjM0MkwxMDYwLjc0KzExNjQuODRDMTE1MC4yMisxMTY0Ljg0KzEyMTAuNTMrMTIwMS40OCsxMjQxLjY4KzEyNTAuODdDMTMwNi4wNysxMzUzKzEyNDUuNzYrMTUwOS42NCsxMDYwLjc0KzE1MDkuNjRMMzYxLjc0KzE4NjMuNTRMMTA1Mi45NCsxODY0LjU0QzE0MDkuMjQrMTg2NC41NCsxNjg1Ljc0KzE3MjEuOTQrMTY5NS41NCsxMzY4LjU0QzE2OTUuNTQrMTIwNS45NCsxNjUxLjA0KzEwODQuNDQrMTU3Mi42NCs5OTkuOTQyQzE2NTEuMDQrOTE1LjU0MisxNjk1LjU0Kzc5NC4wNDIrMTY5NS41NCs2MzEuNDQyWiIgZmlsbD0iIzNFODJFNSIgb3BhY2l0eT0iMSIvPiAgICAgICAgPHBhdGggc3R5bGU9ImZpbHRlcjogdXJsKCNzaGFkb3cxKSIgZD0iTTE0NjkuMjUrNjMxLjQ0MkMxNDU5LjU1KzI3OC4wNDIrMTE4My4wNSsxMzUuNDQyKzgyNi42NSsxMzUuNDQyTDEzNS40NSsxMzUuNDQyTDEzNS40NSsxMDA0QzEzNS40NSsxMDA0KzEzNS40MjcrMTI1NS4yMSszNTUuNjI2KzEyNTUuMjFDNTc1LjgyNSsxMjU1LjIxKzU3NS44NDgrMTAwNCs1NzUuODQ4KzEwMDRMNTc3LjQ1KzQ5MC40NDJMODM0LjQ1KzQ5MC40NDJDMTEwOC45NSs0OTAuNDQyKzExMDguOTUrODM1LjM0Mis4MzQuNDUrODM1LjM0Mkw2NjQuNjUrODM1LjM0Mkw2NjQuNjUrMTE2NC44NEw4MzQuNDUrMTE2NC44NEM5MjMuOTMyKzExNjQuODQrOTg0LjI0NCsxMjAxLjQ4KzEwMTUuMzkrMTI1MC44N0MxMDc5Ljc4KzEzNTMrMTAxOS40NysxNTA5LjY0KzgzNC40NSsxNTA5LjY0TDEzNS40NSsxNTA5LjY0TDEzNS40NSsxODY0LjU0TDgyNi42NSsxODY0LjU0QzExODIuOTUrMTg2NC41NCsxNDU5LjQ1KzE3MjEuOTQrMTQ2OS4yNSsxMzY4LjU0QzE0NjkuMjUrMTIwNS45NCsxNDI0Ljc1KzEwODQuNDQrMTM0Ni4zNSs5OTkuOTQyQzE0MjQuNzUrOTE1LjU0MisxNDY5LjI1Kzc5NC4wNDIrMTQ2OS4yNSs2MzEuNDQyWiIgZmlsbD0iI0ZGRkZGRiIgb3BhY2l0eT0iMSIvPiAgICA8L2c+PC9zdmc+);
+}
.bd-loaderv2 {
- background-image: url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz48IURPQ1RZUEUgc3ZnIFBVQkxJQyAiLS8vVzNDLy9EVEQgU1ZHIDEuMS8vRU4iICJodHRwOi8vd3d3LnczLm9yZy9HcmFwaGljcy9TVkcvMS4xL0RURC9zdmcxMS5kdGQiPjxzdmcgdmVyc2lvbj0iMS4xIiBpZD0iQ2FscXVlXzEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjBweCIgeT0iMHB4IiB2aWV3Qm94PSIwIDAgMjAwMCAyMDAwIiBlbmFibGUtYmFja2dyb3VuZD0ibmV3IDAgMCAyMDAwIDIwMDAiIHhtbDpzcGFjZT0icHJlc2VydmUiPjxnPjxwYXRoIGZpbGw9IiMzRTgyRTUiIGQ9Ik0xNDAyLjIsNjMxLjdjLTkuNy0zNTMuNC0yODYuMi00OTYtNjQyLjYtNDk2SDY4LjR2NzE0LjFsNDQyLDM5OFY0OTAuN2gyNTdjMjc0LjUsMCwyNzQuNSwzNDQuOSwwLDM0NC45ICAgSDU5Ny42djMyOS41aDE2OS44YzI3NC41LDAsMjc0LjUsMzQ0LjgsMCwzNDQuOGgtNjk5djM1NC45aDY5MS4yYzM1Ni4zLDAsNjMyLjgtMTQyLjYsNjQyLjYtNDk2YzAtMTYyLjYtNDQuNS0yODQuMS0xMjIuOS0zNjguNiAgIEMxMzU3LjcsOTE1LjgsMTQwMi4yLDc5NC4zLDE0MDIuMiw2MzEuN3oiLz48cGF0aCBmaWxsPSIjRkZGRkZGIiBkPSJNMTI2Mi41LDEzNS4yTDEyNjIuNSwxMzUuMmwtNzYuOCwwYzI2LjYsMTMuMyw1MS43LDI4LjEsNzUsNDQuM2M3MC43LDQ5LjEsMTI2LjEsMTExLjUsMTY0LjYsMTg1LjMgICBjMzkuOSw3Ni42LDYxLjUsMTY1LjYsNjQuMywyNjQuNmwwLDEuMnYxLjJjMCwxNDEuMSwwLDU5Ni4xLDAsNzM3LjF2MS4ybDAsMS4yYy0yLjcsOTktMjQuMywxODgtNjQuMywyNjQuNiAgIGMtMzguNSw3My44LTkzLjgsMTM2LjItMTY0LjYsMTg1LjNjLTIyLjYsMTUuNy00Ni45LDMwLjEtNzIuNiw0My4xaDcyLjVjMzQ2LjIsMS45LDY3MS0xNzEuMiw2NzEtNTY3LjlWNzE2LjcgICBDMTkzMy41LDMxMi4yLDE2MDguNywxMzUuMiwxMjYyLjUsMTM1LjJ6Ii8+PC9nPjwvc3ZnPg==);
position: fixed;
bottom:5px;
right:5px;
@@ -9,10 +12,10 @@
width: 20px;
height: 20px;
background-size: 100% 100%;
- -webkit-animation: bd-loaderv2-animation 1.5s ease-in-out infinite;
+ animation: bd-loaderv2-animation 1.5s ease-in-out infinite;
}
-@-webkit-keyframes bd-loaderv2-animation {
+@keyframes bd-loaderv2-animation {
0% { opacity: 0.05; }
50% { opacity: 0.6; }
100% { opacity: 0.05; }
@@ -2325,7 +2328,7 @@ margin-right: -30px;
}
-/* New Startup Modal, New Alert */
+/* New Content Modal, New Alert */
@keyframes bd-backdrop {
to { opacity: 0.85; }
}
@@ -2399,7 +2402,7 @@ margin-right: -30px;
user-select: text;
}
-.bd-modal-wrapper .bd-startup-modal .bd-modal-inner {
+.bd-modal-wrapper .bd-content-modal .bd-modal-inner {
height: 500px;
width: 700px;
}
@@ -2431,7 +2434,7 @@ margin-right: -30px;
padding: 10px;
}
-.bd-modal-wrapper .bd-startup-modal .bd-modal-body {
+.bd-modal-wrapper .bd-content-modal .bd-modal-body {
padding: 0;
}
@@ -2546,7 +2549,7 @@ margin-right: -30px;
align-items: center;
}
-.bd-modal-wrapper .bd-startup-modal .scroller {
+.bd-modal-wrapper .bd-content-modal .scroller {
padding-top: 0;
}
diff --git a/css/main.min.css b/css/main.min.css
index 11368789..f33a0549 100644
--- a/css/main.min.css
+++ b/css/main.min.css
@@ -1 +1 @@
-.bd-loaderv2{background-image:url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz48IURPQ1RZUEUgc3ZnIFBVQkxJQyAiLS8vVzNDLy9EVEQgU1ZHIDEuMS8vRU4iICJodHRwOi8vd3d3LnczLm9yZy9HcmFwaGljcy9TVkcvMS4xL0RURC9zdmcxMS5kdGQiPjxzdmcgdmVyc2lvbj0iMS4xIiBpZD0iQ2FscXVlXzEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjBweCIgeT0iMHB4IiB2aWV3Qm94PSIwIDAgMjAwMCAyMDAwIiBlbmFibGUtYmFja2dyb3VuZD0ibmV3IDAgMCAyMDAwIDIwMDAiIHhtbDpzcGFjZT0icHJlc2VydmUiPjxnPjxwYXRoIGZpbGw9IiMzRTgyRTUiIGQ9Ik0xNDAyLjIsNjMxLjdjLTkuNy0zNTMuNC0yODYuMi00OTYtNjQyLjYtNDk2SDY4LjR2NzE0LjFsNDQyLDM5OFY0OTAuN2gyNTdjMjc0LjUsMCwyNzQuNSwzNDQuOSwwLDM0NC45ICAgSDU5Ny42djMyOS41aDE2OS44YzI3NC41LDAsMjc0LjUsMzQ0LjgsMCwzNDQuOGgtNjk5djM1NC45aDY5MS4yYzM1Ni4zLDAsNjMyLjgtMTQyLjYsNjQyLjYtNDk2YzAtMTYyLjYtNDQuNS0yODQuMS0xMjIuOS0zNjguNiAgIEMxMzU3LjcsOTE1LjgsMTQwMi4yLDc5NC4zLDE0MDIuMiw2MzEuN3oiLz48cGF0aCBmaWxsPSIjRkZGRkZGIiBkPSJNMTI2Mi41LDEzNS4yTDEyNjIuNSwxMzUuMmwtNzYuOCwwYzI2LjYsMTMuMyw1MS43LDI4LjEsNzUsNDQuM2M3MC43LDQ5LjEsMTI2LjEsMTExLjUsMTY0LjYsMTg1LjMgICBjMzkuOSw3Ni42LDYxLjUsMTY1LjYsNjQuMywyNjQuNmwwLDEuMnYxLjJjMCwxNDEuMSwwLDU5Ni4xLDAsNzM3LjF2MS4ybDAsMS4yYy0yLjcsOTktMjQuMywxODgtNjQuMywyNjQuNiAgIGMtMzguNSw3My44LTkzLjgsMTM2LjItMTY0LjYsMTg1LjNjLTIyLjYsMTUuNy00Ni45LDMwLjEtNzIuNiw0My4xaDcyLjVjMzQ2LjIsMS45LDY3MS0xNzEuMiw2NzEtNTY3LjlWNzE2LjcgICBDMTkzMy41LDMxMi4yLDE2MDguNywxMzUuMiwxMjYyLjUsMTM1LjJ6Ii8+PC9nPjwvc3ZnPg==);position:fixed;bottom:5px;right:5px;z-index:2147483647;display:block;width:20px;height:20px;background-size:100% 100%;-webkit-animation:bd-loaderv2-animation 1.5s ease-in-out infinite}@-webkit-keyframes bd-loaderv2-animation{0%{opacity:.05}50%{opacity:.6}100%{opacity:.05}}.bd-reload{cursor:pointer;vertical-align:top;fill:#dcddde}.bd-reload:hover{fill:#fff}.bd-reload-header{margin-left:5px}.bd-reload-card{margin-right:5px}.bda-controls{display:flex}.standardSidebarView-3F1I7i .bd-psm{background-color:#292b2f;box-shadow:0 0 12px 6px rgba(31,31,31,0.32);border:1px solid #3f4146;width:60vw;height:80vh;border-radius:6px}.standardSidebarView-3F1I7i #bd-customcss-attach-controls button,.bd-detached-css-editor #bd-customcss-attach-controls button{margin:0;width:100px;background:#31332b;color:#FFF;height:26px;font-weight:600;margin-top:5px;border-radius:3px}.standardSidebarView-3F1I7i #bd-customcss-attach-controls button:hover,.bd-detached-css-editor #bd-customcss-attach-controls button:hover{background:#3b3e44}.cm-s-neat span.cm-comment{color:#a86}.cm-s-neat span.cm-keyword{line-height:1em;font-weight:700;color:#00f}.cm-s-neat span.cm-string{color:#a22}.cm-s-neat span.cm-builtin{line-height:1em;font-weight:700;color:#077}.cm-s-neat span.cm-special{line-height:1em;font-weight:700;color:#0aa}.cm-s-neat span.cm-variable{color:#000}.cm-s-neat span.cm-atom,.cm-s-neat span.cm-number{color:#3a3}.cm-s-neat span.cm-meta{color:#555}.cm-s-neat span.cm-link{color:#3a3}.cm-s-neat .CodeMirror-activeline-background{background:#e8f2ff}.cm-s-neat .CodeMirror-matchingbracket{outline:grey solid 1px;color:#000 !important}#custom-css-ta{background:#d8d8d8;height:200px;font-family:"Consolas"}.contentRegion-3nDuYy .CodeMirror,.contentRegion-3nDuYy .cm-s-material .CodeMirror-gutters,#bd-customcss-detach-container .CodeMirror,#bd-customcss-detach-container .cm-s-material .CodeMirror-gutters{background:#292b2f !important}.contentRegion-3nDuYy #bd-customcss-attach-controls,#bd-customcss-detach-container #bd-customcss-attach-controls{background:#272822;color:#FFF;border:0;box-shadow:0 1px 0 0 #2f3129 inset}.contentRegion-3nDuYy #bd-customcss-pane,.contentRegion-3nDuYy #bd-customcss-innerpane,#bd-customcss-detach-container #bd-customcss-pane,#bd-customcss-detach-container #bd-customcss-innerpane{min-height:calc(80vh - 165px)}.contentRegion-3nDuYy .CodeMirror,.contentRegion-3nDuYy .CodeMirror-scroll{max-height:calc(95vh - 165px);min-height:calc(95vh - 165px);height:auto}.contentRegion-3nDuYy .CodeMirror-simplescroll-vertical,.contentRegion-3nDuYy .CodeMirror-simplescroll-horizontal,#bd-customcss-detach-container .CodeMirror-simplescroll-vertical,#bd-customcss-detach-container .CodeMirror-simplescroll-horizontal{background:transparent !important}.contentRegion-3nDuYy .CodeMirror-simplescroll-vertical,#bd-customcss-detach-container .CodeMirror-simplescroll-vertical{margin-right:3px !important}.contentRegion-3nDuYy .CodeMirror-simplescroll-horizontal,#bd-customcss-detach-container .CodeMirror-simplescroll-horizontal{margin-bottom:3px !important}.contentRegion-3nDuYy .CodeMirror-simplescroll-vertical div,.contentRegion-3nDuYy .CodeMirror-simplescroll-horizontal div,#bd-customcss-detach-container .CodeMirror-simplescroll-vertical div,#bd-customcss-detach-container .CodeMirror-simplescroll-horizontal div{background:#18191c !important;border:none !important;border-radius:5px !important}.contentRegion-3nDuYy .CodeMirror-scrollbar-filler,#bd-customcss-detach-container .CodeMirror-scrollbar-filler{display:none !important}.standardSidebarView-3F1I7i #editor-detached h3{color:#87909c;font-weight:600;font-size:22px}.standardSidebarView-3F1I7i #editor-detached button{margin:auto;margin-left:calc(50% - 100px);margin-top:20px;background:#7289da;color:#FFF;font-weight:600;border-radius:5px;font-size:20px}.bd-blue .standardSidebarView-3F1I7i #editor-detached button{background:#3a71c1}.standardSidebarView-3F1I7i .bd-versioninfo-wrapper{bottom:0;left:0;position:fixed;background:inherit;right:0;padding:5px}.standardSidebarView-3F1I7i .bd-versioninfo-wrapper span{color:#b9bbbe;font-weight:600;font-size:11px}.standardSidebarView-3F1I7i .bd-versioninfo-wrapper a{font-size:11px}.bd-server-card .bd-server-tags{flex:1 1 auto;text-overflow:ellipsis;white-space:nowrap;overflow:hidden;width:0;line-height:24px;font-size:12px;color:#b9bbbe;font-weight:700;margin-right:10px}.ui-card.ui-card-primary.bd-server-card:first-child{margin-bottom:13px}.ui-card.ui-card-primary.bd-server-card:first-child:after{border:3px solid #7289da;content:"";display:block;position:absolute;left:0;right:0;margin-top:4px}.bd-server-card.bd-server-card-pinned{margin-bottom:15px}.bd-server-card.bd-server-card-pinned:after{background:#3a71c1;content:"";height:3px;width:100%;display:block;margin-top:7px;position:absolute;top:100%}.bd-server-description-container{color:#b9bbbe;min-height:65px;max-height:65px;border-top:1px solid #3f4146;border-bottom:1px solid #3f4146;padding-top:5px;font-size:13px}.bd-server-header{justify-content:space-between;font-weight:600}.bd-server-card{display:flex}.bd-server-content{padding:5px 10px;flex:1}.bd-server-image{min-width:115px;min-height:115px;max-width:115px;max-height:115px}.bd-server-name{text-overflow:ellipsis;white-space:nowrap;overflow:hidden;padding-right:15px;max-width:330px;flex:1 1 50%}.bd-layer{-ms-flex-direction:column;-webkit-box-direction:normal;-webkit-box-orient:vertical;bottom:0;display:-webkit-box;display:-ms-flexbox;display:flex;flex-direction:column;left:0;position:absolute;right:0;top:0}.spoiler{color:transparent !important}.spoiler img{display:none}.spoiler:before{content:"Spoiler";display:block;background:#1d1d1d;color:#adadad !important;min-height:30px;text-align:center;line-height:100%;font-family:"Consolas";padding-top:5px}.emotemenu-enabled .channel-textarea-inner textarea{margin-right:45px !important}#bdbeta{background:red}.editor-wrapper{display:flex}.line-numbers,.editor{line-height:normal;font-family:Consolas,monospace;box-sizing:border-box;height:calc(100vh - 250px);font-size:14px}.line-numbers{white-space:pre;color:gray;padding:10px 5px 0 5px;background:#24262a;overflow:hidden}.editor{width:100%;background:#292b2f;outline:0;color:white;padding:10px;resize:none}#bd-customcss-detach-container .editor-wrapper,#bd-customcss-detach-container .line-numbers,#bd-customcss-detach-container .editor{height:100%}#emote-menu{background:#36393e;height:0;width:300px;position:absolute;bottom:45px;right:0;border:1px solid #000;border-radius:5px 0 0 0;overflow:hidden;visibility:hidden;transition:all 1s;-webkit-transition:all 1s}.emotemenu-open{height:450px !important;visibility:visible !important}#emote-menu-header{width:100%;height:30px;background-color:#36393e}.emote-menu-tab{float:left;width:130px;text-align:center;padding:7px;color:#adadad;background-color:#424549;cursor:pointer}.emote-menu-tab:hover{background-color:#45484c}#emote-menu-inner,#emote-menu-inner-fav{height:412px}.emote-menu-tab-selected{background-color:#36393e}.emote-menu-tab-selected:hover{background-color:#36393e}#emote-container{padding:10px}.emote-container{display:inline-block;padding:2px;border-radius:5px;width:30px;height:30px;position:relative}.emote-icon{max-width:100%;max-height:100%;position:absolute;margin:auto;top:0;right:0;bottom:0;left:0;cursor:pointer}.emote.stop-animation{animation:none !important}.emote-container:hover{background:rgba(123,123,123,0.37)}.emoteflip,.emotespinflip{transform:scaleX(-1)}.emotespin{animation:1s emote-spin infinite linear}.emote1spin{animation:1s emote-spin-reverse infinite linear}.emotespin2{animation:.5s emote-spin infinite linear}.emote2spin{animation:.5s emote-spin-reverse infinite linear}.emotespin3{animation:.2s emote-spin infinite linear}.emote3spin{animation:.2s emote-spin-reverse infinite linear}.emotepulse{animation:1s emote-pulse infinite linear}.emotetr{transform:translateX(-3px)}.emotebl{transform:translateY(-3px)}.emotebr{transform:translate(-3px,-3px)}.emoteshake{animation:1s emote-shake infinite linear}.emoteflap{transform:scaleY(-1) !important}.emoteshake2{animation:emote-shake2 .3s linear infinite}.emoteshake3{animation:emote-shake3 .1s linear infinite}@keyframes emote-shake2{25%{transform:translate(-1px,-1px)}50%{transform:translate(-1px,1px)}75%{transform:translate(1px,1px)}75%{transform:translate(1px,-1px)}}@keyframes emote-shake3{25%{transform:translate(-1px,-1px)}50%{transform:translate(-1px,1px)}75%{transform:translate(1px,1px)}75%{transform:translate(1px,-1px)}}@keyframes emote-spin{from{transform:rotate(0)}to{transform:rotate(360deg)}}@keyframes emote-spin-reverse{from{transform:rotate(0)}to{transform:rotate(-360deg)}}@keyframes emote-pulse{0%{-webkit-transform:scale(1,1)}50%{-webkit-transform:scale(1.2,1.2)}100%{-webkit-transform:scale(1,1)}}@keyframes emote-shake{10%,90%{transform:translate3d(-1px,0,0)}20%,80%{transform:translate3d(2px,0,0)}30%,50%,70%{transform:translate3d(-4px,0,0)}40%,60%{transform:translate3d(4px,0,0)}}#tc-settings-panel{position:fixed;width:50%;height:75%;background:#2e3136;display:block;z-index:9001;margin-left:25%;margin-top:5%;border:1px solid #000;box-shadow:0 0 20px 0 #000;max-height:800px;min-width:750px}#tc-settings-panel-header{background:#36393e;height:60px;border-bottom:1px solid #000;box-shadow:0 1px 0 0 #4e4e4e}#tc-settings-panel-header h2{margin:0;line-height:60px;margin-left:10px;color:#adadad;display:inline-block;float:left}#tc-settings-panel-header span{float:right;display:inline;line-height:50px;margin-right:15px;font-size:29px;font-weight:bold;color:#adadad}#rmenu{width:auto;background:#505050;position:absolute;z-index:999999;display:none;box-shadow:0 0 2px #000;padding:2px}#rmenu ul a{text-decoration:none;color:#FFF;padding:3px}#tc-settings-panel-body{overflow:auto}#tc-settings-panel-body ul{overflow:auto;position:absolute;padding:0;margin-top:0;border-bottom:1px solid #000;left:0;right:0;bottom:40px;top:61px}#tc-settings-panel-body ul li{padding:15px;color:#adadad;background:#2e3136;border-bottom:1px solid #000;box-shadow:0 1px 0 #404040 inset}#tc-settings-panel-body ul li:nth-child(odd){background:#33363b}#tc-settings-panel-body ul li h2{display:inline}#tc-links a{color:#FFF}#tc-settings-panel-footer{background:#36393e;height:40px;position:absolute;bottom:0;right:0;left:0;border-top:1px solid #000;box-shadow:0 1px 0 #505050 inset;line-height:40px;padding-left:10px;color:#adadad !important}#tc-links{float:right;margin-right:10px}.tc-switch{background:#2e3136;width:100px;height:24px;display:inline-block;float:right;margin:-7px;border:1px solid #000;outline:1px solid #404040;cursor:pointer}.tc-switch.disabled{background:gray;cursor:default}.tc-switch.disabled span{background:gray !important}.tc-switch.disabled .tc-switch-on{border-left:1px gray !important}.tc-switch span{line-height:24px;display:inline-block;width:49px;text-align:center;height:24px}.tc-switch-off{border-right:1px solid #000}.tc-switch-on{border-left:1px solid #404040}.tc-switch-on.active{background:green;border-left:1px solid #00ae08}.tc-switch-off.active{background:#860606}.bd-minimal .divider-32i8lo{opacity:0}.bd-minimal .large-3ChYtB{max-width:20px;max-height:20px;background-size:100%;margin-right:2px;margin-top:0;border-radius:0}.bd-minimal .content-3dzVd8{border-left:2px solid #ebebeb;padding-left:2px}.bd-minimal .theme-dark .content-3dzVd8{border-left:2px solid #303030}.bd-minimal .username-_4ZSMR{font-size:small}.bd-minimal.bd-minimal-chan .channels-Ie2l6A{display:none}.bd-minimal .container-1YxwTf{padding:5px}.bd-minimal .embed{padding:2px}.bd-minimal .members-1998pB .small-5Os1Bb{max-width:15px;max-height:15px;background-size:15px 15px}.bd-minimal .members-1998pB .small-5Os1Bb .status-oxiHuE{height:5px;width:5px}.bd-minimal .members-1998pB .member-3W1lQa{padding:5px}.bd-minimal .members-1998pB .memberInner-2CPc3V{transform:scale(0.9)}.bd-minimal .membersWrap-2h-GB4{min-width:0}.bd-minimal .members-1998pB .membersGroup-v9BXpm{margin-top:3px;transform:scale(0.9)}.bd-minimal .channels-Ie2l6A header span{font-size:12px}.bd-minimal .channels-Ie2l6A .channels-Ie2l6A{padding:0}.bd-minimal .guildsWrapper-5TJh6A .guilds-1q_RqH .guild-1EfMGQ{width:20px;height:20px;background-size:100%;font-size:15px;line-height:20px}.bd-minimal .guildsWrapper-5TJh6A .guilds-1q_RqH .guild-1EfMGQ .guildInner-3DSoA4 a,.bd-minimal .guild-1EfMGQ .guildInner-3DSoA4 .guildIcon-CT-ZDq{width:20px;height:20px;background-size:100%;font-size:15px;line-height:20px}.bd-minimal .guild-1EfMGQ .guildInner-3DSoA4{width:20px;height:20px;background-size:100%;font-size:15px;line-height:20px}.bd-minimal .guilds-1q_RqH .homeIcon-1FoKUJ{width:10px;height:10px;background-size:100%;font-size:15px;line-height:20px}.bd-minimal .guilds-1q_RqH .friendsOnline-_wi_fM{margin-left:-15px;font-size:7px}.bd-minimal .guildsWrapper-5TJh6A{width:45px}.bd-minimal .guildsWrapper-5TJh6A .guildSeparator-1X4GQ1{margin-left:-15px}.bd-minimal .guildsWrapper-5TJh6A .guilds-1q_RqH .guild-1EfMGQ.selected-ML3OIq:before{height:20px;margin-top:-10px}.bd-minimal .guildsAdd-21_IdK{font-size:20px;line-height:14px}.bd-minimal .guilds-1q_RqH .audio-3vVhBi .guildInner-3DSoA4:after{width:12px;height:12px;background-size:12px}.bd-minimal .guild-header header span{margin-left:-20px}.bd-minimal .btn-hamburger{margin-right:-30px}.bd-minimal .container-2Thooq .avatar-small{width:15px;height:15px;background-size:15px 15px}.bd-minimal .container-2Thooq .avatar-small .status-oxiHuE{height:5px;width:5px}.bd-minimal .container-2Thooq .accountDetails-3k9g4n{transform:scale(0.8)}.bd-minimal .container-2Thooq .button-2b6hmh{height:14px;width:14px;background-size:14px 14px;margin-left:3px}.bd-minimal .container-2Thooq .button-2b6hmh svg{height:14px;width:14px}.bd-minimal .channels-Ie2l6A{width:160px}.bd-minimal .content-20Aix8{transform:scale(0.9)}.bd-minimal .containerDefault-3GGEv_{transform:scale(0.9)}.bd-minimal .icon-sxakjD{width:14px;height:14px}.emotewrapper{position:relative;display:inline-flex;object-fit:contain;margin:-.1em .05em -.2em .1em;vertical-align:top}.emotewrapper.jumboable{margin-bottom:0;margin-top:.2em;vertical-align:-.3em}.emote{height:1.45em}.emote.jumboable{height:2rem}.emotewrapper:hover .fav{display:block}#bd-changelog h2{font-size:150%;padding-bottom:10px;border-bottom:1px solid rgba(0,0,0,0.5)}.fav{display:none;position:absolute;width:15px;height:15px;right:-7px;background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAAAzFBMVEUAAABQUFBMTExLS0tNTU1MTExNTU1NTU1MTExMTExNTU1LS0tEREBEREBEREBEREBJSUhLS0tLS0tEREBNTU1NTU1NTU1EREArKyhNTU1NTU0AAABMTExKSklMTExNTU1NTU1NTU1KSkpMTExKSkhNTU1KSkpISEZNTU1LS0tAQDxOTk5KSkpLS0tNTU1MTExMTEx/f39MTExMTExLS0pLS0tMTExNTU1NTU1LS0pNTU1NTU1NTU1NTU1NTU1NTUxNTU1NTU1NTUxMTEzB8C/5AAAAOnRSTlMAI8X96oWAgYSF68QBAg0PMCb9BIuLgQUD4N0Bh0mKhZSOQ4gcrKscaW8QRE6fmJyjAshASceG7cIpqQOxTQAAALVJREFUGFddx6FOA0EYAOGZvd07Qm6vVCAAgUUgQEDfX/YZMAigqaFN7iC5tsmPqGPUN/AvUVeoEbGOCElJz08Uzeixqu4AqomVVSNngOVjTqDGZSl3UFtPGV2ot2zaq96YM9p5Ddzcf/nTTAlj+/sNtNu8OcwkIsbPBtrUfMQeEhGQmHbmGIFMwLPzu6UMIwBNgToshgq8Nr2ki+Oy7ebDHp70LRPWB6OZgfWLWei7fJonOOsPCGA9kVlssOoAAAAASUVORK5CYII=");border:0;background-size:100% 100%;background-repeat:no-repeat;background-color:#303030;border-radius:5px;top:-7px;cursor:pointer}.fav.active{background-color:yellow}#bd-ps-container{position:fixed;width:50%;height:75%;background:#2e3136;display:block;z-index:9001;margin-left:25%;margin-top:5%;border:1px solid #000;box-shadow:0 0 20px 0 #000;max-height:800px;min-width:750px}#bd-ps-header{background:#36393e;height:60px;border-bottom:1px solid #000;box-shadow:0 1px 0 0 #4e4e4e}#bd-ps-header h2{margin:0;line-height:60px;margin-left:10px;color:#adadad;display:inline-block;float:left}#bd-ps-header span{float:right;display:inline;line-height:50px;margin-right:15px;font-size:29px;font-weight:bold;color:#adadad}#bd-ps-body{position:absolute;padding:0;margin-top:0;left:0;right:0;bottom:0;top:61px;overflow:auto}.bd-ps-server{width:100%;height:200px}.bd-ps-server-header{height:50px;width:100%;margin-top:1px;background:#202020;color:#aeaeae;line-height:50px;font-size:20px}.bd-ps-server-header span{margin-left:10px}.bd-ps-server-body{padding:5px}.bd-ps-server-icon{width:90px;height:90px;background:#202020;display:inline-block}.bd-ps-server-info{position:absolute;height:190px;display:inline-block;left:100px;right:5px;color:#aeaeae;overflow:auto}#bd-ps-body table{width:100%;margin:0;padding:0;border-color:red;border-collapse:collapse;text-align:left}#bd-ps-body table th{background-color:#202020;color:#ededed;height:50px;padding-left:5px}#bd-ps-body table tr{margin:0;padding:0;height:50px;background-color:#33363b;border-bottom:1px solid #000;box-shadow:0 1px 0 #404040 inset}#bd-ps-body table tr td{padding-left:5px;color:#ededed;min-width:100px}#bd-ps-body .description{overflow:auto;max-height:60px;word-wrap:break-word}#bd-ps-body table tr:nth-child(odd){background-color:#2e3136}#bd-show-channels{display:none;width:12px;height:18px;background:#2e3136;position:absolute;left:33px;top:79px;text-align:left !important;padding:0 !important;padding-left:3px !important;color:#ebebeb;z-index:90000}.bd-minimal-chan #bd-show-channels{display:block !important}.tipsy{z-index:9000000001 !important;position:fixed;padding:5px;display:block;visibility:visible;opacity:.8}.tipsy-arrow{position:absolute;width:0;height:0;border:5px solid transparent;bottom:0;right:10px;border-bottom:0;border-top-color:black}.tipsy-inner{background-color:black;color:white;max-width:300px;padding:5px 8px 4px;text-align:center;overflow:hidden !important;text-overflow:ellipsis}#bd-psd-container{position:fixed;width:50%;height:75%;display:block;margin-left:25%;margin-top:5%;box-shadow:0 0 20px 0 #000;background:#2e3135;border:1px solid #25282c;min-width:750px;min-height:800px}#bd-psd-header{width:100%;height:40px;border-bottom:1px solid #25282c;line-height:40px;color:#adadad}#bd-psd-header span{margin-left:10px}#bd-psd-body{height:100%;width:100%}#bd-psd-table{width:100%;margin:0;padding:0;text-align:left;color:#adadad}#bd-psd-table thead th{background:#1d1d1d;padding:5px}#bd-psd-table tbody td{padding:5px}#bd-psd-table tbody tr{background:#292c30}#bd-psd-table tbody tr:nth-child(odd){background:#2e3135}#bd-psd-table button{background:#292c30;border:1px solid #1d1d1d;width:60px;height:30px;color:#adadad;cursor:pointer}#bd-psd-table button:hover{background:#2e3135}#bd-psd-header a{float:right;margin-right:10px;font-size:30px;color:#adadad;text-decoration:none;margin-top:-7px}.bd-g-table{text-align:left;width:520px;white-space:nowrap}.bd-g-table thead th{background:#ebebeb !important;color:#87909c !important;padding:5px !important}.bd-g-table tbody tr{background:#e0e0e0 !important}.bd-g-table tbody tr:nth-child(odd){background:#ececec !important}.bd-g-table tbody td{color:#87909c !important;padding:5px !important;font-size:small}.bd-g-table textarea{width:100% !important;background:#e0e0e0 !important;border:none !important;resize:none !important;font-size:small !important;margin:0 !important;padding:0 !important}.bd-g-table input{margin:0 !important;padding:0 !important}.message-group.compact .message .markup .message-content{text-indent:0}.bd-psb{background-image:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAG6ElEQVR4XtWZS0xTWRjHP54+H+WhQRO0GAQxxikxmhhMKBu2upLoTDKsaupmcGVYVTdjxhUrG9kMG0OYTDKSuGIzZQHGUQNEowaJ4lt8UXwBPuf7kV5ycrmXW26bVP/JlxR6zvc63+uc5n379k1+ZOTLD45CPnR2dkoWcUgpqhS2LUgoxZX+kiwgEolYBmSGlpYWsdDT0xMoLi7uaW5ulk2bNomJJ0+ehPv6+sIfP37s0z1JY893FUKt27ZtQ3n58OGDTE1NQXyWiooKqa6uFtZkN4QyhK0IHFi/fr3MzMyIelos8DkvL09Wr17Nmp/Yk4skDimdNGPbREFBAR+Cq1atki9fvogdGFBSUiLwYa0L4I2MULYNOFtWVja0e/fumIbHvyLyj1KzpLBs2TLp7u6OrFmzJrhx40b5+vWr2PH582fZsmWL6JoQa9ljoBme8EYGspApaYA+4FWFztbU1ETD4bBYGB8fl0QiQWicJkKUfg0qVLiocJmcnBQncAKvXr2Sa9euwWM8VZVI/Hb4KwuxAP/R0VG+P+a7CpnK48G3b9/ibQTJkSNHUKRdhYuuwbMCWOMG9mOgVik+B2/cuPEHCzAcPiT77OwsvCTlsKgaIRjhJ4nDGg7RxsZG+fTpk6XYfIIS6/v27RPA91QbYn8xsO7169fky4L9yWRyPvTevHmDEaKykRt9+vQpvSOx1BA6uWPHjpiS5BI3b96ETqHPUkNo/P3795LrWQkd0MVPCHXdv3//N20+oXXr1kk6IE9IUsKJMEM4IFyIcfiQA4WFiPXGixcvRHVIoIvfMhq/dOkSMSqLgdjVOJWRkREEEs8kJLUf4jP/4zvWsJY9nvlCtUKHTDpxpwqv04rXpifhKujOnTuWtz1Boj98+JBkFsaOoqIicYLKxPAOhr+sjBKUT0qcCcLk9u3b86PCUsCp3Lp1S7Zv3054iQH+zuos1FpbW4uCZkLzWe7evUvcS36+v5mQvfCgj5gOgB+95vr16wdF5HgmBkS2bt0aWL58udgr0vPnz2V6etoS7BvwgNeGDRvEAidN166srAxquEUI5XQNCChhdaNSiLmlvr4exUk6M46pEG6ex8rzSr1KA0qggUlV6Wd6j1O1oTrR4Cz+yNu7dy/Jf45mJiLDSv1KF5SSTgYc4jLC0THPwxCCGbON4X2rKzsZwKJTKTLxd4rGlGJORlB68bqZI/x9+PBhSnMI0ktRqyb3n5pzLSS33YCodZNCWZTEM8SpDbR6t9A5j/LiDr6jnP0iNrx7904CgYBZ3QgtegYFhIpFrnCzk4sXL0btBgRXrlwZZjFKs9mjRruFT694o9fBACoZjnOSBWGgWXLDAkwDVqxYYXrbq3G5GTAg3hhw4+kBDFk0idOaezglwifLgCe8UdLXnTjJxjQHN47S7bQaSFaP7Q0uPJEP+TJgWBMTCq1du9ZrFCCp3Gb/A54GsMYBdN90vE8BQV+nEIpfvnz5HDMPRmgPwCuOBlAtuNg4gDo/tkgliqXW2IFMV+9bFyqUHxuDvcTdLjQ1qVe1EFRaWhqgkdkNoTM/ePAAgVlpZMT/5s2bccqCLj00NITiSbwOpZQfdbvQjBqzBxPj7zqste/cuXNByeP95+XLl475SJmEJD3Ay6mM4m2UPyEiZ/zOQmcmJibamRipEGYYad8QSi9zSybgNOFD57UPeo8fP05ayvs1IKmMOh49etTGm479eHkupDMizA9wCt6nSdmhMvnQlbWnRfKAYzZPgcTCCC4nGLQU4HXNMXPKNSuS5ZTpTA1oVsXb6urqUNipe6IAVYn7LmOIV0elg+N1Epe9rHc8mV27dlEo2rUCcSfu82tAdM+ePXiEsdax6mAYIcAozEyPgvxNblgnxn56B5d7eHBa7HMD3+MUZA8ODkb9GhDWcfpgeXk5Cnl61jIEYAwv0SgOMMR62Ut31oIXstFBR+mwr4ctvY3FqqqqJJe4d+8e105fD1sJvcjEuODkENZDccLPuxAGdPGG43Ih53kE8iqjfvfzaoEBcXTxm8RxmChaKZfG7YkXA1p/R+qY24hXbk0er27sYT1dHMXZz0MXlY68MZWXZ8+eGc/r/l7m/ksZ0YXCPDbB+MqVK8OqyFHGjqampuOqSIkKO83c4gXW6NoT7GEvPNQhR+EJb2Qgy1t5exJ742BqyBs3OiTv+OaPEpP79+8PuJ0CJ3f16tVh3VNv7BEDrUrB1NB2IZ2fWfMlfcDwpEd7H0ZJ4GYAa8QdXchAVq5+Zu2n4XkYMPI9/8wa1yGMH+lISLvyxLXgZfbkwABP8JPQRH9//1F9Fo/qKBAySiYGDGOgrkmKD/hPYv8IG5+tG1XWQBLPG/Aj439gf0WR+WMvWwAAAABJRU5ErkJggg==");width:25px;height:25px;background-color:transparent;background-size:100%}.bd-psm{position:fixed;pointer-events:auto;width:490px;height:460px;background-color:white;z-index:900000;margin:auto;right:0;left:170px;top:-60px;bottom:0;box-shadow:0 0 10px 5px rgba(193,193,193,0.75);border:1px solid #ebebeb}.bd-alert{position:absolute;width:600px;height:200px;left:0;right:0;top:300px;background-color:#2e3136;margin:auto;border:1px solid #323232;box-shadow:0 0 5px 3px rgba(30,30,30,0.5);color:#ebebeb}.bd-alert-header{height:25px;background:#36393e}.bd-alert-header span{line-height:25px;margin-left:5px}.bd-alert-closebtn{cursor:pointer;float:right;margin-right:5px;margin-top:2px}.bd-alert-closebtn:hover{color:#adadad}.bd-alert-body{height:178px}.bd-alert-body a{color:#FFF !important}.bd-alert-body .scroller-wrap{height:178px}.bd-alert-body .scroller-wrap .scroller{padding:5px;word-wrap:break-word}.channel-textarea-inner textarea{margin-right:40px}.servericon{width:64px;display:inline-block;background-size:100% auto;height:64px}.serverinfo{display:inline-block}#pubs-container{width:800px;position:fixed;top:50%;left:50%;margin-top:-284.5px;margin-left:-400px;background:#FFF;z-index:9000000}#pubs-container .scroller-wrap{height:500px}#pubs-header{background:#7289da;padding:5px 12px 5px 5px}#pubs-header h2{display:inline-block;font-weight:600;color:#FFF}#pubs-header input,#pubs-header button{float:right}#pubs-sterm{outline:none !important;padding-left:3px}.bd-dropdown{position:absolute;display:inline-block;width:150px;right:225px}.bd-dropdown button{width:150px}.bd-dropdown .bd-dropdown-list ul{height:0}.bd-dropdown.open .bd-dropdown-list ul{height:140px}.bd-dropdown-list{position:absolute;right:0;top:32px;z-index:90001;width:150px;background:#f3f3f3}.bd-dropdown-list ul{height:0;overflow-y:auto;overflow-x:hidden;transition:all .5s ease-in-out}.bd-dropdown-list ul li{padding:5px;background:#e6e6e6;cursor:pointer;color:#87909c;font-weight:600}.bd-dropdown-list ul li:nth-child(odd){background:#e2e1e1}.bd-dropdown-list ul li:hover{background:#f9f5f5}#pubs-header input{border:0;height:30px;width:150px;color:#555;background-color:#fff;-webkit-transition:width 1s ease-in-out;-moz-transition:width 1s ease-in-out;-o-transition:width 1s ease-in-out;transition:width 1s ease-in-out}#pubs-header button{height:32px;background-color:#f9f9f9;color:#949494}#pubs-footer{height:25px;line-height:25px;background:#7289da}#pubs-footer div{float:right;margin-right:5px;font-weight:600px;color:#FFF}#pubs-footer a{color:#FFF;text-decoration:none;font-weight:800}#pubs-container .scroller-wrap{margin-top:75px}.server-row{padding:5px;display:flex;background-color:#FFF}.server-row:nth-child(odd){background-color:#f3f3f3}.server-icon{width:64px;height:64px;background-size:100% auto}.server-info{display:flex;flex-flow:column;line-height:64px;margin-left:20px}.server-info span{font-size:16px;color:#000;font-weight:600}.server-info a{color:#4056a2;text-decoration:none;font-weight:800;margin-left:5px}.server-info button{width:90px;height:48px;margin-top:8px;background-color:#738bd7;color:#fff;font-size:19px}.server-info button:hover{background-color:#697ec4}.server-information{flex-grow:1;position:relative}.server-name,.server-desription{flex-grow:100}.server-name span{overflow:hidden;text-overflow:ellipsis;max-width:300px;white-space:nowrap}.server-name-span,.server-description{position:absolute;top:0;transition:visibility 0s,opacity .8s linear}.server-official,.server-tags{visibility:visible;opacity:1;transition:visibility 0s,opacity .8s linear}.server-information:hover .server-description{visibility:visible;opacity:1}.server-information:hover .server-name-span{visibility:hidden;opacity:0}.server-information:hover .server-tags{visibility:hidden;opacity:0}.server-information:hover .server-official{visibility:hidden;opacity:0}.server-tags{position:absolute !important;bottom:0 !important;height:38px !important;font-size:10px !important;visibility:visible;opacity:1}.server-official{position:absolute !important;top:0 !important;height:20px !important;font-size:14px !important;line-height:14px !important;color:#7289da !important;font-weight:700 !important;text-shadow:0 0 4px #7289da;visibility:visible;opacity:1;padding-left:2px;padding-right:2px}.server-description{visibility:hidden;opacity:0;font-size:12px !important;line-height:12px !important;text-overflow:initial !important;white-space:inherit !important;overflow-y:auto !important;height:64px !important}.server-region{min-width:85px}.server-pinned{position:absolute;width:777px;padding-right:-10px;padding-right:17px;border-bottom:2px solid #272727}#server-bd-tag{position:absolute !important;bottom:0 !important;height:20px !important;line-height:20px !important;font-size:13px !important;font-weight:600 !important}#pubs-spinner{position:fixed;top:50%;left:50%;margin-left:-16px;margin-top:-16px}#pubs-container .scroller::-webkit-scrollbar-track-piece,#pubs-container .scroller::-webkit-scrollbar-thumb{border-radius:0}.bd-hide-bd .callout-backdrop{display:none}.bd-detached-editor .app{width:70%}.bd-detached-editor #bd-customcss-detach-container{display:block}#bd-customcss-detach-container{display:none;position:absolute;width:30%;top:0;right:0;bottom:0;background-color:#36393e}#bd-customcss-detach-editor{height:calc(100% - 87px)}#bd-customcss-detach-editor #bd-customcss-innerpane,#bd-customcss-detach-editor .CodeMirror{height:100%}#bd-customcss-detach-controls{background:#e8e8e8;border-top:1px solid #adadad;-webkit-box-shadow:inset 0 1px 0 0 white;height:100%;padding:5px}#bd-customcss-detach-controls .checkbox-group li{margin-top:5px;display:inline-block}#bd-customcss-detach-controls button{width:90px;height:30px;margin-top:8px;background-color:#738bd7;color:#fff;font-size:19px}#bd-customcss-detach-controls-buttons{bottom:5px}#editor-detached{margin-top:50px}#editor-detached h3{text-align:center;font-size:30px}#editor-detached .btn{left:50%;margin-left:-100px;margin-top:10px;width:200px;height:60px}#bd-customcss-attach-controls{background:#e8e8e8;border:1px solid #FFF;border-top:1px solid #adadad;-webkit-box-shadow:inset 0 1px 0 0 white;height:100%;padding:5px;height:75px}#bd-customcss-attach-controls .checkbox-group{margin-bottom:0}#bd-customcss-attach-controls .checkbox-group li{margin-top:5px;display:inline-block}#bd-customcss-attach-controls button{margin:0;width:100px}#bd-customcss-detach-container #bd-customcss-detach-controls-buttons button{width:90px;height:30px;margin-top:8px;background-color:#738bd7;color:#fff;font-size:19px}.emoji-picker,.emojiPicker-3m1S-j{box-shadow:none;border-top:0;border-radius:0 0 5px 5px}#bda-qem{border-radius:5px 5px 0 0;background:#FFF;border-bottom:1px solid rgba(0,0,0,0.1) !important;height:30px;display:flex;flex-direction:row;padding-right:1px !important}#bda-qem button{border-left:1px solid #efefef;background:transparent;box-shadow:#cecece 1px 0 0 0;flex-grow:1}#bda-qem button:hover{background:#ececec}#bda-qem-twitch{border-radius:5px 0 0 0;order:2}#bda-qem-emojis{border-radius:0 5px 0 0;order:3}#bda-qem-favourite{order:3}#bda-qem button.active{background-color:#e2e2e2}#bda-qem-twitch-container,#bda-qem-favourite-container{width:346px;height:327px;background-color:#FFF;border-radius:0 0 5px 5px}#bda-qem-twitch-container .scroller-wrap,#bda-qem-favourite-container .scroller-wrap{height:100%}.emote-menu-inner{padding:5px 0 0 15px}#rmenu{left:25px;display:block !important;cursor:pointer;color:#FFF;position:fixed}.bda-qme-hidden #bda-qem-emojis{display:none}.bd-select select{width:100%;margin:0;outline:0;padding:.6em .8em .5em .8em;-webkit-box-sizing:border-box;box-sizing:border-box;font-size:14px;padding-right:2em;background:0;border:1px solid transparent !important;-webkit-appearance:none;appearance:none;color:#404040;outline:none !important}.bd-select::after{content:" ";position:absolute;top:50%;right:1em;z-index:2;pointer-events:none;display:none}.bd-select select:focus{border-color:#aaa}.bd-select:focus::after{display:block}.bd-select{position:absolute;right:220px;height:32px;top:5px;border-radius:0;display:inline-block;border:0;border-radius:0;box-shadow:0 1px 0 1px rgba(0,0,0,.04);background:#fff;outline:none !important}.bd-select:before{content:"Category";color:#FFF;position:absolute;right:100%;margin-right:5px;line-height:32px}#bd-pane .tab-bar.TOP{margin-bottom:0}#bd-settings-pane{margin-top:18px}#bd-themes-pane .bda-plugin-reload{margin-top:70px}.bda-backdrop{position:absolute;top:0;left:0;right:0;bottom:0;z-index:1000;background:rgba(0,0,0,0.5)}.bd-settings{max-width:516px}.bda-dark #bda-qem-favourite-container,.bda-dark #bda-qem-twitch-container{background-color:#353535}.bda-dark #bda-qem{border-bottom:1px solid #464646 !important;background:#353535}.bda-dark #bda-qem button{background:#353535;border-left:1px solid #242424;box-shadow:#424242 1px 0 0 0;color:#FFF}.bda-dark #bda-qem button.active{background-color:#292929}.bda-dark #bda-qem button:hover{background-color:#303030}.bda-dark #bda-qem-favourite-container,.bda-dark #bda-qem-twitch-container{background-color:#353535}.bda-dark .emoji-picker,.bda-dark .emojiPicker-3m1S-j{background-color:#353535}.bda-dark .emoji-picker .category,.bda-dark .emojiPicker-3m1S-j .category-2U57w6{background-color:#353535}.bda-dark .emoji-picker .header .search-bar,.bda-dark .emojiPicker-3m1S-j .header-1nkwgG .search-bar{background-color:#2b2b2b}.bda-dark .emoji-picker .search-bar input,.bda-dark .emojiPicker-3m1S-j .search-bar input{color:#FFF}.bda-dark .emoji-picker .search-bar input::-webkit-input-placeholder,.bda-dark .emojiPicker-3m1S-j .search-bar input::-webkit-input-placeholder{color:#FFF}.bda-dark .emoji-picker .scroller .emoji-item.selected,.bda-dark .emojiPicker-3m1S-j .scroller-3vODG7 .emojiItem-109bjA.selected-39BZ4S{background-color:rgba(123,123,123,0.37)}.bda-dark .emoji-picker .dimmer.visible,.bda-dark .emojiPicker-3m1S-j .dimmer-3iH-5D.visible-3k45bQ{background-color:rgba(62,62,62,0.65)}.bda-dark .emoji-picker .diversity-selector .popout-3sVMXz,.bda-dark .emojiPicker-3m1S-j .diversitySelector-tmmMv0 .popout-2nUePc{background:#353535;border-color:#202020}.bda-dark #bda-qem-twitch-container .scroller::-webkit-scrollbar,.bda-dark #bda-qem-twitch-container .scroller::-webkit-scrollbar-track,.bda-dark #bda-qem-twitch-container .scroller::-webkit-scrollbar-track-piece,.bda-dark #pubs-container .scroller::-webkit-scrollbar,.bda-dark #pubs-container .scroller::-webkit-scrollbar-track,.bda-dark #pubs-container .scroller::-webkit-scrollbar-track-piece{background-color:#303030 !important;border-color:#303030 !important}.bda-dark #bda-qem-favourite-container .scroller::-webkit-scrollbar,.bda-dark #bda-qem-favourite-container .scroller::-webkit-scrollbar-track,.bda-dark #bda-qem-favourite-container .scroller::-webkit-scrollbar-track-piece{background-color:#303030 !important;border-color:#303030 !important}.bda-dark .emoji-picker .scroller::-webkit-scrollbar,.bda-dark .emoji-picker .scroller::-webkit-scrollbar-track,.bda-dark .emoji-picker .scroller::-webkit-scrollbar-track-piece,.bda-dark .emojiPicker-3m1S-j .scroller-3vODG7::-webkit-scrollbar,.bda-dark .emojiPicker-3m1S-j .scroller-3vODG7::-webkit-scrollbar-track,.bda-dark .emojiPicker-3m1S-j .scroller-3vODG7::-webkit-scrollbar-track-piece{background-color:#303030 !important;border-color:#303030 !important}.bda-dark #bda-qem-twitch-container .scroller::-webkit-scrollbar-thumb,.bda-dark #bda-qem-favourite-container .scroller::-webkit-scrollbar-thumb,.bda-dark .emoji-picker .scroller::-webkit-scrollbar-thumb,.bda-dark emojiPicker-3g68GS .scroller-3vODG7::-webkit-scrollbar-thumb,.bda-dark #pubs-container .scroller::-webkit-scrollbar-thumb{border-color:#202020 !important;background-color:#202020 !important}.bda-dark .server-row{background-color:#36393e}.bda-dark .server-row:nth-child(odd),.bda-dark #pubs-container{background-color:#2e3136}.bda-dark .server-info span{color:#d6d6d6}.bda-dark #pubs-header,.bda-dark #pubs-footer{background:#202020}.bda-dark #pubs-sterm{background:#36393e;color:#FFF}.bda-dark #pubs-searchbtn{background:#2e3136}.bda-dark .bd-select{background:#36393e}.bda-dark .server-info button{background-color:#202020}.bda-dark #pubs-cat{color:#FFF}.bda-dark .bd-dropdown-select{background-color:#2e3136}.bda-dark .bd-dropdown-list ul li:nth-child(odd){background:#36393e}.bda-dark .bd-dropdown-list ul li{background:#3d4046}.bda-dark .bd-dropdown-list ul li:hover{background:#2d2f33}.bda-dark #pubs-header button{background-color:#2e3136}.bda-dark .bd-dropdown .bd-dropdown-list ul::-webkit-scrollbar,.server-description::-webkit-scrollbar{width:12px}.bda-dark .bd-dropdown .bd-dropdown-list ul::-webkit-scrollbar-track,.server-description::-webkit-scrollbar-track{background:#303030}.bda-dark .bd-dropdown .bd-dropdown-list ul::-webkit-scrollbar-thumb,.server-description::-webkit-scrollbar-thumb{background:#202020}.bd-pfbtn{background:#7289da;color:#FFF;border-radius:5px;margin-left:10px}#bd-settings-sidebar .ui-tab-bar-item{font-size:16px;font-weight:500;line-height:20px;text-overflow:ellipsis;white-space:nowrap;cursor:pointer;flex-shrink:0;padding:6px 10px;border-radius:3px;position:relative;overflow:hidden}#bd-settings-sidebar .ui-tab-bar-item.selected{cursor:default}.theme-dark #bd-settings-sidebar .ui-tab-bar-item{color:#b9bbbe}.theme-dark #bd-settings-sidebar .ui-tab-bar-item:hover{background-color:rgba(185,187,190,.1);color:#f6f6f7}.theme-dark #bd-settings-sidebar .ui-tab-bar-item.selected{background-color:#7289da;color:#fff}.theme-light #bd-settings-sidebar .ui-tab-bar-item{color:#72767d}.theme-light #bd-settings-sidebar .ui-tab-bar-item:hover{background-color:rgba(79,84,92,.1);color:#4f545c}.theme-light #bd-settings-sidebar .ui-tab-bar-item.selected{background-color:#7289da;color:#fff}#bd-settings-sidebar .ui-tab-bar-header{font-size:12px;font-weight:700;line-height:16px;text-transform:uppercase;text-overflow:ellipsis;white-space:nowrap;flex-shrink:0;padding:6px 10px;overflow:hidden}.theme-dark #bd-settings-sidebar .ui-tab-bar-header{color:#72767d}.theme-light #bd-settings-sidebar .ui-tab-bar-header{color:#b9bbbe}#bd-settings-sidebar .ui-tab-bar-separator{height:1px;margin:8px 10px}.theme-dark #bd-settings-sidebar .ui-tab-bar-separator{background-color:rgba(114,118,125,.3)}.theme-light #bd-settings-sidebar .ui-tab-bar-separator{background-color:rgba(185,187,190,.3)}#bd-settingspane-container h2.ui-form-title{font-size:16px;font-weight:600;line-height:20px;text-transform:uppercase;display:inline-block;margin-bottom:20px}.theme-dark #bd-settingspane-container h2.ui-form-title{color:#f6f6f7}.theme-light #bd-settingspane-container h2.ui-form-title{color:#4f545c}#bd-settingspane-container .ui-switch-item{flex-direction:column;margin-top:8px}#bd-settingspane-container .ui-switch-item h3{font-size:16px;font-weight:500;line-height:24px;flex:1}.theme-dark #bd-settingspane-container .ui-switch-item h3{color:#f6f6f7}.theme-light #bd-settingspane-container .ui-switch-item h3{color:#4f545c}#bd-settingspane-container .ui-switch-item .style-description{font-size:14px;font-weight:500;line-height:20px;margin-bottom:10px;padding-bottom:10px;border-bottom:1px solid hsla(218,5%,47%,.3)}.theme-dark #bd-settingspane-container .ui-switch-item .style-description{color:#72767d}.theme-light #bd-settingspane-container .ui-switch-item .style-description{color:rgba(114,118,125,.6)}#bd-settingspane-container .ui-switch-item .ui-switch-wrapper{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;position:relative;width:44px;height:24px;display:block;flex:0 0 auto}#bd-settingspane-container .ui-switch-item .ui-switch-wrapper input{position:absolute;opacity:0;cursor:pointer;width:100%;height:100%;z-index:1}#bd-settingspane-container .ui-switch-item .ui-switch-wrapper .ui-switch{background:#7289da;position:absolute;top:0;right:0;bottom:0;left:0;background:#72767d;border-radius:14px;transition:background .15s ease-in-out,box-shadow .15s ease-in-out,border .15s ease-in-out}#bd-settingspane-container .ui-switch-item .ui-switch-wrapper .ui-switch:before{content:"";display:block;width:18px;height:18px;position:absolute;top:3px;left:3px;bottom:3px;background:#f6f6f7;border-radius:10px;transition:all .15s ease;box-shadow:0 3px 1px 0 rgba(0,0,0,.05),0 2px 2px 0 rgba(0,0,0,.1),0 3px 3px 0 rgba(0,0,0,.05)}#bd-settingspane-container .ui-switch-item .ui-switch-wrapper .ui-switch.checked{background:#7289da}#bd-settingspane-container .ui-switch-item .ui-switch-wrapper .ui-switch.checked:before{transform:translateX(20px)}#pubslayer .ui-tab-bar-item{color:#b9bbbe;padding-top:6px;padding-bottom:6px;margin-bottom:2px;padding:6px 10px;position:relative;font-size:16px;line-height:20px;border-radius:3px;white-space:nowrap;text-overflow:ellipsis;overflow:hidden;flex-shrink:0;font-weight:500;cursor:pointer}#pubslayer .ui-tab-bar-item:hover{color:#f6f6f7;background-color:hsla(216,4%,74%,.1)}#pubslayer .ui-tab-bar-item.selected{color:#fff;background-color:#7289da}#pubslayer .ui-tab-bar-header{color:#72767d;padding:6px 10px;font-size:12px;line-height:16px;text-transform:uppercase;white-space:nowrap;text-overflow:ellipsis;overflow:hidden;flex-shrink:0;font-weight:500}#pubslayer #bd-settings-sidebar .ui-tab-bar-separator{background-color:hsla(218,5%,47%,.3);margin-left:10px;margin-right:10px;height:1px;margin-bottom:8px;margin-top:8px}#pubslayer h2.ui-form-title{color:#f6f6f7;text-transform:uppercase;font-weight:600}#pubslayer h5.ui-form-title{color:#f6f6f7}#pubslayer button{background:#7289da;color:#FFF;font-size:14px;font-weight:500;line-height:16px;padding:2px 16px;border:0;border-radius:3px;transition:background-color .17s ease}#pubslayer button:hover{background-color:#677bc4}#pubslayer input{color:#f6f6f7;background-color:rgba(0,0,0,.1);border-color:rgba(0,0,0,.3);padding:10px;height:30px;border-width:1px;border-style:solid;border-radius:3px;outline:0;transition:background-color .15s ease,border .15s ease}#bd-settingspane-container .scroller-wrap{height:100%}#bd-settingspane-container .scroller-wrap .scroller{display:flex}.bda-slist{user-select:text}.bda-slist li{max-height:175px;margin-bottom:20px;padding:5px 8px;border:1px solid transparent;border-radius:5px;overflow:hidden}.theme-dark .bda-slist li{background-color:rgba(32,34,37,.6);color:#f6f6f7;border-color:#202225}.theme-light .bda-slist li{background-color:#f8f9f9;color:#4f545c;border-color:#dcddde}.bda-slist li.settings-open{max-height:800px;overflow-y:auto}.bda-slist .bda-header{font-size:12px;font-weight:700;display:flex;align-items:center;justify-content:space-between;padding-bottom:5px;border-bottom:1px solid transparent;overflow:hidden}.theme-dark .bda-slist .bda-header{color:#f6f6f7;border-bottom-color:rgba(114,118,125,.3)}.theme-light .bda-slist .bda-header{color:#4f545c;border-bottom-color:rgba(185,187,190,.3)}.bda-slist .bda-description{word-break:break-word;max-height:100px;margin:5px 0;padding:5px 0;overflow-y:auto}.theme-dark .bda-slist .bda-description{color:#b9bbbe}.theme-light .bda-slist .bda-description{color:#72767d}.bda-slist .scroller::-webkit-scrollbar-track-piece,.bda-slist .scroller::-webkit-scrollbar-thumb{border-radius:0 !important;border-color:transparent}.bda-slist .bda-footer{font-size:12px;font-weight:700;display:flex;align-items:center;justify-content:space-between;padding-top:5px;border-top:1px solid transparent;overflow:hidden}.theme-dark .bda-slist .bda-footer{border-top-color:rgba(114,118,125,.3)}.theme-light .bda-slist .bda-footer{border-top-color:rgba(185,187,190,.3)}.bda-slist .bda-footer button{background:#7289da;color:#FFF;border-radius:5px;display:block;margin-left:auto;padding:2px 16px;transition:opacity 250ms ease}.bda-slist .bda-footer button:disabled{opacity:.4}.bda-slist .bda-footer a{color:#7289da}.bda-slist .bda-footer a:hover{text-decoration:underline}@keyframes bd-backdrop{to{opacity:.85}}@keyframes bd-modal-wrapper{to{transform:scale(1);opacity:1}}@keyframes bd-backdrop-closing{to{opacity:0}}@keyframes bd-modal-wrapper-closing{to{transform:scale(0.7);opacity:0}}.bd-backdrop{animation:bd-backdrop 250ms ease;animation-fill-mode:forwards;opacity:0;background-color:#000;transform:translateZ(0)}.bd-modal-wrapper.closing .bd-backdrop{animation:bd-backdrop-closing 200ms linear;animation-fill-mode:forwards;animation-delay:50ms;opacity:.85}.bd-modal-wrapper.closing .bd-modal{animation:bd-modal-wrapper-closing 250ms cubic-bezier(0.19,1,0.22,1);animation-fill-mode:forwards;opacity:1;transform:scale(1)}.bd-modal-wrapper .bd-modal{animation:bd-modal-wrapper 250ms cubic-bezier(0.175,0.885,0.32,1.275);animation-fill-mode:forwards;transform:scale(0.7);transform-origin:50% 50%;display:flex;align-items:center;box-sizing:border-box;contain:content;justify-content:center;top:0;left:0;bottom:0;right:0;opacity:0;pointer-events:none;position:absolute;z-index:1000}.bd-modal-wrapper .bd-modal-inner{display:flex;contain:layout;flex-direction:column;pointer-events:auto;border:1px solid rgba(28,36,43,.6);border-radius:5px;box-shadow:0 2px 10px 0 rgba(0,0,0,.2);overflow:hidden;max-height:660px;min-height:200px;width:440px;user-select:text}.bd-modal-wrapper .bd-startup-modal .bd-modal-inner{height:500px;width:700px}.bd-modal-wrapper .header{background-color:#35393e;box-shadow:0 2px 3px 0 rgba(0,0,0,.2);padding:12px 20px;z-index:1;color:#fff;font-size:16px;font-weight:700;line-height:19px}.bd-modal-wrapper .bd-modal-body{background-color:#36393f;color:#fff;flex-direction:row;overflow:hidden;display:flex;flex-direction:column;flex:1;contain:layout;position:relative}.bd-modal-wrapper .scroller{padding:10px}.bd-modal-wrapper .bd-startup-modal .bd-modal-body{padding:0}.bd-modal-wrapper .scroller{overflow-y:auto}.bd-modal-wrapper .footer{display:flex;justify-content:flex-end;padding:10px 20px}.bd-modal-wrapper .footer button{background-color:#7289da;color:#fff;min-height:32px;min-width:60px;align-items:center;border-radius:3px;display:flex;font-size:14px;font-weight:500;justify-content:center;line-height:16px;padding:2px 16px;user-select:none}.bd-modal-wrapper .footer button:hover{background-color:#677bc4}.bd-modal-wrapper .footer button:active{background-color:#5f6fb9}.bd-modal-wrapper .tab-bar-container{align-items:center;border-bottom:0;background:rgba(0,0,0,0.2);box-shadow:0 2px 3px 0 rgba(0,0,0,.1);display:flex;flex-direction:row;justify-content:space-between;margin-bottom:15px}.bd-modal-wrapper .tab-bar.TOP{margin:0;border:0}.bd-modal-wrapper .tab-bar-container .tab-bar-item{margin:0 15px;padding:15px 0;color:#fff !important;opacity:.5;transition:opacity 200ms ease}.bd-modal-wrapper .tab-bar-container .tab-bar-item:hover{border-color:#fff}.bd-modal-wrapper .tab-bar-container .tab-bar-item.selected{opacity:1;border-color:#fff}.bd-modal-wrapper .tab-bar.TOP .tab-bar-item+.tab-bar-item{margin:0}.bd-modal-wrapper .table-header{display:flex;justify-content:space-between;color:#fff;font-weight:700;padding-bottom:10px;margin:3px 15px 0 15px;border-bottom:1px solid #fff;font-size:14px}.bd-modal-wrapper .table-column{width:25%}.bd-modal-wrapper .table-column.column-error{width:50%}.bd-modal-wrapper .table-column{word-wrap:break-word}.bd-modal-wrapper .errors{display:flex;flex-direction:column;padding:0;font-size:14px;padding:0 5px}.bd-modal-wrapper .error{display:flex;color:#fff;border-bottom:1px solid rgba(255,255,255,0.25);padding:15px 0;align-items:center}.bd-modal-wrapper .bd-startup-modal .scroller{padding-top:0}.bd-toasts{position:fixed;display:flex;top:0;flex-direction:column;align-items:center;justify-content:flex-end;pointer-events:none;z-index:4000}@keyframes bd-toast-up{from{transform:translateY(0);opacity:0}}.bd-toast{animation:bd-toast-up 300ms ease;transform:translateY(-10px);background:#36393f;padding:10px;border-radius:5px;box-shadow:0 0 0 1px rgba(32,34,37,.6),0 2px 10px 0 rgba(0,0,0,.2);font-weight:500;color:#fff;user-select:text;font-size:14px;opacity:1;margin-top:10px;pointer-events:none;user-select:none}@keyframes bd-toast-down{to{transform:translateY(0);opacity:0}}.bd-toast.closing{animation:bd-toast-down 200ms ease;animation-fill-mode:forwards;opacity:1;transform:translateY(-10px)}.bd-toast.icon{padding-left:30px;background-size:20px 20px;background-repeat:no-repeat;background-position:6px 50%}.bd-toast.toast-info{background-color:#4a90e2}.bd-toast.toast-info.icon{background-image:url(data:image/svg+xml;base64,PHN2ZyBmaWxsPSIjRkZGRkZGIiBoZWlnaHQ9IjI0IiB2aWV3Qm94PSIwIDAgMjQgMjQiIHdpZHRoPSIyNCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4gICAgPHBhdGggZD0iTTAgMGgyNHYyNEgweiIgZmlsbD0ibm9uZSIvPiAgICA8cGF0aCBkPSJNMTIgMkM2LjQ4IDIgMiA2LjQ4IDIgMTJzNC40OCAxMCAxMCAxMCAxMC00LjQ4IDEwLTEwUzE3LjUyIDIgMTIgMnptMSAxNWgtMnYtNmgydjZ6bTAtOGgtMlY3aDJ2MnoiLz48L3N2Zz4=)}.bd-toast.toast-success{background-color:#43b581}.bd-toast.toast-success.icon{background-image:url(data:image/svg+xml;base64,PHN2ZyBmaWxsPSIjRkZGRkZGIiBoZWlnaHQ9IjI0IiB2aWV3Qm94PSIwIDAgMjQgMjQiIHdpZHRoPSIyNCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4gICAgPHBhdGggZD0iTTAgMGgyNHYyNEgweiIgZmlsbD0ibm9uZSIvPiAgICA8cGF0aCBkPSJNMTIgMkM2LjQ4IDIgMiA2LjQ4IDIgMTJzNC40OCAxMCAxMCAxMCAxMC00LjQ4IDEwLTEwUzE3LjUyIDIgMTIgMnptLTIgMTVsLTUtNSAxLjQxLTEuNDFMMTAgMTQuMTdsNy41OS03LjU5TDE5IDhsLTkgOXoiLz48L3N2Zz4=)}.bd-toast.toast-danger,.bd-toast.toast-error{background-color:#f04747}.bd-toast.toast-danger.icon,.bd-toast.toast-error.icon{background-image:url(data:image/svg+xml;base64,PHN2ZyBmaWxsPSIjRkZGRkZGIiBoZWlnaHQ9IjI0IiB2aWV3Qm94PSIwIDAgMjQgMjQiIHdpZHRoPSIyNCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4gICAgPHBhdGggZD0iTTEyIDJDNi40NyAyIDIgNi40NyAyIDEyczQuNDcgMTAgMTAgMTAgMTAtNC40NyAxMC0xMFMxNy41MyAyIDEyIDJ6bTUgMTMuNTlMMTUuNTkgMTcgMTIgMTMuNDEgOC40MSAxNyA3IDE1LjU5IDEwLjU5IDEyIDcgOC40MSA4LjQxIDcgMTIgMTAuNTkgMTUuNTkgNyAxNyA4LjQxIDEzLjQxIDEyIDE3IDE1LjU5eiIvPiAgICA8cGF0aCBkPSJNMCAwaDI0djI0SDB6IiBmaWxsPSJub25lIi8+PC9zdmc+)}.bd-toast.toast-warning,.bd-toast.toast-warn{background-color:#ffa600;color:white}.bd-toast.toast-warning.icon,.bd-toast.toast-warn.icon{background-image:url(data:image/svg+xml;base64,PHN2ZyBmaWxsPSIjRkZGRkZGIiBoZWlnaHQ9IjI0IiB2aWV3Qm94PSIwIDAgMjQgMjQiIHdpZHRoPSIyNCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4gICAgPHBhdGggZD0iTTAgMGgyNHYyNEgweiIgZmlsbD0ibm9uZSIvPiAgICA8cGF0aCBkPSJNMSAyMWgyMkwxMiAyIDEgMjF6bTEyLTNoLTJ2LTJoMnYyem0wLTRoLTJ2LTRoMnY0eiIvPjwvc3ZnPg==)}.bd-blue .bd-pfbtn{background:#3a71c1}.bd-blue .bot-tag{background:#3a71c1}.bd-blue .bot-tag.bot-tag-invert{color:#3a71c1 !important}.bd-blue .spinner-wandering-cubes .spinner-item{background-color:#3a71c1}.bd-blue .spinner-chasing-dots .spinner-item{background-color:#3a71c1}.bd-blue .spinner.spinner-spinning-circle .path{stroke:#3a71c1}.bd-blue .note textarea::-moz-selection{background:#3a71c1}.bd-blue .note textarea::selection{background:#3a71c1}.bd-blue .scroller-wrap .scrollbar .thumb:after{background-color:#3a71c1}.bd-blue #autocomplete-popout .empty h4{color:#3a71c1}.bd-blue .user-popout .header{background:#3a71c1 url(/assets/8cd2f31a12333149b89ef3931626ab83.png)}.bd-blue .checkbox .checkbox-inner input[type=checkbox]:checked+span{background-color:#3a71c1;border-color:#3a71c1}.bd-blue .checkbox .checkbox-inner.alt input[type=checkbox]:checked+span:after{border-color:#3a71c1}.bd-blue .download-apps .footer a{color:#3a71c1}.bd-blue .download-apps .platforms .platform.active{border-color:#3a71c1}.bd-blue .download-apps .platforms .platform.active .download-button{background-color:#3a71c1}.bd-blue .radio .radio-inner span:after{background:#3a71c1}.bd-blue .radio:hover span:after{background:#3a71c1}.bd-blue .radio-image .radio-inner span:after{border:2px solid #3a71c1}.bd-blue .radio-image:hover span:after{border-color:#3a71c1}.bd-blue #overlay-wrapper .overlay .guild-panel .guild-panel-header{background-color:#3a71c1}.bd-blue #overlay-wrapper .overlay .guild-panel .btn-call{color:#3a71c1}.bd-blue .overlay-user-popout .user-popout-options .btn{background-color:#3a71c1}.bd-blue .clipboard-input-inner input::-moz-selection{background:#3a71c1}.bd-blue .clipboard-input-inner input::selection{background:#3a71c1}.bd-blue .btn-help:hover{background:#3a71c1}.bd-blue .popout-3sVMXz.popoutLeft-30WmrD header:before{border-left-color:#3a71c1}.bd-blue .popout-3sVMXz.popout-right header:before{border-right-color:#3a71c1}.bd-blue .popout-3sVMXz.popoutBottom-1YbShG header:before{border-bottom-color:#3a71c1}.bd-blue .popout-3sVMXz.popoutInvert-3UdKhn:not(.popoutBottom-1YbShG).popoutTop-3uu9vG header:before{border-top-color:#3a71c1}.bd-blue .guild-channels .channel-text.selected:before{border-left:2px solid #3a71c1}.bd-blue .guild-channels .channel-text:hover:not(.unread):before{border-left:2px solid #3a71c1}.bd-blue .guild-channels .channel-text.unread:not(.selected):not(.channel-muted).selected:before{background-color:#3a71c1}.bd-blue .guild-channels .channel-voice-states li.speaking .avatar-small{background-color:#3a71c1}.bd-blue .tooltip{background-color:#3a71c1}.bd-blue .tooltip.tooltip-top:after{border-top-color:#3a71c1}.bd-blue .tooltip.tooltip-bottom:after{border-bottom-color:#3a71c1}.bd-blue .tooltip.tooltip-left:after{border-left-color:#3a71c1}.bd-blue .tooltip.tooltip-right:after{border-right-color:#3a71c1}.bd-blue .button{background-color:#3a71c1}.bd-blue .tutorial-popout .button-area .skip-tips a{color:#3a71c1}.bd-blue .chat .has-more button{color:#3a71c1}.bd-blue .chat .new-messages-bar:hover{background-color:#3a71c1}.bd-blue .message-group .edit-message .edit-operation>a{color:#3a71c1}.bd-blue .message-group .edit-message .channel-textarea-inner{border-color:#3a71c1}.bd-blue .mention{color:#3a71c1}.bd-blue .mention:hover{background-color:#3a71c1}.bd-blue .mentioned .mention:hover{color:#3a71c1}.bd-blue .markdown-modal .markdown-modal-header b{color:#3a71c1}.bd-blue .change-log .changelog-fixed{background-color:#3a71c1}.bd-blue .change-log .changelog-button .cta{background-color:#3a71c1}.bd-blue .form .form-header{color:#3a71c1}.bd-blue .form header{color:#3a71c1}.bd-blue .form .control-group textarea:focus{border-bottom:2px solid #3a71c1}.bd-blue .form .btn-primary{background-color:#3a71c1}.bd-blue .region-select button{color:#3a71c1}.bd-blue .region-select:hover button{border-color:#3a71c1}.bd-blue .region-select:hover button{background-color:#3a71c1}.bd-blue .region-select-flag{background-color:#3a71c1}.bd-blue .region-select-flag.vip:after{background:#3a71c1}.bd-blue .region-select-modal .region-select-modal-header{color:#3a71c1}.bd-blue .region-select-modal .region-select-modal-option:hover{border-color:#3a71c1}.bd-blue .upload-drop-modal .bgScale{background:#3a71c1}.bd-blue .upload-modal{background-color:#3a71c1}.bd-blue .upload-modal .inner .file .icon.image{border:2px solid #3a71c1}.bd-blue .avatar-uploader-inner{background-color:#3a71c1}.bd-blue .create-guild-container h5{color:#3a71c1}.bd-blue .create-guild-container .join-server .sample-link{color:#3a71c1}.bd-blue .create-guild-container .action.create .action-header{color:#3a71c1}.bd-blue .tab-bar.TOP .tab-bar-item.selected{border-bottom:2px solid #3a71c1;color:#3a71c1}.bd-blue .tab-bar.SIDE .tab-bar-item:before{border-left:4px solid #3a71c1}.bd-blue .color-picker-popout input:focus{border-color:#3a71c1}.bd-blue #settings-roles .roles li.selected:before{color:#3a71c1;background-color:#3a71c1}.bd-blue #settings-roles .roles li.sorting:after{border:2px solid #3a71c1}.bd-blue .guild-settings-modal-overview a{color:#3a71c1}.bd-blue .need-help-modal .header{background-color:#3a71c1}.bd-blue .search-popout .date-picker .date-picker-hint .hint-value{background-color:#3a71c1}.bd-blue .react-datepicker .react-datepicker__day:hover{background-color:#3a71c1}.bd-blue .react-datepicker .react-datepicker__day.react-datepicker__day--today:after{background-color:#3a71c1}.bd-blue .messages-popout-wrap .has-more button{color:#3a71c1}.bd-blue .btn-filled{background-color:#3a71c1}.bd-blue .btn-filled.white{color:#3a71c1}.bd-blue .emoji-picker .premium-promo .btn{background-color:#3a71c1}.bd-blue .emojiPicker-3m1S-j .premium-promo .btn{background-color:#3a71c1}.bd-blue .channel-textarea.has-results .channel-textarea-inner{border-color:#3a71c1}.bd-blue .channel-textarea-autocomplete-inner{border:2px solid #3a71c1}.bd-blue .channel-textarea-autocomplete-inner header{background-color:#3a71c1}.bd-blue .channel-textarea-autocomplete-inner ul.images li.active{border-color:#3a71c1}.bd-blue .reaction.reaction-me .reaction-count{color:#3a71c1}.bd-blue .theme-dark .reaction.reaction-me .reaction-count{color:#3a71c1}.bd-blue .spinner-wandering-cubes .ui-spinner-item{background-color:#3a71c1}.bd-blue .spinner-chasing-dots .ui-spinner-item{background-color:#3a71c1}.bd-blue .theme-light .ui-spinner.spinner-spinning-circle .path{stroke:#3a71c1}.bd-blue .theme-dark .ui-spinner.spinner-spinning-circle .path{stroke:#3a71c1}.bd-blue .theme-dark .ui-spinner.spinner-spinning-circle .path-2{stroke:#3a71c1}.bd-blue .ui-button.brand.filled{background-color:#3a71c1}.bd-blue .ui-button.brand.filled:disabled{background-color:#3a71c1}.bd-blue .ui-button.brand.inverted{color:#3a71c1}.bd-blue .ui-button.brand.outlined{color:#3a71c1}.bd-blue .ui-button.brand.outlined:active{background-color:#3a71c1;border-color:#3a71c1}.bd-blue .ui-button.brand.outlined:disabled{color:#3a71c1}.bd-blue .ui-button.brand.link{color:#3a71c1}.bd-blue .ui-button.brand.link:not(:disabled):hover .ui-button-contents{background-image:-webkit-linear-gradient(bottom,transparent,transparent 1px,#3a71c1 0,#3a71c1 2px,transparent 0);background-image:linear-gradient(to top,transparent,transparent 1px,#3a71c1 1px,#3a71c1 2px,transparent 2px)}.bd-blue .ui-button.brand.ghost{color:#3a71c1}.bd-blue .ui-button.brand .ui-spinner-item{background-color:#3a71c1}.bd-blue .theme-blurple .ui-button.primary.filled{color:#3a71c1}.bd-blue .theme-blurple .ui-form-title.h5{color:#3a71c1}.bd-blue .btn-filled{background-color:#3a71c1}.bd-blue .btn-filled.white{color:#3a71c1}.bd-blue .progress .progress-bar{background-color:#3a71c1}.bd-blue .radio-theme input[type=radio]:checked~label{border-color:#3a71c1}.bd-blue .now-playing{background:#3a71c1}.bd-blue .user-settings-modal-account .discord-tag{color:#3a71c1}.bd-blue .modal-new-user>.steps .step-3 .instant-invite input{color:#3a71c1}.bd-blue .modal-new-user h5{color:#3a71c1}.bd-blue .modal-new-user .steps-wrap .steps li.on:before{background-color:#3a71c1}.bd-blue .modal-new-user .steps-wrap .steps li.active{background-color:#3a71c1}.bd-blue .ui-tab-bar.SIDE .ui-tab-bar-item.selected{background-color:#3a71c1}.bd-blue .ui-tab-bar.SIDE .ui-tab-bar-item:active{background-color:#3a71c1}.bd-blue .ui-tab-bar.SIDE .ui-tab-bar-item.brand{color:#3a71c1}.bd-blue .theme-light .ui-text-input .input:focus{border-color:#3a71c1}.bd-blue .theme-dark .ui-text-input .input:focus{border-color:#3a71c1}.bd-blue .theme-blurple .ui-text-input .input{color:#3a71c1}.bd-blue .theme-blurple .ui-text-input .input:hover{border-color:#3a71c1}.bd-blue .theme-blurple .ui-select:hover .Select .Select-control{border-color:#3a71c1}.bd-blue .theme-blurple .ui-select:hover .Select .Select-control .Select-arrow{border-color:#3a71c1 transparent transparent}.bd-blue .theme-blurple .ui-select .Select.is-open .Select-control{border-color:#3a71c1}.bd-blue .theme-blurple .ui-select .Select-menu-outer{border-color:#3a71c1}.bd-blue .theme-blurple .ui-select .Select-menu-outer .Select-option{color:#3a71c1}.bd-blue .theme-blurple .ui-select .Select-value-label{color:#3a71c1}.bd-blue .ui-card-brand{background:#3a71c1;border-color:#3a71c1}.bd-blue .ui-checkbox-wrapper .ui-checkbox.checked polyline{stroke:#3a71c1}.bd-blue .ui-checkbox-wrapper .ui-checkbox.checked.inverted{background:#3a71c1}.bd-blue .ui-region-flag.vip:after{background:#3a71c1}.bd-blue .ui-scroller-wrap .scrollbar .thumb:after{background-color:#3a71c1}.bd-blue .ui-quick-select-popout-option .ui-icon-check-mark .ui-icon-fg{stroke:#3a71c1}.bd-blue .ui-switch-checkbox:checked+.ui-switch{background:#3a71c1}.bd-blue #instant-invite-modal .clipboard-input-inner input{color:#3a71c1}.bd-blue #instant-invite-modal .copy{background-color:#3a71c1}.bd-blue .color-brand{color:#3a71c1}.bd-blue .webkhook-modal-header.ui-form-title.h5{color:#3a71c1}.bd-blue .ui-bot-tag{background:#3a71c1}.bd-blue .ui-bot-tag.invert{color:#3a71c1}.bd-blue #user-profile-modal .btn{background-color:#3a71c1}.bd-blue #user-profile-modal .guilds .avatar-large{background-color:#3a71c1}.bd-blue .premium-payment-modal{background-color:#3a71c1}.bd-blue .premium-payment-modal .premium-payment-button{color:#3a71c1}.bd-blue .premium-payment-modal .premium-payment-button .spinner .spinner-item{background-color:#3a71c1}.bd-blue .invite-modal .avatar-xxxlarge{background-color:#3a71c1}.bd-blue .ui-screenshare-modal-tile .image-container img.selected{border-color:#3a71c1}.bd-blue .detected-platform-accounts-modal .btn-group .btn-primary{background-color:#3a71c1}.bd-blue .ui-new-terms-modal .title{color:#3a71c1}.bd-blue #oauth2-authorize .authorize-inner header{background:#3a71c1}.bd-blue #oauth2-authorize .authorize-inner footer button.primary{background:#3a71c1}.bd-blue #oauth2-authorize .select select:focus{border-color:#3a71c1}.bd-blue #oauth2-authorize .select.focus:after{border-top-color:#3a71c1}.bd-blue #oauth2-authorize .scope-bot .avatar-large{background-color:#3a71c1}.bd-blue .invite-header .invite-guild-icon{background-color:#3a71c1}.bd-blue .invite-marketing .invite-marketing-header{color:#3a71c1}.bd-blue .invite-marketing .invite-marketing-button{color:#3a71c1;border:2px solid #3a71c1}.bd-blue .invite-mobile .top{background-color:#3a71c1}.bd-blue .invite-mobile .link.purple{background-color:#3a71c1}.bd-blue .verify-connected-account .btn{background-color:#3a71c1}.bd-blue #unsupported-browser li:hover{border-color:#3a71c1}.bd-blue #unsupported-browser li:hover .btn{background-color:#3a71c1;border-color:#3a71c1}.bd-blue .ui-slider .slider-bar-fill{background:#3a71c1}.bd-blue .popout-menu .popout-menu-item.invite{color:#3a71c1}.bd-blue .channel-members .invite-btn{background-color:#3a71c1}.bd-blue .chat .welcome-message h1{color:#3a71c1}.bd-blue .channel-textarea-guard button{background-color:#3a71c1}.bd-blue .private-channel-recipients-invite .footer button{background-color:#3a71c1}.bd-blue .private-channel-recipients-invite .footer button:disabled:hover{background-color:#3a71c1}.bd-blue .private-channel-recipients-invite .error-state.not-friends .btn{background:#3a71c1}.bd-blue .ui-call-avatar-border.voice.video.selected{box-shadow:inset 0 0 0 2px #3a71c1}.bd-blue .ui-call-avatar-border.video.selected:not(.speaking){box-shadow:inset 0 0 0 2px #3a71c1}.bd-blue .invite-banner{background-color:#3a71c1}.bd-blue .invite-banner .instant-invite:not(.clipboard-input-copied) .clipboard-input-inner button{color:#3a71c1}.bd-blue .invite-banner.invite-banner-1 .instant-invite .clipboard-input-inner button:before{background:-webkit-linear-gradient(left,hsla(0,0%,100%,0),#3a71c1);background:linear-gradient(to right,hsla(0,0%,100%,0),#3a71c1)}.bd-blue .add-friend-input-wrapper .btn:disabled{background-color:#3a71c1}.bd-blue #friends .btn{background-color:#3a71c1}.bd-blue #friends .friends-header .tab-bar .tab-bar-item.tab-bar-item-primary{background-color:#3a71c1}.bd-blue #friends .friends-header .tab-bar .tab-bar-item.tab-bar-item-primary .badge{color:#3a71c1}.bd-blue #friends .friends-table .friends-row .friends-column-guilds .avatar-small{background-color:#3a71c1}.bd-blue .theme-dark #friends .friends-header .tab-bar .tab-bar-item.selected .badge{background-color:#3a71c1}.bd-blue .theme-dark #friends .friends-header .tab-bar .tab-bar-item.tab-bar-item-primary{background-color:#3a71c1}.bd-blue .theme-dark #friends .friends-header .tab-bar .tab-bar-item.tab-bar-item-primary .badge{color:#3a71c1}.bd-blue .theme-dark #friends .friends-header .tab-bar .tab-bar-item.tab-bar-item-primary.selected{color:#3a71c1;background-color:#fff}.bd-blue .theme-dark #friends .friends-header .tab-bar .tab-bar-item.tab-bar-item-primary.selected .badge{background-color:#3a71c1}.bd-blue .private-channels .search-result:hover:before{border-left:2px solid #3a71c1}.bd-blue .private-channels .channel.selected .icon-friends{background-color:#3a71c1}.bd-blue .private-channels .channel.selected:before{border-left:2px solid #3a71c1}.bd-blue #rtc-debug-modal #users-section .user-list li.selected:before{color:#3a71c1;background-color:#3a71c1}.bd-blue .notice.notice-brand{background-color:#3a71c1}.bd-blue .notice.notice-brand .btn:hover{color:#3a71c1}.bd-blue .theme-light .ui-text-input .input:focus{border-color:#3a71c1}.bd-blue .theme-dark .ui-text-input .input:focus{border-color:#3a71c1}.bd-blue .theme-blurple .ui-text-input .input{color:#3a71c1}.bd-blue .theme-blurple .ui-text-input .input:hover{border-color:#3a71c1}.bd-blue .onboarding-slide textarea:focus{box-shadow:0 2px 0 #3a71c1}.bd-blue .nuf-page .button.filled{background-color:#3a71c1}.bd-blue .onboarding-navigation .button{color:#3a71c1}.bd-blue .onboarding-navigation .step-status .step.current{background-color:#3a71c1}.bd-blue .onboarding-slide textarea:focus{box-shadow:0 2px 0 #3a71c1}.bd-blue .nuf-page .button.filled{background-color:#3a71c1}.bd-blue .onboarding-slide textarea:focus{box-shadow:0 2px 0 #3a71c1}.bd-blue .nuf-page .button.filled{background-color:#3a71c1}.bd-blue .onboarding-slide textarea:focus{box-shadow:0 2px 0 #3a71c1}.bd-blue .nuf-page .button.filled{background-color:#3a71c1}.bd-blue .onboarding-slide textarea:focus{box-shadow:0 2px 0 #3a71c1}.bd-blue .nuf-page .button.filled{background-color:#3a71c1}.bd-blue .onboarding-slide textarea:focus{box-shadow:0 2px 0 #3a71c1}.bd-blue .nuf-page .button.filled{background-color:#3a71c1}.bd-blue .onboarding-slide textarea:focus{box-shadow:0 2px 0 #3a71c1}.bd-blue .nuf-page .button.filled{background-color:#3a71c1}.bd-blue .onboarding-slide.mic-test .content.waiting .button{color:#3a71c1}.bd-blue .onboarding-slide textarea:focus{box-shadow:0 2px 0 #3a71c1}.bd-blue .nuf-page .button.filled{background-color:#3a71c1}.bd-blue .onboarding-slide textarea:focus{box-shadow:0 2px 0 #3a71c1}.bd-blue .nuf-page .button.filled{background-color:#3a71c1}.bd-blue .onboarding-slide textarea:focus{box-shadow:0 2px 0 #3a71c1}.bd-blue .nuf-page .button.filled{background-color:#3a71c1}.bd-blue .ui-switch-wrapper:not(.disabled):not(.clear):hover .ui-switch-checkbox:checked+.ui-switch{background:#3f79ce}.bd-blue *[style*="border-color: rgb(114, 137, 218)"]{border-color:#3a71c1 !important}.bd-blue *[style*="background-color: rgb(114, 137, 218)"]{background-color:#3a71c1 !important}.bd-blue .bda-slist .bda-footer button{background-color:#3a71c1}.bd-blue .bda-slist .bda-footer a{color:#3a71c1}.bd-blue .bd-modal-wrapper .footer button{background-color:#3a71c1}.bd-blue .bd-modal-wrapper .footer button:hover{background-color:#356bbb}.bd-blue .bd-modal-wrapper .footer button:active{background-color:#2a61b1}
\ No newline at end of file
+.bd-logo,.bd-loaderv2{background-image:url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+IDwhRE9DVFlQRSBzdmcgUFVCTElDICItLy9XM0MvL0RURCBTVkcgMS4xLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL0dyYXBoaWNzL1NWRy8xLjEvRFREL3N2ZzExLmR0ZCI+PHN2ZyBoZWlnaHQ9IjEwMCUiIHN0eWxlPSJmaWxsLXJ1bGU6ZXZlbm9kZDtjbGlwLXJ1bGU6ZXZlbm9kZDtzdHJva2UtbGluZWNhcDpyb3VuZDtzdHJva2UtbGluZWpvaW46cm91bmQ7IiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWw6c3BhY2U9InByZXNlcnZlIiB3aWR0aD0iMTAwJSIgdmVyc2lvbj0iMS4xIiB2aWV3Qm94PSIwIDAgMjAwMCAyMDAwIj4gICAgPG1ldGFkYXRhIC8+ICAgIDxkZWZzPiAgICAgICAgPGZpbHRlciBpZD0ic2hhZG93MSI+ICAgICAgICA8ZmVEcm9wU2hhZG93IGR4PSIyMCIgZHk9IjAiIHN0ZERldmlhdGlvbj0iMjAiIGZsb29kLWNvbG9yPSJyZ2JhKDAsMCwwLDAuMzUpIi8+ICAgICAgICA8L2ZpbHRlcj4gICAgICAgIDxmaWx0ZXIgaWQ9InNoYWRvdzIiPiAgICAgICAgPGZlRHJvcFNoYWRvdyBkeD0iMTUiIGR5PSIwIiBzdGREZXZpYXRpb249IjIwIiBmbG9vZC1jb2xvcj0icmdiYSgyNTUsMjU1LDI1NSwwLjE1KSIvPiAgICAgICAgPC9maWx0ZXI+ICAgICAgICA8ZmlsdGVyIGlkPSJzaGFkb3czIj4gICAgICAgIDxmZURyb3BTaGFkb3cgZHg9IjEwIiBkeT0iMCIgc3RkRGV2aWF0aW9uPSIyMCIgZmxvb2QtY29sb3I9InJnYmEoMCwwLDAsMC4zNSkiLz4gICAgICAgIDwvZmlsdGVyPiAgICA8L2RlZnM+ICAgIDxnPiAgICAgICAgPHBhdGggc3R5bGU9ImZpbHRlcjogdXJsKCNzaGFkb3czKSIgZD0iTTExOTUuNDQrMTM1LjQ0MkwxMTk1LjQ0KzEzNS40NDJMOTk3LjYrMTM2LjQ0MkMxMDI0LjIrMTQ5Ljc0MisxMTcwLjM0KzE2My41NDIrMTE5My42NCsxNzkuNzQyQzEyNjQuMzQrMjI4Ljg0MisxMzE5Ljc0KzI5MS4yNDIrMTM1OC4yNCszNjUuMDQyQzEzOTguMTQrNDQxLjY0MisxNDE5Ljc0KzUzMC42NDIrMTQyMi41NCs2MjkuNjQyTDE0MjIuNTQrNjMwLjg0MkwxNDIyLjU0KzYzMi4wNDJDMTQyMi41NCs3NzMuMTQyKzE0MjIuNTQrMTIyOC4xNCsxNDIyLjU0KzEzNjkuMTRMMTQyMi41NCsxMzcwLjM0TDE0MjIuNTQrMTM3MS41NEMxNDE5Ljg0KzE0NzAuNTQrMTM5OC4yNCsxNTU5LjU0KzEzNTguMjQrMTYzNi4xNEMxMzE5Ljc0KzE3MDkuOTQrMTI2NC40NCsxNzcyLjM0KzExOTMuNjQrMTgyMS40NEMxMTcxLjA0KzE4MzcuMTQrMTAyNS43KzE4NTAuNTQrMTAwMCsxODYzLjU0TDExOTMuNTQrMTg2NC41NEMxNTM5Ljc0KzE4NjYuNDQrMTg2NC41NCsxNjkzLjM0KzE4NjQuNTQrMTI5Ni42NEwxODY0LjU0KzcxNi45NDJDMTg2Ni40NCszMTIuNDQyKzE1NDEuNjQrMTM1LjQ0MisxMTk1LjQ0KzEzNS40NDJaIiBmaWxsPSIjMTcxNzE3IiBvcGFjaXR5PSIxIi8+ICAgICAgICA8cGF0aCBzdHlsZT0iZmlsdGVyOiB1cmwoI3NoYWRvdzIpIiBkPSJNMTY5NS41NCs2MzEuNDQyQzE2ODUuODQrMjc4LjA0MisxNDA5LjM0KzEzNS40NDIrMTA1Mi45NCsxMzUuNDQyTDM2MS43NCsxMzYuNDQyTDgwMy43NCs0OTAuNDQyTDEwNjAuNzQrNDkwLjQ0MkMxMzM1LjI0KzQ5MC40NDIrMTMzNS4yNCs4MzUuMzQyKzEwNjAuNzQrODM1LjM0MkwxMDYwLjc0KzExNjQuODRDMTE1MC4yMisxMTY0Ljg0KzEyMTAuNTMrMTIwMS40OCsxMjQxLjY4KzEyNTAuODdDMTMwNi4wNysxMzUzKzEyNDUuNzYrMTUwOS42NCsxMDYwLjc0KzE1MDkuNjRMMzYxLjc0KzE4NjMuNTRMMTA1Mi45NCsxODY0LjU0QzE0MDkuMjQrMTg2NC41NCsxNjg1Ljc0KzE3MjEuOTQrMTY5NS41NCsxMzY4LjU0QzE2OTUuNTQrMTIwNS45NCsxNjUxLjA0KzEwODQuNDQrMTU3Mi42NCs5OTkuOTQyQzE2NTEuMDQrOTE1LjU0MisxNjk1LjU0Kzc5NC4wNDIrMTY5NS41NCs2MzEuNDQyWiIgZmlsbD0iIzNFODJFNSIgb3BhY2l0eT0iMSIvPiAgICAgICAgPHBhdGggc3R5bGU9ImZpbHRlcjogdXJsKCNzaGFkb3cxKSIgZD0iTTE0NjkuMjUrNjMxLjQ0MkMxNDU5LjU1KzI3OC4wNDIrMTE4My4wNSsxMzUuNDQyKzgyNi42NSsxMzUuNDQyTDEzNS40NSsxMzUuNDQyTDEzNS40NSsxMDA0QzEzNS40NSsxMDA0KzEzNS40MjcrMTI1NS4yMSszNTUuNjI2KzEyNTUuMjFDNTc1LjgyNSsxMjU1LjIxKzU3NS44NDgrMTAwNCs1NzUuODQ4KzEwMDRMNTc3LjQ1KzQ5MC40NDJMODM0LjQ1KzQ5MC40NDJDMTEwOC45NSs0OTAuNDQyKzExMDguOTUrODM1LjM0Mis4MzQuNDUrODM1LjM0Mkw2NjQuNjUrODM1LjM0Mkw2NjQuNjUrMTE2NC44NEw4MzQuNDUrMTE2NC44NEM5MjMuOTMyKzExNjQuODQrOTg0LjI0NCsxMjAxLjQ4KzEwMTUuMzkrMTI1MC44N0MxMDc5Ljc4KzEzNTMrMTAxOS40NysxNTA5LjY0KzgzNC40NSsxNTA5LjY0TDEzNS40NSsxNTA5LjY0TDEzNS40NSsxODY0LjU0TDgyNi42NSsxODY0LjU0QzExODIuOTUrMTg2NC41NCsxNDU5LjQ1KzE3MjEuOTQrMTQ2OS4yNSsxMzY4LjU0QzE0NjkuMjUrMTIwNS45NCsxNDI0Ljc1KzEwODQuNDQrMTM0Ni4zNSs5OTkuOTQyQzE0MjQuNzUrOTE1LjU0MisxNDY5LjI1Kzc5NC4wNDIrMTQ2OS4yNSs2MzEuNDQyWiIgZmlsbD0iI0ZGRkZGRiIgb3BhY2l0eT0iMSIvPiAgICA8L2c+PC9zdmc+)}.bd-loaderv2{position:fixed;bottom:5px;right:5px;z-index:2147483647;display:block;width:20px;height:20px;background-size:100% 100%;animation:bd-loaderv2-animation 1.5s ease-in-out infinite}@keyframes bd-loaderv2-animation{0%{opacity:.05}50%{opacity:.6}to{opacity:.05}}.bd-reload{cursor:pointer;vertical-align:top;fill:#dcddde}.bd-reload:hover{fill:#fff}.bd-reload-header{margin-left:5px}.bd-reload-card{margin-right:5px}.bda-controls{display:flex}.standardSidebarView-3F1I7i .bd-psm{background-color:#292b2f;box-shadow:0 0 12px 6px rgba(31,31,31,.32);border:1px solid #3f4146;width:60vw;height:80vh;border-radius:6px}.standardSidebarView-3F1I7i #bd-customcss-attach-controls button,.bd-detached-css-editor #bd-customcss-attach-controls button{margin:0;width:100px;background:#31332b;color:#fff;height:26px;font-weight:600;margin-top:5px;border-radius:3px}.standardSidebarView-3F1I7i #bd-customcss-attach-controls button:hover,.bd-detached-css-editor #bd-customcss-attach-controls button:hover{background:#3b3e44}.cm-s-neat span.cm-comment{color:#a86}.cm-s-neat span.cm-keyword{line-height:1em;font-weight:700;color:#00f}.cm-s-neat span.cm-string{color:#a22}.cm-s-neat span.cm-builtin{line-height:1em;font-weight:700;color:#077}.cm-s-neat span.cm-special{line-height:1em;font-weight:700;color:#0aa}.cm-s-neat span.cm-variable{color:#000}.cm-s-neat span.cm-atom,.cm-s-neat span.cm-number{color:#3a3}.cm-s-neat span.cm-meta{color:#555}.cm-s-neat span.cm-link{color:#3a3}.cm-s-neat .CodeMirror-activeline-background{background:#e8f2ff}.cm-s-neat .CodeMirror-matchingbracket{outline:gray solid 1px;color:#000!important}#custom-css-ta{background:#d8d8d8;height:200px;font-family:"Consolas"}.contentRegion-3nDuYy .CodeMirror,.contentRegion-3nDuYy .cm-s-material .CodeMirror-gutters,#bd-customcss-detach-container .CodeMirror,#bd-customcss-detach-container .cm-s-material .CodeMirror-gutters{background:#292b2f!important}.contentRegion-3nDuYy #bd-customcss-attach-controls,#bd-customcss-detach-container #bd-customcss-attach-controls{background:#272822;color:#fff;border:0;box-shadow:0 1px 0 0 #2f3129 inset}.contentRegion-3nDuYy #bd-customcss-pane,.contentRegion-3nDuYy #bd-customcss-innerpane,#bd-customcss-detach-container #bd-customcss-pane,#bd-customcss-detach-container #bd-customcss-innerpane{min-height:calc(80vh - 165px)}.contentRegion-3nDuYy .CodeMirror,.contentRegion-3nDuYy .CodeMirror-scroll{max-height:calc(95vh - 165px);min-height:calc(95vh - 165px);height:auto}.contentRegion-3nDuYy .CodeMirror-simplescroll-vertical,.contentRegion-3nDuYy .CodeMirror-simplescroll-horizontal,#bd-customcss-detach-container .CodeMirror-simplescroll-vertical,#bd-customcss-detach-container .CodeMirror-simplescroll-horizontal{background:0 0!important}.contentRegion-3nDuYy .CodeMirror-simplescroll-vertical,#bd-customcss-detach-container .CodeMirror-simplescroll-vertical{margin-right:3px!important}.contentRegion-3nDuYy .CodeMirror-simplescroll-horizontal,#bd-customcss-detach-container .CodeMirror-simplescroll-horizontal{margin-bottom:3px!important}.contentRegion-3nDuYy .CodeMirror-simplescroll-vertical div,.contentRegion-3nDuYy .CodeMirror-simplescroll-horizontal div,#bd-customcss-detach-container .CodeMirror-simplescroll-vertical div,#bd-customcss-detach-container .CodeMirror-simplescroll-horizontal div{background:#18191c!important;border:0!important;border-radius:5px!important}.contentRegion-3nDuYy .CodeMirror-scrollbar-filler,#bd-customcss-detach-container .CodeMirror-scrollbar-filler{display:none!important}.standardSidebarView-3F1I7i #editor-detached h3{color:#87909c;font-weight:600;font-size:22px}.standardSidebarView-3F1I7i #editor-detached button{margin:auto;margin-left:calc(50% - 100px);margin-top:20px;background:#7289da;color:#fff;font-weight:600;border-radius:5px;font-size:20px}.bd-blue .standardSidebarView-3F1I7i #editor-detached button{background:#3a71c1}.standardSidebarView-3F1I7i .bd-versioninfo-wrapper{bottom:0;left:0;position:fixed;background:inherit;right:0;padding:5px}.standardSidebarView-3F1I7i .bd-versioninfo-wrapper span{color:#b9bbbe;font-weight:600;font-size:11px}.standardSidebarView-3F1I7i .bd-versioninfo-wrapper a{font-size:11px}.bd-server-card .bd-server-tags{flex:1 1 auto;text-overflow:ellipsis;white-space:nowrap;overflow:hidden;width:0;line-height:24px;font-size:12px;color:#b9bbbe;font-weight:700;margin-right:10px}.ui-card.ui-card-primary.bd-server-card:first-child{margin-bottom:13px}.ui-card.ui-card-primary.bd-server-card:first-child:after{border:3px solid #7289da;content:"";display:block;position:absolute;left:0;right:0;margin-top:4px}.bd-server-card.bd-server-card-pinned{margin-bottom:15px}.bd-server-card.bd-server-card-pinned:after{background:#3a71c1;content:"";height:3px;width:100%;display:block;margin-top:7px;position:absolute;top:100%}.bd-server-description-container{color:#b9bbbe;min-height:65px;max-height:65px;border-top:1px solid #3f4146;border-bottom:1px solid #3f4146;padding-top:5px;font-size:13px}.bd-server-header{justify-content:space-between;font-weight:600}.bd-server-card{display:flex}.bd-server-content{padding:5px 10px;flex:1}.bd-server-image{min-width:115px;min-height:115px;max-width:115px;max-height:115px}.bd-server-name{text-overflow:ellipsis;white-space:nowrap;overflow:hidden;padding-right:15px;max-width:330px;flex:1 1 50%}.bd-layer{-ms-flex-direction:column;-webkit-box-direction:normal;-webkit-box-orient:vertical;bottom:0;display:-webkit-box;display:-ms-flexbox;display:flex;flex-direction:column;left:0;position:absolute;right:0;top:0}.spoiler{color:transparent!important}.spoiler img{display:none}.spoiler:before{content:"Spoiler";display:block;background:#1d1d1d;color:#adadad!important;min-height:30px;text-align:center;line-height:100%;font-family:"Consolas";padding-top:5px}.emotemenu-enabled .channel-textarea-inner textarea{margin-right:45px!important}#bdbeta{background:red}.editor-wrapper{display:flex}.line-numbers,.editor{line-height:normal;font-family:Consolas,monospace;box-sizing:border-box;height:calc(100vh - 250px);font-size:14px}.line-numbers{white-space:pre;color:gray;padding:10px 5px 0 5px;background:#24262a;overflow:hidden}.editor{width:100%;background:#292b2f;outline:0;color:#fff;padding:10px;resize:none}#bd-customcss-detach-container .editor-wrapper,#bd-customcss-detach-container .line-numbers,#bd-customcss-detach-container .editor{height:100%}#emote-menu{background:#36393e;height:0;width:300px;position:absolute;bottom:45px;right:0;border:1px solid #000;border-radius:5px 0 0 0;overflow:hidden;visibility:hidden;transition:all 1s;-webkit-transition:all 1s}.emotemenu-open{height:450px!important;visibility:visible!important}#emote-menu-header{width:100%;height:30px;background-color:#36393e}.emote-menu-tab{float:left;width:130px;text-align:center;padding:7px;color:#adadad;background-color:#424549;cursor:pointer}.emote-menu-tab:hover{background-color:#45484c}#emote-menu-inner,#emote-menu-inner-fav{height:412px}.emote-menu-tab-selected{background-color:#36393e}.emote-menu-tab-selected:hover{background-color:#36393e}#emote-container{padding:10px}.emote-container{display:inline-block;padding:2px;border-radius:5px;width:30px;height:30px;position:relative}.emote-icon{max-width:100%;max-height:100%;position:absolute;margin:auto;top:0;right:0;bottom:0;left:0;cursor:pointer}.emote.stop-animation{animation:none!important}.emote-container:hover{background:rgba(123,123,123,.37)}.emoteflip,.emotespinflip{transform:scaleX(-1)}.emotespin{animation:1s emote-spin infinite linear}.emote1spin{animation:1s emote-spin-reverse infinite linear}.emotespin2{animation:.5s emote-spin infinite linear}.emote2spin{animation:.5s emote-spin-reverse infinite linear}.emotespin3{animation:.2s emote-spin infinite linear}.emote3spin{animation:.2s emote-spin-reverse infinite linear}.emotepulse{animation:1s emote-pulse infinite linear}.emotetr{transform:translateX(-3px)}.emotebl{transform:translateY(-3px)}.emotebr{transform:translate(-3px,-3px)}.emoteshake{animation:1s emote-shake infinite linear}.emoteflap{transform:scaleY(-1)!important}.emoteshake2{animation:emote-shake2 .3s linear infinite}.emoteshake3{animation:emote-shake3 .1s linear infinite}@keyframes emote-shake2{25%{transform:translate(-1px,-1px)}50%{transform:translate(-1px,1px)}75%{transform:translate(1px,1px)}75%{transform:translate(1px,-1px)}}@keyframes emote-shake3{25%{transform:translate(-1px,-1px)}50%{transform:translate(-1px,1px)}75%{transform:translate(1px,1px)}75%{transform:translate(1px,-1px)}}@keyframes emote-spin{0%{transform:rotate(0deg)}to{transform:rotate(360deg)}}@keyframes emote-spin-reverse{0%{transform:rotate(0deg)}to{transform:rotate(-360deg)}}@keyframes emote-pulse{0%{-webkit-transform:scale(1,1)}50%{-webkit-transform:scale(1.2,1.2)}to{-webkit-transform:scale(1,1)}}@keyframes emote-shake{10%,90%{transform:translate3d(-1px,0,0)}20%,80%{transform:translate3d(2px,0,0)}30%,50%,70%{transform:translate3d(-4px,0,0)}40%,60%{transform:translate3d(4px,0,0)}}#tc-settings-panel{position:fixed;width:50%;height:75%;background:#2e3136;display:block;z-index:9001;margin-left:25%;margin-top:5%;border:1px solid #000;box-shadow:0 0 20px 0 #000;max-height:800px;min-width:750px}#tc-settings-panel-header{background:#36393e;height:60px;border-bottom:1px solid #000;box-shadow:0 1px 0 0 #4e4e4e}#tc-settings-panel-header h2{margin:0;line-height:60px;margin-left:10px;color:#adadad;display:inline-block;float:left}#tc-settings-panel-header span{float:right;display:inline;line-height:50px;margin-right:15px;font-size:29px;font-weight:700;color:#adadad}#rmenu{width:auto;background:#505050;position:absolute;z-index:999999;display:none;box-shadow:0 0 2px #000;padding:2px}#rmenu ul a{text-decoration:none;color:#fff;padding:3px}#tc-settings-panel-body{overflow:auto}#tc-settings-panel-body ul{overflow:auto;position:absolute;padding:0;margin-top:0;border-bottom:1px solid #000;left:0;right:0;bottom:40px;top:61px}#tc-settings-panel-body ul li{padding:15px;color:#adadad;background:#2e3136;border-bottom:1px solid #000;box-shadow:0 1px 0 #404040 inset}#tc-settings-panel-body ul li:nth-child(odd){background:#33363b}#tc-settings-panel-body ul li h2{display:inline}#tc-links a{color:#fff}#tc-settings-panel-footer{background:#36393e;height:40px;position:absolute;bottom:0;right:0;left:0;border-top:1px solid #000;box-shadow:0 1px 0 #505050 inset;line-height:40px;padding-left:10px;color:#adadad!important}#tc-links{float:right;margin-right:10px}.tc-switch{background:#2e3136;width:100px;height:24px;display:inline-block;float:right;margin:-7px;border:1px solid #000;outline:1px solid #404040;cursor:pointer}.tc-switch.disabled{background:gray;cursor:default}.tc-switch.disabled span{background:gray!important}.tc-switch.disabled .tc-switch-on{border-left:1px gray!important}.tc-switch span{line-height:24px;display:inline-block;width:49px;text-align:center;height:24px}.tc-switch-off{border-right:1px solid #000}.tc-switch-on{border-left:1px solid #404040}.tc-switch-on.active{background:green;border-left:1px solid #00ae08}.tc-switch-off.active{background:#860606}.bd-minimal .divider-32i8lo{opacity:0}.bd-minimal .large-3ChYtB{max-width:20px;max-height:20px;background-size:100%;margin-right:2px;margin-top:0;border-radius:0}.bd-minimal .content-3dzVd8{border-left:2px solid #ebebeb;padding-left:2px}.bd-minimal .theme-dark .content-3dzVd8{border-left:2px solid #303030}.bd-minimal .username-_4ZSMR{font-size:small}.bd-minimal.bd-minimal-chan .channels-Ie2l6A{display:none}.bd-minimal .container-1YxwTf{padding:5px}.bd-minimal .embed{padding:2px}.bd-minimal .members-1998pB .small-5Os1Bb{max-width:15px;max-height:15px;background-size:15px 15px}.bd-minimal .members-1998pB .small-5Os1Bb .status-oxiHuE{height:5px;width:5px}.bd-minimal .members-1998pB .member-3W1lQa{padding:5px}.bd-minimal .members-1998pB .memberInner-2CPc3V{transform:scale(.9)}.bd-minimal .membersWrap-2h-GB4{min-width:0}.bd-minimal .members-1998pB .membersGroup-v9BXpm{margin-top:3px;transform:scale(.9)}.bd-minimal .channels-Ie2l6A header span{font-size:12px}.bd-minimal .channels-Ie2l6A .channels-Ie2l6A{padding:0}.bd-minimal .guildsWrapper-5TJh6A .guilds-1q_RqH .guild-1EfMGQ{width:20px;height:20px;background-size:100%;font-size:15px;line-height:20px}.bd-minimal .guildsWrapper-5TJh6A .guilds-1q_RqH .guild-1EfMGQ .guildInner-3DSoA4 a,.bd-minimal .guild-1EfMGQ .guildInner-3DSoA4 .guildIcon-CT-ZDq{width:20px;height:20px;background-size:100%;font-size:15px;line-height:20px}.bd-minimal .guild-1EfMGQ .guildInner-3DSoA4{width:20px;height:20px;background-size:100%;font-size:15px;line-height:20px}.bd-minimal .guilds-1q_RqH .homeIcon-1FoKUJ{width:10px;height:10px;background-size:100%;font-size:15px;line-height:20px}.bd-minimal .guilds-1q_RqH .friendsOnline-_wi_fM{margin-left:-15px;font-size:7px}.bd-minimal .guildsWrapper-5TJh6A{width:45px}.bd-minimal .guildsWrapper-5TJh6A .guildSeparator-1X4GQ1{margin-left:-15px}.bd-minimal .guildsWrapper-5TJh6A .guilds-1q_RqH .guild-1EfMGQ.selected-ML3OIq:before{height:20px;margin-top:-10px}.bd-minimal .guildsAdd-21_IdK{font-size:20px;line-height:14px}.bd-minimal .guilds-1q_RqH .audio-3vVhBi .guildInner-3DSoA4:after{width:12px;height:12px;background-size:12px}.bd-minimal .guild-header header span{margin-left:-20px}.bd-minimal .btn-hamburger{margin-right:-30px}.bd-minimal .container-2Thooq .avatar-small{width:15px;height:15px;background-size:15px 15px}.bd-minimal .container-2Thooq .avatar-small .status-oxiHuE{height:5px;width:5px}.bd-minimal .container-2Thooq .accountDetails-3k9g4n{transform:scale(.8)}.bd-minimal .container-2Thooq .button-2b6hmh{height:14px;width:14px;background-size:14px 14px;margin-left:3px}.bd-minimal .container-2Thooq .button-2b6hmh svg{height:14px;width:14px}.bd-minimal .channels-Ie2l6A{width:160px}.bd-minimal .content-20Aix8{transform:scale(.9)}.bd-minimal .containerDefault-3GGEv_{transform:scale(.9)}.bd-minimal .icon-sxakjD{width:14px;height:14px}.emotewrapper{position:relative;display:inline-flex;object-fit:contain;margin:-.1em .05em -.2em .1em;vertical-align:top}.emotewrapper.jumboable{margin-bottom:0;margin-top:.2em;vertical-align:-.3em}.emote{height:1.45em}.emote.jumboable{height:2rem}.emotewrapper:hover .fav{display:block}#bd-changelog h2{font-size:150%;padding-bottom:10px;border-bottom:1px solid rgba(0,0,0,.5)}.fav{display:none;position:absolute;width:15px;height:15px;right:-7px;background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAAAzFBMVEUAAABQUFBMTExLS0tNTU1MTExNTU1NTU1MTExMTExNTU1LS0tEREBEREBEREBEREBJSUhLS0tLS0tEREBNTU1NTU1NTU1EREArKyhNTU1NTU0AAABMTExKSklMTExNTU1NTU1NTU1KSkpMTExKSkhNTU1KSkpISEZNTU1LS0tAQDxOTk5KSkpLS0tNTU1MTExMTEx/f39MTExMTExLS0pLS0tMTExNTU1NTU1LS0pNTU1NTU1NTU1NTU1NTU1NTUxNTU1NTU1NTUxMTEzB8C/5AAAAOnRSTlMAI8X96oWAgYSF68QBAg0PMCb9BIuLgQUD4N0Bh0mKhZSOQ4gcrKscaW8QRE6fmJyjAshASceG7cIpqQOxTQAAALVJREFUGFddx6FOA0EYAOGZvd07Qm6vVCAAgUUgQEDfX/YZMAigqaFN7iC5tsmPqGPUN/AvUVeoEbGOCElJz08Uzeixqu4AqomVVSNngOVjTqDGZSl3UFtPGV2ot2zaq96YM9p5Ddzcf/nTTAlj+/sNtNu8OcwkIsbPBtrUfMQeEhGQmHbmGIFMwLPzu6UMIwBNgToshgq8Nr2ki+Oy7ebDHp70LRPWB6OZgfWLWei7fJonOOsPCGA9kVlssOoAAAAASUVORK5CYII=);border:0;background-size:100% 100%;background-repeat:no-repeat;background-color:#303030;border-radius:5px;top:-7px;cursor:pointer}.fav.active{background-color:#ff0}#bd-ps-container{position:fixed;width:50%;height:75%;background:#2e3136;display:block;z-index:9001;margin-left:25%;margin-top:5%;border:1px solid #000;box-shadow:0 0 20px 0 #000;max-height:800px;min-width:750px}#bd-ps-header{background:#36393e;height:60px;border-bottom:1px solid #000;box-shadow:0 1px 0 0 #4e4e4e}#bd-ps-header h2{margin:0;line-height:60px;margin-left:10px;color:#adadad;display:inline-block;float:left}#bd-ps-header span{float:right;display:inline;line-height:50px;margin-right:15px;font-size:29px;font-weight:700;color:#adadad}#bd-ps-body{position:absolute;padding:0;margin-top:0;left:0;right:0;bottom:0;top:61px;overflow:auto}.bd-ps-server{width:100%;height:200px}.bd-ps-server-header{height:50px;width:100%;margin-top:1px;background:#202020;color:#aeaeae;line-height:50px;font-size:20px}.bd-ps-server-header span{margin-left:10px}.bd-ps-server-body{padding:5px}.bd-ps-server-icon{width:90px;height:90px;background:#202020;display:inline-block}.bd-ps-server-info{position:absolute;height:190px;display:inline-block;left:100px;right:5px;color:#aeaeae;overflow:auto}#bd-ps-body table{width:100%;margin:0;padding:0;border-color:red;border-collapse:collapse;text-align:left}#bd-ps-body table th{background-color:#202020;color:#ededed;height:50px;padding-left:5px}#bd-ps-body table tr{margin:0;padding:0;height:50px;background-color:#33363b;border-bottom:1px solid #000;box-shadow:0 1px 0 #404040 inset}#bd-ps-body table tr td{padding-left:5px;color:#ededed;min-width:100px}#bd-ps-body .description{overflow:auto;max-height:60px;word-wrap:break-word}#bd-ps-body table tr:nth-child(odd){background-color:#2e3136}#bd-show-channels{display:none;width:12px;height:18px;background:#2e3136;position:absolute;left:33px;top:79px;text-align:left!important;padding:0!important;padding-left:3px!important;color:#ebebeb;z-index:90000}.bd-minimal-chan #bd-show-channels{display:block!important}.tipsy{z-index:9000000001!important;position:fixed;padding:5px;display:block;visibility:visible;opacity:.8}.tipsy-arrow{position:absolute;width:0;height:0;border:5px solid transparent;bottom:0;right:10px;border-bottom:none;border-top-color:#000}.tipsy-inner{background-color:#000;color:#fff;max-width:300px;padding:5px 8px 4px;text-align:center;overflow:hidden!important;text-overflow:ellipsis}#bd-psd-container{position:fixed;width:50%;height:75%;display:block;margin-left:25%;margin-top:5%;box-shadow:0 0 20px 0 #000;background:#2e3135;border:1px solid #25282c;min-width:750px;min-height:800px}#bd-psd-header{width:100%;height:40px;border-bottom:1px solid #25282c;line-height:40px;color:#adadad}#bd-psd-header span{margin-left:10px}#bd-psd-body{height:100%;width:100%}#bd-psd-table{width:100%;margin:0;padding:0;text-align:left;color:#adadad}#bd-psd-table thead th{background:#1d1d1d;padding:5px}#bd-psd-table tbody td{padding:5px}#bd-psd-table tbody tr{background:#292c30}#bd-psd-table tbody tr:nth-child(odd){background:#2e3135}#bd-psd-table button{background:#292c30;border:1px solid #1d1d1d;width:60px;height:30px;color:#adadad;cursor:pointer}#bd-psd-table button:hover{background:#2e3135}#bd-psd-header a{float:right;margin-right:10px;font-size:30px;color:#adadad;text-decoration:none;margin-top:-7px}.bd-g-table{text-align:left;width:520px;white-space:nowrap}.bd-g-table thead th{background:#ebebeb!important;color:#87909c!important;padding:5px!important}.bd-g-table tbody tr{background:#e0e0e0!important}.bd-g-table tbody tr:nth-child(odd){background:#ececec!important}.bd-g-table tbody td{color:#87909c!important;padding:5px!important;font-size:small}.bd-g-table textarea{width:100%!important;background:#e0e0e0!important;border:0!important;resize:none!important;font-size:small!important;margin:0!important;padding:0!important}.bd-g-table input{margin:0!important;padding:0!important}.message-group.compact .message .markup .message-content{text-indent:0}.bd-psb{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAG6ElEQVR4XtWZS0xTWRjHP54+H+WhQRO0GAQxxikxmhhMKBu2upLoTDKsaupmcGVYVTdjxhUrG9kMG0OYTDKSuGIzZQHGUQNEowaJ4lt8UXwBPuf7kV5ycrmXW26bVP/JlxR6zvc63+uc5n379k1+ZOTLD45CPnR2dkoWcUgpqhS2LUgoxZX+kiwgEolYBmSGlpYWsdDT0xMoLi7uaW5ulk2bNomJJ0+ehPv6+sIfP37s0z1JY893FUKt27ZtQ3n58OGDTE1NQXyWiooKqa6uFtZkN4QyhK0IHFi/fr3MzMyIelos8DkvL09Wr17Nmp/Yk4skDimdNGPbREFBAR+Cq1atki9fvogdGFBSUiLwYa0L4I2MULYNOFtWVja0e/fumIbHvyLyj1KzpLBs2TLp7u6OrFmzJrhx40b5+vWr2PH582fZsmWL6JoQa9ljoBme8EYGspApaYA+4FWFztbU1ETD4bBYGB8fl0QiQWicJkKUfg0qVLiocJmcnBQncAKvXr2Sa9euwWM8VZVI/Hb4KwuxAP/R0VG+P+a7CpnK48G3b9/ibQTJkSNHUKRdhYuuwbMCWOMG9mOgVik+B2/cuPEHCzAcPiT77OwsvCTlsKgaIRjhJ4nDGg7RxsZG+fTpk6XYfIIS6/v27RPA91QbYn8xsO7169fky4L9yWRyPvTevHmDEaKykRt9+vQpvSOx1BA6uWPHjpiS5BI3b96ETqHPUkNo/P3795LrWQkd0MVPCHXdv3//N20+oXXr1kk6IE9IUsKJMEM4IFyIcfiQA4WFiPXGixcvRHVIoIvfMhq/dOkSMSqLgdjVOJWRkREEEs8kJLUf4jP/4zvWsJY9nvlCtUKHTDpxpwqv04rXpifhKujOnTuWtz1Boj98+JBkFsaOoqIicYLKxPAOhr+sjBKUT0qcCcLk9u3b86PCUsCp3Lp1S7Zv3054iQH+zuos1FpbW4uCZkLzWe7evUvcS36+v5mQvfCgj5gOgB+95vr16wdF5HgmBkS2bt0aWL58udgr0vPnz2V6etoS7BvwgNeGDRvEAidN166srAxquEUI5XQNCChhdaNSiLmlvr4exUk6M46pEG6ex8rzSr1KA0qggUlV6Wd6j1O1oTrR4Cz+yNu7dy/Jf45mJiLDSv1KF5SSTgYc4jLC0THPwxCCGbON4X2rKzsZwKJTKTLxd4rGlGJORlB68bqZI/x9+PBhSnMI0ktRqyb3n5pzLSS33YCodZNCWZTEM8SpDbR6t9A5j/LiDr6jnP0iNrx7904CgYBZ3QgtegYFhIpFrnCzk4sXL0btBgRXrlwZZjFKs9mjRruFT694o9fBACoZjnOSBWGgWXLDAkwDVqxYYXrbq3G5GTAg3hhw4+kBDFk0idOaezglwifLgCe8UdLXnTjJxjQHN47S7bQaSFaP7Q0uPJEP+TJgWBMTCq1du9ZrFCCp3Gb/A54GsMYBdN90vE8BQV+nEIpfvnz5HDMPRmgPwCuOBlAtuNg4gDo/tkgliqXW2IFMV+9bFyqUHxuDvcTdLjQ1qVe1EFRaWhqgkdkNoTM/ePAAgVlpZMT/5s2bccqCLj00NITiSbwOpZQfdbvQjBqzBxPj7zqste/cuXNByeP95+XLl475SJmEJD3Ay6mM4m2UPyEiZ/zOQmcmJibamRipEGYYad8QSi9zSybgNOFD57UPeo8fP05ayvs1IKmMOh49etTGm479eHkupDMizA9wCt6nSdmhMvnQlbWnRfKAYzZPgcTCCC4nGLQU4HXNMXPKNSuS5ZTpTA1oVsXb6urqUNipe6IAVYn7LmOIV0elg+N1Epe9rHc8mV27dlEo2rUCcSfu82tAdM+ePXiEsdax6mAYIcAozEyPgvxNblgnxn56B5d7eHBa7HMD3+MUZA8ODkb9GhDWcfpgeXk5Cnl61jIEYAwv0SgOMMR62Ut31oIXstFBR+mwr4ctvY3FqqqqJJe4d+8e105fD1sJvcjEuODkENZDccLPuxAGdPGG43Ih53kE8iqjfvfzaoEBcXTxm8RxmChaKZfG7YkXA1p/R+qY24hXbk0er27sYT1dHMXZz0MXlY68MZWXZ8+eGc/r/l7m/ksZ0YXCPDbB+MqVK8OqyFHGjqampuOqSIkKO83c4gXW6NoT7GEvPNQhR+EJb2Qgy1t5exJ742BqyBs3OiTv+OaPEpP79+8PuJ0CJ3f16tVh3VNv7BEDrUrB1NB2IZ2fWfMlfcDwpEd7H0ZJ4GYAa8QdXchAVq5+Zu2n4XkYMPI9/8wa1yGMH+lISLvyxLXgZfbkwABP8JPQRH9//1F9Fo/qKBAySiYGDGOgrkmKD/hPYv8IG5+tG1XWQBLPG/Aj439gf0WR+WMvWwAAAABJRU5ErkJggg==);width:25px;height:25px;background-color:transparent;background-size:100%}.bd-psm{position:fixed;pointer-events:auto;width:490px;height:460px;background-color:#fff;z-index:900000;margin:auto;right:0;left:170px;top:-60px;bottom:0;box-shadow:0 0 10px 5px rgba(193,193,193,.75);border:1px solid #ebebeb}.bd-alert{position:absolute;width:600px;height:200px;left:0;right:0;top:300px;background-color:#2e3136;margin:auto;border:1px solid #323232;box-shadow:0 0 5px 3px rgba(30,30,30,.5);color:#ebebeb}.bd-alert-header{height:25px;background:#36393e}.bd-alert-header span{line-height:25px;margin-left:5px}.bd-alert-closebtn{cursor:pointer;float:right;margin-right:5px;margin-top:2px}.bd-alert-closebtn:hover{color:#adadad}.bd-alert-body{height:178px}.bd-alert-body a{color:#fff!important}.bd-alert-body .scroller-wrap{height:178px}.bd-alert-body .scroller-wrap .scroller{padding:5px;word-wrap:break-word}.channel-textarea-inner textarea{margin-right:40px}.servericon{width:64px;display:inline-block;background-size:100% auto;height:64px}.serverinfo{display:inline-block}#pubs-container{width:800px;position:fixed;top:50%;left:50%;margin-top:-284.5px;margin-left:-400px;background:#fff;z-index:9000000}#pubs-container .scroller-wrap{height:500px}#pubs-header{background:#7289da;padding:5px 12px 5px 5px}#pubs-header h2{display:inline-block;font-weight:600;color:#fff}#pubs-header input,#pubs-header button{float:right}#pubs-sterm{outline:0!important;padding-left:3px}.bd-dropdown{position:absolute;display:inline-block;width:150px;right:225px}.bd-dropdown button{width:150px}.bd-dropdown .bd-dropdown-list ul{height:0}.bd-dropdown.open .bd-dropdown-list ul{height:140px}.bd-dropdown-list{position:absolute;right:0;top:32px;z-index:90001;width:150px;background:#f3f3f3}.bd-dropdown-list ul{height:0;overflow-y:auto;overflow-x:hidden;transition:all .5s ease-in-out}.bd-dropdown-list ul li{padding:5px;background:#e6e6e6;cursor:pointer;color:#87909c;font-weight:600}.bd-dropdown-list ul li:nth-child(odd){background:#e2e1e1}.bd-dropdown-list ul li:hover{background:#f9f5f5}#pubs-header input{border:0;height:30px;width:150px;color:#555;background-color:#fff;-webkit-transition:width 1s ease-in-out;-moz-transition:width 1s ease-in-out;-o-transition:width 1s ease-in-out;transition:width 1s ease-in-out}#pubs-header button{height:32px;background-color:#f9f9f9;color:#949494}#pubs-footer{height:25px;line-height:25px;background:#7289da}#pubs-footer div{float:right;margin-right:5px;font-weight:600px;color:#fff}#pubs-footer a{color:#fff;text-decoration:none;font-weight:800}#pubs-container .scroller-wrap{margin-top:75px}.server-row{padding:5px;display:flex;background-color:#fff}.server-row:nth-child(odd){background-color:#f3f3f3}.server-icon{width:64px;height:64px;background-size:100% auto}.server-info{display:flex;flex-flow:column;line-height:64px;margin-left:20px}.server-info span{font-size:16px;color:#000;font-weight:600}.server-info a{color:#4056a2;text-decoration:none;font-weight:800;margin-left:5px}.server-info button{width:90px;height:48px;margin-top:8px;background-color:#738bd7;color:#fff;font-size:19px}.server-info button:hover{background-color:#697ec4}.server-information{flex-grow:1;position:relative}.server-name,.server-desription{flex-grow:100}.server-name span{overflow:hidden;text-overflow:ellipsis;max-width:300px;white-space:nowrap}.server-name-span,.server-description{position:absolute;top:0;transition:visibility 0s,opacity .8s linear}.server-official,.server-tags{visibility:visible;opacity:1;transition:visibility 0s,opacity .8s linear}.server-information:hover .server-description{visibility:visible;opacity:1}.server-information:hover .server-name-span{visibility:hidden;opacity:0}.server-information:hover .server-tags{visibility:hidden;opacity:0}.server-information:hover .server-official{visibility:hidden;opacity:0}.server-tags{position:absolute!important;bottom:0!important;height:38px!important;font-size:10px!important;visibility:visible;opacity:1}.server-official{position:absolute!important;top:0!important;height:20px!important;font-size:14px!important;line-height:14px!important;color:#7289da!important;font-weight:700!important;text-shadow:0 0 4px #7289da;visibility:visible;opacity:1;padding-left:2px;padding-right:2px}.server-description{visibility:hidden;opacity:0;font-size:12px!important;line-height:12px!important;text-overflow:initial!important;white-space:inherit!important;overflow-y:auto!important;height:64px!important}.server-region{min-width:85px}.server-pinned{position:absolute;width:777px;padding-right:-10px;padding-right:17px;border-bottom:2px solid #272727}#server-bd-tag{position:absolute!important;bottom:0!important;height:20px!important;line-height:20px!important;font-size:13px!important;font-weight:600!important}#pubs-spinner{position:fixed;top:50%;left:50%;margin-left:-16px;margin-top:-16px}#pubs-container .scroller::-webkit-scrollbar-track-piece,#pubs-container .scroller::-webkit-scrollbar-thumb{border-radius:0}.bd-hide-bd .callout-backdrop{display:none}.bd-detached-editor .app{width:70%}.bd-detached-editor #bd-customcss-detach-container{display:block}#bd-customcss-detach-container{display:none;position:absolute;width:30%;top:0;right:0;bottom:0;background-color:#36393e}#bd-customcss-detach-editor{height:calc(100% - 87px)}#bd-customcss-detach-editor #bd-customcss-innerpane,#bd-customcss-detach-editor .CodeMirror{height:100%}#bd-customcss-detach-controls{background:#e8e8e8;border-top:1px solid #adadad;-webkit-box-shadow:inset 0 1px 0 0 #fff;height:100%;padding:5px}#bd-customcss-detach-controls .checkbox-group li{margin-top:5px;display:inline-block}#bd-customcss-detach-controls button{width:90px;height:30px;margin-top:8px;background-color:#738bd7;color:#fff;font-size:19px}#bd-customcss-detach-controls-buttons{bottom:5px}#editor-detached{margin-top:50px}#editor-detached h3{text-align:center;font-size:30px}#editor-detached .btn{left:50%;margin-left:-100px;margin-top:10px;width:200px;height:60px}#bd-customcss-attach-controls{background:#e8e8e8;border:1px solid #fff;border-top:1px solid #adadad;-webkit-box-shadow:inset 0 1px 0 0 #fff;height:100%;padding:5px;height:75px}#bd-customcss-attach-controls .checkbox-group{margin-bottom:0}#bd-customcss-attach-controls .checkbox-group li{margin-top:5px;display:inline-block}#bd-customcss-attach-controls button{margin:0;width:100px}#bd-customcss-detach-container #bd-customcss-detach-controls-buttons button{width:90px;height:30px;margin-top:8px;background-color:#738bd7;color:#fff;font-size:19px}.emoji-picker,.emojiPicker-3m1S-j{box-shadow:none;border-top:none;border-radius:0 0 5px 5px}#bda-qem{border-radius:5px 5px 0 0;background:#fff;border-bottom:1px solid rgba(0,0,0,.1)!important;height:30px;display:flex;flex-direction:row;padding-right:1px!important}#bda-qem button{border-left:1px solid #efefef;background:0 0;box-shadow:#cecece 1px 0 0 0;flex-grow:1}#bda-qem button:hover{background:#ececec}#bda-qem-twitch{border-radius:5px 0 0 0;order:2}#bda-qem-emojis{border-radius:0 5px 0 0;order:3}#bda-qem-favourite{order:3}#bda-qem button.active{background-color:#e2e2e2}#bda-qem-twitch-container,#bda-qem-favourite-container{width:346px;height:327px;background-color:#fff;border-radius:0 0 5px 5px}#bda-qem-twitch-container .scroller-wrap,#bda-qem-favourite-container .scroller-wrap{height:100%}.emote-menu-inner{padding:5px 0 0 15px}#rmenu{left:25px;display:block!important;cursor:pointer;color:#fff;position:fixed}.bda-qme-hidden #bda-qem-emojis{display:none}.bd-select select{width:100%;margin:0;outline:0;padding:.6em .8em .5em .8em;-webkit-box-sizing:border-box;box-sizing:border-box;font-size:14px;padding-right:2em;background:0 0;border:1px solid transparent!important;-webkit-appearance:none;appearance:none;color:#404040;outline:0!important}.bd-select::after{content:" ";position:absolute;top:50%;right:1em;z-index:2;pointer-events:none;display:none}.bd-select select:focus{border-color:#aaa}.bd-select:focus::after{display:block}.bd-select{position:absolute;right:220px;height:32px;top:5px;border-radius:0;display:inline-block;border:0;border-radius:0;box-shadow:0 1px 0 1px rgba(0,0,0,.04);background:#fff;outline:0!important}.bd-select:before{content:"Category";color:#fff;position:absolute;right:100%;margin-right:5px;line-height:32px}#bd-pane .tab-bar.TOP{margin-bottom:0}#bd-settings-pane{margin-top:18px}#bd-themes-pane .bda-plugin-reload{margin-top:70px}.bda-backdrop{position:absolute;top:0;left:0;right:0;bottom:0;z-index:1000;background:rgba(0,0,0,.5)}.bd-settings{max-width:516px}.bda-dark #bda-qem-favourite-container,.bda-dark #bda-qem-twitch-container{background-color:#353535}.bda-dark #bda-qem{border-bottom:1px solid #464646!important;background:#353535}.bda-dark #bda-qem button{background:#353535;border-left:1px solid #242424;box-shadow:#424242 1px 0 0 0;color:#fff}.bda-dark #bda-qem button.active{background-color:#292929}.bda-dark #bda-qem button:hover{background-color:#303030}.bda-dark #bda-qem-favourite-container,.bda-dark #bda-qem-twitch-container{background-color:#353535}.bda-dark .emoji-picker,.bda-dark .emojiPicker-3m1S-j{background-color:#353535}.bda-dark .emoji-picker .category,.bda-dark .emojiPicker-3m1S-j .category-2U57w6{background-color:#353535}.bda-dark .emoji-picker .header .search-bar,.bda-dark .emojiPicker-3m1S-j .header-1nkwgG .search-bar{background-color:#2b2b2b}.bda-dark .emoji-picker .search-bar input,.bda-dark .emojiPicker-3m1S-j .search-bar input{color:#fff}.bda-dark .emoji-picker .search-bar input::-webkit-input-placeholder,.bda-dark .emojiPicker-3m1S-j .search-bar input::-webkit-input-placeholder{color:#fff}.bda-dark .emoji-picker .scroller .emoji-item.selected,.bda-dark .emojiPicker-3m1S-j .scroller-3vODG7 .emojiItem-109bjA.selected-39BZ4S{background-color:rgba(123,123,123,.37)}.bda-dark .emoji-picker .dimmer.visible,.bda-dark .emojiPicker-3m1S-j .dimmer-3iH-5D.visible-3k45bQ{background-color:rgba(62,62,62,.65)}.bda-dark .emoji-picker .diversity-selector .popout-3sVMXz,.bda-dark .emojiPicker-3m1S-j .diversitySelector-tmmMv0 .popout-2nUePc{background:#353535;border-color:#202020}.bda-dark #bda-qem-twitch-container .scroller::-webkit-scrollbar,.bda-dark #bda-qem-twitch-container .scroller::-webkit-scrollbar-track,.bda-dark #bda-qem-twitch-container .scroller::-webkit-scrollbar-track-piece,.bda-dark #pubs-container .scroller::-webkit-scrollbar,.bda-dark #pubs-container .scroller::-webkit-scrollbar-track,.bda-dark #pubs-container .scroller::-webkit-scrollbar-track-piece{background-color:#303030!important;border-color:#303030!important}.bda-dark #bda-qem-favourite-container .scroller::-webkit-scrollbar,.bda-dark #bda-qem-favourite-container .scroller::-webkit-scrollbar-track,.bda-dark #bda-qem-favourite-container .scroller::-webkit-scrollbar-track-piece{background-color:#303030!important;border-color:#303030!important}.bda-dark .emoji-picker .scroller::-webkit-scrollbar,.bda-dark .emoji-picker .scroller::-webkit-scrollbar-track,.bda-dark .emoji-picker .scroller::-webkit-scrollbar-track-piece,.bda-dark .emojiPicker-3m1S-j .scroller-3vODG7::-webkit-scrollbar,.bda-dark .emojiPicker-3m1S-j .scroller-3vODG7::-webkit-scrollbar-track,.bda-dark .emojiPicker-3m1S-j .scroller-3vODG7::-webkit-scrollbar-track-piece{background-color:#303030!important;border-color:#303030!important}.bda-dark #bda-qem-twitch-container .scroller::-webkit-scrollbar-thumb,.bda-dark #bda-qem-favourite-container .scroller::-webkit-scrollbar-thumb,.bda-dark .emoji-picker .scroller::-webkit-scrollbar-thumb,.bda-dark emojiPicker-3g68GS .scroller-3vODG7::-webkit-scrollbar-thumb,.bda-dark #pubs-container .scroller::-webkit-scrollbar-thumb{border-color:#202020!important;background-color:#202020!important}.bda-dark .server-row{background-color:#36393e}.bda-dark .server-row:nth-child(odd),.bda-dark #pubs-container{background-color:#2e3136}.bda-dark .server-info span{color:#d6d6d6}.bda-dark #pubs-header,.bda-dark #pubs-footer{background:#202020}.bda-dark #pubs-sterm{background:#36393e;color:#fff}.bda-dark #pubs-searchbtn{background:#2e3136}.bda-dark .bd-select{background:#36393e}.bda-dark .server-info button{background-color:#202020}.bda-dark #pubs-cat{color:#fff}.bda-dark .bd-dropdown-select{background-color:#2e3136}.bda-dark .bd-dropdown-list ul li:nth-child(odd){background:#36393e}.bda-dark .bd-dropdown-list ul li{background:#3d4046}.bda-dark .bd-dropdown-list ul li:hover{background:#2d2f33}.bda-dark #pubs-header button{background-color:#2e3136}.bda-dark .bd-dropdown .bd-dropdown-list ul::-webkit-scrollbar,.server-description::-webkit-scrollbar{width:12px}.bda-dark .bd-dropdown .bd-dropdown-list ul::-webkit-scrollbar-track,.server-description::-webkit-scrollbar-track{background:#303030}.bda-dark .bd-dropdown .bd-dropdown-list ul::-webkit-scrollbar-thumb,.server-description::-webkit-scrollbar-thumb{background:#202020}.bd-pfbtn{background:#7289da;color:#fff;border-radius:5px;margin-left:10px}#bd-settings-sidebar .ui-tab-bar-item{font-size:16px;font-weight:500;line-height:20px;text-overflow:ellipsis;white-space:nowrap;cursor:pointer;flex-shrink:0;padding:6px 10px;border-radius:3px;position:relative;overflow:hidden}#bd-settings-sidebar .ui-tab-bar-item.selected{cursor:default}.theme-dark #bd-settings-sidebar .ui-tab-bar-item{color:#b9bbbe}.theme-dark #bd-settings-sidebar .ui-tab-bar-item:hover{background-color:rgba(185,187,190,.1);color:#f6f6f7}.theme-dark #bd-settings-sidebar .ui-tab-bar-item.selected{background-color:#7289da;color:#fff}.theme-light #bd-settings-sidebar .ui-tab-bar-item{color:#72767d}.theme-light #bd-settings-sidebar .ui-tab-bar-item:hover{background-color:rgba(79,84,92,.1);color:#4f545c}.theme-light #bd-settings-sidebar .ui-tab-bar-item.selected{background-color:#7289da;color:#fff}#bd-settings-sidebar .ui-tab-bar-header{font-size:12px;font-weight:700;line-height:16px;text-transform:uppercase;text-overflow:ellipsis;white-space:nowrap;flex-shrink:0;padding:6px 10px;overflow:hidden}.theme-dark #bd-settings-sidebar .ui-tab-bar-header{color:#72767d}.theme-light #bd-settings-sidebar .ui-tab-bar-header{color:#b9bbbe}#bd-settings-sidebar .ui-tab-bar-separator{height:1px;margin:8px 10px}.theme-dark #bd-settings-sidebar .ui-tab-bar-separator{background-color:rgba(114,118,125,.3)}.theme-light #bd-settings-sidebar .ui-tab-bar-separator{background-color:rgba(185,187,190,.3)}#bd-settingspane-container h2.ui-form-title{font-size:16px;font-weight:600;line-height:20px;text-transform:uppercase;display:inline-block;margin-bottom:20px}.theme-dark #bd-settingspane-container h2.ui-form-title{color:#f6f6f7}.theme-light #bd-settingspane-container h2.ui-form-title{color:#4f545c}#bd-settingspane-container .ui-switch-item{flex-direction:column;margin-top:8px}#bd-settingspane-container .ui-switch-item h3{font-size:16px;font-weight:500;line-height:24px;flex:1}.theme-dark #bd-settingspane-container .ui-switch-item h3{color:#f6f6f7}.theme-light #bd-settingspane-container .ui-switch-item h3{color:#4f545c}#bd-settingspane-container .ui-switch-item .style-description{font-size:14px;font-weight:500;line-height:20px;margin-bottom:10px;padding-bottom:10px;border-bottom:1px solid rgba(114,118,126,.3)}.theme-dark #bd-settingspane-container .ui-switch-item .style-description{color:#72767d}.theme-light #bd-settingspane-container .ui-switch-item .style-description{color:rgba(114,118,125,.6)}#bd-settingspane-container .ui-switch-item .ui-switch-wrapper{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;position:relative;width:44px;height:24px;display:block;flex:0 0 auto}#bd-settingspane-container .ui-switch-item .ui-switch-wrapper input{position:absolute;opacity:0;cursor:pointer;width:100%;height:100%;z-index:1}#bd-settingspane-container .ui-switch-item .ui-switch-wrapper .ui-switch{background:#7289da;position:absolute;top:0;right:0;bottom:0;left:0;background:#72767d;border-radius:14px;transition:background .15s ease-in-out,box-shadow .15s ease-in-out,border .15s ease-in-out}#bd-settingspane-container .ui-switch-item .ui-switch-wrapper .ui-switch:before{content:"";display:block;width:18px;height:18px;position:absolute;top:3px;left:3px;bottom:3px;background:#f6f6f7;border-radius:10px;transition:all .15s ease;box-shadow:0 3px 1px 0 rgba(0,0,0,.05),0 2px 2px 0 rgba(0,0,0,.1),0 3px 3px 0 rgba(0,0,0,.05)}#bd-settingspane-container .ui-switch-item .ui-switch-wrapper .ui-switch.checked{background:#7289da}#bd-settingspane-container .ui-switch-item .ui-switch-wrapper .ui-switch.checked:before{transform:translateX(20px)}#pubslayer .ui-tab-bar-item{color:#b9bbbe;padding-top:6px;padding-bottom:6px;margin-bottom:2px;padding:6px 10px;position:relative;font-size:16px;line-height:20px;border-radius:3px;white-space:nowrap;text-overflow:ellipsis;overflow:hidden;flex-shrink:0;font-weight:500;cursor:pointer}#pubslayer .ui-tab-bar-item:hover{color:#f6f6f7;background-color:rgba(186,188,191,.1)}#pubslayer .ui-tab-bar-item.selected{color:#fff;background-color:#7289da}#pubslayer .ui-tab-bar-header{color:#72767d;padding:6px 10px;font-size:12px;line-height:16px;text-transform:uppercase;white-space:nowrap;text-overflow:ellipsis;overflow:hidden;flex-shrink:0;font-weight:500}#pubslayer #bd-settings-sidebar .ui-tab-bar-separator{background-color:rgba(114,118,126,.3);margin-left:10px;margin-right:10px;height:1px;margin-bottom:8px;margin-top:8px}#pubslayer h2.ui-form-title{color:#f6f6f7;text-transform:uppercase;font-weight:600}#pubslayer h5.ui-form-title{color:#f6f6f7}#pubslayer button{background:#7289da;color:#fff;font-size:14px;font-weight:500;line-height:16px;padding:2px 16px;border:0;border-radius:3px;transition:background-color .17s ease}#pubslayer button:hover{background-color:#677bc4}#pubslayer input{color:#f6f6f7;background-color:rgba(0,0,0,.1);border-color:rgba(0,0,0,.3);padding:10px;height:30px;border-width:1px;border-style:solid;border-radius:3px;outline:0;transition:background-color .15s ease,border .15s ease}#bd-settingspane-container .scroller-wrap{height:100%}#bd-settingspane-container .scroller-wrap .scroller{display:flex}.bda-slist{user-select:text}.bda-slist li{max-height:175px;margin-bottom:20px;padding:5px 8px;border:1px solid transparent;border-radius:5px;overflow:hidden}.theme-dark .bda-slist li{background-color:rgba(32,34,37,.6);color:#f6f6f7;border-color:#202225}.theme-light .bda-slist li{background-color:#f8f9f9;color:#4f545c;border-color:#dcddde}.bda-slist li.settings-open{max-height:800px;overflow-y:auto}.bda-slist .bda-header{font-size:12px;font-weight:700;display:flex;align-items:center;justify-content:space-between;padding-bottom:5px;border-bottom:1px solid transparent;overflow:hidden}.theme-dark .bda-slist .bda-header{color:#f6f6f7;border-bottom-color:rgba(114,118,125,.3)}.theme-light .bda-slist .bda-header{color:#4f545c;border-bottom-color:rgba(185,187,190,.3)}.bda-slist .bda-description{word-break:break-word;max-height:100px;margin:5px 0;padding:5px 0;overflow-y:auto}.theme-dark .bda-slist .bda-description{color:#b9bbbe}.theme-light .bda-slist .bda-description{color:#72767d}.bda-slist .scroller::-webkit-scrollbar-track-piece,.bda-slist .scroller::-webkit-scrollbar-thumb{border-radius:0!important;border-color:transparent}.bda-slist .bda-footer{font-size:12px;font-weight:700;display:flex;align-items:center;justify-content:space-between;padding-top:5px;border-top:1px solid transparent;overflow:hidden}.theme-dark .bda-slist .bda-footer{border-top-color:rgba(114,118,125,.3)}.theme-light .bda-slist .bda-footer{border-top-color:rgba(185,187,190,.3)}.bda-slist .bda-footer button{background:#7289da;color:#fff;border-radius:5px;display:block;margin-left:auto;padding:2px 16px;transition:opacity 250ms ease}.bda-slist .bda-footer button:disabled{opacity:.4}.bda-slist .bda-footer a{color:#7289da}.bda-slist .bda-footer a:hover{text-decoration:underline}@keyframes bd-backdrop{to{opacity:.85}}@keyframes bd-modal-wrapper{to{transform:scale(1);opacity:1}}@keyframes bd-backdrop-closing{to{opacity:0}}@keyframes bd-modal-wrapper-closing{to{transform:scale(.7);opacity:0}}.bd-backdrop{animation:bd-backdrop 250ms ease;animation-fill-mode:forwards;opacity:0;background-color:#000;transform:translateZ(0)}.bd-modal-wrapper.closing .bd-backdrop{animation:bd-backdrop-closing 200ms linear;animation-fill-mode:forwards;animation-delay:50ms;opacity:.85}.bd-modal-wrapper.closing .bd-modal{animation:bd-modal-wrapper-closing 250ms cubic-bezier(.19,1,.22,1);animation-fill-mode:forwards;opacity:1;transform:scale(1)}.bd-modal-wrapper .bd-modal{animation:bd-modal-wrapper 250ms cubic-bezier(.175,.885,.32,1.275);animation-fill-mode:forwards;transform:scale(.7);transform-origin:50% 50%;display:flex;align-items:center;box-sizing:border-box;contain:content;justify-content:center;top:0;left:0;bottom:0;right:0;opacity:0;pointer-events:none;position:absolute;z-index:1000}.bd-modal-wrapper .bd-modal-inner{display:flex;contain:layout;flex-direction:column;pointer-events:auto;border:1px solid rgba(28,36,43,.6);border-radius:5px;box-shadow:0 2px 10px 0 rgba(0,0,0,.2);overflow:hidden;max-height:660px;min-height:200px;width:440px;user-select:text}.bd-modal-wrapper .bd-content-modal .bd-modal-inner{height:500px;width:700px}.bd-modal-wrapper .header{background-color:#35393e;box-shadow:0 2px 3px 0 rgba(0,0,0,.2);padding:12px 20px;z-index:1;color:#fff;font-size:16px;font-weight:700;line-height:19px}.bd-modal-wrapper .bd-modal-body{background-color:#36393f;color:#fff;flex-direction:row;overflow:hidden;display:flex;flex-direction:column;flex:1;contain:layout;position:relative}.bd-modal-wrapper .scroller{padding:10px}.bd-modal-wrapper .bd-content-modal .bd-modal-body{padding:0}.bd-modal-wrapper .scroller{overflow-y:auto}.bd-modal-wrapper .footer{display:flex;justify-content:flex-end;padding:10px 20px}.bd-modal-wrapper .footer button{background-color:#7289da;color:#fff;min-height:32px;min-width:60px;align-items:center;border-radius:3px;display:flex;font-size:14px;font-weight:500;justify-content:center;line-height:16px;padding:2px 16px;user-select:none}.bd-modal-wrapper .footer button:hover{background-color:#677bc4}.bd-modal-wrapper .footer button:active{background-color:#5f6fb9}.bd-modal-wrapper .tab-bar-container{align-items:center;border-bottom:0;background:rgba(0,0,0,.2);box-shadow:0 2px 3px 0 rgba(0,0,0,.1);display:flex;flex-direction:row;justify-content:space-between;margin-bottom:15px}.bd-modal-wrapper .tab-bar.TOP{margin:0;border:0}.bd-modal-wrapper .tab-bar-container .tab-bar-item{margin:0 15px;padding:15px 0;color:#fff!important;opacity:.5;transition:opacity 200ms ease}.bd-modal-wrapper .tab-bar-container .tab-bar-item:hover{border-color:#fff}.bd-modal-wrapper .tab-bar-container .tab-bar-item.selected{opacity:1;border-color:#fff}.bd-modal-wrapper .tab-bar.TOP .tab-bar-item+.tab-bar-item{margin:0}.bd-modal-wrapper .table-header{display:flex;justify-content:space-between;color:#fff;font-weight:700;padding-bottom:10px;margin:3px 15px 0 15px;border-bottom:1px solid #fff;font-size:14px}.bd-modal-wrapper .table-column{width:25%}.bd-modal-wrapper .table-column.column-error{width:50%}.bd-modal-wrapper .table-column{word-wrap:break-word}.bd-modal-wrapper .errors{display:flex;flex-direction:column;padding:0;font-size:14px;padding:0 5px}.bd-modal-wrapper .error{display:flex;color:#fff;border-bottom:1px solid rgba(255,255,255,.25);padding:15px 0;align-items:center}.bd-modal-wrapper .bd-content-modal .scroller{padding-top:0}.bd-toasts{position:fixed;display:flex;top:0;flex-direction:column;align-items:center;justify-content:flex-end;pointer-events:none;z-index:4000}@keyframes bd-toast-up{0%{transform:translateY(0);opacity:0}}.bd-toast{animation:bd-toast-up 300ms ease;transform:translateY(-10px);background:#36393f;padding:10px;border-radius:5px;box-shadow:0 0 0 1px rgba(32,34,37,.6),0 2px 10px 0 rgba(0,0,0,.2);font-weight:500;color:#fff;user-select:text;font-size:14px;opacity:1;margin-top:10px;pointer-events:none;user-select:none}@keyframes bd-toast-down{to{transform:translateY(0);opacity:0}}.bd-toast.closing{animation:bd-toast-down 200ms ease;animation-fill-mode:forwards;opacity:1;transform:translateY(-10px)}.bd-toast.icon{padding-left:30px;background-size:20px 20px;background-repeat:no-repeat;background-position:6px 50%}.bd-toast.toast-info{background-color:#4a90e2}.bd-toast.toast-info.icon{background-image:url(data:image/svg+xml;base64,PHN2ZyBmaWxsPSIjRkZGRkZGIiBoZWlnaHQ9IjI0IiB2aWV3Qm94PSIwIDAgMjQgMjQiIHdpZHRoPSIyNCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4gICAgPHBhdGggZD0iTTAgMGgyNHYyNEgweiIgZmlsbD0ibm9uZSIvPiAgICA8cGF0aCBkPSJNMTIgMkM2LjQ4IDIgMiA2LjQ4IDIgMTJzNC40OCAxMCAxMCAxMCAxMC00LjQ4IDEwLTEwUzE3LjUyIDIgMTIgMnptMSAxNWgtMnYtNmgydjZ6bTAtOGgtMlY3aDJ2MnoiLz48L3N2Zz4=)}.bd-toast.toast-success{background-color:#43b581}.bd-toast.toast-success.icon{background-image:url(data:image/svg+xml;base64,PHN2ZyBmaWxsPSIjRkZGRkZGIiBoZWlnaHQ9IjI0IiB2aWV3Qm94PSIwIDAgMjQgMjQiIHdpZHRoPSIyNCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4gICAgPHBhdGggZD0iTTAgMGgyNHYyNEgweiIgZmlsbD0ibm9uZSIvPiAgICA8cGF0aCBkPSJNMTIgMkM2LjQ4IDIgMiA2LjQ4IDIgMTJzNC40OCAxMCAxMCAxMCAxMC00LjQ4IDEwLTEwUzE3LjUyIDIgMTIgMnptLTIgMTVsLTUtNSAxLjQxLTEuNDFMMTAgMTQuMTdsNy41OS03LjU5TDE5IDhsLTkgOXoiLz48L3N2Zz4=)}.bd-toast.toast-danger,.bd-toast.toast-error{background-color:#f04747}.bd-toast.toast-danger.icon,.bd-toast.toast-error.icon{background-image:url(data:image/svg+xml;base64,PHN2ZyBmaWxsPSIjRkZGRkZGIiBoZWlnaHQ9IjI0IiB2aWV3Qm94PSIwIDAgMjQgMjQiIHdpZHRoPSIyNCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4gICAgPHBhdGggZD0iTTEyIDJDNi40NyAyIDIgNi40NyAyIDEyczQuNDcgMTAgMTAgMTAgMTAtNC40NyAxMC0xMFMxNy41MyAyIDEyIDJ6bTUgMTMuNTlMMTUuNTkgMTcgMTIgMTMuNDEgOC40MSAxNyA3IDE1LjU5IDEwLjU5IDEyIDcgOC40MSA4LjQxIDcgMTIgMTAuNTkgMTUuNTkgNyAxNyA4LjQxIDEzLjQxIDEyIDE3IDE1LjU5eiIvPiAgICA8cGF0aCBkPSJNMCAwaDI0djI0SDB6IiBmaWxsPSJub25lIi8+PC9zdmc+)}.bd-toast.toast-warning,.bd-toast.toast-warn{background-color:#ffa600;color:#fff}.bd-toast.toast-warning.icon,.bd-toast.toast-warn.icon{background-image:url(data:image/svg+xml;base64,PHN2ZyBmaWxsPSIjRkZGRkZGIiBoZWlnaHQ9IjI0IiB2aWV3Qm94PSIwIDAgMjQgMjQiIHdpZHRoPSIyNCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4gICAgPHBhdGggZD0iTTAgMGgyNHYyNEgweiIgZmlsbD0ibm9uZSIvPiAgICA8cGF0aCBkPSJNMSAyMWgyMkwxMiAyIDEgMjF6bTEyLTNoLTJ2LTJoMnYyem0wLTRoLTJ2LTRoMnY0eiIvPjwvc3ZnPg==)}.bd-blue .bd-pfbtn{background:#3a71c1}.bd-blue .bot-tag{background:#3a71c1}.bd-blue .bot-tag.bot-tag-invert{color:#3a71c1!important}.bd-blue .spinner-wandering-cubes .spinner-item{background-color:#3a71c1}.bd-blue .spinner-chasing-dots .spinner-item{background-color:#3a71c1}.bd-blue .spinner.spinner-spinning-circle .path{stroke:#3a71c1}.bd-blue .note textarea::-moz-selection{background:#3a71c1}.bd-blue .note textarea::selection{background:#3a71c1}.bd-blue .scroller-wrap .scrollbar .thumb:after{background-color:#3a71c1}.bd-blue #autocomplete-popout .empty h4{color:#3a71c1}.bd-blue .user-popout .header{background:#3a71c1 url(/assets/8cd2f31a12333149b89ef3931626ab83.png)}.bd-blue .checkbox .checkbox-inner input[type=checkbox]:checked+span{background-color:#3a71c1;border-color:#3a71c1}.bd-blue .checkbox .checkbox-inner.alt input[type=checkbox]:checked+span:after{border-color:#3a71c1}.bd-blue .download-apps .footer a{color:#3a71c1}.bd-blue .download-apps .platforms .platform.active{border-color:#3a71c1}.bd-blue .download-apps .platforms .platform.active .download-button{background-color:#3a71c1}.bd-blue .radio .radio-inner span:after{background:#3a71c1}.bd-blue .radio:hover span:after{background:#3a71c1}.bd-blue .radio-image .radio-inner span:after{border:2px solid #3a71c1}.bd-blue .radio-image:hover span:after{border-color:#3a71c1}.bd-blue #overlay-wrapper .overlay .guild-panel .guild-panel-header{background-color:#3a71c1}.bd-blue #overlay-wrapper .overlay .guild-panel .btn-call{color:#3a71c1}.bd-blue .overlay-user-popout .user-popout-options .btn{background-color:#3a71c1}.bd-blue .clipboard-input-inner input::-moz-selection{background:#3a71c1}.bd-blue .clipboard-input-inner input::selection{background:#3a71c1}.bd-blue .btn-help:hover{background:#3a71c1}.bd-blue .popout-3sVMXz.popoutLeft-30WmrD header:before{border-left-color:#3a71c1}.bd-blue .popout-3sVMXz.popout-right header:before{border-right-color:#3a71c1}.bd-blue .popout-3sVMXz.popoutBottom-1YbShG header:before{border-bottom-color:#3a71c1}.bd-blue .popout-3sVMXz.popoutInvert-3UdKhn:not(.popoutBottom-1YbShG).popoutTop-3uu9vG header:before{border-top-color:#3a71c1}.bd-blue .guild-channels .channel-text.selected:before{border-left:2px solid #3a71c1}.bd-blue .guild-channels .channel-text:hover:not(.unread):before{border-left:2px solid #3a71c1}.bd-blue .guild-channels .channel-text.unread:not(.selected):not(.channel-muted).selected:before{background-color:#3a71c1}.bd-blue .guild-channels .channel-voice-states li.speaking .avatar-small{background-color:#3a71c1}.bd-blue .tooltip{background-color:#3a71c1}.bd-blue .tooltip.tooltip-top:after{border-top-color:#3a71c1}.bd-blue .tooltip.tooltip-bottom:after{border-bottom-color:#3a71c1}.bd-blue .tooltip.tooltip-left:after{border-left-color:#3a71c1}.bd-blue .tooltip.tooltip-right:after{border-right-color:#3a71c1}.bd-blue .button{background-color:#3a71c1}.bd-blue .tutorial-popout .button-area .skip-tips a{color:#3a71c1}.bd-blue .chat .has-more button{color:#3a71c1}.bd-blue .chat .new-messages-bar:hover{background-color:#3a71c1}.bd-blue .message-group .edit-message .edit-operation>a{color:#3a71c1}.bd-blue .message-group .edit-message .channel-textarea-inner{border-color:#3a71c1}.bd-blue .mention{color:#3a71c1}.bd-blue .mention:hover{background-color:#3a71c1}.bd-blue .mentioned .mention:hover{color:#3a71c1}.bd-blue .markdown-modal .markdown-modal-header b{color:#3a71c1}.bd-blue .change-log .changelog-fixed{background-color:#3a71c1}.bd-blue .change-log .changelog-button .cta{background-color:#3a71c1}.bd-blue .form .form-header{color:#3a71c1}.bd-blue .form header{color:#3a71c1}.bd-blue .form .control-group textarea:focus{border-bottom:2px solid #3a71c1}.bd-blue .form .btn-primary{background-color:#3a71c1}.bd-blue .region-select button{color:#3a71c1}.bd-blue .region-select:hover button{border-color:#3a71c1}.bd-blue .region-select:hover button{background-color:#3a71c1}.bd-blue .region-select-flag{background-color:#3a71c1}.bd-blue .region-select-flag.vip:after{background:#3a71c1}.bd-blue .region-select-modal .region-select-modal-header{color:#3a71c1}.bd-blue .region-select-modal .region-select-modal-option:hover{border-color:#3a71c1}.bd-blue .upload-drop-modal .bgScale{background:#3a71c1}.bd-blue .upload-modal{background-color:#3a71c1}.bd-blue .upload-modal .inner .file .icon.image{border:2px solid #3a71c1}.bd-blue .avatar-uploader-inner{background-color:#3a71c1}.bd-blue .create-guild-container h5{color:#3a71c1}.bd-blue .create-guild-container .join-server .sample-link{color:#3a71c1}.bd-blue .create-guild-container .action.create .action-header{color:#3a71c1}.bd-blue .tab-bar.TOP .tab-bar-item.selected{border-bottom:2px solid #3a71c1;color:#3a71c1}.bd-blue .tab-bar.SIDE .tab-bar-item:before{border-left:4px solid #3a71c1}.bd-blue .color-picker-popout input:focus{border-color:#3a71c1}.bd-blue #settings-roles .roles li.selected:before{color:#3a71c1;background-color:#3a71c1}.bd-blue #settings-roles .roles li.sorting:after{border:2px solid #3a71c1}.bd-blue .guild-settings-modal-overview a{color:#3a71c1}.bd-blue .need-help-modal .header{background-color:#3a71c1}.bd-blue .search-popout .date-picker .date-picker-hint .hint-value{background-color:#3a71c1}.bd-blue .react-datepicker .react-datepicker__day:hover{background-color:#3a71c1}.bd-blue .react-datepicker .react-datepicker__day.react-datepicker__day--today:after{background-color:#3a71c1}.bd-blue .messages-popout-wrap .has-more button{color:#3a71c1}.bd-blue .btn-filled{background-color:#3a71c1}.bd-blue .btn-filled.white{color:#3a71c1}.bd-blue .emoji-picker .premium-promo .btn{background-color:#3a71c1}.bd-blue .emojiPicker-3m1S-j .premium-promo .btn{background-color:#3a71c1}.bd-blue .channel-textarea.has-results .channel-textarea-inner{border-color:#3a71c1}.bd-blue .channel-textarea-autocomplete-inner{border:2px solid #3a71c1}.bd-blue .channel-textarea-autocomplete-inner header{background-color:#3a71c1}.bd-blue .channel-textarea-autocomplete-inner ul.images li.active{border-color:#3a71c1}.bd-blue .reaction.reaction-me .reaction-count{color:#3a71c1}.bd-blue .theme-dark .reaction.reaction-me .reaction-count{color:#3a71c1}.bd-blue .spinner-wandering-cubes .ui-spinner-item{background-color:#3a71c1}.bd-blue .spinner-chasing-dots .ui-spinner-item{background-color:#3a71c1}.bd-blue .theme-light .ui-spinner.spinner-spinning-circle .path{stroke:#3a71c1}.bd-blue .theme-dark .ui-spinner.spinner-spinning-circle .path{stroke:#3a71c1}.bd-blue .theme-dark .ui-spinner.spinner-spinning-circle .path-2{stroke:#3a71c1}.bd-blue .ui-button.brand.filled{background-color:#3a71c1}.bd-blue .ui-button.brand.filled:disabled{background-color:#3a71c1}.bd-blue .ui-button.brand.inverted{color:#3a71c1}.bd-blue .ui-button.brand.outlined{color:#3a71c1}.bd-blue .ui-button.brand.outlined:active{background-color:#3a71c1;border-color:#3a71c1}.bd-blue .ui-button.brand.outlined:disabled{color:#3a71c1}.bd-blue .ui-button.brand.link{color:#3a71c1}.bd-blue .ui-button.brand.link:not(:disabled):hover .ui-button-contents{background-image:-webkit-linear-gradient(bottom,transparent,transparent 1px,#3a71c1 0,#3a71c1 2px,transparent 0);background-image:linear-gradient(to top,transparent,transparent 1px,#3a71c1 1px,#3a71c1 2px,transparent 2px)}.bd-blue .ui-button.brand.ghost{color:#3a71c1}.bd-blue .ui-button.brand .ui-spinner-item{background-color:#3a71c1}.bd-blue .theme-blurple .ui-button.primary.filled{color:#3a71c1}.bd-blue .theme-blurple .ui-form-title.h5{color:#3a71c1}.bd-blue .btn-filled{background-color:#3a71c1}.bd-blue .btn-filled.white{color:#3a71c1}.bd-blue .progress .progress-bar{background-color:#3a71c1}.bd-blue .radio-theme input[type=radio]:checked~label{border-color:#3a71c1}.bd-blue .now-playing{background:#3a71c1}.bd-blue .user-settings-modal-account .discord-tag{color:#3a71c1}.bd-blue .modal-new-user>.steps .step-3 .instant-invite input{color:#3a71c1}.bd-blue .modal-new-user h5{color:#3a71c1}.bd-blue .modal-new-user .steps-wrap .steps li.on:before{background-color:#3a71c1}.bd-blue .modal-new-user .steps-wrap .steps li.active{background-color:#3a71c1}.bd-blue .ui-tab-bar.SIDE .ui-tab-bar-item.selected{background-color:#3a71c1}.bd-blue .ui-tab-bar.SIDE .ui-tab-bar-item:active{background-color:#3a71c1}.bd-blue .ui-tab-bar.SIDE .ui-tab-bar-item.brand{color:#3a71c1}.bd-blue .theme-light .ui-text-input .input:focus{border-color:#3a71c1}.bd-blue .theme-dark .ui-text-input .input:focus{border-color:#3a71c1}.bd-blue .theme-blurple .ui-text-input .input{color:#3a71c1}.bd-blue .theme-blurple .ui-text-input .input:hover{border-color:#3a71c1}.bd-blue .theme-blurple .ui-select:hover .Select .Select-control{border-color:#3a71c1}.bd-blue .theme-blurple .ui-select:hover .Select .Select-control .Select-arrow{border-color:#3a71c1 transparent transparent}.bd-blue .theme-blurple .ui-select .Select.is-open .Select-control{border-color:#3a71c1}.bd-blue .theme-blurple .ui-select .Select-menu-outer{border-color:#3a71c1}.bd-blue .theme-blurple .ui-select .Select-menu-outer .Select-option{color:#3a71c1}.bd-blue .theme-blurple .ui-select .Select-value-label{color:#3a71c1}.bd-blue .ui-card-brand{background:#3a71c1;border-color:#3a71c1}.bd-blue .ui-checkbox-wrapper .ui-checkbox.checked polyline{stroke:#3a71c1}.bd-blue .ui-checkbox-wrapper .ui-checkbox.checked.inverted{background:#3a71c1}.bd-blue .ui-region-flag.vip:after{background:#3a71c1}.bd-blue .ui-scroller-wrap .scrollbar .thumb:after{background-color:#3a71c1}.bd-blue .ui-quick-select-popout-option .ui-icon-check-mark .ui-icon-fg{stroke:#3a71c1}.bd-blue .ui-switch-checkbox:checked+.ui-switch{background:#3a71c1}.bd-blue #instant-invite-modal .clipboard-input-inner input{color:#3a71c1}.bd-blue #instant-invite-modal .copy{background-color:#3a71c1}.bd-blue .color-brand{color:#3a71c1}.bd-blue .webkhook-modal-header.ui-form-title.h5{color:#3a71c1}.bd-blue .ui-bot-tag{background:#3a71c1}.bd-blue .ui-bot-tag.invert{color:#3a71c1}.bd-blue #user-profile-modal .btn{background-color:#3a71c1}.bd-blue #user-profile-modal .guilds .avatar-large{background-color:#3a71c1}.bd-blue .premium-payment-modal{background-color:#3a71c1}.bd-blue .premium-payment-modal .premium-payment-button{color:#3a71c1}.bd-blue .premium-payment-modal .premium-payment-button .spinner .spinner-item{background-color:#3a71c1}.bd-blue .invite-modal .avatar-xxxlarge{background-color:#3a71c1}.bd-blue .ui-screenshare-modal-tile .image-container img.selected{border-color:#3a71c1}.bd-blue .detected-platform-accounts-modal .btn-group .btn-primary{background-color:#3a71c1}.bd-blue .ui-new-terms-modal .title{color:#3a71c1}.bd-blue #oauth2-authorize .authorize-inner header{background:#3a71c1}.bd-blue #oauth2-authorize .authorize-inner footer button.primary{background:#3a71c1}.bd-blue #oauth2-authorize .select select:focus{border-color:#3a71c1}.bd-blue #oauth2-authorize .select.focus:after{border-top-color:#3a71c1}.bd-blue #oauth2-authorize .scope-bot .avatar-large{background-color:#3a71c1}.bd-blue .invite-header .invite-guild-icon{background-color:#3a71c1}.bd-blue .invite-marketing .invite-marketing-header{color:#3a71c1}.bd-blue .invite-marketing .invite-marketing-button{color:#3a71c1;border:2px solid #3a71c1}.bd-blue .invite-mobile .top{background-color:#3a71c1}.bd-blue .invite-mobile .link.purple{background-color:#3a71c1}.bd-blue .verify-connected-account .btn{background-color:#3a71c1}.bd-blue #unsupported-browser li:hover{border-color:#3a71c1}.bd-blue #unsupported-browser li:hover .btn{background-color:#3a71c1;border-color:#3a71c1}.bd-blue .ui-slider .slider-bar-fill{background:#3a71c1}.bd-blue .popout-menu .popout-menu-item.invite{color:#3a71c1}.bd-blue .channel-members .invite-btn{background-color:#3a71c1}.bd-blue .chat .welcome-message h1{color:#3a71c1}.bd-blue .channel-textarea-guard button{background-color:#3a71c1}.bd-blue .private-channel-recipients-invite .footer button{background-color:#3a71c1}.bd-blue .private-channel-recipients-invite .footer button:disabled:hover{background-color:#3a71c1}.bd-blue .private-channel-recipients-invite .error-state.not-friends .btn{background:#3a71c1}.bd-blue .ui-call-avatar-border.voice.video.selected{box-shadow:inset 0 0 0 2px #3a71c1}.bd-blue .ui-call-avatar-border.video.selected:not(.speaking){box-shadow:inset 0 0 0 2px #3a71c1}.bd-blue .invite-banner{background-color:#3a71c1}.bd-blue .invite-banner .instant-invite:not(.clipboard-input-copied) .clipboard-input-inner button{color:#3a71c1}.bd-blue .invite-banner.invite-banner-1 .instant-invite .clipboard-input-inner button:before{background:-webkit-linear-gradient(left,rgba(255,255,255,0),#3a71c1);background:linear-gradient(to right,rgba(255,255,255,0),#3a71c1)}.bd-blue .add-friend-input-wrapper .btn:disabled{background-color:#3a71c1}.bd-blue #friends .btn{background-color:#3a71c1}.bd-blue #friends .friends-header .tab-bar .tab-bar-item.tab-bar-item-primary{background-color:#3a71c1}.bd-blue #friends .friends-header .tab-bar .tab-bar-item.tab-bar-item-primary .badge{color:#3a71c1}.bd-blue #friends .friends-table .friends-row .friends-column-guilds .avatar-small{background-color:#3a71c1}.bd-blue .theme-dark #friends .friends-header .tab-bar .tab-bar-item.selected .badge{background-color:#3a71c1}.bd-blue .theme-dark #friends .friends-header .tab-bar .tab-bar-item.tab-bar-item-primary{background-color:#3a71c1}.bd-blue .theme-dark #friends .friends-header .tab-bar .tab-bar-item.tab-bar-item-primary .badge{color:#3a71c1}.bd-blue .theme-dark #friends .friends-header .tab-bar .tab-bar-item.tab-bar-item-primary.selected{color:#3a71c1;background-color:#fff}.bd-blue .theme-dark #friends .friends-header .tab-bar .tab-bar-item.tab-bar-item-primary.selected .badge{background-color:#3a71c1}.bd-blue .private-channels .search-result:hover:before{border-left:2px solid #3a71c1}.bd-blue .private-channels .channel.selected .icon-friends{background-color:#3a71c1}.bd-blue .private-channels .channel.selected:before{border-left:2px solid #3a71c1}.bd-blue #rtc-debug-modal #users-section .user-list li.selected:before{color:#3a71c1;background-color:#3a71c1}.bd-blue .notice.notice-brand{background-color:#3a71c1}.bd-blue .notice.notice-brand .btn:hover{color:#3a71c1}.bd-blue .theme-light .ui-text-input .input:focus{border-color:#3a71c1}.bd-blue .theme-dark .ui-text-input .input:focus{border-color:#3a71c1}.bd-blue .theme-blurple .ui-text-input .input{color:#3a71c1}.bd-blue .theme-blurple .ui-text-input .input:hover{border-color:#3a71c1}.bd-blue .onboarding-slide textarea:focus{box-shadow:0 2px 0 #3a71c1}.bd-blue .nuf-page .button.filled{background-color:#3a71c1}.bd-blue .onboarding-navigation .button{color:#3a71c1}.bd-blue .onboarding-navigation .step-status .step.current{background-color:#3a71c1}.bd-blue .onboarding-slide textarea:focus{box-shadow:0 2px 0 #3a71c1}.bd-blue .nuf-page .button.filled{background-color:#3a71c1}.bd-blue .onboarding-slide textarea:focus{box-shadow:0 2px 0 #3a71c1}.bd-blue .nuf-page .button.filled{background-color:#3a71c1}.bd-blue .onboarding-slide textarea:focus{box-shadow:0 2px 0 #3a71c1}.bd-blue .nuf-page .button.filled{background-color:#3a71c1}.bd-blue .onboarding-slide textarea:focus{box-shadow:0 2px 0 #3a71c1}.bd-blue .nuf-page .button.filled{background-color:#3a71c1}.bd-blue .onboarding-slide textarea:focus{box-shadow:0 2px 0 #3a71c1}.bd-blue .nuf-page .button.filled{background-color:#3a71c1}.bd-blue .onboarding-slide textarea:focus{box-shadow:0 2px 0 #3a71c1}.bd-blue .nuf-page .button.filled{background-color:#3a71c1}.bd-blue .onboarding-slide.mic-test .content.waiting .button{color:#3a71c1}.bd-blue .onboarding-slide textarea:focus{box-shadow:0 2px 0 #3a71c1}.bd-blue .nuf-page .button.filled{background-color:#3a71c1}.bd-blue .onboarding-slide textarea:focus{box-shadow:0 2px 0 #3a71c1}.bd-blue .nuf-page .button.filled{background-color:#3a71c1}.bd-blue .onboarding-slide textarea:focus{box-shadow:0 2px 0 #3a71c1}.bd-blue .nuf-page .button.filled{background-color:#3a71c1}.bd-blue .ui-switch-wrapper:not(.disabled):not(.clear):hover .ui-switch-checkbox:checked+.ui-switch{background:#3f79ce}.bd-blue [style*="border-color: rgb(114, 137, 218)"]{border-color:#3a71c1!important}.bd-blue [style*="background-color: rgb(114, 137, 218)"]{background-color:#3a71c1!important}.bd-blue .bda-slist .bda-footer button{background-color:#3a71c1}.bd-blue .bda-slist .bda-footer a{color:#3a71c1}.bd-blue .bd-modal-wrapper .footer button{background-color:#3a71c1}.bd-blue .bd-modal-wrapper .footer button:hover{background-color:#356bbb}.bd-blue .bd-modal-wrapper .footer button:active{background-color:#2a61b1}
\ No newline at end of file
diff --git a/js/main.js b/js/main.js
index 39f1a830..72477860 100644
--- a/js/main.js
+++ b/js/main.js
@@ -62,7 +62,7 @@
(() => {
let v2Loader = document.createElement("div");
v2Loader.className = "bd-loaderv2";
- v2Loader.title = "BetterDiscord is loading...";
+ v2Loader.title = "BandagedBD is loading...";
document.body.appendChild(v2Loader);
})();
@@ -139,6 +139,14 @@ var DataStore = (() => {
};
})();
+var BDEvents = (() => {
+ const EventEmitter = require("events");
+ return new class BDEvents extends EventEmitter {
+ dispatch(eventName, ...args) {this.emit(eventName, ...args);}
+ off(eventName, eventAction) {this.removeListener(eventName, eventAction);}
+ };
+})();
+
window.bdStorage = class bdPluginStorage {
@@ -161,7 +169,7 @@ window.bdPluginStorage = class bdPluginStorage {
static set(pluginName, key, data) {
Utils.warn("[Deprecation Notice] Please use BdApi.saveData() or BdApi.setData(). bdPluginStorage may be removed in future versions.");
- if (typeof(value) === "undefined") return Utils.warn("Trying to set undefined value in plugin " + pluginName);
+ if (typeof(data) === "undefined") return Utils.warn("Trying to set undefined value in plugin " + pluginName);
DataStore.setPluginData(pluginName, key, data);
}
@@ -195,7 +203,7 @@ var settings = {
"Developer Mode": {id: "bda-gs-8", info: "Developer Mode", implemented: true, hidden: false, cat: "core"},
- "Startup Error Modal": {id: "fork-ps-1", info: "Show a modal with plugin/theme errors on startup", implemented: true, hidden: false, cat: "fork"},
+ "Content Error Modal": {id: "fork-ps-1", info: "Shows a modal with plugin/theme errors", implemented: true, hidden: false, cat: "fork"},
"Show Toasts": {id: "fork-ps-2", info: "Shows a small notification for important information", implemented: true, hidden: false, cat: "fork"},
"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: true, hidden: false, cat: "fork"},
"Animate On Hover": {id: "fork-es-2", info: "Only animate the emote modifiers on hover", implemented: true, hidden: false, cat: "fork"},
@@ -329,7 +337,7 @@ Core.prototype.init = async function() {
// Show loading errors
if (settingsCookie["fork-ps-1"]) {
Utils.log("Collecting Startup Errors");
- this.showStartupErrors({plugins: bdpluginErrors, themes: bdthemeErrors});
+ this.showContentErrors({plugins: bdpluginErrors, themes: bdthemeErrors});
}
if (!DataStore.getBDData("RNMAnnouncement")) {
@@ -353,8 +361,9 @@ Core.prototype.checkForGuilds = function() {
});
};
-Core.prototype.injectExternals = function() {
- Utils.injectJs("https://cdnjs.cloudflare.com/ajax/libs/ace/1.2.9/ace.js");
+Core.prototype.injectExternals = async function() {
+ await Utils.injectJs("https://cdnjs.cloudflare.com/ajax/libs/ace/1.2.9/ace.js");
+ if (require.original) window.require = require.original;
};
Core.prototype.initSettings = function () {
@@ -483,14 +492,14 @@ Core.prototype.alert = function(title, content) {
modal.appendTo("#app-mount");
};
-Core.prototype.showStartupErrors = function({plugins: pluginErrors, themes: themeErrors}) {
+Core.prototype.showContentErrors = function({plugins: pluginErrors = [], themes: themeErrors = []}) {
if (!pluginErrors || !themeErrors) return;
if (!pluginErrors.length && !themeErrors.length) return;
let modal = $(`
-
+
-
+
@@ -500,7 +509,7 @@ Core.prototype.showStartupErrors = function({plugins: pluginErrors, themes: them
@@ -521,7 +530,7 @@ Core.prototype.showStartupErrors = function({plugins: pluginErrors, themes: them
for (let err of errors) {
let error = $(`
${err.name ? err.name : err.file}
-
${err.reason}
+
${err.message}
`);
container.append(error);
@@ -1170,10 +1179,13 @@ var Utils = class {
}
static injectJs(uri) {
- $("", {
- type: "text/javascript",
- src: uri
- }).appendTo($("body"));
+ return new Promise(resolve => {
+ $("", {
+ type: "text/javascript",
+ src: uri,
+ onload: resolve
+ }).appendTo($("body"));
+ });
}
static escapeID(id) {
@@ -1181,15 +1193,15 @@ var Utils = class {
}
static log(message) {
- console.log("%c[BetterDiscord] %c" + message + "", "color: #3a71c1; font-weight: 700;", "");
+ console.log("%c[BandagedBD] %c" + message + "", "color: #3a71c1; font-weight: 700;", "");
}
static warn(message) {
- console.warn("%c[BetterDiscord] %c" + message + "", "color: #E8A400; font-weight: 700;", "");
+ console.warn("%c[BandagedBD] %c" + message + "", "color: #E8A400; font-weight: 700;", "");
}
static err(message, error) {
- console.log("%c[BetterDiscord] %c" + message + "", "color: red; font-weight: 700;", "");
+ console.log("%c[BandagedBD] %c" + message + "", "color: red; font-weight: 700;", "");
if (error) {
console.groupCollapsed("%cError: " + error.message, "color: red;");
console.error(error.stack);
@@ -1324,7 +1336,7 @@ var ContentManager = (() => {
this.name = "MetaError";
}
}
- const originalJSRequire = require("module").Module._extensions[".js"];
+ const originalJSRequire = Module._extensions[".js"];
const originalCSSRequire = Module._extensions[".css"] ? Module._extensions[".css"] : () => {return null;};
@@ -1353,8 +1365,8 @@ var ContentManager = (() => {
catch (err) {
if (err.code !== "ENOENT") return;
delete this.timeCache[filename];
- if (isPlugin) return pluginModule.unloadPlugin(Object.values(bdplugins).find(p => p.filename == filename).plugin.getName());
- return themeModule.unloadTheme(Object.values(bdthemes).find(p => p.filename == filename).name);
+ if (isPlugin) return pluginModule.unloadPlugin(filename);
+ return themeModule.unloadTheme(filename);
}
if (!fs.statSync(path.resolve(baseFolder, filename)).isFile()) return;
const stats = fs.statSync(path.resolve(baseFolder, filename));
@@ -1367,8 +1379,8 @@ var ContentManager = (() => {
else themeModule.loadTheme(filename);
}
if (eventType == "change") {
- if (isPlugin) pluginModule.reloadPlugin(Object.values(bdplugins).find(p => p.filename == filename).plugin.getName());
- else themeModule.reloadTheme(Object.values(bdthemes).find(p => p.filename == filename).name);
+ if (isPlugin) pluginModule.reloadPlugin(filename);
+ else themeModule.reloadTheme(filename);
}
});
}
@@ -1434,7 +1446,7 @@ var ContentManager = (() => {
const isPlugin = type === "plugin";
const baseFolder = isPlugin ? this.pluginsFolder : this.themesFolder;
try {require(path.resolve(baseFolder, filename));}
- catch (error) {return {name: filename, file: filename, reason: "Could not be compiled.", error: {message: error.message, stack: error.stack}};}
+ catch (error) {return {name: filename, file: filename, message: "Could not be compiled.", error: {message: error.message, stack: error.stack}};}
const content = require(path.resolve(baseFolder, filename));
if (isPlugin) {
if (!content.type) return;
@@ -1443,7 +1455,7 @@ var ContentManager = (() => {
delete bdplugins[content.plugin.getName()];
bdplugins[content.plugin.getName()] = content;
}
- catch (error) {return {name: filename, file: filename, reason: "Could not be constructed.", error: {message: error.message, stack: error.stack}};}
+ catch (error) {return {name: filename, file: filename, message: "Could not be constructed.", error: {message: error.message, stack: error.stack}};}
}
else {
delete bdthemes[content.name];
@@ -1456,21 +1468,22 @@ var ContentManager = (() => {
const isPlugin = type === "plugin";
const baseFolder = isPlugin ? this.pluginsFolder : this.themesFolder;
try {
- delete require.original.cache[require.original.resolve(path.resolve(baseFolder, filename))];
+ delete require.cache[require.resolve(path.resolve(baseFolder, filename))];
}
- catch (err) {return err;}
+ catch (err) {return {name: filename, file: filename, message: "Could not be unloaded.", error: {message: err.message, stack: err.stack}};}
}
isLoaded(filename, type) {
const isPlugin = type === "plugin";
const baseFolder = isPlugin ? this.pluginsFolder : this.themesFolder;
- try {require.original.cache[require.original.resolve(path.resolve(baseFolder, filename))];}
+ try {require.cache[require.resolve(path.resolve(baseFolder, filename))];}
catch (err) {return false;}
return true;
}
reloadContent(filename, type) {
- if (this.unloadContent(filename, type)) return;
+ const cantUnload = this.unloadContent(filename, type);
+ if (cantUnload) return cantUnload;
return this.loadContent(filename, type);
}
@@ -1533,7 +1546,7 @@ PluginModule.prototype.loadPlugins = function () {
catch (err) {
pluginCookie[name] = false;
Utils.err("Plugin " + name + " could not be loaded.", err);
- bdpluginErrors.push({name: name, file: bdplugins[plugins[i]].filename, reason: "load() could not be fired.", error: {message: err.message, stack: err.stack}});
+ bdpluginErrors.push({name: name, file: bdplugins[plugins[i]].filename, message: "load() could not be fired.", error: {message: err.message, stack: err.stack}});
continue;
}
@@ -1547,7 +1560,7 @@ PluginModule.prototype.loadPlugins = function () {
catch (err) {
pluginCookie[name] = false;
Utils.err("Plugin " + name + " could not be started.", err);
- bdpluginErrors.push({name: name, file: bdplugins[plugins[i]].filename, reason: "start() could not be fired.", error: {message: err.message, stack: err.stack}});
+ bdpluginErrors.push({name: name, file: bdplugins[plugins[i]].filename, message: "start() could not be fired.", error: {message: err.message, stack: err.stack}});
}
}
}
@@ -1600,27 +1613,36 @@ PluginModule.prototype.togglePlugin = function (plugin) {
PluginModule.prototype.loadPlugin = function(filename) {
const error = ContentManager.loadContent(filename, "plugin");
- if (error && settingsCookie["fork-ps-2"]) {
- Utils.err(`${filename} could not be loaded.`, error);
- return BdApi.showToast(`${filename} could not be loaded.`, {type: "error"});
+ if (error) {
+ if (settingsCookie["fork-ps-1"]) mainCore.showContentErrors({plugins: [error]});
+ if (settingsCookie["fork-ps-2"]) BdApi.showToast(`${filename} could not be loaded.`, {type: "error"});
+ return Utils.err(`${filename} could not be loaded.`, error);
}
-
const plugin = Object.values(bdplugins).find(p => p.filename == filename).plugin;
if (settingsCookie["fork-ps-2"]) BdApi.showToast(`${plugin.getName()} v${plugin.getVersion()} was loaded.`, {type: "success"});
+ BDEvents.dispatch("plugin-loaded", plugin.getName());
};
-PluginModule.prototype.unloadPlugin = function(plugin) {
+PluginModule.prototype.unloadPlugin = function(filenameOrName) {
+ const bdplugin = Object.values(bdplugins).find(p => p.filename == filenameOrName) || bdplugins[filenameOrName];
+ if (!bdplugin) return;
+ const plugin = bdplugin.plugin.getName();
if (pluginCookie[plugin]) this.disablePlugin(plugin, true);
const error = ContentManager.unloadContent(bdplugins[plugin].filename, "plugin");
delete bdplugins[plugin];
- if (error && settingsCookie["fork-ps-2"]) {
- Utils.err(`${plugin} could not be unloaded. It may have not been loaded yet.`, error);
- return BdApi.showToast(`${plugin} could not be unloaded. It may have not been loaded yet.`, {type: "error"});
+ if (error) {
+ if (settingsCookie["fork-ps-1"]) mainCore.showContentErrors({plugins: [error]});
+ if (settingsCookie["fork-ps-2"]) BdApi.showToast(`${plugin} could not be unloaded. It may have not been loaded yet.`, {type: "error"});
+ return Utils.err(`${plugin} could not be unloaded. It may have not been loaded yet.`, error);
}
if (settingsCookie["fork-ps-2"]) BdApi.showToast(`${plugin} was unloaded.`, {type: "success"});
+ BDEvents.dispatch("plugin-unloaded", plugin);
};
-PluginModule.prototype.reloadPlugin = function(plugin) {
+PluginModule.prototype.reloadPlugin = function(filenameOrName) {
+ const bdplugin = Object.values(bdplugins).find(p => p.filename == filenameOrName) || bdplugins[filenameOrName];
+ if (!bdplugin) return this.loadPlugin(filenameOrName);
+ const plugin = bdplugin.plugin.getName();
const enabled = pluginCookie[plugin];
if (enabled) this.stopPlugin(plugin, true);
const error = ContentManager.reloadContent(bdplugins[plugin].filename, "plugin");
@@ -1628,11 +1650,13 @@ PluginModule.prototype.reloadPlugin = function(plugin) {
if (bdplugins[plugin].plugin.load && typeof(bdplugins[plugin].plugin.load) == "function") bdplugins[plugin].plugin.load();
this.startPlugin(plugin, true);
}
- if (error && settingsCookie["fork-ps-2"]) {
- Utils.err(`${plugin} could not be reloaded.`, error);
- return BdApi.showToast(`${plugin} could not be reloaded.`, {type: "error"});
+ if (error) {
+ if (settingsCookie["fork-ps-1"]) mainCore.showContentErrors({plugins: [error]});
+ if (settingsCookie["fork-ps-2"]) BdApi.showToast(`${plugin} could not be reloaded.`, {type: "error"});
+ return Utils.err(`${plugin} could not be reloaded.`, error);
}
if (settingsCookie["fork-ps-2"]) BdApi.showToast(`${plugin} v${bdplugins[plugin].plugin.getVersion()} was reloaded.`, {type: "success"});
+ BDEvents.dispatch("plugin-reloaded", plugin);
};
PluginModule.prototype.updatePluginList = function() {
@@ -1740,34 +1764,45 @@ ThemeModule.prototype.toggleTheme = function(theme) {
ThemeModule.prototype.loadTheme = function(filename) {
const error = ContentManager.loadContent(filename, "theme");
- if (error && settingsCookie["fork-ps-2"]) {
- Utils.err(`${filename} could not be loaded.`, error);
- return BdApi.showToast(`${filename} could not be loaded. It may not have been loaded.`, {type: "error"});
+ if (error) {
+ if (settingsCookie["fork-ps-1"]) mainCore.showContentErrors({themes: [error]});
+ if (settingsCookie["fork-ps-2"])BdApi.showToast(`${filename} could not be loaded. It may not have been loaded.`, {type: "error"});
+ return Utils.err(`${filename} could not be loaded.`, error);
}
-
const theme = Object.values(bdthemes).find(p => p.filename == filename);
if (settingsCookie["fork-ps-2"]) BdApi.showToast(`${theme.name} v${theme.version} was loaded.`, {type: "success"});
+ BDEvents.dispatch("theme-loaded", theme.name);
};
-ThemeModule.prototype.unloadTheme = function(theme) {
+ThemeModule.prototype.unloadTheme = function(filenameOrName) {
+ const bdtheme = Object.values(bdthemes).find(p => p.filename == filenameOrName) || bdthemes[filenameOrName];
+ if (!bdtheme) return;
+ const theme = bdtheme.name;
if (themeCookie[theme]) this.disableTheme(theme, true);
const error = ContentManager.unloadContent(bdthemes[theme].filename, "theme");
delete bdthemes[theme];
- if (error && settingsCookie["fork-ps-2"]) {
- Utils.err(`${theme} could not be unloaded. It may have not been loaded yet.`, error);
- return BdApi.showToast(`${theme} could not be unloaded. It may have not been loaded yet.`, {type: "error"});
+ if (error) {
+ if (settingsCookie["fork-ps-1"]) mainCore.showContentErrors({themes: [error]});
+ if (settingsCookie["fork-ps-2"]) BdApi.showToast(`${theme} could not be unloaded. It may have not been loaded yet.`, {type: "error"});
+ return Utils.err(`${theme} could not be unloaded. It may have not been loaded yet.`, error);
}
if (settingsCookie["fork-ps-2"]) BdApi.showToast(`${theme} was unloaded.`, {type: "success"});
+ BDEvents.dispatch("theme-unloaded", theme);
};
-ThemeModule.prototype.reloadTheme = function(theme) {
+ThemeModule.prototype.reloadTheme = function(filenameOrName) {
+ const bdtheme = Object.values(bdplugins).find(p => p.filename == filenameOrName) || bdthemes[filenameOrName];
+ if (!bdtheme) return this.loadtheme(filenameOrName);
+ const theme = bdtheme.name;
const error = ContentManager.reloadContent(bdthemes[theme].filename, "theme");
if (themeCookie[theme]) this.disableTheme(theme, true), this.enableTheme(theme, true);
- if (error && settingsCookie["fork-ps-2"]) {
- Utils.err(`${theme} could not be reloaded.`, error);
- return BdApi.showToast(`${theme} could not be reloaded.`, {type: "error"});
+ if (error) {
+ if (settingsCookie["fork-ps-1"]) mainCore.showContentErrors({themes: [error]});
+ if (settingsCookie["fork-ps-2"]) BdApi.showToast(`${theme} could not be reloaded.`, {type: "error"});
+ return Utils.err(`${theme} could not be reloaded.`, error);
}
if (settingsCookie["fork-ps-2"]) BdApi.showToast(`${theme} v${bdthemes[theme].version} was reloaded.`, {type: "success"});
+ BDEvents.dispatch("theme-reloaded", theme);
};
ThemeModule.prototype.updateThemeList = function() {
@@ -1828,7 +1863,7 @@ BdApi.setWindowPreference = function(key, value) {
const fs = require("fs");
const prefs = this.getAllWindowPreferences();
prefs[key] = value;
- delete require.original.cache[this.WindowConfigFile];
+ delete require.cache[this.WindowConfigFile];
fs.writeFileSync(this.WindowConfigFile, JSON.stringify(prefs, null, 4));
};
@@ -1881,6 +1916,12 @@ BdApi.getCore = function () {
//Show modal alert
BdApi.alert = function (title, content) {
+ // const ModalStack = EDApi.findModuleByProps("push", "update", "pop", "popWithKey");
+ // const AlertModal = EDApi.findModule(m => m.prototype && m.prototype.handleCancel && m.prototype.handleSubmit && m.prototype.handleMinorConfirm);
+ // if (!ModalStack || !AlertModal) return window.alert(body);
+ // ModalStack.push(function(props) {
+ // return EDApi.React.createElement(AlertModal, Object.assign({title, body}, props));
+ // });
mainCore.alert(title, content);
};
@@ -3301,6 +3342,7 @@ class V2C_PluginCard extends BDV2.reactComponent {
self.settingsPanel = "";
this.reload = this.reload.bind(this);
+ this.onReload = this.onReload.bind(this);
}
setInitialState() {
@@ -3311,6 +3353,19 @@ class V2C_PluginCard extends BDV2.reactComponent {
};
}
+ // componentDidMount() {
+ // BDEvents.on("plugin-reloaded", this.onReload);
+ // }
+
+ // componentWillUnmount() {
+ // BDEvents.off("plugin-reloaded", this.onReload);
+ // }
+
+ onReload(pluginName) {
+ if (pluginName !== this.props.plugin.getName()) return;
+ this.setState({reloads: this.state.reloads + 1});
+ }
+
componentDidUpdate() {
if (this.state.settings) {
if (typeof this.settingsPanel === "object") {
@@ -3342,7 +3397,7 @@ class V2C_PluginCard extends BDV2.reactComponent {
const plugin = this.props.plugin.getName();
pluginModule.reloadPlugin(plugin);
this.props.plugin = bdplugins[plugin].plugin;
- this.setState({reloads: this.state.reloads + 1});
+ this.onReload(this.props.plugin.getName());
}
render() {
@@ -3429,6 +3484,19 @@ class V2C_ThemeCard extends BDV2.reactComponent {
};
}
+ // componentDidMount() {
+ // BDEvents.on("theme-reloaded", this.onReload);
+ // }
+
+ // componentWillUnmount() {
+ // BDEvents.off("theme-reloaded", this.onReload);
+ // }
+
+ onReload(themeName) {
+ if (themeName !== this.props.theme.name) return;
+ this.setState({reloads: this.state.reloads + 1});
+ }
+
reload() {
const theme = this.props.theme.name;
const error = themeModule.reloadTheme(theme);
@@ -3436,7 +3504,7 @@ class V2C_ThemeCard extends BDV2.reactComponent {
else mainCore.showToast(`${bdthemes[theme].name} v${bdthemes[theme].version} has been reloaded.`, {type: "success"});
// this.setState(this.state);
this.props.theme = bdthemes[theme];
- this.setState({reloads: this.state.reloads + 1});
+ this.onReload(this.props.theme.name);
}
render() {
@@ -3623,7 +3691,7 @@ class V2_SettingsPanel_Sidebar {
}
get items() {
- return [{text: "Core", id: "core"}, {text: "Zere's Fork", id: "fork"}, {text: "Emotes", id: "emotes"}, {text: "Custom CSS", id: "customcss"}, {text: "Plugins", id: "plugins"}, {text: "Themes", id: "themes"}];
+ return [{text: "Core", id: "core"}, {text: "Bandages", id: "fork"}, {text: "Emotes", id: "emotes"}, {text: "Custom CSS", id: "customcss"}, {text: "Plugins", id: "plugins"}, {text: "Themes", id: "themes"}];
}
get component() {
@@ -3888,7 +3956,7 @@ class V2_SettingsPanel {
fade: true,
dark: true,
children: [
- BDV2.react.createElement(V2Components.SettingsPanel, {key: "fspanel", title: "Zere's Fork Settings", onChange: this.onChange, settings: this.forkSettings, button: {
+ BDV2.react.createElement(V2Components.SettingsPanel, {key: "fspanel", title: "BandagedBD Settings", onChange: this.onChange, settings: this.forkSettings, button: {
title: "Clear Emote Cache",
onClick: () => { emoteModule.clearEmoteData(); emoteModule.init(); quickEmoteMenu.init(); }
}}),
@@ -3906,6 +3974,37 @@ class V2_SettingsPanel {
return BDV2.react.createElement(V2Components.Scroller, {contentColumn: true, fade: true, dark: true, children: [BDV2.react.createElement(V2Components.CssEditor, {key: "csseditor"}), BDV2.react.createElement(V2Components.Tools, {key: "tools"})]});
}
+ contentComponent(type) {
+ const componentElement = type == "plugins" ? this.pluginsComponent : this.themesComponent;
+ const prefix = type.replace("s", "");
+ const settingsList = this;
+ class ContentList extends BDV2.react.Component {
+ constructor(props) {
+ super(props);
+ this.onChange = this.onChange.bind(this);
+ }
+
+ componentDidMount() {
+ BDEvents.on(`${prefix}-reloaded`, this.onChange);
+ BDEvents.on(`${prefix}-loaded`, this.onChange);
+ BDEvents.on(`${prefix}-unloaded`, this.onChange);
+ }
+
+ componentWillUnmount() {
+ BDEvents.off(`${prefix}-reloaded`, this.onChange);
+ BDEvents.off(`${prefix}-loaded`, this.onChange);
+ BDEvents.off(`${prefix}-unloaded`, this.onChange);
+ }
+
+ onChange() {
+ settingsList.sideBarOnClick(type);
+ }
+
+ render() {return componentElement;}
+ }
+ return BDV2.react.createElement(ContentList);
+ }
+
get pluginsComponent() {
let plugins = Object.keys(bdplugins).sort((a, b) => a.toLowerCase().localeCompare(b.toLowerCase())).reduce((arr, key) => {
arr.push(BDV2.react.createElement(V2Components.PluginCard, {key: key, plugin: bdplugins[key].plugin}));return arr;
@@ -3976,7 +4075,7 @@ class V2_SettingsPanel {
console.log("FAILED TO LOCATE ROOT: .layer-3QrUeG .standardSidebarView-3F1I7i");
return;
}
- BDV2.reactDom.render(this.pluginsComponent, root);
+ BDV2.reactDom.render(this.contentComponent("plugins"), root);
}
renderThemePane() {
@@ -3985,7 +4084,7 @@ class V2_SettingsPanel {
console.log("FAILED TO LOCATE ROOT: .layer-3QrUeG .standardSidebarView-3F1I7i");
return;
}
- BDV2.reactDom.render(this.themesComponent, root);
+ BDV2.reactDom.render(this.contentComponent("themes"), root);
}
}
diff --git a/js/main.min.js b/js/main.min.js
index d9e14696..f0420c3f 100644
--- a/js/main.min.js
+++ b/js/main.min.js
@@ -1,10 +1,10 @@
-(function(){let e=window.require("fs"),t=window.require("process"),a=t.platform,n=("win32"===a?t.env.APPDATA:"darwin"===a?t.env.HOME+"/Library/Preferences":process.env.HOME+"/.config")+"/BetterDiscord/",o="localStorage.json",s={};if(e.existsSync(`${n}${o}`))try{s=JSON.parse(e.readFileSync(`${n}${o}`))}catch(e){console.log(e)}else if(e.existsSync(o))try{s=JSON.parse(e.readFileSync(o))}catch(e){console.log(e)}var r=s;r.setItem=function(e,t){r[e]=t,this.save()},r.getItem=function(e){return r[e]||null},r.save=function(){e.writeFileSync(`${n}${o}`,JSON.stringify(this),null,4)};var i=new Proxy(r,{set:function(e,t,a){r[t]=a,r.save()},get:function(e,t){return r[t]||null}});window.localStorage=i})(),(()=>{let e=document.createElement("div");e.className="bd-loaderv2",e.title="BetterDiscord is loading...",document.body.appendChild(e)})();var DataStore=(()=>{const e=require("fs"),t=require("path"),a=DiscordNative.globals.releaseChannel;return new class{constructor(){this.data={settings:{stable:{},canary:{},ptb:{}}},this.pluginData={}}initialize(){try{if(e.existsSync(this.BDFile)?this.data=require(this.BDFile):e.writeFileSync(this.BDFile,JSON.stringify(this.data,null,4)),!e.existsSync(this.settingsFile))return;let t=require(this.settingsFile);e.unlinkSync(this.settingsFile),t=t.hasOwnProperty("settings")?Object.assign({stable:{},canary:{},ptb:{}},{[a]:t}):Object.assign({stable:{},canary:{},ptb:{}},t),this.setBDData("settings",t)}catch(e){BdApi.alert("Corrupt Storage","The bd storage has somehow become corrupt. You may either try to salvage the file or delete it then reload.")}}get BDFile(){return this._BDFile||(this._BDFile=t.resolve(bdConfig.dataPath,"bdstorage.json"))}get settingsFile(){return this._settingsFile||(this._settingsFile=t.resolve(bdConfig.dataPath,"bdsettings.json"))}getPluginFile(e){return t.resolve(ContentManager.pluginsFolder,e+".config.json")}getSettingGroup(e){return this.data.settings[a][e]||null}setSettingGroup(t,n){this.data.settings[a][t]=n,e.writeFileSync(this.BDFile,JSON.stringify(this.data,null,4))}getBDData(e){return this.data[e]||""}setBDData(t,a){this.data[t]=a,e.writeFileSync(this.BDFile,JSON.stringify(this.data,null,4))}getPluginData(t,a){return void 0===this.pluginData[t]?e.existsSync(this.getPluginFile(t))?(this.pluginData[t]=JSON.parse(e.readFileSync(this.getPluginFile(t))),this.pluginData[t][a]||void 0):void 0:this.pluginData[t][a]||void 0}setPluginData(t,a,n){void 0===n||(this.pluginData[t]===void 0&&(this.pluginData[t]={}),this.pluginData[t][a]=n,e.writeFileSync(this.getPluginFile(t),JSON.stringify(this.pluginData[t],null,4)))}deletePluginData(t,a){this.pluginData[t]===void 0&&(this.pluginData[t]={}),delete this.pluginData[t][a],e.writeFileSync(this.getPluginFile(t),JSON.stringify(this.pluginData[t],null,4))}}})();window.bdStorage=class{static get(e){return Utils.warn("[Deprecation Notice] Please use BdApi.getBDData(). bdStorage may be removed in future versions."),DataStore.getBDData(e)}static set(e,t){Utils.warn("[Deprecation Notice] Please use BdApi.setBDData(). bdStorage may be removed in future versions."),DataStore.setBDData(e,t)}},window.bdPluginStorage=class{static get(e,t){return Utils.warn(`[Deprecation Notice] Please use BdApi.loadData() or BdApi.getData(). bdPluginStorage may be removed in future versions.`),DataStore.getPluginData(e,t)||null}static set(e,t,a){return Utils.warn("[Deprecation Notice] Please use BdApi.saveData() or BdApi.setData(). bdPluginStorage may be removed in future versions."),"undefined"==typeof value?Utils.warn("Trying to set undefined value in plugin "+e):void DataStore.setPluginData(e,t,a)}static delete(e,t){Utils.warn("[Deprecation Notice] Please use BdApi.deleteData(). bdPluginStorage may be removed in future versions."),DataStore.deletePluginData(e,t)}};var settingsPanel,emoteModule,quickEmoteMenu,voiceMode,pluginModule,themeModule,dMode,publicServersModule,mainCore,minSupportedVersion="0.3.0",bbdVersion="0.2.2",settings={"Save logs locally":{id:"bda-gs-0",info:"Saves chat logs locally",implemented:!1,hidden:!1,cat:"core"},"Public Servers":{id:"bda-gs-1",info:"Display public servers button",implemented:!0,hidden:!1,cat:"core"},"Minimal Mode":{id:"bda-gs-2",info:"Hide elements and reduce the size of elements.",implemented:!0,hidden:!1,cat:"core"},"Voice Mode":{id:"bda-gs-4",info:"Only show voice chat",implemented:!0,hidden:!1,cat:"core"},"Hide Channels":{id:"bda-gs-3",info:"Hide channels in minimal mode",implemented:!0,hidden:!1,cat:"core"},"Dark Mode":{id:"bda-gs-5",info:"Make certain elements dark by default(wip)",implemented:!0,hidden:!1,cat:"core"},"Override Default Emotes":{id:"bda-es-5",info:"Override default emotes",implemented:!1,hidden:!1,cat:"core"},"Voice Disconnect":{id:"bda-dc-0",info:"Disconnect from voice server when closing Discord",implemented:!0,hidden:!1,cat:"core"},"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"},"24 Hour Timestamps":{id:"bda-gs-6",info:"Replace 12hr timestamps with proper ones",implemented:!0,hidden:!1,cat:"core"},"Coloured Text":{id:"bda-gs-7",info:"Make text colour the same as role colour",implemented:!0,hidden:!1,cat:"core"},"BetterDiscord Blue":{id:"bda-gs-b",info:"Replace Discord blue with BD Blue",implemented:!0,hidden:!1,cat:"core"},"Developer Mode":{id:"bda-gs-8",info:"Developer Mode",implemented:!0,hidden:!1,cat:"core"},"Startup Error Modal":{id:"fork-ps-1",info:"Show a modal with plugin/theme errors on startup",implemented:!0,hidden:!1,cat:"fork"},"Show Toasts":{id:"fork-ps-2",info:"Shows a small notification for important information",implemented:!0,hidden:!1,cat:"fork"},"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:"fork"},"Animate On Hover":{id:"fork-es-2",info:"Only animate the emote modifiers on hover",implemented:!0,hidden:!1,cat:"fork"},"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:"fork"},"Download Emotes":{id:"fork-es-3",info:"Download emotes when the cache is expired",implemented:!0,hidden:!1,cat:"fork"},"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:"fork"},"Automatic Loading":{id:"fork-ps-5",info:"Automatically loads, reloads, and unloads plugins and themes",implemented:!0,hidden:!1,cat:"fork"},"Enable Transparency":{id:"fork-wp-1",info:"Enables the main window to be see-through (requires restart)",implemented:!0,hidden:!1,cat:"fork"},"Window Frame":{id:"fork-wp-2",info:"Adds the native os window frame to the main window",implemented:!1,hidden:!0,cat:"fork"},"Twitch Emotes":{id:"bda-es-7",info:"Show Twitch emotes",implemented:!0,hidden:!1,cat:"emote"},"FrankerFaceZ Emotes":{id:"bda-es-1",info:"Show FrankerFaceZ Emotes",implemented:!0,hidden:!1,cat:"emote"},"BetterTTV Emotes":{id:"bda-es-2",info:"Show BetterTTV Emotes",implemented:!0,hidden:!1,cat:"emote"},"Emote Menu":{id:"bda-es-0",info:"Show Twitch/Favourite emotes in emote menu",implemented:!0,hidden:!1,cat:"emote"},"Emoji Menu":{id:"bda-es-9",info:"Show Discord emoji menu",implemented:!0,hidden:!1,cat:"emote"},"Emote Autocomplete":{id:"bda-es-3",info:"Autocomplete emote commands",implemented:!1,hidden:!1,cat:"emote"},"Emote Auto Capitalization":{id:"bda-es-4",info:"Autocapitalize emote commands",implemented:!0,hidden:!1,cat:"emote"},"Show Names":{id:"bda-es-6",info:"Show emote names on hover",implemented:!0,hidden:!1,cat:"emote"},"Show emote modifiers":{id:"bda-es-8",info:"Enable emote mods (flip, spin, pulse, spin2, spin3, 1spin, 2spin, 3spin, tr, bl, br, shake, shake2, shake3, flap)",implemented:!0,hidden:!1,cat:"emote"}},defaultCookie={"bda-gs-0":!1,"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-3":!1,"bda-es-4":!1,"bda-es-5":!0,"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-es-2":!1,"fork-es-3":!0,"fork-wp-1":!1,"fork-wp-2":!1},settingsCookie={},bdpluginErrors=[],bdthemeErrors=[],bdConfig=null;function Core(e){window.bdConfig=e}var classNormalizer;Core.prototype.init=async function(){return bdConfig.version
Please download the latest version from GitHub "):void(bdConfig.updater.LatestVersion>bdConfig.version&&this.alert("Update Available",`
+(function(){let e=window.require("fs"),t=window.require("process"),a=t.platform,n=("win32"===a?t.env.APPDATA:"darwin"===a?t.env.HOME+"/Library/Preferences":process.env.HOME+"/.config")+"/BetterDiscord/",o="localStorage.json",s={};if(e.existsSync(`${n}${o}`))try{s=JSON.parse(e.readFileSync(`${n}${o}`))}catch(e){console.log(e)}else if(e.existsSync(o))try{s=JSON.parse(e.readFileSync(o))}catch(e){console.log(e)}var r=s;r.setItem=function(e,t){r[e]=t,this.save()},r.getItem=function(e){return r[e]||null},r.save=function(){e.writeFileSync(`${n}${o}`,JSON.stringify(this),null,4)};var i=new Proxy(r,{set:function(e,t,a){r[t]=a,r.save()},get:function(e,t){return r[t]||null}});window.localStorage=i})(),(()=>{let e=document.createElement("div");e.className="bd-loaderv2",e.title="BandagedBD is loading...",document.body.appendChild(e)})();var DataStore=(()=>{const e=require("fs"),t=require("path"),a=DiscordNative.globals.releaseChannel;return new class{constructor(){this.data={settings:{stable:{},canary:{},ptb:{}}},this.pluginData={}}initialize(){try{if(e.existsSync(this.BDFile)?this.data=require(this.BDFile):e.writeFileSync(this.BDFile,JSON.stringify(this.data,null,4)),!e.existsSync(this.settingsFile))return;let t=require(this.settingsFile);e.unlinkSync(this.settingsFile),t=t.hasOwnProperty("settings")?Object.assign({stable:{},canary:{},ptb:{}},{[a]:t}):Object.assign({stable:{},canary:{},ptb:{}},t),this.setBDData("settings",t)}catch(e){BdApi.alert("Corrupt Storage","The bd storage has somehow become corrupt. You may either try to salvage the file or delete it then reload.")}}get BDFile(){return this._BDFile||(this._BDFile=t.resolve(bdConfig.dataPath,"bdstorage.json"))}get settingsFile(){return this._settingsFile||(this._settingsFile=t.resolve(bdConfig.dataPath,"bdsettings.json"))}getPluginFile(e){return t.resolve(ContentManager.pluginsFolder,e+".config.json")}getSettingGroup(e){return this.data.settings[a][e]||null}setSettingGroup(t,n){this.data.settings[a][t]=n,e.writeFileSync(this.BDFile,JSON.stringify(this.data,null,4))}getBDData(e){return this.data[e]||""}setBDData(t,a){this.data[t]=a,e.writeFileSync(this.BDFile,JSON.stringify(this.data,null,4))}getPluginData(t,a){return void 0===this.pluginData[t]?e.existsSync(this.getPluginFile(t))?(this.pluginData[t]=JSON.parse(e.readFileSync(this.getPluginFile(t))),this.pluginData[t][a]||void 0):void 0:this.pluginData[t][a]||void 0}setPluginData(t,a,n){void 0===n||(this.pluginData[t]===void 0&&(this.pluginData[t]={}),this.pluginData[t][a]=n,e.writeFileSync(this.getPluginFile(t),JSON.stringify(this.pluginData[t],null,4)))}deletePluginData(t,a){this.pluginData[t]===void 0&&(this.pluginData[t]={}),delete this.pluginData[t][a],e.writeFileSync(this.getPluginFile(t),JSON.stringify(this.pluginData[t],null,4))}}})(),BDEvents=(()=>{const e=require("events");return new class extends e{dispatch(e,...t){this.emit(e,...t)}off(e,t){this.removeListener(e,t)}}})();window.bdStorage=class{static get(e){return Utils.warn("[Deprecation Notice] Please use BdApi.getBDData(). bdStorage may be removed in future versions."),DataStore.getBDData(e)}static set(e,t){Utils.warn("[Deprecation Notice] Please use BdApi.setBDData(). bdStorage may be removed in future versions."),DataStore.setBDData(e,t)}},window.bdPluginStorage=class{static get(e,t){return Utils.warn(`[Deprecation Notice] Please use BdApi.loadData() or BdApi.getData(). bdPluginStorage may be removed in future versions.`),DataStore.getPluginData(e,t)||null}static set(e,t,a){return Utils.warn("[Deprecation Notice] Please use BdApi.saveData() or BdApi.setData(). bdPluginStorage may be removed in future versions."),"undefined"==typeof a?Utils.warn("Trying to set undefined value in plugin "+e):void DataStore.setPluginData(e,t,a)}static delete(e,t){Utils.warn("[Deprecation Notice] Please use BdApi.deleteData(). bdPluginStorage may be removed in future versions."),DataStore.deletePluginData(e,t)}};var settingsPanel,emoteModule,quickEmoteMenu,voiceMode,pluginModule,themeModule,dMode,publicServersModule,mainCore,minSupportedVersion="0.3.0",bbdVersion="0.2.2",settings={"Save logs locally":{id:"bda-gs-0",info:"Saves chat logs locally",implemented:!1,hidden:!1,cat:"core"},"Public Servers":{id:"bda-gs-1",info:"Display public servers button",implemented:!0,hidden:!1,cat:"core"},"Minimal Mode":{id:"bda-gs-2",info:"Hide elements and reduce the size of elements.",implemented:!0,hidden:!1,cat:"core"},"Voice Mode":{id:"bda-gs-4",info:"Only show voice chat",implemented:!0,hidden:!1,cat:"core"},"Hide Channels":{id:"bda-gs-3",info:"Hide channels in minimal mode",implemented:!0,hidden:!1,cat:"core"},"Dark Mode":{id:"bda-gs-5",info:"Make certain elements dark by default(wip)",implemented:!0,hidden:!1,cat:"core"},"Override Default Emotes":{id:"bda-es-5",info:"Override default emotes",implemented:!1,hidden:!1,cat:"core"},"Voice Disconnect":{id:"bda-dc-0",info:"Disconnect from voice server when closing Discord",implemented:!0,hidden:!1,cat:"core"},"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"},"24 Hour Timestamps":{id:"bda-gs-6",info:"Replace 12hr timestamps with proper ones",implemented:!0,hidden:!1,cat:"core"},"Coloured Text":{id:"bda-gs-7",info:"Make text colour the same as role colour",implemented:!0,hidden:!1,cat:"core"},"BetterDiscord Blue":{id:"bda-gs-b",info:"Replace Discord blue with BD Blue",implemented:!0,hidden:!1,cat:"core"},"Developer Mode":{id:"bda-gs-8",info:"Developer Mode",implemented:!0,hidden:!1,cat:"core"},"Content Error Modal":{id:"fork-ps-1",info:"Shows a modal with plugin/theme errors",implemented:!0,hidden:!1,cat:"fork"},"Show Toasts":{id:"fork-ps-2",info:"Shows a small notification for important information",implemented:!0,hidden:!1,cat:"fork"},"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:"fork"},"Animate On Hover":{id:"fork-es-2",info:"Only animate the emote modifiers on hover",implemented:!0,hidden:!1,cat:"fork"},"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:"fork"},"Download Emotes":{id:"fork-es-3",info:"Download emotes when the cache is expired",implemented:!0,hidden:!1,cat:"fork"},"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:"fork"},"Automatic Loading":{id:"fork-ps-5",info:"Automatically loads, reloads, and unloads plugins and themes",implemented:!0,hidden:!1,cat:"fork"},"Enable Transparency":{id:"fork-wp-1",info:"Enables the main window to be see-through (requires restart)",implemented:!0,hidden:!1,cat:"fork"},"Window Frame":{id:"fork-wp-2",info:"Adds the native os window frame to the main window",implemented:!1,hidden:!0,cat:"fork"},"Twitch Emotes":{id:"bda-es-7",info:"Show Twitch emotes",implemented:!0,hidden:!1,cat:"emote"},"FrankerFaceZ Emotes":{id:"bda-es-1",info:"Show FrankerFaceZ Emotes",implemented:!0,hidden:!1,cat:"emote"},"BetterTTV Emotes":{id:"bda-es-2",info:"Show BetterTTV Emotes",implemented:!0,hidden:!1,cat:"emote"},"Emote Menu":{id:"bda-es-0",info:"Show Twitch/Favourite emotes in emote menu",implemented:!0,hidden:!1,cat:"emote"},"Emoji Menu":{id:"bda-es-9",info:"Show Discord emoji menu",implemented:!0,hidden:!1,cat:"emote"},"Emote Autocomplete":{id:"bda-es-3",info:"Autocomplete emote commands",implemented:!1,hidden:!1,cat:"emote"},"Emote Auto Capitalization":{id:"bda-es-4",info:"Autocapitalize emote commands",implemented:!0,hidden:!1,cat:"emote"},"Show Names":{id:"bda-es-6",info:"Show emote names on hover",implemented:!0,hidden:!1,cat:"emote"},"Show emote modifiers":{id:"bda-es-8",info:"Enable emote mods (flip, spin, pulse, spin2, spin3, 1spin, 2spin, 3spin, tr, bl, br, shake, shake2, shake3, flap)",implemented:!0,hidden:!1,cat:"emote"}},defaultCookie={"bda-gs-0":!1,"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-3":!1,"bda-es-4":!1,"bda-es-5":!0,"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-es-2":!1,"fork-es-3":!0,"fork-wp-1":!1,"fork-wp-2":!1},settingsCookie={},bdpluginErrors=[],bdthemeErrors=[],bdConfig=null;function Core(e){window.bdConfig=e}var classNormalizer;Core.prototype.init=async function(){return bdConfig.version Please download the latest version from GitHub "):void(bdConfig.updater.LatestVersion>bdConfig.version&&this.alert("Update Available",`
An update for BandagedBD is available (${bdConfig.updater.LatestVersion})! Please Reinstall!
Download Installer
- `),Utils.log("Initializing Settings"),this.initSettings(),classNormalizer=new ClassNormalizer,emoteModule=new EmoteModule,quickEmoteMenu=new QuickEmoteMenu,Utils.log("Initializing EmoteModule"),window.emotePromise=emoteModule.init().then(()=>{emoteModule.initialized=!0,Utils.log("Initializing QuickEmoteMenu"),quickEmoteMenu.init()}),publicServersModule=new V2_PublicServers,voiceMode=new VoiceMode,dMode=new devMode,this.injectExternals(),await this.checkForGuilds(),Utils.log("Updating Settings"),settingsPanel=new V2_SettingsPanel,settingsPanel.updateSettings(),Utils.log("Loading Plugins"),pluginModule=new PluginModule,pluginModule.loadPlugins(),Utils.log("Loading Themes"),themeModule=new ThemeModule,themeModule.loadThemes(),$("#customcss").detach().appendTo(document.head),window.addEventListener("beforeunload",function(){settingsCookie["bda-dc-0"]&&document.querySelector(".btn.btn-disconnect").click()}),publicServersModule.initialize(),emoteModule.autoCapitalize(),Utils.log("Removing Loading Icon"),document.getElementsByClassName("bd-loaderv2")[0].remove(),Utils.log("Initializing Main Observer"),this.initObserver(),settingsCookie["fork-ps-1"]&&(Utils.log("Collecting Startup Errors"),this.showStartupErrors({plugins:bdpluginErrors,themes:bdthemeErrors})),!DataStore.getBDData("RNMAnnouncement")&&(DataStore.setBDData("RNMAnnouncement",!0),this.alert("Significant Changes",`
+ `),Utils.log("Initializing Settings"),this.initSettings(),classNormalizer=new ClassNormalizer,emoteModule=new EmoteModule,quickEmoteMenu=new QuickEmoteMenu,Utils.log("Initializing EmoteModule"),window.emotePromise=emoteModule.init().then(()=>{emoteModule.initialized=!0,Utils.log("Initializing QuickEmoteMenu"),quickEmoteMenu.init()}),publicServersModule=new V2_PublicServers,voiceMode=new VoiceMode,dMode=new devMode,this.injectExternals(),await this.checkForGuilds(),Utils.log("Updating Settings"),settingsPanel=new V2_SettingsPanel,settingsPanel.updateSettings(),Utils.log("Loading Plugins"),pluginModule=new PluginModule,pluginModule.loadPlugins(),Utils.log("Loading Themes"),themeModule=new ThemeModule,themeModule.loadThemes(),$("#customcss").detach().appendTo(document.head),window.addEventListener("beforeunload",function(){settingsCookie["bda-dc-0"]&&document.querySelector(".btn.btn-disconnect").click()}),publicServersModule.initialize(),emoteModule.autoCapitalize(),Utils.log("Removing Loading Icon"),document.getElementsByClassName("bd-loaderv2")[0].remove(),Utils.log("Initializing Main Observer"),this.initObserver(),settingsCookie["fork-ps-1"]&&(Utils.log("Collecting Startup Errors"),this.showContentErrors({plugins:bdpluginErrors,themes:bdthemeErrors})),!DataStore.getBDData("RNMAnnouncement")&&(DataStore.setBDData("RNMAnnouncement",!0),this.alert("Significant Changes",`
The lastest release of BBD has made a lot of improvements including being able to automatically load, unload, and reload plugins and themes.
If you had the RestartNoMore plugin, I suggest removing it (or turning off BBD's loader in settings) so things aren't being loaded multiple times.
- `)))},Core.prototype.checkForGuilds=function(){return new Promise(e=>{const t=function(){return 0").html(atob(DataStore.getBDData("bdcustomcss"))).appendTo(document.head),defaultCookie)null==settingsCookie[e]&&(settingsCookie[e]=defaultCookie[e],this.saveSettings())},Core.prototype.saveSettings=function(){DataStore.setSettingGroup("settings",settingsCookie)},Core.prototype.loadSettings=function(){settingsCookie=DataStore.getSettingGroup("settings")},Core.prototype.initObserver=function(){const e=new MutationObserver(e=>{for(let t,a=0,n=e.length;a{if(settingsCookie["bda-gs-6"]){const a=t.returnValue.match(e);return a&&4===a.length?"AM"===a[3]?t.returnValue=t.returnValue.replace(a[0],`${"12"===a[1]?"00":a[1].padStart(2,"0")}:${a[2]}`):t.returnValue=t.returnValue.replace(a[0],`${"12"===a[1]?"12":parseInt(a[1])+12}:${a[2]}`):void 0}}})},Core.prototype.injectColoredText=function(){this.cancelColoredText||(this.cancelColoredText=Utils.monkeyPatch(BDV2.MessageContentComponent.prototype,"render",{after:e=>{settingsCookie["bda-gs-7"]&&Utils.monkeyPatch(e.returnValue.props,"children",{silent:!0,after:({returnValue:t})=>{const a=t.props.children[1],n=e.thisObject.props.message.colorString;return a&&n&&(a.props.style={color:n}),t}})}}))},Core.prototype.removeColoredText=function(){document.querySelectorAll(".markup-2BOw-j").forEach(e=>{e.style.setProperty("color","")})},Core.prototype.alert=function(e,t){let a=$(`
+ `)))},Core.prototype.checkForGuilds=function(){return new Promise(e=>{const t=function(){return 0
").html(atob(DataStore.getBDData("bdcustomcss"))).appendTo(document.head),defaultCookie)null==settingsCookie[e]&&(settingsCookie[e]=defaultCookie[e],this.saveSettings())},Core.prototype.saveSettings=function(){DataStore.setSettingGroup("settings",settingsCookie)},Core.prototype.loadSettings=function(){settingsCookie=DataStore.getSettingGroup("settings")},Core.prototype.initObserver=function(){const e=new MutationObserver(e=>{for(let t,a=0,n=e.length;a{if(settingsCookie["bda-gs-6"]){const a=t.returnValue.match(e);return a&&4===a.length?"AM"===a[3]?t.returnValue=t.returnValue.replace(a[0],`${"12"===a[1]?"00":a[1].padStart(2,"0")}:${a[2]}`):t.returnValue=t.returnValue.replace(a[0],`${"12"===a[1]?"12":parseInt(a[1])+12}:${a[2]}`):void 0}}})},Core.prototype.injectColoredText=function(){this.cancelColoredText||(this.cancelColoredText=Utils.monkeyPatch(BDV2.MessageContentComponent.prototype,"render",{after:e=>{settingsCookie["bda-gs-7"]&&Utils.monkeyPatch(e.returnValue.props,"children",{silent:!0,after:({returnValue:t})=>{const a=t.props.children[1],n=e.thisObject.props.message.colorString;return a&&n&&(a.props.style={color:n}),t}})}}))},Core.prototype.removeColoredText=function(){document.querySelectorAll(".markup-2BOw-j").forEach(e=>{e.style.setProperty("color","")})},Core.prototype.alert=function(e,t){let a=$(`
- `);a.find(".footer button").on("click",()=>{a.addClass("closing"),setTimeout(()=>{a.remove()},300)}),a.find(".bd-backdrop").on("click",()=>{a.addClass("closing"),setTimeout(()=>{a.remove()},300)}),a.appendTo("#app-mount")},Core.prototype.showStartupErrors=function({plugins:e,themes:t}){function a(e){let t=$(``);for(let a of e){let e=$(`
+
`);a.find(".footer button").on("click",()=>{a.addClass("closing"),setTimeout(()=>{a.remove()},300)}),a.find(".bd-backdrop").on("click",()=>{a.addClass("closing"),setTimeout(()=>{a.remove()},300)}),a.appendTo("#app-mount")},Core.prototype.showContentErrors=function({plugins:e=[],themes:t=[]}){function a(e){let t=$(`
`);for(let a of e){let e=$(`
${a.name?a.name:a.file}
-
${a.reason}
+
${a.message}
`);t.append(e),a.error&&e.find("a").on("click",t=>{t.preventDefault(),Utils.err(`Error details for ${a.name?a.name:a.file}.`,a.error)})}return t}if(!e||!t)return;if(!e.length&&!t.length)return;let n=$(`
-
+
-
+
@@ -41,7 +41,7 @@
@@ -55,4 +55,4 @@
-
`),o=[a(e),a(t)];n.find(".tab-bar-item").on("click",t=>{t.preventDefault(),n.find(".tab-bar-item").removeClass("selected"),$(t.target).addClass("selected"),n.find(".scroller").empty().append(o[$(t.target).index()])}),n.find(".footer button").on("click",()=>{n.addClass("closing"),setTimeout(()=>{n.remove()},300)}),n.find(".bd-backdrop").on("click",()=>{n.addClass("closing"),setTimeout(()=>{n.remove()},300)}),n.appendTo("#app-mount"),e.length?n.find(".tab-bar-item")[0].click():n.find(".tab-bar-item")[1].click()},Core.prototype.showToast=function(e,t={}){if(!bdConfig.deferLoaded)return;if(!document.querySelector(".bd-toasts")){let e=document.createElement("div");e.classList.add("bd-toasts");let t=document.querySelector(".chat-3bRxxu form, #friends, .noChannel-Z1DQK7, .activityFeed-28jde9");e.style.setProperty("left",t?t.getBoundingClientRect().left+"px":"0px"),e.style.setProperty("width",t?t.offsetWidth+"px":"100%"),e.style.setProperty("bottom",(document.querySelector(".chat-3bRxxu form")?document.querySelector(".chat-3bRxxu form").offsetHeight:80)+"px"),document.querySelector(".app").appendChild(e)}const{type:a="",icon:n=!0,timeout:o=3e3}=t;let s=document.createElement("div");s.classList.add("bd-toast"),a&&s.classList.add("toast-"+a),a&&n&&s.classList.add("icon"),s.innerText=e,document.querySelector(".bd-toasts").appendChild(s),setTimeout(()=>{s.classList.add("closing"),setTimeout(()=>{s.remove(),document.querySelectorAll(".bd-toasts .bd-toast").length||document.querySelector(".bd-toasts").remove()},300)},o)},window.emotesFfz={},window.emotesBTTV={},window.emotesBTTV2={},window.emotesTwitch={},window.subEmotesTwitch={},window.bdEmotes={TwitchGlobal:{},TwitchSubscriber:{},BTTV:{},FrankerFaceZ:{},BTTV2:{}},window.bdEmoteSettingIDs={TwitchGlobal:"bda-es-7",TwitchSubscriber:"bda-es-7",BTTV:"bda-es-2",FrankerFaceZ:"bda-es-1",BTTV2:"bda-es-2"};function EmoteModule(){}EmoteModule.prototype.init=async function(){this.modifiers=["flip","spin","pulse","spin2","spin3","1spin","2spin","3spin","tr","bl","br","shake","shake2","shake3","flap"],this.overrides=["twitch","bttv","ffz"],this.categories=["TwitchGlobal","TwitchSubscriber","BTTV","BTTV2","FrankerFaceZ"];let e={TwitchGlobal:{url:"https://twitchemotes.com/api_cache/v3/global.json",backup:"https://cdn.staticaly.com/gh/rauenzi/BetterDiscordApp/master/data/emotedata_twitch_global.json",variable:"TwitchGlobal",oldVariable:"emotesTwitch",getEmoteURL:t=>`https://static-cdn.jtvnw.net/emoticons/v1/${t.id}/1.0`,getOldData:(e,t)=>({id:e.match(/\/([0-9]+)\//)[1],code:t,emoticon_set:0,description:null})},TwitchSubscriber:{url:"https://twitchemotes.com/api_cache/v3/subscriber.json",backup:"https://cdn.staticaly.com/gh/rauenzi/BetterDiscordApp/master/data/emotedata_twitch_subscriber.json",variable:"TwitchSubscriber",oldVariable:"subEmotesTwitch",parser:e=>{let t={};for(let a in e){let n=e[a];for(let a,o=0,e=n.emotes.length;o
e,getEmoteURL:t=>`https://static-cdn.jtvnw.net/emoticons/v1/${t}/1.0`,getOldData:e=>e.match(/\/([0-9]+)\//)[1]},FrankerFaceZ:{url:"https://cdn.staticaly.com/gh/rauenzi/BetterDiscordApp/master/data/emotedata_ffz.json",variable:"FrankerFaceZ",oldVariable:"emotesFfz",getEmoteURL:t=>`https://cdn.frankerfacez.com/emoticon/${t}/1`,getOldData:e=>e.match(/\/([0-9]+)\//)[1]},BTTV:{url:"https://api.betterttv.net/emotes",variable:"BTTV",oldVariable:"emotesBTTV",parser:t=>{let a={};for(let n,o=0,e=t.emotes.length;o`${t}`,getOldData:e=>e},BTTV2:{url:"https://cdn.staticaly.com/gh/rauenzi/BetterDiscordApp/master/data/emotedata_bttv.json",variable:"BTTV2",oldVariable:"emotesBTTV2",getEmoteURL:t=>`https://cdn.betterttv.net/emote/${t}/1x`,getOldData:e=>e.match(/emote\/(.+)\//)[1]}};for(await this.getBlacklist(),await this.loadEmoteData(e);!BDV2.MessageContentComponent;)await new Promise(e=>setTimeout(e,100));this.cancelEmoteRender||(this.cancelEmoteRender=Utils.monkeyPatch(BDV2.MessageContentComponent.prototype,"render",{after:({returnValue:e})=>{Utils.monkeyPatch(e.props,"children",{silent:!0,after:({returnValue:e})=>{const t=e.props.children[1];if(t.props.children){const e=t.props.children[1];if(e&&e.length){for(let t=0;ti.length)continue;this.modifiers.includes(l)&&settingsCookie["bda-es-8"]||(l=""),this.overrides.includes(d)?l=d:d="";let c=this.categories[a];if("twitch"===d?window.bdEmotes.TwitchGlobal[i]?c="TwitchGlobal":window.bdEmotes.TwitchSubscriber[i]&&(c="TwitchSubscriber"):"bttv"===d?window.bdEmotes.BTTV[i]?c="BTTV":window.bdEmotes.BTTV2[i]&&(c="BTTV2"):"ffz"===d&&window.bdEmotes.FrankerFaceZ[i]&&(c="FrankerFaceZ"),!window.bdEmotes[c][i]||!settingsCookie[window.bdEmoteSettingIDs[c]])continue;const m=e[t].match(new RegExp(`([\\s]|^)${Utils.escape(l?i+":"+l:i)}([\\s]|$)`));if(!m)continue;const p=e[t].substring(0,m.index+m[1].length),u=e[t].substring(m.index+m[0].length-m[2].length);e[t]=p;const h=BDV2.react.createElement(BDEmote,{name:i,url:window.bdEmotes[c][i],modifier:l});e.splice(t+1,0,u),e.splice(t+1,0,h)}}const t=e.every(e=>"string"==typeof e&&""==e.replace(/\s*/,"")||!!(e.type&&"BDEmote"==e.type.name)||!!(e.props&&e.props.children&&e.props.children.props&&e.props.children.props.emojiName));if(t)for(let t of e)"object"==typeof t&&("BDEmote"==t.type.name?t.props.jumboable=!0:t.props&&t.props.children&&t.props.children.props&&t.props.children.props.emojiName&&(t.props.children.props.jumboable=!0))}}}})}}))},EmoteModule.prototype.clearEmoteData=async function(){let e=require("fs"),t=bdConfig.dataPath+"emote_data.json",a=e.existsSync(t);a&&e.unlinkSync(t),DataStore.setBDData("emoteCacheDate",new Date().toJSON()),window.bdEmotes={TwitchGlobal:{},TwitchSubscriber:{},BTTV:{},FrankerFaceZ:{},BTTV2:{}}},EmoteModule.prototype.goBack=async function(t){for(let a in t)for(let e in window.bdEmotes[t[a].variable])window[t[a].oldVariable][e]=t[a].getOldData(window.bdEmotes[t[a].variable][e],e)},EmoteModule.prototype.isCacheValid=function(){const e=new Date(DataStore.getBDData("emoteCacheDate")||null),t=new Date,a=Math.round(Math.abs((t.getTime()-e.getTime())/86400000));return!(a>bdConfig.cache.days)||(DataStore.setBDData("emoteCacheDate",t.toJSON()),!1)},EmoteModule.prototype.loadEmoteData=async function(t){const a=require("fs"),n=bdConfig.dataPath+"emote_data.json",o=a.existsSync(n);if(o&&this.isCacheValid()){settingsCookie["fork-ps-2"]&&mainCore.showToast("Loading emotes from cache.",{type:"info"}),Utils.log("[Emotes] Loading emotes from local cache.");const o=await new Promise(e=>{a.readFile(n,"utf8",(t,a)=>{Utils.log("[Emotes] Emotes loaded from cache."),t&&(a={}),e(a)})});let s=Utils.testJSON(o);for(const a in s&&(window.bdEmotes=JSON.parse(o)),t)s=0setTimeout(e,1e3));let e=await this.downloadEmotes(t[a]);window.bdEmotes[t[a].variable]=e}settingsCookie["fork-ps-2"]&&mainCore.showToast("All emotes successfully downloaded.",{type:"success"});try{a.writeFileSync(n,JSON.stringify(window.bdEmotes),"utf8")}catch(e){Utils.err("[Emotes] Could not save emote data.",e)}quickEmoteMenu.init()},EmoteModule.prototype.downloadEmotes=function(e){let t=require("request"),a={url:e.url,timeout:e.timeout?e.timeout:5e3};return Utils.log("[Emotes] Downloading: "+e.variable),new Promise((n,o)=>{t(a,(t,a,s)=>{if(t)return Utils.err("[Emotes] Could not download "+e.variable,t),e.backup?(e.url=e.backup,e.backup=null,e.backupParser&&(e.parser=e.backupParser),n(this.downloadEmotes(e))):o({});let r={};try{r=JSON.parse(s)}catch(a){return Utils.err("[Emotes] Could not download "+e.variable,t),e.backup?(e.url=e.backup,e.backup=null,e.backupParser&&(e.parser=e.backupParser),n(this.downloadEmotes(e))):o({})}for(let n in"function"==typeof e.parser&&(r=e.parser(r)),r)r[n]=e.getEmoteURL(r[n]);n(r),Utils.log("[Emotes] Downloaded: "+e.variable)})})},EmoteModule.prototype.getBlacklist=function(){return new Promise(e=>{$.getJSON("https://cdn.staticaly.com/gh/rauenzi/BetterDiscordApp/master/data/emotefilter.json",function(t){e(bemotes=t.blacklist)})})};var bemotes=[];EmoteModule.prototype.autoCapitalize=function(){$("body").delegate($(".channelTextArea-1LDbYG textarea:first"),"keyup change paste",()=>{if(settingsCookie["bda-es-4"]){var e=$(".channelTextArea-1LDbYG textarea:first").val();if(null!=e){var t=e.split(" ").pop();if(3",t+=" Twitch ",t+=" Favourite ",t+=" Emojis",t+=" ",this.qmeHeader=t;var a="";a+="
",this.teContainer=a;var o="";for(let e in o+="
",this.faContainer=o},QuickEmoteMenu.prototype.favContext=function(t,e){t.stopPropagation();var a=$("
",{id:"rmenu","data-emoteid":$(e).prop("title"),text:"Remove",class:"context-menu theme-dark"});return a.css({top:t.pageY-$("#bda-qem-favourite-container").offset().top,left:t.pageX-$("#bda-qem-favourite-container").offset().left}),$(e).parent().append(a),a.on("click",function(t){return t.preventDefault(),t.stopPropagation(),$(this).remove(),delete quickEmoteMenu.favoriteEmotes[$(this).data("emoteid")],quickEmoteMenu.updateFavorites(),!1}),!1},QuickEmoteMenu.prototype.switchHandler=function(t){this.switchQem($(t).attr("id"))},QuickEmoteMenu.prototype.switchQem=function(e){var t=$("#bda-qem-twitch"),a=$("#bda-qem-favourite"),n=$("#bda-qem-emojis");t.removeClass("active"),a.removeClass("active"),n.removeClass("active"),$(".emojiPicker-3m1S-j").hide(),$("#bda-qem-favourite-container").hide(),$("#bda-qem-twitch-container").hide();"bda-qem-twitch"===e?(t.addClass("active"),$("#bda-qem-twitch-container").show()):"bda-qem-favourite"===e?(a.addClass("active"),$("#bda-qem-favourite-container").show()):"bda-qem-emojis"===e?(n.addClass("active"),$(".emojiPicker-3m1S-j").show(),$(".emojiPicker-3m1S-j .search-bar-inner input, .emojiPicker-3m1S-j .search-bar-inner input").focus()):void 0;this.lastTab=e;var o=$(".emote-icon");o.off(),o.on("click",function(){var e=$(this).attr("title"),t=Utils.getTextArea();Utils.insertText(t[0]," "==t.val().slice(-1)?t.val()+e:t.val()+" "+e)})},QuickEmoteMenu.prototype.obsCallback=function(t){var a=$(t);settingsCookie["bda-es-9"]?a.removeClass("bda-qme-hidden"):a.addClass("bda-qme-hidden");settingsCookie["bda-es-0"]&&(a.prepend(this.qmeHeader),a.append(this.teContainer),a.append(this.faContainer),this.lastTab==null&&(this.lastTab="bda-qem-favourite"),this.switchQem(this.lastTab))},QuickEmoteMenu.prototype.favorite=function(e,t){this.favoriteEmotes.hasOwnProperty(e)||(this.favoriteEmotes[e]=t),this.updateFavorites()},QuickEmoteMenu.prototype.updateFavorites=function(){var e="";for(var t in e+="
",this.faContainer=e,$("#bda-qem-favourite-container").replaceWith(e),DataStore.setBDData("bdfavemotes",btoa(JSON.stringify(this.favoriteEmotes)))};var Utils=class{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 stripBOM(e){return 65279===e.charCodeAt(0)&&(e=e.slice(1)),e}static getTextArea(){return $(".channelTextArea-1LDbYG textarea")}static insertText(e,t){e.focus(),e.selectionStart=0,e.selectionEnd=e.value.length,document.execCommand("insertText",!1,t)}static injectCss(e){$("
",{type:"text/css",rel:"stylesheet",href:e}).appendTo($("head"))}static injectJs(e){$("",{type:"text/javascript",src:e}).appendTo($("body"))}static escapeID(e){return e.replace(/^[^a-z]+|[^\w-]+/gi,"")}static log(e){console.log("%c[BetterDiscord] %c"+e+"","color: #3a71c1; font-weight: 700;","")}static warn(e){console.warn("%c[BetterDiscord] %c"+e+"","color: #E8A400; font-weight: 700;","")}static err(e,t){console.log("%c[BetterDiscord] %c"+e+"","color: red; font-weight: 700;",""),t&&(console.groupCollapsed("%cError: "+t.message,"color: red;"),console.error(t.stack),console.groupEnd())}static escape(e){return e.replace(/[-/\\^$*+?.()|[\]{}]/g,"\\$&")}static testJSON(e){try{return JSON.parse(e),!0}catch(e){return!1}}static suppressErrors(e,t){return(...a)=>{try{return e(...a)}catch(a){console.error("Error occurred in "+t,a)}}}static monkeyPatch(e,t,a){const{before:n,after:o,instead:s,once:r=!1,silent:i=!1,force:l=!1}=a,d=a.displayName||e.displayName||e.name||e.constructor.displayName||e.constructor.name;if(i||console.log("patch",t,"of",d),!e[t])if(l)e[t]=function(){};else return console.error(t,"does not exist for",d);const c=e[t],m=()=>{i||console.log("unpatch",t,"of",d),e[t]=c};return e[t]=function(){const a={thisObject:this,methodArguments:arguments,cancelPatch:m,originalMethod:c,callOriginalMethod:()=>a.returnValue=a.originalMethod.apply(a.thisObject,a.methodArguments)};if(s){const n=Utils.suppressErrors(s,"`instead` callback of "+e[t].displayName)(a);void 0!==n&&(a.returnValue=n)}else n&&Utils.suppressErrors(n,"`before` callback of "+e[t].displayName)(a),a.callOriginalMethod(),o&&Utils.suppressErrors(o,"`after` callback of "+e[t].displayName)(a);return r&&m(),a.returnValue},e[t].__monkeyPatched=!0,e[t].displayName="patched "+(e[t].displayName||t),m}static onRemoved(e,t){const a=new MutationObserver(n=>{for(let o=0;o
t.contains(e));(i||l)&&(a.disconnect(),t())}});a.observe(document.body,{subtree:!0,childList:!0})}};function VoiceMode(){}VoiceMode.prototype.enable=function(){$(".scroller.guild-channels ul").first().css("display","none"),$(".scroller.guild-channels header").first().css("display","none"),$(".app.flex-vertical").first().css("overflow","hidden"),$(".chat-3bRxxu").first().css("visibility","hidden").css("min-width","0px"),$(".flex-vertical.channels-wrap").first().css("flex-grow","100000"),$(".guild-header .btn.btn-hamburger").first().css("visibility","hidden")},VoiceMode.prototype.disable=function(){$(".scroller.guild-channels ul").first().css("display",""),$(".scroller.guild-channels header").first().css("display",""),$(".app.flex-vertical").first().css("overflow",""),$(".chat-3bRxxu").first().css("visibility","").css("min-width",""),$(".flex-vertical.channels-wrap").first().css("flex-grow",""),$(".guild-header .btn.btn-hamburger").first().css("visibility","")},window.bdthemes={},window.bdplugins={};var ContentManager=(()=>{const e=require("path"),t=require("fs"),a=require("module").Module;a.globalPaths.push(e.resolve(require("electron").remote.app.getAppPath(),"node_modules"));class MetaError extends Error{constructor(e){super(e),this.name="MetaError"}}const n=require("module").Module._extensions[".js"],o=a._extensions[".css"]?a._extensions[".css"]:()=>null;return new class{constructor(){this.timeCache={},this.watchers={},a._extensions[".js"]=this.getContentRequire("plugin"),a._extensions[".css"]=this.getContentRequire("theme")}get pluginsFolder(){return this._pluginsFolder||(this._pluginsFolder=t.realpathSync(e.resolve(bdConfig.dataPath+"plugins/")))}get themesFolder(){return this._themesFolder||(this._themesFolder=t.realpathSync(e.resolve(bdConfig.dataPath+"themes/")))}watchContent(a){if(this.watchers[a])return;const n="plugin"===a,o=n?this.pluginsFolder:this.themesFolder,s=n?".plugin.js":".theme.css";this.watchers[a]=t.watch(o,{persistent:!1},async(a,r)=>{if(a&&r&&r.endsWith(s)){await new Promise(e=>setTimeout(e,50));try{t.statSync(e.resolve(o,r))}catch(e){return"ENOENT"===e.code?(delete this.timeCache[r],n?pluginModule.unloadPlugin(Object.values(bdplugins).find(e=>e.filename==r).plugin.getName()):themeModule.unloadTheme(Object.values(bdthemes).find(e=>e.filename==r).name)):void 0}if(t.statSync(e.resolve(o,r)).isFile()){const s=t.statSync(e.resolve(o,r));s&&s.mtime&&s.mtime.getTime()&&"number"==typeof s.mtime.getTime()&&this.timeCache[r]!=s.mtime.getTime()&&(this.timeCache[r]=s.mtime.getTime(),"rename"==a&&(n?pluginModule.loadPlugin(r):themeModule.loadTheme(r)),"change"==a&&(n?pluginModule.reloadPlugin(Object.values(bdplugins).find(e=>e.filename==r).plugin.getName()):themeModule.reloadTheme(Object.values(bdthemes).find(e=>e.filename==r).name)))}}})}unwatchContent(e){this.watchers[e]&&(this.watchers[e].close(),delete this.watcher[e])}extractMeta(e){const t=e.split("\n")[0],a=t.substring(t.lastIndexOf("//META")+6,t.lastIndexOf("*//"));if(0>t.indexOf("META"))throw new MetaError("META was not found.");if(!Utils.testJSON(a))throw new MetaError("META could not be parsed.");const n=JSON.parse(a);if(!n.name)throw new MetaError("META missing name data.");return n}getContentRequire(a){const s="plugin"===a,r=this,i=s?n:o;return function(a,n){const o=s?r.pluginsFolder:r.themesFolder,l=e.resolve(o,e.basename(n));if(!t.existsSync(l)||n!==t.realpathSync(l))return Reflect.apply(i,this,arguments);let d=t.readFileSync(n,"utf8");d=Utils.stripBOM(d);const c=r.extractMeta(d);c.filename=e.basename(n),s||(c.css=d.split("\n").slice(1).join("\n"),d=`module.exports = ${JSON.stringify(c)};`),s&&(d+=`\nmodule.exports = ${JSON.stringify(c)};\nmodule.exports.type = ${c.name};`),a._compile(d,n)}}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:""}}loadContent(t,a){if("undefined"==typeof t||"undefined"==typeof a)return;const n="plugin"===a,o=n?this.pluginsFolder:this.themesFolder;try{require(e.resolve(o,t))}catch(e){return{name:t,file:t,reason:"Could not be compiled.",error:{message:e.message,stack:e.stack}}}const s=require(e.resolve(o,t));if(n){if(!s.type)return;try{s.plugin=new s.type,delete bdplugins[s.plugin.getName()],bdplugins[s.plugin.getName()]=s}catch(e){return{name:t,file:t,reason:"Could not be constructed.",error:{message:e.message,stack:e.stack}}}}else delete bdthemes[s.name],bdthemes[s.name]=s}unloadContent(t,a){if("undefined"==typeof t||"undefined"==typeof a)return;const n="plugin"===a?this.pluginsFolder:this.themesFolder;try{delete require.original.cache[require.original.resolve(e.resolve(n,t))]}catch(e){return e}}isLoaded(t,a){const n="plugin"===a?this.pluginsFolder:this.themesFolder;try{require.original.cache[require.original.resolve(e.resolve(n,t))]}catch(e){return!1}return!0}reloadContent(e,t){return this.unloadContent(e,t)?void 0:this.loadContent(e,t)}loadNewContent(a){const n="plugin"===a,o=n?".plugin.js":".theme.css",s=n?this.pluginsFolder:this.themesFolder,r=t.readdirSync(s),i=Object.values(n?bdplugins:bdthemes),l=i.filter(e=>!r.includes(e.filename)).map(e=>n?e.plugin.getName():e.name),d=r.filter(a=>!i.find(e=>e.filename==a)&&a.endsWith(o)&&t.statSync(e.resolve(s,a)).isFile());return{added:d,removed:l}}loadAllContent(a){const n="plugin"===a,o=n?".plugin.js":".theme.css",s=n?this.pluginsFolder:this.themesFolder,r=[],i=t.readdirSync(s);for(const n of i){if(!t.statSync(e.resolve(s,n)).isFile()||!n.endsWith(o))continue;const i=this.loadContent(n,a);i&&r.push(i)}return r}loadPlugins(){return this.loadAllContent("plugin")}loadThemes(){return this.loadAllContent("theme")}}})(),pluginCookie={};function PluginModule(){}PluginModule.prototype.loadPlugins=function(){this.loadPluginData(),bdpluginErrors=ContentManager.loadPlugins();for(var e=Object.keys(bdplugins),t=0;tt.filename==e).plugin;settingsCookie["fork-ps-2"]&&BdApi.showToast(`${a.getName()} v${a.getVersion()} was loaded.`,{type:"success"})},PluginModule.prototype.unloadPlugin=function(e){pluginCookie[e]&&this.disablePlugin(e,!0);const t=ContentManager.unloadContent(bdplugins[e].filename,"plugin");return delete bdplugins[e],t&&settingsCookie["fork-ps-2"]?(Utils.err(`${e} could not be unloaded. It may have not been loaded yet.`,t),BdApi.showToast(`${e} could not be unloaded. It may have not been loaded yet.`,{type:"error"})):void(settingsCookie["fork-ps-2"]&&BdApi.showToast(`${e} was unloaded.`,{type:"success"}))},PluginModule.prototype.reloadPlugin=function(e){const t=pluginCookie[e];t&&this.stopPlugin(e,!0);const a=ContentManager.reloadContent(bdplugins[e].filename,"plugin");return t&&(bdplugins[e].plugin.load&&"function"==typeof bdplugins[e].plugin.load&&bdplugins[e].plugin.load(),this.startPlugin(e,!0)),a&&settingsCookie["fork-ps-2"]?(Utils.err(`${e} could not be reloaded.`,a),BdApi.showToast(`${e} could not be reloaded.`,{type:"error"})):void(settingsCookie["fork-ps-2"]&&BdApi.showToast(`${e} v${bdplugins[e].plugin.getVersion()} was reloaded.`,{type:"success"}))},PluginModule.prototype.updatePluginList=function(){const e=ContentManager.loadNewContent("plugin");for(const t of e.added)this.loadPlugin(t);for(const t of e.removed)this.unloadPlugin(t)},PluginModule.prototype.loadPluginData=function(){let e=DataStore.getSettingGroup("plugins");e&&(pluginCookie=e)},PluginModule.prototype.savePluginData=function(){DataStore.setSettingGroup("plugins",pluginCookie)},PluginModule.prototype.newMessage=function(){for(var e,t=Object.keys(bdplugins),a=0;a",{id:Utils.escapeID(e),html:unescape(bdthemes[e].css)}));for(let e in themeCookie)bdthemes[e]||delete themeCookie[e];this.saveThemeData()},ThemeModule.prototype.enableTheme=function(e,t=!1){themeCookie[e]=!0,this.saveThemeData(),$("head").append($(""),$("#customcss").html(this.editor.session.getValue()).detach().appendTo(document.head)}saveCss(){DataStore.setBDData("bdcustomcss",btoa(this.editor.session.getValue()))}}class V2C_CssEditor extends BDV2.reactComponent{constructor(e){super(e);let t=this;t.props.lines=0,t.setInitialState(),t.attach=t.attach.bind(t),t.detachedEditor=BDV2.react.createElement(V2C_CssEditorDetached,{attach:t.attach}),t.onClick=t.onClick.bind(t),t.updateCss=t.updateCss.bind(t),t.saveCss=t.saveCss.bind(t),t.detach=t.detach.bind(t)}setInitialState(){this.state={detached:this.props.detached||BDV2.editorDetached}}componentDidMount(){this.editor=ace.edit("bd-customcss-editor"),this.editor.setTheme("ace/theme/monokai"),this.editor.session.setMode("ace/mode/css"),this.editor.setShowPrintMargin(!1),this.editor.setFontSize(14),this.editor.on("change",()=>{settingsCookie["bda-css-0"]&&(this.saveCss(),this.updateCss())})}componentWillUnmount(){this.editor.destroy()}componentDidUpdate(e,t){let a=this;t.detached&&!a.state.detached&&BDV2.reactDom.unmountComponentAtNode(a.detachedRoot)}codeMirror(){}get options(){return{lineNumbers:!0,mode:"css",indentUnit:4,theme:"material",scrollbarStyle:"simple"}}get css(){let e=DataStore.getBDData("bdcustomcss"),t="";return e&&""!==e&&(t=atob(e)),t}updateLineCount(){let e=this.refs.editor.value.split("\n").length;e==this.props.lines||(this.refs.lines.textContent=Array.from(Array(e),(e,t)=>t+1).join(".\n")+".",this.props.lines=e)}render(){let e=this,{detached:t}=e.state;return BDV2.react.createElement("div",{className:"contentColumn-2hrIYH contentColumnDefault-1VQkGM content-column default",style:{padding:"60px 40px 0px"}},t&&BDV2.react.createElement("div",{id:"editor-detached"},BDV2.react.createElement(V2Components.SettingsTitle,{text:"Custom CSS Editor"}),BDV2.react.createElement("h3",null,"Editor Detached"),BDV2.react.createElement("button",{className:"btn btn-primary",onClick:()=>{e.attach()}},"Attach")),!t&&BDV2.react.createElement("div",null,BDV2.react.createElement(V2Components.SettingsTitle,{text:"Custom CSS Editor"}),BDV2.react.createElement("div",{className:"editor-wrapper"},BDV2.react.createElement("div",{id:"bd-customcss-editor",className:"editor",ref:"editor"},e.css)),BDV2.react.createElement("div",{id:"bd-customcss-attach-controls"},BDV2.react.createElement("ul",{className:"checkbox-group"},BDV2.react.createElement(V2Components.Checkbox,{id:"live-update",text:"Live Update",onChange:this.onChange,checked:settingsCookie["bda-css-0"]})),BDV2.react.createElement("div",{id:"bd-customcss-detach-controls-button"},BDV2.react.createElement("button",{style:{borderRadius:"3px 0 0 3px",borderRight:"1px solid #3f4146"},className:"btn btn-primary",onClick:()=>{e.onClick("update")}},"Update"),BDV2.react.createElement("button",{style:{borderRadius:"0",borderLeft:"1px solid #2d2d2d",borderRight:"1px solid #2d2d2d"},className:"btn btn-primary",onClick:()=>{e.onClick("save")}},"Save"),BDV2.react.createElement("button",{style:{borderRadius:"0 3px 3px 0",borderLeft:"1px solid #3f4146"},className:"btn btn-primary",onClick:()=>{e.onClick("detach")}},"Detach"),BDV2.react.createElement("span",{style:{fontSize:"10px",marginLeft:"5px"}},"Unsaved changes are lost on detach")))))}onClick(e){let t=this;"update"===e?t.updateCss():"save"===e?t.saveCss():"detach"===e?t.detach():void 0}onChange(e,t){"live-update"===e?(settingsCookie["bda-css-0"]=t,mainCore.saveSettings()):void 0}updateCss(){0==$("#customcss").length&&$("head").append(""),$("#customcss").html(this.editor.session.getValue()).detach().appendTo(document.head)}saveCss(){DataStore.setBDData("bdcustomcss",btoa(this.editor.session.getValue()))}detach(){let e=this;e.setState({detached:!0});let t=e.detachedRoot;return t?void BDV2.reactDom.render(e.detachedEditor,t):void console.log("FAILED TO INJECT ROOT: .app")}get detachedRoot(){let e=$("#bd-customcss-detach-container");return e.length?e[0]:this.injectDetachedRoot()?this.detachedRoot:null}injectDetachedRoot(){return!!$(".app").length&&($("
",{id:"bd-customcss-detach-container"}).insertAfter($(".app")),!0)}attach(){let e=this;e.setState({detached:!1})}}class V2C_List extends BDV2.reactComponent{constructor(e){super(e)}render(){return BDV2.react.createElement("ul",{className:this.props.className},this.props.children)}}class V2C_ContentColumn extends BDV2.reactComponent{constructor(e){super(e)}render(){return BDV2.react.createElement("div",{className:"contentColumn-2hrIYH contentColumnDefault-1VQkGM content-column default"},BDV2.react.createElement("h2",{className:"ui-form-title h2 margin-reset margin-bottom-20"},this.props.title),this.props.children)}}class V2C_PluginCard extends BDV2.reactComponent{constructor(e){super(e);let t=this;t.onChange=t.onChange.bind(t),t.showSettings=t.showSettings.bind(t),t.setInitialState(),t.hasSettings="function"==typeof t.props.plugin.getSettingsPanel,t.settingsPanel="",this.reload=this.reload.bind(this)}setInitialState(){this.state={checked:pluginCookie[this.props.plugin.getName()],settings:!1,reloads:0}}componentDidUpdate(){if(this.state.settings){if("object"==typeof this.settingsPanel&&this.refs.settingspanel.appendChild(this.settingsPanel),!settingsCookie["fork-ps-3"])return;var e=(e,t)=>{let a=e.scrollTop,n=a+e.clientHeight,o=t.offsetTop,s=o+t.clientHeight;return on};let t=$(BDV2.reactDom.findDOMNode(this)),a=t.parents(".scroller");if(!e(a[0],t[0]))return;a.animate({scrollTop:t.offset().top-a.offset().top+a.scrollTop()-30},300)}}reload(){const e=this.props.plugin.getName();pluginModule.reloadPlugin(e),this.props.plugin=bdplugins[e].plugin,this.setState({reloads:this.state.reloads+1})}render(){let e=this,{plugin:t}=this.props,a=t.getName(),n=t.getAuthor(),o=t.getDescription(),s=t.getVersion(),r=bdplugins[a].website,i=bdplugins[a].source;if(this.state.settings){try{e.settingsPanel=t.getSettingsPanel()}catch(e){Utils.err("Unable to get settings panel for "+t.getName()+".",e)}return BDV2.react.createElement("li",{className:"settings-open ui-switch-item"},BDV2.react.createElement("div",{style:{float:"right",cursor:"pointer"},onClick:()=>{this.refs.settingspanel.innerHTML="",e.setState({settings:!1})}},BDV2.react.createElement(V2Components.XSvg,null)),"object"==typeof e.settingsPanel&&BDV2.react.createElement("div",{id:`plugin-settings-${a}`,className:"plugin-settings",ref:"settingspanel"}),"object"!=typeof e.settingsPanel&&BDV2.react.createElement("div",{id:`plugin-settings-${a}`,className:"plugin-settings",ref:"settingspanel",dangerouslySetInnerHTML:{__html:e.settingsPanel}}))}return BDV2.react.createElement("li",{"data-name":a,"data-version":s,className:"settings-closed ui-switch-item"},BDV2.react.createElement("div",{className:"bda-header"},BDV2.react.createElement("span",{className:"bda-header-title"},BDV2.react.createElement("span",{className:"bda-name"},a)," v",BDV2.react.createElement("span",{className:"bda-version"},s)," by ",BDV2.react.createElement("span",{className:"bda-author"},n)),BDV2.react.createElement("div",{className:"bda-controls"},!settingsCookie["fork-ps-5"]&&BDV2.react.createElement(V2Components.TooltipWrap(V2Components.ReloadIcon,{color:"black",side:"top",text:"Reload"}),{className:"bd-reload-card",onClick:this.reload}),BDV2.react.createElement("label",{className:"ui-switch-wrapper ui-flex-child",style:{flex:"0 0 auto"}},BDV2.react.createElement("input",{checked:this.state.checked,onChange:this.onChange,className:"ui-switch-checkbox",type:"checkbox"}),BDV2.react.createElement("div",{className:this.state.checked?"ui-switch checked":"ui-switch"})))),BDV2.react.createElement("div",{className:"bda-description-wrap scroller-wrap fade"},BDV2.react.createElement("div",{className:"bda-description scroller"},o)),(r||i||this.hasSettings)&&BDV2.react.createElement("div",{className:"bda-footer"},BDV2.react.createElement("span",{className:"bda-links"},r&&BDV2.react.createElement("a",{className:"bda-link bda-link-website",href:r,target:"_blank"},"Website"),r&&i&&" | ",i&&BDV2.react.createElement("a",{className:"bda-link bda-link-source",href:i,target:"_blank"},"Source")),this.hasSettings&&BDV2.react.createElement("button",{onClick:this.showSettings,className:"bda-settings-button",disabled:!this.state.checked},"Settings")))}onChange(){this.setState({checked:!this.state.checked}),pluginModule.togglePlugin(this.props.plugin.getName())}showSettings(){this.hasSettings&&this.setState({settings:!0})}}class V2C_ThemeCard extends BDV2.reactComponent{constructor(e){super(e),this.setInitialState(),this.onChange=this.onChange.bind(this),this.reload=this.reload.bind(this)}setInitialState(){this.state={checked:themeCookie[this.props.theme.name],reloads:0}}reload(){const e=this.props.theme.name,t=themeModule.reloadTheme(e);t?mainCore.showToast(`Could not reload ${bdthemes[e].name}. Check console for details.`,{type:"error"}):mainCore.showToast(`${bdthemes[e].name} v${bdthemes[e].version} has been reloaded.`,{type:"success"}),this.props.theme=bdthemes[e],this.setState({reloads:this.state.reloads+1})}render(){let{theme:e}=this.props,t=e.name,a=e.description,n=e.version,o=e.author,s=bdthemes[t].website,r=bdthemes[t].source;return BDV2.react.createElement("li",{"data-name":t,"data-version":n,className:"settings-closed ui-switch-item"},BDV2.react.createElement("div",{className:"bda-header"},BDV2.react.createElement("span",{className:"bda-header-title"},BDV2.react.createElement("span",{className:"bda-name"},t)," v",BDV2.react.createElement("span",{className:"bda-version"},n)," by ",BDV2.react.createElement("span",{className:"bda-author"},o)),BDV2.react.createElement("div",{className:"bda-controls"},!settingsCookie["fork-ps-5"]&&BDV2.react.createElement(V2Components.TooltipWrap(V2Components.ReloadIcon,{color:"black",side:"top",text:"Reload"}),{className:"bd-reload-card",onClick:this.reload}),BDV2.react.createElement("label",{className:"ui-switch-wrapper ui-flex-child",style:{flex:"0 0 auto"}},BDV2.react.createElement("input",{checked:this.state.checked,onChange:this.onChange,className:"ui-switch-checkbox",type:"checkbox"}),BDV2.react.createElement("div",{className:this.state.checked?"ui-switch checked":"ui-switch"})))),BDV2.react.createElement("div",{className:"bda-description-wrap scroller-wrap fade"},BDV2.react.createElement("div",{className:"bda-description scroller"},a)),(s||r)&&BDV2.react.createElement("div",{className:"bda-footer"},BDV2.react.createElement("span",{className:"bda-links"},s&&BDV2.react.createElement("a",{className:"bda-link",href:s,target:"_blank"},"Website"),s&&r&&" | ",r&&BDV2.react.createElement("a",{className:"bda-link",href:r,target:"_blank"},"Source"))))}onChange(){this.setState({checked:!this.state.checked}),themeModule.toggleTheme(this.props.theme.name)}}class V2Cs_TabBar{static get Item(){return V2C_TabBarItem}static get Header(){return V2C_TabBarHeader}static get Separator(){return V2C_TabBarSeparator}}class V2Components{static get SettingsPanel(){return V2C_SettingsPanel}static get Switch(){return V2C_Switch}static get Scroller(){return V2C_Scroller}static get TabBar(){return V2Cs_TabBar}static get SideBar(){return V2C_SideBar}static get Tools(){return V2C_Tools}static get SettingsTitle(){return V2C_SettingsTitle}static get CssEditor(){return V2C_CssEditor}static get Checkbox(){return V2C_Checkbox}static get List(){return V2C_List}static get PluginCard(){return V2C_PluginCard}static get ThemeCard(){return V2C_ThemeCard}static get ContentColumn(){return V2C_ContentColumn}static get ReloadIcon(){return V2C_ReloadIcon}static get XSvg(){return V2C_XSvg}static get Layer(){return V2C_Layer}static get SidebarView(){return V2C_SidebarView}static get ServerCard(){return V2C_ServerCard}static TooltipWrap(e,t){const{style:a="black",side:n="top",text:o=""}=t,s=BDV2.KeyGenerator();return class extends BDV2.reactComponent{constructor(e){super(e),this.onMouseEnter=this.onMouseEnter.bind(this),this.onMouseLeave=this.onMouseLeave.bind(this)}componentDidMount(){this.node=BDV2.reactDom.findDOMNode(this),this.node.addEventListener("mouseenter",this.onMouseEnter),this.node.addEventListener("mouseleave",this.onMouseLeave)}componentWillUnmount(){this.node.removeEventListener("mouseenter",this.onMouseEnter),this.node.removeEventListener("mouseleave",this.onMouseLeave)}onMouseEnter(){const{left:e,top:t,width:r,height:i}=this.node.getBoundingClientRect();BDV2.Tooltips.show(s,{position:n,text:o,color:a,targetWidth:r,targetHeight:i,windowWidth:Utils.screenWidth,windowHeight:Utils.screenHeight,x:e,y:t});const l=new MutationObserver(e=>{e.forEach(e=>{const t=Array.from(e.removedNodes),a=-1e.contains(this.node));(a||n)&&(this.onMouseLeave(),l.disconnect())})});l.observe(document.body,{subtree:!0,childList:!0})}onMouseLeave(){BDV2.Tooltips.hide(s)}render(){return BDV2.react.createElement(e,this.props)}}}}class V2_SettingsPanel_Sidebar{constructor(e){this.onClick=e}get items(){return[{text:"Core",id:"core"},{text:"Zere's Fork",id:"fork"},{text:"Emotes",id:"emotes"},{text:"Custom CSS",id:"customcss"},{text:"Plugins",id:"plugins"},{text:"Themes",id:"themes"}]}get component(){return BDV2.react.createElement("span",null,BDV2.react.createElement(V2Components.SideBar,{onClick:this.onClick,headerText:"Bandaged BD",items:this.items}),BDV2.react.createElement("div",{style:{fontSize:"12px",fontWeight:"600",color:"#72767d",padding:"2px 10px"}},`BD v${bdConfig.version} by `,BDV2.react.createElement("a",{href:"https://github.com/Jiiks/",target:"_blank"},"Jiiks")),BDV2.react.createElement("div",{style:{fontSize:"12px",fontWeight:"600",color:"#72767d",padding:"2px 10px"}},`BBD v${bbdVersion} by `,BDV2.react.createElement("a",{href:"https://github.com/rauenzi/",target:"_blank"},"Zerebos")))}get root(){let e=$("#bd-settings-sidebar");return e.length?e[0]:this.injectRoot()?this.root:null}injectRoot(){let e=$("[class*='side-'] > [class*='item-']:not([class*=Danger])").last();return!!e.length&&($(" ",{id:"bd-settings-sidebar"}).insertBefore(e.prev()),!0)}render(){let e=this.root;return e?void(BDV2.reactDom.render(this.component,e),Utils.onRemoved(e,()=>{BDV2.reactDom.unmountComponentAtNode(e)})):void console.log("FAILED TO LOCATE ROOT: [class*='side-'] > [class*='item-']:not([class*=Danger])")}}class V2_SettingsPanel{constructor(){let e=this;e.sideBarOnClick=e.sideBarOnClick.bind(e),e.onChange=e.onChange.bind(e),e.updateSettings=this.updateSettings.bind(e),e.sidebar=new V2_SettingsPanel_Sidebar(e.sideBarOnClick)}get root(){let e=$("#bd-settingspane-container");return e.length?e[0]:this.injectRoot()?this.root:null}injectRoot(){if(!$(".layer-3QrUeG .standardSidebarView-3F1I7i, .layer-3QrUeG .ui-standard-sidebar-view").length)return!1;const e=$("
",{class:"contentRegion-3nDuYy content-region",id:"bd-settingspane-container"});return $(".layer-3QrUeG .standardSidebarView-3F1I7i, .layer-3QrUeG .ui-standard-sidebar-view").append(e),Utils.onRemoved(e[0],()=>{BDV2.reactDom.unmountComponentAtNode(e[0])}),!0}get coreSettings(){return this.getSettings("core")}get forkSettings(){return this.getSettings("fork")}get emoteSettings(){return this.getSettings("emote")}getSettings(e){return Object.keys(settings).reduce((t,a)=>{let n=settings[a];return n.cat===e&&n.implemented&&!n.hidden&&(n.text=a,t.push(n)),t},[])}sideBarOnClick(e){let t=this;$(".contentRegion-3nDuYy, .content-region").first().hide(),$(t.root).show();"core"===e?t.renderCoreSettings():"fork"===e?t.renderForkSettings():"emotes"===e?t.renderEmoteSettings():"customcss"===e?t.renderCustomCssEditor():"plugins"===e?t.renderPluginPane():"themes"===e?t.renderThemePane():void 0}onClick(){}onChange(e,t){settingsCookie[e]=t,this.updateSettings()}updateSettings(){let e=settingsCookie;e["bda-es-0"]?$("#twitchcord-button-container").show():$("#twitchcord-button-container").hide(),e["bda-gs-b"]?$("body").addClass("bd-blue"):$("body").removeClass("bd-blue"),e["bda-gs-2"]?$("body").addClass("bd-minimal"):$("body").removeClass("bd-minimal"),e["bda-gs-3"]?$("body").addClass("bd-minimal-chan"):$("body").removeClass("bd-minimal-chan"),e["bda-gs-1"]?$("#bd-pub-li").show():$("#bd-pub-li").hide(),e["bda-gs-4"]?voiceMode.enable():voiceMode.disable(),e["bda-gs-5"]?$("#app-mount").addClass("bda-dark"):$("#app-mount").removeClass("bda-dark"),e["bda-gs-6"]&&mainCore.inject24Hour(),e["bda-gs-7"]?mainCore.injectColoredText():mainCore.removeColoredText(),e["fork-ps-4"]?classNormalizer.start():classNormalizer.stop(),e["fork-ps-5"]?(ContentManager.watchContent("plugin"),ContentManager.watchContent("theme")):(ContentManager.unwatchContent("plugin"),ContentManager.unwatchContent("theme"));const t=BdApi.getWindowPreference("transparent");t!=e["fork-wp-1"]&&(BdApi.setWindowPreference("transparent",e["fork-wp-1"]),e["fork-wp-1"]?BdApi.setWindowPreference("backgroundColor",null):BdApi.setWindowPreference("backgroundColor","#2f3136")),e["bda-gs-8"]?dMode.enable(e["fork-dm-1"]):dMode.disable(),mainCore.saveSettings()}renderSidebar(){let e=this;$("[class*='side-'] > [class*='item-']").off("click.v2settingspanel").on("click.v2settingspanel",()=>{BDV2.reactDom.unmountComponentAtNode(e.root),$(e.root).hide(),$(".contentRegion-3nDuYy, .content-region").first().show()}),e.sidebar.render()}get coreComponent(){return BDV2.react.createElement(V2Components.Scroller,{contentColumn:!0,fade:!0,dark:!0,children:[BDV2.react.createElement(V2Components.SettingsPanel,{key:"cspanel",title:"Core Settings",onChange:this.onChange,settings:this.coreSettings}),BDV2.react.createElement(V2Components.Tools,{key:"tools"})]})}get forkComponent(){return BDV2.react.createElement(V2Components.Scroller,{contentColumn:!0,fade:!0,dark:!0,children:[BDV2.react.createElement(V2Components.SettingsPanel,{key:"fspanel",title:"Zere's Fork Settings",onChange:this.onChange,settings:this.forkSettings,button:{title:"Clear Emote Cache",onClick:()=>{emoteModule.clearEmoteData(),emoteModule.init(),quickEmoteMenu.init()}}}),BDV2.react.createElement(V2Components.Tools,{key:"tools"})]})}get emoteComponent(){return BDV2.react.createElement(V2Components.Scroller,{contentColumn:!0,fade:!0,dark:!0,children:[BDV2.react.createElement(V2Components.SettingsPanel,{key:"espanel",title:"Emote Settings",onChange:this.onChange,settings:this.emoteSettings}),BDV2.react.createElement(V2Components.Tools,{key:"tools"})]})}get customCssComponent(){return BDV2.react.createElement(V2Components.Scroller,{contentColumn:!0,fade:!0,dark:!0,children:[BDV2.react.createElement(V2Components.CssEditor,{key:"csseditor"}),BDV2.react.createElement(V2Components.Tools,{key:"tools"})]})}get pluginsComponent(){let e=Object.keys(bdplugins).sort((e,t)=>e.toLowerCase().localeCompare(t.toLowerCase())).reduce((e,t)=>(e.push(BDV2.react.createElement(V2Components.PluginCard,{key:t,plugin:bdplugins[t].plugin})),e),[]),t=BDV2.react.createElement(V2Components.List,{key:"plugin-list",className:"bda-slist",children:e}),a=!settingsCookie["fork-ps-5"]&&BDV2.react.createElement(V2Components.TooltipWrap(V2Components.ReloadIcon,{color:"black",side:"top",text:"Reload Plugin List"}),{className:"bd-reload-header",size:"18px",onClick:async()=>{pluginModule.updatePluginList(),this.sideBarOnClick("plugins")}}),n=BDV2.react.createElement("button",{key:"folder-button",className:"bd-pfbtn",onClick:()=>{require("electron").shell.openItem(ContentManager.pluginsFolder)}},"Open Plugin Folder"),o=BDV2.react.createElement(V2Components.ContentColumn,{key:"pcolumn",title:"Plugins",children:[a,n,t]});return BDV2.react.createElement(V2Components.Scroller,{contentColumn:!0,fade:!0,dark:!0,children:[o,BDV2.react.createElement(V2Components.Tools,{key:"tools"})]})}get themesComponent(){let e=Object.keys(bdthemes).sort((e,t)=>e.toLowerCase().localeCompare(t.toLowerCase())).reduce((e,t)=>(e.push(BDV2.react.createElement(V2Components.ThemeCard,{key:t,theme:bdthemes[t]})),e),[]),t=BDV2.react.createElement(V2Components.List,{key:"theme-list",className:"bda-slist",children:e}),a=!settingsCookie["fork-ps-5"]&&BDV2.react.createElement(V2Components.TooltipWrap(V2Components.ReloadIcon,{color:"black",side:"top",text:"Reload Theme List"}),{className:"bd-reload-header",size:"18px",onClick:async()=>{themeModule.updateThemeList(),this.sideBarOnClick("themes")}}),n=BDV2.react.createElement("button",{key:"folder-button",className:"bd-pfbtn",onClick:()=>{require("electron").shell.openItem(ContentManager.themesFolder)}},"Open Theme Folder"),o=BDV2.react.createElement(V2Components.ContentColumn,{key:"tcolumn",title:"Themes",children:[a,n,t]});return BDV2.react.createElement(V2Components.Scroller,{contentColumn:!0,fade:!0,dark:!0,children:[o,BDV2.react.createElement(V2Components.Tools,{key:"tools"})]})}renderCoreSettings(){let e=this.root;return e?void BDV2.reactDom.render(this.coreComponent,e):void console.log("FAILED TO LOCATE ROOT: .layer-3QrUeG .standardSidebarView-3F1I7i")}renderForkSettings(){let e=this.root;return e?void BDV2.reactDom.render(this.forkComponent,e):void console.log("FAILED TO LOCATE ROOT: .layer-3QrUeG .standardSidebarView-3F1I7i")}renderEmoteSettings(){let e=this.root;return e?void BDV2.reactDom.render(this.emoteComponent,e):void console.log("FAILED TO LOCATE ROOT: .layer-3QrUeG .standardSidebarView-3F1I7i")}renderCustomCssEditor(){let e=this.root;return e?void BDV2.reactDom.render(this.customCssComponent,e):void console.log("FAILED TO LOCATE ROOT: .layer-3QrUeG .standardSidebarView-3F1I7i")}renderPluginPane(){let e=this.root;return e?void BDV2.reactDom.render(this.pluginsComponent,e):void console.log("FAILED TO LOCATE ROOT: .layer-3QrUeG .standardSidebarView-3F1I7i")}renderThemePane(){let e=this.root;return e?void BDV2.reactDom.render(this.themesComponent,e):void console.log("FAILED TO LOCATE ROOT: .layer-3QrUeG .standardSidebarView-3F1I7i")}}class V2C_Layer extends BDV2.reactComponent{constructor(e){super(e)}componentDidMount(){$(window).on(`keyup.${this.props.id}`,t=>{27===t.which&&BDV2.reactDom.unmountComponentAtNode(this.refs.root.parentNode)}),$(`#${this.props.id}`).animate({opacity:1},{step:function(e){$(this).css("transform",`scale(${1.1-.1*e}) translateZ(0px)`)},duration:200,done:()=>{$(`#${this.props.id}`).css("opacity","").css("transform","")}})}componentWillUnmount(){$(window).off(`keyup.${this.props.id}`),$(`#${this.props.id}`).animate({opacity:0},{step:function(e){$(this).css("transform",`scale(${1.1-.1*e}) translateZ(0px)`)},duration:200,done:()=>{$(`#${this.props.rootId}`).remove()}}),$("[class*=\"layer-\"]").removeClass("publicServersOpen").animate({opacity:1},{step:function(e){$(this).css("transform",`scale(${.07*e+.93}) translateZ(0px)`)},duration:200,done:()=>{$("[class*=\"layer-\"]").css("opacity","").css("transform","")}})}componentWillMount(){$("[class*=\"layer-\"]").addClass("publicServersOpen").animate({opacity:0},{step:function(e){$(this).css("transform",`scale(${.07*e+.93}) translateZ(0px)`)},duration:200})}render(){return BDV2.react.createElement("div",{className:"layer bd-layer layer-3QrUeG",id:this.props.id,ref:"root",style:{opacity:0,transform:"scale(1.1) translateZ(0px)"}},this.props.children)}}class V2C_SidebarView extends BDV2.reactComponent{constructor(e){super(e)}render(){let{sidebar:e,content:t,tools:a}=this.props.children;return BDV2.react.createElement("div",{className:"standardSidebarView-3F1I7i ui-standard-sidebar-view"},BDV2.react.createElement("div",{className:"sidebarRegion-VFTUkN sidebar-region"},BDV2.react.createElement(V2Components.Scroller,{key:"sidebarScroller",ref:"sidebarScroller",sidebar:!0,fade:e.fade||!0,dark:e.dark||!0,children:e.component})),BDV2.react.createElement("div",{className:"contentRegion-3nDuYy content-region"},BDV2.react.createElement("div",{className:"contentTransitionWrap-3hqOEW content-transition-wrap"},BDV2.react.createElement("div",{className:"scrollerWrap-2lJEkd firefoxFixScrollFlex-cnI2ix contentRegionScrollerWrap-3YZXdm content-region-scroller-wrap scrollerThemed-2oenus themeGhost-28MSn0 scrollerTrack-1ZIpsv"},BDV2.react.createElement("div",{className:"scroller-2FKFPG firefoxFixScrollFlex-cnI2ix contentRegionScroller-26nc1e content-region-scroller scroller",ref:"contentScroller"},BDV2.react.createElement("div",{className:"contentColumn-2hrIYH contentColumnDefault-1VQkGM content-column default"},t.component),a.component)))))}}class V2_PublicServers{constructor(){}get component(){return BDV2.react.createElement(V2Components.Layer,{rootId:"pubslayerroot",id:"pubslayer",children:BDV2.react.createElement(V2C_PublicServers,{rootId:"pubslayerroot"})})}get root(){let e=document.getElementById("pubslayerroot");return e?e:this.injectRoot()?this.root:null}injectRoot(){return!!$(".layers, .layers-3iHuyZ").length&&($(".layers, .layers-3iHuyZ").append($("
",{id:"pubslayerroot"})),!0)}render(){let e=this.root;return e?void BDV2.reactDom.render(this.component,e):void console.log("FAILED TO LOCATE ROOT: .layers")}get button(){let e=$("
",{class:BDV2.guildClasses.guild,id:"bd-pub-li",css:{height:"20px",display:settingsCookie["bda-gs-1"]?"":"none"}}).append($("
",{class:BDV2.guildClasses.guildInner,css:{height:"20px","border-radius":"4px"}}).append($(" ",{}).append($("
",{text:"public",id:"bd-pub-button",css:{"line-height":"20px","font-size":"12px"},click:()=>{this.render()}}))));return e}initialize(){let e=$(`.${BDV2.guildClasses.guilds}>:first-child`);e.after(this.button)}}class V2C_ServerCard extends BDV2.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(){let{server:e}=this.props;return BDV2.react.createElement("div",{className:`card-3Qj_Yx cardPrimary-1Hv-to marginBottom8-AtZOdT bd-server-card${e.pinned?" bd-server-card-pinned":""}`},BDV2.react.createElement("img",{ref:"img",className:"bd-server-image",src:e.iconUrl,onError:this.handleError.bind(this)}),BDV2.react.createElement("div",{className:"flexChild-faoVW3 bd-server-content"},BDV2.react.createElement("div",{className:"flex-1xMQg5 flex-1O1GKY horizontal-1ae9ci horizontal-2EEEnY directionRow-3v3tfG noWrap-3jynv6 bd-server-header"},BDV2.react.createElement("h5",{className:"h5-18_1nd defaultColor-1_ajX0 margin-reset bd-server-name"},e.name),BDV2.react.createElement("h5",{className:"h5-18_1nd defaultColor-1_ajX0 margin-reset bd-server-member-count"},e.members," Members")),BDV2.react.createElement("div",{className:"flex-1xMQg5 flex-1O1GKY horizontal-1ae9ci horizontal-2EEEnY directionRow-3v3tfG noWrap-3jynv6"},BDV2.react.createElement("div",{className:"scrollerWrap-2lJEkd scrollerThemed-2oenus themeGhostHairline-DBD-2d scrollerFade-1Ijw5y bd-server-description-container"},BDV2.react.createElement("div",{className:"scroller-2FKFPG scroller bd-server-description"},e.description))),BDV2.react.createElement("div",{className:"flex-1xMQg5 flex-1O1GKY horizontal-1ae9ci horizontal-2EEEnY directionRow-3v3tfG noWrap-3jynv6 bd-server-footer"},BDV2.react.createElement("div",{className:"flexChild-faoVW3 bd-server-tags",style:{flex:"1 1 auto"}},e.categories.join(", ")),this.state.joined&&BDV2.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"}},BDV2.react.createElement("div",{className:"ui-button-contents"},"Joined")),e.error&&BDV2.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"}},BDV2.react.createElement("div",{className:"ui-button-contents"},"Error")),!e.error&&!this.state.joined&&BDV2.react.createElement("button",{type:"button",className:"button-38aScr lookFilled-1Gx00P colorBrand-3pXr91 sizeMin-1mJd1x grow-q77ONN",style:{minHeight:"12px",marginTop:"4px"},onClick:()=>{this.join()}},BDV2.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 V2C_PublicServers extends BDV2.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=BDV2.WebpackModules.findByUniqueProperties(["getGuilds"]),this.AvatarDefaults=BDV2.WebpackModules.findByUniqueProperties(["getUserAvatarURL","DEFAULT_AVATARS"]),this.InviteActions=BDV2.WebpackModules.findByUniqueProperties(["acceptInvite"]),this.SortedGuildStore=BDV2.WebpackModules.findByUniqueProperties(["getSortedGuilds"])}componentDidMount(){this.checkConnection()}setInitialState(){this.state={selectedCategory:-1,title:"Loading...",loading:!0,servers:[],next:null,connection:{state:0,user:null}}}close(){BDV2.reactDom.unmountComponentAtNode(document.getElementById(this.props.rootId))}search(e,t){let a=this;$.ajax({method:"GET",url:`${a.endPoint}${e}${e?"&schema=new":"?schema=new"}`,success:e=>{let n=e.results.reduce((e,t)=>(t.joined=!1,e.push(t),e),[]);t||(n=a.state.servers.concat(n));let o=e.size+e.from;e.next=`?from=${o}`,a.state.term&&(e.next+=`&term=${a.state.term}`),a.state.selectedCategory&&(e.next+=`&category=${a.categoryButtons[a.state.selectedCategory]}`),o>=e.total&&(o=e.total,e.next=null);let s=`Showing 1-${o} of ${e.total} results in ${a.categoryButtons[a.state.selectedCategory]}`;a.state.term&&(s+=` for ${a.state.term}`),a.setState({loading:!1,title:s,servers:n,next:e.next}),t&&(a.refs.sbv.refs.contentScroller.scrollTop=0)},error:()=>{a.setState({loading:!1,title:"Failed to load servers. Check console for details"})}})}join(e){return e.props.pinned?this.InviteActions.acceptInvite(e.props.invite_code):void $.ajax({method:"GET",url:`${this.joinEndPoint}/${e.props.server.identifier}`,headers:{Accept:"application/json;","Content-Type":"application/json;","x-discord-id":this.state.connection.user.id,"x-discord-token":this.state.connection.user.accessToken},crossDomain:!0,xhrFields:{withCredentials:!0},success:()=>{e.setState({joined:!0})}})}connect(){var e=Math.round;let t=this,a=t.windowOptions;a.x=e(window.screenX+window.innerWidth/2-a.width/2),a.y=e(window.screenY+window.innerHeight/2-a.height/2),t.joinWindow=new(window.require("electron").remote.BrowserWindow)(a);let n=window.location.hostname.split(".")[0],o=t.connectEndPoint+("canary"===n||"ptb"===n?`/${n}`:"")+"?betterDiscord";t.joinWindow.webContents.on("did-navigate",(e,a)=>{"https://join.discordservers.com/session"!=a||(t.joinWindow.close(),t.checkConnection())}),t.joinWindow.loadURL(o)}get windowOptions(){return{width:500,height:550,backgroundColor:"#282b30",show:!0,resizable:!1,maximizable:!1,minimizable:!1,alwaysOnTop:!0,frame:!1,center:!1}}get bdServer(){let e=this.SortedGuildStore.guildPositions,t=this.AvatarDefaults.DEFAULT_AVATARS;return BDV2.react.createElement(V2Components.ServerCard,{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://join.discordservers.com"}get connectEndPoint(){return"https://join.discordservers.com/connect"}checkConnection(){let e=this;try{$.ajax({method:"GET",url:`${e.joinEndPoint}/session`,headers:{Accept:"application/json;","Content-Type":"application/json;"},crossDomain:!0,xhrFields:{withCredentials:!0},success:t=>{e.setState({selectedCategory:0,connection:{state:2,user:t}}),e.search("",!0)},error:t=>{if(403===t.status||404===t.status)return void e.setState({title:"Not connected to discordservers.com!",loading:!0,selectedCategory:-1,connection:{state:1,user:null}})}})}catch(t){e.setState({title:"Not connected to discordservers.com!",loading:!0,selectedCategory:-1,connection:{state:1,user:null}})}}render(){return BDV2.react.createElement(V2Components.SidebarView,{ref:"sbv",children:this.component})}get component(){return{sidebar:{component:this.sidebar},content:{component:this.content},tools:{component:BDV2.react.createElement(V2Components.Tools,{key:"pt",ref:"tools",onClick:this.close})}}}get sidebar(){return BDV2.react.createElement("div",{className:"sidebar",key:"ps"},BDV2.react.createElement("div",{className:"ui-tab-bar SIDE"},BDV2.react.createElement("div",{className:"ui-tab-bar-header",style:{fontSize:"16px"}},"Public Servers"),BDV2.react.createElement(V2Components.TabBar.Separator,null),this.searchInput,BDV2.react.createElement(V2Components.TabBar.Separator,null),BDV2.react.createElement(V2Components.TabBar.Header,{text:"Categories"}),this.categoryButtons.map((e,t)=>BDV2.react.createElement(V2Components.TabBar.Item,{id:t,onClick:this.changeCategory,key:t,text:e,selected:this.state.selectedCategory===t})),BDV2.react.createElement(V2Components.TabBar.Separator,null),this.footer,this.connection))}get searchInput(){return BDV2.react.createElement("div",{className:"ui-form-item"},BDV2.react.createElement("div",{className:"ui-text-input flex-vertical",style:{width:"172px",marginLeft:"10px"}},BDV2.react.createElement("input",{ref:"searchinput",onKeyDown:this.searchKeyDown,onChange:()=>{},type:"text",className:"input default",placeholder:"Search...",maxLength:"50"})))}searchKeyDown(t){let e=this;if(e.state.loading||13!==t.which)return;e.setState({loading:!0,title:"Loading...",term:t.target.value});let a=`?term=${t.target.value}`;0!==e.state.selectedCategory&&(a+=`&category=${e.categoryButtons[e.state.selectedCategory]}`),e.search(a,!0)}get categoryButtons(){return["All","FPS Games","MMO Games","Strategy Games","Sports Games","Puzzle Games","Retro Games","Party Games","Tabletop Games","Sandbox Games","Simulation Games","Community","Language","Programming","Other"]}changeCategory(e){let t=this;if(!t.state.loading)return t.refs.searchinput.value="",t.setState({loading:!0,selectedCategory:e,title:"Loading...",term:null}),0===e?void t.search("",!0):void t.search(`?category=${t.categoryButtons[e]}`,!0)}get content(){var e=Math.floor;let t=this,a=this.SortedGuildStore.guildPositions,n=this.AvatarDefaults.DEFAULT_AVATARS;return 1===t.state.connection.state?t.notConnected:[BDV2.react.createElement("div",{ref:"content",key:"pc",className:"contentColumn-2hrIYH contentColumnDefault-1VQkGM content-column default"},BDV2.react.createElement(V2Components.SettingsTitle,{text:t.state.title}),t.bdServer,t.state.servers.map(o=>BDV2.react.createElement(V2Components.ServerCard,{key:o.identifier,server:o,join:t.join,guildList:a,fallback:n[e(5*Math.random())]})),t.state.next&&BDV2.react.createElement("button",{type:"button",onClick:()=>{t.state.loading||(t.setState({loading:!0}),t.search(t.state.next,!1))},className:"ui-button filled brand small grow",style:{width:"100%",marginTop:"10px",marginBottom:"10px"}},BDV2.react.createElement("div",{className:"ui-button-contents"},t.state.loading?"Loading":"Load More")),0`),o=[a(e),a(t)];n.find(".tab-bar-item").on("click",t=>{t.preventDefault(),n.find(".tab-bar-item").removeClass("selected"),$(t.target).addClass("selected"),n.find(".scroller").empty().append(o[$(t.target).index()])}),n.find(".footer button").on("click",()=>{n.addClass("closing"),setTimeout(()=>{n.remove()},300)}),n.find(".bd-backdrop").on("click",()=>{n.addClass("closing"),setTimeout(()=>{n.remove()},300)}),n.appendTo("#app-mount"),e.length?n.find(".tab-bar-item")[0].click():n.find(".tab-bar-item")[1].click()},Core.prototype.showToast=function(e,t={}){if(!bdConfig.deferLoaded)return;if(!document.querySelector(".bd-toasts")){let e=document.createElement("div");e.classList.add("bd-toasts");let t=document.querySelector(".chat-3bRxxu form, #friends, .noChannel-Z1DQK7, .activityFeed-28jde9");e.style.setProperty("left",t?t.getBoundingClientRect().left+"px":"0px"),e.style.setProperty("width",t?t.offsetWidth+"px":"100%"),e.style.setProperty("bottom",(document.querySelector(".chat-3bRxxu form")?document.querySelector(".chat-3bRxxu form").offsetHeight:80)+"px"),document.querySelector(".app").appendChild(e)}const{type:a="",icon:n=!0,timeout:o=3e3}=t;let s=document.createElement("div");s.classList.add("bd-toast"),a&&s.classList.add("toast-"+a),a&&n&&s.classList.add("icon"),s.innerText=e,document.querySelector(".bd-toasts").appendChild(s),setTimeout(()=>{s.classList.add("closing"),setTimeout(()=>{s.remove(),document.querySelectorAll(".bd-toasts .bd-toast").length||document.querySelector(".bd-toasts").remove()},300)},o)},window.emotesFfz={},window.emotesBTTV={},window.emotesBTTV2={},window.emotesTwitch={},window.subEmotesTwitch={},window.bdEmotes={TwitchGlobal:{},TwitchSubscriber:{},BTTV:{},FrankerFaceZ:{},BTTV2:{}},window.bdEmoteSettingIDs={TwitchGlobal:"bda-es-7",TwitchSubscriber:"bda-es-7",BTTV:"bda-es-2",FrankerFaceZ:"bda-es-1",BTTV2:"bda-es-2"};function EmoteModule(){}EmoteModule.prototype.init=async function(){this.modifiers=["flip","spin","pulse","spin2","spin3","1spin","2spin","3spin","tr","bl","br","shake","shake2","shake3","flap"],this.overrides=["twitch","bttv","ffz"],this.categories=["TwitchGlobal","TwitchSubscriber","BTTV","BTTV2","FrankerFaceZ"];let e={TwitchGlobal:{url:"https://twitchemotes.com/api_cache/v3/global.json",backup:"https://cdn.staticaly.com/gh/rauenzi/BetterDiscordApp/master/data/emotedata_twitch_global.json",variable:"TwitchGlobal",oldVariable:"emotesTwitch",getEmoteURL:t=>`https://static-cdn.jtvnw.net/emoticons/v1/${t.id}/1.0`,getOldData:(e,t)=>({id:e.match(/\/([0-9]+)\//)[1],code:t,emoticon_set:0,description:null})},TwitchSubscriber:{url:"https://twitchemotes.com/api_cache/v3/subscriber.json",backup:"https://cdn.staticaly.com/gh/rauenzi/BetterDiscordApp/master/data/emotedata_twitch_subscriber.json",variable:"TwitchSubscriber",oldVariable:"subEmotesTwitch",parser:e=>{let t={};for(let a in e){let n=e[a];for(let a,o=0,e=n.emotes.length;oe,getEmoteURL:t=>`https://static-cdn.jtvnw.net/emoticons/v1/${t}/1.0`,getOldData:e=>e.match(/\/([0-9]+)\//)[1]},FrankerFaceZ:{url:"https://cdn.staticaly.com/gh/rauenzi/BetterDiscordApp/master/data/emotedata_ffz.json",variable:"FrankerFaceZ",oldVariable:"emotesFfz",getEmoteURL:t=>`https://cdn.frankerfacez.com/emoticon/${t}/1`,getOldData:e=>e.match(/\/([0-9]+)\//)[1]},BTTV:{url:"https://api.betterttv.net/emotes",variable:"BTTV",oldVariable:"emotesBTTV",parser:t=>{let a={};for(let n,o=0,e=t.emotes.length;o`${t}`,getOldData:e=>e},BTTV2:{url:"https://cdn.staticaly.com/gh/rauenzi/BetterDiscordApp/master/data/emotedata_bttv.json",variable:"BTTV2",oldVariable:"emotesBTTV2",getEmoteURL:t=>`https://cdn.betterttv.net/emote/${t}/1x`,getOldData:e=>e.match(/emote\/(.+)\//)[1]}};for(await this.getBlacklist(),await this.loadEmoteData(e);!BDV2.MessageContentComponent;)await new Promise(e=>setTimeout(e,100));this.cancelEmoteRender||(this.cancelEmoteRender=Utils.monkeyPatch(BDV2.MessageContentComponent.prototype,"render",{after:({returnValue:e})=>{Utils.monkeyPatch(e.props,"children",{silent:!0,after:({returnValue:e})=>{const t=e.props.children[1];if(t.props.children){const e=t.props.children[1];if(e&&e.length){for(let t=0;ti.length)continue;this.modifiers.includes(l)&&settingsCookie["bda-es-8"]||(l=""),this.overrides.includes(d)?l=d:d="";let c=this.categories[a];if("twitch"===d?window.bdEmotes.TwitchGlobal[i]?c="TwitchGlobal":window.bdEmotes.TwitchSubscriber[i]&&(c="TwitchSubscriber"):"bttv"===d?window.bdEmotes.BTTV[i]?c="BTTV":window.bdEmotes.BTTV2[i]&&(c="BTTV2"):"ffz"===d&&window.bdEmotes.FrankerFaceZ[i]&&(c="FrankerFaceZ"),!window.bdEmotes[c][i]||!settingsCookie[window.bdEmoteSettingIDs[c]])continue;const m=e[t].match(new RegExp(`([\\s]|^)${Utils.escape(l?i+":"+l:i)}([\\s]|$)`));if(!m)continue;const p=e[t].substring(0,m.index+m[1].length),u=e[t].substring(m.index+m[0].length-m[2].length);e[t]=p;const h=BDV2.react.createElement(BDEmote,{name:i,url:window.bdEmotes[c][i],modifier:l});e.splice(t+1,0,u),e.splice(t+1,0,h)}}const t=e.every(e=>"string"==typeof e&&""==e.replace(/\s*/,"")||!!(e.type&&"BDEmote"==e.type.name)||!!(e.props&&e.props.children&&e.props.children.props&&e.props.children.props.emojiName));if(t)for(let t of e)"object"==typeof t&&("BDEmote"==t.type.name?t.props.jumboable=!0:t.props&&t.props.children&&t.props.children.props&&t.props.children.props.emojiName&&(t.props.children.props.jumboable=!0))}}}})}}))},EmoteModule.prototype.clearEmoteData=async function(){let e=require("fs"),t=bdConfig.dataPath+"emote_data.json",a=e.existsSync(t);a&&e.unlinkSync(t),DataStore.setBDData("emoteCacheDate",new Date().toJSON()),window.bdEmotes={TwitchGlobal:{},TwitchSubscriber:{},BTTV:{},FrankerFaceZ:{},BTTV2:{}}},EmoteModule.prototype.goBack=async function(t){for(let a in t)for(let e in window.bdEmotes[t[a].variable])window[t[a].oldVariable][e]=t[a].getOldData(window.bdEmotes[t[a].variable][e],e)},EmoteModule.prototype.isCacheValid=function(){const e=new Date(DataStore.getBDData("emoteCacheDate")||null),t=new Date,a=Math.round(Math.abs((t.getTime()-e.getTime())/86400000));return!(a>bdConfig.cache.days)||(DataStore.setBDData("emoteCacheDate",t.toJSON()),!1)},EmoteModule.prototype.loadEmoteData=async function(t){const a=require("fs"),n=bdConfig.dataPath+"emote_data.json",o=a.existsSync(n);if(o&&this.isCacheValid()){settingsCookie["fork-ps-2"]&&mainCore.showToast("Loading emotes from cache.",{type:"info"}),Utils.log("[Emotes] Loading emotes from local cache.");const o=await new Promise(e=>{a.readFile(n,"utf8",(t,a)=>{Utils.log("[Emotes] Emotes loaded from cache."),t&&(a={}),e(a)})});let s=Utils.testJSON(o);for(const a in s&&(window.bdEmotes=JSON.parse(o)),t)s=0setTimeout(e,1e3));let e=await this.downloadEmotes(t[a]);window.bdEmotes[t[a].variable]=e}settingsCookie["fork-ps-2"]&&mainCore.showToast("All emotes successfully downloaded.",{type:"success"});try{a.writeFileSync(n,JSON.stringify(window.bdEmotes),"utf8")}catch(e){Utils.err("[Emotes] Could not save emote data.",e)}quickEmoteMenu.init()},EmoteModule.prototype.downloadEmotes=function(e){let t=require("request"),a={url:e.url,timeout:e.timeout?e.timeout:5e3};return Utils.log("[Emotes] Downloading: "+e.variable),new Promise((n,o)=>{t(a,(t,a,s)=>{if(t)return Utils.err("[Emotes] Could not download "+e.variable,t),e.backup?(e.url=e.backup,e.backup=null,e.backupParser&&(e.parser=e.backupParser),n(this.downloadEmotes(e))):o({});let r={};try{r=JSON.parse(s)}catch(a){return Utils.err("[Emotes] Could not download "+e.variable,t),e.backup?(e.url=e.backup,e.backup=null,e.backupParser&&(e.parser=e.backupParser),n(this.downloadEmotes(e))):o({})}for(let n in"function"==typeof e.parser&&(r=e.parser(r)),r)r[n]=e.getEmoteURL(r[n]);n(r),Utils.log("[Emotes] Downloaded: "+e.variable)})})},EmoteModule.prototype.getBlacklist=function(){return new Promise(e=>{$.getJSON("https://cdn.staticaly.com/gh/rauenzi/BetterDiscordApp/master/data/emotefilter.json",function(t){e(bemotes=t.blacklist)})})};var bemotes=[];EmoteModule.prototype.autoCapitalize=function(){$("body").delegate($(".channelTextArea-1LDbYG textarea:first"),"keyup change paste",()=>{if(settingsCookie["bda-es-4"]){var e=$(".channelTextArea-1LDbYG textarea:first").val();if(null!=e){var t=e.split(" ").pop();if(3",t+=" Twitch ",t+=" Favourite ",t+=" Emojis",t+=" ",this.qmeHeader=t;var a="";a+="
",this.teContainer=a;var o="";for(let e in o+="
",this.faContainer=o},QuickEmoteMenu.prototype.favContext=function(t,e){t.stopPropagation();var a=$("
",{id:"rmenu","data-emoteid":$(e).prop("title"),text:"Remove",class:"context-menu theme-dark"});return a.css({top:t.pageY-$("#bda-qem-favourite-container").offset().top,left:t.pageX-$("#bda-qem-favourite-container").offset().left}),$(e).parent().append(a),a.on("click",function(t){return t.preventDefault(),t.stopPropagation(),$(this).remove(),delete quickEmoteMenu.favoriteEmotes[$(this).data("emoteid")],quickEmoteMenu.updateFavorites(),!1}),!1},QuickEmoteMenu.prototype.switchHandler=function(t){this.switchQem($(t).attr("id"))},QuickEmoteMenu.prototype.switchQem=function(e){var t=$("#bda-qem-twitch"),a=$("#bda-qem-favourite"),n=$("#bda-qem-emojis");t.removeClass("active"),a.removeClass("active"),n.removeClass("active"),$(".emojiPicker-3m1S-j").hide(),$("#bda-qem-favourite-container").hide(),$("#bda-qem-twitch-container").hide();"bda-qem-twitch"===e?(t.addClass("active"),$("#bda-qem-twitch-container").show()):"bda-qem-favourite"===e?(a.addClass("active"),$("#bda-qem-favourite-container").show()):"bda-qem-emojis"===e?(n.addClass("active"),$(".emojiPicker-3m1S-j").show(),$(".emojiPicker-3m1S-j .search-bar-inner input, .emojiPicker-3m1S-j .search-bar-inner input").focus()):void 0;this.lastTab=e;var o=$(".emote-icon");o.off(),o.on("click",function(){var e=$(this).attr("title"),t=Utils.getTextArea();Utils.insertText(t[0]," "==t.val().slice(-1)?t.val()+e:t.val()+" "+e)})},QuickEmoteMenu.prototype.obsCallback=function(t){var a=$(t);settingsCookie["bda-es-9"]?a.removeClass("bda-qme-hidden"):a.addClass("bda-qme-hidden");settingsCookie["bda-es-0"]&&(a.prepend(this.qmeHeader),a.append(this.teContainer),a.append(this.faContainer),this.lastTab==null&&(this.lastTab="bda-qem-favourite"),this.switchQem(this.lastTab))},QuickEmoteMenu.prototype.favorite=function(e,t){this.favoriteEmotes.hasOwnProperty(e)||(this.favoriteEmotes[e]=t),this.updateFavorites()},QuickEmoteMenu.prototype.updateFavorites=function(){var e="";for(var t in e+="
",this.faContainer=e,$("#bda-qem-favourite-container").replaceWith(e),DataStore.setBDData("bdfavemotes",btoa(JSON.stringify(this.favoriteEmotes)))};var Utils=class{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 stripBOM(e){return 65279===e.charCodeAt(0)&&(e=e.slice(1)),e}static getTextArea(){return $(".channelTextArea-1LDbYG textarea")}static insertText(e,t){e.focus(),e.selectionStart=0,e.selectionEnd=e.value.length,document.execCommand("insertText",!1,t)}static injectCss(e){$("
",{type:"text/css",rel:"stylesheet",href:e}).appendTo($("head"))}static injectJs(e){return new Promise(t=>{$("",{type:"text/javascript",src:e,onload:t}).appendTo($("body"))})}static escapeID(e){return e.replace(/^[^a-z]+|[^\w-]+/gi,"")}static log(e){console.log("%c[BandagedBD] %c"+e+"","color: #3a71c1; font-weight: 700;","")}static warn(e){console.warn("%c[BandagedBD] %c"+e+"","color: #E8A400; font-weight: 700;","")}static err(e,t){console.log("%c[BandagedBD] %c"+e+"","color: red; font-weight: 700;",""),t&&(console.groupCollapsed("%cError: "+t.message,"color: red;"),console.error(t.stack),console.groupEnd())}static escape(e){return e.replace(/[-/\\^$*+?.()|[\]{}]/g,"\\$&")}static testJSON(e){try{return JSON.parse(e),!0}catch(e){return!1}}static suppressErrors(e,t){return(...a)=>{try{return e(...a)}catch(a){console.error("Error occurred in "+t,a)}}}static monkeyPatch(e,t,a){const{before:n,after:o,instead:s,once:r=!1,silent:i=!1,force:l=!1}=a,d=a.displayName||e.displayName||e.name||e.constructor.displayName||e.constructor.name;if(i||console.log("patch",t,"of",d),!e[t])if(l)e[t]=function(){};else return console.error(t,"does not exist for",d);const c=e[t],m=()=>{i||console.log("unpatch",t,"of",d),e[t]=c};return e[t]=function(){const a={thisObject:this,methodArguments:arguments,cancelPatch:m,originalMethod:c,callOriginalMethod:()=>a.returnValue=a.originalMethod.apply(a.thisObject,a.methodArguments)};if(s){const n=Utils.suppressErrors(s,"`instead` callback of "+e[t].displayName)(a);void 0!==n&&(a.returnValue=n)}else n&&Utils.suppressErrors(n,"`before` callback of "+e[t].displayName)(a),a.callOriginalMethod(),o&&Utils.suppressErrors(o,"`after` callback of "+e[t].displayName)(a);return r&&m(),a.returnValue},e[t].__monkeyPatched=!0,e[t].displayName="patched "+(e[t].displayName||t),m}static onRemoved(e,t){const a=new MutationObserver(n=>{for(let o=0;o
t.contains(e));(i||l)&&(a.disconnect(),t())}});a.observe(document.body,{subtree:!0,childList:!0})}};function VoiceMode(){}VoiceMode.prototype.enable=function(){$(".scroller.guild-channels ul").first().css("display","none"),$(".scroller.guild-channels header").first().css("display","none"),$(".app.flex-vertical").first().css("overflow","hidden"),$(".chat-3bRxxu").first().css("visibility","hidden").css("min-width","0px"),$(".flex-vertical.channels-wrap").first().css("flex-grow","100000"),$(".guild-header .btn.btn-hamburger").first().css("visibility","hidden")},VoiceMode.prototype.disable=function(){$(".scroller.guild-channels ul").first().css("display",""),$(".scroller.guild-channels header").first().css("display",""),$(".app.flex-vertical").first().css("overflow",""),$(".chat-3bRxxu").first().css("visibility","").css("min-width",""),$(".flex-vertical.channels-wrap").first().css("flex-grow",""),$(".guild-header .btn.btn-hamburger").first().css("visibility","")},window.bdthemes={},window.bdplugins={};var ContentManager=(()=>{const e=require("path"),t=require("fs"),a=require("module").Module;a.globalPaths.push(e.resolve(require("electron").remote.app.getAppPath(),"node_modules"));class MetaError extends Error{constructor(e){super(e),this.name="MetaError"}}const n=a._extensions[".js"],o=a._extensions[".css"]?a._extensions[".css"]:()=>null;return new class{constructor(){this.timeCache={},this.watchers={},a._extensions[".js"]=this.getContentRequire("plugin"),a._extensions[".css"]=this.getContentRequire("theme")}get pluginsFolder(){return this._pluginsFolder||(this._pluginsFolder=t.realpathSync(e.resolve(bdConfig.dataPath+"plugins/")))}get themesFolder(){return this._themesFolder||(this._themesFolder=t.realpathSync(e.resolve(bdConfig.dataPath+"themes/")))}watchContent(a){if(this.watchers[a])return;const n="plugin"===a,o=n?this.pluginsFolder:this.themesFolder,s=n?".plugin.js":".theme.css";this.watchers[a]=t.watch(o,{persistent:!1},async(a,r)=>{if(a&&r&&r.endsWith(s)){await new Promise(e=>setTimeout(e,50));try{t.statSync(e.resolve(o,r))}catch(e){return"ENOENT"===e.code?(delete this.timeCache[r],n?pluginModule.unloadPlugin(r):themeModule.unloadTheme(r)):void 0}if(t.statSync(e.resolve(o,r)).isFile()){const s=t.statSync(e.resolve(o,r));s&&s.mtime&&s.mtime.getTime()&&"number"==typeof s.mtime.getTime()&&this.timeCache[r]!=s.mtime.getTime()&&(this.timeCache[r]=s.mtime.getTime(),"rename"==a&&(n?pluginModule.loadPlugin(r):themeModule.loadTheme(r)),"change"==a&&(n?pluginModule.reloadPlugin(r):themeModule.reloadTheme(r)))}}})}unwatchContent(e){this.watchers[e]&&(this.watchers[e].close(),delete this.watcher[e])}extractMeta(e){const t=e.split("\n")[0],a=t.substring(t.lastIndexOf("//META")+6,t.lastIndexOf("*//"));if(0>t.indexOf("META"))throw new MetaError("META was not found.");if(!Utils.testJSON(a))throw new MetaError("META could not be parsed.");const n=JSON.parse(a);if(!n.name)throw new MetaError("META missing name data.");return n}getContentRequire(a){const s="plugin"===a,r=this,i=s?n:o;return function(a,n){const o=s?r.pluginsFolder:r.themesFolder,l=e.resolve(o,e.basename(n));if(!t.existsSync(l)||n!==t.realpathSync(l))return Reflect.apply(i,this,arguments);let d=t.readFileSync(n,"utf8");d=Utils.stripBOM(d);const c=r.extractMeta(d);c.filename=e.basename(n),s||(c.css=d.split("\n").slice(1).join("\n"),d=`module.exports = ${JSON.stringify(c)};`),s&&(d+=`\nmodule.exports = ${JSON.stringify(c)};\nmodule.exports.type = ${c.name};`),a._compile(d,n)}}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:""}}loadContent(t,a){if("undefined"==typeof t||"undefined"==typeof a)return;const n="plugin"===a,o=n?this.pluginsFolder:this.themesFolder;try{require(e.resolve(o,t))}catch(e){return{name:t,file:t,message:"Could not be compiled.",error:{message:e.message,stack:e.stack}}}const s=require(e.resolve(o,t));if(n){if(!s.type)return;try{s.plugin=new s.type,delete bdplugins[s.plugin.getName()],bdplugins[s.plugin.getName()]=s}catch(e){return{name:t,file:t,message:"Could not be constructed.",error:{message:e.message,stack:e.stack}}}}else delete bdthemes[s.name],bdthemes[s.name]=s}unloadContent(t,a){if("undefined"==typeof t||"undefined"==typeof a)return;const n="plugin"===a?this.pluginsFolder:this.themesFolder;try{delete require.cache[require.resolve(e.resolve(n,t))]}catch(e){return{name:t,file:t,message:"Could not be unloaded.",error:{message:e.message,stack:e.stack}}}}isLoaded(t,a){const n="plugin"===a?this.pluginsFolder:this.themesFolder;try{require.cache[require.resolve(e.resolve(n,t))]}catch(e){return!1}return!0}reloadContent(e,t){const a=this.unloadContent(e,t);return a?a:this.loadContent(e,t)}loadNewContent(a){const n="plugin"===a,o=n?".plugin.js":".theme.css",s=n?this.pluginsFolder:this.themesFolder,r=t.readdirSync(s),i=Object.values(n?bdplugins:bdthemes),l=i.filter(e=>!r.includes(e.filename)).map(e=>n?e.plugin.getName():e.name),d=r.filter(a=>!i.find(e=>e.filename==a)&&a.endsWith(o)&&t.statSync(e.resolve(s,a)).isFile());return{added:d,removed:l}}loadAllContent(a){const n="plugin"===a,o=n?".plugin.js":".theme.css",s=n?this.pluginsFolder:this.themesFolder,r=[],i=t.readdirSync(s);for(const n of i){if(!t.statSync(e.resolve(s,n)).isFile()||!n.endsWith(o))continue;const i=this.loadContent(n,a);i&&r.push(i)}return r}loadPlugins(){return this.loadAllContent("plugin")}loadThemes(){return this.loadAllContent("theme")}}})(),pluginCookie={};function PluginModule(){}PluginModule.prototype.loadPlugins=function(){this.loadPluginData(),bdpluginErrors=ContentManager.loadPlugins();for(var e=Object.keys(bdplugins),t=0;tt.filename==e).plugin;settingsCookie["fork-ps-2"]&&BdApi.showToast(`${a.getName()} v${a.getVersion()} was loaded.`,{type:"success"}),BDEvents.dispatch("plugin-loaded",a.getName())},PluginModule.prototype.unloadPlugin=function(e){const t=Object.values(bdplugins).find(t=>t.filename==e)||bdplugins[e];if(t){const e=t.plugin.getName();pluginCookie[e]&&this.disablePlugin(e,!0);const a=ContentManager.unloadContent(bdplugins[e].filename,"plugin");return delete bdplugins[e],a?(settingsCookie["fork-ps-1"]&&mainCore.showContentErrors({plugins:[a]}),settingsCookie["fork-ps-2"]&&BdApi.showToast(`${e} could not be unloaded. It may have not been loaded yet.`,{type:"error"}),Utils.err(`${e} could not be unloaded. It may have not been loaded yet.`,a)):void(settingsCookie["fork-ps-2"]&&BdApi.showToast(`${e} was unloaded.`,{type:"success"}),BDEvents.dispatch("plugin-unloaded",e))}},PluginModule.prototype.reloadPlugin=function(e){const t=Object.values(bdplugins).find(t=>t.filename==e)||bdplugins[e];if(!t)return this.loadPlugin(e);const a=t.plugin.getName(),n=pluginCookie[a];n&&this.stopPlugin(a,!0);const o=ContentManager.reloadContent(bdplugins[a].filename,"plugin");return n&&(bdplugins[a].plugin.load&&"function"==typeof bdplugins[a].plugin.load&&bdplugins[a].plugin.load(),this.startPlugin(a,!0)),o?(settingsCookie["fork-ps-1"]&&mainCore.showContentErrors({plugins:[o]}),settingsCookie["fork-ps-2"]&&BdApi.showToast(`${a} could not be reloaded.`,{type:"error"}),Utils.err(`${a} could not be reloaded.`,o)):void(settingsCookie["fork-ps-2"]&&BdApi.showToast(`${a} v${bdplugins[a].plugin.getVersion()} was reloaded.`,{type:"success"}),BDEvents.dispatch("plugin-reloaded",a))},PluginModule.prototype.updatePluginList=function(){const e=ContentManager.loadNewContent("plugin");for(const t of e.added)this.loadPlugin(t);for(const t of e.removed)this.unloadPlugin(t)},PluginModule.prototype.loadPluginData=function(){let e=DataStore.getSettingGroup("plugins");e&&(pluginCookie=e)},PluginModule.prototype.savePluginData=function(){DataStore.setSettingGroup("plugins",pluginCookie)},PluginModule.prototype.newMessage=function(){for(var e,t=Object.keys(bdplugins),a=0;a",{id:Utils.escapeID(e),html:unescape(bdthemes[e].css)}));for(let e in themeCookie)bdthemes[e]||delete themeCookie[e];this.saveThemeData()},ThemeModule.prototype.enableTheme=function(e,t=!1){themeCookie[e]=!0,this.saveThemeData(),$("head").append($(""),$("#customcss").html(this.editor.session.getValue()).detach().appendTo(document.head)}saveCss(){DataStore.setBDData("bdcustomcss",btoa(this.editor.session.getValue()))}}class V2C_CssEditor extends BDV2.reactComponent{constructor(e){super(e);let t=this;t.props.lines=0,t.setInitialState(),t.attach=t.attach.bind(t),t.detachedEditor=BDV2.react.createElement(V2C_CssEditorDetached,{attach:t.attach}),t.onClick=t.onClick.bind(t),t.updateCss=t.updateCss.bind(t),t.saveCss=t.saveCss.bind(t),t.detach=t.detach.bind(t)}setInitialState(){this.state={detached:this.props.detached||BDV2.editorDetached}}componentDidMount(){this.editor=ace.edit("bd-customcss-editor"),this.editor.setTheme("ace/theme/monokai"),this.editor.session.setMode("ace/mode/css"),this.editor.setShowPrintMargin(!1),this.editor.setFontSize(14),this.editor.on("change",()=>{settingsCookie["bda-css-0"]&&(this.saveCss(),this.updateCss())})}componentWillUnmount(){this.editor.destroy()}componentDidUpdate(e,t){let a=this;t.detached&&!a.state.detached&&BDV2.reactDom.unmountComponentAtNode(a.detachedRoot)}codeMirror(){}get options(){return{lineNumbers:!0,mode:"css",indentUnit:4,theme:"material",scrollbarStyle:"simple"}}get css(){let e=DataStore.getBDData("bdcustomcss"),t="";return e&&""!==e&&(t=atob(e)),t}updateLineCount(){let e=this.refs.editor.value.split("\n").length;e==this.props.lines||(this.refs.lines.textContent=Array.from(Array(e),(e,t)=>t+1).join(".\n")+".",this.props.lines=e)}render(){let e=this,{detached:t}=e.state;return BDV2.react.createElement("div",{className:"contentColumn-2hrIYH contentColumnDefault-1VQkGM content-column default",style:{padding:"60px 40px 0px"}},t&&BDV2.react.createElement("div",{id:"editor-detached"},BDV2.react.createElement(V2Components.SettingsTitle,{text:"Custom CSS Editor"}),BDV2.react.createElement("h3",null,"Editor Detached"),BDV2.react.createElement("button",{className:"btn btn-primary",onClick:()=>{e.attach()}},"Attach")),!t&&BDV2.react.createElement("div",null,BDV2.react.createElement(V2Components.SettingsTitle,{text:"Custom CSS Editor"}),BDV2.react.createElement("div",{className:"editor-wrapper"},BDV2.react.createElement("div",{id:"bd-customcss-editor",className:"editor",ref:"editor"},e.css)),BDV2.react.createElement("div",{id:"bd-customcss-attach-controls"},BDV2.react.createElement("ul",{className:"checkbox-group"},BDV2.react.createElement(V2Components.Checkbox,{id:"live-update",text:"Live Update",onChange:this.onChange,checked:settingsCookie["bda-css-0"]})),BDV2.react.createElement("div",{id:"bd-customcss-detach-controls-button"},BDV2.react.createElement("button",{style:{borderRadius:"3px 0 0 3px",borderRight:"1px solid #3f4146"},className:"btn btn-primary",onClick:()=>{e.onClick("update")}},"Update"),BDV2.react.createElement("button",{style:{borderRadius:"0",borderLeft:"1px solid #2d2d2d",borderRight:"1px solid #2d2d2d"},className:"btn btn-primary",onClick:()=>{e.onClick("save")}},"Save"),BDV2.react.createElement("button",{style:{borderRadius:"0 3px 3px 0",borderLeft:"1px solid #3f4146"},className:"btn btn-primary",onClick:()=>{e.onClick("detach")}},"Detach"),BDV2.react.createElement("span",{style:{fontSize:"10px",marginLeft:"5px"}},"Unsaved changes are lost on detach")))))}onClick(e){let t=this;"update"===e?t.updateCss():"save"===e?t.saveCss():"detach"===e?t.detach():void 0}onChange(e,t){"live-update"===e?(settingsCookie["bda-css-0"]=t,mainCore.saveSettings()):void 0}updateCss(){0==$("#customcss").length&&$("head").append(""),$("#customcss").html(this.editor.session.getValue()).detach().appendTo(document.head)}saveCss(){DataStore.setBDData("bdcustomcss",btoa(this.editor.session.getValue()))}detach(){let e=this;e.setState({detached:!0});let t=e.detachedRoot;return t?void BDV2.reactDom.render(e.detachedEditor,t):void console.log("FAILED TO INJECT ROOT: .app")}get detachedRoot(){let e=$("#bd-customcss-detach-container");return e.length?e[0]:this.injectDetachedRoot()?this.detachedRoot:null}injectDetachedRoot(){return!!$(".app").length&&($("
",{id:"bd-customcss-detach-container"}).insertAfter($(".app")),!0)}attach(){let e=this;e.setState({detached:!1})}}class V2C_List extends BDV2.reactComponent{constructor(e){super(e)}render(){return BDV2.react.createElement("ul",{className:this.props.className},this.props.children)}}class V2C_ContentColumn extends BDV2.reactComponent{constructor(e){super(e)}render(){return BDV2.react.createElement("div",{className:"contentColumn-2hrIYH contentColumnDefault-1VQkGM content-column default"},BDV2.react.createElement("h2",{className:"ui-form-title h2 margin-reset margin-bottom-20"},this.props.title),this.props.children)}}class V2C_PluginCard extends BDV2.reactComponent{constructor(e){super(e);let t=this;t.onChange=t.onChange.bind(t),t.showSettings=t.showSettings.bind(t),t.setInitialState(),t.hasSettings="function"==typeof t.props.plugin.getSettingsPanel,t.settingsPanel="",this.reload=this.reload.bind(this),this.onReload=this.onReload.bind(this)}setInitialState(){this.state={checked:pluginCookie[this.props.plugin.getName()],settings:!1,reloads:0}}onReload(e){e!==this.props.plugin.getName()||this.setState({reloads:this.state.reloads+1})}componentDidUpdate(){if(this.state.settings){if("object"==typeof this.settingsPanel&&this.refs.settingspanel.appendChild(this.settingsPanel),!settingsCookie["fork-ps-3"])return;var e=(e,t)=>{let a=e.scrollTop,n=a+e.clientHeight,o=t.offsetTop,s=o+t.clientHeight;return on};let t=$(BDV2.reactDom.findDOMNode(this)),a=t.parents(".scroller");if(!e(a[0],t[0]))return;a.animate({scrollTop:t.offset().top-a.offset().top+a.scrollTop()-30},300)}}reload(){const e=this.props.plugin.getName();pluginModule.reloadPlugin(e),this.props.plugin=bdplugins[e].plugin,this.onReload(this.props.plugin.getName())}render(){let e=this,{plugin:t}=this.props,a=t.getName(),n=t.getAuthor(),o=t.getDescription(),s=t.getVersion(),r=bdplugins[a].website,i=bdplugins[a].source;if(this.state.settings){try{e.settingsPanel=t.getSettingsPanel()}catch(e){Utils.err("Unable to get settings panel for "+t.getName()+".",e)}return BDV2.react.createElement("li",{className:"settings-open ui-switch-item"},BDV2.react.createElement("div",{style:{float:"right",cursor:"pointer"},onClick:()=>{this.refs.settingspanel.innerHTML="",e.setState({settings:!1})}},BDV2.react.createElement(V2Components.XSvg,null)),"object"==typeof e.settingsPanel&&BDV2.react.createElement("div",{id:`plugin-settings-${a}`,className:"plugin-settings",ref:"settingspanel"}),"object"!=typeof e.settingsPanel&&BDV2.react.createElement("div",{id:`plugin-settings-${a}`,className:"plugin-settings",ref:"settingspanel",dangerouslySetInnerHTML:{__html:e.settingsPanel}}))}return BDV2.react.createElement("li",{"data-name":a,"data-version":s,className:"settings-closed ui-switch-item"},BDV2.react.createElement("div",{className:"bda-header"},BDV2.react.createElement("span",{className:"bda-header-title"},BDV2.react.createElement("span",{className:"bda-name"},a)," v",BDV2.react.createElement("span",{className:"bda-version"},s)," by ",BDV2.react.createElement("span",{className:"bda-author"},n)),BDV2.react.createElement("div",{className:"bda-controls"},!settingsCookie["fork-ps-5"]&&BDV2.react.createElement(V2Components.TooltipWrap(V2Components.ReloadIcon,{color:"black",side:"top",text:"Reload"}),{className:"bd-reload-card",onClick:this.reload}),BDV2.react.createElement("label",{className:"ui-switch-wrapper ui-flex-child",style:{flex:"0 0 auto"}},BDV2.react.createElement("input",{checked:this.state.checked,onChange:this.onChange,className:"ui-switch-checkbox",type:"checkbox"}),BDV2.react.createElement("div",{className:this.state.checked?"ui-switch checked":"ui-switch"})))),BDV2.react.createElement("div",{className:"bda-description-wrap scroller-wrap fade"},BDV2.react.createElement("div",{className:"bda-description scroller"},o)),(r||i||this.hasSettings)&&BDV2.react.createElement("div",{className:"bda-footer"},BDV2.react.createElement("span",{className:"bda-links"},r&&BDV2.react.createElement("a",{className:"bda-link bda-link-website",href:r,target:"_blank"},"Website"),r&&i&&" | ",i&&BDV2.react.createElement("a",{className:"bda-link bda-link-source",href:i,target:"_blank"},"Source")),this.hasSettings&&BDV2.react.createElement("button",{onClick:this.showSettings,className:"bda-settings-button",disabled:!this.state.checked},"Settings")))}onChange(){this.setState({checked:!this.state.checked}),pluginModule.togglePlugin(this.props.plugin.getName())}showSettings(){this.hasSettings&&this.setState({settings:!0})}}class V2C_ThemeCard extends BDV2.reactComponent{constructor(e){super(e),this.setInitialState(),this.onChange=this.onChange.bind(this),this.reload=this.reload.bind(this)}setInitialState(){this.state={checked:themeCookie[this.props.theme.name],reloads:0}}onReload(e){e!==this.props.theme.name||this.setState({reloads:this.state.reloads+1})}reload(){const e=this.props.theme.name,t=themeModule.reloadTheme(e);t?mainCore.showToast(`Could not reload ${bdthemes[e].name}. Check console for details.`,{type:"error"}):mainCore.showToast(`${bdthemes[e].name} v${bdthemes[e].version} has been reloaded.`,{type:"success"}),this.props.theme=bdthemes[e],this.onReload(this.props.theme.name)}render(){let{theme:e}=this.props,t=e.name,a=e.description,n=e.version,o=e.author,s=bdthemes[t].website,r=bdthemes[t].source;return BDV2.react.createElement("li",{"data-name":t,"data-version":n,className:"settings-closed ui-switch-item"},BDV2.react.createElement("div",{className:"bda-header"},BDV2.react.createElement("span",{className:"bda-header-title"},BDV2.react.createElement("span",{className:"bda-name"},t)," v",BDV2.react.createElement("span",{className:"bda-version"},n)," by ",BDV2.react.createElement("span",{className:"bda-author"},o)),BDV2.react.createElement("div",{className:"bda-controls"},!settingsCookie["fork-ps-5"]&&BDV2.react.createElement(V2Components.TooltipWrap(V2Components.ReloadIcon,{color:"black",side:"top",text:"Reload"}),{className:"bd-reload-card",onClick:this.reload}),BDV2.react.createElement("label",{className:"ui-switch-wrapper ui-flex-child",style:{flex:"0 0 auto"}},BDV2.react.createElement("input",{checked:this.state.checked,onChange:this.onChange,className:"ui-switch-checkbox",type:"checkbox"}),BDV2.react.createElement("div",{className:this.state.checked?"ui-switch checked":"ui-switch"})))),BDV2.react.createElement("div",{className:"bda-description-wrap scroller-wrap fade"},BDV2.react.createElement("div",{className:"bda-description scroller"},a)),(s||r)&&BDV2.react.createElement("div",{className:"bda-footer"},BDV2.react.createElement("span",{className:"bda-links"},s&&BDV2.react.createElement("a",{className:"bda-link",href:s,target:"_blank"},"Website"),s&&r&&" | ",r&&BDV2.react.createElement("a",{className:"bda-link",href:r,target:"_blank"},"Source"))))}onChange(){this.setState({checked:!this.state.checked}),themeModule.toggleTheme(this.props.theme.name)}}class V2Cs_TabBar{static get Item(){return V2C_TabBarItem}static get Header(){return V2C_TabBarHeader}static get Separator(){return V2C_TabBarSeparator}}class V2Components{static get SettingsPanel(){return V2C_SettingsPanel}static get Switch(){return V2C_Switch}static get Scroller(){return V2C_Scroller}static get TabBar(){return V2Cs_TabBar}static get SideBar(){return V2C_SideBar}static get Tools(){return V2C_Tools}static get SettingsTitle(){return V2C_SettingsTitle}static get CssEditor(){return V2C_CssEditor}static get Checkbox(){return V2C_Checkbox}static get List(){return V2C_List}static get PluginCard(){return V2C_PluginCard}static get ThemeCard(){return V2C_ThemeCard}static get ContentColumn(){return V2C_ContentColumn}static get ReloadIcon(){return V2C_ReloadIcon}static get XSvg(){return V2C_XSvg}static get Layer(){return V2C_Layer}static get SidebarView(){return V2C_SidebarView}static get ServerCard(){return V2C_ServerCard}static TooltipWrap(e,t){const{style:a="black",side:n="top",text:o=""}=t,s=BDV2.KeyGenerator();return class extends BDV2.reactComponent{constructor(e){super(e),this.onMouseEnter=this.onMouseEnter.bind(this),this.onMouseLeave=this.onMouseLeave.bind(this)}componentDidMount(){this.node=BDV2.reactDom.findDOMNode(this),this.node.addEventListener("mouseenter",this.onMouseEnter),this.node.addEventListener("mouseleave",this.onMouseLeave)}componentWillUnmount(){this.node.removeEventListener("mouseenter",this.onMouseEnter),this.node.removeEventListener("mouseleave",this.onMouseLeave)}onMouseEnter(){const{left:e,top:t,width:r,height:i}=this.node.getBoundingClientRect();BDV2.Tooltips.show(s,{position:n,text:o,color:a,targetWidth:r,targetHeight:i,windowWidth:Utils.screenWidth,windowHeight:Utils.screenHeight,x:e,y:t});const l=new MutationObserver(e=>{e.forEach(e=>{const t=Array.from(e.removedNodes),a=-1e.contains(this.node));(a||n)&&(this.onMouseLeave(),l.disconnect())})});l.observe(document.body,{subtree:!0,childList:!0})}onMouseLeave(){BDV2.Tooltips.hide(s)}render(){return BDV2.react.createElement(e,this.props)}}}}class V2_SettingsPanel_Sidebar{constructor(e){this.onClick=e}get items(){return[{text:"Core",id:"core"},{text:"Bandages",id:"fork"},{text:"Emotes",id:"emotes"},{text:"Custom CSS",id:"customcss"},{text:"Plugins",id:"plugins"},{text:"Themes",id:"themes"}]}get component(){return BDV2.react.createElement("span",null,BDV2.react.createElement(V2Components.SideBar,{onClick:this.onClick,headerText:"Bandaged BD",items:this.items}),BDV2.react.createElement("div",{style:{fontSize:"12px",fontWeight:"600",color:"#72767d",padding:"2px 10px"}},`BD v${bdConfig.version} by `,BDV2.react.createElement("a",{href:"https://github.com/Jiiks/",target:"_blank"},"Jiiks")),BDV2.react.createElement("div",{style:{fontSize:"12px",fontWeight:"600",color:"#72767d",padding:"2px 10px"}},`BBD v${bbdVersion} by `,BDV2.react.createElement("a",{href:"https://github.com/rauenzi/",target:"_blank"},"Zerebos")))}get root(){let e=$("#bd-settings-sidebar");return e.length?e[0]:this.injectRoot()?this.root:null}injectRoot(){let e=$("[class*='side-'] > [class*='item-']:not([class*=Danger])").last();return!!e.length&&($(" ",{id:"bd-settings-sidebar"}).insertBefore(e.prev()),!0)}render(){let e=this.root;return e?void(BDV2.reactDom.render(this.component,e),Utils.onRemoved(e,()=>{BDV2.reactDom.unmountComponentAtNode(e)})):void console.log("FAILED TO LOCATE ROOT: [class*='side-'] > [class*='item-']:not([class*=Danger])")}}class V2_SettingsPanel{constructor(){let e=this;e.sideBarOnClick=e.sideBarOnClick.bind(e),e.onChange=e.onChange.bind(e),e.updateSettings=this.updateSettings.bind(e),e.sidebar=new V2_SettingsPanel_Sidebar(e.sideBarOnClick)}get root(){let e=$("#bd-settingspane-container");return e.length?e[0]:this.injectRoot()?this.root:null}injectRoot(){if(!$(".layer-3QrUeG .standardSidebarView-3F1I7i, .layer-3QrUeG .ui-standard-sidebar-view").length)return!1;const e=$("
",{class:"contentRegion-3nDuYy content-region",id:"bd-settingspane-container"});return $(".layer-3QrUeG .standardSidebarView-3F1I7i, .layer-3QrUeG .ui-standard-sidebar-view").append(e),Utils.onRemoved(e[0],()=>{BDV2.reactDom.unmountComponentAtNode(e[0])}),!0}get coreSettings(){return this.getSettings("core")}get forkSettings(){return this.getSettings("fork")}get emoteSettings(){return this.getSettings("emote")}getSettings(e){return Object.keys(settings).reduce((t,a)=>{let n=settings[a];return n.cat===e&&n.implemented&&!n.hidden&&(n.text=a,t.push(n)),t},[])}sideBarOnClick(e){let t=this;$(".contentRegion-3nDuYy, .content-region").first().hide(),$(t.root).show();"core"===e?t.renderCoreSettings():"fork"===e?t.renderForkSettings():"emotes"===e?t.renderEmoteSettings():"customcss"===e?t.renderCustomCssEditor():"plugins"===e?t.renderPluginPane():"themes"===e?t.renderThemePane():void 0}onClick(){}onChange(e,t){settingsCookie[e]=t,this.updateSettings()}updateSettings(){let e=settingsCookie;e["bda-es-0"]?$("#twitchcord-button-container").show():$("#twitchcord-button-container").hide(),e["bda-gs-b"]?$("body").addClass("bd-blue"):$("body").removeClass("bd-blue"),e["bda-gs-2"]?$("body").addClass("bd-minimal"):$("body").removeClass("bd-minimal"),e["bda-gs-3"]?$("body").addClass("bd-minimal-chan"):$("body").removeClass("bd-minimal-chan"),e["bda-gs-1"]?$("#bd-pub-li").show():$("#bd-pub-li").hide(),e["bda-gs-4"]?voiceMode.enable():voiceMode.disable(),e["bda-gs-5"]?$("#app-mount").addClass("bda-dark"):$("#app-mount").removeClass("bda-dark"),e["bda-gs-6"]&&mainCore.inject24Hour(),e["bda-gs-7"]?mainCore.injectColoredText():mainCore.removeColoredText(),e["fork-ps-4"]?classNormalizer.start():classNormalizer.stop(),e["fork-ps-5"]?(ContentManager.watchContent("plugin"),ContentManager.watchContent("theme")):(ContentManager.unwatchContent("plugin"),ContentManager.unwatchContent("theme"));const t=BdApi.getWindowPreference("transparent");t!=e["fork-wp-1"]&&(BdApi.setWindowPreference("transparent",e["fork-wp-1"]),e["fork-wp-1"]?BdApi.setWindowPreference("backgroundColor",null):BdApi.setWindowPreference("backgroundColor","#2f3136")),e["bda-gs-8"]?dMode.enable(e["fork-dm-1"]):dMode.disable(),mainCore.saveSettings()}renderSidebar(){let e=this;$("[class*='side-'] > [class*='item-']").off("click.v2settingspanel").on("click.v2settingspanel",()=>{BDV2.reactDom.unmountComponentAtNode(e.root),$(e.root).hide(),$(".contentRegion-3nDuYy, .content-region").first().show()}),e.sidebar.render()}get coreComponent(){return BDV2.react.createElement(V2Components.Scroller,{contentColumn:!0,fade:!0,dark:!0,children:[BDV2.react.createElement(V2Components.SettingsPanel,{key:"cspanel",title:"Core Settings",onChange:this.onChange,settings:this.coreSettings}),BDV2.react.createElement(V2Components.Tools,{key:"tools"})]})}get forkComponent(){return BDV2.react.createElement(V2Components.Scroller,{contentColumn:!0,fade:!0,dark:!0,children:[BDV2.react.createElement(V2Components.SettingsPanel,{key:"fspanel",title:"BandagedBD Settings",onChange:this.onChange,settings:this.forkSettings,button:{title:"Clear Emote Cache",onClick:()=>{emoteModule.clearEmoteData(),emoteModule.init(),quickEmoteMenu.init()}}}),BDV2.react.createElement(V2Components.Tools,{key:"tools"})]})}get emoteComponent(){return BDV2.react.createElement(V2Components.Scroller,{contentColumn:!0,fade:!0,dark:!0,children:[BDV2.react.createElement(V2Components.SettingsPanel,{key:"espanel",title:"Emote Settings",onChange:this.onChange,settings:this.emoteSettings}),BDV2.react.createElement(V2Components.Tools,{key:"tools"})]})}get customCssComponent(){return BDV2.react.createElement(V2Components.Scroller,{contentColumn:!0,fade:!0,dark:!0,children:[BDV2.react.createElement(V2Components.CssEditor,{key:"csseditor"}),BDV2.react.createElement(V2Components.Tools,{key:"tools"})]})}contentComponent(e){const t="plugins"==e?this.pluginsComponent:this.themesComponent,a=e.replace("s",""),n=this;class ContentList extends BDV2.react.Component{constructor(e){super(e),this.onChange=this.onChange.bind(this)}componentDidMount(){BDEvents.on(`${a}-reloaded`,this.onChange),BDEvents.on(`${a}-loaded`,this.onChange),BDEvents.on(`${a}-unloaded`,this.onChange)}componentWillUnmount(){BDEvents.off(`${a}-reloaded`,this.onChange),BDEvents.off(`${a}-loaded`,this.onChange),BDEvents.off(`${a}-unloaded`,this.onChange)}onChange(){n.sideBarOnClick(e)}render(){return t}}return BDV2.react.createElement(ContentList)}get pluginsComponent(){let e=Object.keys(bdplugins).sort((e,t)=>e.toLowerCase().localeCompare(t.toLowerCase())).reduce((e,t)=>(e.push(BDV2.react.createElement(V2Components.PluginCard,{key:t,plugin:bdplugins[t].plugin})),e),[]),t=BDV2.react.createElement(V2Components.List,{key:"plugin-list",className:"bda-slist",children:e}),a=!settingsCookie["fork-ps-5"]&&BDV2.react.createElement(V2Components.TooltipWrap(V2Components.ReloadIcon,{color:"black",side:"top",text:"Reload Plugin List"}),{className:"bd-reload-header",size:"18px",onClick:async()=>{pluginModule.updatePluginList(),this.sideBarOnClick("plugins")}}),n=BDV2.react.createElement("button",{key:"folder-button",className:"bd-pfbtn",onClick:()=>{require("electron").shell.openItem(ContentManager.pluginsFolder)}},"Open Plugin Folder"),o=BDV2.react.createElement(V2Components.ContentColumn,{key:"pcolumn",title:"Plugins",children:[a,n,t]});return BDV2.react.createElement(V2Components.Scroller,{contentColumn:!0,fade:!0,dark:!0,children:[o,BDV2.react.createElement(V2Components.Tools,{key:"tools"})]})}get themesComponent(){let e=Object.keys(bdthemes).sort((e,t)=>e.toLowerCase().localeCompare(t.toLowerCase())).reduce((e,t)=>(e.push(BDV2.react.createElement(V2Components.ThemeCard,{key:t,theme:bdthemes[t]})),e),[]),t=BDV2.react.createElement(V2Components.List,{key:"theme-list",className:"bda-slist",children:e}),a=!settingsCookie["fork-ps-5"]&&BDV2.react.createElement(V2Components.TooltipWrap(V2Components.ReloadIcon,{color:"black",side:"top",text:"Reload Theme List"}),{className:"bd-reload-header",size:"18px",onClick:async()=>{themeModule.updateThemeList(),this.sideBarOnClick("themes")}}),n=BDV2.react.createElement("button",{key:"folder-button",className:"bd-pfbtn",onClick:()=>{require("electron").shell.openItem(ContentManager.themesFolder)}},"Open Theme Folder"),o=BDV2.react.createElement(V2Components.ContentColumn,{key:"tcolumn",title:"Themes",children:[a,n,t]});return BDV2.react.createElement(V2Components.Scroller,{contentColumn:!0,fade:!0,dark:!0,children:[o,BDV2.react.createElement(V2Components.Tools,{key:"tools"})]})}renderCoreSettings(){let e=this.root;return e?void BDV2.reactDom.render(this.coreComponent,e):void console.log("FAILED TO LOCATE ROOT: .layer-3QrUeG .standardSidebarView-3F1I7i")}renderForkSettings(){let e=this.root;return e?void BDV2.reactDom.render(this.forkComponent,e):void console.log("FAILED TO LOCATE ROOT: .layer-3QrUeG .standardSidebarView-3F1I7i")}renderEmoteSettings(){let e=this.root;return e?void BDV2.reactDom.render(this.emoteComponent,e):void console.log("FAILED TO LOCATE ROOT: .layer-3QrUeG .standardSidebarView-3F1I7i")}renderCustomCssEditor(){let e=this.root;return e?void BDV2.reactDom.render(this.customCssComponent,e):void console.log("FAILED TO LOCATE ROOT: .layer-3QrUeG .standardSidebarView-3F1I7i")}renderPluginPane(){let e=this.root;return e?void BDV2.reactDom.render(this.contentComponent("plugins"),e):void console.log("FAILED TO LOCATE ROOT: .layer-3QrUeG .standardSidebarView-3F1I7i")}renderThemePane(){let e=this.root;return e?void BDV2.reactDom.render(this.contentComponent("themes"),e):void console.log("FAILED TO LOCATE ROOT: .layer-3QrUeG .standardSidebarView-3F1I7i")}}class V2C_Layer extends BDV2.reactComponent{constructor(e){super(e)}componentDidMount(){$(window).on(`keyup.${this.props.id}`,t=>{27===t.which&&BDV2.reactDom.unmountComponentAtNode(this.refs.root.parentNode)}),$(`#${this.props.id}`).animate({opacity:1},{step:function(e){$(this).css("transform",`scale(${1.1-.1*e}) translateZ(0px)`)},duration:200,done:()=>{$(`#${this.props.id}`).css("opacity","").css("transform","")}})}componentWillUnmount(){$(window).off(`keyup.${this.props.id}`),$(`#${this.props.id}`).animate({opacity:0},{step:function(e){$(this).css("transform",`scale(${1.1-.1*e}) translateZ(0px)`)},duration:200,done:()=>{$(`#${this.props.rootId}`).remove()}}),$("[class*=\"layer-\"]").removeClass("publicServersOpen").animate({opacity:1},{step:function(e){$(this).css("transform",`scale(${.07*e+.93}) translateZ(0px)`)},duration:200,done:()=>{$("[class*=\"layer-\"]").css("opacity","").css("transform","")}})}componentWillMount(){$("[class*=\"layer-\"]").addClass("publicServersOpen").animate({opacity:0},{step:function(e){$(this).css("transform",`scale(${.07*e+.93}) translateZ(0px)`)},duration:200})}render(){return BDV2.react.createElement("div",{className:"layer bd-layer layer-3QrUeG",id:this.props.id,ref:"root",style:{opacity:0,transform:"scale(1.1) translateZ(0px)"}},this.props.children)}}class V2C_SidebarView extends BDV2.reactComponent{constructor(e){super(e)}render(){let{sidebar:e,content:t,tools:a}=this.props.children;return BDV2.react.createElement("div",{className:"standardSidebarView-3F1I7i ui-standard-sidebar-view"},BDV2.react.createElement("div",{className:"sidebarRegion-VFTUkN sidebar-region"},BDV2.react.createElement(V2Components.Scroller,{key:"sidebarScroller",ref:"sidebarScroller",sidebar:!0,fade:e.fade||!0,dark:e.dark||!0,children:e.component})),BDV2.react.createElement("div",{className:"contentRegion-3nDuYy content-region"},BDV2.react.createElement("div",{className:"contentTransitionWrap-3hqOEW content-transition-wrap"},BDV2.react.createElement("div",{className:"scrollerWrap-2lJEkd firefoxFixScrollFlex-cnI2ix contentRegionScrollerWrap-3YZXdm content-region-scroller-wrap scrollerThemed-2oenus themeGhost-28MSn0 scrollerTrack-1ZIpsv"},BDV2.react.createElement("div",{className:"scroller-2FKFPG firefoxFixScrollFlex-cnI2ix contentRegionScroller-26nc1e content-region-scroller scroller",ref:"contentScroller"},BDV2.react.createElement("div",{className:"contentColumn-2hrIYH contentColumnDefault-1VQkGM content-column default"},t.component),a.component)))))}}class V2_PublicServers{constructor(){}get component(){return BDV2.react.createElement(V2Components.Layer,{rootId:"pubslayerroot",id:"pubslayer",children:BDV2.react.createElement(V2C_PublicServers,{rootId:"pubslayerroot"})})}get root(){let e=document.getElementById("pubslayerroot");return e?e:this.injectRoot()?this.root:null}injectRoot(){return!!$(".layers, .layers-3iHuyZ").length&&($(".layers, .layers-3iHuyZ").append($("
",{id:"pubslayerroot"})),!0)}render(){let e=this.root;return e?void BDV2.reactDom.render(this.component,e):void console.log("FAILED TO LOCATE ROOT: .layers")}get button(){let e=$("
",{class:BDV2.guildClasses.guild,id:"bd-pub-li",css:{height:"20px",display:settingsCookie["bda-gs-1"]?"":"none"}}).append($("
",{class:BDV2.guildClasses.guildInner,css:{height:"20px","border-radius":"4px"}}).append($(" ",{}).append($("
",{text:"public",id:"bd-pub-button",css:{"line-height":"20px","font-size":"12px"},click:()=>{this.render()}}))));return e}initialize(){let e=$(`.${BDV2.guildClasses.guilds}>:first-child`);e.after(this.button)}}class V2C_ServerCard extends BDV2.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(){let{server:e}=this.props;return BDV2.react.createElement("div",{className:`card-3Qj_Yx cardPrimary-1Hv-to marginBottom8-AtZOdT bd-server-card${e.pinned?" bd-server-card-pinned":""}`},BDV2.react.createElement("img",{ref:"img",className:"bd-server-image",src:e.iconUrl,onError:this.handleError.bind(this)}),BDV2.react.createElement("div",{className:"flexChild-faoVW3 bd-server-content"},BDV2.react.createElement("div",{className:"flex-1xMQg5 flex-1O1GKY horizontal-1ae9ci horizontal-2EEEnY directionRow-3v3tfG noWrap-3jynv6 bd-server-header"},BDV2.react.createElement("h5",{className:"h5-18_1nd defaultColor-1_ajX0 margin-reset bd-server-name"},e.name),BDV2.react.createElement("h5",{className:"h5-18_1nd defaultColor-1_ajX0 margin-reset bd-server-member-count"},e.members," Members")),BDV2.react.createElement("div",{className:"flex-1xMQg5 flex-1O1GKY horizontal-1ae9ci horizontal-2EEEnY directionRow-3v3tfG noWrap-3jynv6"},BDV2.react.createElement("div",{className:"scrollerWrap-2lJEkd scrollerThemed-2oenus themeGhostHairline-DBD-2d scrollerFade-1Ijw5y bd-server-description-container"},BDV2.react.createElement("div",{className:"scroller-2FKFPG scroller bd-server-description"},e.description))),BDV2.react.createElement("div",{className:"flex-1xMQg5 flex-1O1GKY horizontal-1ae9ci horizontal-2EEEnY directionRow-3v3tfG noWrap-3jynv6 bd-server-footer"},BDV2.react.createElement("div",{className:"flexChild-faoVW3 bd-server-tags",style:{flex:"1 1 auto"}},e.categories.join(", ")),this.state.joined&&BDV2.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"}},BDV2.react.createElement("div",{className:"ui-button-contents"},"Joined")),e.error&&BDV2.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"}},BDV2.react.createElement("div",{className:"ui-button-contents"},"Error")),!e.error&&!this.state.joined&&BDV2.react.createElement("button",{type:"button",className:"button-38aScr lookFilled-1Gx00P colorBrand-3pXr91 sizeMin-1mJd1x grow-q77ONN",style:{minHeight:"12px",marginTop:"4px"},onClick:()=>{this.join()}},BDV2.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 V2C_PublicServers extends BDV2.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=BDV2.WebpackModules.findByUniqueProperties(["getGuilds"]),this.AvatarDefaults=BDV2.WebpackModules.findByUniqueProperties(["getUserAvatarURL","DEFAULT_AVATARS"]),this.InviteActions=BDV2.WebpackModules.findByUniqueProperties(["acceptInvite"]),this.SortedGuildStore=BDV2.WebpackModules.findByUniqueProperties(["getSortedGuilds"])}componentDidMount(){this.checkConnection()}setInitialState(){this.state={selectedCategory:-1,title:"Loading...",loading:!0,servers:[],next:null,connection:{state:0,user:null}}}close(){BDV2.reactDom.unmountComponentAtNode(document.getElementById(this.props.rootId))}search(e,t){let a=this;$.ajax({method:"GET",url:`${a.endPoint}${e}${e?"&schema=new":"?schema=new"}`,success:e=>{let n=e.results.reduce((e,t)=>(t.joined=!1,e.push(t),e),[]);t||(n=a.state.servers.concat(n));let o=e.size+e.from;e.next=`?from=${o}`,a.state.term&&(e.next+=`&term=${a.state.term}`),a.state.selectedCategory&&(e.next+=`&category=${a.categoryButtons[a.state.selectedCategory]}`),o>=e.total&&(o=e.total,e.next=null);let s=`Showing 1-${o} of ${e.total} results in ${a.categoryButtons[a.state.selectedCategory]}`;a.state.term&&(s+=` for ${a.state.term}`),a.setState({loading:!1,title:s,servers:n,next:e.next}),t&&(a.refs.sbv.refs.contentScroller.scrollTop=0)},error:()=>{a.setState({loading:!1,title:"Failed to load servers. Check console for details"})}})}join(e){return e.props.pinned?this.InviteActions.acceptInvite(e.props.invite_code):void $.ajax({method:"GET",url:`${this.joinEndPoint}/${e.props.server.identifier}`,headers:{Accept:"application/json;","Content-Type":"application/json;","x-discord-id":this.state.connection.user.id,"x-discord-token":this.state.connection.user.accessToken},crossDomain:!0,xhrFields:{withCredentials:!0},success:()=>{e.setState({joined:!0})}})}connect(){var e=Math.round;let t=this,a=t.windowOptions;a.x=e(window.screenX+window.innerWidth/2-a.width/2),a.y=e(window.screenY+window.innerHeight/2-a.height/2),t.joinWindow=new(window.require("electron").remote.BrowserWindow)(a);let n=window.location.hostname.split(".")[0],o=t.connectEndPoint+("canary"===n||"ptb"===n?`/${n}`:"")+"?betterDiscord";t.joinWindow.webContents.on("did-navigate",(e,a)=>{"https://join.discordservers.com/session"!=a||(t.joinWindow.close(),t.checkConnection())}),t.joinWindow.loadURL(o)}get windowOptions(){return{width:500,height:550,backgroundColor:"#282b30",show:!0,resizable:!1,maximizable:!1,minimizable:!1,alwaysOnTop:!0,frame:!1,center:!1}}get bdServer(){let e=this.SortedGuildStore.guildPositions,t=this.AvatarDefaults.DEFAULT_AVATARS;return BDV2.react.createElement(V2Components.ServerCard,{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://join.discordservers.com"}get connectEndPoint(){return"https://join.discordservers.com/connect"}checkConnection(){let e=this;try{$.ajax({method:"GET",url:`${e.joinEndPoint}/session`,headers:{Accept:"application/json;","Content-Type":"application/json;"},crossDomain:!0,xhrFields:{withCredentials:!0},success:t=>{e.setState({selectedCategory:0,connection:{state:2,user:t}}),e.search("",!0)},error:t=>{if(403===t.status||404===t.status)return void e.setState({title:"Not connected to discordservers.com!",loading:!0,selectedCategory:-1,connection:{state:1,user:null}})}})}catch(t){e.setState({title:"Not connected to discordservers.com!",loading:!0,selectedCategory:-1,connection:{state:1,user:null}})}}render(){return BDV2.react.createElement(V2Components.SidebarView,{ref:"sbv",children:this.component})}get component(){return{sidebar:{component:this.sidebar},content:{component:this.content},tools:{component:BDV2.react.createElement(V2Components.Tools,{key:"pt",ref:"tools",onClick:this.close})}}}get sidebar(){return BDV2.react.createElement("div",{className:"sidebar",key:"ps"},BDV2.react.createElement("div",{className:"ui-tab-bar SIDE"},BDV2.react.createElement("div",{className:"ui-tab-bar-header",style:{fontSize:"16px"}},"Public Servers"),BDV2.react.createElement(V2Components.TabBar.Separator,null),this.searchInput,BDV2.react.createElement(V2Components.TabBar.Separator,null),BDV2.react.createElement(V2Components.TabBar.Header,{text:"Categories"}),this.categoryButtons.map((e,t)=>BDV2.react.createElement(V2Components.TabBar.Item,{id:t,onClick:this.changeCategory,key:t,text:e,selected:this.state.selectedCategory===t})),BDV2.react.createElement(V2Components.TabBar.Separator,null),this.footer,this.connection))}get searchInput(){return BDV2.react.createElement("div",{className:"ui-form-item"},BDV2.react.createElement("div",{className:"ui-text-input flex-vertical",style:{width:"172px",marginLeft:"10px"}},BDV2.react.createElement("input",{ref:"searchinput",onKeyDown:this.searchKeyDown,onChange:()=>{},type:"text",className:"input default",placeholder:"Search...",maxLength:"50"})))}searchKeyDown(t){let e=this;if(e.state.loading||13!==t.which)return;e.setState({loading:!0,title:"Loading...",term:t.target.value});let a=`?term=${t.target.value}`;0!==e.state.selectedCategory&&(a+=`&category=${e.categoryButtons[e.state.selectedCategory]}`),e.search(a,!0)}get categoryButtons(){return["All","FPS Games","MMO Games","Strategy Games","Sports Games","Puzzle Games","Retro Games","Party Games","Tabletop Games","Sandbox Games","Simulation Games","Community","Language","Programming","Other"]}changeCategory(e){let t=this;if(!t.state.loading)return t.refs.searchinput.value="",t.setState({loading:!0,selectedCategory:e,title:"Loading...",term:null}),0===e?void t.search("",!0):void t.search(`?category=${t.categoryButtons[e]}`,!0)}get content(){var e=Math.floor;let t=this,a=this.SortedGuildStore.guildPositions,n=this.AvatarDefaults.DEFAULT_AVATARS;return 1===t.state.connection.state?t.notConnected:[BDV2.react.createElement("div",{ref:"content",key:"pc",className:"contentColumn-2hrIYH contentColumnDefault-1VQkGM content-column default"},BDV2.react.createElement(V2Components.SettingsTitle,{text:t.state.title}),t.bdServer,t.state.servers.map(o=>BDV2.react.createElement(V2Components.ServerCard,{key:o.identifier,server:o,join:t.join,guildList:a,fallback:n[e(5*Math.random())]})),t.state.next&&BDV2.react.createElement("button",{type:"button",onClick:()=>{t.state.loading||(t.setState({loading:!0}),t.search(t.state.next,!1))},className:"ui-button filled brand small grow",style:{width:"100%",marginTop:"10px",marginBottom:"10px"}},BDV2.react.createElement("div",{className:"ui-button-contents"},t.state.loading?"Loading":"Load More")),0