From c44b10e4447e84dbdfa9105edf460ef364a8f2b3 Mon Sep 17 00:00:00 2001
From: 陈嘉乐 <cjl@hdlchina.com.cn>
Date: 星期一, 30 十一月 2020 19:53:35 +0800
Subject: [PATCH] Merge branch 'master' into WJC

---
 HDL_ON/UI/UI0-Public/TopViewDivBLL.cs                                                    |   15 
 HDL-ON_iOS/HDL-ON_iOS.csproj                                                             |   32 
 HDL_ON/UI/UI2/2-Classification/RoomPage.cs                                               |    6 
 HDL_ON/UI/UI0-Public/Widget/WebViewDialog.cs                                             |   51 
 HDL-ON_Android/Assets/Phone/PersonalCenter/ServerInfo.png                                |    0 
 HDL-ON_Android/Assets/Phone/PersonalCenter/Support/Scene.png                             |    0 
 HDL_ON/HDL_ON.projitems                                                                  |  103 
 HDL_ON/UI/UI0-Public/Widget/TextButton.cs                                                |  115 
 DLL/Android/Shared.Droid.JLCountryCode.dll                                               |    0 
 HDL_ON/DAL/Server/IMessageCommon.cs                                                      |  329 +
 HDL_ON/UI/UI2/FuntionControlView/Music/SendMethod.cs                                     |    2 
 HDL_ON/Entity/Function/Sensor.cs                                                         |   28 
 HDL_ON/UI/UI2/4-PersonalCenter/GetSupport/QuestionListPage.cs                            |   66 
 HDL-ON_iOS/Resources/Phone/PersonalCenter/Support/Scene.png                              |    0 
 HDL_ON/UI/UI2/1-HomePage/HomePageBLL.cs                                                  |   58 
 HDL_ON/DAL/Server/NewApiRes.cs                                                           | 1284 ++++
 HDL_ON/Entity/Enumerative/MyEnum.cs                                                      |    4 
 HDL_ON/UI/UI2/FuntionControlView/Curtain/RollingShutterPageBLL.cs                        |   33 
 HDL-ON_Android/Resources/Resource.designer.cs                                            | 1172 ++-
 HDL_ON/DAL/Server/HttpServerRequestBase.cs                                               |    2 
 HDL_ON/UI/UI0-Public/UpdataSidDataDialog.cs                                              |   12 
 HDL_ON/UI/UI0-Public/Widget/ListCellView.cs                                              |  126 
 HDL_ON/UI/UI2/4-PersonalCenter/AccountBindInfo/ChangeBindAccountPage.cs                  |  155 
 HDL_ON/UI/UI2/4-PersonalCenter/RoomListManage/ResidentialManagePage.cs                   |   26 
 HDL_ON/DAL/FileUtils.cs                                                                  |  202 
 HDL_ON/Common/Constant.cs                                                                |  193 
 HDL_ON/UI/UI2/4-PersonalCenter/PersonalDataPageBLL.cs                                    |  214 
 HDL_ON/UI/UI2/FuntionControlView/Electrical/FanPage.cs                                   |    4 
 HDL_ON/UI/UI2/FuntionControlView/Light/RGBPageBLL.cs                                     |   23 
 HDL_ON/UI/UI2/3-Intelligence/Scene/SceneEditPage.cs                                      |   30 
 HDL_ON/UI/UI2/FuntionControlView/FoolHeating/FloorHeatingPage.cs                         |   24 
 HDL_ON/UI/UI2/4-PersonalCenter/PersonalCenterPageBLL.cs                                  |   32 
 HDL_ON/UI/UI1-Login/LoginPageBLL.cs                                                      |  415 
 HDL_ON/Entity/DB_ResidenceData.cs                                                        |   35 
 HDL_ON/UI/UI2/4-PersonalCenter/MemberManagement/ChooseShareMemberTargetListPage.cs       |    2 
 HDL_ON/UI/UI2/FuntionControlView/Curtain/MotorCurtainPageBLL.cs                          |   33 
 HDL_ON/DAL/DriverLayer/Control_Udp.cs                                                    |  299 
 DLL/IOS/Shared.IOS.JLCountryCode.dll                                                     |    0 
 HDL_ON/UI/UI0-Public/TopViewDiv.cs                                                       |   53 
 HDL-ON_iOS/Resources/Phone/Public/Dialog/DialogTipTitleIcon_1.png                        |    0 
 HDL_ON/UI/UI2/4-PersonalCenter/AccountBindInfo/NewBindVerificationCodePage.cs            |  306 
 HDL_ON/UI/UI2/FuntionControlView/EnvironmentalScience/EnvironmentalSciencePage.cs        |    2 
 HDL-ON_Android/Assets/Phone/PersonalCenter/Support/Menu.png                              |    0 
 HDL_ON/UI/UI2/4-PersonalCenter/PersonalCenterPage.cs                                     |   16 
 HDL_ON/UI/UI2/3-Intelligence/Scene/SetSceneFunctionInfoPage.cs                           |   60 
 HDL-ON_iOS/Resources/Phone/PersonalCenter/Support/Help.png                               |    0 
 HDL_ON/UI/UI2/4-PersonalCenter/RoomListManage/FloorsManagementPage.cs                    |    4 
 HDL_ON/UI/UI2/4-PersonalCenter/MemberManagement/AddMemberScanPage.cs                     |    2 
 HDL_ON/Entity/ResponseEntity/RegionInfoRes.cs                                            |  227 
 HDL_ON/DAL/DriverLayer/CRC.cs                                                            |    2 
 HDL_ON/UI/UI2/4-PersonalCenter/MemberManagement/MemberManagementPage.cs                  |    6 
 HDL-ON_Android/Assets/Phone/PersonalCenter/Support/Close.png                             |    0 
 HDL_ON/UI/UI2/FuntionControlView/Light/RGBPage.cs                                        |    4 
 HDL_ON/UI/UI0-Public/Widget/EmptyTipView.cs                                              |   55 
 HDL_ON/UI/UI2/4-PersonalCenter/SearchDevice/SearchDevicePage.cs                          |   64 
 .vs/HDL_APP_Project/xs/project-cache/HDL-ON_iOS-Debug|iPhone.json                        |    2 
 HDL-ON_iOS/Resources/Phone/PersonalCenter/Head.png                                       |    0 
 HDL_ON/UI/UI2/4-PersonalCenter/MemberManagement/MemberFunctionPermissionPageBLL.cs       |   37 
 HDL_ON/UI/UI2/FuntionControlView/Light/DimmerPageBLL.cs                                  |   19 
 HDL-ON_iOS/AppDelegate.cs                                                                |   24 
 HDL_ON/UI/UI1-Login/ForgetPasswordPageBLL.cs                                             |  216 
 HDL_ON/UI/UI2/FuntionControlView/Light/DimmerPage.cs                                     |    4 
 HDL-ON_iOS/Resources/Language.ini                                                        |   59 
 HDL_ON/UI/UI0-Public/Widget/ConfirmButton.cs                                             |   28 
 HDL_ON/DAL/Mqtt/MqttInfoConfig.cs                                                        |   78 
 HDL_ON/UI/UI2/4-PersonalCenter/GetSupport/FAQHelpPage.cs                                 |  287 +
 HDL_ON/UI/UI1-Login/RegisterPageBLL.cs                                                   |  370 
 HDL_ON/UI/UI2/4-PersonalCenter/AccountBindInfo/ChangeBindVerificationCodePage.cs         |  182 
 HDL_ON/UI/UI2/4-PersonalCenter/MemberManagement/MemberFunctionPermissionPage.cs          |    4 
 HDL_ON/UI/UI2/4-PersonalCenter/AboutOn/AboutOnPage.cs                                    |  332 +
 HDL_ON/UI/UI2/2-Classification/ClassificaitionPublicBLL.cs                               |   10 
 HDL_ON/DAL/DriverLayer/Packet.cs                                                         |  115 
 HDL_ON/UI/UI2/FuntionControlView/AC/ACPageBLL.cs                                         |   61 
 HDL_ON/DAL/DriverLayer/Control.cs                                                        |  367 +
 HDL-ON_iOS/Resources/Phone/PersonalCenter/Support/Function.png                           |    0 
 HDL_ON/UI/UI2/4-PersonalCenter/MemberManagement/ChooseShareMemberTargetListPageBLL.cs    |   67 
 HDL_ON/Entity/ResponseEntity/ResidenceMemberInfo.cs                                      |  160 
 HDL_APP_Project.sln                                                                      |   28 
 HDL_ON/UI/UI2/4-PersonalCenter/MemberManagement/MemberPermissionPageBLL.cs               |    4 
 HDL_ON/Entity/Function/TV.cs                                                             |    6 
 HDL_ON/UI/UI2/4-PersonalCenter/RoomListManage/RoomEditFunctionPage.cs                    |    4 
 HDL_ON/UI/UI1-Login/RegisterPage.cs                                                      |  212 
 HDL_ON/UI/UI2/4-PersonalCenter/MemberManagement/MemberManagementPageBLL.cs               |  148 
 HDL_ON/Entity/Function/Curtain.cs                                                        |   16 
 HDL_ON/Entity/OnAppConfig.cs                                                             |   13 
 HDL_ON/UI/UI2/4-PersonalCenter/AboutOn/FunctionIntroductionPage.cs                       |  183 
 HDL-ON_Android/Assets/Phone/Public/Dialog/DialogTipTitleIcon_2.png                       |    0 
 HDL_ON/UI/UI2/4-PersonalCenter/MyQRCodePage.cs                                           |  117 
 HDL_ON/DAL/DriverLayer/Target.cs                                                         |    9 
 HDL_ON/UI/UI2/4-PersonalCenter/MyServerInfoPage.cs                                       |  106 
 HDL_ON/DAL/Server/HttpServerRequest.cs                                                   | 1305 +++-
 HDL_ON/UI/UI2/FuntionControlView/FoolHeating/FloorHeatingPageBLL.cs                      |   45 
 HDL-ON_Android/Assets/Phone/PersonalCenter/Support/Search.png                            |    0 
 HDL_ON/UI/UI2/4-PersonalCenter/AccountBindInfo/AccountBindInfoPage.cs                    |   45 
 HDL-ON_Android/Assets/Phone/PersonalCenter/Support/SendMessage.png                       |    0 
 HDL_ON/DAL/DriverLayer/Control_TcpServer.cs                                              |  138 
 HDL_ON/UI/UI2/4-PersonalCenter/UnlockSetting/AppUnlockPasswordPage.cs                    |   41 
 HDL_ON/UI/UI2/4-PersonalCenter/SearchDevice/VoicePanelScenePage.cs                       |    4 
 HDL_ON/UI/UI2/FuntionControlView/Electrical/TVPageBLL.cs                                 |    1 
 HDL-ON_Android/Assets/Phone/PersonalCenter/Head.png                                      |    0 
 HDL_ON/UI/UI1-Login/ForgetPasswordPage.cs                                                |   24 
 HDL_ON/UI/UI0-Public/AppUnlockPage.cs                                                    |    2 
 HDL_ON/DAL/Mqtt/MqttClient.cs                                                            |  802 ++
 HDL_ON/Entity/Function/FloorHeating.cs                                                   |   44 
 HDL_ON/UI/UI2/4-PersonalCenter/RoomListManage/Transfer/TransferConfirmPage.cs            |  101 
 HDL-ON_Android/Assets/Phone/Public/Search.png                                            |    0 
 HDL_ON/UI/UI2/4-PersonalCenter/SearchDevice/VoicePanelSceneListPage.cs                   |   12 
 HDL-ON_Android/HDL-ON_Android.csproj                                                     |   11 
 HDL-ON_Android/Assets/Phone/PersonalCenter/Support/Function.png                          |    0 
 HDL-ON_iOS/Info.plist                                                                    |   26 
 HDL_ON/Entity/Function/Fan.cs                                                            |   16 
 HDL_ON/Common/HDLCommon.cs                                                               |  184 
 HDL-ON_iOS/Resources/Phone/PersonalCenter/ServerInfo.png                                 |    0 
 HDL_ON/UI/UI2/4-PersonalCenter/PersonalDataPage.cs                                       |   97 
 HDL_ON/UI/UI2/FuntionControlView/Light/RelayPage.cs                                      |    4 
 .DS_Store                                                                                |    0 
 HDL_ON/UI/UI2/2-Classification/FunctionControlZoneBLL.cs                                 |   42 
 HDL-ON_iOS/Resources/Phone/PersonalCenter/Support/SendMessage.png                        |    0 
 HDL_ON/UI/UI0-Public/Widget/UpdateTipDialog.cs                                           |  345 +
 HDL_ON/UI/UI1-Login/LoginPage.cs                                                         |  180 
 HDL_ON/UI/.DS_Store                                                                      |    0 
 HDL_ON/UI/UI2/4-PersonalCenter/MemberManagement/MemberPermissionPage.cs                  |    9 
 HDL_ON/UI/UI2/FuntionControlView/AC/ACPage.cs                                            |   44 
 HDL-ON_iOS/Resources/Phone/Public/Dialog/DialogTipTitleIcon_2.png                        |    0 
 HDL_ON/UI/UI2/FuntionControlView/EnvironmentalScience/EnvironmentalSensorPage.cs         |    5 
 HDL_ON/UI/UI2/2-Classification/ClassificationPage.cs                                     |   28 
 HDL-ON_iOS/Resources/Phone/PersonalCenter/Support/Telephone.png                          |    0 
 HDL_ON/UI/UI2/FuntionControlView/Electrical/SocketPageBLL.cs                             |   15 
 HDL_ON/UI/UI2/4-PersonalCenter/AccountBindInfo/NewBindAccountPage.cs                     |  347 +
 HDL-ON_Android/Assets/Phone/PersonalCenter/Transfer.png                                  |    0 
 HDL_ON/Entity/Function/Function.cs                                                       |   92 
 HDL_ON/UI/UI2/2-Classification/FunctionControlZone.cs                                    |   14 
 HDL_ON/DAL/Server/HttpUtil.cs                                                            |  557 +
 HDL_ON/UI/UI0-Public/OperationSuccessPromptPage.cs                                       |    4 
 HDL_ON/UI/UI2/4-PersonalCenter/ResetAccountPassword/ResetPasswordVerificationCodePage.cs |  325 
 HDL-ON_iOS/Resources/Phone/PersonalCenter/Support/Search.png                             |    0 
 HDL_ON/DAL/DriverLayer/Control_TcpClient.cs                                              |   12 
 HDL_ON/UI/UI2/4-PersonalCenter/UnlockSetting/AppUnlockGesturePage.cs                     |   42 
 HDL-ON_iOS/Resources/Phone/PersonalCenter/Support/Close.png                              |    0 
 HDL_ON/UI/UI2/4-PersonalCenter/RoomListManage/ResidentialManagePageBLL.cs                |   83 
 HDL-ON_Android/Assets/Phone/Public/Dialog/DialogTipTitleIcon_1.png                       |    0 
 HDL_ON/DAL/DriverLayer/UdpSocket.cs                                                      |   59 
 HDL_ON/UI/UI2/1-HomePage/HomePage.cs                                                     |   19 
 HDL_ON/Entity/Function/Light.cs                                                          |   68 
 HDL-ON_Android/Assets/Phone/PersonalCenter/Support/Telephone.png                         |    0 
 HDL_ON/UI/UI0-Public/Widget/ConfirmDialog.cs                                             |  180 
 HDL_ON/DAL/DriverLayer/A_Protocol_Common.cs                                              |   87 
 HDL_ON/Entity/UserInfo.cs                                                                |  133 
 HDL_ON/UI/UI2/4-PersonalCenter/AccountBindInfo/BindAccountPage.cs                        |  387 
 HDL_ON/UI/UI2/2-Classification/RoomPageBLL.cs                                            |    2 
 HDL_ON/UI/UI2/4-PersonalCenter/AboutOn/ComplaintsPage.cs                                 |  174 
 HDL_ON/UI/UI2/FuntionControlView/Electrical/SocketPage.cs                                |    4 
 HDL-ON_Android/Assets/Phone/LoginIcon/Server.png                                         |    0 
 HDL-ON_iOS/Resources/Phone/Public/Dialog/DialogTipTitleIcon_3.png                        |    0 
 HDL_ON/Common/Utlis.cs                                                                   |  276 
 HDL_ON/Entity/Function/AC.cs                                                             |   88 
 HDL_ON/UI/UI2/2-Classification/ClassificationPageBLL.cs                                  |   56 
 HDL-ON_Android/Other/JLCountrycode.cs                                                    |   56 
 HDL_ON/UI/MainPage.cs                                                                    |   85 
 HDL-ON_Android/Application.cs                                                            |    1 
 HDL_ON/UI/UI2/FuntionControlView/Curtain/CurtainModulePageBLL.cs                         |   25 
 HDL_ON/UI/UI0-Public/Widget/ListIconCellView.cs                                          |  100 
 HDL-ON_iOS/Resources/Phone/LoginIcon/Server.png                                          |    0 
 HDL-ON_Android/Assets/Phone/Public/Dialog/DialogTipTitleIcon_3.png                       |    0 
 HDL-ON_iOS/Other/JLCountrycode.cs                                                        |   44 
 HDL_ON/UI/UI2/FuntionControlView/Light/RelayPageBLL.cs                                   |   15 
 HDL_ON/Entity/Device/DeviceModule.cs                                                     |   18 
 HDL_ON/UI/UI2/4-PersonalCenter/ResetAccountPassword/ResetPasswordOptionPage.cs           |   54 
 HDL_ON/UI/UI2/4-PersonalCenter/ResetAccountPassword/ResetPasswordPage.cs                 |  313 
 HDL_ON/UI/UI2/FuntionControlView/Electrical/FanPageBLL.cs                                |   23 
 HDL-ON_Android/Assets/Phone/PersonalCenter/Support/Help.png                              |    0 
 HDL_ON/UI/UI1-Login/SelectServerDialog.cs                                                |  161 
 /dev/null                                                                                |   56 
 HDL_ON/UI/UI2/4-PersonalCenter/MemberManagement/AddMemberScanPageBLL.cs                  |  102 
 HDL_ON/DAL/Server/NewAPI.cs                                                              |  310 +
 HDL-ON_iOS/Resources/Phone/Public/Search.png                                             |    0 
 HDL-ON_iOS/Resources/Phone/PersonalCenter/Support/Menu.png                               |    0 
 HDL-ON_iOS/Resources/Phone/PersonalCenter/Transfer.png                                   |    0 
 HDL_ON/UI/UI2/4-PersonalCenter/GetSupport/GetSupportPage.cs                              |   13 
 HDL_ON/UI/UI0-Public/Widget/LineView.cs                                                  |   34 
 180 files changed, 13,233 insertions(+), 3,950 deletions(-)

diff --git a/.DS_Store b/.DS_Store
index 96b02c2..08d6619 100644
--- a/.DS_Store
+++ b/.DS_Store
Binary files differ
diff --git a/.vs/HDL_APP_Project/xs/project-cache/HDL-ON_iOS-Debug|iPhone.json b/.vs/HDL_APP_Project/xs/project-cache/HDL-ON_iOS-Debug|iPhone.json
index d367313..2a22faf 100644
--- a/.vs/HDL_APP_Project/xs/project-cache/HDL-ON_iOS-Debug|iPhone.json
+++ b/.vs/HDL_APP_Project/xs/project-cache/HDL-ON_iOS-Debug|iPhone.json
@@ -1 +1 @@
-{"Format":1,"ProjectReferences":[],"MetadataReferences":[{"FilePath":"/Users/nigel/.nuget/packages/microsoft.appcenter.analytics/3.1.0/lib/Xamarin.iOS10/Microsoft.AppCenter.Analytics.dll","Aliases":[],"Framework":null},{"FilePath":"/Users/nigel/.nuget/packages/microsoft.appcenter.analytics/3.1.0/lib/Xamarin.iOS10/Microsoft.AppCenter.Analytics.iOS.Bindings.dll","Aliases":[],"Framework":null},{"FilePath":"/Users/nigel/.nuget/packages/microsoft.appcenter.crashes/3.1.0/lib/Xamarin.iOS10/Microsoft.AppCenter.Crashes.dll","Aliases":[],"Framework":null},{"FilePath":"/Users/nigel/.nuget/packages/microsoft.appcenter.crashes/3.1.0/lib/Xamarin.iOS10/Microsoft.AppCenter.Crashes.iOS.Bindings.dll","Aliases":[],"Framework":null},{"FilePath":"/Users/nigel/.nuget/packages/microsoft.appcenter/3.1.0/lib/Xamarin.iOS10/Microsoft.AppCenter.dll","Aliases":[],"Framework":null},{"FilePath":"/Users/nigel/.nuget/packages/microsoft.appcenter/3.1.0/lib/Xamarin.iOS10/Microsoft.AppCenter.iOS.Bindings.dll","Aliases":[],"Framework":null},{"FilePath":"/Users/nigel/Desktop/HDL_APP_Project/DLL/IOS/MJRefresh_Xamarin.dll","Aliases":[],"Framework":null},{"FilePath":"/Users/nigel/.nuget/packages/mqttnet/3.0.8/lib/netstandard2.0/MQTTnet.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.iOS.framework/Versions/14.2.0.12/lib/mono/Xamarin.iOS/mscorlib.dll","Aliases":[],"Framework":null},{"FilePath":"/Users/nigel/.nuget/packages/newtonsoft.json/12.0.2/lib/netstandard2.0/Newtonsoft.Json.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.iOS.framework/Versions/14.2.0.12/lib/mono/Xamarin.iOS/OpenTK-1.0.dll","Aliases":[],"Framework":null},{"FilePath":"/Users/nigel/Desktop/HDL_APP_Project/DLL/Shared.IOS.dll","Aliases":[],"Framework":null},{"FilePath":"/Users/nigel/Desktop/HDL_APP_Project/DLL/Shared.IOS.TBL.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.iOS.framework/Versions/14.2.0.12/lib/mono/Xamarin.iOS/System.Core.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.iOS.framework/Versions/14.2.0.12/lib/mono/Xamarin.iOS/System.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.iOS.framework/Versions/14.2.0.12/lib/mono/Xamarin.iOS/Facades/System.Drawing.Common.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.iOS.framework/Versions/14.2.0.12/lib/mono/Xamarin.iOS/System.Numerics.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.iOS.framework/Versions/14.2.0.12/lib/mono/Xamarin.iOS/System.Numerics.Vectors.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.iOS.framework/Versions/14.2.0.12/lib/mono/Xamarin.iOS/System.Web.Services.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.iOS.framework/Versions/14.2.0.12/lib/mono/Xamarin.iOS/System.Xml.dll","Aliases":[],"Framework":null},{"FilePath":"/Users/nigel/.nuget/packages/xamarin.essentials/1.1.0/lib/xamarinios10/Xamarin.Essentials.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.iOS.framework/Versions/14.2.0.12/lib/mono/Xamarin.iOS/Xamarin.iOS.dll","Aliases":[],"Framework":null},{"FilePath":"/Users/nigel/.nuget/packages/zxing.net.mobile/2.4.1/lib/Xamarin.iOS10/ZXing.Net.Mobile.Core.dll","Aliases":[],"Framework":null},{"FilePath":"/Users/nigel/.nuget/packages/zxing.net.mobile/2.4.1/lib/Xamarin.iOS10/zxing.portable.dll","Aliases":[],"Framework":null},{"FilePath":"/Users/nigel/.nuget/packages/zxing.net.mobile/2.4.1/lib/Xamarin.iOS10/ZXingNetMobile.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.iOS.framework/Versions/14.2.0.12/lib/mono/Xamarin.iOS/Facades/System.Diagnostics.Contracts.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.iOS.framework/Versions/14.2.0.12/lib/mono/Xamarin.iOS/Facades/System.Diagnostics.FileVersionInfo.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.iOS.framework/Versions/14.2.0.12/lib/mono/Xamarin.iOS/Facades/System.Net.Security.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.iOS.framework/Versions/14.2.0.12/lib/mono/Xamarin.iOS/Facades/System.Xml.XPath.XDocument.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.iOS.framework/Versions/14.2.0.12/lib/mono/Xamarin.iOS/Facades/System.Net.WebSockets.Client.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.iOS.framework/Versions/14.2.0.12/lib/mono/Xamarin.iOS/Facades/System.IO.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.iOS.framework/Versions/14.2.0.12/lib/mono/Xamarin.iOS/Facades/System.Dynamic.Runtime.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.iOS.framework/Versions/14.2.0.12/lib/mono/Xamarin.iOS/Facades/System.Runtime.Serialization.Xml.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.iOS.framework/Versions/14.2.0.12/lib/mono/Xamarin.iOS/Facades/System.Security.Principal.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.iOS.framework/Versions/14.2.0.12/lib/mono/Xamarin.iOS/Facades/System.Reflection.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.iOS.framework/Versions/14.2.0.12/lib/mono/Xamarin.iOS/Facades/System.Threading.ThreadPool.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.iOS.framework/Versions/14.2.0.12/lib/mono/Xamarin.iOS/Facades/System.Security.Cryptography.Cng.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.iOS.framework/Versions/14.2.0.12/lib/mono/Xamarin.iOS/Facades/System.ComponentModel.EventBasedAsync.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.iOS.framework/Versions/14.2.0.12/lib/mono/Xamarin.iOS/Facades/System.Security.Cryptography.Encryption.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.iOS.framework/Versions/14.2.0.12/lib/mono/Xamarin.iOS/Facades/System.Runtime.CompilerServices.VisualC.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.iOS.framework/Versions/14.2.0.12/lib/mono/Xamarin.iOS/Facades/System.Threading.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.iOS.framework/Versions/14.2.0.12/lib/mono/Xamarin.iOS/Facades/System.Security.Cryptography.DeriveBytes.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.iOS.framework/Versions/14.2.0.12/lib/mono/Xamarin.iOS/Facades/netstandard.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.iOS.framework/Versions/14.2.0.12/lib/mono/Xamarin.iOS/Facades/System.IO.UnmanagedMemoryStream.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.iOS.framework/Versions/14.2.0.12/lib/mono/Xamarin.iOS/Facades/System.ServiceModel.Http.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.iOS.framework/Versions/14.2.0.12/lib/mono/Xamarin.iOS/Facades/System.IO.FileSystem.AccessControl.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.iOS.framework/Versions/14.2.0.12/lib/mono/Xamarin.iOS/Facades/System.Xml.XPath.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.iOS.framework/Versions/14.2.0.12/lib/mono/Xamarin.iOS/Facades/System.Xml.XmlDocument.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.iOS.framework/Versions/14.2.0.12/lib/mono/Xamarin.iOS/Facades/System.Xml.Xsl.Primitives.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.iOS.framework/Versions/14.2.0.12/lib/mono/Xamarin.iOS/Facades/System.Resources.Writer.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.iOS.framework/Versions/14.2.0.12/lib/mono/Xamarin.iOS/Facades/System.Console.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.iOS.framework/Versions/14.2.0.12/lib/mono/Xamarin.iOS/Facades/System.Net.Cache.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.iOS.framework/Versions/14.2.0.12/lib/mono/Xamarin.iOS/Facades/System.Net.Sockets.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.iOS.framework/Versions/14.2.0.12/lib/mono/Xamarin.iOS/Facades/System.Text.Encoding.Extensions.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.iOS.framework/Versions/14.2.0.12/lib/mono/Xamarin.iOS/Facades/System.Net.NetworkInformation.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.iOS.framework/Versions/14.2.0.12/lib/mono/Xamarin.iOS/Facades/System.Net.Utilities.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.iOS.framework/Versions/14.2.0.12/lib/mono/Xamarin.iOS/Facades/System.Security.Principal.Windows.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.iOS.framework/Versions/14.2.0.12/lib/mono/Xamarin.iOS/Facades/System.Security.Claims.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.iOS.framework/Versions/14.2.0.12/lib/mono/Xamarin.iOS/Facades/System.ServiceModel.Primitives.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.iOS.framework/Versions/14.2.0.12/lib/mono/Xamarin.iOS/Facades/System.Security.Cryptography.Hashing.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.iOS.framework/Versions/14.2.0.12/lib/mono/Xamarin.iOS/Facades/System.ComponentModel.Primitives.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.iOS.framework/Versions/14.2.0.12/lib/mono/Xamarin.iOS/Facades/System.IO.FileSystem.DriveInfo.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.iOS.framework/Versions/14.2.0.12/lib/mono/Xamarin.iOS/Facades/System.Security.Cryptography.X509Certificates.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.iOS.framework/Versions/14.2.0.12/lib/mono/Xamarin.iOS/Facades/System.Reflection.Primitives.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.iOS.framework/Versions/14.2.0.12/lib/mono/Xamarin.iOS/Facades/System.Runtime.Numerics.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.iOS.framework/Versions/14.2.0.12/lib/mono/Xamarin.iOS/Facades/System.IO.FileSystem.Watcher.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.iOS.framework/Versions/14.2.0.12/lib/mono/Xamarin.iOS/Facades/System.Diagnostics.TraceSource.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.iOS.framework/Versions/14.2.0.12/lib/mono/Xamarin.iOS/Facades/System.Reflection.Emit.Lightweight.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.iOS.framework/Versions/14.2.0.12/lib/mono/Xamarin.iOS/Facades/System.Text.Encoding.CodePages.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.iOS.framework/Versions/14.2.0.12/lib/mono/Xamarin.iOS/Facades/System.Linq.Expressions.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.iOS.framework/Versions/14.2.0.12/lib/mono/Xamarin.iOS/Facades/System.Threading.Timer.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.iOS.framework/Versions/14.2.0.12/lib/mono/Xamarin.iOS/Facades/System.Runtime.InteropServices.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.iOS.framework/Versions/14.2.0.12/lib/mono/Xamarin.iOS/Facades/System.IO.Pipes.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.iOS.framework/Versions/14.2.0.12/lib/mono/Xamarin.iOS/Facades/System.Net.HttpListener.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.iOS.framework/Versions/14.2.0.12/lib/mono/Xamarin.iOS/Facades/System.Text.RegularExpressions.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.iOS.framework/Versions/14.2.0.12/lib/mono/Xamarin.iOS/Facades/System.Threading.Tasks.Parallel.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.iOS.framework/Versions/14.2.0.12/lib/mono/Xamarin.iOS/Facades/System.Collections.NonGeneric.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.iOS.framework/Versions/14.2.0.12/lib/mono/Xamarin.iOS/Facades/System.Collections.Concurrent.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.iOS.framework/Versions/14.2.0.12/lib/mono/Xamarin.iOS/Facades/System.Threading.Overlapped.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.iOS.framework/Versions/14.2.0.12/lib/mono/Xamarin.iOS/Facades/System.Security.Cryptography.Pkcs.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.iOS.framework/Versions/14.2.0.12/lib/mono/Xamarin.iOS/Facades/System.Runtime.Handles.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.iOS.framework/Versions/14.2.0.12/lib/mono/Xamarin.iOS/Facades/System.Data.SqlClient.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.iOS.framework/Versions/14.2.0.12/lib/mono/Xamarin.iOS/Facades/System.ObjectModel.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.iOS.framework/Versions/14.2.0.12/lib/mono/Xamarin.iOS/Facades/System.Net.WebHeaderCollection.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.iOS.framework/Versions/14.2.0.12/lib/mono/Xamarin.iOS/Facades/System.Runtime.InteropServices.RuntimeInformation.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.iOS.framework/Versions/14.2.0.12/lib/mono/Xamarin.iOS/Facades/System.ComponentModel.TypeConverter.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.iOS.framework/Versions/14.2.0.12/lib/mono/Xamarin.iOS/Facades/System.Net.Mail.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.iOS.framework/Versions/14.2.0.12/lib/mono/Xamarin.iOS/Facades/System.Threading.Tasks.Extensions.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.iOS.framework/Versions/14.2.0.12/lib/mono/Xamarin.iOS/Facades/System.Linq.Parallel.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.iOS.framework/Versions/14.2.0.12/lib/mono/Xamarin.iOS/Facades/System.Xml.XDocument.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.iOS.framework/Versions/14.2.0.12/lib/mono/Xamarin.iOS/Facades/System.Security.SecureString.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.iOS.framework/Versions/14.2.0.12/lib/mono/Xamarin.iOS/Facades/Microsoft.Win32.Registry.AccessControl.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.iOS.framework/Versions/14.2.0.12/lib/mono/Xamarin.iOS/Facades/System.Security.Cryptography.RSA.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.iOS.framework/Versions/14.2.0.12/lib/mono/Xamarin.iOS/Facades/System.ComponentModel.Annotations.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.iOS.framework/Versions/14.2.0.12/lib/mono/Xamarin.iOS/Facades/System.IO.FileSystem.Primitives.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.iOS.framework/Versions/14.2.0.12/lib/mono/Xamarin.iOS/Facades/System.Security.Cryptography.Primitives.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.iOS.framework/Versions/14.2.0.12/lib/mono/Xamarin.iOS/Facades/System.IO.Compression.ZipFile.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.iOS.framework/Versions/14.2.0.12/lib/mono/Xamarin.iOS/Facades/System.Runtime.InteropServices.WindowsRuntime.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.iOS.framework/Versions/14.2.0.12/lib/mono/Xamarin.iOS/Facades/System.Linq.Queryable.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.iOS.framework/Versions/14.2.0.12/lib/mono/Xamarin.iOS/Facades/System.Resources.ResourceManager.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.iOS.framework/Versions/14.2.0.12/lib/mono/Xamarin.iOS/Facades/System.Resources.Reader.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.iOS.framework/Versions/14.2.0.12/lib/mono/Xamarin.iOS/Facades/System.Collections.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.iOS.framework/Versions/14.2.0.12/lib/mono/Xamarin.iOS/Facades/System.Reflection.Emit.ILGeneration.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.iOS.framework/Versions/14.2.0.12/lib/mono/Xamarin.iOS/Facades/System.Data.Common.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.iOS.framework/Versions/14.2.0.12/lib/mono/Xamarin.iOS/Facades/System.Net.NameResolution.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.iOS.framework/Versions/14.2.0.12/lib/mono/Xamarin.iOS/Facades/System.ComponentModel.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.iOS.framework/Versions/14.2.0.12/lib/mono/Xamarin.iOS/Facades/System.ServiceProcess.ServiceController.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.iOS.framework/Versions/14.2.0.12/lib/mono/Xamarin.iOS/Facades/System.Security.Cryptography.Encryption.ECDiffieHellman.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.iOS.framework/Versions/14.2.0.12/lib/mono/Xamarin.iOS/Facades/System.Runtime.Loader.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.iOS.framework/Versions/14.2.0.12/lib/mono/Xamarin.iOS/Facades/System.ServiceModel.Security.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.iOS.framework/Versions/14.2.0.12/lib/mono/Xamarin.iOS/Facades/System.Net.AuthenticationManager.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.iOS.framework/Versions/14.2.0.12/lib/mono/Xamarin.iOS/Facades/System.Xml.ReaderWriter.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.iOS.framework/Versions/14.2.0.12/lib/mono/Xamarin.iOS/Facades/System.Threading.Tasks.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.iOS.framework/Versions/14.2.0.12/lib/mono/Xamarin.iOS/Facades/System.Diagnostics.Tracing.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.iOS.framework/Versions/14.2.0.12/lib/mono/Xamarin.iOS/Facades/System.AppContext.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.iOS.framework/Versions/14.2.0.12/lib/mono/Xamarin.iOS/Facades/System.Buffers.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.iOS.framework/Versions/14.2.0.12/lib/mono/Xamarin.iOS/Facades/System.Security.Cryptography.Encryption.ECDsa.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.iOS.framework/Versions/14.2.0.12/lib/mono/Xamarin.iOS/Facades/System.Security.Cryptography.Csp.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.iOS.framework/Versions/14.2.0.12/lib/mono/Xamarin.iOS/Facades/System.Diagnostics.TextWriterTraceListener.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.iOS.framework/Versions/14.2.0.12/lib/mono/Xamarin.iOS/Facades/System.Text.Encoding.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.iOS.framework/Versions/14.2.0.12/lib/mono/Xamarin.iOS/Facades/System.IO.MemoryMappedFiles.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.iOS.framework/Versions/14.2.0.12/lib/mono/Xamarin.iOS/Facades/System.Security.Cryptography.OpenSsl.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.iOS.framework/Versions/14.2.0.12/lib/mono/Xamarin.iOS/Facades/Microsoft.Win32.Registry.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.iOS.framework/Versions/14.2.0.12/lib/mono/Xamarin.iOS/Facades/System.Globalization.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.iOS.framework/Versions/14.2.0.12/lib/mono/Xamarin.iOS/Facades/System.Security.Cryptography.RandomNumberGenerator.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.iOS.framework/Versions/14.2.0.12/lib/mono/Xamarin.iOS/Facades/System.Collections.Specialized.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.iOS.framework/Versions/14.2.0.12/lib/mono/Xamarin.iOS/Facades/System.Security.Cryptography.ProtectedData.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.iOS.framework/Versions/14.2.0.12/lib/mono/Xamarin.iOS/Facades/System.ValueTuple.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.iOS.framework/Versions/14.2.0.12/lib/mono/Xamarin.iOS/Facades/System.Xml.XPath.XmlDocument.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.iOS.framework/Versions/14.2.0.12/lib/mono/Xamarin.iOS/Facades/System.Runtime.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.iOS.framework/Versions/14.2.0.12/lib/mono/Xamarin.iOS/Facades/System.Net.ServicePoint.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.iOS.framework/Versions/14.2.0.12/lib/mono/Xamarin.iOS/Facades/System.Xml.XmlSerializer.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.iOS.framework/Versions/14.2.0.12/lib/mono/Xamarin.iOS/Facades/System.Reflection.Extensions.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.iOS.framework/Versions/14.2.0.12/lib/mono/Xamarin.iOS/Facades/System.Globalization.Extensions.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.iOS.framework/Versions/14.2.0.12/lib/mono/Xamarin.iOS/Facades/System.Runtime.Extensions.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.iOS.framework/Versions/14.2.0.12/lib/mono/Xamarin.iOS/Facades/System.Resources.ReaderWriter.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.iOS.framework/Versions/14.2.0.12/lib/mono/Xamarin.iOS/Facades/System.Security.Cryptography.Encoding.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.iOS.framework/Versions/14.2.0.12/lib/mono/Xamarin.iOS/Facades/System.IO.IsolatedStorage.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.iOS.framework/Versions/14.2.0.12/lib/mono/Xamarin.iOS/Facades/System.Threading.AccessControl.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.iOS.framework/Versions/14.2.0.12/lib/mono/Xamarin.iOS/Facades/System.ServiceModel.NetTcp.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.iOS.framework/Versions/14.2.0.12/lib/mono/Xamarin.iOS/Facades/System.Security.AccessControl.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.iOS.framework/Versions/14.2.0.12/lib/mono/Xamarin.iOS/Facades/System.Reflection.TypeExtensions.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.iOS.framework/Versions/14.2.0.12/lib/mono/Xamarin.iOS/Facades/System.Globalization.Calendars.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.iOS.framework/Versions/14.2.0.12/lib/mono/Xamarin.iOS/Facades/System.Net.Requests.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.iOS.framework/Versions/14.2.0.12/lib/mono/Xamarin.iOS/Facades/System.Net.WebSockets.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.iOS.framework/Versions/14.2.0.12/lib/mono/Xamarin.iOS/Facades/System.Reflection.Emit.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.iOS.framework/Versions/14.2.0.12/lib/mono/Xamarin.iOS/Facades/System.IO.FileSystem.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.iOS.framework/Versions/14.2.0.12/lib/mono/Xamarin.iOS/Facades/System.Runtime.Serialization.Json.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.iOS.framework/Versions/14.2.0.12/lib/mono/Xamarin.iOS/Facades/System.Security.Cryptography.Algorithms.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.iOS.framework/Versions/14.2.0.12/lib/mono/Xamarin.iOS/Facades/System.Threading.Thread.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.iOS.framework/Versions/14.2.0.12/lib/mono/Xamarin.iOS/Facades/System.Linq.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.iOS.framework/Versions/14.2.0.12/lib/mono/Xamarin.iOS/Facades/System.Diagnostics.Process.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.iOS.framework/Versions/14.2.0.12/lib/mono/Xamarin.iOS/Facades/System.Diagnostics.Tools.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.iOS.framework/Versions/14.2.0.12/lib/mono/Xamarin.iOS/Facades/System.Security.Cryptography.Hashing.Algorithms.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.iOS.framework/Versions/14.2.0.12/lib/mono/Xamarin.iOS/Facades/System.Diagnostics.Debug.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.iOS.framework/Versions/14.2.0.12/lib/mono/Xamarin.iOS/Facades/Microsoft.Win32.Primitives.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.iOS.framework/Versions/14.2.0.12/lib/mono/Xamarin.iOS/Facades/System.Runtime.Serialization.Primitives.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.iOS.framework/Versions/14.2.0.12/lib/mono/Xamarin.iOS/Facades/System.Diagnostics.TraceEvent.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.iOS.framework/Versions/14.2.0.12/lib/mono/Xamarin.iOS/Facades/System.Drawing.Primitives.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.iOS.framework/Versions/14.2.0.12/lib/mono/Xamarin.iOS/Facades/System.Runtime.Serialization.Formatters.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.iOS.framework/Versions/14.2.0.12/lib/mono/Xamarin.iOS/Facades/System.Net.Ping.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.iOS.framework/Versions/14.2.0.12/lib/mono/Xamarin.iOS/Facades/System.ServiceModel.Duplex.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.iOS.framework/Versions/14.2.0.12/lib/mono/Xamarin.iOS/Facades/System.Diagnostics.StackTrace.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.iOS.framework/Versions/14.2.0.12/lib/mono/Xamarin.iOS/Facades/System.Reflection.DispatchProxy.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.iOS.framework/Versions/14.2.0.12/lib/mono/Xamarin.iOS/Facades/System.Security.Cryptography.Encryption.Aes.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.iOS.framework/Versions/14.2.0.12/lib/mono/Xamarin.iOS/Facades/System.Memory.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.iOS.framework/Versions/14.2.0.12/lib/mono/Xamarin.iOS/Facades/System.Net.Primitives.dll","Aliases":[],"Framework":null}],"Files":["/Users/nigel/Desktop/HDL_APP_Project/HDL-ON_iOS/Main.cs","/Users/nigel/Desktop/HDL_APP_Project/HDL-ON_iOS/AppDelegate.cs","/Users/nigel/Desktop/HDL_APP_Project/HDL-ON_iOS/ViewController.cs","/Users/nigel/Desktop/HDL_APP_Project/HDL-ON_iOS/ViewController.designer.cs","/Users/nigel/Desktop/HDL_APP_Project/HDL-ON_iOS/ViewControllerBase.cs","/Users/nigel/Desktop/HDL_APP_Project/HDL-ON_iOS/Reachability.cs","/Users/nigel/Desktop/HDL_APP_Project/HDL-ON_iOS/Scan.cs","/Users/nigel/Desktop/HDL_APP_Project/HDL-ON_iOS/ZXingOverlayView.cs","/Users/nigel/Desktop/HDL_APP_Project/HDL_ON/UI/MainPage.cs","/Users/nigel/Desktop/HDL_APP_Project/HDL_ON/DAL/Net/HttpListener.cs","/Users/nigel/Desktop/HDL_APP_Project/HDL_ON/DAL/FileUtils.cs","/Users/nigel/Desktop/HDL_APP_Project/HDL_ON/Common/R.cs","/Users/nigel/Desktop/HDL_APP_Project/HDL_ON/DAL/Net/MyWebClient.cs","/Users/nigel/Desktop/HDL_APP_Project/HDL_ON/DAL/Net/MqttCommon.cs","/Users/nigel/Desktop/HDL_APP_Project/HDL_ON/DAL/Server/HttpServerRequest.cs","/Users/nigel/Desktop/HDL_APP_Project/HDL_ON/Entity/ResponseEntity/RegionInfoRes.cs","/Users/nigel/Desktop/HDL_APP_Project/HDL_ON/Entity/ResponseEntity/ResponsePack.cs","/Users/nigel/Desktop/HDL_APP_Project/HDL_ON/Entity/Enumerative/EmptyHttpReques.cs","/Users/nigel/Desktop/HDL_APP_Project/HDL_ON/DAL/Server/HttpServerRequestBase.cs","/Users/nigel/Desktop/HDL_APP_Project/HDL_ON/Entity/Room.cs","/Users/nigel/Desktop/HDL_APP_Project/HDL_ON/Entity/Enumerative/Command.cs","/Users/nigel/Desktop/HDL_APP_Project/HDL_ON/Entity/Enumerative/MyEnum.cs","/Users/nigel/Desktop/HDL_APP_Project/HDL_ON/Entity/DB_ResidenceData.cs","/Users/nigel/Desktop/HDL_APP_Project/HDL_ON/Entity/Function/Function.cs","/Users/nigel/Desktop/HDL_APP_Project/HDL_ON/DriverLayer/Target.cs","/Users/nigel/Desktop/HDL_APP_Project/HDL_ON/DriverLayer/UdpSocket.cs","/Users/nigel/Desktop/HDL_APP_Project/HDL_ON/DriverLayer/Control.cs","/Users/nigel/Desktop/HDL_APP_Project/HDL_ON/DriverLayer/CRC.cs","/Users/nigel/Desktop/HDL_APP_Project/HDL_ON/DriverLayer/Packet.cs","/Users/nigel/Desktop/HDL_APP_Project/HDL_ON/Entity/OnAppConfig.cs","/Users/nigel/Desktop/HDL_APP_Project/HDL_ON/Entity/UserInfo.cs","/Users/nigel/Desktop/HDL_APP_Project/HDL_ON/DriverLayer/Control_Udp_Bus.cs","/Users/nigel/Desktop/HDL_APP_Project/HDL_ON/Entity/Function/BusData.cs","/Users/nigel/Desktop/HDL_APP_Project/HDL_ON/UI/UI0-Public/PublicAssmebly.cs","/Users/nigel/Desktop/HDL_APP_Project/HDL_ON/UI/CSS/CSS.cs","/Users/nigel/Desktop/HDL_APP_Project/HDL_ON/UI/UI2/UserPageBLL.cs","/Users/nigel/Desktop/HDL_APP_Project/HDL_ON/UI/UI2/UserPage.cs","/Users/nigel/Desktop/HDL_APP_Project/HDL_ON/UI/UI2/2-Classification/ClassificationPage.cs","/Users/nigel/Desktop/HDL_APP_Project/HDL_ON/UI/UI2/2-Classification/ClassificationPageBLL.cs","/Users/nigel/Desktop/HDL_APP_Project/HDL_ON/UI/UI2/FuntionControlView/FunctionBaseInfoSetPage.cs","/Users/nigel/Desktop/HDL_APP_Project/HDL_ON/UI/UI2/FuntionControlView/ChooseFloorPage.cs","/Users/nigel/Desktop/HDL_APP_Project/HDL_ON/UI/UI2/FuntionControlView/FunctionBaseInfoSetPageBLL.cs","/Users/nigel/Desktop/HDL_APP_Project/HDL_ON/UI/UI2/FuntionControlView/ChooseRoomPage.cs","/Users/nigel/Desktop/HDL_APP_Project/HDL_ON/UI/UI2/FuntionControlView/Curtain/MotorCurtainPage.cs","/Users/nigel/Desktop/HDL_APP_Project/HDL_ON/UI/UI2/FuntionControlView/Light/DimmerPage.cs","/Users/nigel/Desktop/HDL_APP_Project/HDL_ON/UI/UI2/FuntionControlView/Light/RelayPageBLL.cs","/Users/nigel/Desktop/HDL_APP_Project/HDL_ON/UI/UI2/FuntionControlView/Light/RGBPageBLL.cs","/Users/nigel/Desktop/HDL_APP_Project/HDL_ON/UI/UI2/FuntionControlView/Light/RGBPage.cs","/Users/nigel/Desktop/HDL_APP_Project/HDL_ON/UI/UI2/FuntionControlView/Light/RelayPage.cs","/Users/nigel/Desktop/HDL_APP_Project/HDL_ON/UI/UI2/1-HomePage/HomePageBLL.cs","/Users/nigel/Desktop/HDL_APP_Project/HDL_ON/UI/UI2/1-HomePage/HomePage.cs","/Users/nigel/Desktop/HDL_APP_Project/HDL_ON/UI/UI2/4-PersonalCenter/PersonalCenterPage.cs","/Users/nigel/Desktop/HDL_APP_Project/HDL_ON/UI/UI2/4-PersonalCenter/PersonalDataPage.cs","/Users/nigel/Desktop/HDL_APP_Project/HDL_ON/UI/UI2/4-PersonalCenter/PersonalCenterPageBLL.cs","/Users/nigel/Desktop/HDL_APP_Project/HDL_ON/UI/UI2/4-PersonalCenter/PersonalDataPageBLL.cs","/Users/nigel/Desktop/HDL_APP_Project/HDL_ON/UI/UI2/4-PersonalCenter/RoomListManage/RoomEditPageBLL.cs","/Users/nigel/Desktop/HDL_APP_Project/HDL_ON/UI/UI2/4-PersonalCenter/RoomListManage/RoomEditFunctionPage.cs","/Users/nigel/Desktop/HDL_APP_Project/HDL_ON/UI/UI2/4-PersonalCenter/RoomListManage/RoomEditPage.cs","/Users/nigel/Desktop/HDL_APP_Project/HDL_ON/UI/UI2/4-PersonalCenter/RoomListManage/ResidentialManagePage.cs","/Users/nigel/Desktop/HDL_APP_Project/HDL_ON/UI/UI2/4-PersonalCenter/RoomListManage/RoomEditFunctionPageBLL.cs","/Users/nigel/Desktop/HDL_APP_Project/HDL_ON/UI/UI2/4-PersonalCenter/RoomListManage/RoomsManagementPage.cs","/Users/nigel/Desktop/HDL_APP_Project/HDL_ON/UI/UI2/4-PersonalCenter/RoomListManage/FloorsManagementPageBLL.cs","/Users/nigel/Desktop/HDL_APP_Project/HDL_ON/UI/UI2/4-PersonalCenter/RoomListManage/FloorsManagementPage.cs","/Users/nigel/Desktop/HDL_APP_Project/HDL_ON/UI/UI2/4-PersonalCenter/RoomListManage/ResidentialManagePageBLL.cs","/Users/nigel/Desktop/HDL_APP_Project/HDL_ON/UI/UI2/4-PersonalCenter/RoomListManage/RoomsManagementPageBLL.cs","/Users/nigel/Desktop/HDL_APP_Project/HDL_ON/UI/UI1-Login/LoginPageBLL.cs","/Users/nigel/Desktop/HDL_APP_Project/HDL_ON/UI/UI1-Login/ForgetPasswordPage.cs","/Users/nigel/Desktop/HDL_APP_Project/HDL_ON/UI/UI1-Login/LoginPage.cs","/Users/nigel/Desktop/HDL_APP_Project/HDL_ON/UI/UI1-Login/ForgetPasswordPageBLL.cs","/Users/nigel/Desktop/HDL_APP_Project/HDL_ON/UI/UI1-Login/ResetPassword_VerificationCode.cs","/Users/nigel/Desktop/HDL_APP_Project/HDL_ON/UI/UI1-Login/RegisterPageBLL.cs","/Users/nigel/Desktop/HDL_APP_Project/HDL_ON/UI/UI1-Login/BaseView.cs","/Users/nigel/Desktop/HDL_APP_Project/HDL_ON/UI/UI1-Login/RegisterPage.cs","/Users/nigel/Desktop/HDL_APP_Project/HDL_ON/UI/UI0-Public/PublicAssmeblyBLL.cs","/Users/nigel/Desktop/HDL_APP_Project/HDL_ON/UI/UI0-Public/TopViewDiv.cs","/Users/nigel/Desktop/HDL_APP_Project/HDL_ON/UI/UI0-Public/TopViewDivBLL.cs","/Users/nigel/Desktop/HDL_APP_Project/HDL_ON/UI/UI2/FuntionControlView/ChooseRoomPageBLL.cs","/Users/nigel/Desktop/HDL_APP_Project/HDL_ON/UI/UI2/FuntionControlView/Light/DimmerPageBLL.cs","/Users/nigel/Desktop/HDL_APP_Project/HDL_ON/UI/UI2/FuntionControlView/Curtain/MotorCurtainPageBLL.cs","/Users/nigel/Desktop/HDL_APP_Project/HDL_ON/UI/UI2/FuntionControlView/Curtain/CurtainModulePage.cs","/Users/nigel/Desktop/HDL_APP_Project/HDL_ON/UI/UI2/FuntionControlView/Curtain/CurtainModulePageBLL.cs","/Users/nigel/Desktop/HDL_APP_Project/HDL_ON/UI/UI2/FuntionControlView/Curtain/RollingShutterPage.cs","/Users/nigel/Desktop/HDL_APP_Project/HDL_ON/UI/UI2/FuntionControlView/Curtain/RollingShutterPageBLL.cs","/Users/nigel/Desktop/HDL_APP_Project/HDL_ON/UI/UI2/FuntionControlView/AC/ACPage.cs","/Users/nigel/Desktop/HDL_APP_Project/HDL_ON/UI/UI2/FuntionControlView/AC/ACPageBLL.cs","/Users/nigel/Desktop/HDL_APP_Project/HDL_ON/UI/UI2/2-Classification/FunctionPage.cs","/Users/nigel/Desktop/HDL_APP_Project/HDL_ON/UI/UI2/2-Classification/FunctionPageBLL.cs","/Users/nigel/Desktop/HDL_APP_Project/HDL_ON/Common/A_Protocol_Command.cs","/Users/nigel/Desktop/HDL_APP_Project/HDL_ON/UI/UI2/2-Classification/FunctionControlZone.cs","/Users/nigel/Desktop/HDL_APP_Project/HDL_ON/UI/UI2/2-Classification/FunctionControlZoneBLL.cs","/Users/nigel/Desktop/HDL_APP_Project/HDL_ON/UI/UI2/2-Classification/RoomPage.cs","/Users/nigel/Desktop/HDL_APP_Project/HDL_ON/UI/UI2/2-Classification/RoomPageBLL.cs","/Users/nigel/Desktop/HDL_APP_Project/HDL_ON/UI/UI2/2-Classification/ClassificaitionPublicBLL.cs","/Users/nigel/Desktop/HDL_APP_Project/HDL_ON/Entity/Function/Scene.cs","/Users/nigel/Desktop/HDL_APP_Project/HDL_ON/Entity/FunctionList.cs","/Users/nigel/Desktop/HDL_APP_Project/HDL_ON/Entity/Function/AC.cs","/Users/nigel/Desktop/HDL_APP_Project/HDL_ON/Entity/Function/Curtain.cs","/Users/nigel/Desktop/HDL_APP_Project/HDL_ON/Entity/Function/FloorHeating.cs","/Users/nigel/Desktop/HDL_APP_Project/HDL_ON/Entity/Function/Light.cs","/Users/nigel/Desktop/HDL_APP_Project/HDL_ON/Entity/ResponseEntity/CityInfo.cs","/Users/nigel/Desktop/HDL_APP_Project/HDL_ON/UI/UI2/4-PersonalCenter/UnlockSetting/AppUnlockSettingsPage.cs","/Users/nigel/Desktop/HDL_APP_Project/HDL_ON/UI/UI2/4-PersonalCenter/UnlockSetting/AppUnlockSettingsPageBLL.cs","/Users/nigel/Desktop/HDL_APP_Project/HDL_ON/UI/UI2/4-PersonalCenter/UnlockSetting/AppUnlockPasswordPage.cs","/Users/nigel/Desktop/HDL_APP_Project/HDL_ON/UI/UI0-Public/OperationSuccessPromptPage.cs","/Users/nigel/Desktop/HDL_APP_Project/HDL_ON/UI/UI2/4-PersonalCenter/UnlockSetting/AppUnlockGesturePage.cs","/Users/nigel/Desktop/HDL_APP_Project/HDL_ON/UI/UI0-Public/AppUnlockPage.cs","/Users/nigel/Desktop/HDL_APP_Project/HDL_ON/UI/UI2/FuntionControlView/FoolHeating/FloorHeatingPage.cs","/Users/nigel/Desktop/HDL_APP_Project/HDL_ON/UI/UI2/FuntionControlView/FoolHeating/FloorHeatingPageBLL.cs","/Users/nigel/Desktop/HDL_APP_Project/HDL_ON/DriverLayer/CommonPage.cs","/Users/nigel/Desktop/HDL_APP_Project/HDL_ON/UI/UI2/FuntionControlView/Electrical/FanPage.cs","/Users/nigel/Desktop/HDL_APP_Project/HDL_ON/Entity/Function/Fan.cs","/Users/nigel/Desktop/HDL_APP_Project/HDL_ON/Entity/Function/SwitchSocket.cs","/Users/nigel/Desktop/HDL_APP_Project/HDL_ON/UI/UI2/FuntionControlView/Electrical/FanPageBLL.cs","/Users/nigel/Desktop/HDL_APP_Project/HDL_ON/UI/UI2/FuntionControlView/Electrical/SocketPage.cs","/Users/nigel/Desktop/HDL_APP_Project/HDL_ON/UI/UI2/FuntionControlView/Electrical/SocketPageBLL.cs","/Users/nigel/Desktop/HDL_APP_Project/HDL_ON/Entity/Function/TV.cs","/Users/nigel/Desktop/HDL_APP_Project/HDL_ON/UI/UI2/FuntionControlView/Electrical/TVPage.cs","/Users/nigel/Desktop/HDL_APP_Project/HDL_ON/UI/UI2/FuntionControlView/Electrical/TVPageBLL.cs","/Users/nigel/Desktop/HDL_APP_Project/HDL_ON/UI/UI2/FuntionControlView/EnvironmentalScience/EnvironmentalSciencePage.cs","/Users/nigel/Desktop/HDL_APP_Project/HDL_ON/Entity/Function/Sensor.cs","/Users/nigel/Desktop/HDL_APP_Project/HDL_ON/UI/UI2/FuntionControlView/EnvironmentalScience/EnvironmentalSciencePageBLL.cs","/Users/nigel/Desktop/HDL_APP_Project/HDL_ON/UI/UI2/FuntionControlView/EnvironmentalScience/EnvironmentalSensorPage.cs","/Users/nigel/Desktop/HDL_APP_Project/HDL_ON/UI/UI2/4-PersonalCenter/MemberManagement/MemberManagementPage.cs","/Users/nigel/Desktop/HDL_APP_Project/HDL_ON/Entity/ResponseEntity/ResidenceMemberInfo.cs","/Users/nigel/Desktop/HDL_APP_Project/HDL_ON/UI/UI2/4-PersonalCenter/MemberManagement/MemberManagementPageBLL.cs","/Users/nigel/Desktop/HDL_APP_Project/HDL_ON/UI/UI2/4-PersonalCenter/MemberManagement/MemberPermissionPage.cs","/Users/nigel/Desktop/HDL_APP_Project/HDL_ON/UI/UI2/4-PersonalCenter/MemberManagement/MemberFunctionPermissionPage.cs","/Users/nigel/Desktop/HDL_APP_Project/HDL_ON/Entity/AProtocolEntity.cs","/Users/nigel/Desktop/HDL_APP_Project/HDL_ON/UI/UI2/4-PersonalCenter/MemberManagement/MemberPermissionPageBLL.cs","/Users/nigel/Desktop/HDL_APP_Project/HDL_ON/UI/UI2/4-PersonalCenter/MemberManagement/AddMemberScanPage.cs","/Users/nigel/Desktop/HDL_APP_Project/HDL_ON/UI/UI2/4-PersonalCenter/MemberManagement/AddMemberScanPageBLL.cs","/Users/nigel/Desktop/HDL_APP_Project/HDL_ON/UI/UI2/4-PersonalCenter/MemberManagement/MemberFunctionPermissionPageBLL.cs","/Users/nigel/Desktop/HDL_APP_Project/HDL_ON/UI/UI2/FuntionControlView/Music/MusicMain.cs","/Users/nigel/Desktop/HDL_APP_Project/HDL_ON/UI/UI2/FuntionControlView/Music/A31Radio.cs","/Users/nigel/Desktop/HDL_APP_Project/HDL_ON/UI/UI2/FuntionControlView/Music/A31RadioList.cs","/Users/nigel/Desktop/HDL_APP_Project/HDL_ON/UI/UI2/FuntionControlView/Music/A31MusicModel.cs","/Users/nigel/Desktop/HDL_APP_Project/HDL_ON/UI/UI2/FuntionControlView/Music/A31MusicSourcePage.cs","/Users/nigel/Desktop/HDL_APP_Project/HDL_ON/UI/UI2/FuntionControlView/Music/A31PlayMusicPage.cs","/Users/nigel/Desktop/HDL_APP_Project/HDL_ON/UI/UI2/FuntionControlView/Music/A31LoveRadioList.cs","/Users/nigel/Desktop/HDL_APP_Project/HDL_ON/UI/UI2/FuntionControlView/Music/A31LoveList.cs","/Users/nigel/Desktop/HDL_APP_Project/HDL_ON/UI/UI2/FuntionControlView/Music/A31USBMusicList.cs","/Users/nigel/Desktop/HDL_APP_Project/HDL_ON/UI/UI2/FuntionControlView/Music/A31PlayStatus.cs","/Users/nigel/Desktop/HDL_APP_Project/HDL_ON/UI/UI2/FuntionControlView/Music/A31MyList.cs","/Users/nigel/Desktop/HDL_APP_Project/HDL_ON/UI/UI2/FuntionControlView/Music/SendMethod.cs","/Users/nigel/Desktop/HDL_APP_Project/HDL_ON/UI/UI2/FuntionControlView/Music/A31LocalMusicList.cs","/Users/nigel/Desktop/HDL_APP_Project/HDL_ON/UI/UI2/FuntionControlView/Music/A31LoveMusicList.cs","/Users/nigel/Desktop/HDL_APP_Project/HDL_ON/UI/UI2/FuntionControlView/Music/A31MyListMusic.cs","/Users/nigel/Desktop/HDL_APP_Project/HDL_ON/UI/UI2/FuntionControlView/Music/View/DialogView.cs","/Users/nigel/Desktop/HDL_APP_Project/HDL_ON/UI/UI2/FuntionControlView/Music/View/TopView.cs","/Users/nigel/Desktop/HDL_APP_Project/HDL_ON/UI/UI2/FuntionControlView/Music/View/MusicView.cs","/Users/nigel/Desktop/HDL_APP_Project/HDL_ON/UI/UI2/FuntionControlView/Music/View/PlayView.cs","/Users/nigel/Desktop/HDL_APP_Project/HDL_ON/UI/UI2/FuntionControlView/Music/View/SizeClass.cs","/Users/nigel/Desktop/HDL_APP_Project/HDL_ON/UI/UI2/FuntionControlView/Music/View/TipView.cs","/Users/nigel/Desktop/HDL_APP_Project/HDL_ON/UI/UI2/FuntionControlView/Music/View/MusicSourceView.cs","/Users/nigel/Desktop/HDL_APP_Project/HDL_ON/UI/UI2/FuntionControlView/Music/View/SongView.cs","/Users/nigel/Desktop/HDL_APP_Project/HDL_ON/UI/UI2/4-PersonalCenter/MemberManagement/ChooseShareMemberTargetListPage.cs","/Users/nigel/Desktop/HDL_APP_Project/HDL_ON/UI/UI2/4-PersonalCenter/MemberManagement/ChooseShareMemberTargetListPageBLL.cs","/Users/nigel/Desktop/HDL_APP_Project/HDL_ON/UI/UI2/4-PersonalCenter/AccountBindInfo/AccountBindInfoPage.cs","/Users/nigel/Desktop/HDL_APP_Project/HDL_ON/UI/UI2/4-PersonalCenter/AccountBindInfo/ChangeBindAccountPage.cs","/Users/nigel/Desktop/HDL_APP_Project/HDL_ON/UI/UI2/4-PersonalCenter/AccountBindInfo/VerificationCodePage.cs","/Users/nigel/Desktop/HDL_APP_Project/HDL_ON/UI/UI2/4-PersonalCenter/AccountBindInfo/BindAccountPage.cs","/Users/nigel/Desktop/HDL_APP_Project/HDL_ON/UI/UI2/FuntionControlView/EnvironmentalScience/EchartsOption.cs","/Users/nigel/Desktop/HDL_APP_Project/HDL_ON/UI/UI2/4-PersonalCenter/ResetAccountPassword/ResetPasswordOptionPage.cs","/Users/nigel/Desktop/HDL_APP_Project/HDL_ON/UI/UI2/4-PersonalCenter/ResetAccountPassword/ResetPasswordVerificationCodePage.cs","/Users/nigel/Desktop/HDL_APP_Project/HDL_ON/UI/UI2/4-PersonalCenter/ResetAccountPassword/ResetPasswordPage.cs","/Users/nigel/Desktop/HDL_APP_Project/HDL_ON/UI/UI2/FuntionControlView/Music/UpdateThread.cs","/Users/nigel/Desktop/HDL_APP_Project/HDL_ON/UI/UI2/FuntionControlView/Music/View/MyListView.cs","/Users/nigel/Desktop/HDL_APP_Project/HDL_ON/UI/UI0-Public/UpdataTcpResidenceDataDialog.cs","/Users/nigel/Desktop/HDL_APP_Project/HDL_ON/UI/UI2/3-Intelligence/IntelligencePage.cs","/Users/nigel/Desktop/HDL_APP_Project/HDL_ON/Common/MqttCommon.cs","/Users/nigel/Desktop/HDL_APP_Project/HDL_ON/UI/UI0-Public/GalleryPage.cs","/Users/nigel/Desktop/HDL_APP_Project/HDL_ON/DAL/Net/Mqtt_Cloud.cs","/Users/nigel/Desktop/HDL_APP_Project/HDL_ON/DAL/Net/Mqtt_A_Protocol.cs","/Users/nigel/Desktop/HDL_APP_Project/HDL_ON/UI/UI2/4-PersonalCenter/AboutOnPage.cs","/Users/nigel/Desktop/HDL_APP_Project/HDL_ON/UI/UI2/3-Intelligence/Scene/NewSceneMenuListPage.cs","/Users/nigel/Desktop/HDL_APP_Project/HDL_ON/UI/UI2/3-Intelligence/Scene/SceneEditPage.cs","/Users/nigel/Desktop/HDL_APP_Project/HDL_ON/UI/UI2/3-Intelligence/Scene/SceneFunctionListEditPage.cs","/Users/nigel/Desktop/HDL_APP_Project/HDL_ON/UI/UI2/3-Intelligence/Scene/SetSceneFunctionInfoPage.cs","/Users/nigel/Desktop/HDL_APP_Project/HDL_ON/UI/UI2/3-Intelligence/Scene/SetSceneLocationPage.cs","/Users/nigel/Desktop/HDL_APP_Project/HDL_ON/UI/UI2/3-Intelligence/Automation/AutomationMenuPage.cs","/Users/nigel/Desktop/HDL_APP_Project/HDL_ON/UI/UI2/4-PersonalCenter/GetSupportPage.cs","/Users/nigel/Desktop/HDL_APP_Project/HDL_ON/DriverLayer/Control_TcpClient.cs","/Users/nigel/Desktop/HDL_APP_Project/HDL_ON/DriverLayer/Control_TcpServer.cs","/Users/nigel/Desktop/HDL_APP_Project/HDL_ON/UI/UI2/FuntionControlView/Panel/PanelPage.cs","/Users/nigel/Desktop/HDL_APP_Project/HDL_ON/UI/UI2/4-PersonalCenter/SearchDevice/SearchDevicePage.cs","/Users/nigel/Desktop/HDL_APP_Project/HDL_ON/UI/UI2/4-PersonalCenter/SearchDevice/VoicePanelScenePage.cs","/Users/nigel/Desktop/HDL_APP_Project/HDL_ON/Entity/Device/DeviceModule.cs","/Users/nigel/Desktop/HDL_APP_Project/HDL_ON/Entity/Device/SBK_SceneListObj.cs","/Users/nigel/Desktop/HDL_APP_Project/HDL_ON/UI/UI2/4-PersonalCenter/SearchDevice/VoicePanelSettingPage.cs","/Users/nigel/Desktop/HDL_APP_Project/HDL_ON/UI/UI2/4-PersonalCenter/SearchDevice/VoicePanelSceneListPage.cs","/Users/nigel/Desktop/HDL_APP_Project/HDL-ON_iOS/Assets.xcassets/AppIcon.appiconset/Contents.json","/Users/nigel/Desktop/HDL_APP_Project/HDL-ON_iOS/Assets.xcassets/LaunchImage.launchimage/1024x500.png","/Users/nigel/Desktop/HDL_APP_Project/HDL-ON_iOS/Assets.xcassets/LaunchImage.launchimage/2048X2732 .png","/Users/nigel/Desktop/HDL_APP_Project/HDL-ON_iOS/Assets.xcassets/LaunchImage.launchimage/4096X4096.png","/Users/nigel/Desktop/HDL_APP_Project/HDL-ON_iOS/Assets.xcassets/LaunchImage.launchimage/750X1134.png","/Users/nigel/Desktop/HDL_APP_Project/HDL-ON_iOS/Assets.xcassets/LaunchImage.launchimage/AppIcon.appiconset/1024.png","/Users/nigel/Desktop/HDL_APP_Project/HDL-ON_iOS/Assets.xcassets/LaunchImage.launchimage/AppIcon.appiconset/120.png","/Users/nigel/Desktop/HDL_APP_Project/HDL-ON_iOS/Assets.xcassets/LaunchImage.launchimage/AppIcon.appiconset/152.png","/Users/nigel/Desktop/HDL_APP_Project/HDL-ON_iOS/Assets.xcassets/LaunchImage.launchimage/AppIcon.appiconset/167.png","/Users/nigel/Desktop/HDL_APP_Project/HDL-ON_iOS/Assets.xcassets/LaunchImage.launchimage/AppIcon.appiconset/180.png","/Users/nigel/Desktop/HDL_APP_Project/HDL-ON_iOS/Assets.xcassets/LaunchImage.launchimage/AppIcon.appiconset/20.png","/Users/nigel/Desktop/HDL_APP_Project/HDL-ON_iOS/Assets.xcassets/LaunchImage.launchimage/AppIcon.appiconset/29.png","/Users/nigel/Desktop/HDL_APP_Project/HDL-ON_iOS/Assets.xcassets/LaunchImage.launchimage/AppIcon.appiconset/40.png","/Users/nigel/Desktop/HDL_APP_Project/HDL-ON_iOS/Assets.xcassets/LaunchImage.launchimage/AppIcon.appiconset/58.png","/Users/nigel/Desktop/HDL_APP_Project/HDL-ON_iOS/Assets.xcassets/LaunchImage.launchimage/AppIcon.appiconset/60.png","/Users/nigel/Desktop/HDL_APP_Project/HDL-ON_iOS/Assets.xcassets/LaunchImage.launchimage/AppIcon.appiconset/76.png","/Users/nigel/Desktop/HDL_APP_Project/HDL-ON_iOS/Assets.xcassets/LaunchImage.launchimage/AppIcon.appiconset/80.png","/Users/nigel/Desktop/HDL_APP_Project/HDL-ON_iOS/Assets.xcassets/LaunchImage.launchimage/AppIcon.appiconset/87.png","/Users/nigel/Desktop/HDL_APP_Project/HDL-ON_iOS/Assets.xcassets/LaunchImage.launchimage/AppIcon.appiconset/Contents.json","/Users/nigel/Desktop/HDL_APP_Project/HDL-ON_iOS/Assets.xcassets/LaunchImage.launchimage/Contents.json","/Users/nigel/Desktop/HDL_APP_Project/HDL-ON_iOS/Assets.xcassets/AppIcon.appiconset/40路40@2x.png","/Users/nigel/Desktop/HDL_APP_Project/HDL-ON_iOS/Assets.xcassets/AppIcon.appiconset/60路60@3x.png","/Users/nigel/Desktop/HDL_APP_Project/HDL-ON_iOS/Assets.xcassets/AppIcon.appiconset/58路58@2x.png","/Users/nigel/Desktop/HDL_APP_Project/HDL-ON_iOS/Assets.xcassets/AppIcon.appiconset/87路87@3x.png","/Users/nigel/Desktop/HDL_APP_Project/HDL-ON_iOS/Assets.xcassets/AppIcon.appiconset/80路80@2x.png","/Users/nigel/Desktop/HDL_APP_Project/HDL-ON_iOS/Assets.xcassets/AppIcon.appiconset/120路120@2x.png","/Users/nigel/Desktop/HDL_APP_Project/HDL-ON_iOS/Assets.xcassets/AppIcon.appiconset/120路120@3x.png","/Users/nigel/Desktop/HDL_APP_Project/HDL-ON_iOS/Assets.xcassets/AppIcon.appiconset/180路180@3x.png","/Users/nigel/Desktop/HDL_APP_Project/HDL-ON_iOS/Assets.xcassets/AppIcon.appiconset/20路20.png","/Users/nigel/Desktop/HDL_APP_Project/HDL-ON_iOS/Assets.xcassets/AppIcon.appiconset/40路40@2x-1.png","/Users/nigel/Desktop/HDL_APP_Project/HDL-ON_iOS/Assets.xcassets/AppIcon.appiconset/29路29.png","/Users/nigel/Desktop/HDL_APP_Project/HDL-ON_iOS/Assets.xcassets/AppIcon.appiconset/58路58@2x-1.png","/Users/nigel/Desktop/HDL_APP_Project/HDL-ON_iOS/Assets.xcassets/AppIcon.appiconset/1024路1024@2x.png","/Users/nigel/Desktop/HDL_APP_Project/HDL-ON_iOS/Assets.xcassets/LaunchImage.launchimage/1242*2688.png","/Users/nigel/Desktop/HDL_APP_Project/HDL-ON_iOS/Assets.xcassets/LaunchImage.launchimage/828*1792.png","/Users/nigel/Desktop/HDL_APP_Project/HDL-ON_iOS/Assets.xcassets/LaunchImage.launchimage/2688*1242.png","/Users/nigel/Desktop/HDL_APP_Project/HDL-ON_iOS/Assets.xcassets/LaunchImage.launchimage/1792*828.png","/Users/nigel/Desktop/HDL_APP_Project/HDL-ON_iOS/Assets.xcassets/LaunchImage.launchimage/1125*2436.png","/Users/nigel/Desktop/HDL_APP_Project/HDL-ON_iOS/Assets.xcassets/LaunchImage.launchimage/2436*1125.png","/Users/nigel/Desktop/HDL_APP_Project/HDL-ON_iOS/Assets.xcassets/LaunchImage.launchimage/1242*2208.png","/Users/nigel/Desktop/HDL_APP_Project/HDL-ON_iOS/Assets.xcassets/LaunchImage.launchimage/750*1334.png","/Users/nigel/Desktop/HDL_APP_Project/HDL-ON_iOS/Assets.xcassets/LaunchImage.launchimage/2208*1242.png","/Users/nigel/Desktop/HDL_APP_Project/HDL-ON_iOS/Assets.xcassets/LaunchImage.launchimage/640*960.png","/Users/nigel/Desktop/HDL_APP_Project/HDL-ON_iOS/Assets.xcassets/LaunchImage.launchimage/320*480.png","/Users/nigel/Desktop/HDL_APP_Project/HDL-ON_iOS/Assets.xcassets/LaunchImage.launchimage/640*960-1.png","/Users/nigel/Desktop/HDL_APP_Project/HDL-ON_iOS/Assets.xcassets/LaunchImage.launchimage/640*1136.png","/Users/nigel/Desktop/HDL_APP_Project/HDL-ON_iOS/Assets.xcassets/LaunchImage.launchimage/640*1136-1.png","/Users/nigel/Desktop/HDL_APP_Project/HDL-ON_iOS/LaunchScreen.storyboard","/Users/nigel/Desktop/HDL_APP_Project/HDL-ON_iOS/Main.storyboard","/Users/nigel/Desktop/HDL_APP_Project/HDL-ON_iOS/Info.plist","/Users/nigel/Desktop/HDL_APP_Project/HDL-ON_iOS/Entitlements.plist","/Users/nigel/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/LoginIcon/ShowPasswordIcon.png","/Users/nigel/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/LoginIcon/SearchIcon.png","/Users/nigel/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/LoginIcon/VerificationCodeIcon.png","/Users/nigel/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/LoginIcon/AccountIcon.png","/Users/nigel/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/LoginIcon/QQIcon.png","/Users/nigel/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/LoginIcon/PasswordIcon.png","/Users/nigel/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/LoginIcon/WechatIcon.png","/Users/nigel/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/LoginIcon/HidePasswordIcon.png","/Users/nigel/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/LoginIcon/2.png","/Users/nigel/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/LoginIcon/EmailIcon.png","/Users/nigel/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/LoginIcon/3.png","/Users/nigel/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/LoginIcon/1.png","/Users/nigel/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Language.ini","/Users/nigel/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/Public/BackIcon.png","/Users/nigel/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/Public/Logo.png","/Users/nigel/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/Public/Logo-bg.png","/Users/nigel/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/PersonalCenter/UserTypebg.png","/Users/nigel/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/PersonalCenter/AdminTypeIcon.png","/Users/nigel/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/PersonalCenter/MemberTypeIcon.png","/Users/nigel/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/PersonalCenter/ResidenceManageIcon.png","/Users/nigel/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/PersonalCenter/ResidenceMemberIcon.png","/Users/nigel/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/PersonalCenter/ResidenceArmIcon.png","/Users/nigel/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/PersonalCenter/ResidenceDataBackupIcon.png","/Users/nigel/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/PersonalCenter/AuxiliaryFunctionIcon.png","/Users/nigel/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/PersonalCenter/AddFunctionIcon.png","/Users/nigel/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/PersonalCenter/NightViewIcon.png","/Users/nigel/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/PersonalCenter/SwitchIcon.png","/Users/nigel/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/PersonalCenter/GeneralSettingsIcon.png","/Users/nigel/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/PersonalCenter/SupportIcon.png","/Users/nigel/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/PersonalCenter/HomeList3bg.png","/Users/nigel/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/PersonalCenter/PersonalData/QRcodeIcon.png","/Users/nigel/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/Classification/ToggleDisplayThumbnail.png","/Users/nigel/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/Classification/ToggleDisplayLarge.png","/Users/nigel/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/Classification/Room/Roombg.png","/Users/nigel/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/Collection/MsgIcon.png","/Users/nigel/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/Collection/MsgIconTip.png","/Users/nigel/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/Collection/Functionbg.png","/Users/nigel/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/Collection/FunctionOnbg.png","/Users/nigel/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/Collection/ChangeViewbg.png","/Users/nigel/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/Public/DeviceInfoIcon/HumidityIcon.png","/Users/nigel/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/Public/DeviceInfoIcon/Pm25Icon.png","/Users/nigel/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/Public/DeviceInfoIcon/TempIcon.png","/Users/nigel/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/Public/DownIcon.png","/Users/nigel/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/Public/transparent.png","/Users/nigel/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/Collection/CollectionIcon.png","/Users/nigel/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/Collection/CollectionWhiteIcon.png","/Users/nigel/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/Classification/Room/AllCloseIcon.png","/Users/nigel/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/Public/PowerClose.png","/Users/nigel/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/Public/PowerOpen.png","/Users/nigel/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/FunctionIcon/Curtain/CurtainStopIcon.png","/Users/nigel/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/FunctionIcon/Curtain/CurtainCloseIcon.png","/Users/nigel/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/FunctionIcon/Curtain/CurtainCloseOnIcon.png","/Users/nigel/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/FunctionIcon/Curtain/CurtainIcon.png","/Users/nigel/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/FunctionIcon/Curtain/CurtainOnIcon.png","/Users/nigel/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/FunctionIcon/Curtain/CurtainOpenIcon.png","/Users/nigel/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/FunctionIcon/Curtain/CurtainOpenOnIcon.png","/Users/nigel/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/FunctionIcon/Curtain/CurtainStopOnIcon.png","/Users/nigel/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/FunctionIcon/FloorHeating/FloorHeatingIcon.png","/Users/nigel/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/FunctionIcon/FloorHeating/FloorHeatingOnIcon.png","/Users/nigel/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/FunctionIcon/Light/LightIcon.png","/Users/nigel/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/FunctionIcon/Light/LightOnIcon.png","/Users/nigel/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/FunctionIcon/Music/MusicIcon.png","/Users/nigel/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/FunctionIcon/Music/MusicOnIcon.png","/Users/nigel/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/FunctionIcon/Switch.png","/Users/nigel/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/FunctionIcon/SwitchOn.png","/Users/nigel/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/Public/FuncInfoSetIcon.png","/Users/nigel/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/FunctionIcon/Light/ColorWheel.png","/Users/nigel/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/Public/ThumbImage.png","/Users/nigel/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/Public/Fragmentbg.png","/Users/nigel/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/Public/Restored_Shadow.png","/Users/nigel/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/Public/Edit.png","/Users/nigel/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/Public/RightIcon.png","/Users/nigel/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/FunctionIcon/Curtain/CurtainThinIcon.png","/Users/nigel/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/FunctionIcon/FloorHeating/FloorHeatingThinIcon.png","/Users/nigel/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/FunctionIcon/Light/LightThinIcon.png","/Users/nigel/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/Public/ChooseIcon.png","/Users/nigel/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/Public/ChooseOnIcon.png","/Users/nigel/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/Public/PlusSignIcon.png","/Users/nigel/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/Public/MinusSignIcon.png","/Users/nigel/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/Collection/CollectionGrayIcon.png","/Users/nigel/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/Public/Switch.png","/Users/nigel/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/Public/SwitchOn.png","/Users/nigel/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/Public/LocationAddressIcon.png","/Users/nigel/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/Public/AddIcon.png","/Users/nigel/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/Public/EditIcon.png","/Users/nigel/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/Public/Right.png","/Users/nigel/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/Public/DownIcon_2.png","/Users/nigel/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/Public/ChooseRoomListbg.png","/Users/nigel/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/FunctionIcon/Scene/MovieMark.png","/Users/nigel/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/FunctionIcon/Scene/SceneIcon.png","/Users/nigel/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/Collection/SceneCovered.png","/Users/nigel/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/FunctionIcon/Scene/DelayIcon.png","/Users/nigel/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/FunctionIcon/Scene/s2.png","/Users/nigel/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/FunctionIcon/Scene/s1.png","/Users/nigel/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/FunctionIcon/Curtain/CurtainBgOnIcon.png","/Users/nigel/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/FunctionIcon/Curtain/CurtainBgIcon.png","/Users/nigel/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/FunctionIcon/FunctionBg/MusicFunctionBg.png","/Users/nigel/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/FunctionIcon/FunctionBg/FreshAirFunctionBg.png","/Users/nigel/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/FunctionIcon/FunctionBg/EnergyMonitoringFunctionBg.png","/Users/nigel/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/FunctionIcon/FunctionBg/EnvironmentalFunctionBg.png","/Users/nigel/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/FunctionIcon/FunctionBg/SecurityMonitoringFunctionBg.png","/Users/nigel/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/FunctionIcon/FunctionBg/LightFunctionBg.png","/Users/nigel/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/FunctionIcon/FunctionBg/VideoIntercomFunctionBg.png","/Users/nigel/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/FunctionIcon/FunctionBg/PanelFunctionBg.png","/Users/nigel/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/FunctionIcon/FunctionBg/FloorHeatingFunctionBg.png","/Users/nigel/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/FunctionIcon/FunctionBg/ACFunctionBg.png","/Users/nigel/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/FunctionIcon/FunctionBg/CurtainFunctionBg.png","/Users/nigel/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/FunctionIcon/FunctionBg/ElectricFunctionBg.png","/Users/nigel/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/FunctionIcon/FunctionBg/SensorFunctionBg.png","/Users/nigel/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/FunctionIcon/FunctionBg/DoorLockFunctionBg.png","/Users/nigel/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/Public/DeviceInfoIcon/Restored_Shadow.png","/Users/nigel/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/FunctionIcon/Curtain/CurtainOpenBlueIcon_Shadow.png","/Users/nigel/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/FunctionIcon/Curtain/CurtainOpenWhiteIcon_Shadow.png","/Users/nigel/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/FunctionIcon/Curtain/CurtainCloseWhiteIcon_Shadow.png","/Users/nigel/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/FunctionIcon/Curtain/CurtainCloseBlueIcon_Shadow.png","/Users/nigel/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/Public/MsgIcon/TipIconBlack.png","/Users/nigel/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/Public/MsgIcon/TipIconWhite.png","/Users/nigel/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/PersonalCenter/AppUnlockSetting/4.png","/Users/nigel/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/PersonalCenter/AppUnlockSetting/1On.png","/Users/nigel/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/PersonalCenter/AppUnlockSetting/2.png","/Users/nigel/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/PersonalCenter/AppUnlockSetting/3.png","/Users/nigel/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/PersonalCenter/AppUnlockSetting/4On.png","/Users/nigel/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/PersonalCenter/AppUnlockSetting/3On.png","/Users/nigel/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/PersonalCenter/AppUnlockSetting/1.png","/Users/nigel/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/PersonalCenter/AppUnlockSetting/2On.png","/Users/nigel/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/PersonalCenter/AppUnlockSetting/FingerprintIcon.png","/Users/nigel/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/PersonalCenter/AppUnlockSetting/FaceIdIcon.png","/Users/nigel/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/PersonalCenter/AppUnlockSetting/GestureIcon.png","/Users/nigel/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/PersonalCenter/AppUnlockSetting/PasswordIcon.png","/Users/nigel/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/Public/TipIcon_Successfully.png","/Users/nigel/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/Public/TipIcon_Failed.png","/Users/nigel/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/PersonalCenter/AppUnlockSetting/GestureGrayIcon.png","/Users/nigel/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/Public/Switch_2.png","/Users/nigel/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/Public/SwitchOn_2.png","/Users/nigel/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/PersonalCenter/AppUnlockSetting/FingerIconRed.png","/Users/nigel/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/FunctionIcon/FloorHeating/NightIcon.png","/Users/nigel/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/FunctionIcon/FloorHeating/NightIconGray.png","/Users/nigel/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/FunctionIcon/FloorHeating/OrdinaryIcon.png","/Users/nigel/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/FunctionIcon/FloorHeating/OrdinaryIconGray.png","/Users/nigel/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/FunctionIcon/FloorHeating/AwayIcon.png","/Users/nigel/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/FunctionIcon/FloorHeating/AwayIconGray.png","/Users/nigel/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/FunctionIcon/Electrical/FanIconBgGray.png","/Users/nigel/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/FunctionIcon/Electrical/FanIconBg.png","/Users/nigel/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/FunctionIcon/Electrical/FanThinIcon.png","/Users/nigel/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/FunctionIcon/Socket/SocketThinIcon.png","/Users/nigel/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/FunctionIcon/Electrical/FanOnIcon.png","/Users/nigel/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/FunctionIcon/Electrical/FanIcon.png","/Users/nigel/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/FunctionIcon/Socket/SocketIcon.png","/Users/nigel/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/FunctionIcon/Socket/SocketOnIcon.png","/Users/nigel/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/FunctionIcon/Electrical/FanIconOnBg.png","/Users/nigel/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/FunctionIcon/Socket/SocketIconOnBg.png","/Users/nigel/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/FunctionIcon/Socket/SocketIconBg.png","/Users/nigel/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/FunctionIcon/Electrical/TV/TVPowerIcon.png","/Users/nigel/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/FunctionIcon/Electrical/TV/TV123Icon.png","/Users/nigel/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/FunctionIcon/Electrical/TV/TVRightIcon.png","/Users/nigel/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/FunctionIcon/Electrical/TV/TVOkIcon.png","/Users/nigel/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/FunctionIcon/Electrical/TV/TVUpIcon.png","/Users/nigel/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/FunctionIcon/Electrical/TV/TVleftIcon.png","/Users/nigel/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/FunctionIcon/Electrical/TV/TVDownIcon.png","/Users/nigel/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/FunctionIcon/Electrical/TV/TVMenuUpIcon.png","/Users/nigel/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/FunctionIcon/Electrical/TV/TVMenuIcon.png","/Users/nigel/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/FunctionIcon/Electrical/TV/TVBackIcon.png","/Users/nigel/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/FunctionIcon/Electrical/TV/TVMuteIcon.png","/Users/nigel/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/FunctionIcon/Electrical/TV/TVMenuDownIcon.png","/Users/nigel/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/FunctionIcon/Electrical/TV/MenuBgIcon.png","/Users/nigel/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/FunctionIcon/Electrical/TV/PlusIcon.png","/Users/nigel/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/FunctionIcon/Electrical/TV/ReduceIcon.png","/Users/nigel/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/FunctionIcon/Electrical/TVThinIcon.png","/Users/nigel/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/FunctionIcon/Electrical/TVIcon.png","/Users/nigel/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/FunctionIcon/EnvironmentalScience/SmogIcon.png","/Users/nigel/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/FunctionIcon/EnvironmentalScience/LocationIcon.png","/Users/nigel/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/FunctionIcon/EnvironmentalScience/UpArrow.png","/Users/nigel/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/FunctionIcon/EnvironmentalScience/WeatherFanSpeedIcon.png","/Users/nigel/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/FunctionIcon/EnvironmentalScience/TipInfoIcon.png","/Users/nigel/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/FunctionIcon/EnvironmentalScience/SensorHistoryBg1.png","/Users/nigel/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/FunctionIcon/EnvironmentalScience/SensorColorTipBg.png","/Users/nigel/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/FunctionIcon/EnvironmentalScience/SensorHistoryBg2.png","/Users/nigel/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/FunctionIcon/EnvironmentalScience/SensorHistoryBg3.png","/Users/nigel/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/theme/macarons.js","/Users/nigel/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/theme/macarons2.js","/Users/nigel/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/theme/red.js","/Users/nigel/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/theme/roma.js","/Users/nigel/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/theme/helianthus.js","/Users/nigel/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/theme/green.js","/Users/nigel/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/theme/infographic.js","/Users/nigel/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/theme/shine.js","/Users/nigel/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/theme/gray.js","/Users/nigel/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/theme/sakura.js","/Users/nigel/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/theme/blue.js","/Users/nigel/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/theme/dark.js","/Users/nigel/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/theme/mint.js","/Users/nigel/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/FunctionIcon/EnvironmentalScience/DiagramIcon.png","/Users/nigel/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/FunctionIcon/EnvironmentalScience/DiagramIconOn.png","/Users/nigel/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/Public/MsgIcon/LoadingIcon.png","/Users/nigel/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/Collection/NoCollectionBg.png","/Users/nigel/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/Public/AirIcon/0.png","/Users/nigel/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/Public/AirIcon/1.png","/Users/nigel/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/Public/AirIcon/13.png","/Users/nigel/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/Public/AirIcon/18.png","/Users/nigel/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/Public/AirIcon/2.png","/Users/nigel/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/Public/AirIcon/20.png","/Users/nigel/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/Public/AirIcon/29.png","/Users/nigel/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/Public/AirIcon/3.png","/Users/nigel/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/Public/AirIcon/4.png","/Users/nigel/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/Public/AirIcon/45.png","/Users/nigel/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/Public/AirIcon/5.png","/Users/nigel/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/Public/AirIcon/6.png","/Users/nigel/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/MusicIcon/bluetooth.png","/Users/nigel/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/MusicIcon/addMusic1.png","/Users/nigel/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/MusicIcon/prve1Selected.png","/Users/nigel/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/MusicIcon/love1.png","/Users/nigel/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/MusicIcon/selectedIcon.png","/Users/nigel/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/MusicIcon/playList.png","/Users/nigel/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/MusicIcon/myLove.png","/Users/nigel/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/MusicIcon/radio.png","/Users/nigel/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/MusicIcon/filePlay.png","/Users/nigel/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/MusicIcon/collect.png","/Users/nigel/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/MusicIcon/loveMusic.png","/Users/nigel/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/MusicIcon/qqMusic.png","/Users/nigel/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/MusicIcon/clear.png","/Users/nigel/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/MusicIcon/radioIcon.png","/Users/nigel/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/MusicIcon/musicIcon.png","/Users/nigel/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/MusicIcon/file.png","/Users/nigel/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/MusicIcon/vol.png","/Users/nigel/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/MusicIcon/usb.png","/Users/nigel/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/MusicIcon/localMusic.png","/Users/nigel/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/MusicIcon/next1.png","/Users/nigel/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/MusicIcon/loveSelected1.png","/Users/nigel/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/MusicIcon/selectedMusic.png","/Users/nigel/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/MusicIcon/noMusic.png","/Users/nigel/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/MusicIcon/addMusic.png","/Users/nigel/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/MusicIcon/playBj.png","/Users/nigel/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/MusicIcon/loveRadio.png","/Users/nigel/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/MusicIcon/list.png","/Users/nigel/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/MusicIcon/set.png","/Users/nigel/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/MusicIcon/nextSelected.png","/Users/nigel/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/MusicIcon/Merge.png","/Users/nigel/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/MusicIcon/playStatus.png","/Users/nigel/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/MusicIcon/random.png","/Users/nigel/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/MusicIcon/collectSelected.png","/Users/nigel/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/MusicIcon/pause.png","/Users/nigel/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/MusicIcon/progressIcon.png","/Users/nigel/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/MusicIcon/prevSeletced.png","/Users/nigel/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/MusicIcon/MusicBack.png","/Users/nigel/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/MusicIcon/fileList.png","/Users/nigel/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/MusicIcon/myList.png","/Users/nigel/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/MusicIcon/single.png","/Users/nigel/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/MusicIcon/edit.png","/Users/nigel/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/MusicIcon/next.png","/Users/nigel/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/MusicIcon/filePause.png","/Users/nigel/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/MusicIcon/line.png","/Users/nigel/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/MusicIcon/loveSelected.png","/Users/nigel/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/MusicIcon/sourceNetx.png","/Users/nigel/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/MusicIcon/love.png","/Users/nigel/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/MusicIcon/pause1.png","/Users/nigel/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/MusicIcon/play1.png","/Users/nigel/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/MusicIcon/play.png","/Users/nigel/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/MusicIcon/noSelectedIcon.png","/Users/nigel/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/MusicIcon/next1Selected.png","/Users/nigel/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/MusicIcon/prev.png","/Users/nigel/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/MusicIcon/prve1.png","/Users/nigel/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/FunctionIcon/EnvironmentalScience/Pm25Icon.png","/Users/nigel/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/FunctionIcon/EnvironmentalScience/HumidityIcon.png","/Users/nigel/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/echartsNew.html","/Users/nigel/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/js/bmap.min.js","/Users/nigel/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/js/20190126.js","/Users/nigel/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/js/china.js","/Users/nigel/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/js/dataTool.min.js","/Users/nigel/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/js/echarts-all.js","/Users/nigel/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/js/echarts-gl.min.js","/Users/nigel/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/js/echarts.min.js","/Users/nigel/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/js/ecStat.min.js","/Users/nigel/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/js/world.js","/Users/nigel/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/FunctionIcon/Music/MusicPlayOnIcon.png","/Users/nigel/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/FunctionIcon/Music/MusicPlayIcon.png","/Users/nigel/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/PersonalCenter/InfoOnIcon.png","/Users/nigel/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/PersonalCenter/ResetPassword/DialogTipTitleIcon.png","/Users/nigel/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/FunctionIcon/Music/MusicThinIcon.png","/Users/nigel/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/PersonalCenter/HomeList1bg.png","/Users/nigel/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/PersonalCenter/HomeList2bg.png","/Users/nigel/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/PersonalCenter/HomeList4bg.png","/Users/nigel/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/FunctionIcon/Light/RelayOnBg.png","/Users/nigel/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/FunctionIcon/Light/RelayBg.png","/Users/nigel/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/Navigation/HomePageIconOn.png","/Users/nigel/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/Navigation/HomePageIcon.png","/Users/nigel/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/Navigation/UserPageNavbg.png","/Users/nigel/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/Navigation/PersonalCenterIconOn.png","/Users/nigel/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/Navigation/PersonalCenterIcon.png","/Users/nigel/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/Navigation/IntellectualizationIconOn.png","/Users/nigel/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/Navigation/IntellectualizationIcon.png","/Users/nigel/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/Navigation/CollectionIconOn.png","/Users/nigel/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/Navigation/CollectionIcon.png","/Users/nigel/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/Navigation/ClassificationIconOn.png","/Users/nigel/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/Navigation/ClassificationIcon.png","/Users/nigel/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/Intelligence/CreateScene3Bg.png","/Users/nigel/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/Intelligence/CreateScene1Bg.png","/Users/nigel/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/Intelligence/CreateScene2Bg.png","/Users/nigel/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/Public/FuncInfoSetIcon_white.png","/Users/nigel/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/FunctionIcon/EnvironmentalScience/FunctionIconHumidity.png","/Users/nigel/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/FunctionIcon/EnvironmentalScience/FunctionIconTemp.png","/Users/nigel/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/FunctionIcon/EnvironmentalScience/FunctionIconPm25.png","/Users/nigel/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/FunctionIcon/EnvironmentalScience/FunctionIconTVOC.png","/Users/nigel/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/FunctionIcon/EnvironmentalScience/FunctionIconCO2.png","/Users/nigel/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/PersonalCenter/HomeListbg.png","/Users/nigel/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/Intelligence/Gallery/scenebg1.png","/Users/nigel/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/Intelligence/Gallery/scenebg2.png","/Users/nigel/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/Intelligence/Gallery/scenebg3.png","/Users/nigel/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/Intelligence/Gallery/scenebg4.png","/Users/nigel/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/Intelligence/Gallery/scenebg5.png","/Users/nigel/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/Intelligence/Gallery/scenebg6.png","/Users/nigel/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/Intelligence/Gallery/scenebg7.png","/Users/nigel/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/Intelligence/Gallery/scenebg8.png","/Users/nigel/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/Intelligence/Gallery/scenebg9.png","/Users/nigel/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/Intelligence/Gallery/scenebg10.png","/Users/nigel/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/Intelligence/Gallery/chooseTipIcon.png","/Users/nigel/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/FunctionIcon/AC/AutoIcon.png","/Users/nigel/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/FunctionIcon/AC/LowIcon.png","/Users/nigel/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/FunctionIcon/AC/DiyThumbIcon.png","/Users/nigel/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/FunctionIcon/AC/AcOnIcon.png","/Users/nigel/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/FunctionIcon/AC/AcIcon.png","/Users/nigel/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/FunctionIcon/AC/DehumidificationIcon.png","/Users/nigel/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/FunctionIcon/AC/AirSupplyIconGray.png","/Users/nigel/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/FunctionIcon/AC/LowIconGray.png","/Users/nigel/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/FunctionIcon/AC/DiyThumbIconOn.png","/Users/nigel/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/FunctionIcon/AC/DivBg2.png","/Users/nigel/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/FunctionIcon/AC/DivBg1.png","/Users/nigel/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/FunctionIcon/AC/CoolIcon.png","/Users/nigel/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/FunctionIcon/AC/WindMediumIcon.png","/Users/nigel/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/FunctionIcon/AC/WindLowIcon.png","/Users/nigel/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/FunctionIcon/AC/AirSupplyIcon.png","/Users/nigel/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/FunctionIcon/AC/WindLowIconGray.png","/Users/nigel/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/FunctionIcon/AC/AcThinIcon1.png","/Users/nigel/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/FunctionIcon/AC/WindMediumIconGray.png","/Users/nigel/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/FunctionIcon/AC/HeatingIconGray.png","/Users/nigel/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/FunctionIcon/AC/MediumIcon.png","/Users/nigel/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/FunctionIcon/AC/CoolIconGray.png","/Users/nigel/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/FunctionIcon/AC/AutoIconGray.png","/Users/nigel/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/FunctionIcon/AC/DehumidificationIconGray.png","/Users/nigel/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/FunctionIcon/AC/WindHighIcon.png","/Users/nigel/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/FunctionIcon/AC/WindHighIconGray.png","/Users/nigel/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/FunctionIcon/AC/MediumIconGray.png","/Users/nigel/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/FunctionIcon/AC/HighIcon.png","/Users/nigel/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/FunctionIcon/AC/HeatIconGray.png","/Users/nigel/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/FunctionIcon/AC/HeatingIcon.png","/Users/nigel/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/FunctionIcon/AC/DiyThumbIcon2On.png","/Users/nigel/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/FunctionIcon/AC/HightIconGray.png","/Users/nigel/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/FunctionIcon/Light/BrightnessBg.png","/Users/nigel/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/FunctionIcon/Curtain/RollingShutterIcon.png","/Users/nigel/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/FunctionIcon/Curtain/MotorCurtainIcon.png","/Users/nigel/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/OnIcon.png","/Users/nigel/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/TipNot.png","/Users/nigel/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/FunctionIcon/DeviceIcon/VoicePanelIcon.png","/Users/nigel/Desktop/HDL_APP_Project/HDL-ON_iOS/iTunesArtwork","/Users/nigel/Desktop/HDL_APP_Project/HDL-ON_iOS/iTunesArtwork@2x"],"BuildActions":["Compile","Compile","Compile","Compile","Compile","Compile","Compile","Compile","Compile","Compile","Compile","Compile","Compile","Compile","Compile","Compile","Compile","Compile","Compile","Compile","Compile","Compile","Compile","Compile","Compile","Compile","Compile","Compile","Compile","Compile","Compile","Compile","Compile","Compile","Compile","Compile","Compile","Compile","Compile","Compile","Compile","Compile","Compile","Compile","Compile","Compile","Compile","Compile","Compile","Compile","Compile","Compile","Compile","Compile","Compile","Compile","Compile","Compile","Compile","Compile","Compile","Compile","Compile","Compile","Compile","Compile","Compile","Compile","Compile","Compile","Compile","Compile","Compile","Compile","Compile","Compile","Compile","Compile","Compile","Compile","Compile","Compile","Compile","Compile","Compile","Compile","Compile","Compile","Compile","Compile","Compile","Compile","Compile","Compile","Compile","Compile","Compile","Compile","Compile","Compile","Compile","Compile","Compile","Compile","Compile","Compile","Compile","Compile","Compile","Compile","Compile","Compile","Compile","Compile","Compile","Compile","Compile","Compile","Compile","Compile","Compile","Compile","Compile","Compile","Compile","Compile","Compile","Compile","Compile","Compile","Compile","Compile","Compile","Compile","Compile","Compile","Compile","Compile","Compile","Compile","Compile","Compile","Compile","Compile","Compile","Compile","Compile","Compile","Compile","Compile","Compile","Compile","Compile","Compile","Compile","Compile","Compile","Compile","Compile","Compile","Compile","Compile","Compile","Compile","Compile","Compile","Compile","Compile","Compile","Compile","Compile","Compile","Compile","Compile","Compile","Compile","Compile","Compile","Compile","Compile","Compile","Compile","Compile","Compile","Compile","Compile","Compile","Compile","Compile","Compile","ImageAsset","ImageAsset","ImageAsset","ImageAsset","ImageAsset","ImageAsset","ImageAsset","ImageAsset","ImageAsset","ImageAsset","ImageAsset","ImageAsset","ImageAsset","ImageAsset","ImageAsset","ImageAsset","ImageAsset","ImageAsset","ImageAsset","ImageAsset","ImageAsset","ImageAsset","ImageAsset","ImageAsset","ImageAsset","ImageAsset","ImageAsset","ImageAsset","ImageAsset","ImageAsset","ImageAsset","ImageAsset","ImageAsset","ImageAsset","ImageAsset","ImageAsset","ImageAsset","ImageAsset","ImageAsset","ImageAsset","ImageAsset","ImageAsset","ImageAsset","ImageAsset","ImageAsset","ImageAsset","ImageAsset","InterfaceDefinition","InterfaceDefinition","None","None","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","ITunesArtwork","ITunesArtwork"],"Analyzers":[],"AdditionalFiles":[],"EditorConfigFiles":[]}
\ No newline at end of file
+{"Format":1,"ProjectReferences":[],"MetadataReferences":[{"FilePath":"/Users/kaede/.nuget/packages/microsoft.appcenter.analytics/4.0.0/lib/Xamarin.iOS10/Microsoft.AppCenter.Analytics.dll","Aliases":[],"Framework":null},{"FilePath":"/Users/kaede/.nuget/packages/microsoft.appcenter.analytics/4.0.0/lib/Xamarin.iOS10/Microsoft.AppCenter.Analytics.iOS.Bindings.dll","Aliases":[],"Framework":null},{"FilePath":"/Users/kaede/.nuget/packages/microsoft.appcenter.crashes/4.0.0/lib/Xamarin.iOS10/Microsoft.AppCenter.Crashes.dll","Aliases":[],"Framework":null},{"FilePath":"/Users/kaede/.nuget/packages/microsoft.appcenter.crashes/4.0.0/lib/Xamarin.iOS10/Microsoft.AppCenter.Crashes.iOS.Bindings.dll","Aliases":[],"Framework":null},{"FilePath":"/Users/kaede/.nuget/packages/microsoft.appcenter/4.0.0/lib/Xamarin.iOS10/Microsoft.AppCenter.dll","Aliases":[],"Framework":null},{"FilePath":"/Users/kaede/.nuget/packages/microsoft.appcenter/4.0.0/lib/Xamarin.iOS10/Microsoft.AppCenter.iOS.Bindings.dll","Aliases":[],"Framework":null},{"FilePath":"/Users/kaede/Desktop/HDL_APP_Project/DLL/IOS/MJRefresh_Xamarin.dll","Aliases":[],"Framework":null},{"FilePath":"/Users/kaede/.nuget/packages/mqttnet/3.0.13/lib/netstandard2.1/MQTTnet.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.iOS.framework/Versions/14.6.0.15/lib/mono/Xamarin.iOS/mscorlib.dll","Aliases":[],"Framework":null},{"FilePath":"/Users/kaede/.nuget/packages/newtonsoft.json/12.0.2/lib/netstandard2.0/Newtonsoft.Json.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.iOS.framework/Versions/14.6.0.15/lib/mono/Xamarin.iOS/OpenTK-1.0.dll","Aliases":[],"Framework":null},{"FilePath":"/Users/kaede/.nuget/packages/restsharp/106.11.7/lib/netstandard2.0/RestSharp.dll","Aliases":[],"Framework":null},{"FilePath":"/Users/kaede/Desktop/HDL_APP_Project/DLL/Shared.IOS.dll","Aliases":[],"Framework":null},{"FilePath":"/Users/kaede/Desktop/HDL_APP_Project/DLL/IOS/Shared.IOS.JLCountryCode.dll","Aliases":[],"Framework":null},{"FilePath":"/Users/kaede/Desktop/HDL_APP_Project/DLL/Shared.IOS.TBL.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.iOS.framework/Versions/14.6.0.15/lib/mono/Xamarin.iOS/System.Core.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.iOS.framework/Versions/14.6.0.15/lib/mono/Xamarin.iOS/System.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.iOS.framework/Versions/14.6.0.15/lib/mono/Xamarin.iOS/Facades/System.Drawing.Common.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.iOS.framework/Versions/14.6.0.15/lib/mono/Xamarin.iOS/System.Numerics.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.iOS.framework/Versions/14.6.0.15/lib/mono/Xamarin.iOS/System.Numerics.Vectors.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.iOS.framework/Versions/14.6.0.15/lib/mono/Xamarin.iOS/System.Web.Services.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.iOS.framework/Versions/14.6.0.15/lib/mono/Xamarin.iOS/System.Xml.dll","Aliases":[],"Framework":null},{"FilePath":"/Users/kaede/.nuget/packages/xamarin.essentials/1.1.0/lib/xamarinios10/Xamarin.Essentials.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.iOS.framework/Versions/14.6.0.15/lib/mono/Xamarin.iOS/Xamarin.iOS.dll","Aliases":[],"Framework":null},{"FilePath":"/Users/kaede/.nuget/packages/zxing.net.mobile/2.4.1/lib/Xamarin.iOS10/ZXing.Net.Mobile.Core.dll","Aliases":[],"Framework":null},{"FilePath":"/Users/kaede/.nuget/packages/zxing.net.mobile/2.4.1/lib/Xamarin.iOS10/zxing.portable.dll","Aliases":[],"Framework":null},{"FilePath":"/Users/kaede/.nuget/packages/zxing.net.mobile/2.4.1/lib/Xamarin.iOS10/ZXingNetMobile.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.iOS.framework/Versions/14.6.0.15/lib/mono/Xamarin.iOS/Facades/System.Diagnostics.Contracts.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.iOS.framework/Versions/14.6.0.15/lib/mono/Xamarin.iOS/Facades/System.Diagnostics.FileVersionInfo.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.iOS.framework/Versions/14.6.0.15/lib/mono/Xamarin.iOS/Facades/System.Net.Security.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.iOS.framework/Versions/14.6.0.15/lib/mono/Xamarin.iOS/Facades/System.Xml.XPath.XDocument.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.iOS.framework/Versions/14.6.0.15/lib/mono/Xamarin.iOS/Facades/System.Net.WebSockets.Client.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.iOS.framework/Versions/14.6.0.15/lib/mono/Xamarin.iOS/Facades/System.IO.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.iOS.framework/Versions/14.6.0.15/lib/mono/Xamarin.iOS/Facades/System.Dynamic.Runtime.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.iOS.framework/Versions/14.6.0.15/lib/mono/Xamarin.iOS/Facades/System.Runtime.Serialization.Xml.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.iOS.framework/Versions/14.6.0.15/lib/mono/Xamarin.iOS/Facades/System.Security.Principal.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.iOS.framework/Versions/14.6.0.15/lib/mono/Xamarin.iOS/Facades/System.Reflection.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.iOS.framework/Versions/14.6.0.15/lib/mono/Xamarin.iOS/Facades/System.Threading.ThreadPool.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.iOS.framework/Versions/14.6.0.15/lib/mono/Xamarin.iOS/Facades/System.Security.Cryptography.Cng.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.iOS.framework/Versions/14.6.0.15/lib/mono/Xamarin.iOS/Facades/System.ComponentModel.EventBasedAsync.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.iOS.framework/Versions/14.6.0.15/lib/mono/Xamarin.iOS/Facades/System.Security.Cryptography.Encryption.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.iOS.framework/Versions/14.6.0.15/lib/mono/Xamarin.iOS/Facades/System.Runtime.CompilerServices.VisualC.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.iOS.framework/Versions/14.6.0.15/lib/mono/Xamarin.iOS/Facades/System.Threading.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.iOS.framework/Versions/14.6.0.15/lib/mono/Xamarin.iOS/Facades/System.Security.Cryptography.DeriveBytes.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.iOS.framework/Versions/14.6.0.15/lib/mono/Xamarin.iOS/Facades/netstandard.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.iOS.framework/Versions/14.6.0.15/lib/mono/Xamarin.iOS/Facades/System.IO.UnmanagedMemoryStream.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.iOS.framework/Versions/14.6.0.15/lib/mono/Xamarin.iOS/Facades/System.ServiceModel.Http.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.iOS.framework/Versions/14.6.0.15/lib/mono/Xamarin.iOS/Facades/System.IO.FileSystem.AccessControl.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.iOS.framework/Versions/14.6.0.15/lib/mono/Xamarin.iOS/Facades/System.Xml.XPath.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.iOS.framework/Versions/14.6.0.15/lib/mono/Xamarin.iOS/Facades/System.Xml.XmlDocument.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.iOS.framework/Versions/14.6.0.15/lib/mono/Xamarin.iOS/Facades/System.Xml.Xsl.Primitives.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.iOS.framework/Versions/14.6.0.15/lib/mono/Xamarin.iOS/Facades/System.Resources.Writer.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.iOS.framework/Versions/14.6.0.15/lib/mono/Xamarin.iOS/Facades/System.Console.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.iOS.framework/Versions/14.6.0.15/lib/mono/Xamarin.iOS/Facades/System.Net.Cache.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.iOS.framework/Versions/14.6.0.15/lib/mono/Xamarin.iOS/Facades/System.Net.Sockets.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.iOS.framework/Versions/14.6.0.15/lib/mono/Xamarin.iOS/Facades/System.Text.Encoding.Extensions.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.iOS.framework/Versions/14.6.0.15/lib/mono/Xamarin.iOS/Facades/System.Net.NetworkInformation.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.iOS.framework/Versions/14.6.0.15/lib/mono/Xamarin.iOS/Facades/System.Net.Utilities.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.iOS.framework/Versions/14.6.0.15/lib/mono/Xamarin.iOS/Facades/System.Security.Principal.Windows.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.iOS.framework/Versions/14.6.0.15/lib/mono/Xamarin.iOS/Facades/System.Security.Claims.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.iOS.framework/Versions/14.6.0.15/lib/mono/Xamarin.iOS/Facades/System.ServiceModel.Primitives.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.iOS.framework/Versions/14.6.0.15/lib/mono/Xamarin.iOS/Facades/System.Security.Cryptography.Hashing.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.iOS.framework/Versions/14.6.0.15/lib/mono/Xamarin.iOS/Facades/System.ComponentModel.Primitives.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.iOS.framework/Versions/14.6.0.15/lib/mono/Xamarin.iOS/Facades/System.IO.FileSystem.DriveInfo.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.iOS.framework/Versions/14.6.0.15/lib/mono/Xamarin.iOS/Facades/System.Security.Cryptography.X509Certificates.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.iOS.framework/Versions/14.6.0.15/lib/mono/Xamarin.iOS/Facades/System.Reflection.Primitives.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.iOS.framework/Versions/14.6.0.15/lib/mono/Xamarin.iOS/Facades/System.Runtime.Numerics.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.iOS.framework/Versions/14.6.0.15/lib/mono/Xamarin.iOS/Facades/System.IO.FileSystem.Watcher.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.iOS.framework/Versions/14.6.0.15/lib/mono/Xamarin.iOS/Facades/System.Diagnostics.TraceSource.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.iOS.framework/Versions/14.6.0.15/lib/mono/Xamarin.iOS/Facades/System.Reflection.Emit.Lightweight.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.iOS.framework/Versions/14.6.0.15/lib/mono/Xamarin.iOS/Facades/System.Text.Encoding.CodePages.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.iOS.framework/Versions/14.6.0.15/lib/mono/Xamarin.iOS/Facades/System.Linq.Expressions.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.iOS.framework/Versions/14.6.0.15/lib/mono/Xamarin.iOS/Facades/System.Threading.Timer.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.iOS.framework/Versions/14.6.0.15/lib/mono/Xamarin.iOS/Facades/System.Runtime.InteropServices.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.iOS.framework/Versions/14.6.0.15/lib/mono/Xamarin.iOS/Facades/System.IO.Pipes.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.iOS.framework/Versions/14.6.0.15/lib/mono/Xamarin.iOS/Facades/System.Net.HttpListener.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.iOS.framework/Versions/14.6.0.15/lib/mono/Xamarin.iOS/Facades/System.Text.RegularExpressions.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.iOS.framework/Versions/14.6.0.15/lib/mono/Xamarin.iOS/Facades/System.Threading.Tasks.Parallel.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.iOS.framework/Versions/14.6.0.15/lib/mono/Xamarin.iOS/Facades/System.Collections.NonGeneric.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.iOS.framework/Versions/14.6.0.15/lib/mono/Xamarin.iOS/Facades/System.Collections.Concurrent.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.iOS.framework/Versions/14.6.0.15/lib/mono/Xamarin.iOS/Facades/System.Threading.Overlapped.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.iOS.framework/Versions/14.6.0.15/lib/mono/Xamarin.iOS/Facades/System.Security.Cryptography.Pkcs.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.iOS.framework/Versions/14.6.0.15/lib/mono/Xamarin.iOS/Facades/System.Runtime.Handles.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.iOS.framework/Versions/14.6.0.15/lib/mono/Xamarin.iOS/Facades/System.Data.SqlClient.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.iOS.framework/Versions/14.6.0.15/lib/mono/Xamarin.iOS/Facades/System.ObjectModel.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.iOS.framework/Versions/14.6.0.15/lib/mono/Xamarin.iOS/Facades/System.Net.WebHeaderCollection.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.iOS.framework/Versions/14.6.0.15/lib/mono/Xamarin.iOS/Facades/System.Runtime.InteropServices.RuntimeInformation.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.iOS.framework/Versions/14.6.0.15/lib/mono/Xamarin.iOS/Facades/System.ComponentModel.TypeConverter.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.iOS.framework/Versions/14.6.0.15/lib/mono/Xamarin.iOS/Facades/System.Net.Mail.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.iOS.framework/Versions/14.6.0.15/lib/mono/Xamarin.iOS/Facades/System.Threading.Tasks.Extensions.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.iOS.framework/Versions/14.6.0.15/lib/mono/Xamarin.iOS/Facades/System.Linq.Parallel.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.iOS.framework/Versions/14.6.0.15/lib/mono/Xamarin.iOS/Facades/System.Xml.XDocument.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.iOS.framework/Versions/14.6.0.15/lib/mono/Xamarin.iOS/Facades/System.Security.SecureString.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.iOS.framework/Versions/14.6.0.15/lib/mono/Xamarin.iOS/Facades/Microsoft.Win32.Registry.AccessControl.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.iOS.framework/Versions/14.6.0.15/lib/mono/Xamarin.iOS/Facades/System.Security.Cryptography.RSA.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.iOS.framework/Versions/14.6.0.15/lib/mono/Xamarin.iOS/Facades/System.ComponentModel.Annotations.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.iOS.framework/Versions/14.6.0.15/lib/mono/Xamarin.iOS/Facades/System.IO.FileSystem.Primitives.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.iOS.framework/Versions/14.6.0.15/lib/mono/Xamarin.iOS/Facades/System.Security.Cryptography.Primitives.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.iOS.framework/Versions/14.6.0.15/lib/mono/Xamarin.iOS/Facades/System.IO.Compression.ZipFile.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.iOS.framework/Versions/14.6.0.15/lib/mono/Xamarin.iOS/Facades/System.Runtime.InteropServices.WindowsRuntime.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.iOS.framework/Versions/14.6.0.15/lib/mono/Xamarin.iOS/Facades/System.Linq.Queryable.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.iOS.framework/Versions/14.6.0.15/lib/mono/Xamarin.iOS/Facades/System.Resources.ResourceManager.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.iOS.framework/Versions/14.6.0.15/lib/mono/Xamarin.iOS/Facades/System.Resources.Reader.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.iOS.framework/Versions/14.6.0.15/lib/mono/Xamarin.iOS/Facades/System.Collections.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.iOS.framework/Versions/14.6.0.15/lib/mono/Xamarin.iOS/Facades/System.Reflection.Emit.ILGeneration.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.iOS.framework/Versions/14.6.0.15/lib/mono/Xamarin.iOS/Facades/System.Data.Common.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.iOS.framework/Versions/14.6.0.15/lib/mono/Xamarin.iOS/Facades/System.Net.NameResolution.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.iOS.framework/Versions/14.6.0.15/lib/mono/Xamarin.iOS/Facades/System.ComponentModel.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.iOS.framework/Versions/14.6.0.15/lib/mono/Xamarin.iOS/Facades/System.ServiceProcess.ServiceController.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.iOS.framework/Versions/14.6.0.15/lib/mono/Xamarin.iOS/Facades/System.Security.Cryptography.Encryption.ECDiffieHellman.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.iOS.framework/Versions/14.6.0.15/lib/mono/Xamarin.iOS/Facades/System.Runtime.Loader.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.iOS.framework/Versions/14.6.0.15/lib/mono/Xamarin.iOS/Facades/System.ServiceModel.Security.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.iOS.framework/Versions/14.6.0.15/lib/mono/Xamarin.iOS/Facades/System.Net.AuthenticationManager.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.iOS.framework/Versions/14.6.0.15/lib/mono/Xamarin.iOS/Facades/System.Xml.ReaderWriter.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.iOS.framework/Versions/14.6.0.15/lib/mono/Xamarin.iOS/Facades/System.Threading.Tasks.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.iOS.framework/Versions/14.6.0.15/lib/mono/Xamarin.iOS/Facades/System.Diagnostics.Tracing.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.iOS.framework/Versions/14.6.0.15/lib/mono/Xamarin.iOS/Facades/System.AppContext.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.iOS.framework/Versions/14.6.0.15/lib/mono/Xamarin.iOS/Facades/System.Buffers.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.iOS.framework/Versions/14.6.0.15/lib/mono/Xamarin.iOS/Facades/System.Security.Cryptography.Encryption.ECDsa.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.iOS.framework/Versions/14.6.0.15/lib/mono/Xamarin.iOS/Facades/System.Security.Cryptography.Csp.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.iOS.framework/Versions/14.6.0.15/lib/mono/Xamarin.iOS/Facades/System.Diagnostics.TextWriterTraceListener.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.iOS.framework/Versions/14.6.0.15/lib/mono/Xamarin.iOS/Facades/System.Text.Encoding.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.iOS.framework/Versions/14.6.0.15/lib/mono/Xamarin.iOS/Facades/System.IO.MemoryMappedFiles.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.iOS.framework/Versions/14.6.0.15/lib/mono/Xamarin.iOS/Facades/System.Security.Cryptography.OpenSsl.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.iOS.framework/Versions/14.6.0.15/lib/mono/Xamarin.iOS/Facades/Microsoft.Win32.Registry.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.iOS.framework/Versions/14.6.0.15/lib/mono/Xamarin.iOS/Facades/System.Globalization.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.iOS.framework/Versions/14.6.0.15/lib/mono/Xamarin.iOS/Facades/System.Security.Cryptography.RandomNumberGenerator.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.iOS.framework/Versions/14.6.0.15/lib/mono/Xamarin.iOS/Facades/System.Collections.Specialized.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.iOS.framework/Versions/14.6.0.15/lib/mono/Xamarin.iOS/Facades/System.Security.Cryptography.ProtectedData.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.iOS.framework/Versions/14.6.0.15/lib/mono/Xamarin.iOS/Facades/System.ValueTuple.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.iOS.framework/Versions/14.6.0.15/lib/mono/Xamarin.iOS/Facades/System.Xml.XPath.XmlDocument.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.iOS.framework/Versions/14.6.0.15/lib/mono/Xamarin.iOS/Facades/System.Runtime.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.iOS.framework/Versions/14.6.0.15/lib/mono/Xamarin.iOS/Facades/System.Net.ServicePoint.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.iOS.framework/Versions/14.6.0.15/lib/mono/Xamarin.iOS/Facades/System.Xml.XmlSerializer.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.iOS.framework/Versions/14.6.0.15/lib/mono/Xamarin.iOS/Facades/System.Reflection.Extensions.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.iOS.framework/Versions/14.6.0.15/lib/mono/Xamarin.iOS/Facades/System.Globalization.Extensions.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.iOS.framework/Versions/14.6.0.15/lib/mono/Xamarin.iOS/Facades/System.Runtime.Extensions.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.iOS.framework/Versions/14.6.0.15/lib/mono/Xamarin.iOS/Facades/System.Resources.ReaderWriter.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.iOS.framework/Versions/14.6.0.15/lib/mono/Xamarin.iOS/Facades/System.Security.Cryptography.Encoding.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.iOS.framework/Versions/14.6.0.15/lib/mono/Xamarin.iOS/Facades/System.IO.IsolatedStorage.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.iOS.framework/Versions/14.6.0.15/lib/mono/Xamarin.iOS/Facades/System.Threading.AccessControl.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.iOS.framework/Versions/14.6.0.15/lib/mono/Xamarin.iOS/Facades/System.ServiceModel.NetTcp.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.iOS.framework/Versions/14.6.0.15/lib/mono/Xamarin.iOS/Facades/System.Security.AccessControl.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.iOS.framework/Versions/14.6.0.15/lib/mono/Xamarin.iOS/Facades/System.Reflection.TypeExtensions.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.iOS.framework/Versions/14.6.0.15/lib/mono/Xamarin.iOS/Facades/System.Globalization.Calendars.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.iOS.framework/Versions/14.6.0.15/lib/mono/Xamarin.iOS/Facades/System.Net.Requests.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.iOS.framework/Versions/14.6.0.15/lib/mono/Xamarin.iOS/Facades/System.Net.WebSockets.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.iOS.framework/Versions/14.6.0.15/lib/mono/Xamarin.iOS/Facades/System.Reflection.Emit.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.iOS.framework/Versions/14.6.0.15/lib/mono/Xamarin.iOS/Facades/System.IO.FileSystem.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.iOS.framework/Versions/14.6.0.15/lib/mono/Xamarin.iOS/Facades/System.Runtime.Serialization.Json.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.iOS.framework/Versions/14.6.0.15/lib/mono/Xamarin.iOS/Facades/System.Security.Cryptography.Algorithms.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.iOS.framework/Versions/14.6.0.15/lib/mono/Xamarin.iOS/Facades/System.Threading.Thread.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.iOS.framework/Versions/14.6.0.15/lib/mono/Xamarin.iOS/Facades/System.Linq.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.iOS.framework/Versions/14.6.0.15/lib/mono/Xamarin.iOS/Facades/System.Diagnostics.Process.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.iOS.framework/Versions/14.6.0.15/lib/mono/Xamarin.iOS/Facades/System.Diagnostics.Tools.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.iOS.framework/Versions/14.6.0.15/lib/mono/Xamarin.iOS/Facades/System.Security.Cryptography.Hashing.Algorithms.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.iOS.framework/Versions/14.6.0.15/lib/mono/Xamarin.iOS/Facades/System.Diagnostics.Debug.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.iOS.framework/Versions/14.6.0.15/lib/mono/Xamarin.iOS/Facades/Microsoft.Win32.Primitives.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.iOS.framework/Versions/14.6.0.15/lib/mono/Xamarin.iOS/Facades/System.Runtime.Serialization.Primitives.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.iOS.framework/Versions/14.6.0.15/lib/mono/Xamarin.iOS/Facades/System.Diagnostics.TraceEvent.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.iOS.framework/Versions/14.6.0.15/lib/mono/Xamarin.iOS/Facades/System.Drawing.Primitives.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.iOS.framework/Versions/14.6.0.15/lib/mono/Xamarin.iOS/Facades/System.Runtime.Serialization.Formatters.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.iOS.framework/Versions/14.6.0.15/lib/mono/Xamarin.iOS/Facades/System.Net.Ping.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.iOS.framework/Versions/14.6.0.15/lib/mono/Xamarin.iOS/Facades/System.ServiceModel.Duplex.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.iOS.framework/Versions/14.6.0.15/lib/mono/Xamarin.iOS/Facades/System.Diagnostics.StackTrace.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.iOS.framework/Versions/14.6.0.15/lib/mono/Xamarin.iOS/Facades/System.Reflection.DispatchProxy.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.iOS.framework/Versions/14.6.0.15/lib/mono/Xamarin.iOS/Facades/System.Security.Cryptography.Encryption.Aes.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.iOS.framework/Versions/14.6.0.15/lib/mono/Xamarin.iOS/Facades/System.Memory.dll","Aliases":[],"Framework":null},{"FilePath":"/Library/Frameworks/Xamarin.iOS.framework/Versions/14.6.0.15/lib/mono/Xamarin.iOS/Facades/System.Net.Primitives.dll","Aliases":[],"Framework":null}],"Files":["/Users/kaede/Desktop/HDL_APP_Project/HDL-ON_iOS/Main.cs","/Users/kaede/Desktop/HDL_APP_Project/HDL-ON_iOS/AppDelegate.cs","/Users/kaede/Desktop/HDL_APP_Project/HDL-ON_iOS/ViewController.cs","/Users/kaede/Desktop/HDL_APP_Project/HDL-ON_iOS/ViewController.designer.cs","/Users/kaede/Desktop/HDL_APP_Project/HDL-ON_iOS/ViewControllerBase.cs","/Users/kaede/Desktop/HDL_APP_Project/HDL-ON_iOS/Reachability.cs","/Users/kaede/Desktop/HDL_APP_Project/HDL-ON_iOS/Scan.cs","/Users/kaede/Desktop/HDL_APP_Project/HDL-ON_iOS/ZXingOverlayView.cs","/Users/kaede/Desktop/HDL_APP_Project/HDL-ON_iOS/Other/JLCountrycode.cs","/Users/kaede/Desktop/HDL_APP_Project/HDL_ON/UI/MainPage.cs","/Users/kaede/Desktop/HDL_APP_Project/HDL_ON/DAL/FileUtils.cs","/Users/kaede/Desktop/HDL_APP_Project/HDL_ON/Common/R.cs","/Users/kaede/Desktop/HDL_APP_Project/HDL_ON/DAL/Mqtt/MqttInfoConfig.cs","/Users/kaede/Desktop/HDL_APP_Project/HDL_ON/DAL/Server/HttpServerRequest.cs","/Users/kaede/Desktop/HDL_APP_Project/HDL_ON/Entity/ResponseEntity/RegionInfoRes.cs","/Users/kaede/Desktop/HDL_APP_Project/HDL_ON/Entity/ResponseEntity/ResponsePack.cs","/Users/kaede/Desktop/HDL_APP_Project/HDL_ON/Entity/Enumerative/EmptyHttpReques.cs","/Users/kaede/Desktop/HDL_APP_Project/HDL_ON/DAL/Server/HttpServerRequestBase.cs","/Users/kaede/Desktop/HDL_APP_Project/HDL_ON/Entity/Room.cs","/Users/kaede/Desktop/HDL_APP_Project/HDL_ON/Entity/Enumerative/Command.cs","/Users/kaede/Desktop/HDL_APP_Project/HDL_ON/Entity/Enumerative/MyEnum.cs","/Users/kaede/Desktop/HDL_APP_Project/HDL_ON/Entity/DB_ResidenceData.cs","/Users/kaede/Desktop/HDL_APP_Project/HDL_ON/Entity/Function/Function.cs","/Users/kaede/Desktop/HDL_APP_Project/HDL_ON/Entity/OnAppConfig.cs","/Users/kaede/Desktop/HDL_APP_Project/HDL_ON/Entity/UserInfo.cs","/Users/kaede/Desktop/HDL_APP_Project/HDL_ON/Entity/Function/BusData.cs","/Users/kaede/Desktop/HDL_APP_Project/HDL_ON/UI/UI0-Public/PublicAssmebly.cs","/Users/kaede/Desktop/HDL_APP_Project/HDL_ON/UI/CSS/CSS.cs","/Users/kaede/Desktop/HDL_APP_Project/HDL_ON/UI/UI2/UserPageBLL.cs","/Users/kaede/Desktop/HDL_APP_Project/HDL_ON/UI/UI2/UserPage.cs","/Users/kaede/Desktop/HDL_APP_Project/HDL_ON/UI/UI2/2-Classification/ClassificationPage.cs","/Users/kaede/Desktop/HDL_APP_Project/HDL_ON/UI/UI2/2-Classification/ClassificationPageBLL.cs","/Users/kaede/Desktop/HDL_APP_Project/HDL_ON/UI/UI2/FuntionControlView/FunctionBaseInfoSetPage.cs","/Users/kaede/Desktop/HDL_APP_Project/HDL_ON/UI/UI2/FuntionControlView/ChooseFloorPage.cs","/Users/kaede/Desktop/HDL_APP_Project/HDL_ON/UI/UI2/FuntionControlView/FunctionBaseInfoSetPageBLL.cs","/Users/kaede/Desktop/HDL_APP_Project/HDL_ON/UI/UI2/FuntionControlView/ChooseRoomPage.cs","/Users/kaede/Desktop/HDL_APP_Project/HDL_ON/UI/UI2/FuntionControlView/Curtain/MotorCurtainPage.cs","/Users/kaede/Desktop/HDL_APP_Project/HDL_ON/UI/UI2/FuntionControlView/Light/DimmerPage.cs","/Users/kaede/Desktop/HDL_APP_Project/HDL_ON/UI/UI2/FuntionControlView/Light/RelayPageBLL.cs","/Users/kaede/Desktop/HDL_APP_Project/HDL_ON/UI/UI2/FuntionControlView/Light/RGBPageBLL.cs","/Users/kaede/Desktop/HDL_APP_Project/HDL_ON/UI/UI2/FuntionControlView/Light/RGBPage.cs","/Users/kaede/Desktop/HDL_APP_Project/HDL_ON/UI/UI2/FuntionControlView/Light/RelayPage.cs","/Users/kaede/Desktop/HDL_APP_Project/HDL_ON/UI/UI2/1-HomePage/HomePageBLL.cs","/Users/kaede/Desktop/HDL_APP_Project/HDL_ON/UI/UI2/1-HomePage/HomePage.cs","/Users/kaede/Desktop/HDL_APP_Project/HDL_ON/UI/UI2/4-PersonalCenter/PersonalCenterPage.cs","/Users/kaede/Desktop/HDL_APP_Project/HDL_ON/UI/UI2/4-PersonalCenter/PersonalDataPage.cs","/Users/kaede/Desktop/HDL_APP_Project/HDL_ON/UI/UI2/4-PersonalCenter/PersonalCenterPageBLL.cs","/Users/kaede/Desktop/HDL_APP_Project/HDL_ON/UI/UI2/4-PersonalCenter/PersonalDataPageBLL.cs","/Users/kaede/Desktop/HDL_APP_Project/HDL_ON/UI/UI2/4-PersonalCenter/RoomListManage/RoomEditPageBLL.cs","/Users/kaede/Desktop/HDL_APP_Project/HDL_ON/UI/UI2/4-PersonalCenter/RoomListManage/RoomEditFunctionPage.cs","/Users/kaede/Desktop/HDL_APP_Project/HDL_ON/UI/UI2/4-PersonalCenter/RoomListManage/RoomEditPage.cs","/Users/kaede/Desktop/HDL_APP_Project/HDL_ON/UI/UI2/4-PersonalCenter/RoomListManage/ResidentialManagePage.cs","/Users/kaede/Desktop/HDL_APP_Project/HDL_ON/UI/UI2/4-PersonalCenter/RoomListManage/RoomEditFunctionPageBLL.cs","/Users/kaede/Desktop/HDL_APP_Project/HDL_ON/UI/UI2/4-PersonalCenter/RoomListManage/RoomsManagementPage.cs","/Users/kaede/Desktop/HDL_APP_Project/HDL_ON/UI/UI2/4-PersonalCenter/RoomListManage/FloorsManagementPageBLL.cs","/Users/kaede/Desktop/HDL_APP_Project/HDL_ON/UI/UI2/4-PersonalCenter/RoomListManage/FloorsManagementPage.cs","/Users/kaede/Desktop/HDL_APP_Project/HDL_ON/UI/UI2/4-PersonalCenter/RoomListManage/ResidentialManagePageBLL.cs","/Users/kaede/Desktop/HDL_APP_Project/HDL_ON/UI/UI2/4-PersonalCenter/RoomListManage/RoomsManagementPageBLL.cs","/Users/kaede/Desktop/HDL_APP_Project/HDL_ON/UI/UI1-Login/LoginPageBLL.cs","/Users/kaede/Desktop/HDL_APP_Project/HDL_ON/UI/UI1-Login/ForgetPasswordPage.cs","/Users/kaede/Desktop/HDL_APP_Project/HDL_ON/UI/UI1-Login/LoginPage.cs","/Users/kaede/Desktop/HDL_APP_Project/HDL_ON/UI/UI1-Login/ForgetPasswordPageBLL.cs","/Users/kaede/Desktop/HDL_APP_Project/HDL_ON/UI/UI1-Login/ResetPassword_VerificationCode.cs","/Users/kaede/Desktop/HDL_APP_Project/HDL_ON/UI/UI1-Login/RegisterPageBLL.cs","/Users/kaede/Desktop/HDL_APP_Project/HDL_ON/UI/UI1-Login/BaseView.cs","/Users/kaede/Desktop/HDL_APP_Project/HDL_ON/UI/UI1-Login/RegisterPage.cs","/Users/kaede/Desktop/HDL_APP_Project/HDL_ON/UI/UI0-Public/PublicAssmeblyBLL.cs","/Users/kaede/Desktop/HDL_APP_Project/HDL_ON/UI/UI0-Public/TopViewDiv.cs","/Users/kaede/Desktop/HDL_APP_Project/HDL_ON/UI/UI0-Public/TopViewDivBLL.cs","/Users/kaede/Desktop/HDL_APP_Project/HDL_ON/UI/UI2/FuntionControlView/ChooseRoomPageBLL.cs","/Users/kaede/Desktop/HDL_APP_Project/HDL_ON/UI/UI2/FuntionControlView/Light/DimmerPageBLL.cs","/Users/kaede/Desktop/HDL_APP_Project/HDL_ON/UI/UI2/FuntionControlView/Curtain/MotorCurtainPageBLL.cs","/Users/kaede/Desktop/HDL_APP_Project/HDL_ON/UI/UI2/FuntionControlView/Curtain/CurtainModulePage.cs","/Users/kaede/Desktop/HDL_APP_Project/HDL_ON/UI/UI2/FuntionControlView/Curtain/CurtainModulePageBLL.cs","/Users/kaede/Desktop/HDL_APP_Project/HDL_ON/UI/UI2/FuntionControlView/Curtain/RollingShutterPage.cs","/Users/kaede/Desktop/HDL_APP_Project/HDL_ON/UI/UI2/FuntionControlView/Curtain/RollingShutterPageBLL.cs","/Users/kaede/Desktop/HDL_APP_Project/HDL_ON/UI/UI2/FuntionControlView/AC/ACPage.cs","/Users/kaede/Desktop/HDL_APP_Project/HDL_ON/UI/UI2/FuntionControlView/AC/ACPageBLL.cs","/Users/kaede/Desktop/HDL_APP_Project/HDL_ON/UI/UI2/2-Classification/FunctionPage.cs","/Users/kaede/Desktop/HDL_APP_Project/HDL_ON/UI/UI2/2-Classification/FunctionPageBLL.cs","/Users/kaede/Desktop/HDL_APP_Project/HDL_ON/UI/UI2/2-Classification/FunctionControlZone.cs","/Users/kaede/Desktop/HDL_APP_Project/HDL_ON/UI/UI2/2-Classification/FunctionControlZoneBLL.cs","/Users/kaede/Desktop/HDL_APP_Project/HDL_ON/UI/UI2/2-Classification/RoomPage.cs","/Users/kaede/Desktop/HDL_APP_Project/HDL_ON/UI/UI2/2-Classification/RoomPageBLL.cs","/Users/kaede/Desktop/HDL_APP_Project/HDL_ON/UI/UI2/2-Classification/ClassificaitionPublicBLL.cs","/Users/kaede/Desktop/HDL_APP_Project/HDL_ON/Entity/Function/Scene.cs","/Users/kaede/Desktop/HDL_APP_Project/HDL_ON/Entity/FunctionList.cs","/Users/kaede/Desktop/HDL_APP_Project/HDL_ON/Entity/Function/AC.cs","/Users/kaede/Desktop/HDL_APP_Project/HDL_ON/Entity/Function/Curtain.cs","/Users/kaede/Desktop/HDL_APP_Project/HDL_ON/Entity/Function/FloorHeating.cs","/Users/kaede/Desktop/HDL_APP_Project/HDL_ON/Entity/Function/Light.cs","/Users/kaede/Desktop/HDL_APP_Project/HDL_ON/Entity/ResponseEntity/CityInfo.cs","/Users/kaede/Desktop/HDL_APP_Project/HDL_ON/UI/UI2/4-PersonalCenter/UnlockSetting/AppUnlockSettingsPage.cs","/Users/kaede/Desktop/HDL_APP_Project/HDL_ON/UI/UI2/4-PersonalCenter/UnlockSetting/AppUnlockSettingsPageBLL.cs","/Users/kaede/Desktop/HDL_APP_Project/HDL_ON/UI/UI2/4-PersonalCenter/UnlockSetting/AppUnlockPasswordPage.cs","/Users/kaede/Desktop/HDL_APP_Project/HDL_ON/UI/UI0-Public/OperationSuccessPromptPage.cs","/Users/kaede/Desktop/HDL_APP_Project/HDL_ON/UI/UI2/4-PersonalCenter/UnlockSetting/AppUnlockGesturePage.cs","/Users/kaede/Desktop/HDL_APP_Project/HDL_ON/UI/UI0-Public/AppUnlockPage.cs","/Users/kaede/Desktop/HDL_APP_Project/HDL_ON/UI/UI2/FuntionControlView/FoolHeating/FloorHeatingPage.cs","/Users/kaede/Desktop/HDL_APP_Project/HDL_ON/UI/UI2/FuntionControlView/FoolHeating/FloorHeatingPageBLL.cs","/Users/kaede/Desktop/HDL_APP_Project/HDL_ON/UI/UI2/FuntionControlView/Electrical/FanPage.cs","/Users/kaede/Desktop/HDL_APP_Project/HDL_ON/Entity/Function/Fan.cs","/Users/kaede/Desktop/HDL_APP_Project/HDL_ON/Entity/Function/SwitchSocket.cs","/Users/kaede/Desktop/HDL_APP_Project/HDL_ON/UI/UI2/FuntionControlView/Electrical/FanPageBLL.cs","/Users/kaede/Desktop/HDL_APP_Project/HDL_ON/UI/UI2/FuntionControlView/Electrical/SocketPage.cs","/Users/kaede/Desktop/HDL_APP_Project/HDL_ON/UI/UI2/FuntionControlView/Electrical/SocketPageBLL.cs","/Users/kaede/Desktop/HDL_APP_Project/HDL_ON/Entity/Function/TV.cs","/Users/kaede/Desktop/HDL_APP_Project/HDL_ON/UI/UI2/FuntionControlView/Electrical/TVPage.cs","/Users/kaede/Desktop/HDL_APP_Project/HDL_ON/UI/UI2/FuntionControlView/Electrical/TVPageBLL.cs","/Users/kaede/Desktop/HDL_APP_Project/HDL_ON/UI/UI2/FuntionControlView/EnvironmentalScience/EnvironmentalSciencePage.cs","/Users/kaede/Desktop/HDL_APP_Project/HDL_ON/Entity/Function/Sensor.cs","/Users/kaede/Desktop/HDL_APP_Project/HDL_ON/UI/UI2/FuntionControlView/EnvironmentalScience/EnvironmentalSciencePageBLL.cs","/Users/kaede/Desktop/HDL_APP_Project/HDL_ON/UI/UI2/FuntionControlView/EnvironmentalScience/EnvironmentalSensorPage.cs","/Users/kaede/Desktop/HDL_APP_Project/HDL_ON/UI/UI2/4-PersonalCenter/MemberManagement/MemberManagementPage.cs","/Users/kaede/Desktop/HDL_APP_Project/HDL_ON/Entity/ResponseEntity/ResidenceMemberInfo.cs","/Users/kaede/Desktop/HDL_APP_Project/HDL_ON/UI/UI2/4-PersonalCenter/MemberManagement/MemberManagementPageBLL.cs","/Users/kaede/Desktop/HDL_APP_Project/HDL_ON/UI/UI2/4-PersonalCenter/MemberManagement/MemberPermissionPage.cs","/Users/kaede/Desktop/HDL_APP_Project/HDL_ON/UI/UI2/4-PersonalCenter/MemberManagement/MemberFunctionPermissionPage.cs","/Users/kaede/Desktop/HDL_APP_Project/HDL_ON/Entity/AProtocolEntity.cs","/Users/kaede/Desktop/HDL_APP_Project/HDL_ON/UI/UI2/4-PersonalCenter/MemberManagement/MemberPermissionPageBLL.cs","/Users/kaede/Desktop/HDL_APP_Project/HDL_ON/UI/UI2/4-PersonalCenter/MemberManagement/AddMemberScanPage.cs","/Users/kaede/Desktop/HDL_APP_Project/HDL_ON/UI/UI2/4-PersonalCenter/MemberManagement/AddMemberScanPageBLL.cs","/Users/kaede/Desktop/HDL_APP_Project/HDL_ON/UI/UI2/4-PersonalCenter/MemberManagement/MemberFunctionPermissionPageBLL.cs","/Users/kaede/Desktop/HDL_APP_Project/HDL_ON/UI/UI2/FuntionControlView/Music/MusicMain.cs","/Users/kaede/Desktop/HDL_APP_Project/HDL_ON/UI/UI2/FuntionControlView/Music/A31Radio.cs","/Users/kaede/Desktop/HDL_APP_Project/HDL_ON/UI/UI2/FuntionControlView/Music/A31RadioList.cs","/Users/kaede/Desktop/HDL_APP_Project/HDL_ON/UI/UI2/FuntionControlView/Music/A31MusicModel.cs","/Users/kaede/Desktop/HDL_APP_Project/HDL_ON/UI/UI2/FuntionControlView/Music/A31MusicSourcePage.cs","/Users/kaede/Desktop/HDL_APP_Project/HDL_ON/UI/UI2/FuntionControlView/Music/A31PlayMusicPage.cs","/Users/kaede/Desktop/HDL_APP_Project/HDL_ON/UI/UI2/FuntionControlView/Music/A31LoveRadioList.cs","/Users/kaede/Desktop/HDL_APP_Project/HDL_ON/UI/UI2/FuntionControlView/Music/A31LoveList.cs","/Users/kaede/Desktop/HDL_APP_Project/HDL_ON/UI/UI2/FuntionControlView/Music/A31USBMusicList.cs","/Users/kaede/Desktop/HDL_APP_Project/HDL_ON/UI/UI2/FuntionControlView/Music/A31PlayStatus.cs","/Users/kaede/Desktop/HDL_APP_Project/HDL_ON/UI/UI2/FuntionControlView/Music/A31MyList.cs","/Users/kaede/Desktop/HDL_APP_Project/HDL_ON/UI/UI2/FuntionControlView/Music/SendMethod.cs","/Users/kaede/Desktop/HDL_APP_Project/HDL_ON/UI/UI2/FuntionControlView/Music/A31LocalMusicList.cs","/Users/kaede/Desktop/HDL_APP_Project/HDL_ON/UI/UI2/FuntionControlView/Music/A31LoveMusicList.cs","/Users/kaede/Desktop/HDL_APP_Project/HDL_ON/UI/UI2/FuntionControlView/Music/A31MyListMusic.cs","/Users/kaede/Desktop/HDL_APP_Project/HDL_ON/UI/UI2/FuntionControlView/Music/View/DialogView.cs","/Users/kaede/Desktop/HDL_APP_Project/HDL_ON/UI/UI2/FuntionControlView/Music/View/TopView.cs","/Users/kaede/Desktop/HDL_APP_Project/HDL_ON/UI/UI2/FuntionControlView/Music/View/MusicView.cs","/Users/kaede/Desktop/HDL_APP_Project/HDL_ON/UI/UI2/FuntionControlView/Music/View/PlayView.cs","/Users/kaede/Desktop/HDL_APP_Project/HDL_ON/UI/UI2/FuntionControlView/Music/View/SizeClass.cs","/Users/kaede/Desktop/HDL_APP_Project/HDL_ON/UI/UI2/FuntionControlView/Music/View/TipView.cs","/Users/kaede/Desktop/HDL_APP_Project/HDL_ON/UI/UI2/FuntionControlView/Music/View/MusicSourceView.cs","/Users/kaede/Desktop/HDL_APP_Project/HDL_ON/UI/UI2/FuntionControlView/Music/View/SongView.cs","/Users/kaede/Desktop/HDL_APP_Project/HDL_ON/UI/UI2/4-PersonalCenter/MemberManagement/ChooseShareMemberTargetListPage.cs","/Users/kaede/Desktop/HDL_APP_Project/HDL_ON/UI/UI2/4-PersonalCenter/MemberManagement/ChooseShareMemberTargetListPageBLL.cs","/Users/kaede/Desktop/HDL_APP_Project/HDL_ON/UI/UI2/4-PersonalCenter/AccountBindInfo/AccountBindInfoPage.cs","/Users/kaede/Desktop/HDL_APP_Project/HDL_ON/UI/UI2/4-PersonalCenter/AccountBindInfo/ChangeBindAccountPage.cs","/Users/kaede/Desktop/HDL_APP_Project/HDL_ON/UI/UI2/4-PersonalCenter/AccountBindInfo/ChangeBindVerificationCodePage.cs","/Users/kaede/Desktop/HDL_APP_Project/HDL_ON/UI/UI2/4-PersonalCenter/AccountBindInfo/BindAccountPage.cs","/Users/kaede/Desktop/HDL_APP_Project/HDL_ON/UI/UI2/FuntionControlView/EnvironmentalScience/EchartsOption.cs","/Users/kaede/Desktop/HDL_APP_Project/HDL_ON/UI/UI2/4-PersonalCenter/ResetAccountPassword/ResetPasswordOptionPage.cs","/Users/kaede/Desktop/HDL_APP_Project/HDL_ON/UI/UI2/4-PersonalCenter/ResetAccountPassword/ResetPasswordVerificationCodePage.cs","/Users/kaede/Desktop/HDL_APP_Project/HDL_ON/UI/UI2/4-PersonalCenter/ResetAccountPassword/ResetPasswordPage.cs","/Users/kaede/Desktop/HDL_APP_Project/HDL_ON/UI/UI2/FuntionControlView/Music/UpdateThread.cs","/Users/kaede/Desktop/HDL_APP_Project/HDL_ON/UI/UI2/FuntionControlView/Music/View/MyListView.cs","/Users/kaede/Desktop/HDL_APP_Project/HDL_ON/UI/UI0-Public/UpdataSidDataDialog.cs","/Users/kaede/Desktop/HDL_APP_Project/HDL_ON/UI/UI2/3-Intelligence/IntelligencePage.cs","/Users/kaede/Desktop/HDL_APP_Project/HDL_ON/UI/UI0-Public/GalleryPage.cs","/Users/kaede/Desktop/HDL_APP_Project/HDL_ON/UI/UI2/3-Intelligence/Scene/NewSceneMenuListPage.cs","/Users/kaede/Desktop/HDL_APP_Project/HDL_ON/UI/UI2/3-Intelligence/Scene/SceneEditPage.cs","/Users/kaede/Desktop/HDL_APP_Project/HDL_ON/UI/UI2/3-Intelligence/Scene/SceneFunctionListEditPage.cs","/Users/kaede/Desktop/HDL_APP_Project/HDL_ON/UI/UI2/3-Intelligence/Scene/SetSceneFunctionInfoPage.cs","/Users/kaede/Desktop/HDL_APP_Project/HDL_ON/UI/UI2/3-Intelligence/Scene/SetSceneLocationPage.cs","/Users/kaede/Desktop/HDL_APP_Project/HDL_ON/UI/UI2/3-Intelligence/Automation/AutomationMenuPage.cs","/Users/kaede/Desktop/HDL_APP_Project/HDL_ON/UI/UI2/FuntionControlView/Panel/PanelPage.cs","/Users/kaede/Desktop/HDL_APP_Project/HDL_ON/UI/UI2/4-PersonalCenter/SearchDevice/SearchDevicePage.cs","/Users/kaede/Desktop/HDL_APP_Project/HDL_ON/UI/UI2/4-PersonalCenter/SearchDevice/VoicePanelScenePage.cs","/Users/kaede/Desktop/HDL_APP_Project/HDL_ON/Entity/Device/DeviceModule.cs","/Users/kaede/Desktop/HDL_APP_Project/HDL_ON/Entity/Device/SBK_SceneListObj.cs","/Users/kaede/Desktop/HDL_APP_Project/HDL_ON/UI/UI2/4-PersonalCenter/SearchDevice/VoicePanelSettingPage.cs","/Users/kaede/Desktop/HDL_APP_Project/HDL_ON/UI/UI2/4-PersonalCenter/SearchDevice/VoicePanelSceneListPage.cs","/Users/kaede/Desktop/HDL_APP_Project/HDL_ON/DAL/Server/NewAPI.cs","/Users/kaede/Desktop/HDL_APP_Project/HDL_ON/DAL/Server/HttpUtil.cs","/Users/kaede/Desktop/HDL_APP_Project/HDL_ON/Common/Utlis.cs","/Users/kaede/Desktop/HDL_APP_Project/HDL_ON/DAL/Server/IMessageCommon.cs","/Users/kaede/Desktop/HDL_APP_Project/HDL_ON/DAL/Server/NewApiRes.cs","/Users/kaede/Desktop/HDL_APP_Project/HDL_ON/UI/UI2/4-PersonalCenter/AccountBindInfo/NewBindAccountPage.cs","/Users/kaede/Desktop/HDL_APP_Project/HDL_ON/UI/UI2/4-PersonalCenter/AccountBindInfo/NewBindVerificationCodePage.cs","/Users/kaede/Desktop/HDL_APP_Project/HDL_ON/Common/HDLCommon.cs","/Users/kaede/Desktop/HDL_APP_Project/HDL_ON/Common/Constant.cs","/Users/kaede/Desktop/HDL_APP_Project/HDL_ON/UI/UI0-Public/Widget/TextButton.cs","/Users/kaede/Desktop/HDL_APP_Project/HDL_ON/UI/UI1-Login/SelectServerDialog.cs","/Users/kaede/Desktop/HDL_APP_Project/HDL_ON/DAL/DriverLayer/Control.cs","/Users/kaede/Desktop/HDL_APP_Project/HDL_ON/DAL/DriverLayer/Control_TcpClient.cs","/Users/kaede/Desktop/HDL_APP_Project/HDL_ON/DAL/DriverLayer/Control_TcpServer.cs","/Users/kaede/Desktop/HDL_APP_Project/HDL_ON/DAL/DriverLayer/Control_Udp.cs","/Users/kaede/Desktop/HDL_APP_Project/HDL_ON/DAL/DriverLayer/CRC.cs","/Users/kaede/Desktop/HDL_APP_Project/HDL_ON/DAL/DriverLayer/Packet.cs","/Users/kaede/Desktop/HDL_APP_Project/HDL_ON/DAL/DriverLayer/Target.cs","/Users/kaede/Desktop/HDL_APP_Project/HDL_ON/DAL/DriverLayer/UdpSocket.cs","/Users/kaede/Desktop/HDL_APP_Project/HDL_ON/DAL/DriverLayer/A_Protocol_Common.cs","/Users/kaede/Desktop/HDL_APP_Project/HDL_ON/DAL/Mqtt/MqttClient.cs","/Users/kaede/Desktop/HDL_APP_Project/HDL_ON/UI/UI2/4-PersonalCenter/MyQRCodePage.cs","/Users/kaede/Desktop/HDL_APP_Project/HDL_ON/UI/UI0-Public/Widget/ListCellView.cs","/Users/kaede/Desktop/HDL_APP_Project/HDL_ON/UI/UI0-Public/Widget/UpdateTipDialog.cs","/Users/kaede/Desktop/HDL_APP_Project/HDL_ON/UI/UI2/4-PersonalCenter/MyServerInfoPage.cs","/Users/kaede/Desktop/HDL_APP_Project/HDL_ON/UI/UI2/4-PersonalCenter/AboutOn/AboutOnPage.cs","/Users/kaede/Desktop/HDL_APP_Project/HDL_ON/UI/UI2/4-PersonalCenter/AboutOn/FunctionIntroductionPage.cs","/Users/kaede/Desktop/HDL_APP_Project/HDL_ON/UI/UI2/4-PersonalCenter/AboutOn/ComplaintsPage.cs","/Users/kaede/Desktop/HDL_APP_Project/HDL_ON/UI/UI0-Public/Widget/EmptyTipView.cs","/Users/kaede/Desktop/HDL_APP_Project/HDL_ON/UI/UI0-Public/Widget/LineView.cs","/Users/kaede/Desktop/HDL_APP_Project/HDL_ON/UI/UI0-Public/Widget/ConfirmDialog.cs","/Users/kaede/Desktop/HDL_APP_Project/HDL_ON/UI/UI0-Public/Widget/WebViewDialog.cs","/Users/kaede/Desktop/HDL_APP_Project/HDL_ON/UI/UI2/4-PersonalCenter/GetSupport/FAQHelpPage.cs","/Users/kaede/Desktop/HDL_APP_Project/HDL_ON/UI/UI0-Public/Widget/ListIconCellView.cs","/Users/kaede/Desktop/HDL_APP_Project/HDL_ON/UI/UI2/4-PersonalCenter/GetSupport/QuestionListPage.cs","/Users/kaede/Desktop/HDL_APP_Project/HDL_ON/UI/UI2/4-PersonalCenter/GetSupport/GetSupportPage.cs","/Users/kaede/Desktop/HDL_APP_Project/HDL_ON/UI/UI2/4-PersonalCenter/RoomListManage/Transfer/TransferConfirmPage.cs","/Users/kaede/Desktop/HDL_APP_Project/HDL_ON/UI/UI0-Public/Widget/ConfirmButton.cs","/Users/kaede/Desktop/HDL_APP_Project/HDL-ON_iOS/Assets.xcassets/AppIcon.appiconset/Contents.json","/Users/kaede/Desktop/HDL_APP_Project/HDL-ON_iOS/Assets.xcassets/LaunchImage.launchimage/1024x500.png","/Users/kaede/Desktop/HDL_APP_Project/HDL-ON_iOS/Assets.xcassets/LaunchImage.launchimage/2048X2732 .png","/Users/kaede/Desktop/HDL_APP_Project/HDL-ON_iOS/Assets.xcassets/LaunchImage.launchimage/4096X4096.png","/Users/kaede/Desktop/HDL_APP_Project/HDL-ON_iOS/Assets.xcassets/LaunchImage.launchimage/750X1134.png","/Users/kaede/Desktop/HDL_APP_Project/HDL-ON_iOS/Assets.xcassets/LaunchImage.launchimage/AppIcon.appiconset/1024.png","/Users/kaede/Desktop/HDL_APP_Project/HDL-ON_iOS/Assets.xcassets/LaunchImage.launchimage/AppIcon.appiconset/120.png","/Users/kaede/Desktop/HDL_APP_Project/HDL-ON_iOS/Assets.xcassets/LaunchImage.launchimage/AppIcon.appiconset/152.png","/Users/kaede/Desktop/HDL_APP_Project/HDL-ON_iOS/Assets.xcassets/LaunchImage.launchimage/AppIcon.appiconset/167.png","/Users/kaede/Desktop/HDL_APP_Project/HDL-ON_iOS/Assets.xcassets/LaunchImage.launchimage/AppIcon.appiconset/180.png","/Users/kaede/Desktop/HDL_APP_Project/HDL-ON_iOS/Assets.xcassets/LaunchImage.launchimage/AppIcon.appiconset/20.png","/Users/kaede/Desktop/HDL_APP_Project/HDL-ON_iOS/Assets.xcassets/LaunchImage.launchimage/AppIcon.appiconset/29.png","/Users/kaede/Desktop/HDL_APP_Project/HDL-ON_iOS/Assets.xcassets/LaunchImage.launchimage/AppIcon.appiconset/40.png","/Users/kaede/Desktop/HDL_APP_Project/HDL-ON_iOS/Assets.xcassets/LaunchImage.launchimage/AppIcon.appiconset/58.png","/Users/kaede/Desktop/HDL_APP_Project/HDL-ON_iOS/Assets.xcassets/LaunchImage.launchimage/AppIcon.appiconset/60.png","/Users/kaede/Desktop/HDL_APP_Project/HDL-ON_iOS/Assets.xcassets/LaunchImage.launchimage/AppIcon.appiconset/76.png","/Users/kaede/Desktop/HDL_APP_Project/HDL-ON_iOS/Assets.xcassets/LaunchImage.launchimage/AppIcon.appiconset/80.png","/Users/kaede/Desktop/HDL_APP_Project/HDL-ON_iOS/Assets.xcassets/LaunchImage.launchimage/AppIcon.appiconset/87.png","/Users/kaede/Desktop/HDL_APP_Project/HDL-ON_iOS/Assets.xcassets/LaunchImage.launchimage/AppIcon.appiconset/Contents.json","/Users/kaede/Desktop/HDL_APP_Project/HDL-ON_iOS/Assets.xcassets/LaunchImage.launchimage/Contents.json","/Users/kaede/Desktop/HDL_APP_Project/HDL-ON_iOS/Assets.xcassets/AppIcon.appiconset/40路40@2x.png","/Users/kaede/Desktop/HDL_APP_Project/HDL-ON_iOS/Assets.xcassets/AppIcon.appiconset/60路60@3x.png","/Users/kaede/Desktop/HDL_APP_Project/HDL-ON_iOS/Assets.xcassets/AppIcon.appiconset/58路58@2x.png","/Users/kaede/Desktop/HDL_APP_Project/HDL-ON_iOS/Assets.xcassets/AppIcon.appiconset/87路87@3x.png","/Users/kaede/Desktop/HDL_APP_Project/HDL-ON_iOS/Assets.xcassets/AppIcon.appiconset/80路80@2x.png","/Users/kaede/Desktop/HDL_APP_Project/HDL-ON_iOS/Assets.xcassets/AppIcon.appiconset/120路120@2x.png","/Users/kaede/Desktop/HDL_APP_Project/HDL-ON_iOS/Assets.xcassets/AppIcon.appiconset/120路120@3x.png","/Users/kaede/Desktop/HDL_APP_Project/HDL-ON_iOS/Assets.xcassets/AppIcon.appiconset/180路180@3x.png","/Users/kaede/Desktop/HDL_APP_Project/HDL-ON_iOS/Assets.xcassets/AppIcon.appiconset/20路20.png","/Users/kaede/Desktop/HDL_APP_Project/HDL-ON_iOS/Assets.xcassets/AppIcon.appiconset/40路40@2x-1.png","/Users/kaede/Desktop/HDL_APP_Project/HDL-ON_iOS/Assets.xcassets/AppIcon.appiconset/29路29.png","/Users/kaede/Desktop/HDL_APP_Project/HDL-ON_iOS/Assets.xcassets/AppIcon.appiconset/58路58@2x-1.png","/Users/kaede/Desktop/HDL_APP_Project/HDL-ON_iOS/Assets.xcassets/AppIcon.appiconset/1024路1024@2x.png","/Users/kaede/Desktop/HDL_APP_Project/HDL-ON_iOS/Assets.xcassets/LaunchImage.launchimage/1242*2688.png","/Users/kaede/Desktop/HDL_APP_Project/HDL-ON_iOS/Assets.xcassets/LaunchImage.launchimage/828*1792.png","/Users/kaede/Desktop/HDL_APP_Project/HDL-ON_iOS/Assets.xcassets/LaunchImage.launchimage/2688*1242.png","/Users/kaede/Desktop/HDL_APP_Project/HDL-ON_iOS/Assets.xcassets/LaunchImage.launchimage/1792*828.png","/Users/kaede/Desktop/HDL_APP_Project/HDL-ON_iOS/Assets.xcassets/LaunchImage.launchimage/1125*2436.png","/Users/kaede/Desktop/HDL_APP_Project/HDL-ON_iOS/Assets.xcassets/LaunchImage.launchimage/2436*1125.png","/Users/kaede/Desktop/HDL_APP_Project/HDL-ON_iOS/Assets.xcassets/LaunchImage.launchimage/1242*2208.png","/Users/kaede/Desktop/HDL_APP_Project/HDL-ON_iOS/Assets.xcassets/LaunchImage.launchimage/750*1334.png","/Users/kaede/Desktop/HDL_APP_Project/HDL-ON_iOS/Assets.xcassets/LaunchImage.launchimage/2208*1242.png","/Users/kaede/Desktop/HDL_APP_Project/HDL-ON_iOS/Assets.xcassets/LaunchImage.launchimage/640*960.png","/Users/kaede/Desktop/HDL_APP_Project/HDL-ON_iOS/Assets.xcassets/LaunchImage.launchimage/320*480.png","/Users/kaede/Desktop/HDL_APP_Project/HDL-ON_iOS/Assets.xcassets/LaunchImage.launchimage/640*960-1.png","/Users/kaede/Desktop/HDL_APP_Project/HDL-ON_iOS/Assets.xcassets/LaunchImage.launchimage/640*1136.png","/Users/kaede/Desktop/HDL_APP_Project/HDL-ON_iOS/Assets.xcassets/LaunchImage.launchimage/640*1136-1.png","/Users/kaede/Desktop/HDL_APP_Project/HDL-ON_iOS/LaunchScreen.storyboard","/Users/kaede/Desktop/HDL_APP_Project/HDL-ON_iOS/Main.storyboard","/Users/kaede/Desktop/HDL_APP_Project/HDL-ON_iOS/Info.plist","/Users/kaede/Desktop/HDL_APP_Project/HDL-ON_iOS/Entitlements.plist","/Users/kaede/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/LoginIcon/ShowPasswordIcon.png","/Users/kaede/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/LoginIcon/SearchIcon.png","/Users/kaede/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/LoginIcon/VerificationCodeIcon.png","/Users/kaede/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/LoginIcon/AccountIcon.png","/Users/kaede/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/LoginIcon/QQIcon.png","/Users/kaede/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/LoginIcon/PasswordIcon.png","/Users/kaede/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/LoginIcon/WechatIcon.png","/Users/kaede/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/LoginIcon/HidePasswordIcon.png","/Users/kaede/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/LoginIcon/2.png","/Users/kaede/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/LoginIcon/EmailIcon.png","/Users/kaede/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/LoginIcon/3.png","/Users/kaede/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/LoginIcon/1.png","/Users/kaede/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Language.ini","/Users/kaede/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/Public/BackIcon.png","/Users/kaede/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/Public/Logo.png","/Users/kaede/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/Public/Logo-bg.png","/Users/kaede/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/PersonalCenter/UserTypebg.png","/Users/kaede/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/PersonalCenter/AdminTypeIcon.png","/Users/kaede/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/PersonalCenter/MemberTypeIcon.png","/Users/kaede/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/PersonalCenter/ResidenceManageIcon.png","/Users/kaede/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/PersonalCenter/ResidenceMemberIcon.png","/Users/kaede/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/PersonalCenter/ResidenceArmIcon.png","/Users/kaede/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/PersonalCenter/ResidenceDataBackupIcon.png","/Users/kaede/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/PersonalCenter/AuxiliaryFunctionIcon.png","/Users/kaede/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/PersonalCenter/AddFunctionIcon.png","/Users/kaede/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/PersonalCenter/NightViewIcon.png","/Users/kaede/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/PersonalCenter/SwitchIcon.png","/Users/kaede/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/PersonalCenter/GeneralSettingsIcon.png","/Users/kaede/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/PersonalCenter/SupportIcon.png","/Users/kaede/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/PersonalCenter/HomeList3bg.png","/Users/kaede/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/PersonalCenter/PersonalData/QRcodeIcon.png","/Users/kaede/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/Classification/ToggleDisplayThumbnail.png","/Users/kaede/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/Classification/ToggleDisplayLarge.png","/Users/kaede/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/Classification/Room/Roombg.png","/Users/kaede/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/Collection/MsgIcon.png","/Users/kaede/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/Collection/MsgIconTip.png","/Users/kaede/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/Collection/Functionbg.png","/Users/kaede/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/Collection/FunctionOnbg.png","/Users/kaede/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/Collection/ChangeViewbg.png","/Users/kaede/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/Public/DeviceInfoIcon/HumidityIcon.png","/Users/kaede/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/Public/DeviceInfoIcon/Pm25Icon.png","/Users/kaede/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/Public/DeviceInfoIcon/TempIcon.png","/Users/kaede/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/Public/DownIcon.png","/Users/kaede/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/Public/transparent.png","/Users/kaede/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/Collection/CollectionIcon.png","/Users/kaede/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/Collection/CollectionWhiteIcon.png","/Users/kaede/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/Classification/Room/AllCloseIcon.png","/Users/kaede/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/Public/PowerClose.png","/Users/kaede/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/Public/PowerOpen.png","/Users/kaede/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/FunctionIcon/Curtain/CurtainStopIcon.png","/Users/kaede/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/FunctionIcon/Curtain/CurtainCloseIcon.png","/Users/kaede/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/FunctionIcon/Curtain/CurtainCloseOnIcon.png","/Users/kaede/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/FunctionIcon/Curtain/CurtainIcon.png","/Users/kaede/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/FunctionIcon/Curtain/CurtainOnIcon.png","/Users/kaede/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/FunctionIcon/Curtain/CurtainOpenIcon.png","/Users/kaede/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/FunctionIcon/Curtain/CurtainOpenOnIcon.png","/Users/kaede/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/FunctionIcon/Curtain/CurtainStopOnIcon.png","/Users/kaede/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/FunctionIcon/FloorHeating/FloorHeatingIcon.png","/Users/kaede/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/FunctionIcon/FloorHeating/FloorHeatingOnIcon.png","/Users/kaede/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/FunctionIcon/Light/LightIcon.png","/Users/kaede/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/FunctionIcon/Light/LightOnIcon.png","/Users/kaede/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/FunctionIcon/Music/MusicIcon.png","/Users/kaede/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/FunctionIcon/Music/MusicOnIcon.png","/Users/kaede/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/FunctionIcon/Switch.png","/Users/kaede/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/FunctionIcon/SwitchOn.png","/Users/kaede/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/Public/FuncInfoSetIcon.png","/Users/kaede/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/FunctionIcon/Light/ColorWheel.png","/Users/kaede/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/Public/ThumbImage.png","/Users/kaede/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/Public/Fragmentbg.png","/Users/kaede/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/Public/Restored_Shadow.png","/Users/kaede/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/Public/Edit.png","/Users/kaede/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/Public/RightIcon.png","/Users/kaede/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/FunctionIcon/Curtain/CurtainThinIcon.png","/Users/kaede/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/FunctionIcon/FloorHeating/FloorHeatingThinIcon.png","/Users/kaede/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/FunctionIcon/Light/LightThinIcon.png","/Users/kaede/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/Public/ChooseIcon.png","/Users/kaede/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/Public/ChooseOnIcon.png","/Users/kaede/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/Public/PlusSignIcon.png","/Users/kaede/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/Public/MinusSignIcon.png","/Users/kaede/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/Collection/CollectionGrayIcon.png","/Users/kaede/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/Public/Switch.png","/Users/kaede/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/Public/SwitchOn.png","/Users/kaede/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/Public/LocationAddressIcon.png","/Users/kaede/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/Public/AddIcon.png","/Users/kaede/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/Public/EditIcon.png","/Users/kaede/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/Public/Right.png","/Users/kaede/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/Public/DownIcon_2.png","/Users/kaede/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/Public/ChooseRoomListbg.png","/Users/kaede/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/FunctionIcon/Scene/MovieMark.png","/Users/kaede/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/FunctionIcon/Scene/SceneIcon.png","/Users/kaede/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/Collection/SceneCovered.png","/Users/kaede/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/FunctionIcon/Scene/DelayIcon.png","/Users/kaede/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/FunctionIcon/Scene/s2.png","/Users/kaede/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/FunctionIcon/Scene/s1.png","/Users/kaede/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/FunctionIcon/Curtain/CurtainBgOnIcon.png","/Users/kaede/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/FunctionIcon/Curtain/CurtainBgIcon.png","/Users/kaede/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/FunctionIcon/FunctionBg/MusicFunctionBg.png","/Users/kaede/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/FunctionIcon/FunctionBg/FreshAirFunctionBg.png","/Users/kaede/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/FunctionIcon/FunctionBg/EnergyMonitoringFunctionBg.png","/Users/kaede/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/FunctionIcon/FunctionBg/EnvironmentalFunctionBg.png","/Users/kaede/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/FunctionIcon/FunctionBg/SecurityMonitoringFunctionBg.png","/Users/kaede/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/FunctionIcon/FunctionBg/LightFunctionBg.png","/Users/kaede/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/FunctionIcon/FunctionBg/VideoIntercomFunctionBg.png","/Users/kaede/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/FunctionIcon/FunctionBg/PanelFunctionBg.png","/Users/kaede/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/FunctionIcon/FunctionBg/FloorHeatingFunctionBg.png","/Users/kaede/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/FunctionIcon/FunctionBg/ACFunctionBg.png","/Users/kaede/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/FunctionIcon/FunctionBg/CurtainFunctionBg.png","/Users/kaede/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/FunctionIcon/FunctionBg/ElectricFunctionBg.png","/Users/kaede/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/FunctionIcon/FunctionBg/SensorFunctionBg.png","/Users/kaede/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/FunctionIcon/FunctionBg/DoorLockFunctionBg.png","/Users/kaede/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/Public/DeviceInfoIcon/Restored_Shadow.png","/Users/kaede/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/FunctionIcon/Curtain/CurtainOpenBlueIcon_Shadow.png","/Users/kaede/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/FunctionIcon/Curtain/CurtainOpenWhiteIcon_Shadow.png","/Users/kaede/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/FunctionIcon/Curtain/CurtainCloseWhiteIcon_Shadow.png","/Users/kaede/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/FunctionIcon/Curtain/CurtainCloseBlueIcon_Shadow.png","/Users/kaede/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/Public/MsgIcon/TipIconBlack.png","/Users/kaede/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/Public/MsgIcon/TipIconWhite.png","/Users/kaede/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/PersonalCenter/AppUnlockSetting/4.png","/Users/kaede/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/PersonalCenter/AppUnlockSetting/1On.png","/Users/kaede/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/PersonalCenter/AppUnlockSetting/2.png","/Users/kaede/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/PersonalCenter/AppUnlockSetting/3.png","/Users/kaede/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/PersonalCenter/AppUnlockSetting/4On.png","/Users/kaede/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/PersonalCenter/AppUnlockSetting/3On.png","/Users/kaede/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/PersonalCenter/AppUnlockSetting/1.png","/Users/kaede/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/PersonalCenter/AppUnlockSetting/2On.png","/Users/kaede/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/PersonalCenter/AppUnlockSetting/FingerprintIcon.png","/Users/kaede/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/PersonalCenter/AppUnlockSetting/FaceIdIcon.png","/Users/kaede/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/PersonalCenter/AppUnlockSetting/GestureIcon.png","/Users/kaede/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/PersonalCenter/AppUnlockSetting/PasswordIcon.png","/Users/kaede/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/Public/TipIcon_Successfully.png","/Users/kaede/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/Public/TipIcon_Failed.png","/Users/kaede/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/PersonalCenter/AppUnlockSetting/GestureGrayIcon.png","/Users/kaede/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/Public/Switch_2.png","/Users/kaede/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/Public/SwitchOn_2.png","/Users/kaede/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/PersonalCenter/AppUnlockSetting/FingerIconRed.png","/Users/kaede/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/FunctionIcon/FloorHeating/NightIcon.png","/Users/kaede/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/FunctionIcon/FloorHeating/NightIconGray.png","/Users/kaede/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/FunctionIcon/FloorHeating/OrdinaryIcon.png","/Users/kaede/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/FunctionIcon/FloorHeating/OrdinaryIconGray.png","/Users/kaede/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/FunctionIcon/FloorHeating/AwayIcon.png","/Users/kaede/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/FunctionIcon/FloorHeating/AwayIconGray.png","/Users/kaede/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/FunctionIcon/Electrical/FanIconBgGray.png","/Users/kaede/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/FunctionIcon/Electrical/FanIconBg.png","/Users/kaede/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/FunctionIcon/Electrical/FanThinIcon.png","/Users/kaede/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/FunctionIcon/Socket/SocketThinIcon.png","/Users/kaede/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/FunctionIcon/Electrical/FanOnIcon.png","/Users/kaede/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/FunctionIcon/Electrical/FanIcon.png","/Users/kaede/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/FunctionIcon/Socket/SocketIcon.png","/Users/kaede/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/FunctionIcon/Socket/SocketOnIcon.png","/Users/kaede/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/FunctionIcon/Electrical/FanIconOnBg.png","/Users/kaede/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/FunctionIcon/Socket/SocketIconOnBg.png","/Users/kaede/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/FunctionIcon/Socket/SocketIconBg.png","/Users/kaede/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/FunctionIcon/Electrical/TV/TVPowerIcon.png","/Users/kaede/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/FunctionIcon/Electrical/TV/TV123Icon.png","/Users/kaede/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/FunctionIcon/Electrical/TV/TVRightIcon.png","/Users/kaede/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/FunctionIcon/Electrical/TV/TVOkIcon.png","/Users/kaede/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/FunctionIcon/Electrical/TV/TVUpIcon.png","/Users/kaede/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/FunctionIcon/Electrical/TV/TVleftIcon.png","/Users/kaede/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/FunctionIcon/Electrical/TV/TVDownIcon.png","/Users/kaede/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/FunctionIcon/Electrical/TV/TVMenuUpIcon.png","/Users/kaede/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/FunctionIcon/Electrical/TV/TVMenuIcon.png","/Users/kaede/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/FunctionIcon/Electrical/TV/TVBackIcon.png","/Users/kaede/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/FunctionIcon/Electrical/TV/TVMuteIcon.png","/Users/kaede/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/FunctionIcon/Electrical/TV/TVMenuDownIcon.png","/Users/kaede/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/FunctionIcon/Electrical/TV/MenuBgIcon.png","/Users/kaede/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/FunctionIcon/Electrical/TV/PlusIcon.png","/Users/kaede/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/FunctionIcon/Electrical/TV/ReduceIcon.png","/Users/kaede/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/FunctionIcon/Electrical/TVThinIcon.png","/Users/kaede/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/FunctionIcon/Electrical/TVIcon.png","/Users/kaede/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/FunctionIcon/EnvironmentalScience/SmogIcon.png","/Users/kaede/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/FunctionIcon/EnvironmentalScience/LocationIcon.png","/Users/kaede/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/FunctionIcon/EnvironmentalScience/UpArrow.png","/Users/kaede/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/FunctionIcon/EnvironmentalScience/WeatherFanSpeedIcon.png","/Users/kaede/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/FunctionIcon/EnvironmentalScience/TipInfoIcon.png","/Users/kaede/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/FunctionIcon/EnvironmentalScience/SensorHistoryBg1.png","/Users/kaede/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/FunctionIcon/EnvironmentalScience/SensorColorTipBg.png","/Users/kaede/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/FunctionIcon/EnvironmentalScience/SensorHistoryBg2.png","/Users/kaede/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/FunctionIcon/EnvironmentalScience/SensorHistoryBg3.png","/Users/kaede/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/theme/macarons.js","/Users/kaede/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/theme/macarons2.js","/Users/kaede/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/theme/red.js","/Users/kaede/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/theme/roma.js","/Users/kaede/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/theme/helianthus.js","/Users/kaede/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/theme/green.js","/Users/kaede/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/theme/infographic.js","/Users/kaede/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/theme/shine.js","/Users/kaede/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/theme/gray.js","/Users/kaede/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/theme/sakura.js","/Users/kaede/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/theme/blue.js","/Users/kaede/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/theme/dark.js","/Users/kaede/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/theme/mint.js","/Users/kaede/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/FunctionIcon/EnvironmentalScience/DiagramIcon.png","/Users/kaede/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/FunctionIcon/EnvironmentalScience/DiagramIconOn.png","/Users/kaede/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/Public/MsgIcon/LoadingIcon.png","/Users/kaede/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/Collection/NoCollectionBg.png","/Users/kaede/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/Public/AirIcon/0.png","/Users/kaede/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/Public/AirIcon/1.png","/Users/kaede/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/Public/AirIcon/13.png","/Users/kaede/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/Public/AirIcon/18.png","/Users/kaede/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/Public/AirIcon/2.png","/Users/kaede/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/Public/AirIcon/20.png","/Users/kaede/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/Public/AirIcon/29.png","/Users/kaede/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/Public/AirIcon/3.png","/Users/kaede/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/Public/AirIcon/4.png","/Users/kaede/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/Public/AirIcon/45.png","/Users/kaede/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/Public/AirIcon/5.png","/Users/kaede/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/Public/AirIcon/6.png","/Users/kaede/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/MusicIcon/bluetooth.png","/Users/kaede/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/MusicIcon/addMusic1.png","/Users/kaede/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/MusicIcon/prve1Selected.png","/Users/kaede/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/MusicIcon/love1.png","/Users/kaede/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/MusicIcon/selectedIcon.png","/Users/kaede/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/MusicIcon/playList.png","/Users/kaede/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/MusicIcon/myLove.png","/Users/kaede/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/MusicIcon/radio.png","/Users/kaede/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/MusicIcon/filePlay.png","/Users/kaede/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/MusicIcon/collect.png","/Users/kaede/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/MusicIcon/loveMusic.png","/Users/kaede/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/MusicIcon/qqMusic.png","/Users/kaede/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/MusicIcon/clear.png","/Users/kaede/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/MusicIcon/radioIcon.png","/Users/kaede/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/MusicIcon/musicIcon.png","/Users/kaede/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/MusicIcon/file.png","/Users/kaede/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/MusicIcon/vol.png","/Users/kaede/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/MusicIcon/usb.png","/Users/kaede/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/MusicIcon/localMusic.png","/Users/kaede/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/MusicIcon/next1.png","/Users/kaede/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/MusicIcon/loveSelected1.png","/Users/kaede/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/MusicIcon/selectedMusic.png","/Users/kaede/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/MusicIcon/noMusic.png","/Users/kaede/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/MusicIcon/addMusic.png","/Users/kaede/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/MusicIcon/playBj.png","/Users/kaede/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/MusicIcon/loveRadio.png","/Users/kaede/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/MusicIcon/list.png","/Users/kaede/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/MusicIcon/set.png","/Users/kaede/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/MusicIcon/nextSelected.png","/Users/kaede/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/MusicIcon/Merge.png","/Users/kaede/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/MusicIcon/playStatus.png","/Users/kaede/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/MusicIcon/random.png","/Users/kaede/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/MusicIcon/collectSelected.png","/Users/kaede/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/MusicIcon/pause.png","/Users/kaede/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/MusicIcon/progressIcon.png","/Users/kaede/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/MusicIcon/prevSeletced.png","/Users/kaede/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/MusicIcon/MusicBack.png","/Users/kaede/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/MusicIcon/fileList.png","/Users/kaede/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/MusicIcon/myList.png","/Users/kaede/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/MusicIcon/single.png","/Users/kaede/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/MusicIcon/edit.png","/Users/kaede/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/MusicIcon/next.png","/Users/kaede/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/MusicIcon/filePause.png","/Users/kaede/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/MusicIcon/line.png","/Users/kaede/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/MusicIcon/loveSelected.png","/Users/kaede/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/MusicIcon/sourceNetx.png","/Users/kaede/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/MusicIcon/love.png","/Users/kaede/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/MusicIcon/pause1.png","/Users/kaede/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/MusicIcon/play1.png","/Users/kaede/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/MusicIcon/play.png","/Users/kaede/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/MusicIcon/noSelectedIcon.png","/Users/kaede/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/MusicIcon/next1Selected.png","/Users/kaede/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/MusicIcon/prev.png","/Users/kaede/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/MusicIcon/prve1.png","/Users/kaede/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/FunctionIcon/EnvironmentalScience/Pm25Icon.png","/Users/kaede/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/FunctionIcon/EnvironmentalScience/HumidityIcon.png","/Users/kaede/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/echartsNew.html","/Users/kaede/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/js/bmap.min.js","/Users/kaede/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/js/20190126.js","/Users/kaede/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/js/china.js","/Users/kaede/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/js/dataTool.min.js","/Users/kaede/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/js/echarts-all.js","/Users/kaede/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/js/echarts-gl.min.js","/Users/kaede/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/js/echarts.min.js","/Users/kaede/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/js/ecStat.min.js","/Users/kaede/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/js/world.js","/Users/kaede/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/FunctionIcon/Music/MusicPlayOnIcon.png","/Users/kaede/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/FunctionIcon/Music/MusicPlayIcon.png","/Users/kaede/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/PersonalCenter/InfoOnIcon.png","/Users/kaede/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/PersonalCenter/ResetPassword/DialogTipTitleIcon.png","/Users/kaede/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/FunctionIcon/Music/MusicThinIcon.png","/Users/kaede/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/PersonalCenter/HomeList1bg.png","/Users/kaede/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/PersonalCenter/HomeList2bg.png","/Users/kaede/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/PersonalCenter/HomeList4bg.png","/Users/kaede/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/FunctionIcon/Light/RelayOnBg.png","/Users/kaede/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/FunctionIcon/Light/RelayBg.png","/Users/kaede/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/Navigation/HomePageIconOn.png","/Users/kaede/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/Navigation/HomePageIcon.png","/Users/kaede/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/Navigation/UserPageNavbg.png","/Users/kaede/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/Navigation/PersonalCenterIconOn.png","/Users/kaede/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/Navigation/PersonalCenterIcon.png","/Users/kaede/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/Navigation/IntellectualizationIconOn.png","/Users/kaede/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/Navigation/IntellectualizationIcon.png","/Users/kaede/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/Navigation/CollectionIconOn.png","/Users/kaede/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/Navigation/CollectionIcon.png","/Users/kaede/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/Navigation/ClassificationIconOn.png","/Users/kaede/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/Navigation/ClassificationIcon.png","/Users/kaede/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/Intelligence/CreateScene3Bg.png","/Users/kaede/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/Intelligence/CreateScene1Bg.png","/Users/kaede/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/Intelligence/CreateScene2Bg.png","/Users/kaede/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/Public/FuncInfoSetIcon_white.png","/Users/kaede/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/FunctionIcon/EnvironmentalScience/FunctionIconHumidity.png","/Users/kaede/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/FunctionIcon/EnvironmentalScience/FunctionIconTemp.png","/Users/kaede/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/FunctionIcon/EnvironmentalScience/FunctionIconPm25.png","/Users/kaede/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/FunctionIcon/EnvironmentalScience/FunctionIconTVOC.png","/Users/kaede/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/FunctionIcon/EnvironmentalScience/FunctionIconCO2.png","/Users/kaede/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/PersonalCenter/HomeListbg.png","/Users/kaede/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/Intelligence/Gallery/scenebg1.png","/Users/kaede/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/Intelligence/Gallery/scenebg2.png","/Users/kaede/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/Intelligence/Gallery/scenebg3.png","/Users/kaede/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/Intelligence/Gallery/scenebg4.png","/Users/kaede/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/Intelligence/Gallery/scenebg5.png","/Users/kaede/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/Intelligence/Gallery/scenebg6.png","/Users/kaede/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/Intelligence/Gallery/scenebg7.png","/Users/kaede/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/Intelligence/Gallery/scenebg8.png","/Users/kaede/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/Intelligence/Gallery/scenebg9.png","/Users/kaede/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/Intelligence/Gallery/scenebg10.png","/Users/kaede/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/Intelligence/Gallery/chooseTipIcon.png","/Users/kaede/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/FunctionIcon/AC/AutoIcon.png","/Users/kaede/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/FunctionIcon/AC/LowIcon.png","/Users/kaede/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/FunctionIcon/AC/DiyThumbIcon.png","/Users/kaede/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/FunctionIcon/AC/AcOnIcon.png","/Users/kaede/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/FunctionIcon/AC/AcIcon.png","/Users/kaede/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/FunctionIcon/AC/DehumidificationIcon.png","/Users/kaede/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/FunctionIcon/AC/AirSupplyIconGray.png","/Users/kaede/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/FunctionIcon/AC/LowIconGray.png","/Users/kaede/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/FunctionIcon/AC/DiyThumbIconOn.png","/Users/kaede/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/FunctionIcon/AC/DivBg2.png","/Users/kaede/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/FunctionIcon/AC/DivBg1.png","/Users/kaede/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/FunctionIcon/AC/CoolIcon.png","/Users/kaede/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/FunctionIcon/AC/WindMediumIcon.png","/Users/kaede/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/FunctionIcon/AC/WindLowIcon.png","/Users/kaede/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/FunctionIcon/AC/AirSupplyIcon.png","/Users/kaede/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/FunctionIcon/AC/WindLowIconGray.png","/Users/kaede/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/FunctionIcon/AC/AcThinIcon1.png","/Users/kaede/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/FunctionIcon/AC/WindMediumIconGray.png","/Users/kaede/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/FunctionIcon/AC/HeatingIconGray.png","/Users/kaede/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/FunctionIcon/AC/MediumIcon.png","/Users/kaede/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/FunctionIcon/AC/CoolIconGray.png","/Users/kaede/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/FunctionIcon/AC/AutoIconGray.png","/Users/kaede/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/FunctionIcon/AC/DehumidificationIconGray.png","/Users/kaede/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/FunctionIcon/AC/WindHighIcon.png","/Users/kaede/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/FunctionIcon/AC/WindHighIconGray.png","/Users/kaede/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/FunctionIcon/AC/MediumIconGray.png","/Users/kaede/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/FunctionIcon/AC/HighIcon.png","/Users/kaede/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/FunctionIcon/AC/HeatIconGray.png","/Users/kaede/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/FunctionIcon/AC/HeatingIcon.png","/Users/kaede/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/FunctionIcon/AC/DiyThumbIcon2On.png","/Users/kaede/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/FunctionIcon/AC/HightIconGray.png","/Users/kaede/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/FunctionIcon/Light/BrightnessBg.png","/Users/kaede/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/FunctionIcon/Curtain/RollingShutterIcon.png","/Users/kaede/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/FunctionIcon/Curtain/MotorCurtainIcon.png","/Users/kaede/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/OnIcon.png","/Users/kaede/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/TipNot.png","/Users/kaede/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/FunctionIcon/DeviceIcon/VoicePanelIcon.png","/Users/kaede/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/Public/Dialog/DialogTipTitleIcon_3.png","/Users/kaede/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/Public/Dialog/DialogTipTitleIcon_2.png","/Users/kaede/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/Public/Dialog/DialogTipTitleIcon_1.png","/Users/kaede/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/LoginIcon/Server.png","/Users/kaede/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/PersonalCenter/ServerInfo.png","/Users/kaede/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/PersonalCenter/Support/Function.png","/Users/kaede/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/PersonalCenter/Support/Search.png","/Users/kaede/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/PersonalCenter/Support/Menu.png","/Users/kaede/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/PersonalCenter/Support/Help.png","/Users/kaede/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/PersonalCenter/Support/Telephone.png","/Users/kaede/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/PersonalCenter/Support/SendMessage.png","/Users/kaede/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/PersonalCenter/Support/Scene.png","/Users/kaede/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/PersonalCenter/Support/Close.png","/Users/kaede/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/Public/Search.png","/Users/kaede/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/PersonalCenter/Head.png","/Users/kaede/Desktop/HDL_APP_Project/HDL-ON_iOS/Resources/Phone/PersonalCenter/Transfer.png","/Users/kaede/Desktop/HDL_APP_Project/HDL-ON_iOS/iTunesArtwork","/Users/kaede/Desktop/HDL_APP_Project/HDL-ON_iOS/iTunesArtwork@2x"],"BuildActions":["Compile","Compile","Compile","Compile","Compile","Compile","Compile","Compile","Compile","Compile","Compile","Compile","Compile","Compile","Compile","Compile","Compile","Compile","Compile","Compile","Compile","Compile","Compile","Compile","Compile","Compile","Compile","Compile","Compile","Compile","Compile","Compile","Compile","Compile","Compile","Compile","Compile","Compile","Compile","Compile","Compile","Compile","Compile","Compile","Compile","Compile","Compile","Compile","Compile","Compile","Compile","Compile","Compile","Compile","Compile","Compile","Compile","Compile","Compile","Compile","Compile","Compile","Compile","Compile","Compile","Compile","Compile","Compile","Compile","Compile","Compile","Compile","Compile","Compile","Compile","Compile","Compile","Compile","Compile","Compile","Compile","Compile","Compile","Compile","Compile","Compile","Compile","Compile","Compile","Compile","Compile","Compile","Compile","Compile","Compile","Compile","Compile","Compile","Compile","Compile","Compile","Compile","Compile","Compile","Compile","Compile","Compile","Compile","Compile","Compile","Compile","Compile","Compile","Compile","Compile","Compile","Compile","Compile","Compile","Compile","Compile","Compile","Compile","Compile","Compile","Compile","Compile","Compile","Compile","Compile","Compile","Compile","Compile","Compile","Compile","Compile","Compile","Compile","Compile","Compile","Compile","Compile","Compile","Compile","Compile","Compile","Compile","Compile","Compile","Compile","Compile","Compile","Compile","Compile","Compile","Compile","Compile","Compile","Compile","Compile","Compile","Compile","Compile","Compile","Compile","Compile","Compile","Compile","Compile","Compile","Compile","Compile","Compile","Compile","Compile","Compile","Compile","Compile","Compile","Compile","Compile","Compile","Compile","Compile","Compile","Compile","Compile","Compile","Compile","Compile","Compile","Compile","Compile","Compile","Compile","Compile","Compile","Compile","Compile","Compile","Compile","Compile","Compile","Compile","Compile","Compile","Compile","Compile","Compile","Compile","Compile","Compile","ImageAsset","ImageAsset","ImageAsset","ImageAsset","ImageAsset","ImageAsset","ImageAsset","ImageAsset","ImageAsset","ImageAsset","ImageAsset","ImageAsset","ImageAsset","ImageAsset","ImageAsset","ImageAsset","ImageAsset","ImageAsset","ImageAsset","ImageAsset","ImageAsset","ImageAsset","ImageAsset","ImageAsset","ImageAsset","ImageAsset","ImageAsset","ImageAsset","ImageAsset","ImageAsset","ImageAsset","ImageAsset","ImageAsset","ImageAsset","ImageAsset","ImageAsset","ImageAsset","ImageAsset","ImageAsset","ImageAsset","ImageAsset","ImageAsset","ImageAsset","ImageAsset","ImageAsset","ImageAsset","ImageAsset","InterfaceDefinition","InterfaceDefinition","None","None","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","BundleResource","ITunesArtwork","ITunesArtwork"],"Analyzers":[],"AdditionalFiles":[],"EditorConfigFiles":[]}
\ No newline at end of file
diff --git a/DLL/Android/Shared.Droid.JLCountryCode.dll b/DLL/Android/Shared.Droid.JLCountryCode.dll
new file mode 100644
index 0000000..f7f9d91
--- /dev/null
+++ b/DLL/Android/Shared.Droid.JLCountryCode.dll
Binary files differ
diff --git a/DLL/IOS/Shared.IOS.JLCountryCode.dll b/DLL/IOS/Shared.IOS.JLCountryCode.dll
new file mode 100644
index 0000000..245c88c
--- /dev/null
+++ b/DLL/IOS/Shared.IOS.JLCountryCode.dll
Binary files differ
diff --git a/HDL-ON_Android/Application.cs b/HDL-ON_Android/Application.cs
index f84ae5d..1e33f4e 100644
--- a/HDL-ON_Android/Application.cs
+++ b/HDL-ON_Android/Application.cs
@@ -115,6 +115,7 @@
         void init()
         {
             //鎵嬫満鍚嶇О Android.OS.Build.Manufacturer;
+            OnAppConfig.Instance.PhoneName = Android.OS.Build.Manufacturer;
         }
         void checkSomeInfo()
         {
diff --git a/HDL-ON_Android/Assets/Phone/LoginIcon/Server.png b/HDL-ON_Android/Assets/Phone/LoginIcon/Server.png
new file mode 100644
index 0000000..f3b16ea
--- /dev/null
+++ b/HDL-ON_Android/Assets/Phone/LoginIcon/Server.png
Binary files differ
diff --git a/HDL-ON_Android/Assets/Phone/PersonalCenter/Head.png b/HDL-ON_Android/Assets/Phone/PersonalCenter/Head.png
new file mode 100644
index 0000000..b15d2ea
--- /dev/null
+++ b/HDL-ON_Android/Assets/Phone/PersonalCenter/Head.png
Binary files differ
diff --git a/HDL-ON_Android/Assets/Phone/PersonalCenter/ServerInfo.png b/HDL-ON_Android/Assets/Phone/PersonalCenter/ServerInfo.png
new file mode 100644
index 0000000..eecc590
--- /dev/null
+++ b/HDL-ON_Android/Assets/Phone/PersonalCenter/ServerInfo.png
Binary files differ
diff --git a/HDL-ON_Android/Assets/Phone/PersonalCenter/Support/Close.png b/HDL-ON_Android/Assets/Phone/PersonalCenter/Support/Close.png
new file mode 100644
index 0000000..de1e192
--- /dev/null
+++ b/HDL-ON_Android/Assets/Phone/PersonalCenter/Support/Close.png
Binary files differ
diff --git a/HDL-ON_Android/Assets/Phone/PersonalCenter/Support/Function.png b/HDL-ON_Android/Assets/Phone/PersonalCenter/Support/Function.png
new file mode 100644
index 0000000..4a0598c
--- /dev/null
+++ b/HDL-ON_Android/Assets/Phone/PersonalCenter/Support/Function.png
Binary files differ
diff --git a/HDL-ON_Android/Assets/Phone/PersonalCenter/Support/Help.png b/HDL-ON_Android/Assets/Phone/PersonalCenter/Support/Help.png
new file mode 100644
index 0000000..9990493
--- /dev/null
+++ b/HDL-ON_Android/Assets/Phone/PersonalCenter/Support/Help.png
Binary files differ
diff --git a/HDL-ON_Android/Assets/Phone/PersonalCenter/Support/Menu.png b/HDL-ON_Android/Assets/Phone/PersonalCenter/Support/Menu.png
new file mode 100644
index 0000000..71810f4
--- /dev/null
+++ b/HDL-ON_Android/Assets/Phone/PersonalCenter/Support/Menu.png
Binary files differ
diff --git a/HDL-ON_Android/Assets/Phone/PersonalCenter/Support/Scene.png b/HDL-ON_Android/Assets/Phone/PersonalCenter/Support/Scene.png
new file mode 100644
index 0000000..fcf3715
--- /dev/null
+++ b/HDL-ON_Android/Assets/Phone/PersonalCenter/Support/Scene.png
Binary files differ
diff --git a/HDL-ON_Android/Assets/Phone/PersonalCenter/Support/Search.png b/HDL-ON_Android/Assets/Phone/PersonalCenter/Support/Search.png
new file mode 100644
index 0000000..77711cb
--- /dev/null
+++ b/HDL-ON_Android/Assets/Phone/PersonalCenter/Support/Search.png
Binary files differ
diff --git a/HDL-ON_Android/Assets/Phone/PersonalCenter/Support/SendMessage.png b/HDL-ON_Android/Assets/Phone/PersonalCenter/Support/SendMessage.png
new file mode 100644
index 0000000..e8f67ed
--- /dev/null
+++ b/HDL-ON_Android/Assets/Phone/PersonalCenter/Support/SendMessage.png
Binary files differ
diff --git a/HDL-ON_Android/Assets/Phone/PersonalCenter/Support/Telephone.png b/HDL-ON_Android/Assets/Phone/PersonalCenter/Support/Telephone.png
new file mode 100644
index 0000000..120fed1
--- /dev/null
+++ b/HDL-ON_Android/Assets/Phone/PersonalCenter/Support/Telephone.png
Binary files differ
diff --git a/HDL-ON_Android/Assets/Phone/PersonalCenter/Transfer.png b/HDL-ON_Android/Assets/Phone/PersonalCenter/Transfer.png
new file mode 100644
index 0000000..c81184b
--- /dev/null
+++ b/HDL-ON_Android/Assets/Phone/PersonalCenter/Transfer.png
Binary files differ
diff --git a/HDL-ON_Android/Assets/Phone/Public/Dialog/DialogTipTitleIcon_1.png b/HDL-ON_Android/Assets/Phone/Public/Dialog/DialogTipTitleIcon_1.png
new file mode 100755
index 0000000..2954076
--- /dev/null
+++ b/HDL-ON_Android/Assets/Phone/Public/Dialog/DialogTipTitleIcon_1.png
Binary files differ
diff --git a/HDL-ON_Android/Assets/Phone/Public/Dialog/DialogTipTitleIcon_2.png b/HDL-ON_Android/Assets/Phone/Public/Dialog/DialogTipTitleIcon_2.png
new file mode 100644
index 0000000..8450325
--- /dev/null
+++ b/HDL-ON_Android/Assets/Phone/Public/Dialog/DialogTipTitleIcon_2.png
Binary files differ
diff --git a/HDL-ON_Android/Assets/Phone/Public/Dialog/DialogTipTitleIcon_3.png b/HDL-ON_Android/Assets/Phone/Public/Dialog/DialogTipTitleIcon_3.png
new file mode 100644
index 0000000..3a6658f
--- /dev/null
+++ b/HDL-ON_Android/Assets/Phone/Public/Dialog/DialogTipTitleIcon_3.png
Binary files differ
diff --git a/HDL-ON_Android/Assets/Phone/Public/Search.png b/HDL-ON_Android/Assets/Phone/Public/Search.png
new file mode 100644
index 0000000..77711cb
--- /dev/null
+++ b/HDL-ON_Android/Assets/Phone/Public/Search.png
Binary files differ
diff --git a/HDL-ON_Android/HDL-ON_Android.csproj b/HDL-ON_Android/HDL-ON_Android.csproj
index 20e7750..6e0ea58 100644
--- a/HDL-ON_Android/HDL-ON_Android.csproj
+++ b/HDL-ON_Android/HDL-ON_Android.csproj
@@ -30,7 +30,7 @@
     <DebugType>portable</DebugType>
     <Optimize>False</Optimize>
     <OutputPath>bin\Debug\</OutputPath>
-    <DefineConstants>DEBUG;TRACE</DefineConstants>
+    <DefineConstants>DEBUG;TRACE;__Android__</DefineConstants>
     <ErrorReport>prompt</ErrorReport>
     <WarningLevel>4</WarningLevel>
     <EmbedAssembliesIntoApk>False</EmbedAssembliesIntoApk>
@@ -44,7 +44,7 @@
     <DebugType>portable</DebugType>
     <Optimize>false</Optimize>
     <OutputPath>bin\Release\</OutputPath>
-    <DefineConstants>TRACE</DefineConstants>
+    <DefineConstants>TRACE;__Android__;</DefineConstants>
     <ErrorReport>prompt</ErrorReport>
     <WarningLevel>4</WarningLevel>
     <AndroidManagedSymbols>true</AndroidManagedSymbols>
@@ -122,6 +122,9 @@
     <Reference Include="Xamarin.Android.Support.Vector.Drawable">
       <HintPath>..\DLL\Android\Xamarin.Android.Support.Vector.Drawable.dll</HintPath>
     </Reference>
+    <Reference Include="Shared.Droid.JLCountryCode">
+      <HintPath>..\DLL\Android\Shared.Droid.JLCountryCode.dll</HintPath>
+    </Reference>
   </ItemGroup>
   <ItemGroup>
     <Compile Include="MainActivity.cs" />
@@ -131,6 +134,7 @@
     <Compile Include="Scan.cs" />
     <Compile Include="ZXingCustomScanView.cs" />
     <Compile Include="ZXingOverlayView.cs" />
+    <Compile Include="Other\JLCountrycode.cs" />
   </ItemGroup>
   <ItemGroup>
     <None Include="Resources\AboutResources.txt" />
@@ -215,6 +219,9 @@
     <PackageReference Include="ZXing.Net.Mobile">
       <Version>2.4.1</Version>
     </PackageReference>
+    <PackageReference Include="RestSharp">
+      <Version>106.11.7</Version>
+    </PackageReference>
   </ItemGroup>
   <ItemGroup>
     <AndroidAsset Include="Assets\Language.ini" />
diff --git a/HDL-ON_Android/Other/JLCountrycode.cs b/HDL-ON_Android/Other/JLCountrycode.cs
new file mode 100644
index 0000000..cdf913a
--- /dev/null
+++ b/HDL-ON_Android/Other/JLCountrycode.cs
@@ -0,0 +1,56 @@
+锘縰sing System;
+using Android.Content;
+using Com.Widget.Jlcountrycode;
+
+namespace JLCountrycode
+{
+    public class CountryCodeView
+    {
+        /// <summary>
+        /// 鎺ュ彛绫荤殑杩斿洖淇℃伅
+        /// </summary>
+        private static CountryCodeView m_Current = null;
+        /// <summary>
+        /// 鎺ュ彛绫荤殑杩斿洖淇℃伅
+        /// </summary>
+        public static CountryCodeView Current
+        {
+            get
+            {
+                if (m_Current == null)
+                {
+                    m_Current = new CountryCodeView();
+                }
+                return m_Current;
+            }
+        }
+
+        /// <summary>
+        /// 鍥藉鍖哄彿閫夋嫨
+        /// </summary>
+        /// <param name="action"></param>
+        public void Show(Action<string, string> action)
+        {
+            JLCountryCodeActivity.OnCountryCodeCallback = new OnCountryCodeCallback(action);
+            Shared.Application.Activity.StartActivity(new Intent(Shared.Application.Activity, typeof(JLCountryCodeActivity)));
+        }
+    }
+
+    /// <summary>
+    /// OnCountryCodeCallback
+    /// </summary>
+    public class OnCountryCodeCallback : Java.Lang.Object, Com.Widget.Jlcountrycode.Contact.IOnCountryCodeCallback
+    {
+
+        Action<string, string> mAction;
+        public OnCountryCodeCallback(Action<string, string> action)
+        {
+            mAction = action;
+        }
+
+        public void OnSelectCountryCallback(string countryName, string code)
+        {
+            mAction?.Invoke(countryName, code);
+        }
+    }
+}
\ No newline at end of file
diff --git a/HDL-ON_Android/Resources/Resource.designer.cs b/HDL-ON_Android/Resources/Resource.designer.cs
index 8844612..8ecaf81 100644
--- a/HDL-ON_Android/Resources/Resource.designer.cs
+++ b/HDL-ON_Android/Resources/Resource.designer.cs
@@ -2897,223 +2897,226 @@
 			public const int avd_show_password = 2131230810;
 			
 			// aapt resource value: 0x7F08005B
-			public const int design_bottom_navigation_item_background = 2131230811;
+			public const int cc_bg_black_round = 2131230811;
 			
 			// aapt resource value: 0x7F08005C
-			public const int design_fab_background = 2131230812;
+			public const int design_bottom_navigation_item_background = 2131230812;
 			
 			// aapt resource value: 0x7F08005D
-			public const int design_ic_visibility = 2131230813;
+			public const int design_fab_background = 2131230813;
 			
 			// aapt resource value: 0x7F08005E
-			public const int design_ic_visibility_off = 2131230814;
+			public const int design_ic_visibility = 2131230814;
 			
 			// aapt resource value: 0x7F08005F
-			public const int design_password_eye = 2131230815;
+			public const int design_ic_visibility_off = 2131230815;
 			
 			// aapt resource value: 0x7F080060
-			public const int design_snackbar_background = 2131230816;
+			public const int design_password_eye = 2131230816;
 			
 			// aapt resource value: 0x7F080061
-			public const int fingerprint_draw_off = 2131230817;
+			public const int design_snackbar_background = 2131230817;
 			
 			// aapt resource value: 0x7F080062
-			public const int fingerprint_draw_off_animation = 2131230818;
+			public const int fingerprint_draw_off = 2131230818;
 			
 			// aapt resource value: 0x7F080063
-			public const int fingerprint_draw_on = 2131230819;
+			public const int fingerprint_draw_off_animation = 2131230819;
 			
 			// aapt resource value: 0x7F080064
-			public const int fingerprint_draw_on_animation = 2131230820;
+			public const int fingerprint_draw_on = 2131230820;
 			
 			// aapt resource value: 0x7F080065
-			public const int fingerprint_error = 2131230821;
+			public const int fingerprint_draw_on_animation = 2131230821;
 			
 			// aapt resource value: 0x7F080066
-			public const int fingerprint_error_off = 2131230822;
+			public const int fingerprint_error = 2131230822;
 			
 			// aapt resource value: 0x7F080067
-			public const int fingerprint_error_off_animation = 2131230823;
+			public const int fingerprint_error_off = 2131230823;
 			
 			// aapt resource value: 0x7F080068
-			public const int fingerprint_error_on = 2131230824;
+			public const int fingerprint_error_off_animation = 2131230824;
 			
 			// aapt resource value: 0x7F080069
-			public const int fingerprint_error_on_animation = 2131230825;
+			public const int fingerprint_error_on = 2131230825;
 			
 			// aapt resource value: 0x7F08006A
-			public const int fingerprint_error_state_to_fp = 2131230826;
+			public const int fingerprint_error_on_animation = 2131230826;
 			
 			// aapt resource value: 0x7F08006B
-			public const int fingerprint_error_state_to_fp_animation = 2131230827;
+			public const int fingerprint_error_state_to_fp = 2131230827;
 			
 			// aapt resource value: 0x7F08006C
-			public const int fingerprint_fingerprint = 2131230828;
+			public const int fingerprint_error_state_to_fp_animation = 2131230828;
 			
 			// aapt resource value: 0x7F08006D
-			public const int fingerprint_fp_to_error_state = 2131230829;
+			public const int fingerprint_fingerprint = 2131230829;
 			
 			// aapt resource value: 0x7F08006E
-			public const int fingerprint_fp_to_error_state_animation = 2131230830;
+			public const int fingerprint_fp_to_error_state = 2131230830;
 			
 			// aapt resource value: 0x7F08006F
-			public const int gd_btn_shape_app_b = 2131230831;
+			public const int fingerprint_fp_to_error_state_animation = 2131230831;
 			
 			// aapt resource value: 0x7F080070
-			public const int gd_btn_shape_app_g = 2131230832;
+			public const int gd_btn_shape_app_b = 2131230832;
 			
 			// aapt resource value: 0x7F080071
-			public const int gd_btn_shape_app_w = 2131230833;
+			public const int gd_btn_shape_app_g = 2131230833;
 			
 			// aapt resource value: 0x7F080072
-			public const int gd_btn_shape_shadow_w = 2131230834;
+			public const int gd_btn_shape_app_w = 2131230834;
 			
 			// aapt resource value: 0x7F080073
-			public const int gd_click_effect_select = 2131230835;
-			
-			// aapt resource value: 0x7F080092
-			public const int Icon = 2131230866;
+			public const int gd_btn_shape_shadow_w = 2131230835;
 			
 			// aapt resource value: 0x7F080074
-			public const int ic_gdmap_add = 2131230836;
-			
-			// aapt resource value: 0x7F080075
-			public const int ic_gdmap_back = 2131230837;
-			
-			// aapt resource value: 0x7F080076
-			public const int ic_gdmap_delete = 2131230838;
-			
-			// aapt resource value: 0x7F080077
-			public const int ic_gdmap_home = 2131230839;
-			
-			// aapt resource value: 0x7F080078
-			public const int ic_gdmap_mylocation = 2131230840;
-			
-			// aapt resource value: 0x7F080079
-			public const int ic_gdmap_now = 2131230841;
-			
-			// aapt resource value: 0x7F08007A
-			public const int ic_gdmap_search = 2131230842;
-			
-			// aapt resource value: 0x7F08007B
-			public const int ic_gdmap_zoom_out = 2131230843;
-			
-			// aapt resource value: 0x7F08007C
-			public const int ic_gps_point = 2131230844;
-			
-			// aapt resource value: 0x7F08007D
-			public const int ic_wd_arc_scale_bg = 2131230845;
-			
-			// aapt resource value: 0x7F08007E
-			public const int ic_wd_curtain_bg_top = 2131230846;
-			
-			// aapt resource value: 0x7F08007F
-			public const int ic_wd_curtain_h_bg = 2131230847;
-			
-			// aapt resource value: 0x7F080080
-			public const int ic_wd_curtain_h_open = 2131230848;
-			
-			// aapt resource value: 0x7F080081
-			public const int ic_wd_curtain_h_progress = 2131230849;
-			
-			// aapt resource value: 0x7F080082
-			public const int ic_wd_curtain_h_top = 2131230850;
-			
-			// aapt resource value: 0x7F080083
-			public const int ic_wd_curtain_open = 2131230851;
-			
-			// aapt resource value: 0x7F080084
-			public const int ic_wd_curtain_roll_bg = 2131230852;
-			
-			// aapt resource value: 0x7F080085
-			public const int ic_wd_curtain_roll_progress = 2131230853;
-			
-			// aapt resource value: 0x7F080086
-			public const int ic_wd_on_curtain_blinds_progress = 2131230854;
-			
-			// aapt resource value: 0x7F080087
-			public const int ic_wd_on_curtain_blinds_progress2 = 2131230855;
-			
-			// aapt resource value: 0x7F080088
-			public const int ic_wd_on_curtain_blinds_progress_close = 2131230856;
-			
-			// aapt resource value: 0x7F080089
-			public const int ic_wd_on_curtain_blinds_progress_close2 = 2131230857;
-			
-			// aapt resource value: 0x7F08008A
-			public const int ic_wd_on_curtain_h_bg = 2131230858;
-			
-			// aapt resource value: 0x7F08008B
-			public const int ic_wd_on_curtain_h_open = 2131230859;
-			
-			// aapt resource value: 0x7F08008C
-			public const int ic_wd_on_curtain_h_progress = 2131230860;
-			
-			// aapt resource value: 0x7F08008D
-			public const int ic_wd_on_curtain_h_progress_close = 2131230861;
-			
-			// aapt resource value: 0x7F08008E
-			public const int ic_wd_on_curtain_open = 2131230862;
-			
-			// aapt resource value: 0x7F08008F
-			public const int ic_wd_on_curtain_roll_bg = 2131230863;
-			
-			// aapt resource value: 0x7F080090
-			public const int ic_wd_on_curtain_roll_progress = 2131230864;
-			
-			// aapt resource value: 0x7F080091
-			public const int ic_wd_on_curtain_roll_progress_close = 2131230865;
+			public const int gd_click_effect_select = 2131230836;
 			
 			// aapt resource value: 0x7F080093
-			public const int Loading = 2131230867;
+			public const int Icon = 2131230867;
+			
+			// aapt resource value: 0x7F080075
+			public const int ic_gdmap_add = 2131230837;
+			
+			// aapt resource value: 0x7F080076
+			public const int ic_gdmap_back = 2131230838;
+			
+			// aapt resource value: 0x7F080077
+			public const int ic_gdmap_delete = 2131230839;
+			
+			// aapt resource value: 0x7F080078
+			public const int ic_gdmap_home = 2131230840;
+			
+			// aapt resource value: 0x7F080079
+			public const int ic_gdmap_mylocation = 2131230841;
+			
+			// aapt resource value: 0x7F08007A
+			public const int ic_gdmap_now = 2131230842;
+			
+			// aapt resource value: 0x7F08007B
+			public const int ic_gdmap_search = 2131230843;
+			
+			// aapt resource value: 0x7F08007C
+			public const int ic_gdmap_zoom_out = 2131230844;
+			
+			// aapt resource value: 0x7F08007D
+			public const int ic_gps_point = 2131230845;
+			
+			// aapt resource value: 0x7F08007E
+			public const int ic_wd_arc_scale_bg = 2131230846;
+			
+			// aapt resource value: 0x7F08007F
+			public const int ic_wd_curtain_bg_top = 2131230847;
+			
+			// aapt resource value: 0x7F080080
+			public const int ic_wd_curtain_h_bg = 2131230848;
+			
+			// aapt resource value: 0x7F080081
+			public const int ic_wd_curtain_h_open = 2131230849;
+			
+			// aapt resource value: 0x7F080082
+			public const int ic_wd_curtain_h_progress = 2131230850;
+			
+			// aapt resource value: 0x7F080083
+			public const int ic_wd_curtain_h_top = 2131230851;
+			
+			// aapt resource value: 0x7F080084
+			public const int ic_wd_curtain_open = 2131230852;
+			
+			// aapt resource value: 0x7F080085
+			public const int ic_wd_curtain_roll_bg = 2131230853;
+			
+			// aapt resource value: 0x7F080086
+			public const int ic_wd_curtain_roll_progress = 2131230854;
+			
+			// aapt resource value: 0x7F080087
+			public const int ic_wd_on_curtain_blinds_progress = 2131230855;
+			
+			// aapt resource value: 0x7F080088
+			public const int ic_wd_on_curtain_blinds_progress2 = 2131230856;
+			
+			// aapt resource value: 0x7F080089
+			public const int ic_wd_on_curtain_blinds_progress_close = 2131230857;
+			
+			// aapt resource value: 0x7F08008A
+			public const int ic_wd_on_curtain_blinds_progress_close2 = 2131230858;
+			
+			// aapt resource value: 0x7F08008B
+			public const int ic_wd_on_curtain_h_bg = 2131230859;
+			
+			// aapt resource value: 0x7F08008C
+			public const int ic_wd_on_curtain_h_open = 2131230860;
+			
+			// aapt resource value: 0x7F08008D
+			public const int ic_wd_on_curtain_h_progress = 2131230861;
+			
+			// aapt resource value: 0x7F08008E
+			public const int ic_wd_on_curtain_h_progress_close = 2131230862;
+			
+			// aapt resource value: 0x7F08008F
+			public const int ic_wd_on_curtain_open = 2131230863;
+			
+			// aapt resource value: 0x7F080090
+			public const int ic_wd_on_curtain_roll_bg = 2131230864;
+			
+			// aapt resource value: 0x7F080091
+			public const int ic_wd_on_curtain_roll_progress = 2131230865;
+			
+			// aapt resource value: 0x7F080092
+			public const int ic_wd_on_curtain_roll_progress_close = 2131230866;
 			
 			// aapt resource value: 0x7F080094
-			public const int navigation_empty_icon = 2131230868;
+			public const int Loading = 2131230868;
 			
 			// aapt resource value: 0x7F080095
-			public const int notification_action_background = 2131230869;
+			public const int navigation_empty_icon = 2131230869;
 			
 			// aapt resource value: 0x7F080096
-			public const int notification_bg = 2131230870;
+			public const int notification_action_background = 2131230870;
 			
 			// aapt resource value: 0x7F080097
-			public const int notification_bg_low = 2131230871;
+			public const int notification_bg = 2131230871;
 			
 			// aapt resource value: 0x7F080098
-			public const int notification_bg_low_normal = 2131230872;
+			public const int notification_bg_low = 2131230872;
 			
 			// aapt resource value: 0x7F080099
-			public const int notification_bg_low_pressed = 2131230873;
+			public const int notification_bg_low_normal = 2131230873;
 			
 			// aapt resource value: 0x7F08009A
-			public const int notification_bg_normal = 2131230874;
+			public const int notification_bg_low_pressed = 2131230874;
 			
 			// aapt resource value: 0x7F08009B
-			public const int notification_bg_normal_pressed = 2131230875;
+			public const int notification_bg_normal = 2131230875;
 			
 			// aapt resource value: 0x7F08009C
-			public const int notification_icon_background = 2131230876;
+			public const int notification_bg_normal_pressed = 2131230876;
 			
 			// aapt resource value: 0x7F08009D
-			public const int notification_template_icon_bg = 2131230877;
+			public const int notification_icon_background = 2131230877;
 			
 			// aapt resource value: 0x7F08009E
-			public const int notification_template_icon_low_bg = 2131230878;
+			public const int notification_template_icon_bg = 2131230878;
 			
 			// aapt resource value: 0x7F08009F
-			public const int notification_tile_bg = 2131230879;
+			public const int notification_template_icon_low_bg = 2131230879;
 			
 			// aapt resource value: 0x7F0800A0
-			public const int notify_panel_notification_icon_bg = 2131230880;
+			public const int notification_tile_bg = 2131230880;
 			
 			// aapt resource value: 0x7F0800A1
-			public const int selector_pickerview_btn = 2131230881;
+			public const int notify_panel_notification_icon_bg = 2131230881;
 			
 			// aapt resource value: 0x7F0800A2
-			public const int tooltip_frame_dark = 2131230882;
+			public const int selector_pickerview_btn = 2131230882;
 			
 			// aapt resource value: 0x7F0800A3
-			public const int tooltip_frame_light = 2131230883;
+			public const int tooltip_frame_dark = 2131230883;
+			
+			// aapt resource value: 0x7F0800A4
+			public const int tooltip_frame_light = 2131230884;
 			
 			static Drawable()
 			{
@@ -3234,127 +3237,151 @@
 			public const int cancel_action = 2131296303;
 			
 			// aapt resource value: 0x7F090030
-			public const int center = 2131296304;
+			public const int cc_btn_back = 2131296304;
 			
 			// aapt resource value: 0x7F090031
-			public const int center_horizontal = 2131296305;
+			public const int cc_line_long = 2131296305;
 			
 			// aapt resource value: 0x7F090032
-			public const int center_vertical = 2131296306;
+			public const int cc_listview = 2131296306;
 			
 			// aapt resource value: 0x7F090033
-			public const int checkbox = 2131296307;
+			public const int cc_nameView = 2131296307;
 			
 			// aapt resource value: 0x7F090034
-			public const int chronometer = 2131296308;
+			public const int cc_rl_topview = 2131296308;
 			
 			// aapt resource value: 0x7F090035
-			public const int clip_horizontal = 2131296309;
+			public const int cc_searchBarContainer = 2131296309;
 			
 			// aapt resource value: 0x7F090036
-			public const int clip_vertical = 2131296310;
+			public const int cc_sectionTextView = 2131296310;
 			
 			// aapt resource value: 0x7F090037
-			public const int collapseActionView = 2131296311;
+			public const int cc_tv_activity_title = 2131296311;
 			
 			// aapt resource value: 0x7F090038
-			public const int container = 2131296312;
+			public const int center = 2131296312;
 			
 			// aapt resource value: 0x7F090039
-			public const int contentFrame = 2131296313;
+			public const int center_horizontal = 2131296313;
 			
 			// aapt resource value: 0x7F09003A
-			public const int contentPanel = 2131296314;
+			public const int center_vertical = 2131296314;
 			
 			// aapt resource value: 0x7F09003B
-			public const int content_container = 2131296315;
+			public const int checkbox = 2131296315;
 			
 			// aapt resource value: 0x7F09003C
-			public const int coordinator = 2131296316;
+			public const int chronometer = 2131296316;
+			
+			// aapt resource value: 0x7F09003D
+			public const int clip_horizontal = 2131296317;
+			
+			// aapt resource value: 0x7F09003E
+			public const int clip_vertical = 2131296318;
+			
+			// aapt resource value: 0x7F09003F
+			public const int collapseActionView = 2131296319;
+			
+			// aapt resource value: 0x7F090040
+			public const int container = 2131296320;
+			
+			// aapt resource value: 0x7F090041
+			public const int contentFrame = 2131296321;
+			
+			// aapt resource value: 0x7F090042
+			public const int contentPanel = 2131296322;
+			
+			// aapt resource value: 0x7F090043
+			public const int content_container = 2131296323;
+			
+			// aapt resource value: 0x7F090044
+			public const int coordinator = 2131296324;
 			
 			// aapt resource value: 0x7F090001
 			public const int CTRL = 2131296257;
 			
-			// aapt resource value: 0x7F09003D
-			public const int custom = 2131296317;
-			
-			// aapt resource value: 0x7F09003E
-			public const int customPanel = 2131296318;
-			
-			// aapt resource value: 0x7F09003F
-			public const int day = 2131296319;
-			
-			// aapt resource value: 0x7F090040
-			public const int decor_content_parent = 2131296320;
-			
-			// aapt resource value: 0x7F090041
-			public const int default_activity_button = 2131296321;
-			
-			// aapt resource value: 0x7F090042
-			public const int description = 2131296322;
-			
-			// aapt resource value: 0x7F090043
-			public const int design_bottom_sheet = 2131296323;
-			
-			// aapt resource value: 0x7F090044
-			public const int design_menu_item_action_area = 2131296324;
-			
 			// aapt resource value: 0x7F090045
-			public const int design_menu_item_action_area_stub = 2131296325;
+			public const int custom = 2131296325;
 			
 			// aapt resource value: 0x7F090046
-			public const int design_menu_item_text = 2131296326;
+			public const int customPanel = 2131296326;
 			
 			// aapt resource value: 0x7F090047
-			public const int design_navigation_view = 2131296327;
+			public const int day = 2131296327;
 			
 			// aapt resource value: 0x7F090048
-			public const int disableHome = 2131296328;
+			public const int decor_content_parent = 2131296328;
 			
 			// aapt resource value: 0x7F090049
-			public const int edit_query = 2131296329;
+			public const int default_activity_button = 2131296329;
 			
 			// aapt resource value: 0x7F09004A
-			public const int end = 2131296330;
+			public const int description = 2131296330;
 			
 			// aapt resource value: 0x7F09004B
-			public const int end_padder = 2131296331;
+			public const int design_bottom_sheet = 2131296331;
 			
 			// aapt resource value: 0x7F09004C
-			public const int enterAlways = 2131296332;
+			public const int design_menu_item_action_area = 2131296332;
 			
 			// aapt resource value: 0x7F09004D
-			public const int enterAlwaysCollapsed = 2131296333;
+			public const int design_menu_item_action_area_stub = 2131296333;
 			
 			// aapt resource value: 0x7F09004E
-			public const int exitUntilCollapsed = 2131296334;
-			
-			// aapt resource value: 0x7F090050
-			public const int expanded_menu = 2131296336;
+			public const int design_menu_item_text = 2131296334;
 			
 			// aapt resource value: 0x7F09004F
-			public const int expand_activities_button = 2131296335;
+			public const int design_navigation_view = 2131296335;
+			
+			// aapt resource value: 0x7F090050
+			public const int disableHome = 2131296336;
 			
 			// aapt resource value: 0x7F090051
-			public const int fill = 2131296337;
+			public const int edit_query = 2131296337;
+			
+			// aapt resource value: 0x7F090052
+			public const int end = 2131296338;
+			
+			// aapt resource value: 0x7F090053
+			public const int end_padder = 2131296339;
+			
+			// aapt resource value: 0x7F090054
+			public const int enterAlways = 2131296340;
+			
+			// aapt resource value: 0x7F090055
+			public const int enterAlwaysCollapsed = 2131296341;
+			
+			// aapt resource value: 0x7F090056
+			public const int exitUntilCollapsed = 2131296342;
+			
+			// aapt resource value: 0x7F090058
+			public const int expanded_menu = 2131296344;
+			
+			// aapt resource value: 0x7F090057
+			public const int expand_activities_button = 2131296343;
+			
+			// aapt resource value: 0x7F090059
+			public const int fill = 2131296345;
 			
 			// aapt resource value: 0x7F090002
 			public const int FILL = 2131296258;
 			
-			// aapt resource value: 0x7F090052
-			public const int fill_horizontal = 2131296338;
+			// aapt resource value: 0x7F09005A
+			public const int fill_horizontal = 2131296346;
 			
 			// aapt resource value: 0x7F090003
 			public const int FILL_STROKE = 2131296259;
 			
-			// aapt resource value: 0x7F090053
-			public const int fill_vertical = 2131296339;
+			// aapt resource value: 0x7F09005B
+			public const int fill_vertical = 2131296347;
 			
-			// aapt resource value: 0x7F090054
-			public const int fingerprint_icon = 2131296340;
+			// aapt resource value: 0x7F09005C
+			public const int fingerprint_icon = 2131296348;
 			
-			// aapt resource value: 0x7F090055
-			public const int @fixed = 2131296341;
+			// aapt resource value: 0x7F09005D
+			public const int @fixed = 2131296349;
 			
 			// aapt resource value: 0x7F090005
 			public const int FixedBehind = 2131296261;
@@ -3362,461 +3389,464 @@
 			// aapt resource value: 0x7F090006
 			public const int FixedFront = 2131296262;
 			
-			// aapt resource value: 0x7F090056
-			public const int forever = 2131296342;
+			// aapt resource value: 0x7F09005E
+			public const int forever = 2131296350;
 			
 			// aapt resource value: 0x7F090004
 			public const int FUNCTION = 2131296260;
 			
-			// aapt resource value: 0x7F090057
-			public const int gd_btn_back = 2131296343;
-			
-			// aapt resource value: 0x7F090058
-			public const int gd_btn_myLocation = 2131296344;
-			
-			// aapt resource value: 0x7F090059
-			public const int gd_btn_save = 2131296345;
-			
-			// aapt resource value: 0x7F09005A
-			public const int gd_img_search_delete = 2131296346;
-			
-			// aapt resource value: 0x7F09005B
-			public const int gd_ll_myhome = 2131296347;
-			
-			// aapt resource value: 0x7F09005C
-			public const int gd_ll_search = 2131296348;
-			
-			// aapt resource value: 0x7F09005D
-			public const int gd_mapView = 2131296349;
-			
-			// aapt resource value: 0x7F09005E
-			public const int gd_rl_topview = 2131296350;
-			
 			// aapt resource value: 0x7F09005F
-			public const int gd_tv_activity_title = 2131296351;
+			public const int gd_btn_back = 2131296351;
 			
 			// aapt resource value: 0x7F090060
-			public const int gd_tv_radius = 2131296352;
+			public const int gd_btn_myLocation = 2131296352;
 			
 			// aapt resource value: 0x7F090061
-			public const int gd_tv_search_title = 2131296353;
+			public const int gd_btn_save = 2131296353;
 			
 			// aapt resource value: 0x7F090062
-			public const int ghost_view = 2131296354;
+			public const int gd_img_search_delete = 2131296354;
 			
 			// aapt resource value: 0x7F090063
-			public const int hdl_gallery_rootView = 2131296355;
+			public const int gd_ll_myhome = 2131296355;
 			
 			// aapt resource value: 0x7F090064
-			public const int hdl_gallery_viewPager = 2131296356;
+			public const int gd_ll_search = 2131296356;
 			
 			// aapt resource value: 0x7F090065
-			public const int hdl_options1 = 2131296357;
+			public const int gd_mapView = 2131296357;
 			
 			// aapt resource value: 0x7F090066
-			public const int hdl_options2 = 2131296358;
+			public const int gd_rl_topview = 2131296358;
 			
 			// aapt resource value: 0x7F090067
-			public const int hdl_options3 = 2131296359;
+			public const int gd_tv_activity_title = 2131296359;
 			
 			// aapt resource value: 0x7F090068
-			public const int hdl_pickerview_ll = 2131296360;
+			public const int gd_tv_radius = 2131296360;
 			
 			// aapt resource value: 0x7F090069
-			public const int home = 2131296361;
+			public const int gd_tv_search_title = 2131296361;
 			
 			// aapt resource value: 0x7F09006A
-			public const int homeAsUp = 2131296362;
+			public const int ghost_view = 2131296362;
 			
 			// aapt resource value: 0x7F09006B
-			public const int hour = 2131296363;
+			public const int hdl_gallery_rootView = 2131296363;
 			
 			// aapt resource value: 0x7F09006C
-			public const int icon = 2131296364;
+			public const int hdl_gallery_viewPager = 2131296364;
 			
 			// aapt resource value: 0x7F09006D
-			public const int icon_group = 2131296365;
+			public const int hdl_options1 = 2131296365;
 			
 			// aapt resource value: 0x7F09006E
-			public const int ifRoom = 2131296366;
+			public const int hdl_options2 = 2131296366;
 			
 			// aapt resource value: 0x7F09006F
-			public const int image = 2131296367;
+			public const int hdl_options3 = 2131296367;
 			
 			// aapt resource value: 0x7F090070
-			public const int info = 2131296368;
+			public const int hdl_pickerview_ll = 2131296368;
 			
 			// aapt resource value: 0x7F090071
-			public const int italic = 2131296369;
+			public const int home = 2131296369;
 			
 			// aapt resource value: 0x7F090072
-			public const int item_touch_helper_previous_elevation = 2131296370;
+			public const int homeAsUp = 2131296370;
 			
 			// aapt resource value: 0x7F090073
-			public const int largeLabel = 2131296371;
+			public const int hour = 2131296371;
 			
 			// aapt resource value: 0x7F090074
-			public const int left = 2131296372;
+			public const int icon = 2131296372;
 			
 			// aapt resource value: 0x7F090075
-			public const int line1 = 2131296373;
+			public const int icon_group = 2131296373;
 			
 			// aapt resource value: 0x7F090076
-			public const int line3 = 2131296374;
+			public const int ifRoom = 2131296374;
 			
 			// aapt resource value: 0x7F090077
-			public const int listMode = 2131296375;
+			public const int image = 2131296375;
 			
 			// aapt resource value: 0x7F090078
-			public const int list_item = 2131296376;
+			public const int info = 2131296376;
 			
 			// aapt resource value: 0x7F090079
-			public const int masked = 2131296377;
+			public const int input_search_query = 2131296377;
+			
+			// aapt resource value: 0x7F09007A
+			public const int italic = 2131296378;
+			
+			// aapt resource value: 0x7F09007B
+			public const int item_touch_helper_previous_elevation = 2131296379;
+			
+			// aapt resource value: 0x7F09007C
+			public const int largeLabel = 2131296380;
+			
+			// aapt resource value: 0x7F09007D
+			public const int left = 2131296381;
+			
+			// aapt resource value: 0x7F09007E
+			public const int line1 = 2131296382;
+			
+			// aapt resource value: 0x7F09007F
+			public const int line3 = 2131296383;
+			
+			// aapt resource value: 0x7F090080
+			public const int listMode = 2131296384;
+			
+			// aapt resource value: 0x7F090081
+			public const int list_item = 2131296385;
+			
+			// aapt resource value: 0x7F090082
+			public const int masked = 2131296386;
 			
 			// aapt resource value: 0x7F090008
 			public const int MatchLayout = 2131296264;
 			
-			// aapt resource value: 0x7F09007A
-			public const int media_actions = 2131296378;
+			// aapt resource value: 0x7F090083
+			public const int media_actions = 2131296387;
 			
-			// aapt resource value: 0x7F09007B
-			public const int message = 2131296379;
+			// aapt resource value: 0x7F090084
+			public const int message = 2131296388;
 			
 			// aapt resource value: 0x7F090007
 			public const int META = 2131296263;
 			
-			// aapt resource value: 0x7F09007C
-			public const int middle = 2131296380;
-			
-			// aapt resource value: 0x7F09007D
-			public const int min = 2131296381;
-			
-			// aapt resource value: 0x7F09007E
-			public const int mini = 2131296382;
-			
-			// aapt resource value: 0x7F09007F
-			public const int month = 2131296383;
-			
-			// aapt resource value: 0x7F090080
-			public const int multiply = 2131296384;
-			
-			// aapt resource value: 0x7F090081
-			public const int navigation_header_container = 2131296385;
-			
-			// aapt resource value: 0x7F090082
-			public const int never = 2131296386;
-			
-			// aapt resource value: 0x7F090083
-			public const int none = 2131296387;
-			
-			// aapt resource value: 0x7F090084
-			public const int normal = 2131296388;
-			
 			// aapt resource value: 0x7F090085
-			public const int notification_background = 2131296389;
+			public const int middle = 2131296389;
 			
 			// aapt resource value: 0x7F090086
-			public const int notification_main_column = 2131296390;
+			public const int min = 2131296390;
 			
 			// aapt resource value: 0x7F090087
-			public const int notification_main_column_container = 2131296391;
+			public const int mini = 2131296391;
 			
 			// aapt resource value: 0x7F090088
-			public const int options1 = 2131296392;
+			public const int month = 2131296392;
 			
 			// aapt resource value: 0x7F090089
-			public const int options2 = 2131296393;
+			public const int multiply = 2131296393;
 			
 			// aapt resource value: 0x7F09008A
-			public const int options3 = 2131296394;
+			public const int navigation_header_container = 2131296394;
 			
 			// aapt resource value: 0x7F09008B
-			public const int optionspicker = 2131296395;
+			public const int never = 2131296395;
 			
 			// aapt resource value: 0x7F09008C
-			public const int outmost_container = 2131296396;
+			public const int none = 2131296396;
 			
 			// aapt resource value: 0x7F09008D
-			public const int parallax = 2131296397;
+			public const int normal = 2131296397;
 			
 			// aapt resource value: 0x7F09008E
-			public const int parentPanel = 2131296398;
+			public const int notification_background = 2131296398;
 			
 			// aapt resource value: 0x7F09008F
-			public const int parent_matrix = 2131296399;
+			public const int notification_main_column = 2131296399;
 			
 			// aapt resource value: 0x7F090090
-			public const int pin = 2131296400;
+			public const int notification_main_column_container = 2131296400;
 			
 			// aapt resource value: 0x7F090091
-			public const int progress_circular = 2131296401;
+			public const int options1 = 2131296401;
 			
 			// aapt resource value: 0x7F090092
-			public const int progress_horizontal = 2131296402;
+			public const int options2 = 2131296402;
 			
 			// aapt resource value: 0x7F090093
-			public const int radio = 2131296403;
+			public const int options3 = 2131296403;
 			
 			// aapt resource value: 0x7F090094
-			public const int right = 2131296404;
+			public const int optionspicker = 2131296404;
 			
 			// aapt resource value: 0x7F090095
-			public const int right_icon = 2131296405;
+			public const int outmost_container = 2131296405;
 			
 			// aapt resource value: 0x7F090096
-			public const int right_side = 2131296406;
+			public const int parallax = 2131296406;
 			
 			// aapt resource value: 0x7F090097
-			public const int rv_topbar = 2131296407;
+			public const int parentPanel = 2131296407;
 			
 			// aapt resource value: 0x7F090098
-			public const int save_image_matrix = 2131296408;
+			public const int parent_matrix = 2131296408;
 			
 			// aapt resource value: 0x7F090099
-			public const int save_non_transition_alpha = 2131296409;
+			public const int pin = 2131296409;
 			
 			// aapt resource value: 0x7F09009A
-			public const int save_scale_type = 2131296410;
+			public const int progress_circular = 2131296410;
+			
+			// aapt resource value: 0x7F09009B
+			public const int progress_horizontal = 2131296411;
+			
+			// aapt resource value: 0x7F09009C
+			public const int radio = 2131296412;
+			
+			// aapt resource value: 0x7F09009D
+			public const int right = 2131296413;
+			
+			// aapt resource value: 0x7F09009E
+			public const int right_icon = 2131296414;
+			
+			// aapt resource value: 0x7F09009F
+			public const int right_side = 2131296415;
+			
+			// aapt resource value: 0x7F0900A0
+			public const int rv_topbar = 2131296416;
+			
+			// aapt resource value: 0x7F0900A1
+			public const int save_image_matrix = 2131296417;
+			
+			// aapt resource value: 0x7F0900A2
+			public const int save_non_transition_alpha = 2131296418;
+			
+			// aapt resource value: 0x7F0900A3
+			public const int save_scale_type = 2131296419;
 			
 			// aapt resource value: 0x7F09000C
 			public const int Scale = 2131296268;
 			
-			// aapt resource value: 0x7F09009B
-			public const int screen = 2131296411;
-			
-			// aapt resource value: 0x7F09009C
-			public const int scroll = 2131296412;
-			
-			// aapt resource value: 0x7F0900A0
-			public const int scrollable = 2131296416;
-			
-			// aapt resource value: 0x7F09009D
-			public const int scrollIndicatorDown = 2131296413;
-			
-			// aapt resource value: 0x7F09009E
-			public const int scrollIndicatorUp = 2131296414;
-			
-			// aapt resource value: 0x7F09009F
-			public const int scrollView = 2131296415;
-			
-			// aapt resource value: 0x7F0900A1
-			public const int search_badge = 2131296417;
-			
-			// aapt resource value: 0x7F0900A2
-			public const int search_bar = 2131296418;
-			
-			// aapt resource value: 0x7F0900A3
-			public const int search_button = 2131296419;
-			
 			// aapt resource value: 0x7F0900A4
-			public const int search_close_btn = 2131296420;
+			public const int screen = 2131296420;
 			
 			// aapt resource value: 0x7F0900A5
-			public const int search_edit_frame = 2131296421;
-			
-			// aapt resource value: 0x7F0900A6
-			public const int search_go_btn = 2131296422;
-			
-			// aapt resource value: 0x7F0900A7
-			public const int search_mag_icon = 2131296423;
-			
-			// aapt resource value: 0x7F0900A8
-			public const int search_plate = 2131296424;
+			public const int scroll = 2131296421;
 			
 			// aapt resource value: 0x7F0900A9
-			public const int search_src_text = 2131296425;
+			public const int scrollable = 2131296425;
+			
+			// aapt resource value: 0x7F0900A6
+			public const int scrollIndicatorDown = 2131296422;
+			
+			// aapt resource value: 0x7F0900A7
+			public const int scrollIndicatorUp = 2131296423;
+			
+			// aapt resource value: 0x7F0900A8
+			public const int scrollView = 2131296424;
 			
 			// aapt resource value: 0x7F0900AA
-			public const int search_voice_btn = 2131296426;
+			public const int search_badge = 2131296426;
 			
 			// aapt resource value: 0x7F0900AB
-			public const int second = 2131296427;
+			public const int search_bar = 2131296427;
 			
 			// aapt resource value: 0x7F0900AC
-			public const int select_dialog_listview = 2131296428;
+			public const int search_button = 2131296428;
+			
+			// aapt resource value: 0x7F0900AD
+			public const int search_close_btn = 2131296429;
+			
+			// aapt resource value: 0x7F0900AE
+			public const int search_edit_frame = 2131296430;
+			
+			// aapt resource value: 0x7F0900AF
+			public const int search_go_btn = 2131296431;
+			
+			// aapt resource value: 0x7F0900B0
+			public const int search_mag_icon = 2131296432;
+			
+			// aapt resource value: 0x7F0900B1
+			public const int search_plate = 2131296433;
+			
+			// aapt resource value: 0x7F0900B2
+			public const int search_src_text = 2131296434;
+			
+			// aapt resource value: 0x7F0900B3
+			public const int search_voice_btn = 2131296435;
+			
+			// aapt resource value: 0x7F0900B4
+			public const int second = 2131296436;
+			
+			// aapt resource value: 0x7F0900B5
+			public const int select_dialog_listview = 2131296437;
 			
 			// aapt resource value: 0x7F090009
 			public const int SHIFT = 2131296265;
 			
-			// aapt resource value: 0x7F0900AD
-			public const int shortcut = 2131296429;
-			
-			// aapt resource value: 0x7F0900AE
-			public const int showCustom = 2131296430;
-			
-			// aapt resource value: 0x7F0900AF
-			public const int showHome = 2131296431;
-			
-			// aapt resource value: 0x7F0900B0
-			public const int showTitle = 2131296432;
-			
-			// aapt resource value: 0x7F0900B1
-			public const int smallLabel = 2131296433;
-			
-			// aapt resource value: 0x7F0900B2
-			public const int snackbar_action = 2131296434;
-			
-			// aapt resource value: 0x7F0900B3
-			public const int snackbar_text = 2131296435;
-			
-			// aapt resource value: 0x7F0900B4
-			public const int snap = 2131296436;
-			
-			// aapt resource value: 0x7F0900B5
-			public const int spacer = 2131296437;
-			
 			// aapt resource value: 0x7F0900B6
-			public const int split_action_bar = 2131296438;
+			public const int shortcut = 2131296438;
 			
 			// aapt resource value: 0x7F0900B7
-			public const int src_atop = 2131296439;
+			public const int showCustom = 2131296439;
 			
 			// aapt resource value: 0x7F0900B8
-			public const int src_in = 2131296440;
+			public const int showHome = 2131296440;
 			
 			// aapt resource value: 0x7F0900B9
-			public const int src_over = 2131296441;
+			public const int showTitle = 2131296441;
 			
 			// aapt resource value: 0x7F0900BA
-			public const int srl_classics_arrow = 2131296442;
+			public const int smallLabel = 2131296442;
 			
 			// aapt resource value: 0x7F0900BB
-			public const int srl_classics_center = 2131296443;
+			public const int snackbar_action = 2131296443;
 			
 			// aapt resource value: 0x7F0900BC
-			public const int srl_classics_progress = 2131296444;
+			public const int snackbar_text = 2131296444;
 			
 			// aapt resource value: 0x7F0900BD
-			public const int srl_classics_title = 2131296445;
+			public const int snap = 2131296445;
 			
 			// aapt resource value: 0x7F0900BE
-			public const int srl_classics_update = 2131296446;
+			public const int spacer = 2131296446;
 			
 			// aapt resource value: 0x7F0900BF
-			public const int start = 2131296447;
+			public const int split_action_bar = 2131296447;
 			
 			// aapt resource value: 0x7F0900C0
-			public const int status = 2131296448;
+			public const int src_atop = 2131296448;
 			
 			// aapt resource value: 0x7F0900C1
-			public const int status_bar_latest_event_content = 2131296449;
+			public const int src_in = 2131296449;
+			
+			// aapt resource value: 0x7F0900C2
+			public const int src_over = 2131296450;
+			
+			// aapt resource value: 0x7F0900C3
+			public const int srl_classics_arrow = 2131296451;
+			
+			// aapt resource value: 0x7F0900C4
+			public const int srl_classics_center = 2131296452;
+			
+			// aapt resource value: 0x7F0900C5
+			public const int srl_classics_progress = 2131296453;
+			
+			// aapt resource value: 0x7F0900C6
+			public const int srl_classics_title = 2131296454;
+			
+			// aapt resource value: 0x7F0900C7
+			public const int srl_classics_update = 2131296455;
+			
+			// aapt resource value: 0x7F0900C8
+			public const int start = 2131296456;
+			
+			// aapt resource value: 0x7F0900C9
+			public const int status = 2131296457;
+			
+			// aapt resource value: 0x7F0900CA
+			public const int status_bar_latest_event_content = 2131296458;
 			
 			// aapt resource value: 0x7F09000A
 			public const int STROKE = 2131296266;
 			
-			// aapt resource value: 0x7F0900C2
-			public const int submenuarrow = 2131296450;
+			// aapt resource value: 0x7F0900CB
+			public const int submenuarrow = 2131296459;
 			
-			// aapt resource value: 0x7F0900C3
-			public const int submit_area = 2131296451;
+			// aapt resource value: 0x7F0900CC
+			public const int submit_area = 2131296460;
 			
-			// aapt resource value: 0x7F0900C4
-			public const int subtitle = 2131296452;
+			// aapt resource value: 0x7F0900CD
+			public const int subtitle = 2131296461;
 			
 			// aapt resource value: 0x7F09000B
 			public const int SYM = 2131296267;
 			
-			// aapt resource value: 0x7F0900C5
-			public const int tabMode = 2131296453;
-			
-			// aapt resource value: 0x7F0900C6
-			public const int text = 2131296454;
-			
-			// aapt resource value: 0x7F0900C7
-			public const int text2 = 2131296455;
-			
-			// aapt resource value: 0x7F0900CB
-			public const int textinput_counter = 2131296459;
-			
-			// aapt resource value: 0x7F0900CC
-			public const int textinput_error = 2131296460;
-			
-			// aapt resource value: 0x7F0900C8
-			public const int textSpacerNoButtons = 2131296456;
-			
-			// aapt resource value: 0x7F0900C9
-			public const int textSpacerNoTitle = 2131296457;
-			
-			// aapt resource value: 0x7F0900CA
-			public const int text_input_password_toggle = 2131296458;
-			
-			// aapt resource value: 0x7F0900CD
-			public const int time = 2131296461;
-			
 			// aapt resource value: 0x7F0900CE
-			public const int timepicker = 2131296462;
+			public const int tabMode = 2131296462;
 			
 			// aapt resource value: 0x7F0900CF
-			public const int title = 2131296463;
+			public const int text = 2131296463;
 			
 			// aapt resource value: 0x7F0900D0
-			public const int titleDividerNoCustom = 2131296464;
-			
-			// aapt resource value: 0x7F0900D1
-			public const int title_template = 2131296465;
-			
-			// aapt resource value: 0x7F0900D2
-			public const int top = 2131296466;
-			
-			// aapt resource value: 0x7F0900D3
-			public const int topPanel = 2131296467;
+			public const int text2 = 2131296464;
 			
 			// aapt resource value: 0x7F0900D4
-			public const int touch_outside = 2131296468;
+			public const int textinput_counter = 2131296468;
 			
 			// aapt resource value: 0x7F0900D5
-			public const int transition_current_scene = 2131296469;
+			public const int textinput_error = 2131296469;
+			
+			// aapt resource value: 0x7F0900D1
+			public const int textSpacerNoButtons = 2131296465;
+			
+			// aapt resource value: 0x7F0900D2
+			public const int textSpacerNoTitle = 2131296466;
+			
+			// aapt resource value: 0x7F0900D3
+			public const int text_input_password_toggle = 2131296467;
 			
 			// aapt resource value: 0x7F0900D6
-			public const int transition_layout_save = 2131296470;
+			public const int time = 2131296470;
 			
 			// aapt resource value: 0x7F0900D7
-			public const int transition_position = 2131296471;
+			public const int timepicker = 2131296471;
 			
 			// aapt resource value: 0x7F0900D8
-			public const int transition_scene_layoutid_cache = 2131296472;
+			public const int title = 2131296472;
 			
 			// aapt resource value: 0x7F0900D9
-			public const int transition_transform = 2131296473;
+			public const int titleDividerNoCustom = 2131296473;
+			
+			// aapt resource value: 0x7F0900DA
+			public const int title_template = 2131296474;
+			
+			// aapt resource value: 0x7F0900DB
+			public const int top = 2131296475;
+			
+			// aapt resource value: 0x7F0900DC
+			public const int topPanel = 2131296476;
+			
+			// aapt resource value: 0x7F0900DD
+			public const int touch_outside = 2131296477;
+			
+			// aapt resource value: 0x7F0900DE
+			public const int transition_current_scene = 2131296478;
+			
+			// aapt resource value: 0x7F0900DF
+			public const int transition_layout_save = 2131296479;
+			
+			// aapt resource value: 0x7F0900E0
+			public const int transition_position = 2131296480;
+			
+			// aapt resource value: 0x7F0900E1
+			public const int transition_scene_layoutid_cache = 2131296481;
+			
+			// aapt resource value: 0x7F0900E2
+			public const int transition_transform = 2131296482;
 			
 			// aapt resource value: 0x7F09000D
 			public const int Translate = 2131296269;
 			
-			// aapt resource value: 0x7F0900DA
-			public const int tvTitle = 2131296474;
-			
-			// aapt resource value: 0x7F0900DB
-			public const int tv_zxing_back = 2131296475;
-			
-			// aapt resource value: 0x7F0900DC
-			public const int tv_zxing_flash = 2131296476;
-			
-			// aapt resource value: 0x7F0900DD
-			public const int tv_zxing_scan = 2131296477;
-			
-			// aapt resource value: 0x7F0900DE
-			public const int uniform = 2131296478;
-			
-			// aapt resource value: 0x7F0900DF
-			public const int up = 2131296479;
-			
-			// aapt resource value: 0x7F0900E0
-			public const int useLogo = 2131296480;
-			
-			// aapt resource value: 0x7F0900E1
-			public const int view_offset_helper = 2131296481;
-			
-			// aapt resource value: 0x7F0900E2
-			public const int visible = 2131296482;
-			
 			// aapt resource value: 0x7F0900E3
-			public const int withText = 2131296483;
+			public const int tvTitle = 2131296483;
 			
 			// aapt resource value: 0x7F0900E4
-			public const int wrap_content = 2131296484;
+			public const int tv_zxing_back = 2131296484;
 			
 			// aapt resource value: 0x7F0900E5
-			public const int year = 2131296485;
+			public const int tv_zxing_flash = 2131296485;
+			
+			// aapt resource value: 0x7F0900E6
+			public const int tv_zxing_scan = 2131296486;
+			
+			// aapt resource value: 0x7F0900E7
+			public const int uniform = 2131296487;
+			
+			// aapt resource value: 0x7F0900E8
+			public const int up = 2131296488;
+			
+			// aapt resource value: 0x7F0900E9
+			public const int useLogo = 2131296489;
+			
+			// aapt resource value: 0x7F0900EA
+			public const int view_offset_helper = 2131296490;
+			
+			// aapt resource value: 0x7F0900EB
+			public const int visible = 2131296491;
+			
+			// aapt resource value: 0x7F0900EC
+			public const int withText = 2131296492;
+			
+			// aapt resource value: 0x7F0900ED
+			public const int wrap_content = 2131296493;
+			
+			// aapt resource value: 0x7F0900EE
+			public const int year = 2131296494;
 			
 			static Id()
 			{
@@ -3962,148 +3992,154 @@
 			public const int biometric_prompt_dialog_content = 2131427355;
 			
 			// aapt resource value: 0x7F0B001C
-			public const int design_bottom_navigation_item = 2131427356;
+			public const int cc_activity_widget_countrycode = 2131427356;
 			
 			// aapt resource value: 0x7F0B001D
-			public const int design_bottom_sheet_dialog = 2131427357;
+			public const int cc_country_list_item = 2131427357;
 			
 			// aapt resource value: 0x7F0B001E
-			public const int design_layout_snackbar = 2131427358;
+			public const int design_bottom_navigation_item = 2131427358;
 			
 			// aapt resource value: 0x7F0B001F
-			public const int design_layout_snackbar_include = 2131427359;
+			public const int design_bottom_sheet_dialog = 2131427359;
 			
 			// aapt resource value: 0x7F0B0020
-			public const int design_layout_tab_icon = 2131427360;
+			public const int design_layout_snackbar = 2131427360;
 			
 			// aapt resource value: 0x7F0B0021
-			public const int design_layout_tab_text = 2131427361;
+			public const int design_layout_snackbar_include = 2131427361;
 			
 			// aapt resource value: 0x7F0B0022
-			public const int design_menu_item_action_area = 2131427362;
+			public const int design_layout_tab_icon = 2131427362;
 			
 			// aapt resource value: 0x7F0B0023
-			public const int design_navigation_item = 2131427363;
+			public const int design_layout_tab_text = 2131427363;
 			
 			// aapt resource value: 0x7F0B0024
-			public const int design_navigation_item_header = 2131427364;
+			public const int design_menu_item_action_area = 2131427364;
 			
 			// aapt resource value: 0x7F0B0025
-			public const int design_navigation_item_separator = 2131427365;
+			public const int design_navigation_item = 2131427365;
 			
 			// aapt resource value: 0x7F0B0026
-			public const int design_navigation_item_subheader = 2131427366;
+			public const int design_navigation_item_header = 2131427366;
 			
 			// aapt resource value: 0x7F0B0027
-			public const int design_navigation_menu = 2131427367;
+			public const int design_navigation_item_separator = 2131427367;
 			
 			// aapt resource value: 0x7F0B0028
-			public const int design_navigation_menu_item = 2131427368;
+			public const int design_navigation_item_subheader = 2131427368;
 			
 			// aapt resource value: 0x7F0B0029
-			public const int design_text_input_password_icon = 2131427369;
+			public const int design_navigation_menu = 2131427369;
 			
 			// aapt resource value: 0x7F0B002A
-			public const int hdl_gallery_banner_view_layout = 2131427370;
+			public const int design_navigation_menu_item = 2131427370;
 			
 			// aapt resource value: 0x7F0B002B
-			public const int hdl_widget_activity_crop_image = 2131427371;
+			public const int design_text_input_password_icon = 2131427371;
 			
 			// aapt resource value: 0x7F0B002C
-			public const int hdl_widget_activity_geofence_round = 2131427372;
+			public const int hdl_gallery_banner_view_layout = 2131427372;
 			
 			// aapt resource value: 0x7F0B002D
-			public const int hdl_widget_air_button = 2131427373;
+			public const int hdl_widget_activity_crop_image = 2131427373;
 			
 			// aapt resource value: 0x7F0B002E
-			public const int hdl_widget_include_pickerview_topbar = 2131427374;
+			public const int hdl_widget_activity_geofence_round = 2131427374;
 			
 			// aapt resource value: 0x7F0B002F
-			public const int hdl_widget_layout_basepickerview = 2131427375;
+			public const int hdl_widget_air_button = 2131427375;
 			
 			// aapt resource value: 0x7F0B0030
-			public const int hdl_widget_pickerview = 2131427376;
+			public const int hdl_widget_include_pickerview_topbar = 2131427376;
 			
 			// aapt resource value: 0x7F0B0031
-			public const int hdl_widget_pickerview_options = 2131427377;
+			public const int hdl_widget_layout_basepickerview = 2131427377;
 			
 			// aapt resource value: 0x7F0B0032
-			public const int hdl_widget_pickerview_time = 2131427378;
+			public const int hdl_widget_pickerview = 2131427378;
 			
 			// aapt resource value: 0x7F0B0033
-			public const int notification_action = 2131427379;
+			public const int hdl_widget_pickerview_options = 2131427379;
 			
 			// aapt resource value: 0x7F0B0034
-			public const int notification_action_tombstone = 2131427380;
+			public const int hdl_widget_pickerview_time = 2131427380;
 			
 			// aapt resource value: 0x7F0B0035
-			public const int notification_media_action = 2131427381;
+			public const int notification_action = 2131427381;
 			
 			// aapt resource value: 0x7F0B0036
-			public const int notification_media_cancel_action = 2131427382;
+			public const int notification_action_tombstone = 2131427382;
 			
 			// aapt resource value: 0x7F0B0037
-			public const int notification_template_big_media = 2131427383;
+			public const int notification_media_action = 2131427383;
 			
 			// aapt resource value: 0x7F0B0038
-			public const int notification_template_big_media_custom = 2131427384;
+			public const int notification_media_cancel_action = 2131427384;
 			
 			// aapt resource value: 0x7F0B0039
-			public const int notification_template_big_media_narrow = 2131427385;
+			public const int notification_template_big_media = 2131427385;
 			
 			// aapt resource value: 0x7F0B003A
-			public const int notification_template_big_media_narrow_custom = 2131427386;
+			public const int notification_template_big_media_custom = 2131427386;
 			
 			// aapt resource value: 0x7F0B003B
-			public const int notification_template_custom_big = 2131427387;
+			public const int notification_template_big_media_narrow = 2131427387;
 			
 			// aapt resource value: 0x7F0B003C
-			public const int notification_template_icon_group = 2131427388;
+			public const int notification_template_big_media_narrow_custom = 2131427388;
 			
 			// aapt resource value: 0x7F0B003D
-			public const int notification_template_lines_media = 2131427389;
+			public const int notification_template_custom_big = 2131427389;
 			
 			// aapt resource value: 0x7F0B003E
-			public const int notification_template_media = 2131427390;
+			public const int notification_template_icon_group = 2131427390;
 			
 			// aapt resource value: 0x7F0B003F
-			public const int notification_template_media_custom = 2131427391;
+			public const int notification_template_lines_media = 2131427391;
 			
 			// aapt resource value: 0x7F0B0040
-			public const int notification_template_part_chronometer = 2131427392;
+			public const int notification_template_media = 2131427392;
 			
 			// aapt resource value: 0x7F0B0041
-			public const int notification_template_part_time = 2131427393;
+			public const int notification_template_media_custom = 2131427393;
 			
 			// aapt resource value: 0x7F0B0042
-			public const int select_dialog_item_material = 2131427394;
+			public const int notification_template_part_chronometer = 2131427394;
 			
 			// aapt resource value: 0x7F0B0043
-			public const int select_dialog_multichoice_material = 2131427395;
+			public const int notification_template_part_time = 2131427395;
 			
 			// aapt resource value: 0x7F0B0044
-			public const int select_dialog_singlechoice_material = 2131427396;
+			public const int select_dialog_item_material = 2131427396;
 			
 			// aapt resource value: 0x7F0B0045
-			public const int srl_classics_footer = 2131427397;
+			public const int select_dialog_multichoice_material = 2131427397;
 			
 			// aapt resource value: 0x7F0B0046
-			public const int srl_classics_header = 2131427398;
+			public const int select_dialog_singlechoice_material = 2131427398;
 			
 			// aapt resource value: 0x7F0B0047
-			public const int support_simple_spinner_dropdown_item = 2131427399;
+			public const int srl_classics_footer = 2131427399;
 			
 			// aapt resource value: 0x7F0B0048
-			public const int tooltip = 2131427400;
-			
-			// aapt resource value: 0x7F0B004A
-			public const int zxingscanneractivitylayout = 2131427402;
-			
-			// aapt resource value: 0x7F0B004B
-			public const int zxingscannerfragmentlayout = 2131427403;
+			public const int srl_classics_header = 2131427400;
 			
 			// aapt resource value: 0x7F0B0049
-			public const int zxing_layout = 2131427401;
+			public const int support_simple_spinner_dropdown_item = 2131427401;
+			
+			// aapt resource value: 0x7F0B004A
+			public const int tooltip = 2131427402;
+			
+			// aapt resource value: 0x7F0B004C
+			public const int zxingscanneractivitylayout = 2131427404;
+			
+			// aapt resource value: 0x7F0B004D
+			public const int zxingscannerfragmentlayout = 2131427405;
+			
+			// aapt resource value: 0x7F0B004B
+			public const int zxing_layout = 2131427403;
 			
 			static Layout()
 			{
@@ -4262,136 +4298,145 @@
 			public const int bottom_sheet_behavior = 2131623970;
 			
 			// aapt resource value: 0x7F0E0023
-			public const int character_counter_pattern = 2131623971;
+			public const int cc_back = 2131623971;
 			
 			// aapt resource value: 0x7F0E0024
-			public const int gd_activity_title = 2131623972;
+			public const int cc_search = 2131623972;
 			
 			// aapt resource value: 0x7F0E0025
-			public const int gd_cancel = 2131623973;
+			public const int cc_title = 2131623973;
 			
 			// aapt resource value: 0x7F0E0026
-			public const int gd_myhome = 2131623974;
+			public const int character_counter_pattern = 2131623974;
 			
 			// aapt resource value: 0x7F0E0027
-			public const int gd_notifyMsg = 2131623975;
+			public const int gd_activity_title = 2131623975;
 			
 			// aapt resource value: 0x7F0E0028
-			public const int gd_notifyTitle = 2131623976;
+			public const int gd_cancel = 2131623976;
 			
 			// aapt resource value: 0x7F0E0029
-			public const int gd_save = 2131623977;
+			public const int gd_myhome = 2131623977;
 			
 			// aapt resource value: 0x7F0E002A
-			public const int gd_search_tip = 2131623978;
+			public const int gd_notifyMsg = 2131623978;
 			
 			// aapt resource value: 0x7F0E002B
-			public const int gd_select_distance = 2131623979;
+			public const int gd_notifyTitle = 2131623979;
 			
 			// aapt resource value: 0x7F0E002C
-			public const int gd_setting = 2131623980;
+			public const int gd_save = 2131623980;
 			
 			// aapt resource value: 0x7F0E002D
-			public const int not_recognized_fingerprint_hint = 2131623981;
+			public const int gd_search_tip = 2131623981;
 			
 			// aapt resource value: 0x7F0E002E
-			public const int password_toggle_content_description = 2131623982;
+			public const int gd_select_distance = 2131623982;
 			
 			// aapt resource value: 0x7F0E002F
-			public const int path_password_eye = 2131623983;
+			public const int gd_setting = 2131623983;
 			
 			// aapt resource value: 0x7F0E0030
-			public const int path_password_eye_mask_strike_through = 2131623984;
+			public const int not_recognized_fingerprint_hint = 2131623984;
 			
 			// aapt resource value: 0x7F0E0031
-			public const int path_password_eye_mask_visible = 2131623985;
+			public const int password_toggle_content_description = 2131623985;
 			
 			// aapt resource value: 0x7F0E0032
-			public const int path_password_strike_through = 2131623986;
+			public const int path_password_eye = 2131623986;
 			
 			// aapt resource value: 0x7F0E0033
-			public const int pickerview_cancel = 2131623987;
+			public const int path_password_eye_mask_strike_through = 2131623987;
 			
 			// aapt resource value: 0x7F0E0034
-			public const int pickerview_day = 2131623988;
+			public const int path_password_eye_mask_visible = 2131623988;
 			
 			// aapt resource value: 0x7F0E0035
-			public const int pickerview_hours = 2131623989;
+			public const int path_password_strike_through = 2131623989;
 			
 			// aapt resource value: 0x7F0E0036
-			public const int pickerview_minutes = 2131623990;
+			public const int pickerview_cancel = 2131623990;
 			
 			// aapt resource value: 0x7F0E0037
-			public const int pickerview_month = 2131623991;
+			public const int pickerview_day = 2131623991;
 			
 			// aapt resource value: 0x7F0E0038
-			public const int pickerview_seconds = 2131623992;
+			public const int pickerview_hours = 2131623992;
 			
 			// aapt resource value: 0x7F0E0039
-			public const int pickerview_submit = 2131623993;
+			public const int pickerview_minutes = 2131623993;
 			
 			// aapt resource value: 0x7F0E003A
-			public const int pickerview_year = 2131623994;
+			public const int pickerview_month = 2131623994;
 			
 			// aapt resource value: 0x7F0E003B
-			public const int search_menu_title = 2131623995;
+			public const int pickerview_seconds = 2131623995;
 			
 			// aapt resource value: 0x7F0E003C
-			public const int srl_component_falsify = 2131623996;
+			public const int pickerview_submit = 2131623996;
 			
 			// aapt resource value: 0x7F0E003D
-			public const int srl_content_empty = 2131623997;
+			public const int pickerview_year = 2131623997;
 			
 			// aapt resource value: 0x7F0E003E
-			public const int srl_footer_failed = 2131623998;
+			public const int search_menu_title = 2131623998;
 			
 			// aapt resource value: 0x7F0E003F
-			public const int srl_footer_finish = 2131623999;
+			public const int srl_component_falsify = 2131623999;
 			
 			// aapt resource value: 0x7F0E0040
-			public const int srl_footer_loading = 2131624000;
+			public const int srl_content_empty = 2131624000;
 			
 			// aapt resource value: 0x7F0E0041
-			public const int srl_footer_nothing = 2131624001;
+			public const int srl_footer_failed = 2131624001;
 			
 			// aapt resource value: 0x7F0E0042
-			public const int srl_footer_pulling = 2131624002;
+			public const int srl_footer_finish = 2131624002;
 			
 			// aapt resource value: 0x7F0E0043
-			public const int srl_footer_refreshing = 2131624003;
+			public const int srl_footer_loading = 2131624003;
 			
 			// aapt resource value: 0x7F0E0044
-			public const int srl_footer_release = 2131624004;
+			public const int srl_footer_nothing = 2131624004;
 			
 			// aapt resource value: 0x7F0E0045
-			public const int srl_header_failed = 2131624005;
+			public const int srl_footer_pulling = 2131624005;
 			
 			// aapt resource value: 0x7F0E0046
-			public const int srl_header_finish = 2131624006;
+			public const int srl_footer_refreshing = 2131624006;
 			
 			// aapt resource value: 0x7F0E0047
-			public const int srl_header_loading = 2131624007;
+			public const int srl_footer_release = 2131624007;
 			
 			// aapt resource value: 0x7F0E0048
-			public const int srl_header_pulling = 2131624008;
+			public const int srl_header_failed = 2131624008;
 			
 			// aapt resource value: 0x7F0E0049
-			public const int srl_header_refreshing = 2131624009;
+			public const int srl_header_finish = 2131624009;
 			
 			// aapt resource value: 0x7F0E004A
-			public const int srl_header_release = 2131624010;
+			public const int srl_header_loading = 2131624010;
 			
 			// aapt resource value: 0x7F0E004B
-			public const int srl_header_secondary = 2131624011;
+			public const int srl_header_pulling = 2131624011;
 			
 			// aapt resource value: 0x7F0E004C
-			public const int srl_header_update = 2131624012;
+			public const int srl_header_refreshing = 2131624012;
 			
 			// aapt resource value: 0x7F0E004D
-			public const int status_bar_notification_info_overflow = 2131624013;
+			public const int srl_header_release = 2131624013;
 			
 			// aapt resource value: 0x7F0E004E
-			public const int touch_fingerprint_sensor_hint = 2131624014;
+			public const int srl_header_secondary = 2131624014;
+			
+			// aapt resource value: 0x7F0E004F
+			public const int srl_header_update = 2131624015;
+			
+			// aapt resource value: 0x7F0E0050
+			public const int status_bar_notification_info_overflow = 2131624016;
+			
+			// aapt resource value: 0x7F0E0051
+			public const int touch_fingerprint_sensor_hint = 2131624017;
 			
 			static String()
 			{
@@ -4917,16 +4962,19 @@
 			public const int BottomSheetDialogAnimation = 2131689641;
 			
 			// aapt resource value: 0x7F0F018D
-			public const int custom_dialog2 = 2131689869;
+			public const int cc_line_long = 2131689869;
+			
+			// aapt resource value: 0x7F0F018E
+			public const int custom_dialog2 = 2131689870;
 			
 			// aapt resource value: 0x7F0F00AA
 			public const int MyTheme = 2131689642;
 			
-			// aapt resource value: 0x7F0F018E
-			public const int picker_view_scale_anim = 2131689870;
-			
 			// aapt resource value: 0x7F0F018F
-			public const int picker_view_slide_anim = 2131689871;
+			public const int picker_view_scale_anim = 2131689871;
+			
+			// aapt resource value: 0x7F0F0190
+			public const int picker_view_slide_anim = 2131689872;
 			
 			// aapt resource value: 0x7F0F00AB
 			public const int Platform_AppCompat = 2131689643;
diff --git a/HDL-ON_iOS/AppDelegate.cs b/HDL-ON_iOS/AppDelegate.cs
index ac81ce3..9335648 100644
--- a/HDL-ON_iOS/AppDelegate.cs
+++ b/HDL-ON_iOS/AppDelegate.cs
@@ -23,7 +23,7 @@
         //    UserConfig.Instance.IsAppStoreVersionNewer = Harpy.Harpy.SharedInstance.TestIsAppStoreVersionNewer;
         //    UserConfig.Instance.StoreVersion = Harpy.Harpy.SharedInstance.CurrentAppStoreVersion;
         //    UserConfig.Instance.SaveUserConfig();
-        //    if (Shared.SimpleControl.MainPage.LoginUser.AccountString == @"464027401@qq.com")
+        //    if (Shared.SimpleControl. UserInfo.Current.AccountString == @"464027401@qq.com")
         //    {
         //        return $"TestIsAppStoreVersionNewer : {UserConfig.Instance.IsAppStoreVersionNewer};;  CurrentAppStoreVersion : {UserConfig.Instance.StoreVersion}";
         //    }
@@ -100,15 +100,15 @@
                 string userPhoneName = UIDevice.CurrentDevice.Name;
 
                 OnAppConfig.Instance.PushDeviceToken = DeviceToken;
-                //UserConfig.Instance.phoneName = userPhoneName;
-                //UserConfig.Instance.SaveUserConfig();
+                OnAppConfig.Instance.PhoneName = userPhoneName;
+                OnAppConfig.Instance.SaveUserConfig();
             }
             if (OnAppConfig.Instance.PushDeviceToken != DeviceToken)
             {
                 string userPhoneName = UIDevice.CurrentDevice.Name;
                 OnAppConfig.Instance.PushDeviceToken = DeviceToken;
-                //UserConfig.Instance.phoneName = userPhoneName;
-                //UserConfig.Instance.SaveUserConfig();
+                OnAppConfig.Instance.PhoneName = userPhoneName;
+                OnAppConfig.Instance.SaveUserConfig();
             }
         }
 
@@ -194,13 +194,15 @@
             //NSString* nsCount = [[NSLocale currentLocale] objectForKey: NSLocaleCountryCode];
             application.StatusBarStyle = UIStatusBarStyle.DarkContent;
 
-            string nsCount = NSLocale.CurrentLocale.CountryCode;
+            //string nsCount = NSLocale.CurrentLocale.CountryCode;
 
-            if (MainPage.LoginUser != null && nsCount != MainPage.LoginUser.areaCode.ToString())
-            {
-                int.TryParse(nsCount,out MainPage.LoginUser.areaCode);
-                OnAppConfig.Instance.SaveUserConfig();
-            }
+            //if ( UserInfo.Current != null && nsCount !=  UserInfo.Current.areaCode.ToString())
+            //{
+            //    //int.TryParse(nsCount,out  UserInfo.Current.areaCode);
+            //    //2020-11-18
+            //     UserInfo.Current.areaCode = nsCount;
+            //    OnAppConfig.Instance.SaveUserConfig();
+            //}
             application.IdleTimerDisabled = true;
             application.RegisterForRemoteNotificationTypes(UIRemoteNotificationType.Alert | UIRemoteNotificationType.Badge | UIRemoteNotificationType.Sound);
 
diff --git a/HDL-ON_iOS/HDL-ON_iOS.csproj b/HDL-ON_iOS/HDL-ON_iOS.csproj
index 6d07110..fe64565 100644
--- a/HDL-ON_iOS/HDL-ON_iOS.csproj
+++ b/HDL-ON_iOS/HDL-ON_iOS.csproj
@@ -51,6 +51,7 @@
         <MtouchDebug>true</MtouchDebug>
         <MtouchExtraArgs>-gcc_flags="-dead_strip -ObjC";-w</MtouchExtraArgs>
         <MtouchI18n>cjk</MtouchI18n>
+        <MtouchLink>SdkOnly</MtouchLink>
     </PropertyGroup>
     <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|iPhone' ">
         <DebugType>none</DebugType>
@@ -62,6 +63,7 @@
         <MtouchArch>ARM64</MtouchArch>
         <CodesignKey>iPhone Distribution: HDL Automation Co., Ltd (BVTA78PRYA)</CodesignKey>
         <CodesignProvision>dis-onpro-080401</CodesignProvision>
+        <MtouchLink>SdkOnly</MtouchLink>
     </PropertyGroup>
     <ItemGroup>
         <Reference Include="System" />
@@ -82,6 +84,9 @@
         <Reference Include="MJRefresh_Xamarin">
           <HintPath>..\DLL\IOS\MJRefresh_Xamarin.dll</HintPath>
         </Reference>
+        <Reference Include="Shared.IOS.JLCountryCode">
+          <HintPath>..\DLL\IOS\Shared.IOS.JLCountryCode.dll</HintPath>
+        </Reference>
     </ItemGroup>
     <ItemGroup>
       <PackageReference Include="Xamarin.Essentials" Version="1.1.0" />
@@ -89,16 +94,19 @@
         <Version>12.0.2</Version>
       </PackageReference>
       <PackageReference Include="MQTTnet">
-        <Version>3.0.8</Version>
+        <Version>3.0.13</Version>
       </PackageReference>
       <PackageReference Include="Microsoft.AppCenter.Analytics">
-        <Version>3.1.0</Version>
+        <Version>4.0.0</Version>
       </PackageReference>
       <PackageReference Include="Microsoft.AppCenter.Crashes">
-        <Version>3.1.0</Version>
+        <Version>4.0.0</Version>
       </PackageReference>
       <PackageReference Include="ZXing.Net.Mobile">
         <Version>2.4.1</Version>
+      </PackageReference>
+      <PackageReference Include="RestSharp">
+        <Version>106.11.7</Version>
       </PackageReference>
     </ItemGroup>
     <ItemGroup>
@@ -173,6 +181,7 @@
         <Folder Include="Resources\Phone\PersonalCenter\ResetPassword\" />
         <Folder Include="Resources\Phone\Intelligence\Gallery\" />
         <Folder Include="Resources\Phone\FunctionIcon\DeviceIcon\" />
+        <Folder Include="Other\" />
     </ItemGroup>
     <ItemGroup>
         <InterfaceDefinition Include="LaunchScreen.storyboard" />
@@ -193,6 +202,7 @@
         <Compile Include="Reachability.cs" />
         <Compile Include="Scan.cs" />
         <Compile Include="ZXingOverlayView.cs" />
+        <Compile Include="Other\JLCountrycode.cs" />
     </ItemGroup>
     <ItemGroup>
       <BundleResource Include="Resources\Phone\LoginIcon\ShowPasswordIcon.png" />
@@ -547,6 +557,22 @@
       <BundleResource Include="Resources\Phone\OnIcon.png" />
       <BundleResource Include="Resources\Phone\TipNot.png" />
       <BundleResource Include="Resources\Phone\FunctionIcon\DeviceIcon\VoicePanelIcon.png" />
+      <BundleResource Include="Resources\Phone\Public\Dialog\DialogTipTitleIcon_3.png" />
+      <BundleResource Include="Resources\Phone\Public\Dialog\DialogTipTitleIcon_2.png" />
+      <BundleResource Include="Resources\Phone\Public\Dialog\DialogTipTitleIcon_1.png" />
+      <BundleResource Include="Resources\Phone\LoginIcon\Server.png" />
+      <BundleResource Include="Resources\Phone\PersonalCenter\ServerInfo.png" />
+      <BundleResource Include="Resources\Phone\PersonalCenter\Support\Function.png" />
+      <BundleResource Include="Resources\Phone\PersonalCenter\Support\Search.png" />
+      <BundleResource Include="Resources\Phone\PersonalCenter\Support\Menu.png" />
+      <BundleResource Include="Resources\Phone\PersonalCenter\Support\Help.png" />
+      <BundleResource Include="Resources\Phone\PersonalCenter\Support\Telephone.png" />
+      <BundleResource Include="Resources\Phone\PersonalCenter\Support\SendMessage.png" />
+      <BundleResource Include="Resources\Phone\PersonalCenter\Support\Scene.png" />
+      <BundleResource Include="Resources\Phone\PersonalCenter\Support\Close.png" />
+      <BundleResource Include="Resources\Phone\Public\Search.png" />
+      <BundleResource Include="Resources\Phone\PersonalCenter\Head.png" />
+      <BundleResource Include="Resources\Phone\PersonalCenter\Transfer.png" />
     </ItemGroup>
     <ItemGroup>
       <ITunesArtwork Include="iTunesArtwork" />
diff --git a/HDL-ON_iOS/Info.plist b/HDL-ON_iOS/Info.plist
index 8967a81..c76ed24 100755
--- a/HDL-ON_iOS/Info.plist
+++ b/HDL-ON_iOS/Info.plist
@@ -6,6 +6,26 @@
 	<array>
 		<dict>
 			<key>CFBundleURLName</key>
+			<string>weixin</string>
+		</dict>
+		<dict>
+			<key>CFBundleURLName</key>
+			<string>AispeechMobile</string>
+		</dict>
+		<dict>
+			<key>CFBundleURLName</key>
+			<string>xiaoduapp</string>
+		</dict>
+		<dict>
+			<key>CFBundleURLSchemes</key>
+			<array>
+				<string>hdlonpro</string>
+			</array>
+			<key>CFBundleTypeRole</key>
+			<string>Editor</string>
+		</dict>
+		<dict>
+			<key>CFBundleURLName</key>
 			<string>qqmusic</string>
 		</dict>
 	</array>
@@ -87,7 +107,13 @@
 	<string>鑾峰彇澶╂皵棰勬姤</string>
 	<key>LSApplicationQueriesSchemes</key>
 	<array>
+		<string>weixinULAPI</string>
+		<string>weixin</string>
+		<string>xiaoduapp</string>
+		<string>AispeechMobile</string>
 		<string>qqmusic</string>
 	</array>
+	<key>CFBundleDevelopmentRegion</key>
+	<string>zh_CN</string>
 </dict>
 </plist>
diff --git a/HDL-ON_iOS/Other/JLCountrycode.cs b/HDL-ON_iOS/Other/JLCountrycode.cs
new file mode 100644
index 0000000..f6a2451
--- /dev/null
+++ b/HDL-ON_iOS/Other/JLCountrycode.cs
@@ -0,0 +1,44 @@
+锘縰sing System;
+using Shared.IOS.JLCountryCode;
+
+namespace JLCountrycode
+{
+    public class CountryCodeView
+    {
+        /// <summary>
+        /// 
+        /// </summary>
+        private static CountryCodeView m_Current = null;
+        /// <summary>
+        /// 
+        /// </summary>
+        public static CountryCodeView Current
+        {
+            get
+            {
+                if (m_Current == null)
+                {
+                    m_Current = new CountryCodeView();
+                }
+                return m_Current;
+            }
+        }
+
+        /// <summary>
+        /// 鍥藉鍖哄彿閫夋嫨
+        /// </summary>
+        /// <param name="action"></param>
+        public void Show(Action<string, string> action)
+        {
+            JLCountryCodeController mJLCountryCodeController = new JLCountryCodeController();
+
+            mJLCountryCodeController.SelectCountryCodeBlock += (countryName, code) =>
+            {
+                action?.Invoke(countryName, code);
+            };
+
+            Shared.Application.currentVC.NavigationController.PushViewController(mJLCountryCodeController, true);
+
+        }
+    }
+}
\ No newline at end of file
diff --git a/HDL-ON_iOS/Resources/Language.ini b/HDL-ON_iOS/Resources/Language.ini
index a729c9c..30d97ad 100644
--- a/HDL-ON_iOS/Resources/Language.ini
+++ b/HDL-ON_iOS/Resources/Language.ini
@@ -13,6 +13,12 @@
 14=Register
 42=Network anomaly
 
+10001=Failed to request the server, please try again later!
+10002=System maintenance, please try again later!
+10003=Login failed, please add a home first!
+10004=Account already exists
+
+
 [Chinese]
 1=鐧诲綍
 2=鎵嬫満鍙风櫥褰�
@@ -301,8 +307,8 @@
 285=缁戝畾鎵嬫満鍙�
 286=缁戝畾鎵嬫満鎴愬姛
 287=缁戝畾鎵嬫満澶辫触
-288=鎵嬫満鍙蜂慨鏀�
-289=瑙g粦鎵嬫満鍙�
+288=淇敼缁戝畾鎵嬫満
+289=瑙i櫎鎵嬫満缁戝畾
 290=璇诲彇鍘嗗彶鏁版嵁澶辫触
 291=鏆傛棤宸叉敹钘忕殑鍦烘櫙
 292=鍏充簬ON
@@ -426,3 +432,52 @@
 5046=璋冭妭闊抽噺
 5047=浣犳墜鏈烘殏鏈畨瑁�"QQ闊充箰"{\r\n}璇峰墠寰�鎵嬫満鍟嗗満瀹夎
 
+9000=璇蜂娇鐢ㄦ柊鐨勬墜鏈鸿处鍙风櫥褰旳PP
+9001=璇蜂娇鐢ㄦ柊鐨勯偖绠辫处鍙风櫥褰旳PP
+9002=鐧诲綍鎵嬫満淇敼瀹屾垚
+9003=鐧诲綍鎵嬫満缁戝畾瀹屾垚
+9004=鐧诲綍閭淇敼瀹屾垚
+9005=鐧诲綍閭缁戝畾瀹屾垚
+9006=楠岃瘉鐮佸彲鑳戒細寤惰繜锛岃鍐嶇瓑涓�浼�
+9007=鍐嶇瓑涓�浼�
+9008=杩斿洖
+9009=涓嶆効鎰忛�忛湶濮撳悕鐨勭敤鎴�
+9010=鏂板瘑鐮�
+9011=鍐嶆杈撳叆鏂板瘑鐮�
+9012=鍚屾剰
+9013=鐢ㄦ埛鍗忚
+9014=闅愮鏀跨瓥
+9015=鍜�
+9016=璇峰厛闃呰骞跺悓鎰忋�婄敤鎴峰崗璁�嬪拰銆婇殣绉佹斂绛栥��
+9017=纭閫�鍑虹櫥褰曪紵
+9018=璇烽�夋嫨鍥藉/鍖哄煙
+9019=绔嬪嵆鏇存柊
+9020=浠ュ悗鍐嶈
+9021=鍥藉/鍦板尯
+9022=鏈嶅姟鍣ㄤ俊鎭�
+9023=褰撳墠璐﹀彿鏈嶅姟鍣ㄦ墍灞烇細
+9024=*鏈嶅姟鍣ㄦ槸鎮ㄥ綋鍓嶄簯绔暟鎹瓨鍌ㄧ殑鎵�鍦ㄥ尯鍩�,鏃犻渶蹇呰,鎴戜滑涓嶅缓璁彂鐢熻縼绉�
+9025=鑻ラ渶瑕佽縼绉绘湇鍔″櫒,璇锋嫧鎵�
+9026=鍔熻兘浠嬬粛
+9027=鎶曡瘔
+9028=鐗堟湰鏇存柊
+9029=(鏍囬璇峰甫鎶曡瘔瀛楁牱锛屾垜浠細浼樺厛澶勭悊)
+9030=澶嶅埗鎴愬姛
+9031=绌虹┖濡備篃
+9032=鍙戠幇鏂扮増鏈�
+9033=宸茬粡鏄渶鏂扮増鏈�
+9034=鎴戜滑鑳戒负浣犳彁渚涗粈涔堝府鍔╋紵
+9035=鍔熻兘闂
+9036=鍦烘櫙闂
+9037=APP浣跨敤杈呭姪
+9038=甯歌闂
+
+
+
+10000=鏃犳晥鐧诲綍瀵嗛挜锛岃閲嶆柊鐧诲綍锛�
+10001=璇锋眰鏈嶅姟鍣ㄥけ璐ワ紝璇风◢鍚庡啀璇曪紒
+10002=绯荤粺缁存姢涓�,璇风◢鍚庡啀璇�!
+10003=鐧诲綍澶辫触锛岃鍏堟坊鍔犱綇瀹咃紒
+10004=璐﹀彿宸插瓨鍦�
+10005=楠岃瘉鐮佸彂閫侀绻侊紝璇风◢鍚庡啀璇曪紒
+10006=绛惧悕閿欒
diff --git a/HDL-ON_iOS/Resources/Phone/LoginIcon/Server.png b/HDL-ON_iOS/Resources/Phone/LoginIcon/Server.png
new file mode 100644
index 0000000..f3b16ea
--- /dev/null
+++ b/HDL-ON_iOS/Resources/Phone/LoginIcon/Server.png
Binary files differ
diff --git a/HDL-ON_iOS/Resources/Phone/PersonalCenter/Head.png b/HDL-ON_iOS/Resources/Phone/PersonalCenter/Head.png
new file mode 100644
index 0000000..b15d2ea
--- /dev/null
+++ b/HDL-ON_iOS/Resources/Phone/PersonalCenter/Head.png
Binary files differ
diff --git a/HDL-ON_iOS/Resources/Phone/PersonalCenter/ServerInfo.png b/HDL-ON_iOS/Resources/Phone/PersonalCenter/ServerInfo.png
new file mode 100644
index 0000000..eecc590
--- /dev/null
+++ b/HDL-ON_iOS/Resources/Phone/PersonalCenter/ServerInfo.png
Binary files differ
diff --git a/HDL-ON_iOS/Resources/Phone/PersonalCenter/Support/Close.png b/HDL-ON_iOS/Resources/Phone/PersonalCenter/Support/Close.png
new file mode 100644
index 0000000..de1e192
--- /dev/null
+++ b/HDL-ON_iOS/Resources/Phone/PersonalCenter/Support/Close.png
Binary files differ
diff --git a/HDL-ON_iOS/Resources/Phone/PersonalCenter/Support/Function.png b/HDL-ON_iOS/Resources/Phone/PersonalCenter/Support/Function.png
new file mode 100644
index 0000000..4a0598c
--- /dev/null
+++ b/HDL-ON_iOS/Resources/Phone/PersonalCenter/Support/Function.png
Binary files differ
diff --git a/HDL-ON_iOS/Resources/Phone/PersonalCenter/Support/Help.png b/HDL-ON_iOS/Resources/Phone/PersonalCenter/Support/Help.png
new file mode 100644
index 0000000..9990493
--- /dev/null
+++ b/HDL-ON_iOS/Resources/Phone/PersonalCenter/Support/Help.png
Binary files differ
diff --git a/HDL-ON_iOS/Resources/Phone/PersonalCenter/Support/Menu.png b/HDL-ON_iOS/Resources/Phone/PersonalCenter/Support/Menu.png
new file mode 100644
index 0000000..71810f4
--- /dev/null
+++ b/HDL-ON_iOS/Resources/Phone/PersonalCenter/Support/Menu.png
Binary files differ
diff --git a/HDL-ON_iOS/Resources/Phone/PersonalCenter/Support/Scene.png b/HDL-ON_iOS/Resources/Phone/PersonalCenter/Support/Scene.png
new file mode 100644
index 0000000..fcf3715
--- /dev/null
+++ b/HDL-ON_iOS/Resources/Phone/PersonalCenter/Support/Scene.png
Binary files differ
diff --git a/HDL-ON_iOS/Resources/Phone/PersonalCenter/Support/Search.png b/HDL-ON_iOS/Resources/Phone/PersonalCenter/Support/Search.png
new file mode 100644
index 0000000..77711cb
--- /dev/null
+++ b/HDL-ON_iOS/Resources/Phone/PersonalCenter/Support/Search.png
Binary files differ
diff --git a/HDL-ON_iOS/Resources/Phone/PersonalCenter/Support/SendMessage.png b/HDL-ON_iOS/Resources/Phone/PersonalCenter/Support/SendMessage.png
new file mode 100644
index 0000000..e8f67ed
--- /dev/null
+++ b/HDL-ON_iOS/Resources/Phone/PersonalCenter/Support/SendMessage.png
Binary files differ
diff --git a/HDL-ON_iOS/Resources/Phone/PersonalCenter/Support/Telephone.png b/HDL-ON_iOS/Resources/Phone/PersonalCenter/Support/Telephone.png
new file mode 100644
index 0000000..120fed1
--- /dev/null
+++ b/HDL-ON_iOS/Resources/Phone/PersonalCenter/Support/Telephone.png
Binary files differ
diff --git a/HDL-ON_iOS/Resources/Phone/PersonalCenter/Transfer.png b/HDL-ON_iOS/Resources/Phone/PersonalCenter/Transfer.png
new file mode 100644
index 0000000..c81184b
--- /dev/null
+++ b/HDL-ON_iOS/Resources/Phone/PersonalCenter/Transfer.png
Binary files differ
diff --git a/HDL-ON_iOS/Resources/Phone/Public/Dialog/DialogTipTitleIcon_1.png b/HDL-ON_iOS/Resources/Phone/Public/Dialog/DialogTipTitleIcon_1.png
new file mode 100755
index 0000000..2954076
--- /dev/null
+++ b/HDL-ON_iOS/Resources/Phone/Public/Dialog/DialogTipTitleIcon_1.png
Binary files differ
diff --git a/HDL-ON_iOS/Resources/Phone/Public/Dialog/DialogTipTitleIcon_2.png b/HDL-ON_iOS/Resources/Phone/Public/Dialog/DialogTipTitleIcon_2.png
new file mode 100644
index 0000000..8450325
--- /dev/null
+++ b/HDL-ON_iOS/Resources/Phone/Public/Dialog/DialogTipTitleIcon_2.png
Binary files differ
diff --git a/HDL-ON_iOS/Resources/Phone/Public/Dialog/DialogTipTitleIcon_3.png b/HDL-ON_iOS/Resources/Phone/Public/Dialog/DialogTipTitleIcon_3.png
new file mode 100644
index 0000000..3a6658f
--- /dev/null
+++ b/HDL-ON_iOS/Resources/Phone/Public/Dialog/DialogTipTitleIcon_3.png
Binary files differ
diff --git a/HDL-ON_iOS/Resources/Phone/Public/Search.png b/HDL-ON_iOS/Resources/Phone/Public/Search.png
new file mode 100644
index 0000000..77711cb
--- /dev/null
+++ b/HDL-ON_iOS/Resources/Phone/Public/Search.png
Binary files differ
diff --git a/HDL_APP_Project.sln b/HDL_APP_Project.sln
index aa101f3..7ef1ddd 100644
--- a/HDL_APP_Project.sln
+++ b/HDL_APP_Project.sln
@@ -3,9 +3,9 @@
 # Visual Studio 15
 Project("{D954291E-2A0B-460D-934E-DC6B0785DB48}") = "HDL_ON", "HDL_ON\HDL_ON.shproj", "{A5C296B4-CF9A-4205-ACF0-3A6FEA786F12}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "HDL-ON_iOS", "HDL-ON_iOS\HDL-ON_iOS.csproj", "{D998E133-F0DD-4760-BE3C-461632F54DA4}"
-EndProject
 Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "HDL-ON_Android", "HDL-ON_Android\HDL-ON_Android.csproj", "{09712674-2A38-407B-B1E2-560B2C352F9A}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "HDL-ON_iOS", "HDL-ON_iOS\HDL-ON_iOS.csproj", "{D998E133-F0DD-4760-BE3C-461632F54DA4}"
 EndProject
 Global
 	GlobalSection(SolutionConfigurationPlatforms) = preSolution
@@ -17,18 +17,6 @@
 		Release|iPhone = Release|iPhone
 	EndGlobalSection
 	GlobalSection(ProjectConfigurationPlatforms) = postSolution
-		{D998E133-F0DD-4760-BE3C-461632F54DA4}.Debug|Any CPU.ActiveCfg = Debug|iPhoneSimulator
-		{D998E133-F0DD-4760-BE3C-461632F54DA4}.Debug|Any CPU.Build.0 = Debug|iPhoneSimulator
-		{D998E133-F0DD-4760-BE3C-461632F54DA4}.Release|Any CPU.ActiveCfg = Release|iPhoneSimulator
-		{D998E133-F0DD-4760-BE3C-461632F54DA4}.Release|Any CPU.Build.0 = Release|iPhoneSimulator
-		{D998E133-F0DD-4760-BE3C-461632F54DA4}.Debug|iPhoneSimulator.ActiveCfg = Debug|iPhoneSimulator
-		{D998E133-F0DD-4760-BE3C-461632F54DA4}.Debug|iPhoneSimulator.Build.0 = Debug|iPhoneSimulator
-		{D998E133-F0DD-4760-BE3C-461632F54DA4}.Release|iPhoneSimulator.ActiveCfg = Release|iPhoneSimulator
-		{D998E133-F0DD-4760-BE3C-461632F54DA4}.Release|iPhoneSimulator.Build.0 = Release|iPhoneSimulator
-		{D998E133-F0DD-4760-BE3C-461632F54DA4}.Debug|iPhone.ActiveCfg = Debug|iPhone
-		{D998E133-F0DD-4760-BE3C-461632F54DA4}.Debug|iPhone.Build.0 = Debug|iPhone
-		{D998E133-F0DD-4760-BE3C-461632F54DA4}.Release|iPhone.ActiveCfg = Release|iPhone
-		{D998E133-F0DD-4760-BE3C-461632F54DA4}.Release|iPhone.Build.0 = Release|iPhone
 		{09712674-2A38-407B-B1E2-560B2C352F9A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
 		{09712674-2A38-407B-B1E2-560B2C352F9A}.Debug|Any CPU.Build.0 = Debug|Any CPU
 		{09712674-2A38-407B-B1E2-560B2C352F9A}.Release|Any CPU.ActiveCfg = Release|Any CPU
@@ -41,5 +29,17 @@
 		{09712674-2A38-407B-B1E2-560B2C352F9A}.Debug|iPhone.Build.0 = Debug|Any CPU
 		{09712674-2A38-407B-B1E2-560B2C352F9A}.Release|iPhone.ActiveCfg = Release|Any CPU
 		{09712674-2A38-407B-B1E2-560B2C352F9A}.Release|iPhone.Build.0 = Release|Any CPU
+		{D998E133-F0DD-4760-BE3C-461632F54DA4}.Debug|Any CPU.ActiveCfg = Debug|iPhoneSimulator
+		{D998E133-F0DD-4760-BE3C-461632F54DA4}.Debug|Any CPU.Build.0 = Debug|iPhoneSimulator
+		{D998E133-F0DD-4760-BE3C-461632F54DA4}.Release|Any CPU.ActiveCfg = Release|iPhoneSimulator
+		{D998E133-F0DD-4760-BE3C-461632F54DA4}.Release|Any CPU.Build.0 = Release|iPhoneSimulator
+		{D998E133-F0DD-4760-BE3C-461632F54DA4}.Debug|iPhoneSimulator.ActiveCfg = Debug|iPhoneSimulator
+		{D998E133-F0DD-4760-BE3C-461632F54DA4}.Debug|iPhoneSimulator.Build.0 = Debug|iPhoneSimulator
+		{D998E133-F0DD-4760-BE3C-461632F54DA4}.Release|iPhoneSimulator.ActiveCfg = Release|iPhoneSimulator
+		{D998E133-F0DD-4760-BE3C-461632F54DA4}.Release|iPhoneSimulator.Build.0 = Release|iPhoneSimulator
+		{D998E133-F0DD-4760-BE3C-461632F54DA4}.Debug|iPhone.ActiveCfg = Debug|iPhone
+		{D998E133-F0DD-4760-BE3C-461632F54DA4}.Debug|iPhone.Build.0 = Debug|iPhone
+		{D998E133-F0DD-4760-BE3C-461632F54DA4}.Release|iPhone.ActiveCfg = Release|iPhone
+		{D998E133-F0DD-4760-BE3C-461632F54DA4}.Release|iPhone.Build.0 = Release|iPhone
 	EndGlobalSection
 EndGlobal
diff --git a/HDL_ON/Common/A_Protocol_Command.cs b/HDL_ON/Common/A_Protocol_Command.cs
deleted file mode 100644
index 5f28270..0000000
--- a/HDL_ON/Common/A_Protocol_Command.cs
+++ /dev/null
@@ -1 +0,0 @@
-锘�
\ No newline at end of file
diff --git a/HDL_ON/Common/Constant.cs b/HDL_ON/Common/Constant.cs
new file mode 100644
index 0000000..46c8b0a
--- /dev/null
+++ b/HDL_ON/Common/Constant.cs
@@ -0,0 +1,193 @@
+锘縰sing System;
+namespace HDL_ON
+{
+    #region 鈻� 鍏ㄥ眬甯搁噺 ____________________________
+    /// <summary>
+    /// 鍏ㄥ眬甯搁噺
+    /// </summary>
+    public class Constant
+    {
+		/// <summary>
+		/// 鐢ㄦ埛鍗忚
+		/// </summary>
+		public const string URL_USERAGREEMENT = "https://developer.hdlcontrol.com/HDLOnPlusUserAgreement.html";
+		/// <summary>
+		/// 闅愮鏀跨瓥
+		/// </summary>
+		public const string URL_PRIVACYPOLICY = "https://developer.hdlcontrol.com/HDLOnPlusPrivacyPolicy.html";
+        /// <summary>
+        /// 鎶�鏈敮鎸佺數璇濆彿鐮�
+        /// </summary>
+        public const string SUPPORT_TELEPHONENUMBER = "4008558535";
+        /// <summary>
+        /// 鎶�鏈敮鎸侀偖绠卞湴鍧�
+        /// </summary>
+        public const string SUPPORT_EMAIL = "hdltickets@hdlautomation.com";
+        /// <summary>
+		/// 鑻规灉鍟嗗簵鍦板潃
+		/// </summary>
+		public const string URL_APPSTORE = "https://apps.apple.com/cn/app/on/id1532353432";
+
+        
+    }
+    #endregion
+
+    #region 鈻� 鍏ㄥ眬鏋氫妇 ____________________________
+    ///// <summary>
+    ///// 瀹㈡埛绔被鍨� 濡侶dlOn銆丒voyoHome銆佽皟璇曞疂
+    ///// </summary>
+    //public enum APIClientType
+    //{
+    //    HDL_ON,
+    //    EvoyoHome,
+    //    璋冭瘯瀹�,
+    //    HDL_ON_PRO
+    //}
+
+    /// <summary>
+    /// 澶囦唤绫诲瀷
+    /// </summary>
+    public enum BackupClassify
+    {
+        /// <summary>
+        /// 浜や簰澶囦唤
+        /// </summary>
+        INTERACTIVE_ENGINEERING_BACKUP,
+        /// <summary>
+        ///  鑷畾涔夊伐绋嬪浠�
+        /// </summary>
+        CUSTOM_PROJECT_BACKUP,
+        /// <summary>
+        /// 鐢ㄦ埛鑷姩澶囦唤
+        /// </summary>
+        AUTOMATIC_USER_BACKUP,
+        /// <summary>
+        /// 鐢ㄦ埛鑷畾涔夊浠�
+        /// </summary>
+        USER_DEFINED_BACKUP
+    }
+
+    /// <summary>
+    /// BackupDataType
+    /// </summary>
+    public enum BackupDataType
+    {
+        HDL_ON,
+        ZIGBEE,
+        ZIGBEE_HOME,
+        HDL_ON_PRO,
+        BUSPRO
+    }
+
+    /// <summary>
+    /// 浣忓畢绫诲瀷
+    /// </summary>
+    public enum HomeTypeEnum
+    {
+        ZIGBEE = 1,
+        BUSPRO,
+        A,
+        ALL
+    }
+
+    /// <summary>
+    /// 璇█绫诲瀷
+    /// </summary>
+    public enum LanguageTypeEnum
+    {
+        CHINESE,
+        ENGLISH,
+    }
+
+    /// <summary>
+    /// 鍙戦�侀獙璇佺爜鍔熻兘绫诲瀷
+    /// </summary>
+    public enum VerifyType
+    {
+        /// <summary>
+        /// 鐢ㄦ埛娉ㄥ唽
+        /// </summary>
+        REGISTER_USER = 1,
+        /// <summary>
+        /// 蹇樿瀵嗙爜,鎵惧洖瀵嗙爜
+        /// </summary>
+        FIND_PASSWORD,
+        /// <summary>
+        /// 缁戝畾
+        /// </summary>
+        REGISTER_USER_SYSTEM,
+        /// <summary>
+        /// 楠岃瘉鐮佺櫥闄�
+        /// </summary>
+        VERIFY_LOGIN,
+        /// <summary>
+        /// 鏁忔劅鏁版嵁楠岃瘉
+        /// </summary>
+        SENSITIVE_DATA,
+    }
+
+    /// <summary>
+    /// ChildAccountType
+    /// </summary>
+    public enum ChildAccountType
+    {
+        /// <summary>
+        /// 涓昏处鍙疯嚜宸�(鏈汉)
+        /// </summary>
+        MYSELF = 0,
+        /// <summary>
+        /// 鏅��
+        /// </summary>
+        ORDINARY = 1,
+        /// <summary>
+        /// 璋冭瘯浜哄憳
+        /// </summary>
+        DEBUG,
+        /// <summary>
+        /// 绠$悊鍛�
+        /// </summary>
+        ADMIN,
+
+    }
+
+
+    /// <summary>
+    /// 
+    /// </summary>
+    public enum PhoneDeviceType
+    {
+        /// <summary>
+        /// Android
+        /// </summary>
+        Android = 0,
+        /// <summary>
+        /// IOS
+        /// </summary>
+        IOS = 1,
+        /// <summary>
+        /// WinPhone
+        /// </summary>
+        WinPhone,
+    }
+
+    /// <summary>
+    /// APP 绫诲瀷
+    /// </summary>
+    public enum SoftwareType
+    {
+        /// <summary>
+        /// Evoyo銆丱N銆丱N_Plus
+        /// </summary>
+        Evoyo = 0,
+        /// <summary>
+        /// IOS
+        /// </summary>
+        ON = 1,
+        /// <summary>
+        /// WinPhone
+        /// </summary>
+        ON_Plus,
+    }
+
+    #endregion
+}
diff --git a/HDL_ON/Common/HDLCommon.cs b/HDL_ON/Common/HDLCommon.cs
new file mode 100644
index 0000000..43e137d
--- /dev/null
+++ b/HDL_ON/Common/HDLCommon.cs
@@ -0,0 +1,184 @@
+锘縰sing System;
+using Shared;
+using HDL_ON;
+using HDL_ON.UI.CSS;
+using HDL_ON.DAL.Server;
+using HDL_ON.UI;
+
+namespace HDL_ON
+{
+    /// <summary>
+    /// HDLCommon
+    /// 鏆傛椂娌$敤
+    /// </summary>
+    public class HDLCommon
+    {
+        #region 鈻� 鍙橀噺澹版槑___________________________
+        /// <summary>
+        /// 閫氱敤鏂规硶
+        /// </summary>
+        private static HDLCommon m_Current = null;
+        /// <summary>
+        /// 閫氱敤鏂规硶
+        /// </summary>
+        public static HDLCommon Current
+        {
+            get
+            {
+                if (m_Current == null)
+                {
+                    m_Current = new HDLCommon();
+                }
+                return m_Current;
+            }
+        }
+        #endregion
+
+        #region 鈻� Alter寮圭獥鎻愮ず_______________________
+        /// <summary>
+        /// 寮圭獥鎻愮ず
+        /// </summary>
+        /// <param name="mes"></param>
+        public void ShowAlert(string mes)
+        {
+            new Alert("", mes, Language.StringByID(StringId.Close)).Show();
+        }
+
+        /// <summary>
+        /// 寮圭獥鎻愮ず
+        /// </summary>
+        /// <param name="mes">寮圭獥鎻愮ず淇℃伅</param>
+        /// <param name="okAction">纭鎸夐挳浜嬩欢</param>
+        public void ShowActionAlert(string mes, Action okAction)
+        {
+            Alert alert = new Alert("", mes, Language.StringByID(StringId.Cancel), Language.StringByID(StringId.Confirm));
+            alert.ResultEventHandler += (sender2, e2) =>
+            {
+                if (e2)
+                {
+                    okAction?.Invoke();
+                }
+            };
+            alert.Show();
+        }
+
+        #endregion
+
+        #region 鈻� 閫氱敤Dialog_______________________
+
+        #endregion
+
+        #region 妫�娴嬫洿鏂�
+        /// <summary>
+        /// 妫�娴嬫洿鏂扮嚎绋�
+        /// </summary>
+        public void CheckIfNeedForceUpdate()
+        {
+            System.Threading.Tasks.Task.Run(() =>
+            {
+                try
+                {
+                    var requestObj = new ForceUpdateObj()
+                    {
+                        LanguageType = Utlis.GetPostLanguageType()
+                    };
+#if __IOS__
+                    requestObj.DeviceType = PhoneDeviceType.IOS.ToString();
+#endif
+                    var requestJson = Newtonsoft.Json.JsonConvert.SerializeObject(requestObj);
+                    var revertObj = HttpUtil.RequestHttpsPost(NewAPI.API_POST_CheckAppVersion, requestJson);
+                    if (revertObj.Code == StateCode.SUCCESS)
+                    {
+                        var mForceUpdateInfo = Newtonsoft.Json.JsonConvert.DeserializeObject<ForceUpdateInfo>(revertObj.Data.ToString());
+                        if (mForceUpdateInfo != null)
+                        {
+                            Application.RunOnMainThread(() =>
+                            {
+                                ShowForceUpdateDialog(mForceUpdateInfo);
+                            });
+                        }
+                    }
+                    else
+                    {
+                        Utlis.WriteLine("璇锋眰澶辫触");
+                    }
+                }
+                catch (Exception ex)
+                {
+                    //Shared.Utlis.WriteLine (ex.ToString ());
+                }
+                finally
+                {
+
+                }
+
+            });
+
+        }
+
+        /// <summary>
+        /// 鎻愮ず寮哄埗鏇存柊Dialog
+        /// 鐐瑰嚮纭璺宠浆娴忚鍣�
+        /// </summary>
+        public void ShowForceUpdateDialog(ForceUpdateInfo mForceUpdateInfo)
+        {
+            // 1.1 娌℃湁鏇存柊 杩斿洖
+            if (mForceUpdateInfo.UpdateType == 0) return;
+            // 1.2 鏈夋柊鐗堟湰浣嗘槸蹇界暐杩� 杩斿洖
+            if (mForceUpdateInfo.UpdateType == 1 && (UserInfo.Current.IgnoreUpdateVersion == mForceUpdateInfo.NewVersion)) return;
+            // 2.1 鏈夋柊鐗堟湰娌℃湁蹇界暐杩� 鎻愮ず鏇存柊
+            if (mForceUpdateInfo.UpdateType == 1)
+            {
+                Action okAction = () =>
+                {
+                    if (string.IsNullOrEmpty(mForceUpdateInfo.NewVersionUrl)) return;
+
+                    HDLUtils.OpenUrl(mForceUpdateInfo.NewVersionUrl);
+                };
+
+                Action cancelAction = () =>
+                {
+                    //UserInfo.Current.IgnoreUpdateVersion = mForceUpdateInfo.NewVersion;
+                    //UserInfo.Current.SaveUserInfo();
+                };
+
+                //1鎻愮ず鏇存柊
+                var dialog =  new UpdateTipDialog();
+                var tipStr = Language.StringByID(StringId.VersionNumber) + mForceUpdateInfo.NewVersion;
+                dialog.ShowUpdateDialog(Language.StringByID(StringId.DiscoverNewVersion), tipStr, mForceUpdateInfo.ReasonStr, okAction, cancelAction);
+
+            }
+            else if (mForceUpdateInfo.UpdateType == 2) //2.2 闇�瑕佸己鍒舵洿鏂�
+            {
+                //2寮哄埗鏇存柊
+                //"1.鍙戠幇鏂扮増鏈珹pp,褰撳墠鐗堟湰宸插仠鐢�,椹笂鏇存柊!\n2.璇蜂笅杞藉拰瀹夎鏂扮増鏈�!....."
+                Action okAction = () =>
+                {
+                    if (string.IsNullOrEmpty(mForceUpdateInfo.NewVersionUrl)) {
+                        Utlis.ShowTip(Language.StringByID(StringId.DataExceptionPleaseTryAgain));
+                        return;
+                    };
+
+                    HDLUtils.OpenUrl(mForceUpdateInfo.NewVersionUrl);
+                };
+               
+                //1鎻愮ず鏇存柊
+                var dialog = new UpdateTipDialog();
+                var tipStr = Language.StringByID(StringId.VersionNumber) + mForceUpdateInfo.NewVersion;
+                dialog.ShowForcedUpdateDialog(Language.StringByID(StringId.DiscoverNewVersion), tipStr, mForceUpdateInfo.ReasonStr, okAction);
+            }
+            else //3. 鍙渶鎻愮ず
+            {
+                //3鎻愮ず閫氱煡
+                Action okAction = () =>
+                {
+                   
+                };
+                var dialog = new UpdateTipDialog();
+                dialog.ShowTipDialog(Language.StringByID(StringId.Tip), mForceUpdateInfo.ReasonStr, okAction);
+            }
+        }
+
+        #endregion
+    }
+}
diff --git a/HDL_ON/Common/MqttCommon.cs b/HDL_ON/Common/MqttCommon.cs
deleted file mode 100644
index 3a94096..0000000
--- a/HDL_ON/Common/MqttCommon.cs
+++ /dev/null
@@ -1,1061 +0,0 @@
-锘�///*
-//鏇存柊浜咵MQ杩炴帴鏂瑰紡
-//*/
-//using System.Collections.Generic;
-//using System;
-//using MQTTnet.Client;
-//using System.Threading.Tasks;
-//using Shared;
-//using MQTTnet;
-//using System.Text;
-//using System.Security.Cryptography;
-
-//namespace HDL_ON
-//{
-//    public static class MqttCommon
-//    {
-//        /// <summary>
-//        /// 鏄惁鎻愮ず 杩滅▼杩炴帴鐨勯敊璇俊鎭� 
-//        /// </summary>
-//        public static bool IfDEBUG = false;
-
-
-//        static string mqttEncryptKey = "";
-//        //static string checkGatewayTopicBase64 = "";
-
-//        static readonly string PushNotifySqueeze = "/Push/NotifySqueeze";
-//        static string RandomKey = "";
-
-//        static string GetRandomKey()
-//        {
-//            if (string.IsNullOrEmpty(RandomKey))
-//            {
-//                //闅忔満2浣嶅瓧绗︿覆
-//                RandomKey = Utlis.CreateRandomString(2);
-//            }
-
-//            return RandomKey;
-
-//        }
-
-//        /// <summary>
-//        /// 鏄惁鑾峰彇MQTT鍙傛暟鎴愬姛
-//        /// </summary>
-//        //public static bool MqttInfoConfig.Instance.IfGetMqttInfoSuccess = false;
-//        //static RemoteMACInfo CurRemoteMACInfo = null;
-//        //static MqttInfo mMqttInfo = null;
-
-//        ///// <summary>
-//        ///// 鎵嬫満鏍囪瘑
-//        ///// </summary>
-//        //static Guid currentGuid = Guid.NewGuid ();
-//        //static bool thisShowTip = true;
-//        //static string mqttRequestParToken="";
-
-
-//        /// <summary>
-//        /// 杩滅▼MqttClient
-//        /// </summary>
-//        public static IMqttClient RemoteMqttClient = new MqttFactory().CreateMqttClient();
-
-
-//        /// <summary>
-//        /// 鎺ㄩ�佹爣璇�
-//        /// </summary>
-//        static string PushSignStr = System.DateTime.Now.Ticks.ToString();
-
-//        /// <summary>
-//        /// 鏂紑杩滅▼Mqtt鐨勯摼鎺�
-//        /// </summary>
-//        static async System.Threading.Tasks.Task DisConnectRemoteMqttClient(string s = "")
-//        {
-//            try
-//            {
-//                if (remoteIsConnected)
-//                {
-//                    remoteIsConnected = false;
-//                    isSubscribeSuccess = false;
-//                    MainPage.Log($"Remote涓诲姩鏂紑_{s}");
-//                    //await RemoteMqttClient.DisconnectAsync(new MQTTnet.Client.Disconnecting.MqttClientDisconnectOptions { }, CancellationToken.None);
-//                    await RemoteMqttClient.DisconnectAsync();
-
-//                    if (CommonPage.IsRemote)
-//                    {
-//                        //涓嶆槸鏃犵綉缁�
-//                        if (UserConfig.Instance.internetStatus != 0)
-//                        {
-//                            Utlis.ShowAppLinkStatus(AppLinkStatus.CloudUnlink);
-//                        }
-//                    }
-//                }
-//            }
-//            catch (Exception e)
-//            {
-//                MainPage.Log($"Remote鏂紑閫氳杩炴帴鍑哄紓甯�:{e.Message}");
-//            }
-//        }
-
-//        /// <summary>
-//        /// 鏂紑杩滅▼Mqtt鐨勯摼鎺�
-//        /// </summary>
-//        static async Task DisConnectRemoteMqttClientWhenStart(string s = "")
-//        {
-//            try
-//            {
-//                //if (remoteIsConnected) {
-//                remoteIsConnected = false;
-//                isSubscribeSuccess = false;
-//                MainPage.Log($"RemoteStart涓诲姩鏂紑_{s}");
-//                await RemoteMqttClient.DisconnectAsync();
-
-//                //}
-//            }
-//            catch (Exception e)
-//            {
-//                MainPage.Log($"RemoteStart鏂紑閫氳杩炴帴鍑哄紓甯�:{e.Message}");
-//            }
-
-//        }
-
-
-//        /// <summary>
-//        /// 鏂紑mqtt杩炴帴
-//        /// </summary>
-//        /// <param name="s">鏂紑鍘熷洜</param>
-//        /// <param name="reset">鏄惁闇�瑕佸幓涓績鏈嶅姟鍣� 閲嶆柊鑾峰彇鍙傛暟</param>
-//        /// <returns></returns>
-//        public static async Task DisConnectRemote(string s = "", bool reset = true)
-//        {
-//            if (reset)
-//            {
-//                bNeedStartTip = true;
-//                bNeedConnectTip = true;
-//                MqttInfoConfig.Instance.IfGetMqttInfoSuccess = false;
-//            }
-//            await DisConnectRemoteMqttClient(s);
-//        }
-
-//        //static DateTime dateTime = DateTime.MinValue;
-//        /// <summary>
-//        /// 澶栫綉鐨凪QTT鏄惁姝e湪杩炴帴
-//        /// </summary>
-//        public static bool remoteMqttIsConnecting;
-//        static bool remoteIsConnected;
-
-//        static MqttCommon()
-//        {
-//            InitMqtt();
-//        }
-
-//        public static bool IsInitMqtt = false;
-
-//        static void InitMqtt()
-//        {
-//            new System.Threading.Thread(async () =>
-//            {
-//                while (true)
-//                {
-//                    try
-//                    {
-//                        System.Threading.Thread.Sleep(200);
-//                        //if (!MainPage.LoginUser.IsLogin) {
-//                        //    continue;
-//                        //}
-//                        if (!CommonPage.IsRemote) continue;
-
-//                        //#if Android
-//                        if (BusSocket.IsEnterBackground) continue;
-//                        //#endif
-
-//                        await StartCloudMqtt();
-//                        await SubscribeTopics();
-//                    }
-//                    catch { }
-//                }
-//            })
-//            { IsBackground = true }.Start();
-//        }
-
-//        public static void InitState()
-//        {
-//            IfNeedReadAllDeviceStatus = true;
-//            bNeedStartTip = true;
-//            bNeedConnectTip = true;
-//            IsGatewayOnline = false;
-//            StartCloudMqtt();
-
-//        }
-
-//        static bool isSubscribeSuccess;
-//        static async Task SubscribeTopics()
-//        {
-//            if (remoteIsConnected && !isSubscribeSuccess)
-//            {
-//                try
-//                {
-
-//                    //var topicFilterPush = new TopicFilter { QualityOfServiceLevel = MQTTnet.Protocol.MqttQualityOfServiceLevel.ExactlyOnce,
-//                    //    Topic = $"/BusGateWayToClient/{MqttInfoConfig.Instance.CurRemoteMACInfo.clientId}/Push/NotifySqueeze" };
-
-//                    //2020-05-14 璁㈤槄涓婚璐ㄩ噺鏀逛负0
-//                    var topicFilterBusGateWayToClient = new TopicFilter()
-//                    {
-//                        Topic = $"/BusGateWayToClient/{MqttInfoConfig.Instance.CurRemoteMACInfo.macMark}/#",
-//                        QualityOfServiceLevel = MQTTnet.Protocol.MqttQualityOfServiceLevel.AtMostOnce
-//                        //QualityOfServiceLevel = MQTTnet.Protocol.MqttQualityOfServiceLevel.ExactlyOnce
-//                    };
-
-//                    var topicFilterPush2 = new TopicFilter
-//                    {
-//                        Topic = $"/BusGateWayToClient/{MainPage.LoginUser.ID}" + PushNotifySqueeze,
-//                        QualityOfServiceLevel = MQTTnet.Protocol.MqttQualityOfServiceLevel.AtMostOnce,
-//                        //QualityOfServiceLevel = MQTTnet.Protocol.MqttQualityOfServiceLevel.ExactlyOnce
-//                    };
-
-
-
-
-//                    Utlis.WriteLine("寮�濮嬭闃咃紒");
-//                    var result = await RemoteMqttClient.SubscribeAsync(new TopicFilter[] { topicFilterBusGateWayToClient, topicFilterPush2 });
-//                    if (result.Items[0].ResultCode == MQTTnet.Client.Subscribing.MqttClientSubscribeResultCode.GrantedQoS0)
-//                    {
-//                        isSubscribeSuccess = true;
-//                        Utlis.WriteLine("璁㈤槄鎴愬姛锛�");
-//                        MainPage.AddTip(Language.StringByID(Shared.SimpleControl.R.MyInternationalizationString.SubscriptionSuccessful));
-
-//                        MqttRemoteSend(new byte[] { 0 }, 3);
-
-//                        //璇诲彇鎼滅储缃戝叧锛屽垽鏂綉鍏虫槸鍚﹀湪绾�
-//                        CheckGatewaysIfOnline();
-
-//                        //杩炴帴鎴愬姛鍚庢娴嬫槸鍚﹂渶瑕侀�氳繃杩滅▼鑾峰彇Key
-//                        CheckIfNeedGetLocalPasswordFromRemote();
-//                    }
-
-
-//                }
-//                catch (Exception ex)
-//                {
-//                    Console.WriteLine("璁㈤槄catch:" + ex.Message.ToString());
-//                }
-//            }
-//        }
-
-//        static DateTime mFlagDateTime;
-
-//        //static readonly object SendLocker = new object ();
-//        /// <summary>
-//        /// 鍚姩杩滅▼Mqtt
-//        /// </summary>
-//        public static async Task StartCloudMqtt()
-//        {
-
-//            if (UserConfig.Instance.internetStatus == 0)
-//            {
-//                return;
-//            }
-
-//            if (!MainPage.LoginUser.IsLogin)
-//            {
-//                return;
-//            }
-
-
-//            ////60S鍚庡己鍒堕噸缃甶sConnectiong鐘舵�侊紝闃叉isConnectiong涓�鐩翠负true鐘舵��
-//            //if (mFlagDateTime.AddSeconds (60).Ticks <= System.DateTime.Now.Ticks) {
-//            //    mFlagDateTime = DateTime.Now;
-//            //    if (remoteMqttIsConnecting) {
-//            //        MainPage.Log ("60s銆媟emoteMqttIsConnecting true ");
-//            //        remoteMqttIsConnecting = false;
-//            //    }
-//            //}
-
-//            //MainPage.Log ($"remoteMqttIsConnecting: " + remoteMqttIsConnecting.ToString());
-
-//            //杩藉姞锛氭病鏈夎繙绋嬭繛鎺ョ殑鏉冮檺
-//            if (remoteMqttIsConnecting || remoteIsConnected)
-//            {
-//                return;
-//            }
-
-//            //lock (SendLocker) {
-//            //    remoteMqttIsConnecting = true;
-//            //}
-//            remoteMqttIsConnecting = true;
-//#if DEBUG
-//            MainPage.Log($"StartCloudMqtt: 寮�濮�");
-//#endif
-
-//            await Task.Factory.StartNew(async () =>
-//            {
-//                try
-//                {
-//                    //lock (RemoteMqttClient) {
-//                    //    //琛ㄧず鍚庨潰灏嗚繘琛岃繛鎺�
-//                    //    remoteMqttIsConnecting = true;
-
-//                    #region 鍒濆鍖栬繙绋婱qtt
-
-//                    RemoteMqttClient = new MqttFactory().CreateMqttClient();
-
-
-//                    //(1)褰揫杩炴帴浜戠鐨凪qtt鎴愬姛鍚嶿鎴栬�匸浠ュ強鍚庨潰App閫氳繃浜戠Mqtt杞彂鏁版嵁缁欑綉鍏虫垚鍔熷悗],澶勭悊鎺ユ敹鍒颁簯绔暟鎹寘鍝嶅簲鏃跺湪mqttServerClient_ApplicationMessageReceived杩欎釜鏂规硶澶勭悊
-//                    if (RemoteMqttClient.ApplicationMessageReceivedHandler == null)
-//                    {
-//                        RemoteMqttClient.UseApplicationMessageReceivedHandler((e) =>
-//                        {
-//                            try
-//                            {
-//                                var topic = e.ApplicationMessage.Topic;
-//                                //Utlis.WriteLine ("鍥炲Topic={0}", topic);
-//                                //if (topic == $"/BusGateWayToClient/{MqttInfoConfig.Instance.CurRemoteMACInfo.clientId}/Push/NotifySqueeze") {
-
-//                                //    var mMes = System.Text.Encoding.UTF8.GetString (e.ApplicationMessage.Payload);
-//                                //    //鏀跺埌鎸や笅绾夸富棰�
-//                                //    ReceiveNotifySqueezeAsync (mMes);
-//                                //} else
-
-//                                if (topic == $"/BusGateWayToClient/{MainPage.LoginUser.ID}" + PushNotifySqueeze)
-//                                {
-//                                    var mMes = System.Text.Encoding.UTF8.GetString(e.ApplicationMessage.Payload);
-//                                    //鏂版尋涓嬬嚎涓婚鏂规 鏀跺埌鎸や笅绾夸富棰�
-//                                    ReceiveNotifySqueezeAsync(mMes);
-//                                }
-//                                else if (topic == $"/BusGateWayToClient/{MqttInfoConfig.Instance.CurRemoteMACInfo.macMark}/NotifyBusGateWayInfoChange")
-//                                {//缃戝叧涓婄嚎锛岄渶瑕佹洿鏂癮eskey
-//                                    //鏀跺埌缃戝叧涓婄嚎娑堟伅涓婚
-//                                    ReceiveNotifyBusGateWayInfoChange();
-//                                }
-//                                else if (topic == $"/BusGateWayToClient/{MqttInfoConfig.Instance.CurRemoteMACInfo.macMark}/NotifyGateWayOffline")
-//                                {//缃戝叧鎺夌嚎                                                                                                                    //----绗簩姝ワ細璇诲彇璐﹀彿涓嬮潰鐨勭綉鍏冲垪琛�
-//                                    ReceiveNotifyGateWayOffline();
-//                                }
-//                                else if (topic == $"/BusGateWayToClient/{MqttInfoConfig.Instance.CurRemoteMACInfo.macMark}/Common/CheckGateway")
-//                                {
-
-//                                    var ss = System.Text.Encoding.UTF8.GetString(e.ApplicationMessage.Payload);
-//                                    ReceiveCheckGateway(ss);
-//                                }
-//                                else
-//                                {
-
-//                                    SetGatewayOnlineResetCheck();
-
-//                                    var packet = new Packet();
-
-//                                    if (!string.IsNullOrEmpty(mqttEncryptKey))
-//                                    {
-//                                        packet.Bytes = Shared.Securitys.EncryptionService.AesDecryptPayload(e.ApplicationMessage.Payload, mqttEncryptKey);
-//                                    }
-//                                    else
-//                                    {
-//                                        packet.Bytes = e.ApplicationMessage.Payload;
-//                                    }
-//                                    packet.IsLocal = false;
-//                                    packet.Manager();
-//                                }
-//                            }
-//                            catch { }
-//                        });
-//                    }
-
-//                    //(2)DisconnectedHandler
-//                    if (RemoteMqttClient.DisconnectedHandler == null)
-//                    {
-//                        RemoteMqttClient.UseDisconnectedHandler(async (e) =>
-//                        {
-//                            MainPage.Log($"杩滅▼杩炴帴鏂紑");
-//                            isSubscribeSuccess = false;
-//                            await DisConnectRemoteMqttClient("UseDisconnectedHandler");
-
-//                        });
-//                    }
-//                    //(3)ConnectedHandler
-//                    if (RemoteMqttClient.ConnectedHandler == null)
-//                    {
-//                        RemoteMqttClient.UseConnectedHandler(async (e) =>
-//                        {
-//                            IfNeedReadAllDeviceStatus = true;
-//                            bNeedStartTip = true;//
-//                            bNeedConnectTip = true;
-//                            MainPage.Log($"============>Mqtt杩滅▼杩炴帴鎴愬姛");
-//                            SendPushSignOut();
-
-
-//                            //if (CommonPage.IsRemote) {
-//                            //    Utlis.ShowAppLinkStatus (AppLinkStatus.CloudLink);
-//                            //}
-//                            //if (MqttInfoConfig.Instance.CurRemoteMACInfo != null) {
-//                            //    IsGatewayOnline = MqttInfoConfig.Instance.CurRemoteMACInfo.isValid != "InValid";
-//                            //    if (!IsGatewayOnline) {
-//                            //        //缃戝叧涓嶅湪绾�
-//                            //        if (CommonPage.IsRemote) {
-//                            //            Utlis.ShowAppLinkStatus (AppLinkStatus.CloudOffline);
-//                            //            MainPage.AddTip (Language.StringByID (Shared.SimpleControl.R.MyInternationalizationString.RemoteFailedGatewayOffline));
-//                            //            //鍙戦�佷竴娆heckGateway涓婚
-//                            //            MqttRemoteSend (new byte [] { 0 }, 3);
-//                            //        }
-//                            //    } else {
-//                            //        //缃戝叧鍦ㄧ嚎
-//                            //        //閲嶆柊涓�娆℃墍鏈夎澶囩姸鎬�
-//                            //        CheckIfNeedReadAllDeviceStatus ();
-//                            //        //
-//                            //        //MqttRemoteSend (new byte [] { 0 }, 3);
-//                            //        if (CommonPage.IsRemote) {
-//                            //            MainPage.AddTip (Language.StringByID (Shared.SimpleControl.R.MyInternationalizationString.LinkSuccess));
-//                            //        }
-//                            //    }
-//                            //}
-
-//                            if (CommonPage.IsRemote)
-//                            {
-//                                Utlis.ShowAppLinkStatus(AppLinkStatus.CloudLink);
-//                                MainPage.AddTip(Language.StringByID(Shared.SimpleControl.R.MyInternationalizationString.LinkSuccess));
-//                                //
-//                                //MqttRemoteSend (new byte [] { 0 }, 3);
-//                                ////璇诲彇鎼滅储缃戝叧锛屽垽鏂綉鍏虫槸鍚﹀湪绾�
-//                                //CheckGatewaysIfOnline ();
-//                                ////杩炴帴鎴愬姛鍚庢娴嬫槸鍚﹂渶瑕侀�氳繃杩滅▼鑾峰彇Key
-//                                //CheckIfNeedGetLocalPasswordFromRemote ();
-//                            }
-
-//                        });
-//                    }
-//                    #endregion
-
-//                    //}
-
-//                    //(4)===========寮�濮嬭繛鎺ヨ繃绋�==========
-//                    //MainPage.Log ($"CheckMQTTConnectAsync");
-//                    //涔嬪墠宸茬粡鑾峰彇鍙傛暟鎴愬姛杩�
-//                    if (MqttInfoConfig.Instance.IfGetMqttInfoSuccess)
-//                    {
-//                        //鍒ゆ柇鏄惁闇�瑕侀噸鏂拌幏鍙�
-//                        await CheckMQTTConnectAsync();
-//                    }
-//                    else
-//                    {
-//                        //寮�濮嬭幏鍙栬繙绋嬭繛鎺ュ弬鏁�
-//                        await StartMQTTGetInfo();
-//                    }
-
-//                }
-//                catch (Exception ex)
-//                {
-//                    MainPage.Log($"error:" + ex.Message);
-//                    if (IfDEBUG)
-//                    {
-//                        MainPage.ShowAlertOnMainThread("error: " + ex.Message);
-//                    }
-//                }
-//                finally
-//                {
-//                    //鏈�缁堣閲婃斁杩炴帴鐘舵��
-//                    remoteMqttIsConnecting = false;
-
-//                    //lock (SendLocker) {
-//                    //    remoteMqttIsConnecting = false;
-//                    //}
-
-//                    //杩炴帴鎴愬姛鎵嶅叧闂璍oading
-//                    if (remoteIsConnected)
-//                    {
-//                        MainPage.LoadingTipHide();
-//                        ERRORCount = 0;
-//                    }
-//                    else
-//                    {
-//                        ERRORCount++;
-//                        //姣�5娆¢噸鏂版彁绀轰竴娆�
-//                        if (ERRORCount > 5)
-//                        {
-//                            ERRORCount = 0;
-//                            MainPage.AddTip(Language.StringByID(Shared.SimpleControl.R.MyInternationalizationString.RemoteFailure));
-//                            MainPage.LoadingTipHide();
-
-//                        }
-//                    }
-
-//#if DEBUG
-//                    MainPage.Log($"StartCloudMqtt: 缁撴潫");
-//#endif
-//                }
-
-//            });
-//        }
-
-//        //static bool 
-
-
-//        /// <summary>
-//        /// 妫�鏌ョ綉鍏虫槸鍚﹀湪绾跨嚎绋�
-//        /// </summary>
-//        static System.Threading.Thread CheckGatewaysThead;
-
-//        /// <summary>
-//        /// 妫�鏌ョ綉鍏虫槸鍚﹀湪绾�
-//        /// </summary>
-//        static void CheckGatewaysIfOnline()
-//        {
-//            if (GatewayCommon == null) return;
-
-//            try
-//            {
-
-//                if (CheckGatewaysThead != null)
-//                    CheckGatewaysThead.Abort();
-
-//                CheckGatewaysThead = new System.Threading.Thread(() =>
-//                {
-//                    var returnBytes = Control.ControlBytesSendHasReturn(Command.ReadGateway, GatewayCommon.SubnetID, GatewayCommon.DeviceID, new byte[] { (byte)new Random().Next(255), (byte)new Random().Next(255) });
-//                    if (CommonPage.IsRemote)
-//                    {
-//                        if (returnBytes == null)
-//                        {
-//                            Application.RunOnMainThread(() =>
-//                            {
-//                                IsGatewayOnline = false;
-//                                Utlis.ShowAppLinkStatus(AppLinkStatus.CloudOffline);
-//                                MainPage.AddTip(Language.StringByID(Shared.SimpleControl.R.MyInternationalizationString.RemoteFailedGatewayOffline));
-//                                //鍙戦�佷竴娆heckGateway涓婚
-//                                MqttRemoteSend(new byte[] { 0 }, 3);
-//                            });
-//                        }
-//                        else
-//                        {
-//                            IsGatewayOnline = true;
-//                            Utlis.ShowAppLinkStatus(AppLinkStatus.CloudLink);
-//                            Console.WriteLine("ReadGateway success");
-//                            CheckIfNeedReadAllDeviceStatus();
-//                        }
-//                    }
-//                })
-//                { IsBackground = true };
-
-//                CheckGatewaysThead.Start();
-//            }
-//            catch
-//            {
-
-//            }
-//        }
-
-
-//        /// <summary>
-//        /// 妫�娴嬫槸鍚﹂渶瑕佸彂閫佸埛鏂拌幏鍙栨墍鏈夎澶囩殑鍛戒护
-//        /// </summary>
-//        static void CheckIfNeedReadAllDeviceStatus()
-//        {
-//            if (IfNeedReadAllDeviceStatus)
-//            {
-//                Utlis.WriteLine("ReadAllDeviceStatus");
-//                IfNeedReadAllDeviceStatus = false;
-//                Shared.SimpleControl.Phone.UserMiddle.ReadAllDeviceStatus();
-//            }
-
-//        }
-
-
-
-//        //杩炴帴閿欒娆℃暟缁熻
-//        static int ERRORCount = 0;
-
-//        /// <summary>
-//        /// 鏄惁闇�瑕佹彁绀�
-//        /// </summary>
-//        static bool bNeedConnectTip = true;
-
-//        /// <summary>
-//        /// 浠庡紑濮嬪埌杩炴帴鎴愬姛锛屽彧鎻愮ず1娆�
-//        /// </summary>
-//        static bool bNeedStartTip = true;
-//        /// <summary>
-//        /// 姝e湪鑾峰彇杩炴帴鍙傛暟...
-//        /// </summary>
-//        static void ShowStartTip()
-//        {
-//            if (bNeedStartTip)
-//            {
-//                bNeedStartTip = false;
-//                if (CommonPage.IsRemote)
-//                {
-//                    MainPage.LoadingTipShow(Language.StringByID(Shared.SimpleControl.R.MyInternationalizationString.GettingRemoteConnectionInfo));
-//                }
-//            }
-
-//            //if (CommonPage.IsRemote) {
-//            //    //MainPage.AddTip (Language.StringByID (Shared.SimpleControl.R.MyInternationalizationString.GettingRemoteConnectionInfo));
-//            //    MainPage.LoadingTipShow (Language.StringByID (Shared.SimpleControl.R.MyInternationalizationString.GettingRemoteConnectionInfo));
-//            //}
-//        }
-
-//        /// <summary>
-//        /// 妫�娴嬩箣鍓嶈幏鍙栫殑Mac涓庡綋鍓嶄綇瀹匨AC鏄惁涓�鑷� 涓嶄竴鑷翠粠鏂拌幏鍙�
-//        /// </summary>
-//        /// <returns></returns>
-//        static async Task CheckMQTTConnectAsync()
-//        {
-//            try
-//            {
-//                if (MqttInfoConfig.Instance.CurRemoteMACInfo != null && MqttInfoConfig.Instance.CurRemoteMACInfo.mac == UserConfig.Instance.GatewayMAC)
-//                {
-//                    await MQTTConnectAsync();
-//                }
-//                else
-//                {
-//                    //Mac 鍙樺寲浜嗛噸鏂拌幏鍙栧弬鏁�
-//                    await StartMQTTGetInfo();
-//                }
-//            }
-//            catch
-//            {
-//                MqttInfoConfig.Instance.IfGetMqttInfoSuccess = false;
-//            }
-
-//        }
-
-//        /// <summary>
-//        /// 寮�濮嬭幏鍙朚qtt 杩滅▼鍙傛暟
-//        /// </summary>
-//        /// <returns></returns>
-//        static async Task StartMQTTGetInfo()
-//        {
-//            ShowStartTip();
-
-//            if (!CommonPage.IsRemote)
-//            {
-//                return;
-//            }
-
-//            //--鍒ゆ柇鏄綋鍓嶆槸鍚﹀垎浜殑浣忓畢
-//            if (!UserConfig.Instance.CurrentRegion.IsOthreShare)
-//            {
-//                //涓昏处鍙疯幏鍙朚QTT 杩滅▼閾炬帴淇℃伅锛屽苟杩炴帴
-//                await GetMqttInfoAndMQTTConnectAsync();
-//            }
-//            else
-//            {
-//                //濡傛灉鏄垎浜繃鏉ョ殑浣忓畢 璧颁笅闈㈡祦绋�
-//                //--绗竴姝ワ細鑾峰彇褰撳墠浣忓垎浜畢缃戝叧淇℃伅骞惰繛鎺QTT
-//                await GetSingleHomeGatewayPaggerAndMQTTConnectAsync();
-//            }
-//        }
-
-
-//        /// <summary>
-//        /// 杩炴帴MQTT
-//        /// </summary>
-//        static async Task MQTTConnectAsync()
-//        {
-
-//            if (!CommonPage.IsRemote)
-//            {
-//                return;
-//            }
-
-//            if (MqttInfoConfig.Instance.CurRemoteMACInfo != null && MqttInfoConfig.Instance.mMqttInfo != null)
-//            {
-//                if (bNeedConnectTip)
-//                {
-//                    bNeedConnectTip = false;
-//                    MainPage.LoadingTipShow(Language.StringByID(Shared.SimpleControl.R.MyInternationalizationString.GetSuccessfullyStartConnecting));
-//                }
-
-//                try
-//                {
-
-//                    var url = MqttInfoConfig.Instance.mMqttInfo.connEmqDomainPort;
-
-//                    //#if DEBUG
-
-//                    //                    var zdURL = "15.185.137.39";
-//                    //                    if (url.Contains (zdURL)) {
-//                    //                        url = url.Replace (zdURL,"106.53.216.186");
-//                    //                    }
-
-//                    //#endif
-
-//                    var clientId = MqttInfoConfig.Instance.mMqttInfo.connEmqClientId;
-//                    var username = MqttInfoConfig.Instance.mMqttInfo.connEmqUserName;
-//                    var passwordRemote = MqttInfoConfig.Instance.mMqttInfo.connEmqPwd;
-//                    MqttInfoConfig.Instance.CurRemoteMACInfo.clientId = clientId;
-//                    //MqttInfoConfig.Instance.CurRemoteMACInfo.LoginAccessToken = MainPage.LoginUser.LoginTokenString;
-//                    //鑾峰彇鍙傛暟鎴愬姛锛屼繚瀛樺埌鏈湴骞舵爣璁颁负true
-
-//                    MqttInfoConfig.Instance.IfGetMqttInfoSuccess = true;
-//                    MqttInfoConfig.Instance.Save();
-
-//                    //Console.WriteLine ("Connect url: " + url);
-//                    mqttEncryptKey = MqttInfoConfig.Instance.CurRemoteMACInfo.isNewBusproGateway ? MqttInfoConfig.Instance.CurRemoteMACInfo.aesKey : "";
-
-//                    var options1 = new MQTTnet.Client.Options.MqttClientOptionsBuilder()
-//                                        .WithClientId(clientId)
-//                                        .WithTcpServer(url.Split(':')[1].Substring("//".Length), int.Parse(url.Split(':')[2]))
-//                                        .WithCredentials(username, passwordRemote)
-//                                        .WithCleanSession()
-//                                        .WithProtocolVersion(MQTTnet.Formatter.MqttProtocolVersion.V311)
-//                                        //.WithCommunicationTimeout (new TimeSpan (0, 0, 10))
-//                                        .WithCommunicationTimeout(new TimeSpan(0, 0, 5))
-//                                        //.WithCommunicationTimeout (new TimeSpan (0, 1, 0))
-//                                        .Build();
-
-//                    await DisConnectRemoteMqttClient("StartRemoteMqtt");
-
-//                    //await DisConnectRemoteMqttClientWhenStart ("StartRemoteMqtt");
-
-//                    var mResult = await RemoteMqttClient.ConnectAsync(options1);
-
-//                    if (mResult.ResultCode == MQTTnet.Client.Connecting.MqttClientConnectResultCode.Success)
-//                    {
-//                        remoteIsConnected = true;
-//                        IsDisConnectingWithSendCatch = false;
-//                        UnsupportedProtocolVersionCount = 0;
-//                    }
-//                    else
-//                    {
-//                        //閲嶆柊涓績鏈嶅姟鍣ㄨ幏鍙栧弬鏁版爣璁�
-//                        MqttInfoConfig.Instance.IfGetMqttInfoSuccess = false;
-//                    }
-
-//                }
-//                catch (Exception ex)
-//                {
-//                    if (ex.Message == UnsupportedProtocolVersion)
-//                    {
-//                        UnsupportedProtocolVersionCount++;
-//                        if (UnsupportedProtocolVersionCount > 5)
-//                        {
-//                            UnsupportedProtocolVersionCount = 0;
-//                            //杩炵画寮傚父5娆★紝閲嶆柊涓績鏈嶅姟鍣ㄨ幏鍙栧弬鏁版爣璁�
-//                            MqttInfoConfig.Instance.IfGetMqttInfoSuccess = false;
-//                        }
-
-
-//                        Console.WriteLine("Connect error UN: " + ex.Message);
-//                    }
-//                    else if (ex.Message == MqttCommunicationTimedOutException)
-//                    {
-//                        Console.WriteLine("Connect error TimedOut: " + ex.Message);
-//                    }
-//                    else
-//                    {
-//                        //閲嶆柊涓績鏈嶅姟鍣ㄨ幏鍙栧弬鏁版爣璁�
-//                        MqttInfoConfig.Instance.IfGetMqttInfoSuccess = false;
-//                        Console.WriteLine("Connect error: " + ex.Message);
-//                    }
-
-//                    //Console.WriteLine ("Connect error: " + ex.Message);
-//                    if (IfDEBUG)
-//                    {
-//                        MainPage.ShowAlertOnMainThread("Connect error: " + ex.Message);
-//                    }
-//                }
-//                finally
-//                {
-
-//                }
-
-//            }
-//            else
-//            {
-//                MqttInfoConfig.Instance.IfGetMqttInfoSuccess = false;
-//            }
-
-//        }
-
-//        static int UnsupportedProtocolVersionCount = 0;
-//        static readonly string MqttCommunicationTimedOutException = "Exception of type 'MQTTnet.Exceptions.MqttCommunicationTimedOutException' was thrown.";
-//        //
-//        static readonly string UnsupportedProtocolVersion = "Connecting with MQTT server failed (UnsupportedProtocolVersion).";
-
-
-
-//        /// <summary>
-//        /// 鏀跺埌缃戝叧涓婄嚎娑堟伅
-//        /// </summary>
-//        static void ReceiveNotifyBusGateWayInfoChange()
-//        {
-//            try
-//            {
-//                SetGatewayOnlineResetCheck();
-//                if (CommonPage.IsRemote)
-//                {
-//                    //#if DEBUG
-//                    MainPage.AddTip(Language.StringByID(Shared.SimpleControl.R.MyInternationalizationString.GatewayLoginOnline));
-//                    //#endif
-//                    CheckIfNeedReadAllDeviceStatus();
-//                }
-
-//                GetSingleHomeGatewayPaggerAndMQTTConnectAsync(false);
-
-//            }
-//            catch { }
-//        }
-
-//        /// <summary>
-//        /// 鏀跺埌缃戝叧鎺夌嚎淇℃伅
-//        /// </summary>
-//        static void ReceiveNotifyGateWayOffline()
-//        {
-//            MainPage.Log("============>Mqtt GateWayOffline");
-//            IsGatewayOnline = false;
-//            if (CommonPage.IsRemote)
-//            {
-//                Utlis.ShowAppLinkStatus(AppLinkStatus.CloudOffline);
-//                MainPage.AddTip(Language.StringByID(Shared.SimpleControl.R.MyInternationalizationString.GatewayOffline));
-
-//            }
-//        }
-
-
-//        /// <summary>
-//        /// 鏀跺埌鎸や笅绾挎帹閫�
-//        /// </summary>
-//        static void ReceiveNotifySqueezeAsync(string mMes)
-//        {
-
-//            if (mMes == PushSignStr) return;//鏄嚜宸辩殑鐧诲綍鎺ㄩ�佷笉澶勭悊
-
-//            //鏂紑杩滅▼杩炴帴
-//            CommonPage.IsRemote = false;
-//            if (!MainPage.LoginUser.IsLogin)
-//            {
-//                return;
-//            }
-
-//            DisConnectRemoteMqttClient("鎸や笅绾�");
-
-//            MainPage.LoginUser.LastTime = DateTime.MinValue;
-//            MainPage.LoginUser.SaveUserInfo();
-//            Room.Lists.Clear();
-//            ////鍒犻櫎鎺ㄩ�佹暟鎹�
-//            //var webclient = new System.Net.WebClient ();
-//            //webclient.Headers.Add (System.Net.HttpRequestHeader.Authorization, MainPage.LoginUser.LoginTokenString);
-//            //webclient.DownloadStringAsync (new Uri ("https://global.hdlcontrol.com/HangZhouHdlCloudApi/ZigbeeUsers/SignOut"));
-
-
-
-//            Application.RunOnMainThread(() =>
-//            {
-//                Utlis.ShowAppLinkStatus(AppLinkStatus.WiFi);
-//                new Shared.SimpleControl.Phone.AccountLogin(MainPage.LoginUser.AccountString, "").Show();
-//                SharedMethod.SharedMethod.CurPageLayout = null;
-//                //CommonPage.IsRemote = false;
-
-//                MainPage.LoadingTipHide();
-//                MainPage.Loading.Hide();
-
-//                new Alert(Language.StringByID(Shared.SimpleControl.R.MyInternationalizationString.Tip), Language.StringByID(Shared.SimpleControl.R.MyInternationalizationString.LoggedOnOtherDevices),
-//                    Language.StringByID(Shared.SimpleControl.R.MyInternationalizationString.Close)).Show();
-//            });
-
-//            //2020-06-30 鍒犻櫎鎺ㄩ�佹暟鎹�
-//            ForceUpdateUtlis.Current.SignOut();
-//#if HDL
-//            if (!String.IsNullOrEmpty (MainPage.LoginUser.AllVisionRegisterDevUserNameGuid)) {
-//                com.freeview.global.Video.Logout ();
-//            }///BusGateWayToClient/320c1fea-1866-4708-8277-e2321a4dd236/NotifyGateWayInfoChange
-//#endif
-
-
-//        }
-
-//        /// <summary>
-//        /// 鏀跺埌CheckGateway涓婚
-//        /// </summary>
-//        static void ReceiveCheckGateway(string mMes)
-//        {
-//            if (!CommonPage.IsRemote) return;
-
-//            Utlis.WriteLine("ReceiveCheckGateway锛�");
-
-//            if (MqttInfoConfig.Instance.CurRemoteMACInfo.isNewBusproGateway)
-//            {
-//                SetGatewayOnlineResetCheck();
-//            }
-//            else
-//            {
-
-//            }
-
-//            //CheckIfNeedReadAllDeviceStatus ();
-
-//            var obj = Newtonsoft.Json.JsonConvert.DeserializeObject<ResponsePack>(mMes);
-//            if (obj == null)
-//            {
-//                //SetGatewayOnlineResetCheck ();
-//                return;
-//            }
-//            switch (obj.StateCode)
-//            {
-//                case "HDLUdpDataForwardServerMqttClientNoOnLine":
-//                case "NoOnline":
-//                case "NetworkAnomaly"://涓嶅湪绾�
-//                    IsGatewayOnline = false;
-//                    MainPage.AddTip(Language.StringByID(Shared.SimpleControl.R.MyInternationalizationString.RemoteFailedGatewayOffline));
-//                    Utlis.ShowAppLinkStatus(AppLinkStatus.CloudOffline);
-
-//                    break;
-//                case "NoRecord"://MAC涓嶆纭�
-//                    IsGatewayOnline = false;
-//                    MainPage.AddTip(Language.StringByID(Shared.SimpleControl.R.MyInternationalizationString.MACError));
-//                    Utlis.ShowAppLinkStatus(AppLinkStatus.CloudOffline);
-//                    break;
-//                case "Success":
-//                    SetGatewayOnlineResetCheck();
-//                    IsGatewayOnline = true;
-//                    //MainPage.AddTip (UserConfig.Instance.CurrentRegion.Name + ":" + Language.StringByID (Shared.SimpleControl.R.MyInternationalizationString.LinkSuccess));
-//                    break;
-//                default:
-//                    IsGatewayOnline = false;
-//                    MainPage.AddTip(Language.StringByID(Shared.SimpleControl.R.MyInternationalizationString.LinkLoser));
-//                    Utlis.ShowAppLinkStatus(AppLinkStatus.CloudOffline);
-//                    break;
-//            }
-
-//        }
-//        static RemoteMACInfo CurRemoteMACInfo;
-
-//        /// <summary>
-//        /// 
-//        /// </summary>
-//        /// <param name="message">闄勫姞鏁版嵁鍖�</param>
-//        /// <param name="optionType">鎿嶄綔绫诲瀷锛�0=缃戝叧鎺у埗锛�1=璁㈤槄缃戝叧鏁版嵁;2=璁㈤槄缃戝叧涓婄嚎鏁版嵁</param>
-//        /// <returns></returns>
-//        public static async Task MqttRemoteSend(byte[] message, int optionType = 0)
-//        {
-//            //return;
-
-//            try
-//            {
-//                string topicName;
-//                switch (optionType)
-//                {
-//                    case 0:
-//                        topicName = $"/ClientToBusGateWay/{CurRemoteMACInfo.macMark}/Common/ON";
-//                        if (!string.IsNullOrEmpty(mqttEncryptKey))
-//                        {
-//                            message = Shared.Securitys.EncryptionService.AesEncryptPayload(message, mqttEncryptKey);
-//                        }
-//                        await RemoteMqttClient.PublishAsync(new MqttApplicationMessage { Topic = topicName, Payload = message, Retain = false, QualityOfServiceLevel = MQTTnet.Protocol.MqttQualityOfServiceLevel.AtMostOnce });
-//                        break;
-//                    case 3:
-//                        topicName = $"/ClientToBusGateWay/{MqttInfoConfig.Instance.CurRemoteMACInfo.macMark}/Common/CheckGateway";
-//                        MainPage.Log("CheckGateway");
-//                        await RemoteMqttClient.PublishAsync(new MqttApplicationMessage { Topic = topicName, Retain = false, QualityOfServiceLevel = MQTTnet.Protocol.MqttQualityOfServiceLevel.AtMostOnce });
-//                        break;
-//                    case 4://鍙戝竷鏂版柟妗堢殑鎸や笅绾夸富棰�
-//                        topicName = $"/BusGateWayToClient/{MainPage.LoginUser.ID}" + PushNotifySqueeze;
-//                        //message = System.Text.Encoding.UTF8.GetBytes (PushSignStr);
-//                        await RemoteMqttClient.PublishAsync(new MqttApplicationMessage { Topic = topicName, Payload = message, Retain = false, QualityOfServiceLevel = MQTTnet.Protocol.MqttQualityOfServiceLevel.AtMostOnce });
-//                        break;
-//                }
-//            }
-//            catch (Exception e)
-//            {
-//                //Utlis.WriteLine ($"============>Mqtt MqttRemoteSend catch");
-//                if (!IsDisConnectingWithSendCatch)
-//                {
-//                    IsDisConnectingWithSendCatch = true;
-//                    await DisConnectRemoteMqttClient("SendCatch");
-//                }
-//            }
-//        }
-//        /// <summary>
-//        /// SendCatch 鍚庢墽琛屼竴娆℃柇寮�鎿嶄綔
-//        /// </summary>
-//        static bool IsDisConnectingWithSendCatch = false;
-
-
-//        /// <summary>
-//        /// 鏄惁闇�瑕佽鍙栦竴娆℃墍鏈夎澶囩姸鎬�
-//        /// </summary>
-//        static bool IfNeedReadAllDeviceStatus = true;
-//        public static bool IsGatewayOnline = true;
-//        //static int CheckGatewayCount = 0;
-//        //static DateTime mCheckGatewayTime;
-
-
-//        /// <summary>
-//        /// 璁剧疆缃戝叧鍦ㄧ嚎鏍囧織锛屽苟閲嶇疆CheckGateway鍙傛暟
-//        /// </summary>
-//        static void SetGatewayOnlineResetCheck()
-//        {
-
-//            //mCheckGatewayTime = DateTime.Now;
-//            //CheckGatewayCount = 0;
-//            if (CommonPage.IsRemote)
-//            {
-//                if (!IsGatewayOnline)
-//                {
-//                    IsGatewayOnline = true;
-//                    Utlis.ShowAppLinkStatus(AppLinkStatus.CloudLink);
-//                }
-//            }
-//        }
-
-
-//        /// <summary>
-//        /// 涓昏处鍙疯幏鍙朚QTT 杩滅▼閾炬帴淇℃伅锛屽苟杩炴帴
-//        /// </summary>
-//        /// <returns></returns>
-//        static async Task GetMqttInfoAndMQTTConnectAsync()
-//        {
-//            var mqttInfoRequestPar = new GetConnMqttInfoObj()
-//            {
-//                LoginAccessToken = MainPage.LoginUser.LoginTokenString,
-//                PlatformStr = GetRandomKey(),
-//                PublishPayloadJsonStr = PushSignStr,
-//                Mac = UserConfig.Instance.GatewayMAC,
-//            };
-//            var mqttInfoRequestResult = MainPage.RequestHttpsNew(API.GetConnMqttInfo, Newtonsoft.Json.JsonConvert.SerializeObject(mqttInfoRequestPar));
-
-//            if (mqttInfoRequestResult != null && mqttInfoRequestResult.ResponseData != null)
-//            {
-//                try
-//                {
-//                    var mqttInfoRequestResult_Obj = Newtonsoft.Json.JsonConvert.DeserializeObject<MqttInfo>(mqttInfoRequestResult.ResponseData.ToString());
-
-//                    if (mqttInfoRequestResult_Obj != null)
-//                    {
-//                        MqttInfoConfig.Instance.mMqttInfo = mqttInfoRequestResult_Obj;
-//                        string url = mqttInfoRequestResult_Obj.connEmqDomainPort;
-//                        string clientId = mqttInfoRequestResult_Obj.connEmqClientId;
-//                        string username = mqttInfoRequestResult_Obj.connEmqUserName;
-//                        string passwordRemote = mqttInfoRequestResult_Obj.connEmqPwd;
-//                        if (mqttInfoRequestResult_Obj.AccountAllGateways != null && mqttInfoRequestResult_Obj.AccountAllGateways.Count > 0)
-//                        {
-//                            //----绗簩姝ユ壘鍑烘槸鍚﹀瓨鍦ㄥ尮閰嶅綋鍓嶄綇瀹呯殑mac锛屽瓨鍦ㄥ啀杩涜杩滅▼銆�
-//                            MqttInfoConfig.Instance.CurRemoteMACInfo = mqttInfoRequestResult_Obj.AccountAllGateways.Find((obj) => obj.mac == UserConfig.Instance.GatewayMAC);
-//                            if (MqttInfoConfig.Instance.CurRemoteMACInfo != null)
-//                            {
-//                                //MqttInfoConfig.Instance.CurRemoteMACInfo.LoginAccessToken = MainPage.LoginUser.LoginTokenString;
-//                                MqttInfoConfig.Instance.CurRemoteMACInfo.clientId = clientId;
-//                                //----绗笁姝� 寮�濮嬭繛鎺�
-//                                await MQTTConnectAsync();
-
-//                            }
-//                        }
-//                        else
-//                        {
-//                            //Utlis.WriteLine ("============>Please wait, failed to get gateway parameters.");
-//                        }
-
-//                    }
-//                    else
-//                    {
-//                        //Utlis.WriteLine ("============>Please wait, failed to get user parameters.");
-//                    }
-//                }
-//                catch { }
-//            }
-//            else
-//            {
-//                //Utlis.WriteLine ("Please wait, failed to get parameters.");
-//                //MainPage.AddTip ("Please wait, failed to get parameters.");
-//            }
-
-//        }
-
-//    }
-//}
diff --git a/HDL_ON/Common/Utlis.cs b/HDL_ON/Common/Utlis.cs
new file mode 100644
index 0000000..e5e76f9
--- /dev/null
+++ b/HDL_ON/Common/Utlis.cs
@@ -0,0 +1,276 @@
+锘縰sing System;
+using Shared;
+using System.Text.RegularExpressions;
+using System.Text;
+
+namespace HDL_ON
+{
+    /// <summary>
+    /// 甯哥敤宸ュ叿绫�
+    /// </summary>
+    public class Utlis
+    {
+		/// <summary>
+		/// 鍏ㄥ眬鎵撳嵃
+		/// </summary>
+		public static void WriteLine(object mes)
+        {
+#if DEBUG
+            Console.WriteLine(mes);
+#endif
+        }
+
+        /// <summary>
+        /// 寮圭獥鎻愮ず
+        /// </summary>
+        /// <param name="mes"></param>
+        public static void ShowAlertOnMainThread(string mes)
+        {
+            Application.RunOnMainThread(() => {
+                new Alert("", mes, Language.StringByID(StringId.Close)).Show();
+            });
+        }
+
+		/// <summary>
+		/// ShowTip
+		/// </summary>
+		/// <param name="mes"></param>
+		/// <param name="closeTime">鍏抽棴鏃堕棿</param>
+		public static void ShowTip(String mes, int closeTime = 2)
+		{
+			var tip = new Tip()
+			{
+				Text = mes,
+				CloseTime = closeTime,
+				Direction = AMPopTipDirection.None
+			};
+			tip.Show(MainPage.BaseView);
+		}
+
+
+		#region 鈻� 鍚勭姝e垯妫�娴媉______________________
+		/// <summary>
+		/// 鐢ㄤ簬涓浗澶ч檰楠岃瘉鎵嬫満鍙锋鍒欒〃杈惧紡
+		/// 浠�1寮�澶达紝11浣�
+		/// </summary>
+		public static string PhoneRegexStr = "^[1][0-9]{10}$";
+		/// <summary>
+		/// 鐢ㄤ簬楠岃瘉闈炰腑鍥藉ぇ闄嗘墜鏈哄彿姝e垯琛ㄨ揪寮�
+		/// </summary>
+		public static string PhoneForForeignRegexStr = "^[0-9]*$";
+		/// <summary>
+		/// 鐢ㄤ簬楠岃瘉閭姝e垯琛ㄨ揪寮�
+		/// </summary>
+		public static string EmailRegexStr = "^\\s*([A-Za-z0-9_-]+(\\.\\w+)*@(\\w+\\.)+\\w{2,5})\\s*$";
+
+		/// <summary>
+		/// 鍒ゆ柇鏄惁鍖呭惈澶у啓瀛楁瘝
+		/// </summary>
+		/// <returns><c>true</c>, if contain upper was checked, <c>false</c> otherwise.</returns>
+		/// <param name="value">Value.</param>
+		public static bool CheckContainUpper(string value)
+		{
+			Regex reg = new Regex("[A-Z]+");
+			return reg.IsMatch(value);
+		}
+
+		/// <summary>
+		/// 鍒ゆ柇鏄惁鍖呭惈灏忓啓瀛楁瘝
+		/// </summary>
+		/// <returns><c>true</c>, if contain lower was checked, <c>false</c> otherwise.</returns>
+		/// <param name="value">Value.</param>
+		public static bool CheckContainLower(string value)
+		{
+			Regex reg = new Regex("[a-z]+");
+			return reg.IsMatch(value);
+		}
+
+		/// <summary>
+		/// 鍒ゆ柇鏄惁鍖呭惈鏁板瓧
+		/// </summary>
+		/// <returns><c>true</c>, if contain lower was checked, <c>false</c> otherwise.</returns>
+		/// <param name="value">Value.</param>
+		public static bool CheckContainNum(string value)
+		{
+			Regex reg = new Regex("[0-9]+");
+			return reg.IsMatch(value);
+		}
+
+		/// <summary>
+		/// 鍒ゆ柇鏄惁鍖呭惈绗﹀彿
+		/// </summary>
+		/// <returns><c>true</c>, if contain lower was checked, <c>false</c> otherwise.</returns>
+		/// <param name="value">Value.</param>
+		public static bool CheckContainSymbol(string value)
+		{
+			Regex reg = new Regex("([^a-z0-9A-Z])+");
+			return reg.IsMatch(value);
+		}
+
+		/// <summary>
+		/// 妫�娴嬮偖绠辨槸鍚﹀悎娉�
+		/// </summary>
+		/// <param name="email"></param>
+		/// <returns></returns>
+		public static bool CheckEmail(string email)
+		{
+			Regex reg = new Regex(EmailRegexStr);
+			return reg.IsMatch(email);
+		}
+
+		/// <summary>
+		/// 妫�娴嬫墜鏈哄彿鏄惁鍚堟硶
+		/// </summary>
+		/// <param name="phoneNumber">鎵嬫満鍙�</param>
+		/// <param name="areaCode">鍦板尯浠g爜</param>
+		/// <returns></returns>
+		public static bool CheckPhoneNumber(string phoneNumber, string areaCode)
+		{
+			//鏍¢獙澶栧浗鎵嬫満鍙�
+			if (areaCode != "86")
+			{
+				Regex reg = new Regex(PhoneForForeignRegexStr);
+				return reg.IsMatch(phoneNumber);
+            }
+            else
+            {
+				//鏍¢獙鍥藉唴鎵嬫満鍙�
+				Regex reg = new Regex(PhoneRegexStr);
+				return reg.IsMatch(phoneNumber);
+			}
+		}
+
+		#endregion
+
+		/// <summary>
+		/// TextButton
+		/// 鏍规嵁鏂囨湰,璁$畻鎸夐挳瀹冨疄闄呯殑瀹藉害
+		/// </summary>
+		/// <param name="btn"></param>
+		/// <param name="extendWidth">琛ュ厖瀹藉害</param>
+		/// <returns></returns>
+		public static int GetRealWidthByTextButton(Button btn, int extendWidth = 1)
+		{
+			if (string.IsNullOrEmpty(btn.Text)) { return Application.GetRealWidth(extendWidth); }
+
+			return btn.GetTextWidth() + Application.GetRealWidth(extendWidth);
+		}
+
+		/// <summary>
+		/// 鏍规嵁鏂囨湰,璁$畻鎸夐挳瀹冨疄闄呯殑瀹藉害
+		/// </summary>
+		/// <returns></returns>
+		public static int GetRealWidthByText(Button btn)
+		{
+			if (string.IsNullOrEmpty(btn.Text)) { return Application.GetRealWidth(4); }
+#if __IOS__
+			//闇�瑕佸鍔犱竴涓宸��
+			return btn.GetTextWidth() + Application.GetRealWidth(8);
+#else
+            //闇�瑕佸鍔犱竴涓宸��
+            return btn.GetTextWidth() + Application.GetRealWidth(4);
+#endif
+		}
+
+
+		/// <summary>
+		/// 鐢熸垚闅忔満瀛楃涓�
+		/// </summary>
+		/// <param name="length">瀛楃涓茬殑闀垮害</param>
+		/// <returns></returns>
+		public static string CreateRandomString(int length)
+		{
+			// 鍒涘缓涓�涓猄tringBuilder瀵硅薄瀛樺偍瀵嗙爜
+			StringBuilder sb = new StringBuilder();
+			//浣跨敤for寰幆鎶婂崟涓瓧绗﹀~鍏呰繘StringBuilder瀵硅薄閲岄潰鍙樻垚14浣嶅瘑鐮佸瓧绗︿覆
+			for (int i = 0; i < length; i++)
+			{
+				Random random = new Random(Guid.NewGuid().GetHashCode());
+				//闅忔満閫夋嫨閲岄潰鍏朵腑鐨勪竴绉嶅瓧绗︾敓鎴�
+				switch (random.Next(3))
+				{
+					case 0:
+						//璋冪敤鐢熸垚鐢熸垚闅忔満鏁板瓧鐨勬柟娉�
+						sb.Append(createNum());
+						break;
+					case 1:
+						//璋冪敤鐢熸垚鐢熸垚闅忔満灏忓啓瀛楁瘝鐨勬柟娉�
+						sb.Append(createSmallAbc());
+						break;
+					case 2:
+						//璋冪敤鐢熸垚鐢熸垚闅忔満澶у啓瀛楁瘝鐨勬柟娉�
+						sb.Append(createBigAbc());
+						break;
+				}
+			}
+			return sb.ToString();
+		}
+
+		/// <summary>
+		/// 鐢熸垚鍗曚釜闅忔満鏁板瓧
+		/// </summary>
+		static int createNum()
+		{
+			Random random = new Random(Guid.NewGuid().GetHashCode());
+			int num = random.Next(10);
+			return num;
+		}
+
+		/// <summary>
+		/// 鐢熸垚鍗曚釜澶у啓闅忔満瀛楁瘝
+		/// </summary>
+		static string createBigAbc()
+		{
+			//A-Z鐨� ASCII鍊间负65-90
+			Random random = new Random(Guid.NewGuid().GetHashCode());
+			int num = random.Next(65, 91);
+			string abc = Convert.ToChar(num).ToString();
+			return abc;
+		}
+
+		/// <summary>
+		/// 鐢熸垚鍗曚釜灏忓啓闅忔満瀛楁瘝
+		/// </summary>
+		static string createSmallAbc()
+		{
+			//a-z鐨� ASCII鍊间负97-122
+			Random random = new Random(Guid.NewGuid().GetHashCode());
+			int num = random.Next(97, 123);
+			string abc = Convert.ToChar(num).ToString();
+			return abc;
+		}
+
+        /// <summary>
+        /// 
+        /// </summary>
+        /// <param name="unixTimeStamp"></param>
+        /// <returns></returns>
+        public static DateTime UnixToDateTime(long unixTimeStamp)
+        {
+            DateTime startTime = TimeZone.CurrentTimeZone.ToLocalTime(new DateTime(1970, 1, 1)); // 褰撳湴鏃跺尯
+            return startTime.AddSeconds(unixTimeStamp);
+        }
+
+        /// <summary>
+        /// 
+        /// </summary>
+        /// <param name="unixTimeStamp"></param>
+        /// <returns></returns>
+        public static long DateTimeToUnix(DateTime dateTime)
+        {
+            DateTime startTime = TimeZone.CurrentTimeZone.ToLocalTime(new DateTime(1970, 1, 1)); // 褰撳湴鏃跺尯
+            return (long)(dateTime - startTime).TotalSeconds; // 鐩稿樊绉掓暟
+        }
+
+
+		/// <summary>
+		/// 鑾峰彇璇锋眰鎻愪氦鐨勮瑷�鍙傛暟
+		/// </summary>
+		public static string GetPostLanguageType()
+		{
+			return Language.CurrentLanguage == "Chinese" ? LanguageTypeEnum.CHINESE.ToString() : LanguageTypeEnum.ENGLISH.ToString();
+		}
+
+	}
+
+}
diff --git a/HDL_ON/DAL/DriverLayer/A_Protocol_Common.cs b/HDL_ON/DAL/DriverLayer/A_Protocol_Common.cs
new file mode 100644
index 0000000..6cf95ed
--- /dev/null
+++ b/HDL_ON/DAL/DriverLayer/A_Protocol_Common.cs
@@ -0,0 +1,87 @@
+锘匡豢using System;
+using System.Text;
+
+namespace HDL_ON.DriverLayer
+{
+    public class A_Protocal_Common
+    {
+
+
+
+    }
+
+    /// <summary>
+    /// 鏈湴閫氳鏁版嵁
+    /// </summary>
+    public class LocalCommunicationData
+    {
+        public string Topic;
+        public int Length;
+
+        public string BodyDataString;
+
+    }
+
+    /// <summary>
+    /// 閫氳鍥炲鏈夋晥鏁版嵁
+    /// </summary>
+    public class ResponsePack
+    {
+        public string id;
+        public string code;
+        public string time_stamp;
+        public object objects;
+    }
+
+    /// <summary>
+    /// 閫氳涓婚
+    /// </summary>
+    public class CommunicationTopic
+    {
+        static CommunicationTopic _ct;
+        public static CommunicationTopic ct
+        {
+            get
+            {
+                if (_ct == null)
+                {
+                    _ct = new CommunicationTopic();
+                }
+                return _ct;
+            }
+        }
+        /// <summary>
+        /// 鎼滅储鏈湴缃戝叧
+        /// </summary>
+        public const string SearchLoaclGateway = "/user/all/custom/gateway/search";
+        /// <summary>
+        /// 鎼滅储缃戝叧鍥炲
+        /// </summary>
+        public const string SearchLoaclGatewayReply = "/user/all/custom/gateway/search_reply";
+        /// <summary>
+        /// 璋冭瘯杞欢涓婁紶oid鍒楄〃
+        /// </summary>
+        public const string AddDeviceOids = "/user/onpro/custom/device/add";
+        /// <summary>
+        /// 璋冭瘯杞欢涓婁紶鍔熻兘鍒楄〃
+        /// </summary>
+        public const string AddFunctions = "/user/onpro/custom/function/attribute/add";
+        /// <summary>
+        /// 璋冭瘯杞欢鑾峰彇appOid鍒楄〃
+        /// </summary>
+        public const string BusPcGetAppOids = "/user/onpro/custom/device/list/get";
+        /// <summary>
+        /// 璋冭瘯杞欢鑾峰彇appSid鍒楄〃
+        /// </summary>
+        public const string BusPcGetAppSids = "/user/onpro/custom/function/list/get";
+
+
+        public string ControlFunctionTopic
+        {
+            get
+            {
+                return $"/base/{Control.Ins.GatewayId}/thing/property/down";
+            }
+        }
+    }
+}
\ No newline at end of file
diff --git a/HDL_ON/DriverLayer/CRC.cs b/HDL_ON/DAL/DriverLayer/CRC.cs
similarity index 98%
rename from HDL_ON/DriverLayer/CRC.cs
rename to HDL_ON/DAL/DriverLayer/CRC.cs
index 636025a..242ad6f 100644
--- a/HDL_ON/DriverLayer/CRC.cs
+++ b/HDL_ON/DAL/DriverLayer/CRC.cs
@@ -2,7 +2,7 @@
 using System.Collections.Generic;
 using System.Text;
 
-namespace HDL_ON
+namespace HDL_ON.DriverLayer
 {
     public class CRC
     {
diff --git a/HDL_ON/DAL/DriverLayer/Control.cs b/HDL_ON/DAL/DriverLayer/Control.cs
new file mode 100644
index 0000000..a2c52c7
--- /dev/null
+++ b/HDL_ON/DAL/DriverLayer/Control.cs
@@ -0,0 +1,367 @@
+using System;
+using System.Collections.Generic;
+using System.Text;
+using HDL_ON.Entity;
+
+namespace HDL_ON.DriverLayer
+{
+    /// <summary>
+    /// 閫氳鏂瑰紡
+    /// </summary>
+    public enum CommunicationMode
+    {
+        none,
+        /// <summary>
+        /// 鏈湴udp
+        /// </summary>
+        local_BusUdp,
+        /// <summary>
+        /// 鏈湴tcp瀹㈡埛绔�
+        /// </summary>
+        tcp_local_client,
+    }
+
+    public class Control
+    {
+        static Control _control;
+        public static Control Ins
+        {
+            get
+            {
+                if (_control == null)
+                {
+                    _control = new Control();
+                }
+                return _control;
+            }
+        }
+        int _msg_id = 1;
+        /// <summary>
+        /// 閫氳ID
+        /// </summary>
+        public int msg_id
+        {
+            get
+            {
+                return _msg_id++;
+            }
+        }
+        /// <summary>
+        /// 鑾峰彇13浣嶆椂闂存埑
+        /// </summary>
+        /// <returns></returns>
+        public string Get_TimeStamp()
+        {
+            long t = DateTime.Now.Ticks / 10000;
+            return t.ToString(); 
+        }
+
+        bool _gatewayOnline = false;
+        /// <summary>
+        /// 缃戝叧鏄惁鍦ㄧ嚎
+        /// </summary>
+        public bool GatewayOnline {
+            get
+            {
+                return _gatewayOnline;
+            }
+            set
+            {
+                _gatewayOnline = value;
+                //淇敼涓婚〉杩炴帴鐘舵��
+                UI.HomePage.LoadEvent_CheckLinkStatus();
+            }
+        }
+        /// <summary>
+        /// 缃戝叧閫氳ID
+        /// </summary>
+        public string GatewayId;
+        /// <summary>
+        /// 鏄惁涓鸿繙绋嬭繛鎺�
+        /// </summary>
+        public bool IsRemote = false;
+        /// <summary>
+        /// 閫氳鍦板潃IP
+        /// </summary>
+        public string reportIp = "255.255.255.255";
+        /// <summary>
+        /// tcp鏈嶅姟绔�
+        /// </summary>
+        public Control_TcpServer myTcpServer = null;
+        /// <summary>
+        /// tcp瀹㈡湇绔�
+        /// </summary>
+        public Control_TcpClient myTcpClient = null;
+        /// <summary>
+        /// 鏈湴udp
+        /// </summary>
+        public Control_Udp myUdp = null;
+
+        /// <summary>
+        /// 閫氳鏂瑰紡
+        /// </summary>
+        public CommunicationMode communicationMode;
+
+        /// <summary>
+        /// 鎵撳紑tcp鏈嶅姟绔�
+        /// </summary>
+        public void OpenTcpServer()
+        {
+            myTcpServer = new Control_TcpServer();
+            myTcpServer.OpenServer();
+        }
+
+        /// <summary>
+        /// 鎵撳紑Udp
+        /// </summary>
+        public void OpenUdp(int port)
+        {
+            if (myUdp == null)
+            {
+                myUdp = new Control_Udp();
+            }
+
+            UdpSocket._BusSocket.Start(port);
+        }
+        /// <summary>
+        /// 鍏抽棴udp
+        /// </summary>
+        public void CloseUdp()
+        {
+            if(myUdp!= null)
+            {
+                myUdp = null;
+            }
+            UdpSocket._BusSocket.Stop();
+        }
+
+        /// <summary>
+        /// 鎵撳紑tcp瀹㈡湇绔�
+        /// </summary>
+        public void OpenTcpClent()
+        {
+            if (myTcpClient == null)
+            {
+                myTcpClient = new Control_TcpClient(reportIp);
+                myTcpClient.Connect();
+            }
+        }
+
+        ///// <summary>
+        ///// 鏀瑰彉閫氳鏂瑰紡
+        ///// </summary>
+        //public void ChangeCommunicationMode(CommunicationMode communicationMode)
+        //{
+        //    this.communicationMode = communicationMode;
+        //}
+
+        /// <summary>
+        /// 鎼滅储鏈湴缃戝叧鍒楄〃
+        /// </summary>
+        public void SearchLoaclGateway()
+        {
+            OpenUdp(DB_ResidenceData.residenceData.GatewayType == 0 ? 6000 : 8585);
+
+            if (DB_ResidenceData.residenceData.GatewayType == 0)
+            {
+                myUdp.ControlBytesSend(Command.ReadGateway, 255, 255, new byte[] { (byte)new Random().Next(255), (byte)new Random().Next(255) });
+            }
+            else if (DB_ResidenceData.residenceData.GatewayType == 1)
+            {
+                myUdp.SearchLocalGateway();
+            }
+        }
+
+        /// <summary>
+        /// 鍦烘櫙鎺у埗鍏ュ彛
+        /// </summary>
+        public void ControlScene(Scene scene)
+        {
+            if(myUdp!=null)
+            {
+                myUdp.ControlBusScenes(scene);
+            }
+            if(myTcpClient!= null)
+            {
+                ControlAProtocolScene(scene);
+            }
+        }
+
+        /// <summary>
+        /// 鍙戦�佸懡浠�
+        /// 鑷姩鍒ゆ柇鏄惁涓篈鍗忚璁惧锛�
+        /// 涓嶆槸A鍗忚锛岃嚜鍔ㄨ浆鍖朾us鍛戒护鏁版嵁
+        /// </summary>
+        /// <param name="commandString"></param>
+        /// <param name="function"></param>
+        /// <returns></returns>
+        public void SendWriteCommand(Function function, Dictionary<string, string> commandDictionary)
+        {
+            function.usageCount++;
+            function.refreshTime = DateTime.Now;
+            //杩滅▼閫氳
+            if (Ins.IsRemote)
+            {
+                //ALink鎺у埗
+                if (DB_ResidenceData.residenceData.GatewayType == 0)
+                {
+
+                }
+                //Bus鎺у埗
+                else
+                {
+
+                }
+            }
+            //鏈湴閫氳
+            else
+            {
+                //ALink鎺у埗
+                if (DB_ResidenceData.residenceData.GatewayType == 0)
+                {
+                    try
+                    {
+                        if (myUdp != null)
+                        {
+                            myUdp.WriteBusData(function, commandDictionary);
+                        }
+                    }
+                    catch (Exception ex)
+                    {
+                        MainPage.Log($"鍙戦�佹暟鎹紓甯�: {ex.Message}");
+                    }
+                }
+                //Bus鎺у埗
+                else
+                {
+                    if (myUdp != null)
+                    {
+                        var functionControlDataObj = function.GetControlSendData(commandDictionary);
+                        var functionControlDataJson = Newtonsoft.Json.JsonConvert.SerializeObject(functionControlDataObj);
+                        var sendBytes = Ins.ConvertSendBodyData(CommunicationTopic.ct.ControlFunctionTopic, functionControlDataJson);
+                        myUdp.SendLocalHdlLinkData(sendBytes);
+                        //MainPage.Log($"鍙戦�佹湰鍦癏DL-Link鏁版嵁{functionControlDataJson}\r\n");
+                    }
+                }
+            }
+        }
+
+        /// <summary>
+        /// 鍙戦�佽鍙栧懡浠�
+        /// 鑷姩鍒ゆ柇鏄惁涓篈鍗忚璁惧
+        /// </summary>
+        public void SendReadCommand(Function function)
+        {
+            function.refreshTime = DateTime.Now;
+            if (function.bus_Data != null)
+            {
+                try
+                {
+                    //ReadBusData(function);
+                }
+                catch (Exception ex)
+                {
+                    MainPage.Log($"鍙戦�佹暟鎹紓甯�: {ex.Message}");
+                }
+            }
+            else
+            {
+                //var commandObj = function.GetSendJObject(CommandType_A.read);
+                //var commandString = Newtonsoft.Json.JsonConvert.SerializeObject(commandObj);
+                //var commandBytes = System.Text.Encoding.UTF8.GetBytes(commandString);
+                //MqttCommon.MqttRemoteSend(commandBytes);
+            }
+        }
+
+        /// <summary>
+        /// 鎺у埗a鍗忚鍦烘櫙
+        /// </summary>
+        /// <param name="scene"></param>
+        static void ControlAProtocolScene(Scene scene)
+        {
+            var sendSidObj = new AProtocolSendingObject();
+            sendSidObj.time_stamp = "";
+            sendSidObj.type = "device_sid";
+            sendSidObj.command = "get_list_response";
+        }
+        /// <summary>
+        /// 杞崲閫氳鏁版嵁
+        /// </summary>
+        public byte[] ConvertSendBodyData(string topic, string bodyDataString)
+        {
+            string topicString = "Topic:" + topic + "\r\n";
+            byte[] bodyBytes = Encoding.ASCII.GetBytes(bodyDataString);
+            string lengthString = "Length:" + bodyBytes.Length.ToString() + "\r\n" + "\r\n";
+
+            string sendDataString = topicString + lengthString + bodyDataString;
+            byte[] sendDataBytes = Encoding.ASCII.GetBytes(sendDataString);
+            MainPage.Log($"杞崲HDL-Link鏁版嵁\r\n{sendDataString}\r\n");
+
+            return sendDataBytes;
+        }
+        /// <summary>
+        /// 杞崲鎺ユ敹鍒扮殑鏁版嵁
+        /// </summary>
+        /// <returns></returns>
+        public void ConvertReceiveData(byte[] receiveBytes)
+        {
+            var reString = Encoding.UTF8.GetString(receiveBytes);
+            AnalysisReceiveData(reString);
+        }
+        /// <summary>
+        /// 杞崲鎺ユ敹鍒扮殑鏁版嵁
+        /// </summary>
+        /// <returns></returns>
+        public LocalCommunicationData AnalysisReceiveData(string receiveString)
+        {
+            LocalCommunicationData receiveObj = new LocalCommunicationData();
+
+            var res = receiveString.Split("\r\n\r\n");
+
+            if (res.Length == 2)
+            {
+                var topics = res[0].Split("\r\n");
+                MainPage.Log(res[1]);
+                foreach (var ts in topics)
+                {
+                    var key = ts.Split(":");
+                    switch (key[0])
+                    {
+                        case "Topic":
+                            receiveObj.Topic = key[1];
+                            break;
+                        case "Length":
+                            receiveObj.Length = Convert.ToInt32(key[1]);
+                            break;
+                    }
+                }
+                //楠岃瘉鏈夋晥鏁版嵁闀垮害
+                //if (res[1].Length != receiveObj.Length)
+                //{
+                //    MainPage.Log($"鏀跺埌鏁版嵁鍖呴暱搴︿笉澶�");
+                //    return receiveObj;
+                //}
+                receiveObj.BodyDataString = res[1];
+
+                var bodyJObj = Newtonsoft.Json.JsonConvert.DeserializeObject<ResponsePack>(res[1]);
+                if (bodyJObj == null)
+                {
+                    return receiveObj;
+                }
+                switch (receiveObj.Topic)
+                {
+                    case CommunicationTopic.SearchLoaclGatewayReply:
+                        var device = Newtonsoft.Json.JsonConvert.DeserializeObject<DeviceModule>(bodyJObj.objects.ToString());
+                        if (device.device_mac == DB_ResidenceData.residenceData.residenceGatewayMAC)
+                        {
+                            Ins.GatewayOnline = true;
+                            Ins.GatewayId = device.gatewayId;
+                            reportIp = "239.0.168.188";// device.ip_address;
+                        }
+                        break;
+                }
+            }
+            return receiveObj;
+        }
+    }
+}
\ No newline at end of file
diff --git a/HDL_ON/DriverLayer/Control_TcpClient.cs b/HDL_ON/DAL/DriverLayer/Control_TcpClient.cs
similarity index 93%
rename from HDL_ON/DriverLayer/Control_TcpClient.cs
rename to HDL_ON/DAL/DriverLayer/Control_TcpClient.cs
index f3ad0a0..aa8aeff 100644
--- a/HDL_ON/DriverLayer/Control_TcpClient.cs
+++ b/HDL_ON/DAL/DriverLayer/Control_TcpClient.cs
@@ -7,6 +7,7 @@
 {
     public class Control_TcpClient
     {
+
         //澹版槑IP锛岀鍙o紝鍜屼竴涓敤鏉ヨ繛鎺ョ殑Socket
         public string _ip;
 
@@ -36,10 +37,11 @@
             {
                 _tcpClient.Connect(IPAddress.Parse(_ip), _port);
                 Task.Run(new Action(ReceiveMessage));//寮�鍚嚎绋嬶紝涓嶅仠鎺ユ敹娑堟伅
+                MainPage.Log($"鎵撳紑tcp client{_ip}:{_port}");
             }
             catch (Exception e)
             {
-                Console.WriteLine(e);
+                MainPage.Log(e.Message);
                 throw;
             }
             return true;//杩斿洖杩炴帴鐘舵��
@@ -64,7 +66,11 @@
         public void SendMessage(byte[] bytes)
         {
             NetworkStream networkStream = _tcpClient.GetStream();
-            networkStream.Write(bytes, 0, bytes.Length);
+            if (networkStream.CanWrite)
+            {
+                networkStream.Write(bytes, 0, bytes.Length);
+            }
+            //networkStream.Close();
         }
 
         /// <summary>
@@ -119,8 +125,10 @@
 
                 //    MainPage.Log($"鎺ユ敹鏈嶅姟绔暟鎹�:{tcpDataString}");
                 //}
+
             }
         }
 
+
     }
 }
\ No newline at end of file
diff --git a/HDL_ON/DriverLayer/Control_TcpServer.cs b/HDL_ON/DAL/DriverLayer/Control_TcpServer.cs
similarity index 65%
rename from HDL_ON/DriverLayer/Control_TcpServer.cs
rename to HDL_ON/DAL/DriverLayer/Control_TcpServer.cs
index 2208fde..eb77a42 100644
--- a/HDL_ON/DriverLayer/Control_TcpServer.cs
+++ b/HDL_ON/DAL/DriverLayer/Control_TcpServer.cs
@@ -171,101 +171,59 @@
                 Thread.Sleep(100);
             }
         }
-        string tcpFunctionOidJsonString = "";
         /// <summary>
         /// 鑾峰彇鍒楄〃鏁版嵁鍥炶皟鏂规硶
         /// </summary>
         public Action<string> GetListResponseAction;
+        string tcpFunctionOidJsonString = "";
         /// <summary>
         /// 澶勭悊tcp鏁版嵁
         /// </summary>
-        void AnalysisTcpData(Socket socket, string tcpDataString)
+        void AnalysisTcpData(Socket socket, string tcpBodyDataString)
         {
-            MainPage.Log($"tcpDataString: {tcpDataString}");
-            var obj = Newtonsoft.Json.JsonConvert.DeserializeObject<Newtonsoft.Json.Linq.JObject>(tcpDataString);
-            if (obj == null)
+            MainPage.Log($"0001 tcpDataString:\r\n {tcpBodyDataString}");
+            var tcpDataObj = Control.Ins.AnalysisReceiveData(tcpBodyDataString);
+            if (tcpDataObj.BodyDataString == null)
             {
                 return;
             }
-            var tcpCommand = obj.GetValue("command").ToString();
-            var tcpType = obj.GetValue("type").ToString();
-
-            switch (tcpCommand)
+            switch (tcpDataObj.Topic)
             {
-                //鑾峰彇鏁版嵁杩斿洖
-                case "get_list_response":
-                    GetListResponseAction?.Invoke(tcpDataString);
+                case CommunicationTopic.AddDeviceOids:
+                    tcpFunctionOidJsonString = tcpDataObj.BodyDataString;
                     break;
-                /*
-                case "search":// 閫傜敤浜庢悳绱�
-                case "read":// 鐢ㄤ簬渚濇璇诲彇鐩稿叧绫诲瀷淇℃伅鐘舵��
-                case "set_list":// 淇敼鍒楄〃
-                case "write":// 鐢ㄤ簬渚濇鎺у埗鐩稿叧绫诲瀷淇℃伅
-                case "delete":// 鐢ㄤ簬鍒犻櫎鐩稿叧鎿嶄綔
-                case "initialize":// 鍒濆鍖�
-                case "find":// 璁惧瀹氫綅
-                case "get":// 鐢ㄤ簬鑾峰彇sid褰撳墠鐘舵��
-                case "set":// 鐢ㄤ簬鎺у埗sid鐩稿叧鍙傛暟
-                */
-                case "add":// 鐢ㄤ簬澧炲姞鍔熻兘
-                    switch (tcpType)
+                case CommunicationTopic.AddFunctions:
+                    var addSidFunction = Newtonsoft.Json.JsonConvert.DeserializeObject<TcpTransmissionSidsObj>(tcpDataObj.BodyDataString);
+                    Application.RunOnMainThread(() =>
                     {
-                        case "device_oid":// 鐢ㄤ簬鍘熺敓鎬佽澶囪鍐欑浉鍏虫搷浣�
-                            tcpFunctionOidJsonString = tcpDataString;
-                            break;
-                        case "device_sid":
-                            var addSidFunction = Newtonsoft.Json.JsonConvert.DeserializeObject<TcpTransmissionObject>(tcpDataString);
-                            Application.RunOnMainThread(() =>
-                            {
-                                var tipDialog = new UI.UpdataTcpResidenceDataDialog();
-                                var tcpLocalFunction = Newtonsoft.Json.JsonConvert.DeserializeObject<List<Function>>(Newtonsoft.Json.JsonConvert.SerializeObject(addSidFunction.objects));
-                                tipDialog.ShowDialog(tcpLocalFunction, tcpFunctionOidJsonString);
-                            });
-                            break;
-                    }
+                        var tipDialog = new UI.UpdataSidDataDialog();
+                        var tcpLocalFunction = Newtonsoft.Json.JsonConvert.DeserializeObject<List<Function>>(Newtonsoft.Json.JsonConvert.SerializeObject(addSidFunction.objects));
+                        tipDialog.ShowDialog(tcpLocalFunction, tcpFunctionOidJsonString);
+                    });
                     break;
-                case "get_list"://鑾峰彇鍒楄〃
-                    switch (tcpType)
-                    {
-                        /*
-                        case "space":// 閫傜敤浜庡叏閮ㄨ澶�, 鑾峰彇绌洪棿淇℃伅
-                        case "device":// 缃戝叧鎴栬�呭叾浠朅璁惧
-                        case "device_mac":// 鐢ㄤ簬璁惧鏈鸿韩鍙风爜鐩稿叧鎿嶄綔
-                        case "scene":// 鐢ㄤ簬鍦烘櫙鍔熻兘璇诲啓
-                        case "security":// 鐢ㄤ簬瀹夐槻鍔熻兘璇诲啓
-                        case "remote":// 鐢ㄤ簬杩滅▼淇℃伅璇诲啓鎿嶄綔
-                        case "logic":// 鐢ㄤ簬閫昏緫鑷姩鍖栬鍐欐搷浣�
-                        case "global":// 鐢ㄤ簬缁勬挱鎼滅储A璁惧
-                            */
-                        case "device_oid":// 鐢ㄤ簬鍘熺敓鎬佽澶囪鍐欑浉鍏虫搷浣�
-                            var bytes = FileUtils.ReadFile("AProtocolData_FunctionOid");
-                            //var jsonString = System.Text.Encoding.UTF8.GetString(bytes);
-                            //if (!string.IsNullOrEmpty(jsonString))
-                            if (bytes.Length > 0)
-                            {
-                                socket.Send(bytes);
-                                MainPage.Log($"send oid list to 8586 prot :{ System.Text.Encoding.UTF8.GetString(bytes)}");
-                            }
-                            break;
-                        case "device_sid":// 鐢ㄤ簬鍔熻兘妯″瀷璇诲啓鎿嶄綔
-                            var sendSidObj = new TcpTransmissionObject();
-                            sendSidObj.from_oid = "";
-                            sendSidObj.to_oid = "";
-                            sendSidObj.time_stamp = "";
-                            sendSidObj.type = "device_sid";
-                            sendSidObj.command = "get_list_response";
-                            //杞崲鎴恇us闇�瑕佺殑鏁版嵁鏍煎紡
-                            var localFunction = DB_ResidenceData.functionList.GetAllFunction();
-                            var localFunctionString = Newtonsoft.Json.JsonConvert.SerializeObject(localFunction);
-                            var tcpFunction = Newtonsoft.Json.JsonConvert.DeserializeObject<List<TcpObject>>(localFunctionString);
+                case CommunicationTopic.BusPcGetAppOids:
 
-                            sendSidObj.objects.AddRange(tcpFunction);
-                            var sendSidJson = Newtonsoft.Json.JsonConvert.SerializeObject(sendSidObj);
-                            var sendSidBytes = System.Text.Encoding.UTF8.GetBytes(sendSidJson);
-                            socket.Send(sendSidBytes, sendSidBytes.Length, SocketFlags.OutOfBand);
-                            MainPage.Log($"send sid list to 8586 prot :{sendSidJson}");
-                            break;
+                    var bytes = FileUtils.ReadFile(DB_ResidenceData.OidSavePathName);
+                    if (bytes.Length > 0)
+                    {
+                        socket.Send(bytes);
+                        MainPage.Log($"send oid list to 8586 prot :{ System.Text.Encoding.UTF8.GetString(bytes)}");
                     }
+                    break;
+                case CommunicationTopic.BusPcGetAppSids:
+                    var sendSidObj = new TcpTransmissionSidsObj();
+                    sendSidObj.id = Control.Ins.msg_id.ToString();
+                    sendSidObj.time_stamp = "";
+                    //杞崲鎴恇us闇�瑕佺殑鏁版嵁鏍煎紡
+                    var localFunction = DB_ResidenceData.functionList.GetAllFunction();
+                    var localFunctionString = Newtonsoft.Json.JsonConvert.SerializeObject(localFunction);
+                    var tcpFunction = Newtonsoft.Json.JsonConvert.DeserializeObject<List<BusSidObj>>(localFunctionString);
+
+                    sendSidObj.objects.AddRange(tcpFunction);
+                    var sendSidJson = Newtonsoft.Json.JsonConvert.SerializeObject(sendSidObj);
+                    var sendSidBytes = System.Text.Encoding.UTF8.GetBytes(sendSidJson);
+                    socket.Send(sendSidBytes, sendSidBytes.Length, SocketFlags.OutOfBand);
+                    MainPage.Log($"send sid list to 8586 prot :{sendSidJson}");
                     break;
             }
         }
@@ -362,17 +320,15 @@
     }
 
     /// <summary>
-    /// bus杞欢浼犺緭鍔熻兘鐨勫璞�
+    /// bus杞欢浼犺緭鍔熻兘鐨剆id鍒楄〃瀵硅薄
     /// </summary>
-    public class TcpTransmissionObject
+    public class TcpTransmissionSidsObj
     {
-        public List<TcpObject> objects = new List<TcpObject>();
+        public List<BusSidObj> objects = new List<BusSidObj>();
 
-        public string from_oid = "";
-        public string to_oid = "";
+        public string id = "";
         public string time_stamp = "";
-        public string type = "";
-        public string command = "";
+
     }
 
     /// <summary>
@@ -381,21 +337,23 @@
     /// Function瀵硅薄鍖呭惈浜嗚瀵硅薄鐨勬墍鏈夊唴瀹癸紝
     /// 姝ゅ璞′负浜嗗噺灏戜紶杈撴暟鎹娇鐢�
     /// </summary>
-   public class TcpObject
+   public class BusSidObj
     {
         public string sid = "";// "0301011234567801012301230123";
 
         /// <summary>
-        /// A鍗忚鍔熻兘鐨勭壒鎬�
-        /// 濡傦細鏄疉C鍔熻兘锛氱壒鎬э細on_off,mode,fan,temperature
-        /// attri
+        /// A鍗忚鍔熻兘鐨勫睘鎬�
+        /// 濡傦細鏄疉C鍔熻兘锛氬睘鎬э細on_off,mode,fan,temperature
         /// </summary>
-        public List<Trait> function = new List<Trait>();
+        public List<FunctionAttributes> attributes = new List<FunctionAttributes>();
 
         /// <summary>
         /// 澶囨敞
         /// </summary>
         public string name;
+
+        public string omodel;
+
     }
 
 }
\ No newline at end of file
diff --git a/HDL_ON/DriverLayer/Control_Udp_Bus.cs b/HDL_ON/DAL/DriverLayer/Control_Udp.cs
similarity index 72%
rename from HDL_ON/DriverLayer/Control_Udp_Bus.cs
rename to HDL_ON/DAL/DriverLayer/Control_Udp.cs
index 27a9243..3fcae40 100644
--- a/HDL_ON/DriverLayer/Control_Udp_Bus.cs
+++ b/HDL_ON/DAL/DriverLayer/Control_Udp.cs
@@ -1,17 +1,25 @@
 锘縰sing System;
 using System.Collections.Generic;
 using System.Text;
-using HDL_ON.DAL.Net;
 using HDL_ON.DriverLayer;
 using HDL_ON.Entity;
 using Newtonsoft.Json;
 using Newtonsoft.Json.Linq;
 using Shared.Net;
 
-namespace HDL_ON
+namespace HDL_ON.DriverLayer
 {
-    public class Control_Udp_Bus
+    public class Control_Udp
     {
+        //public Control_Udp()
+        //{
+        //    MainPage.Log($"control bus udp 琚垱寤猴紝鏃堕棿锛歿DateTime.Now}");
+        //}
+        /// <summary>
+        /// 閫氳绔彛
+        /// </summary>
+        public int port = 0;
+
         /// <summary>
         /// 鎺у埗澶辫触娆℃暟
         /// </summary>
@@ -20,7 +28,7 @@
         /// <summary>
         /// 鎵�鏈夊涓�绔彛鐨勬帶鍒堕兘浼氭斁鍒拌繖涓泦鍚堥噷
         /// </summary>
-        List<Control_Udp_Bus> controlList = new List<Control_Udp_Bus>(50);
+        static List<Control_Udp> controlList = new List<Control_Udp>(50);
 
         public System.Net.IPEndPoint EndPoint
         {
@@ -40,11 +48,10 @@
 
         /// <summary>
         /// 鍙戦�佹暟鎹紝涓嶉渶瑕佺瓑寰呭洖澶�
-        /// ps:鍏佽涓存椂鍏紑锛屼粎渚泃v鍙戦�乥us鍛戒护浣跨敤锛屽悗鏈熼渶瑕佹洿鏂板埌A鍗忚鏁版嵁鏍煎紡鎺у埗
         /// </summary>
         public void ControlBytesSend(Command command, byte subnetID, byte deviceID, byte[] gatewayBytes, int sendCount = 3)
         {
-            var control = new Control_Udp_Bus();
+            var control = new Control_Udp();
             control.Send(new Target()
             {
                 IPEndPoint =  EndPoint ,
@@ -86,13 +93,13 @@
             try
             {
                 //璐﹀彿娌$櫥褰曚笉鍥炲
-                if (MainPage.LoginUser == null || !MainPage.LoginUser.IsLogin)
+                if ( UserInfo.Current == null || ! UserInfo.Current.IsLogin)
                 {
                     return;
                 }
 
-                Control.ins.ChangeCommunicationMode(CommunicationMode.tcp_local_server);
-                var sendStr = MainPage.LoginUser.accountString;
+                Control.Ins.OpenTcpServer();
+                var sendStr =  UserInfo.Current.AccountString;
                 if (usefullBytes.Length == 0)
                 {
                     SendRemark(sendStr);
@@ -127,14 +134,11 @@
         /// </summary>
         void SendRemark(string sendStr)
         {
-            //if (System.Globalization.CultureInfo.InstalledUICulture.EnglishName.ToUpper().StartsWith("CZECH"))
-            //    Encoding.GetEncoding(1250);
-
             byte[] sendBytes = new byte[20];
             byte[] b1 = Encoding.GetEncoding("gb2312").GetBytes(sendStr);
             Array.Copy(b1, 0, sendBytes, 0, 20 < b1.Length ? 20 : b1.Length);
 
-            var control = new Control_Udp_Bus();
+            var control = new Control_Udp();
             control.Send(new Target()
             {
                 IPEndPoint = EndPoint,
@@ -156,11 +160,11 @@
                 {
                     case FunctionType.Curtain:
                         byte curtainState = 0;
-                        if (function.trait_on_off.value.ToString() == "on")
+                        if (function.trait_on_off.curValue.ToString() == "on")
                         {
                             curtainState = 1;
                         }
-                        else if (function.trait_on_off.value.ToString() == "off")
+                        else if (function.trait_on_off.curValue.ToString() == "off")
                         {
                             curtainState = 2;
                         }
@@ -172,7 +176,7 @@
                         break;
                     case FunctionType.AC:
                         var aC = Newtonsoft.Json.JsonConvert.DeserializeObject<AC>(Newtonsoft.Json.JsonConvert.SerializeObject(function));//as AC;
-                        ControlBytesSend(Command.InstructionPanelKey, aC.bus_Data.SubnetID, aC.bus_Data.DeviceID, new byte[] { 3, aC.trait_on_off.value.ToString() == "on" ? (byte)1 : (byte)0, aC.bus_Data.LoopID });
+                        ControlBytesSend(Command.InstructionPanelKey, aC.bus_Data.SubnetID, aC.bus_Data.DeviceID, new byte[] { 3, aC.trait_on_off.curValue.ToString() == "on" ? (byte)1 : (byte)0, aC.bus_Data.LoopID });
                         ControlBytesSend(Command.InstructionPanelKey, aC.bus_Data.SubnetID, aC.bus_Data.DeviceID, new byte[] { 6, aC.curModeIndex, aC.bus_Data.LoopID });
                         ControlBytesSend(Command.InstructionPanelKey, aC.bus_Data.SubnetID, aC.bus_Data.DeviceID, new byte[] { 5, aC.curFanIndex, aC.bus_Data.LoopID });
                         byte modeKey = 4;
@@ -194,18 +198,18 @@
                                 modeKey = 2;
                                 break;
                         }
-                        ControlBytesSend(Command.InstructionPanelKey, aC.bus_Data.SubnetID, aC.bus_Data.DeviceID, new byte[] { modeKey, Convert.ToByte(aC.trait_temp.value), aC.bus_Data.LoopID });
+                        ControlBytesSend(Command.InstructionPanelKey, aC.bus_Data.SubnetID, aC.bus_Data.DeviceID, new byte[] { modeKey, Convert.ToByte(aC.trait_temp.curValue), aC.bus_Data.LoopID });
 
                         break;
                     case FunctionType.Relay:
                     case FunctionType.Dimmer:
                         byte brightness = 0;
-                        if (function.trait_on_off.value.ToString() == "on")
+                        if (function.trait_on_off.curValue.ToString() == "on")
                         {
-                            var brightnessTrait = function.function.Find((obj) => obj.name == "brightness");
+                            var brightnessTrait = function.function.Find((obj) => obj.key == "brightness");
                             if (brightnessTrait != null)
                             {
-                                brightness = Convert.ToByte(brightnessTrait.value);
+                                brightness = Convert.ToByte(brightnessTrait.curValue);
                             }
                         }
                         ControlBytesSend(Command.SetSingleLight, function.bus_Data.SubnetID, function.bus_Data.DeviceID,
@@ -220,10 +224,10 @@
                         break;
                     case FunctionType.FloorHeating:
                         var fh = Newtonsoft.Json.JsonConvert.DeserializeObject<FloorHeating>(Newtonsoft.Json.JsonConvert.SerializeObject(function));//as AC;
-                        var fhModeTempTrait = function.function.Find((obj) => obj.name == "mode");
-                        if (fhModeTempTrait.value_key.Count == 4)
+                        var fhModeTempTrait = function.function.Find((obj) => obj.key == "mode");
+                        if (fhModeTempTrait.value.Count == 4)
                         {
-                            byte b1 = function.trait_on_off.value.ToString() == "on" ? (byte)1 : (byte)0;
+                            byte b1 = function.trait_on_off.curValue.ToString() == "on" ? (byte)1 : (byte)0;
                             if (fh.workMode > 0)
                             {
                                 b1 += (byte)(16 + fh.workMode);
@@ -233,7 +237,7 @@
                         break;
                     case FunctionType.Socket:
                         //var s = function as SwitchSocket;
-                        ControlBytesSend(Command.SetSingleLight, function.bus_Data.SubnetID, function.bus_Data.DeviceID, new byte[] { function.bus_Data.LoopID, function.trait_on_off.value.ToString() == "on" ? (byte)100 : (byte)0 });
+                        ControlBytesSend(Command.SetSingleLight, function.bus_Data.SubnetID, function.bus_Data.DeviceID, new byte[] { function.bus_Data.LoopID, function.trait_on_off.curValue.ToString() == "on" ? (byte)100 : (byte)0 });
                         break;
                 }
             }
@@ -261,7 +265,7 @@
                             case FunctionType.RGB:
                                 MainPage.Log($"rgb level : {light.brightness}");
                                 byte b = 100;//寮�鍏虫搷浣滀緷鎹畂n_off瀛楁锛屽疄闄呭紑鍏冲�间緷鎹産rightness锛屽綋on_off涓烘墦寮�锛宐rightness涓嶈兘涓�0
-                                if (light.trait_on_off.value.ToString() == "off")
+                                if (light.trait_on_off.curValue.ToString() == "off")
                                 {
                                     b = 0;
                                 }
@@ -279,7 +283,7 @@
                                 break;
                             case FunctionType.Dimmer:
                                 byte b1 = 100;
-                                if (light.trait_on_off.value.ToString() == "off")
+                                if (light.trait_on_off.curValue.ToString() == "off")
                                 {
                                     b1 = 0;
                                 }
@@ -294,7 +298,7 @@
                                 //DimmerPage.UpdataStates(light);
                                 break;
                             case FunctionType.Relay:
-                                ControlBytesSend(Command.SetSingleLight, subnetId, deviceId, new byte[] { function.bus_Data.LoopID, light.trait_on_off.value.ToString() == "on" ? (byte)100 : (byte)0, 0, 0 });
+                                ControlBytesSend(Command.SetSingleLight, subnetId, deviceId, new byte[] { function.bus_Data.LoopID, light.trait_on_off.curValue.ToString() == "on" ? (byte)100 : (byte)0, 0, 0 });
                                 //RelayPage.UpdataState(light);
                                 break;
                         }
@@ -305,11 +309,11 @@
                         {
                             case FunctionType.Curtain:
                                 byte b1 = 0;
-                                if (curtain.trait_on_off.value.ToString() == "stop")
+                                if (curtain.trait_on_off.curValue.ToString() == "stop")
                                 {
                                     b1 = 0;
                                 }
-                                else if (curtain.trait_on_off.value.ToString() == "on")
+                                else if (curtain.trait_on_off.curValue.ToString() == "on")
                                 {
                                     b1 = 1;
                                 }
@@ -323,7 +327,7 @@
                             case FunctionType.RollingShutter:
                                 //if (commandDictionary.Count > 0)
                                 //{
-                                if (curtain.trait_on_off.value.ToString() == "stop")
+                                if (curtain.trait_on_off.curValue.ToString() == "stop")
                                 {
                                     ControlBytesSend(Command.SetCurtainModelStutas, subnetId, deviceId, new byte[] { curtain.bus_Data.LoopID, 0 });
                                 }
@@ -356,14 +360,14 @@
                         {
                             case FunctionType.AC:
                                 var aC = function as AC;
-                                ControlBytesSend(Command.SetACMode, subnetId, deviceId, new byte[] { aC.bus_Data.LoopID, (byte)aC.curTempType, 32, 32, 32, 32, 32, 0, aC.trait_on_off.value.ToString() == "on" ? (byte)1 : (byte)0, aC.curModeIndex, aC.curFanIndex, Convert.ToByte(aC.trait_temp.value), 0 });
+                                ControlBytesSend(Command.SetACMode, subnetId, deviceId, new byte[] { aC.bus_Data.LoopID, (byte)aC.curTempType, 32, 32, 32, 32, 32, 0, aC.trait_on_off.curValue.ToString() == "on" ? (byte)1 : (byte)0, aC.curModeIndex, aC.curFanIndex, Convert.ToByte(aC.trait_temp.curValue), 0 });
                                 //ControlBytesSend(Command.InstructionPanelKey, aC.bus_Data.SubnetID, aC.bus_Data.DeviceID, new byte[] { 3, aC.on_off == "on" ? (byte)1 : (byte)0, aC.bus_Data.LoopID });
                                 foreach (var dic in commandDictionary)
                                 {
                                     switch (dic.Key)
                                     {
                                         case "on_off":
-                                            ControlBytesSend(Command.InstructionPanelKey, aC.bus_Data.SubnetID, aC.bus_Data.DeviceID, new byte[] { 3, aC.trait_on_off.value.ToString() == "on" ? (byte)1 : (byte)0, aC.bus_Data.LoopID });
+                                            ControlBytesSend(Command.InstructionPanelKey, aC.bus_Data.SubnetID, aC.bus_Data.DeviceID, new byte[] { 3, aC.trait_on_off.curValue.ToString() == "on" ? (byte)1 : (byte)0, aC.bus_Data.LoopID });
                                             break;
                                         case "mode":
                                             ControlBytesSend(Command.InstructionPanelKey, aC.bus_Data.SubnetID, aC.bus_Data.DeviceID, new byte[] { 6, aC.curModeIndex, aC.bus_Data.LoopID });
@@ -391,7 +395,7 @@
                                                     modeKey = 2;
                                                     break;
                                             }
-                                            ControlBytesSend(Command.InstructionPanelKey, aC.bus_Data.SubnetID, aC.bus_Data.DeviceID, new byte[] { modeKey, Convert.ToByte(aC.trait_temp.value), aC.bus_Data.LoopID });
+                                            ControlBytesSend(Command.InstructionPanelKey, aC.bus_Data.SubnetID, aC.bus_Data.DeviceID, new byte[] { modeKey, Convert.ToByte(aC.trait_temp.curValue), aC.bus_Data.LoopID });
                                             break;
                                         default:
                                             MainPage.Log($"鍔熻兘鏈敮鎸� : {dic.Key}");
@@ -404,7 +408,7 @@
                                 var fh = function as FloorHeating;
                                 if (fh.modeTemp.Count == 4)
                                 {
-                                    byte b1 = fh.trait_on_off.value.ToString() == "on" ? (byte)1 : (byte)0;
+                                    byte b1 = fh.trait_on_off.curValue.ToString() == "on" ? (byte)1 : (byte)0;
                                     if (fh.workMode > 0)
                                     {
                                         b1 += (byte)(16 + fh.workMode);
@@ -414,7 +418,7 @@
                                         var dicTempString = "";
                                         commandDictionary.TryGetValue("temp", out dicTempString);
                                         var dicTemp = Convert.ToByte(dicTempString);
-                                        switch (fh.trait_mode.value)
+                                        switch (fh.trait_mode.curValue)
                                         {
                                             case "day":
                                                 fh.modeTemp["day"] = dicTemp;
@@ -440,7 +444,7 @@
                         {
                             case FunctionType.Fan:
                                 var fan = function as Fan;
-                                if (fan.trait_on_off.value.ToString() == "on")
+                                if (fan.trait_on_off.curValue.ToString() == "on")
                                 {
                                     ControlBytesSend(Command.SetSingleLight, subnetId, deviceId, new byte[] { fan.bus_Data.LoopID, (byte)fan.openLevel });
                                 }
@@ -455,7 +459,7 @@
                         {
                             case FunctionType.Socket:
                                 var s = function as SwitchSocket;
-                                ControlBytesSend(Command.SetSingleLight, subnetId, deviceId, new byte[] { s.bus_Data.LoopID, s.trait_on_off.value.ToString() == "on" ? (byte)100 : (byte)0 });
+                                ControlBytesSend(Command.SetSingleLight, subnetId, deviceId, new byte[] { s.bus_Data.LoopID, s.trait_on_off.curValue.ToString() == "on" ? (byte)100 : (byte)0 });
                                 break;
                         }
                         break;
@@ -575,7 +579,6 @@
                     }
 
                 }
-                //System.MainPage.WriteLog ("++++++++"+controlList.Count.ToString ());
             }
             controlList.Add(this);
         }
@@ -628,7 +631,6 @@
             allDone.WaitOne();
         }
 
-
         /// <summary>
         /// 璁╁綋鍓嶇嚎绋嬬户缁墽琛�
         /// </summary>
@@ -638,8 +640,7 @@
             Packet.HaveSendCount = 4;
         }
 
-
-        //鏁版嵁閲嶅彂澶勭悊
+        //鏁版嵁鍙戦�佸鐞�
         void managerSendCount(object o)
         {
             add();
@@ -650,7 +651,7 @@
                 new System.Threading.Thread(() =>
                 {
                     System.Threading.Thread.Sleep(1000);
-                    UdpSocket._BusSocket.Start();
+                    UdpSocket._BusSocket.Start(6000);
                     controlLostCount = 0;
                 })
                 { IsBackground = true }.Start();
@@ -688,8 +689,11 @@
         /// 褰撳墠鏁版嵁鍖�
         /// </summary>
         Packet Packet;
-
-        private void ini(Target target)
+        /// <summary>
+        /// 璁板綍鍙戦�佹暟鎹寘
+        /// </summary>
+        /// <param name="target"></param>
+        private void signPacket(Target target)
         {
             this.SendFlag = string.Format("{0},{1},{2},", target.SubnetID, target.DeviceID, (int)target.Command + 1);
 
@@ -709,196 +713,27 @@
                 case Command.ReadLightAllLoopBrightness:
                     this.SendFlag += "";
                     break;
-                //case Command.YIPanelDeviceInof:
-                //    for (int i = 0; i < 4; i++)
-                //    {
-                //        this.sendFlag += string.Format("{0}", target.AddData[i]);
-                //    }
-                //    break;
-                //case Command.ReadDoorLockSceneObj:
-                //    this.SendFlag += string.Format("{0},{1},{2},{3},{4}", target.AddData[0], target.AddData[1], target.AddData[2], target.AddData[3], target.AddData[4]);
-                //    break;
-                //case Command.ReadDoorLockClock:
-                //case Command.CreatConnection:
-                //    this.SendFlag += string.Format("{0}", target.AddData[0]);
-                //    break;
-                //case Command.ReadDoorLockUseRemark:
-                //case Command.ReadSensorPushMessage:
-                //case Command.SetSensorPushMessage:
-                //case Command.SetSensorScence:
-                //case Command.ReadAnalog:
-                //    this.sendFlag += string.Format("{0},{1},{2}", target.AddData[0], target.AddData[1], target.AddData[2]);
-                //    break;
-                //case Command.ReadSensorScence:
-                //    this.sendFlag += string.Format("{0},{1},{2}", target.AddData[0], target.AddData[1], target.AddData[2]);
-                //    break;
-                //case Command.SendRemoteInfoToServer:
-                //    for (int i = 40; i < 48; i++)
-                //    {
-                //        this.sendFlag += string.Format("{0}", target.AddData[i]);
-                //    }
-                //    break;
-                //case Command.SetCommonSwitch:
-                //case Command.InfraredChannelControl:
-                //case Command.ReadFoolHeat:
-                //case Command.SetFoolHeat:
-                //case Command.Serverx_FH_CMD:
-                //case Command.SetArm:
-                //case Command.ReadArm:
-                //case Command.ReadSensorHistory:
-                //case Command.SetSensorAutomationTargetLevelEnable:
-                //case Command.ReadSensorAutomationLevelTargetEnable:
-                //    this.SendFlag += string.Format("{0}", target.AddData[0]);
-                //    break;
-                //case Command.ReadDeviceModul:
-                //case Command.ReadSecurityStatus:
-                //case Command.ReadHornTargetState:
                 case Command.ReadGateway:
                     this.SendFlag = string.Format("{0},{1}", target.AddData[0], target.AddData[1]);
                     break;
-                //case Command.SetScene:
-                //case Command.SetSeries:
-                //case Command.SetHotelCurtain:
-                //case Command.ReadAnalogValue:
-                //case Command.SetSensorPushValues:
-                //case Command.ReadSensorPushValues:
-                //    this.SendFlag += string.Format("{0},{1}", target.AddData[0], target.AddData[1]);
-                //    break;
-                ////case Command.ReadOnePortWirelessFROtherInfo:
-                //case Command.UpdataRemake:
-                //case Command.WriteManageWirelessNet:
-                //case Command.UpdataLightDimmingTheLargestLevel:
-                //case Command.UpdataLightDimmingMaximumOrMinimum:
-                //case Command.ReadGateWayModelInfo:
-                //case Command.ReadGatewayServerIP:
-                //case Command.SetGateWayModelInfo:
-                //case Command.SetGateWayModelInternetInfo:
-                //case Command.ReadDeviceMac:
-                //case Command.SetDeviceSubnetID:
-                //case Command.PositioningEquipment:
-                //case Command.PositioningPanel:
-                //case Command.CheckConfigSuccess:
-                //case Command.GotoConfigMode:
-                //case Command.ReadACPanel:
-                //case Command.SetACPanel:
-                //case Command.ReadTerrestriaHeatRemark:
-                //case Command.UpdateGatewayIp:
-                //case Command.ReadWirelessPanelMode:
-                //case Command.ReadDrycontactMode:
-                //case Command.ReadACFloorHeatingSettingEquipment:
-                //case Command.SetACFloorHeatingSettingEquipment:
-                //case Command.Read43FloorHeatingSettingEquipment:
-                //case Command.Set43FloorHeatingSettingEquipment:
-                //case Command.READ_AIR_ALL_Parameter:
-                //case Command.Set_AIR_ALL_Parameter:
-                //case Command.ReadFloorHeatProbe:
-                //case Command.ControlMusicModel:
-                //case Command.ReadButtonKeyEnable:
-                //case Command.UpdateEquipmentLoopRemake:
-                //case Command.SetGateway:
-                //case Command.ReadMusicPanelSetting:
-                //case Command.ReadMusicPanelEnable:
-                //case Command.SetMusicPanelEnable:
-                //case Command.SetMusicPanelSetting:
-                //case Command.ReadGatewayProgrammingMode:
-                //case Command.RED_HSFH_TOTAL:
-                //case Command.RED_HSFH_INFORMATION:
-                //case Command.RED_HSRM_TOTAL:
-                //case Command.RED_HSRM_INFORMATION:
-                //case Command.CLEAR_SYSTEM_HISTORY:
-                //case Command.SetSensorTargetRemark:
-                //case Command.ReadSensorAutomationEnableList:
-                //case Command.SetSensorAutomationEnableList:
-                //case Command.SetSensorAutomationListID:
-                //case Command.ReadSensorAutomationListID:
-                //case Command.SetSensorAutomationName:
-                //case Command.ReadSensorAutomationName:
-                //case Command.Set_Floor_Heat_State:
-                //case Command.Read_Floor_Heat_State:
-                //case Command.Read_Air_Condition_Set:
-                //case Command.UpdateHornLoopRemake:
-                //case Command.ReadHornLoopCount:
-                //case Command.ReadPanelTempType:
-                //    this.SendFlag += "";
-                //    break;
-                //case Command.ControlMusicModel2:
-                //    for (int i = 1; i < target.AddData.Length; i++)
-                //    {
-                //        if (target.AddData[i + 1] == 0x0D)
-                //        {
-                //            break;
-                //        }
-                //        this.sendFlag += string.Format("{0},", target.AddData[i]);
-                //    }
-                //    break;
-                //case Command.Remote3th:
-                //    this.SendFlag = string.Format("{0},", (int)target.Command + 1);
-                //    break;
                 case Command.ReadDeviceLoopInfo:
                     if (target.AddData[0] == 1)//鐗规畩澶勭悊鐏厜绫伙紝DMX妯″潡姣忎竴涓洖璺笉鍥哄畾灏忕被锛屾牴鎹叿浣撹缃潵鍥炲
                         this.sendFlag += string.Format("{0},{1}", target.AddData[0], target.AddData[2]);
                     else
                         this.sendFlag += string.Format("{0},{1},{2}", target.AddData[0], target.AddData[1], target.AddData[2]);
                     break;
-                //case Command.SetDeviceLoopInfo:
-                //case Command.InfraredControl:
-                //case Command.SetSecurityByPass:
-                //case Command.SetSensorAutomationDateTimeCycle:
-                //case Command.ReadSensorAutomationDateTimeCycle:
-                //    this.sendFlag += string.Format("{0},{1},{2}", target.AddData[0], target.AddData[1], target.AddData[2]);
-                //    break;
-                //case Command.ReadWirelessPanelButtonKey:
-                //case Command.WriteWirelessPanelButtonKey:
-                //case Command.ReadDryContactStatus:
-                //case Command.SetCurtainModelStutas:
-                //case Command.DownloadInfrared:
-                //case Command.UpLoadInfrared:
                 case Command.InstructionPanelKey:
                 case Command.ReadInstructionPanelKey:
-                    //case Command.ReadSensorTargetRemark:
-                    //case Command.SetHornTargetState:
                     this.sendFlag += string.Format("{0},{1}", target.AddData[0], target.AddData[1]);
                     break;
-                //case Command.AssignedAddress:
-                //case Command.UpdataCurtainModelRunTime:
-                //case Command.ReadCurtainStatus:
-                //case Command.ReadPanleTemp:
-                //case Command.FreshAirRead:
-                //case Command.FreshAirControl:
-                //case Command.Set_Air_State_New:
-                //case Command.ReadHornTargetEnable:
-                //case Command.SetHornTargetEnable:
-                //case Command.ReadHornLoopAlarm:
-                //case Command.SetHornPush:
-                //case Command.ReadHornPush:
-                //case Command.ReadHornHistory:
-                //case Command.ReadHornLoopsStatus:
-                //    this.sendFlag += string.Format("{0}", target.AddData[0]);
-                //    break;
-                //case Command.RemoteFirst:
-                //    for (int i = 0; i < 28; i++)
-                //    {
-                //        this.sendFlag += string.Format("{0}", target.AddData[i]);
-                //    }
-                //    break;
-                //case Command.RemoteSecoud:
-                //    for (int i = 0; i < 7; i++)
-                //    {
-                //        this.sendFlag += string.Format("{0}", target.AddData[i]);
-                //    }
-                //    break;
                 default:
-                    //return;
                     break;
             }
 
-            System.Threading.Thread thread = new System.Threading.Thread(new System.Threading.ParameterizedThreadStart(managerSendCount));
-            thread.IsBackground = true;
-            thread.Start(Packet);
         }
 
         /// <summary>
-        /// 鍙戦�丅us鏁版嵁锛屽彂閫佷簡涓嶉渶瑕佺瓑寰�
+        /// 鍙戦�佹暟鎹�
         /// </summary>
         /// <param name="target">鍙戦�佸璞�</param>
         /// <param name="sendCount">閲嶅彂娆℃暟</param>
@@ -909,7 +744,11 @@
                 Packet = new Packet(target.SendBytes, target.IPEndPoint);
                 Packet.HaveSendCount = 3 - sendCount;
 
-                ini(target);
+                signPacket(target);
+
+                System.Threading.Thread thread = new System.Threading.Thread(new System.Threading.ParameterizedThreadStart(managerSendCount));
+                thread.IsBackground = true;
+                thread.Start(Packet);
 
                 if (isWait)
                 {
@@ -925,28 +764,40 @@
         /// <summary>
         /// 璇诲彇缃戝叧IP
         /// </summary>
-        public void ReadGatewayIP()
+        public void SearchLocalGateway()
         {
             try
             {
-                var sendJob = new JObject {
-                                            {"type","device" },{"from_oid","020101" },{"to_oid",null },{"time_stamp","46A3B99F" },{"command","search"}
-                                        };
-                var SearchGateway = JsonConvert.SerializeObject(sendJob);
-                var SearchGatewayPayload = Encoding.ASCII.GetBytes(SearchGateway);
-                Packet = new Packet(SearchGatewayPayload, new System.Net.IPEndPoint(System.Net.IPAddress.Parse("239.0.168.188"), 8585));
+                var sendJob = new JObject { { "id", Control.Ins.msg_id.ToString() }, { "time_stamp", (DateTime.Now.Ticks / 100000).ToString() } };
+                var bodyString = JsonConvert.SerializeObject(sendJob);
+                
+                var sendBytes = Control.Ins.ConvertSendBodyData(CommunicationTopic.SearchLoaclGateway, bodyString);
+                //缁勬挱鍙戦��
+                Packet = new Packet(sendBytes, new System.Net.IPEndPoint(System.Net.IPAddress.Parse("239.0.168.188"), 8585));
                 Packet.HaveSendCount = 4;//ps锛氭病鏈夐噸鍙戯紝鍚庢湡鏈夋椂闂村彲浠ュ鍔犻噸鍙戝垽鏂�
                 System.Threading.Thread thread = new System.Threading.Thread(new System.Threading.ParameterizedThreadStart(managerSendCount));
                 thread.IsBackground = true;
                 thread.Start(Packet);
-
-                wait();
+                //wait();涓嶉渶瑕佺瓑寰�
             }
             catch (Exception ex)
             {
                 MainPage.Log($"Send bus data error {ex.Message}");
             }
         }
+        /// <summary>
+        /// 鏈湴udp鎺у埗A鍗忚缃戝叧
+        /// </summary>
+        public void SendLocalHdlLinkData(byte[] sendBytes)
+        {
+            Packet = new Packet(sendBytes, new System.Net.IPEndPoint(System.Net.IPAddress.Parse(Control.Ins.reportIp), 8585));
+            Packet.HaveSendCount = 4;//ps锛氭病鏈夐噸鍙戯紝鍚庢湡鏈夋椂闂村彲浠ュ鍔犻噸鍙戝垽鏂�
+            System.Threading.Thread thread = new System.Threading.Thread(new System.Threading.ParameterizedThreadStart(managerSendCount));
+            thread.IsBackground = true;
+            thread.Start(Packet);
+            //wait();涓嶉渶瑕佺瓑寰�
+            MainPage.Log($"鍙戦�丠dl-Link鏁版嵁锛孖P:{Control.Ins.reportIp}:8585");
+        }
 
 
     }
diff --git a/HDL_ON/DriverLayer/Packet.cs b/HDL_ON/DAL/DriverLayer/Packet.cs
similarity index 87%
rename from HDL_ON/DriverLayer/Packet.cs
rename to HDL_ON/DAL/DriverLayer/Packet.cs
index d957a86..6fce368 100644
--- a/HDL_ON/DriverLayer/Packet.cs
+++ b/HDL_ON/DAL/DriverLayer/Packet.cs
@@ -5,10 +5,10 @@
 using HDL_ON.UI;
 using Shared;
 
-namespace HDL_ON
+namespace HDL_ON.DriverLayer
 {
     /// <summary>
-    /// bus鎺у埗鏁版嵁鍖�
+    /// bus鏁版嵁鍖�
     /// </summary>
     public class Packet
     {
@@ -54,12 +54,7 @@
         public virtual void Manager()
         {
             try
-            {
-                //濡傛灉褰撳墠閫氳鏂瑰紡涓嶆槸鏈湴bus udp鍒欓��鍑�
-                if(DriverLayer.Control.ins.communicationMode == DriverLayer.CommunicationMode.local_BusUdp)
-                {
-                    return;
-                }
+            { 
                 //瀵逛簬鎿嶄綔鏁版嵁搴撶殑鏃堕棿姣旇緝闀跨殑锛屽彲浠ュ垱寤哄彟涓�涓嚎绋嬪鐞�
                 if (!"HDLMIRACLE".Equals(Encoding.ASCII.GetString(Bytes, 4, 10)))
                 {
@@ -78,7 +73,7 @@
                 byte targetDeviceID = this.Bytes[24];
 
                 //涓嶆槸瑕佹帴鏀剁殑鎸囦护灏辫繑鍥�
-                if (!((targetSubnetID == 252 && targetDeviceID == 252) || (targetSubnetID == 0xff && targetDeviceID == 0xff)))
+                if (!((targetSubnetID == 0 && targetDeviceID == 252) || (targetSubnetID == 0xff && targetDeviceID == 0xff)))
                 {
                     return;
                 }
@@ -129,17 +124,19 @@
                             {
                                 if (updataObj.functionType != FunctionType.RGB)
                                 {
-                                    if (updataObj.trait_on_off.value.ToString() == "on")
+                                    updataObj.trait_on_off.curValue = receiveBytes[2] > 0 ? "on" : "off";
+                                    if (updataObj.trait_on_off.curValue.ToString() == "on")
                                     {
-                                        if (updataObj.functionType == FunctionType.Fan)
+                                        switch (updataObj.functionType)
                                         {
-                                            (updataObj as Fan).openLevel = receiveBytes[2];
-                                            updataObj.lastState = Language.StringByID(StringId.Level) + " : " + receiveBytes[2];
-                                        }
-                                        else
-                                        {
-                                            (updataObj as Light).brightness = receiveBytes[2];
-                                            updataObj.lastState = Language.StringByID(StringId.Brightness) + " : " + receiveBytes[2] + "%";
+                                            case FunctionType.Fan:
+                                                (updataObj as Fan).openLevel = receiveBytes[2];
+                                                updataObj.lastState = Language.StringByID(StringId.Level) + " : " + receiveBytes[2];
+                                                break;
+                                            case FunctionType.Dimmer:
+                                                (updataObj as Light).brightness = receiveBytes[2];
+                                                updataObj.lastState = Language.StringByID(StringId.Brightness) + " : " + receiveBytes[2] + "%";
+                                                break;
                                         }
                                     }
                                     HomePage.UpdataFunctionStates(updataObj);
@@ -171,8 +168,8 @@
                             {
                                 if (light.functionType != FunctionType.RGB)
                                 {
-                                    light.trait_on_off.value = receiveBytes[light.bus_Data.LoopID] == 0 ? "off" : "on";
-                                    if (light.trait_on_off.value.ToString() == "on")
+                                    light.trait_on_off.curValue = receiveBytes[light.bus_Data.LoopID] == 0 ? "off" : "on";
+                                    if (light.trait_on_off.curValue.ToString() == "on")
                                     {
                                         light.brightness = receiveBytes[2];
                                         light.lastState = Language.StringByID(StringId.Brightness) + " : " + receiveBytes[2] + "%";
@@ -198,8 +195,8 @@
                                 if (e != null)
                                 {
                                     var fan = e as Fan;
-                                    fan.trait_on_off.value = receiveBytes[2] == 0 ? "off" : "on";
-                                    if (fan.trait_on_off.value.ToString() == "on")
+                                    fan.trait_on_off.curValue = receiveBytes[2] == 0 ? "off" : "on";
+                                    if (fan.trait_on_off.curValue.ToString() == "on")
                                     {
                                         fan.openLevel = receiveBytes[2];
                                         fan.lastState = Language.StringByID(StringId.Level) + " : " + receiveBytes[2];
@@ -229,7 +226,7 @@
                             {
                                 if (rgb.functionType == FunctionType.RGB)
                                 {
-                                    rgb.trait_on_off.value = receiveBytes[1] > 0 ? "on" : "off";
+                                    rgb.trait_on_off.curValue = receiveBytes[1] > 0 ? "on" : "off";
                                     if (receiveBytes[1] > 0)
                                     {
                                         rgb.brightness = receiveBytes[1];
@@ -258,11 +255,11 @@
                                 {
                                     if (receiveBytes[1] > 1)
                                     {
-                                        curtain.trait_on_off.value = "on";
+                                        curtain.trait_on_off.curValue = "on";
                                     }
                                     else
                                     {
-                                        curtain.trait_on_off.value = "off";
+                                        curtain.trait_on_off.curValue = "off";
                                     }
                                     curtain.percent = receiveBytes[1];
                                     curtain.lastState = Language.StringByID(StringId.Open) + curtain.percent + "%";
@@ -274,14 +271,14 @@
                                     switch (receiveBytes[1])
                                     {
                                         case 0:
-                                            curtain.trait_on_off.value = "stop";
+                                            curtain.trait_on_off.curValue = "stop";
                                             break;
                                         case 1:
-                                            curtain.trait_on_off.value = "on";
+                                            curtain.trait_on_off.curValue = "on";
                                             curtain.lastState = Language.StringByID(StringId.Open);
                                             break;
                                         case 2:
-                                            curtain.trait_on_off.value = "off";
+                                            curtain.trait_on_off.curValue = "off";
                                             curtain.lastState = Language.StringByID(StringId.Close);
                                             break;
                                     }
@@ -313,12 +310,12 @@
                             {
                                 ac.curTempType = receiveBytes[1];
                                 ac.indoorTemp = receiveBytes[2];
-                                ac.trait_on_off.value = receiveBytes[8] == 1 ? "on" : "off";
+                                ac.trait_on_off.curValue = receiveBytes[8] == 1 ? "on" : "off";
                                 ac.curModeIndex = receiveBytes[9];
                                 ac.curFanIndex = receiveBytes[10];
-                                ac.trait_temp.value = receiveBytes[11];
+                                ac.trait_temp.curValue = receiveBytes[11];
                                 ac.lastState = "";
-                                switch (ac.trait_mode.value.ToString())
+                                switch (ac.trait_mode.curValue.ToString())
                                 {
                                     case "cool":
                                         ac.lastState = Language.StringByID(StringId.Cool);
@@ -336,7 +333,7 @@
                                         ac.lastState = Language.StringByID(StringId.AirSupply);
                                         break;
                                 }
-                                switch (ac.trait_fan.value.ToString())
+                                switch (ac.trait_fan.curValue.ToString())
                                 {
                                     case "high":
                                         ac.lastState += " " + Language.StringByID(StringId.HighWindSpeed);
@@ -351,7 +348,7 @@
                                         ac.lastState += " " + Language.StringByID(StringId.Auto);
                                         break;
                                 }
-                                ac.lastState += " " + ac.trait_temp.value + ac.tempUnitString;
+                                ac.lastState += " " + ac.trait_temp.curValue + ac.tempUnitString;
                                 RoomPage.UpdataStates(ac);
                                 FunctionPage.UpdataStates(ac);
                                 HomePage.UpdataFunctionStates(ac);
@@ -367,7 +364,7 @@
                             if (fh.GetBusId() == subnetID + "_" + deviceID + "_" + receiveBytes[0])
                             {
                                 fh.curTempType = receiveBytes[2];
-                                fh.trait_on_off.value = receiveBytes[1] % 2 == 0 ? "off" : "on";
+                                fh.trait_on_off.curValue = receiveBytes[1] % 2 == 0 ? "off" : "on";
                                 fh.curModeIndex = receiveBytes[3];
                                 if (fh.modeTemp.ContainsKey("normal"))
                                 {
@@ -402,39 +399,39 @@
                                     fh.modeTemp.Add("away", receiveBytes[7]);
                                 }
 
-                                switch (fh.trait_mode.value)
+                                switch (fh.trait_mode.curValue)
                                 {
                                     case "normal":
                                         fh.lastState = Language.StringByID(StringId.Normal);
-                                        fh.trait_temp.value = receiveBytes[4];
+                                        fh.trait_temp.curValue = receiveBytes[4];
                                         break;
                                     case "day":
                                         fh.lastState = Language.StringByID(StringId.Day);
-                                        fh.trait_temp.value = receiveBytes[5];
+                                        fh.trait_temp.curValue = receiveBytes[5];
                                         break;
                                     case "night":
                                         fh.lastState = Language.StringByID(StringId.Night);
-                                        fh.trait_temp.value = receiveBytes[6];
+                                        fh.trait_temp.curValue = receiveBytes[6];
                                         break;
                                     case "timer":
                                         fh.lastState = Language.StringByID(StringId.Auto);
                                         if (receiveBytes[8] == 0)
                                         {
                                             fh.timeFlag = 0;
-                                            fh.trait_temp.value = receiveBytes[5];
+                                            fh.trait_temp.curValue = receiveBytes[5];
                                         }
                                         else
                                         {
                                             fh.timeFlag = 1;
-                                            fh.trait_temp.value = receiveBytes[6];
+                                            fh.trait_temp.curValue = receiveBytes[6];
                                         }
                                         break;
                                     case "away":
-                                        fh.trait_temp.value = receiveBytes[7];
+                                        fh.trait_temp.curValue = receiveBytes[7];
                                         fh.lastState = Language.StringByID(StringId.Away);
                                         break;
                                 }
-                                fh.lastState += " " + fh.trait_temp.value + fh.tempUnitString;
+                                fh.lastState += " " + fh.trait_temp.curValue + fh.tempUnitString;
                                 RoomPage.UpdataStates(fh);
                                 FunctionPage.UpdataStates(fh);
                                 HomePage.UpdataFunctionStates(fh);
@@ -534,13 +531,13 @@
                                 switch (receiveBytes[0])
                                 {
                                     case 3://
-                                        ac.trait_on_off.value = receiveBytes[1] == 1 ? "on" : "off";
+                                        ac.trait_on_off.curValue = receiveBytes[1] == 1 ? "on" : "off";
                                         break;
                                     case 4:
                                     case 7:
                                     case 8:
                                     case 19:
-                                        ac.trait_temp.value = receiveBytes[1];
+                                        ac.trait_temp.curValue = receiveBytes[1];
                                         break;
                                     case 5:
                                         ac.curFanIndex = receiveBytes[1];
@@ -551,7 +548,7 @@
 
                                 }
                                 ac.lastState = "";
-                                ac.lastState += " " + ac.trait_temp.value + ac.tempUnitString;
+                                ac.lastState += " " + ac.trait_temp.curValue + ac.tempUnitString;
                                 RoomPage.UpdataStates(ac);
                                 FunctionPage.UpdataStates(ac);
                                 HomePage.UpdataFunctionStates(ac);
@@ -571,6 +568,15 @@
                             }
                         }
                         break;
+                    case Command.ReadGatewayACK:
+                        var mac = ByteToHex16(receiveBytes[5]) + ByteToHex16(receiveBytes[6]) + ByteToHex16(receiveBytes[7]) + ByteToHex16(receiveBytes[8]) + ByteToHex16(receiveBytes[9]) + ByteToHex16(receiveBytes[10]) + ByteToHex16(receiveBytes[11]) + ByteToHex16(receiveBytes[12]);
+                        var Name = Encoding.GetEncoding("gb2312").GetString(receiveBytes, 13, 20).Trim('\0'); ;
+                        MainPage.Log($"name : {Name} ; mac : {mac}");
+                        if (DB_ResidenceData.residenceData.residenceGatewayMAC == mac)
+                        {
+                            DriverLayer.Control.Ins.GatewayOnline = true;
+                        }
+                        break;
                 }
             }
             catch (Exception ex)
@@ -578,7 +584,20 @@
                 MainPage.Log($"Bus Rev Erorr : {ex.Message}");
             }
         }
-
+        /// <summary>
+        /// byte杞�16杩涘埗瀛楃涓�
+        /// </summary>
+        /// <param name="b"></param>
+        /// <returns></returns>
+        string ByteToHex16(byte b)
+        {
+            string s = Convert.ToString(b, 16).ToUpper();
+            if (s.Length <= 1)
+            {
+                return "0" + s;
+            }
+            return s;
+        }
 
         /// <summary>
         /// 澶勭悊鎺ユ敹鍥炴潵鐨勬暟鎹�
@@ -623,12 +642,12 @@
                         receiveFlag += string.Format("{0},{1}", usefulBytes[0], usefulBytes[1]);
                         break;
                     case Command.ReadRemark:
-                        DriverLayer.Control.ins.myUdp.ReceiveReadRemark(usefulBytes);
+                        DriverLayer.Control.Ins.myUdp.ReceiveReadRemark(usefulBytes);
                         break;
                     default:
                         break;
                 }
-                DriverLayer.Control.ins.myUdp.ReceiveRepeatManager(receiveFlag);
+                DriverLayer.Control.Ins.myUdp.ReceiveRepeatManager(receiveFlag);
             }
             catch (Exception ex)
             {
diff --git a/HDL_ON/DriverLayer/Target.cs b/HDL_ON/DAL/DriverLayer/Target.cs
similarity index 96%
rename from HDL_ON/DriverLayer/Target.cs
rename to HDL_ON/DAL/DriverLayer/Target.cs
index 6c7a044..e156080 100644
--- a/HDL_ON/DriverLayer/Target.cs
+++ b/HDL_ON/DAL/DriverLayer/Target.cs
@@ -3,10 +3,11 @@
 using System.Text;
 using HDL_ON.Entity;
 
-namespace HDL_ON
+namespace HDL_ON.DriverLayer
 {
     /// <summary>
-    /// 鎺у埗鏁版嵁
+    /// 鎺у埗鏁版嵁鍖呭ご
+    /// bus鏁版嵁鍖呭ご
     /// </summary>
     public class Target
     {
@@ -71,7 +72,7 @@
                     bytes [15] = 0xAA;
 
                     bytes [16] = (byte)(11 + AddData.Length);
-                    bytes [17] = 252; //婧愬瓙缃戝彿
+                    bytes [17] = 0; //婧愬瓙缃戝彿
                     bytes [18] = 252; //婧愯澶囧彿
                     bytes [19] = (byte)(deviceType/256);
                     bytes [20] = (byte)(deviceType%256);
@@ -113,7 +114,7 @@
                     bytes [15] = 0xAA;
 
                     bytes [16] = 0xFF;//鏁版嵁鍖呴暱搴�
-                    bytes [17] = 252;//婧愬瓙缃戝彿
+                    bytes [17] = 0;//婧愬瓙缃戝彿
                     bytes [18] = 252;//婧愯澶囧彿
                     bytes [19] = (byte)(deviceType/256);
                     bytes [20] = (byte)(deviceType%256);
diff --git a/HDL_ON/DriverLayer/UdpSocket.cs b/HDL_ON/DAL/DriverLayer/UdpSocket.cs
similarity index 74%
rename from HDL_ON/DriverLayer/UdpSocket.cs
rename to HDL_ON/DAL/DriverLayer/UdpSocket.cs
index ac83f9b..f63851c 100644
--- a/HDL_ON/DriverLayer/UdpSocket.cs
+++ b/HDL_ON/DAL/DriverLayer/UdpSocket.cs
@@ -1,9 +1,8 @@
 锘縰sing System;
 using System.Net.Sockets;
 using System.Net;
-using Newtonsoft.Json.Linq;
 
-namespace HDL_ON
+namespace HDL_ON.DriverLayer
 {
 	public class UdpSocket
 	{
@@ -20,39 +19,34 @@
             }
         }
 
-		/// <summary>
-		/// 鐩戝惉绔彛
-		/// </summary>
-		public int port
-		{
-            get
-            {
-				if (MainPage.LoginUser != null && Entity.DB_ResidenceData.residenceData != null)
-				{
-					return Entity.DB_ResidenceData.residenceData.GatewayType == 0 ? 6000 : 8585;
-				}
-				return 6000;
-            }
-		}
-
 		//鏈湴Socket
 		private Socket busSocket;
-
+		int _port = 0;
 		/// <summary>
 		/// 鍚姩Socket鎺ユ敹鍜屽彂閫佸姛鑳�
 		/// </summary>
-		public void Start ()
+		public void Start (int port)
         {
-            if (IsRunning || port == 0) {
-                return;
+			if (IsRunning)
+			{
+                if (port == _port)
+                {
+                    return;
+                }
+                else
+                {
+                    busSocket.Close();
+                }
             }
+            _port = port;
 
             busSocket = new Socket (AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp);
             busSocket.EnableBroadcast = true;
             try {
-                busSocket.Bind (new IPEndPoint (IPAddress.Any, port));
+                //busSocket.Bind (new IPEndPoint (IPAddress.Any, 6000));
+                busSocket.Bind(new IPEndPoint(IPAddress.Any, port));
 
-				busSocket.SetSocketOption(SocketOptionLevel.IP, SocketOptionName.AddMembership, new MulticastOption(IPAddress.Parse("239.0.168.188")));
+                busSocket.SetSocketOption(SocketOptionLevel.IP, SocketOptionName.AddMembership, new MulticastOption(IPAddress.Parse("239.0.168.188")));
 			}
 			catch{
                 busSocket = null;
@@ -113,10 +107,6 @@
                 Console.WriteLine($"asyncBeginReceive {e.Message}");
             } 
 		}
-		/// <summary>
-        /// 鎼滅储缃戠粶璁惧瑙﹀彂鐨勫洖璋冧簨浠�
-        /// </summary>
-		public Action<string> SearchNetDeviceAction;
 
 		/// <summary>
 		/// 寮傛鎺ユ敹鏁版嵁缁撴潫
@@ -139,22 +129,11 @@
 				packet.Bytes = new byte[len];
 				Array.Copy(bytes, 0, packet.Bytes, 0, packet.Bytes.Length);
 
+				//MainPage.Log($"鎺ユ敹{packet.RemoteEndPoint}鏁版嵁");
 				//mqtt杩炴帴鏁版嵁璇诲彇  A鍗忚缃戠粶璁惧淇℃伅璇诲彇鍥炲 澶勭悊
 				if (((IPEndPoint)packet.RemoteEndPoint).Port == 8585)
 				{
-					var reString = System.Text.Encoding.UTF8.GetString(bytes);
-					var jt = Newtonsoft.Json.JsonConvert.DeserializeObject<JObject>(reString);
-					JToken jtc = null;
-					jt.TryGetValue("command", out jtc);
-					if (jtc != null && jtc.ToString() == "search_response")
-					{
-						JToken jto = null;
-						jt.TryGetValue("objects", out jto);
-						if (jto != null)
-						{
-							SearchNetDeviceAction?.Invoke(jto.ToString());
-						}
-					}
+					Control.Ins.ConvertReceiveData(bytes);
 				}
 				else if(((IPEndPoint)packet.RemoteEndPoint).Port == 6000)//澶勭悊bus 6000绔彛鐨勬暟鎹�
 				{
diff --git a/HDL_ON/DAL/FileUtils.cs b/HDL_ON/DAL/FileUtils.cs
index 9e93101..821be14 100644
--- a/HDL_ON/DAL/FileUtils.cs
+++ b/HDL_ON/DAL/FileUtils.cs
@@ -1,13 +1,7 @@
 锘縰sing System;
 using System.IO;
 using System.Collections.Generic;
-using Newtonsoft.Json;
-using Newtonsoft.Json.Linq;
 using Shared;
-//using HDL_ON.UI;
-using HDL_ON.DAL.Net;
-using HDL_ON.DAL;
-using HDL_ON.Entity;
 
 namespace HDL_ON
 {
@@ -412,108 +406,108 @@
             }
         }
 
-        /// <summary>
-        /// 涓嬭浇鐢靛彴銆侀煶涔愩�丏LNA绛夌瓑缃戠粶鍥剧墖
-        /// </summary>
-        /// <param name="fileName"></param>
-        /// <param name="url"></param>
-        public static void DownLoadImage(string fileName, string url)
-        {
-            #region 濡傛灉褰撳墠鐩綍涓嶅瓨鍦紝灏卞垵濮嬪寲 
-            string directioryPath = null;
-            if (Shared.Application.IsPad)
-            {
-                directioryPath = "Pad/" + "MusicImage";
-            }
-            else
-            {
-                directioryPath = "Phone/" + "MusicImage";
-            }
-            directioryPath = Path.Combine(RootPath, directioryPath);
-            if (!Directory.Exists(directioryPath))
-            {
-                Directory.CreateDirectory(directioryPath);
-            }
-            #endregion
+        ///// <summary>
+        ///// 涓嬭浇鐢靛彴銆侀煶涔愩�丏LNA绛夌瓑缃戠粶鍥剧墖
+        ///// </summary>
+        ///// <param name="fileName"></param>
+        ///// <param name="url"></param>
+        //public static void DownLoadImage(string fileName, string url)
+        //{
+        //    #region 濡傛灉褰撳墠鐩綍涓嶅瓨鍦紝灏卞垵濮嬪寲 
+        //    string directioryPath = null;
+        //    if (Shared.Application.IsPad)
+        //    {
+        //        directioryPath = "Pad/" + "MusicImage";
+        //    }
+        //    else
+        //    {
+        //        directioryPath = "Phone/" + "MusicImage";
+        //    }
+        //    directioryPath = Path.Combine(RootPath, directioryPath);
+        //    if (!Directory.Exists(directioryPath))
+        //    {
+        //        Directory.CreateDirectory(directioryPath);
+        //    }
+        //    #endregion
 
-            if (!File.Exists(fileName))
-            {
-                System.Threading.Tasks.Task.Run(() =>
-                {
-                    FileStream fs = null;
-                    try
-                    {
-                        MyWebClient webClient = new MyWebClient();
-                        byte[] recevieBytes = webClient.DownloadData(new Uri(url));
-                        fs = new FileStream(fileName, FileMode.Create, FileAccess.Write);
-                        fs.Write(recevieBytes, 0, recevieBytes.Length);
-                        fs.Flush();
-                    }
-                    catch { }
-                    finally
-                    {
-                        if (fs != null)
-                        {
-                            fs.Close();
-                        }
-                    }
-                });
-            }
-        }
+        //    if (!File.Exists(fileName))
+        //    {
+        //        System.Threading.Tasks.Task.Run(() =>
+        //        {
+        //            FileStream fs = null;
+        //            try
+        //            {
+        //                MyWebClient webClient = new MyWebClient();
+        //                byte[] recevieBytes = webClient.DownloadData(new Uri(url));
+        //                fs = new FileStream(fileName, FileMode.Create, FileAccess.Write);
+        //                fs.Write(recevieBytes, 0, recevieBytes.Length);
+        //                fs.Flush();
+        //            }
+        //            catch { }
+        //            finally
+        //            {
+        //                if (fs != null)
+        //                {
+        //                    fs.Close();
+        //                }
+        //            }
+        //        });
+        //    }
+        //}
 
-        /// <summary>
-        /// 涓嬭浇鐢靛彴銆侀煶涔愩�丏LNA绛夌瓑缃戠粶鍥剧墖
-        /// </summary>
-        /// <param name="fileName"></param>
-        /// <param name="url"></param>
-        public static string DownLoadImageFormBaidu(string album, string artist)
-        {
-            var url = "http://tingapi.ting.baidu.com/v1/restserver/ting?from=qianqian&version=2.1.0&method=baidu.ting.search.catalogSug&format=json&query=" + artist;
-            string directioryPath = "MusicImage";
-            directioryPath = Path.Combine(RootPath, directioryPath);
-            if (!Directory.Exists(directioryPath))
-            {
-                Directory.CreateDirectory(directioryPath);
-            }
-            try
-            {
-                var song = Newtonsoft.Json.JsonConvert.DeserializeObject<Song>(new HDL_ON.DAL.Net.MyWebClient().DownloadString(new Uri(url)));
-                if (song == null)
-                {
-                    return null;
-                }
-                foreach (var tempAlbum in song.album)
-                {
-                    if (tempAlbum.albumname == album && artist == tempAlbum.artistname)
-                    {
-                        var bytes = new HDL_ON.DAL.Net.MyWebClient().DownloadData(new Uri(tempAlbum.artistpic.Split('@')[0] + "@s_1,w_160,h_160"));
-                        var filePath = Path.Combine(directioryPath, "AlbumArtistImage_" + album);
-                        var fs = new FileStream(filePath, FileMode.Create, FileAccess.Write);
-                        fs.Write(bytes, 0, bytes.Length);
-                        fs.Flush();
-                        fs.Close();
-                        return filePath;
-                    }
-                }
+        ///// <summary>
+        ///// 涓嬭浇鐢靛彴銆侀煶涔愩�丏LNA绛夌瓑缃戠粶鍥剧墖
+        ///// </summary>
+        ///// <param name="fileName"></param>
+        ///// <param name="url"></param>
+        //public static string DownLoadImageFormBaidu(string album, string artist)
+        //{
+        //    var url = "http://tingapi.ting.baidu.com/v1/restserver/ting?from=qianqian&version=2.1.0&method=baidu.ting.search.catalogSug&format=json&query=" + artist;
+        //    string directioryPath = "MusicImage";
+        //    directioryPath = Path.Combine(RootPath, directioryPath);
+        //    if (!Directory.Exists(directioryPath))
+        //    {
+        //        Directory.CreateDirectory(directioryPath);
+        //    }
+        //    try
+        //    {
+        //        var song = Newtonsoft.Json.JsonConvert.DeserializeObject<Song>(new HDL_ON.DAL.Net.MyWebClient().DownloadString(new Uri(url)));
+        //        if (song == null)
+        //        {
+        //            return null;
+        //        }
+        //        foreach (var tempAlbum in song.album)
+        //        {
+        //            if (tempAlbum.albumname == album && artist == tempAlbum.artistname)
+        //            {
+        //                var bytes = new HDL_ON.DAL.Net.MyWebClient().DownloadData(new Uri(tempAlbum.artistpic.Split('@')[0] + "@s_1,w_160,h_160"));
+        //                var filePath = Path.Combine(directioryPath, "AlbumArtistImage_" + album);
+        //                var fs = new FileStream(filePath, FileMode.Create, FileAccess.Write);
+        //                fs.Write(bytes, 0, bytes.Length);
+        //                fs.Flush();
+        //                fs.Close();
+        //                return filePath;
+        //            }
+        //        }
 
-                foreach (var tempArtist in song.artist)
-                {
-                    if (artist == tempArtist.artistname)
-                    {
-                        var bytes = new HDL_ON.DAL.Net.MyWebClient().DownloadData(new Uri(tempArtist.artistpic.Split('@')[0] + "@s_1,w_160,h_160"));
-                        var filePath = Path.Combine(directioryPath, "AlbumArtistImage_" + artist);
-                        var fs = new FileStream(filePath, FileMode.Create, FileAccess.Write);
-                        fs.Write(bytes, 0, bytes.Length);
-                        fs.Flush();
-                        fs.Close();
-                        return filePath;
-                    }
-                }
+        //        foreach (var tempArtist in song.artist)
+        //        {
+        //            if (artist == tempArtist.artistname)
+        //            {
+        //                var bytes = new HDL_ON.DAL.Net.MyWebClient().DownloadData(new Uri(tempArtist.artistpic.Split('@')[0] + "@s_1,w_160,h_160"));
+        //                var filePath = Path.Combine(directioryPath, "AlbumArtistImage_" + artist);
+        //                var fs = new FileStream(filePath, FileMode.Create, FileAccess.Write);
+        //                fs.Write(bytes, 0, bytes.Length);
+        //                fs.Flush();
+        //                fs.Close();
+        //                return filePath;
+        //            }
+        //        }
 
-            }
-            catch { }
-            return null;
-        }
+        //    }
+        //    catch { }
+        //    return null;
+        //}
 
     }
     [System.Serializable]
diff --git a/HDL_ON/DAL/Mqtt/MqttClient.cs b/HDL_ON/DAL/Mqtt/MqttClient.cs
new file mode 100644
index 0000000..c06c840
--- /dev/null
+++ b/HDL_ON/DAL/Mqtt/MqttClient.cs
@@ -0,0 +1,802 @@
+锘�/*
+鏇存柊浜咵MQ杩炴帴鏂瑰紡
+*/
+using System.Collections.Generic;
+using System;
+using MQTTnet.Client;
+using System.Threading.Tasks;
+using Shared;
+using MQTTnet;
+using System.Text;
+using System.Security.Cryptography;
+using System.IO;
+using HDL_ON.DriverLayer;
+
+namespace HDL_ON.DAL.Mqtt
+{
+    public static class MqttClient
+    {
+        /// <summary>
+        /// 鍔犲瘑閫氳KEY
+        /// </summary>
+        static string mqttEncryptKey = "";
+        //static string checkGatewayTopicBase64 = "";
+
+        /// <summary>
+        /// 鎸や笅绾夸富棰�
+        /// </summary>
+        static readonly string PushNotifySqueeze = "/Push/NotifySqueeze";
+
+        /// <summary>
+        /// 闅忔満Key
+        /// </summary>
+        static string RandomKey = "";
+
+        static string GetRandomKey()
+        {
+            if (string.IsNullOrEmpty(RandomKey))
+            {
+                //闅忔満2浣嶅瓧绗︿覆
+                Random random = new Random(Guid.NewGuid().GetHashCode());
+                int num = random.Next(65, 91);
+                RandomKey = Convert.ToChar(num).ToString();
+            }
+
+            return RandomKey;
+
+        }
+
+        /// <summary>
+        /// 杩滅▼MqttClient
+        /// </summary>
+        public static IMqttClient RemoteMqttClient = new MqttFactory().CreateMqttClient();
+
+        /// <summary>
+        /// 鎺ㄩ�佹爣璇�
+        /// </summary>
+        static string PushSignStr = DateTime.Now.Ticks.ToString();
+
+        /// <summary>
+        /// 鏂紑杩滅▼Mqtt鐨勯摼鎺�
+        /// </summary>
+        static async Task DisConnectRemoteMqttClient(string s = "")
+        {
+            try
+            {
+                if (remoteIsConnected)
+                {
+                    remoteIsConnected = false;
+                    isSubscribeSuccess = false;
+                    Utlis.WriteLine($"Remote涓诲姩鏂紑_{s}");
+                    //await RemoteMqttClient.DisconnectAsync(new MQTTnet.Client.Disconnecting.MqttClientDisconnectOptions { }, CancellationToken.None);
+                    await RemoteMqttClient.DisconnectAsync();
+
+                    if (Control.Ins.IsRemote)
+                    {
+                        Control.Ins.GatewayOnline = false;
+                    }
+                }
+            }
+            catch (Exception e)
+            {
+                Utlis.WriteLine($"Remote鏂紑閫氳杩炴帴鍑哄紓甯�:{e.Message}");
+            }
+        }
+
+        /// <summary>
+        /// 鏂紑杩滅▼Mqtt鐨勯摼鎺�
+        /// </summary>
+        static async Task DisConnectRemoteMqttClientWhenStart(string s = "")
+        {
+            try
+            {
+                remoteIsConnected = false;
+                isSubscribeSuccess = false;
+                Utlis.WriteLine($"RemoteStart涓诲姩鏂紑_{s}");
+                await RemoteMqttClient.DisconnectAsync();
+            }
+            catch (Exception e)
+            {
+                Utlis.WriteLine($"RemoteStart鏂紑閫氳杩炴帴鍑哄紓甯�:{e.Message}");
+            }
+        }
+
+        /// <summary>
+        /// 鏂紑mqtt杩炴帴
+        /// </summary>
+        /// <param name="s">鏂紑鍘熷洜</param>
+        /// <param name="reset">鏄惁闇�瑕佸幓涓績鏈嶅姟鍣� 閲嶆柊鑾峰彇鍙傛暟</param>
+        /// <returns></returns>
+        public static async Task DisConnectRemote(string s = "", bool reset = true)
+        {
+            if (reset)
+            {
+                MqttInfoConfig.Current.IfGetMqttInfoSuccess = false;
+            }
+            await DisConnectRemoteMqttClient(s);
+        }
+
+        /// <summary>
+        /// 澶栫綉鐨凪QTT鏄惁姝e湪杩炴帴
+        /// </summary>
+        public static bool remoteMqttIsConnecting;
+        static bool remoteIsConnected;
+
+        static MqttClient()
+        {
+            InitMqtt();
+        }
+
+        public static bool IsInitMqtt = false;
+
+        static void InitMqtt()
+        {
+            new System.Threading.Thread(async () => {
+                while (true)
+                {
+                    try
+                    {
+                        System.Threading.Thread.Sleep(500);
+                        if (!Control.Ins.IsRemote) continue;
+
+                        await StartCloudMqtt();
+                        await SubscribeTopics();
+                    }
+                    catch { }
+                }
+            })
+            { IsBackground = true }.Start();
+        }
+
+        /// <summary>
+        /// 鍒濆鍖栫姸鎬�
+        /// </summary>
+        public static void InitState()
+        {
+            IfNeedReadAllDeviceStatus = true;
+            StartCloudMqtt();
+        }
+
+        static bool isSubscribeSuccess;
+        static async Task SubscribeTopics()
+        {
+            if (remoteIsConnected && !isSubscribeSuccess)
+            {
+                try
+                {
+                    //2020-05-14 璁㈤槄涓婚璐ㄩ噺鏀逛负0
+                    var topicFilterBusGateWayToClient = new MqttTopicFilter()
+                    {
+                        Topic = $"/BusGateWayToClient/{MqttInfoConfig.Current.HomeGatewayInfo.id}/#",
+                        QualityOfServiceLevel = MQTTnet.Protocol.MqttQualityOfServiceLevel.AtMostOnce
+                        //QualityOfServiceLevel = MQTTnet.Protocol.MqttQualityOfServiceLevel.ExactlyOnce
+                    };
+
+                    var topicFilterPush2 = new MqttTopicFilter
+                    {
+                        Topic = $"/BusGateWayToClient/{UserInfo.Current.ID}/#",
+                        QualityOfServiceLevel = MQTTnet.Protocol.MqttQualityOfServiceLevel.AtMostOnce,
+                        //QualityOfServiceLevel = MQTTnet.Protocol.MqttQualityOfServiceLevel.ExactlyOnce
+                    };
+
+                    Utlis.WriteLine("寮�濮嬭闃咃紒");
+                    var result = await RemoteMqttClient.SubscribeAsync(new MqttTopicFilter[] { topicFilterBusGateWayToClient, topicFilterPush2 });
+                    if (result.Items[0].ResultCode == MQTTnet.Client.Subscribing.MqttClientSubscribeResultCode.GrantedQoS0)
+                    {
+                        isSubscribeSuccess = true;
+                        Utlis.WriteLine("璁㈤槄鎴愬姛锛�");
+
+                        MqttRemoteSend(new byte[] { 0 }, 3);
+
+                        //杩炴帴鎴愬姛鍚庢娴嬫槸鍚﹂渶瑕侀�氳繃杩滅▼鑾峰彇Key
+                        //CheckIfNeedGetLocalPasswordFromRemote();
+                    }
+                }
+                catch (Exception ex)
+                {
+                    Console.WriteLine("璁㈤槄catch:" + ex.Message.ToString());
+                }
+            }
+        }
+
+        /// <summary>
+        /// 鍚姩杩滅▼Mqtt
+        /// </summary>
+        public static async Task StartCloudMqtt()
+        {
+
+            if (OnAppConfig.Instance.internetStatus == 0)
+            {
+                return;
+            }
+
+            if (!UserInfo.Current.IsLogin)
+            {
+                return;
+            }
+
+            //杩藉姞锛氭病鏈夎繙绋嬭繛鎺ョ殑鏉冮檺
+            if (remoteMqttIsConnecting || remoteIsConnected)
+            {
+                return;
+            }
+
+            Utlis.WriteLine($"StartCloudMqtt: 寮�濮�");
+
+            await Task.Factory.StartNew(async () => {
+                try
+                {
+                    #region 鍒濆鍖栬繙绋婱qtt
+
+                    RemoteMqttClient = new MqttFactory().CreateMqttClient();
+
+
+                    //(1)褰揫杩炴帴浜戠鐨凪qtt鎴愬姛鍚嶿鎴栬�匸浠ュ強鍚庨潰App閫氳繃浜戠Mqtt杞彂鏁版嵁缁欑綉鍏虫垚鍔熷悗],澶勭悊鎺ユ敹鍒颁簯绔暟鎹寘鍝嶅簲鏃跺湪mqttServerClient_ApplicationMessageReceived杩欎釜鏂规硶澶勭悊
+                    if (RemoteMqttClient.ApplicationMessageReceivedHandler == null)
+                    {
+                        //澶勭悊鎺ユ敹鍒扮殑鏁版嵁
+                        RemoteMqttClient.UseApplicationMessageReceivedHandler((e) => {
+                            try
+                            {
+                                var topic = e.ApplicationMessage.Topic;
+                                if (topic == $"/BusGateWayToClient/{UserInfo.Current.ID}" + PushNotifySqueeze)
+                                {
+                                    var mMes = Encoding.UTF8.GetString(e.ApplicationMessage.Payload);
+                                    //鏂版尋涓嬬嚎涓婚鏂规 鏀跺埌鎸や笅绾夸富棰�
+                                    ReceiveNotifySqueezeAsync(mMes);
+                                }
+                                else if (topic == $"/BusGateWayToClient/{MqttInfoConfig.Current.HomeGatewayInfo.id}/NotifyBusGateWayInfoChange")
+                                {//缃戝叧涓婄嚎锛岄渶瑕佹洿鏂癮eskey
+                                    //鏀跺埌缃戝叧涓婄嚎娑堟伅涓婚
+                                    ReceiveNotifyBusGateWayInfoChange();
+                                }
+                                else if (topic == $"/BusGateWayToClient/{MqttInfoConfig.Current.HomeGatewayInfo.id}/NotifyGateWayOffline")
+                                {//缃戝叧鎺夌嚎
+                                    //----绗簩姝ワ細璇诲彇璐﹀彿涓嬮潰鐨勭綉鍏冲垪琛�
+                                    ReceiveNotifyGateWayOffline();
+                                }
+                                else if (topic == $"/BusGateWayToClient/{MqttInfoConfig.Current.HomeGatewayInfo.id}/Common/CheckGateway")
+                                {
+                                    var ss = Encoding.UTF8.GetString(e.ApplicationMessage.Payload);
+                                    ReceiveCheckGateway(ss);
+                                }
+                                else
+                                {
+                                    SetGatewayOnlineResetCheck();
+                                    if (Entity.DB_ResidenceData.residenceData.GatewayType == 0)
+                                    {
+                                        var packet = new Packet();
+
+                                        if (!string.IsNullOrEmpty(mqttEncryptKey))
+                                        {
+                                            packet.Bytes = Securitys.EncryptionService.AesDecryptPayload(e.ApplicationMessage.Payload, mqttEncryptKey);
+                                        }
+                                        else
+                                        {
+                                            packet.Bytes = e.ApplicationMessage.Payload;
+                                        }
+                                        packet.Manager();
+                                    }
+                                    else
+                                    {
+                                        //A鍗忚鏁版嵁澶勭悊
+                                    }
+                                }
+                            }
+                            catch { }
+                        });
+                    }
+
+                    //(2)DisconnectedHandler
+                    if (RemoteMqttClient.DisconnectedHandler == null)
+                    {
+                        RemoteMqttClient.UseDisconnectedHandler(async (e) => {
+                            Utlis.WriteLine($"杩滅▼杩炴帴鏂紑");
+                            isSubscribeSuccess = false;
+                            await DisConnectRemoteMqttClient("UseDisconnectedHandler");
+                        });
+                    }
+                    //(3)ConnectedHandler
+                    if (RemoteMqttClient.ConnectedHandler == null)
+                    {
+                        RemoteMqttClient.UseConnectedHandler(async (e) => {
+                            IfNeedReadAllDeviceStatus = true;
+                            Utlis.WriteLine($"============>Mqtt杩滅▼杩炴帴鎴愬姛");
+                            SendPushSignOut();
+
+                            //if (Control.Ins.IsRemote) {
+                            //    //Utlis.ShowAppLinkStatus (AppLinkStatus.CloudLink);
+                            //    MainPage.AddTip (Language.StringByID (SimpleControl.R.MyInternationalizationString.LinkSuccess));
+                            //}
+                        });
+                    }
+                    #endregion
+                    //}
+
+                    //(4)===========寮�濮嬭繛鎺ヨ繃绋�==========
+                    //涔嬪墠宸茬粡鑾峰彇鍙傛暟鎴愬姛杩�
+                    if (MqttInfoConfig.Current.IfGetMqttInfoSuccess)
+                    {
+                        //鍒ゆ柇鏄惁闇�瑕侀噸鏂拌幏鍙�
+                        await CheckMQTTConnectAsync();
+                    }
+                    else
+                    {
+                        //寮�濮嬭幏鍙栬繙绋嬭繛鎺ュ弬鏁�
+                        await StartMQTTGetInfo();
+                    }
+
+                }
+                catch (Exception ex)
+                {
+                    Utlis.WriteLine($"error:" + ex.Message);
+                }
+                finally
+                {
+                    //鏈�缁堣閲婃斁杩炴帴鐘舵��
+                    remoteMqttIsConnecting = false;
+
+                    Utlis.WriteLine($"StartCloudMqtt: 缁撴潫");
+                }
+
+            });
+        }
+
+
+        /// <summary>
+        /// 妫�娴嬫槸鍚﹂渶瑕佸彂閫佸埛鏂拌幏鍙栨墍鏈夎澶囩殑鍛戒护
+        /// </summary>
+        static void CheckIfNeedReadAllDeviceStatus()
+        {
+            if (IfNeedReadAllDeviceStatus)
+            {
+                Utlis.WriteLine("ReadAllDeviceStatus");
+                IfNeedReadAllDeviceStatus = false;
+            }
+        }
+
+
+        /// <summary>
+        /// 妫�娴嬩箣鍓嶈幏鍙栫殑Mac涓庡綋鍓嶄綇瀹匨AC鏄惁涓�鑷� 涓嶄竴鑷翠粠鏂拌幏鍙�
+        /// </summary>
+        /// <returns></returns>
+        static async Task CheckMQTTConnectAsync()
+        {
+            try
+            {
+                if (MqttInfoConfig.Current.HomeGatewayInfo != null && MqttInfoConfig.Current.HomeGatewayInfo.mac == Entity.DB_ResidenceData.residenceData.residenceGatewayMAC)
+                {
+                    await MQTTConnectAsync();
+                }
+                else
+                {
+                    //Mac 鍙樺寲浜嗛噸鏂拌幏鍙栧弬鏁�
+                    await StartMQTTGetInfo();
+                }
+            }
+            catch
+            {
+                MqttInfoConfig.Current.IfGetMqttInfoSuccess = false;
+            }
+
+        }
+
+        /// <summary>
+        /// 寮�濮嬭幏鍙朚qtt 杩滅▼鍙傛暟
+        /// </summary>
+        /// <returns></returns>
+        static async Task StartMQTTGetInfo()
+        {
+            if (!Control.Ins.IsRemote)
+            {
+                return;
+            }
+
+            await GetMqttInfoAndMQTTConnectAsync();
+
+            ////--鍒ゆ柇鏄綋鍓嶆槸鍚﹀垎浜殑浣忓畢
+            //if (!UserConfig.Instance.CurrentRegion.IsOthreShare) {
+            //    //涓昏处鍙疯幏鍙朚QTT 杩滅▼閾炬帴淇℃伅锛屽苟杩炴帴
+            //    await GetMqttInfoAndMQTTConnectAsync ();
+            //} else {
+            //    //濡傛灉鏄垎浜繃鏉ョ殑浣忓畢 璧颁笅闈㈡祦绋�
+            //    //--绗竴姝ワ細鑾峰彇褰撳墠浣忓垎浜畢缃戝叧淇℃伅骞惰繛鎺QTT
+            //    await GetSingleHomeGatewayPaggerAndMQTTConnectAsync ();
+            //}
+        }
+
+        /// <summary>
+        /// 杩炴帴MQTT
+        /// </summary>
+        static async Task MQTTConnectAsync()
+        {
+
+            if (!Control.Ins.IsRemote)
+            {
+                return;
+            }
+
+            if (MqttInfoConfig.Current.HomeGatewayInfo != null && MqttInfoConfig.Current.mMqttInfo != null)
+            {
+                try
+                {
+
+                    var url = MqttInfoConfig.Current.mMqttInfo.url;
+
+                    //url = HttpUtil.GetProxyEMQUrl (url);
+                    //#if DEBUG
+                    //                   url = HttpUtil.GetProxyEMQUrl (url);
+
+                    //#endif
+                    var clientId = MqttInfoConfig.Current.mMqttInfo.clientId;
+                    var username = MqttInfoConfig.Current.mMqttInfo.userName;
+                    var passwordRemote = MqttInfoConfig.Current.mMqttInfo.passWord;
+                    //鑾峰彇鍙傛暟鎴愬姛锛屼繚瀛樺埌鏈湴骞舵爣璁颁负true
+                    MqttInfoConfig.Current.IfGetMqttInfoSuccess = true;
+                    MqttInfoConfig.Current.Save();
+
+                    mqttEncryptKey = MqttInfoConfig.Current.HomeGatewayInfo.aesKey;
+
+                    var options1 = new MQTTnet.Client.Options.MqttClientOptionsBuilder()
+                                        .WithClientId(clientId)
+                                        .WithTcpServer(url.Split(':')[1].Substring("//".Length), int.Parse(url.Split(':')[2]))
+                                        .WithCredentials(username, passwordRemote)
+                                        .WithCleanSession()
+                                        .WithProtocolVersion(MQTTnet.Formatter.MqttProtocolVersion.V311)
+                                        .WithCommunicationTimeout(new TimeSpan(0, 0, 10))
+                                        //.WithCommunicationTimeout (new TimeSpan (0, 0, 5))
+                                        //.WithCommunicationTimeout (new TimeSpan (0, 1, 0))
+                                        .Build();
+
+                    await DisConnectRemoteMqttClient("StartRemoteMqtt");
+
+                    var mResult = await RemoteMqttClient.ConnectAsync(options1);
+
+                    if (mResult.ResultCode == MQTTnet.Client.Connecting.MqttClientConnectResultCode.Success)
+                    {
+                        remoteIsConnected = true;
+                        IsDisConnectingWithSendCatch = false;
+                    }
+                    else
+                    {
+                        //閲嶆柊涓績鏈嶅姟鍣ㄨ幏鍙栧弬鏁版爣璁�
+                        MqttInfoConfig.Current.IfGetMqttInfoSuccess = false;
+                    }
+
+                }
+                catch (Exception ex)
+                {
+
+                    //閲嶆柊涓績鏈嶅姟鍣ㄨ幏鍙栧弬鏁版爣璁�
+                    MqttInfoConfig.Current.IfGetMqttInfoSuccess = false;
+                    Console.WriteLine("Connect error: " + ex.Message);
+                }
+                finally
+                {
+
+                }
+
+            }
+            else
+            {
+                MqttInfoConfig.Current.IfGetMqttInfoSuccess = false;
+            }
+
+        }
+
+        /// <summary>
+        /// 鏀跺埌缃戝叧涓婄嚎娑堟伅
+        /// </summary>
+        static void ReceiveNotifyBusGateWayInfoChange()
+        {
+            try
+            {
+                SetGatewayOnlineResetCheck();
+                if (Control.Ins.IsRemote)
+                {
+                    CheckIfNeedReadAllDeviceStatus();
+                }
+
+            }
+            catch { }
+        }
+
+        /// <summary>
+        /// 鏀跺埌缃戝叧鎺夌嚎淇℃伅
+        /// </summary>
+        static void ReceiveNotifyGateWayOffline()
+        {
+            if (Control.Ins.IsRemote)
+            {
+                Control.Ins.GatewayOnline = false;
+            }
+        }
+
+
+        /// <summary>
+        /// 鏀跺埌鎸や笅绾挎帹閫�
+        /// </summary>
+        static void ReceiveNotifySqueezeAsync(string mMes)
+        {
+
+            if (mMes == PushSignStr) return;//鏄嚜宸辩殑鐧诲綍鎺ㄩ�佷笉澶勭悊
+
+            //鏂紑杩滅▼杩炴帴
+            Control.Ins.IsRemote = false;
+            if (!UserInfo.Current.IsLogin)
+            {
+                return;
+            }
+
+            DisConnectRemoteMqttClient("鎸や笅绾�");
+
+            UserInfo.Current.LastTime = DateTime.MinValue;
+            UserInfo.Current.SaveUserInfo();
+
+            Application.RunOnMainThread(() => {
+                MainPage.GoLoginPage(UserInfo.Current);
+                //寮圭獥鎻愮ず琚尋涓嬬嚎
+            });
+
+            //2020-08-11 鍒犻櫎鎺ㄩ�佹暟鎹�
+            //HDLRequest.Current.PushserivceSignOut ();
+        }
+
+        /// <summary>
+        /// 鏀跺埌CheckGateway涓婚
+        /// </summary>
+        static void ReceiveCheckGateway(string mMes)
+        {
+            if (!Control.Ins.IsRemote) return;
+
+            Utlis.WriteLine("ReceiveCheckGateway锛�");
+
+            //CheckIfNeedReadAllDeviceStatus ();
+
+            //var obj = Newtonsoft.Json.JsonConvert.DeserializeObject<ResponsePack>(mMes);
+            Control.Ins.GatewayOnline = true;
+        }
+
+        /// <summary>
+        /// 鎺ㄩ�佹尋涓嬬嚎涓婚
+        /// </summary>
+        static void SendPushSignOut()
+        {
+            byte[] message = Encoding.UTF8.GetBytes(PushSignStr);
+            MqttRemoteSend(message, 4);
+        }
+
+        /// <summary>
+        /// 
+        /// </summary>
+        /// <param name="message">闄勫姞鏁版嵁鍖�</param>
+        /// <param name="optionType">鎿嶄綔绫诲瀷锛�0=缃戝叧鎺у埗锛�1=璁㈤槄缃戝叧鏁版嵁;2=璁㈤槄缃戝叧涓婄嚎鏁版嵁</param>
+        /// <returns></returns>
+        public static async Task MqttRemoteSend(byte[] message, int optionType = 0)
+        {
+            //return;
+
+            try
+            {
+                string topicName;
+                switch (optionType)
+                {
+                    case 0:
+                        topicName = $"/ClientToBusGateWay/{MqttInfoConfig.Current.HomeGatewayInfo.id}/Common/ON";
+                        if (!string.IsNullOrEmpty(mqttEncryptKey))
+                        {
+                            message = Securitys.EncryptionService.AesEncryptPayload(message, mqttEncryptKey);
+                        }
+                        await RemoteMqttClient.PublishAsync(new MqttApplicationMessage { Topic = topicName, Payload = message, Retain = false, QualityOfServiceLevel = MQTTnet.Protocol.MqttQualityOfServiceLevel.AtMostOnce });
+                        break;
+                    case 3:
+                        topicName = $"/ClientToBusGateWay/{MqttInfoConfig.Current.HomeGatewayInfo.id}/Common/CheckGateway";
+                        Utlis.WriteLine("CheckGateway");
+                        await RemoteMqttClient.PublishAsync(new MqttApplicationMessage { Topic = topicName, Retain = false, QualityOfServiceLevel = MQTTnet.Protocol.MqttQualityOfServiceLevel.AtMostOnce });
+                        break;
+                    case 4://鍙戝竷鏂版柟妗堢殑鎸や笅绾夸富棰�
+                        topicName = $"/BusGateWayToClient/{UserInfo.Current.ID}" + PushNotifySqueeze;
+                        //message = Encoding.UTF8.GetBytes (PushSignStr);
+                        await RemoteMqttClient.PublishAsync(new MqttApplicationMessage { Topic = topicName, Payload = message, Retain = false, QualityOfServiceLevel = MQTTnet.Protocol.MqttQualityOfServiceLevel.AtMostOnce });
+                        break;
+                }
+            }
+            catch (Exception e)
+            {
+                //Utlis.WriteLine ($"============>Mqtt MqttRemoteSend catch");
+                if (!IsDisConnectingWithSendCatch)
+                {
+                    IsDisConnectingWithSendCatch = true;
+                    await DisConnectRemoteMqttClient("SendCatch");
+                }
+            }
+        }
+        /// <summary>
+        /// SendCatch 鍚庢墽琛屼竴娆℃柇寮�鎿嶄綔
+        /// </summary>
+        static bool IsDisConnectingWithSendCatch = false;
+
+
+        /// <summary>
+        /// 鏄惁闇�瑕佽鍙栦竴娆℃墍鏈夎澶囩姸鎬�
+        /// </summary>
+        static bool IfNeedReadAllDeviceStatus = true;
+        //public static bool IsGatewayOnline = true;
+
+        /// <summary>
+        /// 璁剧疆缃戝叧鍦ㄧ嚎鏍囧織锛屽苟閲嶇疆CheckGateway鍙傛暟
+        /// </summary>
+        static void SetGatewayOnlineResetCheck()
+        {
+            if (Control.Ins.IsRemote)
+            {
+                Control.Ins.GatewayOnline = true;
+            }
+        }
+
+
+        /// <summary>
+        /// 涓昏处鍙疯幏鍙朚QTT 杩滅▼閾炬帴淇℃伅锛屽苟杩炴帴
+        /// </summary>
+        /// <returns></returns>
+        static async Task GetMqttInfoAndMQTTConnectAsync()
+        {
+            var mqttInfoRequestResult_Obj = new Server.HttpServerRequest().GetMqttRemoteInfo(GetRandomKey());
+            if (mqttInfoRequestResult_Obj != null)
+            {
+                MqttInfoConfig.Current.mMqttInfo = mqttInfoRequestResult_Obj;
+                await MQTTConnectAsync();
+            }
+        }
+
+    }
+}
+
+
+public class MqttInfo
+{
+    /// <summary>
+    /// 
+    /// </summary>
+    public string url;
+    /// <summary>
+    /// 
+    /// </summary>
+    public string clientId;
+    /// <summary>
+    /// 
+    /// </summary>
+    public string userName;
+    /// <summary>
+    /// 
+    /// </summary>
+    public string passWord;
+}
+
+
+
+namespace Securitys
+{
+    public partial class EncryptionService
+    {
+
+        #region 鍔犲瘑
+        /// <summary>
+        /// 鍔犲瘑涓婚涓築ase64
+        /// </summary>
+        /// <param name="pToEncrypt"></param>
+        /// <param name="key"></param>
+        /// <returns></returns>
+        public static string AesEncryptTopic(string pToEncrypt, string key)
+        {
+            if (string.IsNullOrEmpty(pToEncrypt)) return null;
+            if (string.IsNullOrEmpty(key)) return pToEncrypt;
+            //闇�瑕佸姞瀵嗗唴瀹圭殑鏄庢枃娴�
+            Byte[] toEncryptArray = Encoding.UTF8.GetBytes(pToEncrypt);
+
+            //閰嶇疆AES鍔犲瘑Key(瀵嗛挜銆佸悜閲忋�佹ā寮忋�佸~鍏�)
+            RijndaelManaged rm = new RijndaelManaged
+            {
+                Key = Encoding.UTF8.GetBytes(key),
+                IV = Encoding.UTF8.GetBytes(key),
+                Mode = CipherMode.CBC,
+                Padding = PaddingMode.PKCS7
+            };
+
+            //鍒涘缓AES鍔犲瘑鍣ㄥ璞�
+            ICryptoTransform cTransform = rm.CreateEncryptor();
+
+            //浣跨敤AES灏嗘槑鏂囨祦杞垚瀵嗘枃瀛楄妭鏁扮粍
+            Byte[] resultArray = cTransform.TransformFinalBlock(toEncryptArray, 0, toEncryptArray.Length);
+
+            //灏咥ES鐢熸垚鐨勫瘑鏂囧瓧鑺傛暟缁勮浆鎴怋ase64瀛楃涓�
+            return Convert.ToBase64String(resultArray, 0, resultArray.Length);
+        }
+
+
+        /// <summary>
+        /// 鍔犲瘑璐熻浇涓轰簩杩涘埗娴�
+        /// </summary>
+        /// <param name="toEncryptArray"></param>
+        /// <param name="key"></param>
+        /// <returns></returns>
+        public static byte[] AesEncryptPayload(byte[] toEncryptArray, string key)
+        {
+            if (string.IsNullOrEmpty(key)) return toEncryptArray;
+            //閰嶇疆AES鍔犲瘑Key(瀵嗛挜銆佸悜閲忋�佹ā寮忋�佸~鍏�)
+            var rm = new RijndaelManaged
+            {
+                Key = Encoding.UTF8.GetBytes(key),
+                IV = Encoding.UTF8.GetBytes(key),
+                Mode = CipherMode.CBC,
+                Padding = PaddingMode.PKCS7
+            };
+
+            //鍒涘缓AES鍔犲瘑鍣ㄥ璞�
+            var cTransform = rm.CreateEncryptor();
+            //浣跨敤AES灏嗘槑鏂囨祦杞垚瀵嗘枃瀛楄妭鏁扮粍
+            return cTransform.TransformFinalBlock(toEncryptArray, 0, toEncryptArray.Length);
+        }
+        #endregion
+
+
+        #region 瑙e瘑
+        /// <summary>
+        /// 瑙e瘑涓婚鏁版嵁
+        /// </summary>
+        /// <param name="pToDecrypt"></param>
+        /// <param name="key"></param>
+        /// <returns></returns>
+        public static string AesDecryptTopic(string pToDecrypt, string key)
+        {
+            //AES瀵嗘枃Base64杞垚瀛楃涓�
+            Byte[] toEncryptArray = Convert.FromBase64String(pToDecrypt);
+
+            //閰嶇疆AES鍔犲瘑Key(瀵嗛挜銆佸悜閲忋�佹ā寮忋�佸~鍏�)
+            RijndaelManaged rm = new RijndaelManaged
+            {
+                Key = Encoding.UTF8.GetBytes(key),
+                IV = Encoding.UTF8.GetBytes(key),
+                Mode = CipherMode.CBC,
+                Padding = PaddingMode.PKCS7
+            };
+
+            //鍒涘缓AES瑙e瘑鍣ㄥ璞�
+            ICryptoTransform cTransform = rm.CreateDecryptor();
+
+            //浣跨敤AES灏嗗瘑鏂囨祦杞垚鏄庢枃鐨勫瓧鑺傛暟缁�
+            Byte[] resultArray = cTransform.TransformFinalBlock(toEncryptArray, 0, toEncryptArray.Length);
+
+            //杞垚瀛楃涓�
+            return Encoding.UTF8.GetString(resultArray);
+        }
+
+        /// <summary>
+        /// 閲囩敤Aes瑙e瘑璐熻浇鏁版嵁
+        /// </summary>
+        /// <param name="toEncryptArray"></param>
+        /// <param name="key"></param>
+        /// <returns></returns>
+        public static byte[] AesDecryptPayload(byte[] toEncryptArray, string key)
+        {
+            //閰嶇疆AES鍔犲瘑Key(瀵嗛挜銆佸悜閲忋�佹ā寮忋�佸~鍏�)
+            var rm = new RijndaelManaged
+            {
+                Key = Encoding.UTF8.GetBytes(key),
+                IV = Encoding.UTF8.GetBytes(key),
+                Mode = CipherMode.CBC,
+                Padding = PaddingMode.PKCS7
+            };
+
+            //鍒涘缓AES瑙e瘑鍣ㄥ璞�
+            var cTransform = rm.CreateDecryptor();
+
+            //浣跨敤AES灏嗗瘑鏂囨祦杞垚鏄庢枃鐨勫瓧鑺傛暟缁�
+            return cTransform.TransformFinalBlock(toEncryptArray, 0, toEncryptArray.Length);
+        }
+        #endregion
+
+
+
+    }
+}
diff --git a/HDL_ON/DAL/Mqtt/MqttInfoConfig.cs b/HDL_ON/DAL/Mqtt/MqttInfoConfig.cs
new file mode 100644
index 0000000..c83e9f5
--- /dev/null
+++ b/HDL_ON/DAL/Mqtt/MqttInfoConfig.cs
@@ -0,0 +1,78 @@
+锘縰sing System;
+using System.Text;
+using HDL_ON.DAL.Server;
+
+namespace HDL_ON.DAL.Mqtt
+{
+    [System.Serializable]
+    public class MqttInfoConfig
+    {
+        public static readonly string ConfigFile = "MqttInfoConfig";
+
+        /// <summary>
+        /// 鎺ュ彛绫荤殑杩斿洖淇℃伅
+        /// </summary>
+        static MqttInfoConfig m_Current = null;
+        /// <summary>
+        /// 鎺ュ彛绫荤殑杩斿洖淇℃伅
+        /// </summary>
+        public static MqttInfoConfig Current
+        {
+            get
+            {
+                if (m_Current == null)
+                {
+                    try
+                    {
+                        var MqttInfoConfigBytes = FileUtils.ReadFile(ConfigFile);
+                        var MqttInfoConfigString = Encoding.UTF8.GetString(MqttInfoConfigBytes);
+                        MqttInfoConfig temp = null;
+                        if (MqttInfoConfigString != null)
+                        {
+                            temp = Newtonsoft.Json.JsonConvert.DeserializeObject<MqttInfoConfig>(MqttInfoConfigString);
+                        }
+                        if (temp == null)
+                        {
+                            m_Current = new MqttInfoConfig { };
+                        }
+                        else
+                        {
+                            m_Current = temp;
+                        }
+                    }
+                    catch
+                    {
+                        m_Current = new MqttInfoConfig { };
+                    }
+                }
+                return m_Current;
+            }
+        }
+
+        public HomeGatewayInfo HomeGatewayInfo = null;
+
+        public MqttInfo mMqttInfo = null;
+
+        /// <summary>
+        /// 鏄惁鑾峰彇MQTT鍙傛暟鎴愬姛
+        /// </summary>
+        public bool IfGetMqttInfoSuccess = false;
+
+
+        byte[] GetMqttInfoConfigBytes()
+        {
+            return Encoding.UTF8.GetBytes(Newtonsoft.Json.JsonConvert.SerializeObject(this));
+        }
+
+        public void Refresh()
+        {
+            m_Current = null;
+            Save();
+        }
+
+        public void Save()
+        {
+            FileUtils.WriteFileByBytes(ConfigFile, GetMqttInfoConfigBytes());
+        }
+    }
+}
\ No newline at end of file
diff --git a/HDL_ON/DAL/Net/HttpListener.cs b/HDL_ON/DAL/Net/HttpListener.cs
deleted file mode 100644
index a72de07..0000000
--- a/HDL_ON/DAL/Net/HttpListener.cs
+++ /dev/null
@@ -1,224 +0,0 @@
-锘縰sing System;
-using System.Linq;
-using System.Web;
-//using HDL_ON.UI;
-
-namespace HDL_ON.DAL.Net
-{
-    public static class HttpListener
-    {
-        private static System.Net.HttpListener listener;
-
-        /// <summary>
-        /// 鍚姩鐩戝惉鍙婂鐞�
-        /// </summary>
-        public static void Start(System.Net.IPAddress ipAddress, int port)
-        {
-            try
-            {
-                if (listener == null)
-                {
-                    listener = new System.Net.HttpListener();
-
-                    listener.AuthenticationSchemes = System.Net.AuthenticationSchemes.Anonymous;
-
-                    //listener.Prefixes.Add (string.Format ("http://{0}:{1}/", ipAddress.ToString (), port));
-                    listener.Prefixes.Add($"http://+:{port}/");
-                    listener.Start();
-
-                    //beginGetContext(listener);
-                    contextThread = new System.Threading.Thread(() =>
-                    {
-                        while (true)
-                        {
-                            var context = listener.GetContext();
-                            System.Threading.Tasks.Task.Run(() =>
-                            {
-                                manager(context);
-                            });
-                        }
-                    })
-                    { IsBackground = true };
-                    contextThread.Start();
-                    MainPage.Log("HttpListener宸茬粡鍚姩!");
-                }
-            }
-            catch (Exception e)
-            {
-                MainPage.Log("HttpListener鍚姩澶辫触!\r\n" + e.Message);
-            }
-        }
-        /// <summary>
-        /// 
-        /// </summary>
-        static System.Threading.Thread contextThread;
-        /// <summary>
-        /// 璇锋眰浜嬩欢
-        /// </summary>
-        /// <param name="commandType">璇锋眰鍛戒护</param>
-        /// <param name="outStream">杈撳嚭娴�</param>
-        /// <param name="inStream">杈撳叆娴�</param>
-        public delegate void RequestEventHandler(System.Collections.Specialized.NameValueCollection nameValueCollection, System.IO.Stream outputStream, System.IO.Stream inputStream);
-
-        /// <summary>
-        /// 璇锋眰浜嬩欢
-        /// </summary>
-        public static event RequestEventHandler EventHandler;
-
-        /// <summary>
-        /// 寮�濮嬪紓姝ユ帴鏀秇ttp璇锋眰
-        /// </summary>
-        /// <param name="listerner"></param>
-        private static void beginGetContext(System.Net.HttpListener listerner)
-        {
-            try
-            {
-                if (listerner == null || !listerner.IsListening)
-                {
-                    return;
-                }
-                listerner.BeginGetContext(new System.AsyncCallback(getContextCallBack), null);
-
-            }
-            catch
-            {
-                System.Threading.Thread.Sleep(1);
-                beginGetContext(listerner);
-            }
-        }
-
-        /// <summary>
-        /// 鑾峰彇http璇锋眰锛屽苟澶勭悊
-        /// </summary>
-        /// <param name="ar"></param>
-        private static void getContextCallBack(System.IAsyncResult ar)
-        {
-            beginGetContext(listener);
-            try
-            {
-                System.Net.HttpListenerContext context = listener.EndGetContext(ar);
-                manager(context);
-            }
-            catch { }
-        }
-
-        /// <summary>
-        /// 鍏抽棴
-        /// </summary>
-        public static void Close()
-        {
-            try
-            {
-                if (contextThread != null)
-                {
-                    contextThread.Abort();
-                    contextThread = null;
-                }
-            }
-            catch { }
-            try
-            {
-                if (listener != null)
-                {
-                    listener.Close();
-                    listener = null;
-                }
-            }
-            catch { }
-            MainPage.Log("HttpListener宸茬粡鍏抽棴!");
-        }
-
-        private static void manager(System.Net.HttpListenerContext httpListenerContext)
-        {
-            System.Net.HttpListenerResponse httpListenerResponse = null;
-
-            try
-            {
-                #region
-                httpListenerResponse = httpListenerContext.Response;
-
-                httpListenerResponse.StatusCode = 200;//璁剧疆杩斿洖缁欏鏈嶇http鐘舵�佷唬鐮�
-                httpListenerResponse.ContentEncoding = System.Text.Encoding.UTF8;
-
-
-                if (EventHandler != null)
-                {
-                    EventHandler(HttpUtility.ParseQueryString(System.IO.Path.GetFileName(httpListenerContext.Request.RawUrl)), httpListenerResponse.OutputStream, httpListenerContext.Request.InputStream);
-                }
-                httpListenerResponse.OutputStream.Flush();
-
-                #endregion
-            }
-            catch
-            {
-
-            }
-            finally
-            {
-                #region
-                try
-                {
-                    httpListenerContext.Request.InputStream.Close();
-                }
-                catch { }
-
-                try
-                {
-                    httpListenerResponse.OutputStream.Close();
-                }
-                catch { }
-
-
-                try
-                {
-                    httpListenerResponse.Close();
-                }
-                catch { }
-
-                #endregion
-            }
-        }
-
-        public static void PostData(string url, string postJson)
-        {
-            System.IO.Stream outputStream = null;
-            System.IO.Stream inputStream = null;
-            try
-            {
-                System.Net.HttpWebRequest webReq = (System.Net.HttpWebRequest)System.Net.WebRequest.Create(new Uri(url));
-                webReq.Method = "POST";
-                //webReq
-
-                byte[] byteData = System.Text.Encoding.UTF8.GetBytes(postJson);
-                //瀹氫箟浼犻�佹暟鎹牸寮�
-                webReq.ContentType = "application/json";
-                webReq.Accept = "application/json";
-                //webReq.ContentType = "application/x-www-form-urlencoded";
-                //webReq.Timeout = 1000*2;
-                webReq.ContentLength = byteData.Length;
-                //瀹氫箟Stream淇℃伅
-                outputStream = webReq.GetRequestStream();
-                outputStream.Write(byteData, 0, byteData.Length);
-                outputStream.Flush();
-                outputStream.Close();
-
-                //inputStream=  webReq.GetResponse().GetResponseStream();
-            }
-            catch
-            {
-                throw new Exception("鍙戦�佸け璐�");
-            }
-            finally
-            {
-                if (null != outputStream)
-                {
-                    outputStream.Close();
-                }
-                if (null != inputStream)
-                {
-                    inputStream.Close();
-                }
-            }
-        }
-    }
-}
diff --git a/HDL_ON/DAL/Net/MqttCommon.cs b/HDL_ON/DAL/Net/MqttCommon.cs
deleted file mode 100644
index a2d2d5c..0000000
--- a/HDL_ON/DAL/Net/MqttCommon.cs
+++ /dev/null
@@ -1,196 +0,0 @@
-锘縰sing System.Collections.Generic;
-using System;
-using System.Text;
-using System.Security.Cryptography;
-
-namespace HDL_ON.DAL.Net
-{
-
-    public class RemoteRequestParameters
-    {
-        public string RequestVersion;
-        public int RequestSource;
-        public string LoginAccessToken;
-        public int RequestProtocolType;
-
-        public int HdlGatewayGatewayType = 0;
-        public bool IsRedirectSelectEmqServer = false;
-        /// <summary>
-        /// 骞冲彴绫诲瀷瀛楃涓�
-        /// </summary>
-        public string PlatformStr;
-        /// <summary>
-        /// 鍙戝竷涓婚璐熻浇
-        /// </summary>
-        public string PublishPayloadJsonStr;
-
-        public string Mac = "";
-        public string GroupName = "";
-    }
-
-    public class MqttRemoteInfo
-    {
-        public List<RemoteMACInfo> pageData;
-
-        public int pageIndex = 0;
-        public int pageSize = 10;
-        public int totalCount = 3;
-        public int totalPages = 1;
-        public bool hasPreviousPage = false;
-        public bool hasNextPage = false;
-    }
-
-    public class MqttInfo
-    {
-        public string connEmqDomainPort;
-        public string connEmqClientId;
-        public string connEmqUserName;
-        public string connEmqPwd;
-
-        public List<RemoteMACInfo> AccountAllGateways;
-
-    }
-
-    public class RemoteMACInfo
-    {
-        public string mac;
-        public string macMark;
-        public string isValid;
-        public string aesKey;
-        public bool isNewBusproGateway;
-        public string groupName;
-        public string projectName;
-        public string userName;
-
-        public string clientId;
-
-        //app鑷畾涔夋暟鎹�
-        public string md5_mac_string;
-        public string LoginAccessToken;
-    }
-
-    namespace Shared.Securitys
-    {
-        public partial class EncryptionService
-        {
-
-            #region 鍔犲瘑
-            /// <summary>
-            /// 鍔犲瘑涓婚涓築ase64
-            /// </summary>
-            /// <param name="pToEncrypt"></param>
-            /// <param name="key"></param>
-            /// <returns></returns>
-            public static string AesEncryptTopic(string pToEncrypt, string key)
-            {
-                if (string.IsNullOrEmpty(pToEncrypt)) return null;
-                if (string.IsNullOrEmpty(key)) return pToEncrypt;
-                //闇�瑕佸姞瀵嗗唴瀹圭殑鏄庢枃娴�
-                Byte[] toEncryptArray = Encoding.UTF8.GetBytes(pToEncrypt);
-
-                //閰嶇疆AES鍔犲瘑Key(瀵嗛挜銆佸悜閲忋�佹ā寮忋�佸~鍏�)
-                RijndaelManaged rm = new RijndaelManaged
-                {
-                    Key = Encoding.UTF8.GetBytes(key),
-                    IV = Encoding.UTF8.GetBytes(key),
-                    Mode = CipherMode.CBC,
-                    Padding = PaddingMode.PKCS7
-                };
-
-                //鍒涘缓AES鍔犲瘑鍣ㄥ璞�
-                ICryptoTransform cTransform = rm.CreateEncryptor();
-
-                //浣跨敤AES灏嗘槑鏂囨祦杞垚瀵嗘枃瀛楄妭鏁扮粍
-                Byte[] resultArray = cTransform.TransformFinalBlock(toEncryptArray, 0, toEncryptArray.Length);
-
-                //灏咥ES鐢熸垚鐨勫瘑鏂囧瓧鑺傛暟缁勮浆鎴怋ase64瀛楃涓�
-                return Convert.ToBase64String(resultArray, 0, resultArray.Length);
-            }
-
-
-            /// <summary>
-            /// 鍔犲瘑璐熻浇涓轰簩杩涘埗娴�
-            /// </summary>
-            /// <param name="toEncryptArray"></param>
-            /// <param name="key"></param>
-            /// <returns></returns>
-            public static byte[] AesEncryptPayload(byte[] toEncryptArray, string key)
-            {
-                if (string.IsNullOrEmpty(key)) return toEncryptArray;
-                //閰嶇疆AES鍔犲瘑Key(瀵嗛挜銆佸悜閲忋�佹ā寮忋�佸~鍏�)
-                var rm = new RijndaelManaged
-                {
-                    Key = Encoding.UTF8.GetBytes(key),
-                    IV = Encoding.UTF8.GetBytes(key),
-                    Mode = CipherMode.CBC,
-                    Padding = PaddingMode.PKCS7
-                };
-
-                //鍒涘缓AES鍔犲瘑鍣ㄥ璞�
-                var cTransform = rm.CreateEncryptor();
-                //浣跨敤AES灏嗘槑鏂囨祦杞垚瀵嗘枃瀛楄妭鏁扮粍
-                return cTransform.TransformFinalBlock(toEncryptArray, 0, toEncryptArray.Length);
-            }
-            #endregion
-
-
-            #region 瑙e瘑
-            /// <summary>
-            /// 瑙e瘑涓婚鏁版嵁
-            /// </summary>
-            /// <param name="pToDecrypt"></param>
-            /// <param name="key"></param>
-            /// <returns></returns>
-            public static string AesDecryptTopic(string pToDecrypt, string key)
-            {
-                //AES瀵嗘枃Base64杞垚瀛楃涓�
-                Byte[] toEncryptArray = Convert.FromBase64String(pToDecrypt);
-
-                //閰嶇疆AES鍔犲瘑Key(瀵嗛挜銆佸悜閲忋�佹ā寮忋�佸~鍏�)
-                RijndaelManaged rm = new RijndaelManaged
-                {
-                    Key = Encoding.UTF8.GetBytes(key),
-                    IV = Encoding.UTF8.GetBytes(key),
-                    Mode = CipherMode.CBC,
-                    Padding = PaddingMode.PKCS7
-                };
-
-                //鍒涘缓AES瑙e瘑鍣ㄥ璞�
-                ICryptoTransform cTransform = rm.CreateDecryptor();
-
-                //浣跨敤AES灏嗗瘑鏂囨祦杞垚鏄庢枃鐨勫瓧鑺傛暟缁�
-                Byte[] resultArray = cTransform.TransformFinalBlock(toEncryptArray, 0, toEncryptArray.Length);
-
-                //杞垚瀛楃涓�
-                return Encoding.UTF8.GetString(resultArray);
-            }
-
-            /// <summary>
-            /// 閲囩敤Aes瑙e瘑璐熻浇鏁版嵁
-            /// </summary>
-            /// <param name="toEncryptArray"></param>
-            /// <param name="key"></param>
-            /// <returns></returns>
-            public static byte[] AesDecryptPayload(byte[] toEncryptArray, string key)
-            {
-                //閰嶇疆AES鍔犲瘑Key(瀵嗛挜銆佸悜閲忋�佹ā寮忋�佸~鍏�)
-                var rm = new RijndaelManaged
-                {
-                    Key = Encoding.UTF8.GetBytes(key),
-                    IV = Encoding.UTF8.GetBytes(key),
-                    Mode = CipherMode.CBC,
-                    Padding = PaddingMode.PKCS7
-                };
-
-                //鍒涘缓AES瑙e瘑鍣ㄥ璞�
-                var cTransform = rm.CreateDecryptor();
-
-                //浣跨敤AES灏嗗瘑鏂囨祦杞垚鏄庢枃鐨勫瓧鑺傛暟缁�
-                return cTransform.TransformFinalBlock(toEncryptArray, 0, toEncryptArray.Length);
-            }
-            #endregion
-
-
-        }
-    }
-}
\ No newline at end of file
diff --git a/HDL_ON/DAL/Net/Mqtt_A_Protocol.cs b/HDL_ON/DAL/Net/Mqtt_A_Protocol.cs
deleted file mode 100644
index d7dd0dd..0000000
--- a/HDL_ON/DAL/Net/Mqtt_A_Protocol.cs
+++ /dev/null
@@ -1,221 +0,0 @@
-锘�//using System;
-//using MQTTnet.Client;
-//using MQTTnet;
-//using MQTTnet.Client.Options;
-//using System.Net.Sockets;
-//using System.Threading.Tasks;
-
-//namespace HDL_ON.DAL.Net
-//{
-//    public static class Mqtt_A_Protocol
-//    {
-//        /// <summary>
-//        /// MqttClient
-//        /// </summary>
-//        public static IMqttClient mqttClient_A;
-//        public static string mqttClientIP;
-//        public static string mqttGatewayMAC;
-//        public static string mqttGatewayName;
-//        static bool remoteIsConnected;
-
-//        static bool onConnection = false;
-
-//        static Mqtt_A_Protocol()
-//        {
-//            InitMqtt();
-//        }
-
-//        /// <summary>
-//        /// 鏂紑杩滅▼Mqtt鐨勯摼鎺�
-//        /// </summary>
-//        public static async Task DisConnectRemoteMqttClient(string s = "")
-//        {
-//            try
-//            {
-//                if (remoteIsConnected)
-//                {
-//                    remoteIsConnected = false;
-//                    System.Console.WriteLine($"Remote涓诲姩鏂紑_{s}");
-//                    //await RemoteMqttClient.DisconnectAsync(new MQTTnet.Client.Disconnecting.MqttClientDisconnectOptions { }, CancellationToken.None);
-//                    await mqttClient_A.DisconnectAsync();
-//                }
-//            }
-//            catch (Exception e)
-//            {
-//                Console.WriteLine($"Remote鏂紑閫氳杩炴帴鍑哄紓甯�:{e.Message}");
-//            }
-//        }
-
-//        static bool isSubscribeSuccess;
-//        static async Task SubscribeTopics()
-//        {
-//            if (remoteIsConnected && !isSubscribeSuccess)
-//            {
-//                try
-//                {
-//                    var Topic1 = $"/BusGateWayToApp/{mqttGatewayMAC}/Common/Json";
-//                    try
-//                    {
-//                        await mqttClient_A.SubscribeAsync(Topic1);
-//                    }
-//                    catch (Exception ex)
-//                    {
-//                        await DisConnectRemoteMqttClient(ex.Message);
-//                        await StartMqtt();
-//                        if (remoteIsConnected)
-//                        {
-//                            await mqttClient_A.SubscribeAsync(Topic1);
-//                        }
-//                    }
-//                }
-//                catch { }
-//            }
-//        }
-
-//        static void InitMqtt()
-//        {
-//            new System.Threading.Thread(async () =>
-//            {
-//                while (true)
-//                {
-//                    try
-//                    {
-//                        System.Threading.Thread.Sleep(1000);
-//                        //if (!CommonPage.IsRemote)
-//                        //    continue;
-//                        if (remoteIsConnected)
-//                            continue;
-//                        await StartMqtt();
-//                        await SubscribeTopics();
-//                    }
-//                    catch { }
-//                }
-//            })
-//            { IsBackground = true }.Start();
-//        }
-
-//        /// <summary>
-//        /// 鍚姩A鍗忚Mqtt
-//        /// </summary>
-//        public static async Task StartMqtt()
-//        {
-//            try
-//            {
-//                if (remoteIsConnected)
-//                    return;
-//                if (onConnection)
-//                    return;
-//                onConnection = true;
-//                new System.Threading.Thread(async () =>
-//                {
-//                    MainPage.Log($"mqtt 绾跨▼鍚姩 : {DateTime.Now}");
-//                    if (remoteIsConnected)
-//                        return;
-//                    try
-//                    {
-//                        if (mqttClient_A == null)
-//                        {
-//                            mqttClient_A = new MqttFactory().CreateMqttClient();
-//                            mqttClient_A.UseApplicationMessageReceivedHandler(async e =>
-//                            {
-//                                var aesDecryptTopic = e.ApplicationMessage.Topic;
-//                                var aesDecryptPayload = e.ApplicationMessage.Payload;
-//                                MainPage.Log(aesDecryptTopic);
-//                                MainPage.Log($"Des Topic={aesDecryptTopic}");
-//                            });
-
-//                            mqttClient_A.UseConnectedHandler(async (e) =>
-//                            {
-//                                MainPage.Log("mqtt connected !!");
-//                                onConnection = false;
-//                            });
-//                        }
-//                        try
-//                        {
-//                            int readCount = 0;
-//                            BusSocket.Stop();
-//                            System.Threading.Thread.Sleep(1000);
-//                            BusSocket.Start();
-//                            System.Threading.Thread.Sleep(1000);
-//                            Control.ReadGatewayIPAddress();
-//                            while (true)
-//                            {
-//                                if (!string.IsNullOrEmpty(mqttClientIP))
-//                                {
-//                                    break;
-//                                }
-//                                else if (readCount > 10)
-//                                {
-//                                    onConnection = false;
-//                                    return;
-//                                }
-//                                else
-//                                {
-//                                    Control.ReadGatewayIPAddress();
-//                                    System.Threading.Thread.Sleep(200);
-//                                }
-//                            }
-//                            BusSocket.Stop();
-//                            //System.Threading.Thread.Sleep(1000);
-//                            //BusSocket.Start(6000);
-//                            //System.Threading.Thread.Sleep(1000);
-
-//                            var options = new MqttClientOptionsBuilder()//MQTT杩炴帴鍙傛暟濉厖
-//                                .WithClientId(Guid.NewGuid().ToString().Substring(0, 5))//瀹㈡埛绔疘D
-//                                .WithTcpServer(mqttClientIP, 8586)//MQTTServerIP.Text, Int32.Parse(MQTTServerPort.Text.ToString()))//TCP鏈嶅姟绔�  1883  锛屽嵆MQTT鏈嶅姟绔�
-//                                .WithCredentials("", "")//"", "")//鍑瘉  甯愬彿 瀵嗙爜
-//                                .WithCommunicationTimeout(new TimeSpan(0, 0, 60)) //閲嶈繛瓒呮椂鏃堕棿锛岄粯璁�5s
-//                                .WithKeepAlivePeriod(new TimeSpan(0, 0, 15)) //淇濇寔杩炴帴鏃堕棿锛岄粯璁�5s锛屽績璺冲寘
-//                                .Build();
-//                            await mqttClient_A.ConnectAsync(options);
-//                            remoteIsConnected = true;
-//                        }
-//                        catch { }
-//                    }
-//                    catch (Exception ex)
-//                    {
-//                    }
-//                    finally
-//                    {
-//                        onConnection = false;
-//                    }
-//                })
-//                { IsBackground = true }.Start();
-//            }
-//            catch (Exception ex)
-//            {
-//                MainPage.Log("============>" + ex.Message);
-//            }
-//        }
-
-
-
-
-//        /// <summary>
-//        /// 
-//        /// </summary>
-//        /// <param name="message">闄勫姞鏁版嵁鍖�</param>
-//        /// <param name="optionType">鎿嶄綔绫诲瀷锛�0=缃戝叧鎺у埗锛�1=璁㈤槄缃戝叧鏁版嵁;2=璁㈤槄缃戝叧涓婄嚎鏁版嵁</param>
-//        /// <returns></returns>
-//        public static async Task MqttRemoteSend(byte[] message)
-//        {
-//            try
-//            {
-//                if (mqttClient_A == null || !mqttClient_A.IsConnected)
-//                {
-//                    await StartMqtt();
-//                }
-//                if (!mqttClient_A.IsConnected)
-//                {
-//                    return;
-//                }
-//                var topicName = $"/AppToBusGateWay/{mqttGatewayMAC}/Common/Json";
-//                var m = new MqttApplicationMessage { Topic = topicName, Payload = message, Retain = false, QualityOfServiceLevel = MQTTnet.Protocol.MqttQualityOfServiceLevel.ExactlyOnce };
-//                await mqttClient_A?.PublishAsync(m);
-//            }
-//            catch (Exception e)
-//            {
-//            }
-//        }
-//    }
-//}
diff --git a/HDL_ON/DAL/Net/Mqtt_Cloud.cs b/HDL_ON/DAL/Net/Mqtt_Cloud.cs
deleted file mode 100644
index ea35f24..0000000
--- a/HDL_ON/DAL/Net/Mqtt_Cloud.cs
+++ /dev/null
@@ -1,463 +0,0 @@
-锘縰sing System;
-using MQTTnet.Client;
-using System.Threading.Tasks;
-using Shared;
-using MQTTnet;
-using System.Text;
-using HDL_ON.Entity;
-
-namespace HDL_ON.DAL.Net
-{
-    public static class Mqtt_Cloud
-    {
-        static string mqttEncryptKey = "";
-        static string checkGatewayTopicBase64 = "";
-        static RemoteMACInfo CurRemoteMACInfo = null;
-
-        /// <summary>
-        /// 鎵嬫満鏍囪瘑
-        /// </summary>
-        static Guid currentGuid = Guid.NewGuid();
-
-        /// <summary>
-        /// 澶栫綉鐨凪QTT鏄惁姝e湪杩炴帴
-        /// </summary>
-        /// <summary>
-        /// 杩滅▼MqttClient
-        /// </summary>
-        /// <summary>
-        /// 杩滅▼MqttClient
-        /// </summary>
-        public static IMqttClient RemoteMqttClient = new MqttFactory().CreateMqttClient();
-
-        static bool thisShowTip = true;
-        //static string mqttRequestParToken="";
-        /// <summary>
-        /// 鎺ㄩ�佹爣璇�
-        /// </summary>
-        static string PushSignStr = System.DateTime.Now.Ticks.ToString();
-
-        /// <summary>
-        /// 鏂紑杩滅▼Mqtt鐨勯摼鎺�
-        /// </summary>
-        public static async Task DisConnectRemoteMqttClient(string s = "")
-        {
-            try
-            {
-                if (remoteIsConnected)
-                {
-                    remoteIsConnected = false;
-                    MainPage.Log($"Remote涓诲姩鏂紑_{s}");
-                    //await RemoteMqttClient.DisconnectAsync(new MQTTnet.Client.Disconnecting.MqttClientDisconnectOptions { }, CancellationToken.None);
-                    await RemoteMqttClient.DisconnectAsync();
-                }
-            }
-            catch (Exception e)
-            {
-                System.Console.WriteLine($"Remote鏂紑閫氳杩炴帴鍑哄紓甯�:{e.Message}");
-            }
-        }
-        static DateTime dateTime = DateTime.MinValue;
-        /// <summary>
-        /// 澶栫綉鐨凪QTT鏄惁姝e湪杩炴帴
-        /// </summary>
-        static bool remoteMqttIsConnecting;
-        static bool remoteIsConnected;
-
-        static Mqtt_Cloud()
-        {
-            InitMqtt();
-        }
-
-        public static bool IsInitMqtt = false;
-
-        static void InitMqtt()
-        {
-            new System.Threading.Thread(async () => {
-                while (true)
-                {
-                    try
-                    {
-                        System.Threading.Thread.Sleep(1000);
-                        if (!MainPage.IsRemote) continue;
-
-                        await StartCloudMqtt();
-                        await SubscribeTopics();
-                    }
-                    catch { }
-                }
-            })
-            { IsBackground = true }.Start();
-        }
-
-        static bool isSubscribeSuccess;
-        static async Task SubscribeTopics()
-        {
-            if (remoteIsConnected && !isSubscribeSuccess)
-            {
-                try
-                {
-                    var topicFilter1 = new TopicFilter { QualityOfServiceLevel = MQTTnet.Protocol.MqttQualityOfServiceLevel.ExactlyOnce, Topic = $"/BusGateWayToClient/{CurRemoteMACInfo.macMark}/NotifyBusGateWayInfoChange" };
-                    var topicFilter2 = new TopicFilter { QualityOfServiceLevel = MQTTnet.Protocol.MqttQualityOfServiceLevel.AtMostOnce, Topic = $"/BusGateWayToClient/{CurRemoteMACInfo.macMark}/Common/#" };
-                    var topicFilter3 = new TopicFilter { QualityOfServiceLevel = MQTTnet.Protocol.MqttQualityOfServiceLevel.ExactlyOnce, Topic = $"/BusGateWayToClient/{CurRemoteMACInfo.clientId}/Push/NotifySqueeze" };
-                    var result = await RemoteMqttClient.SubscribeAsync(new TopicFilter[] { topicFilter1, topicFilter2, topicFilter3 });
-                    if (result.Items[0].ResultCode == MQTTnet.Client.Subscribing.MqttClientSubscribeResultCode.GrantedQoS2)
-                    {
-                        isSubscribeSuccess = true;
-                    }
-                }
-                catch { }
-            }
-        }
-        /// <summary>
-        /// 鍚姩杩滅▼Mqtt
-        /// </summary>
-        public static async Task StartCloudMqtt()
-        {
-            //杩藉姞锛氭病鏈夎繙绋嬭繛鎺ョ殑鏉冮檺
-            if (remoteMqttIsConnecting
-               || remoteIsConnected || !MainPage.LoginUser.IsLogin)
-            {
-                return;
-            }
-
-            await Task.Factory.StartNew(async () => {
-                //try {
-                lock (RemoteMqttClient)
-                {
-                    //琛ㄧず鍚庨潰灏嗚繘琛岃繛鎺�
-                    remoteMqttIsConnecting = true;
-
-                    #region 鍒濆鍖栬繙绋婱qtt
-                    //(3)褰揫杩炴帴浜戠鐨凪qtt鎴愬姛鍚嶿鎴栬�匸浠ュ強鍚庨潰App閫氳繃浜戠Mqtt杞彂鏁版嵁缁欑綉鍏虫垚鍔熷悗],澶勭悊鎺ユ敹鍒颁簯绔暟鎹寘鍝嶅簲鏃跺湪mqttServerClient_ApplicationMessageReceived杩欎釜鏂规硶澶勭悊
-                    if (RemoteMqttClient.ApplicationMessageReceivedHandler == null)
-                    {
-                        RemoteMqttClient.UseApplicationMessageReceivedHandler((e) => {
-                            try
-                            {
-                                var topic = e.ApplicationMessage.Topic;
-                                //Console.WriteLine ("鍥炲Topic={0}", topic);
-                                if (topic == $"/BusGateWayToClient/{CurRemoteMACInfo.clientId}/Push/NotifySqueeze")
-                                {
-                                    var mMes = Encoding.UTF8.GetString(e.ApplicationMessage.Payload);
-                                    //鏀跺埌鎸や笅绾夸富棰�
-                                    ReceiveNotifySqueezeAsync(mMes);
-                                }
-                                else if (topic == $"/BusGateWayToClient/{CurRemoteMACInfo.macMark}/NotifyBusGateWayInfoChange")
-                                {
-                                    //缃戝叧涓婄嚎锛岄渶瑕佹洿鏂癮eskey
-                                    //鏀跺埌缃戝叧涓婄嚎娑堟伅涓婚
-                                    //ReceiveNotifyBusGateWayInfoChange();
-                                }
-                                else if (topic == $"/BusGateWayToClient/{CurRemoteMACInfo.macMark}/Common/CheckGateway")
-                                {
-                                    var ss = Encoding.UTF8.GetString(e.ApplicationMessage.Payload);
-                                    ReceiveCheckGateway(ss);
-                                }
-                                else
-                                {
-                                    var packet = new Packet();
-
-                                    if (!string.IsNullOrEmpty(mqttEncryptKey))
-                                    {
-                                        packet.Bytes = Shared.Securitys.EncryptionService.AesDecryptPayload(e.ApplicationMessage.Payload, mqttEncryptKey);
-                                    }
-                                    else
-                                    {
-                                        packet.Bytes = e.ApplicationMessage.Payload;
-                                    }
-                                    packet.Manager();
-                                }
-                            }
-                            catch { }
-                        });
-                    }
-
-                    if (RemoteMqttClient.DisconnectedHandler == null)
-                    {
-                        RemoteMqttClient.UseDisconnectedHandler(async (e) => {
-                            System.Console.WriteLine($"杩滅▼杩炴帴鏂紑");
-                            isSubscribeSuccess = false;
-                            await DisConnectRemoteMqttClient("StartRemoteMqtt.DisconnectedHandler");
-                            if (MainPage.IsRemote)
-                            {
-                                Application.RunOnMainThread(() => {
-                                    //杩滅▼杩炴帴鎴愬姛
-                                });
-                            }
-                        });
-                    }
-                    if (RemoteMqttClient.ConnectedHandler == null)
-                    {
-                        RemoteMqttClient.UseConnectedHandler(async (e) => {
-                            System.Console.WriteLine($"杩滅▼杩炴帴鎴愬姛");
-                            MainPage.IsRemote = true;
-                            Application.RunOnMainThread(() => {
-                                //杩滅▼杩炴帴鎴愬姛
-                                MainPage.IsRemote = true;
-                            });
-                            //鍒锋柊鐘舵��
-                            if (CurRemoteMACInfo != null)
-                            {
-                                if (CurRemoteMACInfo.isValid == "InValid")
-                                {
-                                    //杩滅▼澶辫触
-                                    MainPage.IsRemote = false;
-                                }
-                                else
-                                {
-                                    MqttRemoteSend(new byte[] { 0 }, 3);
-                                }
-                            }
-                        });
-                    }
-                    #endregion
-                }
-
-                try
-                {
-
-                    //--绗竴姝ワ細鑾峰彇mqtt閾炬帴鍙傛暟 鎻愪氦MAC 鏈嶅姟鍣ㄨ嚜鍔ㄥ垽鏂槸鍚︿负鏂扮綉鍏筹紝杩斿洖鏄惁闇�瑕佽嚜鍔ㄥ垏鎹㈣繙绋嬭繛鎺ョ殑鏈嶅姟鍣�
-                    var mqttInfoRequestPar = new RemoteRequestParameters()
-                    {
-                        PlatformStr = "ON",
-                        LoginAccessToken = MainPage.LoginUser.loginTokenString,
-                        RequestVersion = MainPage.VersionString,
-                        RequestProtocolType = 0,
-                        RequestSource = 1,
-                        HdlGatewayGatewayType = 0,
-                        PublishPayloadJsonStr = PushSignStr,
-                        Mac = HDL_ON.Entity.DB_ResidenceData.residenceData.residenceGatewayMAC,
-                    };
-                    var jsonString = Newtonsoft.Json.JsonConvert.SerializeObject(mqttInfoRequestPar);
-                    var mqttInfoRequestResult = new HDL_ON.DAL.Server.HttpServerRequest().RequestMqttInfo(jsonString);
-
-                    if (mqttInfoRequestResult != null && mqttInfoRequestResult.ResponseData != null)
-                    {
-                        try
-                        {
-                            var mqttInfoRequestResult_Obj = Newtonsoft.Json.JsonConvert.DeserializeObject<MqttInfo>(mqttInfoRequestResult.ResponseData.ToString());
-
-                            if (mqttInfoRequestResult_Obj != null)
-                            {
-                                string url = mqttInfoRequestResult_Obj.connEmqDomainPort;
-                                string clientId = mqttInfoRequestResult_Obj.connEmqClientId;
-                                string username = mqttInfoRequestResult_Obj.connEmqUserName;
-                                string passwordRemote = mqttInfoRequestResult_Obj.connEmqPwd;
-                                if (mqttInfoRequestResult_Obj.AccountAllGateways != null && mqttInfoRequestResult_Obj.AccountAllGateways.Count > 0)
-                                {
-                                    //----绗簩姝ユ壘鍑烘槸鍚﹀瓨鍦ㄥ尮閰嶅綋鍓嶄綇瀹呯殑mac锛屽瓨鍦ㄥ啀杩涜杩滅▼銆�
-                                    foreach (var curRegionMac in DB_ResidenceData.residenceData.residecenInfo.homeGateways)
-                                    {
-                                        CurRemoteMACInfo = mqttInfoRequestResult_Obj.AccountAllGateways.Find((obj) => obj.mac == curRegionMac.GatewayUniqueId);
-                                        if (CurRemoteMACInfo != null)
-                                        {
-                                            break;
-                                        }
-                                    }
-                                    if (CurRemoteMACInfo != null)
-                                    {
-                                        CurRemoteMACInfo.LoginAccessToken = MainPage.LoginUser.loginTokenString;
-                                        CurRemoteMACInfo.clientId = clientId;
-                                        mqttEncryptKey = CurRemoteMACInfo.isNewBusproGateway ? CurRemoteMACInfo.aesKey : "";
-
-                                        var options1 = new MQTTnet.Client.Options.MqttClientOptionsBuilder()
-                                                            .WithClientId(clientId)
-                                                            .WithTcpServer(url.Split(':')[1].Substring("//".Length), int.Parse(url.Split(':')[2]))
-                                                            .WithCredentials(username, passwordRemote)
-                                                            .WithCleanSession()
-                                                            .WithCommunicationTimeout(new TimeSpan(0, 0, 20))
-                                                            .Build();
-
-                                        await DisConnectRemoteMqttClient("StartRemoteMqtt");
-                                        await RemoteMqttClient.ConnectAsync(options1);
-                                        remoteIsConnected = true;
-                                        IsDisConnectingWithSendCatch = false;
-
-                                    }
-                                }
-
-                            }
-                        }
-                        catch { }
-                    }
-
-                }
-                catch (Exception e)
-                {
-
-                }
-                finally
-                {
-                    //鏈�缁堣閲婃斁杩炴帴鐘舵��
-                    remoteMqttIsConnecting = false;
-                }
-
-            });
-        }
-
-
-
-        ///// <summary>
-        ///// 鏀跺埌缃戝叧涓婄嚎娑堟伅
-        ///// </summary>
-        //static void ReceiveNotifyBusGateWayInfoChange()
-        //{
-        //    var gatewayListUrl = @"https://developer.hdlcontrol.com/Center/Center/GetGatewayPagger"; //App銆丅uspro杞欢鐧诲綍鍚庤幏鍙栫綉鍏冲垪琛� http 璇锋眰
-        //    var gatewayListRequestPar = new RemoteRequestParameters() { Mac = CurRemoteMACInfo.mac, LoginAccessToken = MainPage.LoginUser.loginTokenString, RequestVersion = "RequestVersion1", RequestProtocolType = 0, RequestSource = 1 };
-        //    var gatewayListRequestResult = MainPage.RequestHttps("", Newtonsoft.Json.JsonConvert.SerializeObject(gatewayListRequestPar), false, false, gatewayListUrl);
-        //    var gatewayListRequestResult_Obj = Newtonsoft.Json.JsonConvert.DeserializeObject<MqttRemoteInfo>(gatewayListRequestResult.ResponseData.ToString());
-        //    if (gatewayListRequestResult_Obj != null && gatewayListRequestResult_Obj.pageData.Count > 0)
-        //    {
-        //        CurRemoteMACInfo.aesKey = gatewayListRequestResult_Obj.pageData[0].aesKey;
-        //        mqttEncryptKey = CurRemoteMACInfo.isNewBusproGateway ? CurRemoteMACInfo.aesKey : "";
-        //    }
-        //}
-
-        /// <summary>
-        /// 鏀跺埌鎸や笅绾挎帹閫�
-        /// </summary>
-        static void ReceiveNotifySqueezeAsync(string mMes)
-        {
-            if (mMes == PushSignStr) return;//鏄嚜宸辩殑鐧诲綍鎺ㄩ�佷笉澶勭悊
-            //鏂紑杩滅▼杩炴帴
-            MainPage.IsRemote = false;
-            if (!MainPage.LoginUser.IsLogin)
-            {
-                return;
-            }
-            MainPage.LoginUser.lastTime = DateTime.MinValue;
-            MainPage.LoginUser.SaveUserInfo();
-
-            string oldRegionRootPath = FileUtils.CreateRegionBackup(DB_ResidenceData.residenceData.CurReginID.ToString());
-            new System.Threading.Thread(() =>
-            {
-                try
-                {
-                    var backuplist = FileUtils.ReadFiles();
-                    FileUtils.DeleteRegionFiles(oldRegionRootPath);
-                    //绉诲姩鏂囦欢
-                    foreach (var fileName in backuplist)
-                    {
-                        System.IO.FileInfo fileInfo = new System.IO.FileInfo(FileUtils.RootPath + fileName);
-                        if (fileName == "headImage.png")
-                        {
-                            continue;
-                        }
-                        if (fileInfo.Exists)
-                        {
-                            fileInfo.MoveTo(oldRegionRootPath + fileName);
-                            MainPage.Log("move file : " + fileName);
-                        }
-                    }
-                    //鍒犻櫎鏈湴鏂囦欢
-                    foreach (var fileName in backuplist)
-                    {
-                        if (fileName == "headImage.png")
-                        {
-                            continue;
-                        }
-                        FileUtils.DeleteFile(fileName);
-                    }
-                }
-                catch (Exception ex)
-                {
-                    MainPage.Log(ex.Message);
-                }
-                finally
-                {
-                }
-            })
-            { IsBackground = true }.Start();
-
-
-            //鍒犻櫎鎺ㄩ�佹暟鎹�
-            DisConnectRemoteMqttClient("鎸や笅绾�");
-            Application.RunOnMainThread(() =>
-            {
-                MainPage.GoLoginPage(MainPage.LoginUser);
-            });
-        }
-
-        /// <summary>
-        /// 鏀跺埌CheckGateway涓婚
-        /// </summary>
-        static void ReceiveCheckGateway(string mMes)
-        {
-            var obj = Newtonsoft.Json.JsonConvert.DeserializeObject<ResponsePack>(mMes);
-            if (obj == null)
-            {
-                return;
-            }
-            switch (obj.StateCode)
-            {
-                case "HDLUdpDataForwardServerMqttClientNoOnLine":
-                case "NoOnline":
-                case "NetworkAnomaly"://涓嶅湪绾�
-                    Application.RunOnMainThread(() =>
-                    {
-                        new HDL_ON.UI.PublicAssmebly().TipMsgAutoClose(Language.StringByID(StringId.RemoteFailedGatewayOffline), true);
-                    });
-                    break;
-                case "NoRecord"://MAC涓嶆纭�
-                    Application.RunOnMainThread(() => {
-                        new HDL_ON.UI.PublicAssmebly().TipMsgAutoClose(Language.StringByID(StringId.MACError), true);
-                    });
-                    break;
-                case "Success":
-                    break;
-                default:
-                    Application.RunOnMainThread(() => {
-                        new HDL_ON.UI.PublicAssmebly().TipMsgAutoClose(Language.StringByID(StringId.LinkLoser), true);
-                    });
-                    break;
-            }
-
-        }
-
-        /// <summary>
-        /// 
-        /// </summary>
-        /// <param name="message">闄勫姞鏁版嵁鍖�</param>
-        /// <param name="optionType">鎿嶄綔绫诲瀷锛�0=缃戝叧鎺у埗锛�1=璁㈤槄缃戝叧鏁版嵁;2=璁㈤槄缃戝叧涓婄嚎鏁版嵁</param>
-        /// <returns></returns>
-        public static async Task MqttRemoteSend(byte[] message, int optionType = 0)
-        {
-            try
-            {
-                string topicName;
-                switch (optionType)
-                {
-                    case 0:
-                        topicName = $"/ClientToBusGateWay/{CurRemoteMACInfo.macMark}/Common/ON";
-                        if (!string.IsNullOrEmpty(mqttEncryptKey))
-                        {
-                            message = Shared.Securitys.EncryptionService.AesEncryptPayload(message, mqttEncryptKey);
-                        }
-                        await RemoteMqttClient.PublishAsync(new MqttApplicationMessage { Topic = topicName, Payload = message, Retain = false, QualityOfServiceLevel = MQTTnet.Protocol.MqttQualityOfServiceLevel.AtMostOnce });
-                        break;
-                    case 3:
-                        topicName = $"/ClientToBusGateWay/{CurRemoteMACInfo.macMark}/Common/CheckGateway";
-                        Console.WriteLine("CheckGateway");
-                        await RemoteMqttClient.PublishAsync(new MqttApplicationMessage { Topic = topicName, Retain = false, QualityOfServiceLevel = MQTTnet.Protocol.MqttQualityOfServiceLevel.AtMostOnce });
-                        break;
-                }
-            }
-            catch (Exception e)
-            {
-                //System.Console.WriteLine ($"============>Mqtt MqttRemoteSend catch");
-                if (!IsDisConnectingWithSendCatch)
-                {
-                    IsDisConnectingWithSendCatch = true;
-                    await DisConnectRemoteMqttClient("SendCatch");
-                }
-            }
-        }
-        /// <summary>
-        /// SendCatch 鍚庢墽琛屼竴娆℃柇寮�鎿嶄綔
-        /// </summary>
-        static bool IsDisConnectingWithSendCatch = false;
-
-    }
-}
-
diff --git a/HDL_ON/DAL/Net/MyWebClient.cs b/HDL_ON/DAL/Net/MyWebClient.cs
deleted file mode 100644
index 37d4505..0000000
--- a/HDL_ON/DAL/Net/MyWebClient.cs
+++ /dev/null
@@ -1,38 +0,0 @@
-锘縰sing System;
-using System.Net;
-
-namespace HDL_ON.DAL.Net
-{
-    public class MyWebClient : WebClient
-    {
-        int _timeout = 10000;
-
-        /// <summary>
-        /// 瓒呮椂鏃堕棿(姣)
-        /// </summary>
-        public int Timeout {
-            get {
-                return _timeout;
-            }
-            set {
-                _timeout = value;
-            }
-        }
-        public MyWebClient ()
-        {
-
-        }
-
-        public MyWebClient (int timeout)
-        {
-            this._timeout = timeout;
-        }
-
-        protected override WebRequest GetWebRequest (Uri address)
-        {
-            var result = base.GetWebRequest (address);
-            result.Timeout = this._timeout;
-            return result;
-        }
-    }
-}
\ No newline at end of file
diff --git a/HDL_ON/DAL/Server/HttpServerRequest.cs b/HDL_ON/DAL/Server/HttpServerRequest.cs
index a69664e..4dd4352 100644
--- a/HDL_ON/DAL/Server/HttpServerRequest.cs
+++ b/HDL_ON/DAL/Server/HttpServerRequest.cs
@@ -1,8 +1,9 @@
-锘縰sing System;
+锘縰sing System;
 using System.Collections.Generic;
 using System.IO;
-using System.Net;
+using System.Net;
 using System.Text;
+using HDL_ON.DAL.Mqtt;
 using HDL_ON.Entity;
 using Newtonsoft.Json.Linq;
 using Shared;
@@ -50,7 +51,7 @@
         /// <param name="nowMonth"></param>
         /// <param name="mac"></param>
         /// <returns></returns>
-        public ResponsePack GetSensorHistory(int subnetId,int deviceId,int bigClass,int minClass,int queryType,int loopId,int nowMonth,string mac)
+        public ResponsePack GetSensorHistory(int subnetId, int deviceId, int bigClass, int minClass, int queryType, int loopId, int nowMonth, string mac)
         {
             Dictionary<string, object> d = new Dictionary<string, object>();
             d.Add("SubnetID", subnetId);
@@ -63,187 +64,212 @@
             d.Add("MAC", DB_ResidenceData.residenceData.residenceGatewayMAC);
             d.Add("LocalTimeZone", 8);
             var jsonString = Newtonsoft.Json.JsonConvert.SerializeObject(d);
-            return RequestHttps("https://developer.hdlcontrol.com/api/GetSensorPushHistory", jsonString,true);
+            return RequestHttps("https://developer.hdlcontrol.com/api/GetSensorPushHistory", jsonString, true);
 
         }
 
-        public string GetRequestResultMsg(string resultCode)
+        //public string GetRequestResultMsg(string resultCode)
+        //{
+        //    string result = "";
+        //    switch (resultCode.ToUpper())
+        //    {
+        //        case "USERNAMEORPWDERROR":
+        //            result = Language.StringByID(StringId.LoginFailed_AccountOrPasswordError);
+        //            break;
+        //        case "ACCOUNTNOEXISTS":
+        //            result = Language.StringByID(StringId.ACCOUNTNOEXISTS);
+        //            break;
+        //        case "SENDFAIL":
+        //            result = Language.StringByID(StringId.FailedToSendVerificationCode);
+        //            break;
+        //        case "EXIST":
+        //            result = Language.StringByID(StringId.AccountAlreadyUse);
+        //            break;
+        //        case "Self:Net_Error":
+        //            result = Language.StringByID(StringId.NetworkAnomaly);
+        //            break;
+        //    }
+        //    return result;
+        //}
+
+        #region 鈻� 閫氱敤璇锋眰鎺ュ彛_______________________
+        /// <summary>
+        /// 鏍规鐢ㄦ埛璐﹀彿鑾峰彇娉ㄥ唽鍖哄煙 鍏嶇櫥褰� // 妫�娴嬭处鍙锋槸鍚︽敞鍐屼篃鐢ㄨ繖涓帴鍙�
+        /// </summary>
+        /// <param name="account"></param>
+        /// <returns></returns>
+        public ResponsePackNew GetRegionByAccount(string account)
         {
-            string result = "";
-            switch (resultCode.ToUpper())
-            {
-                case "USERNAMEORPWDERROR":
-                    result = Language.StringByID(StringId.LoginFailed_AccountOrPasswordError);
-                    break;
-                case "ACCOUNTNOEXISTS":
-                    result = Language.StringByID(StringId.ACCOUNTNOEXISTS);
-                    break;
-                case "SENDFAIL":
-                    result = Language.StringByID(StringId.FailedToSendVerificationCode);
-                    break;
-                case "EXIST":
-                    result = Language.StringByID(StringId.AccountAlreadyUse);
-                    break;
-                case "Self:Net_Error":
-                    result = Language.StringByID(StringId.NetworkAnomaly);
-                    break;
-            }
-            return result;
+            var requestJson = HttpUtil.GetSignRequestJson(new RegionByAccountObj() { account = account });
+            return HttpUtil.RequestHttpsPost(NewAPI.API_POST_GetRegionByAccount, requestJson);
         }
+
+        /// <summary>
+        /// 鍒锋柊Token
+        /// </summary>
+        /// <returns></returns>
+        public bool RefreshToken()
+        {
+            var requestJson = HttpUtil.GetSignRequestJson(new RefreshTokenObj()
+            {
+                refreshToken = UserInfo.Current.RefreshToken,
+            });
+            var revertObj = HttpUtil.RequestHttpsPost(NewAPI.API_POST_Login, requestJson);
+            if (revertObj.Code.ToUpper() == StateCode.SUCCESS)
+            {
+                var revertData = Newtonsoft.Json.JsonConvert.DeserializeObject<UserLoginRes>(revertObj.Data.ToString());
+                UserInfo.Current.LoginTokenString = revertData.headerPrefix + revertData.accessToken;
+                UserInfo.Current.RefreshToken = revertData.refreshToken;
+                UserInfo.Current.LastTime = DateTime.Now;
+                UserInfo.Current.SaveUserInfo();
+                return true;
+            }
+            return false;
+        }
+
+        #endregion
 
 
         #region 娉ㄥ唽銆佺櫥褰曢儴鍒�
+       
+
+        /// <summary>
+        /// 閫氱敤 鍙戦�侀獙璇佺爜鏂规硶
+        /// </summary>
+        /// <param name="verifyType">1:娉ㄥ唽 2锛氭壘鍥炲瘑鐮� 3锛氱粦瀹�4:楠岃瘉鐮佺櫥闄� 5:鏁忔劅鏁版嵁</param>
+        /// <param name="account">閭鎴栬�呮墜鏈哄彿</param>
+        /// <param name="isPhone">鏄惁鎵嬫満</param>
+        /// <param name="phoneZoneCode">鎵嬫満鍥藉鍖哄彿</param>
+        /// <returns></returns>
+        public ResponsePackNew VerificationCodeSend(VerifyType verifyType, string account, bool isPhone = false, string phoneZoneCode = "86")
+        {
+            var requestObj = new VerifyCodeSendObj()
+            {
+                verifyType = (int)verifyType,
+                languageType = Utlis.GetPostLanguageType()
+            };
+            // 鏄惁鏄墜鏈� 
+            if (isPhone)
+            {
+                requestObj.phone = account;
+                requestObj.phonePrefix = phoneZoneCode;
+            }
+            else
+            {
+                requestObj.mail = account;
+            }
+            // 瓒呮椂鏃堕棿璁剧疆涓�20绉掞紝搴旇娴嬭瘯娴峰鏈嶅姟鍣ㄥ彂閫侀獙璇佺爜鍝嶅簲鏃堕棿寰堜箙
+            var requestJson = HttpUtil.GetSignRequestJson(requestObj);
+            return HttpUtil.RequestHttpsPost(NewAPI.API_POST_Verification_Send, requestJson, "", "", HttpUtil.TIME_OUT_LONG);
+        }
+
         /// <summary>
         /// 璐﹀彿鐧诲綍-浣跨敤瀵嗙爜
         /// </summary>
-        public ResponsePack LoginByPassword(string account, string password)
+        /// <param name="account">璐﹀彿</param>
+        /// <param name="password">瀵嗙爜</param>
+        /// <returns></returns>
+        public ResponsePackNew LoginByPassword(string account, string password)
         {
-            string jsonString = "{" +
-                                "\"Account\":" + "\"" + account + "\"" + "," +
-                                "\"Password\":" + "\"" + password + "\"" + 
-                                "}";
-            return RequestHttps($"{severAddress}/ZigbeeUsers/Login", jsonString, false);
+            var requestJson = HttpUtil.GetSignRequestJson(new LoginObj()
+            {
+                account = account,
+                loginPwd = password
+            });
+            return HttpUtil.RequestHttpsPost(NewAPI.API_POST_Login, requestJson);
         }
 
         /// <summary>
         /// 楠岃瘉鐮佺櫥褰�
         /// </summary>
-        public ResponsePack LoginValidCode(string account,string vCode)
+        /// <param name="account">璐﹀彿</param>
+        /// <param name="vCode">楠岃瘉鐮�</param>
+        /// <returns></returns>
+        public ResponsePackNew LoginValidCode(string account, string vCode)
         {
-            Dictionary<string, object> d = new Dictionary<string, object>();
-            d.Add("Account", account);
-            d.Add("Code", vCode);
-            d.Add("Language", Language.CurrentLanguage);
-            d.Add("AreaCode", "86");
-            var jsonString = Newtonsoft.Json.JsonConvert.SerializeObject(d);
-            return RequestHttps($"{severAddress}/ZigbeeUsers/LoginValidCode", jsonString, false);
-        }
-
-        /// <summary>
-        /// 鎵嬫満鍙风爜娉ㄥ唽
-        /// </summary>
-        /// <param name="mobileNumber"></param>
-        /// <param name="password"></param>
-        /// <param name="language"></param>
-        public ResponsePack RegisterPhone(string mobileNumber, string password, string language)
-        {
-            string jsonString = "{" +
-                                "\"Account\":" + "\"" + mobileNumber + "\"" + "," +
-                                "\"Password\":" + "\"" + password + "\"" + "," +
-                                "\"Language\":" + "\"" + language + "\"" +
-                                "\"AreaCode\":" + "\"" + "86" + "\"" +
-                                "}";
-            return RequestHttps($"{severAddress}/SignIn", jsonString, false);
-        }
-
-        public ResponsePack GetAreaCode()
-        {
-            string requestJson = "{}";
-            return RequestHttps($"{severAddress}/ZigbeeUsers/GetAreaCode", requestJson, false);
+            var requestJson = HttpUtil.GetSignRequestJson(new LoginObj()
+            {
+                account = account,
+                verifyCode = vCode,
+                grantType = "verify"
+            });
+            return HttpUtil.RequestHttpsPost(NewAPI.API_POST_Login, requestJson);
         }
 
         /// <summary>
         /// 楠岃瘉鐭俊鎴栬�呴偖绠遍獙璇佺爜锛屼箣鍚庢敞鍐�
         /// </summary>
-        /// <param name="account">璐﹀彿</param>
+        /// <param name="account">閭鎴栬�呮墜鏈哄彿</param>
         /// <param name="password">瀵嗙爜</param>
-        /// <param name="entryPassword">纭瀵嗙爜</param>
         /// <param name="code">楠岃瘉鐮�</param>
-        /// <param name="areaCode"></param>
+        /// <param name="isPhone">鏄惁鎵嬫満</param>
         /// <returns></returns>
-        public ResponsePack ValidataCodeAndRegister(string account, string password, string entryPassword, string code, int areaCode)
+        public ResponsePackNew ValidataCodeAndRegister(string account, string password, string code, bool isPhone = false)
         {
-            //var requestObj = new ValidateSmsCodeObj() { Phone = accout, Code = code };
-            //var requestJson = Newtonsoft.Json.JsonConvert.SerializeObject(requestObj);
-            string requestJson = "{" +
-                                "\"Account\":" + "\"" + account + "\"" + "," +
-                                "\"Password\":" + "\"" + password + "\"" + "," +
-                                "\"EnterPassword\":" + "\"" + entryPassword + "\"" + "," +
-                                "\"Language\":" + "\"" + Language.CurrentLanguage.ToLower() + "\"" + "," +
-                                "\"Code\":" + "\"" + code + "\"" + "," +
-                                "\"RegisterSoruce\":" + 0 + "," +
-                                "\"AreaCode\":" + 86 +
-                                "}";
-            return RequestHttps($"{severAddress}/ZigbeeUsers/ValidataCodeAndRegisterAccount", requestJson, false);
+            var requestObj = new RegisterObj() { loginPwd = password, verifyCode = code, memberName = account };
+            if (isPhone)
+            {
+                requestObj.memberPhone = account;
+            }
+            else
+            {
+                requestObj.memberEmail = account;
+            }
+            var requestJson = HttpUtil.GetSignRequestJson(requestObj);
+            return HttpUtil.RequestHttpsPost(NewAPI.API_POST_Member_Register, requestJson);
         }
-
 
         /// <summary>
-        /// 鑾峰彇娉ㄥ唽楠岃瘉鐮�
+        /// 蹇樿瀵嗙爜锛岄噸缃瘑鐮�
         /// </summary>
-        public ResponsePack GetRegisterVerCode(string account)
+        /// <param name="account">閭鎴栬�呮墜鏈哄彿</param>
+        /// <param name="password">鏂板瘑鐮�</param>
+        /// <param name="vCode">楠岃瘉鐮�</param>
+        /// <param name="isPhone">鏄惁鎵嬫満璐﹀彿</param>
+        /// <returns></returns>
+        public ResponsePackNew ForgetPassword(string account, string password, string vCode, bool isPhone)
         {
-            string jsonString = "{" +
-                                "\"Account\":" + "\"" + account + "\"" + "," +
-                                "\"Company\":" + MainPage.Company + "," +
-                                "\"Language\":" + "\"" + Language.CurrentLanguage.ToLower() + "\"" + "," +
-                                "\"AreaCode\":" + 86 +
-                                "}";
-            return RequestHttps($"{severAddress}/ZigbeeUsers/RegisterSendVerCode", jsonString, false);
-
+            var requestObj = new ForgetPwdObj() { verifyCode = vCode, loginPwd = password };
+            if (isPhone)
+            {
+                //鎵嬫満蹇樿瀵嗙爜
+                requestObj.memberPhone = account;
+            }
+            else
+            {
+                //閭蹇樿瀵嗙爜
+                requestObj.memberEmail = account;
+            }
+            var requestJson = HttpUtil.GetSignRequestJson(requestObj);
+            return HttpUtil.RequestHttpsPost(NewAPI.API_POST_Member_ForgetPwd, requestJson);
         }
-
-        
-
-
-        /// <summary>
-        /// 鑾峰彇鐧诲綍楠岃瘉鐮�
-        /// </summary>
-        public ResponsePack GetLoginVerCode(string account)
-        {
-
-            string jsonString = "{" +
-                                "\"Account\":" + "\"" + account + "\"" + "," +
-                                "\"AreaCode\":" + "86" + 
-                                "}";
-            return RequestHttps($"{severAddress}/ZigbeeUsers/LoginSendVerCode", jsonString, false);
-        }
-
-        ///// <summary>
-        ///// 鍙戦�侀獙璇佺爜
-        ///// </summary>
-        //public ResponsePack SendSms(string account)
-        //{
-        //    string jsonString = "{" +
-        //                        "\"Account\":" + "\"" + account + "\"" + "," +
-        //                        "\"Company\":" + MainPage.Company + "," +
-        //                        "\"Language\":" + "\"" + Language.CurrentLanguage + "\"" + "," +
-        //                        "\"AreaCode\":" + OnAppConfig.Instance.CountryNumber +
-        //                        "}";
-        //    return RequestHttps($"{severAddress}/ZigbeeUsers/LoginSendVerCode", jsonString, false);
-        //}
 
         /// <summary>
         /// 楠岃瘉楠岃瘉鐮�
         /// </summary>
-        /// <param name="account"></param>
-        /// <param name="code"></param>
+        /// <param name="verifyType">楠岃瘉绫诲瀷</param>
+        /// <param name="account">楠岃瘉璐﹀彿</param>
+        /// <param name="code">楠岃瘉鐮�</param>
+        /// <param name="isPhone">鏄惁鎵嬫満</param>
+        /// <param name="verifySuccessFail">楠岃瘉閫氳繃鍚庯紝楠岃瘉鐮佹槸鍚﹀け鏁�</param>
         /// <returns></returns>
-        public ResponsePack ValidatorCode(string account, string code, int countryIndex)
+        public ResponsePackNew ValidatorCode(VerifyType verifyType, string account, string code, bool isPhone, bool verifySuccessFail = true)
         {
-            string jsonString = "{" +
-                                "\"Account\":" + "\"" + account + "\"" + "," +
-                                "\"Code\":" + "\"" + code + "\"" + "," +
-                                "\"Language\":" + "\"" + Language.CurrentLanguage + "\"" + "," +
-                                "\"AreaCode\":" + countryIndex +
-                                "}";
-            return RequestHttps($"{severAddress}/ZigbeeUsers/ValidatorCode", jsonString, false);
+            var requestObj = new VerifyCodeCheckObj() { verifyCode = code, verifyType = (int)verifyType, verifySuccessFail = verifySuccessFail };
+            if (isPhone)
+            {
+                //鎵嬫満
+                requestObj.phone = account;
+            }
+            else
+            {
+                //閭
+                requestObj.mail = account;
+            }
+            var requestJson = HttpUtil.GetSignRequestJson(requestObj);
+            return HttpUtil.RequestHttpsPost(NewAPI.API_POST_Verification_Check, requestJson);
         }
 
-        /// <summary>
-        /// 閲嶈瀵嗙爜
-        /// </summary>
-        /// <returns></returns>
-        public ResponsePack ResetPassword(string account, string password, string rePassword, int countryIndex)
-        {
-            string jsonString = "{" +
-                                "\"Account\":" + "\"" + account + "\"" + "," +
-                                "\"Password\":" + "\"" + password + "\"" + "," +
-                                "\"AgainPassword\":" + "\"" + rePassword + "\"" + "," +
-                                "\"AreaCode\":" + countryIndex +
-                                "}";
-            return RequestHttps($"{severAddress}/ZigbeeUsers/ResetPassword", jsonString, false);
-        }
         #endregion
 
         #region 涓汉淇℃伅閮ㄥ垎
@@ -251,56 +277,114 @@
         /// 鑾峰彇鐢ㄦ埛淇℃伅
         /// </summary>
         /// <returns></returns>
-        public void GetUserInfo()
+        public void GetUserInfo(bool bGetHeadImage = true)
         {
-            Dictionary<string, object> d = new Dictionary<string, object>();
-            var requestJson = Newtonsoft.Json.JsonConvert.SerializeObject(d);
-            var revertObj = RequestHttps($"{severAddress}/ZigbeeUsers/GetAccountInfo", requestJson, true);
-
-            if (revertObj.StateCode.ToUpper() == "SUCCESS")
+            var requestJson = HttpUtil.GetSignRequestJson(new NullObj());
+            var resultObj = HttpUtil.RequestHttpsPost(NewAPI.API_POST_Member_GetMemberInfo, requestJson);
+            if (resultObj.Code == StateCode.SUCCESS)
             {
-                var dataStr = JObject.FromObject(revertObj.ResponseData);
-                //"DistributedMark": "96439601-fd26-4768-8440-1d9dfa32c109",  < !--甯愬彿Id-- >
-                MainPage.LoginUser.userEmailInfo = dataStr.GetValue("Email").ToString();
-                MainPage.LoginUser.userMobileInfo = dataStr.GetValue("Phone").ToString();
-                FileStream fs = null;
-                try
+                var info = Newtonsoft.Json.JsonConvert.DeserializeObject<MemberInfoRes>(resultObj.Data.ToString());
+                UserInfo.Current.userEmailInfo = info.memberEmail;
+                UserInfo.Current.userMobileInfo = info.memberPhone;
+                UserInfo.Current.userName = info.memberName;
+                if (!string.IsNullOrEmpty(info.memberPhonePrefix))
                 {
-                    var headImageString = dataStr.GetValue("HeadImage").ToString();
-                    if (!string.IsNullOrEmpty(headImageString))
-                    {
-                        var jsonString = Newtonsoft.Json.JsonConvert.SerializeObject(headImageString);
-                        var headImageBytes = Newtonsoft.Json.JsonConvert.DeserializeObject<byte[]>(jsonString);
-                        MainPage.LoginUser.headImagePageBytes = headImageBytes;
-                        var filePath = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.Personal) + "/", "headImage.png");
-                        fs = new FileStream(filePath, FileMode.Create, FileAccess.Write);
-                        fs.Write(headImageBytes, 0, headImageBytes.Length);
-                        fs.Flush();
-                        MainPage.LoginUser.headImagePagePath = filePath;
-                    }
-                } catch (Exception ex)
-                {
-                    MainPage.Log($"download headImage error : {ex.Message}");
+                    UserInfo.Current.areaCode = info.memberPhonePrefix;
                 }
-                finally
+                //鏄惁闇�瑕佽幏鍙栧ご鍍�
+                if (bGetHeadImage)
                 {
-                    if (fs != null)
+                    var headImageBytes = DownHeadImage();
+                    if (headImageBytes != null && headImageBytes.Length > 0)
                     {
-                        fs.Close();
+                        UserInfo.Current.headImagePageBytes = headImageBytes;
+                        FileStream fs = null;
+                        try
+                        {
+                            UserInfo.Current.headImagePageBytes = headImageBytes;
+                            var filePath = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.Personal) + "/", "headImage.png");
+                            fs = new FileStream(filePath, FileMode.Create, FileAccess.Write);
+                            fs.Write(headImageBytes, 0, headImageBytes.Length);
+                            fs.Flush();
+                            UserInfo.Current.headImagePagePath = filePath;
+                        }
+                        catch (Exception ex)
+                        {
+                            MainPage.Log($"download headImage error : {ex.Message}");
+                        }
+                        finally
+                        {
+                            if (fs != null)
+                            {
+                                fs.Close();
+                            }
+                        }
+
                     }
                 }
-                // "GesturePwd": null,  < !--鎵嬪娍瀵嗙爜-- >
-                // "StringPwd": null , < !--瀛楃涓插瘑鐮�-- >
-                MainPage.LoginUser.userName = dataStr.GetValue("UserName").ToString();
 
-                Application.RunOnMainThread(() =>
-                {
-                });
-
-                MainPage.LoginUser.SaveUserInfo();
+                UserInfo.Current.SaveUserInfo();
                 MainPage.Log("鑾峰彇鐢ㄦ埛淇℃伅鎴愬姛銆�");
             }
 
+
+            //    Dictionary<string, object> d = new Dictionary<string, object>();
+            //var requestJson = Newtonsoft.Json.JsonConvert.SerializeObject(d);
+            //var revertObj = RequestHttps($"{severAddress}/ZigbeeUsers/GetAccountInfo", requestJson, true);
+
+            //if (revertObj.StateCode.ToUpper() == StateCode.SUCCESS)
+            //{
+            //    var dataStr = JObject.FromObject(revertObj.ResponseData);
+            //    //"DistributedMark": "96439601-fd26-4768-8440-1d9dfa32c109",  < !--甯愬彿Id-- >
+            //     UserInfo.Current.userEmailInfo = dataStr.GetValue("Email").ToString();
+            //     UserInfo.Current.userMobileInfo = dataStr.GetValue("Phone").ToString();
+            //    FileStream fs = null;
+            //    try
+            //    {
+            //        var headImageString = dataStr.GetValue("HeadImage").ToString();
+            //        if (!string.IsNullOrEmpty(headImageString))
+            //        {
+            //            var jsonString = Newtonsoft.Json.JsonConvert.SerializeObject(headImageString);
+            //            var headImageBytes = Newtonsoft.Json.JsonConvert.DeserializeObject<byte[]>(jsonString);
+            //             UserInfo.Current.headImagePageBytes = headImageBytes;
+            //            var filePath = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.Personal) + "/", "headImage.png");
+            //            fs = new FileStream(filePath, FileMode.Create, FileAccess.Write);
+            //            fs.Write(headImageBytes, 0, headImageBytes.Length);
+            //            fs.Flush();
+            //             UserInfo.Current.headImagePagePath = filePath;
+            //        }
+            //    }
+            //    catch (Exception ex)
+            //    {
+            //        MainPage.Log($"download headImage error : {ex.Message}");
+            //    }
+            //    finally
+            //    {
+            //        if (fs != null)
+            //        {
+            //            fs.Close();
+            //        }
+            //    }
+            //    // "GesturePwd": null,  < !--鎵嬪娍瀵嗙爜-- >
+            //    // "StringPwd": null , < !--瀛楃涓插瘑鐮�-- >
+            //     UserInfo.Current.userName = dataStr.GetValue("UserName").ToString();
+
+            //    Application.RunOnMainThread(() =>
+            //    {
+            //    });
+
+            //     UserInfo.Current.SaveUserInfo();
+            //    MainPage.Log("鑾峰彇鐢ㄦ埛淇℃伅鎴愬姛銆�");
+            //}
+
+        }
+
+        /// <summary>
+        /// 涓嬭浇鐢ㄦ埛澶村儚
+        /// </summary>
+        public byte[] DownHeadImage()
+        {
+            return HttpUtil.RequestHttpsDownload(NewAPI.API_POST_Head_Down, null);
         }
 
         /// <summary>
@@ -308,14 +392,13 @@
         /// </summary>
         /// <param name="userName"></param>
         /// <returns></returns>
-        public ResponsePack EditUserName(string userName)
+        public ResponsePackNew EditUserName(string userName)
         {
-            Dictionary<string, string> d = new Dictionary<string, string>();
-            d.Add("UserName", userName);
-            var requestJson = Newtonsoft.Json.JsonConvert.SerializeObject(d);
-            var revertObj = RequestHttps($"{severAddress}/ZigbeeUsers/UpdateUserName", requestJson, true);
-            return revertObj;
-
+            var requestJson = HttpUtil.GetSignRequestJson(new UpdateMemberNameRes()
+            {
+                memberName = userName
+            });
+            return HttpUtil.RequestHttpsPost(NewAPI.API_POST_Member_UpdateMemberInfo, requestJson);
         }
 
         /// <summary>
@@ -328,152 +411,269 @@
             FileStream fs = new FileStream(fileName, FileMode.Open, FileAccess.Read);
             byte[] bytes = new byte[fs.Length];
             fs.Read(bytes, 0, bytes.Length);
-
-            Dictionary<string, byte[]> d = new Dictionary<string, byte[]>();
-            d.Add("HeadImage", bytes);
-            var requestJson = Newtonsoft.Json.JsonConvert.SerializeObject(d);
-
-            var revertObj = RequestHttps($"{severAddress}/ZigbeeUsers/UpdateHeadImage", requestJson, true);
-            return revertObj.StateCode;
+            var revertObj = HttpUtil.RequestHttpsUpload(RestSharp.Method.POST, NewAPI.API_POST_Head_Upload, bytes);
+            return revertObj.Code;
         }
 
         /// <summary>
         /// 鏇存敼缁戝畾璐︽埛鐨勯偖绠辨垨鑰呮墜鏈哄彿
+        /// 2020-11-16 寰呬慨鏀�
         /// </summary>
         /// <param name="account"></param>
+        /// <param name="code"></param>
+        /// <param name="isPhone"></param>
         /// <returns></returns>
-        public string BindAccount(string account)
+        public string BindAccount(string account, string code = "", bool isPhone = false)
         {
-            string jsonString = "{" + "\"Account\":" + "\"" + account + "\"" + "}";
-            var responsePack = RequestHttps($"{severAddress}/ZigbeeUsers/BindAccount", jsonString, true);
-            return responsePack.StateCode;
+            var requestObj = new BindWithAccountObj() { verifyCode = code };
+            if (isPhone)
+            {
+                //鎵嬫満
+                requestObj.memberPhone = account;
+            }
+            else
+            {
+                //閭
+                requestObj.memberEmail = account;
+            }
+            var requestJson = HttpUtil.GetSignRequestJson(requestObj);
+            return HttpUtil.RequestHttpsPost(NewAPI.API_POST_Member_BindWithAccount, requestJson).Code;
         }
+
+        /// <summary>
+        /// 瑙g粦鎵嬫満鎴栬�呴偖绠�
+        /// </summary>
+        /// <param name="isPhone"></param>
+        /// <returns></returns>
+        public string UnBindAccount(bool isPhone)
+        {
+            var requestObj = new UnBindAccountObj() { unBindLabel = isPhone ? "PHONE" : "EMAIL" };
+            var requestJson = HttpUtil.GetSignRequestJson(requestObj);
+            return HttpUtil.RequestHttpsPost(NewAPI.API_POST_Member_UnbindWithAccount, requestJson).Code;
+        }
+
         #endregion
 
         #region 浣忓畢閮ㄥ垎
         /// <summary>
         /// 鑾峰彇浣忓畢鍒楄〃
         /// </summary>
-        public string GetHomePager()
+        public string GetHomePager(HomeTypeEnum homeType = HomeTypeEnum.ALL)
         {
-            string jsonString = "{" +
-                                "\"RequestVersion\":" + "\"" + MainPage.VersionString + "\"" + "," +
-                                "\"RequestSource\":" + "\"" + "2" + "\"" + "," +
-                                "\"HomeType\":" + "\"" + "1" + "\"" + "," +
-                                "\"LoginAccessToken\":" + "\"" + MainPage.LoginUser.loginTokenString + "\"" +
-                                "}";
-            var responsePack = RequestHttps($"{severAddress}/App/GetHomePager", jsonString,false);
-
-            if (responsePack.StateCode.ToUpper() == "SUCCESS")
+            var requestJson = Newtonsoft.Json.JsonConvert.SerializeObject(new GetHomeListObj() { homeType = homeType.ToString() });
+            var resultObj = HttpUtil.RequestHttpsPost(NewAPI.API_POST_Gethomepager, requestJson);
+            if (resultObj.Code == StateCode.SUCCESS)
             {
-                var dataStr = JObject.FromObject(responsePack.ResponseData);
-                //娌℃湁浣忓畢
-                if (dataStr.GetValue("PageData").ToString() == "[]")
+                var homeList = Newtonsoft.Json.JsonConvert.DeserializeObject<List<RegionInfoResNew>>(resultObj.Data.ToString());
+                if (homeList == null || homeList.Count == 0)
                 {
+
 
                 }
                 else
                 {
-                    //{
-                    // {
-                    //  "Id": "1107487",
-                    //  "HomeStatus": 2,
-                    //  "UserGuid": "22980",
-                    //  "Name": "鍟�",
-                    //  "Address": null,
-                    //  "Longitude": 0.0,
-                    //  "Latitude": 0.0,
-                    //  "RegionName": null,
-                    //  "Company": null,
-                    //  "ContactPerson": null,
-                    //  "ContactPersonPhone": null,
-                    //  "Remarks": null,
-                    //  "ChangeDate": null,
-                    //  "AccountType": 0,
-                    //  "CreatedOnUtc": "2020-05-27T06:52:03",
-                    //  "IsOthreShare": false,
-                    //  "MainUserDistributedMark": null,
-                    //  "HomeGateways": [
-                    //    {
-                    //      "GatewayUniqueId": "4E47323347591243"
-                    //    }
-                    //  ]
-                    //}}
-                    MainPage.LoginUser.regionList = new List<RegionInfoRes>();
-                    foreach (var jsonData in dataStr.GetValue("PageData"))
+                    UserInfo.Current.regionList = new List<RegionInfoRes>();
+
+                    foreach (var mHome in homeList)
                     {
-                        var homeJsonStr = JObject.FromObject(jsonData);
                         var home = new RegionInfoRes()
                         {
-                            RegionID = homeJsonStr.GetValue("Id").ToString(),
-                            RegionName = homeJsonStr.GetValue("RegionName").ToString(),
-                            Name = homeJsonStr.GetValue("Name").ToString(),
-                            Address = homeJsonStr.GetValue("Address").ToString(),
-                            IsOthreShare = (bool)homeJsonStr.GetValue("IsOthreShare"),
-                            homeGateways = Newtonsoft.Json.JsonConvert.DeserializeObject<List<HomeGateways>>(homeJsonStr.GetValue("HomeGateways").ToString()),
+                            RegionID = mHome.Id,
+                            Name = mHome.homeName,
+                            IsOthreShare = mHome.IsOtherShare,
+                            accountType = mHome.accountType,
+                            isRemoteControl = mHome.isRemoteControl,
+                            longitude = mHome.longitude,
+                            latitude = mHome.latitude,
+                            deliverstatus = mHome.deliverstatus,
+                            homeType = mHome.homeType,
+                            regionUrl = mHome.regionUrl,
+                            emqUrl = mHome.emqUrl,
+                            homeRegionName = mHome.homeRegionName,
+                            homeRegionId = mHome.homeRegionId,
+                            Address = mHome.homeAddress,
                         };
                         if (home.IsOthreShare)
                         {
                             continue;
                         }
-                        MainPage.LoginUser.regionList.Add(home);
-                        if (string.IsNullOrEmpty(DB_ResidenceData.residenceData.CurReginID))
-                        {
-                            DB_ResidenceData.residenceData.CurReginID = MainPage.LoginUser.regionList[0].RegionID;
-                        }
+                        UserInfo.Current.regionList.Add(home);
+                    }
+
+                    if (string.IsNullOrEmpty(DB_ResidenceData.residenceData.CurReginID))
+                    {
+                        DB_ResidenceData.residenceData.CurReginID = UserInfo.Current.regionList[0].RegionID;
                     }
                     DB_ResidenceData.residenceData.SaveResidenceData();
-                    MainPage.LoginUser.SaveUserInfo();
+                    UserInfo.Current.SaveUserInfo();
                 }
+
             }
-            return responsePack.StateCode;
+
+            return resultObj.Code;
+
+            //string jsonString = "{" +
+            //                    "\"RequestVersion\":" + "\"" + MainPage.VersionString + "\"" + "," +
+            //                    "\"RequestSource\":" + "\"" + "2" + "\"" + "," +
+            //                    "\"HomeType\":" + "\"" + "1" + "\"" + "," +
+            //                    "\"LoginAccessToken\":" + "\"" +  UserInfo.Current.loginTokenString + "\"" +
+            //                    "}";
+            //var responsePack = RequestHttps($"{severAddress}/App/GetHomePager", jsonString, false);
+
+            //if (responsePack.StateCode.ToUpper() == StateCode.SUCCESS_CODE)
+            //{
+            //    var dataStr = JObject.FromObject(responsePack.ResponseData);
+            //    //娌℃湁浣忓畢
+            //    if (dataStr.GetValue("PageData").ToString() == "[]")
+            //    {
+
+            //    }
+            //    else
+            //    {
+            //        //{
+            //        // {
+            //        //  "Id": "1107487",
+            //        //  "HomeStatus": 2,
+            //        //  "UserGuid": "22980",
+            //        //  "Name": "鍟�",
+            //        //  "Address": null,
+            //        //  "Longitude": 0.0,
+            //        //  "Latitude": 0.0,
+            //        //  "RegionName": null,
+            //        //  "Company": null,
+            //        //  "ContactPerson": null,
+            //        //  "ContactPersonPhone": null,
+            //        //  "Remarks": null,
+            //        //  "ChangeDate": null,
+            //        //  "AccountType": 0,
+            //        //  "CreatedOnUtc": "2020-05-27T06:52:03",
+            //        //  "IsOthreShare": false,
+            //        //  "MainUserDistributedMark": null,
+            //        //  "HomeGateways": [
+            //        //    {
+            //        //      "GatewayUniqueId": "4E47323347591243"
+            //        //    }
+            //        //  ]
+            //        //}}
+            //         UserInfo.Current.regionList = new List<RegionInfoRes>();
+            //        foreach (var jsonData in dataStr.GetValue("PageData"))
+            //        {
+            //            var homeJsonStr = JObject.FromObject(jsonData);
+            //            var home = new RegionInfoRes()
+            //            {
+            //                RegionID = homeJsonStr.GetValue("Id").ToString(),
+            //                RegionName = homeJsonStr.GetValue("RegionName").ToString(),
+            //                Name = homeJsonStr.GetValue("Name").ToString(),
+            //                Address = homeJsonStr.GetValue("Address").ToString(),
+            //                IsOthreShare = (bool)homeJsonStr.GetValue("IsOthreShare"),
+            //                homeGateways = Newtonsoft.Json.JsonConvert.DeserializeObject<List<HomeGateways>>(homeJsonStr.GetValue("HomeGateways").ToString()),
+            //            };
+            //            if (home.IsOthreShare)
+            //            {
+            //                continue;
+            //            }
+            //             UserInfo.Current.regionList.Add(home);
+            //            if (string.IsNullOrEmpty(DB_ResidenceData.residenceData.CurReginID))
+            //            {
+            //                DB_ResidenceData.residenceData.CurReginID =  UserInfo.Current.regionList[0].RegionID;
+            //            }
+            //        }
+            //        DB_ResidenceData.residenceData.SaveResidenceData();
+            //         UserInfo.Current.SaveUserInfo();
+            //    }
+            //}
+            //return responsePack.StateCode;
         }
+
         /// <summary>
         /// 缂栬緫浣忓畢淇℃伅
         /// </summary>
+        /// <param name="editId">0 淇敼浣忓畢鍚嶅瓧銆�1 淇敼浣忓畢鍦板潃</param>
+        /// <param name="editName"></param>
         /// <returns></returns>
-        public ResponsePack EditResidenceInfo()
+        public ResponsePackNew EditResidenceInfo(int editId, string editName)
         {
-            //鍒涘缓瀛楀吀
-            Dictionary<string, object> d = new Dictionary<string, object>();
-            //娣诲姞鍏冪礌
-            d.Add("RequestVersion", MainPage.VersionString);
-            d.Add("RequestSource", "2");
-            d.Add("LoginAccessToken", MainPage.LoginUser.loginTokenString);
-            d.Add("HomeId", DB_ResidenceData.residenceData.residecenInfo.RegionID);
-            d.Add("HomeType", 1);
-            d.Add("Name", DB_ResidenceData.residenceData.residecenInfo.Name);
-            d.Add("Address", DB_ResidenceData.residenceData.residecenInfo.Address);
-            //娣诲姞瀹屾垚浠ュ悗鎶婂瓧鍏哥被涓暟鎹牸寮忓寲涓簀son瀛楃涓�
-            //灏嗗璞¤浆涓簀son瀛楃涓�
+            var requestObj = new AddOrUpdateHomeObj()
+            {
+                homeId = DB_ResidenceData.residenceData.residecenInfo.RegionID,
+            };
 
-            string jsonString = Newtonsoft.Json.JsonConvert.SerializeObject(d);
-            return RequestHttps($"{severAddress}/App/EditHome", jsonString, false);
+            if (editId == 0)
+            {
+                requestObj.homeName = editName;
+            }
+            else if (editId == 1)
+            {
+                requestObj.Address = editName;
+            }
+
+            var requestJson = Newtonsoft.Json.JsonConvert.SerializeObject(requestObj);
+            return HttpUtil.RequestHttpsPostFroHome(NewAPI.API_POST_Home_UpdateHome, requestJson);
+        }
+
+        /// <summary>
+        /// 鑾峰彇鍒锋柊褰撳墠浣忓畢缃戝叧鎺ュ彛
+        /// </summary>
+        public void GetHomeGatewayList()
+        {
+            if (string.IsNullOrEmpty(DB_ResidenceData.residenceData.residecenInfo.RegionID)) return;
+            var nowhomeId = DB_ResidenceData.residenceData.residecenInfo.RegionID;
+            var requestJson = Newtonsoft.Json.JsonConvert.SerializeObject(new HomeIdObj() { homeId = nowhomeId });
+            var revertObj = HttpUtil.RequestHttpsPostFroHome(NewAPI.API_POST_GetGatewayList, requestJson);
+            if (revertObj.Code == StateCode.SUCCESS)
+            {
+                var mHomeGatewayRes = Newtonsoft.Json.JsonConvert.DeserializeObject<List<HomeGatewayInfo>>(revertObj.Data.ToString());
+                if (nowhomeId == DB_ResidenceData.residenceData.residecenInfo.RegionID)
+                {
+                    if (mHomeGatewayRes != null)
+                    {
+                        if (mHomeGatewayRes.Count > 0)
+                        {
+                            DB_ResidenceData.residenceData.residenceGatewayMAC = mHomeGatewayRes[0].mac;
+                        }
+                        else
+                        {
+                            DB_ResidenceData.residenceData.residenceGatewayMAC = "";
+
+                        }
+                        DB_ResidenceData.residenceData.SaveResidenceData();
+                    }
+
+                    if (mHomeGatewayRes != null)
+                    {
+                        //Utlis.WriteLine ("鑾峰緱褰撳墠浣忓畢缃戝叧涓暟锛�" + mHomeGatewayRes.content.Count);
+                    }
+                }
+            }
+            else
+            {
+                //鎻愮ず閿欒
+            }
         }
 
         /// <summary>
         /// 鑾峰彇浣忓畢涓嬬殑鎴愬憳璐﹀彿
         /// </summary>
         /// <returns></returns>
-        public ResponsePack GetResidenceMemberAccount()
+        public ResponsePackNew GetResidenceMemberAccount()
         {
-            Dictionary<string, object> d = new Dictionary<string, object>();
-            d.Add("DistributedMark", DB_ResidenceData.residenceData.residecenInfo.RegionID);
-            string jsonString = Newtonsoft.Json.JsonConvert.SerializeObject(d);
-            return RequestHttps($"{severAddress}/ZigbeeUsers/GetSubAccountByDistributedMark", jsonString, true);
+            var requestJson = Newtonsoft.Json.JsonConvert.SerializeObject(new HomeIdObj() { homeId = DB_ResidenceData.residenceData.residecenInfo.RegionID });
+            return HttpUtil.RequestHttpsPostFroHome(NewAPI.API_POST_Child_FindAll, requestJson);
         }
 
         /// <summary>
         /// 鍒犻櫎浣忓畢涓嬬殑鎴愬憳璐﹀彿
         /// </summary>
         /// <returns></returns>
-        public ResponsePack DeleteResidenceMemberAccount(string memberAccount)
+        public ResponsePackNew DeleteResidenceMemberAccount(ResidenceMemberInfo subaccount)
         {
-            Dictionary<string, object> d = new Dictionary<string, object>();
-            d.Add("SubAccount", memberAccount);
-            d.Add("HouseDistributedMark", DB_ResidenceData.residenceData.residecenInfo.RegionID);
-            string jsonString = Newtonsoft.Json.JsonConvert.SerializeObject(d);
-            return RequestHttps($"{severAddress}/ZigbeeUsers/DeletedSubAccount", jsonString, true);
+            var requestObj = new ChildDeleteObj()
+            {
+                childAccountId = subaccount.childAccountId,
+                homeId = subaccount.homeId
+            };
+            var requestJson = Newtonsoft.Json.JsonConvert.SerializeObject(requestObj);
+            return HttpUtil.RequestHttpsPostFroHome(NewAPI.API_POST_Child_Delete, requestJson);
         }
 
         /// <summary>
@@ -482,13 +682,16 @@
         /// <param name="nickName"></param>
         /// <param name="subAccountGuid"></param>
         /// <returns></returns>
-        public ResponsePack EditSubAccountNickName(string nickName,string subAccountGuid)
+        public ResponsePackNew EditSubAccountNickName(string nickName, string childAccountId)
         {
-            Dictionary<string, object> d = new Dictionary<string, object>();
-            d.Add("SubAccountGuid", subAccountGuid);
-            d.Add("NickName", nickName);
-            string jsonString = Newtonsoft.Json.JsonConvert.SerializeObject(d);
-            return RequestHttps($"{severAddress}/ZigbeeUsers/EditSubAccountNickName", jsonString, true);
+            var requestJson = Newtonsoft.Json.JsonConvert.SerializeObject(new UpdateChildNickNameObj()
+            {
+                homeId = DB_ResidenceData.residenceData.residecenInfo.RegionID,
+                childAccountId = childAccountId,
+                nickName = nickName,
+            });
+            return HttpUtil.RequestHttpsPostFroHome(NewAPI.API_POST_Child_Update, requestJson);
+
         }
         /// <summary>
         /// 淇敼瀛愯处鍙峰垱寤哄満鏅潈闄�
@@ -496,70 +699,105 @@
         /// <param name="nickName"></param>
         /// <param name="subAccountGuid"></param>
         /// <returns></returns>
-        public ResponsePack ChangeCreateSceneState(string homeGuid, string subAccountGuid)
+        public ResponsePackNew ChangeCreateSceneState(bool isAllow, string childAccountId)
         {
-            Dictionary<string, object> d = new Dictionary<string, object>();
-            d.Add("SubAccountGuid", subAccountGuid);
-            d.Add("HomeGuid", homeGuid);
-            string jsonString = Newtonsoft.Json.JsonConvert.SerializeObject(d);
-            return RequestHttps($"{severAddress}/ZigbeeUsers/ChangeCreateSceneState", jsonString, true);
+            var requestJson = Newtonsoft.Json.JsonConvert.SerializeObject(new UpdateChildAllowCreateSceneObj()
+            {
+                homeId = DB_ResidenceData.residenceData.residecenInfo.RegionID,
+                childAccountId = childAccountId,
+                isAllowCreateScene = isAllow,
+            });
+            return HttpUtil.RequestHttpsPostFroHome(NewAPI.API_POST_Child_Update, requestJson);
         }
 
         /// <summary>
         /// 鑾峰彇浣忓畢涓嬪瓙璐﹀彿鐨勫叡浜暟鎹垪琛�
         /// </summary>
         /// <returns></returns>
-        public ResponsePack GetShareDataByMemberAccount(string memberId)
+        public ResponsePackNew GetShareDataByMemberAccount(string childAccountId)
         {
-            Dictionary<string, object> d = new Dictionary<string, object>();
-            d.Add("DistributedMark", memberId);
-            d.Add("HouseDistributedMark", DB_ResidenceData.residenceData.residecenInfo.RegionID);
-            string jsonString = Newtonsoft.Json.JsonConvert.SerializeObject(d);
-            return RequestHttps($"{severAddress}/ZigbeeDataShare/GetShareDataBySubAccount", jsonString, true);
+            //Dictionary<string, object> d = new Dictionary<string, object>();
+            //d.Add("DistributedMark", memberId);
+            //d.Add("HouseDistributedMark", DB_ResidenceData.residenceData.residecenInfo.RegionID);
+            //string jsonString = Newtonsoft.Json.JsonConvert.SerializeObject(d);
+            //return RequestHttps($"{severAddress}/ZigbeeDataShare/GetShareDataBySubAccount", jsonString, true);
+
+            var requestJson = Newtonsoft.Json.JsonConvert.SerializeObject(new HomeShareFindAll()
+            {
+                homeId = DB_ResidenceData.residenceData.residecenInfo.RegionID,
+                childAccountId = childAccountId
+            });
+            return HttpUtil.RequestHttpsPostFroHome(NewAPI.API_POST_Home_Share_FindAll, requestJson);
+
         }
 
         /// <summary>
-        /// 鑾峰彇浣忓畢涓嬪瓙璐﹀彿鐨勫叡浜暟鎹�
+        /// 涓嬭浇鍗曚釜鍒嗕韩鏂囦欢
         /// </summary>
         /// <returns></returns>
-        public ResponsePack GetShareData(string memberId,string hId)
+        public byte[] GetShareData(ShareData shareData)
         {
-            Dictionary<string, object> d = new Dictionary<string, object>();
-            d.Add("DistributedMark", memberId);
-            d.Add("HouseDistributedMark", hId);
-            string jsonString = Newtonsoft.Json.JsonConvert.SerializeObject(d);
-            return RequestHttps($"{severAddress}/ZigbeeDataShare/GetOneShareData", jsonString, true);
+            //Dictionary<string, object> d = new Dictionary<string, object>();
+            //d.Add("DistributedMark", memberId);
+            //d.Add("HouseDistributedMark", hId);
+            //string jsonString = Newtonsoft.Json.JsonConvert.SerializeObject(d);
+            //return RequestHttps($"{severAddress}/ZigbeeDataShare/GetOneShareData", jsonString, true);
+
+            var requestJson = Newtonsoft.Json.JsonConvert.SerializeObject(new ShareFileDownObj()
+            {
+                homeId = shareData.homeId,
+                homeShareId = shareData.id
+            });
+            var replaceToken = "";
+            if (DB_ResidenceData.residenceData.residecenInfo.IsOthreShare)
+            {
+                replaceToken = DB_ResidenceData.residenceData.MasterToken;
+            }
+            return HttpUtil.RequestHttpsDownload(NewAPI.API_POST_Home_Share_DownOne, requestJson, null, DB_ResidenceData.residenceData.residecenInfo.regionUrl, replaceToken);
+
         }
 
         /// <summary>
         /// 澧炲姞鍏变韩鏁版嵁鍒楄〃
         /// </summary>
         /// <returns></returns>
-        public ResponsePack AddShareData(ShareData shareData)
+        public ResponsePackNew AddShareData(ShareData shareData)
         {
-            Dictionary<string, object> d = new Dictionary<string, object>();
-            d.Add("ShareName", shareData.ShareName);
-            d.Add("HouseDistributedMark", shareData.HouseDistributedMark);
-            d.Add("ShareDataBytes", shareData.ShareDataBytes);
-            d.Add("SubAccountDistributedMark", shareData.SubAccountDistributedMark);
-            string jsonString = Newtonsoft.Json.JsonConvert.SerializeObject(d);
-            return RequestHttps($"{severAddress}/ZigbeeDataShare/AddShareData", jsonString, true);
+            //Dictionary<string, object> d = new Dictionary<string, object>();
+            //d.Add("ShareName", shareData.ShareName);
+            //d.Add("HouseDistributedMark", shareData.HouseDistributedMark);
+            //d.Add("ShareDataBytes", shareData.ShareDataBytes);
+            //d.Add("SubAccountDistributedMark", shareData.SubAccountDistributedMark);
+            //string jsonString = Newtonsoft.Json.JsonConvert.SerializeObject(d);
+            //return RequestHttps($"{severAddress}/ZigbeeDataShare/AddShareData", jsonString, true);
+
+            var queryDic = new Dictionary<string, object>();
+            queryDic.Add("homeId", DB_ResidenceData.residenceData.residecenInfo.RegionID);
+            queryDic.Add("childAccountId", shareData.childAccountId);
+            queryDic.Add("fileName", shareData.fileName);
+            var replaceToken = "";
+            if (DB_ResidenceData.residenceData.residecenInfo.IsOthreShare)
+            {
+                replaceToken = DB_ResidenceData.residenceData.MasterToken;
+            }
+            return HttpUtil.RequestHttpsUpload(RestSharp.Method.POST, NewAPI.API_POST_Home_Share_Add, shareData.ShareDataBytes, queryDic, null, DB_ResidenceData.residenceData.residecenInfo.regionUrl, replaceToken);
         }
 
         /// <summary>
         /// 澧炲姞鍏变韩鏁版嵁
         /// </summary>
         /// <returns></returns>
-        public ResponsePack EditShareData(ShareData shareData)
+        public ResponsePackNew EditShareData(ShareData shareData)
         {
-            Dictionary<string, object> d = new Dictionary<string, object>();
-            d.Add("DistributedMark", shareData.DistributedMark);
-            d.Add("ShareName", shareData.ShareName);
-            d.Add("HouseDistributedMark", shareData.HouseDistributedMark);
-            d.Add("ShareDataBytes", shareData.ShareDataBytes);
-            d.Add("SubAccountDistributedMark", shareData.SubAccountDistributedMark);
-            string jsonString = Newtonsoft.Json.JsonConvert.SerializeObject(d);
-            return RequestHttps($"{severAddress}/ZigbeeDataShare/EditShareData", jsonString, true);
+            return AddShareData(shareData);
+            //Dictionary<string, object> d = new Dictionary<string, object>();
+            //d.Add("DistributedMark", shareData.DistributedMark);
+            //d.Add("ShareName", shareData.ShareName);
+            //d.Add("HouseDistributedMark", shareData.HouseDistributedMark);
+            //d.Add("ShareDataBytes", shareData.ShareDataBytes);
+            //d.Add("SubAccountDistributedMark", shareData.SubAccountDistributedMark);
+            //string jsonString = Newtonsoft.Json.JsonConvert.SerializeObject(d);
+            //return RequestHttps($"{severAddress}/ZigbeeDataShare/EditShareData", jsonString, true);
         }
 
         /// <summary>
@@ -567,26 +805,32 @@
         /// </summary>
         /// <param name="shareData"></param>
         /// <returns></returns>
-        public ResponsePack DeleteShareData(ShareData shareData)
+        public ResponsePackNew DeleteShareData(ShareData shareData)
         {
-            Dictionary<string, string> d = new Dictionary<string, string>();
-            d.Add("DistributedMark", shareData.DistributedMark);
-            d.Add("HouseDistributedMark", shareData.HouseDistributedMark);
-            string jsonString = Newtonsoft.Json.JsonConvert.SerializeObject(d);
-            return RequestHttps($"{severAddress}/ZigbeeDataShare/DeleteShareData", jsonString, true);
+            var requestJson = Newtonsoft.Json.JsonConvert.SerializeObject(new ShareFileDownObj()
+            {
+                homeId = shareData.homeId,
+                homeShareId = shareData.id
+            });
+            return HttpUtil.RequestHttpsPostFroHome(NewAPI.API_POST_Home_Share_Delete, requestJson);
+            //Dictionary<string, string> d = new Dictionary<string, string>();
+            //d.Add("DistributedMark", shareData.DistributedMark);
+            //d.Add("HouseDistributedMark", shareData.HouseDistributedMark);
+            //string jsonString = Newtonsoft.Json.JsonConvert.SerializeObject(d);
+            //return RequestHttps($"{severAddress}/ZigbeeDataShare/DeleteShareData", jsonString, true);
         }
-        /// <summary>
-        /// 鍒犻櫎瀛愯处鍙峰綋鍓嶄綇瀹呯殑鎵�鏈夊叡浜暟鎹�
-        /// </summary>
-        /// <returns></returns>
-        public ResponsePack DeleteCurrentResidenceSharedData(ShareData shareData)
-        {
-            Dictionary<string, string> d = new Dictionary<string, string>();
-            d.Add("SubAccountDistributedMark", shareData.SubAccountDistributedMark);
-            d.Add("HouseDistributedMark", shareData.HouseDistributedMark);
-            string jsonString = Newtonsoft.Json.JsonConvert.SerializeObject(d);
-            return RequestHttps($"{severAddress}/ZigbeeDataShare/DeleteShareData", jsonString, true);
-        }
+        ///// <summary>
+        ///// 鍒犻櫎瀛愯处鍙峰綋鍓嶄綇瀹呯殑鎵�鏈夊叡浜暟鎹�
+        ///// </summary>
+        ///// <returns></returns>
+        //public ResponsePack DeleteCurrentResidenceSharedData(ShareData shareData)
+        //{
+        //    Dictionary<string, string> d = new Dictionary<string, string>();
+        //    d.Add("SubAccountDistributedMark", shareData.SubAccountDistributedMark);
+        //    d.Add("HouseDistributedMark", shareData.HouseDistributedMark);
+        //    string jsonString = Newtonsoft.Json.JsonConvert.SerializeObject(d);
+        //    return RequestHttps($"{severAddress}/ZigbeeDataShare/DeleteShareData", jsonString, true);
+        //}
 
         /// <summary>
         /// 缁戝畾瀛愯处鍙峰埌浣忓畢涓�
@@ -594,20 +838,17 @@
         /// <param name="subAccount"></param>
         /// <param name="nickName"></param>
         /// <returns></returns>
-        public ResponsePack BindResidenceMemberAccount(string subAccount,string nickName)
+        public ResponsePackNew BindResidenceMemberAccount(string subAccount, string nickName)
         {
-            Dictionary<string, object> d = new Dictionary<string, object>();
-            d.Add("SubAccount", subAccount);
-            d.Add("HouseDistributedMark", DB_ResidenceData.residenceData.residecenInfo.RegionID);
-            d.Add("Nickname", nickName);
-            d.Add("IsAllowRemoteCtrl", true);
+            //娣诲姞瀛愯处鍙�
+            var requestObj = new ChildAddObj() { homeId = DB_ResidenceData.residenceData.residecenInfo.RegionID, account = subAccount, nickName = nickName };
+            var requestJson = Newtonsoft.Json.JsonConvert.SerializeObject(requestObj);
+            return HttpUtil.RequestHttpsPostFroHome(NewAPI.API_POST_Child_Add, requestJson);
 
-            string jsonString = Newtonsoft.Json.JsonConvert.SerializeObject(d);
-            return RequestHttps($"{severAddress}/ZigbeeUsers/BindSubAccount", jsonString, true);
         }
 
         /// <summary>
-        /// 鑾峰彇浣忓畢涓嬬殑鎴愬憳璐﹀彿
+        /// 鑾峰彇浣忓畢涓嬬殑鎴愬憳璐﹀彿淇℃伅
         /// </summary>
         /// <returns></returns>
         public ResponsePack GetResidenceMemberAccountInfo(string account)
@@ -616,6 +857,316 @@
             d.Add("Account", account);
             string jsonString = Newtonsoft.Json.JsonConvert.SerializeObject(d);
             return RequestHttps($"{severAddress}/ZigbeeUsers/GetSubAccountInfo", jsonString, true);
+        }
+
+        /// <summary>
+        ///  涓嬭浇瀛愯处鍙风敤鎴峰ご鍍�
+        /// </summary>
+        /// <param name="subaccoun"></param>
+        /// <returns></returns>
+        public byte[] DownChildHeadImage(ResidenceMemberInfo subaccount)
+        {
+            var requestObj = new ChildBaseObj()
+            {
+                childAccountId = subaccount.childAccountId,
+                homeId = subaccount.homeId
+            };
+            var requestJson = Newtonsoft.Json.JsonConvert.SerializeObject(requestObj);
+            var replaceToken = "";
+            if (DB_ResidenceData.residenceData.residecenInfo.IsOthreShare)
+            {
+                replaceToken = DB_ResidenceData.residenceData.MasterToken;
+            }
+            return HttpUtil.RequestHttpsDownload(NewAPI.API_POST_Child_DownloadHeadImage, requestJson,null);
+        }
+        
+
+        #endregion
+        /// <summary>
+        /// 鑾峰彇MQTT杩滅▼杩炴帴淇℃伅鎺ュ彛
+        /// </summary>
+        public MqttInfo GetMqttRemoteInfo(string attachClientId)
+        {
+            try
+            {
+                var requestJson = Newtonsoft.Json.JsonConvert.SerializeObject(new GetMqttRemoteInfoObj()
+                {
+                    attachClientId = attachClientId,
+                    homeType = HomeTypeEnum.BUSPRO.ToString()
+                });
+                var revertObj = HttpUtil.RequestHttpsPost(NewAPI.API_POST_GetMqttRemoteInfo, requestJson, DB_ResidenceData.residenceData.residecenInfo.regionUrl);
+                if (revertObj.Code == StateCode.SUCCESS)
+                {
+                    return Newtonsoft.Json.JsonConvert.DeserializeObject<MqttInfo>(revertObj.Data.ToString());
+                }
+                else
+                {
+                    Utlis.WriteLine("GetMqttRemoteInfo error");
+                    return null;
+                }
+            }
+            catch
+            {
+                return null;
+            }
+        }
+
+        #region 鎺ㄩ��
+        /// <summary>
+        /// 鎻愪氦鎺ㄩ�侀渶瑕佺殑鍏抽敭鏍囪瘑淇℃伅
+        /// </summary>
+        public bool PushSerivceAddPushInfo()
+        {
+            try
+            {
+                string deviceType = PhoneDeviceType.Android.ToString();
+#if __IOS__
+                deviceType = PhoneDeviceType.IOS.ToString();
+#endif
+                //鏄惁鐢熸垚妯″紡
+                bool isProduce = true;
+#if DEBUG
+                isProduce = false;
+#endif
+
+                if (string.IsNullOrEmpty(OnAppConfig.Instance.PushDeviceToken)) return false;
+
+                var mAddpushinfoObj = new AddpushinfoObj()
+                {
+                    pushToken = OnAppConfig.Instance.PushDeviceToken,
+                    deviceName = OnAppConfig.Instance.PhoneName,
+                    deviceType = deviceType,
+                    produce = isProduce,
+
+                };
+                var mAddpushinfoJson = Newtonsoft.Json.JsonConvert.SerializeObject(mAddpushinfoObj);
+                var revertObj = HttpUtil.RequestHttpsPost(NewAPI.API_POST_PushSerivce_AddToken, mAddpushinfoJson);
+                if (revertObj.Code == StateCode.SUCCESS)
+                {
+                    if (revertObj.Data != null)
+                    {
+                        var pushId = revertObj.Data.ToString();
+                        if (!string.IsNullOrEmpty(pushId))
+                        {
+                            OnAppConfig.Instance.PushId = pushId;
+                            OnAppConfig.Instance.SaveUserConfig();
+                            return true;
+                        }
+                    }
+                    Utlis.WriteLine("AddToken 鎴愬姛");
+                }
+                else
+                {
+                    Utlis.WriteLine("AddToken 澶辫触");
+                }
+                return false;
+            }
+            catch
+            {
+                return false;
+            }
+        }
+
+        /// <summary>
+        /// 鏌ヨ鎺ㄩ�佷俊鎭垪琛�
+        /// </summary>
+        /// <returns></returns>
+        public ResponsePackNew PushSerivceGetpushmessagelist()
+        {
+            var requestJson = Newtonsoft.Json.JsonConvert.SerializeObject(new GetMessageListObj()
+            {
+                pushId = OnAppConfig.Instance.PushId
+            });
+            return HttpUtil.RequestHttpsPost(NewAPI.API_POST_PushSerivce_Getpushmessagelist, requestJson);
+        }
+
+        /// <summary>
+        /// 娓呯┖娑堟伅璁板綍
+        /// </summary>
+        /// <returns></returns>
+        public bool PushSerivceClearmessagelist()
+        {
+            if (string.IsNullOrEmpty(OnAppConfig.Instance.PushId)) return false;
+
+            var requestJson = Newtonsoft.Json.JsonConvert.SerializeObject(new PushIdObj()
+            {
+                pushId = OnAppConfig.Instance.PushId
+            });
+
+            var revertObj = HttpUtil.RequestHttpsPost(NewAPI.API_POST_PushSerivce_Clearmessagelist, requestJson);
+            if (revertObj.Code == StateCode.SUCCESS)
+            {
+                return true;
+            }
+            else
+            {
+
+            }
+            return false;
+        }
+
+        /// <summary>
+        /// 閫�鍑虹櫥褰曪紝娓呯┖鎺ㄩ�佹爣璇�
+        /// </summary>
+        /// <returns></returns>
+        public bool PushSerivceSignOut()
+        {
+            if (string.IsNullOrEmpty(OnAppConfig.Instance.PushId)) return false;
+            try
+            {
+                var requestJson = Newtonsoft.Json.JsonConvert.SerializeObject(new PushIdObj() {
+                    pushId = OnAppConfig.Instance.PushId
+                });
+               
+                var revertObj = HttpUtil.RequestHttpsPost(NewAPI.API_POST_PushSerivce_DeleteToken, requestJson);
+                if (revertObj.Code == StateCode.SUCCESS)
+                {
+                    return true;
+                }
+                else
+                {
+
+                }
+                return false;
+            }
+            catch
+            {
+                return false;
+            }
+        }
+
+        /// <summary>
+        /// 鏍囪娑堟伅鍏ㄩ儴宸茶
+        /// </summary>
+        /// <param name="msgId"></param>
+        /// <returns></returns>
+        public bool PushSerivceMarkAllMessageRead()
+        {
+            if (string.IsNullOrEmpty(OnAppConfig.Instance.PushId)) return false;
+
+            try
+            {
+                var requestJson = Newtonsoft.Json.JsonConvert.SerializeObject(new PushIdObj()
+                {
+                    pushId = OnAppConfig.Instance.PushId
+                });
+                var revertObj = HttpUtil.RequestHttpsPost(NewAPI.API_POST_PushSerivce_ALLMarkread, requestJson);
+                if (revertObj.Code == StateCode.SUCCESS)
+                {
+                    return true;
+                }
+                else
+                {
+
+                }
+                return false;
+            }
+            catch
+            {
+                return false;
+            }
+        }
+
+        /// <summary>
+        /// 鏍囪鎸囧畾娑堟伅宸茶
+        /// </summary>
+        /// <param name="msgId"></param>
+        /// <returns></returns>
+        public bool PushSerivceMarkMessageRead(string msgId)
+        {
+            if (string.IsNullOrEmpty(OnAppConfig.Instance.PushId)) return false;
+
+            try
+            {
+                var requestJson = Newtonsoft.Json.JsonConvert.SerializeObject(new PushMsgIdObj()
+                {
+                    msgId = msgId
+                });
+
+                var revertObj = HttpUtil.RequestHttpsPost(NewAPI.API_POST_PushSerivce_Markread, requestJson);
+                if (revertObj.Code == StateCode.SUCCESS)
+                {
+                    return true;
+                }
+                else
+                {
+
+                }
+                return false;
+            }
+            catch
+            {
+                return false;
+            }
+        }
+
+        /// <summary>
+        /// 閫氳繃涓婚敭id鍒犻櫎涓�鏉℃帹閫佽褰�
+        /// </summary>
+        /// <param name="msgId"></param>
+        /// <returns></returns>
+        public bool PushSerivceDeleteMessage(string msgId)
+        {
+            if (string.IsNullOrEmpty(OnAppConfig.Instance.PushId)) return false;
+
+            try
+            {
+                var requestJson = Newtonsoft.Json.JsonConvert.SerializeObject(new PushMsgIdObj()
+                {
+                    msgId = msgId
+                });
+
+                var revertObj = HttpUtil.RequestHttpsPost(NewAPI.API_POST_PushSerivce_Deletepushinfo, requestJson);
+                if (revertObj.Code == StateCode.SUCCESS)
+                {
+                    return true;
+                }
+                else
+                {
+
+                }
+                return false;
+            }
+            catch
+            {
+                return false;
+            }
+        }
+        #endregion
+
+        #region 妫�娴嬫洿鏂�
+        /// <summary>
+        /// 
+        /// </summary>
+        /// <returns></returns>
+        public ResponsePackNew CheckAppVersion()
+        {
+            var requestObj = new ForceUpdateObj()
+            {
+                LanguageType = Utlis.GetPostLanguageType()
+            };
+#if __IOS__
+            requestObj.DeviceType = PhoneDeviceType.IOS.ToString();
+#endif
+            var requestJson = Newtonsoft.Json.JsonConvert.SerializeObject(requestObj);
+            return HttpUtil.RequestHttpsPost(NewAPI.API_POST_CheckAppVersion, requestJson);
+        }
+
+        /// <summary>
+        /// 
+        /// </summary>
+        /// <returns></returns>
+        public ResponsePackNew GetAppVersion()
+        {
+            var requestObj = new ForceUpdateObj()
+            {
+
+            };
+#if __IOS__
+            requestObj.DeviceType = PhoneDeviceType.IOS.ToString();
+#endif
+            var requestJson = Newtonsoft.Json.JsonConvert.SerializeObject(requestObj);
+            return HttpUtil.RequestHttpsPost(NewAPI.API_POST_GetAppVersion, requestJson);
         }
 
         #endregion
@@ -674,7 +1225,8 @@
                     }
                     System.Threading.Thread.Sleep(1000);
                 }
-                Shared.Application.RunOnMainThread(() => {
+                Shared.Application.RunOnMainThread(() =>
+                {
                     try
                     {
                         HDL_ON.UI.HomePage.LoadEvent_RefreshAir();
@@ -691,7 +1243,7 @@
         /// 璇锋眰Mqtt鏁版嵁
         /// </summary>
         /// <param name="dataStringJson">璇锋眰鐨勫弬鏁�.</param>
-        public ResponsePack RequestMqttInfo( string dataStringJson)
+        public ResponsePack RequestMqttInfo(string dataStringJson)
         {
             ResponsePack revertObj = null;
 
@@ -734,32 +1286,33 @@
         #endregion
 
         #region 澶囦唤閮ㄥ垎
-        /// <summary>
-        /// 鑾峰彇浣忓畢澶囦唤鍒楄〃
-        /// </summary>
-        public Dictionary<int,string> GetRegionLastBackupId()
-        {
-            //Dialog dialog = new Dialog();
-            //dialog.Show();
+        ///// <summary>
+        ///// 鑾峰彇浣忓畢澶囦唤鍒楄〃
+        ///// </summary>
+        //public Dictionary<int, string> GetRegionLastBackupId()
+        //{
+        //    //Dialog dialog = new Dialog();
+        //    //dialog.Show();
 
-            Dictionary<int, string> backupList = new Dictionary<int, string>();
-            Dictionary<string, object> d = new Dictionary<string, object>();
-            d.Add("LevelID", DB_ResidenceData.residenceData.residecenInfo.RegionID);// 199200);
-            var requestJson = Newtonsoft.Json.JsonConvert.SerializeObject(d);
-            var revertObj = RequestHttps("https://developer.hdlcontrol.com/api/GetUserFolder", requestJson, true);
-            if(revertObj == null || revertObj.ResponseData == null)
-            {
-                return new Dictionary<int, string>();
-            }
-            var jt = Newtonsoft.Json.JsonConvert.DeserializeObject<List<JObject>>(revertObj.ResponseData.ToString());
-            foreach (var j in jt)
-            {
-                var folderId = (int)j.GetValue("FolderID");
-                var folderName = j.GetValue("FolderName").ToString();
-                backupList.Add(folderId, folderName);
-            }
-            return backupList;
-        }
+        //    Dictionary<int, string> backupList = new Dictionary<int, string>();
+        //    Dictionary<string, object> d = new Dictionary<string, object>();
+        //    d.Add("LevelID", DB_ResidenceData.residenceData.residecenInfo.RegionID);// 199200);
+        //    var requestJson = Newtonsoft.Json.JsonConvert.SerializeObject(d);
+        //    var revertObj = RequestHttps("https://developer.hdlcontrol.com/api/GetUserFolder", requestJson, true);
+        //    if (revertObj == null || revertObj.ResponseData == null)
+        //    {
+        //        return new Dictionary<int, string>();
+        //    }
+        //    var jt = Newtonsoft.Json.JsonConvert.DeserializeObject<List<JObject>>(revertObj.ResponseData.ToString());
+        //    foreach (var j in jt)
+        //    {
+        //        var folderId = (int)j.GetValue("FolderID");
+        //        var folderName = j.GetValue("FolderName").ToString();
+        //        backupList.Add(folderId, folderName);
+        //    }
+        //    return backupList;
+        //}
+
         /* 2020-09-01 寮冪敤 鎭㈠鏃ф暟鎹姛鑳藉湪bus杞欢涓婂疄鐜�
         /// <summary>
         /// 鑾峰彇澶囦唤鏂囦欢鍒楄〃
@@ -1204,5 +1757,7 @@
         */
 
         #endregion
+
+
     }
 }
\ No newline at end of file
diff --git a/HDL_ON/DAL/Server/HttpServerRequestBase.cs b/HDL_ON/DAL/Server/HttpServerRequestBase.cs
index b1956ba..e53370e 100644
--- a/HDL_ON/DAL/Server/HttpServerRequestBase.cs
+++ b/HDL_ON/DAL/Server/HttpServerRequestBase.cs
@@ -20,7 +20,7 @@
             webClient.Headers.Add("CONTENT-TYPE", "application/json");
             if (needAuthorization)
             {
-                webClient.Headers.Add("Authorization", MainPage.LoginUser.loginTokenString);
+                webClient.Headers.Add("Authorization",  UserInfo.Current.LoginTokenString);
             }
             byte[] bytes = null;
             try
diff --git "a/HDL_ON/DAL/Server/HttpServerRequest\347\232\204\345\211\257\346\234\254.cs" "b/HDL_ON/DAL/Server/HttpServerRequest\347\232\204\345\211\257\346\234\254.cs"
deleted file mode 100644
index 894adaa..0000000
--- "a/HDL_ON/DAL/Server/HttpServerRequest\347\232\204\345\211\257\346\234\254.cs"
+++ /dev/null
@@ -1,168 +0,0 @@
-锘�
-        #region 娉ㄥ唽銆佺櫥褰曢儴鍒�
-        /// <summary>
-        /// 璐﹀彿鐧诲綍-浣跨敤瀵嗙爜
-        /// </summary>
-            //https://global.hdlcontrol.com/HangZhouHdlCloudApi/ZigbeeUsers/Login";
-
-        /// <summary>
-        /// 楠岃瘉鐮佺櫥褰�
-        /// </summary>
-         //https://global.hdlcontrol.com/HangZhouHdlCloudApi/ZigbeeUsers/LoginValidCode
-
-        /// <summary>
-        /// 鎵嬫満鍙风爜娉ㄥ唽
-        /// </summary>
-         //https://global.hdlcontrol.com/HangZhouHdlCloudApi/SignIn
-
-        ///鑾峰彇鍖哄煙浠g爜
-         //https://global.hdlcontrol.com/HangZhouHdlCloudApi/ZigbeeUsers/GetAreaCode
-
-        /// <summary>
-        /// 楠岃瘉鐭俊鎴栬�呴偖绠遍獙璇佺爜锛屼箣鍚庢敞鍐�
-        /// </summary>
-         //https://global.hdlcontrol.com/HangZhouHdlCloudApi/ZigbeeUsers/ValidataCodeAndRegisterAccount
-
-
-        /// <summary>
-        /// 鑾峰彇娉ㄥ唽楠岃瘉鐮�
-        /// </summary>
-         //https://global.hdlcontrol.com/HangZhouHdlCloudApi/ZigbeeUsers/RegisterSendVerCode
-
-        /// <summary>
-        /// 鑾峰彇鐧诲綍楠岃瘉鐮�
-        /// </summary>
-         //https://global.hdlcontrol.com/HangZhouHdlCloudApi/ZigbeeUsers/LoginSendVerCode
-
-        /// <summary>
-        /// 鍙戦�侀獙璇佺爜
-        /// </summary>
-         //https://global.hdlcontrol.com/HangZhouHdlCloudApi/ZigbeeUsers/LoginSendVerCode
-
-        /// <summary>
-        /// 楠岃瘉楠岃瘉鐮�
-        /// </summary>
-         //https://global.hdlcontrol.com/HangZhouHdlCloudApi/ZigbeeUsers/ValidatorCode
-
-        /// <summary>
-        /// 閲嶈瀵嗙爜
-        /// </summary>
-         //https://global.hdlcontrol.com/HangZhouHdlCloudApi/ZigbeeUsers/ResetPassword
-        #endregion
-
-        #region 涓汉淇℃伅閮ㄥ垎
-        /// <summary>
-        /// 鑾峰彇鐢ㄦ埛淇℃伅
-        /// </summary>
-            //https://global.hdlcontrol.com/HangZhouHdlCloudApi/ZigbeeUsers/GetAccountInfo
-
-        /// <summary>
-        /// 鏇存柊鐢ㄦ埛鏄电О
-        /// </summary>
-            //https://global.hdlcontrol.com/HangZhouHdlCloudApi/ZigbeeUsers/UpdateUserName
-
-        /// <summary>
-        /// 鏇存柊鐢ㄦ埛澶村儚
-        /// </summary>
-            //https://global.hdlcontrol.com/HangZhouHdlCloudApi/ZigbeeUsers/UpdateHeadImage
-
-        /// <summary>
-        /// 鏇存敼缁戝畾璐︽埛鐨勯偖绠辨垨鑰呮墜鏈哄彿
-        /// </summary>
-            //https://global.hdlcontrol.com/HangZhouHdlCloudApi/ZigbeeUsers/BindAccount
-        #endregion
-
-        #region 浣忓畢閮ㄥ垎
-        /// <summary>
-        /// 鑾峰彇浣忓畢鍒楄〃
-        /// </summary>
-            //https://global.hdlcontrol.com/HangZhouHdlCloudApi/App/GetHomePager
-        /// <summary>
-        /// 缂栬緫浣忓畢淇℃伅
-        /// </summary>
-         //https://global.hdlcontrol.com/HangZhouHdlCloudApi/App/EditHome
-
-        /// <summary>
-        /// 鑾峰彇浣忓畢涓嬬殑鎴愬憳璐﹀彿
-        /// </summary>
-         //https://global.hdlcontrol.com/HangZhouHdlCloudApi/ZigbeeUsers/GetSubAccountByDistributedMark
-
-        /// <summary>
-        /// 鍒犻櫎浣忓畢涓嬬殑鎴愬憳璐﹀彿
-        /// </summary>
-         //https://global.hdlcontrol.com/HangZhouHdlCloudApi/ZigbeeUsers/DeletedSubAccount
-
-        /// <summary>
-        /// 淇敼瀛愯处鍙锋樀绉�
-        /// </summary>
-         //https://global.hdlcontrol.com/HangZhouHdlCloudApi/ZigbeeUsers/EditSubAccountNickName
-        /// <summary>
-        /// 淇敼瀛愯处鍙峰垱寤哄満鏅潈闄�
-        /// </summary>
-         //https://global.hdlcontrol.com/HangZhouHdlCloudApi/ZigbeeUsers/ChangeCreateSceneState
-
-        /// <summary>
-        /// 鑾峰彇浣忓畢涓嬪瓙璐﹀彿鐨勫叡浜暟鎹垪琛�
-        /// </summary>
-         //https://global.hdlcontrol.com/HangZhouHdlCloudApi/ZigbeeDataShare/GetShareDataBySubAccount
-
-        /// <summary>
-        /// 鑾峰彇浣忓畢涓嬪瓙璐﹀彿鐨勫叡浜暟鎹�
-        /// </summary>
-         //https://global.hdlcontrol.com/HangZhouHdlCloudApi/ZigbeeDataShare/GetOneShareData
-
-        /// <summary>
-        /// 澧炲姞鍏变韩鏁版嵁鍒楄〃
-        /// </summary>
-         //https://global.hdlcontrol.com/HangZhouHdlCloudApi/ZigbeeDataShare/AddShareData
-
-        /// <summary>
-        /// 澧炲姞鍏变韩鏁版嵁
-        /// </summary>
-         //https://global.hdlcontrol.com/HangZhouHdlCloudApi/ZigbeeDataShare/EditShareData
-
-        /// <summary>
-        /// 鍒犻櫎鍏变韩鏁版嵁
-        /// </summary>
-         //https://global.hdlcontrol.com/HangZhouHdlCloudApi/ZigbeeDataShare/DeleteShareData
-        /// <summary>
-        /// 鍒犻櫎瀛愯处鍙峰綋鍓嶄綇瀹呯殑鎵�鏈夊叡浜暟鎹�
-        /// </summary>
-         //https://global.hdlcontrol.com/HangZhouHdlCloudApi/ZigbeeDataShare/DeleteShareData
-
-        /// <summary>
-        /// 缁戝畾瀛愯处鍙峰埌浣忓畢涓�
-        /// </summary>
-         //https://global.hdlcontrol.com/HangZhouHdlCloudApi/ZigbeeUsers/BindSubAccount
-
-        /// <summary>
-        /// 鑾峰彇浣忓畢涓嬬殑鎴愬憳璐﹀彿
-        /// </summary>
-         //https://global.hdlcontrol.com/HangZhouHdlCloudApi/ZigbeeUsers/GetSubAccountInfo
-        #endregion
-
-        #region 鑾峰彇澶╂皵閮ㄥ垎
-        /// <summary>
-        /// 鑾峰彇鎸囧畾缁忕含搴︾殑鍩庡競淇℃伅
-        /// </summary>
-                    //string url = $"https://developer.hdlcontrol.com/Weather/Weather/FindCity/?lon={lon}&lat={lat}";
-                            //url = $"https://developer.hdlcontrol.com/Weather/Weather/GetAirQualityAndWeather/?cid={MainPage.cityInfo.cid}";
-
-        #endregion
-
-        #region 澶囦唤閮ㄥ垎
-        /// <summary>
-        /// 鑾峰彇浣忓畢澶囦唤鍒楄〃
-        /// </summary>
-        //var revertObj = RequestHttps("https://developer.hdlcontrol.com/api/GetUserFolder
-
-        /// <summary>
-        /// 鑾峰彇澶囦唤鏂囦欢鍒楄〃
-        /// </summary>
-        //var revertObj = RequestHttps("https://developer.hdlcontrol.com/api/UserBackupList
-
-        /// <summary>
-        /// 鑾峰彇澶囦唤鎴块棿鏁版嵁
-        /// </summary>
-        //var revertObj = RequestHttps("https://developer.hdlcontrol.com/api/BackupDetail
-        #endregion
diff --git a/HDL_ON/DAL/Server/HttpUtil.cs b/HDL_ON/DAL/Server/HttpUtil.cs
new file mode 100644
index 0000000..6784b4c
--- /dev/null
+++ b/HDL_ON/DAL/Server/HttpUtil.cs
@@ -0,0 +1,557 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Net;
+using System.Security.Cryptography;
+using System.Text;
+using HDL_ON.Entity;
+using RestSharp;
+using Shared;
+
+namespace HDL_ON.DAL.Server
+{
+    public class HttpUtil
+    {
+
+        #region HttpUtil 鍏ㄥ眬甯搁噺
+        ///// <summary>
+        ///// API_HTTPS
+        ///// </summary>
+        //public const string API_HTTPS = "https://";
+        /// <summary>
+        /// RegionMark
+        /// </summary>
+        public const string RegionMark = "HDL";
+        /// <summary>
+        /// 璇锋眰瓒呮椂鏃堕棿
+        /// </summary>
+        public const int TIME_OUT = 10;
+        /// <summary>
+        /// 鐗规畩鎺ュ彛璇锋眰瓒呮椂鏃堕棿
+        /// </summary>
+        public const int TIME_OUT_LONG = 20;
+        /////// <summary>
+        /////// Bearer 鏆傛椂璁句负绌猴紝浠庣櫥闄嗘垚鍔熺殑杩斿洖鐨刪eaderPrefix鍙傛暟鍔ㄦ�佽幏鍙�
+        /////// </summary>
+        //public const string TOKEN_BEARER = "Bearer ";
+
+        #endregion
+
+        /// <summary>
+        /// 鍥哄畾鍩熷悕
+        /// </summary>
+        //public const string GlobalRequestHttpsHost = "https://center.hdlcontrol.com";
+        public const string GlobalRequestHttpsHost = "https://test-gz.hdlcontrol.com";
+
+        /// <summary>
+        ///  Get  璇锋眰鏈嶅姟鍣ㄦ柟娉�
+        /// </summary>
+        /// <param name="apiPath"></param>
+        /// <param name="queryDictionary"></param>
+        /// <param name="urlSegmentDictionary"></param>
+        /// <param name="urlHead"></param>
+        /// <param name="replaceToken"></param>
+        /// <param name="mTimeout"></param>
+        /// <returns></returns>
+        public static ResponsePackNew RequestHttpsGet(string apiPath, Dictionary<string, object> queryDictionary = null, Dictionary<string, object> urlSegmentDictionary = null, string urlHead = "", string replaceToken = "", int mTimeout = 10)
+        {
+            return RequestHttps(Method.GET, apiPath, null, queryDictionary, urlSegmentDictionary, urlHead, replaceToken, mTimeout);
+        }
+
+        ///// <summary>
+        ///// 閫氱敤  璇锋眰鏈嶅姟鍣ㄦ柟娉�
+        ///// </summary>
+        ///// <param name="method">璇锋眰绫诲瀷</param>
+        ///// <param name="apiPath"></param>
+        ///// <param name="bodyParameterJson"></param>
+        ///// <param name="queryDictionary"></param>
+        ///// <param name="urlSegmentDictionary"></param>
+        ///// <param name="urlHead"></param>
+        ///// <param name="mTimeout">璇锋眰瓒呮椂鏃堕棿锛岄粯璁�10</param>
+        ///// <param name="urlHead"></param>
+        ///// <returns></returns>
+        //public static ResponsePackNew RequestHttpsBase(Method method, string apiPath, string bodyParameterJson = null, Dictionary<string, object> queryDictionary = null, Dictionary<string, object> urlSegmentDictionary = null, string urlHead = "", string replaceToken = "", int mTimeout = 10, bool needErrorTip = true)
+        //{
+        //    var mResponsePackNew = RequestHttps(method, apiPath, bodyParameterJson, queryDictionary, urlSegmentDictionary, urlHead, replaceToken, mTimeout);
+        //    if (needErrorTip)
+        //    {
+        //        if (mResponsePackNew.Code.ToUpper() != SUCCESS_CODE)
+        //        {
+        //            IMessageCommon.Current.ShowErrorInfoAlter(apiPath, mResponsePackNew.Code);
+        //        }
+        //    }
+        //    return mResponsePackNew;
+        //}
+
+        /// <summary>
+        /// POST璇锋眰鏂规硶 body鍙傛暟
+        /// 閽堝浣忓畢鐩稿叧鎺ュ彛灏佽
+        /// 璋冪敤浣忓畢褰撳墠鎵�鍦ㄥ尯鍩熷煙鍚�
+        /// 濡傛灉鏄垎浜綇瀹咃紝浣跨敤涓讳汉鐨則oken杩涜鐩稿叧鎿嶄綔
+        /// </summary>
+        /// <param name="apiPath"></param>
+        /// <param name="bodyParameterJson"></param>
+        /// <param name="mTimeout"></param>
+        /// <returns></returns>
+        public static ResponsePackNew RequestHttpsPostFroHome(string apiPath, string bodyParameterJson, int mTimeout = 10)
+        {
+            string urlHead = DB_ResidenceData.residenceData.residecenInfo.regionUrl;
+            var replaceToken = "";
+            if (DB_ResidenceData.residenceData.residecenInfo.IsOthreShare)
+            {
+                replaceToken = DB_ResidenceData.residenceData.MasterToken;
+            }
+            return RequestHttps(Method.POST, apiPath, bodyParameterJson, null, null, urlHead, replaceToken, mTimeout);
+        }
+
+        /// <summary>
+        /// POST璇锋眰鏂规硶 body鍙傛暟
+        /// </summary>
+        /// <param name="apiPath"></param>
+        /// <param name="bodyParameterJson"></param>
+        /// <param name="urlHead"></param>
+        /// <param name="needErrorTip"></param>
+        /// <param name="replaceToken"></param>
+        /// <param name="mTimeout"></param>
+        /// <returns></returns>
+        public static ResponsePackNew RequestHttpsPost(string apiPath, string bodyParameterJson, string urlHead = "", string replaceToken = "", int mTimeout = 10)
+        {
+            return RequestHttps(Method.POST, apiPath, bodyParameterJson, null, null, urlHead, replaceToken, mTimeout);
+        }
+
+        /// <summary>
+        /// POST璇锋眰鏂规硶 queryDictionary
+        /// </summary>
+        /// <param name="apiPath"></param>
+        /// <param name="queryDictionary"></param>
+        /// <param name="urlHead"></param>
+        /// <param name="needErrorTip"></param>
+        /// <param name="replaceToken"></param>
+        /// <param name="mTimeout"></param>
+        /// <returns></returns>
+        public static ResponsePackNew RequestHttpsPost(string apiPath, Dictionary<string, object> queryDictionary, string urlHead = "", string replaceToken = "", int mTimeout = 10)
+        {
+            return RequestHttps(Method.POST, apiPath, null, queryDictionary, null, urlHead, replaceToken, mTimeout);
+        }
+
+        /// <summary>
+        /// 閫氱敤  璇锋眰鏈嶅姟鍣ㄦ柟娉�
+        /// </summary>
+        /// <param name="method"></param>
+        /// <param name="apiPath"></param>
+        /// <param name="bodyParameterJson"></param>
+        /// <param name="queryDictionary"></param>
+        /// <param name="urlSegmentDictionary"></param>
+        /// <param name="urlHead"></param>
+        /// <param name="replaceToken"></param>
+        /// <param name="mTimeout"></param>
+        /// <returns></returns>
+        public static ResponsePackNew RequestHttps(Method method, string apiPath, string bodyParameterJson = null, Dictionary<string, object> queryDictionary = null, Dictionary<string, object> urlSegmentDictionary = null, string urlHead = "", string replaceToken = "", int mTimeout = 10)
+        {
+            #region HttpWebRequest
+            try
+            {
+
+                //if (string.IsNullOrEmpty(urlHead))
+                //{
+                //    urlHead = UserInfo.Current.RequestHttpsHost;
+                //}
+                //string requestFullUrl = urlHead + apiPath;
+
+
+                //**************娴嬭瘯**************
+                string requestFullUrl = GlobalRequestHttpsHost + apiPath;
+                //**************娴嬭瘯**************
+
+                RestClient client = new RestClient(requestFullUrl);
+
+                RestRequest request = new RestRequest(method);
+                request.Timeout = mTimeout * 1000;
+                request.AddHeader("content-type", "application/json");
+                //request.AddHeader ("cache-control", "no-cache");
+
+                if (string.IsNullOrEmpty(replaceToken))
+                {
+                    if(UserInfo.Current != null)
+                    {/* 濡傛灉涓嶉渶瑕侀獙璇乀oken鍙互涓嶇敤浼犲叆 */
+                        request.AddHeader("Authorization",  UserInfo.Current.LoginTokenString);
+                    }
+                }
+                else
+                {
+                    request.AddHeader("Authorization", replaceToken); 
+                }
+           
+                if (bodyParameterJson != null)
+                {
+                    request.AddParameter("application/json", bodyParameterJson, ParameterType.RequestBody);
+                }
+
+                if (queryDictionary != null)
+                {
+                    foreach (var data in queryDictionary)
+                    {
+                        request.AddQueryParameter(data.Key, data.Value.ToString());
+                    }
+                }
+
+                if (urlSegmentDictionary != null)
+                {
+                    foreach (var data in urlSegmentDictionary)
+                    {
+                        request.AddUrlSegment(data.Key, data.Value.ToString());
+                    }
+                }
+
+                IRestResponse response = client.Execute(request);
+                if (response.StatusCode == HttpStatusCode.OK)
+                {
+                    try
+                    {
+                        ResponsePackNew revertObj = new ResponsePackNew() { };
+                        revertObj = Newtonsoft.Json.JsonConvert.DeserializeObject<ResponsePackNew>(response.Content);
+                        //*****涓�浜涘垽绌哄鐞�*****************
+                        if (revertObj.Code == null)
+                        {
+                            revertObj.Code = "DATA_EXCEPTION";
+                        }
+
+                        if (revertObj.Data == null)
+                        {
+                            revertObj.Data = "";
+                        }
+                        //*****涓�浜涘垽绌哄鐞�*****************
+
+                        ////缁熶竴杞垚澶у啓
+                        //revertObj.StateCode = revertObj.StateCode.ToUpper ();
+                        return revertObj;
+                    }
+                    catch (Exception ex)
+                    {
+                        HDL_ON.Utlis.WriteLine(ex.Message);
+                        return new ResponsePackNew() { Code = "DATA_EXCEPTION" };
+                    }
+                }
+                else
+                {
+                    HDL_ON.Utlis.WriteLine(response.Content);
+                    return new ResponsePackNew() { Code = "NETWORK_ERROR" };
+                }
+
+            }
+            catch (Exception ex)
+            {
+                HDL_ON.Utlis.WriteLine(ex.Message);
+                return new ResponsePackNew() { Code = "NETWORK_ERROR" };
+            }
+
+            #endregion
+
+        }
+
+        /// <summary>
+        /// 涓嬭浇鏂囦欢  璇锋眰鏈嶅姟鍣ㄦ柟娉�
+        /// </summary>
+        /// <param name="apiPath"></param>
+        /// <param name="bodyParameterJson"></param>
+        /// <param name="queryDictionary"></param>
+        /// <param name="urlHead"></param>
+        /// <param name="replaceToken"></param>
+        /// <param name="mTimeout"></param>
+        /// <returns></returns>
+        public static byte[] RequestHttpsDownload(string apiPath, string bodyParameterJson = null, Dictionary<string, object> queryDictionary = null, string urlHead = "", string replaceToken = "", int mTimeout = 20)
+        {
+            #region RestRequest
+            try
+            {
+                //if (string.IsNullOrEmpty (urlHead)) {
+                //    urlHead = UserInfo.Current.RequestHttpsHost;
+                //}
+                //string requestFullUrl = urlHead + apiPath;
+
+                //**************娴嬭瘯**************
+                string requestFullUrl = GlobalRequestHttpsHost + apiPath;
+                //**************娴嬭瘯**************
+
+                RestClient client = new RestClient(requestFullUrl);
+                //client.Timeout = mTimeout * 1000;
+                RestRequest request = new RestRequest(Method.POST);
+                request.Timeout = mTimeout * 1000;
+                request.AddHeader("content-type", "application/json");
+
+                if (string.IsNullOrEmpty(replaceToken))
+                {
+                    if ( UserInfo.Current != null)
+                    {/* 濡傛灉涓嶉渶瑕侀獙璇乀oken鍙互涓嶇敤浼犲叆 */
+                        request.AddHeader("Authorization",  UserInfo.Current.LoginTokenString);
+                    }
+                }
+                else
+                {
+                    request.AddHeader("Authorization", replaceToken);
+                }
+
+                if (bodyParameterJson != null)
+                {
+                    request.AddParameter("application/json", bodyParameterJson, ParameterType.RequestBody);
+                }
+
+                if (queryDictionary != null)
+                {
+                    foreach (var data in queryDictionary)
+                    {
+                        request.AddQueryParameter(data.Key, data.Value.ToString());
+                    }
+                }
+
+                IRestResponse response = client.Execute(request);
+                return response.RawBytes;
+            }
+            catch (Exception ex)
+            {
+                HDL_ON.Utlis.WriteLine(ex.Message);
+                return null;
+            }
+            #endregion
+
+        }
+
+        /// <summary>
+        /// 涓婁紶  璇锋眰鏈嶅姟鍣ㄦ柟娉�
+        /// </summary>
+        /// <param name="method"></param>
+        /// <param name="apiPath"></param>
+        /// <param name="bodyParameterObject"></param>
+        /// <param name="queryDictionary"></param>
+        /// <param name="urlSegmentDictionary"></param>
+        /// <param name="urlHead"></param>
+        /// <param name="replaceToken"></param>
+        /// <param name="mTimeout"></param>
+        /// <returns></returns>
+        public static ResponsePackNew RequestHttpsUpload(Method method, string apiPath, object bodyParameterObject = null, Dictionary<string, object> queryDictionary = null, Dictionary<string, object> urlSegmentDictionary = null, string urlHead = "", string replaceToken = "", int mTimeout = 10)
+        {
+            #region HttpWebRequest
+            try
+            {
+
+                //if (string.IsNullOrEmpty (urlHead)) {
+                //    urlHead = UserInfo.Current.RequestHttpsHost;
+                //}
+                //string requestFullUrl = urlHead + apiPath;
+
+                //**************娴嬭瘯**************
+                string requestFullUrl = GlobalRequestHttpsHost + apiPath;
+                //**************娴嬭瘯**************
+
+                RestClient client = new RestClient(requestFullUrl);
+                //client.Timeout = mTimeout * 1000;
+                RestRequest request = new RestRequest(method);
+                request.Timeout = mTimeout * 1000;
+                //request.AddHeader ("content-type", "application/json");
+                request.AddHeader("content-type", "application/octet-stream");
+
+                if (string.IsNullOrEmpty(replaceToken))
+                {
+                    if ( UserInfo.Current != null)
+                    {/* 濡傛灉涓嶉渶瑕侀獙璇乀oken鍙互涓嶇敤浼犲叆 */
+                        request.AddHeader("Authorization",  UserInfo.Current.LoginTokenString);
+                    }
+                }
+                else
+                {
+                    request.AddHeader("Authorization", replaceToken);
+                }
+
+                if (bodyParameterObject != null)
+                {
+                    request.AddParameter("application/octet-stream", bodyParameterObject, ParameterType.RequestBody);
+                }
+
+                if (queryDictionary != null)
+                {
+                    foreach (var data in queryDictionary)
+                    {
+                        request.AddQueryParameter(data.Key, data.Value.ToString());
+                    }
+                }
+
+                if (urlSegmentDictionary != null)
+                {
+                    foreach (var data in urlSegmentDictionary)
+                    {
+                        request.AddUrlSegment(data.Key, data.Value.ToString());
+                    }
+                }
+
+                IRestResponse response = client.Execute(request);
+                if (response.StatusCode == HttpStatusCode.OK)
+                {
+                    try
+                    {
+                        ResponsePackNew revertObj = new ResponsePackNew() { };
+                        revertObj = Newtonsoft.Json.JsonConvert.DeserializeObject<ResponsePackNew>(response.Content);
+                        if (revertObj.Code == null)
+                        {
+                            revertObj.Code = "DATA_EXCEPTION";
+                        }
+                        ////缁熶竴杞垚澶у啓
+                        //revertObj.StateCode = revertObj.StateCode.ToUpper ();
+                        return revertObj;
+                    }
+                    catch (Exception ex)
+                    {
+                        HDL_ON.Utlis.WriteLine(ex.Message);
+                        return new ResponsePackNew() { Code = "DATA_EXCEPTION" };
+                    }
+                }
+                else
+                {
+                    HDL_ON.Utlis.WriteLine(response.Content);
+                    return new ResponsePackNew() { Code = "NETWORK_ERROR" };
+                }
+
+            }
+            catch (Exception ex)
+            {
+                HDL_ON.Utlis.WriteLine(ex.Message);
+                return new ResponsePackNew() { Code = "NETWORK_ERROR" };
+            }
+
+            #endregion
+
+        }
+
+        /// <summary>
+        /// 
+        /// </summary>
+        const string APP_KEY = "HDL-HOME-APP-TEST";
+        /// <summary>
+        /// 
+        /// </summary>
+        const string SECRET_KEY = "WeJ8TY88vbakCcnvH8G1tDUqzLWY8yss";
+
+        /// <summary>
+        /// 鑾峰彇褰撳墠鏃堕棿鎴冲��
+        /// </summary>
+        /// <returns></returns>
+        static string GetTimestamp()
+        {
+            System.DateTime startTime = TimeZone.CurrentTimeZone.ToLocalTime(new System.DateTime(1970, 1, 1)); // 褰撳湴鏃跺尯
+            return ((long)(DateTime.Now - startTime).TotalSeconds).ToString(); // 鐩稿樊绉掓暟
+        }
+
+        /// <summary>
+        /// 
+        /// </summary>
+        /// <param name="signstr"></param>
+        /// <returns></returns>
+        static string SignMD5Encrypt(string s)
+        {
+            byte[] sign = MD5.Create().ComputeHash(UTF8Encoding.UTF8.GetBytes(s));
+            string signstr = string.Empty;
+            foreach (byte item in sign)
+            {
+                signstr += item.ToString("X2");
+            }
+            return signstr.ToLower();
+        }
+
+        /// <summary>
+        /// 2020-11-02
+        /// 鍩虹鏈嶅姟鐨勬帴鍙i兘瑕佹牎楠宻ign
+        /// 璁$畻sign绛惧悕
+        /// </summary>
+        /// <returns></returns>
+        public static string GetSignRequestJson(object requestObj)
+        {
+            try
+            {
+                //1. 灏唌odel瀹炰綋杞负Dictionary<string, object>
+                var paramDictionary = Newtonsoft.Json.JsonConvert.DeserializeObject<Dictionary<string, object>>(Newtonsoft.Json.JsonConvert.SerializeObject(requestObj));
+                //2. 璁$畻sign
+                if (paramDictionary != null)
+                {
+                    paramDictionary.Add("appKey", APP_KEY);
+                    paramDictionary.Add("timestamp", GetTimestamp());
+                    //2.1 瀛楀吀鍗囧簭
+                    paramDictionary = paramDictionary.OrderBy(o => o.Key).ToDictionary(o => o.Key, p => p.Value);
+                    //2.2 鎷兼帴鎸塙RL閿�煎
+                    string str = string.Empty;
+                    foreach (KeyValuePair<string, object> item in paramDictionary)
+                    {
+                        //Value涓簄ull涓嶅弬鍔犳牎楠�
+                        if (item.Value != null)
+                        {
+                            //Value.ToString()涓簄ull鎴栬��""涔熶笉鍙傚姞鏍¢獙
+                            if (!string.IsNullOrEmpty(item.Value.ToString()))
+                            {
+                                //濡傛灉鏄痓ool绫诲瀷锛岃杞皬鍐�
+                                if (item.Value is bool)
+                                {
+                                    str += item.Key + "=" + item.Value.ToString().ToLower() + "&";
+                                }
+                                else
+                                {
+                                    str += item.Key + "=" + item.Value.ToString() + "&";
+                                }
+                            }
+                        }
+                    }
+
+                    //2.3 鎷兼帴SECRET_KEY
+                    str = str.Substring(0, str.Length - 1) + SECRET_KEY;
+                    //2.4 MD5杞崲+杞皬鍐�
+                    var signstr = SignMD5Encrypt(str);
+                    paramDictionary.Add("sign", signstr);
+                    return Newtonsoft.Json.JsonConvert.SerializeObject(paramDictionary);
+                }
+                else
+                {
+                    return "";
+                }
+            }
+            catch
+            {
+                return "";
+            }
+        }
+
+    }
+
+    /// <summary>
+    /// 鍝嶅簲鍙傛暟
+    /// </summary>
+    [Serializable]
+    public class ResponsePackNew
+    {
+        /// <summary>
+        /// 鍝嶅簲鐘舵�佺爜
+        /// </summary>
+        public string Code;
+
+        /// <summary>
+        /// 鍝嶅簲鍐呭
+        /// </summary>
+        public object Data;
+
+        /// <summary>
+        /// 鍝嶅簲閿欒淇℃伅
+        /// </summary>
+        public string message;
+
+        ///// <summary>
+        ///// isSuccess
+        ///// </summary>
+        //public bool isSuccess;
+
+        ///// <summary>
+        ///// timestamp
+        ///// </summary>
+        //public string timestamp;
+
+
+    }
+
+
+
+}
diff --git a/HDL_ON/DAL/Server/IMessageCommon.cs b/HDL_ON/DAL/Server/IMessageCommon.cs
new file mode 100644
index 0000000..5b9e64d
--- /dev/null
+++ b/HDL_ON/DAL/Server/IMessageCommon.cs
@@ -0,0 +1,329 @@
+锘縰sing System;
+using System.Collections.Generic;
+using Shared;
+
+namespace HDL_ON.DAL.Server
+{
+    /// <summary>
+    /// 鎺ュ彛绫荤殑杩斿洖淇℃伅
+    /// </summary>
+    public class IMessageCommon
+    {
+
+        /// <summary>
+        /// 鎺ュ彛绫荤殑杩斿洖淇℃伅
+        /// </summary>
+        private static IMessageCommon m_Current = null;
+        /// <summary>
+        /// 鎺ュ彛绫荤殑杩斿洖淇℃伅
+        /// </summary>
+        public static IMessageCommon Current
+        {
+            get
+            {
+                if (m_Current == null)
+                {
+                    m_Current = new IMessageCommon();
+                    //鍒濆鍖栧叏閮ㄧ殑淇℃伅
+                    m_Current.InitAllMsg();
+                }
+                return m_Current;
+            }
+        }
+
+        /// <summary>
+        /// 鏄惁鍦ㄨ幏鍙杢oken
+        /// </summary>
+        public bool isGetingToken;
+
+        /// <summary>
+        /// 鏃犺閿欒(璁块棶浜戠鏃讹紝姝ゆ搷浣滃皢涓嶄細寮瑰嚭閿欒)
+        /// </summary>
+        public bool IgnoreError = false;
+
+        ///// <summary>
+        ///// 鍏ㄩ儴淇℃伅
+        ///// </summary>
+        //private Dictionary<string, Dictionary<string, int>> dicMsg = null;
+
+        /// <summary>
+        /// 閫氱敤閿欒鐮�
+        /// </summary>
+        private Dictionary<string, int> stateCodeDic = null;
+
+
+        /// <summary>
+        /// 鍒濆鍖栧叏閮ㄧ殑淇℃伅
+        /// </summary>
+        public void InitAllMsg()
+        {
+            //dicMsg = new Dictionary<string, Dictionary<string, int>>();
+            #region 鍏遍�氶敊璇爜
+            stateCodeDic = new Dictionary<string, int>();
+            //涓庢湇鍔″櫒閫氳澶辫触
+            stateCodeDic["NETWORK_ERROR"] = HDL_ON.StringId.FailedRequestServer;
+            //鏁版嵁寮傚父
+            stateCodeDic["DATA_EXCEPTION"] = HDL_ON.StringId.DataExceptionPleaseTryAgain;
+
+            #region 鍩虹鏈嶅姟 鏂伴敊璇爜
+            //绯荤粺缁存姢涓瓇璇风◢鍚庡啀璇晘
+            stateCodeDic["2"] = HDL_ON.StringId.SystemMaintenance;
+            //绛惧悕閿欒
+            stateCodeDic["4"] = HDL_ON.StringId.SignatureError;
+            //楠岃瘉鐮佹牎楠屽け璐�
+            stateCodeDic["14"] = HDL_ON.StringId.VerificationCodeWrong;
+            //楠岃瘉鐮佸彂閫侀绻侊紝璇风◢鍚庡啀璇曪紒
+            stateCodeDic["15"] = HDL_ON.StringId.VerificationCodeSentFrequently;
+            //浼氳瘽瓒呮椂锛岃鏇存柊token
+            stateCodeDic[StateCode.TOKEN_EXPIRED] = HDL_ON.StringId.NotLogin;
+            ////鐧诲綍澶辫触锛岃处鍙锋垨鑰呭瘑鐮侀敊璇�
+            stateCodeDic["10008"] = HDL_ON.StringId.LoginFailed_AccountOrPasswordError;
+            //璐﹀彿涓嶅瓨鍦�
+            stateCodeDic[StateCode.ACCOUNT_NOT_EXIST] = HDL_ON.StringId.AccountNotExist;
+            //璐﹀彿宸插瓨鍦�
+            stateCodeDic["10012"] = HDL_ON.StringId.AccountExist;
+            ////璋冪敤鐢ㄦ埛妯″潡鎺ュ彛澶辫触
+            //stateCodeDic["10213"] = HDL_ON.StringId;
+            #endregion
+
+            ////return;
+            //#region 2020-09-18 鏂板鎺ラ敊璇爜
+            //////鎿嶄綔澶辫触锛岃閲嶈瘯
+            ////stateCodeDic ["10001"] = HDL_ON.StringId.uOperationFailed;
+            ////璇锋眰鍙傛暟閿欒
+            //stateCodeDic["10101"] = HDL_ON.StringId.uParameterError;
+            ////鏃犳晥鐧诲綍Token
+            //stateCodeDic["10102"] = HDL_ON.StringId.uNoLogin;
+            ////鐧诲綍澶辫触锛岃处鍙锋垨鑰呭瘑鐮侀敊璇�
+            //stateCodeDic["10103"] = HDL_ON.StringId.Accountorpassworderro;
+            ////娌℃湁璁板綍
+            //stateCodeDic["10104"] = HDL_ON.StringId.NoRecord;
+            ////鎿嶄綔鏉冮檺涓嶈冻
+            //stateCodeDic["10105"] = HDL_ON.StringId.uBeRestrict;
+            ////涓嶅瓨鍦�
+            //stateCodeDic["10106"] = HDL_ON.StringId.NO_EXISTS;
+
+
+            ////-------------------鐢ㄦ埛妯″潡-------------------
+            ////璐﹀彿涓嶅瓨鍦�
+            //stateCodeDic["10201"] = HDL_ON.StringId.uAccountNoExists;
+            ////璐﹀彿宸茬粡瀛樺湪
+            //stateCodeDic["10202"] = HDL_ON.StringId.RegisterSendVerCode_Exist;
+            ////楠岃瘉鐮佸凡澶辨晥
+            //stateCodeDic["10203"] = HDL_ON.StringId.ValidatorCode_NoRecord;
+            ////楠岃瘉鐮侀敊璇�
+            //stateCodeDic["10204"] = HDL_ON.StringId.VerificationCodeError;
+
+
+            ////鐧诲綍澶辫触锛屽瘑鐮侀敊璇�
+            //stateCodeDic["10205"] = HDL_ON.StringId.PasswordIsError;
+            ////楠岃瘉鐮佹棤鏁圼鐢ㄦ埛娌℃湁閫氳繃鎵嬫満[閭]鍙疯幏鍙栭獙璇佺爜]
+            //stateCodeDic["10206"] = HDL_ON.StringId.ValidatorCode_ValidCodeAndPhoneNoEqual;
+            ////楠岃瘉鐮佸彂閫侀绻�
+            //stateCodeDic["10207"] = HDL_ON.StringId.VERIFY_CODE_SENDED;
+            ////璇ヨ处鍙峰凡缁忕粦瀹�
+            //stateCodeDic["10208"] = HDL_ON.StringId.Exist;
+            ////鐢ㄦ埛鍚嶇О宸茬粡瀛樺湪
+            //stateCodeDic["10209"] = HDL_ON.StringId.Exist;
+            ////楠岃瘉鐮佸彂閫佸け璐�
+            //stateCodeDic["10210"] = HDL_ON.StringId.RegisterSendVerCode_SendFail;
+
+            ////-------------------鏇存柊瀵嗙爜妯″潡-------------------
+            ////鍘熷瘑鐮佸拰鏂板瘑鐮佺浉鍚�
+            //stateCodeDic["10211"] = HDL_ON.StringId.UpdatePassword_NewPasswordAndOldPasswordEqual;
+            ////鏃у瘑鐮佷笉瀵�
+            //stateCodeDic["10212"] = HDL_ON.StringId.UpdatePassword_OldPwdNoYes;
+
+            ////-------------------瀛愯处鍙锋ā鍧�-------------------
+            ////瀛愯处鍙峰凡缁忓瓨鍦�
+            //stateCodeDic["10301"] = HDL_ON.StringId.BindSubAccount_Exist;
+            ////瀛愯处鍙蜂笉瀛樺湪
+            //stateCodeDic["10302"] = HDL_ON.StringId.uAccountNoExists;
+            ////涓嶈兘鎶婅嚜宸辨坊鍔犱负鎴愬憳
+            //stateCodeDic["10303"] = HDL_ON.StringId.BindSubAccount_SameAccount;
+            ////涓�鏍风殑杩滅▼璇锋眰
+            //stateCodeDic["10304"] = HDL_ON.StringId.uOperationFailed;
+            ////璐﹀彿宸茬粡瀛樺湪浜庢浣忓畢
+            //stateCodeDic["10305"] = HDL_ON.StringId.BindSubAccount_Exist;
+
+            ////-------------------浣忓畢妯″潡-------------------
+            ////褰撳墠浣忓畢涓嶅睘浜庤璐﹀彿
+            //stateCodeDic["10401"] = HDL_ON.StringId.HomeIdAndTokenNoConsistent;
+            ////浣忓畢鍚嶇О宸插瓨鍦�
+            //stateCodeDic["10402"] = HDL_ON.StringId.EditZigbeeHome_Exist;
+            ////浣忓畢ID宸插瓨鍦�
+            //stateCodeDic["10403"] = HDL_ON.StringId.HOME_ID_EXISTS;
+            ////浣忓畢涓嶅瓨鍦�
+            //stateCodeDic["10404"] = HDL_ON.StringId.uZigbeeHome_NoRecord;
+
+            ////-------------------浣忓畢鍒嗕韩妯″潡-------------------
+            ////浣忓畢鍒嗕韩涓嶅瓨鍦�
+            //stateCodeDic["10405"] = HDL_ON.StringId.NO_EXISTS;
+
+            ////-------------------缃戝叧妯″潡-------------------
+            ////鏄惁寮哄埗瑙g粦缃戝叧
+            //stateCodeDic["10501"] = HDL_ON.StringId.BindGwToHome_BindGatewaysExists;
+            ////搴旂敤鎴愬姛
+            //stateCodeDic["10502"] = HDL_ON.StringId.AmendTheSuccess;
+            ////褰撳墠浣忓畢涓嬪苟娌℃湁缁戝畾鎸囧畾鐨勭綉鍏�
+            //stateCodeDic["10503"] = HDL_ON.StringId.ReleaseGatewayToZigbeeHome_NoBind;
+            ////涓嶆敮鎸�
+            //stateCodeDic["10504"] = HDL_ON.StringId.NOT_SUPPORT;
+            ////缃戝叧MAC涓嶅瓨鍦�
+            //stateCodeDic["10505"] = HDL_ON.StringId.MACError;
+
+            ////-------------------澶囦唤妯″潡-------------------
+            ////澶囨敞鍚嶇О宸茬粡瀛樺湪,璇锋洿鎹㈠悗閲嶈瘯锛佹枃浠跺す鍚嶇О宸茬粡瀛樺湪
+            //stateCodeDic["10601"] = HDL_ON.StringId.uBackupNameExists;
+            ////澶囦唤鏂囦欢澶逛笉瀛樺湪
+            //stateCodeDic["10602"] = HDL_ON.StringId.FolderNoExist;
+            ////澶囦唤鏂囦欢涓嶅瓨鍦�
+            //stateCodeDic["10603"] = HDL_ON.StringId.FileNoExist;
+
+
+            ////-------------------璺ㄥ尯-------------------
+            ////璇ユ帴鍙d笉瀛樺湪璺ㄥ尯鎿嶄綔
+            //stateCodeDic["11001"] = HDL_ON.StringId.NOT_SUPPORT;
+            ////璺ㄥ尯璋冪敤澶辫触
+            //stateCodeDic["11002"] = HDL_ON.StringId.NOT_SUPPORT;
+            ////鏋氫妇閿欒
+            //stateCodeDic["11003"] = HDL_ON.StringId.uOperationFailed;
+
+
+            #endregion
+
+
+        }
+
+        /// <summary>
+        /// 鏍规嵁鎺ュ彛鐨勭姸鎬佺爜锛岀炕璇戣繑鍥炰俊鎭�
+        /// </summary>
+        /// <param name="requestName">鎺ュ彛</param>
+        /// <param name="revertObj">浜戠杩斿洖鐨勬暟鎹�</param>
+        /// <param name="pra">璇锋眰鍙傛暟</param>
+        /// <returns></returns>
+        public string GetMsgByRequestName(string statuCode)
+        {
+            if (IgnoreError == true)
+            {
+                //鏃犺閿欒
+                return null;
+            }
+
+            //鍏遍�氱爜 
+            if (stateCodeDic.ContainsKey(statuCode) == true)
+            {
+                return Language.StringByID(stateCodeDic[statuCode]);
+            }
+
+            //if (dicMsg.ContainsKey(requestName) == true && dicMsg[requestName].ContainsKey(statuCode) == true)
+            //{
+            //    //鍦ㄥ唽鐨凪sg
+            //    return Language.StringByID(dicMsg[requestName][statuCode]);
+            //}
+
+            return Language.StringByID(HDL_ON.StringId.FailedRequestServer) + "\n(" + statuCode + ")";
+        }
+
+
+        /// <summary>
+        /// 寮圭獥鎻愮ず缃戠粶璇锋眰閿欒淇℃伅
+        /// </summary>
+        /// <param name="requestName"></param>
+        /// <param name="statuCode"></param>
+        /// <param name="isTipStyle"></param>
+        /// <param name="tipStr">琛ュ厖鐨勯敊璇彁绀�</param>
+        public void ShowErrorInfoAlter(string statuCode, bool isTipStyle = true, int closeTime = 2, string tipStr = "")
+        {
+            try
+            {
+                //濡傛灉鏄痶oken杩囨湡鍒欏埛鏂皌oken
+                if (statuCode == StateCode.TOKEN_EXPIRED)
+                {
+                    StartRefreshToken();
+                }
+                else
+                {
+                    string mes = GetMsgByRequestName(statuCode);
+                    if (mes == null) return;
+                    if (!string.IsNullOrEmpty(tipStr))
+                    {
+                        mes = tipStr + "\n" + mes;
+                    }
+                    if (isTipStyle)
+                    {
+                        Application.RunOnMainThread(() =>
+                        {
+                            var tip = new Tip()
+                            {
+                                Text = mes,
+                                CloseTime = closeTime,
+                                Direction = AMPopTipDirection.None
+                            };
+                            tip.Show(MainPage.BaseView);
+                        });
+                    }
+                    else
+                    {
+                        Application.RunOnMainThread(() =>
+                        {
+                            new Alert("", mes, Language.StringByID(HDL_ON.StringId.Close)).Show();
+                        });
+                    }
+                }
+            }
+            catch { }
+        }
+
+        /// <summary>
+        /// StartRefreshToken
+        /// </summary>
+        public void StartRefreshToken()
+        {
+            if (isGetingToken) return;
+
+            new System.Threading.Thread(() =>
+            {
+                isGetingToken = true;
+
+                try
+                {
+                    var success = new HttpServerRequest().RefreshToken();
+                    if (success) {
+                        Utlis.WriteLine("RefreshToken success");
+                    }
+                }
+                catch
+                {
+                }
+                finally
+                {
+                    isGetingToken = false;
+                }
+            })
+            { IsBackground = true }.Start();
+
+        }
+    }
+
+    /// <summary>
+    /// 甯哥敤鐘舵�佺爜绠$悊
+    /// </summary>
+    public class StateCode
+    {
+        /// <summary>
+        /// 璇锋眰鎴愬姛鐨勭姸鎬佺爜
+        /// </summary>
+        public const string SUCCESS = "0";
+        /// <summary>
+        /// 浼氳瘽瓒呮椂锛岃鏇存柊token
+        /// </summary>
+        public const string TOKEN_EXPIRED = "10001";
+        /// <summary>
+        /// 璐﹀彿涓嶅瓨鍦ㄧ殑閿欒鐮�
+        /// </summary>
+        public const string ACCOUNT_NOT_EXIST = "10010";
+
+
+    }
+}
diff --git a/HDL_ON/DAL/Server/NewAPI.cs b/HDL_ON/DAL/Server/NewAPI.cs
new file mode 100644
index 0000000..22ce041
--- /dev/null
+++ b/HDL_ON/DAL/Server/NewAPI.cs
@@ -0,0 +1,310 @@
+锘縰sing System;
+
+namespace HDL_ON.DAL.Server
+{
+    public class NewAPI
+    {
+        #region 鏂板井鏈嶅姟鎺ュ彛
+        //***********************************************
+        //娉ㄦ剰锛氬拰浣忓畢鐩稿叧鐨勬帴鍙h璇锋眰浣忓畢鎵�鍦ㄥ尯鍩熺殑鍩熷悕   regionUrl    
+        //***********************************************
+        #region 鈻� RegionCluster -- 鍏ㄧ悆鍖哄煙鍒楄〃___________________________
+        /// <summary>
+        /// 鏍规鐢ㄦ埛璐﹀彿鑾峰彇娉ㄥ唽鍖哄煙 鍏嶇櫥褰� // 妫�娴嬭处鍙锋槸鍚︽敞鍐屼篃鐢ㄨ繖涓帴鍙�
+        /// </summary>
+        public const string API_POST_GetRegionByAccount = "/smart-footstone/region/regionByAccount";
+        /// <summary>
+        /// 鑾峰彇鍏ㄧ悆鍖哄煙鍒楄〃 鍏嶇櫥褰�
+        /// </summary>
+        public const string API_POST_GlobalRegionList = "/smart-footstone/region/globalRegionList";
+        #endregion 
+
+        #region 鈻� AcCluster -- 鐧诲綍鍜屾敞鍐岄儴鍒哶__________________________
+        /// <summary>
+        /// 甯愬彿鐧诲綍
+        /// </summary>
+        public const string API_POST_Login = "/smart-footstone/member/oauth/login";
+        /// <summary>
+        /// 杈撳叆楠岃瘉鐮佹敞鍐�
+        /// </summary>
+        public const string API_POST_Member_Register = "/smart-footstone/member/oauth/register";
+        /// <summary>
+        /// 鐢ㄦ埛鎵惧洖瀵嗙爜
+        /// </summary>
+        public const string API_POST_Member_ForgetPwd = "/smart-footstone/member/oauth/forgetPwd";
+        /// <summary>
+        /// 淇敼瀵嗙爜
+        /// </summary>
+        public const string API_POST_Update_Pwd = "/smart-footstone/member/memberInfo/updatePwd";
+        /// <summary>
+        /// 鍙戦�侀獙璇佺爜
+        /// </summary>
+        public const string API_POST_Verification_Send = "/smart-footstone/verification/message/send";
+        /// <summary>
+        /// 楠岃瘉娑堟伅楠岃瘉鐮�
+        /// </summary>
+        public const string API_POST_Verification_Check = "/smart-footstone/verification/message/check";
+        #region 鐢ㄦ埛淇℃伅銆佸ご鍍忋�佺粦瀹氳璇�(鎵嬫満/閭)
+        /// <summary>
+        /// 鑾峰彇涓汉淇℃伅
+        /// </summary>
+        public const string API_POST_Member_GetMemberInfo = "/smart-footstone/member/memberInfo/getMemberInfo";
+        /// <summary>
+        /// 鏇存柊涓汉淇℃伅
+        /// </summary>
+        public const string API_POST_Member_UpdateMemberInfo = "/smart-footstone/member/memberInfo/updateMemberInfo";
+        /// <summary>
+        /// 涓婁紶澶村儚
+        /// </summary>
+        public const string API_POST_Head_Upload = "/home-wisdom/head/portrait/upload";
+        /// <summary>
+        /// 涓嬭浇澶村儚
+        /// </summary>
+        public const string API_POST_Head_Down = "/home-wisdom/head/portrait/down";
+        /// <summary>
+        /// 鏍规嵁璐﹀彿涓嬭浇澶村儚
+        /// </summary>
+        public const string API_POST_Head_DownWithAccount = "/home-wisdom/head/portrait/downWithAccount";
+        /// <summary>
+        /// 缁戝畾璁よ瘉(鎵嬫満/閭)
+        /// </summary>
+        public const string API_POST_Member_BindWithAccount = "/smart-footstone/member/memberInfo/bindWithAccount";
+        /// <summary>
+        /// 瑙g粦璁よ瘉(鎵嬫満/閭)
+        /// </summary>
+        public const string API_POST_Member_UnbindWithAccount = "/smart-footstone/member/memberInfo/unbindWithAccount";
+        #endregion
+
+        #endregion
+
+        #region 鈻� HomeCluster -- 浣忓畢绠$悊鎺ュ彛___________________________
+        ///// <summary>
+        ///// 娣诲姞浣忓畢
+        ///// </summary>
+        //public const string API_POST_Addhome = "/HomeCluster/V1/addhome";
+        /// <summary>
+        /// 鑾峰彇浣忓畢鍒嗛〉
+        /// </summary>
+        public const string API_POST_Gethomepager = "/home-wisdom/home/list";
+        /// <summary>
+        /// 鍒犻櫎浣忓畢
+        /// </summary>
+        public const string API_POST_Home_Delete = "/home-wisdom/home/delete";
+        /// <summary>
+        /// 鏇存柊浣忓畢
+        /// </summary>
+        public const string API_POST_Home_UpdateHome = "/home-wisdom/home/update";
+
+        #endregion
+
+        #region 鈻� 瀛愯处鍙� -- 娣诲姞浣忓畢鎴愬憳___________________________
+        /// <summary>
+        /// 娣诲姞瀛愯处鎴�
+        /// </summary>
+        public const string API_POST_Child_Add = "/home-wisdom/child/account/add";
+        /// <summary>
+        /// 鍒犻櫎瀛愯处鎴�
+        /// </summary>
+        public const string API_POST_Child_Delete = "/home-wisdom/child/account/delete";
+        /// <summary>
+        /// 鏍规嵁浣忓畢 id 鏌ヨ鎵�鏈夌殑瀛愯处鎴�
+        /// </summary>
+        public const string API_POST_Child_FindAll = "/home-wisdom/child/account/findAll";
+        /// <summary>
+        /// 鏇存柊杩滅▼鎺у埗
+        /// </summary>
+        public const string API_POST_Child_Update = "/home-wisdom/child/account/update";
+        /// <summary>
+        /// 瀛愯处鍙风鐞嗗憳鑾峰彇涓昏处鍙锋巿鏉僒oken
+        /// </summary>
+        public const string API_POST_Child_GetMasterToken = "/home-wisdom/child/account/masterToken/get";
+        /// <summary>
+        /// 涓嬭浇瀛愯处鍙峰ご鍍�
+        /// </summary>
+        public const string API_POST_Child_DownloadHeadImage = "/home-wisdom/child/account/getHeadPortrait";
+        #region 鏁版嵁鍒嗕韩
+        /// <summary>
+        /// 鍒嗕韩鎸囧畾鏂囦欢缁欐寚瀹氭垚鍛�
+        /// </summary>
+        public const string API_POST_Home_Share_Add = "/home-wisdom/home/share/add";
+        /// <summary>
+        /// 鏌ヨ鎸囧畾鎴愬憳鐨勬墍鏈夊垎浜枃浠�
+        /// </summary>
+        public const string API_POST_Home_Share_FindAll = "/home-wisdom/home/share/findAll";
+        /// <summary>
+        /// 涓嬭浇鎸囧畾鐨勫垎浜枃浠�
+        /// </summary>
+        public const string API_POST_Home_Share_DownOne = "/home-wisdom/home/share/downOne";
+        /// <summary>
+        /// 鍒犻櫎鎸囧畾鐨勫垎浜枃浠�
+        /// </summary>
+        public const string API_POST_Home_Share_Delete = "/home-wisdom/home/share/delete";
+
+        #endregion
+
+        #endregion
+
+        #region  鈻� GatewayCluster -- 缃戝叧___________________________
+
+        /// <summary>
+        /// 缁戝畾缃戝叧鍒颁綇瀹�
+        /// </summary>
+        public const string API_POST_BindGateway = "/home-wisdom/gateway/bindGateway";
+
+        /// <summary>
+        /// 鑾峰彇浣忓畢缃戝叧鍒嗛〉
+        /// </summary>
+        public const string API_POST_GetGatewayList = "/home-wisdom/gateway/getGatewayList";
+
+        ///// <summary>
+        ///// 瑙g粦缁戠綉鍏冲埌浣忓畢
+        ///// </summary>
+        public const string API_POST_UntieGateway = "/home-wisdom/gateway/untieGateway";
+
+        #endregion
+
+        #region 鈻� GatewayCenterCluster -- 缃戝叧涓績鏈嶅姟鍣╛__________________________
+        ///// <summary>
+        ///// 缃戝叧鐧诲綍
+        ///// </summary>
+        //public const string API_POST_GatewayLogin = "/GatewayCenterCluster/V1/gatewayLogin";
+
+        #endregion
+
+        #region 鈻� ClientCenterCluster -- 瀹㈡埛绔腑蹇冩湇鍔″櫒___________________________
+        /// <summary>
+        /// 鑾峰彇杩滅▼杩炴帴
+        /// </summary>
+        public const string API_POST_GetMqttRemoteInfo = "/home-wisdom/mqtt/getRemoteInfo";
+        #endregion
+
+        #region 鈻� HomebackupCluster -- 浣忓畢澶囦唤寰湇鍔__________________________
+        /// <summary>
+        /// 鍒涘缓鏂囦欢澶�
+        /// </summary>
+        public const string API_POST_Folder_Create = "/home-wisdom/backup/folder/create";
+
+        /// <summary>
+        /// 鍒犻櫎鏂囦欢澶�
+        /// </summary>
+        public const string API_POST_Folder_Delete = "/home-wisdom/backup/folder/delete";
+
+        /// <summary>
+        /// 鏌ユ壘鎵�鏈夋枃浠跺す
+        /// </summary>
+        public const string API_POST_Folder_FindAll = "/home-wisdom/backup/folder/findAll";
+
+        /// <summary>
+        /// 鏇存柊鏂囦欢澶�
+        /// </summary>
+        public const string API_POST_Folder_Update = "/home-wisdom/backup/folder/update";
+
+        /// <summary>
+        /// 涓婁紶鏂囦欢
+        /// </summary>
+        public const string API_POST_File_Create = "/home-wisdom/backup/file/create";
+
+        ///// <summary>
+        ///// 鍒犻櫎鏂囦欢
+        ///// </summary>
+        //public const string API_DELETE_File_Delete = "/HomebackupCluster/V1/file/delete";
+
+        /// <summary>
+        /// 涓嬭浇澶囦唤鏂囦欢
+        /// </summary>
+        public const string API_POST_File_Down = "/home-wisdom/backup/file/downOne";
+
+        /// <summary>
+        /// 鏌ヨ涓�涓枃浠跺す鎵�鏈夋枃浠跺悕
+        /// </summary>
+        public const string API_POST_File_FindAll = "/home-wisdom/backup/file/findAll";
+
+        #endregion
+
+        #region 鈻� zigbeespeakerservice -- 璇煶鎺у埗鏈嶅姟___________________________
+
+        /// <summary>
+        /// 鑾峰彇闊崇鍒楄〃
+        /// </summary>
+        public const string API_GET_Speaker_Auth = "/speakerservices/Auth";
+
+        /// <summary>
+        /// 淇敼闊崇澶囨敞
+        /// </summary>
+        public const string API_PUT_Speaker_Auth_Rename = "/speakerservices/Auth";
+
+        /// <summary>
+        /// 鑾峰彇璁惧鍜屽満鏅垪琛�
+        /// </summary>
+        public const string API_GET_Speaker_BatchEdit_V2 = "/speakerservices/BatchEdit_V2";
+
+        /// <summary>
+        /// 娣诲姞璁惧鍜屽満鏅垪琛�
+        /// </summary>
+        public const string API_POST_Speaker_BatchEdit_V2 = "/speakerservices/BatchEdit_V2";
+
+
+        #endregion
+
+        #region 鈻� PushSerivce -- 鎺ㄩ�佹湇鍔℃帴鍙__________________________
+        /// <summary>
+        /// 娣诲姞鎺ㄩ�乀oken
+        /// </summary>
+        public const string API_POST_PushSerivce_AddToken = "/smart-footstone/app/push-information/add";
+        /// <summary>
+        /// 鍒犻櫎鎺ㄩ�乀oken
+        /// </summary>
+        public const string API_POST_PushSerivce_DeleteToken = "/smart-footstone/app/push-information/delete";
+        /// <summary>
+        /// 鑾峰彇鎺ㄩ�佹秷鎭褰�
+        /// </summary>
+        public const string API_POST_PushSerivce_Getpushmessagelist = "/smart-footstone/app/message/list";
+        /// <summary>
+        /// 娓呯┖鎺ㄩ�佺殑娑堟伅璁板綍
+        /// </summary>
+        public const string API_POST_PushSerivce_Clearmessagelist = "/smart-footstone/app/message/clear";
+        /// <summary>
+        /// 鏍囪娑堟伅宸茶
+        /// </summary>
+        public const string API_POST_PushSerivce_Markread = "/smart-footstone/app/message/read";
+        /// <summary>
+        /// 鏍囪娑堟伅鍏ㄩ儴宸茶
+        /// </summary>
+        public const string API_POST_PushSerivce_ALLMarkread = "/smart-footstone/app/message/read_all";
+        /// <summary>
+        /// 閫氳繃涓婚敭id鍒犻櫎涓�鏉℃帹閫佽褰�
+        /// </summary>
+        public const string API_POST_PushSerivce_Deletepushinfo = "/smart-footstone/app/message/delete_by_id";
+        #endregion
+
+        #region 鈻�  -- 妫�娴嬫洿鏂版帴鍙__________________________
+        /// <summary>
+        /// 妫�娴嬫洿鏂�,鏄惁闇�瑕佸己鍒舵洿鏂�
+        /// </summary>
+        public const string API_POST_CheckAppVersion= "/smart-footstone/app/checkAppVersion";
+        /// <summary>
+        /// 鏌ヨAPP鏈�鏂扮増鏈�
+        /// </summary>
+        public const string API_POST_GetAppVersion = "/smart-footstone/app/getAppVersion";
+        #endregion
+
+
+        #endregion
+    }
+
+    ///// <summary>
+    ///// BaseRequestObj
+    ///// </summary>
+    //[System.Serializable]
+    //public class BaseRequestObj
+    //{
+    //    public string RequestVersion = MainPage.CodeIDString;
+
+    //    public string RequestSource = MainPage.ClientType;
+
+    //    public string LoginAccessToken;
+    //}
+
+
+
+}
diff --git a/HDL_ON/DAL/Server/NewApiRes.cs b/HDL_ON/DAL/Server/NewApiRes.cs
new file mode 100644
index 0000000..8f5bf92
--- /dev/null
+++ b/HDL_ON/DAL/Server/NewApiRes.cs
@@ -0,0 +1,1284 @@
+锘縰sing System;
+using System.Collections.Generic;
+
+namespace HDL_ON.DAL.Server
+{
+
+    #region  **************************************鏂版湇鍔″櫒**************************************
+    [System.Serializable]
+    public class BaseNoTokenObj
+    {
+        //public string RequestVersion = MainPage.CodeIDString;
+        ////璇锋眰鏉ユ簮
+        //public string clientType = MainPage.ClientType;
+
+    }
+
+    [System.Serializable]
+    public class NullObj
+    {
+        
+    }
+
+    #region 鈻� 鍏ㄧ悆鍖哄煙鍒楄〃 ____________________________
+    [System.Serializable]
+    public class GetRegionListObj
+    {
+        /// <summary>
+        /// 鍖哄煙鏍囪瘑
+        /// </summary>
+        public string regionMark;
+
+    }
+
+    [System.Serializable]
+    public class RegionByAccountObj
+    {
+        /// <summary>
+        /// 璐﹀彿
+        /// </summary>
+        public string account;
+
+    }
+
+    [System.Serializable]
+    public class GlobalRegionListRes
+    {
+        public string regionId;
+        public string regionName;
+        public string regionUrl;
+    }
+
+    #endregion
+
+    #region  鈻� 鐧诲綍 ____________________________
+    [System.Serializable]
+    public class LoginObj
+    {
+        /// <summary>
+        /// 璐﹀彿
+        /// </summary>
+        public string account;
+        /// <summary>
+        /// 瀵嗙爜
+        /// </summary>
+        public string loginPwd;
+        /// <summary>
+        /// 鎺堟潈绫诲瀷,鍙敤鍊�:captcha,refresh_token,password,verify
+        /// </summary>
+        public string grantType = "password";
+        /// <summary>
+        /// 骞冲彴 WEB銆丄PP銆乄X銆丄LIPAY
+        /// </summary>
+        public string platform = "APP";
+        /// <summary>
+        /// 楠岃瘉鐮侊紝鐭俊鐧诲綍鏃跺�欑敤
+        /// </summary>
+        public string verifyCode;
+        
+
+    }
+
+    /// <summary>
+    /// 鍒锋柊token
+    /// </summary>
+    [System.Serializable]
+    public class RefreshTokenObj
+    {
+        /// <summary>
+        /// refreshToken
+        /// </summary>
+        public string refreshToken;
+        /// <summary>
+        /// 鎺堟潈绫诲瀷,鍙敤鍊�:captcha,refresh_token,password,verify
+        /// </summary>
+        public string grantType = "refresh_token";
+        /// <summary>
+        /// 骞冲彴 WEB銆丄PP銆乄X銆丄LIPAY
+        /// </summary>
+        public string platform = "APP";
+
+    }
+
+    /// <summary>
+    /// 
+    /// </summary>
+    [Serializable]
+    public class UserLoginRes
+    {
+        /// <summary>
+        /// 
+        /// </summary>
+        public string expiresIn;
+        /// <summary>
+        /// 
+        /// </summary>
+        public string refreshToken;
+        /// <summary>
+        /// 
+        /// </summary>
+        public string accessToken;
+        /// <summary>
+        /// 璐﹀彿绫诲瀷 "C"锛欳绔处鍙�
+        /// </summary>
+        public string userType;
+        /// <summary>
+        /// Token "Bearer "
+        /// </summary>
+        public string headerPrefix;
+        /// <summary>
+        /// 鐢ㄦ埛ID
+        /// </summary>
+        public string userId;
+        /// <summary>
+        /// 鐢ㄦ埛鍚嶅瓧
+        /// </summary>
+        public string name;
+
+    }
+    #endregion
+
+    #region  鈻� 娉ㄥ唽 ____________________________
+
+    //鐢ㄦ埛杈撳叆鎵嬫満楠岃瘉鐮佽繘琛岄獙璇佹敞鍐�
+    [System.Serializable]
+    public class RegisterObj
+    {
+        /// <summary>
+        /// 鐢ㄦ埛璐﹀彿[鎵嬫満鍙穄
+        /// </summary>
+        public string memberPhone;
+        /// <summary>
+        /// 鐢ㄦ埛璐﹀彿[閭]
+        /// </summary>
+        public string memberEmail;
+        /// <summary>
+        /// 楠岃瘉鐮�
+        /// </summary>
+        public string verifyCode;
+        ///// <summary>
+        ///// 鎵嬫満娉ㄥ唽鐨勮鍔犺繖涓紝鐭俊鍖哄煙浠g爜锛屽+86
+        ///// </summary>
+        //public string phoneAreaCode;
+        /// <summary>
+        /// 鐧婚檰瀵嗙爜锛岄渶瑕丮D5澶勭悊
+        /// </summary>
+        public string loginPwd;
+        /// <summary>
+        /// 浼氬憳鏄电О
+        /// </summary>
+        public string memberName;
+    }
+
+    /// <summary>
+    /// 鍙戦�侀獙璇佺爜
+    /// </summary>
+    [System.Serializable]
+    public class VerifyCodeSendObj
+    {
+        /// <summary>
+        /// 鎵嬫満鍙�
+        /// </summary>
+        public string phone;
+        /// <summary>
+        /// 鎵嬫満鍙峰墠缂�
+        /// </summary>
+        public string phonePrefix;
+        /// <summary>
+        /// 璇█
+        /// </summary>
+        public string languageType;
+        /// <summary>
+        /// 閭
+        /// </summary>
+        public string mail;
+        /// <summary>
+        /// 1:娉ㄥ唽 2锛氭壘鍥炲瘑鐮� 3锛氱粦瀹�4:楠岃瘉鐮佺櫥闄� 5:鏁忔劅鏁版嵁
+        /// 榛樿浼�1
+        /// </summary>
+        public int verifyType = 1;
+        /// <summary>
+        /// 楠岃瘉鐮佽繃鏈熸椂闂达紙绉掞級,榛樿5鍒嗛挓
+        /// </summary>
+        public int expireSecond = 300;
+
+    }
+
+    /// <summary>
+    /// 楠岃瘉楠岃瘉鐮�
+    /// </summary>
+    [System.Serializable]
+    public class VerifyCodeCheckObj
+    {
+        /// <summary>
+        /// 鎵嬫満鍙�
+        /// </summary>
+        public string phone;
+        /// <summary>
+        /// 閭
+        /// </summary>
+        public string mail;
+        /// <summary>
+        /// 1锛氭敞鍐� 2锛氭壘鍥炲瘑鐮� 3锛氱粦瀹� 4锛氶獙璇佺爜鐧婚檰 5锛氭晱鎰熸暟鎹�
+        /// 榛樿浼�1
+        /// </summary>
+        public int verifyType = 1;
+        /// <summary>
+        /// 楠岃瘉鐮佽繃鏈熸椂闂达紙绉掞級,榛樿5鍒嗛挓
+        /// </summary>
+        public string verifyCode;
+        /// <summary>
+        /// 楠岃瘉鎴愬姛鍚庨獙璇佺爜鏄惁澶辨晥 涓嶄紶鍊兼垨鑰卼rue澶辨晥锛屽彧鏈変紶false鐨勬椂鍊欙紝鏍¢獙閫氳繃鍚庨獙璇佺爜涔熶笉澶辨晥
+        /// </summary>
+        public bool verifySuccessFail = true;
+
+    }
+
+    //[System.Serializable]
+    //public class SignPhoneObj
+    //{
+    //    public string phone;
+    //    public int Company;// 鐭俊妯℃澘缂栧彿  int 鏄�
+    //}
+
+    #endregion
+
+    #region 鈻� 蹇樿瀵嗙爜 ____________________________
+    //ForgetPwd 蹇樿瀵嗙爜,鎵嬫満鎴栭偖绠辨柟寮�
+    [System.Serializable]
+    public class ForgetPwdObj
+    {
+        /// <summary>
+        /// 鎵嬫満璐﹀彿
+        /// </summary>
+        public string memberPhone;
+        /// <summary>
+        /// 閭璐﹀彿
+        /// </summary>
+        public string memberEmail;
+        /// <summary>
+        /// 楠岃瘉鐮�
+        /// </summary>
+        public string verifyCode;
+        /// <summary>
+        /// 鏂板瘑鐮�
+        /// </summary>
+        public string loginPwd;
+    }
+
+    /// <summary>
+    /// 鏇存敼涓汉瀵嗙爜
+    /// </summary>
+    [System.Serializable]
+    public class UpdatePwdObj
+    {
+        /// <summary>
+        /// 鏃у瘑鐮�
+        /// </summary>
+        public string loginPwd;
+        /// <summary>
+        /// 鏂板瘑鐮�
+        /// </summary>
+        public string loginNewPwd;
+    }
+
+
+    #endregion
+
+    #region 鈻� 甯愬彿淇℃伅 ____________________________
+    /// <summary>
+    /// 鑾峰彇涓汉淇℃伅
+    /// </summary>
+    [System.Serializable]
+    public class MemberInfoRes
+    {
+        /// <summary>
+        /// 鐢ㄦ埛ID
+        /// </summary>
+        public string memberId;
+        /// <summary>
+        /// 鐢ㄦ埛鏄电О
+        /// </summary>
+        public string memberName;
+        /// <summary>
+        /// 鐢ㄦ埛閭
+        /// </summary>
+        public string memberEmail;
+        /// <summary>
+        /// 鐢ㄦ埛鎵嬫満鍙�
+        /// </summary>
+        public string memberPhone;
+        /// <summary>
+        /// 鍥藉鍖哄彿
+        /// </summary>
+        public string memberPhonePrefix;
+        /// <summary>
+        /// 鐧诲綍鍚�
+        /// </summary>
+        public string loginName;
+
+    }
+
+    /// <summary>
+    /// 鏇存柊涓汉淇℃伅
+    /// </summary>
+    [System.Serializable]
+    public class UpdateMemberNameRes
+    {
+        /// <summary>
+        /// 鐢ㄦ埛鏄电О
+        /// </summary>
+        public string memberName;
+
+    }
+
+
+    /// <summary>
+    /// 缁戝畾璁よ瘉(鎵嬫満/閭)
+    /// </summary>
+    [System.Serializable]
+    public class BindWithAccountObj
+    {
+        /// <summary>
+        /// 鐢ㄦ埛鎵嬫満
+        /// </summary>
+        public string memberPhone;
+        /// <summary>
+        /// 鐢ㄦ埛鎵嬫満
+        /// </summary>
+        public string memberEmail;
+        /// <summary>
+        /// 楠岃瘉鍚�
+        /// </summary>
+        public string verifyCode;
+        
+
+    }
+
+    /// <summary>
+    /// 瑙g粦缁戝畾璁よ瘉(鎵嬫満/閭)
+    /// </summary>
+    [System.Serializable]
+    public class UnBindAccountObj
+    {
+        /// <summary>
+        /// 瑙g粦鏍囩ず锛孭HONE锛孍MAIL
+        /// </summary>
+        public string unBindLabel;
+    }
+
+
+    #endregion
+
+    #region 鈻� 浣忓畢鐩稿叧 ____________________________
+    #region 鑾峰彇浣忓畢鍒嗛〉
+    [System.Serializable]
+    public class GetHomeListObj
+    {
+        /// <summary>
+        /// 浣忓畢绫诲瀷
+        /// </summary>
+        public string homeType;
+    }
+
+
+    [Serializable]
+    public class AddOrUpdateHomeObj
+    {
+        /// <summary>
+        /// 
+        /// </summary>
+        public string homeId;
+        /// <summary>
+        /// 
+        /// </summary>
+        public string homeType;
+        /// <summary>
+        /// 
+        /// </summary>
+        public double latitude;
+        /// <summary>
+        /// 
+        /// </summary>
+        public double longitude;
+        /// <summary>
+        /// 浣忓畢鍚嶇О
+        /// </summary>
+        public string homeName;
+        /// <summary>
+        /// 浣忓畢鍦板潃
+        /// </summary>
+        public string Address;
+    }
+
+
+    //[Serializable]
+    //public class GethomepagerRes
+    //{
+
+    //    /// <summary>
+    //    /// 
+    //    /// </summary>
+    //    public int totalPages;
+    //    public int totalElements;
+    //    public bool last;
+    //    public bool first;
+    //    public int numberOfElements;
+    //    public int size;
+    //    public int number;
+    //    public bool empty;
+
+    //    public List<RegionInfoRes> content = new List<RegionInfoRes> ();
+    //}
+
+
+    //[Serializable]
+    //public class HomeInfoRes
+    //{
+
+    //    /// <summary>
+    //    /// 
+    //    /// </summary>
+    //    public int totalPages;
+    //    public int totalElements;
+    //    public bool last;
+    //    public bool first;
+    //    public int numberOfElements;
+    //    public int size;
+    //    public int number;
+    //    public bool empty;
+
+    //    public List<RegionInfoRes> content = new List<RegionInfoRes> ();
+    //}
+
+    #endregion
+
+    #region 缁戝畾缃戝叧
+    [System.Serializable]
+    public class BindGatewayObj
+    {
+        /// <summary>
+        /// 浣忓畢ID
+        /// </summary>
+        public string homeId;
+        /// <summary>
+        /// 缃戝叧MAC
+        /// </summary>
+        public string mac;
+        /// <summary>
+        /// 浣忓畢绫诲瀷
+        /// </summary>
+        public string gatewayType;
+        /// <summary>
+        /// 瀛愮綉鍙�
+        /// </summary>
+        public int subnetId;
+        /// <summary>
+        /// 璁惧鍙�
+        /// </summary>
+        public int deviceId;
+
+    }
+
+    #endregion
+
+    #region 鑾峰彇浣忓畢缃戝叧鍒楄〃
+    [Serializable]
+    public class HomeGatewayRes
+    {
+        public int totalPages;
+        public int totalElements;
+        public bool last;
+        public bool first;
+        public int numberOfElements;
+        public int size;
+        public int number;
+        public bool empty;
+        public List<HomeGatewayInfo> content = new List<HomeGatewayInfo>();
+    }
+
+    [Serializable]
+    public class HomeGatewayInfo
+    {
+        /// <summary>
+        /// 缃戝叧
+        /// </summary>
+        public string id;
+        /// <summary>
+        /// 浣忓畢ID
+        /// </summary>
+        public string homeId;
+        /// <summary>
+        /// 
+        /// </summary>
+        public string untieMark;
+        /// <summary>
+        /// 
+        /// </summary>
+        public string gwFirmwareVersion;
+        /// <summary>
+        /// 
+        /// </summary>
+        public string mac;
+        /// <summary>
+        /// 
+        /// </summary>
+        public string projectName;
+        /// <summary>
+        /// 
+        /// </summary>
+        public string userName;
+        /// <summary>
+        /// 
+        /// </summary>
+        public string groupName;
+        /// <summary>
+        /// 
+        /// </summary>
+        public string gatewayName;
+        /// <summary>
+        /// 
+        /// </summary>
+        public string primaryKey;
+        /// <summary>
+        /// 
+        /// </summary>
+        public string aesKey;
+        /// <summary>
+        /// 
+        /// </summary>
+        public string encryptionType;
+        /// <summary>
+        /// 
+        /// </summary>
+        public string gatewayType;
+        /// <summary>
+        /// 瀛愮綉鍙�
+        /// </summary>
+        public int subnetId;
+        /// <summary>
+        /// 璁惧鍙�
+        /// </summary>
+        public int deviceId;
+
+    }
+
+
+
+
+    #endregion
+
+    #region 瑙g粦缃戝叧
+    /// <summary>
+    /// 瑙g粦缃戝叧
+    /// </summary>
+    [System.Serializable]
+    public class UntieGatewayObj
+    {
+        /// <summary>
+        /// 浣忓畢ID
+        /// </summary>
+        public string homeId;
+        /// <summary>
+        /// 缃戝叧MAC
+        /// </summary>
+        public string mac;
+    }
+    #endregion
+
+    #endregion
+
+    #region 鈻� 澶囦唤鐩稿叧 ____________________________
+    /// <summary>
+    /// 鏇存柊鏂囦欢澶瑰悕瀛�
+    /// </summary>
+    ///
+    [System.Serializable]
+    public class BackupFolderCreateObj
+    {
+        /// <summary>
+        /// 澶囦唤鍒嗙被 0:浜や簰宸ョ▼澶囦唤 1:鑷畾涔夊伐绋嬪浠� 2:鐢ㄦ埛鑷姩澶囦唤 3:鐢ㄦ埛鑷畾涔夊浠� [濉啓 0~3]
+        /// </summary>
+        public string backupClassify = string.Empty;
+        /// <summary>
+        /// 澶囦唤鏁版嵁鍒嗙被
+        /// </summary>
+        public string backupDataType = string.Empty;
+        /// <summary>
+        /// 浣忓畢 ID
+        /// </summary>
+        public string homeId;
+        /// <summary>
+        /// APP澶囦唤鏂囦欢澶瑰悕瀛�
+        /// </summary>
+        public string folderName;
+    }
+
+    [System.Serializable]
+    public class BackupFolderCreateRes
+    {
+        /// <summary>
+        /// 鏂囦欢澶筰d
+        /// </summary>
+        public string id;
+        ///// <summary>
+        ///// 
+        ///// </summary>
+        //public string homeId;
+        ///// <summary>
+        ///// 
+        ///// </summary>
+        //public string backupDataType;
+        ///// <summary>
+        ///// 
+        ///// </summary>
+        //public string backupClassify;
+        /// <summary>
+        /// 鏂囦欢澶瑰悕瀛�
+        /// </summary>
+        public string folderName;
+        ///// <summary>
+        ///// 
+        ///// </summary>
+        //public int backupUtcTime;
+        ///// <summary>
+        ///// 
+        ///// </summary>
+        //public int createonutc;
+    }
+
+    /// <summary>
+    /// 澶囦唤鍒楄〃鍚嶇殑淇℃伅
+    /// </summary>
+    ///
+    [System.Serializable]
+    public class BackupListNameInfoRes
+    {
+        /// <summary>
+        /// 鏂囦欢澶� ID
+        /// </summary>
+        public string id;
+        /// <summary>
+        /// 浣忓畢 ID
+        /// </summary>
+        public string homeId;
+        /// <summary>
+        /// backupDataType
+        /// </summary>
+        public string backupDataType = string.Empty;
+        /// <summary>
+        /// backupClassify
+        /// </summary>
+        public string backupClassify;
+        /// <summary>
+        /// backupClassify
+        /// </summary>
+        public string folderName = string.Empty;
+        /// <summary>
+        /// backupUtcTime
+        /// </summary>
+        public string backupUtcTime;
+        ///// <summary>
+        ///// createonutc
+        ///// </summary>
+        //public string createUtcTime;
+
+
+    }
+
+    /// <summary>
+    /// 鏇存柊鏂囦欢澶瑰悕瀛�
+    /// </summary>
+    ///
+    [System.Serializable]
+    public class UpdateBackupObj
+    {
+        ///// <summary>
+        ///// 澶囦唤鍒嗙被 0:浜や簰宸ョ▼澶囦唤 1:鑷畾涔夊伐绋嬪浠� 2:鐢ㄦ埛鑷姩澶囦唤 3:鐢ㄦ埛鑷畾涔夊浠� [濉啓 0~3]
+        ///// </summary>
+        //public string backupClassify = string.Empty;
+        ///// <summary>
+        ///// 澶囦唤鏁版嵁鍒嗙被
+        ///// </summary>
+        //public string backupDataType = string.Empty;
+        /// <summary>
+        /// 浣忓畢 ID
+        /// </summary>
+        public string homeId;
+        /// <summary>
+        /// APP澶囦唤鏂囦欢澶瑰悕瀛�
+        /// </summary>
+        public string folderName;
+        /// <summary>
+        /// 鏂囦欢澶� id
+        /// </summary>
+        public string folderId;
+
+    }
+
+    /// <summary>
+    /// 鍗曚釜澶囦唤鏂囦欢淇℃伅
+    /// </summary>
+    [System.Serializable]
+    public class BackupFileInfoRes
+    {
+        /// <summary>
+        /// 鏂囦欢涓婚敭 id
+        /// </summary>
+        public string id;
+        /// <summary>
+        /// 鏂囦欢澶逛富閿� id
+        /// </summary>
+        public string backupFolderId;
+        /// <summary>
+        /// 鎵嬫満鍙蜂綇瀹呯殑鏂囦欢鍚嶇О
+        /// </summary>
+        public string fileName;
+        ///// <summary>
+        ///// 
+        ///// </summary>
+        //public long createUtcTime;
+    }
+
+    /// <summary>
+    /// 鏌ユ壘鎵�鏈夋枃浠� 鎴栬�� 鍒犻櫎澶囦唤鏂囦欢澶�
+    /// </summary>
+    [System.Serializable]
+    public class BackupFolderIdObj
+    {
+        /// <summary>
+        /// 鏂囦欢澶逛富閿� id
+        /// </summary>
+        public string folderId;
+        /// <summary>
+        /// 浣忓畢ID
+        /// </summary>
+        public string homeId;
+
+    }
+
+    /// <summary>
+    /// 涓嬭浇澶囦唤
+    /// </summary>
+    [System.Serializable]
+    public class BackupFileDownObj
+    {
+        /// <summary>
+        /// 鏂囦欢澶逛富閿� id
+        /// </summary>
+        public string folderId;
+        /// <summary>
+        /// 鏂囦欢id
+        /// </summary>
+        public string fileId;
+        /// <summary>
+        /// 浣忓畢ID
+        /// </summary>
+        public string homeId;
+
+    }
+
+    #endregion
+
+    #region 鈻� 瀛愯处鍙风浉鍏� ____________________________
+
+    #region 娣诲姞銆佹煡璇€�佸垹闄ゅ瓙璐﹀彿
+    /// <summary>
+    /// ChildBaseObj
+    /// </summary>
+    [System.Serializable]
+    public class ChildBaseObj
+    {
+        /// <summary>
+        /// 瀛愯处鍙稩D childAccountId
+        /// </summary>
+        public string childAccountId;
+        /// <summary>
+        /// 浣忓畢
+        /// </summary>
+        public string homeId;
+    }
+    /// <summary>
+    /// 娣诲姞瀛愯处鍙�
+    /// </summary>
+    [System.Serializable]
+    public class ChildAddObj
+    {
+        /// <summary>
+        /// 
+        /// </summary>
+        public string homeId;
+        /// <summary>
+        /// 瀛愮敤鎴风殑鐢佃瘽鎴栬�呴偖绠�
+        /// </summary>
+        public string account;
+        /// <summary>
+        /// 瀛愯处鎴风被鍨� ORDINARY銆丏EBUG銆丄DMIN
+        /// </summary>
+        public string childAccountType;
+        ///// <summary>
+        ///// 鏄惁鍏佽杩滅▼鎺у埗 0:鍏佽 1:涓嶅厑璁�
+        ///// </summary>
+        //public bool isRemoteControl = true;
+        /// <summary>
+        /// 瀛愯处鍙锋樀绉�
+        /// </summary>
+        public string nickName;
+    }
+
+    /// <summary>
+    /// 鍒犻櫎瀛愯处鍙�
+    /// </summary>
+    [System.Serializable]
+    public class ChildDeleteObj: ChildBaseObj
+    {
+        
+    }
+
+    /// <summary>
+    /// HomeIdObj
+    /// </summary>
+    [System.Serializable]
+    public class HomeIdObj
+    {
+        /// <summary>
+        /// 浣忓畢ID
+        /// </summary>
+        public string homeId;
+    }
+
+
+
+    //鑾峰彇椤圭洰 (浣忓畢)涓嬮潰鐨勫瓙璐﹀彿
+    /// <summary>
+    /// 鑾峰彇鎴愬憳淇℃伅鐨勭粨鏋�
+    /// </summary>
+    ///  [Serializable]
+    public class SubAccountNewRes
+    {
+
+        /// <summary>
+        /// 
+        /// </summary>
+        public string id;
+        /// <summary>
+        /// 
+        /// </summary>
+        public string homeId;
+        /// <summary>
+        /// 
+        /// </summary>
+        public string homeRegionId;
+        /// <summary>
+        /// 
+        /// </summary>
+        public string childAccountId;
+        /// <summary>
+        /// 
+        /// </summary>
+        public string childAccountRegionId;
+        /// <summary>
+        /// 瀛愯处鎴风被鍨� ORDINARY銆丏EBUG銆丄DMIN
+        /// </summary>
+        public string childAccountType;
+        /// <summary>
+        /// 鏄惁鍏佽杩滅▼鎺у埗
+        /// </summary>
+        public bool isRemoteControl;
+        /// <summary>
+        /// 鏄电О1
+        /// </summary>
+        public string nickName;
+        /// <summary>
+        /// 
+        /// </summary>
+        public string createTime;
+
+
+    }
+
+    /// <summary>
+    /// 鏇存柊瀛愯处鍙峰娉ㄥ悕瀛�
+    /// </summary>
+    [System.Serializable]
+    public class UpdateChildNickNameObj: ChildBaseObj
+    {
+        /// <summary>
+        /// nickName
+        /// </summary>
+        public string nickName;
+    }
+
+    /// <summary>
+    /// 鏇存柊杩滅▼鎺у埗
+    /// </summary>
+    [System.Serializable]
+    public class UpdateRemoteObj : ChildBaseObj
+    {
+        /// <summary>
+        /// 鏄惁鍏佽杩滅▼鎺у埗
+        /// </summary>
+        public bool isRemoteControl;
+        /// <summary>
+        /// 瀛愯处鎴风被鍨� ORDINARY銆丏EBUG銆丄DMIN
+        /// </summary>
+        public string childAccountType;
+    }
+
+    /// <summary>
+    /// 淇敼鏄惁鍏佽鍒涘缓鍦烘櫙
+    /// </summary>
+    [System.Serializable]
+    public class UpdateChildAllowCreateSceneObj : ChildBaseObj
+    {
+        /// <summary>
+        /// 鏄惁鍏佽鍒涘缓鍦烘櫙
+        /// </summary>
+        public bool isAllowCreateScene;
+        
+    }
+    #endregion
+
+    #region 鏁版嵁鍒嗕韩
+    /// <summary>
+    /// 鏌ヨ鏌愪綇瀹呮煇瀛愯处鍙风殑鍒嗕韩鏂囦欢淇℃伅
+    /// </summary>
+    [System.Serializable]
+    public class HomeShareFindAll : ChildBaseObj
+    {
+
+    }
+
+
+    /// <summary>
+    /// 鏌ヨ鏌愪綇瀹呮煇瀛愯处鍙风殑鍒嗕韩鏂囦欢淇℃伅
+    /// </summary>
+    [System.Serializable]
+    public class ChildShareFileInfoRes
+    {
+        /// <summary>
+        /// 涓婚敭ID
+        /// </summary>
+        public string id;
+        /// <summary>
+        /// 浣忓畢ID
+        /// </summary>
+        public string homeId;
+        /// <summary>
+        /// 瀛愯处鍙稩D
+        /// </summary>
+        public string childAccountId;
+        /// <summary>
+        /// 鏂囦欢鍚�
+        /// </summary>
+        public string fileName;
+        /// <summary>
+        /// 鍒涘缓鏃堕棿
+        /// </summary>
+        public string createTime;
+
+    }
+
+    /// <summary>
+    /// 涓嬭浇鍒嗕韩
+    /// </summary>
+    [System.Serializable]
+    public class ShareFileDownObj
+    {
+        /// <summary>
+        /// 浣忓畢ID
+        /// </summary>
+        public string homeId;
+        /// <summary>
+        /// 鍒嗕韩鏂囦欢id
+        /// </summary>
+        public string homeShareId;
+
+    }
+
+    #endregion
+
+    #endregion
+
+    #region 鈻� GetMqttRemoteInfo ____________________________
+    [Serializable]
+    public class GetMqttRemoteInfoObj
+    {
+        /// <summary>
+        /// 骞冲彴鏍囩ず ClientId璐﹀彿鎷兼帴鐢�
+        /// </summary>
+        public string attachClientId;
+        /// <summary>
+        /// 浣忓畢绫诲瀷 1.ZIGBEE 2.BUSPRO 3.A 4.ALL
+        /// </summary>
+        public string homeType;
+
+    }
+    #endregion
+
+    #region 鈻� 鎺ㄩ�佺浉鍏� ____________________________ 
+    public class AddpushinfoObj
+    {
+        /// <summary>
+        /// 
+        /// </summary>
+        public string deviceName;
+        /// <summary>
+        /// Android銆両OS銆乄inPhone
+        /// </summary>
+        public string deviceType;
+        /// <summary>
+        /// 
+        /// </summary>
+        public bool produce = true;
+        /// <summary>
+        /// 鎺ㄩ�両D
+        /// </summary>
+        public string pushToken;
+        /// <summary>
+        /// 杞欢鏉ユ簮锛孍voyo銆丱N銆丱N_Plus
+        /// </summary>
+        public string software = SoftwareType.ON_Plus.ToString();
+    }
+
+    /// <summary>
+    /// 
+    /// </summary>
+    [System.Serializable]
+    public class PushIdObj
+    {
+        /// <summary>
+        /// 
+        /// </summary>
+        public string pushId;
+    }
+
+    /// <summary>
+    /// 
+    /// </summary>
+    [System.Serializable]
+    public class GetMessageListObj: PushIdObj
+    {
+        /// <summary>
+        /// 浣忓畢涓婚敭id
+        /// 1銆佷紶绌烘煡璇㈠叏閮紙闇�瑕佹牴鎹敤鎴峰煙鍚嶆煡璇級 2銆佷紶鎸囧畾浣忓畢ID鏌ヨ鎸囧畾璁板綍 锛堥渶瑕佹牴鎹綇瀹呭煙鍚嶆煡璇級
+        /// </summary>
+        public string homeId;
+    }
+
+    /// <summary>
+    /// 娑堟伅璁板綍Id
+    /// </summary>
+    [System.Serializable]
+    public class PushMsgIdObj
+    {
+        /// <summary>
+        /// 娑堟伅璁板綍Id
+        /// </summary>
+        public string msgId;
+    }
+    
+
+    ///// <summary>
+    ///// 鎺ㄩ�佹秷鎭垪琛�
+    ///// </summary>
+    //[System.Serializable]
+    //public class PushMesInfoRes
+    //{
+    //    /// <summary>
+    //    /// 
+    //    /// </summary>
+    //    public string pushId;
+    //    /// <summary>
+    //    /// 
+    //    /// </summary>
+    //    public string pushTitle;
+    //    /// <summary>
+    //    /// 
+    //    /// </summary>
+    //    public string pushContent;
+    //    /// <summary>
+    //    /// 
+    //    /// </summary>
+    //    public string pushType;
+    //    /// <summary>
+    //    /// 
+    //    /// </summary>
+    //    public bool isRead;
+    //    /// <summary>
+    //    /// 
+    //    /// </summary>
+    //    public string pushDatetime;
+    //}
+
+    #endregion
+
+    /// <summary>
+    /// 鎵嬫満鍖哄彿
+    /// </summary>
+    [System.Serializable]
+    public class AreaCodeRes
+    {
+        /// <summary>
+        /// 
+        /// </summary>
+        public string Name;
+        /// <summary>
+        /// 
+        /// </summary>
+        public string Code;
+        /// <summary>
+        /// 
+        /// </summary>
+        public string Id;
+    }
+
+    #region APP鐗堟湰妫�娴�
+    /// <summary>
+    /// ForceUpdateObj
+    /// </summary>
+    [System.Serializable]
+    public class ForceUpdateObj
+    {
+        /// <summary>
+        /// 鎵嬫満绫诲瀷
+        /// Android銆両OS銆乄inPhone
+        /// </summary>
+        public string DeviceType = PhoneDeviceType.Android.ToString();
+        /// <summary>
+        /// 
+        /// </summary>
+        public string RequestVersion = MainPage.VersionString;
+        /// <summary>
+        /// 杞欢鏉ユ簮锛孍voyo銆丱N銆丱N_Plus
+        /// </summary>
+        public string Software = SoftwareType.ON_Plus.ToString();
+        /// <summary>
+        /// 璇█
+        /// </summary>
+        public string LanguageType;
+    }
+
+    /// <summary>
+    /// 妫�娴嬫洿鏂拌繑鍥炲瓧娈�
+    /// </summary>
+    public class ForceUpdateInfo
+    {
+
+        ///// <summary>
+        ///// 闇�瑕佸己鍒舵洿鏂�
+        ///// </summary>
+        //public bool IsNeedForceUpdate;
+        /// <summary>
+        /// 1.鎻愮ず鏇存柊鐨勫唴瀹�
+        /// 2.寮哄埗鏇存柊鍘熷洜
+        /// 3.鎻愮ず鐨勯�氱煡鍐呭
+        /// </summary>
+        public string ReasonStr;
+        /// <summary>
+        /// O 涓嶉渶瑕佹洿鏂�
+        /// 1 鎻愮ず鏇存柊
+        /// 2 寮哄埗鏇存柊
+        /// 3 鎻愮ず閫氱煡鍐呭
+        /// </summary>
+        public int UpdateType;
+        /// <summary>
+        /// 褰撳墠鏂扮増鏈彿
+        /// </summary>
+        public string NewVersion;
+        /// <summary>
+        /// 褰撳墠鏂扮増鏈彿
+        /// </summary>
+        public string NewVersionUrl;
+
+    }
+
+    /// <summary>
+    /// 妫�娴婣PP鐗堟湰 鍝嶅簲鍙傛暟
+    /// 濡傛灉鏄痠OS杩斿洖iOS鐨勬渶鏂扮増鏈拰Url涓嬭浇鍦板潃
+    /// 濡傛灉鏄疉ndroid杩斿洖iOS鐨勬渶鏂扮増鏈拰Url涓嬭浇鍦板潃
+    /// </summary>
+    public class APPVersion
+    {
+        /// <summary>
+        /// 褰撳墠鏈�鏂扮殑鐗堟湰鍙�
+        /// </summary>
+        public string NewVersion;
+
+        /// <summary>
+        /// 褰撳墠鏈�鏂扮増鏈笅杞藉湴鍧�
+        /// </summary>
+        public string NewVersionUrl;
+    }
+
+
+    #endregion
+
+    #endregion
+
+
+
+    //#region 鏃ф帴鍙�
+    ///// <summary>
+    ///// 
+    ///// </summary>
+    //public class FindCityObj
+    //{
+    //    /// <summary>
+    //    /// 鍩庡競ID
+    //    /// </summary>
+    //    public string Cid;
+
+    //    /// <summary>
+    //    /// 
+    //    /// </summary>
+    //    public string Location;
+
+    //    /// <summary>
+    //    /// 鍩庡競
+    //    /// </summary>
+    //    public string City;
+
+    //    /// <summary>
+    //    /// 
+    //    /// </summary>
+    //    public string Province;
+
+    //    /// <summary>
+    //    /// 
+    //    /// </summary>
+    //    public string Country;
+
+
+    //    /// <summary>
+    //    /// 
+    //    /// </summary>
+    //    public string TimeZone;
+    //}
+    ///// <summary>
+    ///// 
+    ///// </summary>
+    //public class GetWeatherObj
+    //{
+
+
+    //    public string Temperature;
+
+    //    /// <summary>
+    //    /// 
+    //    /// </summary>
+    //    public string Humidity;
+
+    //    /// <summary>
+    //    /// 
+    //    /// </summary>
+    //    public string PM25;
+    //    /// <summary>
+    //    /// 
+    //    /// </summary>
+    //    public string Weather;
+
+    //}
+    //#endregion
+
+}
\ No newline at end of file
diff --git a/HDL_ON/DriverLayer/CommonPage.cs b/HDL_ON/DriverLayer/CommonPage.cs
deleted file mode 100644
index af0ff35..0000000
--- a/HDL_ON/DriverLayer/CommonPage.cs
+++ /dev/null
@@ -1,8 +0,0 @@
-锘�
-namespace HDL_ON.DAL
-{
-    public class CommonPage
-    {
-
-    }
-}
\ No newline at end of file
diff --git a/HDL_ON/DriverLayer/Control.cs b/HDL_ON/DriverLayer/Control.cs
deleted file mode 100644
index ea4b55e..0000000
--- a/HDL_ON/DriverLayer/Control.cs
+++ /dev/null
@@ -1,222 +0,0 @@
-using System;
-using System.Collections.Generic;
-using HDL_ON.Entity;
-
-namespace HDL_ON.DriverLayer
-{
-
-    /// <summary>
-    /// 閫氳鏂瑰紡
-    /// </summary>
-    public enum CommunicationMode
-    {
-        /// <summary>
-        /// 鏈湴udp
-        /// </summary>
-        local_BusUdp,
-        /// <summary>
-        /// 鏈湴tcp鏈嶅姟绔�
-        /// </summary>
-        tcp_local_server,
-        /// <summary>
-        /// 鏈湴tcp瀹㈡埛绔�
-        /// </summary>
-        tcp_local_client,
-    }
-
-
-
-    public class Control
-    {
-        static Control _control;
-        public static Control ins
-        {
-            get
-            {
-                if (_control == null)
-                {
-                    _control = new Control();
-                }
-                return _control;
-            }
-        }
-        /// <summary>
-        /// 閫氳鍦板潃IP
-        /// </summary>
-        public string reportIp = "255.255.255.255";
-        /// <summary>
-        /// tcp鏈嶅姟绔�
-        /// </summary>
-        public Control_TcpServer myTcpServer = null;
-        /// <summary>
-        /// tcp瀹㈡湇绔�
-        /// </summary>
-        public Control_TcpClient myTcpClient = null;
-        /// <summary>
-        /// 鏈湴udp
-        /// </summary>
-        public Control_Udp_Bus myUdp = null;
-
-        /// <summary>
-        /// 閫氳鏂瑰紡
-        /// </summary>
-        public CommunicationMode communicationMode;
-
-        /// <summary>
-        /// 鏀瑰彉閫氳鏂瑰紡
-        /// </summary>
-        public void ChangeCommunicationMode(CommunicationMode communicationMode)
-        {
-            this.communicationMode = communicationMode;
-
-
-            switch (this.communicationMode)
-            {
-                case CommunicationMode.local_BusUdp:
-                    if (myUdp == null)
-                    {
-                        myUdp = new Control_Udp_Bus();
-                    }
-                    UdpSocket._BusSocket.Start();
-                    if (myTcpServer != null)
-                    {
-                        myTcpClient.Close();
-                        myTcpClient = null;
-                    }
-                    if (myTcpClient != null)
-                    {
-                        myTcpClient.Close();
-                        myTcpClient = null;
-                    }
-                    break;
-                case CommunicationMode.tcp_local_server:
-                    if (myTcpServer == null)
-                    {
-                        myTcpServer = new Control_TcpServer();
-                        myTcpServer.OpenServer();
-                    }
-                    if (myTcpClient != null)
-                    {
-                        myTcpClient.Close();
-                        myTcpClient = null;
-                    }
-                    if(myUdp != null)
-                    {
-                        UdpSocket._BusSocket.Stop();
-                        myUdp = null;
-                    }
-                    break;
-                case CommunicationMode.tcp_local_client:
-                    if (myTcpClient == null)
-                    {
-                        myTcpClient = new Control_TcpClient(reportIp);
-                        myTcpClient.Connect();
-                    }
-                    if (myTcpServer != null)
-                    {
-                        myTcpClient.Close();
-                        myTcpClient = null;
-                    }
-                    if (myUdp != null)
-                    {
-                        UdpSocket._BusSocket.Stop();
-                        myUdp = null;
-                    }
-                    break;
-            }
-        }
-
-        /// <summary>
-        /// 鍦烘櫙鎺у埗鍏ュ彛
-        /// </summary>
-        public void ControlScene(Scene scene)
-        {
-            if(myUdp!=null)
-            {
-                myUdp.ControlBusScenes(scene);
-            }
-            if(myTcpClient!= null)
-            {
-                ControlAProtocolScene(scene);
-            }
-        }
-
-        /// <summary>
-        /// 鍙戦�佸懡浠�
-        /// 鑷姩鍒ゆ柇鏄惁涓篈鍗忚璁惧锛�
-        /// 涓嶆槸A鍗忚锛岃嚜鍔ㄨ浆鍖朾us鍛戒护鏁版嵁
-        /// </summary>
-        /// <param name="commandString"></param>
-        /// <param name="function"></param>
-        /// <returns></returns>
-        public void SendWriteCommand(Function function, Dictionary<string, string> commandDictionary)
-        {
-            function.usageCount++;
-            function.refreshTime = DateTime.Now;
-            if (DB_ResidenceData.residenceData.GatewayType == 0)
-            {
-                try
-                {
-                    if(myUdp != null)
-                    {
-                        myUdp.WriteBusData(function, commandDictionary);
-                    }
-                }
-                catch (Exception ex)
-                {
-                    MainPage.Log($"鍙戦�佹暟鎹紓甯�: {ex.Message}");
-                }
-            }
-            else
-            {
-                if (myTcpClient != null)
-                {
-                    var sendDataObj = function.GetControlSendData(commandDictionary);
-                    var sendJson = Newtonsoft.Json.JsonConvert.SerializeObject(sendDataObj);
-                    var sendBytes = System.Text.Encoding.UTF8.GetBytes(sendJson);
-                    myTcpClient.SendMessage(sendBytes);
-                }
-            }
-        }
-
-        /// <summary>
-        /// 鍙戦�佽鍙栧懡浠�
-        /// 鑷姩鍒ゆ柇鏄惁涓篈鍗忚璁惧
-        /// </summary>
-        public void SendReadCommand(Function function)
-        {
-            function.refreshTime = DateTime.Now;
-            if (function.bus_Data != null)
-            {
-                try
-                {
-                    //ReadBusData(function);
-                }
-                catch (Exception ex)
-                {
-                    MainPage.Log($"鍙戦�佹暟鎹紓甯�: {ex.Message}");
-                }
-            }
-            else
-            {
-                //var commandObj = function.GetSendJObject(CommandType_A.read);
-                //var commandString = Newtonsoft.Json.JsonConvert.SerializeObject(commandObj);
-                //var commandBytes = System.Text.Encoding.UTF8.GetBytes(commandString);
-                //MqttCommon.MqttRemoteSend(commandBytes);
-            }
-        }
-
-        /// <summary>
-        /// 鎺у埗a鍗忚鍦烘櫙
-        /// </summary>
-        /// <param name="scene"></param>
-        static void ControlAProtocolScene(Scene scene)
-        {
-            var sendSidObj = new AProtocolSendingObject();
-            sendSidObj.time_stamp = "";
-            sendSidObj.type = "device_sid";
-            sendSidObj.command = "get_list_response";
-        }
-
-    }
-}
\ No newline at end of file
diff --git a/HDL_ON/Entity/DB_ResidenceData.cs b/HDL_ON/Entity/DB_ResidenceData.cs
index 3fc2293..32c04e4 100644
--- a/HDL_ON/Entity/DB_ResidenceData.cs
+++ b/HDL_ON/Entity/DB_ResidenceData.cs
@@ -1,7 +1,5 @@
 锘縰sing System;
 using System.Collections.Generic;
-using HDL_ON.DAL;
-using HDL_ON.DAL.Net;
 using Shared;
 
 namespace HDL_ON.Entity
@@ -11,7 +9,10 @@
         public DB_ResidenceData()
         {
         }
-
+        /// <summary>
+        /// 涓讳汉token
+        /// </summary>
+        public string MasterToken;
         /// <summary>
         /// 0:bus缃戝叧
         /// 1:A鍗忚缃戝叧
@@ -30,11 +31,11 @@
                 }
                 else
                 {
-                    var curRegion = MainPage.LoginUser.regionList.Find((obj) => obj.RegionID == CurReginID);
+                    var curRegion =  UserInfo.Current.regionList.Find((obj) => obj.RegionID == CurReginID);
                     //if (curRegion == null)
                     //{
-                    //    CurReginID = MainPage.LoginUser.regionList[0].RegionID;
-                    //    return MainPage.LoginUser.regionList[0];
+                    //    CurReginID =  UserInfo.Current.regionList[0].RegionID;
+                    //    return  UserInfo.Current.regionList[0];
                     //}
                     return curRegion;
                 }
@@ -96,8 +97,8 @@
                         {
                             sid = "030101123456780202010005ABCD",
                             name = "鐏厜1",
-                            function = new List<Trait>() {
-                                        new Trait { name="on_off", max=100,min = 0, value_key= new List<string> { "on","off"} },
+                            function = new List<FunctionAttributes>() {
+                                        new FunctionAttributes { key="on_off", max=100,min = 0, value= new List<string> { "on","off"} },
                                         },
                             roomIdList = new List<string>() { "0001" },
                             bus_Data = new BusData
@@ -406,7 +407,7 @@
             ins_Function = null;
             if (MainPage.IsRemote)
             {
-                Mqtt_Cloud.DisConnectRemoteMqttClient("閫�鍑虹櫥褰曪紝鎴栬�呭垏鎹綇瀹�");
+                DAL.Mqtt.MqttClient.DisConnectRemote("閫�鍑虹櫥褰曪紝鎴栬�呭垏鎹綇瀹�");
             }
         }
 
@@ -417,7 +418,7 @@
         /// <summary>
         /// 褰撳墠浣忓畢鐨勭綉鍏矼AC
         /// </summary>
-        public string residenceGatewayMAC = "0281B9078C000000";// "00964E19C4467B1E";
+        public string residenceGatewayMAC = "4E47323347591243";//"0281B9078C000000";// "00964E19C4467B1E";
         /// <summary>
         /// 淇濆瓨浣忓畢鏁版嵁
         /// </summary>
@@ -669,7 +670,7 @@
                             case FunctionCategory.Thermostat:
                                 if (DB_ResidenceData.residenceData.GatewayType == 0)
                                 {
-                                    DriverLayer.Control.ins.SendReadCommand(function);
+                                    DriverLayer.Control.Ins.SendReadCommand(function);
                                 }
                                 break;
                         }
@@ -687,6 +688,11 @@
         #endregion
 
         #region oid鍒楄〃 a鍗忚杞琤us鍗忚鎺у埗浣跨敤
+        /// <summary>
+        /// oid鏁版嵁淇濆瓨鐨勬枃浠跺悕
+        /// </summary>
+        [Newtonsoft.Json.JsonIgnore]
+        public static string OidSavePathName = "AProtocolData_FunctionOid";
         static List<FunctionOid> ins_OidList;
         public static List<FunctionOid> functionOidList
         {
@@ -694,7 +700,7 @@
             {
                 if (ins_OidList == null)
                 {
-                    var bytes = FileUtils.ReadFile("AProtocolData_FunctionOid");
+                    var bytes = FileUtils.ReadFile(OidSavePathName);
                     if (bytes == null || bytes.Length == 0)
                     {
                         ins_OidList = new List<FunctionOid>();
@@ -726,12 +732,11 @@
         /// <summary>
         /// 淇濆瓨oid鏁版嵁锛屾瘡娆′繚瀛橀兘浼氳鐩�
         /// </summary>
-        public static void SaveFunctionOidJsonDataList(string oidJsonString)
+        public static void SaveOidList(string oidJsonString)
         {
-            oidJsonString = oidJsonString.Replace("add", "get_list_response");
             var oidBytes = System.Text.Encoding.UTF8.GetBytes(oidJsonString);
 
-            FileUtils.WriteFileByBytes("AProtocolData_FunctionOid", oidBytes);
+            FileUtils.WriteFileByBytes(OidSavePathName, oidBytes);
         }
 
         #endregion
diff --git a/HDL_ON/Entity/Device/DeviceModule.cs b/HDL_ON/Entity/Device/DeviceModule.cs
index c110801..193e69d 100644
--- a/HDL_ON/Entity/Device/DeviceModule.cs
+++ b/HDL_ON/Entity/Device/DeviceModule.cs
@@ -14,6 +14,10 @@
         /// </summary>
         public string device_mac = "0281B9078C000000";
         /// <summary>
+        /// 缃戝叧ID
+        /// </summary>
+        public string gatewayId = "";
+        /// <summary>
         /// 璁惧绫诲瀷
         /// 缃戝叧鐩墠涓衡�溾��
         /// 璇煶闈㈡澘:4
@@ -21,12 +25,20 @@
         public int gateway_type = 0;
         public string model_id = "";
         public string device_name = "hdl_bus_gatway";
-        public string model_type = "HDL GWA01IP";
         public string ip_address = "172.16.2.202";
         public string local_data_encode = "false";
         public string access_mode = "LAN";
         public string oid = "";
-
-
+        public string device_model = "HDL-MGWIP.430";
+        /// <summary>
+        /// 璁惧瀛愮綉鍙疯澶囧彿锛�
+        /// FFFF
+        /// </summary>
+        public string addresses = "";
+        /// <summary>
+        /// 璁惧椹卞姩浠g爜
+        /// 鍖哄垎鏄痓us璁惧锛岃繕鏄痥nx璁惧
+        /// </summary>
+        public string driver_code = "";
     }
 }
diff --git a/HDL_ON/Entity/Enumerative/MyEnum.cs b/HDL_ON/Entity/Enumerative/MyEnum.cs
index 98a240f..233725a 100644
--- a/HDL_ON/Entity/Enumerative/MyEnum.cs
+++ b/HDL_ON/Entity/Enumerative/MyEnum.cs
@@ -53,7 +53,7 @@
     }
 
     /// <summary>
-    /// 鍔熻兘绫诲埆
+    /// 鍔熻兘绫诲瀷
     /// </summary>
     public enum FunctionType
     {
@@ -86,7 +86,7 @@
     }
 
     /// <summary>
-    /// 鍔熻兘绫诲瀷
+    /// 鍔熻兘绫诲埆
     /// </summary>
     public enum FunctionCategory
     {
diff --git a/HDL_ON/Entity/Function/AC.cs b/HDL_ON/Entity/Function/AC.cs
index 671f080..f720477 100644
--- a/HDL_ON/Entity/Function/AC.cs
+++ b/HDL_ON/Entity/Function/AC.cs
@@ -55,7 +55,7 @@
                 try
                 {
                     byte index = 0;
-                    switch (trait_mode.value.ToString())
+                    switch (trait_mode.curValue.ToString())
                     {
                         case "auto":
                             index = 3;
@@ -89,22 +89,22 @@
                 switch (value)
                 {
                     case 0:
-                        trait_mode.value = "cool";
+                        trait_mode.curValue = "cool";
                         break;
                     case 1:
-                        trait_mode.value = "heat";
+                        trait_mode.curValue = "heat";
                         break;
                     case 2:
-                        trait_mode.value = "fan";
+                        trait_mode.curValue = "fan";
                         break;
                     case 3:
-                        trait_mode.value = "auto";
+                        trait_mode.curValue = "auto";
                         break;
                     case 4:
-                        trait_mode.value = "dry";
+                        trait_mode.curValue = "dry";
                         break;
                     default:
-                        trait_mode.value = "cool";
+                        trait_mode.curValue = "cool";
                         break;
 
                 }
@@ -122,7 +122,7 @@
                 try
                 {
                     byte index = 0;
-                    switch (trait_fan.value.ToString())
+                    switch (trait_fan.curValue.ToString())
                     {
                         case "high":
                             index = 1;
@@ -153,129 +153,129 @@
                 switch (value)
                 {
                     case 0:
-                        trait_fan.value = "auto";
+                        trait_fan.curValue = "auto";
                         break;
                     case 1:
-                        trait_fan.value = "high";
+                        trait_fan.curValue = "high";
                         break;
                     case 2:
-                        trait_fan.value = "medium";
+                        trait_fan.curValue = "medium";
                         break;
                     case 3:
-                        trait_fan.value = "low";
+                        trait_fan.curValue = "low";
                         break;
                     default:
-                        trait_fan.value = "high";
+                        trait_fan.curValue = "high";
                         break;
                 }
             }
         }
 
-        Trait _trait_mode;
+        FunctionAttributes _trait_mode;
         /// <summary>
         /// 妯″紡灞炴��
         /// </summary>
         [Newtonsoft.Json.JsonIgnore]
-        public Trait trait_mode
+        public FunctionAttributes trait_mode
         {
             get
             {
                 if (_trait_mode == null)
                 {
-                    _trait_mode = function.Find((obj) => obj.name == "mode");
+                    _trait_mode = function.Find((obj) => obj.key == "mode");
                     //鎵句笉鍒板睘鎬ч渶瑕佸0鏄庝竴涓紝闃叉鎶ラ敊闂��
                     if (_trait_mode == null)
                     {
-                        _trait_mode = new Trait()
+                        _trait_mode = new FunctionAttributes()
                         {
-                            name = "mode",
-                            value_key = new List<string> { "auto", "cool", "heat", "dry", "fan" },
+                            key = "mode",
+                            value = new List<string> { "auto", "cool", "heat", "dry", "fan" },
                             max = 4,
                             min = 0,
                         };
                     }
-                    _trait_mode.value = _trait_mode.value_key.Count > 0 ? _trait_mode.value_key[0] : "";
+                    _trait_mode.curValue = _trait_mode.value.Count > 0 ? _trait_mode.value[0] : "";
                 }
                 return _trait_mode;
             }
         }
 
-        Trait _trait_fan;
+        FunctionAttributes _trait_fan;
         [Newtonsoft.Json.JsonIgnore]
-        public Trait trait_fan
+        public FunctionAttributes trait_fan
         {
             get
             {
                 if (_trait_fan == null)
                 {
-                    _trait_fan = function.Find((obj) => obj.name == "fan");
+                    _trait_fan = function.Find((obj) => obj.key == "fan");
                     //鎵句笉鍒板睘鎬ч渶瑕佸0鏄庝竴涓紝闃叉鎶ラ敊闂��
                     if (_trait_fan == null)
                     {
-                        _trait_fan = new Trait()
+                        _trait_fan = new FunctionAttributes()
                         {
-                            name = "fan",
-                            value_key = new List<string> { "high", "medium", "low", "auto" },
+                            key = "fan",
+                            value = new List<string> { "high", "medium", "low", "auto" },
                             max = 3,
                             min = 0,
                         };
                     }
-                    _trait_fan.value = _trait_fan.value_key.Count > 0 ? _trait_fan.value_key[0] : "";
+                    _trait_fan.curValue = _trait_fan.value.Count > 0 ? _trait_fan.value[0] : "";
                 }
                 return _trait_fan;
             }
         }
 
-        Trait _trait_temp;
+        FunctionAttributes _trait_temp;
         /// <summary>
         /// 褰撳墠绌鸿皟娓╁害
         /// </summary>
         [Newtonsoft.Json.JsonIgnore]
-        public Trait trait_temp
+        public FunctionAttributes trait_temp
         {
             get
             {
                 if (_trait_temp == null)
                 {
-                    _trait_temp = function.Find((obj) => obj.name == "set_temperature");
+                    _trait_temp = function.Find((obj) => obj.key == "set_temperature");
                     //鎵句笉鍒板睘鎬ч渶瑕佸0鏄庝竴涓紝闃叉鎶ラ敊闂��
                     if (_trait_temp == null)
                     {
-                        _trait_temp = new Trait()
+                        _trait_temp = new FunctionAttributes()
                         {
-                            name = "set_temperature",
-                            value_key = new List<string> { },
+                            key = "set_temperature",
+                            value = new List<string> { },
                             max = 32,
                             min = 16,
                         };
                     }
-                    _trait_temp.value = 16;
+                    _trait_temp.curValue = 16;
                 }
                 return _trait_temp;
             }
         }
 
-        Trait _trait_swting;
+        FunctionAttributes _trait_swting;
         [Newtonsoft.Json.JsonIgnore]
-        public Trait trait_swting
+        public FunctionAttributes trait_swting
         {
             get
             {
                 if (_trait_swting == null)
                 {
-                    _trait_swting = function.Find((obj) => obj.name == "swting");
+                    _trait_swting = function.Find((obj) => obj.key == "swting");
                     //鎵句笉鍒板睘鎬ч渶瑕佸0鏄庝竴涓紝闃叉鎶ラ敊闂��
                     if (_trait_swting == null)
                     {
-                        _trait_swting = new Trait()
+                        _trait_swting = new FunctionAttributes()
                         {
-                            name = "swting",
-                            value_key = new List<string> { "up", "down", "left", "right" },
+                            key = "swting",
+                            value = new List<string> { "up", "down", "left", "right" },
                             max = 3,
                             min = 0,
                         };
                     }
-                    _trait_swting.value = _trait_swting.value_key.Count > 0 ? _trait_swting.value_key[trait_mode.min] : "";
+                    _trait_swting.curValue = _trait_swting.value.Count > 0 ? _trait_swting.value[trait_mode.min] : "";
                 }
                 return _trait_swting;
             }
@@ -290,7 +290,7 @@
             {
                 try
                 {
-                    return trait_swting.value_key;
+                    return trait_swting.value;
                 }
                 catch (Exception ex)
                 {
@@ -316,7 +316,7 @@
                 try
                 {
                     var imagePath = "FunctionIcon/AC/CoolIcon.png";
-                    switch (trait_mode.value.ToString())
+                    switch (trait_mode.curValue.ToString())
                     {
                         case "auto":
                             imagePath = "FunctionIcon/AC/AutoIcon.png";
@@ -357,7 +357,7 @@
                 try
                 {
                     var imagePath = "FunctionIcon/AC/WindHighIcon.png";
-                    switch (trait_fan.value.ToString())
+                    switch (trait_fan.curValue.ToString())
                     {
                         case "high":
                             imagePath = "FunctionIcon/AC/WindHighIcon.png";
diff --git a/HDL_ON/Entity/Function/Curtain.cs b/HDL_ON/Entity/Function/Curtain.cs
index 6dded34..97c1c8c 100644
--- a/HDL_ON/Entity/Function/Curtain.cs
+++ b/HDL_ON/Entity/Function/Curtain.cs
@@ -17,7 +17,7 @@
         {
         }//percent
         [Newtonsoft.Json.JsonIgnore]
-        public Trait trait_percent;
+        public FunctionAttributes trait_percent;
         /// <summary>
         /// 寮�鍏崇櫨鍒嗘瘮
         /// 0-100
@@ -31,20 +31,20 @@
                 {
                     if(trait_percent==null)
                     {
-                        trait_percent = function.Find((obj) => obj.name == "percent");
+                        trait_percent = function.Find((obj) => obj.key == "percent");
                         if (trait_percent == null)
                         {
-                            trait_percent = new Trait()
+                            trait_percent = new FunctionAttributes()
                             {
-                                name = "percent",
-                                value_key = new List<string> { "up", "down" },
+                                key = "percent",
+                                value = new List<string> { "up", "down" },
                                 max = 100,
                                 min = 0,
                             };
                         }
-                        trait_percent.value = trait_percent.min;
+                        trait_percent.curValue = trait_percent.min;
                     }
-                    return Convert.ToInt32( trait_percent.value);
+                    return Convert.ToInt32( trait_percent.curValue);
                 }
                 catch
                 {
@@ -56,7 +56,7 @@
             {
                 try
                 {
-                    trait_percent.value = value;
+                    trait_percent.curValue = value;
                 }
                 catch
                 {
diff --git a/HDL_ON/Entity/Function/Fan.cs b/HDL_ON/Entity/Function/Fan.cs
index cee20c4..6a0bc56 100644
--- a/HDL_ON/Entity/Function/Fan.cs
+++ b/HDL_ON/Entity/Function/Fan.cs
@@ -10,7 +10,7 @@
         }
 
         [Newtonsoft.Json.JsonIgnore]
-        public Trait trait_openLevel;
+        public FunctionAttributes trait_openLevel;
         /// <summary>
         /// 妗d綅
         /// </summary>
@@ -23,20 +23,20 @@
                 {
                     if (trait_openLevel == null)
                     {
-                        trait_openLevel = function.Find((obj) => obj.name == "openLevel");
+                        trait_openLevel = function.Find((obj) => obj.key == "openLevel");
                         if (trait_openLevel == null)
                         {
-                            trait_openLevel = new Trait()
+                            trait_openLevel = new FunctionAttributes()
                             {
-                                name = "openLevel",
-                                value_key = new List<string> { "up", "down" },
+                                key = "openLevel",
+                                value = new List<string> { "up", "down" },
                                 max = 7,
                                 min = 0,
                             };
                         }
-                        trait_openLevel.value = trait_openLevel.min;
+                        trait_openLevel.curValue = trait_openLevel.min;
                     }
-                    return Convert.ToInt32(trait_openLevel.value);
+                    return Convert.ToInt32(trait_openLevel.curValue);
                 }
                 catch
                 {
@@ -48,7 +48,7 @@
             {
                 try
                 {
-                    trait_openLevel.value = value;
+                    trait_openLevel.curValue = value;
                 }
                 catch
                 {
diff --git a/HDL_ON/Entity/Function/FloorHeating.cs b/HDL_ON/Entity/Function/FloorHeating.cs
index 3cf3d09..a3af174 100644
--- a/HDL_ON/Entity/Function/FloorHeating.cs
+++ b/HDL_ON/Entity/Function/FloorHeating.cs
@@ -48,30 +48,30 @@
                 }
             }
         }
-        Trait _trait_mode;
+        FunctionAttributes _trait_mode;
         /// <summary>
         /// 妯″紡灞炴��
         /// </summary>
         [Newtonsoft.Json.JsonIgnore]
-        public Trait trait_mode
+        public FunctionAttributes trait_mode
         {
             get
             {
                 if (_trait_mode == null)
                 {
-                    _trait_mode = function.Find((obj) => obj.name == "mode");
+                    _trait_mode = function.Find((obj) => obj.key == "mode");
                     //鎵句笉鍒板睘鎬ч渶瑕佸0鏄庝竴涓紝闃叉鎶ラ敊闂��
                     if (_trait_mode == null)
                     {
-                        _trait_mode = new Trait()
+                        _trait_mode = new FunctionAttributes()
                         {
-                            name = "mode",
-                            value_key = new List<string> { "day", "night", "away", "normal", "timer" },
+                            key = "mode",
+                            value = new List<string> { "day", "night", "away", "normal", "timer" },
                             max = 4,
                             min = 0,
                         };
                     }
-                    _trait_mode.value = _trait_mode.value_key.Count > 0 ? _trait_mode.value_key[0] : "";
+                    _trait_mode.curValue = _trait_mode.value.Count > 0 ? _trait_mode.value[0] : "";
                 }
                 return _trait_mode;
             }
@@ -95,7 +95,7 @@
                 try
                 {
                     byte index = 0;
-                    switch (trait_mode.value.ToString())
+                    switch (trait_mode.curValue.ToString())
                     {
                         case "day":
                             index = 2;
@@ -129,22 +129,22 @@
                 switch (value)
                 {
                     case 5:
-                        trait_mode.value = "timer";
+                        trait_mode.curValue = "timer";
                         break;
                     case 1:
-                        trait_mode.value = "normal";
+                        trait_mode.curValue = "normal";
                         break;
                     case 2:
-                        trait_mode.value = "day";
+                        trait_mode.curValue = "day";
                         break;
                     case 3:
-                        trait_mode.value = "night";
+                        trait_mode.curValue = "night";
                         break;
                     case 4:
-                        trait_mode.value = "away";
+                        trait_mode.curValue = "away";
                         break;
                     default:
-                        trait_mode.value = "cool";
+                        trait_mode.curValue = "cool";
                         break;
 
                 }
@@ -164,32 +164,32 @@
         public int indoorTemp = 20;
 
 
-        Trait _trait_temp;
+        FunctionAttributes _trait_temp;
         /// <summary>
         /// 褰撳墠娓╁害
         /// </summary>/// <summary>
         /// 褰撳墠绌鸿皟娓╁害
         /// </summary>
         [Newtonsoft.Json.JsonIgnore]
-        public Trait trait_temp
+        public FunctionAttributes trait_temp
         {
             get
             {
                 if (_trait_temp == null)
                 {
-                    _trait_temp = function.Find((obj) => obj.name == "set_temperature");
+                    _trait_temp = function.Find((obj) => obj.key == "set_temperature");
                     //鎵句笉鍒板睘鎬ч渶瑕佸0鏄庝竴涓紝闃叉鎶ラ敊闂��
                     if (_trait_temp == null)
                     {
-                        _trait_temp = new Trait()
+                        _trait_temp = new FunctionAttributes()
                         {
-                            name = "set_temperature",
-                            value_key = new List<string> { },
+                            key = "set_temperature",
+                            value = new List<string> { },
                             max = 30,
                             min = 5,
                         };
                     }
-                    _trait_temp.value = 16;
+                    _trait_temp.curValue = 16;
                 }
                 return _trait_temp;
             }
@@ -205,7 +205,7 @@
                 try
                 {
                     var imagePath = "FunctionIcon/AC/HeatingIcon.png";
-                    switch (trait_mode.value)
+                    switch (trait_mode.curValue)
                     {
                         case "day":
                             imagePath = "FunctionIcon/AC/HeatingIcon.png";
diff --git a/HDL_ON/Entity/Function/Function.cs b/HDL_ON/Entity/Function/Function.cs
index b988436..be61b11 100644
--- a/HDL_ON/Entity/Function/Function.cs
+++ b/HDL_ON/Entity/Function/Function.cs
@@ -1,5 +1,6 @@
 锘縰sing System;
 using System.Collections.Generic;
+using HDL_ON.DriverLayer;
 using Shared;
 
 namespace HDL_ON.Entity
@@ -54,7 +55,7 @@
         /// 濡傦細鏄疉C鍔熻兘锛氱壒鎬э細on_off,mode,fan,temperature
         /// attri
         /// </summary>
-        public List<Trait> function = new List<Trait>();
+        public List<FunctionAttributes> function = new List<FunctionAttributes>();
 
         /// <summary>
         /// 鎴块棿ID鍒楄〃
@@ -145,27 +146,27 @@
         [Newtonsoft.Json.JsonIgnore]
         public string lastState = "";
 
-        Trait _trait_on_off;
+        FunctionAttributes _trait_on_off;
         [Newtonsoft.Json.JsonIgnore]
-        public Trait trait_on_off
+        public FunctionAttributes trait_on_off
         {
             get
             {
                 if (_trait_on_off == null)
                 {
-                    _trait_on_off = function.Find((obj) => obj.name == "on_off");
+                    _trait_on_off = function.Find((obj) => obj.key == "on_off");
                     //鎵句笉鍒板睘鎬ч渶瑕佸0鏄庝竴涓紝闃叉鎶ラ敊闂��
                     if (_trait_on_off == null)
                     {
-                        _trait_on_off = new Trait()
+                        _trait_on_off = new FunctionAttributes()
                         {
-                            name = "on_off",
-                            value_key = new List<string> { "on", "off" },
+                            key = "on_off",
+                            value = new List<string> { "on", "off" },
                             max = 1,
                             min = 0,
                         };
                     }
-                    _trait_on_off.value = "on";
+                    _trait_on_off.curValue = "on";
                 }
                 return _trait_on_off;
             }
@@ -255,24 +256,24 @@
         public AprotocolControlObj GetControlSendData(Dictionary<string, string> commandDictionary)
         {
             var sendDataObj = new AprotocolControlObj();
-            sendDataObj.from_oid = "";
-            sendDataObj.to_oid = "";
-            sendDataObj.time_stamp = "";
-            sendDataObj.type = "device_sid";
-            sendDataObj.command = "write";
+            sendDataObj.id = Control.Ins.msg_id.ToString();
+            sendDataObj.time_stamp = Control.Ins.Get_TimeStamp();
 
-            var acoList = new AprotocolControlData();
-            acoList.sid = sid;
-            var aco = new AprotocolControlAttribute();
+
+            var acd = new AprotocolControlData();
+            acd.sid = sid;
+#if DEBUG
+            acd.sid = "0001016FB925AB02020100010101";
+#endif
+            var aca = new AprotocolControlAttribute();
             foreach(var dic in commandDictionary)
             {
-                aco.name = dic.Key;
-                aco.value = dic.Value;
-                acoList.function.Add(aco);
+                aca.key = dic.Key;
+                aca.value = dic.Value;
+                acd.status.Add(aca);
             }
 
-            sendDataObj.objects.Add(acoList);
-
+            sendDataObj.objects.Add(acd);
 
             return sendDataObj;
         }
@@ -285,11 +286,8 @@
     {
         public List<AprotocolControlData> objects = new List<AprotocolControlData>();
 
-        public string from_oid = "";
-        public string to_oid = "";
         public string time_stamp = "";
-        public string type = "";
-        public string command = "";
+        public string id = "";
     }
     /// <summary>
     /// A鍗忚鎺у埗鏁版嵁
@@ -298,14 +296,14 @@
     {
         
         public string sid = "";
-        public List<AprotocolControlAttribute> function = new List<AprotocolControlAttribute>();
+        public List<AprotocolControlAttribute> status = new List<AprotocolControlAttribute>();
     }
     /// <summary>
     /// A鍗忚鎺у埗灞炴�у璞�
     /// </summary>
     public class AprotocolControlAttribute
     {
-        public string name;
+        public string key;
         public string value;
     }
 
@@ -313,16 +311,16 @@
     /// 鍔熻兘灞炴��
     /// 灞炴�у瓧娈佃В鏋愶細attri :灞炴�у唴瀹癸紝value 灞炴�х殑鍊硷紝max 鏈�澶у�� min 鏈�灏忓��
     /// </summary>
-    public class Trait
+    public class FunctionAttributes
     {
         /// <summary>
-        /// 灞炴�у悕绉�
+        /// 灞炴�ч敭鍚�
         /// </summary>
-        public string name;
+        public string key;
         /// <summary>
         /// 灞炴�х殑鍊煎垪琛�
         /// </summary>
-        public List<string> value_key = new List<string>();
+        public List<string> value = new List<string>();
         /// <summary>
         /// 鏈�澶у��
         /// </summary>
@@ -340,7 +338,7 @@
         /// <summary>
         /// 褰撳墠鍊�
         /// </summary>
-        public object value = new object();
+        public object curValue = new object();
 
 
         //----app鑷畾涔�
@@ -358,7 +356,7 @@
                     return _uintString;
                 }
                 var us = "";
-                switch (name)
+                switch (key)
                 {
                     case "temperature":
                     case "set_temperature":
@@ -383,7 +381,7 @@
             get
             {
                 string text = "";
-                switch (name)
+                switch (key)
                 {
                     case "on_off":
                         text = Language.StringByID(StringId.OnOff);
@@ -447,7 +445,7 @@
         /// </summary>
         public string GetCurValueText()
         {
-            return GetValueText(value.ToString());
+            return GetValueText(curValue.ToString());
         }
 
         /// <summary>
@@ -458,7 +456,7 @@
         {
             string text = "";
             value = value.Replace("{}", "");
-            switch (name)
+            switch (key)
             {
                 case "on_off":
                     text = value == "on" ? Language.StringByID(StringId.On) : Language.StringByID(StringId.OFF);
@@ -469,7 +467,7 @@
                 case "percent":
                     if (value == "")
                     {
-                        this.value = this.min;
+                        this.curValue = this.min;
                         text = this.min.ToString();
                     }
                     else
@@ -514,21 +512,21 @@
                             text = Language.StringByID(StringId.Timer);
                             break;
                         default:
-                            if (this.value_key.Contains("cool"))
+                            if (this.value.Contains("cool"))
                             {
-                                this.value = "cool";
+                                this.curValue = "cool";
                                 text = Language.StringByID(StringId.Cool);
                             }
-                            else if (this.value_key.Contains("day"))
+                            else if (this.value.Contains("day"))
                             {
-                                this.value = "day";
+                                this.curValue = "day";
                                 text = Language.StringByID(StringId.Day);
                             }
                             else
                             {
-                                foreach (var v in this.value_key)
+                                foreach (var v in this.value)
                                 {
-                                    this.value = v;
+                                    this.curValue = v;
                                     text = GetCurValueText();
                                 }
                             }
@@ -551,16 +549,16 @@
                             text = Language.StringByID(StringId.Auto);
                             break;
                         default:
-                            if (this.value_key.Contains("low"))
+                            if (this.value.Contains("low"))
                             {
-                                this.value = "low";
+                                this.curValue = "low";
                                 text = Language.StringByID(StringId.LowWindSpeed);
                             }
                             else
                             {
-                                foreach (var v in this.value_key)
+                                foreach (var v in this.value)
                                 {
-                                    this.value = v;
+                                    this.curValue = v;
                                     text = GetCurValueText();
                                 }
                             }
diff --git a/HDL_ON/Entity/Function/Light.cs b/HDL_ON/Entity/Function/Light.cs
index 2dfa921..2092e93 100644
--- a/HDL_ON/Entity/Function/Light.cs
+++ b/HDL_ON/Entity/Function/Light.cs
@@ -21,7 +21,7 @@
         }
 
         [Newtonsoft.Json.JsonIgnore]
-        Trait trait_brightness;
+        FunctionAttributes trait_brightness;
         /// <summary>
         /// 浜害鍊�
         /// </summary>
@@ -32,21 +32,21 @@
             {
                 if (trait_brightness == null)
                 {
-                    trait_brightness = function.Find((obj) => obj.name == "brightness");
+                    trait_brightness = function.Find((obj) => obj.key == "brightness");
                     //鎵句笉鍒板睘鎬ч渶瑕佸0鏄庝竴涓紝闃叉鎶ラ敊闂��
                     if (trait_brightness == null)
                     {
-                        trait_brightness = new Trait()
+                        trait_brightness = new FunctionAttributes()
                         {
-                            name = "brightness",
-                            value_key = new List<string> { "up", "down" },
+                            key = "brightness",
+                            value = new List<string> { "up", "down" },
                             max = 100,
                             min = 0,
                         };
                     }
-                    trait_brightness.value = trait_brightness.min;
+                    trait_brightness.curValue = trait_brightness.min;
                 }
-                return Convert.ToInt32(trait_brightness.value);
+                return Convert.ToInt32(trait_brightness.curValue);
             }
             set
             {
@@ -54,21 +54,21 @@
                 {
                     if (trait_brightness == null)
                     {
-                        trait_brightness = function.Find((obj) => obj.name == "brightness");
+                        trait_brightness = function.Find((obj) => obj.key == "brightness");
                         //鎵句笉鍒板睘鎬ч渶瑕佸0鏄庝竴涓紝闃叉鎶ラ敊闂��
                         if (trait_brightness == null)
                         {
-                            trait_brightness = new Trait()
+                            trait_brightness = new FunctionAttributes()
                             {
-                                name = "brightness",
-                                value_key = new List<string> { "up", "down" },
+                                key = "brightness",
+                                value = new List<string> { "up", "down" },
                                 max = 100,
                                 min = 0,
                             };
                         }
-                        trait_brightness.value = trait_brightness.min;
+                        trait_brightness.curValue = trait_brightness.min;
                     }
-                    trait_brightness.value = value;
+                    trait_brightness.curValue = value;
                     MainPage.Log($"brightness 鏁版嵁鍒锋柊{value}.");
                 }
                 catch
@@ -79,7 +79,7 @@
         }
 
         [Newtonsoft.Json.JsonIgnore]
-        Trait trait_fadeTime;
+        FunctionAttributes trait_fadeTime;
         /// <summary>
         /// 浜害鍊�
         /// </summary>
@@ -90,23 +90,23 @@
             {
                 if (trait_fadeTime == null)
                 {
-                    trait_fadeTime = function.Find((obj) => obj.name == "fade_time");
+                    trait_fadeTime = function.Find((obj) => obj.key == "fade_time");
                     //鎵句笉鍒板睘鎬ч渶瑕佸0鏄庝竴涓紝闃叉鎶ラ敊闂��
                     if (trait_fadeTime == null)
                     {
-                        trait_fadeTime = new Trait()
+                        trait_fadeTime = new FunctionAttributes()
                         {
-                            name = "fade_time",
-                            value_key = new List<string> { "up", "down" },
+                            key = "fade_time",
+                            value = new List<string> { "up", "down" },
                             max = 10,
                             min = 0,
                         };
-                        trait_fadeTime.value = 0;
+                        trait_fadeTime.curValue = 0;
                         function.Add(trait_fadeTime);
                     }
                 }
                 int result = 0;
-                int.TryParse(trait_fadeTime.value.ToString(), out result);
+                int.TryParse(trait_fadeTime.curValue.ToString(), out result);
                 return result;
             }
             set
@@ -115,22 +115,22 @@
                 {
                     if (trait_fadeTime == null)
                     {
-                        trait_fadeTime = function.Find((obj) => obj.name == "fade_time");
+                        trait_fadeTime = function.Find((obj) => obj.key == "fade_time");
                         //鎵句笉鍒板睘鎬ч渶瑕佸0鏄庝竴涓紝闃叉鎶ラ敊闂��
                         if (trait_fadeTime == null)
                         {
-                            trait_fadeTime = new Trait()
+                            trait_fadeTime = new FunctionAttributes()
                             {
-                                name = "fade_time",
-                                value_key = new List<string> { "up", "down" },
+                                key = "fade_time",
+                                value = new List<string> { "up", "down" },
                                 max = 100,
                                 min = 0,
                             };
-                            trait_fadeTime.value = 0;
+                            trait_fadeTime.curValue = 0;
                             function.Add(trait_fadeTime);
                         }
                     }
-                    trait_fadeTime.value = value;
+                    trait_fadeTime.curValue = value;
                 }
                 catch
                 {
@@ -139,7 +139,7 @@
         }
 
         [Newtonsoft.Json.JsonIgnore]
-        public Trait trait_color;
+        public FunctionAttributes trait_color;
         /// <summary>
         /// RGB棰滆壊
         /// 255255255
@@ -151,27 +151,27 @@
             {
                 if (trait_color == null)
                 {
-                    trait_color = function.Find((obj) => obj.name == "color");
+                    trait_color = function.Find((obj) => obj.key == "color");
                     //鎵句笉鍒板睘鎬ч渶瑕佸0鏄庝竴涓紝闃叉鎶ラ敊闂��
                     if (trait_color == null)
                     {
-                        trait_color = new Trait()
+                        trait_color = new FunctionAttributes()
                         {
-                            name = "color",
-                            value_key = new List<string> { "FFFFFF" },
+                            key = "color",
+                            value = new List<string> { "FFFFFF" },
                             max = 0xFFFFFF,
                             min = 0x00000F,
                         };
                     }
-                    trait_color.value = trait_color.min;
+                    trait_color.curValue = trait_color.min;
                 }
-                return Convert.ToInt32(trait_color.value);
+                return Convert.ToInt32(trait_color.curValue);
             }
             set
             {
                 try
                 {
-                    trait_color.value = value;
+                    trait_color.curValue = value;
                 }
                 catch
                 {
diff --git a/HDL_ON/Entity/Function/Sensor.cs b/HDL_ON/Entity/Function/Sensor.cs
index 9710407..598d621 100644
--- a/HDL_ON/Entity/Function/Sensor.cs
+++ b/HDL_ON/Entity/Function/Sensor.cs
@@ -38,7 +38,7 @@
         }
 
         [Newtonsoft.Json.JsonIgnore]
-        public Trait trait_values;
+        public FunctionAttributes trait_values;
         /// <summary>
         /// 鍊�
         /// </summary>
@@ -49,18 +49,18 @@
             {
                 if (trait_values == null)
                 {
-                    trait_values = function.Find((obj) => obj.name == "values");
+                    trait_values = function.Find((obj) => obj.key == "values");
                     //鎵句笉鍒板睘鎬ч渶瑕佸0鏄庝竴涓紝闃叉鎶ラ敊闂��
                     if (trait_values == null)
                     {
-                        trait_values = new Trait()
+                        trait_values = new FunctionAttributes()
                         {
-                            name = "values",
-                            value_key = new List<string> { "29" },
+                            key = "values",
+                            value = new List<string> { "29" },
                             max = 10000,
                             min = 0,
                         };
-                        trait_values.value = trait_values.min;
+                        trait_values.curValue = trait_values.min;
                     }
 #if DEBUG
                     //if ( Convert.ToInt32(trait_values.value)  == 0)
@@ -85,12 +85,12 @@
                                 level = Math.Round(random.NextDouble() * 100, 0);
                                 break;
                         }
-                        trait_values.value = level;
+                        trait_values.curValue = level;
                     }
 #endif
 
                 }
-                return Convert.ToDouble(trait_values.value);
+                return Convert.ToDouble(trait_values.curValue);
             }
             set
             {
@@ -99,21 +99,21 @@
                  {
                     if (trait_values == null)
                     {
-                        trait_values = function.Find((obj) => obj.name == "values");
+                        trait_values = function.Find((obj) => obj.key == "values");
                         //鎵句笉鍒板睘鎬ч渶瑕佸0鏄庝竴涓紝闃叉鎶ラ敊闂��
                         if (trait_values == null)
                         {
-                            trait_values = new Trait()
+                            trait_values = new FunctionAttributes()
                             {
-                                name = "values",
-                                value_key = new List<string> { "up" },
+                                key = "values",
+                                value = new List<string> { "up" },
                                 max = 100,
                                 min = 0,
                             };
                         }
-                        trait_values.value = trait_values.min;
+                        trait_values.curValue = trait_values.min;
                     }
-                    trait_values.value = value;
+                    trait_values.curValue = value;
                     MainPage.Log($"values 鏁版嵁鍒锋柊{value}.");
                 }
                 catch
diff --git a/HDL_ON/Entity/Function/TV.cs b/HDL_ON/Entity/Function/TV.cs
index bd358ed..dfea93e 100644
--- a/HDL_ON/Entity/Function/TV.cs
+++ b/HDL_ON/Entity/Function/TV.cs
@@ -7,14 +7,14 @@
     {
         public TV()
         {
-            trait_on_off.value = "off";
+            trait_on_off.curValue = "off";
         }
 
         public void ControlTV(InfraredCode_TV iCode)
         {
             int RandKey = new Random().Next(0, 255);
             var textByte = (byte)iCode;
-            Control.ins.myUdp.ControlBytesSend(Command.InfraredControl, bus_Data.SubnetID, bus_Data.DeviceID, new byte[] { 1, bus_Data.LoopID, textByte, 0, 0, (byte)RandKey }, 0);
+            Control.Ins.myUdp.ControlBytesSend(Command.InfraredControl, bus_Data.SubnetID, bus_Data.DeviceID, new byte[] { 1, bus_Data.LoopID, textByte, 0, 0, (byte)RandKey }, 0);
         }
         public void ControlTV(int number)
         {
@@ -24,7 +24,7 @@
             {
                 textByte = 18;
             }
-            Control.ins.myUdp.ControlBytesSend(Command.InfraredControl, bus_Data.SubnetID, bus_Data.DeviceID, new byte[] { 1, bus_Data.LoopID, textByte, 0, 0, (byte)RandKey }, 0);
+            Control.Ins.myUdp.ControlBytesSend(Command.InfraredControl, bus_Data.SubnetID, bus_Data.DeviceID, new byte[] { 1, bus_Data.LoopID, textByte, 0, 0, (byte)RandKey }, 0);
         }
     }
 }
diff --git a/HDL_ON/Entity/OnAppConfig.cs b/HDL_ON/Entity/OnAppConfig.cs
index 56b5fa1..d77875c 100644
--- a/HDL_ON/Entity/OnAppConfig.cs
+++ b/HDL_ON/Entity/OnAppConfig.cs
@@ -36,6 +36,11 @@
         {
             return System.Text.Encoding.UTF8.GetBytes (Newtonsoft.Json.JsonConvert.SerializeObject (this));
         }
+        /// <summary>
+        /// 缃戠粶杩炴帴鐘舵��
+        /// 0:鏃犵綉缁�
+        /// </summary>
+        public int internetStatus = 2;
 
         public void RefreshUserConfig ()
         {
@@ -50,6 +55,14 @@
         /// 淇℃伅鎺ㄩ�佹爣璁�
         /// </summary>
         public string PushDeviceToken;
+        /// <summary>
+        /// phoneName
+        /// </summary>
+        public string PhoneName;
+        /// <summary>
+        /// 娣诲姞鎺ㄩ�乀oken鎴愬姛鏃惰繑鍥炵殑Id
+        /// </summary>
+        public string PushId;
 
         public string SetLanguage = "";
 
diff --git a/HDL_ON/Entity/ResponseEntity/RegionInfoRes.cs b/HDL_ON/Entity/ResponseEntity/RegionInfoRes.cs
index fd73c8d..7c4961b 100644
--- a/HDL_ON/Entity/ResponseEntity/RegionInfoRes.cs
+++ b/HDL_ON/Entity/ResponseEntity/RegionInfoRes.cs
@@ -3,48 +3,201 @@
 
 namespace HDL_ON
 {
-    [Serializable]
-    public class RegionInfoRes
-    {
-        public string RegionID { get; set; }
+    //[Serializable]
+    //public class RegionInfoRes
+    //{
+    //    public string RegionID { get; set; }
 
-        /// <summary>
-        /// 鍖哄煙鍚嶇О(濡�:骞垮窞銆佹繁鍦崇瓑)
-        /// </summary>
-        public string RegionName { get; set; }
-        /// <summary>
-        /// 浣忓畢鍚嶇О
-        /// </summary>
-        public string Name { get;set; }
-        /// <summary>
-        /// 浣忓畢鍦板潃
-        /// </summary>
-        public string Address { get; set; }
+    //    /// <summary>
+    //    /// 鍖哄煙鍚嶇О(濡�:骞垮窞銆佹繁鍦崇瓑)
+    //    /// </summary>
+    //    public string RegionName { get; set; }
+    //    /// <summary>
+    //    /// 浣忓畢鍚嶇О
+    //    /// </summary>
+    //    public string Name { get;set; }
+    //    /// <summary>
+    //    /// 浣忓畢鍦板潃
+    //    /// </summary>
+    //    public string Address { get; set; }
 
-        //{
-        // {
-        //  "Id": "1107487",
-        //  "HomeStatus": 2,
-        //  "UserGuid": "22980",
-        //  "Name": "鍟�",
-        //  "Address": null,
-        //  "Longitude": 0.0,
-        //  "Latitude": 0.0,
-        //  "RegionName": null,
-        //  "Company": null,
-        //  "ContactPerson": null,
-        //  "ContactPersonPhone": null,
-        //  "Remarks": null,
-        //  "ChangeDate": null,
-          //"AccountType": 0,
-        //  "CreatedOnUtc": "2020-05-27T06:52:03",
-        public bool IsOthreShare = false;
-        //  "MainUserDistributedMark": null,
-        public List<HomeGateways> homeGateways = new List<HomeGateways>();
-    }
+    //    //{
+    //    // {
+    //    //  "Id": "1107487",
+    //    //  "HomeStatus": 2,
+    //    //  "UserGuid": "22980",
+    //    //  "Name": "鍟�",
+    //    //  "Address": null,
+    //    //  "Longitude": 0.0,
+    //    //  "Latitude": 0.0,
+    //    //  "RegionName": null,
+    //    //  "Company": null,
+    //    //  "ContactPerson": null,
+    //    //  "ContactPersonPhone": null,
+    //    //  "Remarks": null,
+    //    //  "ChangeDate": null,
+    //      //"AccountType": 0,
+    //    //  "CreatedOnUtc": "2020-05-27T06:52:03",
+    //    public bool IsOthreShare = false;
+    //    //  "MainUserDistributedMark": null,
+    //    public List<HomeGateways> homeGateways = new List<HomeGateways>();
+    //}
 
     public class HomeGateways
     {
         public string GatewayUniqueId = "";
     }
+
+    [Serializable]
+    public class RegionInfoRes
+    {
+        /// <summary>
+        /// 浣忓畢ID
+        /// </summary>
+        public string RegionID { get; set; }
+        /// <summary>
+        /// 浣忓畢鍚嶇О
+        /// </summary>
+        public string Name { get; set; }
+        /// <summary>
+        /// 浣忓畢鍦板潃
+        /// </summary>
+        public string Address { get; set; }
+        /// <summary>
+        /// 鏄惁涓哄叾浠栦富鐢ㄦ埛鍒嗕韩杩囨潵鐨勪綇瀹�
+        /// </summary>
+        public bool IsOthreShare = false;
+        /// <summary>
+        /// 
+        /// </summary>
+        public List<HomeGateways> homeGateways = new List<HomeGateways>();
+
+        //2020-11-13 鏂板
+        /// <summary>
+        /// 浠呭瓙璐﹀彿鐧婚檰鐨勬椂鍊欎娇鐢�,褰撱�怚sOthreShare銆戜负"true"锛�
+        /// 瀛愯处鎴风被鍨� 1.ORDINARY 2.DEBUG 3.ADMIN
+        /// </summary>
+        public string accountType;
+        /// <summary>
+        /// 鏄惁鏀寔杩滅▼
+        /// </summary>
+        public bool isRemoteControl;
+        /// <summary>
+        /// 缁忓害
+        /// </summary>
+        public double longitude;
+        /// <summary>
+        /// 绾害
+        /// </summary>
+        public double latitude;
+        /// <summary>
+        /// 浜や粯鐘舵��
+        /// </summary>
+        public string deliverstatus;
+        /// <summary>
+        /// 浣忓畢绫诲瀷 Zigbee, Buspro, A
+        /// </summary>
+        public string homeType;
+        /// <summary>
+        /// 
+        /// </summary>
+        public string createonutc;
+        /// <summary>
+        /// 鍖哄煙鏈嶅姟鍣�
+        /// </summary>
+        public string regionUrl;
+        /// <summary>
+        /// 鍖哄煙鏈嶅姟鍣�
+        /// </summary>
+        public string emqUrl;
+        /// <summary>
+        /// 浣忓畢鍖哄煙Id
+        /// </summary>
+        public string homeRegionId;
+        /// <summary>
+        /// 浣忓畢鍖哄煙鍚嶅瓧
+        /// </summary>
+        public string homeRegionName;
+        ///// <summary>
+        ///// 鏄惁缁戝畾缃戝叧
+        ///// </summary>
+        //public bool isBindGateway;
+    }
+
+    /// <summary>
+    /// 鏂颁簯绔綇瀹呭垪琛ㄨ繑鍥炲瓧娈�
+    /// </summary>
+    [Serializable]
+    public class RegionInfoResNew
+    {
+        /// <summary>
+        /// 浣忓畢ID
+        /// </summary>
+        public string Id;
+        /// <summary>
+        /// 浣忓畢鍚嶅瓧
+        /// </summary>
+        public string homeName;
+        /// <summary>
+        /// 鏄惁涓哄叾浠栦富鐢ㄦ埛鍒嗕韩杩囨潵鐨勪綇瀹�
+        /// </summary>
+        public bool IsOtherShare;
+        /// <summary>
+        /// 浠呭瓙璐﹀彿鐧婚檰鐨勬椂鍊欎娇鐢�,褰撱�怚sOthreShare銆戜负"true"锛�
+        /// 瀛愯处鎴风被鍨� 1.ORDINARY 2.DEBUG 3.ADMIN
+        /// </summary>
+        public string accountType;
+        /// <summary>
+        /// 鏄惁鏀寔杩滅▼
+        /// </summary>
+        public bool isRemoteControl;
+        /// <summary>
+        /// 浣忓畢绌洪棿缁撴瀯Id
+        /// </summary>
+        public string structId;
+        /// <summary>
+        /// 缁忓害
+        /// </summary>
+        public double longitude;
+        /// <summary>
+        /// 绾害
+        /// </summary>
+        public double latitude;
+        /// <summary>
+        /// 浜や粯鐘舵��
+        /// </summary>
+        public string deliverstatus;
+        /// <summary>
+        /// 浣忓畢绫诲瀷 Zigbee, Buspro, A
+        /// </summary>
+        public string homeType;
+        /// <summary>
+        /// 
+        /// </summary>
+        public string createonutc;
+        /// <summary>
+        /// 鍖哄煙鏈嶅姟鍣�
+        /// </summary>
+        public string regionUrl;
+        /// <summary>
+        /// 鍖哄煙鏈嶅姟鍣�
+        /// </summary>
+        public string emqUrl;
+        /// <summary>
+        /// 浣忓畢鍖哄煙Id
+        /// </summary>
+        public string homeRegionId;
+        /// <summary>
+        /// 浣忓畢鍖哄煙鍚嶅瓧
+        /// </summary>
+        public string homeRegionName;
+        /// <summary>
+        /// 鏄惁缁戝畾缃戝叧
+        /// </summary>
+        public bool isBindGateway;
+        /// <summary>
+        /// 浣忓畢鍦板潃
+        /// </summary>
+        public string homeAddress;
+    }
 }
diff --git a/HDL_ON/Entity/ResponseEntity/ResidenceMemberInfo.cs b/HDL_ON/Entity/ResponseEntity/ResidenceMemberInfo.cs
index fb21d58..f049bc2 100644
--- a/HDL_ON/Entity/ResponseEntity/ResidenceMemberInfo.cs
+++ b/HDL_ON/Entity/ResponseEntity/ResidenceMemberInfo.cs
@@ -4,6 +4,7 @@
 namespace HDL_ON.Entity
 {
     /// <summary>
+    /// 2020-11-16 寰呬慨鏀硅皟鏁�
 	/// 浣忓畢鎴愬憳鐨勪俊鎭垪琛�
 	/// </summary>
     public class ResidenceMemberInfo
@@ -11,25 +12,25 @@
         public ResidenceMemberInfo()
         {
         }
-        public string Account = "";
+        //public string Account = "";
 
-        public string UserName = "";
+        //public string UserName = "";
 
-        public string SubAccountDistributedMark = "";
+        //public string SubAccountDistributedMark = "";
 
-        public string DistributedMark = "";
+        //public string DistributedMark = "";
 
-        public string Nickname = "";
+        //public string Nickname = "";
 
-        public int AccountType = 0;
-        /// <summary>
-        /// <!--姝ゆ垚鍛樺笎鍙锋槸鍚﹀叿鏈夎繙绋嬫帶鍒舵潈闄�-->
-        /// </summary>
-        public bool IsAllowRemoteCtrl = false;
-        /// <summary>
-        /// 鏄惁鍏佽瀛愯处鍙峰垱寤哄満鏅�
-        /// </summary>
-        public bool IsAllowCreateScene = false;
+        //public int AccountType = 0;
+        ///// <summary>
+        ///// <!--姝ゆ垚鍛樺笎鍙锋槸鍚﹀叿鏈夎繙绋嬫帶鍒舵潈闄�-->
+        ///// </summary>
+        //public bool IsAllowRemoteCtrl = false;
+        ///// <summary>
+        ///// 鏄惁鍏佽瀛愯处鍙峰垱寤哄満鏅�
+        ///// </summary>
+        //public bool IsAllowCreateScene = false;
 
         public string headImagePagePath = "LoginIcon/2.png";
 
@@ -38,30 +39,129 @@
         /// </summary>
         public List<ShareData> CurResidenceShareDate = new List<ShareData>();
 
+        /// <summary>
+        /// 
+        /// </summary>
+        public string id;
+        /// <summary>
+        /// 
+        /// </summary>
+        public string homeId;
+        /// <summary>
+        /// 
+        /// </summary>
+        public string homeRegionId;
+        /// <summary>
+        /// 
+        /// </summary>
+        public string childAccountId;
+        /// <summary>
+        /// 
+        /// </summary>
+        public string childAccountRegionId;
+        /// <summary>
+        /// 瀛愯处鎴风被鍨� ORDINARY銆丏EBUG銆丄DMIN
+        /// </summary>
+        public string childAccountType;
+        /// <summary>
+        /// 鏄惁鍏佽杩滅▼鎺у埗
+        /// </summary>
+        public bool isRemoteControl;
+        /// <summary>
+        /// 鏄惁鍒涘缓鍦烘櫙
+        /// </summary>
+        public bool isAllowCreateScene;
+        /// <summary>
+        /// 鏄电О1
+        /// </summary>
+        public string nickName;
+        /// <summary>
+        /// 
+        /// </summary>
+        public string createTime;
+        /// <summary>
+        /// 鐢ㄦ埛鍚嶅瓧
+        /// </summary>
+        public string UserName = "";
+        /// <summary>
+        /// 
+        /// </summary>
+        public string childAccountEmail;
+        /// <summary>
+        /// 
+        /// </summary>
+        public string childAccountPhone;
+        /// <summary>
+        /// 鐢ㄦ埛璐﹀彿
+        /// 浼樺厛鏄剧ず鎵嬫満鍙凤紝濡傛灉鎵嬫満鍙蜂负绌哄垯鏄剧ず閭鍦板潃
+        /// </summary>
+        public string Account
+        {
+            get
+            {
+                if (!string.IsNullOrEmpty(childAccountPhone))
+                {
+                    return childAccountPhone;
+                }
+                else
+                {
+                    if (!string.IsNullOrEmpty(childAccountEmail))
+                    {
+                        return childAccountEmail;
+                    }
+                    else
+                    {
+                        return "";
+                    }
+
+                }
+            }
+        }
     }
 
     public class ShareData
     {
-        /// <summary>
-        /// 澶囦唤鍚嶇О
-        /// </summary>
-        public string ShareName = "";
-        /// <summary>
-        /// 澶囦唤鐨勬暟鎹甀D
-        /// </summary>
-        public string DistributedMark = "";
-        /// <summary>
-        /// 澶囦唤鎵�灞炵殑浣忓畢ID
-        /// </summary>
-        public string HouseDistributedMark = "";
-        /// <summary>
-        /// 瀛愯处鍙稩D
-        /// </summary>
-        public string SubAccountDistributedMark = "";
+        ///// <summary>
+        ///// 澶囦唤鍚嶇О
+        ///// </summary>
+        //public string ShareName = "";
+        ///// <summary>
+        ///// 澶囦唤鐨勬暟鎹甀D
+        ///// </summary>
+        //public string DistributedMark = "";
+        ///// <summary>
+        ///// 澶囦唤鎵�灞炵殑浣忓畢ID
+        ///// </summary>
+        //public string HouseDistributedMark = "";
+        ///// <summary>
+        ///// 瀛愯处鍙稩D
+        ///// </summary>
+        //public string SubAccountDistributedMark = "";
         /// <summary>
         /// 鍔熻兘鏁版嵁
         /// </summary>
         public byte[] ShareDataBytes;
 
+        /// <summary>
+        /// 涓婚敭ID
+        /// </summary>
+        public string id;
+        /// <summary>
+        /// 浣忓畢ID
+        /// </summary>
+        public string homeId;
+        /// <summary>
+        /// 瀛愯处鍙稩D
+        /// </summary>
+        public string childAccountId;
+        /// <summary>
+        /// 鏂囦欢鍚�
+        /// </summary>
+        public string fileName;
+        /// <summary>
+        /// 鍒涘缓鏃堕棿
+        /// </summary>
+        public string createTime;
+
     }
 }
diff --git a/HDL_ON/Entity/UserInfo.cs b/HDL_ON/Entity/UserInfo.cs
index ebf358d..9465064 100644
--- a/HDL_ON/Entity/UserInfo.cs
+++ b/HDL_ON/Entity/UserInfo.cs
@@ -3,12 +3,75 @@
 using System.Text;
 using System.IO;
 using System.Drawing;
+using HDL_ON.DAL;
+using HDL_ON.DAL.Server;
 
 namespace HDL_ON
 {
     [System.Serializable]
     public class UserInfo
     {
+        public static readonly string ConfigFile = "UserInfo_File";
+        /// <summary>
+        /// 閫氱敤鏂规硶
+        /// </summary>
+        private static UserInfo m_Current = null;
+        /// <summary>
+        /// 閫氱敤鏂规硶
+        /// </summary>
+        public static UserInfo Current
+        {
+            get
+            {
+                if (m_Current == null)
+                {
+                    try
+                    {
+                        UserInfo temp = Newtonsoft.Json.JsonConvert.DeserializeObject<UserInfo>(System.Text.Encoding.UTF8.GetString(FileUtils.ReadFile(ConfigFile)));
+                        if (temp == null)
+                        {
+                            m_Current = new UserInfo() { };
+                            Utlis.WriteLine("UserInfo null");
+                        }
+                        else
+                        {
+                            m_Current = temp;
+                            Utlis.WriteLine("UserInfo Current");
+                        }
+                    }
+                    catch
+                    {
+                        m_Current = new UserInfo() { };
+                        Utlis.WriteLine("UserInfo null");
+                    }
+                }
+                return m_Current;
+            }
+        }
+
+        #region 鏂板淇濆瓨鍙傛暟
+        /// <summary>
+        ///  璐﹀彿娉ㄥ唽鏈嶅姟鍣ㄤ俊鎭�
+        /// </summary>
+        public string RequestHttpsHost = "https://china.hdlcontrol.com";
+        /// <summary>
+        /// 
+        /// </summary>
+        public GlobalRegionListRes GlobalRegion;
+
+        /// <summary>
+        /// 鏄惁鍚屾剰鍗忚
+        /// </summary>
+        public bool isAgreePrivacyPolicy;
+
+        /// <summary>
+        /// 蹇界暐鏇存柊鐨勭増鏈彿
+        /// </summary>
+        public string IgnoreUpdateVersion = string.Empty;
+        #endregion
+
+
+
         /// <summary>
         /// 鐢ㄦ埛鍚嶇О
         /// </summary>
@@ -16,11 +79,26 @@
         /// <summary>
         /// 鐢ㄦ埛
         /// </summary>
-        public string accountString = "";
-        /// <summary>
-        /// 鐢ㄦ埛瀵嗙爜
-        /// </summary>
-        public string password = "";
+        public string AccountString = "";
+        ///// <summary>
+        ///// 鐢ㄦ埛瀵嗙爜
+        ///// </summary>
+        //public string password = "";
+        //string aesPassword = "";
+        ///// <summary>
+        /////  鐢ㄦ埛瀵嗙爜
+        ///// </summary>
+        //public string password
+        //{
+        //    get
+        //    {
+        //        return Shared.Securitys.EncryptionService.AesDecryptTopic(aesPassword, "85521566HDLONPRO");
+        //    }
+        //    set
+        //    {
+        //        aesPassword = Shared.Securitys.EncryptionService.AesEncryptTopic(value, "85521566HDLONPRO");
+        //    }
+        //}
         /// <summary>
         /// 鐢ㄦ埛鎵嬫満鍙风爜
         /// </summary>
@@ -32,7 +110,7 @@
         /// <summary>
         /// 鐢ㄦ埛ID
         /// </summary>
-        public int ID;
+        public string ID;
         /// <summary>
         /// 鐢ㄦ埛閫夋嫨鏄剧ず鐨勮瑷�
         /// </summary>
@@ -40,8 +118,7 @@
         /// <summary>
         /// 鐢ㄦ埛鍖哄煙
         /// </summary>
-        public int areaCode = 86;
-
+        public string areaCode = "86";
         /// <summary>
         /// 鐢ㄦ埛澶村儚鍥剧墖
         /// </summary>
@@ -50,12 +127,10 @@
         /// 鐢ㄦ埛澶村儚byte鏁版嵁
         /// </summary>
         public byte[] headImagePageBytes = null;
-
         /// <summary>
         /// 涓婁竴娆$櫥褰曟椂闂�
         /// </summary>
-        public DateTime lastTime = DateTime.MinValue;
-
+        public DateTime LastTime = DateTime.MinValue;
         /// <summary>
         /// 鏄惁鏄櫥褰曠姸鎬�
         /// </summary>
@@ -63,27 +138,23 @@
         {
             get
             {
-                return (DateTime.Now - lastTime).TotalDays < 7;
+                return (DateTime.Now - LastTime).TotalDays < 7;
             }
         }
+        /// <summary>
+        /// 
+        /// </summary>
+        public string LoginTokenString;
+        /// <summary>
+        /// 
+        /// </summary>
+        public string RefreshToken;
+        /// <summary>
+        /// UserType B绔处鍙� C绔处鍙� 
+        /// </summary>
+        public string userType = "USER_C";
+       
 
-        public int accountType = 0;
-
-        public int masterID = 0;
-
-        public string loginTokenString;
-        //{
-        //    get
-        //    {
-        //        var result = Encoding.UTF8.GetBytes(password);
-        //        var md5 = new System.Security.Cryptography.MD5CryptoServiceProvider();
-        //        var output = md5.ComputeHash(result);
-        //        var md5Password = BitConverter.ToString(output).Replace("-", "");
-        //        var account_md5Pssword = accountString + ":" + md5Password;
-        //        var tokenBytes = Encoding.UTF8.GetBytes(account_md5Pssword);
-        //        return Convert.ToBase64String(tokenBytes).Replace("=", "%3D");
-        //    }
-        //}
         /// <summary>
         /// 鐢ㄦ埛浣忓畢鍒楄〃
         /// </summary>
@@ -91,10 +162,8 @@
 
         public void SaveUserInfo()
         {
-            FileUtils.WriteFileByBytes("UserInfo_File", Encoding.UTF8.GetBytes(Newtonsoft.Json.JsonConvert.SerializeObject(this)));
+            FileUtils.WriteFileByBytes(ConfigFile, Encoding.UTF8.GetBytes(Newtonsoft.Json.JsonConvert.SerializeObject(this)));
         }
-
-      
 
 
         private byte[] convertByte(Image img)
diff --git a/HDL_ON/HDL_ON.projitems b/HDL_ON/HDL_ON.projitems
index 63146ca..5993d1f 100644
--- a/HDL_ON/HDL_ON.projitems
+++ b/HDL_ON/HDL_ON.projitems
@@ -10,11 +10,9 @@
   </PropertyGroup>
   <ItemGroup>
     <Compile Include="$(MSBuildThisFileDirectory)UI\MainPage.cs" />
-    <Compile Include="$(MSBuildThisFileDirectory)DAL\Net\HttpListener.cs" />
     <Compile Include="$(MSBuildThisFileDirectory)DAL\FileUtils.cs" />
     <Compile Include="$(MSBuildThisFileDirectory)Common\R.cs" />
-    <Compile Include="$(MSBuildThisFileDirectory)DAL\Net\MyWebClient.cs" />
-    <Compile Include="$(MSBuildThisFileDirectory)DAL\Net\MqttCommon.cs" />
+    <Compile Include="$(MSBuildThisFileDirectory)DAL\Mqtt\MqttInfoConfig.cs" />
     <Compile Include="$(MSBuildThisFileDirectory)DAL\Server\HttpServerRequest.cs" />
     <Compile Include="$(MSBuildThisFileDirectory)Entity\ResponseEntity\RegionInfoRes.cs" />
     <Compile Include="$(MSBuildThisFileDirectory)Entity\ResponseEntity\ResponsePack.cs" />
@@ -25,14 +23,8 @@
     <Compile Include="$(MSBuildThisFileDirectory)Entity\Enumerative\MyEnum.cs" />
     <Compile Include="$(MSBuildThisFileDirectory)Entity\DB_ResidenceData.cs" />
     <Compile Include="$(MSBuildThisFileDirectory)Entity\Function\Function.cs" />
-    <Compile Include="$(MSBuildThisFileDirectory)DriverLayer\Target.cs" />
-    <Compile Include="$(MSBuildThisFileDirectory)DriverLayer\UdpSocket.cs" />
-    <Compile Include="$(MSBuildThisFileDirectory)DriverLayer\Control.cs" />
-    <Compile Include="$(MSBuildThisFileDirectory)DriverLayer\CRC.cs" />
-    <Compile Include="$(MSBuildThisFileDirectory)DriverLayer\Packet.cs" />
     <Compile Include="$(MSBuildThisFileDirectory)Entity\OnAppConfig.cs" />
     <Compile Include="$(MSBuildThisFileDirectory)Entity\UserInfo.cs" />
-    <Compile Include="$(MSBuildThisFileDirectory)DriverLayer\Control_Udp_Bus.cs" />
     <Compile Include="$(MSBuildThisFileDirectory)Entity\Function\BusData.cs" />
     <Compile Include="$(MSBuildThisFileDirectory)UI\UI0-Public\PublicAssmebly.cs" />
     <Compile Include="$(MSBuildThisFileDirectory)UI\CSS\CSS.cs" />
@@ -88,7 +80,6 @@
     <Compile Include="$(MSBuildThisFileDirectory)UI\UI2\FuntionControlView\AC\ACPageBLL.cs" />
     <Compile Include="$(MSBuildThisFileDirectory)UI\UI2\2-Classification\FunctionPage.cs" />
     <Compile Include="$(MSBuildThisFileDirectory)UI\UI2\2-Classification\FunctionPageBLL.cs" />
-    <Compile Include="$(MSBuildThisFileDirectory)Common\A_Protocol_Command.cs" />
     <Compile Include="$(MSBuildThisFileDirectory)UI\UI2\2-Classification\FunctionControlZone.cs" />
     <Compile Include="$(MSBuildThisFileDirectory)UI\UI2\2-Classification\FunctionControlZoneBLL.cs" />
     <Compile Include="$(MSBuildThisFileDirectory)UI\UI2\2-Classification\RoomPage.cs" />
@@ -109,7 +100,6 @@
     <Compile Include="$(MSBuildThisFileDirectory)UI\UI0-Public\AppUnlockPage.cs" />
     <Compile Include="$(MSBuildThisFileDirectory)UI\UI2\FuntionControlView\FoolHeating\FloorHeatingPage.cs" />
     <Compile Include="$(MSBuildThisFileDirectory)UI\UI2\FuntionControlView\FoolHeating\FloorHeatingPageBLL.cs" />
-    <Compile Include="$(MSBuildThisFileDirectory)DriverLayer\CommonPage.cs" />
     <Compile Include="$(MSBuildThisFileDirectory)UI\UI2\FuntionControlView\Electrical\FanPage.cs" />
     <Compile Include="$(MSBuildThisFileDirectory)Entity\Function\Fan.cs" />
     <Compile Include="$(MSBuildThisFileDirectory)Entity\Function\SwitchSocket.cs" />
@@ -160,7 +150,7 @@
     <Compile Include="$(MSBuildThisFileDirectory)UI\UI2\4-PersonalCenter\MemberManagement\ChooseShareMemberTargetListPageBLL.cs" />
     <Compile Include="$(MSBuildThisFileDirectory)UI\UI2\4-PersonalCenter\AccountBindInfo\AccountBindInfoPage.cs" />
     <Compile Include="$(MSBuildThisFileDirectory)UI\UI2\4-PersonalCenter\AccountBindInfo\ChangeBindAccountPage.cs" />
-    <Compile Include="$(MSBuildThisFileDirectory)UI\UI2\4-PersonalCenter\AccountBindInfo\VerificationCodePage.cs" />
+    <Compile Include="$(MSBuildThisFileDirectory)UI\UI2\4-PersonalCenter\AccountBindInfo\ChangeBindVerificationCodePage.cs" />
     <Compile Include="$(MSBuildThisFileDirectory)UI\UI2\4-PersonalCenter\AccountBindInfo\BindAccountPage.cs" />
     <Compile Include="$(MSBuildThisFileDirectory)UI\UI2\FuntionControlView\EnvironmentalScience\EchartsOption.cs" />
     <Compile Include="$(MSBuildThisFileDirectory)UI\UI2\4-PersonalCenter\ResetAccountPassword\ResetPasswordOptionPage.cs" />
@@ -168,21 +158,15 @@
     <Compile Include="$(MSBuildThisFileDirectory)UI\UI2\4-PersonalCenter\ResetAccountPassword\ResetPasswordPage.cs" />
     <Compile Include="$(MSBuildThisFileDirectory)UI\UI2\FuntionControlView\Music\UpdateThread.cs" />
     <Compile Include="$(MSBuildThisFileDirectory)UI\UI2\FuntionControlView\Music\View\MyListView.cs" />
-    <Compile Include="$(MSBuildThisFileDirectory)UI\UI0-Public\UpdataTcpResidenceDataDialog.cs" />
+    <Compile Include="$(MSBuildThisFileDirectory)UI\UI0-Public\UpdataSidDataDialog.cs" />
     <Compile Include="$(MSBuildThisFileDirectory)UI\UI2\3-Intelligence\IntelligencePage.cs" />
-    <Compile Include="$(MSBuildThisFileDirectory)Common\MqttCommon.cs" />
     <Compile Include="$(MSBuildThisFileDirectory)UI\UI0-Public\GalleryPage.cs" />
-    <Compile Include="$(MSBuildThisFileDirectory)DAL\Net\Mqtt_Cloud.cs" />
-    <Compile Include="$(MSBuildThisFileDirectory)DAL\Net\Mqtt_A_Protocol.cs" />
-    <Compile Include="$(MSBuildThisFileDirectory)UI\UI2\4-PersonalCenter\AboutOnPage.cs" />
     <Compile Include="$(MSBuildThisFileDirectory)UI\UI2\3-Intelligence\Scene\NewSceneMenuListPage.cs" />
     <Compile Include="$(MSBuildThisFileDirectory)UI\UI2\3-Intelligence\Scene\SceneEditPage.cs" />
     <Compile Include="$(MSBuildThisFileDirectory)UI\UI2\3-Intelligence\Scene\SceneFunctionListEditPage.cs" />
     <Compile Include="$(MSBuildThisFileDirectory)UI\UI2\3-Intelligence\Scene\SetSceneFunctionInfoPage.cs" />
     <Compile Include="$(MSBuildThisFileDirectory)UI\UI2\3-Intelligence\Scene\SetSceneLocationPage.cs" />
-    <Compile Include="$(MSBuildThisFileDirectory)UI\UI2\4-PersonalCenter\GetSupportPage.cs" />
-    <Compile Include="$(MSBuildThisFileDirectory)DriverLayer\Control_TcpClient.cs" />
-    <Compile Include="$(MSBuildThisFileDirectory)DriverLayer\Control_TcpServer.cs" />
+    <Compile Include="$(MSBuildThisFileDirectory)UI\UI2\3-Intelligence\Automation\AutomationMenuPage.cs" />
     <Compile Include="$(MSBuildThisFileDirectory)UI\UI2\FuntionControlView\Panel\PanelPage.cs" />
     <Compile Include="$(MSBuildThisFileDirectory)UI\UI2\4-PersonalCenter\SearchDevice\SearchDevicePage.cs" />
     <Compile Include="$(MSBuildThisFileDirectory)UI\UI2\4-PersonalCenter\SearchDevice\VoicePanelScenePage.cs" />
@@ -190,49 +174,55 @@
     <Compile Include="$(MSBuildThisFileDirectory)Entity\Device\SBK_SceneListObj.cs" />
     <Compile Include="$(MSBuildThisFileDirectory)UI\UI2\4-PersonalCenter\SearchDevice\VoicePanelSettingPage.cs" />
     <Compile Include="$(MSBuildThisFileDirectory)UI\UI2\4-PersonalCenter\SearchDevice\VoicePanelSceneListPage.cs" />
-    <Compile Include="$(MSBuildThisFileDirectory)UI\UI2\3-Intelligence\Automation\AddLogic.cs" />
-    <Compile Include="$(MSBuildThisFileDirectory)UI\UI2\3-Intelligence\Automation\LogicView\TopView.cs" />
-    <Compile Include="$(MSBuildThisFileDirectory)UI\UI2\3-Intelligence\Automation\LogicView\AddOutputInputView.cs" />
-
-    <Compile Include="$(MSBuildThisFileDirectory)UI\UI2\3-Intelligence\Automation\LogicView\AddOutputInputTextView.cs" />
-    <Compile Include="$(MSBuildThisFileDirectory)UI\UI2\3-Intelligence\Automation\LogicView\TextSize.cs" />
-    <Compile Include="$(MSBuildThisFileDirectory)UI\UI2\3-Intelligence\Automation\LogicView\LogicAddView.cs" />
-    <Compile Include="$(MSBuildThisFileDirectory)UI\UI2\3-Intelligence\Automation\LogicView\LogicTypeTitleView.cs" />
-    <Compile Include="$(MSBuildThisFileDirectory)UI\UI2\3-Intelligence\Automation\LogicView\SaveView.cs" />
-    <Compile Include="$(MSBuildThisFileDirectory)UI\UI2\3-Intelligence\Automation\AddInputType.cs" />
-    <Compile Include="$(MSBuildThisFileDirectory)UI\UI2\3-Intelligence\Automation\TimeTpye.cs" />
-    <Compile Include="$(MSBuildThisFileDirectory)UI\UI2\3-Intelligence\Automation\Logic.cs" />
-    <Compile Include="$(MSBuildThisFileDirectory)UI\UI2\3-Intelligence\Automation\LogicView\TimeView.cs" />
-    <Compile Include="$(MSBuildThisFileDirectory)UI\UI2\3-Intelligence\Automation\LogicView\SelectTypeView.cs" />
-    <Compile Include="$(MSBuildThisFileDirectory)UI\UI2\3-Intelligence\Automation\LogicMethod.cs" />
-    <Compile Include="$(MSBuildThisFileDirectory)UI\UI2\3-Intelligence\Automation\LogicView\TimeHorizonView.cs" />
-    <Compile Include="$(MSBuildThisFileDirectory)UI\UI2\3-Intelligence\Automation\InpOrOutLogicMethod.cs" />
-    <Compile Include="$(MSBuildThisFileDirectory)UI\UI2\3-Intelligence\Automation\FunTpye.cs" />
-    <Compile Include="$(MSBuildThisFileDirectory)UI\UI2\3-Intelligence\Automation\LogicView\FunAllAreaView.cs" />
-    <Compile Include="$(MSBuildThisFileDirectory)UI\UI2\3-Intelligence\Automation\LogicView\AreaView.cs" />
-    <Compile Include="$(MSBuildThisFileDirectory)UI\UI2\3-Intelligence\Automation\DeviceFunList.cs" />
-    <Compile Include="$(MSBuildThisFileDirectory)UI\UI2\3-Intelligence\Automation\LogicView\SwitchView.cs" />
-    <Compile Include="$(MSBuildThisFileDirectory)UI\UI2\3-Intelligence\Automation\AddTarget.cs" />
-    <Compile Include="$(MSBuildThisFileDirectory)UI\UI2\3-Intelligence\Automation\LogicView\SingleLogicView.cs" />
-    <Compile Include="$(MSBuildThisFileDirectory)UI\UI2\3-Intelligence\Automation\MainView.cs" />
-    <Compile Include="$(MSBuildThisFileDirectory)UI\UI2\3-Intelligence\Automation\LogicView\DateView.cs" />
-    <Compile Include="$(MSBuildThisFileDirectory)UI\UI2\3-Intelligence\Automation\LogicView\MonView.cs" />
-    <Compile Include="$(MSBuildThisFileDirectory)UI\UI2\3-Intelligence\Automation\Set.cs" />
-    <Compile Include="$(MSBuildThisFileDirectory)UI\UI2\3-Intelligence\Automation\LogicView\ConfirmPopView.cs" />
-    <Compile Include="$(MSBuildThisFileDirectory)UI\UI2\3-Intelligence\Automation\LogicView\EditPopView.cs" />
-    <Compile Include="$(MSBuildThisFileDirectory)UI\UI2\3-Intelligence\Automation\LogicView\TipPopView.cs" />
+    <Compile Include="$(MSBuildThisFileDirectory)DAL\Server\NewAPI.cs" />
+    <Compile Include="$(MSBuildThisFileDirectory)DAL\Server\HttpUtil.cs" />
+    <Compile Include="$(MSBuildThisFileDirectory)Common\Utlis.cs" />
+    <Compile Include="$(MSBuildThisFileDirectory)DAL\Server\IMessageCommon.cs" />
+    <Compile Include="$(MSBuildThisFileDirectory)DAL\Server\NewApiRes.cs" />
+    <Compile Include="$(MSBuildThisFileDirectory)UI\UI2\4-PersonalCenter\AccountBindInfo\NewBindAccountPage.cs" />
+    <Compile Include="$(MSBuildThisFileDirectory)UI\UI2\4-PersonalCenter\AccountBindInfo\NewBindVerificationCodePage.cs" />
+    <Compile Include="$(MSBuildThisFileDirectory)Common\HDLCommon.cs" />
+    <Compile Include="$(MSBuildThisFileDirectory)Common\Constant.cs" />
+    <Compile Include="$(MSBuildThisFileDirectory)UI\UI0-Public\Widget\TextButton.cs" />
+    <Compile Include="$(MSBuildThisFileDirectory)UI\UI1-Login\SelectServerDialog.cs" />
+    <Compile Include="$(MSBuildThisFileDirectory)DAL\DriverLayer\Control.cs" />
+    <Compile Include="$(MSBuildThisFileDirectory)DAL\DriverLayer\Control_TcpClient.cs" />
+    <Compile Include="$(MSBuildThisFileDirectory)DAL\DriverLayer\Control_TcpServer.cs" />
+    <Compile Include="$(MSBuildThisFileDirectory)DAL\DriverLayer\Control_Udp.cs" />
+    <Compile Include="$(MSBuildThisFileDirectory)DAL\DriverLayer\CRC.cs" />
+    <Compile Include="$(MSBuildThisFileDirectory)DAL\DriverLayer\Packet.cs" />
+    <Compile Include="$(MSBuildThisFileDirectory)DAL\DriverLayer\Target.cs" />
+    <Compile Include="$(MSBuildThisFileDirectory)DAL\DriverLayer\UdpSocket.cs" />
+    <Compile Include="$(MSBuildThisFileDirectory)DAL\DriverLayer\A_Protocol_Common.cs" />
+    <Compile Include="$(MSBuildThisFileDirectory)DAL\Mqtt\MqttClient.cs" />
+    <Compile Include="$(MSBuildThisFileDirectory)UI\UI2\4-PersonalCenter\MyQRCodePage.cs" />
+    <Compile Include="$(MSBuildThisFileDirectory)UI\UI0-Public\Widget\ListCellView.cs" />
+    <Compile Include="$(MSBuildThisFileDirectory)UI\UI0-Public\Widget\UpdateTipDialog.cs" />
+    <Compile Include="$(MSBuildThisFileDirectory)UI\UI2\4-PersonalCenter\MyServerInfoPage.cs" />
+    <Compile Include="$(MSBuildThisFileDirectory)UI\UI2\4-PersonalCenter\AboutOn\AboutOnPage.cs" />
+    <Compile Include="$(MSBuildThisFileDirectory)UI\UI2\4-PersonalCenter\AboutOn\FunctionIntroductionPage.cs" />
+    <Compile Include="$(MSBuildThisFileDirectory)UI\UI2\4-PersonalCenter\AboutOn\ComplaintsPage.cs" />
+    <Compile Include="$(MSBuildThisFileDirectory)UI\UI0-Public\Widget\EmptyTipView.cs" />
+    <Compile Include="$(MSBuildThisFileDirectory)UI\UI0-Public\Widget\LineView.cs" />
+    <Compile Include="$(MSBuildThisFileDirectory)UI\UI0-Public\Widget\ConfirmDialog.cs" />
+    <Compile Include="$(MSBuildThisFileDirectory)UI\UI0-Public\Widget\WebViewDialog.cs" />
+    <Compile Include="$(MSBuildThisFileDirectory)UI\UI2\4-PersonalCenter\GetSupport\FAQHelpPage.cs" />
+    <Compile Include="$(MSBuildThisFileDirectory)UI\UI0-Public\Widget\ListIconCellView.cs" />
+    <Compile Include="$(MSBuildThisFileDirectory)UI\UI2\4-PersonalCenter\GetSupport\QuestionListPage.cs" />
+    <Compile Include="$(MSBuildThisFileDirectory)UI\UI2\4-PersonalCenter\GetSupport\GetSupportPage.cs" />
+    <Compile Include="$(MSBuildThisFileDirectory)UI\UI2\4-PersonalCenter\RoomListManage\Transfer\TransferConfirmPage.cs" />
+    <Compile Include="$(MSBuildThisFileDirectory)UI\UI0-Public\Widget\ConfirmButton.cs" />
   </ItemGroup>
   <ItemGroup>
     <Folder Include="$(MSBuildThisFileDirectory)UI\" />
     <Folder Include="$(MSBuildThisFileDirectory)DAL\" />
-    <Folder Include="$(MSBuildThisFileDirectory)DAL\Net\" />
+    <Folder Include="$(MSBuildThisFileDirectory)DAL\Mqtt\" />
     <Folder Include="$(MSBuildThisFileDirectory)Common\" />
     <Folder Include="$(MSBuildThisFileDirectory)DAL\Server\" />
     <Folder Include="$(MSBuildThisFileDirectory)Entity\" />
     <Folder Include="$(MSBuildThisFileDirectory)Entity\ResponseEntity\" />
     <Folder Include="$(MSBuildThisFileDirectory)Entity\Enumerative\" />
     <Folder Include="$(MSBuildThisFileDirectory)Entity\Function\" />
-    <Folder Include="$(MSBuildThisFileDirectory)DriverLayer\" />
     <Folder Include="$(MSBuildThisFileDirectory)UI\UI2\FuntionControlView\AC\" />
     <Folder Include="$(MSBuildThisFileDirectory)UI\UI2\4-PersonalCenter\UnlockSetting\" />
     <Folder Include="$(MSBuildThisFileDirectory)UI\UI2\FuntionControlView\FoolHeating\" />
@@ -245,9 +235,12 @@
     <Folder Include="$(MSBuildThisFileDirectory)UI\UI2\3-Intelligence\Automation\" />
     <Folder Include="$(MSBuildThisFileDirectory)UI\UI2\3-Intelligence\Scene\" />
     <Folder Include="$(MSBuildThisFileDirectory)UI\UI2\FuntionControlView\Panel\" />
-    <Folder Include="$(MSBuildThisFileDirectory)DriverLayer\BLL\" />
     <Folder Include="$(MSBuildThisFileDirectory)UI\UI2\4-PersonalCenter\SearchDevice\" />
     <Folder Include="$(MSBuildThisFileDirectory)Entity\Device\" />
-    <Folder Include="$(MSBuildThisFileDirectory)UI\UI2\3-Intelligence\Automation\LogicView\" />
+    <Folder Include="$(MSBuildThisFileDirectory)UI\UI0-Public\Widget\" />
+    <Folder Include="$(MSBuildThisFileDirectory)DAL\DriverLayer\" />
+    <Folder Include="$(MSBuildThisFileDirectory)UI\UI2\4-PersonalCenter\AboutOn\" />
+    <Folder Include="$(MSBuildThisFileDirectory)UI\UI2\4-PersonalCenter\GetSupport\" />
+    <Folder Include="$(MSBuildThisFileDirectory)UI\UI2\4-PersonalCenter\RoomListManage\Transfer\" />
   </ItemGroup>
 </Project>
\ No newline at end of file
diff --git a/HDL_ON/UI/.DS_Store b/HDL_ON/UI/.DS_Store
new file mode 100644
index 0000000..d789a88
--- /dev/null
+++ b/HDL_ON/UI/.DS_Store
Binary files differ
diff --git a/HDL_ON/UI/MainPage.cs b/HDL_ON/UI/MainPage.cs
index 1454ea6..5b1c7ba 100644
--- a/HDL_ON/UI/MainPage.cs
+++ b/HDL_ON/UI/MainPage.cs
@@ -9,15 +9,32 @@
 {
     public static class MainPage
     {
+        /// <summary>
+        /// BaseView
+        /// </summary>
         public static FrameLayout BaseView { get; internal set; }
+        /// <summary>
+        /// BasePageView
+        /// </summary>
         public static PageLayout BasePageView { get; set; }
-
+        /// <summary>
+        /// DisplayCompleted
+        /// </summary>
         public static bool DisplayCompleted = false;
 
-        public static UserInfo LoginUser;
-
+        //public static UserInfo LoginUser;
+        /// <summary>
+        /// 鐗堟湰鍙�
+        /// </summary>
         public static string VersionString = "1.0.0924";
+        ///// <summary>
+        ///// 瀹㈡埛绔被鍨�
+        ///// </summary>
+        //public static string ClientType = APIClientType.HDL_ON_PRO.ToString();
 
+        /// <summary>
+        /// 
+        /// </summary>
         public static Entity.CityInfo cityInfo = new Entity.CityInfo();
         /// <summary>
         /// 澶╂皵鍒锋柊action
@@ -32,12 +49,12 @@
         /// </summary>
         public static bool IsRemote = false;
 
-        /// <summary>
-        /// 鍏徃浠g爜
-        /// 棰勭暀绗笁鏂瑰畾鍒舵爣璁�
-        /// 0:HDL
-        /// </summary>
-        public static int Company = 0;
+        ///// <summary>
+        ///// 鍏徃浠g爜
+        ///// 棰勭暀绗笁鏂瑰畾鍒舵爣璁�
+        ///// 0:HDL
+        ///// </summary>
+        //public static int Company = 0;
 
         /// <summary>
         /// 鏄惁鍏ㄩ潰灞忔墜鏈�
@@ -69,50 +86,42 @@
                 BaseView = Application.MainPage;
                 Application.MainPage.BackgroundColor = CSS_Color.MainBackgroundColor;
 
-                //BusSocket.Start();
-                //CommonPage.InitReceiveEvent();
-
-                LoginUser = Newtonsoft.Json.JsonConvert.DeserializeObject<UserInfo>(System.Text.Encoding.UTF8.GetString(FileUtils.ReadFile("UserInfo_File")));
+                //LoginUser = Newtonsoft.Json.JsonConvert.DeserializeObject<UserInfo>(System.Text.Encoding.UTF8.GetString(FileUtils.ReadFile("UserInfo_File")));
                 //鍒ゆ柇闇�涓嶉渶瑕佺櫥褰曪紝鏈夋病鏈夌櫥褰曪紝鎴栬�呯櫥褰曟槸鍚﹁繃鏈燂紝
-                if (LoginUser == null || !LoginUser.IsLogin)
+                if (UserInfo.Current == null || !UserInfo.Current.IsLogin)
                 {
-                    GoLoginPage(LoginUser);
+                    GoLoginPage(UserInfo.Current);
                 }
                 else
                 {
-                //UdpSocket._BusSocket.Start();
-                    //if (Entity.DB_ResidenceData.residenceData.GatewayType == 1)
-                    //{
-                    //    BusSocket.Start();
-                    //    CommonPage.InitReceiveEvent();
-                    //    Control.ReadGatewayIPAddress();
-                    //}
-                    //else
-                    //{
-                    //    BusSocket.Start();
-                    //    CommonPage.InitReceiveEvent();
-                    //}
-
+                    new System.Threading.Thread(() =>
+                    {
+                        var pm = new DAL.Server.HttpServerRequest();
+                        pm.RefreshToken();//鍒锋柊Token
+                        pm.GetHomePager();//鍒锋柊浣忓畢淇℃伅
+                    })
+                    { IsBackground = true }.Start();
                     new System.Threading.Thread(() =>
                     {
                         var pm =new DAL.Server.HttpServerRequest();
                         pm.GetUserInfo();//鍒锋柊涓汉淇℃伅
                     })
                     { IsBackground = true }.Start();
-                    new System.Threading.Thread(() =>
-                    {
-                        var pm = new DAL.Server.HttpServerRequest();
-                        pm.GetHomePager();//鍒锋柊浣忓畢淇℃伅
-                    })
-                    { IsBackground = true }.Start();
+                    
                     GoUserPage();
                     //鍚姩瀵嗙爜楠岃瘉
                     new AppUnlockPage().LoadPage();
                     //璇诲彇闊充箰淇℃伅
                     UI.Music.A31MusicModel.ReadMusicStates();
+                    //鎼滅储缃戝叧
+
 #if DEBUG
-                    //new HDL_ON.DAL.Net.TcpListener().OpenServer(8586);
-#endif           
+                    //Entity.DB_ResidenceData.residenceData.residenceGatewayMAC = "4E47323347591243";
+                    //Entity.DB_ResidenceData.residenceData.GatewayType = 0;
+                    Entity.DB_ResidenceData.residenceData.residenceGatewayMAC = "123456789AAAAAAA";
+                    Entity.DB_ResidenceData.residenceData.GatewayType = 1;
+#endif
+                    DriverLayer.Control.Ins.SearchLoaclGateway();
                 }
             }
             catch (Exception ex)
@@ -130,7 +139,7 @@
         /// <summary>
         /// 杩涘叆鐧诲綍鐣岄潰
         /// </summary>
-        public static void GoLoginPage(UserInfo userInfo =null)
+        public static void GoLoginPage(UserInfo userInfo = null)
         {
             BaseView.RemoveAll();
             BaseView.BackgroundColor = CSS_Color.BackgroundColor;
@@ -184,5 +193,7 @@
             Console.WriteLine(msg);
 #endif
         }
+
+
     }
 }
diff --git a/HDL_ON/UI/UI0-Public/AppUnlockPage.cs b/HDL_ON/UI/UI0-Public/AppUnlockPage.cs
index b248f49..c5bd852 100644
--- a/HDL_ON/UI/UI0-Public/AppUnlockPage.cs
+++ b/HDL_ON/UI/UI0-Public/AppUnlockPage.cs
@@ -9,7 +9,7 @@
     {
         void LoadOption()
         {
-            if (MainPage.LoginUser == null)
+            if ( UserInfo.Current == null)
             {
                 return;
             }
diff --git a/HDL_ON/UI/UI0-Public/OperationSuccessPromptPage.cs b/HDL_ON/UI/UI0-Public/OperationSuccessPromptPage.cs
index 9b7a74f..7c0c2de 100644
--- a/HDL_ON/UI/UI0-Public/OperationSuccessPromptPage.cs
+++ b/HDL_ON/UI/UI0-Public/OperationSuccessPromptPage.cs
@@ -68,8 +68,8 @@
                 Y = Application.GetRealHeight(401),
                 Gravity = Gravity.CenterHorizontal,
                 Width = Application.GetRealWidth(220),
-                Height = Application.GetRealHeight(44),
-                Radius = (uint)Application.GetRealHeight(22),
+                Height = Application.GetRealWidth(44),
+                Radius = (uint)Application.GetRealWidth(22),
                 BackgroundColor = CSS_Color.MainColor,
                 TextAlignment = TextAlignment.Center,
                 TextColor = CSS_Color.MainBackgroundColor,
diff --git a/HDL_ON/UI/UI0-Public/TopViewDiv.cs b/HDL_ON/UI/UI0-Public/TopViewDiv.cs
index 84a2cae..d561905 100644
--- a/HDL_ON/UI/UI0-Public/TopViewDiv.cs
+++ b/HDL_ON/UI/UI0-Public/TopViewDiv.cs
@@ -20,7 +20,6 @@
         /// </summary>
         FrameLayout contentView;
 
-
         /// <summary>
         /// 鍚庨��鎸夐挳
         /// </summary>
@@ -32,6 +31,11 @@
         string title;
 
         /// <summary>
+        /// 鏄惁闇�瑕佸叧闂〉闈�
+        /// </summary>
+        bool needClose = true;
+
+        /// <summary>
         /// 鍚庨��鏃惰Е鍙戝浜嬩欢
         /// </summary>
         Action backAction;
@@ -40,6 +44,19 @@
         {
             baseView = frame;
             title = str;
+        }
+
+        /// <summary>
+        /// TopViewDiv
+        /// </summary>
+        /// <param name="frame">鐖舵帶浠�</param>
+        /// <param name="title">鏍囬</param>
+        /// <param name="needClose">鏄惁闇�瑕佸叧闂〉闈�</param>
+        public TopViewDiv(FrameLayout frame, string title, bool needClose)
+        {
+            baseView = frame;
+            this.title = title;
+            this.needClose = needClose;
         }
 
         /// <summary>
@@ -70,7 +87,7 @@
             };
             baseView.AddChidren(contentView);
 
-            btnBack = new Button()
+            Button btnBackIcon = new Button()
             {
                 X = Application.GetRealWidth(10),
                 Y = Application.GetRealHeight(29),
@@ -78,13 +95,19 @@
                 Height = Application.GetRealWidth(28),
                 UnSelectedImagePath = "Public/BackIcon.png",
             };
+            baseView.AddChidren(btnBackIcon);
+
+            btnBack = new Button()
+            {
+                Width = Application.GetRealWidth(50),
+            };
             baseView.AddChidren(btnBack);
 
             Button btnTilte = new Button()
             {
                 Gravity = Gravity.CenterHorizontal,
                 Y = Application.GetRealHeight(30),
-                Width = Application.GetRealWidth(150),
+                Width = Application.GetRealWidth(270),
                 Height = Application.GetRealHeight(25),
                 TextAlignment = TextAlignment.Center,
                 TextSize = CSS_FontSize.HeadlineFontSize,
@@ -105,6 +128,28 @@
             backAction = backAct;
 
             LoadTopView();
+        }
+
+        public void LoadTopView_RoomTop(Action backAction ,Action editAction)
+        {
+            this.backAction = backAction;
+
+            LoadTopView();
+
+            var btnSetting = new Button()
+            {
+                X = Application.GetRealWidth(337),
+                Y = Application.GetRealHeight(29),
+                Width = Application.GetMinRealAverage(28),
+                Height = Application.GetMinRealAverage(28),
+                UnSelectedImagePath = "Public/FuncInfoSetIcon.png",
+            };
+            contentView.AddChidren(btnSetting);
+
+            btnSetting.MouseUpEventHandler = (sender, e) =>
+            {
+                editAction();
+            };
         }
 
         /// <summary>
@@ -128,7 +173,7 @@
             };
             contentView.AddChidren(btnSetting);
 
-            btnSetting.MouseUpEventHandler += (sender, e) =>
+            btnSetting.MouseUpEventHandler = (sender, e) =>
             {
                 var infoView = new FunctionBaseInfoSetPage(function, action);
                 MainPage.BasePageView.AddChidren(infoView);
diff --git a/HDL_ON/UI/UI0-Public/TopViewDivBLL.cs b/HDL_ON/UI/UI0-Public/TopViewDivBLL.cs
index bc222ab..c2f6a6c 100644
--- a/HDL_ON/UI/UI0-Public/TopViewDivBLL.cs
+++ b/HDL_ON/UI/UI0-Public/TopViewDivBLL.cs
@@ -15,13 +15,16 @@
         {
             btnBack.MouseUpEventHandler = (sender, e) => {
                 backAction?.Invoke();
-                if (baseView != null)
+                if (needClose)
                 {
-                    baseView.RemoveFromParent();
-                }
-                if (baseDialog != null)
-                {
-                    baseDialog.Close();
+                    if (baseView != null)
+                    {
+                        baseView.RemoveFromParent();
+                    }
+                    if (baseDialog != null)
+                    {
+                        baseDialog.Close();
+                    }
                 }
             };
         }
diff --git a/HDL_ON/UI/UI0-Public/UpdataTcpResidenceDataDialog.cs b/HDL_ON/UI/UI0-Public/UpdataSidDataDialog.cs
similarity index 78%
rename from HDL_ON/UI/UI0-Public/UpdataTcpResidenceDataDialog.cs
rename to HDL_ON/UI/UI0-Public/UpdataSidDataDialog.cs
index 85ea5ad..ce3a5f1 100644
--- a/HDL_ON/UI/UI0-Public/UpdataTcpResidenceDataDialog.cs
+++ b/HDL_ON/UI/UI0-Public/UpdataSidDataDialog.cs
@@ -5,7 +5,7 @@
 
 namespace HDL_ON.UI
 {
-    public class UpdataTcpResidenceDataDialog 
+    public class UpdataSidDataDialog 
     {
         public void ShowDialog(List<Function> sidObjects,string oidJsonString)
         {
@@ -29,9 +29,9 @@
         public void UpdataFunctionList(List<Function> sidObjects, string oidJsonString)//, List<FunctionOid> functionOids)
         {
             var obj = Newtonsoft.Json.JsonConvert.DeserializeObject<Newtonsoft.Json.Linq.JObject>(oidJsonString);
-            var functionOids = Newtonsoft.Json.JsonConvert.DeserializeObject<List<FunctionOid>>(obj.GetValue("objects").ToString());
+            var functionOids = Newtonsoft.Json.JsonConvert.DeserializeObject<List<DeviceModule>>(obj.GetValue("objects").ToString());
             
-            DB_ResidenceData.SaveFunctionOidJsonDataList(oidJsonString);
+            DB_ResidenceData.SaveOidList(oidJsonString);
             DB_ResidenceData.functionList.ClearAllDeviceFunctionList();
             DB_ResidenceData.DelAllFunctionData();
             foreach (var sidObj in sidObjects)
@@ -39,9 +39,11 @@
                 var oid = functionOids.Find((o) =>  o.oid == sidObj.sid.Substring(0, 16));
                 if(oid!=null)
                 {
+                    var oidNetId = Convert.ToByte(oid.addresses.Substring(0, 2),16);
+                    var oidDevId = Convert.ToByte(oid.addresses.Substring(2, 2),16);
                     sidObj.bus_Data = new BusData();
-                    sidObj.bus_Data.SubnetID = Convert.ToByte(oid.net_id, 16);
-                    sidObj.bus_Data.DeviceID = Convert.ToByte(oid.dev_id, 16);
+                    sidObj.bus_Data.SubnetID = oidNetId;
+                    sidObj.bus_Data.DeviceID = oidDevId;
                     sidObj.bus_Data.LoopID = Convert.ToByte(sidObj.sid.Substring(20, 4),16);
                 }
                 DB_ResidenceData.functionList.AddDeviceFunction(sidObj);
diff --git a/HDL_ON/UI/UI0-Public/Widget/ConfirmButton.cs b/HDL_ON/UI/UI0-Public/Widget/ConfirmButton.cs
new file mode 100644
index 0000000..32b2f6e
--- /dev/null
+++ b/HDL_ON/UI/UI0-Public/Widget/ConfirmButton.cs
@@ -0,0 +1,28 @@
+锘縰sing System;
+using HDL_ON.UI.CSS;
+using Shared;
+
+namespace HDL_ON.UI
+{
+    /// <summary>
+    /// 閫氱敤纭鎸夐挳
+    /// </summary>
+    public class ConfirmButton : Button
+    {
+        public ConfirmButton()
+        {
+            Gravity = Gravity.CenterHorizontal;
+            Width = Application.GetRealWidth(220);
+            Height = Application.GetRealWidth(44);
+            BackgroundColor = CSS_Color.MainColor;
+            TextAlignment = TextAlignment.Center;
+            TextColor = CSS_Color.MainBackgroundColor;
+            TextSize = CSS_FontSize.SubheadingFontSize;
+            IsBold = true;
+            Radius = (uint)Application.GetRealWidth(22);
+            BorderColor = 0x00000000;
+            BorderWidth = 0;
+
+        }
+    }
+}
diff --git a/HDL_ON/UI/UI0-Public/Widget/ConfirmDialog.cs b/HDL_ON/UI/UI0-Public/Widget/ConfirmDialog.cs
new file mode 100644
index 0000000..40f7b1d
--- /dev/null
+++ b/HDL_ON/UI/UI0-Public/Widget/ConfirmDialog.cs
@@ -0,0 +1,180 @@
+锘縰sing System;
+using Shared;
+using HDL_ON.UI.CSS;
+
+namespace HDL_ON.UI
+{
+    /// <summary>
+    /// 閫氱敤浜屾纭鐣岄潰
+    /// 鍙互鑷畾涔夋寜閽枃瀛椼�佹彁绀哄唴瀹规敮鎸佸琛屾樉绀�
+    /// </summary>
+    public class ConfirmDialog : Dialog
+    {
+        /// <summary>
+        /// 
+        /// </summary>
+        public ConfirmDialog()
+        {
+
+        }
+
+        /// <summary>
+        /// 鍒濆鍖朌ialog
+        /// </summary>
+        /// <param name="titleStr"></param>
+        /// <param name="msgStr"></param>
+        /// <param name="okAction"></param>
+        /// <param name="cancelAction"></param>
+        /// <param name="cancelID"></param>
+        /// <param name="confirmID"></param>
+        void ShowDialogBase(string titleStr, string msgStr, Action okAction, Action cancelAction, int cancelID = StringId.Cancel, int confirmID = StringId.Confirm)
+        {
+            this.BackgroundColor = CSS_Color.DialogTransparentColor1;
+
+            FrameLayout contentView = new FrameLayout()
+            {
+                Gravity = Gravity.Center,
+                Width = Application.GetRealWidth(270),
+                Height = Application.GetRealHeight(140),
+                BackgroundColor = CSS_Color.MainBackgroundColor,
+                BorderColor = 0x00000000,
+                BorderWidth = 0,
+                Radius = (uint)Application.GetMinRealAverage(10),
+            };
+            this.AddChidren(contentView);
+
+            Button btnTitle = new Button()
+            {
+                Y = Application.GetRealHeight(20),
+                Height = Application.GetRealHeight(22),
+                TextColor = CSS_Color.MainColor,
+                TextSize = CSS_FontSize.SubheadingFontSize,
+                TextAlignment = TextAlignment.Center,
+                IsBold = true,
+                Text = titleStr,
+            };
+            contentView.AddChidren(btnTitle);
+
+            //鎻愮ず鍐呭鎸夐挳
+            Button btnMsg = new Button()
+            {
+                Y = btnTitle.Bottom + Application.GetRealHeight(4),
+                X = Application.GetRealWidth(6),
+                Height = Application.GetRealHeight(46),
+                Width = Application.GetRealWidth(258),
+                TextAlignment = TextAlignment.Center,
+                TextColor = CSS_Color.TextualColor,
+                TextSize = CSS_FontSize.PromptFontSize_FirstLevel,
+                Text = msgStr,
+                IsMoreLines = true,
+            };
+            contentView.AddChidren(btnMsg);
+
+            Button btnLine = new Button()
+            {
+                Y = Application.GetRealHeight(96),
+                Height = Application.GetRealHeight(1),
+                Width = Application.GetRealWidth(270 / 2),
+                BackgroundColor = CSS_Color.DividingLineColor,
+            };
+            contentView.AddChidren(btnLine);
+
+            Button btnCancel = new Button()
+            {
+                Y = btnLine.Bottom,
+                Width = Application.GetRealWidth(135),
+                Height = Application.GetRealHeight(43),
+                TextAlignment = TextAlignment.Center,
+                TextColor = CSS_Color.TextualColor,
+                TextSize = CSS_FontSize.SubheadingFontSize,
+                TextID = cancelID,
+            };
+            contentView.AddChidren(btnCancel);
+
+            Button btnConfirm = new Button()
+            {
+                X = btnCancel.Right,
+                Y = btnLine.Y,
+                Width = Application.GetRealWidth(135),
+                Height = Application.GetRealHeight(45),
+                TextAlignment = TextAlignment.Center,
+                //TextColor = CSS_Color.TextualColor,
+                TextSize = CSS_FontSize.SubheadingFontSize,
+                TextColor = CSS_Color.MainBackgroundColor,
+                BackgroundColor = CSS_Color.MainColor,
+                TextID = confirmID,
+            };
+            contentView.AddChidren(btnConfirm);
+            //渚嬶細鍙充笅鍦嗚 澶у皬涓�50
+            int mRectCornerID = HDLUtils.RectCornerBottomRight;
+            btnConfirm.SetCornerWithSameRadius((uint)Application.GetMinRealAverage(10), mRectCornerID);
+
+            btnCancel.MouseUpEventHandler += (sender, e) =>
+            {
+                this.Close();
+                cancelAction?.Invoke();
+            };
+
+            btnConfirm.MouseUpEventHandler += (sender, e) =>
+            {
+                this.Close();
+                okAction?.Invoke();
+            };
+
+            this.Show();
+        }
+
+        /// <summary>
+        /// 鍔犺浇鎻愮ずDialog
+        /// </summary>
+        /// <param name="titleId"></param>
+        /// <param name="msgId"></param>
+        /// <param name="callBackAction"></param>
+        public void ShowDialog(int titleId, int msgId, Action okAction, Action cancelAction = null)
+        {
+            this.ShowDialogBase(Language.StringByID(titleId), Language.StringByID(msgId), okAction, cancelAction);
+        }
+
+        /// <summary>
+        /// 鍔犺浇鎻愮ずDialog
+        /// 鍙互鑷畾涔夋寜閽枃瀛�
+        /// </summary>
+        /// <param name="titleId"></param>
+        /// <param name="msgId"></param>
+        /// <param name="okAction"></param>
+        /// <param name="cancelAction"></param>
+        /// <param name="cancelID"></param>
+        /// <param name="confirmID"></param>
+        public void ShowDialog(int titleId, int msgId, Action okAction, Action cancelAction, int cancelID, int confirmID)
+        {
+            this.ShowDialogBase(Language.StringByID(titleId), Language.StringByID(msgId), okAction, cancelAction, cancelID, confirmID);
+        }
+
+        /// <summary>
+        /// 鍔犺浇鎻愮ずDialog
+        /// </summary>
+        /// <param name="titleId"></param>
+        /// <param name="msgId"></param>
+        /// <param name="callBackAction"></param>
+        public void ShowDialog(string titleStr, string msgStr, Action okAction, Action cancelAction = null)
+        {
+            this.ShowDialogBase(titleStr, msgStr, okAction, cancelAction);
+        }
+
+        /// <summary>
+        /// 鍔犺浇鎻愮ずDialog
+        /// 鍙互鑷畾涔夋寜閽枃瀛�
+        /// </summary>
+        /// <param name="titleStr"></param>
+        /// <param name="msgStr"></param>
+        /// <param name="okAction"></param>
+        /// <param name="cancelAction"></param>
+        /// <param name="cancelID"></param>
+        /// <param name="confirmID"></param>
+        public void ShowDialog(string titleStr, string msgStr, Action okAction, Action cancelAction, int cancelID, int confirmID)
+        {
+            this.ShowDialogBase(titleStr, msgStr, okAction, cancelAction, cancelID, confirmID);
+        }
+
+    }
+}
diff --git a/HDL_ON/UI/UI0-Public/Widget/EmptyTipView.cs b/HDL_ON/UI/UI0-Public/Widget/EmptyTipView.cs
new file mode 100644
index 0000000..877297c
--- /dev/null
+++ b/HDL_ON/UI/UI0-Public/Widget/EmptyTipView.cs
@@ -0,0 +1,55 @@
+锘縰sing System;
+using HDL_ON.UI.CSS;
+using Shared;
+
+namespace HDL_ON.UI
+{
+    /// <summary>
+    /// 閫氱敤鎻愮ずView--鍐呭涓虹┖
+    /// 绌虹┖濡備篃
+    /// </summary>
+    public class EmptyTipView : FrameLayout
+    {
+        /// <summary>
+        /// 鎻愮ず鏂囧瓧
+        /// </summary>
+        public Button BtnTipNotText;
+
+        /// <summary>
+        /// 鎻愮ず鍥剧墖
+        /// </summary>
+        public Button BtnTipNot;
+
+        /// <summary>
+        /// 
+        /// </summary>
+        public EmptyTipView()
+        {
+            int tipHeight = Application.GetRealWidth(180);
+
+            this.Height = tipHeight + Application.GetRealHeight(17);
+
+            BtnTipNot = new Button()
+            {
+                Gravity = Gravity.CenterHorizontal,
+                Width = tipHeight,
+                Height = tipHeight,
+                UnSelectedImagePath = "TipNot.png",
+            };
+            this.AddChidren(BtnTipNot);
+
+            //绌虹┖濡備篃
+            Button btnTipNotText = new Button()
+            {
+                Y = tipHeight,
+                Height = Application.GetRealHeight(17),
+                TextID = StringId.ContentIsEmpty,
+                TextAlignment = TextAlignment.Center,
+                TextColor = CSS_Color.TextualColor,
+                TextSize = CSS_FontSize.PromptFontSize_FirstLevel,
+            };
+            this.AddChidren(btnTipNotText);
+        }
+
+    }
+}
diff --git a/HDL_ON/UI/UI0-Public/Widget/LineView.cs b/HDL_ON/UI/UI0-Public/Widget/LineView.cs
new file mode 100644
index 0000000..7ceef9c
--- /dev/null
+++ b/HDL_ON/UI/UI0-Public/Widget/LineView.cs
@@ -0,0 +1,34 @@
+锘縰sing System;
+using Shared;
+using HDL_ON.UI.CSS;
+
+namespace HDL_ON.UI
+{
+    /// <summary>
+    /// 閫氱敤LineView
+    /// 鍒嗗壊绾縑iew
+    /// </summary>
+    public class LineView : FrameLayout
+    {
+        //public LineView()
+        //{
+        //    X = Application.GetRealWidth(16);
+        //    Height = Application.GetRealHeight(1);
+        //    Width = Application.GetRealWidth(343);
+        //    BackgroundColor = CSS_Color.DividingLineColor;
+        //}
+
+        /// <summary>
+        /// 
+        /// </summary>
+        /// <param name="parentHeight"></param>
+        public LineView(int parentHeight)
+        {
+            X = Application.GetRealWidth(16);
+            Height = Application.GetRealHeight(1);
+            Width = Application.GetRealWidth(343);
+            BackgroundColor = CSS_Color.DividingLineColor;
+            Y = parentHeight - Height;
+        }
+    }
+}
diff --git a/HDL_ON/UI/UI0-Public/Widget/ListCellView.cs b/HDL_ON/UI/UI0-Public/Widget/ListCellView.cs
new file mode 100644
index 0000000..db429f7
--- /dev/null
+++ b/HDL_ON/UI/UI0-Public/Widget/ListCellView.cs
@@ -0,0 +1,126 @@
+锘縰sing System;
+using HDL_ON.UI.CSS;
+using Shared;
+
+namespace HDL_ON.UI
+{
+    /// <summary>
+    /// 閫氱敤ListCellView
+    /// 鏀寔瀹氫箟 涓绘爣棰樸�佸壇鏍囬銆乬o鍥炬爣銆佷笅鍒掔嚎銆佺偣鍑讳簨浠�
+    /// </summary>
+    public class ListCellView : FrameLayout
+    {
+        /// <summary>
+        /// 鏍囬
+        /// </summary>
+        public Button BtnTilte;
+        /// <summary>
+        /// 鍓爣棰�
+        /// </summary>
+        public Button BtnSubtitle;
+        /// <summary>
+        /// 绠ご鍥炬爣
+        /// </summary>
+        public Button BtnGo;
+        /// <summary>
+        /// 鍒嗗壊绾�
+        /// </summary>
+        public LineView LineView;
+        /// <summary>
+        /// 鐐瑰嚮瑙﹀彂瀵逛簨浠�
+        /// </summary>
+        public Action GoAction;
+
+
+        /// <summary>
+        /// ListCellView 榛樿
+        /// </summary>
+        public ListCellView()
+        {
+            ShowView();
+        }
+
+        /// <summary>
+        /// ListCellView 鎸囧畾鍙傛暟
+        /// </summary>
+        /// <param name="tilteText"></param>
+        /// <param name="subtitleText"></param>
+        /// <param name="action"></param>
+        /// <param name="isShowImageBtn"></param>
+        public ListCellView(string tilteText, string subtitleText, Action action, bool isShowImageBtn = true)
+        {
+
+            ShowView(tilteText, subtitleText, action, isShowImageBtn);
+        }
+
+        /// <summary>
+        /// 
+        /// </summary>
+        /// <param name="tilteText"></param>
+        /// <param name="subtitleText"></param>
+        /// <param name="action"></param>
+        /// <param name="isShowImageBtn"></param>
+        void ShowView(string tilteText = "", string subtitleText = "", Action action = null, bool isShowImageBtn = true)
+        {
+            this.BackgroundColor = CSS_Color.MainBackgroundColor;
+            this.Height = Application.GetRealHeight(50);
+            this.GoAction = action;
+            /// <summary>
+            /// 鏍囬
+            /// </summary>
+            BtnTilte = new Button()
+            {
+                X = Application.GetRealWidth(16),
+                Width = Application.GetRealWidth(120),
+                TextAlignment = TextAlignment.CenterLeft,
+                TextColor = CSS_Color.FirstLevelTitleColor,
+                TextSize = CSS_FontSize.SubheadingFontSize,
+                Text = tilteText,
+            };
+            this.AddChidren(BtnTilte);
+            /// <summary>
+            /// 鍓爣棰�
+            /// </summary>
+            BtnSubtitle = new Button()
+            {
+                X = Application.GetRealWidth(100),
+                Width = Application.GetRealWidth(230),
+                TextAlignment = TextAlignment.CenterRight,
+                TextColor = CSS_Color.PromptingColor1,
+                TextSize = CSS_FontSize.TextFontSize,
+                Text = subtitleText,
+
+            };
+            this.AddChidren(BtnSubtitle);
+
+            /// <summary>
+            /// 鍓嶈繘鍥炬爣
+            /// </summary>
+            BtnGo = new Button()
+            {
+                X = Application.GetRealWidth(339),
+                Gravity = Gravity.CenterVertical,
+                Width = Application.GetMinRealAverage(16),
+                Height = Application.GetMinRealAverage(16),
+                UnSelectedImagePath = "Public/Right.png",
+            };
+
+            if (isShowImageBtn)
+            {
+                this.AddChidren(BtnGo);
+            }
+
+            LineView = new LineView(this.Height);
+            this.AddChidren(LineView);
+
+            EventHandler<MouseEventArgs> eventHandler = (sender, e) =>
+            {
+                GoAction?.Invoke();
+            };
+            BtnTilte.MouseUpEventHandler = eventHandler;
+            BtnSubtitle.MouseUpEventHandler = eventHandler;
+            BtnGo.MouseUpEventHandler = eventHandler;
+
+        }
+    }
+}
diff --git a/HDL_ON/UI/UI0-Public/Widget/ListIconCellView.cs b/HDL_ON/UI/UI0-Public/Widget/ListIconCellView.cs
new file mode 100644
index 0000000..2b1a000
--- /dev/null
+++ b/HDL_ON/UI/UI0-Public/Widget/ListIconCellView.cs
@@ -0,0 +1,100 @@
+锘縰sing System;
+using HDL_ON.UI.CSS;
+using Shared;
+
+namespace HDL_ON.UI
+{
+    /// <summary>
+    /// 閫氱敤ListIconCellView
+    /// 鏀寔瀹氫箟 鍥炬爣銆佷富鏍囬銆乬o鍥炬爣銆佷笅鍒掔嚎銆佺偣鍑讳簨浠�
+    /// </summary>
+    public class ListIconCellView : FrameLayout
+    {
+        /// <summary>
+        /// 鍥炬爣鎸夐挳
+        /// </summary>
+        public Button BtnIcon;
+        /// <summary>
+        /// 鏍囬
+        /// </summary>
+        public Button BtnTilte;
+        /// <summary>
+        /// 绠ご鍥炬爣鎸夐挳
+        /// </summary>
+        public Button BtnGo;
+        /// <summary>
+        /// 鍒嗗壊绾�
+        /// </summary>
+        public LineView LineView;
+
+        /// <summary>
+        /// 鐐瑰嚮瑙﹀彂瀵逛簨浠�
+        /// </summary>
+        public Action GoAction;
+
+        /// <summary>
+        /// 
+        /// </summary>
+        public ListIconCellView()
+        {
+            ShowView();
+        }
+
+        /// <summary>
+        /// 
+        /// </summary>
+        void ShowView()
+        {
+            this.Height = Application.GetRealHeight(50);
+            this.BackgroundColor = CSS_Color.MainBackgroundColor;
+
+            BtnIcon = new Button()
+            {
+                X = Application.GetRealWidth(16),
+                Width = Application.GetRealWidth(24),
+                Height = Application.GetRealWidth(24),
+                Gravity = Gravity.CenterVertical,
+            };
+            this.AddChidren(BtnIcon);
+
+            /// <summary>
+            /// 鏍囬
+            /// </summary>
+            BtnTilte = new Button()
+            {
+                X = Application.GetRealWidth(52),
+                Width = Application.GetRealWidth(278),
+                TextAlignment = TextAlignment.CenterLeft,
+                TextColor = CSS_Color.FirstLevelTitleColor,
+                TextSize = CSS_FontSize.TextFontSize,
+            };
+
+            this.AddChidren(BtnTilte);
+
+            /// <summary>
+            /// 鍓嶈繘鍥炬爣
+            /// </summary>
+            BtnGo = new Button()
+            {
+                X = Application.GetRealWidth(339),
+                Gravity = Gravity.CenterVertical,
+                Width = Application.GetMinRealAverage(16),
+                Height = Application.GetMinRealAverage(16),
+                UnSelectedImagePath = "Public/Right.png",
+            };
+            this.AddChidren(BtnGo);
+
+            LineView = new LineView(this.Height);
+            this.AddChidren(LineView);
+            //LineView.Y = this.Height - LineView.Height;
+
+            EventHandler<MouseEventArgs> eventHandler = (sender, e) =>
+            {
+                GoAction?.Invoke();
+            };
+            BtnTilte.MouseUpEventHandler = eventHandler;
+            BtnGo.MouseUpEventHandler = eventHandler;
+
+        }
+    }
+}
diff --git a/HDL_ON/UI/UI0-Public/Widget/TextButton.cs b/HDL_ON/UI/UI0-Public/Widget/TextButton.cs
new file mode 100644
index 0000000..4148731
--- /dev/null
+++ b/HDL_ON/UI/UI0-Public/Widget/TextButton.cs
@@ -0,0 +1,115 @@
+锘縰sing System;
+using Shared;
+
+#if __IOS__
+using UIKit;
+using Foundation;
+#endif
+
+namespace HDL_ON.UI
+{
+    /// <summary>
+    /// TextButton
+    /// 瑙e喅iOS 鏂囨湰鍒拌竟妗嗘湁杈硅窛闂
+    /// 
+    /// </summary>
+    public class TextButton : Button
+    {
+        public TextButton()
+        {
+#if __IOS__
+            //閲嶅啓淇敼鏂囨湰鍒拌竟妗嗙殑鍐呰竟璺濅负0
+            (this.uiView as MyButton).ContentEdgeInsets = new UIEdgeInsets(0, 0, 0, 0);
+#endif
+
+        }
+
+        int _lineSpacing;
+        /// <summary>
+        /// 璁剧疆琛岄棿璺�
+        /// </summary>
+        public int LineSpacing
+        {
+            set
+            {
+                _lineSpacing = value;
+                SetButtonLineSpacing(_lineSpacing);
+            }
+        }
+
+
+#if __IOS__
+        /// <summary>
+        /// 鎸夐挳璁剧疆琛岃窛鏂规硶
+        /// </summary>
+        /// <param name="spacing"></param>
+        void SetButtonLineSpacing(int spacing)
+        {
+            UIStringAttributes stringAttributes = new UIStringAttributes
+            {
+                Font = (this.uiView as MyButton).TitleLabel.Font,
+                ForegroundColor = UIColor.Black,
+                ParagraphStyle = new NSMutableParagraphStyle() { LineSpacing = spacing }
+            };
+            var AttributedText = new NSMutableAttributedString(Text);
+            AttributedText.AddAttributes(stringAttributes, new NSRange(0, Text.Length));
+            (this.uiView as MyButton).TitleLabel.AttributedText = AttributedText;
+        }
+
+        /// <summary>
+        /// 鏄剧ず褰撳墠鏂囧瓧闇�瑕佸嚑琛�
+        /// </summary>
+        /// <returns></returns>
+        int GetNeedLinesWithWidth()
+        {
+            return 0;
+        }
+        /**
+ 
+
+// @param width 缁欏畾涓�涓搴�
+// @return 杩斿洖琛屾暟
+// */
+//- (NSInteger) needLinesWithWidth:(CGFloat) width
+//        {
+//            //鍒涘缓涓�涓猯abe
+//            UILabel * label = [[UILabel alloc]
+//            init];
+//            //font鍜屽綋鍓峫abel淇濇寔涓�鑷�
+//            label.font = self.font;
+//            NSString* text = self.text;
+//            NSInteger sum = 0;
+//            //鎬昏鏁板彈鎹㈣绗﹀奖鍝嶏紝鎵�浠ヨ繖閲岃绠楁�昏鏁帮紝闇�瑕佺敤鎹㈣绗﹀垎闅旇繖娈垫枃瀛楋紝鐒跺悗璁$畻姣忔鏂囧瓧鐨勮鏁帮紝鐩稿姞鍗虫槸鎬昏鏁般��
+//            NSArray* splitText = [text componentsSeparatedByString: @"\n"];
+//    for (NSString* sText in splitText)
+//            {
+//                label.text = sText;
+//                //鑾峰彇杩欐鏂囧瓧涓�琛岄渶瑕佺殑size
+//                CGSize textSize = [label systemLayoutSizeFittingSize: CGSizeZero];
+//                //size.width/鎵�闇�瑕佺殑width 鍚戜笂鍙栨暣灏辨槸杩欐鏂囧瓧鍗犵殑琛屾暟
+//                NSInteger lines = ceilf(textSize.width / width);
+//                //褰撴槸0鐨勬椂鍊欙紝璇存槑杩欐槸鎹㈣锛岄渶瑕佹寜涓�琛岀畻銆�
+//                lines = lines == 0 ? 1 : lines;
+//                sum += lines;
+//            }
+//            return sum;
+//            }
+
+            //#elif __Android__
+#else
+
+        /// <summary>
+        /// 鎸夐挳璁剧疆琛岃窛鏂规硶
+        /// </summary>
+        /// <param name="spacing"></param>
+        void SetButtonLineSpacing(int spacing)
+        {
+           (this.AndroidView as Android.Widget.Button).SetLineSpacing(spacing, 1);
+        }
+
+#endif
+        }
+
+
+
+}
diff --git a/HDL_ON/UI/UI0-Public/Widget/UpdateTipDialog.cs b/HDL_ON/UI/UI0-Public/Widget/UpdateTipDialog.cs
new file mode 100644
index 0000000..fb23965
--- /dev/null
+++ b/HDL_ON/UI/UI0-Public/Widget/UpdateTipDialog.cs
@@ -0,0 +1,345 @@
+锘縰sing System;
+using Shared;
+using HDL_ON.UI.CSS;
+
+namespace HDL_ON.UI
+{
+    /// <summary>
+    /// UpdateTipDialog
+    /// </summary>
+    public class UpdateTipDialog : Dialog
+    {
+
+        public UpdateTipDialog()
+        {
+        }
+
+        /// <summary>
+        /// 鍒濆鍖朌ialog
+        /// </summary>
+        /// <param name="titleStr"></param>
+        /// <param name="tipStr"></param>
+        /// <param name="msgStr"></param>
+        /// <param name="okAction"></param>
+        /// <param name="cancelAction"></param>
+        /// <param name="cancelID"></param>
+        /// <param name="confirmID"></param>
+        void ShowDialogBase(string titleStr, string tipStr, string msgStr, Action okAction, Action cancelAction, bool isForceUpdate, int cancelID = StringId.Ignore, int confirmID = StringId.Update)
+        {
+            this.BackgroundColor = CSS_Color.DialogTransparentColor1;
+
+            FrameLayout contentView = new FrameLayout()
+            {
+                Gravity = Gravity.CenterHorizontal,
+                Y = Application.GetMinRealAverage(223),
+                Width = Application.GetRealWidth(288),
+                Height = Application.GetRealHeight(302),
+                BackgroundColor = CSS_Color.MainBackgroundColor,
+                Radius = (uint)Application.GetRealWidth(12),
+                BorderWidth = 0,
+                BorderColor = 0x00000000,
+            };
+            this.AddChidren(contentView);
+
+            Button btnTitle = new Button()
+            {
+                Gravity = Gravity.CenterHorizontal,
+                Y = Application.GetMinRealAverage(95),
+                Height = Application.GetMinRealAverage(30),
+                TextAlignment = TextAlignment.Center,
+                TextColor = CSS_Color.MainColor,
+                TextSize = CSS_FontSize.EmphasisFontSize_Secondary,
+                Text = titleStr
+            };
+            contentView.AddChidren(btnTitle);
+
+            Button btnTip = new Button()
+            {
+                Gravity = Gravity.CenterHorizontal,
+                Y = btnTitle.Bottom,
+                Height = Application.GetMinRealAverage(17),
+                TextAlignment = TextAlignment.Center,
+                TextColor = CSS_Color.PromptingColor1,
+                TextSize = CSS_FontSize.PromptFontSize_FirstLevel,
+                Text = tipStr
+            };
+            contentView.AddChidren(btnTip);
+
+            int btnMesY = btnTip.Bottom + Application.GetMinRealAverage(5);
+            int lineY = Application.GetRealHeight(258);
+
+            VerticalScrolViewLayout mesView = new VerticalScrolViewLayout()
+            {
+                X = Application.GetRealWidth(16),
+                Y = btnMesY,
+                Width = contentView.Width - Application.GetRealWidth(32),
+                Height = lineY - btnMesY - Application.GetMinRealAverage(5),
+            };
+            contentView.AddChidren(mesView);
+
+            Button btnMes = new Button()
+            {
+                Gravity = Gravity.CenterHorizontal,
+                Width = mesView.Width,
+                Height = mesView.Height,
+                TextAlignment = TextAlignment.TopLeft,
+                TextColor = CSS_Color.TextualColor,
+                TextSize = CSS_FontSize.TextFontSize,
+                IsMoreLines = true,
+                Text = msgStr,
+                //BackgroundColor = CSS_Color.AuxiliaryColor2
+
+            };
+            mesView.AddChidren(btnMes);
+
+            Button btnLine = new Button()
+            {
+                Y = lineY,
+                Height = Application.GetRealHeight(1),
+                Width = contentView.Width,
+                BackgroundColor = CSS_Color.DividingLineColor,
+            };
+            contentView.AddChidren(btnLine);
+
+            if (!isForceUpdate)
+            {
+                int Width144 = Application.GetRealWidth(144);
+                Button btnCancel = new Button()
+                {
+                    Y = btnLine.Bottom,
+                    Width = Width144,
+                    Height = Application.GetRealHeight(44),
+                    TextAlignment = TextAlignment.Center,
+                    TextColor = CSS_Color.TextualColor,
+                    TextSize = CSS_FontSize.SubheadingFontSize,
+                    TextID = cancelID,
+                };
+                contentView.AddChidren(btnCancel);
+
+                Button btnConfirm = new Button()
+                {
+                    X = contentView.Width - Width144,
+                    Y = btnLine.Y,
+                    Width = Width144,
+                    Height = Application.GetRealHeight(44),
+                    TextAlignment = TextAlignment.Center,
+                    TextSize = CSS_FontSize.SubheadingFontSize,
+                    TextColor = CSS_Color.MainBackgroundColor,
+                    BackgroundColor = CSS_Color.MainColor,
+                    TextID = confirmID,
+                };
+                contentView.AddChidren(btnConfirm);
+                //渚嬶細鍙充笅鍦嗚 澶у皬涓�50
+                int mRectCornerID = HDLUtils.RectCornerBottomRight;
+                btnConfirm.SetCornerWithSameRadius((uint)Application.GetMinRealAverage(10), mRectCornerID);
+
+                btnCancel.MouseUpEventHandler += (sender, e) =>
+                {
+                    this.Close();
+                    cancelAction?.Invoke();
+                };
+
+                btnConfirm.MouseUpEventHandler += (sender, e) =>
+                {
+                    this.Close();
+                    okAction?.Invoke();
+                };
+            }
+            else
+            {
+                Button btnConfirm = new Button()
+                {
+                    Y = btnLine.Y,
+                    Width = contentView.Width,
+                    Height = Application.GetRealHeight(44),
+                    TextAlignment = TextAlignment.Center,
+                    TextSize = CSS_FontSize.SubheadingFontSize,
+                    TextColor = CSS_Color.MainBackgroundColor,
+                    BackgroundColor = CSS_Color.MainColor,
+                    TextID = confirmID,
+                };
+                contentView.AddChidren(btnConfirm);
+                //渚嬶細鍙充笅鍦嗚 澶у皬涓�50
+                int mRectCornerID = HDLUtils.RectCornerBottomRight | HDLUtils.RectCornerBottomLeft;
+                btnConfirm.SetCornerWithSameRadius((uint)Application.GetMinRealAverage(10), mRectCornerID);
+
+                btnConfirm.MouseUpEventHandler += (sender, e) =>
+                {
+                    //dialog绂佹鍏抽棴
+                    okAction?.Invoke();
+                };
+            }
+
+            Button btnHeadImage = new Button()
+            {
+                Gravity = Gravity.CenterHorizontal,
+                Y = Application.GetMinRealAverage(152),
+                Width = Application.GetMinRealAverage(160),
+                Height = Application.GetMinRealAverage(160),
+                BorderColor = 0x00000000,
+                BorderWidth = 0,
+                UnSelectedImagePath = "Public/Dialog/DialogTipTitleIcon_3.png",
+            };
+            this.AddChidren(btnHeadImage);
+
+            this.Show();
+        }
+
+
+        /// <summary>
+        /// 鍔犺浇鎻愮ず鏇存柊Dialog
+        /// </summary>
+        /// <param name="titleStr"></param>
+        /// <param name="tipStr"></param>
+        /// <param name="msgStr"></param>
+        /// <param name="okAction"></param>
+        /// <param name="cancelAction"></param>
+        public void ShowUpdateDialog(string titleStr, string tipStr, string msgStr, Action okAction, Action cancelAction = null)
+        {
+            this.ShowDialogBase(titleStr, tipStr, msgStr, okAction, cancelAction, false);
+        }
+
+        /// <summary>
+        /// 鍔犺浇寮哄埗鏇存柊Dialog
+        /// Dialog涓嶅叧闂�
+        /// </summary>
+        /// <param name="titleStr"></param>
+        /// <param name="tipStr"></param>
+        /// <param name="msgStr"></param>
+        /// <param name="okAction"></param>
+        /// <param name="cancelAction"></param>
+        public void ShowForcedUpdateDialog(string titleStr, string tipStr, string msgStr, Action okAction)
+        {
+            this.ShowDialogBase(titleStr, tipStr, msgStr, okAction, null, true);
+        }
+
+        /// <summary>
+        /// 鍒濆鍖朌ialog
+        /// </summary>
+        /// <param name="titleStr"></param>
+        /// <param name="tipStr"></param>
+        /// <param name="msgStr"></param>
+        /// <param name="okAction"></param>
+        /// <param name="cancelAction"></param>
+        /// <param name="cancelID"></param>
+        /// <param name="confirmID"></param>
+        void ShowTipDialogBase(string titleStr, string msgStr, Action okAction, int confirmID = StringId.Close)
+        {
+            this.BackgroundColor = CSS_Color.DialogTransparentColor1;
+
+            FrameLayout contentView = new FrameLayout()
+            {
+                Gravity = Gravity.CenterHorizontal,
+                Y = Application.GetMinRealAverage(223),
+                Width = Application.GetRealWidth(288),
+                Height = Application.GetRealHeight(302),
+                BackgroundColor = CSS_Color.MainBackgroundColor,
+                Radius = (uint)Application.GetRealWidth(12),
+                BorderWidth = 0,
+                BorderColor = 0x00000000,
+            };
+            this.AddChidren(contentView);
+
+            Button btnTitle = new Button()
+            {
+                Gravity = Gravity.CenterHorizontal,
+                Y = Application.GetMinRealAverage(95),
+                Height = Application.GetMinRealAverage(30),
+                TextAlignment = TextAlignment.Center,
+                TextColor = CSS_Color.MainColor,
+                TextSize = CSS_FontSize.EmphasisFontSize_Secondary,
+                Text = titleStr
+            };
+            contentView.AddChidren(btnTitle);
+
+            int btnMesY = btnTitle.Bottom + Application.GetMinRealAverage(5);
+            int lineY = Application.GetRealHeight(258);
+
+            VerticalScrolViewLayout mesView = new VerticalScrolViewLayout()
+            {
+                X = Application.GetRealWidth(16),
+                Y = btnMesY,
+                Width = contentView.Width - Application.GetRealWidth(32),
+                Height = lineY - btnMesY - Application.GetMinRealAverage(5),
+            };
+            contentView.AddChidren(mesView);
+
+            Button btnMes = new Button()
+            {
+                Gravity = Gravity.CenterHorizontal,
+                Width = mesView.Width,
+                Height = mesView.Height,
+                TextAlignment = TextAlignment.TopLeft,
+                TextColor = CSS_Color.TextualColor,
+                TextSize = CSS_FontSize.TextFontSize,
+                IsMoreLines = true,
+                Text = msgStr,
+                BackgroundColor = CSS_Color.AuxiliaryColor2
+
+            };
+            mesView.AddChidren(btnMes);
+
+            Button btnLine = new Button()
+            {
+                Y = lineY,
+                Height = Application.GetRealHeight(1),
+                Width = contentView.Width,
+                BackgroundColor = CSS_Color.DividingLineColor,
+            };
+            contentView.AddChidren(btnLine);
+
+
+            Button btnConfirm = new Button()
+            {
+                Y = btnLine.Y,
+                Width = contentView.Width,
+                Height = Application.GetRealHeight(44),
+                TextAlignment = TextAlignment.Center,
+                TextSize = CSS_FontSize.SubheadingFontSize,
+                TextColor = CSS_Color.MainBackgroundColor,
+                BackgroundColor = CSS_Color.MainColor,
+                TextID = confirmID,
+            };
+            contentView.AddChidren(btnConfirm);
+            //渚嬶細鍙充笅鍦嗚 澶у皬涓�50
+            int mRectCornerID = HDLUtils.RectCornerBottomRight | HDLUtils.RectCornerBottomLeft;
+            btnConfirm.SetCornerWithSameRadius((uint)Application.GetMinRealAverage(10), mRectCornerID);
+
+            btnConfirm.MouseUpEventHandler += (sender, e) =>
+            {
+                this.Close();
+                okAction?.Invoke();
+            };
+
+            Button btnHeadImage = new Button()
+            {
+                Gravity = Gravity.CenterHorizontal,
+                Y = Application.GetMinRealAverage(152),
+                Width = Application.GetMinRealAverage(160),
+                Height = Application.GetMinRealAverage(160),
+                BorderColor = 0x00000000,
+                BorderWidth = 0,
+                UnSelectedImagePath = "Public/Dialog/DialogTipTitleIcon_3.png",
+            };
+            this.AddChidren(btnHeadImage);
+
+            this.Show();
+        }
+
+        /// <summary>
+        /// 鍔犺浇鎻愮ず閫氱煡Dialog
+        /// </summary>
+        /// <param name="titleStr"></param>
+        /// <param name="tipStr"></param>
+        /// <param name="msgStr"></param>
+        /// <param name="okAction"></param>
+        /// <param name="cancelAction"></param>
+        public void ShowTipDialog(string titleStr, string msgStr, Action okAction)
+        {
+            this.ShowTipDialogBase(titleStr, msgStr, okAction);
+        }
+
+
+        
+    }
+}
diff --git a/HDL_ON/UI/UI0-Public/Widget/WebViewDialog.cs b/HDL_ON/UI/UI0-Public/Widget/WebViewDialog.cs
new file mode 100644
index 0000000..926ef73
--- /dev/null
+++ b/HDL_ON/UI/UI0-Public/Widget/WebViewDialog.cs
@@ -0,0 +1,51 @@
+锘縰sing System;
+using HDL_ON.UI.CSS;
+using Shared;
+
+namespace HDL_ON.UI
+{
+    /// <summary>
+    /// WebViewDialog
+    /// 鍔犺浇缃戦〉
+    /// </summary>
+    public class WebViewDialog : Dialog
+    {
+        /// <summary>
+        /// bodyView
+        /// </summary>
+        FrameLayout bodyView;
+
+        /// <summary>
+        /// WebViewDialog
+        /// </summary>
+        public WebViewDialog()
+        {
+            bodyView = new FrameLayout();
+        }
+
+        /// <summary>
+        /// 鍔犺浇椤甸潰
+        /// </summary>
+        /// <param name="titleStr"></param>
+        /// <param name="url"></param>
+        public void LoadPage(string titleStr, string url)
+        {
+            bodyView.BackgroundColor = CSS_Color.MainBackgroundColor;
+            this.AddChidren(bodyView);
+            new TopViewDiv(this, bodyView, titleStr).LoadTopView();
+
+            //WebView
+            var webView = new WebView() {
+                Y = Application.GetRealHeight(64),
+                Height = bodyView.Height - Application.GetRealHeight(64),
+                X = Application.GetRealWidth(16),
+                Width = bodyView.Width - Application.GetRealWidth(32)
+            };
+            bodyView.AddChidren(webView);
+
+            //鍔犺浇缃戝潃
+            webView.LoadRequest(url);
+            this.Show();
+        }
+    }
+}
diff --git a/HDL_ON/UI/UI1-Login/ForgetPasswordPage.cs b/HDL_ON/UI/UI1-Login/ForgetPasswordPage.cs
index 24f16d6..e936f17 100644
--- a/HDL_ON/UI/UI1-Login/ForgetPasswordPage.cs
+++ b/HDL_ON/UI/UI1-Login/ForgetPasswordPage.cs
@@ -153,6 +153,10 @@
         /// 1:閭
         /// </summary>
         int registerType;
+        /// <summary>
+        /// 鎵嬫満鍖哄彿
+        /// </summary>
+        string phoneZoneCode = "86";
 
         /// <summary>
         /// 
@@ -221,9 +225,22 @@
                 X = Application.GetRealWidth(9),
                 TextAlignment = TextAlignment.CenterLeft,
                 TextColor = CSS_Color.FirstLevelTitleColor,
-                Text = "+86",
+                Text = "+" + phoneZoneCode,
                 TextSize = CSS_FontSize.TextFontSize,
             };
+
+            //璺宠浆鍥藉鍖哄彿閫夋嫨鐣岄潰
+            EventHandler<MouseEventArgs> eHandler = (sender, e) => {
+                JLCountrycode.CountryCodeView.Current.Show((countryName, code) => {
+                    if (!string.IsNullOrEmpty(code))
+                    {
+                        phoneZoneCode = code;
+                        btnGlobalRoaming.Text = "+" + phoneZoneCode;
+                    }
+                });
+            };
+            btnGlobalRoaming.MouseUpEventHandler += eHandler;
+
             if (accountType == 0)
             {
                 accountView.AddChidren(btnGlobalRoaming);
@@ -238,6 +255,7 @@
                 TextSize = CSS_FontSize.TextFontSize,
                 PlaceholderTextColor = CSS_Color.PromptingColor1,
                 PlaceholderText = Language.StringByID(StringId.PlsEntryPhoneNumber),
+                IsNumberKeyboardType = true
             };
             accountView.AddChidren(etAccount);
 
@@ -481,8 +499,8 @@
                 Gravity = Gravity.CenterHorizontal,
                 Y = Application.GetRealHeight(421),
                 Width = Application.GetRealWidth(220),
-                Height = Application.GetRealHeight(44),
-                Radius = (uint)Application.GetRealHeight(22),
+                Height = Application.GetRealWidth(44),
+                Radius = (uint)Application.GetRealWidth(22),
                 SelectedBackgroundColor = CSS_Color.MainColor,
                 BackgroundColor = CSS_Color.PromptingColor1,
                 TextID = StringId.ConfirmReset,
diff --git a/HDL_ON/UI/UI1-Login/ForgetPasswordPageBLL.cs b/HDL_ON/UI/UI1-Login/ForgetPasswordPageBLL.cs
index ebbdac0..25b6fc5 100644
--- a/HDL_ON/UI/UI1-Login/ForgetPasswordPageBLL.cs
+++ b/HDL_ON/UI/UI1-Login/ForgetPasswordPageBLL.cs
@@ -32,6 +32,7 @@
             {
                 if (registerType == 0)
                     return;
+                etAccount.IsNumberKeyboardType = true;
                 etAccount.Text = registerPhone;
                 etPassword.Text = "";
                 etRepeatPassword.Text = "";
@@ -60,6 +61,7 @@
             {
                 if (registerType == 1)
                     return;
+                etAccount.IsNumberKeyboardType = false;
                 etAccount.Text = registerEmail;
                 etPassword.Text = "";
                 etRepeatPassword.Text = "";
@@ -92,11 +94,11 @@
         {
             etAccount.TextChangeEventHandler += (sender, e) =>
             {
-                Regex reg = new Regex(@"^[1]+\d{10}");
-                var mFalg = reg.Match(etAccount.Text.Trim());
+                //Regex reg = new Regex(@"^[1]+\d{10}");
+                //var mFalg = reg.Match(etAccount.Text.Trim());
                 if (registerType == 0)//鎵嬫満鑾峰彇楠岃瘉鐮佹寜閽敓鏁堟潯浠�
                 {
-                    if (btnGlobalRoaming.Text == "+86" && etAccount.Text.Trim().Length != 11)
+                    if (!Utlis.CheckPhoneNumber(etAccount.Text.Trim(), phoneZoneCode))
                     {
                         btnGetVerificationCode_Phone.IsSelected = false;
                     }
@@ -108,7 +110,7 @@
                 }
                 else//閭鑾峰彇楠岃瘉鐮佹寜閽敓鏁堟潯浠�
                 {
-                    if (!mFalg.Success)
+                    if (!Utlis.CheckEmail(etAccount.Text.Trim()))
                     {
                         btnGetVerificationCode_Mail.IsSelected = false;
                     }
@@ -142,10 +144,8 @@
                     //鎵嬫満鏂瑰紡-楠岃瘉鎵嬫満鍙风爜鏄惁姝g‘
                     if (registerType == 0)
                     {
-                    btnGetVerificationCode_Phone.IsSelected = false;
-                        Regex reg = new Regex(@"^[1]+\d{9}");
-                        var mFalg = reg.Match(etAccount.Text.Trim());
-                        if (!mFalg.Success || (btnGlobalRoaming.Text == "+86" && etAccount.Text.Trim().Length != 11))
+                        btnGetVerificationCode_Phone.IsSelected = false;
+                        if (!Utlis.CheckPhoneNumber(etAccount.Text.Trim(), phoneZoneCode))
                         {
                             btnAccountViewBottomLine.BackgroundColor = CSS_Color.AuxiliaryColor2;
                             btnAccountViewBottomLine.Height = Application.GetRealHeight(2);
@@ -169,9 +169,7 @@
                     {
                         btnGetVerificationCode_Mail.IsSelected = false;
                         //閭鏂瑰紡-楠岃瘉閭鏄惁姝g‘
-                        var reg = new Regex("^\\s*([A-Za-z0-9_-]+(\\.\\w+)*@(\\w+\\.)+\\w{2,5})\\s*$");
-                        var mFalg = reg.Match(etAccount.Text.Trim());
-                        if (!mFalg.Success )
+                        if (!Utlis.CheckEmail(etAccount.Text.Trim()))
                         {
                             btnAccountViewBottomLine.BackgroundColor = CSS_Color.AuxiliaryColor2;
                             btnAccountViewBottomLine.Height = Application.GetRealHeight(2);
@@ -291,6 +289,25 @@
         }
 
         /// <summary>
+        /// 妫�娴嬪綋鍓嶉厤缃煙鍚嶆槸鍚︿竴鑷达紝涓嶄竴鑷村垯鏇挎崲
+        /// </summary>
+        /// <param name="result"></param>
+        void CheckAndSetUserRequestHost(ResponsePackNew result) {
+            try
+            {
+                var mGlobalRegionListObj = Newtonsoft.Json.JsonConvert.DeserializeObject<GlobalRegionListRes>(result.Data.ToString());
+                if (UserInfo.Current.RequestHttpsHost != mGlobalRegionListObj.regionUrl)
+                {
+                    UserInfo.Current.RequestHttpsHost = mGlobalRegionListObj.regionUrl;
+                    UserInfo.Current.GlobalRegion = mGlobalRegionListObj;
+                    UserInfo.Current.SaveUserInfo();
+                }
+            }
+            catch { }
+        }
+
+
+        /// <summary>
         /// 鑾峰彇楠岃瘉鐮�
         /// </summary>
         void LoadEvent_GetVerificationCode()
@@ -300,62 +317,65 @@
                 var account = etAccount.Text.Trim();
                 if ((sender as Button).IsSelected)
                 {
-                    //鐭俊鍙戦�侀棿闅�60s
-                    (sender as Button).IsSelected = false;
-                    etVerificationCode.Foucs = true;
-                    //鑾峰彇楠岃瘉鐮�
-                        int time = 60;
-                    new Thread(() => {
-                        while (time > 0)
-                        {
-                            time--;
-                            Application.RunOnMainThread(() =>
-                            {
-                                (sender as Button).Text = time.ToString() + "s";
-                            });
-                            Thread.Sleep(1000);
-                        }
-                        Application.RunOnMainThread(() =>
-                        {
-                            //鍥炲鑾峰彇鐭俊鎸夐挳浜嬩欢
-                            (sender as Button).IsSelected = true;
-                            (sender as Button).TextID = StringId.GetVerificationCode;
-                        });
-                    }){ IsBackground = true}.Start();
+                    int time = 60;
                     new Thread(() =>
                     {
-                        var result = pm.GetLoginVerCode(account);
-                        if (result.StateCode.ToUpper() == "SUCCESS")
+                        //1.鍏堟鏌ヨ处鍙锋槸鍚︽敞鍐岃繃
+                        var result = pm.GetRegionByAccount(account);
+                        if (result.Code != StateCode.SUCCESS)
                         {
+                            IMessageCommon.Current.ShowErrorInfoAlter(result.Code);
+                            return;
                         }
                         else
                         {
-                            string tipString = "Server error";
-                            switch (result.StateCode)
-                            {
-                                case "Exist":
-                                    tipString = Language.StringByID(StringId.AccountAlreadyUse);
-                                    break;
-                                case "SendFail":
-                                    tipString = Language.StringByID(StringId.FailedToSendVerificationCode);
-                                    break;
-                                case "AccountNoExists":
-                                    tipString = Language.StringByID(StringId.AccountNotExist);
-                                    break;
-                                case "Self:Net_Error":
-                                    tipString = Language.StringByID(StringId.NetworkAnomaly);
-                                    break;
-                            }
+                            //2.1妫�娴嬪綋鍓嶉厤缃煙鍚嶆槸鍚︿竴鑷达紝涓嶄竴鑷村垯鏇挎崲
+                            CheckAndSetUserRequestHost(result);
 
+                            //2.2宸茬粡娉ㄥ唽杩囷紝鍙戦�侀獙璇佺爜鎵惧洖瀵嗙爜
                             Application.RunOnMainThread(() =>
                             {
-                                new Tip()
-                                {
-                                    CloseTime = 1,
-                                    Direction = AMPopTipDirection.None,
-                                    Text = tipString
-                                }.Show(bodyView);
+                                //鐭俊鍙戦�侀棿闅�60s
+                                (sender as Button).IsSelected = false;
+                                etVerificationCode.Foucs = true;
                             });
+                            //2.1鑾峰彇楠岃瘉鐮佸�掕鏃�
+                            new Thread(() =>
+                            {
+                                while (time > 0)
+                                {
+                                    time--;
+                                    Application.RunOnMainThread(() =>
+                                    {
+                                        (sender as Button).Text = time.ToString() + "s";
+                                    });
+                                    Thread.Sleep(1000);
+                                }
+                                Application.RunOnMainThread(() =>
+                                {
+                                    //鍥炲鑾峰彇鐭俊鎸夐挳浜嬩欢
+                                    (sender as Button).IsSelected = true;
+                                    (sender as Button).TextID = StringId.GetVerificationCode;
+                                });
+                            })
+                            { IsBackground = true }.Start();
+
+                            ResponsePackNew resultObj;
+                            //2.1璇锋眰鑾峰彇楠岃瘉鐮�
+                            if (registerType == 1)//閭
+                            {
+                                resultObj = pm.VerificationCodeSend(VerifyType.FIND_PASSWORD, account);
+                            }
+                            else
+                            {
+                                resultObj = pm.VerificationCodeSend(VerifyType.FIND_PASSWORD, account, true, phoneZoneCode);
+                            }
+
+                            if (resultObj.Code != StateCode.SUCCESS)
+                            {
+                                // 鎻愮ず閿欒
+                                IMessageCommon.Current.ShowErrorInfoAlter(resultObj.Code);
+                            }
                         }
                     })
                     { IsBackground = true }.Start();
@@ -401,81 +421,29 @@
 
             return new Thread(() =>
             {
-                var verResult = pm.ValidatorCode(account, verCode, countryIndex);
-                if (verResult.StateCode.ToUpper() == "SUCCESS")
+                // 蹇樿瀵嗙爜
+                var isPhone = registerType == 0;
+                var resultObj = pm.ForgetPassword(account, password, verCode, isPhone);
+                if (resultObj.Code == StateCode.SUCCESS)
                 {
-                    var resetResult = pm.ResetPassword(account, password, repeatPassword, countryIndex);
-                    if (resetResult.StateCode.ToUpper() == "SUCCESS")
+                    Application.RunOnMainThread(() =>
                     {
-                        Application.RunOnMainThread(() =>
-                        {
-                            LoadEvent_AutoLogin();
+                        LoadEvent_AutoLogin();
+                        callbackAction?.Invoke(account);
+                    });
 
-                            callbackAction?.Invoke(account);
-                        });
-                    }
-                    else
-                    {
-                        string erorrInfo = "";
-                        switch (resetResult.StateCode)
-                        {
-                            case "PwdNoConfirm"://涓ゆ杈撳叆鐨勫瘑鐮佷笉涓�鑷�
-                                erorrInfo = Language.StringByID(StringId.IncorrectRepeatPassword);
-                                break;
-                            case "AccountNoExists"://涓ゆ杈撳叆鐨勫瘑鐮佷笉涓�鑷�
-                                erorrInfo = Language.StringByID(StringId.AccountNotExist);
-                                break;
-                            default:
-                                erorrInfo = "Server error";
-                                break;
-                        }
-                        Application.RunOnMainThread(() =>
-                        {
-                            waitPage.Hide();
-                            new Tip()
-                            {
-                                CloseTime = 1,
-                                Direction = AMPopTipDirection.None,
-                                Text = erorrInfo,
-                            }.Show(bodyView);
-                        });
-                    }
                 }
                 else
                 {
-                    string erorrInfo = "";
-                    switch (verResult.StateCode)
-                    {
-                        case "ValidCodeAndPhoneNoEqual"://楠岃瘉鐮侀敊璇�
-                            erorrInfo = Language.StringByID(StringId.VerificationCodeWrong);
-                            Application.RunOnMainThread(() =>
-                            {
-                                btnVerificationCodeViewBottomLine.BackgroundColor = CSS_Color.AuxiliaryColor2;
-                                btnVerificationCodeViewBottomLine.Height = Application.GetRealHeight(2);
-                            });
-                            break;
-                        case "NoRecord":
-                            erorrInfo = Language.StringByID(StringId.PlsGetTheVerificationCode);
-                            Application.RunOnMainThread(() =>
-                            {
-                                btnVerificationCodeViewBottomLine.BackgroundColor = CSS_Color.AuxiliaryColor2;
-                                btnVerificationCodeViewBottomLine.Height = Application.GetRealHeight(2);
-                            });
-                            break;
-                        default:
-                            erorrInfo = "Server error";
-                            break;
-                    }
+                    // 2020-11-13 寰呬慨鏀� 楠岃瘉鐮侀敊璇� 璀﹀憡鎻愮ず
+                    //btnVerificationCodeViewBottomLine.BackgroundColor = CSS_Color.AuxiliaryColor2;
+                    //btnVerificationCodeViewBottomLine.Height = Application.GetRealHeight(2);
                     Application.RunOnMainThread(() =>
                     {
                         waitPage.Hide();
-                        new Tip()
-                        {
-                            CloseTime = 1,
-                            Direction = AMPopTipDirection.None,
-                            Text = erorrInfo,
-                        }.Show(bodyView);
                     });
+                    // 鎻愮ず閿欒
+                    IMessageCommon.Current.ShowErrorInfoAlter(resultObj.Code);
                 }
             });
         }
@@ -509,7 +477,7 @@
                 Width = Application.GetRealWidth(288),
                 Height = Application.GetRealHeight(206),
                 BackgroundColor = CSS_Color.MainBackgroundColor,
-                Radius = (uint)Application.GetRealWidth(12),
+                Radius = (uint)Application.GetRealHeight(12),
                 BorderWidth = 0,
                 BorderColor = 0x00000000,
             };
@@ -558,7 +526,7 @@
                 Y = Application.GetRealHeight(150),
                 Width = Application.GetRealWidth(84),
                 Height = Application.GetRealWidth(84),
-                Radius = (uint)Application.GetRealWidth(42),
+                Radius = (uint)Application.GetRealHeight(42),
                 BorderColor = 0x00000000,
                 BorderWidth = 0,
                 UnSelectedImagePath = "LoginIcon/2.png",
diff --git a/HDL_ON/UI/UI1-Login/LoginPage.cs b/HDL_ON/UI/UI1-Login/LoginPage.cs
index fbd3b48..4051d39 100644
--- a/HDL_ON/UI/UI1-Login/LoginPage.cs
+++ b/HDL_ON/UI/UI1-Login/LoginPage.cs
@@ -150,6 +150,10 @@
         /// </summary>
         string registerPhone;
         string registerEmail;
+        /// <summary>
+        /// 鎵嬫満鍖哄彿
+        /// </summary>
+        string phoneZoneCode = "86";
 
         /// <summary>
         /// 鍔犺浇瑙嗗浘
@@ -230,12 +234,29 @@
                 Width = Application.GetRealWidth(65),
                 TextAlignment = TextAlignment.Center,
                 TextColor = CSS_Color.FirstLevelTitleColor,
-                Text = "+86",
+                Text = "+" + phoneZoneCode,
                 TextSize = CSS_FontSize.TextFontSize,
-                Enable = false,
+                Enable = true,
             };
+
+            //璺宠浆鍥藉鍖哄彿閫夋嫨鐣岄潰
+            EventHandler<MouseEventArgs> eHandler = (sender, e) =>
+            {
+                JLCountrycode.CountryCodeView.Current.Show((countryName, code) =>
+                {
+                    if (!string.IsNullOrEmpty(code))
+                    {
+                        phoneZoneCode = code;
+                        btnGlobalRoaming.Text = "+" + phoneZoneCode;
+                    }
+                });
+            };
+            btnGlobalRoaming.MouseUpEventHandler += eHandler;
+
             if (loginType == 0)
+            {
                 accountView.AddChidren(btnGlobalRoaming);
+            }
 
             btnDividingLineVertical_AccountView = new Button()
             {
@@ -427,8 +448,8 @@
                 Gravity = Gravity.CenterHorizontal,
                 Y = Application.GetRealHeight(403),
                 Width = Application.GetRealWidth(220),
-                Height = Application.GetRealHeight(44),
-                Radius = (uint)Application.GetRealHeight(22),
+                Height = Application.GetRealWidth(44),
+                Radius = (uint)Application.GetRealWidth(22),
                 SelectedBackgroundColor = CSS_Color.MainColor,
                 BackgroundColor = CSS_Color.PromptingColor1,
                 TextID = StringId.Login,
@@ -441,7 +462,7 @@
             LoadEventList();
             account = etAccount.Text.Trim();
 
-            #if DEBUG1211
+#if DEBUG1211
             //鏈湴妯″紡
             Button btnLocalMode = new Button()
             {
@@ -457,14 +478,159 @@
             btnLocalMode.MouseUpEventHandler = (sender, e) =>
             {
                 MainPage.LocalMode = true;
-                MainPage.LoginUser = new UserInfo();
+                 UserInfo.Current = new UserInfo();
                 MainPage.GoUserPage();
             };
 
             MainPage.Log("etAccount.TextAlignment : " + etAccount.TextAlignment.ToString());
 
-            #endif
+#endif
+
+            #region 闅愮鏀跨瓥
+            AddServiceAgreementControl(bodyView);
+            #endregion
 
         }
+
+        #region 鈻� 鏈嶅姟鍗忚___________________________
+        bool isAgreePrivacyPolicy = false;
+        /// <summary>
+        /// 娣诲姞鏈嶅姟鍗忚鎺т欢
+        /// </summary>
+        /// <param name="frameBack"></param>
+        private void AddServiceAgreementControl(FrameLayout frameLayout)
+        {
+            isAgreePrivacyPolicy = UserInfo.Current.isAgreePrivacyPolicy;
+            var frameRow = new FrameLayout()
+            {
+                Height = Application.GetRealHeight(28),
+                Y = Application.GetRealHeight(628),
+            };
+            frameLayout.AddChidren(frameRow);
+
+            //鍚屾剰鎸夐挳鑳屾櫙
+            var agreeView = new FrameLayout()
+            {
+                Height = Application.GetRealHeight(28),
+                Width = Application.GetRealWidth(28),
+                X = Application.GetRealWidth(82),
+            };
+            frameRow.AddChidren(agreeView);
+            //鍚屾剰鍥炬爣鎸夐挳
+            var agreeBtn = new Button()
+            {
+                Width = Application.GetMinRealAverage(28),
+                Height = Application.GetMinRealAverage(28),
+                UnSelectedImagePath = "Public/ChooseIcon.png",
+                SelectedImagePath = "Public/ChooseOnIcon.png",
+                IsSelected = isAgreePrivacyPolicy,
+                Gravity = Gravity.Center
+            };
+            agreeView.AddChidren(agreeBtn);
+
+            EventHandler<MouseEventArgs> eventHandler = (sender, e) =>
+            {
+                isAgreePrivacyPolicy = !isAgreePrivacyPolicy;
+                agreeBtn.IsSelected = isAgreePrivacyPolicy;
+                UserInfo.Current.isAgreePrivacyPolicy = isAgreePrivacyPolicy;
+                UserInfo.Current.SaveUserInfo();
+            };
+
+            agreeBtn.MouseUpEventHandler = eventHandler;
+            agreeView.MouseUpEventHandler = eventHandler;
+
+            //int btnWidth = 0;
+            //鍚屾剰鏂囨湰
+            var agreeTextBtn = new TextButton()
+            {
+                X = agreeView.Right,
+                Width = Application.GetRealWidth(28),
+                Height = Application.GetRealHeight(28),
+                TextColor = CSS_Color.TextualColor,
+                TextSize = CSS_FontSize.PromptFontSize_FirstLevel,
+                TextID = StringId.Agree
+            };
+            frameRow.AddChidren(agreeTextBtn);
+            agreeTextBtn.Width = Utlis.GetRealWidthByTextButton(agreeTextBtn);
+
+            //鐢ㄦ埛鍗忚鎸夐挳
+            var userAgreementBtn = new TextButton()
+            {
+                X = agreeTextBtn.Right,
+                Width = Application.GetRealWidth(28),
+                Height = Application.GetRealHeight(28),
+                TextColor = CSS_Color.MainColor,
+                TextSize = CSS_FontSize.PromptFontSize_FirstLevel,
+                Text = "銆�" + Language.StringByID(StringId.UserAgreement) + "銆�"
+            };
+            frameRow.AddChidren(userAgreementBtn);
+            userAgreementBtn.Width = Utlis.GetRealWidthByTextButton(userAgreementBtn);
+
+            //鍜屾枃鏈�
+            var andTextBtn = new TextButton()
+            {
+                X = userAgreementBtn.Right,
+                Width = Application.GetRealWidth(28),
+                Height = Application.GetRealHeight(28),
+                TextColor = CSS_Color.TextualColor,
+                TextSize = CSS_FontSize.PromptFontSize_FirstLevel,
+                TextID = StringId.And
+            };
+            frameRow.AddChidren(andTextBtn);
+            andTextBtn.Width = Utlis.GetRealWidthByTextButton(andTextBtn);
+
+            //闅愮鏀跨瓥鎸夐挳
+            var privacyPolicyBtn = new TextButton()
+            {
+                X = andTextBtn.Right,
+                Width = Application.GetRealWidth(28),
+                Height = Application.GetRealHeight(28),
+                TextColor = CSS_Color.MainColor,
+                TextSize = CSS_FontSize.PromptFontSize_FirstLevel,
+                Text = "銆�" + Language.StringByID(StringId.PrivacyPolicy) + "銆�"
+            };
+            frameRow.AddChidren(privacyPolicyBtn);
+            privacyPolicyBtn.Width = Utlis.GetRealWidthByTextButton(privacyPolicyBtn);
+
+            //鎵撳紑鐢ㄦ埛鍗忚
+            userAgreementBtn.MouseUpEventHandler = (sender, e) =>
+            {
+                OpenWebViewPage(false);
+            };
+
+            //鎵撳紑闅愮鏀跨瓥
+            privacyPolicyBtn.MouseUpEventHandler = (sender, e) =>
+            {
+                OpenWebViewPage(true);
+            };
+        }
+
+        /// <summary>
+        /// OpenWebViewPage
+        /// </summary>
+        /// <param name="isOpenPrivacyPolicy">鏄惁闅愮鏀跨瓥</param>
+        private void OpenWebViewPage(bool isOpenPrivacyPolicy)
+        {
+            string url = isOpenPrivacyPolicy ? Constant.URL_PRIVACYPOLICY : Constant.URL_USERAGREEMENT;
+            string titleStr = isOpenPrivacyPolicy ? Language.StringByID(StringId.PrivacyPolicy) : Language.StringByID(StringId.UserAgreement);
+            new WebViewDialog().LoadPage(titleStr, url);
+        }
+
+        /// <summary>
+        /// 妫�娴嬮殣绉佸崗璁�
+        /// </summary>
+        /// <returns></returns>
+        private bool CheckPrivacyPolicy()
+        {
+            if (isAgreePrivacyPolicy == false)
+            {
+                //璇峰悓鎰忋�婄敤鎴峰崗璁�嬪拰銆婇殣绉佹斂绛栥��
+                Utlis.ShowTip(Language.StringByID(StringId.PleaseReadAndAgreePrivacyPolicyMsg));
+                return false;
+            }
+            return true;
+        }
+
+        #endregion
     }
 }
\ No newline at end of file
diff --git a/HDL_ON/UI/UI1-Login/LoginPageBLL.cs b/HDL_ON/UI/UI1-Login/LoginPageBLL.cs
index 706a9f0..1047d32 100644
--- a/HDL_ON/UI/UI1-Login/LoginPageBLL.cs
+++ b/HDL_ON/UI/UI1-Login/LoginPageBLL.cs
@@ -5,6 +5,7 @@
 using HDL_ON.UI.CSS;
 using Shared;
 using HDL_ON.Entity;
+using HDL_ON.DAL.Server;
 
 namespace HDL_ON.UI.UI1Login
 {
@@ -24,6 +25,25 @@
             LoadPage_RegisterPage();
             GetVerificationCode();
             LoadMethod_ForgetPassword();
+        }
+
+        /// <summary>
+        /// 妫�娴嬪綋鍓嶉厤缃煙鍚嶆槸鍚︿竴鑷达紝涓嶄竴鑷村垯鏇挎崲
+        /// </summary>
+        /// <param name="result"></param>
+        void CheckAndSetUserRequestHost(ResponsePackNew result)
+        {
+            try
+            {
+                var mGlobalRegionListObj = Newtonsoft.Json.JsonConvert.DeserializeObject<GlobalRegionListRes>(result.Data.ToString());
+                if (UserInfo.Current.RequestHttpsHost != mGlobalRegionListObj.regionUrl)
+                {
+                    UserInfo.Current.RequestHttpsHost = mGlobalRegionListObj.regionUrl;
+                    UserInfo.Current.GlobalRegion = mGlobalRegionListObj;
+                    UserInfo.Current.SaveUserInfo();
+                }
+            }
+            catch { }
         }
 
         /// <summary>
@@ -50,7 +70,7 @@
                         btnAccountViewBottomLine.Height = Application.GetRealHeight(2);
                         return;
                     }
-                    if (!Regex.IsMatch(account, @"^[1]+\d{10}") || (account.Length != 11))
+                    if (!Utlis.CheckPhoneNumber(phoneNumber, phoneZoneCode))
                     {
                         var tip = new Tip()
                         {
@@ -64,82 +84,68 @@
                         btnAccountViewBottomLine.Height = Application.GetRealHeight(2);
                         return;
                     }
-                    btnGetVerificationCode.IsSelected = false ;
-                    btnGetVerificationCode.TextColor = CSS_Color.PromptingColor1;
+
                     int time = 60;
                     new Thread(() =>
                     {
-                        while (time > 0)
+                        //1.鍏堟鏌ヨ处鍙锋槸鍚︽敞鍐岃繃
+                        var result = pm.GetRegionByAccount(account);
+                        if (result.Code != StateCode.SUCCESS)
                         {
-                            time--;
-                            Application.RunOnMainThread(() =>
-                            {
-                                btnGetVerificationCode.Text = time.ToString() + "s";
-                            });
-                            Thread.Sleep(1000);
+                            IMessageCommon.Current.ShowErrorInfoAlter(result.Code);
+                            ShowBtnAccountViewBottomLineError();
+                            return;
                         }
-                        Application.RunOnMainThread(() =>
-                        {
-                            btnGetVerificationCode.IsSelected = true;
-                            btnGetVerificationCode.TextID = StringId.GetVerificationCode;
-                        });
-                    })
-                    { IsBackground = true }.Start();
-                    new Thread(() =>
-                    {
-                        //鑾峰彇楠岃瘉鐮�
-                        var result = pm.GetLoginVerCode(phoneNumber);
-                        if (result.StateCode.ToUpper() == "SUCCESS")
-                        {
-                        }
-                        //鐧诲綍澶辫触
                         else
                         {
-                            string tipStr = "Sever erorr";
-                            switch (result.StateCode.ToUpper())
+                            //妫�娴嬪綋鍓嶉厤缃煙鍚嶆槸鍚︿竴鑷达紝涓嶄竴鑷村垯鏇挎崲
+                            CheckAndSetUserRequestHost(result);
+
+                            //2.1璇锋眰鑾峰彇楠岃瘉鐮�
+                            var resultObj = pm.VerificationCodeSend(VerifyType.VERIFY_LOGIN, account, true, phoneZoneCode);
+                            if (resultObj.Code != StateCode.SUCCESS)
                             {
-                                case "USERNAMEORPWDERROR":
-                                    tipStr = Language.StringByID(StringId.LoginFailed_AccountOrPasswordError);
-                                    Application.RunOnMainThread(() =>
-                                    {
-                                        btnPasswordViewBottomLine.BackgroundColor = CSS_Color.AuxiliaryColor2;
-                                        btnPasswordViewBottomLine.Height = Application.GetRealHeight(2);
-                                    });
-                                    break;
-                                case "ACCOUNTNOEXISTS":
-                                    tipStr = Language.StringByID(StringId.ACCOUNTNOEXISTS);
-                                    Application.RunOnMainThread(() =>
-                                    {
-                                        btnAccountViewBottomLine.BackgroundColor = CSS_Color.AuxiliaryColor2;
-                                        btnAccountViewBottomLine.Height = Application.GetRealHeight(2);
-                                    });
-                                    break;
-                                case "SENDFAIL":
-                                    tipStr = Language.StringByID(StringId.FailedToSendVerificationCode);
-                                    Application.RunOnMainThread(() =>
-                                    {
-                                        btnAccountViewBottomLine.BackgroundColor = CSS_Color.AuxiliaryColor2;
-                                        btnAccountViewBottomLine.Height = Application.GetRealHeight(2);
-                                    });
-                                    break;
-                                case "Self:Net_Error":
-                                    tipStr = Language.StringByID(StringId.NetworkAnomaly);
-                                    break;
-                            }
-                            Application.RunOnMainThread(() =>
-                            {
-                                //鎻愮ず鍘熷洜
-                                var tip = new Tip()
+                                //2.2璇锋眰鑾峰彇楠岃瘉鐮佸け璐�
+                                Application.RunOnMainThread(() =>
                                 {
-                                    Text = tipStr,
-                                    CloseTime = 1,
-                                    Direction = AMPopTipDirection.None
-                                };
-                                tip.Show(bodyView);
-                            });
+                                    btnPasswordViewBottomLine.BackgroundColor = CSS_Color.AuxiliaryColor2;
+                                    btnPasswordViewBottomLine.Height = Application.GetRealHeight(2);
+                                });
+                                // 鎻愮ず閿欒
+                                IMessageCommon.Current.ShowErrorInfoAlter(resultObj.Code);
+                            }
+                            else
+                            {
+                                Application.RunOnMainThread(() =>
+                                {
+                                    btnGetVerificationCode.IsSelected = false;
+                                    btnGetVerificationCode.TextColor = CSS_Color.PromptingColor1;
+                                });
+
+                                new Thread(() =>
+                                {
+                                    while (time > 0)
+                                    {
+                                        time--;
+                                        Application.RunOnMainThread(() =>
+                                        {
+                                            btnGetVerificationCode.Text = time.ToString() + "s";
+                                        });
+                                        Thread.Sleep(1000);
+                                    }
+                                    Application.RunOnMainThread(() =>
+                                    {
+                                        btnGetVerificationCode.IsSelected = true;
+                                        btnGetVerificationCode.TextID = StringId.GetVerificationCode;
+                                    });
+                                })
+                                { IsBackground = true }.Start();
+                            }
                         }
+
                     })
                     { IsBackground = true }.Start();
+
                 }
             };
         }
@@ -241,8 +247,8 @@
 
                 //if (btnGetVerificationCode.Parent != null)
                 //{
-                    //btnGetVerificationCode.RemoveFromParent();
-                    btnGetVerificationCode.Visible = false;
+                //btnGetVerificationCode.RemoveFromParent();
+                btnGetVerificationCode.Visible = false;
                 //}
                 //闅愯棌瀵嗙爜
                 etPassword.SecureTextEntry = true;
@@ -273,8 +279,8 @@
                     btnPasswordIcon.IsSelected = false;
                     //if (btnGetVerificationCode.Parent != null)
                     //{
-                        //btnGetVerificationCode.RemoveFromParent();
-                        btnGetVerificationCode.Visible = false;
+                    //btnGetVerificationCode.RemoveFromParent();
+                    btnGetVerificationCode.Visible = false;
                     //}
                     //闅愯棌瀵嗙爜
                     etPassword.SecureTextEntry = true;
@@ -339,7 +345,7 @@
                         return;
                     if (loginType == 0)
                     {
-                        if (!Regex.IsMatch(account, @"^[1]+\d{10}") || (account.Length != 11))
+                        if (!Utlis.CheckPhoneNumber(registerPhone, phoneZoneCode))
                         {
                             var tip = new Tip()
                             {
@@ -362,7 +368,7 @@
                     }
                     else
                     {
-                        if (!Regex.IsMatch(account, "([a-zA-Z0-9_\\.\\-])+\\@(([a-zA-Z0-9\\-])+\\.)+([a-zA-Z0-9]{2,5})+"))
+                        if (!Utlis.CheckEmail(registerEmail))
                         {
                             var tip = new Tip()
                             {
@@ -437,12 +443,15 @@
             {
                 if (btnLogin.IsSelected)
                 {
+                    //鍒ゆ柇鏄惁鍚屾剰浜嗛殣绉佹斂绛�
+                    if (CheckPrivacyPolicy() == false) return;
+
                     account = etAccount.Text.Trim();
                     password = etPassword.Text.Trim();
 
                     if (loginType == 0)
                     {
-                        if (!Regex.IsMatch(account, @"^[1]+\d{10}") && account.Length == 11)
+                        if (!Utlis.CheckPhoneNumber(account, phoneZoneCode))
                         {
                             var tip = new Tip()
                             {
@@ -456,7 +465,7 @@
                     }
                     else
                     {
-                        if (!Regex.IsMatch(account, "([a-zA-Z0-9_\\.\\-])+\\@(([a-zA-Z0-9\\-])+\\.)+([a-zA-Z0-9]{2,5})+"))
+                        if (!Utlis.CheckEmail(account))
                         {
                             var tip = new Tip()
                             {
@@ -487,7 +496,7 @@
                 {
                     btnLogin.IsSelected = false;
                 }
-                if (Regex.IsMatch(account, @"^[1]+\d{10}") )//&& account.Length == 11)
+                if (Regex.IsMatch(account, @"^[1]+\d{10}"))//&& account.Length == 11)
                 {
                     btnGetVerificationCode.IsSelected = true;
                     btnGetVerificationCode.TextColor = CSS_Color.MainBackgroundColor;
@@ -521,9 +530,27 @@
             {
                 try
                 {
+                    //濡傛灉鏄处鍙峰瘑鐮佺櫥褰曪紝鍏堟鏌ヤ竴娆¤处鍙锋槸鍚︽敞鍐岃繃
+                    if (logintMode == 0)
+                    {
+                        //1.鍏堟鏌ヨ处鍙锋槸鍚︽敞鍐岃繃
+                        var result = pm.GetRegionByAccount(account);
+                        if (result.Code != StateCode.SUCCESS)
+                        {
+                            IMessageCommon.Current.ShowErrorInfoAlter(result.Code);
+                            ShowBtnAccountViewBottomLineError();
+                            return;
+                        }
+                        else
+                        {
+                            //璁剧疆鐢ㄦ埛鎵�娉ㄥ唽鍦板尯鐨勫煙鍚嶏紝鐢ㄦ埛鐩稿叧鎿嶄綔閮界敤杩欎釜鍩熷悕
+                            CheckAndSetUserRequestHost(result);
+                        }
+                    }
+
                     //鐧诲綍
                     var loginResult = LoadMethod_Login();
-                    if( !string.IsNullOrEmpty (verAccount))//楠岃瘉鐧诲綍璐﹀彿
+                    if (!string.IsNullOrEmpty(verAccount))//楠岃瘉鐧诲綍璐﹀彿
                     {
                         Application.RunOnMainThread(() =>
                         {
@@ -559,7 +586,7 @@
                                 OnAppConfig.Instance.RefreshUserConfig();
                                 DB_ResidenceData.InitRoomFunction();
                             }
-                            if (MainPage.LoginUser.userEmailInfo == "18402017839@qq.com")
+                            if (UserInfo.Current.userEmailInfo == "464027401@qq.com")
                             {
                                 DB_ResidenceData.residenceData.floors.Add(new Floor() { name = "1F", sid = "09888" });
                                 var r111 = new Room() { sid = "0001", name = "Room-1", floorId = "09888", backgroundImage = "Classification/Room/Roombg.png" };
@@ -570,11 +597,11 @@
                                 {
                                     sid = "030101123456780604010001ABCD",
                                     name = "绌鸿皟",
-                                    function = new List<Trait>() {
-                                                                new Trait { name="on_off", max=1,min = 0, value_key= new List<string> { "on","off"} },
-                                                                new Trait { name="mode", max = 2,min =0,value_key = new List<string>{ "auto", "heat", "cool","dry" } },
-                                                                new Trait { name = "fan",max = 3,min =0,value_key = new List<string>{ "low", "medium", "high" ,"auto"} },
-                                                                new Trait { name = "set_temperature", max = 32,min=16,value_key = new List<string>{"up","down" } },
+                                    function = new List<FunctionAttributes>() {
+                                                                new FunctionAttributes { key="on_off", max=1,min = 0, value= new List<string> { "on","off"} },
+                                                                new FunctionAttributes { key="mode", max = 2,min =0,value = new List<string>{ "auto", "heat", "cool","dry" } },
+                                                                new FunctionAttributes { key = "fan",max = 3,min =0,value = new List<string>{ "low", "medium", "high" ,"auto"} },
+                                                                new FunctionAttributes { key = "set_temperature", max = 32,min=16,value = new List<string>{"up","down" } },
                                                             },
                                     roomIdList = new List<string>() { "0001" },
                                     lastState = "鍒跺喎 涓 18掳C",
@@ -589,8 +616,8 @@
                                 {
                                     sid = "030101123456780202020002ABCD",
                                     name = "璋冨厜鐏�",
-                                    function = new List<Trait>() {
-                                                                new Trait { name="brightness", max=100,min = 0, value_key= new List<string> { "up","down"} },
+                                    function = new List<FunctionAttributes>() {
+                                                                new FunctionAttributes { key="brightness", max=100,min = 0, value= new List<string> { "up","down"} },
                                                             },//"brightness",
                                     roomIdList = new List<string>() { "0001" },
                                     lastState = "20%",
@@ -607,8 +634,8 @@
                                     sid = "030101123456780303010003ABCD",
                                     name = "绐楀笜妯″潡",
                                     roomIdList = new List<string>() { "0001" },
-                                    function = new List<Trait>() {
-                                                                new Trait { name="on_off", max=2,min = 0, value_key= new List<string> { "on","off","stop"} },
+                                    function = new List<FunctionAttributes>() {
+                                                                new FunctionAttributes { key="on_off", max=2,min = 0, value= new List<string> { "on","off","stop"} },
                                                             },// "curtain",
                                     lastState = "寮�",
                                     bus_Data = new BusData
@@ -623,8 +650,8 @@
                                     sid = "030101123456780303030011ABCD",
                                     name = "寮�鍚堝笜",
                                     roomIdList = new List<string>() { "0001" },
-                                    function = new List<Trait>() {
-                                                                new Trait { name="on_off", max=100,min = 0, value_key= new List<string> { "on","off","stop"} },
+                                    function = new List<FunctionAttributes>() {
+                                                                new FunctionAttributes { key="on_off", max=100,min = 0, value= new List<string> { "on","off","stop"} },
                                                             },//"curtaintype",
                                     lastState = "20%",
                                     bus_Data = new BusData
@@ -639,9 +666,9 @@
                                     sid = "030101123456780503040012ABCD",
                                     name = "鍗峰笜",
                                     roomIdList = new List<string>() { "0001" },
-                                    function = new List<Trait>() {
-                                                                new Trait { name="on_off", max=2,min = 0, value_key= new List<string> { "on","off","stop"} },
-                                                                new Trait { name="percent", max=100,min = 0, value_key= new List<string> { "percent" } },
+                                    function = new List<FunctionAttributes>() {
+                                                                new FunctionAttributes { key="on_off", max=2,min = 0, value= new List<string> { "on","off","stop"} },
+                                                                new FunctionAttributes { key="percent", max=100,min = 0, value= new List<string> { "percent" } },
 
                                                             },// "rollingshutter",
                                     lastState = "20%",
@@ -657,10 +684,10 @@
                                     sid = "030101123456780404020004ABCD",
                                     name = "鍦扮儹",
                                     roomIdList = new List<string>() { "0001" },
-                                    function = new List<Trait>() {
-                                                                new Trait { name="on_off", max=1,min = 0, value_key= new List<string> { "on","off"} },
-                                                                new Trait { name="mode", max = 2,min =0,value_key = new List<string>{ "normal", "day", "night","timer","away" } },
-                                                                new Trait { name = "set_temperature", max = 32,min=5,value_key = new List<string>{"up","down" } },
+                                    function = new List<FunctionAttributes>() {
+                                                                new FunctionAttributes { key="on_off", max=1,min = 0, value= new List<string> { "on","off"} },
+                                                                new FunctionAttributes { key="mode", max = 2,min =0,value = new List<string>{ "normal", "day", "night","timer","away" } },
+                                                                new FunctionAttributes { key = "set_temperature", max = 32,min=5,value = new List<string>{"up","down" } },
                                                             },//
                                     lastState = "鑷姩 25掳C",
                                     bus_Data = new BusData
@@ -674,8 +701,8 @@
                                 {
                                     sid = "030101123456780202010005ABCD",
                                     name = "鍚婄伅",
-                                    function = new List<Trait>() {
-                                                                new Trait { name="on_off", max=100,min = 0, value_key= new List<string> { "on","off"} },
+                                    function = new List<FunctionAttributes>() {
+                                                                new FunctionAttributes { key="on_off", max=100,min = 0, value= new List<string> { "on","off"} },
                                                             },//"on_off",
                                     roomIdList = new List<string>() { "0001" },
                                     bus_Data = new BusData
@@ -689,9 +716,9 @@
                                 {
                                     sid = "030101123456780202040006ABCD",
                                     name = "RGB鐏�",
-                                    function = new List<Trait>() {
-                                                                new Trait { name="brightness", max=100,min = 0, value_key= new List<string> { "on","off"} },
-                                                                new Trait { name="color", max=100,min = 0, value_key= new List<string> { "255", "255", "255" } },
+                                    function = new List<FunctionAttributes>() {
+                                                                new FunctionAttributes { key="brightness", max=100,min = 0, value= new List<string> { "on","off"} },
+                                                                new FunctionAttributes { key="color", max=100,min = 0, value= new List<string> { "255", "255", "255" } },
                                                             },
                                     roomIdList = new List<string>() { "0001" },
                                     bus_Data = new BusData
@@ -705,9 +732,9 @@
                                 {
                                     sid = "030101123456781010020006ABCD",
                                     name = "椋庢墖",
-                                    function = new List<Trait>() {
-                                                            new Trait { name="on_off", max=1,min = 0, value_key= new List<string> { "on","off"} },
-                                                            new Trait { name="percent", max=7,min = 0, value_key= new List<string> { "percent" } },
+                                    function = new List<FunctionAttributes>() {
+                                                            new FunctionAttributes { key="on_off", max=1,min = 0, value= new List<string> { "on","off"} },
+                                                            new FunctionAttributes { key="percent", max=7,min = 0, value= new List<string> { "percent" } },
                                                         },
                                     roomIdList = new List<string>() { "0001" },
                                     bus_Data = new BusData
@@ -721,8 +748,8 @@
                                 {
                                     sid = "030101123456781010020006ABCD",
                                     name = "鐢佃",
-                                    function = new List<Trait>() {
-                                                            new Trait { name="on_off", max=1,min = 0, value_key= new List<string> { "on","off"} },
+                                    function = new List<FunctionAttributes>() {
+                                                            new FunctionAttributes { key="on_off", max=1,min = 0, value= new List<string> { "on","off"} },
                                                         },
                                     roomIdList = new List<string>() { "0001" },
                                     bus_Data = new BusData
@@ -736,8 +763,8 @@
                                 {
                                     sid = "030101123456780101020006ABCD",
                                     name = "鎻掑骇",
-                                    function = new List<Trait>() {
-                                                            new Trait { name="on_off", max=1,min = 0, value_key= new List<string> { "on","off"} },
+                                    function = new List<FunctionAttributes>() {
+                                                            new FunctionAttributes { key="on_off", max=1,min = 0, value= new List<string> { "on","off"} },
                                                         },
                                     roomIdList = new List<string>() { "0001" },
                                     bus_Data = new BusData
@@ -752,8 +779,8 @@
                                     sid = "030101123456781005060006ABCD",
                                     name = "PM2.5",
                                     roomIdList = new List<string>() { "0001" },
-                                    function = new List<Trait>() {
-                                                            new Trait { name="values", max=1,min = 0, value_key= new List<string> { "22"} },
+                                    function = new List<FunctionAttributes>() {
+                                                            new FunctionAttributes { key="values", max=1,min = 0, value= new List<string> { "22"} },
                                                         },
                                     bus_Data = new BusData
                                     {
@@ -767,8 +794,8 @@
                                     sid = "030101123456781005070006ABCD",
                                     name = "CO2",
                                     roomIdList = new List<string>() { "0001" },
-                                    function = new List<Trait>() {
-                                                            new Trait { name="values", max=1,min = 0, value_key= new List<string> { "1352"} },
+                                    function = new List<FunctionAttributes>() {
+                                                            new FunctionAttributes { key="values", max=1,min = 0, value= new List<string> { "1352"} },
                                                         },
                                     bus_Data = new BusData
                                     {
@@ -782,8 +809,8 @@
                                     sid = "030101123456781005020006ABCD",
                                     name = "娓╁害",
                                     roomIdList = new List<string>() { "0001" },
-                                    function = new List<Trait>() {
-                                                            new Trait { name="values", max=1,min = 0, value_key= new List<string> { "28"} },
+                                    function = new List<FunctionAttributes>() {
+                                                            new FunctionAttributes { key="values", max=1,min = 0, value= new List<string> { "28"} },
                                                         },
                                     bus_Data = new BusData
                                     {
@@ -797,8 +824,8 @@
                                     sid = "030101123456781005050006ABCD",
                                     name = "TVOC",
                                     roomIdList = new List<string>() { "0001" },
-                                    function = new List<Trait>() {
-                                                            new Trait { name="values", max=1,min = 0, value_key= new List<string> { "0.3"} },
+                                    function = new List<FunctionAttributes>() {
+                                                            new FunctionAttributes { key="values", max=1,min = 0, value= new List<string> { "0.3"} },
                                                         },
                                     bus_Data = new BusData
                                     {
@@ -812,8 +839,8 @@
                                     sid = "030101123456781005030006ABCD",
                                     name = "婀垮害",
                                     roomIdList = new List<string>() { "0001" },
-                                    function = new List<Trait>() {
-                                                            new Trait { name="values", max=1,min = 0, value_key= new List<string> { "15"} },
+                                    function = new List<FunctionAttributes>() {
+                                                            new FunctionAttributes { key="values", max=1,min = 0, value= new List<string> { "15"} },
                                                         },
                                     bus_Data = new BusData
                                     {
@@ -829,6 +856,15 @@
                                 //璺宠浆椤甸潰----
                                 MainPage.GoUserPage();
                             });
+                        }
+                        else
+                        {
+                            //2020-11-13 寰呯‘璁�
+                            //鑾峰彇浣忓畢澶辫触锛岄噸鏂版爣璁颁负鏈櫥褰曠姸鎬�
+                             UserInfo.Current.LastTime = DateTime.MinValue;
+                             UserInfo.Current.SaveUserInfo();
+                            //鐧诲綍澶辫触锛岃鍏堟坊鍔犱綇瀹咃紒
+                            Utlis.ShowAlertOnMainThread(Language.StringByID(StringId.FailedGetHomeList));
                         }
                     }
                 }
@@ -858,7 +894,7 @@
         bool LoadMethod_Login()
         {
             var result = false;
-            ResponsePack loginResult;
+            ResponsePackNew loginResult;
             if (logintMode == 0 || loginType == 1)
             {
                 //璋冪敤鐧诲綍鎺ュ彛
@@ -869,23 +905,29 @@
                 //璋冪敤楠岃瘉鐮佺櫥褰曟帴鍙�
                 loginResult = pm.LoginValidCode(account, password);
             }
-            if (loginResult.StateCode.ToUpper() == "SUCCESS")
+            if (loginResult.Code == StateCode.SUCCESS)
             {
-                var loginDataStr = Newtonsoft.Json.Linq.JObject.FromObject(loginResult.ResponseData);
-
-                //璁板綍鐢ㄦ埛鏁版嵁
-                MainPage.LoginUser = new UserInfo
-                {
-                    ID = (int)loginDataStr.GetValue("UserID"),
-                    masterID = (int)loginDataStr.GetValue("MainUserID"),
-                    accountType = (int)loginDataStr.GetValue("UserType"),
-                    loginTokenString = loginDataStr.GetValue("Token").ToString(),
-                    accountString = account,
-                    password = password,
-                    lastTime = DateTime.Now,
-                    userName = loginDataStr.GetValue("Remark").ToString(),
-                };
-                MainPage.LoginUser.SaveUserInfo();
+                var revertData = Newtonsoft.Json.JsonConvert.DeserializeObject<UserLoginRes>(loginResult.Data.ToString());
+                // UserInfo.Current = new UserInfo
+                //{
+                //    userType = revertData.userType,
+                //    accountString = account,
+                //    password = password,
+                //    lastTime = DateTime.Now,
+                //    ID = revertData.userId,
+                //    loginTokenString = revertData.headerPrefix + revertData.accessToken,
+                //    refreshToken = revertData.refreshToken,
+                //    userName = revertData.name
+                //};
+                UserInfo.Current.userType = revertData.userType;
+                UserInfo.Current.AccountString = account;
+                //UserInfo.Current.password = password;
+                UserInfo.Current.LastTime = DateTime.Now;
+                UserInfo.Current.ID = revertData.userId;
+                UserInfo.Current.LoginTokenString = revertData.headerPrefix + revertData.accessToken;
+                UserInfo.Current.RefreshToken = revertData.refreshToken;
+                UserInfo.Current.userName = revertData.name;
+                UserInfo.Current.SaveUserInfo();
                 MainPage.Log("鐧诲綍鎴愬姛銆�");
                 result = true;
                 //鑾峰彇鐢ㄦ埛淇℃伅
@@ -898,53 +940,30 @@
             //鐧诲綍澶辫触
             else
             {
-                string tipStr = "Sever erorr";
-                switch (loginResult.StateCode)
-                {
-                    case "ValidCodeAndPhoneNoEqual":
-                        tipStr = Language.StringByID(StringId.VerificationCodeError);
-                        Application.RunOnMainThread(() =>
-                        {
-                            btnPasswordViewBottomLine.BackgroundColor = CSS_Color.AuxiliaryColor2;
-                            btnPasswordViewBottomLine.Height = Application.GetRealHeight(2);
-                        });
-                        break;
-                    case "USERNAMEORPWDERROR":
-                        tipStr = Language.StringByID(StringId.LoginFailed_AccountOrPasswordError);
-                        Application.RunOnMainThread(() =>
-                        {
-                            btnPasswordViewBottomLine.BackgroundColor = CSS_Color.AuxiliaryColor2;
-                            btnPasswordViewBottomLine.Height = Application.GetRealHeight(2);
-                        });
-                        break;
-                    case "ACCOUNTNOEXISTS":
-                        tipStr = Language.StringByID(StringId.ACCOUNTNOEXISTS);
-                        Application.RunOnMainThread(() =>
-                        {
-                            btnAccountViewBottomLine.BackgroundColor = CSS_Color.AuxiliaryColor2;
-                            btnAccountViewBottomLine.Height = Application.GetRealHeight(2);
-                        });
-                        break;
-                    case "NoRecord":
-                        tipStr = Language.StringByID(StringId.PlsGetTheVerificationCode);
-                        break;
-                    case "Self:Net_Error":
-                        tipStr = Language.StringByID(StringId.NetworkAnomaly);
-                        break;
-                }
                 //璐﹀彿鎴栬�呭瘑鐮侀敊璇�
                 Application.RunOnMainThread(() =>
                 {
-                    waitPage.Hide();
-                    //鎻愮ず鍘熷洜
-                    var tip = new Tip()
+                    if (loginResult.Code == "10008")
                     {
-                        Text = tipStr,
-                        CloseTime = 1,
-                        Direction = AMPopTipDirection.None
-                    };
-                    tip.Show(bodyView);
+                        //鐢ㄦ埛鍚嶆垨瀵嗙爜閿欒
+                        btnPasswordViewBottomLine.BackgroundColor = CSS_Color.AuxiliaryColor2;
+                        btnPasswordViewBottomLine.Height = Application.GetRealHeight(2);
+                    }
+                    else if (loginResult.Code == "10010")
+                    {
+                        //鐢ㄦ埛涓嶅瓨鍦�
+                        btnAccountViewBottomLine.BackgroundColor = CSS_Color.AuxiliaryColor2;
+                        btnAccountViewBottomLine.Height = Application.GetRealHeight(2);
+                    }
+                    else if (loginResult.Code == "14")
+                    {
+                        btnPasswordViewBottomLine.BackgroundColor = CSS_Color.AuxiliaryColor2;
+                        btnPasswordViewBottomLine.Height = Application.GetRealHeight(2);
+                    }
+                    waitPage.Hide();
                 });
+
+                IMessageCommon.Current.ShowErrorInfoAlter(loginResult.Code);
             }
             return result;
         }
@@ -956,31 +975,19 @@
         {
             var result = false;
             var responsePack = pm.GetHomePager();
-
-            if (responsePack == "Success")
+            if (responsePack == StateCode.SUCCESS)
             {
-                result = true;
+                //2020-11-13 寰呯‘璁わ紝娌℃湁浣忓畢锛屼笉绠楃櫥褰曟垚鍔�
+                if (UserInfo.Current.regionList != null && UserInfo.Current.regionList.Count > 0)
+                {
+                    result = true;
+                }
+                //result = true;
             }
             else
             {
-                var tipStr = "Server erorr";
-                switch (responsePack)
-                {
-                    case "NoLogin":
-                        tipStr = Language.StringByID(StringId.InvalidLoginCertificate);
-                        break;
-                }
-                Application.RunOnMainThread(() =>
-                {
-                    //鎻愮ず鍘熷洜
-                    var tip = new Tip()
-                    {
-                        Text = tipStr,
-                        CloseTime = 1,
-                        Direction = AMPopTipDirection.None
-                    };
-                    tip.Show(bodyView);
-                });
+                // 鎻愮ず閿欒
+                IMessageCommon.Current.ShowErrorInfoAlter(responsePack);
             }
             return result;
         }
@@ -1006,6 +1013,9 @@
                 //        }
                 //    });
                 //};
+
+                //鍒ゆ柇鏄惁鍚屾剰浜嗛殣绉佹斂绛�
+                if (CheckPrivacyPolicy() == false) return;
 
                 var registerPage = new RegisterPage();
                 registerPage.Show();
@@ -1040,5 +1050,18 @@
 
             };
         }
+
+        /// <summary>
+        /// 鐢ㄦ埛涓嶅瓨鍦�
+        /// </summary>
+        void ShowBtnAccountViewBottomLineError()
+        {
+            Application.RunOnMainThread(() =>
+            {
+                //鐢ㄦ埛涓嶅瓨鍦�
+                btnAccountViewBottomLine.BackgroundColor = CSS_Color.AuxiliaryColor2;
+                btnAccountViewBottomLine.Height = Application.GetRealHeight(2);
+            });
+        }
     }
 }
\ No newline at end of file
diff --git a/HDL_ON/UI/UI1-Login/RegisterPage.cs b/HDL_ON/UI/UI1-Login/RegisterPage.cs
index 4f30528..1cc2e76 100644
--- a/HDL_ON/UI/UI1-Login/RegisterPage.cs
+++ b/HDL_ON/UI/UI1-Login/RegisterPage.cs
@@ -27,6 +27,36 @@
         /// 閫夋嫨閭鐧诲綍鎸夐挳
         /// </summary>
         Button btnEmailLogin;
+        #region 鏈嶅姟鍣ㄩ�夋嫨
+        /// <summary>
+        /// 鏈嶅姟鍣ㄥ尯鍩�
+        /// </summary>
+        FrameLayout serverView;
+        /// <summary>
+        /// 鏈嶅姟鍣↖con鎸夐挳
+        /// </summary>
+        Button btnServerIcon;
+        /// <summary>
+        /// 鏈嶅姟鍣ㄦ枃鏈
+        /// </summary>
+        Button btnServerText;
+        ///// <summary>
+        ///// 鏈嶅姟鍣ㄦ枃鏈
+        ///// </summary>
+        //EditText etServer;
+        ///// <summary>
+        ///// 鏈嶅姟鍣ㄥ瓙鍖哄煙閲岄潰鐨勫垎鍓茬嚎1
+        ///// </summary>
+        //Button btnLineVertical_server;
+        /// <summary>
+        ///鏈嶅姟鍣╣o鎸夐挳
+        /// </summary>
+        Button btnServerGo;
+        /// <summary>
+        /// 鏈嶅姟鍣ㄥ瓙鍖哄煙搴曢儴妯嚎
+        /// </summary>
+        Button btnServerBottomLine;
+        #endregion
         /// <summary>
         /// 璐﹀彿瀛愬尯鍩�
         /// </summary>
@@ -164,6 +194,14 @@
         /// 1:閭
         /// </summary>
         int registerType;
+        /// <summary>
+        /// 鎵嬫満鍖哄彿
+        /// </summary>
+        string phoneZoneCode = "86";
+        /// <summary>
+        /// 鏄惁閫夋嫨杩囨湇鍔″櫒
+        /// </summary>
+        bool isSelectServer;
 
         string registerPhone;
         string registerEmail;
@@ -223,11 +261,66 @@
             bodyView.AddChidren(btnEmailLogin);
             #endregion
 
+            #region 鏈嶅姟鍣ㄩ�夋嫨
+            serverView = new FrameLayout()
+            {
+                X = Application.GetRealWidth(28),
+                Y = Application.GetRealHeight(167),
+                Width = Application.GetRealWidth(319),
+                Height = Application.GetRealHeight(44),
+            };
+            bodyView.AddChidren(serverView);
+
+            btnServerIcon = new Button()
+            {
+                X = Application.GetRealWidth(9),
+                Gravity = Gravity.CenterVertical,
+                Width = Application.GetMinRealAverage(20),
+                Height = Application.GetMinRealAverage(20),
+                UnSelectedImagePath = "LoginIcon/Server.png",
+
+            };
+            serverView.AddChidren(btnServerIcon);
+
+            btnServerText = new Button()
+            {
+                X = Application.GetRealWidth(49),
+                Width = Application.GetRealWidth(319 - 78),
+                TextAlignment = TextAlignment.CenterLeft,
+                TextColor = CSS_Color.PromptingColor1,
+                TextSize = CSS_FontSize.TextFontSize,
+                TextID = StringId.PleaseSelectCountryOrRegion,
+            };
+            serverView.AddChidren(btnServerText);
+
+            #region 瀵嗙爜鐧诲綍-鎺т欢鍔犺浇
+            btnServerGo = new Button()
+            {
+                X = Application.GetRealWidth(303),
+                Gravity = Gravity.CenterVertical,
+                Width = Application.GetMinRealAverage(16),
+                Height = Application.GetMinRealAverage(16),
+                UnSelectedImagePath = "Public/Right.png",
+            };
+            serverView.AddChidren(btnServerGo);
+
+            #endregion
+            btnServerBottomLine = new Button()
+            {
+                Y = Application.GetRealHeight(42),
+                BackgroundColor = CSS_Color.DividingLineColor,
+                SelectedBackgroundColor = CSS_Color.MainColor,
+                Height = Application.GetRealHeight(1),
+            };
+            serverView.AddChidren(btnServerBottomLine);
+            #endregion
+
+            int topPadding = Application.GetRealHeight(12);
             #region 璐﹀彿濉啓
             accountView = new FrameLayout()
             {
                 X = Application.GetRealWidth(28),
-                Y = Application.GetRealHeight(167),
+                Y = serverView.Bottom + topPadding,
                 Width = Application.GetRealWidth(319),
                 Height = Application.GetRealHeight(44),
             };
@@ -239,9 +332,22 @@
                 X = Application.GetRealWidth(9),
                 TextAlignment = TextAlignment.CenterLeft,
                 TextColor = CSS_Color.FirstLevelTitleColor,
-                Text = "+86",
+                Text = "+" + phoneZoneCode,
                 TextSize = CSS_FontSize.TextFontSize,
             };
+
+            //璺宠浆鍥藉鍖哄彿閫夋嫨鐣岄潰
+            EventHandler<MouseEventArgs> eHandler = (sender, e) => {
+                JLCountrycode.CountryCodeView.Current.Show((countryName, code) => {
+                    if (!string.IsNullOrEmpty(code))
+                    {
+                        phoneZoneCode = code;
+                        btnGlobalRoaming.Text = "+" + phoneZoneCode;
+                    }
+                });
+            };
+            btnGlobalRoaming.MouseUpEventHandler += eHandler;
+
             if (accountType == 0)
             {
                 accountView.AddChidren(btnGlobalRoaming);
@@ -266,6 +372,7 @@
                 TextSize = CSS_FontSize.TextFontSize,
                 PlaceholderTextColor = CSS_Color.PromptingColor1,
                 PlaceholderText = Language.StringByID(StringId.PlsEntryPhoneNumber),
+                IsNumberKeyboardType = true
             };
             accountView.AddChidren(etAccount);
 
@@ -295,7 +402,7 @@
             passwordView = new FrameLayout()
             {
                 X = Application.GetRealWidth(28),
-                Y = Application.GetRealHeight(223),
+                Y = accountView.Bottom + topPadding,
                 Width = Application.GetRealWidth(319),
                 Height = Application.GetRealHeight(44),
             };
@@ -361,7 +468,7 @@
             repeatPasswordView = new FrameLayout()
             {
                 X = Application.GetRealWidth(28),
-                Y = Application.GetRealHeight(279),
+                Y = passwordView.Bottom + topPadding,
                 Width = Application.GetRealWidth(319),
                 Height = Application.GetRealHeight(44),
             };
@@ -429,7 +536,8 @@
             verificationCodeView = new FrameLayout()
             {
                 X = Application.GetRealWidth(28),
-                Y = Application.GetRealHeight(335),
+                Y = repeatPasswordView.Bottom + topPadding,
+                //Y = Application.GetRealHeight(335),
                 Width = Application.GetRealWidth(319),
                 Height = Application.GetRealHeight(44),
             };
@@ -506,10 +614,11 @@
             btnRegister = new Button()
             {
                 Gravity = Gravity.CenterHorizontal,
-                Y = Application.GetRealHeight(421),
+                Y = verificationCodeView.Bottom + Application.GetRealHeight(42),
+                //Y = Application.GetRealHeight(421),
                 Width = Application.GetRealWidth(220),
-                Height = Application.GetRealHeight(44),
-                Radius = (uint)Application.GetRealHeight(22),
+                Height = Application.GetRealWidth(44),
+                Radius = (uint)Application.GetRealWidth(22),
                 SelectedBackgroundColor = CSS_Color.MainColor,
                 BackgroundColor = CSS_Color.PromptingColor1,
                 TextID = StringId.Register,
@@ -660,51 +769,39 @@
             var result = false;
             //璋冪敤鐧诲綍鎺ュ彛
             var loginResult = pm.LoginByPassword(account, password);
-            if (loginResult.StateCode.ToUpper() == "SUCCESS")
+            if (loginResult.Code == StateCode.SUCCESS)
             {
-                var loginDataStr = Newtonsoft.Json.Linq.JObject.FromObject(loginResult.ResponseData);
+                var revertData = Newtonsoft.Json.JsonConvert.DeserializeObject<UserLoginRes>(loginResult.Data.ToString());
+                // UserInfo.Current = new UserInfo
+                //{
+                //    userType = revertData.userType,
+                //    accountString = account,
+                //    password = password,
+                //    lastTime = DateTime.Now,
+                //    ID = revertData.userId,
+                //    loginTokenString = revertData.headerPrefix + revertData.accessToken,
+                //    refreshToken = revertData.refreshToken,
+                //    userName = revertData.name
+                //};
+                UserInfo.Current.userType = revertData.userType;
+                UserInfo.Current.AccountString = account;
+                //UserInfo.Current.password = password;
+                UserInfo.Current.LastTime = DateTime.Now;
+                UserInfo.Current.ID = revertData.userId;
+                UserInfo.Current.LoginTokenString = revertData.headerPrefix + revertData.accessToken;
+                UserInfo.Current.RefreshToken = revertData.refreshToken;
+                UserInfo.Current.userName = revertData.name;
 
-                //璁板綍鐢ㄦ埛鏁版嵁
-                MainPage.LoginUser = new UserInfo
-                {
-                    ID = (int)loginDataStr.GetValue("UserID"),
-                    masterID = (int)loginDataStr.GetValue("MainUserID"),
-                    accountType = (int)loginDataStr.GetValue("UserType"),
-                    accountString = account,
-                    password = password,
-                    lastTime = DateTime.Now,
-                    userName = loginDataStr.GetValue("Remark").ToString(),
-                };
-                MainPage.LoginUser.SaveUserInfo();
+                UserInfo.Current.SaveUserInfo();
                 MainPage.Log("鐧诲綍鎴愬姛銆�");
                 result = true;
-
-
             }
-            //鐧诲綍澶辫触
             else
             {
-                string tipStr = "Sever erorr";
-                switch (loginResult.StateCode)
-                {
-                    case "USERNAMEORPWDERROR":
-                        tipStr = Language.StringByID(StringId.LoginFailed_AccountOrPasswordError);
-                        break;
-                    case "Self:Net_Error":
-                        tipStr = Language.StringByID(StringId.NetworkAnomaly);
-                        break;
-                }
-                //璐﹀彿鎴栬�呭瘑鐮侀敊璇�
+                //鐧诲綍澶辫触
+                IMessageCommon.Current.ShowErrorInfoAlter(loginResult.Code);
                 Application.RunOnMainThread(() =>
                 {
-                    //鎻愮ず鍘熷洜
-                    var tip = new Tip()
-                    {
-                        Text = tipStr,
-                        CloseTime = 1,
-                        Direction = AMPopTipDirection.None
-                    };
-                    tip.Show(bodyView);
                     btnPasswordViewBottomLine.BackgroundColor = CSS_Color.AuxiliaryColor2;
                     btnPasswordViewBottomLine.Height = Application.GetRealHeight(2);
                 });
@@ -719,30 +816,17 @@
         {
             var result = false;
             var responsePack = pm.GetHomePager();
-            if (responsePack == "Success")
+            if (responsePack == StateCode.SUCCESS)
             {
+                //2020-11-13 寰呯‘璁わ紝娌℃湁浣忓畢锛屼笉绠楃櫥褰曟垚鍔�
+                if (UserInfo.Current.regionList != null && UserInfo.Current.regionList.Count > 0)
+                {
+                    result = true;
+                }
             }
             else
             {
-                var tipStr = "Server erorr";
-                switch (responsePack)
-                {
-                    case "NoLogin":
-                        tipStr = Language.StringByID(StringId.InvalidLoginCertificate);
-                        break;
-                }
-                Application.RunOnMainThread(() =>
-                {
-                    //鎻愮ず鍘熷洜
-                    var tip = new Tip()
-                    {
-                        Text = tipStr,
-                        CloseTime = 1,
-                        Direction = AMPopTipDirection.None
-                    };
-                    tip.Show(bodyView);
-                });
-
+                IMessageCommon.Current.ShowErrorInfoAlter(responsePack);
             }
             return result;
         }
diff --git a/HDL_ON/UI/UI1-Login/RegisterPageBLL.cs b/HDL_ON/UI/UI1-Login/RegisterPageBLL.cs
index d997321..b6dc594 100644
--- a/HDL_ON/UI/UI1-Login/RegisterPageBLL.cs
+++ b/HDL_ON/UI/UI1-Login/RegisterPageBLL.cs
@@ -21,6 +21,7 @@
             LoadEvent_Register();
             LoadEvent_LimtPasswordLength();
             LoadEvent_TextChange();
+            LoadEvent_Server();
             //var areaCodeList = pm.GetAreaCode();
         }
         /// <summary>
@@ -30,11 +31,11 @@
         {
             etAccount.TextChangeEventHandler = (sender, e) =>
             {
-                Regex reg = new Regex(@"^[1]+\d{10}");
-                var mFalg = reg.Match(etAccount.Text.Trim());
+                //Regex reg = new Regex(@"^[1]+\d{10}");
+                //var mFalg = reg.Match(etAccount.Text.Trim());
                 if (registerType == 0)//鎵嬫満娉ㄥ唽鑾峰彇楠岃瘉鐮佹寜閽敓鏁堟潯浠�
                 {
-                    if (btnGlobalRoaming.Text == "+86" && etAccount.Text.Trim().Length != 11)
+                    if (!Utlis.CheckPhoneNumber(etAccount.Text.Trim(), phoneZoneCode))
                     {
                         btnGetVerificationCode_Phone.IsSelected = false;
                     }
@@ -46,7 +47,7 @@
                 }
                 else//閭娉ㄥ唽鑾峰彇楠岃瘉鐮佹寜閽敓鏁堟潯浠�
                 {
-                    if (!mFalg.Success)
+                    if (!Utlis.CheckEmail(etAccount.Text.Trim()))
                     {
                         btnGetVerificationCode_Mail.IsSelected = false;
                     }
@@ -68,10 +69,11 @@
             //閫夋嫨鎵嬫満娉ㄥ唽
             btnPhoneLogin.MouseUpEventHandler = (sender, e) =>
             {
-                if(registerType == 0)
+                if (registerType == 0)
                 {
                     return;
                 }
+                etAccount.IsNumberKeyboardType = true;
                 etAccount.Text = registerPhone;
                 etPassword.Text = "";
                 etRepeatPassword.Text = "";
@@ -100,6 +102,8 @@
             {
                 if (registerType == 1)
                     return;
+
+                etAccount.IsNumberKeyboardType = false;
                 etAccount.Text = registerEmail;
                 etPassword.Text = "";
                 etRepeatPassword.Text = "";
@@ -148,9 +152,7 @@
                     {
                         if (registerType == 0)
                         {
-                            Regex reg = new Regex(@"^[1]+\d{10}");
-                            var mFalg = reg.Match(etAccount.Text.Trim());
-                            if (!mFalg.Success || (btnGlobalRoaming.Text == "+86" && etAccount.Text.Trim().Length != 11))
+                            if (!Utlis.CheckPhoneNumber(etAccount.Text.Trim(), phoneZoneCode))
                             {
                                 btnAccountViewBottomLine.BackgroundColor = CSS_Color.AuxiliaryColor2;
                                 btnAccountViewBottomLine.Height = Application.GetRealHeight(2);
@@ -179,10 +181,7 @@
                         else if (registerType == 1)
                         {
                             //閭娉ㄥ唽-楠岃瘉閭鏄惁姝g‘
-                            var reg = new Regex("^\\s*([A-Za-z0-9_-]+(\\.\\w+)*@(\\w+\\.)+\\w{2,5})\\s*$");
-                            //Regex.IsMatch(etAccount.Text.Trim(), "([a-zA-Z0-9_\\.\\-])+\\@(([a-zA-Z0-9\\-])+\\.)+([a-zA-Z0-9]{2,5})+");
-                            var mFalg = reg.Match(etAccount.Text.Trim());
-                            if (!mFalg.Success)
+                            if (!Utlis.CheckEmail(etAccount.Text.Trim()))
                             {
                                 btnAccountViewBottomLine.BackgroundColor = CSS_Color.AuxiliaryColor2;
                                 btnAccountViewBottomLine.Height = Application.GetRealHeight(2);
@@ -208,7 +207,7 @@
                             }
                         }
                     }
-                    if(accountType ==0)
+                    if (accountType == 0)
                     {
                         registerPhone = etAccount.Text.Trim();
                     }
@@ -366,74 +365,125 @@
         void LoadEvent_GetVerificationCode()
         {
             EventHandler<MouseEventArgs> eventHandler = (sender, e) =>
-           {
-               if ((sender as Button).IsSelected)
-               {
-                   (sender as Button).IsSelected = false;
-                   string account = etAccount.Text.Trim();
-                   //鐭俊鍙戦�侀棿闅�60s
-                   int time = 60;
-                   new Thread(() =>
-                   {
-                       while (time > 0)
-                       {
-                           time--;
-                           Application.RunOnMainThread(() =>
-                           {
-                               (sender as Button).Text = time.ToString() + "s";
-                           });
-                           Thread.Sleep(1000);
-                       }
-                       Application.RunOnMainThread(() =>
-                       {
-                           //鍥炲鑾峰彇鐭俊鎸夐挳浜嬩欢
-                           (sender as Button).IsSelected = true;
-                           (sender as Button).TextID = StringId.GetVerificationCode;
-                       });
-                   })
-                   { IsBackground = true }.Start();
-                   new Thread(() =>
-                   {
-                       //鑾峰彇楠岃瘉鐮�
-                       var result = pm.GetRegisterVerCode(account);
-                       if (result.StateCode.ToUpper() == "SUCCESS")
-                       {
-                       }
-                       else
-                       {
-                           string tipString = "Server error";
-                           switch (result.StateCode)
-                           {
-                               case "Exist":
-                                   tipString = Language.StringByID(StringId.AccountAlreadyUse);
-                                   break;
-                               case "SendFail":
-                                   tipString = Language.StringByID(StringId.FailedToSendVerificationCode);
-                                   break;
-                               case "Self:Net_Error":
-                                   tipString = Language.StringByID(StringId.NetworkAnomaly);
-                                   break;
-                               case "ParameterOrEmpty":
-                                   if (registerType == 0)
-                                       tipString = Language.StringByID(StringId.PlsEntryCorrectMobilNeumber);
-                                   else
-                                       tipString = Language.StringByID(StringId.PlsEntryCorrectEmailAddress);
-                                   break;
-                           }
-                           Application.RunOnMainThread(() =>
-                           {
-                               new Tip()
-                               {
-                                   CloseTime = 1,
-                                   Direction = AMPopTipDirection.None,
-                                   Text = tipString
-                               }.Show(bodyView);
-                           });
-                       }
-                   })
-                   { IsBackground = true }.Start();
-               }
-           };
+            {
+                if ((sender as Button).IsSelected)
+                {
+                    //鍒ゆ柇鏄惁閫夋嫨浜嗘湇鍔″櫒锛岄�夋嫨浜嗘墠鑳藉彂閫侀獙璇佺爜
+                    if (CheckIfSelectServer() == false) return;
+
+                    string account = etAccount.Text.Trim();
+                    int time = 60;
+                    new Thread(() =>
+                    {
+                        //1.鍏堟鏌ヨ处鍙锋槸鍚︽敞鍐岃繃
+                        var result = pm.GetRegionByAccount(account);
+                        //2.璐﹀彿涓嶅瓨鍦紝鎵嶅厑璁哥户缁敞鍐�
+                        if (result.Code == StateCode.ACCOUNT_NOT_EXIST)
+                        {
+                            //璐﹀彿涓嶅瓨鍦� 鏈敞鍐屽厑璁稿彂閫侀獙璇佺爜娉ㄥ唽
+                            Application.RunOnMainThread(() =>
+                            {
+                                //鐭俊鍙戦�侀棿闅�60s
+                                (sender as Button).IsSelected = false;
+
+                            });
+                            //2.1 寮�濮嬪�掕鏃�
+                            new Thread(() =>
+                            {
+                                while (time > 0)
+                                {
+                                    time--;
+                                    Application.RunOnMainThread(() =>
+                                    {
+                                        (sender as Button).Text = time.ToString() + "s";
+                                    });
+                                    Thread.Sleep(1000);
+                                }
+                                Application.RunOnMainThread(() =>
+                                {
+                                    //鍥炲鑾峰彇鐭俊鎸夐挳浜嬩欢
+                                    (sender as Button).IsSelected = true;
+                                    (sender as Button).TextID = StringId.GetVerificationCode;
+                                });
+                            })
+                            { IsBackground = true }.Start();
+
+                            //2.2  鑾峰彇楠岃瘉鐮�
+                            ResponsePackNew resultObj;
+                            if (registerType == 1)//閭
+                            {
+                                resultObj = pm.VerificationCodeSend(VerifyType.REGISTER_USER, account);
+                            }
+                            else
+                            {
+                                resultObj = pm.VerificationCodeSend(VerifyType.REGISTER_USER, account, true, phoneZoneCode);
+                            }
+
+                            if (resultObj.Code != StateCode.SUCCESS)
+                            {
+                                // 鎻愮ず閿欒
+                                IMessageCommon.Current.ShowErrorInfoAlter(resultObj.Code);
+                            }
+
+                        }
+                        else if (result.Code.ToUpper() == StateCode.SUCCESS)
+                        {
+                            //3.鎻愮ず璐﹀彿宸插瓨鍦紝鏃犳硶閲嶅娉ㄥ唽
+                            Utlis.ShowAlertOnMainThread(Language.StringByID(StringId.AccountAlreadyUse));
+                        }
+                        else
+                        {
+                            //4.鎻愮ず鍏跺畠寮傚父閿欒
+                            IMessageCommon.Current.ShowErrorInfoAlter(result.Code);
+                        }
+                    })
+                    { IsBackground = true }.Start();
+
+                    //(sender as Button).IsSelected = false;
+                    //string account = etAccount.Text.Trim();
+                    ////鐭俊鍙戦�侀棿闅�60s
+                    //int time = 60;
+                    //new Thread(() =>
+                    //{
+                    //    while (time > 0)
+                    //    {
+                    //        time--;
+                    //        Application.RunOnMainThread(() =>
+                    //        {
+                    //            (sender as Button).Text = time.ToString() + "s";
+                    //        });
+                    //        Thread.Sleep(1000);
+                    //    }
+                    //    Application.RunOnMainThread(() =>
+                    //    {
+                    //       //鍥炲鑾峰彇鐭俊鎸夐挳浜嬩欢
+                    //       (sender as Button).IsSelected = true;
+                    //        (sender as Button).TextID = StringId.GetVerificationCode;
+                    //    });
+                    //})
+                    //{ IsBackground = true }.Start();
+                    //new Thread(() =>
+                    //{
+                    //    ResponsePackNew resultObj;
+                    //    // 鑾峰彇楠岃瘉鐮�
+                    //    if (registerType == 1)//閭
+                    //    {
+                    //         resultObj = pm.VerificationCodeSend(VerifyType.REGISTER_USER, account);
+                    //    }
+                    //    else
+                    //    {
+                    //         resultObj = pm.VerificationCodeSend(VerifyType.REGISTER_USER, account, true, phoneZoneCode);
+                    //    }
+
+                    //    if (resultObj.Code != StateCode.SUCCESS_CODE)
+                    //    {
+                    //       // 鎻愮ず閿欒
+                    //       IMessageCommon.Current.ShowErrorInfoAlter(NewAPI.API_POST_Verification_Send, resultObj.Code);
+                    //    }
+                    //})
+                    //{ IsBackground = true }.Start();
+                }
+            };
 
             btnGetVerificationCode_Phone.MouseDownEventHandler = eventHandler;
             btnGetVerificationCode_Mail.MouseDownEventHandler = eventHandler;
@@ -446,7 +496,7 @@
         {
             btnRegister.MouseUpEventHandler = (sender, e) =>
             {
-                if(etPassword.Text.Trim().Length > 13 || etPassword.Text.Trim().Length<6)
+                if (etPassword.Text.Trim().Length > 13 || etPassword.Text.Trim().Length < 6)
                 {
                     new Tip()
                     {
@@ -458,6 +508,9 @@
                 }
                 if (btnRegister.IsSelected)
                 {
+                    //鍒ゆ柇鏄惁閫夋嫨浜嗘湇鍔″櫒锛岄�夋嫨浜嗘墠鑳藉彂閫侀獙璇佺爜
+                    if (CheckIfSelectServer() == false) return;
+
                     waitPage = new Loading();
                     new PublicAssmebly().LoadPage_WaitPage(LoadMethod_RegisterThread(), bodyView, waitPage);
                 }
@@ -477,10 +530,10 @@
             {
                 try
                 {
-                    //鏍¢獙楠岃瘉鐮�/娉ㄥ唽璐﹀彿
-                    var validateSmsResult = pm.ValidataCodeAndRegister(account, password, entryPassword, verCode, 86);
-                    //楠岃瘉鐮佹牎楠屾垚鍔�
-                    if (validateSmsResult.StateCode.ToUpper() == "SUCCESS")
+                    //鏍¢獙楠岃瘉鐮佸苟娉ㄥ唽璐﹀彿
+                    var isPhone = registerType == 0;
+                    var validateSmsResult = pm.ValidataCodeAndRegister(account, password, verCode, isPhone);
+                    if (validateSmsResult.Code == StateCode.SUCCESS)
                     {
                         //娉ㄥ唽鎴愬姛
                         //鎵ц鍥炶皟浜嬩欢
@@ -491,41 +544,45 @@
                             LoadEvent_AutoLogin(account, password);
                         });
                     }
-                    else//娉ㄥ唽澶辫触
+                    else// 娉ㄥ唽澶辫触
                     {
-                        string erorrInfo = "";
-                        switch (validateSmsResult.StateCode)
-                        {
-                            case "Exist":
-                                erorrInfo = Language.StringByID(StringId.AccountAlreadyUse);
-                                break;
-                            case "PwdNoConfirm":
-                                erorrInfo = Language.StringByID(StringId.IncorrectRepeatPassword);
-                                break;
-                            case "ValidCodeAndPhoneNoEqual":
-                                erorrInfo = Language.StringByID(StringId.VerificationCodeWrong);
-                                break;
-                            case "NoRecord":
-                                erorrInfo = Language.StringByID(StringId.PlsGetTheVerificationCode);
-                                Application.RunOnMainThread(() =>
-                                {
-                                    btnVerificationCodeViewBottomLine.BackgroundColor = CSS_Color.AuxiliaryColor2;
-                                    btnVerificationCodeViewBottomLine.Height = Application.GetRealHeight(2);
-                                });
-                                break;
-                            default:
-                                erorrInfo = Language.StringByID(StringId.RegistrationFailedPleaseTryAgain);
-                                break;
-                        }
-                        Application.RunOnMainThread(() =>
-                        {
-                            new Tip()
-                            {
-                                CloseTime = 1,
-                                Direction = AMPopTipDirection.None,
-                                Text = erorrInfo,
-                            }.Show(bodyView);
-                        });
+                        // 鎻愮ず閿欒
+                        IMessageCommon.Current.ShowErrorInfoAlter(validateSmsResult.Code);
+
+                        //2020-11-13 寰呬慨鏀�
+                        //string erorrInfo = "";
+                        //switch (validateSmsResult.StateCode)
+                        //{
+                        //    case "Exist":
+                        //        erorrInfo = Language.StringByID(StringId.AccountAlreadyUse);
+                        //        break;
+                        //    case "PwdNoConfirm":
+                        //        erorrInfo = Language.StringByID(StringId.IncorrectRepeatPassword);
+                        //        break;
+                        //    case "ValidCodeAndPhoneNoEqual":
+                        //        erorrInfo = Language.StringByID(StringId.VerificationCodeWrong);
+                        //        break;
+                        //    case "NoRecord":
+                        //        erorrInfo = Language.StringByID(StringId.PlsGetTheVerificationCode);
+                        //        Application.RunOnMainThread(() =>
+                        //        {
+                        //            btnVerificationCodeViewBottomLine.BackgroundColor = CSS_Color.AuxiliaryColor2;
+                        //            btnVerificationCodeViewBottomLine.Height = Application.GetRealHeight(2);
+                        //        });
+                        //        break;
+                        //    default:
+                        //        erorrInfo = Language.StringByID(StringId.RegistrationFailedPleaseTryAgain);
+                        //        break;
+                        //}
+                        //Application.RunOnMainThread(() =>
+                        //{
+                        //    new Tip()
+                        //    {
+                        //        CloseTime = 1,
+                        //        Direction = AMPopTipDirection.None,
+                        //        Text = erorrInfo,
+                        //    }.Show(bodyView);
+                        //});
                     }
                 }
                 catch (Exception ex)
@@ -541,5 +598,78 @@
                 }
             });
         }
+
+        /// <summary>
+        /// 鍔犺浇鏈嶅姟鍣ㄩ�夋嫨鎸夐挳浜嬩欢
+        /// </summary>
+        void LoadEvent_Server()
+        {
+            //鍒ゆ柇涔嬪墠鏄惁閫夋嫨杩�
+            if (UserInfo.Current.GlobalRegion != null && !string.IsNullOrEmpty(UserInfo.Current.GlobalRegion.regionUrl))
+            {
+
+                SetServerText();
+            }
+
+            EventHandler<MouseEventArgs> eventHandler = (sender, e) =>
+            {
+                Action selectAction = () =>
+                {
+                    //鏈嶅姟鍣ㄩ�夋嫨杩囨爣璁颁负true
+                    SetServerText();
+                };
+                new SelectServerDialog(selectAction).LoadPage();
+
+            };
+
+            btnServerGo.MouseUpEventHandler = eventHandler;
+            btnServerText.MouseUpEventHandler = eventHandler;
+        }
+
+        /// <summary>
+        /// 妫�娴嬫槸鍚﹂�夋嫨浜嗘湇鍔″櫒
+        /// </summary>
+        /// <returns></returns>
+        private bool CheckIfSelectServer()
+        {
+            if (isSelectServer == false)
+            {
+                //璇峰厛閫夋嫨鍥藉/鍖哄煙
+                Utlis.ShowTip(Language.StringByID(StringId.PleaseSelectCountryOrRegion));
+                ShowServerBottomLineState(true);
+                return false;
+            }
+            return true;
+        }
+
+        /// <summary>
+        /// 鏈嶅姟鍣ㄤ笅鍒掔嚎鏍峰紡
+        /// </summary>
+        /// <param name="isError"></param>
+        void ShowServerBottomLineState(bool isError)
+        {
+            if (isError)
+            {
+                btnServerBottomLine.BackgroundColor = CSS_Color.AuxiliaryColor2;
+                btnServerBottomLine.Height = Application.GetRealHeight(2);
+            }
+            else
+            {
+                btnServerBottomLine.BackgroundColor = CSS_Color.DividingLineColor;
+                btnServerBottomLine.Height = Application.GetRealHeight(1);
+            }
+        }
+
+        /// <summary>
+        /// 
+        /// </summary>
+        void SetServerText()
+        {
+            //鏈嶅姟鍣ㄩ�夋嫨杩囨爣璁颁负true
+            isSelectServer = true;
+            ShowServerBottomLineState(false);
+            btnServerText.TextColor = CSS_Color.FirstLevelTitleColor;
+            btnServerText.Text = UserInfo.Current.GlobalRegion.regionName;
+        }
     }
 }
\ No newline at end of file
diff --git a/HDL_ON/UI/UI1-Login/SelectServerDialog.cs b/HDL_ON/UI/UI1-Login/SelectServerDialog.cs
new file mode 100644
index 0000000..2b262db
--- /dev/null
+++ b/HDL_ON/UI/UI1-Login/SelectServerDialog.cs
@@ -0,0 +1,161 @@
+锘縰sing System;
+using System.Collections.Generic;
+using HDL_ON.DAL.Server;
+using HDL_ON.UI.CSS;
+using Shared;
+
+namespace HDL_ON.UI
+{
+    /// <summary>
+    /// SelectServerDialog
+    /// 鏈嶅姟鍣ㄩ�夋嫨椤甸潰
+    /// </summary>
+    public class SelectServerDialog : Dialog
+    {
+        /// <summary>
+        /// 
+        /// </summary>
+        FrameLayout bodyView;
+
+        /// <summary>
+        /// 閫夋嫨浜嬩欢
+        /// </summary>
+        Action selectAction;
+
+        /// <summary>
+        /// 
+        /// </summary>
+        public SelectServerDialog(Action selectAction)
+        {
+            bodyView = new FrameLayout();
+            this.selectAction = selectAction;
+        }
+
+
+        /// <summary>
+        /// 
+        /// </summary>
+        public void LoadPage()
+        {
+            bodyView.BackgroundColor = CSS_Color.MainBackgroundColor;
+            this.AddChidren(bodyView);
+            //鍔犺浇椤堕儴鑿滃崟鏍�
+            new TopViewDiv(this, bodyView, Language.StringByID(StringId.PleaseSelectCountryOrRegion)).LoadTopView();
+            //鍔犺浇鏈嶅姟鍣ㄥ尯鍩熼�夋嫨
+            AddRegionalSelectionView();
+            //Show
+            this.Show();
+        }
+
+
+        /// <summary>
+        /// 鍔犺浇鍖哄煙閫夋嫨View
+        /// </summary>
+        void AddRegionalSelectionView()
+        {
+
+            VerticalScrolViewLayout VerticalScrolViewMiddle = new VerticalScrolViewLayout()
+            {
+                Y = Application.GetRealHeight(64),
+                Height = bodyView.Height - Application.GetRealHeight(64),
+            };
+            bodyView.AddChidren(VerticalScrolViewMiddle);
+
+            var waitPage = new Loading();
+            waitPage.Start("Please wait...");
+
+            System.Threading.Tasks.Task.Run(() =>
+            {
+                try
+                {
+                    var dataList = new List<GlobalRegionListRes>();
+                    var requestJson = HttpUtil.GetSignRequestJson(new GetRegionListObj() { regionMark = HttpUtil.RegionMark });
+                    var revertObj = HttpUtil.RequestHttpsPost(NewAPI.API_POST_GlobalRegionList, requestJson, HttpUtil.GlobalRequestHttpsHost);
+                    if (revertObj.Code == StateCode.SUCCESS)
+                    {
+                        Application.RunOnMainThread(() =>
+                        {
+                            var responseDataObj = Newtonsoft.Json.JsonConvert.DeserializeObject<List<GlobalRegionListRes>>(revertObj.Data.ToString());
+                            if (responseDataObj != null)
+                            {
+                                dataList = responseDataObj;
+                                if (dataList != null && dataList.Count > 0)
+                                {
+                                    foreach (var data in dataList)
+                                    {
+                                        AddRowView(data, VerticalScrolViewMiddle);
+                                    }
+                                }
+                            }
+                        });
+                    }
+                    else
+                    {
+                        //鎻愮ず閿欒
+                        IMessageCommon.Current.ShowErrorInfoAlter(revertObj.Code);
+                    }
+                }
+                catch
+                {
+
+                }
+                finally
+                {
+                    Application.RunOnMainThread(() =>
+                    {
+                        waitPage.Hide();
+                    });
+                }
+            });
+
+        }
+
+        /// <summary>
+        /// 鍔犺浇鍖哄煙閫夋嫨RowView
+        /// </summary>
+        /// <param name="mGlobalRegion"></param>
+        /// <param name="VerticalScrolViewMiddle"></param>
+        void AddRowView(GlobalRegionListRes mGlobalRegion, VerticalScrolViewLayout VerticalScrolViewMiddle)
+        {
+            var rowView = new FrameLayout()
+            {
+                Height = Application.GetRealHeight(44),
+            };
+            VerticalScrolViewMiddle.AddChidren(rowView);
+
+            var urlBtn = new Button()
+            {
+                X = Application.GetRealWidth(16),
+                Height = rowView.Height,
+                Width = Application.GetRealWidth(200),
+                TextSize = CSS_FontSize.SubheadingFontSize,
+                TextColor = CSS_Color.FirstLevelTitleColor,
+                TextAlignment = TextAlignment.CenterLeft
+            };
+            rowView.AddChidren(urlBtn);
+
+            //var lineView = new LineView();
+            //rowView.AddChidren(lineView);
+            //lineView.Y = rowView.Height - lineView.Height;
+
+            EventHandler<MouseEventArgs> eHandler = (sender, e) =>
+            {
+                UserInfo.Current.RequestHttpsHost = mGlobalRegion.regionUrl;
+                UserInfo.Current.GlobalRegion = mGlobalRegion;
+                UserInfo.Current.SaveUserInfo();
+                //鍏抽棴椤甸潰
+                this.Close();
+                selectAction?.Invoke();
+            };
+            rowView.MouseUpEventHandler += eHandler;
+            urlBtn.MouseUpEventHandler += eHandler;
+
+            urlBtn.Text = mGlobalRegion.regionName;
+
+            if (mGlobalRegion.regionUrl == UserInfo.Current.RequestHttpsHost)
+            {
+                urlBtn.TextColor = CSS_Color.MainColor;
+            }
+        }
+    }
+}
diff --git a/HDL_ON/UI/UI2/1-HomePage/HomePage.cs b/HDL_ON/UI/UI2/1-HomePage/HomePage.cs
index cba96cc..782e8c7 100644
--- a/HDL_ON/UI/UI2/1-HomePage/HomePage.cs
+++ b/HDL_ON/UI/UI2/1-HomePage/HomePage.cs
@@ -111,7 +111,7 @@
                     Y = Application.GetRealHeight(46),
                     Width = Application.GetRealWidth(6),
                     Height = Application.GetRealWidth(6),
-                    BackgroundColor = CSS_Color.MainColor,
+                    BackgroundColor = CSS_Color.LinkTipFail,
                     Radius = (uint)Application.GetRealWidth(3),
                 };
                 topView.AddChidren(btnLinkStateTip);
@@ -136,12 +136,7 @@
                 {
                     System.Threading.Tasks.Task.Run(() =>
                         {
-                            DriverLayer.Control.ins.ChangeCommunicationMode(DriverLayer.CommunicationMode.local_BusUdp);
-                            UdpSocket._BusSocket.SearchNetDeviceAction = (revIp) =>
-                            {
-                                MainPage.Log($"鎼滅储鍒扮綉缁滆澶囷細{revIp}");
-                            };
-                            DriverLayer.Control.ins.myUdp.ReadGatewayIP();
+                            DriverLayer.Control.Ins.SearchLoaclGateway();
                         });
                 };
 #endif
@@ -349,6 +344,12 @@
             {
                 MainPage.Log($"HomePage LoadPage Error : {ex.Message}");
             }
+
+
+            System.Threading.Tasks.Task.Run(() =>
+            {
+                //DriverLayer.Control.Ins.SearchLoaclGateway();
+            });
         }
 
         /// <summary>
@@ -700,14 +701,14 @@
                             btnPower.IsSelected = false;
                             Music.SendMethod.Pause(a31player);
                             a31player.A31PlayStatus.status = "pause";
-                            a31player.trait_on_off.value = "off";
+                            a31player.trait_on_off.curValue = "off";
                         }
                         else
                         {
                             btnPower.IsSelected = true;
                             Music.SendMethod.Play(a31player);
                             a31player.A31PlayStatus.status = "play";
-                            a31player.trait_on_off.value = "on";
+                            a31player.trait_on_off.curValue = "on";
                         }
                         UpdataFunctionStates(a31player);
                     };
diff --git a/HDL_ON/UI/UI2/1-HomePage/HomePageBLL.cs b/HDL_ON/UI/UI2/1-HomePage/HomePageBLL.cs
index 7664076..98c62c1 100644
--- a/HDL_ON/UI/UI2/1-HomePage/HomePageBLL.cs
+++ b/HDL_ON/UI/UI2/1-HomePage/HomePageBLL.cs
@@ -12,9 +12,39 @@
         /// </summary>
         public static void LoadEvent_RefreshAir()
         {
-            bodyView.btnTempValues.Text = MainPage.cityInfo.temperature == null ? "--" : MainPage.cityInfo.temperature + "掳";
-            bodyView.btnHumidityValues.Text = MainPage.cityInfo.humidity == null ? "--" : MainPage.cityInfo.humidity + "%";
-            bodyView.btnPm25Values.Text = MainPage.cityInfo.pm25 == null ? "--" : MainPage.cityInfo.pm25;
+            if (bodyView != null)
+            {
+                bodyView.btnTempValues.Text = MainPage.cityInfo.temperature == null ? "--" : MainPage.cityInfo.temperature + "掳";
+                bodyView.btnHumidityValues.Text = MainPage.cityInfo.humidity == null ? "--" : MainPage.cityInfo.humidity + "%";
+                bodyView.btnPm25Values.Text = MainPage.cityInfo.pm25 == null ? "--" : MainPage.cityInfo.pm25;
+            }
+        }
+        /// <summary>
+        /// 纭杩炴帴鐘舵��
+        /// </summary>
+        public static void LoadEvent_CheckLinkStatus()
+        {
+            if (bodyView != null)
+            {
+                Application.RunOnMainThread(() =>
+                {
+                    if (Control.Ins.GatewayOnline)
+                    {
+                        if (Control.Ins.IsRemote)
+                        {
+                            bodyView.btnLinkStateTip.BackgroundColor = CSS.CSS_Color.LinkTipRemote;
+                        }
+                        else
+                        {
+                            bodyView.btnLinkStateTip.BackgroundColor = CSS.CSS_Color.MainColor;
+                        }
+                    }
+                    else
+                    {
+                        bodyView.btnLinkStateTip.BackgroundColor = CSS.CSS_Color.LinkTipFail;
+                    }
+                });
+            }
         }
 
         /// <summary>
@@ -117,7 +147,7 @@
                         {
                             if (view.Tag.ToString() == function.sid)
                             {
-                                var state = function.trait_on_off.value.ToString() == "on";
+                                var state = function.trait_on_off.curValue.ToString() == "on";
                                 for (int i = 0; i < view.ChildrenCount; i++)
                                 {
                                     if (view.GetChildren(i).GetType() == typeof(Button))
@@ -158,7 +188,7 @@
             {
                 string msg = function.name + Language.StringByID(StringId.AlreadyOpened);
                 new PublicAssmebly().TipMsgAutoClose(msg, true);
-                Control.ins.ControlScene(function as Scene);
+                Control.Ins.ControlScene(function as Scene);
             };
             btnCoverd.MouseUpEventHandler = eventHandler;
             btnName.MouseUpEventHandler = eventHandler;
@@ -177,10 +207,10 @@
                 btnSwitch.IsSelected = !btnSwitch.IsSelected;
                 new System.Threading.Thread(() =>
                 {
-                    function.trait_on_off.value = btnSwitch.IsSelected ? "on" : "off";
+                    function.trait_on_off.curValue = btnSwitch.IsSelected ? "on" : "off";
                     System.Collections.Generic.Dictionary<string, string> d = new System.Collections.Generic.Dictionary<string, string>();
-                    d.Add("on_off", function.trait_on_off.value.ToString());
-                    Control.ins.SendWriteCommand(function, d);
+                    d.Add("on_off", function.trait_on_off.curValue.ToString());
+                    Control.Ins.SendWriteCommand(function, d);
                 })
                 { IsBackground = true }.Start();
             };
@@ -210,11 +240,11 @@
             btnClose.MouseUpEventHandler = (sender, e) =>
             {
                 btnClose.IsSelected = false;
-                curtain.trait_on_off.value = "off";
+                curtain.trait_on_off.curValue = "off";
                 curtain.percent = 0;
                 System.Collections.Generic.Dictionary<string, string> d = new System.Collections.Generic.Dictionary<string, string>();
-                d.Add("on_off",curtain.trait_on_off.value.ToString());
-                Control.ins.SendWriteCommand(curtain, d);
+                d.Add("on_off",curtain.trait_on_off.curValue.ToString());
+                Control.Ins.SendWriteCommand(curtain, d);
             };
 
             btnOpen.MouseDownEventHandler = (sender, e) =>
@@ -224,11 +254,11 @@
             btnOpen.MouseUpEventHandler = (sender, e) =>
             {
                 btnOpen.IsSelected = false;
-                curtain.trait_on_off.value = "on";
+                curtain.trait_on_off.curValue = "on";
                 curtain.percent = 100;
                 System.Collections.Generic.Dictionary<string, string> d = new System.Collections.Generic.Dictionary<string, string>();
-                d.Add("on_off", curtain.trait_on_off.value.ToString());
-                Control.ins.SendWriteCommand(curtain, d);
+                d.Add("on_off", curtain.trait_on_off.curValue.ToString());
+                Control.Ins.SendWriteCommand(curtain, d);
             };
         }
 
diff --git a/HDL_ON/UI/UI2/2-Classification/ClassificaitionPublicBLL.cs b/HDL_ON/UI/UI2/2-Classification/ClassificaitionPublicBLL.cs
index e024ef2..1e0353f 100644
--- a/HDL_ON/UI/UI2/2-Classification/ClassificaitionPublicBLL.cs
+++ b/HDL_ON/UI/UI2/2-Classification/ClassificaitionPublicBLL.cs
@@ -61,7 +61,7 @@
                                             {
                                                 try
                                                 {
-                                                    (fcView.GetChildren(j) as Button).IsSelected = updataFunction.trait_on_off.value.ToString() == "on";
+                                                    (fcView.GetChildren(j) as Button).IsSelected = updataFunction.trait_on_off.curValue.ToString() == "on";
                                                 }
                                                 catch (Exception ex)
                                                 {
@@ -74,7 +74,7 @@
                                             {
                                                 try
                                                 {
-                                                    if (updataFunction.trait_on_off.value.ToString() == "on")
+                                                    if (updataFunction.trait_on_off.curValue.ToString() == "on")
                                                     {
                                                         (fcView.GetChildren(j) as DiyImageSeekBar).Progress = (updataFunction as Light).brightness;
                                                         (fcView.GetChildren(j) as DiyImageSeekBar).ProgressBarColor = CSS.CSS_Color.AuxiliaryColor1;
@@ -96,7 +96,7 @@
                                             {
                                                 try
                                                 {
-                                                    (fcView.GetChildren(j) as Button).IsSelected = updataFunction.trait_on_off.value.ToString() == "on";
+                                                    (fcView.GetChildren(j) as Button).IsSelected = updataFunction.trait_on_off.curValue.ToString() == "on";
                                                     (fcView.GetChildren(j) as Button).Text = updataFunction.lastState;
                                                 }
                                                 catch (Exception ex)
@@ -113,7 +113,7 @@
                                             {
                                                 try
                                                 {
-                                                    (fcView.GetChildren(j) as Button).IsSelected = uCurtain.trait_on_off.value.ToString() == "off";
+                                                    (fcView.GetChildren(j) as Button).IsSelected = uCurtain.trait_on_off.curValue.ToString() == "off";
                                                 }
                                                 catch (Exception ex)
                                                 {
@@ -124,7 +124,7 @@
                                             {
                                                 try
                                                 {
-                                                    (fcView.GetChildren(j) as Button).IsSelected = uCurtain.trait_on_off.value.ToString() == "on";
+                                                    (fcView.GetChildren(j) as Button).IsSelected = uCurtain.trait_on_off.curValue.ToString() == "on";
                                                 }
                                                 catch (Exception ex)
                                                 {
diff --git a/HDL_ON/UI/UI2/2-Classification/ClassificationPage.cs b/HDL_ON/UI/UI2/2-Classification/ClassificationPage.cs
index 4f332e2..9f9455e 100644
--- a/HDL_ON/UI/UI2/2-Classification/ClassificationPage.cs
+++ b/HDL_ON/UI/UI2/2-Classification/ClassificationPage.cs
@@ -359,8 +359,8 @@
 
                 roomViewbgColor.MouseUpEventHandler += (sender, e) =>
                 {
-                    Action<Room > ReloadRoomName = (obj) => {
-                        btnFloorAndRoomName.Text = obj.floorName + obj.name;
+                    Action ReloadRoomName = () => {
+                        btnFloorAndRoomName.Text = room.floorName + room.name;
                     };
 
                     var view = new RoomPage(room, ReloadRoomName);
@@ -425,25 +425,25 @@
                     case ShowFunction.Light:
                         #region Light
                         functionCount = DB_ResidenceData.functionList.lights.Count;
-                        functionOnCount = DB_ResidenceData.functionList.lights.FindAll((obj) => obj.trait_on_off.value.ToString() == "on").Count;
+                        functionOnCount = DB_ResidenceData.functionList.lights.FindAll((obj) => obj.trait_on_off.curValue.ToString() == "on").Count;
                         #endregion
                         break;
                     case ShowFunction.AC:
                         #region AC
                         functionCount = DB_ResidenceData.functionList.aCs.Count;
-                        functionOnCount = DB_ResidenceData.functionList.aCs.FindAll((obj) => obj.trait_on_off.value.ToString() == "on").Count;
+                        functionOnCount = DB_ResidenceData.functionList.aCs.FindAll((obj) => obj.trait_on_off.curValue.ToString() == "on").Count;
                         #endregion
                         break;
                     case ShowFunction.Curtain:
                         #region Curtain
                         functionCount = DB_ResidenceData.functionList.curtains.Count;
-                        functionOnCount = DB_ResidenceData.functionList.curtains.FindAll((obj) => obj.trait_on_off.value.ToString() == "on").Count;
+                        functionOnCount = DB_ResidenceData.functionList.curtains.FindAll((obj) => obj.trait_on_off.curValue.ToString() == "on").Count;
                         #endregion
                         break;
                     case ShowFunction.FloorHeating:
                         #region 鍦扮儹
                         functionCount = DB_ResidenceData.functionList.floorHeatings.Count;
-                        functionOnCount = DB_ResidenceData.functionList.floorHeatings.FindAll((obj) => obj.trait_on_off.value.ToString() == "on").Count;
+                        functionOnCount = DB_ResidenceData.functionList.floorHeatings.FindAll((obj) => obj.trait_on_off.curValue.ToString() == "on").Count;
                         #endregion
                         break;
                     case ShowFunction.DoorLock:
@@ -451,7 +451,7 @@
                     case ShowFunction.Electric:
                         #region 鐢靛櫒
                         functionCount = DB_ResidenceData.functionList.electricals.Count;
-                        functionOnCount = DB_ResidenceData.functionList.electricals.FindAll((obj) => obj.trait_on_off.value.ToString() == "on").Count;
+                        functionOnCount = DB_ResidenceData.functionList.electricals.FindAll((obj) => obj.trait_on_off.curValue.ToString() == "on").Count;
                         #endregion
                         break;
                     case ShowFunction.EnergyMonitoring:
@@ -465,7 +465,7 @@
                         break;
                     case ShowFunction.Music:
                         functionCount = Music.A31MusicModel.A31MusicModelList.Count;
-                        functionOnCount = Music.A31MusicModel.A31MusicModelList.FindAll((obj) => obj.trait_on_off.value.ToString() == "on").Count;
+                        functionOnCount = Music.A31MusicModel.A31MusicModelList.FindAll((obj) => obj.trait_on_off.curValue.ToString() == "on").Count;
                         break;
                     case ShowFunction.Panel:
                         break;
@@ -544,7 +544,7 @@
                         #region Light
                         btnName.TextID = StringId.Lights;
                         functionCount = DB_ResidenceData.functionList.lights.Count;
-                        functionOnCount = DB_ResidenceData.functionList.lights.FindAll((obj) => obj.trait_on_off.value.ToString() == "on").Count;
+                        functionOnCount = DB_ResidenceData.functionList.lights.FindAll((obj) => obj.trait_on_off.curValue.ToString() == "on").Count;
                         Button btnLightPower = new Button()
                         {
                             X = Application.GetRealWidth(120),
@@ -570,7 +570,7 @@
                         #region AC
                         btnName.TextID = StringId.AC;
                         functionCount = DB_ResidenceData.functionList.aCs.Count;
-                        functionOnCount = DB_ResidenceData.functionList.aCs.FindAll((obj) => obj.trait_on_off.value.ToString() == "on").Count;
+                        functionOnCount = DB_ResidenceData.functionList.aCs.FindAll((obj) => obj.trait_on_off.curValue.ToString() == "on").Count;
                         Button btnAcPower = new Button()
                         {
                             X = Application.GetRealWidth(120),
@@ -594,7 +594,7 @@
                         #region Curtain
                         btnName.TextID = StringId.Curtain;
                         functionCount = DB_ResidenceData.functionList.curtains.Count;
-                        functionOnCount = DB_ResidenceData.functionList.curtains.FindAll((obj) => obj.trait_on_off.value.ToString() == "on").Count;
+                        functionOnCount = DB_ResidenceData.functionList.curtains.FindAll((obj) => obj.trait_on_off.curValue.ToString() == "on").Count;
                         Button btnClose;
                         btnClose = new Button()
                         {
@@ -630,7 +630,7 @@
                         #region 鍦扮儹
                         btnName.TextID = StringId.FloorHeating;
                         functionCount = DB_ResidenceData.functionList.floorHeatings.Count;
-                        functionOnCount = DB_ResidenceData.functionList.floorHeatings.FindAll((obj) => obj.trait_on_off.value.ToString() == "on").Count;
+                        functionOnCount = DB_ResidenceData.functionList.floorHeatings.FindAll((obj) => obj.trait_on_off.curValue.ToString() == "on").Count;
                         Button btnFhPower = new Button()
                         {
                             X = Application.GetRealWidth(120),
@@ -657,7 +657,7 @@
                         #region 鐢靛櫒
                         btnName.TextID = StringId.Electric;
                         functionCount = DB_ResidenceData.functionList.electricals.Count;
-                        functionOnCount = DB_ResidenceData.functionList.electricals.FindAll((obj) => obj.trait_on_off.value.ToString() == "on").Count;
+                        functionOnCount = DB_ResidenceData.functionList.electricals.FindAll((obj) => obj.trait_on_off.curValue.ToString() == "on").Count;
                         Button btnElectricPower = new Button()
                         {
                             X = Application.GetRealWidth(120),
@@ -698,7 +698,7 @@
                     case ShowFunction.Music:
                         btnName.TextID = StringId.Music;
                         functionCount = Music.A31MusicModel.A31MusicModelList.Count;
-                        functionOnCount = Music.A31MusicModel.A31MusicModelList.FindAll((obj) => obj.trait_on_off.value.ToString() == "on").Count;
+                        functionOnCount = Music.A31MusicModel.A31MusicModelList.FindAll((obj) => obj.trait_on_off.curValue.ToString() == "on").Count;
                         btnFunctionViewBg.MouseUpEventHandler = (sender, e) =>
                         {
                             var musicMain = new Music.MusicMain();
diff --git a/HDL_ON/UI/UI2/2-Classification/ClassificationPageBLL.cs b/HDL_ON/UI/UI2/2-Classification/ClassificationPageBLL.cs
index 34d37c8..3dbc699 100644
--- a/HDL_ON/UI/UI2/2-Classification/ClassificationPageBLL.cs
+++ b/HDL_ON/UI/UI2/2-Classification/ClassificationPageBLL.cs
@@ -68,21 +68,21 @@
                                                                 switch (functionType)
                                                                 {
                                                                     case FunctionType.FloorHeating:
-                                                                        btnText = DB_ResidenceData.functionList.floorHeatings.FindAll((obj) => obj.trait_on_off.value.ToString() == "on").Count.ToString();
+                                                                        btnText = DB_ResidenceData.functionList.floorHeatings.FindAll((obj) => obj.trait_on_off.curValue.ToString() == "on").Count.ToString();
                                                                         break;
                                                                     case FunctionType.AC:
-                                                                        btnText = DB_ResidenceData.functionList.aCs.FindAll((obj) => obj.trait_on_off.value.ToString() == "on").Count.ToString();
+                                                                        btnText = DB_ResidenceData.functionList.aCs.FindAll((obj) => obj.trait_on_off.curValue.ToString() == "on").Count.ToString();
                                                                         break;
                                                                 }
                                                                 break;
                                                             case FunctionCategory.Curtain:
-                                                                btnText = DB_ResidenceData.functionList.curtains.FindAll((obj) => obj.trait_on_off.value.ToString() == "on").Count.ToString();
+                                                                btnText = DB_ResidenceData.functionList.curtains.FindAll((obj) => obj.trait_on_off.curValue.ToString() == "on").Count.ToString();
                                                                 break;
                                                             case FunctionCategory.Light:
-                                                                btnText = DB_ResidenceData.functionList.lights.FindAll((obj) => obj.trait_on_off.value.ToString() == "on").Count.ToString();
+                                                                btnText = DB_ResidenceData.functionList.lights.FindAll((obj) => obj.trait_on_off.curValue.ToString() == "on").Count.ToString();
                                                                 break;
                                                             case FunctionCategory.Electrical:
-                                                                btnText = DB_ResidenceData.functionList.electricals.FindAll((obj) => obj.trait_on_off.value.ToString() == "on").Count.ToString();
+                                                                btnText = DB_ResidenceData.functionList.electricals.FindAll((obj) => obj.trait_on_off.curValue.ToString() == "on").Count.ToString();
                                                                 break;
                                                         }
                                                         btn.Text = btnText;
@@ -96,21 +96,21 @@
                                                                 switch (functionType)
                                                                 {
                                                                     case FunctionType.FloorHeating:
-                                                                        openCount = DB_ResidenceData.functionList.floorHeatings.FindAll((obj) => obj.trait_on_off.value.ToString() == "on").Count;
+                                                                        openCount = DB_ResidenceData.functionList.floorHeatings.FindAll((obj) => obj.trait_on_off.curValue.ToString() == "on").Count;
                                                                         break;
                                                                     case FunctionType.AC:
-                                                                        openCount = DB_ResidenceData.functionList.aCs.FindAll((obj) => obj.trait_on_off.value.ToString() == "on").Count;
+                                                                        openCount = DB_ResidenceData.functionList.aCs.FindAll((obj) => obj.trait_on_off.curValue.ToString() == "on").Count;
                                                                         break;
                                                                 }
                                                                 break;
                                                             case FunctionCategory.Curtain:
-                                                                openCount = DB_ResidenceData.functionList.curtains.FindAll((obj) => obj.trait_on_off.value.ToString() == "on").Count;
+                                                                openCount = DB_ResidenceData.functionList.curtains.FindAll((obj) => obj.trait_on_off.curValue.ToString() == "on").Count;
                                                                 break;
                                                             case FunctionCategory.Light:
-                                                                openCount = DB_ResidenceData.functionList.lights.FindAll((obj) => obj.trait_on_off.value.ToString() == "on").Count;
+                                                                openCount = DB_ResidenceData.functionList.lights.FindAll((obj) => obj.trait_on_off.curValue.ToString() == "on").Count;
                                                                 break;
                                                             case FunctionCategory.Electrical:
-                                                                openCount = DB_ResidenceData.functionList.electricals.FindAll((obj) => obj.trait_on_off.value.ToString() == "on").Count;
+                                                                openCount = DB_ResidenceData.functionList.electricals.FindAll((obj) => obj.trait_on_off.curValue.ToString() == "on").Count;
                                                                 break;
                                                         }
                                                         btn.IsSelected = openCount != 0;
@@ -149,7 +149,7 @@
                             var btn = view1.GetChildren(j) as Button;
                             if (btn.Tag != null && btn.Tag.ToString() == "AllClose")
                             {
-                                if (function.trait_on_off.value.ToString() == "on")
+                                if (function.trait_on_off.curValue.ToString() == "on")
                                 {
                                     btn.Visible = true;
                                 }
@@ -166,7 +166,7 @@
                                         {
                                             continue;
                                         }
-                                        var ssd = r.GetRoomFunctions(false).FindAll((obj) => obj.trait_on_off.value.ToString() == "on" && obj.functionCategory != FunctionCategory.Scene);
+                                        var ssd = r.GetRoomFunctions(false).FindAll((obj) => obj.trait_on_off.curValue.ToString() == "on" && obj.functionCategory != FunctionCategory.Scene);
                                         var sss = ssd.Count;
                                         if (sss == 0)
                                         {
@@ -201,10 +201,10 @@
                                     continue;
                                 }
 
-                                f.trait_on_off.value = "off";
+                                f.trait_on_off.curValue = "off";
                                 Dictionary<string, string> d = new Dictionary<string, string>();
-                                d.Add("on_off", f.trait_on_off.value.ToString());
-                                Control.ins.SendWriteCommand(f, d);
+                                d.Add("on_off", f.trait_on_off.curValue.ToString());
+                                Control.Ins.SendWriteCommand(f, d);
                             }
 
                             foreach (var m in Music.A31MusicModel.A31MusicModelList)
@@ -227,7 +227,7 @@
                     {
                         continue;
                     }
-                    if (f.trait_on_off.value.ToString() == "on")
+                    if (f.trait_on_off.curValue.ToString() == "on")
                     {
                         btn.Visible = true;
                         break;
@@ -316,11 +316,11 @@
                     case ShowFunction.AC:
                         foreach(var f in DB_ResidenceData.functionList.aCs)
                         {
-                            f.trait_on_off.value = onoff;
+                            f.trait_on_off.curValue = onoff;
                             //Control.Send(CommandType_A.write, f);
                             Dictionary<string, string> d = new Dictionary<string, string>();
-                            d.Add("on_off", f.trait_on_off.value.ToString());
-                            Control.ins.SendWriteCommand(f, d);
+                            d.Add("on_off", f.trait_on_off.curValue.ToString());
+                            Control.Ins.SendWriteCommand(f, d);
                         }
                         break;
                     case ShowFunction.Curtain:
@@ -336,11 +336,11 @@
                     case ShowFunction.Light:
                         foreach (var f in DB_ResidenceData.functionList.lights)
                         {
-                            f.trait_on_off.value = onoff;
+                            f.trait_on_off.curValue = onoff;
                             //Control.Send(CommandType_A.write, f);
                             Dictionary<string, string> d = new Dictionary<string, string>();
-                            d.Add("on_off", f.trait_on_off.value.ToString());
-                            Control.ins.SendWriteCommand(f, d);
+                            d.Add("on_off", f.trait_on_off.curValue.ToString());
+                            Control.Ins.SendWriteCommand(f, d);
                         }
                         break;
                 }
@@ -358,11 +358,11 @@
             {
                 foreach (var f in DB_ResidenceData.functionList.curtains)
                 {
-                    f.trait_on_off.value = "on";
+                    f.trait_on_off.curValue = "on";
                     f.percent = 100;
                     Dictionary<string, string> d = new Dictionary<string, string>();
-                    d.Add("on_off", f.trait_on_off.value.ToString());
-                    Control.ins.SendWriteCommand(f, d);
+                    d.Add("on_off", f.trait_on_off.curValue.ToString());
+                    Control.Ins.SendWriteCommand(f, d);
                 }
             };
 
@@ -370,11 +370,11 @@
             {
                 foreach (var f in DB_ResidenceData.functionList.curtains)
                 {
-                    f.trait_on_off.value =  "off";
+                    f.trait_on_off.curValue =  "off";
                     f.percent = 0;
                     Dictionary<string, string> d = new Dictionary<string, string>();
-                    d.Add("on_off", f.trait_on_off.value.ToString());
-                    Control.ins.SendWriteCommand(f, d);
+                    d.Add("on_off", f.trait_on_off.curValue.ToString());
+                    Control.Ins.SendWriteCommand(f, d);
                 }
             };
 
diff --git a/HDL_ON/UI/UI2/2-Classification/FunctionControlZone.cs b/HDL_ON/UI/UI2/2-Classification/FunctionControlZone.cs
index 97d9500..c1fb7ac 100644
--- a/HDL_ON/UI/UI2/2-Classification/FunctionControlZone.cs
+++ b/HDL_ON/UI/UI2/2-Classification/FunctionControlZone.cs
@@ -120,7 +120,7 @@
                         Height = Application.GetMinRealAverage(32),
                         UnSelectedImagePath = "Public/PowerClose.png",
                         SelectedImagePath = "Public/PowerOpen.png",
-                        IsSelected = function.trait_on_off.value.ToString() == "on",
+                        IsSelected = function.trait_on_off.curValue.ToString() == "on",
                         Tag = function.sid + "_Switch",
                     };
                     bodyDiv.AddChidren(btnSwitch);
@@ -135,7 +135,7 @@
                         Height = Application.GetMinRealAverage(32),
                         UnSelectedImagePath = "Public/PowerClose.png",
                         SelectedImagePath = "Public/PowerOpen.png",
-                        IsSelected = function.trait_on_off.value.ToString() == "on",
+                        IsSelected = function.trait_on_off.curValue.ToString() == "on",
                         Tag = function.sid + "_Switch",
                     };
                     bodyDiv.AddChidren(btnSwitch);
@@ -160,7 +160,7 @@
                         break;
                     case FunctionCategory.Light:
                         btnIcon.UnSelectedImagePath = "FunctionIcon/Light/LightThinIcon.png";
-                        btnSwitch.IsSelected = function.trait_on_off.value.ToString() == "on";
+                        btnSwitch.IsSelected = function.trait_on_off.curValue.ToString() == "on";
                         LoadLightControl();
                         break;
                     case FunctionCategory.SwitchDevice:
@@ -170,7 +170,7 @@
                                 btnIcon.UnSelectedImagePath = "FunctionIcon/Socket/SocketThinIcon.png";
                                 break;
                         }
-                        btnSwitch.IsSelected = function.trait_on_off.value.ToString() == "on";
+                        btnSwitch.IsSelected = function.trait_on_off.curValue.ToString() == "on";
                         break;
                     case FunctionCategory.Electrical:
                         switch (function.functionType)
@@ -182,7 +182,7 @@
                                 btnIcon.UnSelectedImagePath = "FunctionIcon/Electrical/TVThinIcon.png";
                                 break;
                         }
-                        btnSwitch.IsSelected = function.trait_on_off.value.ToString() == "on";
+                        btnSwitch.IsSelected = function.trait_on_off.curValue.ToString() == "on";
                         break;
                 }
                 #endregion
@@ -280,7 +280,7 @@
                         SeekBarViewHeight = Application.GetRealHeight(8),
                         ThumbImagePath = "Public/ThumbImage.png",
                         ThumbImageHeight = Application.GetRealHeight(54),
-                        ProgressBarColor = function.trait_on_off.value.ToString() == "on" ? CSS_Color.AuxiliaryColor1 : CSS_Color.PromptingColor2,
+                        ProgressBarColor = function.trait_on_off.curValue.ToString() == "on" ? CSS_Color.AuxiliaryColor1 : CSS_Color.PromptingColor2,
                         ProgressTextColor = CSS_Color.FirstLevelTitleColor,
                         ProgressTextSize = CSS_FontSize.PromptFontSize_SecondaryLevel,
                         MaxValue = 100,
@@ -415,7 +415,7 @@
                 TextColor = 0x00000000,
                 TextSize = CSS_FontSize.PromptFontSize_SecondaryLevel,
                 Tag = function.functionType + "_laststates_" + function.sid,
-                IsSelected = function.trait_on_off.value.ToString() == "on"
+                IsSelected = function.trait_on_off.curValue.ToString() == "on"
             };
             bodyDiv.AddChidren(btnLastStates);
         }
diff --git a/HDL_ON/UI/UI2/2-Classification/FunctionControlZoneBLL.cs b/HDL_ON/UI/UI2/2-Classification/FunctionControlZoneBLL.cs
index 5795611..c05e024 100644
--- a/HDL_ON/UI/UI2/2-Classification/FunctionControlZoneBLL.cs
+++ b/HDL_ON/UI/UI2/2-Classification/FunctionControlZoneBLL.cs
@@ -28,7 +28,7 @@
                                 {
                                     if (btn.Tag.ToString() == upfunc.sid + "_Switch")// + "_DimmerBar")
                                     {
-                                        btn.IsSelected = upfunc.trait_on_off.value.ToString() == "on";
+                                        btn.IsSelected = upfunc.trait_on_off.curValue.ToString() == "on";
                                     }
                                 }
                             }
@@ -75,7 +75,7 @@
         void LoadEvent_ControlScene()
         {
             EventHandler<MouseEventArgs> upEvent = (sender, e) => {
-                Control.ins.ControlScene(function as Scene);
+                Control.Ins.ControlScene(function as Scene);
                 string msg = function.name + Language.StringByID(StringId.AlreadyOpened);
                 new PublicAssmebly().TipMsgAutoClose(msg, false);
             };
@@ -94,11 +94,11 @@
                 btnSwitch.IsSelected = !btnSwitch.IsSelected;
                 new System.Threading.Thread(() =>
                 {
-                    function.trait_on_off.value = btnSwitch.IsSelected ? "on" : "off";
+                    function.trait_on_off.curValue = btnSwitch.IsSelected ? "on" : "off";
                     //Control.Send(CommandType_A.write, function);
                     System.Collections.Generic.Dictionary<string, string> d = new System.Collections.Generic.Dictionary<string, string>();
-                    d.Add("on_off", function.trait_on_off.value.ToString());
-                    Control.ins.SendWriteCommand(function, d);
+                    d.Add("on_off", function.trait_on_off.curValue.ToString());
+                    Control.Ins.SendWriteCommand(function, d);
                 })
                 { IsBackground = true }.Start();
             };
@@ -118,11 +118,11 @@
                     if (function.functionCategory == FunctionCategory.Light)
                     {
                         var light = function as Light;
-                        light.trait_on_off.value = btnSwitch.IsSelected ? "on" : "off";
+                        light.trait_on_off.curValue = btnSwitch.IsSelected ? "on" : "off";
                         //Control.Send(CommandType_A.write, function);
                         System.Collections.Generic.Dictionary<string, string> d = new System.Collections.Generic.Dictionary<string, string>();
-                        d.Add("on_off", function.trait_on_off.value.ToString());
-                        Control.ins.SendWriteCommand(function, d);
+                        d.Add("on_off", function.trait_on_off.curValue.ToString());
+                        Control.Ins.SendWriteCommand(function, d);
                     }
                 })
                 { IsBackground = true }.Start();
@@ -147,18 +147,18 @@
                     light.brightness = dimmerControlBar.Progress;
                     System.Collections.Generic.Dictionary<string, string> d = new System.Collections.Generic.Dictionary<string, string>();
                     d.Add("brightness", light.brightness.ToString());
-                    Control.ins.SendWriteCommand(light, d);
+                    Control.Ins.SendWriteCommand(light, d);
                 };
                 dimmerControlBar.OnProgressChangedEvent = (sender, e) => {
                     light.brightness = e;
-                    light.trait_on_off.value = e > 0 ? "on" : "off";
+                    light.trait_on_off.curValue = e > 0 ? "on" : "off";
 
                     if (e == 0 || e == 100)
                     {
                         //Control.Send(CommandType_A.write, light);
                         System.Collections.Generic.Dictionary<string, string> d = new System.Collections.Generic.Dictionary<string, string>();
                         d.Add("brightness", light.brightness.ToString());
-                        Control.ins.SendWriteCommand(light, d);
+                        Control.Ins.SendWriteCommand(light, d);
                     }
                     else
                     {
@@ -171,7 +171,7 @@
                             {
                                 System.Collections.Generic.Dictionary<string, string> d = new System.Collections.Generic.Dictionary<string, string>();
                                 d.Add("brightness", light.brightness.ToString());
-                                Control.ins.SendWriteCommand(light, d);
+                                Control.Ins.SendWriteCommand(light, d);
                             })
                             { IsBackground = true }.Start();
                         }
@@ -197,11 +197,11 @@
                 btnClose.IsSelected = true;
                 btnStop.IsSelected = false;
                 btnOpen.IsSelected = false;
-                curtain.trait_on_off.value = "off";
+                curtain.trait_on_off.curValue = "off";
                 curtain.percent = 0;
                 System.Collections.Generic.Dictionary<string, string> d = new System.Collections.Generic.Dictionary<string, string>();
-                d.Add("on_off", curtain.trait_on_off.value.ToString());
-                Control.ins.SendWriteCommand(curtain, d);
+                d.Add("on_off", curtain.trait_on_off.curValue.ToString());
+                Control.Ins.SendWriteCommand(curtain, d);
             };
 
             btnStop.MouseDownEventHandler = (sender, e) =>
@@ -215,11 +215,11 @@
                 btnOpen.IsSelected = true;
                 btnClose.IsSelected = false;
                 btnStop.IsSelected = false;
-                curtain.trait_on_off.value = "stop";
+                curtain.trait_on_off.curValue = "stop";
                 //curtain.percent = 0;
                 System.Collections.Generic.Dictionary<string, string> d = new System.Collections.Generic.Dictionary<string, string>();
-                d.Add("on_off", curtain.trait_on_off.value.ToString());
-                Control.ins.SendWriteCommand(curtain, d);
+                d.Add("on_off", curtain.trait_on_off.curValue.ToString());
+                Control.Ins.SendWriteCommand(curtain, d);
             };
 
             btnOpen.MouseUpEventHandler = (sender, e) =>
@@ -227,11 +227,11 @@
                 btnOpen.IsSelected = true;
                 btnClose.IsSelected = false;
                 btnStop.IsSelected = false;
-                curtain.trait_on_off.value = "on";
+                curtain.trait_on_off.curValue = "on";
                 curtain.percent = 100;
                 System.Collections.Generic.Dictionary<string, string> d = new System.Collections.Generic.Dictionary<string, string>();
-                d.Add("on_off", curtain.trait_on_off.value.ToString());
-                Control.ins.SendWriteCommand(curtain, d);
+                d.Add("on_off", curtain.trait_on_off.curValue.ToString());
+                Control.Ins.SendWriteCommand(curtain, d);
             };
         }
         #endregion
diff --git a/HDL_ON/UI/UI2/2-Classification/RoomPage.cs b/HDL_ON/UI/UI2/2-Classification/RoomPage.cs
index 411c417..f3f4c36 100644
--- a/HDL_ON/UI/UI2/2-Classification/RoomPage.cs
+++ b/HDL_ON/UI/UI2/2-Classification/RoomPage.cs
@@ -22,10 +22,10 @@
         #region
         static Room room;
         Action skipEditPageAction;
-        Action<Room> ReloadRoomName;
+        Action ReloadRoomName;
         #endregion
 
-        public RoomPage(Room r,Action<Room> rrn)
+        public RoomPage(Room r,Action rrn)
         {
             bodyView = this;
             room = r;
@@ -48,7 +48,7 @@
         {
             bodyView.BackgroundColor = CSS_Color.BackgroundColor;
 
-            new TopViewDiv(bodyView,room.name).LoadTopView(skipEditPageAction);
+            new TopViewDiv(bodyView,room.name).LoadTopView_RoomTop(ReloadRoomName, skipEditPageAction);
 
             functionListView = new VerticalScrolViewLayout()
             {
diff --git a/HDL_ON/UI/UI2/2-Classification/RoomPageBLL.cs b/HDL_ON/UI/UI2/2-Classification/RoomPageBLL.cs
index c459cdf..c807652 100644
--- a/HDL_ON/UI/UI2/2-Classification/RoomPageBLL.cs
+++ b/HDL_ON/UI/UI2/2-Classification/RoomPageBLL.cs
@@ -32,7 +32,7 @@
             {
                 room.SaveRoomData();
                 ReLoadPage();
-                ReloadRoomName(room);
+                ReloadRoomName();
             };
             var skipPage = new RoomEditPage(room, StringId.EditRoomInfo, editBackAction);
             MainPage.BasePageView.AddChidren(skipPage);
diff --git a/HDL_ON/UI/UI2/3-Intelligence/Scene/SceneEditPage.cs b/HDL_ON/UI/UI2/3-Intelligence/Scene/SceneEditPage.cs
index 1693fc8..8cadc49 100644
--- a/HDL_ON/UI/UI2/3-Intelligence/Scene/SceneEditPage.cs
+++ b/HDL_ON/UI/UI2/3-Intelligence/Scene/SceneEditPage.cs
@@ -504,29 +504,29 @@
         string GetFunctionScnenInfo(Function sceneFunction)
         {
             string sceneFunctionInfo = Language.StringByID(StringId.Close);
-            if (sceneFunction.trait_on_off.value.ToString() == "off")
+            if (sceneFunction.trait_on_off.curValue.ToString() == "off")
                 return sceneFunctionInfo;
             sceneFunctionInfo = "";
-            Trait perTrait;
+            FunctionAttributes perTrait;
 
             switch (sceneFunction.functionType)
             {
                 case FunctionType.AC:
-                    sceneFunctionInfo += sceneFunction.function.Find((obj) => obj.name == "mode").GetCurValueText();
-                    sceneFunctionInfo += " " + sceneFunction.function.Find((obj) => obj.name == "set_temperature").value.ToString() +
-                         sceneFunction.function.Find((obj) => obj.name == "set_temperature").uintString;
-                    sceneFunctionInfo += sceneFunction.function.Find((obj) => obj.name == "fan").GetCurValueText();
+                    sceneFunctionInfo += sceneFunction.function.Find((obj) => obj.key == "mode").GetCurValueText();
+                    sceneFunctionInfo += " " + sceneFunction.function.Find((obj) => obj.key == "set_temperature").curValue.ToString() +
+                         sceneFunction.function.Find((obj) => obj.key == "set_temperature").uintString;
+                    sceneFunctionInfo += sceneFunction.function.Find((obj) => obj.key == "fan").GetCurValueText();
                     break;
                 case FunctionType.FloorHeating:
-                    sceneFunctionInfo += sceneFunction.function.Find((obj) => obj.name == "mode").GetCurValueText();
-                    sceneFunctionInfo += " " + sceneFunction.function.Find((obj) => obj.name == "set_temperature").value.ToString() +
-                         sceneFunction.function.Find((obj) => obj.name == "set_temperature").uintString;
+                    sceneFunctionInfo += sceneFunction.function.Find((obj) => obj.key == "mode").GetCurValueText();
+                    sceneFunctionInfo += " " + sceneFunction.function.Find((obj) => obj.key == "set_temperature").curValue.ToString() +
+                         sceneFunction.function.Find((obj) => obj.key == "set_temperature").uintString;
                     break;
                 case FunctionType.Dimmer:
-                    perTrait = sceneFunction.function.Find((obj) => obj.name == "brightness");
+                    perTrait = sceneFunction.function.Find((obj) => obj.key == "brightness");
                     if (perTrait != null)
                     {
-                        sceneFunctionInfo += Language.StringByID(StringId.Open) + " " + sceneFunction.function.Find((obj) => obj.name == "brightness").value.ToString() + "%";
+                        sceneFunctionInfo += Language.StringByID(StringId.Open) + " " + sceneFunction.function.Find((obj) => obj.key == "brightness").curValue.ToString() + "%";
                     }
                     else
                     {
@@ -537,10 +537,10 @@
                     sceneFunctionInfo += Language.StringByID(StringId.Open);
                     break;
                 case FunctionType.RGB:
-                    perTrait = sceneFunction.function.Find((obj) => obj.name == "percent");
+                    perTrait = sceneFunction.function.Find((obj) => obj.key == "percent");
                     if (perTrait != null)
                     {
-                        sceneFunctionInfo += Language.StringByID(StringId.Open) + " " + sceneFunction.function.Find((obj) => obj.name == "brightness").value.ToString() + "%";
+                        sceneFunctionInfo += Language.StringByID(StringId.Open) + " " + sceneFunction.function.Find((obj) => obj.key == "brightness").curValue.ToString() + "%";
                     }
                     else
                     {
@@ -551,10 +551,10 @@
                     sceneFunctionInfo += Language.StringByID(StringId.Open);
                     break;
                 case FunctionType.MotorCurtain:
-                    perTrait = sceneFunction.function.Find((obj) => obj.name == "percent");
+                    perTrait = sceneFunction.function.Find((obj) => obj.key == "percent");
                     if (perTrait != null)
                     {
-                        sceneFunctionInfo += Language.StringByID(StringId.Open) + " " + sceneFunction.function.Find((obj) => obj.name == "percent").value.ToString() + "%";
+                        sceneFunctionInfo += Language.StringByID(StringId.Open) + " " + sceneFunction.function.Find((obj) => obj.key == "percent").curValue.ToString() + "%";
                     }
                     else
                     {
diff --git a/HDL_ON/UI/UI2/3-Intelligence/Scene/SetSceneFunctionInfoPage.cs b/HDL_ON/UI/UI2/3-Intelligence/Scene/SetSceneFunctionInfoPage.cs
index 73186cb..4504b63 100644
--- a/HDL_ON/UI/UI2/3-Intelligence/Scene/SetSceneFunctionInfoPage.cs
+++ b/HDL_ON/UI/UI2/3-Intelligence/Scene/SetSceneFunctionInfoPage.cs
@@ -44,27 +44,27 @@
             switch (function.functionType)
             {
                 case FunctionType.AC:
-                    LoadFunctionRow(function.function.Find((obj) => obj.name == "set_temperature"));
-                    LoadFunctionRow(function.function.Find((obj) => obj.name == "mode"));
-                    LoadFunctionRow(function.function.Find((obj) => obj.name == "fan"));
+                    LoadFunctionRow(function.function.Find((obj) => obj.key == "set_temperature"));
+                    LoadFunctionRow(function.function.Find((obj) => obj.key == "mode"));
+                    LoadFunctionRow(function.function.Find((obj) => obj.key == "fan"));
                     break;
                 case FunctionType.FloorHeating:
-                    LoadFunctionRow(function.function.Find((obj) => obj.name == "set_temperature"));
-                    LoadFunctionRow(function.function.Find((obj) => obj.name == "mode"));
+                    LoadFunctionRow(function.function.Find((obj) => obj.key == "set_temperature"));
+                    LoadFunctionRow(function.function.Find((obj) => obj.key == "mode"));
                     break;
                 case FunctionType.Curtain:
                     //鏃犳搷浣�
                     break;
                 case FunctionType.MotorCurtain:
                 case FunctionType.RollingShutter:
-                    LoadFunctionRow(function.function.Find((obj) => obj.name == "percent"));
+                    LoadFunctionRow(function.function.Find((obj) => obj.key == "percent"));
                     break;
                 case FunctionType.Relay:
                     //鏃犳搷浣�
                     break;
                 case FunctionType.Dimmer:
                 case FunctionType.RGB:
-                    LoadFunctionRow(function.function.Find((obj) => obj.name == "brightness"));
+                    LoadFunctionRow(function.function.Find((obj) => obj.key == "brightness"));
                     break;
             }
 
@@ -116,7 +116,7 @@
         /// <summary>
         /// 鍔犺浇鍔熻兘Row
         /// </summary>
-        void LoadFunctionRow(Trait trait)
+        void LoadFunctionRow(FunctionAttributes trait)
         {
             if (trait == null)
                 return;
@@ -127,7 +127,7 @@
                 BackgroundColor = CSS_Color.MainBackgroundColor,
             };
             contentView.AddChidren(row);
-            if (trait.name != "on_off")
+            if (trait.key != "on_off")
             {
                 row.AddChidren(new Button() { X = Application.GetRealWidth(16), Height = Application.GetRealHeight(1), Width = Application.GetRealWidth(343), BackgroundColor = CSS_Color.DividingLineColor });
             }
@@ -162,7 +162,7 @@
             row.AddChidren(btnFunctionName);
             btnFunctionName.MouseUpEventHandler = (sender, e) =>
             {
-                switch (trait.name)
+                switch (trait.key)
                 {
                     case "on_off":
                         LoadEditDialog_OnOff(trait, btnFunctionText);
@@ -282,7 +282,7 @@
         /// </summary>
         /// <param name="function"></param>
         /// <param name="btn"></param>
-        void LoadEditDialog_OnOff(Trait trait, Button btn)
+        void LoadEditDialog_OnOff(FunctionAttributes trait, Button btn)
         {
             Dialog dialog = new Dialog();
 
@@ -320,7 +320,7 @@
                 SelectedTextColor = CSS_Color.MainColor,
                 TextSize = CSS_FontSize.SubheadingFontSize,
                 TextID = StringId.On,
-                IsSelected = function.trait_on_off.value.ToString() == "on"
+                IsSelected = function.trait_on_off.curValue.ToString() == "on"
             };
             optionView.AddChidren(btnOn);
 
@@ -334,7 +334,7 @@
                 SelectedTextColor = CSS_Color.MainColor,
                 TextSize = CSS_FontSize.SubheadingFontSize,
                 TextID = StringId.OFF,
-                IsSelected = function.trait_on_off.value.ToString() == "off"
+                IsSelected = function.trait_on_off.curValue.ToString() == "off"
             };
             optionView.AddChidren(btnOff);
 
@@ -363,12 +363,12 @@
             };
             btnOn.MouseUpEventHandler = (sender, e) => {
                 dialog.Close();
-                trait.value = "on";
+                trait.curValue = "on";
                 btn.Text = trait.GetCurValueText() + trait.uintString;
             };
             btnOff.MouseUpEventHandler = (sender,e) =>{
                 dialog.Close();
-                trait.value = "off";
+                trait.curValue = "off";
                 btn.Text= trait.GetCurValueText() + trait.uintString;
             };
 
@@ -379,7 +379,7 @@
         /// </summary>
         /// <param name="function"></param>
         /// <param name="btn"></param>
-        void LoadEditDialog_Temp(Trait trait, Button btn)
+        void LoadEditDialog_Temp(FunctionAttributes trait, Button btn)
         {
             List<string> pickerItems = new List<string>();
             if(trait == null)
@@ -471,8 +471,8 @@
             }
             uIPickerView.setNPicker(pickerItems, null, null);
             optionBaseView.AddChidren(uIPickerView);
-            uIPickerView.setCurrentItems(pickerItems.IndexOf(trait.value.ToString()), 4, 5);
-            string selectItem = trait.value.ToString() + trait.uintString;
+            uIPickerView.setCurrentItems(pickerItems.IndexOf(trait.curValue.ToString()), 4, 5);
+            string selectItem = trait.curValue.ToString() + trait.uintString;
 
             dialog.Show();
 
@@ -489,7 +489,7 @@
             btnConfrim.MouseUpEventHandler = (sender, e) => {
                 dialog.Close();
                 btn.Text = selectItem;
-                trait.value = selectItem.Replace(trait.uintString,"");
+                trait.curValue = selectItem.Replace(trait.uintString,"");
             };
 
         }
@@ -500,7 +500,7 @@
         /// </summary>
         /// <param name="function"></param>
         /// <param name="btn"></param>
-        void LoadEditDialog_Percent(Trait trait, Button btn)
+        void LoadEditDialog_Percent(FunctionAttributes trait, Button btn)
         {
             if (trait == null)
             {
@@ -598,7 +598,7 @@
                 ProgressTextColor = CSS_Color.FirstLevelTitleColor,
                 ProgressTextSize = CSS_FontSize.PromptFontSize_FirstLevel,
                 MaxValue = 100,
-                Progress = trait.value.ToString().Replace("{}", "") == "" ? 0 : Convert.ToInt32( trait.value),
+                Progress = trait.curValue.ToString().Replace("{}", "") == "" ? 0 : Convert.ToInt32( trait.curValue),
                 SeekBarPadding = Application.GetRealWidth(20),
             };
             optionBaseView.AddChidren(controlBar);
@@ -631,8 +631,8 @@
             };
             btnConfrim.MouseUpEventHandler = (sender, e) => {
                 dialog.Close();
-                trait.value = controlBar.Progress;
-                btn.Text = trait.value + trait.uintString;
+                trait.curValue = controlBar.Progress;
+                btn.Text = trait.curValue + trait.uintString;
             };
         }
 
@@ -641,7 +641,7 @@
         /// <summary>
         /// 鍔犺浇鍔熻兘灞炴�ф暟鎹�夋嫨寮圭獥
         /// </summary>
-        void LoadEditDialog_FunctionPar(Trait trait, Button btn)
+        void LoadEditDialog_FunctionPar(FunctionAttributes trait, Button btn)
         {
             Button lastButton = new Button();
             var lastData = "";
@@ -656,10 +656,10 @@
 
             var optionBaseView = new FrameLayout()
             {
-                Y = Application.GetRealHeight(579 - 50 * trait.value_key.Count),
+                Y = Application.GetRealHeight(579 - 50 * trait.value.Count),
                 Gravity = Gravity.CenterHorizontal,
                 Width = Application.GetRealWidth(343),
-                Height = Application.GetRealHeight(50 * trait.value_key.Count + 50),
+                Height = Application.GetRealHeight(50 * trait.value.Count + 50),
                 AnimateSpeed = 0.3f,
                 Animate = Animate.DownToUp,
                 BackgroundColor = CSS_Color.MainBackgroundColor,
@@ -710,7 +710,7 @@
             };
             topView.AddChidren(btnConfrim);
             int hei = 1;
-            foreach (var m in trait.value_key)
+            foreach (var m in trait.value)
             {
                 var row = new FrameLayout()
                 {
@@ -718,7 +718,7 @@
                     Height = Application.GetRealHeight(50),
                 };
                 optionBaseView.AddChidren(row);
-                if (trait.value_key.Count > hei)
+                if (trait.value.Count > hei)
                 {
                     optionBaseView.AddChidren(new Button()
                     {
@@ -742,7 +742,7 @@
 
                 };
                 row.AddChidren(btnChoose);
-                if (trait.value.ToString() == m)
+                if (trait.curValue.ToString() == m)
                 {
                     lastButton = btnChoose;
                     btnChoose.IsSelected = true;
@@ -784,7 +784,7 @@
             };
             btnConfrim.MouseUpEventHandler = (sender, e) => {
                 dialog.Close();
-                trait.value = lastData;
+                trait.curValue = lastData;
                 btn.Text = lastText;
             };
 
diff --git a/HDL_ON/UI/UI2/4-PersonalCenter/AboutOn/AboutOnPage.cs b/HDL_ON/UI/UI2/4-PersonalCenter/AboutOn/AboutOnPage.cs
new file mode 100644
index 0000000..9b068fd
--- /dev/null
+++ b/HDL_ON/UI/UI2/4-PersonalCenter/AboutOn/AboutOnPage.cs
@@ -0,0 +1,332 @@
+锘縰sing System;
+using Shared;
+using HDL_ON.UI.CSS;
+using System.Net;
+using System.Text;
+using HDL_ON.DAL.Server;
+using System.Threading.Tasks;
+
+namespace HDL_ON.UI
+{
+    /// <summary>
+    /// 鍏充簬椤甸潰
+    /// </summary>
+    public class AboutOnPage : FrameLayout
+    {
+        /// <summary>
+        /// 
+        /// </summary>
+        FrameLayout bodyView;
+        /// <summary>
+        /// 鐗堟湰鏇存柊ListCellView
+        /// </summary>
+        ListCellView versionUpdateView;
+
+        /// <summary>
+        /// 鏂扮増鏈殑鐗堟湰鍙凤紝鏌ヨ鍒版柊鐗堟湰鎵嶈祴鍊�
+        /// </summary>
+        string newAppVersion;
+        /// <summary>
+        /// 鏂扮増鏈殑涓嬭浇鍦板潃
+        /// iOS 榛樿涓鸿嫻鏋滃晢搴楀湴鍧�
+        /// Android 浜戠杩斿洖鍦板潃
+        /// </summary>
+        string newAppVersionUrl = "";
+
+        /// <summary>
+        /// 
+        /// </summary>
+        public AboutOnPage()
+        {
+            bodyView = this;
+        }
+
+        /// <summary>
+        /// 
+        /// </summary>
+        public void LoadPage()
+        {
+            new TopViewDiv(bodyView, Language.StringByID(StringId.About)).LoadTopView();
+
+            Button btnOnIcon = new Button()
+            {
+                Gravity = Gravity.CenterHorizontal,
+                Y = Application.GetRealWidth(106),
+                Width = Application.GetRealWidth(58),
+                Height = Application.GetRealWidth(58),
+                UnSelectedImagePath = "OnIcon.png",
+            };
+            bodyView.AddChidren(btnOnIcon);
+
+            Button btnOnTitle = new Button()
+            {
+                //Gravity = Gravity.CenterHorizontal,
+                Y = Application.GetRealWidth(184),
+                Height = Application.GetRealWidth(28),
+                TextAlignment = TextAlignment.Center,
+                Text = "ON+",
+                TextColor = CSS_Color.FirstLevelTitleColor,
+                TextSize = CSS_FontSize.EmphasisFontSize_Secondary,
+                IsBold = true,
+            };
+            bodyView.AddChidren(btnOnTitle);
+
+            Button btnOnVersion = new Button()
+            {
+                Y = btnOnTitle.Bottom,
+                Height = Application.GetRealWidth(25),
+                TextAlignment = TextAlignment.Center,
+                TextColor = CSS_Color.TextualColor,
+                TextSize = CSS_FontSize.PromptFontSize_FirstLevel,
+                Text = Language.StringByID(StringId.VersionNumber) + " " + MainPage.VersionString,
+            };
+            bodyView.AddChidren(btnOnVersion);
+
+
+            var lineView = new FrameLayout()
+            {
+                Y = Application.GetRealHeight(281),
+                Height = Application.GetRealHeight(1),
+                BackgroundColor = CSS_Color.DividingLineColor,
+            };
+            bodyView.AddChidren(lineView);
+
+            #region 鍔熻兘浠嬬粛
+            var functionView = new ListCellView()
+            {
+                Y = lineView.Bottom,
+            };
+            bodyView.AddChidren(functionView);
+            functionView.BtnTilte.TextID = StringId.FunctionIntroduced;
+            Action functionAction = () =>
+            {
+                var mPage = new FunctionIntroductionPage();
+                MainPage.BasePageView.AddChidren(mPage);
+                mPage.LoadPage();
+                MainPage.BasePageView.PageIndex = MainPage.BasePageView.ChildrenCount - 1;
+            };
+            functionView.GoAction = functionAction;
+            #endregion
+
+            #region 鎶曡瘔
+            var complaintsView = new ListCellView()
+            {
+                Y = functionView.Bottom,
+            };
+            bodyView.AddChidren(complaintsView);
+            complaintsView.BtnTilte.TextID = StringId.Complaints;
+            Action complaintsAction = () =>
+            {
+                var mPage = new ComplaintsPage();
+                MainPage.BasePageView.AddChidren(mPage);
+                mPage.LoadPage();
+                MainPage.BasePageView.PageIndex = MainPage.BasePageView.ChildrenCount - 1;
+            };
+            complaintsView.GoAction = complaintsAction;
+            #endregion
+
+            #region 鐗堟湰鏇存柊
+            versionUpdateView = new ListCellView()
+            {
+                Y = complaintsView.Bottom,
+            };
+            bodyView.AddChidren(versionUpdateView);
+            versionUpdateView.BtnTilte.TextID = StringId.VersionUpdate;
+            Action versionUpdateAction = () =>
+            {
+                //OpenUrl();
+
+                TestDDDDD();
+            };
+            versionUpdateView.GoAction = versionUpdateAction;
+            #endregion
+
+            CheckIfNeedUpdateAsync();
+        }
+
+
+        /// <summary>
+        /// 鍒ゆ柇鏄惁闇�瑕佽皟鏁存柊鐗堟湰涓嬭浇鍦板潃
+        /// </summary>
+        void OpenUrl()
+        {
+            if (!string.IsNullOrEmpty(newAppVersion))
+            {
+                HDLUtils.OpenUrl(newAppVersionUrl);
+            }
+            else
+            {
+                Utlis.ShowTip(Language.StringByID(StringId.IsLatestVersion));
+            }
+        }
+
+        /// <summary>
+        /// 妫�娴嬫槸鍚﹂渶瑕佹洿鏂�
+        /// Android绛夋帴鍙e疄鐜�
+        /// </summary>
+        /// <returns></returns>
+        void CheckIfNeedUpdateAsync(bool isTip = false)
+        {
+            new System.Threading.Thread(() =>
+            {
+                newAppVersion = CanUpdateAsync();
+                Application.RunOnMainThread(() =>
+                {
+                    if (!string.IsNullOrEmpty(newAppVersion))
+                    {
+                        //鍙戠幇鏂扮増鏈�
+                        versionUpdateView.BtnSubtitle.TextColor = CSS_Color.MainColor;
+                        versionUpdateView.BtnSubtitle.Text = Language.StringByID(StringId.DiscoverNewVersion) + "(" + newAppVersion + ")";
+                    }
+                    else
+                    {
+                        //宸茬粡鏄渶鏂扮増鏈�
+                        versionUpdateView.BtnSubtitle.TextColor = CSS_Color.PromptingColor1;
+                        versionUpdateView.BtnSubtitle.Text = Language.StringByID(StringId.IsLatestVersion);
+                    }
+                });
+
+            })
+            { IsBackground = true }.Start();
+        }
+
+        /// <summary>
+        /// 妫�鏌ョ増鏈�
+        /// </summary>
+        /// <returns></returns>
+        string CanUpdateAsync()
+        {
+#if __IOS__
+            try
+            {
+                var versionResult = RequestHttpsiOSAppVersionAsync();
+                if (versionResult == null || versionResult.Results == null)
+                {
+                    return "";
+                }
+                var results = Newtonsoft.Json.Linq.JArray.Parse(versionResult.Results.ToString());
+                if (results[0] == null)
+                {
+                    return "";
+                }
+                var newVersion = results[0]["version"]?.ToString();
+                //var updateContent = results[0]["releaseNotes"]?.ToString();
+                if (newVersion.CompareTo(MainPage.VersionString) > 0)
+                {
+                    newAppVersionUrl = Constant.URL_APPSTORE;
+                    return newVersion;
+                }
+                return "";
+            }
+            catch
+            {
+                return "";
+            }
+
+#else
+            try
+            {
+                var versionResult = GetAndroidAppVersion();
+                if (versionResult == null)
+                {
+                    return "";
+                }
+                var newVersion = versionResult.NewVersion;
+                if (newVersion.CompareTo(MainPage.VersionString) > 0)
+                {
+                    newAppVersionUrl = versionResult.NewVersionUrl;
+                    return newVersion;
+                }
+                return "";
+            }
+            catch (Exception ex)
+            {
+                return "";
+            }
+#endif
+        }
+
+
+#if __IOS__
+        /// <summary>
+        /// 鑾峰彇iOS-APP鐗堟湰淇℃伅
+        /// </summary>
+        /// <returns>The https app version async.</returns>
+        ResultPack RequestHttpsiOSAppVersionAsync()
+        {
+            try
+            {
+                var webClient = new WebClient { };
+                var result = webClient.DownloadData("https://itunes.apple.com/cn/lookup?id=1532353432");
+                if (result == null)
+                {
+                    return null;
+                }
+                return Newtonsoft.Json.JsonConvert.DeserializeObject<ResultPack>(Encoding.UTF8.GetString(result));
+            }
+            catch
+            {
+                return null;
+            }
+        }
+
+#else
+
+        /// <summary>
+        /// 鑾峰彇 Android-APP 鐗堟湰淇℃伅
+        /// </summary>
+        /// <returns>The https app version async.</returns>
+        private APPVersion GetAndroidAppVersion()
+        {
+            try
+            {
+                var result = new HttpServerRequest().GetAppVersion();
+                if (result.Code == StateCode.SUCCESS)
+                {
+                    if (result.Data == null)
+                    {
+                        return null;
+                    }
+
+                    var responeData = Newtonsoft.Json.JsonConvert.DeserializeObject<APPVersion>(result.Data.ToString());
+                    return responeData;
+                }
+                return null;
+            }
+            catch (Exception ex)
+            {
+                return null;
+            }
+        }
+
+
+#endif
+
+        int updateType = 0;
+        void TestDDDDD()
+        {
+            updateType = 1;
+
+            ForceUpdateInfo forceUpdateInfo = new ForceUpdateInfo()
+            {
+                UpdateType = updateType,
+                NewVersionUrl = Constant.URL_APPSTORE,
+                NewVersion = "1.0.0925",
+                ReasonStr = "1銆侀椤靛叏鏂版敼鐗堣璁★紝UI鏇存竻鏅� \n2銆佷慨澶岯UG \n3銆佹柊澧為煶绠卞姛鑳� \n3銆佹柊澧為煶绠卞姛鑳� \n3銆佹柊澧為煶绠卞姛鑳� \n3銆佹柊澧為煶绠卞姛鑳� \n3銆佹柊澧為煶绠卞姛鑳� \n3銆佹柊澧為煶绠卞姛鑳� \n3銆佹柊澧為煶绠卞姛鑳� \n3銆佹柊澧為煶绠卞姛鑳� \n3銆佹柊澧為煶绠卞姛鑳� \n3銆佹柊澧為煶绠卞姛鑳� \n3銆佹柊澧為煶绠卞姛鑳� \n3銆佹柊澧為煶绠卞姛鑳� \n3銆佹柊澧為煶绠卞姛鑳�"
+            };
+
+            HDLCommon.Current.ShowForceUpdateDialog(forceUpdateInfo);
+        }
+
+    }
+
+    /// <summary>
+    /// 鑻规灉鍟嗗簵鏌ヨ鍝嶅簲鍖呮牸寮�
+    /// </summary>
+    [System.Serializable]
+    public class ResultPack
+    {
+        public int ResultCount { get; set; }
+        public object Results { get; set; }
+    }
+}
diff --git a/HDL_ON/UI/UI2/4-PersonalCenter/AboutOn/ComplaintsPage.cs b/HDL_ON/UI/UI2/4-PersonalCenter/AboutOn/ComplaintsPage.cs
new file mode 100644
index 0000000..ea908e1
--- /dev/null
+++ b/HDL_ON/UI/UI2/4-PersonalCenter/AboutOn/ComplaintsPage.cs
@@ -0,0 +1,174 @@
+锘縰sing System;
+using Shared;
+using HDL_ON.UI.CSS;
+using Xamarin.Essentials;
+
+namespace HDL_ON.UI
+{
+    /// <summary>
+    /// 鎶曡瘔椤甸潰
+    /// </summary>
+    public class ComplaintsPage : FrameLayout
+    {
+        FrameLayout bodyView;
+
+        /// <summary>
+        /// 褰撳墠
+        /// </summary>
+        VerticalScrolViewLayout bodyScrolView;
+
+        public ComplaintsPage()
+        {
+            bodyView = this;
+        }
+
+        public void LoadPage()
+        {
+            new TopViewDiv(bodyView, Language.StringByID(StringId.Complaints)).LoadTopView();
+
+            int bodyY = Application.GetRealHeight(64);
+            bodyScrolView = new VerticalScrolViewLayout()
+            {
+                Y = bodyY,
+                Height = bodyView.Height - bodyY,
+                BackgroundColor = CSS_Color.MainBackgroundColor,
+            };
+
+            #region 鎶曡瘔鑱旂郴
+            FrameLayout phoneRow = new FrameLayout()
+            {
+                Y = Application.GetRealHeight(64),
+                Height = Application.GetRealHeight(50),
+            };
+            bodyView.AddChidren(phoneRow);
+
+            Button btnPhoneTitle = new Button()
+            {
+                X = Application.GetRealWidth(16),
+                Width = Application.GetRealWidth(48),
+                TextID = StringId.Telephone,
+                TextSize = CSS_FontSize.SubheadingFontSize,
+                TextAlignment = TextAlignment.CenterLeft,
+                TextColor = CSS_Color.FirstLevelTitleColor,
+            };
+            phoneRow.AddChidren(btnPhoneTitle);
+
+            Button btnPhoneText = new Button()
+            {
+                X = btnPhoneTitle.Right,
+                Width = Application.GetRealWidth(200),
+                TextAlignment = TextAlignment.CenterLeft,
+                TextSize = CSS_FontSize.TextFontSize,
+                TextColor = CSS_Color.FirstLevelTitleColor,
+                Text = "400 855 8535",
+            };
+            phoneRow.AddChidren(btnPhoneText);
+            /// <summary>
+            /// 鍓嶈繘鍥炬爣
+            /// </summary>
+            var btnImage = new Button()
+            {
+                X = Application.GetRealWidth(339),
+                Gravity = Gravity.CenterVertical,
+                Width = Application.GetMinRealAverage(16),
+                Height = Application.GetMinRealAverage(16),
+                UnSelectedImagePath = "Public/Right.png",
+            };
+            phoneRow.AddChidren(btnImage);
+            phoneRow.AddChidren(new Button() { X = Application.GetRealWidth(16), Y = Application.GetRealWidth(49), Height = Application.GetRealHeight(1), BackgroundColor = CSS_Color.DividingLineColor });
+
+            EventHandler<MouseEventArgs> eventHandler = (sender, e) =>
+            {
+                PhoneDialer.Open(Constant.SUPPORT_TELEPHONENUMBER);
+            };
+
+            phoneRow.MouseUpEventHandler = eventHandler;
+            btnPhoneText.MouseUpEventHandler = eventHandler;
+            btnImage.MouseUpEventHandler = eventHandler;
+            #endregion
+
+            #region 鑱旂郴閭
+            FrameLayout emailRow = new FrameLayout()
+            {
+                Y = phoneRow.Bottom,
+                Height = Application.GetRealHeight(54),
+            };
+            bodyView.AddChidren(emailRow);
+
+            Button btnEmailTitle = new Button()
+            {
+                X = Application.GetRealWidth(16),
+                Width = Application.GetRealWidth(48),
+                TextID = StringId.Email_,
+                TextSize = CSS_FontSize.SubheadingFontSize,
+                TextAlignment = TextAlignment.CenterLeft,
+                TextColor = CSS_Color.FirstLevelTitleColor,
+            };
+            emailRow.AddChidren(btnEmailTitle);
+
+            Button btnEmailText = new Button()
+            {
+                X = btnEmailTitle.Right,
+                Y = Application.GetRealHeight(8),
+                Height = Application.GetRealHeight(20),
+                Width = Application.GetRealWidth(200),
+                TextAlignment = TextAlignment.CenterLeft,
+                TextSize = CSS_FontSize.TextFontSize,
+                TextColor = CSS_Color.FirstLevelTitleColor,
+                Text = Constant.SUPPORT_EMAIL,
+            };
+            emailRow.AddChidren(btnEmailText);
+
+            Button btnEmailTipText = new Button()
+            {
+                X = btnEmailTitle.Right,
+                Y = btnEmailText.Bottom + Application.GetRealHeight(4),
+                Height = Application.GetRealHeight(20),
+                Width = Application.GetRealWidth(200),
+                TextAlignment = TextAlignment.TopLeft,
+                TextSize = CSS_FontSize.PromptFontSize_SecondaryLevel,
+                TextColor = CSS_Color.PromptingColor1,
+                TextID = StringId.WillGivePriorityToTheTreatmen,
+            };
+            emailRow.AddChidren(btnEmailTipText);
+            /// <summary>
+            /// 鍓嶈繘鍥炬爣
+            /// </summary>
+            var btnImage2 = new Button()
+            {
+                X = Application.GetRealWidth(339),
+                Gravity = Gravity.CenterVertical,
+                Width = Application.GetMinRealAverage(16),
+                Height = Application.GetMinRealAverage(16),
+                UnSelectedImagePath = "Public/Right.png",
+            };
+            emailRow.AddChidren(btnImage2);
+
+            emailRow.AddChidren(new Button() { X = Application.GetRealWidth(16), Y = emailRow.Height - Application.GetRealHeight(1), Height = Application.GetRealHeight(1), BackgroundColor = CSS_Color.DividingLineColor });
+
+            EventHandler<MouseEventArgs> eventHandler2 = (sender, e) =>
+            {
+                CopyToClipboard(Constant.SUPPORT_EMAIL);
+            };
+
+            emailRow.MouseUpEventHandler = eventHandler2;
+            btnEmailText.MouseUpEventHandler = eventHandler2;
+            btnImage2.MouseUpEventHandler = eventHandler2;
+            #endregion
+        }
+
+
+
+        /// <summary>
+        /// 澶嶅埗鍒板壀鍒囨澘
+        /// </summary>
+        /// <param name="text"></param>
+        void CopyToClipboard(string text)
+        {
+            Clipboard.SetTextAsync(text);
+            Utlis.ShowTip(text + "\n" + Language.StringByID(StringId.CopySuccess));
+        }
+
+    }
+
+}
diff --git a/HDL_ON/UI/UI2/4-PersonalCenter/AboutOn/FunctionIntroductionPage.cs b/HDL_ON/UI/UI2/4-PersonalCenter/AboutOn/FunctionIntroductionPage.cs
new file mode 100644
index 0000000..9f6526c
--- /dev/null
+++ b/HDL_ON/UI/UI2/4-PersonalCenter/AboutOn/FunctionIntroductionPage.cs
@@ -0,0 +1,183 @@
+锘縰sing System;
+using Shared;
+using HDL_ON.UI.CSS;
+using System.Collections.Generic;
+
+namespace HDL_ON.UI
+{
+    /// <summary>
+    /// 鍔熻兘浠嬬粛
+    /// </summary>
+    public class FunctionIntroductionPage : FrameLayout
+    {
+        FrameLayout bodyView;
+        /// <summary>
+        /// 
+        /// </summary>
+        FrameLayout emptyTipFrameLayout;
+        /// <summary>
+        /// 褰撳墠
+        /// </summary>
+        VerticalScrolViewLayout bodyScrolView;
+        /// <summary>
+        /// 鍐呭涓虹┖鎻愮ずView
+        /// </summary>
+        EmptyTipView emptyTipView;
+
+        public FunctionIntroductionPage()
+        {
+            bodyView = this;
+        }
+
+        public void LoadPage()
+        {
+            new TopViewDiv(bodyView, Language.StringByID(StringId.FunctionIntroduced)).LoadTopView();
+
+            int bodyY = Application.GetRealHeight(64);
+            bodyScrolView = new VerticalScrolViewLayout()
+            {
+                Y = bodyY,
+                Height = bodyView.Height - bodyY,
+                BackgroundColor = CSS_Color.MainBackgroundColor,
+            };
+            bodyView.AddChidren(bodyScrolView);
+
+            AddEmptyTipView();
+
+            //TestLoad();
+        }
+
+        /// <summary>
+        /// 娣诲姞鍐呭涓虹┖鎻愮ず椤甸潰
+        /// </summary>
+        void AddEmptyTipView()
+        {
+            emptyTipView = new EmptyTipView()
+            {
+                Gravity = Gravity.Center
+            };
+            bodyView.AddChidren(emptyTipView);
+        }
+
+        /// <summary>
+        /// 鍔犺浇鍖哄煙閫夋嫨RowView
+        /// </summary>
+        /// <param name="VerticalScrolViewMiddle"></param>
+        void AddRowView(VerticalScrolViewLayout VerticalScrolViewMiddle, HelpURLInfo functionInfo)
+        {
+            var rowView = new FrameLayout()
+            {
+                Height = Application.GetRealHeight(54),
+            };
+            VerticalScrolViewMiddle.AddChidren(rowView);
+
+            //鏍囬
+            var btnTilte = new Button()
+            {
+                X = Application.GetRealWidth(16),
+                Y = Application.GetRealHeight(8),
+                Width = Application.GetRealWidth(320),
+                Height = Application.GetRealHeight(20),
+                TextAlignment = TextAlignment.CenterLeft,
+                TextColor = CSS_Color.FirstLevelTitleColor,
+                TextSize = CSS_FontSize.TextFontSize,
+                Text = functionInfo.Title
+            };
+            rowView.AddChidren(btnTilte);
+
+            //鍓爣棰�
+            var btnSubtitle = new Button()
+            {
+                X = Application.GetRealWidth(16),
+                Y = btnTilte.Bottom + Application.GetRealHeight(4),
+                Width = Application.GetRealWidth(320),
+                Height = Application.GetRealHeight(14),
+                TextAlignment = TextAlignment.CenterLeft,
+                TextColor = CSS_Color.PromptingColor1,
+                TextSize = CSS_FontSize.PromptFontSize_SecondaryLevel,
+                Text = functionInfo.CreateTime
+            };
+
+            rowView.AddChidren(btnSubtitle);
+
+            var btnGo = new Button()
+            {
+                X = Application.GetRealWidth(343),
+                Gravity = Gravity.CenterVertical,
+                Width = Application.GetMinRealAverage(16),
+                Height = Application.GetMinRealAverage(16),
+                UnSelectedImagePath = "Public/Right.png",
+            };
+
+            rowView.AddChidren(btnGo);
+
+            var lineView = new LineView(rowView.Height);
+            rowView.AddChidren(lineView);
+
+            EventHandler<MouseEventArgs> eventHandler = (sender, e) =>
+            {
+                new WebViewDialog().LoadPage(functionInfo.Title, functionInfo.Url);
+            };
+
+            btnTilte.MouseUpEventHandler = eventHandler;
+            btnSubtitle.MouseUpEventHandler = eventHandler;
+            btnGo.MouseUpEventHandler = eventHandler;
+        }
+
+        #region 娴嬭瘯
+        List<HelpURLInfo> list = new List<HelpURLInfo>();
+        /// <summary>
+        /// 
+        /// </summary>
+        void TestLoad()
+        {
+            list.Add(new HelpURLInfo()
+            {
+                Title = "HDL ON PRO 1.0.10 涓昏鏇存柊",
+                CreateTime = "11鏈�26",
+                Url = Constant.URL_PRIVACYPOLICY,
+            });
+
+            list.Add(new HelpURLInfo()
+            {
+                Title = "HDL ON PRO 1.0.09 涓昏鏇存柊",
+                CreateTime = "10鏈�26",
+                Url = Constant.URL_PRIVACYPOLICY,
+            });
+
+            list.Add(new HelpURLInfo()
+            {
+                Title = "HDL ON PRO 1.0.08 涓昏鏇存柊",
+                CreateTime = "09鏈�26",
+                Url = Constant.URL_PRIVACYPOLICY,
+            });
+
+            foreach (var info in list)
+            {
+                AddRowView(bodyScrolView, info);
+            }
+        }
+        #endregion
+    }
+
+
+    /// <summary>
+    /// 甯姪缃戦〉鍦板潃
+    /// </summary>
+    [System.Serializable]
+    public class HelpURLInfo
+    {
+        /// <summary>
+        /// 
+        /// </summary>
+        public string Title;
+        /// <summary>
+        /// 
+        /// </summary>
+        public string CreateTime;
+        /// <summary>
+        /// 
+        /// </summary>
+        public string Url;
+    }
+}
diff --git a/HDL_ON/UI/UI2/4-PersonalCenter/AboutOnPage.cs b/HDL_ON/UI/UI2/4-PersonalCenter/AboutOnPage.cs
deleted file mode 100644
index 1a8753c..0000000
--- a/HDL_ON/UI/UI2/4-PersonalCenter/AboutOnPage.cs
+++ /dev/null
@@ -1,56 +0,0 @@
-锘縰sing System;
-using Shared;
-using HDL_ON.UI.CSS;
-
-namespace HDL_ON.UI
-{
-    public class AboutOnPage : FrameLayout
-    {
-        FrameLayout bodyView;
-        
-        public AboutOnPage()
-        {
-            bodyView = this;
-        }
-
-        public void LoadPage()
-        {
-            new TopViewDiv(bodyView, Language.StringByID(StringId.About)).LoadTopView();
-
-            Button btnOnIcon = new Button()
-            {
-                Gravity = Gravity.CenterHorizontal,
-                Y = Application.GetRealWidth(106),
-                Width = Application.GetRealWidth(58),
-                Height = Application.GetRealWidth(58),
-                UnSelectedImagePath = "OnIcon.png",
-            };
-            bodyView.AddChidren(btnOnIcon);
-
-            Button btnOnTitle = new Button()
-            {
-                //Gravity = Gravity.CenterHorizontal,
-                Y = Application.GetRealWidth(184),
-                Height = Application.GetRealWidth(28),
-                TextAlignment = TextAlignment.Center,
-                Text = "ON+",
-                TextColor = CSS_Color.FirstLevelTitleColor,
-                TextSize = CSS_FontSize.EmphasisFontSize_Secondary,
-                IsBold = true,
-            };
-            bodyView.AddChidren(btnOnTitle);
-
-            Button btnOnVersion = new Button()
-            {
-                Y = btnOnTitle.Bottom,
-                Height = Application.GetRealWidth(25),
-                TextAlignment = TextAlignment.Center,
-                TextColor = CSS_Color.TextualColor,
-                TextSize = CSS_FontSize.PromptFontSize_FirstLevel,
-                Text = Language.StringByID(StringId.VersionNumber) + " " + MainPage.VersionString,
-            };
-            bodyView.AddChidren(btnOnVersion);
-
-        }
-    }
-}
diff --git a/HDL_ON/UI/UI2/4-PersonalCenter/AccountBindInfo/AccountBindInfoPage.cs b/HDL_ON/UI/UI2/4-PersonalCenter/AccountBindInfo/AccountBindInfoPage.cs
index d1a0a8d..331dc4a 100644
--- a/HDL_ON/UI/UI2/4-PersonalCenter/AccountBindInfo/AccountBindInfoPage.cs
+++ b/HDL_ON/UI/UI2/4-PersonalCenter/AccountBindInfo/AccountBindInfoPage.cs
@@ -4,10 +4,20 @@
 
 namespace HDL_ON.UI
 {
+    /// <summary>
+    /// 宸茬粦瀹氭墜鏈烘垨鑰呴偖绠辩殑椤甸潰
+    /// </summary>
     public partial class AccountBindInfoPage : FrameLayout
     {
+        /// <summary>
+        /// 
+        /// </summary>
         FrameLayout bodyView;
+        /// <summary>
+        /// 
+        /// </summary>
         Action<string> action;
+
         /// <summary>
         /// 淇淇℃伅鐨勭被鍨�
         /// 1:閭锛�2:鎵嬫満
@@ -17,6 +27,10 @@
         /// 鐣岄潰鏍囬
         /// </summary>
         int titleId;
+
+        /// <summary>
+        /// 
+        /// </summary>
         public AccountBindInfoPage()
         {
             bodyView = this;
@@ -27,7 +41,7 @@
         /// </summary>
         /// <param name="act">鍒锋柊缁戝畾淇℃伅鏂规硶</param>
         /// <param name="option">淇淇℃伅鐨勭被鍨�:1:閭锛�2:鎵嬫満</param>
-        public void LoadPage(Action<string> act,int ot,int tId)
+        public void LoadPage(Action<string> act, int ot, int tId)
         {
             action = act;
             optionType = ot;
@@ -50,7 +64,7 @@
                 TextColor = CSS_Color.FirstLevelTitleColor,
                 TextSize = CSS_FontSize.SubheadingFontSize,
                 TextAlignment = TextAlignment.CenterLeft,
-                TextID = optionType == 1 ? StringId.CurrentEmail : StringId.CurPhone, 
+                TextID = optionType == 1 ? StringId.CurrentEmail : StringId.CurPhone,
             };
             rowView.AddChidren(btnTitle);
 
@@ -60,7 +74,7 @@
                 TextColor = CSS_Color.PromptingColor1,
                 TextSize = CSS_FontSize.TextFontSize,
                 TextAlignment = TextAlignment.CenterRight,
-                Text = optionType == 1 ? MainPage.LoginUser.userEmailInfo : MainPage.LoginUser.userMobileInfo,
+                Text = optionType == 1 ?  UserInfo.Current.userEmailInfo :  UserInfo.Current.userMobileInfo,
             };
             rowView.AddChidren(btnContent);
 
@@ -69,7 +83,7 @@
                 Y = Application.GetRealHeight(213),
                 Gravity = Gravity.CenterHorizontal,
                 Width = Application.GetRealWidth(220),
-                Height = Application.GetRealHeight(44),
+                Height = Application.GetRealWidth(44),
                 BackgroundColor = CSS_Color.MainColor,
                 TextAlignment = TextAlignment.Center,
                 TextColor = CSS_Color.MainBackgroundColor,
@@ -82,7 +96,8 @@
             };
             bodyView.AddChidren(btnChangeBind);
 
-            if( (!string.IsNullOrEmpty(MainPage.LoginUser.userMobileInfo) && optionType == 1) || (!string.IsNullOrEmpty(MainPage.LoginUser.userMobileInfo) && optionType == 2))
+            //鍚屾椂缁戝畾閭鎴栬�呮墜鏈烘墠鏄剧ず"鏇存崲楠岃瘉鏂瑰紡"
+            if (!string.IsNullOrEmpty( UserInfo.Current.userMobileInfo) && !string.IsNullOrEmpty( UserInfo.Current.userEmailInfo))
             {
                 Button btnUnbind = new Button()
                 {
@@ -111,16 +126,18 @@
         /// </summary>
         void LoadEvent_SkipChangeBandAccountInfo(Button button)
         {
-            EventHandler<MouseEventArgs> eventHandler = (sender, e) => {
+            EventHandler<MouseEventArgs> eventHandler = (sender, e) =>
+            {
                 var cbe = new ChangeBindAccountPage();
+                cbe.IsUnbind = false;
                 MainPage.BasePageView.AddChidren(cbe);
                 if (optionType == 1)
                 {
-                    cbe.LoadPage(action, optionType, StringId.ModifyBindingEmail, StringId.CurrentEmail);
+                    cbe.LoadPage(action, optionType, StringId.ModifyBindingEmail);
                 }
-                else if(optionType == 2)
+                else if (optionType == 2)
                 {
-                    cbe.LoadPage(action, optionType, StringId.ModifyBindingPhone, StringId.CurPhone);
+                    cbe.LoadPage(action, optionType, StringId.ModifyBindingPhone);
                 }
                 MainPage.BasePageView.PageIndex = MainPage.BasePageView.ChildrenCount - 1;
             };
@@ -132,16 +149,18 @@
         /// </summary>
         void LoadEvent_SkipDelBandAccountInfo(Button button)
         {
-            EventHandler<MouseEventArgs> eventHandler = (sender, e) => {
+            EventHandler<MouseEventArgs> eventHandler = (sender, e) =>
+            {
                 var cbe = new ChangeBindAccountPage();
+                cbe.IsUnbind = true;//鏄惁涓鸿В缁戞爣璁�
                 MainPage.BasePageView.AddChidren(cbe);
                 if (optionType == 1)
                 {
-                    cbe.LoadPage(action, optionType, StringId.UnbindEmail, StringId.CurrentEmail);
+                    cbe.LoadPage(action, optionType, StringId.UnbindEmail);
                 }
-                else if(optionType == 2)
+                else if (optionType == 2)
                 {
-                    cbe.LoadPage(action, optionType, StringId.UnbindPhone, StringId.CurPhone);
+                    cbe.LoadPage(action, optionType, StringId.UnbindPhone);
                 }
                 MainPage.BasePageView.PageIndex = MainPage.BasePageView.ChildrenCount - 1;
             };
diff --git a/HDL_ON/UI/UI2/4-PersonalCenter/AccountBindInfo/BindAccountPage.cs b/HDL_ON/UI/UI2/4-PersonalCenter/AccountBindInfo/BindAccountPage.cs
index 3dc8e8e..4129820 100644
--- a/HDL_ON/UI/UI2/4-PersonalCenter/AccountBindInfo/BindAccountPage.cs
+++ b/HDL_ON/UI/UI2/4-PersonalCenter/AccountBindInfo/BindAccountPage.cs
@@ -1,205 +1,206 @@
-锘縰sing System;
-using Shared;
-using HDL_ON.UI.CSS;
-using System.Text.RegularExpressions;
+锘�//using System;
+//using Shared;
+//using HDL_ON.UI.CSS;
+//using System.Text.RegularExpressions;
+//using HDL_ON.DAL.Server;
 
-namespace HDL_ON.UI
-{
-    public partial class BindAccountPage : FrameLayout
-    {
-        FrameLayout bodyView;
-        Button btnBind;
-        EditText etContent;
-        Action<string> action;
-        /// <summary>
-        /// 鏍囬ID
-        /// </summary>
-        int titleId;
-        public BindAccountPage()
-        {
-            bodyView = this;
-        }
+//namespace HDL_ON.UI
+//{
+//    public partial class BindAccountPage : FrameLayout
+//    {
+//        FrameLayout bodyView;
+//        Button btnBind;
+//        EditText etContent;
+//        Action<string> action;
+//        /// <summary>
+//        /// 鏍囬ID
+//        /// </summary>
+//        int titleId;
+//        public BindAccountPage()
+//        {
+//            bodyView = this;
+//        }
 
-        public void LoadPage(Action<string> act,int tId)
-        {
-            action = act;
-            titleId = tId;
-            bodyView.BackgroundColor = CSS_Color.BackgroundColor;
-            new TopViewDiv(bodyView, Language.StringByID(titleId)).LoadTopView();
+//        public void LoadPage(Action<string> act,int tId)
+//        {
+//            action = act;
+//            titleId = tId;
+//            bodyView.BackgroundColor = CSS_Color.BackgroundColor;
+//            new TopViewDiv(bodyView, Language.StringByID(titleId)).LoadTopView();
 
-            FrameLayout rowView = new FrameLayout()
-            {
-                Y = Application.GetRealHeight(72),
-                Height = Application.GetRealHeight(50),
-                BackgroundColor = CSS_Color.MainBackgroundColor,
-            };
-            bodyView.AddChidren(rowView);
+//            FrameLayout rowView = new FrameLayout()
+//            {
+//                Y = Application.GetRealHeight(72),
+//                Height = Application.GetRealHeight(50),
+//                BackgroundColor = CSS_Color.MainBackgroundColor,
+//            };
+//            bodyView.AddChidren(rowView);
 
-            Button btnTitle = new Button()
-            {
-                X = Application.GetRealWidth(16),
-                Width = Application.GetRealWidth(180),
-                TextColor = CSS_Color.FirstLevelTitleColor,
-                TextSize = CSS_FontSize.SubheadingFontSize,
-                TextAlignment = TextAlignment.CenterLeft,
-                TextID = titleId == StringId.BindEmail ? StringId.EntryNewEmail : StringId.EntryNewPhone,
-            };
-            rowView.AddChidren(btnTitle);
+//            Button btnTitle = new Button()
+//            {
+//                X = Application.GetRealWidth(16),
+//                Width = Application.GetRealWidth(180),
+//                TextColor = CSS_Color.FirstLevelTitleColor,
+//                TextSize = CSS_FontSize.SubheadingFontSize,
+//                TextAlignment = TextAlignment.CenterLeft,
+//                TextID = titleId == StringId.BindEmail ? StringId.EntryNewEmail : StringId.EntryNewPhone,
+//            };
+//            rowView.AddChidren(btnTitle);
 
-            etContent = new EditText()
-            {
-                Width = Application.GetRealWidth(359),
-                TextColor = CSS_Color.PromptingColor1,
-                TextSize = CSS_FontSize.TextFontSize,
-                TextAlignment = TextAlignment.CenterRight,
-                Foucs = true
-            };
-            rowView.AddChidren(etContent);
+//            etContent = new EditText()
+//            {
+//                Width = Application.GetRealWidth(359),
+//                TextColor = CSS_Color.PromptingColor1,
+//                TextSize = CSS_FontSize.TextFontSize,
+//                TextAlignment = TextAlignment.CenterRight,
+//                Foucs = true
+//            };
+//            rowView.AddChidren(etContent);
 
-            btnBind = new Button()
-            {
-                Y = Application.GetRealHeight(213),
-                Gravity = Gravity.CenterHorizontal,
-                Width = Application.GetRealWidth(220),
-                Height = Application.GetRealHeight(44),
-                BackgroundColor = CSS_Color.MainColor,
-                TextAlignment = TextAlignment.Center,
-                TextColor = CSS_Color.MainBackgroundColor,
-                TextID = StringId.Confirm,
-                TextSize = CSS_FontSize.SubheadingFontSize,
-                IsBold = true,
-                Radius = (uint)Application.GetRealWidth(22),
-                BorderColor = 0x00000000,
-                BorderWidth = 0,
-            };
-            bodyView.AddChidren(btnBind);
+//            btnBind = new Button()
+//            {
+//                Y = Application.GetRealHeight(213),
+//                Gravity = Gravity.CenterHorizontal,
+//                Width = Application.GetRealWidth(220),
+//                Height = Application.GetRealHeight(44),
+//                BackgroundColor = CSS_Color.MainColor,
+//                TextAlignment = TextAlignment.Center,
+//                TextColor = CSS_Color.MainBackgroundColor,
+//                TextID = StringId.Confirm,
+//                TextSize = CSS_FontSize.SubheadingFontSize,
+//                IsBold = true,
+//                Radius = (uint)Application.GetRealWidth(22),
+//                BorderColor = 0x00000000,
+//                BorderWidth = 0,
+//            };
+//            bodyView.AddChidren(btnBind);
 
-            LoadEvent_BindEmail();
+//            LoadEvent_BindEmail();
            
-        }
-    }
+//        }
+//    }
 
 
-    //--------------------------------------------
-    public partial class BindAccountPage
-    {
-        void LoadEvent_BindEmail()
-        {
-            btnBind.MouseUpEventHandler = (sender, e) => {
-                Application.HideSoftInput();
-                var account = etContent.Text.Trim();
-                if (titleId == StringId.BindEmail)
-                {
-                    if (account == MainPage.LoginUser.userEmailInfo)
-                    {
-                        var tip = new Tip()
-                        {
-                            Text = Language.StringByID(StringId.EmailIsSameNoNeedModfiy),
-                            CloseTime = 1,
-                            Direction = AMPopTipDirection.None
-                        };
-                        tip.Show(bodyView);
-                        return;
-                    }
-                    if (!Regex.IsMatch(account, "([a-zA-Z0-9_\\.\\-])+\\@(([a-zA-Z0-9\\-])+\\.)+([a-zA-Z0-9]{2,5})+"))
-                    {
-                        var tip = new Tip()
-                        {
-                            Text = Language.StringByID(StringId.PlsEntryCorrectEmailAddress),
-                            CloseTime = 1,
-                            Direction = AMPopTipDirection.None
-                        };
-                        tip.Show(bodyView);
-                        return;
-                    }
-                }
-                else if (titleId == StringId.BindPhone)
-                {
-                    if(account == MainPage.LoginUser.userMobileInfo)
-                    {
-                        var tip = new Tip()
-                        {
-                            Text = Language.StringByID(StringId.PhoneNumberIsSameNoNeedModfiy),
-                            CloseTime = 1,
-                            Direction = AMPopTipDirection.None
-                        };
-                        tip.Show(bodyView);
-                        return;
-                    }
-                    if (!Regex.IsMatch(account, @"^[1]+\d{10}") || (account.Length != 11))
-                    {
-                        var tip = new Tip()
-                        {
-                            Text = Language.StringByID(StringId.PlsEntryCorrectMobilNeumber),
-                            CloseTime = 1,
-                            Direction = AMPopTipDirection.None
-                        };
-                        tip.Show(bodyView);
-                        return;
-                    }
-                }
-                new System.Threading.Thread(() =>
-                {
-                    var result = new DAL.Server.HttpServerRequest().BindAccount(account);
-                    if (result.ToUpper() == "SUCCESS")
-                    {
-                        Application.RunOnMainThread(() =>
-                        {
-                            if (titleId == StringId.BindEmail)
-                            {
-                                MainPage.LoginUser.userEmailInfo = account;
-                            }
-                            else if (titleId == StringId.BindPhone)
-                            {
-                                MainPage.LoginUser.userMobileInfo = account;
-                            }
-                            var page = new OperationResultDisPalyPage();
-                            page.Show();
-                            if (titleId == StringId.BindEmail)
-                            {
-                                page.LoadPage(true, Language.StringByID(StringId.BindEmail), Language.StringByID(StringId.BindEmailSuccess), "");
-                            }
-                            else if (titleId == StringId.BindPhone)
-                            {
-                                page.LoadPage(true, Language.StringByID(StringId.BindPhone), Language.StringByID(StringId.BindPhoneSuccess), "");
-                            }
+//    //--------------------------------------------
+//    public partial class BindAccountPage
+//    {
+//        void LoadEvent_BindEmail()
+//        {
+//            btnBind.MouseUpEventHandler = (sender, e) => {
+//                Application.HideSoftInput();
+//                var account = etContent.Text.Trim();
+//                if (titleId == StringId.BindEmail)
+//                {
+//                    if (account ==  UserInfo.Current.userEmailInfo)
+//                    {
+//                        var tip = new Tip()
+//                        {
+//                            Text = Language.StringByID(StringId.EmailIsSameNoNeedModfiy),
+//                            CloseTime = 1,
+//                            Direction = AMPopTipDirection.None
+//                        };
+//                        tip.Show(bodyView);
+//                        return;
+//                    }
+//                    if (!Regex.IsMatch(account, "([a-zA-Z0-9_\\.\\-])+\\@(([a-zA-Z0-9\\-])+\\.)+([a-zA-Z0-9]{2,5})+"))
+//                    {
+//                        var tip = new Tip()
+//                        {
+//                            Text = Language.StringByID(StringId.PlsEntryCorrectEmailAddress),
+//                            CloseTime = 1,
+//                            Direction = AMPopTipDirection.None
+//                        };
+//                        tip.Show(bodyView);
+//                        return;
+//                    }
+//                }
+//                else if (titleId == StringId.BindPhone)
+//                {
+//                    if(account ==  UserInfo.Current.userMobileInfo)
+//                    {
+//                        var tip = new Tip()
+//                        {
+//                            Text = Language.StringByID(StringId.PhoneNumberIsSameNoNeedModfiy),
+//                            CloseTime = 1,
+//                            Direction = AMPopTipDirection.None
+//                        };
+//                        tip.Show(bodyView);
+//                        return;
+//                    }
+//                    if (!Regex.IsMatch(account, @"^[1]+\d{10}") || (account.Length != 11))
+//                    {
+//                        var tip = new Tip()
+//                        {
+//                            Text = Language.StringByID(StringId.PlsEntryCorrectMobilNeumber),
+//                            CloseTime = 1,
+//                            Direction = AMPopTipDirection.None
+//                        };
+//                        tip.Show(bodyView);
+//                        return;
+//                    }
+//                }
+//                new System.Threading.Thread(() =>
+//                {
+//                    var result = new HttpServerRequest().BindAccount(account);
+//                    if (result.ToUpper() == StateCode.SUCCESS)
+//                    {
+//                        Application.RunOnMainThread(() =>
+//                        {
+//                            if (titleId == StringId.BindEmail)
+//                            {
+//                                 UserInfo.Current.userEmailInfo = account;
+//                            }
+//                            else if (titleId == StringId.BindPhone)
+//                            {
+//                                 UserInfo.Current.userMobileInfo = account;
+//                            }
+//                            var page = new OperationResultDisPalyPage();
+//                            page.Show();
+//                            if (titleId == StringId.BindEmail)
+//                            {
+//                                page.LoadPage(true, Language.StringByID(StringId.BindEmail), Language.StringByID(StringId.BindEmailSuccess), "");
+//                            }
+//                            else if (titleId == StringId.BindPhone)
+//                            {
+//                                page.LoadPage(true, Language.StringByID(StringId.BindPhone), Language.StringByID(StringId.BindPhoneSuccess), "");
+//                            }
 
-                            for (int i = 0; i < 3; i++)
-                            {
-                                MainPage.BasePageView.GetChildren(MainPage.BasePageView.ChildrenCount - 1).RemoveFromParent();
-                            }
-                            action(account);
-                        });
-                    }
-                    else
-                    {
-                        var tipMsg = "";
+//                            for (int i = 0; i < 3; i++)
+//                            {
+//                                MainPage.BasePageView.GetChildren(MainPage.BasePageView.ChildrenCount - 1).RemoveFromParent();
+//                            }
+//                            action(account);
+//                        });
+//                    }
+//                    else
+//                    {
+//                        var tipMsg = "";
                        
-                        Application.RunOnMainThread(() =>
-                        {
-                            var page = new OperationResultDisPalyPage();
-                            page.Show();
-                            if (titleId == StringId.BindEmail)
-                            {
-                                if (result == "Exist")
-                                {
-                                    tipMsg = Language.StringByID(StringId.EmailAlreadyUse);
-                                }
-                                page.LoadPage(false, Language.StringByID(StringId.BindEmail), Language.StringByID(StringId.BindEmailFail) + "," + tipMsg, "");
-                            }
-                            else
-                            {
-                                if (result == "Exist")
-                                {
-                                    tipMsg = Language.StringByID(StringId.PhoneNumberAlreadyUse);
-                                }
-                                page.LoadPage(false, Language.StringByID(StringId.BindPhone), Language.StringByID(StringId.BindPhoneFail) + "," + tipMsg, "");
-                            }
-                        });
-                    }
-                })
-                { IsBackground = true }.Start();
-            };
-        }
-    }
-}
+//                        Application.RunOnMainThread(() =>
+//                        {
+//                            var page = new OperationResultDisPalyPage();
+//                            page.Show();
+//                            if (titleId == StringId.BindEmail)
+//                            {
+//                                if (result == "Exist")
+//                                {
+//                                    tipMsg = Language.StringByID(StringId.EmailAlreadyUse);
+//                                }
+//                                page.LoadPage(false, Language.StringByID(StringId.BindEmail), Language.StringByID(StringId.BindEmailFail) + "," + tipMsg, "");
+//                            }
+//                            else
+//                            {
+//                                if (result == "Exist")
+//                                {
+//                                    tipMsg = Language.StringByID(StringId.PhoneNumberAlreadyUse);
+//                                }
+//                                page.LoadPage(false, Language.StringByID(StringId.BindPhone), Language.StringByID(StringId.BindPhoneFail) + "," + tipMsg, "");
+//                            }
+//                        });
+//                    }
+//                })
+//                { IsBackground = true }.Start();
+//            };
+//        }
+//    }
+//}
diff --git a/HDL_ON/UI/UI2/4-PersonalCenter/AccountBindInfo/ChangeBindAccountPage.cs b/HDL_ON/UI/UI2/4-PersonalCenter/AccountBindInfo/ChangeBindAccountPage.cs
index 8588606..1faeae0 100644
--- a/HDL_ON/UI/UI2/4-PersonalCenter/AccountBindInfo/ChangeBindAccountPage.cs
+++ b/HDL_ON/UI/UI2/4-PersonalCenter/AccountBindInfo/ChangeBindAccountPage.cs
@@ -2,17 +2,46 @@
 using Shared;
 using HDL_ON.UI.CSS;
 using System.Threading;
+using HDL_ON.DAL.Server;
 
 namespace HDL_ON.UI
 {
+    /// <summary>
+    /// 淇敼缁戝畾鎴栬�呰В缁�--鍙戦�侀獙璇佺爜椤甸潰
+    /// </summary>
     public partial class ChangeBindAccountPage : FrameLayout
     {
+        /// <summary>
+        /// 
+        /// </summary>
         FrameLayout bodyView;
+        /// <summary>
+        /// 
+        /// </summary>
+        Button btnTitle;
+        /// <summary>
+        /// 
+        /// </summary>
+        Button btnContent;
+
+        /// <summary>
+        /// 
+        /// </summary>
         Action<string> action;
+
         /// <summary>
         /// 鎿嶄綔鐩爣绫诲瀷 1:閭锛�2:鎵嬫満
         /// </summary>
         int optionType;
+        /// <summary>
+        /// 鏄惁涓鸿В缁戦獙璇�
+        /// </summary>
+        public bool IsUnbind;
+      
+
+        /// <summary>
+        /// ChangeBindAccountPage
+        /// </summary>
         public ChangeBindAccountPage()
         {
             bodyView = this;
@@ -24,18 +53,18 @@
         /// <param name="optionType">鎿嶄綔鐩爣绫诲瀷 1:閭锛�2:鎵嬫満</param>
         /// <param name="titleId"></param>
         /// <param name="contentTitleId"></param>
-        public void LoadPage(Action<string> act, int opt, int titleId, int contentTitleId)
+        public void LoadPage(Action<string> act, int opt, int titleId)
         {
             action = act;
             optionType = opt;
             string account;
             if (optionType == 0)
             {
-                account = MainPage.LoginUser.userEmailInfo;
+                account =  UserInfo.Current.userEmailInfo;
             }
             else
             {
-                account = MainPage.LoginUser.userMobileInfo;
+                account =  UserInfo.Current.userMobileInfo;
             }
             bodyView.BackgroundColor = CSS_Color.BackgroundColor;
             new TopViewDiv(bodyView, Language.StringByID(titleId)).LoadTopView();
@@ -48,24 +77,24 @@
             };
             bodyView.AddChidren(rowView);
 
-            Button btnTitle = new Button()
+            btnTitle = new Button()
             {
                 X = Application.GetRealWidth(16),
                 Width = Application.GetRealWidth(180),
                 TextColor = CSS_Color.FirstLevelTitleColor,
                 TextSize = CSS_FontSize.SubheadingFontSize,
                 TextAlignment = TextAlignment.CenterLeft,
-                TextID = contentTitleId,
+                //TextID = contentTitleId,
             };
             rowView.AddChidren(btnTitle);
 
-            Button btnContent = new Button()
+            btnContent = new Button()
             {
                 Width = Application.GetRealWidth(359),
                 TextColor = CSS_Color.PromptingColor1,
                 TextSize = CSS_FontSize.TextFontSize,
                 TextAlignment = TextAlignment.CenterRight,
-                Text = optionType == 1 ? MainPage.LoginUser.userEmailInfo : MainPage.LoginUser.userMobileInfo,
+                //Text = optionType == 1 ?  UserInfo.Current.userEmailInfo :  UserInfo.Current.userMobileInfo,
             };
             rowView.AddChidren(btnContent);
 
@@ -74,7 +103,7 @@
                 Y = Application.GetRealHeight(213),
                 Gravity = Gravity.CenterHorizontal,
                 Width = Application.GetRealWidth(220),
-                Height = Application.GetRealHeight(44),
+                Height = Application.GetRealWidth(44),
                 BackgroundColor = CSS_Color.MainColor,
                 TextAlignment = TextAlignment.Center,
                 TextColor = CSS_Color.MainBackgroundColor,
@@ -87,7 +116,10 @@
             };
             bodyView.AddChidren(btnChangeBind);
 
-            if (!string.IsNullOrEmpty(MainPage.LoginUser.userMobileInfo))
+
+
+            //鍚屾椂缁戝畾閭鎴栬�呮墜鏈烘墠鏄剧ず"鏇存崲楠岃瘉鏂瑰紡"
+            if (!string.IsNullOrEmpty( UserInfo.Current.userMobileInfo) && !string.IsNullOrEmpty( UserInfo.Current.userEmailInfo))
             {
                 Button btnChangeGetVer = new Button()
                 {
@@ -105,7 +137,27 @@
                 LoadEvent_ChangeVerificationMethod(btnChangeGetVer, btnTitle, btnContent);
             }
 
+            SetContentTitleId();
             LoadEvent_GetVerification(btnChangeBind, titleId);
+        }
+
+        /// <summary>
+        /// 璁剧疆鎸夐挳鎻愮ず鏂囧瓧
+        /// 淇敼缁戝畾鏃舵彁绀猴細鎵嬫満楠岃瘉銆侀偖绠遍獙璇�
+        /// 瑙g粦鏃舵彁绀猴細褰撳墠鎵嬫満鎵嬫満鍙风爜銆佸綋鍓嶉偖绠卞湴鍧�
+        /// </summary>
+        void SetContentTitleId()
+        {
+            if (optionType == 2)
+            {
+                btnTitle.TextID = IsUnbind ? StringId.CurPhone : StringId.PhoneNumberVerification;
+                btnContent.Text =  UserInfo.Current.userMobileInfo;
+            }
+            else
+            {
+                btnTitle.TextID = IsUnbind ? StringId.CurrentEmail : StringId.EmailVerification;
+                btnContent.Text =  UserInfo.Current.userEmailInfo;
+            }
         }
     }
 
@@ -120,16 +172,7 @@
             btn.MouseUpEventHandler = (sender, e) =>
             {
                 optionType = optionType == 1 ? 2 : 1;
-                if (optionType == 2)
-                {
-                    btnTitle.TextID = StringId.CurPhone;
-                    btnContent.Text = MainPage.LoginUser.userMobileInfo;
-                }
-                else
-                {
-                    btnTitle.TextID = StringId.CurrentEmail;
-                    btnContent.Text = MainPage.LoginUser.userEmailInfo;
-                }
+                SetContentTitleId();
             };
         }
 
@@ -145,46 +188,64 @@
                 {
                     new Thread(() =>
                     {
-                        if (optionType == 1)
+                        //1.鑾峰彇楠岃瘉鐮�,閲囩敤鏁忔劅鏁版嵁楠岃瘉
+                        ResponsePackNew resultObj;
+                        if (optionType == 1)//閭
                         {
-                            var result = new DAL.Server.HttpServerRequest().GetLoginVerCode(MainPage.LoginUser.userEmailInfo);
+                            resultObj = new HttpServerRequest().VerificationCodeSend(VerifyType.SENSITIVE_DATA,  UserInfo.Current.userEmailInfo);
                         }
-                        else if (optionType == 2)
+                        else
                         {
-                            var result = new DAL.Server.HttpServerRequest().GetLoginVerCode(MainPage.LoginUser.userMobileInfo);
+                            resultObj = new HttpServerRequest().VerificationCodeSend(VerifyType.SENSITIVE_DATA,  UserInfo.Current.userMobileInfo, true,  UserInfo.Current.areaCode);
                         }
-                    })
-                    { IsBackground = true }.Start();
-                }
-                if (time == 0)
-                {
-                    time = 60;
-                    new Thread(() =>
-                    {
-                        while (time > 0)
+
+                        if (resultObj.Code != StateCode.SUCCESS)
                         {
-                            time--;
+                            // 鎻愮ず閿欒
+                            IMessageCommon.Current.ShowErrorInfoAlter(resultObj.Code);
+                        }
+                        else
+                        {
+                            if (time == 0)
+                            {
+                                time = 60;
+                                new Thread(() =>
+                                {
+                                    while (time > 0)
+                                    {
+                                        time--;
+                                        Application.RunOnMainThread(() =>
+                                        {
+                                            button.Text = time.ToString() + "s";
+                                        });
+                                        Thread.Sleep(1000);
+                                    }
+                                    Application.RunOnMainThread(() =>
+                                    {
+                                        button.IsSelected = true;
+                                        button.TextID = StringId.GetVerificationCode;
+                                        button.BackgroundColor = CSS_Color.MainColor;
+                                        time = 0;
+                                    });
+                                })
+                                { IsBackground = true }.Start();
+                            }
                             Application.RunOnMainThread(() =>
                             {
-                                button.Text = time.ToString() + "s";
+                                button.BackgroundColor = CSS_Color.PromptingColor1;
+                                var vcp = new ChangeBindVerificationCodePage();
+                                vcp.IsUnbind = IsUnbind;
+                                MainPage.BasePageView.AddChidren(vcp);
+                                vcp.LoadPage(action, titleId, optionType, time);
+                                MainPage.BasePageView.PageIndex = MainPage.BasePageView.ChildrenCount - 1;
                             });
-                            Thread.Sleep(1000);
                         }
-                        Application.RunOnMainThread(() =>
-                        {
-                            button.IsSelected = true;
-                            button.TextID = StringId.GetVerificationCode;
-                            button.BackgroundColor = CSS_Color.MainColor;
-                            time = 0;
-                        });
+
                     })
                     { IsBackground = true }.Start();
                 }
-                button.BackgroundColor = CSS_Color.PromptingColor1;
-                var vcp = new VerificationCodePage();
-                MainPage.BasePageView.AddChidren(vcp);
-                vcp.LoadPage(action, titleId, optionType, time);
-                MainPage.BasePageView.PageIndex = MainPage.BasePageView.ChildrenCount - 1;
+
+
             };
         }
     }
diff --git a/HDL_ON/UI/UI2/4-PersonalCenter/AccountBindInfo/VerificationCodePage.cs b/HDL_ON/UI/UI2/4-PersonalCenter/AccountBindInfo/ChangeBindVerificationCodePage.cs
similarity index 85%
rename from HDL_ON/UI/UI2/4-PersonalCenter/AccountBindInfo/VerificationCodePage.cs
rename to HDL_ON/UI/UI2/4-PersonalCenter/AccountBindInfo/ChangeBindVerificationCodePage.cs
index 858578d..b599c70 100644
--- a/HDL_ON/UI/UI2/4-PersonalCenter/AccountBindInfo/VerificationCodePage.cs
+++ b/HDL_ON/UI/UI2/4-PersonalCenter/AccountBindInfo/ChangeBindVerificationCodePage.cs
@@ -2,10 +2,14 @@
 using Shared;
 using HDL_ON.UI.CSS;
 using System.Threading;
+using HDL_ON.DAL.Server;
 
 namespace HDL_ON.UI
 {
-    public partial class VerificationCodePage :FrameLayout
+    /// <summary>
+    /// 淇敼缁戝畾鎴栬�呰В缁�--楠岃瘉鐮侀獙璇侀〉闈�
+    /// </summary>
+    public partial class ChangeBindVerificationCodePage : FrameLayout
     {
         FrameLayout bodyView;
 
@@ -28,10 +32,21 @@
         Button btnNum6Line;
 
         EditText et;
-
+        /// <summary>
+        /// 
+        /// </summary>
         Button btnResend;
-
+        /// <summary>
+        /// 
+        /// </summary>
+        Button btnTip;
+        /// <summary>
+        /// 
+        /// </summary>
         Action<string> action;
+        /// <summary>
+        /// 
+        /// </summary>
         int titleId;
 
         /// <summary>
@@ -42,7 +57,15 @@
         /// 鍊掕鏃舵椂闂�
         /// </summary>
         int time = 0;
-        public VerificationCodePage()
+        /// <summary>
+        /// 鏄惁涓鸿В缁戦獙璇�
+        /// </summary>
+        public bool IsUnbind;
+
+        /// <summary>
+        /// 
+        /// </summary>
+        public ChangeBindVerificationCodePage()
         {
             bodyView = this;
         }
@@ -53,19 +76,21 @@
         /// <param name="tId">椤甸潰鏍囬</param>
         /// <param name="ot">鎿嶄綔绫诲瀷1:閭锛�2:鎵嬫満</param>
         /// <param name="time">鍊掕鏃舵椂闂�</param>
-        public void LoadPage(Action<string> act,int tId,int ot,int t)
+        public void LoadPage(Action<string> act, int tId, int ot, int t)
         {
             action = act;
             titleId = tId;
             bodyView.BackgroundColor = CSS_Color.BackgroundColor;
             optionType = ot;
             time = t;
-            Action backAction = () => {
+            Action backAction = () =>
+            {
                 Application.HideSoftInput();
+                BackConfirmAction();
             };
-            new TopViewDiv(bodyView, Language.StringByID(tId)).LoadTopView(backAction);
+            new TopViewDiv(bodyView, Language.StringByID(tId), false).LoadTopView(backAction);
 
-            Button btnTip = new Button()
+            btnTip = new Button()
             {
                 Y = Application.GetRealHeight(64),
                 Height = Application.GetRealHeight(84),
@@ -237,7 +262,7 @@
                 Y = Application.GetRealHeight(276),
                 Gravity = Gravity.CenterHorizontal,
                 Width = Application.GetRealWidth(220),
-                Height = Application.GetRealHeight(44),
+                Height = Application.GetRealWidth(44),
                 SelectedBackgroundColor = CSS_Color.MainColor,
                 BackgroundColor = CSS_Color.PromptingColor1,
                 TextAlignment = TextAlignment.Center,
@@ -259,14 +284,15 @@
 
 
     //---------------------------------------------
-    public partial class VerificationCodePage
+    public partial class ChangeBindVerificationCodePage
     {
         /// <summary>
         /// 楠岃瘉鐮佽緭鍏ュ彉鍖栦簨浠�
         /// </summary>
         void LoadEvent_VerificationEntryEvent()
         {
-            EventHandler<MouseEventArgs> clickEvent = (sender, e) => {
+            EventHandler<MouseEventArgs> clickEvent = (sender, e) =>
+            {
                 et.Foucs = true;
                 var etCode = et.Text;
                 switch (etCode.Length)
@@ -364,7 +390,8 @@
             btnNum5.MouseUpEventHandler = clickEvent;
             btnNum6.MouseUpEventHandler = clickEvent;
 
-            et.TextChangeEventHandler = (sender, e) => {
+            et.TextChangeEventHandler = (sender, e) =>
+            {
                 var etCode = et.Text;
                 switch (etCode.Length)
                 {
@@ -489,36 +516,17 @@
                             {
                                 act = new PublicAssmebly().TipLoadingMsgDialog(Language.StringByID(StringId.SavingPleaseWait));
                             });
-                            var verAccount = optionType == 1 ? MainPage.LoginUser.userEmailInfo : MainPage.LoginUser.userMobileInfo;
-                            var response = new DAL.Server.HttpServerRequest().ValidatorCode(verAccount, etCode, MainPage.LoginUser.areaCode);
-                            if (response.StateCode.ToUpper() == "SUCCESS")
+                            var verAccount = optionType == 1 ? UserInfo.Current.userEmailInfo : UserInfo.Current.userMobileInfo;
+                            var isPhone = optionType == 2;
+                            var resultObj = new HttpServerRequest().ValidatorCode(VerifyType.SENSITIVE_DATA, verAccount, etCode, isPhone);
+                            if (resultObj.Code == StateCode.SUCCESS)
                             {
                                 result = true;
                             }
                             else
                             {
-                                string erorrInfo = "";
-                                switch (response.StateCode)
-                                {
-                                    case "ValidCodeAndPhoneNoEqual"://楠岃瘉鐮侀敊璇�
-                                        erorrInfo = Language.StringByID(StringId.VerificationCodeWrong);
-                                        break;
-                                    case "NoRecord":
-                                        erorrInfo = Language.StringByID(StringId.PlsGetTheVerificationCode);
-                                        break;
-                                    default:
-                                        erorrInfo = "Server error";
-                                        break;
-                                }
-                                Application.RunOnMainThread(() =>
-                                {
-                                    new Tip()
-                                    {
-                                        CloseTime = 1,
-                                        Direction = AMPopTipDirection.None,
-                                        Text = erorrInfo,
-                                    }.Show(bodyView);
-                                });
+                                //澶辫触鎻愮ず
+                                IMessageCommon.Current.ShowErrorInfoAlter(resultObj.Code);
                             }
                             Application.RunOnMainThread(() =>
                             {
@@ -535,6 +543,16 @@
                                 {
                                     MainPage.BasePageView.GetChildren(MainPage.BasePageView.ChildrenCount - 1).RemoveFromParent();
                                     //MainPage.BasePageView.RemoveAt(MainPage.BasePageView.ChildrenCount - 1);
+                                    //if (isUnbind)
+                                    //{
+                                    //    //褰撳墠涓鸿В缁戦獙璇�
+
+                                    //}
+                                    //else
+                                    //{
+
+                                    //}
+
                                     if (titleId == StringId.ModifyBindingEmail)
                                     {
                                         LoadEvent_SkipBindAccountInfoPage(StringId.BindEmail);
@@ -548,12 +566,12 @@
                                         var account = "";
                                         new Thread(() =>
                                         {
-                                            var result2 = new DAL.Server.HttpServerRequest().BindAccount(account);
-                                            if (result2 == "SUCCESS")
+                                            var result2 = new DAL.Server.HttpServerRequest().UnBindAccount(false);
+                                            if (result2 == StateCode.SUCCESS)
                                             {
                                                 Application.RunOnMainThread(() =>
                                                 {
-                                                    MainPage.LoginUser.userEmailInfo = account;
+                                                    UserInfo.Current.userEmailInfo = account;
                                                     var page = new OperationResultDisPalyPage();
                                                     page.Show();
                                                     page.LoadPage(true, Language.StringByID(StringId.UnbindEmail), Language.StringByID(StringId.UnbindEmailSuccess), "");
@@ -567,15 +585,8 @@
                                             }
                                             else
                                             {
-                                                Application.RunOnMainThread(() =>
-                                                {
-                                                    new Tip()
-                                                    {
-                                                        CloseTime = 1,
-                                                        Direction = AMPopTipDirection.None,
-                                                        Text = Language.StringByID(StringId.OperationFailed),
-                                                    }.Show(bodyView);
-                                                });
+                                                //澶辫触鎻愮ず
+                                                IMessageCommon.Current.ShowErrorInfoAlter(result2);
                                             }
                                         })
                                         { IsBackground = true }.Start();
@@ -585,12 +596,12 @@
                                         var account = "";
                                         new Thread(() =>
                                         {
-                                            var result2 = new DAL.Server.HttpServerRequest().BindAccount(account);
-                                            if (result2 == "SUCCESS")
+                                            var result2 = new DAL.Server.HttpServerRequest().UnBindAccount(true);
+                                            if (result2 == StateCode.SUCCESS)
                                             {
                                                 Application.RunOnMainThread(() =>
                                                 {
-                                                    MainPage.LoginUser.userEmailInfo = account;
+                                                    UserInfo.Current.userMobileInfo = account;
                                                     var page = new OperationResultDisPalyPage();
                                                     page.Show();
                                                     page.LoadPage(true, Language.StringByID(StringId.UnbindPhone), Language.StringByID(StringId.UnbindPhoneSuccess), "");
@@ -604,15 +615,8 @@
                                             }
                                             else
                                             {
-                                                Application.RunOnMainThread(() =>
-                                                {
-                                                    new Tip()
-                                                    {
-                                                        CloseTime = 1,
-                                                        Direction = AMPopTipDirection.None,
-                                                        Text = Language.StringByID(StringId.OperationFailed),
-                                                    }.Show(bodyView);
-                                                });
+                                                //澶辫触鎻愮ず
+                                                IMessageCommon.Current.ShowErrorInfoAlter(result2);
                                             }
                                         })
                                         { IsBackground = true }.Start();
@@ -639,13 +643,15 @@
                 time = 60;
                 new Thread(() =>
                 {
-                    if (optionType == 1)
+                    //1.鑾峰彇楠岃瘉鐮�,閲囩敤鏁忔劅鏁版嵁楠岃瘉
+                    ResponsePackNew resultObj;
+                    if (optionType == 1)//閭
                     {
-                        var result = new DAL.Server.HttpServerRequest().GetLoginVerCode(MainPage.LoginUser.userEmailInfo);
+                        resultObj = new HttpServerRequest().VerificationCodeSend(VerifyType.SENSITIVE_DATA, UserInfo.Current.userEmailInfo);
                     }
-                    else if (optionType == 2)
+                    else
                     {
-                        var result = new DAL.Server.HttpServerRequest().GetLoginVerCode(MainPage.LoginUser.userMobileInfo);
+                        resultObj = new HttpServerRequest().VerificationCodeSend(VerifyType.SENSITIVE_DATA, UserInfo.Current.userMobileInfo, true, UserInfo.Current.areaCode);
                     }
                 })
                 { IsBackground = true }.Start();
@@ -675,19 +681,55 @@
         /// </summary>
         void LoadEvent_Resend()
         {
-            btnResend.MouseUpEventHandler = (sender, e) => {
+            btnResend.MouseUpEventHandler = (sender, e) =>
+            {
                 LoadThread_SendVerCode();
             };
         }
         /// <summary>
-        /// 璺宠浆缁戝畾璐﹀彿淇℃伅浜嬩欢
+        /// 璺宠浆鏂扮粦瀹氳处鍙蜂俊鎭簨浠�
         /// </summary>
         void LoadEvent_SkipBindAccountInfoPage(int skipTid)
         {
-            var vcp = new BindAccountPage();
-            MainPage.BasePageView.AddChidren(vcp);
-            vcp.LoadPage(action,skipTid);
+            //var vcp = new BindAccountPage();
+            //MainPage.BasePageView.AddChidren(vcp);
+            //vcp.LoadPage(action, skipTid);
+            //MainPage.BasePageView.PageIndex = MainPage.BasePageView.ChildrenCount - 1;
+
+            //鏄惁涓烘崲缁戞墜鏈�
+            var isPhone = optionType == 2;
+            //璺宠浆鏂扮粦瀹氶〉闈�
+            var aep = new NewBindAccountPage();
+            MainPage.BasePageView.AddChidren(aep);
+            aep.LoadPage(action, isPhone, true);
             MainPage.BasePageView.PageIndex = MainPage.BasePageView.ChildrenCount - 1;
         }
+
+        /// <summary>
+        /// 杩斿洖浜屾纭浜嬩欢
+        /// </summary>
+        void BackConfirmAction()
+        {
+            //楠岃瘉鐮佸彂閫佹垚鍔燂紝浜屾纭閫�鍑�
+            if (btnTip.TextID == StringId.VerificationCodePrompt)
+            {
+                Action cancelAction = () =>
+                {
+                    if (bodyView != null)
+                    {
+                        bodyView.RemoveFromParent();
+                    }
+                };
+                new ConfirmDialog().ShowDialog(StringId.Tip, StringId.VerificationCodeMayBeDelayed, null, cancelAction, StringId.ReturnStr, StringId.WaitAMoment);
+            }
+            else
+            {
+                //鐩存帴鍏抽棴
+                if (bodyView != null)
+                {
+                    bodyView.RemoveFromParent();
+                }
+            }
+        }
     }
 }
diff --git a/HDL_ON/UI/UI2/4-PersonalCenter/AccountBindInfo/NewBindAccountPage.cs b/HDL_ON/UI/UI2/4-PersonalCenter/AccountBindInfo/NewBindAccountPage.cs
new file mode 100644
index 0000000..8362af1
--- /dev/null
+++ b/HDL_ON/UI/UI2/4-PersonalCenter/AccountBindInfo/NewBindAccountPage.cs
@@ -0,0 +1,347 @@
+锘縰sing System;
+using Shared;
+using HDL_ON.UI.CSS;
+using System.Threading;
+using System.Text.RegularExpressions;
+using HDL_ON.DAL.Server;
+
+
+namespace HDL_ON.UI
+{
+    /// <summary>
+    ///  鏂扮粦瀹氭垨鑰呮崲缁�--鎵嬫満鎴栬�呴偖绠卞彂閫侀獙璇佺爜
+    /// </summary>
+    public partial class NewBindAccountPage : FrameLayout
+    {
+        FrameLayout bodyView;
+        Button btnBind;
+        EditText etContent;
+
+        /// <summary>
+        /// 
+        /// </summary>
+        Action<string> action;
+
+        /// <summary>
+        /// 鏍囬ID
+        /// </summary>
+        int titleId;
+        /// <summary>
+        /// 鏄惁鎵嬫満
+        /// </summary>
+        bool isPhone;
+        /// <summary>
+        /// 鏄惁鎹㈢粦
+        /// </summary>
+        bool isModifyBind;
+        /// <summary>
+        /// 鎵嬫満鍖哄彿
+        /// </summary>
+        string phoneZoneCode = "86";
+
+        /// <summary>
+        /// 
+        /// </summary>
+        public NewBindAccountPage()
+        {
+            bodyView = this;
+        }
+
+        /// <summary>
+        /// LoadPage
+        /// </summary>
+        /// <param name="act"></param>
+        /// <param name="isPhone">鏄惁缁戝畾鎵嬫満</param>
+        public void LoadPage(Action<string> act, bool isPhone = false, bool isModifyBind = false)
+        {
+            action = act;
+            this.isPhone = isPhone;
+            this.isModifyBind = isModifyBind;
+            if (isModifyBind)
+            {
+                //淇敼缁戝畾
+                titleId = isPhone ? StringId.EntryNewPhone : StringId.EntryNewEmail;
+            }
+            else
+            {
+                //鏂扮粦瀹�
+                titleId = isPhone ? StringId.BoundMobileInfo : StringId.BoundEmailInfo;
+            }
+         
+
+            bodyView.BackgroundColor = CSS_Color.BackgroundColor;
+            new TopViewDiv(bodyView, Language.StringByID(titleId)).LoadTopView();
+
+            if (isPhone)
+            {
+                AddPhoneFrameLayout();
+            }
+            else
+            {
+                AddEmailFrameLayout();
+            }
+
+            //鐐瑰嚮鑾峰彇楠岃瘉鐮�
+            LoadEvent_GetVerification(btnBind);
+           
+        }
+
+        /// <summary>
+        /// 
+        /// </summary>
+        void AddPhoneFrameLayout() {
+            #region 濡傛灉鏄墜鏈�
+            //鎵嬫満鍥藉鍖哄彿閫夋嫨鎸夐挳
+            ListCellView codeView = new ListCellView() {
+                Y = Application.GetRealHeight(64),
+            };
+            bodyView.AddChidren(codeView);
+            //璺宠浆鍥藉鍖哄彿閫夋嫨鐣岄潰
+            Action selectAction = () =>
+            {
+                JLCountrycode.CountryCodeView.Current.Show((countryName, code) => {
+                    if (!string.IsNullOrEmpty(code))
+                    {
+                        phoneZoneCode = code;
+                        codeView.BtnSubtitle.Text = "+" + phoneZoneCode;
+                    }
+                });
+            };
+            codeView.GoAction = selectAction;
+            codeView.BtnTilte.Text = Language.StringByID(StringId.CountryOrRegion);
+            codeView.BtnSubtitle.Text = "+" + phoneZoneCode;
+
+            //鎵嬫満鍙疯緭鍏ユ
+            FrameLayout rowView = new FrameLayout()
+            {
+                Y = codeView.Bottom,
+                Height = Application.GetRealHeight(50),
+                BackgroundColor = CSS_Color.MainBackgroundColor,
+            };
+            bodyView.AddChidren(rowView);
+
+            //缁戝畾鎵嬫満鍙�
+            Button btnTitle = new Button()
+            {
+                X = Application.GetRealWidth(16),
+                Width = Application.GetRealWidth(180),
+                TextColor = CSS_Color.FirstLevelTitleColor,
+                TextSize = CSS_FontSize.SubheadingFontSize,
+                TextAlignment = TextAlignment.CenterLeft,
+                TextID = titleId,
+            };
+            rowView.AddChidren(btnTitle);
+
+            etContent = new EditText()
+            {
+                Width = Application.GetRealWidth(359),
+                TextColor = CSS_Color.PromptingColor1,
+                TextSize = CSS_FontSize.TextFontSize,
+                TextAlignment = TextAlignment.CenterRight,
+                Foucs = true
+            };
+            rowView.AddChidren(etContent);
+
+            btnBind = new Button()
+            {
+                Y = Application.GetRealHeight(213),
+                Gravity = Gravity.CenterHorizontal,
+                Width = Application.GetRealWidth(220),
+                Height = Application.GetRealWidth(44),
+                BackgroundColor = CSS_Color.MainColor,
+                TextAlignment = TextAlignment.Center,
+                TextColor = CSS_Color.MainBackgroundColor,
+                TextID = StringId.GetVerificationCode,
+                TextSize = CSS_FontSize.SubheadingFontSize,
+                IsBold = true,
+                Radius = (uint)Application.GetRealWidth(22),
+                BorderColor = 0x00000000,
+                BorderWidth = 0,
+            };
+            bodyView.AddChidren(btnBind);
+            #endregion
+        }
+
+        /// <summary>
+        /// 
+        /// </summary>
+        void AddEmailFrameLayout()
+        {
+            #region 濡傛灉鏄偖绠�
+            FrameLayout rowView = new FrameLayout()
+            {
+                Y = Application.GetRealHeight(72),
+                Height = Application.GetRealHeight(50),
+                BackgroundColor = CSS_Color.MainBackgroundColor,
+            };
+            bodyView.AddChidren(rowView);
+
+            //缁戝畾閭
+            Button btnTitle = new Button()
+            {
+                X = Application.GetRealWidth(16),
+                Width = Application.GetRealWidth(180),
+                TextColor = CSS_Color.FirstLevelTitleColor,
+                TextSize = CSS_FontSize.SubheadingFontSize,
+                TextAlignment = TextAlignment.CenterLeft,
+                TextID = titleId,
+            };
+            rowView.AddChidren(btnTitle);
+
+            etContent = new EditText()
+            {
+                Width = Application.GetRealWidth(359),
+                TextColor = CSS_Color.PromptingColor1,
+                TextSize = CSS_FontSize.TextFontSize,
+                TextAlignment = TextAlignment.CenterRight,
+                Foucs = true
+            };
+            rowView.AddChidren(etContent);
+
+            btnBind = new Button()
+            {
+                Y = Application.GetRealHeight(213),
+                Gravity = Gravity.CenterHorizontal,
+                Width = Application.GetRealWidth(220),
+                Height = Application.GetRealWidth(44),
+                BackgroundColor = CSS_Color.MainColor,
+                TextAlignment = TextAlignment.Center,
+                TextColor = CSS_Color.MainBackgroundColor,
+                TextID = StringId.GetVerificationCode,
+                TextSize = CSS_FontSize.SubheadingFontSize,
+                IsBold = true,
+                Radius = (uint)Application.GetRealWidth(22),
+                BorderColor = 0x00000000,
+                BorderWidth = 0,
+            };
+            bodyView.AddChidren(btnBind);
+            #endregion
+        }
+
+    }
+
+
+    //--------------------------------------------
+    public partial class NewBindAccountPage
+    {
+        /// <summary>
+        /// 鐐瑰嚮鑾峰彇楠岃瘉鐮�
+        /// </summary>
+        void LoadEvent_GetVerification(Button button)
+        {
+            button.MouseUpEventHandler = (sender, e) =>
+            {
+                if (button.Text == Language.StringByID(StringId.GetVerificationCode))
+                {
+                    Application.HideSoftInput();
+                    var account = etContent.Text.Trim();
+
+                    //濡傛灉鏄崲缁戞娴嬫槸鍚︾浉鍚屽笎鍙�
+                    if (isModifyBind)
+                    {
+                        if (isPhone)
+                        {
+                            if(account == UserInfo.Current.userMobileInfo)
+                            {
+                                //鎻愮ず鎹㈢粦甯愬彿鐩稿悓
+                                Utlis.ShowTip(Language.StringByID(StringId.EntryNewPhone));
+                                return;
+                            }
+                        }
+                        else
+                        {
+                            if (account == UserInfo.Current.userEmailInfo)
+                            {
+                                //鎻愮ず鎹㈢粦甯愬彿鐩稿悓
+                                Utlis.ShowTip(Language.StringByID(StringId.EntryNewEmail));
+                                return;
+                            }
+
+                        }
+                    }
+
+
+                    #region 姝e垯琛ㄨ揪寮�
+                    //1.妫�娴嬭处鍙锋槸鍚﹀悎娉�
+                    if (!isPhone)
+                    {
+                        if (!Utlis.CheckEmail(account))
+                        {
+                            Utlis.ShowTip(Language.StringByID(StringId.PlsEntryCorrectEmailAddress));
+                            return;
+                        }
+                    }
+                    else
+                    {
+                        if (!Utlis.CheckPhoneNumber(account, phoneZoneCode))
+                        {
+                            Utlis.ShowTip(Language.StringByID(StringId.PlsEntryCorrectMobilNeumber));
+                            return;
+                        }
+                    }
+                    #endregion
+                    int time = 0;
+                    //2.妫�楠岄�氳繃
+                    new Thread(() =>
+                    {
+                        //2.2  鑾峰彇楠岃瘉鐮�
+                        ResponsePackNew resultObj;
+                        if (!isPhone)//閭
+                        {
+                            resultObj = new HttpServerRequest().VerificationCodeSend(VerifyType.REGISTER_USER_SYSTEM, account);
+                        }
+                        else
+                        {
+                            resultObj = new HttpServerRequest().VerificationCodeSend(VerifyType.REGISTER_USER_SYSTEM, account, true, phoneZoneCode);
+                        }
+
+                        if (resultObj.Code != StateCode.SUCCESS)
+                        {
+                            // 鎻愮ず閿欒
+                            IMessageCommon.Current.ShowErrorInfoAlter(resultObj.Code);
+                        }
+                        else
+                        {
+                            if (time == 0)
+                            {
+                                time = 60;
+                                new Thread(() =>
+                                {
+                                    while (time > 0)
+                                    {
+                                        time--;
+                                        Application.RunOnMainThread(() =>
+                                        {
+                                            button.Text = time.ToString() + "s";
+                                        });
+                                        Thread.Sleep(1000);
+                                    }
+                                    Application.RunOnMainThread(() =>
+                                    {
+                                        button.IsSelected = true;
+                                        button.TextID = StringId.GetVerificationCode;
+                                        button.BackgroundColor = CSS_Color.MainColor;
+                                        time = 0;
+                                    });
+                                })
+                                { IsBackground = true }.Start();
+                            }
+                            Application.RunOnMainThread(() =>
+                            {
+                                button.BackgroundColor = CSS_Color.PromptingColor1;
+                                var vcp = new NewBindVerificationCodePage();
+                                vcp.PhoneZoneCode = phoneZoneCode;
+                                MainPage.BasePageView.AddChidren(vcp);
+                                vcp.LoadPage(action, titleId, account, isPhone, time, isModifyBind);
+                                MainPage.BasePageView.PageIndex = MainPage.BasePageView.ChildrenCount - 1;
+                            });
+                        }
+
+                    })
+                    { IsBackground = true }.Start();
+                }
+
+            };
+        }
+    }
+}
diff --git a/HDL_ON/UI/UI2/4-PersonalCenter/AccountBindInfo/VerificationCodePage.cs b/HDL_ON/UI/UI2/4-PersonalCenter/AccountBindInfo/NewBindVerificationCodePage.cs
similarity index 72%
copy from HDL_ON/UI/UI2/4-PersonalCenter/AccountBindInfo/VerificationCodePage.cs
copy to HDL_ON/UI/UI2/4-PersonalCenter/AccountBindInfo/NewBindVerificationCodePage.cs
index 858578d..3b501fe 100644
--- a/HDL_ON/UI/UI2/4-PersonalCenter/AccountBindInfo/VerificationCodePage.cs
+++ b/HDL_ON/UI/UI2/4-PersonalCenter/AccountBindInfo/NewBindVerificationCodePage.cs
@@ -2,10 +2,14 @@
 using Shared;
 using HDL_ON.UI.CSS;
 using System.Threading;
+using HDL_ON.DAL.Server;
 
 namespace HDL_ON.UI
 {
-    public partial class VerificationCodePage :FrameLayout
+    /// <summary>
+    /// 鏂扮粦瀹氭垨鑰呮崲缁�--楠岃瘉鐮侀獙璇佸苟缁戝畾
+    /// </summary>
+    public partial class NewBindVerificationCodePage : FrameLayout
     {
         FrameLayout bodyView;
 
@@ -31,41 +35,68 @@
 
         Button btnResend;
 
+        Button btnTip;
+
         Action<string> action;
+
         int titleId;
 
-        /// <summary>
-        /// 鎿嶄綔鐩爣绫诲瀷 1:閭锛�2:鎵嬫満
-        /// </summary>
-        int optionType;
+        ///// <summary>
+        ///// 鎿嶄綔鐩爣绫诲瀷 1:閭锛�2:鎵嬫満
+        ///// </summary>
+        //int optionType;
         /// <summary>
         /// 鍊掕鏃舵椂闂�
         /// </summary>
         int time = 0;
-        public VerificationCodePage()
+        /// <summary>
+        /// 鏄惁鎵嬫満
+        /// </summary>
+        bool isPhone;
+        /// <summary>
+        /// 鏄惁鎹㈢粦
+        /// </summary>
+        bool isModifyBind;
+
+        /// <summary>
+        /// 鏂扮粦瀹氱殑璐﹀彿
+        /// </summary>
+        string verAccount;
+        /// <summary>
+        /// 鎵嬫満鍖哄彿
+        /// </summary>
+        public string PhoneZoneCode = "86";
+
+
+        public NewBindVerificationCodePage()
         {
             bodyView = this;
         }
-        /// <summary>
-        /// 
+
         /// </summary>
         /// <param name="act">鍥炴帀鍑芥暟</param>
         /// <param name="tId">椤甸潰鏍囬</param>
-        /// <param name="ot">鎿嶄綔绫诲瀷1:閭锛�2:鎵嬫満</param>
-        /// <param name="time">鍊掕鏃舵椂闂�</param>
-        public void LoadPage(Action<string> act,int tId,int ot,int t)
+        /// <param name="account">璐﹀彿</param>
+        /// <param name="bPhone">鏄惁鎵嬫満</param>
+        /// <param name="t">鍊掕鏃舵椂闂�</param>
+        /// <param name="isModifyBind">鏄惁涓轰慨鏀圭粦瀹�</param>
+        public void LoadPage(Action<string> act, int tId, string account, bool bPhone, int t,  bool isModifyBind)
         {
             action = act;
             titleId = tId;
             bodyView.BackgroundColor = CSS_Color.BackgroundColor;
-            optionType = ot;
+            isPhone = bPhone;
             time = t;
+            this.verAccount = account;
+            this.isModifyBind = isModifyBind;
+
             Action backAction = () => {
                 Application.HideSoftInput();
+                BackConfirmAction();
             };
-            new TopViewDiv(bodyView, Language.StringByID(tId)).LoadTopView(backAction);
+            new TopViewDiv(bodyView, Language.StringByID(tId), false).LoadTopView(backAction);
 
-            Button btnTip = new Button()
+            btnTip = new Button()
             {
                 Y = Application.GetRealHeight(64),
                 Height = Application.GetRealHeight(84),
@@ -237,7 +268,7 @@
                 Y = Application.GetRealHeight(276),
                 Gravity = Gravity.CenterHorizontal,
                 Width = Application.GetRealWidth(220),
-                Height = Application.GetRealHeight(44),
+                Height = Application.GetRealWidth(44),
                 SelectedBackgroundColor = CSS_Color.MainColor,
                 BackgroundColor = CSS_Color.PromptingColor1,
                 TextAlignment = TextAlignment.Center,
@@ -259,7 +290,7 @@
 
 
     //---------------------------------------------
-    public partial class VerificationCodePage
+    public partial class NewBindVerificationCodePage
     {
         /// <summary>
         /// 楠岃瘉鐮佽緭鍏ュ彉鍖栦簨浠�
@@ -489,36 +520,16 @@
                             {
                                 act = new PublicAssmebly().TipLoadingMsgDialog(Language.StringByID(StringId.SavingPleaseWait));
                             });
-                            var verAccount = optionType == 1 ? MainPage.LoginUser.userEmailInfo : MainPage.LoginUser.userMobileInfo;
-                            var response = new DAL.Server.HttpServerRequest().ValidatorCode(verAccount, etCode, MainPage.LoginUser.areaCode);
-                            if (response.StateCode.ToUpper() == "SUCCESS")
+                          
+                            var resultObj = new HttpServerRequest().BindAccount(verAccount, etCode, isPhone);
+                            if (resultObj == StateCode.SUCCESS)
                             {
                                 result = true;
                             }
                             else
                             {
-                                string erorrInfo = "";
-                                switch (response.StateCode)
-                                {
-                                    case "ValidCodeAndPhoneNoEqual"://楠岃瘉鐮侀敊璇�
-                                        erorrInfo = Language.StringByID(StringId.VerificationCodeWrong);
-                                        break;
-                                    case "NoRecord":
-                                        erorrInfo = Language.StringByID(StringId.PlsGetTheVerificationCode);
-                                        break;
-                                    default:
-                                        erorrInfo = "Server error";
-                                        break;
-                                }
-                                Application.RunOnMainThread(() =>
-                                {
-                                    new Tip()
-                                    {
-                                        CloseTime = 1,
-                                        Direction = AMPopTipDirection.None,
-                                        Text = erorrInfo,
-                                    }.Show(bodyView);
-                                });
+                                //澶辫触鎻愮ず
+                                IMessageCommon.Current.ShowErrorInfoAlter(resultObj);
                             }
                             Application.RunOnMainThread(() =>
                             {
@@ -526,99 +537,9 @@
                             });
                             if (result)
                             {
-                                //Application.RunOnMainThread(() =>
-                                //{
-                                //    new PublicAssmebly().TipMsgAutoClose(Language.StringByID(StringId.ValidationSuccessful), true);
-                                //});
-                                //Thread.Sleep(1600);
-                                Application.RunOnMainThread(() =>
-                                {
-                                    MainPage.BasePageView.GetChildren(MainPage.BasePageView.ChildrenCount - 1).RemoveFromParent();
-                                    //MainPage.BasePageView.RemoveAt(MainPage.BasePageView.ChildrenCount - 1);
-                                    if (titleId == StringId.ModifyBindingEmail)
-                                    {
-                                        LoadEvent_SkipBindAccountInfoPage(StringId.BindEmail);
-                                    }
-                                    else if (titleId == StringId.ModifyBindingPhone)
-                                    {
-                                        LoadEvent_SkipBindAccountInfoPage(StringId.BindPhone);
-                                    }
-                                    else if (titleId == StringId.UnbindEmail)//瑙i櫎缁戝畾閭
-                                    {
-                                        var account = "";
-                                        new Thread(() =>
-                                        {
-                                            var result2 = new DAL.Server.HttpServerRequest().BindAccount(account);
-                                            if (result2 == "SUCCESS")
-                                            {
-                                                Application.RunOnMainThread(() =>
-                                                {
-                                                    MainPage.LoginUser.userEmailInfo = account;
-                                                    var page = new OperationResultDisPalyPage();
-                                                    page.Show();
-                                                    page.LoadPage(true, Language.StringByID(StringId.UnbindEmail), Language.StringByID(StringId.UnbindEmailSuccess), "");
-
-                                                    for (int i = 0; i < 2; i++)
-                                                    {
-                                                        MainPage.BasePageView.GetChildren(MainPage.BasePageView.ChildrenCount - 1).RemoveFromParent();
-                                                    }
-                                                    action(account);
-                                                });
-                                            }
-                                            else
-                                            {
-                                                Application.RunOnMainThread(() =>
-                                                {
-                                                    new Tip()
-                                                    {
-                                                        CloseTime = 1,
-                                                        Direction = AMPopTipDirection.None,
-                                                        Text = Language.StringByID(StringId.OperationFailed),
-                                                    }.Show(bodyView);
-                                                });
-                                            }
-                                        })
-                                        { IsBackground = true }.Start();
-                                    }
-                                    else if (titleId == StringId.UnbindPhone)
-                                    {
-                                        var account = "";
-                                        new Thread(() =>
-                                        {
-                                            var result2 = new DAL.Server.HttpServerRequest().BindAccount(account);
-                                            if (result2 == "SUCCESS")
-                                            {
-                                                Application.RunOnMainThread(() =>
-                                                {
-                                                    MainPage.LoginUser.userEmailInfo = account;
-                                                    var page = new OperationResultDisPalyPage();
-                                                    page.Show();
-                                                    page.LoadPage(true, Language.StringByID(StringId.UnbindPhone), Language.StringByID(StringId.UnbindPhoneSuccess), "");
-
-                                                    for (int i = 0; i < 2; i++)
-                                                    {
-                                                        MainPage.BasePageView.GetChildren(MainPage.BasePageView.ChildrenCount - 1).RemoveFromParent();
-                                                    }
-                                                    action(account);
-                                                });
-                                            }
-                                            else
-                                            {
-                                                Application.RunOnMainThread(() =>
-                                                {
-                                                    new Tip()
-                                                    {
-                                                        CloseTime = 1,
-                                                        Direction = AMPopTipDirection.None,
-                                                        Text = Language.StringByID(StringId.OperationFailed),
-                                                    }.Show(bodyView);
-                                                });
-                                            }
-                                        })
-                                        { IsBackground = true }.Start();
-
-                                    }
-                                });
+                                //缁戝畾鎴愬姛
+                                BindSuccess();
+                     
                             }
                         })
                         { IsBackground = true }.Start();
@@ -627,6 +548,80 @@
                 }
             };
         }
+
+        /// <summary>
+        /// 缁戝畾鎴愬姛
+        /// </summary>
+        void BindSuccess()
+        {
+            Application.RunOnMainThread(() =>
+            {
+                var tipTitle = "";
+                var tipMsg = "";
+                if (isPhone)
+                {
+                     UserInfo.Current.userMobileInfo = verAccount;
+                    //璇蜂娇鐢ㄦ柊鐨勬墜鏈鸿处鍙风櫥褰旳PP
+                    tipMsg = Language.StringByID(StringId.PleaseLoginWithNewMobileAccount);
+                    if (isModifyBind)
+                    {
+                        //鐧诲綍鎵嬫満淇敼瀹屾垚
+                        tipTitle = Language.StringByID(StringId.LoginMobileAccountModificationCompleted);
+                    }
+                    else
+                    {
+                        //鐧诲綍鎵嬫満缁戝畾瀹屾垚
+                        tipTitle = Language.StringByID(StringId.LoginMobileAccountBindCompleted);
+                    }
+                }
+                else
+                {
+                     UserInfo.Current.userEmailInfo = verAccount;
+                    //璇蜂娇鐢ㄦ柊鐨勯偖绠辫处鍙风櫥褰旳PP
+                    tipMsg = Language.StringByID(StringId.PleaseLoginWithNewEmailAccount);
+                    if (isModifyBind)
+                    {
+                        //鐧诲綍閭淇敼瀹屾垚
+                        tipTitle = Language.StringByID(StringId.LoginEmailAccountModificationCompleted);
+                    }
+                    else
+                    {
+                        //鐧诲綍閭缁戝畾瀹屾垚
+                        tipTitle = Language.StringByID(StringId.LoginEmailAccountBindCompleted);
+
+                    }
+                }
+
+                var page = new OperationResultDisPalyPage();
+                page.Show();
+                page.LoadPage(true, Language.StringByID(titleId), tipTitle, tipMsg);
+
+                if (isModifyBind)
+                {
+                    ClosePageWithCount(3);
+                }
+                else
+                {
+                    ClosePageWithCount(2);
+                }
+               
+                action(verAccount);
+            });
+        }
+
+        /// <summary>
+        /// 鎸囧畾鍏抽棴椤甸潰涓暟
+        /// </summary>
+        /// <param name="countPage"></param>
+        void ClosePageWithCount(int countPage)
+        {
+            //鍏抽棴澶氬皯涓〉闈�
+            for (int i = 0; i < countPage; i++)
+            {
+                MainPage.BasePageView.GetChildren(MainPage.BasePageView.ChildrenCount - 1).RemoveFromParent();
+            }
+        }
+
         /// <summary>
         /// 閲嶅彂楠岃瘉鐮佺瓑寰呯嚎绋�
         /// </summary>
@@ -639,14 +634,18 @@
                 time = 60;
                 new Thread(() =>
                 {
-                    if (optionType == 1)
+                    //2.2  鑾峰彇楠岃瘉鐮�
+                    ResponsePackNew resultObj;
+                    if (!isPhone)//閭
                     {
-                        var result = new DAL.Server.HttpServerRequest().GetLoginVerCode(MainPage.LoginUser.userEmailInfo);
+                        resultObj = new HttpServerRequest().VerificationCodeSend(VerifyType.REGISTER_USER_SYSTEM, verAccount);
                     }
-                    else if (optionType == 2)
+                    else
                     {
-                        var result = new DAL.Server.HttpServerRequest().GetLoginVerCode(MainPage.LoginUser.userMobileInfo);
+                        resultObj = new HttpServerRequest().VerificationCodeSend(VerifyType.REGISTER_USER_SYSTEM, verAccount, true, PhoneZoneCode);
                     }
+
+
                 })
                 { IsBackground = true }.Start();
             }
@@ -670,6 +669,7 @@
             })
             { IsBackground = true }.Start();
         }
+
         /// <summary>
         /// 閲嶅彂楠岃瘉鐮佷簨浠�
         /// </summary>
@@ -679,15 +679,33 @@
                 LoadThread_SendVerCode();
             };
         }
+
         /// <summary>
-        /// 璺宠浆缁戝畾璐﹀彿淇℃伅浜嬩欢
+        /// 杩斿洖浜屾纭浜嬩欢
         /// </summary>
-        void LoadEvent_SkipBindAccountInfoPage(int skipTid)
+        void BackConfirmAction()
         {
-            var vcp = new BindAccountPage();
-            MainPage.BasePageView.AddChidren(vcp);
-            vcp.LoadPage(action,skipTid);
-            MainPage.BasePageView.PageIndex = MainPage.BasePageView.ChildrenCount - 1;
+            //楠岃瘉鐮佸彂閫佹垚鍔燂紝浜屾纭閫�鍑�
+            if (btnTip.TextID == StringId.VerificationCodePrompt)
+            {
+                Action cancelAction = () =>
+                {
+                    if (bodyView != null)
+                    {
+                        bodyView.RemoveFromParent();
+                    }
+                };
+                new ConfirmDialog().ShowDialog(StringId.Tip, StringId.VerificationCodeMayBeDelayed, null, cancelAction, StringId.ReturnStr, StringId.WaitAMoment);
+            }
+            else
+            {
+                //鐩存帴鍏抽棴
+                if (bodyView != null)
+                {
+                    bodyView.RemoveFromParent();
+                }
+            }
         }
+       
     }
 }
diff --git a/HDL_ON/UI/UI2/4-PersonalCenter/GetSupport/FAQHelpPage.cs b/HDL_ON/UI/UI2/4-PersonalCenter/GetSupport/FAQHelpPage.cs
new file mode 100644
index 0000000..35c79c2
--- /dev/null
+++ b/HDL_ON/UI/UI2/4-PersonalCenter/GetSupport/FAQHelpPage.cs
@@ -0,0 +1,287 @@
+锘縰sing System;
+using Shared;
+using HDL_ON.UI.CSS;
+
+namespace HDL_ON.UI
+{
+    /// <summary>
+    /// 鑾峰彇鏀寔-甯歌闂椤甸潰
+    /// </summary>
+    public class FAQHelpPage : FrameLayout
+    {
+        /// <summary>
+        /// 
+        /// </summary>
+        FrameLayout bodyView;
+        /// <summary>
+        /// 鎼滅储椤甸潰
+        /// </summary>
+        FrameLayout searchView;
+        /// <summary>
+        /// 鑿滃崟鎸夐挳
+        /// </summary>
+        Button btnMenu;
+        /// <summary>
+        /// 鐢佃瘽鎸夐挳
+        /// </summary>
+        Button btnTelephone;
+        /// <summary>
+        /// 鍙戦�佷俊鎭寜閽�
+        /// </summary>
+        Button btnSendMes;
+
+
+        /// <summary>
+        /// 鑿滃崟鎸夐挳鏄惁灞曞紑
+        /// </summary>
+        bool isbtnMenuOpen;
+
+        public FAQHelpPage()
+        {
+            bodyView = this;
+        }
+
+        public void LoadPage()
+        {
+            bodyView.BackgroundColor = CSS_Color.BackgroundColor;
+            new TopViewDiv(bodyView, Language.StringByID(StringId.GetSupport)).LoadTopView();
+
+            //鎼滅储鎸夐挳
+            searchView = new FrameLayout()
+            {
+                X = Application.GetRealWidth(16),
+                Y = Application.GetRealHeight(76),
+                Height = Application.GetRealHeight(28),
+                Width = Application.GetRealWidth(343),
+                Radius = (uint)Application.GetRealHeight(6),
+                BackgroundColor = CSS_Color.MainBackgroundColor,
+            };
+            bodyView.AddChidren(searchView);
+
+            ImageView searchImage = new ImageView()
+            {
+                Width = Application.GetRealWidth(20),
+                Height = Application.GetRealWidth(20),
+                Gravity = Gravity.Center,
+                ImagePath = "PersonalCenter/Support/Search.png"
+            };
+            searchView.AddChidren(searchImage);
+
+            #region Help
+            var helpView = new FrameLayout()
+            {
+                Y = Application.GetRealHeight(112),
+                Height = Application.GetRealHeight(208),
+                BackgroundColor = CSS_Color.MainBackgroundColor,
+
+            };
+            bodyView.AddChidren(helpView);
+
+            var helpTip = new Button()
+            {
+                X = Application.GetRealWidth(16),
+                Y = Application.GetRealHeight(10),
+                Height = Application.GetRealHeight(28),
+                TextAlignment = TextAlignment.CenterLeft,
+                TextColor = CSS_Color.FirstLevelTitleColor,
+                TextSize = CSS_FontSize.SubheadingFontSize,
+                Width = Application.GetRealWidth(200),
+                TextID = StringId.WhatCanWeDoForYou
+            };
+            helpView.AddChidren(helpTip);
+
+            #region 鍔熻兘闂
+            var functionView = new ListIconCellView()
+            {
+                Y = Application.GetRealHeight(58),
+            };
+            helpView.AddChidren(functionView);
+            functionView.BtnTilte.TextID = StringId.FunctionalQuestion;
+            functionView.BtnIcon.UnSelectedImagePath = "PersonalCenter/Support/Function.png";
+
+            Action functionAction = () =>
+            {
+                OpenQuestionListPage(1);
+            };
+            functionView.GoAction = functionAction;
+            #endregion
+
+            #region 鍦烘櫙闂
+            var sceneView = new ListIconCellView()
+            {
+                Y = functionView.Bottom,
+            };
+            helpView.AddChidren(sceneView);
+            sceneView.BtnTilte.TextID = StringId.SceneQuestion;
+            sceneView.BtnIcon.UnSelectedImagePath = "PersonalCenter/Support/Scene.png";
+
+            Action sceneAction = () =>
+            {
+                OpenQuestionListPage(2);
+            };
+            sceneView.GoAction = functionAction;
+            #endregion
+
+            #region APP浣跨敤闂
+            var appUseView = new ListIconCellView()
+            {
+                Y = sceneView.Bottom,
+            };
+            helpView.AddChidren(appUseView);
+            appUseView.BtnTilte.TextID = StringId.AppUsageAssistance;
+            appUseView.BtnIcon.UnSelectedImagePath = "PersonalCenter/Support/Help.png";
+            appUseView.LineView.RemoveFromParent();
+
+            Action appUseAction = () =>
+            {
+                OpenQuestionListPage(3);
+            };
+            appUseView.GoAction = appUseAction;
+            #endregion
+            #endregion
+
+
+            #region question View
+            int qY = Application.GetRealHeight(328);
+            var questionView = new FrameLayout()
+            {
+                Y = qY,
+                Height = bodyView.Height - qY,
+                BackgroundColor = CSS_Color.MainBackgroundColor,
+            };
+            bodyView.AddChidren(questionView);
+
+            var questionTitle = new Button()
+            {
+                X = Application.GetRealWidth(16),
+                Y = Application.GetRealHeight(10),
+                Height = Application.GetRealHeight(28),
+                TextAlignment = TextAlignment.CenterLeft,
+                TextColor = CSS_Color.FirstLevelTitleColor,
+                TextSize = CSS_FontSize.SubheadingFontSize,
+                Width = Application.GetRealWidth(200),
+                Text = Language.StringByID(StringId.CommonQuestion) + ":"
+            };
+            questionView.AddChidren(questionTitle);
+            #endregion
+
+            #region 鍔熻兘鎸夐挳
+            btnMenu = new Button()
+            {
+                Y = Application.GetRealHeight(542),
+                X = Application.GetRealWidth(302),
+                Width = Application.GetRealWidth(58),
+                Height = Application.GetRealWidth(58),
+                UnSelectedImagePath = "PersonalCenter/Support/Menu.png",
+                SelectedImagePath = "PersonalCenter/Support/Close.png",
+            };
+            bodyView.AddChidren(btnMenu);
+
+            EventHandler<MouseEventArgs> eventHandler = (sender, e) =>
+            {
+                isbtnMenuOpen = !isbtnMenuOpen;
+                SetMenuButtonState(isbtnMenuOpen);
+            };
+            btnMenu.MouseUpEventHandler = eventHandler;
+
+            btnTelephone = new Button()
+            {
+                Y = Application.GetRealHeight(494),
+                X = Application.GetRealWidth(274),
+                Width = Application.GetRealWidth(58),
+                Height = Application.GetRealWidth(58),
+                UnSelectedImagePath = "PersonalCenter/Support/Telephone.png",
+                Visible = false,
+            };
+            bodyView.AddChidren(btnTelephone);
+
+            btnTelephone.MouseUpEventHandler = (sender, e) =>
+            {
+                OpenGetSupportPage();
+            };
+
+            btnSendMes = new Button()
+            {
+                Y = Application.GetRealHeight(590),
+                X = Application.GetRealWidth(274),
+                Width = Application.GetRealWidth(58),
+                Height = Application.GetRealWidth(58),
+                UnSelectedImagePath = "PersonalCenter/Support/SendMessage.png",
+                Visible = false,
+            };
+            bodyView.AddChidren(btnSendMes);
+
+            btnSendMes.MouseUpEventHandler = (sender, e) =>
+            {
+                OpenGetSupportPage();
+            };
+
+            #endregion
+
+
+        }
+
+
+
+        /// <summary>
+        /// 鏄惁灞曞紑
+        /// </summary>
+        /// <param name="isOpen"></param>
+        void SetMenuButtonState(bool isOpen)
+        {
+            btnMenu.IsSelected = isOpen;
+            btnTelephone.Visible = isOpen;
+            btnSendMes.Visible = isOpen;
+
+
+            if (isOpen)
+            {
+                //灞曞紑
+
+            }
+            else
+            {
+                //鍏抽棴闅愯棌
+
+            }
+
+        }
+
+        /// <summary>
+        /// 鎵撳紑闂鍒楄〃椤甸潰
+        /// </summary>
+        /// <param name="questionType">1:鍔熻兘闂 2:鍦烘櫙闂 3:APP浣跨敤杈呭姪</param>
+        void OpenQuestionListPage(int questionType)
+        {
+            int titleId = 0;
+            if (questionType == 1)
+            {
+                titleId = StringId.FunctionalQuestion;
+            }
+            else if (questionType == 2)
+            {
+                titleId = StringId.SceneQuestion;
+            }
+            else if (questionType == 3)
+            {
+                titleId = StringId.AppUsageAssistance;
+            }
+
+            var mPage = new QuestionListPage();
+            MainPage.BasePageView.AddChidren(mPage);
+            mPage.LoadPage(titleId);
+            MainPage.BasePageView.PageIndex = MainPage.BasePageView.ChildrenCount - 1;
+        }
+
+        /// <summary>
+        /// 鎵撳紑鑾峰彇鏀寔鐢佃瘽椤甸潰
+        /// </summary>
+        void OpenGetSupportPage()
+        {
+            var mPage = new GetSupportPage();
+            MainPage.BasePageView.AddChidren(mPage);
+            mPage.LoadPage();
+            MainPage.BasePageView.PageIndex = MainPage.BasePageView.ChildrenCount - 1;
+        }
+    }
+}
diff --git a/HDL_ON/UI/UI2/4-PersonalCenter/GetSupportPage.cs b/HDL_ON/UI/UI2/4-PersonalCenter/GetSupport/GetSupportPage.cs
similarity index 92%
rename from HDL_ON/UI/UI2/4-PersonalCenter/GetSupportPage.cs
rename to HDL_ON/UI/UI2/4-PersonalCenter/GetSupport/GetSupportPage.cs
index ecbaae2..d9b916d 100644
--- a/HDL_ON/UI/UI2/4-PersonalCenter/GetSupportPage.cs
+++ b/HDL_ON/UI/UI2/4-PersonalCenter/GetSupport/GetSupportPage.cs
@@ -4,10 +4,19 @@
 
 namespace HDL_ON.UI
 {
+    /// <summary>
+    /// 鑾峰彇鏀寔鐢佃瘽椤甸潰
+    /// </summary>
     public class GetSupportPage : FrameLayout
     {
-
+        /// <summary>
+        /// 
+        /// </summary>
         FrameLayout bodyView;
+
+        /// <summary>
+        /// 
+        /// </summary>
         public GetSupportPage()
         {
             bodyView = this;
@@ -73,7 +82,7 @@
                 TextAlignment = TextAlignment.CenterLeft,
                 TextSize = CSS_FontSize.TextFontSize,
                 TextColor = CSS_Color.FirstLevelTitleColor,
-                Text = "hdltickets@hdlautomation.com",
+                Text = Constant.SUPPORT_EMAIL,
             };
             emailRow.AddChidren(btnEmailText);
             emailRow.AddChidren(new Button() { X = Application.GetRealWidth(16), Y = Application.GetRealWidth(49), Height = Application.GetRealHeight(1), BackgroundColor = CSS_Color.DividingLineColor });
diff --git a/HDL_ON/UI/UI2/4-PersonalCenter/GetSupport/QuestionListPage.cs b/HDL_ON/UI/UI2/4-PersonalCenter/GetSupport/QuestionListPage.cs
new file mode 100644
index 0000000..c6527b6
--- /dev/null
+++ b/HDL_ON/UI/UI2/4-PersonalCenter/GetSupport/QuestionListPage.cs
@@ -0,0 +1,66 @@
+锘縰sing System;
+using Shared;
+using HDL_ON.UI.CSS;
+
+namespace HDL_ON.UI
+{
+    /// <summary>
+    /// 闂鍒楄〃椤甸潰
+    /// 鍔熻兘闂銆佸満鏅棶棰樸�丄PP浣跨敤杈呭姪
+    /// </summary>
+    public class QuestionListPage : FrameLayout
+    {
+        /// <summary>
+        /// bodyView
+        /// </summary>
+        FrameLayout bodyView;
+        /// <summary>
+        /// 褰撳墠
+        /// </summary>
+        VerticalScrolViewLayout bodyScrolView;
+        /// <summary>
+        /// emptyTipView
+        /// </summary>
+        EmptyTipView emptyTipView;
+
+        /// <summary>
+        /// 
+        /// </summary>
+        public QuestionListPage()
+        {
+            bodyView = this;
+        }
+
+        /// <summary>
+        /// 鍔犺浇鏄剧ず缃戦〉
+        /// </summary>
+        /// <param name="titleId"></param>
+        public void LoadPage(int titleId)
+        {
+            new TopViewDiv(bodyView, Language.StringByID(titleId)).LoadTopView();
+
+            int bodyY = Application.GetRealHeight(64);
+            bodyScrolView = new VerticalScrolViewLayout()
+            {
+                Y = bodyY,
+                Height = bodyView.Height - bodyY,
+                BackgroundColor = CSS_Color.MainBackgroundColor,
+            };
+            bodyView.AddChidren(bodyScrolView);
+
+            AddEmptyTipView();
+        }
+
+        /// <summary>
+        /// 娣诲姞鍐呭涓虹┖鎻愮ず椤甸潰
+        /// </summary>
+        void AddEmptyTipView()
+        {
+            emptyTipView = new EmptyTipView()
+            {
+                Gravity = Gravity.Center
+            };
+            bodyView.AddChidren(emptyTipView);
+        }
+    }
+}
diff --git a/HDL_ON/UI/UI2/4-PersonalCenter/MemberManagement/AddMemberScanPage.cs b/HDL_ON/UI/UI2/4-PersonalCenter/MemberManagement/AddMemberScanPage.cs
index 8f420ab..80b04df 100644
--- a/HDL_ON/UI/UI2/4-PersonalCenter/MemberManagement/AddMemberScanPage.cs
+++ b/HDL_ON/UI/UI2/4-PersonalCenter/MemberManagement/AddMemberScanPage.cs
@@ -70,7 +70,7 @@
                 Gravity = Gravity.CenterHorizontal,
                 Y = Application.GetRealHeight(244),
                 Width = Application.GetRealWidth(220),
-                Height = Application.GetRealHeight(44),
+                Height = Application.GetRealWidth(44),
                 Radius = (uint)Application.GetRealWidth(22),
                 BorderWidth = 0,
                 BorderColor = 0x00000000,
diff --git a/HDL_ON/UI/UI2/4-PersonalCenter/MemberManagement/AddMemberScanPageBLL.cs b/HDL_ON/UI/UI2/4-PersonalCenter/MemberManagement/AddMemberScanPageBLL.cs
index d7a21ed..84f568d 100644
--- a/HDL_ON/UI/UI2/4-PersonalCenter/MemberManagement/AddMemberScanPageBLL.cs
+++ b/HDL_ON/UI/UI2/4-PersonalCenter/MemberManagement/AddMemberScanPageBLL.cs
@@ -1,4 +1,5 @@
 锘縰sing System;
+using HDL_ON.DAL.Server;
 using Shared;
 
 namespace HDL_ON.UI
@@ -26,52 +27,65 @@
                     TipDivMsg(Language.StringByID(StringId.PlsEntryAccount));
                     return;
                 }
-                var result = new DAL.Server.HttpServerRequest().BindResidenceMemberAccount(memberAccount, "");
-                switch(result.StateCode)
+                var result = new HttpServerRequest().BindResidenceMemberAccount(memberAccount, memberAccount);
+                if(result.Code == StateCode.SUCCESS)
                 {
-                    //(1)Success 鍒欒皟鐢ㄦ鎺ュ彛鎴愬姛
-                    case "Success":
-                        backAction?.Invoke();
-                        this.RemoveFromParent();
-                        var page = new OperationResultDisPalyPage();
-                        page.Show();
-                        page.LoadPage(true, Language.StringByID(StringId.AddMember), Language.StringByID(StringId.WelcomeNewMmember), "");
-                        break;
-                    //(2)ParameterOrEmpty 鎻愪緵鐨勫弬鏁伴敊璇紝璇︽儏瑙丒rrorInfo瀛楁
-                    case "ParameterOrEmpty":
-                    //(3)NoLogin,鍒欏搷搴斿瓧娈典腑[ErrorInfo]涓洪敊璇俊鎭负[鏃犳晥鐧诲綍Token!]
-                    case "NoLogin":
-                        TipDivMsg(Language.StringByID(StringId.DataExceptionPleaseTryAgain));
-                        break;
-                    //(4)AccountNoExists 瀛愯处鍙锋湭娉ㄥ唽锛岃缁戝畾宸叉敞鍐岀殑瀛愯处鍙�!
-                    case "AccountNoExists":
-                        TipDivMsg(Language.StringByID(StringId.FailedToAddTheMemberAccountIsNotRegistered));
-                        break;
-                    //(5)SameAccount,涓嶈兘娣诲姞鑷繁涓哄瓙璐﹀彿!
-                    case "SameAccount":
-                        TipDivMsg(Language.StringByID(StringId.FailedToAddUnableToAddYourself));
-                        break;
-                    //(6)NoExist 鐢ㄦ埛涓嶅瓨鍦ㄦ浣忓畢
-                    case "NoExist":
-                        TipDivMsg(Language.StringByID(StringId.ThisHomeDoesNotExistForTheUser));
-                        break;
-                    //(7)Exist 璐﹀彿宸插瓨鍦ㄦ浣忓畢
-                    case "Exist":
-                        TipDivMsg(Language.StringByID(StringId.MemberAccountHasBeenAddedAndCannotBeAddedAgain));
-                        break;
-                    //(8)Fail 鎿嶄綔澶辫触
-                    case "Fail":
-                        TipDivMsg(Language.StringByID(StringId.OperationFailed));
-                        break;
-                    //(9)BeRestrict 鏉冮檺涓嶈冻
-                    case "BeRestrict":
-                        TipDivMsg(Language.StringByID(StringId.AddFailedInsufficientPermissions));
-                        break;
-                    //(10)NoAddMainAccount 涓嶈兘缁戝畾涓昏处鍙�
-                    case "NoAddMainAccount":
-
-                        break;
+                    backAction?.Invoke();
+                    this.RemoveFromParent();
+                    var page = new OperationResultDisPalyPage();
+                    page.Show();
+                    page.LoadPage(true, Language.StringByID(StringId.AddMember), Language.StringByID(StringId.WelcomeNewMmember), "");
                 }
+                else
+                {
+                    IMessageCommon.Current.ShowErrorInfoAlter(result.Code);
+                }
+
+                //switch (result.Code)
+                //{
+                //    //(1)Success 鍒欒皟鐢ㄦ鎺ュ彛鎴愬姛
+                //    case "Success":
+                //        backAction?.Invoke();
+                //        this.RemoveFromParent();
+                //        var page = new OperationResultDisPalyPage();
+                //        page.Show();
+                //        page.LoadPage(true, Language.StringByID(StringId.AddMember), Language.StringByID(StringId.WelcomeNewMmember), "");
+                //        break;
+                //    //(2)ParameterOrEmpty 鎻愪緵鐨勫弬鏁伴敊璇紝璇︽儏瑙丒rrorInfo瀛楁
+                //    case "ParameterOrEmpty":
+                //    //(3)NoLogin,鍒欏搷搴斿瓧娈典腑[ErrorInfo]涓洪敊璇俊鎭负[鏃犳晥鐧诲綍Token!]
+                //    case "NoLogin":
+                //        TipDivMsg(Language.StringByID(StringId.DataExceptionPleaseTryAgain));
+                //        break;
+                //    //(4)AccountNoExists 瀛愯处鍙锋湭娉ㄥ唽锛岃缁戝畾宸叉敞鍐岀殑瀛愯处鍙�!
+                //    case "AccountNoExists":
+                //        TipDivMsg(Language.StringByID(StringId.FailedToAddTheMemberAccountIsNotRegistered));
+                //        break;
+                //    //(5)SameAccount,涓嶈兘娣诲姞鑷繁涓哄瓙璐﹀彿!
+                //    case "SameAccount":
+                //        TipDivMsg(Language.StringByID(StringId.FailedToAddUnableToAddYourself));
+                //        break;
+                //    //(6)NoExist 鐢ㄦ埛涓嶅瓨鍦ㄦ浣忓畢
+                //    case "NoExist":
+                //        TipDivMsg(Language.StringByID(StringId.ThisHomeDoesNotExistForTheUser));
+                //        break;
+                //    //(7)Exist 璐﹀彿宸插瓨鍦ㄦ浣忓畢
+                //    case "Exist":
+                //        TipDivMsg(Language.StringByID(StringId.MemberAccountHasBeenAddedAndCannotBeAddedAgain));
+                //        break;
+                //    //(8)Fail 鎿嶄綔澶辫触
+                //    case "Fail":
+                //        TipDivMsg(Language.StringByID(StringId.OperationFailed));
+                //        break;
+                //    //(9)BeRestrict 鏉冮檺涓嶈冻
+                //    case "BeRestrict":
+                //        TipDivMsg(Language.StringByID(StringId.AddFailedInsufficientPermissions));
+                //        break;
+                //    //(10)NoAddMainAccount 涓嶈兘缁戝畾涓昏处鍙�
+                //    case "NoAddMainAccount":
+
+                //        break;
+                //}
             };
         }
 
diff --git a/HDL_ON/UI/UI2/4-PersonalCenter/MemberManagement/ChooseShareMemberTargetListPage.cs b/HDL_ON/UI/UI2/4-PersonalCenter/MemberManagement/ChooseShareMemberTargetListPage.cs
index f72ed24..9b58b29 100644
--- a/HDL_ON/UI/UI2/4-PersonalCenter/MemberManagement/ChooseShareMemberTargetListPage.cs
+++ b/HDL_ON/UI/UI2/4-PersonalCenter/MemberManagement/ChooseShareMemberTargetListPage.cs
@@ -77,7 +77,7 @@
                 Y = Application.GetRealHeight(519 + 64),
                 Gravity = Gravity.CenterHorizontal,
                 Width = Application.GetRealWidth(220),
-                Height = Application.GetRealHeight(44),
+                Height = Application.GetRealWidth(44),
                 BackgroundColor = CSS_Color.MainColor,
                 TextAlignment = TextAlignment.Center,
                 TextColor = CSS_Color.MainBackgroundColor,
diff --git a/HDL_ON/UI/UI2/4-PersonalCenter/MemberManagement/ChooseShareMemberTargetListPageBLL.cs b/HDL_ON/UI/UI2/4-PersonalCenter/MemberManagement/ChooseShareMemberTargetListPageBLL.cs
index 1539479..d3bf8f2 100644
--- a/HDL_ON/UI/UI2/4-PersonalCenter/MemberManagement/ChooseShareMemberTargetListPageBLL.cs
+++ b/HDL_ON/UI/UI2/4-PersonalCenter/MemberManagement/ChooseShareMemberTargetListPageBLL.cs
@@ -95,7 +95,7 @@
                     {
                         foreach (var f in addFuns)
                         {
-                            var sd = member.CurResidenceShareDate.Find((obj) => obj.ShareName == f.ShareName);
+                            var sd = member.CurResidenceShareDate.Find((obj) => obj.fileName == f.fileName);
                             //濡傛灉璇ュ姛鑳藉凡缁忓垎浜紝鏇存柊鍘熸湁鐨勬暟鎹�
                             if (null != sd)
                             {
@@ -104,7 +104,7 @@
                             }
                             else//濡傛灉璇ュ姛鑳芥湭琚垎浜紝鍒欐柊澧炲垎浜�
                             {
-                                f.SubAccountDistributedMark = member.SubAccountDistributedMark;
+                                f.childAccountId = member.childAccountId;
                                 result = LoadMethod_AddShareData(f);
                             }
                             if (!result)
@@ -144,16 +144,20 @@
         bool LoadMethod_AddShareData(ShareData ssdd)
         {
             //澧炲姞鍏变韩鏁版嵁鐩綍
-            ResponsePack responePack = new HttpServerRequest().AddShareData(ssdd);
-            if (responePack.StateCode.ToUpper() != "SUCCESS")
+            var responePack = new HttpServerRequest().AddShareData(ssdd);
+            if (responePack.Code.ToUpper() != "SUCCESS")
             {
                 return false;
             }
             else
             {
-                ssdd.DistributedMark = responePack.ResponseData.ToString();
-                // 鏇存柊鍏变韩鏁版嵁
-                return EditShareData(ssdd);
+                //ssdd.id = responePack.ResponseData.ToString();
+                var responeObj = Newtonsoft.Json.JsonConvert.DeserializeObject<ShareData>(responePack.Data.ToString());
+                ssdd.id = responeObj.id;
+                //2020-11-22 
+                return true;
+                //// 鏇存柊鍏变韩鏁版嵁
+                //return EditShareData(ssdd);
             }
         }
 
@@ -162,8 +166,8 @@
         /// </summary>
         bool EditShareData(ShareData sd)
         {
-            ResponsePack responePack = new HttpServerRequest().EditShareData(sd);
-            if (responePack.StateCode.ToUpper() == "SUCCESS")
+            var responePack = new HttpServerRequest().EditShareData(sd);
+            if (responePack.Code == StateCode.SUCCESS)
             {
                 return true;
             }
@@ -179,10 +183,10 @@
         /// <param name="info"></param>
         void LoadMethod_GetMemberSharedDataList(ResidenceMemberInfo info)
         {
-            ResponsePack responePack = new HttpServerRequest().GetShareDataByMemberAccount(info.SubAccountDistributedMark);
-            if (responePack.StateCode.ToUpper() == "SUCCESS")
+            var responePack = new HttpServerRequest().GetShareDataByMemberAccount(info.childAccountId);
+            if (responePack.Code == StateCode.SUCCESS)
             {
-                var responeObj = Newtonsoft.Json.JsonConvert.DeserializeObject<List<ShareData>>(responePack.ResponseData.ToString());
+                var responeObj = Newtonsoft.Json.JsonConvert.DeserializeObject<List<ShareData>>(responePack.Data.ToString());
                 info.CurResidenceShareDate = responeObj;
             }
         }
@@ -193,13 +197,13 @@
         bool LoadMethod_GetResidenceMemberAccount()
         {
             var result = false;
-            ResponsePack responePack = new HttpServerRequest().GetResidenceMemberAccount();
-            if (responePack.StateCode.ToUpper() == "SUCCESS")
+            var responePack = new HttpServerRequest().GetResidenceMemberAccount();
+            if (responePack.Code == StateCode.SUCCESS)
             {
-                memberList = Newtonsoft.Json.JsonConvert.DeserializeObject<List<ResidenceMemberInfo>>(responePack.ResponseData.ToString());
+                memberList = Newtonsoft.Json.JsonConvert.DeserializeObject<List<ResidenceMemberInfo>>(responePack.Data.ToString());
                 foreach (var mInfo in memberList)
                 {
-                    ResponsePack memberInfoResponePack = new HttpServerRequest().GetResidenceMemberAccountInfo(mInfo.Account);
+                    ResponsePack memberInfoResponePack = new HttpServerRequest().GetResidenceMemberAccountInfo(mInfo.childAccountId);
                     var dataStr = JObject.FromObject(memberInfoResponePack.ResponseData);
                     FileStream fs = null;
                     try
@@ -207,7 +211,7 @@
                         var headImageString = dataStr.GetValue("HeadImage").ToString();
                         var jsonString = Newtonsoft.Json.JsonConvert.SerializeObject(headImageString);
                         var headImageBytes = Newtonsoft.Json.JsonConvert.DeserializeObject<byte[]>(jsonString);
-                        var filePath = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.Personal) + "/", mInfo.DistributedMark + ".png");
+                        var filePath = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.Personal) + "/", mInfo.childAccountId + ".png");
                         fs = new FileStream(filePath, FileMode.Create, FileAccess.Write);
                         fs.Write(headImageBytes, 0, headImageBytes.Length);
                         fs.Flush();
@@ -231,37 +235,12 @@
             //澶辫触
             else
             {
-                string tipStr = "Sever erorr";
-                switch (responePack.StateCode)
-                {
-                    case "ValidCodeAndPhoneNoEqual":
-                        tipStr = Language.StringByID(StringId.VerificationCodeError);
-                        break;
-                    case "USERNAMEORPWDERROR":
-                        tipStr = Language.StringByID(StringId.LoginFailed_AccountOrPasswordError);
-                        break;
-                    case "ACCOUNTNOEXISTS":
-                        tipStr = Language.StringByID(StringId.ACCOUNTNOEXISTS);
-                        break;
-                    case "NoRecord":
-                        tipStr = Language.StringByID(StringId.PlsGetTheVerificationCode);
-                        break;
-                    case "Self:Net_Error":
-                        tipStr = Language.StringByID(StringId.NetworkAnomaly);
-                        break;
-                }
+                //鎻愮ず
+                IMessageCommon.Current.ShowErrorInfoAlter(responePack.Code);
                 //璐﹀彿鎴栬�呭瘑鐮侀敊璇�
                 Application.RunOnMainThread(() =>
                 {
                     waitPage.Hide();
-                    //鎻愮ず鍘熷洜
-                    var tip = new Tip()
-                    {
-                        Text = tipStr,
-                        CloseTime = 1,
-                        Direction = AMPopTipDirection.None
-                    };
-                    tip.Show(bodyView);
                 });
             }
             Application.RunOnMainThread(() =>
diff --git a/HDL_ON/UI/UI2/4-PersonalCenter/MemberManagement/MemberFunctionPermissionPage.cs b/HDL_ON/UI/UI2/4-PersonalCenter/MemberManagement/MemberFunctionPermissionPage.cs
index 534477a..5d38e92 100644
--- a/HDL_ON/UI/UI2/4-PersonalCenter/MemberManagement/MemberFunctionPermissionPage.cs
+++ b/HDL_ON/UI/UI2/4-PersonalCenter/MemberManagement/MemberFunctionPermissionPage.cs
@@ -119,7 +119,7 @@
                 Y = Application.GetRealHeight(519 + 64),
                 Gravity = Gravity.CenterHorizontal,
                 Width = Application.GetRealWidth(220),
-                Height = Application.GetRealHeight(44),
+                Height = Application.GetRealWidth(44),
                 BackgroundColor = CSS_Color.MainColor,
                 TextAlignment = TextAlignment.Center,
                 TextColor = CSS_Color.MainBackgroundColor,
@@ -180,7 +180,7 @@
                     Tag = "ChooseIcon"
                 };
                 roomView.AddChidren(btnChoose);
-                if (shareDatas.Find((obj) => obj.ShareName == function.sid) != null)
+                if (shareDatas.Find((obj) => obj.fileName == function.sid) != null)
                 {
                     btnChoose.IsSelected = true;
                 }
diff --git a/HDL_ON/UI/UI2/4-PersonalCenter/MemberManagement/MemberFunctionPermissionPageBLL.cs b/HDL_ON/UI/UI2/4-PersonalCenter/MemberManagement/MemberFunctionPermissionPageBLL.cs
index ad3c548..b5838b4 100644
--- a/HDL_ON/UI/UI2/4-PersonalCenter/MemberManagement/MemberFunctionPermissionPageBLL.cs
+++ b/HDL_ON/UI/UI2/4-PersonalCenter/MemberManagement/MemberFunctionPermissionPageBLL.cs
@@ -38,7 +38,7 @@
                         }
                         foreach (var f in funs_New)
                         {
-                            var sd = funs.Find((obj) => obj.ShareName == f.ShareName);
+                            var sd = funs.Find((obj) => obj.fileName == f.fileName);
                             //濡傛灉璇ュ姛鑳藉凡缁忓垎浜紝鏇存柊鍘熸湁鐨勬暟鎹�
                             if (null != sd)
                             {
@@ -96,14 +96,15 @@
         bool LoadMethod_AddShareData(ShareData ssdd)
         {
             //澧炲姞鍏变韩鏁版嵁鐩綍
-            ResponsePack responePack = new HttpServerRequest().AddShareData(ssdd);
-            if (responePack.StateCode.ToUpper() != "SUCCESS")
+            var responePack = new HttpServerRequest().AddShareData(ssdd);
+            if (responePack.Code != StateCode.SUCCESS)
             {
                 return false;
             }
             else
             {
-                ssdd.DistributedMark = responePack.ResponseData.ToString();
+                var responeObj = Newtonsoft.Json.JsonConvert.DeserializeObject<ShareData>(responePack.Data.ToString());
+                ssdd.id = responeObj.id;
                 // 鏇存柊鍏变韩鏁版嵁
                 return EditShareData(ssdd);
             }
@@ -114,8 +115,8 @@
         /// <param name="function"></param>
         bool LoadMethod_DelSharedData(ShareData sd)
         {
-            ResponsePack responePack = new HttpServerRequest().DeleteShareData(sd);
-            if (responePack.StateCode.ToUpper() != "SUCCESS")
+            var responePack = new HttpServerRequest().DeleteShareData(sd);
+            if (responePack.Code != StateCode.SUCCESS)
             {
                 return false;
             }
@@ -130,8 +131,8 @@
         /// </summary>
         bool EditShareData(ShareData sd)
         {
-            ResponsePack responePack = new HttpServerRequest().EditShareData(sd);
-            if (responePack.StateCode.ToUpper() == "SUCCESS")
+            var responePack = new HttpServerRequest().EditShareData(sd);
+            if (responePack.Code == StateCode.SUCCESS)
             {
                 return true;
             }
@@ -146,7 +147,7 @@
             EventHandler<MouseEventArgs> eventHandler = (sender, e) =>
             {
                 btnChoose.IsSelected = !btnChoose.IsSelected;
-                var sd = funs.Find((obj) => obj.ShareName == function.sid);
+                var sd = funs.Find((obj) => obj.fileName == function.sid);
                 if (btnChoose.IsSelected)
                 {
                     try
@@ -165,16 +166,16 @@
                         else
                         {
                             var newSd = new ShareData();
-                            newSd.ShareName = function.sid;
-                            newSd.HouseDistributedMark = DB_ResidenceData.residenceData.residecenInfo.RegionID;
+                            newSd.fileName = function.sid;
+                            newSd.homeId = DB_ResidenceData.residenceData.residecenInfo.RegionID;
                             newSd.ShareDataBytes = System.Text.Encoding.UTF8.GetBytes(Newtonsoft.Json.JsonConvert.SerializeObject(function));
-                            newSd.SubAccountDistributedMark = memberInfo.SubAccountDistributedMark;
+                            newSd.childAccountId = memberInfo.childAccountId;
                             funs_New.Add(newSd);
                         }
                         btnChooseAll.IsSelected = true;
                         foreach (var f in room.GetRoomFunctions(false))
                         {
-                            if (funs_New.Find((obj) => obj.ShareName == f.sid) == null)
+                            if (funs_New.Find((obj) => obj.fileName == f.sid) == null)
                             {
                                 btnChooseAll.IsSelected = false;
                                 break;
@@ -188,7 +189,7 @@
                 }
                 else
                 {
-                    var onFuns = funs_New.Find((obj) => obj.ShareName == function.sid);
+                    var onFuns = funs_New.Find((obj) => obj.fileName == function.sid);
                     if (funs_New.Contains(onFuns))
                     {
                         funs_New.Remove(onFuns);
@@ -223,10 +224,10 @@
                     foreach(var f in room.GetRoomFunctions(false))
                     {
                         var ssdd = new ShareData();
-                        ssdd.ShareName = f.sid;
-                        ssdd.HouseDistributedMark = DB_ResidenceData.residenceData.residecenInfo.RegionID;
+                        ssdd.fileName = f.sid;
+                        ssdd.homeId = DB_ResidenceData.residenceData.residecenInfo.RegionID;
                         ssdd.ShareDataBytes = System.Text.Encoding.UTF8.GetBytes(Newtonsoft.Json.JsonConvert.SerializeObject(f));
-                        ssdd.SubAccountDistributedMark = memberInfo.SubAccountDistributedMark;
+                        ssdd.childAccountId = memberInfo.childAccountId;
                         funs_New.Add(ssdd);
                     }
                 }
@@ -234,7 +235,7 @@
                 {
                     foreach(var f in room.GetRoomFunctions(false))
                     {
-                        var sd = funs.Find((obj) => obj.ShareName == f.sid);
+                        var sd = funs.Find((obj) => obj.fileName == f.sid);
                         if (sd != null)
                         {
                             funs_Del.Add(sd);
diff --git a/HDL_ON/UI/UI2/4-PersonalCenter/MemberManagement/MemberManagementPage.cs b/HDL_ON/UI/UI2/4-PersonalCenter/MemberManagement/MemberManagementPage.cs
index e2cf6b9..0527019 100644
--- a/HDL_ON/UI/UI2/4-PersonalCenter/MemberManagement/MemberManagementPage.cs
+++ b/HDL_ON/UI/UI2/4-PersonalCenter/MemberManagement/MemberManagementPage.cs
@@ -132,7 +132,7 @@
                     TextColor = CSS_Color.FirstLevelTitleColor,
                     TextSize = CSS_FontSize.TextFontSize,
                     IsBold = true,
-                    Text = memberInfo.UserName
+                    Text = memberInfo.nickName
                 };
                 view1.AddChidren(btnMemberName);
 
@@ -182,7 +182,7 @@
                     TextAlignment = TextAlignment.CenterRight,
                     TextColor = CSS_Color.PromptingColor1,
                     TextSize = CSS_FontSize.TextFontSize,
-                    Text = memberInfo.Nickname
+                    Text = memberInfo.nickName
                 };
                 view2.AddChidren(btnNickname);
 
@@ -285,7 +285,7 @@
                     Height = Application.GetMinRealAverage(38),
                     UnSelectedImagePath = "Public/Switch_2.png",
                     SelectedImagePath = "Public/SwitchOn_2.png",
-                    IsSelected = memberInfo.IsAllowCreateScene
+                    IsSelected = memberInfo.isAllowCreateScene
                 };
                 view4.AddChidren(btnCreateSceneRight);
 
diff --git a/HDL_ON/UI/UI2/4-PersonalCenter/MemberManagement/MemberManagementPageBLL.cs b/HDL_ON/UI/UI2/4-PersonalCenter/MemberManagement/MemberManagementPageBLL.cs
index 5e9e8e3..e8b73b7 100644
--- a/HDL_ON/UI/UI2/4-PersonalCenter/MemberManagement/MemberManagementPageBLL.cs
+++ b/HDL_ON/UI/UI2/4-PersonalCenter/MemberManagement/MemberManagementPageBLL.cs
@@ -63,31 +63,31 @@
         bool LoadMethod_GetResidenceMemberAccount()
         {
             var result = false;
-            ResponsePack responePack = new HttpServerRequest().GetResidenceMemberAccount();
-            if (responePack.StateCode.ToUpper() == "SUCCESS")
+            var responePack = new HttpServerRequest().GetResidenceMemberAccount();
+            if (responePack.Code == StateCode.SUCCESS)
             {
-                var responeObj = Newtonsoft.Json.JsonConvert.DeserializeObject<List<ResidenceMemberInfo>>(responePack.ResponseData.ToString());
+                var responeObj = Newtonsoft.Json.JsonConvert.DeserializeObject<List<ResidenceMemberInfo>>(responePack.Data.ToString());
                 foreach (var mInfo in responeObj)
                 {
-                    ResponsePack memberInfoResponePack = new HttpServerRequest().GetResidenceMemberAccountInfo(mInfo.Account);
-                    var dataStr = JObject.FromObject(memberInfoResponePack.ResponseData);
-                    FileStream fs = null;
+                    //ResponsePack memberInfoResponePack = new HttpServerRequest().GetResidenceMemberAccountInfo(mInfo.childAccountId);
+                    //var dataStr = JObject.FromObject(memberInfoResponePack.ResponseData);
+                    //FileStream fs = null;
                     try
                     {
-                        var headImageString = dataStr.GetValue("HeadImage").ToString();
-                        if (!string.IsNullOrEmpty(headImageString))
+                        //var headImageString = dataStr.GetValue("HeadImage").ToString();
+                        //if (!string.IsNullOrEmpty(headImageString))
+                        //{
+                        //    var jsonString = Newtonsoft.Json.JsonConvert.SerializeObject(headImageString);
+                        //    var headImageBytes = Newtonsoft.Json.JsonConvert.DeserializeObject<byte[]>(jsonString);
+                        //    var filePath = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.Personal) + "/", mInfo.childAccountId + ".png");
+                        //    fs = new FileStream(filePath, FileMode.Create, FileAccess.Write);
+                        //    fs.Write(headImageBytes, 0, headImageBytes.Length);
+                        //    fs.Flush();
+                        //    mInfo.headImagePagePath = filePath;
+                        //}
+                        if(string.IsNullOrEmpty(mInfo.nickName))
                         {
-                            var jsonString = Newtonsoft.Json.JsonConvert.SerializeObject(headImageString);
-                            var headImageBytes = Newtonsoft.Json.JsonConvert.DeserializeObject<byte[]>(jsonString);
-                            var filePath = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.Personal) + "/", mInfo.DistributedMark + ".png");
-                            fs = new FileStream(filePath, FileMode.Create, FileAccess.Write);
-                            fs.Write(headImageBytes, 0, headImageBytes.Length);
-                            fs.Flush();
-                            mInfo.headImagePagePath = filePath;
-                        }
-                        if(string.IsNullOrEmpty(mInfo.Nickname))
-                        {
-                            mInfo.Nickname = mInfo.UserName;
+                            mInfo.nickName = mInfo.UserName;
                         }
                     }
                     catch (Exception ex)
@@ -96,11 +96,11 @@
                     }
                     finally
                     {
-                        if (fs != null)
-                        {
-                            fs.Close();
-                        }
-                        //-----------鑾峰彇浣忓畢涓嬪瓙璐﹀彿鐨勫叡浜暟鎹垪琛�
+                        //if (fs != null)
+                        //{
+                        //    fs.Close();
+                        //}
+                        ////-----------鑾峰彇浣忓畢涓嬪瓙璐﹀彿鐨勫叡浜暟鎹垪琛�
                         LoadMethod_GetMemberSharedDataList(mInfo);
                     }
                     residenceMemberInfos.Add(mInfo);
@@ -110,37 +110,12 @@
             //澶辫触
             else
             {
-                string tipStr = "Sever erorr";
-                switch (responePack.StateCode)
-                {
-                    case "ValidCodeAndPhoneNoEqual":
-                        tipStr = Language.StringByID(StringId.VerificationCodeError);
-                        break;
-                    case "USERNAMEORPWDERROR":
-                        tipStr = Language.StringByID(StringId.LoginFailed_AccountOrPasswordError);
-                        break;
-                    case "ACCOUNTNOEXISTS":
-                        tipStr = Language.StringByID(StringId.ACCOUNTNOEXISTS);
-                        break;
-                    case "NoRecord":
-                        tipStr = Language.StringByID(StringId.PlsGetTheVerificationCode);
-                        break;
-                    case "Self:Net_Error":
-                        tipStr = Language.StringByID(StringId.NetworkAnomaly);
-                        break;
-                }
+                //鎻愮ず
+                IMessageCommon.Current.ShowErrorInfoAlter(responePack.Code);
                 //璐﹀彿鎴栬�呭瘑鐮侀敊璇�
                 Application.RunOnMainThread(() =>
                 {
                     waitPage.Hide();
-                    //鎻愮ず鍘熷洜
-                    var tip = new Tip()
-                    {
-                        Text = tipStr,
-                        CloseTime = 1,
-                        Direction = AMPopTipDirection.None
-                    };
-                    tip.Show(bodyView);
                 });
             }
             Application.RunOnMainThread(() =>
@@ -156,10 +131,10 @@
         /// <param name="info"></param>
         void LoadMethod_GetMemberSharedDataList(ResidenceMemberInfo info)
         {
-            ResponsePack responePack = new HttpServerRequest().GetShareDataByMemberAccount(info.SubAccountDistributedMark);
-            if (responePack.StateCode.ToUpper() == "SUCCESS")
+            var responePack = new HttpServerRequest().GetShareDataByMemberAccount(info.childAccountId);
+            if (responePack.Code == StateCode.SUCCESS)
             {
-                var responeObj = Newtonsoft.Json.JsonConvert.DeserializeObject<List<ShareData>>(responePack.ResponseData.ToString());
+                var responeObj = Newtonsoft.Json.JsonConvert.DeserializeObject<List<ShareData>>(responePack.Data.ToString());
                 info.CurResidenceShareDate = responeObj;
                 foreach (var sd in info.CurResidenceShareDate)
                 {
@@ -174,10 +149,10 @@
         /// <param name="info"></param>
         bool LoadMethod_GetMemberSharedData(ShareData sd)
         {
-            ResponsePack responePack = new HttpServerRequest().GetShareData(sd.DistributedMark,sd.HouseDistributedMark);
-            if (responePack.StateCode.ToUpper() == "SUCCESS")
+            var shareDataBytes = new HttpServerRequest().GetShareData(sd);
+            if (shareDataBytes != null)
             {
-                sd.ShareDataBytes =  Newtonsoft.Json.JsonConvert.DeserializeObject<ShareData>(responePack.ResponseData.ToString()).ShareDataBytes;
+                sd.ShareDataBytes = shareDataBytes;
                 return true;
             }
             return false;
@@ -209,37 +184,18 @@
                     {
                         try
                         {
-                            var responsePack = new HttpServerRequest().EditSubAccountNickName(str,mInfo.SubAccountDistributedMark);
-                            if (responsePack.StateCode.ToUpper() == "SUCCESS")
+                            var responsePack = new HttpServerRequest().EditSubAccountNickName(str, mInfo.childAccountId);
+                            if (responsePack.Code.ToUpper() == StateCode.SUCCESS)
                             {
                                 Application.RunOnMainThread(() =>
                                 {
                                     btn1.Text = str;
                                 });
-                                mInfo.Nickname = str;
+                                mInfo.nickName = str;
                             }
                             else
                             {
-                                var tipStr = "Server erorr";
-                                switch (responsePack.StateCode)
-                                {
-                                    case "NoLogin":
-                                        tipStr = Language.StringByID(StringId.InvalidLoginCertificate);
-                                        break;
-                                    case "ParameterOrEmpty":
-                                        break;
-                                }
-                                Application.RunOnMainThread(() =>
-                                {
-                                    //鎻愮ず鍘熷洜
-                                    var tip = new Tip()
-                                    {
-                                        Text = tipStr,
-                                        CloseTime = 1,
-                                        Direction = AMPopTipDirection.None
-                                    };
-                                    tip.Show(bodyView);
-                                });
+                                IMessageCommon.Current.ShowErrorInfoAlter(responsePack.Code);
                             }
                         }
                         catch (Exception ex)
@@ -256,7 +212,7 @@
                     })
                     { IsBackground = true }.Start();
                 };
-                new PublicAssmebly().LoadDialog_EditParater(StringId.ModifyMemberNickname, mInfo.Nickname, callBack, StringId.HouseNameCannotBeEmpty, 0, new List<string>());
+                new PublicAssmebly().LoadDialog_EditParater(StringId.ModifyMemberNickname, mInfo.nickName, callBack, StringId.HouseNameCannotBeEmpty, 0, new List<string>());
             };
             btn1.MouseUpEventHandler = eventHandler;
             btn2.MouseUpEventHandler = eventHandler;
@@ -265,7 +221,7 @@
         /// <summary>
         /// 淇敼鍒涘缓鍦烘櫙鏉冮檺
         /// </summary>
-        void LoadView_ChangeCreateSceneState(Button btn1,Button btn2, ResidenceMemberInfo mInfo)
+        void LoadView_ChangeCreateSceneState(Button btn1, Button btn2, ResidenceMemberInfo mInfo)
         {
             EventHandler<MouseEventArgs> eventHandler = (sender, e) =>
             {
@@ -273,36 +229,18 @@
                 {
                     try
                     {
-                        var responsePack = new HttpServerRequest().ChangeCreateSceneState(DB_ResidenceData.residenceData.residecenInfo.RegionID, mInfo.SubAccountDistributedMark);
-                        if (responsePack.StateCode.ToUpper() == "SUCCESS")
+                        bool isAllow = !btn1.IsSelected;
+                        var responsePack = new HttpServerRequest().ChangeCreateSceneState(isAllow, mInfo.childAccountId);
+                        if (responsePack.Code.ToUpper() == StateCode.SUCCESS)
                         {
                             Application.RunOnMainThread(() =>
                             {
-                                btn1.IsSelected = !btn1.IsSelected;
+                                btn1.IsSelected = isAllow;
                             });
                         }
                         else
                         {
-                            var tipStr = "Server erorr";
-                            switch (responsePack.StateCode)
-                            {
-                                case "NoLogin":
-                                    tipStr = Language.StringByID(StringId.InvalidLoginCertificate);
-                                    break;
-                                case "ParameterOrEmpty":
-                                    break;
-                            }
-                            Application.RunOnMainThread(() =>
-                            {
-                                //鎻愮ず鍘熷洜
-                                var tip = new Tip()
-                                {
-                                    Text = tipStr,
-                                    CloseTime = 1,
-                                    Direction = AMPopTipDirection.None
-                                };
-                                tip.Show(bodyView);
-                            });
+                            IMessageCommon.Current.ShowErrorInfoAlter(responsePack.Code);
                         }
                     }
                     catch (Exception ex)
diff --git a/HDL_ON/UI/UI2/4-PersonalCenter/MemberManagement/MemberPermissionPage.cs b/HDL_ON/UI/UI2/4-PersonalCenter/MemberManagement/MemberPermissionPage.cs
index 5f5ff8a..91a039c 100644
--- a/HDL_ON/UI/UI2/4-PersonalCenter/MemberManagement/MemberPermissionPage.cs
+++ b/HDL_ON/UI/UI2/4-PersonalCenter/MemberManagement/MemberPermissionPage.cs
@@ -54,7 +54,7 @@
                 TextAlignment = TextAlignment.CenterLeft,
                 TextColor = CSS_Color.FirstLevelTitleColor,
                 TextSize = CSS_FontSize.TextFontSize,
-                Text = memberInfo.Nickname + "(" + memberInfo.UserName + ")",
+                Text = memberInfo.nickName + "(" + memberInfo.Account + ")",
             };
             headPortraitView.AddChidren(btnMemberName);
 
@@ -136,7 +136,7 @@
                 int addCount = 0;
                 foreach (var sd in memberInfo.CurResidenceShareDate)
                 {
-                    if (room.GetRoomFunctions(false).Find((obj) => obj.sid == sd.ShareName) != null)
+                    if (room.GetRoomFunctions(false).Find((obj) => obj.sid == sd.fileName) != null)
                     {
                         addCount++;
                     }
@@ -145,7 +145,7 @@
                 for(int i= 0;i< memberInfo.CurResidenceShareDate.Count;)
                 {
                     var sd = memberInfo.CurResidenceShareDate[i];
-                    if (DB_ResidenceData.functionList.GetAllFunction().Find((obj) => obj.sid == sd.ShareName) == null)
+                    if (DB_ResidenceData.functionList.GetAllFunction().Find((obj) => obj.sid == sd.fileName) == null)
                     {
                         new DAL.Server.HttpServerRequest().DeleteShareData(sd);
                         memberInfo.CurResidenceShareDate.Remove(sd);
@@ -226,7 +226,8 @@
             btnDelMember = new Button()
             {
                 Y = Application.GetRealHeight(617),
-                Height = MainPage.Increase ? Application.GetRealHeight(70) : Application.GetRealHeight(50),
+                //Height = MainPage.Increase ? Application.GetRealHeight(70) : Application.GetRealHeight(50),
+                Height = Application.GetRealHeight(50),
                 TextAlignment = TextAlignment.Center,
                 TextSize = CSS_FontSize.SubheadingFontSize,
                 TextColor = CSS_Color.WarningColor,
diff --git a/HDL_ON/UI/UI2/4-PersonalCenter/MemberManagement/MemberPermissionPageBLL.cs b/HDL_ON/UI/UI2/4-PersonalCenter/MemberManagement/MemberPermissionPageBLL.cs
index 3434e53..0763905 100644
--- a/HDL_ON/UI/UI2/4-PersonalCenter/MemberManagement/MemberPermissionPageBLL.cs
+++ b/HDL_ON/UI/UI2/4-PersonalCenter/MemberManagement/MemberPermissionPageBLL.cs
@@ -17,8 +17,8 @@
             {
                 Action action = () =>
                 {
-                    ResponsePack responePack = new HttpServerRequest().DeleteResidenceMemberAccount(memberInfo.SubAccountDistributedMark);
-                    if (responePack.StateCode.ToUpper() == "SUCCESS")
+                    var responePack = new HttpServerRequest().DeleteResidenceMemberAccount(memberInfo);
+                    if (responePack.Code == StateCode.SUCCESS)
                     {
                         this.RemoveFromParent();
                         backAction();
diff --git a/HDL_ON/UI/UI2/4-PersonalCenter/MyQRCodePage.cs b/HDL_ON/UI/UI2/4-PersonalCenter/MyQRCodePage.cs
new file mode 100644
index 0000000..a6eb973
--- /dev/null
+++ b/HDL_ON/UI/UI2/4-PersonalCenter/MyQRCodePage.cs
@@ -0,0 +1,117 @@
+锘縰sing System;
+using HDL_ON.UI.CSS;
+using Shared;
+
+namespace HDL_ON.UI
+{
+    /// <summary>
+    /// 鎴戠殑浜岀淮鐮侀〉闈�
+    /// </summary>
+    public class MyQRCodePage : FrameLayout
+    {
+        FrameLayout bodyView;
+
+        public MyQRCodePage()
+        {
+            bodyView = this;
+        }
+
+        public void LoadPage()
+        {
+            bodyView.BackgroundColor = CSS_Color.BackgroundColor;
+            new TopViewDiv(bodyView, Language.StringByID(StringId.MyQRcode)).LoadTopView();
+
+            int backViewHeight = Application.GetRealHeight(132) + Application.GetRealWidth(266);
+            FrameLayout backView = new FrameLayout()
+            {
+                Y = Application.GetRealHeight(144),
+                X = Application.GetRealWidth(20),
+                Height = backViewHeight,
+                Width = Application.GetRealWidth(335),
+                BackgroundColor = CSS_Color.MainBackgroundColor,
+                Radius = (uint)Application.GetRealWidth(8),
+            };
+            bodyView.AddChidren(backView);
+
+            #region 澶村儚銆佹樀绉般�佸笎鍙�
+            FrameLayout headView = new FrameLayout()
+            {
+                Y = Application.GetRealHeight(16),
+                Height = Application.GetRealHeight(60),
+            };
+            backView.AddChidren(headView);
+
+            ImageView headImage = new ImageView()
+            {
+                X = Application.GetRealWidth(16),
+                Width = Application.GetMinRealAverage(60),
+                Height = Application.GetMinRealAverage(60),
+                Radius = (uint)Application.GetMinRealAverage(30),
+                ImagePath = UserInfo.Current.headImagePagePath,
+            };
+            headView.AddChidren(headImage);
+
+            //鐢ㄦ埛鍚嶇О
+            var btnUserName = new Button()
+            {
+                X = headImage.Right + Application.GetRealWidth(12),
+                Width = Application.GetRealWidth(200),
+                Height = Application.GetRealHeight(30),
+                TextAlignment = TextAlignment.CenterLeft,
+                TextColor = CSS_Color.FirstLevelTitleColor,
+                TextSize = CSS_FontSize.SubheadingFontSize,
+                TextID = StringId.UsersWhoNameIsEmpty,
+                IsBold = true
+            };
+            headView.AddChidren(btnUserName);
+
+            if (!string.IsNullOrEmpty(UserInfo.Current.userName))
+            {
+                btnUserName.Text = UserInfo.Current.userName;
+            }
+
+            //鐢ㄦ埛甯愬彿
+            var btnEmail = new Button()
+            {
+                X = headImage.Right + Application.GetRealWidth(12),
+                Y = btnUserName.Bottom,
+                Height = Application.GetRealHeight(30),
+                TextAlignment = TextAlignment.TopLeft,
+                TextColor = CSS_Color.TextualColor,
+                TextSize = CSS_FontSize.PromptFontSize_FirstLevel,
+                Text = UserInfo.Current.AccountString
+            };
+            headView.AddChidren(btnEmail);
+            #endregion
+
+            //浜岀淮鐮�
+            int codeWidth = Application.GetRealWidth(266);
+            ImageView codeImage = new ImageView()
+            {
+                X = Application.GetRealWidth(35),
+                Y = Application.GetRealHeight(104),
+                Height = codeWidth,
+                Width = codeWidth,
+                ImageBytes = Scan.BytesFromText(UserInfo.Current.AccountString, codeWidth, codeWidth),
+            };
+            backView.AddChidren(codeImage);
+
+            ////浜岀淮鐮佷腑蹇冨ご鍍�
+            //int imageWidth = Application.GetMinRealAverage(60);
+            //int imageX = codeImage.X + (codeWidth - imageWidth) / 2;
+            //int imageY = codeImage.Y + (codeWidth - imageWidth) / 2;
+            //ImageView headImage2 = new ImageView()
+            //{
+            //    X = imageX,
+            //    Y = imageY,
+            //    Width = imageWidth,
+            //    Height = imageWidth,
+            //    ImagePath = UserInfo.Current.headImagePagePath,
+            //    BorderColor = CSS_Color.MainBackgroundColor,
+            //    BorderWidth = (uint)Application.GetRealWidth(2),
+            //    Radius = (uint)Application.GetMinRealAverage(30),
+            //};
+            //backView.AddChidren(headImage2);
+        }
+    }
+}
diff --git a/HDL_ON/UI/UI2/4-PersonalCenter/MyServerInfoPage.cs b/HDL_ON/UI/UI2/4-PersonalCenter/MyServerInfoPage.cs
new file mode 100644
index 0000000..47df8f0
--- /dev/null
+++ b/HDL_ON/UI/UI2/4-PersonalCenter/MyServerInfoPage.cs
@@ -0,0 +1,106 @@
+锘縰sing System;
+using HDL_ON.UI.CSS;
+using Shared;
+using Xamarin.Essentials;
+
+namespace HDL_ON.UI
+{
+    /// <summary>
+    /// 鎴戠殑鏈嶅姟鍣ㄤ俊鎭〉闈�
+    /// </summary>
+    public class MyServerInfoPage : FrameLayout
+    {
+        FrameLayout bodyView;
+
+        public MyServerInfoPage()
+        {
+            bodyView = this;
+        }
+
+        public void LoadPage()
+        {
+            bodyView.BackgroundColor = CSS_Color.MainBackgroundColor;
+            //鏈嶅姟鍣ㄤ俊鎭�
+            new TopViewDiv(bodyView, Language.StringByID(StringId.ServerInformation)).LoadTopView();
+
+            ImageView imageView = new ImageView()
+            {
+                Y = Application.GetMinRealAverage(88),
+                Width = Application.GetMinRealAverage(200),
+                Height = Application.GetMinRealAverage(180),
+                ImagePath = "PersonalCenter/ServerInfo.png",
+                Gravity = Gravity.CenterHorizontal
+            };
+            bodyView.AddChidren(imageView);
+
+            var serverBtn = new Button()
+            {
+                X = Application.GetRealWidth(40),
+                Y = imageView.Bottom + Application.GetRealHeight(12),
+                Width = Application.GetRealWidth(295),
+                Height = Application.GetRealHeight(22),
+                TextAlignment = TextAlignment.CenterLeft,
+                TextColor = CSS_Color.FirstLevelTitleColor,
+                TextSize = CSS_FontSize.SubheadingFontSize,
+                //Text = "褰撳墠璐﹀彿鏈嶅姟鍣ㄦ墍灞烇細涓浗锛屼唬鐮亁xxx",
+                IsBold = true
+
+            };
+            bodyView.AddChidren(serverBtn);
+
+            var tipBtn = new Button()
+            {
+                X = Application.GetRealWidth(40),
+                Y = serverBtn.Bottom + Application.GetRealHeight(12),
+                Width = Application.GetRealWidth(295),
+                Height = Application.GetRealHeight(80),
+                TextAlignment = TextAlignment.TopLeft,
+                TextColor = CSS_Color.FirstLevelTitleColor,
+                TextSize = CSS_FontSize.TextFontSize,
+                //Text = "*鏈嶅姟鍣ㄦ槸鎮ㄥ綋鍓嶄簯绔暟鎹瓨鍌ㄧ殑鎵�鍦ㄥ尯鍩燂紝鏃犻渶蹇呰锛屾垜浠笉寤鸿鍙戠敓杩佺Щ",
+                TextID = StringId.CurrentAccountServerOwnershipTip,
+                IsMoreLines = true
+
+            };
+            bodyView.AddChidren(tipBtn);
+
+            var callBtn = new TextButton()
+            {
+                X = Application.GetRealWidth(40),
+                Y = Application.GetRealHeight(606),
+                Width = Application.GetRealWidth(168),
+                Height = Application.GetRealHeight(22),
+                TextAlignment = TextAlignment.CenterLeft,
+                TextColor = CSS_Color.TextualColor,
+                TextSize = CSS_FontSize.TextFontSize,
+                //Text = "*鑻ラ渶瑕佽縼绉绘湇鍔″櫒锛岃鎷ㄦ墦",
+                TextID = StringId.ToMigrateTheServerPleaseCall,
+
+            };
+            bodyView.AddChidren(callBtn);
+            callBtn.Width = callBtn.GetTextWidth() + Application.GetRealWidth(2);
+
+            var phoneBtn = new TextButton()
+            {
+                X = callBtn.Right + Application.GetRealHeight(2),
+                Y = Application.GetRealHeight(606),
+                Width = Application.GetRealWidth(200),
+                Height = Application.GetRealHeight(22),
+                TextAlignment = TextAlignment.CenterLeft,
+                TextColor = CSS_Color.MainColor,
+                TextSize = CSS_FontSize.SubheadingFontSize,
+                Text = "400-855-8535",
+                IsBold = true
+            };
+            bodyView.AddChidren(phoneBtn);
+
+            phoneBtn.MouseUpEventHandler += (sender, e) =>
+            {
+                PhoneDialer.Open(Constant.SUPPORT_TELEPHONENUMBER);
+            };
+
+            serverBtn.Text = Language.StringByID(StringId.CurrentAccountServerOwnership) + UserInfo.Current.GlobalRegion.regionName;
+
+        }
+    }
+}
diff --git a/HDL_ON/UI/UI2/4-PersonalCenter/PersonalCenterPage.cs b/HDL_ON/UI/UI2/4-PersonalCenter/PersonalCenterPage.cs
index 0a21446..d888782 100644
--- a/HDL_ON/UI/UI2/4-PersonalCenter/PersonalCenterPage.cs
+++ b/HDL_ON/UI/UI2/4-PersonalCenter/PersonalCenterPage.cs
@@ -201,13 +201,13 @@
                 TextAlignment = TextAlignment.Center,
                 TextColor = CSS_Color.FirstLevelTitleColor,
                 TextSize = CSS_FontSize.SubheadingFontSize,
-                Text = string.IsNullOrEmpty(MainPage.LoginUser.userName) ? "涓嶆効鎰忛�忛湶濮撳悕鐨勭敤鎴�" : MainPage.LoginUser.userName
+                Text = string.IsNullOrEmpty( UserInfo.Current.userName) ? Language.StringByID(StringId.UsersWhoNameIsEmpty) :  UserInfo.Current.userName
 
             };
             personalInfoView.AddChidren(btnUserName);
-            if (!string.IsNullOrEmpty(MainPage.LoginUser.userName))
+            if (!string.IsNullOrEmpty( UserInfo.Current.userName))
             {
-                btnUserName.Text = MainPage.LoginUser.userName; ;
+                btnUserName.Text =  UserInfo.Current.userName; ;
             }
             btnEmail = new Button()
             {
@@ -216,7 +216,7 @@
                 TextAlignment = TextAlignment.Center,
                 TextColor = CSS_Color.TextualColor,
                 TextSize = CSS_FontSize.PromptFontSize_FirstLevel,
-                Text = MainPage.LoginUser.accountString
+                Text =  UserInfo.Current.AccountString
             };
             personalInfoView.AddChidren(btnEmail);
 
@@ -227,15 +227,15 @@
                 Width = Application.GetMinRealAverage(84),
                 Height = Application.GetMinRealAverage(84),
                 Radius = (uint)Application.GetMinRealAverage(42),
-                ImagePath = MainPage.LoginUser.headImagePagePath
+                ImagePath =  UserInfo.Current.headImagePagePath
             };
             bodyView.AddChidren(userHeadImageView);
-            //if ( MainPage.LoginUser.headImagePageBytes==null)
+            //if (  UserInfo.Current.headImagePageBytes==null)
             //{
-            //    userHeadImageView.ImagePath = MainPage.LoginUser.headImagePagePath;
+            //    userHeadImageView.ImagePath =  UserInfo.Current.headImagePagePath;
             //}else
             //{
-            //    userHeadImageView.ImageBytes = MainPage.LoginUser.headImagePageBytes;
+            //    userHeadImageView.ImageBytes =  UserInfo.Current.headImagePageBytes;
             //}
 
             #endregion
diff --git a/HDL_ON/UI/UI2/4-PersonalCenter/PersonalCenterPageBLL.cs b/HDL_ON/UI/UI2/4-PersonalCenter/PersonalCenterPageBLL.cs
index 4bcc52c..834db5c 100644
--- a/HDL_ON/UI/UI2/4-PersonalCenter/PersonalCenterPageBLL.cs
+++ b/HDL_ON/UI/UI2/4-PersonalCenter/PersonalCenterPageBLL.cs
@@ -61,10 +61,10 @@
                 };
                 dispalyView.AddChidren(contentView);
 
-                if (MainPage.LoginUser.regionList.Count < 3)
+                if (UserInfo.Current.regionList.Count < 3)
                 {
                 }
-                else if (MainPage.LoginUser.regionList.Count < 4)
+                else if (UserInfo.Current.regionList.Count < 4)
                 {
                     dispalyView = new FrameLayout()
                     {
@@ -79,7 +79,7 @@
                     contentView.Height = Application.GetRealHeight(45 * 3);
                     dispalyView.AddChidren(contentView);
                 }
-                else if (MainPage.LoginUser.regionList.Count < 5)
+                else if (UserInfo.Current.regionList.Count < 5)
                 {
                     dispalyView = new FrameLayout()
                     {
@@ -113,7 +113,7 @@
 
 
 
-                foreach (var home in MainPage.LoginUser.regionList)
+                foreach (var home in UserInfo.Current.regionList)
                 {
                     var btnHomeName = new Button()
                     {
@@ -130,7 +130,7 @@
                     };
                     contentView.AddChidren(btnHomeName);
 
-                    if (MainPage.LoginUser.regionList.IndexOf(home) < MainPage.LoginUser.regionList.Count - 1)
+                    if (UserInfo.Current.regionList.IndexOf(home) < UserInfo.Current.regionList.Count - 1)
                     {
                         contentView.AddChidren(new Button()
                         {
@@ -145,7 +145,7 @@
                         var regionId = (string)btnHomeName.Tag;
                         dialog.Close();
                         //DB_ResidenceData.residenceData.CurReginID = regionId;
-                        LoadEvent_ChangeCurHome(MainPage.LoginUser.regionList.Find((obj) => obj.RegionID == regionId));
+                        LoadEvent_ChangeCurHome(UserInfo.Current.regionList.Find((obj) => obj.RegionID == regionId));
                         LoadContentView();
                     };
                 }
@@ -208,7 +208,7 @@
                     }
                     //鍊掑嚭鏂颁綇瀹呮暟鎹�
                     FileUtils.RestoreRegionFiles(newRegionRootPath);
-                    MainPage.LoginUser.SaveUserInfo();
+                    UserInfo.Current.SaveUserInfo();
                     DB_ResidenceData.residenceData.EixtAccount();
                     DB_ResidenceData.residenceData.CurReginID = homeTemp.RegionID;
                     OnAppConfig.Instance.SaveUserConfig();
@@ -270,11 +270,11 @@
             {
                 Action updataHeadImage = () =>
                 {
-                    userHeadImageView.ImagePath = MainPage.LoginUser.headImagePagePath;
+                    userHeadImageView.ImagePath = UserInfo.Current.headImagePagePath;
                 };
                 Action updataUserName = () =>
                 {
-                    btnUserName.Text = MainPage.LoginUser.userName;
+                    btnUserName.Text = UserInfo.Current.userName;
                 };
 
                 var personalDataView = new PersonalDataPage(updataHeadImage, updataUserName);
@@ -292,7 +292,8 @@
         #region 鎴愬憳绠$悊
         void LoadEvent_GoMemberManagement()
         {
-            EventHandler<MouseEventArgs> eHandler = (sender, e) => {
+            EventHandler<MouseEventArgs> eHandler = (sender, e) =>
+            {
                 var mmp = new MemberManagementPage();
                 MainPage.BasePageView.AddChidren(mmp);
                 mmp.LoadPage();
@@ -307,7 +308,8 @@
         #region 娣诲姞璁惧
         void LoadEvent_SkipbtnAddFunctionPage()
         {
-            EventHandler<MouseEventArgs> eventHandler = (sender, e) => {
+            EventHandler<MouseEventArgs> eventHandler = (sender, e) =>
+            {
                 var page = new SearchDevicePage();
                 MainPage.BasePageView.AddChidren(page);
                 page.LoadPage();
@@ -339,7 +341,13 @@
         {
             btnSupportText.MouseUpEventHandler = (sender, e) =>
             {
-                var getsupportPage = new GetSupportPage();
+                //var getsupportPage = new GetSupportPage();
+                //MainPage.BasePageView.AddChidren(getsupportPage);
+                //getsupportPage.LoadPage();
+                //MainPage.BasePageView.PageIndex = MainPage.BasePageView.ChildrenCount - 1;
+
+                
+                var getsupportPage = new FAQHelpPage();
                 MainPage.BasePageView.AddChidren(getsupportPage);
                 getsupportPage.LoadPage();
                 MainPage.BasePageView.PageIndex = MainPage.BasePageView.ChildrenCount - 1;
diff --git a/HDL_ON/UI/UI2/4-PersonalCenter/PersonalDataPage.cs b/HDL_ON/UI/UI2/4-PersonalCenter/PersonalDataPage.cs
index 57dd341..ffb66f9 100644
--- a/HDL_ON/UI/UI2/4-PersonalCenter/PersonalDataPage.cs
+++ b/HDL_ON/UI/UI2/4-PersonalCenter/PersonalDataPage.cs
@@ -13,6 +13,11 @@
         /// </summary>
         FrameLayout bodyView;
         /// <summary>
+        /// 褰撳墠
+        /// </summary>
+        VerticalScrolViewLayout bodyScrolView;
+
+        /// <summary>
         /// 澶村儚鍖哄煙
         /// </summary>
         FrameLayout headPortraitView;
@@ -171,7 +176,7 @@
         /// </summary>
         Action updataUserName;
 
-        public PersonalDataPage(Action upHeadImage,Action upUserName)
+        public PersonalDataPage(Action upHeadImage, Action upUserName)
         {
             updataHeadImage = upHeadImage;
             updataUserName = upUserName;
@@ -183,13 +188,27 @@
             bodyView.BackgroundColor = CSS_Color.BackgroundColor;
             new TopViewDiv(bodyView, Language.StringByID(StringId.PersonalCenter)).LoadTopView();
 
-            headPortraitView = new FrameLayout()
+            bodyScrolView = new VerticalScrolViewLayout()
             {
                 Y = Application.GetRealHeight(64),
+                VerticalScrollBarEnabled = false,
+                Height = Application.GetRealHeight(551),
+            };
+            bodyView.AddChidren(bodyScrolView);
+
+            if (MainPage.Increase)
+            {
+                bodyScrolView.Height = Application.GetRealHeight(541);
+            }
+
+            headPortraitView = new FrameLayout()
+            {
+                //Y = Application.GetRealHeight(64),
                 Height = Application.GetRealHeight(124),
                 BackgroundColor = CSS_Color.MainBackgroundColor,
             };
-            bodyView.AddChidren(headPortraitView);
+
+            bodyScrolView.AddChidren(headPortraitView);
 
             userHeadImageView = new ImageView()
             {
@@ -197,22 +216,28 @@
                 Width = Application.GetMinRealAverage(84),
                 Height = Application.GetMinRealAverage(84),
                 Radius = (uint)Application.GetMinRealAverage(42),
-                ImagePath = MainPage.LoginUser.headImagePagePath,
+                ImagePath = UserInfo.Current.headImagePagePath,
             };
             headPortraitView.AddChidren(userHeadImageView);
 
             #region 涓汉淇℃伅閫夐」鍖哄煙
+            var topPaddingView = new FrameLayout()
+            {
+                Height = Application.GetRealHeight(8)
+            };
+            bodyScrolView.AddChidren(topPaddingView);
+
             /// <summary>
             /// 涓汉淇℃伅閫夐」鍖哄煙
             /// </summary>
             optionListView = new VerticalScrolViewLayout()
             {
-                Y = headPortraitView.Bottom + Application.GetRealHeight(8),
+                //Y = headPortraitView.Bottom + Application.GetRealHeight(8),
                 Height = Application.GetRealHeight(51 * 6),
                 BackgroundColor = CSS_Color.MainBackgroundColor,
                 ScrollEnabled = false,
             };
-            bodyView.AddChidren(optionListView);
+            bodyScrolView.AddChidren(optionListView);
             #region 涓汉閫夐」-鍚嶅瓧鍖哄煙
             /// <summary>
             /// 涓汉閫夐」-鍚嶅瓧鍖哄煙
@@ -245,7 +270,7 @@
                 TextAlignment = TextAlignment.CenterRight,
                 TextColor = CSS_Color.PromptingColor1,
                 TextSize = CSS_FontSize.TextFontSize,
-                Text = string.IsNullOrEmpty(MainPage.LoginUser.userName) ? "涓嶆効鎰忛�忛湶濮撳悕鐨勭敤鎴�" : MainPage.LoginUser.userName
+                Text = string.IsNullOrEmpty(UserInfo.Current.userName) ? Language.StringByID(StringId.UsersWhoNameIsEmpty) : UserInfo.Current.userName
             };
             userNameView.AddChidren(btnUserName);
             /// <summary>
@@ -342,7 +367,7 @@
                 TextAlignment = TextAlignment.CenterRight,
                 TextColor = CSS_Color.PromptingColor1,
                 TextSize = CSS_FontSize.TextFontSize,
-                Text = string.IsNullOrEmpty(MainPage.LoginUser.userEmailInfo) ? Language.StringByID(StringId.Unbound) : MainPage.LoginUser.userEmailInfo
+                Text = GetBindAccountText(UserInfo.Current.userEmailInfo)
             };
             userEmailInfoView.AddChidren(btnUserEmailInfo);
             /// <summary>
@@ -391,7 +416,7 @@
                 TextAlignment = TextAlignment.CenterRight,
                 TextColor = CSS_Color.PromptingColor1,
                 TextSize = CSS_FontSize.TextFontSize,
-                Text = string.IsNullOrEmpty(MainPage.LoginUser.userMobileInfo) ? Language.StringByID(StringId.Unbound) : MainPage.LoginUser.userMobileInfo
+                Text = GetBindAccountText(UserInfo.Current.userMobileInfo)
             };
             userPhoneInfoView.AddChidren(btnUserPhoneInfo);
             /// <summary>
@@ -477,16 +502,21 @@
             #endregion
 
             #region 瑙i攣璁剧疆鍖哄煙
+            var topPaddingView2 = new FrameLayout()
+            {
+                Height = Application.GetRealHeight(8)
+            };
+            bodyScrolView.AddChidren(topPaddingView2);
             /// <summary>
             /// 瑙i攣璁剧疆鍖哄煙
             /// </summary>
             interpretationSettingsView = new FrameLayout()
             {
-                Y = optionListView.Bottom + Application.GetRealHeight(8),
+                //Y = optionListView.Bottom + Application.GetRealHeight(8),
                 BackgroundColor = CSS_Color.MainBackgroundColor,
-                Height = Application.GetRealHeight(65),
+                Height = Application.GetRealHeight(66),
             };
-            bodyView.AddChidren(interpretationSettingsView);
+            bodyScrolView.AddChidren(interpretationSettingsView);
             btnInterpretationSettingsTitle = new Button()
             {
                 X = Application.GetRealWidth(16),
@@ -497,6 +527,7 @@
                 TextID = StringId.InterpretationSettings,
             };
             interpretationSettingsView.AddChidren(btnInterpretationSettingsTitle);
+
             btnInterpretationSettingsTip = new Button()
             {
                 X = Application.GetRealWidth(16),
@@ -518,6 +549,26 @@
                 UnSelectedImagePath = "Public/Right.png",
             };
             interpretationSettingsView.AddChidren(btnInterpretationSettingsRight);
+            interpretationSettingsView.AddChidren(new LineView(interpretationSettingsView.Height));
+            #endregion
+
+            #region 鏈嶅姟鍣ㄤ俊鎭�
+            ListCellView myServerInfoCellView = new ListCellView()
+            {
+            };
+            bodyScrolView.AddChidren(myServerInfoCellView);
+            //璺宠浆鏈嶅姟鍣ㄤ俊鎭�
+            Action selectAction = () =>
+            {
+                var myServerInfoPage = new MyServerInfoPage();
+                MainPage.BasePageView.AddChidren(myServerInfoPage);
+                myServerInfoPage.LoadPage();
+                MainPage.BasePageView.PageIndex = MainPage.BasePageView.ChildrenCount - 1;
+            };
+            myServerInfoCellView.GoAction = selectAction;
+            myServerInfoCellView.BtnTilte.Text = Language.StringByID(StringId.ServerInformation);
+            myServerInfoCellView.LineView.RemoveFromParent();
+
             #endregion
 
             btnLogout = new Button()
@@ -532,7 +583,7 @@
             };
             bodyView.AddChidren(btnLogout);
 
-            if(MainPage.Increase)
+            if (MainPage.Increase)
             {
                 btnLogout.Y = Application.GetRealHeight(613);
                 btnLogout.Height = Application.GetRealHeight(50);
@@ -540,6 +591,7 @@
             }
 
             LoadEventList();
+
         }
 
         /// <summary>
@@ -617,5 +669,24 @@
 
             LoadEvent_PictureOptionViewEventList(pictureBaseView);
         }
+
+        /// <summary>
+        /// 鑾峰彇缁戝畾璐﹀彿鏄剧ず鏂囨湰锛岀┖鐨勬椂鍊欐樉绀轰负鏈粦瀹�
+        /// </summary>
+        /// <param name="account"></param>
+        string GetBindAccountText(string account)
+        {
+            return string.IsNullOrEmpty(account) ? Language.StringByID(StringId.Unbound) : account;
+        }
+
+        /// <summary>
+        /// 鍒ゆ柇鏄惁涓烘湭缁戝畾
+        /// </summary>
+        /// <param name="account"></param>
+        /// <returns></returns>
+        bool CheckIfUnbound(string account)
+        {
+            return string.IsNullOrEmpty(account) || account == Language.StringByID(StringId.Unbound);
+        }
     }
 }
diff --git a/HDL_ON/UI/UI2/4-PersonalCenter/PersonalDataPageBLL.cs b/HDL_ON/UI/UI2/4-PersonalCenter/PersonalDataPageBLL.cs
index 41b9bcd..09934a6 100644
--- a/HDL_ON/UI/UI2/4-PersonalCenter/PersonalDataPageBLL.cs
+++ b/HDL_ON/UI/UI2/4-PersonalCenter/PersonalDataPageBLL.cs
@@ -1,4 +1,5 @@
 锘縰sing System;
+using HDL_ON.DAL.Server;
 using HDL_ON.Entity;
 using Shared;
 
@@ -18,6 +19,8 @@
             LoadEvent_ChangeBindEmail();
             LoadEvent_ChangeBindPhone();
             LoadEvent_SkipModifyPassword();
+            LoadEvent_MyQRcode();
+            GetUserInfo();
         }
 
         /// <summary>
@@ -32,46 +35,58 @@
         }
 
         /// <summary>
+        /// 閫�鍑虹櫥褰曟搷浣�
+        /// </summary>
+        void Logout()
+        {
+            #region 淇濆瓨鏈湴鏁版嵁鑷虫枃浠跺す
+            string oldRegionRootPath = FileUtils.CreateRegionBackup(DB_ResidenceData.residenceData.CurReginID.ToString());
+            new System.Threading.Thread(() =>
+            {
+                try
+                {
+                    var backuplist = FileUtils.ReadFiles();
+                    FileUtils.DeleteRegionFiles(oldRegionRootPath);
+                    //绉诲姩鏂囦欢
+                    foreach (var fileName in backuplist)
+                    {
+                        System.IO.FileInfo fileInfo = new System.IO.FileInfo(FileUtils.RootPath + fileName);
+                        if (fileInfo.Exists)
+                        {
+                            fileInfo.MoveTo(oldRegionRootPath + fileName);
+                            MainPage.Log("move file : " + fileName);
+                        }
+                    }
+                }
+                catch (Exception ex)
+                {
+                    MainPage.Log($"xxx:{ex.Message}");
+                }
+                finally
+                {
+                    FileUtils.DeleteAllFile();
+                }
+            }).Start();
+            #endregion
+
+            UserInfo.Current.LastTime = DateTime.MinValue;
+            UserInfo.Current.SaveUserInfo();
+            MainPage.GoLoginPage(UserInfo.Current);
+            DB_ResidenceData.residenceData.EixtAccount();
+        }
+
+        /// <summary>
         /// 閫�鍑鸿处鍙风櫥褰曚簨浠�
         /// </summary>
         void LoadEvent_Logout()
         {
             btnLogout.MouseUpEventHandler += (sender, e) =>
             {
-                #region 淇濆瓨鏈湴鏁版嵁鑷虫枃浠跺す
-                string oldRegionRootPath = FileUtils.CreateRegionBackup(DB_ResidenceData.residenceData.CurReginID.ToString());
-                new System.Threading.Thread(() =>
+                Action okAction = () =>
                 {
-                    try
-                    {
-                        var backuplist = FileUtils.ReadFiles();
-                        FileUtils.DeleteRegionFiles(oldRegionRootPath);
-                        //绉诲姩鏂囦欢
-                        foreach (var fileName in backuplist)
-                        {
-                            System.IO.FileInfo fileInfo = new System.IO.FileInfo(FileUtils.RootPath + fileName);
-                            if (fileInfo.Exists)
-                            {
-                                fileInfo.MoveTo(oldRegionRootPath + fileName);
-                                MainPage.Log("move file : " + fileName);
-                            }
-                        }
-                    }
-                    catch (Exception ex)
-                    {
-                        MainPage.Log($"xxx:{ex.Message}");
-                    }
-                    finally
-                    {
-                        FileUtils.DeleteAllFile();
-                    }
-                }).Start();
-                #endregion
-
-                MainPage.LoginUser.lastTime = DateTime.MinValue;
-                MainPage.LoginUser.SaveUserInfo();
-                MainPage.GoLoginPage(MainPage.LoginUser);
-                DB_ResidenceData.residenceData.EixtAccount();
+                    Logout();
+                };
+                new ConfirmDialog().ShowDialog(StringId.Tip, StringId.IfConfirmLogout, okAction);
             };
         }
 
@@ -84,7 +99,8 @@
             {
                 baseView.RemoveFromParent();
             };
-            baseView.MouseUpEventHandler = (sender, e) => {
+            baseView.MouseUpEventHandler = (sender, e) =>
+            {
                 baseView.RemoveFromParent();
             };
             btnCancel.MouseUpEventHandler = (sender, e) =>
@@ -104,7 +120,7 @@
                 {
                     if (imagePath != null)
                     {
-                        MainPage.LoginUser.headImagePagePath = imagePath.ToString();
+                        UserInfo.Current.headImagePagePath = imagePath.ToString();
                         userHeadImageView.ImagePath = imagePath.ToString();
                         updataHeadImage();
                         new System.Threading.Thread(() =>
@@ -112,7 +128,7 @@
                             new DAL.Server.HttpServerRequest().UpdataUserHeadImage(imagePath);
                         })
                         { IsBackground = true }.Start();
-                        MainPage.LoginUser.SaveUserInfo();
+                        UserInfo.Current.SaveUserInfo();
                         MainPage.Log("SelectPicture 瑁佸壀鍥剧墖杩斿洖璺緞: " + imagePath);
                     }
                 }), pid.ToString(), 1, 1);
@@ -133,7 +149,7 @@
                 {
                     if (imagePath != null)
                     {
-                        MainPage.LoginUser.headImagePagePath = imagePath.ToString();
+                        UserInfo.Current.headImagePagePath = imagePath.ToString();
                         userHeadImageView.ImagePath = imagePath.ToString();
                         updataHeadImage();
 
@@ -141,7 +157,7 @@
                         {
                             new DAL.Server.HttpServerRequest().UpdataUserHeadImage(imagePath);
                         })
-                        { IsBackground = true }.Start(); MainPage.LoginUser.SaveUserInfo();
+                        { IsBackground = true }.Start(); UserInfo.Current.SaveUserInfo();
                         MainPage.Log("SelectPicture 瑁佸壀鍥剧墖杩斿洖璺緞: " + imagePath);
                     }
                 }, pid.ToString(), 1, 1);
@@ -169,7 +185,7 @@
                         }.Show(bodyView);
                         return;
                     }
-                    if(str == MainPage.LoginUser.userName)
+                    if (str == UserInfo.Current.userName)
                     {
                         return;
                     }
@@ -179,11 +195,11 @@
                     {
                         try
                         {
-                            var responsePack = new DAL.Server.HttpServerRequest().EditUserName(str);
-                            if (responsePack.StateCode.ToUpper() == "SUCCESS")
+                            var resultObj = new HttpServerRequest().EditUserName(str);
+                            if (resultObj.Code == StateCode.SUCCESS)
                             {
-                                MainPage.LoginUser.userName = str;
-                                MainPage.LoginUser.SaveUserInfo();
+                                UserInfo.Current.userName = str;
+                                UserInfo.Current.SaveUserInfo();
                                 Application.RunOnMainThread(() =>
                                 {
                                     btnUserName.Text = str;
@@ -192,27 +208,8 @@
                             }
                             else
                             {
-                                var tipStr = "Server erorr";
-                                switch (responsePack.StateCode)
-                                {
-                                    case "NoLogin":
-                                        tipStr = Language.StringByID(StringId.InvalidLoginCertificate);
-                                        break;
-                                    case "AccountNoExists":
-                                        tipStr = "";
-                                        break;
-                                }
-                                Application.RunOnMainThread(() =>
-                                {
-                                    //鎻愮ず鍘熷洜
-                                    var tip = new Tip()
-                                    {
-                                        Text = tipStr,
-                                        CloseTime = 1,
-                                        Direction = AMPopTipDirection.None
-                                    };
-                                    tip.Show(bodyView);
-                                });
+                                //澶辫触鎻愮ず
+                                IMessageCommon.Current.ShowErrorInfoAlter(resultObj.Code);
                             }
                         }
                         catch (Exception ex)
@@ -229,10 +226,30 @@
                     })
                     { IsBackground = true }.Start();
                 };
-                new PublicAssmebly().LoadDialog_EditParater(StringId.ChangeName, MainPage.LoginUser.userName, callBack, StringId.UesrNameCannotBeEmpty, 0, new System.Collections.Generic.List<string>());
+                new PublicAssmebly().LoadDialog_EditParater(StringId.ChangeName, UserInfo.Current.userName, callBack, StringId.UesrNameCannotBeEmpty, 0, new System.Collections.Generic.List<string>());
             };
             btnUserName.MouseUpEventHandler = eventHandler;
             btnEditUserNameIcon.MouseUpEventHandler = eventHandler;
+        }
+
+        /// <summary>
+        /// 鍔犺浇鎴戠殑浜岀淮鐮佷簨浠�
+        /// </summary>
+        void LoadEvent_MyQRcode()
+        {
+            EventHandler<MouseEventArgs> eventHandler = (sender, e) =>
+            {
+                //鎴戠殑浜岀淮鐮�
+                var aep = new MyQRCodePage();
+                MainPage.BasePageView.AddChidren(aep);
+                aep.LoadPage();
+                MainPage.BasePageView.PageIndex = MainPage.BasePageView.ChildrenCount - 1;
+
+            };
+            _QRcodeView.MouseUpEventHandler = eventHandler;
+            btnQRcode.MouseUpEventHandler = eventHandler;
+            btnQRcodeIcon.MouseUpEventHandler = eventHandler;
+            btnQRcodeRight.MouseUpEventHandler = eventHandler;
         }
 
         #region 淇敼缁戝畾閭
@@ -241,36 +258,65 @@
         /// </summary>
         void LoadEvent_ChangeBindEmail()
         {
-            EventHandler<MouseEventArgs> eventHandler = (sender, e) => {
+            EventHandler<MouseEventArgs> eventHandler = (sender, e) =>
+            {
                 Action<string> action = (email) =>
                 {
-                    btnUserEmailInfo.Text = email;
+
+                    btnUserEmailInfo.Text = GetBindAccountText(email);
                 };
 
-                var aep = new AccountBindInfoPage();
-                MainPage.BasePageView.AddChidren(aep);
-                aep.LoadPage(action,1,StringId.EmailAddress);
-                MainPage.BasePageView.PageIndex = MainPage.BasePageView.ChildrenCount - 1;
+                if (CheckIfUnbound(btnUserEmailInfo.Text))
+                {
+                    //鏈粦瀹�,璺宠浆鏂扮粦瀹氶〉闈�
+                    var aep = new NewBindAccountPage();
+                    MainPage.BasePageView.AddChidren(aep);
+                    aep.LoadPage(action);
+                    MainPage.BasePageView.PageIndex = MainPage.BasePageView.ChildrenCount - 1;
+                }
+                else
+                {
+                    var aep = new AccountBindInfoPage();
+                    MainPage.BasePageView.AddChidren(aep);
+                    aep.LoadPage(action, 1, StringId.EmailAddress);
+                    MainPage.BasePageView.PageIndex = MainPage.BasePageView.ChildrenCount - 1;
+                }
+
             };
             btnUserEmailInfo.MouseUpEventHandler = eventHandler;
             btnUserEmailRight.MouseUpEventHandler = eventHandler;
             userEmailInfoView.MouseUpEventHandler = eventHandler;
         }
+
         /// <summary>
         /// 淇敼缁戝畾鎵嬫満
         /// </summary>
         void LoadEvent_ChangeBindPhone()
         {
-            EventHandler<MouseEventArgs> eventHandler = (sender, e) => {
+            EventHandler<MouseEventArgs> eventHandler = (sender, e) =>
+            {
                 Action<string> action = (phone) =>
                 {
-                    btnUserPhoneInfo.Text = phone;
+                    btnUserPhoneInfo.Text = GetBindAccountText(phone);
                 };
 
-                var aep = new AccountBindInfoPage();
-                MainPage.BasePageView.AddChidren(aep);
-                aep.LoadPage(action, 2, StringId.PhoneInfo);
-                MainPage.BasePageView.PageIndex = MainPage.BasePageView.ChildrenCount - 1;
+                if (CheckIfUnbound(btnUserPhoneInfo.Text))
+                {
+                    //鏈粦瀹�,璺宠浆鏂扮粦瀹氶〉闈�
+                    var aep = new NewBindAccountPage();
+                    MainPage.BasePageView.AddChidren(aep);
+                    aep.LoadPage(action, true);
+                    MainPage.BasePageView.PageIndex = MainPage.BasePageView.ChildrenCount - 1;
+                }
+                else
+                {
+                    var aep = new AccountBindInfoPage();
+                    MainPage.BasePageView.AddChidren(aep);
+                    aep.LoadPage(action, 2, StringId.PhoneInfo);
+                    MainPage.BasePageView.PageIndex = MainPage.BasePageView.ChildrenCount - 1;
+                }
+
+
             };
             btnUserPhoneInfo.MouseUpEventHandler = eventHandler;
             btnUserPhoneRight.MouseUpEventHandler = eventHandler;
@@ -301,7 +347,8 @@
         /// </summary>
         void LoadEvent_SkipModifyPassword()
         {
-            EventHandler<MouseEventArgs> eventHandler = (sender, e) => {
+            EventHandler<MouseEventArgs> eventHandler = (sender, e) =>
+            {
                 var page = new ResetPasswordOptionPage();
                 MainPage.BasePageView.AddChidren(page);
                 page.LoadPage();
@@ -312,5 +359,16 @@
             resetPasswordView.MouseUpEventHandler = eventHandler;
         }
 
+        /// <summary>
+        /// 
+        /// </summary>
+        void GetUserInfo()
+        {
+            new System.Threading.Thread(() =>
+            {
+                new HttpServerRequest().GetUserInfo();
+            })
+            { IsBackground = true }.Start();
+        }
     }
 }
\ No newline at end of file
diff --git a/HDL_ON/UI/UI2/4-PersonalCenter/ResetAccountPassword/ResetPasswordOptionPage.cs b/HDL_ON/UI/UI2/4-PersonalCenter/ResetAccountPassword/ResetPasswordOptionPage.cs
index d2e3ef1..84e9419 100644
--- a/HDL_ON/UI/UI2/4-PersonalCenter/ResetAccountPassword/ResetPasswordOptionPage.cs
+++ b/HDL_ON/UI/UI2/4-PersonalCenter/ResetAccountPassword/ResetPasswordOptionPage.cs
@@ -93,7 +93,7 @@
         {
             if (verificationOption == 0)
             {
-                if (string.IsNullOrEmpty(MainPage.LoginUser.userMobileInfo))
+                if (string.IsNullOrEmpty( UserInfo.Current.userMobileInfo))
                 {
                     LoadDialog_UnbindTipInfo(verificationOption);
                 }
@@ -102,13 +102,13 @@
                     this.RemoveFromParent();
                     var vcp = new ResetPasswordVerificationCodePage();
                     MainPage.BasePageView.AddChidren(vcp);
-                    vcp.LoadPage(StringId.PhoneNumberVerification,2);
+                    vcp.LoadPage(StringId.PhoneNumberVerification, true,  UserInfo.Current.userMobileInfo);
                     MainPage.BasePageView.PageIndex = MainPage.BasePageView.ChildrenCount - 1;
                 }
             }
             else
             {
-                if (string.IsNullOrEmpty(MainPage.LoginUser.userEmailInfo))
+                if (string.IsNullOrEmpty( UserInfo.Current.userEmailInfo))
                 {
                     LoadDialog_UnbindTipInfo(verificationOption);
                 }
@@ -117,7 +117,7 @@
                     this.RemoveFromParent();
                     var vcp = new ResetPasswordVerificationCodePage();
                     MainPage.BasePageView.AddChidren(vcp);
-                    vcp.LoadPage(StringId.EmailVerification,1);
+                    vcp.LoadPage(StringId.EmailVerification, false,  UserInfo.Current.userEmailInfo);
                     MainPage.BasePageView.PageIndex = MainPage.BasePageView.ChildrenCount - 1;
                 }
             }
@@ -134,17 +134,8 @@
             dialogView.MouseUpEventHandler = (sender, e) => {
                 dialog.Close();
             };
-
-            Button btnTitleIcon = new Button()
-            {
-                X = Application.GetRealWidth(108),
-                Y = Application.GetRealWidth(152),
-                Width = Application.GetRealWidth(160),
-                Height = Application.GetRealWidth(160),
-                UnSelectedImagePath = "PersonalCenter/ResetPassword/DialogTipTitleIcon.png"
-            };
-            dialogView.AddChidren(btnTitleIcon);
-
+            dialog.AddChidren(dialogView);
+        
             FrameLayout contentView = new FrameLayout()
             {
                 Gravity = Gravity.CenterHorizontal,
@@ -156,6 +147,19 @@
             };
             dialogView.AddChidren(contentView);
 
+            Button btnTitleIcon = new Button()
+            {
+                X = Application.GetRealWidth(108),
+                Y = Application.GetRealWidth(152),
+                Width = Application.GetRealWidth(160),
+                Height = Application.GetRealWidth(160),
+                UnSelectedImagePath = "PersonalCenter/ResetPassword/DialogTipTitleIcon.png"
+            };
+            dialogView.AddChidren(btnTitleIcon);
+            btnTitleIcon.MouseUpEventHandler = (sender, e) => {
+                dialog.Close();
+            };
+
             Button btnMsg = new Button()
             {
                 Gravity = Gravity.CenterHorizontal,
@@ -164,7 +168,7 @@
                 Height = Application.GetRealWidth(62),
                 TextColor = CSS_Color.MainColor,
                 TextSize = CSS_FontSize.SubheadingFontSize,
-                TextID = verificationOption == 0?StringId.UnBindPhoneNumberCannotVerification: StringId.UnBindEmailCannotVerification,
+                TextID = verificationOption == 0 ? StringId.UnBindPhoneNumberCannotVerification: StringId.UnBindEmailCannotVerification,
             };
             contentView.AddChidren(btnMsg);
 
@@ -177,7 +181,7 @@
                 TextAlignment = TextAlignment.Center,
                 Radius = (uint)Application.GetRealWidth(22),
                 BackgroundColor = CSS_Color.MainColor,
-                TextID = StringId.PhoneNumberVerification,
+                TextID = StringId.GoBind,
                 TextSize = CSS_FontSize.SubheadingFontSize,
                 TextColor = CSS_Color.MainBackgroundColor,
             };
@@ -187,10 +191,20 @@
             {
                 dialog.Close();
                 Action<string> action = (obj) => { };
-                var vcp = new BindAccountPage();
-                MainPage.BasePageView.AddChidren(vcp);
-                vcp.LoadPage(action, verificationOption == 0 ? StringId.BindPhone : StringId.BindEmail);
+                //var vcp = new BindAccountPage();
+                //MainPage.BasePageView.AddChidren(vcp);
+                //vcp.LoadPage(action, verificationOption == 0 ? StringId.BindPhone : StringId.BindEmail);
+                //MainPage.BasePageView.PageIndex = MainPage.BasePageView.ChildrenCount - 1;
+
+                //鏄惁涓烘崲缁戞墜鏈�
+                var isPhone = verificationOption == 0;
+                //璺宠浆鏂扮粦瀹氶〉闈�
+                var aep = new NewBindAccountPage();
+                MainPage.BasePageView.AddChidren(aep);
+                aep.LoadPage(action, isPhone);
                 MainPage.BasePageView.PageIndex = MainPage.BasePageView.ChildrenCount - 1;
+
+
             };
 
             dialog.Show();
diff --git a/HDL_ON/UI/UI2/4-PersonalCenter/ResetAccountPassword/ResetPasswordPage.cs b/HDL_ON/UI/UI2/4-PersonalCenter/ResetAccountPassword/ResetPasswordPage.cs
index 6ea2d42..a28f956 100644
--- a/HDL_ON/UI/UI2/4-PersonalCenter/ResetAccountPassword/ResetPasswordPage.cs
+++ b/HDL_ON/UI/UI2/4-PersonalCenter/ResetAccountPassword/ResetPasswordPage.cs
@@ -1,12 +1,47 @@
 锘縰sing System;
 using Shared;
 using HDL_ON.UI.CSS;
+using HDL_ON.DAL.Server;
+using System.Threading;
 
 namespace HDL_ON.UI
 {
     public partial class ResetPasswordPage : FrameLayout
     {
+        /// <summary>
+        /// 鏄惁鎵嬫満
+        /// </summary>
+        public bool isPhone;
+        /// <summary>
+        /// 璐﹀彿
+        /// </summary>
+        public string account;
+        /// <summary>
+        /// 楠岃瘉鐮�
+        /// </summary>
+        public string verCode;
+
+        #region 鎺т欢View
+        /// <summary>
+        /// 瀵嗙爜鏂囨湰妗�
+        /// </summary>
+        EditText etPassword;
+        /// <summary>
+        /// 纭瀵嗙爜鏂囨湰妗�
+        /// </summary>
+        EditText etRepeatPassword;
+
+        /// <summary>
+        /// 淇敼鎸夐挳
+        /// </summary>
+        Button btnReset;
+
+        /// <summary>
+        /// 
+        /// </summary>
         FrameLayout bodyView;
+        #endregion
+
         public ResetPasswordPage()
         {
             bodyView = this;
@@ -14,60 +49,266 @@
 
         public void LoadPage()
         {
-            bodyView.BackgroundColor = CSS_Color.MainBackgroundColor;
+            bodyView.BackgroundColor = CSS_Color.BackgroundColor;
             new TopViewDiv(bodyView, Language.StringByID(StringId.ModifyPassword)).LoadTopView();
 
+            #region 鏂板瘑鐮�
+            FrameLayout rowView = new FrameLayout()
+            {
+                Y = Application.GetRealHeight(64),
+                Height = Application.GetRealHeight(50),
+                BackgroundColor = CSS_Color.MainBackgroundColor,
+            };
+            bodyView.AddChidren(rowView);
 
+            //鏂板瘑鐮�
+            Button btnTitle = new Button()
+            {
+                X = Application.GetRealWidth(16),
+                Width = Application.GetRealWidth(180),
+                TextColor = CSS_Color.FirstLevelTitleColor,
+                TextSize = CSS_FontSize.SubheadingFontSize,
+                TextAlignment = TextAlignment.CenterLeft,
+                Text = Language.StringByID(StringId.NewPassword) + ":"
+            };
+            rowView.AddChidren(btnTitle);
 
+            etPassword = new EditText()
+            {
+                Width = Application.GetRealWidth(359),
+                TextColor = CSS_Color.PromptingColor1,
+                TextSize = CSS_FontSize.TextFontSize,
+                SecureTextEntry = true,
+                TextAlignment = TextAlignment.CenterRight,
+                Foucs = true
+            };
+            rowView.AddChidren(etPassword);
+            var lineView = new LineView(rowView.Height);
+            rowView.AddChidren(lineView);
+            #endregion
+
+            #region 鍐嶆杈撳叆鏂板瘑鐮�
+            FrameLayout rowView2 = new FrameLayout()
+            {
+                Y = rowView.Bottom,
+                Height = Application.GetRealHeight(50),
+                BackgroundColor = CSS_Color.MainBackgroundColor,
+            };
+            bodyView.AddChidren(rowView2);
+
+            //鍐嶆杈撳叆鏂板瘑鐮�
+            Button btnTitle2 = new Button()
+            {
+                X = Application.GetRealWidth(16),
+                Width = Application.GetRealWidth(180),
+                TextColor = CSS_Color.FirstLevelTitleColor,
+                TextSize = CSS_FontSize.SubheadingFontSize,
+                TextAlignment = TextAlignment.CenterLeft,
+                //TextID = StringId.NewPasswordAgain,
+                Text = Language.StringByID(StringId.NewPasswordAgain) + ":"
+            };
+            rowView2.AddChidren(btnTitle2);
+
+            etRepeatPassword = new EditText()
+            {
+                Width = Application.GetRealWidth(359),
+                TextColor = CSS_Color.PromptingColor1,
+                TextSize = CSS_FontSize.TextFontSize,
+                SecureTextEntry = true,
+                TextAlignment = TextAlignment.CenterRight,
+            };
+            rowView2.AddChidren(etRepeatPassword);
+            #endregion
+
+            btnReset = new Button()
+            {
+                Gravity = Gravity.CenterHorizontal,
+                Y = Application.GetRealHeight(224),
+                Width = Application.GetRealWidth(220),
+                Height = Application.GetRealWidth(44),
+                Radius = (uint)Application.GetRealWidth(22),
+                SelectedBackgroundColor = CSS_Color.MainColor,
+                BackgroundColor = CSS_Color.PromptingColor1,
+                TextID = StringId.Confirm,
+                TextSize = CSS_FontSize.SubheadingFontSize,
+                TextColor = CSS_Color.MainBackgroundColor,
+                TextAlignment = TextAlignment.Center,
+            };
+            bodyView.AddChidren(btnReset);
+
+            LoadEvent_Reset();
+            LoadEvent_EditTextFcousChange();
         }
     }
 
     public partial class ResetPasswordPage
     {
-        public void ResetPassword(string password,string repeatPassword )
+
+        /// <summary>
+        /// 鎸囧畾鍏抽棴椤甸潰涓暟
+        /// </summary>
+        /// <param name="countPage"></param>
+        void ClosePageWithCount(int countPage)
         {
+            //鍏抽棴澶氬皯涓〉闈�
+            for (int i = 0; i < countPage; i++)
+            {
+                MainPage.BasePageView.GetChildren(MainPage.BasePageView.ChildrenCount - 1).RemoveFromParent();
+            }
+        }
+
+        /// <summary>
+        /// 
+        /// </summary>
+        /// <param name="password"></param>
+        void ResetPassword(string password)
+        {
+
+            //鏍¢獙瀵嗙爜鏄惁绗﹀悎瑕佹眰
+            if (etPassword.Text.Trim().Length < 6 || etPassword.Text.Trim().Length > 13)
+            {
+                new Tip()
+                {
+                    CloseTime = 1,
+                    Direction = AMPopTipDirection.None,
+                    Text = Language.StringByID(StringId.PasswordIsUnqualified)
+                }.Show(bodyView);
+                return;
+            }
+
+            //鏍¢獙涓ゆ杈撳叆鐨勫瘑鐮佹槸鍚︿竴鑷�
+            if (etPassword.Text.Trim() != etRepeatPassword.Text.Trim())
+            {
+                new Tip()
+                {
+                    CloseTime = 1,
+                    Direction = AMPopTipDirection.None,
+                    Text = Language.StringByID(StringId.IncorrectRepeatPassword)
+                }.Show(bodyView);
+
+                return;
+            }
+
             var waitPage = new Loading();
             waitPage.Start("Please wait...");
-            var resetResult = new DAL.Server.HttpServerRequest().ResetPassword(MainPage.LoginUser.accountString, password, repeatPassword, 86);
-            if (resetResult.StateCode.ToUpper() == "SUCCESS")
-            {
-                Application.RunOnMainThread(() =>
-                {
-                    var page = new OperationResultDisPalyPage();
-                    page.Show();
-                    page.LoadPage(true, Language.StringByID(StringId.UnbindEmail), Language.StringByID(StringId.UnbindEmailSuccess), "");
 
-                    for (int i = 0; i < 2; i++)
+            new Thread(() =>
+            {
+                try
+                {
+                    // 蹇樿瀵嗙爜
+                    var resultObj = new HttpServerRequest().ForgetPassword(account, password, verCode, isPhone);
+                    if (resultObj.Code == StateCode.SUCCESS)
                     {
-                        MainPage.BasePageView.GetChildren(MainPage.BasePageView.ChildrenCount - 1).RemoveFromParent();
+                        Application.RunOnMainThread(() =>
+                        {
+                            Utlis.ShowTip(Language.StringByID(StringId.PasswordChangeSuccessfully));
+                            ClosePageWithCount(2);
+                        });
                     }
-                });
+                    else
+                    {
+                        // 鎻愮ず閿欒
+                        IMessageCommon.Current.ShowErrorInfoAlter(resultObj.Code);
+                    }
+                }
+                catch { }
+                finally
+                {
+                    Application.RunOnMainThread(() =>
+                    {
+                        waitPage.Hide();
+                    });
+                }
+            })
+            { IsBackground = true }.Start();
+
+        }
+
+        /// <summary>
+        /// 鍔犺浇鏂瑰紡鎸夐挳浜嬩欢
+        /// </summary>
+        void LoadEvent_Reset()
+        {
+            btnReset.MouseUpEventHandler += (sender, e) =>
+            {
+                if (btnReset.IsSelected)
+                {
+                    ResetPassword(etPassword.Text.ToString());
+                }
+            };
+        }
+
+        /// <summary>
+        /// 鍔犺浇鏂囨湰妗嗙劍鐐瑰彉鍖栦簨浠�
+        /// </summary>
+        void LoadEvent_EditTextFcousChange() { 
+            //瀵嗙爜鏂囨湰妗嗙劍鐐瑰彉鍖栦簨浠�
+            etPassword.FoucsChanged += (sender, e) =>
+            {
+                if (etPassword.Foucs)
+                {
+                  
+                }
+                else
+                {
+                    //鏍¢獙瀵嗙爜鏄惁绗﹀悎瑕佹眰
+                    if (etPassword.Text.Trim().Length < 6 || etPassword.Text.Trim().Length > 13)
+                    {
+                        new Tip()
+                        {
+                            CloseTime = 1,
+                            Direction = AMPopTipDirection.None,
+                            Text = Language.StringByID(StringId.PasswordIsUnqualified)
+                        }.Show(bodyView);
+                    }
+                    else
+                    {
+                        LoadMothed_EnableResetButton();
+                    }
+                }
+            };
+
+            //纭瀵嗙爜鏂囨湰妗嗙劍鐐瑰彉鍖栦簨浠�
+            etRepeatPassword.FoucsChanged += (sender, e) =>
+            {
+                if (etRepeatPassword.Foucs)
+                {
+                   
+                }
+                else
+                {
+                    //鏍¢獙涓ゆ杈撳叆鐨勫瘑鐮佹槸鍚︿竴鑷�
+                    if (etPassword.Text.Trim() != etRepeatPassword.Text.Trim())
+                    {
+                        new Tip()
+                        {
+                            CloseTime = 1,
+                            Direction = AMPopTipDirection.None,
+                            Text = Language.StringByID(StringId.IncorrectRepeatPassword)
+                        }.Show(bodyView);
+                    }
+                    else
+                    {
+                        LoadMothed_EnableResetButton();
+                    }
+                }
+            };
+
+        }
+
+        /// <summary>
+        /// 浣胯兘淇敼纭畾鎸夐挳
+        /// </summary>
+        void LoadMothed_EnableResetButton()
+        {
+            if (!string.IsNullOrEmpty(etPassword.Text) && (etPassword.Text.Trim() == etRepeatPassword.Text.Trim()))
+            {
+                btnReset.IsSelected = true;
             }
             else
             {
-                string erorrInfo = "";
-                switch (resetResult.StateCode)
-                {
-                    case "PwdNoConfirm"://涓ゆ杈撳叆鐨勫瘑鐮佷笉涓�鑷�
-                        erorrInfo = Language.StringByID(StringId.IncorrectRepeatPassword);
-                        break;
-                    case "AccountNoExists"://涓ゆ杈撳叆鐨勫瘑鐮佷笉涓�鑷�
-                        erorrInfo = Language.StringByID(StringId.AccountNotExist);
-                        break;
-                    default:
-                        erorrInfo = "Server error";
-                        break;
-                }
-                Application.RunOnMainThread(() =>
-                {
-                    waitPage.Hide();
-                    new Tip()
-                    {
-                        CloseTime = 1,
-                        Direction = AMPopTipDirection.None,
-                        Text = erorrInfo,
-                    }.Show(bodyView);
-                });
+                btnReset.IsSelected = false;
             }
         }
     }
diff --git a/HDL_ON/UI/UI2/4-PersonalCenter/ResetAccountPassword/ResetPasswordVerificationCodePage.cs b/HDL_ON/UI/UI2/4-PersonalCenter/ResetAccountPassword/ResetPasswordVerificationCodePage.cs
index 02a337d..01d6efe 100644
--- a/HDL_ON/UI/UI2/4-PersonalCenter/ResetAccountPassword/ResetPasswordVerificationCodePage.cs
+++ b/HDL_ON/UI/UI2/4-PersonalCenter/ResetAccountPassword/ResetPasswordVerificationCodePage.cs
@@ -1,5 +1,6 @@
 锘縰sing System;
 using System.Threading;
+using HDL_ON.DAL.Server;
 using HDL_ON.UI.CSS;
 using Shared;
 
@@ -31,25 +32,55 @@
 
         Button btnResend;
 
+        /// <summary>
+        /// 
+        /// </summary>
+        Button btnTip;
+
         int titleId;
 
+        ///// <summary>
+        ///// 鎿嶄綔绫诲瀷 1:閭锛�2:鎵嬫満
+        ///// </summary>
+        //int optionType;
         /// <summary>
-        /// 鎿嶄綔绫诲瀷 1:閭锛�2:鎵嬫満
+        /// 鏄惁鎵嬫満
         /// </summary>
-        int optionType;
+        bool isPhone;
+        /// <summary>
+        /// 璐﹀彿
+        /// </summary>
+        string account;
+
+
         public ResetPasswordVerificationCodePage()
         {
             bodyView = this;
         }
 
-        public void LoadPage(int tId, int ot)
+        /// <summary>
+        /// 
+        /// </summary>
+        /// <param name="tId"></param>
+        /// <param name="isPhone">鏄惁鎵嬫満</param>
+        /// <param name="account">璐﹀彿</param>
+        public void LoadPage(int tId, bool isPhone, string account)
         {
             titleId = tId;
-            optionType = ot;
+            this.isPhone = isPhone;
+            this.account = account;
             bodyView.BackgroundColor = CSS_Color.BackgroundColor;
-            new TopViewDiv(bodyView, Language.StringByID(tId)).LoadTopView();
 
-            Button btnTip = new Button()
+            Action backAction = () =>
+            {
+                Application.HideSoftInput();
+                BackConfirmAction();
+            };
+            new TopViewDiv(bodyView, Language.StringByID(tId), false).LoadTopView(backAction);
+
+            //new TopViewDiv(bodyView, Language.StringByID(tId)).LoadTopView();
+
+            btnTip = new Button()
             {
                 Y = Application.GetRealHeight(64),
                 X = Application.GetRealWidth(16),
@@ -222,7 +253,7 @@
                 Y = Application.GetRealHeight(276),
                 Gravity = Gravity.CenterHorizontal,
                 Width = Application.GetRealWidth(220),
-                Height = Application.GetRealHeight(44),
+                Height = Application.GetRealWidth(44),
                 SelectedBackgroundColor = CSS_Color.MainColor,
                 BackgroundColor = CSS_Color.PromptingColor1,
                 TextAlignment = TextAlignment.Center,
@@ -366,12 +397,12 @@
                         btnNum4Line.Height = Application.GetRealHeight(1);
                         btnNum5Line.Height = Application.GetRealHeight(1);
                         btnNum6Line.Height = Application.GetRealHeight(1);
-                        btnNum1Line.Text = "";
-                        btnNum2Line.Text = "";
-                        btnNum3Line.Text = "";
-                        btnNum4Line.Text = "";
-                        btnNum5Line.Text = "";
-                        btnNum6Line.Text = "";
+                        btnNum1.Text = "";
+                        btnNum2.Text = "";
+                        btnNum3.Text = "";
+                        btnNum4.Text = "";
+                        btnNum5.Text = "";
+                        btnNum6.Text = "";
                         break;
                     case 1:
                         btnNum2Line.IsSelected = true;
@@ -387,11 +418,11 @@
                         btnNum4Line.Height = Application.GetRealHeight(1);
                         btnNum5Line.Height = Application.GetRealHeight(1);
                         btnNum6Line.Height = Application.GetRealHeight(1);
-                        btnNum2Line.Text = "";
-                        btnNum3Line.Text = "";
-                        btnNum4Line.Text = "";
-                        btnNum5Line.Text = "";
-                        btnNum6Line.Text = "";
+                        btnNum2.Text = "";
+                        btnNum3.Text = "";
+                        btnNum4.Text = "";
+                        btnNum5.Text = "";
+                        btnNum6.Text = "";
                         break;
                     case 2:
                         btnNum3Line.IsSelected = true;
@@ -407,10 +438,10 @@
                         btnNum4Line.Height = Application.GetRealHeight(1);
                         btnNum5Line.Height = Application.GetRealHeight(1);
                         btnNum6Line.Height = Application.GetRealHeight(1);
-                        btnNum3Line.Text = "";
-                        btnNum4Line.Text = "";
-                        btnNum5Line.Text = "";
-                        btnNum6Line.Text = "";
+                        btnNum3.Text = "";
+                        btnNum4.Text = "";
+                        btnNum5.Text = "";
+                        btnNum6.Text = "";
                         break;
                     case 3:
                         btnNum4Line.IsSelected = true;
@@ -426,9 +457,9 @@
                         btnNum4Line.Height = Application.GetRealHeight(2);
                         btnNum5Line.Height = Application.GetRealHeight(1);
                         btnNum6Line.Height = Application.GetRealHeight(1);
-                        btnNum4Line.Text = "";
-                        btnNum5Line.Text = "";
-                        btnNum6Line.Text = "";
+                        btnNum4.Text = "";
+                        btnNum5.Text = "";
+                        btnNum6.Text = "";
                         break;
                     case 4:
                         btnNum5Line.IsSelected = true;
@@ -444,8 +475,8 @@
                         btnNum4Line.Height = Application.GetRealHeight(1);
                         btnNum5Line.Height = Application.GetRealHeight(2);
                         btnNum6Line.Height = Application.GetRealHeight(1);
-                        btnNum5Line.Text = "";
-                        btnNum6Line.Text = "";
+                        btnNum5.Text = "";
+                        btnNum6.Text = "";
                         break;
                     case 5:
                         btnNum6Line.IsSelected = true;
@@ -461,80 +492,74 @@
                         btnNum4Line.Height = Application.GetRealHeight(1);
                         btnNum5Line.Height = Application.GetRealHeight(1);
                         btnNum6Line.Height = Application.GetRealHeight(2);
-                        btnNum6Line.Text = "";
+                        btnNum6.Text = "";
                         break;
                     case 6:
                         btnNum6.Text = etCode.Substring(5, 1);
                         et.Foucs = false;
-                        new Thread(() =>
-                        {
-                            bool result = false;
-                            Action act = () => { };
-                            Application.RunOnMainThread(() =>
-                            {
-                                act = new PublicAssmebly().TipLoadingMsgDialog(Language.StringByID(StringId.SavingPleaseWait));
-                            });
-                            var response = new DAL.Server.HttpServerRequest().ValidatorCode(MainPage.LoginUser.userEmailInfo, etCode, MainPage.LoginUser.areaCode);
-                            if (response.StateCode.ToUpper() == "SUCCESS")
-                            {
-                                result = true;
-                            }
-                            else
-                            {
-                                string erorrInfo = "";
-                                switch (response.StateCode)
-                                {
-                                    case "ValidCodeAndPhoneNoEqual"://楠岃瘉鐮侀敊璇�
-                                        erorrInfo = Language.StringByID(StringId.VerificationCodeWrong);
-                                        break;
-                                    case "NoRecord":
-                                        erorrInfo = Language.StringByID(StringId.PlsGetTheVerificationCode);
-                                        break;
-                                    default:
-                                        erorrInfo = "Server error";
-                                        break;
-                                }
-                                Application.RunOnMainThread(() =>
-                                {
-                                    new Tip()
-                                    {
-                                        CloseTime = 1,
-                                        Direction = AMPopTipDirection.None,
-                                        Text = erorrInfo,
-                                    }.Show(bodyView);
-                                });
-                            }
-                            Application.RunOnMainThread(() =>
-                            {
-                                act();
-                            });
-                            if (result)
-                            {
-                                Application.RunOnMainThread(() =>
-                                {
-                                    new PublicAssmebly().TipMsgAutoClose(Language.StringByID(StringId.ValidationSuccessful), true);
-                                });
-                                Thread.Sleep(1600);
-                                Application.RunOnMainThread(() =>
-                                {
-                                    MainPage.BasePageView.GetChildren(MainPage.BasePageView.ChildrenCount - 1).RemoveFromParent();
-                                    if (titleId == StringId.EmailVerification)
-                                    {
-
-                                    }
-                                    else if (titleId == StringId.PhoneNumberVerification)
-                                    {
-
-                                    }
-                                });
-                            }
-                        })
-                        { IsBackground = true }.Start();
-
+                        //杈撳叆瀹屾垚
+                        InputComplete(etCode);
                         break;
                 }
             };
         }
+
+        /// <summary>
+        /// 杈撳叆瀹屾垚
+        /// </summary>
+        /// <param name="etCode"></param>
+        void InputComplete(string etCode)
+        {
+            new Thread(() =>
+            {
+                bool result = false;
+                Action act = () => { };
+                Application.RunOnMainThread(() =>
+                {
+                    act = new PublicAssmebly().TipLoadingMsgDialog(Language.StringByID(StringId.SavingPleaseWait));
+                });
+
+                var resultObj = new HttpServerRequest().ValidatorCode(VerifyType.FIND_PASSWORD, account, etCode, isPhone, false);
+                if (resultObj.Code == StateCode.SUCCESS)
+                {
+                    result = true;
+                }
+                else
+                {
+                    //澶辫触鎻愮ず
+                    IMessageCommon.Current.ShowErrorInfoAlter(resultObj.Code);
+                }
+                Application.RunOnMainThread(() =>
+                {
+                    act();
+                });
+                if (result)
+                {
+                    Application.RunOnMainThread(() =>
+                    {
+                        new PublicAssmebly().TipMsgAutoClose(Language.StringByID(StringId.ValidationSuccessful), true);
+                    });
+                    Thread.Sleep(1600);
+                    Application.RunOnMainThread(() =>
+                    {
+
+                        //MainPage.BasePageView.GetChildren(MainPage.BasePageView.ChildrenCount - 1).RemoveFromParent();
+                        this.RemoveFromParent();
+                        var vcp = new ResetPasswordPage();
+                        vcp.isPhone = isPhone;
+                        vcp.account = account;
+                        vcp.verCode = etCode;
+                        MainPage.BasePageView.AddChidren(vcp);
+                        vcp.LoadPage();
+                        MainPage.BasePageView.PageIndex = MainPage.BasePageView.ChildrenCount - 1;
+
+                    });
+                }
+            })
+            { IsBackground = true }.Start();
+        }
+
+       
         /// <summary>
         /// 閲嶅彂楠岃瘉鐮佺瓑寰呯嚎绋�
         /// </summary>
@@ -542,46 +567,102 @@
         {
             btnResend.IsSelected = false;
             int time = 60;
-
-            new Thread(() =>
+            try
             {
-                if (optionType == 1)
+                new Thread(() =>
                 {
-                    var result = new DAL.Server.HttpServerRequest().GetLoginVerCode(MainPage.LoginUser.userEmailInfo);
-                }
-                else if (optionType == 2)
-                {
-                    var result = new DAL.Server.HttpServerRequest().GetLoginVerCode(MainPage.LoginUser.userMobileInfo);
-                }
-            })
-            { IsBackground = true }.Start();
-            new Thread(() =>
-            {
-                while (time > 0)
-                {
-                    time--;
-                    Application.RunOnMainThread(() =>
+                    //2.2  鑾峰彇楠岃瘉鐮�
+                    ResponsePackNew resultObj;
+                    if (!isPhone)
                     {
-                        btnResend.Text = time.ToString() + "s";
-                    });
-                    Thread.Sleep(1000);
-                }
-                Application.RunOnMainThread(() =>
-                {
-                    btnResend.IsSelected = true;
-                    btnResend.TextID = StringId.GetVerificationCode;
-                });
-            })
-            { IsBackground = true }.Start();
+                        resultObj = new DAL.Server.HttpServerRequest().VerificationCodeSend(VerifyType.FIND_PASSWORD, account);
+                    }
+                    else
+                    {
+                        resultObj = new DAL.Server.HttpServerRequest().VerificationCodeSend(VerifyType.FIND_PASSWORD, account, true,  UserInfo.Current.areaCode.ToString());
+                    }
+
+                    if (resultObj.Code != StateCode.SUCCESS)
+                    {
+                        //鍙戦�佸け璐�
+                        Application.RunOnMainThread(() =>
+                        {
+                            btnTip.TextID = StringId.FailedToSendVerificationCode;
+                        });
+                        //澶辫触鎻愮ず
+                        IMessageCommon.Current.ShowErrorInfoAlter(resultObj.Code);
+                    }
+                    else
+                    {
+                        //鍙戦�佹垚鍔燂紝寮�濮嬪�掕鏃�
+                        Application.RunOnMainThread(() =>
+                        {
+                            btnTip.TextID = StringId.VerificationCodePrompt;
+                        });
+
+                        while (time > 0)
+                        {
+                            time--;
+                            Application.RunOnMainThread(() =>
+                            {
+                                btnResend.Text = time.ToString() + "s";
+                            });
+                            Thread.Sleep(1000);
+                        }
+                        Application.RunOnMainThread(() =>
+                        {
+                            btnResend.IsSelected = true;
+                            btnResend.TextID = StringId.GetVerificationCode;
+                        });
+                    }
+                })
+                { IsBackground = true }.Start();
+            }
+
+            catch { }
+            finally
+            {
+
+            };
         }
+
         /// <summary>
         /// 閲嶅彂楠岃瘉鐮佷簨浠�
         /// </summary>
         void LoadEvent_Resend()
         {
-            btnResend.MouseUpEventHandler = (sender, e) => {
+            btnResend.MouseUpEventHandler = (sender, e) =>
+            {
                 LoadThread_SendVerCode();
             };
         }
+
+        /// <summary>
+        /// 杩斿洖浜屾纭浜嬩欢
+        /// </summary>
+        void BackConfirmAction()
+        {
+            //楠岃瘉鐮佸彂閫佹垚鍔燂紝浜屾纭閫�鍑�
+            if (btnTip.TextID == StringId.VerificationCodePrompt)
+            {
+                Action cancelAction = () =>
+                {
+                    if (bodyView != null)
+                    {
+                        bodyView.RemoveFromParent();
+                    }
+                };
+                new ConfirmDialog().ShowDialog(StringId.Tip, StringId.VerificationCodeMayBeDelayed, null, cancelAction, StringId.ReturnStr, StringId.WaitAMoment);
+            }
+            else
+            {
+                //鐩存帴鍏抽棴
+                if (bodyView != null)
+                {
+                    bodyView.RemoveFromParent();
+                }
+
+            }
+        }
     }
 }
\ No newline at end of file
diff --git a/HDL_ON/UI/UI2/4-PersonalCenter/RoomListManage/FloorsManagementPage.cs b/HDL_ON/UI/UI2/4-PersonalCenter/RoomListManage/FloorsManagementPage.cs
index 4dff35c..a3ffcd4 100644
--- a/HDL_ON/UI/UI2/4-PersonalCenter/RoomListManage/FloorsManagementPage.cs
+++ b/HDL_ON/UI/UI2/4-PersonalCenter/RoomListManage/FloorsManagementPage.cs
@@ -254,8 +254,8 @@
                 Gravity = Gravity.CenterHorizontal,
                 Y = Application.GetRealHeight(582),
                 Width = Application.GetRealWidth(220),
-                Height = Application.GetRealHeight(44),
-                Radius = (uint)Application.GetRealHeight(22),
+                Height = Application.GetRealWidth(44),
+                Radius = (uint)Application.GetRealWidth(22),
                 BackgroundColor = CSS_Color .MainColor,
                 TextColor = CSS_Color.MainBackgroundColor,
                 TextSize = CSS_FontSize.SubheadingFontSize,
diff --git a/HDL_ON/UI/UI2/4-PersonalCenter/RoomListManage/ResidentialManagePage.cs b/HDL_ON/UI/UI2/4-PersonalCenter/RoomListManage/ResidentialManagePage.cs
index aea4a6b..35d4bff 100644
--- a/HDL_ON/UI/UI2/4-PersonalCenter/RoomListManage/ResidentialManagePage.cs
+++ b/HDL_ON/UI/UI2/4-PersonalCenter/RoomListManage/ResidentialManagePage.cs
@@ -57,6 +57,25 @@
         /// </summary>
         Button btnCommissioningAuthoritySwitchIcon;
 
+        #region 杩囨埛
+        /// <summary>
+        /// 
+        /// </summary>
+        FrameLayout transferRow;
+        /// <summary>
+        /// 
+        /// </summary>
+        Button btnTransferTitle;
+        /// <summary>
+        /// 
+        /// </summary>
+        Button btnTrasferExplan;
+        /// <summary>
+        /// 
+        /// </summary>
+        Button btnTrasferSkinIcon;
+        #endregion
+
         #endregion
         /// <summary>
         /// 鏇存柊浣忓畢鍚嶇О鐨勫洖璋冨嚱鏁�
@@ -301,7 +320,7 @@
             #endregion
 
             #region 杩囨埛
-            FrameLayout transferRow;
+          
             transferRow = new FrameLayout()
             {
                 Y = administratorPermissionMigrationRow.Bottom,
@@ -310,7 +329,7 @@
             };
             bodyView.AddChidren(transferRow);
 
-            var btnTransferTitle = new Button()
+            btnTransferTitle = new Button()
             {
                 X = Application.GetRealWidth(16),
                 Y = Application.GetRealHeight(10),
@@ -323,7 +342,7 @@
             };
             transferRow.AddChidren(btnTransferTitle);
 
-            var btnTrasferExplan = new Button()
+            btnTrasferExplan = new Button()
             {
                 X = Application.GetRealWidth(16),
                 Y = btnTransferTitle.Bottom,
@@ -336,7 +355,6 @@
             };
             transferRow.AddChidren(btnTrasferExplan);
 
-            Button btnTrasferSkinIcon;
             btnTrasferSkinIcon = new Button()
             {
                 X = Application.GetRealWidth(343),
diff --git a/HDL_ON/UI/UI2/4-PersonalCenter/RoomListManage/ResidentialManagePageBLL.cs b/HDL_ON/UI/UI2/4-PersonalCenter/RoomListManage/ResidentialManagePageBLL.cs
index f55abfb..2d20372 100644
--- a/HDL_ON/UI/UI2/4-PersonalCenter/RoomListManage/ResidentialManagePageBLL.cs
+++ b/HDL_ON/UI/UI2/4-PersonalCenter/RoomListManage/ResidentialManagePageBLL.cs
@@ -1,5 +1,6 @@
 锘縰sing System;
 using System.Collections.Generic;
+using HDL_ON.DAL.Server;
 using HDL_ON.Entity;
 using Shared;
 
@@ -13,6 +14,7 @@
             LoadEvent_SkipRoomsPage();
             LoadEvent_EditResidencName();
             LoadEvent_EditResidencAddress();
+            //LoadEvent_SkipTransferConfirmPage();
         }
 
         /// <summary>
@@ -34,7 +36,7 @@
                         }.Show(bodyView);
                         return;
                     }
-                    DB_ResidenceData.residenceData.residecenInfo.Name = str;
+                    //DB_ResidenceData.residenceData.residecenInfo.Name = str;
 
                     var waitPage = new Loading();
                     waitPage.Start(Language.StringByID(StringId.PleaseWait));
@@ -42,13 +44,13 @@
                     {
                         try
                         {
-                            var responsePack = new DAL.Server.HttpServerRequest().EditResidenceInfo();
+                            var responsePack = new HttpServerRequest().EditResidenceInfo(0, str);
 
-                            if (responsePack.StateCode.ToUpper() == "SUCCESS")
+                            if (responsePack.Code == StateCode.SUCCESS)
                             {
                                 Application.RunOnMainThread(() =>
                                 {
-                                    //MainPage.LoginUser.regionList.Find((obj) => obj.Name == btnResidenceName.Text.Trim()).Name = str;
+                                    // UserInfo.Current.regionList.Find((obj) => obj.Name == btnResidenceName.Text.Trim()).Name = str;
                                     btnResidenceName.Text = str;
                                     upateResidenceName();
                                 });
@@ -57,27 +59,7 @@
                             }
                             else
                             {
-                                var tipStr = "Server erorr";
-                                switch (responsePack.StateCode)
-                                {
-                                    case "NoLogin":
-                                        tipStr = Language.StringByID(StringId.InvalidLoginCertificate);
-                                        break;
-                                    case "ParameterOrEmpty":
-
-                                        break;
-                                }
-                                Application.RunOnMainThread(() =>
-                                {
-                                    //鎻愮ず鍘熷洜
-                                    var tip = new Tip()
-                                    {
-                                        Text = tipStr,
-                                        CloseTime = 1,
-                                        Direction = AMPopTipDirection.None
-                                    };
-                                    tip.Show(bodyView);
-                                });
+                                IMessageCommon.Current.ShowErrorInfoAlter(responsePack.Code);
                             }
 
                         }
@@ -100,6 +82,7 @@
             btnResidenceName.MouseUpEventHandler = eventHandler;
             btnEditResidenceNameIcon.MouseUpEventHandler = eventHandler;
         }
+
         /// <summary>
         /// 鍔犺浇淇敼浣忓畢鍦板潃浜嬩欢
         /// </summary>
@@ -109,37 +92,19 @@
             {
                 Action<string> callBack = (str) =>
                 {
-                    DB_ResidenceData.residenceData.residecenInfo.Address = str;
-                    var responsePack = new DAL.Server.HttpServerRequest().EditResidenceInfo();
+                   
+                    var responsePack = new DAL.Server.HttpServerRequest().EditResidenceInfo(1 , str);
 
-                    if (responsePack.StateCode.ToUpper() == "SUCCESS")
+                    if (responsePack.Code.ToUpper() == StateCode.SUCCESS)
                     {
                         btnResidenceAddress.Text = str;
-                        OnAppConfig.Instance.SaveUserConfig();
+                        DB_ResidenceData.residenceData.residecenInfo.Address = str;
+                        DB_ResidenceData.residenceData.SaveResidenceData();
+                        //OnAppConfig.Instance.SaveUserConfig();
                     }
                     else
                     {
-                        var tipStr = "Server erorr";
-                        switch (responsePack.StateCode)
-                        {
-                            case "NoLogin":
-                                tipStr = Language.StringByID(StringId.InvalidLoginCertificate);
-                                break;
-                            case "ParameterOrEmpty":
-
-                                break;
-                        }
-                        Application.RunOnMainThread(() =>
-                        {
-                            //鎻愮ず鍘熷洜
-                            var tip = new Tip()
-                            {
-                                Text = tipStr,
-                                CloseTime = 1,
-                                Direction = AMPopTipDirection.None
-                            };
-                            tip.Show(bodyView);
-                        });
+                        IMessageCommon.Current.ShowErrorInfoAlter(responsePack.Code);
                     }
                 };
                 new PublicAssmebly().LoadDialog_EditParater(StringId.ResidenceAddress, DB_ResidenceData.residenceData.residecenInfo.Name, callBack, StringId.HouseAddressCannotBeEmpty, 0, new List<string>());
@@ -244,5 +209,23 @@
                 //{ IsBackground = true }.Start();
             };
         }
+
+        /// <summary>
+        /// 璺宠浆杩囨埛椤甸潰
+        /// </summary>
+        void LoadEvent_SkipTransferConfirmPage()
+        {
+            EventHandler<MouseEventArgs> eventHandler = (sender, e) => {
+                var skipPage = new TransferConfirmPage();
+                MainPage.BasePageView.AddChidren(skipPage);
+                skipPage.LoadPage();
+                MainPage.BasePageView.PageIndex = MainPage.BasePageView.ChildrenCount - 1;
+            };
+
+            transferRow.MouseUpEventHandler = eventHandler;
+            btnTrasferExplan.MouseUpEventHandler = eventHandler;
+            btnTrasferSkinIcon.MouseUpEventHandler = eventHandler;
+            btnTransferTitle.MouseUpEventHandler = eventHandler;
+        }
     }
 }
diff --git a/HDL_ON/UI/UI2/4-PersonalCenter/RoomListManage/RoomEditFunctionPage.cs b/HDL_ON/UI/UI2/4-PersonalCenter/RoomListManage/RoomEditFunctionPage.cs
index db68f7b..943470e 100644
--- a/HDL_ON/UI/UI2/4-PersonalCenter/RoomListManage/RoomEditFunctionPage.cs
+++ b/HDL_ON/UI/UI2/4-PersonalCenter/RoomListManage/RoomEditFunctionPage.cs
@@ -165,8 +165,8 @@
                 Gravity = Gravity.CenterHorizontal,
                 Y = Application.GetRealHeight(582),
                 Width = Application.GetRealWidth(220),
-                Height = Application.GetRealHeight(44),
-                Radius = (uint)Application.GetRealHeight(22),
+                Height = Application.GetRealWidth(44),
+                Radius = (uint)Application.GetRealWidth(22),
                 BackgroundColor = CSS_Color.MainColor,
                 TextColor = CSS_Color.MainBackgroundColor,
                 TextSize = CSS_FontSize.SubheadingFontSize,
diff --git a/HDL_ON/UI/UI2/4-PersonalCenter/RoomListManage/Transfer/TransferConfirmPage.cs b/HDL_ON/UI/UI2/4-PersonalCenter/RoomListManage/Transfer/TransferConfirmPage.cs
new file mode 100644
index 0000000..5f8b0e6
--- /dev/null
+++ b/HDL_ON/UI/UI2/4-PersonalCenter/RoomListManage/Transfer/TransferConfirmPage.cs
@@ -0,0 +1,101 @@
+锘縰sing System;
+using Shared;
+using HDL_ON.UI.CSS;
+
+namespace HDL_ON.UI
+{
+    /// <summary>
+    /// 杩囨埛纭鎻愰啋鐣岄潰
+    /// </summary>
+    public class TransferConfirmPage : FrameLayout
+    {
+        /// <summary>
+        /// 
+        /// </summary>
+        FrameLayout bodyView;
+
+        public TransferConfirmPage()
+        {
+            bodyView = this;
+        }
+
+        /// <summary>
+        /// 
+        /// </summary>
+        public void LoadPage()
+        {
+            BackgroundColor = CSS_Color.MainBackgroundColor;
+
+            new TopViewDiv(bodyView, Language.StringByID(StringId.Transfer)).LoadTopView();
+
+            #region 澶村儚
+            FrameLayout headView = new FrameLayout()
+            {
+                Y = Application.GetRealHeight(72),
+                Height = Application.GetRealHeight(132),
+            };
+            bodyView.AddChidren(headView);
+
+
+            ImageView myHeadImage = new ImageView()
+            {
+                X = Application.GetRealWidth(48),
+                Y = Application.GetRealHeight(96),
+                Width = Application.GetRealWidth(84),
+                Height = Application.GetRealWidth(84),
+                Radius = (uint)Application.GetRealWidth(42),
+                ImagePath = UserInfo.Current.headImagePagePath,
+                Gravity = Gravity.CenterVertical,
+            };
+            headView.AddChidren(myHeadImage);
+
+            ImageView transferImage = new ImageView()
+            {
+                X = Application.GetRealWidth(144),
+                Y = Application.GetRealHeight(96),
+                Width = Application.GetRealWidth(84),
+                Height = Application.GetRealWidth(32),
+                ImagePath = "PersonalCenter/Transfer.png",
+                Gravity = Gravity.Center,
+            };
+            headView.AddChidren(transferImage);
+
+            ImageView otherHeadImage = new ImageView()
+            {
+                X = Application.GetRealWidth(231),
+                Y = Application.GetRealHeight(96),
+                Width = Application.GetRealWidth(101),
+                Height = Application.GetRealWidth(101),
+                ImagePath = "PersonalCenter/Head.png",
+                Gravity = Gravity.CenterVertical,
+            };
+            headView.AddChidren(otherHeadImage);
+
+            #endregion
+
+            var btnTip = new Button()
+            {
+                Y = headView.Bottom,
+                X = Application.GetRealWidth(16),
+                Width = Application.GetRealWidth(343),
+                Height = Application.GetRealHeight(22),
+                TextAlignment = TextAlignment.Center,
+                TextColor = CSS_Color.FirstLevelTitleColor,
+                TextSize = CSS_FontSize.SubheadingFontSize,
+                Text = "鎮ㄧ殑浣忓畢灏嗚繃鎴风粰鍏朵粬HDL璐﹀彿",
+            };
+            bodyView.AddChidren(btnTip);
+
+            //
+            var btnConfirm = new ConfirmButton()
+            {
+                Y = Application.GetRealHeight(456),
+                Text = "纭杩囨埛",
+            };
+            bodyView.AddChidren(btnConfirm);
+
+        }
+
+    }
+
+}
diff --git a/HDL_ON/UI/UI2/4-PersonalCenter/SearchDevice/SearchDevicePage.cs b/HDL_ON/UI/UI2/4-PersonalCenter/SearchDevice/SearchDevicePage.cs
index 2807957..2077630 100644
--- a/HDL_ON/UI/UI2/4-PersonalCenter/SearchDevice/SearchDevicePage.cs
+++ b/HDL_ON/UI/UI2/4-PersonalCenter/SearchDevice/SearchDevicePage.cs
@@ -34,39 +34,37 @@
             {
                 deviceIpList.Clear();
                 contentView.RemoveAll();
-                DriverLayer.Control.ins.ChangeCommunicationMode(DriverLayer.CommunicationMode.local_BusUdp);
-                UdpSocket._BusSocket.SearchNetDeviceAction = (jto) =>
-                {
-                    var device = JsonConvert.DeserializeObject<DeviceModule>(jto.ToString());
-                    if (device != null)
-                    {
-                        lock (deviceIpList)
-                        {
-                            if (!deviceIpList.Contains(device.ip_address))
-                            {
-                                deviceIpList.Add(device.ip_address);
-
-                                MainPage.Log($"鎼滅储鍒扮綉缁滆澶囷細{device.ip_address}");
-
-                                Application.RunOnMainThread(() =>
-                                {
-#if DEBUG
-#else
-                                    if(device.gateway_type== 4)
-#endif
-                                    {
-                                        LoadRow(device);
-                                    }
-                                });
-                            }
-                            else
-                            {
-                                MainPage.Log($"宸插姞杞借IP璁惧:{device.ip_address}");
-                            }
-                        }
-                    }
-                };
-                DriverLayer.Control.ins.myUdp.ReadGatewayIP();
+                //DriverLayer.Control.ins.ChangeCommunicationMode(DriverLayer.CommunicationMode.local_BusUdp);
+//                UdpSocket._BusSocket.SearchNetDeviceAction = (jto) =>
+//                {
+//                    var device = JsonConvert.DeserializeObject<DeviceModule>(jto.ToString());
+//                    if (device != null)
+//                    {
+//                        lock (deviceIpList)
+//                        {
+//                            if (!deviceIpList.Contains(device.ip_address))
+//                            {
+//                                deviceIpList.Add(device.ip_address);
+//                                MainPage.Log($"鎼滅储鍒扮綉缁滆澶囷細{device.ip_address}");
+//                                Application.RunOnMainThread(() =>
+//                                {
+//#if DEBUG
+//#else
+//                                    if(device.gateway_type== 4)
+//#endif
+//                                    {
+//                                        LoadRow(device);
+//                                    }
+//                                });
+//                            }
+//                            else
+//                            {
+//                                MainPage.Log($"宸插姞杞借IP璁惧:{device.ip_address}");
+//                            }
+//                        }
+//                    }
+//                };
+                DriverLayer.Control.Ins.myUdp.SearchLocalGateway();
                 contentView.EndHeaderRefreshing();
             };
 
diff --git a/HDL_ON/UI/UI2/4-PersonalCenter/SearchDevice/VoicePanelSceneListPage.cs b/HDL_ON/UI/UI2/4-PersonalCenter/SearchDevice/VoicePanelSceneListPage.cs
index 1de6417..24ad65d 100644
--- a/HDL_ON/UI/UI2/4-PersonalCenter/SearchDevice/VoicePanelSceneListPage.cs
+++ b/HDL_ON/UI/UI2/4-PersonalCenter/SearchDevice/VoicePanelSceneListPage.cs
@@ -59,9 +59,9 @@
             };
             divTopTitle.AddChidren(btnTitle);
 
-            DriverLayer.Control.ins.reportIp = device.ip_address;
-            DriverLayer.Control.ins.ChangeCommunicationMode(DriverLayer.CommunicationMode.tcp_local_client);
-            DriverLayer.Control.ins.myTcpClient.ReceiveEvent = ReceiveEvent;
+            DriverLayer.Control.Ins.reportIp = device.ip_address;
+            //DriverLayer.Control.ins.OpenTcpClent();
+            DriverLayer.Control.Ins.myTcpClient.ReceiveEvent = ReceiveEvent;
 
             contentView = new VerticalRefreshLayout()
             {
@@ -84,8 +84,8 @@
                 Gravity = Gravity.CenterHorizontal,
                 Y = Application.GetRealHeight(582),
                 Width = Application.GetRealWidth(220),
-                Height = Application.GetRealHeight(44),
-                Radius = (uint)Application.GetRealHeight(22),
+                Height = Application.GetRealWidth(44),
+                Radius = (uint)Application.GetRealWidth(22),
                 BackgroundColor = CSS_Color.MainColor,
                 TextColor = CSS_Color.MainBackgroundColor,
                 TextSize = CSS_FontSize.SubheadingFontSize,
@@ -180,7 +180,7 @@
 
             var sendJson = JsonConvert.SerializeObject(sendingObject);
             var sendBytes = System.Text.Encoding.ASCII.GetBytes(sendJson);
-            DriverLayer.Control.ins.myTcpClient.SendMessage(sendBytes);
+            DriverLayer.Control.Ins.myTcpClient.SendMessage(sendBytes);
 
         }
         /// <summary>
diff --git a/HDL_ON/UI/UI2/4-PersonalCenter/SearchDevice/VoicePanelScenePage.cs b/HDL_ON/UI/UI2/4-PersonalCenter/SearchDevice/VoicePanelScenePage.cs
index 2ecfb81..a10824a 100644
--- a/HDL_ON/UI/UI2/4-PersonalCenter/SearchDevice/VoicePanelScenePage.cs
+++ b/HDL_ON/UI/UI2/4-PersonalCenter/SearchDevice/VoicePanelScenePage.cs
@@ -174,8 +174,8 @@
                 Gravity = Gravity.CenterHorizontal,
                 Y = Application.GetRealHeight(582),
                 Width = Application.GetRealWidth(220),
-                Height = Application.GetRealHeight(44),
-                Radius = (uint)Application.GetRealHeight(22),
+                Height = Application.GetRealWidth(44),
+                Radius = (uint)Application.GetRealWidth(22),
                 BackgroundColor = CSS_Color.MainColor,
                 TextColor = CSS_Color.MainBackgroundColor,
                 TextSize = CSS_FontSize.SubheadingFontSize,
diff --git a/HDL_ON/UI/UI2/4-PersonalCenter/UnlockSetting/AppUnlockGesturePage.cs b/HDL_ON/UI/UI2/4-PersonalCenter/UnlockSetting/AppUnlockGesturePage.cs
index 9fe56f4..0ed1e8d 100644
--- a/HDL_ON/UI/UI2/4-PersonalCenter/UnlockSetting/AppUnlockGesturePage.cs
+++ b/HDL_ON/UI/UI2/4-PersonalCenter/UnlockSetting/AppUnlockGesturePage.cs
@@ -1,6 +1,8 @@
 锘縰sing System;
 using HDL_ON.UI.CSS;
 using Shared;
+using HDL_ON.DAL.Server;
+
 namespace HDL_ON.UI
 {
     public class AppUnlockGesturePage : FrameLayout
@@ -277,13 +279,13 @@
                 {
                     if (optionType == "7")
                     {
-                        MainPage.GoLoginPage(MainPage.LoginUser);
+                        MainPage.GoLoginPage( UserInfo.Current);
                     }
                     else
                     {
                         Action<string> action = (pw) => {
-                            var loginResult = new DAL.Server.HttpServerRequest().LoginByPassword(MainPage.LoginUser.accountString, pw);
-                            if (loginResult.StateCode.ToUpper() == "SUCCESS")
+                            var resultObj = new HttpServerRequest().LoginByPassword( UserInfo.Current.AccountString, pw);
+                            if (resultObj.Code == StateCode.SUCCESS)
                             {
                                 OnAppConfig.Instance.appUnlockPasswrod = "";
                                 OnAppConfig.Instance.appUnlockType = new System.Collections.Generic.List<string>();
@@ -291,40 +293,10 @@
                                 this.RemoveFromParent();
                                 backAction();
                             }
-                            //鐧诲綍澶辫触
                             else
                             {
-                                string tipStr = "Sever erorr";
-                                switch (loginResult.StateCode)
-                                {
-                                    case "ValidCodeAndPhoneNoEqual":
-                                        tipStr = Language.StringByID(StringId.VerificationCodeError);
-                                        break;
-                                    case "USERNAMEORPWDERROR":
-                                        tipStr = Language.StringByID(StringId.LoginFailed_AccountOrPasswordError);
-                                        break;
-                                    case "ACCOUNTNOEXISTS":
-                                        tipStr = Language.StringByID(StringId.ACCOUNTNOEXISTS);
-                                        break;
-                                    case "NoRecord":
-                                        tipStr = Language.StringByID(StringId.PlsGetTheVerificationCode);
-                                        break;
-                                    case "Self:Net_Error":
-                                        tipStr = Language.StringByID(StringId.NetworkAnomaly);
-                                        break;
-                                }
-                                //璐﹀彿鎴栬�呭瘑鐮侀敊璇�
-                                Application.RunOnMainThread(() =>
-                                {
-                                    //鎻愮ず鍘熷洜
-                                    var tip = new Tip()
-                                    {
-                                        Text = tipStr,
-                                        CloseTime = 1,
-                                        Direction = AMPopTipDirection.None
-                                    };
-                                    tip.Show(bodyView);
-                                });
+                                //鐧诲綍澶辫触
+                                IMessageCommon.Current.ShowErrorInfoAlter(resultObj.Code);
                             }
 
                         };
diff --git a/HDL_ON/UI/UI2/4-PersonalCenter/UnlockSetting/AppUnlockPasswordPage.cs b/HDL_ON/UI/UI2/4-PersonalCenter/UnlockSetting/AppUnlockPasswordPage.cs
index 743fafe..f64b708 100644
--- a/HDL_ON/UI/UI2/4-PersonalCenter/UnlockSetting/AppUnlockPasswordPage.cs
+++ b/HDL_ON/UI/UI2/4-PersonalCenter/UnlockSetting/AppUnlockPasswordPage.cs
@@ -1,6 +1,7 @@
 锘縰sing System;
 using Shared;
 using HDL_ON.UI.CSS;
+using HDL_ON.DAL.Server;
 
 namespace HDL_ON.UI
 {
@@ -362,13 +363,13 @@
                 {
                     if (optionType == "7")
                     {
-                        MainPage.GoLoginPage(MainPage.LoginUser);
+                        MainPage.GoLoginPage( UserInfo.Current);
                     }
                     else
                     {
                         Action<string> action = (pw) => {
-                            var loginResult = new DAL.Server.HttpServerRequest().LoginByPassword(MainPage.LoginUser.accountString, pw);
-                            if (loginResult.StateCode.ToUpper() == "SUCCESS")
+                            var resultObj = new HttpServerRequest().LoginByPassword( UserInfo.Current.AccountString, pw);
+                            if (resultObj.Code.ToUpper() == StateCode.SUCCESS)
                             {
                                 OnAppConfig.Instance.appUnlockPasswrod = "";
                                 OnAppConfig.Instance.appUnlockType = new System.Collections.Generic.List<string>();
@@ -376,40 +377,10 @@
                                 this.RemoveFromParent();
                                 backAction();
                             }
-                            //鐧诲綍澶辫触
                             else
                             {
-                                string tipStr = "Sever erorr";
-                                switch (loginResult.StateCode)
-                                {
-                                    case "ValidCodeAndPhoneNoEqual":
-                                        tipStr = Language.StringByID(StringId.VerificationCodeError);
-                                        break;
-                                    case "USERNAMEORPWDERROR":
-                                        tipStr = Language.StringByID(StringId.LoginFailed_AccountOrPasswordError);
-                                        break;
-                                    case "ACCOUNTNOEXISTS":
-                                        tipStr = Language.StringByID(StringId.ACCOUNTNOEXISTS);
-                                        break;
-                                    case "NoRecord":
-                                        tipStr = Language.StringByID(StringId.PlsGetTheVerificationCode);
-                                        break;
-                                    case "Self:Net_Error":
-                                        tipStr = Language.StringByID(StringId.NetworkAnomaly);
-                                        break;
-                                }
-                                //璐﹀彿鎴栬�呭瘑鐮侀敊璇�
-                                Application.RunOnMainThread(() =>
-                                {
-                                    //鎻愮ず鍘熷洜
-                                    var tip = new Tip()
-                                    {
-                                        Text = tipStr,
-                                        CloseTime = 1,
-                                        Direction = AMPopTipDirection.None
-                                    };
-                                    tip.Show(bodyView);
-                                });
+                                //鐧诲綍澶辫触
+                                IMessageCommon.Current.ShowErrorInfoAlter(resultObj.Code);
                             }
 
                         };
diff --git a/HDL_ON/UI/UI2/FuntionControlView/AC/ACPage.cs b/HDL_ON/UI/UI2/FuntionControlView/AC/ACPage.cs
index ea9b15c..e898657 100644
--- a/HDL_ON/UI/UI2/FuntionControlView/AC/ACPage.cs
+++ b/HDL_ON/UI/UI2/FuntionControlView/AC/ACPage.cs
@@ -144,13 +144,13 @@
                 Width = Application.GetRealWidth(260-40),
                 Height = Application.GetRealWidth(260-40),
                 OpenAngle = 160,
-                ThumbImagePath = aC.trait_on_off.value.ToString() == "on" ? "FunctionIcon/AC/DiyThumbIconOn.png" : "FunctionIcon/AC/DiyThumbIcon.png",
+                ThumbImagePath = aC.trait_on_off.curValue.ToString() == "on" ? "FunctionIcon/AC/DiyThumbIconOn.png" : "FunctionIcon/AC/DiyThumbIcon.png",
                 ThumbImageHeight = Application.GetRealWidth(50),
-                ProgressBarColor = aC.trait_on_off.value.ToString() == "on"? CSS_Color.MainColor :CSS_Color.PromptingColor2,
+                ProgressBarColor = aC.trait_on_off.curValue.ToString() == "on"? CSS_Color.MainColor :CSS_Color.PromptingColor2,
                 MinValue = 16,
                 MaxValue = 38,
-                Progress = Convert.ToInt32( aC.trait_temp.value),
-                IsClickable =  aC.trait_on_off.value.ToString() == "on" ,
+                Progress = Convert.ToInt32( aC.trait_temp.curValue),
+                IsClickable =  aC.trait_on_off.curValue.ToString() == "on" ,
                 ArcColor = CSS_Color.BackgroundColor,
                 SeekBarPadding = Application.GetRealWidth(8),
 #else
@@ -159,13 +159,13 @@
                 Width = Application.GetRealWidth(260 - 40),
                 Height = Application.GetRealWidth(260 - 40),
                 OpenAngle = 160,
-                ThumbImagePath = aC.trait_on_off.value.ToString() == "on" ? "FunctionIcon/AC/DiyThumbIconOn.png" : "FunctionIcon/AC/DiyThumbIcon.png",
+                ThumbImagePath = aC.trait_on_off.curValue.ToString() == "on" ? "FunctionIcon/AC/DiyThumbIconOn.png" : "FunctionIcon/AC/DiyThumbIcon.png",
                 ThumbImageHeight = Application.GetRealWidth(50),
-                ProgressBarColor = aC.trait_on_off.value.ToString() == "on" ? CSS_Color.MainColor : CSS_Color.PromptingColor2,
+                ProgressBarColor = aC.trait_on_off.curValue.ToString() == "on" ? CSS_Color.MainColor : CSS_Color.PromptingColor2,
                 MinValue = 16,
                 MaxValue = 38,
-                Progress = Convert.ToInt32( aC.trait_temp.value),
-                IsClickable = aC.trait_on_off.value.ToString() == "on",
+                Progress = Convert.ToInt32( aC.trait_temp.curValue),
+                IsClickable = aC.trait_on_off.curValue.ToString() == "on",
                 ArcColor = CSS_Color.BackgroundColor,
                 SeekBarPadding = Application.GetRealWidth(7),
 #endif
@@ -181,7 +181,7 @@
                 TextColor = CSS_Color.FirstLevelTitleColor,
                 TextSize = 50,
                 IsBold = true,
-                Text = aC.trait_temp.value.ToString(),
+                Text = aC.trait_temp.curValue.ToString(),
                 TextAlignment = TextAlignment.Center,
             };
             controlView.AddChidren(btnTemp);
@@ -260,7 +260,7 @@
                 Height = Application.GetRealWidth(40),
                 UnSelectedImagePath = "Public/PowerClose.png",
                 SelectedImagePath = "Public/PowerOpen.png",
-                IsSelected = aC.trait_on_off.value.ToString() == "on"
+                IsSelected = aC.trait_on_off.curValue.ToString() == "on"
             };
             controlView.AddChidren(btnSwitch);
 
@@ -317,28 +317,28 @@
             };
             modeChangeView.AddChidren(btnLine);
 
-            foreach(var m in aC.trait_mode.value_key)
+            foreach(var m in aC.trait_mode.value)
             {
                 Button btnModeIcon = new Button()
                 {
                     X = btnTitle.X,
-                    Y = Application.GetRealHeight(44 * (aC.trait_mode.value_key.IndexOf(m) + 1) + 10 + 8),
+                    Y = Application.GetRealHeight(44 * (aC.trait_mode.value.IndexOf(m) + 1) + 10 + 8),
                     Width = Application.GetRealWidth(24),
                     Height = Application.GetRealWidth(24),
-                    IsSelected = aC.trait_mode.value.ToString() == m,
+                    IsSelected = aC.trait_mode.curValue.ToString() == m,
                 };
                 modeChangeView.AddChidren(btnModeIcon);
 
                 Button btnModeText = new Button()
                 {
                     X = Application.GetRealWidth(12) + btnModeIcon.Right,
-                    Y = Application.GetRealHeight(44 * (aC.trait_mode.value_key.IndexOf(m) + 1) + 8),
+                    Y = Application.GetRealHeight(44 * (aC.trait_mode.value.IndexOf(m) + 1) + 8),
                     Height = Application.GetRealHeight(44),
                     Width = Application.GetRealWidth(70),
                     TextAlignment = TextAlignment.CenterLeft,
                     TextColor = CSS_Color.FirstLevelTitleColor,
                     SelectedTextColor = CSS_Color.MainColor,
-                    IsSelected = aC.trait_mode.value.ToString() == m,
+                    IsSelected = aC.trait_mode.curValue.ToString() == m,
                     TextSize = CSS_FontSize.TextFontSize,
                 };
                 modeChangeView.AddChidren(btnModeText);
@@ -372,7 +372,7 @@
                         break;
                 }
 
-                if(aC.trait_mode.value_key.IndexOf(m) < aC.trait_mode.value_key.Count-1)
+                if(aC.trait_mode.value.IndexOf(m) < aC.trait_mode.value.Count-1)
                 {
                     modeChangeView.AddChidren(new Button()
                     {
@@ -441,28 +441,28 @@
             };
             modeChangeView.AddChidren(btnLine);
 
-            foreach (var m in aC.trait_fan.value_key)
+            foreach (var m in aC.trait_fan.value)
             {
                 Button btnFanIcon = new Button()
                 {
                     X = btnTitle.X,
-                    Y = Application.GetRealHeight(44 * (aC.trait_fan.value_key.IndexOf(m) + 1) + 10 + 8),
+                    Y = Application.GetRealHeight(44 * (aC.trait_fan.value.IndexOf(m) + 1) + 10 + 8),
                     Width = Application.GetRealWidth(24),
                     Height = Application.GetRealWidth(24),
-                    IsSelected = aC.trait_fan.value.ToString() == m,
+                    IsSelected = aC.trait_fan.curValue.ToString() == m,
                 };
                 modeChangeView.AddChidren(btnFanIcon);
 
                 Button btnFanText = new Button()
                 {
                     X = Application.GetRealWidth(12) + btnFanIcon.Right,
-                    Y = Application.GetRealHeight(44 * (aC.trait_fan.value_key.IndexOf(m) + 1) + 8),
+                    Y = Application.GetRealHeight(44 * (aC.trait_fan.value.IndexOf(m) + 1) + 8),
                     Height = Application.GetRealHeight(44),
                     Width = Application.GetRealWidth(70),
                     TextAlignment = TextAlignment.CenterLeft,
                     TextColor = CSS_Color.FirstLevelTitleColor,
                     SelectedTextColor = CSS_Color.MainColor,
-                    IsSelected = aC.trait_fan.value.ToString() == m,
+                    IsSelected = aC.trait_fan.curValue.ToString() == m,
                     TextSize = CSS_FontSize.TextFontSize,
                 };
                 modeChangeView.AddChidren(btnFanText);
@@ -491,7 +491,7 @@
                         break;
                 }
 
-                if (aC.trait_fan.value_key.IndexOf(m) < aC.trait_fan.value_key.Count - 1)
+                if (aC.trait_fan.value.IndexOf(m) < aC.trait_fan.value.Count - 1)
                 {
                     modeChangeView.AddChidren(new Button()
                     {
diff --git a/HDL_ON/UI/UI2/FuntionControlView/AC/ACPageBLL.cs b/HDL_ON/UI/UI2/FuntionControlView/AC/ACPageBLL.cs
index 2a32554..f75da2e 100644
--- a/HDL_ON/UI/UI2/FuntionControlView/AC/ACPageBLL.cs
+++ b/HDL_ON/UI/UI2/FuntionControlView/AC/ACPageBLL.cs
@@ -24,20 +24,20 @@
                         return;
                     }
                     updataTime = DateTime.Now;
-                    bodyView.arcBar.ProgressBarColor = bodyView.aC.trait_on_off.value.ToString() == "on" ? CSS_Color.MainColor : CSS_Color.PromptingColor2;
-                    bodyView.btnTemp.Text = uAc.trait_temp.value.ToString();
+                    bodyView.arcBar.ProgressBarColor = bodyView.aC.trait_on_off.curValue.ToString() == "on" ? CSS_Color.MainColor : CSS_Color.PromptingColor2;
+                    bodyView.btnTemp.Text = uAc.trait_temp.curValue.ToString();
                     bodyView.btnIndoorTemp.Text = Language.StringByID(StringId.IndoorTemp) + uAc.indoorTemp + "掳C";
                     bodyView.btnMode.UnSelectedImagePath = uAc.curModeImage;
                     bodyView.btnWindSpeed.UnSelectedImagePath = uAc.curFanImage;
-                    bodyView.btnSwitch.IsSelected = uAc.trait_on_off.value.ToString() == "on";
+                    bodyView.btnSwitch.IsSelected = uAc.trait_on_off.curValue.ToString() == "on";
                     if (uAc.refreshTime.AddMilliseconds(1000) < DateTime.Now)
                     {
-                        bodyView.arcBar.Progress = Convert.ToInt32(uAc.trait_temp.value);
+                        bodyView.arcBar.Progress = Convert.ToInt32(uAc.trait_temp.curValue);
 
                     }
-                    bodyView.arcBar.ProgressBarColor = uAc.trait_on_off.value.ToString() == "on" ? CSS_Color.MainColor : CSS_Color.PromptingColor2;
-                    bodyView.arcBar.ThumbImagePath = uAc.trait_on_off.value.ToString() == "on" ? "FunctionIcon/AC/DiyThumbIconOn.png" : "FunctionIcon/AC/DiyThumbIcon.png";
-                    bodyView.arcBar.IsClickable = uAc.trait_on_off.value.ToString() == "on";
+                    bodyView.arcBar.ProgressBarColor = uAc.trait_on_off.curValue.ToString() == "on" ? CSS_Color.MainColor : CSS_Color.PromptingColor2;
+                    bodyView.arcBar.ThumbImagePath = uAc.trait_on_off.curValue.ToString() == "on" ? "FunctionIcon/AC/DiyThumbIconOn.png" : "FunctionIcon/AC/DiyThumbIcon.png";
+                    bodyView.arcBar.IsClickable = uAc.trait_on_off.curValue.ToString() == "on";
                 });
             }
             catch (Exception ex)
@@ -56,6 +56,7 @@
             {
                 btnFunctionName.Text = btnFunctionName_Out.Text = aC.name;
                 btnFromFloor_Out.Text = btnFromFoorAndRoom.Text = aC.GetRoomListName();
+                aC.SaveFunctionData();
             };
         }
 
@@ -78,7 +79,7 @@
         {
             btnMinus.MouseUpEventHandler = (sender, e) =>
             {
-                var temp = Convert.ToInt32(aC.trait_temp.value);
+                var temp = Convert.ToInt32(aC.trait_temp.curValue);
                 if (temp < 17)
                 {
                     return;
@@ -86,15 +87,15 @@
                 temp--;
                 arcBar.Progress = temp;
                 btnTemp.Text = temp.ToString();
-                aC.trait_temp.value = temp;
+                aC.trait_temp.curValue = temp;
                 //Control.Send(CommandType_A.write, aC);
                 System.Collections.Generic.Dictionary<string, string> d = new System.Collections.Generic.Dictionary<string, string>();
                 d.Add("temp", temp.ToString());
-                Control.ins.SendWriteCommand(aC, d);
+                Control.Ins.SendWriteCommand(aC, d);
             };
             btnPlus.MouseUpEventHandler = (sender, e) =>
             {
-                var temp = Convert.ToInt32(aC.trait_temp.value);
+                var temp = Convert.ToInt32(aC.trait_temp.curValue);
                 if (temp > 37)
                 {
                     return;
@@ -102,26 +103,26 @@
                 temp++;
                 arcBar.Progress = temp;
                 btnTemp.Text = temp.ToString();
-                aC.trait_temp.value = temp;
+                aC.trait_temp.curValue = temp;
                 System.Collections.Generic.Dictionary<string, string> d = new System.Collections.Generic.Dictionary<string, string>();
-                d.Add("temp", aC.trait_temp.value.ToString());
-                Control.ins.SendWriteCommand(aC, d);
+                d.Add("temp", aC.trait_temp.curValue.ToString());
+                Control.Ins.SendWriteCommand(aC, d);
                 //aC.GetSendJObject
 
             };
             arcBar.OnStopTrackingTouchEvent = (sender, e) =>
            {
-               aC.trait_temp.value = arcBar.Progress;
-               btnTemp.Text = aC.trait_temp.value.ToString();
+               aC.trait_temp.curValue = arcBar.Progress;
+               btnTemp.Text = aC.trait_temp.curValue.ToString();
                 //Control.Send(CommandType_A.write, aC);
                 System.Collections.Generic.Dictionary<string, string> d = new System.Collections.Generic.Dictionary<string, string>();
-               d.Add("temp", aC.trait_temp.value.ToString());
-               Control.ins.SendWriteCommand(aC, d);
+               d.Add("temp", aC.trait_temp.curValue.ToString());
+               Control.Ins.SendWriteCommand(aC, d);
            };
             arcBar.OnProgressChangedEvent = (sender, e) =>
             {
-                aC.trait_temp.value = e;
-                btnTemp.Text = aC.trait_temp.value.ToString();
+                aC.trait_temp.curValue = e;
+                btnTemp.Text = aC.trait_temp.curValue.ToString();
             };
         }
         /// <summary>
@@ -141,10 +142,10 @@
             btnSwitch.MouseUpEventHandler = (sender, e) =>
             {
                 btnSwitch.IsSelected = !btnSwitch.IsSelected;
-                aC.trait_on_off.value = btnSwitch.IsSelected ? "on" : "off";
-                bodyView.arcBar.ProgressBarColor = aC.trait_on_off.value.ToString() == "on" ? CSS_Color.MainColor : CSS_Color.PromptingColor2;
-                bodyView.arcBar.ThumbImagePath = aC.trait_on_off.value.ToString() == "on" ? "FunctionIcon/AC/DiyThumbIconOn.png" : "FunctionIcon/AC/DiyThumbIcon.png";
-                bodyView.arcBar.IsClickable = aC.trait_on_off.value.ToString() == "on";
+                aC.trait_on_off.curValue = btnSwitch.IsSelected ? "on" : "off";
+                bodyView.arcBar.ProgressBarColor = aC.trait_on_off.curValue.ToString() == "on" ? CSS_Color.MainColor : CSS_Color.PromptingColor2;
+                bodyView.arcBar.ThumbImagePath = aC.trait_on_off.curValue.ToString() == "on" ? "FunctionIcon/AC/DiyThumbIconOn.png" : "FunctionIcon/AC/DiyThumbIcon.png";
+                bodyView.arcBar.IsClickable = aC.trait_on_off.curValue.ToString() == "on";
 
                 //bodyView.arcBar.ProgressBarColor = aC.on_off == "on" ? CSS_Color.MainColor : CSS_Color.PromptingColor2;
                 //bodyView.arcBar.ThumbImagePath = aC.on_off == "on" ? "FunctionIcon/AC/DiyThumbIconOn.png" : "FunctionIcon/AC/DiyThumbIcon.png";
@@ -152,8 +153,8 @@
 
                 //Control.Send(CommandType_A.write, aC);
                 System.Collections.Generic.Dictionary<string, string> d = new System.Collections.Generic.Dictionary<string, string>();
-                d.Add("on_off", aC.trait_on_off.value.ToString());
-                Control.ins.SendWriteCommand(aC, d);
+                d.Add("on_off", aC.trait_on_off.curValue.ToString());
+                Control.Ins.SendWriteCommand(aC, d);
             };
         }
 
@@ -169,12 +170,12 @@
             EventHandler<MouseEventArgs> eventHandler1 = (sender, e) =>
             {
                 btn1.IsSelected = btn2.IsSelected = true;
-                aC.trait_mode.value = curMode;
+                aC.trait_mode.curValue = curMode;
                 btnMode.UnSelectedImagePath = aC.curModeImage;
                 //Control.Send(CommandType_A.write, aC);
                 System.Collections.Generic.Dictionary<string, string> d = new System.Collections.Generic.Dictionary<string, string>();
                 d.Add("mode", aC.curModeIndex.ToString());
-                Control.ins.SendWriteCommand(aC, d);
+                Control.Ins.SendWriteCommand(aC, d);
                 dialog.Close();
             };
             btn1.MouseUpEventHandler = eventHandler1;
@@ -193,12 +194,12 @@
             EventHandler<MouseEventArgs> eventHandler1 = (sender, e) =>
             {
                 btn1.IsSelected = btn2.IsSelected = true;
-                aC.trait_fan.value = curFan;
+                aC.trait_fan.curValue = curFan;
                 btnWindSpeed.UnSelectedImagePath = aC.curFanImage;
                 //Control.Send(CommandType_A.write, aC);
                 System.Collections.Generic.Dictionary<string, string> d = new System.Collections.Generic.Dictionary<string, string>();
                 d.Add("fan", aC.curFanIndex.ToString());
-                Control.ins.SendWriteCommand(aC, d);
+                Control.Ins.SendWriteCommand(aC, d);
                 dialog.Close();
             };
             btn1.MouseUpEventHandler = eventHandler1;
diff --git a/HDL_ON/UI/UI2/FuntionControlView/Curtain/CurtainModulePageBLL.cs b/HDL_ON/UI/UI2/FuntionControlView/Curtain/CurtainModulePageBLL.cs
index 9196e67..6663157 100644
--- a/HDL_ON/UI/UI2/FuntionControlView/Curtain/CurtainModulePageBLL.cs
+++ b/HDL_ON/UI/UI2/FuntionControlView/Curtain/CurtainModulePageBLL.cs
@@ -19,21 +19,21 @@
                 }
                 if (uCurtain.functionType == bodyView.curtain.functionType && uCurtain.sid == bodyView.curtain.sid)
                 {
-                    if (uCurtain.trait_on_off.value.ToString() == "stop")
+                    if (uCurtain.trait_on_off.curValue.ToString() == "stop")
                     {
                         //bodyView.btnCurtainOpen.IsSelected = true;
                         //bodyView.btnCurtainClose.IsSelected = false;
                         //bodyView.btnCurtainStop.IsSelected = false;
                         //bodyView.btnCurtainBgIcon.IsSelected = true;
                     }
-                    else if (uCurtain.trait_on_off.value.ToString() == "on")
+                    else if (uCurtain.trait_on_off.curValue.ToString() == "on")
                     {
                         //bodyView.btnCurtainOpen.IsSelected = true;
                         //bodyView.btnCurtainClose.IsSelected = false;
                         //bodyView.btnCurtainStop.IsSelected = false;
                         bodyView.btnCurtainBgIcon.IsSelected = true;
                     }
-                    else if (uCurtain.trait_on_off.value.ToString() == "off")
+                    else if (uCurtain.trait_on_off.curValue.ToString() == "off")
                     {
                         //bodyView.btnCurtainOpen.IsSelected = false;
                         //bodyView.btnCurtainClose.IsSelected = true;
@@ -52,6 +52,7 @@
             actionRefresh = () => {
                 btnFunctionName.Text = btnFunctionName_Out.Text = curtain.name;
                 btnFromFloor_Out.Text = btnFromFoorAndRoom.Text = curtain.GetRoomListName();
+                curtain.SaveFunctionData();
             };
             UpdataState(curtain);
         }
@@ -75,11 +76,11 @@
                 btnCurtainClose.IsSelected = false;
                 //btnCurtainStop.IsSelected = false;
                 //btnCurtainOpen.IsSelected = false;
-                curtain.trait_on_off.value = "off";
+                curtain.trait_on_off.curValue = "off";
                 //Control.Send(CommandType_A.write,curtain);
                 System.Collections.Generic.Dictionary<string, string> d = new System.Collections.Generic.Dictionary<string, string>();
-                d.Add("on_off", curtain.trait_on_off.value.ToString());
-                Control.ins.SendWriteCommand(curtain, d);
+                d.Add("on_off", curtain.trait_on_off.curValue.ToString());
+                Control.Ins.SendWriteCommand(curtain, d);
             };
 
             btnCurtainStop.MouseDownEventHandler = (sender, e) =>
@@ -99,22 +100,22 @@
                 //btnCurtainOpen.IsSelected = false;
                 //btnCurtainClose.IsSelected = false;
                 btnCurtainStop.IsSelected = false;
-                curtain.trait_on_off.value = "stop";
+                curtain.trait_on_off.curValue = "stop";
                 //Control.Send(CommandType_A.write, curtain);
                 System.Collections.Generic.Dictionary<string, string> d = new System.Collections.Generic.Dictionary<string, string>();
-                d.Add("on_off", curtain.trait_on_off.value.ToString());
-                Control.ins.SendWriteCommand(curtain, d);
+                d.Add("on_off", curtain.trait_on_off.curValue.ToString());
+                Control.Ins.SendWriteCommand(curtain, d);
             };
             btnCurtainOpen.MouseUpEventHandler = (sender, e) =>
             {
                 btnCurtainOpen.IsSelected = false;
                 //btnCurtainClose.IsSelected = false;
                 //btnCurtainStop.IsSelected = false;
-                curtain.trait_on_off.value = "on";
+                curtain.trait_on_off.curValue = "on";
                 //Control.Send(CommandType_A.write, curtain);
                 System.Collections.Generic.Dictionary<string, string> d = new System.Collections.Generic.Dictionary<string, string>();
-                d.Add("on_off", curtain.trait_on_off.value.ToString());
-                Control.ins.SendWriteCommand(curtain, d);
+                d.Add("on_off", curtain.trait_on_off.curValue.ToString());
+                Control.Ins.SendWriteCommand(curtain, d);
             };
 
         }
diff --git a/HDL_ON/UI/UI2/FuntionControlView/Curtain/MotorCurtainPageBLL.cs b/HDL_ON/UI/UI2/FuntionControlView/Curtain/MotorCurtainPageBLL.cs
index 40b565c..d843a0c 100644
--- a/HDL_ON/UI/UI2/FuntionControlView/Curtain/MotorCurtainPageBLL.cs
+++ b/HDL_ON/UI/UI2/FuntionControlView/Curtain/MotorCurtainPageBLL.cs
@@ -17,19 +17,19 @@
                     return;
                 if (uCurtain.functionType == bodyView.curtain.functionType && uCurtain.sid == bodyView.curtain.sid)
                 {
-                    if (uCurtain.trait_on_off.value.ToString() == "stop")
+                    if (uCurtain.trait_on_off.curValue.ToString() == "stop")
                     {
                         bodyView.btnCurtainOpen.IsSelected = true;
                         bodyView.btnCurtainClose.IsSelected = false;
                         bodyView.btnCurtainStop.IsSelected = false;
                     }
-                    else if (uCurtain.trait_on_off.value.ToString() == "on")
+                    else if (uCurtain.trait_on_off.curValue.ToString() == "on")
                     {
                         bodyView.btnCurtainOpen.IsSelected = true;
                         bodyView.btnCurtainClose.IsSelected = false;
                         bodyView.btnCurtainStop.IsSelected = false;
                     }
-                    else if (uCurtain.trait_on_off.value.ToString() == "off")
+                    else if (uCurtain.trait_on_off.curValue.ToString() == "off")
                     {
                         bodyView.btnCurtainOpen.IsSelected = false;
                         bodyView.btnCurtainClose.IsSelected = true;
@@ -58,6 +58,7 @@
             {
                 btnFunctionName.Text = btnFunctionName_Out.Text = curtain.name;
                 btnFromFloor_Out.Text = btnFromFoorAndRoom.Text = curtain.GetRoomListName();
+                curtain.SaveFunctionData();
             };
         }
         /// <summary>
@@ -82,11 +83,11 @@
                 btnCurtainClose.IsSelected = true;
                 btnCurtainStop.IsSelected = false;
                 btnCurtainOpen.IsSelected = false;
-                curtain.trait_on_off.value = "off";
+                curtain.trait_on_off.curValue = "off";
                 curtain.percent = 0;
                 System.Collections.Generic.Dictionary<string, string> d = new System.Collections.Generic.Dictionary<string, string>();
-                d.Add("on_off", curtain.trait_on_off.value.ToString());
-                DriverLayer.Control.ins.SendWriteCommand(curtain, d);
+                d.Add("on_off", curtain.trait_on_off.curValue.ToString());
+                DriverLayer.Control.Ins.SendWriteCommand(curtain, d);
             };
 
             btnCurtainStop.MouseDownEventHandler = (sender, e) =>
@@ -100,10 +101,10 @@
                 btnCurtainOpen.IsSelected = true;
                 btnCurtainClose.IsSelected = false;
                 btnCurtainStop.IsSelected = false;
-                curtain.trait_on_off.value = "stop";
+                curtain.trait_on_off.curValue = "stop";
                 System.Collections.Generic.Dictionary<string, string> d = new System.Collections.Generic.Dictionary<string, string>();
-                d.Add("on_off", curtain.trait_on_off.value.ToString());
-                DriverLayer.Control.ins.SendWriteCommand(curtain, d);
+                d.Add("on_off", curtain.trait_on_off.curValue.ToString());
+                DriverLayer.Control.Ins.SendWriteCommand(curtain, d);
             };
 
             btnCurtainOpen.MouseUpEventHandler = (sender, e) =>
@@ -111,11 +112,11 @@
                 btnCurtainOpen.IsSelected = true;
                 btnCurtainClose.IsSelected = false;
                 btnCurtainStop.IsSelected = false;
-                curtain.trait_on_off.value = "on";
+                curtain.trait_on_off.curValue = "on";
                 curtain.percent = 100;
                 System.Collections.Generic.Dictionary<string, string> d = new System.Collections.Generic.Dictionary<string, string>();
-                d.Add("on_off", curtain.trait_on_off.value.ToString());
-                DriverLayer.Control.ins.SendWriteCommand(curtain, d);
+                d.Add("on_off", curtain.trait_on_off.curValue.ToString());
+                DriverLayer.Control.Ins.SendWriteCommand(curtain, d);
             };
 
             btnMinusSignIcon.MouseUpEventHandler = (sender, e) =>
@@ -124,7 +125,7 @@
                 controlBar.Progress = curtain.percent;
                 System.Collections.Generic.Dictionary<string, string> d = new System.Collections.Generic.Dictionary<string, string>();
                 d.Add("percent", curtain.percent.ToString());
-                DriverLayer.Control.ins.SendWriteCommand(curtain, d);
+                DriverLayer.Control.Ins.SendWriteCommand(curtain, d);
             };
 
             btnPlusSgnIcon.MouseUpEventHandler = (sender, e) =>
@@ -133,7 +134,7 @@
                 controlBar.Progress = curtain.percent;
                 System.Collections.Generic.Dictionary<string, string> d = new System.Collections.Generic.Dictionary<string, string>();
                 d.Add("percent", curtain.percent.ToString());
-                DriverLayer.Control.ins.SendWriteCommand(curtain, d);
+                DriverLayer.Control.Ins.SendWriteCommand(curtain, d);
             };
 
             //curtainSeekBar.OnProgressChangedEvent = (sender, e) =>
@@ -161,7 +162,7 @@
                     curtain.refreshTime = DateTime.Now;
                     System.Collections.Generic.Dictionary<string, string> d = new System.Collections.Generic.Dictionary<string, string>();
                     d.Add("percent", curtain.percent.ToString());
-                    DriverLayer.Control.ins.SendWriteCommand(curtain, d);
+                    DriverLayer.Control.Ins.SendWriteCommand(curtain, d);
                 })
                 { IsBackground = true }.Start();
             };
@@ -192,7 +193,7 @@
                     curtain.refreshTime = DateTime.Now;
                     System.Collections.Generic.Dictionary<string, string> d = new System.Collections.Generic.Dictionary<string, string>();
                     d.Add("percent", curtain.percent.ToString());
-                    DriverLayer.Control.ins.SendWriteCommand(curtain, d);
+                    DriverLayer.Control.Ins.SendWriteCommand(curtain, d);
                 })
                 { IsBackground = true }.Start();
             };
diff --git a/HDL_ON/UI/UI2/FuntionControlView/Curtain/RollingShutterPageBLL.cs b/HDL_ON/UI/UI2/FuntionControlView/Curtain/RollingShutterPageBLL.cs
index 9da9e35..aa710ba 100644
--- a/HDL_ON/UI/UI2/FuntionControlView/Curtain/RollingShutterPageBLL.cs
+++ b/HDL_ON/UI/UI2/FuntionControlView/Curtain/RollingShutterPageBLL.cs
@@ -20,19 +20,19 @@
                     return;
                 if (uCurtain.functionType == bodyView.curtain.functionType && uCurtain.sid == bodyView.curtain.sid)
                 {
-                    if (uCurtain.trait_on_off.value.ToString() == "stop")
+                    if (uCurtain.trait_on_off.curValue.ToString() == "stop")
                     {
                         bodyView.btnCurtainOpen.IsSelected = true;
                         bodyView.btnCurtainClose.IsSelected = false;
                         bodyView.btnCurtainStop.IsSelected = false;
                     }
-                    else if (uCurtain.trait_on_off.value.ToString() == "on")
+                    else if (uCurtain.trait_on_off.curValue.ToString() == "on")
                     {
                         bodyView.btnCurtainOpen.IsSelected = true;
                         bodyView.btnCurtainClose.IsSelected = false;
                         bodyView.btnCurtainStop.IsSelected = false;
                     }
-                    else if (uCurtain.trait_on_off.value.ToString() == "off")
+                    else if (uCurtain.trait_on_off.curValue.ToString() == "off")
                     {
                         bodyView.btnCurtainOpen.IsSelected = false;
                         bodyView.btnCurtainClose.IsSelected = true;
@@ -59,6 +59,7 @@
             {
                 btnFunctionName.Text = btnFunctionName_Out.Text = curtain.name;
                 btnFromFloor_Out.Text = btnFromFoorAndRoom.Text = curtain.GetRoomListName();
+                curtain.SaveFunctionData();
             };
         }
         /// <summary>
@@ -83,12 +84,12 @@
                 btnCurtainClose.IsSelected = true;
                 btnCurtainStop.IsSelected = false;
                 btnCurtainOpen.IsSelected = false;
-                curtain.trait_on_off.value = "off";
+                curtain.trait_on_off.curValue = "off";
                 curtain.percent = 0;
                 //Control.Send(CommandType_A.write, curtain);
                 System.Collections.Generic.Dictionary<string, string> d = new System.Collections.Generic.Dictionary<string, string>();
-                d.Add("on_off", curtain.trait_on_off.value.ToString());
-                Control.ins.SendWriteCommand(curtain, d);
+                d.Add("on_off", curtain.trait_on_off.curValue.ToString());
+                Control.Ins.SendWriteCommand(curtain, d);
             };
 
             btnCurtainStop.MouseDownEventHandler = (sender, e) =>
@@ -102,11 +103,11 @@
                 btnCurtainOpen.IsSelected = true;
                 btnCurtainClose.IsSelected = false;
                 btnCurtainStop.IsSelected = false;
-                curtain.trait_on_off.value = "stop";
+                curtain.trait_on_off.curValue = "stop";
                 //Control.Send(CommandType_A.write, curtain);
                 System.Collections.Generic.Dictionary<string, string> d = new System.Collections.Generic.Dictionary<string, string>();
-                d.Add("on_off", curtain.trait_on_off.value.ToString());
-                Control.ins.SendWriteCommand(curtain, d);
+                d.Add("on_off", curtain.trait_on_off.curValue.ToString());
+                Control.Ins.SendWriteCommand(curtain, d);
             };
 
             btnCurtainOpen.MouseUpEventHandler = (sender, e) =>
@@ -114,12 +115,12 @@
                 btnCurtainOpen.IsSelected = true;
                 btnCurtainClose.IsSelected = false;
                 btnCurtainStop.IsSelected = false;
-                curtain.trait_on_off.value = "on";
+                curtain.trait_on_off.curValue = "on";
                 curtain.percent = 100;
                 //Control.Send(CommandType_A.write, curtain);
                 System.Collections.Generic.Dictionary<string, string> d = new System.Collections.Generic.Dictionary<string, string>();
-                d.Add("on_off", curtain.trait_on_off.value.ToString());
-                Control.ins.SendWriteCommand(curtain, d);
+                d.Add("on_off", curtain.trait_on_off.curValue.ToString());
+                Control.Ins.SendWriteCommand(curtain, d);
             };
 
 
@@ -128,7 +129,7 @@
                 curtain.percent--;
                 System.Collections.Generic.Dictionary<string, string> d = new System.Collections.Generic.Dictionary<string, string>();
                 d.Add("percent", curtain.percent.ToString());
-                Control.ins.SendWriteCommand(curtain, d);
+                Control.Ins.SendWriteCommand(curtain, d);
             };
 
             btnPlusSgnIcon.MouseUpEventHandler = (sender, e) =>
@@ -136,7 +137,7 @@
                 curtain.percent++;
                 System.Collections.Generic.Dictionary<string, string> d = new System.Collections.Generic.Dictionary<string, string>();
                 d.Add("percent", curtain.percent.ToString());
-                Control.ins.SendWriteCommand(curtain, d);
+                Control.Ins.SendWriteCommand(curtain, d);
             };
             curtainSeekBar.OnStartTrackingTouchEvent = (sender, e) =>
             {
@@ -150,7 +151,7 @@
                     curtain.percent = e;
                     System.Collections.Generic.Dictionary<string, string> d = new System.Collections.Generic.Dictionary<string, string>();
                     d.Add("percent", curtain.percent.ToString());
-                    Control.ins.SendWriteCommand(curtain, d);
+                    Control.Ins.SendWriteCommand(curtain, d);
                     curtain.refreshTime = DateTime.Now;
                 })
                 { IsBackground = true }.Start();
@@ -168,7 +169,7 @@
                     curtain.percent = e;
                     System.Collections.Generic.Dictionary<string, string> d = new System.Collections.Generic.Dictionary<string, string>();
                     d.Add("percent", curtain.percent.ToString());
-                    Control.ins.SendWriteCommand(curtain, d);
+                    Control.Ins.SendWriteCommand(curtain, d);
                     curtain.refreshTime = DateTime.Now;
                 })
                 { IsBackground = true }.Start();
diff --git a/HDL_ON/UI/UI2/FuntionControlView/Electrical/FanPage.cs b/HDL_ON/UI/UI2/FuntionControlView/Electrical/FanPage.cs
index a7c1c3c..8b0e962 100644
--- a/HDL_ON/UI/UI2/FuntionControlView/Electrical/FanPage.cs
+++ b/HDL_ON/UI/UI2/FuntionControlView/Electrical/FanPage.cs
@@ -109,7 +109,7 @@
                 Y = Application.GetRealHeight(100),
                 Width = Application.GetRealWidth(198),
                 Height = Application.GetRealWidth(198),
-                IsSelected = fan.trait_on_off.value.ToString() == "on",
+                IsSelected = fan.trait_on_off.curValue.ToString() == "on",
                 SelectedImagePath = "FunctionIcon/Electrical/FanIconBg.png",
                 UnSelectedImagePath = "FunctionIcon/Electrical/FanIconBgGray.png",
             };
@@ -161,7 +161,7 @@
                 Height = Application.GetMinRealAverage(40),
                 UnSelectedImagePath = "Public/PowerClose.png",
                 SelectedImagePath = "Public/PowerOpen.png",
-                IsSelected = fan.trait_on_off.value.ToString() == "on"
+                IsSelected = fan.trait_on_off.curValue.ToString() == "on"
             };
             controlView.AddChidren(btnSwitch);
 
diff --git a/HDL_ON/UI/UI2/FuntionControlView/Electrical/FanPageBLL.cs b/HDL_ON/UI/UI2/FuntionControlView/Electrical/FanPageBLL.cs
index 83e3bad..1d96749 100644
--- a/HDL_ON/UI/UI2/FuntionControlView/Electrical/FanPageBLL.cs
+++ b/HDL_ON/UI/UI2/FuntionControlView/Electrical/FanPageBLL.cs
@@ -18,8 +18,8 @@
                 {
                     if (bodyView == null)
                         return;
-                    bodyView.btnSwitch.IsSelected = bodyView.btnSwitchIcon.IsSelected = uFan.trait_on_off.value.ToString() == "on";
-                    bodyView.barGradualChange.ProgressBarColor = uFan.trait_on_off.value.ToString() == "on" ? CSS.CSS_Color.MainColor : CSS.CSS_Color.PromptingColor2;
+                    bodyView.btnSwitch.IsSelected = bodyView.btnSwitchIcon.IsSelected = uFan.trait_on_off.curValue.ToString() == "on";
+                    bodyView.barGradualChange.ProgressBarColor = uFan.trait_on_off.curValue.ToString() == "on" ? CSS.CSS_Color.MainColor : CSS.CSS_Color.PromptingColor2;
                     bodyView.barGradualChange.Progress = uFan.openLevel;
                 }
                 catch (Exception ex)
@@ -40,6 +40,7 @@
             actionRefresh = () => {
                 btnFunctionName.Text = btnFunctionName_Out.Text = fan.name;
                 btnFromFloor_Out.Text = btnFromFoorAndRoom.Text = fan.GetRoomListName();
+                fan.SaveFunctionData();
             };
         }
 
@@ -65,11 +66,11 @@
 
                 new System.Threading.Thread(() =>
                 {
-                    fan.trait_on_off.value = btnSwitch.IsSelected ? "on" : "off";
+                    fan.trait_on_off.curValue = btnSwitch.IsSelected ? "on" : "off";
                     //Control.Send(CommandType_A.write, this.fan);
                     System.Collections.Generic.Dictionary<string, string> d = new System.Collections.Generic.Dictionary<string, string>();
-                    d.Add("on_off", fan.trait_on_off.value.ToString());
-                    Control.ins.SendWriteCommand(fan, d);
+                    d.Add("on_off", fan.trait_on_off.curValue.ToString());
+                    Control.Ins.SendWriteCommand(fan, d);
                 })
                 { IsBackground = true }.Start();
             };
@@ -79,11 +80,11 @@
 
                 new System.Threading.Thread(() =>
                 {
-                    fan.trait_on_off.value = btnSwitch.IsSelected ? "on" : "off";
+                    fan.trait_on_off.curValue = btnSwitch.IsSelected ? "on" : "off";
                     //Control.Send(CommandType_A.write, this.fan);
                     System.Collections.Generic.Dictionary<string, string> d = new System.Collections.Generic.Dictionary<string, string>();
-                    d.Add("on_off", fan.trait_on_off.value.ToString());
-                    Control.ins.SendWriteCommand(fan, d);
+                    d.Add("on_off", fan.trait_on_off.curValue.ToString());
+                    Control.Ins.SendWriteCommand(fan, d);
                 })
                 { IsBackground = true }.Start();
             };
@@ -92,11 +93,11 @@
                 fan.openLevel = e;
                 new System.Threading.Thread(() =>
                 {
-                    fan.trait_on_off.value = btnSwitch.IsSelected ? "on" : "off";
+                    fan.trait_on_off.curValue = btnSwitch.IsSelected ? "on" : "off";
                     //Control.Send(CommandType_A.write, this.fan);
                     System.Collections.Generic.Dictionary<string, string> d = new System.Collections.Generic.Dictionary<string, string>();
-                    d.Add("on_off", fan.trait_on_off.value.ToString());
-                    Control.ins.SendWriteCommand(fan, d);
+                    d.Add("on_off", fan.trait_on_off.curValue.ToString());
+                    Control.Ins.SendWriteCommand(fan, d);
                 })
                 { IsBackground = true }.Start();
             };
diff --git a/HDL_ON/UI/UI2/FuntionControlView/Electrical/SocketPage.cs b/HDL_ON/UI/UI2/FuntionControlView/Electrical/SocketPage.cs
index 6d1c89e..17e0f82 100644
--- a/HDL_ON/UI/UI2/FuntionControlView/Electrical/SocketPage.cs
+++ b/HDL_ON/UI/UI2/FuntionControlView/Electrical/SocketPage.cs
@@ -108,7 +108,7 @@
                 Y = Application.GetRealHeight(100),
                 Width = Application.GetRealWidth(198),
                 Height = Application.GetRealWidth(198),
-                IsSelected = socketFunction.trait_on_off.value.ToString() == "on",
+                IsSelected = socketFunction.trait_on_off.curValue.ToString() == "on",
                 UnSelectedImagePath = "FunctionIcon/Socket/SocketIconBg.png",
                 SelectedImagePath = "FunctionIcon/Socket/SocketIconOnBg.png",  
             };
@@ -122,7 +122,7 @@
                 Height = Application.GetMinRealAverage(40),
                 UnSelectedImagePath = "Public/PowerClose.png",
                 SelectedImagePath = "Public/PowerOpen.png",
-                IsSelected = socketFunction.trait_on_off.value.ToString() == "on"
+                IsSelected = socketFunction.trait_on_off.curValue.ToString() == "on"
             };
             controlView.AddChidren(btnSwitch);
 
diff --git a/HDL_ON/UI/UI2/FuntionControlView/Electrical/SocketPageBLL.cs b/HDL_ON/UI/UI2/FuntionControlView/Electrical/SocketPageBLL.cs
index cb3380d..2684f88 100644
--- a/HDL_ON/UI/UI2/FuntionControlView/Electrical/SocketPageBLL.cs
+++ b/HDL_ON/UI/UI2/FuntionControlView/Electrical/SocketPageBLL.cs
@@ -18,7 +18,7 @@
                 {
                     if (bodyView == null)
                         return;
-                    bodyView.btnSwitch.IsSelected = bodyView.btnSwitchIcon.IsSelected = uFan.trait_on_off.value.ToString() == "on";
+                    bodyView.btnSwitch.IsSelected = bodyView.btnSwitchIcon.IsSelected = uFan.trait_on_off.curValue.ToString() == "on";
                 }
                 catch (Exception ex)
                 {
@@ -38,6 +38,7 @@
             actionRefresh = () => {
                 btnFunctionName.Text = btnFunctionName_Out.Text = socketFunction.name;
                 btnFromFloor_Out.Text = btnFromFoorAndRoom.Text = socketFunction.GetRoomListName();
+                socketFunction.SaveFunctionData();
             };
         }
 
@@ -63,11 +64,11 @@
 
                 new System.Threading.Thread(() =>
                 {
-                    socketFunction.trait_on_off.value = btnSwitch.IsSelected ? "on" : "off";
+                    socketFunction.trait_on_off.curValue = btnSwitch.IsSelected ? "on" : "off";
                     //Control.Send(CommandType_A.write, this.socketFunction);
                     System.Collections.Generic.Dictionary<string, string> d = new System.Collections.Generic.Dictionary<string, string>();
-                    d.Add("on_off", socketFunction.trait_on_off.value.ToString());
-                    Control.ins.SendWriteCommand(socketFunction, d);
+                    d.Add("on_off", socketFunction.trait_on_off.curValue.ToString());
+                    Control.Ins.SendWriteCommand(socketFunction, d);
                 })
                 { IsBackground = true }.Start();
             };
@@ -77,11 +78,11 @@
 
                 new System.Threading.Thread(() =>
                 {
-                    socketFunction.trait_on_off.value = btnSwitch.IsSelected ? "on" : "off";
+                    socketFunction.trait_on_off.curValue = btnSwitch.IsSelected ? "on" : "off";
                     //Control.Send(CommandType_A.write, this.socketFunction);
                     System.Collections.Generic.Dictionary<string, string> d = new System.Collections.Generic.Dictionary<string, string>();
-                    d.Add("on_off", socketFunction.trait_on_off.value.ToString());
-                    Control.ins.SendWriteCommand(socketFunction, d);
+                    d.Add("on_off", socketFunction.trait_on_off.curValue.ToString());
+                    Control.Ins.SendWriteCommand(socketFunction, d);
                 })
                 { IsBackground = true }.Start();
             };
diff --git a/HDL_ON/UI/UI2/FuntionControlView/Electrical/TVPageBLL.cs b/HDL_ON/UI/UI2/FuntionControlView/Electrical/TVPageBLL.cs
index 0330efe..b136d76 100644
--- a/HDL_ON/UI/UI2/FuntionControlView/Electrical/TVPageBLL.cs
+++ b/HDL_ON/UI/UI2/FuntionControlView/Electrical/TVPageBLL.cs
@@ -18,6 +18,7 @@
             actionRefresh = () => {
                 btnFunctionName.Text = btnFunctionName_Out.Text = tv.name;
                 btnFromFloor_Out.Text = btnFromFoorAndRoom.Text = tv.GetRoomListName();
+                tv.SaveFunctionData();
             };
         }
 
diff --git a/HDL_ON/UI/UI2/FuntionControlView/EnvironmentalScience/EnvironmentalSciencePage.cs b/HDL_ON/UI/UI2/FuntionControlView/EnvironmentalScience/EnvironmentalSciencePage.cs
index 069664f..3e4a4cd 100644
--- a/HDL_ON/UI/UI2/FuntionControlView/EnvironmentalScience/EnvironmentalSciencePage.cs
+++ b/HDL_ON/UI/UI2/FuntionControlView/EnvironmentalScience/EnvironmentalSciencePage.cs
@@ -470,7 +470,7 @@
                 };
                 sensorView.AddChidren(btnLevel);
 
-                Control.ins.SendReadCommand(sensor);
+                Control.Ins.SendReadCommand(sensor);
             }
         }
 
diff --git a/HDL_ON/UI/UI2/FuntionControlView/EnvironmentalScience/EnvironmentalSensorPage.cs b/HDL_ON/UI/UI2/FuntionControlView/EnvironmentalScience/EnvironmentalSensorPage.cs
index baeab02..0cf683f 100644
--- a/HDL_ON/UI/UI2/FuntionControlView/EnvironmentalScience/EnvironmentalSensorPage.cs
+++ b/HDL_ON/UI/UI2/FuntionControlView/EnvironmentalScience/EnvironmentalSensorPage.cs
@@ -3,6 +3,7 @@
 using HDL_ON.Entity;
 using HDL_ON.UI.CSS;
 using System.Collections.Generic;
+using HDL_ON.DAL.Server;
 
 namespace HDL_ON.UI
 {
@@ -903,13 +904,13 @@
                             i++;
                             continue;
                         }
-                        var revertObj = new DAL.Server.HttpServerRequest().GetSensorHistory(sr.bus_Data.SubnetID, sr.bus_Data.DeviceID,
+                        var revertObj = new HttpServerRequest().GetSensorHistory(sr.bus_Data.SubnetID, sr.bus_Data.DeviceID,
                                5, (int)(sr.functionType) % 256, (int)curQueryType, sr.bus_Data.LoopID, curMonth,
                                DB_ResidenceData.residenceData.residenceGatewayMAC);
 
                         if (revertObj != null)
                         {
-                            if (revertObj.StateCode == "SUCCESS")
+                            if (revertObj.StateCode == StateCode.SUCCESS)
                             {
                                 var revertData = Newtonsoft.Json.JsonConvert.DeserializeObject<List<SensorPushHistoryRes>>(revertObj.ResponseData.ToString());
 
diff --git a/HDL_ON/UI/UI2/FuntionControlView/FoolHeating/FloorHeatingPage.cs b/HDL_ON/UI/UI2/FuntionControlView/FoolHeating/FloorHeatingPage.cs
index 1cd7386..f83415c 100644
--- a/HDL_ON/UI/UI2/FuntionControlView/FoolHeating/FloorHeatingPage.cs
+++ b/HDL_ON/UI/UI2/FuntionControlView/FoolHeating/FloorHeatingPage.cs
@@ -136,14 +136,14 @@
             {
                 Gravity = Gravity.CenterHorizontal,
                 OpenAngle = 160,
-                ThumbImagePath = fh.trait_on_off.value.ToString() == "on" ? "FunctionIcon/AC/DiyThumbIconOn.png" : "FunctionIcon/AC/DiyThumbIcon.png",
+                ThumbImagePath = fh.trait_on_off.curValue.ToString() == "on" ? "FunctionIcon/AC/DiyThumbIconOn.png" : "FunctionIcon/AC/DiyThumbIcon.png",
                 ThumbImageHeight = Application.GetRealWidth(50),
-                ProgressBarColor = fh.trait_on_off.value.ToString() == "on" ? CSS_Color.MainColor : CSS_Color.PromptingColor2, // 0xFFFC9C04 : CSS_Color.PromptingColor2,
+                ProgressBarColor = fh.trait_on_off.curValue.ToString() == "on" ? CSS_Color.MainColor : CSS_Color.PromptingColor2, // 0xFFFC9C04 : CSS_Color.PromptingColor2,
                 MinValue = 5,
                 MaxValue = 35,
-                IsClickable = fh.trait_on_off.value.ToString() == "on",
+                IsClickable = fh.trait_on_off.curValue.ToString() == "on",
                 ArcColor = CSS_Color.BackgroundColor,
-                Progress = Convert.ToInt32(fh.trait_temp.value),
+                Progress = Convert.ToInt32(fh.trait_temp.curValue),
 #if __IOS__
                 Y = Application.GetRealHeight(120+25),
                 Width = Application.GetRealWidth(260-40),
@@ -168,7 +168,7 @@
                 TextColor = CSS_Color.FirstLevelTitleColor,
                 TextSize = 56,
                 IsBold = true,
-                Text = fh.trait_temp.value.ToString(),
+                Text = fh.trait_temp.curValue.ToString(),
                 TextAlignment = TextAlignment.Center,
             };
             controlView.AddChidren(btnTemp);
@@ -237,7 +237,7 @@
                 Height = Application.GetRealWidth(40),
                 UnSelectedImagePath = "Public/PowerClose.png",
                 SelectedImagePath = "Public/PowerOpen.png",
-                IsSelected = fh.trait_on_off.value.ToString() == "on"
+                IsSelected = fh.trait_on_off.curValue.ToString() == "on"
             };
             controlView.AddChidren(btnSwitch);
 
@@ -294,28 +294,28 @@
             };
             modeChangeView.AddChidren(btnLine);
 
-            foreach (var m in fh.trait_mode.value_key)
+            foreach (var m in fh.trait_mode.value)
             {
                 Button btnModeIcon = new Button()
                 {
                     X = btnTitle.X,
-                    Y = Application.GetRealHeight(44 * (fh.trait_mode.value_key.IndexOf(m) + 1) + 10 + 8),
+                    Y = Application.GetRealHeight(44 * (fh.trait_mode.value.IndexOf(m) + 1) + 10 + 8),
                     Width = Application.GetRealWidth(24),
                     Height = Application.GetRealWidth(24),
-                    IsSelected = fh.trait_mode.value.ToString() == m,
+                    IsSelected = fh.trait_mode.curValue.ToString() == m,
                 };
                 modeChangeView.AddChidren(btnModeIcon);
 
                 Button btnModeText = new Button()
                 {
                     X = Application.GetRealWidth(12) + btnModeIcon.Right,
-                    Y = Application.GetRealHeight(44 * (fh.trait_mode.value_key.IndexOf(m) + 1) + 8),
+                    Y = Application.GetRealHeight(44 * (fh.trait_mode.value.IndexOf(m) + 1) + 8),
                     Height = Application.GetRealHeight(44),
                     Width = Application.GetRealWidth(70),
                     TextAlignment = TextAlignment.CenterLeft,
                     TextColor = CSS_Color.FirstLevelTitleColor,
                     SelectedTextColor = CSS_Color.MainColor,
-                    IsSelected = fh.trait_mode.value.ToString() == m,
+                    IsSelected = fh.trait_mode.curValue.ToString() == m,
                 };
                 modeChangeView.AddChidren(btnModeText);
 
@@ -348,7 +348,7 @@
                         break;
                 }
 
-                if (fh.trait_mode.value_key.IndexOf(m) < fh.trait_mode.value_key.Count - 1)
+                if (fh.trait_mode.value.IndexOf(m) < fh.trait_mode.value.Count - 1)
                 {
                     modeChangeView.AddChidren(new Button()
                     {
diff --git a/HDL_ON/UI/UI2/FuntionControlView/FoolHeating/FloorHeatingPageBLL.cs b/HDL_ON/UI/UI2/FuntionControlView/FoolHeating/FloorHeatingPageBLL.cs
index 33aae0b..6dcf3f6 100644
--- a/HDL_ON/UI/UI2/FuntionControlView/FoolHeating/FloorHeatingPageBLL.cs
+++ b/HDL_ON/UI/UI2/FuntionControlView/FoolHeating/FloorHeatingPageBLL.cs
@@ -19,15 +19,15 @@
                     {
                         return;
                     }
-                    bodyView.arcBar.ProgressBarColor = uFh.trait_on_off.value.ToString() == "on" ? CSS_Color.MainColor : CSS_Color.PromptingColor2;
-                    bodyView.arcBar.ThumbImagePath = uFh.trait_on_off.value.ToString() == "on" ? "FunctionIcon/AC/DiyThumbIconOn.png" : "FunctionIcon/AC/DiyThumbIcon.png";
-                    bodyView.btnTemp.Text = uFh.trait_temp.value.ToString();
+                    bodyView.arcBar.ProgressBarColor = uFh.trait_on_off.curValue.ToString() == "on" ? CSS_Color.MainColor : CSS_Color.PromptingColor2;
+                    bodyView.arcBar.ThumbImagePath = uFh.trait_on_off.curValue.ToString() == "on" ? "FunctionIcon/AC/DiyThumbIconOn.png" : "FunctionIcon/AC/DiyThumbIcon.png";
+                    bodyView.btnTemp.Text = uFh.trait_temp.curValue.ToString();
                     bodyView.btnIndoorTemp.Text = Language.StringByID(StringId.IndoorTemp) + uFh.indoorTemp + "掳C";
                     bodyView.btnMode.UnSelectedImagePath = uFh.curModeImage;
-                    bodyView.btnSwitch.IsSelected = uFh.trait_on_off.value.ToString() == "on";
+                    bodyView.btnSwitch.IsSelected = uFh.trait_on_off.curValue.ToString() == "on";
                     if (uFh.refreshTime.AddMilliseconds(1000) < DateTime.Now)
                     {
-                        bodyView.arcBar.Progress =  Convert.ToInt32(uFh.trait_temp.value);
+                        bodyView.arcBar.Progress =  Convert.ToInt32(uFh.trait_temp.curValue);
                     }
                 });
             }
@@ -47,6 +47,7 @@
             {
                 btnFunctionName.Text = btnFunctionName_Out.Text = fh.name;
                 btnFromFloor_Out.Text = btnFromFoorAndRoom.Text = fh.GetRoomListName();
+                fh.SaveFunctionData();
             };
         }
 
@@ -69,22 +70,22 @@
         {
             btnMinus.MouseUpEventHandler = (sender, e) =>
             {
-                var temp = Convert.ToInt32(fh.trait_temp.value);
+                var temp = Convert.ToInt32(fh.trait_temp.curValue);
                 if (temp < Convert.ToInt32(fh.trait_temp.min))
                 {
                     return;
                 }
                 temp--;
                 arcBar.Progress = temp;
-                fh.trait_temp.value = temp;
+                fh.trait_temp.curValue = temp;
                 btnTemp.Text = temp.ToString();
                 System.Collections.Generic.Dictionary<string, string> d = new System.Collections.Generic.Dictionary<string, string>();
                 d.Add("temp", temp.ToString());
-                Control.ins.SendWriteCommand(fh, d);
+                Control.Ins.SendWriteCommand(fh, d);
             };
             btnPlus.MouseUpEventHandler = (sender, e) =>
             {
-                var temp = Convert.ToInt32(fh.trait_temp.value);
+                var temp = Convert.ToInt32(fh.trait_temp.curValue);
                 if (temp > Convert.ToInt32(fh.trait_temp.max))
                 {
                     return;
@@ -92,25 +93,25 @@
                 temp++;
                 arcBar.Progress = temp;
                 btnTemp.Text = temp.ToString();
-                fh.trait_temp.value = temp;
+                fh.trait_temp.curValue = temp;
                 //Control.Send(CommandType_A.write, fh);
                 System.Collections.Generic.Dictionary<string, string> d = new System.Collections.Generic.Dictionary<string, string>();
                 d.Add("temp", temp.ToString());
-                Control.ins.SendWriteCommand(fh, d);
+                Control.Ins.SendWriteCommand(fh, d);
             };
             arcBar.OnStopTrackingTouchEvent = (sender, e) =>
             {
-                fh.trait_temp.value = arcBar.Progress;
-                btnTemp.Text = fh.trait_temp.value.ToString();
+                fh.trait_temp.curValue = arcBar.Progress;
+                btnTemp.Text = fh.trait_temp.curValue.ToString();
                 //Control.Send(CommandType_A.write, fh);
                 System.Collections.Generic.Dictionary<string, string> d = new System.Collections.Generic.Dictionary<string, string>();
-                d.Add("temp", fh.trait_temp.value.ToString());
-                Control.ins.SendWriteCommand(fh, d);
+                d.Add("temp", fh.trait_temp.curValue.ToString());
+                Control.Ins.SendWriteCommand(fh, d);
             };
             arcBar.OnProgressChangedEvent = (sender, e) =>
             {
-                fh.trait_temp.value = e;
-                btnTemp.Text = fh.trait_temp.value.ToString();
+                fh.trait_temp.curValue = e;
+                btnTemp.Text = fh.trait_temp.curValue.ToString();
             };
         }
         /// <summary>
@@ -126,11 +127,11 @@
             btnSwitch.MouseUpEventHandler = (sender, e) =>
             {
                 btnSwitch.IsSelected = !btnSwitch.IsSelected;
-                fh.trait_on_off.value = btnSwitch.IsSelected ? "on" : "off";
+                fh.trait_on_off.curValue = btnSwitch.IsSelected ? "on" : "off";
                 //Control.Send(CommandType_A.write, fh);
                 System.Collections.Generic.Dictionary<string, string> d = new System.Collections.Generic.Dictionary<string, string>();
-                d.Add("on_off", fh.trait_on_off.value.ToString());
-                Control.ins.SendWriteCommand(fh, d);
+                d.Add("on_off", fh.trait_on_off.curValue.ToString());
+                Control.Ins.SendWriteCommand(fh, d);
             };
         }
 
@@ -147,13 +148,13 @@
             EventHandler<MouseEventArgs> eventHandler1 = (sender, e) =>
             {
                 btn1.IsSelected = btn2.IsSelected = true;
-                fh.trait_mode.value = curMode;
+                fh.trait_mode.curValue = curMode;
                 byte pro = 6;
                 fh.modeTemp.TryGetValue(curMode, out pro);
                 arcBar.Progress = pro;
                 System.Collections.Generic.Dictionary<string, string> d = new System.Collections.Generic.Dictionary<string, string>();
                 d.Add("mode", fh.curModeIndex.ToString());
-                Control.ins.SendWriteCommand(fh, d);
+                Control.Ins.SendWriteCommand(fh, d);
                 dialog.Close();
             };
             btn1.MouseUpEventHandler = eventHandler1;
diff --git a/HDL_ON/UI/UI2/FuntionControlView/Light/DimmerPage.cs b/HDL_ON/UI/UI2/FuntionControlView/Light/DimmerPage.cs
index 8777f4f..453d29e 100644
--- a/HDL_ON/UI/UI2/FuntionControlView/Light/DimmerPage.cs
+++ b/HDL_ON/UI/UI2/FuntionControlView/Light/DimmerPage.cs
@@ -143,7 +143,7 @@
                 IsProgressTextShow = false,
             };
             controlView.AddChidren(dimmerBar);
-            if(light.trait_on_off.value.ToString() == "on")
+            if(light.trait_on_off.curValue.ToString() == "on")
             {
                 dimmerBar.SetProgressBarColors(CSS_Color.AuxiliaryColor1, CSS_Color.AuxiliaryColor1);
             }
@@ -234,7 +234,7 @@
                 Height = Application.GetMinRealAverage(40),
                 UnSelectedImagePath = "Public/PowerClose.png",
                 SelectedImagePath = "Public/PowerOpen.png",
-                IsSelected = light.trait_on_off.value.ToString() == "on",
+                IsSelected = light.trait_on_off.curValue.ToString() == "on",
             };
             controlView.AddChidren(btnSwitch);
 
diff --git a/HDL_ON/UI/UI2/FuntionControlView/Light/DimmerPageBLL.cs b/HDL_ON/UI/UI2/FuntionControlView/Light/DimmerPageBLL.cs
index 44b8230..18f6eb6 100644
--- a/HDL_ON/UI/UI2/FuntionControlView/Light/DimmerPageBLL.cs
+++ b/HDL_ON/UI/UI2/FuntionControlView/Light/DimmerPageBLL.cs
@@ -25,7 +25,7 @@
                             bodyView.dimmerBar.Progress = uFunction.brightness;
                         }
 
-                        if (uFunction.trait_on_off.value.ToString() == "on")
+                        if (uFunction.trait_on_off.curValue.ToString() == "on")
                         {
                             bodyView.dimmerBar.SetProgressBarColors(CSS_Color.AuxiliaryColor1, CSS_Color.AuxiliaryColor1);
                         }
@@ -33,7 +33,7 @@
                         {
                             bodyView.dimmerBar.SetProgressBarColors(CSS_Color.DividingLineColor, CSS_Color.DividingLineColor);
                         }
-                        bodyView.btnSwitch.IsSelected = uFunction.trait_on_off.value.ToString() == "on";
+                        bodyView.btnSwitch.IsSelected = uFunction.trait_on_off.curValue.ToString() == "on";
 
                         bodyView.btnBrightnessText.Y = ((100 - uFunction.brightness) * Application.GetRealHeight(288 - 16 - 16) / 100) + Application.GetRealWidth(40);
                         bodyView.btnBrightnessText.Text = uFunction.brightness + "%";
@@ -56,6 +56,7 @@
             actionRefresh = () => {
                 btnFunctionName.Text = btnFunctionName_Out.Text = light.name;
                 btnFromFloor_Out.Text = btnFromFoorAndRoom.Text = light.GetRoomListName();
+                light.SaveFunctionData();
             };
         }
         /// <summary>
@@ -95,7 +96,7 @@
                 //Control.Send(CommandType_A.write, light);
                 System.Collections.Generic.Dictionary<string, string> d = new System.Collections.Generic.Dictionary<string, string>();
                 d.Add("brightness", light.brightness.ToString());
-                Control.ins.SendWriteCommand(light, d);
+                Control.Ins.SendWriteCommand(light, d);
                 light.fadeTime = barFadeTime.Progress;
             };
             dimmerBar.OnProgressChangedEvent = (sender, e) => {
@@ -106,14 +107,14 @@
                 }   
                 btnSwitch.IsSelected = e > 0 ? true : false;
                 light.brightness = e;
-                light.trait_on_off.value = e > 0 ? "on" : "off";
+                light.trait_on_off.curValue = e > 0 ? "on" : "off";
 
                 if (e == 0 || e == 100)
                 {
                     //Control.Send(CommandType_A.write, this.light);
                     System.Collections.Generic.Dictionary<string, string> d = new System.Collections.Generic.Dictionary<string, string>();
                     d.Add("brightness", light.brightness.ToString());
-                    Control.ins.SendWriteCommand(light, d);
+                    Control.Ins.SendWriteCommand(light, d);
                 }
                 else
                 {
@@ -124,7 +125,7 @@
                         {
                             System.Collections.Generic.Dictionary<string, string> d = new System.Collections.Generic.Dictionary<string, string>();
                             d.Add("brightness", light.brightness.ToString());
-                            Control.ins.SendWriteCommand(light, d);
+                            Control.Ins.SendWriteCommand(light, d);
                         })
                         { IsBackground = true }.Start();
                     }
@@ -154,10 +155,10 @@
                 }
                 new System.Threading.Thread(() =>
                 {
-                    light.trait_on_off.value = btnSwitch.IsSelected ? "on" : "off";
+                    light.trait_on_off.curValue = btnSwitch.IsSelected ? "on" : "off";
                     System.Collections.Generic.Dictionary<string, string> d = new System.Collections.Generic.Dictionary<string, string>();
-                    d.Add("on_off", light.trait_on_off.value.ToString());
-                    Control.ins.SendWriteCommand(light, d);
+                    d.Add("on_off", light.trait_on_off.curValue.ToString());
+                    Control.Ins.SendWriteCommand(light, d);
                 })
                 { IsBackground = true }.Start();
             };
diff --git a/HDL_ON/UI/UI2/FuntionControlView/Light/RGBPage.cs b/HDL_ON/UI/UI2/FuntionControlView/Light/RGBPage.cs
index 01adff3..943346f 100644
--- a/HDL_ON/UI/UI2/FuntionControlView/Light/RGBPage.cs
+++ b/HDL_ON/UI/UI2/FuntionControlView/Light/RGBPage.cs
@@ -192,7 +192,7 @@
                 ThumbImageHeight = Application.GetRealHeight(54),
                 ProgressTextColor = CSS_Color.FirstLevelTitleColor,
                 ProgressTextSize = CSS_FontSize.PromptFontSize_FirstLevel,
-                ProgressBarColor = light.trait_on_off.value.ToString() == "on" ? CSS_Color.AuxiliaryColor1 : CSS_Color.DividingLineColor,
+                ProgressBarColor = light.trait_on_off.curValue.ToString() == "on" ? CSS_Color.AuxiliaryColor1 : CSS_Color.DividingLineColor,
                 MaxValue = 100,
                 Progress = light.brightness,
                 SeekBarPadding = Application.GetRealWidth(20),
@@ -293,7 +293,7 @@
                 Height = Application.GetMinRealAverage(40),
                 UnSelectedImagePath = "Public/PowerClose.png",
                 SelectedImagePath = "Public/PowerOpen.png",
-                IsSelected = light.trait_on_off.value.ToString() == "on"
+                IsSelected = light.trait_on_off.curValue.ToString() == "on"
             };
             controlView.AddChidren(btnSwitch);
 
diff --git a/HDL_ON/UI/UI2/FuntionControlView/Light/RGBPageBLL.cs b/HDL_ON/UI/UI2/FuntionControlView/Light/RGBPageBLL.cs
index 41a0ab6..b6277f1 100644
--- a/HDL_ON/UI/UI2/FuntionControlView/Light/RGBPageBLL.cs
+++ b/HDL_ON/UI/UI2/FuntionControlView/Light/RGBPageBLL.cs
@@ -23,8 +23,8 @@
                         {
                             bodyView.dimmerBar.Progress = uFunction.brightness;
                         }
-                        bodyView.dimmerBar.ProgressBarColor = uFunction.trait_on_off.value.ToString() == "on" ? CSS.CSS_Color.AuxiliaryColor1 : CSS.CSS_Color.PromptingColor2;
-                        bodyView.btnSwitch.IsSelected = uFunction.trait_on_off.value.ToString() == "on";
+                        bodyView.dimmerBar.ProgressBarColor = uFunction.trait_on_off.curValue.ToString() == "on" ? CSS.CSS_Color.AuxiliaryColor1 : CSS.CSS_Color.PromptingColor2;
+                        bodyView.btnSwitch.IsSelected = uFunction.trait_on_off.curValue.ToString() == "on";
                         bodyView.btnCurColor.BackgroundColor = (uint)(0xFF000000 + bodyView.light.redColor * 256 * 256 + bodyView.light.greenColor * 256 + bodyView.light.blueColor);
                     }
                 }
@@ -48,6 +48,7 @@
             actionRefresh = () => {
                 btnFunctionName.Text = btnFunctionName_Out.Text = light.name;
                 btnFromFloor_Out.Text = btnFromFoorAndRoom.Text = light.GetRoomListName();
+                light.SaveFunctionData();
             };
         }
 
@@ -68,7 +69,7 @@
                     //Control.Send(CommandType_A.write, this.light);
                     System.Collections.Generic.Dictionary<string, string> d = new System.Collections.Generic.Dictionary<string, string>();
                     d.Add("color", (light.redColor * 256 * 256 + light.greenColor * 256 + light.blueColor).ToString());
-                    Control.ins.SendWriteCommand(light, d);
+                    Control.Ins.SendWriteCommand(light, d);
                 }
             };
             colorPicker.MouseUpEventHandler = (sender, e) =>
@@ -103,7 +104,7 @@
                 light.brightness = dimmerBar.Progress;
                 System.Collections.Generic.Dictionary<string, string> d = new System.Collections.Generic.Dictionary<string, string>();
                 d.Add("brightness", light.brightness.ToString());
-                Control.ins.SendWriteCommand(light, d);
+                Control.Ins.SendWriteCommand(light, d);
                 light.fadeTime = barFadeTime.Progress;
                 //Control.Send(CommandType_A.write, light);
             };
@@ -115,14 +116,14 @@
                 }
                 btnSwitch.IsSelected = e > 0 ? true : false;
                 light.brightness = e;
-                light.trait_on_off.value = e > 0 ? "on" : "off";
+                light.trait_on_off.curValue = e > 0 ? "on" : "off";
 
                 if (e == 0 || e == 100)
                 {
                     //Control.Send(CommandType_A.write, this.light);
                     System.Collections.Generic.Dictionary<string, string> d = new System.Collections.Generic.Dictionary<string, string>();
                     d.Add("brightness", light.brightness.ToString());
-                    Control.ins.SendWriteCommand(light, d);
+                    Control.Ins.SendWriteCommand(light, d);
                 }
                 else
                 {
@@ -134,7 +135,7 @@
                             //Control.Send(CommandType_A.write, light);
                             System.Collections.Generic.Dictionary<string, string> d = new System.Collections.Generic.Dictionary<string, string>();
                             d.Add("brightness", light.brightness.ToString());
-                            Control.ins.SendWriteCommand(light, d);
+                            Control.Ins.SendWriteCommand(light, d);
                         })
                         { IsBackground = true }.Start();
                     }
@@ -168,10 +169,10 @@
                 dimmerBar.ProgressBarColor = btnSwitch.IsSelected ? CSS.CSS_Color.AuxiliaryColor1 : CSS.CSS_Color.PromptingColor2;
                 new System.Threading.Thread(() =>
                 {
-                    light.trait_on_off.value = btnSwitch.IsSelected ? "on" : "off";
+                    light.trait_on_off.curValue = btnSwitch.IsSelected ? "on" : "off";
                     System.Collections.Generic.Dictionary<string, string> d = new System.Collections.Generic.Dictionary<string, string>();
-                    d.Add("on_off", light.trait_on_off.value.ToString());
-                    Control.ins.SendWriteCommand(light, d);
+                    d.Add("on_off", light.trait_on_off.curValue.ToString());
+                    Control.Ins.SendWriteCommand(light, d);
                 })
                 { IsBackground = true }.Start();
             };
@@ -187,7 +188,7 @@
                 btnCurColor.BackgroundColor = 0xFFFFFFFF;
                 System.Collections.Generic.Dictionary<string, string> d = new System.Collections.Generic.Dictionary<string, string>();
                 d.Add("color", "FFFFFF");
-                Control.ins.SendWriteCommand(light, d);
+                Control.Ins.SendWriteCommand(light, d);
             };
         }
 
diff --git a/HDL_ON/UI/UI2/FuntionControlView/Light/RelayPage.cs b/HDL_ON/UI/UI2/FuntionControlView/Light/RelayPage.cs
index 401e002..6fd4bf0 100644
--- a/HDL_ON/UI/UI2/FuntionControlView/Light/RelayPage.cs
+++ b/HDL_ON/UI/UI2/FuntionControlView/Light/RelayPage.cs
@@ -132,7 +132,7 @@
                 Height = Application.GetRealHeight(288),
                 UnSelectedImagePath = "FunctionIcon/Light/RelayBg.png",
                 SelectedImagePath = "FunctionIcon/Light/RelayOnBg.png",
-                IsSelected = light.trait_on_off.value.ToString() == "on"
+                IsSelected = light.trait_on_off.curValue.ToString() == "on"
             };
             controlView.AddChidren(btnSwitchIcon);
 
@@ -144,7 +144,7 @@
                 Height = Application.GetMinRealAverage(40),
                 UnSelectedImagePath = "Public/PowerClose.png",
                 SelectedImagePath = "Public/PowerOpen.png",
-                IsSelected = light.trait_on_off.value.ToString() == "on"
+                IsSelected = light.trait_on_off.curValue.ToString() == "on"
             };
             controlView.AddChidren(btnSwitch);
 
diff --git a/HDL_ON/UI/UI2/FuntionControlView/Light/RelayPageBLL.cs b/HDL_ON/UI/UI2/FuntionControlView/Light/RelayPageBLL.cs
index 52b3872..6e5c460 100644
--- a/HDL_ON/UI/UI2/FuntionControlView/Light/RelayPageBLL.cs
+++ b/HDL_ON/UI/UI2/FuntionControlView/Light/RelayPageBLL.cs
@@ -17,7 +17,7 @@
                 {
                     if (bodyView == null)
                         return;
-                    bodyView.btnSwitch.IsSelected = bodyView.btnSwitchIcon.IsSelected = uLight.trait_on_off.value.ToString() == "on";
+                    bodyView.btnSwitch.IsSelected = bodyView.btnSwitchIcon.IsSelected = uLight.trait_on_off.curValue.ToString() == "on";
                 }
                 catch (Exception ex)
                 {
@@ -37,6 +37,7 @@
             actionRefresh = () => {
                 btnFunctionName.Text = btnFunctionName_Out.Text = light.name;
                 btnFromFloor_Out.Text = btnFromFoorAndRoom.Text = light.GetRoomListName();
+                light.SaveFunctionData();
             };
         }
 
@@ -61,10 +62,10 @@
                 btnSwitch.IsSelected = btnSwitchIcon.IsSelected = !btnSwitchIcon.IsSelected;
                 new System.Threading.Thread(() =>
                 {
-                    light.trait_on_off.value = btnSwitchIcon.IsSelected ? "on" : "off";
+                    light.trait_on_off.curValue = btnSwitchIcon.IsSelected ? "on" : "off";
                     System.Collections.Generic.Dictionary<string, string> d = new System.Collections.Generic.Dictionary<string, string>();
-                    d.Add("on_off", light.trait_on_off.value.ToString());
-                    DriverLayer.Control.ins.SendWriteCommand(light, d);
+                    d.Add("on_off", light.trait_on_off.curValue.ToString());
+                    DriverLayer.Control.Ins.SendWriteCommand(light, d);
                 })
                 { IsBackground = true }.Start();
             };
@@ -73,10 +74,10 @@
                 btnSwitchIcon.IsSelected = btnSwitch.IsSelected = !btnSwitch.IsSelected;
                 new System.Threading.Thread(() =>
                 {
-                    light.trait_on_off.value = btnSwitch.IsSelected ? "on" : "off";
+                    light.trait_on_off.curValue = btnSwitch.IsSelected ? "on" : "off";
                     System.Collections.Generic.Dictionary<string, string> d = new System.Collections.Generic.Dictionary<string, string>();
-                    d.Add("on_off", light.trait_on_off.value.ToString());
-                    DriverLayer.Control.ins.SendWriteCommand(light, d);
+                    d.Add("on_off", light.trait_on_off.curValue.ToString());
+                    DriverLayer.Control.Ins.SendWriteCommand(light, d);
                     //Control.Send(CommandType_A.write, light);
                 })
                 { IsBackground = true }.Start();
diff --git a/HDL_ON/UI/UI2/FuntionControlView/Music/SendMethod.cs b/HDL_ON/UI/UI2/FuntionControlView/Music/SendMethod.cs
index 7bf97dd..dd36144 100644
--- a/HDL_ON/UI/UI2/FuntionControlView/Music/SendMethod.cs
+++ b/HDL_ON/UI/UI2/FuntionControlView/Music/SendMethod.cs
@@ -221,7 +221,7 @@
                 #region 鏇存柊鍏朵粬鐣岄潰闊充箰鐘舵��
                 Application.RunOnMainThread(() =>
                 {
-                    a31MusicModel.trait_on_off.value = a31MusicModel.A31PlayStatus.status == "play" ? "on" : "off";
+                    a31MusicModel.trait_on_off.curValue = a31MusicModel.A31PlayStatus.status == "play" ? "on" : "off";
                     //Console.WriteLine($"music : {a31MusicModel.sid} : {a31MusicModel.on_off}");
                     HomePage.UpdataFunctionStates(a31MusicModel);
                     foreach (var e in A31MusicModel.A31MusicModelList)

--
Gitblit v1.8.0