From 8b8a055cd1ee0ce67f41e904c305e4c26a478526 Mon Sep 17 00:00:00 2001 From: sin365 <353374337@qq.com> Date: Wed, 8 Jan 2025 13:30:58 +0800 Subject: [PATCH] =?UTF-8?q?token=20AES=20=E5=AF=86=E9=92=A5=E7=94=9F?= =?UTF-8?q?=E6=88=90=E5=8A=A0=E5=AF=86=EF=BC=8C=E6=94=B6=E8=97=8From?= =?UTF-8?q?=E5=8A=9F=E8=83=BD=E5=92=8Capi?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Assets/Script/AppMain/App.cs | 4 +- .../Assets/Script/AppMain/AxiHttp/AxiHttp.cs | 9 +- .../Assets/Script/AppMain/Initer.cs | 6 +- .../Assets/Script/AppMain/Manager/AppLogin.cs | 2 +- .../Assets/Script/AppMain/Manager/AppShare.cs | 4 +- .../Assets/Script/AppMain/Manager/HttpAPI.cs | 117 +++- .../Script/AppMain/Manager/RomLib/RomLib.cs | 4 +- .../Script/AppMain/Manager/UserDataManager.cs | 14 +- .../Script/AppMain/NesEmulator/NesEmulator.cs | 3 +- .../Protobuf/ProtobufAxibugEmuOnline.cs | 658 +++++++++++++----- .../AppMain/UI/GamesUI/RomListMenuItem.cs | 4 +- .../AppMain/UI/RoomUI/RoomListMenuItem.cs | 1 + .../AxibugEmuOnline.Server.csproj | 7 + AxibugEmuOnline.Server/Common/AESHelper.cs | 147 ++++ AxibugEmuOnline.Server/Common/Config.cs | 2 + .../{Haoyue_SQLPoolManager.cs => SQLPool.cs} | 54 +- AxibugEmuOnline.Server/Manager/AppSrv.cs | 3 +- .../Manager/GameShareManager.cs | 81 ++- .../Manager/LoginManager.cs | 54 +- AxibugEmuOnline.Server/Manager/RoomManager.cs | 4 +- AxibugEmuOnline.Server/Program.cs | 9 +- .../Protobuf/ProtobufAxibugEmuOnline.cs | 658 +++++++++++++----- .../AxibugEmuOnline.Web.csproj | 1 + AxibugEmuOnline.Web/Common/AESHelper.cs | 147 ++++ AxibugEmuOnline.Web/Common/Config.cs | 2 + AxibugEmuOnline.Web/Common/ProtoBufHelper.cs | 22 + .../{Haoyue_SQLPoolManager.cs => SQLPool.cs} | 77 +- .../Controllers/ApiController.cs | 199 +++++- AxibugEmuOnline.Web/Program.cs | 3 +- .../out/CS/ProtobufAxibugEmuOnline.cs | 658 +++++++++++++----- .../proto/protobuf_AxibugEmuOnline.proto | 11 +- 31 files changed, 2354 insertions(+), 611 deletions(-) create mode 100644 AxibugEmuOnline.Server/Common/AESHelper.cs rename AxibugEmuOnline.Server/Common/{Haoyue_SQLPoolManager.cs => SQLPool.cs} (81%) create mode 100644 AxibugEmuOnline.Web/Common/AESHelper.cs create mode 100644 AxibugEmuOnline.Web/Common/ProtoBufHelper.cs rename AxibugEmuOnline.Web/Common/{Haoyue_SQLPoolManager.cs => SQLPool.cs} (69%) diff --git a/AxibugEmuOnline.Client/Assets/Script/AppMain/App.cs b/AxibugEmuOnline.Client/Assets/Script/AppMain/App.cs index 91da985f..c9125375 100644 --- a/AxibugEmuOnline.Client/Assets/Script/AppMain/App.cs +++ b/AxibugEmuOnline.Client/Assets/Script/AppMain/App.cs @@ -46,7 +46,7 @@ namespace AxibugEmuOnline.Client.ClientCore #else public static string PersistentDataPath => Application.persistentDataPath; #endif - public static void Init(bool isTest = false, string testSrvIP = "") + public static void Init(bool isTest = false, string testSrvIP = "", bool bUseLocalWebApi = false, string mLocalWebApi = "") { log = new LogManager(OnLogOut); @@ -64,6 +64,8 @@ namespace AxibugEmuOnline.Client.ClientCore emu = new AppEmu(); //netgame = new AppNetGame(); httpAPI = new HttpAPI(); + if (bUseLocalWebApi) + httpAPI.WebHost = mLocalWebApi; nesRomLib = new RomLib(RomPlatformType.Nes); CacheMgr = new CacheManager(); roomMgr = new AppRoom(); diff --git a/AxibugEmuOnline.Client/Assets/Script/AppMain/AxiHttp/AxiHttp.cs b/AxibugEmuOnline.Client/Assets/Script/AppMain/AxiHttp/AxiHttp.cs index 7311c304..c58efede 100644 --- a/AxibugEmuOnline.Client/Assets/Script/AppMain/AxiHttp/AxiHttp.cs +++ b/AxibugEmuOnline.Client/Assets/Script/AppMain/AxiHttp/AxiHttp.cs @@ -170,7 +170,14 @@ public static class AxiHttp if (!dictIP2Address.ContainsKey(str)) { IPHostEntry host = Dns.GetHostEntry(str); - IPAddress ip = host.AddressList[0]; + IPAddress ip = null; + foreach (var item in host.AddressList) + { + if (item.AddressFamily == AddressFamily.InterNetwork) + { + ip = item; break; + } + } dictIP2Address[str] = ip; } return dictIP2Address[str]; diff --git a/AxibugEmuOnline.Client/Assets/Script/AppMain/Initer.cs b/AxibugEmuOnline.Client/Assets/Script/AppMain/Initer.cs index f4ab415a..b0834165 100644 --- a/AxibugEmuOnline.Client/Assets/Script/AppMain/Initer.cs +++ b/AxibugEmuOnline.Client/Assets/Script/AppMain/Initer.cs @@ -17,15 +17,17 @@ namespace AxibugEmuOnline.Client #if UNITY_EDITOR - public bool bTest = false; + public bool bTestSkipWebApiToConServer = false; public string mTestSrvIP = "192.168.0.47"; + public bool bUseLocalWebApi = false; + public string mLocalWebApi = "http://localhost:5051"; public bool bEditorUUID = false; #endif private void Awake() { #if UNITY_EDITOR - App.Init(bTest, mTestSrvIP); + App.Init(bTestSkipWebApiToConServer, mTestSrvIP, bUseLocalWebApi,mLocalWebApi); dev_UUID = SystemInfo.deviceUniqueIdentifier; if (bEditorUUID) { diff --git a/AxibugEmuOnline.Client/Assets/Script/AppMain/Manager/AppLogin.cs b/AxibugEmuOnline.Client/Assets/Script/AppMain/Manager/AppLogin.cs index 9fbd69c3..33c1932d 100644 --- a/AxibugEmuOnline.Client/Assets/Script/AppMain/Manager/AppLogin.cs +++ b/AxibugEmuOnline.Client/Assets/Script/AppMain/Manager/AppLogin.cs @@ -73,7 +73,7 @@ namespace AxibugEmuOnline.Client.Manager if (msg.Status == LoginResultStatus.Ok) { App.log.Info("登录成功"); - App.user.InitMainUserData(App.user.userdata.Account, msg.UID); + App.user.InitMainUserData(App.user.userdata.Account, msg.UID, msg.Token); OverlayManager.PopTip("登录成功"); diff --git a/AxibugEmuOnline.Client/Assets/Script/AppMain/Manager/AppShare.cs b/AxibugEmuOnline.Client/Assets/Script/AppMain/Manager/AppShare.cs index d690c246..0f8179df 100644 --- a/AxibugEmuOnline.Client/Assets/Script/AppMain/Manager/AppShare.cs +++ b/AxibugEmuOnline.Client/Assets/Script/AppMain/Manager/AppShare.cs @@ -17,12 +17,12 @@ namespace AxibugEmuOnline.Client.Manager /// 发送收藏 /// /// - /// [0]收藏[1]取消收藏 + /// [0]取消收藏[1]收藏 public void SendGameStar(int RomID, int Motion) { Protobuf_Game_Mark req = new Protobuf_Game_Mark() { - State = Motion, + Motion = Motion, RomID = RomID, }; App.log.Info($"LeavnRoom"); diff --git a/AxibugEmuOnline.Client/Assets/Script/AppMain/Manager/HttpAPI.cs b/AxibugEmuOnline.Client/Assets/Script/AppMain/Manager/HttpAPI.cs index 6a59e5d4..7c009252 100644 --- a/AxibugEmuOnline.Client/Assets/Script/AppMain/Manager/HttpAPI.cs +++ b/AxibugEmuOnline.Client/Assets/Script/AppMain/Manager/HttpAPI.cs @@ -14,16 +14,15 @@ namespace AxibugEmuOnline.Client public delegate void GetRomListAPI(Action callback, AxibugProtobuf.RomPlatformType Platform, int page, int pageSize = 10); public delegate void SearchRomListAPI(Action callback, AxibugProtobuf.RomPlatformType Platform, string searchKey, int page, int pageSize = 10); - public void GetNesRomList(Action callback, AxibugProtobuf.RomPlatformType platform, int page, int pageSize = 10) + public void GetRomList(Action callback, AxibugProtobuf.RomPlatformType platform, int page, int pageSize = 10) { App.StartCoroutine(GetRomListFlow(platform, page, pageSize, callback)); } - - public void SearchNesRomList(Action callback, AxibugProtobuf.RomPlatformType platform, string searchKey, int page, int pageSize = 10) + public void SearchRomList(Action callback, AxibugProtobuf.RomPlatformType platform, string searchKey, int page, int pageSize = 10) { - App.StartCoroutine(SearchNesRomListFlow(platform, searchKey, page, pageSize, callback)); + App.StartCoroutine(SearchRomListFlow(platform, searchKey, page, pageSize, callback)); } - private IEnumerator SearchNesRomListFlow(AxibugProtobuf.RomPlatformType platform, string searchKey, int page, int pageSize, Action callback) + private IEnumerator SearchRomListFlow(AxibugProtobuf.RomPlatformType platform, string searchKey, int page, int pageSize, Action callback) { if (!string.IsNullOrEmpty(searchKey)) { @@ -40,7 +39,7 @@ namespace AxibugEmuOnline.Client //string utf8String = Encoding.UTF8.GetString(utf8Bytes); //searchKey = UrlEncode(utf8String); //App.log.Info($"search->{utf8String} ->{searchKey}"); - string url = $"{WebSiteApi}/NesRomList?Page={page}&PageSize={pageSize}&SearchKey={searchKey}"; + string url = $"{WebSiteApi}/RomList?Page={page}&PageSize={pageSize}&SearchKey={searchKey}&Token={App.user.Token}"; App.log.Info($"GetRomList=>{url}"); AxiHttpProxy.SendWebRequestProxy request = AxiHttpProxy.Get(url); yield return request.SendWebRequest; @@ -73,7 +72,97 @@ namespace AxibugEmuOnline.Client } private IEnumerator GetRomListFlow(AxibugProtobuf.RomPlatformType platform, int page, int pageSize, Action callback) { - string url = $"{WebSiteApi}/RomList?Page={page}&PageSize={pageSize}&PType={(int)platform}"; + string url = $"{WebSiteApi}/RomList?Page={page}&PageSize={pageSize}&PType={(int)platform}&Token={App.user.Token}"; + App.log.Info($"GetRomList=>{url}"); + AxiHttpProxy.SendWebRequestProxy request = AxiHttpProxy.Get(url); + yield return request.SendWebRequest; + if (!request.downloadHandler.isDone) + { + callback.Invoke(page, null); + yield break; + } + + //请求成功 + if (!request.downloadHandler.bHadErr) + { + var resp = JsonUtility.FromJson(request.downloadHandler.text); + callback.Invoke(page, resp); + yield break; + } + + App.log.Error(request.downloadHandler.ErrInfo); + callback.Invoke(page, null); + /* + UnityWebRequest request = UnityWebRequest.Get($"{WebSiteApi}/NesRomList?Page={page}&PageSize={pageSize}"); + yield return request.SendWebRequest(); + + if (request.result != UnityWebRequest.Result.Success) + { + callback.Invoke(null); + yield break; + } + */ + } + + public void GetMarkList(Action callback, AxibugProtobuf.RomPlatformType platform, int page, int pageSize = 10) + { + App.StartCoroutine(GetMarkListFlow(platform, page, pageSize, callback)); + } + public void SearchMarkList(Action callback, AxibugProtobuf.RomPlatformType platform, string searchKey, int page, int pageSize = 10) + { + App.StartCoroutine(SearchMarkListFlow(platform, searchKey, page, pageSize, callback)); + } + private IEnumerator SearchMarkListFlow(AxibugProtobuf.RomPlatformType platform, string searchKey, int page, int pageSize, Action callback) + { + if (!string.IsNullOrEmpty(searchKey)) + { + string oldsearch = searchKey; + //searchKey = System.Net.WebUtility.UrlEncode(searchKey); + searchKey = AxiHttp.UrlEncode(searchKey); + App.log.Info($"search->{oldsearch} ->{searchKey}"); + //searchKey = HttpUtility.UrlDecode(searchKey); + } + //避免特殊字符和个别文字编码问题 + //byte[] gb2312Bytes = Encoding.Default.GetBytes(searchKey); + //byte[] utf8Bytes = Encoding.Convert(Encoding.Default, Encoding.UTF8, gb2312Bytes); + //// 将UTF-8编码的字节数组转换回字符串(此时是UTF-8编码的字符串) + //string utf8String = Encoding.UTF8.GetString(utf8Bytes); + //searchKey = UrlEncode(utf8String); + //App.log.Info($"search->{utf8String} ->{searchKey}"); + string url = $"{WebSiteApi}/RomList?Page={page}&PageSize={pageSize}&SearchKey={searchKey}&Token={App.user.Token}"; + App.log.Info($"GetRomList=>{url}"); + AxiHttpProxy.SendWebRequestProxy request = AxiHttpProxy.Get(url); + yield return request.SendWebRequest; + if (!request.downloadHandler.isDone) + { + callback.Invoke(page, null); + yield break; + } + + if (!request.downloadHandler.bHadErr) + { + var resp = JsonUtility.FromJson(request.downloadHandler.text); + callback.Invoke(page, resp); + yield break; + } + + App.log.Error(request.downloadHandler.ErrInfo); + callback.Invoke(page, null); + + /* + UnityWebRequest request = UnityWebRequest.Get($"{WebSiteApi}/NesRomList?Page={page}&PageSize={pageSize}&SearchKey={searchKey}"); + yield return request.SendWebRequest(); + + if (request.result != UnityWebRequest.Result.Success) + { + callback.Invoke(null); + yield break; + }*/ + + } + private IEnumerator GetMarkListFlow(AxibugProtobuf.RomPlatformType platform, int page, int pageSize, Action callback) + { + string url = $"{WebSiteApi}/RomList?Page={page}&PageSize={pageSize}&PType={(int)platform}&Token={App.user.Token}"; App.log.Info($"GetRomList=>{url}"); AxiHttpProxy.SendWebRequestProxy request = AxiHttpProxy.Get(url); yield return request.SendWebRequest; @@ -105,10 +194,11 @@ namespace AxibugEmuOnline.Client */ } + public IEnumerator GetRomInfo(int RomID, Action callback) { - AxiHttpProxy.SendWebRequestProxy request = AxiHttpProxy.Get($"{WebSiteApi}/RomInfo?RomID={RomID}"); + AxiHttpProxy.SendWebRequestProxy request = AxiHttpProxy.Get($"{WebSiteApi}/RomInfo?RomID={RomID}&Token={App.user.Token}"); yield return request.SendWebRequest; if (!request.downloadHandler.isDone) { @@ -183,8 +273,15 @@ namespace AxibugEmuOnline.Client public string url; public string imgUrl; public string hash; - public int stars; - public int isStar;//TODO 实现收藏标记 + public int stars; + /// + /// 游玩计数 + /// + public int playcount; + /// + /// 是否收藏 + /// + public int isStar; } [Serializable] public class Resp_CheckStandInfo diff --git a/AxibugEmuOnline.Client/Assets/Script/AppMain/Manager/RomLib/RomLib.cs b/AxibugEmuOnline.Client/Assets/Script/AppMain/Manager/RomLib/RomLib.cs index 1a499722..5a7c1c91 100644 --- a/AxibugEmuOnline.Client/Assets/Script/AppMain/Manager/RomLib/RomLib.cs +++ b/AxibugEmuOnline.Client/Assets/Script/AppMain/Manager/RomLib/RomLib.cs @@ -31,8 +31,8 @@ namespace AxibugEmuOnline.Client switch (platform) { case RomPlatformType.Nes: - m_romGetFunc = App.httpAPI.GetNesRomList; - m_romSearchFunc = App.httpAPI.SearchNesRomList; + m_romGetFunc = App.httpAPI.GetRomList; + m_romSearchFunc = App.httpAPI.SearchRomList; break; } diff --git a/AxibugEmuOnline.Client/Assets/Script/AppMain/Manager/UserDataManager.cs b/AxibugEmuOnline.Client/Assets/Script/AppMain/Manager/UserDataManager.cs index e25de19a..4c0ce88b 100644 --- a/AxibugEmuOnline.Client/Assets/Script/AppMain/Manager/UserDataManager.cs +++ b/AxibugEmuOnline.Client/Assets/Script/AppMain/Manager/UserDataManager.cs @@ -17,7 +17,8 @@ namespace AxibugEmuOnline.Client.Manager public class MainUserDataBase : UserDataBase { - public bool IsLoggedIn { get; set; } = false; + public bool IsLoggedIn { get; set; } = false; + public string Token { get; set; } } public class UserDataManager @@ -39,15 +40,20 @@ namespace AxibugEmuOnline.Client.Manager public MainUserDataBase userdata { get; private set; } = new MainUserDataBase(); public bool IsLoggedIn => userdata.IsLoggedIn; + public string Token => userdata.IsLoggedIn ? userdata.Token : string.Empty; Dictionary DictUID2User = new Dictionary(); public int OnlinePlayerCount => DictUID2User.Count; - public void InitMainUserData(string UName, long UID) + public void InitMainUserData(string UName, long UID, string token) { userdata.NickName = UName; userdata.IsLoggedIn = true; userdata.UID = UID; - //以及其他数据初始化 - //... + userdata.Token = token; +#if UNITY_EDITOR + App.log.Debug($"收到登录token:{token}"); +#endif + //以及其他数据初始化 + //... } /// /// 登出 diff --git a/AxibugEmuOnline.Client/Assets/Script/AppMain/NesEmulator/NesEmulator.cs b/AxibugEmuOnline.Client/Assets/Script/AppMain/NesEmulator/NesEmulator.cs index c6455ae4..49ccc8ce 100644 --- a/AxibugEmuOnline.Client/Assets/Script/AppMain/NesEmulator/NesEmulator.cs +++ b/AxibugEmuOnline.Client/Assets/Script/AppMain/NesEmulator/NesEmulator.cs @@ -9,7 +9,6 @@ using UnityEditor; using UnityEngine; using VirtualNes.Core; using VirtualNes.Core.Debug; -using Debug = System.Diagnostics.Debug; namespace AxibugEmuOnline.Client { @@ -196,7 +195,7 @@ namespace AxibugEmuOnline.Client var xmlStr = File.ReadAllText("nes20db.xml"); var xml = XDocument.Parse(xmlStr); var games = xml.Element("nes20db")?.Elements("game"); - Debug.Assert(games != null, nameof(games) + " != null"); + System.Diagnostics.Debug.Assert(games != null, nameof(games) + " != null"); foreach (var game in games) { var crcStr = game.Element("rom")?.Attribute("crc32")?.Value; diff --git a/AxibugEmuOnline.Client/Assets/Script/AppMain/Protobuf/ProtobufAxibugEmuOnline.cs b/AxibugEmuOnline.Client/Assets/Script/AppMain/Protobuf/ProtobufAxibugEmuOnline.cs index 03dca7a1..22e17773 100644 --- a/AxibugEmuOnline.Client/Assets/Script/AppMain/Protobuf/ProtobufAxibugEmuOnline.cs +++ b/AxibugEmuOnline.Client/Assets/Script/AppMain/Protobuf/ProtobufAxibugEmuOnline.cs @@ -36,113 +36,115 @@ namespace AxibugProtobuf { "aW5fUkVTUBIQCghOaWNrTmFtZRgBIAEoCRINCgVUb2tlbhgCIAEoCRIVCg1M", "YXN0TG9naW5EYXRlGAMgASgJEg8KB1JlZ0RhdGUYBCABKAkSMQoGU3RhdHVz", "GAUgASgOMiEuQXhpYnVnUHJvdG9idWYuTG9naW5SZXN1bHRTdGF0dXMSCwoD", - "VUlEGAYgASgDIhMKEVByb3RvYnVmX1VzZXJMaXN0IlsKFlByb3RvYnVmX1Vz", - "ZXJMaXN0X1JFU1ASEQoJVXNlckNvdW50GAEgASgFEi4KCFVzZXJMaXN0GAIg", - "AygLMhwuQXhpYnVnUHJvdG9idWYuVXNlck1pbmlJbmZvIkgKFlByb3RvYnVm", - "X1VzZXJKb2luX1JFU1ASLgoIVXNlckluZm8YASABKAsyHC5BeGlidWdQcm90", - "b2J1Zi5Vc2VyTWluaUluZm8iJgoXUHJvdG9idWZfVXNlckxlYXZlX1JFU1AS", - "CwoDVUlEGAEgASgDIjUKF1Byb3RvYnVmX1VzZXJTdGF0ZV9SRVNQEgsKA1VJ", - "RBgBIAEoAxINCgVTdGF0ZRgCIAEoBSJdCgxVc2VyTWluaUluZm8SCwoDVUlE", - "GAEgASgDEhAKCE5pY2tOYW1lGAIgASgJEi4KCmRldmljZVR5cGUYAyABKA4y", - "Gi5BeGlidWdQcm90b2J1Zi5EZXZpY2VUeXBlIiwKGFByb3RvYnVmX01vZGlm", - "eV9OaWNrTmFtZRIQCghOaWNrTmFtZRgBIAEoCSIfCh1Qcm90b2J1Zl9Nb2Rp", - "ZnlfTmlja05hbWVfUkVTUCJPCh1Qcm90b2J1Zl9VcGRhdGVfVXNlckluZm9f", - "UkVTUBIuCghVc2VySW5mbxgBIAEoCzIcLkF4aWJ1Z1Byb3RvYnVmLlVzZXJN", - "aW5pSW5mbyJhCiJQcm90b2J1Zl9VcGRhdGVfT3RoZXJVc2VySW5mb19SRVNQ", - "EgsKA1VJRBgBIAEoAxIuCghVc2VySW5mbxgCIAEoCzIcLkF4aWJ1Z1Byb3Rv", - "YnVmLlVzZXJNaW5pSW5mbyIUChJQcm90b2J1Zl9Sb29tX0xpc3QiWwoXUHJv", - "dG9idWZfUm9vbV9MaXN0X1JFU1ASQAoQUm9vbU1pbmlJbmZvTGlzdBgBIAMo", - "CzImLkF4aWJ1Z1Byb3RvYnVmLlByb3RvYnVmX1Jvb21fTWluaUluZm8iywIK", - "FlByb3RvYnVmX1Jvb21fTWluaUluZm8SDgoGUm9vbUlEGAEgASgFEhEKCUdh", - "bWVSb21JRBgCIAEoBRITCgtHYW1lUm9tSGFzaBgDIAEoCRI5ChBHYW1lUGxh", - "dGZvcm1UeXBlGAQgASgOMh8uQXhpYnVnUHJvdG9idWYuUm9tUGxhdGZvcm1U", - "eXBlEhUKDUhvc3RQbGF5ZXJVSUQYBSABKAMSMAoJR2FtZVN0YXRlGAYgASgO", - "Mh0uQXhpYnVnUHJvdG9idWYuUm9vbUdhbWVTdGF0ZRIUCgxPYnNVc2VyQ291", - "bnQYByABKAUSGQoRU2NyZWVuUHJvdmlkZXJVSUQYCCABKAMSRAoQR2FtZVBs", - "YXlTbG90TGlzdBgJIAMoCzIqLkF4aWJ1Z1Byb3RvYnVmLlByb3RvYnVmX1Jv", - "b21fR2FtZVBsYXlTbG90ItEBChpQcm90b2J1Zl9Sb29tX0dhbWVQbGF5U2xv", - "dBISCgpQbGF5ZXJfVUlEGAEgASgDEhcKD1BsYXllcl9OaWNrTmFtZRgCIAEo", - "CRIuCgpkZXZpY2VUeXBlGAMgASgOMhouQXhpYnVnUHJvdG9idWYuRGV2aWNl", - "VHlwZRIZChFQbGF5ZXJMb2NhbEpveUlkeBgEIAEoBRI7ChZQbGF5ZXJMb2Nh", - "bEdhbWVQYWRUeXBlGAUgASgOMhsuQXhpYnVnUHJvdG9idWYuR2FtZVBhZFR5", - "cGUibQoZUHJvdG9idWZfUm9vbV9VcGRhdGVfUkVTUBISCgpVcGRhdGVUeXBl", - "GAEgASgFEjwKDFJvb21NaW5pSW5mbxgCIAEoCzImLkF4aWJ1Z1Byb3RvYnVm", - "LlByb3RvYnVmX1Jvb21fTWluaUluZm8iSwoVUHJvdG9idWZfU2NyZW5uX0Zy", - "YW1lEg4KBlJvb21JRBgBIAEoBRIPCgdGcmFtZUlEGAIgASgFEhEKCVJhd0Jp", - "dG1hcBgDIAEoDCJJCiNQcm90b2J1Zl9Sb29tX1NpbmdsZVBsYXllcklucHV0", - "RGF0YRIPCgdGcmFtZUlEGAEgASgNEhEKCUlucHV0RGF0YRgCIAEoDSKAAQon", - "UHJvdG9idWZfUm9vbV9TeW5fUm9vbUZyYW1lQWxsSW5wdXREYXRhEg8KB0Zy", - "YW1lSUQYASABKA0SEQoJSW5wdXREYXRhGAIgASgEEhUKDVNlcnZlckZyYW1l", - "SUQYAyABKA0SGgoSU2VydmVyRm9yd2FyZENvdW50GAQgASgNIj4KFFByb3Rv", - "YnVmX1Jvb21fQ3JlYXRlEhEKCUdhbWVSb21JRBgBIAEoBRITCgtHYW1lUm9t", - "SGFzaBgCIAEoCSJZChlQcm90b2J1Zl9Sb29tX0NyZWF0ZV9SRVNQEjwKDFJv", - "b21NaW5pSW5mbxgBIAEoCzImLkF4aWJ1Z1Byb3RvYnVmLlByb3RvYnVmX1Jv", - "b21fTWluaUluZm8iJAoSUHJvdG9idWZfUm9vbV9Kb2luEg4KBlJvb21JRBgB", - "IAEoBSJXChdQcm90b2J1Zl9Sb29tX0pvaW5fUkVTUBI8CgxSb29tTWluaUlu", - "Zm8YASABKAsyJi5BeGlidWdQcm90b2J1Zi5Qcm90b2J1Zl9Sb29tX01pbmlJ", - "bmZvIiUKE1Byb3RvYnVmX1Jvb21fTGVhdmUSDgoGUm9vbUlEGAEgASgFIioK", - "GFByb3RvYnVmX1Jvb21fTGVhdmVfUkVTUBIOCgZSb29tSUQYASABKAUiYQoh", - "UHJvdG9idWZfUm9vbV9NeVJvb21fU3RhdGVfQ2hhbmdlEjwKDFJvb21NaW5p", - "SW5mbxgBIAEoCzImLkF4aWJ1Z1Byb3RvYnVmLlByb3RvYnVmX1Jvb21fTWlu", - "aUluZm8iawokUHJvdG9idWZfUm9vbV9DaGFuZ2VfUGxheVNsb3RXaXRoSm95", - "EkMKC1Nsb3RXaXRoSm95GAEgAygLMi4uQXhpYnVnUHJvdG9idWYuUHJvdG9i", - "dWZfUGxheVNsb3RJZHhXaXRoSm95SWR4Io8BCh5Qcm90b2J1Zl9QbGF5U2xv", - "dElkeFdpdGhKb3lJZHgSFQoNUGxheWVyU2xvdElkeBgBIAEoBRIZChFQbGF5", - "ZXJMb2NhbEpveUlkeBgCIAEoBRI7ChZQbGF5ZXJMb2NhbEdhbWVQYWRUeXBl", - "GAMgASgOMhsuQXhpYnVnUHJvdG9idWYuR2FtZVBhZFR5cGUiKwopUHJvdG9i", - "dWZfUm9vbV9DaGFuZ2VfUGxheVNsb3RXaXRoSm95X1JFU1AiRQobUHJvdG9i", - "dWZfUm9vbV9XYWl0U3RlcF9SRVNQEhAKCFdhaXRTdGVwGAEgASgFEhQKDExv", - "YWRTdGF0ZVJhdxgCIAEoDCI/CidQcm90b2J1Zl9Sb29tX0hvc3RQbGF5ZXJf", - "VXBkYXRlU3RhdGVSYXcSFAoMTG9hZFN0YXRlUmF3GAEgASgMIi4KLFByb3Rv", - "YnVmX1Jvb21fSG9zdFBsYXllcl9VcGRhdGVTdGF0ZVJhd19SRVNQIpoBChpQ", - "cm90b2J1Zl9Sb29tX1BsYXllcl9SZWFkeRIbChNQdXNoRnJhbWVOZWVkVGlt", - "ZVVzGAEgASgCEhsKE0xvYWRTdGF0ZU5lZWRUaW1lVXMYAiABKAISIAoYVmlk", - "ZW9GcmFtZVNob3dOZWVkVGltZVVzGAMgASgCEiAKGEF1ZGlvRnJhbWVQbGF5", - "TmVlZFRpbWVVcxgEIAEoAiIqChhQcm90b2J1Zl9Sb29tX0dldF9TY3JlZW4S", - "DgoGUm9vbUlEGAEgASgFIlMKHVByb3RvYnVmX1Jvb21fR2V0X1NjcmVlbl9S", - "RVNQEg4KBlJvb21JRBgBIAEoBRIPCgdGcmFtZUlEGAIgASgFEhEKCVJhd0Jp", - "dG1hcBgDIAEoDCIyChJQcm90b2J1Zl9HYW1lX01hcmsSDQoFUm9tSUQYASAB", - "KAUSDQoFc3RhdGUYAiABKAUiKAoXUHJvdG9idWZfR2FtZV9NYXJrX1JFU1AS", - "DQoFUm9tSUQYASABKAUqoQUKCUNvbW1hbmRJRBIOCgpDTURfREVGQVVMEAAS", - "DAoIQ01EX1BJTkcQARIMCghDTURfUE9ORxACEg4KCUNNRF9MT0dJThDRDxIY", - "ChNDTURfVVNFUl9PTkxJTkVMSVNUELgXEhIKDUNNRF9VU0VSX0pPSU4Q1xcS", - "EwoOQ01EX1VTRVJfTEVBVkUQ2BcSGgoVQ01EX1VTRVJfU1RBVEVfVVBEQVRF", - "ENkXEhgKE0NNRF9Nb2RpZnlfTmlja05hbWUQnRgSHAoXQ01EX1VwZGF0ZV9T", - "ZWxmVXNlckluZm8QphgSHQoYQ01EX1VwZGF0ZV9PdGhlclVzZXJJbmZvEKgY", - "EhAKC0NNRF9DSEFUTVNHEKEfEhIKDUNNRF9Sb29tX0xpc3QQiScSGQoUQ01E", - "X1Jvb21fTGlzdF9VcGRhdGUQiicSGAoTQ01EX1Jvb21fR2V0X1NjcmVlbhCT", - "JxIUCg9DTURfUm9vbV9DcmVhdGUQ7ScSEgoNQ01EX1Jvb21fSm9pbhDxJxIT", - "Cg5DTURfUm9vbV9MZWF2ZRDyJxIiCh1DTURfUm9vbV9NeVJvb21fU3RhdGVf", - "Q2hhbmdlZBD2JxIhChxDTURfUm9vbV9DaGFuZ2VQbGF5ZXJXaXRoSm95EIoo", - "EhYKEUNNRF9Sb29tX1dhaXRTdGVwENEoEicKIkNNRF9Sb29tX0hvc3RQbGF5", - "ZXJfVXBkYXRlU3RhdGVSYXcQ1CgSGgoVQ01EX1Jvb21fUGxheWVyX1JlYWR5", - "ENgoEiAKG0NNRF9Sb29tX1NpbmdlbF9QbGF5ZXJJbnB1dBD6LhIdChhDTURf", - "Uk9PTV9TWU5fUGxheWVySW5wdXQQ/y4SDwoKQ01EX1NjcmVlbhDZNhISCg1D", - "TURfR0FNRV9NQVJLEPVOKtABCglFcnJvckNvZGUSEAoMRVJST1JfREVGQVVM", - "EAASDAoIRVJST1JfT0sQARIYChRFUlJPUl9ST09NX05PVF9GT1VORBAKEicK", - "I0VSUk9SX1JPT01fU0xPVF9BTFJFQURMWV9IQURfUExBWUVSEAsSIQodRVJS", - "T1JfUk9PTV9DQU5UX0RPX0NVUlJfU1RBVEUQMhIfChpFUlJPUl9ST01fQUxS", - "RUFEWV9IQURfU1RBUhCTAxIcChdFUlJPUl9ST01fRE9OVF9IQURfU1RBUhCU", - "AypACglMb2dpblR5cGUSDQoJVXNlRGV2aWNlEAASDgoKVXNlQWNjb3VudBAB", - "EhQKEFVzZUhhb1l1ZUFjY291bnQQAiqlAQoKRGV2aWNlVHlwZRIWChJEZXZp", - "Y2VUeXBlX0RlZmF1bHQQABIGCgJQQxABEgsKB0FuZHJvaWQQAhIHCgNJT1MQ", - "AxIHCgNQU1YQBBIHCgNQUzMQBRIHCgNQUzQQBhILCgdYQk9YMzYwEAcSCwoH", - "WEJPWE9ORRAIEggKBFdpaVUQCRIPCgtOaW50ZW5kbzNEUxAKEhEKDUFuZHJv", - "aWRDYXJBcHAQCyqTAgoLR2FtZVBhZFR5cGUSDAoIS2V5Ym9hcmQQABIRCg1H", - "bG9iYWxHYW1lUGFkEAESDgoKVG91Y2hQYW5lbBACEg4KCkRTM0NvbnRyb2wQ", - "AxIOCgpEUzRDb250cm9sEAQSDgoKRFM1Q29udHJvbBAFEhQKEFN3aXRjaFBy", - "b0NvbnRyb2wQBhIQCgxTd2l0Y2hKb3lDb24QBxISCg5YQk9YMzYwQ29udHJv", - "bBAIEhIKDlhCT1hPTkVDb250cm9sEAkSEQoNUFNWaXRhQ29udHJvbBAKEhIK", - "DldpaVVQYWRDb250cm9sEAsSFAoQV2lpUmVtb3RlQ29udHJvbBAMEhYKEk5p", - "bnRlbmRvM0RTQ29udHJvbBANKqIBCg9Sb21QbGF0Zm9ybVR5cGUSCwoHSW52", - "YWxpZBAAEgcKA05lcxABEhEKDU1hc3Rlcl9TeXN0ZW0QAhINCglHYW1lX0dl", - "YXIQAxIMCghHYW1lX0JveRAEEhIKDkdhbWVfQm95X0NvbG9yEAUSEQoNQ29s", - "ZWNvX1Zpc2lvbhAGEgsKB1NDXzMwMDAQBxILCgdTR18xMDAwEAgSCAoDQWxs", - "EOcHKnAKDVJvb21HYW1lU3RhdGUSEgoOTm9uZV9HYW1lU3RhdGUQABIMCghP", - "bmx5SG9zdBABEhEKDVdhaXRSYXdVcGRhdGUQAhINCglXYWl0UmVhZHkQAxIJ", - "CgVQYXVzZRAEEhAKDEluT25saW5lR2FtZRAFKk4KEUxvZ2luUmVzdWx0U3Rh", - "dHVzEiEKHUxvZ2luUmVzdWx0U3RhdHVzX0Jhc2VEZWZhdWx0EAASBgoCT0sQ", - "ARIOCgpBY2NvdW50RXJyEAJCAkgBYgZwcm90bzM=")); + "VUlEGAYgASgDIkgKFVByb3RvYnVmX1Rva2VuX1N0cnVjdBILCgNVSUQYASAB", + "KAMSFAoMVG9rZW5HZW5EYXRlGAIgASgDEgwKBFNlZWQYAyABKAMiEwoRUHJv", + "dG9idWZfVXNlckxpc3QiWwoWUHJvdG9idWZfVXNlckxpc3RfUkVTUBIRCglV", + "c2VyQ291bnQYASABKAUSLgoIVXNlckxpc3QYAiADKAsyHC5BeGlidWdQcm90", + "b2J1Zi5Vc2VyTWluaUluZm8iSAoWUHJvdG9idWZfVXNlckpvaW5fUkVTUBIu", + "CghVc2VySW5mbxgBIAEoCzIcLkF4aWJ1Z1Byb3RvYnVmLlVzZXJNaW5pSW5m", + "byImChdQcm90b2J1Zl9Vc2VyTGVhdmVfUkVTUBILCgNVSUQYASABKAMiNQoX", + "UHJvdG9idWZfVXNlclN0YXRlX1JFU1ASCwoDVUlEGAEgASgDEg0KBVN0YXRl", + "GAIgASgFIl0KDFVzZXJNaW5pSW5mbxILCgNVSUQYASABKAMSEAoITmlja05h", + "bWUYAiABKAkSLgoKZGV2aWNlVHlwZRgDIAEoDjIaLkF4aWJ1Z1Byb3RvYnVm", + "LkRldmljZVR5cGUiLAoYUHJvdG9idWZfTW9kaWZ5X05pY2tOYW1lEhAKCE5p", + "Y2tOYW1lGAEgASgJIh8KHVByb3RvYnVmX01vZGlmeV9OaWNrTmFtZV9SRVNQ", + "Ik8KHVByb3RvYnVmX1VwZGF0ZV9Vc2VySW5mb19SRVNQEi4KCFVzZXJJbmZv", + "GAEgASgLMhwuQXhpYnVnUHJvdG9idWYuVXNlck1pbmlJbmZvImEKIlByb3Rv", + "YnVmX1VwZGF0ZV9PdGhlclVzZXJJbmZvX1JFU1ASCwoDVUlEGAEgASgDEi4K", + "CFVzZXJJbmZvGAIgASgLMhwuQXhpYnVnUHJvdG9idWYuVXNlck1pbmlJbmZv", + "IhQKElByb3RvYnVmX1Jvb21fTGlzdCJbChdQcm90b2J1Zl9Sb29tX0xpc3Rf", + "UkVTUBJAChBSb29tTWluaUluZm9MaXN0GAEgAygLMiYuQXhpYnVnUHJvdG9i", + "dWYuUHJvdG9idWZfUm9vbV9NaW5pSW5mbyLLAgoWUHJvdG9idWZfUm9vbV9N", + "aW5pSW5mbxIOCgZSb29tSUQYASABKAUSEQoJR2FtZVJvbUlEGAIgASgFEhMK", + "C0dhbWVSb21IYXNoGAMgASgJEjkKEEdhbWVQbGF0Zm9ybVR5cGUYBCABKA4y", + "Hy5BeGlidWdQcm90b2J1Zi5Sb21QbGF0Zm9ybVR5cGUSFQoNSG9zdFBsYXll", + "clVJRBgFIAEoAxIwCglHYW1lU3RhdGUYBiABKA4yHS5BeGlidWdQcm90b2J1", + "Zi5Sb29tR2FtZVN0YXRlEhQKDE9ic1VzZXJDb3VudBgHIAEoBRIZChFTY3Jl", + "ZW5Qcm92aWRlclVJRBgIIAEoAxJEChBHYW1lUGxheVNsb3RMaXN0GAkgAygL", + "MiouQXhpYnVnUHJvdG9idWYuUHJvdG9idWZfUm9vbV9HYW1lUGxheVNsb3Qi", + "0QEKGlByb3RvYnVmX1Jvb21fR2FtZVBsYXlTbG90EhIKClBsYXllcl9VSUQY", + "ASABKAMSFwoPUGxheWVyX05pY2tOYW1lGAIgASgJEi4KCmRldmljZVR5cGUY", + "AyABKA4yGi5BeGlidWdQcm90b2J1Zi5EZXZpY2VUeXBlEhkKEVBsYXllckxv", + "Y2FsSm95SWR4GAQgASgFEjsKFlBsYXllckxvY2FsR2FtZVBhZFR5cGUYBSAB", + "KA4yGy5BeGlidWdQcm90b2J1Zi5HYW1lUGFkVHlwZSJtChlQcm90b2J1Zl9S", + "b29tX1VwZGF0ZV9SRVNQEhIKClVwZGF0ZVR5cGUYASABKAUSPAoMUm9vbU1p", + "bmlJbmZvGAIgASgLMiYuQXhpYnVnUHJvdG9idWYuUHJvdG9idWZfUm9vbV9N", + "aW5pSW5mbyJLChVQcm90b2J1Zl9TY3Jlbm5fRnJhbWUSDgoGUm9vbUlEGAEg", + "ASgFEg8KB0ZyYW1lSUQYAiABKAUSEQoJUmF3Qml0bWFwGAMgASgMIkkKI1By", + "b3RvYnVmX1Jvb21fU2luZ2xlUGxheWVySW5wdXREYXRhEg8KB0ZyYW1lSUQY", + "ASABKA0SEQoJSW5wdXREYXRhGAIgASgNIoABCidQcm90b2J1Zl9Sb29tX1N5", + "bl9Sb29tRnJhbWVBbGxJbnB1dERhdGESDwoHRnJhbWVJRBgBIAEoDRIRCglJ", + "bnB1dERhdGEYAiABKAQSFQoNU2VydmVyRnJhbWVJRBgDIAEoDRIaChJTZXJ2", + "ZXJGb3J3YXJkQ291bnQYBCABKA0iPgoUUHJvdG9idWZfUm9vbV9DcmVhdGUS", + "EQoJR2FtZVJvbUlEGAEgASgFEhMKC0dhbWVSb21IYXNoGAIgASgJIlkKGVBy", + "b3RvYnVmX1Jvb21fQ3JlYXRlX1JFU1ASPAoMUm9vbU1pbmlJbmZvGAEgASgL", + "MiYuQXhpYnVnUHJvdG9idWYuUHJvdG9idWZfUm9vbV9NaW5pSW5mbyIkChJQ", + "cm90b2J1Zl9Sb29tX0pvaW4SDgoGUm9vbUlEGAEgASgFIlcKF1Byb3RvYnVm", + "X1Jvb21fSm9pbl9SRVNQEjwKDFJvb21NaW5pSW5mbxgBIAEoCzImLkF4aWJ1", + "Z1Byb3RvYnVmLlByb3RvYnVmX1Jvb21fTWluaUluZm8iJQoTUHJvdG9idWZf", + "Um9vbV9MZWF2ZRIOCgZSb29tSUQYASABKAUiKgoYUHJvdG9idWZfUm9vbV9M", + "ZWF2ZV9SRVNQEg4KBlJvb21JRBgBIAEoBSJhCiFQcm90b2J1Zl9Sb29tX015", + "Um9vbV9TdGF0ZV9DaGFuZ2USPAoMUm9vbU1pbmlJbmZvGAEgASgLMiYuQXhp", + "YnVnUHJvdG9idWYuUHJvdG9idWZfUm9vbV9NaW5pSW5mbyJrCiRQcm90b2J1", + "Zl9Sb29tX0NoYW5nZV9QbGF5U2xvdFdpdGhKb3kSQwoLU2xvdFdpdGhKb3kY", + "ASADKAsyLi5BeGlidWdQcm90b2J1Zi5Qcm90b2J1Zl9QbGF5U2xvdElkeFdp", + "dGhKb3lJZHgijwEKHlByb3RvYnVmX1BsYXlTbG90SWR4V2l0aEpveUlkeBIV", + "Cg1QbGF5ZXJTbG90SWR4GAEgASgFEhkKEVBsYXllckxvY2FsSm95SWR4GAIg", + "ASgFEjsKFlBsYXllckxvY2FsR2FtZVBhZFR5cGUYAyABKA4yGy5BeGlidWdQ", + "cm90b2J1Zi5HYW1lUGFkVHlwZSIrCilQcm90b2J1Zl9Sb29tX0NoYW5nZV9Q", + "bGF5U2xvdFdpdGhKb3lfUkVTUCJFChtQcm90b2J1Zl9Sb29tX1dhaXRTdGVw", + "X1JFU1ASEAoIV2FpdFN0ZXAYASABKAUSFAoMTG9hZFN0YXRlUmF3GAIgASgM", + "Ij8KJ1Byb3RvYnVmX1Jvb21fSG9zdFBsYXllcl9VcGRhdGVTdGF0ZVJhdxIU", + "CgxMb2FkU3RhdGVSYXcYASABKAwiLgosUHJvdG9idWZfUm9vbV9Ib3N0UGxh", + "eWVyX1VwZGF0ZVN0YXRlUmF3X1JFU1AimgEKGlByb3RvYnVmX1Jvb21fUGxh", + "eWVyX1JlYWR5EhsKE1B1c2hGcmFtZU5lZWRUaW1lVXMYASABKAISGwoTTG9h", + "ZFN0YXRlTmVlZFRpbWVVcxgCIAEoAhIgChhWaWRlb0ZyYW1lU2hvd05lZWRU", + "aW1lVXMYAyABKAISIAoYQXVkaW9GcmFtZVBsYXlOZWVkVGltZVVzGAQgASgC", + "IioKGFByb3RvYnVmX1Jvb21fR2V0X1NjcmVlbhIOCgZSb29tSUQYASABKAUi", + "UwodUHJvdG9idWZfUm9vbV9HZXRfU2NyZWVuX1JFU1ASDgoGUm9vbUlEGAEg", + "ASgFEg8KB0ZyYW1lSUQYAiABKAUSEQoJUmF3Qml0bWFwGAMgASgMIjMKElBy", + "b3RvYnVmX0dhbWVfTWFyaxINCgVSb21JRBgBIAEoBRIOCgZtb3Rpb24YAiAB", + "KAUiRwoXUHJvdG9idWZfR2FtZV9NYXJrX1JFU1ASDQoFUm9tSUQYASABKAUS", + "DgoGSXNTdGFyGAIgASgFEg0KBXN0YXJzGAMgASgFKqEFCglDb21tYW5kSUQS", + "DgoKQ01EX0RFRkFVTBAAEgwKCENNRF9QSU5HEAESDAoIQ01EX1BPTkcQAhIO", + "CglDTURfTE9HSU4Q0Q8SGAoTQ01EX1VTRVJfT05MSU5FTElTVBC4FxISCg1D", + "TURfVVNFUl9KT0lOENcXEhMKDkNNRF9VU0VSX0xFQVZFENgXEhoKFUNNRF9V", + "U0VSX1NUQVRFX1VQREFURRDZFxIYChNDTURfTW9kaWZ5X05pY2tOYW1lEJ0Y", + "EhwKF0NNRF9VcGRhdGVfU2VsZlVzZXJJbmZvEKYYEh0KGENNRF9VcGRhdGVf", + "T3RoZXJVc2VySW5mbxCoGBIQCgtDTURfQ0hBVE1TRxChHxISCg1DTURfUm9v", + "bV9MaXN0EIknEhkKFENNRF9Sb29tX0xpc3RfVXBkYXRlEIonEhgKE0NNRF9S", + "b29tX0dldF9TY3JlZW4QkycSFAoPQ01EX1Jvb21fQ3JlYXRlEO0nEhIKDUNN", + "RF9Sb29tX0pvaW4Q8ScSEwoOQ01EX1Jvb21fTGVhdmUQ8icSIgodQ01EX1Jv", + "b21fTXlSb29tX1N0YXRlX0NoYW5nZWQQ9icSIQocQ01EX1Jvb21fQ2hhbmdl", + "UGxheWVyV2l0aEpveRCKKBIWChFDTURfUm9vbV9XYWl0U3RlcBDRKBInCiJD", + "TURfUm9vbV9Ib3N0UGxheWVyX1VwZGF0ZVN0YXRlUmF3ENQoEhoKFUNNRF9S", + "b29tX1BsYXllcl9SZWFkeRDYKBIgChtDTURfUm9vbV9TaW5nZWxfUGxheWVy", + "SW5wdXQQ+i4SHQoYQ01EX1JPT01fU1lOX1BsYXllcklucHV0EP8uEg8KCkNN", + "RF9TY3JlZW4Q2TYSEgoNQ01EX0dBTUVfTUFSSxD1TirQAQoJRXJyb3JDb2Rl", + "EhAKDEVSUk9SX0RFRkFVTBAAEgwKCEVSUk9SX09LEAESGAoURVJST1JfUk9P", + "TV9OT1RfRk9VTkQQChInCiNFUlJPUl9ST09NX1NMT1RfQUxSRUFETFlfSEFE", + "X1BMQVlFUhALEiEKHUVSUk9SX1JPT01fQ0FOVF9ET19DVVJSX1NUQVRFEDIS", + "HwoaRVJST1JfUk9NX0FMUkVBRFlfSEFEX1NUQVIQkwMSHAoXRVJST1JfUk9N", + "X0RPTlRfSEFEX1NUQVIQlAMqQAoJTG9naW5UeXBlEg0KCVVzZURldmljZRAA", + "Eg4KClVzZUFjY291bnQQARIUChBVc2VIYW9ZdWVBY2NvdW50EAIqpQEKCkRl", + "dmljZVR5cGUSFgoSRGV2aWNlVHlwZV9EZWZhdWx0EAASBgoCUEMQARILCgdB", + "bmRyb2lkEAISBwoDSU9TEAMSBwoDUFNWEAQSBwoDUFMzEAUSBwoDUFM0EAYS", + "CwoHWEJPWDM2MBAHEgsKB1hCT1hPTkUQCBIICgRXaWlVEAkSDwoLTmludGVu", + "ZG8zRFMQChIRCg1BbmRyb2lkQ2FyQXBwEAsqkwIKC0dhbWVQYWRUeXBlEgwK", + "CEtleWJvYXJkEAASEQoNR2xvYmFsR2FtZVBhZBABEg4KClRvdWNoUGFuZWwQ", + "AhIOCgpEUzNDb250cm9sEAMSDgoKRFM0Q29udHJvbBAEEg4KCkRTNUNvbnRy", + "b2wQBRIUChBTd2l0Y2hQcm9Db250cm9sEAYSEAoMU3dpdGNoSm95Q29uEAcS", + "EgoOWEJPWDM2MENvbnRyb2wQCBISCg5YQk9YT05FQ29udHJvbBAJEhEKDVBT", + "Vml0YUNvbnRyb2wQChISCg5XaWlVUGFkQ29udHJvbBALEhQKEFdpaVJlbW90", + "ZUNvbnRyb2wQDBIWChJOaW50ZW5kbzNEU0NvbnRyb2wQDSqiAQoPUm9tUGxh", + "dGZvcm1UeXBlEgsKB0ludmFsaWQQABIHCgNOZXMQARIRCg1NYXN0ZXJfU3lz", + "dGVtEAISDQoJR2FtZV9HZWFyEAMSDAoIR2FtZV9Cb3kQBBISCg5HYW1lX0Jv", + "eV9Db2xvchAFEhEKDUNvbGVjb19WaXNpb24QBhILCgdTQ18zMDAwEAcSCwoH", + "U0dfMTAwMBAIEggKA0FsbBDnBypwCg1Sb29tR2FtZVN0YXRlEhIKDk5vbmVf", + "R2FtZVN0YXRlEAASDAoIT25seUhvc3QQARIRCg1XYWl0UmF3VXBkYXRlEAIS", + "DQoJV2FpdFJlYWR5EAMSCQoFUGF1c2UQBBIQCgxJbk9ubGluZUdhbWUQBSpO", + "ChFMb2dpblJlc3VsdFN0YXR1cxIhCh1Mb2dpblJlc3VsdFN0YXR1c19CYXNl", + "RGVmYXVsdBAAEgYKAk9LEAESDgoKQWNjb3VudEVychACQgJIAWIGcHJvdG8z")); descriptor = pbr::FileDescriptor.FromGeneratedCode(descriptorData, new pbr::FileDescriptor[] { }, new pbr::GeneratedClrTypeInfo(new[] {typeof(global::AxibugProtobuf.CommandID), typeof(global::AxibugProtobuf.ErrorCode), typeof(global::AxibugProtobuf.LoginType), typeof(global::AxibugProtobuf.DeviceType), typeof(global::AxibugProtobuf.GamePadType), typeof(global::AxibugProtobuf.RomPlatformType), typeof(global::AxibugProtobuf.RoomGameState), typeof(global::AxibugProtobuf.LoginResultStatus), }, null, new pbr::GeneratedClrTypeInfo[] { @@ -152,6 +154,7 @@ namespace AxibugProtobuf { new pbr::GeneratedClrTypeInfo(typeof(global::AxibugProtobuf.Protobuf_Pong), global::AxibugProtobuf.Protobuf_Pong.Parser, new[]{ "Seed" }, null, null, null, null), new pbr::GeneratedClrTypeInfo(typeof(global::AxibugProtobuf.Protobuf_Login), global::AxibugProtobuf.Protobuf_Login.Parser, new[]{ "LoginType", "DeviceType", "DeviceStr", "Account", "Password" }, null, null, null, null), new pbr::GeneratedClrTypeInfo(typeof(global::AxibugProtobuf.Protobuf_Login_RESP), global::AxibugProtobuf.Protobuf_Login_RESP.Parser, new[]{ "NickName", "Token", "LastLoginDate", "RegDate", "Status", "UID" }, null, null, null, null), + new pbr::GeneratedClrTypeInfo(typeof(global::AxibugProtobuf.Protobuf_Token_Struct), global::AxibugProtobuf.Protobuf_Token_Struct.Parser, new[]{ "UID", "TokenGenDate", "Seed" }, null, null, null, null), new pbr::GeneratedClrTypeInfo(typeof(global::AxibugProtobuf.Protobuf_UserList), global::AxibugProtobuf.Protobuf_UserList.Parser, null, null, null, null, null), new pbr::GeneratedClrTypeInfo(typeof(global::AxibugProtobuf.Protobuf_UserList_RESP), global::AxibugProtobuf.Protobuf_UserList_RESP.Parser, new[]{ "UserCount", "UserList" }, null, null, null, null), new pbr::GeneratedClrTypeInfo(typeof(global::AxibugProtobuf.Protobuf_UserJoin_RESP), global::AxibugProtobuf.Protobuf_UserJoin_RESP.Parser, new[]{ "UserInfo" }, null, null, null, null), @@ -186,8 +189,8 @@ namespace AxibugProtobuf { new pbr::GeneratedClrTypeInfo(typeof(global::AxibugProtobuf.Protobuf_Room_Player_Ready), global::AxibugProtobuf.Protobuf_Room_Player_Ready.Parser, new[]{ "PushFrameNeedTimeUs", "LoadStateNeedTimeUs", "VideoFrameShowNeedTimeUs", "AudioFramePlayNeedTimeUs" }, null, null, null, null), new pbr::GeneratedClrTypeInfo(typeof(global::AxibugProtobuf.Protobuf_Room_Get_Screen), global::AxibugProtobuf.Protobuf_Room_Get_Screen.Parser, new[]{ "RoomID" }, null, null, null, null), new pbr::GeneratedClrTypeInfo(typeof(global::AxibugProtobuf.Protobuf_Room_Get_Screen_RESP), global::AxibugProtobuf.Protobuf_Room_Get_Screen_RESP.Parser, new[]{ "RoomID", "FrameID", "RawBitmap" }, null, null, null, null), - new pbr::GeneratedClrTypeInfo(typeof(global::AxibugProtobuf.Protobuf_Game_Mark), global::AxibugProtobuf.Protobuf_Game_Mark.Parser, new[]{ "RomID", "State" }, null, null, null, null), - new pbr::GeneratedClrTypeInfo(typeof(global::AxibugProtobuf.Protobuf_Game_Mark_RESP), global::AxibugProtobuf.Protobuf_Game_Mark_RESP.Parser, new[]{ "RomID" }, null, null, null, null) + new pbr::GeneratedClrTypeInfo(typeof(global::AxibugProtobuf.Protobuf_Game_Mark), global::AxibugProtobuf.Protobuf_Game_Mark.Parser, new[]{ "RomID", "Motion" }, null, null, null, null), + new pbr::GeneratedClrTypeInfo(typeof(global::AxibugProtobuf.Protobuf_Game_Mark_RESP), global::AxibugProtobuf.Protobuf_Game_Mark_RESP.Parser, new[]{ "RomID", "IsStar", "Stars" }, null, null, null, null) })); } #endregion @@ -1956,6 +1959,253 @@ namespace AxibugProtobuf { } + /// + ///Token结构,但用于逻辑里配置加密密钥,放置于服务端加密后,发放token + /// + public sealed partial class Protobuf_Token_Struct : pb::IMessage + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + , pb::IBufferMessage + #endif + { + private static readonly pb::MessageParser _parser = new pb::MessageParser(() => new Protobuf_Token_Struct()); + private pb::UnknownFieldSet _unknownFields; + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public static pb::MessageParser Parser { get { return _parser; } } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public static pbr::MessageDescriptor Descriptor { + get { return global::AxibugProtobuf.ProtobufAxibugEmuOnlineReflection.Descriptor.MessageTypes[6]; } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + pbr::MessageDescriptor pb::IMessage.Descriptor { + get { return Descriptor; } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public Protobuf_Token_Struct() { + OnConstruction(); + } + + partial void OnConstruction(); + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public Protobuf_Token_Struct(Protobuf_Token_Struct other) : this() { + uID_ = other.uID_; + tokenGenDate_ = other.tokenGenDate_; + seed_ = other.seed_; + _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public Protobuf_Token_Struct Clone() { + return new Protobuf_Token_Struct(this); + } + + /// Field number for the "UID" field. + public const int UIDFieldNumber = 1; + private long uID_; + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public long UID { + get { return uID_; } + set { + uID_ = value; + } + } + + /// Field number for the "TokenGenDate" field. + public const int TokenGenDateFieldNumber = 2; + private long tokenGenDate_; + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public long TokenGenDate { + get { return tokenGenDate_; } + set { + tokenGenDate_ = value; + } + } + + /// Field number for the "Seed" field. + public const int SeedFieldNumber = 3; + private long seed_; + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public long Seed { + get { return seed_; } + set { + seed_ = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public override bool Equals(object other) { + return Equals(other as Protobuf_Token_Struct); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public bool Equals(Protobuf_Token_Struct other) { + if (ReferenceEquals(other, null)) { + return false; + } + if (ReferenceEquals(other, this)) { + return true; + } + if (UID != other.UID) return false; + if (TokenGenDate != other.TokenGenDate) return false; + if (Seed != other.Seed) return false; + return Equals(_unknownFields, other._unknownFields); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public override int GetHashCode() { + int hash = 1; + if (UID != 0L) hash ^= UID.GetHashCode(); + if (TokenGenDate != 0L) hash ^= TokenGenDate.GetHashCode(); + if (Seed != 0L) hash ^= Seed.GetHashCode(); + if (_unknownFields != null) { + hash ^= _unknownFields.GetHashCode(); + } + return hash; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public override string ToString() { + return pb::JsonFormatter.ToDiagnosticString(this); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public void WriteTo(pb::CodedOutputStream output) { + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + output.WriteRawMessage(this); + #else + if (UID != 0L) { + output.WriteRawTag(8); + output.WriteInt64(UID); + } + if (TokenGenDate != 0L) { + output.WriteRawTag(16); + output.WriteInt64(TokenGenDate); + } + if (Seed != 0L) { + output.WriteRawTag(24); + output.WriteInt64(Seed); + } + if (_unknownFields != null) { + _unknownFields.WriteTo(output); + } + #endif + } + + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + void pb::IBufferMessage.InternalWriteTo(ref pb::WriteContext output) { + if (UID != 0L) { + output.WriteRawTag(8); + output.WriteInt64(UID); + } + if (TokenGenDate != 0L) { + output.WriteRawTag(16); + output.WriteInt64(TokenGenDate); + } + if (Seed != 0L) { + output.WriteRawTag(24); + output.WriteInt64(Seed); + } + if (_unknownFields != null) { + _unknownFields.WriteTo(ref output); + } + } + #endif + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public int CalculateSize() { + int size = 0; + if (UID != 0L) { + size += 1 + pb::CodedOutputStream.ComputeInt64Size(UID); + } + if (TokenGenDate != 0L) { + size += 1 + pb::CodedOutputStream.ComputeInt64Size(TokenGenDate); + } + if (Seed != 0L) { + size += 1 + pb::CodedOutputStream.ComputeInt64Size(Seed); + } + if (_unknownFields != null) { + size += _unknownFields.CalculateSize(); + } + return size; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public void MergeFrom(Protobuf_Token_Struct other) { + if (other == null) { + return; + } + if (other.UID != 0L) { + UID = other.UID; + } + if (other.TokenGenDate != 0L) { + TokenGenDate = other.TokenGenDate; + } + if (other.Seed != 0L) { + Seed = other.Seed; + } + _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public void MergeFrom(pb::CodedInputStream input) { + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + input.ReadRawMessage(this); + #else + uint tag; + while ((tag = input.ReadTag()) != 0) { + switch(tag) { + default: + _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input); + break; + case 8: { + UID = input.ReadInt64(); + break; + } + case 16: { + TokenGenDate = input.ReadInt64(); + break; + } + case 24: { + Seed = input.ReadInt64(); + break; + } + } + } + #endif + } + + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + void pb::IBufferMessage.InternalMergeFrom(ref pb::ParseContext input) { + uint tag; + while ((tag = input.ReadTag()) != 0) { + switch(tag) { + default: + _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input); + break; + case 8: { + UID = input.ReadInt64(); + break; + } + case 16: { + TokenGenDate = input.ReadInt64(); + break; + } + case 24: { + Seed = input.ReadInt64(); + break; + } + } + } + } + #endif + + } + /// ///获取在线用户列表 上行 /// @@ -1971,7 +2221,7 @@ namespace AxibugProtobuf { [global::System.Diagnostics.DebuggerNonUserCodeAttribute] public static pbr::MessageDescriptor Descriptor { - get { return global::AxibugProtobuf.ProtobufAxibugEmuOnlineReflection.Descriptor.MessageTypes[6]; } + get { return global::AxibugProtobuf.ProtobufAxibugEmuOnlineReflection.Descriptor.MessageTypes[7]; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] @@ -2110,7 +2360,7 @@ namespace AxibugProtobuf { [global::System.Diagnostics.DebuggerNonUserCodeAttribute] public static pbr::MessageDescriptor Descriptor { - get { return global::AxibugProtobuf.ProtobufAxibugEmuOnlineReflection.Descriptor.MessageTypes[7]; } + get { return global::AxibugProtobuf.ProtobufAxibugEmuOnlineReflection.Descriptor.MessageTypes[8]; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] @@ -2316,7 +2566,7 @@ namespace AxibugProtobuf { [global::System.Diagnostics.DebuggerNonUserCodeAttribute] public static pbr::MessageDescriptor Descriptor { - get { return global::AxibugProtobuf.ProtobufAxibugEmuOnlineReflection.Descriptor.MessageTypes[8]; } + get { return global::AxibugProtobuf.ProtobufAxibugEmuOnlineReflection.Descriptor.MessageTypes[9]; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] @@ -2503,7 +2753,7 @@ namespace AxibugProtobuf { [global::System.Diagnostics.DebuggerNonUserCodeAttribute] public static pbr::MessageDescriptor Descriptor { - get { return global::AxibugProtobuf.ProtobufAxibugEmuOnlineReflection.Descriptor.MessageTypes[9]; } + get { return global::AxibugProtobuf.ProtobufAxibugEmuOnlineReflection.Descriptor.MessageTypes[10]; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] @@ -2681,7 +2931,7 @@ namespace AxibugProtobuf { [global::System.Diagnostics.DebuggerNonUserCodeAttribute] public static pbr::MessageDescriptor Descriptor { - get { return global::AxibugProtobuf.ProtobufAxibugEmuOnlineReflection.Descriptor.MessageTypes[10]; } + get { return global::AxibugProtobuf.ProtobufAxibugEmuOnlineReflection.Descriptor.MessageTypes[11]; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] @@ -2895,7 +3145,7 @@ namespace AxibugProtobuf { [global::System.Diagnostics.DebuggerNonUserCodeAttribute] public static pbr::MessageDescriptor Descriptor { - get { return global::AxibugProtobuf.ProtobufAxibugEmuOnlineReflection.Descriptor.MessageTypes[11]; } + get { return global::AxibugProtobuf.ProtobufAxibugEmuOnlineReflection.Descriptor.MessageTypes[12]; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] @@ -3151,7 +3401,7 @@ namespace AxibugProtobuf { [global::System.Diagnostics.DebuggerNonUserCodeAttribute] public static pbr::MessageDescriptor Descriptor { - get { return global::AxibugProtobuf.ProtobufAxibugEmuOnlineReflection.Descriptor.MessageTypes[12]; } + get { return global::AxibugProtobuf.ProtobufAxibugEmuOnlineReflection.Descriptor.MessageTypes[13]; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] @@ -3329,7 +3579,7 @@ namespace AxibugProtobuf { [global::System.Diagnostics.DebuggerNonUserCodeAttribute] public static pbr::MessageDescriptor Descriptor { - get { return global::AxibugProtobuf.ProtobufAxibugEmuOnlineReflection.Descriptor.MessageTypes[13]; } + get { return global::AxibugProtobuf.ProtobufAxibugEmuOnlineReflection.Descriptor.MessageTypes[14]; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] @@ -3468,7 +3718,7 @@ namespace AxibugProtobuf { [global::System.Diagnostics.DebuggerNonUserCodeAttribute] public static pbr::MessageDescriptor Descriptor { - get { return global::AxibugProtobuf.ProtobufAxibugEmuOnlineReflection.Descriptor.MessageTypes[14]; } + get { return global::AxibugProtobuf.ProtobufAxibugEmuOnlineReflection.Descriptor.MessageTypes[15]; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] @@ -3655,7 +3905,7 @@ namespace AxibugProtobuf { [global::System.Diagnostics.DebuggerNonUserCodeAttribute] public static pbr::MessageDescriptor Descriptor { - get { return global::AxibugProtobuf.ProtobufAxibugEmuOnlineReflection.Descriptor.MessageTypes[15]; } + get { return global::AxibugProtobuf.ProtobufAxibugEmuOnlineReflection.Descriptor.MessageTypes[16]; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] @@ -3878,7 +4128,7 @@ namespace AxibugProtobuf { [global::System.Diagnostics.DebuggerNonUserCodeAttribute] public static pbr::MessageDescriptor Descriptor { - get { return global::AxibugProtobuf.ProtobufAxibugEmuOnlineReflection.Descriptor.MessageTypes[16]; } + get { return global::AxibugProtobuf.ProtobufAxibugEmuOnlineReflection.Descriptor.MessageTypes[17]; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] @@ -4014,7 +4264,7 @@ namespace AxibugProtobuf { [global::System.Diagnostics.DebuggerNonUserCodeAttribute] public static pbr::MessageDescriptor Descriptor { - get { return global::AxibugProtobuf.ProtobufAxibugEmuOnlineReflection.Descriptor.MessageTypes[17]; } + get { return global::AxibugProtobuf.ProtobufAxibugEmuOnlineReflection.Descriptor.MessageTypes[18]; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] @@ -4178,7 +4428,7 @@ namespace AxibugProtobuf { [global::System.Diagnostics.DebuggerNonUserCodeAttribute] public static pbr::MessageDescriptor Descriptor { - get { return global::AxibugProtobuf.ProtobufAxibugEmuOnlineReflection.Descriptor.MessageTypes[18]; } + get { return global::AxibugProtobuf.ProtobufAxibugEmuOnlineReflection.Descriptor.MessageTypes[19]; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] @@ -4648,7 +4898,7 @@ namespace AxibugProtobuf { [global::System.Diagnostics.DebuggerNonUserCodeAttribute] public static pbr::MessageDescriptor Descriptor { - get { return global::AxibugProtobuf.ProtobufAxibugEmuOnlineReflection.Descriptor.MessageTypes[19]; } + get { return global::AxibugProtobuf.ProtobufAxibugEmuOnlineReflection.Descriptor.MessageTypes[20]; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] @@ -4979,7 +5229,7 @@ namespace AxibugProtobuf { [global::System.Diagnostics.DebuggerNonUserCodeAttribute] public static pbr::MessageDescriptor Descriptor { - get { return global::AxibugProtobuf.ProtobufAxibugEmuOnlineReflection.Descriptor.MessageTypes[20]; } + get { return global::AxibugProtobuf.ProtobufAxibugEmuOnlineReflection.Descriptor.MessageTypes[21]; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] @@ -5202,7 +5452,7 @@ namespace AxibugProtobuf { [global::System.Diagnostics.DebuggerNonUserCodeAttribute] public static pbr::MessageDescriptor Descriptor { - get { return global::AxibugProtobuf.ProtobufAxibugEmuOnlineReflection.Descriptor.MessageTypes[21]; } + get { return global::AxibugProtobuf.ProtobufAxibugEmuOnlineReflection.Descriptor.MessageTypes[22]; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] @@ -5455,7 +5705,7 @@ namespace AxibugProtobuf { [global::System.Diagnostics.DebuggerNonUserCodeAttribute] public static pbr::MessageDescriptor Descriptor { - get { return global::AxibugProtobuf.ProtobufAxibugEmuOnlineReflection.Descriptor.MessageTypes[22]; } + get { return global::AxibugProtobuf.ProtobufAxibugEmuOnlineReflection.Descriptor.MessageTypes[23]; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] @@ -5669,7 +5919,7 @@ namespace AxibugProtobuf { [global::System.Diagnostics.DebuggerNonUserCodeAttribute] public static pbr::MessageDescriptor Descriptor { - get { return global::AxibugProtobuf.ProtobufAxibugEmuOnlineReflection.Descriptor.MessageTypes[23]; } + get { return global::AxibugProtobuf.ProtobufAxibugEmuOnlineReflection.Descriptor.MessageTypes[24]; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] @@ -5961,7 +6211,7 @@ namespace AxibugProtobuf { [global::System.Diagnostics.DebuggerNonUserCodeAttribute] public static pbr::MessageDescriptor Descriptor { - get { return global::AxibugProtobuf.ProtobufAxibugEmuOnlineReflection.Descriptor.MessageTypes[24]; } + get { return global::AxibugProtobuf.ProtobufAxibugEmuOnlineReflection.Descriptor.MessageTypes[25]; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] @@ -6169,7 +6419,7 @@ namespace AxibugProtobuf { [global::System.Diagnostics.DebuggerNonUserCodeAttribute] public static pbr::MessageDescriptor Descriptor { - get { return global::AxibugProtobuf.ProtobufAxibugEmuOnlineReflection.Descriptor.MessageTypes[25]; } + get { return global::AxibugProtobuf.ProtobufAxibugEmuOnlineReflection.Descriptor.MessageTypes[26]; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] @@ -6353,7 +6603,7 @@ namespace AxibugProtobuf { [global::System.Diagnostics.DebuggerNonUserCodeAttribute] public static pbr::MessageDescriptor Descriptor { - get { return global::AxibugProtobuf.ProtobufAxibugEmuOnlineReflection.Descriptor.MessageTypes[26]; } + get { return global::AxibugProtobuf.ProtobufAxibugEmuOnlineReflection.Descriptor.MessageTypes[27]; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] @@ -6528,7 +6778,7 @@ namespace AxibugProtobuf { [global::System.Diagnostics.DebuggerNonUserCodeAttribute] public static pbr::MessageDescriptor Descriptor { - get { return global::AxibugProtobuf.ProtobufAxibugEmuOnlineReflection.Descriptor.MessageTypes[27]; } + get { return global::AxibugProtobuf.ProtobufAxibugEmuOnlineReflection.Descriptor.MessageTypes[28]; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] @@ -6712,7 +6962,7 @@ namespace AxibugProtobuf { [global::System.Diagnostics.DebuggerNonUserCodeAttribute] public static pbr::MessageDescriptor Descriptor { - get { return global::AxibugProtobuf.ProtobufAxibugEmuOnlineReflection.Descriptor.MessageTypes[28]; } + get { return global::AxibugProtobuf.ProtobufAxibugEmuOnlineReflection.Descriptor.MessageTypes[29]; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] @@ -6887,7 +7137,7 @@ namespace AxibugProtobuf { [global::System.Diagnostics.DebuggerNonUserCodeAttribute] public static pbr::MessageDescriptor Descriptor { - get { return global::AxibugProtobuf.ProtobufAxibugEmuOnlineReflection.Descriptor.MessageTypes[29]; } + get { return global::AxibugProtobuf.ProtobufAxibugEmuOnlineReflection.Descriptor.MessageTypes[30]; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] @@ -7062,7 +7312,7 @@ namespace AxibugProtobuf { [global::System.Diagnostics.DebuggerNonUserCodeAttribute] public static pbr::MessageDescriptor Descriptor { - get { return global::AxibugProtobuf.ProtobufAxibugEmuOnlineReflection.Descriptor.MessageTypes[30]; } + get { return global::AxibugProtobuf.ProtobufAxibugEmuOnlineReflection.Descriptor.MessageTypes[31]; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] @@ -7246,7 +7496,7 @@ namespace AxibugProtobuf { [global::System.Diagnostics.DebuggerNonUserCodeAttribute] public static pbr::MessageDescriptor Descriptor { - get { return global::AxibugProtobuf.ProtobufAxibugEmuOnlineReflection.Descriptor.MessageTypes[31]; } + get { return global::AxibugProtobuf.ProtobufAxibugEmuOnlineReflection.Descriptor.MessageTypes[32]; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] @@ -7410,7 +7660,7 @@ namespace AxibugProtobuf { [global::System.Diagnostics.DebuggerNonUserCodeAttribute] public static pbr::MessageDescriptor Descriptor { - get { return global::AxibugProtobuf.ProtobufAxibugEmuOnlineReflection.Descriptor.MessageTypes[32]; } + get { return global::AxibugProtobuf.ProtobufAxibugEmuOnlineReflection.Descriptor.MessageTypes[33]; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] @@ -7663,7 +7913,7 @@ namespace AxibugProtobuf { [global::System.Diagnostics.DebuggerNonUserCodeAttribute] public static pbr::MessageDescriptor Descriptor { - get { return global::AxibugProtobuf.ProtobufAxibugEmuOnlineReflection.Descriptor.MessageTypes[33]; } + get { return global::AxibugProtobuf.ProtobufAxibugEmuOnlineReflection.Descriptor.MessageTypes[34]; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] @@ -7799,7 +8049,7 @@ namespace AxibugProtobuf { [global::System.Diagnostics.DebuggerNonUserCodeAttribute] public static pbr::MessageDescriptor Descriptor { - get { return global::AxibugProtobuf.ProtobufAxibugEmuOnlineReflection.Descriptor.MessageTypes[34]; } + get { return global::AxibugProtobuf.ProtobufAxibugEmuOnlineReflection.Descriptor.MessageTypes[35]; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] @@ -8013,7 +8263,7 @@ namespace AxibugProtobuf { [global::System.Diagnostics.DebuggerNonUserCodeAttribute] public static pbr::MessageDescriptor Descriptor { - get { return global::AxibugProtobuf.ProtobufAxibugEmuOnlineReflection.Descriptor.MessageTypes[35]; } + get { return global::AxibugProtobuf.ProtobufAxibugEmuOnlineReflection.Descriptor.MessageTypes[36]; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] @@ -8188,7 +8438,7 @@ namespace AxibugProtobuf { [global::System.Diagnostics.DebuggerNonUserCodeAttribute] public static pbr::MessageDescriptor Descriptor { - get { return global::AxibugProtobuf.ProtobufAxibugEmuOnlineReflection.Descriptor.MessageTypes[36]; } + get { return global::AxibugProtobuf.ProtobufAxibugEmuOnlineReflection.Descriptor.MessageTypes[37]; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] @@ -8324,7 +8574,7 @@ namespace AxibugProtobuf { [global::System.Diagnostics.DebuggerNonUserCodeAttribute] public static pbr::MessageDescriptor Descriptor { - get { return global::AxibugProtobuf.ProtobufAxibugEmuOnlineReflection.Descriptor.MessageTypes[37]; } + get { return global::AxibugProtobuf.ProtobufAxibugEmuOnlineReflection.Descriptor.MessageTypes[38]; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] @@ -8616,7 +8866,7 @@ namespace AxibugProtobuf { [global::System.Diagnostics.DebuggerNonUserCodeAttribute] public static pbr::MessageDescriptor Descriptor { - get { return global::AxibugProtobuf.ProtobufAxibugEmuOnlineReflection.Descriptor.MessageTypes[38]; } + get { return global::AxibugProtobuf.ProtobufAxibugEmuOnlineReflection.Descriptor.MessageTypes[39]; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] @@ -8791,7 +9041,7 @@ namespace AxibugProtobuf { [global::System.Diagnostics.DebuggerNonUserCodeAttribute] public static pbr::MessageDescriptor Descriptor { - get { return global::AxibugProtobuf.ProtobufAxibugEmuOnlineReflection.Descriptor.MessageTypes[39]; } + get { return global::AxibugProtobuf.ProtobufAxibugEmuOnlineReflection.Descriptor.MessageTypes[40]; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] @@ -9044,7 +9294,7 @@ namespace AxibugProtobuf { [global::System.Diagnostics.DebuggerNonUserCodeAttribute] public static pbr::MessageDescriptor Descriptor { - get { return global::AxibugProtobuf.ProtobufAxibugEmuOnlineReflection.Descriptor.MessageTypes[40]; } + get { return global::AxibugProtobuf.ProtobufAxibugEmuOnlineReflection.Descriptor.MessageTypes[41]; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] @@ -9062,7 +9312,7 @@ namespace AxibugProtobuf { [global::System.Diagnostics.DebuggerNonUserCodeAttribute] public Protobuf_Game_Mark(Protobuf_Game_Mark other) : this() { romID_ = other.romID_; - state_ = other.state_; + motion_ = other.motion_; _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields); } @@ -9085,17 +9335,17 @@ namespace AxibugProtobuf { } } - /// Field number for the "state" field. - public const int StateFieldNumber = 2; - private int state_; + /// Field number for the "motion" field. + public const int MotionFieldNumber = 2; + private int motion_; /// - ///[0]收藏 [1]取消收藏 + ///[0]取消收藏[1]收藏 /// [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public int State { - get { return state_; } + public int Motion { + get { return motion_; } set { - state_ = value; + motion_ = value; } } @@ -9113,7 +9363,7 @@ namespace AxibugProtobuf { return true; } if (RomID != other.RomID) return false; - if (State != other.State) return false; + if (Motion != other.Motion) return false; return Equals(_unknownFields, other._unknownFields); } @@ -9121,7 +9371,7 @@ namespace AxibugProtobuf { public override int GetHashCode() { int hash = 1; if (RomID != 0) hash ^= RomID.GetHashCode(); - if (State != 0) hash ^= State.GetHashCode(); + if (Motion != 0) hash ^= Motion.GetHashCode(); if (_unknownFields != null) { hash ^= _unknownFields.GetHashCode(); } @@ -9142,9 +9392,9 @@ namespace AxibugProtobuf { output.WriteRawTag(8); output.WriteInt32(RomID); } - if (State != 0) { + if (Motion != 0) { output.WriteRawTag(16); - output.WriteInt32(State); + output.WriteInt32(Motion); } if (_unknownFields != null) { _unknownFields.WriteTo(output); @@ -9159,9 +9409,9 @@ namespace AxibugProtobuf { output.WriteRawTag(8); output.WriteInt32(RomID); } - if (State != 0) { + if (Motion != 0) { output.WriteRawTag(16); - output.WriteInt32(State); + output.WriteInt32(Motion); } if (_unknownFields != null) { _unknownFields.WriteTo(ref output); @@ -9175,8 +9425,8 @@ namespace AxibugProtobuf { if (RomID != 0) { size += 1 + pb::CodedOutputStream.ComputeInt32Size(RomID); } - if (State != 0) { - size += 1 + pb::CodedOutputStream.ComputeInt32Size(State); + if (Motion != 0) { + size += 1 + pb::CodedOutputStream.ComputeInt32Size(Motion); } if (_unknownFields != null) { size += _unknownFields.CalculateSize(); @@ -9192,8 +9442,8 @@ namespace AxibugProtobuf { if (other.RomID != 0) { RomID = other.RomID; } - if (other.State != 0) { - State = other.State; + if (other.Motion != 0) { + Motion = other.Motion; } _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields); } @@ -9214,7 +9464,7 @@ namespace AxibugProtobuf { break; } case 16: { - State = input.ReadInt32(); + Motion = input.ReadInt32(); break; } } @@ -9236,7 +9486,7 @@ namespace AxibugProtobuf { break; } case 16: { - State = input.ReadInt32(); + Motion = input.ReadInt32(); break; } } @@ -9258,7 +9508,7 @@ namespace AxibugProtobuf { [global::System.Diagnostics.DebuggerNonUserCodeAttribute] public static pbr::MessageDescriptor Descriptor { - get { return global::AxibugProtobuf.ProtobufAxibugEmuOnlineReflection.Descriptor.MessageTypes[41]; } + get { return global::AxibugProtobuf.ProtobufAxibugEmuOnlineReflection.Descriptor.MessageTypes[42]; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] @@ -9276,6 +9526,8 @@ namespace AxibugProtobuf { [global::System.Diagnostics.DebuggerNonUserCodeAttribute] public Protobuf_Game_Mark_RESP(Protobuf_Game_Mark_RESP other) : this() { romID_ = other.romID_; + isStar_ = other.isStar_; + stars_ = other.stars_; _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields); } @@ -9298,6 +9550,34 @@ namespace AxibugProtobuf { } } + /// Field number for the "IsStar" field. + public const int IsStarFieldNumber = 2; + private int isStar_; + /// + ///当前状态 [0]未收藏[1]已收藏 + /// + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public int IsStar { + get { return isStar_; } + set { + isStar_ = value; + } + } + + /// Field number for the "stars" field. + public const int StarsFieldNumber = 3; + private int stars_; + /// + ///当前收藏计数 + /// + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public int Stars { + get { return stars_; } + set { + stars_ = value; + } + } + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] public override bool Equals(object other) { return Equals(other as Protobuf_Game_Mark_RESP); @@ -9312,6 +9592,8 @@ namespace AxibugProtobuf { return true; } if (RomID != other.RomID) return false; + if (IsStar != other.IsStar) return false; + if (Stars != other.Stars) return false; return Equals(_unknownFields, other._unknownFields); } @@ -9319,6 +9601,8 @@ namespace AxibugProtobuf { public override int GetHashCode() { int hash = 1; if (RomID != 0) hash ^= RomID.GetHashCode(); + if (IsStar != 0) hash ^= IsStar.GetHashCode(); + if (Stars != 0) hash ^= Stars.GetHashCode(); if (_unknownFields != null) { hash ^= _unknownFields.GetHashCode(); } @@ -9339,6 +9623,14 @@ namespace AxibugProtobuf { output.WriteRawTag(8); output.WriteInt32(RomID); } + if (IsStar != 0) { + output.WriteRawTag(16); + output.WriteInt32(IsStar); + } + if (Stars != 0) { + output.WriteRawTag(24); + output.WriteInt32(Stars); + } if (_unknownFields != null) { _unknownFields.WriteTo(output); } @@ -9352,6 +9644,14 @@ namespace AxibugProtobuf { output.WriteRawTag(8); output.WriteInt32(RomID); } + if (IsStar != 0) { + output.WriteRawTag(16); + output.WriteInt32(IsStar); + } + if (Stars != 0) { + output.WriteRawTag(24); + output.WriteInt32(Stars); + } if (_unknownFields != null) { _unknownFields.WriteTo(ref output); } @@ -9364,6 +9664,12 @@ namespace AxibugProtobuf { if (RomID != 0) { size += 1 + pb::CodedOutputStream.ComputeInt32Size(RomID); } + if (IsStar != 0) { + size += 1 + pb::CodedOutputStream.ComputeInt32Size(IsStar); + } + if (Stars != 0) { + size += 1 + pb::CodedOutputStream.ComputeInt32Size(Stars); + } if (_unknownFields != null) { size += _unknownFields.CalculateSize(); } @@ -9378,6 +9684,12 @@ namespace AxibugProtobuf { if (other.RomID != 0) { RomID = other.RomID; } + if (other.IsStar != 0) { + IsStar = other.IsStar; + } + if (other.Stars != 0) { + Stars = other.Stars; + } _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields); } @@ -9396,6 +9708,14 @@ namespace AxibugProtobuf { RomID = input.ReadInt32(); break; } + case 16: { + IsStar = input.ReadInt32(); + break; + } + case 24: { + Stars = input.ReadInt32(); + break; + } } } #endif @@ -9414,6 +9734,14 @@ namespace AxibugProtobuf { RomID = input.ReadInt32(); break; } + case 16: { + IsStar = input.ReadInt32(); + break; + } + case 24: { + Stars = input.ReadInt32(); + break; + } } } } diff --git a/AxibugEmuOnline.Client/Assets/Script/AppMain/UI/GamesUI/RomListMenuItem.cs b/AxibugEmuOnline.Client/Assets/Script/AppMain/UI/GamesUI/RomListMenuItem.cs index 79d49980..91e9e1e2 100644 --- a/AxibugEmuOnline.Client/Assets/Script/AppMain/UI/GamesUI/RomListMenuItem.cs +++ b/AxibugEmuOnline.Client/Assets/Script/AppMain/UI/GamesUI/RomListMenuItem.cs @@ -128,9 +128,9 @@ namespace AxibugEmuOnline.Client { var romItem = m_currentSelect; if (!romItem.IsStar) - App.share.SendGameStar(romItem.RomID, 0); - else App.share.SendGameStar(romItem.RomID, 1); + else + App.share.SendGameStar(romItem.RomID, 0); } } } diff --git a/AxibugEmuOnline.Client/Assets/Script/AppMain/UI/RoomUI/RoomListMenuItem.cs b/AxibugEmuOnline.Client/Assets/Script/AppMain/UI/RoomUI/RoomListMenuItem.cs index a893cb59..a6c728e2 100644 --- a/AxibugEmuOnline.Client/Assets/Script/AppMain/UI/RoomUI/RoomListMenuItem.cs +++ b/AxibugEmuOnline.Client/Assets/Script/AppMain/UI/RoomUI/RoomListMenuItem.cs @@ -1,5 +1,6 @@ using AxibugEmuOnline.Client.ClientCore; using AxibugEmuOnline.Client.Event; +using UnityEngine; namespace AxibugEmuOnline.Client { diff --git a/AxibugEmuOnline.Server/AxibugEmuOnline.Server.csproj b/AxibugEmuOnline.Server/AxibugEmuOnline.Server.csproj index 1eb4b5c5..4af34fdb 100644 --- a/AxibugEmuOnline.Server/AxibugEmuOnline.Server.csproj +++ b/AxibugEmuOnline.Server/AxibugEmuOnline.Server.csproj @@ -8,6 +8,7 @@ + @@ -20,4 +21,10 @@ + + + Never + + + diff --git a/AxibugEmuOnline.Server/Common/AESHelper.cs b/AxibugEmuOnline.Server/Common/AESHelper.cs new file mode 100644 index 00000000..9421b035 --- /dev/null +++ b/AxibugEmuOnline.Server/Common/AESHelper.cs @@ -0,0 +1,147 @@ +using System.Security.Cryptography; +using System.Text; + +namespace AxibugEmuOnline.Server.Common +{ + public static class AESHelper + { + static byte[] currKey; + static byte[] currIV; + + public static void LoadKeyIVCfg(string key, string vi) + { + try + { + currKey = CommaSeparatedStringToByteArray(key); + currIV = CommaSeparatedStringToByteArray(key); + } + catch (Exception ex) + { + Console.WriteLine("aeskeyvi 配置错误"+ex.Message); + } + } + + public static void LoadKeyIVCfg(byte[] key, byte[] vi) + { + currKey = key; + currIV = key; + } + + public static void GenAesKeyIV() + { + Aes aes = Aes.Create(); + aes.KeySize = 128; + aes.Mode = CipherMode.CBC; + aes.Padding = PaddingMode.PKCS7; + aes.GenerateKey(); + aes.GenerateIV(); + + string key = ByteArrayToCommaSeparatedString(aes.Key); + Console.WriteLine("key:"); + Console.WriteLine(key); + string vi = ByteArrayToCommaSeparatedString(aes.IV); + Console.WriteLine("iv:"); + Console.WriteLine(vi); + + byte[] temp = new byte[255]; + for (byte i = 0; i < temp.Length; i++) + temp[i] = i; + byte[] EncodeData = Encrypt(temp, aes.Key, aes.IV); + byte[] DecodeData = Decrypt(EncodeData, aes.Key, aes.IV); + + bool bOk = true; + if (temp.Length != DecodeData.Length) + { + bOk = false; + } + else + { + for (int i = 0; i < temp.Length; i++) + { + if (temp[i] != DecodeData[i]) + { + bOk = false; + break; + } + } + } + + Console.WriteLine($"密钥和填充加解密验证:{bOk}"); + } + + public static string ByteArrayToCommaSeparatedString(byte[] byteArray) + { + if (byteArray == null) + throw new ArgumentNullException(nameof(byteArray)); + + StringBuilder sb = new StringBuilder(); + + for (int i = 0; i < byteArray.Length; i++) + { + sb.Append(byteArray[i]); + + // 不是最后一个元素时,添加逗号 + if (i < byteArray.Length - 1) + { + sb.Append(","); + } + } + + return sb.ToString(); + } + + public static byte[] CommaSeparatedStringToByteArray(string commaSeparatedString) + { + if (string.IsNullOrEmpty(commaSeparatedString)) + throw new ArgumentNullException(nameof(commaSeparatedString)); + + // 去除字符串两端的空格,并按逗号分割 + string[] byteStrings = commaSeparatedString.Trim().Split(','); + + // 将每个字符串转换成byte,并存储到数组中 + byte[] byteArray = byteStrings.Select(byteString => + { + if (!byte.TryParse(byteString, out byte result)) + throw new FormatException($"无法将字符串 '{byteString}' 解析为字节。"); + return result; + }).ToArray(); + + return byteArray; + } + + public static byte[] Encrypt(byte[] toEncryptArray) + { + return Encrypt(toEncryptArray, currKey, currIV); + } + + public static byte[] Encrypt(byte[] toEncryptArray, byte[] keyArray, byte[] ivArray) + { + Aes rDel = Aes.Create(); + rDel.Key = keyArray; + rDel.IV = ivArray; + rDel.Mode = CipherMode.CBC; + rDel.Padding = PaddingMode.PKCS7; + ICryptoTransform cTransform = rDel.CreateEncryptor(); + byte[] resultArray = cTransform.TransformFinalBlock(toEncryptArray, 0, toEncryptArray.Length); + return resultArray; + } + + public static byte[] Decrypt(byte[] toDecrypt) + { + return Decrypt(toDecrypt, currKey, currIV); + } + + public static byte[] Decrypt(byte[] toDecrypt, byte[] keyArray, byte[] ivArray) + { + Aes rDel = Aes.Create(); + rDel.Key = keyArray; + rDel.IV = ivArray; + rDel.Mode = CipherMode.CBC; + rDel.Padding = PaddingMode.PKCS7; + ICryptoTransform cTransform = rDel.CreateDecryptor(); + byte[] resultArray = cTransform.TransformFinalBlock(toDecrypt, 0, toDecrypt.Length); + return resultArray; + } + + } +} \ No newline at end of file diff --git a/AxibugEmuOnline.Server/Common/Config.cs b/AxibugEmuOnline.Server/Common/Config.cs index 86c08347..6a3c992b 100644 --- a/AxibugEmuOnline.Server/Common/Config.cs +++ b/AxibugEmuOnline.Server/Common/Config.cs @@ -19,6 +19,8 @@ namespace AxibugEmuOnline.Server.Common public string ServerIp { get; set; } public ushort ServerPort { get; set; } public string ClientVersion { get; set; } + public string AesKey { get; set; } + public string AesIv { get; set; } } diff --git a/AxibugEmuOnline.Server/Common/Haoyue_SQLPoolManager.cs b/AxibugEmuOnline.Server/Common/SQLPool.cs similarity index 81% rename from AxibugEmuOnline.Server/Common/Haoyue_SQLPoolManager.cs rename to AxibugEmuOnline.Server/Common/SQLPool.cs index 1274dc0e..12f153d6 100644 --- a/AxibugEmuOnline.Server/Common/Haoyue_SQLPoolManager.cs +++ b/AxibugEmuOnline.Server/Common/SQLPool.cs @@ -2,18 +2,16 @@ namespace AxibugEmuOnline.Server.Common { - public static class Haoyue_SQLPoolManager + public static class SQLPool { - private static Queue SQLPool = new Queue(); - private static Dictionary _OutOfSQLPool = new Dictionary(); - private static Dictionary _DicSqlRunFunNum = new Dictionary(); - private static Dictionary _DicTimeOutSqlRunFunNum = new Dictionary(); - private const int DefaultCount = 1; - private const int MaxLimit = 5; - private static readonly object _sync = new object(); - - - private static MySqlConnectionStringBuilder connBuilder; + static Queue _ConQueue = new Queue(); + static Dictionary _OutOfSQLPool = new Dictionary(); + static Dictionary _DicSqlRunFunNum = new Dictionary(); + static Dictionary _DicTimeOutSqlRunFunNum = new Dictionary(); + const int DefaultCount = 1; + const int MaxLimit = 5; + static readonly object _sync = new object(); + static MySqlConnectionStringBuilder connBuilder; public static void InitConnMgr() { @@ -33,9 +31,9 @@ namespace AxibugEmuOnline.Server.Common { MySqlConnection _conn = conn(); _conn.Open(); - SQLPool.Enqueue(_conn); + _ConQueue.Enqueue(_conn); } - Console.WriteLine("SQLPool初始化完毕,连接数" + SQLPool.Count); + Console.WriteLine("SQLPool初始化完毕,连接数" + _ConQueue.Count); } public static MySqlConnection conn() { @@ -55,22 +53,22 @@ namespace AxibugEmuOnline.Server.Common _DicSqlRunFunNum[FuncStr] = 1L; } MySqlConnection _conn = null; - if (SQLPool.Count < 1) + if (_ConQueue.Count < 1) { - Console.WriteLine("[DequeueSQLConn]创建新的SQLPool.Count>" + SQLPool.Count); + Console.WriteLine("[DequeueSQLConn]创建新的SQLPool.Count>" + _ConQueue.Count); _conn = conn(); _conn.Open(); } else { MySqlConnection temp = null; - while (SQLPool.Count > 0) + while (_ConQueue.Count > 0) { - Console.WriteLine("[DequeueSQLConn]取出一个SQLCount.Count>" + SQLPool.Count); - temp = SQLPool.Dequeue(); + Console.WriteLine("[DequeueSQLConn]取出一个SQLCount.Count>" + _ConQueue.Count); + temp = _ConQueue.Dequeue(); if (temp.State == System.Data.ConnectionState.Closed) { - Console.WriteLine("[DequeueSQLConn]已经断开SQLCount.Count>" + SQLPool.Count); + Console.WriteLine("[DequeueSQLConn]已经断开SQLCount.Count>" + _ConQueue.Count); temp.Dispose(); temp = null; continue; @@ -110,17 +108,17 @@ namespace AxibugEmuOnline.Server.Common { Console.WriteLine("出队遗漏的数据出现了!"); } - if (SQLPool.Count > MaxLimit) + if (_ConQueue.Count > MaxLimit) { - Console.WriteLine("已经不需要回收了,多余了,SQLPool.Count>" + SQLPool.Count); + Console.WriteLine("已经不需要回收了,多余了,SQLPool.Count>" + _ConQueue.Count); BackConn.Close(); BackConn.Dispose(); BackConn = null; } else { - SQLPool.Enqueue(BackConn); - Console.WriteLine("回收SQLPool.Count>" + SQLPool.Count); + _ConQueue.Enqueue(BackConn); + Console.WriteLine("回收SQLPool.Count>" + _ConQueue.Count); } } } @@ -143,15 +141,15 @@ namespace AxibugEmuOnline.Server.Common { _DicTimeOutSqlRunFunNum[o2.Value.FuncStr] = 1L; } - if (SQLPool.Count > MaxLimit) + if (_ConQueue.Count > MaxLimit) { - Console.WriteLine("[超时回收]" + o2.Value.FuncStr + "已经不需要回收了,多余了,SQLPool.Count>" + SQLPool.Count); + Console.WriteLine("[超时回收]" + o2.Value.FuncStr + "已经不需要回收了,多余了,SQLPool.Count>" + _ConQueue.Count); o2.Key.Close(); } else { - Console.WriteLine("[超时回收]" + o2.Value.FuncStr + "回收SQLPool.Count>" + SQLPool.Count); - SQLPool.Enqueue(o2.Key); + Console.WriteLine("[超时回收]" + o2.Value.FuncStr + "回收SQLPool.Count>" + _ConQueue.Count); + _ConQueue.Enqueue(o2.Key); } removeTemp.Add(o2.Key); } @@ -172,7 +170,7 @@ namespace AxibugEmuOnline.Server.Common Console.WriteLine("[超时回收]_OutOfSQLPool清理异常???????"); } } - Console.WriteLine("[超时回收]处理结束SQLPool.Count>" + SQLPool.Count); + Console.WriteLine("[超时回收]处理结束SQLPool.Count>" + _ConQueue.Count); } } public static long time() diff --git a/AxibugEmuOnline.Server/Manager/AppSrv.cs b/AxibugEmuOnline.Server/Manager/AppSrv.cs index 5581c5ed..197dfdb9 100644 --- a/AxibugEmuOnline.Server/Manager/AppSrv.cs +++ b/AxibugEmuOnline.Server/Manager/AppSrv.cs @@ -22,7 +22,8 @@ namespace AxibugEmuOnline.Server { g_Log = new LogManager(); Config.LoadConfig(); - Haoyue_SQLPoolManager.InitConnMgr(); + AESHelper.LoadKeyIVCfg(Config.cfg.AesKey, Config.cfg.AesIv); + SQLPool.InitConnMgr(); g_Tick = new TickManager(); g_ClientMgr = new ClientManager(); g_ClientMgr.Init(45000, 120); diff --git a/AxibugEmuOnline.Server/Manager/GameShareManager.cs b/AxibugEmuOnline.Server/Manager/GameShareManager.cs index 030cbe39..0361451d 100644 --- a/AxibugEmuOnline.Server/Manager/GameShareManager.cs +++ b/AxibugEmuOnline.Server/Manager/GameShareManager.cs @@ -3,7 +3,6 @@ using AxibugEmuOnline.Server.NetWork; using AxibugProtobuf; using MySql.Data.MySqlClient; using System.Net.Sockets; -using System.Security.Policy; namespace AxibugEmuOnline.Server.Manager { @@ -21,28 +20,27 @@ namespace AxibugEmuOnline.Server.Manager ClientInfo _c = AppSrv.g_ClientMgr.GetClientForSocket(_socket); Protobuf_Game_Mark_RESP respData = new Protobuf_Game_Mark_RESP(); - MySqlConnection conn = Haoyue_SQLPoolManager.DequeueSQLConn("RecvGameMark"); + MySqlConnection conn = SQLPool.DequeueSQLConn("RecvGameMark"); try { - string query = "SELECT id from rom_stars where uid = ?uid and romid = ?platform and platform = ?romid"; + string query = "SELECT id from rom_stars where uid = ?uid and romid = ?romid"; bool bHad = false; using (var command = new MySqlCommand(query, conn)) { // 设置参数值 command.Parameters.AddWithValue("?uid", _c.UID); - command.Parameters.AddWithValue("?platform", 1); command.Parameters.AddWithValue("?romid", msg.RomID); using (var reader = command.ExecuteReader()) { while (reader.Read()) { - if (reader.GetInt32(0) > 0) - bHad = true; + reader.GetInt32(0); } } } - if (msg.State == 0) + //收藏 + if (msg.Motion == 1) { if (bHad) { @@ -92,18 +90,81 @@ namespace AxibugEmuOnline.Server.Manager catch (Exception e) { } - Haoyue_SQLPoolManager.EnqueueSQLConn(conn); + + respData.Stars = GetRomStart(msg.RomID); + respData.IsStar = CheckIsRomStar(msg.RomID, _c.UID) ? 1 : 0; + + SQLPool.EnqueueSQLConn(conn); respData.RomID = msg.RomID; AppSrv.g_ClientMgr.ClientSend(_c, (int)CommandID.CmdGameMark, (int)ErrorCode.ErrorOk, ProtoBufHelper.Serizlize(respData)); } + public int GetRomStart(int RomId) + { + int stars = 0; + MySqlConnection conn = SQLPool.DequeueSQLConn("GetStart"); + try + { + string query = $"SELECT `stars` FROM romlist where id = ?romid;"; + using (var command = new MySqlCommand(query, conn)) + { + // 设置参数值 + command.Parameters.AddWithValue("?RomID", RomId); + // 执行查询并处理结果 + using (var reader = command.ExecuteReader()) + { + while (reader.Read()) + { + stars = reader.GetInt32(0); + } + } + } + } + catch (Exception e) + { + AppSrv.g_Log.Error(e); + } + SQLPool.EnqueueSQLConn(conn); + return stars; + } + + public bool CheckIsRomStar(int RomId, long uid) + { + bool bhad = false; + MySqlConnection conn = SQLPool.DequeueSQLConn("CheckIsRomStart"); + try + { + string query = $"SELECT count(0) from rom_stars where uid = ?uid and = ?romid"; + using (var command = new MySqlCommand(query, conn)) + { + // 设置参数值 + command.Parameters.AddWithValue("?RomID", RomId); + command.Parameters.AddWithValue("?uid", uid); + // 执行查询并处理结果 + using (var reader = command.ExecuteReader()) + { + while (reader.Read()) + { + bhad = reader.GetInt32(0) > 0; + } + } + } + } + catch (Exception e) + { + AppSrv.g_Log.Error(e); + } + SQLPool.EnqueueSQLConn(conn); + return bhad; + } + public RomPlatformType GetRomPlatformType(int RomID) { if (mDictRomID2Platform.TryGetValue(RomID, out RomPlatformType ptype)) return ptype; ptype = RomPlatformType.Invalid; - MySqlConnection conn = Haoyue_SQLPoolManager.DequeueSQLConn("GetRomPlatformType"); + MySqlConnection conn = SQLPool.DequeueSQLConn("GetRomPlatformType"); try { string query = "SELECT PlatformType from romlist where Id = ?RomID "; @@ -129,7 +190,7 @@ namespace AxibugEmuOnline.Server.Manager if (ptype == RomPlatformType.Invalid) AppSrv.g_Log.Error($"RomID {RomID} 没找到平台配置"); - Haoyue_SQLPoolManager.EnqueueSQLConn(conn); + SQLPool.EnqueueSQLConn(conn); return ptype; } diff --git a/AxibugEmuOnline.Server/Manager/LoginManager.cs b/AxibugEmuOnline.Server/Manager/LoginManager.cs index 141baa91..6bbc9f6a 100644 --- a/AxibugEmuOnline.Server/Manager/LoginManager.cs +++ b/AxibugEmuOnline.Server/Manager/LoginManager.cs @@ -3,19 +3,29 @@ using AxibugEmuOnline.Server.Event; using AxibugEmuOnline.Server.NetWork; using AxibugProtobuf; using MySql.Data.MySqlClient; +using Mysqlx; +using Org.BouncyCastle.Asn1.X9; using Org.BouncyCastle.Ocsp; +using System.Collections; using System.Net.Sockets; namespace AxibugEmuOnline.Server.Manager { public class LoginManager { + static long tokenSeed = 1; + public LoginManager() { NetMsg.Instance.RegNetMsgEvent((int)CommandID.CmdLogin, UserLogin); NetMsg.Instance.RegNetMsgEvent((int)CommandID.CmdModifyNickName, OnCmdModifyNickName); } + static long GetNextTokenSeed() + { + return tokenSeed++; + } + void UserLogin(Socket _socket, byte[] reqData) { AppSrv.g_Log.DebugCmd("UserLogin"); @@ -47,7 +57,9 @@ namespace AxibugEmuOnline.Server.Manager ClientInfo _c = AppSrv.g_ClientMgr.JoinNewClient(_uid, _socket); - UpdateUserData(_uid, _c,msg.DeviceType); + UpdateUserData(_uid, _c, msg.DeviceType); + + string tokenstr = GenToken(_c); EventSystem.Instance.PostEvent(EEvent.OnUserOnline, _c.UID); @@ -56,10 +68,11 @@ namespace AxibugEmuOnline.Server.Manager Status = LoginResultStatus.Ok, RegDate = _c.RegisterDT.ToString("yyyy-MM-dd HH:mm:ss"), LastLoginDate = _c.LastLogInDT.ToString("yyyy-MM-dd HH:mm:ss"), - Token = "", + Token = tokenstr, NickName = _c.NickName, UID = _c.UID }); + AppSrv.g_Log.Info($"玩家登录成功 UID->{_c.UID} NikeName->{_c.NickName}"); AppSrv.g_ClientMgr.ClientSend(_c, (int)CommandID.CmdLogin, (int)ErrorCode.ErrorOk, respData); } @@ -70,7 +83,7 @@ namespace AxibugEmuOnline.Server.Manager bool bDone = false; ClientInfo _c = AppSrv.g_ClientMgr.GetClientForSocket(socket); Protobuf_Modify_NickName msg = ProtoBufHelper.DeSerizlize(reqData); - MySqlConnection conn = Haoyue_SQLPoolManager.DequeueSQLConn("ModifyNikeName"); + MySqlConnection conn = SQLPool.DequeueSQLConn("ModifyNikeName"); try { string query = "update users set nikename = ?nikename where uid = ?uid "; @@ -88,7 +101,7 @@ namespace AxibugEmuOnline.Server.Manager catch (Exception e) { } - Haoyue_SQLPoolManager.EnqueueSQLConn(conn); + SQLPool.EnqueueSQLConn(conn); if (bDone) { @@ -123,7 +136,7 @@ namespace AxibugEmuOnline.Server.Manager { uid = 0; bool bDone = true; - MySqlConnection conn = Haoyue_SQLPoolManager.DequeueSQLConn("GetUidByDevice"); + MySqlConnection conn = SQLPool.DequeueSQLConn("GetUidByDevice"); try { string query = "SELECT uid from user_devices where device = ?deviceStr "; @@ -193,7 +206,7 @@ namespace AxibugEmuOnline.Server.Manager AppSrv.g_Log.Error($"ex=>{e.ToString()}"); bDone = false; } - Haoyue_SQLPoolManager.EnqueueSQLConn(conn); + SQLPool.EnqueueSQLConn(conn); if (uid <= 0) bDone = false; @@ -202,7 +215,7 @@ namespace AxibugEmuOnline.Server.Manager public void UpdateUserData(long uid, ClientInfo _c, DeviceType deviceType) { - MySqlConnection conn = Haoyue_SQLPoolManager.DequeueSQLConn("UpdateUserData"); + MySqlConnection conn = SQLPool.DequeueSQLConn("UpdateUserData"); try { string query = "SELECT account,nikename,regdate,lastlogindate from users where uid = ?uid "; @@ -236,7 +249,30 @@ namespace AxibugEmuOnline.Server.Manager { } - Haoyue_SQLPoolManager.EnqueueSQLConn(conn); + SQLPool.EnqueueSQLConn(conn); + } + + static string GenToken(ClientInfo _c) + { + long timestamp = DateTimeOffset.UtcNow.ToUnixTimeSeconds(); + Protobuf_Token_Struct _resp = new Protobuf_Token_Struct() + { + UID = _c.UID, + TokenGenDate = timestamp, + Seed = GetNextTokenSeed() + }; + byte[] protobufData = ProtoBufHelper.Serizlize(_resp); + ProtoBufHelper.DeSerizlize(protobufData); + byte[] encryptData = AESHelper.Encrypt(protobufData); + string tobase64 = Convert.ToBase64String(encryptData); + return tobase64; + } + + static Protobuf_Token_Struct DecrypToken(string tokenStr) + { + byte[] encryptData = Convert.FromBase64String(tokenStr); + byte[] decryptData = AESHelper.Decrypt(encryptData); + return ProtoBufHelper.DeSerizlize(decryptData); } public string GetRandomNickName(long uid) @@ -450,5 +486,7 @@ namespace AxibugEmuOnline.Server.Manager "红白机战士之魂", "超级时间探险家" ]; + + } } \ No newline at end of file diff --git a/AxibugEmuOnline.Server/Manager/RoomManager.cs b/AxibugEmuOnline.Server/Manager/RoomManager.cs index d7b49d3d..528632a0 100644 --- a/AxibugEmuOnline.Server/Manager/RoomManager.cs +++ b/AxibugEmuOnline.Server/Manager/RoomManager.cs @@ -109,7 +109,7 @@ namespace AxibugEmuOnline.Server } public void RoomLog(long uid, int platform, int RoomID, int RomID, RoomLogType state) { - MySqlConnection conn = Haoyue_SQLPoolManager.DequeueSQLConn("RoomLog"); + MySqlConnection conn = SQLPool.DequeueSQLConn("RoomLog"); try { string query = "INSERT INTO `haoyue_emu`.`room_log` (`uid`, `platform`, `romid`,`roomid`, `state`) VALUES ( ?uid, ?platform, ?romid, ?roomid, ?state);"; @@ -137,7 +137,7 @@ namespace AxibugEmuOnline.Server catch (Exception e) { } - Haoyue_SQLPoolManager.EnqueueSQLConn(conn); + SQLPool.EnqueueSQLConn(conn); } #endregion diff --git a/AxibugEmuOnline.Server/Program.cs b/AxibugEmuOnline.Server/Program.cs index cc963728..a92f448c 100644 --- a/AxibugEmuOnline.Server/Program.cs +++ b/AxibugEmuOnline.Server/Program.cs @@ -77,6 +77,11 @@ namespace AxibugEmuOnline.Server UpdateRomHash(); } break; + case "aesgen": + { + AESHelper.GenAesKeyIV(); + } + break; default: Console.WriteLine("未知命令" + CommandStr); break; @@ -88,7 +93,7 @@ namespace AxibugEmuOnline.Server static void UpdateRomHash() { AppSrv.g_Log.Info("UpdateRomHash"); - MySqlConnection conn = Haoyue_SQLPoolManager.DequeueSQLConn("UpdateRomHash"); + MySqlConnection conn = SQLPool.DequeueSQLConn("UpdateRomHash"); try { List<(int id, string romurl, string name)> list = new List<(int id, string romurl, string name)>(); @@ -139,7 +144,7 @@ namespace AxibugEmuOnline.Server { AppSrv.g_Log.Info($"err:{e.ToString()}"); } - Haoyue_SQLPoolManager.EnqueueSQLConn(conn); + SQLPool.EnqueueSQLConn(conn); } } } \ No newline at end of file diff --git a/AxibugEmuOnline.Server/Protobuf/ProtobufAxibugEmuOnline.cs b/AxibugEmuOnline.Server/Protobuf/ProtobufAxibugEmuOnline.cs index 03dca7a1..22e17773 100644 --- a/AxibugEmuOnline.Server/Protobuf/ProtobufAxibugEmuOnline.cs +++ b/AxibugEmuOnline.Server/Protobuf/ProtobufAxibugEmuOnline.cs @@ -36,113 +36,115 @@ namespace AxibugProtobuf { "aW5fUkVTUBIQCghOaWNrTmFtZRgBIAEoCRINCgVUb2tlbhgCIAEoCRIVCg1M", "YXN0TG9naW5EYXRlGAMgASgJEg8KB1JlZ0RhdGUYBCABKAkSMQoGU3RhdHVz", "GAUgASgOMiEuQXhpYnVnUHJvdG9idWYuTG9naW5SZXN1bHRTdGF0dXMSCwoD", - "VUlEGAYgASgDIhMKEVByb3RvYnVmX1VzZXJMaXN0IlsKFlByb3RvYnVmX1Vz", - "ZXJMaXN0X1JFU1ASEQoJVXNlckNvdW50GAEgASgFEi4KCFVzZXJMaXN0GAIg", - "AygLMhwuQXhpYnVnUHJvdG9idWYuVXNlck1pbmlJbmZvIkgKFlByb3RvYnVm", - "X1VzZXJKb2luX1JFU1ASLgoIVXNlckluZm8YASABKAsyHC5BeGlidWdQcm90", - "b2J1Zi5Vc2VyTWluaUluZm8iJgoXUHJvdG9idWZfVXNlckxlYXZlX1JFU1AS", - "CwoDVUlEGAEgASgDIjUKF1Byb3RvYnVmX1VzZXJTdGF0ZV9SRVNQEgsKA1VJ", - "RBgBIAEoAxINCgVTdGF0ZRgCIAEoBSJdCgxVc2VyTWluaUluZm8SCwoDVUlE", - "GAEgASgDEhAKCE5pY2tOYW1lGAIgASgJEi4KCmRldmljZVR5cGUYAyABKA4y", - "Gi5BeGlidWdQcm90b2J1Zi5EZXZpY2VUeXBlIiwKGFByb3RvYnVmX01vZGlm", - "eV9OaWNrTmFtZRIQCghOaWNrTmFtZRgBIAEoCSIfCh1Qcm90b2J1Zl9Nb2Rp", - "ZnlfTmlja05hbWVfUkVTUCJPCh1Qcm90b2J1Zl9VcGRhdGVfVXNlckluZm9f", - "UkVTUBIuCghVc2VySW5mbxgBIAEoCzIcLkF4aWJ1Z1Byb3RvYnVmLlVzZXJN", - "aW5pSW5mbyJhCiJQcm90b2J1Zl9VcGRhdGVfT3RoZXJVc2VySW5mb19SRVNQ", - "EgsKA1VJRBgBIAEoAxIuCghVc2VySW5mbxgCIAEoCzIcLkF4aWJ1Z1Byb3Rv", - "YnVmLlVzZXJNaW5pSW5mbyIUChJQcm90b2J1Zl9Sb29tX0xpc3QiWwoXUHJv", - "dG9idWZfUm9vbV9MaXN0X1JFU1ASQAoQUm9vbU1pbmlJbmZvTGlzdBgBIAMo", - "CzImLkF4aWJ1Z1Byb3RvYnVmLlByb3RvYnVmX1Jvb21fTWluaUluZm8iywIK", - "FlByb3RvYnVmX1Jvb21fTWluaUluZm8SDgoGUm9vbUlEGAEgASgFEhEKCUdh", - "bWVSb21JRBgCIAEoBRITCgtHYW1lUm9tSGFzaBgDIAEoCRI5ChBHYW1lUGxh", - "dGZvcm1UeXBlGAQgASgOMh8uQXhpYnVnUHJvdG9idWYuUm9tUGxhdGZvcm1U", - "eXBlEhUKDUhvc3RQbGF5ZXJVSUQYBSABKAMSMAoJR2FtZVN0YXRlGAYgASgO", - "Mh0uQXhpYnVnUHJvdG9idWYuUm9vbUdhbWVTdGF0ZRIUCgxPYnNVc2VyQ291", - "bnQYByABKAUSGQoRU2NyZWVuUHJvdmlkZXJVSUQYCCABKAMSRAoQR2FtZVBs", - "YXlTbG90TGlzdBgJIAMoCzIqLkF4aWJ1Z1Byb3RvYnVmLlByb3RvYnVmX1Jv", - "b21fR2FtZVBsYXlTbG90ItEBChpQcm90b2J1Zl9Sb29tX0dhbWVQbGF5U2xv", - "dBISCgpQbGF5ZXJfVUlEGAEgASgDEhcKD1BsYXllcl9OaWNrTmFtZRgCIAEo", - "CRIuCgpkZXZpY2VUeXBlGAMgASgOMhouQXhpYnVnUHJvdG9idWYuRGV2aWNl", - "VHlwZRIZChFQbGF5ZXJMb2NhbEpveUlkeBgEIAEoBRI7ChZQbGF5ZXJMb2Nh", - "bEdhbWVQYWRUeXBlGAUgASgOMhsuQXhpYnVnUHJvdG9idWYuR2FtZVBhZFR5", - "cGUibQoZUHJvdG9idWZfUm9vbV9VcGRhdGVfUkVTUBISCgpVcGRhdGVUeXBl", - "GAEgASgFEjwKDFJvb21NaW5pSW5mbxgCIAEoCzImLkF4aWJ1Z1Byb3RvYnVm", - "LlByb3RvYnVmX1Jvb21fTWluaUluZm8iSwoVUHJvdG9idWZfU2NyZW5uX0Zy", - "YW1lEg4KBlJvb21JRBgBIAEoBRIPCgdGcmFtZUlEGAIgASgFEhEKCVJhd0Jp", - "dG1hcBgDIAEoDCJJCiNQcm90b2J1Zl9Sb29tX1NpbmdsZVBsYXllcklucHV0", - "RGF0YRIPCgdGcmFtZUlEGAEgASgNEhEKCUlucHV0RGF0YRgCIAEoDSKAAQon", - "UHJvdG9idWZfUm9vbV9TeW5fUm9vbUZyYW1lQWxsSW5wdXREYXRhEg8KB0Zy", - "YW1lSUQYASABKA0SEQoJSW5wdXREYXRhGAIgASgEEhUKDVNlcnZlckZyYW1l", - "SUQYAyABKA0SGgoSU2VydmVyRm9yd2FyZENvdW50GAQgASgNIj4KFFByb3Rv", - "YnVmX1Jvb21fQ3JlYXRlEhEKCUdhbWVSb21JRBgBIAEoBRITCgtHYW1lUm9t", - "SGFzaBgCIAEoCSJZChlQcm90b2J1Zl9Sb29tX0NyZWF0ZV9SRVNQEjwKDFJv", - "b21NaW5pSW5mbxgBIAEoCzImLkF4aWJ1Z1Byb3RvYnVmLlByb3RvYnVmX1Jv", - "b21fTWluaUluZm8iJAoSUHJvdG9idWZfUm9vbV9Kb2luEg4KBlJvb21JRBgB", - "IAEoBSJXChdQcm90b2J1Zl9Sb29tX0pvaW5fUkVTUBI8CgxSb29tTWluaUlu", - "Zm8YASABKAsyJi5BeGlidWdQcm90b2J1Zi5Qcm90b2J1Zl9Sb29tX01pbmlJ", - "bmZvIiUKE1Byb3RvYnVmX1Jvb21fTGVhdmUSDgoGUm9vbUlEGAEgASgFIioK", - "GFByb3RvYnVmX1Jvb21fTGVhdmVfUkVTUBIOCgZSb29tSUQYASABKAUiYQoh", - "UHJvdG9idWZfUm9vbV9NeVJvb21fU3RhdGVfQ2hhbmdlEjwKDFJvb21NaW5p", - "SW5mbxgBIAEoCzImLkF4aWJ1Z1Byb3RvYnVmLlByb3RvYnVmX1Jvb21fTWlu", - "aUluZm8iawokUHJvdG9idWZfUm9vbV9DaGFuZ2VfUGxheVNsb3RXaXRoSm95", - "EkMKC1Nsb3RXaXRoSm95GAEgAygLMi4uQXhpYnVnUHJvdG9idWYuUHJvdG9i", - "dWZfUGxheVNsb3RJZHhXaXRoSm95SWR4Io8BCh5Qcm90b2J1Zl9QbGF5U2xv", - "dElkeFdpdGhKb3lJZHgSFQoNUGxheWVyU2xvdElkeBgBIAEoBRIZChFQbGF5", - "ZXJMb2NhbEpveUlkeBgCIAEoBRI7ChZQbGF5ZXJMb2NhbEdhbWVQYWRUeXBl", - "GAMgASgOMhsuQXhpYnVnUHJvdG9idWYuR2FtZVBhZFR5cGUiKwopUHJvdG9i", - "dWZfUm9vbV9DaGFuZ2VfUGxheVNsb3RXaXRoSm95X1JFU1AiRQobUHJvdG9i", - "dWZfUm9vbV9XYWl0U3RlcF9SRVNQEhAKCFdhaXRTdGVwGAEgASgFEhQKDExv", - "YWRTdGF0ZVJhdxgCIAEoDCI/CidQcm90b2J1Zl9Sb29tX0hvc3RQbGF5ZXJf", - "VXBkYXRlU3RhdGVSYXcSFAoMTG9hZFN0YXRlUmF3GAEgASgMIi4KLFByb3Rv", - "YnVmX1Jvb21fSG9zdFBsYXllcl9VcGRhdGVTdGF0ZVJhd19SRVNQIpoBChpQ", - "cm90b2J1Zl9Sb29tX1BsYXllcl9SZWFkeRIbChNQdXNoRnJhbWVOZWVkVGlt", - "ZVVzGAEgASgCEhsKE0xvYWRTdGF0ZU5lZWRUaW1lVXMYAiABKAISIAoYVmlk", - "ZW9GcmFtZVNob3dOZWVkVGltZVVzGAMgASgCEiAKGEF1ZGlvRnJhbWVQbGF5", - "TmVlZFRpbWVVcxgEIAEoAiIqChhQcm90b2J1Zl9Sb29tX0dldF9TY3JlZW4S", - "DgoGUm9vbUlEGAEgASgFIlMKHVByb3RvYnVmX1Jvb21fR2V0X1NjcmVlbl9S", - "RVNQEg4KBlJvb21JRBgBIAEoBRIPCgdGcmFtZUlEGAIgASgFEhEKCVJhd0Jp", - "dG1hcBgDIAEoDCIyChJQcm90b2J1Zl9HYW1lX01hcmsSDQoFUm9tSUQYASAB", - "KAUSDQoFc3RhdGUYAiABKAUiKAoXUHJvdG9idWZfR2FtZV9NYXJrX1JFU1AS", - "DQoFUm9tSUQYASABKAUqoQUKCUNvbW1hbmRJRBIOCgpDTURfREVGQVVMEAAS", - "DAoIQ01EX1BJTkcQARIMCghDTURfUE9ORxACEg4KCUNNRF9MT0dJThDRDxIY", - "ChNDTURfVVNFUl9PTkxJTkVMSVNUELgXEhIKDUNNRF9VU0VSX0pPSU4Q1xcS", - "EwoOQ01EX1VTRVJfTEVBVkUQ2BcSGgoVQ01EX1VTRVJfU1RBVEVfVVBEQVRF", - "ENkXEhgKE0NNRF9Nb2RpZnlfTmlja05hbWUQnRgSHAoXQ01EX1VwZGF0ZV9T", - "ZWxmVXNlckluZm8QphgSHQoYQ01EX1VwZGF0ZV9PdGhlclVzZXJJbmZvEKgY", - "EhAKC0NNRF9DSEFUTVNHEKEfEhIKDUNNRF9Sb29tX0xpc3QQiScSGQoUQ01E", - "X1Jvb21fTGlzdF9VcGRhdGUQiicSGAoTQ01EX1Jvb21fR2V0X1NjcmVlbhCT", - "JxIUCg9DTURfUm9vbV9DcmVhdGUQ7ScSEgoNQ01EX1Jvb21fSm9pbhDxJxIT", - "Cg5DTURfUm9vbV9MZWF2ZRDyJxIiCh1DTURfUm9vbV9NeVJvb21fU3RhdGVf", - "Q2hhbmdlZBD2JxIhChxDTURfUm9vbV9DaGFuZ2VQbGF5ZXJXaXRoSm95EIoo", - "EhYKEUNNRF9Sb29tX1dhaXRTdGVwENEoEicKIkNNRF9Sb29tX0hvc3RQbGF5", - "ZXJfVXBkYXRlU3RhdGVSYXcQ1CgSGgoVQ01EX1Jvb21fUGxheWVyX1JlYWR5", - "ENgoEiAKG0NNRF9Sb29tX1NpbmdlbF9QbGF5ZXJJbnB1dBD6LhIdChhDTURf", - "Uk9PTV9TWU5fUGxheWVySW5wdXQQ/y4SDwoKQ01EX1NjcmVlbhDZNhISCg1D", - "TURfR0FNRV9NQVJLEPVOKtABCglFcnJvckNvZGUSEAoMRVJST1JfREVGQVVM", - "EAASDAoIRVJST1JfT0sQARIYChRFUlJPUl9ST09NX05PVF9GT1VORBAKEicK", - "I0VSUk9SX1JPT01fU0xPVF9BTFJFQURMWV9IQURfUExBWUVSEAsSIQodRVJS", - "T1JfUk9PTV9DQU5UX0RPX0NVUlJfU1RBVEUQMhIfChpFUlJPUl9ST01fQUxS", - "RUFEWV9IQURfU1RBUhCTAxIcChdFUlJPUl9ST01fRE9OVF9IQURfU1RBUhCU", - "AypACglMb2dpblR5cGUSDQoJVXNlRGV2aWNlEAASDgoKVXNlQWNjb3VudBAB", - "EhQKEFVzZUhhb1l1ZUFjY291bnQQAiqlAQoKRGV2aWNlVHlwZRIWChJEZXZp", - "Y2VUeXBlX0RlZmF1bHQQABIGCgJQQxABEgsKB0FuZHJvaWQQAhIHCgNJT1MQ", - "AxIHCgNQU1YQBBIHCgNQUzMQBRIHCgNQUzQQBhILCgdYQk9YMzYwEAcSCwoH", - "WEJPWE9ORRAIEggKBFdpaVUQCRIPCgtOaW50ZW5kbzNEUxAKEhEKDUFuZHJv", - "aWRDYXJBcHAQCyqTAgoLR2FtZVBhZFR5cGUSDAoIS2V5Ym9hcmQQABIRCg1H", - "bG9iYWxHYW1lUGFkEAESDgoKVG91Y2hQYW5lbBACEg4KCkRTM0NvbnRyb2wQ", - "AxIOCgpEUzRDb250cm9sEAQSDgoKRFM1Q29udHJvbBAFEhQKEFN3aXRjaFBy", - "b0NvbnRyb2wQBhIQCgxTd2l0Y2hKb3lDb24QBxISCg5YQk9YMzYwQ29udHJv", - "bBAIEhIKDlhCT1hPTkVDb250cm9sEAkSEQoNUFNWaXRhQ29udHJvbBAKEhIK", - "DldpaVVQYWRDb250cm9sEAsSFAoQV2lpUmVtb3RlQ29udHJvbBAMEhYKEk5p", - "bnRlbmRvM0RTQ29udHJvbBANKqIBCg9Sb21QbGF0Zm9ybVR5cGUSCwoHSW52", - "YWxpZBAAEgcKA05lcxABEhEKDU1hc3Rlcl9TeXN0ZW0QAhINCglHYW1lX0dl", - "YXIQAxIMCghHYW1lX0JveRAEEhIKDkdhbWVfQm95X0NvbG9yEAUSEQoNQ29s", - "ZWNvX1Zpc2lvbhAGEgsKB1NDXzMwMDAQBxILCgdTR18xMDAwEAgSCAoDQWxs", - "EOcHKnAKDVJvb21HYW1lU3RhdGUSEgoOTm9uZV9HYW1lU3RhdGUQABIMCghP", - "bmx5SG9zdBABEhEKDVdhaXRSYXdVcGRhdGUQAhINCglXYWl0UmVhZHkQAxIJ", - "CgVQYXVzZRAEEhAKDEluT25saW5lR2FtZRAFKk4KEUxvZ2luUmVzdWx0U3Rh", - "dHVzEiEKHUxvZ2luUmVzdWx0U3RhdHVzX0Jhc2VEZWZhdWx0EAASBgoCT0sQ", - "ARIOCgpBY2NvdW50RXJyEAJCAkgBYgZwcm90bzM=")); + "VUlEGAYgASgDIkgKFVByb3RvYnVmX1Rva2VuX1N0cnVjdBILCgNVSUQYASAB", + "KAMSFAoMVG9rZW5HZW5EYXRlGAIgASgDEgwKBFNlZWQYAyABKAMiEwoRUHJv", + "dG9idWZfVXNlckxpc3QiWwoWUHJvdG9idWZfVXNlckxpc3RfUkVTUBIRCglV", + "c2VyQ291bnQYASABKAUSLgoIVXNlckxpc3QYAiADKAsyHC5BeGlidWdQcm90", + "b2J1Zi5Vc2VyTWluaUluZm8iSAoWUHJvdG9idWZfVXNlckpvaW5fUkVTUBIu", + "CghVc2VySW5mbxgBIAEoCzIcLkF4aWJ1Z1Byb3RvYnVmLlVzZXJNaW5pSW5m", + "byImChdQcm90b2J1Zl9Vc2VyTGVhdmVfUkVTUBILCgNVSUQYASABKAMiNQoX", + "UHJvdG9idWZfVXNlclN0YXRlX1JFU1ASCwoDVUlEGAEgASgDEg0KBVN0YXRl", + "GAIgASgFIl0KDFVzZXJNaW5pSW5mbxILCgNVSUQYASABKAMSEAoITmlja05h", + "bWUYAiABKAkSLgoKZGV2aWNlVHlwZRgDIAEoDjIaLkF4aWJ1Z1Byb3RvYnVm", + "LkRldmljZVR5cGUiLAoYUHJvdG9idWZfTW9kaWZ5X05pY2tOYW1lEhAKCE5p", + "Y2tOYW1lGAEgASgJIh8KHVByb3RvYnVmX01vZGlmeV9OaWNrTmFtZV9SRVNQ", + "Ik8KHVByb3RvYnVmX1VwZGF0ZV9Vc2VySW5mb19SRVNQEi4KCFVzZXJJbmZv", + "GAEgASgLMhwuQXhpYnVnUHJvdG9idWYuVXNlck1pbmlJbmZvImEKIlByb3Rv", + "YnVmX1VwZGF0ZV9PdGhlclVzZXJJbmZvX1JFU1ASCwoDVUlEGAEgASgDEi4K", + "CFVzZXJJbmZvGAIgASgLMhwuQXhpYnVnUHJvdG9idWYuVXNlck1pbmlJbmZv", + "IhQKElByb3RvYnVmX1Jvb21fTGlzdCJbChdQcm90b2J1Zl9Sb29tX0xpc3Rf", + "UkVTUBJAChBSb29tTWluaUluZm9MaXN0GAEgAygLMiYuQXhpYnVnUHJvdG9i", + "dWYuUHJvdG9idWZfUm9vbV9NaW5pSW5mbyLLAgoWUHJvdG9idWZfUm9vbV9N", + "aW5pSW5mbxIOCgZSb29tSUQYASABKAUSEQoJR2FtZVJvbUlEGAIgASgFEhMK", + "C0dhbWVSb21IYXNoGAMgASgJEjkKEEdhbWVQbGF0Zm9ybVR5cGUYBCABKA4y", + "Hy5BeGlidWdQcm90b2J1Zi5Sb21QbGF0Zm9ybVR5cGUSFQoNSG9zdFBsYXll", + "clVJRBgFIAEoAxIwCglHYW1lU3RhdGUYBiABKA4yHS5BeGlidWdQcm90b2J1", + "Zi5Sb29tR2FtZVN0YXRlEhQKDE9ic1VzZXJDb3VudBgHIAEoBRIZChFTY3Jl", + "ZW5Qcm92aWRlclVJRBgIIAEoAxJEChBHYW1lUGxheVNsb3RMaXN0GAkgAygL", + "MiouQXhpYnVnUHJvdG9idWYuUHJvdG9idWZfUm9vbV9HYW1lUGxheVNsb3Qi", + "0QEKGlByb3RvYnVmX1Jvb21fR2FtZVBsYXlTbG90EhIKClBsYXllcl9VSUQY", + "ASABKAMSFwoPUGxheWVyX05pY2tOYW1lGAIgASgJEi4KCmRldmljZVR5cGUY", + "AyABKA4yGi5BeGlidWdQcm90b2J1Zi5EZXZpY2VUeXBlEhkKEVBsYXllckxv", + "Y2FsSm95SWR4GAQgASgFEjsKFlBsYXllckxvY2FsR2FtZVBhZFR5cGUYBSAB", + "KA4yGy5BeGlidWdQcm90b2J1Zi5HYW1lUGFkVHlwZSJtChlQcm90b2J1Zl9S", + "b29tX1VwZGF0ZV9SRVNQEhIKClVwZGF0ZVR5cGUYASABKAUSPAoMUm9vbU1p", + "bmlJbmZvGAIgASgLMiYuQXhpYnVnUHJvdG9idWYuUHJvdG9idWZfUm9vbV9N", + "aW5pSW5mbyJLChVQcm90b2J1Zl9TY3Jlbm5fRnJhbWUSDgoGUm9vbUlEGAEg", + "ASgFEg8KB0ZyYW1lSUQYAiABKAUSEQoJUmF3Qml0bWFwGAMgASgMIkkKI1By", + "b3RvYnVmX1Jvb21fU2luZ2xlUGxheWVySW5wdXREYXRhEg8KB0ZyYW1lSUQY", + "ASABKA0SEQoJSW5wdXREYXRhGAIgASgNIoABCidQcm90b2J1Zl9Sb29tX1N5", + "bl9Sb29tRnJhbWVBbGxJbnB1dERhdGESDwoHRnJhbWVJRBgBIAEoDRIRCglJ", + "bnB1dERhdGEYAiABKAQSFQoNU2VydmVyRnJhbWVJRBgDIAEoDRIaChJTZXJ2", + "ZXJGb3J3YXJkQ291bnQYBCABKA0iPgoUUHJvdG9idWZfUm9vbV9DcmVhdGUS", + "EQoJR2FtZVJvbUlEGAEgASgFEhMKC0dhbWVSb21IYXNoGAIgASgJIlkKGVBy", + "b3RvYnVmX1Jvb21fQ3JlYXRlX1JFU1ASPAoMUm9vbU1pbmlJbmZvGAEgASgL", + "MiYuQXhpYnVnUHJvdG9idWYuUHJvdG9idWZfUm9vbV9NaW5pSW5mbyIkChJQ", + "cm90b2J1Zl9Sb29tX0pvaW4SDgoGUm9vbUlEGAEgASgFIlcKF1Byb3RvYnVm", + "X1Jvb21fSm9pbl9SRVNQEjwKDFJvb21NaW5pSW5mbxgBIAEoCzImLkF4aWJ1", + "Z1Byb3RvYnVmLlByb3RvYnVmX1Jvb21fTWluaUluZm8iJQoTUHJvdG9idWZf", + "Um9vbV9MZWF2ZRIOCgZSb29tSUQYASABKAUiKgoYUHJvdG9idWZfUm9vbV9M", + "ZWF2ZV9SRVNQEg4KBlJvb21JRBgBIAEoBSJhCiFQcm90b2J1Zl9Sb29tX015", + "Um9vbV9TdGF0ZV9DaGFuZ2USPAoMUm9vbU1pbmlJbmZvGAEgASgLMiYuQXhp", + "YnVnUHJvdG9idWYuUHJvdG9idWZfUm9vbV9NaW5pSW5mbyJrCiRQcm90b2J1", + "Zl9Sb29tX0NoYW5nZV9QbGF5U2xvdFdpdGhKb3kSQwoLU2xvdFdpdGhKb3kY", + "ASADKAsyLi5BeGlidWdQcm90b2J1Zi5Qcm90b2J1Zl9QbGF5U2xvdElkeFdp", + "dGhKb3lJZHgijwEKHlByb3RvYnVmX1BsYXlTbG90SWR4V2l0aEpveUlkeBIV", + "Cg1QbGF5ZXJTbG90SWR4GAEgASgFEhkKEVBsYXllckxvY2FsSm95SWR4GAIg", + "ASgFEjsKFlBsYXllckxvY2FsR2FtZVBhZFR5cGUYAyABKA4yGy5BeGlidWdQ", + "cm90b2J1Zi5HYW1lUGFkVHlwZSIrCilQcm90b2J1Zl9Sb29tX0NoYW5nZV9Q", + "bGF5U2xvdFdpdGhKb3lfUkVTUCJFChtQcm90b2J1Zl9Sb29tX1dhaXRTdGVw", + "X1JFU1ASEAoIV2FpdFN0ZXAYASABKAUSFAoMTG9hZFN0YXRlUmF3GAIgASgM", + "Ij8KJ1Byb3RvYnVmX1Jvb21fSG9zdFBsYXllcl9VcGRhdGVTdGF0ZVJhdxIU", + "CgxMb2FkU3RhdGVSYXcYASABKAwiLgosUHJvdG9idWZfUm9vbV9Ib3N0UGxh", + "eWVyX1VwZGF0ZVN0YXRlUmF3X1JFU1AimgEKGlByb3RvYnVmX1Jvb21fUGxh", + "eWVyX1JlYWR5EhsKE1B1c2hGcmFtZU5lZWRUaW1lVXMYASABKAISGwoTTG9h", + "ZFN0YXRlTmVlZFRpbWVVcxgCIAEoAhIgChhWaWRlb0ZyYW1lU2hvd05lZWRU", + "aW1lVXMYAyABKAISIAoYQXVkaW9GcmFtZVBsYXlOZWVkVGltZVVzGAQgASgC", + "IioKGFByb3RvYnVmX1Jvb21fR2V0X1NjcmVlbhIOCgZSb29tSUQYASABKAUi", + "UwodUHJvdG9idWZfUm9vbV9HZXRfU2NyZWVuX1JFU1ASDgoGUm9vbUlEGAEg", + "ASgFEg8KB0ZyYW1lSUQYAiABKAUSEQoJUmF3Qml0bWFwGAMgASgMIjMKElBy", + "b3RvYnVmX0dhbWVfTWFyaxINCgVSb21JRBgBIAEoBRIOCgZtb3Rpb24YAiAB", + "KAUiRwoXUHJvdG9idWZfR2FtZV9NYXJrX1JFU1ASDQoFUm9tSUQYASABKAUS", + "DgoGSXNTdGFyGAIgASgFEg0KBXN0YXJzGAMgASgFKqEFCglDb21tYW5kSUQS", + "DgoKQ01EX0RFRkFVTBAAEgwKCENNRF9QSU5HEAESDAoIQ01EX1BPTkcQAhIO", + "CglDTURfTE9HSU4Q0Q8SGAoTQ01EX1VTRVJfT05MSU5FTElTVBC4FxISCg1D", + "TURfVVNFUl9KT0lOENcXEhMKDkNNRF9VU0VSX0xFQVZFENgXEhoKFUNNRF9V", + "U0VSX1NUQVRFX1VQREFURRDZFxIYChNDTURfTW9kaWZ5X05pY2tOYW1lEJ0Y", + "EhwKF0NNRF9VcGRhdGVfU2VsZlVzZXJJbmZvEKYYEh0KGENNRF9VcGRhdGVf", + "T3RoZXJVc2VySW5mbxCoGBIQCgtDTURfQ0hBVE1TRxChHxISCg1DTURfUm9v", + "bV9MaXN0EIknEhkKFENNRF9Sb29tX0xpc3RfVXBkYXRlEIonEhgKE0NNRF9S", + "b29tX0dldF9TY3JlZW4QkycSFAoPQ01EX1Jvb21fQ3JlYXRlEO0nEhIKDUNN", + "RF9Sb29tX0pvaW4Q8ScSEwoOQ01EX1Jvb21fTGVhdmUQ8icSIgodQ01EX1Jv", + "b21fTXlSb29tX1N0YXRlX0NoYW5nZWQQ9icSIQocQ01EX1Jvb21fQ2hhbmdl", + "UGxheWVyV2l0aEpveRCKKBIWChFDTURfUm9vbV9XYWl0U3RlcBDRKBInCiJD", + "TURfUm9vbV9Ib3N0UGxheWVyX1VwZGF0ZVN0YXRlUmF3ENQoEhoKFUNNRF9S", + "b29tX1BsYXllcl9SZWFkeRDYKBIgChtDTURfUm9vbV9TaW5nZWxfUGxheWVy", + "SW5wdXQQ+i4SHQoYQ01EX1JPT01fU1lOX1BsYXllcklucHV0EP8uEg8KCkNN", + "RF9TY3JlZW4Q2TYSEgoNQ01EX0dBTUVfTUFSSxD1TirQAQoJRXJyb3JDb2Rl", + "EhAKDEVSUk9SX0RFRkFVTBAAEgwKCEVSUk9SX09LEAESGAoURVJST1JfUk9P", + "TV9OT1RfRk9VTkQQChInCiNFUlJPUl9ST09NX1NMT1RfQUxSRUFETFlfSEFE", + "X1BMQVlFUhALEiEKHUVSUk9SX1JPT01fQ0FOVF9ET19DVVJSX1NUQVRFEDIS", + "HwoaRVJST1JfUk9NX0FMUkVBRFlfSEFEX1NUQVIQkwMSHAoXRVJST1JfUk9N", + "X0RPTlRfSEFEX1NUQVIQlAMqQAoJTG9naW5UeXBlEg0KCVVzZURldmljZRAA", + "Eg4KClVzZUFjY291bnQQARIUChBVc2VIYW9ZdWVBY2NvdW50EAIqpQEKCkRl", + "dmljZVR5cGUSFgoSRGV2aWNlVHlwZV9EZWZhdWx0EAASBgoCUEMQARILCgdB", + "bmRyb2lkEAISBwoDSU9TEAMSBwoDUFNWEAQSBwoDUFMzEAUSBwoDUFM0EAYS", + "CwoHWEJPWDM2MBAHEgsKB1hCT1hPTkUQCBIICgRXaWlVEAkSDwoLTmludGVu", + "ZG8zRFMQChIRCg1BbmRyb2lkQ2FyQXBwEAsqkwIKC0dhbWVQYWRUeXBlEgwK", + "CEtleWJvYXJkEAASEQoNR2xvYmFsR2FtZVBhZBABEg4KClRvdWNoUGFuZWwQ", + "AhIOCgpEUzNDb250cm9sEAMSDgoKRFM0Q29udHJvbBAEEg4KCkRTNUNvbnRy", + "b2wQBRIUChBTd2l0Y2hQcm9Db250cm9sEAYSEAoMU3dpdGNoSm95Q29uEAcS", + "EgoOWEJPWDM2MENvbnRyb2wQCBISCg5YQk9YT05FQ29udHJvbBAJEhEKDVBT", + "Vml0YUNvbnRyb2wQChISCg5XaWlVUGFkQ29udHJvbBALEhQKEFdpaVJlbW90", + "ZUNvbnRyb2wQDBIWChJOaW50ZW5kbzNEU0NvbnRyb2wQDSqiAQoPUm9tUGxh", + "dGZvcm1UeXBlEgsKB0ludmFsaWQQABIHCgNOZXMQARIRCg1NYXN0ZXJfU3lz", + "dGVtEAISDQoJR2FtZV9HZWFyEAMSDAoIR2FtZV9Cb3kQBBISCg5HYW1lX0Jv", + "eV9Db2xvchAFEhEKDUNvbGVjb19WaXNpb24QBhILCgdTQ18zMDAwEAcSCwoH", + "U0dfMTAwMBAIEggKA0FsbBDnBypwCg1Sb29tR2FtZVN0YXRlEhIKDk5vbmVf", + "R2FtZVN0YXRlEAASDAoIT25seUhvc3QQARIRCg1XYWl0UmF3VXBkYXRlEAIS", + "DQoJV2FpdFJlYWR5EAMSCQoFUGF1c2UQBBIQCgxJbk9ubGluZUdhbWUQBSpO", + "ChFMb2dpblJlc3VsdFN0YXR1cxIhCh1Mb2dpblJlc3VsdFN0YXR1c19CYXNl", + "RGVmYXVsdBAAEgYKAk9LEAESDgoKQWNjb3VudEVychACQgJIAWIGcHJvdG8z")); descriptor = pbr::FileDescriptor.FromGeneratedCode(descriptorData, new pbr::FileDescriptor[] { }, new pbr::GeneratedClrTypeInfo(new[] {typeof(global::AxibugProtobuf.CommandID), typeof(global::AxibugProtobuf.ErrorCode), typeof(global::AxibugProtobuf.LoginType), typeof(global::AxibugProtobuf.DeviceType), typeof(global::AxibugProtobuf.GamePadType), typeof(global::AxibugProtobuf.RomPlatformType), typeof(global::AxibugProtobuf.RoomGameState), typeof(global::AxibugProtobuf.LoginResultStatus), }, null, new pbr::GeneratedClrTypeInfo[] { @@ -152,6 +154,7 @@ namespace AxibugProtobuf { new pbr::GeneratedClrTypeInfo(typeof(global::AxibugProtobuf.Protobuf_Pong), global::AxibugProtobuf.Protobuf_Pong.Parser, new[]{ "Seed" }, null, null, null, null), new pbr::GeneratedClrTypeInfo(typeof(global::AxibugProtobuf.Protobuf_Login), global::AxibugProtobuf.Protobuf_Login.Parser, new[]{ "LoginType", "DeviceType", "DeviceStr", "Account", "Password" }, null, null, null, null), new pbr::GeneratedClrTypeInfo(typeof(global::AxibugProtobuf.Protobuf_Login_RESP), global::AxibugProtobuf.Protobuf_Login_RESP.Parser, new[]{ "NickName", "Token", "LastLoginDate", "RegDate", "Status", "UID" }, null, null, null, null), + new pbr::GeneratedClrTypeInfo(typeof(global::AxibugProtobuf.Protobuf_Token_Struct), global::AxibugProtobuf.Protobuf_Token_Struct.Parser, new[]{ "UID", "TokenGenDate", "Seed" }, null, null, null, null), new pbr::GeneratedClrTypeInfo(typeof(global::AxibugProtobuf.Protobuf_UserList), global::AxibugProtobuf.Protobuf_UserList.Parser, null, null, null, null, null), new pbr::GeneratedClrTypeInfo(typeof(global::AxibugProtobuf.Protobuf_UserList_RESP), global::AxibugProtobuf.Protobuf_UserList_RESP.Parser, new[]{ "UserCount", "UserList" }, null, null, null, null), new pbr::GeneratedClrTypeInfo(typeof(global::AxibugProtobuf.Protobuf_UserJoin_RESP), global::AxibugProtobuf.Protobuf_UserJoin_RESP.Parser, new[]{ "UserInfo" }, null, null, null, null), @@ -186,8 +189,8 @@ namespace AxibugProtobuf { new pbr::GeneratedClrTypeInfo(typeof(global::AxibugProtobuf.Protobuf_Room_Player_Ready), global::AxibugProtobuf.Protobuf_Room_Player_Ready.Parser, new[]{ "PushFrameNeedTimeUs", "LoadStateNeedTimeUs", "VideoFrameShowNeedTimeUs", "AudioFramePlayNeedTimeUs" }, null, null, null, null), new pbr::GeneratedClrTypeInfo(typeof(global::AxibugProtobuf.Protobuf_Room_Get_Screen), global::AxibugProtobuf.Protobuf_Room_Get_Screen.Parser, new[]{ "RoomID" }, null, null, null, null), new pbr::GeneratedClrTypeInfo(typeof(global::AxibugProtobuf.Protobuf_Room_Get_Screen_RESP), global::AxibugProtobuf.Protobuf_Room_Get_Screen_RESP.Parser, new[]{ "RoomID", "FrameID", "RawBitmap" }, null, null, null, null), - new pbr::GeneratedClrTypeInfo(typeof(global::AxibugProtobuf.Protobuf_Game_Mark), global::AxibugProtobuf.Protobuf_Game_Mark.Parser, new[]{ "RomID", "State" }, null, null, null, null), - new pbr::GeneratedClrTypeInfo(typeof(global::AxibugProtobuf.Protobuf_Game_Mark_RESP), global::AxibugProtobuf.Protobuf_Game_Mark_RESP.Parser, new[]{ "RomID" }, null, null, null, null) + new pbr::GeneratedClrTypeInfo(typeof(global::AxibugProtobuf.Protobuf_Game_Mark), global::AxibugProtobuf.Protobuf_Game_Mark.Parser, new[]{ "RomID", "Motion" }, null, null, null, null), + new pbr::GeneratedClrTypeInfo(typeof(global::AxibugProtobuf.Protobuf_Game_Mark_RESP), global::AxibugProtobuf.Protobuf_Game_Mark_RESP.Parser, new[]{ "RomID", "IsStar", "Stars" }, null, null, null, null) })); } #endregion @@ -1956,6 +1959,253 @@ namespace AxibugProtobuf { } + /// + ///Token结构,但用于逻辑里配置加密密钥,放置于服务端加密后,发放token + /// + public sealed partial class Protobuf_Token_Struct : pb::IMessage + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + , pb::IBufferMessage + #endif + { + private static readonly pb::MessageParser _parser = new pb::MessageParser(() => new Protobuf_Token_Struct()); + private pb::UnknownFieldSet _unknownFields; + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public static pb::MessageParser Parser { get { return _parser; } } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public static pbr::MessageDescriptor Descriptor { + get { return global::AxibugProtobuf.ProtobufAxibugEmuOnlineReflection.Descriptor.MessageTypes[6]; } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + pbr::MessageDescriptor pb::IMessage.Descriptor { + get { return Descriptor; } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public Protobuf_Token_Struct() { + OnConstruction(); + } + + partial void OnConstruction(); + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public Protobuf_Token_Struct(Protobuf_Token_Struct other) : this() { + uID_ = other.uID_; + tokenGenDate_ = other.tokenGenDate_; + seed_ = other.seed_; + _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public Protobuf_Token_Struct Clone() { + return new Protobuf_Token_Struct(this); + } + + /// Field number for the "UID" field. + public const int UIDFieldNumber = 1; + private long uID_; + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public long UID { + get { return uID_; } + set { + uID_ = value; + } + } + + /// Field number for the "TokenGenDate" field. + public const int TokenGenDateFieldNumber = 2; + private long tokenGenDate_; + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public long TokenGenDate { + get { return tokenGenDate_; } + set { + tokenGenDate_ = value; + } + } + + /// Field number for the "Seed" field. + public const int SeedFieldNumber = 3; + private long seed_; + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public long Seed { + get { return seed_; } + set { + seed_ = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public override bool Equals(object other) { + return Equals(other as Protobuf_Token_Struct); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public bool Equals(Protobuf_Token_Struct other) { + if (ReferenceEquals(other, null)) { + return false; + } + if (ReferenceEquals(other, this)) { + return true; + } + if (UID != other.UID) return false; + if (TokenGenDate != other.TokenGenDate) return false; + if (Seed != other.Seed) return false; + return Equals(_unknownFields, other._unknownFields); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public override int GetHashCode() { + int hash = 1; + if (UID != 0L) hash ^= UID.GetHashCode(); + if (TokenGenDate != 0L) hash ^= TokenGenDate.GetHashCode(); + if (Seed != 0L) hash ^= Seed.GetHashCode(); + if (_unknownFields != null) { + hash ^= _unknownFields.GetHashCode(); + } + return hash; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public override string ToString() { + return pb::JsonFormatter.ToDiagnosticString(this); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public void WriteTo(pb::CodedOutputStream output) { + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + output.WriteRawMessage(this); + #else + if (UID != 0L) { + output.WriteRawTag(8); + output.WriteInt64(UID); + } + if (TokenGenDate != 0L) { + output.WriteRawTag(16); + output.WriteInt64(TokenGenDate); + } + if (Seed != 0L) { + output.WriteRawTag(24); + output.WriteInt64(Seed); + } + if (_unknownFields != null) { + _unknownFields.WriteTo(output); + } + #endif + } + + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + void pb::IBufferMessage.InternalWriteTo(ref pb::WriteContext output) { + if (UID != 0L) { + output.WriteRawTag(8); + output.WriteInt64(UID); + } + if (TokenGenDate != 0L) { + output.WriteRawTag(16); + output.WriteInt64(TokenGenDate); + } + if (Seed != 0L) { + output.WriteRawTag(24); + output.WriteInt64(Seed); + } + if (_unknownFields != null) { + _unknownFields.WriteTo(ref output); + } + } + #endif + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public int CalculateSize() { + int size = 0; + if (UID != 0L) { + size += 1 + pb::CodedOutputStream.ComputeInt64Size(UID); + } + if (TokenGenDate != 0L) { + size += 1 + pb::CodedOutputStream.ComputeInt64Size(TokenGenDate); + } + if (Seed != 0L) { + size += 1 + pb::CodedOutputStream.ComputeInt64Size(Seed); + } + if (_unknownFields != null) { + size += _unknownFields.CalculateSize(); + } + return size; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public void MergeFrom(Protobuf_Token_Struct other) { + if (other == null) { + return; + } + if (other.UID != 0L) { + UID = other.UID; + } + if (other.TokenGenDate != 0L) { + TokenGenDate = other.TokenGenDate; + } + if (other.Seed != 0L) { + Seed = other.Seed; + } + _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public void MergeFrom(pb::CodedInputStream input) { + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + input.ReadRawMessage(this); + #else + uint tag; + while ((tag = input.ReadTag()) != 0) { + switch(tag) { + default: + _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input); + break; + case 8: { + UID = input.ReadInt64(); + break; + } + case 16: { + TokenGenDate = input.ReadInt64(); + break; + } + case 24: { + Seed = input.ReadInt64(); + break; + } + } + } + #endif + } + + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + void pb::IBufferMessage.InternalMergeFrom(ref pb::ParseContext input) { + uint tag; + while ((tag = input.ReadTag()) != 0) { + switch(tag) { + default: + _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input); + break; + case 8: { + UID = input.ReadInt64(); + break; + } + case 16: { + TokenGenDate = input.ReadInt64(); + break; + } + case 24: { + Seed = input.ReadInt64(); + break; + } + } + } + } + #endif + + } + /// ///获取在线用户列表 上行 /// @@ -1971,7 +2221,7 @@ namespace AxibugProtobuf { [global::System.Diagnostics.DebuggerNonUserCodeAttribute] public static pbr::MessageDescriptor Descriptor { - get { return global::AxibugProtobuf.ProtobufAxibugEmuOnlineReflection.Descriptor.MessageTypes[6]; } + get { return global::AxibugProtobuf.ProtobufAxibugEmuOnlineReflection.Descriptor.MessageTypes[7]; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] @@ -2110,7 +2360,7 @@ namespace AxibugProtobuf { [global::System.Diagnostics.DebuggerNonUserCodeAttribute] public static pbr::MessageDescriptor Descriptor { - get { return global::AxibugProtobuf.ProtobufAxibugEmuOnlineReflection.Descriptor.MessageTypes[7]; } + get { return global::AxibugProtobuf.ProtobufAxibugEmuOnlineReflection.Descriptor.MessageTypes[8]; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] @@ -2316,7 +2566,7 @@ namespace AxibugProtobuf { [global::System.Diagnostics.DebuggerNonUserCodeAttribute] public static pbr::MessageDescriptor Descriptor { - get { return global::AxibugProtobuf.ProtobufAxibugEmuOnlineReflection.Descriptor.MessageTypes[8]; } + get { return global::AxibugProtobuf.ProtobufAxibugEmuOnlineReflection.Descriptor.MessageTypes[9]; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] @@ -2503,7 +2753,7 @@ namespace AxibugProtobuf { [global::System.Diagnostics.DebuggerNonUserCodeAttribute] public static pbr::MessageDescriptor Descriptor { - get { return global::AxibugProtobuf.ProtobufAxibugEmuOnlineReflection.Descriptor.MessageTypes[9]; } + get { return global::AxibugProtobuf.ProtobufAxibugEmuOnlineReflection.Descriptor.MessageTypes[10]; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] @@ -2681,7 +2931,7 @@ namespace AxibugProtobuf { [global::System.Diagnostics.DebuggerNonUserCodeAttribute] public static pbr::MessageDescriptor Descriptor { - get { return global::AxibugProtobuf.ProtobufAxibugEmuOnlineReflection.Descriptor.MessageTypes[10]; } + get { return global::AxibugProtobuf.ProtobufAxibugEmuOnlineReflection.Descriptor.MessageTypes[11]; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] @@ -2895,7 +3145,7 @@ namespace AxibugProtobuf { [global::System.Diagnostics.DebuggerNonUserCodeAttribute] public static pbr::MessageDescriptor Descriptor { - get { return global::AxibugProtobuf.ProtobufAxibugEmuOnlineReflection.Descriptor.MessageTypes[11]; } + get { return global::AxibugProtobuf.ProtobufAxibugEmuOnlineReflection.Descriptor.MessageTypes[12]; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] @@ -3151,7 +3401,7 @@ namespace AxibugProtobuf { [global::System.Diagnostics.DebuggerNonUserCodeAttribute] public static pbr::MessageDescriptor Descriptor { - get { return global::AxibugProtobuf.ProtobufAxibugEmuOnlineReflection.Descriptor.MessageTypes[12]; } + get { return global::AxibugProtobuf.ProtobufAxibugEmuOnlineReflection.Descriptor.MessageTypes[13]; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] @@ -3329,7 +3579,7 @@ namespace AxibugProtobuf { [global::System.Diagnostics.DebuggerNonUserCodeAttribute] public static pbr::MessageDescriptor Descriptor { - get { return global::AxibugProtobuf.ProtobufAxibugEmuOnlineReflection.Descriptor.MessageTypes[13]; } + get { return global::AxibugProtobuf.ProtobufAxibugEmuOnlineReflection.Descriptor.MessageTypes[14]; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] @@ -3468,7 +3718,7 @@ namespace AxibugProtobuf { [global::System.Diagnostics.DebuggerNonUserCodeAttribute] public static pbr::MessageDescriptor Descriptor { - get { return global::AxibugProtobuf.ProtobufAxibugEmuOnlineReflection.Descriptor.MessageTypes[14]; } + get { return global::AxibugProtobuf.ProtobufAxibugEmuOnlineReflection.Descriptor.MessageTypes[15]; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] @@ -3655,7 +3905,7 @@ namespace AxibugProtobuf { [global::System.Diagnostics.DebuggerNonUserCodeAttribute] public static pbr::MessageDescriptor Descriptor { - get { return global::AxibugProtobuf.ProtobufAxibugEmuOnlineReflection.Descriptor.MessageTypes[15]; } + get { return global::AxibugProtobuf.ProtobufAxibugEmuOnlineReflection.Descriptor.MessageTypes[16]; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] @@ -3878,7 +4128,7 @@ namespace AxibugProtobuf { [global::System.Diagnostics.DebuggerNonUserCodeAttribute] public static pbr::MessageDescriptor Descriptor { - get { return global::AxibugProtobuf.ProtobufAxibugEmuOnlineReflection.Descriptor.MessageTypes[16]; } + get { return global::AxibugProtobuf.ProtobufAxibugEmuOnlineReflection.Descriptor.MessageTypes[17]; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] @@ -4014,7 +4264,7 @@ namespace AxibugProtobuf { [global::System.Diagnostics.DebuggerNonUserCodeAttribute] public static pbr::MessageDescriptor Descriptor { - get { return global::AxibugProtobuf.ProtobufAxibugEmuOnlineReflection.Descriptor.MessageTypes[17]; } + get { return global::AxibugProtobuf.ProtobufAxibugEmuOnlineReflection.Descriptor.MessageTypes[18]; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] @@ -4178,7 +4428,7 @@ namespace AxibugProtobuf { [global::System.Diagnostics.DebuggerNonUserCodeAttribute] public static pbr::MessageDescriptor Descriptor { - get { return global::AxibugProtobuf.ProtobufAxibugEmuOnlineReflection.Descriptor.MessageTypes[18]; } + get { return global::AxibugProtobuf.ProtobufAxibugEmuOnlineReflection.Descriptor.MessageTypes[19]; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] @@ -4648,7 +4898,7 @@ namespace AxibugProtobuf { [global::System.Diagnostics.DebuggerNonUserCodeAttribute] public static pbr::MessageDescriptor Descriptor { - get { return global::AxibugProtobuf.ProtobufAxibugEmuOnlineReflection.Descriptor.MessageTypes[19]; } + get { return global::AxibugProtobuf.ProtobufAxibugEmuOnlineReflection.Descriptor.MessageTypes[20]; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] @@ -4979,7 +5229,7 @@ namespace AxibugProtobuf { [global::System.Diagnostics.DebuggerNonUserCodeAttribute] public static pbr::MessageDescriptor Descriptor { - get { return global::AxibugProtobuf.ProtobufAxibugEmuOnlineReflection.Descriptor.MessageTypes[20]; } + get { return global::AxibugProtobuf.ProtobufAxibugEmuOnlineReflection.Descriptor.MessageTypes[21]; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] @@ -5202,7 +5452,7 @@ namespace AxibugProtobuf { [global::System.Diagnostics.DebuggerNonUserCodeAttribute] public static pbr::MessageDescriptor Descriptor { - get { return global::AxibugProtobuf.ProtobufAxibugEmuOnlineReflection.Descriptor.MessageTypes[21]; } + get { return global::AxibugProtobuf.ProtobufAxibugEmuOnlineReflection.Descriptor.MessageTypes[22]; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] @@ -5455,7 +5705,7 @@ namespace AxibugProtobuf { [global::System.Diagnostics.DebuggerNonUserCodeAttribute] public static pbr::MessageDescriptor Descriptor { - get { return global::AxibugProtobuf.ProtobufAxibugEmuOnlineReflection.Descriptor.MessageTypes[22]; } + get { return global::AxibugProtobuf.ProtobufAxibugEmuOnlineReflection.Descriptor.MessageTypes[23]; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] @@ -5669,7 +5919,7 @@ namespace AxibugProtobuf { [global::System.Diagnostics.DebuggerNonUserCodeAttribute] public static pbr::MessageDescriptor Descriptor { - get { return global::AxibugProtobuf.ProtobufAxibugEmuOnlineReflection.Descriptor.MessageTypes[23]; } + get { return global::AxibugProtobuf.ProtobufAxibugEmuOnlineReflection.Descriptor.MessageTypes[24]; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] @@ -5961,7 +6211,7 @@ namespace AxibugProtobuf { [global::System.Diagnostics.DebuggerNonUserCodeAttribute] public static pbr::MessageDescriptor Descriptor { - get { return global::AxibugProtobuf.ProtobufAxibugEmuOnlineReflection.Descriptor.MessageTypes[24]; } + get { return global::AxibugProtobuf.ProtobufAxibugEmuOnlineReflection.Descriptor.MessageTypes[25]; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] @@ -6169,7 +6419,7 @@ namespace AxibugProtobuf { [global::System.Diagnostics.DebuggerNonUserCodeAttribute] public static pbr::MessageDescriptor Descriptor { - get { return global::AxibugProtobuf.ProtobufAxibugEmuOnlineReflection.Descriptor.MessageTypes[25]; } + get { return global::AxibugProtobuf.ProtobufAxibugEmuOnlineReflection.Descriptor.MessageTypes[26]; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] @@ -6353,7 +6603,7 @@ namespace AxibugProtobuf { [global::System.Diagnostics.DebuggerNonUserCodeAttribute] public static pbr::MessageDescriptor Descriptor { - get { return global::AxibugProtobuf.ProtobufAxibugEmuOnlineReflection.Descriptor.MessageTypes[26]; } + get { return global::AxibugProtobuf.ProtobufAxibugEmuOnlineReflection.Descriptor.MessageTypes[27]; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] @@ -6528,7 +6778,7 @@ namespace AxibugProtobuf { [global::System.Diagnostics.DebuggerNonUserCodeAttribute] public static pbr::MessageDescriptor Descriptor { - get { return global::AxibugProtobuf.ProtobufAxibugEmuOnlineReflection.Descriptor.MessageTypes[27]; } + get { return global::AxibugProtobuf.ProtobufAxibugEmuOnlineReflection.Descriptor.MessageTypes[28]; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] @@ -6712,7 +6962,7 @@ namespace AxibugProtobuf { [global::System.Diagnostics.DebuggerNonUserCodeAttribute] public static pbr::MessageDescriptor Descriptor { - get { return global::AxibugProtobuf.ProtobufAxibugEmuOnlineReflection.Descriptor.MessageTypes[28]; } + get { return global::AxibugProtobuf.ProtobufAxibugEmuOnlineReflection.Descriptor.MessageTypes[29]; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] @@ -6887,7 +7137,7 @@ namespace AxibugProtobuf { [global::System.Diagnostics.DebuggerNonUserCodeAttribute] public static pbr::MessageDescriptor Descriptor { - get { return global::AxibugProtobuf.ProtobufAxibugEmuOnlineReflection.Descriptor.MessageTypes[29]; } + get { return global::AxibugProtobuf.ProtobufAxibugEmuOnlineReflection.Descriptor.MessageTypes[30]; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] @@ -7062,7 +7312,7 @@ namespace AxibugProtobuf { [global::System.Diagnostics.DebuggerNonUserCodeAttribute] public static pbr::MessageDescriptor Descriptor { - get { return global::AxibugProtobuf.ProtobufAxibugEmuOnlineReflection.Descriptor.MessageTypes[30]; } + get { return global::AxibugProtobuf.ProtobufAxibugEmuOnlineReflection.Descriptor.MessageTypes[31]; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] @@ -7246,7 +7496,7 @@ namespace AxibugProtobuf { [global::System.Diagnostics.DebuggerNonUserCodeAttribute] public static pbr::MessageDescriptor Descriptor { - get { return global::AxibugProtobuf.ProtobufAxibugEmuOnlineReflection.Descriptor.MessageTypes[31]; } + get { return global::AxibugProtobuf.ProtobufAxibugEmuOnlineReflection.Descriptor.MessageTypes[32]; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] @@ -7410,7 +7660,7 @@ namespace AxibugProtobuf { [global::System.Diagnostics.DebuggerNonUserCodeAttribute] public static pbr::MessageDescriptor Descriptor { - get { return global::AxibugProtobuf.ProtobufAxibugEmuOnlineReflection.Descriptor.MessageTypes[32]; } + get { return global::AxibugProtobuf.ProtobufAxibugEmuOnlineReflection.Descriptor.MessageTypes[33]; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] @@ -7663,7 +7913,7 @@ namespace AxibugProtobuf { [global::System.Diagnostics.DebuggerNonUserCodeAttribute] public static pbr::MessageDescriptor Descriptor { - get { return global::AxibugProtobuf.ProtobufAxibugEmuOnlineReflection.Descriptor.MessageTypes[33]; } + get { return global::AxibugProtobuf.ProtobufAxibugEmuOnlineReflection.Descriptor.MessageTypes[34]; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] @@ -7799,7 +8049,7 @@ namespace AxibugProtobuf { [global::System.Diagnostics.DebuggerNonUserCodeAttribute] public static pbr::MessageDescriptor Descriptor { - get { return global::AxibugProtobuf.ProtobufAxibugEmuOnlineReflection.Descriptor.MessageTypes[34]; } + get { return global::AxibugProtobuf.ProtobufAxibugEmuOnlineReflection.Descriptor.MessageTypes[35]; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] @@ -8013,7 +8263,7 @@ namespace AxibugProtobuf { [global::System.Diagnostics.DebuggerNonUserCodeAttribute] public static pbr::MessageDescriptor Descriptor { - get { return global::AxibugProtobuf.ProtobufAxibugEmuOnlineReflection.Descriptor.MessageTypes[35]; } + get { return global::AxibugProtobuf.ProtobufAxibugEmuOnlineReflection.Descriptor.MessageTypes[36]; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] @@ -8188,7 +8438,7 @@ namespace AxibugProtobuf { [global::System.Diagnostics.DebuggerNonUserCodeAttribute] public static pbr::MessageDescriptor Descriptor { - get { return global::AxibugProtobuf.ProtobufAxibugEmuOnlineReflection.Descriptor.MessageTypes[36]; } + get { return global::AxibugProtobuf.ProtobufAxibugEmuOnlineReflection.Descriptor.MessageTypes[37]; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] @@ -8324,7 +8574,7 @@ namespace AxibugProtobuf { [global::System.Diagnostics.DebuggerNonUserCodeAttribute] public static pbr::MessageDescriptor Descriptor { - get { return global::AxibugProtobuf.ProtobufAxibugEmuOnlineReflection.Descriptor.MessageTypes[37]; } + get { return global::AxibugProtobuf.ProtobufAxibugEmuOnlineReflection.Descriptor.MessageTypes[38]; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] @@ -8616,7 +8866,7 @@ namespace AxibugProtobuf { [global::System.Diagnostics.DebuggerNonUserCodeAttribute] public static pbr::MessageDescriptor Descriptor { - get { return global::AxibugProtobuf.ProtobufAxibugEmuOnlineReflection.Descriptor.MessageTypes[38]; } + get { return global::AxibugProtobuf.ProtobufAxibugEmuOnlineReflection.Descriptor.MessageTypes[39]; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] @@ -8791,7 +9041,7 @@ namespace AxibugProtobuf { [global::System.Diagnostics.DebuggerNonUserCodeAttribute] public static pbr::MessageDescriptor Descriptor { - get { return global::AxibugProtobuf.ProtobufAxibugEmuOnlineReflection.Descriptor.MessageTypes[39]; } + get { return global::AxibugProtobuf.ProtobufAxibugEmuOnlineReflection.Descriptor.MessageTypes[40]; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] @@ -9044,7 +9294,7 @@ namespace AxibugProtobuf { [global::System.Diagnostics.DebuggerNonUserCodeAttribute] public static pbr::MessageDescriptor Descriptor { - get { return global::AxibugProtobuf.ProtobufAxibugEmuOnlineReflection.Descriptor.MessageTypes[40]; } + get { return global::AxibugProtobuf.ProtobufAxibugEmuOnlineReflection.Descriptor.MessageTypes[41]; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] @@ -9062,7 +9312,7 @@ namespace AxibugProtobuf { [global::System.Diagnostics.DebuggerNonUserCodeAttribute] public Protobuf_Game_Mark(Protobuf_Game_Mark other) : this() { romID_ = other.romID_; - state_ = other.state_; + motion_ = other.motion_; _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields); } @@ -9085,17 +9335,17 @@ namespace AxibugProtobuf { } } - /// Field number for the "state" field. - public const int StateFieldNumber = 2; - private int state_; + /// Field number for the "motion" field. + public const int MotionFieldNumber = 2; + private int motion_; /// - ///[0]收藏 [1]取消收藏 + ///[0]取消收藏[1]收藏 /// [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public int State { - get { return state_; } + public int Motion { + get { return motion_; } set { - state_ = value; + motion_ = value; } } @@ -9113,7 +9363,7 @@ namespace AxibugProtobuf { return true; } if (RomID != other.RomID) return false; - if (State != other.State) return false; + if (Motion != other.Motion) return false; return Equals(_unknownFields, other._unknownFields); } @@ -9121,7 +9371,7 @@ namespace AxibugProtobuf { public override int GetHashCode() { int hash = 1; if (RomID != 0) hash ^= RomID.GetHashCode(); - if (State != 0) hash ^= State.GetHashCode(); + if (Motion != 0) hash ^= Motion.GetHashCode(); if (_unknownFields != null) { hash ^= _unknownFields.GetHashCode(); } @@ -9142,9 +9392,9 @@ namespace AxibugProtobuf { output.WriteRawTag(8); output.WriteInt32(RomID); } - if (State != 0) { + if (Motion != 0) { output.WriteRawTag(16); - output.WriteInt32(State); + output.WriteInt32(Motion); } if (_unknownFields != null) { _unknownFields.WriteTo(output); @@ -9159,9 +9409,9 @@ namespace AxibugProtobuf { output.WriteRawTag(8); output.WriteInt32(RomID); } - if (State != 0) { + if (Motion != 0) { output.WriteRawTag(16); - output.WriteInt32(State); + output.WriteInt32(Motion); } if (_unknownFields != null) { _unknownFields.WriteTo(ref output); @@ -9175,8 +9425,8 @@ namespace AxibugProtobuf { if (RomID != 0) { size += 1 + pb::CodedOutputStream.ComputeInt32Size(RomID); } - if (State != 0) { - size += 1 + pb::CodedOutputStream.ComputeInt32Size(State); + if (Motion != 0) { + size += 1 + pb::CodedOutputStream.ComputeInt32Size(Motion); } if (_unknownFields != null) { size += _unknownFields.CalculateSize(); @@ -9192,8 +9442,8 @@ namespace AxibugProtobuf { if (other.RomID != 0) { RomID = other.RomID; } - if (other.State != 0) { - State = other.State; + if (other.Motion != 0) { + Motion = other.Motion; } _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields); } @@ -9214,7 +9464,7 @@ namespace AxibugProtobuf { break; } case 16: { - State = input.ReadInt32(); + Motion = input.ReadInt32(); break; } } @@ -9236,7 +9486,7 @@ namespace AxibugProtobuf { break; } case 16: { - State = input.ReadInt32(); + Motion = input.ReadInt32(); break; } } @@ -9258,7 +9508,7 @@ namespace AxibugProtobuf { [global::System.Diagnostics.DebuggerNonUserCodeAttribute] public static pbr::MessageDescriptor Descriptor { - get { return global::AxibugProtobuf.ProtobufAxibugEmuOnlineReflection.Descriptor.MessageTypes[41]; } + get { return global::AxibugProtobuf.ProtobufAxibugEmuOnlineReflection.Descriptor.MessageTypes[42]; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] @@ -9276,6 +9526,8 @@ namespace AxibugProtobuf { [global::System.Diagnostics.DebuggerNonUserCodeAttribute] public Protobuf_Game_Mark_RESP(Protobuf_Game_Mark_RESP other) : this() { romID_ = other.romID_; + isStar_ = other.isStar_; + stars_ = other.stars_; _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields); } @@ -9298,6 +9550,34 @@ namespace AxibugProtobuf { } } + /// Field number for the "IsStar" field. + public const int IsStarFieldNumber = 2; + private int isStar_; + /// + ///当前状态 [0]未收藏[1]已收藏 + /// + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public int IsStar { + get { return isStar_; } + set { + isStar_ = value; + } + } + + /// Field number for the "stars" field. + public const int StarsFieldNumber = 3; + private int stars_; + /// + ///当前收藏计数 + /// + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public int Stars { + get { return stars_; } + set { + stars_ = value; + } + } + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] public override bool Equals(object other) { return Equals(other as Protobuf_Game_Mark_RESP); @@ -9312,6 +9592,8 @@ namespace AxibugProtobuf { return true; } if (RomID != other.RomID) return false; + if (IsStar != other.IsStar) return false; + if (Stars != other.Stars) return false; return Equals(_unknownFields, other._unknownFields); } @@ -9319,6 +9601,8 @@ namespace AxibugProtobuf { public override int GetHashCode() { int hash = 1; if (RomID != 0) hash ^= RomID.GetHashCode(); + if (IsStar != 0) hash ^= IsStar.GetHashCode(); + if (Stars != 0) hash ^= Stars.GetHashCode(); if (_unknownFields != null) { hash ^= _unknownFields.GetHashCode(); } @@ -9339,6 +9623,14 @@ namespace AxibugProtobuf { output.WriteRawTag(8); output.WriteInt32(RomID); } + if (IsStar != 0) { + output.WriteRawTag(16); + output.WriteInt32(IsStar); + } + if (Stars != 0) { + output.WriteRawTag(24); + output.WriteInt32(Stars); + } if (_unknownFields != null) { _unknownFields.WriteTo(output); } @@ -9352,6 +9644,14 @@ namespace AxibugProtobuf { output.WriteRawTag(8); output.WriteInt32(RomID); } + if (IsStar != 0) { + output.WriteRawTag(16); + output.WriteInt32(IsStar); + } + if (Stars != 0) { + output.WriteRawTag(24); + output.WriteInt32(Stars); + } if (_unknownFields != null) { _unknownFields.WriteTo(ref output); } @@ -9364,6 +9664,12 @@ namespace AxibugProtobuf { if (RomID != 0) { size += 1 + pb::CodedOutputStream.ComputeInt32Size(RomID); } + if (IsStar != 0) { + size += 1 + pb::CodedOutputStream.ComputeInt32Size(IsStar); + } + if (Stars != 0) { + size += 1 + pb::CodedOutputStream.ComputeInt32Size(Stars); + } if (_unknownFields != null) { size += _unknownFields.CalculateSize(); } @@ -9378,6 +9684,12 @@ namespace AxibugProtobuf { if (other.RomID != 0) { RomID = other.RomID; } + if (other.IsStar != 0) { + IsStar = other.IsStar; + } + if (other.Stars != 0) { + Stars = other.Stars; + } _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields); } @@ -9396,6 +9708,14 @@ namespace AxibugProtobuf { RomID = input.ReadInt32(); break; } + case 16: { + IsStar = input.ReadInt32(); + break; + } + case 24: { + Stars = input.ReadInt32(); + break; + } } } #endif @@ -9414,6 +9734,14 @@ namespace AxibugProtobuf { RomID = input.ReadInt32(); break; } + case 16: { + IsStar = input.ReadInt32(); + break; + } + case 24: { + Stars = input.ReadInt32(); + break; + } } } } diff --git a/AxibugEmuOnline.Web/AxibugEmuOnline.Web.csproj b/AxibugEmuOnline.Web/AxibugEmuOnline.Web.csproj index e21bb7ea..0f3128a5 100644 --- a/AxibugEmuOnline.Web/AxibugEmuOnline.Web.csproj +++ b/AxibugEmuOnline.Web/AxibugEmuOnline.Web.csproj @@ -7,6 +7,7 @@ + diff --git a/AxibugEmuOnline.Web/Common/AESHelper.cs b/AxibugEmuOnline.Web/Common/AESHelper.cs new file mode 100644 index 00000000..3d3bfeb1 --- /dev/null +++ b/AxibugEmuOnline.Web/Common/AESHelper.cs @@ -0,0 +1,147 @@ +using System.Security.Cryptography; +using System.Text; + +namespace AxibugEmuOnline.Web.Common +{ + public static class AESHelper + { + static byte[] currKey; + static byte[] currIV; + + public static void LoadKeyIVCfg(string key, string vi) + { + try + { + currKey = CommaSeparatedStringToByteArray(key); + currIV = CommaSeparatedStringToByteArray(key); + } + catch (Exception ex) + { + Console.WriteLine("aeskeyvi 配置错误"+ex.Message); + } + } + + public static void LoadKeyIVCfg(byte[] key, byte[] vi) + { + currKey = key; + currIV = key; + } + + public static void GenAesKeyIV() + { + Aes aes = Aes.Create(); + aes.KeySize = 128; + aes.Mode = CipherMode.CBC; + aes.Padding = PaddingMode.PKCS7; + aes.GenerateKey(); + aes.GenerateIV(); + + string key = ByteArrayToCommaSeparatedString(aes.Key); + Console.WriteLine("key:"); + Console.WriteLine(key); + string vi = ByteArrayToCommaSeparatedString(aes.IV); + Console.WriteLine("iv:"); + Console.WriteLine(vi); + + byte[] temp = new byte[255]; + for (byte i = 0; i < temp.Length; i++) + temp[i] = i; + byte[] EncodeData = Encrypt(temp, aes.Key, aes.IV); + byte[] DecodeData = Decrypt(EncodeData, aes.Key, aes.IV); + + bool bOk = true; + if (temp.Length != DecodeData.Length) + { + bOk = false; + } + else + { + for (int i = 0; i < temp.Length; i++) + { + if (temp[i] != DecodeData[i]) + { + bOk = false; + break; + } + } + } + + Console.WriteLine($"密钥和填充加解密验证:{bOk}"); + } + + public static string ByteArrayToCommaSeparatedString(byte[] byteArray) + { + if (byteArray == null) + throw new ArgumentNullException(nameof(byteArray)); + + StringBuilder sb = new StringBuilder(); + + for (int i = 0; i < byteArray.Length; i++) + { + sb.Append(byteArray[i]); + + // 不是最后一个元素时,添加逗号 + if (i < byteArray.Length - 1) + { + sb.Append(","); + } + } + + return sb.ToString(); + } + + public static byte[] CommaSeparatedStringToByteArray(string commaSeparatedString) + { + if (string.IsNullOrEmpty(commaSeparatedString)) + throw new ArgumentNullException(nameof(commaSeparatedString)); + + // 去除字符串两端的空格,并按逗号分割 + string[] byteStrings = commaSeparatedString.Trim().Split(','); + + // 将每个字符串转换成byte,并存储到数组中 + byte[] byteArray = byteStrings.Select(byteString => + { + if (!byte.TryParse(byteString, out byte result)) + throw new FormatException($"无法将字符串 '{byteString}' 解析为字节。"); + return result; + }).ToArray(); + + return byteArray; + } + + public static byte[] Encrypt(byte[] toEncryptArray) + { + return Encrypt(toEncryptArray, currKey, currIV); + } + + public static byte[] Encrypt(byte[] toEncryptArray, byte[] keyArray, byte[] ivArray) + { + Aes rDel = Aes.Create(); + rDel.Key = keyArray; + rDel.IV = ivArray; + rDel.Mode = CipherMode.CBC; + rDel.Padding = PaddingMode.PKCS7; + ICryptoTransform cTransform = rDel.CreateEncryptor(); + byte[] resultArray = cTransform.TransformFinalBlock(toEncryptArray, 0, toEncryptArray.Length); + return resultArray; + } + + public static byte[] Decrypt(byte[] toDecrypt) + { + return Decrypt(toDecrypt, currKey, currIV); + } + + public static byte[] Decrypt(byte[] toDecrypt, byte[] keyArray, byte[] ivArray) + { + Aes rDel = Aes.Create(); + rDel.Key = keyArray; + rDel.IV = ivArray; + rDel.Mode = CipherMode.CBC; + rDel.Padding = PaddingMode.PKCS7; + ICryptoTransform cTransform = rDel.CreateDecryptor(); + byte[] resultArray = cTransform.TransformFinalBlock(toDecrypt, 0, toDecrypt.Length); + return resultArray; + } + + } +} \ No newline at end of file diff --git a/AxibugEmuOnline.Web/Common/Config.cs b/AxibugEmuOnline.Web/Common/Config.cs index 9c6caae3..139d4041 100644 --- a/AxibugEmuOnline.Web/Common/Config.cs +++ b/AxibugEmuOnline.Web/Common/Config.cs @@ -19,6 +19,8 @@ namespace AxibugEmuOnline.Web.Common public string ServerIp { get; set; } public ushort ServerPort { get; set; } public string ClientVersion { get; set; } + public string AesKey { get; set; } + public string AesIv { get; set; } } diff --git a/AxibugEmuOnline.Web/Common/ProtoBufHelper.cs b/AxibugEmuOnline.Web/Common/ProtoBufHelper.cs new file mode 100644 index 00000000..b4451fc2 --- /dev/null +++ b/AxibugEmuOnline.Web/Common/ProtoBufHelper.cs @@ -0,0 +1,22 @@ +using Google.Protobuf; + +namespace AxibugEmuOnline.Web.Common +{ + public static class ProtoBufHelper + { + + public static byte[] Serizlize(IMessage msg) + { + return msg.ToByteArray(); + } + + public static T DeSerizlize(byte[] bytes) + { + var msgType = typeof(T); + object msg = Activator.CreateInstance(msgType); + ((IMessage)msg).MergeFrom(bytes); + return (T)msg; + } + } + +} diff --git a/AxibugEmuOnline.Web/Common/Haoyue_SQLPoolManager.cs b/AxibugEmuOnline.Web/Common/SQLPool.cs similarity index 69% rename from AxibugEmuOnline.Web/Common/Haoyue_SQLPoolManager.cs rename to AxibugEmuOnline.Web/Common/SQLPool.cs index 329f2b8e..3dae9816 100644 --- a/AxibugEmuOnline.Web/Common/Haoyue_SQLPoolManager.cs +++ b/AxibugEmuOnline.Web/Common/SQLPool.cs @@ -3,18 +3,16 @@ using MySql.Data.MySqlClient; namespace AxibugEmuOnline.Web.Common { - public static class Haoyue_SQLPoolManager + public static class SQLPool { - private static Queue SQLPool = new Queue(); - private static Dictionary _OutOfSQLPool = new Dictionary(); - private static Dictionary _DicSqlRunFunNum = new Dictionary(); - private static Dictionary _DicTimeOutSqlRunFunNum = new Dictionary(); - private const int DefaultCount = 1; - private const int MaxLimit = 5; - private static readonly object _sync = new object(); - - - private static MySqlConnectionStringBuilder connBuilder; + static Queue _ConQueue = new Queue(); + static Dictionary _OutOfSQLPool = new Dictionary(); + static Dictionary _DicSqlRunFunNum = new Dictionary(); + static Dictionary _DicTimeOutSqlRunFunNum = new Dictionary(); + const int DefaultCount = 1; + const int MaxLimit = 5; + static readonly object _sync = new object(); + static MySqlConnectionStringBuilder connBuilder; public static void InitConnMgr() { @@ -34,9 +32,9 @@ namespace AxibugEmuOnline.Web.Common { MySqlConnection _conn = conn(); _conn.Open(); - SQLPool.Enqueue(_conn); + _ConQueue.Enqueue(_conn); } - Console.WriteLine("SQLPool初始化完毕,连接数" + SQLPool.Count); + Console.WriteLine("SQLPool初始化完毕,连接数" + _ConQueue.Count); } public static MySqlConnection conn() { @@ -55,23 +53,47 @@ namespace AxibugEmuOnline.Web.Common { _DicSqlRunFunNum[FuncStr] = 1L; } - MySqlConnection _conn; - if (SQLPool.Count < 1) + MySqlConnection _conn = null; + if (_ConQueue.Count < 1) { - Console.WriteLine("[DequeueSQLConn]创建新的SQLPool.Count>" + SQLPool.Count); + Console.WriteLine("[DequeueSQLConn]创建新的SQLPool.Count>" + _ConQueue.Count); _conn = conn(); _conn.Open(); } else { - Console.WriteLine("[DequeueSQLConn]取出一个SQLCount.Count>" + SQLPool.Count); - _conn = SQLPool.Dequeue(); + MySqlConnection temp = null; + while (_ConQueue.Count > 0) + { + Console.WriteLine("[DequeueSQLConn]取出一个SQLCount.Count>" + _ConQueue.Count); + temp = _ConQueue.Dequeue(); + if (temp.State == System.Data.ConnectionState.Closed) + { + Console.WriteLine("[DequeueSQLConn]已经断开SQLCount.Count>" + _ConQueue.Count); + temp.Dispose(); + temp = null; + continue; + } + } + + if (temp != null) + { + _conn = temp; + } + else + { + Console.WriteLine("[DequeueSQLConn]连接池全部已断开,重新创建连接"); + _conn = conn(); + _conn.Open(); + } } + _OutOfSQLPool.Add(_conn, new Haoyue_PoolTime { time = time(), FuncStr = FuncStr }); + return _conn; } } @@ -87,16 +109,17 @@ namespace AxibugEmuOnline.Web.Common { Console.WriteLine("出队遗漏的数据出现了!"); } - if (SQLPool.Count > MaxLimit) + if (_ConQueue.Count > MaxLimit) { - Console.WriteLine("已经不需要回收了,多余了,SQLPool.Count>" + SQLPool.Count); + Console.WriteLine("已经不需要回收了,多余了,SQLPool.Count>" + _ConQueue.Count); BackConn.Close(); + BackConn.Dispose(); BackConn = null; } else { - SQLPool.Enqueue(BackConn); - Console.WriteLine("回收SQLPool.Count>" + SQLPool.Count); + _ConQueue.Enqueue(BackConn); + Console.WriteLine("回收SQLPool.Count>" + _ConQueue.Count); } } } @@ -119,15 +142,15 @@ namespace AxibugEmuOnline.Web.Common { _DicTimeOutSqlRunFunNum[o2.Value.FuncStr] = 1L; } - if (SQLPool.Count > MaxLimit) + if (_ConQueue.Count > MaxLimit) { - Console.WriteLine("[超时回收]" + o2.Value.FuncStr + "已经不需要回收了,多余了,SQLPool.Count>" + SQLPool.Count); + Console.WriteLine("[超时回收]" + o2.Value.FuncStr + "已经不需要回收了,多余了,SQLPool.Count>" + _ConQueue.Count); o2.Key.Close(); } else { - Console.WriteLine("[超时回收]" + o2.Value.FuncStr + "回收SQLPool.Count>" + SQLPool.Count); - SQLPool.Enqueue(o2.Key); + Console.WriteLine("[超时回收]" + o2.Value.FuncStr + "回收SQLPool.Count>" + _ConQueue.Count); + _ConQueue.Enqueue(o2.Key); } removeTemp.Add(o2.Key); } @@ -148,7 +171,7 @@ namespace AxibugEmuOnline.Web.Common Console.WriteLine("[超时回收]_OutOfSQLPool清理异常???????"); } } - Console.WriteLine("[超时回收]处理结束SQLPool.Count>" + SQLPool.Count); + Console.WriteLine("[超时回收]处理结束SQLPool.Count>" + _ConQueue.Count); } } public static long time() diff --git a/AxibugEmuOnline.Web/Controllers/ApiController.cs b/AxibugEmuOnline.Web/Controllers/ApiController.cs index dc4c17be..5b8306de 100644 --- a/AxibugEmuOnline.Web/Controllers/ApiController.cs +++ b/AxibugEmuOnline.Web/Controllers/ApiController.cs @@ -1,7 +1,9 @@ using AxibugEmuOnline.Web.Common; +using AxibugProtobuf; using Microsoft.AspNetCore.Mvc; using MySql.Data.MySqlClient; using Mysqlx.Crud; +using System.Reflection.PortableExecutable; namespace AxibugEmuOnline.Web.Controllers { @@ -14,6 +16,27 @@ namespace AxibugEmuOnline.Web.Controllers _logger = logger; } + static bool TryDecrypToken(string tokenStr,out Protobuf_Token_Struct tokenData) + { + if (string.IsNullOrEmpty(tokenStr) || string.IsNullOrEmpty(tokenStr.Trim())) + { + tokenData = null; + return false; + } + try + { + byte[] encryptData = Convert.FromBase64String(tokenStr.Trim()); + byte[] decryptData = AESHelper.Decrypt(encryptData); + tokenData = ProtoBufHelper.DeSerizlize(decryptData); + return true; + } + catch + { + tokenData = null; + return false; + } + } + [HttpGet] public JsonResult CheckStandInfo(int platform, string version) { @@ -29,15 +52,21 @@ namespace AxibugEmuOnline.Web.Controllers } [HttpGet] - public JsonResult RomList(string SearchKey, int Ptype, int GType, int Page, int PageSize) + public JsonResult RomList(string SearchKey, int Ptype, int GType, int Page, int PageSize,string Token) { + long UID = 0; + if (TryDecrypToken(Token, out Protobuf_Token_Struct tokenData)) + { + UID = tokenData.UID; + } + string searchPattern = $"%{SearchKey}%"; Resp_GameList resp = new Resp_GameList(); resp.gameList = new List(); - MySqlConnection conn = Haoyue_SQLPoolManager.DequeueSQLConn("RomList"); + MySqlConnection conn = SQLPool.DequeueSQLConn("RomList"); { string platformCond = ""; - if (GType > 0) + if (GType > (int)RomPlatformType.Invalid && GType < (int)RomPlatformType.All) { platformCond = $" and PlatformType = '{Ptype}' "; } @@ -90,7 +119,7 @@ namespace AxibugEmuOnline.Web.Controllers int orderIndex = Page * PageSize; while (reader.Read()) { - resp.gameList.Add(new Resp_RomInfo() + Resp_RomInfo data = new Resp_RomInfo() { orderid = orderIndex++, id = reader.GetInt32(0), @@ -103,21 +132,133 @@ namespace AxibugEmuOnline.Web.Controllers playcount = reader.GetInt32(7), stars = reader.GetInt32(8), ptype = reader.GetInt32(9), - }); + }; + + if (UID > 0) + { + if (CheckIsRomStar(data.id, UID)) + data.isStar = 1; + } + + resp.gameList.Add(data); } } } - Haoyue_SQLPoolManager.EnqueueSQLConn(conn); + SQLPool.EnqueueSQLConn(conn); + } + return new JsonResult(resp); + } + + + [HttpGet] + public JsonResult MarkList(string SearchKey, int Ptype, int GType, int Page, int PageSize, string Token) + { + long UID = 0; + if (TryDecrypToken(Token, out Protobuf_Token_Struct tokenData)) + { + UID = tokenData.UID; + } + + string searchPattern = $"%{SearchKey}%"; + Resp_GameList resp = new Resp_GameList(); + resp.gameList = new List(); + MySqlConnection conn = SQLPool.DequeueSQLConn("MarkList"); + { + string platformCond = ""; + if (GType > (int)RomPlatformType.Invalid && GType < (int)RomPlatformType.All) + { + platformCond = $" and romlist.PlatformType = '{Ptype}' "; + } + + GameType SearchGType = (GameType)GType; + string GameTypeCond = ""; + switch (SearchGType) + { + case GameType.NONE: + GameTypeCond = string.Empty; + break; + case GameType.ALLINONE: + GameTypeCond = $" and romlist.GameType = 'Ͽ' "; + break; + default: + GameTypeCond = $" and romlist.GameType = '{SearchGType.ToString()}' "; + break; + } + + string query = "SELECT count(romlist.id) from rom_stars LEFT JOIN romlist on romlist.Id = rom_stars.id where rom_stars.uid = ?uid and romlist.`Name` like ?searchPattern " + platformCond + GameTypeCond; + using (var command = new MySqlCommand(query, conn)) + { + // òֵ + command.Parameters.AddWithValue("?uid", UID); + command.Parameters.AddWithValue("?searchPattern", searchPattern); + // ִвѯ + using (var reader = command.ExecuteReader()) + { + while (reader.Read()) + { + resp.resultAllCount = reader.GetInt32(0); + resp.page = Page; + resp.maxPage = (int)Math.Ceiling((float)resp.resultAllCount / PageSize); + } + } + } + + + string HotOrderBy = "ORDER BY playcount DESC, id ASC"; + + query = $"SELECT romlist.id,romlist.`Name`,romlist.GameType,romlist.Note,romlist.RomUrl,romlist.ImgUrl,romlist.`Hash`,romlist.`playcount`,romlist.`stars`,romlist.`PlatformType` from rom_stars LEFT JOIN romlist on romlist.Id = rom_stars.id where rom_stars.uid = ?uid and romlist.`Name` like ?searchPattern {platformCond} {GameTypeCond} {HotOrderBy} LIMIT ?offset, ?pageSize;"; + using (var command = new MySqlCommand(query, conn)) + { + // òֵ + command.Parameters.AddWithValue("?uid", UID); + command.Parameters.AddWithValue("?searchPattern", searchPattern); + command.Parameters.AddWithValue("?offset", Page * PageSize); + command.Parameters.AddWithValue("?pageSize", PageSize); + // ִвѯ + using (var reader = command.ExecuteReader()) + { + int orderIndex = Page * PageSize; + while (reader.Read()) + { + Resp_RomInfo data = new Resp_RomInfo() + { + orderid = orderIndex++, + id = reader.GetInt32(0), + romName = !reader.IsDBNull(1) ? reader.GetString(1) : string.Empty, + gType = !reader.IsDBNull(2) ? reader.GetString(2) : string.Empty, + desc = !reader.IsDBNull(3) ? reader.GetString(3) : string.Empty, + url = !reader.IsDBNull(4) ? reader.GetString(4) : string.Empty, + imgUrl = !reader.IsDBNull(5) ? reader.GetString(5) : string.Empty, + hash = !reader.IsDBNull(6) ? reader.GetString(6) : string.Empty, + playcount = reader.GetInt32(7), + stars = reader.GetInt32(8), + ptype = reader.GetInt32(9), + }; + + //ϾѾղ˵ + data.isStar = 1; + + resp.gameList.Add(data); + } + } + } + SQLPool.EnqueueSQLConn(conn); } return new JsonResult(resp); } [HttpGet] - public JsonResult RomInfo(int Ptype, int RomID) + public JsonResult RomInfo(int Ptype, int RomID, string Token) { + long UID = 0; + if (TryDecrypToken(Token, out Protobuf_Token_Struct tokenData)) + { + UID = tokenData.UID; + } + string searchPattern = $"%{RomInfo}%"; Resp_RomInfo resp = new Resp_RomInfo(); - MySqlConnection conn = Haoyue_SQLPoolManager.DequeueSQLConn("NesRomList"); + MySqlConnection conn = SQLPool.DequeueSQLConn("NesRomList"); { string query = $"SELECT id,`Name`,GameType,Note,RomUrl,ImgUrl,`Hash`,`playcount`,`stars`,`PlatformType` FROM romlist where id = ?romid;"; using (var command = new MySqlCommand(query, conn)) @@ -142,8 +283,15 @@ namespace AxibugEmuOnline.Web.Controllers } } } - Haoyue_SQLPoolManager.EnqueueSQLConn(conn); + SQLPool.EnqueueSQLConn(conn); } + + if (UID > 0) + { + if (CheckIsRomStar(resp.id, UID)) + resp.isStar = 1; + } + return new JsonResult(resp); } @@ -170,6 +318,37 @@ namespace AxibugEmuOnline.Web.Controllers ALLINONE, } + + public bool CheckIsRomStar(int RomId, long uid) + { + bool bhad = false; + MySqlConnection conn = SQLPool.DequeueSQLConn("CheckIsRomStart"); + try + { + string query = $"SELECT count(0) from rom_stars where uid = ?uid and = ?romid"; + using (var command = new MySqlCommand(query, conn)) + { + // òֵ + command.Parameters.AddWithValue("?RomID", RomId); + command.Parameters.AddWithValue("?uid", uid); + // ִвѯ + using (var reader = command.ExecuteReader()) + { + while (reader.Read()) + { + bhad = reader.GetInt32(0) > 0; + } + } + } + } + catch (Exception e) + { + //AppSrv.g_Log.Error(e); + } + SQLPool.EnqueueSQLConn(conn); + return bhad; + } + class Resp_CheckStandInfo { public int needUpdateClient { get; set; } @@ -201,6 +380,8 @@ namespace AxibugEmuOnline.Web.Controllers public string hash { get; set; } public int stars { get; set; } public int playcount { get; set; } + public int isStar { get; set; } + } } } diff --git a/AxibugEmuOnline.Web/Program.cs b/AxibugEmuOnline.Web/Program.cs index 2118500d..fe01bed1 100644 --- a/AxibugEmuOnline.Web/Program.cs +++ b/AxibugEmuOnline.Web/Program.cs @@ -7,7 +7,8 @@ namespace AxibugEmuOnline.Web public static void Main(string[] args) { Config.LoadConfig(); - Haoyue_SQLPoolManager.InitConnMgr(); + AESHelper.LoadKeyIVCfg(Config.cfg.AesKey, Config.cfg.AesIv); + SQLPool.InitConnMgr(); var builder = WebApplication.CreateBuilder(args); diff --git a/ProtobufCore/out/CS/ProtobufAxibugEmuOnline.cs b/ProtobufCore/out/CS/ProtobufAxibugEmuOnline.cs index 03dca7a1..22e17773 100644 --- a/ProtobufCore/out/CS/ProtobufAxibugEmuOnline.cs +++ b/ProtobufCore/out/CS/ProtobufAxibugEmuOnline.cs @@ -36,113 +36,115 @@ namespace AxibugProtobuf { "aW5fUkVTUBIQCghOaWNrTmFtZRgBIAEoCRINCgVUb2tlbhgCIAEoCRIVCg1M", "YXN0TG9naW5EYXRlGAMgASgJEg8KB1JlZ0RhdGUYBCABKAkSMQoGU3RhdHVz", "GAUgASgOMiEuQXhpYnVnUHJvdG9idWYuTG9naW5SZXN1bHRTdGF0dXMSCwoD", - "VUlEGAYgASgDIhMKEVByb3RvYnVmX1VzZXJMaXN0IlsKFlByb3RvYnVmX1Vz", - "ZXJMaXN0X1JFU1ASEQoJVXNlckNvdW50GAEgASgFEi4KCFVzZXJMaXN0GAIg", - "AygLMhwuQXhpYnVnUHJvdG9idWYuVXNlck1pbmlJbmZvIkgKFlByb3RvYnVm", - "X1VzZXJKb2luX1JFU1ASLgoIVXNlckluZm8YASABKAsyHC5BeGlidWdQcm90", - "b2J1Zi5Vc2VyTWluaUluZm8iJgoXUHJvdG9idWZfVXNlckxlYXZlX1JFU1AS", - "CwoDVUlEGAEgASgDIjUKF1Byb3RvYnVmX1VzZXJTdGF0ZV9SRVNQEgsKA1VJ", - "RBgBIAEoAxINCgVTdGF0ZRgCIAEoBSJdCgxVc2VyTWluaUluZm8SCwoDVUlE", - "GAEgASgDEhAKCE5pY2tOYW1lGAIgASgJEi4KCmRldmljZVR5cGUYAyABKA4y", - "Gi5BeGlidWdQcm90b2J1Zi5EZXZpY2VUeXBlIiwKGFByb3RvYnVmX01vZGlm", - "eV9OaWNrTmFtZRIQCghOaWNrTmFtZRgBIAEoCSIfCh1Qcm90b2J1Zl9Nb2Rp", - "ZnlfTmlja05hbWVfUkVTUCJPCh1Qcm90b2J1Zl9VcGRhdGVfVXNlckluZm9f", - "UkVTUBIuCghVc2VySW5mbxgBIAEoCzIcLkF4aWJ1Z1Byb3RvYnVmLlVzZXJN", - "aW5pSW5mbyJhCiJQcm90b2J1Zl9VcGRhdGVfT3RoZXJVc2VySW5mb19SRVNQ", - "EgsKA1VJRBgBIAEoAxIuCghVc2VySW5mbxgCIAEoCzIcLkF4aWJ1Z1Byb3Rv", - "YnVmLlVzZXJNaW5pSW5mbyIUChJQcm90b2J1Zl9Sb29tX0xpc3QiWwoXUHJv", - "dG9idWZfUm9vbV9MaXN0X1JFU1ASQAoQUm9vbU1pbmlJbmZvTGlzdBgBIAMo", - "CzImLkF4aWJ1Z1Byb3RvYnVmLlByb3RvYnVmX1Jvb21fTWluaUluZm8iywIK", - "FlByb3RvYnVmX1Jvb21fTWluaUluZm8SDgoGUm9vbUlEGAEgASgFEhEKCUdh", - "bWVSb21JRBgCIAEoBRITCgtHYW1lUm9tSGFzaBgDIAEoCRI5ChBHYW1lUGxh", - "dGZvcm1UeXBlGAQgASgOMh8uQXhpYnVnUHJvdG9idWYuUm9tUGxhdGZvcm1U", - "eXBlEhUKDUhvc3RQbGF5ZXJVSUQYBSABKAMSMAoJR2FtZVN0YXRlGAYgASgO", - "Mh0uQXhpYnVnUHJvdG9idWYuUm9vbUdhbWVTdGF0ZRIUCgxPYnNVc2VyQ291", - "bnQYByABKAUSGQoRU2NyZWVuUHJvdmlkZXJVSUQYCCABKAMSRAoQR2FtZVBs", - "YXlTbG90TGlzdBgJIAMoCzIqLkF4aWJ1Z1Byb3RvYnVmLlByb3RvYnVmX1Jv", - "b21fR2FtZVBsYXlTbG90ItEBChpQcm90b2J1Zl9Sb29tX0dhbWVQbGF5U2xv", - "dBISCgpQbGF5ZXJfVUlEGAEgASgDEhcKD1BsYXllcl9OaWNrTmFtZRgCIAEo", - "CRIuCgpkZXZpY2VUeXBlGAMgASgOMhouQXhpYnVnUHJvdG9idWYuRGV2aWNl", - "VHlwZRIZChFQbGF5ZXJMb2NhbEpveUlkeBgEIAEoBRI7ChZQbGF5ZXJMb2Nh", - "bEdhbWVQYWRUeXBlGAUgASgOMhsuQXhpYnVnUHJvdG9idWYuR2FtZVBhZFR5", - "cGUibQoZUHJvdG9idWZfUm9vbV9VcGRhdGVfUkVTUBISCgpVcGRhdGVUeXBl", - "GAEgASgFEjwKDFJvb21NaW5pSW5mbxgCIAEoCzImLkF4aWJ1Z1Byb3RvYnVm", - "LlByb3RvYnVmX1Jvb21fTWluaUluZm8iSwoVUHJvdG9idWZfU2NyZW5uX0Zy", - "YW1lEg4KBlJvb21JRBgBIAEoBRIPCgdGcmFtZUlEGAIgASgFEhEKCVJhd0Jp", - "dG1hcBgDIAEoDCJJCiNQcm90b2J1Zl9Sb29tX1NpbmdsZVBsYXllcklucHV0", - "RGF0YRIPCgdGcmFtZUlEGAEgASgNEhEKCUlucHV0RGF0YRgCIAEoDSKAAQon", - "UHJvdG9idWZfUm9vbV9TeW5fUm9vbUZyYW1lQWxsSW5wdXREYXRhEg8KB0Zy", - "YW1lSUQYASABKA0SEQoJSW5wdXREYXRhGAIgASgEEhUKDVNlcnZlckZyYW1l", - "SUQYAyABKA0SGgoSU2VydmVyRm9yd2FyZENvdW50GAQgASgNIj4KFFByb3Rv", - "YnVmX1Jvb21fQ3JlYXRlEhEKCUdhbWVSb21JRBgBIAEoBRITCgtHYW1lUm9t", - "SGFzaBgCIAEoCSJZChlQcm90b2J1Zl9Sb29tX0NyZWF0ZV9SRVNQEjwKDFJv", - "b21NaW5pSW5mbxgBIAEoCzImLkF4aWJ1Z1Byb3RvYnVmLlByb3RvYnVmX1Jv", - "b21fTWluaUluZm8iJAoSUHJvdG9idWZfUm9vbV9Kb2luEg4KBlJvb21JRBgB", - "IAEoBSJXChdQcm90b2J1Zl9Sb29tX0pvaW5fUkVTUBI8CgxSb29tTWluaUlu", - "Zm8YASABKAsyJi5BeGlidWdQcm90b2J1Zi5Qcm90b2J1Zl9Sb29tX01pbmlJ", - "bmZvIiUKE1Byb3RvYnVmX1Jvb21fTGVhdmUSDgoGUm9vbUlEGAEgASgFIioK", - "GFByb3RvYnVmX1Jvb21fTGVhdmVfUkVTUBIOCgZSb29tSUQYASABKAUiYQoh", - "UHJvdG9idWZfUm9vbV9NeVJvb21fU3RhdGVfQ2hhbmdlEjwKDFJvb21NaW5p", - "SW5mbxgBIAEoCzImLkF4aWJ1Z1Byb3RvYnVmLlByb3RvYnVmX1Jvb21fTWlu", - "aUluZm8iawokUHJvdG9idWZfUm9vbV9DaGFuZ2VfUGxheVNsb3RXaXRoSm95", - "EkMKC1Nsb3RXaXRoSm95GAEgAygLMi4uQXhpYnVnUHJvdG9idWYuUHJvdG9i", - "dWZfUGxheVNsb3RJZHhXaXRoSm95SWR4Io8BCh5Qcm90b2J1Zl9QbGF5U2xv", - "dElkeFdpdGhKb3lJZHgSFQoNUGxheWVyU2xvdElkeBgBIAEoBRIZChFQbGF5", - "ZXJMb2NhbEpveUlkeBgCIAEoBRI7ChZQbGF5ZXJMb2NhbEdhbWVQYWRUeXBl", - "GAMgASgOMhsuQXhpYnVnUHJvdG9idWYuR2FtZVBhZFR5cGUiKwopUHJvdG9i", - "dWZfUm9vbV9DaGFuZ2VfUGxheVNsb3RXaXRoSm95X1JFU1AiRQobUHJvdG9i", - "dWZfUm9vbV9XYWl0U3RlcF9SRVNQEhAKCFdhaXRTdGVwGAEgASgFEhQKDExv", - "YWRTdGF0ZVJhdxgCIAEoDCI/CidQcm90b2J1Zl9Sb29tX0hvc3RQbGF5ZXJf", - "VXBkYXRlU3RhdGVSYXcSFAoMTG9hZFN0YXRlUmF3GAEgASgMIi4KLFByb3Rv", - "YnVmX1Jvb21fSG9zdFBsYXllcl9VcGRhdGVTdGF0ZVJhd19SRVNQIpoBChpQ", - "cm90b2J1Zl9Sb29tX1BsYXllcl9SZWFkeRIbChNQdXNoRnJhbWVOZWVkVGlt", - "ZVVzGAEgASgCEhsKE0xvYWRTdGF0ZU5lZWRUaW1lVXMYAiABKAISIAoYVmlk", - "ZW9GcmFtZVNob3dOZWVkVGltZVVzGAMgASgCEiAKGEF1ZGlvRnJhbWVQbGF5", - "TmVlZFRpbWVVcxgEIAEoAiIqChhQcm90b2J1Zl9Sb29tX0dldF9TY3JlZW4S", - "DgoGUm9vbUlEGAEgASgFIlMKHVByb3RvYnVmX1Jvb21fR2V0X1NjcmVlbl9S", - "RVNQEg4KBlJvb21JRBgBIAEoBRIPCgdGcmFtZUlEGAIgASgFEhEKCVJhd0Jp", - "dG1hcBgDIAEoDCIyChJQcm90b2J1Zl9HYW1lX01hcmsSDQoFUm9tSUQYASAB", - "KAUSDQoFc3RhdGUYAiABKAUiKAoXUHJvdG9idWZfR2FtZV9NYXJrX1JFU1AS", - "DQoFUm9tSUQYASABKAUqoQUKCUNvbW1hbmRJRBIOCgpDTURfREVGQVVMEAAS", - "DAoIQ01EX1BJTkcQARIMCghDTURfUE9ORxACEg4KCUNNRF9MT0dJThDRDxIY", - "ChNDTURfVVNFUl9PTkxJTkVMSVNUELgXEhIKDUNNRF9VU0VSX0pPSU4Q1xcS", - "EwoOQ01EX1VTRVJfTEVBVkUQ2BcSGgoVQ01EX1VTRVJfU1RBVEVfVVBEQVRF", - "ENkXEhgKE0NNRF9Nb2RpZnlfTmlja05hbWUQnRgSHAoXQ01EX1VwZGF0ZV9T", - "ZWxmVXNlckluZm8QphgSHQoYQ01EX1VwZGF0ZV9PdGhlclVzZXJJbmZvEKgY", - "EhAKC0NNRF9DSEFUTVNHEKEfEhIKDUNNRF9Sb29tX0xpc3QQiScSGQoUQ01E", - "X1Jvb21fTGlzdF9VcGRhdGUQiicSGAoTQ01EX1Jvb21fR2V0X1NjcmVlbhCT", - "JxIUCg9DTURfUm9vbV9DcmVhdGUQ7ScSEgoNQ01EX1Jvb21fSm9pbhDxJxIT", - "Cg5DTURfUm9vbV9MZWF2ZRDyJxIiCh1DTURfUm9vbV9NeVJvb21fU3RhdGVf", - "Q2hhbmdlZBD2JxIhChxDTURfUm9vbV9DaGFuZ2VQbGF5ZXJXaXRoSm95EIoo", - "EhYKEUNNRF9Sb29tX1dhaXRTdGVwENEoEicKIkNNRF9Sb29tX0hvc3RQbGF5", - "ZXJfVXBkYXRlU3RhdGVSYXcQ1CgSGgoVQ01EX1Jvb21fUGxheWVyX1JlYWR5", - "ENgoEiAKG0NNRF9Sb29tX1NpbmdlbF9QbGF5ZXJJbnB1dBD6LhIdChhDTURf", - "Uk9PTV9TWU5fUGxheWVySW5wdXQQ/y4SDwoKQ01EX1NjcmVlbhDZNhISCg1D", - "TURfR0FNRV9NQVJLEPVOKtABCglFcnJvckNvZGUSEAoMRVJST1JfREVGQVVM", - "EAASDAoIRVJST1JfT0sQARIYChRFUlJPUl9ST09NX05PVF9GT1VORBAKEicK", - "I0VSUk9SX1JPT01fU0xPVF9BTFJFQURMWV9IQURfUExBWUVSEAsSIQodRVJS", - "T1JfUk9PTV9DQU5UX0RPX0NVUlJfU1RBVEUQMhIfChpFUlJPUl9ST01fQUxS", - "RUFEWV9IQURfU1RBUhCTAxIcChdFUlJPUl9ST01fRE9OVF9IQURfU1RBUhCU", - "AypACglMb2dpblR5cGUSDQoJVXNlRGV2aWNlEAASDgoKVXNlQWNjb3VudBAB", - "EhQKEFVzZUhhb1l1ZUFjY291bnQQAiqlAQoKRGV2aWNlVHlwZRIWChJEZXZp", - "Y2VUeXBlX0RlZmF1bHQQABIGCgJQQxABEgsKB0FuZHJvaWQQAhIHCgNJT1MQ", - "AxIHCgNQU1YQBBIHCgNQUzMQBRIHCgNQUzQQBhILCgdYQk9YMzYwEAcSCwoH", - "WEJPWE9ORRAIEggKBFdpaVUQCRIPCgtOaW50ZW5kbzNEUxAKEhEKDUFuZHJv", - "aWRDYXJBcHAQCyqTAgoLR2FtZVBhZFR5cGUSDAoIS2V5Ym9hcmQQABIRCg1H", - "bG9iYWxHYW1lUGFkEAESDgoKVG91Y2hQYW5lbBACEg4KCkRTM0NvbnRyb2wQ", - "AxIOCgpEUzRDb250cm9sEAQSDgoKRFM1Q29udHJvbBAFEhQKEFN3aXRjaFBy", - "b0NvbnRyb2wQBhIQCgxTd2l0Y2hKb3lDb24QBxISCg5YQk9YMzYwQ29udHJv", - "bBAIEhIKDlhCT1hPTkVDb250cm9sEAkSEQoNUFNWaXRhQ29udHJvbBAKEhIK", - "DldpaVVQYWRDb250cm9sEAsSFAoQV2lpUmVtb3RlQ29udHJvbBAMEhYKEk5p", - "bnRlbmRvM0RTQ29udHJvbBANKqIBCg9Sb21QbGF0Zm9ybVR5cGUSCwoHSW52", - "YWxpZBAAEgcKA05lcxABEhEKDU1hc3Rlcl9TeXN0ZW0QAhINCglHYW1lX0dl", - "YXIQAxIMCghHYW1lX0JveRAEEhIKDkdhbWVfQm95X0NvbG9yEAUSEQoNQ29s", - "ZWNvX1Zpc2lvbhAGEgsKB1NDXzMwMDAQBxILCgdTR18xMDAwEAgSCAoDQWxs", - "EOcHKnAKDVJvb21HYW1lU3RhdGUSEgoOTm9uZV9HYW1lU3RhdGUQABIMCghP", - "bmx5SG9zdBABEhEKDVdhaXRSYXdVcGRhdGUQAhINCglXYWl0UmVhZHkQAxIJ", - "CgVQYXVzZRAEEhAKDEluT25saW5lR2FtZRAFKk4KEUxvZ2luUmVzdWx0U3Rh", - "dHVzEiEKHUxvZ2luUmVzdWx0U3RhdHVzX0Jhc2VEZWZhdWx0EAASBgoCT0sQ", - "ARIOCgpBY2NvdW50RXJyEAJCAkgBYgZwcm90bzM=")); + "VUlEGAYgASgDIkgKFVByb3RvYnVmX1Rva2VuX1N0cnVjdBILCgNVSUQYASAB", + "KAMSFAoMVG9rZW5HZW5EYXRlGAIgASgDEgwKBFNlZWQYAyABKAMiEwoRUHJv", + "dG9idWZfVXNlckxpc3QiWwoWUHJvdG9idWZfVXNlckxpc3RfUkVTUBIRCglV", + "c2VyQ291bnQYASABKAUSLgoIVXNlckxpc3QYAiADKAsyHC5BeGlidWdQcm90", + "b2J1Zi5Vc2VyTWluaUluZm8iSAoWUHJvdG9idWZfVXNlckpvaW5fUkVTUBIu", + "CghVc2VySW5mbxgBIAEoCzIcLkF4aWJ1Z1Byb3RvYnVmLlVzZXJNaW5pSW5m", + "byImChdQcm90b2J1Zl9Vc2VyTGVhdmVfUkVTUBILCgNVSUQYASABKAMiNQoX", + "UHJvdG9idWZfVXNlclN0YXRlX1JFU1ASCwoDVUlEGAEgASgDEg0KBVN0YXRl", + "GAIgASgFIl0KDFVzZXJNaW5pSW5mbxILCgNVSUQYASABKAMSEAoITmlja05h", + "bWUYAiABKAkSLgoKZGV2aWNlVHlwZRgDIAEoDjIaLkF4aWJ1Z1Byb3RvYnVm", + "LkRldmljZVR5cGUiLAoYUHJvdG9idWZfTW9kaWZ5X05pY2tOYW1lEhAKCE5p", + "Y2tOYW1lGAEgASgJIh8KHVByb3RvYnVmX01vZGlmeV9OaWNrTmFtZV9SRVNQ", + "Ik8KHVByb3RvYnVmX1VwZGF0ZV9Vc2VySW5mb19SRVNQEi4KCFVzZXJJbmZv", + "GAEgASgLMhwuQXhpYnVnUHJvdG9idWYuVXNlck1pbmlJbmZvImEKIlByb3Rv", + "YnVmX1VwZGF0ZV9PdGhlclVzZXJJbmZvX1JFU1ASCwoDVUlEGAEgASgDEi4K", + "CFVzZXJJbmZvGAIgASgLMhwuQXhpYnVnUHJvdG9idWYuVXNlck1pbmlJbmZv", + "IhQKElByb3RvYnVmX1Jvb21fTGlzdCJbChdQcm90b2J1Zl9Sb29tX0xpc3Rf", + "UkVTUBJAChBSb29tTWluaUluZm9MaXN0GAEgAygLMiYuQXhpYnVnUHJvdG9i", + "dWYuUHJvdG9idWZfUm9vbV9NaW5pSW5mbyLLAgoWUHJvdG9idWZfUm9vbV9N", + "aW5pSW5mbxIOCgZSb29tSUQYASABKAUSEQoJR2FtZVJvbUlEGAIgASgFEhMK", + "C0dhbWVSb21IYXNoGAMgASgJEjkKEEdhbWVQbGF0Zm9ybVR5cGUYBCABKA4y", + "Hy5BeGlidWdQcm90b2J1Zi5Sb21QbGF0Zm9ybVR5cGUSFQoNSG9zdFBsYXll", + "clVJRBgFIAEoAxIwCglHYW1lU3RhdGUYBiABKA4yHS5BeGlidWdQcm90b2J1", + "Zi5Sb29tR2FtZVN0YXRlEhQKDE9ic1VzZXJDb3VudBgHIAEoBRIZChFTY3Jl", + "ZW5Qcm92aWRlclVJRBgIIAEoAxJEChBHYW1lUGxheVNsb3RMaXN0GAkgAygL", + "MiouQXhpYnVnUHJvdG9idWYuUHJvdG9idWZfUm9vbV9HYW1lUGxheVNsb3Qi", + "0QEKGlByb3RvYnVmX1Jvb21fR2FtZVBsYXlTbG90EhIKClBsYXllcl9VSUQY", + "ASABKAMSFwoPUGxheWVyX05pY2tOYW1lGAIgASgJEi4KCmRldmljZVR5cGUY", + "AyABKA4yGi5BeGlidWdQcm90b2J1Zi5EZXZpY2VUeXBlEhkKEVBsYXllckxv", + "Y2FsSm95SWR4GAQgASgFEjsKFlBsYXllckxvY2FsR2FtZVBhZFR5cGUYBSAB", + "KA4yGy5BeGlidWdQcm90b2J1Zi5HYW1lUGFkVHlwZSJtChlQcm90b2J1Zl9S", + "b29tX1VwZGF0ZV9SRVNQEhIKClVwZGF0ZVR5cGUYASABKAUSPAoMUm9vbU1p", + "bmlJbmZvGAIgASgLMiYuQXhpYnVnUHJvdG9idWYuUHJvdG9idWZfUm9vbV9N", + "aW5pSW5mbyJLChVQcm90b2J1Zl9TY3Jlbm5fRnJhbWUSDgoGUm9vbUlEGAEg", + "ASgFEg8KB0ZyYW1lSUQYAiABKAUSEQoJUmF3Qml0bWFwGAMgASgMIkkKI1By", + "b3RvYnVmX1Jvb21fU2luZ2xlUGxheWVySW5wdXREYXRhEg8KB0ZyYW1lSUQY", + "ASABKA0SEQoJSW5wdXREYXRhGAIgASgNIoABCidQcm90b2J1Zl9Sb29tX1N5", + "bl9Sb29tRnJhbWVBbGxJbnB1dERhdGESDwoHRnJhbWVJRBgBIAEoDRIRCglJ", + "bnB1dERhdGEYAiABKAQSFQoNU2VydmVyRnJhbWVJRBgDIAEoDRIaChJTZXJ2", + "ZXJGb3J3YXJkQ291bnQYBCABKA0iPgoUUHJvdG9idWZfUm9vbV9DcmVhdGUS", + "EQoJR2FtZVJvbUlEGAEgASgFEhMKC0dhbWVSb21IYXNoGAIgASgJIlkKGVBy", + "b3RvYnVmX1Jvb21fQ3JlYXRlX1JFU1ASPAoMUm9vbU1pbmlJbmZvGAEgASgL", + "MiYuQXhpYnVnUHJvdG9idWYuUHJvdG9idWZfUm9vbV9NaW5pSW5mbyIkChJQ", + "cm90b2J1Zl9Sb29tX0pvaW4SDgoGUm9vbUlEGAEgASgFIlcKF1Byb3RvYnVm", + "X1Jvb21fSm9pbl9SRVNQEjwKDFJvb21NaW5pSW5mbxgBIAEoCzImLkF4aWJ1", + "Z1Byb3RvYnVmLlByb3RvYnVmX1Jvb21fTWluaUluZm8iJQoTUHJvdG9idWZf", + "Um9vbV9MZWF2ZRIOCgZSb29tSUQYASABKAUiKgoYUHJvdG9idWZfUm9vbV9M", + "ZWF2ZV9SRVNQEg4KBlJvb21JRBgBIAEoBSJhCiFQcm90b2J1Zl9Sb29tX015", + "Um9vbV9TdGF0ZV9DaGFuZ2USPAoMUm9vbU1pbmlJbmZvGAEgASgLMiYuQXhp", + "YnVnUHJvdG9idWYuUHJvdG9idWZfUm9vbV9NaW5pSW5mbyJrCiRQcm90b2J1", + "Zl9Sb29tX0NoYW5nZV9QbGF5U2xvdFdpdGhKb3kSQwoLU2xvdFdpdGhKb3kY", + "ASADKAsyLi5BeGlidWdQcm90b2J1Zi5Qcm90b2J1Zl9QbGF5U2xvdElkeFdp", + "dGhKb3lJZHgijwEKHlByb3RvYnVmX1BsYXlTbG90SWR4V2l0aEpveUlkeBIV", + "Cg1QbGF5ZXJTbG90SWR4GAEgASgFEhkKEVBsYXllckxvY2FsSm95SWR4GAIg", + "ASgFEjsKFlBsYXllckxvY2FsR2FtZVBhZFR5cGUYAyABKA4yGy5BeGlidWdQ", + "cm90b2J1Zi5HYW1lUGFkVHlwZSIrCilQcm90b2J1Zl9Sb29tX0NoYW5nZV9Q", + "bGF5U2xvdFdpdGhKb3lfUkVTUCJFChtQcm90b2J1Zl9Sb29tX1dhaXRTdGVw", + "X1JFU1ASEAoIV2FpdFN0ZXAYASABKAUSFAoMTG9hZFN0YXRlUmF3GAIgASgM", + "Ij8KJ1Byb3RvYnVmX1Jvb21fSG9zdFBsYXllcl9VcGRhdGVTdGF0ZVJhdxIU", + "CgxMb2FkU3RhdGVSYXcYASABKAwiLgosUHJvdG9idWZfUm9vbV9Ib3N0UGxh", + "eWVyX1VwZGF0ZVN0YXRlUmF3X1JFU1AimgEKGlByb3RvYnVmX1Jvb21fUGxh", + "eWVyX1JlYWR5EhsKE1B1c2hGcmFtZU5lZWRUaW1lVXMYASABKAISGwoTTG9h", + "ZFN0YXRlTmVlZFRpbWVVcxgCIAEoAhIgChhWaWRlb0ZyYW1lU2hvd05lZWRU", + "aW1lVXMYAyABKAISIAoYQXVkaW9GcmFtZVBsYXlOZWVkVGltZVVzGAQgASgC", + "IioKGFByb3RvYnVmX1Jvb21fR2V0X1NjcmVlbhIOCgZSb29tSUQYASABKAUi", + "UwodUHJvdG9idWZfUm9vbV9HZXRfU2NyZWVuX1JFU1ASDgoGUm9vbUlEGAEg", + "ASgFEg8KB0ZyYW1lSUQYAiABKAUSEQoJUmF3Qml0bWFwGAMgASgMIjMKElBy", + "b3RvYnVmX0dhbWVfTWFyaxINCgVSb21JRBgBIAEoBRIOCgZtb3Rpb24YAiAB", + "KAUiRwoXUHJvdG9idWZfR2FtZV9NYXJrX1JFU1ASDQoFUm9tSUQYASABKAUS", + "DgoGSXNTdGFyGAIgASgFEg0KBXN0YXJzGAMgASgFKqEFCglDb21tYW5kSUQS", + "DgoKQ01EX0RFRkFVTBAAEgwKCENNRF9QSU5HEAESDAoIQ01EX1BPTkcQAhIO", + "CglDTURfTE9HSU4Q0Q8SGAoTQ01EX1VTRVJfT05MSU5FTElTVBC4FxISCg1D", + "TURfVVNFUl9KT0lOENcXEhMKDkNNRF9VU0VSX0xFQVZFENgXEhoKFUNNRF9V", + "U0VSX1NUQVRFX1VQREFURRDZFxIYChNDTURfTW9kaWZ5X05pY2tOYW1lEJ0Y", + "EhwKF0NNRF9VcGRhdGVfU2VsZlVzZXJJbmZvEKYYEh0KGENNRF9VcGRhdGVf", + "T3RoZXJVc2VySW5mbxCoGBIQCgtDTURfQ0hBVE1TRxChHxISCg1DTURfUm9v", + "bV9MaXN0EIknEhkKFENNRF9Sb29tX0xpc3RfVXBkYXRlEIonEhgKE0NNRF9S", + "b29tX0dldF9TY3JlZW4QkycSFAoPQ01EX1Jvb21fQ3JlYXRlEO0nEhIKDUNN", + "RF9Sb29tX0pvaW4Q8ScSEwoOQ01EX1Jvb21fTGVhdmUQ8icSIgodQ01EX1Jv", + "b21fTXlSb29tX1N0YXRlX0NoYW5nZWQQ9icSIQocQ01EX1Jvb21fQ2hhbmdl", + "UGxheWVyV2l0aEpveRCKKBIWChFDTURfUm9vbV9XYWl0U3RlcBDRKBInCiJD", + "TURfUm9vbV9Ib3N0UGxheWVyX1VwZGF0ZVN0YXRlUmF3ENQoEhoKFUNNRF9S", + "b29tX1BsYXllcl9SZWFkeRDYKBIgChtDTURfUm9vbV9TaW5nZWxfUGxheWVy", + "SW5wdXQQ+i4SHQoYQ01EX1JPT01fU1lOX1BsYXllcklucHV0EP8uEg8KCkNN", + "RF9TY3JlZW4Q2TYSEgoNQ01EX0dBTUVfTUFSSxD1TirQAQoJRXJyb3JDb2Rl", + "EhAKDEVSUk9SX0RFRkFVTBAAEgwKCEVSUk9SX09LEAESGAoURVJST1JfUk9P", + "TV9OT1RfRk9VTkQQChInCiNFUlJPUl9ST09NX1NMT1RfQUxSRUFETFlfSEFE", + "X1BMQVlFUhALEiEKHUVSUk9SX1JPT01fQ0FOVF9ET19DVVJSX1NUQVRFEDIS", + "HwoaRVJST1JfUk9NX0FMUkVBRFlfSEFEX1NUQVIQkwMSHAoXRVJST1JfUk9N", + "X0RPTlRfSEFEX1NUQVIQlAMqQAoJTG9naW5UeXBlEg0KCVVzZURldmljZRAA", + "Eg4KClVzZUFjY291bnQQARIUChBVc2VIYW9ZdWVBY2NvdW50EAIqpQEKCkRl", + "dmljZVR5cGUSFgoSRGV2aWNlVHlwZV9EZWZhdWx0EAASBgoCUEMQARILCgdB", + "bmRyb2lkEAISBwoDSU9TEAMSBwoDUFNWEAQSBwoDUFMzEAUSBwoDUFM0EAYS", + "CwoHWEJPWDM2MBAHEgsKB1hCT1hPTkUQCBIICgRXaWlVEAkSDwoLTmludGVu", + "ZG8zRFMQChIRCg1BbmRyb2lkQ2FyQXBwEAsqkwIKC0dhbWVQYWRUeXBlEgwK", + "CEtleWJvYXJkEAASEQoNR2xvYmFsR2FtZVBhZBABEg4KClRvdWNoUGFuZWwQ", + "AhIOCgpEUzNDb250cm9sEAMSDgoKRFM0Q29udHJvbBAEEg4KCkRTNUNvbnRy", + "b2wQBRIUChBTd2l0Y2hQcm9Db250cm9sEAYSEAoMU3dpdGNoSm95Q29uEAcS", + "EgoOWEJPWDM2MENvbnRyb2wQCBISCg5YQk9YT05FQ29udHJvbBAJEhEKDVBT", + "Vml0YUNvbnRyb2wQChISCg5XaWlVUGFkQ29udHJvbBALEhQKEFdpaVJlbW90", + "ZUNvbnRyb2wQDBIWChJOaW50ZW5kbzNEU0NvbnRyb2wQDSqiAQoPUm9tUGxh", + "dGZvcm1UeXBlEgsKB0ludmFsaWQQABIHCgNOZXMQARIRCg1NYXN0ZXJfU3lz", + "dGVtEAISDQoJR2FtZV9HZWFyEAMSDAoIR2FtZV9Cb3kQBBISCg5HYW1lX0Jv", + "eV9Db2xvchAFEhEKDUNvbGVjb19WaXNpb24QBhILCgdTQ18zMDAwEAcSCwoH", + "U0dfMTAwMBAIEggKA0FsbBDnBypwCg1Sb29tR2FtZVN0YXRlEhIKDk5vbmVf", + "R2FtZVN0YXRlEAASDAoIT25seUhvc3QQARIRCg1XYWl0UmF3VXBkYXRlEAIS", + "DQoJV2FpdFJlYWR5EAMSCQoFUGF1c2UQBBIQCgxJbk9ubGluZUdhbWUQBSpO", + "ChFMb2dpblJlc3VsdFN0YXR1cxIhCh1Mb2dpblJlc3VsdFN0YXR1c19CYXNl", + "RGVmYXVsdBAAEgYKAk9LEAESDgoKQWNjb3VudEVychACQgJIAWIGcHJvdG8z")); descriptor = pbr::FileDescriptor.FromGeneratedCode(descriptorData, new pbr::FileDescriptor[] { }, new pbr::GeneratedClrTypeInfo(new[] {typeof(global::AxibugProtobuf.CommandID), typeof(global::AxibugProtobuf.ErrorCode), typeof(global::AxibugProtobuf.LoginType), typeof(global::AxibugProtobuf.DeviceType), typeof(global::AxibugProtobuf.GamePadType), typeof(global::AxibugProtobuf.RomPlatformType), typeof(global::AxibugProtobuf.RoomGameState), typeof(global::AxibugProtobuf.LoginResultStatus), }, null, new pbr::GeneratedClrTypeInfo[] { @@ -152,6 +154,7 @@ namespace AxibugProtobuf { new pbr::GeneratedClrTypeInfo(typeof(global::AxibugProtobuf.Protobuf_Pong), global::AxibugProtobuf.Protobuf_Pong.Parser, new[]{ "Seed" }, null, null, null, null), new pbr::GeneratedClrTypeInfo(typeof(global::AxibugProtobuf.Protobuf_Login), global::AxibugProtobuf.Protobuf_Login.Parser, new[]{ "LoginType", "DeviceType", "DeviceStr", "Account", "Password" }, null, null, null, null), new pbr::GeneratedClrTypeInfo(typeof(global::AxibugProtobuf.Protobuf_Login_RESP), global::AxibugProtobuf.Protobuf_Login_RESP.Parser, new[]{ "NickName", "Token", "LastLoginDate", "RegDate", "Status", "UID" }, null, null, null, null), + new pbr::GeneratedClrTypeInfo(typeof(global::AxibugProtobuf.Protobuf_Token_Struct), global::AxibugProtobuf.Protobuf_Token_Struct.Parser, new[]{ "UID", "TokenGenDate", "Seed" }, null, null, null, null), new pbr::GeneratedClrTypeInfo(typeof(global::AxibugProtobuf.Protobuf_UserList), global::AxibugProtobuf.Protobuf_UserList.Parser, null, null, null, null, null), new pbr::GeneratedClrTypeInfo(typeof(global::AxibugProtobuf.Protobuf_UserList_RESP), global::AxibugProtobuf.Protobuf_UserList_RESP.Parser, new[]{ "UserCount", "UserList" }, null, null, null, null), new pbr::GeneratedClrTypeInfo(typeof(global::AxibugProtobuf.Protobuf_UserJoin_RESP), global::AxibugProtobuf.Protobuf_UserJoin_RESP.Parser, new[]{ "UserInfo" }, null, null, null, null), @@ -186,8 +189,8 @@ namespace AxibugProtobuf { new pbr::GeneratedClrTypeInfo(typeof(global::AxibugProtobuf.Protobuf_Room_Player_Ready), global::AxibugProtobuf.Protobuf_Room_Player_Ready.Parser, new[]{ "PushFrameNeedTimeUs", "LoadStateNeedTimeUs", "VideoFrameShowNeedTimeUs", "AudioFramePlayNeedTimeUs" }, null, null, null, null), new pbr::GeneratedClrTypeInfo(typeof(global::AxibugProtobuf.Protobuf_Room_Get_Screen), global::AxibugProtobuf.Protobuf_Room_Get_Screen.Parser, new[]{ "RoomID" }, null, null, null, null), new pbr::GeneratedClrTypeInfo(typeof(global::AxibugProtobuf.Protobuf_Room_Get_Screen_RESP), global::AxibugProtobuf.Protobuf_Room_Get_Screen_RESP.Parser, new[]{ "RoomID", "FrameID", "RawBitmap" }, null, null, null, null), - new pbr::GeneratedClrTypeInfo(typeof(global::AxibugProtobuf.Protobuf_Game_Mark), global::AxibugProtobuf.Protobuf_Game_Mark.Parser, new[]{ "RomID", "State" }, null, null, null, null), - new pbr::GeneratedClrTypeInfo(typeof(global::AxibugProtobuf.Protobuf_Game_Mark_RESP), global::AxibugProtobuf.Protobuf_Game_Mark_RESP.Parser, new[]{ "RomID" }, null, null, null, null) + new pbr::GeneratedClrTypeInfo(typeof(global::AxibugProtobuf.Protobuf_Game_Mark), global::AxibugProtobuf.Protobuf_Game_Mark.Parser, new[]{ "RomID", "Motion" }, null, null, null, null), + new pbr::GeneratedClrTypeInfo(typeof(global::AxibugProtobuf.Protobuf_Game_Mark_RESP), global::AxibugProtobuf.Protobuf_Game_Mark_RESP.Parser, new[]{ "RomID", "IsStar", "Stars" }, null, null, null, null) })); } #endregion @@ -1956,6 +1959,253 @@ namespace AxibugProtobuf { } + /// + ///Token结构,但用于逻辑里配置加密密钥,放置于服务端加密后,发放token + /// + public sealed partial class Protobuf_Token_Struct : pb::IMessage + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + , pb::IBufferMessage + #endif + { + private static readonly pb::MessageParser _parser = new pb::MessageParser(() => new Protobuf_Token_Struct()); + private pb::UnknownFieldSet _unknownFields; + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public static pb::MessageParser Parser { get { return _parser; } } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public static pbr::MessageDescriptor Descriptor { + get { return global::AxibugProtobuf.ProtobufAxibugEmuOnlineReflection.Descriptor.MessageTypes[6]; } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + pbr::MessageDescriptor pb::IMessage.Descriptor { + get { return Descriptor; } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public Protobuf_Token_Struct() { + OnConstruction(); + } + + partial void OnConstruction(); + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public Protobuf_Token_Struct(Protobuf_Token_Struct other) : this() { + uID_ = other.uID_; + tokenGenDate_ = other.tokenGenDate_; + seed_ = other.seed_; + _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public Protobuf_Token_Struct Clone() { + return new Protobuf_Token_Struct(this); + } + + /// Field number for the "UID" field. + public const int UIDFieldNumber = 1; + private long uID_; + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public long UID { + get { return uID_; } + set { + uID_ = value; + } + } + + /// Field number for the "TokenGenDate" field. + public const int TokenGenDateFieldNumber = 2; + private long tokenGenDate_; + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public long TokenGenDate { + get { return tokenGenDate_; } + set { + tokenGenDate_ = value; + } + } + + /// Field number for the "Seed" field. + public const int SeedFieldNumber = 3; + private long seed_; + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public long Seed { + get { return seed_; } + set { + seed_ = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public override bool Equals(object other) { + return Equals(other as Protobuf_Token_Struct); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public bool Equals(Protobuf_Token_Struct other) { + if (ReferenceEquals(other, null)) { + return false; + } + if (ReferenceEquals(other, this)) { + return true; + } + if (UID != other.UID) return false; + if (TokenGenDate != other.TokenGenDate) return false; + if (Seed != other.Seed) return false; + return Equals(_unknownFields, other._unknownFields); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public override int GetHashCode() { + int hash = 1; + if (UID != 0L) hash ^= UID.GetHashCode(); + if (TokenGenDate != 0L) hash ^= TokenGenDate.GetHashCode(); + if (Seed != 0L) hash ^= Seed.GetHashCode(); + if (_unknownFields != null) { + hash ^= _unknownFields.GetHashCode(); + } + return hash; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public override string ToString() { + return pb::JsonFormatter.ToDiagnosticString(this); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public void WriteTo(pb::CodedOutputStream output) { + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + output.WriteRawMessage(this); + #else + if (UID != 0L) { + output.WriteRawTag(8); + output.WriteInt64(UID); + } + if (TokenGenDate != 0L) { + output.WriteRawTag(16); + output.WriteInt64(TokenGenDate); + } + if (Seed != 0L) { + output.WriteRawTag(24); + output.WriteInt64(Seed); + } + if (_unknownFields != null) { + _unknownFields.WriteTo(output); + } + #endif + } + + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + void pb::IBufferMessage.InternalWriteTo(ref pb::WriteContext output) { + if (UID != 0L) { + output.WriteRawTag(8); + output.WriteInt64(UID); + } + if (TokenGenDate != 0L) { + output.WriteRawTag(16); + output.WriteInt64(TokenGenDate); + } + if (Seed != 0L) { + output.WriteRawTag(24); + output.WriteInt64(Seed); + } + if (_unknownFields != null) { + _unknownFields.WriteTo(ref output); + } + } + #endif + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public int CalculateSize() { + int size = 0; + if (UID != 0L) { + size += 1 + pb::CodedOutputStream.ComputeInt64Size(UID); + } + if (TokenGenDate != 0L) { + size += 1 + pb::CodedOutputStream.ComputeInt64Size(TokenGenDate); + } + if (Seed != 0L) { + size += 1 + pb::CodedOutputStream.ComputeInt64Size(Seed); + } + if (_unknownFields != null) { + size += _unknownFields.CalculateSize(); + } + return size; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public void MergeFrom(Protobuf_Token_Struct other) { + if (other == null) { + return; + } + if (other.UID != 0L) { + UID = other.UID; + } + if (other.TokenGenDate != 0L) { + TokenGenDate = other.TokenGenDate; + } + if (other.Seed != 0L) { + Seed = other.Seed; + } + _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public void MergeFrom(pb::CodedInputStream input) { + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + input.ReadRawMessage(this); + #else + uint tag; + while ((tag = input.ReadTag()) != 0) { + switch(tag) { + default: + _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input); + break; + case 8: { + UID = input.ReadInt64(); + break; + } + case 16: { + TokenGenDate = input.ReadInt64(); + break; + } + case 24: { + Seed = input.ReadInt64(); + break; + } + } + } + #endif + } + + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + void pb::IBufferMessage.InternalMergeFrom(ref pb::ParseContext input) { + uint tag; + while ((tag = input.ReadTag()) != 0) { + switch(tag) { + default: + _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input); + break; + case 8: { + UID = input.ReadInt64(); + break; + } + case 16: { + TokenGenDate = input.ReadInt64(); + break; + } + case 24: { + Seed = input.ReadInt64(); + break; + } + } + } + } + #endif + + } + /// ///获取在线用户列表 上行 /// @@ -1971,7 +2221,7 @@ namespace AxibugProtobuf { [global::System.Diagnostics.DebuggerNonUserCodeAttribute] public static pbr::MessageDescriptor Descriptor { - get { return global::AxibugProtobuf.ProtobufAxibugEmuOnlineReflection.Descriptor.MessageTypes[6]; } + get { return global::AxibugProtobuf.ProtobufAxibugEmuOnlineReflection.Descriptor.MessageTypes[7]; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] @@ -2110,7 +2360,7 @@ namespace AxibugProtobuf { [global::System.Diagnostics.DebuggerNonUserCodeAttribute] public static pbr::MessageDescriptor Descriptor { - get { return global::AxibugProtobuf.ProtobufAxibugEmuOnlineReflection.Descriptor.MessageTypes[7]; } + get { return global::AxibugProtobuf.ProtobufAxibugEmuOnlineReflection.Descriptor.MessageTypes[8]; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] @@ -2316,7 +2566,7 @@ namespace AxibugProtobuf { [global::System.Diagnostics.DebuggerNonUserCodeAttribute] public static pbr::MessageDescriptor Descriptor { - get { return global::AxibugProtobuf.ProtobufAxibugEmuOnlineReflection.Descriptor.MessageTypes[8]; } + get { return global::AxibugProtobuf.ProtobufAxibugEmuOnlineReflection.Descriptor.MessageTypes[9]; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] @@ -2503,7 +2753,7 @@ namespace AxibugProtobuf { [global::System.Diagnostics.DebuggerNonUserCodeAttribute] public static pbr::MessageDescriptor Descriptor { - get { return global::AxibugProtobuf.ProtobufAxibugEmuOnlineReflection.Descriptor.MessageTypes[9]; } + get { return global::AxibugProtobuf.ProtobufAxibugEmuOnlineReflection.Descriptor.MessageTypes[10]; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] @@ -2681,7 +2931,7 @@ namespace AxibugProtobuf { [global::System.Diagnostics.DebuggerNonUserCodeAttribute] public static pbr::MessageDescriptor Descriptor { - get { return global::AxibugProtobuf.ProtobufAxibugEmuOnlineReflection.Descriptor.MessageTypes[10]; } + get { return global::AxibugProtobuf.ProtobufAxibugEmuOnlineReflection.Descriptor.MessageTypes[11]; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] @@ -2895,7 +3145,7 @@ namespace AxibugProtobuf { [global::System.Diagnostics.DebuggerNonUserCodeAttribute] public static pbr::MessageDescriptor Descriptor { - get { return global::AxibugProtobuf.ProtobufAxibugEmuOnlineReflection.Descriptor.MessageTypes[11]; } + get { return global::AxibugProtobuf.ProtobufAxibugEmuOnlineReflection.Descriptor.MessageTypes[12]; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] @@ -3151,7 +3401,7 @@ namespace AxibugProtobuf { [global::System.Diagnostics.DebuggerNonUserCodeAttribute] public static pbr::MessageDescriptor Descriptor { - get { return global::AxibugProtobuf.ProtobufAxibugEmuOnlineReflection.Descriptor.MessageTypes[12]; } + get { return global::AxibugProtobuf.ProtobufAxibugEmuOnlineReflection.Descriptor.MessageTypes[13]; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] @@ -3329,7 +3579,7 @@ namespace AxibugProtobuf { [global::System.Diagnostics.DebuggerNonUserCodeAttribute] public static pbr::MessageDescriptor Descriptor { - get { return global::AxibugProtobuf.ProtobufAxibugEmuOnlineReflection.Descriptor.MessageTypes[13]; } + get { return global::AxibugProtobuf.ProtobufAxibugEmuOnlineReflection.Descriptor.MessageTypes[14]; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] @@ -3468,7 +3718,7 @@ namespace AxibugProtobuf { [global::System.Diagnostics.DebuggerNonUserCodeAttribute] public static pbr::MessageDescriptor Descriptor { - get { return global::AxibugProtobuf.ProtobufAxibugEmuOnlineReflection.Descriptor.MessageTypes[14]; } + get { return global::AxibugProtobuf.ProtobufAxibugEmuOnlineReflection.Descriptor.MessageTypes[15]; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] @@ -3655,7 +3905,7 @@ namespace AxibugProtobuf { [global::System.Diagnostics.DebuggerNonUserCodeAttribute] public static pbr::MessageDescriptor Descriptor { - get { return global::AxibugProtobuf.ProtobufAxibugEmuOnlineReflection.Descriptor.MessageTypes[15]; } + get { return global::AxibugProtobuf.ProtobufAxibugEmuOnlineReflection.Descriptor.MessageTypes[16]; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] @@ -3878,7 +4128,7 @@ namespace AxibugProtobuf { [global::System.Diagnostics.DebuggerNonUserCodeAttribute] public static pbr::MessageDescriptor Descriptor { - get { return global::AxibugProtobuf.ProtobufAxibugEmuOnlineReflection.Descriptor.MessageTypes[16]; } + get { return global::AxibugProtobuf.ProtobufAxibugEmuOnlineReflection.Descriptor.MessageTypes[17]; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] @@ -4014,7 +4264,7 @@ namespace AxibugProtobuf { [global::System.Diagnostics.DebuggerNonUserCodeAttribute] public static pbr::MessageDescriptor Descriptor { - get { return global::AxibugProtobuf.ProtobufAxibugEmuOnlineReflection.Descriptor.MessageTypes[17]; } + get { return global::AxibugProtobuf.ProtobufAxibugEmuOnlineReflection.Descriptor.MessageTypes[18]; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] @@ -4178,7 +4428,7 @@ namespace AxibugProtobuf { [global::System.Diagnostics.DebuggerNonUserCodeAttribute] public static pbr::MessageDescriptor Descriptor { - get { return global::AxibugProtobuf.ProtobufAxibugEmuOnlineReflection.Descriptor.MessageTypes[18]; } + get { return global::AxibugProtobuf.ProtobufAxibugEmuOnlineReflection.Descriptor.MessageTypes[19]; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] @@ -4648,7 +4898,7 @@ namespace AxibugProtobuf { [global::System.Diagnostics.DebuggerNonUserCodeAttribute] public static pbr::MessageDescriptor Descriptor { - get { return global::AxibugProtobuf.ProtobufAxibugEmuOnlineReflection.Descriptor.MessageTypes[19]; } + get { return global::AxibugProtobuf.ProtobufAxibugEmuOnlineReflection.Descriptor.MessageTypes[20]; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] @@ -4979,7 +5229,7 @@ namespace AxibugProtobuf { [global::System.Diagnostics.DebuggerNonUserCodeAttribute] public static pbr::MessageDescriptor Descriptor { - get { return global::AxibugProtobuf.ProtobufAxibugEmuOnlineReflection.Descriptor.MessageTypes[20]; } + get { return global::AxibugProtobuf.ProtobufAxibugEmuOnlineReflection.Descriptor.MessageTypes[21]; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] @@ -5202,7 +5452,7 @@ namespace AxibugProtobuf { [global::System.Diagnostics.DebuggerNonUserCodeAttribute] public static pbr::MessageDescriptor Descriptor { - get { return global::AxibugProtobuf.ProtobufAxibugEmuOnlineReflection.Descriptor.MessageTypes[21]; } + get { return global::AxibugProtobuf.ProtobufAxibugEmuOnlineReflection.Descriptor.MessageTypes[22]; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] @@ -5455,7 +5705,7 @@ namespace AxibugProtobuf { [global::System.Diagnostics.DebuggerNonUserCodeAttribute] public static pbr::MessageDescriptor Descriptor { - get { return global::AxibugProtobuf.ProtobufAxibugEmuOnlineReflection.Descriptor.MessageTypes[22]; } + get { return global::AxibugProtobuf.ProtobufAxibugEmuOnlineReflection.Descriptor.MessageTypes[23]; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] @@ -5669,7 +5919,7 @@ namespace AxibugProtobuf { [global::System.Diagnostics.DebuggerNonUserCodeAttribute] public static pbr::MessageDescriptor Descriptor { - get { return global::AxibugProtobuf.ProtobufAxibugEmuOnlineReflection.Descriptor.MessageTypes[23]; } + get { return global::AxibugProtobuf.ProtobufAxibugEmuOnlineReflection.Descriptor.MessageTypes[24]; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] @@ -5961,7 +6211,7 @@ namespace AxibugProtobuf { [global::System.Diagnostics.DebuggerNonUserCodeAttribute] public static pbr::MessageDescriptor Descriptor { - get { return global::AxibugProtobuf.ProtobufAxibugEmuOnlineReflection.Descriptor.MessageTypes[24]; } + get { return global::AxibugProtobuf.ProtobufAxibugEmuOnlineReflection.Descriptor.MessageTypes[25]; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] @@ -6169,7 +6419,7 @@ namespace AxibugProtobuf { [global::System.Diagnostics.DebuggerNonUserCodeAttribute] public static pbr::MessageDescriptor Descriptor { - get { return global::AxibugProtobuf.ProtobufAxibugEmuOnlineReflection.Descriptor.MessageTypes[25]; } + get { return global::AxibugProtobuf.ProtobufAxibugEmuOnlineReflection.Descriptor.MessageTypes[26]; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] @@ -6353,7 +6603,7 @@ namespace AxibugProtobuf { [global::System.Diagnostics.DebuggerNonUserCodeAttribute] public static pbr::MessageDescriptor Descriptor { - get { return global::AxibugProtobuf.ProtobufAxibugEmuOnlineReflection.Descriptor.MessageTypes[26]; } + get { return global::AxibugProtobuf.ProtobufAxibugEmuOnlineReflection.Descriptor.MessageTypes[27]; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] @@ -6528,7 +6778,7 @@ namespace AxibugProtobuf { [global::System.Diagnostics.DebuggerNonUserCodeAttribute] public static pbr::MessageDescriptor Descriptor { - get { return global::AxibugProtobuf.ProtobufAxibugEmuOnlineReflection.Descriptor.MessageTypes[27]; } + get { return global::AxibugProtobuf.ProtobufAxibugEmuOnlineReflection.Descriptor.MessageTypes[28]; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] @@ -6712,7 +6962,7 @@ namespace AxibugProtobuf { [global::System.Diagnostics.DebuggerNonUserCodeAttribute] public static pbr::MessageDescriptor Descriptor { - get { return global::AxibugProtobuf.ProtobufAxibugEmuOnlineReflection.Descriptor.MessageTypes[28]; } + get { return global::AxibugProtobuf.ProtobufAxibugEmuOnlineReflection.Descriptor.MessageTypes[29]; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] @@ -6887,7 +7137,7 @@ namespace AxibugProtobuf { [global::System.Diagnostics.DebuggerNonUserCodeAttribute] public static pbr::MessageDescriptor Descriptor { - get { return global::AxibugProtobuf.ProtobufAxibugEmuOnlineReflection.Descriptor.MessageTypes[29]; } + get { return global::AxibugProtobuf.ProtobufAxibugEmuOnlineReflection.Descriptor.MessageTypes[30]; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] @@ -7062,7 +7312,7 @@ namespace AxibugProtobuf { [global::System.Diagnostics.DebuggerNonUserCodeAttribute] public static pbr::MessageDescriptor Descriptor { - get { return global::AxibugProtobuf.ProtobufAxibugEmuOnlineReflection.Descriptor.MessageTypes[30]; } + get { return global::AxibugProtobuf.ProtobufAxibugEmuOnlineReflection.Descriptor.MessageTypes[31]; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] @@ -7246,7 +7496,7 @@ namespace AxibugProtobuf { [global::System.Diagnostics.DebuggerNonUserCodeAttribute] public static pbr::MessageDescriptor Descriptor { - get { return global::AxibugProtobuf.ProtobufAxibugEmuOnlineReflection.Descriptor.MessageTypes[31]; } + get { return global::AxibugProtobuf.ProtobufAxibugEmuOnlineReflection.Descriptor.MessageTypes[32]; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] @@ -7410,7 +7660,7 @@ namespace AxibugProtobuf { [global::System.Diagnostics.DebuggerNonUserCodeAttribute] public static pbr::MessageDescriptor Descriptor { - get { return global::AxibugProtobuf.ProtobufAxibugEmuOnlineReflection.Descriptor.MessageTypes[32]; } + get { return global::AxibugProtobuf.ProtobufAxibugEmuOnlineReflection.Descriptor.MessageTypes[33]; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] @@ -7663,7 +7913,7 @@ namespace AxibugProtobuf { [global::System.Diagnostics.DebuggerNonUserCodeAttribute] public static pbr::MessageDescriptor Descriptor { - get { return global::AxibugProtobuf.ProtobufAxibugEmuOnlineReflection.Descriptor.MessageTypes[33]; } + get { return global::AxibugProtobuf.ProtobufAxibugEmuOnlineReflection.Descriptor.MessageTypes[34]; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] @@ -7799,7 +8049,7 @@ namespace AxibugProtobuf { [global::System.Diagnostics.DebuggerNonUserCodeAttribute] public static pbr::MessageDescriptor Descriptor { - get { return global::AxibugProtobuf.ProtobufAxibugEmuOnlineReflection.Descriptor.MessageTypes[34]; } + get { return global::AxibugProtobuf.ProtobufAxibugEmuOnlineReflection.Descriptor.MessageTypes[35]; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] @@ -8013,7 +8263,7 @@ namespace AxibugProtobuf { [global::System.Diagnostics.DebuggerNonUserCodeAttribute] public static pbr::MessageDescriptor Descriptor { - get { return global::AxibugProtobuf.ProtobufAxibugEmuOnlineReflection.Descriptor.MessageTypes[35]; } + get { return global::AxibugProtobuf.ProtobufAxibugEmuOnlineReflection.Descriptor.MessageTypes[36]; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] @@ -8188,7 +8438,7 @@ namespace AxibugProtobuf { [global::System.Diagnostics.DebuggerNonUserCodeAttribute] public static pbr::MessageDescriptor Descriptor { - get { return global::AxibugProtobuf.ProtobufAxibugEmuOnlineReflection.Descriptor.MessageTypes[36]; } + get { return global::AxibugProtobuf.ProtobufAxibugEmuOnlineReflection.Descriptor.MessageTypes[37]; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] @@ -8324,7 +8574,7 @@ namespace AxibugProtobuf { [global::System.Diagnostics.DebuggerNonUserCodeAttribute] public static pbr::MessageDescriptor Descriptor { - get { return global::AxibugProtobuf.ProtobufAxibugEmuOnlineReflection.Descriptor.MessageTypes[37]; } + get { return global::AxibugProtobuf.ProtobufAxibugEmuOnlineReflection.Descriptor.MessageTypes[38]; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] @@ -8616,7 +8866,7 @@ namespace AxibugProtobuf { [global::System.Diagnostics.DebuggerNonUserCodeAttribute] public static pbr::MessageDescriptor Descriptor { - get { return global::AxibugProtobuf.ProtobufAxibugEmuOnlineReflection.Descriptor.MessageTypes[38]; } + get { return global::AxibugProtobuf.ProtobufAxibugEmuOnlineReflection.Descriptor.MessageTypes[39]; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] @@ -8791,7 +9041,7 @@ namespace AxibugProtobuf { [global::System.Diagnostics.DebuggerNonUserCodeAttribute] public static pbr::MessageDescriptor Descriptor { - get { return global::AxibugProtobuf.ProtobufAxibugEmuOnlineReflection.Descriptor.MessageTypes[39]; } + get { return global::AxibugProtobuf.ProtobufAxibugEmuOnlineReflection.Descriptor.MessageTypes[40]; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] @@ -9044,7 +9294,7 @@ namespace AxibugProtobuf { [global::System.Diagnostics.DebuggerNonUserCodeAttribute] public static pbr::MessageDescriptor Descriptor { - get { return global::AxibugProtobuf.ProtobufAxibugEmuOnlineReflection.Descriptor.MessageTypes[40]; } + get { return global::AxibugProtobuf.ProtobufAxibugEmuOnlineReflection.Descriptor.MessageTypes[41]; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] @@ -9062,7 +9312,7 @@ namespace AxibugProtobuf { [global::System.Diagnostics.DebuggerNonUserCodeAttribute] public Protobuf_Game_Mark(Protobuf_Game_Mark other) : this() { romID_ = other.romID_; - state_ = other.state_; + motion_ = other.motion_; _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields); } @@ -9085,17 +9335,17 @@ namespace AxibugProtobuf { } } - /// Field number for the "state" field. - public const int StateFieldNumber = 2; - private int state_; + /// Field number for the "motion" field. + public const int MotionFieldNumber = 2; + private int motion_; /// - ///[0]收藏 [1]取消收藏 + ///[0]取消收藏[1]收藏 /// [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public int State { - get { return state_; } + public int Motion { + get { return motion_; } set { - state_ = value; + motion_ = value; } } @@ -9113,7 +9363,7 @@ namespace AxibugProtobuf { return true; } if (RomID != other.RomID) return false; - if (State != other.State) return false; + if (Motion != other.Motion) return false; return Equals(_unknownFields, other._unknownFields); } @@ -9121,7 +9371,7 @@ namespace AxibugProtobuf { public override int GetHashCode() { int hash = 1; if (RomID != 0) hash ^= RomID.GetHashCode(); - if (State != 0) hash ^= State.GetHashCode(); + if (Motion != 0) hash ^= Motion.GetHashCode(); if (_unknownFields != null) { hash ^= _unknownFields.GetHashCode(); } @@ -9142,9 +9392,9 @@ namespace AxibugProtobuf { output.WriteRawTag(8); output.WriteInt32(RomID); } - if (State != 0) { + if (Motion != 0) { output.WriteRawTag(16); - output.WriteInt32(State); + output.WriteInt32(Motion); } if (_unknownFields != null) { _unknownFields.WriteTo(output); @@ -9159,9 +9409,9 @@ namespace AxibugProtobuf { output.WriteRawTag(8); output.WriteInt32(RomID); } - if (State != 0) { + if (Motion != 0) { output.WriteRawTag(16); - output.WriteInt32(State); + output.WriteInt32(Motion); } if (_unknownFields != null) { _unknownFields.WriteTo(ref output); @@ -9175,8 +9425,8 @@ namespace AxibugProtobuf { if (RomID != 0) { size += 1 + pb::CodedOutputStream.ComputeInt32Size(RomID); } - if (State != 0) { - size += 1 + pb::CodedOutputStream.ComputeInt32Size(State); + if (Motion != 0) { + size += 1 + pb::CodedOutputStream.ComputeInt32Size(Motion); } if (_unknownFields != null) { size += _unknownFields.CalculateSize(); @@ -9192,8 +9442,8 @@ namespace AxibugProtobuf { if (other.RomID != 0) { RomID = other.RomID; } - if (other.State != 0) { - State = other.State; + if (other.Motion != 0) { + Motion = other.Motion; } _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields); } @@ -9214,7 +9464,7 @@ namespace AxibugProtobuf { break; } case 16: { - State = input.ReadInt32(); + Motion = input.ReadInt32(); break; } } @@ -9236,7 +9486,7 @@ namespace AxibugProtobuf { break; } case 16: { - State = input.ReadInt32(); + Motion = input.ReadInt32(); break; } } @@ -9258,7 +9508,7 @@ namespace AxibugProtobuf { [global::System.Diagnostics.DebuggerNonUserCodeAttribute] public static pbr::MessageDescriptor Descriptor { - get { return global::AxibugProtobuf.ProtobufAxibugEmuOnlineReflection.Descriptor.MessageTypes[41]; } + get { return global::AxibugProtobuf.ProtobufAxibugEmuOnlineReflection.Descriptor.MessageTypes[42]; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] @@ -9276,6 +9526,8 @@ namespace AxibugProtobuf { [global::System.Diagnostics.DebuggerNonUserCodeAttribute] public Protobuf_Game_Mark_RESP(Protobuf_Game_Mark_RESP other) : this() { romID_ = other.romID_; + isStar_ = other.isStar_; + stars_ = other.stars_; _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields); } @@ -9298,6 +9550,34 @@ namespace AxibugProtobuf { } } + /// Field number for the "IsStar" field. + public const int IsStarFieldNumber = 2; + private int isStar_; + /// + ///当前状态 [0]未收藏[1]已收藏 + /// + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public int IsStar { + get { return isStar_; } + set { + isStar_ = value; + } + } + + /// Field number for the "stars" field. + public const int StarsFieldNumber = 3; + private int stars_; + /// + ///当前收藏计数 + /// + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public int Stars { + get { return stars_; } + set { + stars_ = value; + } + } + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] public override bool Equals(object other) { return Equals(other as Protobuf_Game_Mark_RESP); @@ -9312,6 +9592,8 @@ namespace AxibugProtobuf { return true; } if (RomID != other.RomID) return false; + if (IsStar != other.IsStar) return false; + if (Stars != other.Stars) return false; return Equals(_unknownFields, other._unknownFields); } @@ -9319,6 +9601,8 @@ namespace AxibugProtobuf { public override int GetHashCode() { int hash = 1; if (RomID != 0) hash ^= RomID.GetHashCode(); + if (IsStar != 0) hash ^= IsStar.GetHashCode(); + if (Stars != 0) hash ^= Stars.GetHashCode(); if (_unknownFields != null) { hash ^= _unknownFields.GetHashCode(); } @@ -9339,6 +9623,14 @@ namespace AxibugProtobuf { output.WriteRawTag(8); output.WriteInt32(RomID); } + if (IsStar != 0) { + output.WriteRawTag(16); + output.WriteInt32(IsStar); + } + if (Stars != 0) { + output.WriteRawTag(24); + output.WriteInt32(Stars); + } if (_unknownFields != null) { _unknownFields.WriteTo(output); } @@ -9352,6 +9644,14 @@ namespace AxibugProtobuf { output.WriteRawTag(8); output.WriteInt32(RomID); } + if (IsStar != 0) { + output.WriteRawTag(16); + output.WriteInt32(IsStar); + } + if (Stars != 0) { + output.WriteRawTag(24); + output.WriteInt32(Stars); + } if (_unknownFields != null) { _unknownFields.WriteTo(ref output); } @@ -9364,6 +9664,12 @@ namespace AxibugProtobuf { if (RomID != 0) { size += 1 + pb::CodedOutputStream.ComputeInt32Size(RomID); } + if (IsStar != 0) { + size += 1 + pb::CodedOutputStream.ComputeInt32Size(IsStar); + } + if (Stars != 0) { + size += 1 + pb::CodedOutputStream.ComputeInt32Size(Stars); + } if (_unknownFields != null) { size += _unknownFields.CalculateSize(); } @@ -9378,6 +9684,12 @@ namespace AxibugProtobuf { if (other.RomID != 0) { RomID = other.RomID; } + if (other.IsStar != 0) { + IsStar = other.IsStar; + } + if (other.Stars != 0) { + Stars = other.Stars; + } _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields); } @@ -9396,6 +9708,14 @@ namespace AxibugProtobuf { RomID = input.ReadInt32(); break; } + case 16: { + IsStar = input.ReadInt32(); + break; + } + case 24: { + Stars = input.ReadInt32(); + break; + } } } #endif @@ -9414,6 +9734,14 @@ namespace AxibugProtobuf { RomID = input.ReadInt32(); break; } + case 16: { + IsStar = input.ReadInt32(); + break; + } + case 24: { + Stars = input.ReadInt32(); + break; + } } } } diff --git a/ProtobufCore/proto/protobuf_AxibugEmuOnline.proto b/ProtobufCore/proto/protobuf_AxibugEmuOnline.proto index ceb6c3d3..b2bdc376 100644 --- a/ProtobufCore/proto/protobuf_AxibugEmuOnline.proto +++ b/ProtobufCore/proto/protobuf_AxibugEmuOnline.proto @@ -210,6 +210,13 @@ message Protobuf_Login_RESP } +//Token结构,但用于逻辑里配置加密密钥,放置于服务端加密后,发放token +message Protobuf_Token_Struct +{ + int64 UID = 1; + int64 TokenGenDate = 2; + int64 Seed = 3; +} //获取在线用户列表 上行 message Protobuf_UserList @@ -426,10 +433,12 @@ message Protobuf_Room_Get_Screen_RESP message Protobuf_Game_Mark { int32 RomID = 1;//RomID - int32 state = 2;//[0]收藏 [1]取消收藏 + int32 motion = 2;//[0]取消收藏[1]收藏 } message Protobuf_Game_Mark_RESP { int32 RomID = 1;//RomID + int32 IsStar = 2;//当前状态 [0]未收藏[1]已收藏 + int32 stars = 3;//当前收藏计数 } \ No newline at end of file