using System;
using System.Collections;
using System.Collections.Generic;
using System.Diagnostics;
using System.IO;
using System.Linq;
using System.Net;
using System.Net.Security;
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.Versioning;
using System.Security;
using System.Security.Cryptography.X509Certificates;
using System.Security.Permissions;
using System.Text;
using System.Text.RegularExpressions;
using System.Threading.Tasks;
using BepInEx;
using BepInEx.Core.Logging.Interpolation;
using BepInEx.IL2CPP;
using BepInEx.IL2CPP.Utils;
using BepInEx.Logging;
using HarmonyLib;
using Microsoft.CodeAnalysis;
using UnhollowerRuntimeLib;
using UnityEngine;
using UnityEngine.SceneManagement;
[assembly: CompilationRelaxations(8)]
[assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)]
[assembly: Debuggable(DebuggableAttribute.DebuggingModes.Default | DebuggableAttribute.DebuggingModes.DisableOptimizations | DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints | DebuggableAttribute.DebuggingModes.EnableEditAndContinue)]
[assembly: TargetFramework(".NETFramework,Version=v4.7.2", FrameworkDisplayName = ".NET Framework 4.7.2")]
[assembly: AssemblyCompany("Antro.AutoTranslator")]
[assembly: AssemblyConfiguration("Debug")]
[assembly: AssemblyDescription("Antro.AutoTranslator")]
[assembly: AssemblyFileVersion("1.0.0.0")]
[assembly: AssemblyInformationalVersion("1.0.0.0")]
[assembly: AssemblyProduct("Antro.AutoTranslator")]
[assembly: AssemblyTitle("Antro.AutoTranslator")]
[assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)]
[assembly: AssemblyVersion("1.0.0.0")]
[module: UnverifiableCode]
[module: RefSafetyRules(11)]
namespace Microsoft.CodeAnalysis
{
[CompilerGenerated]
[Microsoft.CodeAnalysis.Embedded]
internal sealed class EmbeddedAttribute : Attribute
{
}
}
namespace System.Runtime.CompilerServices
{
[CompilerGenerated]
[Microsoft.CodeAnalysis.Embedded]
[AttributeUsage(AttributeTargets.Module, AllowMultiple = false, Inherited = false)]
internal sealed class RefSafetyRulesAttribute : Attribute
{
public readonly int Version;
public RefSafetyRulesAttribute(int P_0)
{
Version = P_0;
}
}
}
namespace Antro.AutoTranslator
{
[BepInPlugin("Antro.AutoTranslator", "Antro Google AutoTranslator", "1.0.0")]
public class TranslatorPlugin : BasePlugin
{
public static TranslatorPlugin Instance;
public static TranslationManager Manager;
public static string BasePath;
public static bool IsDrawingOwnUI;
public override void Load()
{
//IL_0071: Unknown result type (might be due to invalid IL or missing references)
//IL_0077: Expected O, but got Unknown
//IL_00ce: Unknown result type (might be due to invalid IL or missing references)
//IL_00d4: Expected O, but got Unknown
Instance = this;
BasePath = Path.Combine(Paths.ConfigPath, "AntroTranslations");
if (!Directory.Exists(BasePath))
{
Directory.CreateDirectory(BasePath);
}
ServicePointManager.ServerCertificateValidationCallback = (object sender, X509Certificate cert, X509Chain chain, SslPolicyErrors sslPolicyErrors) => true;
Manager = new TranslationManager();
ClassInjector.RegisterTypeInIl2Cpp<TranslatorBehaviour>();
GameObject val = new GameObject("Antro_Translator_Engine");
Object.DontDestroyOnLoad((Object)(object)val);
((Object)val).hideFlags = (HideFlags)61;
Manager.Behaviour = val.AddComponent<TranslatorBehaviour>();
Manager.SetLanguage(PlayerPrefs.GetString("Antro_TargetLang", "off"));
Harmony.CreateAndPatchAll(typeof(GUIPatches), (string)null);
ManualLogSource log = ((BasePlugin)this).Log;
bool flag = default(bool);
BepInExInfoLogInterpolatedStringHandler val2 = new BepInExInfoLogInterpolatedStringHandler(61, 0, ref flag);
if (flag)
{
((BepInExLogInterpolatedStringHandler)val2).AppendLiteral("Antro AutoTranslator v1.0.0: Full Language List & UI Restore.");
}
log.LogInfo(val2);
}
}
public class LanguageInfo
{
public string Code;
public string NativeName;
public LanguageInfo(string c, string n)
{
Code = c;
NativeName = n;
}
}
public class TranslatorBehaviour : MonoBehaviour
{
private bool _showUi = false;
private Rect _rect = new Rect((float)(Screen.width - 320), (float)(Screen.height - 650), 300f, 600f);
private Vector2 _scrollPos;
private List<LanguageInfo> _languages = new List<LanguageInfo>
{
new LanguageInfo("off", "OFF (Original)"),
new LanguageInfo("af", "Afrikaans"),
new LanguageInfo("sq", "Shqip (Albanian)"),
new LanguageInfo("am", "አማርኛ (Amharic)"),
new LanguageInfo("ar", "العربية (Arabic)"),
new LanguageInfo("hy", "Հայերեն (Armenian)"),
new LanguageInfo("az", "Azərbaycan (Azerbaijani)"),
new LanguageInfo("eu", "Euskara (Basque)"),
new LanguageInfo("be", "Беларуская (Belarusian)"),
new LanguageInfo("bn", "ব\u09be\u0982ল\u09be (Bengali)"),
new LanguageInfo("bs", "Bosanski (Bosnian)"),
new LanguageInfo("bg", "Български (Bulgarian)"),
new LanguageInfo("ca", "Català (Catalan)"),
new LanguageInfo("zh-CN", "简体中文 (Chinese Simp)"),
new LanguageInfo("zh-TW", "繁體中文 (Chinese Trad)"),
new LanguageInfo("hr", "Hrvatski (Croatian)"),
new LanguageInfo("cs", "Čeština (Czech)"),
new LanguageInfo("da", "Dansk (Danish)"),
new LanguageInfo("nl", "Nederlands (Dutch)"),
new LanguageInfo("en", "English"),
new LanguageInfo("et", "Eesti (Estonian)"),
new LanguageInfo("fi", "Suomi (Finnish)"),
new LanguageInfo("fr", "Français (French)"),
new LanguageInfo("gl", "Galego (Galician)"),
new LanguageInfo("ka", "ქართული (Georgian)"),
new LanguageInfo("de", "Deutsch (German)"),
new LanguageInfo("el", "Ελληνικά (Greek)"),
new LanguageInfo("gu", "ગ\u0ac1જર\u0abeત\u0ac0 (Gujarati)"),
new LanguageInfo("he", "עברית (Hebrew)"),
new LanguageInfo("hi", "ह\u093fन\u094dद\u0940 (Hindi)"),
new LanguageInfo("hu", "Magyar (Hungarian)"),
new LanguageInfo("is", "Íslenska (Icelandic)"),
new LanguageInfo("id", "Indonesia (Indonesian)"),
new LanguageInfo("it", "Italiano (Italian)"),
new LanguageInfo("ja", "日本語 (Japanese)"),
new LanguageInfo("kn", "ಕನ\u0ccdನಡ (Kannada)"),
new LanguageInfo("kk", "Қазақ (Kazakh)"),
new LanguageInfo("km", "ខ\u17d2ម\u17c2រ (Khmer)"),
new LanguageInfo("ko", "한국어 (Korean)"),
new LanguageInfo("ky", "Кыргызча (Kyrgyz)"),
new LanguageInfo("lo", "Кыргызча (Lao)"),
new LanguageInfo("lv", "Latviešu (Latvian)"),
new LanguageInfo("lt", "Lietuvių (Lithuanian)"),
new LanguageInfo("mk", "Makedonski (Macedonian)"),
new LanguageInfo("ms", "Melayu (Malay)"),
new LanguageInfo("ml", "മലയ\u0d3eള\u0d02 (Malayalam)"),
new LanguageInfo("mn", "Монгол (Mongolian)"),
new LanguageInfo("my", "ဗမ\u102cစ\u102c (Myanmar)"),
new LanguageInfo("ne", "न\u0947प\u093eल\u0940 (Nepali)"),
new LanguageInfo("no", "Norsk (Norwegian)"),
new LanguageInfo("fa", "فارسی (Persian)"),
new LanguageInfo("pl", "Polski (Polish)"),
new LanguageInfo("pt", "Português (Portuguese)"),
new LanguageInfo("pa", "ਪ\u0a70ਜ\u0a3eਬ\u0a40 (Punjabi)"),
new LanguageInfo("ro", "Română (Romanian)"),
new LanguageInfo("ru", "Русский (Russian)"),
new LanguageInfo("sr", "Српски (Serbian)"),
new LanguageInfo("si", "ස\u0dd2\u0d02හල (Sinhala)"),
new LanguageInfo("sk", "Slovenčina (Slovak)"),
new LanguageInfo("sl", "Slovenščina (Slovenian)"),
new LanguageInfo("es", "Español (Spanish)"),
new LanguageInfo("sw", "Soomaali (Somali)"),
new LanguageInfo("sv", "Svenska (Swedish)"),
new LanguageInfo("tg", "Тоҷикӣ (Tajik)"),
new LanguageInfo("ta", "தம\u0bbfழ\u0bcd (Tamil)"),
new LanguageInfo("te", "త\u0c46ల\u0c41గ\u0c41 (Telugu)"),
new LanguageInfo("th", "ไทย (Thai)"),
new LanguageInfo("tr", "Türkçe (Turkish)"),
new LanguageInfo("uk", "Українська (Ukrainian)"),
new LanguageInfo("ur", "اردو (Urdu)"),
new LanguageInfo("uz", "Oʻzbek (Uzbek)"),
new LanguageInfo("vi", "Tiếng Việt (Vietnamese)")
};
public TranslatorBehaviour(IntPtr ptr)
: base(ptr)
{
}//IL_002a: Unknown result type (might be due to invalid IL or missing references)
//IL_002f: Unknown result type (might be due to invalid IL or missing references)
private void OnGUI()
{
//IL_0001: Unknown result type (might be due to invalid IL or missing references)
//IL_0006: Unknown result type (might be due to invalid IL or missing references)
//IL_0086: Unknown result type (might be due to invalid IL or missing references)
//IL_00c4: Unknown result type (might be due to invalid IL or missing references)
//IL_00df: Unknown result type (might be due to invalid IL or missing references)
//IL_00e4: Unknown result type (might be due to invalid IL or missing references)
Scene activeScene = SceneManager.GetActiveScene();
if (!(((Scene)(ref activeScene)).name != "Menu"))
{
TranslatorPlugin.IsDrawingOwnUI = true;
string text = _languages.FirstOrDefault((LanguageInfo x) => x.Code == TranslatorPlugin.Manager.CurrentLang)?.NativeName ?? "Unknown";
if (GUI.Button(new Rect((float)(Screen.width - 220), (float)(Screen.height - 40), 210f, 30f), "\ud83c\udf10 " + text))
{
_showUi = !_showUi;
}
if (_showUi)
{
_rect = GUI.Window(10099, _rect, WindowFunction.op_Implicit((Action<int>)DrawWin), "Translator Settings");
}
TranslatorPlugin.IsDrawingOwnUI = false;
}
}
private void DrawWin(int id)
{
//IL_0062: Unknown result type (might be due to invalid IL or missing references)
//IL_0071: Unknown result type (might be due to invalid IL or missing references)
//IL_0076: Unknown result type (might be due to invalid IL or missing references)
//IL_00b9: Unknown result type (might be due to invalid IL or missing references)
//IL_00ac: Unknown result type (might be due to invalid IL or missing references)
//IL_012b: Unknown result type (might be due to invalid IL or missing references)
TranslatorPlugin.IsDrawingOwnUI = true;
GUILayout.BeginVertical(Array.Empty<GUILayoutOption>());
if (TranslatorPlugin.Manager.CurrentLang != "off")
{
GUILayout.Label($"Processing: {TranslatorPlugin.Manager.QueueSize}", Array.Empty<GUILayoutOption>());
}
else
{
GUILayout.Label("Translation is OFF", Array.Empty<GUILayoutOption>());
}
_scrollPos = GUILayout.BeginScrollView(_scrollPos, GUIStyle.op_Implicit("box"));
foreach (LanguageInfo language in _languages)
{
if (language.Code == TranslatorPlugin.Manager.CurrentLang)
{
GUI.backgroundColor = Color.green;
}
else
{
GUI.backgroundColor = Color.white;
}
if (GUILayout.Button(language.NativeName, (GUILayoutOption[])(object)new GUILayoutOption[1] { GUILayout.Height(25f) }))
{
TranslatorPlugin.Manager.SetLanguage(language.Code);
}
}
GUILayout.EndScrollView();
GUI.backgroundColor = new Color(1f, 0.4f, 0.4f);
if (GUILayout.Button("Clear Cache / Reset", (GUILayoutOption[])(object)new GUILayoutOption[1] { GUILayout.Height(30f) }))
{
TranslatorPlugin.Manager.ClearCache();
}
GUILayout.EndVertical();
GUI.DragWindow();
TranslatorPlugin.IsDrawingOwnUI = false;
}
}
public class TranslationManager
{
[CompilerGenerated]
private sealed class <>c__DisplayClass15_0
{
public string url;
internal string <ProcessQueue>b__0()
{
try
{
using WebClient webClient = new WebClient();
webClient.Encoding = Encoding.UTF8;
webClient.Headers.Add("User-Agent", "Mozilla/5.0");
return webClient.DownloadString(url);
}
catch
{
return null;
}
}
}
[CompilerGenerated]
private sealed class <ProcessQueue>d__15 : IEnumerator<object>, IDisposable, IEnumerator
{
private int <>1__state;
private object <>2__current;
public TranslationManager <>4__this;
private <>c__DisplayClass15_0 <>8__1;
private string <textToTranslate>5__2;
private string <encodedText>5__3;
private Task<string> <downloadTask>5__4;
private string <json>5__5;
private string <translated>5__6;
object IEnumerator<object>.Current
{
[DebuggerHidden]
get
{
return <>2__current;
}
}
object IEnumerator.Current
{
[DebuggerHidden]
get
{
return <>2__current;
}
}
[DebuggerHidden]
public <ProcessQueue>d__15(int <>1__state)
{
this.<>1__state = <>1__state;
}
[DebuggerHidden]
void IDisposable.Dispose()
{
<>8__1 = null;
<textToTranslate>5__2 = null;
<encodedText>5__3 = null;
<downloadTask>5__4 = null;
<json>5__5 = null;
<translated>5__6 = null;
<>1__state = -2;
}
private bool MoveNext()
{
//IL_017c: Unknown result type (might be due to invalid IL or missing references)
//IL_0186: Expected O, but got Unknown
switch (<>1__state)
{
default:
return false;
case 0:
<>1__state = -1;
goto IL_01ba;
case 1:
<>1__state = -1;
goto IL_00c9;
case 2:
{
<>1__state = -1;
<>8__1 = null;
<textToTranslate>5__2 = null;
<encodedText>5__3 = null;
<downloadTask>5__4 = null;
<json>5__5 = null;
goto IL_01ba;
}
IL_01ba:
if (<>4__this._translateQueue.Count > 0)
{
<>8__1 = new <>c__DisplayClass15_0();
<textToTranslate>5__2 = <>4__this._translateQueue.Dequeue();
<encodedText>5__3 = Uri.EscapeDataString(<textToTranslate>5__2);
<>8__1.url = "https://translate.googleapis.com/translate_a/single?client=gtx&sl=auto&tl=" + <>4__this.CurrentLang + "&dt=t&q=" + <encodedText>5__3;
<downloadTask>5__4 = Task.Run(delegate
{
try
{
using WebClient webClient = new WebClient();
webClient.Encoding = Encoding.UTF8;
webClient.Headers.Add("User-Agent", "Mozilla/5.0");
return webClient.DownloadString(<>8__1.url);
}
catch
{
return null;
}
});
goto IL_00c9;
}
if (<>4__this._needsSave)
{
<>4__this.SaveCache();
}
return false;
IL_00c9:
if (!<downloadTask>5__4.IsCompleted)
{
<>2__current = null;
<>1__state = 1;
return true;
}
<json>5__5 = <downloadTask>5__4.Result;
if (!string.IsNullOrEmpty(<json>5__5))
{
<translated>5__6 = <>4__this.ParseGoogleJson(<json>5__5);
if (!string.IsNullOrEmpty(<translated>5__6))
{
<>4__this._translations[<textToTranslate>5__2] = <translated>5__6;
<>4__this._needsSave = true;
}
<translated>5__6 = null;
}
else
{
<>4__this._activeRequests.Remove(<textToTranslate>5__2);
}
<>2__current = (object)new WaitForSecondsRealtime(0.2f);
<>1__state = 2;
return true;
}
}
bool IEnumerator.MoveNext()
{
//ILSpy generated this explicit interface implementation from .override directive in MoveNext
return this.MoveNext();
}
[DebuggerHidden]
void IEnumerator.Reset()
{
throw new NotSupportedException();
}
}
public TranslatorBehaviour Behaviour;
public string CurrentLang = "off";
private Dictionary<string, string> _translations = new Dictionary<string, string>();
private Queue<string> _translateQueue = new Queue<string>();
private HashSet<string> _activeRequests = new HashSet<string>();
private bool _needsSave = false;
private Regex _hexRegex = new Regex("^#?[0-9A-Fa-f]{6}$");
private Regex _emojiRegex = new Regex("[\\u2300-\\u23FF\\u2600-\\u26FF\\uD83C-\\uDBFF\\uDC00-\\uDFFF\\u2700-\\u27BF]");
private Regex _techRegex = new Regex("(\\\\u[0-9a-fA-F]{4})|(\\<\\<)|(\\>\\>)|(--+)");
public int QueueSize => _translateQueue.Count;
public void SetLanguage(string lang)
{
if (CurrentLang != "off")
{
SaveCache();
}
CurrentLang = lang;
PlayerPrefs.SetString("Antro_TargetLang", lang);
PlayerPrefs.Save();
_translations.Clear();
_translateQueue.Clear();
_activeRequests.Clear();
if (lang != "off")
{
LoadCache();
}
}
public string Process(string text)
{
if (CurrentLang == "off")
{
return text;
}
if (string.IsNullOrWhiteSpace(text))
{
return text;
}
if (_hexRegex.IsMatch(text))
{
return text;
}
if (_emojiRegex.IsMatch(text))
{
return text;
}
if (_techRegex.IsMatch(text))
{
return text;
}
if (LooksLikeNickname(text))
{
return text;
}
if (IsNumericOrSymbol(text))
{
return text;
}
if (text.Contains("\n") || text.Contains("|") || text.Contains("\t"))
{
return ProcessSplit(text);
}
return TranslateSingle(text);
}
private string ProcessSplit(string text)
{
string[] array = Regex.Split(text, "(\\n|\\||\\t)");
StringBuilder stringBuilder = new StringBuilder();
string[] array2 = array;
foreach (string text2 in array2)
{
if (!string.IsNullOrWhiteSpace(text2))
{
switch (text2)
{
default:
if (!IsNumericOrSymbol(text2))
{
stringBuilder.Append(TranslateSingle(text2));
continue;
}
break;
case "\n":
case "|":
case "\t":
break;
}
}
stringBuilder.Append(text2);
}
return stringBuilder.ToString();
}
private string TranslateSingle(string text)
{
List<string> list = new List<string>();
string text2 = ExtractNumbers(text, list);
if (_translations.TryGetValue(text2, out var value))
{
return RestoreNumbers(value, list);
}
if (!_activeRequests.Contains(text2))
{
_activeRequests.Add(text2);
_translateQueue.Enqueue(text2);
if (_translateQueue.Count == 1)
{
MonoBehaviourExtensions.StartCoroutine((MonoBehaviour)(object)Behaviour, ProcessQueue());
}
}
return text;
}
[IteratorStateMachine(typeof(<ProcessQueue>d__15))]
private IEnumerator ProcessQueue()
{
//yield-return decompiler failed: Unexpected instruction in Iterator.Dispose()
return new <ProcessQueue>d__15(0)
{
<>4__this = this
};
}
private string ParseGoogleJson(string json)
{
try
{
int num = json.IndexOf('"');
if (num == -1)
{
return null;
}
int num2 = json.IndexOf('"', num + 1);
if (num2 == -1)
{
return null;
}
return json.Substring(num + 1, num2 - num - 1);
}
catch
{
return null;
}
}
private string ExtractNumbers(string input, List<string> storage)
{
string pattern = "\\d+(\\.\\d+)?";
int counter = 0;
return Regex.Replace(input, pattern, delegate(Match m)
{
storage.Add(m.Value);
return $"{{{counter++}}}";
});
}
private string RestoreNumbers(string template, List<string> numbers)
{
try
{
object[] args = numbers.ToArray();
return string.Format(template, args);
}
catch
{
return template;
}
}
public void LoadCache()
{
string path = Path.Combine(TranslatorPlugin.BasePath, CurrentLang + ".txt");
if (!File.Exists(path))
{
return;
}
string[] array = File.ReadAllLines(path);
string[] array2 = array;
foreach (string text in array2)
{
int num = text.IndexOf('=');
if (num > 0)
{
string key = text.Substring(0, num).Replace("<br>", "\n");
string value = text.Substring(num + 1).Replace("<br>", "\n");
if (!_translations.ContainsKey(key))
{
_translations[key] = value;
}
}
}
}
public void SaveCache()
{
if (!_needsSave)
{
return;
}
string path = Path.Combine(TranslatorPlugin.BasePath, CurrentLang + ".txt");
List<string> list = new List<string>();
foreach (KeyValuePair<string, string> translation in _translations)
{
string text = translation.Key.Replace("\n", "<br>");
string text2 = translation.Value.Replace("\n", "<br>");
list.Add(text + "=" + text2);
}
File.WriteAllLines(path, list);
_needsSave = false;
}
public void ClearCache()
{
_translations.Clear();
_activeRequests.Clear();
_translateQueue.Clear();
_needsSave = false;
string path = Path.Combine(TranslatorPlugin.BasePath, CurrentLang + ".txt");
if (File.Exists(path))
{
File.Delete(path);
}
}
private bool IsNumericOrSymbol(string s)
{
return Regex.IsMatch(s, "^[\\d\\.,\\s%:\\-\\+/()\\[\\]#@]+$");
}
private bool LooksLikeNickname(string s)
{
if (!s.Contains(" ") && s.Length > 12)
{
return true;
}
if (Regex.IsMatch(s, "[a-zA-Z]+\\d+[a-zA-Z]*") && !s.Contains(" "))
{
return true;
}
if (s.Contains("_") && !s.Contains(" "))
{
return true;
}
return false;
}
}
[HarmonyPatch]
public static class GUIPatches
{
private static void T(ref string s)
{
if (!TranslatorPlugin.IsDrawingOwnUI && TranslatorPlugin.Manager != null)
{
s = TranslatorPlugin.Manager.Process(s);
}
}
[HarmonyPatch(typeof(GUILayout), "Button", new Type[]
{
typeof(string),
typeof(GUILayoutOption[])
})]
[HarmonyPrefix]
public static void HookLayoutBtn(ref string __0)
{
T(ref __0);
}
[HarmonyPatch(typeof(GUILayout), "Label", new Type[]
{
typeof(string),
typeof(GUILayoutOption[])
})]
[HarmonyPrefix]
public static void HookLayoutLbl(ref string __0)
{
T(ref __0);
}
[HarmonyPatch(typeof(GUILayout), "Box", new Type[]
{
typeof(string),
typeof(GUILayoutOption[])
})]
[HarmonyPrefix]
public static void HookLayoutBox(ref string __0)
{
T(ref __0);
}
[HarmonyPatch(typeof(GUILayout), "Toggle", new Type[]
{
typeof(bool),
typeof(string),
typeof(GUILayoutOption[])
})]
[HarmonyPrefix]
public static void HookLayoutToggle(bool __0, ref string __1)
{
T(ref __1);
}
[HarmonyPatch(typeof(GUI), "Button", new Type[]
{
typeof(Rect),
typeof(string)
})]
[HarmonyPrefix]
public static void HookGuiBtn(ref string __1)
{
T(ref __1);
}
[HarmonyPatch(typeof(GUI), "Label", new Type[]
{
typeof(Rect),
typeof(string)
})]
[HarmonyPrefix]
public static void HookGuiLabel(ref string __1)
{
T(ref __1);
}
[HarmonyPatch(typeof(GUI), "Box", new Type[]
{
typeof(Rect),
typeof(string)
})]
[HarmonyPrefix]
public static void HookGuiBox(ref string __1)
{
T(ref __1);
}
[HarmonyPatch(typeof(GUI), "Toggle", new Type[]
{
typeof(Rect),
typeof(bool),
typeof(string)
})]
[HarmonyPrefix]
public static void HookGuiToggle(ref string __2)
{
T(ref __2);
}
}
}