private void Awake()
        {
            DontDestroyOnLoad(gameObject);
            Instance       = this;
            _songBlacklist = Config.Instance.Blacklist;

            InitializeCommands();
        }
        protected override void DidActivate(bool firstActivation, ActivationType type)
        {
            if (firstActivation)
            {
                if (!SongLoader.AreSongsLoaded)
                {
                    SongLoader.SongsLoadedEvent += SongLoader_SongsLoadedEvent;
                }

                InitConfirmationDialog();

                _songListTableCellInstance      = Resources.FindObjectsOfTypeAll <LevelListTableCell>().First(x => (x.name == "LevelListTableCell"));
                _songPreviewPlayer              = Resources.FindObjectsOfTypeAll <SongPreviewPlayer>().FirstOrDefault();
                DidSelectRowEvent              += DidSelectRow;
                RequestBot.SongRequestQueued   += (song) => RefreshTable();
                RequestBot.SongRequestDequeued += (song) => RefreshTable();

                RectTransform container = new GameObject("CustomListContainer", typeof(RectTransform)).transform as RectTransform;
                container.SetParent(rectTransform, false);
                container.sizeDelta = new Vector2(60f, 0f);

                // Blacklist button
                _blacklistButton = Instantiate(Resources.FindObjectsOfTypeAll <Button>().First(x => (x.name == "QuitButton")), container, false);
                _blacklistButton.ToggleWordWrapping(false);
                (_blacklistButton.transform as RectTransform).anchoredPosition = new Vector2(90f, 10f);
                _blacklistButton.SetButtonText("Blacklist");
                //_blacklistButton.GetComponentInChildren<Image>().color = Color.red;
                _blacklistButton.onClick.RemoveAllListeners();
                _blacklistButton.onClick.AddListener(delegate()
                {
                    _onConfirm           = () => { RequestBot.Blacklist(_selectedRow); };
                    var song             = RequestBot.FinalRequestQueue[_selectedRow].song;
                    _warningTitle.text   = "Blacklist Song Warning";
                    _warningMessage.text = $"Blacklisting {song["songName"].Value} by {song["authorName"].Value}\r\nDo you want to continue?";
                    _confirmationDialog.Present();
                });
                BeatSaberUI.AddHintText(_blacklistButton.transform as RectTransform, "Block the selected request from being queued in the future.");

                // Skip button
                _skipButton = Instantiate(Resources.FindObjectsOfTypeAll <Button>().First(x => (x.name == "QuitButton")), container, false);
                _skipButton.ToggleWordWrapping(false);
                (_skipButton.transform as RectTransform).anchoredPosition = new Vector2(90f, 0f);
                _skipButton.SetButtonText("Skip");
                //_skipButton.GetComponentInChildren<Image>().color = Color.yellow;
                _skipButton.onClick.RemoveAllListeners();
                _skipButton.onClick.AddListener(delegate()
                {
                    _onConfirm = () =>
                    {
                        _lastSelection = -1;
                        RequestBot.Skip(_selectedRow);
                    };
                    var song             = RequestBot.FinalRequestQueue[_selectedRow].song;
                    _warningTitle.text   = "Skip Song Warning";
                    _warningMessage.text = $"Skipping {song["songName"].Value} by {song["authorName"].Value}\r\nDo you want to continue?";
                    _confirmationDialog.Present();
                });
                BeatSaberUI.AddHintText(_skipButton.transform as RectTransform, "Remove the selected request from the queue.");

                // Play button
                _playButton = Instantiate(Resources.FindObjectsOfTypeAll <Button>().First(x => (x.name == "QuitButton")), container, false);
                _playButton.ToggleWordWrapping(false);
                (_playButton.transform as RectTransform).anchoredPosition = new Vector2(90f, -10f);
                _playButton.SetButtonText("Play");
                _playButton.GetComponentInChildren <Image>().color = Color.green;
                _playButton.onClick.RemoveAllListeners();
                _playButton.onClick.AddListener(delegate()
                {
                    SetUIInteractivity(false);
                    RequestBot.Process(_selectedRow);
                });
                BeatSaberUI.AddHintText(_playButton.transform as RectTransform, "Download and scroll to the currently selected request.");
            }
            base.DidActivate(firstActivation, type);
            RefreshTable();
            SetUIInteractivity(true);
        }