void OnGUI()
        {
            SetupStyle();
            Config config = Config.Get();

            GUILayout.Label("ThryEditor v" + config.verion);

            GUINotification();
            drawLine();

            bool hasVRCSdk     = System.Type.GetType("VRC.AccountEditorWindow") != null;
            bool vrcIsLoggedIn = EditorPrefs.HasKey("sdk#username");

            if (hasVRCSdk)
            {
                vrc_sdk_version = Helper.GetCurrentVRCSDKVersion();
                GUILayout.Label("VRC Sdk version: " + vrc_sdk_version);
                if (vrcIsLoggedIn)
                {
                    GUILayout.Label("VRChat user: "******"sdk#username"));
                }
                drawLine();
            }

            GUIEditor();
            drawLine();
            GUIExtras();
            drawLine();

            if (hasVRCSdk)
            {
                if (firstLoad)
                {
                    thry_vrc_tools_installed_version = Helper.FindFileAndReadIntoString(THRY_VRC_TOOLS_VERSION_PATH);
                    has_vrc_tools = System.Type.GetType("Thry.AutoAvatarDescriptor") != null;
                }
                if (has_vrc_tools)
                {
                    GUIVRCToolsOptions();
                }

                drawLine();

                if (thry_vrc_tools_version_loaded)
                {
                    GUIVRCToolsDownloadOptions(has_vrc_tools);
                }
            }

            if (firstLoad)
            {
                Helper.getStringFromUrl(THRY_VRC_TOOLS_REPO_URL + THRY_VRC_TOOLS_VERSION_URL, thry_vrc_tools_version_callback);
                firstLoad = false;
            }
        }
            static void OnPostprocessAllAssets(string[] importedAssets, string[] deletedAssets, string[] movedAssets, string[] movedFromAssetPaths)
            {
                bool vrcImported = false;

                foreach (string s in importedAssets)
                {
                    if (s.Contains("VRCSDK2.dll"))
                    {
                        vrcImported = true;
                    }
                }

                bool hasVRCSdk = System.Type.GetType("VRC.AccountEditorWindow") != null;

                string symbols = PlayerSettings.GetScriptingDefineSymbolsForGroup(
                    BuildTargetGroup.Standalone);

                if ((vrcImported | hasVRCSdk) && !symbols.Contains("VRC_SDK_EXISTS"))
                {
                    PlayerSettings.SetScriptingDefineSymbolsForGroup(
                        BuildTargetGroup.Standalone, symbols + ";VRC_SDK_EXISTS");
                }
                else if (!hasVRCSdk && symbols.Contains("VRC_SDK_EXISTS"))
                {
                    PlayerSettings.SetScriptingDefineSymbolsForGroup(
                        BuildTargetGroup.Standalone, symbols.Replace(";VRC_SDK_EXISTS", ""));
                }

                if (vrcImported)
                {
                    if (thry_vrc_tools_version_loaded)
                    {
                        CheckVRCVersionCallback("");
                    }
                    else
                    {
                        Helper.getStringFromUrl(THRY_VRC_TOOLS_REPO_URL + THRY_VRC_TOOLS_FILE_LIST_URL, CheckVRCVersionCallback);
                    }
                }
            }
        public void GUIVRCToolsDownloadOptions(bool tools_installed)
        {
            GUILayout.Label("Thry's VRC Tools Installer", EditorStyles.boldLabel);


            bool needsUpdate = false;

            if (thry_vrc_tools_version_loaded && has_vrc_tools)
            {
                needsUpdate = Helper.compareVersions(thry_vrc_tools_version, thry_vrc_tools_installed_version) == -1;
            }

            if (tools_installed && !needsUpdate)
            {
                GUILayout.Label("Up to date");
            }
            EditorGUI.BeginDisabledGroup(is_installing_vrc_tools || (tools_installed && !needsUpdate));
            GUILayout.BeginHorizontal();
            string text = "Install now";

            if (tools_installed)
            {
                text = "Update";
            }
            if (GUILayout.Button(text, GUILayout.ExpandWidth(false)))
            {
                is_installing_vrc_tools = true;
                Helper.getStringFromUrl(THRY_VRC_TOOLS_REPO_URL + THRY_VRC_TOOLS_FILE_LIST_URL, thry_vrc_tools_file_list_callback);
            }
            GUILayout.Label("(v" + thry_vrc_tools_version + ", vrc_sdk_versions: " + thry_vrc_tools_vrc_sdk_versions_string + ")", GUILayout.ExpandWidth(false));
            GUILayout.EndHorizontal();
            GUILayout.Label("Includes: ");
            GUILayout.Label(" - VRC Content Manager with search function, sorting function and tags for avatars");
            GUILayout.Label(" - VRC Auto Avatar descriptor: automatically fill out your avatar descriptor");
            EditorGUI.EndDisabledGroup();
        }